From 8bf980964ad8a258135f92d9a8b82c58a5cd3ed3 Mon Sep 17 00:00:00 2001 From: Even Solbraa <41290109+EvenSol@users.noreply.github.com> Date: Thu, 15 Aug 2024 08:14:46 +0200 Subject: [PATCH] updated with master (#1080) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: upgrade org.ojalgo:ojalgo from 53.1.0 to 53.1.1 (#837) Snyk has created this PR to upgrade org.ojalgo:ojalgo from 53.1.0 to 53.1.1. See this package in Maven Repository: https://mvnrepository.com/artifact/org.ojalgo/ojalgo/ See this project in Snyk: https://app.snyk.io/org/evensol/project/5734e76a-5ebe-4fe0-9fb9-776e0cbc8504?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * added flow setter (#838) * added flow setter * improve setter * fix bug * fix errors * fix: upgrade org.apache.logging.log4j:log4j-core from 2.20.0 to 2.21.0 (#840) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-core from 2.20.0 to 2.21.0. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/ See this project in Snyk: https://app.snyk.io/org/evensol/project/5734e76a-5ebe-4fe0-9fb9-776e0cbc8504?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * fix: upgrade org.apache.logging.log4j:log4j-api from 2.20.0 to 2.21.0 (#839) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-api from 2.20.0 to 2.21.0. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api/ See this project in Snyk: https://app.snyk.io/org/evensol/project/5734e76a-5ebe-4fe0-9fb9-776e0cbc8504?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * added test for flow setter for simple process (#841) * Bug error with flash calc (#843) * bug: error with flash calc Gudrun * temporary "fix" bug in stabiilty analysis --------- Co-authored-by: Sviatoslav Eroshkin <109044598+Sviatose@users.noreply.github.com> * Fix multifeed (#845) * fixed minor bug in stability analysis * fix multifeed * update * update * fixed bug * update * remove log * version 2.5.8 * fix flow setter bug * feat: use defined constant values (#825) * refact: use defined constant values for atmospheric pressure * refact: use defined constant value for R style / docfix --------- Co-authored-by: Even Solbraa <41290109+EvenSol@users.noreply.github.com> * fix: upgrade org.apache.logging.log4j:log4j-core from 2.21.0 to 2.21.1 (#846) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-core from 2.21.0 to 2.21.1. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/ See this project in Snyk: https://app.snyk.io/org/evensol/project/5734e76a-5ebe-4fe0-9fb9-776e0cbc8504?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * fix: upgrade org.apache.logging.log4j:log4j-api from 2.21.0 to 2.21.1 (#847) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-api from 2.21.0 to 2.21.1. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api/ See this project in Snyk: https://app.snyk.io/org/neqsim/project/86e71bb0-950f-445f-94e7-32e73d92cca3?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * fixed minor bug in stability analysis (#844) * Process new tp flash problem (#852) * bug: TPflash problem * fixed bug in flash * comment out method --------- Co-authored-by: Sviatoslav Eroshkin <109044598+Sviatose@users.noreply.github.com> * New release (#854) * add test (#855) * Fix pressure bug (#856) * add test * fix pressure bug * fix staility of TEG process (#859) * improve TPflash speed (#860) * bug fix * update flash * imporve flash * improve flash in high pressure area (#862) * improve flash * update * version 2.5.10 (#863) * Update TPmultiflash.java * Update TPmultiflash.java * Update TPmultiflash.java * fix error flash * updated dynamics calc (#868) * updated dynamics calc * updates * update dynamic calc * update model * fix test error * remove output * added test and fix * update * fixed errors control * Release 2.5.11 (#869) * Update pom.xml * Update pomJava8.xml * feat: assure no negative Ti and Td (#872) * feat: assure no negative Ti and Td * feat: also check for Kp test: added tests * fix controller (#874) * version 2.5.12 (#875) * Update pom.xml * Update pomJava8.xml * add chlorine parameters (#871) * fix: throw exceptions in pTphaseEnvelope (#876) * fix: upgrade org.apache.logging.log4j:log4j-api from 2.21.1 to 2.22.0 (#880) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-api from 2.21.1 to 2.22.0. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api/ See this project in Snyk: https://app.snyk.io/org/evensol/project/5734e76a-5ebe-4fe0-9fb9-776e0cbc8504?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * [Snyk] Upgrade org.apache.logging.log4j:log4j-core from 2.21.1 to 2.22.0 (#879) * fix: upgrade org.apache.logging.log4j:log4j-core from 2.21.1 to 2.22.0 Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-core from 2.21.1 to 2.22.0. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/ See this project in Snyk: https://app.snyk.io/org/evensol/project/5734e76a-5ebe-4fe0-9fb9-776e0cbc8504?utm_source=github&utm_medium=referral&page=upgrade-pr * fix: upgrade org.apache.logging.log4j:log4j-api from 2.21.1 to 2.22.0 (#880) (#881) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-api from 2.21.1 to 2.22.0. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api/ See this project in Snyk: https://app.snyk.io/org/evensol/project/5734e76a-5ebe-4fe0-9fb9-776e0cbc8504?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot --------- Co-authored-by: snyk-bot * test: add LNGship unit tests (#878) * chore: add a security-policy (#884) Required to stay complient for public repos in equinor. (https://developer.equinor.com/governance/scm-policy/) * fix set lp limit (#885) * added test for umrpru (#886) * added test for umrpru * updated * update * fix bug saturation temperature and add test * update name * Update src/main/java/neqsim/PVTsimulation/simulation/SaturationTemperature.java good suggestion Co-authored-by: Jørgen Engelsen * Update src/test/java/neqsim/PVTsimulation/simulation/SaturationTemperatureTest.java Co-authored-by: Jørgen Engelsen * Update src/main/java/neqsim/PVTsimulation/simulation/SaturationPressure.java Co-authored-by: Jørgen Engelsen * Update SaturationTemperature.java * Update SaturationPressure.java --------- Co-authored-by: Jørgen Engelsen * Update pom.xml (#888) * Update pom.xml * Update pomJava8.xml * added compressor test and initial code (#877) * added compressor test and initial code * some more work * some further work to get dynamic compressor to work * strugling to find error * improve compressor calcs * added compressor mointor * further work in dynamic compressors * update * updates * updated * further work * update dynamic * update * update * update * update * update * update * update * update * update power * add maxminspeed setters * check if controller is active * removed try catch block and added check for actualFlowRateNew * removed print to screen in test * Update pom.xml (#889) * Update pom.xml * Update pomJava8.xml * doc: fix javadoc (#891) * doc: fix javadoc * chore: remove non-implemented FileWriter classes (#848) * chore: build with java 21 update dependencies and github workflows * Update release_with_jars.yml indentation error * Update release_with_jars.yml * fix: typo Update release_with_jars.yml * fix read kij from eclipse (#892) * fix read kij from eclipse * fix bug * add inflow unit (#893) * add inflow unit * minor updates * updates * update adjuster * pdate * update * finalize test * update (#894) * version 2.5.15 (#895) * Update pom.xml * Update pomJava21.xml * Update pomJava8.xml * Update release_with_jars.yml * fix: pipe beggs and brills y factor (#898) * possible to calc out pressure of valve (#897) * possible to calc out pressure of valve * added test to pipeline flow * remove output * prepare version 2.5.16 * update adjuster (#900) * update adjuster * fix bug adjuster * removed output added test * Update README.md * Update README.md * Update README.md * Update README.md * Update verify_build.yml * fix: add more get methods (#902) * feat: module class add get meas device (#903) * fix: upgrade org.apache.logging.log4j:log4j-api from 2.22.0 to 2.22.1 (#905) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-api from 2.22.0 to 2.22.1. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api/ See this project in Snyk: https://app.snyk.io/org/neqsim/project/86e71bb0-950f-445f-94e7-32e73d92cca3?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * fix: upgrade org.apache.logging.log4j:log4j-core from 2.22.0 to 2.22.1 (#904) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-core from 2.22.0 to 2.22.1. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/ See this project in Snyk: https://app.snyk.io/org/neqsim/project/86e71bb0-950f-445f-94e7-32e73d92cca3?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * build(deps): sync log4j version in all poms (#906) * update mechanical design models for scrubber (#912) * update models * update * updates * updates * update * update * update * release 2.5.17 (#913) * release 2.5.17 * Update pomJava21.xml * Update pomJava8.xml * fix: upgrade org.ojalgo:ojalgo from 53.1.1 to 53.2.0 (#908) Snyk has created this PR to upgrade org.ojalgo:ojalgo from 53.1.1 to 53.2.0. See this package in Maven Repository: https://mvnrepository.com/artifact/org.ojalgo/ojalgo/ See this project in Snyk: https://app.snyk.io/org/evensol/project/5734e76a-5ebe-4fe0-9fb9-776e0cbc8504?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * fix: pipeBeggsAndBrills (#914) * fix: pipeBeggsAndBrills * fix: update * fix: set default to isothermal running * fix: update * fix: tests * fix: typo in ProcessModule (#915) * Bug mpm returns incorrect value (#917) * bug: MPM returns incorrect value * bug fix suggestion. Bug had to do when we create a stream from another stream (as we do for stream2). Then we set temperature and pressure on it - but it does not set it on the correct stream * added init properties * bug fix * update * fix bug * new fix --------- Co-authored-by: Sviatoslav Eroshkin <109044598+Sviatose@users.noreply.github.com> * refact: use const from modelsettings * fix: rename class CalcIonicComposition * refact: remove deprecation, simplify init * simplify default method * feat: do not let display throw exception * fix * test: disable tests not working on github * fix * style: whitespace (#924) * style: whitespace * release 2.5.18 (#925) * refact: remove deprecated setPhaseType(int phaseToChange, int newPhaseType) * rm: setPhaseType(int phaseToChange, String phaseTypeName) * refact: rm getPhaseType and setPhaseType(int phaseType) * refact: remove deprecated functions * refact: reorder code * refact: replace use of phasetype as int * doc: javadoc fix * refact: replace integer references to phasetype * refact: phaseType.getValue-> compare with enum type docfix revert * refact: rename variables * style * fix: upgrade org.ojalgo:ojalgo from 53.2.0 to 53.3.0 (#931) Snyk has created this PR to upgrade org.ojalgo:ojalgo from 53.2.0 to 53.3.0. See this package in Maven Repository: https://mvnrepository.com/artifact/org.ojalgo/ojalgo/ See this project in Snyk: https://app.snyk.io/org/neqsim/project/86e71bb0-950f-445f-94e7-32e73d92cca3?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * refact: make PhaseGE abstract, throw exception for non implemented methods * chore: move main function to test * test: allow some numerical inaccuracy * refact: logger error -> warn * refact: systemthermo.initAnalytic(int type, int phase) * refact: public void initAnalytic(int type) * git commit -m "refact: rename type to initType" * refact: remove redundant method definition * test: add tests (#936) * test: add tests * update tests * Update PhasePCSAFTRahmatTest.java * Update SystemPCSAFTTest.java --------- Co-authored-by: Even Solbraa <41290109+EvenSol@users.noreply.github.com> * docfix * rename variables * docfix: revert * refact: remove redundant code * chore: update github action versions * refact: remove unused function input compnumber from removecomponent (#940) * feat: simplify removeComponent * refact: reorder methods * docfix * refact: Phase classes clean up (#941) * refact: remove redundant variable definitions (#943) * Ref rahmat 2 (#945) * refact: remove duplicate setters/getters * refact: remove redundant getter/setters (#946) * fix: upgrade org.apache.logging.log4j:log4j-core from 2.22.1 to 2.23.0 (#948) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-core from 2.22.1 to 2.23.0. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/ See this project in Snyk: https://app.snyk.io/org/neqsim/project/86e71bb0-950f-445f-94e7-32e73d92cca3?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * fix: upgrade org.apache.logging.log4j:log4j-api from 2.22.1 to 2.23.0 (#947) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-api from 2.22.1 to 2.23.0. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api/ See this project in Snyk: https://app.snyk.io/org/neqsim/project/86e71bb0-950f-445f-94e7-32e73d92cca3?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * Update README.md (#949) * refact: make method default in Interface (#950) * fix: throw exception for not implemented methods (#951) * fix: throw exception for not implemented methods * style: alignment * refact: simplify EOS subclass constructor * refact: simplify super ctor calls * refact: simplify srkeos subclass constructors * refact: simplify preos subclass constructors * refact: simplify SystemSrkCPA subclass constructors * Whitespace style (#955) * style: whitespace and comment fixes * fix: javadoc typo (#956) * release 2.5.19 (#958) * refact: Eclipse cleanup (#959) * refact: Eclipse cleanup * style: whitespace * chore: align pom files (#960) * chore: align pom files update maven references for java8 * refact: reorder methods system (#961) * refact: reorder methods using eclipse reorder code (#963) * feat: propertyFlash - more robust input handling (#962) * fix: check that fraction belongs to current component * feat: more robust handling of input components * feat: SystemInterface.hasComponent * chore: release 2.5.20 * Update MultiPhaseMeter.java (#964) remove output in MPM * fix: bugfixes Phase.addComponent (#966) * Update verify_build.yml * Create publish_javadoc.yml * feat: Phase.hasComponent check against normalized name (#965) feat: Phase.hasComponent check against normalized name feat: new function Phase.getComponentNames fix: check that compnumber is valid and not in use (previously possible to overwrite component in array) docfix * Update verify_build.yml * fix: more robust propertyFlash (#967) * phaseType fix (#969) * v2.5.21 (#970) * Update pom.xml * Update pomJava8.xml * Update pomJava21.xml * fix: upgrade org.apache.logging.log4j:log4j-core from 2.23.0 to 2.23.1 (#972) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-core from 2.23.0 to 2.23.1. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/ See this project in Snyk: https://app.snyk.io/org/neqsim/project/86e71bb0-950f-445f-94e7-32e73d92cca3?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * fix: upgrade org.apache.logging.log4j:log4j-api from 2.23.0 to 2.23.1 (#973) Snyk has created this PR to upgrade org.apache.logging.log4j:log4j-api from 2.23.0 to 2.23.1. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api/ See this project in Snyk: https://app.snyk.io/org/neqsim/project/86e71bb0-950f-445f-94e7-32e73d92cca3?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * fix solid flash (#975) * fix solid calcs (#976) * fix solid flash * update * update * update * add chack for component in temp database * remove output * prepare for version 2.5.22 (#977) * fix: update devcontainer.json to new format (#978) * fix: update devcontainer.json to new format chore: update checkstyle version style: fix xml and json tab settings * chore: checkstyle, match default import order * add alkene components (#981) * add ethylene * update components * added pHFlash Test for CPA (#982) * Add more units (#983) * add psi and psig units * add common unit specification * added test for temperatures (#984) * added more field units (#985) * added more field units * more updates to units * more field units * add possibility to see available units * fix test for units * update text * update * first implementation of reporting of process (#986) * first implementation of reporting of process * added json reporting * fixed bug in stream * update pom * update doc * fix bug * update * update * update * 987 do not converge recycles at each process simulation (#989) * first test * update run step * added Value as response (#988) * added Value as response * added json report from process object * update * update * fix error. * added tests for saturation calculations (#991) * improve json properties (#990) * inproved properties * further updates * update barrels/day * add wt fraction * updated method * added RVP and TVP methods (#992) * Update Standard_ASTM_D6377Test.java * bug fix json stream (#994) * initial test rachford rice (#995) * initial test rachford rice * update rachford rice - moved to separate class * modified rachford rice implementation * added Rachford rice tests * new implementation rachford rice (#996) * new implementation rachford rice * update tests * update * update method doc * update * Update StreamResponse.java * update response * add GCV and WI for streams (#997) * added GCV/WI to stream response (#998) * Update StreamResponse.java * update Sm3hr unit * added response * improved speed of water saturator (#999) * fix report (#1000) * updated diff lib simulation and test (#1001) * updated diff lib simulation and test * update * update CME * update * fix Eclipse update (#1003) * remove gitlens from devcontainer (#1004) * update eclipse read (#1005) * update eclipse reader (#1006) * release 2.5.23 (#1007) * update units (#1008) * Units-upd (#1009) * update units * update * added exceptions for units not supported (#1010) * added exceptions for units not supported * typo fix * work on units * update tests * added unit * test for metric units * update units * added fluid report * removed output in json fluid and stream * update respons * Update FluidResponse.java * Update FluidResponse.java * added pure component properties in json * added more parameters to json * update * update process simulation with run in step (#1011) * update process simulation with run in step * update run step * update test for run in steps * update test for step process * version 2.5.24 Update pom.xml (#1012) * version 2.5.25 Update pom.xml * Update pomJava21.xml * Update pomJava8.xml * added Cp, Cv, enthalpy, entropy (#1013) * update josn report format (#1014) * added Zvol corr (#1015) * Update SystemThermo.java * update json reporting (#1016) * update json reporting * update test * added unit for temperature (#1017) * version 2.5.25 (#1019) * update test (#1020) * update test * fixed bug * update * update (#1021) * fix bug change composition to all phases (#1022) * cvd and multiphase corrections for reservoir (#1023) * cvdfor reservoir * added some implementation of TPflash reservoir * update * fix error in simulation * update * update init(0) * start adding MPFM fitter * fix: upgrade com.google.code.gson:gson from 2.10.1 to 2.11.0 (#1024) Snyk has created this PR to upgrade com.google.code.gson:gson from 2.10.1 to 2.11.0. See this package in maven: com.google.code.gson:gson See this project in Snyk: https://app.snyk.io/org/evensol/project/5734e76a-5ebe-4fe0-9fb9-776e0cbc8504?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * added test (#1026) * Flow Induced Vibrations (#1025) * feat: LOF calc --------- Co-authored-by: Even Solbraa <41290109+EvenSol@users.noreply.github.com> * fix bug separator inlet stream * update version (#1027) * Update release_with_jars.yml * try fix (#1029) * try fix * update * fix: but with str units (#1028) * fix: bug with Oil Test increase (#1032) * fix: flow induced vibrations (#1031) * version 2.5.27 (#1033) * mior update logger floe rate adjuster (#1035) * mior update logger floe rate adjuster * minor updates * fix json error on report (#1034) * add temperature dependent volume correction for gas (#1036) * add temperature dependent volume correction for gas * Update Density.java * Update Density.java * fix: oil sep bug (#1037) * fix: oil sep bug * commented out failed test * removed feiling test oilProcessTest * rachford rice cleanup --------- Co-authored-by: Even Solbraa <41290109+EvenSol@users.noreply.github.com> * version 2.5.28 (#1038) * Update Units.java * add set and get methods and a test (#1039) * Update Splitter.java (#1043) * Update Splitter.java get split factor values * Update Splitter.java * remove unhandeled runtime exception (#1042) * remove unhandeled runtime exception * added possibility to chenge method used in Rachford RIce * update * Update PhaseEos.java * add vol correction test (#1041) * feat: update flow rate adjuster (#1044) * fix: flow rate adjuster phases (#1045) * 2.5.29 (#1046) * Cv method valves (#1047) * Cv method valves * added Cv for liquids * update formulaes * update * sstill something wrong here... * fixed error * update RVP calc (#1048) * Rvpupdate2 (#1049) * Cv method valves * added Cv for liquids * update formulaes * update * sstill something wrong here... * fixed error * update RVP calc * update 2 * update * improved TVflash (#1051) * Fix-failed-SimpleReservoirTest.testRun (#1052) * improved TVflash * fixed bug TVflash * Update TVflash.java * RVP fix * added more methods (#1053) * fix: upgrade org.jfree:jfreechart from 1.5.4 to 1.5.5 (#1054) Snyk has created this PR to upgrade org.jfree:jfreechart from 1.5.4 to 1.5.5. See this package in maven: org.jfree:jfreechart See this project in Snyk: https://app.snyk.io/org/evensol/project/5734e76a-5ebe-4fe0-9fb9-776e0cbc8504?utm_source=github&utm_medium=referral&page=upgrade-pr Co-authored-by: snyk-bot * fix: HEX (#1055) * version 2.5.30 (#1056) * fixed bug in json HX response (#1058) * work ongoing * fixed NaN in HX response * added duty in output * changed variable name * added pump output (#1060) * use key overall in stream and fluid response (#1061) * added set pressure with unit (#1062) * doc: fix javadoc @link to type double causing javadoc warnings (#1057) * doc: fix javadoc link * chore: update maven plugins, require maven version 3.8.8 and java 8 (#1064) * chore: update maven plugins * chore: fix javadoc (#1066) * chore: fix javadoc (#1067) * chore: fix javadoc * feat: publish releases to maven central (#1068) * chore: release v2.5.31 (#1069) * Update maven_publish.yml * Update maven_publish.yml * upgrade H2 db (#1070) * upgrade H2 db * Update pomJava21.xml * 1063 add delta t specification for heat exchangers (#1071) * first version * update delta T with HX * update delta T HX * chore: add checkstyle plugin (#1072) remove unused/outdated parameters * test a new method for phase envelope calculation (#1074) * test a new method for phase envelope calculation * update test * further improvements * update model * update * update * added one test * update method name to calcPTphaseEnvelope2 * updated method name in test --------- Co-authored-by: Åsmund Våge Fannemel <34712686+asmfstatoil@users.noreply.github.com> * chore: fixed warnings (#1073) * chore: fixed warnings * start adding more fluid property models (#1075) * start adding more fluid property models * add java test to sdcode * further implementation * futher updates on Twu model * updated test * added PC, TC and VC * fix bug in PC calculation for oil components and all tests (#1076) * fix bug in PC calculation for oil components and all tests * fix slim tube test * change default phase envelope algorithm (#1077) * change default phase envelope algorithm * update errors * updated to version 2.5.32 * fix errors * update calc PT envelope * update phaseenvelope tests * added test for Plus fraction model (#1079) --------- Co-authored-by: snyk-bot Co-authored-by: Sviatoslav Eroshkin <109044598+Sviatose@users.noreply.github.com> Co-authored-by: Åsmund Våge Fannemel <34712686+asmfstatoil@users.noreply.github.com> Co-authored-by: Jørgen Engelsen Co-authored-by: Åsmund Våge Fannemel --- .devcontainer/Dockerfile | 5 +- .devcontainer/devcontainer.json | 82 +- .github/ISSUE_TEMPLATE/newrelease.md | 11 + .github/workflows/build.yml | 24 - .github/workflows/maven_publish.yml | 28 + .github/workflows/pr_test.yml | 19 - .github/workflows/publish_javadoc.yml | 21 + ...ase.yml => release_to_github_packages.yml} | 16 +- .github/workflows/release_with_jars.yml | 168 + .github/workflows/verify_build.yml | 70 + .github/workflows/workflow.yml | 23 - .gitignore | 9 + .vscode/settings.json | 31 +- CHANGELOG | 36 - README.md | 20 +- SECURITY.md | 16 + checkstyle_neqsim.xml | 346 + docs/wiki/CPA-parameters.xlsm | Bin 0 -> 52474 bytes docs/wiki/NeqSimDatabase.mdb | Bin 0 -> 4055040 bytes docs/wiki/neqsimlogocircleflatsmall.png | Bin 0 -> 17579 bytes eclipse-java-google-style.xml | 2 +- eclipse_dictionary.txt | 12 - neqsim_formatter.xml | 4 +- pom.xml | 174 +- pomJava21.xml | 274 + pomJava8.xml | 248 + .../neqsim/MathLib/generalMath/TDMAsolve.java | 62 +- .../nonLinearSolver/NumericalDerivative.java | 250 +- .../nonLinearSolver/NumericalIntegration.java | 13 +- .../nonLinearSolver/newtonRhapson.java | 391 +- .../nonLinearSolver/sysNewtonRhapson.java | 876 +- .../modelTuning/BaseTuningClass.java | 150 +- .../modelTuning/TuneToSaturation.java | 150 +- .../modelTuning/TuningInterface.java | 44 +- .../CompositionEstimation.java | 72 +- .../simulation/BasePVTsimulation.java | 332 +- .../simulation/ConstantMassExpansion.java | 716 +- .../simulation/ConstantVolumeDepletion.java | 604 +- .../PVTsimulation/simulation/DensitySim.java | 397 +- .../simulation/DifferentialLiberation.java | 559 +- .../neqsim/PVTsimulation/simulation/GOR.java | 272 +- .../simulation/SaturationPressure.java | 213 +- .../simulation/SaturationTemperature.java | 185 +- .../simulation/SeparatorTest.java | 268 +- .../simulation/SimulationInterface.java | 90 +- .../PVTsimulation/simulation/SlimTubeSim.java | 139 +- .../simulation/SwellingTest.java | 299 +- .../simulation/ViscositySim.java | 376 +- .../simulation/ViscosityWaxOilSim.java | 436 +- .../simulation/WaxFractionSim.java | 393 +- .../util/parameterfitting/CMEFunction.java | 170 +- .../util/parameterfitting/CVDFunction.java | 160 +- .../parameterfitting/DensityFunction.java | 46 +- .../FunctionJohanSverderup.java | 53 +- .../SaturationPressureFunction.java | 86 +- .../TestFitToOilFieldFluid.java | 114 +- .../TestSaturationPresFunction.java | 121 +- .../util/parameterfitting/TestWaxTuning.java | 100 +- .../parameterfitting/ViscosityFunction.java | 82 +- .../util/parameterfitting/WaxFunction.java | 66 +- .../neqsim/api/ioc/CalculationResult.java | 43 +- .../ChemicalReactionOperations.java | 960 +- .../chemicalEquilibriaum/ChemEq.java | 718 +- .../ChemicalEquilibrium.java | 1008 +- .../LinearProgrammingChemicalEquilibrium.java | 659 +- .../ReferencePotComparator.java | 21 +- .../chemicalReaction/ChemicalReaction.java | 875 +- .../ChemicalReactionFactory.java | 147 +- .../ChemicalReactionList.java | 908 +- .../chemicalReactions/kinetics/Kinetics.java | 243 +- .../dataPresentation/JFreeChart/graph2b.java | 598 +- .../dataPresentation/SampleXYDataSource.java | 161 +- .../dataPresentation/dataHandeling.java | 223 +- .../createTextFile/TextFile.java | 166 +- .../dataPresentation/userInterface.java | 25 - .../fluidMechanics/flowLeg/FlowLeg.java | 353 +- .../flowLeg/FlowLegInterface.java | 267 +- .../flowLeg/pipeLeg/PipeLeg.java | 65 +- .../fluidMechanics/flowNode/FlowNode.java | 57 +- .../flowNode/FlowNodeInterface.java | 35 +- .../flowNode/FlowNodeSelector.java | 100 +- .../heatMassTransferCalc/FluidBoundary.java | 975 +- .../FluidBoundaryInterface.java | 455 +- .../EquilibriumFluidBoundary.java | 129 +- .../fluidBoundaryNode/FluidBoundaryNode.java | 45 +- .../FluidBoundaryNodeInterface.java | 17 +- .../FluidBoundaryNodeNonReactive.java | 32 +- .../FluidBoundaryNodeReactive.java | 33 +- .../FluidBoundarySolver.java | 473 +- .../FluidBoundarySolverInterface.java | 31 +- .../FluidBoundaryReactiveSolver.java | 13 +- .../FluidBoundarySystem.java | 148 +- .../FluidBoundarySystemInterface.java | 166 +- .../FluidBoundarySystemNonReactive.java | 105 +- .../FluidBoundarySystemReactive.java | 117 +- .../NonEquilibriumFluidBoundary.java | 1161 +- .../KrishnaStandartFilmModel.java | 625 +- .../ReactiveFluidBoundary.java | 1034 +- .../ReactiveKrishnaStandartFilmModel.java | 120 +- .../enhancementFactor/EnhancementFactor.java | 226 +- .../EnhancementFactorAlg.java | 198 +- .../EnhancementFactorInterface.java | 53 +- .../EnhancementFactorNumeric.java | 92 +- ...terphaseTransportCoefficientBaseClass.java | 127 +- ...terphaseTransportCoefficientInterface.java | 173 +- .../InterphaseOnePhase.java | 27 +- .../InterphasePipeFlow.java | 118 +- .../InterphaseTwoPhase.java | 27 +- .../InterphaseAnnularFlow.java | 29 +- .../InterphaseDropletFlow.java | 316 +- .../InterphaseStratifiedFlow.java | 317 +- .../InterphaseTwoPhasePipeFlow.java | 27 +- .../InterphasePackedBed.java | 152 +- .../InterphaseReactorFlow.java | 27 +- .../InterphaseStirredCellFlow.java | 181 +- .../multiPhaseNode/MultiPhaseFlowNode.java | 657 +- .../waxNode/WaxDepositionFlowNode.java | 311 +- .../onePhaseNode/onePhaseFlowNode.java | 4 +- .../onePhasePipeFlowNode.java | 138 +- .../twoPhaseNode/TwoPhaseFlowNode.java | 763 +- .../twoPhasePipeFlowNode/AnnularFlow.java | 510 +- .../twoPhasePipeFlowNode/BubbleFlowNode.java | 406 +- .../twoPhasePipeFlowNode/DropletFlowNode.java | 592 +- .../StratifiedFlowNode.java | 358 +- .../TwoPhasePackedBedFlowNode.java | 422 +- .../TwoPhaseTrayTowerFlowNode.java | 264 +- .../StirredCellNode.java | 483 +- .../fluidMechanics/flowSolver/FlowSolver.java | 79 +- .../flowSolver/FlowSolverInterface.java | 89 +- .../OnePhaseFlowSolver.java | 15 +- .../OnePhaseFixedStaggeredGrid.java | 1522 +- .../OnePhasePipeFlowSolver.java | 118 +- .../stirredCellSolver/StirredCellSolver.java | 699 +- .../TwoPhaseFixedStaggeredGridSolver.java | 2198 +- .../TwoPhasePipeFlowSolver.java | 138 +- .../fluidMechanics/flowSystem/FlowSystem.java | 876 +- .../flowSystem/FlowSystemInterface.java | 702 +- .../OnePhaseFlowSystem.java | 45 +- .../pipeFlowSystem/PipeFlowSystem.java | 169 +- .../TwoPhaseFlowSystem.java | 45 +- .../shipSystem/LNGship.java | 1107 +- .../stirredCellSystem/StirredCellSystem.java | 289 +- .../TwoPhasePipeFlowSystem.java | 307 +- .../TwoPhasePipeFlowSystemReac.java | 135 +- .../TwoPhaseReactorFlowSystem.java | 291 +- .../GeometryDefinition.java | 440 +- .../GeometryDefinitionInterface.java | 428 +- .../packings/BerlSaddlePacking.java | 13 +- .../internalGeometry/packings/Packing.java | 46 +- .../packings/PackingInterface.java | 65 +- .../packings/PallRingPacking.java | 20 +- .../packings/RachigRingPacking.java | 19 +- .../internalGeometry/wall/MaterialLayer.java | 328 +- .../internalGeometry/wall/PipeWall.java | 13 +- .../internalGeometry/wall/Wall.java | 92 +- .../internalGeometry/wall/WallInterface.java | 41 +- .../geometryDefinitions/pipe/PipeData.java | 90 +- .../reactor/ReactorData.java | 203 +- .../stirredCell/StirredCell.java | 82 +- .../PipeSurroundingEnvironment.java | 28 +- .../surrounding/SurroundingEnvironment.java | 64 +- .../SurroundingEnvironmentBaseClass.java | 56 +- .../FileWriterBaseClass.java | 20 - .../FileWriterInterface.java | 12 - .../OnePhaseFileWriter.java | 27 - .../PipeFlowFileWriter.java | 27 - .../TwoPhaseFileWriter.java | 22 - .../TwoPhasePipeFlowFileWriter.java | 22 - .../FlowNodeVisualization.java | 255 +- .../FlowNodeVisualizationInterface.java | 321 +- .../OnePhaseFlowNodeVisualization.java | 13 +- .../OnePhasePipeFlowNodeVisualization.java | 30 +- .../TwoPhaseFlowNodeVisualization.java | 91 +- .../FlowSystemVisualization.java | 123 +- .../FlowSystemVisualizationInterface.java | 71 +- .../OnePhaseFlowVisualization.java | 37 +- .../PipeFlowVisualization.java | 300 +- .../TwoPhaseFlowVisualization.java | 36 +- .../TwoPhasePipeFlowVisualization.java | 349 +- .../masstransfer/MassTransferFunction.java | 43 - .../masstransfer/TestMassTransfer.java | 74 - .../util/timeSeries/TimeSeries.java | 269 +- src/main/java/neqsim/log4j2.properties | 20 + .../PhysicalPropertyHandler.java | 293 +- .../InterfaceProperties.java | 448 +- .../InterphasePropertiesInterface.java | 293 +- .../solidAdsorption/AdsorptionInterface.java | 68 +- .../PotentialTheoryAdsorption.java | 329 +- .../FirozabadiRamleyInterfaceTension.java | 139 +- .../surfaceTension/GTSurfaceTension.java | 330 +- .../GTSurfaceTensionFullGT.java | 178 +- .../surfaceTension/GTSurfaceTensionODE.java | 652 +- .../GTSurfaceTensionSimple.java | 786 +- .../surfaceTension/GTSurfaceTensionUtils.java | 124 +- .../surfaceTension/LGTSurfaceTension.java | 424 +- .../ParachorSurfaceTension.java | 142 +- .../surfaceTension/SurfaceTension.java | 103 +- .../SurfaceTensionInterface.java | 21 +- .../PhysicalPropertyMixingRule.java | 181 +- .../PhysicalPropertyMixingRuleInterface.java | 75 +- .../PhysicalPropertyMethod.java | 65 +- .../PhysicalPropertyMethodInterface.java | 63 +- .../CommonPhysicalPropertyMethod.java | 62 +- .../conductivity/Conductivity.java | 81 +- .../PFCTConductivityMethodMod86.java | 91 +- .../CorrespondingStatesDiffusivity.java | 92 +- .../diffusivity/Diffusivity.java | 220 +- .../FrictionTheoryViscosityMethod.java | 564 +- .../viscosity/LBCViscosityMethod.java | 142 +- .../viscosity/PFCTViscosityMethod.java | 324 +- .../PFCTViscosityMethodHeavyOil.java | 428 +- .../viscosity/PFCTViscosityMethodMod86.java | 365 +- .../viscosity/Viscosity.java | 212 +- .../GasPhysicalPropertyMethod.java | 110 +- .../conductivity/ChungConductivityMethod.java | 161 +- .../conductivity/Conductivity.java | 82 +- .../density/Density.java | 104 +- .../diffusivity/Diffusivity.java | 261 +- .../diffusivity/WilkeLeeDiffusivity.java | 87 +- .../viscosity/ChungViscosityMethod.java | 269 +- .../viscosity/Viscosity.java | 71 +- .../LiquidPhysicalPropertyMethod.java | 62 +- .../conductivity/Conductivity.java | 159 +- .../density/Costald.java | 155 + .../density/Density.java | 108 +- .../liquidPhysicalProperties/density/temp | 39 + .../diffusivity/AmineDiffusivity.java | 150 +- .../diffusivity/CO2water.java | 60 +- .../diffusivity/Diffusivity.java | 217 +- .../diffusivity/SiddiqiLucasMethod.java | 122 +- .../viscosity/AmineViscosity.java | 72 +- .../viscosity/Viscosity.java | 275 +- .../ConductivityInterface.java | 26 +- .../methodInterface/DensityInterface.java | 26 +- .../methodInterface/DiffusivityInterface.java | 122 +- .../methodInterface/ViscosityInterface.java | 42 +- .../SolidPhysicalPropertyMethod.java | 62 +- .../conductivity/Conductivity.java | 94 +- .../density/Density.java | 108 +- .../diffusivity/Diffusivity.java | 156 +- .../viscosity/Viscosity.java | 128 +- .../PhysicalProperties.java | 795 +- .../PhysicalPropertiesInterface.java | 494 +- .../DefaultPhysicalProperties.java | 73 +- .../AirPhysicalProperties.java | 68 +- .../GasPhysicalProperties.java | 107 +- .../NaturalGasPhysicalProperties.java | 71 +- .../AminePhysicalProperties.java | 49 +- .../CO2waterPhysicalProperties.java | 72 +- .../GlycolPhysicalProperties.java | 49 +- .../LiquidPhysicalProperties.java | 93 +- .../WaterPhysicalProperties.java | 49 +- .../SolidPhysicalProperties.java | 60 +- .../GrunbergNissanFunction.java | 40 - .../TestGrunbergNissanFit.java | 85 - .../diffusivity/DiffusivityFunction.java | 42 - .../diffusivity/TestDiffusivity.java | 83 - .../ConductivityFunction.java | 39 - .../TestConductivityFit.java | 84 - .../RacketFunction.java | 39 - .../TestRacketFit.java | 80 - .../TestRacketFitting.py | 19 - .../InfluenceParamGTFunction.java | 47 - .../InfluenceParamGTFunctionBinaryData.java | 50 - .../ParachorFunction.java | 54 +- .../TestInfluenceParamGTFunction.java | 147 - .../TestParachorFit.java | 102 +- .../chungMethod/ChungFunction.java | 46 +- .../chungMethod/TestChungFit.java | 91 +- .../linearLiquidModel/TestViscosityFit.java | 119 +- .../linearLiquidModel/ViscosityFunction.java | 41 +- .../SimulationBaseClass.java | 73 +- .../SimulationInterface.java | 159 +- .../conditionMonitor/ConditionMonitor.java | 144 +- .../ConditionMonitorSpecifications.java | 14 +- .../ControllerDeviceBaseClass.java | 382 +- .../ControllerDeviceInterface.java | 238 +- .../costEstimation/CostEstimateBaseClass.java | 152 +- .../UnitCostEstimateBaseClass.java | 99 +- .../compressor/CompressorCostEstimate.java | 42 +- .../separator/SeparatorCostEstimate.java | 42 +- .../valve/ValveCostEstimate.java | 41 +- .../CombustionEmissionsCalculator.java | 111 + .../measurementDevice/CompressorMonitor.java | 58 + .../CricondenbarAnalyser.java | 155 +- .../FlowInducedVibrationAnalyser.java | 184 + ...HydrateEquilibriumTemperatureAnalyser.java | 156 +- .../measurementDevice/LevelTransmitter.java | 67 +- .../MeasurementDeviceBaseClass.java | 471 +- .../MeasurementDeviceInterface.java | 286 +- .../measurementDevice/MolarMassAnalyser.java | 76 +- .../measurementDevice/MultiPhaseMeter.java | 319 +- .../measurementDevice/NMVOCAnalyser.java | 71 + .../PressureTransmitter.java | 73 +- .../StreamMeasurementDeviceBaseClass.java | 47 + .../TemperatureTransmitter.java | 69 +- .../VolumeFlowTransmitter.java | 160 +- .../WaterContentAnalyser.java | 89 +- .../WaterDewPointAnalyser.java | 229 +- .../measurementDevice/WellAllocator.java | 147 +- .../online/OnlineSignal.java | 205 +- .../measurementDevice/pHProbe.java | 97 +- .../simpleFlowRegime/FluidSevereSlug.java | 138 + .../simpleFlowRegime/Pipe.java | 178 + .../simpleFlowRegime/SevereSlugAnalyser.java | 828 + .../mechanicalDesign/MechanicalDesign.java | 52 +- .../SystemMechanicalDesign.java | 50 +- .../absorber/AbsorberMechanicalDesign.java | 6 +- .../adsorber/AdsorberMechanicalDesign.java | 13 +- .../CompressorMechanicalDesign.java | 19 +- .../AbsorptionColumnDesignStandard.java | 37 +- .../AdsorptionDehydrationDesignStandard.java | 33 +- .../CompressorDesignStandard.java | 31 +- .../GasScrubberDesignStandard.java | 46 +- .../MaterialPipeDesignStandard.java | 32 +- .../MaterialPlateDesignStandard.java | 37 +- .../PipelineDesignStandard.java | 30 +- .../PressureVesselDesignStandard.java | 3 +- .../SeparatorDesignStandard.java | 42 +- .../pipeline/PipelineMechanicalDesign.java | 25 +- .../GasScrubberMechanicalDesign.java | 36 +- .../separator/SeparatorMechanicalDesign.java | 77 +- .../sectionType/DistillationTraySection.java | 3 +- .../separator/sectionType/MecMeshSection.java | 3 +- .../sectionType/MechVaneSection.java | 2 +- .../valve/ValveMechanicalDesign.java | 17 +- .../ProcessEquipmentBaseClass.java | 77 +- .../ProcessEquipmentInterface.java | 62 +- .../processEquipment/TwoPortEquipment.java | 209 +- .../processEquipment/TwoPortInterface.java | 188 +- .../absorber/AbsorberInterface.java | 16 +- .../absorber/SimpleAbsorber.java | 752 +- .../absorber/SimpleTEGAbsorber.java | 1132 +- .../absorber/WaterStripperColumn.java | 1018 +- .../adsorber/SimpleAdsorber.java | 680 +- .../compressor/AntiSurge.java | 198 +- .../compressor/Compressor.java | 313 +- .../compressor/CompressorChart.java | 784 +- .../CompressorChartAlternativeMapLookup.java | 1004 +- .../compressor/CompressorChartGenerator.java | 82 + .../compressor/CompressorChartInterface.java | 324 +- .../compressor/CompressorCurve.java | 114 +- .../compressor/CompressorInterface.java | 132 +- .../compressor/CompressorPropertyProfile.java | 47 +- .../compressor/StoneWallCurve.java | 223 +- .../compressor/SurgeCurve.java | 231 +- .../distillation/Condenser.java | 204 +- .../distillation/DistillationColumn.java | 1346 +- .../distillation/DistillationInterface.java | 16 +- .../distillation/Reboiler.java | 139 +- .../distillation/SimpleTray.java | 403 +- .../distillation/TrayInterface.java | 35 +- .../distillation/VLSolidTray.java | 223 +- .../processEquipment/expander/Expander.java | 201 +- .../expander/ExpanderInterface.java | 16 +- .../expander/ExpanderOld.java | 18 +- .../filter/CharCoalFilter.java | 44 +- .../processEquipment/filter/Filter.java | 4 +- .../heatExchanger/Cooler.java | 120 +- .../heatExchanger/HeatExchanger.java | 1319 +- .../heatExchanger/HeatExchangerInterface.java | 18 +- .../heatExchanger/Heater.java | 83 +- .../heatExchanger/HeaterInterface.java | 70 +- .../heatExchanger/NeqHeater.java | 142 +- .../heatExchanger/ReBoiler.java | 173 +- .../processEquipment/manifold/Manifold.java | 103 + .../processEquipment/mixer/Mixer.java | 74 +- .../mixer/MixerInterface.java | 24 +- .../processEquipment/mixer/StaticMixer.java | 199 +- .../mixer/StaticNeqMixer.java | 200 +- .../mixer/StaticPhaseMixer.java | 193 +- .../pipeline/AdiabaticPipe.java | 746 +- .../pipeline/AdiabaticTwoPhasePipe.java | 936 +- .../processEquipment/pipeline/Fittings.java | 182 +- .../pipeline/IncompressiblePipeFlow.java | 369 +- .../pipeline/OnePhasePipeLine.java | 118 +- .../pipeline/PipeBeggsAndBrills.java | 1309 + .../pipeline/PipeLineInterface.java | 161 +- .../processEquipment/pipeline/Pipeline.java | 577 +- .../pipeline/SimpleTPoutPipeline.java | 180 +- .../pipeline/TwoPhasePipeLine.java | 114 +- .../powerGeneration/GasTurbine.java | 99 +- .../processEquipment/pump/Pump.java | 39 +- .../processEquipment/pump/PumpChart.java | 679 +- .../pump/PumpChartInterface.java | 198 +- .../processEquipment/pump/PumpCurve.java | 62 +- .../processEquipment/pump/PumpInterface.java | 32 +- .../reservoir/ReservoirCVDsim.java | 33 + .../reservoir/ReservoirDiffLibsim.java | 33 + .../reservoir/ReservoirTPsim.java | 149 + .../reservoir/SimpleReservoir.java | 1537 +- .../processEquipment/reservoir/Well.java | 217 +- .../processEquipment/reservoir/WellFlow.java | 106 +- .../separator/GasScrubber.java | 187 +- .../separator/GasScrubberSimple.java | 289 +- .../separator/Hydrocyclone.java | 37 +- .../separator/NeqGasScrubber.java | 275 +- .../processEquipment/separator/Separator.java | 355 +- .../separator/SeparatorInterface.java | 42 +- .../separator/ThreePhaseSeparator.java | 32 +- .../separator/TwoPhaseSeparator.java | 224 +- .../separator/sectionType/ManwaySection.java | 44 +- .../separator/sectionType/MeshSection.java | 53 +- .../separator/sectionType/NozzleSection.java | 44 +- .../separator/sectionType/PackedSection.java | 44 +- .../sectionType/SeparatorSection.java | 343 +- .../separator/sectionType/ValveSection.java | 52 +- .../separator/sectionType/VaneSection.java | 52 +- .../splitter/ComponentSplitter.java | 40 +- .../processEquipment/splitter/Splitter.java | 151 +- .../splitter/SplitterInterface.java | 53 +- .../processEquipment/stream/EnergyStream.java | 102 +- .../stream/EquilibriumStream.java | 146 +- .../stream/IronIonSaturationStream.java | 218 +- .../processEquipment/stream/NeqStream.java | 178 +- .../stream/ScalePotentialCheckStream.java | 189 +- .../processEquipment/stream/Stream.java | 1219 +- .../stream/StreamInterface.java | 495 +- .../stream/VirtualStream.java | 165 + .../subsea/SimpleFlowLine.java | 183 +- .../processEquipment/subsea/SubseaWell.java | 303 +- .../processEquipment/tank/Tank.java | 121 +- .../processEquipment/util/Adjuster.java | 617 +- .../processEquipment/util/Calculator.java | 159 +- .../util/FlowRateAdjuster.java | 194 + .../processEquipment/util/FlowSetter.java | 424 + .../processEquipment/util/GORfitter.java | 165 +- .../processEquipment/util/MPFMfitter.java | 332 + .../util/MoleFractionControllerUtil.java | 16 +- .../processEquipment/util/NeqSimUnit.java | 644 +- .../processEquipment/util/PressureDrop.java | 82 + .../processEquipment/util/Recycle.java | 939 +- .../util/RecycleController.java | 400 +- .../processEquipment/util/SetPoint.java | 420 +- .../util/StreamSaturatorUtil.java | 56 +- .../util/StreamTransition.java | 15 +- .../processEquipment/valve/SafetyValve.java | 166 +- .../valve/ThrottlingValve.java | 569 +- .../valve/ValveInterface.java | 122 +- .../processSystem/ModuleInterface.java | 179 +- .../processSystem/ProcessModule.java | 273 + .../processSystem/ProcessModuleBaseClass.java | 64 +- .../processSystem/ProcessSystem.java | 1847 +- .../AdsorptionDehydrationlModule.java | 397 +- .../processModules/CO2RemovalModule.java | 146 +- .../processModules/DPCUModule.java | 539 +- .../GlycolDehydrationlModule.java | 985 +- .../processModules/MEGReclaimerModule.java | 301 +- .../MixerGasProcessingModule.java | 470 +- .../processModules/PropaneCoolingModule.java | 404 +- .../processModules/SeparationTrainModule.java | 617 +- .../SeparationTrainModuleSimple.java | 613 +- .../processModules/WellFluidModule.java | 450 +- .../util/monitor/CompressorResponse.java | 100 +- .../processSimulation/util/monitor/Fluid.java | 120 - .../util/monitor/FluidComponentResponse.java | 119 + .../util/monitor/FluidResponse.java | 207 + .../util/monitor/HXResponse.java | 78 +- .../util/monitor/HeaterResponse.java | 42 +- .../util/monitor/MPMResponse.java | 43 +- .../util/monitor/PumpResponse.java | 97 +- .../util/monitor/SeparatorResponse.java | 36 +- .../util/monitor/StreamResponse.java | 284 +- .../monitor/ThreePhaseSeparatorResponse.java | 73 +- .../processSimulation/util/monitor/Value.java | 24 + .../util/monitor/ValveResponse.java | 44 + .../util/monitor/WellAllocatorResponse.java | 37 +- .../processSimulation/util/report/Report.java | 116 + src/main/java/neqsim/standards/Standard.java | 39 +- .../neqsim/standards/StandardInterface.java | 311 +- .../BestPracticeHydrocarbonDewPoint.java | 16 +- .../standards/gasQuality/Draft_GERG2004.java | 25 +- .../standards/gasQuality/Draft_ISO18453.java | 20 +- .../gasQuality/GasChromotograpyhBase.java | 12 +- .../gasQuality/Standard_ISO15403.java | 81 + .../gasQuality/Standard_ISO6578.java | 25 +- .../gasQuality/Standard_ISO6974.java | 27 + .../gasQuality/Standard_ISO6976.java | 1271 +- .../gasQuality/Standard_ISO6976_2016.java | 658 +- .../gasQuality/SulfurSpecificationMethod.java | 19 +- .../gasQuality/UKspecifications_ICF_SI.java | 21 +- .../oilQuality/Standard_ASTM_D6377.java | 150 +- .../standards/salesContract/BaseContract.java | 478 +- .../salesContract/ContractInterface.java | 208 +- .../salesContract/ContractSpecification.java | 40 +- .../dataSmoothing/DataSmoothor.java | 177 - .../datasmoothing/DataSmoother.java | 162 + .../ExperimentalEquipmentData.java | 19 +- .../WettedWallColumnData.java | 161 +- .../readDataFromFile/DataObject.java | 12 +- .../readDataFromFile/DataObjectInterface.java | 1 + .../readDataFromFile/DataReader.java | 12 +- .../readDataFromFile/DataReaderInterface.java | 13 +- .../WettedWallColumnDataObject.java | 469 +- .../WettedWallDataReader.java | 178 +- .../sampleCreator/SampleCreator.java | 85 +- .../WettedWallColumnSampleCreator.java | 377 +- .../MonteCarloSimulation.java | 147 +- .../parameterFitting/BaseFunction.java | 216 +- .../parameterFitting/FunctionInterface.java | 277 +- .../parameterFitting/NumericalDerivative.java | 172 +- .../parameterFitting/SampleSet.java | 237 +- .../parameterFitting/SampleValue.java | 448 +- .../parameterFitting/StatisticsBaseClass.java | 1480 +- .../parameterFitting/StatisticsInterface.java | 154 +- .../LevenbergMarquardt.java | 255 +- .../LevenbergMarquardtAbsDev.java | 126 +- .../LevenbergMarquardtBiasDev.java | 116 +- .../LevenbergMarquardtFunction.java | 105 +- src/main/java/neqsim/statistics/test.java | 12 - src/main/java/neqsim/thermo/Fluid.java | 707 +- src/main/java/neqsim/thermo/FluidCreator.java | 73 + .../ThermodynamicConstantsInterface.java | 65 +- .../thermo/ThermodynamicModelSettings.java | 8 +- .../neqsim/thermo/ThermodynamicModelTest.java | 198 +- .../neqsim/thermo/atomElement/Element.java | 170 +- .../thermo/atomElement/UNIFACgroup.java | 67 +- .../thermo/characterization/Characterise.java | 317 +- .../CharacteriseInterface.java | 448 +- .../thermo/characterization/LumpingModel.java | 709 +- .../LumpingModelInterface.java | 148 +- .../characterization/NewtonSolveAB.java | 217 +- .../characterization/NewtonSolveABCD.java | 225 +- .../characterization/NewtonSolveCDplus.java | 30 +- .../PedersenPlusModelSolver.java | 36 +- .../characterization/PlusCharacterize.java | 935 +- .../characterization/PlusFractionModel.java | 23 +- .../PlusFractionModelInterface.java | 306 +- .../thermo/characterization/Recombine.java | 146 +- .../characterization/TBPCharacterize.java | 630 +- .../characterization/TBPModelInterface.java | 254 +- .../characterization/TBPfractionModel.java | 810 +- .../characterization/WaxCharacterise.java | 521 +- .../characterization/WaxModelInterface.java | 190 +- .../neqsim/thermo/component/Component.java | 658 +- .../thermo/component/ComponentBWRS.java | 917 +- .../component/ComponentCPAInterface.java | 302 +- .../thermo/component/ComponentCSPsrk.java | 310 +- .../component/ComponentDesmukhMather.java | 246 +- .../component/ComponentElectrolyteCPA.java | 1286 +- .../component/ComponentElectrolyteCPAOld.java | 805 +- .../ComponentElectrolyteCPAstatoil.java | 131 +- .../neqsim/thermo/component/ComponentEos.java | 1401 +- .../component/ComponentEosInterface.java | 725 +- .../neqsim/thermo/component/ComponentGE.java | 263 +- .../component/ComponentGEInterface.java | 156 +- .../component/ComponentGENRTLmodifiedHV.java | 106 +- .../component/ComponentGENRTLmodifiedWS.java | 487 +- .../thermo/component/ComponentGERG2004.java | 156 +- .../thermo/component/ComponentGEUnifac.java | 617 +- .../component/ComponentGEUnifacPSRK.java | 364 +- .../component/ComponentGEUnifacUMRPRU.java | 1163 +- .../thermo/component/ComponentGEUniquac.java | 434 +- .../ComponentGEUniquacmodifiedHV.java | 51 +- .../thermo/component/ComponentGEWilson.java | 342 +- .../thermo/component/ComponentGeDuanSun.java | 1050 +- .../thermo/component/ComponentGeNRTL.java | 487 +- .../thermo/component/ComponentHydrate.java | 1421 +- .../component/ComponentHydrateBallard.java | 371 +- .../thermo/component/ComponentHydrateGF.java | 464 +- .../component/ComponentHydrateKluda.java | 685 +- .../component/ComponentHydratePVTsim.java | 412 +- .../component/ComponentHydrateStatoil.java | 388 +- .../thermo/component/ComponentInterface.java | 4493 +-- .../component/ComponentKentEisenberg.java | 69 +- .../ComponentModifiedFurstElectrolyteEos.java | 1851 +- ...entModifiedFurstElectrolyteEosMod2004.java | 1817 +- .../thermo/component/ComponentPCSAFT.java | 915 +- .../thermo/component/ComponentPCSAFTa.java | 610 +- .../neqsim/thermo/component/ComponentPR.java | 281 +- .../thermo/component/ComponentPRvolcor.java | 152 +- .../thermo/component/ComponentPrCPA.java | 421 +- .../neqsim/thermo/component/ComponentRK.java | 195 +- .../thermo/component/ComponentSolid.java | 191 +- .../neqsim/thermo/component/ComponentSrk.java | 299 +- .../thermo/component/ComponentSrkCPA.java | 37 +- .../thermo/component/ComponentSrkCPAs.java | 19 +- .../component/ComponentSrkPeneloux.java | 151 +- .../neqsim/thermo/component/ComponentTST.java | 202 +- .../thermo/component/ComponentUMRCPA.java | 1297 +- .../neqsim/thermo/component/ComponentWax.java | 122 +- .../thermo/component/ComponentWaxWilson.java | 363 +- .../thermo/component/ComponentWonWax.java | 219 +- .../AtractiveTermMatCopPRUMRNew.java | 48 +- .../AttractiveTermBaseClass.java | 235 +- .../AttractiveTermCPAstatoil.java | 246 +- .../attractiveEosTerm/AttractiveTermGERG.java | 269 +- .../AttractiveTermInterface.java | 189 +- .../AttractiveTermMatCop.java | 226 +- .../AttractiveTermMatCopPR.java | 299 +- .../AttractiveTermMatCopPRUMR.java | 302 +- .../AttractiveTermMollerup.java | 141 +- .../attractiveEosTerm/AttractiveTermPr.java | 151 +- .../AttractiveTermPr1978.java | 95 +- .../AttractiveTermPrDanesh.java | 152 +- .../AttractiveTermPrDelft1998.java | 149 +- .../AttractiveTermPrGassem2001.java | 163 +- .../attractiveEosTerm/AttractiveTermRk.java | 113 +- .../AttractiveTermSchwartzentruber.java | 367 +- .../attractiveEosTerm/AttractiveTermSrk.java | 169 +- .../attractiveEosTerm/AttractiveTermTwu.java | 126 +- .../AttractiveTermTwuCoon.java | 365 +- .../AttractiveTermTwuCoonParam.java | 299 +- .../AttractiveTermTwuCoonStatoil.java | 299 +- .../AttractiveTermUMRPRU.java | 68 +- .../neqsim/thermo/mixingRule/CPAMixing.java | 1428 +- .../thermo/mixingRule/CPAMixingInterface.java | 279 +- .../ElectrolyteMixingRulesInterface.java | 391 +- .../thermo/mixingRule/EosMixingRules.java | 4904 ++-- .../mixingRule/EosMixingRulesInterface.java | 497 +- .../mixingRule/HVmixingRuleInterface.java | 161 +- src/main/java/neqsim/thermo/phase/Phase.java | 697 +- .../neqsim/thermo/phase/PhaseBWRSEos.java | 1088 +- .../thermo/phase/PhaseCPAInterface.java | 120 +- .../neqsim/thermo/phase/PhaseCSPsrkEos.java | 507 +- .../neqsim/thermo/phase/PhaseDefault.java | 139 +- .../thermo/phase/PhaseDesmukhMather.java | 469 +- .../neqsim/thermo/phase/PhaseDuanSun.java | 196 +- .../thermo/phase/PhaseElectrolyteCPA.java | 2682 +- .../thermo/phase/PhaseElectrolyteCPAOld.java | 1589 +- .../phase/PhaseElectrolyteCPAstatoil.java | 134 +- .../java/neqsim/thermo/phase/PhaseEos.java | 2476 +- .../thermo/phase/PhaseEosInterface.java | 289 +- .../thermo/phase/PhaseEosInterface_1.java | 72 - .../java/neqsim/thermo/phase/PhaseGE.java | 519 +- .../neqsim/thermo/phase/PhaseGEInterface.java | 56 +- .../java/neqsim/thermo/phase/PhaseGENRTL.java | 206 +- .../thermo/phase/PhaseGENRTLmodifiedHV.java | 256 +- .../thermo/phase/PhaseGENRTLmodifiedWS.java | 184 +- .../neqsim/thermo/phase/PhaseGERG2004Eos.java | 342 +- .../neqsim/thermo/phase/PhaseGEUnifac.java | 491 +- .../thermo/phase/PhaseGEUnifacPSRK.java | 291 +- .../thermo/phase/PhaseGEUnifacUMRPRU.java | 563 +- .../neqsim/thermo/phase/PhaseGEUniquac.java | 180 +- .../phase/PhaseGEUniquacmodifiedHV.java | 63 +- .../neqsim/thermo/phase/PhaseGEWilson.java | 167 +- .../neqsim/thermo/phase/PhaseHydrate.java | 196 +- .../neqsim/thermo/phase/PhaseInterface.java | 545 +- .../thermo/phase/PhaseKentEisenberg.java | 42 +- .../PhaseModifiedFurstElectrolyteEos.java | 3415 +-- ...aseModifiedFurstElectrolyteEosMod2004.java | 119 +- .../java/neqsim/thermo/phase/PhasePCSAFT.java | 126 +- .../thermo/phase/PhasePCSAFTRahmat.java | 2656 +- .../neqsim/thermo/phase/PhasePCSAFTa.java | 49 +- .../java/neqsim/thermo/phase/PhasePrCPA.java | 918 +- .../java/neqsim/thermo/phase/PhasePrEos.java | 64 +- .../neqsim/thermo/phase/PhasePrEosvolcor.java | 350 +- .../thermo/phase/PhasePureComponentSolid.java | 47 +- .../java/neqsim/thermo/phase/PhaseRK.java | 64 +- .../java/neqsim/thermo/phase/PhaseSolid.java | 140 +- .../thermo/phase/PhaseSolidComplex.java | 55 +- .../java/neqsim/thermo/phase/PhaseSrkCPA.java | 3965 +-- .../phase/PhaseSrkCPA_proceduralMatrices.java | 2737 +- .../thermo/phase/PhaseSrkCPAojAlgo.java | 2591 +- .../neqsim/thermo/phase/PhaseSrkCPAs.java | 135 +- .../neqsim/thermo/phase/PhaseSrkCPAsOld.java | 135 +- .../java/neqsim/thermo/phase/PhaseSrkEos.java | 68 +- .../thermo/phase/PhaseSrkPenelouxEos.java | 54 +- .../java/neqsim/thermo/phase/PhaseTSTEos.java | 62 +- .../java/neqsim/thermo/phase/PhaseType.java | 100 + .../java/neqsim/thermo/phase/PhaseUMRCPA.java | 3965 +-- .../java/neqsim/thermo/phase/PhaseWax.java | 78 +- .../neqsim/thermo/phase/StateOfMatter.java | 66 + .../neqsim/thermo/system/SystemBWRSEos.java | 153 +- .../neqsim/thermo/system/SystemCSPsrkEos.java | 145 +- .../thermo/system/SystemDesmukhMather.java | 136 +- .../neqsim/thermo/system/SystemDuanSun.java | 169 +- .../thermo/system/SystemElectrolyteCPA.java | 94 +- .../system/SystemElectrolyteCPAstatoil.java | 94 +- .../java/neqsim/thermo/system/SystemEos.java | 44 +- .../system/SystemFurstElectrolyteEos.java | 86 +- .../SystemFurstElectrolyteEosMod2004.java | 85 +- .../thermo/system/SystemGERG2004Eos.java | 171 +- .../thermo/system/SystemGERGwaterEos.java | 152 +- .../neqsim/thermo/system/SystemGEWilson.java | 140 +- .../neqsim/thermo/system/SystemInterface.java | 2389 +- .../thermo/system/SystemKentEisenberg.java | 140 +- .../java/neqsim/thermo/system/SystemNRTL.java | 140 +- .../neqsim/thermo/system/SystemPCSAFT.java | 224 +- .../neqsim/thermo/system/SystemPCSAFTa.java | 155 +- .../neqsim/thermo/system/SystemPrCPA.java | 140 +- .../neqsim/thermo/system/SystemPrDanesh.java | 152 +- .../neqsim/thermo/system/SystemPrEos.java | 143 +- .../neqsim/thermo/system/SystemPrEos1978.java | 145 +- .../thermo/system/SystemPrEosDelft1998.java | 132 +- .../thermo/system/SystemPrGassemEos.java | 152 +- .../thermo/system/SystemPrMathiasCopeman.java | 98 +- .../thermo/system/SystemProperties.java | 387 +- .../neqsim/thermo/system/SystemPsrkEos.java | 98 +- .../neqsim/thermo/system/SystemRKEos.java | 128 +- .../neqsim/thermo/system/SystemSrkCPA.java | 179 +- .../neqsim/thermo/system/SystemSrkCPAs.java | 137 +- .../thermo/system/SystemSrkCPAstatoil.java | 134 +- .../neqsim/thermo/system/SystemSrkEos.java | 142 +- .../system/SystemSrkMathiasCopeman.java | 98 +- .../thermo/system/SystemSrkPenelouxEos.java | 143 +- .../system/SystemSrkSchwartzentruberEos.java | 98 +- .../thermo/system/SystemSrkTwuCoonEos.java | 98 +- .../system/SystemSrkTwuCoonParamEos.java | 98 +- .../system/SystemSrkTwuCoonStatoilEos.java | 95 +- .../neqsim/thermo/system/SystemTSTEos.java | 156 +- .../neqsim/thermo/system/SystemThermo.java | 6792 +++-- .../neqsim/thermo/system/SystemUMRCPAEoS.java | 43 +- .../neqsim/thermo/system/SystemUMRPRUEos.java | 130 +- .../thermo/system/SystemUMRPRUMCEos.java | 103 +- .../thermo/system/SystemUMRPRUMCEosNew.java | 43 +- .../neqsim/thermo/system/SystemUNIFAC.java | 141 +- .../thermo/system/SystemUNIFACpsrk.java | 141 +- .../java/neqsim/thermo/util/GERG/DETAIL.java | 3016 +- .../neqsim/thermo/util/GERG/GERG2008.java | 6471 +++-- .../thermo/util/GERG/NeqSimAGA8Detail.java | 15 +- .../thermo/util/GERG/NeqSimGERG2008.java | 683 +- .../neqsim/thermo/util/JNI/GERG2004EOS.java | 988 +- .../util/benchmark/TPflash_benchmark.java | 5 +- .../util/benchmark/TPflash_benchmark_UMR.java | 90 +- .../benchmark/TPflash_benchmark_fullcomp.java | 128 +- .../constants/FurstElectrolyteConstants.java | 168 +- .../util/empiric/BukacekWaterInGas.java | 131 +- .../neqsim/thermo/util/empiric/DuanSun.java | 1333 +- .../neqsim/thermo/util/empiric/Water.java | 78 +- .../CH4CO2WaterMDEA/CO2_MDEA_methane.java | 209 - ...nteractionParameterFittingFunctionCH4.java | 182 - ...stIonicInteractionParameterFittingCH4.java | 114 - .../BinaryHVParameterFittingFunction_CH4.java | 106 - ...ParameterFittingToEquilibriumData_CH4.java | 92 - .../BinaryHVParameterFittingFunction_N2O.java | 105 - .../parameterFitting/Procede/CO2MDEA/N2O.java | 75 - ...ParameterFittingToEquilibriumData_N2O.java | 109 - .../Procede/CO2Water/Diamond.java | 80 - .../Procede/CO2Water/Jamal.java | 68 - .../Procede/CO2WaterMDEA/CO2_MDEA.java | 136 - .../CO2WaterMDEA/CO2_MDEA_speciation.java | 167 - ...teractionParameterFittingFunction_CO2.java | 170 - ...tIonicInteractionParameterFitting_CO2.java | 259 - .../Procede/Density/RackettZ.java | 45 - .../Procede/Density/TestRackettZ.java | 82 - .../Procede/Density/density.java | 75 - .../parameterFitting/Procede/H2S_Water.java | 79 - ...BinaryHVParameterFittingFunction_MDEA.java | 147 - .../TestBinaryHVParameterFitting_MDEA.java | 224 - .../Procede/WaterMDEA/Water_MDEA.java | 84 - .../Procede/WaterMDEA/Water_MDEA1.java | 87 - .../parameterFitting/Statoil/Acids/Acids.java | 186 - ...teractionParameterFittingFunctionAcid.java | 172 - ...tIonicInteractionParameterFittingAcid.java | 96 - .../BinaryEosFunction.java | 75 - ...meterFitToActivityCoefficientFunction.java | 73 - .../CPAParameterFittingToDewPointData.java | 116 - .../CPAParameterFittingToSolubilityData.java | 181 - ...AParameterFittingToSolubilityData_Vap.java | 108 - ...osInteractionParameterFittingFunction.java | 59 - ...stBinaryCPAfitToActivityCoefficientDB.java | 86 - ...TestCPAParameterFittingToDewPointData.java | 99 - ...stCPAParameterFittingToSolubilityData.java | 117 - ...arameterFittingToSolubilityData_Lucia.java | 191 - ...AParameterFittingToSolubilityGlycolHC.java | 139 - .../TestEosInteractionParameterFitting.java | 85 - ...osParameterFittingToMercurySolubility.java | 91 - ...ParameterFittingToSolubilityDataEinar.java | 86 - ...inaryHVParameterFittingToDewPointData.java | 71 - ...ryHVParameterFittingToEquilibriumData.java | 65 - ...aryHVParameterFittingToSolubilityData.java | 67 - ...ryHVParameterFittingToSolubilityData2.java | 45 - ...meterFitToActivityCoefficientFunction.java | 37 - ...aryWSParameterFittingToSolubilityData.java | 52 - .../FreezeSolidFunction.java | 35 - .../HuronVidalFunction.java | 69 - ...inaryHVParameterFittingToDewPointData.java | 117 - ...ryHVParameterFittingToEquilibriumData.java | 78 - ...aryHVParameterFittingToSolubilityData.java | 123 - ...rameterFittingToSolubilityDataCO2AcOH.java | 85 - ...arameterFittingToSolubilityData_Lucia.java | 255 - ...rFittingToSolubilityData_LuciaPropane.java | 194 - ...ameterFittingToSolubilityDatawaterCO2.java | 140 - .../TestBinaryHVfitToActivity.java | 63 - .../TestBinaryHVfitToActivityCPA.java | 169 - ...estBinaryHVfitToActivityCoefficientDB.java | 125 - .../TestBinaryHVfitToActivityUNIFAC.java | 79 - ...stBinaryUMRPRUFittingToSolubilityData.java | 303 - ...arameterFittingToSolubilityData_Lucia.java | 210 - .../TestSolidAntoine.java | 81 - .../UMRPRUFunction.java | 73 - .../WongSandlerFunction.java | 77 - .../freezingFit/SolidComplexFunction.java | 53 - .../freezingFit/TestSolidComplexFunction.java | 77 - ...icInteractionParameterFittingFunction.java | 382 - ...nteractionParameterFittingFunctionCH4.java | 144 - ...eractionParameterFittingFunctionCH4_1.java | 32 - ...actionParameterFittingFunctionCo2nacl.java | 78 - ...ionParameterFittingFunctionPiperazine.java | 401 - ...InteractionParameterFittingFunction_1.java | 37 - ...teractionParameterFittingFunction_CO2.java | 352 - ...tionParameterFittingFunction_Sleipner.java | 195 - ...rameterFittingFunction_Sleipnernoacid.java | 117 - .../TestIonicInteractionParameterFitting.java | 284 - ...stIonicInteractionParameterFittingCH4.java | 160 - ...nicInteractionParameterFittingCo2nacl.java | 99 - ...ractionParameterFittingMDEAPiperazine.java | 94 - ...InteractionParameterFittingPiperazine.java | 94 - ...cInteractionParameterFitting_Sleipner.java | 93 - ...actionParameterFitting_Sleipnernoacid.java | 93 - .../AntoineSolidFunction.java | 56 - .../AntoineSolidFunctionS8.java | 53 - .../AntoineParameter/TestSolidAntoine.java | 86 - .../AntoineParameter/TestSolidAntoine_S8.java | 78 - .../CharacterisationFunction.java | 50 - .../TestCharacterisation.java | 58 - .../TestBinaryEosParameterFit.java | 74 - .../AcentricFunction.java | 48 - .../AcentricFunctionScwartzentruber.java | 61 - .../ClassicAcentricDens.java | 69 - .../ClassicAcentricFunction.java | 57 - .../acentricFactorFitting/MathiasCopeman.java | 60 - .../MathiasCopemanToDewPoint.java | 176 - .../acentricFactorFitting/TestAcentric.java | 93 - .../TestAcentricSchwartzentruber.java | 104 - .../TestClassicAcentric.java | 87 - .../TestClassicAcentricPlusDens.java | 166 - .../TestClassicAcentricPlusDens_1.java | 129 - .../TestFitToAntoineVapPres.java | 83 - .../TestMathiasCopeman.java | 130 - .../TestMathiasCopemanToDewPoint.java | 177 - .../acentricFactorFitting/TestTwuCoon.java | 131 - .../acentricFactorFitting/TwuCoon.java | 60 - .../cpaParam/CPAFunction.java | 97 - .../cpaParam/CPAFunctionCp.java | 66 - .../cpaParam/CPAFunctionDens.java | 83 - .../cpaParam/CPAFunctionStatoil.java | 68 - .../cpaParam/TestCPA.java | 134 - .../cpaParam/TestCPA2.java | 194 - .../cpaParam/TestCPA2_1.java | 190 - .../cpaParam/TestCPAStatoil.java | 91 - .../cpaParam/TestCPA_TEG.java | 169 - .../cpaParam/TestCPA_ice.java | 195 - .../FurstIonicParameterFunction.java | 49 - .../FurstIonicParameterFunction_Activity.java | 47 - .../FurstIonicParameterFunction_Density.java | 48 - .../TestFurstIonicParameterFunction.java | 190 - .../hydrate/HydrateFunction.java | 84 - .../hydrate/TestHydrateFunction.java | 108 - .../specificHeat/SpecificHeatCpFunction.java | 62 - .../specificHeat/TestCp.java | 77 - .../util/readwrite/EclipseFluidReadWrite.java | 674 +- .../thermo/util/readwrite/TablePrinter.java | 123 + .../util/referenceEquations/methaneBWR32.java | 191 +- .../BaseOperation.java | 83 +- .../OperationInterface.java | 142 +- .../ThermodynamicOperations.java | 4009 +-- .../ChemicalEquilibrium.java | 139 +- .../flashOps/CalcIonicComposition.java | 97 + .../flashOps/CriticalPointFlash.java | 438 +- .../flashOps/Flash.java | 863 +- .../flashOps/PHflash.java | 367 +- .../flashOps/PHflashGERG2008.java | 399 +- .../flashOps/PHflashSingleComp.java | 140 +- .../flashOps/PHsolidFlash.java | 132 +- .../flashOps/PSFlash.java | 236 +- .../flashOps/PSFlashGERG2008.java | 172 +- .../flashOps/PSflashSingleComp.java | 114 +- .../flashOps/PUflash.java | 194 +- .../flashOps/PVrefluxflash.java | 130 +- .../flashOps/QfuncFlash.java | 169 +- .../flashOps/RachfordRice.java | 507 + .../flashOps/SaturateWithWater.java | 208 +- .../flashOps/SolidFlash.java | 627 +- .../flashOps/SolidFlash1.java | 966 +- .../flashOps/SolidFlash12.java | 728 +- .../flashOps/TPflash.java | 137 +- .../flashOps/TPgradientFlash.java | 294 +- .../flashOps/TPmultiflash.java | 2188 +- .../flashOps/TPmultiflashWAX.java | 39 +- .../flashOps/TPmultiflash_1.java | 549 +- .../flashOps/TSFlash.java | 214 +- .../flashOps/TVflash.java | 189 +- .../flashOps/TVfractionFlash.java | 130 + .../flashOps/VHflash.java | 141 +- .../flashOps/VHflashQfunc.java | 319 +- .../flashOps/VSflash.java | 323 +- .../flashOps/VUflash.java | 147 +- .../flashOps/VUflashQfunc.java | 320 +- .../flashOps/calcIonicComposition.java | 99 - .../flashOps/dTPflash.java | 129 +- .../ConstantDutyFlashInterface.java | 22 + .../flashOps/saturationOps/FreezeOut.java | 389 +- .../flashOps/saturationOps/FugTestConstP.java | 346 +- .../HCdewPointPressureFlash.java | 218 +- .../saturationOps/HydrateEquilibriumLine.java | 86 +- .../HydrateFormationPressureFlash.java | 123 +- .../HydrateFormationTemperatureFlash.java | 293 +- .../HydrateInhibitorConcentrationFlash.java | 229 +- .../HydrateInhibitorwtFlash.java | 236 +- .../SolidComplexTemperatureCalc.java | 452 +- .../flashOps/saturationOps/WATcalc.java | 124 +- .../WaterDewPointEquilibriumLine.java | 92 +- .../addIonToScaleSaturation.java | 322 +- .../bubblePointPressureFlash.java | 302 +- .../bubblePointPressureFlashDer.java | 340 +- .../bubblePointTemperatureFlash.java | 141 +- .../bubblePointTemperatureNoDer.java | 274 +- .../saturationOps/calcSaltSatauration.java | 215 +- .../saturationOps/checkScalePotential.java | 386 +- .../saturationOps/constantDutyFlash.java | 286 +- .../constantDutyFlashInterface.java | 31 - .../constantDutyPressureFlash.java | 176 +- .../constantDutyTemperatureFlash.java | 159 +- .../saturationOps/cricondebarFlash.java | 494 +- .../saturationOps/cricondenBarTemp.java | 267 +- .../saturationOps/cricondenBarTemp1.java | 470 +- .../saturationOps/dewPointPressureFlash.java | 192 +- .../dewPointTemperatureFlash.java | 250 +- .../dewPointTemperatureFlashDer.java | 281 +- .../freezingPointTemperatureFlash.java | 345 +- .../freezingPointTemperatureFlashOld.java | 174 +- .../freezingPointTemperatureFlashTR.java | 442 +- .../waterDewPointTemperatureFlash.java | 157 +- ...terDewPointTemperatureMultiphaseFlash.java | 94 +- .../flashOps/sysNewtonRhapsonPHflash.java | 460 +- .../flashOps/sysNewtonRhapsonTPflash.java | 271 +- .../flashOps/sysNewtonRhapsonTPflashNew.java | 339 +- .../CricondenBarFlash.java | 612 +- .../CricondenThermFlash.java | 608 +- .../HPTphaseEnvelope.java | 178 +- .../pTphaseEnvelope.java | 1570 +- .../pTphaseEnvelope1.java | 861 +- .../pTphaseEnvelopeMay.java | 1445 +- .../pTphaseEnvelopeNew.java | 726 +- .../pTphaseEnvelopeNew2.java | 605 + .../sysNewtonRhapsonPhaseEnvelope.java | 1248 +- .../sysNewtonRhapsonPhaseEnvelope2.java | 925 +- .../reactiveCurves/pLoadingCurve.java | 313 +- .../reactiveCurves/pLoadingCurve2.java | 346 +- .../OLGApropertyTableGenerator.java | 415 +- ...GApropertyTableGeneratorKeywordFormat.java | 1028 +- .../OLGApropertyTableGeneratorWater.java | 2835 +- .../OLGApropertyTableGeneratorWaterEven.java | 2506 +- ...pertyTableGeneratorWaterKeywordFormat.java | 1192 +- ...GApropertyTableGeneratorWaterStudents.java | 3658 ++- ...propertyTableGeneratorWaterStudentsPH.java | 3631 ++- src/main/java/neqsim/util/NamedBaseClass.java | 20 +- src/main/java/neqsim/util/NamedInterface.java | 40 +- .../util/database/AspenIP21Database.java | 230 +- .../util/database/NeqSimBlobDatabase.java | 492 +- .../util/database/NeqSimContractDataBase.java | 82 + .../neqsim/util/database/NeqSimDataBase.java | 844 +- .../database/NeqSimExperimentDatabase.java | 515 +- .../util/database/NeqSimFluidDataBase.java | 244 +- .../database/NeqSimProcessDesignDataBase.java | 96 + .../NeqSimTechnicalDesignDatabase.java | 309 - .../util/exception/InvalidInputException.java | 109 +- .../exception/InvalidOutputException.java | 69 + .../neqsim/util/exception/IsNaNException.java | 60 +- .../exception/NotImplementedException.java | 32 + .../exception/NotInitializedException.java | 4 +- .../util/exception/ThermoException.java | 41 +- .../exception/TooManyIterationsException.java | 42 +- .../util/generator/PropertyGenerator.java | 621 +- .../serialization/SerializationManager.java | 64 +- src/main/java/neqsim/util/unit/BaseUnit.java | 87 +- .../java/neqsim/util/unit/LengthUnit.java | 20 +- .../java/neqsim/util/unit/NeqSimUnitSet.java | 168 +- .../java/neqsim/util/unit/PressureUnit.java | 137 +- src/main/java/neqsim/util/unit/RateUnit.java | 181 +- .../neqsim/util/unit/TemperatureUnit.java | 128 +- src/main/java/neqsim/util/unit/TimeUnit.java | 20 +- src/main/java/neqsim/util/unit/Unit.java | 57 +- src/main/java/neqsim/util/unit/Units.java | 239 + .../neqsim/util/util/DoubleCloneable.java | 95 +- .../neqsim/util/util/FileSystemSettings.java | 30 +- .../commercial/GASCONTRACTSPECIFICATIONS.csv | 17 + .../resources/data/AdsorptionParameters.csv | 9 + src/main/resources/data/COMP.csv | 201 + src/main/resources/data/COMPSALT.csv | 21 + src/main/resources/data/INTER.csv | 1366 + src/main/resources/data/ISO6976constants.csv | 57 + .../resources/data/ISO6976constants2016.csv | 57 + src/main/resources/data/MBWR32param.csv | 3 + src/main/resources/data/PIPEDATA.csv | 24 + src/main/resources/data/REACTIONDATA.csv | 38 + src/main/resources/data/ReactionKSPdata.csv | 2 + src/main/resources/data/STOCCOEFDATA.csv | 134 + src/main/resources/data/UNIFACGroupParam.csv | 82 + src/main/resources/data/UNIFACInterParam.csv | 65 + .../resources/data/UNIFACInterParamA_UMR.csv | 65 + .../data/UNIFACInterParamA_UMRMC.csv | 71 + src/main/resources/data/UNIFACInterParamB.csv | 65 + .../resources/data/UNIFACInterParamB_UMR.csv | 65 + .../data/UNIFACInterParamB_UMRMC.csv | 71 + src/main/resources/data/UNIFACInterParamC.csv | 65 + .../resources/data/UNIFACInterParamC_UMR.csv | 65 + .../data/UNIFACInterParamC_UMRMC.csv | 71 + src/main/resources/data/UNIFACcomp.csv | 112 + src/main/resources/data/UNIFACcompUMRPRU.csv | 117 + src/main/resources/data/derby.properties | 2 - src/main/resources/data/element.csv | 86 + .../README_DO_NOT_TOUCH_FILES.txt | 9 - .../data/neqsimtestdatabase/derby.properties | 2 - .../log/README_DO_NOT_TOUCH_FILES.txt | 8 - .../data/neqsimtestdatabase/log/log.ctrl | Bin 48 -> 0 bytes .../data/neqsimtestdatabase/log/log6.dat | Bin 1048576 -> 0 bytes .../data/neqsimtestdatabase/log/log76.dat | Bin 1048576 -> 0 bytes .../neqsimtestdatabase/log/logmirror.ctrl | Bin 48 -> 0 bytes .../seg0/README_DO_NOT_TOUCH_FILES.txt | 8 - .../data/neqsimtestdatabase/seg0/c10.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c101.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c111.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c121.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c130.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c141.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c150.dat | Bin 16384 -> 0 bytes .../data/neqsimtestdatabase/seg0/c161.dat | Bin 16384 -> 0 bytes .../data/neqsimtestdatabase/seg0/c171.dat | Bin 16384 -> 0 bytes .../data/neqsimtestdatabase/seg0/c180.dat | Bin 36864 -> 0 bytes .../data/neqsimtestdatabase/seg0/c191.dat | Bin 16384 -> 0 bytes .../data/neqsimtestdatabase/seg0/c1a1.dat | Bin 16384 -> 0 bytes .../data/neqsimtestdatabase/seg0/c1b1.dat | Bin 16384 -> 0 bytes .../data/neqsimtestdatabase/seg0/c1c0.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c1d1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c1e0.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c1f1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c20.dat | Bin 69632 -> 0 bytes .../data/neqsimtestdatabase/seg0/c200.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c211.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c221.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c230.dat | Bin 4399104 -> 0 bytes .../data/neqsimtestdatabase/seg0/c241.dat | Bin 69632 -> 0 bytes .../data/neqsimtestdatabase/seg0/c251.dat | Bin 20480 -> 0 bytes .../data/neqsimtestdatabase/seg0/c260.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c271.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c281.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c290.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c2a1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c2b1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c2c1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c2d0.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c2e1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c2f0.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c300.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c31.dat | Bin 16384 -> 0 bytes .../data/neqsimtestdatabase/seg0/c311.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c321.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c331.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c340.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c351.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c361.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c371.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c380.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c391.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c3a1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c3b1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c3c0.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c3d1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c3e1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c3f1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c400.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c41.dat | Bin 20480 -> 0 bytes .../data/neqsimtestdatabase/seg0/c411.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c421.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c430.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c441.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c451.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c461.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c470.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c481.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c51.dat | Bin 16384 -> 0 bytes .../data/neqsimtestdatabase/seg0/c560.dat | Bin 921600 -> 0 bytes .../data/neqsimtestdatabase/seg0/c580.dat | Bin 20480 -> 0 bytes .../data/neqsimtestdatabase/seg0/c590.dat | Bin 20480 -> 0 bytes .../data/neqsimtestdatabase/seg0/c5a0.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c5b1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c5c0.dat | Bin 12288 -> 0 bytes .../data/neqsimtestdatabase/seg0/c5d1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c5e0.dat | Bin 16384 -> 0 bytes .../data/neqsimtestdatabase/seg0/c5f1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c60.dat | Bin 28672 -> 0 bytes .../data/neqsimtestdatabase/seg0/c600.dat | Bin 249856 -> 0 bytes .../data/neqsimtestdatabase/seg0/c620.dat | Bin 155648 -> 0 bytes .../data/neqsimtestdatabase/seg0/c690.dat | Bin 69632 -> 0 bytes .../data/neqsimtestdatabase/seg0/c6a0.dat | Bin 69632 -> 0 bytes .../data/neqsimtestdatabase/seg0/c6b0.dat | Bin 69632 -> 0 bytes .../data/neqsimtestdatabase/seg0/c6c0.dat | Bin 94208 -> 0 bytes .../data/neqsimtestdatabase/seg0/c6d0.dat | Bin 69632 -> 0 bytes .../data/neqsimtestdatabase/seg0/c6e0.dat | Bin 69632 -> 0 bytes .../data/neqsimtestdatabase/seg0/c6f0.dat | Bin 69632 -> 0 bytes .../data/neqsimtestdatabase/seg0/c700.dat | Bin 94208 -> 0 bytes .../data/neqsimtestdatabase/seg0/c71.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c710.dat | Bin 69632 -> 0 bytes .../data/neqsimtestdatabase/seg0/c790.dat | Bin 16384 -> 0 bytes .../data/neqsimtestdatabase/seg0/c7b0.dat | Bin 69632 -> 0 bytes .../data/neqsimtestdatabase/seg0/c7c0.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c800.dat | Bin 81920 -> 0 bytes .../data/neqsimtestdatabase/seg0/c81.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c810.dat | Bin 1183744 -> 0 bytes .../data/neqsimtestdatabase/seg0/c820.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c831.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c841.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/c90.dat | Bin 266240 -> 0 bytes .../data/neqsimtestdatabase/seg0/ca1.dat | Bin 221184 -> 0 bytes .../data/neqsimtestdatabase/seg0/cb1.dat | Bin 143360 -> 0 bytes .../data/neqsimtestdatabase/seg0/cc0.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/cd1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/ce1.dat | Bin 8192 -> 0 bytes .../data/neqsimtestdatabase/seg0/cf0.dat | Bin 8192 -> 0 bytes .../neqsimtestdatabase/service.properties | 23 - .../README_DO_NOT_TOUCH_FILES.txt | 9 - .../neqsimthermodatabase/derby.properties | 2 - .../log/README_DO_NOT_TOUCH_FILES.txt | 8 - .../data/neqsimthermodatabase/log/log.ctrl | Bin 48 -> 0 bytes .../data/neqsimthermodatabase/log/log6.dat | Bin 1048576 -> 0 bytes .../data/neqsimthermodatabase/log/log76.dat | Bin 1048576 -> 0 bytes .../neqsimthermodatabase/log/logmirror.ctrl | Bin 48 -> 0 bytes .../seg0/README_DO_NOT_TOUCH_FILES.txt | 8 - .../data/neqsimthermodatabase/seg0/c10.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c101.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c111.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c121.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c130.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c141.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c150.dat | Bin 16384 -> 0 bytes .../data/neqsimthermodatabase/seg0/c161.dat | Bin 16384 -> 0 bytes .../data/neqsimthermodatabase/seg0/c171.dat | Bin 16384 -> 0 bytes .../data/neqsimthermodatabase/seg0/c180.dat | Bin 36864 -> 0 bytes .../data/neqsimthermodatabase/seg0/c191.dat | Bin 16384 -> 0 bytes .../data/neqsimthermodatabase/seg0/c1a1.dat | Bin 16384 -> 0 bytes .../data/neqsimthermodatabase/seg0/c1b1.dat | Bin 16384 -> 0 bytes .../data/neqsimthermodatabase/seg0/c1c0.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c1d1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c1e0.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c1f1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c20.dat | Bin 69632 -> 0 bytes .../data/neqsimthermodatabase/seg0/c200.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c211.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c221.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c230.dat | Bin 4399104 -> 0 bytes .../data/neqsimthermodatabase/seg0/c241.dat | Bin 69632 -> 0 bytes .../data/neqsimthermodatabase/seg0/c251.dat | Bin 20480 -> 0 bytes .../data/neqsimthermodatabase/seg0/c260.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c271.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c281.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c290.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c2a1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c2b1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c2c1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c2d0.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c2e1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c2f0.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c300.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c31.dat | Bin 16384 -> 0 bytes .../data/neqsimthermodatabase/seg0/c311.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c321.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c331.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c340.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c351.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c361.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c371.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c380.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c391.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c3a1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c3b1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c3c0.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c3d1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c3e1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c3f1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c400.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c41.dat | Bin 20480 -> 0 bytes .../data/neqsimthermodatabase/seg0/c411.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c421.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c430.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c441.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c451.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c461.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c470.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c481.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c51.dat | Bin 16384 -> 0 bytes .../data/neqsimthermodatabase/seg0/c560.dat | Bin 921600 -> 0 bytes .../data/neqsimthermodatabase/seg0/c580.dat | Bin 20480 -> 0 bytes .../data/neqsimthermodatabase/seg0/c590.dat | Bin 20480 -> 0 bytes .../data/neqsimthermodatabase/seg0/c5a0.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c5b1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c5c0.dat | Bin 12288 -> 0 bytes .../data/neqsimthermodatabase/seg0/c5d1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c5e0.dat | Bin 16384 -> 0 bytes .../data/neqsimthermodatabase/seg0/c5f1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c60.dat | Bin 28672 -> 0 bytes .../data/neqsimthermodatabase/seg0/c600.dat | Bin 249856 -> 0 bytes .../data/neqsimthermodatabase/seg0/c620.dat | Bin 155648 -> 0 bytes .../data/neqsimthermodatabase/seg0/c690.dat | Bin 69632 -> 0 bytes .../data/neqsimthermodatabase/seg0/c6a0.dat | Bin 69632 -> 0 bytes .../data/neqsimthermodatabase/seg0/c6b0.dat | Bin 69632 -> 0 bytes .../data/neqsimthermodatabase/seg0/c6c0.dat | Bin 94208 -> 0 bytes .../data/neqsimthermodatabase/seg0/c6d0.dat | Bin 69632 -> 0 bytes .../data/neqsimthermodatabase/seg0/c6e0.dat | Bin 69632 -> 0 bytes .../data/neqsimthermodatabase/seg0/c6f0.dat | Bin 69632 -> 0 bytes .../data/neqsimthermodatabase/seg0/c700.dat | Bin 94208 -> 0 bytes .../data/neqsimthermodatabase/seg0/c71.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c710.dat | Bin 69632 -> 0 bytes .../data/neqsimthermodatabase/seg0/c790.dat | Bin 16384 -> 0 bytes .../data/neqsimthermodatabase/seg0/c7b0.dat | Bin 69632 -> 0 bytes .../data/neqsimthermodatabase/seg0/c7c0.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c800.dat | Bin 81920 -> 0 bytes .../data/neqsimthermodatabase/seg0/c81.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c810.dat | Bin 1183744 -> 0 bytes .../data/neqsimthermodatabase/seg0/c820.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c831.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c841.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/c90.dat | Bin 266240 -> 0 bytes .../data/neqsimthermodatabase/seg0/ca1.dat | Bin 221184 -> 0 bytes .../data/neqsimthermodatabase/seg0/cb1.dat | Bin 143360 -> 0 bytes .../data/neqsimthermodatabase/seg0/cc0.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/cd1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/ce1.dat | Bin 8192 -> 0 bytes .../data/neqsimthermodatabase/seg0/cf0.dat | Bin 8192 -> 0 bytes .../neqsimthermodatabase/service.properties | 23 - src/main/resources/designdata/Fittings.csv | 11 + .../designdata/MaterialPipeProperties.csv | 3 + .../designdata/MaterialPlateProperties.csv | 3 + src/main/resources/designdata/Packing.csv | 12 + src/main/resources/designdata/TORG.csv | 3 + .../TechnicalRequirements_Material.csv | 4 + .../TechnicalRequirements_Mechanical.csv | 10 + .../TechnicalRequirements_Piping.csv | 9 + .../TechnicalRequirements_Process.csv | 16 + src/test/java/neqsim/NeqSimTest.java | 13 +- .../simulation/ConstantMassExpansionTest.java | 60 + .../ConstantVolumeDepletionTest.java | 82 + .../simulation/DensitySimTest.java | 32 + .../DifferentialLiberationTest.java | 68 + .../simulation/EclipseModel.e300 | 409 + .../simulation/SaturationPressureTest.java | 45 +- .../simulation/SaturationTemperatureTest.java | 128 +- .../simulation/SeparatorTestTest.java | 50 + .../simulation/SlimTubeSimTest.java | 44 + .../simulation/ViscositySimTest.java | 29 + .../simulation/WaxFractionSimTest.java | 57 + .../ChemicalReactionOperationsTest.java | 25 + .../ChemicalReactionFactoryTest.java | 16 + .../ChemicalReactionListTest.java | 23 + .../StratifiedFlowNodeTest.java | 261 + .../StirredCellNodeTest.java | 35 + .../pipeFlowSystem/PipeFlowSystemTest.java | 18 +- .../shipSystem/LNGshipTest.java | 61 + .../packings/PallRingPackingTest.java | 47 + .../packings/RachigRingPackingTest.java | 47 + .../util/example/WettedWall_CO2_water.java | 1 - .../FrictionTheoryViscosityMethodTest.java | 39 +- .../viscosity/PFCTViscosityMethodTest.java | 22 + .../density/CostaldTest.java | 28 + .../util/examples/TPflashTest.java | 154 +- .../util/examples/TPflashWater.java | 58 +- .../util/examples/TPflash_1.java | 98 +- .../util/examples/TestCondensate.java | 95 +- .../examples/TestDiffusionCoefficient.java | 92 +- .../util/examples/TestSolidAdsorption.java | 68 +- .../util/examples/TestSurfaceTenison.java | 168 +- .../util/examples/TestSurfaceTensionOde.java | 66 +- .../ControllerDeviceBaseClassTest.java | 97 + .../CombustionEmissionsCalculatorTest.java | 27 + .../FLowInducedVibrationTest.java | 121 + .../MultiPhaseMeterTest.java | 46 + .../measurementDevice/WellAllocatorTest.java | 15 +- .../measurementDevice/nmVOCTest.java | 131 + .../measurementDevice/pHProbeTest.java | 63 +- .../simpleFlowRegime/SevereSlugTest.java | 26 + .../SystemMechanicalDesignTest.java | 227 + .../absorber/SimpleAbsorberTest.java | 6 +- .../adsorber/SimpleAdsorberTest.java | 8 +- .../compressor/CompressorCalculationTest.java | 230 +- .../compressor/CompressorChartTest.java | 46 +- .../CompressorPropertyProfileTest.java | 105 +- .../compressor/CompressorTest.java | 428 +- .../distillation/DistillationColumnTest.java | 213 + .../heatExchanger/HeatExchangerTest.java | 49 +- .../heatExchanger/HeaterTest.java | 52 + .../manifold/ManifoldTest.java | 90 + .../processEquipment/mixer/MixerTest.java | 39 +- .../pipeline/AdiabaticTwoPhasePipeTest.java | 50 + .../pipeline/BeggsAndBrillsPipeTest.java | 348 + .../pipeline/PipelineTest.java | 71 + .../powerGeneration/GasTurbineTest.java | 92 +- .../processEquipment/pump/PumpChartTest.java | 25 + .../processEquipment/pump/PumpTest.java | 142 +- .../reservoir/SimpleReservoirTest.java | 69 + .../reservoir/WellFlowTest.java | 156 + .../separator/SeparatorTest.java | 20 +- .../splitter/ComponentSplitterTest.java | 174 +- .../processEquipment/stream/StreamTest.java | 107 +- .../stream/VirtualStreamTest.java | 77 + .../processEquipment/util/AdjusterTest.java | 89 + .../processEquipment/util/FlowSetterTest.java | 148 + .../processEquipment/util/GORfitterTest.java | 89 + .../processEquipment/util/MPFMfitterTest.java | 70 + .../util/PressureDropTest.java | 36 + .../util/StreamSaturatorUtilTest.java | 87 + .../valve/ThrottlingValveTest.java | 56 + .../CombinedOilGasFieldTest.java | 90 + .../processSystem/CompressorModule.java | 163 + .../processSystem/GlycolModulesTest.java | 430 + .../processSystem/GlycolRigTest.java | 344 + .../processSystem/MLA_bug_test.java | 364 + .../processSystem/OilGasProcessTest.java | 128 + .../processSystem/OilProcessTest.java | 21 + .../ProcessSystemControllerTest.java | 12 +- .../ProcessSystemRunTransientTest.java | 919 +- .../ProcessSystemSerializationTest.java | 344 + .../processSystem/ProcessSystemTest.java | 773 +- .../processSystem/waterDegasserTest.java | 248 + .../util/example/LNGfilling.java | 76 +- .../util/example/LNGtankfilling.java | 5 +- .../util/example/MasstransferMeOH.java | 138 +- .../util/example/OffshoreProcess3.java | 649 +- .../util/example/OnshoreProcess1.java | 1039 +- .../util/example/TEGdehydrationProcess2.java | 462 +- .../TEGdehydrationProcessDistillation.java | 602 +- .../TEGdehydrationProcessDistillation3.java | 569 +- ...TEGdehydrationProcessDistillationAaHa.java | 866 +- .../TEGdehydrationProcessDistillationGFA.java | 1081 +- .../TEGdehydrationProcessDistillationJS.java | 785 +- .../util/example/TestNeqsim.java | 254 +- .../util/example/TestProcess4.java | 2 +- .../util/example/TestSeparationTrain.java | 249 +- .../util/example/TestSlugcatcher.java | 97 +- .../util/example/TestTransientFlow.java | 211 +- .../util/example/TestTransientFlow2.java | 128 +- .../util/example/WellStreamMixer.java | 4 - .../util/example/compressorTest12.java | 21 +- .../util/example/compressorTest_1.java | 85 +- .../util/example/destillation1.java | 102 +- .../util/example/gasPipeline.java | 2 +- .../util/example/multiThreadTest.java | 240 +- .../util/example/oxygenRemovalWater.java | 13 +- .../util/example/process1Test.java | 2 +- .../util/example/shtokman.java | 116 +- .../util/example/shtokman_MEG.java | 100 +- .../util/example/simpleGasScrubber.java | 74 +- .../util/example/simpleTopSideProcess2.java | 93 +- .../util/example/testGasScrubber.java | 172 +- .../util/monitor/SeparatorResponseTest.java | 64 + .../util/report/FluidCompinentReportTest.java | 21 + .../util/report/FluidReportTest.java | 24 + .../util/report/ReportTest.java | 59 + .../gasQuality/Standard_ISO15403Test.java | 68 + .../gasQuality/Standard_ISO6578Test.java | 85 +- .../gasQuality/Standard_ISO6976Test.java | 54 +- .../Standard_ISO6976_2016_Test.java | 141 + .../oilQuality/Standard_ASTM_D6377Test.java | 52 + .../salesContract/BaseContractTest.java | 73 +- .../datasmoothing/DataSmootherTest.java | 20 + .../java/neqsim/thermo/FluidCreatorTest.java | 28 + .../thermo/atomElement/ElementTest.java | 30 + .../characterization/CharacteriseTest.java | 41 + .../PlusFractionModelTest.java | 148 + .../TBPfractionModelTest.java | 56 + .../neqsim/thermo/component/AmmoniaTest.java | 39 + .../component/ComponentHydrateGFTest.java | 67 +- .../thermo/component/ComponentTest.java | 58 - .../thermo/component/NewComponentTest.java | 119 + .../neqsim/thermo/phase/PhaseBWRSEosTest.java | 25 + .../thermo/phase/PhaseCSPsrkEosTest.java | 25 + .../thermo/phase/PhaseDesmukhMatherTest.java | 25 + .../neqsim/thermo/phase/PhaseDuanSunTest.java | 25 + .../phase/PhaseElectrolyteCPAOldTest.java | 25 + .../thermo/phase/PhaseElectrolyteCPATest.java | 25 + .../phase/PhaseElectrolyteCPAstatoilTest.java | 25 + .../neqsim/thermo/phase/PhaseGENRTLTest.java | 25 + .../phase/PhaseGENRTLmodifiedHVTest.java | 25 + .../phase/PhaseGENRTLmodifiedWSTest.java | 25 + .../thermo/phase/PhaseGERG2004EosTest.java | 9 + .../thermo/phase/PhaseGEUnifacPSRKTest.java | 25 + .../thermo/phase/PhaseGEUnifacTest.java | 25 + .../thermo/phase/PhaseGEUnifacUMRPRUTest.java | 25 + .../thermo/phase/PhaseGEUniquacTest.java | 25 + .../phase/PhaseGEUniquacmodifiedHVTest.java | 9 + .../thermo/phase/PhaseGEWilsonTest.java | 25 + .../neqsim/thermo/phase/PhaseHydrateTest.java | 25 + .../thermo/phase/PhaseKentEisenbergTest.java | 25 + ...odifiedFurstElectrolyteEosMod2004Test.java | 25 + .../PhaseModifiedFurstElectrolyteEosTest.java | 25 + .../thermo/phase/PhasePCSAFTRahmatTest.java | 398 + .../neqsim/thermo/phase/PhasePCSAFTTest.java | 25 + .../neqsim/thermo/phase/PhasePCSAFTaTest.java | 25 + .../neqsim/thermo/phase/PhasePrCPATest.java | 25 + .../neqsim/thermo/phase/PhasePrEosTest.java | 25 + .../thermo/phase/PhasePrEosvolcorTest.java | 25 + .../java/neqsim/thermo/phase/PhaseRKTest.java | 25 + .../PhaseSrkCPA_proceduralMatricesTest.java | 25 + .../thermo/phase/PhaseSrkCPAojAlgoTest.java | 25 + .../thermo/phase/PhaseSrkCPAsOldTest.java | 25 + .../neqsim/thermo/phase/PhaseSrkCPAsTest.java | 25 + .../neqsim/thermo/phase/PhaseSrkEosTest.java | 62 + .../thermo/phase/PhaseSrkPenelouxEosTest.java | 25 + .../neqsim/thermo/phase/PhaseTSTEosTest.java | 25 + .../neqsim/thermo/phase/PhaseTypeTest.java | 17 + .../neqsim/thermo/phase/PhaseUMRCPATest.java | 25 + .../neqsim/thermo/phase/PhaseWaxTest.java | 25 + .../thermo/phase/StateOfMatterTest.java | 55 + .../system/SystemElectrolyteCPATest.java | 154 +- .../system/SystemFurstElectrolyteEosTest.java | 130 +- .../thermo/system/SystemPCSAFTTest.java | 22 + .../neqsim/thermo/system/SystemPrEoSTest.java | 217 + .../neqsim/thermo/system/SystemPrEosTest.java | 162 - .../system/SystemSrkCPAstatoilTest.java | 4 +- .../SystemSrkSchwartzentruberEosTest.java | 4 +- .../system/SystemThermoAddComponentTest.java | 1 - .../SystemThermoSetMolarCompositionTest.java | 177 +- .../thermo/system/SystemThermoTest.java | 121 + .../thermo/system/SystemUMRCPAEoStest.java | 82 +- .../system/SystemUMRPRUMCEosNewTest.java | 106 +- .../thermo/util/example/ActivityCalc.java | 61 +- .../thermo/util/example/AmineFlash.java | 81 +- .../thermo/util/example/BubbleFlash.java | 70 +- .../thermo/util/example/BubbleFlashCPA.java | 122 +- .../thermo/util/example/CricondenbarTest.java | 66 +- .../thermo/util/example/DewPointCurve.java | 145 +- .../thermo/util/example/FlashGasTest.java | 4 +- .../thermo/util/example/FlashOilTest.java | 4 +- .../thermo/util/example/FlashWaterTest.java | 4 +- .../thermo/util/example/FreezeMEGwater.java | 91 +- .../thermo/util/example/FreezingPoint.java | 124 +- .../thermo/util/example/H2Sdistribution.java | 70 +- .../util/example/HeatOfVaporization.java | 46 +- .../util/example/HenryConstantCalc.java | 72 +- .../thermo/util/example/HydrateFlash.java | 308 +- .../thermo/util/example/HydrateFlash2.java | 212 +- .../thermo/util/example/KlabFlashBugTest.java | 4 +- .../neqsim/thermo/util/example/LNGFlash.java | 94 +- .../thermo/util/example/LNGfilling.java | 90 +- .../thermo/util/example/LNGfreezing.java | 104 +- .../util/example/LNGfreezingTestSolid1.java | 94 +- .../neqsim/thermo/util/example/ModelTest.java | 5 +- .../util/example/OsmoticCoefficient.java | 13 +- .../util/example/OsmoticCoefficient_1.java | 100 +- .../thermo/util/example/PS_PH_flash.java | 167 +- .../thermo/util/example/PhaseEnvelope.java | 265 +- .../thermo/util/example/PhaseEnvelope2.java | 48 +- .../util/example/PressureLoadingCurve.java | 108 +- .../util/example/ReactiveDesmukhMather.java | 46 +- .../util/example/ReactiveKentEisenberg.java | 68 +- .../thermo/util/example/ReactiveTPflash.java | 124 +- .../thermo/util/example/ReactiveTPflash2.java | 196 +- .../thermo/util/example/ReadFluidData.java | 66 +- .../thermo/util/example/ReadFluidData2.java | 82 +- .../util/example/ScalePotentialCheck.java | 121 +- .../thermo/util/example/SolidFlash.java | 110 +- .../thermo/util/example/SrkEoSTest.java | 6 +- .../example/SrkOilCharacterizationTest.java | 8 +- .../util/example/SulfureDeposition.java | 274 +- .../thermo/util/example/TPMultiFlash.java | 211 +- .../neqsim/thermo/util/example/TPflash.java | 102 +- .../neqsim/thermo/util/example/TPflash1.java | 78 +- .../neqsim/thermo/util/example/TPflash2.java | 75 +- .../thermo/util/example/TPflashCAPEOPEN.java | 5 +- .../thermo/util/example/TPflashDehyd.java | 373 +- .../neqsim/thermo/util/example/TPflashGR.java | 169 +- .../thermo/util/example/TPflashMembrane.java | 83 +- .../example/TPflashMethanolWaterPropane.java | 55 +- .../thermo/util/example/TPflashTestPablo.java | 124 +- .../thermo/util/example/TVPexample.java | 64 +- .../thermo/util/example/TestCSPsrk.java | 78 +- .../util/example/TestCharacterizationCPA.java | 198 +- .../TestCharacterizationCondensate.java | 183 +- .../TestCharacterizationCondensate1.java | 128 +- .../example/TestElectrolyteCPAstatoil.java | 97 +- .../neqsim/thermo/util/example/TestFlash.java | 582 +- .../thermo/util/example/TestFluidIssues.java | 2 +- .../thermo/util/example/TestGEHenry.java | 52 +- .../thermo/util/example/TestGERG2004EOS.java | 98 +- .../thermo/util/example/TestGERGwater.java | 70 +- .../thermo/util/example/TestISO1982.java | 39 +- .../thermo/util/example/TestMBWR32.java | 54 +- .../thermo/util/example/TestMEGFlash.java | 106 +- .../thermo/util/example/TestNeqSimBug.java | 1 - .../thermo/util/example/TestPCSAFT.java | 107 +- .../thermo/util/example/TestPCSAFT1.java | 141 +- .../thermo/util/example/TestPCSAFT1_1.java | 80 +- .../neqsim/thermo/util/example/TestPSRK.java | 92 +- .../neqsim/thermo/util/example/TestSRKWS.java | 64 +- .../util/example/TestSurfaceTenison.java | 68 +- .../thermo/util/example/TestUMRPRU.java | 162 +- .../thermo/util/example/TestUMRPRUMC.java | 195 +- .../thermo/util/example/TestUNIFAC.java | 84 +- .../thermo/util/example/TestUNIFAC_1.java | 189 +- .../thermo/util/example/TestUniSimsFlash.java | 86 +- .../thermo/util/example/TestVHflash.java | 148 +- .../util/example/TestmercuryTPflash.java | 66 +- .../util/example/VapourPressureTTest.java | 66 +- .../neqsim/thermo/util/example/WaxFlash.java | 106 +- .../longman/Problem15102009LNGfreezing.java | 70 +- .../longman/Problem280809LNGfreezing.java | 68 +- .../Problem280809LNGphaseEnvelope.java | 62 +- .../neqsim/thermo/util/readwrite/A-1.E300 | 434 + .../readwrite/EclipseFluidReadWriteTest.java | 164 +- .../neqsim/thermo/util/readwrite/fluid1.e300 | 424 + .../ThermodynamicOperationsTest.java | 410 +- .../flashOps/Degasser.java | 200 + .../flashOps/PHFlashCPATest.java | 43 + .../flashOps/PHFlashGERG2008Test.java | 76 +- .../flashOps/PHFlashTest.java | 71 +- .../flashOps/PSFlashGERG2008Test.java | 68 +- .../flashOps/RachfordRiceTest.java | 41 + .../flashOps/SaturateWithWaterTest.java | 91 + .../flashOps/TPFlashTest.java | 83 +- .../flashOps/TPFlashTestHighTemp.java | 71 + .../flashOps/TPFlashTestWellFluid.java | 8 +- .../flashOps/TPsolidFlash.java | 89 + .../flashOps/TVFlashTest.java | 60 +- .../flashOps/VUFlashTest.java | 46 + .../flashOps/WaxFlashTest.java | 36 +- .../HydrateInhibitorwtFlashTest.java | 49 + .../bubblePointPressureFlashTest.java | 29 + .../bubblePointTemperatureFlashTest.java | 29 + .../dewPointPressureFlashTest.java | 29 + .../dewPointTemperatureFlashTest.java | 30 + .../PTPhaseEnvelopeTest.java | 178 + .../util/example/CompGradientFlash.java | 82 +- .../util/example/CriticalPointFlash.java | 56 +- .../util/example/MEGwaterComplexFlash.java | 72 +- .../util/example/OLGApropGenerator.java | 92 +- .../util/example/OLGApropGeneratorPH.java | 70 +- .../util/example/PhaseEnvelope.java | 362 +- .../util/example/SolidFlash.java | 76 +- .../util/example/TVflash.java | 72 +- .../util/example/VLSolidTPFLash.java | 118 +- .../util/example/VUflash.java | 70 +- .../util/database/AspenIP21DatabaseTest.java | 29 + .../database/NeqSimContractDataBaseTest.java | 11 + .../util/database/NeqSimDataBaseTest.java | 59 + .../database/NeqSimFluidDataBaseTest.java | 28 + .../util/generator/PropertyGeneratorTest.java | 33 + .../neqsim/util/unit/PressureUnitTest.java | 51 + .../neqsim/util/unit/TemperatureUnitTest.java | 54 + src/test/java/neqsim/util/unit/UnitsTest.java | 29 + src/test/resources/log4j.properties | 21 + .../neqsim/thermodynamicOperations/COMP.csv | 192 + .../neqsim/thermodynamicOperations/INTER.csv | 1367 + .../thermodynamicOperations/neqsimdb.sql | 24113 ++++++++++++++++ .../testcases/TestCase10_I.json | 1 + .../testcases/TestCase10_O.json | 1 + .../testcases/TestCase11_I.json | 1 + .../testcases/TestCase11_O.json | 1 + .../testcases/TestCase13_I.json | 1 + .../testcases/TestCase13_O.json | 1 + .../testcases/TestCase14_I.json | 1 + .../testcases/TestCase14_O.json | 1 + .../testcases/TestCase15_I.json | 1 + .../testcases/TestCase15_O.json | 1 + .../testcases/TestCase16_I.json | 1 + .../testcases/TestCase16_O.json | 1 + .../testcases/TestCase17_I.json | 1 + .../testcases/TestCase17_O.json | 1 + .../testcases/TestCase18_I.json | 1 + .../testcases/TestCase18_O.json | 1 + .../testcases/TestCase19_I.json | 1 + .../testcases/TestCase19_O.json | 1 + .../testcases/TestCase1_I.json | 1 + .../testcases/TestCase1_O.json | 1 + .../testcases/TestCase20_I.json | 1 + .../testcases/TestCase20_O.json | 1 + .../testcases/TestCase21_I.json | 1 + .../testcases/TestCase21_O.json | 1 + .../testcases/TestCase22_I.json | 1 + .../testcases/TestCase22_O.json | 1 + .../testcases/TestCase23_I.json | 1 + .../testcases/TestCase23_O.json | 1 + .../testcases/TestCase24_I.json | 1 + .../testcases/TestCase24_O.json | 1 + .../testcases/TestCase25_I.json | 1 + .../testcases/TestCase25_O.json | 1 + .../testcases/TestCase26_I.json | 1 + .../testcases/TestCase26_O.json | 1 + .../testcases/TestCase27_I.json | 1 + .../testcases/TestCase27_O.json | 1 + .../testcases/TestCase28_I.json | 1 + .../testcases/TestCase28_O.json | 1 + .../testcases/TestCase29_I.json | 1 + .../testcases/TestCase29_O.json | 1 + .../testcases/TestCase2_I.json | 1 + .../testcases/TestCase2_O.json | 1 + .../testcases/TestCase3_I.json | 1 + .../testcases/TestCase3_O.json | 1 + .../testcases/TestCase4_I.json | 1 + .../testcases/TestCase4_O.json | 1 + .../testcases/TestCase5_I.json | 1 + .../testcases/TestCase5_O.json | 1 + .../testcases/TestCase6_I.json | 1 + .../testcases/TestCase6_O.json | 1 + .../testcases/TestCase7_I.json | 1 + .../testcases/TestCase7_O.json | 1 + .../testcases/TestCase8_I.json | 1 + .../testcases/TestCase8_O.json | 1 + .../testcases/TestCase9_I.json | 1 + .../testcases/TestCase9_O.json | 1 + 1590 files changed, 199786 insertions(+), 160701 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/newrelease.md delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/maven_publish.yml delete mode 100644 .github/workflows/pr_test.yml create mode 100644 .github/workflows/publish_javadoc.yml rename .github/workflows/{release.yml => release_to_github_packages.yml} (64%) create mode 100644 .github/workflows/release_with_jars.yml create mode 100644 .github/workflows/verify_build.yml delete mode 100644 .github/workflows/workflow.yml delete mode 100644 CHANGELOG create mode 100644 SECURITY.md create mode 100644 checkstyle_neqsim.xml create mode 100644 docs/wiki/CPA-parameters.xlsm create mode 100644 docs/wiki/NeqSimDatabase.mdb create mode 100644 docs/wiki/neqsimlogocircleflatsmall.png delete mode 100644 eclipse_dictionary.txt create mode 100644 pomJava21.xml create mode 100644 pomJava8.xml delete mode 100644 src/main/java/neqsim/dataPresentation/userInterface.java delete mode 100644 src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/FileWriterBaseClass.java delete mode 100644 src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/FileWriterInterface.java delete mode 100644 src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/onePhaseFileWriter/OnePhaseFileWriter.java delete mode 100644 src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/onePhaseFileWriter/pipeFlowFileWriter/PipeFlowFileWriter.java delete mode 100644 src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/twoPhaseFileWriter/TwoPhaseFileWriter.java delete mode 100644 src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/twoPhaseFileWriter/twoPhasePipeFlowFileWriter/TwoPhasePipeFlowFileWriter.java delete mode 100644 src/main/java/neqsim/fluidMechanics/util/parameterFitting/masstransfer/MassTransferFunction.java delete mode 100644 src/main/java/neqsim/fluidMechanics/util/parameterFitting/masstransfer/TestMassTransfer.java create mode 100644 src/main/java/neqsim/log4j2.properties create mode 100644 src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/Costald.java create mode 100644 src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/temp delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/binarySystemViscosity/grunbergNissanMethod/GrunbergNissanFunction.java delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/binarySystemViscosity/grunbergNissanMethod/TestGrunbergNissanFit.java delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/diffusivity/DiffusivityFunction.java delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/diffusivity/TestDiffusivity.java delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompConductivity/linearLiquidModel/ConductivityFunction.java delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompConductivity/linearLiquidModel/TestConductivityFit.java delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/RacketFunction.java delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/TestRacketFit.java delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/TestRacketFitting.py delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/InfluenceParamGTFunction.java delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/InfluenceParamGTFunctionBinaryData.java delete mode 100644 src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/TestInfluenceParamGTFunction.java create mode 100644 src/main/java/neqsim/processSimulation/measurementDevice/CombustionEmissionsCalculator.java create mode 100644 src/main/java/neqsim/processSimulation/measurementDevice/CompressorMonitor.java create mode 100644 src/main/java/neqsim/processSimulation/measurementDevice/FlowInducedVibrationAnalyser.java create mode 100644 src/main/java/neqsim/processSimulation/measurementDevice/NMVOCAnalyser.java create mode 100644 src/main/java/neqsim/processSimulation/measurementDevice/StreamMeasurementDeviceBaseClass.java create mode 100644 src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/FluidSevereSlug.java create mode 100644 src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/Pipe.java create mode 100644 src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugAnalyser.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartGenerator.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/manifold/Manifold.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/pipeline/PipeBeggsAndBrills.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirCVDsim.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirDiffLibsim.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirTPsim.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/stream/VirtualStream.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/util/FlowRateAdjuster.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/util/FlowSetter.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/util/MPFMfitter.java create mode 100644 src/main/java/neqsim/processSimulation/processEquipment/util/PressureDrop.java create mode 100644 src/main/java/neqsim/processSimulation/processSystem/ProcessModule.java delete mode 100644 src/main/java/neqsim/processSimulation/util/monitor/Fluid.java create mode 100644 src/main/java/neqsim/processSimulation/util/monitor/FluidComponentResponse.java create mode 100644 src/main/java/neqsim/processSimulation/util/monitor/FluidResponse.java create mode 100644 src/main/java/neqsim/processSimulation/util/monitor/Value.java create mode 100644 src/main/java/neqsim/processSimulation/util/monitor/ValveResponse.java create mode 100644 src/main/java/neqsim/processSimulation/util/report/Report.java create mode 100644 src/main/java/neqsim/standards/gasQuality/Standard_ISO15403.java create mode 100644 src/main/java/neqsim/standards/gasQuality/Standard_ISO6974.java delete mode 100644 src/main/java/neqsim/statistics/dataAnalysis/dataSmoothing/DataSmoothor.java create mode 100644 src/main/java/neqsim/statistics/dataanalysis/datasmoothing/DataSmoother.java delete mode 100644 src/main/java/neqsim/statistics/test.java create mode 100644 src/main/java/neqsim/thermo/FluidCreator.java delete mode 100644 src/main/java/neqsim/thermo/phase/PhaseEosInterface_1.java create mode 100644 src/main/java/neqsim/thermo/phase/PhaseType.java create mode 100644 src/main/java/neqsim/thermo/phase/StateOfMatter.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/CO2_MDEA_methane.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/IonicInteractionParameterFittingFunctionCH4.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/TestIonicInteractionParameterFittingCH4.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4MDEA/BinaryHVParameterFittingFunction_CH4.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4MDEA/TestBinaryHVParameterFittingToEquilibriumData_CH4.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/BinaryHVParameterFittingFunction_N2O.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/N2O.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/TestBinaryHVParameterFittingToEquilibriumData_N2O.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2Water/Diamond.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2Water/Jamal.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/CO2_MDEA.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/CO2_MDEA_speciation.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/IonicInteractionParameterFittingFunction_CO2.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/TestIonicInteractionParameterFitting_CO2.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/RackettZ.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/TestRackettZ.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/density.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/H2S_Water.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/BinaryHVParameterFittingFunction_MDEA.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/TestBinaryHVParameterFitting_MDEA.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/Water_MDEA.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/Water_MDEA1.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/Acids.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/IonicInteractionParameterFittingFunctionAcid.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/TestIonicInteractionParameterFittingAcid.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/BinaryEosFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/BinaryCPAparameterFitToActivityCoefficientFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToDewPointData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToSolubilityData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToSolubilityData_Vap.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/EosInteractionParameterFittingFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestBinaryCPAfitToActivityCoefficientDB.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToDewPointData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityData_Lucia.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityGlycolHC.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestEosInteractionParameterFitting.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestEosParameterFittingToMercurySolubility.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestParameterFittingToSolubilityDataEinar.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToDewPointData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToEquilibriumData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToSolubilityData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToSolubilityData2.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVparameterFitToActivityCoefficientFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryWSParameterFittingToSolubilityData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/FreezeSolidFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/HuronVidalFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToDewPointData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToEquilibriumData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityDataCO2AcOH.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData_Lucia.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData_LuciaPropane.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityDatawaterCO2.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivity.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityCPA.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityCoefficientDB.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityUNIFAC.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryUMRPRUFittingToSolubilityData.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryWSParameterFittingToSolubilityData_Lucia.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestSolidAntoine.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/UMRPRUFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/WongSandlerFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/freezingFit/SolidComplexFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/freezingFit/TestSolidComplexFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCH4.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCH4_1.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCo2nacl.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionPiperazine.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_1.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_CO2.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_Sleipner.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_Sleipnernoacid.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingCH4.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingCo2nacl.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingMDEAPiperazine.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingPiperazine.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting_Sleipner.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting_Sleipnernoacid.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/AntoineSolidFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/AntoineSolidFunctionS8.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/TestSolidAntoine.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/TestSolidAntoine_S8.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/CharacterisationParameters/CharacterisationFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/CharacterisationParameters/TestCharacterisation.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/TestBinaryEosParameterFit.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/AcentricFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/AcentricFunctionScwartzentruber.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/ClassicAcentricDens.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/ClassicAcentricFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/MathiasCopeman.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/MathiasCopemanToDewPoint.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestAcentric.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestAcentricSchwartzentruber.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentric.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentricPlusDens.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentricPlusDens_1.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestFitToAntoineVapPres.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestMathiasCopeman.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestMathiasCopemanToDewPoint.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestTwuCoon.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TwuCoon.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionCp.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionDens.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionStatoil.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA2.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA2_1.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPAStatoil.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA_TEG.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA_ice.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction_Activity.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction_Density.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/TestFurstIonicParameterFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/hydrate/HydrateFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/hydrate/TestHydrateFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/specificHeat/SpecificHeatCpFunction.java delete mode 100644 src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/specificHeat/TestCp.java create mode 100644 src/main/java/neqsim/thermo/util/readwrite/TablePrinter.java create mode 100644 src/main/java/neqsim/thermodynamicOperations/flashOps/CalcIonicComposition.java create mode 100644 src/main/java/neqsim/thermodynamicOperations/flashOps/RachfordRice.java create mode 100644 src/main/java/neqsim/thermodynamicOperations/flashOps/TVfractionFlash.java delete mode 100644 src/main/java/neqsim/thermodynamicOperations/flashOps/calcIonicComposition.java create mode 100644 src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/ConstantDutyFlashInterface.java delete mode 100644 src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyFlashInterface.java create mode 100644 src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeNew2.java create mode 100644 src/main/java/neqsim/util/database/NeqSimContractDataBase.java create mode 100644 src/main/java/neqsim/util/database/NeqSimProcessDesignDataBase.java delete mode 100644 src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java create mode 100644 src/main/java/neqsim/util/exception/InvalidOutputException.java create mode 100644 src/main/java/neqsim/util/exception/NotImplementedException.java create mode 100644 src/main/java/neqsim/util/unit/Units.java create mode 100644 src/main/resources/commercial/GASCONTRACTSPECIFICATIONS.csv create mode 100644 src/main/resources/data/AdsorptionParameters.csv create mode 100644 src/main/resources/data/COMP.csv create mode 100644 src/main/resources/data/COMPSALT.csv create mode 100644 src/main/resources/data/INTER.csv create mode 100644 src/main/resources/data/ISO6976constants.csv create mode 100644 src/main/resources/data/ISO6976constants2016.csv create mode 100644 src/main/resources/data/MBWR32param.csv create mode 100644 src/main/resources/data/PIPEDATA.csv create mode 100644 src/main/resources/data/REACTIONDATA.csv create mode 100644 src/main/resources/data/ReactionKSPdata.csv create mode 100644 src/main/resources/data/STOCCOEFDATA.csv create mode 100644 src/main/resources/data/UNIFACGroupParam.csv create mode 100644 src/main/resources/data/UNIFACInterParam.csv create mode 100644 src/main/resources/data/UNIFACInterParamA_UMR.csv create mode 100644 src/main/resources/data/UNIFACInterParamA_UMRMC.csv create mode 100644 src/main/resources/data/UNIFACInterParamB.csv create mode 100644 src/main/resources/data/UNIFACInterParamB_UMR.csv create mode 100644 src/main/resources/data/UNIFACInterParamB_UMRMC.csv create mode 100644 src/main/resources/data/UNIFACInterParamC.csv create mode 100644 src/main/resources/data/UNIFACInterParamC_UMR.csv create mode 100644 src/main/resources/data/UNIFACInterParamC_UMRMC.csv create mode 100644 src/main/resources/data/UNIFACcomp.csv create mode 100644 src/main/resources/data/UNIFACcompUMRPRU.csv delete mode 100644 src/main/resources/data/derby.properties create mode 100644 src/main/resources/data/element.csv delete mode 100644 src/main/resources/data/neqsimtestdatabase/README_DO_NOT_TOUCH_FILES.txt delete mode 100644 src/main/resources/data/neqsimtestdatabase/derby.properties delete mode 100644 src/main/resources/data/neqsimtestdatabase/log/README_DO_NOT_TOUCH_FILES.txt delete mode 100644 src/main/resources/data/neqsimtestdatabase/log/log.ctrl delete mode 100644 src/main/resources/data/neqsimtestdatabase/log/log6.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/log/log76.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/log/logmirror.ctrl delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/README_DO_NOT_TOUCH_FILES.txt delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c10.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c101.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c111.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c121.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c130.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c141.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c150.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c161.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c171.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c180.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c191.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c1a1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c1b1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c1c0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c1d1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c1e0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c1f1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c20.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c200.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c211.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c221.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c230.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c241.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c251.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c260.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c271.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c281.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c290.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c2a1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c2b1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c2c1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c2d0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c2e1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c2f0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c300.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c31.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c311.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c321.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c331.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c340.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c351.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c361.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c371.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c380.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c391.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c3a1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c3b1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c3c0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c3d1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c3e1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c3f1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c400.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c41.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c411.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c421.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c430.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c441.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c451.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c461.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c470.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c481.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c51.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c560.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c580.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c590.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c5a0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c5b1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c5c0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c5d1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c5e0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c5f1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c60.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c600.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c620.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c690.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c6a0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c6b0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c6c0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c6d0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c6e0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c6f0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c700.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c71.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c710.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c790.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c7b0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c7c0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c800.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c81.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c810.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c820.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c831.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c841.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/c90.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/ca1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/cb1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/cc0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/cd1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/ce1.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/seg0/cf0.dat delete mode 100644 src/main/resources/data/neqsimtestdatabase/service.properties delete mode 100644 src/main/resources/data/neqsimthermodatabase/README_DO_NOT_TOUCH_FILES.txt delete mode 100644 src/main/resources/data/neqsimthermodatabase/derby.properties delete mode 100644 src/main/resources/data/neqsimthermodatabase/log/README_DO_NOT_TOUCH_FILES.txt delete mode 100644 src/main/resources/data/neqsimthermodatabase/log/log.ctrl delete mode 100644 src/main/resources/data/neqsimthermodatabase/log/log6.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/log/log76.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/log/logmirror.ctrl delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/README_DO_NOT_TOUCH_FILES.txt delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c10.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c101.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c111.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c121.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c130.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c141.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c150.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c161.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c171.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c180.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c191.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c1a1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c1b1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c1c0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c1d1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c1e0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c1f1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c20.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c200.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c211.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c221.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c230.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c241.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c251.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c260.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c271.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c281.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c290.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c2a1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c2b1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c2c1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c2d0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c2e1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c2f0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c300.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c31.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c311.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c321.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c331.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c340.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c351.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c361.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c371.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c380.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c391.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c3a1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c3b1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c3c0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c3d1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c3e1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c3f1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c400.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c41.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c411.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c421.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c430.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c441.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c451.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c461.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c470.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c481.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c51.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c560.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c580.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c590.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c5a0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c5b1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c5c0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c5d1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c5e0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c5f1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c60.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c600.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c620.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c690.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c6a0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c6b0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c6c0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c6d0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c6e0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c6f0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c700.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c71.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c710.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c790.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c7b0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c7c0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c800.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c81.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c810.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c820.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c831.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c841.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/c90.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/ca1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/cb1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/cc0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/cd1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/ce1.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/seg0/cf0.dat delete mode 100644 src/main/resources/data/neqsimthermodatabase/service.properties create mode 100644 src/main/resources/designdata/Fittings.csv create mode 100644 src/main/resources/designdata/MaterialPipeProperties.csv create mode 100644 src/main/resources/designdata/MaterialPlateProperties.csv create mode 100644 src/main/resources/designdata/Packing.csv create mode 100644 src/main/resources/designdata/TORG.csv create mode 100644 src/main/resources/designdata/TechnicalRequirements_Material.csv create mode 100644 src/main/resources/designdata/TechnicalRequirements_Mechanical.csv create mode 100644 src/main/resources/designdata/TechnicalRequirements_Piping.csv create mode 100644 src/main/resources/designdata/TechnicalRequirements_Process.csv create mode 100644 src/test/java/neqsim/PVTsimulation/simulation/ConstantMassExpansionTest.java create mode 100644 src/test/java/neqsim/PVTsimulation/simulation/ConstantVolumeDepletionTest.java create mode 100644 src/test/java/neqsim/PVTsimulation/simulation/DensitySimTest.java create mode 100644 src/test/java/neqsim/PVTsimulation/simulation/DifferentialLiberationTest.java create mode 100644 src/test/java/neqsim/PVTsimulation/simulation/EclipseModel.e300 create mode 100644 src/test/java/neqsim/PVTsimulation/simulation/SeparatorTestTest.java create mode 100644 src/test/java/neqsim/PVTsimulation/simulation/SlimTubeSimTest.java create mode 100644 src/test/java/neqsim/PVTsimulation/simulation/ViscositySimTest.java create mode 100644 src/test/java/neqsim/PVTsimulation/simulation/WaxFractionSimTest.java create mode 100644 src/test/java/neqsim/chemicalReactions/ChemicalReactionOperationsTest.java create mode 100644 src/test/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionFactoryTest.java create mode 100644 src/test/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionListTest.java create mode 100644 src/test/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/StratifiedFlowNodeTest.java create mode 100644 src/test/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseStirredCellNode/StirredCellNodeTest.java create mode 100644 src/test/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/shipSystem/LNGshipTest.java create mode 100644 src/test/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PallRingPackingTest.java create mode 100644 src/test/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/RachigRingPackingTest.java create mode 100644 src/test/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodTest.java create mode 100644 src/test/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/CostaldTest.java create mode 100644 src/test/java/neqsim/processSimulation/controllerDevice/ControllerDeviceBaseClassTest.java create mode 100644 src/test/java/neqsim/processSimulation/measurementDevice/CombustionEmissionsCalculatorTest.java create mode 100644 src/test/java/neqsim/processSimulation/measurementDevice/FLowInducedVibrationTest.java create mode 100644 src/test/java/neqsim/processSimulation/measurementDevice/MultiPhaseMeterTest.java create mode 100644 src/test/java/neqsim/processSimulation/measurementDevice/nmVOCTest.java create mode 100644 src/test/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugTest.java create mode 100644 src/test/java/neqsim/processSimulation/mechanicalDesign/SystemMechanicalDesignTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumnTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/heatExchanger/HeaterTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/manifold/ManifoldTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticTwoPhasePipeTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/pipeline/BeggsAndBrillsPipeTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/pipeline/PipelineTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/pump/PumpChartTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/reservoir/SimpleReservoirTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/reservoir/WellFlowTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/stream/VirtualStreamTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/util/AdjusterTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/util/FlowSetterTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/util/GORfitterTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/util/MPFMfitterTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/util/PressureDropTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtilTest.java create mode 100644 src/test/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValveTest.java create mode 100644 src/test/java/neqsim/processSimulation/processSystem/CombinedOilGasFieldTest.java create mode 100644 src/test/java/neqsim/processSimulation/processSystem/CompressorModule.java create mode 100644 src/test/java/neqsim/processSimulation/processSystem/GlycolModulesTest.java create mode 100644 src/test/java/neqsim/processSimulation/processSystem/GlycolRigTest.java create mode 100644 src/test/java/neqsim/processSimulation/processSystem/MLA_bug_test.java create mode 100644 src/test/java/neqsim/processSimulation/processSystem/OilGasProcessTest.java create mode 100644 src/test/java/neqsim/processSimulation/processSystem/OilProcessTest.java create mode 100644 src/test/java/neqsim/processSimulation/processSystem/ProcessSystemSerializationTest.java create mode 100644 src/test/java/neqsim/processSimulation/processSystem/waterDegasserTest.java create mode 100644 src/test/java/neqsim/processSimulation/util/monitor/SeparatorResponseTest.java create mode 100644 src/test/java/neqsim/processSimulation/util/report/FluidCompinentReportTest.java create mode 100644 src/test/java/neqsim/processSimulation/util/report/FluidReportTest.java create mode 100644 src/test/java/neqsim/processSimulation/util/report/ReportTest.java create mode 100644 src/test/java/neqsim/standards/gasQuality/Standard_ISO15403Test.java create mode 100644 src/test/java/neqsim/standards/gasQuality/Standard_ISO6976_2016_Test.java create mode 100644 src/test/java/neqsim/standards/oilQuality/Standard_ASTM_D6377Test.java create mode 100644 src/test/java/neqsim/statistics/dataanalysis/datasmoothing/DataSmootherTest.java create mode 100644 src/test/java/neqsim/thermo/FluidCreatorTest.java create mode 100644 src/test/java/neqsim/thermo/atomElement/ElementTest.java create mode 100644 src/test/java/neqsim/thermo/characterization/CharacteriseTest.java create mode 100644 src/test/java/neqsim/thermo/characterization/PlusFractionModelTest.java create mode 100644 src/test/java/neqsim/thermo/characterization/TBPfractionModelTest.java create mode 100644 src/test/java/neqsim/thermo/component/AmmoniaTest.java delete mode 100644 src/test/java/neqsim/thermo/component/ComponentTest.java create mode 100644 src/test/java/neqsim/thermo/component/NewComponentTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseBWRSEosTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseCSPsrkEosTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseDesmukhMatherTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseDuanSunTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPAOldTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPATest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPAstatoilTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseGENRTLTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseGENRTLmodifiedHVTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseGENRTLmodifiedWSTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseGERG2004EosTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseGEUnifacPSRKTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseGEUnifacTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRUTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseGEUniquacTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseGEUniquacmodifiedHVTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseGEWilsonTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseHydrateTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseKentEisenbergTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosMod2004Test.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhasePCSAFTRahmatTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhasePCSAFTTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhasePCSAFTaTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhasePrCPATest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhasePrEosTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhasePrEosvolcorTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseRKTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseSrkCPA_proceduralMatricesTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseSrkCPAojAlgoTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseSrkCPAsOldTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseSrkCPAsTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseSrkEosTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseSrkPenelouxEosTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseTSTEosTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseTypeTest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseUMRCPATest.java create mode 100644 src/test/java/neqsim/thermo/phase/PhaseWaxTest.java create mode 100644 src/test/java/neqsim/thermo/phase/StateOfMatterTest.java create mode 100644 src/test/java/neqsim/thermo/system/SystemPCSAFTTest.java create mode 100644 src/test/java/neqsim/thermo/system/SystemPrEoSTest.java delete mode 100644 src/test/java/neqsim/thermo/system/SystemPrEosTest.java create mode 100644 src/test/java/neqsim/thermo/system/SystemThermoTest.java create mode 100644 src/test/java/neqsim/thermo/util/readwrite/A-1.E300 create mode 100644 src/test/java/neqsim/thermo/util/readwrite/fluid1.e300 create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/Degasser.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashCPATest.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/RachfordRiceTest.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/SaturateWithWaterTest.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTestHighTemp.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/TPsolidFlash.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/VUFlashTest.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorwtFlashTest.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlashTest.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureFlashTest.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointPressureFlashTest.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlashTest.java create mode 100644 src/test/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/PTPhaseEnvelopeTest.java create mode 100644 src/test/java/neqsim/util/database/AspenIP21DatabaseTest.java create mode 100644 src/test/java/neqsim/util/database/NeqSimContractDataBaseTest.java create mode 100644 src/test/java/neqsim/util/database/NeqSimDataBaseTest.java create mode 100644 src/test/java/neqsim/util/database/NeqSimFluidDataBaseTest.java create mode 100644 src/test/java/neqsim/util/generator/PropertyGeneratorTest.java create mode 100644 src/test/java/neqsim/util/unit/PressureUnitTest.java create mode 100644 src/test/java/neqsim/util/unit/TemperatureUnitTest.java create mode 100644 src/test/java/neqsim/util/unit/UnitsTest.java create mode 100644 src/test/resources/log4j.properties create mode 100755 src/test/resources/neqsim/thermodynamicOperations/COMP.csv create mode 100755 src/test/resources/neqsim/thermodynamicOperations/INTER.csv create mode 100644 src/test/resources/neqsim/thermodynamicOperations/neqsimdb.sql create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase10_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase10_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase11_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase11_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase13_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase13_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase14_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase14_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase15_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase15_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase16_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase16_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase17_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase17_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase18_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase18_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase19_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase19_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase1_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase1_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase20_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase20_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase21_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase21_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase22_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase22_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase23_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase23_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase24_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase24_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase25_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase25_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase26_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase26_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase27_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase27_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase28_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase28_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase29_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase29_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase2_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase2_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase3_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase3_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase4_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase4_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase5_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase5_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase6_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase6_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase7_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase7_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase8_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase8_O.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase9_I.json create mode 100755 src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase9_O.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 5397f69ac2..b334c06ca8 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -17,9 +17,12 @@ RUN if [ "${INSTALL_MAVEN}" = "true" ]; then su vscode -c "umask 0002 && . /usr/ ARG NODE_VERSION="none" RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi +ENV JAVA_HOME /usr/lib/jvm/msopenjdk-current/ +RUN export JAVA_HOME + # [Optional] Uncomment this section to install additional OS packages. # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ # && apt-get -y install --no-install-recommends # [Optional] Uncomment this line to install global node packages. -# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 \ No newline at end of file +# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index afbdff8c77..af7f782aa4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -8,55 +8,47 @@ // Update the VARIANT arg to pick a Java version: 11, 17 // Append -bullseye or -buster to pin to an OS version. // Use the -bullseye variants on local arm64/Apple Silicon. - "VARIANT": "11-bullseye", + "VARIANT": "11", // Options "INSTALL_MAVEN": "true", "INSTALL_GRADLE": "false", "NODE_VERSION": "lts/*" } }, - // Set *default* container specific settings.json values on container create. - //"settings": { - // "java.home": "/docker-java-home" - //}, - "settings": { - "java.configuration.updateBuildConfiguration": "interactive", - "[java]": { - "editor.defaultFormatter": "redhat.java", - "editor.formatOnSave": true, - "editor.tabSize": 2, - "editor.insertSpaces": true, - "editor.detectIndentation": false - }, - "java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml", - "java.saveActions.organizeImports": true, - "editor.tabSize": 2, - "editor.insertSpaces": true, - "editor.detectIndentation": false, - "java.checkstyle.version": "10.3", - "java.checkstyle.configuration": "https://raw.githubusercontent.com/checkstyle/checkstyle/master/src/main/resources/google_checks.xml" - }, - - -// Add the IDs of extensions you want installed when the container is created. -"extensions": [ - "vscjava.vscode-java-pack", - "ms-vscode.test-adapter-converter", - "shengchen.vscode-checkstyle" -] - - -// Use 'forwardPorts' to make a list of ports inside the container available locally. -// "forwardPorts": [], - -// Use 'postCreateCommand' to run commands after the container is created. -// "postCreateCommand": "java -version", - -// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. -//"remoteUser": "vscode", -//"features": { -// "github-cli": "latest" -//} -} - + "customizations": { + "vscode": { + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "vscjava.vscode-java-pack", + "ms-vscode.test-adapter-converter", + "shengchen.vscode-checkstyle", + "mechatroner.rainbow-csv", + "redhat.vscode-xml", + "vscjava.vscode-java-test" + ], + "settings": { + "java.configuration.updateBuildConfiguration": "interactive", + "[java]": { + "editor.defaultFormatter": "redhat.java", + "editor.formatOnSave": true, + "editor.tabSize": 2, + "editor.insertSpaces": true, + "editor.detectIndentation": false + }, + "java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml", + "java.saveActions.organizeImports": true, + "java.checkstyle.version": "10.15.0", + "java.checkstyle.configuration": "${workspaceFolder}/checkstyle_neqsim.xml", + "[xml]": { + "editor.tabSize": 4, + "editor.insertSpaces": false + }, + "[json]": { + "editor.tabSize": 4, + "editor.insertSpaces": true + } + } + } + } +} \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/newrelease.md b/.github/ISSUE_TEMPLATE/newrelease.md new file mode 100644 index 0000000000..524129419c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/newrelease.md @@ -0,0 +1,11 @@ +--- +name: New release +about: Prepare for new release +title: '' +labels: '' +assignees: '' + +--- + +**Why do we need a new release? Please describe.** +... diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 9cbfd48033..0000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Build maven - -on: - push: - branches: [ master ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v1 - - name: Set up JDK 11 - uses: actions/setup-java@v1 - with: - java-version: 11 - - name: Build with Maven - run: mvn -B package --file pom.xml - # - run: mkdir staging && cp target/*.jar staging - # - uses: actions/upload-artifact@v2 - # with: - # name: jarfiles - # path: staging diff --git a/.github/workflows/maven_publish.yml b/.github/workflows/maven_publish.yml new file mode 100644 index 0000000000..fb84743190 --- /dev/null +++ b/.github/workflows/maven_publish.yml @@ -0,0 +1,28 @@ +name: Publish package to the Maven Central Repository +on: + workflow_dispatch: + release: + types: [published] +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Maven Central Repository + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + server-id: central + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE + - name: Set version + run: mvn versions:set -DnewVersion=${{ github.event.release.tag_name }} + - name: Publish package + run: mvn -P release --batch-mode deploy -DskipTests + env: + MAVEN_USERNAME: ${{ secrets.CENTRAL_TOKEN_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.CENTRAL_TOKEN_PASSWORD }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }} diff --git a/.github/workflows/pr_test.yml b/.github/workflows/pr_test.yml deleted file mode 100644 index 72d3329360..0000000000 --- a/.github/workflows/pr_test.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Pull request to master, test - -on: - pull_request: - branches: [ master ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v1 - - name: Set up JDK 11 - uses: actions/setup-java@v1 - with: - java-version: 11 - - name: Test with Maven - run: mvn -B test --file pom.xml diff --git a/.github/workflows/publish_javadoc.yml b/.github/workflows/publish_javadoc.yml new file mode 100644 index 0000000000..dd19781bbb --- /dev/null +++ b/.github/workflows/publish_javadoc.yml @@ -0,0 +1,21 @@ +name: Deploy Javadoc + +on: + workflow_dispatch: + release: + types: [published] + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: write # if you have a protection rule on your repository, you'll need to give write permission to the workflow. + steps: + - name: Deploy JavaDoc 🚀 + uses: MathieuSoysal/Javadoc-publisher.yml@v2.5.0 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + javadoc-branch: javadoc + java-version: 17 + target-folder: javadoc # url will be https://equinor.github.io/neqsim/javadoc + project: maven diff --git a/.github/workflows/release.yml b/.github/workflows/release_to_github_packages.yml similarity index 64% rename from .github/workflows/release.yml rename to .github/workflows/release_to_github_packages.yml index 58dd48b758..2d2045fe03 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release_to_github_packages.yml @@ -1,22 +1,24 @@ -name: Release to Github Packages +name: Release to Github Packages on: + workflow_dispatch: push: - tags: - - v* + branches: + - release/* jobs: build: - runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 - name: Set up JDK 11 - uses: actions/setup-java@v1 + uses: actions/setup-java@v4 with: java-version: 11 - - name: Get the version + distribution: 'temurin' + cache: 'maven' + - name: Get the version number from the pushed tag id: get_version run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/} - name: Deploy to Github Package Registry diff --git a/.github/workflows/release_with_jars.yml b/.github/workflows/release_with_jars.yml new file mode 100644 index 0000000000..996ccdea31 --- /dev/null +++ b/.github/workflows/release_with_jars.yml @@ -0,0 +1,168 @@ +name: Create release (draft) +# Workflow is triggered when any pom-file is updated in master-branch +# If both pom-files have the same version number it +# - builds NeqSim-jars both in Java 8 and Java 11 +# - creates a new release and uploads the jars as artifacts +# - makes a new branch in neqsimpython and updates the jar-files used there. + +on: + workflow_dispatch: + push: + branches: + - master + - main + - release/* + paths: + - 'pom*.xml' + +jobs: + get_versions: + name: Get version numbers from pom-files + runs-on: ubuntu-latest + + outputs: + version_8: ${{ steps.java-8-fix.outputs.version }} + version: ${{ steps.java.outputs.version }} + + steps: + - name: Check out neqsim java project + uses: actions/checkout@v4 + - name: Get version number for pomJava8.xml + id: java-8 + uses: JActions/maven-version@v1.2.0 + with: + pom: ./pomJava8.xml + - name: Get version number for pom.xml + id: java + uses: JActions/maven-version@v1.2.0 + with: + pom: ./pom.xml + - name: Fix java 8 version number + id: java-8-fix + run: echo "version=$(echo ${{ steps.java-8.outputs.version }} | cut -f 1 -d "-")" >> $GITHUB_OUTPUT + + compile_java_8: + name: Build Neqsim ${{ needs.get_versions.outputs.version_8 }} with java 8 + needs: get_versions + + if: ${{ needs.get_versions.outputs.version_8 == needs.get_versions.outputs.version }} + runs-on: ubuntu-latest + + steps: + - name: Check out neqsim java project + uses: actions/checkout@v4 + - name: Set up JDK 8 environment + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '8' + cache: 'maven' + - name: Build java 8 version of Neqsim ${{ needs.get_versions.outputs.version_8 }} with Maven + run: mvn -B package --file pomJava8.xml + - name: Copy jar file to staging + run: mkdir staging && cp target/neqsim*Java8.jar staging + - uses: actions/upload-artifact@v3 + with: + name: jarfiles + path: staging + + compile_java_11: + name: Build Neqsim ${{ needs.get_versions.outputs.version }} with java 11 + needs: get_versions + + if: ${{ needs.get_versions.outputs.version_8 == needs.get_versions.outputs.version }} + runs-on: ubuntu-latest + + steps: + - name: Check out neqsim java project + uses: actions/checkout@v4 + - name: Set up JDK 11 environment + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '11' + cache: 'maven' + - name: Build java 11 version with Maven + run: mvn -B package --file pom.xml + - name: Copy jar file to staging + run: mkdir staging && cp target/neqsim*.jar staging + - uses: actions/upload-artifact@v3 + with: + name: jarfiles + path: staging + + compile_java_21: + name: Build Neqsim ${{ needs.get_versions.outputs.version }} with java 21 + needs: get_versions + + if: ${{ needs.get_versions.outputs.version_8 == needs.get_versions.outputs.version }} + runs-on: ubuntu-latest + + steps: + - name: Check out neqsim java project + uses: actions/checkout@v4 + - name: Set up JDK 21 environment + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '21' + cache: 'maven' + - name: Build java 21 version with Maven + run: mvn -B package --file pomJava21.xml + - name: Rename files + run: cd target && find . -type f -name "neqsim-*.jar" -exec sh -c 'mv -f $0 ${0%.jar}-Java21.jar' {} \; && cd .. + - name: Copy jar file to staging + run: mkdir staging && cp target/neqsim*Java21.jar staging + - uses: actions/upload-artifact@v3 + with: + name: jarfiles + path: staging + + create_release: + name: Create release v${{ needs.get_versions.outputs.version_8 }} + runs-on: ubuntu-latest + needs: [get_versions, compile_java_8, compile_java_11] + + steps: + - name: Download jar files from artifacts + uses: actions/download-artifact@v3.0.1 + with: + name: jarfiles + + - name: Create release v${{ needs.get_versions.outputs.version_8 }} + uses: ncipollo/release-action@v1.11.2 + with: + name: NeqSim ${{ needs.get_versions.outputs.version_8 }} + tag: v${{ needs.get_versions.outputs.version_8 }} + draft: true + generateReleaseNotes: true + skipIfReleaseExists: true + artifactErrorsFailBuild: true + artifacts: "*.jar" + artifactContentType: application/java-archive + + # # Needs to delete the old jars manually + # - run: mkdir lib && cp *.jar lib/ + # - run: cd lib && mkdir libj8 && mv *Java8.jar libj8/ && cd .. + + # - name: Create release branch in neqsimpython repo + # uses: GuillaumeFalourd/create-other-repo-branch-action@v1.5 + # with: + # repository_owner: Equinor + # repository_name: neqsimpython + # new_branch_name: NeqSim-jars-updated-${{ needs.get_versions.outputs.version_8 }} + # ssh_deploy_key: ${{ secrets.SSH_DEPLOY_KEY }} + + # - name: Push directory to another repository + # uses: cpina/github-action-push-to-another-repository@v1.5.1 + # env: + # SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }} + # with: + # source-directory: 'lib' + # destination-github-username: 'equinor' + # destination-repository-name: 'neqsimpython' + # user-email: asmf@equinor.com + # target-branch: NeqSim-jars-updated-${{ needs.get_versions.outputs.version_8 }} + # target-directory: neqsim/lib + # commit_message: 'chore: updated jar-files' + diff --git a/.github/workflows/verify_build.yml b/.github/workflows/verify_build.yml new file mode 100644 index 0000000000..11d0c38376 --- /dev/null +++ b/.github/workflows/verify_build.yml @@ -0,0 +1,70 @@ +name: Run build, test and javadoc + +on: + workflow_dispatch: + push: + branches: # Only run for changes in master branch and any releases branch + - master + - 'releases/**' + pull_request: + branches: + - master + +jobs: + test_java_11: + name: Assert tests and javadoc with java 11 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 11 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '11' + cache: 'maven' + - name: Generate javadoc + run: mvn javadoc:javadoc + - name: Run tests + run: mvn -B test --file pom.xml -ntp + - name: Create coverage report from jacoco execution data + run: mvn -B jacoco:report -ntp + - name: Upload jacoco coverage reports to Codecov + uses: codecov/codecov-action@v4 + with: + file: jacoco.xml + name: codecov + token: ${{ secrets.CODECOV_TOKEN }} + # tags: coverage + + test_java_8: + name: Assert tests with java 8 + runs-on: ubuntu-latest + needs: test_java_11 + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '8' + cache: 'maven' + - name: Run tests + run: mvn -B test --file pomJava8.xml -ntp + + + test_java_21: + name: Assert tests with java 21 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '21' + cache: 'maven' + - name: Generate javadoc + run: mvn javadoc:javadoc + - name: Run tests + run: mvn -B test --file pomJava21.xml -ntp diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml deleted file mode 100644 index e1b317cbce..0000000000 --- a/.github/workflows/workflow.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Jacoco Distributed Exec and Aggregation2 - -on: - push: - branches: [ master ] - -jobs: - unit-tests: - name: Unit Tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - with: - java-version: 11 - - name: Run tests - run: | - mvn '-Dtest=!*IntegrationTest' verify -Djacoco.destFile=exportJacoco/jacoco-fast.exec - - name: Upload jacoco exec results - uses: actions/upload-artifact@v2 - with: - name: unit-tests-jacoco - path: exportJacoco/jacoco-fast.exec diff --git a/.gitignore b/.gitignore index 16cda0aece..b873bed133 100644 --- a/.gitignore +++ b/.gitignore @@ -69,6 +69,7 @@ nbdist/ # End of https://www.gitignore.io/api/java,maven,netbeans /bin/ src/main/java/neqsim/util/database/NeqSimDataBase2.java +exportJacoco/ neqsim.iml .classpath @@ -81,3 +82,11 @@ test_*.ser #Intellij IDEA .idea + +# doxygen results +html/ +latex/ +eclipse_dictionary.txt + +src/main/**/*.png +src/main/**/*.gif diff --git a/.vscode/settings.json b/.vscode/settings.json index 4e980e2539..5f1e5434c3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,14 +1,23 @@ { - "java.configuration.updateBuildConfiguration": "interactive", - "[java]": { - "editor.defaultFormatter": "redhat.java", - "editor.formatOnSave": true, - }, - "java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml", - "java.saveActions.organizeImports": true, + "java.configuration.updateBuildConfiguration": "interactive", + "[java]": { + "editor.defaultFormatter": "redhat.java", + "editor.formatOnSave": true, "editor.tabSize": 2, "editor.insertSpaces": true, - "editor.detectIndentation": false, - "java.checkstyle.version": "10.3", - "java.checkstyle.configuration": "https://raw.githubusercontent.com/checkstyle/checkstyle/master/src/main/resources/google_checks.xml" -} + "editor.detectIndentation": false + }, + "java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml", + "java.saveActions.organizeImports": true, + "java.checkstyle.version": "10.15.0", + "java.checkstyle.configuration": "${workspaceFolder}/checkstyle_neqsim.xml", + "java.debug.settings.hotCodeReplace": "never", + "[xml]": { + "editor.tabSize": 4, + "editor.insertSpaces": false + }, + "[json]": { + "editor.tabSize": 4, + "editor.insertSpaces": true + } +} \ No newline at end of file diff --git a/CHANGELOG b/CHANGELOG deleted file mode 100644 index dbd4b2a478..0000000000 --- a/CHANGELOG +++ /dev/null @@ -1,36 +0,0 @@ -Version 2.3 -- Updated mercury heat of formation, melting point temperature and triple point pressure (for improved prediction of solid formation conditions) -- Updated TPflash with solids (will remove a fluid phase if the phase fraction is zero) - -Version 2.2 (17/4/2020) -- Huron Vidal parameter oxygen-water updated -- CPA-binary interaction paramter kij updated for N2-water and o2-water -- Peneloux volume correction paramters water, MEG, TEG -- Volume correction parameters for water, MEG and TEG updated (temperature dependent volume correction) -- UMR-PRU model updated with parameters for c-C7 and c-C8, c-C9 -- various bug fixes and new features for process calculations (changes for compressors, mixers, etc.) -- Short-cut class for creating new fluids implemented (neqsim.thermo.Fluid class) - -Version 2.1 -- improved stability of TPflash calculations - -Version 2.0 (10/12/2019) -- verson name changed from 2018.X to 2.X -- improved speed and stability of algorithms (TPflash, phase envelopes) -- added GERG-2008 for calculation of gas density -- various updates in process simulation models (compressors, recycle, mechanical design) - -version 2018.5 -- stability and speed improvements - -version 2018.4 -- included test framework (Junit5) as part of maven builds - -Version 2018.3 -- updates on multithreading performance - -Version 2018.2 -- update base package to neqsim - -Version 2018.1 -- improved speed for CPA model22 diff --git a/README.md b/README.md index 1199f30d88..2e6e2bbc23 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,25 @@ -# NeqSim +![NeqSim Logo](https://github.com/equinor/neqsim/blob/master/docs/wiki/neqsimlogocircleflatsmall.png) [![Build Status](https://neqsim.visualstudio.com/neqsim_cicd/_apis/build/status/neqsim_build?branchName=master)](https://neqsim.visualstudio.com/neqsim_cicd/_build/latest?definitionId=1&branchName=master) -![Build maven](https://github.com/equinor/neqsim/workflows/Build%20maven/badge.svg?branch=master) +![Build maven](https://github.com/equinor/neqsim/actions/workflows/verify_build.yml/badge.svg?branch=master) [![Known Vulnerabilities](https://snyk.io/test/github/equinor/neqsim/badge.svg)](https://snyk.io/test/github/equinor/neqsim) +[![codecov](https://codecov.io/gh/equinor/neqsim/branch/master/graph/badge.svg?token=IRnbAwRDtc)](https://codecov.io/gh/equinor/neqsim) +[![SCM Compliance](https://scm-compliance-api.radix.equinor.com/repos/equinor/neqsim/badge)](https://scm-compliance-api.radix.equinor.com/repos/equinor/neqsim/badge) -NeqSim is the main part of the [NeqSim project](https://equinor.github.io/neqsimhome/). NeqSim (Non-Equilibrium Simulator) is a Java library for estimation of fluid behavior and process design for oil and gas production. -The basis for NeqSim is a library of fundamental mathematical models related to phase behavior and physical properties of oil and gas. NeqSim is easilly extended with new models. NeqSim development was initiated at the [Norwegian University of Science and Technology (NTNU)](https://www.ntnu.edu/employees/even.solbraa). + +NeqSim is the main part of the [NeqSim project](https://equinor.github.io/neqsimhome/). NeqSim (Non-Equilibrium Simulator) is a Java library for estimating fluid properties and process design. +The basis for NeqSim is a library of fundamental mathematical models related to phase behavior and physical properties of fluids. NeqSim is easilly extended with new models. NeqSim development was initiated at the [Norwegian University of Science and Technology (NTNU)](https://www.ntnu.edu/employees/even.solbraa). ## Releases -[NeqSim releases](https://github.com/equinor/neqsim/releases) are available as java packages (jar files) and as source code. NeqSim can be used in a third party application by adding NeqSim.jar to the classpath. +[NeqSim releases](https://github.com/equinor/neqsim/releases) are available as a packaged jar file and as source code. NeqSim can be used in a third party application by adding NeqSim jar to the classpath. ## Getting started as a NeqSim Java user -NeqSim can be used in a Java application by adding the neqsim-x.x.x.jar found in [NeqSim releases](https://github.com/equinor/neqsim/releases) to the classpath. A demonstration of dowloading the library and running a TPflash bencmark is illustrated in this [NeqSim Colab demo](https://colab.research.google.com/drive/1XkQ_CrVj2gLTtJvXhFQMWALzXii522CL). Learn and ask questions in [Discussions for use and development of NeqSim](https://github.com/equinor/neqsim/discussions). Also see the [NeqSim JavaDoc](https://htmlpreview.github.io/?https://github.com/equinor/neqsimhome/blob/master/javadoc/site/apidocs/index.html). +NeqSim can be used in a Java application by adding the neqsim-x.x.x.jar found in [NeqSim releases](https://github.com/equinor/neqsim/releases) to the classpath. A demonstration of downloading the library and running a TPflash benchmark is illustrated in this [NeqSim Colab demo](https://colab.research.google.com/drive/1XkQ_CrVj2gLTtJvXhFQMWALzXii522CL). Learn and ask questions in [Discussions for use and development of NeqSim](https://github.com/equinor/neqsim/discussions). Also see the [NeqSim JavaDoc](https://htmlpreview.github.io/?https://github.com/equinor/neqsimhome/blob/master/javadoc/site/apidocs/index.html). + +## Use of the NeqSim package +NeqSim can be set up as a dependency in a Java project via the [NeqSim GitHub package distribution](https://github.com/equinor/neqsim/packages/42822). ## Getting Started as a NeqSim Java developer @@ -38,7 +44,7 @@ An interactive demonstration of how to get started as a NeqSim developer is pres ## Running the tests -The test files are written in JUnit5 and placed in the [test directory](https://github.com/equinor/neqsim/tree/master/src/test). All test have to be passed before merging to the master. Test code shuld be written for all new code added to the project. +The test files are written in JUnit5 and placed in the [test directory](https://github.com/equinor/neqsim/tree/master/src/test). Test code shuld be written for all new code added to the project, and all tests have to pass before merging into the master branch. Test coverage can be examined using [jacoco](https://www.eclemma.org/jacoco/) from maven. Generate a coverage report using `./mvnw jacoco:prepare-agent test install jacoco:report` and see results in target/site/jacoco/index.html. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..ea3ba1e729 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,16 @@ +If you discover a security vulnerability in this project, please follow these steps to responsibly disclose it: + +1. **Do not** create a public GitHub issue for the vulnerability. +2. Follow our guideline for Responsible Disclosure Policy at [https://www.equinor.com/about-us/csirt](https://www.equinor.com/about-us/csirt) to report the issue + +The following information will help us triage your report more quickly: + +- Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) +- Full paths of source file(s) related to the manifestation of the issue +- The location of the affected source code (tag/branch/commit or direct URL) +- Any special configuration required to reproduce the issue +- Step-by-step instructions to reproduce the issue +- Proof-of-concept or exploit code (if possible) +- Impact of the issue, including how an attacker might exploit the issue + +We prefer all communications to be in English. diff --git a/checkstyle_neqsim.xml b/checkstyle_neqsim.xml new file mode 100644 index 0000000000..d7858800da --- /dev/null +++ b/checkstyle_neqsim.xml @@ -0,0 +1,346 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/wiki/CPA-parameters.xlsm b/docs/wiki/CPA-parameters.xlsm new file mode 100644 index 0000000000000000000000000000000000000000..a3c0f31d08fcb2e6f365cc6dc0cd79d18a2e6958 GIT binary patch literal 52474 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 o1c&eVV(pf-uS91 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

yuk`#)Oyn7Gc@-Q;<^jDm(pep z)HiqAvjHMeJx0rHI^G(17vX_M6v$;ZLgaxQVrfhs83Oec*>Cw!y`%!3l@E@!e3rQi z4Nulw=P^;67O^sTHe}mxmtucWsw`1rEDO9)GD?-bTw9PgbAD69wOIkZn4wGzhrG#F zn=Ln^ot)J&$=&aBME|4oNd-gHar!*DlKg|J2O|Ms6}-Moak(WzjM)3MTjv#Q55A18*JO$`*rhaUtAr^9_7}+ie|zK8+EK)g zy<%9`X|S5>%}8*R^zIHtHcBujbWZTFD4te)ziIs1<~o>yBkicv2xl7?6%n%7A0*hM&8MI_r`5~p{)4ZXn( z{^uz5j#IMcJ-CBn0e4@R5D1XQwnhpLwswxJMz#*XCmG0cVIb+UA;3lc-+p;0b=fSi zp|qjT3gS2O##xsV2K2&yEic5Si$NiDR;GVBZ6V{=+k3I1UXM*X7q%oOaC&kQIM*4sdoKaGW zRl=(Je(IpiC?%iK$8`$TSr~z)F$QUaS%->MaqHM*5$%&_Qs&}e=mAYx1arPhJ+eD4 zIRuCtc28!epwcXqJ%5f_^~y^Uloof<=~sP7N67Dm3u{+uL_+P|jW$xg*M0;bHNq-TBBFm=0+qHGCotx*37A~&3LO@CC z&|hiFHnQjlQR?VN=yH`N<%!j!QgX_pSSrl&1Qc~#dVjvbBkhM>e7^?xU|%TNv%Q&5 z;FPo&8=w4o!_>*KrOC*Nei(oU)J-Bh(NN3E$LI(yW4VQI_#oy!cIDmAfTyY(64@B1 zNmk?$8Cd?V0tE(;kRmbrycun*_Jz96@C3+*+U1Px> zjq!JnHn6k%{|^1T5vRv1S}w3*46MN4p-CJ?E}A4@8YeOzZ1;3S*|!YX$A77MrZGX) zM|F43JJ9R&wM*aDCHSi`aZphP^XvtaDS_rDgLMO}JA+!VQQgKg`rRlx&56*&N5N#360v(iF~BA5K*35?3$WU&|gt5Ws~U zw^lgtmwTOxEbyjJ!ncc>VC1>1SeG8sI%W>({Bux<63Bc!N1DZ0@iDh*sdArJY~LQ~ ztMHgUw!ww9s6$v}H2q)&%f6w1O77|u8;<;1t;_R07Y8qk?A7WjE_@-$MlmKQ0Di}m zCBhDC?-~6`sKF|+o%8Jg7doV-EQnWmG}g85)5G{UPo6fy=10>^n%AA)WaXXR&!7>F zYC&c2?g{9ESM$we*G*&smM!7(?VziefP&1w1JtRqQJ#Z~%7Q~0@FDZRy(Ym; z=+{K$XK?-}q4nDK)CX`8XmIq8{x>r4h6R|Hzpeop+S*$FQ?2J0@VwYywl%=}8_)lZ zcm(Mu@vn-XrcD2W_(vvMNinKCgCQV*KVW{|KKczs0`4CE;V#n8Qwx8J^5-3<-zeh= z|A_MQM$?}te_qn~jq)<(A5nfzeEvlF^U%d_l+vP~D1RQo_!HpIZKK}+jFmqDes3cE zN&4pk@Nd%e+Fzu9E(iaK@aMGmH^O$ypE~%*N${V5f6gL*1Mar|4*-A9DgOlgGf4jp zc+mC}@Q)eUKhDtp*FhJ-%L8CH{GWjSoCo{~`e%Iko70i5pP>I1ZT?C9@1fmqS_p_J s@T~kl0=+-U|9u?&JGp+}-^l+ORTX4l!EOF2hQx$O0yk;7!Kc)J0~A)pS^xk5 literal 0 HcmV?d00001 diff --git a/docs/wiki/NeqSimDatabase.mdb b/docs/wiki/NeqSimDatabase.mdb new file mode 100644 index 0000000000000000000000000000000000000000..f28e10020efbd8af607df2066665600a7599951c GIT binary patch literal 4055040 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

bT)<{d` z+uF9Y?US*6G{+=UY2lL-9+jAFv3(M@HIhU%j(a-4Cpi(@8cCvNyM5#Ti)QKlQ&q^c z{z&?x&thAnLZ;ak+ZSS6Biqt!i|q@rtzklA8J)kc{S3A>vMtTFwCzu0TO-@jY>Vyl zv8|D9X|~1odAaTM*_LKoY@ds5jciM^Ew;~Tv7Iv8(rkD8D_I23S$hI`w zV*6TbYh+uRZLxg~wl%UX&9>OSI=7uZ+tO^eZ~Xr?)|p0yOj~ENh1`YhG4%i2P;c?Q z&oB>sj@cI5Uu|jIDSex5v3)1DHL@+uw%Gm(w&iR~>TFB1Ew=Bd+fJQrX|~1om$9vp zZE3c}_U+BKoi^LjY>VwLVOt~H(rk3dzL(1wx!u_-}wJQ)>*9{ z>A**wvwH_yXR?KSt7$uJg-o+8wjaQ@Mz*Ed7Tfn@TO-@jY>Vx0Vp}8I(rkNn6x$lvmS$UQe>?BD(`Q?nZL$3b zw#VdIqO&{4J@9#ETWrt3wnnz4*%sT=v8|D9X|~1ow5IKpcO=@AM71Z09&Xwmc;7s` zcd)iCZTlf?Yh+uR?e>lTpJSah>XD|bkSR}?rLHj3`Bl4r&|*7fg-o+8{n4}7*2uOr z+hY6s*w)ClG}~hPd)U^iNPWCL#_g2!DOMSA53JhaQ`pwXw$y0bop1X|Y-?m&n(g+D|6gXEX;jG6 zSZAF-{{Puby??q2nPyw|wJ*)m`=|14w#D{~*w)ClG}~hP1#D|%TbgaL{XDict~!`) zvHeqQYh+uRZL$3mY-?m&nr*TDV{B_=TbgaL{iED=`fN+HEw+D%?Z&m_(QZnzb3P7Ro%9OS3JuU#s^dsk1H3w%Gm!wl%UX&9>Nnwcc;1zBX^R z#rDtZ{kGYj-O~%b^9FXe#VhrGJN5NsYuoJ`|G&*T)2NVX>rDEizhGOVLZ;ak+keKk zm>BKSRyH=SE1#?7|a{w=mOvMtSa`^Nt+)2WbY>rA$gciBQTDrA~% zvHcFVHL@+uw%Gnp-nP?cTbgaL{qL5xowAaY*%sUX!nQ`XrP&tS|HQUNwx!t?+yAKB zPMvLOw#D|}v8|D9X|~1o-wC9~ zcFeJLCjC(r+Zq)z&9>OCG;Oz|1;6)um~F9LZrVVx=u&t48X|~1oaBOR2TbgaLJq+6#*_LKoY!7YPPI*V-$oz?p)D;~% zeJttyQtoo^@_$3zMZ=dFcF&M8)#u9-OYame%$ACG`%P;zXUiV96zfc*9;uB;WeZs{ zx1GKoso56WBeAVfkJN07?Il`lr%Vzx+hTk17TYP4M9sF?UJTnBNup+3Y%hv!jU-XC zEw+2Gt&t>Zw#D`$*w#oAHQQo)VQgz8iJEP(y%4rFl0?mR`>y}5%sSIJd!@0?IzJ(E zC2UI_>C|Vh%(nDLD`LA=k$y7iU6Yd4NY}94>E|PR+=sE9y7H?$gP~!&^LvsNu-$7S zMdkn6^De#1NS9UJ`L>tGcI$mxseGGl>9;?GZH**Rvn{rl!?s3}sM!|V%VJw2NmRpj z=O2?SgKdo@QL`;=dueQIB#CO+?(}1lc3uBpn{}4DI;I`9FXHCnK8zl>R=$O#uSaTI zh}d2e+Zy#qHEehOzIF|4Yb1%9ZE4%9=eE-)iJEP(y;|LN>LgLKEw)EtTO&!-Y>Vwx zu`O4CQYVRO*zWYB_8zwiwl$JO&9=1dkJfvV)JdWmwmbg_@FUpPND?*M?YsUznsug8 zkJQ$g^hX=j`=k95C(@a1vArR-HR_R?ZLz%pw#CHC`LX+GmnuohY>VynvE7^6wI=sP zr1>!0V*3-=mN8Q5BvG?1w%5b9Mv|!67TfD$TO&!-Y>VxWV_PFh)NG6Gb+E0GBx<(B z_Q$Z@drXq*_)q5!&`v+w(yr_OTeHsO$;K7=NOJ^Pdso{+WDD6Ux1GKoso56WTVh+I z9;w+D+hei44fpM?oU|XY-oJJy(H7X&ND{TSEp2;qY-=Qmnr*Q?CU4v6lSIw7*xszA zZKpg2G}~f(Q*4U~c?NWU&M6+3v;EH#nQgJX3AQzoM9sF?-nec%b&{yrZr}C)U0G)u z^+;`<$riE;wl(UJnr*SYbJKRp;~E>0)<&c|HEpLnk7%}Qws*v~Mv|!YB+`?NYudK9 z-5&!3%aPupX*+F_sI_fr+uLJXBT3Y3i|y^Ot&t>Zw#D|g*w#oAHQQo)8*FPNiJI;9 zjsGXG&NM1yYCK`q>Gy2(xc#uLQ6bZ8OMkR4wl(?+4cndnWaD^jx7J8YRWHtLOWWQD z+edTX)>K;f8)_QL`;=drxd@B#D}BvAqYjHIhWl zw%Fc1@3+$@iJEP(y&JYQl0?mR`^NuAu+B6pWNI8ocK(sg;n>!wkZHE1KROKC8rha+ zTWn9vZKuz+G}~hPP;6^tTbgaLeMpP#l-ZVMTWlZPVmoEFrP&tS2Vq+y+tO@{?E|r` zk!@+V#r6T%*2uOr+hTivY-?m&n(g+D|Bqvx$rCcED`eU_lP%;}Y-?1=G}~hP7;KA) z)M<-mTWlYVZH;V8vn{rds`uNe6Bo_4*gg{5sZGm$^=4aaPsMicHJSE1#?7|aJ{8*<*_LKoY@dQ{jciM^Ew)e2ZKuz+ zG}~hPq`K|Y*_LKoY@dj2jciM^Ew)d8&X~17Ps-Mr^hX!eZKtk~X|~1oXRxi2ZE3c}_NSX|d#!}equVvoTK&KCv8|D9 zX>D8D_IcQrE7Ga6EzP#rJ{Q})XUW@tEMnLH4{=4eh^zG^=U`jfUFvL0YunPcKZR|L zY)i8(w$H}4Mz*Ed7TafGTO-@jY`1Uxe+BDIqe7;wGuc8e$F@d=OtUSvFT=J*wx!t? z+h53Sr_Z)D+hY6k*w)ClG}~hPQfzBvTbgaLeF?TTvMtTF*uEIs8rha+TWo(WZ`br_6vd+hY5(*sh%=PkTqX*_QGDw(fH8@_$3!MZ=dFcF&M8)#u9-OYame z%%;X&!n*#b+Uz#6$K8@|QJc8Ul3wGhUFDNIi6?Q@WjyDn_h%$Gk*O(s9L!m!bLa5m z1lM}b`{sH}Jt%+gRF%s6`YSZ*xWD4&>|XmrcF2A z)ohFHtDCmdW?PzVv3(V`HL@+uw%EQB+Zx%HW?RPpTQ|r5!`*AcA0Kx6&+|x6@QgI9q$Ym`(xTT`j@xrabK@*Q=|UNX8;=emG*v~vyt;FZsxJ`-MG=JfHCv< zaOSfk?RC<4w}H9&8g8_bCc4edUAWQ8h3GanU&W19ibJ=#xifd8ley4sZoYyWt%QVb zb8|9!HZf?VkR@MA& zb8{M2_G|p#-g^Lg+zi%;RIr!YQxmune;E6N)f1cvkaIjUuaS|n+yT%S zmA3cut8UIdPMYbyg6VZT8ntw0w$u6J|7p0O6*E;EOKf{eyeZOvV^Ac{fs_}K3n-_C8I<@n<&CLtA(W-RUZEl{&jaFT{ zZgcZf+-Oyi>ozw(!HrhUw{COu1cPZ@86aR;+Je%+%H)kJ{XL>eablr%w^R(w+yT!;~=v{Vj zYv*UCTkrOq`JVXY-JE?a;;Jp_N`I~|L+)TtwTwTt{2fQIpY6M1=A8W%%aae)`gi=X zWf`;UDL?Gy>|@cHmh#ptOKG&zcCL{>w5*XyYzv3Khp##NJ3j1Y{!89$`AgC*<@YU1 zY2B{d>Fam(WoX=^IP>p)0(T$J$;aU{wWVM3du!FBoZS}DxJuOC&jY*W^hVQ7%28Z* z-mCn2(@lHV*sSl?jbq%`aHCb3vD>z(Uo_p!x~ALvbvL$~SDS9qS3T^ucJp)GXw@j} zHaD-}MysM=ce(NY`R4e4xO;Q>i^HBAdf$+ns~1;JD^DuzRot?$PPTkpAY}i;qy8SZ zJ!4ww57XZp+%03;?J&}NhhEC;|OS1wvp85p1Z}!o){UM z_~=8n!S2~=_Q1#(?gg>&|01rIc(*%7Hc#%Oo7%{380kH;n)2D_Zs|vM#mGiH?Yv^* zzNCBlkzFvdgPUwdxO=SDkL-*QojV4)Wvkf(ju_FYxX~?bWE@6x zYS(m&ksUCiQ|YKXjM(^J#{Y-YDs-~Jx}#O}xWh1_lO)$IMkZoJCwH)0j2wy)os`OM zF>(k-baJh_#mK=JshwH1t5mg-%t7@wVx!&0*zQ1#=v2GumaXQ1e5;w9{JdHBjP3Tv zh|V3n-O@%To17?HbF56UYQ zAHjX^t^0)bO*f2;aXTeiLhtW7XO%I2#5KA@TBa+b#XbQ5ez5Y3>#yM`A=L)w^b-^ZSvh7}3dq?-nCdFrra8qosE%M>k+oI4{f|x z_ZT?~BXR`NTA{J=SG4nU_ZT@7Bct3(dHT)-TFVjnK6f-{TifZQn|jtWFrt%1+$}xp z>GghO=K7ZHZ6ES(-Luu4h7q}jIjYTD$*fMh$H=J|sqKARE3MA@_YC~&?lE!-Mp}DT zd8R1E)tc@xa&p~>T*;Gt&0$G=bW=ZaQf_2rOi0_XXU%%ti5S_+9cWKh)t{{L{>fpN z`&tS9kk|j~;Bx%-tC;~aUtb!(ed3VWcXLzbbQc!-AU!7TvtC zOFDmzb4x+*mWIJC1EX6OW^OrHa36w2688KxCAR`BlON}=sc@dpUsL7!qrcYC5Bh7p z`v?r~qcFNvU`Bm%e{F$t>HgXx*CqY6CAT^(bH3DHTXAc`s$0wX>l_(>{yOhI27_A% zM)z@;xpiT|tp|(l6R_mghh?_`tWY(;UsvTRXn(z2)$!MR?uho+2ksO1*GIQ0%(!FR zUti$5pufIIy)=J)$!!74+y&~duW-iFUti@OS$~66W%M_Aw=E2AI~d*eFypBve?x&g zi~S8nw<9cZx4gfh>~@9~w+pPgU7f$tx!s_5yTjo2fYI#OSlIZO&Z;z55&t?qV3-B`|ZB z!h-t(EV|2J$z2Z1?h06OSHh~h%K0xkcQy3x8W`NQFuLnt=B|eYcLOZC8)3=a1k3Jb zSaG+&s=L+sFFAJ`^zKVAxZ7cLUxt~x0~Xv@VA0(POYW<%?CydU_cd5`cRPQ(b6}J-TkoS9)M-{Em(06!m4}7`7b;7F!XL33~oA%ZU)TUBe3AU z4U6tkSaOfSvU?m>+!L_so^<{W=bnPzJq?5V4vg*@n7Qx5g8LpUy6?l1dlr`64`9VT z2dnOf&VR*`Y3je?-H%~#KY`Kx6lU&uSa2`EqI(gR+)J?Reg-S%kD3*;@*Z;_gClda_(=?yT8NW{sE)=C(PWxV8Q(x7Ttef$-M*1?p;{n z{Jp=c%AVY_S_AYx!r(I)eF0{^2n)Uhi@pp?z5>g>3M+mHtootO(?uCBFnL z`;oBXmxNWnl=C#jrJ?uBz~GmK(Ju!x{~=iL%fq5y0hauSVcD+;D}E(d^(#A1GyVwl z{-ZGXRbce1!px6?1-}|B`qg2{uK~+`O<3`3!Kz=|`TLyz81#M}82ra!^y|XRuLleM z6R_ylhb6xOEc=aM#gB$nzX=@TH+B9S&Tj_29|MEm97ewd%=}nb@LR&7-wKxe*0Aii zffc_ktorSo|EBZXL+^Kh!HA2b@0$dVeqs{ty`bp)m6kVZk2; zi~ev}@<+h3p9CxZld$S1JO3@`r$Fzg!r+gD(H{jfe+(@6V`0%B2TT5VSoSBtia!xn z{YlP0=={mh`%_@>r^4t@gPA`a7W^5o=+A^De-`TN{{oEuGMM?xVZmPkiyUtG zhf5qd`G?CK{P>3}9KiU8s~m**X&ekd&%uD77TBTtX_1|>pO&#>_0tOM9R0K+J2*eB z#7@djE3>2V(<u0h(wX?_CFu~R zmt~`#UXcxRdQ~>A88mX}rIF7F(nM!OX=XDrX(}@cvbtv!WtGh+iS`*~Q8%L^zx<4< z`~r_K0liE-68yJe^pC>KKL!i_aaiM$rKtRbPYNzYc?c14jQ#nE7A9g8wxvl928nEBW8Tvi}{d_}{~-f78jI z`3LCzTQK-P!s!15Gyi8;@PC0t|28c7zrwQr8?5-h!>a#>6Gi`o-v0{*|8E%me_-a{ zfd&6AEHWzdPn3d(7s%pbwkF5Vn9ZjD=a)5*ET% zuo$+6rLYYwhizdcYzM1hd&edac7Q&NgCXn)W7r91VP{wfyTD@D6_&zoupD-Wm9Ph_ zhCLmdPuL6kur~~09~i@Un1y{|A?yc>VFE0<*75(mw6YQWFaIL{clXfOPF`R@#{Xe| z)^s@>04w1@SPcg`y4P?p^x+T~!l5vRi7*R?!9qA37Q+#+6ehuP_#~`^$*>xxIJ)LA z75Z=_4B;pk!_hDc$G}2378b*CuoRAmL`tT|zh)`fwf$;d~gwr(qU80}J5-SPU1!Qur(^hl^k( zd=6H_#g5%cxCHueDGcHBForL{EL;W);c{3ESHM!Z5|+bNuoA9@)o_htR}`*=K3oSw zxE{uE1I)sWun=y7#c(q$g&1&%tu|A*_TS!D{%iW49fC0)6-?4B>eg!wWDAFTz522^Pc8U@5!| z%i$GR2|tI`@Ty~%AASLScnyZ|I*j2Bn1x@$LiiOdhF`-{_zf(F-@;1x9ju1mI}R7Z zo6v_pz!2VoG5ir`;ZLv-{tS!ZFR&EehUM^ASP6fF)$k9;p+@*8^xr{sXh{ z4lIOsVUZ5jzfy`GmScdG7-2PLj>D8#fIb#sh$R?f8D_Bp3$Y4|aR@BMp|Bi>!Acws zt8p&JAx@kd`Zx~^ab6hXd@ze6U?I*Ai*W&1iVMPWTnJX;!mt__aU34S9_ZtuFvP`R zjElo8E&&U1BrL`yVJR*J%W-K~iOaxhTviUP;&RZ(55W+ZhcT`Iv-n|Hh%3TkTnU!q z%CHELeH;Tr+#JTZ1Cb{zi3DbUBMFvKHaj7PyN9t{ie7+8$Q z!csgAmgDiT5>J5Dc%tLbIi3W4JQ;>~3XJhon8njzA)XG4@eEjsXTowk3s&OUuo^$* zIP8w+Kp)SAA)W_gJRfH9)36Xf1B>wjSc(_Ia{Mf;#EW1xe$H{o9xsMIUIIhB6vp^@ zn8h!^Lc9zXHyT4Td-!#yA6J@ex>v z--gBbC@jUtU^zYxEAa_fjZZp;H}NUx%Ww~irM{2lc1_b|jaVT^x(S$qo?;vZo# z{t1@ipJ6%v1y|3k}U|U*+Mb|%@&3}TLgxz2gYnsm}QH>Lbf<8W=p_QHWHSz zC1E973RbhF9mCgb8R)ZRVaS$)G5ZkAvgKhRTLBic55rQnA}nVs!AiC=tY#l^41KeY zLZ7VyL$)f6*(jK0tHDCHIxJ>uz*4p*EN5%MO13tvW*>75o3nMG&pr-Awl0j>dN9jA z0Snpsu$XNCOWB67oNWXv*=ShJHg*iTvrVASHiaSE4908>%(Bg4A=?5Lv$3$0Z3)ZS zR@Zl)4u_TO2w2S~IZiQTpM*Y}3_~^r#%wCgvLj(3I|>%FqhTpK29~p9 zVI?~bR|~f_3`t@kI~5kQ(_kq(9hS2*U?n>fRb)1yRZi7DiA`ID=V9aiZS@vaE$nJo}>?^R8-3iOtS79Z)3s$qQ z!6Dh*aA@{*I4rxzaf&Cq7y9fz7_x7`n0*sw+5NDPJphZ@w_quI5SFutU?qDPRJI`_y8PT`Wme|Mts``G6>H^BHmo6edZDibr97$y^sI8F`9 z#J8F7GVv%AK_(t!BFe<$Ok^_g1QP|B;6!7kC=;A7tdwMe(|(n*OmOzDQjrNx!d0p= z!MU``5SieVSS4RNXSOQ&(m6p@&6mzOh-$ucP9;?HrE^B0nlGJ!eKlV?WtiG1mAGLbL+4@~4se~XEH>3?J*U;3Yz z7%p1=%*0$W@fRlMW}+~fiFssVVH9O0FZ}=}@}(chM85Qcn8=rY zFcbOG4`Cu-`k_qZOP|O@zVySG$d`UN6Zz7QaGV{NrB7laU-~DR$d^8uiG1l(n8=qt zm5F@mM>3Hw{U|2#r60{izVu_5$d`UB6Zz7QV8CQ0Fa0zo@}-~7M85Phn8=rYCKLJ6&tf89`q@n6OaBxT`O?o}B47Hs zOyo;HPp$^Y($8mtOUw4p4445kU> z{>H7Bb8@S7^WOrTpyK~bex~+M&S;kE)0wNv40#jJi7Cg4soKAHd_IF8&d*r=zZsEl z$60=&ByW}R?JS=mcP7Z!WtYz=Fr&~iV<S%rV#|yX{7n86C1!AwJHJ)!trlv$ zRhe&;TV{-G%&0J<(lTTD#*8X6sx32CY0MbHj3F&E)^5xg%8a2cGd5sGls|A7GlsRy zV1QTqb%!%!c*~3}8gDfhGv;cUv3+C4+{~D}WyWsI$hFVIjCt}Iz3U@aGB0lCZTX3P z8*eoqGv;fVaY$o^*c{O^V{&80{LGlYWyW!h84ECDftDGkHD)Zxj0Ia}oZFbO5Hl8P znQ>8L#=^{4xMjxWjTwtDW095_*EeSLFr%ks#upni7G=hwEi>+F%vg*Wi?z)7W@EulD_&SoRJqyXK_!y>ZR2rV8)Gf639L&QS z<9Xc(DCRb19Zg}ak9QK>Fv9KI$9I>hzwd^;ate=aOyM>1dMV#`IDc_%O)pe`)keJI zROXN7aSnOyl;+>J34i;PmhZp&Zf!4MGy`V94445kUmDxOCJ z=dWK4F1x3O-!tsGq2~|zZF!60ZLvJ-O#qDr{||m%&V7fw9@Z}X`0c~5J!$>cKd`Uw zwa)MV^n+VJH1??HAD-#m`~TCuublNaYJ5HG=iZ-q|Ebieb|bk0-dcBaf4)xfp^=EL zv5X7DO5t%ofyVC8Rte@ZSeOl*h#B*8$?f)j(M+1F|2KwCPZ!C7pukM?v3H9~8)>S*F z)340*?sNLn^7>hSqsG^b&-d&@RqBd^UG=ztpN zlQhuhdrlZXYR7Avt4&sGU*Bt8-E%rU@CJJPh&wj>`EeIFf6K<#vwohF-%RcWnwsCE zb0Bx@9G+zNYYlWj4fJbsvOfRkUdtW1Jda%akmH{G_T1(E=l;w&`-4P+Ntwl&3|RY+ zGKT#!|IOvyj#sU<)Wt8nzQK_1);`M*Y&FZ9{I7kv6?c3d%l(!ca$n|t`CXnjO?$Bj{j7ZYbc z1oY>cnhW;Z?>}b|s!ue|eFj-y?q^FQS26|ACMEp6H@P^`=X(vG?+q}%ZkaEVbe9+1`z{2u^N)+hweRgNpx)B{_XO~C95=@7RTt2663}-bpvOP&yu{{P=B7ct zrJb(1z0;@c9A7@{zt6el?)}cjPi>6Zt1h7DB%p6YKsyE`{Sx|}!%c*|rJbDsS^Cvv zkKgw96wt<)z3KvbP6GNC1az1GnvC+xCb-uw3{gYVmM&SE7=;+5vMbI!>#ANATZJQD$J zjE~}U0X+u+b$|cAF)T8~9{BoS_Wu7Pbe3;ENoup>GH)HjTiTfjBi*YC^O-*9dB0~q z>a}O+`CNV1jj^K87#*@P7P1!h&f-a!vB%lW&psy@`deQ9>TirD1MI}FUTR+fUXwPKubls~C!LF3Ei+Sdw zUVDaTl6zyUDCh!uP6GNq1oYo~&=Bwb4XSScH(Z=*eS`Yby_1ZIZm3;bGZTnwePHMO~{mt$FZy?&g-TBL*pr4*}6Ju3iPA?t}yW_B1 z?hSj!{Vq=(u3meF?oZW!)fo1FW9awBu+1Bz3@_%@5eTTU`%Nw0d)-|?m$bZa+xx@o z-Y~5GhObTidkSb{*#EkKHe8!~5zwz8pb;UDuc~<2eInp3t+v=TJmv2xpp9Yw>jHXC z0{RsM^o9c$2UQ<%|61zbqe1`d-^1zxdQJlRB?R=N!y$LBxo*LBtv>u=Ueh01Ua`ge3FsFP(0}hy+y2*=lNv5ge{=i)JBaqecKg1cC=GM7 z(7mPowOzoIBlTJh&xX6kvH$=44LKUaHgAkFyqH(tLO>rIdSlq!@k8AN)LYuwh`=BB zj3-CxwHlsHNsVLw>jK(PeeOj-t017GZtY()<>vuz0_rX8Y(xOR&x%WGeRB6_f7m?u z?6~m$RAaneZHzUB#?Wq!QHB=*Jq`hlpLfU2?==0p|3Jl)OZ8d}&*mpJjbmQv8uT1A z=rPiuj!t*i-0r?hbnrXNOZo@9FZ+AfLZ?er-w~bezSGe?xm2&!@N7744BK4SpbZsI zue(|ug@BS*fF%j;8q{0b=|reL`nfMqc?!CE?HSg`g(t1H{ofcO+ZcmoW0c{={x2}7 z{{Q?X@%w+1|307V44%O2*MANIU8G;pq1E4PY0L1IrlmJLuI8kM4S({_zq7HXMD9Nt zYK+d-7-fhK?dB)&7l@OpVYSWYElo>rcwEg%4IBRCpMPg#j0UyGpvGwG#wf#!IQ`mbtqp2ICj9Sx;F4B(>r`^|7|NLZ9U$+G+Z)yKLv1_aqR9!$DW@33+ zp!xvo8uwlN0F#werK zfNU^?8nyO+Zb-AB7yQe8yO763{m>C$1iDBy|9YkKXHThWTN;g_5E`QlFGgkczgnCc z%L@3{EP0*!SBq0)Oo0AX+UfUywKz4_M>PK$?eyEfTAUi=^Xz|>b~^d57N^G8?eAYC zP6ornepzFZv&hWzk^F;S2-xPQ8@)OLIs!TZIs$)p1iDJ}kG`PEmWD}jQj9cIN=7_g z>L&G%1H&K#)}f9rcjJHR&V3GzH`hyUq@-R(XfY}hm68=;2X>uC))>?u#9 zr{PbzuM0NpIpXo`p0mN%cPY@G3d{-dZulpp;4-HiOoSX<=9GkqrXwevJy}~uPWME8l5)Cd>ywv;JX?3`pYG}UW#{xy*C#=PAvL3*Jw{0Jl8_>o zZfS@dHRSoarKurLdzYz(JXxP)HRO43^3{;%>X)*Hl)K8lN!c_I$CwZNSF*Qn$II*SLn>TpQrwCx-qq3&!4FTyGlNrp5uD@?Bw6|{F%wW z>$$U)Jy#BAEB~$>{umz4PIle7IQKlxPX4uAxa7Z^WHfvqOtV}+SpDPtC8;;!eQ_En zQF9E9LQ)j}?u344B6ToI2Ap&|opewb!Z8t7(|svlaYXq_Qh*Zom4b;t1sS9u5R6Kh z`BDH8PykMPf(w*Jcgn$aSIxxYouvyX+W{O=RM**dX33ma$(s(Hr4Kg04OivEuaUBdt0;PB| z7x7SMobGU4(S1?UAW+LuT9Gs7SgD1VRC?B1I_2U$y{FX5OFl`sKZDD)p>9)ZmFt%TZ=7Oo37uc2j^hp_$8QU(fx_P*Wq-_1}p8tA6HF$(@p( zL2K6a0MdQ%%!SIQL9S=egX?+57teH6o|((#xD)~|Yj9AiFM2u-mrlTi7aC>6nYn1J zH-yC1k4Y4a>JmaT49-vIj9%*NMNtu|=_$iMEC=>N1y9cSkmj*+BsXg+cqm?uv;;HcF;U!_O zg?0{|6Y^egV(@~X-9=V>GVduraCTqn6=npEwAI`YtKc9W~vOK|*{B7Ru7v;$_bIxxu?M0a#7q(w%Mi!FPcBMIijy5Zq ziz%&K=}doWxtZ_ZvRu#+^8EC2aVg*L9&Mfs%SVcNlX^#TuZUs(+{QPUKbirz#&Bf?47o#mSjH>M~w$`oP{%=fq z>&t1~Uvg{z)~QN+_ZJLSUb2#Wejo%F4g7D~YY}tr# z1nu02P?b`F<`Nf^&B5ex>N&yb=D0xWG*$A3(gO6RDw*;+|Hdjg;f0Mc#mk?Qs}Icn zx=Y*+dBSZwf9yJ8yUbnZyk%y(Jk(+tGf~ofnVB~{j#|bjZbmwFohhxC3Z_~u73d=5 zZ2(&?HB;BP0@s4cVGz!WLier|<%F`I`FWIm+s-QaikG|fz2mhiS-4fKk_CiM$m-^T z%*8vKWe!^`65K^D5@H&@NI(_3$jnWGbb_$tk%i`NRK0ZzMO!0e@kFSm3og^CAAv~? zl+C~-L-wl09KGqjs)t@WD1W;0zb}|Jd?Jqtr<70SVZXP6NPZ==c3J+J{NC$7kNkAy zr!p13Ve3|*Wj1Z)O6F|X%8|$42H$~#hLwe0k4xDWEWsW|T#m=5zC~f_voOgVD%7Cvvm01)n`B;83cg}nL zD-Ls;f7NA+neN|r!4^iNyxkUNxXXE4M5`d31g?Aj6O8KBc~3CPy%7?)r*fYV&*3^q zFc@8IFSfX$NIz0!9sZvQW>)3fzLe9re}64QWnTP2rz7%9MTwP9nhz^YeMnxjVyL;9 z<)F-hcE{u9pCBQ|`Hu^<<~}Z(@}|cHn)4oKf!q4~W`Pz$YPAo4+ia$mUyYFDF$(E{ z3X}FchdYyzAYjxP6CO5>GnsJP5&8NZyBLh_jbrbiN%%8<|@sFDrv0r}KB!-Md8-<+SwNW67kaSQMLKYc> z0Sc1^))L}UGXO<^(vl=>-e{4_`Nzb-a?dfD(?2~Xly}0La`&I^{@~7=_Q{`oeb=VY z8G9Mp2P_+e^iSBp+#VmlL2xy014C7SbW%9Iv(^iN9I{@NlewM+ax6j;(AG$&Px)%9 z;}fFuZAH(H@1ln~>W;OQBF*)G!#aYeg@0Ul%UbLp!-n}xb zwc&e3Hv%`*U?a$7Qy!4pdnmf}m1-k>XwBQ=F^?n&L`TU#R_sJyt{ii5c0aLoX z<#NI87ZU}h0Z3;JGJ=bm_LQ)!IkuJDQhz5{7?{#(WP%kW&ktUaq z$#%l?0T+w!uRA%R=*9i=5@@H=f_*aSjU{;-xF;-~w1HLh_h?>L50{DNFGf1ghK4Bs z=B($QwsYuu?)K9W@{oXZ1xQa8=`&BYtvmZ)dsphbqw-QH$|1duDXbim^LI}i@=Cy4 zvKTV=%h9QAzxgC-zf7Y<-{~8Kz6P4q<_q%`R&zIS8%7|VWMlf}3QLpLvn==_oC8`avVi+{vSlGd>e;JFe*S+5pUmCrucvde3V zpuWm_yyW_|tP~Diu~rm5d#&gujjrxuUo^N|K)4f2qlh?M?0hoE^X16RC=f&QcfzDJoHRH zCac`Cxc5IU|FSdx;mM=+JGm7z`qxOc!4TZ@Sh!-X7&C8QV@6Su zgpjrPZ3?CcxwZ%em&IPVBvBx%VOvDDnFs2JT(e(w#!jwryY=1Woc*dZb{=yatGLvz zMXN-Qn6`?!no=ObFA4>H^~M!ki+47x5Go2GD+h!;wM0l?GuBkwqI1hV#vCH3OjcWe z{><{gaixzOm&xnIHNPE~ClB({8`kmwV z3#mPJznJ45y(Y~CwekScWPp(H^;I%Yfwxx4V#ZOW43kgE zSADl(*z|j!lvnm3E%b!Y12Yzj{#&qE0ApP&T0M8MXicQ^ly=l2F*z8yNXX!bMdCSx ztXGjvywp^~Cg@h zO_KUOJ7Seglb@Ym&J!#gnkPo&cjt*&`CIcum66UWsKs0%6V2xe*b%ZIM!C|7mzwG# z!J`vKgQ1Pa{vQ|dXt-ba3fWL_X< zDai{&^B`mufRM)&gblrqxU8wpvy|rAi}P(|<%Lsh`C79%4)m+ZKn@xzlp(Ao%uq41 zRmoz8UFEcvgc5#MnIAsG3lUMKYX$D@uNCcpkWB-GY=a_XCES4fw7gan*5)-9H*lL9 z`T2$p`o!AwO;2zfL@I>S3eNzbZ3tf?-j$S<`|wHD`9 zSc=_6AO_ifmki@GAkHZQYSRnr&LslEGNQWn@4i;3k2@7HU7(2N?XGn0VlkBh--{~+uLxPwBINuK3LXc=kG$KZ zk$WKV*JV>TAMuG780T0PsOx#3TON2jv1+fZ&JNV|yeGatbzt_~3^Pq83wvdl z$@p5=Hp47dtz79;ZbOfn>RA?twe%hrhu!h$d0~g6Z#PNiRlymZ%Z(>w&#0yTn?JFhxObHLW(phdh-YDd-{f(kx2zg{SxzYurVtBI`YS8QoCRfqw%`M~2 zLZ^SJOcTDA*_ui}B8SabH}7D@uCm0BJ|r(UJmc3i>LA;v-A`^59rUM-+@Z^V z+{kF<{NPGwec5WGU*IHC-iN8}#X)}LJ3 z@*`Oud)dbAN8gu!%pCWBz2AOMEZ_Nwg@&69n?#dKn^;b})NEw=q;x{^#f}>p!AS^N zb0VZUOcPDIU=od8QJ8Bjz5=t& z_QG=Ts8N%h!6RFvH;pul*_F$1evTG*zCR{kfKEY?K#%G3`c_OB6Qxn~Uz zJ6XHe2t#m}E1eCy=T{4HM96A$=V~FQ2-&1Ux<7cSsa9~*@Yo6IJi`l{AQZ{+uas9G zM`Y?zpYJ^)uO3TlP9MrVL45Ch=Iyqf?}^cT@nhV8-{0{VOWn!aA7fraZ*!&7`b1{z zW}YQoeeq`Q+p!3_@5i{(1&-X{c@=quc40}caB0nsV77u3^88ChqfGclzK~a$kIHY* z!smaF%8rbMKlxw&t~?1wfB*l!B~KyC=IsN#v@;gcM~&L@_l-P$j8nVRFQThZI!WQa z7Zvj#Ax-gKenEscA>@WZx?onk|Il!|(#35DaLcoe;L+xxJmWknt2XP4v`n(#m~0s} z;=*Nf4>)bspUV#~X|i&k;P%_~LU(_qEZux279qZY=n|yCNT=p5Kd??T-Trml>?sIY ztL<~8i{{U(y*SZc11S%EUmtOynzkv2N3c!1R-*wuakKUa{ke3vu)2R= zBi8ADSR?xGw`&9sRjzbi=j*dth+yy4Vus&KgnkHFG?6YACh`EHX0iT!FeprmzGkts zTqTRQ3a&62?+hmn*`iq3k2^zFm}3`;VP*6}A#I};3eAm>$3UdBIluf)Q2~V9un1WR zt#GA_G18J}b$Gs*X$LNOY7sKTEX2|Ej+3=fhbqN}cD>^i3w$rKp_+17dAW9IxoB#< z%VOB@&Wf8D>DW zQeDmCncgy&SxE{vB~w|e$xxO>(pKnSUWpqTJHI7!w%=GIXo&!)}^AwFJCHJa?(G8MDeaxym*bz0n}I5fANd<)SjBf^FF|n4LRRoX7SZl zm3&hRdi9{bc&L(d_*0bUmG5YFDlbdi-N64*%~Df667R{%OYxSHUh8N~F#6`0-@q9% z%x^yPX;iyct7Q88^@9CXa@;)^wYuv-mAnQ0)|2R%l zbK*5f_Cm&M2Vj-7MmFQsDj=+qt9qvoEd8}gR^OP-oI%FnG8rGq;kEV>=Nq#>iYIM8 zHP!an6?o~Sc`=*>`bm6zfZ!MOX*a5vF3G7A~+n^^2vQtOrr9l=!Ei_vn#}cKE5_fRlYyE=ueSA zwHa!vhg$8$n$@2KP(C^wa_1UjWm22s|zAruL}|3dUZvF>xI2DJ8``(LWJwp9TBcq4@9_L(TH%p zVi4haU5p6VD;5#1R~#Z-uXsebUI~)1GuJB-5w2HHM7Ul_h;Y4nA;R_QjR@DP4@1|J~sD$6b(}48vd8r4(Vilp<`G zQiSbNim+Wu5w=Sy!geV|*e*px*rgOI)J zgc+juvgNPhXt0TcGwB+5$-}@ZmUp zJdWccqh!EIx6?@ng|sm&9olqu5-*a2u;HZoX|k^r?DF+Z1fx=Bz7#+N6o8WmTp&JG z4-^C+5PUR*P?g{dg0F@Ur4sx=@Y4|5ssw)!{56D5Dj@)b01cssN(clYP(w&m2|*wP zX$bvPLNExy8bX>%2mv8PL&#DIp&*262%}U&7zkk+!UUBN4nnwwkgpOVK#0%~3ROZR z2$33sLnSl;p^1iYl}cy|LQ@Ul29*Gh@%W_Q)ll%TZ=7a4wZ{P<|@ooXhQSJ@;8d zO${7kc>iyNE{LH`P;pf9UwQ`ZT-O6g_rWt4*Lnu3r=Dkg@l34p%v>&qRE6`X!9f?k z&>A>g`UMwWXp|9W=Ay9<60%r7CQ;HbAY}t)7K9bj5Fl4U;OK{rfR2EUfR2EUfR2EU zfR2EUz~2`EgW)!E+{1^T^mN3`h`5NO;SV{}RGJ>@2V|yiXdz`q+!OwJSZvspp)ZC+gp3Pb5%g`~fWVsr_WQT>pX#^C*WjDwv&i_dp{t=t zJaT4#Tj0%S-TvuM=coR!@K?V{dJtk)QzN&)j&!wISN+wip>S4KC9{v(fv?J{-+DDn zeZ=q9QvK!yP$!6iA@l%-{pKSTU8M5n}8^2Wc{ry;GA3?1SEB=ZO zD<0lH625`DY!S|B;P;+gytLcG73gx_7UB8@>Eu$Ud;Sx`mlpiqv%hqN)PYXrJ|P@J z;hLOIgW>36dodj5X;5wg!n;eyHC^_f31;D)_DjWy($~(AeJpi4qHJONk#MNH_n^Ez zd`ZHCj~$eGtJ@FXXIG>JcRbGievI=U7iiCYT=>Ym>2cvZYu@8rnXSKX7HA?QP(J)^ zGkc?1jgUPWB3*cVD~`73k*{J6)3l95`ibp#9St2PT+G~dL>5krzHx@a8Rk*>y~}6j zoZsSoxoboS8s{CkXw22?pU8bjE({`sJ@R_v)j?}626XS(jvVrhePny0M z=`0UfisSSl>qWVlim!KsB;c))F8o-P`Flu2&o%Ik{HcmnUkt4%2WgTtFU`zawwummYJ5t+|uJFIT&Vz8Vzsro8+3 ztIwxAvQLJ$aCl+cr+ALvC;XaCQLqH&>~`sL!R;3lHwfozNN0ypqZJSEqZB7?Bi9Qz zP6*liBGLuc3GBT7VVC*{^}=!)oWfltACuM4&YmHU$#;-{-D7Vm!o6R zvlYp}ap89x9=lY}U1EGWE(_7wEeo%&yA+&v$?%YUZhM zqOZ&3ZhTRDm-67w|HxY5w{4}s-14B{_LlqCiqU3;65hUsYb7Bh=LM^8Q!q!!E-?`b zu8X~JO`_B8)z9S>5!vRWC;gtb96T;>{P^p;HicHn3xe}PlEblKzx>>bx3sB}N3p29 zB42s^#aXL@Uy{Rx6FsLRTozZyD(0eV(JF!Av{lUQlmZccQ7GuEH?9z#)i$gUDiI-f z3xw>-6(M~=SW|6_&V>&;w=t0jD$~>68-IDH$BxVGc}jX*URM_S%A~5}%2xjHJP0R~ z8$NzjW_5n+%gWgJvf|P6C3bSX`Ttf4Cgv#2U%g5&am6ZD6Dde%52!D!5KZ#D;<#?- z3ZcIdvfl`#3#N-}GfkgR|1y13M*q+Z^T*hZ{<`5+ikCrnj()o0;nd={<_O^@|W|w9t+#HL%2wt{D5F)`~!l?OCJzwcgzD~ARi~L z-#LE2m{J|PUw9=vdcRQL2-$ZX(uud4>JsuzS8QGD($i#>u5MR-@46-f%(pN5CGHD& zxnA6I@&)&8t&)RY_y+O<-k09_VXtjf@>F=KIC0}sG7aWC|L;k;<)C4|w<>#57QPIh z5UwC+EEf8qV6jkQ*2O{(=Pnklk8~bTM=cUPcH|-_FVQ!TtAYlaqD zp_r6+_v#OWW6cYn>HBi!(JHx}Y4P%xtE%MB;(YG<7U4^`w8?t@M3p=={i6BNzH8(+ zdISv{`PwS^zIWd3{P2^j^MrCZG*7_w?mW@v2j+SrD=yN4e68x0-6C!1Q|vnw>pm&QhnakPv=#=QN62cY; z=ZV^%;cfjPSN|Yy>(d7v%KO@jw{=z5*X4EH)B8GOeshL->tHw=hWB+IkKuit7dGJL zh5hIzW|-@2axVnM`}!Ie#|`nmu6kqllA&7?x5S_3ja_2{)#r`?h3>AbXywYJ9c)~-RjE10g!Tl?{=$TF_mYkT8*Z`Uw=p@wNs@9kpFShpAV#`or~ z5s@xnye@C<1X$yfP2-6xu-XH)l#a-~6`RDBj{VGH%iU?ddK4bY9~d)qA{# z=L^7dUEbqQ=S9Bpyvb{pz8m6AUiB_tmsfdmcsHTwabBx0`SZNXYgQ-f^Dh5U4%wSk z$}&}LFY^;jRF4Yn+BY8z@w=H)E0vNtBUzSzDR>R5k`efRR!nAC^lDU@Jt`zoso0Y=;Z{9f20S&5rucPJKtGzF}0u&-Zq~WbL^8 z7rkjr?WtLBuFpaF=^T{@T)sG~`TRz8Sgx51(?^p0#vUu#_%fl-W3N=nN#mBE|KPqV z`Gu=03_l@UUOuX4G8~s5Dv<2g`aUj?es1-Oq2|qUhr-!ctn9H_7H_KmLz!f!0Wdvx&JlxH}5}HCASagy!$bP>o59kePDH! z%r8a1zDxOHVS#+<>YjTp8M;838Q;b)`_H|Dx#!?=aIRTqsn5ar-veiMc&>Sa(h!H| z;v>`(vZv$o=+w5~e3H}{4$w6V77cNL{?{@r9HMJPIUbV3A6NyA6z{`sIxY*X;R^9N z53I}MvaqCIlZ)77e#IH8Mjn4vU|t}M!sG?wNz&EymLzDX_-f?FD*0l5OXUjH_pkiXz=ZAct7Mm6{H!xn-@o!3 zHq*7jplpAwc)^U2&1HmaXd-OreOlft3TyKoiyQd+9b-T9z6JE*Rh2BpMOQeRKCppm znVU>si~m=CdFz&2{ZA}%hT~3wnpT7x7sJTJd@274MEdG9jnOKkzvR#jKhJT2Xo>hNXQ(aJzUuvIfEzYa36l+Ds z*U&Xowg0&U%^#z0V5G@hDH+Z#qRB~*{#6Jl`~P=mfAU7j*j;sx*PZ?LVgLW`>>dyM z|94mS|L?Bu|KDBR|GztXstdtA?C~xX5%xXG#t_Al0 z@4>ae{{KC=78fDHwdjrr*P;g^T#IN#xE3*pa4jyDjL}?+SVXuMafom&;t}CmBp|}I zNJNBd(GwA_MG_)hi(ZIuEqWuuwdjKg*P<^X>OP!*mDuU!>Imov=m_Wt=m_Wt=m_Wt z=m_Wt{0$M%?f<`Fqx^v^k(rH6&V^k{5w=Sy!geV|*e*px*rgOI=m_Wt=m_Wt=m_Wt=m_Wt=m_Wt=m@wWpxgg$aQx#g^!NYz`~QEO zQ0o=a5zrCP5zrCP5zrCP5zrCP5zrAhD+G*&{wG4let+wDrk7he zgs1ax`Az2}wLQ5ZT{ONV8fC{9RnjY#1=m_Wt=m_Wt=m_Wt=m_Wt z=m_Wt=m_WtGzJ2(cyCyFt_4vh=0746(;tz^IsZnNs?+KmIWZV~r8wk6M;pl&@j!UD z@W8OR&?6zIf;$A?81z=4Iq;@{{r(aDd;AvpUFz4;Z=dh&zTJF(H%>A}81oDn{A8eX z9>R_|AHwVX-8gHihm@CEitRIdm&_V|pYbA=^@3 zYAvPvYN|)t3(IqDg*Hcp$v(w2(pEgR&}tfJDYKTDQk6|FdGAG&r8wU-NZHfSG*aw? zX|ffYl4q1#?d4^rk@j+j&0bta*$h>DALQHEVWYj!Qe-Q((%p^%t7(+AsKi=oaexUE zIG$=XCB!8}C&ne1hL|i4)38!&Ss7?$rt%V#!*1$n$}X|gR1YrBk4Y`C7KuM2tYyv$ z$Mxxx6lw4=oR9`eP4Uq{O(1}kByuA+7aue1VQ@wi*nvdM*dC^FcEpCn4C`UavRZqX zGGj&plA)F&BBv5Mwqn99yB0X9Iq}*G3-=DrDq2My2~WnMraDuwnqE9LCe7kN6~F^{ z?RCGjNV?I*E4i|u&nLq0*8Vl-b(qa@1+~wRn3$0@)uRfmrA799Y$I7@%R{XbVyyW! z)#4sx*E2;*l42#3T6L1o<~YxTjBVrWGVSF(Oc^obxaH9R$T>MC9alLH2cSr+RnbB5 zBe}WjuW+sUQVUUKsg+QBdwE=+-th~ho24tHo+@`O!5O*Kxd7a~%-kiHmpQOaCh?IC zo<`X7us>`e8fIY3s2(Qd1yU*+rlvaEo^LHA@fu?(v6n_?*=Cg6@=fXZTWHHIwUt{; zQ|zTqc}&g&5rQ0@TsR%wLJ`4{6=e=r(2!X9JDLH z`#6W>{Cr#9^fJ;-=%lksshI~NItt2irfoVY22aH;bhQaid1<3uQDfmO_l#85Fbgzu z57Xd*BT`Ly_Tnj4l$~ca#mC0R)l@5N(Zv(e8fm`NORWNZ&}PCJ1rOw}aurewz-tfF zAnL=z>}6$ENNug|?Wx9I2IT$<$NYPIU2XD4bGLffeIfo~6W+XLCRhsD2iW zHUhh1jOa1ao`=jcETxuwOGV5mjEZGwV&Vsk_o5BdZv?N3$kA4#`!)%B~TBk*vz^-&taSC)8v{~Mn@|z zonk>JpoVvi!`zn2)ThiTprU~*3boT7Aem7}Bh|11Osibu6($5+B=x7;(Y{5BD#Y|9 z5RB1Re>dP(^PfqZDq%E(ts9ILeE)_&L)d=qNU@h&3JYoWNAubdw!8w8Ae!$Dvy?h)sLxEANtsw+Xf}@O(VUM2g{DIGnb5wB zSeYkC%52vu`E|>AX0cbsN{um6Q-lgOEDKy8iuUXTX2rWDMrTe4R5sTDI8br$W8JWtAtfr--dtOA(A3Ww;(4onSA<(ME&MH88{ zRO^g#=ghnelXNJSx)dq+Lp^#uEp3wSg-Zsd9_TL4&+2z`zrj?5XCju;>9GFn#oTf( zY=9`47#UI{4zCmjdGhpAJYTJ*gi$0y+XZ0y+XZ0y+X( z1OoXdbJ`TFu2$q)OUZt>7g;dL!FZP{c5qU zMbILi=nl0PM`QY=EQ}U8ZC5b^qt232j)9tMwQu$OmPXCs3{r?G>!s$z9~&<4W7~oJGGovcTo7$ zQVSN0osUnDhGV_4ojQx_gi^ZEi4{6g`5`uI3D5Ge1Y^fUw8&D7X)rD0XV}C_!Vts< z7Fi1lQ74)#*HoL*XF~{VVuox=v!ZCclMwSun%cWhVX7R~_6!34Qo=hbYxBoc*c1f;K73jqcLln-_*Po@p4Bj*J0gDH7LvI z{Y_kK3~WEsu#tnYE;h^xqo~kYUS#4$E(;qC5Vz#P+36aVv2YM~KzdPn$TgYofXa2p zIRw_p3tYi5sGY-VMFS6v$sm)l*fesM#bTRA>t4fRvTLey#0#e(FqIv&qUvk~)yj2S zjWgxiu~1Ko1&XOcaskUFTD^8!y8wc1y;7`^)0-`*8?xwPup|&umS=fTRF zk4X1RiE2Z&M;){W%&|gCaUSd|EQX<#l4sfq(MBZABP``tVBID?25)L;p>ZVIKg~MJ zR6+}%Y~`t3kO@nT(B0&WrUn(Ulc*%%rV0;%Fa!0fluP2&Zdd6*X7agb>ZLz_hRZ zj;avv1{@|{=@9~3MlDC$%u$L}SL%*vF6d-h6i&9K7Nn!@kOHJfo63u)7u#nQn<}gp zSg*tdvHPI37%I-m?gh2jO-oN5l%Abz8k3WSwHxnOq$+Z;&gV`aiZ!7a$@z|s-hf?* zvjZ&DT`bF|S$d8c=!OskOj!-(x3;Qnib0{Ccd*Km4G9GFf13OHhPo21S?yI;pA#R& zn$1EfMQz1);G15r-iH;`=Y^svuuLz4$nvXYEOXQAiev}~vEy20tp8=AhPk0VhDN8@ z%DNU*l-g%kK%OfKyOr2VN-bFQw`xspuS@;l1f8zeYH10UFvPnhEU2~x!|JhvnNG13 z*h;ZzMvS@*4cehpRod!e0G99xzI3rpuJG(copdS|0USJnqFZwbU?#B=zh0k;*GAkA zd=1Zqs`kIik{X_g+duUgJ^XtipzQybp!)wyP&dp^;Jy8^^?d?wn2&Ak6L=4NY)7BK zd*EZw`2^krA3Mw^@E-WsVLpNPuE!4Z3B2PyJOU>0j`#2gn7}*L!y{k1 zJsbfhu;)BD0!-kY>fs15fw$s^BftdSiXV;u6L{NyI08)IZU5m2FoC!IhaIjvp(RD&2r!`)Mc@c9p*2O|2r!Xr3P*s6TvIp#Oyruv5nv+M)PxAv6pjEB zxu$Rgn8-ElhzQpdjsO$6rkxStnsz~iYkDCfT+^7>@UJ`(L;J&sK!==X3;g1at&+1at&+1at&+1at&+ z1pXli_!_PXsq6heehw3fuSCrByBPWvSS3Z2D>F#6zkVbV%tV2aiNK8e=?VIW-=Z4v zlnKAC!i`40Rr~u?Nk9I41m^R%F-h(m*&@Fg_o;4{mH#@%*4o>i!la+59otrsf!f-s5#`*Zo$sU_IVR9y(;sm^I zM?&ss+|ZA22%VE{pOiJ+Ha#CjnYk#uT+bPvJ$Cry%zzpBlTtWupE)_>M%yP%8kdhJ z`)2Z^L2hYToEAK1Y^E)Dcuwy@14RDebH?V|M~^My>;+E&b1uubgQ33sL<@1Hu;V{x z!nom6h64wt;`ROnyDc*}e+G(WPVfc6q~VkE$K}#JNt}c4oXMGEGbcN-3&eF%zI}S{ zK`DdyhKM?IcKunX3Lz}dr+E4Xf`Kz+~~2>%QACwhTFiJc&^Eu-26$C zP;v%m<1;6}sK^Dk@0=;aZ8qegkfY{I8CNu$9v@`p`&-VLl0SVo-5@xZ=1iGUG=1FU zfZhxZzF4r0B{&5tt>)Nfq8&z0v5lL7s)#lYoilxG=9FA9$FV|o|E#S9bw_qsqA6U2k!ZB z8gWf09cSw2FJB4}C6b>%@(d_8n4q-=CitK~OI8;It5SnTTSE+=iAT-kuZcqu$K#0;1 z=BtD#5SnWU3spjM5L##mOH@J&5L#*oD^x;D5L#&n>r_H35L#;pkEw*#AhgjCo>2*H zKsZlBctItc2SQs7VYf7?r-boJn4pA-O4w5gla#QR682U?kzc%$Up#WA{NwRYgd)Fq z`~Xp0i~QoTX{5Lo`Nc~jzj*AAM(GJkehJ7g5Y95m`DR{2++;#UU83lxxvZo}<2VnO z8%kDp-W^ctjwYRW=@A_P9RVEy9RVEy9RVEy9fALO1hD^Kgjxw7#s8mrt%o`SIs!TZ zIs!TZIs!TZIs!TZIs!TZIs!TZ|6T-o<9!l&L^-E}GQk_~b36WsObmuKVU!OYM(M-w zr^$Jee&`732hK8z;4xG=Z)KzOM5=PW4q~tWs`o| zdqNH@ej;a2cu<>TNVY{QvZ#!EImhW2Ea@X|lKiqzP#|!`_lAgP3dC$}x@?i7t?QYq5eUm=PZ99I|;maYf$^UuhKc#~{PcfUW zFa7P&55C&=bI<7au6RJ+v7+@`A2dnWx2<}-JNLa^nZ)w z>QS%FFADs4d(Ov^&(G+UXbv44VBYO`U`Ln!d%i8VeleikJlhAqp4U;n;@!N(|5lc>EyMNfRyX(VW4fsr&YTA3U z+xEwv>|K=m^gY`*XI3rxV#a3!PQGc(+uWgY+w`?Nm;AQEPi{N5eEEc=)!QatCZBqF z=N$8M^R`_#to)}Pt={W@*CPl0c6|2iw9h{s`ki@P-aWe>H;<5SdLeJ($78>hCl7fr z>EU?++aGu)zvBnZf7+h>^~k+%%^J6@{O0NJ@7dxbKURF8b;*bm&(2>EcDuANbK509 zcKKl2W2`w%b~CIzTweh=yGh%FKKMqCv!DIzH%GUDa%Yr=bm9}b%z zmK&B9)+Ovn=&I10L#KuI4*ezM{g7uu7KIdtB!v7D{7kSVI5oI)@NYq{1uY3G3K|d; z5p+0kW8igxBLh1H{t!U^QT0PdKu17FKu17FKu6$@MIaEKg{4Z@#ulN7R;oqRR9_Ys zH?bo&fuVn4`08+~=lvm`_s7c8FK(X4~hyfrKGR1U*P?5kqM zKL>VMX~+MBz(fdvsZno~3__R$H9%0EM0e`IK&cy~CBXUG!H_EDNZHab>|irg8YQJm zBd~*xn>eNBWDlDdbJ@`3?DUEKFB?2`RQd>9Qfl19q1c0}wIauJMAk03_i5^$k^1PM zF{8!}OP_eLyO0uFu4j!+ygy6D#!rl??@^%P#=lyu;MmKfF36285YEG9Mdv9s1K`A+ z>pmxFtxoi-Hw)!ace8W_)m48(3(d_n)g=XR8b7L{#99{Pj3&5)K+kJ9EP?P? zq%w%lD5*j!L0Ber=6_Bhq9^L+mZ)`edm*SAZsGFXc{4Ozs=cVhUTiIPl#R0F7FtPq zEJfCdz1%sbJTx4qViTbvaB7!|!EG_bz6`uuq+F>G*BA3YC-3xZ-MkaEZr;0q8t5b& z{Ed>?XcFICx6^QVVIcN-^4eA6B(>AD(iBuv%@P(v9mUk&L>C+%h(4l968Z?`=|av| z%_&AoMy?~J3=T(O%P&_I2vP2C?JrAC9hs4wI%?t|NTfP|%<|0C$CYU|GEKl9WnMGO zPEDBD58GeWnUT>wqxiZrimyK-XNQS_u1SSHtCOQRZyC9y#L1CI&m&Y_cR7oT<6f+y zj~+_*iGA%z0NfNOR3lLhzN%<=qt-2R^sM@1?VLM$|Ke>_c zb1ex!H0(_ zCzUrA;W(V*m1|nIn}Bnoa{YIakP-N8ogKgLF`?%4`?^y6GVn}}7LXXVF4Qjd9ea;o zx9he0-sN9YRbDOb90T;J9nSU$lnnSWk~m0?y&cPP&8vQ2{(?a*Uwe-ze;Dd*m!{zt zNO{2EOpX>x`P5IS&v-jdU%t1e8kUCoJMrhWTrZEQY_B(<>*-?0hgmUjX>aFGUHlEKk%DGT8U+&La+I{v9g-?OMc>99|f`k!5`)zV1^ z8x20Vr0O)Z{-jIu6)B*ASfM;VMK@s{W@jLOTZ3rT=Lhp)r8Qh}Jkyr~f

37{qw0Se7ibKqOaIf@K=;!);Hm#9T|HAkPsLfE{-<#w3ui<0 zKaCZn|7pBX#{jMVpM>>6Z!feCFt!G74ph#L3M{iif(oS0lOS*xO&EA(Y;0`&N{bqtvKI4ODdZ%vZ8Ek&e*`D#0fsu z_!vi_l-n^UE8Ub_E;;N)7KhDV+zhbdm-5#ZB&X$=(ozOs_7a#Ztxl72Dh(-8+WnOQ zF?Znyy=jK@IKQ;GSl{U0K55Cxv9U?Z(&E#T6Afu`K55dhQv1|WOOZ*+uoYU%OkHP7 zy_334z)#qVLhZ#qLDvp*Sc@i@E&28dMP-%7cw^jk!?SI9rS>w(KE+{5&U4tLnbu29 zX%>e?GUen>v*tOE61WGO8n_k+yn%W=la z`=WO&I6uW`@ati`$Tat&_9=ngQw)(QhS%ymc3bWyqo5`T3W$C={F$$7cp;_){TC1+qRCsJbFVyQ~1i>ls5VIpRC5DkPe==U8lFYJiE+ZQE>F?=d| zg9W_=O^3ciy95Au%p}o*c(NPr6MG62K^%+S?wWwUZ9_k#nE=`my^v-_wBd#YX;ujE z1ZAvJ!(QMaPDxG2j57vEX5n8)+-E}`<#@6Xd88mLcy_3s}s3I+@FDesi9AnHv{oLh{fSL4rN61J%p@4E}8F)#mqPZchK33k?R9K zW5FYxXNH_Nd~$%(6t0C8NDy{3o1B1=+?5^& zq6=ql@=DT0SkFWrm!b{S-3{F3izH9*U!SC59|X*mf-!vxH5#OFgpoL#A|8dag%MK> z9E33a6$7M5JG;M>56Ok+A%9{(o1E=THi}z133{RrTCOMhZ7;}gO-);4IQpj@7?-mi zjYFDgu2MGYDcy%Zq9O*~x8m$7r9XA92+;ifT=V!No_{j*`ryZY-=4AV`yo4S`2M;9 zlqZQRg_99h;>6;SAq-2JpB{@^YW}^Wj?-RQj&lEBvSJ8#au5g>A7o^XhM9z z93`5RI2%zP-)u|X=1q~3FFlg%`yi~LGPT593;#K(^AUt zV1TcfXT{|0{YwgdbD zQeYj85Wp*I23{khD!U(bPOEAW3@rfV2|V2v1syojj<~)XCmn>g{0Vi^ni?NY zk)$UOhp!zRbhjEd+)!7tQ36a8*;FJmk(N6sPdW?+)c~E1RD~VH>NrI4*)XHU<8+(K zoM84N=e4-wulp-_6I_Yv5HIc(R=F2+wN_`xGvz_;r9Ms9YTSEBcSzDlr$t@d=k;&( zF4{VX_9JrU0+WLdwMc`3+I~;lni^_hN-a@Bu$#O=N_IF(ZMo$bn@wXB$UrltV#ZTqDYe2pk{p&?*p*?yQdn>;k#|cNoYud?m3?|AWhC`Z zPKfTE7TY^IF*!ayIwd_LDLOGOB_%etSA5T2y%MiRNuq!ESGsvvFzqzfzk{k8aKj*L zVM(gJ*kPURpp0XYG{#z52JUE^GT4#Wp)4W3e}{xV3GwmqFj8?tYW6@R^h)TNk&v1m zmzEIUGd3Yfd*Yt7VJZDPB&8>%!lLYzmK573HZ?X`oS+U&?cX7}XL7HkxSpxW8GYhY zV(Cmu11T){vO#uO%;~co*5Z6?scCTW6#K-m;4XtuI302QuT1Ej5TBNm7#p3M(I+-K zE-p1Ax_5eFLUb$@(I+l0HnwN-)t8J(Nx#JTR4nH_)?PZjti+OMMTQC{{o~_%nCMK3 z@7=?cn1opUEucK-F(ZHkNN&wk=Y{(^*DTE0&g_VSV5*`>VMCslaTBdQ(LwV*vIWZ& z8%~|~3F_(pVx94f%Qqw2P$g?&_t8xC?2b^ZGm}<`#z|{y-i~GUtaHbDd*BSxd^PLr zVRbyGmam4|+lY7dtW!wpAvEJROp>%nif9{)*=~PhicfB^l(##=8Z1q1B^4})vTg94 zR@r%aQuAdycI=RzU)mLBe^(e>WTpu-(KY$E!3d~;sZe`^!8p7k>HslMV^gLBmJH}0 z8SJzqOiKxWOrEa?Zp!OudNk@2^WMmbmZ>{d4S9Iz{YxibdH&!pU)@(@@(JD@PVbVW zlh1!K@BT4I)9>5U{kDZQ-~U8uuWkKtK&BSL>%82M(k)lY*N~P56`?e z?R7Uk=CFQ2j## zC9Q?iq3*azJKaqI5~n+87;Y^4U&{;XdB%E<-WbkO<_)wSe=Y~4Q zd3$;`mK?^9r5;(l3h=EE5r4aTGlDcv26#xYBOl-^R2^wzHw)a zx2MEnRT_HtOlVBkf|OdjZa-U$|L2%E_?B@GFP^n+@q1^IhswvkJX8D)Yrjo-#CVJK z)>l7$$6FpFz`+#OH>9;_&>oCVD-P2)#|M4)-G@1qCmdU!JKp&fZ_iUl7X!UkSN+y% zn18o*NjVFXO&45u;F8b1Jy}~0sP2bi&s4j9(6+uY=gZ(^a7YLjN;S=}x)LufiNMTz zX;b_;WtHN5;-%aXK6xX2PEC<|`sA+kKQ$HiBuKrCi09$5K%&TbhN*#4!R?06+R(x( zEmT{87cE?kWb|x6@stgV`cuD<3O=bhHO&>BjzW~Y3Z-~s0+!Enw=~IX7Bcm+Ur!ZD zO%kaj#FxOztGpkEUFE4_+=sIB=lT^~_UnDFbUV_mEB&V_iOcxr5~-)kYpIlA>}kl` z(j>oG$f+x&-17`z+!iQJyWQ}0eT-j;g{a)BW_g)mr|yv^O9G;gqSRT`AXJf7|7ckH zGV(lWYh1;GZ-y=!>1kTMKY=%g_1LprWJ zv1wa%zSMK{F|4>9lcW@yyM8Oo4Vigj+4(_el9+Jr9)A*`&zv8f!EZNkq7U-uju{b z-(=pr>FD9hAKU-2lUHOacr|&;&W&5ISs#fkn0f7x^d+s6H@)=3?4yf5igog93UKl3 zCmr%7E&l=kJsH{k)m>RV4t;Lk6x4IV!Nk|QIQhXtf}cpb-K~6n^hl)q$m4rHi`bjG zwbOGCU0W4)xwE{Pfv)oWxjf*3hvKD^k%kXj1m89yC2juL0k^-^>w`ni^6-$ey!cw> z#Y;yb9qCi8&y;P*xG8A-sYjpv;3sE!yMtWi1xSZNU1J97>2`H8a_ix1cN|Q6J@dZX zzAp>AVZlw#@{x%szm@iJw|cu}btLk;H%d%Tt$jad*(dWK{q~ujVNQNJgt+(#bmIp& zXfh!@cI>~oxwYkz%oQ8w|1$L!-wjTFkV!3mJaBQ#>PY0Uy+8KrIjvvXJ>7mjerT8R zW+y+hLtXp?Nr&3hJvx3+5A9^+*w3~FJ(1od{n49Fq@O5jmFeUa1qfcd)Sa~(lJyjG zBr>7T&)p|2S)8(TXS>{pHz$4JtjFtNu6hL5QxBkAX90xyr!7KO#5{d0XTjC4U)Jf! zL+?84fdWob504h8rD$h2J4ZN~bNDLE`FPdD&;VZ4WgL)vaNX10%io9|eDCJ> zuS{Dv*U!l$auiH@(Zn8_&}-I5BL6S%#Ji*Wf0J3+eg1;0x7&hF-Rou8r{SMoFNglRO;C60O)7CcBlAK9~R5uP9$uN}haz5lan z=~L3+WtB4y%FPb$yr&iACrKIh(xO3D3zq66X))5Mq%^C;Vk^WqI+)5452LI_CD#9E z?>hjZR-XTlDk9>k*ik{T@e~ySQBe;#+EE3?UXUh5P(Z+rfCUj0ML;PcRfU)K&*n%jcidgj$M?PO@B2^Q8!sd~vy)FIo6PL&u8)J?A|G&>oxppP;y*as z!eOp+V|hrOVA$X*I&e$FR~GLOxh%@hB9>EtZ)+qPebDlbkxQe%d?0+uqEaZN8#tVN z7UgyYHp)PLSD+^OEU++K9p=w>XyixEH1}_EDdZDlM;qn9=WOHOcCtN6b`fjC;})F zXd}=jpeUftKwE&Kfwlr6dw?t#MjX&KpzT2MKnXyJKuJJ5fRcfB0;K?@0;K_^17!eZ z0__6I0?G!;0m=p14U`A82Phw?0H_cMnaV%m{}(|$#Xu!Mr9gXu%7FF(l>_YuIsjAw zR0(tt=n&9hAUwb980;ShIstSN=oHXtpei8rK%NCU2ZYLBfZvNimw+w(PfS=WHB z1Kj|+33LnSHqafQYM>gRyFmAV?gKpldI?B(dpeY`rs zIpPr6jyuB%8z1QBB$|RQq$A{#UEw(K91rJ;?Z$TuFTEX#c84>lB{KH*_CqaELoaTo zy_pktUm4C53YoD<4WU3hwShmL+8K+d4wOOh)JaNMJoUWX0)5u#xK1cu8Ew999&^@3 zqlCNu;VSc$zg=o5BjS~EV^x1eeNiwBopmp?1GCf^G+;>dubiBy_K=14(S}?hAMjSW zQCT}^(>)=wh}w00A9>IyISNH-1>=^F?uLDu-{UMRyY(fT_LVahwE~HPwKjDKaLK3^ z?zZT-^RxT=m5f3ktseU8i>nrkx`zLY6qre^^$(5nW6ZJ=X z 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

J7*dof1F%4XccQW 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 literal 0 HcmV?d00001 diff --git a/docs/wiki/neqsimlogocircleflatsmall.png b/docs/wiki/neqsimlogocircleflatsmall.png new file mode 100644 index 0000000000000000000000000000000000000000..a7bfa57b263e889f74260d4af8fdefefccac434a GIT binary patch literal 17579 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

O+n614?YvKQSnR@y`>eFU0{GfyJvRold#G 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 - + diff --git a/eclipse_dictionary.txt b/eclipse_dictionary.txt deleted file mode 100644 index ce7f085e6f..0000000000 --- a/eclipse_dictionary.txt +++ /dev/null @@ -1,12 +0,0 @@ -exergy -kelvin -enthalpy -reboiler -polytropic -rpm -kappa -esol -thermo -multiphase -asmund -solbraa diff --git a/neqsim_formatter.xml b/neqsim_formatter.xml index 7f2936f512..10320d639d 100644 --- a/neqsim_formatter.xml +++ b/neqsim_formatter.xml @@ -20,7 +20,7 @@ - + @@ -79,7 +79,7 @@ - + diff --git a/pom.xml b/pom.xml index 10d524871b..40fb2c611d 100644 --- a/pom.xml +++ b/pom.xml @@ -1,18 +1,21 @@ - + 4.0.0 - com.equinor + com.equinor.neqsim neqsim jar ${revision}${sha1}${changelist} - 2.3.3 + 2.5.32 UTF-8 UTF-8 + checkstyle_neqsim.xml @@ -23,20 +26,31 @@ + + + com.h2database + h2 + 2.3.230 + org.apache.logging.log4j log4j-api - 2.17.2 + 2.23.1 org.apache.logging.log4j log4j-core - 2.17.2 + 2.23.1 + + + com.thoughtworks.xstream + xstream + 1.4.20 org.junit.jupiter junit-jupiter - 5.8.2 + 5.10.1 test @@ -55,15 +69,10 @@ commons-math3 3.6.1 - - org.apache.derby - derby - 10.14.2.0 - org.ejml ejml-all - 0.41 + 0.43.1 gov.nist.math @@ -78,7 +87,7 @@ org.jfree jfreechart - 1.5.3 + 1.5.5 com.googlecode.matrix-toolkits-java @@ -88,16 +97,90 @@ org.ojalgo ojalgo - 48.4.2 + 53.3.0 provided + + com.google.code.gson + gson + 2.11.0 + + + + release + + + + org.sonatype.central + central-publishing-maven-plugin + 0.5.0 + true + + central + true + + + + org.apache.maven.plugins + maven-source-plugin + 3.3.0 + + + attach-sources + verify + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.8.0 + + + attach-javadoc + + jar + + + + + none + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.2.4 + + + sign-artifacts + verify + + sign + + + + + + --pinentry-mode + loopback + + + + + + + org.apache.maven.plugins maven-enforcer-plugin - 3.0.0 + 3.5.0 enforce-maven @@ -107,7 +190,7 @@ - 3.2.5 + 3.8.8 @@ -117,19 +200,19 @@ org.apache.maven.plugins maven-jar-plugin - 3.2.2 + 3.4.2 - + neqsim.thermo.util.benchmark.TPflash_benchmark - + org.codehaus.mojo flatten-maven-plugin - 1.2.7 + 1.6.0 true @@ -153,7 +236,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.4 + 3.6.0 package @@ -166,12 +249,11 @@ org.apache.maven.plugins maven-compiler-plugin - 3.9.0 + 3.13.0 - 11 - 11 + 11 ${project.build.sourceEncoding} - + + com.h2database + h2 + 2.3.230 + + + com.thoughtworks.xstream + xstream + 1.4.20 + + + org.apache.logging.log4j + log4j-api + 2.22.1 + + + org.apache.logging.log4j + log4j-core + 2.22.1 + + + org.junit.jupiter + junit-jupiter + 5.10.1 + test + + + colt + colt + 1.2.0 + provided + + + commons-lang + commons-lang + 2.6 + + + org.apache.commons + commons-math3 + 3.6.1 + + + org.ejml + ejml-all + 0.43.1 + + + gov.nist.math + jama + 1.0.3 + + + org.jfree + jcommon + 1.0.24 + + + org.jfree + jfreechart + 1.5.4 + + + com.googlecode.matrix-toolkits-java + mtj + 1.0.4 + + + org.ojalgo + ojalgo + 53.1.1 + provided + + + com.google.code.gson + gson + 2.10.1 + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.5.0 + + + enforce-maven + + enforce + + + + + 3.8.8 + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.4.2 + + + + neqsim.thermo.util.benchmark.TPflash_benchmark + + + + + + org.codehaus.mojo + flatten-maven-plugin + 1.6.0 + + true + + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 21 + ${project.build.sourceEncoding} + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.8.0 + + private + true + + + + attach-javadocs + + jar + + + + + + maven-surefire-plugin + 3.3.1 + + + maven-failsafe-plugin + 3.3.1 + + + org.jacoco + jacoco-maven-plugin + 0.8.12 + + + neqsim/physicalProperties/util/parameterFitting/**/* + neqsim/statistics/util/parameterFitting/**/* + neqsim/PVTsimulation/util/parameterfitting/**/* + + + + + + prepare-agent + + + + report + prepare-package + + report + + + + generate-report-after-test + test + + report + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.3.1 + + + attach-sources + + jar-no-fork + + + + + + + + + github + GitHub Equinor Apache Maven Packages + https://maven.pkg.github.com/Equinor/neqsim + + + diff --git a/pomJava8.xml b/pomJava8.xml new file mode 100644 index 0000000000..00293c3014 --- /dev/null +++ b/pomJava8.xml @@ -0,0 +1,248 @@ + + + + 4.0.0 + com.equinor.neqsim + neqsim + jar + ${revision}${sha1}${changelist}-Java8 + + + 2.5.32 + UTF-8 + UTF-8 + + + + + + + central + https://repo1.maven.org/maven2/ + + + + + + + com.h2database + h2 + 2.2.224 + + + org.apache.logging.log4j + log4j-api + 2.23.0 + + + org.apache.logging.log4j + log4j-core + 2.23.0 + + + com.thoughtworks.xstream + xstream + 1.4.20 + + + org.junit.jupiter + junit-jupiter + 5.10.1 + test + + + colt + colt + 1.2.0 + provided + + + commons-lang + commons-lang + 2.6 + + + org.apache.commons + commons-math3 + 3.6.1 + + + org.ejml + ejml-all + 0.41 + + + gov.nist.math + jama + 1.0.3 + + + org.jfree + jcommon + 1.0.24 + + + org.jfree + jfreechart + 1.5.4 + + + com.googlecode.matrix-toolkits-java + mtj + 1.0.4 + + + org.ojalgo + ojalgo + 48.4.2 + provided + + + com.google.code.gson + gson + 2.10.1 + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.5.0 + + + enforce-maven + + enforce + + + + + 3.8.8 + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.4.2 + + + + neqsim.thermo.util.benchmark.TPflash_benchmark + + + + + + org.codehaus.mojo + flatten-maven-plugin + 1.6.0 + + true + + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.6.3 + + private + true + + + + maven-surefire-plugin + 3.3.1 + + + maven-failsafe-plugin + 3.3.1 + + + org.jacoco + jacoco-maven-plugin + 0.8.12 + + + neqsim/physicalProperties/util/parameterFitting/**/* + neqsim/statistics/util/parameterFitting/**/* + neqsim/PVTsimulation/util/parameterfitting/**/* + + + + + + prepare-agent + + + + report + prepare-package + + report + + + + generate-report-after-test + test + + report + + + + + + + + + github + GitHub Equinor Apache Maven Packages + https://maven.pkg.github.com/Equinor/neqsim + + + diff --git a/src/main/java/neqsim/MathLib/generalMath/TDMAsolve.java b/src/main/java/neqsim/MathLib/generalMath/TDMAsolve.java index 6e31208d68..d501d3c3ad 100644 --- a/src/main/java/neqsim/MathLib/generalMath/TDMAsolve.java +++ b/src/main/java/neqsim/MathLib/generalMath/TDMAsolve.java @@ -3,6 +3,7 @@ * * Created on 4. desember 2000, 22:34 */ + package neqsim.MathLib.generalMath; /** @@ -13,36 +14,41 @@ * @author Even Solbraa * @version $Id: $Id */ -public class TDMAsolve { - /** - *

- * solve. - *

- * - * @param a an array of {@link double} objects - * @param b an array of {@link double} objects - * @param c an array of {@link double} objects - * @param r an array of {@link double} objects - * @return an array of {@link double} objects - */ - public static double[] solve(double a[], double b[], double c[], double r[]) { - int length = a.length; - double[] u = new double[length]; - double bet = 0; - double gam[] = new double[length]; +public final class TDMAsolve { + /** + * Dummy constructor, not for use. Class is to be considered static. + */ + private TDMAsolve() {} + + /** + *

+ * solve. + *

+ * + * @param a an array of type double + * @param b an array of type double + * @param c an array of type double + * @param r an array of type double + * @return an array of type double + */ + public static double[] solve(double[] a, double[] b, double[] c, double[] r) { + int length = a.length; + double[] u = new double[length]; + double bet = 0; + double[] gam = new double[length]; - bet = b[0]; - u[0] = r[0] / bet; + bet = b[0]; + u[0] = r[0] / bet; - for (int j = 1; j < length; j++) { - gam[j] = c[j - 1] / bet; - bet = b[j] - a[j] * gam[j]; - u[j] = (r[j] - a[j] * u[j - 1]) / bet; - } + for (int j = 1; j < length; j++) { + gam[j] = c[j - 1] / bet; + bet = b[j] - a[j] * gam[j]; + u[j] = (r[j] - a[j] * u[j - 1]) / bet; + } - for (int j = (length - 2); j >= 0; j--) { - u[j] -= gam[j + 1] * u[j + 1]; - } - return u; + for (int j = (length - 2); j >= 0; j--) { + u[j] -= gam[j + 1] * u[j + 1]; } + return u; + } } diff --git a/src/main/java/neqsim/MathLib/nonLinearSolver/NumericalDerivative.java b/src/main/java/neqsim/MathLib/nonLinearSolver/NumericalDerivative.java index 03858b98fc..9f5c2d63fb 100644 --- a/src/main/java/neqsim/MathLib/nonLinearSolver/NumericalDerivative.java +++ b/src/main/java/neqsim/MathLib/nonLinearSolver/NumericalDerivative.java @@ -3,10 +3,12 @@ * * Created on 28. juli 2000, 15:39 */ + package neqsim.MathLib.nonLinearSolver; import neqsim.thermo.component.ComponentInterface; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -16,129 +18,127 @@ * @author Even Solbraa * @version $Id: $Id */ -public class NumericalDerivative implements java.io.Serializable { - private static final long serialVersionUID = 1000; - - final static double CON = 1.4; - final static double CON2 = CON * CON; - final static double BIG = 1 * Math.pow(10, 30); - final static int NTAB = 100; - final static double SAFE = 2; - - /** - *

- * Constructor for NumericalDerivative. - *

- */ - public NumericalDerivative() {} - - /** - *

- * fugcoefDiffPres. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentInterface} object - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public static double fugcoefDiffPres(ComponentInterface component, PhaseInterface phase, - int numberOfComponents, double temperature, double pressure) { - double ans = 00001; - // double errt, fac, hh, err = 0.0000000001; - // double h = pressure / 50; - - // if(h==0.0){System.out.println("h must be larger than 0!");} - // double[][] a = new double[NTAB][NTAB]; - - // hh = h; - - // a[0][0] = (Math.log(component.fugcoef(phase, numberOfComponents, temperature, - // pressure+hh))-Math.log(component.fugcoef(phase, numberOfComponents, - // temperature, pressure-hh)))/(2*hh); - // err = BIG; - // // System.out.println("hei1 : " + ans); - - // for (int i=1;i<=NTAB-1;i++){ - // // System.out.println("hei " + ans); - // hh/=CON; - // a[0][i] = (Math.log(component.fugcoef(phase, numberOfComponents, temperature, - // pressure+hh))-Math.log(component.fugcoef(phase, numberOfComponents, - // temperature, pressure-hh)))/(2*hh); - // fac = CON2; - // for(int j=1;j<=i;j++){ - // a[j][i] =(a[j-1][i]*fac-a[j-1][i-1])/(fac-1.0); - // fac = CON2*fac; - // errt= Math.max(Math.abs(a[j][i]-a[j-1][i]),Math.abs(a[j][i]-a[j-1][i-1])); - // // System.out.println("errt : " +errt); - - // if(errt<=err){ - // err=errt; - // ans=a[j][i]; - // } - // // System.out.println("ans " + ans); - // } - - // if(Math.abs(a[i][i]-a[i-1][i-1])>=SAFE*err) break; - // } - // // System.out.println("ans " + ans); - return ans; - } - - /** - *

- * fugcoefDiffTemp. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentInterface} object - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @return a double - */ - public static double fugcoefDiffTemp(ComponentInterface component, PhaseInterface phase, - int numberOfComponents, double temperature, double pressure, int phasetype) { - double ans = 0.000001; - // double errt, fac, hh, err = 0.00000000000001; - // double h = temperature / 50; - - // if(h==0.0){System.out.println("h must be larger than 0!");} - // double[][] a = new double[NTAB][NTAB]; - - // hh = h; - - // a[0][0] = (Math.log(component.fugcoef(phase, numberOfComponents, - // temperature+hh, pressure))-Math.log(component.fugcoef(phase, - // numberOfComponents, temperature-hh, pressure)))/(2*hh); - // err = BIG; - // // System.out.println("hei1 : " + ans); - - // for (int i=1;i<=NTAB-1;i++){ - // // System.out.println("hei " + ans); - // hh/=CON; - // a[0][i] = (Math.log(component.fugcoef(phase, numberOfComponents, - // temperature+hh, pressure))-Math.log(component.fugcoef(phase, - // numberOfComponents, temperature-hh, pressure)))/(2*hh); - // fac = CON2; - // for(int j=1;j<=i;j++){ - // a[j][i] =(a[j-1][i]*fac-a[j-1][i-1])/(fac-1.0); - // fac = CON2*fac; - // errt= Math.max(Math.abs(a[j][i]-a[j-1][i]),Math.abs(a[j][i]-a[j-1][i-1])); - // // System.out.println("errt : " +errt); - - // if(errt<=err){ - // err=errt; - // ans=a[j][i]; - // } - // // System.out.println("ans " + ans); - // } - - // if(Math.abs(a[i][i]-a[i-1][i-1])>=SAFE*err) break; - // } - return ans; - } +public final class NumericalDerivative implements java.io.Serializable { + private static final long serialVersionUID = 1000; + + static final double CON = 1.4; + static final double CON2 = CON * CON; + static final double BIG = 1 * Math.pow(10, 30); + static final int NTAB = 100; + static final double SAFE = 2; + + /** + * Dummy constructor, not for use. Class is to be considered static. + */ + private NumericalDerivative() {} + + /** + *

+ * fugcoefDiffPres. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentInterface} object + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public static double fugcoefDiffPres(ComponentInterface component, PhaseInterface phase, + int numberOfComponents, double temperature, double pressure) { + double ans = 00001; + // double errt, fac, hh, err = 0.0000000001; + // double h = pressure / 50; + + // if(h==0.0){System.out.println("h must be larger than 0!");} + // double[][] a = new double[NTAB][NTAB]; + + // hh = h; + + // a[0][0] = (Math.log(component.fugcoef(phase, numberOfComponents, temperature, + // pressure+hh))-Math.log(component.fugcoef(phase, numberOfComponents, + // temperature, pressure-hh)))/(2*hh); + // err = BIG; + // // System.out.println("hei1 : " + ans); + + // for (int i=1;i<=NTAB-1;i++){ + // // System.out.println("hei " + ans); + // hh/=CON; + // a[0][i] = (Math.log(component.fugcoef(phase, numberOfComponents, temperature, + // pressure+hh))-Math.log(component.fugcoef(phase, numberOfComponents, + // temperature, pressure-hh)))/(2*hh); + // fac = CON2; + // for(int j=1;j<=i;j++){ + // a[j][i] =(a[j-1][i]*fac-a[j-1][i-1])/(fac-1.0); + // fac = CON2*fac; + // errt= Math.max(Math.abs(a[j][i]-a[j-1][i]),Math.abs(a[j][i]-a[j-1][i-1])); + // // System.out.println("errt : " +errt); + + // if(errt<=err){ + // err=errt; + // ans=a[j][i]; + // } + // // System.out.println("ans " + ans); + // } + + // if(Math.abs(a[i][i]-a[i-1][i-1])>=SAFE*err) break; + // } + // // System.out.println("ans " + ans); + return ans; + } + + /** + *

+ * fugcoefDiffTemp. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentInterface} object + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @return a double + */ + public static double fugcoefDiffTemp(ComponentInterface component, PhaseInterface phase, + int numberOfComponents, double temperature, double pressure, PhaseType pt) { + double ans = 0.000001; + // double errt, fac, hh, err = 0.00000000000001; + // double h = temperature / 50; + + // if(h==0.0){System.out.println("h must be larger than 0!");} + // double[][] a = new double[NTAB][NTAB]; + + // hh = h; + + // a[0][0] = (Math.log(component.fugcoef(phase, numberOfComponents, + // temperature+hh, pressure))-Math.log(component.fugcoef(phase, + // numberOfComponents, temperature-hh, pressure)))/(2*hh); + // err = BIG; + // // System.out.println("hei1 : " + ans); + + // for (int i=1;i<=NTAB-1;i++){ + // // System.out.println("hei " + ans); + // hh/=CON; + // a[0][i] = (Math.log(component.fugcoef(phase, numberOfComponents, + // temperature+hh, pressure))-Math.log(component.fugcoef(phase, + // numberOfComponents, temperature-hh, pressure)))/(2*hh); + // fac = CON2; + // for(int j=1;j<=i;j++){ + // a[j][i] =(a[j-1][i]*fac-a[j-1][i-1])/(fac-1.0); + // fac = CON2*fac; + // errt= Math.max(Math.abs(a[j][i]-a[j-1][i]),Math.abs(a[j][i]-a[j-1][i-1])); + // // System.out.println("errt : " +errt); + + // if(errt<=err){ + // err=errt; + // ans=a[j][i]; + // } + // // System.out.println("ans " + ans); + // } + + // if(Math.abs(a[i][i]-a[i-1][i-1])>=SAFE*err) break; + // } + return ans; + } } diff --git a/src/main/java/neqsim/MathLib/nonLinearSolver/NumericalIntegration.java b/src/main/java/neqsim/MathLib/nonLinearSolver/NumericalIntegration.java index 6e212ea121..886e7430df 100644 --- a/src/main/java/neqsim/MathLib/nonLinearSolver/NumericalIntegration.java +++ b/src/main/java/neqsim/MathLib/nonLinearSolver/NumericalIntegration.java @@ -3,6 +3,7 @@ * * Created on 6. september 2002, 21:49 */ + package neqsim.MathLib.nonLinearSolver; /** @@ -14,10 +15,10 @@ * @version $Id: $Id */ public class NumericalIntegration { - /** - *

- * Constructor for NumericalIntegration. - *

- */ - public NumericalIntegration() {} + /** + *

+ * Constructor for NumericalIntegration. + *

+ */ + public NumericalIntegration() {} } diff --git a/src/main/java/neqsim/MathLib/nonLinearSolver/newtonRhapson.java b/src/main/java/neqsim/MathLib/nonLinearSolver/newtonRhapson.java index 0293499229..1005d3ec9e 100644 --- a/src/main/java/neqsim/MathLib/nonLinearSolver/newtonRhapson.java +++ b/src/main/java/neqsim/MathLib/nonLinearSolver/newtonRhapson.java @@ -3,6 +3,7 @@ * * Created on 15. juli 2000, 17:43 */ + package neqsim.MathLib.nonLinearSolver; /** @@ -14,203 +15,209 @@ * @version $Id: $Id */ public class newtonRhapson implements java.io.Serializable { - private static final long serialVersionUID = 1000; - - int order; - double[] polyConstants; - double funkVal = 0, derivVal = 0, dubDerivVal = 0; - private int maxIterations = 500; - double xNew = 0, xNew2, x = 0; - - /** - *

- * Constructor for newtonRhapson. - *

- */ - public newtonRhapson() {} - - /** - *

- * Setter for the field order. - *

- * - * @param o a int - */ - public void setOrder(int o) { - order = o; - polyConstants = new double[order + 1]; + private static final long serialVersionUID = 1000; + + int order; + double[] polyConstants; + double funkVal = 0; + + double derivVal = 0; + + double dubDerivVal = 0; + + private int maxIterations = 500; + double xNew = 0; + + double xNew2; + + double x = 0; + + /** + *

+ * Constructor for newtonRhapson. + *

+ */ + public newtonRhapson() {} + + /** + *

+ * Setter for the field order. + *

+ * + * @param o a int + */ + public void setOrder(int o) { + order = o; + polyConstants = new double[order + 1]; + } + + /** + *

+ * setConstants. + *

+ * + * @param constants an array of type double + */ + public void setConstants(double[] constants) { + System.arraycopy(constants, 0, polyConstants, 0, constants.length); + } + + /** + *

+ * funkValue. + *

+ * + * @param x a double + * @return a double + */ + public double funkValue(double x) { + funkVal = 0; + + for (int i = 0; i < polyConstants.length; i++) { + funkVal += polyConstants[i] * Math.pow(x, order - i); } - - /** - *

- * setConstants. - *

- * - * @param constants an array of {@link double} objects - */ - public void setConstants(double[] constants) { - System.arraycopy(constants, 0, polyConstants, 0, constants.length); + return funkVal; + } + + /** + *

+ * derivValue. + *

+ * + * @param x a double + * @return a double + */ + public double derivValue(double x) { + derivVal = 0; + + for (int i = 0; i < polyConstants.length - 1; i++) { + derivVal += (order - i) * polyConstants[i] * Math.pow(x, order - 1 - i); } - /** - *

- * funkValue. - *

- * - * @param x a double - * @return a double - */ - public double funkValue(double x) { - funkVal = 0; - - for (int i = 0; i < polyConstants.length; i++) { - funkVal += polyConstants[i] * Math.pow(x, order - i); - } - return funkVal; + return derivVal; + } + + /** + *

+ * dubDerivValue. + *

+ * + * @param x a double + * @return a double + */ + public double dubDerivValue(double x) { + dubDerivVal = 0; + + for (int i = 0; i < polyConstants.length - 2; i++) { + dubDerivVal += (order - 1 - i) * (order - i) * polyConstants[i] * Math.pow(x, order - 2 - i); } - /** - *

- * derivValue. - *

- * - * @param x a double - * @return a double - */ - public double derivValue(double x) { - derivVal = 0; - - for (int i = 0; i < polyConstants.length - 1; i++) { - derivVal += (order - i) * polyConstants[i] * Math.pow(x, order - 1 - i); - } - - return derivVal; + return dubDerivVal; + } + + /** + *

+ * solve. + *

+ * + * @param xin a double + * @return a double + */ + public double solve(double xin) { + int iterations = 0; + + x = xin; + xNew = x; + xNew2 = x; + + do { + // System.out.println("x " + xNew); + iterations++; + + // System.out.println("Z : " + x); + if (Math.abs(funkValue(xNew)) < Math.abs(funkValue(xNew2))) { + x = xNew; + } else { + x = xNew2; + } + if (derivValue(x) * derivValue(x) - 2.0 * funkValue(x) * dubDerivValue(x) > 0) { + xNew = x - derivValue(x) / dubDerivValue(x) + + Math.sqrt(derivValue(x) * derivValue(x) - 2 * funkValue(x) * dubDerivValue(x)) + / dubDerivValue(x); + xNew2 = x - derivValue(x) / dubDerivValue(x) + - Math.sqrt(derivValue(x) * derivValue(x) - 2 * funkValue(x) * dubDerivValue(x)) + / dubDerivValue(x); + } else { + // System.out.println("using first order newton-rhapson..........."); + xNew = x - funkValue(x) / derivValue(x); + xNew2 = xNew; + } + + if (xNew < 0) { + xNew = 0; + // System.out.println("x++..........."); + } + if (xNew > 1.5) { + xNew = 1; + // System.out.println("x--..........."); + } + } while (Math.abs(funkValue(x)) > 1e-10 && iterations <= maxIterations); + + if (iterations == maxIterations) { + System.out.println("Too many iterations..."); } - - /** - *

- * dubDerivValue. - *

- * - * @param x a double - * @return a double - */ - public double dubDerivValue(double x) { - dubDerivVal = 0; - - for (int i = 0; i < polyConstants.length - 2; i++) { - dubDerivVal += - (order - 1 - i) * (order - i) * polyConstants[i] * Math.pow(x, order - 2 - i); - } - - return dubDerivVal; - } - - /** - *

- * solve. - *

- * - * @param xin a double - * @return a double - */ - public double solve(double xin) { - int iterations = 0; - - x = xin; - xNew = x; - xNew2 = x; - - do { - // System.out.println("x " + xNew); - iterations++; - - // System.out.println("Z : " + x); - if (Math.abs(funkValue(xNew)) < Math.abs(funkValue(xNew2))) { - x = xNew; - } else { - x = xNew2; - } - if (derivValue(x) * derivValue(x) - 2.0 * funkValue(x) * dubDerivValue(x) > 0) { - xNew = x - derivValue(x) / dubDerivValue(x) - + Math.sqrt( - derivValue(x) * derivValue(x) - 2 * funkValue(x) * dubDerivValue(x)) - / dubDerivValue(x); - xNew2 = x - derivValue(x) / dubDerivValue(x) - - Math.sqrt( - derivValue(x) * derivValue(x) - 2 * funkValue(x) * dubDerivValue(x)) - / dubDerivValue(x); - } else { - // System.out.println("using first order newton-rhapson..........."); - xNew = x - funkValue(x) / derivValue(x); - xNew2 = xNew; - } - - if (xNew < 0) { - xNew = 0; - // System.out.println("x++..........."); - } - if (xNew > 1.5) { - xNew = 1; - // System.out.println("x--..........."); - } - } while (Math.abs(funkValue(x)) > 1e-10 && iterations <= maxIterations); - - if (iterations == maxIterations) { - System.out.println("Too many iterations..."); - } - // System.out.println("iterations in newton-rhapson = " + iterations ); - - return xNew; - } - - /** - *

- * solve1order. - *

- * - * @param xin a double - * @return a double - */ - public double solve1order(double xin) { - int iterations = 0; - - x = xin; - xNew = x; - xNew2 = x; - - do { - iterations++; - x = xNew; - xNew = x - funkValue(x) / derivValue(x); - xNew2 = xNew; - } while (Math.abs(funkValue(x)) > 1e-10 && iterations <= maxIterations); - - if (iterations == maxIterations) { - System.out.println("Too many iterations..."); - } - // System.out.println("iterations in newton-rhapson = " + iterations ); - - return xNew; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - newtonRhapson test = new newtonRhapson(); - test.setOrder(3); - - double[] constants = new double[] {-0.003058, -0.01806, -0.266, -0.2999}; - test.setConstants(constants); - - System.out.println("val : " + test.funkValue(-0.0)); - System.out.println("val : " + test.dubDerivValue(-0.3)); - System.out.println("val : " + test.derivValue(-0.3)); - // System.out.println("val : " + test.solve(-0.3)); + // System.out.println("iterations in newton-rhapson = " + iterations ); + + return xNew; + } + + /** + *

+ * solve1order. + *

+ * + * @param xin a double + * @return a double + */ + public double solve1order(double xin) { + int iterations = 0; + + x = xin; + xNew = x; + xNew2 = x; + + do { + iterations++; + x = xNew; + xNew = x - funkValue(x) / derivValue(x); + xNew2 = xNew; + } while (Math.abs(funkValue(x)) > 1e-10 && iterations <= maxIterations); + + if (iterations == maxIterations) { + System.out.println("Too many iterations..."); } + // System.out.println("iterations in newton-rhapson = " + iterations ); + + return xNew; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + newtonRhapson test = new newtonRhapson(); + test.setOrder(3); + + double[] constants = new double[] {-0.003058, -0.01806, -0.266, -0.2999}; + test.setConstants(constants); + + System.out.println("val : " + test.funkValue(-0.0)); + System.out.println("val : " + test.dubDerivValue(-0.3)); + System.out.println("val : " + test.derivValue(-0.3)); + // System.out.println("val : " + test.solve(-0.3)); + } } diff --git a/src/main/java/neqsim/MathLib/nonLinearSolver/sysNewtonRhapson.java b/src/main/java/neqsim/MathLib/nonLinearSolver/sysNewtonRhapson.java index 1d8267345d..4d4d563617 100644 --- a/src/main/java/neqsim/MathLib/nonLinearSolver/sysNewtonRhapson.java +++ b/src/main/java/neqsim/MathLib/nonLinearSolver/sysNewtonRhapson.java @@ -1,6 +1,7 @@ package neqsim.MathLib.nonLinearSolver; import Jama.Matrix; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; /** @@ -12,458 +13,467 @@ * @version $Id: $Id */ public class sysNewtonRhapson implements java.io.Serializable { - private static final long serialVersionUID = 1000; - int neq = 0, iter = 0; - int ic02p = -100, ic03p = -100, testcrit = 0, npCrit = 0; - double beta = 0, ds = 0, dTmax = 1, dPmax = 1, avscp = 0.1, TC1 = 0, TC2 = 0, PC1 = 0, PC2 = 0; - Matrix Jac; - Matrix fvec; - Matrix u; - Matrix uold; - Matrix Xgij; - SystemInterface system; - int numberOfComponents; - int speceq = 0; - Matrix a = new Matrix(4, 4); - Matrix s = new Matrix(1, 4); - Matrix xg; - Matrix xcoef; - newtonRhapson solver; - boolean etterCP = false; - boolean etterCP2 = false; - - /** - *

- * Constructor for sysNewtonRhapson. - *

- */ - public sysNewtonRhapson() {} - - /** - *

- * Constructor for sysNewtonRhapson. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param numberOfPhases a int - * @param numberOfComponents a int - */ - public sysNewtonRhapson(SystemInterface system, int numberOfPhases, int numberOfComponents) { - this.system = system; - this.numberOfComponents = numberOfComponents; - neq = numberOfComponents + 2; - Jac = new Matrix(neq, neq); - fvec = new Matrix(neq, 1); - u = new Matrix(neq, 1); - Xgij = new Matrix(neq, 4); - setu(); - uold = u.copy(); - findSpecEqInit(); - // System.out.println("Spec : " +speceq); - solver = new newtonRhapson(); - solver.setOrder(3); + private static final long serialVersionUID = 1000; + int neq = 0; + int iter = 0; + int ic02p = -100; + int ic03p = -100; + int testcrit = 0; + int npCrit = 0; + double beta = 0; + double ds = 0; + double dTmax = 1; + double dPmax = 1; + double avscp = 0.1; + double TC1 = 0; + double TC2 = 0; + double PC1 = 0; + double PC2 = 0; + Matrix Jac; + Matrix fvec; + Matrix u; + Matrix uold; + Matrix Xgij; + SystemInterface system; + int numberOfComponents; + int speceq = 0; + Matrix a = new Matrix(4, 4); + Matrix s = new Matrix(1, 4); + Matrix xg; + Matrix xcoef; + newtonRhapson solver; + boolean etterCP = false; + boolean etterCP2 = false; + + /** + *

+ * Constructor for sysNewtonRhapson. + *

+ */ + public sysNewtonRhapson() {} + + /** + *

+ * Constructor for sysNewtonRhapson. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param numberOfPhases a int + * @param numberOfComponents a int + */ + public sysNewtonRhapson(SystemInterface system, int numberOfPhases, int numberOfComponents) { + this.system = system; + this.numberOfComponents = numberOfComponents; + neq = numberOfComponents + 2; + Jac = new Matrix(neq, neq); + fvec = new Matrix(neq, 1); + u = new Matrix(neq, 1); + Xgij = new Matrix(neq, 4); + setu(); + uold = u.copy(); + findSpecEqInit(); + // System.out.println("Spec : " +speceq); + solver = new newtonRhapson(); + solver.setOrder(3); + } + + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + for (int i = 0; i < numberOfComponents; i++) { + fvec.set(i, 0, + u.get(i, 0) + Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() + / system.getPhases()[0].getComponents()[i].getFugacityCoefficient())); } - - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - for (int i = 0; i < numberOfComponents; i++) { - fvec.set(i, 0, u.get(i, 0) - + Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() - / system.getPhases()[0].getComponents()[i].getFugacityCoefficient())); - } - double fsum = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - fsum = fsum + system.getPhases()[1].getComponents()[i].getx() - - system.getPhases()[0].getComponents()[i].getx(); - } - fvec.set(numberOfComponents, 0, fsum); - fvec.set(numberOfComponents + 1, 0, 0.0); - // fvec.print(0,10); + double fsum = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + fsum = fsum + system.getPhases()[1].getComponents()[i].getx() + - system.getPhases()[0].getComponents()[i].getx(); } - - /** - *

- * findSpecEqInit. - *

- */ - public void findSpecEqInit() { - speceq = 0; - - int speceqmin = 0; - - for (int i = 0; i < numberOfComponents; i++) { - if (system.getPhases()[0].getComponents()[i] - .getTC() > system.getPhases()[0].getComponents()[speceq].getTC()) { - speceq = system.getPhases()[0].getComponents()[i].getComponentNumber(); - } - if (system.getPhases()[0].getComponents()[i] - .getTC() < system.getPhases()[0].getComponents()[speceq].getTC()) { - speceqmin = system.getPhases()[0].getComponents()[i].getComponentNumber(); - } - } - avscp = (system.getPhases()[0].getComponents()[speceq].getTC() - - system.getPhases()[0].getComponents()[speceqmin].getTC()) / 2000; - System.out.println("avscp: " + avscp); - dTmax = avscp * 3; - dPmax = avscp * 1.5; - System.out.println("dTmax: " + dTmax + " dPmax: " + dPmax); + fvec.set(numberOfComponents, 0, fsum); + fvec.set(numberOfComponents + 1, 0, 0.0); + // fvec.print(0,10); + } + + /** + *

+ * findSpecEqInit. + *

+ */ + public void findSpecEqInit() { + speceq = 0; + + int speceqmin = 0; + + for (int i = 0; i < numberOfComponents; i++) { + if (system.getPhases()[0].getComponents()[i] + .getTC() > system.getPhases()[0].getComponents()[speceq].getTC()) { + speceq = system.getPhases()[0].getComponents()[i].getComponentNumber(); + } + if (system.getPhases()[0].getComponents()[i] + .getTC() < system.getPhases()[0].getComponents()[speceq].getTC()) { + speceqmin = system.getPhases()[0].getComponents()[i].getComponentNumber(); + } } - - /** - *

- * findSpecEq. - *

- */ - public void findSpecEq() { - double max = 0; - for (int i = 0; i < numberOfComponents + 2; i++) { - if (Math.abs(u.get(i, 0) - uold.get(i, 0) / uold.get(i, 0)) > max) { - max = Math.abs(u.get(i, 0) - uold.get(i, 0) / uold.get(i, 0)); - } - } + avscp = (system.getPhases()[0].getComponents()[speceq].getTC() + - system.getPhases()[0].getComponents()[speceqmin].getTC()) / 2000; + System.out.println("avscp: " + avscp); + dTmax = avscp * 3; + dPmax = avscp * 1.5; + System.out.println("dTmax: " + dTmax + " dPmax: " + dPmax); + } + + /** + *

+ * findSpecEq. + *

+ */ + public void findSpecEq() { + double max = 0; + for (int i = 0; i < numberOfComponents + 2; i++) { + if (Math.abs(u.get(i, 0) - uold.get(i, 0) / uold.get(i, 0)) > max) { + max = Math.abs(u.get(i, 0) - uold.get(i, 0) / uold.get(i, 0)); + } } - - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac.timesEquals(0.0); - double dij = 0.0; - double[] dxidlnk = new double[numberOfComponents]; - double[] dyidlnk = new double[numberOfComponents]; - double tempJ = 0.0; - int nofc = numberOfComponents; - for (int i = 0; i < numberOfComponents; i++) { - dxidlnk[i] = -system.getBeta() * system.getPhases()[0].getComponents()[i].getx() - * system.getPhases()[1].getComponents()[i].getx() - / system.getPhases()[0].getComponents()[i].getz(); - dyidlnk[i] = system.getPhases()[1].getComponents()[i].getx() - + system.getPhases()[0].getComponents()[i].getK() * dxidlnk[i]; - // System.out.println("dxidlnk("+i+") "+dxidlnk[i]); - // System.out.println("dyidlnk("+i+") "+dyidlnk[i]); - } - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij + system.getPhases()[1].getComponents()[i].getdfugdx(j) * dyidlnk[j] - - system.getPhases()[0].getComponents()[i].getdfugdx(j) * dxidlnk[j]; - Jac.set(i, j, tempJ); - } - tempJ = system.getTemperature() * (system.getPhases()[1].getComponents()[i].getdfugdt() - - system.getPhases()[0].getComponents()[i].getdfugdt()); - Jac.set(i, nofc, tempJ); - tempJ = system.getPressure() * (system.getPhases()[1].getComponents()[i].getdfugdp() - - system.getPhases()[0].getComponents()[i].getdfugdp()); - Jac.set(i, nofc + 1, tempJ); - Jac.set(nofc, i, dyidlnk[i] - dxidlnk[i]); - } - Jac.set(nofc + 1, speceq, 1.0); + } + + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); + double dij = 0.0; + double[] dxidlnk = new double[numberOfComponents]; + double[] dyidlnk = new double[numberOfComponents]; + double tempJ = 0.0; + int nofc = numberOfComponents; + for (int i = 0; i < numberOfComponents; i++) { + dxidlnk[i] = -system.getBeta() * system.getPhases()[0].getComponents()[i].getx() + * system.getPhases()[1].getComponents()[i].getx() + / system.getPhases()[0].getComponents()[i].getz(); + dyidlnk[i] = system.getPhases()[1].getComponents()[i].getx() + + system.getPhases()[0].getComponents()[i].getK() * dxidlnk[i]; + // System.out.println("dxidlnk("+i+") "+dxidlnk[i]); + // System.out.println("dyidlnk("+i+") "+dyidlnk[i]); } - - /** - *

- * Setter for the field u. - *

- */ - public void setu() { - for (int i = 0; i < numberOfComponents; i++) { - u.set(i, 0, Math.log(system.getPhases()[0].getComponents()[i].getK())); - } - u.set(numberOfComponents, 0, Math.log(system.getTemperature())); - u.set(numberOfComponents + 1, 0, Math.log(system.getPressure())); + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij + system.getPhases()[1].getComponents()[i].getdfugdx(j) * dyidlnk[j] + - system.getPhases()[0].getComponents()[i].getdfugdx(j) * dxidlnk[j]; + Jac.set(i, j, tempJ); + } + tempJ = system.getTemperature() * (system.getPhases()[1].getComponents()[i].getdfugdt() + - system.getPhases()[0].getComponents()[i].getdfugdt()); + Jac.set(i, nofc, tempJ); + tempJ = system.getPressure() * (system.getPhases()[1].getComponents()[i].getdfugdp() + - system.getPhases()[0].getComponents()[i].getdfugdp()); + Jac.set(i, nofc + 1, tempJ); + Jac.set(nofc, i, dyidlnk[i] - dxidlnk[i]); } - - /** - *

- * init. - *

- */ - public void init() { - for (int i = 0; i < numberOfComponents; i++) { - system.getPhases()[0].getComponents()[i].setK(Math.exp(u.get(i, 0))); - system.getPhases()[1].getComponents()[i].setK(Math.exp(u.get(i, 0))); - } - system.setTemperature(Math.exp(u.get(numberOfComponents, 0))); - system.setPressure(Math.exp(u.get(numberOfComponents + 1, 0))); - system.calc_x_y(); - system.init(3); + Jac.set(nofc + 1, speceq, 1.0); + } + + /** + *

+ * Setter for the field u. + *

+ */ + public void setu() { + for (int i = 0; i < numberOfComponents; i++) { + u.set(i, 0, Math.log(system.getPhases()[0].getComponents()[i].getK())); } - - /** - *

- * calcInc. - *

- * - * @param np a int - */ - public void calcInc(int np) { - // u.print(0,10); - // fvec.print(0,10); - // Jac.print(0,10); - - // First we need the sensitivity vector dX/dS - - findSpecEq(); - int nofc = numberOfComponents; - fvec.timesEquals(0.0); - fvec.set(nofc + 1, 0, 1.0); - Matrix dxds = Jac.solve(fvec); - if (np < 5) { - double dp = 0.01; - ds = dp / dxds.get(nofc + 1, 0); - Xgij.setMatrix(0, nofc + 1, np - 1, np - 1, u); - dxds.timesEquals(ds); - // dxds.print(0,10); - u.plusEquals(dxds); - // Xgij.print(0,10); - // u.print(0,10); - } else { - // System.out.println("iter " +iter + " np " + np); - if (iter > 6) { - ds *= 0.5; - System.out.println("ds > 6"); - } - - else { - if (iter < 3) { - ds *= 1.5; - } - if (iter == 3) { - ds *= 1.1; - } - if (iter == 4) { - ds *= 1.0; - } - if (iter > 4) { - ds *= 0.5; - } - - // Now we check wheater this ds is greater than dTmax and dPmax. - if (Math.abs(system.getTemperature() * dxds.get(nofc, 0) * ds) > dTmax) { - // System.out.println("true T"); - ds = sign(dTmax / system.getTemperature() / Math.abs(dxds.get(nofc, 0)), ds); - } - - if (Math.abs(system.getPressure() * dxds.get(nofc + 1, 0) * ds) > dPmax) { - ds = sign(dPmax / system.getPressure() / Math.abs(dxds.get(nofc + 1, 0)), ds); - // System.out.println("true P"); - } - if (etterCP2) { - etterCP2 = false; - ds = 0.5 * ds; - } - - Xgij.setMatrix(0, nofc + 1, 0, 2, Xgij.getMatrix(0, nofc + 1, 1, 3)); - Xgij.setMatrix(0, nofc + 1, 3, 3, u); - s.setMatrix(0, 0, 0, 3, Xgij.getMatrix(speceq, speceq, 0, 3)); - // s.print(0,10); - // System.out.println("ds1 : " + ds); - calcInc2(np); - // System.out.println("ds2 : " + ds); - - // Here we find the next point from the polynomial. - } - } + u.set(numberOfComponents, 0, Math.log(system.getTemperature())); + u.set(numberOfComponents + 1, 0, Math.log(system.getPressure())); + } + + /** + *

+ * init. + *

+ */ + public void init() { + for (int i = 0; i < numberOfComponents; i++) { + system.getPhases()[0].getComponents()[i].setK(Math.exp(u.get(i, 0))); + system.getPhases()[1].getComponents()[i].setK(Math.exp(u.get(i, 0))); } - - /** - *

- * calcInc2. - *

- * - * @param np a int - */ - public void calcInc2(int np) { - for (int j = 0; j < neq; j++) { - xg = Xgij.getMatrix(j, j, 0, 3); - for (int i = 0; i < 4; i++) { - a.set(i, 0, 1.0); - a.set(i, 1, s.get(0, i)); - a.set(i, 2, s.get(0, i) * s.get(0, i)); - a.set(i, 3, a.get(i, 2) * s.get(0, i)); - } - xcoef = a.solve(xg.transpose()); - double sny = ds + s.get(0, 3); - u.set(j, 0, xcoef.get(0, 0) - + sny * (xcoef.get(1, 0) + sny * (xcoef.get(2, 0) + sny * xcoef.get(3, 0)))); + system.setTemperature(Math.exp(u.get(numberOfComponents, 0))); + system.setPressure(Math.exp(u.get(numberOfComponents + 1, 0))); + system.calc_x_y(); + system.init(3); + } + + /** + *

+ * calcInc. + *

+ * + * @param np a int + */ + public void calcInc(int np) { + // u.print(0,10); + // fvec.print(0,10); + // Jac.print(0,10); + + // First we need the sensitivity vector dX/dS + + findSpecEq(); + int nofc = numberOfComponents; + fvec.timesEquals(0.0); + fvec.set(nofc + 1, 0, 1.0); + Matrix dxds = Jac.solve(fvec); + if (np < 5) { + double dp = 0.01; + ds = dp / dxds.get(nofc + 1, 0); + Xgij.setMatrix(0, nofc + 1, np - 1, np - 1, u); + dxds.timesEquals(ds); + // dxds.print(0,10); + u.plusEquals(dxds); + // Xgij.print(0,10); + // u.print(0,10); + } else { + // System.out.println("iter " +iter + " np " + np); + if (iter > 6) { + ds *= 0.5; + System.out.println("ds > 6"); + } else { + if (iter < 3) { + ds *= 1.5; } - uold = u.copy(); - // s.print(0,10); - // Xgij.print(0,10); - double xlnkmax = 0; - int numb = 0; - - for (int i = 0; i < numberOfComponents; i++) { - if (Math.abs(u.get(i, 0)) > xlnkmax) { - xlnkmax = Math.abs(u.get(i, 0)); - numb = i; - } + if (iter == 3) { + ds *= 1.1; } - // System.out.println("klnmax: " + u.get(numb,0) + " np " + np + " xlnmax " + - // xlnkmax + "avsxp " + avscp); - // System.out.println("np: " + np + " ico2p: " + ic02p + " ic03p " + ic03p); - - if ((testcrit == -3) && ic03p != np) { - etterCP2 = true; - etterCP = true; - // System.out.println("Etter CP"); - // System.exit(0); - ic03p = np; - testcrit = 0; - xg = Xgij.getMatrix(numb, numb, 0, 3); - - for (int i = 0; i < 4; i++) { - a.set(i, 0, 1.0); - a.set(i, 1, s.get(0, i)); - a.set(i, 2, s.get(0, i) * s.get(0, i)); - a.set(i, 3, a.get(i, 2) * s.get(0, i)); - } - - Matrix xcoef = a.solve(xg.transpose()); - - double[] coefs = new double[4]; - coefs[0] = xcoef.get(3, 0); - coefs[1] = xcoef.get(2, 0); - coefs[2] = xcoef.get(1, 0); - coefs[3] = xcoef.get(0, 0) - sign(avscp, -s.get(0, 3)); - solver.setConstants(coefs); - - // System.out.println("s4: " + s.get(0,3) + " coefs " + coefs[0] +" "+ - // coefs[1]+" " + coefs[2]+" " + coefs[3]); - double nys = solver.solve1order(s.get(0, 3)); - // s = nys - s.get(0,3); - ds = sign(s.get(0, 3) - nys, ds); - // System.out.println("critpoint: " + ds); - - // ds = -nys - s.get(0,3); - calcInc2(np); - - TC2 = Math.exp(u.get(numberOfComponents, 0)); - PC2 = Math.exp(u.get(numberOfComponents + 1, 0)); - system.setTC((TC1 + TC2) * 0.5); - system.setPC((PC1 + PC2) * 0.5); - system.setPhaseType(0, 1); - system.setPhaseType(1, 0); - return; + if (iter == 4) { + ds *= 1.0; + } + if (iter > 4) { + ds *= 0.5; } - else if ((xlnkmax < avscp && testcrit != 1) && (np != ic03p && !etterCP)) { - // System.out.println("hei fra her"); - testcrit = 1; - xg = Xgij.getMatrix(numb, numb, 0, 3); - - for (int i = 0; i < 4; i++) { - a.set(i, 0, 1.0); - a.set(i, 1, s.get(0, i)); - a.set(i, 2, s.get(0, i) * s.get(0, i)); - a.set(i, 3, a.get(i, 2) * s.get(0, i)); - } - // a.print(0,10); - // xg.print(0,10); - - Matrix xcoef = a.solve(xg.transpose()); - // xcoef.print(0,10); - - double[] coefs = new double[4]; - coefs[0] = xcoef.get(3, 0); - coefs[1] = xcoef.get(2, 0); - coefs[2] = xcoef.get(1, 0); - coefs[3] = xcoef.get(0, 0) - sign(avscp, ds); - solver.setConstants(coefs); - - // System.out.println("s4: " + s.get(0,3) + " coefs " + coefs[0] +" "+ - // coefs[1]+" " + coefs[2]+" " + coefs[3]); - double nys = solver.solve1order(s.get(0, 3)); - - ds = -nys - s.get(0, 3); - // System.out.println("critpoint: " + ds); - npCrit = np; - - calcInc2(np); - - TC1 = Math.exp(u.get(numberOfComponents, 0)); - PC1 = Math.exp(u.get(numberOfComponents + 1, 0)); - return; + // Now we check wheater this ds is greater than dTmax and dPmax. + if (Math.abs(system.getTemperature() * dxds.get(nofc, 0) * ds) > dTmax) { + // System.out.println("true T"); + ds = sign(dTmax / system.getTemperature() / Math.abs(dxds.get(nofc, 0)), ds); } - if (testcrit == 1) { - testcrit = -3; + if (Math.abs(system.getPressure() * dxds.get(nofc + 1, 0) * ds) > dPmax) { + ds = sign(dPmax / system.getPressure() / Math.abs(dxds.get(nofc + 1, 0)), ds); + // System.out.println("true P"); + } + if (etterCP2) { + etterCP2 = false; + ds = 0.5 * ds; } - } - /** - *

- * Getter for the field npCrit. - *

- * - * @return a int - */ - public int getNpCrit() { - return npCrit; - } + Xgij.setMatrix(0, nofc + 1, 0, 2, Xgij.getMatrix(0, nofc + 1, 1, 3)); + Xgij.setMatrix(0, nofc + 1, 3, 3, u); + s.setMatrix(0, 0, 0, 3, Xgij.getMatrix(speceq, speceq, 0, 3)); + // s.print(0,10); + // System.out.println("ds1 : " + ds); + calcInc2(np); + // System.out.println("ds2 : " + ds); - /** - *

- * sign. - *

- * - * @param a a double - * @param b a double - * @return a double - */ - public double sign(double a, double b) { - a = Math.abs(a); - b = b >= 0 ? 1.0 : -1.0; - return a * b; + // Here we find the next point from the polynomial. + } } - - /** - *

- * solve. - *

- * - * @param np a int - */ - public void solve(int np) { - Matrix dx; - iter = 0; - do { - iter++; - init(); - setfvec(); - setJac(); - dx = Jac.solve(fvec); - u.minusEquals(dx); - if (iter > 6) { - System.out.println("iter > " + iter); - calcInc(np); - solve(np); - break; - } - // System.out.println("feilen: "+dx.norm2()); - } while (dx.norm2() / u.norm2() > 1.e-8 && Double.isNaN(dx.norm2())); - // System.out.println("iter: "+iter); - init(); + } + + /** + *

+ * calcInc2. + *

+ * + * @param np a int + */ + public void calcInc2(int np) { + for (int j = 0; j < neq; j++) { + xg = Xgij.getMatrix(j, j, 0, 3); + for (int i = 0; i < 4; i++) { + a.set(i, 0, 1.0); + a.set(i, 1, s.get(0, i)); + a.set(i, 2, s.get(0, i) * s.get(0, i)); + a.set(i, 3, a.get(i, 2) * s.get(0, i)); + } + xcoef = a.solve(xg.transpose()); + double sny = ds + s.get(0, 3); + u.set(j, 0, xcoef.get(0, 0) + + sny * (xcoef.get(1, 0) + sny * (xcoef.get(2, 0) + sny * xcoef.get(3, 0)))); + } + uold = u.copy(); + // s.print(0,10); + // Xgij.print(0,10); + double xlnkmax = 0; + int numb = 0; + + for (int i = 0; i < numberOfComponents; i++) { + if (Math.abs(u.get(i, 0)) > xlnkmax) { + xlnkmax = Math.abs(u.get(i, 0)); + numb = i; + } + } + // System.out.println("klnmax: " + u.get(numb,0) + " np " + np + " xlnmax " + + // xlnkmax + "avsxp " + avscp); + // System.out.println("np: " + np + " ico2p: " + ic02p + " ic03p " + ic03p); + + if ((testcrit == -3) && ic03p != np) { + etterCP2 = true; + etterCP = true; + // System.out.println("Etter CP"); + // System.exit(0); + ic03p = np; + testcrit = 0; + xg = Xgij.getMatrix(numb, numb, 0, 3); + + for (int i = 0; i < 4; i++) { + a.set(i, 0, 1.0); + a.set(i, 1, s.get(0, i)); + a.set(i, 2, s.get(0, i) * s.get(0, i)); + a.set(i, 3, a.get(i, 2) * s.get(0, i)); + } + + Matrix xcoef = a.solve(xg.transpose()); + + double[] coefs = new double[4]; + coefs[0] = xcoef.get(3, 0); + coefs[1] = xcoef.get(2, 0); + coefs[2] = xcoef.get(1, 0); + coefs[3] = xcoef.get(0, 0) - sign(avscp, -s.get(0, 3)); + solver.setConstants(coefs); + + // System.out.println("s4: " + s.get(0,3) + " coefs " + coefs[0] +" "+ + // coefs[1]+" " + coefs[2]+" " + coefs[3]); + double nys = solver.solve1order(s.get(0, 3)); + // s = nys - s.get(0,3); + ds = sign(s.get(0, 3) - nys, ds); + // System.out.println("critpoint: " + ds); + + // ds = -nys - s.get(0,3); + calcInc2(np); + + TC2 = Math.exp(u.get(numberOfComponents, 0)); + PC2 = Math.exp(u.get(numberOfComponents + 1, 0)); + system.setTC((TC1 + TC2) * 0.5); + system.setPC((PC1 + PC2) * 0.5); + system.setPhaseType(0, PhaseType.byValue(1)); + system.setPhaseType(1, PhaseType.byValue(0)); + return; + } else if ((xlnkmax < avscp && testcrit != 1) && (np != ic03p && !etterCP)) { + // System.out.println("hei fra her"); + testcrit = 1; + xg = Xgij.getMatrix(numb, numb, 0, 3); + + for (int i = 0; i < 4; i++) { + a.set(i, 0, 1.0); + a.set(i, 1, s.get(0, i)); + a.set(i, 2, s.get(0, i) * s.get(0, i)); + a.set(i, 3, a.get(i, 2) * s.get(0, i)); + } + // a.print(0,10); + // xg.print(0,10); + + Matrix xcoef = a.solve(xg.transpose()); + // xcoef.print(0,10); + + double[] coefs = new double[4]; + coefs[0] = xcoef.get(3, 0); + coefs[1] = xcoef.get(2, 0); + coefs[2] = xcoef.get(1, 0); + coefs[3] = xcoef.get(0, 0) - sign(avscp, ds); + solver.setConstants(coefs); + + // System.out.println("s4: " + s.get(0,3) + " coefs " + coefs[0] +" "+ + // coefs[1]+" " + coefs[2]+" " + coefs[3]); + double nys = solver.solve1order(s.get(0, 3)); + + ds = -nys - s.get(0, 3); + // System.out.println("critpoint: " + ds); + npCrit = np; + + calcInc2(np); + + TC1 = Math.exp(u.get(numberOfComponents, 0)); + PC1 = Math.exp(u.get(numberOfComponents + 1, 0)); + return; } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects + if (testcrit == 1) { + testcrit = -3; + } + } + + /** + *

+ * Getter for the field npCrit. + *

+ * + * @return a int + */ + public int getNpCrit() { + return npCrit; + } + + /** + *

+ * sign. + *

+ * + * @param a a double + * @param b a double + * @return a double + */ + public double sign(double a, double b) { + a = Math.abs(a); + b = b >= 0 ? 1.0 : -1.0; + return a * b; + } + + /** + *

+ * solve. + *

+ * + * @param np a int + */ + public void solve(int np) { + Matrix dx; + iter = 0; + do { + iter++; + init(); + setfvec(); + setJac(); + dx = Jac.solve(fvec); + u.minusEquals(dx); + if (iter > 6) { + System.out.println("iter > " + iter); + calcInc(np); + solve(np); + break; + } + // System.out.println("feilen: "+dx.norm2()); + } while (dx.norm2() / u.norm2() > 1.e-8 && Double.isNaN(dx.norm2())); + // System.out.println("iter: "+iter); + init(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + /* + * sysNewtonRhapson test=new sysNewtonRhapson(); double[] constants = new double[]{0.4,0.4}; + * test.setx(constants); while (test.nonsol()>1.0e-8) { constants=test.getx(); + * System.out.println(constants[0]+" "+constants[1]); } test.nonsol(); constants=test.getf(); + * System.out.println(constants[0]+" "+constants[1]); System.exit(0); */ - public static void main(String args[]) { - /* - * sysNewtonRhapson test=new sysNewtonRhapson(); double[] constants = new double[]{0.4,0.4}; - * test.setx(constants); while (test.nonsol()>1.0e-8) { constants=test.getx(); - * System.out.println(constants[0]+" "+constants[1]); } test.nonsol(); - * constants=test.getf(); System.out.println(constants[0]+" "+constants[1]); System.exit(0); - */ } + } } diff --git a/src/main/java/neqsim/PVTsimulation/modelTuning/BaseTuningClass.java b/src/main/java/neqsim/PVTsimulation/modelTuning/BaseTuningClass.java index ccf051c95d..e7aa355b77 100644 --- a/src/main/java/neqsim/PVTsimulation/modelTuning/BaseTuningClass.java +++ b/src/main/java/neqsim/PVTsimulation/modelTuning/BaseTuningClass.java @@ -11,88 +11,88 @@ * @version $Id: $Id */ public class BaseTuningClass implements TuningInterface { - private SimulationInterface simulation = null; - private boolean tunePlusMolarMass = false; - private boolean tuneVolumeCorrection = false; - public double saturationTemperature = 273.15; - public double saturationPressure = 273.15; + private SimulationInterface simulation = null; + private boolean tunePlusMolarMass = false; + private boolean tuneVolumeCorrection = false; + public double saturationTemperature = 273.15; + public double saturationPressure = 273.15; - /** - *

- * Constructor for BaseTuningClass. - *

- */ - public BaseTuningClass() {} + /** + *

+ * Constructor for BaseTuningClass. + *

+ */ + public BaseTuningClass() {} - /** - *

- * Constructor for BaseTuningClass. - *

- * - * @param simulationClass a {@link neqsim.PVTsimulation.simulation.SimulationInterface} object - */ - public BaseTuningClass(SimulationInterface simulationClass) { - this.simulation = simulationClass; - } + /** + *

+ * Constructor for BaseTuningClass. + *

+ * + * @param simulationClass a {@link neqsim.PVTsimulation.simulation.SimulationInterface} object + */ + public BaseTuningClass(SimulationInterface simulationClass) { + this.simulation = simulationClass; + } - /** {@inheritDoc} */ - @Override - public SimulationInterface getSimulation() { - return simulation; - } + /** {@inheritDoc} */ + @Override + public SimulationInterface getSimulation() { + return simulation; + } - /** {@inheritDoc} */ - @Override - public void setSaturationConditions(double temperature, double pressure) { - saturationTemperature = temperature; - saturationPressure = pressure; - } + /** {@inheritDoc} */ + @Override + public void setSaturationConditions(double temperature, double pressure) { + saturationTemperature = temperature; + saturationPressure = pressure; + } - /** - *

- * isTunePlusMolarMass. - *

- * - * @return the tunePlusMolarMass - */ - public boolean isTunePlusMolarMass() { - return tunePlusMolarMass; - } + /** + *

+ * isTunePlusMolarMass. + *

+ * + * @return the tunePlusMolarMass + */ + public boolean isTunePlusMolarMass() { + return tunePlusMolarMass; + } - /** - *

- * Setter for the field tunePlusMolarMass. - *

- * - * @param tunePlusMolarMass the tunePlusMolarMass to set - */ - public void setTunePlusMolarMass(boolean tunePlusMolarMass) { - this.tunePlusMolarMass = tunePlusMolarMass; - } + /** + *

+ * Setter for the field tunePlusMolarMass. + *

+ * + * @param tunePlusMolarMass the tunePlusMolarMass to set + */ + public void setTunePlusMolarMass(boolean tunePlusMolarMass) { + this.tunePlusMolarMass = tunePlusMolarMass; + } - /** - *

- * isTuneVolumeCorrection. - *

- * - * @return the tuneVolumeCorrection - */ - public boolean isTuneVolumeCorrection() { - return tuneVolumeCorrection; - } + /** + *

+ * isTuneVolumeCorrection. + *

+ * + * @return the tuneVolumeCorrection + */ + public boolean isTuneVolumeCorrection() { + return tuneVolumeCorrection; + } - /** - *

- * Setter for the field tuneVolumeCorrection. - *

- * - * @param tuneVolumeCorrection the tuneVolumeCorrection to set - */ - public void setTuneVolumeCorrection(boolean tuneVolumeCorrection) { - this.tuneVolumeCorrection = tuneVolumeCorrection; - } + /** + *

+ * Setter for the field tuneVolumeCorrection. + *

+ * + * @param tuneVolumeCorrection the tuneVolumeCorrection to set + */ + public void setTuneVolumeCorrection(boolean tuneVolumeCorrection) { + this.tuneVolumeCorrection = tuneVolumeCorrection; + } - /** {@inheritDoc} */ - @Override - public void run() {} + /** {@inheritDoc} */ + @Override + public void run() {} } diff --git a/src/main/java/neqsim/PVTsimulation/modelTuning/TuneToSaturation.java b/src/main/java/neqsim/PVTsimulation/modelTuning/TuneToSaturation.java index 9074af430b..f16d884ec2 100644 --- a/src/main/java/neqsim/PVTsimulation/modelTuning/TuneToSaturation.java +++ b/src/main/java/neqsim/PVTsimulation/modelTuning/TuneToSaturation.java @@ -11,83 +11,83 @@ * @version $Id: $Id */ public class TuneToSaturation extends BaseTuningClass { - /** - *

- * Constructor for TuneToSaturation. - *

- * - * @param simulation a {@link neqsim.PVTsimulation.simulation.SimulationInterface} object - */ - public TuneToSaturation(SimulationInterface simulation) { - super(simulation); - } + /** + *

+ * Constructor for TuneToSaturation. + *

+ * + * @param simulation a {@link neqsim.PVTsimulation.simulation.SimulationInterface} object + */ + public TuneToSaturation(SimulationInterface simulation) { + super(simulation); + } - /** {@inheritDoc} */ - @Override - public void run() { - // double error = 1.0; - double maxError = 0.01; - int plusNumber = 0; - double plusMolarMass = 0; - getSimulation().getThermoSystem().setTemperature(saturationTemperature); - getSimulation().getThermoSystem().setPressure(saturationPressure - 50.0); - // getSimulation().getThermoSystem().display(); - for (int i = 0; i < getSimulation().getThermoSystem().getPhase(0) - .getNumberOfComponents(); i++) { - if (getSimulation().getThermoSystem().getPhase(0).getComponent(i).isIsPlusFraction()) { - plusNumber = i; - plusMolarMass = getSimulation().getThermoSystem().getPhase(0) - .getComponent(plusNumber).getMolarMass(); - } - } - getSimulation().getThermoSystem().getCharacterization().characterisePlusFraction(); - getSimulation().getThermoSystem().createDatabase(true); - getSimulation().getThermoSystem() - .setMixingRule(getSimulation().getThermoSystem().getMixingRule()); - getSimulation().getThermoSystem().init(0); - getSimulation().getThermoSystem().init(1); + /** {@inheritDoc} */ + @Override + public void run() { + // double error = 1.0; + double maxError = 0.01; + int plusNumber = 0; + double plusMolarMass = 0; + getSimulation().getThermoSystem().setTemperature(saturationTemperature); + getSimulation().getThermoSystem().setPressure(saturationPressure - 50.0); + // getSimulation().getThermoSystem().display(); + for (int i = 0; i < getSimulation().getThermoSystem().getPhase(0) + .getNumberOfComponents(); i++) { + if (getSimulation().getThermoSystem().getPhase(0).getComponent(i).isIsPlusFraction()) { + plusNumber = i; + plusMolarMass = + getSimulation().getThermoSystem().getPhase(0).getComponent(plusNumber).getMolarMass(); + } + } + getSimulation().getThermoSystem().getCharacterization().characterisePlusFraction(); + getSimulation().getThermoSystem().createDatabase(true); + getSimulation().getThermoSystem() + .setMixingRule(getSimulation().getThermoSystem().getMixingRule()); + getSimulation().getThermoSystem().init(0); + getSimulation().getThermoSystem().init(1); - getSimulation().run(); - double dp = getSimulation().getThermoSystem().getPressure() - saturationPressure; - if (Math.abs(dp) < maxError) { - return; - } - double dpOld = 0; - int iter = 0; - double sign = 1.0; - while (Math.abs(dp) > 1e-3 && iter < 50) { - iter++; - dp = getSimulation().getThermoSystem().getPressure() - saturationPressure; - plusMolarMass -= sign * dp / 1000.0; - getSimulation().setThermoSystem(getSimulation().getBaseThermoSystem().clone()); - getSimulation().getThermoSystem().resetCharacterisation(); - getSimulation().getThermoSystem().createDatabase(true); - getSimulation().getThermoSystem() - .setMixingRule(getSimulation().getThermoSystem().getMixingRule()); - // getSimulation().getThermoSystem().init(0); - // getSimulation().getThermoSystem().init(1); - getSimulation().getThermoSystem().setTemperature(saturationTemperature); - getSimulation().getThermoSystem().setPressure(saturationPressure); - // getSimulation().getThermoSystem().display(); - for (int i = 0; i < getSimulation().getThermoSystem().getMaxNumberOfPhases(); i++) { - getSimulation().getThermoSystem().getPhase(i).getComponent(plusNumber) - .setMolarMass(plusMolarMass); - } - // getSimulation().getThermoSystem().display(); - getSimulation().getThermoSystem().getCharacterization().characterisePlusFraction(); - getSimulation().getThermoSystem().createDatabase(true); - getSimulation().getThermoSystem() - .setMixingRule(getSimulation().getThermoSystem().getMixingRule()); - // getSimulation().getThermoSystem().init(0); - // getSimulation().getThermoSystem().init(1); - getSimulation().run(); - if (Math.abs(dpOld) < Math.abs(dp)) { - sign *= -1.0; - } - dpOld = dp; + getSimulation().run(); + double dp = getSimulation().getThermoSystem().getPressure() - saturationPressure; + if (Math.abs(dp) < maxError) { + return; + } + double dpOld = 0; + int iter = 0; + double sign = 1.0; + while (Math.abs(dp) > 1e-3 && iter < 50) { + iter++; + dp = getSimulation().getThermoSystem().getPressure() - saturationPressure; + plusMolarMass -= sign * dp / 1000.0; + getSimulation().setThermoSystem(getSimulation().getBaseThermoSystem().clone()); + getSimulation().getThermoSystem().resetCharacterisation(); + getSimulation().getThermoSystem().createDatabase(true); + getSimulation().getThermoSystem() + .setMixingRule(getSimulation().getThermoSystem().getMixingRule()); + // getSimulation().getThermoSystem().init(0); + // getSimulation().getThermoSystem().init(1); + getSimulation().getThermoSystem().setTemperature(saturationTemperature); + getSimulation().getThermoSystem().setPressure(saturationPressure); + // getSimulation().getThermoSystem().display(); + for (int i = 0; i < getSimulation().getThermoSystem().getMaxNumberOfPhases(); i++) { + getSimulation().getThermoSystem().getPhase(i).getComponent(plusNumber) + .setMolarMass(plusMolarMass); + } + // getSimulation().getThermoSystem().display(); + getSimulation().getThermoSystem().getCharacterization().characterisePlusFraction(); + getSimulation().getThermoSystem().createDatabase(true); + getSimulation().getThermoSystem() + .setMixingRule(getSimulation().getThermoSystem().getMixingRule()); + // getSimulation().getThermoSystem().init(0); + // getSimulation().getThermoSystem().init(1); + getSimulation().run(); + if (Math.abs(dpOld) < Math.abs(dp)) { + sign *= -1.0; + } + dpOld = dp; - System.out.println("pressure " + getSimulation().getThermoSystem().getPressure() + "dp " - + dp + " molarmass" + plusMolarMass); - } + System.out.println("pressure " + getSimulation().getThermoSystem().getPressure() + "dp " + dp + + " molarmass" + plusMolarMass); } + } } diff --git a/src/main/java/neqsim/PVTsimulation/modelTuning/TuningInterface.java b/src/main/java/neqsim/PVTsimulation/modelTuning/TuningInterface.java index 7e90b81e85..1bd07b2512 100644 --- a/src/main/java/neqsim/PVTsimulation/modelTuning/TuningInterface.java +++ b/src/main/java/neqsim/PVTsimulation/modelTuning/TuningInterface.java @@ -3,29 +3,37 @@ import neqsim.PVTsimulation.simulation.SimulationInterface; /** - *

TuningInterface interface.

+ *

+ * TuningInterface interface. + *

* * @author esol * @version $Id: $Id */ public interface TuningInterface { - /** - *

getSimulation.

- * - * @return a {@link neqsim.PVTsimulation.simulation.SimulationInterface} object - */ - public SimulationInterface getSimulation(); + /** + *

+ * getSimulation. + *

+ * + * @return a {@link neqsim.PVTsimulation.simulation.SimulationInterface} object + */ + public SimulationInterface getSimulation(); - /** - *

setSaturationConditions.

- * - * @param temperature a double - * @param pressure a double - */ - public void setSaturationConditions(double temperature, double pressure); + /** + *

+ * setSaturationConditions. + *

+ * + * @param temperature a double + * @param pressure a double + */ + public void setSaturationConditions(double temperature, double pressure); - /** - *

run.

- */ - public void run(); + /** + *

+ * run. + *

+ */ + public void run(); } diff --git a/src/main/java/neqsim/PVTsimulation/reservoirProperties/CompositionEstimation.java b/src/main/java/neqsim/PVTsimulation/reservoirProperties/CompositionEstimation.java index 2867e1b583..17616cf0c5 100644 --- a/src/main/java/neqsim/PVTsimulation/reservoirProperties/CompositionEstimation.java +++ b/src/main/java/neqsim/PVTsimulation/reservoirProperties/CompositionEstimation.java @@ -9,43 +9,43 @@ * @version $Id: $Id */ public class CompositionEstimation { - double reservoirTemperature; - double reservoirPressure; + double reservoirTemperature; + double reservoirPressure; - /** - *

- * Constructor for CompositionEstimation. - *

- * - * @param reservoirTemperature a double - * @param reservoirPressure a double - */ - public CompositionEstimation(double reservoirTemperature, double reservoirPressure) { - this.reservoirTemperature = reservoirTemperature; - this.reservoirPressure = reservoirPressure; - } + /** + *

+ * Constructor for CompositionEstimation. + *

+ * + * @param reservoirTemperature a double + * @param reservoirPressure a double + */ + public CompositionEstimation(double reservoirTemperature, double reservoirPressure) { + this.reservoirTemperature = reservoirTemperature; + this.reservoirPressure = reservoirPressure; + } - /** - *

- * estimateH2Sconcentration. correlation from Haaland et. al. 1999 - *

- * - * @return a double - */ - public double estimateH2Sconcentration() { - return 5.0e7 * Math.exp(-6543.0 / reservoirTemperature); - } + /** + *

+ * estimateH2Sconcentration. correlation from Haaland et. al. 1999 + *

+ * + * @return a double + */ + public double estimateH2Sconcentration() { + return 5.0e7 * Math.exp(-6543.0 / reservoirTemperature); + } - /** - *

- * estimateH2Sconcentration. reservoir temperature in Kelvin CO2concentration in molfraction - *

- * - * @param CO2concentration a double - * @return a double - */ - public double estimateH2Sconcentration(double CO2concentration) { - return Math.exp( - 11.7 - 4438.3 / reservoirTemperature + 0.7 * Math.log(CO2concentration * 100.0)); - } + /** + *

+ * estimateH2Sconcentration. reservoir temperature in Kelvin CO2concentration in molfraction + *

+ * + * @param CO2concentration a double + * @return a double + */ + public double estimateH2Sconcentration(double CO2concentration) { + return Math + .exp(11.7 - 4438.3 / reservoirTemperature + 0.7 * Math.log(CO2concentration * 100.0)); + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/BasePVTsimulation.java b/src/main/java/neqsim/PVTsimulation/simulation/BasePVTsimulation.java index 6ad04d68e2..e6838e108a 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/BasePVTsimulation.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/BasePVTsimulation.java @@ -13,163 +13,177 @@ * @version $Id: $Id */ public class BasePVTsimulation implements SimulationInterface { - private SystemInterface thermoSystem = null; - private SystemInterface baseThermoSystem = null; - public ThermodynamicOperations thermoOps = null; - private double pressure; - public double[] pressures = {381.5, 338.9, 290.6, 242.3, 194.1, 145.8, 145.8, 97.5, 49.3}; - public double temperature = 289.0; - double[][] experimentalData = null; - double saturationVolume = 0, saturationPressure = 0, saturationTemperature; - double Zsaturation = 0; - public LevenbergMarquardt optimizer = new LevenbergMarquardt(); - - /** - *

- * Constructor for BasePVTsimulation. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public BasePVTsimulation(SystemInterface tempSystem) { - thermoSystem = tempSystem;// tempSystem.clone(); - thermoOps = new ThermodynamicOperations(getThermoSystem()); - baseThermoSystem = thermoSystem.clone(); - } - - /** - *

- * Setter for the field experimentalData. - *

- * - * @param expData an array of {@link double} objects - */ - public void setExperimentalData(double[][] expData) { - experimentalData = expData; - } - - /** - *

- * Getter for the field saturationPressure. - *

- * - * @return a double - */ - public double getSaturationPressure() { - return saturationPressure; - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return thermoSystem; - } - - /** {@inheritDoc} */ - @Override - public void run() { - thermoOps = new ThermodynamicOperations(getThermoSystem()); - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getBaseThermoSystem() { - return baseThermoSystem; - } - - /** {@inheritDoc} */ - @Override - public void setThermoSystem(SystemInterface thermoSystem) { - this.thermoSystem = thermoSystem; - } - - /** - *

- * Getter for the field pressure. - *

- * - * @return the pressure - */ - public double getPressure() { - return pressure; - } - - /** - *

- * Setter for the field pressure. - *

- * - * @param pressure the pressure to set - */ - public void setPressure(double pressure) { - this.pressure = pressure; - } - - /** - *

- * Getter for the field temperature. - *

- * - * @return the temperature - */ - public double getTemperature() { - return temperature; - } - - /** - *

- * Setter for the field temperature. - *

- * - * @param temperature the temperature to set - */ - public void setTemperature(double temperature) { - this.temperature = temperature; - } - - /** - *

- * Getter for the field pressures. - *

- * - * @return the pressures - */ - public double[] getPressures() { - return pressures; - } - - /** - *

- * Setter for the field pressures. - *

- * - * @param pressures the pressures to set - */ - public void setPressures(double[] pressures) { - this.pressures = pressures; - } - - /** {@inheritDoc} */ - @Override - public LevenbergMarquardt getOptimizer() { - return optimizer; - } - - /** - *

- * getZsaturation. - *

- * - * @return the Zsaturation - */ - public double getZsaturation() { - return Zsaturation; - } - - /** - * @return the saturationTemperature - */ - public double getSaturationTemperature() { - return saturationTemperature; - } + private SystemInterface thermoSystem = null; + private SystemInterface baseThermoSystem = null; + public ThermodynamicOperations thermoOps = null; + private double pressure; + public double[] pressures = {381.5, 338.9, 290.6, 242.3, 194.1, 145.8, 145.8, 97.5, 49.3}; + public double temperature = Double.NaN; + double[][] experimentalData = null; + double saturationVolume = 0; + double saturationPressure = 0; + double saturationTemperature; + double Zsaturation = 0; + String temperatureUnit = "K"; + public LevenbergMarquardt optimizer = new LevenbergMarquardt(); + + /** + *

+ * Constructor for BasePVTsimulation. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public BasePVTsimulation(SystemInterface tempSystem) { + thermoSystem = tempSystem; // tempSystem.clone(); + thermoOps = new ThermodynamicOperations(getThermoSystem()); + baseThermoSystem = thermoSystem.clone(); + } + + /** + *

+ * Setter for the field experimentalData. + *

+ * + * @param expData an array of type double + */ + public void setExperimentalData(double[][] expData) { + experimentalData = expData; + } + + /** + *

+ * Getter for the field saturationPressure. + *

+ * + * @return a double + */ + public double getSaturationPressure() { + return saturationPressure; + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return thermoSystem; + } + + /** {@inheritDoc} */ + @Override + public void run() { + thermoOps = new ThermodynamicOperations(getThermoSystem()); + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getBaseThermoSystem() { + return baseThermoSystem; + } + + /** {@inheritDoc} */ + @Override + public void setThermoSystem(SystemInterface thermoSystem) { + this.thermoSystem = thermoSystem; + } + + /** + *

+ * Getter for the field pressure. + *

+ * + * @return the pressure + */ + public double getPressure() { + return pressure; + } + + /** + *

+ * Setter for the field pressure. + *

+ * + * @param pressure the pressure to set + */ + public void setPressure(double pressure) { + this.pressure = pressure; + } + + /** + *

+ * Getter for the field temperature. + *

+ * + * @return the temperature + */ + public double getTemperature() { + return temperature; + } + + /** + *

+ * Setter for the field temperature. NB! Verify unit is correct. + *

+ * + * @param temperature the temperature to set + */ + public void setTemperature(double temperature) { + this.temperature = temperature; + } + + /** {@inheritDoc} */ + @Override + public void setTemperature(double temperature, String temperatureUnit) { + this.temperature = temperature; + this.temperatureUnit = temperatureUnit; + } + + /** + *

+ * Getter for the field pressures. + *

+ * + * @return the pressures + */ + public double[] getPressures() { + return pressures; + } + + /** + *

+ * Setter for the field pressures. + *

+ * + * @param pressures the pressures to set + */ + public void setPressures(double[] pressures) { + this.pressures = pressures; + } + + /** {@inheritDoc} */ + @Override + public LevenbergMarquardt getOptimizer() { + return optimizer; + } + + /** + *

+ * getZsaturation. + *

+ * + * @return the Zsaturation + */ + public double getZsaturation() { + return Zsaturation; + } + + /** + *

+ * Getter for the field saturationTemperature. + *

+ * + * @return the saturationTemperature + */ + public double getSaturationTemperature() { + return saturationTemperature; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/ConstantMassExpansion.java b/src/main/java/neqsim/PVTsimulation/simulation/ConstantMassExpansion.java index 06d6171af7..80744fb9db 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/ConstantMassExpansion.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/ConstantMassExpansion.java @@ -1,10 +1,13 @@ package neqsim.PVTsimulation.simulation; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.PVTsimulation.util.parameterfitting.CMEFunction; import neqsim.statistics.parameterFitting.SampleSet; import neqsim.statistics.parameterFitting.SampleValue; import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -17,373 +20,388 @@ * @version $Id: $Id */ public class ConstantMassExpansion extends BasePVTsimulation { - double[] relativeVolume = null; - double[] totalVolume = null; - private double[] liquidRelativeVolume = null; - private double[] viscosity = null, viscosityOil = null, Zgas = null, density = null, - Yfactor = null, isoThermalCompressibility = null, gasExpensionFactor = null, - gasFormationVolumeFactor = null; - private double[] Bg = null, gasStandardVolume = null, gasVolume = null; - boolean saturationConditionFound = false; - private double saturationIsoThermalCompressibility = 0.0; - double[] temperatures = null; - - /** - *

- * Constructor for ConstantMassExpansion. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public ConstantMassExpansion(SystemInterface tempSystem) { - super(tempSystem); - } + static Logger logger = LogManager.getLogger(ConstantMassExpansion.class); - /** - *

- * calcSaturationConditions. - *

- */ - public void calcSaturationConditions() { - getThermoSystem().setPressure(1.0); - do { - getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); - thermoOps.TPflash(); - // System.out.println("pressure "+ getThermoSystem().getPressure() ); - } while (getThermoSystem().getNumberOfPhases() == 1 - && getThermoSystem().getPressure() < 1000.0); - do { - getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); - thermoOps.TPflash(); - } while (getThermoSystem().getNumberOfPhases() > 1 - && getThermoSystem().getPressure() < 1000.0); - double minPres = getThermoSystem().getPressure() - 10.0; - double maxPres = getThermoSystem().getPressure(); - do { - getThermoSystem().setPressure((minPres + maxPres) / 2.0); - thermoOps.TPflash(); - if (getThermoSystem().getNumberOfPhases() > 1) { - minPres = getThermoSystem().getPressure(); - } else { - maxPres = getThermoSystem().getPressure(); - } - } while (Math.abs(maxPres - minPres) > 1e-5); - /* - * try { thermoOps.dewPointPressureFlash(); } catch (Exception e) { e.printStackTrace(); } - */ - saturationVolume = getThermoSystem().getVolume(); - saturationPressure = getThermoSystem().getPressure(); - Zsaturation = getThermoSystem().getZ(); - saturationConditionFound = true; - } + double[] relativeVolume = null; + double[] totalVolume = null; + private double[] liquidRelativeVolume = null; + private double[] viscosity = null; + private double[] viscosityOil = null; + private double[] Zgas = null; + private double[] density = null; + private double[] Yfactor = null; + private double[] isoThermalCompressibility = null; + private double[] gasExpensionFactor = null; + private double[] gasFormationVolumeFactor = null; + private double[] Bg = null; + private double[] gasStandardVolume = null; + private double[] gasVolume = null; + boolean saturationConditionFound = false; + private double saturationIsoThermalCompressibility = 0.0; + double[] temperatures = null; - /** {@inheritDoc} */ - @Override - public double getSaturationPressure() { - return saturationPressure; - } + /** + *

+ * Constructor for ConstantMassExpansion. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public ConstantMassExpansion(SystemInterface tempSystem) { + super(tempSystem); + } - /** - *

- * runCalc. - *

+ /** + *

+ * calcSaturationConditions. + *

+ */ + public void calcSaturationConditions() { + getThermoSystem().setPressure(1.0); + do { + getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); + thermoOps.TPflash(); + // System.out.println("pressure "+ getThermoSystem().getPressure() ); + } while (getThermoSystem().getNumberOfPhases() == 1 + && getThermoSystem().getPressure() < 1000.0); + do { + getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); + thermoOps.TPflash(); + } while (getThermoSystem().getNumberOfPhases() > 1 && getThermoSystem().getPressure() < 1000.0); + double minPres = getThermoSystem().getPressure() - 10.0; + double maxPres = getThermoSystem().getPressure(); + do { + getThermoSystem().setPressure((minPres + maxPres) / 2.0); + thermoOps.TPflash(); + if (getThermoSystem().getNumberOfPhases() > 1) { + minPres = getThermoSystem().getPressure(); + } else { + maxPres = getThermoSystem().getPressure(); + } + } while (Math.abs(maxPres - minPres) > 1e-5); + /* + * try { thermoOps.dewPointPressureFlash(); } catch (Exception ex) { + * logger.error(ex.getMessage(), ex); } */ - public void runCalc() { - saturationConditionFound = false; - relativeVolume = new double[pressures.length]; - totalVolume = new double[pressures.length]; - liquidRelativeVolume = new double[pressures.length]; - Zgas = new double[pressures.length]; - Bg = new double[pressures.length]; - gasStandardVolume = new double[pressures.length]; - gasVolume = new double[pressures.length]; - density = new double[pressures.length]; - Yfactor = new double[pressures.length]; - isoThermalCompressibility = new double[pressures.length]; - gasFormationVolumeFactor = new double[pressures.length]; - viscosity = new double[pressures.length]; - viscosityOil = new double[pressures.length]; - gasExpensionFactor = new double[pressures.length]; - getThermoSystem().setTemperature(temperature); - if (!saturationConditionFound) { - calcSaturationConditions(); - try { - thermoOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); - } - } - try { - // getThermoSystem().setPressure(400); - // thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - e.printStackTrace(); - } - saturationVolume = getThermoSystem().getVolume(); - saturationPressure = getThermoSystem().getPressure(); - Zsaturation = getThermoSystem().getZ(); - saturationIsoThermalCompressibility = -1.0 / getThermoSystem().getPhase(0).getVolume() - / getThermoSystem().getPhase(0).getdPdVTn(); - - for (int i = 0; i < pressures.length; i++) { - // getThermoSystem().init(0); - getThermoSystem().setPressure(pressures[i]); - try { - thermoOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); - } - getThermoSystem().initPhysicalProperties(); - // getThermoSystem().display(); - totalVolume[i] = getThermoSystem().getVolume(); - relativeVolume[i] = totalVolume[i] / saturationVolume; - density[i] = getThermoSystem().getPhase(0).getDensity("kg/m3"); - gasVolume[i] = getThermoSystem().getPhase(0).getNumberOfMolesInPhase() - * getThermoSystem().getPhase(0).getMolarMass() / density[i];// getThermoSystem().getPhase(0).getVolume(); - gasStandardVolume[i] = getThermoSystem().getPhase(0).getVolume() - * getThermoSystem().getPhase(0).getPressure() / 1.01325 - / getThermoSystem().getPhase(0).getZ() * 288.15 - / getThermoSystem().getTemperature(); - Bg[i] = gasVolume[i] * 1e5 / gasStandardVolume[i]; - Zgas[i] = getThermoSystem().getPhase(0).getZ(); - if (getThermoSystem().getNumberOfPhases() == 1) { - viscosity[i] = getThermoSystem().getPhase(0).getViscosity(); - isoThermalCompressibility[i] = -1.0 / getThermoSystem().getPhase(0).getVolume() - / getThermoSystem().getPhase(0).getdPdVTn(); - Yfactor[i] = Double.NaN; - liquidRelativeVolume[i] = Double.NaN; - } - if (getThermoSystem().getNumberOfPhases() > 1) { - liquidRelativeVolume[i] = - getThermoSystem().getPhase("oil").getVolume() / saturationVolume * 100; - Yfactor[i] = ((saturationPressure - pressures[i]) / pressures[i]) - / ((totalVolume[i] - saturationVolume) / saturationVolume); - viscosity[i] = Double.NaN; - isoThermalCompressibility[i] = Double.NaN; - } - System.out.println("pressure " + getThermoSystem().getPressure() + " relative volume " - + relativeVolume[i] + " liquid rel vol " + liquidRelativeVolume[i] + " Zgas " - + Zgas[i] + " Yfactor " + getYfactor()[i] + " isoCompfactor " - + getIsoThermalCompressibility()[i]); - } - - System.out.println("test finished"); - System.out.println("test finished"); - } + saturationVolume = getThermoSystem().getVolume(); + saturationPressure = getThermoSystem().getPressure(); + Zsaturation = getThermoSystem().getZ(); + saturationConditionFound = true; - /** - *

- * runTuning. - *

- */ - public void runTuning() { - ArrayList sampleList = new ArrayList(); - - try { - System.out.println("adding...."); - - for (int i = 0; i < experimentalData[0].length; i++) { - CMEFunction function = new CMEFunction(); - double[] guess = new double[] { - getThermoSystem().getCharacterization().getPlusFractionModel().getMPlus() - / 1000.0}; - function.setInitialGuess(guess); - - SystemInterface tempSystem = getThermoSystem(); // getThermoSystem().clone(); - - tempSystem.setTemperature(temperature); - tempSystem.setPressure(pressures[i]); - // thermoOps.TPflash(); - // tempSystem.display(); - double sample1[] = {temperature, pressures[i]}; - double relativeVolume = experimentalData[0][i]; - double standardDeviation1[] = {1.5}; - SampleValue sample = new SampleValue(relativeVolume, relativeVolume / 50.0, sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(tempSystem); - sampleList.add(sample); - } - } catch (Exception e) { - System.out.println("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - optimizer = new LevenbergMarquardt(); - optimizer.setMaxNumberOfIterations(5); - - optimizer.setSampleSet(sampleSet); - optimizer.solve(); - runCalc(); - // optim.displayCurveFit(); - } + getThermoSystem().initPhysicalProperties(); + saturationVolume = getThermoSystem().getPhase(0).getMass() + / getThermoSystem().getPhase(0).getPhysicalProperties().getDensity(); + saturationPressure = getThermoSystem().getPressure(); + Zsaturation = getThermoSystem().getZ(); + saturationConditionFound = true; + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface tempSystem = new SystemSrkEos(273.15 + 73.0, 10.0); - tempSystem.addComponent("nitrogen", 0.972); - tempSystem.addComponent("CO2", 0.632); - tempSystem.addComponent("methane", 95.111); - tempSystem.addComponent("ethane", 2.553); - tempSystem.addComponent("propane", 0.104); - tempSystem.addComponent("i-butane", 0.121); - tempSystem.addComponent("n-butane", 0.021); - tempSystem.addComponent("i-pentane", 0.066); - tempSystem.addComponent("n-pentane", 0.02); - - tempSystem.addTBPfraction("C6", 0.058, 86.18 / 1000.0, 664.0e-3); - tempSystem.addTBPfraction("C7", 0.107, 96.0 / 1000.0, 738.0e-3); - tempSystem.addTBPfraction("C8", 0.073, 107.0 / 1000.0, 765.0e-3); - tempSystem.addTBPfraction("C9", 0.044, 121.0 / 1000.0, 781.0e-3); - tempSystem.addPlusFraction("C10", 0.118, 190.0 / 1000.0, 813.30e-3); - tempSystem.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(12); - tempSystem.getCharacterization().setLumpingModel("PVTlumpingModel"); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); - tempSystem.init(0); - tempSystem.init(1); - /* - * tempSystem.addComponent("nitrogen", 0.6); tempSystem.addComponent("CO2", 3.34); - * tempSystem.addComponent("methane", 74.16); tempSystem.addComponent("ethane", 7.9); - * tempSystem.addComponent("propane", 4.15); tempSystem.addComponent("i-butane", 0.71); - * tempSystem.addComponent("n-butane", 0.71); tempSystem.addComponent("i-pentane", 0.66); - * tempSystem.addComponent("n-pentane", 0.66); tempSystem.addComponent("n-hexane", 0.81); - * tempSystem.addTBPfraction("C7", 1.2, 91.0 / 1000.0, 0.746); - * tempSystem.addTBPfraction("C8", 1.15, 104.0 / 1000.0, 0.770); - * tempSystem.addTBPfraction("C9", 5.15, 125.0 / 1000.0, 0.8); - */ - - ConstantMassExpansion CMEsim = new ConstantMassExpansion(tempSystem); - // CMEsim.runCalc(); - // double a = CMEsim.getSaturationPressure(); - - CMEsim.setTemperaturesAndPressures(new double[] {273.15 + 73.9, 273.15 + 73.9, - 273.15 + 73.9, 273.15 + 73.9, 273.15 + 73.9}, - new double[] {400, 300.0, 250.0, 200.0, 100.0}); - double[][] expData = {{0.95, 0.99, 1.12, 1.9}}; - CMEsim.setExperimentalData(expData); - // CMEsim.runTuning(); - CMEsim.runCalc(); - } + /** {@inheritDoc} */ + @Override + public double getSaturationPressure() { + return saturationPressure; + } - /** - *

- * Getter for the field relativeVolume. - *

- * - * @return the relativeVolume - */ - public double[] getRelativeVolume() { - return relativeVolume; + /** + *

+ * runCalc. + *

+ */ + public void runCalc() { + saturationConditionFound = false; + relativeVolume = new double[pressures.length]; + totalVolume = new double[pressures.length]; + liquidRelativeVolume = new double[pressures.length]; + Zgas = new double[pressures.length]; + Bg = new double[pressures.length]; + gasStandardVolume = new double[pressures.length]; + gasVolume = new double[pressures.length]; + density = new double[pressures.length]; + Yfactor = new double[pressures.length]; + isoThermalCompressibility = new double[pressures.length]; + gasFormationVolumeFactor = new double[pressures.length]; + viscosity = new double[pressures.length]; + viscosityOil = new double[pressures.length]; + gasExpensionFactor = new double[pressures.length]; + if (!Double.isNaN(temperature)) { + getThermoSystem().setTemperature(temperature, temperatureUnit); } - - /** - *

- * Getter for the field liquidRelativeVolume. - *

- * - * @return the liquidRelativeVolume - */ - public double[] getLiquidRelativeVolume() { - return liquidRelativeVolume; + if (!saturationConditionFound) { + calcSaturationConditions(); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } - - /** - *

- * getZgas. - *

- * - * @return the Zgas - */ - public double[] getZgas() { - return Zgas; + try { + // getThermoSystem().setPressure(400); + // thermoOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + saturationVolume = getThermoSystem().getVolume(); + saturationPressure = getThermoSystem().getPressure(); + Zsaturation = getThermoSystem().getZ(); + saturationIsoThermalCompressibility = -1.0 / getThermoSystem().getPhase(0).getVolume() + / getThermoSystem().getPhase(0).getdPdVTn(); - /** - *

- * getYfactor. - *

- * - * @return the Yfactor - */ - public double[] getYfactor() { - return Yfactor; + for (int i = 0; i < pressures.length; i++) { + // getThermoSystem().init(0); + getThermoSystem().setPressure(pressures[i]); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + getThermoSystem().initPhysicalProperties(); + // getThermoSystem().display(); + totalVolume[i] = getThermoSystem().getVolume(); + relativeVolume[i] = totalVolume[i] / saturationVolume; + density[i] = getThermoSystem().getPhase(0).getDensity("kg/m3"); + gasVolume[i] = getThermoSystem().getPhase(0).getNumberOfMolesInPhase() + * getThermoSystem().getPhase(0).getMolarMass() / density[i]; // getThermoSystem().getPhase(0).getVolume(); + gasStandardVolume[i] = + getThermoSystem().getPhase(0).getVolume() * getThermoSystem().getPhase(0).getPressure() + / ThermodynamicConstantsInterface.referencePressure + / getThermoSystem().getPhase(0).getZ() * 288.15 / getThermoSystem().getTemperature(); + Bg[i] = gasVolume[i] * 1e5 / gasStandardVolume[i]; + Zgas[i] = getThermoSystem().getPhase(0).getZ(); + if (getThermoSystem().getNumberOfPhases() == 1) { + viscosity[i] = getThermoSystem().getPhase(0).getViscosity(); + isoThermalCompressibility[i] = -1.0 / getThermoSystem().getPhase(0).getVolume() + / getThermoSystem().getPhase(0).getdPdVTn(); + Yfactor[i] = Double.NaN; + liquidRelativeVolume[i] = Double.NaN; + } + if (getThermoSystem().getNumberOfPhases() > 1) { + liquidRelativeVolume[i] = + getThermoSystem().getPhase("oil").getVolume() / saturationVolume * 100; + Yfactor[i] = ((saturationPressure - pressures[i]) / pressures[i]) + / ((totalVolume[i] - saturationVolume) / saturationVolume); + viscosity[i] = Double.NaN; + isoThermalCompressibility[i] = Double.NaN; + } + // System.out.println("pressure " + getThermoSystem().getPressure() + " relative volume " + // + relativeVolume[i] + " liquid rel vol " + liquidRelativeVolume[i] + " Zgas " + Zgas[i] + // + " Yfactor " + getYfactor()[i] + " isoCompfactor " + getIsoThermalCompressibility()[i]); } - /** - *

- * Getter for the field density. - *

- * - * @return the density - */ - public double[] getDensity() { - return density; - } + // System.out.println("test finished"); + // System.out.println("test finished"); + } - /** - *

- * Getter for the field viscosity. - *

- * - * @return the gas viscosity - */ - public double[] getViscosity() { - return viscosity; - } + /** + *

+ * runTuning. + *

+ */ + public void runTuning() { + ArrayList sampleList = new ArrayList(); - /** - *

- * getBg. - *

- * - * @return the gas volume formation factor - */ - public double[] getBg() { - return Bg; - } + try { + System.out.println("adding...."); - /** - *

- * Getter for the field isoThermalCompressibility. - *

- * - * @return the isoThermalCompressibility - */ - public double[] getIsoThermalCompressibility() { - return isoThermalCompressibility; - } + for (int i = 0; i < experimentalData[0].length; i++) { + CMEFunction function = new CMEFunction(); + double[] guess = new double[] { + getThermoSystem().getCharacterization().getPlusFractionModel().getMPlus() / 1000.0}; + function.setInitialGuess(guess); - /** - *

- * Getter for the field saturationIsoThermalCompressibility. - *

- * - * @return the saturationIsoThermalCompressibility - */ - public double getSaturationIsoThermalCompressibility() { - return saturationIsoThermalCompressibility; + SystemInterface tempSystem = getThermoSystem(); // getThermoSystem().clone(); + + tempSystem.setTemperature(temperature); + tempSystem.setPressure(pressures[i]); + // thermoOps.TPflash(); + // tempSystem.display(); + double[] sample1 = {temperature, pressures[i]}; + double relativeVolume = experimentalData[0][i]; + double[] standardDeviation1 = {1.5}; + SampleValue sample = + new SampleValue(relativeVolume, relativeVolume / 50.0, sample1, standardDeviation1); + sample.setFunction(function); + sample.setThermodynamicSystem(tempSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); } - /** - *

- * setTemperaturesAndPressures. - *

- * - * @param temperature an array of {@link double} objects - * @param pressure an array of {@link double} objects + SampleSet sampleSet = new SampleSet(sampleList); + + optimizer = new LevenbergMarquardt(); + optimizer.setMaxNumberOfIterations(5); + + optimizer.setSampleSet(sampleSet); + optimizer.solve(); + runCalc(); + // optim.displayCurveFit(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface tempSystem = new SystemSrkEos(273.15 + 73.0, 10.0); + tempSystem.addComponent("nitrogen", 0.972); + tempSystem.addComponent("CO2", 0.632); + tempSystem.addComponent("methane", 95.111); + tempSystem.addComponent("ethane", 2.553); + tempSystem.addComponent("propane", 0.104); + tempSystem.addComponent("i-butane", 0.121); + tempSystem.addComponent("n-butane", 0.021); + tempSystem.addComponent("i-pentane", 0.066); + tempSystem.addComponent("n-pentane", 0.02); + + tempSystem.addTBPfraction("C6", 0.058, 86.18 / 1000.0, 664.0e-3); + tempSystem.addTBPfraction("C7", 0.107, 96.0 / 1000.0, 738.0e-3); + tempSystem.addTBPfraction("C8", 0.073, 107.0 / 1000.0, 765.0e-3); + tempSystem.addTBPfraction("C9", 0.044, 121.0 / 1000.0, 781.0e-3); + tempSystem.addPlusFraction("C10", 0.118, 190.0 / 1000.0, 813.30e-3); + tempSystem.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(12); + tempSystem.getCharacterization().setLumpingModel("PVTlumpingModel"); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + tempSystem.init(0); + tempSystem.init(1); + /* + * tempSystem.addComponent("nitrogen", 0.6); tempSystem.addComponent("CO2", 3.34); + * tempSystem.addComponent("methane", 74.16); tempSystem.addComponent("ethane", 7.9); + * tempSystem.addComponent("propane", 4.15); tempSystem.addComponent("i-butane", 0.71); + * tempSystem.addComponent("n-butane", 0.71); tempSystem.addComponent("i-pentane", 0.66); + * tempSystem.addComponent("n-pentane", 0.66); tempSystem.addComponent("n-hexane", 0.81); + * tempSystem.addTBPfraction("C7", 1.2, 91.0 / 1000.0, 0.746); tempSystem.addTBPfraction("C8", + * 1.15, 104.0 / 1000.0, 0.770); tempSystem.addTBPfraction("C9", 5.15, 125.0 / 1000.0, 0.8); */ - public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { - this.pressures = pressure; - this.temperatures = temperature; - experimentalData = new double[temperature.length][1]; - } + + ConstantMassExpansion CMEsim = new ConstantMassExpansion(tempSystem); + // CMEsim.runCalc(); + // double a = CMEsim.getSaturationPressure(); + + CMEsim.setTemperaturesAndPressures( + new double[] {273.15 + 73.9, 273.15 + 73.9, 273.15 + 73.9, 273.15 + 73.9, 273.15 + 73.9}, + new double[] {400, 300.0, 250.0, 200.0, 100.0}); + double[][] expData = {{0.95, 0.99, 1.12, 1.9}}; + CMEsim.setExperimentalData(expData); + // CMEsim.runTuning(); + CMEsim.runCalc(); + } + + /** + *

+ * Getter for the field relativeVolume. + *

+ * + * @return the relativeVolume + */ + public double[] getRelativeVolume() { + return relativeVolume; + } + + /** + *

+ * Getter for the field liquidRelativeVolume. + *

+ * + * @return the liquidRelativeVolume + */ + public double[] getLiquidRelativeVolume() { + return liquidRelativeVolume; + } + + /** + *

+ * getZgas. + *

+ * + * @return the Zgas + */ + public double[] getZgas() { + return Zgas; + } + + /** + *

+ * getYfactor. + *

+ * + * @return the Yfactor + */ + public double[] getYfactor() { + return Yfactor; + } + + /** + *

+ * Getter for the field density. + *

+ * + * @return the density + */ + public double[] getDensity() { + return density; + } + + /** + *

+ * Getter for the field viscosity. + *

+ * + * @return the gas viscosity + */ + public double[] getViscosity() { + return viscosity; + } + + /** + *

+ * getBg. + *

+ * + * @return the gas volume formation factor + */ + public double[] getBg() { + return Bg; + } + + /** + *

+ * Getter for the field isoThermalCompressibility. + *

+ * + * @return the isoThermalCompressibility + */ + public double[] getIsoThermalCompressibility() { + return isoThermalCompressibility; + } + + /** + *

+ * Getter for the field saturationIsoThermalCompressibility. + *

+ * + * @return the saturationIsoThermalCompressibility + */ + public double getSaturationIsoThermalCompressibility() { + return saturationIsoThermalCompressibility; + } + + /** + *

+ * setTemperaturesAndPressures. + *

+ * + * @param temperature an array of type double + * @param pressure an array of type double + */ + public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { + this.pressures = pressure; + this.temperatures = temperature; + experimentalData = new double[temperature.length][1]; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/ConstantVolumeDepletion.java b/src/main/java/neqsim/PVTsimulation/simulation/ConstantVolumeDepletion.java index 5bf2332633..270333b309 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/ConstantVolumeDepletion.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/ConstantVolumeDepletion.java @@ -1,6 +1,8 @@ package neqsim.PVTsimulation.simulation; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.PVTsimulation.util.parameterfitting.CVDFunction; import neqsim.statistics.parameterFitting.SampleSet; import neqsim.statistics.parameterFitting.SampleValue; @@ -17,319 +19,353 @@ * @version $Id: $Id */ public class ConstantVolumeDepletion extends BasePVTsimulation { - private double[] relativeVolume = null; - double[] totalVolume = null, liquidVolumeRelativeToVsat = null, liquidVolume = null; - boolean saturationConditionFound = false; - private double[] liquidRelativeVolume = null; - private double[] Zmix, Zgas = null, cummulativeMolePercDepleted = null; - double[] temperatures = null; + static Logger logger = LogManager.getLogger(ConstantVolumeDepletion.class); - double[] pressure = null; + private double[] relativeVolume = null; + double[] totalVolume = null; + double[] liquidVolumeRelativeToVsat = null; + double[] liquidVolume = null; + boolean saturationConditionFound = false; + private double[] liquidRelativeVolume = null; + private double[] Zmix; + private double[] Zgas = null; + private double[] cummulativeMolePercDepleted = null; + double[] temperatures = null; + double[] pressure = null; - /** - *

- * Constructor for ConstantVolumeDepletion. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public ConstantVolumeDepletion(SystemInterface tempSystem) { - super(tempSystem); - } + /** + *

+ * Constructor for ConstantVolumeDepletion. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public ConstantVolumeDepletion(SystemInterface tempSystem) { + super(tempSystem); + } - /** - *

- * setTemperaturesAndPressures. - *

- * - * @param temperature an array of {@link double} objects - * @param pressure an array of {@link double} objects - */ - public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { - this.pressure = pressure; - this.temperatures = temperature; - experimentalData = new double[temperature.length][1]; - } + /** + *

+ * setTemperaturesAndPressures. + *

+ * + * @param temperature an array of type double + * @param pressure an array of type double + */ + public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { + this.pressure = pressure; + this.temperatures = temperature; + experimentalData = new double[temperature.length][1]; + } - /** - *

- * calcSaturationConditions. - *

+ /** + *

+ * calcSaturationConditions. + *

+ */ + public void calcSaturationConditions() { + getThermoSystem().setPressure(1.0); + do { + getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); + } while (getThermoSystem().getNumberOfPhases() == 1 + && getThermoSystem().getPressure() < 1000.0); + do { + getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); + thermoOps.TPflash(); + } while (getThermoSystem().getNumberOfPhases() > 1 && getThermoSystem().getPressure() < 1000.0); + double minPres = getThermoSystem().getPressure() - 10.0; + double maxPres = getThermoSystem().getPressure(); + do { + getThermoSystem().setPressure((minPres + maxPres) / 2.0); + thermoOps.TPflash(); + if (getThermoSystem().getNumberOfPhases() > 1) { + minPres = getThermoSystem().getPressure(); + } else { + maxPres = getThermoSystem().getPressure(); + } + } while (Math.abs(maxPres - minPres) > 1e-5); + /* + * try { thermoOps.dewPointPressureFlash(); } catch (Exception ex) { + * logger.error(ex.getMessage(), ex); } */ - public void calcSaturationConditions() { - getThermoSystem().setPressure(1.0); - do { - getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); - } while (getThermoSystem().getNumberOfPhases() == 1 - && getThermoSystem().getPressure() < 1000.0); - do { - getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); - thermoOps.TPflash(); - } while (getThermoSystem().getNumberOfPhases() > 1 - && getThermoSystem().getPressure() < 1000.0); - double minPres = getThermoSystem().getPressure() - 10.0; - double maxPres = getThermoSystem().getPressure(); - do { - getThermoSystem().setPressure((minPres + maxPres) / 2.0); - thermoOps.TPflash(); - if (getThermoSystem().getNumberOfPhases() > 1) { - minPres = getThermoSystem().getPressure(); - } else { - maxPres = getThermoSystem().getPressure(); - } - } while (Math.abs(maxPres - minPres) > 1e-5); - /* - * try { thermoOps.dewPointPressureFlash(); } catch (Exception e) { e.printStackTrace(); } - */ - saturationVolume = getThermoSystem().getVolume(); - saturationPressure = getThermoSystem().getPressure(); - Zsaturation = getThermoSystem().getZ(); - saturationConditionFound = true; - } + getThermoSystem().initPhysicalProperties("density"); + saturationVolume = getThermoSystem().getCorrectedVolume(); + saturationPressure = getThermoSystem().getPressure(); + Zsaturation = getThermoSystem().getZvolcorr(); + saturationConditionFound = true; + } - /** - *

- * runCalc. - *

- */ - public void runCalc() { - saturationConditionFound = false; - relativeVolume = new double[pressures.length]; - totalVolume = new double[pressures.length]; - liquidVolumeRelativeToVsat = new double[pressures.length]; - liquidVolume = new double[pressures.length]; - Zgas = new double[pressures.length]; - Zmix = new double[pressures.length]; - liquidRelativeVolume = new double[pressures.length]; - cummulativeMolePercDepleted = new double[pressures.length]; - double totalNumberOfMoles = getThermoSystem().getTotalNumberOfMoles(); - getThermoSystem().setTemperature(temperature); + /** + *

+ * runCalc. + *

+ */ + public void runCalc() { + saturationConditionFound = false; + relativeVolume = new double[pressures.length]; + totalVolume = new double[pressures.length]; + liquidVolumeRelativeToVsat = new double[pressures.length]; + liquidVolume = new double[pressures.length]; + Zgas = new double[pressures.length]; + Zmix = new double[pressures.length]; + liquidRelativeVolume = new double[pressures.length]; + double oldVolCorr = 0.0; + double volumeCorrection = 0.0; + cummulativeMolePercDepleted = new double[pressures.length]; + double totalNumberOfMoles = getThermoSystem().getTotalNumberOfMoles(); + if (!Double.isNaN(temperature)) { + getThermoSystem().setTemperature(temperature, temperatureUnit); + } - for (int i = 0; i < pressures.length; i++) { - getThermoSystem().setPressure(pressures[i]); - try { - thermoOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); - } - // getThermoSystem().display(); - totalVolume[i] = getThermoSystem().getVolume(); - System.out.println("volume " + totalVolume[i]); - cummulativeMolePercDepleted[i] = - 100.0 - getThermoSystem().getTotalNumberOfMoles() / totalNumberOfMoles * 100; - if (getThermoSystem().getNumberOfPhases() > 1) { - if (!saturationConditionFound) { - calcSaturationConditions(); - getThermoSystem().setPressure(pressures[i]); - try { - thermoOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); - } - } + for (int i = 0; i < pressures.length; i++) { + getThermoSystem().setPressure(pressures[i]); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + getThermoSystem().initPhysicalProperties("density"); + // getThermoSystem().display(); + totalVolume[i] = getThermoSystem().getCorrectedVolume(); + // System.out.println("volume " + totalVolume[i]); + cummulativeMolePercDepleted[i] = + 100.0 - getThermoSystem().getTotalNumberOfMoles() / totalNumberOfMoles * 100; + if (getThermoSystem().getNumberOfPhases() > 1) { + if (!saturationConditionFound) { + calcSaturationConditions(); + getThermoSystem().setPressure(pressures[i]); + try { + thermoOps.TPflash(); + getThermoSystem().initPhysicalProperties("density"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } - // if (totalVolume[i] > saturationVolume) { - liquidVolume[i] = getThermoSystem().getPhase(1).getVolume(); - liquidVolumeRelativeToVsat[i] = liquidVolume[i] / saturationVolume; - Zgas[i] = getThermoSystem().getPhase(0).getZ(); - Zmix[i] = getThermoSystem().getZ(); - if (getThermoSystem().getNumberOfPhases() > 1) { - liquidRelativeVolume[i] = - getThermoSystem().getPhase("oil").getVolume() / saturationVolume * 100; - } + // if (totalVolume[i] > saturationVolume) { + liquidVolume[i] = getThermoSystem().getPhase(1).getCorrectedVolume(); + liquidVolumeRelativeToVsat[i] = liquidVolume[i] / saturationVolume; + Zgas[i] = getThermoSystem().getPhase(0).getZvolcorr(); + Zmix[i] = getThermoSystem().getZvolcorr(); + liquidRelativeVolume[i] = + getThermoSystem().getPhase("oil").getCorrectedVolume() / saturationVolume * 100; + oldVolCorr = volumeCorrection; + volumeCorrection = getThermoSystem().getCorrectedVolume() - saturationVolume; + double test = + (volumeCorrection - oldVolCorr) / getThermoSystem().getPhase(0).getCorrectedVolume(); + double[] change = new double[getThermoSystem().getPhase(0).getNumberOfComponents()]; + // System.out.println(test); - double volumeCorrection = getThermoSystem().getVolume() - saturationVolume; - double test = volumeCorrection / getThermoSystem().getPhase(0).getMolarVolume(); + for (int j = 0; j < getThermoSystem().getPhase(0).getNumberOfComponents(); j++) { + try { + change[j] = + (test * getThermoSystem().getPhase(0).getComponent(j).getx() < getThermoSystem() + .getPhase(0).getComponent(j).getNumberOfMolesInPhase()) + ? test * getThermoSystem().getPhase(0).getComponent(j).getx() + : 0.0; - for (int j = 0; j < getThermoSystem().getPhase(0).getNumberOfComponents(); j++) { - getThermoSystem().addComponent(j, - -test * getThermoSystem().getPhase(0).getComponent(j).getx()); - // } - } - } + } catch (Exception e) { + logger.debug(e.getMessage()); + } } - - for (int i = 0; i < pressures.length; i++) { - relativeVolume[i] = totalVolume[i] / saturationVolume; - System.out.println("rel volume " + relativeVolume[i]); + getThermoSystem().init(0); + for (int j = 0; j < getThermoSystem().getPhase(0).getNumberOfComponents(); j++) { + try { + getThermoSystem().addComponent(j, -change[j]); + } catch (Exception e) { + logger.debug(e.getMessage()); + } } - System.out.println("test finished"); + // getThermoSystem().init(0); + // getThermoSystem().init(1); + } } - /** - *

- * runTuning. - *

- */ - public void runTuning() { - ArrayList sampleList = new ArrayList(); + for (int i = 0; i < pressures.length; i++) { + relativeVolume[i] = totalVolume[i] / saturationVolume; + // System.out.println("rel volume " + relativeVolume[i]); + } + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + // System.out.println("test finished"); + } - try { - System.out.println("adding...."); + /** + *

+ * runTuning. + *

+ */ + public void runTuning() { + ArrayList sampleList = new ArrayList(); - for (int i = 0; i < experimentalData[0].length; i++) { - CVDFunction function = new CVDFunction(); - double[] guess = new double[] {234.0 / 1000.0};// getThermoSystem().getCharacterization().getPlusFractionModel().getMPlus()/1000.0}; - function.setInitialGuess(guess); + try { + System.out.println("adding...."); - SystemInterface tempSystem = getThermoSystem(); // getThermoSystem().clone(); + for (int i = 0; i < experimentalData[0].length; i++) { + CVDFunction function = new CVDFunction(); + double[] guess = new double[] {234.0 / 1000.0}; // getThermoSystem().getCharacterization().getPlusFractionModel().getMPlus()/1000.0}; + function.setInitialGuess(guess); - tempSystem.setTemperature(temperature); - tempSystem.setPressure(pressures[i]); - // thermoOps.TPflash(); - // tempSystem.display(); - double sample1[] = {temperatures[i], pressures[i]}; - double relativeVolume = experimentalData[0][i]; - double standardDeviation1[] = {1.5}; - SampleValue sample = new SampleValue(relativeVolume, relativeVolume / 50.0, sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(tempSystem); - sampleList.add(sample); - } - } catch (Exception e) { - System.out.println("database error" + e); - } + SystemInterface tempSystem = getThermoSystem(); // getThermoSystem().clone(); - SampleSet sampleSet = new SampleSet(sampleList); + tempSystem.setTemperature(temperature, temperatureUnit); + tempSystem.setPressure(pressures[i]); + // thermoOps.TPflash(); + // tempSystem.display(); + double[] sample1 = {temperatures[i], pressures[i]}; + double relativeVolume = experimentalData[0][i]; + double[] standardDeviation1 = {1.5}; + SampleValue sample = + new SampleValue(relativeVolume, relativeVolume / 50.0, sample1, standardDeviation1); + sample.setFunction(function); + sample.setThermodynamicSystem(tempSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); + } - optimizer = new LevenbergMarquardt(); - optimizer.setMaxNumberOfIterations(20); + SampleSet sampleSet = new SampleSet(sampleList); - optimizer.setSampleSet(sampleSet); - optimizer.solve(); - runCalc(); - // optim.displayCurveFit(); - } + optimizer = new LevenbergMarquardt(); + optimizer.setMaxNumberOfIterations(20); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects + optimizer.setSampleSet(sampleSet); + optimizer.solve(); + runCalc(); + // optim.displayCurveFit(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface tempSystem = new SystemSrkEos(298.0, 211.0); + /* + * tempSystem.addComponent("nitrogen", 0.64); tempSystem.addComponent("CO2", 3.53); + * tempSystem.addComponent("methane", 70.78); tempSystem.addComponent("ethane", 8.94); + * tempSystem.addComponent("propane", 5.05); tempSystem.addComponent("i-butane", 0.85); + * tempSystem.addComponent("n-butane", 1.68); tempSystem.addComponent("iC5", 0.62); + * tempSystem.addComponent("n-pentane", 0.79); tempSystem.addComponent("n-hexane", 0.83); + * tempSystem.addTBPfraction("C7", 1.06, 92.2 / 1000.0, 0.7324); tempSystem.addTBPfraction("C8", + * 1.06, 104.6 / 1000.0, 0.7602); tempSystem.addTBPfraction("C9", 0.79, 119.1 / 1000.0, 0.7677); + * tempSystem.addTBPfraction("C10", 0.57, 133.0 / 1000.0, 0.79); + * tempSystem.addTBPfraction("C11", 0.38, 155.0 / 1000.0, 0.795); + * tempSystem.addTBPfraction("C12", 0.37, 162.0 / 1000.0, 0.806); + * tempSystem.addTBPfraction("C13", 0.32, 177.0 / 1000.0, 0.824); + * tempSystem.addTBPfraction("C14", 0.27, 198.0 / 1000.0, 0.835); + * tempSystem.addTBPfraction("C15", 0.23, 202.0 / 1000.0, 0.84); + * tempSystem.addTBPfraction("C16", 0.19, 215.0 / 1000.0, 0.846); + * tempSystem.addTBPfraction("C17", 0.17, 234.0 / 1000.0, 0.84); + * tempSystem.addTBPfraction("C18", 0.13, 251.0 / 1000.0, 0.844); + * tempSystem.addTBPfraction("C19", 0.13, 270.0 / 1000.0, 0.854); + * tempSystem.addPlusFraction("C20", 0.62, 381.0 / 1000.0, 0.88); + * tempSystem.getCharacterization().getLumpingModel(). setNumberOfLumpedComponents(6); + * tempSystem.getCharacterization().characterisePlusFraction(); */ - public static void main(String[] args) { - SystemInterface tempSystem = new SystemSrkEos(298.0, 211.0); - /* - * tempSystem.addComponent("nitrogen", 0.64); tempSystem.addComponent("CO2", 3.53); - * tempSystem.addComponent("methane", 70.78); tempSystem.addComponent("ethane", 8.94); - * tempSystem.addComponent("propane", 5.05); tempSystem.addComponent("i-butane", 0.85); - * tempSystem.addComponent("n-butane", 1.68); tempSystem.addComponent("iC5", 0.62); - * tempSystem.addComponent("n-pentane", 0.79); tempSystem.addComponent("n-hexane", 0.83); - * tempSystem.addTBPfraction("C7", 1.06, 92.2 / 1000.0, 0.7324); - * tempSystem.addTBPfraction("C8", 1.06, 104.6 / 1000.0, 0.7602); - * tempSystem.addTBPfraction("C9", 0.79, 119.1 / 1000.0, 0.7677); - * tempSystem.addTBPfraction("C10", 0.57, 133.0 / 1000.0, 0.79); - * tempSystem.addTBPfraction("C11", 0.38, 155.0 / 1000.0, 0.795); - * tempSystem.addTBPfraction("C12", 0.37, 162.0 / 1000.0, 0.806); - * tempSystem.addTBPfraction("C13", 0.32, 177.0 / 1000.0, 0.824); - * tempSystem.addTBPfraction("C14", 0.27, 198.0 / 1000.0, 0.835); - * tempSystem.addTBPfraction("C15", 0.23, 202.0 / 1000.0, 0.84); - * tempSystem.addTBPfraction("C16", 0.19, 215.0 / 1000.0, 0.846); - * tempSystem.addTBPfraction("C17", 0.17, 234.0 / 1000.0, 0.84); - * tempSystem.addTBPfraction("C18", 0.13, 251.0 / 1000.0, 0.844); - * tempSystem.addTBPfraction("C19", 0.13, 270.0 / 1000.0, 0.854); - * tempSystem.addPlusFraction("C20", 0.62, 381.0 / 1000.0, 0.88); - * tempSystem.getCharacterization().getLumpingModel(). setNumberOfLumpedComponents(6); - * tempSystem.getCharacterization().characterisePlusFraction(); - */ - // tempSystem.addComponent("methane", 70.78); - // tempSystem.addComponent("nC10", 5.83); - // tempSystem.createDatabase(true); - // tempSystem.setMixingRule(2); + // tempSystem.addComponent("methane", 70.78); + // tempSystem.addComponent("nC10", 5.83); + // tempSystem.createDatabase(true); + // tempSystem.setMixingRule(2); - // SystemInterface tempSystem = new SystemSrkEos(273.15 + 120, 100.0); - tempSystem.addComponent("nitrogen", 0.34); - tempSystem.addComponent("CO2", 3.59); - tempSystem.addComponent("methane", 67.42); - tempSystem.addComponent("ethane", 9.02); - tempSystem.addComponent("propane", 4.31); - tempSystem.addComponent("i-butane", 0.93); - tempSystem.addComponent("n-butane", 1.71); - tempSystem.addComponent("i-pentane", 0.74); - tempSystem.addComponent("n-pentane", 0.85); - tempSystem.addComponent("n-hexane", 1.38); - tempSystem.addTBPfraction("C7", 1.5, 109.00 / 1000.0, 0.6912); - tempSystem.addTBPfraction("C8", 1.69, 120.20 / 1000.0, 0.7255); - tempSystem.addTBPfraction("C9", 1.14, 129.5 / 1000.0, 0.7454); - tempSystem.addTBPfraction("C10", 0.8, 135.3 / 1000.0, 0.7864); - tempSystem.addPlusFraction("C11", 4.58, 256.2 / 1000.0, 0.8398); - // tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); - tempSystem.init(0); - tempSystem.init(1); + // SystemInterface tempSystem = new SystemSrkEos(273.15 + 120, 100.0); + tempSystem.addComponent("nitrogen", 0.34); + tempSystem.addComponent("CO2", 3.59); + tempSystem.addComponent("methane", 67.42); + tempSystem.addComponent("ethane", 9.02); + tempSystem.addComponent("propane", 4.31); + tempSystem.addComponent("i-butane", 0.93); + tempSystem.addComponent("n-butane", 1.71); + tempSystem.addComponent("i-pentane", 0.74); + tempSystem.addComponent("n-pentane", 0.85); + tempSystem.addComponent("n-hexane", 1.38); + tempSystem.addTBPfraction("C7", 1.5, 109.00 / 1000.0, 0.6912); + tempSystem.addTBPfraction("C8", 1.69, 120.20 / 1000.0, 0.7255); + tempSystem.addTBPfraction("C9", 1.14, 129.5 / 1000.0, 0.7454); + tempSystem.addTBPfraction("C10", 0.8, 135.3 / 1000.0, 0.7864); + tempSystem.addPlusFraction("C11", 4.58, 256.2 / 1000.0, 0.8398); + // tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + tempSystem.init(0); + tempSystem.init(1); - ConstantVolumeDepletion CVDsim = new ConstantVolumeDepletion(tempSystem); - CVDsim.setTemperature(315.0); - CVDsim.setPressures(new double[] {400, 300.0, 200.0, 150.0, 100.0, 50.0}); - CVDsim.runCalc(); - CVDsim.setTemperaturesAndPressures(new double[] {313, 313, 313, 313}, - new double[] {400, 300.0, 200.0, 100.0}); - double[][] expData = {{0.95, 0.99, 1.0, 1.1}}; - CVDsim.setExperimentalData(expData); - // CVDsim.runTuning(); - } + ConstantVolumeDepletion CVDsim = new ConstantVolumeDepletion(tempSystem); + CVDsim.setTemperature(315.0, "K"); + CVDsim.setPressures(new double[] {400, 300.0, 200.0, 150.0, 100.0, 50.0}); + CVDsim.runCalc(); + CVDsim.setTemperaturesAndPressures(new double[] {313, 313, 313, 313}, + new double[] {400, 300.0, 200.0, 100.0}); + double[][] expData = {{0.95, 0.99, 1.0, 1.1}}; + CVDsim.setExperimentalData(expData); + // CVDsim.runTuning(); + } - /** - *

- * Getter for the field relativeVolume. - *

- * - * @return the relativeVolume - */ - public double[] getRelativeVolume() { - return relativeVolume; - } + /** + *

+ * Getter for the field relativeVolume. + *

+ * + * @return the relativeVolume + */ + public double[] getRelativeVolume() { + return relativeVolume; + } - /** {@inheritDoc} */ - @Override - public double getSaturationPressure() { - return saturationPressure; - } + /** {@inheritDoc} */ + @Override + public double getSaturationPressure() { + return saturationPressure; + } - /** - *

- * getZmix. - *

- * - * @return the Zmix - */ - public double[] getZmix() { - return Zmix; - } + /** + *

+ * getZmix. + *

+ * + * @return the Zmix + */ + public double[] getZmix() { + return Zmix; + } - /** - *

- * getZgas. - *

- * - * @return the Zgas - */ - public double[] getZgas() { - return Zgas; - } + /** + *

+ * getZgas. + *

+ * + * @return the Zgas + */ + public double[] getZgas() { + return Zgas; + } - /** - *

- * Getter for the field liquidRelativeVolume. - *

- * - * @return the liquidRelativeVolume - */ - public double[] getLiquidRelativeVolume() { - return liquidRelativeVolume; - } + /** + *

+ * Getter for the field liquidRelativeVolume. + *

+ * + * @return the liquidRelativeVolume + */ + public double[] getLiquidRelativeVolume() { + return liquidRelativeVolume; + } - /** - *

- * Getter for the field cummulativeMolePercDepleted. - *

- * - * @return the cummulativeMolePercDepleted - */ - public double[] getCummulativeMolePercDepleted() { - return cummulativeMolePercDepleted; - } + /** + *

+ * Getter for the field cummulativeMolePercDepleted. + *

+ * + * @return the cummulativeMolePercDepleted + */ + public double[] getCummulativeMolePercDepleted() { + return cummulativeMolePercDepleted; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/DensitySim.java b/src/main/java/neqsim/PVTsimulation/simulation/DensitySim.java index 24be5c0854..63d9dca18f 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/DensitySim.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/DensitySim.java @@ -1,6 +1,8 @@ package neqsim.PVTsimulation.simulation; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.physicalProperties.util.parameterFitting.pureComponentParameterFitting.pureCompViscosity.linearLiquidModel.ViscosityFunction; import neqsim.statistics.parameterFitting.SampleSet; import neqsim.statistics.parameterFitting.SampleValue; @@ -17,204 +19,205 @@ * @version $Id: $Id */ public class DensitySim extends BasePVTsimulation { - double[] temperature = null; - - double[] pressure = null; - private double[] waxFraction = null; - private double[] gasDensity; - private double[] oilDensity; - private double[] aqueousDensity; - - /** - *

- * Constructor for DensitySim. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public DensitySim(SystemInterface tempSystem) { - super(tempSystem); - temperature = new double[1]; - pressure = new double[1]; - temperature[0] = tempSystem.getTemperature(); - pressure[0] = tempSystem.getPressure(); + static Logger logger = LogManager.getLogger(DensitySim.class); + + double[] temperature = null; + + double[] pressure = null; + private double[] waxFraction = null; + private double[] gasDensity; + private double[] oilDensity; + private double[] aqueousDensity; + + /** + *

+ * Constructor for DensitySim. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public DensitySim(SystemInterface tempSystem) { + super(tempSystem); + temperature = new double[1]; + pressure = new double[1]; + temperature[0] = tempSystem.getTemperature(); + pressure[0] = tempSystem.getPressure(); + } + + /** + *

+ * setTemperaturesAndPressures. + *

+ * + * @param temperature an array of type double + * @param pressure an array of type double + */ + public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { + this.pressure = pressure; + this.temperature = temperature; + experimentalData = new double[temperature.length][1]; + } + + /** + *

+ * runTuning. + *

+ */ + public void runTuning() { + ArrayList sampleList = new ArrayList(); + + try { + System.out.println("adding...."); + + for (int i = 0; i < experimentalData[0].length; i++) { + ViscosityFunction function = new ViscosityFunction(); + double[] guess = {1.0}; // getThermoSystem().getPhase(0).getComponent(0).getCriticalViscosity()}; + function.setInitialGuess(guess); + + SystemInterface tempSystem = getThermoSystem(); // getThermoSystem().clone(); + + tempSystem.setTemperature(temperature[i]); + tempSystem.setPressure(pressure[i]); + thermoOps.TPflash(); + // tempSystem.display(); + double[] sample1 = {temperature[i]}; + double viscosity = experimentalData[0][i]; + double[] standardDeviation1 = {1.5}; + SampleValue sample = + new SampleValue(viscosity, viscosity / 50.0, sample1, standardDeviation1); + sample.setFunction(function); + sample.setThermodynamicSystem(tempSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); } - /** - *

- * setTemperaturesAndPressures. - *

- * - * @param temperature an array of {@link double} objects - * @param pressure an array of {@link double} objects - */ - public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { - this.pressure = pressure; - this.temperature = temperature; - experimentalData = new double[temperature.length][1]; - } - - /** - *

- * runTuning. - *

- */ - public void runTuning() { - ArrayList sampleList = new ArrayList(); - - try { - System.out.println("adding...."); - - for (int i = 0; i < experimentalData[0].length; i++) { - ViscosityFunction function = new ViscosityFunction(); - double guess[] = {1.0};// getThermoSystem().getPhase(0).getComponent(0).getCriticalViscosity()}; - function.setInitialGuess(guess); - - SystemInterface tempSystem = getThermoSystem(); // getThermoSystem().clone(); - - tempSystem.setTemperature(temperature[i]); - tempSystem.setPressure(pressure[i]); - thermoOps.TPflash(); - // tempSystem.display(); - double sample1[] = {temperature[i]}; - double viscosity = experimentalData[0][i]; - double standardDeviation1[] = {1.5}; - SampleValue sample = - new SampleValue(viscosity, viscosity / 50.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(tempSystem); - sampleList.add(sample); - } - } catch (Exception e) { - System.out.println("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - optimizer = new LevenbergMarquardt(); - optimizer.setMaxNumberOfIterations(20); - - optimizer.setSampleSet(sampleSet); - optimizer.solve(); - runCalc(); - optimizer.displayCurveFit(); - } - - /** - *

- * runCalc. - *

- */ - public void runCalc() { - gasDensity = new double[pressure.length]; - oilDensity = new double[pressure.length]; - aqueousDensity = new double[pressure.length]; - - for (int i = 0; i < pressure.length; i++) { - // thermoOps.setSystem(getThermoSystem()); - getThermoSystem().setPressure(pressure[i]); - getThermoSystem().setTemperature(temperature[i]); - thermoOps.TPflash(); - getThermoSystem().initPhysicalProperties(); - waxFraction[i] = 0.0; - - if (getThermoSystem().hasPhaseType("gas")) { - gasDensity[i] = - getThermoSystem().getPhase("gas").getPhysicalProperties().getViscosity(); - } - if (getThermoSystem().hasPhaseType("oil")) { - oilDensity[i] = - getThermoSystem().getPhase("oil").getPhysicalProperties().getViscosity(); - } - if (getThermoSystem().hasPhaseType("aqueous")) { - aqueousDensity[i] = getThermoSystem().getPhase("aqueous").getPhysicalProperties() - .getViscosity(); - } - } - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); - // tempSystem.addComponent("n-heptane", 6.78); - - // tempSystem.addTBPfraction("C19", 10.13, 270.0 / 1000.0, 0.814); - tempSystem.addPlusFraction("C20", 10.62, 100.0 / 1000.0, 0.73); - - // tempSystem.getCharacterization().characterisePlusFraction(); - // tempSystem.getWaxModel().addTBPWax(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); - // tempSystem.addSolidComplexPhase("wax"); - // tempSystem.setMultiphaseWaxCheck(true); - // tempSystem.setMultiPhaseCheck(true); - tempSystem.init(0); - tempSystem.init(1); - - DensitySim sepSim = new DensitySim(tempSystem); - double[] temps = {300.15, 293.15, 283.15, 273.15, 264.15}; - double[] pres = {5, 5, 5, 5.0, 5.0}; - sepSim.setTemperaturesAndPressures(temps, pres); - sepSim.runCalc(); - - double[][] expData = {{2e-4, 3e-4, 4e-4, 5e-4, 6e-4},}; - sepSim.setExperimentalData(expData); - sepSim.runTuning(); - // sepSim.runCalc(); - double a = sepSim.getGasDensity()[0]; - double a2 = sepSim.getOilDensity()[0]; - sepSim.getThermoSystem().display(); - // sepSim.tuneModel(exptemperatures, exppressures, expwaxFrations); - } - - /** - *

- * Getter for the field waxFraction. - *

- * - * @return the waxFraction - */ - public double[] getWaxFraction() { - return waxFraction; - } - - /** - *

- * Getter for the field gasDensity. - *

- * - * @return the gasViscosity - */ - public double[] getGasDensity() { - return gasDensity; - } - - /** - *

- * Getter for the field oilDensity. - *

- * - * @return the oilViscosity - */ - public double[] getOilDensity() { - return oilDensity; - } - - /** - *

- * Getter for the field aqueousDensity. - *

- * - * @return the aqueousViscosity - */ - public double[] getAqueousDensity() { - return aqueousDensity; + SampleSet sampleSet = new SampleSet(sampleList); + + optimizer = new LevenbergMarquardt(); + optimizer.setMaxNumberOfIterations(20); + + optimizer.setSampleSet(sampleSet); + optimizer.solve(); + runCalc(); + optimizer.displayCurveFit(); + } + + /** + *

+ * runCalc. + *

+ */ + public void runCalc() { + gasDensity = new double[pressure.length]; + oilDensity = new double[pressure.length]; + aqueousDensity = new double[pressure.length]; + waxFraction = new double[pressure.length]; + + for (int i = 0; i < pressure.length; i++) { + // thermoOps.setSystem(getThermoSystem()); + getThermoSystem().setPressure(pressure[i]); + getThermoSystem().setTemperature(temperature[i]); + thermoOps.TPflash(); + getThermoSystem().initPhysicalProperties(); + waxFraction[i] = 0.0; + + if (getThermoSystem().hasPhaseType("gas")) { + gasDensity[i] = getThermoSystem().getPhase("gas").getPhysicalProperties().getViscosity(); + } + if (getThermoSystem().hasPhaseType("oil")) { + oilDensity[i] = getThermoSystem().getPhase("oil").getPhysicalProperties().getViscosity(); + } + if (getThermoSystem().hasPhaseType("aqueous")) { + aqueousDensity[i] = + getThermoSystem().getPhase("aqueous").getPhysicalProperties().getViscosity(); + } } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); + // tempSystem.addComponent("n-heptane", 6.78); + + // tempSystem.addTBPfraction("C19", 10.13, 270.0 / 1000.0, 0.814); + tempSystem.addPlusFraction("C20", 10.62, 100.0 / 1000.0, 0.73); + + // tempSystem.getCharacterization().characterisePlusFraction(); + // tempSystem.getWaxModel().addTBPWax(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + // tempSystem.addSolidComplexPhase("wax"); + // tempSystem.setMultiphaseWaxCheck(true); + // tempSystem.setMultiPhaseCheck(true); + tempSystem.init(0); + tempSystem.init(1); + + DensitySim sepSim = new DensitySim(tempSystem); + double[] temps = {300.15, 293.15, 283.15, 273.15, 264.15}; + double[] pres = {5, 5, 5, 5.0, 5.0}; + sepSim.setTemperaturesAndPressures(temps, pres); + sepSim.runCalc(); + + double[][] expData = {{2e-4, 3e-4, 4e-4, 5e-4, 6e-4},}; + sepSim.setExperimentalData(expData); + // sepSim.runTuning(); + sepSim.runCalc(); + double a = sepSim.getGasDensity()[0]; + double a2 = sepSim.getOilDensity()[0]; + // sepSim.getThermoSystem().display(); + // sepSim.tuneModel(exptemperatures, exppressures, expwaxFrations); + } + + /** + *

+ * Getter for the field waxFraction. + *

+ * + * @return the waxFraction + */ + public double[] getWaxFraction() { + return waxFraction; + } + + /** + *

+ * Getter for the field gasDensity. + *

+ * + * @return the gasViscosity + */ + public double[] getGasDensity() { + return gasDensity; + } + + /** + *

+ * Getter for the field oilDensity. + *

+ * + * @return the oilViscosity + */ + public double[] getOilDensity() { + return oilDensity; + } + + /** + *

+ * Getter for the field aqueousDensity. + *

+ * + * @return the aqueousViscosity + */ + public double[] getAqueousDensity() { + return aqueousDensity; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/DifferentialLiberation.java b/src/main/java/neqsim/PVTsimulation/simulation/DifferentialLiberation.java index f6d71ec047..ce6f986c68 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/DifferentialLiberation.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/DifferentialLiberation.java @@ -1,5 +1,9 @@ package neqsim.PVTsimulation.simulation; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -12,302 +16,311 @@ * @version $Id: $Id */ public class DifferentialLiberation extends BasePVTsimulation { - double VoilStd = 0.0; - double[] relativeVolume = null; - double[] totalVolume = null, liquidVolumeRelativeToVsat = null, liquidVolume = null; - private double[] oilDensity = null; - private double[] gasStandardVolume = null; - double saturationVolume = 0, saturationPressure = 0; - boolean saturationConditionFound = false; - private double[] Bo; - private double[] Bg; - private double[] Rs; - private double[] Zgas; - private double[] relGasGravity; - double[] gasVolume; + static Logger logger = LogManager.getLogger(DifferentialLiberation.class); - /** - *

- * Constructor for DifferentialLiberation. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public DifferentialLiberation(SystemInterface tempSystem) { - super(tempSystem); - } + double VoilStd = 0.0; + double[] relativeVolume = null; + double[] totalVolume = null; + double[] liquidVolumeRelativeToVsat = null; + double[] liquidVolume = null; + private double[] oilDensity = null; + private double[] gasStandardVolume = null; + double saturationVolume = 0; - /** - *

- * calcSaturationConditions. - *

- */ - public void calcSaturationConditions() { - getThermoSystem().setPressure(1.0); - do { - getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); - } while (getThermoSystem().getNumberOfPhases() == 1 - && getThermoSystem().getPressure() < 1000.0); - do { - getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); - thermoOps.TPflash(); - } while (getThermoSystem().getNumberOfPhases() > 1 - && getThermoSystem().getPressure() < 1000.0); - double minPres = getThermoSystem().getPressure() - 10.0; - double maxPres = getThermoSystem().getPressure(); - do { - getThermoSystem().setPressure((minPres + maxPres) / 2.0); - thermoOps.TPflash(); - if (getThermoSystem().getNumberOfPhases() > 1) { - minPres = getThermoSystem().getPressure(); - } else { - maxPres = getThermoSystem().getPressure(); - } - } while (Math.abs(maxPres - minPres) > 1e-5); - /* - * try { thermoOps.dewPointPressureFlash(); } catch (Exception e) { e.printStackTrace(); } - */ - saturationVolume = getThermoSystem().getVolume(); - saturationPressure = getThermoSystem().getPressure(); - saturationConditionFound = true; - } + double saturationPressure = 0; - /** - *

- * runCalc. - *

- */ - public void runCalc() { - saturationConditionFound = false; - relativeVolume = new double[pressures.length]; - totalVolume = new double[pressures.length]; - liquidVolumeRelativeToVsat = new double[pressures.length]; - liquidVolume = new double[pressures.length]; - gasVolume = new double[pressures.length]; - gasStandardVolume = new double[pressures.length]; - Bo = new double[pressures.length]; - Bg = new double[pressures.length]; - Rs = new double[pressures.length]; - Zgas = new double[pressures.length]; - relGasGravity = new double[pressures.length]; - oilDensity = new double[pressures.length]; - double totalGasStandardVolume = 0; + boolean saturationConditionFound = false; + private double[] Bo; + private double[] Bg; + private double[] Rs; + private double[] Zgas; + private double[] relGasGravity; + double[] gasVolume; - getThermoSystem().setTemperature(temperature); + /** + *

+ * Constructor for DifferentialLiberation. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public DifferentialLiberation(SystemInterface tempSystem) { + super(tempSystem); + } - for (int i = 0; i < pressures.length; i++) { - getThermoSystem().setPressure(pressures[i]); - try { - thermoOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); - } - totalVolume[i] = getThermoSystem().getVolume(); - liquidVolume[i] = getThermoSystem().getVolume(); - System.out.println("volume " + totalVolume[i]); + /** + *

+ * calcSaturationConditions. + *

+ */ + public void calcSaturationConditions() { + getThermoSystem().setPressure(1.0); + do { + getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); + } while (getThermoSystem().getNumberOfPhases() == 1 + && getThermoSystem().getPressure() < 1000.0); + do { + getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); + thermoOps.TPflash(); + } while (getThermoSystem().getNumberOfPhases() > 1 && getThermoSystem().getPressure() < 1000.0); + double minPres = getThermoSystem().getPressure() - 10.0; + double maxPres = getThermoSystem().getPressure(); + do { + getThermoSystem().setPressure((minPres + maxPres) / 2.0); + thermoOps.TPflash(); + if (getThermoSystem().getNumberOfPhases() > 1) { + minPres = getThermoSystem().getPressure(); + } else { + maxPres = getThermoSystem().getPressure(); + } + } while (Math.abs(maxPres - minPres) > 1e-5); + /* + * try { thermoOps.dewPointPressureFlash(); } catch (Exception ex) { + * logger.error(ex.getMessage(), ex); } + */ + getThermoSystem().initPhysicalProperties(); + saturationVolume = getThermoSystem().getPhase(0).getMass() + / getThermoSystem().getPhase(0).getPhysicalProperties().getDensity(); + saturationPressure = getThermoSystem().getPressure(); + saturationConditionFound = true; + } - if (getThermoSystem().getNumberOfPhases() > 1) { - if (!saturationConditionFound) { - calcSaturationConditions(); - getThermoSystem().setPressure(pressures[i]); - try { - thermoOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); - } - } - gasStandardVolume[i] = getThermoSystem().getPhase(0).getVolume() - * getThermoSystem().getPhase(0).getPressure() / 1.01325 - / getThermoSystem().getPhase(0).getZ() * 288.15 - / getThermoSystem().getTemperature(); - totalGasStandardVolume += getGasStandardVolume()[i]; - // if (totalVolume[i] > saturationVolume) { - Zgas[i] = getThermoSystem().getPhase(0).getZ(); - relGasGravity[i] = getThermoSystem().getPhase(0).getMolarMass() / 0.028; - getThermoSystem().initPhysicalProperties(); - if (getThermoSystem().hasPhaseType("gas") - && getThermoSystem().hasPhaseType("oil")) { - liquidVolume[i] = getThermoSystem().getPhase(1).getVolume(); - oilDensity[i] = - getThermoSystem().getPhase(1).getPhysicalProperties().getDensity(); - } else if (getThermoSystem().hasPhaseType("oil")) { - liquidVolume[i] = getThermoSystem().getPhase(0).getVolume(); - oilDensity[i] = - getThermoSystem().getPhase(0).getPhysicalProperties().getDensity(); - } else { - liquidVolume[i] = getThermoSystem().getPhase(0).getVolume(); - oilDensity[i] = - getThermoSystem().getPhase(0).getPhysicalProperties().getDensity(); - } + /** + *

+ * runCalc. + *

+ */ + public void runCalc() { + saturationConditionFound = false; + relativeVolume = new double[pressures.length]; + double[] mass = new double[pressures.length]; + totalVolume = new double[pressures.length]; + liquidVolumeRelativeToVsat = new double[pressures.length]; + liquidVolume = new double[pressures.length]; + gasVolume = new double[pressures.length]; + gasStandardVolume = new double[pressures.length]; + Bo = new double[pressures.length]; + Bg = new double[pressures.length]; + Rs = new double[pressures.length]; + Zgas = new double[pressures.length]; + relGasGravity = new double[pressures.length]; + oilDensity = new double[pressures.length]; + double totalGasStandardVolume = 0; - if (getThermoSystem().getNumberOfPhases() > 1) { - gasVolume[i] = getThermoSystem().getPhase(0).getVolume(); - } else { - gasVolume[i] = 0.0; - } + if (!Double.isNaN(temperature)) { + getThermoSystem().setTemperature(temperature, temperatureUnit); + } - liquidVolumeRelativeToVsat[i] = liquidVolume[i] / saturationVolume; - double volumeCorrection = - getThermoSystem().getVolume() - getThermoSystem().getPhase(1).getVolume(); - double test = volumeCorrection / getThermoSystem().getPhase(0).getMolarVolume(); + for (int i = 0; i < pressures.length; i++) { + getThermoSystem().setPressure(pressures[i]); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + getThermoSystem().initPhysicalProperties(); + oilDensity[i] = getThermoSystem().getDensity("kg/m3"); + mass[i] = getThermoSystem().getMass("kg"); - for (int j = 0; j < getThermoSystem().getPhase(0).getNumberOfComponents(); j++) { - getThermoSystem().addComponent(j, - -test * getThermoSystem().getPhase(0).getComponent(j).getx()); - } - } - } - getThermoSystem().setPressure(1.01325); - getThermoSystem().setTemperature(288.15); - try { + totalVolume[i] = mass[i] / oilDensity[i]; + liquidVolume[i] = totalVolume[i]; + if (getThermoSystem().getNumberOfPhases() > 1) { + if (!saturationConditionFound) { + calcSaturationConditions(); + getThermoSystem().setPressure(pressures[i]); + try { thermoOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } - VoilStd = getThermoSystem().getPhase(1).getVolume(); - totalGasStandardVolume += getThermoSystem().getPhase(0).getVolume(); - // getThermoSystem().display(); - double total = 0; - for (int i = 0; i < pressures.length; i++) { - relativeVolume[i] = totalVolume[i] / saturationVolume; - Bo[i] = liquidVolume[i] / VoilStd; - total += getGasStandardVolume()[i]; - if (Zgas[i] > 1e-10) { - Bg[i] = gasVolume[i] / getGasStandardVolume()[i]; - Rs[i] = (totalGasStandardVolume - total) / VoilStd; - } - System.out.println( - "Bo " + getBo()[i] + " Bg " + getBg()[i] + " Rs " + getRs()[i] + " oil density " - + getOilDensity()[i] + " gas gracvity " + getRelGasGravity()[i] - + " Zgas " + getZgas()[i] + " gasstdvol " + getGasStandardVolume()[i]); + gasStandardVolume[i] = getThermoSystem().getPhase(PhaseType.GAS).getMass() + / getThermoSystem().getPhase(PhaseType.GAS).getPhysicalProperties().getDensity() + * getThermoSystem().getPhase(0).getPressure() + / ThermodynamicConstantsInterface.referencePressure + / getThermoSystem().getPhase(0).getZ() * 288.15 / getThermoSystem().getTemperature(); + totalGasStandardVolume += getGasStandardVolume()[i]; + // if (totalVolume[i] > saturationVolume) { + Zgas[i] = getThermoSystem().getPhase(0).getZ(); + relGasGravity[i] = getThermoSystem().getPhase(0).getMolarMass() / 0.028; + if (getThermoSystem().hasPhaseType(PhaseType.GAS) + && getThermoSystem().hasPhaseType(PhaseType.OIL)) { + oilDensity[i] = getThermoSystem().getPhase(1).getPhysicalProperties().getDensity(); + liquidVolume[i] = getThermoSystem().getPhase(1).getMass() / oilDensity[i]; + getThermoSystem().getPhase(1).getMass(); + } else if (getThermoSystem().hasPhaseType("oil")) { + oilDensity[i] = getThermoSystem().getPhase(0).getPhysicalProperties().getDensity(); + liquidVolume[i] = getThermoSystem().getPhase(0).getMass() / oilDensity[i]; + } else { + oilDensity[i] = getThermoSystem().getPhase(0).getPhysicalProperties().getDensity(); + liquidVolume[i] = getThermoSystem().getPhase(0).getMass() / oilDensity[i]; } - System.out.println("test finished"); - } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface tempSystem = new SystemSrkEos(273.15 + 83.5, 450.0); - tempSystem.addComponent("nitrogen", 0.586); - tempSystem.addComponent("CO2", 0.087); - tempSystem.addComponent("methane", 17.0209); - tempSystem.addComponent("ethane", 5.176); - tempSystem.addComponent("propane", 6.652); - tempSystem.addComponent("i-butane", 1.533); - tempSystem.addComponent("n-butane", 3.544); - tempSystem.addComponent("i-pentane", 1.585); - tempSystem.addComponent("n-pentane", 2.036); - tempSystem.addTBPfraction("C6", 2.879, 84.9 / 1000.0, 0.6668); - tempSystem.addTBPfraction("C7", 4.435, 93.2 / 1000.0, 0.7243); - tempSystem.addTBPfraction("C8", 4.815, 105.7 / 1000.0, 0.7527); - tempSystem.addTBPfraction("C9", 3.488, 119.8 / 1000.0, 0.7743); - tempSystem.addPlusFraction("C10", 45.944, 320.0 / 1000.0, 0.924); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.getCharacterization().characterisePlusFraction(); - - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); + if (getThermoSystem().getNumberOfPhases() > 1) { + gasVolume[i] = getThermoSystem().getPhase(PhaseType.GAS).getMass() + / getThermoSystem().getPhase(PhaseType.GAS).getPhysicalProperties().getDensity(); + } - DifferentialLiberation CVDsim = new DifferentialLiberation(tempSystem); - CVDsim.runCalc(); + liquidVolumeRelativeToVsat[i] = liquidVolume[i] / saturationVolume; + getThermoSystem().removePhase(0); + } } - - /** - *

- * Getter for the field relativeVolume. - *

- * - * @return the relativeVolume - */ - public double[] getRelativeVolume() { - return relativeVolume; + getThermoSystem().setPressure(ThermodynamicConstantsInterface.referencePressure); + getThermoSystem().setTemperature(288.15); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** {@inheritDoc} */ - @Override - public double getSaturationPressure() { - return saturationPressure; + getThermoSystem().initPhysicalProperties(); + VoilStd = getThermoSystem().getPhase(PhaseType.OIL).getMass() + / getThermoSystem().getPhase(PhaseType.OIL).getPhysicalProperties().getDensity(); + if (getThermoSystem().hasPhaseType(PhaseType.GAS)) { + totalGasStandardVolume += getThermoSystem().getPhase(PhaseType.GAS).getCorrectedVolume(); } - /** - *

- * getBo. - *

- * - * @return the Bo - */ - public double[] getBo() { - return Bo; + double total = 0; + for (int i = 0; i < pressures.length; i++) { + relativeVolume[i] = totalVolume[i] / saturationVolume; + Bo[i] = liquidVolume[i] / VoilStd; + total += getGasStandardVolume()[i]; + Rs[i] = (totalGasStandardVolume - total) / VoilStd; + if (Zgas[i] > 1e-10) { + Bg[i] = gasVolume[i] / getGasStandardVolume()[i]; + } + /* + * System.out.println("pressure " + pressures[i] + " Bo " + getBo()[i] + " Bg " + getBg()[i] + + * " Rs " + getRs()[i] + " oil density " + getOilDensity()[i] + " gas gracvity " + + * getRelGasGravity()[i] + " Zgas " + getZgas()[i] + " gasstdvol " + + * getGasStandardVolume()[i]); + */ } + } - /** - *

- * getBg. - *

- * - * @return the Bg - */ - public double[] getBg() { - return Bg; - } + /** + * * + *

+ * main + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface tempSystem = new SystemSrkEos(273.15 + 83.5, 450.0); + tempSystem.addComponent("nitrogen", 0.586); + tempSystem.addComponent("CO2", 0.087); + tempSystem.addComponent("methane", 107.0209); + tempSystem.addComponent("ethane", 15.176); + tempSystem.addComponent("propane", 6.652); + tempSystem.addComponent("i-butane", 3.533); + tempSystem.addComponent("n-butane", 5.544); + tempSystem.addComponent("i-pentane", 1.585); + tempSystem.addComponent("n-pentane", 2.036); + tempSystem.addTBPfraction("C6", 2.879, 84.9 / 1000.0, 0.6668); + tempSystem.addTBPfraction("C7", 4.435, 93.2 / 1000.0, 0.7243); + tempSystem.addTBPfraction("C8", 4.815, 105.7 / 1000.0, 0.7527); + tempSystem.addTBPfraction("C9", 3.488, 119.8 / 1000.0, 0.7743); + tempSystem.addPlusFraction("C10", 45.944, 320.0 / 1000.0, 0.924); + tempSystem.getCharacterization().characterisePlusFraction(); - /** - *

- * getRs. - *

- * - * @return the Rs - */ - public double[] getRs() { - return Rs; - } + DifferentialLiberation differentialLiberation = new DifferentialLiberation(tempSystem); + differentialLiberation.setPressures( + new double[] {350.0, 250.0, 200.0, 150.0, 100.0, 70.0, 50.0, 40.0, 30.0, 20.0, 1.0}); + differentialLiberation.setTemperature(83.5, "C"); + differentialLiberation.runCalc(); + } - /** - *

- * getZgas. - *

- * - * @return the Zgas - */ - public double[] getZgas() { - return Zgas; - } + /** + *

+ * Getter for the field relativeVolume. + *

+ * + * @return the relativeVolume + */ + public double[] getRelativeVolume() { + return relativeVolume; + } - /** - *

- * Getter for the field relGasGravity. - *

- * - * @return the relGasGravity - */ - public double[] getRelGasGravity() { - return relGasGravity; - } + /** {@inheritDoc} */ + @Override + public double getSaturationPressure() { + return saturationPressure; + } - /** - *

- * Getter for the field gasStandardVolume. - *

- * - * @return the gasStandardVolume - */ - public double[] getGasStandardVolume() { - return gasStandardVolume; - } + /** + *

+ * getBo. + *

+ * + * @return the Bo + */ + public double[] getBo() { + return Bo; + } - /** - *

- * Getter for the field oilDensity. - *

- * - * @return the oilDensity - */ - public double[] getOilDensity() { - return oilDensity; - } + /** + *

+ * getBg. + *

+ * + * @return the Bg + */ + public double[] getBg() { + return Bg; + } + + /** + *

+ * getRs. + *

+ * + * @return the Rs + */ + public double[] getRs() { + return Rs; + } + + /** + *

+ * getZgas. + *

+ * + * @return the Zgas + */ + public double[] getZgas() { + return Zgas; + } + + /** + *

+ * Getter for the field relGasGravity. + *

+ * + * @return the relGasGravity + */ + public double[] getRelGasGravity() { + return relGasGravity; + } + + /** + *

+ * Getter for the field gasStandardVolume. + *

+ * + * @return the gasStandardVolume + */ + public double[] getGasStandardVolume() { + return gasStandardVolume; + } + + /** + *

+ * Getter for the field oilDensity. + *

+ * + * @return the oilDensity + */ + public double[] getOilDensity() { + return oilDensity; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/GOR.java b/src/main/java/neqsim/PVTsimulation/simulation/GOR.java index 05eccd3121..b91d7677ed 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/GOR.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/GOR.java @@ -1,5 +1,7 @@ package neqsim.PVTsimulation.simulation; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -12,147 +14,149 @@ * @version $Id: $Id */ public class GOR extends BasePVTsimulation { - double[] temperature = null; - double[] pressure = null; - double[] Sm3gas, m3oil; - private double[] Bofactor; - private double[] GOR = null; - double oilVolumeStdCond = 0; + double[] temperature = null; + double[] pressure = null; + double[] Sm3gas, m3oil; + private double[] Bofactor; + private double[] GOR = null; + double oilVolumeStdCond = 0; - /** - *

- * Constructor for GOR. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public GOR(SystemInterface tempSystem) { - super(tempSystem); - temperature = new double[1]; - pressure = new double[1]; - temperature[0] = tempSystem.getTemperature(); - pressure[0] = tempSystem.getPressure(); - } + /** + *

+ * Constructor for GOR. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public GOR(SystemInterface tempSystem) { + super(tempSystem); + temperature = new double[1]; + pressure = new double[1]; + temperature[0] = tempSystem.getTemperature(); + pressure[0] = tempSystem.getPressure(); + } - /** - *

- * setTemperaturesAndPressures. - *

- * - * @param temperature an array of {@link double} objects - * @param pressure an array of {@link double} objects - */ - public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { - this.pressure = pressure; - this.temperature = temperature; - } + /** + *

+ * setTemperaturesAndPressures. + *

+ * + * @param temperature an array of type double + * @param pressure an array of type double + */ + public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { + this.pressure = pressure; + this.temperature = temperature; + } - /** - *

- * runCalc. - *

- */ - public void runCalc() { - Sm3gas = new double[pressure.length]; - m3oil = new double[pressure.length]; - GOR = new double[pressure.length]; - Bofactor = new double[pressure.length]; - for (int i = 0; i < pressure.length; i++) { - thermoOps.setSystem(getThermoSystem()); - getThermoSystem().setPressure(pressure[i]); - getThermoSystem().setTemperature(temperature[i]); - thermoOps.TPflash(); - if (getThermoSystem().getNumberOfPhases() > 1) { - m3oil[i] = getThermoSystem().getPhase(1).getVolume(); - } else { - m3oil[i] = getThermoSystem().getVolume(); - } - if (getThermoSystem().getNumberOfPhases() > 1 - && getThermoSystem().getPhase(0).getPhaseTypeName().equals("gas")) { - getThermoSystem().getPhase(0).setPressure(1.01325); - getThermoSystem().getPhase(0).setTemperature(288.15); - getThermoSystem().init(1); - Sm3gas[i] = getThermoSystem().getPhase(0).getVolume(); - // setThermoSystem(getThermoSystem().phaseToSystem(1)); - } - } - getThermoSystem().setPressure(1.01325); - getThermoSystem().setTemperature(288.15); - thermoOps.TPflash(); - oilVolumeStdCond = getThermoSystem().getPhase("oil").getVolume(); + /** + *

+ * runCalc. + *

+ */ + public void runCalc() { + Sm3gas = new double[pressure.length]; + m3oil = new double[pressure.length]; + GOR = new double[pressure.length]; + Bofactor = new double[pressure.length]; + for (int i = 0; i < pressure.length; i++) { + thermoOps.setSystem(getThermoSystem()); + getThermoSystem().setPressure(pressure[i]); + getThermoSystem().setTemperature(temperature[i]); + thermoOps.TPflash(); + if (getThermoSystem().getNumberOfPhases() > 1) { + m3oil[i] = getThermoSystem().getPhase(1).getVolume(); + } else { + m3oil[i] = getThermoSystem().getVolume(); + } + if (getThermoSystem().getNumberOfPhases() > 1 + && getThermoSystem().getPhase(0).getType() == PhaseType.GAS) { + getThermoSystem().getPhase(0) + .setPressure(ThermodynamicConstantsInterface.referencePressure); + getThermoSystem().getPhase(0).setTemperature(288.15); + getThermoSystem().init(1); + Sm3gas[i] = getThermoSystem().getPhase(0).getVolume(); + // setThermoSystem(getThermoSystem().phaseToSystem(1)); + } + } + getThermoSystem().setPressure(ThermodynamicConstantsInterface.referencePressure); + getThermoSystem().setTemperature(288.15); + thermoOps.TPflash(); + oilVolumeStdCond = getThermoSystem().getPhase("oil").getVolume(); - for (int i = 0; i < pressure.length; i++) { - if (Sm3gas[i] > 1e-10) { - GOR[i] = Sm3gas[i] / oilVolumeStdCond; - Bofactor[i] = m3oil[i] / oilVolumeStdCond; - } - System.out.println("GOR " + getGOR()[i] + " Bo " + Bofactor[i]); - } + for (int i = 0; i < pressure.length; i++) { + if (Sm3gas[i] > 1e-10) { + GOR[i] = Sm3gas[i] / oilVolumeStdCond; + Bofactor[i] = m3oil[i] / oilVolumeStdCond; + } + System.out.println("GOR " + getGOR()[i] + " Bo " + Bofactor[i]); } + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface tempSystem = new SystemSrkEos(298.0, 1.0); - tempSystem.addComponent("nitrogen", 0.64); - tempSystem.addComponent("CO2", 3.53); - tempSystem.addComponent("methane", 70.78); - tempSystem.addComponent("ethane", 8.94); - tempSystem.addComponent("propane", 5.05); - tempSystem.addComponent("i-butane", 0.85); - tempSystem.addComponent("n-butane", 1.68); - tempSystem.addComponent("i-pentane", 0.62); - tempSystem.addComponent("n-pentane", 0.79); - tempSystem.addComponent("n-hexane", 0.83); - tempSystem.addTBPfraction("C7", 1.06, 92.2 / 1000.0, 0.7324); - tempSystem.addTBPfraction("C8", 1.06, 104.6 / 1000.0, 0.7602); - tempSystem.addTBPfraction("C9", 0.79, 119.1 / 1000.0, 0.7677); - tempSystem.addTBPfraction("C10", 0.57, 133.0 / 1000.0, 0.79); - tempSystem.addTBPfraction("C11", 0.38, 155.0 / 1000.0, 0.795); - tempSystem.addTBPfraction("C12", 0.37, 162.0 / 1000.0, 0.806); - tempSystem.addTBPfraction("C13", 0.32, 177.0 / 1000.0, 0.824); - tempSystem.addTBPfraction("C14", 0.27, 198.0 / 1000.0, 0.835); - tempSystem.addTBPfraction("C15", 0.23, 202.0 / 1000.0, 0.84); - tempSystem.addTBPfraction("C16", 0.19, 215.0 / 1000.0, 0.846); - tempSystem.addTBPfraction("C17", 0.17, 234.0 / 1000.0, 0.84); - tempSystem.addTBPfraction("C18", 0.13, 251.0 / 1000.0, 0.844); - tempSystem.addTBPfraction("C19", 0.13, 270.0 / 1000.0, 0.854); - tempSystem.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.88); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface tempSystem = new SystemSrkEos(298.0, 1.0); + tempSystem.addComponent("nitrogen", 0.64); + tempSystem.addComponent("CO2", 3.53); + tempSystem.addComponent("methane", 70.78); + tempSystem.addComponent("ethane", 8.94); + tempSystem.addComponent("propane", 5.05); + tempSystem.addComponent("i-butane", 0.85); + tempSystem.addComponent("n-butane", 1.68); + tempSystem.addComponent("i-pentane", 0.62); + tempSystem.addComponent("n-pentane", 0.79); + tempSystem.addComponent("n-hexane", 0.83); + tempSystem.addTBPfraction("C7", 1.06, 92.2 / 1000.0, 0.7324); + tempSystem.addTBPfraction("C8", 1.06, 104.6 / 1000.0, 0.7602); + tempSystem.addTBPfraction("C9", 0.79, 119.1 / 1000.0, 0.7677); + tempSystem.addTBPfraction("C10", 0.57, 133.0 / 1000.0, 0.79); + tempSystem.addTBPfraction("C11", 0.38, 155.0 / 1000.0, 0.795); + tempSystem.addTBPfraction("C12", 0.37, 162.0 / 1000.0, 0.806); + tempSystem.addTBPfraction("C13", 0.32, 177.0 / 1000.0, 0.824); + tempSystem.addTBPfraction("C14", 0.27, 198.0 / 1000.0, 0.835); + tempSystem.addTBPfraction("C15", 0.23, 202.0 / 1000.0, 0.84); + tempSystem.addTBPfraction("C16", 0.19, 215.0 / 1000.0, 0.846); + tempSystem.addTBPfraction("C17", 0.17, 234.0 / 1000.0, 0.84); + tempSystem.addTBPfraction("C18", 0.13, 251.0 / 1000.0, 0.844); + tempSystem.addTBPfraction("C19", 0.13, 270.0 / 1000.0, 0.854); + tempSystem.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.88); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); - GOR sepSim = new GOR(tempSystem); - double[] temps = {313.15, 313.15, 313.15, 313.15, 313.15, 313.15, 313.15}; - double[] pres = {500, 400, 200, 100, 50.0, 5.0, 1.01325}; - sepSim.setTemperaturesAndPressures(temps, pres); - sepSim.runCalc(); - } + GOR sepSim = new GOR(tempSystem); + double[] temps = {313.15, 313.15, 313.15, 313.15, 313.15, 313.15, 313.15}; + double[] pres = + {500, 400, 200, 100, 50.0, 5.0, ThermodynamicConstantsInterface.referencePressure}; + sepSim.setTemperaturesAndPressures(temps, pres); + sepSim.runCalc(); + } - /** - *

- * getGOR. - *

- * - * @return the GOR - */ - public double[] getGOR() { - return GOR; - } + /** + *

+ * getGOR. + *

+ * + * @return the GOR + */ + public double[] getGOR() { + return GOR; + } - /** - *

- * getBofactor. - *

- * - * @return the Bofactor - */ - public double[] getBofactor() { - return Bofactor; - } + /** + *

+ * getBofactor. + *

+ * + * @return the Bofactor + */ + public double[] getBofactor() { + return Bofactor; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/SaturationPressure.java b/src/main/java/neqsim/PVTsimulation/simulation/SaturationPressure.java index 94914b1e42..6cf8501e46 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/SaturationPressure.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/SaturationPressure.java @@ -12,114 +12,125 @@ * @version $Id: $Id */ public class SaturationPressure extends BasePVTsimulation { - /** - *

- * Constructor for SaturationPressure. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public SaturationPressure(SystemInterface tempSystem) { - super(tempSystem); + /** + *

+ * Constructor for SaturationPressure. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public SaturationPressure(SystemInterface tempSystem) { + super(tempSystem); + } + + /** + *

+ * calcSaturationPressure. + *

+ * + * @return a double + */ + public double calcSaturationPressure() { + if (!Double.isNaN(temperature)) { + getThermoSystem().setTemperature(temperature, temperatureUnit); } - /** - *

- * calcSaturationPressure. - *

- * - * @return a double - */ - public double calcSaturationPressure() { - getThermoSystem().isImplementedCompositionDeriativesofFugacity(false); - getThermoSystem().setPressure(1.0); - do { - getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); - thermoOps.TPflash(); - } while (getThermoSystem().getNumberOfPhases() == 1 - && getThermoSystem().getPressure() < 1000.0); - do { - getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); - thermoOps.TPflash(); - } while (getThermoSystem().getNumberOfPhases() > 1 - && getThermoSystem().getPressure() < 1000.0); - - if(getThermoSystem().getPressure()>1000.0) { - return getThermoSystem().getPressure(); - } - - double minPres = getThermoSystem().getPressure() - 10.0; - double maxPres = getThermoSystem().getPressure(); - int iteration = 0; - do { - iteration++; - getThermoSystem().setPressure((minPres + maxPres) / 2.0); - thermoOps.TPflash(); - if (getThermoSystem().getNumberOfPhases() > 1) { - minPres = getThermoSystem().getPressure(); - } else { - maxPres = getThermoSystem().getPressure(); - } - } while (Math.abs(maxPres - minPres) > 1e-5 && iteration < 500); - getThermoSystem().setPressure(maxPres); - thermoOps.TPflash(); - return getThermoSystem().getPressure(); + boolean isMultiPhaseCheckChanged = false; + if (!getThermoSystem().doMultiPhaseCheck()) { + isMultiPhaseCheckChanged = true; + getThermoSystem().setMultiPhaseCheck(true); + } + // getThermoSystem().isImplementedCompositionDeriativesofFugacity(false); + getThermoSystem().setPressure(1.0); + do { + getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); + thermoOps.TPflash(); + } while (getThermoSystem().getNumberOfPhases() == 1 + && getThermoSystem().getPressure() < 1000.0); + do { + getThermoSystem().setPressure(getThermoSystem().getPressure() + 10.0); + thermoOps.TPflash(); + } while (getThermoSystem().getNumberOfPhases() > 1 && getThermoSystem().getPressure() < 1000.0); + + if (getThermoSystem().getPressure() > 1000.0) { + return getThermoSystem().getPressure(); } - /** {@inheritDoc} */ - @Override - public void run() { - super.run(); - saturationPressure = calcSaturationPressure(); + double minPres = getThermoSystem().getPressure() - 10.0; + double maxPres = getThermoSystem().getPressure(); + int iteration = 0; + do { + iteration++; + getThermoSystem().setPressure((minPres + maxPres) / 2.0); + thermoOps.TPflash(); + if (getThermoSystem().getNumberOfPhases() > 1) { + minPres = getThermoSystem().getPressure(); + } else { + maxPres = getThermoSystem().getPressure(); + } + } while (Math.abs(maxPres - minPres) > 1e-5 && iteration < 500); + getThermoSystem().setPressure(maxPres); + thermoOps.TPflash(); + if (isMultiPhaseCheckChanged) { + getThermoSystem().setMultiPhaseCheck(false); } + return getThermoSystem().getPressure(); + } + + /** {@inheritDoc} */ + @Override + public void run() { + super.run(); + saturationPressure = calcSaturationPressure(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // SystemInterface tempSystem = new SystemSrkCPAstatoil(273.15 + 120, 100.0); + SystemInterface tempSystem = new SystemSrkEos(273.15 + 120, 100.0); + tempSystem.addComponent("nitrogen", 0.34); + tempSystem.addComponent("CO2", 3.59); + tempSystem.addComponent("methane", 67.42); + tempSystem.addComponent("ethane", 9.02); + tempSystem.addComponent("propane", 4.31); + tempSystem.addComponent("i-butane", 0.93); + tempSystem.addComponent("n-butane", 1.71); + tempSystem.addComponent("i-pentane", 0.74); + tempSystem.addComponent("n-pentane", 0.85); + tempSystem.addComponent("n-hexane", 1.38); + tempSystem.addTBPfraction("C7", 1.5, 109.00 / 1000.0, 0.6912); + tempSystem.addTBPfraction("C8", 1.69, 120.20 / 1000.0, 0.7255); + tempSystem.addTBPfraction("C9", 1.14, 129.5 / 1000.0, 0.7454); + tempSystem.addTBPfraction("C10", 0.8, 135.3 / 1000.0, 0.7864); + tempSystem.addPlusFraction("C11", 4.58, 256.2 / 1000.0, 0.8398); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(9); // "HV", "UNIFAC_UMRPRU"); + tempSystem.init(0); + tempSystem.init(1); + // tempSystem.saveFluid(928); - /** - *

- * main. - *

+ SimulationInterface satPresSim = new SaturationPressure(tempSystem); + satPresSim.run(); + // satPresSim.getThermoSystem().display(); + /* + * double saturationPressure = 350.0; double saturationTemperature = 273.15 + 80; * - * @param args an array of {@link java.lang.String} objects + * TuningInterface tuning = new TuneToSaturation(satPresSim); + * tuning.setSaturationConditions(saturationTemperature, saturationPressure); tuning.run(); + * tuning.getSimulation().getThermoSystem().display(); */ - public static void main(String[] args) { - // SystemInterface tempSystem = new SystemSrkCPAstatoil(273.15 + 120, 100.0); - SystemInterface tempSystem = new SystemSrkEos(273.15 + 120, 100.0); - tempSystem.addComponent("nitrogen", 0.34); - tempSystem.addComponent("CO2", 3.59); - tempSystem.addComponent("methane", 67.42); - tempSystem.addComponent("ethane", 9.02); - tempSystem.addComponent("propane", 4.31); - tempSystem.addComponent("i-butane", 0.93); - tempSystem.addComponent("n-butane", 1.71); - tempSystem.addComponent("i-pentane", 0.74); - tempSystem.addComponent("n-pentane", 0.85); - tempSystem.addComponent("n-hexane", 1.38); - tempSystem.addTBPfraction("C7", 1.5, 109.00 / 1000.0, 0.6912); - tempSystem.addTBPfraction("C8", 1.69, 120.20 / 1000.0, 0.7255); - tempSystem.addTBPfraction("C9", 1.14, 129.5 / 1000.0, 0.7454); - tempSystem.addTBPfraction("C10", 0.8, 135.3 / 1000.0, 0.7864); - tempSystem.addPlusFraction("C11", 4.58, 256.2 / 1000.0, 0.8398); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(9);// "HV", "UNIFAC_UMRPRU"); - tempSystem.init(0); - tempSystem.init(1); - //tempSystem.saveFluid(928); + } - SimulationInterface satPresSim = new SaturationPressure(tempSystem); - satPresSim.run(); - satPresSim.getThermoSystem().display(); - /* - * double saturationPressure = 350.0; double saturationTemperature = 273.15 + 80; - * - * TuningInterface tuning = new TuneToSaturation(satPresSim); - * tuning.setSaturationConditions(saturationTemperature, saturationPressure); tuning.run(); - * tuning.getSimulation().getThermoSystem().display(); - */ - } - - /** {@inheritDoc} */ - @Override - public double getSaturationPressure() { - return saturationPressure; - } + /** {@inheritDoc} */ + @Override + public double getSaturationPressure() { + return saturationPressure; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/SaturationTemperature.java b/src/main/java/neqsim/PVTsimulation/simulation/SaturationTemperature.java index 3e3a430149..ab17808195 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/SaturationTemperature.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/SaturationTemperature.java @@ -12,99 +12,106 @@ * @version $Id: $Id */ public class SaturationTemperature extends BasePVTsimulation { - /** - *

- * Constructor for SaturationPressure. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public SaturationTemperature(SystemInterface tempSystem) { - super(tempSystem); - } + /** + *

+ * Constructor for SaturationPressure. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public SaturationTemperature(SystemInterface tempSystem) { + super(tempSystem); + } - /** - *

- * calcSaturationPressure. - *

- * - * @return a double - */ - public double calcSaturationTemperature() { - getThermoSystem().isImplementedCompositionDeriativesofFugacity(false); - do { - getThermoSystem().setTemperature(getThermoSystem().getTemperature() - 10.0); - thermoOps.TPflash(); - } while (getThermoSystem().getNumberOfPhases() == 1 - && getThermoSystem().getTemperature() > 30.0); - do { - getThermoSystem().setTemperature(getThermoSystem().getTemperature() + 10.0); - thermoOps.TPflash(); - } while (getThermoSystem().getNumberOfPhases() > 1 - && getThermoSystem().getTemperature() < 1200.0); - double minTemp = getThermoSystem().getTemperature() - 10.0; - double maxTemp = getThermoSystem().getTemperature(); - int iteration = 0; - do { - iteration++; - getThermoSystem().setTemperature((minTemp + maxTemp) / 2.0); - thermoOps.TPflash(); - if (getThermoSystem().getNumberOfPhases() > 1) { - minTemp = getThermoSystem().getTemperature(); - } else { - maxTemp = getThermoSystem().getTemperature(); - } - } while (Math.abs(maxTemp - minTemp) > 1e-5 && iteration < 500); - getThermoSystem().setTemperature(maxTemp); - thermoOps.TPflash(); - return getThermoSystem().getTemperature(); + /** + *

+ * calcSaturationPressure. + *

+ * + * @return a double + */ + public double calcSaturationTemperature() { + boolean isMultiPhaseCheckChanged = false; + if (!getThermoSystem().doMultiPhaseCheck()) { + isMultiPhaseCheckChanged = true; + getThermoSystem().setMultiPhaseCheck(true); } - - /** {@inheritDoc} */ - @Override - public void run() { - super.run(); - saturationTemperature = calcSaturationTemperature(); + do { + getThermoSystem().setTemperature(getThermoSystem().getTemperature() - 10.0); + thermoOps.TPflash(); + } while (getThermoSystem().getNumberOfPhases() == 1 + && getThermoSystem().getTemperature() > 30.0); + do { + getThermoSystem().setTemperature(getThermoSystem().getTemperature() + 10.0); + thermoOps.TPflash(); + } while (getThermoSystem().getNumberOfPhases() > 1 + && getThermoSystem().getTemperature() < 1200.0); + double minTemp = getThermoSystem().getTemperature() - 10.0; + double maxTemp = getThermoSystem().getTemperature(); + int iteration = 0; + do { + iteration++; + getThermoSystem().setTemperature((minTemp + maxTemp) / 2.0); + thermoOps.TPflash(); + if (getThermoSystem().getNumberOfPhases() > 1) { + minTemp = getThermoSystem().getTemperature(); + } else { + maxTemp = getThermoSystem().getTemperature(); + } + } while (Math.abs(maxTemp - minTemp) > 1e-5 && iteration < 500); + getThermoSystem().setTemperature(maxTemp); + thermoOps.TPflash(); + if (isMultiPhaseCheckChanged) { + getThermoSystem().setMultiPhaseCheck(false); } + return getThermoSystem().getTemperature(); + } + + /** {@inheritDoc} */ + @Override + public void run() { + super.run(); + saturationTemperature = calcSaturationTemperature(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface tempSystem = new SystemSrkEos(273.15 + 20, 60.0); + tempSystem.addComponent("nitrogen", 0.34); + tempSystem.addComponent("CO2", 3.59); + tempSystem.addComponent("methane", 67.42); + tempSystem.addComponent("ethane", 9.02); + tempSystem.addComponent("propane", 4.31); + tempSystem.addComponent("i-butane", 0.93); + tempSystem.addComponent("n-butane", 1.71); + tempSystem.addComponent("i-pentane", 0.74); + tempSystem.addComponent("n-pentane", 0.85); + tempSystem.addComponent("n-hexane", 0.38); + tempSystem.addTBPfraction("C7", 0.5, 109.00 / 1000.0, 0.6912); + tempSystem.addTBPfraction("C8", 0.69, 120.20 / 1000.0, 0.7255); + tempSystem.addTBPfraction("C9", 0.14, 129.5 / 1000.0, 0.7454); + tempSystem.addTBPfraction("C10", 0.08, 135.3 / 1000.0, 0.7864); + // tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); // "HV", "UNIFAC_UMRPRU"); + tempSystem.init(0); + tempSystem.init(1); + // tempSystem.saveFluid(928); - /** - *

- * main. - *

+ SimulationInterface satPresSim = new SaturationTemperature(tempSystem); + satPresSim.run(); + // satPresSim.getThermoSystem().display(); + /* + * double saturationPressure = 350.0; double saturationTemperature = 273.15 + 80; * - * @param args an array of {@link java.lang.String} objects + * TuningInterface tuning = new TuneToSaturation(satPresSim); + * tuning.setSaturationConditions(saturationTemperature, saturationPressure); tuning.run(); + * tuning.getSimulation().getThermoSystem().display(); */ - public static void main(String[] args) { - SystemInterface tempSystem = new SystemSrkEos(273.15 + 20, 60.0); - tempSystem.addComponent("nitrogen", 0.34); - tempSystem.addComponent("CO2", 3.59); - tempSystem.addComponent("methane", 67.42); - tempSystem.addComponent("ethane", 9.02); - tempSystem.addComponent("propane", 4.31); - tempSystem.addComponent("i-butane", 0.93); - tempSystem.addComponent("n-butane", 1.71); - tempSystem.addComponent("i-pentane", 0.74); - tempSystem.addComponent("n-pentane", 0.85); - tempSystem.addComponent("n-hexane", 0.38); - tempSystem.addTBPfraction("C7", 0.5, 109.00 / 1000.0, 0.6912); - tempSystem.addTBPfraction("C8", 0.69, 120.20 / 1000.0, 0.7255); - tempSystem.addTBPfraction("C9", 0.14, 129.5 / 1000.0, 0.7454); - tempSystem.addTBPfraction("C10", 0.08, 135.3 / 1000.0, 0.7864); - //tempSystem.createDatabase(true); - tempSystem.setMixingRule(2);// "HV", "UNIFAC_UMRPRU"); - tempSystem.init(0); - tempSystem.init(1); - // tempSystem.saveFluid(928); - - SimulationInterface satPresSim = new SaturationTemperature(tempSystem); - satPresSim.run(); - satPresSim.getThermoSystem().display(); - /* - * double saturationPressure = 350.0; double saturationTemperature = 273.15 + 80; - * - * TuningInterface tuning = new TuneToSaturation(satPresSim); - * tuning.setSaturationConditions(saturationTemperature, saturationPressure); tuning.run(); - * tuning.getSimulation().getThermoSystem().display(); - */ - } + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/SeparatorTest.java b/src/main/java/neqsim/PVTsimulation/simulation/SeparatorTest.java index 0afc472b4f..506faaf966 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/SeparatorTest.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/SeparatorTest.java @@ -1,5 +1,9 @@ package neqsim.PVTsimulation.simulation; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -12,143 +16,147 @@ * @version $Id: $Id */ public class SeparatorTest extends BasePVTsimulation { - double[] temperature = null; - double[] pressure = null; - double[] Sm3gas, m3oil; - private double[] Bofactor; - private double[] GOR = null; - double oilVolumeStdCond = 0; + static Logger logger = LogManager.getLogger(SeparatorTest.class); - /** - *

- * Constructor for SeparatorTest. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public SeparatorTest(SystemInterface tempSystem) { - super(tempSystem); - } + double[] temperature = null; + double[] pressure = null; + double[] Sm3gas, m3oil; + private double[] Bofactor; + private double[] GOR = null; + double oilVolumeStdCond = 0; - /** - *

- * setSeparatorConditions. - *

- * - * @param temperature an array of {@link double} objects - * @param pressure an array of {@link double} objects - */ - public void setSeparatorConditions(double[] temperature, double[] pressure) { - this.pressure = pressure; - this.temperature = temperature; - } + /** + *

+ * Constructor for SeparatorTest. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public SeparatorTest(SystemInterface tempSystem) { + super(tempSystem); + } - /** - *

- * runCalc. - *

- */ - public void runCalc() { - Sm3gas = new double[pressure.length]; - m3oil = new double[pressure.length]; - GOR = new double[pressure.length]; - Bofactor = new double[pressure.length]; - for (int i = 0; i < pressure.length; i++) { - thermoOps.setSystem(getThermoSystem()); - getThermoSystem().setPressure(pressure[i]); - getThermoSystem().setTemperature(temperature[i]); - thermoOps.TPflash(); - if (getThermoSystem().getNumberOfPhases() > 1) { - m3oil[i] = getThermoSystem().getPhase(1).getVolume(); - } else { - m3oil[i] = getThermoSystem().getVolume(); - } - if (getThermoSystem().getNumberOfPhases() > 1 - && getThermoSystem().getPhase(0).getPhaseTypeName().equals("gas")) { - getThermoSystem().getPhase(0).setPressure(1.01325); - getThermoSystem().getPhase(0).setTemperature(288.15); - getThermoSystem().init(1); - Sm3gas[i] = getThermoSystem().getPhase(0).getVolume(); - setThermoSystem(getThermoSystem().phaseToSystem(1)); - } - } - getThermoSystem().setPressure(1.01325); - getThermoSystem().setTemperature(288.15); - thermoOps.TPflash(); - oilVolumeStdCond = getThermoSystem().getPhase("oil").getVolume(); + /** + *

+ * setSeparatorConditions. + *

+ * + * @param temperature an array of type double + * @param pressure an array of type double + */ + public void setSeparatorConditions(double[] temperature, double[] pressure) { + this.pressure = pressure; + this.temperature = temperature; + } - for (int i = 0; i < pressure.length; i++) { - if (Sm3gas[i] > 1e-10) { - GOR[i] = Sm3gas[i] / oilVolumeStdCond; - Bofactor[i] = m3oil[i] / oilVolumeStdCond; - } - System.out.println("GOR " + getGOR()[i] + " Bo " + Bofactor[i]); - } + /** + *

+ * runCalc. + *

+ */ + public void runCalc() { + Sm3gas = new double[pressure.length]; + m3oil = new double[pressure.length]; + GOR = new double[pressure.length]; + Bofactor = new double[pressure.length]; + for (int i = 0; i < pressure.length; i++) { + thermoOps.setSystem(getThermoSystem()); + getThermoSystem().setPressure(pressure[i]); + getThermoSystem().setTemperature(temperature[i]); + thermoOps.TPflash(); + if (getThermoSystem().getNumberOfPhases() > 1) { + m3oil[i] = getThermoSystem().getPhase(1).getVolume(); + } else { + m3oil[i] = getThermoSystem().getVolume(); + } + if (getThermoSystem().getNumberOfPhases() > 1 + && getThermoSystem().getPhase(0).getType() == PhaseType.GAS) { + getThermoSystem().getPhase(0) + .setPressure(ThermodynamicConstantsInterface.referencePressure); + getThermoSystem().getPhase(0).setTemperature(288.15); + getThermoSystem().init(1); + Sm3gas[i] = getThermoSystem().getPhase(0).getVolume(); + setThermoSystem(getThermoSystem().phaseToSystem(1)); + } } + getThermoSystem().setPressure(ThermodynamicConstantsInterface.referencePressure); + getThermoSystem().setTemperature(288.15); + thermoOps.TPflash(); + oilVolumeStdCond = getThermoSystem().getPhase("oil").getVolume(); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface tempSystem = new SystemSrkEos(298.0, 300.0); - tempSystem.addComponent("nitrogen", 0.64); - tempSystem.addComponent("CO2", 3.53); - tempSystem.addComponent("methane", 70.78); - tempSystem.addComponent("ethane", 8.94); - tempSystem.addComponent("propane", 5.05); - tempSystem.addComponent("i-butane", 0.85); - tempSystem.addComponent("n-butane", 1.68); - tempSystem.addComponent("i-pentane", 0.62); - tempSystem.addComponent("n-pentane", 0.79); - tempSystem.addComponent("n-hexane", 0.83); - tempSystem.addTBPfraction("C7", 1.06, 92.2 / 1000.0, 0.7324); - tempSystem.addTBPfraction("C8", 1.06, 104.6 / 1000.0, 0.7602); - tempSystem.addTBPfraction("C9", 0.79, 119.1 / 1000.0, 0.7677); - tempSystem.addTBPfraction("C10", 0.57, 133.0 / 1000.0, 0.79); - tempSystem.addTBPfraction("C11", 0.38, 155.0 / 1000.0, 0.795); - tempSystem.addTBPfraction("C12", 0.37, 162.0 / 1000.0, 0.806); - tempSystem.addTBPfraction("C13", 0.32, 177.0 / 1000.0, 0.824); - tempSystem.addTBPfraction("C14", 0.27, 198.0 / 1000.0, 0.835); - tempSystem.addTBPfraction("C15", 0.23, 202.0 / 1000.0, 0.84); - tempSystem.addTBPfraction("C16", 0.19, 215.0 / 1000.0, 0.846); - tempSystem.addTBPfraction("C17", 0.17, 234.0 / 1000.0, 0.84); - tempSystem.addTBPfraction("C18", 0.13, 251.0 / 1000.0, 0.844); - tempSystem.addTBPfraction("C19", 0.13, 270.0 / 1000.0, 0.854); - tempSystem.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.88); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); - - SeparatorTest sepSim = new SeparatorTest(tempSystem); - double[] temps = {313.15, 313.15, 313.15, 313.15, 313.15, 313.15, 313.15}; - double[] pres = {500, 400, 200, 100, 50.0, 5.0, 1.01325}; - sepSim.setSeparatorConditions(temps, pres); - sepSim.runCalc(); + for (int i = 0; i < pressure.length; i++) { + if (Sm3gas[i] > 1e-10) { + GOR[i] = Sm3gas[i] / oilVolumeStdCond; + Bofactor[i] = m3oil[i] / oilVolumeStdCond; + } + logger.info("GOR " + getGOR()[i] + " Bo " + Bofactor[i]); } + } - /** - *

- * getGOR. - *

- * - * @return the GOR - */ - public double[] getGOR() { - return GOR; - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface tempSystem = new SystemSrkEos(298.0, 300.0); + tempSystem.addComponent("nitrogen", 0.64); + tempSystem.addComponent("CO2", 3.53); + tempSystem.addComponent("methane", 70.78); + tempSystem.addComponent("ethane", 8.94); + tempSystem.addComponent("propane", 5.05); + tempSystem.addComponent("i-butane", 0.85); + tempSystem.addComponent("n-butane", 1.68); + tempSystem.addComponent("i-pentane", 0.62); + tempSystem.addComponent("n-pentane", 0.79); + tempSystem.addComponent("n-hexane", 0.83); + tempSystem.addTBPfraction("C7", 1.06, 92.2 / 1000.0, 0.7324); + tempSystem.addTBPfraction("C8", 1.06, 104.6 / 1000.0, 0.7602); + tempSystem.addTBPfraction("C9", 0.79, 119.1 / 1000.0, 0.7677); + tempSystem.addTBPfraction("C10", 0.57, 133.0 / 1000.0, 0.79); + tempSystem.addTBPfraction("C11", 0.38, 155.0 / 1000.0, 0.795); + tempSystem.addTBPfraction("C12", 0.37, 162.0 / 1000.0, 0.806); + tempSystem.addTBPfraction("C13", 0.32, 177.0 / 1000.0, 0.824); + tempSystem.addTBPfraction("C14", 0.27, 198.0 / 1000.0, 0.835); + tempSystem.addTBPfraction("C15", 0.23, 202.0 / 1000.0, 0.84); + tempSystem.addTBPfraction("C16", 0.19, 215.0 / 1000.0, 0.846); + tempSystem.addTBPfraction("C17", 0.17, 234.0 / 1000.0, 0.84); + tempSystem.addTBPfraction("C18", 0.13, 251.0 / 1000.0, 0.844); + tempSystem.addTBPfraction("C19", 0.13, 270.0 / 1000.0, 0.854); + tempSystem.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.88); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); - /** - *

- * getBofactor. - *

- * - * @return the Bofactor - */ - public double[] getBofactor() { - return Bofactor; - } + SeparatorTest sepSim = new SeparatorTest(tempSystem); + double[] temps = {313.15, 313.15, 313.15, 313.15, 313.15, 313.15, 313.15}; + double[] pres = + {500, 400, 200, 100, 50.0, 5.0, ThermodynamicConstantsInterface.referencePressure}; + sepSim.setSeparatorConditions(temps, pres); + sepSim.runCalc(); + } + + /** + *

+ * getGOR. + *

+ * + * @return the GOR + */ + public double[] getGOR() { + return GOR; + } + + /** + *

+ * getBofactor. + *

+ * + * @return the Bofactor + */ + public double[] getBofactor() { + return Bofactor; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/SimulationInterface.java b/src/main/java/neqsim/PVTsimulation/simulation/SimulationInterface.java index 388c376afe..fab1696d8f 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/SimulationInterface.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/SimulationInterface.java @@ -12,48 +12,58 @@ * @version $Id: $Id */ public interface SimulationInterface { - /** - *

- * getThermoSystem. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getThermoSystem(); + /** + *

+ * getThermoSystem. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getThermoSystem(); - /** - *

- * setThermoSystem. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setThermoSystem(SystemInterface thermoSystem); + /** + *

+ * setThermoSystem. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setThermoSystem(SystemInterface thermoSystem); - /** - *

- * getBaseThermoSystem. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getBaseThermoSystem(); + /** + *

+ * getBaseThermoSystem. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getBaseThermoSystem(); - /** - *

- * run. - *

- */ - public void run(); + /** + *

+ * run. + *

+ */ + public void run(); - /** - *

- * getOptimizer. - *

- * - * @return a - * {@link neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt} - * object - */ - public LevenbergMarquardt getOptimizer(); + /** + *

+ * getOptimizer. + *

+ * + * @return a + * {@link neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt} + * object + */ + public LevenbergMarquardt getOptimizer(); + + /** + *

+ * Setter for the field temperature. + *

+ * + * @param temperature the temperature to set + * @param temperatureUnit the unit of temperature as string + */ + public void setTemperature(double temperature, String temperatureUnit); } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/SlimTubeSim.java b/src/main/java/neqsim/PVTsimulation/simulation/SlimTubeSim.java index 72cc8b7070..a8056b34d3 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/SlimTubeSim.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/SlimTubeSim.java @@ -1,5 +1,8 @@ package neqsim.PVTsimulation.simulation; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -13,6 +16,7 @@ * @version $Id: $Id */ public class SlimTubeSim extends BasePVTsimulation { + static Logger logger = LogManager.getLogger(SlimTubeSim.class); SystemInterface inectionGasSystem = null; private int numberOfSlimTubeNodes = 200; SystemInterface[] slimTubeNodeSystem = null; @@ -35,23 +39,23 @@ public SlimTubeSim(SystemInterface tempSystem, SystemInterface injectionGas) { public void run() { slimTubeNodeSystem = new SystemInterface[numberOfSlimTubeNodes + 1]; - double totalReferenceNodeVolumeAtStadardConditions = 0; - getThermoSystem().setPressure(1.01325); + getThermoSystem().setPressure(ThermodynamicConstantsInterface.referencePressure); getThermoSystem().setTemperature(288.15); thermoOps.TPflash(); - totalReferenceNodeVolumeAtStadardConditions = - getThermoSystem().getPhase(0).getVolume() * numberOfSlimTubeNodes; - if (getThermoSystem().getNumberOfPhases() > 1) { - totalReferenceNodeVolumeAtStadardConditions = - getThermoSystem().getPhase(1).getVolume() * numberOfSlimTubeNodes; - } + /* + * double totalReferenceNodeVolumeAtStadardConditions; if (getThermoSystem().getNumberOfPhases() + * > 1) { totalReferenceNodeVolumeAtStadardConditions = + * getThermoSystem().getPhase(1).getVolume() * numberOfSlimTubeNodes; } else { + * totalReferenceNodeVolumeAtStadardConditions = getThermoSystem().getPhase(0).getVolume() * + * numberOfSlimTubeNodes; } + */ getThermoSystem().setPressure(getPressure()); getThermoSystem().setTemperature(getTemperature()); thermoOps.TPflash(); if (getThermoSystem().getNumberOfPhases() > 1) { - System.out.println( + logger.debug( "more than one phase at initial pressure and temperature.....stopping slimtube simulation."); return; } @@ -93,30 +97,28 @@ public void run() { if (liquidExcessVolume < 0) { liquidExcessVolume = 0.0; } - double gasExcessVolume = totalVolume - standardNodeVolume - liquidExcessVolume; - double liquidVolume = slimTubeNodeSystem[i].getPhase(liquidPhaseNumber).getVolume(); - - double gasfactor = gasExcessVolume / excessVolume; - if (gasExcessVolume < excessVolume) { - gasfactor = 1.0; - } - double[] removeMoles = - new double[slimTubeNodeSystem[0].getPhase(0).getNumberOfComponents()]; + int numComp = slimTubeNodeSystem[0].getPhase(0).getNumberOfComponents(); + double[] removeMoles = new double[numComp]; if (slimTubeNodeSystem[i].getNumberOfPhases() > 1) { - for (int k = 0; k < slimTubeNodeSystem[i].getPhase(liquidPhaseNumber) - .getNumberOfComponents(); k++) { + double gasExcessVolume = totalVolume - standardNodeVolume - liquidExcessVolume; + double gasfactor = gasExcessVolume / excessVolume; + if (gasExcessVolume < excessVolume) { + gasfactor = 1.0; + } + + for (int k = 0; k < numComp; k++) { double moles = slimTubeNodeSystem[i].getPhase(0).getComponent(k).getNumberOfMolesInPhase(); removeMoles[k] += gasfactor * moles; } } - double liqfactor = liquidExcessVolume / liquidVolume; if (liquidExcessVolume > 0) { - for (int k = 0; k < slimTubeNodeSystem[i].getPhase(liquidPhaseNumber) - .getNumberOfComponents(); k++) { + double liquidVolume = slimTubeNodeSystem[i].getPhase(liquidPhaseNumber).getVolume(); + double liqfactor = liquidExcessVolume / liquidVolume; + for (int k = 0; k < numComp; k++) { double moles = slimTubeNodeSystem[i].getPhase(liquidPhaseNumber).getComponent(k) .getNumberOfMolesInPhase(); removeMoles[k] += moles * liqfactor; @@ -129,10 +131,20 @@ public void run() { * += removeMoles[comp]; } */ - for (int k = 0; k < slimTubeNodeSystem[i].getPhase(liquidPhaseNumber) - .getNumberOfComponents(); k++) { - slimTubeNodeSystem[i + 1].addComponent(k, removeMoles[k]); - slimTubeNodeSystem[i].addComponent(k, -removeMoles[k]); + for (int k = 0; k < numComp; k++) { + try { + if (removeMoles[k] <= slimTubeNodeSystem[i].getComponent(k).getNumberOfmoles()) { + slimTubeNodeSystem[i].addComponent(k, -removeMoles[k]); + slimTubeNodeSystem[i + 1].addComponent(k, removeMoles[k]); + } else { + slimTubeNodeSystem[i + 1].addComponent(k, + slimTubeNodeSystem[i].getComponent(k).getNumberOfmoles()); + slimTubeNodeSystem[i].addComponent(k, + -slimTubeNodeSystem[i].getComponent(k).getNumberOfmoles()); + } + } catch (Exception e) { + logger.warn(e.getMessage()); + } } slimOps0.setSystem(slimTubeNodeSystem[i]); slimOps0.TPflash(); @@ -145,47 +157,54 @@ public void run() { // slimTubeNodeSystem[i].display(); // slimTubeNodeSystem[i + 1].display(); } - System.out.println("time " + timeStep + " node " + numberOfSlimTubeNodes + " volume " - + (slimTubeNodeSystem[numberOfSlimTubeNodes].getVolume()) + " moles " - + slimTubeNodeSystem[numberOfSlimTubeNodes].getNumberOfMoles()); + /* + * logger.DEBUG("time " + timeStep + " node " + numberOfSlimTubeNodes + " volume " + + * (slimTubeNodeSystem[numberOfSlimTubeNodes].getVolume()) + " moles " + + * slimTubeNodeSystem[numberOfSlimTubeNodes].getNumberOfMoles()); + */ slimTubeNodeSystem[numberOfSlimTubeNodes].setTemperature(288.15); - slimTubeNodeSystem[numberOfSlimTubeNodes].setPressure(1.01325); + slimTubeNodeSystem[numberOfSlimTubeNodes] + .setPressure(ThermodynamicConstantsInterface.referencePressure); slimOps1.TPflash(); - double totalAccumulatedVolumeAtStadardConditions = - slimTubeNodeSystem[numberOfSlimTubeNodes].getPhase(0).getVolume(); - - if (slimTubeNodeSystem[numberOfSlimTubeNodes].getNumberOfPhases() > 1) { - totalAccumulatedVolumeAtStadardConditions = - slimTubeNodeSystem[numberOfSlimTubeNodes].getPhase(1).getVolume(); - } - - System.out.println("accumulated VOlume " + totalAccumulatedVolumeAtStadardConditions - + " total reference volume " + totalReferenceNodeVolumeAtStadardConditions); - System.out.println("oil recovery ratio" + totalAccumulatedVolumeAtStadardConditions - / totalReferenceNodeVolumeAtStadardConditions); + /* + * double totalAccumulatedVolumeAtStadardConditions = + * slimTubeNodeSystem[numberOfSlimTubeNodes].getPhase(0).getVolume(); + * + * if (slimTubeNodeSystem[numberOfSlimTubeNodes].getNumberOfPhases() > 1) { + * totalAccumulatedVolumeAtStadardConditions = + * slimTubeNodeSystem[numberOfSlimTubeNodes].getPhase(1).getVolume(); } + */ + + /* + * System.out.println("accumulated VOlume " + totalAccumulatedVolumeAtStadardConditions + + * " total reference volume " + totalReferenceNodeVolumeAtStadardConditions); + * System.out.println("oil recovery ratio" + totalAccumulatedVolumeAtStadardConditions / + * totalReferenceNodeVolumeAtStadardConditions); + */ } slimTubeNodeSystem[numberOfSlimTubeNodes].setTemperature(288.15); - slimTubeNodeSystem[numberOfSlimTubeNodes].setPressure(1.01325); + slimTubeNodeSystem[numberOfSlimTubeNodes] + .setPressure(ThermodynamicConstantsInterface.referencePressure); slimOps1.TPflash(); - double totalAccumulatedVolumeAtStadardConditions = - slimTubeNodeSystem[numberOfSlimTubeNodes].getPhase(0).getVolume(); - - if (slimTubeNodeSystem[numberOfSlimTubeNodes].getNumberOfPhases() > 1) { - totalAccumulatedVolumeAtStadardConditions = - slimTubeNodeSystem[numberOfSlimTubeNodes].getPhase(1).getVolume(); - } - - System.out.println("accumulated VOlume " + totalAccumulatedVolumeAtStadardConditions - + " total reference volume " + totalReferenceNodeVolumeAtStadardConditions); - System.out.println("oil recovery ratio" - + totalAccumulatedVolumeAtStadardConditions / totalReferenceNodeVolumeAtStadardConditions); - - for (int i = 0; i < numberOfSlimTubeNodes; i++) { - slimTubeNodeSystem[i].display(); - } + /* + * double totalAccumulatedVolumeAtStadardConditions = + * slimTubeNodeSystem[numberOfSlimTubeNodes].getPhase(0).getVolume(); + * + * if (slimTubeNodeSystem[numberOfSlimTubeNodes].getNumberOfPhases() > 1) { + * totalAccumulatedVolumeAtStadardConditions = + * slimTubeNodeSystem[numberOfSlimTubeNodes].getPhase(1).getVolume(); } + * + * System.out.println("accumulated VOlume " + totalAccumulatedVolumeAtStadardConditions + + * " total reference volume " + totalReferenceNodeVolumeAtStadardConditions); + * System.out.println("oil recovery ratio" + totalAccumulatedVolumeAtStadardConditions / + * totalReferenceNodeVolumeAtStadardConditions); + */ + /* + * for (int i = 0; i < numberOfSlimTubeNodes; i++) { slimTubeNodeSystem[i].display(); } + */ } /** diff --git a/src/main/java/neqsim/PVTsimulation/simulation/SwellingTest.java b/src/main/java/neqsim/PVTsimulation/simulation/SwellingTest.java index 96c13c3c6c..0398db0f14 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/SwellingTest.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/SwellingTest.java @@ -1,5 +1,7 @@ package neqsim.PVTsimulation.simulation; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -12,156 +14,157 @@ * @version $Id: $Id */ public class SwellingTest extends BasePVTsimulation { - double[] gasInjected = null; - private double[] pressures = null; - private double[] relativeOilVolume = null; - SystemInterface injectionGas; - - /** - *

- * Constructor for SwellingTest. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public SwellingTest(SystemInterface tempSystem) { - super(tempSystem); + static Logger logger = LogManager.getLogger(SwellingTest.class); + + double[] gasInjected = null; + private double[] pressures = null; + private double[] relativeOilVolume = null; + SystemInterface injectionGas; + + /** + *

+ * Constructor for SwellingTest. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public SwellingTest(SystemInterface tempSystem) { + super(tempSystem); + } + + /** + *

+ * Setter for the field injectionGas. + *

+ * + * @param injectionGas a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setInjectionGas(SystemInterface injectionGas) { + this.injectionGas = injectionGas; + } + + /** + *

+ * setCummulativeMolePercentGasInjected. + *

+ * + * @param gasInjected an array of type double + */ + public void setCummulativeMolePercentGasInjected(double[] gasInjected) { + this.gasInjected = gasInjected; + setPressures(new double[gasInjected.length]); + setRelativeOilVolume(new double[gasInjected.length]); + } + + /** + *

+ * runCalc. + *

+ */ + public void runCalc() { + double oldInjected = 0.0; + // thermoOps.TPflash(); + try { + thermoOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** - *

- * Setter for the field injectionGas. - *

- * - * @param injectionGas a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setInjectionGas(SystemInterface injectionGas) { - this.injectionGas = injectionGas; - } - - /** - *

- * setCummulativeMolePercentGasInjected. - *

- * - * @param gasInjected an array of {@link double} objects - */ - public void setCummulativeMolePercentGasInjected(double[] gasInjected) { - this.gasInjected = gasInjected; - setPressures(new double[gasInjected.length]); - setRelativeOilVolume(new double[gasInjected.length]); - } - - /** - *

- * runCalc. - *

- */ - public void runCalc() { - double oldInjected = 0.0; - // thermoOps.TPflash(); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - e.printStackTrace(); - } - double orginalOilVolume = getThermoSystem().getVolume(); - double oilMoles = getThermoSystem().getTotalNumberOfMoles(); - - for (int i = 0; i < getPressures().length; i++) { - if (gasInjected[i] > 1e-10) { - injectionGas.setTotalFlowRate(oilMoles * (gasInjected[i] - oldInjected) / 100.0, - "mol/sec"); - injectionGas.init(0); - injectionGas.init(1); - oldInjected = gasInjected[i]; - - getThermoSystem().init(0); - getThermoSystem().addFluid(injectionGas); - } - getThermoSystem().init(0); - if (i == 0) { - getThermoSystem().setPressure(10.0); - } - getThermoSystem().setTemperature(temperature); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - e.printStackTrace(); - } - pressures[i] = getThermoSystem().getPressure(); - getRelativeOilVolume()[i] = getThermoSystem().getVolume() / orginalOilVolume; - } - - for (int i = 0; i < getPressures().length; i++) { - System.out.println("pressure " + getPressures()[i] + " relativeOil volume " - + getRelativeOilVolume()[i]); - } - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface oilSystem = new SystemSrkEos(298.0, 50); - oilSystem.addComponent("methane", 5.01); - oilSystem.addComponent("propane", 0.01); - oilSystem.addTBPfraction("C10", 100.0, 145.0 / 1000.0, 0.82); - oilSystem.addTBPfraction("C12", 120.0, 175.0 / 1000.0, 0.85); - oilSystem.createDatabase(true); - oilSystem.setMixingRule(2); - - SystemInterface gasSystem = new SystemSrkEos(298.0, 50); - gasSystem.addComponent("methane", 110.0); - gasSystem.addComponent("ethane", 10.0); - gasSystem.createDatabase(true); - gasSystem.setMixingRule(2); - - SwellingTest test = new SwellingTest(oilSystem); - test.setInjectionGas(gasSystem); - test.setTemperature(298.15); - test.setCummulativeMolePercentGasInjected( - new double[] {0.0, 0.01, 0.02, 0.03, 0.05, 0.1, 0.2, 0.4, 0.5, 1.0, 10.3, 22.0}); - test.runCalc(); - - test.getThermoSystem().display(); - } - - /** - *

- * Getter for the field relativeOilVolume. - *

- * - * @return the relativeOilVolume - */ - public double[] getRelativeOilVolume() { - return relativeOilVolume; - } - - /** - *

- * Setter for the field relativeOilVolume. - *

- * - * @param relativeOilVolume the relativeOilVolume to set - */ - public void setRelativeOilVolume(double[] relativeOilVolume) { - this.relativeOilVolume = relativeOilVolume; - } - - /** {@inheritDoc} */ - @Override - public double[] getPressures() { - return pressures; + double orginalOilVolume = getThermoSystem().getVolume(); + double oilMoles = getThermoSystem().getTotalNumberOfMoles(); + + for (int i = 0; i < getPressures().length; i++) { + if (gasInjected[i] > 1e-10) { + injectionGas.setTotalFlowRate(oilMoles * (gasInjected[i] - oldInjected) / 100.0, "mol/sec"); + injectionGas.init(0); + injectionGas.init(1); + oldInjected = gasInjected[i]; + + getThermoSystem().init(0); + getThermoSystem().addFluid(injectionGas); + } + getThermoSystem().init(0); + if (i == 0) { + getThermoSystem().setPressure(10.0); + } + getThermoSystem().setTemperature(temperature); + try { + thermoOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + pressures[i] = getThermoSystem().getPressure(); + getRelativeOilVolume()[i] = getThermoSystem().getVolume() / orginalOilVolume; } - /** {@inheritDoc} */ - @Override - public void setPressures(double[] pressures) { - this.pressures = pressures; + for (int i = 0; i < getPressures().length; i++) { + logger.info( + "pressure " + getPressures()[i] + " relativeOil volume " + getRelativeOilVolume()[i]); } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface oilSystem = new SystemSrkEos(298.0, 50); + oilSystem.addComponent("methane", 5.01); + oilSystem.addComponent("propane", 0.01); + oilSystem.addTBPfraction("C10", 100.0, 145.0 / 1000.0, 0.82); + oilSystem.addTBPfraction("C12", 120.0, 175.0 / 1000.0, 0.85); + oilSystem.createDatabase(true); + oilSystem.setMixingRule(2); + + SystemInterface gasSystem = new SystemSrkEos(298.0, 50); + gasSystem.addComponent("methane", 110.0); + gasSystem.addComponent("ethane", 10.0); + gasSystem.createDatabase(true); + gasSystem.setMixingRule(2); + + SwellingTest test = new SwellingTest(oilSystem); + test.setInjectionGas(gasSystem); + test.setTemperature(298.15); + test.setCummulativeMolePercentGasInjected( + new double[] {0.0, 0.01, 0.02, 0.03, 0.05, 0.1, 0.2, 0.4, 0.5, 1.0, 10.3, 22.0}); + test.runCalc(); + + test.getThermoSystem().display(); + } + + /** + *

+ * Getter for the field relativeOilVolume. + *

+ * + * @return the relativeOilVolume + */ + public double[] getRelativeOilVolume() { + return relativeOilVolume; + } + + /** + *

+ * Setter for the field relativeOilVolume. + *

+ * + * @param relativeOilVolume the relativeOilVolume to set + */ + public void setRelativeOilVolume(double[] relativeOilVolume) { + this.relativeOilVolume = relativeOilVolume; + } + + /** {@inheritDoc} */ + @Override + public double[] getPressures() { + return pressures; + } + + /** {@inheritDoc} */ + @Override + public void setPressures(double[] pressures) { + this.pressures = pressures; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/ViscositySim.java b/src/main/java/neqsim/PVTsimulation/simulation/ViscositySim.java index 7e7b6e40e1..571191c83f 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/ViscositySim.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/ViscositySim.java @@ -1,6 +1,8 @@ package neqsim.PVTsimulation.simulation; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.physicalProperties.util.parameterFitting.pureComponentParameterFitting.pureCompViscosity.linearLiquidModel.ViscosityFunction; import neqsim.statistics.parameterFitting.SampleSet; import neqsim.statistics.parameterFitting.SampleValue; @@ -17,194 +19,194 @@ * @version $Id: $Id */ public class ViscositySim extends BasePVTsimulation { - double[] temperature = null; - - double[] pressure = null; - private double[] gasViscosity; - private double[] oilViscosity; - private double[] aqueousViscosity; - ViscosityFunction function; - - /** - *

- * Constructor for ViscositySim. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public ViscositySim(SystemInterface tempSystem) { - super(tempSystem); - temperature = new double[1]; - pressure = new double[1]; - temperature[0] = tempSystem.getTemperature(); - pressure[0] = tempSystem.getPressure(); + static Logger logger = LogManager.getLogger(ViscositySim.class); + + double[] temperature = null; + + double[] pressure = null; + private double[] gasViscosity; + private double[] oilViscosity; + private double[] aqueousViscosity; + ViscosityFunction function; + + /** + *

+ * Constructor for ViscositySim. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public ViscositySim(SystemInterface tempSystem) { + super(tempSystem); + temperature = new double[1]; + pressure = new double[1]; + temperature[0] = tempSystem.getTemperature(); + pressure[0] = tempSystem.getPressure(); + } + + /** + *

+ * setTemperaturesAndPressures. + *

+ * + * @param temperature an array of type double + * @param pressure an array of type double + */ + public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { + this.pressure = pressure; + this.temperature = temperature; + experimentalData = new double[temperature.length][1]; + } + + /** + *

+ * runTuning. + *

+ */ + public void runTuning() { + ArrayList sampleList = new ArrayList(); + + try { + System.out.println("adding...."); + + for (int i = 0; i < experimentalData[0].length; i++) { + ViscosityFunction function = new ViscosityFunction(); + double[] guess = {1.0}; // getThermoSystem().getPhase(0).getComponent(0).getCriticalViscosity()}; + function.setInitialGuess(guess); + + SystemInterface tempSystem = getThermoSystem().clone(); + + tempSystem.setTemperature(temperature[i]); + tempSystem.setPressure(pressure[i]); + thermoOps.TPflash(); + // tempSystem.display(); + double[] sample1 = {temperature[i]}; + double viscosity = experimentalData[0][i]; + double[] standardDeviation1 = {1.5}; + SampleValue sample = + new SampleValue(viscosity, viscosity / 50.0, sample1, standardDeviation1); + sample.setFunction(function); + sample.setThermodynamicSystem(tempSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); } - /** - *

- * setTemperaturesAndPressures. - *

- * - * @param temperature an array of {@link double} objects - * @param pressure an array of {@link double} objects - */ - public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { - this.pressure = pressure; - this.temperature = temperature; - experimentalData = new double[temperature.length][1]; - } - - /** - *

- * runTuning. - *

- */ - public void runTuning() { - ArrayList sampleList = new ArrayList(); - - try { - System.out.println("adding...."); - - for (int i = 0; i < experimentalData[0].length; i++) { - ViscosityFunction function = new ViscosityFunction(); - double guess[] = {1.0};// getThermoSystem().getPhase(0).getComponent(0).getCriticalViscosity()}; - function.setInitialGuess(guess); - - SystemInterface tempSystem = getThermoSystem().clone(); - - tempSystem.setTemperature(temperature[i]); - tempSystem.setPressure(pressure[i]); - thermoOps.TPflash(); - // tempSystem.display(); - double sample1[] = {temperature[i]}; - double viscosity = experimentalData[0][i]; - double standardDeviation1[] = {1.5}; - SampleValue sample = - new SampleValue(viscosity, viscosity / 50.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(tempSystem); - sampleList.add(sample); - } - } catch (Exception e) { - System.out.println("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - optimizer = new LevenbergMarquardt(); - optimizer.setMaxNumberOfIterations(20); - - optimizer.setSampleSet(sampleSet); - optimizer.solve(); - runCalc(); - // optimizer.displayCurveFit(); - } - - /** - *

- * runCalc. - *

- */ - public void runCalc() { - gasViscosity = new double[pressure.length]; - oilViscosity = new double[pressure.length]; - aqueousViscosity = new double[pressure.length]; - - for (int i = 0; i < pressure.length; i++) { - // thermoOps.setSystem(getThermoSystem()); - getThermoSystem().setPressure(pressure[i]); - getThermoSystem().setTemperature(temperature[i]); - thermoOps.TPflash(); - getThermoSystem().initPhysicalProperties(); - - if (getThermoSystem().hasPhaseType("gas")) { - gasViscosity[i] = - getThermoSystem().getPhase("gas").getPhysicalProperties().getViscosity(); - } - if (getThermoSystem().hasPhaseType("oil")) { - oilViscosity[i] = - getThermoSystem().getPhase("oil").getPhysicalProperties().getViscosity(); - } - if (getThermoSystem().hasPhaseType("aqueous")) { - aqueousViscosity[i] = getThermoSystem().getPhase("aqueous").getPhysicalProperties() - .getViscosity(); - } - } - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); - // tempSystem.addComponent("n-heptane", 6.78); - - // tempSystem.addComponent("methane", 6.78); - tempSystem.addComponent("n-heptane", 6.78); - // tempSystem.addTBPfraction("C19", 10.13, 270.0 / 1000.0, 0.814); - tempSystem.addPlusFraction("C20", 10.62, 100.0 / 1000.0, 0.73); - - // tempSystem.getCharacterization().characterisePlusFraction(); - // tempSystem.getWaxModel().addTBPWax(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); - // tempSystem.addSolidComplexPhase("wax"); - // tempSystem.setMultiphaseWaxCheck(true); - // tempSystem.setMultiPhaseCheck(true); - tempSystem.init(0); - tempSystem.init(1); - - ViscositySim sepSim = new ViscositySim(tempSystem); - double[] temps = {300.15, 293.15, 283.15, 273.15, 264.15}; - double[] pres = {5, 5, 5, 5.0, 5.0}; - sepSim.setTemperaturesAndPressures(temps, pres); - sepSim.runCalc(); - - double[][] expData = {{2e-4, 3e-4, 4e-4, 5e-4, 6e-4},}; - sepSim.setExperimentalData(expData); - sepSim.runTuning(); - // sepSim.runCalc(); - double a = sepSim.getGasViscosity()[0]; - double a2 = sepSim.getOilViscosity()[0]; - sepSim.getThermoSystem().display(); - // sepSim.tuneModel(exptemperatures, exppressures, expwaxFrations); - } - - /** - *

- * Getter for the field gasViscosity. - *

- * - * @return the gasViscosity - */ - public double[] getGasViscosity() { - return gasViscosity; - } - - /** - *

- * Getter for the field oilViscosity. - *

- * - * @return the oilViscosity - */ - public double[] getOilViscosity() { - return oilViscosity; - } - - /** - *

- * Getter for the field aqueousViscosity. - *

- * - * @return the aqueousViscosity - */ - public double[] getAqueousViscosity() { - return aqueousViscosity; + SampleSet sampleSet = new SampleSet(sampleList); + + optimizer = new LevenbergMarquardt(); + optimizer.setMaxNumberOfIterations(20); + + optimizer.setSampleSet(sampleSet); + optimizer.solve(); + runCalc(); + // optimizer.displayCurveFit(); + } + + /** + *

+ * runCalc. + *

+ */ + public void runCalc() { + gasViscosity = new double[pressure.length]; + oilViscosity = new double[pressure.length]; + aqueousViscosity = new double[pressure.length]; + + for (int i = 0; i < pressure.length; i++) { + // thermoOps.setSystem(getThermoSystem()); + getThermoSystem().setPressure(pressure[i]); + getThermoSystem().setTemperature(temperature[i]); + thermoOps.TPflash(); + getThermoSystem().initPhysicalProperties(); + + if (getThermoSystem().hasPhaseType("gas")) { + gasViscosity[i] = getThermoSystem().getPhase("gas").getPhysicalProperties().getViscosity(); + } + if (getThermoSystem().hasPhaseType("oil")) { + oilViscosity[i] = getThermoSystem().getPhase("oil").getPhysicalProperties().getViscosity(); + } + if (getThermoSystem().hasPhaseType("aqueous")) { + aqueousViscosity[i] = + getThermoSystem().getPhase("aqueous").getPhysicalProperties().getViscosity(); + } } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); + // tempSystem.addComponent("n-heptane", 6.78); + + // tempSystem.addComponent("methane", 6.78); + tempSystem.addComponent("n-heptane", 6.78); + // tempSystem.addTBPfraction("C19", 10.13, 270.0 / 1000.0, 0.814); + tempSystem.addPlusFraction("C20", 10.62, 100.0 / 1000.0, 0.73); + + // tempSystem.getCharacterization().characterisePlusFraction(); + // tempSystem.getWaxModel().addTBPWax(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + // tempSystem.addSolidComplexPhase("wax"); + // tempSystem.setMultiphaseWaxCheck(true); + // tempSystem.setMultiPhaseCheck(true); + tempSystem.init(0); + tempSystem.init(1); + + ViscositySim sepSim = new ViscositySim(tempSystem); + double[] temps = {300.15, 293.15, 283.15, 273.15, 264.15}; + double[] pres = {5, 5, 5, 5.0, 5.0}; + sepSim.setTemperaturesAndPressures(temps, pres); + sepSim.runCalc(); + + double[][] expData = {{2e-4, 3e-4, 4e-4, 5e-4, 6e-4},}; + sepSim.setExperimentalData(expData); + // sepSim.runTuning(); + sepSim.runCalc(); + double a = sepSim.getGasViscosity()[0]; + double a2 = sepSim.getOilViscosity()[0]; + // sepSim.getThermoSystem().display(); + // sepSim.tuneModel(exptemperatures, exppressures, expwaxFrations); + } + + /** + *

+ * Getter for the field gasViscosity. + *

+ * + * @return the gasViscosity + */ + public double[] getGasViscosity() { + return gasViscosity; + } + + /** + *

+ * Getter for the field oilViscosity. + *

+ * + * @return the oilViscosity + */ + public double[] getOilViscosity() { + return oilViscosity; + } + + /** + *

+ * Getter for the field aqueousViscosity. + *

+ * + * @return the aqueousViscosity + */ + public double[] getAqueousViscosity() { + return aqueousViscosity; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/ViscosityWaxOilSim.java b/src/main/java/neqsim/PVTsimulation/simulation/ViscosityWaxOilSim.java index 4781035202..b3d5b2ad1c 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/ViscosityWaxOilSim.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/ViscosityWaxOilSim.java @@ -1,6 +1,8 @@ package neqsim.PVTsimulation.simulation; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.physicalProperties.util.parameterFitting.pureComponentParameterFitting.pureCompViscosity.linearLiquidModel.ViscosityFunction; import neqsim.statistics.parameterFitting.SampleSet; import neqsim.statistics.parameterFitting.SampleValue; @@ -17,247 +19,249 @@ * @version $Id: $Id */ public class ViscosityWaxOilSim extends BasePVTsimulation { - double[] temperature = null; + static Logger logger = LogManager.getLogger(ViscosityWaxOilSim.class); - double[] pressure = null; - private double[] waxFraction = null; - private double[] gasViscosity; - private double[] oilViscosity, oilwaxDispersionViscosity; - private double[] aqueousViscosity; - private double[] shareRate; + double[] temperature = null; - /** - *

- * Constructor for ViscosityWaxOilSim. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public ViscosityWaxOilSim(SystemInterface tempSystem) { - super(tempSystem); - temperature = new double[1]; - pressure = new double[1]; - temperature[0] = tempSystem.getTemperature(); - pressure[0] = tempSystem.getPressure(); - } + double[] pressure = null; + private double[] waxFraction = null; + private double[] gasViscosity; + private double[] oilViscosity; - /** - *

- * setTemperaturesAndPressures. - *

- * - * @param temperature an array of {@link double} objects - * @param pressure an array of {@link double} objects - */ - public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { - this.pressure = pressure; - this.temperature = temperature; - experimentalData = new double[temperature.length][1]; - } + private double[] oilwaxDispersionViscosity; - /** - *

- * runTuning. - *

- */ - public void runTuning() { - ArrayList sampleList = new ArrayList(); + private double[] aqueousViscosity; + private double[] shareRate; - try { - System.out.println("adding...."); + /** + *

+ * Constructor for ViscosityWaxOilSim. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public ViscosityWaxOilSim(SystemInterface tempSystem) { + super(tempSystem); + temperature = new double[1]; + pressure = new double[1]; + temperature[0] = tempSystem.getTemperature(); + pressure[0] = tempSystem.getPressure(); + } - for (int i = 0; i < experimentalData[0].length; i++) { - ViscosityFunction function = new ViscosityFunction(); - double guess[] = {1.0};// getThermoSystem().getPhase(0).getComponent(0).getCriticalViscosity()}; - function.setInitialGuess(guess); + /** + *

+ * setTemperaturesAndPressures. + *

+ * + * @param temperature an array of type double + * @param pressure an array of type double + */ + public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { + this.pressure = pressure; + this.temperature = temperature; + experimentalData = new double[temperature.length][1]; + } - SystemInterface tempSystem = getThermoSystem().clone(); + /** + *

+ * runTuning. + *

+ */ + public void runTuning() { + ArrayList sampleList = new ArrayList(); - tempSystem.setTemperature(temperature[i]); - tempSystem.setPressure(pressure[i]); - thermoOps.TPflash(); - // tempSystem.display(); - double sample1[] = {shareRate[i]}; - double viscosity = experimentalData[0][i]; - double standardDeviation1[] = {1.5}; - SampleValue sample = - new SampleValue(viscosity, viscosity / 50.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(tempSystem); - sampleList.add(sample); - } - } catch (Exception e) { - System.out.println("database error" + e); - } + try { + System.out.println("adding...."); - SampleSet sampleSet = new SampleSet(sampleList); + for (int i = 0; i < experimentalData[0].length; i++) { + ViscosityFunction function = new ViscosityFunction(); + double[] guess = {1.0}; // getThermoSystem().getPhase(0).getComponent(0).getCriticalViscosity()}; + function.setInitialGuess(guess); - optimizer = new LevenbergMarquardt(); - optimizer.setMaxNumberOfIterations(20); + SystemInterface tempSystem = getThermoSystem().clone(); - optimizer.setSampleSet(sampleSet); - optimizer.solve(); - runCalc(); - optimizer.displayCurveFit(); + tempSystem.setTemperature(temperature[i]); + tempSystem.setPressure(pressure[i]); + thermoOps.TPflash(); + // tempSystem.display(); + double[] sample1 = {shareRate[i]}; + double viscosity = experimentalData[0][i]; + double[] standardDeviation1 = {1.5}; + SampleValue sample = + new SampleValue(viscosity, viscosity / 50.0, sample1, standardDeviation1); + sample.setFunction(function); + sample.setThermodynamicSystem(tempSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); } - /** - *

- * runCalc. - *

- */ - public void runCalc() { - gasViscosity = new double[pressure.length]; - oilViscosity = new double[pressure.length]; - aqueousViscosity = new double[pressure.length]; - waxFraction = new double[pressure.length]; - oilwaxDispersionViscosity = new double[pressure.length]; + SampleSet sampleSet = new SampleSet(sampleList); + + optimizer = new LevenbergMarquardt(); + optimizer.setMaxNumberOfIterations(20); + + optimizer.setSampleSet(sampleSet); + optimizer.solve(); + runCalc(); + optimizer.displayCurveFit(); + } - for (int i = 0; i < pressure.length; i++) { - // thermoOps.setSystem(getThermoSystem()); - getThermoSystem().setPressure(pressure[i]); - getThermoSystem().setTemperature(temperature[i]); - thermoOps.TPflash(); - getThermoSystem().initPhysicalProperties(); - waxFraction[i] = 0.0; - if (getThermoSystem().hasPhaseType("wax") && getThermoSystem().hasPhaseType("oil")) { - waxFraction[i] = getThermoSystem() - .getWtFraction(getThermoSystem().getPhaseNumberOfPhase("wax")); - oilwaxDispersionViscosity[i] = - getThermoSystem().getPhase("oil").getPhysicalProperties() - .getViscosityOfWaxyOil(waxFraction[i], getShareRate()[i]); - } - if (getThermoSystem().hasPhaseType("gas")) { - gasViscosity[i] = - getThermoSystem().getPhase("gas").getPhysicalProperties().getViscosity(); - } - if (getThermoSystem().hasPhaseType("oil")) { - oilViscosity[i] = - getThermoSystem().getPhase("oil").getPhysicalProperties().getViscosity(); - } - if (getThermoSystem().hasPhaseType("aqueous")) { - aqueousViscosity[i] = getThermoSystem().getPhase("aqueous").getPhysicalProperties() - .getViscosity(); - } - } + /** + *

+ * runCalc. + *

+ */ + public void runCalc() { + gasViscosity = new double[pressure.length]; + oilViscosity = new double[pressure.length]; + aqueousViscosity = new double[pressure.length]; + waxFraction = new double[pressure.length]; + oilwaxDispersionViscosity = new double[pressure.length]; + + for (int i = 0; i < pressure.length; i++) { + // thermoOps.setSystem(getThermoSystem()); + getThermoSystem().setPressure(pressure[i]); + getThermoSystem().setTemperature(temperature[i]); + thermoOps.TPflash(); + getThermoSystem().initPhysicalProperties(); + waxFraction[i] = 0.0; + if (getThermoSystem().hasPhaseType("wax") && getThermoSystem().hasPhaseType("oil")) { + waxFraction[i] = + getThermoSystem().getWtFraction(getThermoSystem().getPhaseNumberOfPhase("wax")); + oilwaxDispersionViscosity[i] = getThermoSystem().getPhase("oil").getPhysicalProperties() + .getViscosityOfWaxyOil(waxFraction[i], getShareRate()[i]); + } + if (getThermoSystem().hasPhaseType("gas")) { + gasViscosity[i] = getThermoSystem().getPhase("gas").getPhysicalProperties().getViscosity(); + } + if (getThermoSystem().hasPhaseType("oil")) { + oilViscosity[i] = getThermoSystem().getPhase("oil").getPhysicalProperties().getViscosity(); + } + if (getThermoSystem().hasPhaseType("aqueous")) { + aqueousViscosity[i] = + getThermoSystem().getPhase("aqueous").getPhysicalProperties().getViscosity(); + } } + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); - // tempSystem.addComponent("n-heptane", 6.78); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); + // tempSystem.addComponent("n-heptane", 6.78); - tempSystem.addTBPfraction("C19", 10.13, 270.0 / 1000.0, 0.814); - tempSystem.addPlusFraction("C20", 10.62, 330.0 / 1000.0, 0.83); + tempSystem.addTBPfraction("C19", 10.13, 270.0 / 1000.0, 0.814); + tempSystem.addPlusFraction("C20", 10.62, 330.0 / 1000.0, 0.83); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.getWaxModel().addTBPWax(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); - // tempSystem.addSolidComplexPhase("wax"); - // tempSystem.setMultiphaseWaxCheck(true); - // tempSystem.setMultiPhaseCheck(true); - tempSystem.init(0); - tempSystem.init(1); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.getWaxModel().addTBPWax(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + // tempSystem.addSolidComplexPhase("wax"); + // tempSystem.setMultiphaseWaxCheck(true); + // tempSystem.setMultiPhaseCheck(true); + tempSystem.init(0); + tempSystem.init(1); - ViscosityWaxOilSim sepSim = new ViscosityWaxOilSim(tempSystem); - double[] temps = {300.15, 293.15, 283.15, 273.15, 264.15}; - double[] pres = {5, 5, 5, 5.0, 5.0}; - sepSim.setTemperaturesAndPressures(temps, pres); - sepSim.setShareRate(new double[] {0, 0, 0, 100, 100}); - sepSim.runCalc(); + ViscosityWaxOilSim sepSim = new ViscosityWaxOilSim(tempSystem); + double[] temps = {300.15, 293.15, 283.15, 273.15, 264.15}; + double[] pres = {5, 5, 5, 5.0, 5.0}; + sepSim.setTemperaturesAndPressures(temps, pres); + sepSim.setShareRate(new double[] {0, 0, 0, 100, 100}); + sepSim.runCalc(); - double[][] expData = {{2e-4, 3e-4, 4e-4, 5e-4, 6e-4},}; - sepSim.setExperimentalData(expData); - sepSim.runTuning(); - // sepSim.runCalc(); - double a = sepSim.getGasViscosity()[0]; - double a2 = sepSim.getOilViscosity()[0]; - sepSim.getThermoSystem().display(); - // sepSim.tuneModel(exptemperatures, exppressures, expwaxFrations); - } + double[][] expData = {{2e-4, 3e-4, 4e-4, 5e-4, 6e-4},}; + sepSim.setExperimentalData(expData); + sepSim.runTuning(); + // sepSim.runCalc(); + double a = sepSim.getGasViscosity()[0]; + double a2 = sepSim.getOilViscosity()[0]; + sepSim.getThermoSystem().display(); + // sepSim.tuneModel(exptemperatures, exppressures, expwaxFrations); + } - /** - *

- * Getter for the field waxFraction. - *

- * - * @return the waxFraction - */ - public double[] getWaxFraction() { - return waxFraction; - } + /** + *

+ * Getter for the field waxFraction. + *

+ * + * @return the waxFraction + */ + public double[] getWaxFraction() { + return waxFraction; + } - /** - *

- * Getter for the field gasViscosity. - *

- * - * @return the gasViscosity - */ - public double[] getGasViscosity() { - return gasViscosity; - } + /** + *

+ * Getter for the field gasViscosity. + *

+ * + * @return the gasViscosity + */ + public double[] getGasViscosity() { + return gasViscosity; + } - /** - *

- * Getter for the field oilViscosity. - *

- * - * @return the oilViscosity - */ - public double[] getOilViscosity() { - return oilViscosity; - } + /** + *

+ * Getter for the field oilViscosity. + *

+ * + * @return the oilViscosity + */ + public double[] getOilViscosity() { + return oilViscosity; + } - /** - *

- * Getter for the field aqueousViscosity. - *

- * - * @return the aqueousViscosity - */ - public double[] getAqueousViscosity() { - return aqueousViscosity; - } + /** + *

+ * Getter for the field aqueousViscosity. + *

+ * + * @return the aqueousViscosity + */ + public double[] getAqueousViscosity() { + return aqueousViscosity; + } - /** - *

- * Getter for the field shareRate. - *

- * - * @return the shareRate - */ - public double[] getShareRate() { - return shareRate; - } + /** + *

+ * Getter for the field shareRate. + *

+ * + * @return the shareRate + */ + public double[] getShareRate() { + return shareRate; + } - /** - *

- * Setter for the field shareRate. - *

- * - * @param shareRate the shareRate to set - */ - public void setShareRate(double[] shareRate) { - this.shareRate = shareRate; - } + /** + *

+ * Setter for the field shareRate. + *

+ * + * @param shareRate the shareRate to set + */ + public void setShareRate(double[] shareRate) { + this.shareRate = shareRate; + } - /** - *

- * Getter for the field oilwaxDispersionViscosity. - *

- * - * @return the oilwaxDispersionViscosity - */ - public double[] getOilwaxDispersionViscosity() { - return oilwaxDispersionViscosity; - } + /** + *

+ * Getter for the field oilwaxDispersionViscosity. + *

+ * + * @return the oilwaxDispersionViscosity + */ + public double[] getOilwaxDispersionViscosity() { + return oilwaxDispersionViscosity; + } } diff --git a/src/main/java/neqsim/PVTsimulation/simulation/WaxFractionSim.java b/src/main/java/neqsim/PVTsimulation/simulation/WaxFractionSim.java index 12f2491752..f4a6e4778a 100644 --- a/src/main/java/neqsim/PVTsimulation/simulation/WaxFractionSim.java +++ b/src/main/java/neqsim/PVTsimulation/simulation/WaxFractionSim.java @@ -1,6 +1,8 @@ package neqsim.PVTsimulation.simulation; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.PVTsimulation.util.parameterfitting.WaxFunction; import neqsim.statistics.parameterFitting.SampleSet; import neqsim.statistics.parameterFitting.SampleValue; @@ -17,204 +19,207 @@ * @version $Id: $Id */ public class WaxFractionSim extends BasePVTsimulation { - double[] temperature = null; - - double[] pressure = null; - private double[] waxFraction = null; - double[] Sm3gas, m3oil; - private double[] Bofactor; - private double[] GOR = null; - double oilVolumeStdCond = 0; - - /** - *

- * Constructor for WaxFractionSim. - *

- * - * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public WaxFractionSim(SystemInterface tempSystem) { - super(tempSystem); - temperature = new double[1]; - pressure = new double[1]; - temperature[0] = tempSystem.getTemperature(); - pressure[0] = tempSystem.getPressure(); - } - - /** - *

- * setTemperaturesAndPressures. - *

- * - * @param temperature an array of {@link double} objects - * @param pressure an array of {@link double} objects - */ - public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { - this.pressure = pressure; - this.temperature = temperature; - experimentalData = new double[temperature.length][1]; - } - - /** - *

- * runTuning. - *

- */ - public void runTuning() { - ArrayList sampleList = new ArrayList(); - - try { - System.out.println("adding...."); - - for (int i = 0; i < experimentalData[0].length; i++) { - WaxFunction function = new WaxFunction(); - double guess[] = new double[optimizer.getNumberOfTuningParameters()];// getThermoSystem().getWaxModel().getWaxParameters(); - - ArrayList guessArray = new ArrayList(); - for (int p = 0; p < 3; p++) { - guessArray.add(getThermoSystem().getWaxModel().getWaxParameters()[p]); - } - guessArray.add(getThermoSystem().getWaxModel().getParameterWaxHeatOfFusion()[0]); - guessArray.add( - getThermoSystem().getWaxModel().getParameterWaxTriplePointTemperature()[0]); - - for (int o = 0; o < guess.length; o++) { - guess[o] = guessArray.get(o); - } - // guess = guessArray.subList(0, optimizer.getNumberOfTuningParameters()-1); - - function.setInitialGuess(guess); - - SystemInterface tempSystem = getThermoSystem(); // getThermoSystem().clone(); - - tempSystem.setTemperature(temperature[i]); - tempSystem.setPressure(pressure[i]); - thermoOps.TPflash(); - // tempSystem.display(); - double sample1[] = {temperature[i]}; - double waxContent = experimentalData[0][i]; - double standardDeviation1[] = {1.5}; - SampleValue sample = new SampleValue(waxContent, waxContent / 10.0 + 0.1, sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(tempSystem); - sampleList.add(sample); - } - } catch (Exception e) { - System.out.println("database error" + e); + static Logger logger = LogManager.getLogger(WaxFractionSim.class); + + double[] temperature = null; + + double[] pressure = null; + private double[] waxFraction = null; + double[] Sm3gas; + double[] m3oil; + + private double[] Bofactor; + private double[] GOR = null; + double oilVolumeStdCond = 0; + + /** + *

+ * Constructor for WaxFractionSim. + *

+ * + * @param tempSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public WaxFractionSim(SystemInterface tempSystem) { + super(tempSystem); + temperature = new double[1]; + pressure = new double[1]; + temperature[0] = tempSystem.getTemperature(); + pressure[0] = tempSystem.getPressure(); + } + + /** + *

+ * setTemperaturesAndPressures. + *

+ * + * @param temperature an array of type double + * @param pressure an array of type double + */ + public void setTemperaturesAndPressures(double[] temperature, double[] pressure) { + this.pressure = pressure; + this.temperature = temperature; + experimentalData = new double[temperature.length][1]; + } + + /** + *

+ * runTuning. + *

+ */ + public void runTuning() { + ArrayList sampleList = new ArrayList(); + + try { + System.out.println("adding...."); + + for (int i = 0; i < experimentalData[0].length; i++) { + ArrayList guessArray = new ArrayList(); + for (int p = 0; p < 3; p++) { + guessArray.add(getThermoSystem().getWaxModel().getWaxParameters()[p]); } + guessArray.add(getThermoSystem().getWaxModel().getParameterWaxHeatOfFusion()[0]); + guessArray.add(getThermoSystem().getWaxModel().getParameterWaxTriplePointTemperature()[0]); - SampleSet sampleSet = new SampleSet(sampleList); - - optimizer.setSampleSet(sampleSet); - optimizer.solve(); - // runCalc(); - // optim.displayCurveFit(); - } - - /** - *

- * runCalc. - *

- */ - public void runCalc() { - Sm3gas = new double[pressure.length]; - m3oil = new double[pressure.length]; - GOR = new double[pressure.length]; - waxFraction = new double[pressure.length]; - Bofactor = new double[pressure.length]; - for (int i = 0; i < pressure.length; i++) { - // thermoOps.setSystem(getThermoSystem()); - getThermoSystem().setPressure(pressure[i]); - getThermoSystem().setTemperature(temperature[i]); - thermoOps.TPflash(); - waxFraction[i] = 0.0; - if (getThermoSystem().hasPhaseType("wax")) { - waxFraction[i] = getThermoSystem() - .getWtFraction(getThermoSystem().getPhaseNumberOfPhase("wax")); - } - // System.out.println("wax fraction " + waxFraction[i]); + // double[] guess = getThermoSystem().getWaxModel().getWaxParameters(); + double[] guess = new double[optimizer.getNumberOfTuningParameters()]; + for (int o = 0; o < guess.length; o++) { + guess[o] = guessArray.get(o); } + // guess = guessArray.subList(0, optimizer.getNumberOfTuningParameters()-1); + + WaxFunction function = new WaxFunction(); + function.setInitialGuess(guess); + + SystemInterface tempSystem = getThermoSystem(); // getThermoSystem().clone(); + + tempSystem.setTemperature(temperature[i]); + tempSystem.setPressure(pressure[i]); + thermoOps.TPflash(); + // tempSystem.display(); + double[] sample1 = {temperature[i]}; + double waxContent = experimentalData[0][i]; + double[] standardDeviation1 = {1.5}; + SampleValue sample = + new SampleValue(waxContent, waxContent / 10.0 + 0.1, sample1, standardDeviation1); + sample.setFunction(function); + sample.setThermodynamicSystem(tempSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - NeqSimDataBase.setConnectionString( - "jdbc:derby:C:/Users/esol/OneDrive - Equinor/temp/neqsimthermodatabase"); - NeqSimDataBase.setCreateTemporaryTables(true); - - SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); - tempSystem.addComponent("methane", 6.78); - - tempSystem.addTBPfraction("C19", 10.13, 170.0 / 1000.0, 0.7814); - tempSystem.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.850871882888); - - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.getWaxModel().addTBPWax(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); - tempSystem.addSolidComplexPhase("wax"); - tempSystem.setMultiphaseWaxCheck(true); - tempSystem.setMultiPhaseCheck(true); - tempSystem.init(0); - tempSystem.init(1); - - WaxFractionSim sepSim = new WaxFractionSim(tempSystem); - double[] temps = {293.15, 283.15, 273.15, 264.15, 263, 262, 261}; - double[] pres = {5, 5, 5.0, 5.0, 5.0, 5.0, 5.0}; - sepSim.setTemperaturesAndPressures(temps, pres); - - sepSim.runCalc(); - sepSim.getThermoSystem().display(); - double[][] expData = {{4, 7, 9, 10, 11, 12, 13}}; - sepSim.setExperimentalData(expData); - // String[] params = {"Mplus", "waxParam1", "waxParam2"}; - // sepSim.getOptimizer().setTuningParameters("") - sepSim.getOptimizer().setNumberOfTuningParameters(3); - sepSim.getOptimizer().setMaxNumberOfIterations(20); - sepSim.runTuning(); - sepSim.runCalc(); - // double a = sepSim.getWaxFraction()[0]; - - // sepSim.tuneModel(exptemperatures, exppressures, expwaxFrations); - } - - /** - *

- * getGOR. - *

- * - * @return the GOR - */ - public double[] getGOR() { - return GOR; - } - - /** - *

- * getBofactor. - *

- * - * @return the Bofactor - */ - public double[] getBofactor() { - return Bofactor; - } - - /** - *

- * Getter for the field waxFraction. - *

- * - * @return the waxFraction - */ - public double[] getWaxFraction() { - return waxFraction; + SampleSet sampleSet = new SampleSet(sampleList); + + optimizer.setSampleSet(sampleSet); + optimizer.solve(); + // runCalc(); + // optim.displayCurveFit(); + } + + /** + *

+ * runCalc. + *

+ */ + public void runCalc() { + Sm3gas = new double[pressure.length]; + m3oil = new double[pressure.length]; + GOR = new double[pressure.length]; + waxFraction = new double[pressure.length]; + Bofactor = new double[pressure.length]; + for (int i = 0; i < pressure.length; i++) { + // thermoOps.setSystem(getThermoSystem()); + getThermoSystem().setPressure(pressure[i]); + getThermoSystem().setTemperature(temperature[i]); + thermoOps.TPflash(); + waxFraction[i] = 0.0; + if (getThermoSystem().hasPhaseType("wax")) { + waxFraction[i] = + getThermoSystem().getWtFraction(getThermoSystem().getPhaseNumberOfPhase("wax")); + } + // System.out.println("wax fraction " + waxFraction[i]); } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + NeqSimDataBase.setConnectionString( + "jdbc:derby:C:/Users/esol/OneDrive - Equinor/temp/neqsimthermodatabase"); + NeqSimDataBase.setCreateTemporaryTables(true); + + SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); + tempSystem.addComponent("methane", 6.78); + + tempSystem.addTBPfraction("C19", 10.13, 170.0 / 1000.0, 0.7814); + tempSystem.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.850871882888); + + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.getWaxModel().addTBPWax(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + tempSystem.addSolidComplexPhase("wax"); + tempSystem.setMultiphaseWaxCheck(true); + tempSystem.setMultiPhaseCheck(true); + tempSystem.init(0); + tempSystem.init(1); + + WaxFractionSim sepSim = new WaxFractionSim(tempSystem); + double[] temps = {293.15, 283.15, 273.15, 264.15, 263, 262, 261}; + double[] pres = {5, 5, 5.0, 5.0, 5.0, 5.0, 5.0}; + sepSim.setTemperaturesAndPressures(temps, pres); + + sepSim.runCalc(); + sepSim.getThermoSystem().display(); + double[][] expData = {{4, 7, 9, 10, 11, 12, 13}}; + sepSim.setExperimentalData(expData); + // String[] params = {"Mplus", "waxParam1", "waxParam2"}; + // sepSim.getOptimizer().setTuningParameters("") + sepSim.getOptimizer().setNumberOfTuningParameters(3); + sepSim.getOptimizer().setMaxNumberOfIterations(20); + sepSim.runTuning(); + sepSim.runCalc(); + // double a = sepSim.getWaxFraction()[0]; + + // sepSim.tuneModel(exptemperatures, exppressures, expwaxFrations); + } + + /** + *

+ * getGOR. + *

+ * + * @return the GOR + */ + public double[] getGOR() { + return GOR; + } + + /** + *

+ * getBofactor. + *

+ * + * @return the Bofactor + */ + public double[] getBofactor() { + return Bofactor; + } + + /** + *

+ * Getter for the field waxFraction. + *

+ * + * @return the waxFraction + */ + public double[] getWaxFraction() { + return waxFraction; + } } diff --git a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/CMEFunction.java b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/CMEFunction.java index 3350f62dc9..078dac3c29 100644 --- a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/CMEFunction.java +++ b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/CMEFunction.java @@ -12,96 +12,98 @@ * @version $Id: $Id */ public class CMEFunction extends LevenbergMarquardtFunction { - double molarMass = 0.0; - double saturationVolume = 0, saturationPressure = 0; - double Zsaturation = 0; + double molarMass = 0.0; + double saturationVolume = 0; + double saturationPressure = 0; + double Zsaturation = 0; - /** - *

- * Constructor for CMEFunction. - *

- */ - public CMEFunction() { - params = new double[3]; - } + /** + *

+ * Constructor for CMEFunction. + *

+ */ + public CMEFunction() { + params = new double[3]; + } - /** - *

- * calcSaturationConditions. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object + /** + *

+ * calcSaturationConditions. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void calcSaturationConditions(SystemInterface system) { + do { + system.setPressure(system.getPressure() + 10.0); + thermoOps.TPflash(); + } while (system.getNumberOfPhases() > 1); + double minPres = system.getPressure() - 10.0; + double maxPres = system.getPressure(); + do { + system.setPressure((minPres + maxPres) / 2.0); + thermoOps.TPflash(); + if (system.getNumberOfPhases() > 1) { + minPres = system.getPressure(); + } else { + maxPres = system.getPressure(); + } + } while (Math.abs(maxPres - minPres) > 1e-5); + /* + * try { thermoOps.dewPointPressureFlash(); } catch (Exception ex) { + * logger.error(ex.getMessage(), ex); } */ - public void calcSaturationConditions(SystemInterface system) { - do { - system.setPressure(system.getPressure() + 10.0); - thermoOps.TPflash(); - } while (system.getNumberOfPhases() > 1); - double minPres = system.getPressure() - 10.0; - double maxPres = system.getPressure(); - do { - system.setPressure((minPres + maxPres) / 2.0); - thermoOps.TPflash(); - if (system.getNumberOfPhases() > 1) { - minPres = system.getPressure(); - } else { - maxPres = system.getPressure(); - } - } while (Math.abs(maxPres - minPres) > 1e-5); - /* - * try { thermoOps.dewPointPressureFlash(); } catch (Exception e) { e.printStackTrace(); } - */ - saturationVolume = system.getVolume(); - saturationPressure = system.getPressure(); - Zsaturation = system.getZ(); - } + saturationVolume = system.getVolume(); + saturationPressure = system.getPressure(); + Zsaturation = system.getZ(); + } - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - int plusNumber = 0; - molarMass = params[0]; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { - plusNumber = i; - } - } - SystemInterface tempSystem = system.clone(); - tempSystem.resetCharacterisation(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(system.getMixingRule()); + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + int plusNumber = 0; + molarMass = params[0]; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { + plusNumber = i; + } + } + SystemInterface tempSystem = system.clone(); + tempSystem.resetCharacterisation(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(system.getMixingRule()); - tempSystem.getPhase(0).getComponent(plusNumber).setMolarMass(molarMass); - tempSystem.getPhase(1).getComponent(plusNumber).setMolarMass(molarMass); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(system.getMixingRule()); - tempSystem.init(0); - tempSystem.init(1); - thermoOps.setSystem(tempSystem); - calcSaturationConditions(tempSystem); - tempSystem.setTemperature(dependentValues[0]); - tempSystem.setPressure(dependentValues[1]); - // thermoOps.setSystem(tempSystem); - thermoOps.TPflash(); + tempSystem.getPhase(0).getComponent(plusNumber).setMolarMass(molarMass); + tempSystem.getPhase(1).getComponent(plusNumber).setMolarMass(molarMass); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(system.getMixingRule()); + tempSystem.init(0); + tempSystem.init(1); + thermoOps.setSystem(tempSystem); + calcSaturationConditions(tempSystem); + tempSystem.setTemperature(dependentValues[0]); + tempSystem.setPressure(dependentValues[1]); + // thermoOps.setSystem(tempSystem); + thermoOps.TPflash(); - double totalVolume = tempSystem.getVolume(); - // system.display(); - return totalVolume / saturationVolume; // %wax - } + double totalVolume = tempSystem.getVolume(); + // system.display(); + return totalVolume / saturationVolume; // %wax + } - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - int plusNumber = 0; - for (int ii = 0; ii < system.getPhase(0).getNumberOfComponents(); ii++) { - if (system.getPhase(0).getComponent(ii).isIsPlusFraction()) { - plusNumber = ii; - } - } - system.getPhase(0).getComponent(plusNumber).setMolarMass(value); - system.getPhase(1).getComponent(plusNumber).setMolarMass(value); - // system.get + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; + int plusNumber = 0; + for (int ii = 0; ii < system.getPhase(0).getNumberOfComponents(); ii++) { + if (system.getPhase(0).getComponent(ii).isIsPlusFraction()) { + plusNumber = ii; + } } + system.getPhase(0).getComponent(plusNumber).setMolarMass(value); + system.getPhase(1).getComponent(plusNumber).setMolarMass(value); + // system.get + } } diff --git a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/CVDFunction.java b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/CVDFunction.java index e4eaf03123..34b296a4f7 100644 --- a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/CVDFunction.java +++ b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/CVDFunction.java @@ -12,90 +12,92 @@ * @version $Id: $Id */ public class CVDFunction extends LevenbergMarquardtFunction { - double molarMass = 0.0; - double saturationVolume = 0, saturationPressure = 0; - double Zsaturation = 0; + double molarMass = 0.0; + double saturationVolume = 0; + double saturationPressure = 0; + double Zsaturation = 0; - /** - *

- * Constructor for CVDFunction. - *

- */ - public CVDFunction() { - params = new double[3]; - } + /** + *

+ * Constructor for CVDFunction. + *

+ */ + public CVDFunction() { + params = new double[3]; + } - /** - *

- * calcSaturationConditions. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object + /** + *

+ * calcSaturationConditions. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void calcSaturationConditions(SystemInterface system) { + do { + system.setPressure(system.getPressure() + 10.0); + thermoOps.TPflash(); + } while (system.getNumberOfPhases() > 1); + double minPres = system.getPressure() - 10.0; + double maxPres = system.getPressure(); + do { + system.setPressure((minPres + maxPres) / 2.0); + thermoOps.TPflash(); + if (system.getNumberOfPhases() > 1) { + minPres = system.getPressure(); + } else { + maxPres = system.getPressure(); + } + } while (Math.abs(maxPres - minPres) > 1e-5); + /* + * try { thermoOps.dewPointPressureFlash(); } catch (Exception ex) { + * logger.error(ex.getMessage(), ex); } */ - public void calcSaturationConditions(SystemInterface system) { - do { - system.setPressure(system.getPressure() + 10.0); - thermoOps.TPflash(); - } while (system.getNumberOfPhases() > 1); - double minPres = system.getPressure() - 10.0; - double maxPres = system.getPressure(); - do { - system.setPressure((minPres + maxPres) / 2.0); - thermoOps.TPflash(); - if (system.getNumberOfPhases() > 1) { - minPres = system.getPressure(); - } else { - maxPres = system.getPressure(); - } - } while (Math.abs(maxPres - minPres) > 1e-5); - /* - * try { thermoOps.dewPointPressureFlash(); } catch (Exception e) { e.printStackTrace(); } - */ - saturationVolume = system.getVolume(); - saturationPressure = system.getPressure(); - Zsaturation = system.getZ(); - } + saturationVolume = system.getVolume(); + saturationPressure = system.getPressure(); + Zsaturation = system.getZ(); + } - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - int plusNumber = 0; - molarMass = params[0]; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { - plusNumber = i; - } - } - SystemInterface tempSystem = system.clone(); - tempSystem.resetCharacterisation(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(system.getMixingRule()); + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + int plusNumber = 0; + molarMass = params[0]; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { + plusNumber = i; + } + } + SystemInterface tempSystem = system.clone(); + tempSystem.resetCharacterisation(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(system.getMixingRule()); - tempSystem.getPhase(0).getComponent(plusNumber).setMolarMass(molarMass); - tempSystem.getPhase(1).getComponent(plusNumber).setMolarMass(molarMass); - tempSystem.setTemperature(dependentValues[0]); - tempSystem.setPressure(500.0); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(system.getMixingRule()); - tempSystem.init(0); - tempSystem.init(1); - thermoOps.setSystem(tempSystem); - calcSaturationConditions(tempSystem); - tempSystem.setTemperature(dependentValues[0]); - tempSystem.setPressure(dependentValues[1]); - // thermoOps.setSystem(tempSystem); - thermoOps.TPflash(); + tempSystem.getPhase(0).getComponent(plusNumber).setMolarMass(molarMass); + tempSystem.getPhase(1).getComponent(plusNumber).setMolarMass(molarMass); + tempSystem.setTemperature(dependentValues[0]); + tempSystem.setPressure(500.0); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(system.getMixingRule()); + tempSystem.init(0); + tempSystem.init(1); + thermoOps.setSystem(tempSystem); + calcSaturationConditions(tempSystem); + tempSystem.setTemperature(dependentValues[0]); + tempSystem.setPressure(dependentValues[1]); + // thermoOps.setSystem(tempSystem); + thermoOps.TPflash(); - double totalVolume = tempSystem.getVolume(); - // system.display(); - return totalVolume / saturationVolume; // %wax - } + double totalVolume = tempSystem.getVolume(); + // system.display(); + return totalVolume / saturationVolume; // %wax + } - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - // system.get - } + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; + // system.get + } } diff --git a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/DensityFunction.java b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/DensityFunction.java index 55163102dd..2fe6c85640 100644 --- a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/DensityFunction.java +++ b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/DensityFunction.java @@ -11,31 +11,31 @@ * @version $Id: $Id */ public class DensityFunction extends LevenbergMarquardtFunction { - double molarMass = 0.0; + double molarMass = 0.0; - /** - *

- * Constructor for DensityFunction. - *

- */ - public DensityFunction() { - params = new double[1]; - } + /** + *

+ * Constructor for DensityFunction. + *

+ */ + public DensityFunction() { + params = new double[1]; + } - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - thermoOps.TPflash(); - system.initPhysicalProperties(); + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + system.setTemperature(dependentValues[0]); + thermoOps.TPflash(); + system.initPhysicalProperties(); - // system.display(); - return system.getPhase(0).getPhysicalProperties().getDensity(); - } + // system.display(); + return system.getPhase(0).getPhysicalProperties().getDensity(); + } - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - } + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; + } } diff --git a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/FunctionJohanSverderup.java b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/FunctionJohanSverderup.java index 432e327c08..7e0d5fff52 100644 --- a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/FunctionJohanSverderup.java +++ b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/FunctionJohanSverderup.java @@ -12,35 +12,34 @@ * @version $Id: $Id */ public class FunctionJohanSverderup extends LevenbergMarquardtFunction { - double molarMass = 0.0; + double molarMass = 0.0; - /** - *

- * Constructor for FunctionJohanSverderup. - *

- */ - public FunctionJohanSverderup() { - params = new double[1]; - } + /** + *

+ * Constructor for FunctionJohanSverderup. + *

+ */ + public FunctionJohanSverderup() { + params = new double[1]; + } - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.addComponent("methane", - -system.getPhase(0).getComponent("methane").getNumberOfmoles()); - system.addComponent("methane", params[0]); - system.init_x_y(); - system.init(1); - system.setPressure(system.getPressure() - 25.0); - SaturationPressure satCalc = new SaturationPressure(system); - double satPres = satCalc.calcSaturationPressure(); + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + system.addComponent("methane", -system.getPhase(0).getComponent("methane").getNumberOfmoles()); + system.addComponent("methane", params[0]); + system.init_x_y(); + system.init(1); + system.setPressure(system.getPressure() - 25.0); + SaturationPressure satCalc = new SaturationPressure(system); + double satPres = satCalc.calcSaturationPressure(); - return satPres; - } + return satPres; + } - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - } + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; + } } diff --git a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/SaturationPressureFunction.java b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/SaturationPressureFunction.java index 9ca7717173..b12d9daadd 100644 --- a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/SaturationPressureFunction.java +++ b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/SaturationPressureFunction.java @@ -13,51 +13,51 @@ * @version $Id: $Id */ public class SaturationPressureFunction extends LevenbergMarquardtFunction { - double molarMass = 0.0; + double molarMass = 0.0; - /** - *

- * Constructor for SaturationPressureFunction. - *

- */ - public SaturationPressureFunction() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - int plusNumber = 0; - molarMass = params[0]; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { - plusNumber = i; - } - } - SystemInterface tempSystem = system.clone(); - tempSystem.resetCharacterisation(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(system.getMixingRule()); + /** + *

+ * Constructor for SaturationPressureFunction. + *

+ */ + public SaturationPressureFunction() { + params = new double[1]; + } - tempSystem.getPhase(0).getComponent(plusNumber).setMolarMass(molarMass); - tempSystem.getPhase(1).getComponent(plusNumber).setMolarMass(molarMass); - tempSystem.setTemperature(dependentValues[0]); - tempSystem.setPressure(50.0); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(system.getMixingRule()); - tempSystem.init(0); - tempSystem.init(1); - // \\tempSystem.display(); - SaturationPressure satCalc = new SaturationPressure(tempSystem); - double satPres = satCalc.calcSaturationPressure(); - // tempSystem.display(); - return satPres; + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + int plusNumber = 0; + molarMass = params[0]; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { + plusNumber = i; + } } + SystemInterface tempSystem = system.clone(); + tempSystem.resetCharacterisation(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(system.getMixingRule()); - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - } + tempSystem.getPhase(0).getComponent(plusNumber).setMolarMass(molarMass); + tempSystem.getPhase(1).getComponent(plusNumber).setMolarMass(molarMass); + tempSystem.setTemperature(dependentValues[0]); + tempSystem.setPressure(50.0); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(system.getMixingRule()); + tempSystem.init(0); + tempSystem.init(1); + // \\tempSystem.display(); + SaturationPressure satCalc = new SaturationPressure(tempSystem); + double satPres = satCalc.calcSaturationPressure(); + // tempSystem.display(); + return satPres; + } + + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; + } } diff --git a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestFitToOilFieldFluid.java b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestFitToOilFieldFluid.java index e831ff444a..94faf5751e 100644 --- a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestFitToOilFieldFluid.java +++ b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestFitToOilFieldFluid.java @@ -1,6 +1,8 @@ package neqsim.PVTsimulation.util.parameterfitting; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.statistics.parameterFitting.SampleSet; import neqsim.statistics.parameterFitting.SampleValue; import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; @@ -16,63 +18,65 @@ * @version $Id: $Id */ public class TestFitToOilFieldFluid { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); + static Logger logger = LogManager.getLogger(TestFitToOilFieldFluid.class); - try { - System.out.println("adding...."); - int i = 0; - while (i < 1) { - i++; - FunctionJohanSverderup function = new FunctionJohanSverderup(); - double guess[] = {17.90}; - SystemInterface tempSystem = new SystemSrkEos(273.15 + 83.5, 50.0); - tempSystem.addComponent("nitrogen", 0.586); - tempSystem.addComponent("CO2", 0.087); - tempSystem.addComponent("methane", 17.0209); - tempSystem.addComponent("ethane", 5.176); - tempSystem.addComponent("propane", 6.652); - tempSystem.addComponent("i-butane", 1.533); - tempSystem.addComponent("n-butane", 3.544); - tempSystem.addComponent("i-pentane", 1.585); - tempSystem.addComponent("n-pentane", 2.036); - tempSystem.addTBPfraction("C6", 2.879, 84.9 / 1000.0, 0.6668); - tempSystem.addTBPfraction("C7", 4.435, 93.2 / 1000.0, 0.7243); - tempSystem.addTBPfraction("C8", 4.815, 105.7 / 1000.0, 0.7527); - tempSystem.addTBPfraction("C9", 3.488, 119.8 / 1000.0, 0.7743); - tempSystem.addPlusFraction("C10", 45.944, 320.0 / 1000.0, 0.924); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); - tempSystem.init(0); - tempSystem.init(1); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + ArrayList sampleList = new ArrayList(); - double sample1[] = {273.15 + 100}; - double satPres = 75.0; - double standardDeviation1[] = {75.0 / 100.0}; - SampleValue sample = - new SampleValue(satPres, satPres / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - function.setInitialGuess(guess); - sample.setThermodynamicSystem(tempSystem); - sampleList.add(sample); - } - } catch (Exception e) { - System.out.println("database error" + e); - } + try { + System.out.println("adding...."); + int i = 0; + while (i < 1) { + i++; - SampleSet sampleSet = new SampleSet(sampleList); - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setMaxNumberOfIterations(8); - optim.setSampleSet(sampleSet); - optim.solve(); - optim.displayCurveFit(); + SystemInterface tempSystem = new SystemSrkEos(273.15 + 83.5, 50.0); + tempSystem.addComponent("nitrogen", 0.586); + tempSystem.addComponent("CO2", 0.087); + tempSystem.addComponent("methane", 17.0209); + tempSystem.addComponent("ethane", 5.176); + tempSystem.addComponent("propane", 6.652); + tempSystem.addComponent("i-butane", 1.533); + tempSystem.addComponent("n-butane", 3.544); + tempSystem.addComponent("i-pentane", 1.585); + tempSystem.addComponent("n-pentane", 2.036); + tempSystem.addTBPfraction("C6", 2.879, 84.9 / 1000.0, 0.6668); + tempSystem.addTBPfraction("C7", 4.435, 93.2 / 1000.0, 0.7243); + tempSystem.addTBPfraction("C8", 4.815, 105.7 / 1000.0, 0.7527); + tempSystem.addTBPfraction("C9", 3.488, 119.8 / 1000.0, 0.7743); + tempSystem.addPlusFraction("C10", 45.944, 320.0 / 1000.0, 0.924); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + tempSystem.init(0); + tempSystem.init(1); + + double[] sample1 = {273.15 + 100}; + double satPres = 75.0; + double[] standardDeviation1 = {75.0 / 100.0}; + SampleValue sample = new SampleValue(satPres, satPres / 100.0, sample1, standardDeviation1); + FunctionJohanSverderup function = new FunctionJohanSverderup(); + double[] guess = {17.90}; + sample.setFunction(function); + function.setInitialGuess(guess); + sample.setThermodynamicSystem(tempSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); } + + SampleSet sampleSet = new SampleSet(sampleList); + LevenbergMarquardt optim = new LevenbergMarquardt(); + optim.setMaxNumberOfIterations(8); + optim.setSampleSet(sampleSet); + optim.solve(); + optim.displayCurveFit(); + } } diff --git a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestSaturationPresFunction.java b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestSaturationPresFunction.java index 701216d079..f7cd60e6da 100644 --- a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestSaturationPresFunction.java +++ b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestSaturationPresFunction.java @@ -1,6 +1,8 @@ package neqsim.PVTsimulation.util.parameterfitting; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.statistics.parameterFitting.SampleSet; import neqsim.statistics.parameterFitting.SampleValue; import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; @@ -16,70 +18,71 @@ * @version $Id: $Id */ public class TestSaturationPresFunction { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); + static Logger logger = LogManager.getLogger(TestSaturationPresFunction.class); - try { - System.out.println("adding...."); - int i = 0; - while (i < 1) { - SaturationPressureFunction function = new SaturationPressureFunction(); - double guess[] = {341.6 / 1000.0}; - function.setInitialGuess(guess); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + ArrayList sampleList = new ArrayList(); - SystemInterface tempSystem = new SystemSrkEos(273.15 + 120, 100.0); - tempSystem.addComponent("nitrogen", 0.34); - tempSystem.addComponent("CO2", 3.59); - tempSystem.addComponent("methane", 67.42); - tempSystem.addComponent("ethane", 9.02); - tempSystem.addComponent("propane", 4.31); - tempSystem.addComponent("i-butane", 0.93); - tempSystem.addComponent("n-butane", 1.71); - tempSystem.addComponent("i-pentane", 0.74); - tempSystem.addComponent("n-pentane", 0.85); - tempSystem.addComponent("n-hexane", 1.38); - tempSystem.addTBPfraction("C7", 1.5, 109.00 / 1000.0, 0.6912); - tempSystem.addTBPfraction("C8", 1.69, 120.20 / 1000.0, 0.7255); - tempSystem.addTBPfraction("C9", 1.14, 129.5 / 1000.0, 0.7454); - tempSystem.addTBPfraction("C10", 0.8, 135.3 / 1000.0, 0.7864); - tempSystem.addPlusFraction("C11", 4.58, 341.2 / 1000.0, 0.8398); - tempSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(12); - // tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); - tempSystem.init(0); - tempSystem.init(1); + try { + System.out.println("adding...."); + int i = 0; + while (i < 1) { + SaturationPressureFunction function = new SaturationPressureFunction(); + double[] guess = {341.6 / 1000.0}; + function.setInitialGuess(guess); - double sample1[] = {273.15 + 100}; - double satPres = 400.0; - double standardDeviation1[] = {1.5}; - SampleValue sample = - new SampleValue(satPres, satPres / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - function.setInitialGuess(guess); - sample.setThermodynamicSystem(tempSystem); - sampleList.add(sample); + SystemInterface tempSystem = new SystemSrkEos(273.15 + 120, 100.0); + tempSystem.addComponent("nitrogen", 0.34); + tempSystem.addComponent("CO2", 3.59); + tempSystem.addComponent("methane", 67.42); + tempSystem.addComponent("ethane", 9.02); + tempSystem.addComponent("propane", 4.31); + tempSystem.addComponent("i-butane", 0.93); + tempSystem.addComponent("n-butane", 1.71); + tempSystem.addComponent("i-pentane", 0.74); + tempSystem.addComponent("n-pentane", 0.85); + tempSystem.addComponent("n-hexane", 1.38); + tempSystem.addTBPfraction("C7", 1.5, 109.00 / 1000.0, 0.6912); + tempSystem.addTBPfraction("C8", 1.69, 120.20 / 1000.0, 0.7255); + tempSystem.addTBPfraction("C9", 1.14, 129.5 / 1000.0, 0.7454); + tempSystem.addTBPfraction("C10", 0.8, 135.3 / 1000.0, 0.7864); + tempSystem.addPlusFraction("C11", 4.58, 341.2 / 1000.0, 0.8398); + tempSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(12); + // tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + tempSystem.init(0); + tempSystem.init(1); - i++; - } - } catch (Exception e) { - System.out.println("database error" + e); - } + double[] sample1 = {273.15 + 100}; + double satPres = 400.0; + double[] standardDeviation1 = {1.5}; + SampleValue sample = new SampleValue(satPres, satPres / 100.0, sample1, standardDeviation1); + sample.setFunction(function); + function.setInitialGuess(guess); + sample.setThermodynamicSystem(tempSystem); + sampleList.add(sample); - SampleSet sampleSet = new SampleSet(sampleList); + i++; + } + } catch (Exception ex) { + logger.error("database error", ex); + } - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setMaxNumberOfIterations(5); + SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - optim.solve(); - optim.displayCurveFit(); - } + LevenbergMarquardt optim = new LevenbergMarquardt(); + optim.setMaxNumberOfIterations(5); + + optim.setSampleSet(sampleSet); + optim.solve(); + optim.displayCurveFit(); + } } diff --git a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestWaxTuning.java b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestWaxTuning.java index 0bc9f2ac00..91c21252d4 100644 --- a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestWaxTuning.java +++ b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/TestWaxTuning.java @@ -1,6 +1,8 @@ package neqsim.PVTsimulation.util.parameterfitting; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.statistics.parameterFitting.SampleSet; import neqsim.statistics.parameterFitting.SampleValue; import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; @@ -16,58 +18,60 @@ * @version $Id: $Id */ public class TestWaxTuning { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); + static Logger logger = LogManager.getLogger(TestWaxTuning.class); - try { - System.out.println("adding...."); - int i = 0; - while (i < 1) { - WaxFunction function = new WaxFunction(); - double guess[] = {1.074, 6.584e-4, 0.1915}; - function.setInitialGuess(guess); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + ArrayList sampleList = new ArrayList(); - SystemInterface tempSystem = new SystemSrkEos(273.15 + 20, 10.0); - tempSystem.addComponent("methane", 67.42); - tempSystem.addTBPfraction("C10", 10.8, 135.3 / 1000.0, 0.7864); - tempSystem.addPlusFraction("C11", 12.58, 456.2 / 1000.0, 0.89398); - tempSystem.getCharacterization().characterisePlusFraction(); - tempSystem.getWaxModel().addTBPWax(); - tempSystem.createDatabase(true); - tempSystem.setMixingRule(2); - tempSystem.addSolidComplexPhase("wax"); - tempSystem.setMultiphaseWaxCheck(true); - tempSystem.init(0); - tempSystem.init(1); + try { + System.out.println("adding...."); + int i = 0; + while (i < 1) { + WaxFunction function = new WaxFunction(); + double[] guess = {1.074, 6.584e-4, 0.1915}; + function.setInitialGuess(guess); - double sample1[] = {273.15 + 20.0}; - double waxContent = 2.0; - double standardDeviation1[] = {1.5}; - SampleValue sample = new SampleValue(waxContent, waxContent / 100.0, sample1, - standardDeviation1); - sample.setFunction(function); - function.setInitialGuess(guess); - sample.setThermodynamicSystem(tempSystem); - sampleList.add(sample); - } - } catch (Exception e) { - System.out.println("database error" + e); - } + SystemInterface tempSystem = new SystemSrkEos(273.15 + 20, 10.0); + tempSystem.addComponent("methane", 67.42); + tempSystem.addTBPfraction("C10", 10.8, 135.3 / 1000.0, 0.7864); + tempSystem.addPlusFraction("C11", 12.58, 456.2 / 1000.0, 0.89398); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.getWaxModel().addTBPWax(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + tempSystem.addSolidComplexPhase("wax"); + tempSystem.setMultiphaseWaxCheck(true); + tempSystem.init(0); + tempSystem.init(1); - SampleSet sampleSet = new SampleSet(sampleList); + double[] sample1 = {273.15 + 20.0}; + double waxContent = 2.0; + double[] standardDeviation1 = {1.5}; + SampleValue sample = + new SampleValue(waxContent, waxContent / 100.0, sample1, standardDeviation1); + sample.setFunction(function); + function.setInitialGuess(guess); + sample.setThermodynamicSystem(tempSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); + } - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setMaxNumberOfIterations(5); + SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - // optim.solve(); - optim.displayCurveFit(); - } + LevenbergMarquardt optim = new LevenbergMarquardt(); + optim.setMaxNumberOfIterations(5); + + optim.setSampleSet(sampleSet); + // optim.solve(); + optim.displayCurveFit(); + } } diff --git a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/ViscosityFunction.java b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/ViscosityFunction.java index ae7659896d..03dabd1b7a 100644 --- a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/ViscosityFunction.java +++ b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/ViscosityFunction.java @@ -12,51 +12,51 @@ * @version $Id: $Id */ public class ViscosityFunction extends LevenbergMarquardtFunction { - double molarMass = 0.0; - boolean includeWaxEmulsionViscosity = true; + double molarMass = 0.0; + boolean includeWaxEmulsionViscosity = true; - /** - *

- * Constructor for ViscosityFunction. - *

- */ - public ViscosityFunction() { - params = new double[1]; - } + /** + *

+ * Constructor for ViscosityFunction. + *

+ */ + public ViscosityFunction() { + params = new double[1]; + } - /** - *

- * Constructor for ViscosityFunction. - *

- * - * @param includeWax a boolean - */ - public ViscosityFunction(boolean includeWax) { - params = new double[1]; - includeWaxEmulsionViscosity = includeWax; - } + /** + *

+ * Constructor for ViscosityFunction. + *

+ * + * @param includeWax a boolean + */ + public ViscosityFunction(boolean includeWax) { + params = new double[1]; + includeWaxEmulsionViscosity = includeWax; + } - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - thermoOps.TPflash(); - system.initPhysicalProperties(); - double waxFraction = 0.0; - if (system.hasPhaseType("wax") && includeWaxEmulsionViscosity) { - waxFraction = system.getWtFraction(system.getPhaseNumberOfPhase("wax")); - return system.getPhase(0).getPhysicalProperties().getViscosityOfWaxyOil(waxFraction, - dependentValues[0]); // %wax - } - // system.display(); - return system.getPhase(0).getPhysicalProperties().getViscosity(); // %wax + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + thermoOps.TPflash(); + system.initPhysicalProperties(); + double waxFraction = 0.0; + if (system.hasPhaseType("wax") && includeWaxEmulsionViscosity) { + waxFraction = system.getWtFraction(system.getPhaseNumberOfPhase("wax")); + return system.getPhase(0).getPhysicalProperties().getViscosityOfWaxyOil(waxFraction, + dependentValues[0]); // %wax } + // system.display(); + return system.getPhase(0).getPhysicalProperties().getViscosity(); // %wax + } - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; - ((FrictionTheoryViscosityMethod) system.getPhase(0).getPhysicalProperties() - .getViscosityModel()).setTBPviscosityCorrection(value); - } + ((FrictionTheoryViscosityMethod) system.getPhase(0).getPhysicalProperties().getViscosityModel()) + .setTBPviscosityCorrection(value); + } } diff --git a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/WaxFunction.java b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/WaxFunction.java index 3f92961289..63b494975e 100644 --- a/src/main/java/neqsim/PVTsimulation/util/parameterfitting/WaxFunction.java +++ b/src/main/java/neqsim/PVTsimulation/util/parameterfitting/WaxFunction.java @@ -11,42 +11,42 @@ * @version $Id: $Id */ public class WaxFunction extends LevenbergMarquardtFunction { - double molarMass = 0.0; + double molarMass = 0.0; - /** - *

- * Constructor for WaxFunction. - *

- */ - public WaxFunction() { - params = new double[3]; - } + /** + *

+ * Constructor for WaxFunction. + *

+ */ + public WaxFunction() { + params = new double[3]; + } - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - thermoOps.TPflash(); - double waxFraction = 0.0; - if (system.hasPhaseType("wax")) { - waxFraction = system.getWtFraction(system.getPhaseNumberOfPhase("wax")); - } - // system.display(); - return waxFraction * 100.0; // %wax + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + system.setTemperature(dependentValues[0]); + thermoOps.TPflash(); + double waxFraction = 0.0; + if (system.hasPhaseType("wax")) { + waxFraction = system.getWtFraction(system.getPhaseNumberOfPhase("wax")); } + // system.display(); + return waxFraction * 100.0; // %wax + } - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i < 3) { - system.getWaxModel().setWaxParameter(i, params[i]); - } else if (i == 3) { - system.getWaxModel().setParameterWaxHeatOfFusion(i - 3, value); - } else { - system.getWaxModel().setParameterWaxTriplePointTemperature(i - 4, value); - } - system.getWaxModel().removeWax(); - system.getWaxModel().addTBPWax(); + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; + if (i < 3) { + system.getWaxModel().setWaxParameter(i, params[i]); + } else if (i == 3) { + system.getWaxModel().setParameterWaxHeatOfFusion(i - 3, value); + } else { + system.getWaxModel().setParameterWaxTriplePointTemperature(i - 4, value); } + system.getWaxModel().removeWax(); + system.getWaxModel().addTBPWax(); + } } diff --git a/src/main/java/neqsim/api/ioc/CalculationResult.java b/src/main/java/neqsim/api/ioc/CalculationResult.java index 9ec8c61a9a..89dceb2a90 100644 --- a/src/main/java/neqsim/api/ioc/CalculationResult.java +++ b/src/main/java/neqsim/api/ioc/CalculationResult.java @@ -3,39 +3,54 @@ import java.util.Arrays; /** + *

+ * CalculationResult class. + *

* * @author jo.lyshoel + * @version $Id: $Id */ public class CalculationResult { public Double[][] fluidProperties; public String[] calculationError; - public CalculationResult() {} - + /** + *

+ * Constructor for CalculationResult. + *

+ * + * @param fluidProperties an array of {@link java.lang.Double} objects + * @param calculationError an array of {@link java.lang.String} objects + */ public CalculationResult(Double[][] fluidProperties, String[] calculationError) { this.fluidProperties = fluidProperties; this.calculationError = calculationError; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.hashCode(calculationError); - result = prime * result + Arrays.deepHashCode(fluidProperties); - return result; - } - + /** {@inheritDoc} */ @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } CalculationResult other = (CalculationResult) obj; return Arrays.equals(calculationError, other.calculationError) && Arrays.deepEquals(fluidProperties, other.fluidProperties); } + + /** {@inheritDoc} */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Arrays.hashCode(calculationError); + result = prime * result + Arrays.deepHashCode(fluidProperties); + return result; + } } diff --git a/src/main/java/neqsim/chemicalReactions/ChemicalReactionOperations.java b/src/main/java/neqsim/chemicalReactions/ChemicalReactionOperations.java index dabcf6c490..ce4e5bf703 100644 --- a/src/main/java/neqsim/chemicalReactions/ChemicalReactionOperations.java +++ b/src/main/java/neqsim/chemicalReactions/ChemicalReactionOperations.java @@ -3,10 +3,13 @@ * * Created on 4. februar 2001, 20:06 */ + package neqsim.chemicalReactions; import java.util.HashSet; import java.util.Iterator; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import Jama.Matrix; import neqsim.chemicalReactions.chemicalEquilibriaum.ChemicalEquilibrium; import neqsim.chemicalReactions.chemicalEquilibriaum.LinearProgrammingChemicalEquilibrium; @@ -25,511 +28,502 @@ * @version $Id: $Id */ public class ChemicalReactionOperations - implements neqsim.thermo.ThermodynamicConstantsInterface, Cloneable { - private static final long serialVersionUID = 1000; - - SystemInterface system; - ComponentInterface[] components; - ChemicalReactionList reactionList = new ChemicalReactionList(); - String[] componentNames; - String[] allComponentNames; - String[] elements; - double[][] Amatrix; - double[] nVector; - int iter = 0; - double[] bVector; - int phase = 1; - double[] chemRefPot; - double[] newMoles; - double inertMoles = 0.0; - ChemicalEquilibrium solver; - double deltaReactionHeat = 0.0; - boolean firsttime = false; - Kinetics kineticsSolver; - LinearProgrammingChemicalEquilibrium initCalc; - - /** - *

- * Constructor for ChemicalReactionOperations. - *

- */ - public ChemicalReactionOperations() {} - - /** - *

- * Constructor for ChemicalReactionOperations. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public ChemicalReactionOperations(SystemInterface system) { - initCalc = new LinearProgrammingChemicalEquilibrium(); - boolean newcomps = true; - int old = system.getPhase(0).getNumberOfComponents(); - this.system = system; - - do { - // if statement added by Procede - if (!newcomps) { - break; - } - componentNames = system.getComponentNames(); - reactionList.readReactions(system); - reactionList.removeJunkReactions(componentNames); - allComponentNames = reactionList.getAllComponents(); - this.addNewComponents(); - if (system.getPhase(0).getNumberOfComponents() == old) { - newcomps = false; - } - old = system.getPhase(0).getNumberOfComponents(); - } while (newcomps); - - components = new ComponentInterface[allComponentNames.length]; - if (components.length > 0) { - setReactiveComponents(); - reactionList.checkReactions(system.getPhase(1)); - chemRefPot = calcChemRefPot(1); - elements = getAllElements(); - - try { - initCalc = new LinearProgrammingChemicalEquilibrium(chemRefPot, components, - elements, this, 1); - } catch (Exception e) { - e.printStackTrace(); - } - setComponents(); - Amatrix = initCalc.getA(); - nVector = calcNVector(); - bVector = calcBVector(); - } else { - system.isChemicalSystem(false); - } - kineticsSolver = new Kinetics(this); + implements neqsim.thermo.ThermodynamicConstantsInterface, Cloneable { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ChemicalReactionOperations.class); + + SystemInterface system; + ComponentInterface[] components; + ChemicalReactionList reactionList = new ChemicalReactionList(); + String[] componentNames; + String[] allComponentNames; + String[] elements; + double[][] Amatrix; + double[] nVector; + int iter = 0; + double[] bVector; + int phase = 1; + double[] chemRefPot; + double[] newMoles; + double inertMoles = 0.0; + ChemicalEquilibrium solver; + double deltaReactionHeat = 0.0; + boolean firsttime = false; + Kinetics kineticsSolver; + LinearProgrammingChemicalEquilibrium initCalc; + + /** + *

+ * Constructor for ChemicalReactionOperations. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public ChemicalReactionOperations(SystemInterface system) { + boolean newcomps = true; + int old = system.getPhase(0).getNumberOfComponents(); + this.system = system; + + do { + // if statement added by Procede + if (!newcomps) { + break; + } + componentNames = system.getComponentNames(); + reactionList.readReactions(system); + reactionList.removeJunkReactions(componentNames); + allComponentNames = reactionList.getAllComponents(); + this.addNewComponents(); + if (system.getPhase(0).getNumberOfComponents() == old) { + newcomps = false; + } + old = system.getPhase(0).getNumberOfComponents(); + } while (newcomps); + + components = new ComponentInterface[allComponentNames.length]; + if (components.length > 0) { + setReactiveComponents(); + reactionList.checkReactions(system.getPhase(1)); + chemRefPot = calcChemRefPot(1); + elements = getAllElements(); + + try { + initCalc = + new LinearProgrammingChemicalEquilibrium(chemRefPot, components, elements, this, 1); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + setComponents(); + Amatrix = initCalc.getA(); + nVector = calcNVector(); + bVector = calcBVector(); + } else { + system.isChemicalSystem(false); } - - /** - *

- * Setter for the field system. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setSystem(SystemInterface system) { - this.system = system; + kineticsSolver = new Kinetics(this); + } + + /** + *

+ * Setter for the field system. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setSystem(SystemInterface system) { + this.system = system; + } + + /** {@inheritDoc} */ + @Override + public ChemicalReactionOperations clone() { + ChemicalReactionOperations clonedSystem = null; + try { + clonedSystem = (ChemicalReactionOperations) super.clone(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** {@inheritDoc} */ - @Override - public ChemicalReactionOperations clone() { - ChemicalReactionOperations clonedSystem = null; - try { - clonedSystem = (ChemicalReactionOperations) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - return clonedSystem; + return clonedSystem; + } + + /** + *

+ * Setter for the field components. + *

+ */ + public void setComponents() { + for (int j = 0; j < components.length; j++) { + system.getPhase(phase).getComponents()[components[j].getComponentNumber()] = components[j]; } - - /** - *

- * Setter for the field components. - *

- */ - public void setComponents() { - for (int j = 0; j < components.length; j++) { - system.getPhase(phase).getComponents()[components[j].getComponentNumber()] = - components[j]; - } + } + + /** + *

+ * Setter for the field components. + *

+ * + * @param phase a int + */ + public void setComponents(int phase) { + for (int j = 0; j < components.length; j++) { + system.getPhase(phase).getComponents()[components[j].getComponentNumber()] = components[j]; } - - /** - *

- * Setter for the field components. - *

- * - * @param phase a int - */ - public void setComponents(int phase) { - for (int j = 0; j < components.length; j++) { - system.getPhase(phase).getComponents()[components[j].getComponentNumber()] = - components[j]; - } + } + + /** + *

+ * setReactiveComponents. + *

+ * + * @param phase a int + */ + public void setReactiveComponents(int phase) { + for (int j = 0; j < components.length; j++) { + // System.out.println("comp " + components[j].getComponentNumber()); + components[j] = system.getPhase(phase).getComponent(components[j].getComponentNumber()); } - - /** - *

- * setReactiveComponents. - *

- * - * @param phase a int - */ - public void setReactiveComponents(int phase) { - for (int j = 0; j < components.length; j++) { - // System.out.println("comp " + components[j].getComponentNumber()); - components[j] = system.getPhase(phase).getComponent(components[j].getComponentNumber()); + } + + /** + *

+ * setReactiveComponents. + *

+ */ + public void setReactiveComponents() { + int k = 0; + for (int j = 0; j < componentNames.length; j++) { + // System.out.println("component " + componentNames[j]); + String name = componentNames[j]; + for (int i = 0; i < allComponentNames.length; i++) { + if (name.equals(allComponentNames[i])) { + components[k++] = system.getPhase(phase).getComponents()[j]; + // System.out.println("reactive comp " + + // system.getPhases()[1].getComponents()[j].getName()); } + } } - - /** - *

- * setReactiveComponents. - *

- */ - public void setReactiveComponents() { - int k = 0; - for (int j = 0; j < componentNames.length; j++) { - // System.out.println("component " + componentNames[j]); - String name = componentNames[j]; - for (int i = 0; i < allComponentNames.length; i++) { - if (name.equals(allComponentNames[i])) { - components[k++] = system.getPhase(phase).getComponents()[j]; - // System.out.println("reactive comp " + - // system.getPhases()[1].getComponents()[j].getName()); - } - } - } + } + + /** + *

+ * calcInertMoles. + *

+ * + * @param phase a int + * @return a double + */ + public double calcInertMoles(int phase) { + double reactiveMoles = 0; + for (int j = 0; j < components.length; j++) { + reactiveMoles += components[j].getNumberOfMolesInPhase(); } - - /** - *

- * calcInertMoles. - *

- * - * @param phase a int - * @return a double - */ - public double calcInertMoles(int phase) { - double reactiveMoles = 0; - for (int j = 0; j < components.length; j++) { - reactiveMoles += components[j].getNumberOfMolesInPhase(); - } - inertMoles = system.getPhase(phase).getNumberOfMolesInPhase() - reactiveMoles; - // System.out.println("inertmoles = " + inertMoles); - if (inertMoles < 0) { - inertMoles = 1.0e-30; - } - return inertMoles; + inertMoles = system.getPhase(phase).getNumberOfMolesInPhase() - reactiveMoles; + // System.out.println("inertmoles = " + inertMoles); + if (inertMoles < 0) { + inertMoles = 1.0e-30; } - - /** - *

- * sortReactiveComponents. - *

- */ - public void sortReactiveComponents() { - ComponentInterface tempComp; - for (int i = 0; i < components.length; i++) { - for (int j = i + 1; j < components.length; j++) { - if (components[j].getGibbsEnergyOfFormation() < components[i] - .getGibbsEnergyOfFormation()) { - tempComp = components[i]; - components[i] = components[j]; - components[j] = tempComp; - // System.out.println("swich : " + i + " " + j); - } - } + return inertMoles; + } + + /** + *

+ * sortReactiveComponents. + *

+ */ + public void sortReactiveComponents() { + ComponentInterface tempComp; + for (int i = 0; i < components.length; i++) { + for (int j = i + 1; j < components.length; j++) { + if (components[j].getGibbsEnergyOfFormation() < components[i].getGibbsEnergyOfFormation()) { + tempComp = components[i]; + components[i] = components[j]; + components[j] = tempComp; + // System.out.println("swich : " + i + " " + j); } + } } - - /** - *

- * addNewComponents. - *

- */ - public void addNewComponents() { - boolean newComp; - - for (int i = 0; i < allComponentNames.length; i++) { - String name = allComponentNames[i]; - newComp = true; - - for (int j = 0; j < componentNames.length; j++) { - if (name.equals(componentNames[j])) { - newComp = false; - break; - } - } - if (newComp) { - system.addComponent(name, 1.0e-40); - // System.out.println("new component added: " + name); - } + } + + /** + *

+ * addNewComponents. + *

+ */ + public void addNewComponents() { + boolean newComp; + + for (int i = 0; i < allComponentNames.length; i++) { + String name = allComponentNames[i]; + newComp = true; + + for (int j = 0; j < componentNames.length; j++) { + if (name.equals(componentNames[j])) { + newComp = false; + break; } + } + if (newComp) { + system.addComponent(name, 1.0e-40); + // System.out.println("new component added: " + name); + } } - - /** - *

- * getAllElements. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[] getAllElements() { - HashSet elementsLocal = new HashSet(); - for (int j = 0; j < components.length; j++) { - for (int i = 0; i < components[j].getElements().getElementNames().length; i++) { - // System.out.println("elements: " + - // components[j].getElements().getElementNames()[i]); - elementsLocal.add(components[j].getElements().getElementNames()[i]); - } - } - - String[] elementList = new String[elementsLocal.size()]; - int k = 0; - Iterator newe = elementsLocal.iterator(); - while (newe.hasNext()) { - elementList[k++] = newe.next(); - } - /* - * for(int j=0;j + * getAllElements. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getAllElements() { + HashSet elementsLocal = new HashSet(); + for (int j = 0; j < components.length; j++) { + for (int i = 0; i < components[j].getElements().getElementNames().length; i++) { + // System.out.println("elements: " + + // components[j].getElements().getElementNames()[i]); + elementsLocal.add(components[j].getElements().getElementNames()[i]); + } } - /** - *

- * hasRections. - *

- * - * @return a boolean - */ - public boolean hasRections() { - return components.length > 0; + String[] elementList = new String[elementsLocal.size()]; + int k = 0; + Iterator newe = elementsLocal.iterator(); + while (newe.hasNext()) { + elementList[k++] = newe.next(); } - - /** - *

- * calcNVector. - *

- * - * @return an array of {@link double} objects + /* + * for(int j=0;j + * hasRections. + *

+ * + * @return a boolean + */ + public boolean hasReactions() { + return components.length > 0; + } + + /** + *

+ * calcNVector. + *

+ * + * @return an array of type double + */ + public double[] calcNVector() { + double[] nvec = new double[components.length]; + for (int i = 0; i < components.length; i++) { + nvec[i] = components[i].getNumberOfMolesInPhase(); + // System.out.println("nvec: " + nvec[i]); } - - /** - *

- * calcBVector. - *

- * - * @return an array of {@link double} objects - */ - public double[] calcBVector() { - Matrix tempA = new Matrix(Amatrix); - Matrix tempB = new Matrix(nVector, 1); - Matrix tempN = tempA.times(tempB.transpose()).transpose(); - // print added by Neeraj - // System.out.println("b matrix: "); - // tempN.print(10,2); - - return tempN.getArray()[0]; - } - - /** - *

- * calcChemRefPot. - *

- * - * @param phase a int - * @return an array of {@link double} objects - */ - public double[] calcChemRefPot(int phase) { - double[] referencePotentials = new double[components.length]; - reactionList.createReactionMatrix(system.getPhase(phase), components); - double[] newreferencePotentials = - reactionList.updateReferencePotentials(system.getPhase(phase), components); - if (newreferencePotentials != null) { - for (int i = 0; i < newreferencePotentials.length; i++) { - referencePotentials[i] = newreferencePotentials[i]; - components[i].setReferencePotential(referencePotentials[i]); - } - return referencePotentials; - } else { - return null; - } - } - - /** - *

- * updateMoles. - *

- * - * @param phase a int - */ - public void updateMoles(int phase) { - double changeMoles = 0.0; - for (int i = 0; i < components.length; i++) { - if (Math.abs(newMoles[i]) > 1e-45) { - changeMoles += (newMoles[i] - - system.getPhase(phase).getComponents()[components[i].getComponentNumber()] - .getNumberOfMolesInPhase()); - // System.out.println("update moles first " + (components[i].getComponentName() - // + " moles " + components[i].getNumberOfMolesInPhase())); - system.getPhase(phase).addMolesChemReac(components[i].getComponentNumber(), - (newMoles[i] - system.getPhase(phase).getComponents()[components[i] - .getComponentNumber()].getNumberOfMolesInPhase())); - // System.out.println("update moles after " + (components[i].getComponentName() - // + " moles " + components[i].getNumberOfMolesInPhase())); - } - } - // System.out.println("change " + changeMoles); - system.initTotalNumberOfMoles(changeMoles);// x_solve.get(NELE,0)*n_t); - system.initBeta(); // this was added for mass trans calc - system.init_x_y(); - system.init(1); - } - - /** - *

- * solveChemEq. - *

- * - * @param type a int - * @return a boolean - */ - public boolean solveChemEq(int type) { - return solveChemEq(1, type); - } - - /** - *

- * solveChemEq. - *

- * - * @param phase a int - * @param type a int - * @return a boolean - */ - public boolean solveChemEq(int phase, int type) { - if (this.phase != phase) { - setReactiveComponents(phase); - chemRefPot = calcChemRefPot(phase); - } - this.phase = phase; - if (!system.isChemicalSystem()) { - System.out.println("no chemical reactions will occur...continue"); - return false; - } - - // System.out.println("pressure1"); - calcChemRefPot(phase); - // System.out.println("pressure2"); - if (firsttime == true || type == 0) { - try { - // System.out.println("Calculating initial estimates"); - nVector = calcNVector(); - bVector = calcBVector(); - calcInertMoles(phase); - newMoles = initCalc.generateInitialEstimates(system, bVector, inertMoles, phase); - // Print statement added by Neeraj - // for (i=0;i<5;i++) - // System.out.println("new moles "+newMoles[i]); - updateMoles(phase); - // System.out.println("finished iniT estimtes "); - // system.display(); - firsttime = false; - return true; - } catch (Exception e) { - System.out.println("error in chem eq"); - solver = new ChemicalEquilibrium(Amatrix, bVector, system, components, phase); - return solver.solve(); - } - } else { - nVector = calcNVector(); - bVector = calcBVector(); - try { - solver = new ChemicalEquilibrium(Amatrix, bVector, system, components, phase); - } catch (Exception e) { - e.printStackTrace(); - } - return solver.solve(); - } + return nvec; + } + + /** + *

+ * calcBVector. + *

+ * + * @return an array of type double + */ + public double[] calcBVector() { + Matrix tempA = new Matrix(Amatrix); + Matrix tempB = new Matrix(nVector, 1); + Matrix tempN = tempA.times(tempB.transpose()).transpose(); + // print added by Neeraj + // System.out.println("b matrix: "); + // tempN.print(10,2); + + return tempN.getArray()[0]; + } + + /** + *

+ * calcChemRefPot. + *

+ * + * @param phase a int + * @return an array of type double + */ + public double[] calcChemRefPot(int phase) { + double[] referencePotentials = new double[components.length]; + reactionList.createReactionMatrix(system.getPhase(phase), components); + double[] newreferencePotentials = + reactionList.updateReferencePotentials(system.getPhase(phase), components); + if (newreferencePotentials != null) { + for (int i = 0; i < newreferencePotentials.length; i++) { + referencePotentials[i] = newreferencePotentials[i]; + components[i].setReferencePotential(referencePotentials[i]); + } + return referencePotentials; + } else { + return null; } - - /** - *

- * solveKinetics. - *

- * - * @param phase a int - * @param interPhase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param component a int - * @return a double - */ - public double solveKinetics(int phase, PhaseInterface interPhase, int component) { - return kineticsSolver.calcReacMatrix(system.getPhase(phase), interPhase, component); + } + + /** + *

+ * updateMoles. + *

+ * + * @param phase a int + */ + public void updateMoles(int phase) { + double changeMoles = 0.0; + for (int i = 0; i < components.length; i++) { + if (Math.abs(newMoles[i]) > 1e-45) { + changeMoles += (newMoles[i] + - system.getPhase(phase).getComponents()[components[i].getComponentNumber()] + .getNumberOfMolesInPhase()); + // System.out.println("update moles first " + (components[i].getComponentName() + // + " moles " + components[i].getNumberOfMolesInPhase())); + system.getPhase(phase).addMolesChemReac(components[i].getComponentNumber(), + (newMoles[i] + - system.getPhase(phase).getComponents()[components[i].getComponentNumber()] + .getNumberOfMolesInPhase())); + // System.out.println("update moles after " + (components[i].getComponentName() + // + " moles " + components[i].getNumberOfMolesInPhase())); + } } - - /** - *

- * getKinetics. - *

- * - * @return a {@link neqsim.chemicalReactions.kinetics.Kinetics} object - */ - public Kinetics getKinetics() { - return kineticsSolver; + // System.out.println("change " + changeMoles); + system.initTotalNumberOfMoles(changeMoles); // x_solve.get(NELE,0)*n_t); + system.initBeta(); // this was added for mass trans calc + system.init_x_y(); + system.init(1); + } + + /** + *

+ * solveChemEq. + *

+ * + * @param type a int + * @return a boolean + */ + public boolean solveChemEq(int type) { + return solveChemEq(1, type); + } + + /** + *

+ * solveChemEq. + *

+ * + * @param phase a int + * @param type a int + * @return a boolean + */ + public boolean solveChemEq(int phase, int type) { + if (this.phase != phase) { + setReactiveComponents(phase); + chemRefPot = calcChemRefPot(phase); } - - /** - *

- * Getter for the field reactionList. - *

- * - * @return a {@link neqsim.chemicalReactions.chemicalReaction.ChemicalReactionList} object - */ - public ChemicalReactionList getReactionList() { - return reactionList; + this.phase = phase; + if (!system.isChemicalSystem()) { + System.out.println("no chemical reactions will occur...continue"); + return false; } - /** - *

- * reacHeat. - *

- * - * @param phase a int - * @param component a {@link java.lang.String} object - * @return a double - */ - public double reacHeat(int phase, String component) { - return reactionList.reacHeat(system.getPhase(phase), component); - } - - /** - * Getter for property deltaReactionHeat. - * - * @return Value of property deltaReactionHeat. - */ - public double getDeltaReactionHeat() { - return deltaReactionHeat; + // System.out.println("pressure1"); + calcChemRefPot(phase); + // System.out.println("pressure2"); + if (firsttime || type == 0) { + try { + // System.out.println("Calculating initial estimates"); + nVector = calcNVector(); + bVector = calcBVector(); + calcInertMoles(phase); + newMoles = initCalc.generateInitialEstimates(system, bVector, inertMoles, phase); + // Print statement added by Neeraj + // for (i=0;i<5;i++) + // System.out.println("new moles "+newMoles[i]); + updateMoles(phase); + // System.out.println("finished iniT estimtes "); + // system.display(); + firsttime = false; + return true; + } catch (Exception ex) { + logger.error("error in chem eq", ex); + solver = new ChemicalEquilibrium(Amatrix, bVector, system, components, phase); + return solver.solve(); + } + } else { + nVector = calcNVector(); + bVector = calcBVector(); + try { + solver = new ChemicalEquilibrium(Amatrix, bVector, system, components, phase); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + // todo: Will this crash below? + } + return solver.solve(); } - - /** - * Setter for property deltaReactionHeat. - * - * @param deltaReactionHeat New value of property deltaReactionHeat. - */ - public void setDeltaReactionHeat(double deltaReactionHeat) { - this.deltaReactionHeat = deltaReactionHeat; - } - - // public Matrix calcReacRates(int phase){ - // // System.out.println(" vol " + system.getPhases()[0].getMolarVolume()); - // return getReactionList().calcReacRates(system.getPhase(phase), components); - // } - - // /** Setter for property reactionList. - // * @param reactionList New value of property reactionList. - // */ - // public void - // setReactionList(chemicalReactions.chemicalReaction.ChemicalReactionList - // reactionList) { - // this.reactionList = reactionList; - // } + } + + /** + *

+ * solveKinetics. + *

+ * + * @param phase a int + * @param interPhase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param component a int + * @return a double + */ + public double solveKinetics(int phase, PhaseInterface interPhase, int component) { + return kineticsSolver.calcReacMatrix(system.getPhase(phase), interPhase, component); + } + + /** + *

+ * getKinetics. + *

+ * + * @return a {@link neqsim.chemicalReactions.kinetics.Kinetics} object + */ + public Kinetics getKinetics() { + return kineticsSolver; + } + + /** + *

+ * Getter for the field reactionList. + *

+ * + * @return a {@link neqsim.chemicalReactions.chemicalReaction.ChemicalReactionList} object + */ + public ChemicalReactionList getReactionList() { + return reactionList; + } + + /** + *

+ * reacHeat. + *

+ * + * @param phase a int + * @param component a {@link java.lang.String} object + * @return a double + */ + public double reacHeat(int phase, String component) { + return reactionList.reacHeat(system.getPhase(phase), component); + } + + /** + * Getter for property deltaReactionHeat. + * + * @return Value of property deltaReactionHeat. + */ + public double getDeltaReactionHeat() { + return deltaReactionHeat; + } + + /** + * Setter for property deltaReactionHeat. + * + * @param deltaReactionHeat New value of property deltaReactionHeat. + */ + public void setDeltaReactionHeat(double deltaReactionHeat) { + this.deltaReactionHeat = deltaReactionHeat; + } + + // public Matrix calcReacRates(int phase){ + // // System.out.println(" vol " + system.getPhases()[0].getMolarVolume()); + // return getReactionList().calcReacRates(system.getPhase(phase), components); + // } + + // /** Setter for property reactionList. + // * @param reactionList New value of property reactionList. + // */ + // public void + // setReactionList(chemicalReactions.chemicalReaction.ChemicalReactionList + // reactionList) { + // this.reactionList = reactionList; + // } } diff --git a/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ChemEq.java b/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ChemEq.java index ba2bb42e1f..b2acd76b87 100644 --- a/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ChemEq.java +++ b/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ChemEq.java @@ -1,6 +1,7 @@ package neqsim.chemicalReactions.chemicalEquilibriaum; import Jama.Matrix; +import neqsim.thermo.ThermodynamicConstantsInterface; /** *

@@ -11,406 +12,413 @@ * @version $Id: $Id */ public class ChemEq implements java.io.Serializable { - private static final long serialVersionUID = 1000; - int NSPEC = 10, NELE = 3; - double R = 8.3143, G_min = 0; - - double T = 3500, P = 51, n_t, agemo = 0; - // double [][] A_matrix = new double[NSPEC][NELE]; - // double n_mol[] = new double[NSPEC]; - // double chem_ref[] = new double[NSPEC]; - double d_n[]; - double phi[] = new double[3]; - // double b_element[] = new double[NELE]; - - double[][] A_matrix; - double n_mol[]; - double chem_ref[]; - double b_element[]; - - int NNOT = 4; - int i, j, k; - // int zeile_matrix, spalte_matrix, zeile_b, spalte_b; - double[] b_cal; - double[] b_vector; - double[] second_term; - double[] chem_pot; - double u_u, sum, step; - double[][] matrix; - - /** - *

- * Constructor for ChemEq. - *

- */ - public ChemEq() { - for (int i = 0; i < 10; i++) { - chem_ref[i] += Math.log(P); - } + private static final long serialVersionUID = 1000; + int NSPEC = 10; + int NELE = 3; + double R = ThermodynamicConstantsInterface.R; + double G_min = 0; + double T = 3500; + double P = 51; + double n_t; + double agemo = 0; + // double[][] A_matrix = new double[NSPEC][NELE]; + // double n_mol[] = new double[NSPEC]; + // double chem_ref[] = new double[NSPEC]; + double[] d_n; + double[] phi = new double[3]; + // double b_element[] = new double[NELE]; + + double[][] A_matrix; + double[] n_mol; + double[] chem_ref; + double[] b_element; + + int NNOT = 4; + int i; + int j; + int k; + // int zeile_matrix, spalte_matrix, zeile_b, spalte_b; + double[] b_cal; + double[] b_vector; + double[] second_term; + double[] chem_pot; + double u_u; + double sum; + double step; + double[][] matrix; + + /** + *

+ * Constructor for ChemEq. + *

+ */ + public ChemEq() { + for (int i = 0; i < 10; i++) { + chem_ref[i] += Math.log(P); + } - phi = new double[3]; - phi[0] = -9.7851; - phi[1] = -12.969; - phi[2] = -15.222; + phi = new double[3]; + phi[0] = -9.7851; + phi[1] = -12.969; + phi[2] = -15.222; - for (j = 0; j < NSPEC; j++) { - d_n[j] = 0; - } + for (j = 0; j < NSPEC; j++) { + d_n[j] = 0; + } + } + + /** + *

+ * Constructor for ChemEq. + *

+ * + * @param T a double + * @param P a double + * @param A_matrix an array of type double + * @param n_mol an array of type double + * @param chem_ref an array of type double + * @param b_element an array of type double + */ + public ChemEq(double T, double P, double[][] A_matrix, double[] n_mol, double[] chem_ref, + double[] b_element) { + this.T = T; + this.P = P; + this.A_matrix = A_matrix; + this.n_mol = n_mol; + this.chem_ref = chem_ref; + this.b_element = b_element; + + NSPEC = n_mol.length; + NELE = b_element.length; + + NNOT = 4; + b_cal = new double[NELE]; + b_vector = new double[NNOT]; + second_term = new double[NELE]; + chem_pot = new double[NSPEC]; + matrix = new double[NNOT][NNOT]; + d_n = new double[NSPEC]; + for (int i = 0; i < n_mol.length; i++) { + chem_ref[i] += Math.log(P); } - /** - *

- * Constructor for ChemEq. - *

- * - * @param T a double - * @param P a double - * @param A_matrix an array of {@link double} objects - * @param n_mol an array of {@link double} objects - * @param chem_ref an array of {@link double} objects - * @param b_element an array of {@link double} objects - */ - public ChemEq(double T, double P, double[][] A_matrix, double n_mol[], double chem_ref[], - double b_element[]) { - this.T = T; - this.P = P; - this.A_matrix = A_matrix; - this.n_mol = n_mol; - this.chem_ref = chem_ref; - this.b_element = b_element; - - NSPEC = n_mol.length; - NELE = b_element.length; - - NNOT = 4; - b_cal = new double[NELE]; - b_vector = new double[NNOT]; - second_term = new double[NELE]; - chem_pot = new double[NSPEC]; - matrix = new double[NNOT][NNOT]; - d_n = new double[NSPEC]; - for (int i = 0; i < n_mol.length; i++) { - chem_ref[i] += Math.log(P); - } - - phi[0] = -9.7851; - phi[1] = -12.969; - phi[2] = -15.222; + phi[0] = -9.7851; + phi[1] = -12.969; + phi[2] = -15.222; - for (j = 0; j < NSPEC; j++) { - d_n[j] = 0; - } + for (j = 0; j < NSPEC; j++) { + d_n[j] = 0; } + } + + /** + *

+ * Constructor for ChemEq. + *

+ * + * @param A_matrix an array of type double + */ + public ChemEq(double[][] A_matrix) { + this.A_matrix = A_matrix; + } + + /** + *

+ * Constructor for ChemEq. + *

+ * + * @param T a double + * @param P a double + * @param A_matrix an array of type double + */ + public ChemEq(double T, double P, double[][] A_matrix) { + this.T = T; + this.P = P; + this.A_matrix = A_matrix; + } + + /** + *

+ * chemSolve. + *

+ */ + public void chemSolve() { + n_t = 0; + + for (k = 0; k < NSPEC; k++) { + n_t += n_mol[k]; + } + System.out.println("n_total: " + n_t); - /** - *

- * Constructor for ChemEq. - *

- * - * @param A_matrix an array of {@link double} objects - */ - public ChemEq(double[][] A_matrix) { - this.A_matrix = A_matrix; + for (i = 0; i < NELE; i++) { + second_term[i] = 0; + b_cal[i] = 0; } - /** - *

- * Constructor for ChemEq. - *

- * - * @param T a double - * @param P a double - * @param A_matrix an array of {@link double} objects - */ - public ChemEq(double T, double P, double[][] A_matrix) { - this.T = T; - this.P = P; - this.A_matrix = A_matrix; + for (i = 0; i < NSPEC; i++) { + chem_pot[i] = chem_ref[i] + Math.log(Math.abs(n_mol[i] / n_t)); + System.out.println("chempot: " + i + " = " + chem_pot[i]); } - /** - *

- * chemSolve. - *

- */ - public void chemSolve() { - n_t = 0; + sum = 0; + for (j = 0; j < NELE; j++) { + for (i = 0; i < NELE; i++) { for (k = 0; k < NSPEC; k++) { - n_t += n_mol[k]; - } - System.out.println("n_total: " + n_t); - - for (i = 0; i < NELE; i++) { - second_term[i] = 0; - b_cal[i] = 0; - } - - for (i = 0; i < NSPEC; i++) { - chem_pot[i] = chem_ref[i] + Math.log(Math.abs(n_mol[i] / n_t)); - System.out.println("chempot: " + i + " = " + chem_pot[i]); + sum += A_matrix[i][k] * A_matrix[j][k] * n_mol[k]; } + matrix[j][i] = sum; sum = 0; + } - for (j = 0; j < NELE; j++) { - for (i = 0; i < NELE; i++) { - for (k = 0; k < NSPEC; k++) { - sum += A_matrix[i][k] * A_matrix[j][k] * n_mol[k]; - } - - matrix[j][i] = sum; - sum = 0; - } - - for (k = 0; k < NSPEC; k++) { - second_term[j] += A_matrix[j][k] * n_mol[k] * chem_pot[k]; - } - - for (i = 0; i < NSPEC; i++) { - b_cal[j] += A_matrix[j][i] * n_mol[i]; - } - matrix[j][NELE] = b_cal[j]; - b_vector[j] = second_term[j] + b_element[j] - b_cal[j]; - } + for (k = 0; k < NSPEC; k++) { + second_term[j] += A_matrix[j][k] * n_mol[k] * chem_pot[k]; + } - for (j = 0; j < NELE; j++) { - matrix[NELE][j] = b_cal[j]; - } - - matrix[NELE][NELE] = 0; - b_vector[NNOT - 1] = 0; - - for (i = 0; i < NSPEC; i++) { - b_vector[NNOT - 1] += n_mol[i] * chem_pot[i]; - } - - double[][] btest = new double[NNOT][1]; - - for (i = 0; i < NNOT; i++) { - btest[i][0] = b_vector[i]; - - for (j = 0; j < NNOT; j++) { - System.out.println("matrix: " + i + " " + j + " " + matrix[i][j]); - } - } + for (i = 0; i < NSPEC; i++) { + b_cal[j] += A_matrix[j][i] * n_mol[i]; + } + matrix[j][NELE] = b_cal[j]; + b_vector[j] = second_term[j] + b_element[j] - b_cal[j]; + } - Matrix matrixA = new Matrix(matrix); - Matrix matrixb = new Matrix(btest); - Matrix solved = matrixA.solve(matrixb); - solved.print(5, 3); + for (j = 0; j < NELE; j++) { + matrix[NELE][j] = b_cal[j]; + } - for (j = 0; j < NELE; j++) { - b_vector[j] = solved.get(j, 0); - phi[j] = solved.get(j, 0); - } - u_u = solved.get(NELE, 0); + matrix[NELE][NELE] = 0; + b_vector[NNOT - 1] = 0; - sum = 0; - - for (j = 0; j < NSPEC; j++) { - for (k = 0; k < NELE; k++) { - sum += A_matrix[k][j] * phi[k]; - } - // System.out.println("j : " +j); - d_n[j] = n_mol[j] * (sum + u_u - chem_pot[j]); - System.out.println("nj " + j + " " + d_n[j]); - sum = 0; - } + for (i = 0; i < NSPEC; i++) { + b_vector[NNOT - 1] += n_mol[i] * chem_pot[i]; } - /** - *

- * step. - *

- * - * @return a double - */ - public double step() { - double step; - - int i, check; - double[] n_omega = new double[NSPEC]; - double[] chem_pot_omega = new double[NSPEC]; - double[] chem_pot = new double[NSPEC]; - double G_1, G_0; - - check = 0; - step = 1; - - for (i = 0; i < NSPEC; i++) { - n_omega[i] = n_mol[i] + d_n[i]; - if (n_omega[i] < 0) { - check = i; - step = innerStep(n_omega, check, step); - System.out.println("step2 ... " + step); - return step; - } else { - chem_pot_omega[i] = R * T * (chem_ref[i] + Math.log(n_omega[i] / n_t)); - chem_pot[i] = R * T * (chem_ref[i] + Math.log(n_mol[i] / n_t)); - } - } + double[][] btest = new double[NNOT][1]; - G_1 = 0; + for (i = 0; i < NNOT; i++) { + btest[i][0] = b_vector[i]; - for (i = 0; i < NSPEC; i++) { - G_1 += chem_pot_omega[i] * d_n[i]; - } + for (j = 0; j < NNOT; j++) { + System.out.println("matrix: " + i + " " + j + " " + matrix[i][j]); + } + } - if (G_1 > 0) { - G_0 = 0; - for (i = 0; i < NSPEC; i++) { - G_0 += chem_pot[i] * d_n[i]; - } - step = G_0 / (G_0 - G_1); - // System.out.println("step4 ... " + step); - } + Matrix matrixA = new Matrix(matrix); + Matrix matrixb = new Matrix(btest); + Matrix solved = matrixA.solve(matrixb); + solved.print(5, 3); + for (j = 0; j < NELE; j++) { + b_vector[j] = solved.get(j, 0); + phi[j] = solved.get(j, 0); + } + u_u = solved.get(NELE, 0); + + sum = 0; + + for (j = 0; j < NSPEC; j++) { + for (k = 0; k < NELE; k++) { + sum += A_matrix[k][j] * phi[k]; + } + // System.out.println("j : " +j); + d_n[j] = n_mol[j] * (sum + u_u - chem_pot[j]); + System.out.println("nj " + j + " " + d_n[j]); + sum = 0; + } + } + + /** + *

+ * step. + *

+ * + * @return a double + */ + public double step() { + double step; + + int i; + int check; + double[] n_omega = new double[NSPEC]; + double[] chem_pot_omega = new double[NSPEC]; + double[] chem_pot = new double[NSPEC]; + + check = 0; + step = 1; + + for (i = 0; i < NSPEC; i++) { + n_omega[i] = n_mol[i] + d_n[i]; + if (n_omega[i] < 0) { + check = i; step = innerStep(n_omega, check, step); - System.out.println("step ... " + step); - + System.out.println("step2 ... " + step); return step; + } else { + chem_pot_omega[i] = R * T * (chem_ref[i] + Math.log(n_omega[i] / n_t)); + chem_pot[i] = R * T * (chem_ref[i] + Math.log(n_mol[i] / n_t)); + } } - /** - *

- * innerStep. - *

- * - * @param n_omega an array of {@link double} objects - * @param check a int - * @param step a double - * @return a double - */ - public double innerStep(double[] n_omega, int check, double step) { - if (check > 0) { - agemo = (-n_mol[i] / d_n[i]) * (1 - 0.01); - for (i = check; i < NSPEC; i++) { - n_omega[i] = n_mol[i] + d_n[i]; - - if (n_omega[i] < 0) { - step = (-n_mol[i] / d_n[i]) * (1 - 0.01); - if (step < agemo) { - agemo = step; - } - } - } - - step = agemo; - - if (step > 1) { - step = 1; - } - } - // System.out.println("step5 ... " + step); - return step; + double G_0; + double G_1 = 0; + for (i = 0; i < NSPEC; i++) { + G_1 += chem_pot_omega[i] * d_n[i]; + } + + if (G_1 > 0) { + G_0 = 0; + for (i = 0; i < NSPEC; i++) { + G_0 += chem_pot[i] * d_n[i]; + } + step = G_0 / (G_0 - G_1); + // System.out.println("step4 ... " + step); } - /** - *

- * solve. - *

- * - * @param T a double - * @param P a double - * @param n_mol an array of {@link double} objects - * @param chem_ref an array of {@link double} objects - */ - public void solve(double T, double P, double n_mol[], double chem_ref[]) { - this.T = T; - this.P = P; - - for (i = 0; i < n_mol.length; i++) { - System.out.println(n_mol[i]); - this.n_mol[i] = n_mol[i]; - this.chem_ref[i] = chem_ref[i]; + step = innerStep(n_omega, check, step); + System.out.println("step ... " + step); + + return step; + } + + /** + *

+ * innerStep. + *

+ * + * @param n_omega an array of type double + * @param check a int + * @param step a double + * @return a double + */ + public double innerStep(double[] n_omega, int check, double step) { + if (check > 0) { + agemo = (-n_mol[i] / d_n[i]) * (1 - 0.01); + for (i = check; i < NSPEC; i++) { + n_omega[i] = n_mol[i] + d_n[i]; + + if (n_omega[i] < 0) { + step = (-n_mol[i] / d_n[i]) * (1 - 0.01); + if (step < agemo) { + agemo = step; + } } + } - // beregner b - double[][] nAr = new double[n_mol.length][1]; + step = agemo; - for (i = 0; i < n_mol.length; i++) { - nAr[i][0] = n_mol[i]; - } + if (step > 1) { + step = 1; + } + } + // System.out.println("step5 ... " + step); + return step; + } + + /** + *

+ * solve. + *

+ * + * @param T a double + * @param P a double + * @param n_mol an array of type double + * @param chem_ref an array of type double + */ + public void solve(double T, double P, double[] n_mol, double[] chem_ref) { + this.T = T; + this.P = P; + + for (i = 0; i < n_mol.length; i++) { + System.out.println(n_mol[i]); + this.n_mol[i] = n_mol[i]; + this.chem_ref[i] = chem_ref[i]; + } - Matrix matrixA = new Matrix(A_matrix); - Matrix matrixnAr = new Matrix(nAr); - Matrix solved = matrixA.times(matrixnAr); + // beregner b + double[][] nAr = new double[n_mol.length][1]; - this.b_element = solved.transpose().getArrayCopy()[0]; + for (i = 0; i < n_mol.length; i++) { + nAr[i][0] = n_mol[i]; + } - NSPEC = n_mol.length; - NELE = A_matrix.length; + Matrix matrixA = new Matrix(A_matrix); + Matrix matrixnAr = new Matrix(nAr); + Matrix solved = matrixA.times(matrixnAr); - NNOT = NELE + 1;// 4; - b_cal = new double[NELE]; - b_vector = new double[NNOT]; - second_term = new double[NELE]; - chem_pot = new double[NSPEC]; - matrix = new double[NNOT][NNOT]; + this.b_element = solved.transpose().getArrayCopy()[0]; - for (int i = 0; i < 10; i++) { - // chem_ref[i] = chem_ref[i]+Math.log(this.P); - } + NSPEC = n_mol.length; + NELE = A_matrix.length; - phi = new double[NELE]; - phi[0] = -9.7851; - phi[1] = -12.969; - phi[2] = -15.222; - phi[3] = -10; - phi[4] = -10; - - for (j = 0; j < NSPEC; j++) { - d_n[j] = 0; - // System.out.println("HEI" + b_element[j]); - // b_element[4] = 0.5; - } - System.out.println("HEI" + b_element[0]); - System.out.println("HEI" + b_element[1]); - System.out.println("HEI" + b_element[2]); - System.out.println("HEI" + b_element[3]); - System.out.println("HEI" + b_element[4]); + NNOT = NELE + 1; // 4; + b_cal = new double[NELE]; + b_vector = new double[NNOT]; + second_term = new double[NELE]; + chem_pot = new double[NSPEC]; + matrix = new double[NNOT][NNOT]; - solve(); + for (int i = 0; i < 10; i++) { + // chem_ref[i] = chem_ref[i]+Math.log(this.P); } - /** - *

- * solve. - *

- */ - public void solve() { - double error = 0; - double Gibbs = 0; - - do { - error = 0; - chemSolve(); - - for (i = 0; i < NSPEC; i++) { - System.out.println(n_mol[i] + " prove korreksjon " + step * d_n[i]); - - error += d_n[i] / n_mol[i]; - - if (Math.abs(d_n[i] / n_mol[i]) > 0.00001) { - step = step(); - // n_mol[i] = n_mol[i] + step*d_n[i]; - // System.out.println("mol: " + n_mol[i]); - Gibbs = 0; - for (i = 0; i < NSPEC; i++) { - n_mol[i] += step * d_n[i]; - Gibbs += n_mol[i] * chem_pot[i]; - } - System.out.println("Gibbs: " + Gibbs); - solve(); - return; - } - } - } while (error > 0.00005); - - for (j = 0; j < NSPEC; j++) { - System.out.println( - " SVAR : " + n_mol[j] + " " + (d_n[j] / n_mol[j]) + " GIBBS : " + Gibbs); + phi = new double[NELE]; + phi[0] = -9.7851; + phi[1] = -12.969; + phi[2] = -15.222; + phi[3] = -10; + phi[4] = -10; + + for (j = 0; j < NSPEC; j++) { + d_n[j] = 0; + // System.out.println("HEI" + b_element[j]); + // b_element[4] = 0.5; + } + System.out.println("HEI" + b_element[0]); + System.out.println("HEI" + b_element[1]); + System.out.println("HEI" + b_element[2]); + System.out.println("HEI" + b_element[3]); + System.out.println("HEI" + b_element[4]); + + solve(); + } + + /** + *

+ * solve. + *

+ */ + public void solve() { + double error = 0; + double Gibbs = 0; + + do { + error = 0; + chemSolve(); + + for (i = 0; i < NSPEC; i++) { + System.out.println(n_mol[i] + " prove korreksjon " + step * d_n[i]); + + error += d_n[i] / n_mol[i]; + + if (Math.abs(d_n[i] / n_mol[i]) > 0.00001) { + step = step(); + // n_mol[i] = n_mol[i] + step*d_n[i]; + // System.out.println("mol: " + n_mol[i]); + Gibbs = 0; + for (i = 0; i < NSPEC; i++) { + n_mol[i] += step * d_n[i]; + Gibbs += n_mol[i] * chem_pot[i]; + } + System.out.println("Gibbs: " + Gibbs); + solve(); + return; } + } + } while (error > 0.00005); + + for (j = 0; j < NSPEC; j++) { + System.out.println(" SVAR : " + n_mol[j] + " " + (d_n[j] / n_mol[j]) + " GIBBS : " + Gibbs); } + } } diff --git a/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ChemicalEquilibrium.java b/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ChemicalEquilibrium.java index 9f2b6f3017..f9f212c962 100644 --- a/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ChemicalEquilibrium.java +++ b/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ChemicalEquilibrium.java @@ -1,6 +1,9 @@ package neqsim.chemicalReactions.chemicalEquilibriaum; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import Jama.Matrix; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.component.ComponentInterface; import neqsim.thermo.system.SystemInterface; @@ -13,518 +16,541 @@ * @version $Id: $Id */ public class ChemicalEquilibrium implements java.io.Serializable { - private static final long serialVersionUID = 1000; - - SystemInterface system; - double[] nVector; - double[] n_mol; - double d_n_t = 0; - int NSPEC = 2, NELE = 2; - double R = 8.314; - Matrix x_solve; - double y_solve; - double n_t = 0.0, agemo = 0, kronDelt = 0; - ComponentInterface[] components; - double[][] M_matrix = new double[NSPEC][NSPEC]; - Matrix M_Jama_matrix; - Matrix A_Jama_matrix; - Matrix nmu; - Matrix AMA_matrix; // = new double[NELE][NELE]; - Matrix dn_matrix; - Matrix AMU_matrix; - Matrix Alambda_matrix; - double d_n[] = new double[NSPEC]; - double logactivityVec[] = new double[NSPEC]; - double[] n0; - double[][] A_matrix; - double chem_ref[]; - int waterNumb = 0; - int upMoles = 0; - // double chem_pot_dilute[]; - /// double chem_pot_pure[]; - double b_element[]; - Matrix b_matrix; - - Matrix A_solve; - Matrix b_solve; - double[] chem_pot; - Matrix chem_pot_Jama_Matrix; - int phasenumb = 1; - - /** - *

- * Constructor for ChemicalEquilibrium. - *

- * - * @param A_matrix an array of {@link double} objects - * @param b_element an array of {@link double} objects - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects - * @param phase a int - */ - public ChemicalEquilibrium(double[][] A_matrix, double b_element[], SystemInterface system, - ComponentInterface[] components, int phase) { - this.system = system; - phasenumb = phase; - this.A_matrix = A_matrix; - this.b_element = b_element; - this.components = components; - NSPEC = components.length; // Number of Species - NELE = b_element.length; // Number of elements - n_mol = new double[components.length]; - logactivityVec = new double[NSPEC]; - this.chem_ref = new double[components.length]; - A_solve = new Matrix(NELE + 1, NELE + 1); - b_solve = new Matrix(NELE + 1, 1); - chem_ref = new double[NSPEC]; - chem_pot = new double[NSPEC]; - // chem_pot_dilute = new double[NSPEC]; - // chem_pot_pure = new double[NSPEC]; - M_matrix = new double[NSPEC][NSPEC]; - d_n = new double[NSPEC]; - - for (int i = 0; i < components.length; i++) { - if (components[i].getComponentName().equals("water")) { - waterNumb = i; - break; - } - } - system.init(1, phasenumb); - calcRefPot(); - for (int j = 0; j < NSPEC; j++) { - d_n[j] = 0; - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ChemicalEquilibrium.class); + + SystemInterface system; + double[] nVector; + double[] n_mol; + double d_n_t = 0; + int NSPEC = 2; + int NELE = 2; + double R = ThermodynamicConstantsInterface.R; + Matrix x_solve; + double y_solve; + double n_t = 0.0; + double agemo = 0; + double kronDelt = 0; + + ComponentInterface[] components; + double[][] M_matrix = new double[NSPEC][NSPEC]; + Matrix M_Jama_matrix; + Matrix A_Jama_matrix; + Matrix nmu; + Matrix AMA_matrix; // = new double[NELE][NELE]; + Matrix dn_matrix; + Matrix AMU_matrix; + Matrix Alambda_matrix; + double[] d_n = new double[NSPEC]; + double[] logactivityVec = new double[NSPEC]; + double[] n0; + double[][] A_matrix; + double[] chem_ref; + int waterNumb = 0; + int upMoles = 0; + // double chem_pot_dilute[]; + // double chem_pot_pure[]; + double[] b_element; + Matrix b_matrix; + + Matrix A_solve; + Matrix b_solve; + double[] chem_pot; + Matrix chem_pot_Jama_Matrix; + int phasenumb = 1; + + /** + *

+ * Constructor for ChemicalEquilibrium. + *

+ * + * @param A_matrix an array of type double + * @param b_element an array of type double + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects + * @param phase a int + */ + public ChemicalEquilibrium(double[][] A_matrix, double[] b_element, SystemInterface system, + ComponentInterface[] components, int phase) { + this.system = system; + phasenumb = phase; + this.A_matrix = A_matrix; + this.b_element = b_element; + this.components = components; + NSPEC = components.length; // Number of Species + NELE = b_element.length; // Number of elements + n_mol = new double[components.length]; + logactivityVec = new double[NSPEC]; + this.chem_ref = new double[components.length]; + A_solve = new Matrix(NELE + 1, NELE + 1); + b_solve = new Matrix(NELE + 1, 1); + chem_ref = new double[NSPEC]; + chem_pot = new double[NSPEC]; + // chem_pot_dilute = new double[NSPEC]; + // chem_pot_pure = new double[NSPEC]; + M_matrix = new double[NSPEC][NSPEC]; + d_n = new double[NSPEC]; + + for (int i = 0; i < components.length; i++) { + if (components[i].getComponentName().equals("water")) { + waterNumb = i; + break; + } } - - /** - *

- * calcRefPot. - *

- */ - public void calcRefPot() { - for (int i = 0; i < components.length; i++) { - // calculates the reduced chemical potential mu/RT - this.chem_ref[i] = components[i].getReferencePotential() - / (R * system.getPhase(phasenumb).getTemperature()); - logactivityVec[i] = 0.0; - if (components[i].calcActivity()) { - logactivityVec[i] = system.getPhase(phasenumb).getLogActivityCoefficient( - components[i].getComponentNumber(), - components[waterNumb].getComponentNumber()); - // System.out.println("activity " + Math.exp(logactivityVec[i]) + " " + - // components[i].getComponentName()); - } + system.init(1, phasenumb); + calcRefPot(); + for (int j = 0; j < NSPEC; j++) { + d_n[j] = 0; + } + } + + /** + *

+ * calcRefPot. + *

+ */ + public void calcRefPot() { + for (int i = 0; i < components.length; i++) { + // calculates the reduced chemical potential mu/RT + this.chem_ref[i] = + components[i].getReferencePotential() / (R * system.getPhase(phasenumb).getTemperature()); + logactivityVec[i] = 0.0; + if (components[i].calcActivity()) { + logactivityVec[i] = system.getPhase(phasenumb).getLogActivityCoefficient( + components[i].getComponentNumber(), components[waterNumb].getComponentNumber()); + // System.out.println("activity " + Math.exp(logactivityVec[i]) + " " + + // components[i].getComponentName()); + } + } + } + + /** + *

+ * chemSolve. + *

+ */ + public void chemSolve() { + n_t = system.getPhase(phasenumb).getNumberOfMolesInPhase(); + + for (int i = 0; i < NSPEC; i++) { + n_mol[i] = system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] + .getNumberOfMolesInPhase(); + + for (int k = 0; k < NSPEC; k++) { + if (k == i) { + kronDelt = 1.0; + } else { + kronDelt = 0.0; } + // definition of M_matrix changed by Neeraj. Initially only 1st term was + // included + M_matrix[i][k] = kronDelt + / system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] + .getNumberOfMolesInPhase(); + // +system.getPhase(phasenumb).getComponent(i).logfugcoefdNi(system.getPhase(phasenumb),k); + + // System.out.println("dfugdn " + // +system.getPhase(phasenumb).getComponent(i).logfugcoefdNi(this.system.getPhase(phasenumb), + // i)); + // if (i == k) System.out.println("n " + // +system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()].getNumberOfMolesInPhase() + // ); + } + } + // printComp(); + + M_Jama_matrix = new Matrix(M_matrix); + A_Jama_matrix = new Matrix(A_matrix); + b_matrix = new Matrix(b_element, 1); + + // M_Jama_matrix.print(10, 10); + // Following 5 statements added by Neeraj + // A_Jama_matrix.print(5,2); + // ystem.out.println("rank of A "+A_Jama_matrix.rank()); + // System.out.println("number of rows in A "+A_Jama_matrix.getRowDimension()); + // if(A_Jama_matrix.rank() - * chemSolve. - *

- */ - public void chemSolve() { - n_t = system.getPhase(phasenumb).getNumberOfMolesInPhase(); + chem_pot_Jama_Matrix = new Matrix(chem_pot, 1); + + AMA_matrix = A_Jama_matrix.times(M_Jama_matrix.inverse().times(A_Jama_matrix.transpose())); + AMU_matrix = + A_Jama_matrix.times(M_Jama_matrix.inverse().times(chem_pot_Jama_Matrix.transpose())); + Matrix nmol = new Matrix(n_mol, 1); + nmu = nmol.times(chem_pot_Jama_Matrix.transpose()); + // AMA_matrix.pr + // Added by Neeraj + // Matrix bm_matrix = (A_Jama_matrix.times(nmol.transpose()).transpose()); + // ((b_matrix.minus(bm_matrix)).times(R*system.getTemperature()).transpose()).print(10,10); + // AMU_matrix.print(20,20); + + A_solve.setMatrix(0, NELE - 1, 0, NELE - 1, AMA_matrix); + A_solve.setMatrix(0, NELE - 1, NELE, NELE, b_matrix.transpose()); + A_solve.setMatrix(NELE, NELE, 0, NELE - 1, b_matrix); + A_solve.set(NELE, NELE, 0.0); + + // A_solve.print(10,20); + // System.out.println("Rank of A_solve "+A_solve.rank()); + // Term subtracted from AMU_matrix -- Neeraj + // b_solve.setMatrix(0,NELE-1,0,0, + // AMU_matrix.minus((b_matrix.minus(bm_matrix)).times(R*system.getTemperature()).transpose())); + // Commented out by Neeraj + b_solve.setMatrix(0, NELE - 1, 0, 0, AMU_matrix); + b_solve.setMatrix(NELE, NELE, 0, 0, nmu); + // b_solve.print(10,5); + // System.out.println("det "+A_solve.det()); + + // y_solve added by Neeraj + // M_Jama_matrix.print(5,5); + y_solve = A_solve.det(); + // System.out.println("Determinant "+y_solve); + if ((y_solve < 1e-38 && y_solve > -1e-38) || y_solve < -1e70) { + // A_solve.print(5,5); + y_solve = AMA_matrix.det(); + // System.out.println("AMA det "+y_solve); + y_solve = A_solve.rank(); + // System.out.println("Rank " + y_solve); + // M_Jama_matrix.print(5,5); + // b_solve.print(5,5); + // System.out.println("det A " + A_solve.rank()); + } + // try catch block added by Neeraj + try { + x_solve = A_solve.solve(b_solve); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + // System.out.println("\nError x " + + // system.getPhase(phasenumb).getComponent(0).getx()); + // System.out.println("Error T " + system.getTemperature()); + } + // d_n_t = x_solve.get(NELE,0)*n_t; + + // Equation 3.115 + dn_matrix = M_Jama_matrix.inverse() + .times((A_Jama_matrix.transpose().times(x_solve.getMatrix(0, NELE - 1, 0, 0))) + .minus(chem_pot_Jama_Matrix.transpose())) + .plus(new Matrix(n_mol, 1).transpose().times(x_solve.get(NELE, 0))); + d_n = dn_matrix.transpose().getArray()[0]; + } + + /** + *

+ * updateMoles. + *

+ */ + public void updateMoles() { + upMoles++; + // double changeMoles = 0.0; + for (int i = 0; i < components.length; i++) { + if (n_mol[i] > 0) { + system.addComponent(components[i].getComponentNumber(), + (n_mol[i] + - system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] + .getNumberOfMolesInPhase()), + phasenumb); + } else { + system.addComponent(components[i].getComponentNumber(), + (-0.99 * system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] + .getNumberOfMolesInPhase()), + phasenumb); + } + + // changeMoles += n_mol[i] - + // system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] + // .getNumberOfMolesInPhase(); + } + system.initBeta(); // this was added for mass trans calc + system.init_x_y(); + } + + /** + *

+ * solve. + *

+ * + * @return a boolean + */ + public boolean solve() { + double error = 1e10; + double errOld = 1e10; + double thisError = 0; + double p = 1.0; + // boolean negN = false; + double maxError = 1e-8; + upMoles = 0; + // double old = 0; + try { + do { + p++; + errOld = error; + error = 0.0; + this.chemSolve(); + // Commented out by Neeraj + double step1 = step(); + // System.out.println("step " + step1); + // Changed by Neeraj + // double step1 = 1.0; //leads to negative b error for (int i = 0; i < NSPEC; i++) { - n_mol[i] = - system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] - .getNumberOfMolesInPhase(); - - for (int k = 0; k < NSPEC; k++) { - if (k == i) { - kronDelt = 1.0; - } else { - kronDelt = 0.0; - } - // definition of M_matrix changed by Neeraj. Initially only 1st term was - // included - M_matrix[i][k] = kronDelt / system.getPhase(phasenumb).getComponents()[components[i] - .getComponentNumber()].getNumberOfMolesInPhase();// +system.getPhase(phasenumb).getComponent(i).logfugcoefdNi(system.getPhase(phasenumb), - // k); - // System.out.println("dfugdn " - // +system.getPhase(phasenumb).getComponent(i).logfugcoefdNi(this.system.getPhase(phasenumb), - // i)); - // if (i == k) System.out.println("n " - // +system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()].getNumberOfMolesInPhase() - // ); - } - } - // printComp(); - - M_Jama_matrix = new Matrix(M_matrix); - A_Jama_matrix = new Matrix(A_matrix); - b_matrix = new Matrix(b_element, 1); - - // M_Jama_matrix.print(10, 10); - // Following 5 statements added by Neeraj - // A_Jama_matrix.print(5,2); - // ystem.out.println("rank of A "+A_Jama_matrix.rank()); - // System.out.println("number of rows in A "+A_Jama_matrix.getRowDimension()); - // if(A_Jama_matrix.rank() 1e-15) { + thisError = Math.abs(dn_matrix.get(i, 0)) / system.getPhase(phasenumb) + .getComponent(components[i].getComponentNumber()).getNumberOfMolesInPhase(); + error += Math.abs(thisError); + n_mol[i] = dn_matrix.get(i, 0) * step1 + system.getPhase(phasenumb) + .getComponent(components[i].getComponentNumber()).getNumberOfMolesInPhase(); + // n_mol[i] = dn_matrix.get(i,0) + + // system.getPhase(phasenumb).getComponent(components[i].getComponentNumber()).getNumberOfMolesInPhase(); + } } - - chem_pot_Jama_Matrix = new Matrix(chem_pot, 1); - - AMA_matrix = A_Jama_matrix.times(M_Jama_matrix.inverse().times(A_Jama_matrix.transpose())); - AMU_matrix = A_Jama_matrix - .times(M_Jama_matrix.inverse().times(chem_pot_Jama_Matrix.transpose())); - Matrix nmol = new Matrix(n_mol, 1); - nmu = nmol.times(chem_pot_Jama_Matrix.transpose()); - // AMA_matrix.pr - // Added by Neeraj - // Matrix bm_matrix = (A_Jama_matrix.times(nmol.transpose()).transpose()); - // ((b_matrix.minus(bm_matrix)).times(R*system.getTemperature()).transpose()).print(10,10); - // AMU_matrix.print(20,20); - - A_solve.setMatrix(0, NELE - 1, 0, NELE - 1, AMA_matrix); - A_solve.setMatrix(0, NELE - 1, NELE, NELE, b_matrix.transpose()); - A_solve.setMatrix(NELE, NELE, 0, NELE - 1, b_matrix); - A_solve.set(NELE, NELE, 0.0); - - // A_solve.print(10,20); - // System.out.println("Rank of A_solve "+A_solve.rank()); - // Term subtracted from AMU_matrix -- Neeraj - // b_solve.setMatrix(0,NELE-1,0,0, - // AMU_matrix.minus((b_matrix.minus(bm_matrix)).times(R*system.getTemperature()).transpose())); - // Commented out by Neeraj - b_solve.setMatrix(0, NELE - 1, 0, 0, AMU_matrix); - b_solve.setMatrix(NELE, NELE, 0, 0, nmu); - // b_solve.print(10,5); - // System.out.println("det "+A_solve.det()); - - // y_solve added by Neeraj - // M_Jama_matrix.print(5,5); - y_solve = A_solve.det(); - // System.out.println("Determinant "+y_solve); - if ((y_solve < 1e-38 && y_solve > -1e-38) || y_solve < -1e70) { - // A_solve.print(5,5); - y_solve = AMA_matrix.det(); - // System.out.println("AMA det "+y_solve); - y_solve = A_solve.rank(); - // System.out.println("Rank " + y_solve); - // M_Jama_matrix.print(5,5); - // b_solve.print(5,5); - // System.out.println("det A " + A_solve.rank()); + if (error <= errOld) { + updateMoles(); + system.init(1, phasenumb); + calcRefPot(); } - - // try catch block added by Neeraj - try { - x_solve = A_solve.solve(b_solve); - } catch (Exception e) { - // e.printStackTrace(); - // System.out.println("\nError x " + - // system.getPhase(phasenumb).getComponent(0).getx()); - // System.out.println("Error T " + system.getTemperature()); + if (p > 25) { + maxError *= 2; } - // d_n_t = x_solve.get(NELE,0)*n_t; - - // Equation 3.115 - dn_matrix = M_Jama_matrix.inverse() - .times((A_Jama_matrix.transpose().times(x_solve.getMatrix(0, NELE - 1, 0, 0))) - .minus(chem_pot_Jama_Matrix.transpose())) - .plus(new Matrix(n_mol, 1).transpose().times(x_solve.get(NELE, 0))); - d_n = dn_matrix.transpose().getArray()[0]; + // Print statement added by Neeraj + // System.out.println("Error " + error); + } while (((errOld > maxError && Math.abs(error) > maxError) && p < 350) || p < 2); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return false; } - - /** - *

- * updateMoles. - *

- */ - public void updateMoles() { - upMoles++; - // double changeMoles = 0.0; - for (int i = 0; i < components.length; i++) { - system.addComponent(components[i].getComponentNumber(), (n_mol[i] - - system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] - .getNumberOfMolesInPhase()), - phasenumb); - - // changeMoles += n_mol[i] - - // system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] - // .getNumberOfMolesInPhase(); - } - system.initBeta(); // this was added for mass trans calc - system.init_x_y(); + // System.out.println("iter " + p); + if (p > 345) { + System.out.println("iter " + p + " err " + error); // return false; } - - /** - *

- * solve. - *

- * - * @return a boolean - */ - public boolean solve() { - double error = 1e10, errOld = 1e10, thisError = 0; - double p = 1.0; - // boolean negN = false; - double maxError = 1e-8; - upMoles = 0; - // double old = 0; - try { - do { - p++; - errOld = error; - error = 0.0; - this.chemSolve(); - // Commented out by Neeraj - double step1 = step(); - // System.out.println("step " + step1); - // Changed by Neeraj - // double step1 = 1.0; //leads to negative b error - for (int i = 0; i < NSPEC; i++) { - if (Math.abs(dn_matrix.get(i, 0)) - / system.getPhase(phasenumb).getComponents()[components[i] - .getComponentNumber()].getNumberOfMolesInPhase() > 1e-15) { - thisError = Math.abs(dn_matrix.get(i, 0)) / system.getPhase(phasenumb) - .getComponent(components[i].getComponentNumber()) - .getNumberOfMolesInPhase(); - error += Math.abs(thisError); - n_mol[i] = dn_matrix.get(i, 0) * step1 + system.getPhase(phasenumb) - .getComponent(components[i].getComponentNumber()) - .getNumberOfMolesInPhase(); - // n_mol[i] = dn_matrix.get(i,0) + - // system.getPhase(phasenumb).getComponent(components[i].getComponentNumber()).getNumberOfMolesInPhase(); - } - } - if (error <= errOld) { - updateMoles(); - system.init(1, phasenumb); - calcRefPot(); - } - if (p > 25) { - maxError *= 2; - } - // Print statement added by Neeraj - // System.out.println("Error " + error); - } while (((errOld > maxError && Math.abs(error) > maxError) && p < 350) || p < 2); - } catch (Exception e) { - e.printStackTrace(); - return false; - } - // System.out.println("iter " + p); - if (p > 345) { - System.out.println("iter " + p + " err " + error); // return false; - } - if (p >= 1000) { - System.out.println("Too many iterations in chemical equilibrium " + error); - System.out.println("P " + system.getPressure()); - System.out.println("T " + system.getTemperature()); - } - if (Double.isNaN(error)) { - System.out.println("error . NaN in chemSolve() "); - System.out.println("pressure " + system.getPressure()); - } - - // Print added by Neeraj - /* - * System.out.println("n[1] "+n_mol[0]); System.out.println("n[2] "+n_mol[1]); - * System.out.println("n[3] "+n_mol[2]); System.out.println("n[4] "+n_mol[3]); - * System.out.println("n[5] "+n_mol[4]); - */ - // system.initBeta(); - system.init(1, phasenumb); - // printComp();//system.init(0) - return error < maxError; + if (p >= 1000) { + System.out.println("Too many iterations in chemical equilibrium " + error); + System.out.println("P " + system.getPressure()); + System.out.println("T " + system.getTemperature()); + } + if (Double.isNaN(error)) { + System.out.println("error . NaN in chemSolve() "); + System.out.println("pressure " + system.getPressure()); } - /** - *

- * printComp. - *

+ // Print added by Neeraj + /* + * System.out.println("n[1] "+n_mol[0]); System.out.println("n[2] "+n_mol[1]); + * System.out.println("n[3] "+n_mol[2]); System.out.println("n[4] "+n_mol[3]); + * System.out.println("n[5] "+n_mol[4]); */ - public void printComp() { - for (int j = 0; j < NSPEC; j++) { - System.out.println(" SVAR : " + n_mol[j]); - double activity = system.getPhase(phasenumb).getActivityCoefficient( - components[j].getComponentNumber(), components[waterNumb].getComponentNumber()); - System.out.println("act " + activity + " comp " + components[j].getComponentName()); + // system.initBeta(); + system.init(1, phasenumb); + // printComp(); //system.init(0) + return error < maxError; + } + + /** + *

+ * printComp. + *

+ */ + public void printComp() { + for (int j = 0; j < NSPEC; j++) { + System.out.println(" SVAR : " + n_mol[j]); + double activity = system.getPhase(phasenumb).getActivityCoefficient( + components[j].getComponentNumber(), components[waterNumb].getComponentNumber()); + System.out.println("act " + activity + " comp " + components[j].getComponentName()); + } + } + + /** + *

+ * getMoles. + *

+ * + * @return an array of type double + */ + public double[] getMoles() { + return n_mol; + } + + /** + *

+ * step. + *

+ * + * @return a double + */ + public double step() { + double step = 1.0; + int i; + int check = 0; + double[] n_omega = new double[NSPEC]; + double[] chem_pot_omega = new double[NSPEC]; + double[] chem_pot = new double[NSPEC]; + double G_1 = 0.0; + + double G_0 = 0.0; + for (i = 0; i < NSPEC; i++) { + n_omega[i] = n_mol[i] + d_n[i]; + // System.out.println("nomega " + n_omega[i] ); + if (n_omega[i] < 0) { + check = i; + + step = innerStep(i, n_omega, check, step, true); + // System.out.println("step2 ... " + step); + return step; + } else { + // chem_pot_omega[i] = R*T*(chem_ref[i]+ Math.log(n_omega[i]/n_t) + + // Math.log(system.getPhases()[1].getComponents()[components[i].getComponentNumber()].getFugacityCoefficient() + // / chem_pot_pure[i])); + // chem_pot[i] = R*T*(chem_ref[i] + Math.log(n_mol[i]/n_t)+ + // Math.log(system.getPhases()[1].getComponents()[components[i].getComponentNumber()].getFugacityCoefficient() + // / chem_pot_pure[i])); + + if (system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] + .getReferenceStateType().equals("solvent")) { + chem_pot[i] = R * system.getPhase(phasenumb).getTemperature() + * (chem_ref[i] + Math.log( + system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] + .getNumberOfMolesInPhase()) + - Math.log(n_t) + logactivityVec[i]); + // system.getPhase(phasenumb).getActivityCoefficient(components[i].getComponentNumber(),components[waterNumb].getComponentNumber()))); + // System.out.println("solvent activ: "+ i + " " + + // system.getPhases()[1].getComponents()[components[i].getComponentNumber()].getFugacityCoefficient() + // / chem_pot_pure[i]); + } else { + chem_pot[i] = R * system.getPhase(phasenumb).getTemperature() + * (chem_ref[i] + Math.log( + system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] + .getNumberOfMolesInPhase()) + - Math.log(n_t) + logactivityVec[i]); + // system.getPhase(phasenumb).getActivityCoefficient(components[i].getComponentNumber(),components[waterNumb].getComponentNumber()))); + // System.out.println("solute activ : " + i + " " + + // system.getPhases()[1].getComponents()[components[i].getComponentNumber()].getFugacityCoefficient() + // / chem_pot_dilute[i]); } + chem_pot_omega[i] = R * system.getPhase(phasenumb).getTemperature() + * (chem_ref[i] + Math.log(n_omega[i]) - Math.log(n_t) + logactivityVec[i]); + } } - - /** - *

- * getMoles. - *

- * - * @return an array of {@link double} objects - */ - public double[] getMoles() { - return n_mol; + // Added by Neeraj + Alambda_matrix = A_Jama_matrix.transpose().times(x_solve.getMatrix(0, NELE - 1, 0, 0)); + + G_1 = 0.0; + for (i = 0; i < NSPEC; i++) { + // G_1 += chem_pot_omega[i] * d_n[i]; + // Added by Neeraj + G_1 += (chem_pot_omega[i] - Alambda_matrix.get(i, 0)) * d_n[i] * (1 / n_omega[i] - 1 / n_t); } + // System.out.println("G1 " +G_1); - /** - *

- * step. - *

- * - * @return a double - */ - public double step() { - double step = 1.0; - int i, check = 0; - double[] n_omega = new double[NSPEC]; - double[] chem_pot_omega = new double[NSPEC]; - double[] chem_pot = new double[NSPEC]; - double G_1 = 0.0, G_0 = 0.0; - - for (i = 0; i < NSPEC; i++) { - n_omega[i] = n_mol[i] + d_n[i]; - // System.out.println("nomega " + n_omega[i] ); - if (n_omega[i] < 0) { - check = i; - - step = innerStep(i, n_omega, check, step, true); - // System.out.println("step2 ... " + step); - return step; - } else { - // chem_pot_omega[i] = R*T*(chem_ref[i]+ Math.log(n_omega[i]/n_t) + - // Math.log(system.getPhases()[1].getComponents()[components[i].getComponentNumber()].getFugacityCoefficient()/chem_pot_pure[i])); - // chem_pot[i] = R*T*(chem_ref[i] + Math.log(n_mol[i]/n_t)+ - // Math.log(system.getPhases()[1].getComponents()[components[i].getComponentNumber()].getFugacityCoefficient()/chem_pot_pure[i])); - - if (system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] - .getReferenceStateType().equals("solvent")) { - chem_pot[i] = R * system.getPhase(phasenumb).getTemperature() * (chem_ref[i] - + Math.log(system.getPhase(phasenumb).getComponents()[components[i] - .getComponentNumber()].getNumberOfMolesInPhase()) - - Math.log(n_t) + logactivityVec[i]);// system.getPhase(phasenumb).getActivityCoefficient(components[i].getComponentNumber(),components[waterNumb].getComponentNumber()))); - // System.out.println("solvent activ: "+ i + " " + - // system.getPhases()[1].getComponents()[components[i].getComponentNumber()].getFugacityCoefficient()/chem_pot_pure[i]); - } else { - chem_pot[i] = R * system.getPhase(phasenumb).getTemperature() * (chem_ref[i] - + Math.log(system.getPhase(phasenumb).getComponents()[components[i] - .getComponentNumber()].getNumberOfMolesInPhase()) - - Math.log(n_t) + logactivityVec[i]);// system.getPhase(phasenumb).getActivityCoefficient(components[i].getComponentNumber(),components[waterNumb].getComponentNumber()))); - // System.out.println("solute activ : " + i + " " + - // system.getPhases()[1].getComponents()[components[i].getComponentNumber()].getFugacityCoefficient()/chem_pot_dilute[i]); - } - chem_pot_omega[i] = R * system.getPhase(phasenumb).getTemperature() - * (chem_ref[i] + Math.log(n_omega[i]) - Math.log(n_t) + logactivityVec[i]); - } - } + if (G_1 > 0) { + G_0 = 0.0; + for (i = 0; i < NSPEC; i++) { + // G_0 += chem_pot[i]*d_n[i]; // Added by Neeraj - Alambda_matrix = A_Jama_matrix.transpose().times(x_solve.getMatrix(0, NELE - 1, 0, 0)); - - G_1 = 0.0; - for (i = 0; i < NSPEC; i++) { - // G_1 += chem_pot_omega[i] * d_n[i]; - // Added by Neeraj - G_1 += (chem_pot_omega[i] - Alambda_matrix.get(i, 0)) * d_n[i] - * (1 / n_omega[i] - 1 / n_t); - } - // System.out.println("G1 " +G_1); - - if (G_1 > 0) { - G_0 = 0.0; - for (i = 0; i < NSPEC; i++) { - // G_0 += chem_pot[i]*d_n[i]; - // Added by Neeraj - G_0 += (chem_pot[i] - Alambda_matrix.get(i, 0)) * d_n[i] - * (1 / system.getPhase(phasenumb).getComponents()[components[i] - .getComponentNumber()].getNumberOfMolesInPhase() - 1 / n_t); - // G_0 += - // (chem_pot[i]-Alambda_matrix.get(i,0))*d_n[i]*(M_Jama_matrix.get(i,i)-1/n_t); - } - step = G_0 / (G_0 - G_1); - // System.out.println("step G " + step); - } - - step = innerStep(i, n_omega, check, step, false); - // System.out.println("step ... " + step); - - // return step; - return 1.0; + G_0 += (chem_pot[i] - Alambda_matrix.get(i, 0)) * d_n[i] + * (1 / system.getPhase(phasenumb).getComponents()[components[i].getComponentNumber()] + .getNumberOfMolesInPhase() - 1 / n_t); + // G_0 += + // (chem_pot[i]-Alambda_matrix.get(i,0))*d_n[i]*(M_Jama_matrix.get(i,i)-1/n_t); + } + step = G_0 / (G_0 - G_1); + // System.out.println("step G " + step); } - /** - *

- * innerStep. - *

- * - * @param i a int - * @param n_omega an array of {@link double} objects - * @param check a int - * @param step a double - * @param test a boolean - * @return a double - */ - public double innerStep(int i, double[] n_omega, int check, double step, boolean test) { - if (test) { - agemo = (-n_mol[i] / d_n[i]) * (1.0 - 0.03); - - for (i = check; i < NSPEC; i++) { - n_omega[i] = n_mol[i] + d_n[i]; - - if (n_omega[i] < 0) { - step = (-n_mol[i] / d_n[i]) * (1.0 - 0.03); - if (step < agemo) { - agemo = step; - } - } - } - - step = agemo; - - if (step > 1) { - step = 1.0; - } + step = innerStep(i, n_omega, check, step, false); + // System.out.println("step ... " + step); + + // return step; + return 1.0; + } + + /** + *

+ * innerStep. + *

+ * + * @param i a int + * @param n_omega an array of type double + * @param check a int + * @param step a double + * @param test a boolean + * @return a double + */ + public double innerStep(int i, double[] n_omega, int check, double step, boolean test) { + if (test) { + agemo = (-n_mol[i] / d_n[i]) * (1.0 - 0.03); + + for (i = check; i < NSPEC; i++) { + n_omega[i] = n_mol[i] + d_n[i]; + + if (n_omega[i] < 0) { + step = (-n_mol[i] / d_n[i]) * (1.0 - 0.03); + if (step < agemo) { + agemo = step; + } } - return step; - } + } - // Method added by Neeraj - /* - * public double step(){ double step=1.0; int i, check=0; double[] F = new double[NSPEC]; - * double[] F_omega = new double[NSPEC]; double[] chem_pot = new double[NSPEC]; double[] n_omega - * = new double[NSPEC]; - * - * Matrix F_matrix, F_omega_matrix, fs_matrix, f_matrix, f_omega_matrix; double fs,f,f_omega; - * - * for(i = 0;i 0.5) step = 0.5; return step; } - */ + step = agemo; + + if (step > 1) { + step = 1.0; + } + } + return step; + } + + // Method added by Neeraj + /* + * public double step(){ double step=1.0; int i, check=0; double[] F = new double[NSPEC]; double[] + * F_omega = new double[NSPEC]; double[] chem_pot = new double[NSPEC]; double[] n_omega = new + * double[NSPEC]; + * + * Matrix F_matrix, F_omega_matrix, fs_matrix, f_matrix, f_omega_matrix; double fs,f,f_omega; + * + * for(i = 0;i 0.5) step = 0.5; return step; } + */ } diff --git a/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/LinearProgrammingChemicalEquilibrium.java b/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/LinearProgrammingChemicalEquilibrium.java index 17f64a1b31..e9270e1a93 100644 --- a/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/LinearProgrammingChemicalEquilibrium.java +++ b/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/LinearProgrammingChemicalEquilibrium.java @@ -3,6 +3,7 @@ * * Created on 11. april 2001, 10:04 */ + package neqsim.chemicalReactions.chemicalEquilibriaum; import java.util.ArrayList; @@ -18,6 +19,8 @@ import org.apache.commons.math3.optim.linear.Relationship; import org.apache.commons.math3.optim.linear.SimplexSolver; import org.apache.commons.math3.optim.nonlinear.scalar.GoalType; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import Jama.Matrix; import neqsim.chemicalReactions.ChemicalReactionOperations; import neqsim.thermo.component.ComponentInterface; @@ -32,367 +35,347 @@ * @version $Id: $Id */ public class LinearProgrammingChemicalEquilibrium - implements neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - - double[] xEts = null; - double[][] Amatrix; - double[] chemRefPot; - ComponentInterface[] components; - double[] numbering; - String[] elements; - int changes = 0, minChanges = 0, maxChanges = 0; - ChemicalReactionOperations operations; - - /** - *

- * Constructor for LinearProgrammingChemicalEquilibrium. - *

- */ - public LinearProgrammingChemicalEquilibrium() {} + implements neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(LinearProgrammingChemicalEquilibrium.class); - /** - *

- * Constructor for LinearProgrammingChemicalEquilibrium. - *

- * - * @param chemRefPot an array of {@link double} objects - * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects - * @param elements an array of {@link java.lang.String} objects - * @param operations a {@link neqsim.chemicalReactions.ChemicalReactionOperations} object - * @param phase a int - */ - public LinearProgrammingChemicalEquilibrium(double[] chemRefPot, - ComponentInterface[] components, String[] elements, - ChemicalReactionOperations operations, int phase) { - this.operations = operations; - this.chemRefPot = chemRefPot; - this.components = components; - this.elements = elements; - changes = elements.length; - minChanges = elements.length; - maxChanges = components.length; - // System.out.println("max: " + maxChanges + " MIN: " +minChanges); - for (int i = 0; i < components.length; i++) { - components[i].setReferencePotential(chemRefPot[i]); - } + double[] xEts = null; + double[][] Amatrix; + double[] chemRefPot; + ComponentInterface[] components; + double[] numbering; + String[] elements; + int changes = 0; + int minChanges = 0; + int maxChanges = 0; - // Commented out by Neeraj - // Arrays.sort(components,new ReferencePotComparator()); - // this.changePrimaryComponents(); - if (operations.calcChemRefPot(phase) != null) { - System.arraycopy(operations.calcChemRefPot(phase), 0, this.chemRefPot, 0, - this.chemRefPot.length); - for (int i = 0; i < components.length; i++) { - components[i].setReferencePotential(chemRefPot[i]); - // System.out.println("sorting....." + components[i].getComponentNumber()); - } - } else { - do { - System.out.println("shifting primary components....."); - this.changePrimaryComponents(); - } while (operations.calcChemRefPot(phase) == null); - // System.out.println("shifting components....." ); - System.arraycopy(operations.calcChemRefPot(phase), 0, this.chemRefPot, 0, - this.chemRefPot.length); - for (int i = 0; i < components.length; i++) { - components[i].setReferencePotential(chemRefPot[i]); - } - Arrays.sort(components, new ReferencePotComparator()); - for (int i = 0; i < components.length; i++) { - chemRefPot[i] = components[i].getReferencePotential(); - } - } + ChemicalReactionOperations operations; - this.Amatrix = calcA(); + /** + *

+ * Constructor for LinearProgrammingChemicalEquilibrium. + *

+ * + * @param chemRefPot an array of type double + * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects + * @param elements an array of {@link java.lang.String} objects + * @param operations a {@link neqsim.chemicalReactions.ChemicalReactionOperations} object + * @param phase a int + */ + public LinearProgrammingChemicalEquilibrium(double[] chemRefPot, ComponentInterface[] components, + String[] elements, ChemicalReactionOperations operations, int phase) { + this.operations = operations; + this.chemRefPot = chemRefPot; + this.components = components; + this.elements = elements; + changes = elements.length; + minChanges = elements.length; + maxChanges = components.length; + // System.out.println("max: " + maxChanges + " MIN: " +minChanges); + for (int i = 0; i < components.length; i++) { + components[i].setReferencePotential(chemRefPot[i]); } - // Modified method by Procede - /** - *

- * calcA. - *

- * - * @return an array of {@link double} objects - */ - public double[][] calcA() { - int A_size = - components.length - operations.getReactionList().getChemicalReactionList().size(); - if (elements.length < (components.length - - operations.getReactionList().getChemicalReactionList().size())) { - A_size = elements.length; - } - A_size = elements.length; - double[][] A = new double[A_size + 1][components.length]; - double[][] Am = new double[A_size][components.length]; - - for (int k = 0; k < A_size; k++) { - for (int i = 0; i < components.length; i++) { - for (int j = 0; j < components[i].getElements().getElementNames().length; j++) { - if (components[i].getElements().getElementNames()[j].equals(elements[k])) { - A[k][i] = components[i].getElements().getElementCoefs()[j]; - Am[k][i] = components[i].getElements().getElementCoefs()[j]; - } - } - } - } - - for (int i = 0; i < components.length; i++) { - A[A_size][i] = components[i].getIonicCharge(); - } - /* - * //Added By Neeraj Matrix A_matrix = new Matrix(A); A_matrix.print(10, 10); if - * (A_matrix.rank() < (elements.length)) { Amatrix = Am; return Am; } else { Amatrix = A; - * return A; } - */ - return A; + // Commented out by Neeraj + // Arrays.sort(components,new ReferencePotComparator()); + // this.changePrimaryComponents(); + if (operations.calcChemRefPot(phase) != null) { + System.arraycopy(operations.calcChemRefPot(phase), 0, this.chemRefPot, 0, + this.chemRefPot.length); + for (int i = 0; i < components.length; i++) { + components[i].setReferencePotential(chemRefPot[i]); + // System.out.println("sorting....." + components[i].getComponentNumber()); + } + } else { + do { + System.out.println("shifting primary components....."); + this.changePrimaryComponents(); + } while (operations.calcChemRefPot(phase) == null); + // System.out.println("shifting components....." ); + System.arraycopy(operations.calcChemRefPot(phase), 0, this.chemRefPot, 0, + this.chemRefPot.length); + for (int i = 0; i < components.length; i++) { + components[i].setReferencePotential(chemRefPot[i]); + } + Arrays.sort(components, new ReferencePotComparator()); + for (int i = 0; i < components.length; i++) { + chemRefPot[i] = components[i].getReferencePotential(); + } } - /** - *

- * getA. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getA() { - return Amatrix; - } + this.Amatrix = calcA(); + } - /** - *

- * getRefPot. - *

- * - * @return an array of {@link double} objects - */ - public double[] getRefPot() { - return chemRefPot; + // Modified method by Procede + /** + *

+ * calcA. + *

+ * + * @return an array of type double + */ + public double[][] calcA() { + int A_size = components.length - operations.getReactionList().getChemicalReactionList().size(); + if (elements.length < (components.length + - operations.getReactionList().getChemicalReactionList().size())) { + A_size = elements.length; } + A_size = elements.length; + double[][] A = new double[A_size + 1][components.length]; + double[][] Am = new double[A_size][components.length]; - /** - *

- * changePrimaryComponents. - *

- */ - public void changePrimaryComponents() { - if (changes == maxChanges && minChanges >= 0) { - changes = minChanges; - minChanges--; + for (int k = 0; k < A_size; k++) { + for (int i = 0; i < components.length; i++) { + for (int j = 0; j < components[i].getElements().getElementNames().length; j++) { + if (components[i].getElements().getElementNames()[j].equals(elements[k])) { + A[k][i] = components[i].getElements().getElementCoefs()[j]; + Am[k][i] = components[i].getElements().getElementCoefs()[j]; + } } - ComponentInterface tempComp; - tempComp = components[minChanges - 1].clone(); - components[minChanges - 1] = components[changes].clone(); - components[changes] = tempComp; - changes++; - // chemRefPot = operations.calcChemRefPot(); - /* - * this.Amatrix = calcA(); Matrix temp = ((Matrix) (new Matrix(Amatrix))).getMatrix(0, - * elements.length-1, 0, elements.length-1); System.out.println("rank....." +temp.rank()); - */ + } } - // Method commented out by Neeraj + for (int i = 0; i < components.length; i++) { + A[A_size][i] = components[i].getIonicCharge(); + } /* - * public double[] generateInitialEstimates(SystemInterface system, double[] bVector, double - * inertMoles, int phase){ Matrix solved; Matrix atemp = new - * Matrix(Amatrix).getMatrix(0,Amatrix.length-1,0,Amatrix[0].length-1).copy(); Matrix mutemp = - * new Matrix(chemRefPot,1).times(1.0/(R*system.getPhase(phase).getTemperature())). copy(); - * Matrix lagrangeTemp = atemp.transpose().solve(mutemp.transpose()).copy(); //bmatrix and Ans - * Added by Neeraj //bmatrix = new Matrix(bVector,1); //int rank = atemp.rank(); - * //System.out.println("Rank of A "+rank); //Ans = atemp.solve(bmatrix.transpose()); - * //System.out.println("Ans"); //Ans.print(10,8); //Print statements added by Neeraj - * System.out.println("lagranges: "); lagrangeTemp.print(10,2); System.out.println("refpot: "); - * mutemp.print(10,2); System.out.println("A: "); atemp.print(10,2); - * - * - * Matrix rTemp = new Matrix(atemp.getRowDimension(),1); rTemp.set(0,0,inertMoles/bVector[0]); - * for(int i=1;i1e-10); - * - * double temp=1.0; for(int i=1;i - * calcx. - *

- * - * @param atemp a {@link Jama.Matrix} object - * @param lagrangeTemp a {@link Jama.Matrix} object - */ - public void calcx(Matrix atemp, Matrix lagrangeTemp) { - /* - * xEts = new double[atemp.getColumnDimension()]; for(int - * k=0;k200) { - * this.changePrimaryComponents(); return this.generateInitialEstimates(system, bVector, - * inertMoles); } } xEts = new double[Amatrix[0].length]; for(int i=0;i + * getA. + *

+ * + * @return an array of type double + */ + public double[][] getA() { + return Amatrix; + } + + /** + *

+ * getRefPot. + *

+ * + * @return an array of type double + */ + public double[] getRefPot() { + return chemRefPot; + } + + /** + *

+ * changePrimaryComponents. + *

+ */ + public void changePrimaryComponents() { + if (changes == maxChanges && minChanges >= 0) { + changes = minChanges; + minChanges--; } - // Method added by Neeraj + ComponentInterface tempComp; + tempComp = components[minChanges - 1].clone(); + components[minChanges - 1] = components[changes].clone(); + components[changes] = tempComp; + changes++; + // chemRefPot = operations.calcChemRefPot(); /* - * public double[] generateInitialEstimates(SystemInterface system, double[] bVector, double - * inertMoles, int phase){ int i,j; double[] n = new double[components.length]; Matrix atemp, - * btemp; Matrix mutemp = new - * Matrix(chemRefPot,1).times(1.0/(R*system.getPhase(phase).getTemperature())). copy(); Matrix - * ntemp; atemp = new Matrix(7,7); btemp = new Matrix(1,7); //for (i=0;i<4;i++) for - * (i=0;i<5;i++) { for (j=0;j<7;j++) atemp.set(i,j,Amatrix[i][j]); btemp.set(0,i,bVector[i]); - * - * } atemp.set(5,4,1); atemp.set(6,5,1); //atemp.set(4,4,1); //atemp.set(5,5,1); - * //atemp.set(6,1,1); //atemp.print(5,1); //btemp.print(5,5); //mutemp.print(5,5); ntemp = - * atemp.solve(btemp.transpose()); ntemp.print(5,5); for (i=0;i<7;i++) n[i] = ntemp.get(i,0); - * int rank = atemp.rank(); return n; - * - * - * } + * this.Amatrix = calcA(); Matrix temp = ((Matrix) (new Matrix(Amatrix))).getMatrix(0, + * elements.length-1, 0, elements.length-1); System.out.println("rank....." +temp.rank()); */ + } + + // Method commented out by Neeraj + /* + * public double[] generateInitialEstimates(SystemInterface system, double[] bVector, double + * inertMoles, int phase){ Matrix solved; Matrix atemp = new + * Matrix(Amatrix).getMatrix(0,Amatrix.length-1,0,Amatrix[0].length-1).copy(); Matrix mutemp = new + * Matrix(chemRefPot,1).times(1.0/(R*system.getPhase(phase).getTemperature())). copy(); Matrix + * lagrangeTemp = atemp.transpose().solve(mutemp.transpose()).copy(); //bmatrix and Ans Added by + * Neeraj //bmatrix = new Matrix(bVector,1); //int rank = atemp.rank(); + * //System.out.println("Rank of A "+rank); //Ans = atemp.solve(bmatrix.transpose()); + * //System.out.println("Ans"); //Ans.print(10,8); //Print statements added by Neeraj + * System.out.println("lagranges: "); lagrangeTemp.print(10,2); System.out.println("refpot: "); + * mutemp.print(10,2); System.out.println("A: "); atemp.print(10,2); + * + * Matrix rTemp = new Matrix(atemp.getRowDimension(),1); rTemp.set(0,0,inertMoles/bVector[0]); + * for(int i=1;i1e-10); + * + * double temp=1.0; for(int i=1;i - * generateInitialEstimates. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param bVector an array of {@link double} objects - * @param inertMoles a double - * @param phase a int - * @return an array of {@link double} objects + /** + *

+ * calcx. + *

+ * + * @param atemp a {@link Jama.Matrix} object + * @param lagrangeTemp a {@link Jama.Matrix} object + */ + public void calcx(Matrix atemp, Matrix lagrangeTemp) { + /* + * xEts = new double[atemp.getColumnDimension()]; for(int k=0;k200) { + * this.changePrimaryComponents(); return this.generateInitialEstimates(system, bVector, + * inertMoles); } } xEts = new double[Amatrix[0].length]; for(int i=0;i cons = new ArrayList(); - for (j = 0; j < bVector.length; j++) { - for (i = 0; i < components.length; i++) { - v[i + 1] = Amatrix[j][i]; - } - rhs = bVector[j]; - cons.add(new LinearConstraint(v, Relationship.EQ, rhs)); - } + } + // Method added by Neeraj + /* + * public double[] generateInitialEstimates(SystemInterface system, double[] bVector, double + * inertMoles, int phase){ int i,j; double[] n = new double[components.length]; Matrix atemp, + * btemp; Matrix mutemp = new + * Matrix(chemRefPot,1).times(1.0/(R*system.getPhase(phase).getTemperature())). copy(); Matrix + * ntemp; atemp = new Matrix(7,7); btemp = new Matrix(1,7); //for (i=0;i<4;i++) for (i=0;i<5;i++) + * { for (j=0;j<7;j++) atemp.set(i,j,Amatrix[i][j]); btemp.set(0,i,bVector[i]); } + * atemp.set(5,4,1); atemp.set(6,5,1); //atemp.set(4,4,1); //atemp.set(5,5,1); //atemp.set(6,1,1); + * //atemp.print(5,1); //btemp.print(5,5); //mutemp.print(5,5); ntemp = + * atemp.solve(btemp.transpose()); ntemp.print(5,5); for (i=0;i<7;i++) n[i] = ntemp.get(i,0); int + * rank = atemp.rank(); return n; } + */ - NonNegativeConstraint nonneg = new NonNegativeConstraint(true); - LinearConstraintSet consSet = new LinearConstraintSet(cons); - SimplexSolver solver = new SimplexSolver(); - PointValuePair optimal = null; - try { - optimal = solver.optimize(new MaxIter(1000), f, consSet, GoalType.MINIMIZE, nonneg); - } catch (NoFeasibleSolutionException exp) { - System.out.println("no feasible solution"); - return null; - } catch (Exception exp) { - System.out.println("linear optimization failed"); - return null; - } + // Method updated to use Apache Commons Math 3 by Marlene 07.12.18 + /** + *

+ * generateInitialEstimates. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param bVector an array of type double + * @param inertMoles a double + * @param phase a int + * @return an array of type double + */ + public double[] generateInitialEstimates(SystemInterface system, double[] bVector, + double inertMoles, int phase) { + int i; + int j; + double rhs = 0.0; + Matrix mutemp = + new Matrix(chemRefPot, 1).times(1.0 / (R * system.getPhase(phase).getTemperature())).copy(); + double[] v = new double[components.length + 1]; + for (i = 0; i < components.length; i++) { + v[i + 1] = mutemp.get(0, i); + } + LinearObjectiveFunction f = new LinearObjectiveFunction(v, 0.0); + List cons = new ArrayList(); + for (j = 0; j < bVector.length; j++) { + for (i = 0; i < components.length; i++) { + v[i + 1] = Amatrix[j][i]; + } + rhs = bVector[j]; + cons.add(new LinearConstraint(v, Relationship.EQ, rhs)); + } - int compNumb = system.getPhase(phase).getNumberOfComponents(); - double lp_solution[] = new double[compNumb]; - double[] temp = optimal.getPoint(); - for (i = 0; i < compNumb - (compNumb - components.length); i++) { - lp_solution[i] = temp[i + 1]; - } + NonNegativeConstraint nonneg = new NonNegativeConstraint(true); + LinearConstraintSet consSet = new LinearConstraintSet(cons); + SimplexSolver solver = new SimplexSolver(); + PointValuePair optimal = null; + try { + optimal = solver.optimize(new MaxIter(1000), f, consSet, GoalType.MINIMIZE, nonneg); + } catch (NoFeasibleSolutionException ex) { + logger.error("no feasible solution", ex); + return null; + } catch (Exception ex) { + logger.error("linear optimization failed", ex); + return null; + } - return lp_solution; + int compNumb = system.getPhase(phase).getNumberOfComponents(); + double[] lp_solution = new double[compNumb]; + double[] temp = optimal.getPoint(); + for (i = 0; i < compNumb - (compNumb - components.length); i++) { + lp_solution[i] = temp[i + 1]; } + + return lp_solution; + } } diff --git a/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ReferencePotComparator.java b/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ReferencePotComparator.java index 743ff63e0d..8fad021378 100644 --- a/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ReferencePotComparator.java +++ b/src/main/java/neqsim/chemicalReactions/chemicalEquilibriaum/ReferencePotComparator.java @@ -3,6 +3,7 @@ * * Created on 11. april 2001, 20:21 */ + package neqsim.chemicalReactions.chemicalEquilibriaum; import java.util.Comparator; @@ -17,17 +18,17 @@ * @version $Id: $Id */ public class ReferencePotComparator - implements Comparator, java.io.Serializable { - private static final long serialVersionUID = 1000; + implements Comparator, java.io.Serializable { + private static final long serialVersionUID = 1000; - /** {@inheritDoc} */ - @Override - public int compare(ComponentInterface o1, ComponentInterface o2) { - double v1 = o1.getReferencePotential(); - double v2 = o2.getReferencePotential(); + /** {@inheritDoc} */ + @Override + public int compare(ComponentInterface o1, ComponentInterface o2) { + double v1 = o1.getReferencePotential(); + double v2 = o2.getReferencePotential(); - int ans = v1 >= v2 ? 1 : 0; + int ans = v1 >= v2 ? 1 : 0; - return ans; - } + return ans; + } } diff --git a/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReaction.java b/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReaction.java index 9a98e757b2..7b4616a892 100644 --- a/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReaction.java +++ b/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReaction.java @@ -3,6 +3,7 @@ * * Created on 4. februar 2001, 15:32 */ + package neqsim.chemicalReactions.chemicalReaction; import Jama.Matrix; @@ -20,478 +21,470 @@ * @version $Id: $Id */ public class ChemicalReaction extends NamedBaseClass - implements neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - - String[] names, reactantNames, productNames; - double[] stocCoefs = new double[4]; - double[] reacCoefs, prodCoefs, moles; - boolean shiftSignK = false; - double[] K = new double[4]; - double rateFactor = 0, activationEnergy, refT; - double G = 0, lnK = 0; - int numberOfReactants = 0; - - /** - *

- * Constructor for ChemicalReaction. - *

- * - * @deprecated use - * {@link #ChemicalReaction(String, String[], double[], double[], double, double, double)} - * instead + implements neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + + String[] names; + String[] reactantNames; + String[] productNames; + double[] stocCoefs = new double[4]; + double[] reacCoefs; + double[] prodCoefs; + double[] moles; + boolean shiftSignK = false; + double[] K = new double[4]; + double rateFactor = 0; + double activationEnergy; + double refT; + double G = 0; + double lnK = 0; + int numberOfReactants = 0; + + /** + *

+ * Constructor for ChemicalReaction. + *

+ * + * @param name a {@link java.lang.String} object + * @param names an array of {@link java.lang.String} objects + * @param stocCoefs an array of type double + * @param K an array of type double + * @param r a double + * @param activationEnergy a double + * @param refT a double + */ + public ChemicalReaction(String name, String[] names, double[] stocCoefs, double[] K, double r, + double activationEnergy, double refT) { + /* + * this.names = names; this.stocCoefs = stocCoefs; this.K = K; */ - @Deprecated - public ChemicalReaction() { - super("ChemicalReaction"); + super(name); + this.names = new String[names.length]; + this.moles = new double[names.length]; + this.stocCoefs = new double[stocCoefs.length]; + this.K = new double[K.length]; + this.rateFactor = r; + this.refT = refT; + this.activationEnergy = activationEnergy; + + System.arraycopy(names, 0, this.names, 0, names.length); + System.arraycopy(stocCoefs, 0, this.stocCoefs, 0, stocCoefs.length); + System.arraycopy(K, 0, this.K, 0, K.length); + numberOfReactants = 0; + + for (int i = 0; i < names.length; i++) { + // System.out.println("stoc coef: " + this.stocCoefs[i]); + if (stocCoefs[i] < 0) { + numberOfReactants++; + } } - /** - *

- * Constructor for ChemicalReaction. - *

- * - * @param name a {@link java.lang.String} object - * @param names an array of {@link java.lang.String} objects - * @param stocCoefs an array of {@link double} objects - * @param K an array of {@link double} objects - * @param r a double - * @param activationEnergy a double - * @param refT a double - */ - public ChemicalReaction(String name, String[] names, double[] stocCoefs, double[] K, double r, - double activationEnergy, double refT) { - /* - * this.names = names; this.stocCoefs = stocCoefs; this.K = K; - * - */ - super(name); - this.names = new String[names.length]; - this.moles = new double[names.length]; - this.stocCoefs = new double[stocCoefs.length]; - this.K = new double[K.length]; - this.rateFactor = r; - this.refT = refT; - this.activationEnergy = activationEnergy; - - System.arraycopy(names, 0, this.names, 0, names.length); - System.arraycopy(stocCoefs, 0, this.stocCoefs, 0, stocCoefs.length); - System.arraycopy(K, 0, this.K, 0, K.length); - numberOfReactants = 0; - - for (int i = 0; i < names.length; i++) { - // System.out.println("stoc coef: " + this.stocCoefs[i]); - if (stocCoefs[i] < 0) { - numberOfReactants++; - } - } - - reactantNames = new String[numberOfReactants]; - productNames = new String[names.length - numberOfReactants]; - // this.reacCoefs = new double[numberOfReactants]; - // this.prodCoefs = new double[names.length - numberOfReactants]; - int k = 0, l = 0; - for (int i = 0; i < names.length; i++) { - if (stocCoefs[i] < 0) { - // reacCoefs[k] = stocCoefs[i]; - reactantNames[k++] = this.names[i]; - } else { - // prodCoefs[l] = stocCoefs[i]; - productNames[l++] = this.names[i]; - } - } + reactantNames = new String[numberOfReactants]; + productNames = new String[names.length - numberOfReactants]; + // this.reacCoefs = new double[numberOfReactants]; + // this.prodCoefs = new double[names.length - numberOfReactants]; + int k = 0; + int l = 0; + for (int i = 0; i < names.length; i++) { + if (stocCoefs[i] < 0) { + // reacCoefs[k] = stocCoefs[i]; + reactantNames[k++] = this.names[i]; + } else { + // prodCoefs[l] = stocCoefs[i]; + productNames[l++] = this.names[i]; + } } - - /** - *

- * Getter for the field reactantNames. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[] getReactantNames() { - return reactantNames; + } + + /** + *

+ * Getter for the field reactantNames. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getReactantNames() { + return reactantNames; + } + + /** + * reaction constant at reference temperature. + * + * @return a double + */ + public double getRateFactor() { + return rateFactor; + } + + /** + *

+ * Getter for the field rateFactor. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getRateFactor(PhaseInterface phase) { + // return rateFactor * Math.exp(-activationEnergy/R*(1.0/phase.getTemperature() + // - 1.0/refT)); + return 2.576e9 * Math.exp(-6024.0 / phase.getTemperature()) / 1000.0; + } + + /** + *

+ * Getter for the field stocCoefs. + *

+ * + * @return an array of type double + */ + public double[] getStocCoefs() { + return this.stocCoefs; + } + + /** + *

+ * Getter for the field productNames. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getProductNames() { + return productNames; + } + + /** + *

+ * Getter for the field names. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getNames() { + return names; + } + + /** + *

+ * calcKx. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param phaseNumb a int + * @return a double + */ + public double calcKx(neqsim.thermo.system.SystemInterface system, int phaseNumb) { + double kx = 1.0; + for (int i = 0; i < names.length; i++) { + // System.out.println("name " + names[i] + " stcoc " + stocCoefs[i]); + kx *= Math.pow(system.getPhase(phaseNumb).getComponent(names[i]).getx(), stocCoefs[i]); } - - /** - * reaction constant at reference temperature - * - * @return a double - */ - public double getRateFactor() { - return rateFactor; + return kx; + } + + /** + *

+ * calcKgamma. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param phaseNumb a int + * @return a double + */ + public double calcKgamma(neqsim.thermo.system.SystemInterface system, int phaseNumb) { + double kgamma = 1.0; + for (int i = 0; i < names.length; i++) { + // System.out.println("name " + names[i] + " stcoc " + stocCoefs[i]); + if (system.getPhase(phaseNumb).getComponent(names[i]).calcActivity()) { + kgamma *= Math.pow( + system.getPhase(phaseNumb).getActivityCoefficient( + system.getPhase(phaseNumb).getComponent(names[i]).getComponentNumber(), + system.getPhase(phaseNumb).getComponent("water").getComponentNumber()), + stocCoefs[i]); + } } - - /** - *

- * Getter for the field rateFactor. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getRateFactor(PhaseInterface phase) { - // return rateFactor * Math.exp(-activationEnergy/R*(1.0/phase.getTemperature() - // - 1.0/refT)); - return 2.576e9 * Math.exp(-6024.0 / phase.getTemperature()) / 1000.0; + return kgamma; + } + + /** + *

+ * getSaturationRatio. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param phaseNumb a int + * @return a double + */ + public double getSaturationRatio(neqsim.thermo.system.SystemInterface system, int phaseNumb) { + double ksp = 1.0; + for (int i = 0; i < names.length; i++) { + // System.out.println("name " + names[i] + " stcoc " + stocCoefs[i]); + if (stocCoefs[i] < 0) { + ksp *= Math.pow(system.getPhase(phaseNumb).getComponent(names[i]).getx(), -stocCoefs[i]); + } } - - /** - *

- * getK. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getK(PhaseInterface phase) { - double temperature = phase.getTemperature(); - lnK = K[0] + K[1] / (temperature) + K[2] * Math.log(temperature) + K[3] * temperature; - if (shiftSignK) { - lnK = -lnK; + ksp /= (getK(system.getPhase(phaseNumb))); + return ksp; + } + + /** + *

+ * calcK. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param phaseNumb a int + * @return a double + */ + public double calcK(neqsim.thermo.system.SystemInterface system, int phaseNumb) { + return calcKx(system, phaseNumb) * calcKgamma(system, phaseNumb); + } + + /** + * Generaters initial estimates for the molenumbers. + * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects + * @param Amatrix an array of type double + * @param chemRefPot an array of type double + */ + public void initMoleNumbers(PhaseInterface phase, ComponentInterface[] components, + double[][] Amatrix, double[] chemRefPot) { + Matrix tempAmatrix = new Matrix(Amatrix.length, names.length); + Matrix tempNmatrix = new Matrix(names.length, 1); + Matrix tempRefPotmatrix = new Matrix(names.length, 1); + + for (int i = 0; i < names.length; i++) { + for (int j = 0; j < components.length; j++) { + // System.out.println("names: " + names[i] + " " + + // system.getPhases()[0].getComponents()[j].getName()); + if (this.names[i].equals(components[j].getName())) { + for (int k = 0; k < Amatrix.length; k++) { + tempAmatrix.set(k, i, Amatrix[k][j]); + } + tempNmatrix.set(i, 0, components[j].getNumberOfMolesInPhase()); + tempRefPotmatrix.set(i, 0, chemRefPot[j]); } - // System.out.println("K " + Math.exp(lnK)); - return Math.exp(lnK); + } } - /** - *

- * Getter for the field stocCoefs. - *

- * - * @return an array of {@link double} objects - */ - public double[] getStocCoefs() { - return this.stocCoefs; - } + // Matrix tempBmatrix = tempAmatrix.times(tempNmatrix); - /** - *

- * Getter for the field productNames. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[] getProductNames() { - return productNames; - } + // System.out.println("atemp: "); + // tempAmatrix.print(10,2); + // tempNmatrix.print(10,2); + // tempBmatrix.print(10,2); + // tempRefPotmatrix.print(10,2); - /** - *

- * Getter for the field names. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[] getNames() { - return names; - } + // set AprodMetrix and setAreacMatrix - /** - *

- * calcKx. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param phaseNumb a int - * @return a double - */ - public double calcKx(neqsim.thermo.system.SystemInterface system, int phaseNumb) { - double kx = 1.0; - for (int i = 0; i < names.length; i++) { - // System.out.println("name " + names[i] + " stcoc " + stocCoefs[i]); - kx *= Math.pow(system.getPhase(phaseNumb).getComponent(names[i]).getx(), stocCoefs[i]); - } - return kx; + Matrix tempAProdmatrix = new Matrix(Amatrix.length, productNames.length); + Matrix tempAReacmatrix = new Matrix(Amatrix.length, reactantNames.length); + // Matrix tempNProdmatrix = new Matrix(Amatrix.length, 1); + // Matrix tempNReacmatrix = new Matrix(Amatrix.length, 1); + + for (int i = 0; i < Amatrix.length; i++) { + for (int k = 0; k < reactantNames.length; k++) { + tempAReacmatrix.set(i, k, tempAmatrix.get(i, k)); + } } - /** - *

- * calcKgamma. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param phaseNumb a int - * @return a double - */ - public double calcKgamma(neqsim.thermo.system.SystemInterface system, int phaseNumb) { - double kgamma = 1.0; - for (int i = 0; i < names.length; i++) { - // System.out.println("name " + names[i] + " stcoc " + stocCoefs[i]); - if (system.getPhase(phaseNumb).getComponent(names[i]).calcActivity()) { - kgamma *= Math.pow(system.getPhase(phaseNumb).getActivityCoefficient( - system.getPhase(phaseNumb).getComponent(names[i]).getComponentNumber(), - system.getPhase(phaseNumb).getComponent("water").getComponentNumber()), - stocCoefs[i]); - } - } - return kgamma; + for (int i = 0; i < Amatrix.length; i++) { + for (int k = 0; k < productNames.length; k++) { + tempAProdmatrix.set(i, k, tempAmatrix.get(i, names.length - 1 - k)); + } } - /** - *

- * getSaturationRatio. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param phaseNumb a int - * @return a double - */ - public double getSaturationRatio(neqsim.thermo.system.SystemInterface system, int phaseNumb) { - double ksp = 1.0; - for (int i = 0; i < names.length; i++) { - // System.out.println("name " + names[i] + " stcoc " + stocCoefs[i]); - if (stocCoefs[i] < 0) { - ksp *= Math.pow(system.getPhase(phaseNumb).getComponent(names[i]).getx(), - -stocCoefs[i]); - } + // Matrix tempNProdmatrix = tempAProdmatrix.solve(tempBmatrix); + // Matrix tempNReacmatrix = tempAReacmatrix.solve(tempBmatrix); + + // System.out.println("btemp: "); + // tempNProdmatrix.print(10,2); + // tempNReacmatrix.print(10,2); + // tempAProdmatrix.print(10,2); + // tempAReacmatrix.print(10,2); + } + + /** + *

+ * init. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void init(PhaseInterface phase) { + double temperature = phase.getTemperature(); + lnK = K[0] + K[1] / (temperature) + K[2] * Math.log(temperature) + K[3] * temperature; + // System.out.println("K: " + Math.exp(lnK)); + for (int i = 0; i < names.length; i++) { + for (int j = 0; j < phase.getNumberOfComponents(); j++) { + if (this.names[i].equals(phase.getComponent(j).getName())) { + moles[i] = phase.getComponent(j).getNumberOfMolesInPhase(); } - ksp /= (getK(system.getPhase(phaseNumb))); - return ksp; + } } - /** - *

- * calcK. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param phaseNumb a int - * @return a double - */ - public double calcK(neqsim.thermo.system.SystemInterface system, int phaseNumb) { - return calcKx(system, phaseNumb) * calcKgamma(system, phaseNumb); + double cK = lnK; + for (int i = 0; i < names.length; i++) { + cK -= Math.log(moles[i] / phase.getNumberOfMolesInPhase()) * stocCoefs[i]; } - /** - * Generaters initial estimates for the molenumbers - * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects - * @param Amatrix an array of {@link double} objects - * @param chemRefPot an array of {@link double} objects - */ - public void initMoleNumbers(PhaseInterface phase, ComponentInterface[] components, - double[][] Amatrix, double[] chemRefPot) { - Matrix tempAmatrix = new Matrix(Amatrix.length, names.length); - Matrix tempNmatrix = new Matrix(names.length, 1); - Matrix tempRefPotmatrix = new Matrix(names.length, 1); - - for (int i = 0; i < names.length; i++) { - for (int j = 0; j < components.length; j++) { - // System.out.println("names: " + names[i] + " " + - // system.getPhases()[0].getComponents()[j].getName()); - if (this.names[i].equals(components[j].getName())) { - for (int k = 0; k < Amatrix.length; k++) { - tempAmatrix.set(k, i, Amatrix[k][j]); - } - tempNmatrix.set(i, 0, components[j].getNumberOfMolesInPhase()); - tempRefPotmatrix.set(i, 0, chemRefPot[j]); - } - } - } - - // Matrix tempBmatrix = tempAmatrix.times(tempNmatrix); - - // System.out.println("atemp: "); - // tempAmatrix.print(10,2); - // tempNmatrix.print(10,2); - // tempBmatrix.print(10,2); - // tempRefPotmatrix.print(10,2); - - // set AprodMetrix and setAreacMatrix - - Matrix tempAProdmatrix = new Matrix(Amatrix.length, productNames.length); - Matrix tempAReacmatrix = new Matrix(Amatrix.length, reactantNames.length); - // Matrix tempNProdmatrix = new Matrix(Amatrix.length, 1); - // Matrix tempNReacmatrix = new Matrix(Amatrix.length, 1); - - for (int i = 0; i < Amatrix.length; i++) { - for (int k = 0; k < reactantNames.length; k++) { - tempAReacmatrix.set(i, k, tempAmatrix.get(i, k)); - } - } - - for (int i = 0; i < Amatrix.length; i++) { - for (int k = 0; k < productNames.length; k++) { - tempAProdmatrix.set(i, k, tempAmatrix.get(i, names.length - 1 - k)); - } - } - - // Matrix tempNProdmatrix = tempAProdmatrix.solve(tempBmatrix); - // Matrix tempNReacmatrix = tempAReacmatrix.solve(tempBmatrix); - - // System.out.println("btemp: "); - // tempNProdmatrix.print(10,2); - // tempNReacmatrix.print(10,2); - // tempAProdmatrix.print(10,2); - // tempAReacmatrix.print(10,2); + if (Math.exp(cK) > 1) { + for (int i = 0; i < stocCoefs.length; i++) { + stocCoefs[i] = -stocCoefs[i]; + } + lnK = -lnK; + shiftSignK = !shiftSignK; } - - /** - *

- * init. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + } + + /** + *

+ * checkK. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void checkK(SystemInterface system) { + // double cK=Math.log(getK(system.getTemperature())); + // for(int i=0;i + * reactantsContains. + *

+ * + * @param names an array of {@link java.lang.String} objects + * @return a boolean + */ + public boolean reactantsContains(String[] names) { + boolean test = false; + /* + * if(reactantNames.length>names.length || productNames.length>names.length ){ return false; } */ - public void init(PhaseInterface phase) { - double temperature = phase.getTemperature(); - lnK = K[0] + K[1] / (temperature) + K[2] * Math.log(temperature) + K[3] * temperature; - // System.out.println("K: " + Math.exp(lnK)); - for (int i = 0; i < names.length; i++) { - for (int j = 0; j < phase.getNumberOfComponents(); j++) { - if (this.names[i].equals(phase.getComponent(j).getName())) { - moles[i] = phase.getComponent(j).getNumberOfMolesInPhase(); - } - } - } - double cK = lnK; - for (int i = 0; i < names.length; i++) { - cK -= Math.log(moles[i] / phase.getNumberOfMolesInPhase()) * stocCoefs[i]; - } - - if (Math.exp(cK) > 1) { - for (int i = 0; i < stocCoefs.length; i++) { - stocCoefs[i] = -stocCoefs[i]; - } - lnK = -lnK; - shiftSignK = !shiftSignK; + for (int j = 0; j < reactantNames.length; j++) { + for (int i = 0; i < names.length; i++) { + if (names[i].equals(reactantNames[j])) { + test = true; + break; + } else { + test = false; } + } + if (!test) { + break; + } } - /** - *

- * checkK. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public void checkK(SystemInterface system) { - // double cK=Math.log(getK(system.getTemperature())); - // for(int i=0;i - * reactantsContains. - *

- * - * @param names an array of {@link java.lang.String} objects - * @return a boolean - */ - public boolean reactantsContains(String[] names) { - boolean test = false; - /* - * if(reactantNames.length>names.length || productNames.length>names.length ){ return false; - * } - */ - - for (int j = 0; j < reactantNames.length; j++) { - for (int i = 0; i < names.length; i++) { - if (names[i].equals(reactantNames[j])) { - test = true; - break; - } else { - test = false; - } - } - if (test == false) { - break; - } + if (!test) { + for (int j = 0; j < productNames.length; j++) { + for (int i = 0; i < names.length; i++) { + if (names[i].equals(productNames[j])) { + test = true; + break; + } else { + test = false; + } } - - if (test == false) { - for (int j = 0; j < productNames.length; j++) { - for (int i = 0; i < names.length; i++) { - if (names[i].equals(productNames[j])) { - test = true; - break; - } else { - test = false; - } - } - if (test == false) { - break; - } - } + if (!test) { + break; } - - return test; + } } - /** - * Setter for property rateFactor. - * - * @param rateFactor New value of property rateFactor. - */ - public void setRateFactor(double rateFactor) { - this.rateFactor = rateFactor; - } - - /** - * Getter for property activationEnergy. - * - * @return Value of property activationEnergy. - */ - public double getActivationEnergy() { - return activationEnergy; - } - - /** - * Setter for property activationEnergy. - * - * @param activationEnergy New value of property activationEnergy. - */ - public void setActivationEnergy(double activationEnergy) { - this.activationEnergy = activationEnergy; - } - - /** - * Getter for property reactionHeat. Van't HOffs equation dh = d lnK/dT * R * T^2 - * - * @return Value of property reactionHeat. - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public double getReactionHeat(PhaseInterface phase) { - double diffKt = -K[1] / Math.pow(phase.getTemperature(), 2.0) - + K[2] / phase.getTemperature() + K[3]; - double sign = (shiftSignK = true) ? -1.0 : 1.0; - return sign * diffKt * Math.pow(phase.getTemperature(), 2.0) * R; - } - - /** - * Getter for property k. - * - * @return Value of property k. - */ - public double[] getK() { - return this.K; - } - - /** - * Setter for property k. - * - * @param k New value of property k. - */ - public void setK(double[] k) { - this.K = k; - } - - /** - *

- * setK. - *

- * - * @param i a int - * @param Kd a double - */ - public void setK(int i, double Kd) { - this.K[i] = Kd; + return test; + } + + /** + * Setter for property rateFactor. + * + * @param rateFactor New value of property rateFactor. + */ + public void setRateFactor(double rateFactor) { + this.rateFactor = rateFactor; + } + + /** + * Getter for property activationEnergy. + * + * @return Value of property activationEnergy. + */ + public double getActivationEnergy() { + return activationEnergy; + } + + /** + * Setter for property activationEnergy. + * + * @param activationEnergy New value of property activationEnergy. + */ + public void setActivationEnergy(double activationEnergy) { + this.activationEnergy = activationEnergy; + } + + /** + * Getter for property reactionHeat. Van't HOffs equation dh = d lnK/dT * R * T^2 + * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return Value of property reactionHeat. + */ + public double getReactionHeat(PhaseInterface phase) { + double diffKt = + -K[1] / Math.pow(phase.getTemperature(), 2.0) + K[2] / phase.getTemperature() + K[3]; + double sign = (shiftSignK = true) ? -1.0 : 1.0; + return sign * diffKt * Math.pow(phase.getTemperature(), 2.0) * R; + } + + /** + * Getter for property k. + * + * @return Value of property k. + */ + public double[] getK() { + return this.K; + } + + /** + *

+ * getK. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getK(PhaseInterface phase) { + double temperature = phase.getTemperature(); + lnK = K[0] + K[1] / (temperature) + K[2] * Math.log(temperature) + K[3] * temperature; + if (shiftSignK) { + lnK = -lnK; } + // System.out.println("K " + Math.exp(lnK)); + return Math.exp(lnK); + } + + /** + * Setter for property k. + * + * @param k New value of property k. + */ + public void setK(double[] k) { + this.K = k; + } + + /** + *

+ * setK. + *

+ * + * @param i a int + * @param Kd a double + */ + public void setK(int i, double Kd) { + this.K[i] = Kd; + } } diff --git a/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionFactory.java b/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionFactory.java index 37acb03872..3cd8401ff9 100644 --- a/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionFactory.java +++ b/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionFactory.java @@ -3,9 +3,12 @@ * * Created on 20. september 2004, 22:40 */ + package neqsim.chemicalReactions.chemicalReaction; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** *

@@ -15,70 +18,94 @@ * @author ESOL * @version $Id: $Id */ -public class ChemicalReactionFactory { - public ChemicalReactionFactory() {} - - /** - *

- * getChemicalReaction. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.chemicalReactions.chemicalReaction.ChemicalReaction} object - */ - public static ChemicalReaction getChemicalReaction(String name) { - ArrayList names = new ArrayList(); - ArrayList stocCoef = new ArrayList(); - double[] K = new double[4]; - double refT = 0; - double rateFactor = 0; - double activationEnergy = 0; - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); +public final class ChemicalReactionFactory { + static Logger logger = LogManager.getLogger(ChemicalReactionFactory.class); - try { - java.sql.ResultSet dataSet = null; - dataSet = database - .getResultSet("SELECT * FROM reactionkspdata where name='" + name + "'"); + /** + * Dummy constructor, not for use. Class is to be considered static. + */ + private ChemicalReactionFactory() {} - dataSet.next(); - String reacname = dataSet.getString("name"); - K[0] = Double.parseDouble(dataSet.getString("K1")); - K[1] = Double.parseDouble(dataSet.getString("K2")); - K[2] = Double.parseDouble(dataSet.getString("K3")); - K[3] = Double.parseDouble(dataSet.getString("K4")); - refT = Double.parseDouble(dataSet.getString("Tref")); - rateFactor = Double.parseDouble(dataSet.getString("r")); + /** + *

+ * getChemicalReaction. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.chemicalReactions.chemicalReaction.ChemicalReaction} object + */ + public static ChemicalReaction getChemicalReaction(String name) { + ArrayList names = new ArrayList(); + ArrayList stocCoef = new ArrayList(); + double[] K = new double[4]; + double refT = 0; + double rateFactor = 0; + double activationEnergy = 0; - activationEnergy = Double.parseDouble(dataSet.getString("ACTENERGY")); - neqsim.util.database.NeqSimDataBase database2 = - new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet2 = database2 - .getResultSet("SELECT * FROM stoccoefdata where reacname='" + reacname + "'"); - dataSet2.next(); - do { - names.add(dataSet2.getString("compname").trim()); - stocCoef.add((dataSet2.getString("stoccoef")).trim()); - } while (dataSet2.next()); + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet("SELECT * FROM reactiondata where name='" + name + "'")) { + if (dataSet.next()) { + String reacname = dataSet.getString("name"); + K[0] = Double.parseDouble(dataSet.getString("K1")); + K[1] = Double.parseDouble(dataSet.getString("K2")); + K[2] = Double.parseDouble(dataSet.getString("K3")); + K[3] = Double.parseDouble(dataSet.getString("K4")); + refT = Double.parseDouble(dataSet.getString("Tref")); + rateFactor = Double.parseDouble(dataSet.getString("r")); - // System.out.println("reaction added ok..."); - dataSet.close(); - } catch (Exception e) { - e.printStackTrace(); - String err = e.toString(); - System.out.println("could not add reacton: " + err); - } - try { - database.getConnection().close(); - } catch (Exception e) { - System.out.println("err closing database"); + activationEnergy = Double.parseDouble(dataSet.getString("ACTENERGY")); + try (java.sql.ResultSet dataSet2 = + database.getResultSet("SELECT * FROM stoccoefdata where reacname='" + reacname + "'")) { + while (dataSet2.next()) { + names.add(dataSet2.getString("compname").trim()); + stocCoef.add((dataSet2.getString("stoccoef")).trim()); + } + } finally { + if (names.size() == 0) { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException( + "ChemicalReactionFactory", "getChemicalReaction", "reacname", + "- found no data in table stoccoefdata for component named " + reacname)); + } } - String[] nameArray = new String[names.size()]; - double[] stocCoefArray = new double[names.size()]; - for (int i = 0; i < names.size(); i++) { - nameArray[i] = names.get(i); - stocCoefArray[i] = Double.parseDouble(stocCoef.get(i)); - } - return new ChemicalReaction(name, nameArray, stocCoefArray, K, rateFactor, activationEnergy, - refT); + } else { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException( + "ChemicalReactionFactory", "getChemicalReaction", "reacname", + "- found no data in table REACTIONDATA for component named " + name)); + } + } catch (Exception ex) { + // TODO: improve warning message, probably table missing? + logger.error("Failed getting data from REACTIONDATA for component named " + name + ":\n\t" + + ex.getMessage()); } + + String[] nameArray = new String[names.size()]; + double[] stocCoefArray = new double[names.size()]; + for (int i = 0; i < names.size(); i++) { + nameArray[i] = names.get(i); + stocCoefArray[i] = Double.parseDouble(stocCoef.get(i)); + } + return new ChemicalReaction(name, nameArray, stocCoefArray, K, rateFactor, activationEnergy, + refT); + } + + /** + * Get names of all chemical rections in database. + * + * @return Names of all chemical reactions in database. + */ + public static String[] getChemicalReactionNames() { + ArrayList nameList = new ArrayList(); + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = database.getResultSet("SELECT name FROM REACTIONDATA")) { + dataSet.next(); + do { + nameList.add(dataSet.getString("name").trim()); + } while (dataSet.next()); + } catch (Exception ex) { + logger.error("Failed reading from database."); + } + + return nameList.toArray(new String[0]); + } } diff --git a/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionList.java b/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionList.java index ababeee788..136df62f9e 100644 --- a/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionList.java +++ b/src/main/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionList.java @@ -3,12 +3,15 @@ * * Created on 4. februar 2001, 15:32 */ + package neqsim.chemicalReactions.chemicalReaction; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import Jama.Matrix; import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.component.ComponentInterface; @@ -24,511 +27,468 @@ * @version $Id: $Id */ public class ChemicalReactionList implements ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - - ArrayList chemicalReactionList = new ArrayList(); - String[] reactiveComponentList; - double[][] reacMatrix; - double[][] reacGMatrix; - double[][] tempReacMatrix; - double[][] tempStocMatrix; - - /** - *

- * Constructor for ChemicalReactionList. - *

- */ - public ChemicalReactionList() {} - - /** - *

- * readReactions. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public void readReactions(SystemInterface system) { - chemicalReactionList.clear(); - ArrayList names = new ArrayList(); - ArrayList stocCoef = new ArrayList(); - double r = 0, refT = 0, actH; - double[] K = new double[4]; - boolean useReaction = false; - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - if (system.getModelName().equals("Kent Eisenberg-model")) { - // System.out.println("selecting Kent-Eisenberg reaction set"); - dataSet = database.getResultSet("SELECT * FROM reactiondatakenteisenberg"); - } else { - // System.out.println("selecting standard reaction set"); - dataSet = database.getResultSet("SELECT * FROM reactiondata"); - } - - double[] coefArray; - String[] nameArray; - dataSet.next(); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ChemicalReactionList.class); + + ArrayList chemicalReactionList = new ArrayList(); + String[] reactiveComponentList; + double[][] reacMatrix; + double[][] reacGMatrix; + double[][] tempReacMatrix; + double[][] tempStocMatrix; + + /** + *

+ * readReactions. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void readReactions(SystemInterface system) { + // TODO: refact and combine with chemicalreactionfactory? + chemicalReactionList.clear(); + ArrayList names = new ArrayList(); + ArrayList stocCoef = new ArrayList(); + double r = 0; + double refT = 0; + double actH; + double[] K = new double[4]; + boolean useReaction = false; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + java.sql.ResultSet dataSet = null; + if (system.getModelName().equals("Kent Eisenberg-model")) { + // System.out.println("selecting Kent-Eisenberg reaction set"); + dataSet = database.getResultSet("SELECT * FROM reactiondatakenteisenberg"); + } else { + // System.out.println("selecting standard reaction set"); + dataSet = database.getResultSet("SELECT * FROM reactiondata"); + } + + double[] coefArray; + String[] nameArray; + dataSet.next(); + do { + useReaction = Integer.parseInt(dataSet.getString("usereaction")) == 1; + if (useReaction) { + names.clear(); + stocCoef.clear(); + String reacname = dataSet.getString("NAME"); + // System.out.println("name " +reacname ); + K[0] = Double.parseDouble(dataSet.getString("K1")); + K[1] = Double.parseDouble(dataSet.getString("K2")); + K[2] = Double.parseDouble(dataSet.getString("K3")); + K[3] = Double.parseDouble(dataSet.getString("K4")); + refT = Double.parseDouble(dataSet.getString("Tref")); + r = Double.parseDouble(dataSet.getString("r")); + actH = Double.parseDouble(dataSet.getString("ACTENERGY")); + + try ( + neqsim.util.database.NeqSimDataBase database2 = + new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet2 = database2 + .getResultSet("SELECT * FROM stoccoefdata where REACNAME='" + reacname + "'")) { + dataSet2.next(); do { - useReaction = Integer.parseInt(dataSet.getString("usereaction")) == 1; - if (useReaction) { - names.clear(); - stocCoef.clear(); - String reacname = dataSet.getString("NAME"); - // System.out.println("name " +reacname ); - K[0] = Double.parseDouble(dataSet.getString("K1")); - K[1] = Double.parseDouble(dataSet.getString("K2")); - K[2] = Double.parseDouble(dataSet.getString("K3")); - K[3] = Double.parseDouble(dataSet.getString("K4")); - refT = Double.parseDouble(dataSet.getString("Tref")); - r = Double.parseDouble(dataSet.getString("r")); - actH = Double.parseDouble(dataSet.getString("ACTENERGY")); - - java.sql.ResultSet dataSet2 = null; - try { - neqsim.util.database.NeqSimDataBase database2 = - new neqsim.util.database.NeqSimDataBase(); - dataSet2 = database2.getResultSet( - "SELECT * FROM stoccoefdata where REACNAME='" + reacname + "'"); - dataSet2.next(); - do { - // System.out.println("name of cop " - // +dataSet2.getString("compname").trim()); - names.add(dataSet2.getString("compname").trim()); - stocCoef.add((dataSet2.getString("stoccoef")).trim()); - } while (dataSet2.next()); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - dataSet2.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - // System.out.println(names); - // System.out.println(stocCoef); - nameArray = new String[names.size()]; - coefArray = new double[nameArray.length]; - for (int i = 0; i < nameArray.length; i++) { - coefArray[i] = Double.parseDouble(stocCoef.get(i)); - nameArray[i] = names.get(i); - } - - ChemicalReaction reaction = - new ChemicalReaction(reacname, nameArray, coefArray, K, r, actH, refT); - chemicalReactionList.add(reaction); - // System.out.println("reaction added ok..."); - } - } while (dataSet.next()); - } catch (Exception e) { - String err = e.toString(); - System.out.println("could not add reacton: " + err); - } finally { - try { - dataSet.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - try { - database.getConnection().close(); - } catch (Exception e) { - System.out.println("err closing database"); + // System.out.println("name of cop " + // +dataSet2.getString("compname").trim()); + names.add(dataSet2.getString("compname").trim()); + stocCoef.add((dataSet2.getString("stoccoef")).trim()); + } while (dataSet2.next()); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + + nameArray = new String[names.size()]; + coefArray = new double[nameArray.length]; + for (int i = 0; i < nameArray.length; i++) { + coefArray[i] = Double.parseDouble(stocCoef.get(i)); + nameArray[i] = names.get(i); + } + + ChemicalReaction reaction = + new ChemicalReaction(reacname, nameArray, coefArray, K, r, actH, refT); + chemicalReactionList.add(reaction); + // System.out.println("reaction added ok..."); } + } while (dataSet.next()); + } catch (Exception ex) { + logger.error("could not add reaction: ", ex); } - - /** - *

- * getReaction. - *

- * - * @param i a int - * @return a {@link neqsim.chemicalReactions.chemicalReaction.ChemicalReaction} object - */ - public ChemicalReaction getReaction(int i) { + } + + /** + *

+ * getReaction. + *

+ * + * @param i a int + * @return a {@link neqsim.chemicalReactions.chemicalReaction.ChemicalReaction} object + */ + public ChemicalReaction getReaction(int i) { + return chemicalReactionList.get(i); + } + + /** + *

+ * getReaction. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.chemicalReactions.chemicalReaction.ChemicalReaction} object + */ + public ChemicalReaction getReaction(String name) { + for (int i = 0; i < chemicalReactionList.size(); i++) { + if ((chemicalReactionList.get(i)).getName().equals(name)) { return chemicalReactionList.get(i); + } } - - /** - *

- * getReaction. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.chemicalReactions.chemicalReaction.ChemicalReaction} object - */ - public ChemicalReaction getReaction(String name) { - for (int i = 0; i < chemicalReactionList.size(); i++) { - if ((chemicalReactionList.get(i)).getName().equals(name)) { - return chemicalReactionList.get(i); - } - } - System.out.println("did not find reaction: " + name); - return null; + logger.warn("did not find reaction: " + name); + return null; + } + + /** + *

+ * removeJunkReactions. + *

+ * + * @param names an array of {@link java.lang.String} objects + */ + public void removeJunkReactions(String[] names) { + Iterator e = chemicalReactionList.iterator(); + while (e.hasNext()) { + // System.out.println("reaction name " +((ChemicalReaction) + // e.next()).getName()); + if (!(e.next()).reactantsContains(names)) { + e.remove(); + } } - - /** - *

- * removeJunkReactions. - *

- * - * @param names an array of {@link java.lang.String} objects - */ - public void removeJunkReactions(String[] names) { - Iterator e = chemicalReactionList.iterator(); - while (e.hasNext()) { - // System.out.println("reaction name " +((ChemicalReaction) - // e.next()).getName()); - if (!(e.next()).reactantsContains(names)) { - e.remove(); - } - } + } + + /** + *

+ * checkReactions. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void checkReactions(PhaseInterface phase) { + Iterator e = chemicalReactionList.iterator(); + while (e.hasNext()) { + (e.next()).init(phase); } - - /** - *

- * checkReactions. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void checkReactions(PhaseInterface phase) { - Iterator e = chemicalReactionList.iterator(); - while (e.hasNext()) { - (e.next()).init(phase); - } + } + + /** + *

+ * initMoleNumbers. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects + * @param Amatrix an array of type double + * @param chemRefPot an array of type double + */ + public void initMoleNumbers(PhaseInterface phase, ComponentInterface[] components, + double[][] Amatrix, double[] chemRefPot) { + Iterator e = chemicalReactionList.iterator(); + while (e.hasNext()) { + (e.next()).initMoleNumbers(phase, components, Amatrix, chemRefPot); + // ((ChemicalReaction)e).checkK(system); } - - /** - *

- * initMoleNumbers. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects - * @param Amatrix an array of {@link double} objects - * @param chemRefPot an array of {@link double} objects - */ - public void initMoleNumbers(PhaseInterface phase, ComponentInterface[] components, - double[][] Amatrix, double[] chemRefPot) { - Iterator e = chemicalReactionList.iterator(); - while (e.hasNext()) { - (e.next()).initMoleNumbers(phase, components, Amatrix, chemRefPot); - // ((ChemicalReaction)e).checkK(system); - } + } + + /** + *

+ * getAllComponents. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getAllComponents() { + HashSet components = new HashSet(); + Iterator e = chemicalReactionList.iterator(); + ChemicalReaction reaction; + while (e.hasNext()) { + reaction = e.next(); + components.addAll(Arrays.asList(reaction.getNames())); } - - /** - *

- * getAllComponents. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[] getAllComponents() { - HashSet components = new HashSet(); - Iterator e = chemicalReactionList.iterator(); - ChemicalReaction reaction; - while (e.hasNext()) { - reaction = e.next(); - components.addAll(Arrays.asList(reaction.getNames())); - } - String[] componentList = new String[components.size()]; - int k = 0; - Iterator newe = components.iterator(); - while (newe.hasNext()) { - componentList[k++] = newe.next(); - } - reactiveComponentList = componentList; - return componentList; + String[] componentList = new String[components.size()]; + int k = 0; + Iterator newe = components.iterator(); + while (newe.hasNext()) { + componentList[k++] = newe.next(); } - - /** - *

- * createReactionMatrix. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects - * @return an array of {@link double} objects - */ - public double[][] createReactionMatrix(PhaseInterface phase, ComponentInterface[] components) { - Iterator e = chemicalReactionList.iterator(); - ChemicalReaction reaction; - int reactionNumber = 0; - reacMatrix = new double[chemicalReactionList.size()][reactiveComponentList.length]; - reacGMatrix = new double[chemicalReactionList.size()][reactiveComponentList.length + 1]; - try { - while (e.hasNext()) { - reaction = e.next(); - for (int i = 0; i < components.length; i++) { - reacMatrix[reactionNumber][i] = 0; - // System.out.println("Component List loop "+components[i].getComponentName()); - for (int j = 0; j < reaction.getNames().length; j++) { - if (components[i].getName().equals(reaction.getNames()[j])) { - reacMatrix[reactionNumber][i] = reaction.getStocCoefs()[j]; - reacGMatrix[reactionNumber][i] = reaction.getStocCoefs()[j]; - } - } - } - reacGMatrix[reactionNumber][components.length] = - R * phase.getTemperature() * Math.log(reaction.getK(phase)); - reactionNumber++; + reactiveComponentList = componentList; + return componentList; + } + + /** + *

+ * createReactionMatrix. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects + * @return an array of type double + */ + public double[][] createReactionMatrix(PhaseInterface phase, ComponentInterface[] components) { + Iterator e = chemicalReactionList.iterator(); + ChemicalReaction reaction; + int reactionNumber = 0; + reacMatrix = new double[chemicalReactionList.size()][reactiveComponentList.length]; + reacGMatrix = new double[chemicalReactionList.size()][reactiveComponentList.length + 1]; + try { + while (e.hasNext()) { + reaction = e.next(); + for (int i = 0; i < components.length; i++) { + reacMatrix[reactionNumber][i] = 0; + // System.out.println("Component List loop "+components[i].getComponentName()); + for (int j = 0; j < reaction.getNames().length; j++) { + if (components[i].getName().equals(reaction.getNames()[j])) { + reacMatrix[reactionNumber][i] = reaction.getStocCoefs()[j]; + reacGMatrix[reactionNumber][i] = reaction.getStocCoefs()[j]; } - } catch (Exception er) { - er.printStackTrace(); + } } - - /* - * Matrix reacMatr; if (reacGMatrix.length > 0) { reacMatr = new Matrix(reacGMatrix); } - * System.out.println("reac matrix: "); reacMatr.print(10,3); - */ - return reacMatrix; + reacGMatrix[reactionNumber][components.length] = + R * phase.getTemperature() * Math.log(reaction.getK(phase)); + reactionNumber++; + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - /** - *

- * updateReferencePotentials. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects - * @return an array of {@link double} objects + /* + * Matrix reacMatr; if (reacGMatrix.length > 0) { reacMatr = new Matrix(reacGMatrix); } + * System.out.println("reac matrix: "); reacMatr.print(10,3); */ - public double[] updateReferencePotentials(PhaseInterface phase, - ComponentInterface[] components) { - for (int i = 0; i < chemicalReactionList.size(); i++) { - reacGMatrix[i][components.length] = R * phase.getTemperature() - * Math.log((chemicalReactionList.get(i)).getK(phase)); - } - return calcReferencePotentials(); + return reacMatrix; + } + + /** + *

+ * updateReferencePotentials. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects + * @return an array of type double + */ + public double[] updateReferencePotentials(PhaseInterface phase, ComponentInterface[] components) { + for (int i = 0; i < chemicalReactionList.size(); i++) { + reacGMatrix[i][components.length] = + R * phase.getTemperature() * Math.log((chemicalReactionList.get(i)).getK(phase)); } - - /** - *

- * getReactionGMatrix. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getReactionGMatrix() { - return reacGMatrix; + return calcReferencePotentials(); + } + + /** + *

+ * getReactionGMatrix. + *

+ * + * @return an array of type double + */ + public double[][] getReactionGMatrix() { + return reacGMatrix; + } + + /** + *

+ * getReactionMatrix. + *

+ * + * @return an array of type double + */ + public double[][] getReactionMatrix() { + return reacMatrix; + } + + /** + *

+ * calcReferencePotentials. + *

+ * + * @return an array of type double + */ + public double[] calcReferencePotentials() { + Matrix reacMatr = new Matrix(reacGMatrix); + Matrix Amatrix = reacMatr.copy().getMatrix(0, chemicalReactionList.size() - 1, 0, + chemicalReactionList.size() - 1); // new Matrix(reacGMatrix); + Matrix Bmatrix = reacMatr.copy().getMatrix(0, chemicalReactionList.size() - 1, + reacGMatrix[0].length - 1, reacGMatrix[0].length - 1); // new Matrix(reacGMatrix); + + if (Amatrix.rank() < chemicalReactionList.size()) { + System.out.println("rank of A matrix too low !!" + Amatrix.rank()); + return null; + } else { + Matrix solv = Amatrix.solve(Bmatrix.timesEquals(-1.0)); // Solves for A*X = -B + // System.out.println("ref pots"); + // solv.print(10,3); + return solv.transpose().getArrayCopy()[0]; } - - /** - *

- * getReactionMatrix. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getReactionMatrix() { - return reacMatrix; - } - - /** - *

- * calcReferencePotentials. - *

- * - * @return an array of {@link double} objects - */ - public double[] calcReferencePotentials() { - Matrix reacMatr = new Matrix(reacGMatrix); - Matrix Amatrix = reacMatr.copy().getMatrix(0, chemicalReactionList.size() - 1, 0, - chemicalReactionList.size() - 1);// new Matrix(reacGMatrix); - Matrix Bmatrix = reacMatr.copy().getMatrix(0, chemicalReactionList.size() - 1, - reacGMatrix[0].length - 1, reacGMatrix[0].length - 1);// new Matrix(reacGMatrix); - - if (Amatrix.rank() < chemicalReactionList.size()) { - System.out.println("rank of A matrix too low !!" + Amatrix.rank()); - return null; - } else { - Matrix solv = Amatrix.solve(Bmatrix.timesEquals(-1.0)); // Solves for A*X = -B - // System.out.println("ref pots"); - // solv.print(10,3); - return solv.transpose().getArrayCopy()[0]; - } - } - - /** - *

- * calcReacMatrix. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void calcReacMatrix(PhaseInterface phase) { - tempReacMatrix = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - tempStocMatrix = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - ChemicalReaction reaction; - - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - Iterator e = chemicalReactionList.iterator(); - while (e.hasNext()) { - reaction = e.next(); - for (int j = 0; j < reaction.getNames().length; j++) { - if (phase.getComponents()[i].getName().equals(reaction.getNames()[j])) { - for (int k = 0; k < phase.getNumberOfComponents(); k++) { - for (int o = 0; o < reaction.getNames().length; o++) { - if (phase.getComponents()[k].getName() - .equals(reaction.getNames()[o])) { - // System.out.println("comp1 " + - // system.getPhases()[1].getComponents()[i].getComponentName() + - // " comp2 " - // +system.getPhases()[1].getComponents()[k].getComponentName() - // ); - tempReacMatrix[i][k] = reaction.getRateFactor(phase); - tempStocMatrix[i][k] = -reaction.getStocCoefs()[o]; - } - } - } - } + } + + /** + *

+ * calcReacMatrix. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void calcReacMatrix(PhaseInterface phase) { + tempReacMatrix = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + tempStocMatrix = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + ChemicalReaction reaction; + + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + Iterator e = chemicalReactionList.iterator(); + while (e.hasNext()) { + reaction = e.next(); + for (int j = 0; j < reaction.getNames().length; j++) { + if (phase.getComponents()[i].getName().equals(reaction.getNames()[j])) { + for (int k = 0; k < phase.getNumberOfComponents(); k++) { + for (int o = 0; o < reaction.getNames().length; o++) { + if (phase.getComponents()[k].getName().equals(reaction.getNames()[o])) { + // System.out.println("comp1 " + + // system.getPhases()[1].getComponents()[i].getComponentName() + + // " comp2 " + // +system.getPhases()[1].getComponents()[k].getComponentName() + // ); + tempReacMatrix[i][k] = reaction.getRateFactor(phase); + tempStocMatrix[i][k] = -reaction.getStocCoefs()[o]; } + } } + } } - - // Matrix temp = new Matrix(tempReacMatrix); - // Matrix temp2 = new Matrix(tempStocMatrix); - // temp.print(10,10); - // temp2.print(10,10); - } - - /** - *

- * Getter for the field reacMatrix. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getReacMatrix() { - return tempReacMatrix; + } } - /** - *

- * getStocMatrix. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getStocMatrix() { - return tempStocMatrix; + // Matrix temp = new Matrix(tempReacMatrix); + // Matrix temp2 = new Matrix(tempStocMatrix); + // temp.print(10,10); + // temp2.print(10,10); + } + + /** + *

+ * Getter for the field reacMatrix. + *

+ * + * @return an array of type double + */ + public double[][] getReacMatrix() { + return tempReacMatrix; + } + + /** + *

+ * getStocMatrix. + *

+ * + * @return an array of type double + */ + public double[][] getStocMatrix() { + return tempStocMatrix; + } + + /** + *

+ * calcReacRates. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects + * @return a {@link Jama.Matrix} object + */ + public Matrix calcReacRates(PhaseInterface phase, ComponentInterface[] components) { + Matrix modReacMatrix = new Matrix(reacMatrix).copy(); + // System.out.println(" vol " + system.getPhases()[1].getMolarVolume()); + + for (int i = 0; i < chemicalReactionList.size(); i++) { + for (int j = 0; j < components.length; j++) { + // System.out.println("mol cons " + + // components[j].getx()/system.getPhases()[1].getMolarMass()); + modReacMatrix.set(i, j, + Math.pow(components[j].getx() * phase.getDensity() / phase.getMolarMass(), + Math.abs(reacMatrix[i][j]))); + } } - - /** - *

- * calcReacRates. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param components an array of {@link neqsim.thermo.component.ComponentInterface} objects - * @return a {@link Jama.Matrix} object - */ - public Matrix calcReacRates(PhaseInterface phase, ComponentInterface[] components) { - Matrix modReacMatrix = new Matrix(reacMatrix).copy(); - // System.out.println(" vol " + system.getPhases()[1].getMolarVolume()); - - for (int i = 0; i < chemicalReactionList.size(); i++) { - for (int j = 0; j < components.length; j++) { - // System.out.println("mol cons " + - // components[j].getx()/system.getPhases()[1].getMolarMass()); - modReacMatrix.set(i, j, - Math.pow(components[j].getx() * phase.getDensity() / phase.getMolarMass(), - Math.abs(reacMatrix[i][j]))); - } - } - // modReacMatrix.print(10,10); - double[] tempForward = new double[chemicalReactionList.size()]; - double[] tempBackward = new double[chemicalReactionList.size()]; - double[] reacVec = new double[chemicalReactionList.size()]; - - for (int i = 0; i < chemicalReactionList.size(); i++) { - tempForward[i] = (chemicalReactionList.get(i)).getRateFactor(); - tempBackward[i] = (chemicalReactionList.get(i)).getK(phase) - / (chemicalReactionList.get(i)).getRateFactor(); - for (int j = 0; j < components.length; j++) { - if (reacMatrix[i][j] > 0) { - tempForward[i] *= modReacMatrix.get(i, j); - } - if (reacMatrix[i][j] < 0) { - tempBackward[i] *= modReacMatrix.get(i, j); - } - } - reacVec[i] = tempForward[i] - tempBackward[i]; - } - - Matrix reacMatVec = new Matrix(reacVec, 1); - Matrix reacMat = new Matrix(reacMatrix).transpose().times(reacMatVec); - - double[] reactRates = new double[phase.getComponents().length]; - for (int j = 0; j < components.length; j++) { - reactRates[components[j].getComponentNumber()] = reacMat.get(j, 0); + // modReacMatrix.print(10,10); + double[] tempForward = new double[chemicalReactionList.size()]; + double[] tempBackward = new double[chemicalReactionList.size()]; + double[] reacVec = new double[chemicalReactionList.size()]; + + for (int i = 0; i < chemicalReactionList.size(); i++) { + tempForward[i] = (chemicalReactionList.get(i)).getRateFactor(); + tempBackward[i] = + (chemicalReactionList.get(i)).getK(phase) / (chemicalReactionList.get(i)).getRateFactor(); + for (int j = 0; j < components.length; j++) { + if (reacMatrix[i][j] > 0) { + tempForward[i] *= modReacMatrix.get(i, j); } - - for (int j = 0; j < phase.getNumberOfComponents(); j++) { - // System.out.println("reac " +j + " " + reactRates[j] ); + if (reacMatrix[i][j] < 0) { + tempBackward[i] *= modReacMatrix.get(i, j); } - - // System.out.println("reac matrix "); - // reacMat.print(10,10); - return reacMat; + } + reacVec[i] = tempForward[i] - tempBackward[i]; } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - ChemicalReactionList test = new ChemicalReactionList(); - // test.readReactions(); - // String[] test2 = {"water","MDEA"}; - // test.removeJunkReactions(test2); - // String[] comp = test.getAllComponents(); - // System.out.println("components: " + comp.length); - } + Matrix reacMatVec = new Matrix(reacVec, 1); + Matrix reacMat = new Matrix(reacMatrix).transpose().times(reacMatVec); - /** - * Getter for property chemicalReactionList. - * - * @return Value of property chemicalReactionList. - */ - public ArrayList getChemicalReactionList() { - return chemicalReactionList; + double[] reactRates = new double[phase.getComponents().length]; + for (int j = 0; j < components.length; j++) { + reactRates[components[j].getComponentNumber()] = reacMat.get(j, 0); } - /** - * Setter for property chemicalReactionList. - * - * @param chemicalReactionList New value of property chemicalReactionList. - */ - public void setChemicalReactionList(ArrayList chemicalReactionList) { - this.chemicalReactionList = chemicalReactionList; + for (int j = 0; j < phase.getNumberOfComponents(); j++) { + // System.out.println("reac " +j + " " + reactRates[j] ); } - /** - *

- * reacHeat. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param comp a {@link java.lang.String} object - * @return a double - */ - public double reacHeat(PhaseInterface phase, String comp) { - ChemicalReaction reaction; - double heat = 0.0; - Iterator e = chemicalReactionList.iterator(); - while (e.hasNext()) { - reaction = e.next(); - heat += phase.getComponent(comp).getNumberOfmoles() * reaction.getReactionHeat(phase); - // System.out.println("moles " + phase.getComponent(comp).getNumberOfmoles()); - // System.out.println("reac heat 2 " + heat); - } - return heat; + // System.out.println("reac matrix "); + // reacMat.print(10,10); + return reacMat; + } + + /** + * Getter for property chemicalReactionList. + * + * @return Value of property chemicalReactionList. + */ + public ArrayList getChemicalReactionList() { + return chemicalReactionList; + } + + /** + * Setter for property chemicalReactionList. + * + * @param chemicalReactionList New value of property chemicalReactionList. + */ + public void setChemicalReactionList(ArrayList chemicalReactionList) { + this.chemicalReactionList = chemicalReactionList; + } + + /** + *

+ * reacHeat. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param comp a {@link java.lang.String} object + * @return a double + */ + public double reacHeat(PhaseInterface phase, String comp) { + ChemicalReaction reaction; + double heat = 0.0; + Iterator e = chemicalReactionList.iterator(); + while (e.hasNext()) { + reaction = e.next(); + heat += phase.getComponent(comp).getNumberOfmoles() * reaction.getReactionHeat(phase); + // System.out.println("moles " + phase.getComponent(comp).getNumberOfmoles()); + // System.out.println("reac heat 2 " + heat); } + return heat; + } } diff --git a/src/main/java/neqsim/chemicalReactions/kinetics/Kinetics.java b/src/main/java/neqsim/chemicalReactions/kinetics/Kinetics.java index 77785b0f9d..80b922cf48 100644 --- a/src/main/java/neqsim/chemicalReactions/kinetics/Kinetics.java +++ b/src/main/java/neqsim/chemicalReactions/kinetics/Kinetics.java @@ -3,6 +3,7 @@ * * Created on 3. august 2001, 23:05 */ + package neqsim.chemicalReactions.kinetics; import java.util.Iterator; @@ -19,141 +20,129 @@ * @version $Id: $Id */ public class Kinetics implements java.io.Serializable { - private static final long serialVersionUID = 1000; - protected ChemicalReactionOperations operations; - double phiInfinite = 0.0; - boolean isIrreversible; - - /** - *

- * Constructor for Kinetics. - *

- */ - public Kinetics() {} + private static final long serialVersionUID = 1000; + protected ChemicalReactionOperations operations; + double phiInfinite = 0.0; + boolean isIrreversible; - /** - *

- * Constructor for Kinetics. - *

- * - * @param operations a {@link neqsim.chemicalReactions.ChemicalReactionOperations} object - */ - public Kinetics(ChemicalReactionOperations operations) { - this.operations = operations; - } + /** + *

+ * Constructor for Kinetics. + *

+ * + * @param operations a {@link neqsim.chemicalReactions.ChemicalReactionOperations} object + */ + public Kinetics(ChemicalReactionOperations operations) { + this.operations = operations; + } - /** - *

- * calcKinetics. - *

- */ - public void calcKinetics() {} + /** + *

+ * calcKinetics. + *

+ */ + public void calcKinetics() {} - /** - *

- * calcReacMatrix. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param interPhase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param comp a int - * @return a double - */ - public double calcReacMatrix(PhaseInterface phase, PhaseInterface interPhase, int comp) { - ChemicalReaction reaction; - double reacCoef = 0.0, irr = 0.0, ktemp = 0.0, exponent = 0.0; - Iterator e = - operations.getReactionList().getChemicalReactionList().iterator(); - phase.getPhysicalProperties().calcEffectiveDiffusionCoefficients(); + /** + *

+ * calcReacMatrix. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param interPhase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param comp a int + * @return a double + */ + public double calcReacMatrix(PhaseInterface phase, PhaseInterface interPhase, int comp) { + ChemicalReaction reaction; + double reacCoef = 0.0; + double irr = 0.0; + double ktemp = 0.0; + double exponent = 0.0; + Iterator e = + operations.getReactionList().getChemicalReactionList().iterator(); + phase.getPhysicalProperties().calcEffectiveDiffusionCoefficients(); - while (e.hasNext()) { - reaction = e.next(); - ktemp = reaction.getRateFactor(interPhase); - irr = 1.0 / reaction.getK(phase); - // System.out.println("reaction heat " + reaction.getReactionHeat(phase)); - for (int j = 0; j < reaction.getNames().length; j++) { - irr *= Math.pow( - interPhase.getComponent(reaction.getNames()[j]).getx() - * phase.getPhysicalProperties().getDensity() - / phase.getComponent(reaction.getNames()[j]).getMolarMass(), - -reaction.getStocCoefs()[j]); - // System.out.println("reac names " + reaction.getNames()[j]); - // System.out.println("stoc coefs " + reaction.getStocCoefs()[j]); - if (phase.getComponents()[comp].getName().equals(reaction.getNames()[j])) { - for (int k = 0; k < reaction.getNames().length; k++) { - if (reaction.getStocCoefs()[k] * reaction.getStocCoefs()[j] > 0 && !(k == j) - && !(phase.getComponent(reaction.getNames()[k]).getName() - .equals("water"))) { - exponent = reaction.getStocCoefs()[k] / reaction.getStocCoefs()[j]; - double molConsAint = interPhase.getComponent(comp).getx() - * interPhase.getPhysicalProperties().getDensity() - / phase.getComponent(comp).getMolarMass(); - double molConsB = phase.getComponent(reaction.getNames()[k]).getx() - * phase.getPhysicalProperties().getDensity() - / phase.getComponent(reaction.getNames()[k]).getMolarMass(); - ktemp *= Math.pow(molConsB, exponent); - phiInfinite = Math - .sqrt(phase.getPhysicalProperties() - .getEffectiveDiffusionCoefficient(comp) - / phase.getPhysicalProperties() - .getEffectiveDiffusionCoefficient(phase - .getComponent(reaction.getNames()[k]) - .getComponentNumber())) - + Math.sqrt( - phase.getPhysicalProperties() - .getEffectiveDiffusionCoefficient(phase - .getComponent(reaction.getNames()[k]) - .getComponentNumber()) - / phase.getPhysicalProperties() - .getEffectiveDiffusionCoefficient(comp)) - * molConsB / (exponent * molConsAint); - // System.out.println("reac names " + reaction.getNames()[k]); - // System.out.println("phi inf " + phiInfinite); - } - } - } - } - reacCoef += ktemp; - // System.out.println("irr " + irr); - if (Math.abs(irr) < 1e-3) { - isIrreversible = true; + while (e.hasNext()) { + reaction = e.next(); + ktemp = reaction.getRateFactor(interPhase); + irr = 1.0 / reaction.getK(phase); + // System.out.println("reaction heat " + reaction.getReactionHeat(phase)); + for (int j = 0; j < reaction.getNames().length; j++) { + irr *= Math.pow( + interPhase.getComponent(reaction.getNames()[j]).getx() + * phase.getPhysicalProperties().getDensity() + / phase.getComponent(reaction.getNames()[j]).getMolarMass(), + -reaction.getStocCoefs()[j]); + // System.out.println("reac names " + reaction.getNames()[j]); + // System.out.println("stoc coefs " + reaction.getStocCoefs()[j]); + if (phase.getComponents()[comp].getName().equals(reaction.getNames()[j])) { + for (int k = 0; k < reaction.getNames().length; k++) { + if (reaction.getStocCoefs()[k] * reaction.getStocCoefs()[j] > 0 && !(k == j) + && !(phase.getComponent(reaction.getNames()[k]).getName().equals("water"))) { + exponent = reaction.getStocCoefs()[k] / reaction.getStocCoefs()[j]; + double molConsAint = interPhase.getComponent(comp).getx() + * interPhase.getPhysicalProperties().getDensity() + / phase.getComponent(comp).getMolarMass(); + double molConsB = phase.getComponent(reaction.getNames()[k]).getx() + * phase.getPhysicalProperties().getDensity() + / phase.getComponent(reaction.getNames()[k]).getMolarMass(); + ktemp *= Math.pow(molConsB, exponent); + phiInfinite = Math + .sqrt(phase.getPhysicalProperties().getEffectiveDiffusionCoefficient(comp) + / phase.getPhysicalProperties().getEffectiveDiffusionCoefficient( + phase.getComponent(reaction.getNames()[k]).getComponentNumber())) + + Math + .sqrt(phase.getPhysicalProperties().getEffectiveDiffusionCoefficient( + phase.getComponent(reaction.getNames()[k]).getComponentNumber()) + / phase.getPhysicalProperties().getEffectiveDiffusionCoefficient(comp)) + * molConsB / (exponent * molConsAint); + // System.out.println("reac names " + reaction.getNames()[k]); + // System.out.println("phi inf " + phiInfinite); } + } } - return reacCoef; + } + reacCoef += ktemp; + // System.out.println("irr " + irr); + if (Math.abs(irr) < 1e-3) { + isIrreversible = true; + } } + return reacCoef; + } - /** - *

- * Getter for the field phiInfinite. - *

- * - * @return a double - */ - public double getPhiInfinite() { - return phiInfinite; - } + /** + *

+ * Getter for the field phiInfinite. + *

+ * + * @return a double + */ + public double getPhiInfinite() { + return phiInfinite; + } - /** - *

- * getPseudoFirstOrderCoef. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param interPhase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param comp a int - * @return a double - */ - public double getPseudoFirstOrderCoef(PhaseInterface phase, PhaseInterface interPhase, - int comp) { - return calcReacMatrix(phase, interPhase, comp); - } + /** + *

+ * getPseudoFirstOrderCoef. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param interPhase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param comp a int + * @return a double + */ + public double getPseudoFirstOrderCoef(PhaseInterface phase, PhaseInterface interPhase, int comp) { + return calcReacMatrix(phase, interPhase, comp); + } - /** - * Getter for property isIrreversible. - * - * @return Value of property isIrreversible. - */ - public boolean isIrreversible() { - return isIrreversible; - } + /** + * Getter for property isIrreversible. + * + * @return Value of property isIrreversible. + */ + public boolean isIrreversible() { + return isIrreversible; + } } diff --git a/src/main/java/neqsim/dataPresentation/JFreeChart/graph2b.java b/src/main/java/neqsim/dataPresentation/JFreeChart/graph2b.java index e8dce94c1e..7aa6ca33fb 100644 --- a/src/main/java/neqsim/dataPresentation/JFreeChart/graph2b.java +++ b/src/main/java/neqsim/dataPresentation/JFreeChart/graph2b.java @@ -3,11 +3,14 @@ * * Created on 17. juni 2000, 17:16 */ + package neqsim.dataPresentation.JFreeChart; import java.awt.Color; import java.awt.image.BufferedImage; import javax.swing.BorderFactory; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; @@ -25,308 +28,311 @@ * @version $Id: $Id */ public class graph2b extends javax.swing.JFrame { - private static final long serialVersionUID = 1000; - - XYDataset xyData; - String titl, xaxtitle, yaxtitle; - - /** - *

- * Constructor for graph2b. - *

- */ - public graph2b() { - initComponents(); - pack(); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(graph2b.class); + + XYDataset xyData; + String titl; + String xaxtitle; + String yaxtitle; + + /** + *

+ * Constructor for graph2b. + *

+ */ + public graph2b() { + initComponents(); + pack(); + } + + /** + *

+ * Constructor for graph2b. + *

+ * + * @param points an array of type double + */ + public graph2b(double[][] points) { + String[] seriesNames = new String[points.length]; + for (int i = 0; i < points.length; i++) { + seriesNames[i] = ""; } - - /** - *

- * Constructor for graph2b. - *

- * - * @param points an array of {@link double} objects - */ - public graph2b(double[][] points) { - String[] seriesNames = new String[points.length]; - for (int i = 0; i < points.length; i++) - seriesNames[i] = ""; - String tit = ""; - String xaxis = ""; - String yaxis = ""; - titl = tit; - xaxtitle = xaxis; - yaxtitle = yaxis; - - XYSeriesCollection seriesCol = new XYSeriesCollection(); - - for (int serLen = 0; serLen < points.length / 2; serLen++) { - XYSeries series = new XYSeries(seriesNames[serLen]); - for (int i = 0; i < points[2 * serLen].length; i++) { - series.add(points[2 * serLen][i], points[2 * serLen + 1][i]); - } - seriesCol.addSeries(series); - } - - chart = ChartFactory.createScatterPlot(tit, xaxtitle, yaxtitle, seriesCol, - org.jfree.chart.plot.PlotOrientation.VERTICAL, true, false, false); - // StandardTitle title = (StandardTitle)chart.getTitle(); - // title.setTitle(titl); - // chart.setBackgroundPaint(java.awt.P)ackgroundPaint(new GradientPaint(0, 0, - // Color.white,0, 1000, Color.white)); - // org.jfree.chart.plot.Plot myPlot = chart.getPlot(); - - chartPanel4 = new ChartPanel(chart); - chartPanel4.setBorder( - BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4), - BorderFactory.createLineBorder(Color.darkGray, 1))); - initComponents(); - getContentPane().add(chartPanel4, java.awt.BorderLayout.WEST); - pack(); + String tit = ""; + String xaxis = ""; + String yaxis = ""; + titl = tit; + xaxtitle = xaxis; + yaxtitle = yaxis; + + XYSeriesCollection seriesCol = new XYSeriesCollection(); + + for (int serLen = 0; serLen < points.length / 2; serLen++) { + XYSeries series = new XYSeries(seriesNames[serLen]); + for (int i = 0; i < points[2 * serLen].length; i++) { + series.add(points[2 * serLen][i], points[2 * serLen + 1][i]); + } + seriesCol.addSeries(series); } - /** - *

- * Constructor for graph2b. - *

- * - * @param points an array of {@link double} objects - * @param seriesNames an array of {@link java.lang.String} objects - * @param tit a {@link java.lang.String} object - * @param xaxis a {@link java.lang.String} object - * @param yaxis a {@link java.lang.String} object - */ - public graph2b(double[][] points, String[] seriesNames, String tit, String xaxis, - String yaxis) { - XYSeriesCollection seriesCol = new XYSeriesCollection(); - - for (int serLen = 0; serLen < points.length / 2; serLen++) { - XYSeries series = new XYSeries(seriesNames[serLen]); - for (int i = 0; i < points[2 * serLen].length; i++) { - series.add(points[2 * serLen][i], points[2 * serLen + 1][i]); - // System.out.println(points[2*serLen][i]+" "+points[2*serLen+1][i]); - } - seriesCol.addSeries(series); - } - chart = ChartFactory.createScatterPlot(tit, xaxis, yaxis, seriesCol, - org.jfree.chart.plot.PlotOrientation.VERTICAL, true, false, false); - - // StandardTitle title = (StandardTitle)chart.getTitle(); - // title.setTitle(titl); - chart.setBackgroundPaint(Color.white); - // ChartBackgroundPaint(new GradientPaint(0, 0, Color.white,0, 1000, - // Color.blue)); - // org.jfree.chart.plot.Plot myPlot = chart.getPlot(); - - chartPanel4 = new ChartPanel(chart); - chartPanel4.setBorder( - BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4), - BorderFactory.createLineBorder(Color.darkGray, 1))); - chartPanel4.setBackground(Color.white); - initComponents(); - getContentPane().add(chartPanel4, java.awt.BorderLayout.WEST); - pack(); + chart = ChartFactory.createScatterPlot(tit, xaxtitle, yaxtitle, seriesCol, + org.jfree.chart.plot.PlotOrientation.VERTICAL, true, false, false); + // StandardTitle title = (StandardTitle)chart.getTitle(); + // title.setTitle(titl); + // chart.setBackgroundPaint(java.awt.P)ackgroundPaint(new GradientPaint(0, 0, + // Color.white,0, 1000, Color.white)); + // org.jfree.chart.plot.Plot myPlot = chart.getPlot(); + + chartPanel4 = new ChartPanel(chart); + chartPanel4 + .setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4), + BorderFactory.createLineBorder(Color.darkGray, 1))); + initComponents(); + getContentPane().add(chartPanel4, java.awt.BorderLayout.WEST); + pack(); + } + + /** + *

+ * Constructor for graph2b. + *

+ * + * @param points an array of type double + * @param seriesNames an array of {@link java.lang.String} objects + * @param tit a {@link java.lang.String} object + * @param xaxis a {@link java.lang.String} object + * @param yaxis a {@link java.lang.String} object + */ + public graph2b(double[][] points, String[] seriesNames, String tit, String xaxis, String yaxis) { + XYSeriesCollection seriesCol = new XYSeriesCollection(); + + for (int serLen = 0; serLen < points.length / 2; serLen++) { + XYSeries series = new XYSeries(seriesNames[serLen]); + for (int i = 0; i < points[2 * serLen].length; i++) { + series.add(points[2 * serLen][i], points[2 * serLen + 1][i]); + // System.out.println(points[2*serLen][i]+" "+points[2*serLen+1][i]); + } + seriesCol.addSeries(series); } - - /** - *

- * Constructor for graph2b. - *

- * - * @param xpoints an array of {@link double} objects - * @param points an array of {@link double} objects - * @param seriesNames an array of {@link java.lang.String} objects - * @param tit a {@link java.lang.String} object - * @param xaxis a {@link java.lang.String} object - * @param yaxis a {@link java.lang.String} object - */ - public graph2b(double[][] xpoints, double[][] points, String[] seriesNames, String tit, - String xaxis, String yaxis) { - XYSeriesCollection seriesCol = new XYSeriesCollection(); - - for (int serLen = 0; serLen < points.length; serLen++) { - XYSeries series = new XYSeries(seriesNames[serLen]); - for (int i = 0; i < points[serLen].length; i++) { - series.add(xpoints[serLen][i], points[serLen][i]); - // System.out.println(points[2*serLen][i]+" "+points[2*serLen+1][i]); - } - seriesCol.addSeries(series); - } - chart = ChartFactory.createScatterPlot(tit, xaxis, yaxis, seriesCol, - org.jfree.chart.plot.PlotOrientation.VERTICAL, true, false, false); - - // StandardTitle title = (StandardTitle)chart.getTitle(); - // title.setTitle(titl); - chart.setBackgroundPaint(Color.white); - // ChartBackgroundPaint(new GradientPaint(0, 0, Color.white,0, 1000, - // Color.blue)); - // org.jfree.chart.plot.Plot myPlot = chart.getPlot(); - - chartPanel4 = new ChartPanel(chart); - chartPanel4.setBorder( - BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4), - BorderFactory.createLineBorder(Color.darkGray, 1))); - chartPanel4.setBackground(Color.white); - initComponents(); - getContentPane().add(chartPanel4, java.awt.BorderLayout.WEST); - pack(); + chart = ChartFactory.createScatterPlot(tit, xaxis, yaxis, seriesCol, + org.jfree.chart.plot.PlotOrientation.VERTICAL, true, false, false); + + // StandardTitle title = (StandardTitle)chart.getTitle(); + // title.setTitle(titl); + chart.setBackgroundPaint(Color.white); + // ChartBackgroundPaint(new GradientPaint(0, 0, Color.white,0, 1000, + // Color.blue)); + // org.jfree.chart.plot.Plot myPlot = chart.getPlot(); + + chartPanel4 = new ChartPanel(chart); + chartPanel4 + .setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4), + BorderFactory.createLineBorder(Color.darkGray, 1))); + chartPanel4.setBackground(Color.white); + initComponents(); + getContentPane().add(chartPanel4, java.awt.BorderLayout.WEST); + pack(); + } + + /** + *

+ * Constructor for graph2b. + *

+ * + * @param xpoints an array of type double + * @param points an array of type double + * @param seriesNames an array of {@link java.lang.String} objects + * @param tit a {@link java.lang.String} object + * @param xaxis a {@link java.lang.String} object + * @param yaxis a {@link java.lang.String} object + */ + public graph2b(double[][] xpoints, double[][] points, String[] seriesNames, String tit, + String xaxis, String yaxis) { + XYSeriesCollection seriesCol = new XYSeriesCollection(); + + for (int serLen = 0; serLen < points.length; serLen++) { + XYSeries series = new XYSeries(seriesNames[serLen]); + for (int i = 0; i < points[serLen].length; i++) { + series.add(xpoints[serLen][i], points[serLen][i]); + // System.out.println(points[2*serLen][i]+" "+points[2*serLen+1][i]); + } + seriesCol.addSeries(series); } - - /** - *

- * saveFigure. - *

- * - * @param fileName a {@link java.lang.String} object - */ - public void saveFigure(String fileName) { - try { - System.out.println("start creating png figure..."); - java.io.File temp = new java.io.File(fileName); - org.jfree.chart.ChartUtils.saveChartAsPNG(temp, chart, 500, 500); - System.out.println("figure png created in " - + neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig.png"); - } catch (Exception e) { - e.printStackTrace(); - } + chart = ChartFactory.createScatterPlot(tit, xaxis, yaxis, seriesCol, + org.jfree.chart.plot.PlotOrientation.VERTICAL, true, false, false); + + // StandardTitle title = (StandardTitle)chart.getTitle(); + // title.setTitle(titl); + chart.setBackgroundPaint(Color.white); + // ChartBackgroundPaint(new GradientPaint(0, 0, Color.white,0, 1000, + // Color.blue)); + // org.jfree.chart.plot.Plot myPlot = chart.getPlot(); + + chartPanel4 = new ChartPanel(chart); + chartPanel4 + .setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4), + BorderFactory.createLineBorder(Color.darkGray, 1))); + chartPanel4.setBackground(Color.white); + initComponents(); + getContentPane().add(chartPanel4, java.awt.BorderLayout.WEST); + pack(); + } + + /** + *

+ * saveFigure. + *

+ * + * @param fileName a {@link java.lang.String} object + */ + public void saveFigure(String fileName) { + try { + System.out.println("start creating png figure..."); + java.io.File temp = new java.io.File(fileName); + org.jfree.chart.ChartUtils.saveChartAsPNG(temp, chart, 500, 500); + System.out.println("figure png created in " + neqsim.util.util.FileSystemSettings.tempDir + + "NeqSimTempFig.png"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** - *

- * getBufferedImage. - *

- * - * @return a {@link java.awt.image.BufferedImage} object - */ - public BufferedImage getBufferedImage() { - BufferedImage buf = null; - try { - System.out.println("start creating png figure..."); - buf = chart.createBufferedImage(640, 400, null); - } catch (Exception e) { - e.printStackTrace(); - } - return buf; + } + + /** + *

+ * getBufferedImage. + *

+ * + * @return a {@link java.awt.image.BufferedImage} object + */ + public BufferedImage getBufferedImage() { + BufferedImage buf = null; + try { + System.out.println("start creating png figure..."); + buf = chart.createBufferedImage(640, 400, null); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** - * This method is called from within the constructor to initialize the form. WARNING: Do NOT - * modify this code. The content of this method is always regenerated by the FormEditor. + return buf; + } + + /** + * This method is called from within the constructor to initialize the form. WARNING: Do NOT + * modify this code. The content of this method is always regenerated by the FormEditor. + */ + private void initComponents() { // GEN-BEGIN:initComponents + jTextPane1 = new javax.swing.JTextPane(); + jPanel1 = new javax.swing.JPanel(); + + addWindowListener(new java.awt.event.WindowAdapter() { + @Override + public void windowClosing(java.awt.event.WindowEvent evt) { + exitForm(evt); + } + + @Override + public void windowClosed(java.awt.event.WindowEvent evt) { + exit(evt); + } + }); + + jTextPane1.setFont(new java.awt.Font("Arial", 1, 16)); + jTextPane1.setText("2D-plot"); + jTextPane1.setSelectedTextColor(java.awt.Color.red); + getContentPane().add(jTextPane1, java.awt.BorderLayout.NORTH); + + getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER); + } // GEN-END:initComponents + + private void exit(java.awt.event.WindowEvent evt) { // GEN-FIRST:event_exit + // Add your handling code here: + } // GEN-LAST:event_exit + + private void buttonclick(java.awt.event.MouseEvent evt) { // GEN-FIRST:event_buttonclick + // Add your handling code here: + this.setVisible(false); + } // GEN-LAST:event_buttonclick + + /** + *

+ * createCategoryDataSource. + *

+ * + * @return a {@link org.jfree.data.category.CategoryDataset} object + */ + public CategoryDataset createCategoryDataSource() { + /* + * Number[][] data = new Integer[][] { { Integer.valueOf(10), Integer.valueOf(4), + * Integer.valueOf(15), Integer.valueOf(14) }, { Integer.valueOf(5), Integer.valueOf(7), + * Integer.valueOf(14), Integer.valueOf(3) }, { Integer.valueOf(6), Integer.valueOf(17), + * Integer.valueOf(12), Integer.valueOf(7) }, { Integer.valueOf(7), Integer.valueOf(15), + * Integer.valueOf(11), Integer.valueOf(0) }, { Integer.valueOf(8), Integer.valueOf(6), + * Integer.valueOf(10), Integer.valueOf(9) }, { Integer.valueOf(9), Integer.valueOf(8), + * Integer.valueOf(8), Integer.valueOf(6) }, { Integer.valueOf(10), Integer.valueOf(9), + * Integer.valueOf(7), Integer.valueOf(7) }, { Integer.valueOf(11), Integer.valueOf(13), + * Integer.valueOf(9), Integer.valueOf(9) }, { Integer.valueOf(3), Integer.valueOf(7), + * Integer.valueOf(11), Integer.valueOf(10) } }; */ - private void initComponents() {// GEN-BEGIN:initComponents - jTextPane1 = new javax.swing.JTextPane(); - jPanel1 = new javax.swing.JPanel(); - - addWindowListener(new java.awt.event.WindowAdapter() { - @Override - public void windowClosing(java.awt.event.WindowEvent evt) { - exitForm(evt); - } - - @Override - public void windowClosed(java.awt.event.WindowEvent evt) { - exit(evt); - } - }); - - jTextPane1.setFont(new java.awt.Font("Arial", 1, 16)); - jTextPane1.setText("2D-plot"); - jTextPane1.setSelectedTextColor(java.awt.Color.red); - getContentPane().add(jTextPane1, java.awt.BorderLayout.NORTH); - - getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER); - }// GEN-END:initComponents - - private void exit(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_exit - // Add your handling code here: - }// GEN-LAST:event_exit - - private void buttonclick(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_buttonclick - // Add your handling code here: - this.setVisible(false); - }// GEN-LAST:event_buttonclick - - /** - *

- * createCategoryDataSource. - *

- * - * @return a {@link org.jfree.data.category.CategoryDataset} object - */ - public CategoryDataset createCategoryDataSource() { - /* - * Number[][] data = new Integer[][] { { Integer.valueOf(10), Integer.valueOf(4), - * Integer.valueOf(15), Integer.valueOf(14) }, { Integer.valueOf(5), Integer.valueOf(7), - * Integer.valueOf(14), Integer.valueOf(3) }, { Integer.valueOf(6), Integer.valueOf(17), - * Integer.valueOf(12), Integer.valueOf(7) }, { Integer.valueOf(7), Integer.valueOf(15), - * Integer.valueOf(11), Integer.valueOf(0) }, { Integer.valueOf(8), Integer.valueOf(6), - * Integer.valueOf(10), Integer.valueOf(9) }, { Integer.valueOf(9), Integer.valueOf(8), - * Integer.valueOf(8), Integer.valueOf(6) }, { Integer.valueOf(10), Integer.valueOf(9), - * Integer.valueOf(7), Integer.valueOf(7) }, { Integer.valueOf(11), Integer.valueOf(13), - * Integer.valueOf(9), Integer.valueOf(9) }, { Integer.valueOf(3), Integer.valueOf(7), - * Integer.valueOf(11), Integer.valueOf(10) } }; - */ - return null;// new DefaultCategoryDataset(data); - } - - private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton1ActionPerformed - // Add your handling code here: - }// GEN-LAST:event_jButton1ActionPerformed - - /** - * Exit the Application - * - * @param evt The event to exit the form - */ - private void exitForm(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_exitForm - this.removeAll(); - }// GEN-LAST:event_exitForm - - /** - *

- * getChartPanel. - *

- * - * @return a {@link org.jfree.chart.ChartPanel} object - */ - public ChartPanel getChartPanel() { - return chartPanel4; - } - - /** - *

- * main. - *

- * - * @param args the command line arguments - */ - public static void main(String args[]) { - new graph2b().setVisible(true); - } - - /** - * Getter for property chart. - * - * @return Value of property chart. - */ - public JFreeChart getChart() { - return chart; - } - - /** - * Setter for property chart. - * - * @param chart New value of property chart. - */ - public void setChart(JFreeChart chart) { - this.chart = chart; - } - - private CategoryDataset categoryData; - private JFreeChart chart; - private ChartPanel chartPanel4; - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JTextPane jTextPane1; - private javax.swing.JPanel jPanel1; - // End of variables declaration//GEN-END:variables + return null; // new DefaultCategoryDataset(data); + } + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton1ActionPerformed + // Add your handling code here: + }// GEN-LAST:event_jButton1ActionPerformed + + /** + * Exit the Application. + * + * @param evt The event to exit the form + */ + private void exitForm(java.awt.event.WindowEvent evt) { // GEN-FIRST:event_exitForm + this.removeAll(); + } // GEN-LAST:event_exitForm + + /** + *

+ * getChartPanel. + *

+ * + * @return a {@link org.jfree.chart.ChartPanel} object + */ + public ChartPanel getChartPanel() { + return chartPanel4; + } + + /** + *

+ * main. + *

+ * + * @param args the command line arguments + */ + public static void main(String[] args) { + new graph2b().setVisible(true); + } + + /** + * Getter for property chart. + * + * @return Value of property chart. + */ + public JFreeChart getChart() { + return chart; + } + + /** + * Setter for property chart. + * + * @param chart New value of property chart. + */ + public void setChart(JFreeChart chart) { + this.chart = chart; + } + + private CategoryDataset categoryData; + private JFreeChart chart; + private ChartPanel chartPanel4; + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JTextPane jTextPane1; + private javax.swing.JPanel jPanel1; + // End of variables declaration//GEN-END:variables } diff --git a/src/main/java/neqsim/dataPresentation/SampleXYDataSource.java b/src/main/java/neqsim/dataPresentation/SampleXYDataSource.java index 7415371411..8ffd67aedd 100644 --- a/src/main/java/neqsim/dataPresentation/SampleXYDataSource.java +++ b/src/main/java/neqsim/dataPresentation/SampleXYDataSource.java @@ -14,105 +14,100 @@ * not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307, USA. */ + package neqsim.dataPresentation; /** * A dummy data source for an XY plot. - *

+ * + *

* Note that the aim of this class is to create a self-contained data source for demo purposes - it * is NOT intended to show how you should go about writing your own data sources. + *

* - * @author asmund - * @version $Id: $Id + * @author Even Solbraa */ public class SampleXYDataSource { - double[][] points; - int numberOfSeries; - int[] items = new int[10]; - String[] seriesName; - - /** - * Default constructor. - */ - public SampleXYDataSource() { - // items=0; - } - - /** - *

- * Constructor for SampleXYDataSource. - *

- * - * @param p an array of {@link double} objects - * @param name an array of {@link java.lang.String} objects - * @param title a {@link java.lang.String} object - * @param xaxis a {@link java.lang.String} object - * @param yaxsis a {@link java.lang.String} object - */ - public SampleXYDataSource(double[][] p, String[] name, String title, String xaxis, - String yaxsis) { - // items = p[0].length; - numberOfSeries = p.length / 2; + double[][] points; + int numberOfSeries; + int[] items = new int[10]; + String[] seriesName; - for (int i = 0; i < numberOfSeries; i++) { - items[i] = p[i * 2].length; + /** + *

+ * Constructor for SampleXYDataSource. + *

+ * + * @param p an array of type double + * @param name an array of {@link java.lang.String} objects + * @param title a {@link java.lang.String} object + * @param xaxis a {@link java.lang.String} object + * @param yaxsis a {@link java.lang.String} object + */ + public SampleXYDataSource(double[][] p, String[] name, String title, String xaxis, + String yaxsis) { + // items = p[0].length; + numberOfSeries = p.length / 2; - System.out.println("items =" + items[i]); - } + for (int i = 0; i < numberOfSeries; i++) { + items[i] = p[i * 2].length; - System.out.println("series =" + numberOfSeries); - seriesName = name; - points = p; + System.out.println("items =" + items[i]); } - /** - * Returns the x-value for the specified series and item. Series are numbered 0, 1, ... - * - * @param series The index (zero-based) of the series; - * @param item The index (zero-based) of the required item; - * @return The x-value for the specified series and item. - */ - public Number getXValue(int series, int item) { - return (Double.valueOf(points[2 * series][item])); - } + System.out.println("series =" + numberOfSeries); + seriesName = name; + points = p; + } - /** - * Returns the y-value for the specified series and item. Series are numbered 0, 1, ... - * - * @param series The index (zero-based) of the series; - * @param item The index (zero-based) of the required item; - * @return The y-value for the specified series and item. - */ - public Number getYValue(int series, int item) { - return (Double.valueOf(points[(series * 2 + 1)][item])); - } + /** + * Returns the number of items in the specified series. + * + * @param series The index (zero-based) of the series; + * @return The number of items in the specified series. + */ + public int getItemCount(int series) { + return items[series]; + } - /** - * Returns the number of series in the data source. - * - * @return The number of series in the data source. - */ - public int getSeriesCount() { - return numberOfSeries; - } + /** + * Returns the number of series in the data source. + * + * @return The number of series in the data source. + */ + public int getSeriesCount() { + return numberOfSeries; + } - /** - * Returns the name of the series. - * - * @param series The index (zero-based) of the series; - * @return The name of the series. - */ - public String getSeriesName(int series) { - return seriesName[series]; - } + /** + * Returns the name of the series. + * + * @param series The index (zero-based) of the series; + * @return The name of the series. + */ + public String getSeriesName(int series) { + return seriesName[series]; + } - /** - * Returns the number of items in the specified series. - * - * @param series The index (zero-based) of the series; - * @return The number of items in the specified series. - */ - public int getItemCount(int series) { - return items[series]; - } + /** + * Returns the x-value for the specified series and item. Series are numbered 0, 1, ... + * + * @param series The index (zero-based) of the series; + * @param item The index (zero-based) of the required item; + * @return The x-value for the specified series and item. + */ + public Number getXValue(int series, int item) { + return (Double.valueOf(points[2 * series][item])); + } + + /** + * Returns the y-value for the specified series and item. Series are numbered 0, 1, ... + * + * @param series The index (zero-based) of the series; + * @param item The index (zero-based) of the required item; + * @return The y-value for the specified series and item. + */ + public Number getYValue(int series, int item) { + return (Double.valueOf(points[(series * 2 + 1)][item])); + } } diff --git a/src/main/java/neqsim/dataPresentation/dataHandeling.java b/src/main/java/neqsim/dataPresentation/dataHandeling.java index 2eabb5f1e7..5da9caccbc 100644 --- a/src/main/java/neqsim/dataPresentation/dataHandeling.java +++ b/src/main/java/neqsim/dataPresentation/dataHandeling.java @@ -5,6 +5,8 @@ import java.io.File; import java.io.FileOutputStream; import java.text.DecimalFormat; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** *

@@ -15,127 +17,128 @@ * @version $Id: $Id */ public class dataHandeling { - /** - *

- * Constructor for dataHandeling. - *

- */ - public dataHandeling() {} + static Logger logger = LogManager.getLogger(dataHandeling.class); - /** - *

- * getXValue. - *

- * - * @param series a int - * @param item a int - * @return a {@link java.lang.Number} object - */ - public Number getXValue(int series, int item) { - return Double.valueOf(-10.0 + (item * 0.2)); - } + /** + *

+ * Constructor for dataHandeling. + *

+ */ + public dataHandeling() {} - /** - * Returns the y-value for the specified series and item. Series are numbered 0, 1, ... - * - * @param series The index (zero-based) of the series; - * @param item The index (zero-based) of the required item; - * @return The y-value for the specified series and item. - */ - public Number getYValue(int series, int item) { - if (series == 0) { - return Double.valueOf(Math.cos(-10.0 + (item * 0.2))); - } else { - return Double.valueOf(2 * (Math.sin(-10.0 + (item * 0.2)))); - } - } + /** + * Returns the number of items in the specified series. + * + * @param series The index (zero-based) of the series; + * @return The number of items in the specified series. + */ + public int getItemCount(int series) { + return 81; + } - /** - * Returns the number of series in the data source. - * - * @return The number of series in the data source. - */ - public int getSeriesCount() { - return 2; - } + /** + *

+ * getLegendItemCount. + *

+ * + * @return a int + */ + public int getLegendItemCount() { + return 2; + } - /** - * Returns the name of the series. - * - * @param series The index (zero-based) of the series; - * @return The name of the series. - */ - public String getSeriesName(int series) { - if (series == 0) { - return "y = cosine(x)"; - } else if (series == 1) { - return "y = 2*sine(x)"; - } else { - return "Error"; - } - } + /** + *

+ * getLegendItemLabels. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getLegendItemLabels() { + String[] str = new String[2]; + str[1] = ""; + str[2] = ""; + return str; + } - /** - * Returns the number of items in the specified series. - * - * @param series The index (zero-based) of the series; - * @return The number of items in the specified series. - */ - public int getItemCount(int series) { - return 81; - } + /** + * Returns the number of series in the data source. + * + * @return The number of series in the data source. + */ + public int getSeriesCount() { + return 2; + } - /** - *

- * getLegendItemCount. - *

- * - * @return a int - */ - public int getLegendItemCount() { - return 2; + /** + * Returns the name of the series. + * + * @param series The index (zero-based) of the series; + * @return The name of the series. + */ + public String getSeriesName(int series) { + if (series == 0) { + return "y = cosine(x)"; + } else if (series == 1) { + return "y = 2*sine(x)"; + } else { + return "Error"; } + } + + /** + *

+ * getXValue. + *

+ * + * @param series a int + * @param item a int + * @return a {@link java.lang.Number} object + */ + public Number getXValue(int series, int item) { + return Double.valueOf(-10.0 + (item * 0.2)); + } - /** - *

- * getLegendItemLabels. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[] getLegendItemLabels() { - String[] str = new String[2]; - str[1] = ""; - str[2] = ""; - return str; + /** + * Returns the y-value for the specified series and item. Series are numbered 0, 1, ... + * + * @param series The index (zero-based) of the series; + * @param item The index (zero-based) of the required item; + * @return The y-value for the specified series and item. + */ + public Number getYValue(int series, int item) { + if (series == 0) { + return Double.valueOf(Math.cos(-10.0 + (item * 0.2))); + } else { + return Double.valueOf(2 * (Math.sin(-10.0 + (item * 0.2)))); } + } - /** - *

- * printToFile. - *

- * - * @param points an array of {@link double} objects - * @param filename a {@link java.lang.String} object - */ - public void printToFile(double[][] points, String filename) { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.####E0"); + /** + *

+ * printToFile. + *

+ * + * @param points an array of type double + * @param filename a {@link java.lang.String} object + */ + public void printToFile(double[][] points, String filename) { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.####E0"); - try (DataOutputStream rt = new DataOutputStream( - new BufferedOutputStream(new FileOutputStream(new File("c:/temp/" + filename))))) { - for (int i = 0; i < points.length; i++) { - for (int j = 0; j < points[i].length; j++) { - rt.writeBytes(nf.format(points[i][j]) + "\t"); - if (j == (points[i].length - 1)) { - rt.writeBytes("\n"); - } - } - } - } catch (Exception e) { - String err = e.toString(); - System.out.println(err); + try (DataOutputStream rt = new DataOutputStream( + new BufferedOutputStream(new FileOutputStream(new File("c:/temp/" + filename))))) { + for (int i = 0; i < points.length; i++) { + for (int j = 0; j < points[i].length; j++) { + rt.writeBytes(nf.format(points[i][j]) + "\t"); + if (j == (points[i].length - 1)) { + rt.writeBytes("\n"); + } } + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/main/java/neqsim/dataPresentation/fileHandeling/createTextFile/TextFile.java b/src/main/java/neqsim/dataPresentation/fileHandeling/createTextFile/TextFile.java index 0c975642dc..2431ca49f0 100644 --- a/src/main/java/neqsim/dataPresentation/fileHandeling/createTextFile/TextFile.java +++ b/src/main/java/neqsim/dataPresentation/fileHandeling/createTextFile/TextFile.java @@ -2,6 +2,8 @@ import java.io.File; import java.io.FileWriter; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** *

@@ -12,98 +14,98 @@ * @version $Id: $Id */ public class TextFile implements java.io.Serializable { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(TextFile.class); - String fileName = "c:/example.txt"; - String[][] values; - // NetcdfFileWriteable ncfile; + String fileName = "c:/example.txt"; + String[][] values; - /** - *

- * Constructor for TextFile. - *

- */ - public TextFile() {} + /** + *

+ * Constructor for TextFile. + *

+ */ + public TextFile() {} - /** - *

- * setOutputFileName. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setOutputFileName(String name) { - this.fileName = name; - } + /** + *

+ * setOutputFileName. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setOutputFileName(String name) { + this.fileName = name; + } - /** - *

- * newFile. - *

- * - * @param name a {@link java.lang.String} object - */ - public void newFile(String name) { - try (FileWriter out = new FileWriter(new File(name))) { - out.write(""); - } catch (Exception e) { - System.out.println(e.toString()); - } + /** + *

+ * newFile. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void newFile(String name) { + try (FileWriter out = new FileWriter(new File(name))) { + out.write(""); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } - /** - *

- * Setter for the field values. - *

- * - * @param values an array of {@link java.lang.String} objects - */ - public void setValues(String[][] values) { - System.out.println("writing " + values[0][0] + " data"); - this.values = values; - } + /** + *

+ * Setter for the field values. + *

+ * + * @param values an array of {@link java.lang.String} objects + */ + public void setValues(String[][] values) { + System.out.println("writing " + values[0][0] + " data"); + this.values = values; + } - /** - *

- * Setter for the field values. - *

- * - * @param valuesloca an array of {@link double} objects - */ - public void setValues(double[][] valuesloca) { - values = new String[valuesloca[0].length][valuesloca.length]; - // System.out.println("writing " + values[0][0] + " data"); - for (int i = 0; i < values.length; i++) { - for (int j = 0; j < values[0].length; j++) { - values[i][j] = Double.toString(valuesloca[j][i]) + " "; - } - } + /** + *

+ * Setter for the field values. + *

+ * + * @param valuesloca an array of type double + */ + public void setValues(double[][] valuesloca) { + values = new String[valuesloca[0].length][valuesloca.length]; + // System.out.println("writing " + values[0][0] + " data"); + for (int i = 0; i < values.length; i++) { + for (int j = 0; j < values[0].length; j++) { + values[i][j] = Double.toString(valuesloca[j][i]) + " "; + } } + } - /** - *

- * createFile. - *

- */ - public void createFile() { - System.out.println("writing " + values[0][0] + " data"); - System.out.println("length " + values.length); - System.out.println("length2 " + values[0].length); + /** + *

+ * createFile. + *

+ */ + public void createFile() { + System.out.println("writing " + values[0][0] + " data"); + System.out.println("length " + values.length); + System.out.println("length2 " + values[0].length); - try (FileWriter out = new FileWriter(new File(fileName), true)) { - for (int i = 0; i < values.length; i++) { - for (int j = 0; j < values[0].length; j++) { - if (values[i][j] != null) { - out.write(values[i][j]); - } - out.write("\t"); - } - out.write("\n"); - } - out.flush(); - } catch (Exception e) { - System.err.println("error writing file: " + e.toString()); + try (FileWriter out = new FileWriter(new File(fileName), true)) { + for (int i = 0; i < values.length; i++) { + for (int j = 0; j < values[0].length; j++) { + if (values[i][j] != null) { + out.write(values[i][j]); + } + out.write("\t"); } - System.out.println("writing data to file: " + fileName + " ... ok"); + out.write("\n"); + } + out.flush(); + } catch (Exception ex) { + logger.error("error writing to file", ex); } + System.out.println("writing data to file: " + fileName + " ... finished"); + } } diff --git a/src/main/java/neqsim/dataPresentation/userInterface.java b/src/main/java/neqsim/dataPresentation/userInterface.java deleted file mode 100644 index 7a4e514aa5..0000000000 --- a/src/main/java/neqsim/dataPresentation/userInterface.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * userInterface.java - * - * Created on 15. juni 2000, 18:28 - */ -package neqsim.dataPresentation; - -/** - *

- * userInterface class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class userInterface implements java.io.Serializable { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for userInterface. - *

- */ - public userInterface() {} -} diff --git a/src/main/java/neqsim/fluidMechanics/flowLeg/FlowLeg.java b/src/main/java/neqsim/fluidMechanics/flowLeg/FlowLeg.java index 4b6835e93a..bd2fefb4ef 100644 --- a/src/main/java/neqsim/fluidMechanics/flowLeg/FlowLeg.java +++ b/src/main/java/neqsim/fluidMechanics/flowLeg/FlowLeg.java @@ -3,6 +3,7 @@ * * Created on 8. desember 2000, 19:30 */ + package neqsim.fluidMechanics.flowLeg; import neqsim.fluidMechanics.flowNode.FlowNodeInterface; @@ -19,184 +20,182 @@ * @version $Id: $Id */ public abstract class FlowLeg implements FlowLegInterface, java.io.Serializable { - private static final long serialVersionUID = 1000; - - protected FlowNodeInterface[] flowNode; - protected int numberOfNodes = 0; - protected double startLongitudionalCoordinate, endLongitudionalCoordinate; - protected double startHeightCoordinate, endHeightCoordinate; - protected double startOuterTemperature, endOuterTemperature, startOuterHeatTransferCoefficient, - endOuterHeatTransferCoefficient, startWallHeatTransferCOefficients, - endWallHeatTransferCOefficients; - protected SystemInterface thermoSystem; - protected GeometryDefinitionInterface equipmentGeometry; - protected double heightChangePerNode = 0, longitudionalChangePerNode = 0, - temperatureChangePerNode = 0; - protected FlowNodeSelector nodeSelector = new FlowNodeSelector(); - - /** - *

- * Constructor for FlowLeg. - *

- */ - public FlowLeg() { - flowNode = new FlowNodeInterface[this.getNumberOfNodes()]; - } - - /** {@inheritDoc} */ - @Override - public void createFlowNodes() { - temperatureChangePerNode = - (endOuterTemperature - startOuterTemperature) / (1.0 * getNumberOfNodes()); - longitudionalChangePerNode = (endLongitudionalCoordinate - startLongitudionalCoordinate) - / (1.0 * getNumberOfNodes()); - heightChangePerNode = - (endHeightCoordinate - startHeightCoordinate) / (1.0 * getNumberOfNodes()); - - flowNode[0].setDistanceToCenterOfNode( - this.startLongitudionalCoordinate + 0.5 * longitudionalChangePerNode); - flowNode[0].setLengthOfNode(longitudionalChangePerNode); - flowNode[0].setVerticalPositionOfNode(startHeightCoordinate + 0.5 * heightChangePerNode); - flowNode[0].getGeometry().getSurroundingEnvironment() - .setTemperature(startOuterTemperature + 0.5 * temperatureChangePerNode); - flowNode[0].init(); - - for (int i = 0; i < getNumberOfNodes() - 1; i++) { - flowNode[i + 1] = flowNode[i].getNextNode(); - flowNode[i + 1].setDistanceToCenterOfNode( - flowNode[0].getDistanceToCenterOfNode() + (i + 1) * longitudionalChangePerNode); - flowNode[i + 1].setVerticalPositionOfNode( - flowNode[0].getVerticalPositionOfNode() + (i + 1) * heightChangePerNode); - flowNode[i + 1].setLengthOfNode(longitudionalChangePerNode); - flowNode[i].getGeometry().getSurroundingEnvironment() - .setTemperature(startOuterTemperature + (i + 1) * temperatureChangePerNode); - flowNode[i].getGeometry().getSurroundingEnvironment() - .setHeatTransferCoefficient(startOuterHeatTransferCoefficient + (i + 1) * 1.0 - / (getNumberOfNodes() * 1.0) * (endOuterHeatTransferCoefficient - - startOuterHeatTransferCoefficient)); - flowNode[i].getGeometry() - .setWallHeatTransferCoefficient(startWallHeatTransferCOefficients + (i + 1) - * 1.0 / (getNumberOfNodes() * 1.0) * (endWallHeatTransferCOefficients - - startWallHeatTransferCOefficients)); - flowNode[i + 1].init(); - } - } - - /** - *

- * setFlowNodeTypes. - *

- */ - public void setFlowNodeTypes() { - nodeSelector.getFlowNodeType(flowNode); - - for (int i = 0; i < getNumberOfNodes(); i++) { - flowNode[i].setDistanceToCenterOfNode( - flowNode[0].getDistanceToCenterOfNode() + (i) * longitudionalChangePerNode); - flowNode[i].setLengthOfNode(longitudionalChangePerNode); - flowNode[i].setVerticalPositionOfNode( - flowNode[0].getVerticalPositionOfNode() + (i) * heightChangePerNode); - flowNode[i].getGeometry().getSurroundingEnvironment() - .setTemperature(startOuterTemperature + (i) * temperatureChangePerNode); - flowNode[i].init(); - } - } - - /** {@inheritDoc} */ - @Override - public void setFlowPattern(String flowPattern) { - nodeSelector.setFlowPattern(flowNode, flowPattern); - flowNode[0].init(); - flowNode[0].setDistanceToCenterOfNode( - this.startLongitudionalCoordinate + 0.5 * longitudionalChangePerNode); - flowNode[0].setLengthOfNode(longitudionalChangePerNode); - flowNode[0].setVerticalPositionOfNode(startHeightCoordinate + 0.5 * heightChangePerNode); - - for (int i = 0; i < getNumberOfNodes() - 1; i++) { - flowNode[i + 1] = flowNode[i].getNextNode(); - flowNode[i + 1].setDistanceToCenterOfNode( - flowNode[0].getDistanceToCenterOfNode() + (i + 1) * longitudionalChangePerNode); - flowNode[i + 1].setVerticalPositionOfNode( - flowNode[0].getVerticalPositionOfNode() + (i + 1) * heightChangePerNode); - flowNode[i + 1].setLengthOfNode(longitudionalChangePerNode); - flowNode[i].getGeometry().getSurroundingEnvironment() - .setTemperature(startOuterTemperature + (i) * temperatureChangePerNode); - - flowNode[i + 1].init(); - } + private static final long serialVersionUID = 1000; + + protected FlowNodeInterface[] flowNode; + protected int numberOfNodes = 0; + protected double startLongitudionalCoordinate, endLongitudionalCoordinate; + protected double startHeightCoordinate, endHeightCoordinate; + protected double startOuterTemperature, endOuterTemperature, startOuterHeatTransferCoefficient, + endOuterHeatTransferCoefficient, startWallHeatTransferCOefficients, + endWallHeatTransferCOefficients; + protected SystemInterface thermoSystem; + protected GeometryDefinitionInterface equipmentGeometry; + protected double heightChangePerNode = 0, longitudionalChangePerNode = 0, + temperatureChangePerNode = 0; + protected FlowNodeSelector nodeSelector = new FlowNodeSelector(); + + /** + *

+ * Constructor for FlowLeg. + *

+ */ + public FlowLeg() { + flowNode = new FlowNodeInterface[this.getNumberOfNodes()]; + } + + /** {@inheritDoc} */ + @Override + public void createFlowNodes() { + temperatureChangePerNode = + (endOuterTemperature - startOuterTemperature) / (1.0 * getNumberOfNodes()); + longitudionalChangePerNode = + (endLongitudionalCoordinate - startLongitudionalCoordinate) / (1.0 * getNumberOfNodes()); + heightChangePerNode = + (endHeightCoordinate - startHeightCoordinate) / (1.0 * getNumberOfNodes()); + + flowNode[0].setDistanceToCenterOfNode( + this.startLongitudionalCoordinate + 0.5 * longitudionalChangePerNode); + flowNode[0].setLengthOfNode(longitudionalChangePerNode); + flowNode[0].setVerticalPositionOfNode(startHeightCoordinate + 0.5 * heightChangePerNode); + flowNode[0].getGeometry().getSurroundingEnvironment() + .setTemperature(startOuterTemperature + 0.5 * temperatureChangePerNode); + flowNode[0].init(); + + for (int i = 0; i < getNumberOfNodes() - 1; i++) { + flowNode[i + 1] = flowNode[i].getNextNode(); + flowNode[i + 1].setDistanceToCenterOfNode( + flowNode[0].getDistanceToCenterOfNode() + (i + 1) * longitudionalChangePerNode); + flowNode[i + 1].setVerticalPositionOfNode( + flowNode[0].getVerticalPositionOfNode() + (i + 1) * heightChangePerNode); + flowNode[i + 1].setLengthOfNode(longitudionalChangePerNode); + flowNode[i].getGeometry().getSurroundingEnvironment() + .setTemperature(startOuterTemperature + (i + 1) * temperatureChangePerNode); + flowNode[i].getGeometry().getSurroundingEnvironment().setHeatTransferCoefficient( + startOuterHeatTransferCoefficient + (i + 1) * 1.0 / (getNumberOfNodes() * 1.0) + * (endOuterHeatTransferCoefficient - startOuterHeatTransferCoefficient)); + flowNode[i].getGeometry().setWallHeatTransferCoefficient( + startWallHeatTransferCOefficients + (i + 1) * 1.0 / (getNumberOfNodes() * 1.0) + * (endWallHeatTransferCOefficients - startWallHeatTransferCOefficients)); + flowNode[i + 1].init(); } - - /** {@inheritDoc} */ - @Override - public void setThermoSystem(SystemInterface thermoSystem) { - this.thermoSystem = thermoSystem.clone(); - } - - /** {@inheritDoc} */ - @Override - public void setEquipmentGeometry(GeometryDefinitionInterface equipmentGeometry) { - this.equipmentGeometry = equipmentGeometry.clone(); - } - - /** {@inheritDoc} */ - @Override - public void setNumberOfNodes(int numberOfNodes) { - this.numberOfNodes = numberOfNodes; - } - - /** {@inheritDoc} */ - @Override - public int getNumberOfNodes() { - return this.numberOfNodes; + } + + /** + *

+ * setFlowNodeTypes. + *

+ */ + public void setFlowNodeTypes() { + nodeSelector.getFlowNodeType(flowNode); + + for (int i = 0; i < getNumberOfNodes(); i++) { + flowNode[i].setDistanceToCenterOfNode( + flowNode[0].getDistanceToCenterOfNode() + (i) * longitudionalChangePerNode); + flowNode[i].setLengthOfNode(longitudionalChangePerNode); + flowNode[i].setVerticalPositionOfNode( + flowNode[0].getVerticalPositionOfNode() + (i) * heightChangePerNode); + flowNode[i].getGeometry().getSurroundingEnvironment() + .setTemperature(startOuterTemperature + (i) * temperatureChangePerNode); + flowNode[i].init(); } - - /** {@inheritDoc} */ - @Override - public void setHeightCoordinates(double startHeightCoordinate, double endHeightCoordinate) { - this.startHeightCoordinate = startHeightCoordinate; - this.endHeightCoordinate = endHeightCoordinate; - } - - /** {@inheritDoc} */ - @Override - public void setOuterHeatTransferCoefficients(double startHeatTransferCoefficient, - double endHeatTransferCoefficient) { - this.startOuterHeatTransferCoefficient = startHeatTransferCoefficient; - this.endOuterHeatTransferCoefficient = endHeatTransferCoefficient; - } - - /** {@inheritDoc} */ - @Override - public void setWallHeatTransferCoefficients(double startHeatTransferCoefficient, - double endHeatTransferCoefficient) { - this.startWallHeatTransferCOefficients = startHeatTransferCoefficient; - this.endWallHeatTransferCOefficients = endHeatTransferCoefficient; - } - - /** {@inheritDoc} */ - @Override - public void setLongitudionalCoordinates(double startLongitudionalCoordinate, - double endLongitudionalCoordinate) { - this.startLongitudionalCoordinate = startLongitudionalCoordinate; - this.endLongitudionalCoordinate = endLongitudionalCoordinate; - } - - /** {@inheritDoc} */ - @Override - public void setOuterTemperatures(double startTemperature, double endTemperature) { - this.startOuterTemperature = startTemperature; - this.endOuterTemperature = endTemperature; - } - - /** {@inheritDoc} */ - @Override - public FlowNodeInterface[] getFlowNodes() { - return flowNode; - } - - /** {@inheritDoc} */ - @Override - public FlowNodeInterface getNode(int i) { - return flowNode[i]; + } + + /** {@inheritDoc} */ + @Override + public void setFlowPattern(String flowPattern) { + nodeSelector.setFlowPattern(flowNode, flowPattern); + flowNode[0].init(); + flowNode[0].setDistanceToCenterOfNode( + this.startLongitudionalCoordinate + 0.5 * longitudionalChangePerNode); + flowNode[0].setLengthOfNode(longitudionalChangePerNode); + flowNode[0].setVerticalPositionOfNode(startHeightCoordinate + 0.5 * heightChangePerNode); + + for (int i = 0; i < getNumberOfNodes() - 1; i++) { + flowNode[i + 1] = flowNode[i].getNextNode(); + flowNode[i + 1].setDistanceToCenterOfNode( + flowNode[0].getDistanceToCenterOfNode() + (i + 1) * longitudionalChangePerNode); + flowNode[i + 1].setVerticalPositionOfNode( + flowNode[0].getVerticalPositionOfNode() + (i + 1) * heightChangePerNode); + flowNode[i + 1].setLengthOfNode(longitudionalChangePerNode); + flowNode[i].getGeometry().getSurroundingEnvironment() + .setTemperature(startOuterTemperature + (i) * temperatureChangePerNode); + + flowNode[i + 1].init(); } + } + + /** {@inheritDoc} */ + @Override + public void setThermoSystem(SystemInterface thermoSystem) { + this.thermoSystem = thermoSystem.clone(); + } + + /** {@inheritDoc} */ + @Override + public void setEquipmentGeometry(GeometryDefinitionInterface equipmentGeometry) { + this.equipmentGeometry = equipmentGeometry.clone(); + } + + /** {@inheritDoc} */ + @Override + public void setNumberOfNodes(int numberOfNodes) { + this.numberOfNodes = numberOfNodes; + } + + /** {@inheritDoc} */ + @Override + public int getNumberOfNodes() { + return this.numberOfNodes; + } + + /** {@inheritDoc} */ + @Override + public void setHeightCoordinates(double startHeightCoordinate, double endHeightCoordinate) { + this.startHeightCoordinate = startHeightCoordinate; + this.endHeightCoordinate = endHeightCoordinate; + } + + /** {@inheritDoc} */ + @Override + public void setOuterHeatTransferCoefficients(double startHeatTransferCoefficient, + double endHeatTransferCoefficient) { + this.startOuterHeatTransferCoefficient = startHeatTransferCoefficient; + this.endOuterHeatTransferCoefficient = endHeatTransferCoefficient; + } + + /** {@inheritDoc} */ + @Override + public void setWallHeatTransferCoefficients(double startHeatTransferCoefficient, + double endHeatTransferCoefficient) { + this.startWallHeatTransferCOefficients = startHeatTransferCoefficient; + this.endWallHeatTransferCOefficients = endHeatTransferCoefficient; + } + + /** {@inheritDoc} */ + @Override + public void setLongitudionalCoordinates(double startLongitudionalCoordinate, + double endLongitudionalCoordinate) { + this.startLongitudionalCoordinate = startLongitudionalCoordinate; + this.endLongitudionalCoordinate = endLongitudionalCoordinate; + } + + /** {@inheritDoc} */ + @Override + public void setOuterTemperatures(double startTemperature, double endTemperature) { + this.startOuterTemperature = startTemperature; + this.endOuterTemperature = endTemperature; + } + + /** {@inheritDoc} */ + @Override + public FlowNodeInterface[] getFlowNodes() { + return flowNode; + } + + /** {@inheritDoc} */ + @Override + public FlowNodeInterface getNode(int i) { + return flowNode[i]; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowLeg/FlowLegInterface.java b/src/main/java/neqsim/fluidMechanics/flowLeg/FlowLegInterface.java index 1430dccc9b..9fa1d19ad5 100644 --- a/src/main/java/neqsim/fluidMechanics/flowLeg/FlowLegInterface.java +++ b/src/main/java/neqsim/fluidMechanics/flowLeg/FlowLegInterface.java @@ -3,6 +3,7 @@ * * Created on 11. desember 2000, 17:47 */ + package neqsim.fluidMechanics.flowLeg; import neqsim.fluidMechanics.flowNode.FlowNodeInterface; @@ -18,137 +19,137 @@ * @version $Id: $Id */ public interface FlowLegInterface { - /** - *

- * setThermoSystem. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setThermoSystem(SystemInterface thermoSystem); - - /** - *

- * setEquipmentGeometry. - *

- * - * @param equipmentGeometry a - * {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} object - */ - public void setEquipmentGeometry(GeometryDefinitionInterface equipmentGeometry); - - /** - *

- * setNumberOfNodes. - *

- * - * @param numberOfNodes a int - */ - public void setNumberOfNodes(int numberOfNodes); - - /** - *

- * setHeightCoordinates. - *

- * - * @param startHeightCoordinate a double - * @param endHeightCoordinate a double - */ - public void setHeightCoordinates(double startHeightCoordinate, double endHeightCoordinate); - - /** - *

- * setOuterTemperatures. - *

- * - * @param temp1 a double - * @param temp2 a double - */ - public void setOuterTemperatures(double temp1, double temp2); - - /** - *

- * setLongitudionalCoordinates. - *

- * - * @param startLongitudionalCoordinate a double - * @param endLongitudionalCoordinate a double - */ - public void setLongitudionalCoordinates(double startLongitudionalCoordinate, - double endLongitudionalCoordinate); - - /** - *

- * createFlowNodes. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public void createFlowNodes(FlowNodeInterface node); - - /** - *

- * createFlowNodes. - *

- */ - public void createFlowNodes(); - - /** - *

- * getNumberOfNodes. - *

- * - * @return a int - */ - public int getNumberOfNodes(); - - /** - *

- * getNode. - *

- * - * @param i a int - * @return a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public FlowNodeInterface getNode(int i); - - /** - *

- * getFlowNodes. - *

- * - * @return an array of {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} objects - */ - public FlowNodeInterface[] getFlowNodes(); - - /** - *

- * setOuterHeatTransferCoefficients. - *

- * - * @param startHeatTransferCoefficient a double - * @param endHeatTransferCoefficient a double - */ - public void setOuterHeatTransferCoefficients(double startHeatTransferCoefficient, - double endHeatTransferCoefficient); - - /** - *

- * setWallHeatTransferCoefficients. - *

- * - * @param startHeatTransferCoefficient a double - * @param endHeatTransferCoefficient a double - */ - public void setWallHeatTransferCoefficients(double startHeatTransferCoefficient, - double endHeatTransferCoefficient); - - /** - *

- * setFlowPattern. - *

- * - * @param flowPattern a {@link java.lang.String} object - */ - public void setFlowPattern(String flowPattern); + /** + *

+ * setThermoSystem. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setThermoSystem(SystemInterface thermoSystem); + + /** + *

+ * setEquipmentGeometry. + *

+ * + * @param equipmentGeometry a + * {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} object + */ + public void setEquipmentGeometry(GeometryDefinitionInterface equipmentGeometry); + + /** + *

+ * setNumberOfNodes. + *

+ * + * @param numberOfNodes a int + */ + public void setNumberOfNodes(int numberOfNodes); + + /** + *

+ * setHeightCoordinates. + *

+ * + * @param startHeightCoordinate a double + * @param endHeightCoordinate a double + */ + public void setHeightCoordinates(double startHeightCoordinate, double endHeightCoordinate); + + /** + *

+ * setOuterTemperatures. + *

+ * + * @param temp1 a double + * @param temp2 a double + */ + public void setOuterTemperatures(double temp1, double temp2); + + /** + *

+ * setLongitudionalCoordinates. + *

+ * + * @param startLongitudionalCoordinate a double + * @param endLongitudionalCoordinate a double + */ + public void setLongitudionalCoordinates(double startLongitudionalCoordinate, + double endLongitudionalCoordinate); + + /** + *

+ * createFlowNodes. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public void createFlowNodes(FlowNodeInterface node); + + /** + *

+ * createFlowNodes. + *

+ */ + public void createFlowNodes(); + + /** + *

+ * getNumberOfNodes. + *

+ * + * @return a int + */ + public int getNumberOfNodes(); + + /** + *

+ * getNode. + *

+ * + * @param i a int + * @return a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public FlowNodeInterface getNode(int i); + + /** + *

+ * getFlowNodes. + *

+ * + * @return an array of {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} objects + */ + public FlowNodeInterface[] getFlowNodes(); + + /** + *

+ * setOuterHeatTransferCoefficients. + *

+ * + * @param startHeatTransferCoefficient a double + * @param endHeatTransferCoefficient a double + */ + public void setOuterHeatTransferCoefficients(double startHeatTransferCoefficient, + double endHeatTransferCoefficient); + + /** + *

+ * setWallHeatTransferCoefficients. + *

+ * + * @param startHeatTransferCoefficient a double + * @param endHeatTransferCoefficient a double + */ + public void setWallHeatTransferCoefficients(double startHeatTransferCoefficient, + double endHeatTransferCoefficient); + + /** + *

+ * setFlowPattern. + *

+ * + * @param flowPattern a {@link java.lang.String} object + */ + public void setFlowPattern(String flowPattern); } diff --git a/src/main/java/neqsim/fluidMechanics/flowLeg/pipeLeg/PipeLeg.java b/src/main/java/neqsim/fluidMechanics/flowLeg/pipeLeg/PipeLeg.java index e2c9a6d47a..555d5619ba 100644 --- a/src/main/java/neqsim/fluidMechanics/flowLeg/pipeLeg/PipeLeg.java +++ b/src/main/java/neqsim/fluidMechanics/flowLeg/pipeLeg/PipeLeg.java @@ -3,6 +3,7 @@ * * Created on 8. desember 2000, 19:32 */ + package neqsim.fluidMechanics.flowLeg.pipeLeg; import neqsim.fluidMechanics.flowLeg.FlowLeg; @@ -17,40 +18,40 @@ * @version $Id: $Id */ public class PipeLeg extends FlowLeg { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - // FlowNodeInterface[] node; + // FlowNodeInterface[] node; - /** - *

- * Constructor for PipeLeg. - *

- */ - public PipeLeg() { - super(); - } + /** + *

+ * Constructor for PipeLeg. + *

+ */ + public PipeLeg() { + super(); + } - /** {@inheritDoc} */ - @Override - public void createFlowNodes(FlowNodeInterface initNode) { - heightChangePerNode = - (this.endHeightCoordinate - this.startHeightCoordinate) / this.getNumberOfNodes(); - longitudionalChangePerNode = - (this.endLongitudionalCoordinate - this.startLongitudionalCoordinate) - / (this.getNumberOfNodes() * 1.0); - temperatureChangePerNode = (this.endOuterTemperature - this.startOuterTemperature) - / (this.getNumberOfNodes() * 1.0); + /** {@inheritDoc} */ + @Override + public void createFlowNodes(FlowNodeInterface initNode) { + heightChangePerNode = + (this.endHeightCoordinate - this.startHeightCoordinate) / this.getNumberOfNodes(); + longitudionalChangePerNode = + (this.endLongitudionalCoordinate - this.startLongitudionalCoordinate) + / (this.getNumberOfNodes() * 1.0); + temperatureChangePerNode = + (this.endOuterTemperature - this.startOuterTemperature) / (this.getNumberOfNodes() * 1.0); - flowNode = new FlowNodeInterface[this.getNumberOfNodes()]; - this.flowNode[0] = initNode.getNextNode(); - this.equipmentGeometry.setNodeLength(longitudionalChangePerNode); - this.equipmentGeometry.init(); - flowNode[0].setGeometryDefinitionInterface(this.equipmentGeometry); - // flowNode = new onePhasePipeFlowNode[this.getNumberOfNodes()]; - // flowNode[0] = new onePhasePipeFlowNode(thermoSystem, this.equipmentGeometry, - // inletTotalNormalVolumetricFlowRate); - // flowNode[0] = new AnnularFlow(thermoSystem, this.equipmentGeometry, - // inletTotalNormalVolumetricFlowRate); - super.createFlowNodes(); - } + flowNode = new FlowNodeInterface[this.getNumberOfNodes()]; + this.flowNode[0] = initNode.getNextNode(); + this.equipmentGeometry.setNodeLength(longitudionalChangePerNode); + this.equipmentGeometry.init(); + flowNode[0].setGeometryDefinitionInterface(this.equipmentGeometry); + // flowNode = new onePhasePipeFlowNode[this.getNumberOfNodes()]; + // flowNode[0] = new onePhasePipeFlowNode(thermoSystem, this.equipmentGeometry, + // inletTotalNormalVolumetricFlowRate); + // flowNode[0] = new AnnularFlow(thermoSystem, this.equipmentGeometry, + // inletTotalNormalVolumetricFlowRate); + super.createFlowNodes(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/FlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/FlowNode.java index c3bec4f665..0bedd2fd53 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/FlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/FlowNode.java @@ -31,11 +31,19 @@ public abstract class FlowNode implements FlowNodeInterface, ThermodynamicConstantsInterface { private static final long serialVersionUID = 1000; - protected double distanceToCenterOfNode = 0, lengthOfNode = 0, veticalPositionOfNode = 0; - protected double[] hydraulicDiameter, reynoldsNumber; + protected double distanceToCenterOfNode = 0; + protected double lengthOfNode = 0; + protected double veticalPositionOfNode = 0; + protected double[] hydraulicDiameter; + protected double[] reynoldsNumber; protected int[] flowDirection; - protected double[] interphaseContactLength, wallContactLength, phaseFraction; - public double[] molarFlowRate, massFlowRate, volumetricFlowRate; + protected double[] interphaseContactLength; + protected double[] wallContactLength; + protected double[] phaseFraction; + public double[] molarFlowRate; + public double[] massFlowRate; + public double[] volumetricFlowRate; + protected ThermodynamicOperations operations; protected String flowNodeType = null; protected FluidBoundaryInterface fluidBoundary = null; @@ -48,7 +56,10 @@ public abstract class FlowNode implements FlowNodeInterface, ThermodynamicConsta public double[] velocity; public GeometryDefinitionInterface pipe; protected InterphaseTransportCoefficientInterface interphaseTransportCoefficient; - protected double[] wallFrictionFactor, interphaseFrictionFactor; + protected double[] wallFrictionFactor; + + protected double[] interphaseFrictionFactor; + protected Double[] specifiedFrictionFactor = null; protected ThermodynamicOperations phaseOps; @@ -145,7 +156,7 @@ public void setFrictionFactorType(int type) { if (type == 1) { interphaseTransportCoefficient = new InterphaseTransportCoefficientBaseClass(this); } else { - System.out.println("error chhosing friction type"); + System.out.println("error choosing friction type"); } } @@ -216,8 +227,8 @@ public FlowNode clone() { FlowNode clonedSystem = null; try { clonedSystem = (FlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); + } catch (Exception ex) { + ex.printStackTrace(); } clonedSystem.bulkSystem = bulkSystem.clone(); @@ -270,6 +281,8 @@ public FlowNode clone() { /** {@inheritDoc} */ @Override public void init() { + bulkSystem.initBeta(); + bulkSystem.init_x_y(); bulkSystem.init(3); bulkSystem.initPhysicalProperties(); } @@ -277,6 +290,8 @@ public void init() { /** {@inheritDoc} */ @Override public void initBulkSystem() { + bulkSystem.initBeta(); + bulkSystem.init_x_y(); bulkSystem.init(3); bulkSystem.initPhysicalProperties(); } @@ -429,7 +444,7 @@ public void setBulkSystem(SystemInterface bulkSystem) { /** {@inheritDoc} */ @Override public FlowNodeInterface getNextNode() { - return (FlowNodeInterface) this.clone(); + return this.clone(); } /** {@inheritDoc} */ @@ -444,7 +459,7 @@ public void calcFluxes() {} /** {@inheritDoc} */ @Override - public void setFluxes(double dn[]) {} + public void setFluxes(double[] dn) {} /** {@inheritDoc} */ @Override @@ -575,10 +590,12 @@ public void display(String name) { JTable Jtab = new JTable(table, names); JScrollPane scrollpane = new JScrollPane(Jtab); dialogContentPane.add(scrollpane); - Jtab.setRowHeight(dialog.getHeight() / table.length); - Jtab.setFont(new Font("Serif", Font.PLAIN, - dialog.getHeight() / table.length - dialog.getHeight() / table.length / 10)); - // dialog.pack(); + if (table.length > 0) { + Jtab.setRowHeight(dialog.getHeight() / table.length); + Jtab.setFont(new Font("Serif", Font.PLAIN, + dialog.getHeight() / table.length - dialog.getHeight() / table.length / 10)); + // dialog.pack(); + } dialog.setVisible(true); } @@ -628,11 +645,19 @@ public void setFlowDirection(int flowDirection, int i) { * @return an array of {@link java.lang.String} objects */ public String[][] createTable(String name) { + int rows = 0; + if (bulkSystem == null) { + String[][] table = new String[0][5]; + return table; + } + + rows = bulkSystem.getPhases()[0].getNumberOfComponents() * 10; + String[][] table = new String[rows][5]; + DecimalFormat nf = new DecimalFormat(); nf.setMaximumFractionDigits(5); nf.applyPattern("#.#####E0"); - String[][] table = new String[bulkSystem.getPhases()[0].getNumberOfComponents() * 10][5]; table[0][0] = ""; table[0][1] = ""; table[0][2] = ""; @@ -674,7 +699,6 @@ public String[][] createTable(String name) { table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 5][4] = "[-]"; // Double.longValue(system.getPhase(phaseIndex[i]).getBeta()); - buf = new StringBuffer(); table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 6][0] = "Velocity"; table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 6][i + 1] = @@ -724,6 +748,7 @@ public String[][] createTable(String name) { table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 13][i + 1] = name; table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 13][4] = "-"; } + return table; } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/FlowNodeInterface.java b/src/main/java/neqsim/fluidMechanics/flowNode/FlowNodeInterface.java index 743f0b69f9..62beeb5ba0 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/FlowNodeInterface.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/FlowNodeInterface.java @@ -58,7 +58,7 @@ public interface FlowNodeInterface extends Cloneable { * * @return a double */ - default public double getVelocity() { + public default double getVelocity() { return getVelocity(0); } @@ -79,7 +79,7 @@ default public double getVelocity() { * * @return a {@link neqsim.util.util.DoubleCloneable} object */ - default public DoubleCloneable getVelocityIn() { + public default DoubleCloneable getVelocityIn() { return getVelocityIn(0); } @@ -100,7 +100,7 @@ default public DoubleCloneable getVelocityIn() { * * @return a {@link neqsim.util.util.DoubleCloneable} object */ - default public DoubleCloneable getVelocityOut() { + public default DoubleCloneable getVelocityOut() { return getVelocityOut(0); } @@ -130,7 +130,7 @@ default public DoubleCloneable getVelocityOut() { * * @return a double */ - default public double getWallFrictionFactor() { + public default double getWallFrictionFactor() { return getWallFrictionFactor(0); } @@ -183,7 +183,7 @@ default public double getWallFrictionFactor() { * * @param vel a double */ - default public void setVelocity(double vel) { + public default void setVelocity(double vel) { setVelocity(0, vel); } @@ -236,7 +236,7 @@ default public void setVelocity(double vel) { * * @return a double */ - default public double getReynoldsNumber() { + public default double getReynoldsNumber() { return getReynoldsNumber(0); } @@ -261,7 +261,7 @@ default public double getReynoldsNumber() { /** *

- * Getter for property operations + * Getter for property operations. *

* * @return a {@link neqsim.thermodynamicOperations.ThermodynamicOperations} object @@ -310,7 +310,7 @@ default public double getReynoldsNumber() { * * @param vel a double */ - default public void setVelocityOut(double vel) { + public default void setVelocityOut(double vel) { setVelocityOut(0, vel); } @@ -331,7 +331,7 @@ default public void setVelocityOut(double vel) { * * @param vel a {@link neqsim.util.util.DoubleCloneable} object */ - default public void setVelocityOut(DoubleCloneable vel) { + public default void setVelocityOut(DoubleCloneable vel) { setVelocityOut(0, vel); } @@ -503,7 +503,7 @@ default public void setVelocityOut(DoubleCloneable vel) { * * @param vel a double */ - default public void setVelocityIn(double vel) { + public default void setVelocityIn(double vel) { setVelocityIn(0, vel); } @@ -524,7 +524,7 @@ default public void setVelocityIn(double vel) { * * @param vel a {@link neqsim.util.util.DoubleCloneable} object */ - default public void setVelocityIn(DoubleCloneable vel) { + public default void setVelocityIn(DoubleCloneable vel) { setVelocityIn(0, vel); } @@ -608,9 +608,9 @@ default public void setVelocityIn(DoubleCloneable vel) { * setFluxes. *

* - * @param dn an array of {@link double} objects + * @param dn an array of type double */ - public void setFluxes(double dn[]); + public void setFluxes(double[] dn); /** *

@@ -712,11 +712,10 @@ default public void setVelocityIn(DoubleCloneable vel) { * display. *

*/ - default public void display() { + public default void display() { display(""); } - /** *

* display. @@ -728,16 +727,16 @@ default public void display() { /** * Specify wall friction factor for phase 0. Set to null to reset. - * + * * @param frictionFactor Friction factor to use for phase 0 or null to reset. */ - default public void setWallFrictionFactor(double frictionFactor) { + public default void setWallFrictionFactor(double frictionFactor) { setWallFrictionFactor(0, frictionFactor); } /** * Specify wall friction factor for a given phase. Set to null to reset. - * + * * @param phase Index to phase to set wall friction factor for. * @param frictionFactor Friction factor to use for a given phase or null to reset. */ diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/FlowNodeSelector.java b/src/main/java/neqsim/fluidMechanics/flowNode/FlowNodeSelector.java index 81e4efb365..c8f0a46e96 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/FlowNodeSelector.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/FlowNodeSelector.java @@ -12,60 +12,58 @@ * @version $Id: $Id */ public class FlowNodeSelector { - /** - *

- * Constructor for FlowNodeSelector. - *

- */ - public FlowNodeSelector() {} + /** + *

+ * Constructor for FlowNodeSelector. + *

+ */ + public FlowNodeSelector() {} - /** - *

- * getFlowNodeType. - *

- * - * @param flowNode an array of {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} objects - */ - public void getFlowNodeType(FlowNodeInterface[] flowNode) { - System.out.println("forskjell: " + Math.abs(flowNode[0].getVerticalPositionOfNode() - - flowNode[flowNode.length - 1].getVerticalPositionOfNode())); + /** + *

+ * getFlowNodeType. + *

+ * + * @param flowNode an array of {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} objects + */ + public void getFlowNodeType(FlowNodeInterface[] flowNode) { + System.out.println("forskjell: " + Math.abs(flowNode[0].getVerticalPositionOfNode() + - flowNode[flowNode.length - 1].getVerticalPositionOfNode())); - if (Math.abs(flowNode[0].getVerticalPositionOfNode() - - flowNode[flowNode.length - 1].getVerticalPositionOfNode()) > 1) { - for (int i = 0; i < flowNode.length; i++) { - flowNode[i] = new AnnularFlow(flowNode[i].getBulkSystem(), - flowNode[i].getInterphaseSystem(), flowNode[i].getGeometry()); - } - } else { - for (int i = 0; i < flowNode.length; i++) { - flowNode[i] = new StratifiedFlowNode(flowNode[i].getBulkSystem(), - flowNode[i].getInterphaseSystem(), flowNode[i].getGeometry()); - } - } + if (Math.abs(flowNode[0].getVerticalPositionOfNode() + - flowNode[flowNode.length - 1].getVerticalPositionOfNode()) > 1) { + for (int i = 0; i < flowNode.length; i++) { + flowNode[i] = new AnnularFlow(flowNode[i].getBulkSystem(), + flowNode[i].getInterphaseSystem(), flowNode[i].getGeometry()); + } + } else { + for (int i = 0; i < flowNode.length; i++) { + flowNode[i] = new StratifiedFlowNode(flowNode[i].getBulkSystem(), + flowNode[i].getInterphaseSystem(), flowNode[i].getGeometry()); + } } + } - /** - *

- * setFlowPattern. - *

- * - * @param flowNode an array of {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} objects - * @param flowPattern a {@link java.lang.String} object - */ - public void setFlowPattern(FlowNodeInterface[] flowNode, String flowPattern) { - System.out.println("pattern er " + flowPattern); - if (flowPattern.equals("annular")) { - for (int i = 0; i < flowNode.length; i++) { - flowNode[i] = new AnnularFlow(flowNode[i].getBulkSystem(), - flowNode[i].getInterphaseSystem(), flowNode[i].getGeometry()); - } - } else if (flowPattern.equals("stratified")) { - { - for (int i = 0; i < flowNode.length; i++) { - flowNode[i] = new StratifiedFlowNode(flowNode[i].getBulkSystem(), - flowNode[i].getInterphaseSystem(), flowNode[i].getGeometry()); - } - } - } + /** + *

+ * setFlowPattern. + *

+ * + * @param flowNode an array of {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} objects + * @param flowPattern a {@link java.lang.String} object + */ + public void setFlowPattern(FlowNodeInterface[] flowNode, String flowPattern) { + System.out.println("pattern er " + flowPattern); + if (flowPattern.equals("annular")) { + for (int i = 0; i < flowNode.length; i++) { + flowNode[i] = new AnnularFlow(flowNode[i].getBulkSystem(), + flowNode[i].getInterphaseSystem(), flowNode[i].getGeometry()); + } + } else if (flowPattern.equals("stratified")) { + for (int i = 0; i < flowNode.length; i++) { + flowNode[i] = new StratifiedFlowNode(flowNode[i].getBulkSystem(), + flowNode[i].getInterphaseSystem(), flowNode[i].getGeometry()); + } } + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/FluidBoundary.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/FluidBoundary.java index 791480b56c..32464155f3 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/FluidBoundary.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/FluidBoundary.java @@ -11,6 +11,8 @@ import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import Jama.Matrix; import neqsim.fluidMechanics.flowNode.FlowNodeInterface; import neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.reactiveFilmModel.enhancementFactor.EnhancementFactor; @@ -26,493 +28,490 @@ * @version $Id: $Id */ public abstract class FluidBoundary implements FluidBoundaryInterface, java.io.Serializable { - private static final long serialVersionUID = 1000; - - protected FlowNodeInterface flowNode; - protected SystemInterface bulkSystem; - protected SystemInterface interphaseSystem; - protected ThermodynamicOperations interphaseOps; - protected ThermodynamicOperations bulkSystemOps; - public double[] interphaseHeatFlux = new double[2]; - public boolean massTransferCalc = true, heatTransferCalc = false; - public boolean[] thermodynamicCorrections, finiteFluxCorrection; - // protected double[] dn; - protected boolean numeric = false; - protected Matrix jFlux, nFlux; - protected EnhancementFactor enhancementFactor; - // protected double[][][] massTransferCoefficient; - protected double totalFlux = 0; - protected Matrix[] nonIdealCorrections; - protected Matrix[] fluxTypeCorrectionMatrix; - protected Matrix[] rateCorrectionMatrix; - protected Matrix[] fluxTypeCorrectionMatrixV; - protected Matrix[] totalMassTransferCoefficientMatrix; - protected Matrix[] massTransferCoefficientMatrix; - protected double[][][] binarySchmidtNumber; - public double[][][] binaryMassTransferCoefficient; - public double[] heatTransferCoefficient, heatTransferCorrection; - protected double[] prandtlNumber; - protected int solverType = 0; - - /** - *

- * Constructor for FluidBoundary. - *

- */ - public FluidBoundary() {} - - /** - *

- * Constructor for FluidBoundary. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public FluidBoundary(SystemInterface system) { - this.bulkSystem = system; - bulkSystemOps = new ThermodynamicOperations(bulkSystem); - nonIdealCorrections = new Matrix[2]; - fluxTypeCorrectionMatrix = new Matrix[2]; - fluxTypeCorrectionMatrixV = new Matrix[2]; - rateCorrectionMatrix = new Matrix[2]; - totalMassTransferCoefficientMatrix = new Matrix[2]; - massTransferCoefficientMatrix = new Matrix[2]; - jFlux = new Matrix(system.getPhases()[0].getNumberOfComponents() - 1, 1); - nFlux = new Matrix(system.getPhases()[0].getNumberOfComponents(), 1); - nFlux.set(0, 0, 0.0); - nFlux.set(1, 0, 0.0); - heatTransferCoefficient = new double[2]; - heatTransferCorrection = new double[2]; - thermodynamicCorrections = new boolean[2]; - finiteFluxCorrection = new boolean[2]; - prandtlNumber = new double[2]; - initInterphaseSystem(); - // interphaseSystem.display(); - // interphaseOps.chemicalEquilibrium(); - } - - /** - *

- * initInterphaseSystem. - *

- */ - public void initInterphaseSystem() { - interphaseSystem = bulkSystem.clone(); - interphaseSystem.setNumberOfPhases(2); - - // interphaseSystem.addComponent("methane", 100.0,0); - interphaseSystem.initBeta(); - interphaseSystem.setTemperature( - (bulkSystem.getPhase(0).getTemperature() + bulkSystem.getPhase(1).getTemperature()) - / 2.0); - // interphaseSystem.init(0); - // interphaseSystem.setBeta(bulkSystem.getBeta()); - // interphaseSystem.init_x_y(); - interphaseSystem.calc_x_y(); - interphaseSystem.init(3); - ThermodynamicOperations interphaseOps = new ThermodynamicOperations(interphaseSystem); - // interphaseOps.setSystem(interphaseSystem); - interphaseOps.TPflash(); - // if(interphaseSystem.getNumberOfPhases()<2) - // interphaseOps.dewPointTemperatureFlash(); - // interphaseSystem.display(); - } - - /** - *

- * Constructor for FluidBoundary. - *

- * - * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public FluidBoundary(FlowNodeInterface flowNode) { - this(flowNode.getBulkSystem()); - this.flowNode = flowNode; - } - - /** {@inheritDoc} */ - @Override - public FluidBoundary clone() { - FluidBoundary clonedSystem = null; - - try { - clonedSystem = (FluidBoundary) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - clonedSystem.interphaseSystem = interphaseSystem.clone(); - clonedSystem.nFlux = (Matrix) nFlux.clone(); - - return clonedSystem; - } - - /** - * Specifies if both mass and heat transfer should be solved for. Also specifies if we are going - * to solve using multicomponent mass transfer models. - * - * @param type a int - */ - public void setSolverType(int type) { - solverType = type; - } - - /** - *

- * initMassTransferCalc. - *

- */ - public void initMassTransferCalc() {} - - /** - *

- * initHeatTransferCalc. - *

- */ - public void initHeatTransferCalc() {} - - /** - *

- * init. - *

- */ - public void init() { - // if(this.bulkSystem.isChemicalSystem()) this.bulkSystem.initNumeric(); - // else this.bulkSystem.init(3); - // if(this.interphaseSystem.isChemicalSystem()) - // this.interphaseSystem.initNumeric(); - // else this.interphaseSystem.init(3); - // this.interphaseSystem.initNumeric(); - this.interphaseSystem.init(3); - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getBulkSystem() { - return bulkSystem; - } - - /** - *

- * Setter for the field bulkSystem. - *

- * - * @param bulkSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setBulkSystem(SystemInterface bulkSystem) { - this.bulkSystem = bulkSystem; - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getInterphaseSystem() { - return interphaseSystem; - } - - /** {@inheritDoc} */ - @Override - public void setInterphaseSystem(SystemInterface interphaseSystem) { - this.interphaseSystem = interphaseSystem; - } - - /** - *

- * getInterphaseOpertions. - *

- * - * @return a {@link neqsim.thermodynamicOperations.ThermodynamicOperations} object - */ - public ThermodynamicOperations getInterphaseOpertions() { - return interphaseOps; - } - - /** {@inheritDoc} */ - @Override - public ThermodynamicOperations getBulkSystemOpertions() { - return bulkSystemOps; - } - - /** - *

- * calcFluxTypeCorrectionMatrix. - *

- * - * @param phase a int - * @param k a int - */ - public void calcFluxTypeCorrectionMatrix(int phase, int k) { - fluxTypeCorrectionMatrixV[phase] = - new Matrix(bulkSystem.getPhases()[phase].getNumberOfComponents(), 1); - fluxTypeCorrectionMatrix[phase] = - new Matrix(bulkSystem.getPhases()[phase].getNumberOfComponents() - 1, 1); - double temp = 0, sum = 0; - - for (int i = 0; i < bulkSystem.getPhases()[phase].getNumberOfComponents() - 1; i++) { - temp = (i == k) ? 1.0 : 0.0; - fluxTypeCorrectionMatrixV[phase].set(i, 0, temp); - sum += fluxTypeCorrectionMatrixV[phase].get(i, 0) - * bulkSystem.getPhases()[phase].getComponents()[i].getx(); - } - - sum += fluxTypeCorrectionMatrixV[phase] - .get(bulkSystem.getPhases()[phase].getNumberOfComponents() - 1, 0) - * bulkSystem.getPhases()[phase] - .getComponents()[bulkSystem.getPhases()[phase].getNumberOfComponents() - 1] - .getx(); - - for (int i = 0; i < bulkSystem.getPhases()[phase].getNumberOfComponents() - 1; i++) { - fluxTypeCorrectionMatrix[phase].set(i, 0, - (fluxTypeCorrectionMatrixV[phase].get(i, 0) - fluxTypeCorrectionMatrixV[phase] - .get(bulkSystem.getPhases()[phase].getNumberOfComponents() - 1, 0)) - / sum); - } - } - - /** - *

- * calcNonIdealCorrections. - *

- * - * @param phase a int - */ - public void calcNonIdealCorrections(int phase) { - nonIdealCorrections[phase] = - new Matrix(bulkSystem.getPhases()[phase].getNumberOfComponents() - 1, - bulkSystem.getPhases()[phase].getNumberOfComponents() - 1); - double temp = 0; - for (int i = 0; i < bulkSystem.getPhases()[phase].getNumberOfComponents() - 1; i++) { - for (int j = 0; j < bulkSystem.getPhases()[phase].getNumberOfComponents() - 1; j++) { - temp = (i == j) ? 1.0 : 0.0; - nonIdealCorrections[phase].set(i, j, - temp + bulkSystem.getPhases()[phase].getComponents()[i].getx() - * bulkSystem.getPhases()[phase].getComponents()[i].getdfugdn(j) - * bulkSystem.getPhases()[phase].getNumberOfMolesInPhase()); // her - // maa - // det - // fylles - // inn - } - } - // System.out.println("non-id"); - // nonIdealCorrections[phase].print(10,10); - } - - /** {@inheritDoc} */ - @Override - public double getInterphaseMolarFlux(int component) { - return nFlux.get(component, 0); - } - - /** {@inheritDoc} */ - @Override - public double getInterphaseHeatFlux(int phase) { - return interphaseHeatFlux[phase]; - } - - /** {@inheritDoc} */ - @Override - public void massTransSolve() {} - - /** {@inheritDoc} */ - @Override - public void heatTransSolve() {} - - /** {@inheritDoc} */ - @Override - public Matrix[] getMassTransferCoefficientMatrix() { - return massTransferCoefficientMatrix; - } - - /** {@inheritDoc} */ - @Override - public double getBinaryMassTransferCoefficient(int phase, int i, int j) { - return binaryMassTransferCoefficient[phase][i][j]; - } - - /** {@inheritDoc} */ - @Override - public double getEffectiveMassTransferCoefficient(int phase, int i) { - double temp = 0.0; - for (int j = 0; j < bulkSystem.getPhase(phase).getNumberOfComponents(); j++) { - try { - temp += bulkSystem.getPhase(phase).getComponent(j).getx() - * binaryMassTransferCoefficient[phase][i][j]; - } catch (Exception e) { - e.printStackTrace(); - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(FluidBoundary.class); + + protected FlowNodeInterface flowNode; + protected SystemInterface bulkSystem; + protected SystemInterface interphaseSystem; + protected ThermodynamicOperations interphaseOps; + protected ThermodynamicOperations bulkSystemOps; + public double[] interphaseHeatFlux = new double[2]; + public boolean massTransferCalc = true; + public boolean heatTransferCalc = false; + public boolean[] thermodynamicCorrections; + public boolean[] finiteFluxCorrection; + // protected double[] dn; + protected boolean numeric = false; + protected Matrix jFlux; + protected Matrix nFlux; + protected EnhancementFactor enhancementFactor; + // protected double[][][] massTransferCoefficient; + protected double totalFlux = 0; + protected Matrix[] nonIdealCorrections; + protected Matrix[] fluxTypeCorrectionMatrix; + protected Matrix[] rateCorrectionMatrix; + protected Matrix[] fluxTypeCorrectionMatrixV; + protected Matrix[] totalMassTransferCoefficientMatrix; + protected Matrix[] massTransferCoefficientMatrix; + protected double[][][] binarySchmidtNumber; + public double[][][] binaryMassTransferCoefficient; + public double[] heatTransferCoefficient; + public double[] heatTransferCorrection; + protected double[] prandtlNumber; + protected int solverType = 0; + + /** + *

+ * Constructor for FluidBoundary. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public FluidBoundary(SystemInterface system) { + this.bulkSystem = system; + bulkSystemOps = new ThermodynamicOperations(bulkSystem); + nonIdealCorrections = new Matrix[2]; + fluxTypeCorrectionMatrix = new Matrix[2]; + fluxTypeCorrectionMatrixV = new Matrix[2]; + rateCorrectionMatrix = new Matrix[2]; + totalMassTransferCoefficientMatrix = new Matrix[2]; + massTransferCoefficientMatrix = new Matrix[2]; + jFlux = new Matrix(system.getPhases()[0].getNumberOfComponents() - 1, 1); + nFlux = new Matrix(system.getPhases()[0].getNumberOfComponents(), 1); + nFlux.set(0, 0, 0.0); + nFlux.set(1, 0, 0.0); + heatTransferCoefficient = new double[2]; + heatTransferCorrection = new double[2]; + thermodynamicCorrections = new boolean[2]; + finiteFluxCorrection = new boolean[2]; + prandtlNumber = new double[2]; + initInterphaseSystem(); + // interphaseSystem.display(); + // interphaseOps.chemicalEquilibrium(); + } + + /** + *

+ * initInterphaseSystem. + *

+ */ + public void initInterphaseSystem() { + interphaseSystem = bulkSystem.clone(); + interphaseSystem.setNumberOfPhases(2); + + // interphaseSystem.addComponent("methane", 100.0,0); + interphaseSystem.initBeta(); + interphaseSystem.setTemperature( + (bulkSystem.getPhase(0).getTemperature() + bulkSystem.getPhase(1).getTemperature()) / 2.0); + // interphaseSystem.init(0); + // interphaseSystem.setBeta(bulkSystem.getBeta()); + // interphaseSystem.init_x_y(); + interphaseSystem.calc_x_y(); + interphaseSystem.init(3); + ThermodynamicOperations interphaseOps = new ThermodynamicOperations(interphaseSystem); + // interphaseOps.setSystem(interphaseSystem); + interphaseOps.TPflash(); + // if(interphaseSystem.getNumberOfPhases()<2) + // interphaseOps.dewPointTemperatureFlash(); + // interphaseSystem.display(); + } + + /** + *

+ * Constructor for FluidBoundary. + *

+ * + * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public FluidBoundary(FlowNodeInterface flowNode) { + this(flowNode.getBulkSystem()); + this.flowNode = flowNode; + } + + /** {@inheritDoc} */ + @Override + public FluidBoundary clone() { + FluidBoundary clonedSystem = null; + + try { + clonedSystem = (FluidBoundary) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + clonedSystem.interphaseSystem = interphaseSystem.clone(); + clonedSystem.nFlux = (Matrix) nFlux.clone(); + + return clonedSystem; + } + + /** + * Specifies if both mass and heat transfer should be solved for. Also specifies if we are going + * to solve using multicomponent mass transfer models. + * + * @param type a int + */ + public void setSolverType(int type) { + solverType = type; + } + + /** + *

+ * initMassTransferCalc. + *

+ */ + public void initMassTransferCalc() {} + + /** + *

+ * initHeatTransferCalc. + *

+ */ + public void initHeatTransferCalc() {} + + /** + *

+ * init. + *

+ */ + public void init() { + // if(this.bulkSystem.isChemicalSystem()) this.bulkSystem.initNumeric(); + // else this.bulkSystem.init(3); + // if(this.interphaseSystem.isChemicalSystem()) + // this.interphaseSystem.initNumeric(); + // else this.interphaseSystem.init(3); + // this.interphaseSystem.initNumeric(); + this.interphaseSystem.init(3); + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getBulkSystem() { + return bulkSystem; + } + + /** + *

+ * Setter for the field bulkSystem. + *

+ * + * @param bulkSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setBulkSystem(SystemInterface bulkSystem) { + this.bulkSystem = bulkSystem; + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getInterphaseSystem() { + return interphaseSystem; + } + + /** {@inheritDoc} */ + @Override + public void setInterphaseSystem(SystemInterface interphaseSystem) { + this.interphaseSystem = interphaseSystem; + } + + /** + *

+ * getInterphaseOpertions. + *

+ * + * @return a {@link neqsim.thermodynamicOperations.ThermodynamicOperations} object + */ + public ThermodynamicOperations getInterphaseOpertions() { + return interphaseOps; + } + + /** {@inheritDoc} */ + @Override + public ThermodynamicOperations getBulkSystemOpertions() { + return bulkSystemOps; + } + + /** + *

+ * calcFluxTypeCorrectionMatrix. + *

+ * + * @param phase a int + * @param k a int + */ + public void calcFluxTypeCorrectionMatrix(int phase, int k) { + fluxTypeCorrectionMatrixV[phase] = + new Matrix(bulkSystem.getPhases()[phase].getNumberOfComponents(), 1); + fluxTypeCorrectionMatrix[phase] = + new Matrix(bulkSystem.getPhases()[phase].getNumberOfComponents() - 1, 1); + double temp = 0; + + double sum = 0; + for (int i = 0; i < bulkSystem.getPhases()[phase].getNumberOfComponents() - 1; i++) { + temp = (i == k) ? 1.0 : 0.0; + fluxTypeCorrectionMatrixV[phase].set(i, 0, temp); + sum += fluxTypeCorrectionMatrixV[phase].get(i, 0) + * bulkSystem.getPhases()[phase].getComponents()[i].getx(); + } + + sum += fluxTypeCorrectionMatrixV[phase] + .get(bulkSystem.getPhases()[phase].getNumberOfComponents() - 1, 0) + * bulkSystem.getPhases()[phase] + .getComponents()[bulkSystem.getPhases()[phase].getNumberOfComponents() - 1].getx(); + + for (int i = 0; i < bulkSystem.getPhases()[phase].getNumberOfComponents() - 1; i++) { + fluxTypeCorrectionMatrix[phase].set(i, 0, + (fluxTypeCorrectionMatrixV[phase].get(i, 0) - fluxTypeCorrectionMatrixV[phase] + .get(bulkSystem.getPhases()[phase].getNumberOfComponents() - 1, 0)) / sum); + } + } + + /** + *

+ * calcNonIdealCorrections. + *

+ * + * @param phase a int + */ + public void calcNonIdealCorrections(int phase) { + nonIdealCorrections[phase] = + new Matrix(bulkSystem.getPhases()[phase].getNumberOfComponents() - 1, + bulkSystem.getPhases()[phase].getNumberOfComponents() - 1); + double temp = 0; + for (int i = 0; i < bulkSystem.getPhases()[phase].getNumberOfComponents() - 1; i++) { + for (int j = 0; j < bulkSystem.getPhases()[phase].getNumberOfComponents() - 1; j++) { + temp = (i == j) ? 1.0 : 0.0; + nonIdealCorrections[phase].set(i, j, + temp + bulkSystem.getPhases()[phase].getComponents()[i].getx() + * bulkSystem.getPhases()[phase].getComponents()[i].getdfugdn(j) + * bulkSystem.getPhases()[phase].getNumberOfMolesInPhase()); + // her må det fylles inn + } + } + // System.out.println("non-id"); + // nonIdealCorrections[phase].print(10,10); + } + + /** {@inheritDoc} */ + @Override + public double getInterphaseMolarFlux(int component) { + return nFlux.get(component, 0); + } + + /** {@inheritDoc} */ + @Override + public double getInterphaseHeatFlux(int phase) { + return interphaseHeatFlux[phase]; + } + + /** {@inheritDoc} */ + @Override + public void massTransSolve() {} + + /** {@inheritDoc} */ + @Override + public void heatTransSolve() {} + + /** {@inheritDoc} */ + @Override + public Matrix[] getMassTransferCoefficientMatrix() { + return massTransferCoefficientMatrix; + } + + /** {@inheritDoc} */ + @Override + public double getBinaryMassTransferCoefficient(int phase, int i, int j) { + return binaryMassTransferCoefficient[phase][i][j]; + } + + /** {@inheritDoc} */ + @Override + public double getEffectiveMassTransferCoefficient(int phase, int i) { + double temp = 0.0; + for (int j = 0; j < bulkSystem.getPhase(phase).getNumberOfComponents(); j++) { + try { + temp += bulkSystem.getPhase(phase).getComponent(j).getx() + * binaryMassTransferCoefficient[phase][i][j]; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + return temp; + } + + /** {@inheritDoc} */ + @Override + public EnhancementFactor getEnhancementFactor() { + return enhancementFactor; + } + + /** {@inheritDoc} */ + @Override + public void setEnhancementType(int type) {} + + /** {@inheritDoc} */ + @Override + public boolean isHeatTransferCalc() { + return heatTransferCalc; + } + + /** {@inheritDoc} */ + + @Override + public void setHeatTransferCalc(boolean heatTransferCalc) { + this.heatTransferCalc = heatTransferCalc; + } + + /** {@inheritDoc} */ + @Override + public void setMassTransferCalc(boolean massTransferCalc) { + this.massTransferCalc = massTransferCalc; + } + + /** {@inheritDoc} */ + + @Override + public boolean useThermodynamicCorrections(int phase) { + return thermodynamicCorrections[phase]; + } + + /** {@inheritDoc} */ + @Override + public void useThermodynamicCorrections(boolean thermodynamicCorrections) { + this.thermodynamicCorrections[0] = thermodynamicCorrections; + this.thermodynamicCorrections[1] = thermodynamicCorrections; + } + + /** {@inheritDoc} */ + @Override + public void useThermodynamicCorrections(boolean thermodynamicCorrections, int phase) { + this.thermodynamicCorrections[phase] = thermodynamicCorrections; + } + + /** {@inheritDoc} */ + @Override + public boolean useFiniteFluxCorrection(int phase) { + return finiteFluxCorrection[phase]; + } + + /** {@inheritDoc} */ + @Override + public void useFiniteFluxCorrection(boolean finiteFluxCorrection) { + this.finiteFluxCorrection[0] = finiteFluxCorrection; + this.finiteFluxCorrection[1] = finiteFluxCorrection; + } + + /** {@inheritDoc} */ + @Override + public void useFiniteFluxCorrection(boolean finiteFluxCorrection, int phase) { + this.finiteFluxCorrection[phase] = finiteFluxCorrection; + } + + /** + *

+ * createTable. + *

+ * + * @param name a {@link java.lang.String} object + * @return an array of {@link java.lang.String} objects + */ + public String[][] createTable(String name) { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.#####E0"); + + int rows = 0; + if (bulkSystem == null) { + String[][] table = new String[0][5]; + return table; + } + + rows = bulkSystem.getPhases()[0].getNumberOfComponents() * 10; + String[][] table = new String[rows][5]; + + // String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; + table[0][0] = ""; + table[0][1] = ""; + table[0][2] = ""; + table[0][3] = ""; + StringBuffer buf = new StringBuffer(); + FieldPosition test = new FieldPosition(0); + for (int i = 0; i < bulkSystem.getNumberOfPhases(); i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + table[j + 1][0] = + "eff. mass trans coef. " + bulkSystem.getPhases()[0].getComponents()[j].getName(); + buf = new StringBuffer(); + table[j + 1][i + 1] = + nf.format(getEffectiveMassTransferCoefficient(i, j), buf, test).toString(); + table[j + 1][4] = "[-] bulkcoef"; + } + if (getBulkSystem().isChemicalSystem()) { + getEnhancementFactor().calcEnhancementVec(i); + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + table[j + bulkSystem.getPhases()[0].getNumberOfComponents() + 2][0] = + "enhancement " + getInterphaseSystem().getPhases()[0].getComponents()[j].getName(); + buf = new StringBuffer(); + table[j + bulkSystem.getPhases()[0].getNumberOfComponents() + 2][i + 1] = + nf.format(getEnhancementFactor().getEnhancementVec(j), buf, test).toString(); + table[j + bulkSystem.getPhases()[0].getNumberOfComponents() + 2][4] = "[-] interfacecoef"; } - return temp; - } - - /** {@inheritDoc} */ - @Override - public EnhancementFactor getEnhancementFactor() { - return enhancementFactor; - } - - /** {@inheritDoc} */ - @Override - public void setEnhancementType(int type) {} - - /** {@inheritDoc} */ - @Override - public boolean isHeatTransferCalc() { - return heatTransferCalc; - } - - /** {@inheritDoc} */ - - @Override - public void setHeatTransferCalc(boolean heatTransferCalc) { - this.heatTransferCalc = heatTransferCalc; - } - - /** {@inheritDoc} */ - @Override - public void setMassTransferCalc(boolean massTransferCalc) { - this.massTransferCalc = massTransferCalc; - } - - /** {@inheritDoc} */ - - @Override - public boolean useThermodynamicCorrections(int phase) { - return thermodynamicCorrections[phase]; - } - - /** {@inheritDoc} */ - @Override - public void useThermodynamicCorrections(boolean thermodynamicCorrections) { - this.thermodynamicCorrections[0] = thermodynamicCorrections; - this.thermodynamicCorrections[1] = thermodynamicCorrections; - } - - /** {@inheritDoc} */ - @Override - public void useThermodynamicCorrections(boolean thermodynamicCorrections, int phase) { - this.thermodynamicCorrections[phase] = thermodynamicCorrections; - } - - /** {@inheritDoc} */ - @Override - public boolean useFiniteFluxCorrection(int phase) { - return finiteFluxCorrection[phase]; - } - - /** {@inheritDoc} */ - @Override - public void useFiniteFluxCorrection(boolean finiteFluxCorrection) { - this.finiteFluxCorrection[0] = finiteFluxCorrection; - this.finiteFluxCorrection[1] = finiteFluxCorrection; - } - - /** {@inheritDoc} */ - @Override - public void useFiniteFluxCorrection(boolean finiteFluxCorrection, int phase) { - this.finiteFluxCorrection[phase] = finiteFluxCorrection; - } - - /** - *

- * createTable. - *

- * - * @param name a {@link java.lang.String} object - * @return an array of {@link java.lang.String} objects - */ - public String[][] createTable(String name) { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.#####E0"); - - String[][] table = new String[bulkSystem.getPhases()[0].getNumberOfComponents() * 10][5]; - // String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; - table[0][0] = ""; - table[0][1] = ""; - table[0][2] = ""; - table[0][3] = ""; - StringBuffer buf = new StringBuffer(); - FieldPosition test = new FieldPosition(0); - for (int i = 0; i < bulkSystem.getNumberOfPhases(); i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - table[j + 1][0] = "eff. mass trans coef. " - + bulkSystem.getPhases()[0].getComponents()[j].getName(); - buf = new StringBuffer(); - table[j + 1][i + 1] = - nf.format(getEffectiveMassTransferCoefficient(i, j), buf, test).toString(); - table[j + 1][4] = "[-] bulkcoef"; - } - if (getBulkSystem().isChemicalSystem()) { - getEnhancementFactor().calcEnhancementVec(i); - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - table[j + bulkSystem.getPhases()[0].getNumberOfComponents() + 2][0] = - "enhancement " + getInterphaseSystem().getPhases()[0].getComponents()[j] - .getName(); - buf = new StringBuffer(); - table[j + bulkSystem.getPhases()[0].getNumberOfComponents() + 2][i + 1] = - nf.format(getEnhancementFactor().getEnhancementVec(j), buf, test) - .toString(); - table[j + bulkSystem.getPhases()[0].getNumberOfComponents() + 2][4] = - "[-] interfacecoef"; - } - } - getBulkSystem().getPhase(i).getPhysicalProperties() - .calcEffectiveDiffusionCoefficients(); - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - table[j + 2 * bulkSystem.getPhases()[0].getNumberOfComponents() + 3][0] = - "schmidt " + bulkSystem.getPhases()[0].getComponents()[j].getName(); - buf = new StringBuffer(); - table[j + 2 * bulkSystem.getPhases()[0].getNumberOfComponents() + 3][i + 1] = - nf.format(getBulkSystem().getPhase(i).getPhysicalProperties() - .getEffectiveSchmidtNumber(j), buf, test).toString(); - table[j + 2 * bulkSystem.getPhases()[0].getNumberOfComponents() + 3][4] = - "[-] fluidboundarycoef"; - } - - buf = new StringBuffer(); - table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 11][0] = "Node"; - table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 11][i + 1] = name; - table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 11][4] = "-"; - } - return table; - } - - /** {@inheritDoc} */ - @Override - public void display(String name) { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.#####E0"); - - JDialog dialog = new JDialog(new JFrame(), "Node-Report"); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new BorderLayout()); - Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); - dialog.setSize(screenDimension.width / 2, screenDimension.height / 2); // pack(); - String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; - String[][] table = createTable(name); - JTable Jtab = new JTable(table, names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); - Jtab.setRowHeight(dialog.getHeight() / table.length); - Jtab.setFont(new Font("Serif", Font.PLAIN, - dialog.getHeight() / table.length - dialog.getHeight() / table.length / 10)); - // dialog.pack(); - dialog.setVisible(true); - } - - /** {@inheritDoc} */ - @Override - public void write(String name, String filename, boolean newfile) { - String[][] table = createTable(name); - neqsim.dataPresentation.fileHandeling.createTextFile.TextFile file = - new neqsim.dataPresentation.fileHandeling.createTextFile.TextFile(); - if (newfile) { - file.newFile(filename); - } - file.setOutputFileName(filename); - file.setValues(table); - file.createFile(); - getBulkSystem().write(name, filename, false); - } + } + getBulkSystem().getPhase(i).getPhysicalProperties().calcEffectiveDiffusionCoefficients(); + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + table[j + 2 * bulkSystem.getPhases()[0].getNumberOfComponents() + 3][0] = + "schmidt " + bulkSystem.getPhases()[0].getComponents()[j].getName(); + buf = new StringBuffer(); + table[j + 2 * bulkSystem.getPhases()[0].getNumberOfComponents() + 3][i + 1] = nf.format( + getBulkSystem().getPhase(i).getPhysicalProperties().getEffectiveSchmidtNumber(j), buf, + test).toString(); + table[j + 2 * bulkSystem.getPhases()[0].getNumberOfComponents() + 3][4] = + "[-] fluidboundarycoef"; + } + + buf = new StringBuffer(); + table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 11][0] = "Node"; + table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 11][i + 1] = name; + table[3 * bulkSystem.getPhases()[0].getNumberOfComponents() + 11][4] = "-"; + } + return table; + } + + /** {@inheritDoc} */ + @Override + public void display(String name) { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.#####E0"); + + JDialog dialog = new JDialog(new JFrame(), "Node-Report"); + Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new BorderLayout()); + Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); + dialog.setSize(screenDimension.width / 2, screenDimension.height / 2); // pack(); + String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; + String[][] table = createTable(name); + JTable Jtab = new JTable(table, names); + JScrollPane scrollpane = new JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + Jtab.setRowHeight(dialog.getHeight() / table.length); + Jtab.setFont(new Font("Serif", Font.PLAIN, + dialog.getHeight() / table.length - dialog.getHeight() / table.length / 10)); + // dialog.pack(); + dialog.setVisible(true); + } + + /** {@inheritDoc} */ + @Override + public void write(String name, String filename, boolean newfile) { + String[][] table = createTable(name); + neqsim.dataPresentation.fileHandeling.createTextFile.TextFile file = + new neqsim.dataPresentation.fileHandeling.createTextFile.TextFile(); + if (newfile) { + file.newFile(filename); + } + file.setOutputFileName(filename); + file.setValues(table); + file.createFile(); + getBulkSystem().write(name, filename, false); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/FluidBoundaryInterface.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/FluidBoundaryInterface.java index 9e254457a2..ba885c5ce2 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/FluidBoundaryInterface.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/FluidBoundaryInterface.java @@ -3,6 +3,7 @@ * * Created on 11. desember 2000, 17:17 */ + package neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc; import Jama.Matrix; @@ -19,257 +20,257 @@ * @version $Id: $Id */ public interface FluidBoundaryInterface extends Cloneable { - /** - *

- * getInterphaseSystem. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getInterphaseSystem(); + /** + *

+ * getInterphaseSystem. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getInterphaseSystem(); - /** - *

- * setInterphaseSystem. - *

- * - * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setInterphaseSystem(SystemInterface interphaseSystem); + /** + *

+ * setInterphaseSystem. + *

+ * + * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setInterphaseSystem(SystemInterface interphaseSystem); - /** - *

- * solve. - *

- */ - public void solve(); + /** + *

+ * solve. + *

+ */ + public void solve(); - /** - *

- * massTransSolve. - *

- */ - public void massTransSolve(); + /** + *

+ * massTransSolve. + *

+ */ + public void massTransSolve(); - /** - *

- * write. - *

- * - * @param name a {@link java.lang.String} object - * @param filename a {@link java.lang.String} object - * @param newfile a boolean - */ - public void write(String name, String filename, boolean newfile); + /** + *

+ * write. + *

+ * + * @param name a {@link java.lang.String} object + * @param filename a {@link java.lang.String} object + * @param newfile a boolean + */ + public void write(String name, String filename, boolean newfile); - /** - *

- * display. - *

- * - * @param name a {@link java.lang.String} object - */ - public void display(String name); + /** + *

+ * display. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void display(String name); - /** - *

- * heatTransSolve. - *

- */ - public void heatTransSolve(); + /** + *

+ * heatTransSolve. + *

+ */ + public void heatTransSolve(); - /** - *

- * setEnhancementType. - *

- * - * @param type a int - */ - public void setEnhancementType(int type); + /** + *

+ * setEnhancementType. + *

+ * + * @param type a int + */ + public void setEnhancementType(int type); - /** - *

- * getEnhancementFactor. - *

- * - * @return a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.reactiveFilmModel.enhancementFactor.EnhancementFactor} - * object - */ - public EnhancementFactor getEnhancementFactor(); + /** + *

+ * getEnhancementFactor. + *

+ * + * @return a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.reactiveFilmModel.enhancementFactor.EnhancementFactor} + * object + */ + public EnhancementFactor getEnhancementFactor(); - /** - *

- * getInterphaseHeatFlux. - *

- * - * @param phase a int - * @return a double - */ - public double getInterphaseHeatFlux(int phase); + /** + *

+ * getInterphaseHeatFlux. + *

+ * + * @param phase a int + * @return a double + */ + public double getInterphaseHeatFlux(int phase); - /** - *

- * getBulkSystemOpertions. - *

- * - * @return a {@link neqsim.thermodynamicOperations.ThermodynamicOperations} object - */ - public ThermodynamicOperations getBulkSystemOpertions(); + /** + *

+ * getBulkSystemOpertions. + *

+ * + * @return a {@link neqsim.thermodynamicOperations.ThermodynamicOperations} object + */ + public ThermodynamicOperations getBulkSystemOpertions(); - /** - *

- * calcFluxes. - *

- * - * @return an array of {@link double} objects - */ - public double[] calcFluxes(); + /** + *

+ * calcFluxes. + *

+ * + * @return an array of type double + */ + public double[] calcFluxes(); - /** - *

- * getMassTransferCoefficientMatrix. - *

- * - * @return an array of {@link Jama.Matrix} objects - */ - public Matrix[] getMassTransferCoefficientMatrix(); + /** + *

+ * getMassTransferCoefficientMatrix. + *

+ * + * @return an array of {@link Jama.Matrix} objects + */ + public Matrix[] getMassTransferCoefficientMatrix(); - /** - *

- * getBinaryMassTransferCoefficient. - *

- * - * @param phase a int - * @param i a int - * @param j a int - * @return a double - */ - public double getBinaryMassTransferCoefficient(int phase, int i, int j); + /** + *

+ * getBinaryMassTransferCoefficient. + *

+ * + * @param phase a int + * @param i a int + * @param j a int + * @return a double + */ + public double getBinaryMassTransferCoefficient(int phase, int i, int j); - /** - *

- * getBulkSystem. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getBulkSystem(); + /** + *

+ * getBulkSystem. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getBulkSystem(); - /** - *

- * isHeatTransferCalc. - *

- * - * @return a boolean - */ - public boolean isHeatTransferCalc(); + /** + *

+ * isHeatTransferCalc. + *

+ * + * @return a boolean + */ + public boolean isHeatTransferCalc(); - /** - *

- * setHeatTransferCalc. - *

- * - * @param heatTransferCalc a boolean - */ - public void setHeatTransferCalc(boolean heatTransferCalc); + /** + *

+ * setHeatTransferCalc. + *

+ * + * @param heatTransferCalc a boolean + */ + public void setHeatTransferCalc(boolean heatTransferCalc); - /** - *

- * setMassTransferCalc. - *

- * - * @param heatTransferCalc a boolean - */ - public void setMassTransferCalc(boolean heatTransferCalc); + /** + *

+ * setMassTransferCalc. + *

+ * + * @param heatTransferCalc a boolean + */ + public void setMassTransferCalc(boolean heatTransferCalc); - /** - *

- * getInterphaseMolarFlux. - *

- * - * @param component a int - * @return a double - */ - public double getInterphaseMolarFlux(int component); + /** + *

+ * getInterphaseMolarFlux. + *

+ * + * @param component a int + * @return a double + */ + public double getInterphaseMolarFlux(int component); - /** - *

- * getEffectiveMassTransferCoefficient. - *

- * - * @param phase a int - * @param i a int - * @return a double - */ - public double getEffectiveMassTransferCoefficient(int phase, int i); + /** + *

+ * getEffectiveMassTransferCoefficient. + *

+ * + * @param phase a int + * @param i a int + * @return a double + */ + public double getEffectiveMassTransferCoefficient(int phase, int i); - /** - *

- * clone. - *

- * - * @return a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} - * object - */ - public FluidBoundaryInterface clone(); + /** + *

+ * clone. + *

+ * + * @return a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} + * object + */ + public FluidBoundaryInterface clone(); - /** - *

- * useThermodynamicCorrections. - *

- * - * @param phase a int - * @return a boolean - */ - public boolean useThermodynamicCorrections(int phase); + /** + *

+ * useThermodynamicCorrections. + *

+ * + * @param phase a int + * @return a boolean + */ + public boolean useThermodynamicCorrections(int phase); - /** - *

- * useThermodynamicCorrections. - *

- * - * @param thermodynamicCorrections a boolean - */ - public void useThermodynamicCorrections(boolean thermodynamicCorrections); + /** + *

+ * useThermodynamicCorrections. + *

+ * + * @param thermodynamicCorrections a boolean + */ + public void useThermodynamicCorrections(boolean thermodynamicCorrections); - /** - *

- * useThermodynamicCorrections. - *

- * - * @param thermodynamicCorrections a boolean - * @param phase a int - */ - public void useThermodynamicCorrections(boolean thermodynamicCorrections, int phase); + /** + *

+ * useThermodynamicCorrections. + *

+ * + * @param thermodynamicCorrections a boolean + * @param phase a int + */ + public void useThermodynamicCorrections(boolean thermodynamicCorrections, int phase); - /** - *

- * useFiniteFluxCorrection. - *

- * - * @param phase a int - * @return a boolean - */ - public boolean useFiniteFluxCorrection(int phase); + /** + *

+ * useFiniteFluxCorrection. + *

+ * + * @param phase a int + * @return a boolean + */ + public boolean useFiniteFluxCorrection(int phase); - /** - *

- * useFiniteFluxCorrection. - *

- * - * @param finiteFluxCorrection a boolean - */ - public void useFiniteFluxCorrection(boolean finiteFluxCorrection); + /** + *

+ * useFiniteFluxCorrection. + *

+ * + * @param finiteFluxCorrection a boolean + */ + public void useFiniteFluxCorrection(boolean finiteFluxCorrection); - /** - *

- * useFiniteFluxCorrection. - *

- * - * @param finiteFluxCorrection a boolean - * @param phase a int - */ - public void useFiniteFluxCorrection(boolean finiteFluxCorrection, int phase); + /** + *

+ * useFiniteFluxCorrection. + *

+ * + * @param finiteFluxCorrection a boolean + * @param phase a int + */ + public void useFiniteFluxCorrection(boolean finiteFluxCorrection, int phase); } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/equilibriumFluidBoundary/EquilibriumFluidBoundary.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/equilibriumFluidBoundary/EquilibriumFluidBoundary.java index 4830b77719..bdba405441 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/equilibriumFluidBoundary/EquilibriumFluidBoundary.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/equilibriumFluidBoundary/EquilibriumFluidBoundary.java @@ -8,84 +8,81 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

EquilibriumFluidBoundary class.

+ *

+ * EquilibriumFluidBoundary class. + *

* * @author asmund * @version $Id: $Id */ public class EquilibriumFluidBoundary - extends neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundary { - private static final long serialVersionUID = 1000; + extends neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundary { + private static final long serialVersionUID = 1000; - /** - *

Constructor for EquilibriumFluidBoundary.

- */ - public EquilibriumFluidBoundary() {} + /** + *

+ * Constructor for EquilibriumFluidBoundary. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public EquilibriumFluidBoundary(SystemInterface system) { + super(system); + interphaseOps = new ThermodynamicOperations(interphaseSystem); + // interphaseOps.TPflash(); + } - /** - *

Constructor for EquilibriumFluidBoundary.

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public EquilibriumFluidBoundary(SystemInterface system) { - super(system); - interphaseOps = new ThermodynamicOperations(interphaseSystem); - // interphaseOps.TPflash(); - } + /** + *

+ * Constructor for EquilibriumFluidBoundary. + *

+ * + * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public EquilibriumFluidBoundary(FlowNodeInterface flowNode) { + super(flowNode); + interphaseOps = new ThermodynamicOperations(interphaseSystem); + // interphaseOps.TPflash(); + } - /** - *

Constructor for EquilibriumFluidBoundary.

- * - * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public EquilibriumFluidBoundary(FlowNodeInterface flowNode) { - super(flowNode); - interphaseOps = new ThermodynamicOperations(interphaseSystem); - // interphaseOps.TPflash(); - } + /** {@inheritDoc} */ + @Override + public void solve() { + getInterphaseOpertions().TPflash(); + getBulkSystemOpertions().TPflash(); + } - /** {@inheritDoc} */ - @Override - public void init() { - super.init(); + /** {@inheritDoc} */ + @Override + public double[] calcFluxes() { + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + nFlux.set(i, 0, 0); } + return nFlux.getArray()[0]; + } - /** {@inheritDoc} */ - @Override - public void solve() { - getInterphaseOpertions().TPflash(); - getBulkSystemOpertions().TPflash(); - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + System.out.println("Starter....."); + SystemSrkEos testSystem = new SystemSrkEos(295.3, 11.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + PipeData pipe1 = new PipeData(1.0, 0.55); - /** {@inheritDoc} */ - @Override - public double[] calcFluxes() { - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - nFlux.set(i, 0, 0); - } - return nFlux.getArray()[0]; - } + testSystem.addComponent("methane", 100.152181, 1); + testSystem.addComponent("water", 10.362204876, 0); + testSystem.setMixingRule(2); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - System.out.println("Starter....."); - SystemSrkEos testSystem = new SystemSrkEos(295.3, 11.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - PipeData pipe1 = new PipeData(1.0, 0.55); + FlowNodeInterface test = new AnnularFlow(testSystem, pipe1); + test.init(); - testSystem.addComponent("methane", 100.152181, 1); - testSystem.addComponent("water", 10.362204876, 0); - testSystem.setMixingRule(2); - - FlowNodeInterface test = new AnnularFlow(testSystem, pipe1); - test.init(); - - EquilibriumFluidBoundary test2 = new EquilibriumFluidBoundary(test); - test2.solve(); - } + EquilibriumFluidBoundary test2 = new EquilibriumFluidBoundary(test); + test2.solve(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/FluidBoundaryNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/FluidBoundaryNode.java index c956e3fc5f..ee83c6a868 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/FluidBoundaryNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/FluidBoundaryNode.java @@ -3,6 +3,7 @@ * * Created on 8. august 2001, 14:49 */ + package neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundaryNode; import neqsim.thermo.system.SystemInterface; @@ -16,29 +17,29 @@ * @version $Id: $Id */ public class FluidBoundaryNode implements FluidBoundaryNodeInterface { - protected SystemInterface system; + protected SystemInterface system; - /** - *

- * Constructor for FluidBoundaryNode. - *

- */ - public FluidBoundaryNode() {} + /** + *

+ * Constructor for FluidBoundaryNode. + *

+ */ + public FluidBoundaryNode() {} - /** - *

- * Constructor for FluidBoundaryNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public FluidBoundaryNode(SystemInterface system) { - this.system = system.clone(); - } + /** + *

+ * Constructor for FluidBoundaryNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public FluidBoundaryNode(SystemInterface system) { + this.system = system.clone(); + } - /** {@inheritDoc} */ - @Override - public SystemInterface getBulkSystem() { - return system; - } + /** {@inheritDoc} */ + @Override + public SystemInterface getBulkSystem() { + return system; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/FluidBoundaryNodeInterface.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/FluidBoundaryNodeInterface.java index e5dd2b8379..94fec6beda 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/FluidBoundaryNodeInterface.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/FluidBoundaryNodeInterface.java @@ -3,6 +3,7 @@ * * Created on 8. august 2001, 14:49 */ + package neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundaryNode; import neqsim.thermo.system.SystemInterface; @@ -16,12 +17,12 @@ * @version $Id: $Id */ public interface FluidBoundaryNodeInterface { - /** - *

- * getBulkSystem. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getBulkSystem(); + /** + *

+ * getBulkSystem. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getBulkSystem(); } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/fluidBoundaryNonReactiveNode/FluidBoundaryNodeNonReactive.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/fluidBoundaryNonReactiveNode/FluidBoundaryNodeNonReactive.java index 036d8cf837..41401a23f9 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/fluidBoundaryNonReactiveNode/FluidBoundaryNodeNonReactive.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/fluidBoundaryNonReactiveNode/FluidBoundaryNodeNonReactive.java @@ -12,21 +12,21 @@ * @version $Id: $Id */ public class FluidBoundaryNodeNonReactive extends FluidBoundaryNode { - /** - *

- * Constructor for FluidBoundaryNodeNonReactive. - *

- */ - public FluidBoundaryNodeNonReactive() {} + /** + *

+ * Constructor for FluidBoundaryNodeNonReactive. + *

+ */ + public FluidBoundaryNodeNonReactive() {} - /** - *

- * Constructor for FluidBoundaryNodeNonReactive. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public FluidBoundaryNodeNonReactive(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for FluidBoundaryNodeNonReactive. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public FluidBoundaryNodeNonReactive(SystemInterface system) { + super(system); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/fluidBoundaryReactiveNode/FluidBoundaryNodeReactive.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/fluidBoundaryReactiveNode/FluidBoundaryNodeReactive.java index ef1fe03880..e85e79ef57 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/fluidBoundaryReactiveNode/FluidBoundaryNodeReactive.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundaryNode/fluidBoundaryReactiveNode/FluidBoundaryNodeReactive.java @@ -3,6 +3,7 @@ * * Created on 8. august 2001, 14:50 */ + package neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundaryNode.fluidBoundaryReactiveNode; import neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundaryNode.FluidBoundaryNode; @@ -17,21 +18,21 @@ * @version $Id: $Id */ public class FluidBoundaryNodeReactive extends FluidBoundaryNode { - /** - *

- * Constructor for FluidBoundaryNodeReactive. - *

- */ - public FluidBoundaryNodeReactive() {} + /** + *

+ * Constructor for FluidBoundaryNodeReactive. + *

+ */ + public FluidBoundaryNodeReactive() {} - /** - *

- * Constructor for FluidBoundaryNodeReactive. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public FluidBoundaryNodeReactive(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for FluidBoundaryNodeReactive. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public FluidBoundaryNodeReactive(SystemInterface system) { + super(system); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/FluidBoundarySolver.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/FluidBoundarySolver.java index 09971aff31..21b584da3e 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/FluidBoundarySolver.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/FluidBoundarySolver.java @@ -3,6 +3,7 @@ * * Created on 8. august 2001, 14:51 */ + package neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySolver; import Jama.Matrix; @@ -18,267 +19,265 @@ * @version $Id: $Id */ public class FluidBoundarySolver implements FluidBoundarySolverInterface { - FluidBoundarySystemInterface boundary; - double xNew[][]; - protected Matrix[] solMatrix, diffMatrix; - protected double a[]; - protected double b[]; - protected double c[]; - protected double r[]; - boolean reactive = false; + FluidBoundarySystemInterface boundary; + double[][] xNew; + protected Matrix[] solMatrix; + protected Matrix[] diffMatrix; + protected double[] a; + protected double[] b; + protected double[] c; + protected double[] r; + boolean reactive = false; - /** - *

- * Constructor for FluidBoundarySolver. - *

- */ - public FluidBoundarySolver() {} + /** + *

+ * Constructor for FluidBoundarySolver. + *

+ */ + public FluidBoundarySolver() {} - /** - *

- * Constructor for FluidBoundarySolver. - *

- * - * @param boundary a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySystem.FluidBoundarySystemInterface} - * object - */ - public FluidBoundarySolver(FluidBoundarySystemInterface boundary) { - this.boundary = boundary; - this.initProfiles(); - a = new double[boundary.getNumberOfNodes()]; - b = new double[boundary.getNumberOfNodes()]; - c = new double[boundary.getNumberOfNodes()]; - r = new double[boundary.getNumberOfNodes()]; + /** + *

+ * Constructor for FluidBoundarySolver. + *

+ * + * @param boundary a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySystem.FluidBoundarySystemInterface} + * object + */ + public FluidBoundarySolver(FluidBoundarySystemInterface boundary) { + this.boundary = boundary; + this.initProfiles(); + a = new double[boundary.getNumberOfNodes()]; + b = new double[boundary.getNumberOfNodes()]; + c = new double[boundary.getNumberOfNodes()]; + r = new double[boundary.getNumberOfNodes()]; - solMatrix = new Matrix[boundary.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()]; - diffMatrix = new Matrix[boundary.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()]; - for (int k = 0; k < boundary.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); k++) { - diffMatrix[k] = new Matrix(a, 1).transpose(); - solMatrix[k] = new Matrix(a, 1).transpose(); - } + solMatrix = + new Matrix[boundary.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; + diffMatrix = + new Matrix[boundary.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; + for (int k = 0; k < boundary.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); k++) { + diffMatrix[k] = new Matrix(a, 1).transpose(); + solMatrix[k] = new Matrix(a, 1).transpose(); } + } - /** - *

- * Constructor for FluidBoundarySolver. - *

- * - * @param boundary a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySystem.FluidBoundarySystemInterface} - * object - * @param reactive a boolean - */ - public FluidBoundarySolver(FluidBoundarySystemInterface boundary, boolean reactive) { - this(boundary); - this.reactive = reactive; - } + /** + *

+ * Constructor for FluidBoundarySolver. + *

+ * + * @param boundary a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySystem.FluidBoundarySystemInterface} + * * object + * @param reactive a boolean + */ + public FluidBoundarySolver(FluidBoundarySystemInterface boundary, boolean reactive) { + this(boundary); + this.reactive = reactive; + } - /** - *

- * initProfiles. - *

- */ - public void initProfiles() { - Matrix reacRates = new Matrix(1, 1); - for (int i = 0; i < boundary.getNumberOfNodes() - 1; i++) { - boundary.getNode(i).getBulkSystem().init(3); - boundary.getNode(i).getBulkSystem().getPhases()[1].initPhysicalProperties(); - boundary.getNode(i).getBulkSystem().getPhases()[1].getPhysicalProperties() - .calcEffectiveDiffusionCoefficients(); - // if(reactive) reacRates = - // boundary.getNode(i).getBulkSystem().getChemicalReactionOperations().calcReacRates(1); + /** + *

+ * initProfiles. + *

+ */ + public void initProfiles() { + Matrix reacRates = new Matrix(1, 1); + for (int i = 0; i < boundary.getNumberOfNodes() - 1; i++) { + boundary.getNode(i).getBulkSystem().init(3); + boundary.getNode(i).getBulkSystem().getPhases()[1].initPhysicalProperties(); + boundary.getNode(i).getBulkSystem().getPhases()[1].getPhysicalProperties() + .calcEffectiveDiffusionCoefficients(); + // if(reactive) reacRates = + // boundary.getNode(i).getBulkSystem().getChemicalReactionOperations().calcReacRates(1); - for (int j = 0; j < boundary.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); j++) { - double xbulk = boundary.getFluidBoundary().getBulkSystem().getPhases()[1] - .getComponents()[j].getx(); - double xinterphase = - boundary.getFluidBoundary().getInterphaseSystem().getPhases()[1] - .getComponents()[j].getx(); - double dx = xinterphase - xbulk; - double last = boundary.getNode(i).getBulkSystem().getPhases()[1].getComponents()[j] - .getx(); - if (reactive) { - boundary.getNode(i + 1).getBulkSystem().getPhases()[1].getComponents()[j] - .setx(last - dx - - reacRates.get(j, 0) - / boundary.getNode(i).getBulkSystem().getPhases()[1] - .getPhysicalProperties() - .getEffectiveDiffusionCoefficient(j) - * Math.pow(boundary.getNodeLength(), 2.0)); - } else { - boundary.getNode(i + 1).getBulkSystem().getPhases()[1].getComponents()[j].setx( - xinterphase - dx * ((double) (i + 1) / boundary.getNumberOfNodes())); - } - System.out.println("x comp " + reactive + " " - + boundary.getNode(i).getBulkSystem().getPhases()[1].getComponents()[j] - .getx()); - } + for (int j = 0; j < boundary.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); j++) { + double xbulk = + boundary.getFluidBoundary().getBulkSystem().getPhases()[1].getComponents()[j].getx(); + double xinterphase = + boundary.getFluidBoundary().getInterphaseSystem().getPhases()[1].getComponents()[j] + .getx(); + double dx = xinterphase - xbulk; + double last = boundary.getNode(i).getBulkSystem().getPhases()[1].getComponents()[j].getx(); + if (reactive) { + boundary.getNode(i + 1).getBulkSystem().getPhases()[1].getComponents()[j].setx(last - dx + - reacRates.get(j, 0) + / boundary.getNode(i).getBulkSystem().getPhases()[1].getPhysicalProperties() + .getEffectiveDiffusionCoefficient(j) + * Math.pow(boundary.getNodeLength(), 2.0)); + } else { + boundary.getNode(i + 1).getBulkSystem().getPhases()[1].getComponents()[j] + .setx(xinterphase - dx * ((double) (i + 1) / boundary.getNumberOfNodes())); } + System.out.println("x comp " + reactive + " " + + boundary.getNode(i).getBulkSystem().getPhases()[1].getComponents()[j].getx()); + } } + } - /** - *

- * initMatrix. - *

- */ - public void initMatrix() { - for (int j = 0; j < boundary.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); j++) { - // pipe.getNode(i).init(); - for (int i = 0; i < boundary.getNumberOfNodes(); i++) { - solMatrix[j].set(i, 0, - boundary.getNode(i).getBulkSystem().getPhases()[1].getComponents()[j] - .getx()); - } - } + /** + *

+ * initMatrix. + *

+ */ + public void initMatrix() { + for (int j = 0; j < boundary.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); j++) { + // pipe.getNode(i).init(); + for (int i = 0; i < boundary.getNumberOfNodes(); i++) { + solMatrix[j].set(i, 0, + boundary.getNode(i).getBulkSystem().getPhases()[1].getComponents()[j].getx()); + } } + } - /** - *

- * initComposition. - *

- * - * @param iter a int - */ - public void initComposition(int iter) { - for (int j = 0; j < boundary.getNumberOfNodes(); j++) { - for (int p = 0; p < boundary.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); p++) { - boundary.getNode(j).getBulkSystem().getPhases()[1].getComponents()[p] - .setx(solMatrix[p].get(j, 0)); - } - boundary.getNode(j).getBulkSystem().getPhases()[0].normalize(); - boundary.getNode(j).getBulkSystem().init(3); - } + /** + *

+ * initComposition. + *

+ * + * @param iter a int + */ + public void initComposition(int iter) { + for (int j = 0; j < boundary.getNumberOfNodes(); j++) { + for (int p = 0; p < boundary.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); p++) { + boundary.getNode(j).getBulkSystem().getPhases()[1].getComponents()[p] + .setx(solMatrix[p].get(j, 0)); + } + boundary.getNode(j).getBulkSystem().getPhases()[0].normalize(); + boundary.getNode(j).getBulkSystem().init(3); } + } - /** - *

- * setComponentConservationMatrix. - *

- * - * @param componentNumber a int - */ - public void setComponentConservationMatrix(int componentNumber) { - for (int i = 0; i < boundary.getNumberOfNodes(); i++) { - boundary.getNode(i).getBulkSystem().getPhases()[1].initPhysicalProperties(); - boundary.getNode(i).getBulkSystem().getPhases()[1].getPhysicalProperties() - .calcEffectiveDiffusionCoefficients(); - /// if(reactive) - /// boundary.getNode(i).getBulkSystem().getChemicalReactionOperations().calcReacRates(1); - } - - a[0] = 0.0; - c[0] = 0.0; - b[0] = 1.0;// boundary.getNode(0).getBulkSystem().getPhases()[1].getComponents()[componentNumber].getx(); - r[0] = boundary.getNode(0).getBulkSystem().getPhases()[1].getComponents()[componentNumber] - .getx(); - System.out.println("b0 :" + b[0]); - // setter ligningen paa rett form - a[0] = -a[0]; - c[0] = -c[0]; + /** + *

+ * setComponentConservationMatrix. + *

+ * + * @param componentNumber a int + */ + public void setComponentConservationMatrix(int componentNumber) { + for (int i = 0; i < boundary.getNumberOfNodes(); i++) { + boundary.getNode(i).getBulkSystem().getPhases()[1].initPhysicalProperties(); + boundary.getNode(i).getBulkSystem().getPhases()[1].getPhysicalProperties() + .calcEffectiveDiffusionCoefficients(); + // if(reactive) + // boundary.getNode(i).getBulkSystem().getChemicalReactionOperations().calcReacRates(1); + } - for (int i = 1; i < boundary.getNumberOfNodes() - 1; i++) { - double Dw = (boundary.getNode(i - 1).getBulkSystem().getPhases()[1] - .getPhysicalProperties().getEffectiveDiffusionCoefficient(componentNumber) - + boundary.getNode(i).getBulkSystem().getPhases()[1].getPhysicalProperties() - .getEffectiveDiffusionCoefficient(componentNumber)) - / 2.0; - double De = (boundary.getNode(i).getBulkSystem().getPhases()[1].getPhysicalProperties() - .getEffectiveDiffusionCoefficient(componentNumber) - + boundary.getNode(i + 1).getBulkSystem().getPhases()[1].getPhysicalProperties() - .getEffectiveDiffusionCoefficient(componentNumber)) - / 2.0; + a[0] = 0.0; + c[0] = 0.0; + b[0] = 1.0; // boundary.getNode(0).getBulkSystem().getPhases()[1].getComponents()[componentNumber].getx(); + r[0] = + boundary.getNode(0).getBulkSystem().getPhases()[1].getComponents()[componentNumber].getx(); + System.out.println("b0 :" + b[0]); + // setter ligningen paa rett form + a[0] = -a[0]; + c[0] = -c[0]; - a[i] = Dw / boundary.getNodeLength(); - c[i] = De / boundary.getNodeLength(); - b[i] = a[i] + c[i]; - r[i] = 0.0; + for (int i = 1; i < boundary.getNumberOfNodes() - 1; i++) { + double Dw = (boundary.getNode(i - 1).getBulkSystem().getPhases()[1].getPhysicalProperties() + .getEffectiveDiffusionCoefficient(componentNumber) + + boundary.getNode(i).getBulkSystem().getPhases()[1].getPhysicalProperties() + .getEffectiveDiffusionCoefficient(componentNumber)) + / 2.0; + double De = (boundary.getNode(i).getBulkSystem().getPhases()[1].getPhysicalProperties() + .getEffectiveDiffusionCoefficient(componentNumber) + + boundary.getNode(i + 1).getBulkSystem().getPhases()[1].getPhysicalProperties() + .getEffectiveDiffusionCoefficient(componentNumber)) + / 2.0; - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } + a[i] = Dw / boundary.getNodeLength(); + c[i] = De / boundary.getNodeLength(); + b[i] = a[i] + c[i]; + r[i] = 0.0; - int i = boundary.getNumberOfNodes() - 1; - a[i] = 0.0; - c[i] = 0.0; - b[i] = 1.0;// boundary.getNode(i).getBulkSystem().getPhases()[1].getComponents()[componentNumber].getx(); - r[i] = boundary.getNode(i).getBulkSystem().getPhases()[1].getComponents()[componentNumber] - .getx(); - System.out.println("bn :" + b[i]); - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; } - /** {@inheritDoc} */ - @Override - public double getMolarFlux(int componentNumber) { - double temp = 1.0; - if (reactive) { - temp = 2.1; - } - return temp - * boundary.getNode(0).getBulkSystem().getPhases()[1].getPhysicalProperties() - .getEffectiveDiffusionCoefficient(componentNumber) - * (boundary.getNode(0).getBulkSystem().getPhases()[1] - .getComponents()[componentNumber].getx() - - boundary.getNode(1).getBulkSystem().getPhases()[1] - .getComponents()[componentNumber].getx()) - / boundary.getNodeLength(); + int i = boundary.getNumberOfNodes() - 1; + a[i] = 0.0; + c[i] = 0.0; + b[i] = 1.0; // boundary.getNode(i).getBulkSystem().getPhases()[1].getComponents()[componentNumber].getx(); + r[i] = + boundary.getNode(i).getBulkSystem().getPhases()[1].getComponents()[componentNumber].getx(); + System.out.println("bn :" + b[i]); + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; + } + + /** {@inheritDoc} */ + @Override + public double getMolarFlux(int componentNumber) { + double temp = 1.0; + if (reactive) { + temp = 2.1; } + return temp + * boundary.getNode(0).getBulkSystem().getPhases()[1].getPhysicalProperties() + .getEffectiveDiffusionCoefficient(componentNumber) + * (boundary.getNode(0).getBulkSystem().getPhases()[1].getComponents()[componentNumber] + .getx() + - boundary.getNode(1).getBulkSystem().getPhases()[1].getComponents()[componentNumber] + .getx()) + / boundary.getNodeLength(); + } - /** {@inheritDoc} */ - @Override - public void solve() { - // double d[]; - int iter = 0, iterTop = 0; - double maxDiff = 0; - // double maxDiffOld = 0; - double diff = 0; - xNew = new double[boundary.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()][boundary.getNumberOfNodes()]; + /** {@inheritDoc} */ + @Override + public void solve() { + // double d[]; - initProfiles(); - initMatrix(); - initComposition(1); - System.out.println( - " vol " + boundary.getNode(2).getBulkSystem().getPhases()[0].getMolarVolume()); + // double maxDiffOld = 0; + double diff = 0; + xNew = new double[boundary.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents()][boundary.getNumberOfNodes()]; - do { - // maxDiffOld = maxDiff; - maxDiff = 0; - iterTop++; - iter = 0; + initProfiles(); + initMatrix(); + initComposition(1); + System.out + .println(" vol " + boundary.getNode(2).getBulkSystem().getPhases()[0].getMolarVolume()); - do { - iter++; - for (int p = 0; p < boundary.getNode(0).getBulkSystem().getPhases()[1] - .getNumberOfComponents(); p++) { - setComponentConservationMatrix(p); - Matrix solOld = solMatrix[p].copy(); - solOld.print(20, 20); - xNew[p] = TDMAsolve.solve(a, b, c, r); - solMatrix[p] = new Matrix(xNew[p], 1).transpose(); - solMatrix[p].print(20, 20); - diffMatrix[p] = solMatrix[p].minus(solOld); - diff = Math.abs(diffMatrix[p].norm1() / (solMatrix[p].norm1())); - if (diff > maxDiff) { - maxDiff = diff; - } - } - // initComposition(iter); - // solMatrix.print(10,10); - } while (diff > 1e-15 && iter < 100); + int iter = 0; + int iterTop = 0; + double maxDiff = 0; + do { + // maxDiffOld = maxDiff; + maxDiff = 0; + iterTop++; + iter = 0; - System.out.println("maxDiff " + maxDiff); - } while (Math.abs(maxDiff) > 1e-10 && iterTop < 10); - // diffMatrix.norm2()/sol2Matrix.norm2())>0.1); - } + do { + iter++; + for (int p = 0; p < boundary.getNode(0).getBulkSystem().getPhases()[1] + .getNumberOfComponents(); p++) { + setComponentConservationMatrix(p); + Matrix solOld = solMatrix[p].copy(); + solOld.print(20, 20); + xNew[p] = TDMAsolve.solve(a, b, c, r); + solMatrix[p] = new Matrix(xNew[p], 1).transpose(); + solMatrix[p].print(20, 20); + diffMatrix[p] = solMatrix[p].minus(solOld); + diff = Math.abs(diffMatrix[p].norm1() / (solMatrix[p].norm1())); + if (diff > maxDiff) { + maxDiff = diff; + } + } + // initComposition(iter); + // solMatrix.print(10,10); + } while (diff > 1e-15 && iter < 100); + + System.out.println("maxDiff " + maxDiff); + } while (Math.abs(maxDiff) > 1e-10 && iterTop < 10); + // diffMatrix.norm2()/sol2Matrix.norm2())>0.1); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/FluidBoundarySolverInterface.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/FluidBoundarySolverInterface.java index 6e08ce7f9a..c4810afa10 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/FluidBoundarySolverInterface.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/FluidBoundarySolverInterface.java @@ -3,6 +3,7 @@ * * Created on 8. august 2001, 14:51 */ + package neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySolver; /** @@ -14,20 +15,20 @@ * @version $Id: $Id */ public interface FluidBoundarySolverInterface { - /** - *

- * solve. - *

- */ - public void solve(); + /** + *

+ * solve. + *

+ */ + public void solve(); - /** - *

- * getMolarFlux. - *

- * - * @param componentNumber a int - * @return a double - */ - public double getMolarFlux(int componentNumber); + /** + *

+ * getMolarFlux. + *

+ * + * @param componentNumber a int + * @return a double + */ + public double getMolarFlux(int componentNumber); } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/fluidBoundaryReactiveSolver/FluidBoundaryReactiveSolver.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/fluidBoundaryReactiveSolver/FluidBoundaryReactiveSolver.java index bdcdcbe69f..475be6bca1 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/fluidBoundaryReactiveSolver/FluidBoundaryReactiveSolver.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySolver/fluidBoundaryReactiveSolver/FluidBoundaryReactiveSolver.java @@ -3,6 +3,7 @@ * * Created on 8. august 2001, 14:52 */ + package neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySolver.fluidBoundaryReactiveSolver; import neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySolver.FluidBoundarySolver; @@ -16,10 +17,10 @@ * @version $Id: $Id */ public class FluidBoundaryReactiveSolver extends FluidBoundarySolver { - /** - *

- * Constructor for FluidBoundaryReactiveSolver. - *

- */ - public FluidBoundaryReactiveSolver() {} + /** + *

+ * Constructor for FluidBoundaryReactiveSolver. + *

+ */ + public FluidBoundaryReactiveSolver() {} } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/FluidBoundarySystem.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/FluidBoundarySystem.java index da8740abb8..5f9de1e3cd 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/FluidBoundarySystem.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/FluidBoundarySystem.java @@ -14,90 +14,90 @@ * @version $Id: $Id */ public class FluidBoundarySystem implements FluidBoundarySystemInterface { - protected FluidBoundaryInterface boundary; - protected int numberOfNodes = 10; - protected double filmThickness = 0.01; - protected FluidBoundaryNodeInterface[] nodes; - protected boolean reactive = false; - protected FluidBoundarySolverInterface solver; + protected FluidBoundaryInterface boundary; + protected int numberOfNodes = 10; + protected double filmThickness = 0.01; + protected FluidBoundaryNodeInterface[] nodes; + protected boolean reactive = false; + protected FluidBoundarySolverInterface solver; - /** - *

- * Constructor for FluidBoundarySystem. - *

- */ - public FluidBoundarySystem() {} + /** + *

+ * Constructor for FluidBoundarySystem. + *

+ */ + public FluidBoundarySystem() {} - /** - *

- * Constructor for FluidBoundarySystem. - *

- * - * @param boundary a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} - * object - */ - public FluidBoundarySystem(FluidBoundaryInterface boundary) { - this.boundary = boundary; - reactive = false; - } + /** + *

+ * Constructor for FluidBoundarySystem. + *

+ * + * @param boundary a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} + * object + */ + public FluidBoundarySystem(FluidBoundaryInterface boundary) { + this.boundary = boundary; + reactive = false; + } - /** {@inheritDoc} */ - @Override - public void addBoundary(FluidBoundaryInterface boundary) { - this.boundary = boundary; - } + /** {@inheritDoc} */ + @Override + public void addBoundary(FluidBoundaryInterface boundary) { + this.boundary = boundary; + } - /** {@inheritDoc} */ - @Override - public void setNumberOfNodes(int nodes) { - this.numberOfNodes = nodes; - } + /** {@inheritDoc} */ + @Override + public void setNumberOfNodes(int nodes) { + this.numberOfNodes = nodes; + } - /** {@inheritDoc} */ - @Override - public int getNumberOfNodes() { - return numberOfNodes; - } + /** {@inheritDoc} */ + @Override + public int getNumberOfNodes() { + return numberOfNodes; + } - /** {@inheritDoc} */ - @Override - public FluidBoundaryNodeInterface getNode(int i) { - return nodes[i]; - } + /** {@inheritDoc} */ + @Override + public FluidBoundaryNodeInterface getNode(int i) { + return nodes[i]; + } - /** {@inheritDoc} */ - @Override - public void setFilmThickness(double filmThickness) { - this.filmThickness = filmThickness; - } + /** {@inheritDoc} */ + @Override + public void setFilmThickness(double filmThickness) { + this.filmThickness = filmThickness; + } - /** {@inheritDoc} */ - @Override - public double getNodeLength() { - return this.filmThickness / this.numberOfNodes; - } + /** {@inheritDoc} */ + @Override + public double getNodeLength() { + return this.filmThickness / this.numberOfNodes; + } - /** {@inheritDoc} */ - @Override - public double getFilmThickness() { - return filmThickness; - } + /** {@inheritDoc} */ + @Override + public double getFilmThickness() { + return filmThickness; + } - /** {@inheritDoc} */ - @Override - public FluidBoundaryInterface getFluidBoundary() { - return boundary; - } + /** {@inheritDoc} */ + @Override + public FluidBoundaryInterface getFluidBoundary() { + return boundary; + } - /** {@inheritDoc} */ - @Override - public void createSystem() {} + /** {@inheritDoc} */ + @Override + public void createSystem() {} - /** {@inheritDoc} */ - @Override - public void solve() { - solver = new FluidBoundarySolver(this, reactive); - solver.solve(); - } + /** {@inheritDoc} */ + @Override + public void solve() { + solver = new FluidBoundarySolver(this, reactive); + solver.solve(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/FluidBoundarySystemInterface.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/FluidBoundarySystemInterface.java index ca4e83cdd9..246bf61a3c 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/FluidBoundarySystemInterface.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/FluidBoundarySystemInterface.java @@ -12,96 +12,96 @@ * @version $Id: $Id */ public interface FluidBoundarySystemInterface { - /** - *

- * addBoundary. - *

- * - * @param boundary a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} - * object - */ - public void addBoundary(FluidBoundaryInterface boundary); + /** + *

+ * addBoundary. + *

+ * + * @param boundary a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} + * object + */ + public void addBoundary(FluidBoundaryInterface boundary); - /** - *

- * setNumberOfNodes. - *

- * - * @param nodes a int - */ - public void setNumberOfNodes(int nodes); + /** + *

+ * setNumberOfNodes. + *

+ * + * @param nodes a int + */ + public void setNumberOfNodes(int nodes); - /** - *

- * getNumberOfNodes. - *

- * - * @return a int - */ - public int getNumberOfNodes(); + /** + *

+ * getNumberOfNodes. + *

+ * + * @return a int + */ + public int getNumberOfNodes(); - /** - *

- * createSystem. - *

- */ - public void createSystem(); + /** + *

+ * createSystem. + *

+ */ + public void createSystem(); - /** - *

- * setFilmThickness. - *

- * - * @param filmThickness a double - */ - public void setFilmThickness(double filmThickness); + /** + *

+ * setFilmThickness. + *

+ * + * @param filmThickness a double + */ + public void setFilmThickness(double filmThickness); - /** - *

- * getFilmThickness. - *

- * - * @return a double - */ - public double getFilmThickness(); + /** + *

+ * getFilmThickness. + *

+ * + * @return a double + */ + public double getFilmThickness(); - /** - *

- * getNode. - *

- * - * @param i a int - * @return a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundaryNode.FluidBoundaryNodeInterface} - * object - */ - public FluidBoundaryNodeInterface getNode(int i); + /** + *

+ * getNode. + *

+ * + * @param i a int + * @return a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundaryNode.FluidBoundaryNodeInterface} + * object + */ + public FluidBoundaryNodeInterface getNode(int i); - /** - *

- * getFluidBoundary. - *

- * - * @return a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} - * object - */ - public FluidBoundaryInterface getFluidBoundary(); + /** + *

+ * getFluidBoundary. + *

+ * + * @return a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} + * object + */ + public FluidBoundaryInterface getFluidBoundary(); - /** - *

- * getNodeLength. - *

- * - * @return a double - */ - public double getNodeLength(); + /** + *

+ * getNodeLength. + *

+ * + * @return a double + */ + public double getNodeLength(); - /** - *

- * solve. - *

- */ - public void solve(); + /** + *

+ * solve. + *

+ */ + public void solve(); } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/fluidBoundaryNonReactive/FluidBoundarySystemNonReactive.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/fluidBoundaryNonReactive/FluidBoundarySystemNonReactive.java index 1a6606b033..c73f6edbdf 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/fluidBoundaryNonReactive/FluidBoundarySystemNonReactive.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/fluidBoundaryNonReactive/FluidBoundarySystemNonReactive.java @@ -6,6 +6,7 @@ import neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySystem.FluidBoundarySystem; import neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.StratifiedFlowNode; import neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemFurstElectrolyteEos; import neqsim.thermo.system.SystemInterface; @@ -18,64 +19,64 @@ * @version $Id: $Id */ public class FluidBoundarySystemNonReactive extends FluidBoundarySystem { - /** - *

- * Constructor for FluidBoundarySystemNonReactive. - *

- */ - public FluidBoundarySystemNonReactive() {} + /** + *

+ * Constructor for FluidBoundarySystemNonReactive. + *

+ */ + public FluidBoundarySystemNonReactive() {} - /** - *

- * Constructor for FluidBoundarySystemNonReactive. - *

- * - * @param boundary a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} - * object - */ - public FluidBoundarySystemNonReactive(FluidBoundaryInterface boundary) { - super(boundary); - } + /** + *

+ * Constructor for FluidBoundarySystemNonReactive. + *

+ * + * @param boundary a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} + * object + */ + public FluidBoundarySystemNonReactive(FluidBoundaryInterface boundary) { + super(boundary); + } - /** {@inheritDoc} */ - @Override - public void createSystem() { - nodes = new FluidBoundaryNodeNonReactive[numberOfNodes]; - super.createSystem(); + /** {@inheritDoc} */ + @Override + public void createSystem() { + nodes = new FluidBoundaryNodeNonReactive[numberOfNodes]; + super.createSystem(); - for (int i = 0; i < numberOfNodes; i++) { - nodes[i] = new FluidBoundaryNodeNonReactive(boundary.getInterphaseSystem()); - } - System.out.println("system created..."); + for (int i = 0; i < numberOfNodes; i++) { + nodes[i] = new FluidBoundaryNodeNonReactive(boundary.getInterphaseSystem()); } + System.out.println("system created..."); + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemFurstElectrolyteEos(275.3, 1.01325); - PipeData pipe1 = new PipeData(10.0, 0.025); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemFurstElectrolyteEos(275.3, ThermodynamicConstantsInterface.referencePressure); + PipeData pipe1 = new PipeData(10.0, 0.025); - testSystem.addComponent("methane", 0.061152181, 0); - testSystem.addComponent("water", 0.1862204876, 1); - testSystem.chemicalReactionInit(); - testSystem.setMixingRule(2); - testSystem.init_x_y(); + testSystem.addComponent("methane", 0.061152181, 0); + testSystem.addComponent("water", 0.1862204876, 1); + testSystem.chemicalReactionInit(); + testSystem.setMixingRule(2); + testSystem.init_x_y(); - FlowNodeInterface test = new StratifiedFlowNode(testSystem, pipe1); - test.setInterphaseModelType(10); + FlowNodeInterface test = new StratifiedFlowNode(testSystem, pipe1); + test.setInterphaseModelType(10); - test.initFlowCalc(); - test.calcFluxes(); - test.getFluidBoundary().setEnhancementType(0); - // test.getFluidBoundary().getEnhancementFactor().getNumericInterface().createSystem(); - // test.getFluidBoundary().getEnhancementFactor().getNumericInterface().solve(); - // System.out.println("enhancement " + - // test.getFluidBoundary().getEnhancementFactor().getNumericInterface().getEnhancementFactor(0)); - } + test.initFlowCalc(); + test.calcFluxes(); + test.getFluidBoundary().setEnhancementType(0); + // test.getFluidBoundary().getEnhancementFactor().getNumericInterface().createSystem(); + // test.getFluidBoundary().getEnhancementFactor().getNumericInterface().solve(); + // System.out.println("enhancement " + + // test.getFluidBoundary().getEnhancementFactor().getNumericInterface().getEnhancementFactor(0)); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/fluidBoundarySystemReactive/FluidBoundarySystemReactive.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/fluidBoundarySystemReactive/FluidBoundarySystemReactive.java index 9e05b2d238..85e97dc80e 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/fluidBoundarySystemReactive/FluidBoundarySystemReactive.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/finiteVolumeBoundary/fluidBoundarySystem/fluidBoundarySystemReactive/FluidBoundarySystemReactive.java @@ -3,6 +3,7 @@ * * Created on 8. august 2001, 13:56 */ + package neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySystem.fluidBoundarySystemReactive; import neqsim.fluidMechanics.flowNode.FlowNodeInterface; @@ -11,6 +12,7 @@ import neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.finiteVolumeBoundary.fluidBoundarySystem.FluidBoundarySystem; import neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.StratifiedFlowNode; import neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemFurstElectrolyteEos; import neqsim.thermo.system.SystemInterface; @@ -23,70 +25,71 @@ * @version $Id: $Id */ public class FluidBoundarySystemReactive extends FluidBoundarySystem { - /** - *

- * Constructor for FluidBoundarySystemReactive. - *

- */ - public FluidBoundarySystemReactive() {} + /** + *

+ * Constructor for FluidBoundarySystemReactive. + *

+ */ + public FluidBoundarySystemReactive() {} - /** - *

- * Constructor for FluidBoundarySystemReactive. - *

- * - * @param boundary a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} - * object - */ - public FluidBoundarySystemReactive(FluidBoundaryInterface boundary) { - super(boundary); - reactive = true; - } + /** + *

+ * Constructor for FluidBoundarySystemReactive. + *

+ * + * @param boundary a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} + * object + */ + public FluidBoundarySystemReactive(FluidBoundaryInterface boundary) { + super(boundary); + reactive = true; + } - /** {@inheritDoc} */ - @Override - public void createSystem() { - nodes = new FluidBoundaryNodeReactive[numberOfNodes]; - super.createSystem(); + /** {@inheritDoc} */ + @Override + public void createSystem() { + nodes = new FluidBoundaryNodeReactive[numberOfNodes]; + super.createSystem(); - for (int i = 0; i < numberOfNodes; i++) { - nodes[i] = new FluidBoundaryNodeReactive(boundary.getInterphaseSystem()); - } - System.out.println("system created..."); + for (int i = 0; i < numberOfNodes; i++) { + nodes[i] = new FluidBoundaryNodeReactive(boundary.getInterphaseSystem()); } + System.out.println("system created..."); + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemFurstElectrolyteEos(275.3, 1.01325); - PipeData pipe1 = new PipeData(10.0, 0.025); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = + new SystemFurstElectrolyteEos(275.3, ThermodynamicConstantsInterface.referencePressure); + PipeData pipe1 = new PipeData(10.0, 0.025); - testSystem.addComponent("methane", 0.061152181, 0); - testSystem.addComponent("water", 0.1862204876, 1); - testSystem.chemicalReactionInit(); - testSystem.setMixingRule(2); - testSystem.init_x_y(); + testSystem.addComponent("methane", 0.061152181, 0); + testSystem.addComponent("water", 0.1862204876, 1); + testSystem.chemicalReactionInit(); + testSystem.setMixingRule(2); + testSystem.init_x_y(); - FlowNodeInterface test = new StratifiedFlowNode(testSystem, pipe1); - test.setInterphaseModelType(10); + FlowNodeInterface test = new StratifiedFlowNode(testSystem, pipe1); + test.setInterphaseModelType(10); - test.initFlowCalc(); - test.calcFluxes(); + test.initFlowCalc(); + test.calcFluxes(); - test.getFluidBoundary().setEnhancementType(0); - test.calcFluxes(); - /* - * test.getFluidBoundary().getEnhancementFactor().getNumericInterface(). createSystem(); - * test.getFluidBoundary().getEnhancementFactor().getNumericInterface().solve(); - * System.out.println("enhancement " + - * test.getFluidBoundary().getEnhancementFactor().getNumericInterface(). - * getEnhancementFactor(0)); - **/ - } + test.getFluidBoundary().setEnhancementType(0); + test.calcFluxes(); + /* + * test.getFluidBoundary().getEnhancementFactor().getNumericInterface(). createSystem(); + * test.getFluidBoundary().getEnhancementFactor().getNumericInterface().solve(); + * System.out.println("enhancement " + + * test.getFluidBoundary().getEnhancementFactor().getNumericInterface(). + * getEnhancementFactor(0)); + **/ + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/NonEquilibriumFluidBoundary.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/NonEquilibriumFluidBoundary.java index 300241ebf3..4458546fc0 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/NonEquilibriumFluidBoundary.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/NonEquilibriumFluidBoundary.java @@ -13,631 +13,618 @@ * @version $Id: $Id */ public abstract class NonEquilibriumFluidBoundary - extends neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundary { - private static final long serialVersionUID = 1000; - - protected int neq = 0; - protected Matrix dx; - protected Matrix Jac; - protected Matrix fvec; - protected Matrix uMassTrans; - protected Matrix uMassTransold; - protected Matrix Xgij; - - public double[][] molFractionDifference; - - /** - *

- * Constructor for NonEquilibriumFluidBoundary. - *

- */ - public NonEquilibriumFluidBoundary() {} - - /** - *

- * Constructor for NonEquilibriumFluidBoundary. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public NonEquilibriumFluidBoundary(SystemInterface system) { - super(system); - neq = 3 * bulkSystem.getPhases()[0].getNumberOfComponents(); - Jac = new Matrix(neq, neq); - fvec = new Matrix(neq, 1); - massTransferCoefficientMatrix[0] = - new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, - getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); - massTransferCoefficientMatrix[1] = - new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, - getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); - totalMassTransferCoefficientMatrix[0] = - new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, - getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); - totalMassTransferCoefficientMatrix[1] = - new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, - getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); - molFractionDifference = - new double[2][getBulkSystem().getPhases()[0].getNumberOfComponents() - 1]; - // interphaseSystem = bulkSystem.clone(); - // interphaseOps = new ThermodynamicOperations(interphaseSystem); - // interphaseOps.TPflash(); - // // interphaseOps.displayResult(); + extends neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundary { + private static final long serialVersionUID = 1000; + + protected int neq = 0; + protected Matrix dx; + protected Matrix Jac; + protected Matrix fvec; + protected Matrix uMassTrans; + protected Matrix uMassTransold; + protected Matrix Xgij; + + public double[][] molFractionDifference; + + /** + *

+ * Constructor for NonEquilibriumFluidBoundary. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public NonEquilibriumFluidBoundary(SystemInterface system) { + super(system); + neq = 3 * bulkSystem.getPhases()[0].getNumberOfComponents(); + Jac = new Matrix(neq, neq); + fvec = new Matrix(neq, 1); + massTransferCoefficientMatrix[0] = + new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, + getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); + massTransferCoefficientMatrix[1] = + new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, + getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); + totalMassTransferCoefficientMatrix[0] = + new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, + getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); + totalMassTransferCoefficientMatrix[1] = + new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, + getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); + molFractionDifference = + new double[2][getBulkSystem().getPhases()[0].getNumberOfComponents() - 1]; + // interphaseSystem = bulkSystem.clone(); + // interphaseOps = new ThermodynamicOperations(interphaseSystem); + // interphaseOps.TPflash(); + // // interphaseOps.displayResult(); + } + + /** + *

+ * Constructor for NonEquilibriumFluidBoundary. + *

+ * + * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public NonEquilibriumFluidBoundary(FlowNodeInterface flowNode) { + super(flowNode); + neq = 3 * bulkSystem.getPhases()[0].getNumberOfComponents(); + Jac = new Matrix(neq, neq); + fvec = new Matrix(neq, 1); + massTransferCoefficientMatrix[0] = + new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, + getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); + massTransferCoefficientMatrix[1] = + new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, + getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); + totalMassTransferCoefficientMatrix[0] = + new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, + getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); + totalMassTransferCoefficientMatrix[1] = + new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, + getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); + // interphaseSystem = bulkSystem.clone(); + molFractionDifference = + new double[2][getBulkSystem().getPhases()[0].getNumberOfComponents() - 1]; + // interphaseOps = new ThermodynamicOperations(interphaseSystem); + // interphaseOps.TPflash(); + // // interphaseOps.displayResult(); + } + + /** {@inheritDoc} */ + @Override + public NonEquilibriumFluidBoundary clone() { + NonEquilibriumFluidBoundary clonedSystem = null; + + try { + clonedSystem = (NonEquilibriumFluidBoundary) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** - *

- * Constructor for NonEquilibriumFluidBoundary. - *

- * - * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public NonEquilibriumFluidBoundary(FlowNodeInterface flowNode) { - super(flowNode); - neq = 3 * bulkSystem.getPhases()[0].getNumberOfComponents(); - Jac = new Matrix(neq, neq); - fvec = new Matrix(neq, 1); - massTransferCoefficientMatrix[0] = - new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, - getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); - massTransferCoefficientMatrix[1] = - new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, - getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); - totalMassTransferCoefficientMatrix[0] = - new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, - getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); - totalMassTransferCoefficientMatrix[1] = - new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, - getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); - // interphaseSystem = bulkSystem.clone(); - molFractionDifference = - new double[2][getBulkSystem().getPhases()[0].getNumberOfComponents() - 1]; - // interphaseOps = new ThermodynamicOperations(interphaseSystem); - // interphaseOps.TPflash(); - // // interphaseOps.displayResult(); + return clonedSystem; + } + + /** + *

+ * setfvecMassTrans. + *

+ */ + public void setfvecMassTrans() { + double sumx = 0; + double sumy = 0; + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + fvec.set(i, 0, Math + .log((interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() + * interphaseSystem.getPhases()[0].getComponents()[i].getx())) + - Math.log((interphaseSystem.getPhases()[1].getComponents()[i].getFugacityCoefficient() + * interphaseSystem.getPhases()[1].getComponents()[i].getx()))); + sumx += interphaseSystem.getPhases()[0].getComponents()[i].getx(); + sumy += interphaseSystem.getPhases()[1].getComponents()[i].getx(); } - - /** {@inheritDoc} */ - @Override - public NonEquilibriumFluidBoundary clone() { - NonEquilibriumFluidBoundary clonedSystem = null; - - try { - clonedSystem = (NonEquilibriumFluidBoundary) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; + fvec.set(bulkSystem.getPhases()[0].getNumberOfComponents() - 1, 0, 1.0 - sumx); + fvec.set(bulkSystem.getPhases()[0].getNumberOfComponents(), 0, 1.0 - sumy); + + for (int i = bulkSystem.getPhases()[0].getNumberOfComponents() + 1; i < (2 + * bulkSystem.getPhases()[0].getNumberOfComponents()); i++) { + fvec.set(i, 0, + (totalMassTransferCoefficientMatrix[1].get( + i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1), + i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)) + * (bulkSystem.getPhases()[0].getComponents()[i + - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)].getx() + - interphaseSystem.getPhases()[0].getComponents()[i + - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)].getx()) + + (totalMassTransferCoefficientMatrix[0].get( + i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1), + i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)) + * (bulkSystem.getPhases()[1].getComponents()[i + - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)].getx() + - interphaseSystem.getPhases()[1].getComponents()[i + - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)].getx())))); } - - /** - *

- * setfvecMassTrans. - *

- */ - public void setfvecMassTrans() { - double sumx = 0, sumy = 0; - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - fvec.set(i, 0, Math.log( - (interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() - * interphaseSystem.getPhases()[0].getComponents()[i].getx())) - - Math.log((interphaseSystem.getPhases()[1].getComponents()[i] - .getFugacityCoefficient() - * interphaseSystem.getPhases()[1].getComponents()[i].getx()))); - sumx += interphaseSystem.getPhases()[0].getComponents()[i].getx(); - sumy += interphaseSystem.getPhases()[1].getComponents()[i].getx(); - } - fvec.set(bulkSystem.getPhases()[0].getNumberOfComponents() - 1, 0, 1.0 - sumx); - fvec.set(bulkSystem.getPhases()[0].getNumberOfComponents(), 0, 1.0 - sumy); - - for (int i = bulkSystem.getPhases()[0].getNumberOfComponents() + 1; i < (2 - * bulkSystem.getPhases()[0].getNumberOfComponents()); i++) { - fvec.set(i, 0, (totalMassTransferCoefficientMatrix[1].get( - i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1), - i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)) - * (bulkSystem.getPhases()[0].getComponents()[i - - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)].getx() - - interphaseSystem.getPhases()[0].getComponents()[i - - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)] - .getx()) - + (totalMassTransferCoefficientMatrix[0].get( - i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1), - i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)) - * (bulkSystem.getPhases()[1].getComponents()[i - - (bulkSystem.getPhases()[0].getNumberOfComponents() + 1)] - .getx() - - interphaseSystem.getPhases()[1].getComponents()[i - - (bulkSystem.getPhases()[0].getNumberOfComponents() - + 1)].getx())))); - } + } + + /** + *

+ * setfvecMassTrans2. + *

+ */ + public void setfvecMassTrans2() { + double sumx = 0.0; + double sumy = 0.0; + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + fvec.set(i, 0, Math + .log((interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() + * interphaseSystem.getPhases()[0].getComponents()[i].getx())) + - Math.log((interphaseSystem.getPhases()[1].getComponents()[i].getFugacityCoefficient() + * interphaseSystem.getPhases()[1].getComponents()[i].getx()))); + sumx += interphaseSystem.getPhases()[1].getComponents()[i].getx(); + sumy += interphaseSystem.getPhases()[0].getComponents()[i].getx(); } - /** - *

- * setfvecMassTrans2. - *

- */ - public void setfvecMassTrans2() { - double sumx = 0.0, sumy = 0.0; - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - fvec.set(i, 0, Math.log( - (interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() - * interphaseSystem.getPhases()[0].getComponents()[i].getx())) - - Math.log((interphaseSystem.getPhases()[1].getComponents()[i] - .getFugacityCoefficient() - * interphaseSystem.getPhases()[1].getComponents()[i].getx()))); - sumx += interphaseSystem.getPhases()[1].getComponents()[i].getx(); - sumy += interphaseSystem.getPhases()[0].getComponents()[i].getx(); - } - - fvec.set(bulkSystem.getPhases()[0].getNumberOfComponents(), 0, 1.0 - sumx); - fvec.set(bulkSystem.getPhases()[0].getNumberOfComponents() + 1, 0, 1.0 - sumy); - - Matrix dx = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfComponents() - 1); - Matrix dy = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfComponents() - 1); - Matrix x = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfComponents() - 1); - Matrix y = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfComponents() - 1); - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { - dy.set(0, i, (bulkSystem.getPhases()[0].getComponents()[i].getx() - - interphaseSystem.getPhases()[0].getComponents()[i].getx())); - dx.set(0, i, (bulkSystem.getPhases()[1].getComponents()[i].getx() - - interphaseSystem.getPhases()[1].getComponents()[i].getx())); - y.set(0, i, (bulkSystem.getPhases()[0].getComponents()[i].getx())); - x.set(0, i, (bulkSystem.getPhases()[1].getComponents()[i].getx())); - } - - Matrix fluxX = totalMassTransferCoefficientMatrix[1].times(dx.transpose()) - .times(bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[1].getMolarMass()); - Matrix fluxY = totalMassTransferCoefficientMatrix[0].times(dy.transpose()) - .times(bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[0].getMolarMass()); - - // fluxX.print(10,10); - // fluxY.print(10,10); - // totalMassTransferCoefficientMatrix[0].print(10,10); - - // System.out.println("n flux"); - // nFlux.getMatrix(0,bulkSystem.getPhases()[1].getNumberOfComponents()-2,0,0).print(10,10); - // System.out.println("j gas flux"); - // fluxY.print(10,10); - // System.out.println("j gliq flux"); - // fluxX.print(10,10); - // System.out.println("yn gas flux"); - // y.transpose().times(totalFlux).print(10,10); - // System.out.println("xn gas flux"); - // x.transpose().times(totalFlux).print(10,10); - - Matrix errX = - nFlux.getMatrix(0, bulkSystem.getPhases()[1].getNumberOfComponents() - 2, 0, 0) - .plus(fluxX).minus(x.transpose().times(totalFlux)); - Matrix errY = - nFlux.getMatrix(0, bulkSystem.getPhases()[0].getNumberOfComponents() - 2, 0, 0) - .minus(fluxY).minus(y.transpose().times(totalFlux)); - - for (int i = bulkSystem.getPhases()[0].getNumberOfComponents() - + 2; i < (2 * bulkSystem.getPhases()[0].getNumberOfComponents() + 1); i++) { - fvec.set(i, 0, - errX.get((i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 2)), 0)); - fvec.set((i + (bulkSystem.getPhases()[0].getNumberOfComponents() - 1)), 0, - errY.get((i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 2)), 0)); - } - - /* - * System.out.println("fvec"); fvec.print(30,30); errX.print(10,10); errY.print(10,10); - */ - // fluxX.print(10,10); - // fluxY.print(10,10); - // Matrix fluxY = totalMassTransferCoefficientMatrix[1] + fvec.set(bulkSystem.getPhases()[0].getNumberOfComponents(), 0, 1.0 - sumx); + fvec.set(bulkSystem.getPhases()[0].getNumberOfComponents() + 1, 0, 1.0 - sumy); + + Matrix dx = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfComponents() - 1); + Matrix dy = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfComponents() - 1); + Matrix x = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfComponents() - 1); + Matrix y = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfComponents() - 1); + + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { + dy.set(0, i, (bulkSystem.getPhases()[0].getComponents()[i].getx() + - interphaseSystem.getPhases()[0].getComponents()[i].getx())); + dx.set(0, i, (bulkSystem.getPhases()[1].getComponents()[i].getx() + - interphaseSystem.getPhases()[1].getComponents()[i].getx())); + y.set(0, i, (bulkSystem.getPhases()[0].getComponents()[i].getx())); + x.set(0, i, (bulkSystem.getPhases()[1].getComponents()[i].getx())); } - /** - *

- * setJacMassTrans. - *

- */ - public void setJacMassTrans() { - double dij = 0, tempJ = 0; - Jac.timesEquals(0.0); - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij * 1.0 / interphaseSystem.getPhases()[0].getComponents()[i].getx() - + interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); - - // tempJ= - // dij*interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient()+interphaseSystem.getPhases()[0].getComponents()[i].getx()*interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); - Jac.set(i, j, tempJ); - } - } - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents() - 1, i, -1.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents() - 1, - bulkSystem.getPhases()[0].getNumberOfComponents() + i, 0.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents(), i, 0.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents(), - bulkSystem.getPhases()[0].getNumberOfComponents() + i, -1.0); - } - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij * 1.0 / interphaseSystem.getPhases()[1].getComponents()[i].getx() - + interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); - - // tempJ= - // dij*interphaseSystem.getPhases()[1].getComponents()[i].getFugacityCoefficient()+interphaseSystem.getPhases()[1].getComponents()[i].getx()*interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); - Jac.set(i, j + bulkSystem.getPhases()[0].getNumberOfComponents(), -tempJ); - } - } - - // this must be changed..... - - for (int i = bulkSystem.getPhases()[0].getNumberOfComponents(); i < 2 - * bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - dij = i == (j + bulkSystem.getPhases()[0].getNumberOfComponents()) ? 1.0 : 0.0; - tempJ = -dij * (totalMassTransferCoefficientMatrix[1].get( - i - bulkSystem.getPhases()[0].getNumberOfComponents(), - i - bulkSystem.getPhases()[0].getNumberOfComponents())); - Jac.set(i + 1, j, tempJ); - } - } - - for (int i = bulkSystem.getPhases()[0].getNumberOfComponents(); i < 2 - * bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { - for (int j = bulkSystem.getPhases()[0].getNumberOfComponents(); j < 2 - * bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - dij = i == j ? 1.0 : 0.0; - tempJ = -dij * (totalMassTransferCoefficientMatrix[0].get( - i - bulkSystem.getPhases()[0].getNumberOfComponents(), - i - bulkSystem.getPhases()[0].getNumberOfComponents())); - Jac.set(i + 1, j, tempJ); - } - } + Matrix fluxX = totalMassTransferCoefficientMatrix[1].times(dx.transpose()) + .times(bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[1].getMolarMass()); + Matrix fluxY = totalMassTransferCoefficientMatrix[0].times(dy.transpose()) + .times(bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[0].getMolarMass()); + + // fluxX.print(10,10); + // fluxY.print(10,10); + // totalMassTransferCoefficientMatrix[0].print(10,10); + + // System.out.println("n flux"); + // nFlux.getMatrix(0,bulkSystem.getPhases()[1].getNumberOfComponents()-2,0,0).print(10,10); + // System.out.println("j gas flux"); + // fluxY.print(10,10); + // System.out.println("j gliq flux"); + // fluxX.print(10,10); + // System.out.println("yn gas flux"); + // y.transpose().times(totalFlux).print(10,10); + // System.out.println("xn gas flux"); + // x.transpose().times(totalFlux).print(10,10); + + Matrix errX = nFlux.getMatrix(0, bulkSystem.getPhases()[1].getNumberOfComponents() - 2, 0, 0) + .plus(fluxX).minus(x.transpose().times(totalFlux)); + Matrix errY = nFlux.getMatrix(0, bulkSystem.getPhases()[0].getNumberOfComponents() - 2, 0, 0) + .minus(fluxY).minus(y.transpose().times(totalFlux)); + + for (int i = bulkSystem.getPhases()[0].getNumberOfComponents() + + 2; i < (2 * bulkSystem.getPhases()[0].getNumberOfComponents() + 1); i++) { + fvec.set(i, 0, errX.get((i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 2)), 0)); + fvec.set((i + (bulkSystem.getPhases()[0].getNumberOfComponents() - 1)), 0, + errY.get((i - (bulkSystem.getPhases()[0].getNumberOfComponents() + 2)), 0)); } - /** - *

- * setJacMassTrans2. - *

+ /* + * System.out.println("fvec"); fvec.print(30,30); errX.print(10,10); errY.print(10,10); */ - public void setJacMassTrans2() { - double dij = 0, tempJ = 0; - Jac.timesEquals(0.0); - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij * 1.0 / interphaseSystem.getPhases()[0].getComponents()[i].getx() - + interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); - Jac.set(i, j, tempJ); - } - } + // fluxX.print(10,10); + // fluxY.print(10,10); + // Matrix fluxY = totalMassTransferCoefficientMatrix[1] + } + + /** + *

+ * setJacMassTrans. + *

+ */ + public void setJacMassTrans() { + double dij = 0; + double tempJ = 0; + Jac.timesEquals(0.0); + + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij * 1.0 / interphaseSystem.getPhases()[0].getComponents()[i].getx() + + interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); + + // tempJ= + // dij*interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient()+interphaseSystem.getPhases()[0].getComponents()[i].getx()*interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); + Jac.set(i, j, tempJ); + } + } - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents(), i, 0.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents(), - bulkSystem.getPhases()[0].getNumberOfComponents() + i, -1.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents() + 1, i, -1.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents() + 1, - bulkSystem.getPhases()[0].getNumberOfComponents() + i, 0.0); - } + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents() - 1, i, -1.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents() - 1, + bulkSystem.getPhases()[0].getNumberOfComponents() + i, 0.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents(), i, 0.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents(), + bulkSystem.getPhases()[0].getNumberOfComponents() + i, -1.0); + } - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij * 1.0 / interphaseSystem.getPhases()[1].getComponents()[i].getx() - + interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); - Jac.set(i, j + bulkSystem.getPhases()[0].getNumberOfComponents(), -tempJ); - } - } + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij * 1.0 / interphaseSystem.getPhases()[1].getComponents()[i].getx() + + interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); - // this must be changed..... - - for (int i = bulkSystem.getPhases()[0].getNumberOfComponents(); i < 2 - * bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - dij = i == (j + bulkSystem.getPhases()[0].getNumberOfComponents()) ? 1.0 : 0.0; - // tempJ = - // -dij*(totalMassTransferCoefficientMatrix[1].get(i-bulkSystem.getPhases()[0].getNumberOfComponents(), - // i-bulkSystem.getPhases()[0].getNumberOfComponents())); - // tempJ = dij * - // totalMassTransferCoefficientMatrix[0].getRowSum(i-bulkSystem.getPhases()[0].getNumberOfComponents()); - // Jac.set(i+2,j+2*bulkSystem.getPhases()[0].getNumberOfComponents()-1, - - // interphaseSystem.getPhases()[0].getComponents()[i-bulkSystem.getPhases()[0].getNumberOfComponents()].getx()); - if (j != bulkSystem.getPhases()[0].getNumberOfComponents() - 1) { - Jac.set(i + 2, j + bulkSystem.getPhases()[0].getNumberOfComponents(), - -totalMassTransferCoefficientMatrix[1] - .get(i - bulkSystem.getPhases()[0].getNumberOfComponents(), j) - * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[1].getMolarMass());// tempJ); - } - Jac.set(i + 2, j + 2 * bulkSystem.getPhases()[0].getNumberOfComponents(), - dij - bulkSystem.getPhases()[1].getComponents()[i - - bulkSystem.getPhases()[0].getNumberOfComponents()].getx()); - } - } + // tempJ= + // dij*interphaseSystem.getPhases()[1].getComponents()[i].getFugacityCoefficient()+interphaseSystem.getPhases()[1].getComponents()[i].getx()*interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); + Jac.set(i, j + bulkSystem.getPhases()[0].getNumberOfComponents(), -tempJ); + } + } - for (int i = bulkSystem.getPhases()[0].getNumberOfComponents(); i < 2 - * bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { - for (int j = bulkSystem.getPhases()[0].getNumberOfComponents(); j < 2 - * bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { - dij = i == j ? 1.0 : 0.0; - // tempJ = - // -dij*(totalMassTransferCoefficientMatrix[1].get(i-bulkSystem.getPhases()[0].getNumberOfComponents(), - // i-bulkSystem.getPhases()[0].getNumberOfComponents())); - // tempJ = dij * - // totalMassTransferCoefficientMatrix[1].getRowSum(i-bulkSystem.getPhases()[0].getNumberOfComponents()*1.0/bulkSystem.getPhases()[1].getMolarVolume()); - if (j != 2 * bulkSystem.getPhases()[0].getNumberOfComponents() - 1) { - Jac.set(i + 1 + bulkSystem.getPhases()[0].getNumberOfComponents(), - j - bulkSystem.getPhases()[0].getNumberOfComponents(), - totalMassTransferCoefficientMatrix[0].get( - i - bulkSystem.getPhases()[0].getNumberOfComponents(), - j - bulkSystem.getPhases()[0].getNumberOfComponents()) - * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[0].getMolarMass());// tempJ); - } - Jac.set(i + 1 + bulkSystem.getPhases()[0].getNumberOfComponents(), - j + bulkSystem.getPhases()[0].getNumberOfComponents(), - dij - bulkSystem.getPhases()[0].getComponents()[i - - bulkSystem.getPhases()[0].getNumberOfComponents()].getx()); - } - } - // System.out.println("jac"); - // Jac.print(10,10); - // totalMassTransferCoefficientMatrix[0].print(20,20); - // totalMassTransferCoefficientMatrix[1].print(20,20); + // this must be changed..... + + for (int i = bulkSystem.getPhases()[0].getNumberOfComponents(); i < 2 + * bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + dij = i == (j + bulkSystem.getPhases()[0].getNumberOfComponents()) ? 1.0 : 0.0; + tempJ = -dij * (totalMassTransferCoefficientMatrix[1].get( + i - bulkSystem.getPhases()[0].getNumberOfComponents(), + i - bulkSystem.getPhases()[0].getNumberOfComponents())); + Jac.set(i + 1, j, tempJ); + } } - /** - *

- * Setter for the field uMassTrans. - *

- */ - public void setuMassTrans() { - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - uMassTrans.set(i, 0, interphaseSystem.getPhases()[0].getComponents()[i].getx()); - uMassTrans.set(i + bulkSystem.getPhases()[0].getNumberOfComponents(), 0, - interphaseSystem.getPhases()[1].getComponents()[i].getx()); - } + for (int i = bulkSystem.getPhases()[0].getNumberOfComponents(); i < 2 + * bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { + for (int j = bulkSystem.getPhases()[0].getNumberOfComponents(); j < 2 + * bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + dij = i == j ? 1.0 : 0.0; + tempJ = -dij * (totalMassTransferCoefficientMatrix[0].get( + i - bulkSystem.getPhases()[0].getNumberOfComponents(), + i - bulkSystem.getPhases()[0].getNumberOfComponents())); + Jac.set(i + 1, j, tempJ); + } + } + } + + /** + *

+ * setJacMassTrans2. + *

+ */ + public void setJacMassTrans2() { + double dij = 0; + double tempJ = 0; + Jac.timesEquals(0.0); + + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij * 1.0 / interphaseSystem.getPhases()[0].getComponents()[i].getx() + + interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); + Jac.set(i, j, tempJ); + } + } - for (int i = 2 * bulkSystem.getPhases()[0].getNumberOfComponents(); i < 3 - * bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - uMassTrans.set(i, 0, - nFlux.get(i - 2 * bulkSystem.getPhases()[0].getNumberOfComponents(), 0)); - } + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents(), i, 0.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents(), + bulkSystem.getPhases()[0].getNumberOfComponents() + i, -1.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents() + 1, i, -1.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfComponents() + 1, + bulkSystem.getPhases()[0].getNumberOfComponents() + i, 0.0); } - /** - *

- * updateMassTrans. - *

- */ - public void updateMassTrans() { - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - interphaseSystem.getPhases()[0].getComponents()[i].setx(uMassTrans.get(i, 0)); - interphaseSystem.getPhases()[1].getComponents()[i] - .setx(uMassTrans.get(i + bulkSystem.getPhases()[0].getNumberOfComponents(), 0)); - } + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij * 1.0 / interphaseSystem.getPhases()[1].getComponents()[i].getx() + + interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); + Jac.set(i, j + bulkSystem.getPhases()[0].getNumberOfComponents(), -tempJ); + } + } - for (int i = 2 * bulkSystem.getPhases()[0].getNumberOfComponents(); i < 3 - * bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - nFlux.set(i - 2 * bulkSystem.getPhases()[0].getNumberOfComponents(), 0, - uMassTrans.get(i, 0)); + // this must be changed..... + + for (int i = bulkSystem.getPhases()[0].getNumberOfComponents(); i < 2 + * bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + dij = i == (j + bulkSystem.getPhases()[0].getNumberOfComponents()) ? 1.0 : 0.0; + // tempJ = + // -dij*(totalMassTransferCoefficientMatrix[1].get(i-bulkSystem.getPhases()[0].getNumberOfComponents(), + // i-bulkSystem.getPhases()[0].getNumberOfComponents())); + // tempJ = dij * + // totalMassTransferCoefficientMatrix[0].getRowSum(i-bulkSystem.getPhases()[0].getNumberOfComponents()); + // Jac.set(i+2,j+2*bulkSystem.getPhases()[0].getNumberOfComponents()-1, - + // interphaseSystem.getPhases()[0].getComponents()[i-bulkSystem.getPhases()[0].getNumberOfComponents()].getx()); + if (j != bulkSystem.getPhases()[0].getNumberOfComponents() - 1) { + Jac.set(i + 2, j + bulkSystem.getPhases()[0].getNumberOfComponents(), + -totalMassTransferCoefficientMatrix[1] + .get(i - bulkSystem.getPhases()[0].getNumberOfComponents(), j) + * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[1].getMolarMass()); // tempJ); } + Jac.set(i + 2, j + 2 * bulkSystem.getPhases()[0].getNumberOfComponents(), + dij - bulkSystem.getPhases()[1].getComponents()[i + - bulkSystem.getPhases()[0].getNumberOfComponents()].getx()); + } } - /** - *

- * calcMolFractionDifference. - *

- */ - public void calcMolFractionDifference() { - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents() - 1; i++) { - molFractionDifference[0][i] = bulkSystem.getPhases()[0].getComponents()[i].getx() - - interphaseSystem.getPhases()[0].getComponents()[i].getx(); - molFractionDifference[1][i] = bulkSystem.getPhases()[1].getComponents()[i].getx() - - interphaseSystem.getPhases()[1].getComponents()[i].getx(); + for (int i = bulkSystem.getPhases()[0].getNumberOfComponents(); i < 2 + * bulkSystem.getPhases()[0].getNumberOfComponents() - 1; i++) { + for (int j = bulkSystem.getPhases()[0].getNumberOfComponents(); j < 2 + * bulkSystem.getPhases()[0].getNumberOfComponents(); j++) { + dij = i == j ? 1.0 : 0.0; + // tempJ = + // -dij*(totalMassTransferCoefficientMatrix[1].get(i-bulkSystem.getPhases()[0].getNumberOfComponents(), + // i-bulkSystem.getPhases()[0].getNumberOfComponents())); + // tempJ = dij * + // totalMassTransferCoefficientMatrix[1].getRowSum(i-bulkSystem.getPhases()[0].getNumberOfComponents()*1.0/bulkSystem.getPhases()[1].getMolarVolume()); + if (j != 2 * bulkSystem.getPhases()[0].getNumberOfComponents() - 1) { + Jac.set(i + 1 + bulkSystem.getPhases()[0].getNumberOfComponents(), + j - bulkSystem.getPhases()[0].getNumberOfComponents(), + totalMassTransferCoefficientMatrix[0].get( + i - bulkSystem.getPhases()[0].getNumberOfComponents(), + j - bulkSystem.getPhases()[0].getNumberOfComponents()) + * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[0].getMolarMass()); // tempJ); } + Jac.set(i + 1 + bulkSystem.getPhases()[0].getNumberOfComponents(), + j + bulkSystem.getPhases()[0].getNumberOfComponents(), dij - bulkSystem.getPhases()[0] + .getComponents()[i - bulkSystem.getPhases()[0].getNumberOfComponents()].getx()); + } } - - /** - *

- * calcHeatTransferCoefficients. - *

- * - * @param phase a int - */ - public void calcHeatTransferCoefficients(int phase) { - prandtlNumber[phase] = getBulkSystem().getPhases()[phase].getCp() - / getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() - * getBulkSystem().getPhases()[phase].getPhysicalProperties().getViscosity() - / getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); - // System.out.println("prandtlNumber " + prandtlNumber[phase] + " interface " + - // flowNode.getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(phase, - // prandtlNumber[phase], flowNode)); - heatTransferCoefficient[phase] = flowNode.getInterphaseTransportCoefficient() - .calcInterphaseHeatTransferCoefficient(phase, prandtlNumber[phase], flowNode); + // System.out.println("jac"); + // Jac.print(10,10); + // totalMassTransferCoefficientMatrix[0].print(20,20); + // totalMassTransferCoefficientMatrix[1].print(20,20); + } + + /** + *

+ * Setter for the field uMassTrans. + *

+ */ + public void setuMassTrans() { + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + uMassTrans.set(i, 0, interphaseSystem.getPhases()[0].getComponents()[i].getx()); + uMassTrans.set(i + bulkSystem.getPhases()[0].getNumberOfComponents(), 0, + interphaseSystem.getPhases()[1].getComponents()[i].getx()); } - /** - *

- * calcHeatTransferCorrection. - *

- * - * @param phase a int - */ - public void calcHeatTransferCorrection(int phase) { - double temp = 1.0e-20; - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - if (Math.abs(nFlux.get(i, 0)) < 1e-20) { - temp += 0.0; - } else { - temp += nFlux.get(i, 0) * getBulkSystem().getPhases()[phase].getCp() - / getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() - / heatTransferCoefficient[phase];// bulkSystem.getPhases()[0].getComponents()[i].getNumberOfMolesInPhase()* - } - } - // System.out.println("temp eat " + temp); - // System.out.println("temo " + temp); - if (Math.abs(temp) > 1e-10) { - heatTransferCorrection[phase] = temp / (Math.exp(temp) - 1.0); - } else { - heatTransferCorrection[phase] = 1.0; - } - // System.out.println("heat corr. " + heatTransferCorrection[phase]); + for (int i = 2 * bulkSystem.getPhases()[0].getNumberOfComponents(); i < 3 + * bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + uMassTrans.set(i, 0, nFlux.get(i - 2 * bulkSystem.getPhases()[0].getNumberOfComponents(), 0)); } - - /** {@inheritDoc} */ - @Override - public void initMassTransferCalc() { - super.initMassTransferCalc(); + } + + /** + *

+ * updateMassTrans. + *

+ */ + public void updateMassTrans() { + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + interphaseSystem.getPhases()[0].getComponents()[i].setx(uMassTrans.get(i, 0)); + interphaseSystem.getPhases()[1].getComponents()[i] + .setx(uMassTrans.get(i + bulkSystem.getPhases()[0].getNumberOfComponents(), 0)); } - /** {@inheritDoc} */ - @Override - public void initHeatTransferCalc() { - super.initHeatTransferCalc(); + for (int i = 2 * bulkSystem.getPhases()[0].getNumberOfComponents(); i < 3 + * bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + nFlux.set(i - 2 * bulkSystem.getPhases()[0].getNumberOfComponents(), 0, uMassTrans.get(i, 0)); } - - /** {@inheritDoc} */ - @Override - public void init() { - calcMolFractionDifference(); - super.init(); + } + + /** + *

+ * calcMolFractionDifference. + *

+ */ + public void calcMolFractionDifference() { + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents() - 1; i++) { + molFractionDifference[0][i] = bulkSystem.getPhases()[0].getComponents()[i].getx() + - interphaseSystem.getPhases()[0].getComponents()[i].getx(); + molFractionDifference[1][i] = bulkSystem.getPhases()[1].getComponents()[i].getx() + - interphaseSystem.getPhases()[1].getComponents()[i].getx(); } - - /** {@inheritDoc} */ - @Override - public void heatTransSolve() { - double f = 0; - double df = 0; - double dhtot = 0.0; - int iter = 0; - do { - iter++; - dhtot = 0.0; - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - dhtot += nFlux.get(i, 0) * (bulkSystem.getPhases()[0].getComponents()[i] - .getEnthalpy(bulkSystem.getPhases()[0].getTemperature()) - / bulkSystem.getPhases()[0].getComponents()[i].getNumberOfMolesInPhase() - - bulkSystem.getPhases()[1].getComponents()[i] - .getEnthalpy(bulkSystem.getPhases()[1].getTemperature()) - / bulkSystem.getPhases()[1].getComponents()[i] - .getNumberOfMolesInPhase()); - } - // System.out.println("dhtot " + dhtot + " heat coef " + - // heatTransferCoefficient[0]); - f = heatTransferCoefficient[0] * heatTransferCorrection[0] - * (bulkSystem.getPhases()[0].getTemperature() - - interphaseSystem.getTemperature()) - + heatTransferCoefficient[1] * heatTransferCorrection[1] - * (bulkSystem.getPhases()[1].getTemperature() - - interphaseSystem.getTemperature()) - + dhtot; - - df = -heatTransferCoefficient[0] * heatTransferCorrection[0] - - heatTransferCoefficient[1] * heatTransferCorrection[1]; - // System.out.println("f " + f + " df " + df); - // if(interphaseSystem.getTemperature() - f/df>0.0) - // interphaseSystem.setTemperature(interphaseSystem.getTemperature() - f/df); - interphaseSystem.setTemperature(interphaseSystem.getTemperature() - f / df); - // System.out.println("new temp " + interphaseSystem.getTemperature()); - } while (Math.abs(f) > 1e-6 && iter < 100); - - interphaseHeatFlux[0] = -heatTransferCoefficient[0] * heatTransferCorrection[0] - * (bulkSystem.getPhases()[0].getTemperature() - interphaseSystem.getTemperature()); - interphaseHeatFlux[1] = -heatTransferCoefficient[1] * heatTransferCorrection[1] - * (bulkSystem.getPhases()[1].getTemperature() - interphaseSystem.getTemperature()); - // System.out.println("heat flox here " + getInterphaseHeatFlux(0) + " heatflux2 - // " + getInterphaseHeatFlux(1)); + } + + /** + *

+ * calcHeatTransferCoefficients. + *

+ * + * @param phase a int + */ + public void calcHeatTransferCoefficients(int phase) { + prandtlNumber[phase] = getBulkSystem().getPhases()[phase].getCp() + / getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + * getBulkSystem().getPhases()[phase].getPhysicalProperties().getViscosity() + / getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); + // System.out.println("prandtlNumber " + prandtlNumber[phase] + " interface " + + // flowNode.getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(phase, + // prandtlNumber[phase], flowNode)); + heatTransferCoefficient[phase] = flowNode.getInterphaseTransportCoefficient() + .calcInterphaseHeatTransferCoefficient(phase, prandtlNumber[phase], flowNode); + } + + /** + *

+ * calcHeatTransferCorrection. + *

+ * + * @param phase a int + */ + public void calcHeatTransferCorrection(int phase) { + double temp = 1.0e-20; + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + if (Math.abs(nFlux.get(i, 0)) < 1e-20) { + temp += 0.0; + } else { + temp += nFlux.get(i, 0) * getBulkSystem().getPhases()[phase].getCp() + / getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + / heatTransferCoefficient[phase]; // bulkSystem.getPhases()[0].getComponents()[i].getNumberOfMolesInPhase()* + } } - - /** {@inheritDoc} */ - @Override - public void massTransSolve() { - int iter = 1; - double err = 1.0e10; - // double oldErr = 0.0; - double factor = 10.0; - // if(bulkSystem.isChemicalSystem()) factor=100.0; - setuMassTrans(); - do { - // oldErr = err; - iter++; - init(); - setfvecMassTrans2(); - setJacMassTrans2(); - dx = Jac.solve(fvec); - if (!Double.valueOf(dx.norm2()).isNaN()) { - uMassTrans.minusEquals(dx.times(iter / (iter + factor))); - err = Math.abs(dx.norm2() / uMassTrans.norm2()); - updateMassTrans(); - calcFluxes(); - } else { - System.out.println("dx: NaN in mass trans calc"); - err = 10; - } - // System.out.println("err " + err); - } while ((err > 1.e-4 && iter < 100) || iter < 5); + // System.out.println("temp eat " + temp); + // System.out.println("temo " + temp); + if (Math.abs(temp) > 1e-10) { + heatTransferCorrection[phase] = temp / (Math.exp(temp) - 1.0); + } else { + heatTransferCorrection[phase] = 1.0; + } + // System.out.println("heat corr. " + heatTransferCorrection[phase]); + } + + /** {@inheritDoc} */ + @Override + public void initMassTransferCalc() { + super.initMassTransferCalc(); + } + + /** {@inheritDoc} */ + @Override + public void initHeatTransferCalc() { + super.initHeatTransferCalc(); + } + + /** {@inheritDoc} */ + @Override + public void init() { + calcMolFractionDifference(); + super.init(); + } + + /** {@inheritDoc} */ + @Override + public void heatTransSolve() { + double f = 0; + double df = 0; + double dhtot = 0.0; + int iter = 0; + do { + iter++; + dhtot = 0.0; + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + dhtot += nFlux.get(i, 0) * (bulkSystem.getPhases()[0].getComponents()[i] + .getEnthalpy(bulkSystem.getPhases()[0].getTemperature()) + / bulkSystem.getPhases()[0].getComponents()[i].getNumberOfMolesInPhase() + - bulkSystem.getPhases()[1].getComponents()[i] + .getEnthalpy(bulkSystem.getPhases()[1].getTemperature()) + / bulkSystem.getPhases()[1].getComponents()[i].getNumberOfMolesInPhase()); + } + // System.out.println("dhtot " + dhtot + " heat coef " + + // heatTransferCoefficient[0]); + f = heatTransferCoefficient[0] * heatTransferCorrection[0] + * (bulkSystem.getPhases()[0].getTemperature() - interphaseSystem.getTemperature()) + + heatTransferCoefficient[1] * heatTransferCorrection[1] + * (bulkSystem.getPhases()[1].getTemperature() - interphaseSystem.getTemperature()) + + dhtot; + + df = -heatTransferCoefficient[0] * heatTransferCorrection[0] + - heatTransferCoefficient[1] * heatTransferCorrection[1]; + // System.out.println("f " + f + " df " + df); + // if(interphaseSystem.getTemperature() - f/df>0.0) + // interphaseSystem.setTemperature(interphaseSystem.getTemperature() - f/df); + interphaseSystem.setTemperature(interphaseSystem.getTemperature() - f / df); + // System.out.println("new temp " + interphaseSystem.getTemperature()); + } while (Math.abs(f) > 1e-6 && iter < 100); + + interphaseHeatFlux[0] = -heatTransferCoefficient[0] * heatTransferCorrection[0] + * (bulkSystem.getPhases()[0].getTemperature() - interphaseSystem.getTemperature()); + interphaseHeatFlux[1] = -heatTransferCoefficient[1] * heatTransferCorrection[1] + * (bulkSystem.getPhases()[1].getTemperature() - interphaseSystem.getTemperature()); + // System.out.println("heat flox here " + getInterphaseHeatFlux(0) + " heatflux2 + // " + getInterphaseHeatFlux(1)); + } + + /** {@inheritDoc} */ + @Override + public void massTransSolve() { + int iter = 1; + double err = 1.0e10; + // double oldErr = 0.0; + double factor = 10.0; + // if(bulkSystem.isChemicalSystem()) factor=100.0; + setuMassTrans(); + do { + // oldErr = err; + iter++; + init(); + setfvecMassTrans2(); + setJacMassTrans2(); + dx = Jac.solve(fvec); + if (!Double.valueOf(dx.norm2()).isNaN()) { + uMassTrans.minusEquals(dx.times(iter / (iter + factor))); + err = Math.abs(dx.norm2() / uMassTrans.norm2()); + updateMassTrans(); calcFluxes(); + } else { + System.out.println("dx: NaN in mass trans calc"); + err = 10; + } + // System.out.println("err " + err); + } while ((err > 1.e-4 && iter < 100) || iter < 5); + calcFluxes(); + } + + /** {@inheritDoc} */ + @Override + public double[] calcFluxes() { + double sum = 0.0; + // System.out.println("starter..."); + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { + sum += nFlux.get(i, 0); } - /** {@inheritDoc} */ - @Override - public double[] calcFluxes() { - double sum = 0.0; - // System.out.println("starter..."); - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfComponents(); i++) { - sum += nFlux.get(i, 0); - } - - totalFlux = sum;// tot.get(0,0); - // System.out.println("total flux " + totalFlux); - return nFlux.transpose().getArray()[0]; + totalFlux = sum; // tot.get(0,0); + // System.out.println("total flux " + totalFlux); + return nFlux.transpose().getArray()[0]; + } + + /** {@inheritDoc} */ + @Override + public void solve() { + // interphaseSystem = bulkSystem.clone(); + initInterphaseSystem(); + init(); + int iterOuter = 0; + int iterInner = 0; + double totalFluxOld = totalFlux; + + double heatFlux = 0; + double oldHeatFlux = 0.0; + if (heatTransferCalc) { + this.heatTransSolve(); + heatFlux = this.getInterphaseHeatFlux(0); } - /** {@inheritDoc} */ - @Override - public void solve() { - // interphaseSystem = bulkSystem.clone(); - initInterphaseSystem(); - init(); - int iterOuter = 0, iterInner = 0; - double totalFluxOld = totalFlux, heatFlux = 0, oldHeatFlux = 0.0; - - if (heatTransferCalc) { - this.heatTransSolve(); - heatFlux = this.getInterphaseHeatFlux(0); - } + do { + iterInner++; + iterOuter = 0; + oldHeatFlux = heatFlux; + do { + iterOuter++; + totalFluxOld = totalFlux; - do { - iterInner++; - iterOuter = 0; - oldHeatFlux = heatFlux; - do { - iterOuter++; - totalFluxOld = totalFlux; - - if (massTransferCalc) { - massTransSolve(); - } - } while (Math.abs((totalFluxOld - totalFlux) / totalFlux) > 1e-6 && iterOuter < 50); - - if (heatTransferCalc) { - this.heatTransSolve(); - heatFlux = this.getInterphaseHeatFlux(0); - } - } while (Math.abs((oldHeatFlux - heatFlux) / heatFlux) > 1e-6 && heatTransferCalc - && iterInner < 50); - init(); - // System.out.println("iterInner " +iterInner + " temp gas " + - // interphaseSystem.getTemperature(0)+ " temp liq " + - // interphaseSystem.getTemperature(1)); - } + if (massTransferCalc) { + massTransSolve(); + } + } while (Math.abs((totalFluxOld - totalFlux) / totalFlux) > 1e-6 && iterOuter < 50); + + if (heatTransferCalc) { + this.heatTransSolve(); + heatFlux = this.getInterphaseHeatFlux(0); + } + } while (Math.abs((oldHeatFlux - heatFlux) / heatFlux) > 1e-6 && heatTransferCalc + && iterInner < 50); + init(); + // System.out.println("iterInner " +iterInner + " temp gas " + + // interphaseSystem.getTemperature(0)+ " temp liq " + + // interphaseSystem.getTemperature(1)); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/KrishnaStandartFilmModel.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/KrishnaStandartFilmModel.java index 63981d90dc..bc527dfac1 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/KrishnaStandartFilmModel.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/KrishnaStandartFilmModel.java @@ -18,359 +18,348 @@ * @version $Id: $Id */ public class KrishnaStandartFilmModel extends - neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.NonEquilibriumFluidBoundary - implements ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; + neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.NonEquilibriumFluidBoundary + implements ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; - Matrix phiMatrix; - Matrix redPhiMatrix; - Matrix redCorrectionMatrix; - Matrix betaMatrix; + Matrix phiMatrix; + Matrix redPhiMatrix; + Matrix redCorrectionMatrix; + Matrix betaMatrix; - /** - *

- * Constructor for KrishnaStandartFilmModel. - *

- */ - public KrishnaStandartFilmModel() {} + /** + *

+ * Constructor for KrishnaStandartFilmModel. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public KrishnaStandartFilmModel(SystemInterface system) { + super(system); + binaryMassTransferCoefficient = new double[2][getBulkSystem().getPhases()[0] + .getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; + binarySchmidtNumber = new double[2][getBulkSystem().getPhases()[0] + .getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; + uMassTrans = new Matrix(neq, 1); + Xgij = new Matrix(neq, 4); + this.setuMassTrans(); + uMassTransold = uMassTrans.copy(); + } - /** - *

- * Constructor for KrishnaStandartFilmModel. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public KrishnaStandartFilmModel(SystemInterface system) { - super(system); - binaryMassTransferCoefficient = new double[2][getBulkSystem().getPhases()[0] - .getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; - binarySchmidtNumber = new double[2][getBulkSystem().getPhases()[0] - .getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; - uMassTrans = new Matrix(neq, 1); - Xgij = new Matrix(neq, 4); - this.setuMassTrans(); - uMassTransold = uMassTrans.copy(); - } - - /** - *

- * Constructor for KrishnaStandartFilmModel. - *

- * - * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public KrishnaStandartFilmModel(FlowNodeInterface flowNode) { - super(flowNode); - binaryMassTransferCoefficient = new double[2][getBulkSystem().getPhases()[0] - .getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; - binarySchmidtNumber = new double[2][getBulkSystem().getPhases()[0] - .getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; - uMassTrans = new Matrix(neq, 1); - Xgij = new Matrix(neq, 4); - this.setuMassTrans(); - uMassTransold = uMassTrans.copy(); - phiMatrix = new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, - getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); - redCorrectionMatrix = - new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, 1); - } + /** + *

+ * Constructor for KrishnaStandartFilmModel. + *

+ * + * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public KrishnaStandartFilmModel(FlowNodeInterface flowNode) { + super(flowNode); + binaryMassTransferCoefficient = new double[2][getBulkSystem().getPhases()[0] + .getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; + binarySchmidtNumber = new double[2][getBulkSystem().getPhases()[0] + .getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; + uMassTrans = new Matrix(neq, 1); + Xgij = new Matrix(neq, 4); + this.setuMassTrans(); + uMassTransold = uMassTrans.copy(); + phiMatrix = new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, + getBulkSystem().getPhases()[0].getNumberOfComponents() - 1); + redCorrectionMatrix = new Matrix(getBulkSystem().getPhases()[0].getNumberOfComponents() - 1, 1); + } - /** {@inheritDoc} */ - @Override - public KrishnaStandartFilmModel clone() { - KrishnaStandartFilmModel clonedSystem = null; + /** {@inheritDoc} */ + @Override + public KrishnaStandartFilmModel clone() { + KrishnaStandartFilmModel clonedSystem = null; - try { - clonedSystem = (KrishnaStandartFilmModel) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; + try { + clonedSystem = (KrishnaStandartFilmModel) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** - *

- * calcBinarySchmidtNumbers. - *

- * - * @param phase a int - * @return a double - */ - public double calcBinarySchmidtNumbers(int phase) { - for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents(); i++) { - for (int j = 0; j < getBulkSystem().getPhases()[phase].getNumberOfComponents(); j++) { - binarySchmidtNumber[phase][i][j] = getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getKinematicViscosity() - / getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDiffusionCoefficient(i, j); - // System.out.println("i j " + i +" j " + j); - // System.out.println("phase " + phase + " diff" + - // getBulkSystem().getPhases()[phase].getPhysicalProperties().getDiffusionCoefficient(i,j)); - // System.out.println("phase " + phase + " visk" + - // getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity()); - } - } - return 1; + return clonedSystem; + } + + /** + *

+ * calcBinarySchmidtNumbers. + *

+ * + * @param phase a int + * @return a double + */ + public double calcBinarySchmidtNumbers(int phase) { + for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents(); i++) { + for (int j = 0; j < getBulkSystem().getPhases()[phase].getNumberOfComponents(); j++) { + binarySchmidtNumber[phase][i][j] = + getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + / getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getDiffusionCoefficient(i, j); + // System.out.println("i j " + i +" j " + j); + // System.out.println("phase " + phase + " diff" + + // getBulkSystem().getPhases()[phase].getPhysicalProperties().getDiffusionCoefficient(i,j)); + // System.out.println("phase " + phase + " visk" + + // getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity()); + } } + return 1; + } - /** - *

- * calcBinaryMassTransferCoefficients. - *

- * - * @param phase a int - * @return a double - */ - public double calcBinaryMassTransferCoefficients(int phase) { - for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents(); i++) { - for (int j = 0; j < getBulkSystem().getPhases()[phase].getNumberOfComponents(); j++) { - binaryMassTransferCoefficient[phase][i][j] = flowNode - .getInterphaseTransportCoefficient().calcInterphaseMassTransferCoefficient( - phase, binarySchmidtNumber[phase][i][j], flowNode); - } - } - return 1; + /** + *

+ * calcBinaryMassTransferCoefficients. + *

+ * + * @param phase a int + * @return a double + */ + public double calcBinaryMassTransferCoefficients(int phase) { + for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents(); i++) { + for (int j = 0; j < getBulkSystem().getPhases()[phase].getNumberOfComponents(); j++) { + binaryMassTransferCoefficient[phase][i][j] = + flowNode.getInterphaseTransportCoefficient().calcInterphaseMassTransferCoefficient( + phase, binarySchmidtNumber[phase][i][j], flowNode); + } } + return 1; + } - /** - *

- * calcMassTransferCoefficients. - *

- * - * @param phase a int - * @return a double - */ - public double calcMassTransferCoefficients(int phase) { - int n = getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; + /** + *

+ * calcMassTransferCoefficients. + *

+ * + * @param phase a int + * @return a double + */ + public double calcMassTransferCoefficients(int phase) { + int n = getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; - for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; i++) { - double tempVar = 0; - for (int j = 0; j < getBulkSystem().getPhases()[phase].getNumberOfComponents(); j++) { - if (i != j) { - tempVar += getBulkSystem().getPhases()[phase].getComponents()[j].getx() - / binaryMassTransferCoefficient[phase][i][j]; - } - if (j < n) { - massTransferCoefficientMatrix[phase].set(i, j, - -getBulkSystem().getPhases()[phase].getComponents()[i].getx() - * (1.0 / binaryMassTransferCoefficient[phase][i][j] - - 1.0 / binaryMassTransferCoefficient[phase][i][n])); - } - } - massTransferCoefficientMatrix[phase].set(i, i, - tempVar + getBulkSystem().getPhases()[phase].getComponents()[i].getx() - / binaryMassTransferCoefficient[phase][i][n]); + for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; i++) { + double tempVar = 0; + for (int j = 0; j < getBulkSystem().getPhases()[phase].getNumberOfComponents(); j++) { + if (i != j) { + tempVar += getBulkSystem().getPhases()[phase].getComponents()[j].getx() + / binaryMassTransferCoefficient[phase][i][j]; + } + if (j < n) { + massTransferCoefficientMatrix[phase].set(i, j, + -getBulkSystem().getPhases()[phase].getComponents()[i].getx() + * (1.0 / binaryMassTransferCoefficient[phase][i][j] + - 1.0 / binaryMassTransferCoefficient[phase][i][n])); } - massTransferCoefficientMatrix[phase] = massTransferCoefficientMatrix[phase].inverse(); - return 1; + } + massTransferCoefficientMatrix[phase].set(i, i, + tempVar + getBulkSystem().getPhases()[phase].getComponents()[i].getx() + / binaryMassTransferCoefficient[phase][i][n]); } + massTransferCoefficientMatrix[phase] = massTransferCoefficientMatrix[phase].inverse(); + return 1; + } - /** - *

- * calcPhiMatrix. - *

- * - * @param phase a int - */ - public void calcPhiMatrix(int phase) { - int n = getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; + /** + *

+ * calcPhiMatrix. + *

+ * + * @param phase a int + */ + public void calcPhiMatrix(int phase) { + int n = getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; - for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; i++) { - double tempVar = 0; - for (int j = 0; j < getBulkSystem().getPhases()[phase].getNumberOfComponents(); j++) { - if (i != j || i == n) { - tempVar += nFlux.get(i, 0) - / (1.0 / (getBulkSystem().getPhases()[phase].getMolarVolume() * 1e-5) - * binaryMassTransferCoefficient[phase][i][j]); - } - if (j < n) { - phiMatrix.set(i, j, -nFlux.get(i, 0) * (1.0 - / (1.0 / (getBulkSystem().getPhases()[phase].getMolarVolume() * 1e-5) - * binaryMassTransferCoefficient[phase][i][j]) - - 1.0 / (1.0 - / (getBulkSystem().getPhases()[phase].getMolarVolume() * 1e-5) - * binaryMassTransferCoefficient[phase][i][n]))); - } - } - phiMatrix - .set(i, i, - tempVar + nFlux.get(i, 0) / (1.0 - / (getBulkSystem().getPhases()[phase].getMolarVolume() * 1e-5) - * binaryMassTransferCoefficient[phase][i][n])); + for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; i++) { + double tempVar = 0; + for (int j = 0; j < getBulkSystem().getPhases()[phase].getNumberOfComponents(); j++) { + if (i != j || i == n) { + tempVar += + nFlux.get(i, 0) / (1.0 / (getBulkSystem().getPhases()[phase].getMolarVolume() * 1e-5) + * binaryMassTransferCoefficient[phase][i][j]); } + if (j < n) { + phiMatrix.set(i, j, -nFlux.get(i, 0) * (1.0 + / (1.0 / (getBulkSystem().getPhases()[phase].getMolarVolume() * 1e-5) + * binaryMassTransferCoefficient[phase][i][j]) + - 1.0 / (1.0 / (getBulkSystem().getPhases()[phase].getMolarVolume() * 1e-5) + * binaryMassTransferCoefficient[phase][i][n]))); + } + } + phiMatrix.set(i, i, + tempVar + nFlux.get(i, 0) + / (1.0 / (getBulkSystem().getPhases()[phase].getMolarVolume() * 1e-5) + * binaryMassTransferCoefficient[phase][i][n])); } + } - /** - *

- * calcRedPhiMatrix. - *

- * - * @param phase a int - */ - public void calcRedPhiMatrix(int phase) { - redPhiMatrix = new Matrix(phiMatrix.eig().getRealEigenvalues(), 1); - } + /** + *

+ * calcRedPhiMatrix. + *

+ * + * @param phase a int + */ + public void calcRedPhiMatrix(int phase) { + redPhiMatrix = new Matrix(phiMatrix.eig().getRealEigenvalues(), 1); + } - /** - *

- * calcRedCorrectionMatrix. - *

- * - * @param phase a int - */ - public void calcRedCorrectionMatrix(int phase) { - for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; i++) { - redCorrectionMatrix.set(i, 0, - (redPhiMatrix.get(0, i) * Math.exp(redPhiMatrix.get(0, i))) - / (Math.exp(redPhiMatrix.get(0, i)) - (1.0 - 1e-15))); - } + /** + *

+ * calcRedCorrectionMatrix. + *

+ * + * @param phase a int + */ + public void calcRedCorrectionMatrix(int phase) { + for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; i++) { + redCorrectionMatrix.set(i, 0, (redPhiMatrix.get(0, i) * Math.exp(redPhiMatrix.get(0, i))) + / (Math.exp(redPhiMatrix.get(0, i)) - (1.0 - 1e-15))); } + } - /** - *

- * calcCorrectionMatrix. - *

- * - * @param phase a int - */ - public void calcCorrectionMatrix(int phase) { - Matrix modalPhiMatrix = phiMatrix.eig().getV(); - Matrix diagonalRedCorrectionMatrix = - new Matrix(getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1, - getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1); - for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; i++) { - diagonalRedCorrectionMatrix.set(i, i, redCorrectionMatrix.get(i, 0)); - } - rateCorrectionMatrix[phase] = - modalPhiMatrix.times(diagonalRedCorrectionMatrix.times(modalPhiMatrix.inverse())); + /** + *

+ * calcCorrectionMatrix. + *

+ * + * @param phase a int + */ + public void calcCorrectionMatrix(int phase) { + Matrix modalPhiMatrix = phiMatrix.eig().getV(); + Matrix diagonalRedCorrectionMatrix = + new Matrix(getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1, + getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1); + for (int i = 0; i < getBulkSystem().getPhases()[phase].getNumberOfComponents() - 1; i++) { + diagonalRedCorrectionMatrix.set(i, i, redCorrectionMatrix.get(i, 0)); } + rateCorrectionMatrix[phase] = + modalPhiMatrix.times(diagonalRedCorrectionMatrix.times(modalPhiMatrix.inverse())); + } - /** - *

- * calcTotalMassTransferCoefficientMatrix. - *

- * - * @param phase a int - */ - public void calcTotalMassTransferCoefficientMatrix(int phase) { + /** + *

+ * calcTotalMassTransferCoefficientMatrix. + *

+ * + * @param phase a int + */ + public void calcTotalMassTransferCoefficientMatrix(int phase) { + totalMassTransferCoefficientMatrix[phase] = massTransferCoefficientMatrix[phase]; + // System.out.println("before phase: " + phase); + // totalMassTransferCoefficientMatrix[phase].print(10,10); + // System.out.println("eqcorr " + useThermodynamicCorrections(phase)); + // System.out.println("fluxcorr " + useFiniteFluxCorrection(phase)); + if (Math.abs(totalFlux) > 1e-30) { + if (useFiniteFluxCorrection(phase) && useThermodynamicCorrections(phase)) { + totalMassTransferCoefficientMatrix[phase] = rateCorrectionMatrix[phase] + .times(nonIdealCorrections[phase].times(massTransferCoefficientMatrix[phase])); + } else if (useFiniteFluxCorrection(phase)) { + totalMassTransferCoefficientMatrix[phase] = + rateCorrectionMatrix[phase].times(massTransferCoefficientMatrix[phase]); + } else if (useThermodynamicCorrections(phase)) { + totalMassTransferCoefficientMatrix[phase] = + massTransferCoefficientMatrix[phase].times(nonIdealCorrections[phase]); + } else { totalMassTransferCoefficientMatrix[phase] = massTransferCoefficientMatrix[phase]; - // System.out.println("before phase: " + phase); - // totalMassTransferCoefficientMatrix[phase].print(10,10); - // System.out.println("eqcorr " + useThermodynamicCorrections(phase)); - // System.out.println("fluxcorr " + useFiniteFluxCorrection(phase)); - if (Math.abs(totalFlux) > 1e-30) { - if (useFiniteFluxCorrection(phase) && useThermodynamicCorrections(phase)) { - totalMassTransferCoefficientMatrix[phase] = rateCorrectionMatrix[phase].times( - nonIdealCorrections[phase].times(massTransferCoefficientMatrix[phase])); - } else if (useFiniteFluxCorrection(phase)) { - totalMassTransferCoefficientMatrix[phase] = - rateCorrectionMatrix[phase].times(massTransferCoefficientMatrix[phase]); - } else if (useThermodynamicCorrections(phase)) { - totalMassTransferCoefficientMatrix[phase] = - massTransferCoefficientMatrix[phase].times(nonIdealCorrections[phase]); - } else { - totalMassTransferCoefficientMatrix[phase] = massTransferCoefficientMatrix[phase]; - } - } else { - totalMassTransferCoefficientMatrix[phase] = massTransferCoefficientMatrix[phase]; - } - // System.out.println("phase: " + phase); - // totalMassTransferCoefficientMatrix[phase].print(10,10); + } + } else { + totalMassTransferCoefficientMatrix[phase] = massTransferCoefficientMatrix[phase]; } + // System.out.println("phase: " + phase); + // totalMassTransferCoefficientMatrix[phase].print(10,10); + } - /** - *

- * initCorrections. - *

- * - * @param phase a int - */ - public void initCorrections(int phase) { - calcPhiMatrix(phase); - // phiMatrix.print(10,10); - calcRedPhiMatrix(phase); - // redPhiMatrix.print(10,10); - calcRedCorrectionMatrix(phase); - // redCorrectionMatrix.print(10,10); - calcCorrectionMatrix(phase); - // System.out.println("corr mat: " + phase); - // rateCorrectionMatrix[phase].print(10,10); - } + /** + *

+ * initCorrections. + *

+ * + * @param phase a int + */ + public void initCorrections(int phase) { + calcPhiMatrix(phase); + // phiMatrix.print(10,10); + calcRedPhiMatrix(phase); + // redPhiMatrix.print(10,10); + calcRedCorrectionMatrix(phase); + // redCorrectionMatrix.print(10,10); + calcCorrectionMatrix(phase); + // System.out.println("corr mat: " + phase); + // rateCorrectionMatrix[phase].print(10,10); + } - /** {@inheritDoc} */ - @Override - public void initMassTransferCalc() { - super.initMassTransferCalc(); - for (int phase = 0; phase < 2; phase++) { - this.calcBinarySchmidtNumbers(phase); - this.calcBinaryMassTransferCoefficients(phase); - this.calcMassTransferCoefficients(phase); - this.initCorrections(phase); - this.calcNonIdealCorrections(phase); - // this.calcFluxTypeCorrectionMatrix(phase,0); - this.calcTotalMassTransferCoefficientMatrix(phase); - } + /** {@inheritDoc} */ + @Override + public void initMassTransferCalc() { + super.initMassTransferCalc(); + for (int phase = 0; phase < 2; phase++) { + this.calcBinarySchmidtNumbers(phase); + this.calcBinaryMassTransferCoefficients(phase); + this.calcMassTransferCoefficients(phase); + this.initCorrections(phase); + this.calcNonIdealCorrections(phase); + // this.calcFluxTypeCorrectionMatrix(phase,0); + this.calcTotalMassTransferCoefficientMatrix(phase); } + } - /** {@inheritDoc} */ - @Override - public void initHeatTransferCalc() { - super.initHeatTransferCalc(); - for (int phase = 0; phase < 2; phase++) { - this.calcHeatTransferCoefficients(phase); - this.calcHeatTransferCorrection(phase); - } + /** {@inheritDoc} */ + @Override + public void initHeatTransferCalc() { + super.initHeatTransferCalc(); + for (int phase = 0; phase < 2; phase++) { + this.calcHeatTransferCoefficients(phase); + this.calcHeatTransferCorrection(phase); } + } - /** {@inheritDoc} */ - @Override - public void init() { - super.init(); - if (massTransferCalc) { - this.initMassTransferCalc(); - } - if (heatTransferCalc) { - this.initHeatTransferCalc(); - } + /** {@inheritDoc} */ + @Override + public void init() { + super.init(); + if (massTransferCalc) { + this.initMassTransferCalc(); } - - /** {@inheritDoc} */ - @Override - public void solve() { - super.solve(); + if (heatTransferCalc) { + this.initHeatTransferCalc(); } + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - System.out.println("Starter....."); - SystemSrkEos testSystem = new SystemSrkEos(295.3, 3.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - PipeData pipe1 = new PipeData(0.1, 0.025); + /** {@inheritDoc} */ + @Override + public void solve() { + super.solve(); + } - testSystem.addComponent("methane", 0.0071152181, 0); - testSystem.addComponent("ethane", 0.0071152181, 0); - testSystem.addComponent("water", 0.00362204876, 1); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.initPhysicalProperties(); - FlowNodeInterface test = new AnnularFlow(testSystem, pipe1); - test.initFlowCalc(); - test.init(); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + System.out.println("Starter....."); + SystemSrkEos testSystem = new SystemSrkEos(295.3, 3.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + PipeData pipe1 = new PipeData(0.1, 0.025); - KrishnaStandartFilmModel test2 = new KrishnaStandartFilmModel(test); - test2.solve(); - // test2.initCorrections(1); - test2.calcFluxes(); - test2.getInterphaseSystem().display(); - test2.display(""); - } + testSystem.addComponent("methane", 0.0071152181, 0); + testSystem.addComponent("ethane", 0.0071152181, 0); + testSystem.addComponent("water", 0.00362204876, 1); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.initPhysicalProperties(); + FlowNodeInterface test = new AnnularFlow(testSystem, pipe1); + test.initFlowCalc(); + test.init(); + + KrishnaStandartFilmModel test2 = new KrishnaStandartFilmModel(test); + test2.solve(); + // test2.initCorrections(1); + test2.calcFluxes(); + test2.getInterphaseSystem().display(); + test2.display(""); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/ReactiveFluidBoundary.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/ReactiveFluidBoundary.java index 3052e4ce03..773c0d3d62 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/ReactiveFluidBoundary.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/ReactiveFluidBoundary.java @@ -14,567 +14,549 @@ * @version $Id: $Id */ public abstract class ReactiveFluidBoundary extends KrishnaStandartFilmModel { - private static final long serialVersionUID = 1000; - - protected int neq = 0; - protected Matrix dx; - protected Matrix Jac; - protected Matrix fvec; - protected Matrix uMassTrans; - protected Matrix uMassTransold; - protected Matrix Xgij; - - public double[][] molFractionDifference; - - /** - *

- * Constructor for ReactiveFluidBoundary. - *

- */ - public ReactiveFluidBoundary() {} - - /** - *

- * Constructor for ReactiveFluidBoundary. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public ReactiveFluidBoundary(SystemInterface system) { - super(system); - neq = 3 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); - Jac = new Matrix(neq, neq); - fvec = new Matrix(neq, 1); - - // massTransferCoefficientMatrix[0] = new - // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); - // massTransferCoefficientMatrix[1] = new - // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); - // totalMassTransferCoefficientMatrix[0] = new - // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); - // totalMassTransferCoefficientMatrix[1] = new - // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); - // molFractionDifference = new - // double[2][getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1]; + private static final long serialVersionUID = 1000; + + protected int neq = 0; + protected Matrix dx; + protected Matrix Jac; + protected Matrix fvec; + protected Matrix uMassTrans; + protected Matrix uMassTransold; + protected Matrix Xgij; + + public double[][] molFractionDifference; + + /** + *

+ * Constructor for ReactiveFluidBoundary. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public ReactiveFluidBoundary(SystemInterface system) { + super(system); + neq = 3 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); + Jac = new Matrix(neq, neq); + fvec = new Matrix(neq, 1); + + // massTransferCoefficientMatrix[0] = new + // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); + // massTransferCoefficientMatrix[1] = new + // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); + // totalMassTransferCoefficientMatrix[0] = new + // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); + // totalMassTransferCoefficientMatrix[1] = new + // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); + // molFractionDifference = new + // double[2][getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1]; + } + + /** + *

+ * Constructor for ReactiveFluidBoundary. + *

+ * + * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public ReactiveFluidBoundary(FlowNodeInterface flowNode) { + super(flowNode); + neq = 3 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); + Jac = new Matrix(neq, neq); + fvec = new Matrix(neq, 1); + + // massTransferCoefficientMatrix[0] = new + // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); + // massTransferCoefficientMatrix[1] = new + // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); + // totalMassTransferCoefficientMatrix[0] = new + // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); + // totalMassTransferCoefficientMatrix[1] = new + // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); + // interphaseSystem = bulkSystem.clone(); + // molFractionDifference = new + // double[2][getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1]; + } + + /** {@inheritDoc} */ + @Override + public ReactiveFluidBoundary clone() { + ReactiveFluidBoundary clonedSystem = null; + + try { + clonedSystem = (ReactiveFluidBoundary) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** - *

- * Constructor for ReactiveFluidBoundary. - *

- * - * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public ReactiveFluidBoundary(FlowNodeInterface flowNode) { - super(flowNode); - neq = 3 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); - Jac = new Matrix(neq, neq); - fvec = new Matrix(neq, 1); - - // massTransferCoefficientMatrix[0] = new - // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); - // massTransferCoefficientMatrix[1] = new - // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); - // totalMassTransferCoefficientMatrix[0] = new - // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); - // totalMassTransferCoefficientMatrix[1] = new - // Matrix(getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1,getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1); - // interphaseSystem = bulkSystem.clone(); - // molFractionDifference = new - // double[2][getBulkSystem().getPhases()[0].getNumberOfMolecularComponents()-1]; + return clonedSystem; + } + + /** {@inheritDoc} */ + @Override + public void setfvecMassTrans() { + double sumx = 0; + double sumy = 0; + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + fvec.set(i, 0, Math + .log((interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() + * interphaseSystem.getPhases()[0].getComponents()[i].getx())) + - Math.log((interphaseSystem.getPhases()[1].getComponents()[i].getFugacityCoefficient() + * interphaseSystem.getPhases()[1].getComponents()[i].getx()))); + sumx += interphaseSystem.getPhases()[0].getComponents()[i].getx(); + sumy += interphaseSystem.getPhases()[1].getComponents()[i].getx(); } - - /** {@inheritDoc} */ - @Override - public ReactiveFluidBoundary clone() { - ReactiveFluidBoundary clonedSystem = null; - - try { - clonedSystem = (ReactiveFluidBoundary) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; + fvec.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1, 0, 1 - sumx); + fvec.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0, 1 - sumy); + + for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1; i < (2 + * bulkSystem.getPhases()[0].getNumberOfMolecularComponents()); i++) { + fvec.set(i, 0, + (totalMassTransferCoefficientMatrix[1].get( + i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1), + i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1)) + * (bulkSystem.getPhases()[0].getComponents()[i + - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1)].getx() + - interphaseSystem.getPhases()[0].getComponents()[i + - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1)].getx()) + + (totalMassTransferCoefficientMatrix[0].get( + i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1), + i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1)) + * (bulkSystem.getPhases()[1].getComponents()[i + - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1)].getx() + - interphaseSystem.getPhases()[1].getComponents()[i + - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1)] + .getx())))); } - - /** {@inheritDoc} */ - @Override - public void setfvecMassTrans() { - double sumx = 0, sumy = 0; - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - fvec.set(i, 0, Math.log( - (interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() - * interphaseSystem.getPhases()[0].getComponents()[i].getx())) - - Math.log((interphaseSystem.getPhases()[1].getComponents()[i] - .getFugacityCoefficient() - * interphaseSystem.getPhases()[1].getComponents()[i].getx()))); - sumx += interphaseSystem.getPhases()[0].getComponents()[i].getx(); - sumy += interphaseSystem.getPhases()[1].getComponents()[i].getx(); - } - fvec.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1, 0, 1 - sumx); - fvec.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0, 1 - sumy); - - for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1; i < (2 - * bulkSystem.getPhases()[0].getNumberOfMolecularComponents()); i++) { - fvec.set(i, 0, (totalMassTransferCoefficientMatrix[1].get( - i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1), - i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1)) - * (bulkSystem.getPhases()[0].getComponents()[i - - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1)] - .getx() - - interphaseSystem.getPhases()[0].getComponents()[i - - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - + 1)].getx()) - + (totalMassTransferCoefficientMatrix[0].get( - i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1), - i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1)) - * (bulkSystem.getPhases()[1].getComponents()[i - - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - + 1)].getx() - - interphaseSystem.getPhases()[1].getComponents()[i - - (bulkSystem.getPhases()[0] - .getNumberOfMolecularComponents() + 1)] - .getx())))); - } + } + + /** {@inheritDoc} */ + @Override + public void setfvecMassTrans2() { + double sumx = 0.0; + double sumy = 0.0; + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + fvec.set(i, 0, Math + .log((interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() + * interphaseSystem.getPhases()[0].getComponents()[i].getx())) + - Math.log((interphaseSystem.getPhases()[1].getComponents()[i].getFugacityCoefficient() + * interphaseSystem.getPhases()[1].getComponents()[i].getx()))); + sumx += interphaseSystem.getPhases()[1].getComponents()[i].getx(); + sumy += interphaseSystem.getPhases()[0].getComponents()[i].getx(); } - /** {@inheritDoc} */ - @Override - public void setfvecMassTrans2() { - double sumx = 0.0, sumy = 0.0; - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - fvec.set(i, 0, Math.log( - (interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() - * interphaseSystem.getPhases()[0].getComponents()[i].getx())) - - Math.log((interphaseSystem.getPhases()[1].getComponents()[i] - .getFugacityCoefficient() - * interphaseSystem.getPhases()[1].getComponents()[i].getx()))); - sumx += interphaseSystem.getPhases()[1].getComponents()[i].getx(); - sumy += interphaseSystem.getPhases()[0].getComponents()[i].getx(); - } - - fvec.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0, 1.0 - sumx); - fvec.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1, 0, 1.0 - sumy); - - Matrix dx = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1); - Matrix dy = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1); - Matrix x = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1); - Matrix y = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1); - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { - dy.set(0, i, (bulkSystem.getPhases()[0].getComponents()[i].getx() - - interphaseSystem.getPhases()[0].getComponents()[i].getx())); - dx.set(0, i, (bulkSystem.getPhases()[1].getComponents()[i].getx() - - interphaseSystem.getPhases()[1].getComponents()[i].getx())); - y.set(0, i, (bulkSystem.getPhases()[0].getComponents()[i].getx())); - x.set(0, i, (bulkSystem.getPhases()[1].getComponents()[i].getx())); - } - - Matrix fluxX = totalMassTransferCoefficientMatrix[1].times(dx.transpose()) - .times(bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[1].getMolarMass()); - Matrix fluxY = totalMassTransferCoefficientMatrix[0].times(dy.transpose()) - .times(bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[0].getMolarMass()); - - // fluxX.print(10,10); - // fluxY.print(10,10); - // totalMassTransferCoefficientMatrix[0].print(10,10); - - // System.out.println("n flux"); - // nFlux.getMatrix(0,bulkSystem.getPhases()[1].getNumberOfMolecularComponents()-2,0,0).print(10,10); - // System.out.println("j gas flux"); - // fluxY.print(10,10); - // System.out.println("j gliq flux"); - // fluxX.print(10,10); - // System.out.println("yn gas flux"); - // y.transpose().times(totalFlux).print(10,10); - // System.out.println("xn gas flux"); - // x.transpose().times(totalFlux).print(10,10); - - Matrix errX = nFlux - .getMatrix(0, bulkSystem.getPhases()[1].getNumberOfMolecularComponents() - 2, 0, 0) - .plus(fluxX).minus(x.transpose().times(totalFlux)); - Matrix errY = nFlux - .getMatrix(0, bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 2, 0, 0) - .minus(fluxY).minus(y.transpose().times(totalFlux)); - - for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - + 2; i < (2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - + 1); i++) { - fvec.set(i, 0, errX.get( - (i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 2)), 0)); - fvec.set((i + (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1)), 0, - errY.get((i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 2)), - 0)); - } - - /* - * System.out.println("fvec"); fvec.print(30,30); errX.print(10,10); errY.print(10,10); - */ - // fluxX.print(10,10); - // fluxY.print(10,10); - // Matrix fluxY = totalMassTransferCoefficientMatrix[1] + fvec.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0, 1.0 - sumx); + fvec.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1, 0, 1.0 - sumy); + + Matrix dx = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1); + Matrix dy = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1); + Matrix x = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1); + Matrix y = new Matrix(1, bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1); + + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { + dy.set(0, i, (bulkSystem.getPhases()[0].getComponents()[i].getx() + - interphaseSystem.getPhases()[0].getComponents()[i].getx())); + dx.set(0, i, (bulkSystem.getPhases()[1].getComponents()[i].getx() + - interphaseSystem.getPhases()[1].getComponents()[i].getx())); + y.set(0, i, (bulkSystem.getPhases()[0].getComponents()[i].getx())); + x.set(0, i, (bulkSystem.getPhases()[1].getComponents()[i].getx())); } - /** {@inheritDoc} */ - @Override - public void setJacMassTrans() { - double dij = 0, tempJ = 0; - Jac.timesEquals(0.0); - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij * 1.0 / interphaseSystem.getPhases()[0].getComponents()[i].getx() - + interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); - - // tempJ= - // dij*interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient()+interphaseSystem.getPhases()[0].getComponents()[i].getx()*interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); - Jac.set(i, j, tempJ); - } - } - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1, i, -1.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1, - bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + i, 0.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), i, 0.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + i, -1.0); - } - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij * 1.0 / interphaseSystem.getPhases()[1].getComponents()[i].getx() - + interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); - - // tempJ= - // dij*interphaseSystem.getPhases()[1].getComponents()[i].getFugacityCoefficient()+interphaseSystem.getPhases()[1].getComponents()[i].getx()*interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); - Jac.set(i, j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), -tempJ); - } - } - - // this must be changed..... - - for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 2 - * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { - dij = i == (j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents()) ? 1.0 - : 0.0; - tempJ = -dij * (totalMassTransferCoefficientMatrix[1].get( - i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents())); - Jac.set(i + 1, j, tempJ); - } - } - - for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 2 - * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { - for (int j = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j < 2 - * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { - dij = i == j ? 1.0 : 0.0; - tempJ = -dij * (totalMassTransferCoefficientMatrix[0].get( - i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents())); - Jac.set(i + 1, j, tempJ); - } - } + Matrix fluxX = totalMassTransferCoefficientMatrix[1].times(dx.transpose()) + .times(bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[1].getMolarMass()); + Matrix fluxY = totalMassTransferCoefficientMatrix[0].times(dy.transpose()) + .times(bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[0].getMolarMass()); + + // fluxX.print(10,10); + // fluxY.print(10,10); + // totalMassTransferCoefficientMatrix[0].print(10,10); + + // System.out.println("n flux"); + // nFlux.getMatrix(0,bulkSystem.getPhases()[1].getNumberOfMolecularComponents()-2,0,0).print(10,10); + // System.out.println("j gas flux"); + // fluxY.print(10,10); + // System.out.println("j gliq flux"); + // fluxX.print(10,10); + // System.out.println("yn gas flux"); + // y.transpose().times(totalFlux).print(10,10); + // System.out.println("xn gas flux"); + // x.transpose().times(totalFlux).print(10,10); + + Matrix errX = + nFlux.getMatrix(0, bulkSystem.getPhases()[1].getNumberOfMolecularComponents() - 2, 0, 0) + .plus(fluxX).minus(x.transpose().times(totalFlux)); + Matrix errY = + nFlux.getMatrix(0, bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 2, 0, 0) + .minus(fluxY).minus(y.transpose().times(totalFlux)); + + for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + + 2; i < (2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1); i++) { + fvec.set(i, 0, + errX.get((i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 2)), 0)); + fvec.set((i + (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1)), 0, + errY.get((i - (bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 2)), 0)); } - /** {@inheritDoc} */ - @Override - public void setJacMassTrans2() { - double dij = 0, tempJ = 0; - Jac.timesEquals(0.0); - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij * 1.0 / interphaseSystem.getPhases()[0].getComponents()[i].getx() - + interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); - Jac.set(i, j, tempJ); - } - } - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), i, 0.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + i, -1.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1, i, -1.0); - Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1, - bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + i, 0.0); - } - - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij * 1.0 / interphaseSystem.getPhases()[1].getComponents()[i].getx() - + interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); - Jac.set(i, j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), -tempJ); - } - } - - // this must be changed..... - - for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 2 - * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { - for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { - dij = i == (j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents()) ? 1.0 - : 0.0; - // tempJ = - // -dij*(totalMassTransferCoefficientMatrix[1].get(i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - // i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents())); - // tempJ = dij * - // totalMassTransferCoefficientMatrix[0].getRowSum(i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents()); - // Jac.set(i+2,j+2*bulkSystem.getPhases()[0].getNumberOfMolecularComponents()-1, - // - - // interphaseSystem.getPhases()[0].getComponents()[i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents()].getx()); - if (j != bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1) { - Jac.set(i + 2, j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - -totalMassTransferCoefficientMatrix[1].get( - i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - j) - * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[1].getMolarMass());// tempJ); - } - Jac.set(i + 2, j + 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - dij - bulkSystem.getPhases()[1].getComponents()[i - - bulkSystem.getPhases()[0].getNumberOfMolecularComponents()] - .getx()); - } - } + /* + * System.out.println("fvec"); fvec.print(30,30); errX.print(10,10); errY.print(10,10); + */ + // fluxX.print(10,10); + // fluxY.print(10,10); + // Matrix fluxY = totalMassTransferCoefficientMatrix[1] + } + + /** {@inheritDoc} */ + @Override + public void setJacMassTrans() { + double dij = 0; + double tempJ = 0; + Jac.timesEquals(0.0); + + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij * 1.0 / interphaseSystem.getPhases()[0].getComponents()[i].getx() + + interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); + + // tempJ= + // dij*interphaseSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient()+interphaseSystem.getPhases()[0].getComponents()[i].getx()*interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); + Jac.set(i, j, tempJ); + } + } - for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 2 - * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { - for (int j = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j < 2 - * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { - dij = i == j ? 1.0 : 0.0; - // tempJ = - // -dij*(totalMassTransferCoefficientMatrix[1].get(i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - // i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents())); - // tempJ = dij * - // totalMassTransferCoefficientMatrix[1].getRowSum(i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents()*1.0/bulkSystem.getPhases()[1].getMolarVolume()); - if (j != 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1) { - Jac.set(i + 1 + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - j - bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - totalMassTransferCoefficientMatrix[0].get( - i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - j - bulkSystem.getPhases()[0].getNumberOfMolecularComponents()) - * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[0].getMolarMass());// tempJ); - } - Jac.set(i + 1 + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), - dij - bulkSystem.getPhases()[0].getComponents()[i - - bulkSystem.getPhases()[0].getNumberOfMolecularComponents()] - .getx()); - } - } - // System.out.println("jac"); - // Jac.print(10,10); - // totalMassTransferCoefficientMatrix[0].print(20,20); + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1, i, -1.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1, + bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + i, 0.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), i, 0.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + i, -1.0); } - /** {@inheritDoc} */ - @Override - public void setuMassTrans() { - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - // System.out.println("i"); - uMassTrans.set(i, 0, interphaseSystem.getPhases()[0].getComponents()[i].getx()); - uMassTrans.set(i + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0, - interphaseSystem.getPhases()[1].getComponents()[i].getx()); - } + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij * 1.0 / interphaseSystem.getPhases()[1].getComponents()[i].getx() + + interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); - for (int i = 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 3 - * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - uMassTrans.set(i, 0, nFlux - .get(i - 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0)); - } + // tempJ= + // dij*interphaseSystem.getPhases()[1].getComponents()[i].getFugacityCoefficient()+interphaseSystem.getPhases()[1].getComponents()[i].getx()*interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); + Jac.set(i, j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), -tempJ); + } } - /** {@inheritDoc} */ - @Override - public void updateMassTrans() { - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - interphaseSystem.getPhases()[0].getComponents()[i].setx(uMassTrans.get(i, 0)); - interphaseSystem.getPhases()[1].getComponents()[i].setx(uMassTrans - .get(i + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0)); - } + // this must be changed..... + + for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 2 + * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { + dij = i == (j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents()) ? 1.0 : 0.0; + tempJ = -dij * (totalMassTransferCoefficientMatrix[1].get( + i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents())); + Jac.set(i + 1, j, tempJ); + } + } - for (int i = 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 3 - * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - nFlux.set(i - 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0, - uMassTrans.get(i, 0)); - } + for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 2 + * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { + for (int j = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j < 2 + * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { + dij = i == j ? 1.0 : 0.0; + tempJ = -dij * (totalMassTransferCoefficientMatrix[0].get( + i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents())); + Jac.set(i + 1, j, tempJ); + } + } + } + + /** {@inheritDoc} */ + @Override + public void setJacMassTrans2() { + double dij = 0; + double tempJ = 0; + Jac.timesEquals(0.0); + + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij * 1.0 / interphaseSystem.getPhases()[0].getComponents()[i].getx() + + interphaseSystem.getPhases()[0].getComponents()[i].getdfugdx(j); + Jac.set(i, j, tempJ); + } } - /** {@inheritDoc} */ - @Override - public void calcMolFractionDifference() { - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfMolecularComponents() - - 1; i++) { - molFractionDifference[0][i] = bulkSystem.getPhases()[0].getComponents()[i].getx() - - interphaseSystem.getPhases()[0].getComponents()[i].getx(); - molFractionDifference[1][i] = bulkSystem.getPhases()[1].getComponents()[i].getx() - - interphaseSystem.getPhases()[1].getComponents()[i].getx(); - } + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), i, 0.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + i, -1.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1, i, -1.0); + Jac.set(bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + 1, + bulkSystem.getPhases()[0].getNumberOfMolecularComponents() + i, 0.0); } - /** {@inheritDoc} */ - @Override - public void calcHeatTransferCoefficients(int phase) { - prandtlNumber[phase] = getBulkSystem().getPhases()[phase].getCp() - * getBulkSystem().getPhases()[phase].getPhysicalProperties().getViscosity() - / getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); - heatTransferCoefficient[phase] = flowNode.getInterphaseTransportCoefficient() - .calcInterphaseHeatTransferCoefficient(phase, prandtlNumber[phase], flowNode); + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij * 1.0 / interphaseSystem.getPhases()[1].getComponents()[i].getx() + + interphaseSystem.getPhases()[1].getComponents()[i].getdfugdx(j); + Jac.set(i, j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), -tempJ); + } } - /** {@inheritDoc} */ - @Override - public void calcHeatTransferCorrection(int phase) { - double temp = 0; - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - temp += bulkSystem.getPhases()[0].getComponents()[i].getNumberOfMolesInPhase() - * getBulkSystem().getPhases()[phase].getCp() / heatTransferCoefficient[phase]; + // this must be changed..... + + for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 2 + * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { + for (int j = 0; j < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { + dij = i == (j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents()) ? 1.0 : 0.0; + // tempJ = + // -dij*(totalMassTransferCoefficientMatrix[1].get(i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + // i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents())); + // tempJ = dij * + // totalMassTransferCoefficientMatrix[0].getRowSum(i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents()); + // Jac.set(i+2,j+2*bulkSystem.getPhases()[0].getNumberOfMolecularComponents()-1, + // - + // interphaseSystem.getPhases()[0].getComponents()[i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents()].getx()); + if (j != bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1) { + Jac.set(i + 2, j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + -totalMassTransferCoefficientMatrix[1] + .get(i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), j) + * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[1].getMolarMass()); // tempJ); } - heatTransferCorrection[phase] = temp; + Jac.set(i + 2, j + 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + dij - bulkSystem.getPhases()[1].getComponents()[i + - bulkSystem.getPhases()[0].getNumberOfMolecularComponents()].getx()); + } } - /** {@inheritDoc} */ - @Override - public void initMassTransferCalc() { - super.initMassTransferCalc(); + for (int i = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 2 + * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { + for (int j = bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j < 2 + * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); j++) { + dij = i == j ? 1.0 : 0.0; + // tempJ = + // -dij*(totalMassTransferCoefficientMatrix[1].get(i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + // i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents())); + // tempJ = dij * + // totalMassTransferCoefficientMatrix[1].getRowSum(i-bulkSystem.getPhases()[0].getNumberOfMolecularComponents()*1.0/bulkSystem.getPhases()[1].getMolarVolume()); + if (j != 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents() - 1) { + Jac.set(i + 1 + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + j - bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + totalMassTransferCoefficientMatrix[0].get( + i - bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + j - bulkSystem.getPhases()[0].getNumberOfMolecularComponents()) + * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[0].getMolarMass()); // tempJ); + } + Jac.set(i + 1 + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + j + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), + dij - bulkSystem.getPhases()[0].getComponents()[i + - bulkSystem.getPhases()[0].getNumberOfMolecularComponents()].getx()); + } } - - /** {@inheritDoc} */ - @Override - public void initHeatTransferCalc() { - super.initHeatTransferCalc(); + // System.out.println("jac"); + // Jac.print(10,10); + // totalMassTransferCoefficientMatrix[0].print(20,20); + } + + /** {@inheritDoc} */ + @Override + public void setuMassTrans() { + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + // System.out.println("i"); + uMassTrans.set(i, 0, interphaseSystem.getPhases()[0].getComponents()[i].getx()); + uMassTrans.set(i + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0, + interphaseSystem.getPhases()[1].getComponents()[i].getx()); } - /** {@inheritDoc} */ - @Override - public void init() { - calcMolFractionDifference(); - super.init(); + for (int i = 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 3 + * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + uMassTrans.set(i, 0, + nFlux.get(i - 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0)); } - - /** {@inheritDoc} */ - @Override - public void heatTransSolve() { - double f = 0; - double df = 0; - double dhtot = 0.0; - do { - dhtot = 0.0; - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - dhtot += nFlux.get(i, 0) * (bulkSystem.getPhases()[0].getComponents()[i] - .getEnthalpy(bulkSystem.getPhases()[0].getTemperature()) - - bulkSystem.getPhases()[1].getComponents()[i] - .getEnthalpy(bulkSystem.getPhases()[1].getTemperature())); - } - - f = heatTransferCoefficient[0] * heatTransferCorrection[0] - * (bulkSystem.getPhases()[0].getTemperature() - - interphaseSystem.getTemperature()) - + heatTransferCoefficient[1] * heatTransferCorrection[1] - * (bulkSystem.getPhases()[1].getTemperature() - - interphaseSystem.getTemperature()) - + dhtot; - - df = -heatTransferCoefficient[0] * heatTransferCorrection[0] - - heatTransferCoefficient[1] * heatTransferCorrection[1]; - interphaseSystem.setTemperature(interphaseSystem.getTemperature() - f / df); - - // System.out.println("f " + f); - // System.out.println("int temp " + interphaseSystem.getTemperature()); - // System.out.println("gas temp " + bulkSystem.getPhases()[0].getTemperature()); - // System.out.println("liq temp " + bulkSystem.getPhases()[1].getTemperature()); - } while (Math.abs(f) > 1e-10); + } + + /** {@inheritDoc} */ + @Override + public void updateMassTrans() { + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + interphaseSystem.getPhases()[0].getComponents()[i].setx(uMassTrans.get(i, 0)); + interphaseSystem.getPhases()[1].getComponents()[i] + .setx(uMassTrans.get(i + bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0)); } - /** {@inheritDoc} */ - @Override - public void massTransSolve() { - int iter = 0; - setuMassTrans(); - - do { - iter++; - init(); - setfvecMassTrans2(); - setJacMassTrans2(); - dx = Jac.solve(fvec); - uMassTrans.minusEquals(dx.times(0.1)); - updateMassTrans(); - calcFluxes(); - // uMassTrans.print(30,30); - dx.print(30, 30); - // System.out.println("err " + Math.abs(dx.norm2()/uMassTrans.norm2())); - } while (Math.abs(dx.norm2() / uMassTrans.norm2()) > 1.e-10 && iter < 50); - // System.out.println("iter " + iter); - - calcFluxes2(); - - // uMassTrans.print(30,30); + for (int i = 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i < 3 + * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + nFlux.set(i - 2 * bulkSystem.getPhases()[0].getNumberOfMolecularComponents(), 0, + uMassTrans.get(i, 0)); } - - /** {@inheritDoc} */ - @Override - public double[] calcFluxes() { - double sum = 0.0; - // System.out.println("starter..."); - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - sum += nFlux.get(i, 0); - } - - totalFlux = sum;// tot.get(0,0); - return nFlux.transpose().getArray()[0]; + } + + /** {@inheritDoc} */ + @Override + public void calcMolFractionDifference() { + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfMolecularComponents() - 1; i++) { + molFractionDifference[0][i] = bulkSystem.getPhases()[0].getComponents()[i].getx() + - interphaseSystem.getPhases()[0].getComponents()[i].getx(); + molFractionDifference[1][i] = bulkSystem.getPhases()[1].getComponents()[i].getx() + - interphaseSystem.getPhases()[1].getComponents()[i].getx(); } - - /** - *

- * calcFluxes2. - *

- * - * @return an array of {@link double} objects - */ - public double[] calcFluxes2() { - double sum = 0.0; - // System.out.println("starter..."); - for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { - sum += nFlux.get(i, 0); - // System.out.println("n " + nFlux.get(i,0) ); - } - - totalFlux = sum;// tot.get(0,0); - return nFlux.transpose().getArray()[0]; + } + + /** {@inheritDoc} */ + @Override + public void calcHeatTransferCoefficients(int phase) { + prandtlNumber[phase] = getBulkSystem().getPhases()[phase].getCp() + * getBulkSystem().getPhases()[phase].getPhysicalProperties().getViscosity() + / getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); + heatTransferCoefficient[phase] = flowNode.getInterphaseTransportCoefficient() + .calcInterphaseHeatTransferCoefficient(phase, prandtlNumber[phase], flowNode); + } + + /** {@inheritDoc} */ + @Override + public void calcHeatTransferCorrection(int phase) { + double temp = 0; + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + temp += bulkSystem.getPhases()[0].getComponents()[i].getNumberOfMolesInPhase() + * getBulkSystem().getPhases()[phase].getCp() / heatTransferCoefficient[phase]; + } + heatTransferCorrection[phase] = temp; + } + + /** {@inheritDoc} */ + @Override + public void initMassTransferCalc() { + super.initMassTransferCalc(); + } + + /** {@inheritDoc} */ + @Override + public void initHeatTransferCalc() { + super.initHeatTransferCalc(); + } + + /** {@inheritDoc} */ + @Override + public void init() { + calcMolFractionDifference(); + super.init(); + } + + /** {@inheritDoc} */ + @Override + public void heatTransSolve() { + double f = 0; + double df = 0; + double dhtot = 0.0; + do { + dhtot = 0.0; + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + dhtot += nFlux.get(i, 0) * (bulkSystem.getPhases()[0].getComponents()[i] + .getEnthalpy(bulkSystem.getPhases()[0].getTemperature()) + - bulkSystem.getPhases()[1].getComponents()[i] + .getEnthalpy(bulkSystem.getPhases()[1].getTemperature())); + } + + f = heatTransferCoefficient[0] * heatTransferCorrection[0] + * (bulkSystem.getPhases()[0].getTemperature() - interphaseSystem.getTemperature()) + + heatTransferCoefficient[1] * heatTransferCorrection[1] + * (bulkSystem.getPhases()[1].getTemperature() - interphaseSystem.getTemperature()) + + dhtot; + + df = -heatTransferCoefficient[0] * heatTransferCorrection[0] + - heatTransferCoefficient[1] * heatTransferCorrection[1]; + interphaseSystem.setTemperature(interphaseSystem.getTemperature() - f / df); + + // System.out.println("f " + f); + // System.out.println("int temp " + interphaseSystem.getTemperature()); + // System.out.println("gas temp " + bulkSystem.getPhases()[0].getTemperature()); + // System.out.println("liq temp " + bulkSystem.getPhases()[1].getTemperature()); + } while (Math.abs(f) > 1e-10); + } + + /** {@inheritDoc} */ + @Override + public void massTransSolve() { + int iter = 0; + setuMassTrans(); + + do { + iter++; + init(); + setfvecMassTrans2(); + setJacMassTrans2(); + dx = Jac.solve(fvec); + uMassTrans.minusEquals(dx.times(0.1)); + updateMassTrans(); + calcFluxes(); + // uMassTrans.print(30,30); + dx.print(30, 30); + // System.out.println("err " + Math.abs(dx.norm2()/uMassTrans.norm2())); + } while (Math.abs(dx.norm2() / uMassTrans.norm2()) > 1.e-10 && iter < 50); + // System.out.println("iter " + iter); + + calcFluxes2(); + + // uMassTrans.print(30,30); + } + + /** {@inheritDoc} */ + @Override + public double[] calcFluxes() { + double sum = 0.0; + // System.out.println("starter..."); + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + sum += nFlux.get(i, 0); } - /** {@inheritDoc} */ - @Override - public void solve() { - int iterOuter = 0; - double totalFluxOld = totalFlux; - do { - iterOuter++; - totalFluxOld = totalFlux; - if (massTransferCalc) { - massTransSolve(); - } - - if (heatTransferCalc) { - // System.out.println("heat "); - this.heatTransSolve(); - } - // System.out.println("flux err: " + Math.abs(totalFluxOld-totalFlux)); - } while (Math.abs((totalFluxOld - totalFlux) / totalFlux) > 1e-10 && iterOuter < 55); - - // System.out.println("iterOuter " +iterOuter); - init(); + totalFlux = sum; // tot.get(0,0); + return nFlux.transpose().getArray()[0]; + } + + /** + *

+ * calcFluxes2. + *

+ * + * @return an array of type double + */ + public double[] calcFluxes2() { + double sum = 0.0; + // System.out.println("starter..."); + for (int i = 0; i < bulkSystem.getPhases()[0].getNumberOfMolecularComponents(); i++) { + sum += nFlux.get(i, 0); + // System.out.println("n " + nFlux.get(i,0) ); } + + totalFlux = sum; // tot.get(0,0); + return nFlux.transpose().getArray()[0]; + } + + /** {@inheritDoc} */ + @Override + public void solve() { + int iterOuter = 0; + double totalFluxOld = totalFlux; + do { + iterOuter++; + totalFluxOld = totalFlux; + if (massTransferCalc) { + massTransSolve(); + } + + if (heatTransferCalc) { + // System.out.println("heat "); + this.heatTransSolve(); + } + // System.out.println("flux err: " + Math.abs(totalFluxOld-totalFlux)); + } while (Math.abs((totalFluxOld - totalFlux) / totalFlux) > 1e-10 && iterOuter < 55); + + // System.out.println("iterOuter " +iterOuter); + init(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/ReactiveKrishnaStandartFilmModel.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/ReactiveKrishnaStandartFilmModel.java index 51e2c1f20b..eee40422b8 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/ReactiveKrishnaStandartFilmModel.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/ReactiveKrishnaStandartFilmModel.java @@ -3,6 +3,7 @@ * * Created on 3. august 2001, 12:15 */ + package neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.reactiveFilmModel; import Jama.Matrix; @@ -21,74 +22,67 @@ * @version $Id: $Id */ public class ReactiveKrishnaStandartFilmModel extends KrishnaStandartFilmModel { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - int enhancementType = 1; + int enhancementType = 1; - /** - *

- * Constructor for ReactiveKrishnaStandartFilmModel. - *

- */ - public ReactiveKrishnaStandartFilmModel() {} + /** + *

+ * Constructor for ReactiveKrishnaStandartFilmModel. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public ReactiveKrishnaStandartFilmModel(SystemInterface system) { + super(system); + enhancementFactor = new EnhancementFactorAlg(this); + } - /** - *

- * Constructor for ReactiveKrishnaStandartFilmModel. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public ReactiveKrishnaStandartFilmModel(SystemInterface system) { - super(system); - enhancementFactor = new EnhancementFactorAlg(this); - } + /** + *

+ * Constructor for ReactiveKrishnaStandartFilmModel. + *

+ * + * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public ReactiveKrishnaStandartFilmModel(FlowNodeInterface flowNode) { + super(flowNode); + enhancementFactor = new EnhancementFactorAlg(this); + } - /** - *

- * Constructor for ReactiveKrishnaStandartFilmModel. - *

- * - * @param flowNode a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public ReactiveKrishnaStandartFilmModel(FlowNodeInterface flowNode) { - super(flowNode); - enhancementFactor = new EnhancementFactorAlg(this); - } + // public double calcBinaryMassTransferCoefficients(int phase){ + // super.calcBinaryMassTransferCoefficients(phase); + // enhancementFactor.calcEnhancementVec(phase); + // Matrix enhancementvec = new Matrix(enhancementFactor.getEnhancementVec(),1); + // //System.out.println("phase " + phase); + // //enhancementvec.print(10,10); + // for(int i=0;i - * Constructor for EnhancementFactor. - *

- */ - public EnhancementFactor() {} - - /** - *

- * Constructor for EnhancementFactor. - *

- * - * @param fluidBoundary a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} - * object - */ - public EnhancementFactor(FluidBoundaryInterface fluidBoundary) { - this(); - this.fluidBoundary = fluidBoundary; - enhancementVec = - new double[fluidBoundary.getBulkSystem().getPhases()[0].getNumberOfComponents()]; - hattaNumber = - new double[fluidBoundary.getBulkSystem().getPhases()[0].getNumberOfComponents()]; - } + protected double[] enhancementVec = null; + protected double[] hattaNumber = null; + protected FluidBoundaryInterface fluidBoundary; + protected FluidBoundarySystemInterface nonReactiveInterface, reactiveInterface; + + /** + *

+ * Constructor for EnhancementFactor. + *

+ */ + public EnhancementFactor() {} - /** - *

- * calcEnhancementVec. - *

- * - * @param phase a int - * @param enhancementType a int - */ - public void calcEnhancementVec(int phase, int enhancementType) { - if (phase == 1) { - this.calcEnhancementVec(phase); - } - if (phase == 0) { - this.setOnesVec(phase); - } + /** + *

+ * Constructor for EnhancementFactor. + *

+ * + * @param fluidBoundary a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} + * object + */ + public EnhancementFactor(FluidBoundaryInterface fluidBoundary) { + this(); + this.fluidBoundary = fluidBoundary; + enhancementVec = + new double[fluidBoundary.getBulkSystem().getPhases()[0].getNumberOfComponents()]; + hattaNumber = new double[fluidBoundary.getBulkSystem().getPhases()[0].getNumberOfComponents()]; + } + + /** + *

+ * calcEnhancementVec. + *

+ * + * @param phase a int + * @param enhancementType a int + */ + public void calcEnhancementVec(int phase, int enhancementType) { + if (phase == 1) { + this.calcEnhancementVec(phase); + } + if (phase == 0) { + this.setOnesVec(phase); } + } - /** - *

- * setOnesVec. - *

- * - * @param phase a int - */ - public void setOnesVec(int phase) { - for (int j = 0; j < fluidBoundary.getBulkSystem().getPhases()[phase] - .getNumberOfComponents(); j++) { - enhancementVec[j] = 1.0; - } + /** + *

+ * setOnesVec. + *

+ * + * @param phase a int + */ + public void setOnesVec(int phase) { + for (int j = 0; j < fluidBoundary.getBulkSystem().getPhases()[phase] + .getNumberOfComponents(); j++) { + enhancementVec[j] = 1.0; } + } - /** {@inheritDoc} */ - @Override - public void calcEnhancementVec(int phase) {} + /** {@inheritDoc} */ + @Override + public void calcEnhancementVec(int phase) {} - /** {@inheritDoc} */ - @Override - public double getEnhancementVec(int index) { - return enhancementVec[index]; - } + /** {@inheritDoc} */ + @Override + public double getEnhancementVec(int index) { + return enhancementVec[index]; + } - /** - * Getter for property enhancementVec. - * - * @return Value of property enhancementVec. - */ - public double[] getEnhancementVec() { - return enhancementVec; - } + /** + * Getter for property enhancementVec. + * + * @return Value of property enhancementVec. + */ + public double[] getEnhancementVec() { + return enhancementVec; + } - /** - * Indexed setter for property enhancementVec. - * - * @param index Index of the property. - * @param enhancementVec New value of the property at index. - */ - public void setEnhancementVec(int index, double enhancementVec) { - this.enhancementVec[index] = enhancementVec; - } + /** + * Indexed setter for property enhancementVec. + * + * @param index Index of the property. + * @param enhancementVec New value of the property at index. + */ + public void setEnhancementVec(int index, double enhancementVec) { + this.enhancementVec[index] = enhancementVec; + } - /** - * Setter for property enhancementVec. - * - * @param enhancementVec New value of property enhancementVec. - */ - public void setEnhancementVec(double[] enhancementVec) { - this.enhancementVec = enhancementVec; - } + /** + * Setter for property enhancementVec. + * + * @param enhancementVec New value of property enhancementVec. + */ + public void setEnhancementVec(double[] enhancementVec) { + this.enhancementVec = enhancementVec; + } - /** - * Getter for property hattaNumber. - * - * @return Value of property hattaNumber. - */ - public double[] getHattaNumber() { - return this.hattaNumber; - } + /** + * Getter for property hattaNumber. + * + * @return Value of property hattaNumber. + */ + public double[] getHattaNumber() { + return this.hattaNumber; + } - /** {@inheritDoc} */ - @Override - public double getHattaNumber(int i) { - return this.hattaNumber[i]; - } + /** {@inheritDoc} */ + @Override + public double getHattaNumber(int i) { + return this.hattaNumber[i]; + } - /** - * Setter for property hattaNumber. - * - * @param hattaNumber New value of property hattaNumber. - */ - public void setHattaNumber(double[] hattaNumber) { - this.hattaNumber = hattaNumber; - } + /** + * Setter for property hattaNumber. + * + * @param hattaNumber New value of property hattaNumber. + */ + public void setHattaNumber(double[] hattaNumber) { + this.hattaNumber = hattaNumber; + } - /* - * public FluidBoundarySystemInterface getNumericInterface(){ return numericInterface; } - */ + /* + * public FluidBoundarySystemInterface getNumericInterface(){ return numericInterface; } + */ } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorAlg.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorAlg.java index fe06f1a901..f05d19e668 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorAlg.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorAlg.java @@ -11,112 +11,110 @@ * @version $Id: $Id */ public class EnhancementFactorAlg extends EnhancementFactor { - /** - *

- * Constructor for EnhancementFactorAlg. - *

- */ - public EnhancementFactorAlg() { - super(); - } + /** + *

+ * Constructor for EnhancementFactorAlg. + *

+ */ + public EnhancementFactorAlg() { + super(); + } - /** - *

- * Constructor for EnhancementFactorAlg. - *

- * - * @param fluidBoundary a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} - * object - */ - public EnhancementFactorAlg(FluidBoundaryInterface fluidBoundary) { - super(fluidBoundary); - } + /** + *

+ * Constructor for EnhancementFactorAlg. + *

+ * + * @param fluidBoundary a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} + * object + */ + public EnhancementFactorAlg(FluidBoundaryInterface fluidBoundary) { + super(fluidBoundary); + } - /** {@inheritDoc} */ - @Override - public void calcEnhancementVec(int phase) { - double hatta = 0.0; - for (int j = 0; j < fluidBoundary.getBulkSystem().getPhases()[phase] - .getNumberOfComponents(); j++) { - if (fluidBoundary.getBulkSystem().getPhases()[phase].getComponent(j).getName() - .equals("CO2") && phase == 1) { - enhancementVec[j] = - fluidBoundary.getBulkSystem().getChemicalReactionOperations().solveKinetics( - phase, fluidBoundary.getInterphaseSystem().getPhase(phase), j); - // System.out.println("enh " + enhancementVec[j]); - hatta = Math - .sqrt(enhancementVec[j] * fluidBoundary.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getEffectiveDiffusionCoefficient(j)) - / fluidBoundary.getEffectiveMassTransferCoefficient(phase, j); - hattaNumber[j] = hatta; - // System.out.println("hatta " + hatta); - double phi = fluidBoundary.getBulkSystem().getChemicalReactionOperations() - .getKinetics().getPhiInfinite(); - // System.out.println("phi " + phi); - if (hatta > 2.0) { - enhancementVec[j] = - 1.0 + (phi - 1.0) * (1.0 - Math.exp(-(hatta - 1.0) / (phi - 1.0))); - } else { - enhancementVec[j] = 1.0 + (phi - 1.0) * (1.0 - Math.exp(-1.0 / (phi - 1.0))) - * Math.exp(1.0 - 2.0 / hatta); - } - // System.out.println("enh " +enhancementVec[j] ); - } else { - enhancementVec[j] = 1.0; - } + /** {@inheritDoc} */ + @Override + public void calcEnhancementVec(int phase) { + double hatta = 0.0; + for (int j = 0; j < fluidBoundary.getBulkSystem().getPhases()[phase] + .getNumberOfComponents(); j++) { + if (fluidBoundary.getBulkSystem().getPhases()[phase].getComponent(j).getName().equals("CO2") + && phase == 1) { + enhancementVec[j] = fluidBoundary.getBulkSystem().getChemicalReactionOperations() + .solveKinetics(phase, fluidBoundary.getInterphaseSystem().getPhase(phase), j); + // System.out.println("enh " + enhancementVec[j]); + hatta = Math + .sqrt(enhancementVec[j] * fluidBoundary.getBulkSystem().getPhases()[phase] + .getPhysicalProperties().getEffectiveDiffusionCoefficient(j)) + / fluidBoundary.getEffectiveMassTransferCoefficient(phase, j); + hattaNumber[j] = hatta; + // System.out.println("hatta " + hatta); + double phi = fluidBoundary.getBulkSystem().getChemicalReactionOperations().getKinetics() + .getPhiInfinite(); + // System.out.println("phi " + phi); + if (hatta > 2.0) { + enhancementVec[j] = 1.0 + (phi - 1.0) * (1.0 - Math.exp(-(hatta - 1.0) / (phi - 1.0))); + } else { + enhancementVec[j] = 1.0 + + (phi - 1.0) * (1.0 - Math.exp(-1.0 / (phi - 1.0))) * Math.exp(1.0 - 2.0 / hatta); } + // System.out.println("enh " +enhancementVec[j] ); + } else { + enhancementVec[j] = 1.0; + } } + } - // public void calcEnhancementMatrix(int phase){ - // double z=1; - // //fluidBoundary.getBulkSystem().getChemicalReactionOperations().solveKinetics(1); - // double[][] reacMatrix = - // fluidBoundary.getBulkSystem().getChemicalReactionOperations().getReactionList().getReacMatrix(); - // double[][] stocMatrix = - // fluidBoundary.getBulkSystem().getChemicalReactionOperations().getReactionList().getStocMatrix(); - // fluidBoundary.getBulkSystem().getPhases()[phase].getPhysicalProperties().calcEffectiveDiffusionCoefficients(); + // public void calcEnhancementMatrix(int phase){ + // double z=1; + // //fluidBoundary.getBulkSystem().getChemicalReactionOperations().solveKinetics(1); + // double[][] reacMatrix = + // fluidBoundary.getBulkSystem().getChemicalReactionOperations().getReactionList().getReacMatrix(); + // double[][] stocMatrix = + // fluidBoundary.getBulkSystem().getChemicalReactionOperations().getReactionList().getStocMatrix(); + // fluidBoundary.getBulkSystem().getPhases()[phase].getPhysicalProperties().calcEffectiveDiffusionCoefficients(); - // for(int - // i=0;i=2.0){ - // // Functions F = Functions.functions; - // cern.colt.function.DoubleFunction fun = cern.jet.math.Functions.tanh; - // double val = - // hattaNumber[phase].get(i,j)/fun.apply(hattaNumber[phase].get(i,j)); - // enhancementFactor[1].set(i,j, (1.0 + - // (phiVal-1.0)*(1.0-Math.exp(-(hattaNumber[phase].get(i,j)-1.0)/(phiVal-1.0))))); - // } - // else{ - // enhancementFactor[1].set(i,j, (1.0 + - // (phiVal-1.0)*(1.0-Math.exp(-1.0/(phiVal-1.0)))*Math.exp(1.0-2.0/hattaNumber[phase].get(i,j)))); - // } - // if(enhancementFactor[1].get(i,j)>1000) enhancementFactor[1].set(i,j,1000.0); - // System.out.println("enhance : " + enhancementFactor[1].get(i,j) + " phase " + - // phase); - // } - // } - // } - // } + // if(hattaNumber[phase].get(i,j)>=2.0){ + // // Functions F = Functions.functions; + // cern.colt.function.DoubleFunction fun = cern.jet.math.Functions.tanh; + // double val = + // hattaNumber[phase].get(i,j)/fun.apply(hattaNumber[phase].get(i,j)); + // enhancementFactor[1].set(i,j, (1.0 + + // (phiVal-1.0)*(1.0-Math.exp(-(hattaNumber[phase].get(i,j)-1.0)/(phiVal-1.0))))); + // } + // else{ + // enhancementFactor[1].set(i,j, (1.0 + + // (phiVal-1.0)*(1.0-Math.exp(-1.0/(phiVal-1.0)))*Math.exp(1.0-2.0/hattaNumber[phase].get(i,j)))); + // } + // if(enhancementFactor[1].get(i,j)>1000) enhancementFactor[1].set(i,j,1000.0); + // System.out.println("enhance : " + enhancementFactor[1].get(i,j) + " phase " + + // phase); + // } + // } + // } + // } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorInterface.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorInterface.java index 757422c359..3af9a0116d 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorInterface.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorInterface.java @@ -3,6 +3,7 @@ * * Created on 3. august 2001, 11:58 */ + package neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.reactiveFilmModel.enhancementFactor; /** @@ -14,32 +15,32 @@ * @version $Id: $Id */ public interface EnhancementFactorInterface { - /** - *

- * calcEnhancementVec. - *

- * - * @param phase a int - */ - public void calcEnhancementVec(int phase); + /** + *

+ * calcEnhancementVec. + *

+ * + * @param phase a int + */ + public void calcEnhancementVec(int phase); - /** - *

- * getEnhancementVec. - *

- * - * @param index a int - * @return a double - */ - public double getEnhancementVec(int index); + /** + *

+ * getEnhancementVec. + *

+ * + * @param index a int + * @return a double + */ + public double getEnhancementVec(int index); - /** - *

- * getHattaNumber. - *

- * - * @param i a int - * @return a double - */ - public double getHattaNumber(int i); + /** + *

+ * getHattaNumber. + *

+ * + * @param i a int + * @return a double + */ + public double getHattaNumber(int i); } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorNumeric.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorNumeric.java index 1b06d205dc..f954b752a4 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorNumeric.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/heatMassTransferCalc/nonEquilibriumFluidBoundary/filmModelBoundary/reactiveFilmModel/enhancementFactor/EnhancementFactorNumeric.java @@ -13,53 +13,53 @@ * @version $Id: $Id */ public class EnhancementFactorNumeric extends EnhancementFactor { - /** - *

- * Constructor for EnhancementFactorNumeric. - *

- */ - public EnhancementFactorNumeric() { - super(); - } + /** + *

+ * Constructor for EnhancementFactorNumeric. + *

+ */ + public EnhancementFactorNumeric() { + super(); + } - /** - *

- * Constructor for EnhancementFactorNumeric. - *

- * - * @param fluidBoundary a - * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} - * object - */ - public EnhancementFactorNumeric(FluidBoundaryInterface fluidBoundary) { - super(fluidBoundary); - // fluidBoundary.setNumericSolve(true); - reactiveInterface = new FluidBoundarySystemReactive(fluidBoundary); - nonReactiveInterface = new FluidBoundarySystemNonReactive(fluidBoundary); - reactiveInterface.createSystem(); - nonReactiveInterface.createSystem(); - // numericInterface.createSystem(); - } + /** + *

+ * Constructor for EnhancementFactorNumeric. + *

+ * + * @param fluidBoundary a + * {@link neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.FluidBoundaryInterface} + * object + */ + public EnhancementFactorNumeric(FluidBoundaryInterface fluidBoundary) { + super(fluidBoundary); + // fluidBoundary.setNumericSolve(true); + reactiveInterface = new FluidBoundarySystemReactive(fluidBoundary); + nonReactiveInterface = new FluidBoundarySystemNonReactive(fluidBoundary); + reactiveInterface.createSystem(); + nonReactiveInterface.createSystem(); + // numericInterface.createSystem(); + } - /** - *

- * calcEnhancementMatrix. - *

- * - * @param phase a int - */ - public void calcEnhancementMatrix(int phase) { - reactiveInterface.createSystem(); - nonReactiveInterface.createSystem(); - nonReactiveInterface.solve(); - reactiveInterface.solve(); - for (int i = 0; i < fluidBoundary.getBulkSystem().getPhases()[phase] - .getNumberOfComponents(); i++) { - for (int j = 0; j < fluidBoundary.getBulkSystem().getPhases()[phase] - .getNumberOfComponents(); j++) { - // enhancementFactor[1].set(i,j,0); - // System.out.println("num enhancement " + enhancementFactor[1].get(i,j)); - } - } + /** + *

+ * calcEnhancementMatrix. + *

+ * + * @param phase a int + */ + public void calcEnhancementMatrix(int phase) { + reactiveInterface.createSystem(); + nonReactiveInterface.createSystem(); + nonReactiveInterface.solve(); + reactiveInterface.solve(); + for (int i = 0; i < fluidBoundary.getBulkSystem().getPhases()[phase] + .getNumberOfComponents(); i++) { + for (int j = 0; j < fluidBoundary.getBulkSystem().getPhases()[phase] + .getNumberOfComponents(); j++) { + // enhancementFactor[1].set(i,j,0); + // System.out.println("num enhancement " + enhancementFactor[1].get(i,j)); + } } + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/InterphaseTransportCoefficientBaseClass.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/InterphaseTransportCoefficientBaseClass.java index 58aee1c021..07fae81837 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/InterphaseTransportCoefficientBaseClass.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/InterphaseTransportCoefficientBaseClass.java @@ -11,77 +11,78 @@ * @version $Id: $Id */ public class InterphaseTransportCoefficientBaseClass - implements InterphaseTransportCoefficientInterface { - public InterphaseTransportCoefficientBaseClass() {} + implements InterphaseTransportCoefficientInterface { + /** + *

Constructor for InterphaseTransportCoefficientBaseClass.

+ */ + public InterphaseTransportCoefficientBaseClass() {} - /** - *

- * Constructor for InterphaseTransportCoefficientBaseClass. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphaseTransportCoefficientBaseClass(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphaseTransportCoefficientBaseClass. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphaseTransportCoefficientBaseClass(FlowNodeInterface node) { + // flowNode = node; + } - /** {@inheritDoc} */ - @Override - public double calcWallFrictionFactor(FlowNodeInterface node) { - return calcWallFrictionFactor(0, node); - } + /** {@inheritDoc} */ + @Override + public double calcWallFrictionFactor(FlowNodeInterface node) { + return calcWallFrictionFactor(0, node); + } - /** {@inheritDoc} */ - @Override - public double calcWallFrictionFactor(int phase, FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber()) < 2000) { - return 64.0 / node.getReynoldsNumber(phase); - } else { - return Math.pow( - (1.0 / (-1.8 * Math.log10(6.9 / node.getReynoldsNumber(phase) - + Math.pow(node.getGeometry().getRelativeRoughnes() / 3.7, 1.11)))), - 2.0); - } + /** {@inheritDoc} */ + @Override + public double calcWallFrictionFactor(int phase, FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber()) < 2000) { + return 64.0 / node.getReynoldsNumber(phase); + } else { + return Math.pow((1.0 / (-1.8 * Math.log10(6.9 / node.getReynoldsNumber(phase) + + Math.pow(node.getGeometry().getRelativeRoughnes() / 3.7, 1.11)))), 2.0); } + } - /** {@inheritDoc} */ - @Override - public double calcInterPhaseFrictionFactor(int phase, FlowNodeInterface node) { - // TODO: Should calcWallFrictionFactor(phase, node be called below?) - return (1.0 + 75.0 * node.getPhaseFraction(1)) * calcWallFrictionFactor(0, node); - } + /** {@inheritDoc} */ + @Override + public double calcInterPhaseFrictionFactor(int phase, FlowNodeInterface node) { + // TODO: Should calcWallFrictionFactor(phase, node be called below?) + return (1.0 + 75.0 * node.getPhaseFraction(1)) * calcWallFrictionFactor(0, node); + } - /** {@inheritDoc} */ - @Override - public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - return 0; - } + /** {@inheritDoc} */ + @Override + public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + return 0; + } - /** {@inheritDoc} */ - @Override - public double calcWallHeatTransferCoefficient(int phase, FlowNodeInterface node) { - return this.calcWallHeatTransferCoefficient(phase, node.getPrandtlNumber(phase), node); - } + /** {@inheritDoc} */ + @Override + public double calcWallHeatTransferCoefficient(int phase, FlowNodeInterface node) { + return this.calcWallHeatTransferCoefficient(phase, node.getPrandtlNumber(phase), node); + } - /** {@inheritDoc} */ - @Override - public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, - FlowNodeInterface node) { - return 0; - } + /** {@inheritDoc} */ + @Override + public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, + FlowNodeInterface node) { + return 0; + } - /** {@inheritDoc} */ - @Override - public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - return 0; - } + /** {@inheritDoc} */ + @Override + public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + return 0; + } - /** {@inheritDoc} */ - @Override - public double calcInterphaseMassTransferCoefficient(int phase, double schmidt, - FlowNodeInterface node) { - return 0; - } + /** {@inheritDoc} */ + @Override + public double calcInterphaseMassTransferCoefficient(int phase, double schmidt, + FlowNodeInterface node) { + return 0; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/InterphaseTransportCoefficientInterface.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/InterphaseTransportCoefficientInterface.java index 43bff00a2d..8263ab3647 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/InterphaseTransportCoefficientInterface.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/InterphaseTransportCoefficientInterface.java @@ -11,98 +11,97 @@ * @version $Id: $Id */ public interface InterphaseTransportCoefficientInterface { - /** - *

- * calcWallFrictionFactor. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - * @return a double - */ - public double calcWallFrictionFactor(FlowNodeInterface node); + /** + *

+ * calcWallFrictionFactor. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + * @return a double + */ + public double calcWallFrictionFactor(FlowNodeInterface node); - /** - *

- * calcWallFrictionFactor. - *

- * - * @param phase a int - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - * @return a double - */ - public double calcWallFrictionFactor(int phase, FlowNodeInterface node); + /** + *

+ * calcWallFrictionFactor. + *

+ * + * @param phase a int + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + * @return a double + */ + public double calcWallFrictionFactor(int phase, FlowNodeInterface node); - /** - *

- * calcInterPhaseFrictionFactor. - *

- * - * @param phase a int - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - * @return a double - */ - public double calcInterPhaseFrictionFactor(int phase, FlowNodeInterface node); + /** + *

+ * calcInterPhaseFrictionFactor. + *

+ * + * @param phase a int + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + * @return a double + */ + public double calcInterPhaseFrictionFactor(int phase, FlowNodeInterface node); - /** - *

- * calcWallHeatTransferCoefficient. - *

- * - * @param phase a int - * @param prandtlNumber a double - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - * @return a double - */ - public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node); + /** + *

+ * calcInterphaseHeatTransferCoefficient. + *

+ * + * @param phase a int + * @param prandtlNumber a double + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + * @return a double + */ + public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node); - /** - *

- * calcWallMassTransferCoefficient. - *

- * - * @param phase a int - * @param schmidt a double - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - * @return a double - */ - public double calcWallMassTransferCoefficient(int phase, double schmidt, - FlowNodeInterface node); + /** + *

+ * calcInterphaseMassTransferCoefficient. + *

+ * + * @param phase a int + * @param schmidt a double + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + * @return a double + */ + public double calcInterphaseMassTransferCoefficient(int phase, double schmidt, + FlowNodeInterface node); - /** - *

- * calcInterphaseHeatTransferCoefficient. - *

- * - * @param phase a int - * @param prandtlNumber a double - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - * @return a double - */ - public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node); + /** + *

+ * calcWallMassTransferCoefficient. + *

+ * + * @param phase a int + * @param schmidt a double + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + * @return a double + */ + public double calcWallMassTransferCoefficient(int phase, double schmidt, FlowNodeInterface node); - /** - *

- * calcInterphaseMassTransferCoefficient. - *

- * - * @param phase a int - * @param schmidt a double - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - * @return a double - */ - public double calcInterphaseMassTransferCoefficient(int phase, double schmidt, - FlowNodeInterface node); + /** + *

+ * calcWallHeatTransferCoefficient. + *

+ * + * @param phase a int + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + * @return a double + */ + public double calcWallHeatTransferCoefficient(int phase, FlowNodeInterface node); - /** - *

- * calcWallHeatTransferCoefficient. - *

- * - * @param phase a int - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - * @return a double - */ - public double calcWallHeatTransferCoefficient(int phase, FlowNodeInterface node); + /** + *

+ * calcWallHeatTransferCoefficient. + *

+ * + * @param phase a int + * @param prandtlNumber a double + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + * @return a double + */ + public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node); } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseOnePhase/InterphaseOnePhase.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseOnePhase/InterphaseOnePhase.java index 5af699ba8c..b067734938 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseOnePhase/InterphaseOnePhase.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseOnePhase/InterphaseOnePhase.java @@ -12,16 +12,21 @@ * @version $Id: $Id */ public class InterphaseOnePhase extends InterphaseTransportCoefficientBaseClass { - public InterphaseOnePhase() {} + /** + *

+ * Constructor for InterphaseOnePhase. + *

+ */ + public InterphaseOnePhase() {} - /** - *

- * Constructor for InterphaseOnePhase. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphaseOnePhase(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphaseOnePhase. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphaseOnePhase(FlowNodeInterface node) { + // flowNode = node; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseOnePhase/interphasePipeFlow/InterphasePipeFlow.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseOnePhase/interphasePipeFlow/InterphasePipeFlow.java index 59ac6a798f..2280b24786 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseOnePhase/interphasePipeFlow/InterphasePipeFlow.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseOnePhase/interphasePipeFlow/InterphasePipeFlow.java @@ -12,70 +12,72 @@ * @version $Id: $Id */ public class InterphasePipeFlow extends InterphaseOnePhase { - public InterphasePipeFlow() {} + /** + *

+ * Constructor for InterphasePipeFlow. + *

+ */ + public InterphasePipeFlow() {} - /** - *

- * Constructor for InterphasePipeFlow. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphasePipeFlow(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphasePipeFlow. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphasePipeFlow(FlowNodeInterface node) { + // flowNode = node; + } - /** {@inheritDoc} */ - @Override - public double calcWallFrictionFactor(FlowNodeInterface node) { - return calcWallFrictionFactor(0, node); - } + /** {@inheritDoc} */ + @Override + public double calcWallFrictionFactor(FlowNodeInterface node) { + return calcWallFrictionFactor(0, node); + } - /** {@inheritDoc} */ - @Override - public double calcWallFrictionFactor(int phase, FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber()) < 2000) { - return 64.0 / node.getReynoldsNumber(phase); - } else { - return Math.pow( - (1.0 / (-1.8 * Math.log10(6.9 / node.getReynoldsNumber(phase) - + Math.pow(node.getGeometry().getRelativeRoughnes() / 3.7, 1.11)))), - 2.0); - } + /** {@inheritDoc} */ + @Override + public double calcWallFrictionFactor(int phase, FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber()) < 2000) { + return 64.0 / node.getReynoldsNumber(phase); + } else { + return Math.pow((1.0 / (-1.8 * Math.log10(6.9 / node.getReynoldsNumber(phase) + + Math.pow(node.getGeometry().getRelativeRoughnes() / 3.7, 1.11)))), 2.0); } + } - /** {@inheritDoc} */ - @Override - public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber()) < 2000) { - return 3.66 / node.getGeometry().getDiameter() * node.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getConductivity(); - } - // if turbulent - use chilton colburn analogy - else { - double temp = node.getBulkSystem().getPhases()[phase].getCp() - / node.getBulkSystem().getPhases()[phase].getMolarMass() - / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() - * node.getVelocity(); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(prandtlNumber, -2.0 / 3.0) * temp; - } + /** {@inheritDoc} */ + @Override + public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber()) < 2000) { + return 3.66 / node.getGeometry().getDiameter() + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); + } + // if turbulent - use chilton colburn analogy + else { + double temp = node.getBulkSystem().getPhases()[phase].getCp() + / node.getBulkSystem().getPhases()[phase].getMolarMass() + / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * node.getVelocity(); + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(prandtlNumber, -2.0 / 3.0) + * temp; } + } - /** {@inheritDoc} */ - @Override - public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, - FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber()) < 2000) { - return 3.66 / node.getGeometry().getDiameter() / schmidtNumber - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity(); - } else { - double temp = node.getVelocity(); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(schmidtNumber, -2.0 / 3.0) * temp; - } + /** {@inheritDoc} */ + @Override + public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, + FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber()) < 2000) { + return 3.66 / node.getGeometry().getDiameter() / schmidtNumber + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity(); + } else { + double temp = node.getVelocity(); + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(schmidtNumber, -2.0 / 3.0) + * temp; } + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/InterphaseTwoPhase.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/InterphaseTwoPhase.java index 208f80dd0c..09518c0905 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/InterphaseTwoPhase.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/InterphaseTwoPhase.java @@ -12,16 +12,21 @@ * @version $Id: $Id */ public class InterphaseTwoPhase extends InterphaseTransportCoefficientBaseClass { - public InterphaseTwoPhase() {} + /** + *

+ * Constructor for InterphaseTwoPhase. + *

+ */ + public InterphaseTwoPhase() {} - /** - *

- * Constructor for InterphaseTwoPhase. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphaseTwoPhase(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphaseTwoPhase. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphaseTwoPhase(FlowNodeInterface node) { + // flowNode = node; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseAnnularFlow.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseAnnularFlow.java index e5728af3ee..9e61a4cfed 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseAnnularFlow.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseAnnularFlow.java @@ -11,18 +11,23 @@ * @version $Id: $Id */ public class InterphaseAnnularFlow extends InterphaseStratifiedFlow { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public InterphaseAnnularFlow() {} + /** + *

+ * Constructor for InterphaseAnnularFlow. + *

+ */ + public InterphaseAnnularFlow() {} - /** - *

- * Constructor for InterphaseAnnularFlow. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphaseAnnularFlow(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphaseAnnularFlow. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphaseAnnularFlow(FlowNodeInterface node) { + // flowNode = node; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseDropletFlow.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseDropletFlow.java index bbc9752ddc..b4aa12cf86 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseDropletFlow.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseDropletFlow.java @@ -11,181 +11,175 @@ * @version $Id: $Id */ public class InterphaseDropletFlow extends InterphaseTwoPhasePipeFlow - implements neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; + implements neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; - public InterphaseDropletFlow() {} + /** + *

Constructor for InterphaseDropletFlow.

+ */ + public InterphaseDropletFlow() {} - /** - *

- * Constructor for InterphaseDropletFlow. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphaseDropletFlow(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphaseDropletFlow. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphaseDropletFlow(FlowNodeInterface node) { + // flowNode = node; + } - /** {@inheritDoc} */ - @Override - public double calcWallFrictionFactor(int phase, FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber(phase)) < 2000) { - return 64.0 / node.getReynoldsNumber(phase); - } else { - return Math.pow( - (1.0 / (-1.8 * Math.log10(6.9 / node.getReynoldsNumber(phase) - + Math.pow(node.getGeometry().getRelativeRoughnes() / 3.7, 1.11)))), - 2.0); - } + /** {@inheritDoc} */ + @Override + public double calcWallFrictionFactor(int phase, FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber(phase)) < 2000) { + return 64.0 / node.getReynoldsNumber(phase); + } else { + return Math.pow((1.0 / (-1.8 * Math.log10(6.9 / node.getReynoldsNumber(phase) + + Math.pow(node.getGeometry().getRelativeRoughnes() / 3.7, 1.11)))), 2.0); } + } - /** {@inheritDoc} */ - @Override - public double calcInterPhaseFrictionFactor(int phase, FlowNodeInterface node) { - // TODO: Should call calcWallFrictionFactor(phase)? Input phase is unused - return (1.0 + 75.0 * node.getPhaseFraction(1)) * calcWallFrictionFactor(0, node); - } + /** {@inheritDoc} */ + @Override + public double calcInterPhaseFrictionFactor(int phase, FlowNodeInterface node) { + // TODO: Should call calcWallFrictionFactor(phase)? Input phase is unused + return (1.0 + 75.0 * node.getPhaseFraction(1)) * calcWallFrictionFactor(0, node); + } - /** {@inheritDoc} */ - @Override - public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber(phase)) < 2000) { - return 3.66 / node.getHydraulicDiameter(phase) * node.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getConductivity(); - } - // if turbulent - use chilton colburn analogy - else { - double temp = node.getBulkSystem().getPhases()[phase].getCp() - / node.getBulkSystem().getPhases()[phase].getMolarMass() - / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() - * node.getVelocity(phase); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(prandtlNumber, -2.0 / 3.0) * temp; - } + /** {@inheritDoc} */ + @Override + public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber(phase)) < 2000) { + return 3.66 / node.getHydraulicDiameter(phase) + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); + } else { + // if turbulent - use chilton colburn analogy + double temp = node.getBulkSystem().getPhases()[phase].getCp() + / node.getBulkSystem().getPhases()[phase].getMolarMass() + / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * node.getVelocity(phase); + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(prandtlNumber, -2.0 / 3.0) + * temp; } + } - /** {@inheritDoc} */ - @Override - public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - // System.out.println("velocity " + node.getVelocity(phase)); - if (Math.abs(node.getReynoldsNumber()) < 2000) { - return 3.66 / node.getHydraulicDiameter(phase) * node.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getConductivity(); - } - // if turbulent - use chilton colburn analogy - else { - double temp = node.getBulkSystem().getPhases()[phase].getCp() - / node.getBulkSystem().getPhases()[phase].getMolarMass() - / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() - * node.getVelocity(phase); + /** {@inheritDoc} */ + @Override + public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + // System.out.println("velocity " + node.getVelocity(phase)); + if (Math.abs(node.getReynoldsNumber()) < 2000) { + return 3.66 / node.getHydraulicDiameter(phase) + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); + } else { + // if turbulent - use chilton colburn analogy + double temp = node.getBulkSystem().getPhases()[phase].getCp() + / node.getBulkSystem().getPhases()[phase].getMolarMass() + / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * node.getVelocity(phase); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(prandtlNumber, -2.0 / 3.0) * temp; - } + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(prandtlNumber, -2.0 / 3.0) + * temp; } + } - /** {@inheritDoc} */ - @Override - public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, - FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber()) < 2000) { - return 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity(); - } else { - double temp = node.getVelocity(phase); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(schmidtNumber, -2.0 / 3.0) * temp; - } + /** {@inheritDoc} */ + @Override + public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, + FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber()) < 2000) { + return 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity(); + } else { + double temp = node.getVelocity(phase); + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(schmidtNumber, -2.0 / 3.0) + * temp; } + } - /** {@inheritDoc} */ - @Override - public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, - FlowNodeInterface node) { - double redMassTrans = 0; - double massTrans = 0; - if (phase == 1) { - if (Math.abs(node.getReynoldsNumber(phase)) < 300) { - redMassTrans = 1.099e-2 * Math.pow(node.getReynoldsNumber(phase), 0.3955) - * Math.pow(schmidtNumber, 0.5); - } else if (Math.abs(node.getReynoldsNumber(phase)) < 1600) { - redMassTrans = 2.995e-2 * Math.pow(node.getReynoldsNumber(phase), 0.2134) - * Math.pow(schmidtNumber, 0.5); - } else { - redMassTrans = 9.777e-4 * Math.pow(node.getReynoldsNumber(phase), 0.6804) - * Math.pow(schmidtNumber, 0.5); - } - // System.out.println("redmass" + redMassTrans + " redmass " + - // redMassTrans/Math.sqrt(schmidtNumber) +" rey " + - // node.getReynoldsNumber(phase)/schmidtNumber); - // er usikker paa denne korreksjonen med 1e-2 - maa sjekkes opp mot artikkel av - // Yih og Chen (1982) - satser paa at de ga den med enhet cm/sek - massTrans = - redMassTrans - * Math.pow(Math - .pow(node.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getKinematicViscosity(), 2.0) - / gravity, -1.0 / 3.0) - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity() - / schmidtNumber; - } - if (phase == 0) { - if (Math.abs(node.getReynoldsNumber(phase)) < 2300) { - // System.out.println("schmidt " + schmidtNumber +" phase " + phase); - // System.out.println("hyd diam " + node.getHydraulicDiameter(phase) +" phase " - // + phase); - // System.out.println("kin visk " + - // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() - // +" phase " + phase); - // System.out.println("mas " +3.66 / node.getHydraulicDiameter(phase) / - // schmidtNumber * - // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() - // +" phase " + phase); - massTrans = 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity(); - } else { - double temp = node.getVelocity(phase); - // System.out.println("mass " + 1e-5* 0.5 * this.calcWallFrictionFactor(phase, - // node) * Math.pow(schmidtNumber, -2.0/3.0) * temp); - massTrans = 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(schmidtNumber, -2.0 / 3.0) * temp; - } - } - // System.out.println("mass "+ massTrans + " phase " + phase + " rey " + - // node.getReynoldsNumber(phase) + " COMP " + ); - return massTrans; + /** {@inheritDoc} */ + @Override + public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, + FlowNodeInterface node) { + double redMassTrans = 0; + double massTrans = 0; + if (phase == 1) { + if (Math.abs(node.getReynoldsNumber(phase)) < 300) { + redMassTrans = 1.099e-2 * Math.pow(node.getReynoldsNumber(phase), 0.3955) + * Math.pow(schmidtNumber, 0.5); + } else if (Math.abs(node.getReynoldsNumber(phase)) < 1600) { + redMassTrans = 2.995e-2 * Math.pow(node.getReynoldsNumber(phase), 0.2134) + * Math.pow(schmidtNumber, 0.5); + } else { + redMassTrans = 9.777e-4 * Math.pow(node.getReynoldsNumber(phase), 0.6804) + * Math.pow(schmidtNumber, 0.5); + } + // System.out.println("redmass" + redMassTrans + " redmass " + + // redMassTrans/Math.sqrt(schmidtNumber) +" rey " + + // node.getReynoldsNumber(phase)/schmidtNumber); + // er usikker paa denne korreksjonen med 1e-2 - maa sjekkes opp mot artikkel av + // Yih og Chen (1982) - satser paa at de ga den med enhet cm/sek + massTrans = redMassTrans + * Math.pow(Math.pow(node.getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getKinematicViscosity(), 2.0) / gravity, -1.0 / 3.0) + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + / schmidtNumber; + } + if (phase == 0) { + if (Math.abs(node.getReynoldsNumber(phase)) < 2300) { + // System.out.println("schmidt " + schmidtNumber +" phase " + phase); + // System.out.println("hyd diam " + node.getHydraulicDiameter(phase) +" phase " + // + phase); + // System.out.println("kin visk " + + // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + // +" phase " + phase); + // System.out.println("mas " +3.66 / node.getHydraulicDiameter(phase) / + // schmidtNumber * + // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + // +" phase " + phase); + massTrans = 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getKinematicViscosity(); + } else { + double temp = node.getVelocity(phase); + // System.out.println("mass " + 1e-5* 0.5 * this.calcWallFrictionFactor(phase, + // node) * Math.pow(schmidtNumber, -2.0/3.0) * temp); + massTrans = 0.5 * this.calcWallFrictionFactor(phase, node) + * Math.pow(schmidtNumber, -2.0 / 3.0) * temp; + } } + // System.out.println("mass "+ massTrans + " phase " + phase + " rey " + + // node.getReynoldsNumber(phase) + " COMP " + ); + return massTrans; + } - // public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, - // FlowNodeInterface node){ - // double redMassTrans=0.0, massTrans=0.0; - // double c2=0.181, c3=0.72, c4=0.33; - // if(phase==1){ - // redMassTrans = c2 * Math.pow(node.getReynoldsNumber(phase),c3) * Math.pow(schmidtNumber, c4); - // //System.out.println("red " + redMassTrans/Math.pow(node.getReynoldsNumber(phase),c3)); - // //System.out.println("sc " + schmidtNumber); - // massTrans = - // redMassTrans*node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() - // / schmidtNumber / node.getGeometry().getDiameter(); - // } - // if(phase==0){ - // //System.out.println("diff " + - // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() / - // schmidtNumber); + // public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, + // FlowNodeInterface node){ + // double redMassTrans=0.0, massTrans=0.0; + // double c2=0.181, c3=0.72, c4=0.33; + // if(phase==1){ + // redMassTrans = c2 * Math.pow(node.getReynoldsNumber(phase),c3) * Math.pow(schmidtNumber, c4); + // //System.out.println("red " + redMassTrans/Math.pow(node.getReynoldsNumber(phase),c3)); + // //System.out.println("sc " + schmidtNumber); + // massTrans = + // redMassTrans*node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + // / schmidtNumber / node.getGeometry().getDiameter(); + // } + // if(phase==0){ + // //System.out.println("diff " + + // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() / + // schmidtNumber); - // //massTrans = 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber * - // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity(); - // massTrans=0.010; - // } - // //System.out.println("mass trans " +massTrans + " phase " + phase); - // return massTrans; - // } + // //massTrans = 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber * + // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity(); + // massTrans=0.010; + // } + // //System.out.println("mass trans " +massTrans + " phase " + phase); + // return massTrans; + // } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseStratifiedFlow.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseStratifiedFlow.java index a8698d9968..49fd4f4cbf 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseStratifiedFlow.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseStratifiedFlow.java @@ -11,181 +11,176 @@ * @version $Id: $Id */ public class InterphaseStratifiedFlow extends InterphaseTwoPhasePipeFlow - implements neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; + implements neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; - public InterphaseStratifiedFlow() {} + /** + *

Constructor for InterphaseStratifiedFlow.

+ */ + public InterphaseStratifiedFlow() {} - /** - *

- * Constructor for InterphaseStratifiedFlow. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphaseStratifiedFlow(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphaseStratifiedFlow. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphaseStratifiedFlow(FlowNodeInterface node) { + // flowNode = node; + } - /** {@inheritDoc} */ - @Override - public double calcWallFrictionFactor(int phase, FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber(phase)) < 2000) { - return 64.0 / node.getReynoldsNumber(phase); - } else { - return Math.pow( - (1.0 / (-1.8 * Math.log10(6.9 / node.getReynoldsNumber(phase) - + Math.pow(node.getGeometry().getRelativeRoughnes() / 3.7, 1.11)))), - 2.0); - } + /** {@inheritDoc} */ + @Override + public double calcWallFrictionFactor(int phase, FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber(phase)) < 2000) { + return 64.0 / node.getReynoldsNumber(phase); + } else { + return Math.pow((1.0 / (-1.8 * Math.log10(6.9 / node.getReynoldsNumber(phase) + + Math.pow(node.getGeometry().getRelativeRoughnes() / 3.7, 1.11)))), 2.0); } + } - /** {@inheritDoc} */ - @Override - public double calcInterPhaseFrictionFactor(int phase, FlowNodeInterface node) { - // TODO: Should call calcWallFrictionFactor(phase)? Input phase is unused - return (1.0 + 75.0 * node.getPhaseFraction(1)) * calcWallFrictionFactor(0, node); - } + /** {@inheritDoc} */ + @Override + public double calcInterPhaseFrictionFactor(int phase, FlowNodeInterface node) { + // TODO: Should call calcWallFrictionFactor(phase)? Input phase is unused + return (1.0 + 75.0 * node.getPhaseFraction(1)) * calcWallFrictionFactor(0, node); + } - /** {@inheritDoc} */ - @Override - public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber(phase)) < 2000) { - return 3.66 / node.getHydraulicDiameter(phase) * node.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getConductivity(); - } - // if turbulent - use chilton colburn analogy - else { - double temp = node.getBulkSystem().getPhases()[phase].getCp() - / node.getBulkSystem().getPhases()[phase].getMolarMass() - / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() - * node.getVelocity(phase); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(prandtlNumber, -2.0 / 3.0) * temp; - } + /** {@inheritDoc} */ + @Override + public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber(phase)) < 2000) { + return 3.66 / node.getHydraulicDiameter(phase) + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); + } else { + // if turbulent - use chilton colburn analogy + + double temp = node.getBulkSystem().getPhases()[phase].getCp() + / node.getBulkSystem().getPhases()[phase].getMolarMass() + / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * node.getVelocity(phase); + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(prandtlNumber, -2.0 / 3.0) + * temp; } + } - /** {@inheritDoc} */ - @Override - public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - // System.out.println("velocity " + node.getVelocity(phase)); - if (Math.abs(node.getReynoldsNumber()) < 2000) { - return 3.66 / node.getHydraulicDiameter(phase) * node.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getConductivity(); - } - // if turbulent - use chilton colburn analogy - else { - double temp = node.getBulkSystem().getPhases()[phase].getCp() - / node.getBulkSystem().getPhases()[phase].getMolarMass() - / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() - * node.getVelocity(phase); + /** {@inheritDoc} */ + @Override + public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + // System.out.println("velocity " + node.getVelocity(phase)); + if (Math.abs(node.getReynoldsNumber()) < 2000) { + return 3.66 / node.getHydraulicDiameter(phase) + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); + } else { + // if turbulent - use chilton colburn analogy + double temp = node.getBulkSystem().getPhases()[phase].getCp() + / node.getBulkSystem().getPhases()[phase].getMolarMass() + / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * node.getVelocity(phase); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(prandtlNumber, -2.0 / 3.0) * temp; - } + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(prandtlNumber, -2.0 / 3.0) + * temp; } + } - /** {@inheritDoc} */ - @Override - public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, - FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber()) < 2000) { - return 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity(); - } else { - double temp = node.getVelocity(phase); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(schmidtNumber, -2.0 / 3.0) * temp; - } + /** {@inheritDoc} */ + @Override + public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, + FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber()) < 2000) { + return 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity(); + } else { + double temp = node.getVelocity(phase); + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(schmidtNumber, -2.0 / 3.0) + * temp; } + } - /** {@inheritDoc} */ - @Override - public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, - FlowNodeInterface node) { - double redMassTrans = 0; - double massTrans = 0; - if (phase == 1) { - if (Math.abs(node.getReynoldsNumber(phase)) < 300) { - redMassTrans = 1.099e-2 * Math.pow(node.getReynoldsNumber(phase), 0.3955) - * Math.pow(schmidtNumber, 0.5); - } else if (Math.abs(node.getReynoldsNumber(phase)) < 1600) { - redMassTrans = 2.995e-2 * Math.pow(node.getReynoldsNumber(phase), 0.2134) - * Math.pow(schmidtNumber, 0.5); - } else { - redMassTrans = 9.777e-4 * Math.pow(node.getReynoldsNumber(phase), 0.6804) - * Math.pow(schmidtNumber, 0.5); - } - // System.out.println("redmass" + redMassTrans + " redmass " + - // redMassTrans/Math.sqrt(schmidtNumber) +" rey " + - // node.getReynoldsNumber(phase)/schmidtNumber); - // er usikker paa denne korreksjonen med 1e-2 - maa sjekkes opp mot artikkel av - // Yih og Chen (1982) - satser paa at de ga den med enhet cm/sek - massTrans = - redMassTrans - * Math.pow(Math - .pow(node.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getKinematicViscosity(), 2.0) - / gravity, -1.0 / 3.0) - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity() - / schmidtNumber; - } - if (phase == 0) { - if (Math.abs(node.getReynoldsNumber(phase)) < 2300) { - // System.out.println("schmidt " + schmidtNumber +" phase " + phase); - // System.out.println("hyd diam " + node.getHydraulicDiameter(phase) +" phase " - // + phase); - // System.out.println("kin visk " + - // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() - // +" phase " + phase); - // System.out.println("mas " +3.66 / node.getHydraulicDiameter(phase) / - // schmidtNumber * - // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() - // +" phase " + phase); - massTrans = 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity(); - } else { - double temp = node.getVelocity(phase); - // System.out.println("mass " + 1e-5* 0.5 * this.calcWallFrictionFactor(phase, - // node) * Math.pow(schmidtNumber, -2.0/3.0) * temp); - massTrans = 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(schmidtNumber, -2.0 / 3.0) * temp; - } - } - // System.out.println("mass "+ massTrans + " phase " + phase + " rey " + - // node.getReynoldsNumber(phase) + " COMP " + ); - return massTrans; + /** {@inheritDoc} */ + @Override + public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, + FlowNodeInterface node) { + double redMassTrans = 0; + double massTrans = 0; + if (phase == 1) { + if (Math.abs(node.getReynoldsNumber(phase)) < 300) { + redMassTrans = 1.099e-2 * Math.pow(node.getReynoldsNumber(phase), 0.3955) + * Math.pow(schmidtNumber, 0.5); + } else if (Math.abs(node.getReynoldsNumber(phase)) < 1600) { + redMassTrans = 2.995e-2 * Math.pow(node.getReynoldsNumber(phase), 0.2134) + * Math.pow(schmidtNumber, 0.5); + } else { + redMassTrans = 9.777e-4 * Math.pow(node.getReynoldsNumber(phase), 0.6804) + * Math.pow(schmidtNumber, 0.5); + } + // System.out.println("redmass" + redMassTrans + " redmass " + + // redMassTrans/Math.sqrt(schmidtNumber) +" rey " + + // node.getReynoldsNumber(phase)/schmidtNumber); + // er usikker paa denne korreksjonen med 1e-2 - maa sjekkes opp mot artikkel av + // Yih og Chen (1982) - satser paa at de ga den med enhet cm/sek + massTrans = redMassTrans + * Math.pow(Math.pow(node.getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getKinematicViscosity(), 2.0) / gravity, -1.0 / 3.0) + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + / schmidtNumber; + } + if (phase == 0) { + if (Math.abs(node.getReynoldsNumber(phase)) < 2300) { + // System.out.println("schmidt " + schmidtNumber +" phase " + phase); + // System.out.println("hyd diam " + node.getHydraulicDiameter(phase) +" phase " + // + phase); + // System.out.println("kin visk " + + // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + // +" phase " + phase); + // System.out.println("mas " +3.66 / node.getHydraulicDiameter(phase) / + // schmidtNumber * + // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + // +" phase " + phase); + massTrans = 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getKinematicViscosity(); + } else { + double temp = node.getVelocity(phase); + // System.out.println("mass " + 1e-5* 0.5 * this.calcWallFrictionFactor(phase, + // node) * Math.pow(schmidtNumber, -2.0/3.0) * temp); + massTrans = 0.5 * this.calcWallFrictionFactor(phase, node) + * Math.pow(schmidtNumber, -2.0 / 3.0) * temp; + } } + // System.out.println("mass "+ massTrans + " phase " + phase + " rey " + + // node.getReynoldsNumber(phase) + " COMP " + ); + return massTrans; + } - // public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, - // FlowNodeInterface node){ - // double redMassTrans=0.0, massTrans=0.0; - // double c2=0.181, c3=0.72, c4=0.33; - // if(phase==1){ - // redMassTrans = c2 * Math.pow(node.getReynoldsNumber(phase),c3) * Math.pow(schmidtNumber, c4); - // //System.out.println("red " + redMassTrans/Math.pow(node.getReynoldsNumber(phase),c3)); - // //System.out.println("sc " + schmidtNumber); - // massTrans = - // redMassTrans*node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() - // / schmidtNumber / node.getGeometry().getDiameter(); - // } - // if(phase==0){ - // //System.out.println("diff " + - // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() / - // schmidtNumber); + // public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, + // FlowNodeInterface node){ + // double redMassTrans=0.0, massTrans=0.0; + // double c2=0.181, c3=0.72, c4=0.33; + // if(phase==1){ + // redMassTrans = c2 * Math.pow(node.getReynoldsNumber(phase),c3) * Math.pow(schmidtNumber, c4); + // //System.out.println("red " + redMassTrans/Math.pow(node.getReynoldsNumber(phase),c3)); + // //System.out.println("sc " + schmidtNumber); + // massTrans = + // redMassTrans*node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + // / schmidtNumber / node.getGeometry().getDiameter(); + // } + // if(phase==0){ + // //System.out.println("diff " + + // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() / + // schmidtNumber); - // //massTrans = 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber * - // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity(); - // massTrans=0.010; - // } - // //System.out.println("mass trans " +massTrans + " phase " + phase); - // return massTrans; - // } + // //massTrans = 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber * + // node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity(); + // massTrans=0.010; + // } + // //System.out.println("mass trans " +massTrans + " phase " + phase); + // return massTrans; + // } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseTwoPhasePipeFlow.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseTwoPhasePipeFlow.java index 5ad2fe9e45..f69f5205bf 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseTwoPhasePipeFlow.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphasePipeFlow/InterphaseTwoPhasePipeFlow.java @@ -12,16 +12,21 @@ * @version $Id: $Id */ public class InterphaseTwoPhasePipeFlow extends InterphaseTwoPhase { - public InterphaseTwoPhasePipeFlow() {} + /** + *

+ * Constructor for InterphaseTwoPhasePipeFlow. + *

+ */ + public InterphaseTwoPhasePipeFlow() {} - /** - *

- * Constructor for InterphaseTwoPhasePipeFlow. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphaseTwoPhasePipeFlow(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphaseTwoPhasePipeFlow. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphaseTwoPhasePipeFlow(FlowNodeInterface node) { + // flowNode = node; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphaseReactorFlow/InterphasePackedBed.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphaseReactorFlow/InterphasePackedBed.java index 6eabd54d83..07acd6cc4c 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphaseReactorFlow/InterphasePackedBed.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphaseReactorFlow/InterphasePackedBed.java @@ -11,86 +11,92 @@ * @version $Id: $Id */ public class InterphasePackedBed extends InterphaseReactorFlow - implements neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; + implements neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; - public InterphasePackedBed() {} + /** + *

+ * Constructor for InterphasePackedBed. + *

+ */ + public InterphasePackedBed() {} - /** - *

- * Constructor for InterphasePackedBed. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphasePackedBed(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphasePackedBed. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphasePackedBed(FlowNodeInterface node) { + // flowNode = node; + } - /** {@inheritDoc} */ - @Override - public double calcWallFrictionFactor(int phase, FlowNodeInterface node) { - System.out.println("no def"); - return 0; - } + /** {@inheritDoc} */ + @Override + public double calcWallFrictionFactor(int phase, FlowNodeInterface node) { + System.out.println("no def"); + return 0; + } - /** {@inheritDoc} */ - @Override - public double calcInterPhaseFrictionFactor(int phase, FlowNodeInterface node) { - System.out.println("no def"); - return 0; - } + /** {@inheritDoc} */ + @Override + public double calcInterPhaseFrictionFactor(int phase, FlowNodeInterface node) { + System.out.println("no def"); + return 0; + } - /** {@inheritDoc} */ - @Override - public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - System.out.println("no def"); - return 0; - } + /** {@inheritDoc} */ + @Override + public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + System.out.println("no def"); + return 0; + } - /** {@inheritDoc} */ - @Override - public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - return 100.1; - } + /** {@inheritDoc} */ + @Override + public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + return 100.1; + } - /** {@inheritDoc} */ - @Override - public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, - FlowNodeInterface node) { - System.out.println("no def"); - return 0; - } + /** {@inheritDoc} */ + @Override + public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, + FlowNodeInterface node) { + System.out.println("no def"); + return 0; + } - /** {@inheritDoc} */ - @Override - public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, - FlowNodeInterface node) { - double redMassTrans = 0; - double massTrans = 0; - if (phase == 1) { - // massTrans = 0.0002; - redMassTrans = 0.0051 * Math.pow(node.getReynoldsNumber(phase), 0.67) - * Math.pow(schmidtNumber, -0.5) - * Math.pow(node.getGeometry().getPacking().getSurfaceAreaPrVolume() - * node.getGeometry().getPacking().getSize(), 0.4); - massTrans = redMassTrans * Math.pow(node.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getKinematicViscosity() * gravity, 1.0 / 3.0); - System.out.println("mas trans liq " + massTrans); - } - if (phase == 0) { - redMassTrans = 3.6 * Math.pow(node.getReynoldsNumber(phase), 0.7) - * Math.pow(schmidtNumber, 0.33) - * Math.pow(node.getGeometry().getPacking().getSurfaceAreaPrVolume() - * node.getGeometry().getPacking().getSize(), -2.0); - massTrans = redMassTrans * node.getGeometry().getPacking().getSurfaceAreaPrVolume() - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity() - / schmidtNumber; - System.out.println("mas trans gas " + massTrans); - } - return massTrans; + /** {@inheritDoc} */ + @Override + public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, + FlowNodeInterface node) { + double redMassTrans = 0; + double massTrans = 0; + if (phase == 1) { + // massTrans = 0.0002; + redMassTrans = + 0.0051 * Math.pow(node.getReynoldsNumber(phase), 0.67) * Math.pow(schmidtNumber, -0.5) + * Math.pow(node.getGeometry().getPacking().getSurfaceAreaPrVolume() + * node.getGeometry().getPacking().getSize(), 0.4); + massTrans = redMassTrans * Math.pow( + node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + * gravity, + 1.0 / 3.0); + System.out.println("mas trans liq " + massTrans); + } + if (phase == 0) { + redMassTrans = + 3.6 * Math.pow(node.getReynoldsNumber(phase), 0.7) * Math.pow(schmidtNumber, 0.33) + * Math.pow(node.getGeometry().getPacking().getSurfaceAreaPrVolume() + * node.getGeometry().getPacking().getSize(), -2.0); + massTrans = redMassTrans * node.getGeometry().getPacking().getSurfaceAreaPrVolume() + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + / schmidtNumber; + System.out.println("mas trans gas " + massTrans); } + return massTrans; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphaseReactorFlow/InterphaseReactorFlow.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphaseReactorFlow/InterphaseReactorFlow.java index aba8667dcf..9798f71a1a 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphaseReactorFlow/InterphaseReactorFlow.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/interphaseReactorFlow/InterphaseReactorFlow.java @@ -12,16 +12,21 @@ * @version $Id: $Id */ public class InterphaseReactorFlow extends InterphaseTwoPhase { - public InterphaseReactorFlow() {} + /** + *

+ * Constructor for InterphaseReactorFlow. + *

+ */ + public InterphaseReactorFlow() {} - /** - *

- * Constructor for InterphaseReactorFlow. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphaseReactorFlow(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphaseReactorFlow. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphaseReactorFlow(FlowNodeInterface node) { + // flowNode = node; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/stirredCell/InterphaseStirredCellFlow.java b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/stirredCell/InterphaseStirredCellFlow.java index 2cd8fc530a..08a4eab6b7 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/stirredCell/InterphaseStirredCellFlow.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/fluidBoundary/interphaseTransportCoefficient/interphaseTwoPhase/stirredCell/InterphaseStirredCellFlow.java @@ -12,105 +12,104 @@ * @version $Id: $Id */ public class InterphaseStirredCellFlow extends InterphaseStratifiedFlow { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public InterphaseStirredCellFlow() {} + /** + *

+ * Constructor for InterphaseStirredCellFlow. + *

+ */ + public InterphaseStirredCellFlow() {} - /** - *

- * Constructor for InterphaseStirredCellFlow. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public InterphaseStirredCellFlow(FlowNodeInterface node) { - // flowNode = node; - } + /** + *

+ * Constructor for InterphaseStirredCellFlow. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public InterphaseStirredCellFlow(FlowNodeInterface node) { + // flowNode = node; + } - /** {@inheritDoc} */ - @Override - public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber(phase)) < 2000) { - return 3.66 / node.getHydraulicDiameter(phase) * node.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getConductivity(); - } - // if turbulent - use chilton colburn analogy - else { - double temp = node.getBulkSystem().getPhases()[phase].getCp() - / node.getBulkSystem().getPhases()[phase].getMolarMass() - / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() - * node.getVelocity(phase); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(prandtlNumber, -2.0 / 3.0) * temp; - } + /** {@inheritDoc} */ + @Override + public double calcWallHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber(phase)) < 2000) { + return 3.66 / node.getHydraulicDiameter(phase) + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); + } else { + // if turbulent - use chilton colburn analogy + double temp = node.getBulkSystem().getPhases()[phase].getCp() + / node.getBulkSystem().getPhases()[phase].getMolarMass() + / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * node.getVelocity(phase); + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(prandtlNumber, -2.0 / 3.0) + * temp; } + } - /** {@inheritDoc} */ - @Override - public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, - FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber()) < 2000) { - return 3.66 / node.getHydraulicDiameter(phase) * node.getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getConductivity(); - } - // if turbulent - use chilton colburn analogy - else { - double temp = node.getBulkSystem().getPhases()[phase].getCp() - / node.getBulkSystem().getPhases()[phase].getMolarMass() - / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() - * node.getVelocity(phase); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(prandtlNumber, -2.0 / 3.0) * temp; - } + /** {@inheritDoc} */ + @Override + public double calcInterphaseHeatTransferCoefficient(int phase, double prandtlNumber, + FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber()) < 2000) { + return 3.66 / node.getHydraulicDiameter(phase) + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getConductivity(); + } + // if turbulent - use chilton colburn analogy + else { + double temp = node.getBulkSystem().getPhases()[phase].getCp() + / node.getBulkSystem().getPhases()[phase].getMolarMass() + / node.getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * node.getVelocity(phase); + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(prandtlNumber, -2.0 / 3.0) + * temp; } + } - /** {@inheritDoc} */ - @Override - public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, - FlowNodeInterface node) { - if (Math.abs(node.getReynoldsNumber()) < 2000) { - return 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity(); - } else { - double temp = node.getVelocity(phase); - return 0.5 * this.calcWallFrictionFactor(phase, node) - * Math.pow(schmidtNumber, -2.0 / 3.0) * temp; - } + /** {@inheritDoc} */ + @Override + public double calcWallMassTransferCoefficient(int phase, double schmidtNumber, + FlowNodeInterface node) { + if (Math.abs(node.getReynoldsNumber()) < 2000) { + return 3.66 / node.getHydraulicDiameter(phase) / schmidtNumber + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity(); + } else { + double temp = node.getVelocity(phase); + return 0.5 * this.calcWallFrictionFactor(phase, node) * Math.pow(schmidtNumber, -2.0 / 3.0) + * temp; } + } - /** {@inheritDoc} */ - @Override - public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, - FlowNodeInterface node) { - double redMassTrans = 0.0, massTrans = 0.0; - if (phase == 0) { - double c2 = 0.46, c3 = 0.68, c4 = 0.5; - redMassTrans = - c2 * Math.pow(node.getReynoldsNumber(phase), c3) * Math.pow(schmidtNumber, c4); - // System.out.println("red gas " + - // redMassTrans/Math.pow(node.getReynoldsNumber(phase),c3)); - // System.out.println("sc gas " + schmidtNumber); - massTrans = redMassTrans - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity() - / schmidtNumber / node.getGeometry().getDiameter(); - } - if (phase == 1) { - double c2 = 0.181, c3 = 0.72, c4 = 0.33; - redMassTrans = - c2 * Math.pow(node.getReynoldsNumber(phase), c3) * Math.pow(schmidtNumber, c4); - // System.out.println("red liq" + - // redMassTrans/Math.pow(node.getReynoldsNumber(phase),c3)); - // System.out.println("sc liq " + schmidtNumber); - massTrans = redMassTrans - * node.getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getKinematicViscosity() - / schmidtNumber / node.getGeometry().getDiameter(); - } - return massTrans; + /** {@inheritDoc} */ + @Override + public double calcInterphaseMassTransferCoefficient(int phase, double schmidtNumber, + FlowNodeInterface node) { + double redMassTrans = 0.0, massTrans = 0.0; + if (phase == 0) { + double c2 = 0.46, c3 = 0.68, c4 = 0.5; + redMassTrans = c2 * Math.pow(node.getReynoldsNumber(phase), c3) * Math.pow(schmidtNumber, c4); + // System.out.println("red gas " + + // redMassTrans/Math.pow(node.getReynoldsNumber(phase),c3)); + // System.out.println("sc gas " + schmidtNumber); + massTrans = redMassTrans + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + / schmidtNumber / node.getGeometry().getDiameter(); + } + if (phase == 1) { + double c2 = 0.181, c3 = 0.72, c4 = 0.33; + redMassTrans = c2 * Math.pow(node.getReynoldsNumber(phase), c3) * Math.pow(schmidtNumber, c4); + // System.out.println("red liq" + + // redMassTrans/Math.pow(node.getReynoldsNumber(phase),c3)); + // System.out.println("sc liq " + schmidtNumber); + massTrans = redMassTrans + * node.getBulkSystem().getPhases()[phase].getPhysicalProperties().getKinematicViscosity() + / schmidtNumber / node.getGeometry().getDiameter(); } + return massTrans; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/multiPhaseNode/MultiPhaseFlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/multiPhaseNode/MultiPhaseFlowNode.java index 99b4c297b0..c7271147e4 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/multiPhaseNode/MultiPhaseFlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/multiPhaseNode/MultiPhaseFlowNode.java @@ -14,345 +14,344 @@ * @version $Id: $Id */ public abstract class MultiPhaseFlowNode extends FlowNode { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for MultiPhaseFlowNode. - *

- */ - public MultiPhaseFlowNode() {} - - /** - *

- * Constructor for MultiPhaseFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public MultiPhaseFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - - getBulkSystem().initBeta(); - getBulkSystem().init_x_y(); + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for MultiPhaseFlowNode. + *

+ */ + public MultiPhaseFlowNode() {} + + /** + *

+ * Constructor for MultiPhaseFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public MultiPhaseFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + + getBulkSystem().initBeta(); + getBulkSystem().init_x_y(); + } + + /** {@inheritDoc} */ + @Override + public TwoPhaseFlowNode clone() { + TwoPhaseFlowNode clonedSystem = null; + try { + clonedSystem = (TwoPhaseFlowNode) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public TwoPhaseFlowNode clone() { - TwoPhaseFlowNode clonedSystem = null; - try { - clonedSystem = (TwoPhaseFlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); + return clonedSystem; + } + + /** + *

+ * initVelocity. + *

+ * + * @return a double + */ + public double initVelocity() { + getBulkSystem().init(1); + getBulkSystem().initPhysicalProperties(); + molarFlowRate[1] = getBulkSystem().getPhases()[1].getNumberOfMolesInPhase(); + molarFlowRate[0] = getBulkSystem().getPhases()[0].getNumberOfMolesInPhase(); + massFlowRate[1] = molarFlowRate[1] * getBulkSystem().getPhases()[1].getMolarMass(); + massFlowRate[0] = molarFlowRate[0] * getBulkSystem().getPhases()[0].getMolarMass(); + volumetricFlowRate[0] = + massFlowRate[0] / getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity(); + volumetricFlowRate[1] = + massFlowRate[1] / getBulkSystem().getPhases()[1].getPhysicalProperties().getDensity(); + velocity[0] = volumetricFlowRate[0] / (phaseFraction[0] * pipe.getArea()); + velocity[1] = volumetricFlowRate[1] / (phaseFraction[1] * pipe.getArea()); + return velocity[1]; + } + + /** {@inheritDoc} */ + @Override + public void initFlowCalc() { + this.init(); + initVelocity(); + + phaseFraction[0] = 1.0 - 1.0e-10; + phaseFraction[1] = 1.0 - phaseFraction[0]; + double f = 0; + double fOld = 0; + double betaOld = 0; + int iterations = 0; + double step = 100.0; + + // double df + + do { + iterations++; + fOld = f; + + initVelocity(); + init(); + + double Fg = 0.5 * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + * wallFrictionFactor[0] * Math.pow(velocity[0], 2.0) * wallContactLength[0] + / (pipe.getArea() * 4.0); + double Fl = 0.5 * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + * wallFrictionFactor[1] * Math.pow(velocity[1], 2.0) * wallContactLength[1] + / (pipe.getArea() * 4.0); + double Fi = 0.5 * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + * interphaseFrictionFactor[0] * Math.pow(velocity[0] - velocity[1], 2.0) + * interphaseContactLength[0] / (pipe.getArea() * 4.0); + + f = -phaseFraction[0] * Fl + (1 - phaseFraction[0]) * Fg + Fi + + (1.0 - phaseFraction[0]) * phaseFraction[0] + * (bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + - bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) + * gravity * inclination; + /* + * df = -Fl - Fg + (bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - + * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) gravity * inclination - + * Math.pow(phaseFraction[0], 2.0) * (bulkSystem.getPhases()[1] + * .getPhysicalProperties().getDensity() - + * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) gravity * inclination; + */ + + if (f > 0) { + phaseFraction[0] += (betaOld - phaseFraction[0]); + if (fOld < 0) { + step *= 5.0; } - - return clonedSystem; + } else { + betaOld = phaseFraction[0]; + phaseFraction[0] -= phaseFraction[0] / step; + } + phaseFraction[1] = 1.0 - phaseFraction[0]; + } while (Math.abs(f) > 1e-2 && iterations < 100); + // while(Math.abs((f-fOld)/f)>1e-8 && iterations<10000); + + if (iterations == 100) { + System.out.println("error in void init calc"); } - - /** - *

- * initVelocity. - *

- * - * @return a double - */ - public double initVelocity() { - getBulkSystem().init(1); - getBulkSystem().initPhysicalProperties(); - molarFlowRate[1] = getBulkSystem().getPhases()[1].getNumberOfMolesInPhase(); - molarFlowRate[0] = getBulkSystem().getPhases()[0].getNumberOfMolesInPhase(); - massFlowRate[1] = molarFlowRate[1] * getBulkSystem().getPhases()[1].getMolarMass(); - massFlowRate[0] = molarFlowRate[0] * getBulkSystem().getPhases()[0].getMolarMass(); - volumetricFlowRate[0] = massFlowRate[0] - / getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity(); - volumetricFlowRate[1] = massFlowRate[1] - / getBulkSystem().getPhases()[1].getPhysicalProperties().getDensity(); - velocity[0] = volumetricFlowRate[0] / (phaseFraction[0] * pipe.getArea()); - velocity[1] = volumetricFlowRate[1] / (phaseFraction[1] * pipe.getArea()); - return velocity[1]; + this.init(); + } + + /** + *

+ * calcHydraulicDiameter. + *

+ * + * @return a double + */ + public double calcHydraulicDiameter() { + hydraulicDiameter[0] = 4.0 * phaseFraction[0] * pipe.getArea() + / (wallContactLength[0] + interphaseContactLength[0]); + hydraulicDiameter[1] = 4.0 * phaseFraction[1] * pipe.getArea() / wallContactLength[1]; + return hydraulicDiameter[0]; + } + + /** + *

+ * calcReynoldNumber. + *

+ * + * @return a double + */ + public double calcReynoldNumber() { + reynoldsNumber[1] = velocity[1] * hydraulicDiameter[1] + * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[1].getPhysicalProperties().getViscosity(); + reynoldsNumber[0] = velocity[0] * hydraulicDiameter[0] + * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[0].getPhysicalProperties().getViscosity(); + return reynoldsNumber[1]; + } + + /** + *

+ * calcWallFrictionFactor. + *

+ * + * @return a double + */ + public double calcWallFrictionFactor() { + for (int i = 0; i < 2; i++) { + wallFrictionFactor[i] = Math.pow( + (1.0 / (-1.8 * Math.log10(6.9 / getReynoldsNumber(i) + * Math.pow(pipe.getRelativeRoughnes(this.getHydraulicDiameter(i)) / 3.7, 1.11)))), + 2.0); } - - /** {@inheritDoc} */ - @Override - public void initFlowCalc() { - this.init(); - initVelocity(); - - phaseFraction[0] = 1.0 - 1.0e-10; - phaseFraction[1] = 1.0 - phaseFraction[0]; - double f = 0, fOld = 0, betaOld = 0; - int iterations = 0; - double step = 100.0; - - // double df - - do { - iterations++; - fOld = f; - - initVelocity(); - init(); - - double Fg = 0.5 * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - * wallFrictionFactor[0] * Math.pow(velocity[0], 2.0) * wallContactLength[0] - / (pipe.getArea() * 4.0); - double Fl = 0.5 * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - * wallFrictionFactor[1] * Math.pow(velocity[1], 2.0) * wallContactLength[1] - / (pipe.getArea() * 4.0); - double Fi = 0.5 * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - * interphaseFrictionFactor[0] * Math.pow(velocity[0] - velocity[1], 2.0) - * interphaseContactLength[0] / (pipe.getArea() * 4.0); - - f = -phaseFraction[0] * Fl + (1 - phaseFraction[0]) * Fg + Fi + (1.0 - phaseFraction[0]) - * phaseFraction[0] - * (bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - - bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) - * gravity * inclination; - /* - * df = -Fl - Fg + (bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - - * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) gravity * inclination - * - Math.pow(phaseFraction[0], 2.0) * (bulkSystem.getPhases()[1] - * .getPhysicalProperties().getDensity() - - * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) gravity * - * inclination; - */ - - if (f > 0) { - phaseFraction[0] += (betaOld - phaseFraction[0]); - if (fOld < 0) { - step *= 5.0; - } - } else { - betaOld = phaseFraction[0]; - phaseFraction[0] -= phaseFraction[0] / step; - } - phaseFraction[1] = 1.0 - phaseFraction[0]; - } while (Math.abs(f) > 1e-2 && iterations < 100); - // while(Math.abs((f-fOld)/f)>1e-8 && iterations<10000); - - if (iterations == 100) { - System.out.println("error in void init calc"); - } - this.init(); + return wallFrictionFactor[0]; + } + + /** {@inheritDoc} */ + @Override + public void setFluxes(double[] dn) { + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + getBulkSystem().getPhases()[0].addMoles(i, -dn[i]); + getBulkSystem().getPhases()[1].addMoles(i, +dn[i]); + + getInterphaseSystem().getPhases()[0].addMoles(i, -dn[i]); + getInterphaseSystem().getPhases()[1].addMoles(i, +dn[i]); } - - /** - *

- * calcHydraulicDiameter. - *

- * - * @return a double - */ - public double calcHydraulicDiameter() { - hydraulicDiameter[0] = 4.0 * phaseFraction[0] * pipe.getArea() - / (wallContactLength[0] + interphaseContactLength[0]); - hydraulicDiameter[1] = 4.0 * phaseFraction[1] * pipe.getArea() / wallContactLength[1]; - return hydraulicDiameter[0]; + } + + /** {@inheritDoc} */ + @Override + public void updateMolarFlow() { + for (int phase = 0; phase < 2; phase++) { + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + getBulkSystem().getPhases()[phase].addMoles(i, + (getBulkSystem().getPhases()[phase].getComponents()[i].getx() * (molarFlowRate[phase] + - getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase()))); + } } - - /** - *

- * calcReynoldNumber. - *

- * - * @return a double - */ - public double calcReynoldNumber() { - reynoldsNumber[1] = velocity[1] * hydraulicDiameter[1] - * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[1].getPhysicalProperties().getViscosity(); - reynoldsNumber[0] = velocity[0] * hydraulicDiameter[0] - * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[0].getPhysicalProperties().getViscosity(); - return reynoldsNumber[1]; + getBulkSystem().init(1); + } + + /** + *

+ * calcContactLength. + *

+ * + * @return a double + */ + public double calcContactLength() { + return 0; + } + + /** {@inheritDoc} */ + @Override + public void init() { + super.init(); + massFlowRate[0] = + velocity[0] * getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity() + * pipe.getArea() * phaseFraction[0]; + massFlowRate[1] = + velocity[1] * getBulkSystem().getPhases()[1].getPhysicalProperties().getDensity() + * pipe.getArea() * phaseFraction[1]; + molarFlowRate[0] = massFlowRate[0] / getBulkSystem().getPhases()[0].getMolarMass(); + molarFlowRate[1] = massFlowRate[1] / getBulkSystem().getPhases()[1].getMolarMass(); + superficialVelocity[0] = velocity[0] * phaseFraction[0]; + superficialVelocity[1] = velocity[1] * phaseFraction[1]; + volumetricFlowRate[0] = superficialVelocity[0] * pipe.getArea(); + volumetricFlowRate[1] = superficialVelocity[1] * pipe.getArea(); + this.updateMolarFlow(); + + this.calcHydraulicDiameter(); + this.calcReynoldNumber(); + interphaseContactArea = this.calcGasLiquidContactArea(); + + wallFrictionFactor[0] = interphaseTransportCoefficient.calcWallFrictionFactor(0, this); + wallFrictionFactor[1] = interphaseTransportCoefficient.calcWallFrictionFactor(1, this); + + interphaseFrictionFactor[0] = + interphaseTransportCoefficient.calcInterPhaseFrictionFactor(0, this); + interphaseFrictionFactor[1] = + interphaseTransportCoefficient.calcInterPhaseFrictionFactor(0, this); + } + + /** + *

+ * calcGasLiquidContactArea. + *

+ * + * @return a double + */ + public double calcGasLiquidContactArea() { + interphaseContactArea = pipe.getNodeLength() * interphaseContactLength[0]; + return interphaseContactArea; + } + + /** {@inheritDoc} */ + @Override + public void calcFluxes() { + if (bulkSystem.isChemicalSystem()) { + // getBulkSystem().getChemicalReactionOperations().setSystem(getBulkSystem()); + // getOperations().chemicalEquilibrium(); } - - /** - *

- * calcWallFrictionFactor. - *

- * - * @return a double - */ - public double calcWallFrictionFactor() { - for (int i = 0; i < 2; i++) { - wallFrictionFactor[i] = Math.pow( - (1.0 / (-1.8 * Math.log10(6.9 / getReynoldsNumber(i) * Math.pow( - pipe.getRelativeRoughnes(this.getHydraulicDiameter(i)) / 3.7, 1.11)))), - 2.0); - } - return wallFrictionFactor[0]; - } - - /** {@inheritDoc} */ - @Override - public void setFluxes(double dn[]) { - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - getBulkSystem().getPhases()[0].addMoles(i, -dn[i]); - getBulkSystem().getPhases()[1].addMoles(i, +dn[i]); - - getInterphaseSystem().getPhases()[0].addMoles(i, -dn[i]); - getInterphaseSystem().getPhases()[1].addMoles(i, +dn[i]); - } - } - - /** {@inheritDoc} */ - @Override - public void updateMolarFlow() { - for (int phase = 0; phase < 2; phase++) { - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - getBulkSystem().getPhases()[phase].addMoles(i, - (getBulkSystem().getPhases()[phase].getComponents()[i].getx() - * (molarFlowRate[phase] - getBulkSystem().getPhases()[phase] - .getNumberOfMolesInPhase()))); - } - } - getBulkSystem().init(1); - } - - /** - *

- * calcContactLength. - *

- * - * @return a double - */ - public double calcContactLength() { - return 0; - } - - /** {@inheritDoc} */ - @Override - public void init() { - super.init(); - massFlowRate[0] = - velocity[0] * getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity() - * pipe.getArea() * phaseFraction[0]; - massFlowRate[1] = - velocity[1] * getBulkSystem().getPhases()[1].getPhysicalProperties().getDensity() - * pipe.getArea() * phaseFraction[1]; - molarFlowRate[0] = massFlowRate[0] / getBulkSystem().getPhases()[0].getMolarMass(); - molarFlowRate[1] = massFlowRate[1] / getBulkSystem().getPhases()[1].getMolarMass(); - superficialVelocity[0] = velocity[0] * phaseFraction[0]; - superficialVelocity[1] = velocity[1] * phaseFraction[1]; - volumetricFlowRate[0] = superficialVelocity[0] * pipe.getArea(); - volumetricFlowRate[1] = superficialVelocity[1] * pipe.getArea(); - this.updateMolarFlow(); - - this.calcHydraulicDiameter(); - this.calcReynoldNumber(); - interphaseContactArea = this.calcGasLiquidContactArea(); - - wallFrictionFactor[0] = interphaseTransportCoefficient.calcWallFrictionFactor(0, this); - wallFrictionFactor[1] = interphaseTransportCoefficient.calcWallFrictionFactor(1, this); - - interphaseFrictionFactor[0] = - interphaseTransportCoefficient.calcInterPhaseFrictionFactor(0, this); - interphaseFrictionFactor[1] = - interphaseTransportCoefficient.calcInterPhaseFrictionFactor(0, this); - } - - /** - *

- * calcGasLiquidContactArea. - *

- * - * @return a double - */ - public double calcGasLiquidContactArea() { - interphaseContactArea = pipe.getNodeLength() * interphaseContactLength[0]; - return interphaseContactArea; - } - - /** {@inheritDoc} */ - @Override - public void calcFluxes() { - if (bulkSystem.isChemicalSystem()) { - // getBulkSystem().getChemicalReactionOperations().setSystem(getBulkSystem()); - // getOperations().chemicalEquilibrium(); - } - fluidBoundary.solve(); - fluidBoundary.calcFluxes(); - } - - /** {@inheritDoc} */ - @Override - public void update() { - double heatFluxGas = getFluidBoundary().getInterphaseHeatFlux(0);// getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(0, - // getPrandtlNumber(0), - // this) * - // (getInterphaseSystem().getPhase(0).getTemperature() - // - - // getBulkSystem().getPhase(0).getTemperature()) - // * - // getInterphaseContactArea(); - - double heatFluxLiquid = getFluidBoundary().getInterphaseHeatFlux(1);// getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(1, - // getPrandtlNumber(1), - // this) * - // (getInterphaseSystem().getPhase(1).getTemperature() - // - - // getBulkSystem().getPhase(1).getTemperature()) - // * - // getInterphaseContactArea(); - - double liquid_dT = this.flowDirection[1] * heatFluxLiquid * getGeometry().getNodeLength() - / getVelocity(1) / getBulkSystem().getPhase(1).getCp(); - double gas_dT = this.flowDirection[0] * heatFluxGas * getGeometry().getNodeLength() - / getVelocity(0) / getBulkSystem().getPhase(0).getCp(); - liquid_dT -= getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(1, this) - * (getBulkSystem().getPhase(1).getTemperature() - pipe.getInnerWallTemperature()) - * getWallContactLength(1) * getGeometry().getNodeLength() - / getBulkSystem().getPhase(1).getCp(); - gas_dT -= getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, this) + fluidBoundary.solve(); + fluidBoundary.calcFluxes(); + } + + /** {@inheritDoc} */ + @Override + public void update() { + double heatFluxGas = getFluidBoundary().getInterphaseHeatFlux(0); + // getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(0, + // getPrandtlNumber(0), + // this) * + // (getInterphaseSystem().getPhase(0).getTemperature() + // - + // getBulkSystem().getPhase(0).getTemperature()) + // * + // getInterphaseContactArea(); + + double heatFluxLiquid = getFluidBoundary().getInterphaseHeatFlux(1); + // getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(1, + // getPrandtlNumber(1), + // this) * + // (getInterphaseSystem().getPhase(1).getTemperature() + // - + // getBulkSystem().getPhase(1).getTemperature()) + // * + // getInterphaseContactArea(); + + double liquid_dT = this.flowDirection[1] * heatFluxLiquid * getGeometry().getNodeLength() + / getVelocity(1) / getBulkSystem().getPhase(1).getCp(); + double gas_dT = this.flowDirection[0] * heatFluxGas * getGeometry().getNodeLength() + / getVelocity(0) / getBulkSystem().getPhase(0).getCp(); + liquid_dT -= getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(1, this) + * (getBulkSystem().getPhase(1).getTemperature() - pipe.getInnerWallTemperature()) + * getWallContactLength(1) * getGeometry().getNodeLength() + / getBulkSystem().getPhase(1).getCp(); + gas_dT -= getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, this) + * (getBulkSystem().getPhase(0).getTemperature() - pipe.getInnerWallTemperature()) + * getWallContactLength(0) * getGeometry().getNodeLength() + / getBulkSystem().getPhase(0).getCp(); + double fluxwallinternal = + getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(1, this) + * (getBulkSystem().getPhase(1).getTemperature() - pipe.getInnerWallTemperature()) + * getWallContactLength(1) * getGeometry().getNodeLength() + + getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, this) * (getBulkSystem().getPhase(0).getTemperature() - pipe.getInnerWallTemperature()) - * getWallContactLength(0) * getGeometry().getNodeLength() - / getBulkSystem().getPhase(0).getCp(); - double fluxwallinternal = getInterphaseTransportCoefficient() - .calcWallHeatTransferCoefficient(1, this) - * (getBulkSystem().getPhase(1).getTemperature() - pipe.getInnerWallTemperature()) - * getWallContactLength(1) * getGeometry().getNodeLength() - + getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, this) - * (getBulkSystem().getPhase(0).getTemperature() - - pipe.getInnerWallTemperature()) - * getWallContactLength(0) * getGeometry().getNodeLength(); - - double JolprK = 3.14 * 0.2032 * 0.0094 * getGeometry().getNodeLength() * 7500 * 500; - double fluxOut = -50.0 * 3.14 * (0.2032 + 0.01) * getGeometry().getNodeLength() - * (pipe.getInnerWallTemperature() - - pipe.getSurroundingEnvironment().getTemperature()); - double dTwall = (fluxOut + fluxwallinternal) / JolprK; - pipe.setInnerWallTemperature(pipe.getInnerWallTemperature() + dTwall); - - getBulkSystem().getPhase(1) - .setTemperature(getBulkSystem().getPhase(1).getTemperature() + liquid_dT); - getBulkSystem().getPhase(0) - .setTemperature(getBulkSystem().getPhase(0).getTemperature() + gas_dT); - - for (int componentNumber = 0; componentNumber < getBulkSystem().getPhases()[0] - .getNumberOfComponents(); componentNumber++) { - double liquidMolarRate = getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * getInterphaseContactArea();// getInterphaseContactLength(0)*getGeometry().getNodeLength(); - - double gasMolarRate = -getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * getInterphaseContactArea();// getInterphaseContactLength(0)*getGeometry().getNodeLength(); - - getBulkSystem().getPhase(0).addMoles(componentNumber, - this.flowDirection[0] * gasMolarRate); - getBulkSystem().getPhase(1).addMoles(componentNumber, - this.flowDirection[1] * liquidMolarRate); - } + * getWallContactLength(0) * getGeometry().getNodeLength(); + + double JolprK = 3.14 * 0.2032 * 0.0094 * getGeometry().getNodeLength() * 7500 * 500; + double fluxOut = -50.0 * 3.14 * (0.2032 + 0.01) * getGeometry().getNodeLength() + * (pipe.getInnerWallTemperature() - pipe.getSurroundingEnvironment().getTemperature()); + double dTwall = (fluxOut + fluxwallinternal) / JolprK; + pipe.setInnerWallTemperature(pipe.getInnerWallTemperature() + dTwall); + + getBulkSystem().getPhase(1) + .setTemperature(getBulkSystem().getPhase(1).getTemperature() + liquid_dT); + getBulkSystem().getPhase(0) + .setTemperature(getBulkSystem().getPhase(0).getTemperature() + gas_dT); + + for (int componentNumber = 0; componentNumber < getBulkSystem().getPhases()[0] + .getNumberOfComponents(); componentNumber++) { + double liquidMolarRate = + getFluidBoundary().getInterphaseMolarFlux(componentNumber) * getInterphaseContactArea(); // getInterphaseContactLength(0)*getGeometry().getNodeLength(); + + double gasMolarRate = + -getFluidBoundary().getInterphaseMolarFlux(componentNumber) * getInterphaseContactArea(); // getInterphaseContactLength(0)*getGeometry().getNodeLength(); + + getBulkSystem().getPhase(0).addMoles(componentNumber, this.flowDirection[0] * gasMolarRate); + getBulkSystem().getPhase(1).addMoles(componentNumber, + this.flowDirection[1] * liquidMolarRate); + } - getBulkSystem().initBeta(); - getBulkSystem().init_x_y(); - getBulkSystem().init(3); + getBulkSystem().initBeta(); + getBulkSystem().init_x_y(); + getBulkSystem().init(3); - if (bulkSystem.isChemicalSystem()) { - getBulkSystem().getChemicalReactionOperations().setSystem(getBulkSystem()); - getOperations().chemicalEquilibrium(); - } + if (bulkSystem.isChemicalSystem()) { + getBulkSystem().getChemicalReactionOperations().setSystem(getBulkSystem()); + getOperations().chemicalEquilibrium(); } + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/multiPhaseNode/waxNode/WaxDepositionFlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/multiPhaseNode/waxNode/WaxDepositionFlowNode.java index 02e6e619a9..f2d85ec04e 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/multiPhaseNode/waxNode/WaxDepositionFlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/multiPhaseNode/waxNode/WaxDepositionFlowNode.java @@ -19,171 +19,164 @@ * @version $Id: $Id */ public class WaxDepositionFlowNode extends MultiPhaseFlowNode { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for WaxDepositionFlowNode. - *

- */ - public WaxDepositionFlowNode() { - this.flowNodeType = "wax deposition node"; - } - - /** - *

- * Constructor for WaxDepositionFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public WaxDepositionFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "wax deposition node"; - this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); - } - - /** - *

- * Constructor for WaxDepositionFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public WaxDepositionFlowNode(SystemInterface system, SystemInterface interphaseSystem, - GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "wax deposition node"; - this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for WaxDepositionFlowNode. + *

+ */ + public WaxDepositionFlowNode() { + this.flowNodeType = "wax deposition node"; + } + + /** + *

+ * Constructor for WaxDepositionFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public WaxDepositionFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "wax deposition node"; + this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } + + /** + *

+ * Constructor for WaxDepositionFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public WaxDepositionFlowNode(SystemInterface system, SystemInterface interphaseSystem, + GeometryDefinitionInterface pipe) { + this(system, pipe); + } + + /** {@inheritDoc} */ + @Override + public StratifiedFlowNode clone() { + StratifiedFlowNode clonedSystem = null; + try { + clonedSystem = (StratifiedFlowNode) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public StratifiedFlowNode clone() { - StratifiedFlowNode clonedSystem = null; - try { - clonedSystem = (StratifiedFlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; + return clonedSystem; + } + + /** {@inheritDoc} */ + @Override + public void init() { + inclination = 0.0; + this.calcContactLength(); + // System.out.println("len " + this.calcContactLength()); + super.init(); + } + + /** {@inheritDoc} */ + @Override + public double calcContactLength() { + double phaseAngel = + pi * phaseFraction[1] + Math.pow(3.0 * pi / 2.0, 1.0 / 3.0) * (1.0 - 2.0 * phaseFraction[1] + + Math.pow(phaseFraction[1], 1.0 / 3.0) - Math.pow(phaseFraction[0], 1.0 / 3.0)); + wallContactLength[1] = phaseAngel * pipe.getDiameter(); + wallContactLength[0] = pi * pipe.getDiameter() - wallContactLength[1]; + interphaseContactLength[0] = pipe.getDiameter() * Math.sin(phaseAngel); + interphaseContactLength[1] = pipe.getDiameter() * Math.sin(phaseAngel); + return wallContactLength[0]; + } + + /** {@inheritDoc} */ + @Override + public FlowNodeInterface getNextNode() { + StratifiedFlowNode newNode = this.clone(); + + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); + // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); } - /** {@inheritDoc} */ - @Override - public void init() { - inclination = 0.0; - this.calcContactLength(); - // System.out.println("len " + this.calcContactLength()); - super.init(); + return newNode; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 40.0, 10.0); + // SystemInterface testSystem = new SystemSrkCPAstatoil(275.3, + // ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + PipeData pipe1 = new PipeData(0.203, 0.00025); + + testSystem.addComponent("methane", 25.0, 0); + // testSystem.addComponent("water", 1.95, 1); + testSystem.addComponent("nC16", 1.5, 1); + + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.init_x_y(); + testSystem.initBeta(); + testSystem.display(); + + FlowNodeInterface test = new StratifiedFlowNode(testSystem, pipe1); + test.setInterphaseModelType(1); + test.setLengthOfNode(0.005); + test.getGeometry().getSurroundingEnvironment().setTemperature(273.15 + 40.0); + + test.getFluidBoundary().setHeatTransferCalc(true); + test.getFluidBoundary().setMassTransferCalc(true); + + test.initFlowCalc(); + test.calcFluxes(); + test.update(); + test.getInterphaseSystem().display(); + test.getFluidBoundary().display(""); + test.getFluidBoundary().getInterphaseSystem().display(); + // test.getBulkSystem().display(); + + for (int i = 0; i < 5; i++) { + test.initFlowCalc(); + test.calcFluxes(); + test.update(); } + test.getBulkSystem().display(); - /** {@inheritDoc} */ - @Override - public double calcContactLength() { - double phaseAngel = pi * phaseFraction[1] + Math.pow(3.0 * pi / 2.0, 1.0 / 3.0) - * (1.0 - 2.0 * phaseFraction[1] + Math.pow(phaseFraction[1], 1.0 / 3.0) - - Math.pow(phaseFraction[0], 1.0 / 3.0)); - wallContactLength[1] = phaseAngel * pipe.getDiameter(); - wallContactLength[0] = pi * pipe.getDiameter() - wallContactLength[1]; - interphaseContactLength[0] = pipe.getDiameter() * Math.sin(phaseAngel); - interphaseContactLength[1] = pipe.getDiameter() * Math.sin(phaseAngel); - return wallContactLength[0]; - } - - /** {@inheritDoc} */ - @Override - public FlowNodeInterface getNextNode() { - StratifiedFlowNode newNode = this.clone(); - - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); - // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); - } - - return newNode; - } - - /** - *

- * main. - *

+ /* + * double length = 0; + * + * double[][] temperatures2 = new double[3][1000]; int k = 0; for (int i = 0; i < 11; i++) { + * length += test.getLengthOfNode(); test.initFlowCalc(); test.calcFluxes(); if (i > 1 && (i % + * 1) == 0) { k++; test.display("length " + length); test.getBulkSystem().display("length " + + * length); test.getInterphaseSystem().display("length " + length); + * //test.getFluidBoundary().display("length " + length); test.setLengthOfNode(0.000005 + + * test.getLengthOfNode() / 2.0); temperatures2[0][k] = length; temperatures2[1][k] = + * test.getGeometry().getTemperature(); test.getFluidBoundary().display("test"); } + * + * //test.getBulkSystem().display(); test.update(); test.getFluidBoundary().display("length " + + * length); test.getInterphaseSystem().display("length " + length); * - * @param args an array of {@link java.lang.String} objects + * //test.getFluidBoundary().display("test"); } + * + * for (int i = 0; i < k; i++) { System.out.println("len temp " + temperatures2[0][i] + " " + + * temperatures2[1][i]); } */ - @SuppressWarnings("unused") - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 40.0, 10.0); - // SystemInterface testSystem = new SystemSrkCPAstatoil(275.3, 1.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - PipeData pipe1 = new PipeData(0.203, 0.00025); - - testSystem.addComponent("methane", 25.0, 0); - // testSystem.addComponent("water", 1.95, 1); - testSystem.addComponent("nC16", 1.5, 1); - - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.init_x_y(); - testSystem.initBeta(); - testSystem.display(); - - FlowNodeInterface test = new StratifiedFlowNode(testSystem, pipe1); - test.setInterphaseModelType(1); - test.setLengthOfNode(0.005); - test.getGeometry().getSurroundingEnvironment().setTemperature(273.15 + 40.0); - - test.getFluidBoundary().setHeatTransferCalc(true); - test.getFluidBoundary().setMassTransferCalc(true); - - test.initFlowCalc(); - test.calcFluxes(); - test.update(); - test.getInterphaseSystem().display(); - test.getFluidBoundary().display(""); - test.getFluidBoundary().getInterphaseSystem().display(); - // test.getBulkSystem().display(); - - for (int i = 0; i < 5; i++) { - test.initFlowCalc(); - test.calcFluxes(); - test.update(); - } - test.getBulkSystem().display(); - - /* - * double length = 0; - * - * double[][] temperatures2 = new double[3][1000]; int k = 0; for (int i = 0; i < 11; i++) { - * length += test.getLengthOfNode(); test.initFlowCalc(); test.calcFluxes(); if (i > 1 && (i - * % 1) == 0) { k++; test.display("length " + length); - * test.getBulkSystem().display("length " + length); - * test.getInterphaseSystem().display("length " + length); - * //test.getFluidBoundary().display("length " + length); test.setLengthOfNode(0.000005 + - * test.getLengthOfNode() / 2.0); temperatures2[0][k] = length; temperatures2[1][k] = - * test.getGeometry().getTemperature(); test.getFluidBoundary().display("test"); } - * - * //test.getBulkSystem().display(); test.update(); - * test.getFluidBoundary().display("length " + length); - * test.getInterphaseSystem().display("length " + length); - * - * - * //test.getFluidBoundary().display("test"); } - * - * for (int i = 0; i < k; i++) { System.out.println("len temp " + temperatures2[0][i] + " " - * + temperatures2[1][i]); } - */ - } + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/onePhaseNode/onePhaseFlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/onePhaseNode/onePhaseFlowNode.java index 644a37caba..27e02b15dc 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/onePhaseNode/onePhaseFlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/onePhaseNode/onePhaseFlowNode.java @@ -50,8 +50,8 @@ public onePhaseFlowNode clone() { onePhaseFlowNode clonedSystem = null; try { clonedSystem = (onePhaseFlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); + } catch (Exception ex) { + ex.printStackTrace(); } return clonedSystem; diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/onePhaseNode/onePhasePipeFlowNode/onePhasePipeFlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/onePhaseNode/onePhasePipeFlowNode/onePhasePipeFlowNode.java index 9822dffd3c..285b71835e 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/onePhaseNode/onePhasePipeFlowNode/onePhasePipeFlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/onePhaseNode/onePhasePipeFlowNode/onePhasePipeFlowNode.java @@ -18,88 +18,82 @@ * @version $Id: $Id */ public class onePhasePipeFlowNode extends onePhaseFlowNode { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for onePhasePipeFlowNode. - *

- */ - public onePhasePipeFlowNode() {} + /** + *

+ * Constructor for onePhasePipeFlowNode. + *

+ */ + public onePhasePipeFlowNode() {} - /** - *

- * Constructor for onePhasePipeFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public onePhasePipeFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - this.interphaseTransportCoefficient = new InterphasePipeFlow(this); - phaseOps = new ThermodynamicOperations(this.getBulkSystem()); - phaseOps.TPflash(); - initBulkSystem(); - } + /** + *

+ * Constructor for onePhasePipeFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public onePhasePipeFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + this.interphaseTransportCoefficient = new InterphasePipeFlow(this); + phaseOps = new ThermodynamicOperations(this.getBulkSystem()); + phaseOps.TPflash(); + initBulkSystem(); + } - /** {@inheritDoc} */ - @Override - public onePhasePipeFlowNode clone() { - onePhasePipeFlowNode clonedSystem = null; - try { - clonedSystem = (onePhasePipeFlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public onePhasePipeFlowNode clone() { + onePhasePipeFlowNode clonedSystem = null; + try { + clonedSystem = (onePhasePipeFlowNode) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + return clonedSystem; + } - /** {@inheritDoc} */ - @Override - public void init() { - super.init(); - } + /** {@inheritDoc} */ + @Override + public double calcReynoldsNumber() { + reynoldsNumber[0] = getVelocity() * pipe.getDiameter() + / getBulkSystem().getPhases()[0].getPhysicalProperties().getKinematicViscosity(); + return reynoldsNumber[0]; + } - /** {@inheritDoc} */ - @Override - public double calcReynoldsNumber() { - reynoldsNumber[0] = getVelocity() * pipe.getDiameter() - / getBulkSystem().getPhases()[0].getPhysicalProperties().getKinematicViscosity(); - return reynoldsNumber[0]; - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + System.out.println("Starter....."); + SystemSrkEos testSystem = new SystemSrkEos(300.3, 200.0); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - System.out.println("Starter....."); - SystemSrkEos testSystem = new SystemSrkEos(300.3, 200.0); + testSystem.addComponent("methane", 50000.0); + testSystem.addComponent("ethane", 1.0); - GeometryDefinitionInterface pipe1 = new PipeData(1, 0.0025); - testSystem.addComponent("methane", 50000.0); - testSystem.addComponent("ethane", 1.0); + testSystem.init(0); + testSystem.init(1); - testSystem.init(0); - testSystem.init(1); + FlowNodeInterface[] test = new onePhasePipeFlowNode[100]; - FlowNodeInterface[] test = new onePhasePipeFlowNode[100]; + GeometryDefinitionInterface pipe1 = new PipeData(1, 0.0025); + test[0] = new onePhasePipeFlowNode(testSystem, pipe1); + // test[0].setFrictionFactorType(0); - test[0] = new onePhasePipeFlowNode(testSystem, pipe1); - // test[0].setFrictionFactorType(0); + // test[0].init() + test[0].initFlowCalc(); + test[0].init(); - // test[0].init() - test[0].initFlowCalc(); - test[0].init(); - - // test[0].getVolumetricFlow(); - System.out.println("flow: " + test[0].getVolumetricFlow() + " velocity: " - + test[0].getVelocity() + " reynolds number " + test[0].getReynoldsNumber() - + "friction : " + test[0].getWallFrictionFactor()); - } + // test[0].getVolumetricFlow(); + System.out.println("flow: " + test[0].getVolumetricFlow() + " velocity: " + + test[0].getVelocity() + " reynolds number " + test[0].getReynoldsNumber() + "friction : " + + test[0].getWallFrictionFactor()); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/TwoPhaseFlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/TwoPhaseFlowNode.java index 624bb8e81e..bf2bb61b58 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/TwoPhaseFlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/TwoPhaseFlowNode.java @@ -13,388 +13,417 @@ * @version $Id: $Id */ public abstract class TwoPhaseFlowNode extends FlowNode { - private static final long serialVersionUID = 1000; - - // public double[] molarMassTransferFlux; - // public double[] molarMassTransfer; - - /** - *

- * Constructor for TwoPhaseFlowNode. - *

- */ - public TwoPhaseFlowNode() {} - - /** - *

- * Constructor for TwoPhaseFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public TwoPhaseFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - - // gasPrandtlNumber = new - // double[getBulkSystem().getPhases()[0].getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; - // liquidPrandtlNumber = new - // double[getBulkSystem().getPhases()[0].getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; - // molarMassTransferFlux = new - // double[getBulkSystem().getPhases()[0].getNumberOfComponents()]; - // molarMassTransfer = new - // double[getBulkSystem().getPhases()[0].getNumberOfComponents()]; - getBulkSystem().initBeta(); - getBulkSystem().init_x_y(); + private static final long serialVersionUID = 1000; + + // public double[] molarMassTransferFlux; + // public double[] molarMassTransfer; + + /** + *

+ * Constructor for TwoPhaseFlowNode. + *

+ */ + public TwoPhaseFlowNode() {} + + /** + *

+ * Constructor for TwoPhaseFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public TwoPhaseFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + + // gasPrandtlNumber = new + // double[getBulkSystem().getPhases()[0].getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; + // liquidPrandtlNumber = new + // double[getBulkSystem().getPhases()[0].getNumberOfComponents()][getBulkSystem().getPhases()[0].getNumberOfComponents()]; + // molarMassTransferFlux = new + // double[getBulkSystem().getPhases()[0].getNumberOfComponents()]; + // molarMassTransfer = new + // double[getBulkSystem().getPhases()[0].getNumberOfComponents()]; + getBulkSystem().initBeta(); + getBulkSystem().init_x_y(); + } + + /** {@inheritDoc} */ + @Override + public TwoPhaseFlowNode clone() { + TwoPhaseFlowNode clonedSystem = null; + try { + clonedSystem = (TwoPhaseFlowNode) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public TwoPhaseFlowNode clone() { - TwoPhaseFlowNode clonedSystem = null; - try { - clonedSystem = (TwoPhaseFlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); + // clonedSystem.molarMassTransferFlux = (double[]) + // clonedSystem.molarMassTransferFlux.clone(); + // clonedSystem.molarMassTransfer = (double[]) + // clonedSystem.molarMassTransferFlux.clone(); + clonedSystem.fluidBoundary = fluidBoundary.clone(); + return clonedSystem; + } + + /** + *

+ * initVelocity. + *

+ * + * @return a double + */ + public double initVelocity() { + getBulkSystem().init(1); + getBulkSystem().initPhysicalProperties(); + molarFlowRate[1] = getBulkSystem().getPhases()[1].getNumberOfMolesInPhase(); + molarFlowRate[0] = getBulkSystem().getPhases()[0].getNumberOfMolesInPhase(); + massFlowRate[1] = molarFlowRate[1] * getBulkSystem().getPhases()[1].getMolarMass(); + massFlowRate[0] = molarFlowRate[0] * getBulkSystem().getPhases()[0].getMolarMass(); + volumetricFlowRate[0] = + massFlowRate[0] / getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity(); + volumetricFlowRate[1] = + massFlowRate[1] / getBulkSystem().getPhases()[1].getPhysicalProperties().getDensity(); + velocity[0] = volumetricFlowRate[0] / (phaseFraction[0] * pipe.getArea()); + velocity[1] = volumetricFlowRate[1] / (phaseFraction[1] * pipe.getArea()); + // System.out.println("velocity " + velocity[0] + " velocity " +velocity[1]); + return velocity[1]; + } + + /** {@inheritDoc} */ + @Override + public void initFlowCalc() { + initVelocity(); + init(); + + phaseFraction[0] = getBulkSystem().getBeta(); + phaseFraction[1] = 1.0 - phaseFraction[0]; + double f = 0; + + double fOld = 0; + double betaOld = 0; + // double df = 0 + int iterations = 0; + double step = 100.0; + + do { + iterations++; + fOld = f; + + initVelocity(); + init(); + + double Fg = 0.5 * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + * wallFrictionFactor[0] * Math.pow(velocity[0], 2.0) * wallContactLength[0] + / (pipe.getArea() * 4.0); + double Fl = 0.5 * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + * wallFrictionFactor[1] * Math.pow(velocity[1], 2.0) * wallContactLength[1] + / (pipe.getArea() * 4.0); + double Fi = 0.5 * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + * interphaseFrictionFactor[0] * Math.pow(velocity[0] - velocity[1], 2.0) + * interphaseContactLength[0] / (pipe.getArea() * 4.0); + + f = -phaseFraction[0] * Fl + (1 - phaseFraction[0]) * Fg + Fi + + (1.0 - phaseFraction[0]) * phaseFraction[0] + * (bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + - bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) + * gravity * inclination; + + /* + * df = -Fl - Fg + (bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - + * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) * gravity * inclination - + * Math.pow(phaseFraction[0], 2.0) + * (bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - + * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) gravity * inclination; + */ + + if (f > 0) { + phaseFraction[0] += (betaOld - phaseFraction[0]); + if (fOld < 0) { + step *= 5.0; } - - // clonedSystem.molarMassTransferFlux = (double[]) - // clonedSystem.molarMassTransferFlux.clone();; - // clonedSystem.molarMassTransfer = (double[]) - // clonedSystem.molarMassTransferFlux.clone(); - clonedSystem.fluidBoundary = fluidBoundary.clone(); - return clonedSystem; - } - - /** - *

- * initVelocity. - *

- * - * @return a double - */ - public double initVelocity() { - getBulkSystem().init(1); - getBulkSystem().initPhysicalProperties(); - molarFlowRate[1] = getBulkSystem().getPhases()[1].getNumberOfMolesInPhase(); - molarFlowRate[0] = getBulkSystem().getPhases()[0].getNumberOfMolesInPhase(); - massFlowRate[1] = molarFlowRate[1] * getBulkSystem().getPhases()[1].getMolarMass(); - massFlowRate[0] = molarFlowRate[0] * getBulkSystem().getPhases()[0].getMolarMass(); - volumetricFlowRate[0] = massFlowRate[0] - / getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity(); - volumetricFlowRate[1] = massFlowRate[1] - / getBulkSystem().getPhases()[1].getPhysicalProperties().getDensity(); - velocity[0] = volumetricFlowRate[0] / (phaseFraction[0] * pipe.getArea()); - velocity[1] = volumetricFlowRate[1] / (phaseFraction[1] * pipe.getArea()); - // System.out.println("velocity " + velocity[0] + " velocity " +velocity[1]); - return velocity[1]; - } - - /** {@inheritDoc} */ - @Override - public void initFlowCalc() { - this.init(); - initVelocity(); - - phaseFraction[0] = 1.0 - 1.0e-10; - phaseFraction[1] = 1.0 - phaseFraction[0]; - double f = 0, fOld = 0, betaOld = 0; - - // double df = 0 - int iterations = 0; - double step = 100.0; - - do { - iterations++; - fOld = f; - - initVelocity(); - init(); - - double Fg = 0.5 * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - * wallFrictionFactor[0] * Math.pow(velocity[0], 2.0) * wallContactLength[0] - / (pipe.getArea() * 4.0); - double Fl = 0.5 * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - * wallFrictionFactor[1] * Math.pow(velocity[1], 2.0) * wallContactLength[1] - / (pipe.getArea() * 4.0); - double Fi = 0.5 * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - * interphaseFrictionFactor[0] * Math.pow(velocity[0] - velocity[1], 2.0) - * interphaseContactLength[0] / (pipe.getArea() * 4.0); - - f = -phaseFraction[0] * Fl + (1 - phaseFraction[0]) * Fg + Fi + (1.0 - phaseFraction[0]) - * phaseFraction[0] - * (bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - - bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) - * gravity * inclination; - - /* - * df = -Fl - Fg + (bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - - * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) * gravity * - * inclination - Math.pow(phaseFraction[0], 2.0) - * (bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - - * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity()) gravity * - * inclination; - */ - - if (f > 0) { - phaseFraction[0] += (betaOld - phaseFraction[0]); - if (fOld < 0) { - step *= 5.0; - } - } else { - betaOld = phaseFraction[0]; - phaseFraction[0] -= phaseFraction[0] / step; - } - phaseFraction[1] = 1.0 - phaseFraction[0]; - // System.out.println("f " + f + " iterations " + iterations + " beta " + - // phaseFraction[0]); - } // while(Math.abs((f-fOld)/f)>1e-8 && iterations<10000); - while (Math.abs(f) > 1e-2 && iterations < 100); - - if (iterations == 10000) { - System.out.println("error in void init calc"); - } - // System.out.println("f " + f + " iterations " + iterations + " beta " + - // phaseFraction[0]); - this.init(); + } else { + betaOld = phaseFraction[0]; + phaseFraction[0] -= phaseFraction[0] / step; + } + phaseFraction[1] = 1.0 - phaseFraction[0]; + // System.out.println("f " + f + " iterations " + iterations + " beta " + phaseFraction[0]); } + // while (Math.abs(f) > 1e-6 && iterations < 100); + while (Math.abs((f - fOld) / f) > 1e-8 && iterations < 100); - /** - *

- * calcHydraulicDiameter. - *

- * - * @return a double - */ - public double calcHydraulicDiameter() { - hydraulicDiameter[0] = 4.0 * phaseFraction[0] * pipe.getArea() - / (wallContactLength[0] + interphaseContactLength[0]); - hydraulicDiameter[1] = 4.0 * phaseFraction[1] * pipe.getArea() / wallContactLength[1]; - return hydraulicDiameter[0]; + if (iterations == 10000) { + System.out.println("error in void init calc"); } - - /** - *

- * calcReynoldNumber. - *

- * - * @return a double - */ - public double calcReynoldNumber() { - reynoldsNumber[1] = velocity[1] * hydraulicDiameter[1] - * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[1].getPhysicalProperties().getViscosity(); - reynoldsNumber[0] = velocity[0] * hydraulicDiameter[0] - * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[0].getPhysicalProperties().getViscosity(); - return reynoldsNumber[1]; + // System.out.println("f " + f + " iterations " + iterations + " beta " + + // phaseFraction[0]); + this.init(); + } + + /** + *

+ * calcHydraulicDiameter. + *

+ * + * @return a double + */ + public double calcHydraulicDiameter() { + hydraulicDiameter[0] = 4.0 * phaseFraction[0] * pipe.getArea() + / (wallContactLength[0] + interphaseContactLength[0]); + hydraulicDiameter[1] = 4.0 * phaseFraction[1] * pipe.getArea() / wallContactLength[1]; + return hydraulicDiameter[0]; + } + + /** + *

+ * calcReynoldNumber. + *

+ * + * @return a double + */ + public double calcReynoldNumber() { + reynoldsNumber[1] = velocity[1] * hydraulicDiameter[1] + * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[1].getPhysicalProperties().getViscosity(); + reynoldsNumber[0] = velocity[0] * hydraulicDiameter[0] + * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[0].getPhysicalProperties().getViscosity(); + return reynoldsNumber[1]; + } + + /** + *

+ * calcWallFrictionFactor. + *

+ * + * @return a double + */ + public double calcWallFrictionFactor() { + for (int i = 0; i < 2; i++) { + wallFrictionFactor[i] = Math.pow( + (1.0 / (-1.8 * Math.log10(6.9 / getReynoldsNumber(i) + * Math.pow(pipe.getRelativeRoughnes(this.getHydraulicDiameter(i)) / 3.7, 1.11)))), + 2.0); } - - /** - *

- * calcWallFrictionFactor. - *

- * - * @return a double - */ - public double calcWallFrictionFactor() { - for (int i = 0; i < 2; i++) { - wallFrictionFactor[i] = Math.pow( - (1.0 / (-1.8 * Math.log10(6.9 / getReynoldsNumber(i) * Math.pow( - pipe.getRelativeRoughnes(this.getHydraulicDiameter(i)) / 3.7, 1.11)))), - 2.0); - } - return wallFrictionFactor[0]; + return wallFrictionFactor[0]; + } + + /** {@inheritDoc} */ + @Override + public void setFluxes(double[] dn) { + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + getBulkSystem().getPhases()[0].addMoles(i, -dn[i]); + getBulkSystem().getPhases()[1].addMoles(i, +dn[i]); + + getInterphaseSystem().getPhases()[0].addMoles(i, -dn[i]); + getInterphaseSystem().getPhases()[1].addMoles(i, +dn[i]); } - - /** {@inheritDoc} */ - @Override - public void setFluxes(double dn[]) { - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - getBulkSystem().getPhases()[0].addMoles(i, -dn[i]); - getBulkSystem().getPhases()[1].addMoles(i, +dn[i]); - - getInterphaseSystem().getPhases()[0].addMoles(i, -dn[i]); - getInterphaseSystem().getPhases()[1].addMoles(i, +dn[i]); + } + + /** {@inheritDoc} */ + @Override + public void updateMolarFlow() { + for (int phase = 0; phase < 2; phase++) { + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + if (molarFlowRate[phase] > 1e-100) { + getBulkSystem().getPhases()[phase].addMoles(i, + (getBulkSystem().getPhases()[phase].getComponents()[i].getx() * (molarFlowRate[phase] + - getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase()))); } + } } - - /** {@inheritDoc} */ - @Override - public void updateMolarFlow() { - for (int phase = 0; phase < 2; phase++) { - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - getBulkSystem().getPhases()[phase].addMoles(i, - (getBulkSystem().getPhases()[phase].getComponents()[i].getx() - * (molarFlowRate[phase] - getBulkSystem().getPhases()[phase] - .getNumberOfMolesInPhase()))); - } - } - getBulkSystem().init(1); + getBulkSystem().initBeta(); + getBulkSystem().init_x_y(); + getBulkSystem().init(1); + } + + /** + *

+ * calcContactLength. + *

+ * + * @return a double + */ + public double calcContactLength() { + return 0; + } + + /** {@inheritDoc} */ + @Override + public void init() { + super.init(); + massFlowRate[0] = + velocity[0] * getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity() + * pipe.getArea() * phaseFraction[0]; + massFlowRate[1] = + velocity[1] * getBulkSystem().getPhases()[1].getPhysicalProperties().getDensity() + * pipe.getArea() * phaseFraction[1]; + molarFlowRate[0] = massFlowRate[0] / getBulkSystem().getPhases()[0].getMolarMass(); + molarFlowRate[1] = massFlowRate[1] / getBulkSystem().getPhases()[1].getMolarMass(); + superficialVelocity[0] = velocity[0] * phaseFraction[0]; + superficialVelocity[1] = velocity[1] * phaseFraction[1]; + volumetricFlowRate[0] = superficialVelocity[0] * pipe.getArea(); + volumetricFlowRate[1] = superficialVelocity[1] * pipe.getArea(); + this.updateMolarFlow(); + + this.calcHydraulicDiameter(); + this.calcReynoldNumber(); + interphaseContactArea = this.calcGasLiquidContactArea(); + + wallFrictionFactor[0] = interphaseTransportCoefficient.calcWallFrictionFactor(0, this); + wallFrictionFactor[1] = interphaseTransportCoefficient.calcWallFrictionFactor(1, this); + + interphaseFrictionFactor[0] = + interphaseTransportCoefficient.calcInterPhaseFrictionFactor(0, this); + interphaseFrictionFactor[1] = + interphaseTransportCoefficient.calcInterPhaseFrictionFactor(0, this); + } + + /** + *

+ * calcGasLiquidContactArea. + *

+ * + * @return a double + */ + public double calcGasLiquidContactArea() { + interphaseContactArea = pipe.getNodeLength() * interphaseContactLength[0]; + return interphaseContactArea; + } + + /** {@inheritDoc} */ + @Override + public void calcFluxes() { + if (bulkSystem.isChemicalSystem()) { + // getBulkSystem().getChemicalReactionOperations().setSystem(getBulkSystem()); + // getOperations().chemicalEquilibrium(); } - - /** - *

- * calcContactLength. - *

- * - * @return a double - */ - public double calcContactLength() { - return 0; + fluidBoundary.solve(); + fluidBoundary.calcFluxes(); + } + + /** {@inheritDoc} */ + @Override + public void update() { + // System.out.println("reac heat " + + // getBulkSystem().getChemicalReactionOperations().getDeltaReactionHeat()); + double heatFluxGas = getFluidBoundary().getInterphaseHeatFlux(0); + // getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(0, + // getPrandtlNumber(0), + // this) * + // (getInterphaseSystem().getPhase(0).getTemperature() + // - + // getBulkSystem().getPhase(0).getTemperature()) + // * + // getInterphaseContactArea(); + + double heatFluxLiquid = getFluidBoundary().getInterphaseHeatFlux(1); + // getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(1, + // getPrandtlNumber(1), + // this) * + // (getInterphaseSystem().getPhase(1).getTemperature() + // - + // getBulkSystem().getPhase(1).getTemperature()) + // * + // getInterphaseContactArea(); + // System.out.println("heat flux local " + heatFluxLiquid); + // double liquid_dT = + // -this.flowDirection[1]*heatFlux/1000.0/getBulkSystem().getPhase(1).getCp(); + + double liquid_dT = this.flowDirection[1] * heatFluxLiquid * getGeometry().getNodeLength() + / getVelocity(1) / getBulkSystem().getPhase(1).getCp(); + double gas_dT = this.flowDirection[0] * heatFluxGas * getGeometry().getNodeLength() + / getVelocity(0) / getBulkSystem().getPhase(0).getCp(); + liquid_dT -= 0 * getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(1, this) + * (getBulkSystem().getPhase(1).getTemperature() - pipe.getInnerWallTemperature()) + * getWallContactLength(1) * getGeometry().getNodeLength() + / getBulkSystem().getPhase(1).getCp(); + gas_dT -= 0 * getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, this) + * (getBulkSystem().getPhase(0).getTemperature() - pipe.getInnerWallTemperature()) + * getWallContactLength(0) * getGeometry().getNodeLength() + / getBulkSystem().getPhase(0).getCp(); + // liquid_dT += + // getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, this)* + // (getBulkSystem().getPhase(0).getTemperature()-pipe.getOuterTemperature())* + // getWallContactLength(0) * + // getGeometry().getNodeLength()/getBulkSystem().getPhase(0).getCp(); + // liquid_dT += + // 10*this.flowDirection[1]*getBulkSystem().getChemicalReactionOperations().getDeltaReactionHeat()/getBulkSystem().getPhase(1).getCp(); + // System.out.println("Cp " + getBulkSystem().getPhase(1).getCp()); + // System.out.println("liq dT " + liquid_dT); + // System.out.println("gas dT " + gas_dT); + double fluxwallinternal = + getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(1, this) + * (getBulkSystem().getPhase(1).getTemperature() - pipe.getInnerWallTemperature()) + * getWallContactLength(1) * getGeometry().getNodeLength() + + getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, this) + * (getBulkSystem().getPhase(0).getTemperature() - pipe.getInnerWallTemperature()) + * getWallContactLength(0) * getGeometry().getNodeLength(); + + double JolprK = 3.14 * 0.2032 * 0.0094 * getGeometry().getNodeLength() * 7500 * 500; + double fluxOut = -50.0 * 3.14 * (0.2032 + 0.01) * getGeometry().getNodeLength() + * (pipe.getInnerWallTemperature() - pipe.getSurroundingEnvironment().getTemperature()); + double dTwall = 0 * (fluxOut + fluxwallinternal) / JolprK; + pipe.setInnerWallTemperature(pipe.getInnerWallTemperature() + dTwall); + + getBulkSystem().getPhase(1) + .setTemperature(getBulkSystem().getPhase(1).getTemperature() + liquid_dT); + getBulkSystem().getPhase(0) + .setTemperature(getBulkSystem().getPhase(0).getTemperature() + gas_dT); + + // System.out.println("pipe wall temperature " + pipe.getTemperature()); + // System.out.println("liquid velocity " + getSuperficialVelocity(1)); + // System.out.println("gas velocity " + getSuperficialVelocity(0)); + + for (int componentNumber = 0; componentNumber < getBulkSystem().getPhases()[0] + .getNumberOfComponents(); componentNumber++) { + double liquidMolarRate = + getFluidBoundary().getInterphaseMolarFlux(componentNumber) * getInterphaseContactArea(); // getInterphaseContactLength(0)*getGeometry().getNodeLength(); + + double gasMolarRate = + -getFluidBoundary().getInterphaseMolarFlux(componentNumber) * getInterphaseContactArea(); // getInterphaseContactLength(0)*getGeometry().getNodeLength(); + + // System.out.println("liquidMolarRate" + liquidMolarRate); + getBulkSystem().getPhase(0).addMoles(componentNumber, this.flowDirection[0] * gasMolarRate); + getBulkSystem().getPhase(1).addMoles(componentNumber, + this.flowDirection[1] * liquidMolarRate); } - /** {@inheritDoc} */ - @Override - public void init() { - super.init(); - massFlowRate[0] = - velocity[0] * getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity() - * pipe.getArea() * phaseFraction[0]; - massFlowRate[1] = - velocity[1] * getBulkSystem().getPhases()[1].getPhysicalProperties().getDensity() - * pipe.getArea() * phaseFraction[1]; - molarFlowRate[0] = massFlowRate[0] / getBulkSystem().getPhases()[0].getMolarMass(); - molarFlowRate[1] = massFlowRate[1] / getBulkSystem().getPhases()[1].getMolarMass(); - superficialVelocity[0] = velocity[0] * phaseFraction[0]; - superficialVelocity[1] = velocity[1] * phaseFraction[1]; - volumetricFlowRate[0] = superficialVelocity[0] * pipe.getArea(); - volumetricFlowRate[1] = superficialVelocity[1] * pipe.getArea(); - this.updateMolarFlow(); - - this.calcHydraulicDiameter(); - this.calcReynoldNumber(); - interphaseContactArea = this.calcGasLiquidContactArea(); - - wallFrictionFactor[0] = interphaseTransportCoefficient.calcWallFrictionFactor(0, this); - wallFrictionFactor[1] = interphaseTransportCoefficient.calcWallFrictionFactor(1, this); - - interphaseFrictionFactor[0] = - interphaseTransportCoefficient.calcInterPhaseFrictionFactor(0, this); - interphaseFrictionFactor[1] = - interphaseTransportCoefficient.calcInterPhaseFrictionFactor(0, this); - } + getBulkSystem().initBeta(); + getBulkSystem().init_x_y(); + getBulkSystem().init(3); - /** - *

- * calcGasLiquidContactArea. - *

- * - * @return a double - */ - public double calcGasLiquidContactArea() { - interphaseContactArea = pipe.getNodeLength() * interphaseContactLength[0]; - return interphaseContactArea; + if (bulkSystem.isChemicalSystem()) { + getBulkSystem().getChemicalReactionOperations().setSystem(getBulkSystem()); + getOperations().chemicalEquilibrium(); } - - /** {@inheritDoc} */ - @Override - public void calcFluxes() { - if (bulkSystem.isChemicalSystem()) { - // getBulkSystem().getChemicalReactionOperations().setSystem(getBulkSystem()); - // getOperations().chemicalEquilibrium(); - } - fluidBoundary.solve(); - fluidBoundary.calcFluxes(); + } + + /** + *

+ * update. + *

+ * + * @param deltaTime a double + */ + public void update(double deltaTime) { + for (int componentNumber = 0; componentNumber < getBulkSystem().getPhases()[0] + .getNumberOfComponents(); componentNumber++) { + double liquidMolarRate = + getFluidBoundary().getInterphaseMolarFlux(componentNumber) * getInterphaseContactArea(); // getInterphaseContactLength(0)*getGeometry().getNodeLength(); + + double gasMolarRate = + -getFluidBoundary().getInterphaseMolarFlux(componentNumber) * getInterphaseContactArea(); // getInterphaseContactLength(0)*getGeometry().getNodeLength(); + + getBulkSystem().getPhase(0).addMoles(componentNumber, + this.flowDirection[0] * gasMolarRate * deltaTime); + getBulkSystem().getPhase(1).addMoles(componentNumber, + this.flowDirection[1] * liquidMolarRate * deltaTime); } - /** {@inheritDoc} */ - @Override - public void update() { - // System.out.println("reac heat " + - // getBulkSystem().getChemicalReactionOperations().getDeltaReactionHeat()); - double heatFluxGas = getFluidBoundary().getInterphaseHeatFlux(0);// getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(0, - // getPrandtlNumber(0), - // this) * - // (getInterphaseSystem().getPhase(0).getTemperature() - // - - // getBulkSystem().getPhase(0).getTemperature()) - // * - // getInterphaseContactArea(); - - double heatFluxLiquid = getFluidBoundary().getInterphaseHeatFlux(1);// getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(1, - // getPrandtlNumber(1), - // this) * - // (getInterphaseSystem().getPhase(1).getTemperature() - // - - // getBulkSystem().getPhase(1).getTemperature()) - // * - // getInterphaseContactArea(); - // System.out.println("heat flux local " + heatFluxLiquid); - // double liquid_dT = - // -this.flowDirection[1]*heatFlux/1000.0/getBulkSystem().getPhase(1).getCp(); - - double liquid_dT = this.flowDirection[1] * heatFluxLiquid * getGeometry().getNodeLength() - / getVelocity(1) / getBulkSystem().getPhase(1).getCp(); - double gas_dT = this.flowDirection[0] * heatFluxGas * getGeometry().getNodeLength() - / getVelocity(0) / getBulkSystem().getPhase(0).getCp(); - liquid_dT -= 0 - * getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(1, this) - * (getBulkSystem().getPhase(1).getTemperature() - pipe.getInnerWallTemperature()) - * getWallContactLength(1) * getGeometry().getNodeLength() - / getBulkSystem().getPhase(1).getCp(); - gas_dT -= 0 * getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, this) - * (getBulkSystem().getPhase(0).getTemperature() - pipe.getInnerWallTemperature()) - * getWallContactLength(0) * getGeometry().getNodeLength() - / getBulkSystem().getPhase(0).getCp(); - // liquid_dT += - // getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, this)* - // (getBulkSystem().getPhase(0).getTemperature()-pipe.getOuterTemperature())* - // getWallContactLength(0) * - // getGeometry().getNodeLength()/getBulkSystem().getPhase(0).getCp(); - // liquid_dT += - // 10*this.flowDirection[1]*getBulkSystem().getChemicalReactionOperations().getDeltaReactionHeat()/getBulkSystem().getPhase(1).getCp(); - // System.out.println("Cp " + getBulkSystem().getPhase(1).getCp()); - // System.out.println("liq dT " + liquid_dT); - // System.out.println("gas dT " + gas_dT); - double fluxwallinternal = getInterphaseTransportCoefficient() - .calcWallHeatTransferCoefficient(1, this) - * (getBulkSystem().getPhase(1).getTemperature() - pipe.getInnerWallTemperature()) - * getWallContactLength(1) * getGeometry().getNodeLength() - + getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, this) - * (getBulkSystem().getPhase(0).getTemperature() - - pipe.getInnerWallTemperature()) - * getWallContactLength(0) * getGeometry().getNodeLength(); - - double JolprK = 3.14 * 0.2032 * 0.0094 * getGeometry().getNodeLength() * 7500 * 500; - double fluxOut = -50.0 * 3.14 * (0.2032 + 0.01) * getGeometry().getNodeLength() - * (pipe.getInnerWallTemperature() - - pipe.getSurroundingEnvironment().getTemperature()); - double dTwall = 0 * (fluxOut + fluxwallinternal) / JolprK; - pipe.setInnerWallTemperature(pipe.getInnerWallTemperature() + dTwall); - - getBulkSystem().getPhase(1) - .setTemperature(getBulkSystem().getPhase(1).getTemperature() + liquid_dT); - getBulkSystem().getPhase(0) - .setTemperature(getBulkSystem().getPhase(0).getTemperature() + gas_dT); - - // System.out.println("pipe wall temperature " + pipe.getTemperature()); - // System.out.println("liquid velocity " + getSuperficialVelocity(1)); - // System.out.println("gas velocity " + getSuperficialVelocity(0)); - - for (int componentNumber = 0; componentNumber < getBulkSystem().getPhases()[0] - .getNumberOfComponents(); componentNumber++) { - double liquidMolarRate = getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * getInterphaseContactArea();// getInterphaseContactLength(0)*getGeometry().getNodeLength(); - - double gasMolarRate = -getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * getInterphaseContactArea();// getInterphaseContactLength(0)*getGeometry().getNodeLength(); - - // System.out.println("liquidMolarRate" + liquidMolarRate); - getBulkSystem().getPhase(0).addMoles(componentNumber, - this.flowDirection[0] * gasMolarRate); - getBulkSystem().getPhase(1).addMoles(componentNumber, - this.flowDirection[1] * liquidMolarRate); - } - - getBulkSystem().initBeta(); - getBulkSystem().init_x_y(); - getBulkSystem().init(3); - - if (bulkSystem.isChemicalSystem()) { - getBulkSystem().getChemicalReactionOperations().setSystem(getBulkSystem()); - getOperations().chemicalEquilibrium(); - } - } + getBulkSystem().initBeta(); + getBulkSystem().init_x_y(); + getBulkSystem().initProperties(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/AnnularFlow.java b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/AnnularFlow.java index c0b3ea61f5..267bf483c9 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/AnnularFlow.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/AnnularFlow.java @@ -21,281 +21,281 @@ * @version $Id: $Id */ public class AnnularFlow extends TwoPhaseFlowNode { - private static final long serialVersionUID = 1000; - // ThermodynamicOperations interphaseOps = new ThermodynamicOperations(); - // double liquidFilmThickness=0; + private static final long serialVersionUID = 1000; + // ThermodynamicOperations interphaseOps = new ThermodynamicOperations(); + // double liquidFilmThickness=0; - /** - *

- * Constructor for AnnularFlow. - *

- */ - public AnnularFlow() { - this.flowNodeType = "annular"; - } + /** + *

+ * Constructor for AnnularFlow. + *

+ */ + public AnnularFlow() { + this.flowNodeType = "annular"; + } - /** - *

- * Constructor for AnnularFlow. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public AnnularFlow(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "annular"; - this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); - } + /** + *

+ * Constructor for AnnularFlow. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public AnnularFlow(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "annular"; + this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } - /** - *

- * Constructor for AnnularFlow. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public AnnularFlow(SystemInterface system, SystemInterface interphaseSystem, - GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "annular"; - this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); - } + /** + *

+ * Constructor for AnnularFlow. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public AnnularFlow(SystemInterface system, SystemInterface interphaseSystem, + GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "annular"; + this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } - /** {@inheritDoc} */ - @Override - public AnnularFlow clone() { - AnnularFlow clonedSystem = null; - try { - clonedSystem = (AnnularFlow) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public AnnularFlow clone() { + AnnularFlow clonedSystem = null; + try { + clonedSystem = (AnnularFlow) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + return clonedSystem; + } - /** {@inheritDoc} */ - @Override - public void init() { - inclination = 1.0; - this.calcContactLength(); - super.init(); - } + /** {@inheritDoc} */ + @Override + public void init() { + inclination = 1.0; + this.calcContactLength(); + super.init(); + } - /** {@inheritDoc} */ - @Override - public double calcContactLength() { - wallContactLength[1] = pi * pipe.getDiameter(); - wallContactLength[0] = 0.0; + /** {@inheritDoc} */ + @Override + public double calcContactLength() { + wallContactLength[1] = pi * pipe.getDiameter(); + wallContactLength[0] = 0.0; - interphaseContactLength[0] = pi * pipe.getDiameter() * Math.sqrt(phaseFraction[0]); - interphaseContactLength[1] = pi * pipe.getDiameter() * Math.sqrt(phaseFraction[0]); - return wallContactLength[0]; - } + interphaseContactLength[0] = pi * pipe.getDiameter() * Math.sqrt(phaseFraction[0]); + interphaseContactLength[1] = pi * pipe.getDiameter() * Math.sqrt(phaseFraction[0]); + return wallContactLength[0]; + } - /** {@inheritDoc} */ - @Override - public FlowNodeInterface getNextNode() { - AnnularFlow newNode = this.clone(); + /** {@inheritDoc} */ + @Override + public FlowNodeInterface getNextNode() { + AnnularFlow newNode = this.clone(); - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); - // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); - } - return newNode; + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); + // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); } + return newNode; + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - System.out.println("Starter....."); - String fileName = "c:/labsim/exp-heat.txt"; - double gasflow = 10.0; // MSm^3/day - double flow = 1000.0; // kg/min - double wtpr = 0.99; // wt frac MEG + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + System.out.println("Starter....."); + String fileName = "c:/labsim/exp-heat.txt"; - double outtemperature = 273.15 + 95; - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 55, 70.0); - // SystemInterface testSystem = new SystemSrkEos(273.15 + 85, 50.0); - // SystemInterface testSystem = new SystemFurstElectrolyteEos(298.15, 20.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 55, 70.0); + // SystemInterface testSystem = new SystemSrkEos(273.15 + 85, 50.0); + // SystemInterface testSystem = new SystemFurstElectrolyteEos(298.15, 20.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - PipeData pipe1 = new PipeData(0.5, 1.0e-6); + PipeData pipe1 = new PipeData(0.5, 1.0e-6); - MaterialLayer epoxmat = new MaterialLayer("epoxy", 0.01); - MaterialLayer steelmat = new MaterialLayer("steel", 0.02); - MaterialLayer concretemat = new MaterialLayer("concrete", 0.05); - pipe1.getWall().addMaterialLayer(epoxmat); - pipe1.getWall().addMaterialLayer(steelmat); - pipe1.getWall().addMaterialLayer(concretemat); - System.out.println("pipe heat trans coef " + pipe1.getWall().getHeatTransferCoefficient()); - System.out.println("pipe heat trans coef " + pipe1.getWallHeatTransferCoefficient()); + MaterialLayer epoxmat = new MaterialLayer("epoxy", 0.01); + MaterialLayer steelmat = new MaterialLayer("steel", 0.02); + MaterialLayer concretemat = new MaterialLayer("concrete", 0.05); + pipe1.getWall().addMaterialLayer(epoxmat); + pipe1.getWall().addMaterialLayer(steelmat); + pipe1.getWall().addMaterialLayer(concretemat); + System.out.println("pipe heat trans coef " + pipe1.getWall().getHeatTransferCoefficient()); + System.out.println("pipe heat trans coef " + pipe1.getWallHeatTransferCoefficient()); - SurroundingEnvironment surrEnv = new PipeSurroundingEnvironment("sea"); - pipe1.setSurroundingEnvironment(surrEnv); + SurroundingEnvironment surrEnv = new PipeSurroundingEnvironment("sea"); + pipe1.setSurroundingEnvironment(surrEnv); - pipe1.getSurroundingEnvironment().setTemperature(outtemperature); - testSystem.addComponent("methane", 0.99847 * gasflow, "MSm^3/day", 0); - testSystem.addComponent("water", 0.99847 * gasflow * 2000e-6, "MSm^3/day", 0); - // testSystem.addComponent("water", 0.00151314 * gasflow, "MSm^3/day", 0); - // testSystem.addComponent("MEG", 0.0000168455 * gasflow, "MSm^3/day", 0); - // testSystem.init(1); - // testSystem.addComponent("methane", 10, "MSm^3/day", 0); - // testSystem.addComponent("water", 5.9, 0); - // testSystem.addComponent("CO2", 100.333, "Nlitre/min", 0); - testSystem.addComponent("water", 5 * (1.0 - wtpr) * flow, "kg/min", 1); - testSystem.addComponent("MEG", (wtpr) * flow, "kg/min", 1); - // testSystem.addComponent("MDEA", wtpr*flow, "kg/min", 1); + double gasflow = 10.0; // MSm^3/day + double outtemperature = 273.15 + 95; + pipe1.getSurroundingEnvironment().setTemperature(outtemperature); + testSystem.addComponent("methane", 0.99847 * gasflow, "MSm^3/day", 0); + testSystem.addComponent("water", 0.99847 * gasflow * 2000e-6, "MSm^3/day", 0); + // testSystem.addComponent("water", 0.00151314 * gasflow, "MSm^3/day", 0); + // testSystem.addComponent("MEG", 0.0000168455 * gasflow, "MSm^3/day", 0); + // testSystem.init(1); + // testSystem.addComponent("methane", 10, "MSm^3/day", 0); + // testSystem.addComponent("water", 5.9, 0); + // testSystem.addComponent("CO2", 100.333, "Nlitre/min", 0); - // testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - // testSystem.setPhysicalPropertyModel(3); - // testSystem.setNumericDerivatives(true); - testSystem.initPhysicalProperties(); - testSystem.getPhase(0).setTemperature(273.15 + 85); - testSystem.getPhase(1).setTemperature(273.15 + 85); - // testSystem.init(0); + double flow = 1000.0; // kg/min + double wtpr = 0.99; // wt frac MEG + testSystem.addComponent("water", 5 * (1.0 - wtpr) * flow, "kg/min", 1); + testSystem.addComponent("MEG", (wtpr) * flow, "kg/min", 1); + // testSystem.addComponent("MDEA", wtpr*flow, "kg/min", 1); - AnnularFlow test = new AnnularFlow(testSystem, pipe1); - test.setInterphaseModelType(1); - test.setLengthOfNode(0.01); - test.getFluidBoundary().setHeatTransferCalc(true); - test.getFluidBoundary().setMassTransferCalc(true); - test.getFluidBoundary().useFiniteFluxCorrection(true); - test.getFluidBoundary().useThermodynamicCorrections(true); - test.initFlowCalc(); - // test.display("testnode 0"); - // test.write("node 0", fileName, true); - System.out.println( - "rate " + test.getBulkSystem().getPhase(0).getComponent(1).getRate("Nlitre/min")); - double oldRate = test.getBulkSystem().getPhase(0).getComponent(1).getRate("Nlitre/min"); - for (int i = 0; i < 1; i++) { - test.initFlowCalc(); - test.init(); - test.calcFluxes(); - // test.getFluidBoundary().display(""); - // test.update(); - // test.write(("node " + i), fileName, false); - // System.out.println("velocity " + test.getVelocity(1)); - // test.getInterphaseSystem().display("length "); - test.display("testnode " + i); - test.getBulkSystem().display("test"); - // test.getFluidBoundary().display("test"); - } - // test.display("testnode last"); + // testSystem.chemicalReactionInit(); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + // testSystem.setPhysicalPropertyModel(3); + // testSystem.setNumericDerivatives(true); + testSystem.initPhysicalProperties(); + testSystem.getPhase(0).setTemperature(273.15 + 85); + testSystem.getPhase(1).setTemperature(273.15 + 85); + // testSystem.init(0); - System.out.println( - "rate " + test.getBulkSystem().getPhase(0).getComponent(1).getRate("Nlitre/min")); - System.out.println( - "diff " + (test.getBulkSystem().getPhase(0).getComponent(1).getRate("Nlitre/min") - - oldRate)); - for (int i = 0; i < 1000; i++) { - test.calcFluxes(); - test.update(); - if (i % 100 == 0) { - test.display("testnode " + i); - test.getBulkSystem().display("test " + i); - } - System.out - .println("aqueous phase " + test.getBulkSystem().getPhaseFraction("oil", "wt")); - } + AnnularFlow test = new AnnularFlow(testSystem, pipe1); + test.setInterphaseModelType(1); + test.setLengthOfNode(0.01); + test.getFluidBoundary().setHeatTransferCalc(true); + test.getFluidBoundary().setMassTransferCalc(true); + test.getFluidBoundary().useFiniteFluxCorrection(true); + test.getFluidBoundary().useThermodynamicCorrections(true); + test.initFlowCalc(); + // test.display("testnode 0"); + // test.write("node 0", fileName, true); + System.out + .println("rate " + test.getBulkSystem().getPhase(0).getComponent(1).getRate("Nlitre/min")); + double oldRate = test.getBulkSystem().getPhase(0).getComponent(1).getRate("Nlitre/min"); + for (int i = 0; i < 1; i++) { + test.initFlowCalc(); + test.init(); + test.calcFluxes(); + // test.getFluidBoundary().display(""); + // test.update(); + // test.write(("node " + i), fileName, false); + // System.out.println("velocity " + test.getVelocity(1)); + // test.getInterphaseSystem().display("length "); + test.getBulkSystem().prettyPrint(); + // test.display("testnode " + i); + // test.getBulkSystem().display("test"); + // test.getFluidBoundary().display("test"); + } + // test.display("testnode last"); - // test.getFluidBoundary().display("test"); - // test.display("testnode4"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode5"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode6"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode7"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode8"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode9"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode10"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode11"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode12"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode13"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode14"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode15"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode16"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode17"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode18"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode19"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode20"); - // test.calcFluxes(); - // test.update(); - // test.display("testnod21"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode22"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode23"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode24"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode25"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode26"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode27"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode28"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode29"); - // test.calcFluxes(); - // test.update(); - // test.display("testnode30"); + System.out + .println("rate " + test.getBulkSystem().getPhase(0).getComponent(1).getRate("Nlitre/min")); + System.out.println("diff " + + (test.getBulkSystem().getPhase(0).getComponent(1).getRate("Nlitre/min") - oldRate)); + for (int i = 0; i < 1000; i++) { + test.calcFluxes(); + test.update(); + if (i % 100 == 0) { + // test.display("testnode " + i); + test.getBulkSystem().prettyPrint(); + } + System.out.println("aqueous phase " + test.getBulkSystem().getPhaseFraction("oil", "wt")); } + + // test.getFluidBoundary().display("test"); + // test.display("testnode4"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode5"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode6"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode7"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode8"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode9"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode10"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode11"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode12"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode13"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode14"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode15"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode16"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode17"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode18"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode19"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode20"); + // test.calcFluxes(); + // test.update(); + // test.display("testnod21"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode22"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode23"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode24"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode25"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode26"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode27"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode28"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode29"); + // test.calcFluxes(); + // test.update(); + // test.display("testnode30"); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/BubbleFlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/BubbleFlowNode.java index b6f77dfefc..a654e4a4b5 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/BubbleFlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/BubbleFlowNode.java @@ -17,214 +17,214 @@ * @version $Id: $Id */ public class BubbleFlowNode extends TwoPhaseFlowNode { - private static final long serialVersionUID = 1000; - private double averageBubbleDiameter = 0.001; - - /** - *

- * Constructor for BubbleFlowNode. - *

- */ - public BubbleFlowNode() { - this.flowNodeType = "bubble"; + private static final long serialVersionUID = 1000; + private double averageBubbleDiameter = 0.001; + + /** + *

+ * Constructor for BubbleFlowNode. + *

+ */ + public BubbleFlowNode() { + this.flowNodeType = "bubble"; + } + + /** + *

+ * Constructor for BubbleFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public BubbleFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "bubble"; + this.interphaseTransportCoefficient = new InterphaseDropletFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } + + /** + *

+ * Constructor for BubbleFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public BubbleFlowNode(SystemInterface system, SystemInterface interphaseSystem, + GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "bubble"; + this.interphaseTransportCoefficient = new InterphaseDropletFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } + + /** {@inheritDoc} */ + @Override + public double calcGasLiquidContactArea() { + interphaseContactArea = pipe.getNodeLength() * interphaseContactLength[0]; + return interphaseContactArea; + } + + /** {@inheritDoc} */ + @Override + public void initFlowCalc() { + // phaseFraction[0] = bulkSystem.getPhase(0).getBeta(); + phaseFraction[0] = getBulkSystem().getVolumeFraction(0); + phaseFraction[1] = 1.0 - phaseFraction[0]; + initVelocity(); + this.init(); + + initVelocity(); + } + + /** {@inheritDoc} */ + @Override + public BubbleFlowNode clone() { + BubbleFlowNode clonedSystem = null; + try { + clonedSystem = (BubbleFlowNode) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** - *

- * Constructor for BubbleFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public BubbleFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "bubble"; - this.interphaseTransportCoefficient = new InterphaseDropletFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); + return clonedSystem; + } + + /** {@inheritDoc} */ + @Override + public void init() { + inclination = 0.0; + this.calcContactLength(); + // System.out.println("len " + this.calcContactLength()); + super.init(); + } + + /** {@inheritDoc} */ + @Override + public double calcContactLength() { + double phaseAngel = + pi * phaseFraction[1] + Math.pow(3.0 * pi / 2.0, 1.0 / 3.0) * (1.0 - 2.0 * phaseFraction[1] + + Math.pow(phaseFraction[1], 1.0 / 3.0) - Math.pow(phaseFraction[0], 1.0 / 3.0)); + wallContactLength[1] = phaseAngel * pipe.getDiameter(); + wallContactLength[0] = pi * pipe.getDiameter() - wallContactLength[1]; + interphaseContactLength[0] = pipe.getDiameter() * Math.sin(phaseAngel); + interphaseContactLength[1] = pipe.getDiameter() * Math.sin(phaseAngel); + + double volumeOfBubble = 4.0 / 3.0 * Math.PI * Math.pow(averageBubbleDiameter / 2.0, 3.0); + double surfaceAreaOfBubble = 4.0 * Math.PI * Math.pow(averageBubbleDiameter / 2.0, 2.0); + + double numbDropletsPerTime = getBulkSystem().getPhase(0).getVolume("m3") / volumeOfBubble; + interphaseContactLength[0] = numbDropletsPerTime * surfaceAreaOfBubble / velocity[0]; + interphaseContactLength[1] = interphaseContactLength[0]; + + return wallContactLength[0]; + } + + /** {@inheritDoc} */ + @Override + public FlowNodeInterface getNextNode() { + BubbleFlowNode newNode = this.clone(); + + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); + // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); } - /** - *

- * Constructor for BubbleFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public BubbleFlowNode(SystemInterface system, SystemInterface interphaseSystem, - GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "bubble"; - this.interphaseTransportCoefficient = new InterphaseDropletFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); + return newNode; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkSchwartzentruberEos(295.3, 50.01325); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + PipeData pipe1 = new PipeData(0.0250203, 0.00025); + testSystem.addComponent("CO2", 100.1061152181, "kg/hr", 0); + testSystem.addComponent("water", 1000.206862204876, "kg/hr", 1); + testSystem.createDatabase(true); + testSystem.setMixingRule(4); + testSystem.initPhysicalProperties(); + testSystem.init_x_y(); + testSystem.initBeta(); + testSystem.init(3); + + testSystem.display(); + FlowNodeInterface test = new BubbleFlowNode(testSystem, pipe1); + test.setInterphaseModelType(1); + test.setLengthOfNode(0.0001); + test.getGeometry().getSurroundingEnvironment().setTemperature(273.15 + 20.0); + + test.getFluidBoundary().setHeatTransferCalc(false); + test.getFluidBoundary().setMassTransferCalc(true); + double length = 0; + test.initFlowCalc(); + double[][] temperatures2 = new double[3][1000]; + int k = 0; + for (int i = 0; i < 10000; i++) { + length += test.getLengthOfNode(); + test.initFlowCalc(); + test.calcFluxes(); + if (i > 1 && (i % 100) == 0) { + k++; + test.display("length " + length); + test.getBulkSystem().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + // test.getFluidBoundary().display("length " + length); + // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); + temperatures2[0][k] = length; + temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); + // test.getFluidBoundary().display("test"); + } + + // test.getBulkSystem().display(); + test.update(); + // test.getFluidBoundary().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + + // test.getFluidBoundary().display("test"); } - /** {@inheritDoc} */ - @Override - public double calcGasLiquidContactArea() { - interphaseContactArea = pipe.getNodeLength() * interphaseContactLength[0]; - return interphaseContactArea; - } - - /** {@inheritDoc} */ - @Override - public void initFlowCalc() { - // phaseFraction[0] = bulkSystem.getPhase(0).getBeta(); - phaseFraction[0] = getBulkSystem().getVolumeFraction(0); - phaseFraction[1] = 1.0 - phaseFraction[0]; - initVelocity(); - this.init(); - - initVelocity(); - } - - /** {@inheritDoc} */ - @Override - public BubbleFlowNode clone() { - BubbleFlowNode clonedSystem = null; - try { - clonedSystem = (BubbleFlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; - } - - /** {@inheritDoc} */ - @Override - public void init() { - inclination = 0.0; - this.calcContactLength(); - // System.out.println("len " + this.calcContactLength()); - super.init(); - } - - /** {@inheritDoc} */ - @Override - public double calcContactLength() { - double phaseAngel = pi * phaseFraction[1] + Math.pow(3.0 * pi / 2.0, 1.0 / 3.0) - * (1.0 - 2.0 * phaseFraction[1] + Math.pow(phaseFraction[1], 1.0 / 3.0) - - Math.pow(phaseFraction[0], 1.0 / 3.0)); - wallContactLength[1] = phaseAngel * pipe.getDiameter(); - wallContactLength[0] = pi * pipe.getDiameter() - wallContactLength[1]; - interphaseContactLength[0] = pipe.getDiameter() * Math.sin(phaseAngel); - interphaseContactLength[1] = pipe.getDiameter() * Math.sin(phaseAngel); - - double volumeOfBubble = 4.0 / 3.0 * Math.PI * Math.pow(averageBubbleDiameter / 2.0, 3.0); - double surfaceAreaOfBubble = 4.0 * Math.PI * Math.pow(averageBubbleDiameter / 2.0, 2.0); - - double numbDropletsPerTime = getBulkSystem().getPhase(0).getVolume("m3") / volumeOfBubble; - interphaseContactLength[0] = numbDropletsPerTime * surfaceAreaOfBubble / velocity[0]; - interphaseContactLength[1] = interphaseContactLength[0]; - - return wallContactLength[0]; - } - - /** {@inheritDoc} */ - @Override - public FlowNodeInterface getNextNode() { - BubbleFlowNode newNode = this.clone(); - - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); - // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); - } - - return newNode; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkSchwartzentruberEos(295.3, 50.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - PipeData pipe1 = new PipeData(0.0250203, 0.00025); - testSystem.addComponent("CO2", 100.1061152181, "kg/hr", 0); - testSystem.addComponent("water", 1000.206862204876, "kg/hr", 1); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.initPhysicalProperties(); - testSystem.init_x_y(); - testSystem.initBeta(); - testSystem.init(3); - - testSystem.display(); - FlowNodeInterface test = new BubbleFlowNode(testSystem, pipe1); - test.setInterphaseModelType(1); - test.setLengthOfNode(0.0001); - test.getGeometry().getSurroundingEnvironment().setTemperature(273.15 + 20.0); - - test.getFluidBoundary().setHeatTransferCalc(false); - test.getFluidBoundary().setMassTransferCalc(true); - double length = 0; - test.initFlowCalc(); - double[][] temperatures2 = new double[3][1000]; - int k = 0; - for (int i = 0; i < 10000; i++) { - length += test.getLengthOfNode(); - test.initFlowCalc(); - test.calcFluxes(); - if (i > 1 && (i % 100) == 0) { - k++; - test.display("length " + length); - test.getBulkSystem().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - // test.getFluidBoundary().display("length " + length); - // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); - temperatures2[0][k] = length; - temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); - // test.getFluidBoundary().display("test"); - } - - // test.getBulkSystem().display(); - test.update(); - // test.getFluidBoundary().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - - // test.getFluidBoundary().display("test"); - } - - for (int i = 0; i < k; i++) { - System.out.println("len temp " + temperatures2[0][i] + " " + temperatures2[1][i]); - } - System.out.println("contact length " + test.getInterphaseContactArea()); - } - - /** - *

- * Getter for the field averageBubbleDiameter. - *

- * - * @return a double - */ - public double getAverageBubbleDiameter() { - return averageBubbleDiameter; - } - - /** - *

- * Setter for the field averageBubbleDiameter. - *

- * - * @param averageBubbleDiameter a double - */ - public void setAverageBubbleDiameter(double averageBubbleDiameter) { - this.averageBubbleDiameter = averageBubbleDiameter; + for (int i = 0; i < k; i++) { + System.out.println("len temp " + temperatures2[0][i] + " " + temperatures2[1][i]); } + System.out.println("contact length " + test.getInterphaseContactArea()); + } + + /** + *

+ * Getter for the field averageBubbleDiameter. + *

+ * + * @return a double + */ + public double getAverageBubbleDiameter() { + return averageBubbleDiameter; + } + + /** + *

+ * Setter for the field averageBubbleDiameter. + *

+ * + * @param averageBubbleDiameter a double + */ + public void setAverageBubbleDiameter(double averageBubbleDiameter) { + this.averageBubbleDiameter = averageBubbleDiameter; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/DropletFlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/DropletFlowNode.java index c393c6caab..b091df923e 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/DropletFlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/DropletFlowNode.java @@ -18,310 +18,310 @@ * @version $Id: $Id */ public class DropletFlowNode extends TwoPhaseFlowNode { - private static final long serialVersionUID = 1000; - private double averageDropletDiameter = 100.0e-6; - - /** - *

- * Constructor for DropletFlowNode. - *

- */ - public DropletFlowNode() { - this.flowNodeType = "droplet"; + private static final long serialVersionUID = 1000; + private double averageDropletDiameter = 100.0e-6; + + /** + *

+ * Constructor for DropletFlowNode. + *

+ */ + public DropletFlowNode() { + this.flowNodeType = "droplet"; + } + + /** + *

+ * Constructor for DropletFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public DropletFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "droplet"; + this.interphaseTransportCoefficient = new InterphaseDropletFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } + + /** + *

+ * Constructor for DropletFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public DropletFlowNode(SystemInterface system, SystemInterface interphaseSystem, + GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "stratified"; + this.interphaseTransportCoefficient = new InterphaseDropletFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } + + /** {@inheritDoc} */ + @Override + public double calcGasLiquidContactArea() { + interphaseContactArea = pipe.getNodeLength() * interphaseContactLength[0]; + return interphaseContactArea; + } + + /** {@inheritDoc} */ + @Override + public void initFlowCalc() { + // phaseFraction[0] = bulkSystem.getPhase(0).getBeta(); + phaseFraction[0] = getBulkSystem().getVolumeFraction(0); + phaseFraction[1] = 1.0 - phaseFraction[0]; + initVelocity(); + this.init(); + + initVelocity(); + } + + /** {@inheritDoc} */ + @Override + public DropletFlowNode clone() { + DropletFlowNode clonedSystem = null; + try { + clonedSystem = (DropletFlowNode) super.clone(); + } catch (Exception ex) { } - /** - *

- * Constructor for DropletFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public DropletFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "droplet"; - this.interphaseTransportCoefficient = new InterphaseDropletFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); + return clonedSystem; + } + + /** {@inheritDoc} */ + @Override + public void init() { + inclination = 0.0; + this.calcContactLength(); + // System.out.println("len " + this.calcContactLength()); + super.init(); + } + + /** {@inheritDoc} */ + @Override + public double calcContactLength() { + double phaseAngel = + pi * phaseFraction[1] + Math.pow(3.0 * pi / 2.0, 1.0 / 3.0) * (1.0 - 2.0 * phaseFraction[1] + + Math.pow(phaseFraction[1], 1.0 / 3.0) - Math.pow(phaseFraction[0], 1.0 / 3.0)); + wallContactLength[1] = phaseAngel * pipe.getDiameter(); + wallContactLength[0] = pi * pipe.getDiameter() - wallContactLength[1]; + interphaseContactLength[0] = pipe.getDiameter() * Math.sin(phaseAngel); + interphaseContactLength[1] = pipe.getDiameter() * Math.sin(phaseAngel); + + double volumeOfDroplet = 4.0 / 3.0 * Math.PI * Math.pow(averageDropletDiameter / 2.0, 3.0); + double surfaceAreaOfDroplet = 4.0 * Math.PI * Math.pow(averageDropletDiameter / 2.0, 2.0); + + double numbDropletsPerTime = getBulkSystem().getPhase(1).getVolume("m3") / volumeOfDroplet; + interphaseContactLength[0] = numbDropletsPerTime * surfaceAreaOfDroplet / velocity[0]; + interphaseContactLength[1] = interphaseContactLength[0]; + + return wallContactLength[0]; + } + + /** {@inheritDoc} */ + @Override + public FlowNodeInterface getNextNode() { + DropletFlowNode newNode = this.clone(); + + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); + // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); } - /** - *

- * Constructor for DropletFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public DropletFlowNode(SystemInterface system, SystemInterface interphaseSystem, - GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "stratified"; - this.interphaseTransportCoefficient = new InterphaseDropletFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); + return newNode; + } + + /** + *

+ * mainOld. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void mainOld(String[] args) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 11.0, 60.0); + // SystemInterface testSystem = new SystemSrkCPAstatoil(275.3, + // ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + PipeData pipe1 = new PipeData(0.203, 0.00025); + + testSystem.addComponent("methane", 250.0, "Nliter/min", 0); + testSystem.addComponent("water", .00010, "Nliter/min", 0); + // testSystem.addComponent("n-heptane", 20.0, "Nliter/min", 1); + testSystem.addComponent("TEG", 90.0, "kg/min", 1); + testSystem.addComponent("water", 1.0, "kg/min", 1); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.initPhysicalProperties(); + + testSystem.init_x_y(); + testSystem.initBeta(); + testSystem.init(3); + + // testOps.TPflash(); + testSystem.display(); + // testSystem.setTemperature(273.15+20); + // testSystem.initPhysicalProperties(); + + FlowNodeInterface test = new DropletFlowNode(testSystem, pipe1); + + test.setInterphaseModelType(1); + test.setLengthOfNode(0.1); + test.getGeometry().getSurroundingEnvironment().setTemperature(273.15 + 11.0); + + test.getFluidBoundary().setHeatTransferCalc(true); + test.getFluidBoundary().setMassTransferCalc(true); + double length = 0; + // test.initFlowCalc(); + + test.initFlowCalc(); + test.calcFluxes(); + test.getFluidBoundary().display("test"); + double[][] temperatures2 = new double[3][1000]; + int k = 0; + for (int i = 0; i < 1000; i++) { + length += test.getLengthOfNode(); + test.initFlowCalc(); + test.calcFluxes(); + + if (i > 1 && (i % 1) == 0) { + k++; + // test.display("length " + length); + // test.getBulkSystem().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + // test.getFluidBoundary().display("length " + length); + // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); + temperatures2[0][k] = length; + temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); + System.out.println(test.getBulkSystem().getPhase(0).getComponent("water").getx()); + // test.getFluidBoundary().display("test"); + } + + // test.getBulkSystem().display(); + test.update(); + // test.getFluidBoundary().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + + // test.getFluidBoundary().display("test"); } - /** {@inheritDoc} */ - @Override - public double calcGasLiquidContactArea() { - interphaseContactArea = pipe.getNodeLength() * interphaseContactLength[0]; - return interphaseContactArea; + for (int i = 0; i < k; i++) { + System.out.println("len temp " + temperatures2[0][i] + " " + temperatures2[1][i]); } - - /** {@inheritDoc} */ - @Override - public void initFlowCalc() { - // phaseFraction[0] = bulkSystem.getPhase(0).getBeta(); - phaseFraction[0] = getBulkSystem().getVolumeFraction(0); - phaseFraction[1] = 1.0 - phaseFraction[0]; - initVelocity(); - this.init(); - - initVelocity(); - } - - /** {@inheritDoc} */ - @Override - public DropletFlowNode clone() { - DropletFlowNode clonedSystem = null; - try { - clonedSystem = (DropletFlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; - } - - /** {@inheritDoc} */ - @Override - public void init() { - inclination = 0.0; - this.calcContactLength(); - // System.out.println("len " + this.calcContactLength()); - super.init(); - } - - /** {@inheritDoc} */ - @Override - public double calcContactLength() { - double phaseAngel = pi * phaseFraction[1] + Math.pow(3.0 * pi / 2.0, 1.0 / 3.0) - * (1.0 - 2.0 * phaseFraction[1] + Math.pow(phaseFraction[1], 1.0 / 3.0) - - Math.pow(phaseFraction[0], 1.0 / 3.0)); - wallContactLength[1] = phaseAngel * pipe.getDiameter(); - wallContactLength[0] = pi * pipe.getDiameter() - wallContactLength[1]; - interphaseContactLength[0] = pipe.getDiameter() * Math.sin(phaseAngel); - interphaseContactLength[1] = pipe.getDiameter() * Math.sin(phaseAngel); - - double volumeOfDroplet = 4.0 / 3.0 * Math.PI * Math.pow(averageDropletDiameter / 2.0, 3.0); - double surfaceAreaOfDroplet = 4.0 * Math.PI * Math.pow(averageDropletDiameter / 2.0, 2.0); - - double numbDropletsPerTime = getBulkSystem().getPhase(1).getVolume("m3") / volumeOfDroplet; - interphaseContactLength[0] = numbDropletsPerTime * surfaceAreaOfDroplet / velocity[0]; - interphaseContactLength[1] = interphaseContactLength[0]; - - return wallContactLength[0]; - } - - /** {@inheritDoc} */ - @Override - public FlowNodeInterface getNextNode() { - DropletFlowNode newNode = this.clone(); - - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); - // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); - } - - return newNode; - } - - /** - *

- * mainOld. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void mainOld(String[] args) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 11.0, 60.0); - // SystemInterface testSystem = new SystemSrkCPAstatoil(275.3, 1.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - PipeData pipe1 = new PipeData(0.203, 0.00025); - - testSystem.addComponent("methane", 250.0, "Nliter/min", 0); - testSystem.addComponent("water", .00010, "Nliter/min", 0); - // testSystem.addComponent("n-heptane", 20.0, "Nliter/min", 1); - testSystem.addComponent("TEG", 90.0, "kg/min", 1); - testSystem.addComponent("water", 1.0, "kg/min", 1); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.initPhysicalProperties(); - - testSystem.init_x_y(); - testSystem.initBeta(); - testSystem.init(3); - - // testOps.TPflash(); - testSystem.display(); - // testSystem.setTemperature(273.15+20); - // testSystem.initPhysicalProperties(); - - FlowNodeInterface test = new DropletFlowNode(testSystem, pipe1); - - test.setInterphaseModelType(1); - test.setLengthOfNode(0.1); - test.getGeometry().getSurroundingEnvironment().setTemperature(273.15 + 11.0); - - test.getFluidBoundary().setHeatTransferCalc(true); - test.getFluidBoundary().setMassTransferCalc(true); - double length = 0; - // test.initFlowCalc(); - - test.initFlowCalc(); - test.calcFluxes(); - test.getFluidBoundary().display("test"); - double[][] temperatures2 = new double[3][1000]; - int k = 0; - for (int i = 0; i < 1000; i++) { - length += test.getLengthOfNode(); - test.initFlowCalc(); - test.calcFluxes(); - - if (i > 1 && (i % 1) == 0) { - k++; - // test.display("length " + length); - // test.getBulkSystem().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - // test.getFluidBoundary().display("length " + length); - // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); - temperatures2[0][k] = length; - temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); - System.out.println(test.getBulkSystem().getPhase(0).getComponent("water").getx()); - // test.getFluidBoundary().display("test"); - } - - // test.getBulkSystem().display(); - test.update(); - // test.getFluidBoundary().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - - // test.getFluidBoundary().display("test"); - } - - for (int i = 0; i < k; i++) { - System.out.println("len temp " + temperatures2[0][i] + " " + temperatures2[1][i]); - } - ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); - ops.TPflash(); - testSystem.display(); - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 5.0, 10.0e-3); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - PipeData pipe1 = new PipeData(0.203, 0.00025); - - testSystem.addComponent("oxygen", 50.0e-6, "kg/min", 0); - testSystem.addComponent("oxygen", 8e-6, "kg/min", 1); - testSystem.addComponent("water", 100.0, "kg/min", 1); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.initPhysicalProperties(); - - testSystem.init_x_y(); - testSystem.initBeta(); - testSystem.init(3); - - testOps.TPflash(); - testSystem.display(); - // testSystem.setTemperature(273.15+20); - // testSystem.initPhysicalProperties(); - - FlowNodeInterface test = new DropletFlowNode(testSystem, pipe1); - - test.setInterphaseModelType(1); - test.setLengthOfNode(0.1); - test.getGeometry().getSurroundingEnvironment().setTemperature(273.15 + 11.0); - - test.getFluidBoundary().setHeatTransferCalc(true); - test.getFluidBoundary().setMassTransferCalc(true); - double length = 0; - // test.initFlowCalc(); - - test.initFlowCalc(); - test.calcFluxes(); - test.getFluidBoundary().display("test"); - double[][] temperatures2 = new double[3][1000]; - int k = 0; - for (int i = 0; i < 1000; i++) { - length += test.getLengthOfNode(); - test.initFlowCalc(); - test.calcFluxes(); - - if (i > 1 && (i % 1) == 0) { - k++; - // test.display("length " + length); - // test.getBulkSystem().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - // test.getFluidBoundary().display("length " + length); - // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); - temperatures2[0][k] = length; - temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); - System.out.println(test.getBulkSystem().getPhase(0).getComponent("water").getx()); - // test.getFluidBoundary().display("test"); - } - - // test.getBulkSystem().display(); - test.update(); - // test.getFluidBoundary().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - - // test.getFluidBoundary().display("test"); - } - - for (int i = 0; i < k; i++) { - System.out.println("len temp " + temperatures2[0][i] + " " + temperatures2[1][i]); - } - ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); - ops.TPflash(); - testSystem.display(); - } - - /** - *

- * Getter for the field averageDropletDiameter. - *

- * - * @return a double - */ - public double getAverageDropletDiameter() { - return averageDropletDiameter; + ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + ops.TPflash(); + testSystem.display(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 5.0, 10.0e-3); + + testSystem.addComponent("oxygen", 50.0e-6, "kg/min", 0); + testSystem.addComponent("oxygen", 8e-6, "kg/min", 1); + testSystem.addComponent("water", 100.0, "kg/min", 1); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.initPhysicalProperties(); + + testSystem.init_x_y(); + testSystem.initBeta(); + testSystem.init(3); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.display(); + // testSystem.setTemperature(273.15+20); + // testSystem.initPhysicalProperties(); + + PipeData pipe1 = new PipeData(0.203, 0.00025); + FlowNodeInterface test = new DropletFlowNode(testSystem, pipe1); + + test.setInterphaseModelType(1); + test.setLengthOfNode(0.1); + test.getGeometry().getSurroundingEnvironment().setTemperature(273.15 + 11.0); + + test.getFluidBoundary().setHeatTransferCalc(true); + test.getFluidBoundary().setMassTransferCalc(true); + double length = 0; + // test.initFlowCalc(); + + test.initFlowCalc(); + test.calcFluxes(); + test.getFluidBoundary().display("test"); + double[][] temperatures2 = new double[3][1000]; + int k = 0; + for (int i = 0; i < 1000; i++) { + length += test.getLengthOfNode(); + test.initFlowCalc(); + test.calcFluxes(); + + if (i > 1 && (i % 1) == 0) { + k++; + // test.display("length " + length); + // test.getBulkSystem().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + // test.getFluidBoundary().display("length " + length); + // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); + temperatures2[0][k] = length; + temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); + System.out.println(test.getBulkSystem().getPhase(0).getComponent("water").getx()); + // test.getFluidBoundary().display("test"); + } + + // test.getBulkSystem().display(); + test.update(); + // test.getFluidBoundary().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + + // test.getFluidBoundary().display("test"); } - /** - *

- * Setter for the field averageDropletDiameter. - *

- * - * @param averageDropletDiameter a double - */ - public void setAverageDropletDiameter(double averageDropletDiameter) { - this.averageDropletDiameter = averageDropletDiameter; + for (int i = 0; i < k; i++) { + System.out.println("len temp " + temperatures2[0][i] + " " + temperatures2[1][i]); } + ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + ops.TPflash(); + testSystem.display(); + } + + /** + *

+ * Getter for the field averageDropletDiameter. + *

+ * + * @return a double + */ + public double getAverageDropletDiameter() { + return averageDropletDiameter; + } + + /** + *

+ * Setter for the field averageDropletDiameter. + *

+ * + * @param averageDropletDiameter a double + */ + public void setAverageDropletDiameter(double averageDropletDiameter) { + this.averageDropletDiameter = averageDropletDiameter; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/StratifiedFlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/StratifiedFlowNode.java index bee67e92b6..28042f22b2 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/StratifiedFlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/StratifiedFlowNode.java @@ -17,190 +17,190 @@ * @version $Id: $Id */ public class StratifiedFlowNode extends TwoPhaseFlowNode { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for StratifiedFlowNode. - *

- */ - public StratifiedFlowNode() { - this.flowNodeType = "stratified"; + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for StratifiedFlowNode. + *

+ */ + public StratifiedFlowNode() { + this.flowNodeType = "stratified"; + } + + /** + *

+ * Constructor for StratifiedFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public StratifiedFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "stratified"; + this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } + + /** + *

+ * Constructor for StratifiedFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public StratifiedFlowNode(SystemInterface system, SystemInterface interphaseSystem, + GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "stratified"; + this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } + + /** {@inheritDoc} */ + @Override + public StratifiedFlowNode clone() { + StratifiedFlowNode clonedSystem = null; + try { + clonedSystem = (StratifiedFlowNode) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** - *

- * Constructor for StratifiedFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public StratifiedFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "stratified"; - this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); + return clonedSystem; + } + + /** {@inheritDoc} */ + @Override + public void init() { + inclination = 0.0; + this.calcContactLength(); + // System.out.println("len " + this.calcContactLength()); + super.init(); + } + + /** {@inheritDoc} */ + @Override + public double calcContactLength() { + double phaseAngel = + pi * phaseFraction[1] + Math.pow(3.0 * pi / 2.0, 1.0 / 3.0) * (1.0 - 2.0 * phaseFraction[1] + + Math.pow(phaseFraction[1], 1.0 / 3.0) - Math.pow(phaseFraction[0], 1.0 / 3.0)); + wallContactLength[1] = phaseAngel * pipe.getDiameter(); + wallContactLength[0] = pi * pipe.getDiameter() - wallContactLength[1]; + interphaseContactLength[0] = pipe.getDiameter() * Math.sin(phaseAngel); + interphaseContactLength[1] = pipe.getDiameter() * Math.sin(phaseAngel); + return wallContactLength[0]; + } + + /** {@inheritDoc} */ + @Override + public FlowNodeInterface getNextNode() { + StratifiedFlowNode newNode = this.clone(); + + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); + // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); } - /** - *

- * Constructor for StratifiedFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public StratifiedFlowNode(SystemInterface system, SystemInterface interphaseSystem, - GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "stratified"; - this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); + return newNode; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + // SystemInterface testSystem = new SystemSrkEos(273.15 + 11.0, 60.0); + SystemInterface testSystem = new neqsim.thermo.system.SystemSrkCPAstatoil(325.3, 100.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + PipeData pipe1 = new PipeData(0.250203, 0.00025); + testSystem.addComponent("methane", 0.1, "MSm3/day", 0); + testSystem.addComponent("water", 0.4 * 5.0, "kg/hr", 1); + testSystem.addComponent("MEG", 0.6 * 5.0, "kg/hr", 1); + // testSystem.addComponent("nitrogen", 25.0, 0); + // testSystem.addComponent("CO2", 250.0, 0); + // testSystem.addComponent("methane", 5.0, 0); + // testSystem.addComponent("nitrogen", 5.0, 1); + // testSystem.addComponent("CO2", 250.0, 1); + // testSystem.addComponent("methane", 25.0, 1); + // testSystem.addComponent("n-pentane", 25.0, 1); + // testSystem.addComponent("MDEA", 0.08, 1); + // testSystem.getPhase(1).setTemperature(275); + // testSystem.chemicalReactionInit(); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + // testSystem.getPhase(0).setTemperature(273.15 + 100.0); + testSystem.initPhysicalProperties(); + + // testSystem.addComponent("nitrogen", testSystem.getPhase(1).getMolarVolume() / + // testSystem.getPhase(0).getMolarVolume() * + // testSystem.getPhase(0).getComponent("CO2").getNumberOfmoles(), 0); + + // testSystem.getChemicalReactionOperations().solveChemEq(1); + testSystem.init_x_y(); + testSystem.initBeta(); + testSystem.init(3); + + // testOps.TPflash(); + testSystem.display(); + // testSystem.setTemperature(273.15+20); + // testSystem.initPhysicalProperties(); + + // FlowNodeInterface test = new StratifiedFlowNode(testSystem, pipe1); + // FlowNodeInterface test = new AnnularFlow(testSystem, pipe1); + FlowNodeInterface test = new DropletFlowNode(testSystem, pipe1); + test.setInterphaseModelType(1); + test.setLengthOfNode(0.001); + test.getGeometry().getSurroundingEnvironment().setTemperature(273.15 + 4.0); + + test.getFluidBoundary().setHeatTransferCalc(false); + test.getFluidBoundary().setMassTransferCalc(true); + double length = 0; + test.initFlowCalc(); + double[][] temperatures2 = new double[3][1000]; + int k = 0; + for (int i = 0; i < 100000; i++) { + length += test.getLengthOfNode(); + test.initFlowCalc(); + test.calcFluxes(); + if (i > 1 && (i % 1000) == 0) { + k++; + test.display("length " + length); + System.out.println("length " + length + " wt% MEG " + + test.getBulkSystem().getPhase("aqueous").getWtFrac("MEG") * 100.0); + // test.getBulkSystem().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + // test.getFluidBoundary().display("length " + length); + // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); + temperatures2[0][k] = length; + temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); + // test.getFluidBoundary().display("test"); + } + + // test.getBulkSystem().display(); + test.update(); + // test.getFluidBoundary().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + + // test.getFluidBoundary().display("test"); } - /** {@inheritDoc} */ - @Override - public StratifiedFlowNode clone() { - StratifiedFlowNode clonedSystem = null; - try { - clonedSystem = (StratifiedFlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; - } - - /** {@inheritDoc} */ - @Override - public void init() { - inclination = 0.0; - this.calcContactLength(); - // System.out.println("len " + this.calcContactLength()); - super.init(); - } - - /** {@inheritDoc} */ - @Override - public double calcContactLength() { - double phaseAngel = pi * phaseFraction[1] + Math.pow(3.0 * pi / 2.0, 1.0 / 3.0) - * (1.0 - 2.0 * phaseFraction[1] + Math.pow(phaseFraction[1], 1.0 / 3.0) - - Math.pow(phaseFraction[0], 1.0 / 3.0)); - wallContactLength[1] = phaseAngel * pipe.getDiameter(); - wallContactLength[0] = pi * pipe.getDiameter() - wallContactLength[1]; - interphaseContactLength[0] = pipe.getDiameter() * Math.sin(phaseAngel); - interphaseContactLength[1] = pipe.getDiameter() * Math.sin(phaseAngel); - return wallContactLength[0]; - } - - /** {@inheritDoc} */ - @Override - public FlowNodeInterface getNextNode() { - StratifiedFlowNode newNode = this.clone(); - - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); - // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); - } - - return newNode; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - // SystemInterface testSystem = new SystemSrkEos(273.15 + 11.0, 60.0); - SystemInterface testSystem = new neqsim.thermo.system.SystemSrkCPAstatoil(325.3, 100.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - PipeData pipe1 = new PipeData(0.250203, 0.00025); - testSystem.addComponent("methane", 0.1, "MSm3/day", 0); - testSystem.addComponent("water", 0.4 * 5.0, "kg/hr", 1); - testSystem.addComponent("MEG", 0.6 * 5.0, "kg/hr", 1); - // testSystem.addComponent("nitrogen", 25.0, 0); - // testSystem.addComponent("CO2", 250.0, 0); - // testSystem.addComponent("methane", 5.0, 0); - // testSystem.addComponent("nitrogen", 5.0, 1); - // testSystem.addComponent("CO2", 250.0, 1); - // testSystem.addComponent("methane", 25.0, 1); - // testSystem.addComponent("n-pentane", 25.0, 1); - // testSystem.addComponent("MDEA", 0.08, 1); - // testSystem.getPhase(1).setTemperature(275); - // testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - // testSystem.getPhase(0).setTemperature(273.15 + 100.0); - testSystem.initPhysicalProperties(); - - // testSystem.addComponent("nitrogen", testSystem.getPhase(1).getMolarVolume() / - // testSystem.getPhase(0).getMolarVolume() * - // testSystem.getPhase(0).getComponent("CO2").getNumberOfmoles(), 0); - - // testSystem.getChemicalReactionOperations().solveChemEq(1); - testSystem.init_x_y(); - testSystem.initBeta(); - testSystem.init(3); - - // testOps.TPflash(); - testSystem.display(); - // testSystem.setTemperature(273.15+20); - // testSystem.initPhysicalProperties(); - - // FlowNodeInterface test = new StratifiedFlowNode(testSystem, pipe1); - // FlowNodeInterface test = new AnnularFlow(testSystem, pipe1); - FlowNodeInterface test = new DropletFlowNode(testSystem, pipe1); - test.setInterphaseModelType(1); - test.setLengthOfNode(0.001); - test.getGeometry().getSurroundingEnvironment().setTemperature(273.15 + 4.0); - - test.getFluidBoundary().setHeatTransferCalc(false); - test.getFluidBoundary().setMassTransferCalc(true); - double length = 0; - test.initFlowCalc(); - double[][] temperatures2 = new double[3][1000]; - int k = 0; - for (int i = 0; i < 100000; i++) { - length += test.getLengthOfNode(); - test.initFlowCalc(); - test.calcFluxes(); - if (i > 1 && (i % 1000) == 0) { - k++; - test.display("length " + length); - System.out.println("length " + length + " wt% MEG " - + test.getBulkSystem().getPhase("aqueous").getWtFrac("MEG") * 100.0); - // test.getBulkSystem().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - // test.getFluidBoundary().display("length " + length); - // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); - temperatures2[0][k] = length; - temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); - // test.getFluidBoundary().display("test"); - } - - // test.getBulkSystem().display(); - test.update(); - // test.getFluidBoundary().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - - // test.getFluidBoundary().display("test"); - } - - for (int i = 0; i < k; i++) { - System.out.println("len temp " + temperatures2[0][i] + " " + temperatures2[1][i]); - } - System.out.println("contact length " + test.getInterphaseContactArea()); + for (int i = 0; i < k; i++) { + System.out.println("len temp " + temperatures2[0][i] + " " + temperatures2[1][i]); } + System.out.println("contact length " + test.getInterphaseContactArea()); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseReactorFlowNode/TwoPhasePackedBedFlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseReactorFlowNode/TwoPhasePackedBedFlowNode.java index 7dc9485f5a..47a8e76024 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseReactorFlowNode/TwoPhasePackedBedFlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseReactorFlowNode/TwoPhasePackedBedFlowNode.java @@ -18,241 +18,241 @@ * @version $Id: $Id */ public class TwoPhasePackedBedFlowNode extends TwoPhaseFlowNode { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for TwoPhasePackedBedFlowNode. - *

- */ - public TwoPhasePackedBedFlowNode() { - this.flowNodeType = "packed bed"; - } - - /** - *

- * Constructor for TwoPhasePackedBedFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public TwoPhasePackedBedFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "packed bed"; - this.interphaseTransportCoefficient = new InterphasePackedBed(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); - } + /** + *

+ * Constructor for TwoPhasePackedBedFlowNode. + *

+ */ + public TwoPhasePackedBedFlowNode() { + this.flowNodeType = "packed bed"; + } - /** - *

- * Constructor for TwoPhasePackedBedFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public TwoPhasePackedBedFlowNode(SystemInterface system, SystemInterface interphaseSystem, - GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "packed bed"; - this.interphaseTransportCoefficient = new InterphasePackedBed(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); - } + /** + *

+ * Constructor for TwoPhasePackedBedFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public TwoPhasePackedBedFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "packed bed"; + this.interphaseTransportCoefficient = new InterphasePackedBed(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } - /** {@inheritDoc} */ - @Override - public TwoPhasePackedBedFlowNode clone() { - TwoPhasePackedBedFlowNode clonedSystem = null; - try { - clonedSystem = (TwoPhasePackedBedFlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } + /** + *

+ * Constructor for TwoPhasePackedBedFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public TwoPhasePackedBedFlowNode(SystemInterface system, SystemInterface interphaseSystem, + GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "packed bed"; + this.interphaseTransportCoefficient = new InterphasePackedBed(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public TwoPhasePackedBedFlowNode clone() { + TwoPhasePackedBedFlowNode clonedSystem = null; + try { + clonedSystem = (TwoPhasePackedBedFlowNode) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public void init() { - inclination = 0.0; - this.calcContactLength(); - super.init(); - } + return clonedSystem; + } - /** {@inheritDoc} */ - @Override - public void initFlowCalc() { - phaseFraction[0] = 1.0; - phaseFraction[1] = 1.0; - initVelocity(); - this.init(); - } + /** {@inheritDoc} */ + @Override + public void init() { + inclination = 0.0; + this.calcContactLength(); + super.init(); + } - /** {@inheritDoc} */ - @Override - public double calcHydraulicDiameter() { - return getGeometry().getDiameter(); - } + /** {@inheritDoc} */ + @Override + public void initFlowCalc() { + phaseFraction[0] = 1.0; + phaseFraction[1] = 1.0; + initVelocity(); + this.init(); + } - /** {@inheritDoc} */ - @Override - public double calcReynoldNumber() { - reynoldsNumber[1] = - getSuperficialVelocity(1) / getGeometry().getPacking().getSurfaceAreaPrVolume() - * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[1].getPhysicalProperties().getViscosity(); - reynoldsNumber[0] = - getSuperficialVelocity(0) / getGeometry().getPacking().getSurfaceAreaPrVolume() - * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[0].getPhysicalProperties().getViscosity(); - System.out.println("rey liq " + reynoldsNumber[1]); - System.out.println("rey gas " + reynoldsNumber[0]); - return reynoldsNumber[1]; - } + /** {@inheritDoc} */ + @Override + public double calcHydraulicDiameter() { + return getGeometry().getDiameter(); + } - /** {@inheritDoc} */ - @Override - public double calcContactLength() { - interphaseContactArea = - pipe.getPacking().getSurfaceAreaPrVolume() * getLengthOfNode() * pipe.getArea(); - return wallContactLength[0]; - } + /** {@inheritDoc} */ + @Override + public double calcReynoldNumber() { + reynoldsNumber[1] = + getSuperficialVelocity(1) / getGeometry().getPacking().getSurfaceAreaPrVolume() + * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[1].getPhysicalProperties().getViscosity(); + reynoldsNumber[0] = + getSuperficialVelocity(0) / getGeometry().getPacking().getSurfaceAreaPrVolume() + * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[0].getPhysicalProperties().getViscosity(); + System.out.println("rey liq " + reynoldsNumber[1]); + System.out.println("rey gas " + reynoldsNumber[0]); + return reynoldsNumber[1]; + } - /** {@inheritDoc} */ - @Override - public double calcGasLiquidContactArea() { - return pipe.getPacking().getSurfaceAreaPrVolume() * getLengthOfNode() * pipe.getArea() - * 5.0; - } + /** {@inheritDoc} */ + @Override + public double calcContactLength() { + interphaseContactArea = + pipe.getPacking().getSurfaceAreaPrVolume() * getLengthOfNode() * pipe.getArea(); + return wallContactLength[0]; + } - /** {@inheritDoc} */ - @Override - public FlowNodeInterface getNextNode() { - TwoPhasePackedBedFlowNode newNode = this.clone(); + /** {@inheritDoc} */ + @Override + public double calcGasLiquidContactArea() { + return pipe.getPacking().getSurfaceAreaPrVolume() * getLengthOfNode() * pipe.getArea() * 5.0; + } - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); - // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); - } + /** {@inheritDoc} */ + @Override + public FlowNodeInterface getNextNode() { + TwoPhasePackedBedFlowNode newNode = this.clone(); - return newNode; + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); + // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); } - /** {@inheritDoc} */ - @Override - public void update() { - for (int componentNumber = 0; componentNumber < getBulkSystem().getPhases()[0] - .getNumberOfComponents(); componentNumber++) { - if (componentNumber == 1) { - double liquidMolarRate = getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * getInterphaseContactArea();// getInterphaseContactLength(0)*getGeometry().getNodeLength(); - double gasMolarRate = -getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * getInterphaseContactArea();// getInterphaseContactLength(0)*getGeometry().getNodeLength(); - System.out.println("liquidMolarRate" + liquidMolarRate); - // getBulkSystem().getPhase(0).addMoles(componentNumber, - // this.flowDirection[0]*gasMolarRate); - getBulkSystem().addComponent(componentNumber, this.flowDirection[0] * gasMolarRate, - 0); - getBulkSystem().getPhase(1).addMolesChemReac(componentNumber, - this.flowDirection[1] * liquidMolarRate); - } - } + return newNode; + } - getBulkSystem().initBeta(); - getBulkSystem().init_x_y(); - getBulkSystem().init(1); + /** {@inheritDoc} */ + @Override + public void update() { + for (int componentNumber = 0; componentNumber < getBulkSystem().getPhases()[0] + .getNumberOfComponents(); componentNumber++) { + if (componentNumber == 1) { + double liquidMolarRate = + getFluidBoundary().getInterphaseMolarFlux(componentNumber) * getInterphaseContactArea(); // getInterphaseContactLength(0)*getGeometry().getNodeLength(); + double gasMolarRate = -getFluidBoundary().getInterphaseMolarFlux(componentNumber) + * getInterphaseContactArea(); // getInterphaseContactLength(0)*getGeometry().getNodeLength(); + System.out.println("liquidMolarRate" + liquidMolarRate); + // getBulkSystem().getPhase(0).addMoles(componentNumber, + // this.flowDirection[0]*gasMolarRate); + getBulkSystem().addComponent(componentNumber, this.flowDirection[0] * gasMolarRate, 0); + getBulkSystem().getPhase(1).addMolesChemReac(componentNumber, + this.flowDirection[1] * liquidMolarRate); + } + } - if (bulkSystem.isChemicalSystem()) { - getOperations().chemicalEquilibrium(); - } - getBulkSystem().init(3); - System.out.println("reac heat " - + getBulkSystem().getChemicalReactionOperations().getDeltaReactionHeat()); - double heatFlux = getInterphaseTransportCoefficient() - .calcInterphaseHeatTransferCoefficient(0, getPrandtlNumber(0), this) - * (getBulkSystem().getPhase(1).getTemperature() - - getBulkSystem().getPhase(0).getTemperature()) - * getInterphaseContactArea(); - double liquid_dT = -this.flowDirection[1] * heatFlux / getBulkSystem().getPhase(1).getCp(); - double gas_dT = this.flowDirection[0] * heatFlux / getBulkSystem().getPhase(0).getCp(); - liquid_dT += 0.0;// getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(1, - // this)*(getBulkSystem().getPhase(1).getTemperature()-pipe.getOuterTemperature()) - // * getWallContactLength(1) * - // getGeometry().getNodeLength()/getBulkSystem().getPhase(1).getCp(); - liquid_dT += 0.0;// getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, - // this)* - // (getBulkSystem().getPhase(0).getTemperature()-pipe.getOuterTemperature())* - // getWallContactLength(0) * - // getGeometry().getNodeLength()/getBulkSystem().getPhase(0).getCp(); - System.out.println("liq dT1 " + liquid_dT); - liquid_dT += this.flowDirection[1] - * getBulkSystem().getChemicalReactionOperations().getDeltaReactionHeat() - / getBulkSystem().getPhase(1).getCp(); - System.out.println("Cp " + getBulkSystem().getPhase(1).getCp()); - System.out.println("liq dT2 " + liquid_dT); - System.out.println("gas dT " + gas_dT); - getBulkSystem().getPhase(1) - .setTemperature(getBulkSystem().getPhase(1).getTemperature() + liquid_dT); - getBulkSystem().getPhase(0) - .setTemperature(getBulkSystem().getPhase(0).getTemperature() + gas_dT); + getBulkSystem().initBeta(); + getBulkSystem().init_x_y(); + getBulkSystem().init(1); - getBulkSystem().init(3); + if (bulkSystem.isChemicalSystem()) { + getOperations().chemicalEquilibrium(); } + getBulkSystem().init(3); + System.out.println( + "reac heat " + getBulkSystem().getChemicalReactionOperations().getDeltaReactionHeat()); + double heatFlux = getInterphaseTransportCoefficient().calcInterphaseHeatTransferCoefficient(0, + getPrandtlNumber(0), this) + * (getBulkSystem().getPhase(1).getTemperature() + - getBulkSystem().getPhase(0).getTemperature()) + * getInterphaseContactArea(); + double liquid_dT = -this.flowDirection[1] * heatFlux / getBulkSystem().getPhase(1).getCp(); + double gas_dT = this.flowDirection[0] * heatFlux / getBulkSystem().getPhase(0).getCp(); + liquid_dT += 0.0; + // getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(1, + // this)*(getBulkSystem().getPhase(1).getTemperature()-pipe.getOuterTemperature()) + // * getWallContactLength(1) * + // getGeometry().getNodeLength()/getBulkSystem().getPhase(1).getCp(); + liquid_dT += 0.0; + // getInterphaseTransportCoefficient().calcWallHeatTransferCoefficient(0, + // this)* + // (getBulkSystem().getPhase(0).getTemperature()-pipe.getOuterTemperature())* + // getWallContactLength(0) * + // getGeometry().getNodeLength()/getBulkSystem().getPhase(0).getCp(); + System.out.println("liq dT1 " + liquid_dT); + liquid_dT += this.flowDirection[1] + * getBulkSystem().getChemicalReactionOperations().getDeltaReactionHeat() + / getBulkSystem().getPhase(1).getCp(); + System.out.println("Cp " + getBulkSystem().getPhase(1).getCp()); + System.out.println("liq dT2 " + liquid_dT); + System.out.println("gas dT " + gas_dT); + getBulkSystem().getPhase(1) + .setTemperature(getBulkSystem().getPhase(1).getTemperature() + liquid_dT); + getBulkSystem().getPhase(0) + .setTemperature(getBulkSystem().getPhase(0).getTemperature() + gas_dT); + + getBulkSystem().init(3); + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemFurstElectrolyteEos(313.315, 50.01325); - // SystemInterface testSystem = new SystemSrkEos(295.3, 100.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemFurstElectrolyteEos(313.315, 50.01325); + // SystemInterface testSystem = new SystemSrkEos(295.3, 100.01325); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - ReactorData pipe1 = new ReactorData(0.25, 0.025); - pipe1.setPackingType("pallring", "metal", 50); + ReactorData pipe1 = new ReactorData(0.25, 0.025); + pipe1.setPackingType("pallring", "metal", 50); - testSystem.addComponent("methane", 100000.11152187, "Nlitre/min", 0); - testSystem.addComponent("CO2", 3000.511152181, "Nlitre/min", 0); - testSystem.addComponent("water", 100.502204876, "kg/min", 1); - testSystem.addComponent("MDEA", 100.502204876, "kg/min", 1); - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testOps.TPflash(); - testSystem.addComponent("CO2", 2000.11152181, "Nlitre/min", 0); - testSystem.setPhysicalPropertyModel(3); - testSystem.init_x_y(); - testSystem.getPhases()[1].setTemperature(313.0); - testSystem.getPhases()[0].setTemperature(325.0); + testSystem.addComponent("methane", 100000.11152187, "Nlitre/min", 0); + testSystem.addComponent("CO2", 3000.511152181, "Nlitre/min", 0); + testSystem.addComponent("water", 100.502204876, "kg/min", 1); + testSystem.addComponent("MDEA", 100.502204876, "kg/min", 1); + testSystem.chemicalReactionInit(); + testSystem.createDatabase(true); + testSystem.setMixingRule(4); + testOps.TPflash(); + testSystem.addComponent("CO2", 2000.11152181, "Nlitre/min", 0); + testSystem.setPhysicalPropertyModel(3); + testSystem.init_x_y(); + testSystem.getPhases()[1].setTemperature(313.0); + testSystem.getPhases()[0].setTemperature(325.0); - FlowNodeInterface test = new TwoPhasePackedBedFlowNode(testSystem, pipe1); - test.setLengthOfNode(0.1); - test.setInterphaseModelType(1); - test.getFluidBoundary().useFiniteFluxCorrection(false); - test.getFluidBoundary().useThermodynamicCorrections(false); - test.setFlowDirection(-1, 0); - test.initFlowCalc(); - test.initFlowCalc(); + FlowNodeInterface test = new TwoPhasePackedBedFlowNode(testSystem, pipe1); + test.setLengthOfNode(0.1); + test.setInterphaseModelType(1); + test.getFluidBoundary().useFiniteFluxCorrection(false); + test.getFluidBoundary().useThermodynamicCorrections(false); + test.setFlowDirection(-1, 0); + test.initFlowCalc(); + test.initFlowCalc(); - String fileName = "c:/labsim/exp-abs-heat.txt"; - test.write("node 0", fileName, true); - for (int i = 0; i < 120; i++) { - test.calcFluxes(); - test.update(); - test.display(); - test.write(("node " + i), fileName, false); - } + String fileName = "c:/labsim/exp-abs-heat.txt"; + test.write("node 0", fileName, true); + for (int i = 0; i < 120; i++) { + test.calcFluxes(); + test.update(); + test.display(); + test.write(("node " + i), fileName, false); } + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseReactorFlowNode/TwoPhaseTrayTowerFlowNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseReactorFlowNode/TwoPhaseTrayTowerFlowNode.java index 3014602314..1afffbb19a 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseReactorFlowNode/TwoPhaseTrayTowerFlowNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseReactorFlowNode/TwoPhaseTrayTowerFlowNode.java @@ -5,6 +5,7 @@ import neqsim.fluidMechanics.flowNode.twoPhaseNode.TwoPhaseFlowNode; import neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface; import neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemFurstElectrolyteEos; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -18,147 +19,148 @@ * @version $Id: $Id */ public class TwoPhaseTrayTowerFlowNode extends TwoPhaseFlowNode { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for TwoPhaseTrayTowerFlowNode. - *

- */ - public TwoPhaseTrayTowerFlowNode() { - this.flowNodeType = "stratified"; + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for TwoPhaseTrayTowerFlowNode. + *

+ */ + public TwoPhaseTrayTowerFlowNode() { + this.flowNodeType = "stratified"; + } + + /** + *

+ * Constructor for TwoPhaseTrayTowerFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public TwoPhaseTrayTowerFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "stratified"; + this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } + + /** + *

+ * Constructor for TwoPhaseTrayTowerFlowNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public TwoPhaseTrayTowerFlowNode(SystemInterface system, SystemInterface interphaseSystem, + GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "stratified"; + this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } + + /** {@inheritDoc} */ + @Override + public TwoPhaseTrayTowerFlowNode clone() { + TwoPhaseTrayTowerFlowNode clonedSystem = null; + try { + clonedSystem = (TwoPhaseTrayTowerFlowNode) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** - *

- * Constructor for TwoPhaseTrayTowerFlowNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public TwoPhaseTrayTowerFlowNode(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "stratified"; - this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); + return clonedSystem; + } + + /** {@inheritDoc} */ + @Override + public void init() { + inclination = 0.0; + this.calcContactLength(); + super.init(); + } + + /** {@inheritDoc} */ + @Override + public double calcContactLength() { + double phaseAngel = + pi * phaseFraction[1] + Math.pow(3.0 * pi / 2.0, 1.0 / 3.0) * (1.0 - 2.0 * phaseFraction[1] + + Math.pow(phaseFraction[1], 1.0 / 3.0) - Math.pow(phaseFraction[0], 1.0 / 3.0)); + + wallContactLength[1] = phaseAngel * pipe.getDiameter(); + wallContactLength[0] = pi * pipe.getDiameter() - wallContactLength[1]; + interphaseContactLength[0] = pipe.getDiameter() * Math.sin(phaseAngel); + interphaseContactLength[1] = pipe.getDiameter() * Math.sin(phaseAngel); + // System.out.println("cont " + interphaseContactLength[1] + " " + + // phaseFraction[1]); + + return wallContactLength[0]; + } + + /** {@inheritDoc} */ + @Override + public FlowNodeInterface getNextNode() { + TwoPhaseTrayTowerFlowNode newNode = this.clone(); + + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); + // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); } - /** - *

- * Constructor for TwoPhaseTrayTowerFlowNode. - *

+ return newNode; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + /* + * System.out.println("Starter....."); SystemSrkEos testSystem = new SystemSrkEos(275.3, + * ThermodynamicConstantsInterface.referencePressure); ThermodynamicOperations testOps = new + * ThermodynamicOperations(testSystem); PipeData pipe1 = new PipeData(10.0, 0.025); * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object + * testSystem.addComponent("methane", 0.011152181, 0); testSystem.addComponent("ethane", + * 0.00011152181, 0); testSystem.addComponent("water", 0.00462204876, 1); + * testSystem.addComponent("methane", 0.061152181, 0); testSystem.addComponent("water", + * 0.00862204876, 1); */ - public TwoPhaseTrayTowerFlowNode(SystemInterface system, SystemInterface interphaseSystem, - GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "stratified"; - this.interphaseTransportCoefficient = new InterphaseStratifiedFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); - } + SystemInterface testSystem = + new SystemFurstElectrolyteEos(275.3, ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + PipeData pipe1 = new PipeData(10.0, 0.025); - /** {@inheritDoc} */ - @Override - public TwoPhaseTrayTowerFlowNode clone() { - TwoPhaseTrayTowerFlowNode clonedSystem = null; - try { - clonedSystem = (TwoPhaseTrayTowerFlowNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; - } + testSystem.addComponent("methane", 0.061152181, 0); + // testSystem.addComponent("CO2", 0.00061152181, 0); + testSystem.addComponent("water", 0.1862204876, 1); + // testSystem.addComponent("MDEA", 0.008,1); - /** {@inheritDoc} */ - @Override - public void init() { - inclination = 0.0; - this.calcContactLength(); - super.init(); - } + // testSystem.chemicalReactionInit(); + testSystem.setMixingRule(2); - /** {@inheritDoc} */ - @Override - public double calcContactLength() { - double phaseAngel = pi * phaseFraction[1] + Math.pow(3.0 * pi / 2.0, 1.0 / 3.0) - * (1.0 - 2.0 * phaseFraction[1] + Math.pow(phaseFraction[1], 1.0 / 3.0) - - Math.pow(phaseFraction[0], 1.0 / 3.0)); - - wallContactLength[1] = phaseAngel * pipe.getDiameter(); - wallContactLength[0] = pi * pipe.getDiameter() - wallContactLength[1]; - interphaseContactLength[0] = pipe.getDiameter() * Math.sin(phaseAngel); - interphaseContactLength[1] = pipe.getDiameter() * Math.sin(phaseAngel); - // System.out.println("cont " + interphaseContactLength[1] + " " + - // phaseFraction[1]); - - return wallContactLength[0]; - } - - /** {@inheritDoc} */ - @Override - public FlowNodeInterface getNextNode() { - TwoPhaseTrayTowerFlowNode newNode = this.clone(); + // testSystem.init(0); + testSystem.init_x_y(); - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); - // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); - } + // testSystem.getPhases()[1].setTemperature(294.0); + // testSystem.getPhases()[0].setTemperature(299.0); - return newNode; - } + FlowNodeInterface test = new TwoPhaseTrayTowerFlowNode(testSystem, pipe1); + test.setInterphaseModelType(1); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - /* - * System.out.println("Starter....."); SystemSrkEos testSystem = new SystemSrkEos(275.3, - * 1.01325); ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - * PipeData pipe1 = new PipeData(10.0, 0.025); - * - * testSystem.addComponent("methane", 0.011152181, 0); testSystem.addComponent("ethane", - * 0.00011152181, 0); testSystem.addComponent("water", 0.00462204876, 1); - * testSystem.addComponent("methane", 0.061152181, 0); testSystem.addComponent("water", - * 0.00862204876, 1); - */ - SystemInterface testSystem = new SystemFurstElectrolyteEos(275.3, 1.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - PipeData pipe1 = new PipeData(10.0, 0.025); - - testSystem.addComponent("methane", 0.061152181, 0); - // testSystem.addComponent("CO2", 0.00061152181, 0); - testSystem.addComponent("water", 0.1862204876, 1); - // testSystem.addComponent("MDEA", 0.008,1); - - // testSystem.chemicalReactionInit(); - testSystem.setMixingRule(2); - - // testSystem.init(0); - testSystem.init_x_y(); - - // testSystem.getPhases()[1].setTemperature(294.0); - // testSystem.getPhases()[0].setTemperature(299.0); - - FlowNodeInterface test = new TwoPhaseTrayTowerFlowNode(testSystem, pipe1); - test.setInterphaseModelType(1); - - test.initFlowCalc(); - test.calcFluxes(); - } + test.initFlowCalc(); + test.calcFluxes(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseStirredCellNode/StirredCellNode.java b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseStirredCellNode/StirredCellNode.java index f3cc6e52d6..c28f2ea4f4 100644 --- a/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseStirredCellNode/StirredCellNode.java +++ b/src/main/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseStirredCellNode/StirredCellNode.java @@ -18,277 +18,278 @@ * @version $Id: $Id */ public class StirredCellNode extends TwoPhaseFlowNode { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - private double[] stirrerRate = {1.0, 1.0}, stirrerDiameter = {1.0, 1.0}; - private double dt = 1.0; + private double[] stirrerRate = {1.0, 1.0}; + private double[] stirrerDiameter = {1.0, 1.0}; + private double dt = 1.0; - /** - *

- * Constructor for StirredCellNode. - *

- */ - public StirredCellNode() { - this.flowNodeType = "stirred cell"; - } + /** + *

+ * Constructor for StirredCellNode. + *

+ */ + public StirredCellNode() { + this.flowNodeType = "stirred cell"; + } - /** - *

- * Constructor for StirredCellNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public StirredCellNode(SystemInterface system, GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "stirred cell"; - this.interphaseTransportCoefficient = new InterphaseStirredCellFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); - } + /** + *

+ * Constructor for StirredCellNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public StirredCellNode(SystemInterface system, GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "stirred cell"; + this.interphaseTransportCoefficient = new InterphaseStirredCellFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } - /** - *

- * Constructor for StirredCellNode. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public StirredCellNode(SystemInterface system, SystemInterface interphaseSystem, - GeometryDefinitionInterface pipe) { - super(system, pipe); - this.flowNodeType = "stirred cell"; - this.interphaseTransportCoefficient = new InterphaseStirredCellFlow(this); - this.fluidBoundary = - new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( - this); - } + /** + *

+ * Constructor for StirredCellNode. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param interphaseSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param pipe a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} + * object + */ + public StirredCellNode(SystemInterface system, SystemInterface interphaseSystem, + GeometryDefinitionInterface pipe) { + super(system, pipe); + this.flowNodeType = "stirred cell"; + this.interphaseTransportCoefficient = new InterphaseStirredCellFlow(this); + this.fluidBoundary = + new neqsim.fluidMechanics.flowNode.fluidBoundary.heatMassTransferCalc.nonEquilibriumFluidBoundary.filmModelBoundary.KrishnaStandartFilmModel( + this); + } - /** {@inheritDoc} */ - @Override - public double calcHydraulicDiameter() { - return getGeometry().getDiameter(); - } + /** {@inheritDoc} */ + @Override + public double calcHydraulicDiameter() { + return getGeometry().getDiameter(); + } - /** {@inheritDoc} */ - @Override - public double calcReynoldNumber() { - reynoldsNumber[1] = Math.pow(stirrerDiameter[1], 2.0) * stirrerRate[1] - * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[1].getPhysicalProperties().getViscosity(); - reynoldsNumber[0] = Math.pow(stirrerDiameter[0], 2.0) * stirrerRate[0] - * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() - / bulkSystem.getPhases()[0].getPhysicalProperties().getViscosity(); - System.out.println("rey liq " + reynoldsNumber[1]); - System.out.println("rey gas " + reynoldsNumber[0]); - return reynoldsNumber[1]; - } + /** {@inheritDoc} */ + @Override + public double calcReynoldNumber() { + reynoldsNumber[1] = Math.pow(stirrerDiameter[1], 2.0) * stirrerRate[1] + * bulkSystem.getPhases()[1].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[1].getPhysicalProperties().getViscosity(); + reynoldsNumber[0] = Math.pow(stirrerDiameter[0], 2.0) * stirrerRate[0] + * bulkSystem.getPhases()[0].getPhysicalProperties().getDensity() + / bulkSystem.getPhases()[0].getPhysicalProperties().getViscosity(); + return reynoldsNumber[1]; + } - /** {@inheritDoc} */ - @Override - public StirredCellNode clone() { - StirredCellNode clonedSystem = null; - try { - clonedSystem = (StirredCellNode) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; + /** {@inheritDoc} */ + @Override + public StirredCellNode clone() { + StirredCellNode clonedSystem = null; + try { + clonedSystem = (StirredCellNode) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public void init() { - this.calcContactLength(); - super.init(); - } + return clonedSystem; + } - /** {@inheritDoc} */ - @Override - public void initFlowCalc() { - this.init(); - } + /** {@inheritDoc} */ + @Override + public void init() { + this.calcContactLength(); + super.init(); + } - /** {@inheritDoc} */ - @Override - public double calcContactLength() { - wallContactLength[1] = 1.0; - wallContactLength[0] = 1.0; + /** {@inheritDoc} */ + @Override + public void initFlowCalc() { + this.init(); + } - interphaseContactLength[0] = pi * Math.pow(pipe.getDiameter(), 2.0) / 4.0; - interphaseContactLength[1] = interphaseContactLength[0]; - interphaseContactArea = interphaseContactLength[0]; - return wallContactLength[0]; - } + /** {@inheritDoc} */ + @Override + public double calcContactLength() { + wallContactLength[1] = 1.0; + wallContactLength[0] = 1.0; - /** {@inheritDoc} */ - @Override - public double calcGasLiquidContactArea() { - return pi * Math.pow(pipe.getDiameter(), 2.0) / 4.0; - } + interphaseContactLength[0] = pi * Math.pow(pipe.getDiameter(), 2.0) / 4.0; + interphaseContactLength[1] = interphaseContactLength[0]; + interphaseContactArea = interphaseContactLength[0]; + return wallContactLength[0]; + } - /** {@inheritDoc} */ - @Override - public void update() { - for (int componentNumber = 0; componentNumber < getBulkSystem().getPhases()[0] - .getNumberOfComponents(); componentNumber++) { - double liquidMolarRate = getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * getInterphaseContactArea() * getDt(); - double gasMolarRate = -getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * getInterphaseContactArea() * getDt(); - // System.out.println("liquidMolarRate" + liquidMolarRate); - getBulkSystem().getPhases()[0].addMoles(componentNumber, gasMolarRate); - getBulkSystem().getPhases()[1].addMoles(componentNumber, liquidMolarRate); - } - // getBulkSystem().initBeta(); - getBulkSystem().init_x_y(); - getBulkSystem().init(1); + /** {@inheritDoc} */ + @Override + public double calcGasLiquidContactArea() { + return pi * Math.pow(pipe.getDiameter(), 2.0) / 4.0; + } - if (bulkSystem.isChemicalSystem()) { - getOperations().chemicalEquilibrium(); - } - getBulkSystem().init(1); + /** {@inheritDoc} */ + @Override + public void update() { + for (int componentNumber = 0; componentNumber < getBulkSystem().getPhases()[0] + .getNumberOfComponents(); componentNumber++) { + double liquidMolarRate = getFluidBoundary().getInterphaseMolarFlux(componentNumber) + * getInterphaseContactArea() * getDt(); + double gasMolarRate = -getFluidBoundary().getInterphaseMolarFlux(componentNumber) + * getInterphaseContactArea() * getDt(); + // System.out.println("liquidMolarRate" + liquidMolarRate); + getBulkSystem().getPhases()[0].addMoles(componentNumber, gasMolarRate); + getBulkSystem().getPhases()[1].addMoles(componentNumber, liquidMolarRate); } + // getBulkSystem().initBeta(); + getBulkSystem().init_x_y(); + getBulkSystem().init(1); - /** {@inheritDoc} */ - @Override - public FlowNodeInterface getNextNode() { - StirredCellNode newNode = this.clone(); - for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); - // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); - } - return newNode; + if (bulkSystem.isChemicalSystem()) { + getOperations().chemicalEquilibrium(); } + getBulkSystem().init(1); + } - /** - * Getter for property stirrerRate. - * - * @return Value of property stirrerRate. - * @param i a int - */ - public double getStirrerRate(int i) { - return stirrerRate[i]; + /** {@inheritDoc} */ + @Override + public FlowNodeInterface getNextNode() { + StirredCellNode newNode = this.clone(); + for (int i = 0; i < getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + // newNode.getBulkSystem().getPhases()[0].addMoles(i, -molarMassTransfer[i]); + // newNode.getBulkSystem().getPhases()[1].addMoles(i, +molarMassTransfer[i]); } + return newNode; + } - /** - * Setter for property stirrerRate. - * - * @param stirrerRate New value of property stirrerRate. - * @param i a int - */ - public void setStirrerSpeed(int i, double stirrerRate) { - this.stirrerRate[i] = stirrerRate; - } + /** + * Getter for property stirrerRate. + * + * @param i a int + * @return Value of property stirrerRate. + */ + public double getStirrerRate(int i) { + return stirrerRate[i]; + } - /** - *

- * setStirrerSpeed. - *

- * - * @param stirrerRate a double - */ - public void setStirrerSpeed(double stirrerRate) { - this.stirrerRate[0] = stirrerRate; - this.stirrerRate[1] = stirrerRate; - } + /** + * Setter for property stirrerRate. + * + * @param stirrerRate New value of property stirrerRate. + * @param i a int + */ + public void setStirrerSpeed(int i, double stirrerRate) { + this.stirrerRate[i] = stirrerRate; + } - /** - * Getter for property dt. - * - * @return Value of property dt. - */ - public double getDt() { - return dt; - } + /** + *

+ * setStirrerSpeed. + *

+ * + * @param stirrerRate a double + */ + public void setStirrerSpeed(double stirrerRate) { + this.stirrerRate[0] = stirrerRate; + this.stirrerRate[1] = stirrerRate; + } - /** - * Setter for property dt. - * - * @param dt New value of property dt. - */ - public void setDt(double dt) { - this.dt = dt; - } + /** + * Getter for property dt. + * + * @return Value of property dt. + */ + public double getDt() { + return dt; + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - // SystemInterface testSystem = new SystemFurstElectrolyteEos(275.3, 1.01325); - // SystemInterface testSystem = new SystemSrkEos(313.3, 70.01325); - SystemInterface testSystem = new SystemSrkCPAstatoil(313.3, 70.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - StirredCell pipe1 = new StirredCell(2.0, 0.05); + /** + * Setter for property dt. + * + * @param dt New value of property dt. + */ + public void setDt(double dt) { + this.dt = dt; + } - testSystem.addComponent("methane", 0.1061152181, "MSm3/hr", 0); - testSystem.addComponent("water", 10.206862204876, "kg/min", 0); - testSystem.addComponent("methanol", 1011.206862204876, "kg/min", 1); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.initPhysicalProperties(); - StirredCellNode test = new StirredCellNode(testSystem, pipe1); - test.setInterphaseModelType(1); - test.getFluidBoundary().useFiniteFluxCorrection(true); - test.getFluidBoundary().useThermodynamicCorrections(true); - test.setStirrerSpeed(111350.0 / 60.0); - test.setStirrerDiameter(0.05); - test.setDt(1.10); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + // SystemInterface testSystem = new SystemFurstElectrolyteEos(275.3, + // ThermodynamicConstantsInterface.referencePressure); + // SystemInterface testSystem = new SystemSrkEos(313.3, 70.01325); + SystemInterface testSystem = new SystemSrkCPAstatoil(313.3, 70.01325); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + StirredCell pipe1 = new StirredCell(2.0, 0.05); - test.initFlowCalc(); - // testSystem.init(0); - // testOps.TPflash(); + testSystem.addComponent("methane", 0.1061152181, "MSm3/hr", 0); + testSystem.addComponent("water", 10.206862204876, "kg/min", 0); + testSystem.addComponent("methanol", 1011.206862204876, "kg/min", 1); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.initPhysicalProperties(); + StirredCellNode test = new StirredCellNode(testSystem, pipe1); + test.setInterphaseModelType(1); + test.getFluidBoundary().useFiniteFluxCorrection(true); + test.getFluidBoundary().useThermodynamicCorrections(true); + test.setStirrerSpeed(10.0 / 60.0); + test.setStirrerDiameter(0.05); + test.setDt(1.10); - test.display(); - for (int i = 0; i < 120; i++) { - test.initFlowCalc(); - test.calcFluxes(); - test.update(); - // test.display("new"); - test.getBulkSystem().display(); - // test.getFluidBoundary().display("test"); - } - } + test.initFlowCalc(); + // testSystem.init(0); + // testOps.TPflash(); - /** - * Getter for property stirrerDiameter. - * - * @return Value of property stirrerDiameter. - */ - public double[] getStirrerDiameter() { - return this.stirrerDiameter; + // test.display(); + for (int i = 0; i < 120; i++) { + test.initFlowCalc(); + test.calcFluxes(); + test.update(); + // test.display("new"); + // test.getBulkSystem().display(); + // test.getFluidBoundary().display("test"); } + test.getBulkSystem().prettyPrint(); + } - /** - *

- * Setter for the field stirrerDiameter. - *

- * - * @param stirrerDiameter a double - */ - public void setStirrerDiameter(double stirrerDiameter) { - this.stirrerDiameter[0] = stirrerDiameter; - this.stirrerDiameter[1] = stirrerDiameter; - } + /** + * Getter for property stirrerDiameter. + * + * @return Value of property stirrerDiameter. + */ + public double[] getStirrerDiameter() { + return this.stirrerDiameter; + } - /** - * Setter for property stirrerDiameter. - * - * @param stirrerDiameter New value of property stirrerDiameter. - */ - public void setStirrerDiameter(double[] stirrerDiameter) { - this.stirrerDiameter = stirrerDiameter; - } + /** + *

+ * Setter for the field stirrerDiameter. + *

+ * + * @param stirrerDiameter a double + */ + public void setStirrerDiameter(double stirrerDiameter) { + this.stirrerDiameter[0] = stirrerDiameter; + this.stirrerDiameter[1] = stirrerDiameter; + } + + /** + * Setter for property stirrerDiameter. + * + * @param stirrerDiameter New value of property stirrerDiameter. + */ + public void setStirrerDiameter(double[] stirrerDiameter) { + this.stirrerDiameter = stirrerDiameter; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSolver/FlowSolver.java b/src/main/java/neqsim/fluidMechanics/flowSolver/FlowSolver.java index 68638200b7..d22fa9d027 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSolver/FlowSolver.java +++ b/src/main/java/neqsim/fluidMechanics/flowSolver/FlowSolver.java @@ -3,6 +3,7 @@ * * Created on 17. januar 2001, 20:58 */ + package neqsim.fluidMechanics.flowSolver; /** @@ -14,52 +15,52 @@ * @version $Id: $Id */ public abstract class FlowSolver implements FlowSolverInterface, java.io.Serializable { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - protected int numberOfVelocityNodes = 0; - protected int numberOfNodes; - protected boolean dynamic = false; - protected double timeStep = 100; - protected int solverType = 0; + protected int numberOfVelocityNodes = 0; + protected int numberOfNodes; + protected boolean dynamic = false; + protected double timeStep = 100; + protected int solverType = 0; - /** - *

- * Constructor for FlowSolver. - *

- */ - public FlowSolver() {} + /** + *

+ * Constructor for FlowSolver. + *

+ */ + public FlowSolver() {} - /** {@inheritDoc} */ - @Override - public void solve() {} + /** {@inheritDoc} */ + @Override + public void solve() {} - /** {@inheritDoc} */ - @Override - public void setDynamic(boolean ans) { - dynamic = ans; - } + /** {@inheritDoc} */ + @Override + public void setDynamic(boolean ans) { + dynamic = ans; + } - /** {@inheritDoc} */ - @Override - public void setSolverType(int type) { - solverType = type; - } + /** {@inheritDoc} */ + @Override + public void setSolverType(int type) { + solverType = type; + } - /** {@inheritDoc} */ - @Override - public void setTimeStep(double timeStep) { - this.timeStep = timeStep; - } + /** {@inheritDoc} */ + @Override + public void setTimeStep(double timeStep) { + this.timeStep = timeStep; + } - /** {@inheritDoc} */ - @Override - public void setBoundarySpecificationType(int type) { - if (type == 0) { - numberOfVelocityNodes = numberOfNodes - 2; - } + /** {@inheritDoc} */ + @Override + public void setBoundarySpecificationType(int type) { + if (type == 0) { + numberOfVelocityNodes = numberOfNodes - 2; } + } - /** {@inheritDoc} */ - @Override - public void solveTDMA() {} + /** {@inheritDoc} */ + @Override + public void solveTDMA() {} } diff --git a/src/main/java/neqsim/fluidMechanics/flowSolver/FlowSolverInterface.java b/src/main/java/neqsim/fluidMechanics/flowSolver/FlowSolverInterface.java index c2d6f378d6..a9349fc2b4 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSolver/FlowSolverInterface.java +++ b/src/main/java/neqsim/fluidMechanics/flowSolver/FlowSolverInterface.java @@ -3,6 +3,7 @@ * * Created on 17. januar 2001, 20:56 */ + package neqsim.fluidMechanics.flowSolver; /** @@ -14,53 +15,53 @@ * @version $Id: $Id */ public interface FlowSolverInterface { - /** - *

- * solve. - *

- */ - public void solve(); + /** + *

+ * solve. + *

+ */ + public void solve(); - /** - *

- * setBoundarySpecificationType. - *

- * - * @param type a int - */ - public void setBoundarySpecificationType(int type); + /** + *

+ * setBoundarySpecificationType. + *

+ * + * @param type a int + */ + public void setBoundarySpecificationType(int type); - /** - *

- * solveTDMA. - *

- */ - public void solveTDMA(); + /** + *

+ * solveTDMA. + *

+ */ + public void solveTDMA(); - /** - *

- * setDynamic. - *

- * - * @param type a boolean - */ - public void setDynamic(boolean type); + /** + *

+ * setDynamic. + *

+ * + * @param type a boolean + */ + public void setDynamic(boolean type); - /** - *

- * setTimeStep. - *

- * - * @param timeStep a double - */ - public void setTimeStep(double timeStep); + /** + *

+ * setTimeStep. + *

+ * + * @param timeStep a double + */ + public void setTimeStep(double timeStep); - /** - *

- * setSolverType. - *

- * - * @param type a int - */ - public void setSolverType(int type); + /** + *

+ * setSolverType. + *

+ * + * @param type a int + */ + public void setSolverType(int type); } diff --git a/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/OnePhaseFlowSolver.java b/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/OnePhaseFlowSolver.java index 225d29cd22..2fc6936810 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/OnePhaseFlowSolver.java +++ b/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/OnePhaseFlowSolver.java @@ -3,6 +3,7 @@ * * Created on 17. januar 2001, 21:03 */ + package neqsim.fluidMechanics.flowSolver.onePhaseFlowSolver; /** @@ -14,12 +15,12 @@ * @version $Id: $Id */ public abstract class OnePhaseFlowSolver extends neqsim.fluidMechanics.flowSolver.FlowSolver { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for OnePhaseFlowSolver. - *

- */ - public OnePhaseFlowSolver() {} + /** + *

+ * Constructor for OnePhaseFlowSolver. + *

+ */ + public OnePhaseFlowSolver() {} } diff --git a/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/onePhasePipeFlowSolver/OnePhaseFixedStaggeredGrid.java b/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/onePhasePipeFlowSolver/OnePhaseFixedStaggeredGrid.java index 8d0026829f..e7a8e51d9d 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/onePhasePipeFlowSolver/OnePhaseFixedStaggeredGrid.java +++ b/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/onePhasePipeFlowSolver/OnePhaseFixedStaggeredGrid.java @@ -3,6 +3,7 @@ * * Created on 17. januar 2001, 21:10 */ + package neqsim.fluidMechanics.flowSolver.onePhaseFlowSolver.onePhasePipeFlowSolver; import Jama.Matrix; @@ -17,799 +18,796 @@ * @version $Id: $Id */ public class OnePhaseFixedStaggeredGrid extends OnePhasePipeFlowSolver - implements neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - - Matrix diffMatrix; - int iter = 0; - Matrix[] diff4Matrix; - double xNew[][]; - protected double oldMass[]; - protected double oldComp[]; - protected double oldDensity[]; - protected double oldVelocity[]; - protected double oldComposition[][]; - protected double oldInternalEnergy[]; - protected double oldImpuls[]; - protected double oldEnergy[]; - - /** - *

- * Constructor for OnePhaseFixedStaggeredGrid. - *

- */ - public OnePhaseFixedStaggeredGrid() {} - - /** - *

- * Constructor for OnePhaseFixedStaggeredGrid. - *

- * - * @param pipe a - * {@link neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.pipeFlowSystem.PipeFlowSystem} - * object - * @param length a double - * @param nodes a int - * @param dynamic a boolean - */ - public OnePhaseFixedStaggeredGrid( - neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.pipeFlowSystem.PipeFlowSystem pipe, - double length, int nodes, boolean dynamic) { - super(pipe, length, nodes); - this.dynamic = dynamic; - oldMass = new double[nodes]; - oldComp = new double[nodes]; - oldImpuls = new double[nodes]; - diff4Matrix = - new Matrix[pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; - oldEnergy = new double[nodes]; - oldVelocity = new double[nodes]; - oldDensity = new double[nodes]; - oldInternalEnergy = new double[nodes]; - oldComposition = new double[pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()][nodes]; - numberOfVelocityNodes = nodes; + implements neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + + Matrix diffMatrix; + int iter = 0; + Matrix[] diff4Matrix; + double[][] xNew; + protected double[] oldMass; + protected double[] oldComp; + protected double[] oldDensity; + protected double[] oldVelocity; + protected double[][] oldComposition; + protected double[] oldInternalEnergy; + protected double[] oldImpuls; + protected double[] oldEnergy; + + /** + *

+ * Constructor for OnePhaseFixedStaggeredGrid. + *

+ */ + public OnePhaseFixedStaggeredGrid() {} + + /** + *

+ * Constructor for OnePhaseFixedStaggeredGrid. + *

+ * + * @param pipe a + * {@link neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.pipeFlowSystem.PipeFlowSystem} + * object + * @param length a double + * @param nodes a int + * @param dynamic a boolean + */ + public OnePhaseFixedStaggeredGrid( + neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.pipeFlowSystem.PipeFlowSystem pipe, + double length, int nodes, boolean dynamic) { + super(pipe, length, nodes); + this.dynamic = dynamic; + oldMass = new double[nodes]; + oldComp = new double[nodes]; + oldImpuls = new double[nodes]; + diff4Matrix = + new Matrix[pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; + oldEnergy = new double[nodes]; + oldVelocity = new double[nodes]; + oldDensity = new double[nodes]; + oldInternalEnergy = new double[nodes]; + oldComposition = + new double[pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()][nodes]; + numberOfVelocityNodes = nodes; + } + + /** {@inheritDoc} */ + @Override + public OnePhaseFixedStaggeredGrid clone() { + OnePhaseFixedStaggeredGrid clonedSystem = null; + try { + clonedSystem = (OnePhaseFixedStaggeredGrid) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public OnePhaseFixedStaggeredGrid clone() { - OnePhaseFixedStaggeredGrid clonedSystem = null; - try { - clonedSystem = (OnePhaseFixedStaggeredGrid) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); + return clonedSystem; + } + + /** + *

+ * initProfiles. + *

+ */ + public void initProfiles() { + double err = 0; + + double oldPres = 0; + double dpdx = 0; + do { + // pipe.getNode(0).setVelocityIn(pipe.getNode(0).getVelocity()); + err = 0; + pipe.getNode(0).initFlowCalc(); + pipe.getNode(0).init(); + pipe.getNode(0).setVelocityIn(pipe.getNode(0).getVelocity()); + for (int i = 0; i < numberOfNodes - 1; i++) { + // setting temperatures + pipe.getNode(i).init(); + pipe.getNode(i + 1).getBulkSystem() + .setTemperature((4.0 * pipe.getNode(i).calcTotalHeatTransferCoefficient(0) + * (pipe.getNode(i).getGeometry().getSurroundingEnvironment().getTemperature() + - pipe.getNode(i).getBulkSystem().getPhases()[0].getTemperature()) + / (pipe.getNode(i).getBulkSystem().getPhases()[0].getCp() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass() + * pipe.getNode(i + 1).getVelocity() + * pipe.getNode(i + 1).getGeometry().getDiameter() + * pipe.getNode(i + 1).getBulkSystem().getPhases()[0].getDensity()) + + pipe.getNode(i + 1).getBulkSystem().getPhases()[0].getJouleThomsonCoefficient() + * dpdx) + * (pipe.getNode(i + 1).getGeometry().getNodeLength() + + pipe.getNode(i).getGeometry().getNodeLength()) + * 0.5 + pipe.getNode(i).getBulkSystem().getTemperature()); + if (pipe.getNode(i + 1).getBulkSystem().getTemperature() < 10.5) { + pipe.getNode(i + 1).getBulkSystem().setTemperature(10.5); } - - return clonedSystem; + pipe.getNode(i + 1).initFlowCalc(); + pipe.getNode(i + 1).init(); + + // System.out.println("velocity " + pipe.getNode(i).getVelocity()); + // setting pressures + // System.out + // .println("presbef : " + pipe.getNode(i + 1).getBulkSystem().getPressure()); + oldPres = pipe.getNode(i + 1).getBulkSystem().getPressure(); + pipe.getNode(i + 1).getBulkSystem() + .setPressure(-pipe.getNode(i).getWallFrictionFactor() + * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() + * pipe.getNode(i).getVelocity() * pipe.getNode(i).getVelocity() + / pipe.getNode(i).getGeometry().getDiameter() / 2.0 + * (pipe.getNode(i).getGeometry().getNodeLength()) / 1e5 + - gravity * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() + * (pipe.getNode(i + 1).getVerticalPositionOfNode() + - pipe.getNode(i).getVerticalPositionOfNode()) + / 1e5 + + pipe.getNode(i).getBulkSystem().getPressure()); + // if(pipe.getNode(i+1).getBulkSystem().getPressure()<10.5) + // pipe.getNode(i+1).getBulkSystem().setPressure(1.0); + err += (oldPres - pipe.getNode(i + 1).getBulkSystem().getPressure()); + pipe.getNode(i + 1).initFlowCalc(); + pipe.getNode(i + 1).init(); + dpdx = (pipe.getNode(i + 1).getBulkSystem().getPressure() + - pipe.getNode(i).getBulkSystem().getPressure()) + / ((pipe.getNode(i + 1).getGeometry().getNodeLength() + + pipe.getNode(i).getGeometry().getNodeLength()) * 0.5); + /* + * System.out.println("pres : " + pipe.getNode(i + 1).getBulkSystem().getPressure()); + * System.out .println("temp : " + pipe.getNode(i + 1).getBulkSystem().getTemperature()); + * System.out.println("velocity : " + pipe.getNode(i + 1).getVelocity()); + * System.out.println("dpdx : " + dpdx); System.out .println("JT coeff : " + pipe.getNode(i + * + 1).getBulkSystem().getPhases()[0] .getJouleThomsonCoefficient()); + */ + // setting velocities + pipe.getNode(i + 1).setVelocityIn(pipe.getNode(i + 1).getVelocity()); + pipe.getNode(i + 1).setVelocity((pipe.getNode(i + 1).getVelocityIn().doubleValue())); + pipe.getNode(i + 1).init(); + } + // System.out.println("err: " + err); + } while (Math.abs(err) > 1); + initMatrix(); + } + + /** + *

+ * initMatrix. + *

+ */ + public void initMatrix() { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).init(); + double enthalpy = pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); + solMatrix.set(i, 0, pipe.getNode(i).getVelocityIn().doubleValue()); + sol3Matrix.set(i, 0, enthalpy); + sol2Matrix.set(i, 0, pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity()); + for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); j++) { + sol4Matrix[j].set(i, 0, + pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getx() + * pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getMolarMass() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass()); + } } - - /** - *

- * initProfiles. - *

- */ - public void initProfiles() { - double err = 0, oldPres = 0, dpdx = 0; - - do { - // pipe.getNode(0).setVelocityIn(pipe.getNode(0).getVelocity()); - err = 0; - pipe.getNode(0).initFlowCalc(); - pipe.getNode(0).init(); - pipe.getNode(0).setVelocityIn(pipe.getNode(0).getVelocity()); - for (int i = 0; i < numberOfNodes - 1; i++) { - // setting temperatures - pipe.getNode(i).init(); - pipe.getNode(i + 1).getBulkSystem().setTemperature((4.0 - * pipe.getNode(i).calcTotalHeatTransferCoefficient(0) - * (pipe.getNode(i).getGeometry().getSurroundingEnvironment() - .getTemperature() - - pipe.getNode(i).getBulkSystem().getPhases()[0].getTemperature()) - / (pipe.getNode(i).getBulkSystem().getPhases()[0].getCp() - / pipe.getNode(i).getBulkSystem().getPhases()[0] - .getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass() - * pipe.getNode(i + 1).getVelocity() - * pipe.getNode(i + 1).getGeometry().getDiameter() - * pipe.getNode(i + 1).getBulkSystem().getPhases()[0].getDensity()) - + pipe.getNode(i + 1).getBulkSystem().getPhases()[0] - .getJouleThomsonCoefficient() * dpdx) - * (pipe.getNode(i + 1).getGeometry().getNodeLength() - + pipe.getNode(i).getGeometry().getNodeLength()) - * 0.5 + pipe.getNode(i).getBulkSystem().getTemperature()); - if (pipe.getNode(i + 1).getBulkSystem().getTemperature() < 10.5) { - pipe.getNode(i + 1).getBulkSystem().setTemperature(10.5); - } - pipe.getNode(i + 1).initFlowCalc(); - pipe.getNode(i + 1).init(); - - // System.out.println("velocity " + pipe.getNode(i).getVelocity()); - // setting pressures - // System.out - // .println("presbef : " + pipe.getNode(i + 1).getBulkSystem().getPressure()); - oldPres = pipe.getNode(i + 1).getBulkSystem().getPressure(); - pipe.getNode(i + 1).getBulkSystem() - .setPressure(-pipe.getNode(i).getWallFrictionFactor() - * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() - * pipe.getNode(i).getVelocity() * pipe.getNode(i).getVelocity() - / pipe.getNode(i).getGeometry().getDiameter() / 2.0 - * (pipe.getNode(i).getGeometry().getNodeLength()) / 1e5 - - gravity - * pipe.getNode(i).getBulkSystem().getPhases()[0] - .getDensity() - * (pipe.getNode(i + 1).getVerticalPositionOfNode() - - pipe.getNode(i).getVerticalPositionOfNode()) - / 1e5 - + pipe.getNode(i).getBulkSystem().getPressure()); - // if(pipe.getNode(i+1).getBulkSystem().getPressure()<10.5) - // pipe.getNode(i+1).getBulkSystem().setPressure(1.0); - err += (oldPres - pipe.getNode(i + 1).getBulkSystem().getPressure()); - pipe.getNode(i + 1).initFlowCalc(); - pipe.getNode(i + 1).init(); - dpdx = (pipe.getNode(i + 1).getBulkSystem().getPressure() - - pipe.getNode(i).getBulkSystem().getPressure()) - / ((pipe.getNode(i + 1).getGeometry().getNodeLength() - + pipe.getNode(i).getGeometry().getNodeLength()) * 0.5); - /* - * System.out.println("pres : " + pipe.getNode(i + - * 1).getBulkSystem().getPressure()); System.out .println("temp : " + pipe.getNode(i - * + 1).getBulkSystem().getTemperature()); System.out.println("velocity : " + - * pipe.getNode(i + 1).getVelocity()); System.out.println("dpdx : " + dpdx); - * System.out .println("JT coeff : " + pipe.getNode(i + - * 1).getBulkSystem().getPhases()[0] .getJouleThomsonCoefficient()); - */ - // setting velocities - pipe.getNode(i + 1).setVelocityIn(pipe.getNode(i + 1).getVelocity()); - pipe.getNode(i + 1) - .setVelocity((pipe.getNode(i + 1).getVelocityIn().doubleValue())); - pipe.getNode(i + 1).init(); - } - // System.out.println("err: " + err); - } while (Math.abs(err) > 1); - initMatrix(); + } + + /** + *

+ * initPressure. + *

+ * + * @param iteration a int + */ + public void initPressure(int iteration) { + for (int i = 0; i < numberOfNodes; i++) { + // if(dynamic) System.out.println(" old pressure " + + // pipe.getNode(i).getBulkSystem().getPressure()); + + pipe.getNode(i).getBulkSystem().setPressure( + pipe.getNode(i).getBulkSystem().getPhases()[0].getdPdrho() * diffMatrix.get(i, 0) * 1e-5 + + pipe.getNode(i).getBulkSystem().getPressure()); + pipe.getNode(i).init(); + // if(dynamic) System.out.println("i " + i +" diff 0 " +(diffMatrix.get(i, + // 0) ) + // + " new pressure " + pipe.getNode(i).getBulkSystem().getPressure()); } - - /** - *

- * initMatrix. - *

- */ - public void initMatrix() { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).init(); - double enthalpy = pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); - solMatrix.set(i, 0, pipe.getNode(i).getVelocityIn().doubleValue()); - sol3Matrix.set(i, 0, enthalpy); - sol2Matrix.set(i, 0, pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity()); - for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); j++) { - sol4Matrix[j].set(i, 0, - pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getx() - * pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j] - .getMolarMass() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass()); - } - } + } + + /** + *

+ * initVelocity. + *

+ * + * @param iteration a int + */ + public void initVelocity(int iteration) { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).setVelocityIn(pipe.getNode(i).getVelocityIn().doubleValue() + + (solMatrix.get(i, 0) - pipe.getNode(i).getVelocityIn().doubleValue())); + // if(dynamic) System.out.println("i " + i +" diffvel 0 " +(solMatrix.get(i, + // 0) + // - pipe.getNode(i).getVelocityIn().doubleValue())); } - /** - *

- * initPressure. - *

- * - * @param iteration a int - */ - public void initPressure(int iteration) { - for (int i = 0; i < numberOfNodes; i++) { - // if(dynamic) System.out.println(" old pressure " + - // pipe.getNode(i).getBulkSystem().getPressure()); - - pipe.getNode(i).getBulkSystem() - .setPressure(pipe.getNode(i).getBulkSystem().getPhases()[0].getdPdrho() - * diffMatrix.get(i, 0) * 1e-5 - + pipe.getNode(i).getBulkSystem().getPressure()); - pipe.getNode(i).init(); - // if(dynamic) System.out.println("i " + i +" diff 0 " +(diffMatrix.get(i, - // 0) ) - // + " new pressure " + pipe.getNode(i).getBulkSystem().getPressure()); - } + for (int i = 0; i < numberOfNodes; i++) { + double meanVelocity = 0.0; + if (i == numberOfNodes - 1) { + meanVelocity = pipe.getNode(i).getVelocityIn().doubleValue(); + } else { + meanVelocity = (pipe.getNode(i).getVelocityIn().doubleValue() + + pipe.getNode(i).getVelocityOut().doubleValue()) / 2.0; + } + pipe.getNode(i).setVelocity(meanVelocity); + pipe.getNode(i).init(); } - /** - *

- * initVelocity. - *

- * - * @param iteration a int - */ - public void initVelocity(int iteration) { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).setVelocityIn(pipe.getNode(i).getVelocityIn().doubleValue() - + (solMatrix.get(i, 0) - pipe.getNode(i).getVelocityIn().doubleValue())); - // if(dynamic) System.out.println("i " + i +" diffvel 0 " +(solMatrix.get(i, - // 0) - // - pipe.getNode(i).getVelocityIn().doubleValue())); - } - - for (int i = 0; i < numberOfNodes; i++) { - double meanVelocity = 0.0; - if (i == numberOfNodes - 1) { - meanVelocity = pipe.getNode(i).getVelocityIn().doubleValue(); - } else { - meanVelocity = (pipe.getNode(i).getVelocityIn().doubleValue() - + pipe.getNode(i).getVelocityOut().doubleValue()) / 2.0; - } - pipe.getNode(i).setVelocity(meanVelocity); - pipe.getNode(i).init(); - } - - // if(dynamic){ - // pipe.getNode(numberOfNodes-1).setVelocity(0.001); - // pipe.getNode(numberOfNodes-1).init(); - // } + // if(dynamic){ + // pipe.getNode(numberOfNodes-1).setVelocity(0.001); + // pipe.getNode(numberOfNodes-1).init(); + // } + } + + /** + *

+ * initTemperature. + *

+ * + * @param iteration a int + */ + public void initTemperature(int iteration) { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).init(); + pipe.getNode(i).getBulkSystem() + .setTemperature(pipe.getNode(i).getBulkSystem().getTemperature() + + iteration * 1.0 / (10.0 + iteration) * diffMatrix.get(i, 0) + / (pipe.getNode(i).getBulkSystem().getPhases()[0].getCp() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass())); + pipe.getNode(i).init(); + + // System.out.println("cp: " + + // (pipe.getNode(i).getBulkSystem().getPhases()[0].getCp() / + // pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() / + // pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass())); } - - /** - *

- * initTemperature. - *

- * - * @param iteration a int - */ - public void initTemperature(int iteration) { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).init(); - pipe.getNode(i).getBulkSystem() - .setTemperature(pipe.getNode(i).getBulkSystem().getTemperature() - + iteration * 1.0 / (10.0 + iteration) * diffMatrix.get(i, 0) - / (pipe.getNode(i).getBulkSystem().getPhases()[0].getCp() - / pipe.getNode(i).getBulkSystem().getPhases()[0] - .getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[0] - .getMolarMass())); - pipe.getNode(i).init(); - - // System.out.println("cp: " + - // (pipe.getNode(i).getBulkSystem().getPhases()[0].getCp()/pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase()/pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass())); - } + } + + /** + *

+ * initComposition. + *

+ * + * @param iter a int + */ + public void initComposition(int iter) { + for (int j = 1; j < numberOfNodes; j++) { + for (int p = 0; p < pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); p++) { + pipe.getNode(j).getBulkSystem().getPhases()[0].getComponents()[p].setx( + sol4Matrix[p].get(j, 0) * pipe.getNode(j).getBulkSystem().getPhases()[0].getMolarMass() + / pipe.getNode(j).getBulkSystem().getPhases()[0].getComponents()[p].getMolarMass()); + // pipe.getNode(j).getBulkSystem().getPhases()[0].getComponents()[p].getx() + + // 0.5*diff4Matrix[p].get(j,0)); + } + + pipe.getNode(j).getBulkSystem().getPhases()[0].normalize(); + pipe.getNode(j).init(); } - - /** - *

- * initComposition. - *

- * - * @param iter a int - */ - public void initComposition(int iter) { - for (int j = 1; j < numberOfNodes; j++) { - for (int p = 0; p < pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); p++) { - pipe.getNode(j).getBulkSystem().getPhases()[0].getComponents()[p] - .setx(sol4Matrix[p].get(j, 0) - * pipe.getNode(j).getBulkSystem().getPhases()[0].getMolarMass() - / pipe.getNode(j).getBulkSystem().getPhases()[0].getComponents()[p] - .getMolarMass());// pipe.getNode(j).getBulkSystem().getPhases()[0].getComponents()[p].getx() - // + - // 0.5*diff4Matrix[p].get(j,0)); - } - - pipe.getNode(j).getBulkSystem().getPhases()[0].normalize(); - pipe.getNode(j).init(); - } + } + + /** + *

+ * setMassConservationMatrixTDMA. + *

+ */ + public void setMassConservationMatrixTDMA() { + if (!dynamic) { + double SU = 0; + a[0] = 0; + b[0] = 1.0; + c[0] = 0; + SU = pipe.getNode(0).getBulkSystem().getPhases()[0].getDensity(); + r[0] = SU; + } else { + double Ae = pipe.getNode(1).getGeometry().getArea(); + double Aw = pipe.getNode(0).getGeometry().getArea(); + double Fw = pipe.getNode(0).getVelocityIn().doubleValue() * Aw; + double Fe = oldVelocity[1] * Ae; + // System.out.println("new- old : " + + // (pipe.getNode(0).getVelocityIn().doubleValue() - oldVelocity[0])); + oldMass[0] = 1.0 / timeStep * pipe.getNode(0).getGeometry().getArea() + * pipe.getNode(0).getGeometry().getNodeLength(); + + a[0] = Math.max(Fw, 0); + c[0] = Math.max(-Fe, 0); + b[0] = a[0] + c[0] + (Fe - Fw) + oldMass[0]; + r[0] = oldMass[0] * oldDensity[0]; + + // setter ligningen paa rett form + // a[0] = - a[0]; + // c[0] = -c[0]; } - /** - *

- * setMassConservationMatrixTDMA. - *

- */ - public void setMassConservationMatrixTDMA() { - if (!dynamic) { - double SU = 0; - a[0] = 0; - b[0] = 1.0; - c[0] = 0; - SU = pipe.getNode(0).getBulkSystem().getPhases()[0].getDensity(); - r[0] = SU; - } else { - double Ae = pipe.getNode(1).getGeometry().getArea(); - double Aw = pipe.getNode(0).getGeometry().getArea(); - double Fw = pipe.getNode(0).getVelocityIn().doubleValue() * Aw; - double Fe = oldVelocity[1] * Ae; - // System.out.println("new- old : " + - // (pipe.getNode(0).getVelocityIn().doubleValue() - oldVelocity[0])); - oldMass[0] = 1.0 / timeStep * pipe.getNode(0).getGeometry().getArea() - * pipe.getNode(0).getGeometry().getNodeLength(); - - a[0] = Math.max(Fw, 0); - c[0] = Math.max(-Fe, 0); - b[0] = a[0] + c[0] + (Fe - Fw) + oldMass[0]; - r[0] = oldMass[0] * oldDensity[0]; - - // setter ligningen paa rett form - // a[0] = - a[0]; - // c[0] = -c[0]; - } - - for (int i = 1; i < numberOfNodes - 1; i++) { - double Ae = pipe.getNode(i).getGeometry().getArea(); - double Aw = pipe.getNode(i - 1).getGeometry().getArea(); - double Fe = pipe.getNode(i).getVelocityOut().doubleValue() * Ae; - double Fw = pipe.getNode(i).getVelocityIn().doubleValue() * Aw; - - if (dynamic) { - oldMass[i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() - * pipe.getNode(i).getGeometry().getNodeLength(); - } else { - oldMass[i] = 0.0; - } - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) + oldMass[i]; - r[i] = oldMass[i] * oldDensity[i]; - - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } + for (int i = 1; i < numberOfNodes - 1; i++) { + double Ae = pipe.getNode(i).getGeometry().getArea(); + double Aw = pipe.getNode(i - 1).getGeometry().getArea(); + double Fe = pipe.getNode(i).getVelocityOut().doubleValue() * Ae; + double Fw = pipe.getNode(i).getVelocityIn().doubleValue() * Aw; + + if (dynamic) { + oldMass[i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() + * pipe.getNode(i).getGeometry().getNodeLength(); + } else { + oldMass[i] = 0.0; + } + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) + oldMass[i]; + r[i] = oldMass[i] * oldDensity[i]; + + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; + } - int i = numberOfNodes - 1; - double Ae = pipe.getNode(i).getGeometry().getArea(); - double Aw = pipe.getNode(i - 1).getGeometry().getArea(); + int i = numberOfNodes - 1; + double Ae = pipe.getNode(i).getGeometry().getArea(); + double Aw = pipe.getNode(i - 1).getGeometry().getArea(); - double Fe = pipe.getNode(i).getVelocity() * Ae; - double Fw = pipe.getNode(i).getVelocityIn().doubleValue() * Aw; + double Fe = pipe.getNode(i).getVelocity() * Ae; + double Fw = pipe.getNode(i).getVelocityIn().doubleValue() * Aw; - if (dynamic) { - oldMass[i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() - * pipe.getNode(i).getGeometry().getNodeLength(); - } else { - oldMass[i] = 0.0; - } - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) + oldMass[i]; - r[i] = oldMass[i] * oldDensity[i]; - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; + if (dynamic) { + oldMass[i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() + * pipe.getNode(i).getGeometry().getNodeLength(); + } else { + oldMass[i] = 0.0; } - - /** - *

- * setImpulsMatrixTDMA. - *

- */ - public void setImpulsMatrixTDMA() { - double SU = 0.0, SP = 0.0; - double Fw = 0.0, Fe = 0.0; - - // pipe.getNode(0).initFlowCalc(); - // pipe.getNode(0).init(); - // pipe.getNode(0).setVelocityIn(pipe.getNode(0).getVelocity()); - - a[0] = 0; - b[0] = 1.0; - c[0] = 0; - - r[0] = pipe.getNode(0).getVelocityIn().doubleValue(); - - a[1] = 0; - b[1] = 1.0; - c[1] = 0; - - r[1] = pipe.getNode(0).getVelocityIn().doubleValue(); - - for (int i = 2; i < numberOfNodes - 1; i++) { - double Ae = pipe.getNode(i).getGeometry().getArea(); - double Aw = pipe.getNode(i - 1).getGeometry().getArea(); - double Amean = pipe.getNode(i - 1).getGeometry().getArea(); - double meanDiameter = pipe.getNode(i - 1).getGeometry().getDiameter(); - double meanFrik = pipe.getNode(i - 1).getWallFrictionFactor(); - double meanDensity = (pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() - + pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity()) / 2.0; - double oldMeanDensity = (oldDensity[i - 1] + oldDensity[i]) / 2.0; - double meanVelocity = - (pipe.getNode(i - 1).getVelocity() + pipe.getNode(i).getVelocity()) / 2.0; - double vertposchange = pipe.getNode(i).getVerticalPositionOfNode() - - pipe.getNode(i - 1).getVerticalPositionOfNode(); - double nodeLength = pipe.getNode(i - 1).getGeometry().getNodeLength(); - - SU = -Amean - * (pipe.getNode(i).getBulkSystem().getPressure() - - pipe.getNode(i - 1).getBulkSystem().getPressure()) - * 1e5 - Amean * gravity * meanDensity * vertposchange - + Amean * nodeLength * meanDensity * meanFrik / meanDiameter * meanVelocity - * Math.abs(meanVelocity) / 2.0; - SP = -Amean * nodeLength * meanDensity * meanFrik / meanDiameter * meanVelocity; - Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() - * (pipe.getNode(i - 1).getVelocityIn().doubleValue() - + pipe.getNode(i - 1).getVelocityOut().doubleValue()) - / 2.0; - Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() - * (pipe.getNode(i).getVelocityIn().doubleValue() - + pipe.getNode(i).getVelocityOut().doubleValue()) - / 2.0; - - if (dynamic) { - oldImpuls[i] = 1.0 / timeStep * oldMeanDensity * nodeLength * Amean; - } else { - oldImpuls[i] = 0.0; - } - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0);// - Fe/2.0; - - b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldImpuls[i]; - // System.out.println("Fe-Fw: " +(Fe - Fw) + " Fe: " + Fe); - r[i] = SU + oldImpuls[i] * oldVelocity[i]; - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } - - int i = numberOfNodes - 1; - double Ae = pipe.getNode(i).getGeometry().getArea(); - double Aw = pipe.getNode(i - 1).getGeometry().getArea(); - double Amean = pipe.getNode(i - 1).getGeometry().getArea(); - double meanDiameter = pipe.getNode(i - 1).getGeometry().getDiameter(); - double meanFrik = pipe.getNode(i - 1).getWallFrictionFactor(); - double meanDensity = pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity(); - double oldMeanDensity = oldDensity[i - 1]; - double meanVelocity = pipe.getNode(i - 1).getVelocity(); - double vertposchange = pipe.getNode(i).getVerticalPositionOfNode() - - pipe.getNode(i - 1).getVerticalPositionOfNode(); - double nodeLength = pipe.getNode(i - 1).getGeometry().getNodeLength(); - - SU = -Amean - * (pipe.getNode(i).getBulkSystem().getPressure() - - pipe.getNode(i - 1).getBulkSystem().getPressure()) - * 1e5 - Amean * gravity * meanDensity * vertposchange - + Amean * nodeLength * meanDensity * meanFrik / meanDiameter * meanVelocity - * Math.abs(meanVelocity) / 2.0; - SP = -Amean * nodeLength * meanDensity * meanFrik / meanDiameter * meanVelocity; - Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() - * (pipe.getNode(i - 1).getVelocityIn().doubleValue() - + pipe.getNode(i - 1).getVelocityOut().doubleValue()) - / 2.0; - Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() - * (pipe.getNode(i).getVelocityIn().doubleValue() - + pipe.getNode(i).getVelocityOut().doubleValue()) - / 2.0; - - if (dynamic) { - oldImpuls[i] = 1.0 / timeStep * oldMeanDensity * nodeLength * Amean; - } else { - oldImpuls[i] = 0.0; - } - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - // if(dynamic){c[i] = - Fe/2.0; a[i] = Fw/2.0; } - b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldImpuls[i]; - r[i] = SU + oldImpuls[i] * oldVelocity[i]; - - // setter ligningen paa rett form - a[numberOfNodes - 1] = -a[numberOfNodes - 1]; - c[numberOfNodes - 1] = -c[numberOfNodes - 1]; + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) + oldMass[i]; + r[i] = oldMass[i] * oldDensity[i]; + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; + } + + /** + *

+ * setImpulsMatrixTDMA. + *

+ */ + public void setImpulsMatrixTDMA() { + double SU = 0.0; + double SP = 0.0; + double Fw = 0.0; + + // pipe.getNode(0).initFlowCalc(); + // pipe.getNode(0).init(); + // pipe.getNode(0).setVelocityIn(pipe.getNode(0).getVelocity()); + + double Fe = 0.0; + a[0] = 0; + b[0] = 1.0; + c[0] = 0; + + r[0] = pipe.getNode(0).getVelocityIn().doubleValue(); + + a[1] = 0; + b[1] = 1.0; + c[1] = 0; + + r[1] = pipe.getNode(0).getVelocityIn().doubleValue(); + + for (int i = 2; i < numberOfNodes - 1; i++) { + double Ae = pipe.getNode(i).getGeometry().getArea(); + double Aw = pipe.getNode(i - 1).getGeometry().getArea(); + double Amean = pipe.getNode(i - 1).getGeometry().getArea(); + double meanDiameter = pipe.getNode(i - 1).getGeometry().getDiameter(); + double meanFrik = pipe.getNode(i - 1).getWallFrictionFactor(); + double meanDensity = (pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() + + pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity()) / 2.0; + double oldMeanDensity = (oldDensity[i - 1] + oldDensity[i]) / 2.0; + double meanVelocity = + (pipe.getNode(i - 1).getVelocity() + pipe.getNode(i).getVelocity()) / 2.0; + double vertposchange = pipe.getNode(i).getVerticalPositionOfNode() + - pipe.getNode(i - 1).getVerticalPositionOfNode(); + double nodeLength = pipe.getNode(i - 1).getGeometry().getNodeLength(); + + SU = -Amean + * (pipe.getNode(i).getBulkSystem().getPressure() + - pipe.getNode(i - 1).getBulkSystem().getPressure()) + * 1e5 - Amean * gravity * meanDensity * vertposchange + + Amean * nodeLength * meanDensity * meanFrik / meanDiameter * meanVelocity + * Math.abs(meanVelocity) / 2.0; + SP = -Amean * nodeLength * meanDensity * meanFrik / meanDiameter * meanVelocity; + Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() + * (pipe.getNode(i - 1).getVelocityIn().doubleValue() + + pipe.getNode(i - 1).getVelocityOut().doubleValue()) + / 2.0; + Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() + * (pipe.getNode(i).getVelocityIn().doubleValue() + + pipe.getNode(i).getVelocityOut().doubleValue()) + / 2.0; + + if (dynamic) { + oldImpuls[i] = 1.0 / timeStep * oldMeanDensity * nodeLength * Amean; + } else { + oldImpuls[i] = 0.0; + } + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); // - Fe/2.0; + + b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldImpuls[i]; + // System.out.println("Fe-Fw: " +(Fe - Fw) + " Fe: " + Fe); + r[i] = SU + oldImpuls[i] * oldVelocity[i]; + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; } - /** - *

- * setEnergyMatrixTDMA. - *

- */ - public void setEnergyMatrixTDMA() { - a[0] = 0; - b[0] = 1.0; - c[0] = 0; - double SU = pipe.getNode(0).getBulkSystem().getPhases()[0].getEnthalpy() - / pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() - / pipe.getNode(0).getBulkSystem().getPhases()[0].getMolarMass(); - r[0] = SU; - - for (int i = 1; i < numberOfNodes - 1; i++) { - double fe = pipe.getNode(i + 1).getGeometry().getNodeLength() - / (pipe.getNode(i).getGeometry().getNodeLength() - + pipe.getNode(i + 1).getGeometry().getNodeLength()); - double fw = pipe.getNode(i - 1).getGeometry().getNodeLength() - / (pipe.getNode(i).getGeometry().getNodeLength() - + pipe.getNode(i - 1).getGeometry().getNodeLength()); - double Ae = pipe.getNode(i).getGeometry().getArea(); - double Aw = pipe.getNode(i - 1).getGeometry().getArea(); - double vertposchange = (1 - fe) - * (pipe.getNode(i + 1).getVerticalPositionOfNode() - - pipe.getNode(i).getVerticalPositionOfNode()) - + (1 - fw) * (pipe.getNode(i).getVerticalPositionOfNode() - - pipe.getNode(i - 1).getVerticalPositionOfNode()); - - SU = -pipe.getNode(i).getGeometry().getArea() * gravity - * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() - * pipe.getNode(i).getVelocity() * vertposchange - + pipe.getNode(i).getGeometry().getArea() * 4.0 - * pipe.getNode(i).calcTotalHeatTransferCoefficient(0) - * (pipe.getNode(i).getGeometry().getSurroundingEnvironment() - .getTemperature() - - pipe.getNode(i).getBulkSystem().getTemperature()) - / (pipe.getNode(i).getGeometry().getDiameter()) - * pipe.getNode(i).getGeometry().getNodeLength(); - double SP = 0; - double Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() - * pipe.getNode(i).getVelocityIn().doubleValue(); - double Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() - * pipe.getNode(i).getVelocityOut().doubleValue(); - - if (dynamic) { - oldEnergy[i] = 1.0 / timeStep * oldDensity[i] - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getGeometry().getArea(); - } else { - oldEnergy[i] = 0.0; - } - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldEnergy[i]; - r[i] = SU + oldEnergy[i] * oldInternalEnergy[i]; - - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } - - int i = numberOfNodes - 1; - - double fw = pipe.getNode(i - 1).getGeometry().getNodeLength() - / (pipe.getNode(i).getGeometry().getNodeLength() - + pipe.getNode(i - 1).getGeometry().getNodeLength()); - double Ae = pipe.getNode(i).getGeometry().getArea();// 1.0/((1.0-fe)/pipe.getNode(i).getGeometry().getArea() - // + - // fe/pipe.getNode(i+1).getGeometry().getArea()); - - double Aw = pipe.getNode(i - 1).getGeometry().getArea();// 1.0/((1.0-fw)/pipe.getNode(i).getGeometry().getArea() - // + - // fw/pipe.getNode(i-1).getGeometry().getArea()); - - double vertposchange = (1 - fw) * (pipe.getNode(i).getVerticalPositionOfNode() - - pipe.getNode(i - 1).getVerticalPositionOfNode()); - - SU = -pipe.getNode(i).getGeometry().getArea() * gravity - * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() - * pipe.getNode(i).getVelocity() * vertposchange - + pipe.getNode(i).getGeometry().getArea() * 4.0 - * pipe.getNode(i).calcTotalHeatTransferCoefficient(0) - * (pipe.getNode(i).getGeometry().getSurroundingEnvironment() - .getTemperature() - - pipe.getNode(i).getBulkSystem().getTemperature()) - / (pipe.getNode(i).getGeometry().getDiameter()) - * pipe.getNode(i).getGeometry().getNodeLength(); - double SP = 0;// -pipe.getNode(i).getGeometry().getArea()*4.0*12.0/(pipe.getNode(i).getGeometry().getDiameter())*pipe.getNode(i).getGeometry().getNodeLength(); - - double Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() - * pipe.getNode(i).getVelocityIn().doubleValue(); - double Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() - * pipe.getNode(i).getVelocity(); - - if (dynamic) { - oldEnergy[i] = - 1.0 / timeStep * oldDensity[i] * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getGeometry().getArea(); - } else { - oldEnergy[i] = 0.0; - } - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldEnergy[i]; - r[i] = SU + oldEnergy[i] * oldInternalEnergy[i]; - a[i] = -a[i]; - c[i] = -c[i]; + int i = numberOfNodes - 1; + double Ae = pipe.getNode(i).getGeometry().getArea(); + double Aw = pipe.getNode(i - 1).getGeometry().getArea(); + double Amean = pipe.getNode(i - 1).getGeometry().getArea(); + double meanDiameter = pipe.getNode(i - 1).getGeometry().getDiameter(); + double meanFrik = pipe.getNode(i - 1).getWallFrictionFactor(); + double meanDensity = pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity(); + double oldMeanDensity = oldDensity[i - 1]; + double meanVelocity = pipe.getNode(i - 1).getVelocity(); + double vertposchange = pipe.getNode(i).getVerticalPositionOfNode() + - pipe.getNode(i - 1).getVerticalPositionOfNode(); + double nodeLength = pipe.getNode(i - 1).getGeometry().getNodeLength(); + + SU = -Amean + * (pipe.getNode(i).getBulkSystem().getPressure() + - pipe.getNode(i - 1).getBulkSystem().getPressure()) + * 1e5 - Amean * gravity * meanDensity * vertposchange + + Amean * nodeLength * meanDensity * meanFrik / meanDiameter * meanVelocity + * Math.abs(meanVelocity) / 2.0; + SP = -Amean * nodeLength * meanDensity * meanFrik / meanDiameter * meanVelocity; + Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() + * (pipe.getNode(i - 1).getVelocityIn().doubleValue() + + pipe.getNode(i - 1).getVelocityOut().doubleValue()) + / 2.0; + Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() + * (pipe.getNode(i).getVelocityIn().doubleValue() + + pipe.getNode(i).getVelocityOut().doubleValue()) + / 2.0; + + if (dynamic) { + oldImpuls[i] = 1.0 / timeStep * oldMeanDensity * nodeLength * Amean; + } else { + oldImpuls[i] = 0.0; + } + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + // if(dynamic){c[i] = - Fe/2.0; a[i] = Fw/2.0; } + b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldImpuls[i]; + r[i] = SU + oldImpuls[i] * oldVelocity[i]; + + // setter ligningen paa rett form + a[numberOfNodes - 1] = -a[numberOfNodes - 1]; + c[numberOfNodes - 1] = -c[numberOfNodes - 1]; + } + + /** + *

+ * setEnergyMatrixTDMA. + *

+ */ + public void setEnergyMatrixTDMA() { + a[0] = 0; + b[0] = 1.0; + c[0] = 0; + double SU = pipe.getNode(0).getBulkSystem().getPhases()[0].getEnthalpy() + / pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() + / pipe.getNode(0).getBulkSystem().getPhases()[0].getMolarMass(); + r[0] = SU; + + for (int i = 1; i < numberOfNodes - 1; i++) { + double fe = pipe.getNode(i + 1).getGeometry().getNodeLength() + / (pipe.getNode(i).getGeometry().getNodeLength() + + pipe.getNode(i + 1).getGeometry().getNodeLength()); + double fw = pipe.getNode(i - 1).getGeometry().getNodeLength() + / (pipe.getNode(i).getGeometry().getNodeLength() + + pipe.getNode(i - 1).getGeometry().getNodeLength()); + double Ae = pipe.getNode(i).getGeometry().getArea(); + double Aw = pipe.getNode(i - 1).getGeometry().getArea(); + double vertposchange = (1 - fe) + * (pipe.getNode(i + 1).getVerticalPositionOfNode() + - pipe.getNode(i).getVerticalPositionOfNode()) + + (1 - fw) * (pipe.getNode(i).getVerticalPositionOfNode() + - pipe.getNode(i - 1).getVerticalPositionOfNode()); + + SU = -pipe.getNode(i).getGeometry().getArea() * gravity + * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() + * pipe.getNode(i).getVelocity() * vertposchange + + pipe.getNode(i).getGeometry().getArea() * 4.0 + * pipe.getNode(i).calcTotalHeatTransferCoefficient(0) + * (pipe.getNode(i).getGeometry().getSurroundingEnvironment().getTemperature() + - pipe.getNode(i).getBulkSystem().getTemperature()) + / (pipe.getNode(i).getGeometry().getDiameter()) + * pipe.getNode(i).getGeometry().getNodeLength(); + double SP = 0; + double Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() + * pipe.getNode(i).getVelocityIn().doubleValue(); + double Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() + * pipe.getNode(i).getVelocityOut().doubleValue(); + + if (dynamic) { + oldEnergy[i] = + 1.0 / timeStep * oldDensity[i] * pipe.getNode(i).getGeometry().getNodeLength() + * pipe.getNode(i).getGeometry().getArea(); + } else { + oldEnergy[i] = 0.0; + } + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldEnergy[i]; + r[i] = SU + oldEnergy[i] * oldInternalEnergy[i]; + + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; } - /** - *

- * setComponentConservationMatrix. - *

- * - * @param componentNumber a int - */ - public void setComponentConservationMatrix(int componentNumber) { - double SU = 0; - a[0] = 0; - b[0] = 1.0; - c[0] = 0; - SU = pipe.getNode(0).getBulkSystem().getPhases()[0].getComponents()[componentNumber].getx() - * pipe.getNode(0).getBulkSystem().getPhases()[0].getComponents()[componentNumber] - .getMolarMass() - / pipe.getNode(0).getBulkSystem().getPhases()[0].getMolarMass(); - r[0] = SU; - - for (int i = 1; i < numberOfNodes - 1; i++) { - double Ae = pipe.getNode(i).getGeometry().getArea(); - double Aw = pipe.getNode(i - 1).getGeometry().getArea(); - - double Fe = pipe.getNode(i).getVelocityOut().doubleValue() - * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() * Ae; - double Fw = pipe.getNode(i).getVelocityIn().doubleValue() - * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() * Aw; - // System.out.println("vel: " + - // pipe.getNode(i).getVelocityOut(phase).doubleValue() + " fe " + Fe); - if (dynamic) { - oldComp[i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity(); - } else { - oldComp[i] = 0.0; - } - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) + oldComp[i]; - r[i] = oldComp[i] * oldComposition[componentNumber][i]; - - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } - - int i = numberOfNodes - 1; - // double fw = - // pipe.getNode(i-1).getGeometry().getNodeLength()/(pipe.getNode(i).getGeometry().getNodeLength()+pipe.getNode(i-1).getGeometry().getNodeLength()); - double Ae = pipe.getNode(i).getGeometry().getArea(); - double Aw = pipe.getNode(i - 1).getGeometry().getArea(); - - double Fe = pipe.getNode(i).getVelocity() - * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() * Ae; - double Fw = pipe.getNode(i).getVelocityIn().doubleValue() - * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() * Aw; - - if (dynamic) { - oldComp[i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity(); - } else { - oldComp[i] = 0.0; - } - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) + oldComp[i]; - r[i] = oldComp[i] * oldComposition[componentNumber][i]; - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; + int i = numberOfNodes - 1; + + double fw = pipe.getNode(i - 1).getGeometry().getNodeLength() + / (pipe.getNode(i).getGeometry().getNodeLength() + + pipe.getNode(i - 1).getGeometry().getNodeLength()); + double Ae = pipe.getNode(i).getGeometry().getArea(); + // 1.0/((1.0-fe)/pipe.getNode(i).getGeometry().getArea() + + // fe/pipe.getNode(i+1).getGeometry().getArea()); + + double Aw = pipe.getNode(i - 1).getGeometry().getArea(); + // 1.0/((1.0-fw)/pipe.getNode(i).getGeometry().getArea() + + // fw/pipe.getNode(i-1).getGeometry().getArea()); + + double vertposchange = (1 - fw) * (pipe.getNode(i).getVerticalPositionOfNode() + - pipe.getNode(i - 1).getVerticalPositionOfNode()); + + SU = -pipe.getNode(i).getGeometry().getArea() * gravity + * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() + * pipe.getNode(i).getVelocity() * vertposchange + + pipe.getNode(i).getGeometry().getArea() * 4.0 + * pipe.getNode(i).calcTotalHeatTransferCoefficient(0) + * (pipe.getNode(i).getGeometry().getSurroundingEnvironment().getTemperature() + - pipe.getNode(i).getBulkSystem().getTemperature()) + / (pipe.getNode(i).getGeometry().getDiameter()) + * pipe.getNode(i).getGeometry().getNodeLength(); + double SP = 0; + // -pipe.getNode(i).getGeometry().getArea() * + // 4.0*12.0 / + // (pipe.getNode(i).getGeometry().getDiameter())*pipe.getNode(i).getGeometry().getNodeLength(); + + double Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() + * pipe.getNode(i).getVelocityIn().doubleValue(); + double Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() + * pipe.getNode(i).getVelocity(); + + if (dynamic) { + oldEnergy[i] = 1.0 / timeStep * oldDensity[i] * pipe.getNode(i).getGeometry().getNodeLength() + * pipe.getNode(i).getGeometry().getArea(); + } else { + oldEnergy[i] = 0.0; + } + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldEnergy[i]; + r[i] = SU + oldEnergy[i] * oldInternalEnergy[i]; + a[i] = -a[i]; + c[i] = -c[i]; + } + + /** + *

+ * setComponentConservationMatrix. + *

+ * + * @param componentNumber a int + */ + public void setComponentConservationMatrix(int componentNumber) { + double SU = 0; + a[0] = 0; + b[0] = 1.0; + c[0] = 0; + SU = pipe.getNode(0).getBulkSystem().getPhases()[0].getComponents()[componentNumber].getx() + * pipe.getNode(0).getBulkSystem().getPhases()[0].getComponents()[componentNumber] + .getMolarMass() + / pipe.getNode(0).getBulkSystem().getPhases()[0].getMolarMass(); + r[0] = SU; + + for (int i = 1; i < numberOfNodes - 1; i++) { + double Ae = pipe.getNode(i).getGeometry().getArea(); + double Aw = pipe.getNode(i - 1).getGeometry().getArea(); + + double Fe = pipe.getNode(i).getVelocityOut().doubleValue() + * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() * Ae; + double Fw = pipe.getNode(i).getVelocityIn().doubleValue() + * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() * Aw; + // System.out.println("vel: " + + // pipe.getNode(i).getVelocityOut(phase).doubleValue() + " fe " + Fe); + if (dynamic) { + oldComp[i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() + * pipe.getNode(i).getGeometry().getNodeLength() + * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity(); + } else { + oldComp[i] = 0.0; + } + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) + oldComp[i]; + r[i] = oldComp[i] * oldComposition[componentNumber][i]; + + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; } - /** - *

- * initFinalResults. - *

- */ - public void initFinalResults() { - for (int i = 0; i < numberOfNodes; i++) { - oldVelocity[i] = pipe.getNode(i).getVelocityIn().doubleValue(); - oldDensity[i] = pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity(); - oldInternalEnergy[i] = pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); + int i = numberOfNodes - 1; + // double fw = + // pipe.getNode(i-1).getGeometry().getNodeLength() / + // (pipe.getNode(i).getGeometry().getNodeLength()+pipe.getNode(i-1).getGeometry().getNodeLength()); + double Ae = pipe.getNode(i).getGeometry().getArea(); + double Aw = pipe.getNode(i - 1).getGeometry().getArea(); + + double Fe = pipe.getNode(i).getVelocity() + * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity() * Ae; + double Fw = pipe.getNode(i).getVelocityIn().doubleValue() + * pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getDensity() * Aw; + + if (dynamic) { + oldComp[i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() + * pipe.getNode(i).getGeometry().getNodeLength() + * pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity(); + } else { + oldComp[i] = 0.0; + } + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) + oldComp[i]; + r[i] = oldComp[i] * oldComposition[componentNumber][i]; + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; + } + + /** + *

+ * initFinalResults. + *

+ */ + public void initFinalResults() { + for (int i = 0; i < numberOfNodes; i++) { + oldVelocity[i] = pipe.getNode(i).getVelocityIn().doubleValue(); + oldDensity[i] = pipe.getNode(i).getBulkSystem().getPhases()[0].getDensity(); + oldInternalEnergy[i] = pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); + + for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); j++) { + oldComposition[j][i] = sol4Matrix[j].get(i, 0); + // pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getx() * + // pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getMolarMass() / + // pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); + } + } + } - for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); j++) { - oldComposition[j][i] = sol4Matrix[j].get(i, 0); // pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getx() - // * - // pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getMolarMass()/pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); - } - } + /** {@inheritDoc} */ + @Override + public void solveTDMA() { + double[] d; + int iter = 0; + int iterTop = 0; + double maxDiff = 1.0; + double diff = 0; + xNew = new double[pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents()][numberOfNodes]; + if (!dynamic) { + initProfiles(); } + initMatrix(); - /** {@inheritDoc} */ - @Override - public void solveTDMA() { - double d[]; - int iter = 0, iterTop = 0; - double maxDiff = 1.0; - double diff = 0; - xNew = new double[pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()][numberOfNodes]; - if (!dynamic) { - initProfiles(); - } - initMatrix(); + do { + maxDiff = 0; + iterTop++; + iter = 0; + if (this.solverType >= 0) { do { - maxDiff = 0; - iterTop++; - - iter = 0; - if (this.solverType >= 0) { - do { - maxDiff = 0; - do { - iter++; - setImpulsMatrixTDMA(); - Matrix solOld = solMatrix.copy(); - d = TDMAsolve.solve(a, b, c, r); - solMatrix = new Matrix(d, 1).transpose(); - diffMatrix = solMatrix.minus(solOld); - // if(dynamic) solMatrix.print(10,10); - - // System.out.println("diff1: "); - // diffMatrix.print(10,10); - // System.out.println("diff1: "+ - // diffMatrix.norm1()/solMatrix.norm1()); - initVelocity(iter); - - diff = Math.abs(diffMatrix.norm1() / solMatrix.norm1()); - if (diff > maxDiff) { - maxDiff = diff; - } - } while (diff > 1e-15 && iter < 10); - - if (solverType > 0) { - iter = 0; - do { - iter++; - // System.out.println("iter: " +iter); - setMassConservationMatrixTDMA(); - d = TDMAsolve.solve(a, b, c, r); - Matrix sol2Old = sol2Matrix.copy(); - // sol2Matrix.print(10,10); - sol2Matrix = new Matrix(d, 1).transpose(); - diffMatrix = sol2Matrix.minus(sol2Old); - // System.out.println("diff2: - // "+diffMatrix.norm1()/sol2Matrix.norm1()); - initPressure(iter); - diff = Math.abs(diffMatrix.norm1() / sol2Matrix.norm1()); - if (diff > maxDiff) { - maxDiff = diff; - } - } while (diff > 1e-15 && iter < 10); - } - // System.out.println("max diff " + maxDiff); - } while (Math.abs(maxDiff) > 1e-10); - } - - if (this.solverType >= 10) { - iter = 0; - do { - iter++; - Matrix sol3Old = sol3Matrix.copy(); - setEnergyMatrixTDMA(); - d = TDMAsolve.solve(a, b, c, r); - sol3Matrix = new Matrix(d, 1).transpose(); - diffMatrix = sol3Matrix.minus(sol3Old); - // System.out.println("diff3: " + diffMatrix.norm1() / sol3Matrix.norm1()); - initTemperature(iter); - - diff = Math.abs(diffMatrix.norm1() / sol3Matrix.norm1()); - if (diff > maxDiff) { - maxDiff = diff; - } - } while (diff > 1e-15 && iter < 10); + maxDiff = 0; + do { + iter++; + setImpulsMatrixTDMA(); + Matrix solOld = solMatrix.copy(); + d = TDMAsolve.solve(a, b, c, r); + solMatrix = new Matrix(d, 1).transpose(); + diffMatrix = solMatrix.minus(solOld); + // if(dynamic) solMatrix.print(10,10); + + // System.out.println("diff1: "); + // diffMatrix.print(10,10); + // System.out.println("diff1: "+ + // diffMatrix.norm1()/solMatrix.norm1()); + initVelocity(iter); + + diff = Math.abs(diffMatrix.norm1() / solMatrix.norm1()); + if (diff > maxDiff) { + maxDiff = diff; } + } while (diff > 1e-15 && iter < 10); - if (this.solverType >= 20) { - iter = 0; - do { - iter++; - for (int p = 0; p < pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); p++) { - setComponentConservationMatrix(p); - Matrix sol4Old = sol4Matrix[p].copy(); - xNew[p] = TDMAsolve.solve(a, b, c, r); - sol4Matrix[p] = new Matrix(xNew[p], 1).transpose(); - diff4Matrix[p] = sol4Matrix[p].minus(sol4Old); - diff = Math.abs(diff4Matrix[p].norm1() / (sol4Matrix[p].norm1())); - if (diff > maxDiff) { - maxDiff = diff; - } - } - initComposition(iter); - // solMatrix.print(10,10); - } while (diff > 1e-15 && iter < 10); + if (solverType > 0) { + iter = 0; + do { + iter++; + // System.out.println("iter: " +iter); + setMassConservationMatrixTDMA(); + d = TDMAsolve.solve(a, b, c, r); + Matrix sol2Old = sol2Matrix.copy(); + // sol2Matrix.print(10,10); + sol2Matrix = new Matrix(d, 1).transpose(); + diffMatrix = sol2Matrix.minus(sol2Old); + // System.out.println("diff2: + // "+diffMatrix.norm1()/sol2Matrix.norm1()); + initPressure(iter); + diff = Math.abs(diffMatrix.norm1() / sol2Matrix.norm1()); + if (diff > maxDiff) { + maxDiff = diff; + } + } while (diff > 1e-15 && iter < 10); + } + // System.out.println("max diff " + maxDiff); + } while (Math.abs(maxDiff) > 1e-10); + } + + if (this.solverType >= 10) { + iter = 0; + do { + iter++; + Matrix sol3Old = sol3Matrix.copy(); + setEnergyMatrixTDMA(); + d = TDMAsolve.solve(a, b, c, r); + sol3Matrix = new Matrix(d, 1).transpose(); + diffMatrix = sol3Matrix.minus(sol3Old); + // System.out.println("diff3: " + diffMatrix.norm1() / sol3Matrix.norm1()); + initTemperature(iter); + + diff = Math.abs(diffMatrix.norm1() / sol3Matrix.norm1()); + if (diff > maxDiff) { + maxDiff = diff; + } + } while (diff > 1e-15 && iter < 10); + } + + if (this.solverType >= 20) { + iter = 0; + do { + iter++; + for (int p = 0; p < pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); p++) { + setComponentConservationMatrix(p); + Matrix sol4Old = sol4Matrix[p].copy(); + xNew[p] = TDMAsolve.solve(a, b, c, r); + sol4Matrix[p] = new Matrix(xNew[p], 1).transpose(); + diff4Matrix[p] = sol4Matrix[p].minus(sol4Old); + diff = Math.abs(diff4Matrix[p].norm1() / (sol4Matrix[p].norm1())); + if (diff > maxDiff) { + maxDiff = diff; } + } + initComposition(iter); + // solMatrix.print(10,10); + } while (diff > 1e-15 && iter < 10); + } - // System.out.println("maxDiff " + maxDiff); - } while (Math.abs(maxDiff) > 1e-10 && iterTop < 100);// diffMatrix.norm2()/sol2Matrix.norm2())>0.1); + // System.out.println("maxDiff " + maxDiff); + } while (Math.abs(maxDiff) > 1e-10 && iterTop < 100); // diffMatrix.norm2()/sol2Matrix.norm2())>0.1); - initFinalResults(); - } + initFinalResults(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/onePhasePipeFlowSolver/OnePhasePipeFlowSolver.java b/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/onePhasePipeFlowSolver/OnePhasePipeFlowSolver.java index 2d004b642b..e0ac811824 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/onePhasePipeFlowSolver/OnePhasePipeFlowSolver.java +++ b/src/main/java/neqsim/fluidMechanics/flowSolver/onePhaseFlowSolver/onePhasePipeFlowSolver/OnePhasePipeFlowSolver.java @@ -3,6 +3,7 @@ * * Created on 17. januar 2001, 21:05 */ + package neqsim.fluidMechanics.flowSolver.onePhaseFlowSolver.onePhasePipeFlowSolver; import Jama.Matrix; @@ -17,69 +18,68 @@ * @version $Id: $Id */ public class OnePhasePipeFlowSolver - extends neqsim.fluidMechanics.flowSolver.onePhaseFlowSolver.OnePhaseFlowSolver { - private static final long serialVersionUID = 1000; + extends neqsim.fluidMechanics.flowSolver.onePhaseFlowSolver.OnePhaseFlowSolver { + private static final long serialVersionUID = 1000; - protected double[] PbArray; // = new double[100]; - protected Matrix solMatrix; - protected Matrix sol2Matrix; - protected Matrix sol3Matrix; - protected Matrix[] sol4Matrix; - protected double a[]; - protected double b[]; - protected double c[]; - protected double r[]; - protected double length; - protected PipeFlowSystem pipe; + protected double[] PbArray; // = new double[100]; + protected Matrix solMatrix; + protected Matrix sol2Matrix; + protected Matrix sol3Matrix; + protected Matrix[] sol4Matrix; + protected double[] a; + protected double[] b; + protected double[] c; + protected double[] r; + protected double length; + protected PipeFlowSystem pipe; - /** - *

- * Constructor for OnePhasePipeFlowSolver. - *

- */ - public OnePhasePipeFlowSolver() {} + /** + *

+ * Constructor for OnePhasePipeFlowSolver. + *

+ */ + public OnePhasePipeFlowSolver() {} - /** - *

- * Constructor for OnePhasePipeFlowSolver. - *

- * - * @param pipe a - * {@link neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.pipeFlowSystem.PipeFlowSystem} - * object - * @param length a double - * @param nodes a int - */ - public OnePhasePipeFlowSolver(PipeFlowSystem pipe, double length, int nodes) { - this.pipe = pipe; - this.length = length; - this.numberOfNodes = nodes; - PbArray = new double[nodes]; - solMatrix = new Matrix(PbArray, 1).transpose(); - sol2Matrix = new Matrix(PbArray, 1).transpose(); - sol3Matrix = new Matrix(PbArray, 1).transpose(); - sol4Matrix = - new Matrix[pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; - for (int k = 0; k < pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); k++) { - sol4Matrix[k] = new Matrix(PbArray, 1).transpose(); - } - a = new double[nodes]; - b = new double[nodes]; - c = new double[nodes]; - r = new double[nodes]; + /** + *

+ * Constructor for OnePhasePipeFlowSolver. + *

+ * + * @param pipe a + * {@link neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.pipeFlowSystem.PipeFlowSystem} + * object + * @param length a double + * @param nodes a int + */ + public OnePhasePipeFlowSolver(PipeFlowSystem pipe, double length, int nodes) { + this.pipe = pipe; + this.length = length; + this.numberOfNodes = nodes; + PbArray = new double[nodes]; + solMatrix = new Matrix(PbArray, 1).transpose(); + sol2Matrix = new Matrix(PbArray, 1).transpose(); + sol3Matrix = new Matrix(PbArray, 1).transpose(); + sol4Matrix = new Matrix[pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; + for (int k = 0; k < pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); k++) { + sol4Matrix[k] = new Matrix(PbArray, 1).transpose(); } + a = new double[nodes]; + b = new double[nodes]; + c = new double[nodes]; + r = new double[nodes]; + } - /** {@inheritDoc} */ - @Override - public OnePhasePipeFlowSolver clone() { - OnePhasePipeFlowSolver clonedSystem = null; - try { - clonedSystem = (OnePhasePipeFlowSolver) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; + /** {@inheritDoc} */ + @Override + public OnePhasePipeFlowSolver clone() { + OnePhasePipeFlowSolver clonedSystem = null; + try { + clonedSystem = (OnePhasePipeFlowSolver) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/stirredCellSolver/StirredCellSolver.java b/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/stirredCellSolver/StirredCellSolver.java index 20afd71ed6..247a95fda7 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/stirredCellSolver/StirredCellSolver.java +++ b/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/stirredCellSolver/StirredCellSolver.java @@ -16,379 +16,358 @@ * @version $Id: $Id */ public class StirredCellSolver extends TwoPhasePipeFlowSolver - implements neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - Matrix diffMatrix; - double dn[][]; - int iter = 0; - Matrix[] diff4Matrix; - double xNew[][][]; - protected double oldMass[][]; - protected double oldComp[][]; - protected double oldDensity[][]; - protected double oldVelocity[][]; - protected double oldComposition[][][]; - protected double oldInternalEnergy[][]; - protected double oldImpuls[][]; - protected double oldEnergy[][]; - - /** - *

- * Constructor for StirredCellSolver. - *

- */ - public StirredCellSolver() {} - - /** - *

- * Constructor for StirredCellSolver. - *

- * - * @param pipe a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object - * @param length a double - * @param nodes a int - */ - public StirredCellSolver(FlowSystemInterface pipe, double length, int nodes) { - super(pipe, length, nodes); + implements neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + Matrix diffMatrix; + double[][] dn; + int iter = 0; + Matrix[] diff4Matrix; + double[][][] xNew; + protected double[][] oldMass; + protected double[][] oldComp; + protected double[][] oldDensity; + protected double[][] oldVelocity; + protected double[][][] oldComposition; + protected double[][] oldInternalEnergy; + protected double[][] oldImpuls; + protected double[][] oldEnergy; + + /** + *

+ * Constructor for StirredCellSolver. + *

+ */ + public StirredCellSolver() {} + + /** + *

+ * Constructor for StirredCellSolver. + *

+ * + * @param pipe a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object + * @param length a double + * @param nodes a int + */ + public StirredCellSolver(FlowSystemInterface pipe, double length, int nodes) { + super(pipe, length, nodes); + } + + /** + *

+ * Constructor for StirredCellSolver. + *

+ * + * @param pipe a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object + * @param length a double + * @param nodes a int + * @param dynamic a boolean + */ + public StirredCellSolver(FlowSystemInterface pipe, double length, int nodes, boolean dynamic) { + super(pipe, length, nodes); + this.dynamic = dynamic; + oldMass = new double[2][nodes]; + oldComp = new double[2][nodes]; + oldImpuls = new double[2][nodes]; + diff4Matrix = + new Matrix[pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; + oldEnergy = new double[2][nodes]; + oldVelocity = new double[2][nodes]; + oldDensity = new double[2][nodes]; + oldInternalEnergy = new double[2][nodes]; + oldComposition = new double[2][pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents()][nodes]; + numberOfVelocityNodes = nodes; + } + + /** {@inheritDoc} */ + @Override + public TwoPhaseFixedStaggeredGridSolver clone() { + TwoPhaseFixedStaggeredGridSolver clonedSystem = null; + try { + clonedSystem = (TwoPhaseFixedStaggeredGridSolver) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - - /** - *

- * Constructor for StirredCellSolver. - *

- * - * @param pipe a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object - * @param length a double - * @param nodes a int - * @param dynamic a boolean - */ - public StirredCellSolver(FlowSystemInterface pipe, double length, int nodes, boolean dynamic) { - super(pipe, length, nodes); - this.dynamic = dynamic; - oldMass = new double[2][nodes]; - oldComp = new double[2][nodes]; - oldImpuls = new double[2][nodes]; - diff4Matrix = - new Matrix[pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; - oldEnergy = new double[2][nodes]; - oldVelocity = new double[2][nodes]; - oldDensity = new double[2][nodes]; - oldInternalEnergy = new double[2][nodes]; - oldComposition = new double[2][pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()][nodes]; - numberOfVelocityNodes = nodes; + return clonedSystem; + } + + /** + *

+ * initProfiles. + *

+ */ + public void initProfiles() { + SystemInterface tempSyst = pipe.getNode(0).getBulkSystem().clone(); + ThermodynamicOperations testOps = new ThermodynamicOperations(tempSyst); + testOps.TPflash(); + testOps.displayResult(); + + double[][][] molDiff = + new double[numberOfNodes][2][pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents()]; + pipe.getNode(0).init(); + pipe.getNode(0).calcFluxes(); + + for (int i = 1; i < numberOfNodes - 1; i++) { + pipe.getNode(i).init(); + pipe.getNode(i).calcFluxes(); + + for (int componentNumber = 0; componentNumber < pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); componentNumber++) { + double liquidMolarRate = + pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) + * pipe.getNode(i).getInterphaseContactLength(0) + * pipe.getNode(i).getGeometry().getNodeLength(); + double gasMolarRate = + -pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) + * pipe.getNode(i).getInterphaseContactLength(0) + * pipe.getNode(i).getGeometry().getNodeLength(); + double liquidHeatRate = pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(1) + * pipe.getNode(i).getInterphaseContactLength(0) + * pipe.getNode(i).getGeometry().getNodeLength(); + double gasHeatRate = -pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(0) + * pipe.getNode(i).getInterphaseContactLength(0) + * pipe.getNode(i).getGeometry().getNodeLength(); + + double liquid_dT = -liquidHeatRate / pipe.getNode(i).getBulkSystem().getPhase(1).getCp(); + double gas_dT = gasHeatRate / pipe.getNode(i).getBulkSystem().getPhase(0).getCp(); + + molDiff[i][0][componentNumber] = molDiff[i - 1][0][componentNumber] + gasMolarRate; + molDiff[i][1][componentNumber] = molDiff[i - 1][1][componentNumber] + liquidMolarRate; + + pipe.getNode(i + 1).getBulkSystem().getPhases()[0].addMoles(componentNumber, + molDiff[i][0][componentNumber]); + pipe.getNode(i + 1).getBulkSystem().getPhases()[1].addMoles(componentNumber, + molDiff[i][1][componentNumber]); + + pipe.getNode(i + 1).getBulkSystem().getPhase(0) + .setTemperature(pipe.getNode(i).getBulkSystem().getPhase(0).getTemperature() + gas_dT); + pipe.getNode(i + 1).getBulkSystem().getPhase(1).setTemperature( + pipe.getNode(i).getBulkSystem().getPhase(1).getTemperature() + liquid_dT); + } + + pipe.getNode(i + 1).getBulkSystem().initBeta(); + pipe.getNode(i + 1).getBulkSystem().init_x_y(); + pipe.getNode(i + 1).initFlowCalc(); + + System.out.println( + "x " + pipe.getNode(i - 1).getBulkSystem().getPhases()[1].getComponents()[0].getx()); + System.out.println( + "x " + pipe.getNode(i - 1).getBulkSystem().getPhases()[1].getComponents()[1].getx()); + System.out.println( + "y " + pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getComponents()[0].getx()); + System.out.println( + "y " + pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getComponents()[1].getx()); } - - /** {@inheritDoc} */ - @Override - public TwoPhaseFixedStaggeredGridSolver clone() { - TwoPhaseFixedStaggeredGridSolver clonedSystem = null; - try { - clonedSystem = (TwoPhaseFixedStaggeredGridSolver) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); + pipe.getNode(numberOfNodes - 1).init(); + pipe.getNode(numberOfNodes - 1).calcFluxes(); + this.initNodes(); + System.out.println("finisched initializing...."); + } + + /** + *

+ * initMatrix. + *

+ */ + public void initMatrix() { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).init(); + double enthalpy0 = pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); + double enthalpy1 = pipe.getNode(i).getBulkSystem().getPhases()[1].getEnthalpy() + / pipe.getNode(i).getBulkSystem().getPhases()[1].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[1].getMolarMass(); + + solMatrix[0].set(i, 0, pipe.getNode(i).getVelocityIn(0).doubleValue()); + solMatrix[1].set(i, 0, pipe.getNode(i).getVelocityIn(1).doubleValue()); + + sol3Matrix[0].set(i, 0, enthalpy0); + sol3Matrix[1].set(i, 0, enthalpy1); + + solPhaseConsMatrix[0].set(i, 0, + pipe.getNode(i).getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity()); + solPhaseConsMatrix[1].set(i, 0, pipe.getNode(i).getPhaseFraction(1)); + + for (int phase = 0; phase < 2; phase++) { + for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); j++) { + solMolFracMatrix[phase][j].set(i, 0, + pipe.getNode(i).getBulkSystem().getPhases()[phase].getComponents()[j].getx() + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getComponents()[j] + .getMolarMass() + / pipe.getNode(i).getBulkSystem().getPhases()[phase].getMolarMass()); } - return clonedSystem; + } } - - /** - *

- * initProfiles. - *

- */ - public void initProfiles() { - SystemInterface tempSyst = pipe.getNode(0).getBulkSystem().clone(); - ThermodynamicOperations testOps = new ThermodynamicOperations(tempSyst); - testOps.TPflash(); - testOps.displayResult(); - - double[][][] molDiff = - new double[numberOfNodes][2][pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()]; - pipe.getNode(0).init(); - pipe.getNode(0).calcFluxes(); - - for (int i = 1; i < numberOfNodes - 1; i++) { - pipe.getNode(i).init(); - pipe.getNode(i).calcFluxes(); - - for (int componentNumber = - 0; componentNumber < pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); componentNumber++) { - double liquidMolarRate = - pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * pipe.getNode(i).getInterphaseContactLength(0) - * pipe.getNode(i).getGeometry().getNodeLength(); - double gasMolarRate = - -pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * pipe.getNode(i).getInterphaseContactLength(0) - * pipe.getNode(i).getGeometry().getNodeLength(); - double liquidHeatRate = pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(1) - * pipe.getNode(i).getInterphaseContactLength(0) - * pipe.getNode(i).getGeometry().getNodeLength(); - double gasHeatRate = -pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(0) - * pipe.getNode(i).getInterphaseContactLength(0) - * pipe.getNode(i).getGeometry().getNodeLength(); - - double liquid_dT = - -liquidHeatRate / pipe.getNode(i).getBulkSystem().getPhase(1).getCp(); - double gas_dT = gasHeatRate / pipe.getNode(i).getBulkSystem().getPhase(0).getCp(); - - molDiff[i][0][componentNumber] = molDiff[i - 1][0][componentNumber] + gasMolarRate; - molDiff[i][1][componentNumber] = - molDiff[i - 1][1][componentNumber] + liquidMolarRate; - - pipe.getNode(i + 1).getBulkSystem().getPhases()[0].addMoles(componentNumber, - molDiff[i][0][componentNumber]); - pipe.getNode(i + 1).getBulkSystem().getPhases()[1].addMoles(componentNumber, - molDiff[i][1][componentNumber]); - - pipe.getNode(i + 1).getBulkSystem().getPhase(0).setTemperature( - pipe.getNode(i).getBulkSystem().getPhase(0).getTemperature() + gas_dT); - pipe.getNode(i + 1).getBulkSystem().getPhase(1).setTemperature( - pipe.getNode(i).getBulkSystem().getPhase(1).getTemperature() + liquid_dT); - } - - pipe.getNode(i + 1).getBulkSystem().initBeta(); - pipe.getNode(i + 1).getBulkSystem().init_x_y(); - pipe.getNode(i + 1).initFlowCalc(); - - System.out.println("x " - + pipe.getNode(i - 1).getBulkSystem().getPhases()[1].getComponents()[0].getx()); - System.out.println("x " - + pipe.getNode(i - 1).getBulkSystem().getPhases()[1].getComponents()[1].getx()); - System.out.println("y " - + pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getComponents()[0].getx()); - System.out.println("y " - + pipe.getNode(i - 1).getBulkSystem().getPhases()[0].getComponents()[1].getx()); - } - pipe.getNode(numberOfNodes - 1).init(); - pipe.getNode(numberOfNodes - 1).calcFluxes(); - this.initNodes(); - System.out.println("finisched initializing...."); + } + + /** + *

+ * initPressure. + *

+ * + * @param phase a int + */ + public void initPressure(int phase) { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).init(); + pipe.getNode(i).getBulkSystem() + .setPressure(0.8 * pipe.getNode(i).getBulkSystem().getPhases()[phase].getdPdrho() + * diffMatrix.get(i, 0) * 1e-5 + pipe.getNode(i).getBulkSystem().getPressure()); + pipe.getNode(i).init(); } - - /** - *

- * initMatrix. - *

- */ - public void initMatrix() { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).init(); - double enthalpy0 = pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); - double enthalpy1 = pipe.getNode(i).getBulkSystem().getPhases()[1].getEnthalpy() - / pipe.getNode(i).getBulkSystem().getPhases()[1].getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[1].getMolarMass(); - - solMatrix[0].set(i, 0, pipe.getNode(i).getVelocityIn(0).doubleValue()); - solMatrix[1].set(i, 0, pipe.getNode(i).getVelocityIn(1).doubleValue()); - - sol3Matrix[0].set(i, 0, enthalpy0); - sol3Matrix[1].set(i, 0, enthalpy1); - - solPhaseConsMatrix[0].set(i, 0, pipe.getNode(i).getBulkSystem().getPhases()[0] - .getPhysicalProperties().getDensity()); - solPhaseConsMatrix[1].set(i, 0, pipe.getNode(i).getPhaseFraction(1)); - - for (int phase = 0; phase < 2; phase++) { - for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); j++) { - solMolFracMatrix[phase][j].set(i, 0, - pipe.getNode(i).getBulkSystem().getPhases()[phase].getComponents()[j] - .getx() - * pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getComponents()[j].getMolarMass() - / pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getMolarMass()); - } - } - } + } + + /** + *

+ * initVelocity. + *

+ * + * @param phase a int + */ + public void initVelocity(int phase) { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).setVelocityIn(phase, pipe.getNode(i).getVelocityIn(phase).doubleValue() + 0.8 + * (solMatrix[phase].get(i, 0) - pipe.getNode(i).getVelocityIn(phase).doubleValue())); } - /** - *

- * initPressure. - *

- * - * @param phase a int - */ - public void initPressure(int phase) { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).init(); - pipe.getNode(i).getBulkSystem().setPressure( - 0.8 * pipe.getNode(i).getBulkSystem().getPhases()[phase].getdPdrho() - * diffMatrix.get(i, 0) * 1e-5 - + pipe.getNode(i).getBulkSystem().getPressure()); - pipe.getNode(i).init(); - } + for (int i = 0; i < numberOfNodes; i++) { + double meanVelocity = pipe.getNode(i).getVelocityIn(phase).doubleValue(); + pipe.getNode(i).setVelocity(phase, meanVelocity); + pipe.getNode(i).init(); } - - /** - *

- * initVelocity. - *

- * - * @param phase a int - */ - public void initVelocity(int phase) { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).setVelocityIn(phase, - pipe.getNode(i).getVelocityIn(phase).doubleValue() - + 0.8 * (solMatrix[phase].get(i, 0) - - pipe.getNode(i).getVelocityIn(phase).doubleValue())); - } - - for (int i = 0; i < numberOfNodes; i++) { - double meanVelocity = pipe.getNode(i).getVelocityIn(phase).doubleValue(); - pipe.getNode(i).setVelocity(phase, meanVelocity); - pipe.getNode(i).init(); - } + } + + /** + *

+ * initTemperature. + *

+ * + * @param phase a int + */ + public void initTemperature(int phase) { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).init(); + pipe.getNode(i).getBulkSystem().setTemperature( + pipe.getNode(i).getBulkSystem().getTemperature(phase) + 0.8 * diffMatrix.get(i, 0) + / (pipe.getNode(i).getBulkSystem().getPhases()[phase].getCp() + / pipe.getNode(i).getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[phase].getMolarMass()), + phase); + pipe.getNode(i).init(); } - - /** - *

- * initTemperature. - *

- * - * @param phase a int - */ - public void initTemperature(int phase) { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).init(); - pipe.getNode(i).getBulkSystem() - .setTemperature(pipe.getNode(i).getBulkSystem().getTemperature(phase) - + 0.8 * diffMatrix.get(i, 0) - / (pipe.getNode(i).getBulkSystem().getPhases()[phase].getCp() - / pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getMolarMass()), - phase); - pipe.getNode(i).init(); - } + } + + /** + *

+ * initPhaseFraction. + *

+ * + * @param phase a int + */ + public void initPhaseFraction(int phase) { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).setPhaseFraction(phase, + pipe.getNode(i).getPhaseFraction(phase) + 0.8 * diffMatrix.get(i, 0)); + pipe.getNode(i).setPhaseFraction(0, 1.0 - pipe.getNode(i).getPhaseFraction(phase)); + pipe.getNode(i).init(); } - - /** - *

- * initPhaseFraction. - *

- * - * @param phase a int - */ - public void initPhaseFraction(int phase) { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).setPhaseFraction(phase, - pipe.getNode(i).getPhaseFraction(phase) + 0.8 * diffMatrix.get(i, 0)); - pipe.getNode(i).setPhaseFraction(0, 1.0 - pipe.getNode(i).getPhaseFraction(phase)); - pipe.getNode(i).init(); - } - } - - /** - *

- * initComposition. - *

- * - * @param phase a int - * @param comp a int - */ - public void initComposition(int phase, int comp) { - for (int j = 0; j < numberOfNodes; j++) { - if ((pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].getx() - + diffMatrix.get(j, 0) - * pipe.getNode(j).getBulkSystem().getPhases()[phase].getMolarMass() - / pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getComponents()[comp].getMolarMass()) > 1.0) { - pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] - .setx(1.0 - 1e-30); - } else if (pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] - .getx() - + diffMatrix.get(j, 0) - * pipe.getNode(j).getBulkSystem().getPhases()[phase].getMolarMass() - / pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getComponents()[comp].getMolarMass() < 0.0) { - pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] - .setx(1e-30); - } else { - pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].setx( - pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] - .getx() - + diffMatrix.get(j, 0) - * pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getMolarMass() - / pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getComponents()[comp].getMolarMass());// pipe.getNode(j).getBulkSystem().getPhases()[0].getComponents()[p].getx() - // + - // 0.5*diff4Matrix[p].get(j,0)); - } - - double xSum = 0.0; - for (int i = 0; i < pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getNumberOfComponents() - 1; i++) { - xSum += pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[i] - .getx(); - } - - pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getComponents()[pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getNumberOfComponents() - 1].setx(1.0 - xSum); - pipe.getNode(j).init(); - } + } + + /** + *

+ * initComposition. + *

+ * + * @param phase a int + * @param comp a int + */ + public void initComposition(int phase, int comp) { + for (int j = 0; j < numberOfNodes; j++) { + if ((pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].getx() + + diffMatrix.get(j, 0) * pipe.getNode(j).getBulkSystem().getPhases()[phase].getMolarMass() + / pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] + .getMolarMass()) > 1.0) { + pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].setx(1.0 - 1e-30); + } else if (pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].getx() + + diffMatrix.get(j, 0) * pipe.getNode(j).getBulkSystem().getPhases()[phase].getMolarMass() + / pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] + .getMolarMass() < 0.0) { + pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].setx(1e-30); + } else { + pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] + .setx(pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].getx() + + diffMatrix.get(j, 0) + * pipe.getNode(j).getBulkSystem().getPhases()[phase].getMolarMass() + / pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] + .getMolarMass()); + // pipe.getNode(j).getBulkSystem().getPhases()[0].getComponents()[p].getx() + + // 0.5*diff4Matrix[p].get(j,0)); + } + + double xSum = 0.0; + for (int i = 0; i < pipe.getNode(j).getBulkSystem().getPhases()[phase].getNumberOfComponents() + - 1; i++) { + xSum += pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[i].getx(); + } + + pipe.getNode(j).getBulkSystem().getPhases()[phase] + .getComponents()[pipe.getNode(j).getBulkSystem().getPhases()[phase] + .getNumberOfComponents() - 1].setx(1.0 - xSum); + pipe.getNode(j).init(); } - - /** - *

- * initFinalResults. - *

- * - * @param phase a int - */ - public void initFinalResults(int phase) { - for (int i = 0; i < numberOfNodes; i++) { - oldVelocity[phase][i] = pipe.getNode(i).getVelocityIn().doubleValue(); - oldDensity[phase][i] = pipe.getNode(i).getBulkSystem().getPhases()[0] - .getPhysicalProperties().getDensity(); - oldInternalEnergy[phase][i] = - pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() - / pipe.getNode(i).getBulkSystem().getPhases()[0] - .getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); - - for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); j++) { - oldComposition[phase][j][i] = xNew[phase][j][i]; - } - } + } + + /** + *

+ * initFinalResults. + *

+ * + * @param phase a int + */ + public void initFinalResults(int phase) { + for (int i = 0; i < numberOfNodes; i++) { + oldVelocity[phase][i] = pipe.getNode(i).getVelocityIn().doubleValue(); + oldDensity[phase][i] = + pipe.getNode(i).getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity(); + oldInternalEnergy[phase][i] = pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); + + for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); j++) { + oldComposition[phase][j][i] = xNew[phase][j][i]; + } } - - /** - *

- * calcFluxes. - *

- */ - public void calcFluxes() { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).calcFluxes(); - } + } + + /** + *

+ * calcFluxes. + *

+ */ + public void calcFluxes() { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).calcFluxes(); } - - /** - *

- * initNodes. - *

- */ - public void initNodes() { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).init(); - } + } + + /** + *

+ * initNodes. + *

+ */ + public void initNodes() { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).init(); } + } - /** {@inheritDoc} */ - @Override - public void solveTDMA() { - initProfiles(); - } + /** {@inheritDoc} */ + @Override + public void solveTDMA() { + initProfiles(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/twoPhasePipeFlowSolver/TwoPhaseFixedStaggeredGridSolver.java b/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/twoPhasePipeFlowSolver/TwoPhaseFixedStaggeredGridSolver.java index e1da6a8cd3..aeb927ae4f 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/twoPhasePipeFlowSolver/TwoPhaseFixedStaggeredGridSolver.java +++ b/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/twoPhasePipeFlowSolver/TwoPhaseFixedStaggeredGridSolver.java @@ -13,1164 +13,1136 @@ * @version $Id: $Id */ public class TwoPhaseFixedStaggeredGridSolver extends TwoPhasePipeFlowSolver - implements neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - Matrix diffMatrix; - double dn[][]; - int iter = 0; - Matrix[] diff4Matrix; - double xNew[][][]; - protected double oldMass[][]; - protected double oldComp[][]; - protected double oldDensity[][]; - protected double oldVelocity[][]; - protected double oldComposition[][][]; - protected double oldInternalEnergy[][]; - protected double oldImpuls[][]; - protected double oldEnergy[][]; - - /** - *

- * Constructor for TwoPhaseFixedStaggeredGridSolver. - *

- */ - public TwoPhaseFixedStaggeredGridSolver() {} - - /** - *

- * Constructor for TwoPhaseFixedStaggeredGridSolver. - *

- * - * @param pipe a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object - * @param length a double - * @param nodes a int - */ - public TwoPhaseFixedStaggeredGridSolver(FlowSystemInterface pipe, double length, int nodes) { - super(pipe, length, nodes); + implements neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + Matrix diffMatrix; + double[][] dn; + int iter = 0; + Matrix[] diff4Matrix; + double[][][] xNew; + protected double[][] oldMass; + protected double[][] oldComp; + protected double[][] oldDensity; + protected double[][] oldVelocity; + protected double[][][] oldComposition; + protected double[][] oldInternalEnergy; + protected double[][] oldImpuls; + protected double[][] oldEnergy; + + /** + *

+ * Constructor for TwoPhaseFixedStaggeredGridSolver. + *

+ */ + public TwoPhaseFixedStaggeredGridSolver() {} + + /** + *

+ * Constructor for TwoPhaseFixedStaggeredGridSolver. + *

+ * + * @param pipe a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object + * @param length a double + * @param nodes a int + */ + public TwoPhaseFixedStaggeredGridSolver(FlowSystemInterface pipe, double length, int nodes) { + super(pipe, length, nodes); + } + + /** + *

+ * Constructor for TwoPhaseFixedStaggeredGridSolver. + *

+ * + * @param pipe a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object + * @param length a double + * @param nodes a int + * @param dynamic a boolean + */ + public TwoPhaseFixedStaggeredGridSolver(FlowSystemInterface pipe, double length, int nodes, + boolean dynamic) { + super(pipe, length, nodes); + this.dynamic = dynamic; + oldMass = new double[2][nodes]; + oldComp = new double[2][nodes]; + oldImpuls = new double[2][nodes]; + diff4Matrix = + new Matrix[pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; + oldEnergy = new double[2][nodes]; + oldVelocity = new double[2][nodes]; + oldDensity = new double[2][nodes]; + oldInternalEnergy = new double[2][nodes]; + oldComposition = new double[2][pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents()][nodes]; + numberOfVelocityNodes = nodes; + } + + /** {@inheritDoc} */ + @Override + public TwoPhaseFixedStaggeredGridSolver clone() { + TwoPhaseFixedStaggeredGridSolver clonedSystem = null; + try { + clonedSystem = (TwoPhaseFixedStaggeredGridSolver) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - - /** - *

- * Constructor for TwoPhaseFixedStaggeredGridSolver. - *

+ return clonedSystem; + } + + /** + *

+ * initProfiles. + *

+ */ + public void initProfiles() { + // double err = 0, oldPres = 0, oldTemp = 0, dpdx = 0; + + double[][][] molDiff = + new double[numberOfNodes][2][pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents()]; + pipe.getNode(0).getBulkSystem().initBeta(); + pipe.getNode(0).getBulkSystem().init_x_y(); + pipe.getNode(0).initFlowCalc(); + pipe.getNode(0).calcFluxes(); + + for (int i = 1; i < numberOfNodes - 1; i++) { + pipe.getNode(i).getBulkSystem().initBeta(); + pipe.getNode(i).getBulkSystem().init_x_y(); + pipe.getNode(i).initFlowCalc(); + pipe.getNode(i).calcFluxes(); + + double liquidHeatRate = pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(1) + * pipe.getNode(i).getInterphaseContactArea() + * (pipe.getNode(i).getGeometry().getNodeLength() / pipe.getNode(i).getVelocity(1)); + double gasHeatRate = -pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(0) + * pipe.getNode(i).getInterphaseContactArea() + * (pipe.getNode(i).getGeometry().getNodeLength() / pipe.getNode(i).getVelocity(0)); + + double liquid_dT = liquidHeatRate / pipe.getNode(i).getBulkSystem().getPhase(1).getCp(); + double gas_dT = gasHeatRate / pipe.getNode(i).getBulkSystem().getPhase(0).getCp(); + + pipe.getNode(i + 1).getBulkSystem().getPhase(0) + .setTemperature(pipe.getNode(i).getBulkSystem().getPhase(0).getTemperature() + gas_dT); + pipe.getNode(i + 1).getBulkSystem().getPhase(1) + .setTemperature(pipe.getNode(i).getBulkSystem().getPhase(1).getTemperature() + liquid_dT); + + for (int componentNumber = 0; componentNumber < pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); componentNumber++) { + double liquidMolarRate = + pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) + * pipe.getNode(i).getInterphaseContactArea() + * (pipe.getNode(i).getGeometry().getNodeLength() / pipe.getNode(i).getVelocity(1)); + double gasMolarRate = + -pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) + * pipe.getNode(i).getInterphaseContactArea() + * (pipe.getNode(i).getGeometry().getNodeLength() / pipe.getNode(i).getVelocity(0)); + + molDiff[i][0][componentNumber] = molDiff[i - 1][0][componentNumber] + gasMolarRate; + molDiff[i][1][componentNumber] = molDiff[i - 1][1][componentNumber] + liquidMolarRate; + + pipe.getNode(i + 1).getBulkSystem().getPhases()[0].addMoles(componentNumber, + molDiff[i - 1][0][componentNumber]); + pipe.getNode(i + 1).getBulkSystem().getPhases()[1].addMoles(componentNumber, + molDiff[i - 1][1][componentNumber]); + } + } + pipe.getNode(numberOfNodes - 1).init(); + pipe.getNode(numberOfNodes - 1).calcFluxes(); + pipe.getNode(numberOfNodes - 1).getBulkSystem().initBeta(); + pipe.getNode(numberOfNodes - 1).getBulkSystem().init_x_y(); + this.initNodes(); + System.out.println("finisched initializing...."); + + /* + * do{ err=0; pipe.getNode(0).init(); for(int i = 0;i1); + * initTemperatureMatrix(); */ - public TwoPhaseFixedStaggeredGridSolver(FlowSystemInterface pipe, double length, int nodes, - boolean dynamic) { - super(pipe, length, nodes); - this.dynamic = dynamic; - oldMass = new double[2][nodes]; - oldComp = new double[2][nodes]; - oldImpuls = new double[2][nodes]; - diff4Matrix = - new Matrix[pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; - oldEnergy = new double[2][nodes]; - oldVelocity = new double[2][nodes]; - oldDensity = new double[2][nodes]; - oldInternalEnergy = new double[2][nodes]; - oldComposition = new double[2][pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()][nodes]; - numberOfVelocityNodes = nodes; - } - - /** {@inheritDoc} */ - @Override - public TwoPhaseFixedStaggeredGridSolver clone() { - TwoPhaseFixedStaggeredGridSolver clonedSystem = null; - try { - clonedSystem = (TwoPhaseFixedStaggeredGridSolver) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); + } + + /** + *

+ * initMatrix. + *

+ */ + public void initMatrix() { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).init(); + double enthalpy0 = pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); + double enthalpy1 = pipe.getNode(i).getBulkSystem().getPhases()[1].getEnthalpy() + / pipe.getNode(i).getBulkSystem().getPhases()[1].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[1].getMolarMass(); + + solMatrix[0].set(i, 0, pipe.getNode(i).getVelocityIn(0).doubleValue()); + solMatrix[1].set(i, 0, pipe.getNode(i).getVelocityIn(1).doubleValue()); + + sol3Matrix[0].set(i, 0, enthalpy0); + sol3Matrix[1].set(i, 0, enthalpy1); + + solPhaseConsMatrix[0].set(i, 0, + pipe.getNode(i).getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity()); + solPhaseConsMatrix[1].set(i, 0, pipe.getNode(i).getPhaseFraction(1)); + + for (int phase = 0; phase < 2; phase++) { + for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); j++) { + solMolFracMatrix[phase][j].set(i, 0, + pipe.getNode(i).getBulkSystem().getPhases()[phase].getComponents()[j].getx() + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getComponents()[j] + .getMolarMass() + / pipe.getNode(i).getBulkSystem().getPhases()[phase].getMolarMass()); } - return clonedSystem; + } } - - /** - *

- * initProfiles. - *

- */ - public void initProfiles() { - // double err = 0, oldPres = 0, oldTemp = 0, dpdx = 0; - - double[][][] molDiff = - new double[numberOfNodes][2][pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()]; - pipe.getNode(0).getBulkSystem().initBeta(); - pipe.getNode(0).getBulkSystem().init_x_y(); - pipe.getNode(0).initFlowCalc(); - pipe.getNode(0).calcFluxes(); - - for (int i = 1; i < numberOfNodes - 1; i++) { - pipe.getNode(i).getBulkSystem().initBeta(); - pipe.getNode(i).getBulkSystem().init_x_y(); - pipe.getNode(i).initFlowCalc(); - pipe.getNode(i).calcFluxes(); - - double liquidHeatRate = pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(1) - * pipe.getNode(i).getInterphaseContactArea() - * (pipe.getNode(i).getGeometry().getNodeLength() - / pipe.getNode(i).getVelocity(1)); - double gasHeatRate = -pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(0) - * pipe.getNode(i).getInterphaseContactArea() - * (pipe.getNode(i).getGeometry().getNodeLength() - / pipe.getNode(i).getVelocity(0)); - - double liquid_dT = liquidHeatRate / pipe.getNode(i).getBulkSystem().getPhase(1).getCp(); - double gas_dT = gasHeatRate / pipe.getNode(i).getBulkSystem().getPhase(0).getCp(); - - pipe.getNode(i + 1).getBulkSystem().getPhase(0).setTemperature( - pipe.getNode(i).getBulkSystem().getPhase(0).getTemperature() + gas_dT); - pipe.getNode(i + 1).getBulkSystem().getPhase(1).setTemperature( - pipe.getNode(i).getBulkSystem().getPhase(1).getTemperature() + liquid_dT); - - for (int componentNumber = - 0; componentNumber < pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); componentNumber++) { - double liquidMolarRate = - pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * pipe.getNode(i).getInterphaseContactArea() - * (pipe.getNode(i).getGeometry().getNodeLength() - / pipe.getNode(i).getVelocity(1)); - double gasMolarRate = - -pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * pipe.getNode(i).getInterphaseContactArea() - * (pipe.getNode(i).getGeometry().getNodeLength() - / pipe.getNode(i).getVelocity(0)); - - molDiff[i][0][componentNumber] = molDiff[i - 1][0][componentNumber] + gasMolarRate; - molDiff[i][1][componentNumber] = - molDiff[i - 1][1][componentNumber] + liquidMolarRate; - - pipe.getNode(i + 1).getBulkSystem().getPhases()[0].addMoles(componentNumber, - molDiff[i - 1][0][componentNumber]); - pipe.getNode(i + 1).getBulkSystem().getPhases()[1].addMoles(componentNumber, - molDiff[i - 1][1][componentNumber]); - } - } - pipe.getNode(numberOfNodes - 1).init(); - pipe.getNode(numberOfNodes - 1).calcFluxes(); - pipe.getNode(numberOfNodes - 1).getBulkSystem().initBeta(); - pipe.getNode(numberOfNodes - 1).getBulkSystem().init_x_y(); - this.initNodes(); - System.out.println("finisched initializing...."); - - /* - * do{ err=0; pipe.getNode(0).init(); for(int i = 0;i1); - * initTemperatureMatrix(); - */ + } + + /** + *

+ * initPressure. + *

+ * + * @param phase a int + */ + public void initPressure(int phase) { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).init(); + pipe.getNode(i).getBulkSystem() + .setPressure(0.8 * pipe.getNode(i).getBulkSystem().getPhases()[phase].getdPdrho() + * diffMatrix.get(i, 0) * 1e-5 + pipe.getNode(i).getBulkSystem().getPressure()); + pipe.getNode(i).init(); } - - /** - *

- * initMatrix. - *

- */ - public void initMatrix() { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).init(); - double enthalpy0 = pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); - double enthalpy1 = pipe.getNode(i).getBulkSystem().getPhases()[1].getEnthalpy() - / pipe.getNode(i).getBulkSystem().getPhases()[1].getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[1].getMolarMass(); - - solMatrix[0].set(i, 0, pipe.getNode(i).getVelocityIn(0).doubleValue()); - solMatrix[1].set(i, 0, pipe.getNode(i).getVelocityIn(1).doubleValue()); - - sol3Matrix[0].set(i, 0, enthalpy0); - sol3Matrix[1].set(i, 0, enthalpy1); - - solPhaseConsMatrix[0].set(i, 0, pipe.getNode(i).getBulkSystem().getPhases()[0] - .getPhysicalProperties().getDensity()); - solPhaseConsMatrix[1].set(i, 0, pipe.getNode(i).getPhaseFraction(1)); - - for (int phase = 0; phase < 2; phase++) { - for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); j++) { - solMolFracMatrix[phase][j].set(i, 0, - pipe.getNode(i).getBulkSystem().getPhases()[phase].getComponents()[j] - .getx() - * pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getComponents()[j].getMolarMass() - / pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getMolarMass()); - } - } - } + } + + /** + *

+ * initVelocity. + *

+ * + * @param phase a int + */ + public void initVelocity(int phase) { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).setVelocityIn(phase, pipe.getNode(i).getVelocityIn(phase).doubleValue() + 0.8 + * (solMatrix[phase].get(i, 0) - pipe.getNode(i).getVelocityIn(phase).doubleValue())); } - /** - *

- * initPressure. - *

- * - * @param phase a int - */ - public void initPressure(int phase) { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).init(); - pipe.getNode(i).getBulkSystem().setPressure( - 0.8 * pipe.getNode(i).getBulkSystem().getPhases()[phase].getdPdrho() - * diffMatrix.get(i, 0) * 1e-5 - + pipe.getNode(i).getBulkSystem().getPressure()); - pipe.getNode(i).init(); - } + for (int i = 0; i < numberOfNodes; i++) { + double meanVelocity = pipe.getNode(i).getVelocityIn(phase).doubleValue(); + pipe.getNode(i).setVelocity(phase, meanVelocity); + pipe.getNode(i).init(); } - - /** - *

- * initVelocity. - *

- * - * @param phase a int - */ - public void initVelocity(int phase) { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).setVelocityIn(phase, - pipe.getNode(i).getVelocityIn(phase).doubleValue() - + 0.8 * (solMatrix[phase].get(i, 0) - - pipe.getNode(i).getVelocityIn(phase).doubleValue())); - } - - for (int i = 0; i < numberOfNodes; i++) { - double meanVelocity = pipe.getNode(i).getVelocityIn(phase).doubleValue(); - pipe.getNode(i).setVelocity(phase, meanVelocity); - pipe.getNode(i).init(); - } + } + + /** + *

+ * initTemperature. + *

+ * + * @param phase a int + */ + public void initTemperature(int phase) { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).init(); + pipe.getNode(i).getBulkSystem().setTemperature( + pipe.getNode(i).getBulkSystem().getTemperature(phase) + 0.8 * diffMatrix.get(i, 0) + / (pipe.getNode(i).getBulkSystem().getPhases()[phase].getCp() + / pipe.getNode(i).getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[phase].getMolarMass()), + phase); + pipe.getNode(i).init(); } - - /** - *

- * initTemperature. - *

- * - * @param phase a int - */ - public void initTemperature(int phase) { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).init(); - pipe.getNode(i).getBulkSystem() - .setTemperature(pipe.getNode(i).getBulkSystem().getTemperature(phase) - + 0.8 * diffMatrix.get(i, 0) - / (pipe.getNode(i).getBulkSystem().getPhases()[phase].getCp() - / pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getMolarMass()), - phase); - pipe.getNode(i).init(); - } + } + + /** + *

+ * initPhaseFraction. + *

+ * + * @param phase a int + */ + public void initPhaseFraction(int phase) { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).setPhaseFraction(phase, + pipe.getNode(i).getPhaseFraction(phase) + 0.8 * diffMatrix.get(i, 0)); + pipe.getNode(i).setPhaseFraction(0, 1.0 - pipe.getNode(i).getPhaseFraction(phase)); + pipe.getNode(i).init(); } - - /** - *

- * initPhaseFraction. - *

- * - * @param phase a int - */ - public void initPhaseFraction(int phase) { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).setPhaseFraction(phase, - pipe.getNode(i).getPhaseFraction(phase) + 0.8 * diffMatrix.get(i, 0)); - pipe.getNode(i).setPhaseFraction(0, 1.0 - pipe.getNode(i).getPhaseFraction(phase)); - pipe.getNode(i).init(); - } + } + + /** + *

+ * initComposition. + *

+ * + * @param phase a int + * @param comp a int + */ + public void initComposition(int phase, int comp) { + for (int j = 0; j < numberOfNodes; j++) { + if ((pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].getx() + + diffMatrix.get(j, 0) * pipe.getNode(j).getBulkSystem().getPhases()[phase].getMolarMass() + / pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] + .getMolarMass()) > 1.0) { + pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].setx(1.0 - 1e-30); + } else if (pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].getx() + + diffMatrix.get(j, 0) * pipe.getNode(j).getBulkSystem().getPhases()[phase].getMolarMass() + / pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] + .getMolarMass() < 0.0) { + pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].setx(1e-30); + } else { + pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] + .setx(pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].getx() + + diffMatrix.get(j, 0) + * pipe.getNode(j).getBulkSystem().getPhases()[phase].getMolarMass() + / pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] + .getMolarMass()); + // pipe.getNode(j).getBulkSystem().getPhases()[0].getComponents()[p].getx() + // + 0.5*diff4Matrix[p].get(j,0)); + } + + double xSum = 0.0; + for (int i = 0; i < pipe.getNode(j).getBulkSystem().getPhases()[phase].getNumberOfComponents() + - 1; i++) { + xSum += pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[i].getx(); + } + + pipe.getNode(j).getBulkSystem().getPhases()[phase] + .getComponents()[pipe.getNode(j).getBulkSystem().getPhases()[phase] + .getNumberOfComponents() - 1].setx(1.0 - xSum); + pipe.getNode(j).init(); } - - /** - *

- * initComposition. - *

- * - * @param phase a int - * @param comp a int - */ - public void initComposition(int phase, int comp) { - for (int j = 0; j < numberOfNodes; j++) { - if ((pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].getx() - + diffMatrix.get(j, 0) - * pipe.getNode(j).getBulkSystem().getPhases()[phase].getMolarMass() - / pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getComponents()[comp].getMolarMass()) > 1.0) { - pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] - .setx(1.0 - 1e-30); - } else if (pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] - .getx() - + diffMatrix.get(j, 0) - * pipe.getNode(j).getBulkSystem().getPhases()[phase].getMolarMass() - / pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getComponents()[comp].getMolarMass() < 0.0) { - pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] - .setx(1e-30); - } else { - pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp].setx( - pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[comp] - .getx() - + diffMatrix.get(j, 0) - * pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getMolarMass() - / pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getComponents()[comp].getMolarMass());// pipe.getNode(j).getBulkSystem().getPhases()[0].getComponents()[p].getx() - // + - // 0.5*diff4Matrix[p].get(j,0)); - } - - double xSum = 0.0; - for (int i = 0; i < pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getNumberOfComponents() - 1; i++) { - xSum += pipe.getNode(j).getBulkSystem().getPhases()[phase].getComponents()[i] - .getx(); - } - - pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getComponents()[pipe.getNode(j).getBulkSystem().getPhases()[phase] - .getNumberOfComponents() - 1].setx(1.0 - xSum); - pipe.getNode(j).init(); - } + } + + /** + *

+ * setMassConservationMatrix. + *

+ * + * @param phase a int + */ + public void setMassConservationMatrix(int phase) { + if (!dynamic) { + double SU = 0; + a[0] = 0; + b[0] = 1.0; + c[0] = 0; + SU = pipe.getNode(0).getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity(); + r[0] = SU; + } else { + // double Ae = pipe.getNode(0).getArea(phase); + // double Aw = pipe.getNode(0).getArea(phase); + // double Fw = pipe.getNode(0).getVelocityIn(phase).doubleValue() * Aw; + // double Fe = oldVelocity[phase][0] * Ae; + // System.out.println("new- old : " + + // (pipe.getNode(0).getVelocityIn().doubleValue() - oldVelocity[0])); + oldMass[phase][0] = 1.0 / timeStep * pipe.getNode(0).getGeometry().getArea() + * pipe.getNode(0).getGeometry().getNodeLength(); + + a[0] = 0.0; // Math.max(Fw,0); + c[0] = 1.0; // Math.max(-Fe,0); + b[0] = 1.0; // a[0] + c[0] + (Fe - Fw) + oldMass[0]; + r[0] = 0.0; // oldMass[0]*oldDensity[0]; + + // setter ligningen paa rett form + a[0] = -a[0]; + c[0] = -c[0]; } - /** - *

- * setMassConservationMatrix. - *

- * - * @param phase a int - */ - public void setMassConservationMatrix(int phase) { - if (!dynamic) { - double SU = 0; - a[0] = 0; - b[0] = 1.0; - c[0] = 0; - SU = pipe.getNode(0).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity(); - r[0] = SU; - } else { - // double Ae = pipe.getNode(0).getArea(phase); - // double Aw = pipe.getNode(0).getArea(phase); - // double Fw = pipe.getNode(0).getVelocityIn(phase).doubleValue() * Aw; - // double Fe = oldVelocity[phase][0] * Ae; - // System.out.println("new- old : " + - // (pipe.getNode(0).getVelocityIn().doubleValue() - oldVelocity[0])); - oldMass[phase][0] = 1.0 / timeStep * pipe.getNode(0).getGeometry().getArea() - * pipe.getNode(0).getGeometry().getNodeLength(); - - a[0] = 0.0;// Math.max(Fw,0); - c[0] = 1.0;// Math.max(-Fe,0); - b[0] = 1.0;// a[0] + c[0] + (Fe - Fw) + oldMass[0]; - r[0] = 0.0;// oldMass[0]*oldDensity[0]; - - // setter ligningen paa rett form - a[0] = -a[0]; - c[0] = -c[0]; - } - - for (int i = 1; i < numberOfNodes - 1; i++) { - double Ae = pipe.getNode(i).getArea(phase); - double Aw = pipe.getNode(i - 1).getArea(phase); - double Fe = pipe.getNode(i).getVelocityOut(phase).doubleValue() * Ae; - double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() * Aw; - - if (dynamic) { - oldMass[phase][i] = 1.0 / timeStep * pipe.getNode(i).getArea(phase) - * pipe.getNode(i).getGeometry().getNodeLength(); - } else { - oldMass[phase][i] = 0.0; - } - - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) + oldMass[phase][i]; - r[i] = oldMass[phase][i] * oldDensity[phase][i]; - - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } - - int i = numberOfNodes - 1; - // double Ae = pipe.getNode(i).getArea(phase); - // double Aw = pipe.getNode(i - 1).getArea(phase); - - // double Fe = pipe.getNode(i).getVelocity(phase) * Ae; - // double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() * Aw; - - if (dynamic) { - oldMass[phase][i] = 1.0 / timeStep * pipe.getNode(i).getArea(phase) - * pipe.getNode(i).getGeometry().getNodeLength(); - } else { - oldMass[phase][i] = 0.0; - } - - a[i] = 1;// Math.max(Fw,0); - c[i] = 0;// Math.max(-Fe,0); - b[i] = 1;// a[i] + c[i] + (Fe - Fw) + oldMass[phase][i]; - r[i] = 0;// oldMass[phase][i]*oldDensity[phase][i]; - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; + for (int i = 1; i < numberOfNodes - 1; i++) { + double Ae = pipe.getNode(i).getArea(phase); + double Aw = pipe.getNode(i - 1).getArea(phase); + double Fe = pipe.getNode(i).getVelocityOut(phase).doubleValue() * Ae; + double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() * Aw; + + if (dynamic) { + oldMass[phase][i] = 1.0 / timeStep * pipe.getNode(i).getArea(phase) + * pipe.getNode(i).getGeometry().getNodeLength(); + } else { + oldMass[phase][i] = 0.0; + } + + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) + oldMass[phase][i]; + r[i] = oldMass[phase][i] * oldDensity[phase][i]; + + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; } - /** - *

- * setPhaseFractionMatrix. - *

- * - * @param phase a int - */ - public void setPhaseFractionMatrix(int phase) { - if (!dynamic) { - double SU = 0; - a[0] = 0; - b[0] = 1.0; - c[0] = 0; - SU = pipe.getNode(0).getPhaseFraction(phase); - r[0] = SU; - } else { - // double Ae = pipe.getNode(0).getGeometry().getArea(); - // double Aw = pipe.getNode(0).getGeometry().getArea(); - // double Fw = pipe.getNode(0).getVelocityIn(phase).doubleValue() * Aw; - // double Fe = oldVelocity[phase][0] * Ae; - // System.out.println("new- old : " + - // (pipe.getNode(0).getVelocityIn().doubleValue() - oldVelocity[0])); - oldMass[phase][0] = 1.0 / timeStep * pipe.getNode(0).getGeometry().getArea() - * pipe.getNode(0).getGeometry().getNodeLength(); - - a[0] = 0.0;// Math.max(Fw,0); - c[0] = 1.0;// Math.max(-Fe,0); - b[0] = 1.0;// a[0] + c[0] + (Fe - Fw) + oldMass[0]; - r[0] = 0.0;// oldMass[0]*oldDensity[0]; - - // setter ligningen paa rett form - a[0] = -a[0]; - c[0] = -c[0]; - } - - for (int i = 1; i < numberOfNodes - 1; i++) { - double Ae = pipe.getNode(i).getGeometry().getArea(); - double Aw = pipe.getNode(i - 1).getGeometry().getArea(); - double Fe = pipe.getNode(i).getVelocityOut(phase).doubleValue() * Ae - * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity(); - double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() * Aw - * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity(); - - if (dynamic) { - oldMass[phase][i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() - * pipe.getNode(i).getGeometry().getNodeLength(); - } else { - oldMass[phase][i] = 0.0; - } - - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) + oldMass[phase][i]; - r[i] = oldMass[phase][i] * oldDensity[phase][i]; - - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } + int i = numberOfNodes - 1; + // double Ae = pipe.getNode(i).getArea(phase); + // double Aw = pipe.getNode(i - 1).getArea(phase); - int i = numberOfNodes - 1; - double Ae = pipe.getNode(i).getGeometry().getArea(); - double Aw = pipe.getNode(i - 1).getGeometry().getArea(); - - double Fe = pipe.getNode(i).getVelocity(phase) * Ae - * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity(); - double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() * Aw - * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity(); - - if (dynamic) { - oldMass[phase][i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() - * pipe.getNode(i).getGeometry().getNodeLength(); - } else { - oldMass[phase][i] = 0.0; - } + // double Fe = pipe.getNode(i).getVelocity(phase) * Ae; + // double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() * Aw; - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) + oldMass[phase][i]; - r[i] = oldMass[phase][i] * oldDensity[phase][i]; - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; + if (dynamic) { + oldMass[phase][i] = 1.0 / timeStep * pipe.getNode(i).getArea(phase) + * pipe.getNode(i).getGeometry().getNodeLength(); + } else { + oldMass[phase][i] = 0.0; } - /** - *

- * setImpulsMatrixTDMA. - *

- * - * @param phase a int - */ - public void setImpulsMatrixTDMA(int phase) { - double sign = (phase == 0) ? 1.0 : -1.0; - double SU = 0.0, SP = 0.0; - double Fw = 0.0, Fe = 0.0; - - pipe.getNode(0).initFlowCalc(); - pipe.getNode(0).init(); - pipe.getNode(0).setVelocityIn(phase, pipe.getNode(0).getVelocity(phase)); - - a[0] = 0; - b[0] = 1.0; - c[0] = 0; - - r[0] = pipe.getNode(0).getVelocityIn(phase).doubleValue(); - - a[1] = 0; - b[1] = 1.0; - c[1] = 0; - - r[1] = pipe.getNode(0).getVelocityIn(phase).doubleValue(); - - for (int i = 2; i < numberOfNodes - 1; i++) { - double Ae = pipe.getNode(i).getArea(phase); - double Aw = pipe.getNode(i - 1).getArea(phase); - double Amean = pipe.getNode(i - 1).getArea(phase); - double meanFrik = pipe.getNode(i - 1).getWallFrictionFactor(phase); - double meanDensity = pipe.getNode(i - 1).getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getDensity(); - double oldMeanDensity = oldDensity[phase][i]; - double meanVelocity = pipe.getNode(i - 1).getVelocity(phase); - double vertposchange = pipe.getNode(i).getVerticalPositionOfNode() - - pipe.getNode(i - 1).getVerticalPositionOfNode(); - double nodeLength = pipe.getNode(i - 1).getGeometry().getNodeLength(); - double interfaceFricition = pipe.getNode(i - 1).getInterPhaseFrictionFactor(); - // System.out.println(" dif: " + - // (-pipe.getNode(i-1).getWallContactLength(phase) - // * nodeLength* meanDensity * - // meanFrik*Math.abs(meanVelocity)*meanVelocity/8.0 - // - pipe.getNode(i-1).getInterphaseContactLength(0)*nodeLength* meanDensity - // * - // interfaceFricition*Math.abs(pipe.getNode(i).getVelocity(0) - - // pipe.getNode(i).getVelocity(1))*(pipe.getNode(i).getVelocity(0) - - // pipe.getNode(i).getVelocity(1))/8.0*sign)); - SU = -Amean - * (pipe.getNode(i).getBulkSystem().getPressure() - - pipe.getNode(i - 1).getBulkSystem().getPressure()) - * 1e5 - + Amean * gravity * meanDensity * vertposchange - + pipe.getNode(i - 1).getWallContactLength(phase) * nodeLength * meanDensity - * meanFrik * Math.abs(meanVelocity) * meanVelocity / 8.0 - - pipe.getNode(i - 1).getInterphaseContactLength(0) * nodeLength * meanDensity - * interfaceFricition - * Math.abs( - pipe.getNode(i).getVelocity(0) - pipe.getNode(i).getVelocity(1)) - * (pipe.getNode(i).getVelocity(0) - pipe.getNode(i).getVelocity(1)) - / 8.0 * sign; - // System.out.println("su " + SU); - SP = -pipe.getNode(i - 1).getWallContactLength(phase) * nodeLength * meanDensity - * meanFrik * meanVelocity / 4.0; - Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity() * pipe.getNode(i - 1).getVelocity(phase); - Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity() * pipe.getNode(i).getVelocity(phase); - - if (dynamic) { - oldImpuls[phase][i] = 1.0 / timeStep * oldMeanDensity * nodeLength * Amean; - } else { - oldImpuls[phase][i] = 0.0; - } - - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0);// - Fe/2.0; - b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldImpuls[phase][i]; - r[i] = SU + oldImpuls[phase][i] * oldVelocity[phase][i]; - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } - - int i = numberOfNodes - 1; - double Ae = pipe.getNode(i - 1).getArea(phase); - double Aw = pipe.getNode(i - 1).getArea(phase); - double Amean = pipe.getNode(i - 1).getArea(phase); - // double meanDiameter = pipe.getNode(i - 1).getGeometry().getDiameter(); - double meanFrik = pipe.getNode(i - 1).getWallFrictionFactor(phase); - double meanDensity = pipe.getNode(i - 1).getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getDensity(); - double oldMeanDensity = oldDensity[phase][i]; - double meanVelocity = pipe.getNode(i - 1).getVelocity(phase); - double vertposchange = pipe.getNode(i).getVerticalPositionOfNode() - - pipe.getNode(i - 1).getVerticalPositionOfNode(); - double nodeLength = pipe.getNode(i - 1).getGeometry().getNodeLength(); - double interfaceFricition = pipe.getNode(i - 1).getInterPhaseFrictionFactor(); - - SU = -Amean - * (pipe.getNode(i).getBulkSystem().getPressure() - - pipe.getNode(i - 1).getBulkSystem().getPressure()) - * 1e5 - - Amean * gravity * meanDensity * vertposchange - + pipe.getNode(i - 1).getWallContactLength(phase) * nodeLength * meanDensity - * meanFrik * Math.abs(meanVelocity) * meanVelocity / 8.0 - - pipe.getNode(i - 1).getInterphaseContactLength(0) * nodeLength * meanDensity - * interfaceFricition - * Math.abs(pipe.getNode(i).getVelocity(0) - pipe.getNode(i).getVelocity(1)) - * (pipe.getNode(i).getVelocity(0) - pipe.getNode(i).getVelocity(1)) / 8.0 - * sign; - SP = -pipe.getNode(i - 1).getWallContactLength(phase) * nodeLength * meanDensity * meanFrik - * meanVelocity / 4.0; - Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity() * pipe.getNode(i).getVelocityIn(phase).doubleValue(); - Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity() * pipe.getNode(i).getVelocity(phase); - - if (dynamic) { - oldImpuls[phase][i] = 1.0 / timeStep * oldMeanDensity * nodeLength * Amean; - } else { - oldImpuls[phase][i] = 0.0; - } - - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - // if(dynamic){c[i] = - Fe/2.0; a[i] = Fw/2.0; } - b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldImpuls[phase][i]; - r[i] = SU + oldImpuls[phase][i] * oldVelocity[phase][i]; - - // setter ligningen paa rett form - a[numberOfNodes - 1] = -a[numberOfNodes - 1]; - c[numberOfNodes - 1] = -c[numberOfNodes - 1]; + a[i] = 1; // Math.max(Fw,0); + c[i] = 0; // Math.max(-Fe,0); + b[i] = 1; // a[i] + c[i] + (Fe - Fw) + oldMass[phase][i]; + r[i] = 0; // oldMass[phase][i]*oldDensity[phase][i]; + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; + } + + /** + *

+ * setPhaseFractionMatrix. + *

+ * + * @param phase a int + */ + public void setPhaseFractionMatrix(int phase) { + if (!dynamic) { + double SU = 0; + a[0] = 0; + b[0] = 1.0; + c[0] = 0; + SU = pipe.getNode(0).getPhaseFraction(phase); + r[0] = SU; + } else { + // double Ae = pipe.getNode(0).getGeometry().getArea(); + // double Aw = pipe.getNode(0).getGeometry().getArea(); + // double Fw = pipe.getNode(0).getVelocityIn(phase).doubleValue() * Aw; + // double Fe = oldVelocity[phase][0] * Ae; + // System.out.println("new- old : " + + // (pipe.getNode(0).getVelocityIn().doubleValue() - oldVelocity[0])); + oldMass[phase][0] = 1.0 / timeStep * pipe.getNode(0).getGeometry().getArea() + * pipe.getNode(0).getGeometry().getNodeLength(); + + a[0] = 0.0; // Math.max(Fw,0); + c[0] = 1.0; // Math.max(-Fe,0); + b[0] = 1.0; // a[0] + c[0] + (Fe - Fw) + oldMass[0]; + r[0] = 0.0; // oldMass[0]*oldDensity[0]; + + // setter ligningen paa rett form + a[0] = -a[0]; + c[0] = -c[0]; } - /** - *

- * setEnergyMatrixTDMA. - *

- * - * @param phase a int - */ - public void setEnergyMatrixTDMA(int phase) { - double sign = (phase == 0) ? 1.0 : -1.0; - - a[0] = 0; - b[0] = 1.0; - c[0] = 0; - double SU = pipe.getNode(0).getBulkSystem().getPhases()[phase].getEnthalpy() - / pipe.getNode(0).getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() - / pipe.getNode(0).getBulkSystem().getPhases()[phase].getMolarMass(); - r[0] = SU; - - for (int i = 1; i < numberOfNodes - 1; i++) { - double fe = pipe.getNode(i + 1).getGeometry().getNodeLength() - / (pipe.getNode(i).getGeometry().getNodeLength() - + pipe.getNode(i + 1).getGeometry().getNodeLength()); - double fw = pipe.getNode(i - 1).getGeometry().getNodeLength() - / (pipe.getNode(i).getGeometry().getNodeLength() - + pipe.getNode(i - 1).getGeometry().getNodeLength()); - double Ae = pipe.getNode(i).getArea(phase); - double Aw = pipe.getNode(i - 1).getArea(phase); - double vertposchange = (1 - fe) - * (pipe.getNode(i + 1).getVerticalPositionOfNode() - - pipe.getNode(i).getVerticalPositionOfNode()) - + (1 - fw) * (pipe.getNode(i).getVerticalPositionOfNode() - - pipe.getNode(i - 1).getVerticalPositionOfNode()); - - SU = -pipe.getNode(i).getArea(phase) * gravity - * pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity() - * pipe.getNode(i).getVelocity(phase) * vertposchange - + pipe.getNode(i).getArea(phase) * 4.0 * 0.02 - * (278.0 - pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getTemperature()) - / (pipe.getNode(i).getGeometry().getDiameter()) - * pipe.getNode(i).getGeometry().getNodeLength() - + sign * pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(phase) - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getInterphaseContactLength(phase) - * (pipe.getNode(i).getGeometry().getNodeLength() - / pipe.getNode(i).getVelocity(phase)); - double SP = 0; - - double Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getDensity() - * pipe.getNode(i).getVelocityIn(phase).doubleValue(); - double Fe = - Ae * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity() * pipe.getNode(i).getVelocityOut(phase).doubleValue(); - - if (dynamic) { - oldEnergy[phase][i] = 1.0 / timeStep * oldDensity[phase][i] - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getArea(phase); - } else { - oldEnergy[phase][i] = 0.0; - } - - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldEnergy[phase][i]; - r[i] = SU + oldEnergy[phase][i] * oldInternalEnergy[phase][i]; - - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } - - int i = numberOfNodes - 1; - - double fw = pipe.getNode(i - 1).getGeometry().getNodeLength() - / (pipe.getNode(i).getGeometry().getNodeLength() - + pipe.getNode(i - 1).getGeometry().getNodeLength()); - double Ae = pipe.getNode(i).getArea(phase);// 1.0/((1.0-fe)/pipe.getNode(i).getGeometry().getArea() - // + - // fe/pipe.getNode(i+1).getGeometry().getArea()); - double Aw = pipe.getNode(i - 1).getArea(phase);// 1.0/((1.0-fw)/pipe.getNode(i).getGeometry().getArea() - // + - // fw/pipe.getNode(i-1).getGeometry().getArea()); - double vertposchange = (1 - fw) * (pipe.getNode(i).getVerticalPositionOfNode() - - pipe.getNode(i - 1).getVerticalPositionOfNode()); - - SU = -pipe.getNode(i).getArea(phase) * gravity - * pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity() - * pipe.getNode(i).getVelocity(phase) * vertposchange - + pipe.getNode(i).getWallContactLength(phase) - / pipe.getNode(i).getGeometry().getCircumference() - * pipe.getNode(i).getArea(phase) * 4.0 * 0.02 - * (278.0 - pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getTemperature()) - / (pipe.getNode(i).getGeometry().getDiameter()) - * pipe.getNode(i).getGeometry().getNodeLength() - + sign * pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(phase) - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getInterphaseContactLength(phase) - * (pipe.getNode(i).getGeometry().getNodeLength() - / pipe.getNode(i).getVelocity(phase)); - double SP = 0;// -pipe.getNode(i).getGeometry().getArea()*4.0*12.0/(pipe.getNode(i).getGeometry().getDiameter())*pipe.getNode(i).getGeometry().getNodeLength(); - - double Fw = - Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity() * pipe.getNode(i).getVelocityIn(phase).doubleValue(); - double Fe = Ae * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity() * pipe.getNode(i).getVelocity(phase); - - if (dynamic) { - oldEnergy[phase][i] = 1.0 / timeStep * oldDensity[phase][i] - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getArea(phase); - } else { - oldEnergy[phase][i] = 0.0; - } - - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldEnergy[phase][i]; - r[i] = SU + oldEnergy[phase][i] * oldInternalEnergy[phase][i]; - a[i] = -a[i]; - c[i] = -c[i]; + for (int i = 1; i < numberOfNodes - 1; i++) { + double Ae = pipe.getNode(i).getGeometry().getArea(); + double Aw = pipe.getNode(i - 1).getGeometry().getArea(); + double Fe = pipe.getNode(i).getVelocityOut(phase).doubleValue() * Ae + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity(); + double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() * Aw + * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getDensity(); + + if (dynamic) { + oldMass[phase][i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() + * pipe.getNode(i).getGeometry().getNodeLength(); + } else { + oldMass[phase][i] = 0.0; + } + + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) + oldMass[phase][i]; + r[i] = oldMass[phase][i] * oldDensity[phase][i]; + + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; } - /** - *

- * setComponentConservationMatrix2. - *

- * - * @param phase a int - * @param componentNumber a int - */ - public void setComponentConservationMatrix2(int phase, int componentNumber) { - double SU = 0; - double sign = (phase == 0) ? 1.0 : 1.0; - a[0] = 0; - b[0] = 1.0; - c[0] = 0; - SU = pipe.getNode(0).getBulkSystem().getPhases()[phase].getComponents()[componentNumber] - .getx(); - // System.out.println("phase x0: " - // +pipe.getNode(0).getBulkSystem().getPhases()[0].getComponents()[componentNumber].getx()); - // System.out.println("phase x1: " - // +pipe.getNode(0).getBulkSystem().getPhases()[1].getComponents()[componentNumber].getx()); - r[0] = SU; - - for (int i = 1; i < numberOfNodes - 1; i++) { - double fe = pipe.getNode(i + 1).getGeometry().getNodeLength() - / (pipe.getNode(i).getGeometry().getNodeLength() - + pipe.getNode(i + 1).getGeometry().getNodeLength()); - double fw = pipe.getNode(i - 1).getGeometry().getNodeLength() - / (pipe.getNode(i).getGeometry().getNodeLength() - + pipe.getNode(i - 1).getGeometry().getNodeLength()); - double Ae = 1.0 / ((1.0 - fe) / pipe.getNode(i).getArea(phase) - + fe / pipe.getNode(i + 1).getArea(phase)); - double Aw = 1.0 / ((1.0 - fw) / pipe.getNode(i).getArea(phase) - + fw / pipe.getNode(i - 1).getArea(phase)); - - double Fe = pipe.getNode(i).getVelocityOut(phase).doubleValue() - * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity() - * pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getComponents()[componentNumber].getMolarMass() - / pipe.getNode(i).getBulkSystem().getPhases()[phase].getMolarMass() * Ae; - double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() - * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() - .getDensity() - * pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getComponents()[componentNumber].getMolarMass() - / pipe.getNode(i).getBulkSystem().getPhases()[phase].getMolarMass() * Aw; - - // System.out.println("vel: " + - // pipe.getNode(i).getVelocityOut(phase).doubleValue() + " fe " + Fe); - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0);// - Fe/2.0; - b[i] = a[i] + c[i] + (Fe - Fw) - sign * pipe.getNode(i).getArea(phase) - * pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) - / pipe.getNode(i).getVelocity() * pipe.getNode(i).getGeometry().getNodeLength(); - r[i] = 0; - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } + int i = numberOfNodes - 1; + double Ae = pipe.getNode(i).getGeometry().getArea(); + double Aw = pipe.getNode(i - 1).getGeometry().getArea(); + + double Fe = pipe.getNode(i).getVelocity(phase) * Ae + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity(); + double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() * Aw + * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getDensity(); + + if (dynamic) { + oldMass[phase][i] = 1.0 / timeStep * pipe.getNode(i).getGeometry().getArea() + * pipe.getNode(i).getGeometry().getNodeLength(); + } else { + oldMass[phase][i] = 0.0; + } - a[numberOfNodes - 1] = -1.0;// -1.0; - b[numberOfNodes - 1] = 1.0; - c[numberOfNodes - 1] = 0; - SU = pipe.getNode(numberOfNodes - 2).getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getDensity() - * pipe.getNode(numberOfNodes - 2).getVelocityIn(phase).doubleValue() - * pipe.getNode(numberOfNodes - 2).getBulkSystem().getPhases()[phase] - .getComponents()[componentNumber].getx() - / (pipe.getNode(numberOfNodes - 1).getBulkSystem().getPhases()[phase] - .getPhysicalProperties().getDensity() - * pipe.getNode(numberOfNodes - 1).getVelocityIn(phase).doubleValue()); - r[numberOfNodes - 1] = 0;// SU; + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) + oldMass[phase][i]; + r[i] = oldMass[phase][i] * oldDensity[phase][i]; + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; + } + + /** + *

+ * setImpulsMatrixTDMA. + *

+ * + * @param phase a int + */ + public void setImpulsMatrixTDMA(int phase) { + double sign = (phase == 0) ? 1.0 : -1.0; + double SU = 0.0; + double SP = 0.0; + double Fw = 0.0; + + double Fe = 0.0; + pipe.getNode(0).initFlowCalc(); + pipe.getNode(0).init(); + pipe.getNode(0).setVelocityIn(phase, pipe.getNode(0).getVelocity(phase)); + + a[0] = 0; + b[0] = 1.0; + c[0] = 0; + + r[0] = pipe.getNode(0).getVelocityIn(phase).doubleValue(); + + a[1] = 0; + b[1] = 1.0; + c[1] = 0; + + r[1] = pipe.getNode(0).getVelocityIn(phase).doubleValue(); + + for (int i = 2; i < numberOfNodes - 1; i++) { + double Ae = pipe.getNode(i).getArea(phase); + double Aw = pipe.getNode(i - 1).getArea(phase); + double Amean = pipe.getNode(i - 1).getArea(phase); + double meanFrik = pipe.getNode(i - 1).getWallFrictionFactor(phase); + double meanDensity = pipe.getNode(i - 1).getBulkSystem().getPhases()[phase] + .getPhysicalProperties().getDensity(); + double oldMeanDensity = oldDensity[phase][i]; + double meanVelocity = pipe.getNode(i - 1).getVelocity(phase); + double vertposchange = pipe.getNode(i).getVerticalPositionOfNode() + - pipe.getNode(i - 1).getVerticalPositionOfNode(); + double nodeLength = pipe.getNode(i - 1).getGeometry().getNodeLength(); + double interfaceFricition = pipe.getNode(i - 1).getInterPhaseFrictionFactor(); + // System.out.println(" dif: " + + // (-pipe.getNode(i-1).getWallContactLength(phase) + // * nodeLength* meanDensity * + // meanFrik*Math.abs(meanVelocity)*meanVelocity/8.0 + // - pipe.getNode(i-1).getInterphaseContactLength(0)*nodeLength* meanDensity + // * + // interfaceFricition*Math.abs(pipe.getNode(i).getVelocity(0) - + // pipe.getNode(i).getVelocity(1))*(pipe.getNode(i).getVelocity(0) - + // pipe.getNode(i).getVelocity(1))/8.0*sign)); + SU = -Amean + * (pipe.getNode(i).getBulkSystem().getPressure() + - pipe.getNode(i - 1).getBulkSystem().getPressure()) + * 1e5 + + Amean * gravity * meanDensity * vertposchange + + pipe.getNode(i - 1).getWallContactLength(phase) * nodeLength * meanDensity * meanFrik + * Math.abs(meanVelocity) * meanVelocity / 8.0 + - pipe.getNode(i - 1).getInterphaseContactLength(0) * nodeLength * meanDensity + * interfaceFricition + * Math.abs(pipe.getNode(i).getVelocity(0) - pipe.getNode(i).getVelocity(1)) + * (pipe.getNode(i).getVelocity(0) - pipe.getNode(i).getVelocity(1)) / 8.0 * sign; + // System.out.println("su " + SU); + SP = -pipe.getNode(i - 1).getWallContactLength(phase) * nodeLength * meanDensity * meanFrik + * meanVelocity / 4.0; + Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getDensity() * pipe.getNode(i - 1).getVelocity(phase); + Fe = Ae + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * pipe.getNode(i).getVelocity(phase); + + if (dynamic) { + oldImpuls[phase][i] = 1.0 / timeStep * oldMeanDensity * nodeLength * Amean; + } else { + oldImpuls[phase][i] = 0.0; + } + + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); // - Fe/2.0; + b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldImpuls[phase][i]; + r[i] = SU + oldImpuls[phase][i] * oldVelocity[phase][i]; + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; } - /** - *

- * setComponentConservationMatrix. - *

- * - * @param phase a int - * @param componentNumber a int - */ - public void setComponentConservationMatrix(int phase, int componentNumber) { - double sign = (phase == 0) ? -1.0 : 1.0; - double SU = 0; - a[0] = 0; - b[0] = 1.0; - c[0] = 0; - SU = pipe.getNode(0).getBulkSystem().getPhases()[phase].getComponents()[componentNumber] - .getx() - * pipe.getNode(0).getBulkSystem().getPhases()[phase] - .getComponents()[componentNumber].getMolarMass() - / pipe.getNode(0).getBulkSystem().getPhases()[phase].getMolarMass(); - r[0] = SU; - - for (int i = 1; i < numberOfNodes - 1; i++) { - double Ae = pipe.getNode(i).getArea(phase); - double Aw = pipe.getNode(i - 1).getArea(phase); - - double Fe = pipe.getNode(i).getVelocityOut(phase).doubleValue() - * pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity() * Ae; - double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() - * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getDensity() * Aw; - // System.out.println("vel: " + - // pipe.getNode(i).getVelocityOut(phase).doubleValue() + " fe " + Fe); - if (dynamic) { - oldComp[phase][i] = 1.0 / timeStep * pipe.getNode(i).getArea(phase) - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity(); - } else { - oldComp[phase][i] = 0.0; - } + int i = numberOfNodes - 1; + double Ae = pipe.getNode(i - 1).getArea(phase); + double Aw = pipe.getNode(i - 1).getArea(phase); + double Amean = pipe.getNode(i - 1).getArea(phase); + // double meanDiameter = pipe.getNode(i - 1).getGeometry().getDiameter(); + double meanFrik = pipe.getNode(i - 1).getWallFrictionFactor(phase); + double meanDensity = + pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity(); + double oldMeanDensity = oldDensity[phase][i]; + double meanVelocity = pipe.getNode(i - 1).getVelocity(phase); + double vertposchange = pipe.getNode(i).getVerticalPositionOfNode() + - pipe.getNode(i - 1).getVerticalPositionOfNode(); + double nodeLength = pipe.getNode(i - 1).getGeometry().getNodeLength(); + double interfaceFricition = pipe.getNode(i - 1).getInterPhaseFrictionFactor(); + + SU = -Amean + * (pipe.getNode(i).getBulkSystem().getPressure() + - pipe.getNode(i - 1).getBulkSystem().getPressure()) + * 1e5 + - Amean * gravity * meanDensity * vertposchange + + pipe.getNode(i - 1).getWallContactLength(phase) * nodeLength * meanDensity * meanFrik + * Math.abs(meanVelocity) * meanVelocity / 8.0 + - pipe.getNode(i - 1).getInterphaseContactLength(0) * nodeLength * meanDensity + * interfaceFricition + * Math.abs(pipe.getNode(i).getVelocity(0) - pipe.getNode(i).getVelocity(1)) + * (pipe.getNode(i).getVelocity(0) - pipe.getNode(i).getVelocity(1)) / 8.0 * sign; + SP = -pipe.getNode(i - 1).getWallContactLength(phase) * nodeLength * meanDensity * meanFrik + * meanVelocity / 4.0; + Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getDensity() * pipe.getNode(i).getVelocityIn(phase).doubleValue(); + Fe = Ae + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * pipe.getNode(i).getVelocity(phase); + + if (dynamic) { + oldImpuls[phase][i] = 1.0 / timeStep * oldMeanDensity * nodeLength * Amean; + } else { + oldImpuls[phase][i] = 0.0; + } - SU = +sign * pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getComponents()[componentNumber].getMolarMass() - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getInterphaseContactLength(phase) - * (pipe.getNode(i).getGeometry().getNodeLength() - / pipe.getNode(i).getVelocity(phase)); - // double SP = 0;// - // -pipe.getNode(i).getGeometry().getArea()*4.0*12.0/(pipe.getNode(i).getGeometry().getDiameter())*pipe.getNode(i).getGeometry().getNodeLength(); - - a[i] = Math.max(Fw, 0); - c[i] = Math.max(-Fe, 0); - b[i] = a[i] + c[i] + (Fe - Fw) + oldComp[phase][i]; - r[i] = SU + oldComp[phase][i] * oldComposition[phase][componentNumber][i]; - - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; - } + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + // if(dynamic){c[i] = - Fe/2.0; a[i] = Fw/2.0; } + b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldImpuls[phase][i]; + r[i] = SU + oldImpuls[phase][i] * oldVelocity[phase][i]; + + // setter ligningen paa rett form + a[numberOfNodes - 1] = -a[numberOfNodes - 1]; + c[numberOfNodes - 1] = -c[numberOfNodes - 1]; + } + + /** + *

+ * setEnergyMatrixTDMA. + *

+ * + * @param phase a int + */ + public void setEnergyMatrixTDMA(int phase) { + double sign = (phase == 0) ? 1.0 : -1.0; + + a[0] = 0; + b[0] = 1.0; + c[0] = 0; + double SU = pipe.getNode(0).getBulkSystem().getPhases()[phase].getEnthalpy() + / pipe.getNode(0).getBulkSystem().getPhases()[phase].getNumberOfMolesInPhase() + / pipe.getNode(0).getBulkSystem().getPhases()[phase].getMolarMass(); + r[0] = SU; + + for (int i = 1; i < numberOfNodes - 1; i++) { + double fe = pipe.getNode(i + 1).getGeometry().getNodeLength() + / (pipe.getNode(i).getGeometry().getNodeLength() + + pipe.getNode(i + 1).getGeometry().getNodeLength()); + double fw = pipe.getNode(i - 1).getGeometry().getNodeLength() + / (pipe.getNode(i).getGeometry().getNodeLength() + + pipe.getNode(i - 1).getGeometry().getNodeLength()); + double Ae = pipe.getNode(i).getArea(phase); + double Aw = pipe.getNode(i - 1).getArea(phase); + double vertposchange = (1 - fe) + * (pipe.getNode(i + 1).getVerticalPositionOfNode() + - pipe.getNode(i).getVerticalPositionOfNode()) + + (1 - fw) * (pipe.getNode(i).getVerticalPositionOfNode() + - pipe.getNode(i - 1).getVerticalPositionOfNode()); + + SU = -pipe.getNode(i).getArea(phase) * gravity + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity() + * pipe.getNode(i).getVelocity(phase) * vertposchange + + pipe.getNode(i).getArea(phase) * 4.0 * 0.02 + * (278.0 - pipe.getNode(i).getBulkSystem().getPhases()[phase].getTemperature()) + / (pipe.getNode(i).getGeometry().getDiameter()) + * pipe.getNode(i).getGeometry().getNodeLength() + + sign * pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(phase) + * pipe.getNode(i).getGeometry().getNodeLength() + * pipe.getNode(i).getInterphaseContactLength(phase) + * (pipe.getNode(i).getGeometry().getNodeLength() + / pipe.getNode(i).getVelocity(phase)); + double SP = 0; + + double Fw = + Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getDensity() * pipe.getNode(i).getVelocityIn(phase).doubleValue(); + double Fe = Ae + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * pipe.getNode(i).getVelocityOut(phase).doubleValue(); + + if (dynamic) { + oldEnergy[phase][i] = 1.0 / timeStep * oldDensity[phase][i] + * pipe.getNode(i).getGeometry().getNodeLength() * pipe.getNode(i).getArea(phase); + } else { + oldEnergy[phase][i] = 0.0; + } + + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldEnergy[phase][i]; + r[i] = SU + oldEnergy[phase][i] * oldInternalEnergy[phase][i]; + + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; + } - int i = numberOfNodes - 1; - // double fw = - // pipe.getNode(i-1).getGeometry().getNodeLength()/(pipe.getNode(i).getGeometry().getNodeLength()+pipe.getNode(i-1).getGeometry().getNodeLength()); - // double Ae = pipe.getNode(i).getArea(phase); - // double Aw = pipe.getNode(i - 1).getArea(phase); - - // double Fe = pipe.getNode(i).getVelocity(phase) * - // pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity() * Ae; - // double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() * pipe.getNode(i - - // 1).getBulkSystem().getPhases()[phase].getDensity() * Aw; - - SU = +sign * pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) - * pipe.getNode(i).getBulkSystem().getPhases()[phase] - .getComponents()[componentNumber].getMolarMass() - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getInterphaseContactLength(phase) - * (pipe.getNode(i).getGeometry().getNodeLength() - / pipe.getNode(i).getVelocity(phase)); - // double SP = 0;// - // -pipe.getNode(i).getGeometry().getArea()*4.0*12.0/(pipe.getNode(i).getGeometry().getDiameter())*pipe.getNode(i).getGeometry().getNodeLength(); - - if (dynamic) { - oldComp[phase][i] = 1.0 / timeStep * pipe.getNode(i).getArea(phase) - * pipe.getNode(i).getGeometry().getNodeLength() - * pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity(); - } else { - oldComp[phase][i] = 0.0; - } + int i = numberOfNodes - 1; + + double fw = pipe.getNode(i - 1).getGeometry().getNodeLength() + / (pipe.getNode(i).getGeometry().getNodeLength() + + pipe.getNode(i - 1).getGeometry().getNodeLength()); + double Ae = pipe.getNode(i).getArea(phase); + // 1.0/((1.0-fe)/pipe.getNode(i).getGeometry().getArea() + + // fe/pipe.getNode(i+1).getGeometry().getArea()); + double Aw = pipe.getNode(i - 1).getArea(phase); + // 1.0/((1.0-fw)/pipe.getNode(i).getGeometry().getArea() + + // fw/pipe.getNode(i-1).getGeometry().getArea()); + double vertposchange = (1 - fw) * (pipe.getNode(i).getVerticalPositionOfNode() + - pipe.getNode(i - 1).getVerticalPositionOfNode()); + + SU = -pipe.getNode(i).getArea(phase) * gravity + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity() + * pipe.getNode(i).getVelocity(phase) * vertposchange + + pipe.getNode(i).getWallContactLength(phase) + / pipe.getNode(i).getGeometry().getCircumference() * pipe.getNode(i).getArea(phase) + * 4.0 * 0.02 + * (278.0 - pipe.getNode(i).getBulkSystem().getPhases()[phase].getTemperature()) + / (pipe.getNode(i).getGeometry().getDiameter()) + * pipe.getNode(i).getGeometry().getNodeLength() + + sign * pipe.getNode(i).getFluidBoundary().getInterphaseHeatFlux(phase) + * pipe.getNode(i).getGeometry().getNodeLength() + * pipe.getNode(i).getInterphaseContactLength(phase) + * (pipe.getNode(i).getGeometry().getNodeLength() / pipe.getNode(i).getVelocity(phase)); + double SP = 0; + // -pipe.getNode(i).getGeometry().getArea() * 4.0 * 12.0 / + // (pipe.getNode(i).getGeometry().getDiameter())*pipe.getNode(i).getGeometry().getNodeLength(); + + double Fw = Aw * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getDensity() * pipe.getNode(i).getVelocityIn(phase).doubleValue(); + double Fe = + Ae * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * pipe.getNode(i).getVelocity(phase); + + if (dynamic) { + oldEnergy[phase][i] = 1.0 / timeStep * oldDensity[phase][i] + * pipe.getNode(i).getGeometry().getNodeLength() * pipe.getNode(i).getArea(phase); + } else { + oldEnergy[phase][i] = 0.0; + } - a[i] = 1.0;// Math.max(Fw,0); - c[i] = 0.0;// Math.max(-Fe,0); - b[i] = 1.0;// a[i] + c[i] + (Fe - Fw) + oldComp[phase][i]; - r[i] = 0.0;// SU + oldComp[phase][i]*oldComposition[phase][componentNumber][i]; - // setter ligningen paa rett form - a[i] = -a[i]; - c[i] = -c[i]; + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) - SP + oldEnergy[phase][i]; + r[i] = SU + oldEnergy[phase][i] * oldInternalEnergy[phase][i]; + a[i] = -a[i]; + c[i] = -c[i]; + } + + /** + *

+ * setComponentConservationMatrix2. + *

+ * + * @param phase a int + * @param componentNumber a int + */ + public void setComponentConservationMatrix2(int phase, int componentNumber) { + double SU = 0; + double sign = (phase == 0) ? 1.0 : 1.0; + a[0] = 0; + b[0] = 1.0; + c[0] = 0; + SU = pipe.getNode(0).getBulkSystem().getPhases()[phase].getComponents()[componentNumber].getx(); + // System.out.println("phase x0: " + // +pipe.getNode(0).getBulkSystem().getPhases()[0].getComponents()[componentNumber].getx()); + // System.out.println("phase x1: " + // +pipe.getNode(0).getBulkSystem().getPhases()[1].getComponents()[componentNumber].getx()); + r[0] = SU; + + for (int i = 1; i < numberOfNodes - 1; i++) { + double fe = pipe.getNode(i + 1).getGeometry().getNodeLength() + / (pipe.getNode(i).getGeometry().getNodeLength() + + pipe.getNode(i + 1).getGeometry().getNodeLength()); + double fw = pipe.getNode(i - 1).getGeometry().getNodeLength() + / (pipe.getNode(i).getGeometry().getNodeLength() + + pipe.getNode(i - 1).getGeometry().getNodeLength()); + double Ae = 1.0 + / ((1.0 - fe) / pipe.getNode(i).getArea(phase) + fe / pipe.getNode(i + 1).getArea(phase)); + double Aw = 1.0 + / ((1.0 - fw) / pipe.getNode(i).getArea(phase) + fw / pipe.getNode(i - 1).getArea(phase)); + + double Fe = pipe.getNode(i).getVelocityOut(phase).doubleValue() + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getPhysicalProperties().getDensity() + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getComponents()[componentNumber] + .getMolarMass() + / pipe.getNode(i).getBulkSystem().getPhases()[phase].getMolarMass() * Ae; + double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() + * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getDensity() + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getComponents()[componentNumber] + .getMolarMass() + / pipe.getNode(i).getBulkSystem().getPhases()[phase].getMolarMass() * Aw; + + // System.out.println("vel: " + + // pipe.getNode(i).getVelocityOut(phase).doubleValue() + " fe " + Fe); + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); // - Fe/2.0; + b[i] = a[i] + c[i] + (Fe - Fw) + - sign * pipe.getNode(i).getArea(phase) + * pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) + / pipe.getNode(i).getVelocity() * pipe.getNode(i).getGeometry().getNodeLength(); + r[i] = 0; + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; } - /** - *

- * initFinalResults. - *

- * - * @param phase a int - */ - public void initFinalResults(int phase) { - for (int i = 0; i < numberOfNodes; i++) { - oldVelocity[phase][i] = pipe.getNode(i).getVelocityIn().doubleValue(); - oldDensity[phase][i] = pipe.getNode(i).getBulkSystem().getPhases()[0] - .getPhysicalProperties().getDensity(); - oldInternalEnergy[phase][i] = - pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() - / pipe.getNode(i).getBulkSystem().getPhases()[0] - .getNumberOfMolesInPhase() - / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); - - for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); j++) { - oldComposition[phase][j][i] = xNew[phase][j][i]; // pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getx() - // * - // pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getMolarMass()/pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); - } - } + a[numberOfNodes - 1] = -1.0; // -1.0; + b[numberOfNodes - 1] = 1.0; + c[numberOfNodes - 1] = 0; + SU = pipe.getNode(numberOfNodes - 2).getBulkSystem().getPhases()[phase].getPhysicalProperties() + .getDensity() + * pipe.getNode(numberOfNodes - 2).getVelocityIn(phase).doubleValue() + * pipe.getNode(numberOfNodes - 2).getBulkSystem().getPhases()[phase] + .getComponents()[componentNumber].getx() + / (pipe.getNode(numberOfNodes - 1).getBulkSystem().getPhases()[phase] + .getPhysicalProperties().getDensity() + * pipe.getNode(numberOfNodes - 1).getVelocityIn(phase).doubleValue()); + r[numberOfNodes - 1] = 0; // SU; + } + + /** + *

+ * setComponentConservationMatrix. + *

+ * + * @param phase a int + * @param componentNumber a int + */ + public void setComponentConservationMatrix(int phase, int componentNumber) { + double sign = (phase == 0) ? -1.0 : 1.0; + double SU = 0; + a[0] = 0; + b[0] = 1.0; + c[0] = 0; + SU = pipe.getNode(0).getBulkSystem().getPhases()[phase].getComponents()[componentNumber].getx() + * pipe.getNode(0).getBulkSystem().getPhases()[phase].getComponents()[componentNumber] + .getMolarMass() + / pipe.getNode(0).getBulkSystem().getPhases()[phase].getMolarMass(); + r[0] = SU; + + for (int i = 1; i < numberOfNodes - 1; i++) { + double Ae = pipe.getNode(i).getArea(phase); + double Aw = pipe.getNode(i - 1).getArea(phase); + + double Fe = pipe.getNode(i).getVelocityOut(phase).doubleValue() + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity() * Ae; + double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() + * pipe.getNode(i - 1).getBulkSystem().getPhases()[phase].getDensity() * Aw; + // System.out.println("vel: " + + // pipe.getNode(i).getVelocityOut(phase).doubleValue() + " fe " + Fe); + if (dynamic) { + oldComp[phase][i] = 1.0 / timeStep * pipe.getNode(i).getArea(phase) + * pipe.getNode(i).getGeometry().getNodeLength() + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity(); + } else { + oldComp[phase][i] = 0.0; + } + + SU = +sign * pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getComponents()[componentNumber] + .getMolarMass() + * pipe.getNode(i).getGeometry().getNodeLength() + * pipe.getNode(i).getInterphaseContactLength(phase) + * (pipe.getNode(i).getGeometry().getNodeLength() / pipe.getNode(i).getVelocity(phase)); + // double SP = 0; + // -pipe.getNode(i).getGeometry().getArea() * 4.0 * 12.0 / + // (pipe.getNode(i).getGeometry().getDiameter()) * + // pipe.getNode(i).getGeometry().getNodeLength(); + + a[i] = Math.max(Fw, 0); + c[i] = Math.max(-Fe, 0); + b[i] = a[i] + c[i] + (Fe - Fw) + oldComp[phase][i]; + r[i] = SU + oldComp[phase][i] * oldComposition[phase][componentNumber][i]; + + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; } - /** - *

- * calcFluxes. - *

- */ - public void calcFluxes() { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).calcFluxes(); - } + int i = numberOfNodes - 1; + // double fw = + // pipe.getNode(i-1).getGeometry().getNodeLength() / + // (pipe.getNode(i).getGeometry().getNodeLength() + + // pipe.getNode(i-1).getGeometry().getNodeLength()); + // double Ae = pipe.getNode(i).getArea(phase); + // double Aw = pipe.getNode(i - 1).getArea(phase); + + // double Fe = pipe.getNode(i).getVelocity(phase) * + // pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity() * Ae; + // double Fw = pipe.getNode(i).getVelocityIn(phase).doubleValue() * pipe.getNode(i - + // 1).getBulkSystem().getPhases()[phase].getDensity() * Aw; + + SU = +sign * pipe.getNode(i).getFluidBoundary().getInterphaseMolarFlux(componentNumber) + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getComponents()[componentNumber] + .getMolarMass() + * pipe.getNode(i).getGeometry().getNodeLength() + * pipe.getNode(i).getInterphaseContactLength(phase) + * (pipe.getNode(i).getGeometry().getNodeLength() / pipe.getNode(i).getVelocity(phase)); + // double SP = 0; + // -pipe.getNode(i).getGeometry().getArea() * 4.0*12.0 / + // (pipe.getNode(i).getGeometry().getDiameter())*pipe.getNode(i).getGeometry().getNodeLength(); + + if (dynamic) { + oldComp[phase][i] = 1.0 / timeStep * pipe.getNode(i).getArea(phase) + * pipe.getNode(i).getGeometry().getNodeLength() + * pipe.getNode(i).getBulkSystem().getPhases()[phase].getDensity(); + } else { + oldComp[phase][i] = 0.0; } - /** - *

- * initNodes. - *

- */ - public void initNodes() { - for (int i = 0; i < numberOfNodes; i++) { - pipe.getNode(i).init(); - } + a[i] = 1.0; // Math.max(Fw,0); + c[i] = 0.0; // Math.max(-Fe,0); + b[i] = 1.0; // a[i] + c[i] + (Fe - Fw) + oldComp[phase][i]; + r[i] = 0.0; // SU + oldComp[phase][i]*oldComposition[phase][componentNumber][i]; + // setter ligningen paa rett form + a[i] = -a[i]; + c[i] = -c[i]; + } + + /** + *

+ * initFinalResults. + *

+ * + * @param phase a int + */ + public void initFinalResults(int phase) { + for (int i = 0; i < numberOfNodes; i++) { + oldVelocity[phase][i] = pipe.getNode(i).getVelocityIn().doubleValue(); + oldDensity[phase][i] = + pipe.getNode(i).getBulkSystem().getPhases()[0].getPhysicalProperties().getDensity(); + oldInternalEnergy[phase][i] = pipe.getNode(i).getBulkSystem().getPhases()[0].getEnthalpy() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getNumberOfMolesInPhase() + / pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); + + for (int j = 0; j < pipe.getNode(i).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); j++) { + oldComposition[phase][j][i] = xNew[phase][j][i]; + // pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getx() * + // pipe.getNode(i).getBulkSystem().getPhases()[0].getComponents()[j].getMolarMass() / + // pipe.getNode(i).getBulkSystem().getPhases()[0].getMolarMass(); + } + } + } + + /** + *

+ * calcFluxes. + *

+ */ + public void calcFluxes() { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).calcFluxes(); + } + } + + /** + *

+ * initNodes. + *

+ */ + public void initNodes() { + for (int i = 0; i < numberOfNodes; i++) { + pipe.getNode(i).init(); } + } - /** {@inheritDoc} */ - @Override - public void solveTDMA() { - double d[]; - int iter = 0, iterTop = 0; - double maxDiff = 1e10; - // double maxDiffOld = 1e10; - double diff = 0; - System.out.println("starting...:"); - initProfiles(); - dn = new double[numberOfNodes][pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()]; - xNew = new double[2][pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()][numberOfNodes]; - initMatrix(); + /** {@inheritDoc} */ + @Override + public void solveTDMA() { + double[] d; + int iter = 0; + int iterTop = 0; + double maxDiff = 1e10; + // double maxDiffOld = 1e10; + double diff = 0; + System.out.println("starting...:"); + initProfiles(); + dn = new double[numberOfNodes][pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents()]; + xNew = new double[2][pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents()][numberOfNodes]; + initMatrix(); + + do { + // maxDiffOld = maxDiff; + maxDiff = 0; + iterTop++; + + iter = 0; + if (this.solverType >= 5) { + for (int phase = 0; phase < 2; phase++) { + do { + iter++; + setImpulsMatrixTDMA(phase); + Matrix solOld = solMatrix[phase].copy(); + d = TDMAsolve.solve(a, b, c, r); + solMatrix[phase] = new Matrix(d, 1).transpose(); + solMatrix[phase].print(10, 10); + diffMatrix = solMatrix[phase].minus(solOld); + // System.out.println("diff impuls: "+ + // diffMatrix.norm2()/solMatrix[phase].norm2()); + diff = Math.abs(diffMatrix.norm1() / solMatrix[phase].norm1()); + if (diff > maxDiff) { + maxDiff = diff; + } + initVelocity(phase); + } while (diff > 1e-10 && iter < 100); + } + } + + iter = 0; + if (this.solverType >= 5) { + for (int phase = 1; phase < 2; phase++) { + do { + iter++; + setPhaseFractionMatrix(phase); + Matrix solOld = solPhaseConsMatrix[phase].copy(); + d = TDMAsolve.solve(a, b, c, r); + solPhaseConsMatrix[phase] = new Matrix(d, 1).transpose(); + // solPhaseConsMatrix[phase].print(10,10); + diffMatrix = solPhaseConsMatrix[phase].minus(solOld); + // System.out.println("diff phase frac: "+ + // diffMatrix.norm2()/solPhaseConsMatrix[phase].norm2()); + diff = Math.abs(diffMatrix.norm1() / solPhaseConsMatrix[phase].norm1()); + if (diff > maxDiff) { + maxDiff = diff; + } + initPhaseFraction(phase); + } while (diff > 1e-15 && iter < 100); + } + int phase = 0; do { - // maxDiffOld = maxDiff; - maxDiff = 0; - iterTop++; - - iter = 0; - if (this.solverType >= 5) { - for (int phase = 0; phase < 2; phase++) { - do { - iter++; - setImpulsMatrixTDMA(phase); - Matrix solOld = solMatrix[phase].copy(); - d = TDMAsolve.solve(a, b, c, r); - solMatrix[phase] = new Matrix(d, 1).transpose(); - solMatrix[phase].print(10, 10); - diffMatrix = solMatrix[phase].minus(solOld); - // System.out.println("diff impuls: "+ - // diffMatrix.norm2()/solMatrix[phase].norm2()); - diff = Math.abs(diffMatrix.norm1() / solMatrix[phase].norm1()); - if (diff > maxDiff) { - maxDiff = diff; - } - initVelocity(phase); - } while (diff > 1e-10 && iter < 100); - } + iter++; + setMassConservationMatrix(phase); + Matrix solOld = solPhaseConsMatrix[phase].copy(); + d = TDMAsolve.solve(a, b, c, r); + solPhaseConsMatrix[phase] = new Matrix(d, 1).transpose(); + // solPhaseConsMatrix[phase].print(10,10); + diffMatrix = solPhaseConsMatrix[phase].minus(solOld); + // System.out.println("diff mass: "+ + // diffMatrix.norm2()/solPhaseConsMatrix[phase].norm2()); + diff = Math.abs(diffMatrix.norm1() / solPhaseConsMatrix[phase].norm1()); + if (diff > maxDiff) { + maxDiff = diff; + } + initPressure(phase); + } while (diff > 1e-15 && iter < 100); + } + + if (this.solverType >= 5) { + for (int phase = 0; phase < 2; phase++) { + iter = 0; + do { + iter++; + Matrix sol3Old = sol3Matrix[phase].copy(); + setEnergyMatrixTDMA(phase); + d = TDMAsolve.solve(a, b, c, r); + sol3Matrix[phase] = new Matrix(d, 1).transpose(); + diffMatrix = sol3Matrix[phase].minus(sol3Old); + // System.out.println("diff energy: " + + // diffMatrix.norm2()/sol3Matrix[phase].norm2()); + // diffMatrix.print(10,10); + diff = Math.abs(diffMatrix.norm1() / sol3Matrix[phase].norm1()); + if (diff > maxDiff) { + maxDiff = diff; } + initTemperature(phase); + } while (diff > 1e-15 && iter < 100); + } + } + if (this.solverType >= 5) { + double compDiff = 0.0; + int compIter = 0; + do { + calcFluxes(); + compIter++; + for (int phase = 0; phase < 2; phase++) { iter = 0; - if (this.solverType >= 5) { - for (int phase = 1; phase < 2; phase++) { - do { - iter++; - setPhaseFractionMatrix(phase); - Matrix solOld = solPhaseConsMatrix[phase].copy(); - d = TDMAsolve.solve(a, b, c, r); - solPhaseConsMatrix[phase] = new Matrix(d, 1).transpose(); - // solPhaseConsMatrix[phase].print(10,10); - diffMatrix = solPhaseConsMatrix[phase].minus(solOld); - // System.out.println("diff phase frac: "+ - // diffMatrix.norm2()/solPhaseConsMatrix[phase].norm2()); - diff = Math.abs(diffMatrix.norm1() / solPhaseConsMatrix[phase].norm1()); - if (diff > maxDiff) { - maxDiff = diff; - } - initPhaseFraction(phase); - } while (diff > 1e-15 && iter < 100); + for (int p = 0; p < pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents() - 1; p++) { + do { + iter++; + setComponentConservationMatrix(phase, p); + Matrix solOld = solMolFracMatrix[phase][p].copy(); + xNew[phase][p] = TDMAsolve.solve(a, b, c, r); + solMolFracMatrix[phase][p] = new Matrix(xNew[phase][p], 1).transpose(); + diffMatrix = solMolFracMatrix[phase][p].minus(solOld); + diff = Math.abs(diffMatrix.norm2() / solMolFracMatrix[phase][p].norm2()); + if (diff > maxDiff) { + maxDiff = diff; } - - int phase = 0; - do { - iter++; - setMassConservationMatrix(phase); - Matrix solOld = solPhaseConsMatrix[phase].copy(); - d = TDMAsolve.solve(a, b, c, r); - solPhaseConsMatrix[phase] = new Matrix(d, 1).transpose(); - // solPhaseConsMatrix[phase].print(10,10); - diffMatrix = solPhaseConsMatrix[phase].minus(solOld); - // System.out.println("diff mass: "+ - // diffMatrix.norm2()/solPhaseConsMatrix[phase].norm2()); - diff = Math.abs(diffMatrix.norm1() / solPhaseConsMatrix[phase].norm1()); - if (diff > maxDiff) { - maxDiff = diff; - } - initPressure(phase); - } while (diff > 1e-15 && iter < 100); - } - - if (this.solverType >= 5) { - for (int phase = 0; phase < 2; phase++) { - iter = 0; - do { - iter++; - Matrix sol3Old = sol3Matrix[phase].copy(); - setEnergyMatrixTDMA(phase); - d = TDMAsolve.solve(a, b, c, r); - sol3Matrix[phase] = new Matrix(d, 1).transpose(); - diffMatrix = sol3Matrix[phase].minus(sol3Old); - // System.out.println("diff energy: " + - // diffMatrix.norm2()/sol3Matrix[phase].norm2()); - // diffMatrix.print(10,10); - diff = Math.abs(diffMatrix.norm1() / sol3Matrix[phase].norm1()); - if (diff > maxDiff) { - maxDiff = diff; - } - initTemperature(phase); - } while (diff > 1e-15 && iter < 100); + if (diff > compDiff) { + compDiff = diff; } + System.out.println( + "diff molfrac: " + diffMatrix.norm2() / solMolFracMatrix[phase][p].norm2()); + // Matrix dmat = new Matrix(xNew[phase][p], 1); + // dmat.print(10,10); + initComposition(phase, p); + } while (diff > 1e-12 && iter < 10); } - - if (this.solverType >= 5) { - double compDiff = 0.0; - int compIter = 0; - do { - calcFluxes(); - compIter++; - for (int phase = 0; phase < 2; phase++) { - iter = 0; - for (int p = 0; p < pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents() - 1; p++) { - do { - iter++; - setComponentConservationMatrix(phase, p); - Matrix solOld = solMolFracMatrix[phase][p].copy(); - xNew[phase][p] = TDMAsolve.solve(a, b, c, r); - solMolFracMatrix[phase][p] = - new Matrix(xNew[phase][p], 1).transpose(); - diffMatrix = solMolFracMatrix[phase][p].minus(solOld); - diff = Math.abs( - diffMatrix.norm2() / solMolFracMatrix[phase][p].norm2()); - if (diff > maxDiff) { - maxDiff = diff; - } - if (diff > compDiff) { - compDiff = diff; - } - System.out.println("diff molfrac: " - + diffMatrix.norm2() / solMolFracMatrix[phase][p].norm2()); - // Matrix dmat = new Matrix(xNew[phase][p], 1); - // dmat.print(10,10); - initComposition(phase, p); - } while (diff > 1e-12 && iter < 10); - } - } - } while (compDiff > 1e-10 && compIter < 10); - initNodes(); - } - - // initVelocity(); - // this.setVelocities();*/ - System.out.println("iter: " + iterTop + " maxdiff " + maxDiff); - } while (Math.abs(maxDiff) > 1e-7 && iterTop < 1);// diffMatrix.norm2()/sol2Matrix.norm2())>0.1); - - for (int phase = 0; phase < 2; phase++) { - for (int p = 0; p < pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents() - 1; p++) { - Matrix dmat = new Matrix(xNew[phase][p], 1); - dmat.print(10, 10); - } - } + } + } while (compDiff > 1e-10 && compIter < 10); + initNodes(); + } + + // initVelocity(); + // this.setVelocities();*/ + System.out.println("iter: " + iterTop + " maxdiff " + maxDiff); + } while (Math.abs(maxDiff) > 1e-7 && iterTop < 1); // diffMatrix.norm2()/sol2Matrix.norm2())>0.1); + + for (int phase = 0; phase < 2; phase++) { + for (int p = 0; p < pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents() + - 1; p++) { + Matrix dmat = new Matrix(xNew[phase][p], 1); + dmat.print(10, 10); + } } + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/twoPhasePipeFlowSolver/TwoPhasePipeFlowSolver.java b/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/twoPhasePipeFlowSolver/TwoPhasePipeFlowSolver.java index c30f5ab11e..4a8c17a4a3 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/twoPhasePipeFlowSolver/TwoPhasePipeFlowSolver.java +++ b/src/main/java/neqsim/fluidMechanics/flowSolver/twoPhaseFlowSolver/twoPhasePipeFlowSolver/TwoPhasePipeFlowSolver.java @@ -12,80 +12,80 @@ * @version $Id: $Id */ public class TwoPhasePipeFlowSolver - extends neqsim.fluidMechanics.flowSolver.onePhaseFlowSolver.OnePhaseFlowSolver { - private static final long serialVersionUID = 1000; + extends neqsim.fluidMechanics.flowSolver.onePhaseFlowSolver.OnePhaseFlowSolver { + private static final long serialVersionUID = 1000; - protected double[] PbArray; // = new double[100]; - protected Matrix[] solMatrix; - protected Matrix[][] solMolFracMatrix; - protected Matrix[] solPhaseConsMatrix; - protected Matrix sol2Matrix; - protected Matrix[] sol3Matrix; - protected Matrix[] sol4Matrix; + protected double[] PbArray; // = new double[100]; + protected Matrix[] solMatrix; + protected Matrix[][] solMolFracMatrix; + protected Matrix[] solPhaseConsMatrix; + protected Matrix sol2Matrix; + protected Matrix[] sol3Matrix; + protected Matrix[] sol4Matrix; - protected double a[]; - protected double b[]; - protected double c[]; - protected double r[]; - protected double length; - protected FlowSystemInterface pipe; - protected int numberOfNodes; + protected double[] a; + protected double[] b; + protected double[] c; + protected double[] r; + protected double length; + protected FlowSystemInterface pipe; + protected int numberOfNodes; - /** - *

- * Constructor for TwoPhasePipeFlowSolver. - *

- */ - public TwoPhasePipeFlowSolver() {} + /** + *

+ * Constructor for TwoPhasePipeFlowSolver. + *

+ */ + public TwoPhasePipeFlowSolver() {} - /** - *

- * Constructor for TwoPhasePipeFlowSolver. - *

- * - * @param pipe a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object - * @param length a double - * @param nodes a int - */ - public TwoPhasePipeFlowSolver(FlowSystemInterface pipe, double length, int nodes) { - this.pipe = pipe; - this.length = length; - this.numberOfNodes = nodes; - PbArray = new double[nodes]; - solMatrix = new Matrix[2]; - sol3Matrix = new Matrix[2]; - solPhaseConsMatrix = new Matrix[2]; - solMolFracMatrix = new Matrix[2][pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents()]; - solMatrix[0] = new Matrix(PbArray, 1).transpose(); - solMatrix[1] = new Matrix(PbArray, 1).transpose(); - for (int phase = 0; phase < 2; phase++) { - for (int i = 0; i < pipe.getNode(0).getBulkSystem().getPhases()[0] - .getNumberOfComponents(); i++) { - solMolFracMatrix[phase][i] = new Matrix(PbArray, 1).transpose(); - } - } - sol3Matrix[0] = new Matrix(PbArray, 1).transpose(); - sol3Matrix[1] = new Matrix(PbArray, 1).transpose(); - solPhaseConsMatrix[0] = new Matrix(PbArray, 1).transpose(); - solPhaseConsMatrix[1] = new Matrix(PbArray, 1).transpose(); - sol2Matrix = new Matrix(PbArray, 1).transpose(); - a = new double[nodes]; - b = new double[nodes]; - c = new double[nodes]; - r = new double[nodes]; + /** + *

+ * Constructor for TwoPhasePipeFlowSolver. + *

+ * + * @param pipe a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object + * @param length a double + * @param nodes a int + */ + public TwoPhasePipeFlowSolver(FlowSystemInterface pipe, double length, int nodes) { + this.pipe = pipe; + this.length = length; + this.numberOfNodes = nodes; + PbArray = new double[nodes]; + solMatrix = new Matrix[2]; + sol3Matrix = new Matrix[2]; + solPhaseConsMatrix = new Matrix[2]; + solMolFracMatrix = + new Matrix[2][pipe.getNode(0).getBulkSystem().getPhases()[0].getNumberOfComponents()]; + solMatrix[0] = new Matrix(PbArray, 1).transpose(); + solMatrix[1] = new Matrix(PbArray, 1).transpose(); + for (int phase = 0; phase < 2; phase++) { + for (int i = 0; i < pipe.getNode(0).getBulkSystem().getPhases()[0] + .getNumberOfComponents(); i++) { + solMolFracMatrix[phase][i] = new Matrix(PbArray, 1).transpose(); + } } + sol3Matrix[0] = new Matrix(PbArray, 1).transpose(); + sol3Matrix[1] = new Matrix(PbArray, 1).transpose(); + solPhaseConsMatrix[0] = new Matrix(PbArray, 1).transpose(); + solPhaseConsMatrix[1] = new Matrix(PbArray, 1).transpose(); + sol2Matrix = new Matrix(PbArray, 1).transpose(); + a = new double[nodes]; + b = new double[nodes]; + c = new double[nodes]; + r = new double[nodes]; + } - /** {@inheritDoc} */ - @Override - public TwoPhasePipeFlowSolver clone() { - TwoPhasePipeFlowSolver clonedSystem = null; - try { - clonedSystem = (TwoPhasePipeFlowSolver) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedSystem; + /** {@inheritDoc} */ + @Override + public TwoPhasePipeFlowSolver clone() { + TwoPhasePipeFlowSolver clonedSystem = null; + try { + clonedSystem = (TwoPhasePipeFlowSolver) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSystem/FlowSystem.java b/src/main/java/neqsim/fluidMechanics/flowSystem/FlowSystem.java index ed296c6566..e3de8d23c3 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSystem/FlowSystem.java +++ b/src/main/java/neqsim/fluidMechanics/flowSystem/FlowSystem.java @@ -1,10 +1,10 @@ package neqsim.fluidMechanics.flowSystem; +import java.util.UUID; import neqsim.fluidMechanics.flowLeg.FlowLegInterface; import neqsim.fluidMechanics.flowNode.FlowNodeInterface; import neqsim.fluidMechanics.flowSolver.FlowSolverInterface; import neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface; -import neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.FileWriterInterface; import neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.FlowSystemVisualizationInterface; import neqsim.fluidMechanics.util.timeSeries.TimeSeries; import neqsim.thermo.system.SystemInterface; @@ -19,440 +19,442 @@ * @version $Id: $Id */ public abstract class FlowSystem implements FlowSystemInterface, java.io.Serializable { - private static final long serialVersionUID = 1000; - - protected FlowNodeInterface[] flowNode; - protected FlowLegInterface[] flowLeg; - protected FileWriterInterface[] fileWriter; - protected String initFlowPattern = "annular"; - protected FlowSystemVisualizationInterface display; - protected TimeSeries timeSeries = new TimeSeries(); - protected GeometryDefinitionInterface[] equipmentGeometry; - protected SystemInterface thermoSystem; - protected ThermodynamicOperations thermoOperations; - protected double inletTemperature = 0, inletPressure = 0, endPressure = 0, systemLength = 0; - protected int numberOfFlowLegs = 0, totalNumberOfNodes = 25; - int[] numberOfNodesInLeg; - double[] legHeights, legPositions, legOuterTemperatures, legOuterHeatTransferCoefficients, - legWallHeatTransferCoefficients; - protected FlowSolverInterface flowSolver; - double inletMolarLiquidFlowRate = 0, inletMolarGasFlowRate = 0; - boolean equilibriumHeatTransfer = true, equilibriumMassTransfer = false; - - /** - *

- * Constructor for FlowSystem. - *

- */ - public FlowSystem() {} - - /** - *

- * Constructor for FlowSystem. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public FlowSystem(SystemInterface system) { - System.out.println("Hei der"); - } - - /** {@inheritDoc} */ - @Override - public void init() {} - - /** {@inheritDoc} */ - @Override - public void createSystem() { - thermoOperations = new ThermodynamicOperations(thermoSystem); - this.flowLegInit(); - } - - /** {@inheritDoc} */ - @Override - public FlowSolverInterface getSolver() { - return flowSolver; - } - - /** {@inheritDoc} */ - @Override - public TimeSeries getTimeSeries() { - return timeSeries; - } - - /** - *

- * flowLegInit. - *

- */ - public void flowLegInit() { - // TODO: add checks that input arguments have correct size to avoid generic - // IndexOutOfBoundsException - for (int i = 0; i < numberOfFlowLegs; i++) { - this.flowLeg[i].setThermoSystem(thermoSystem); - this.flowLeg[i].setEquipmentGeometry(equipmentGeometry[i]); - this.flowLeg[i].setNumberOfNodes(numberOfNodesInLeg[i]); - this.flowLeg[i].setHeightCoordinates(legHeights[i], legHeights[i + 1]); - this.flowLeg[i].setOuterTemperatures(legOuterTemperatures[i], - legOuterTemperatures[i + 1]); - this.flowLeg[i].setLongitudionalCoordinates(legPositions[i], legPositions[i + 1]); - this.flowLeg[i].setOuterHeatTransferCoefficients(legOuterHeatTransferCoefficients[i], - legOuterHeatTransferCoefficients[i + 1]); - this.flowLeg[i].setWallHeatTransferCoefficients(legWallHeatTransferCoefficients[i], - legWallHeatTransferCoefficients[i + 1]); - this.flowLeg[i].createFlowNodes(flowNode[0]); - } - - totalNumberOfNodes = this.calcTotalNumberOfNodes(); - // System.out.println("total number of nodes : " + totalNumberOfNodes); - } - - /** {@inheritDoc} */ - @Override - public void setNodes() { - flowNode[0].setDistanceToCenterOfNode(0.0); - flowNode[0].setVerticalPositionOfNode(legHeights[0]); - flowNode[0].setLengthOfNode(systemLength / 1000.0); - flowNode[0].init(); - - int k = 1; - for (int i = 0; i < numberOfFlowLegs; i++) { - for (int j = 0; j < getNumberOfNodesInLeg(i); j++) { - this.flowNode[k++] = flowLeg[i].getNode(j); - } - } - flowNode[totalNumberOfNodes - 1] = flowNode[totalNumberOfNodes - 2].getNextNode(); - flowNode[totalNumberOfNodes - 1].setLengthOfNode(systemLength / 1000.0); - flowNode[totalNumberOfNodes - 1].setDistanceToCenterOfNode(legPositions[numberOfFlowLegs] - + flowNode[totalNumberOfNodes - 1].getLengthOfNode() / 2.0); - flowNode[totalNumberOfNodes - 1].setVerticalPositionOfNode(legHeights[numberOfFlowLegs]); - if (endPressure != 0) { - flowNode[totalNumberOfNodes - 1].getBulkSystem().setPressure(endPressure); - } - flowNode[totalNumberOfNodes - 1].init(); - } - - /** {@inheritDoc} */ - @Override - public void setInletThermoSystem(SystemInterface thermoSystem) { - this.thermoSystem = thermoSystem; - this.inletPressure = thermoSystem.getPressure(); - this.inletTemperature = thermoSystem.getTemperature(); - } - - /** {@inheritDoc} */ - @Override - public double getSystemLength() { - return systemLength; - } - - /** - *

- * calcTotalNumberOfNodes. - *

- * - * @return a int - */ - public int calcTotalNumberOfNodes() { - int number = 0; - for (int i = 0; i < this.numberOfFlowLegs; i++) { - number += flowLeg[i].getNumberOfNodes(); - } - this.totalNumberOfNodes = number + 2; - return this.totalNumberOfNodes; - } - - /** {@inheritDoc} */ - @Override - public int getTotalNumberOfNodes() { - return this.totalNumberOfNodes; - } - - /** {@inheritDoc} */ - @Override - public double getInletTemperature() { - return this.inletTemperature; - } - - /** {@inheritDoc} */ - @Override - public void setEquipmentGeometry(GeometryDefinitionInterface[] equipmentGeometry) { - this.equipmentGeometry = equipmentGeometry; - } - - /** {@inheritDoc} */ - @Override - public void setEndPressure(double endPressure) { - this.endPressure = endPressure; - } - - /** {@inheritDoc} */ - @Override - public double getInletPressure() { - return this.inletPressure; - } - - /** {@inheritDoc} */ - @Override - public void setNumberOfLegs(int numberOfFlowLegs) { - this.numberOfFlowLegs = numberOfFlowLegs; - } - - /** {@inheritDoc} */ - @Override - public FlowNodeInterface getNode(int i) { - return this.flowNode[i]; - } - - /** {@inheritDoc} */ - @Override - public FlowNodeInterface[] getFlowNodes() { - return this.flowNode; - } - - /** {@inheritDoc} */ - @Override - public int getNumberOfLegs() { - return this.numberOfFlowLegs; - } - - /** {@inheritDoc} */ - @Override - public FlowSystemVisualizationInterface getDisplay() { - return display; - } - - /** {@inheritDoc} */ - @Override - public FileWriterInterface getFileWriter(int i) { - return fileWriter[i]; - } - - /** {@inheritDoc} */ - @Override - public void setNumberOfNodesInLeg(int numberOfNodesInLeg) { - this.numberOfNodesInLeg = new int[this.getNumberOfLegs()]; - for (int i = 0; i < this.getNumberOfLegs(); i++) { - this.numberOfNodesInLeg[i] = numberOfNodesInLeg; - } - totalNumberOfNodes = numberOfNodesInLeg * this.getNumberOfLegs() + 2; - } - - /** {@inheritDoc} */ - @Override - public int getNumberOfNodesInLeg(int i) { - return this.numberOfNodesInLeg[i]; - } - - /** {@inheritDoc} */ - @Override - public void setLegHeights(double[] legHeights) { - this.legHeights = legHeights; - } - - /** {@inheritDoc} */ - @Override - public void setLegPositions(double[] legPositions) { - this.legPositions = legPositions; - this.systemLength = legPositions[legPositions.length - 1]; - } - - /** {@inheritDoc} */ - @Override - public void setLegOuterTemperatures(double[] temps) { - this.legOuterTemperatures = temps; - } - - /** {@inheritDoc} */ - @Override - public void setLegOuterHeatTransferCoefficients(double[] coefs) { - this.legOuterHeatTransferCoefficients = coefs; - } - - /** {@inheritDoc} */ - @Override - public void setLegWallHeatTransferCoefficients(double[] coefs) { - this.legWallHeatTransferCoefficients = coefs; - } - - /** {@inheritDoc} */ - @Override - public double[] getLegHeights() { - return this.legHeights; - } - - /** {@inheritDoc} */ - @Override - public void print() { - for (int i = 0; i < getTotalNumberOfNodes() - 1; i++) { - System.out.println("node " + flowNode[i].getDistanceToCenterOfNode() + " pressure: " - + flowNode[i].getBulkSystem().getPhases()[0].getPressure() + " temperature: " - + flowNode[i].getBulkSystem().getPhases()[1].getTemperature() + " flow: " - + flowNode[i].getMassFlowRate(0) + " velocity: " + flowNode[i].getVelocity() - + " reynolds number " + flowNode[i].getReynoldsNumber() + " friction : " - + flowNode[i].getWallFrictionFactor() + " x1 : " - + flowNode[i].getBulkSystem().getPhases()[0].getComponents()[1].getx()); - } - } - - /** {@inheritDoc} */ - @Override - public void calcFluxes() {} - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - System.out.println("Hei der!"); - } - - /** - *

- * solveTransient. - *

- */ - public void solveTransient() {} - - /** {@inheritDoc} */ - @Override - public double getTotalMolarMassTransferRate(int component) { - double tot = 0.0; - for (int i = 0; i < getTotalNumberOfNodes() - 1; i++) { - tot += flowNode[i].getFluidBoundary().getInterphaseMolarFlux(component) - * flowNode[i].getInterphaseContactArea(); - } - return tot; - } - - /** {@inheritDoc} */ - @Override - public double getTotalMolarMassTransferRate(int component, int lastNode) { - double tot = 0.0; - for (int i = 0; i < lastNode; i++) { - tot += flowNode[i].getFluidBoundary().getInterphaseMolarFlux(component) - * flowNode[i].getInterphaseContactArea(); - } - return tot; - } - - /** {@inheritDoc} */ - @Override - public double getTotalPressureDrop() { - return flowNode[0].getBulkSystem().getPressure() - - flowNode[getTotalNumberOfNodes() - 1].getBulkSystem().getPressure(); - } - - /** {@inheritDoc} */ - @Override - public double getTotalPressureDrop(int lastNode) { - return flowNode[0].getBulkSystem().getPressure() - - flowNode[lastNode].getBulkSystem().getPressure(); - } - - /** {@inheritDoc} */ - @Override - public void setInitialFlowPattern(String flowPattern) { - this.initFlowPattern = flowPattern; - } - - /** {@inheritDoc} */ - @Override - public void setFlowPattern(String flowPattern) { - this.initFlowPattern = flowPattern; - for (int i = 0; i < this.getNumberOfLegs(); i++) { - flowLeg[i].setFlowPattern(flowPattern); - } - } - - /** - *

- * setEquilibriumMassTransferModel. - *

- * - * @param startNode a int - * @param endNode a int - */ - public void setEquilibriumMassTransferModel(int startNode, int endNode) { - for (int i = startNode; i < endNode; i++) { - if (flowNode[i].getBulkSystem().isChemicalSystem()) { - flowNode[i].setInterphaseModelType(0); - } else { - flowNode[i].setInterphaseModelType(0); - } - flowNode[i].getFluidBoundary().setMassTransferCalc(false); - } - } - - /** - *

- * setNonEquilibriumMassTransferModel. - *

- * - * @param startNode a int - * @param endNode a int - */ - public void setNonEquilibriumMassTransferModel(int startNode, int endNode) { - for (int i = startNode; i < endNode; i++) { - if (flowNode[i].getBulkSystem().isChemicalSystem()) { - flowNode[i].setInterphaseModelType(10); - } else { - flowNode[i].setInterphaseModelType(1); - } - flowNode[i].getFluidBoundary().setMassTransferCalc(true); - } - } - - /** - *

- * setNonEquilibriumHeatTransferModel. - *

- * - * @param startNode a int - * @param endNode a int - */ - public void setNonEquilibriumHeatTransferModel(int startNode, int endNode) { - for (int i = startNode; i < endNode; i++) { - flowNode[i].getFluidBoundary().setHeatTransferCalc(true); - } - } - - /** - *

- * setEquilibriumHeatTransferModel. - *

- * - * @param startNode a int - * @param endNode a int - */ - public void setEquilibriumHeatTransferModel(int startNode, int endNode) { - for (int i = startNode; i < endNode; i++) { - flowNode[i].getFluidBoundary().setHeatTransferCalc(false); - } - } - - /** {@inheritDoc} */ - @Override - public void setEquilibriumMassTransfer(boolean test) { - equilibriumMassTransfer = test; - if (equilibriumMassTransfer) { - setEquilibriumMassTransferModel(0, getTotalNumberOfNodes()); - } else { - setNonEquilibriumMassTransferModel(0, getTotalNumberOfNodes()); - } - } - - /** {@inheritDoc} */ - @Override - public void setEquilibriumHeatTransfer(boolean test) { - equilibriumHeatTransfer = test; - if (equilibriumHeatTransfer) { - setEquilibriumHeatTransferModel(0, getTotalNumberOfNodes()); - } else { - setNonEquilibriumHeatTransferModel(0, getTotalNumberOfNodes()); - } - } + private static final long serialVersionUID = 1000; + + /** + * Unique identifier of which solve/run call was last called successfully. + */ + protected UUID calcIdentifier; + + protected FlowNodeInterface[] flowNode; + protected FlowLegInterface[] flowLeg; + protected String initFlowPattern = "annular"; + protected FlowSystemVisualizationInterface display; + protected TimeSeries timeSeries = new TimeSeries(); + protected GeometryDefinitionInterface[] equipmentGeometry; + protected SystemInterface thermoSystem; + protected ThermodynamicOperations thermoOperations; + protected double inletTemperature = 0; + + protected double inletPressure = 0; + + protected double endPressure = 0; + + protected double systemLength = 0; + + protected int numberOfFlowLegs = 0; + + protected int totalNumberOfNodes = 25; + + int[] numberOfNodesInLeg; + double[] legHeights; + + double[] legPositions; + + double[] legOuterTemperatures; + + double[] legOuterHeatTransferCoefficients; + + double[] legWallHeatTransferCoefficients; + + protected FlowSolverInterface flowSolver; + double inletMolarLiquidFlowRate = 0; + + double inletMolarGasFlowRate = 0; + + boolean equilibriumHeatTransfer = true; + + boolean equilibriumMassTransfer = false; + + /** + *

+ * Constructor for FlowSystem. + *

+ */ + public FlowSystem() {} + + /** + *

+ * Constructor for FlowSystem. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public FlowSystem(SystemInterface system) { + this.setInletThermoSystem(system); + } + + /** {@inheritDoc} */ + @Override + public void init() {} + + /** {@inheritDoc} */ + @Override + public void createSystem() { + thermoOperations = new ThermodynamicOperations(thermoSystem); + this.flowLegInit(); + } + + /** {@inheritDoc} */ + @Override + public FlowSolverInterface getSolver() { + return flowSolver; + } + + /** {@inheritDoc} */ + @Override + public TimeSeries getTimeSeries() { + return timeSeries; + } + + /** + *

+ * flowLegInit. + *

+ */ + public void flowLegInit() { + // TODO: add checks that input arguments have correct size to avoid generic + // IndexOutOfBoundsException + for (int i = 0; i < numberOfFlowLegs; i++) { + this.flowLeg[i].setThermoSystem(thermoSystem); + this.flowLeg[i].setEquipmentGeometry(equipmentGeometry[i]); + this.flowLeg[i].setNumberOfNodes(numberOfNodesInLeg[i]); + this.flowLeg[i].setHeightCoordinates(legHeights[i], legHeights[i + 1]); + this.flowLeg[i].setOuterTemperatures(legOuterTemperatures[i], legOuterTemperatures[i + 1]); + this.flowLeg[i].setLongitudionalCoordinates(legPositions[i], legPositions[i + 1]); + this.flowLeg[i].setOuterHeatTransferCoefficients(legOuterHeatTransferCoefficients[i], + legOuterHeatTransferCoefficients[i + 1]); + this.flowLeg[i].setWallHeatTransferCoefficients(legWallHeatTransferCoefficients[i], + legWallHeatTransferCoefficients[i + 1]); + this.flowLeg[i].createFlowNodes(flowNode[0]); + } + + totalNumberOfNodes = this.calcTotalNumberOfNodes(); + // System.out.println("total number of nodes : " + totalNumberOfNodes); + } + + /** {@inheritDoc} */ + @Override + public void setNodes() { + flowNode[0].setDistanceToCenterOfNode(0.0); + flowNode[0].setVerticalPositionOfNode(legHeights[0]); + flowNode[0].setLengthOfNode(systemLength / 1000.0); + flowNode[0].init(); + + int k = 1; + for (int i = 0; i < numberOfFlowLegs; i++) { + for (int j = 0; j < getNumberOfNodesInLeg(i); j++) { + this.flowNode[k++] = flowLeg[i].getNode(j); + } + } + flowNode[totalNumberOfNodes - 1] = flowNode[totalNumberOfNodes - 2].getNextNode(); + flowNode[totalNumberOfNodes - 1].setLengthOfNode(systemLength / 1000.0); + flowNode[totalNumberOfNodes - 1].setDistanceToCenterOfNode( + legPositions[numberOfFlowLegs] + flowNode[totalNumberOfNodes - 1].getLengthOfNode() / 2.0); + flowNode[totalNumberOfNodes - 1].setVerticalPositionOfNode(legHeights[numberOfFlowLegs]); + if (endPressure != 0) { + flowNode[totalNumberOfNodes - 1].getBulkSystem().setPressure(endPressure); + } + flowNode[totalNumberOfNodes - 1].init(); + } + + /** {@inheritDoc} */ + @Override + public void setInletThermoSystem(SystemInterface thermoSystem) { + this.thermoSystem = thermoSystem; + this.inletPressure = thermoSystem.getPressure(); + this.inletTemperature = thermoSystem.getTemperature(); + } + + /** {@inheritDoc} */ + @Override + public double getSystemLength() { + return systemLength; + } + + /** + *

+ * calcTotalNumberOfNodes. + *

+ * + * @return a int + */ + public int calcTotalNumberOfNodes() { + int number = 0; + for (int i = 0; i < this.numberOfFlowLegs; i++) { + number += flowLeg[i].getNumberOfNodes(); + } + this.totalNumberOfNodes = number + 2; + return this.totalNumberOfNodes; + } + + /** {@inheritDoc} */ + @Override + public int getTotalNumberOfNodes() { + return this.totalNumberOfNodes; + } + + /** {@inheritDoc} */ + @Override + public double getInletTemperature() { + return this.inletTemperature; + } + + /** {@inheritDoc} */ + @Override + public void setEquipmentGeometry(GeometryDefinitionInterface[] equipmentGeometry) { + this.equipmentGeometry = equipmentGeometry; + } + + /** {@inheritDoc} */ + @Override + public void setEndPressure(double endPressure) { + this.endPressure = endPressure; + } + + /** {@inheritDoc} */ + @Override + public double getInletPressure() { + return this.inletPressure; + } + + /** {@inheritDoc} */ + @Override + public void setNumberOfLegs(int numberOfFlowLegs) { + this.numberOfFlowLegs = numberOfFlowLegs; + } + + /** {@inheritDoc} */ + @Override + public FlowNodeInterface getNode(int i) { + return this.flowNode[i]; + } + + /** {@inheritDoc} */ + @Override + public FlowNodeInterface[] getFlowNodes() { + return this.flowNode; + } + + /** {@inheritDoc} */ + @Override + public int getNumberOfLegs() { + return this.numberOfFlowLegs; + } + + /** {@inheritDoc} */ + @Override + public FlowSystemVisualizationInterface getDisplay() { + return display; + } + + /** {@inheritDoc} */ + @Override + public void setNumberOfNodesInLeg(int numberOfNodesInLeg) { + this.numberOfNodesInLeg = new int[this.getNumberOfLegs()]; + for (int i = 0; i < this.getNumberOfLegs(); i++) { + this.numberOfNodesInLeg[i] = numberOfNodesInLeg; + } + totalNumberOfNodes = numberOfNodesInLeg * this.getNumberOfLegs() + 2; + } + + /** {@inheritDoc} */ + @Override + public int getNumberOfNodesInLeg(int i) { + return this.numberOfNodesInLeg[i]; + } + + /** {@inheritDoc} */ + @Override + public void setLegHeights(double[] legHeights) { + this.legHeights = legHeights; + } + + /** {@inheritDoc} */ + @Override + public void setLegPositions(double[] legPositions) { + this.legPositions = legPositions; + this.systemLength = legPositions[legPositions.length - 1]; + } + + /** {@inheritDoc} */ + @Override + public void setLegOuterTemperatures(double[] temps) { + this.legOuterTemperatures = temps; + } + + /** {@inheritDoc} */ + @Override + public void setLegOuterHeatTransferCoefficients(double[] coefs) { + this.legOuterHeatTransferCoefficients = coefs; + } + + /** {@inheritDoc} */ + @Override + public void setLegWallHeatTransferCoefficients(double[] coefs) { + this.legWallHeatTransferCoefficients = coefs; + } + + /** {@inheritDoc} */ + @Override + public double[] getLegHeights() { + return this.legHeights; + } + + /** {@inheritDoc} */ + @Override + public void print() { + for (int i = 0; i < getTotalNumberOfNodes() - 1; i++) { + System.out.println("node " + flowNode[i].getDistanceToCenterOfNode() + " pressure: " + + flowNode[i].getBulkSystem().getPhases()[0].getPressure() + " temperature: " + + flowNode[i].getBulkSystem().getPhases()[1].getTemperature() + " flow: " + + flowNode[i].getMassFlowRate(0) + " velocity: " + flowNode[i].getVelocity() + + " reynolds number " + flowNode[i].getReynoldsNumber() + " friction : " + + flowNode[i].getWallFrictionFactor() + " x1 : " + + flowNode[i].getBulkSystem().getPhases()[0].getComponents()[1].getx()); + } + } + + /** {@inheritDoc} */ + @Override + public void calcFluxes() {} + + /** {@inheritDoc} */ + @Override + public double getTotalMolarMassTransferRate(int component) { + double tot = 0.0; + for (int i = 0; i < getTotalNumberOfNodes() - 1; i++) { + tot += flowNode[i].getFluidBoundary().getInterphaseMolarFlux(component) + * flowNode[i].getInterphaseContactArea(); + } + return tot; + } + + /** {@inheritDoc} */ + @Override + public double getTotalMolarMassTransferRate(int component, int lastNode) { + double tot = 0.0; + for (int i = 0; i < lastNode; i++) { + tot += flowNode[i].getFluidBoundary().getInterphaseMolarFlux(component) + * flowNode[i].getInterphaseContactArea(); + } + return tot; + } + + /** {@inheritDoc} */ + @Override + public double getTotalPressureDrop() { + return flowNode[0].getBulkSystem().getPressure() + - flowNode[getTotalNumberOfNodes() - 1].getBulkSystem().getPressure(); + } + + /** {@inheritDoc} */ + @Override + public double getTotalPressureDrop(int lastNode) { + return flowNode[0].getBulkSystem().getPressure() + - flowNode[lastNode].getBulkSystem().getPressure(); + } + + /** {@inheritDoc} */ + @Override + public void setInitialFlowPattern(String flowPattern) { + this.initFlowPattern = flowPattern; + } + + /** {@inheritDoc} */ + @Override + public void setFlowPattern(String flowPattern) { + this.initFlowPattern = flowPattern; + for (int i = 0; i < this.getNumberOfLegs(); i++) { + flowLeg[i].setFlowPattern(flowPattern); + } + } + + /** + *

+ * setEquilibriumMassTransferModel. + *

+ * + * @param startNode a int + * @param endNode a int + */ + public void setEquilibriumMassTransferModel(int startNode, int endNode) { + for (int i = startNode; i < endNode; i++) { + if (flowNode[i].getBulkSystem().isChemicalSystem()) { + flowNode[i].setInterphaseModelType(0); + } else { + flowNode[i].setInterphaseModelType(0); + } + flowNode[i].getFluidBoundary().setMassTransferCalc(false); + } + } + + /** + *

+ * setNonEquilibriumMassTransferModel. + *

+ * + * @param startNode a int + * @param endNode a int + */ + public void setNonEquilibriumMassTransferModel(int startNode, int endNode) { + for (int i = startNode; i < endNode; i++) { + if (flowNode[i].getBulkSystem().isChemicalSystem()) { + flowNode[i].setInterphaseModelType(10); + } else { + flowNode[i].setInterphaseModelType(1); + } + flowNode[i].getFluidBoundary().setMassTransferCalc(true); + } + } + + /** + *

+ * setNonEquilibriumHeatTransferModel. + *

+ * + * @param startNode a int + * @param endNode a int + */ + public void setNonEquilibriumHeatTransferModel(int startNode, int endNode) { + for (int i = startNode; i < endNode; i++) { + flowNode[i].getFluidBoundary().setHeatTransferCalc(true); + } + } + + /** + *

+ * setEquilibriumHeatTransferModel. + *

+ * + * @param startNode a int + * @param endNode a int + */ + public void setEquilibriumHeatTransferModel(int startNode, int endNode) { + for (int i = startNode; i < endNode; i++) { + flowNode[i].getFluidBoundary().setHeatTransferCalc(false); + } + } + + /** {@inheritDoc} */ + @Override + public void setEquilibriumMassTransfer(boolean test) { + equilibriumMassTransfer = test; + if (equilibriumMassTransfer) { + setEquilibriumMassTransferModel(0, getTotalNumberOfNodes()); + } else { + setNonEquilibriumMassTransferModel(0, getTotalNumberOfNodes()); + } + } + + /** {@inheritDoc} */ + @Override + public void setEquilibriumHeatTransfer(boolean test) { + equilibriumHeatTransfer = test; + if (equilibriumHeatTransfer) { + setEquilibriumHeatTransferModel(0, getTotalNumberOfNodes()); + } else { + setNonEquilibriumHeatTransferModel(0, getTotalNumberOfNodes()); + } + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSystem/FlowSystemInterface.java b/src/main/java/neqsim/fluidMechanics/flowSystem/FlowSystemInterface.java index 18356fdaff..5e0b3a7d39 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSystem/FlowSystemInterface.java +++ b/src/main/java/neqsim/fluidMechanics/flowSystem/FlowSystemInterface.java @@ -3,12 +3,13 @@ * * Created on 11. desember 2000, 17:17 */ + package neqsim.fluidMechanics.flowSystem; +import java.util.UUID; import neqsim.fluidMechanics.flowNode.FlowNodeInterface; import neqsim.fluidMechanics.flowSolver.FlowSolverInterface; import neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface; -import neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.FileWriterInterface; import neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.FlowSystemVisualizationInterface; import neqsim.fluidMechanics.util.timeSeries.TimeSeries; import neqsim.thermo.system.SystemInterface; @@ -22,346 +23,361 @@ * @version $Id: $Id */ public interface FlowSystemInterface { - /** - *

- * init. - *

- */ - public void init(); - - /** - *

- * setNodes. - *

- */ - public void setNodes(); - - /** - *

- * solveTransient. - *

- * - * @param type a int - */ - public void solveTransient(int type); - - /** - *

- * getTimeSeries. - *

- * - * @return a {@link neqsim.fluidMechanics.util.timeSeries.TimeSeries} object - */ - public TimeSeries getTimeSeries(); - - /** - *

- * getDisplay. - *

- * - * @return a - * {@link neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.FlowSystemVisualizationInterface} - * object - */ - public FlowSystemVisualizationInterface getDisplay(); - - /** - *

- * getFileWriter. - *

- * - * @param i a int - * @return a {@link neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.FileWriterInterface} - * object - */ - public FileWriterInterface getFileWriter(int i); - - /** - *

- * getSolver. - *

- * - * @return a {@link neqsim.fluidMechanics.flowSolver.FlowSolverInterface} object - */ - public FlowSolverInterface getSolver(); - - /** - *

- * getInletTemperature. - *

- * - * @return a double - */ - public double getInletTemperature(); - - /** - *

- * getInletPressure. - *

- * - * @return a double - */ - public double getInletPressure(); - - /** - *

- * setNumberOfLegs. - *

- * - * @param numberOfLegs a int - */ - public void setNumberOfLegs(int numberOfLegs); - - /** - *

- * getNumberOfLegs. - *

- * - * @return a int - */ - public int getNumberOfLegs(); - - /** - *

- * setNumberOfNodesInLeg. - *

- * - * @param numberOfNodesInLeg a int - */ - public void setNumberOfNodesInLeg(int numberOfNodesInLeg); - - /** - *

- * getNumberOfNodesInLeg. - *

- * - * @param i a int - * @return a int - */ - public int getNumberOfNodesInLeg(int i); - - /** - *

- * setLegHeights. - *

- * - * @param legHeights an array of {@link double} objects - */ - public void setLegHeights(double[] legHeights); - - /** - *

- * getLegHeights. - *

- * - * @return an array of {@link double} objects - */ - public double[] getLegHeights(); - - /** - *

- * setLegPositions. - *

- * - * @param legPositions an array of {@link double} objects - */ - public void setLegPositions(double[] legPositions); - - /** - *

- * createSystem. - *

- */ - public void createSystem(); - - /** - *

- * getNode. - *

- * - * @param i a int - * @return a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public FlowNodeInterface getNode(int i); - - /** - *

- * getSystemLength. - *

- * - * @return a double - */ - public double getSystemLength(); - - /** - *

- * setLegOuterHeatTransferCoefficients. - *

- * - * @param coefs an array of {@link double} objects - */ - public void setLegOuterHeatTransferCoefficients(double[] coefs); - - /** - *

- * setLegWallHeatTransferCoefficients. - *

- * - * @param coefs an array of {@link double} objects - */ - public void setLegWallHeatTransferCoefficients(double[] coefs); - - /** - *

- * setEquipmentGeometry. - *

- * - * @param equipmentGeometry an array of - * {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} objects - */ - public void setEquipmentGeometry(GeometryDefinitionInterface[] equipmentGeometry); - - /** - *

- * getTotalNumberOfNodes. - *

- * - * @return a int - */ - public int getTotalNumberOfNodes(); - - /** - *

- * calcFluxes. - *

- */ - public void calcFluxes(); - - /** - *

- * setEndPressure. - *

- * - * @param inletPressure a double - */ - public void setEndPressure(double inletPressure); - - /** - *

- * setInletThermoSystem. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setInletThermoSystem(SystemInterface thermoSystem); - - /** - *

- * solveSteadyState. - *

- * - * @param type a int - */ - public void solveSteadyState(int type); - - /** - *

- * getFlowNodes. - *

- * - * @return an array of {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} objects - */ - public FlowNodeInterface[] getFlowNodes(); - - /** - *

- * print. - *

- */ - public void print(); - - /** - *

- * setLegOuterTemperatures. - *

- * - * @param temps an array of {@link double} objects - */ - public void setLegOuterTemperatures(double[] temps); - - /** - *

- * getTotalMolarMassTransferRate. - *

- * - * @param component a int - * @return a double - */ - public double getTotalMolarMassTransferRate(int component); - - /** - *

- * getTotalMolarMassTransferRate. - *

- * - * @param component a int - * @param lastNode a int - * @return a double - */ - public double getTotalMolarMassTransferRate(int component, int lastNode); - - /** - *

- * getTotalPressureDrop. - *

- * - * @return a double - */ - public double getTotalPressureDrop(); - - /** - *

- * getTotalPressureDrop. - *

- * - * @param lastNode a int - * @return a double - */ - public double getTotalPressureDrop(int lastNode); - - /** - *

- * setInitialFlowPattern. - *

- * - * @param flowPattern a {@link java.lang.String} object - */ - public void setInitialFlowPattern(String flowPattern); - - /** - *

- * setFlowPattern. - *

- * - * @param flowPattern a {@link java.lang.String} object - */ - public void setFlowPattern(String flowPattern); - - /** - *

- * setEquilibriumMassTransfer. - *

- * - * @param test a boolean - */ - public void setEquilibriumMassTransfer(boolean test); - - /** - *

- * setEquilibriumHeatTransfer. - *

- * - * @param test a boolean - */ - public void setEquilibriumHeatTransfer(boolean test); + /** + *

+ * init. + *

+ */ + public void init(); + + /** + *

+ * setNodes. + *

+ */ + public void setNodes(); + + /** + *

+ * solveTransient. + *

+ * + * @param type a int + */ + public default void solveTransient(int type) { + solveTransient(type, UUID.randomUUID()); + } + + /** + *

+ * solveTransient. + *

+ * + * @param type a int + * @param id Calculation identifier + */ + public void solveTransient(int type, UUID id); + + /** + *

+ * getTimeSeries. + *

+ * + * @return a {@link neqsim.fluidMechanics.util.timeSeries.TimeSeries} object + */ + public TimeSeries getTimeSeries(); + + /** + *

+ * getDisplay. + *

+ * + * @return a + * {@link neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.FlowSystemVisualizationInterface} + * object + */ + public FlowSystemVisualizationInterface getDisplay(); + + /** + *

+ * getSolver. + *

+ * + * @return a {@link neqsim.fluidMechanics.flowSolver.FlowSolverInterface} object + */ + public FlowSolverInterface getSolver(); + + /** + *

+ * getInletTemperature. + *

+ * + * @return a double + */ + public double getInletTemperature(); + + /** + *

+ * getInletPressure. + *

+ * + * @return a double + */ + public double getInletPressure(); + + /** + *

+ * setNumberOfLegs. + *

+ * + * @param numberOfLegs a int + */ + public void setNumberOfLegs(int numberOfLegs); + + /** + *

+ * getNumberOfLegs. + *

+ * + * @return a int + */ + public int getNumberOfLegs(); + + /** + *

+ * setNumberOfNodesInLeg. + *

+ * + * @param numberOfNodesInLeg a int + */ + public void setNumberOfNodesInLeg(int numberOfNodesInLeg); + + /** + *

+ * getNumberOfNodesInLeg. + *

+ * + * @param i a int + * @return a int + */ + public int getNumberOfNodesInLeg(int i); + + /** + *

+ * setLegHeights. + *

+ * + * @param legHeights an array of type double + */ + public void setLegHeights(double[] legHeights); + + /** + *

+ * getLegHeights. + *

+ * + * @return an array of type double + */ + public double[] getLegHeights(); + + /** + *

+ * setLegPositions. + *

+ * + * @param legPositions an array of type double + */ + public void setLegPositions(double[] legPositions); + + /** + *

+ * createSystem. + *

+ */ + public void createSystem(); + + /** + *

+ * getNode. + *

+ * + * @param i a int + * @return a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public FlowNodeInterface getNode(int i); + + /** + *

+ * getSystemLength. + *

+ * + * @return a double + */ + public double getSystemLength(); + + /** + *

+ * setLegOuterHeatTransferCoefficients. + *

+ * + * @param coefs an array of type double + */ + public void setLegOuterHeatTransferCoefficients(double[] coefs); + + /** + *

+ * setLegWallHeatTransferCoefficients. + *

+ * + * @param coefs an array of type double + */ + public void setLegWallHeatTransferCoefficients(double[] coefs); + + /** + *

+ * setEquipmentGeometry. + *

+ * + * @param equipmentGeometry an array of + * {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} objects + */ + public void setEquipmentGeometry(GeometryDefinitionInterface[] equipmentGeometry); + + /** + *

+ * getTotalNumberOfNodes. + *

+ * + * @return a int + */ + public int getTotalNumberOfNodes(); + + /** + *

+ * calcFluxes. + *

+ */ + public void calcFluxes(); + + /** + *

+ * setEndPressure. + *

+ * + * @param inletPressure a double + */ + public void setEndPressure(double inletPressure); + + /** + *

+ * setInletThermoSystem. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setInletThermoSystem(SystemInterface thermoSystem); + + /** + *

+ * solveSteadyState. + *

+ * + * @param type a int 1: just mass, 2: mass and energy, 3: mass, energy and energy impulse and + * components + */ + public default void solveSteadyState(int type) { + solveSteadyState(type, UUID.randomUUID()); + } + + /** + *

+ * solveSteadyState. + *

+ * + * @param type a int 1: just mass, 2: mass and energy, 3: mass, energy and energy impulse and + * components + * @param id Calculation identifier + */ + public void solveSteadyState(int type, UUID id); + + /** + *

+ * getFlowNodes. + *

+ * + * @return an array of {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} objects + */ + public FlowNodeInterface[] getFlowNodes(); + + /** + *

+ * print. + *

+ */ + public void print(); + + /** + *

+ * setLegOuterTemperatures. + *

+ * + * @param temps an array of type double + */ + public void setLegOuterTemperatures(double[] temps); + + /** + *

+ * getTotalMolarMassTransferRate. + *

+ * + * @param component a int + * @return a double + */ + public double getTotalMolarMassTransferRate(int component); + + /** + *

+ * getTotalMolarMassTransferRate. + *

+ * + * @param component a int + * @param lastNode a int + * @return a double + */ + public double getTotalMolarMassTransferRate(int component, int lastNode); + + /** + *

+ * getTotalPressureDrop. + *

+ * + * @return a double + */ + public double getTotalPressureDrop(); + + /** + *

+ * getTotalPressureDrop. + *

+ * + * @param lastNode a int + * @return a double + */ + public double getTotalPressureDrop(int lastNode); + + /** + *

+ * setInitialFlowPattern. + *

+ * + * @param flowPattern a {@link java.lang.String} object + */ + public void setInitialFlowPattern(String flowPattern); + + /** + *

+ * setFlowPattern. + *

+ * + * @param flowPattern a {@link java.lang.String} object + */ + public void setFlowPattern(String flowPattern); + + /** + *

+ * setEquilibriumMassTransfer. + *

+ * + * @param test a boolean + */ + public void setEquilibriumMassTransfer(boolean test); + + /** + *

+ * setEquilibriumHeatTransfer. + *

+ * + * @param test a boolean + */ + public void setEquilibriumHeatTransfer(boolean test); } diff --git a/src/main/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/OnePhaseFlowSystem.java b/src/main/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/OnePhaseFlowSystem.java index 546756d896..abca381dcd 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/OnePhaseFlowSystem.java +++ b/src/main/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/OnePhaseFlowSystem.java @@ -13,35 +13,24 @@ * @version $Id: $Id */ public abstract class OnePhaseFlowSystem extends FlowSystem { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - // public FluidMechanicsInterface[] flowNode; - public PipeData pipe; + // public FluidMechanicsInterface[] flowNode; + public PipeData pipe; - /** - *

- * Constructor for OnePhaseFlowSystem. - *

- */ - public OnePhaseFlowSystem() {} + /** + *

+ * Constructor for OnePhaseFlowSystem. + *

+ */ + public OnePhaseFlowSystem() {} - /** - *

- * Constructor for OnePhaseFlowSystem. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public OnePhaseFlowSystem(SystemInterface system) {} - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - System.out.println("Hei der!"); - } + /** + *

+ * Constructor for OnePhaseFlowSystem. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public OnePhaseFlowSystem(SystemInterface system) {} } diff --git a/src/main/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/pipeFlowSystem/PipeFlowSystem.java b/src/main/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/pipeFlowSystem/PipeFlowSystem.java index a8534d2d0e..c54558ced2 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/pipeFlowSystem/PipeFlowSystem.java +++ b/src/main/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/pipeFlowSystem/PipeFlowSystem.java @@ -1,5 +1,6 @@ package neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.pipeFlowSystem; +import java.util.UUID; import neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.onePhaseFlowVisualization.pipeFlowVisualization.PipeFlowVisualization; import neqsim.thermo.system.SystemInterface; @@ -12,99 +13,99 @@ * @version $Id: $Id */ public class PipeFlowSystem - extends neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.OnePhaseFlowSystem { - private static final long serialVersionUID = 1000; + extends neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.OnePhaseFlowSystem { + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PipeFlowSystem. - *

- */ - public PipeFlowSystem() {} + /** + *

+ * Constructor for PipeFlowSystem. + *

+ */ + public PipeFlowSystem() {} - /** {@inheritDoc} */ - @Override - public void createSystem() { - thermoSystem.init(0); - thermoSystem.init(1); - flowLeg = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg[this.getNumberOfLegs()]; + /** {@inheritDoc} */ + @Override + public void createSystem() { + thermoSystem.init(0); + thermoSystem.init(1); + flowLeg = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg[this.getNumberOfLegs()]; - for (int i = 0; i < getNumberOfLegs(); i++) { - flowLeg[i] = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg(); - } - - flowNode = - new neqsim.fluidMechanics.flowNode.onePhaseNode.onePhasePipeFlowNode.onePhasePipeFlowNode[totalNumberOfNodes]; - // System.out.println("nodes: " + totalNumberOfNodes); - flowNode[0] = - new neqsim.fluidMechanics.flowNode.onePhaseNode.onePhasePipeFlowNode.onePhasePipeFlowNode( - thermoSystem, this.equipmentGeometry[0]); - flowNode[0].initFlowCalc(); - super.createSystem(); - this.setNodes(); + for (int i = 0; i < getNumberOfLegs(); i++) { + flowLeg[i] = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg(); } - /** {@inheritDoc} */ - @Override - public void init() { - for (int j = 0; j < getTotalNumberOfNodes(); j++) { - flowNode[j].initFlowCalc(); - flowNode[j].setVelocityIn(this.flowNode[j].getVelocity()); - } + flowNode = + new neqsim.fluidMechanics.flowNode.onePhaseNode.onePhasePipeFlowNode.onePhasePipeFlowNode[totalNumberOfNodes]; + // System.out.println("nodes: " + totalNumberOfNodes); + flowNode[0] = + new neqsim.fluidMechanics.flowNode.onePhaseNode.onePhasePipeFlowNode.onePhasePipeFlowNode( + thermoSystem, this.equipmentGeometry[0]); + flowNode[0].initFlowCalc(); + super.createSystem(); + this.setNodes(); + } - for (int k = 0; k < getTotalNumberOfNodes() - 1; k++) { - this.flowNode[k].setVelocityOut(this.flowNode[k + 1].getVelocityIn()); - } + /** {@inheritDoc} */ + @Override + public void init() { + for (int j = 0; j < getTotalNumberOfNodes(); j++) { + flowNode[j].initFlowCalc(); + flowNode[j].setVelocityIn(this.flowNode[j].getVelocity()); } - /** {@inheritDoc} */ - @Override - public void solveSteadyState(int solverType) { // should set solve-type: int 1-bare masse og - // impuls 2 energi og - // impuls 3 energi impuls og komponenter - double[] times = {0.0}; - display = new PipeFlowVisualization(this.getTotalNumberOfNodes(), 1); - getTimeSeries().setTimes(times); - SystemInterface[] systems = {flowNode[0].getBulkSystem()}; - getTimeSeries().setInletThermoSystems(systems); - getTimeSeries().setNumberOfTimeStepsInInterval(1); - double[] outletFlowRates = {0.0, 0.0}; // this is not yet implemented - getTimeSeries().setOutletMolarFlowRate(outletFlowRates); - // SteadystateOnePhasePipeFlowSolver pipeSolve = new - // SteadystateOnePhasePipeFlowSolver(this, getSystemLength(), - // getTotalNumberOfNodes()); - flowSolver = - new neqsim.fluidMechanics.flowSolver.onePhaseFlowSolver.onePhasePipeFlowSolver.OnePhaseFixedStaggeredGrid( - this, getSystemLength(), getTotalNumberOfNodes(), false); - flowSolver.setSolverType(solverType); - flowSolver.solveTDMA(); - getTimeSeries().init(this); - display.setNextData(this); + for (int k = 0; k < getTotalNumberOfNodes() - 1; k++) { + this.flowNode[k].setVelocityOut(this.flowNode[k + 1].getVelocityIn()); } + } + + /** {@inheritDoc} */ + @Override + public void solveSteadyState(int type, UUID id) { + double[] times = {0.0}; + display = new PipeFlowVisualization(this.getTotalNumberOfNodes(), 1); + getTimeSeries().setTimes(times); + SystemInterface[] systems = {flowNode[0].getBulkSystem()}; + getTimeSeries().setInletThermoSystems(systems); + getTimeSeries().setNumberOfTimeStepsInInterval(1); + double[] outletFlowRates = {0.0, 0.0}; // this is not yet implemented + getTimeSeries().setOutletMolarFlowRate(outletFlowRates); + // SteadystateOnePhasePipeFlowSolver pipeSolve = new + // SteadystateOnePhasePipeFlowSolver(this, getSystemLength(), + // getTotalNumberOfNodes()); + flowSolver = + new neqsim.fluidMechanics.flowSolver.onePhaseFlowSolver.onePhasePipeFlowSolver.OnePhaseFixedStaggeredGrid( + this, getSystemLength(), getTotalNumberOfNodes(), false); + flowSolver.setSolverType(type); + flowSolver.solveTDMA(); + getTimeSeries().init(this); + display.setNextData(this); + calcIdentifier = id; + } - /** {@inheritDoc} */ - @Override - public void solveTransient(int solverType) { - getTimeSeries().init(this); - display = new PipeFlowVisualization(this.getTotalNumberOfNodes(), - getTimeSeries().getTime().length); - flowSolver.setDynamic(true); - flowSolver.setSolverType(solverType); - for (int i = 0; i < this.getTimeSeries().getTime().length; i++) { - getNode(0).setBulkSystem(this.getTimeSeries().getThermoSystem()[i]); - // getNode(0).getBulkSystem().setPressure(); - getNode(0).initFlowCalc(); - getNode(0).setVelocityIn(getNode(0).getVelocity()); - flowNode[0].setVelocityOut(this.flowNode[0].getVelocity()); - // flowNode[1].setVelocityIn(this.flowNode[0].getVelocity()); - // flowNode[getTotalNumberOfNodes()-1].setVelocity(this.getTimeSeries().getOutletMolarFlowRates()[i]); - System.out.println("vel: " + this.flowNode[0].getVelocity()); - getSolver().setTimeStep(this.getTimeSeries().getTimeStep()[i]); - // System.out.println("time step: " + i + " " + - // this.getTimeSeries().getTimeStep()[i]); - // System.out.println("time: " + i + " " + this.getTimeSeries().getTime()[i]); - // flowSolver.solveTDMA(); - display.setNextData(this, this.getTimeSeries().getTime(i)); - } + /** {@inheritDoc} */ + @Override + public void solveTransient(int type, UUID id) { + getTimeSeries().init(this); + display = + new PipeFlowVisualization(this.getTotalNumberOfNodes(), getTimeSeries().getTime().length); + flowSolver.setDynamic(true); + flowSolver.setSolverType(type); + for (int i = 0; i < this.getTimeSeries().getTime().length; i++) { + getNode(0).setBulkSystem(this.getTimeSeries().getThermoSystem()[i]); + // getNode(0).getBulkSystem().setPressure(); + getNode(0).initFlowCalc(); + getNode(0).setVelocityIn(getNode(0).getVelocity()); + flowNode[0].setVelocityOut(this.flowNode[0].getVelocity()); + // flowNode[1].setVelocityIn(this.flowNode[0].getVelocity()); + // flowNode[getTotalNumberOfNodes()-1].setVelocity(this.getTimeSeries().getOutletMolarFlowRates()[i]); + System.out.println("vel: " + this.flowNode[0].getVelocity()); + getSolver().setTimeStep(this.getTimeSeries().getTimeStep()[i]); + // System.out.println("time step: " + i + " " + + // this.getTimeSeries().getTimeStep()[i]); + // System.out.println("time: " + i + " " + this.getTimeSeries().getTime()[i]); + // flowSolver.solveTDMA(); + display.setNextData(this, this.getTimeSeries().getTime(i)); } + calcIdentifier = id; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/TwoPhaseFlowSystem.java b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/TwoPhaseFlowSystem.java index 7ac2c2f3fa..de4056dab9 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/TwoPhaseFlowSystem.java +++ b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/TwoPhaseFlowSystem.java @@ -13,33 +13,24 @@ * @version $Id: $Id */ public abstract class TwoPhaseFlowSystem extends FlowSystem { - private static final long serialVersionUID = 1000; - // FlowNodeInterface[] test = new AnnularFlow[100]; - // public FluidMechanicsInterface[] flowNode; - public PipeData pipe; + private static final long serialVersionUID = 1000; + // FlowNodeInterface[] test = new AnnularFlow[100]; + // public FluidMechanicsInterface[] flowNode; + public PipeData pipe; - /** - *

- * Constructor for TwoPhaseFlowSystem. - *

- */ - public TwoPhaseFlowSystem() {} + /** + *

+ * Constructor for TwoPhaseFlowSystem. + *

+ */ + public TwoPhaseFlowSystem() {} - /** - *

- * Constructor for TwoPhaseFlowSystem. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public TwoPhaseFlowSystem(SystemInterface system) {} - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) {} + /** + *

+ * Constructor for TwoPhaseFlowSystem. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public TwoPhaseFlowSystem(SystemInterface system) {} } diff --git a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/shipSystem/LNGship.java b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/shipSystem/LNGship.java index 58aae622a4..649c8ef8c8 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/shipSystem/LNGship.java +++ b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/shipSystem/LNGship.java @@ -1,12 +1,14 @@ package neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.shipSystem; import java.text.DecimalFormat; +import java.util.UUID; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.standards.StandardInterface; import neqsim.standards.gasQuality.Standard_ISO6578; import neqsim.standards.gasQuality.Standard_ISO6976; import neqsim.standards.gasQuality.Standard_ISO6976_2016; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -19,571 +21,590 @@ * @version $Id: $Id */ public class LNGship - extends neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.TwoPhaseFlowSystem { - private static final long serialVersionUID = 1000; - - double[] temperature = null; - double dailyBoilOffRatio = 0.005, totalTankVolume = 140000; - private double liquidDensity = 0.7; - int numberOffTimeSteps = 100; - private double initialTemperature = 111.0; - private boolean setInitialTemperature = false; - private neqsim.thermo.system.SystemInterface thermoSystem = null; - double initialNumberOffMoles; - double molarBoilOffRate = 0.0, dailyBoilOffVolume = 0.0; - private double endTime = 960;// 24.0 * 10; - private Standard_ISO6976 standardISO6976 = null; - StandardInterface standardDensity = null; - double[] WI = null, density = null, volume = null, xmethane, xethane, xpropane, xiC4, xnC4, - xiC5, xnC5, xnC6, xnitrogen; - double[] ymethane, yethane, ypropane, yiC4, ynC4, yiC5, ynC5, ynC6, ynitrogen; - double[] GCV, GCVmass, totalEnergy; - double[] time; - double[] tankTemperature = null; - double timeStep = 0; - private String[][] resultTable = null; - private boolean backCalculate = false; - double endVolume = 0.0; - static Logger logger = LogManager.getLogger(LNGship.class); - - /** - *

- * Constructor for LNGship. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param totalTankVolume a double - * @param dailyBoilOffRatio a double - */ - public LNGship(neqsim.thermo.system.SystemInterface thermoSystem, double totalTankVolume, - double dailyBoilOffRatio) { - this.thermoSystem = thermoSystem; - this.totalTankVolume = totalTankVolume; - this.dailyBoilOffRatio = dailyBoilOffRatio; - - setStandardISO6976(new Standard_ISO6976_2016(thermoSystem, 0, 25, "volume")); + extends neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.TwoPhaseFlowSystem { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(LNGship.class); + + double[] temperature = null; + double dailyBoilOffRatio = 0.005; + double totalTankVolume = 140000; + private double liquidDensity = 0.7; + int numberOffTimeSteps = 100; + private double initialTemperature = 111.0; + private boolean setInitialTemperature = false; + private neqsim.thermo.system.SystemInterface thermoSystem = null; + double initialNumberOffMoles; + double molarBoilOffRate = 0.0; + double dailyBoilOffVolume = 0.0; + private double endTime = 960; // 24.0 * 10; + private Standard_ISO6976 standardISO6976 = null; + StandardInterface standardDensity = null; + double[] WI = null; + double[] density = null; + double[] volume = null; + double[] xmethane; + double[] xethane; + double[] xpropane; + double[] xiC4; + double[] xnC4; + double[] xiC5; + double[] xnC5; + double[] xnC6; + double[] xnitrogen; + double[] ymethane; + double[] yethane; + double[] ypropane; + double[] yiC4; + double[] ynC4; + double[] yiC5; + double[] ynC5; + double[] ynC6; + double[] ynitrogen; + double[] GCV; + double[] GCVmass; + double[] totalEnergy; + double[] time; + double[] tankTemperature = null; + double timeStep = 0; + private String[][] resultTable = null; + private boolean backCalculate = false; + double endVolume = 0.0; + + /** + *

+ * Constructor for LNGship. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param totalTankVolume a double + * @param dailyBoilOffRatio a double + */ + public LNGship(neqsim.thermo.system.SystemInterface thermoSystem, double totalTankVolume, + double dailyBoilOffRatio) { + this.thermoSystem = thermoSystem; + this.totalTankVolume = totalTankVolume; + this.dailyBoilOffRatio = dailyBoilOffRatio; + + setStandardISO6976(new Standard_ISO6976_2016(thermoSystem, 0, 25, "volume")); + } + + /** + *

+ * useStandardVersion. + *

+ * + * @param isoName a {@link java.lang.String} object + * @param version a {@link java.lang.String} object + */ + public void useStandardVersion(String isoName, String version) { + if (version.equals("2016")) { + setStandardISO6976(new Standard_ISO6976_2016(thermoSystem, getStandardISO6976().getVolRefT(), + getStandardISO6976().getEnergyRefT(), "volume")); + logger.info("using ISO6976 version 2016"); + } else { + setStandardISO6976(new Standard_ISO6976(thermoSystem, getStandardISO6976().getVolRefT(), + getStandardISO6976().getEnergyRefT(), "volume")); + logger.info("using ISO6976 version 1995"); } - - /** - *

- * useStandardVersion. - *

- * - * @param isoName a {@link java.lang.String} object - * @param version a {@link java.lang.String} object - */ - public void useStandardVersion(String isoName, String version) { - if (version.equals("2016")) { - setStandardISO6976(new Standard_ISO6976(thermoSystem, getStandardISO6976().getVolRefT(), - getStandardISO6976().getEnergyRefT(), "volume")); - logger.info("using ISO6976 version 2016"); - } else { - setStandardISO6976( - new Standard_ISO6976_2016(thermoSystem, getStandardISO6976().getVolRefT(), - getStandardISO6976().getEnergyRefT(), "volume")); - logger.info("using ISO6976 version 1995"); - } + } + + /** {@inheritDoc} */ + @Override + public void createSystem() { + getThermoSystem().init(0); + thermoOperations = new ThermodynamicOperations(getThermoSystem()); + try { + if (isSetInitialTemperature()) { + getThermoSystem().setTemperature(getInitialTemperature()); + } else { + thermoOperations.bubblePointTemperatureFlash(); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + getThermoSystem().init(0); - /** {@inheritDoc} */ - @Override - public void createSystem() { - getThermoSystem().init(0); - thermoOperations = new ThermodynamicOperations(getThermoSystem()); - try { - if (isSetInitialTemperature()) { - getThermoSystem().setTemperature(getInitialTemperature()); - } else { - thermoOperations.bubblePointTemperatureFlash(); - } - } catch (Exception e) { - e.printStackTrace(); - } - getThermoSystem().init(0); - - standardDensity = new Standard_ISO6578(getThermoSystem()); - standardDensity.calculate(); + standardDensity = new Standard_ISO6578(getThermoSystem()); + standardDensity.calculate(); - liquidDensity = standardDensity.getValue("density"); - logger.info("density start " + standardDensity.getValue("density")); - timeStep = getEndTime() / (numberOffTimeSteps * 1.0 - 1.0); - dailyBoilOffVolume = totalTankVolume * dailyBoilOffRatio; + liquidDensity = standardDensity.getValue("density"); + logger.info("density start " + standardDensity.getValue("density")); + timeStep = getEndTime() / (numberOffTimeSteps * 1.0 - 1.0); + dailyBoilOffVolume = totalTankVolume * dailyBoilOffRatio; - logger.info("daily boiloff volume " + dailyBoilOffVolume); - initialNumberOffMoles = - totalTankVolume * getLiquidDensity() / getThermoSystem().getPhase(1).getMolarMass(); - double oldMoles = getThermoSystem().getTotalNumberOfMoles(); + logger.info("daily boiloff volume " + dailyBoilOffVolume); + initialNumberOffMoles = + totalTankVolume * getLiquidDensity() / getThermoSystem().getPhase(1).getMolarMass(); + double oldMoles = getThermoSystem().getTotalNumberOfMoles(); - for (int i = 0; i < getThermoSystem().getPhase(0).getNumberOfComponents(); i++) { - getThermoSystem().addComponent(getThermoSystem().getPhase(0).getComponent(i).getName(), - (initialNumberOffMoles - oldMoles) - * getThermoSystem().getPhase(0).getComponent(i).getz()); - } + for (int i = 0; i < getThermoSystem().getPhase(0).getNumberOfComponents(); i++) { + getThermoSystem().addComponent(getThermoSystem().getPhase(0).getComponent(i).getName(), + (initialNumberOffMoles - oldMoles) + * getThermoSystem().getPhase(0).getComponent(i).getz()); } - - /** {@inheritDoc} */ - @Override - public void init() {} - - /** {@inheritDoc} */ - @Override - public void solveSteadyState(int solverType) { - try { - if (!isSetInitialTemperature()) { - thermoOperations.bubblePointTemperatureFlash(); - } - } catch (Exception e) { - e.printStackTrace(); - } - logger.info("temperature start " + getThermoSystem().getTemperature()); + } + + /** {@inheritDoc} */ + @Override + public void init() {} + + /** {@inheritDoc} */ + @Override + public void solveSteadyState(int type, UUID id) { + // TODO: double[] times = {0.0}; ? + try { + if (!isSetInitialTemperature()) { + thermoOperations.bubblePointTemperatureFlash(); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** {@inheritDoc} */ - @Override - public void solveTransient(int type) { - SystemInterface tempThermoSystem = getThermoSystem().clone(); - WI = new double[numberOffTimeSteps]; - GCV = new double[numberOffTimeSteps]; - GCVmass = new double[numberOffTimeSteps]; - totalEnergy = new double[numberOffTimeSteps]; - time = new double[numberOffTimeSteps]; - density = new double[numberOffTimeSteps]; - tankTemperature = new double[numberOffTimeSteps]; - volume = new double[numberOffTimeSteps]; - - xnitrogen = new double[numberOffTimeSteps]; - xmethane = new double[numberOffTimeSteps]; - xethane = new double[numberOffTimeSteps]; - xpropane = new double[numberOffTimeSteps]; - xiC4 = new double[numberOffTimeSteps]; - xnC4 = new double[numberOffTimeSteps]; - xiC5 = new double[numberOffTimeSteps]; - xnC5 = new double[numberOffTimeSteps]; - xnC6 = new double[numberOffTimeSteps]; - - ynitrogen = new double[numberOffTimeSteps]; - ymethane = new double[numberOffTimeSteps]; - yethane = new double[numberOffTimeSteps]; - ypropane = new double[numberOffTimeSteps]; - yiC4 = new double[numberOffTimeSteps]; - ynC4 = new double[numberOffTimeSteps]; - yiC5 = new double[numberOffTimeSteps]; - ynC5 = new double[numberOffTimeSteps]; - ynC6 = new double[numberOffTimeSteps]; - - double error = 100.0; - double mulitplicator = 1.0; - if (backCalculate) { - mulitplicator = -1.0; - } - endVolume = totalTankVolume - mulitplicator * dailyBoilOffVolume * getEndTime() / 24.0; - molarBoilOffRate = dailyBoilOffVolume * liquidDensity - / getThermoSystem().getPhase(1).getMolarMass() / 24.0 * timeStep; - if (backCalculate) { - molarBoilOffRate = -molarBoilOffRate; - } - // double orginalMolarBoilOff = molarBoilOffRate; - logger.info("end Volume " + endVolume); - int iterations = 0; - double boilOffCorrection = 0.0; - do { - setThermoSystem(tempThermoSystem.clone()); - thermoOperations = new ThermodynamicOperations(getThermoSystem()); - standardDensity = new Standard_ISO6578(getThermoSystem()); - getStandardISO6976().setThermoSystem(getThermoSystem()); - iterations++; - for (int j = 0; j < numberOffTimeSteps; j++) { - time[j] = j * timeStep; - try { - if (!(j == 0 && isSetInitialTemperature())) { - thermoOperations.bubblePointTemperatureFlash(); - } - } catch (Exception e) { - e.printStackTrace(); - } - double[] xgas = new double[getThermoSystem().getPhase(0).getNumberOfComponents()]; - - for (int kk = 0; kk < getThermoSystem().getPhase(0).getNumberOfComponents(); kk++) { - xgas[kk] = getThermoSystem().getPhase(0).getComponent(kk).getx(); - } - - if (getThermoSystem().getPhase(0).hasComponent("nitrogen")) { - xnitrogen[j] = getThermoSystem().getPhase(1).getComponent("nitrogen").getx(); - ynitrogen[j] = getThermoSystem().getPhase(0).getComponent("nitrogen").getx(); - } - if (getThermoSystem().getPhase(0).hasComponent("methane")) { - xmethane[j] = getThermoSystem().getPhase(1).getComponent("methane").getx(); - ymethane[j] = getThermoSystem().getPhase(0).getComponent("methane").getx(); - } - if (getThermoSystem().getPhase(0).hasComponent("ethane")) { - xethane[j] = getThermoSystem().getPhase(1).getComponent("ethane").getx(); - yethane[j] = getThermoSystem().getPhase(0).getComponent("ethane").getx(); - } - if (getThermoSystem().getPhase(0).hasComponent("propane")) { - xpropane[j] = getThermoSystem().getPhase(1).getComponent("propane").getx(); - ypropane[j] = getThermoSystem().getPhase(0).getComponent("propane").getx(); - } - if (getThermoSystem().getPhase(0).hasComponent("i-butane")) { - xiC4[j] = getThermoSystem().getPhase(1).getComponent("i-butane").getx(); - yiC4[j] = getThermoSystem().getPhase(0).getComponent("i-butane").getx(); - } - if (getThermoSystem().getPhase(0).hasComponent("n-butane")) { - xnC4[j] = getThermoSystem().getPhase(1).getComponent("n-butane").getx(); - ynC4[j] = getThermoSystem().getPhase(0).getComponent("n-butane").getx(); - } - if (getThermoSystem().getPhase(0).hasComponent("i-pentane")) { - xiC5[j] = getThermoSystem().getPhase(1).getComponent("i-pentane").getx(); - yiC5[j] = getThermoSystem().getPhase(0).getComponent("i-pentane").getx(); - } - if (getThermoSystem().getPhase(0).hasComponent("n-pentane")) { - xnC5[j] = getThermoSystem().getPhase(1).getComponent("n-pentane").getx(); - ynC5[j] = getThermoSystem().getPhase(0).getComponent("n-pentane").getx(); - } - if (getThermoSystem().getPhase(0).hasComponent("n-hexane")) { - xnC6[j] = getThermoSystem().getPhase(1).getComponent("n-hexane").getx(); - ynC6[j] = getThermoSystem().getPhase(0).getComponent("n-hexane").getx(); - } - // System.out.println("time " + time[j] + " Superior Wobbe " + - // getStandardISO6976().getValue("SuperiorWobbeIndex") + " temperature " + - // getThermoSystem().getTemperature() + " density " + density[j] + " volume " + - // volume[j] + " total energy " + totalEnergy[j]); - getThermoSystem().init(0); - - standardDensity.calculate(); - density[j] = standardDensity.getValue("density"); - getStandardISO6976().calculate(); - // getStandardISO6976().display(""); - WI[j] = getStandardISO6976().getValue("SuperiorWobbeIndex"); - GCV[j] = getStandardISO6976().getValue("SuperiorCalorificValue"); - - tankTemperature[j] = getThermoSystem().getTemperature(); - volume[j] = getThermoSystem().getNumberOfMoles() - * getThermoSystem().getPhase(1).getMolarMass() / density[j];// density[0]; - - this.standardISO6976.setReferenceType("mass"); - totalEnergy[j] = getStandardISO6976().getValue("SuperiorCalorificValue") * volume[j] - * density[j]; - GCVmass[j] = getStandardISO6976().getValue("SuperiorCalorificValue"); - this.standardISO6976.setReferenceType("volume"); - - for (int i = 0; i < getThermoSystem().getPhase(0).getNumberOfComponents(); i++) { - getThermoSystem().addComponent( - getThermoSystem().getPhase(0).getComponent(i).getName(), - -xgas[i] * molarBoilOffRate); - } - } - double oldVolume = 0; - double oldoldVolume = oldVolume; - oldVolume = volume[0] - volume[numberOffTimeSteps - 1]; - double oldmolarBoilOffRate = 0; - double oldoldmolarBoilOffRate = oldmolarBoilOffRate; - oldmolarBoilOffRate = molarBoilOffRate; - error = volume[numberOffTimeSteps - 1] / endVolume - 1.0; - double derrordn = - (oldVolume - oldoldVolume) / (oldmolarBoilOffRate - oldoldmolarBoilOffRate); - boilOffCorrection = (volume[numberOffTimeSteps - 1] - endVolume) / derrordn; - if (iterations > 1) { - molarBoilOffRate += boilOffCorrection;// (volume[numberOffTimeSteps - 1] - - // endVolume) / derrordn; - } else { - molarBoilOffRate = molarBoilOffRate * volume[numberOffTimeSteps - 1] / endVolume; - } - // logger.info("error " + error + " iteration " + iterations + " molarboiloff " - // + molarBoilOffRate + " endVolume " + endVolume + " orginalMolarBoilOff " + - // orginalMolarBoilOff); - } while (Math.abs(error) > 1e-8 && iterations < 100); + logger.info("temperature start " + getThermoSystem().getTemperature()); + // TODO: getTimeSeries().init(this); + calcIdentifier = id; + } + + /** {@inheritDoc} */ + @Override + public void solveTransient(int type, UUID id) { + SystemInterface tempThermoSystem = getThermoSystem().clone(); + WI = new double[numberOffTimeSteps]; + GCV = new double[numberOffTimeSteps]; + GCVmass = new double[numberOffTimeSteps]; + totalEnergy = new double[numberOffTimeSteps]; + time = new double[numberOffTimeSteps]; + density = new double[numberOffTimeSteps]; + tankTemperature = new double[numberOffTimeSteps]; + volume = new double[numberOffTimeSteps]; + + xnitrogen = new double[numberOffTimeSteps]; + xmethane = new double[numberOffTimeSteps]; + xethane = new double[numberOffTimeSteps]; + xpropane = new double[numberOffTimeSteps]; + xiC4 = new double[numberOffTimeSteps]; + xnC4 = new double[numberOffTimeSteps]; + xiC5 = new double[numberOffTimeSteps]; + xnC5 = new double[numberOffTimeSteps]; + xnC6 = new double[numberOffTimeSteps]; + + ynitrogen = new double[numberOffTimeSteps]; + ymethane = new double[numberOffTimeSteps]; + yethane = new double[numberOffTimeSteps]; + ypropane = new double[numberOffTimeSteps]; + yiC4 = new double[numberOffTimeSteps]; + ynC4 = new double[numberOffTimeSteps]; + yiC5 = new double[numberOffTimeSteps]; + ynC5 = new double[numberOffTimeSteps]; + ynC6 = new double[numberOffTimeSteps]; + + double error = 100.0; + double mulitplicator = 1.0; + if (backCalculate) { + mulitplicator = -1.0; + } + endVolume = totalTankVolume - mulitplicator * dailyBoilOffVolume * getEndTime() / 24.0; + molarBoilOffRate = dailyBoilOffVolume * liquidDensity + / getThermoSystem().getPhase(1).getMolarMass() / 24.0 * timeStep; + if (backCalculate) { + molarBoilOffRate = -molarBoilOffRate; + } + logger.info("end Volume " + endVolume); + int iterations = 0; + double boilOffCorrection = 0.0; + do { + setThermoSystem(tempThermoSystem.clone()); + thermoOperations = new ThermodynamicOperations(getThermoSystem()); + standardDensity = new Standard_ISO6578(getThermoSystem()); + getStandardISO6976().setThermoSystem(getThermoSystem()); + iterations++; + for (int j = 0; j < numberOffTimeSteps; j++) { + time[j] = j * timeStep; try { + if (!(j == 0 && isSetInitialTemperature())) { thermoOperations.bubblePointTemperatureFlash(); - } catch (Exception e) { - e.printStackTrace(); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - } - - /** - *

- * Getter for the field resultTable. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[][] getResultTable() { - return resultTable; - } + double[] xgas = new double[getThermoSystem().getPhase(0).getNumberOfComponents()]; - /** - *

- * getResults. - *

- * - * @param name a {@link java.lang.String} object - * @return an array of {@link java.lang.String} objects - */ - public String[][] getResults(String name) { - String[][] table = new String[numberOffTimeSteps + 1][26]; - String[] names = {"Time", "temperature", "WI", "GCV", "density", "volume", "energy"}; - - for (int i = 0; i < 13; i++) { - for (int j = 0; j < numberOffTimeSteps + 1; j++) { - table[j][i] = ""; - } + for (int kk = 0; kk < getThermoSystem().getPhase(0).getNumberOfComponents(); kk++) { + xgas[kk] = getThermoSystem().getPhase(0).getComponent(kk).getx(); } - System.arraycopy(names, 0, table[0], 0, 7); - - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(5); - - for (int j = 0; j < numberOffTimeSteps; j++) { - table[j + 1][0] = nf.format(time[j]); - table[j + 1][1] = nf.format(tankTemperature[j] - 273.15); - table[j + 1][2] = nf.format(WI[j] / 1000.0); - table[j + 1][3] = nf.format(GCV[j] / 1000.0); - table[j + 1][4] = nf.format(density[j]); - table[j + 1][5] = nf.format(volume[j]); - table[j + 1][15] = nf.format(totalEnergy[j] / 1000.0); - - table[j + 1][6] = nf.format(xmethane[j]); - table[j + 1][7] = nf.format(xethane[j]); - table[j + 1][8] = nf.format(xpropane[j]); - table[j + 1][9] = nf.format(xiC4[j]); - table[j + 1][10] = nf.format(xnC4[j]); - table[j + 1][11] = nf.format(xiC5[j]); - table[j + 1][12] = nf.format(xnC5[j]); - table[j + 1][13] = nf.format(xnC6[j]); - table[j + 1][14] = nf.format(xnitrogen[j]); - - table[j + 1][16] = nf.format(GCVmass[j] / 1000.0); - - table[j + 1][17] = nf.format(ymethane[j]); - table[j + 1][18] = nf.format(yethane[j]); - table[j + 1][19] = nf.format(ypropane[j]); - table[j + 1][20] = nf.format(yiC4[j]); - table[j + 1][21] = nf.format(ynC4[j]); - table[j + 1][22] = nf.format(yiC5[j]); - table[j + 1][23] = nf.format(ynC5[j]); - table[j + 1][24] = nf.format(ynC6[j]); - table[j + 1][25] = nf.format(ynitrogen[j]); + if (getThermoSystem().getPhase(0).hasComponent("nitrogen")) { + xnitrogen[j] = getThermoSystem().getPhase(1).getComponent("nitrogen").getx(); + ynitrogen[j] = getThermoSystem().getPhase(0).getComponent("nitrogen").getx(); } - setResultTable(table); - - /* - * // for (int i = 0; i < 4; i++) { for (int j = 0; j < numberOffTimeSteps + 1; j++) { - * logger.info(resultTable[j][25]); logger.info(resultTable[j][14]); } //// } - */ - return table; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // thermo.system.SystemInterface testSystem = new - // thermo.system.SystemGERG2004Eos(273.15 - 161.4, 1.0); - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos(273.15 - 161.4, 1.013); - /* - * testSystem.addComponent("nitrogen", 0.0136); testSystem.addComponent("methane", 0.9186); - * testSystem.addComponent("ethane", 0.0526); testSystem.addComponent("propane", 0.0115); - */ - testSystem.addComponent("nitrogen", 0.691);// 0.93041); - testSystem.addComponent("methane", 91.93);// 92.637); - testSystem.addComponent("ethane", 5.651);// 4.876); - testSystem.addComponent("propane", 1.296);// 1.093); - testSystem.addComponent("i-butane", 0.122); - testSystem.addComponent("n-butane", 0.289); - testSystem.addComponent("i-pentane", 0.018); - testSystem.addComponent("n-pentane", 0.003); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - - neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.shipSystem.LNGship ship = - new neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.shipSystem.LNGship( - testSystem, 140000, 0.0015); - // ship.setInitialTemperature(111.0); - // ship.useStandardVersion("","2016"); - ship.useStandardVersion("", "2016"); - ship.getStandardISO6976().setEnergyRefT(15); - ship.getStandardISO6976().setVolRefT(15); - ship.createSystem(); - ship.init(); - // ship.setBackCalculate(true); - ship.solveSteadyState(0); - ship.solveTransient(0); - ship.getResults("test"); - ship.getThermoSystem().display(); - } - - /** - *

- * Setter for the field resultTable. - *

- * - * @param resultTable the resultTable to set - */ - public void setResultTable(String[][] resultTable) { - this.resultTable = resultTable; - } - - /** - *

- * Getter for the field liquidDensity. - *

- * - * @return the liquidDensity - */ - public double getLiquidDensity() { - return liquidDensity; - } - - /** - *

- * Setter for the field liquidDensity. - *

- * - * @param liquidDensity the liquidDensity to set - */ - public void setLiquidDensity(double liquidDensity) { - this.liquidDensity = liquidDensity; - } - - /** - *

- * Getter for the field endTime. - *

- * - * @return the endTime - */ - public double getEndTime() { - return endTime; - } - - /** - *

- * Setter for the field endTime. - *

- * - * @param endTime the endTime to set - */ - public void setEndTime(double endTime) { - this.endTime = endTime; - } - - /** - *

- * Getter for the field standardISO6976. - *

- * - * @return the standardISO6976 - */ - public Standard_ISO6976 getStandardISO6976() { - return standardISO6976; - } - - /** - *

- * Setter for the field standardISO6976. - *

- * - * @param standardISO6976 the standardISO6976 to set - */ - public void setStandardISO6976(Standard_ISO6976 standardISO6976) { - this.standardISO6976 = standardISO6976; - } - - /** - *

- * isBackCalculate. - *

- * - * @return the backCalculate - */ - public boolean isBackCalculate() { - return backCalculate; - } - - /** - *

- * Setter for the field backCalculate. - *

- * - * @param backCalculate the backCalculate to set - */ - public void setBackCalculate(boolean backCalculate) { - this.backCalculate = backCalculate; - } - - /** - *

- * Getter for the field thermoSystem. - *

- * - * @return the thermoSystem - */ - public neqsim.thermo.system.SystemInterface getThermoSystem() { - return thermoSystem; - } + if (getThermoSystem().getPhase(0).hasComponent("methane")) { + xmethane[j] = getThermoSystem().getPhase(1).getComponent("methane").getx(); + ymethane[j] = getThermoSystem().getPhase(0).getComponent("methane").getx(); + } + if (getThermoSystem().getPhase(0).hasComponent("ethane")) { + xethane[j] = getThermoSystem().getPhase(1).getComponent("ethane").getx(); + yethane[j] = getThermoSystem().getPhase(0).getComponent("ethane").getx(); + } + if (getThermoSystem().getPhase(0).hasComponent("propane")) { + xpropane[j] = getThermoSystem().getPhase(1).getComponent("propane").getx(); + ypropane[j] = getThermoSystem().getPhase(0).getComponent("propane").getx(); + } + if (getThermoSystem().getPhase(0).hasComponent("i-butane")) { + xiC4[j] = getThermoSystem().getPhase(1).getComponent("i-butane").getx(); + yiC4[j] = getThermoSystem().getPhase(0).getComponent("i-butane").getx(); + } + if (getThermoSystem().getPhase(0).hasComponent("n-butane")) { + xnC4[j] = getThermoSystem().getPhase(1).getComponent("n-butane").getx(); + ynC4[j] = getThermoSystem().getPhase(0).getComponent("n-butane").getx(); + } + if (getThermoSystem().getPhase(0).hasComponent("i-pentane")) { + xiC5[j] = getThermoSystem().getPhase(1).getComponent("i-pentane").getx(); + yiC5[j] = getThermoSystem().getPhase(0).getComponent("i-pentane").getx(); + } + if (getThermoSystem().getPhase(0).hasComponent("n-pentane")) { + xnC5[j] = getThermoSystem().getPhase(1).getComponent("n-pentane").getx(); + ynC5[j] = getThermoSystem().getPhase(0).getComponent("n-pentane").getx(); + } + if (getThermoSystem().getPhase(0).hasComponent("n-hexane")) { + xnC6[j] = getThermoSystem().getPhase(1).getComponent("n-hexane").getx(); + ynC6[j] = getThermoSystem().getPhase(0).getComponent("n-hexane").getx(); + } + // System.out.println("time " + time[j] + " Superior Wobbe " + + // getStandardISO6976().getValue("SuperiorWobbeIndex") + " temperature " + + // getThermoSystem().getTemperature() + " density " + density[j] + " volume " + + // volume[j] + " total energy " + totalEnergy[j]); + getThermoSystem().init(0); - /** - *

- * Setter for the field thermoSystem. - *

- * - * @param thermoSystem the thermoSystem to set - */ - public void setThermoSystem(neqsim.thermo.system.SystemInterface thermoSystem) { - this.thermoSystem = thermoSystem; - } + standardDensity.calculate(); + density[j] = standardDensity.getValue("density"); + getStandardISO6976().calculate(); + // getStandardISO6976().display(""); + WI[j] = getStandardISO6976().getValue("SuperiorWobbeIndex"); + GCV[j] = getStandardISO6976().getValue("SuperiorCalorificValue"); + + tankTemperature[j] = getThermoSystem().getTemperature(); + volume[j] = getThermoSystem().getNumberOfMoles() + * getThermoSystem().getPhase(1).getMolarMass() / density[j]; // density[0]; + + this.standardISO6976.setReferenceType("mass"); + totalEnergy[j] = + getStandardISO6976().getValue("SuperiorCalorificValue") * volume[j] * density[j]; + GCVmass[j] = getStandardISO6976().getValue("SuperiorCalorificValue"); + this.standardISO6976.setReferenceType("volume"); - /** - *

- * isSetInitialTemperature. - *

- * - * @return the setInitialTemperature - */ - public boolean isSetInitialTemperature() { - return setInitialTemperature; + for (int i = 0; i < getThermoSystem().getPhase(0).getNumberOfComponents(); i++) { + getThermoSystem().addComponent(getThermoSystem().getPhase(0).getComponent(i).getName(), + -xgas[i] * molarBoilOffRate); + } + } + double oldVolume = 0; + double oldoldVolume = oldVolume; + oldVolume = volume[0] - volume[numberOffTimeSteps - 1]; + double oldmolarBoilOffRate = 0; + double oldoldmolarBoilOffRate = oldmolarBoilOffRate; + oldmolarBoilOffRate = molarBoilOffRate; + error = volume[numberOffTimeSteps - 1] / endVolume - 1.0; + double derrordn = (oldVolume - oldoldVolume) / (oldmolarBoilOffRate - oldoldmolarBoilOffRate); + boilOffCorrection = (volume[numberOffTimeSteps - 1] - endVolume) / derrordn; + if (iterations > 1) { + molarBoilOffRate += boilOffCorrection; + // (volume[numberOffTimeSteps - 1] - endVolume) / derrordn; + } else { + molarBoilOffRate = molarBoilOffRate * volume[numberOffTimeSteps - 1] / endVolume; + } + // logger.info("error " + error + " iteration " + iterations + " molarboiloff " + // + molarBoilOffRate + " endVolume " + endVolume + " orginalMolarBoilOff " + + // orginalMolarBoilOff); + } while (Math.abs(error) > 1e-8 && iterations < 100); + try { + thermoOperations.bubblePointTemperatureFlash(); + calcIdentifier = id; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** - *

- * Setter for the field initialTemperature. - *

- * - * @param setInitialTemperature the setInitialTemperature to set - */ - public void setInitialTemperature(boolean setInitialTemperature) { - this.setInitialTemperature = setInitialTemperature; + } + + /** + *

+ * Getter for the field resultTable. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[][] getResultTable() { + return resultTable; + } + + /** + *

+ * getResults. + *

+ * + * @param name a {@link java.lang.String} object + * @return an array of {@link java.lang.String} objects + */ + public String[][] getResults(String name) { + String[][] table = new String[numberOffTimeSteps + 1][26]; + String[] names = {"Time", "temperature", "WI", "GCV", "density", "volume", "energy"}; + + for (int i = 0; i < 13; i++) { + for (int j = 0; j < numberOffTimeSteps + 1; j++) { + table[j][i] = ""; + } } - /** - *

- * Getter for the field initialTemperature. - *

- * - * @return the initialTemperature - */ - public double getInitialTemperature() { - return initialTemperature; + System.arraycopy(names, 0, table[0], 0, 7); + + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(5); + + for (int j = 0; j < numberOffTimeSteps; j++) { + table[j + 1][0] = nf.format(time[j]); + table[j + 1][1] = nf.format(tankTemperature[j] - 273.15); + table[j + 1][2] = nf.format(WI[j] / 1000.0); + table[j + 1][3] = nf.format(GCV[j] / 1000.0); + table[j + 1][4] = nf.format(density[j]); + table[j + 1][5] = nf.format(volume[j]); + table[j + 1][15] = nf.format(totalEnergy[j] / 1000.0); + + table[j + 1][6] = nf.format(xmethane[j]); + table[j + 1][7] = nf.format(xethane[j]); + table[j + 1][8] = nf.format(xpropane[j]); + table[j + 1][9] = nf.format(xiC4[j]); + table[j + 1][10] = nf.format(xnC4[j]); + table[j + 1][11] = nf.format(xiC5[j]); + table[j + 1][12] = nf.format(xnC5[j]); + table[j + 1][13] = nf.format(xnC6[j]); + table[j + 1][14] = nf.format(xnitrogen[j]); + + table[j + 1][16] = nf.format(GCVmass[j] / 1000.0); + + table[j + 1][17] = nf.format(ymethane[j]); + table[j + 1][18] = nf.format(yethane[j]); + table[j + 1][19] = nf.format(ypropane[j]); + table[j + 1][20] = nf.format(yiC4[j]); + table[j + 1][21] = nf.format(ynC4[j]); + table[j + 1][22] = nf.format(yiC5[j]); + table[j + 1][23] = nf.format(ynC5[j]); + table[j + 1][24] = nf.format(ynC6[j]); + table[j + 1][25] = nf.format(ynitrogen[j]); } + setResultTable(table); - /** - *

- * Setter for the field initialTemperature. - *

- * - * @param initialTemperature the initialTemperature to set + /* + * // for (int i = 0; i < 4; i++) { for (int j = 0; j < numberOffTimeSteps + 1; j++) { + * logger.info(resultTable[j][25]); logger.info(resultTable[j][14]); } //// } */ - public void setInitialTemperature(double initialTemperature) { - setInitialTemperature = true; - this.initialTemperature = initialTemperature; - } - - /** - * @return the thermoSystem + return table; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // thermo.system.SystemInterface testSystem = new + // thermo.system.SystemGERG2004Eos(273.15 - 161.4, 1.0); + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos(273.15 - 161.4, + ThermodynamicConstantsInterface.referencePressure); + /* + * testSystem.addComponent("nitrogen", 0.0136); testSystem.addComponent("methane", 0.9186); + * testSystem.addComponent("ethane", 0.0526); testSystem.addComponent("propane", 0.0115); */ + testSystem.addComponent("nitrogen", 0.691); // 0.93041); + testSystem.addComponent("methane", 91.93); // 92.637); + testSystem.addComponent("ethane", 5.651); // 4.876); + testSystem.addComponent("propane", 1.296); // 1.093); + testSystem.addComponent("i-butane", 0.122); + testSystem.addComponent("n-butane", 0.289); + testSystem.addComponent("i-pentane", 0.018); + testSystem.addComponent("n-pentane", 0.003); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + + neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.shipSystem.LNGship ship = + new neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.shipSystem.LNGship(testSystem, + 140000, 0.0015); + // ship.setInitialTemperature(111.0); + // ship.useStandardVersion("","2016"); + ship.useStandardVersion("", "2016"); + ship.getStandardISO6976().setEnergyRefT(15); + ship.getStandardISO6976().setVolRefT(15); + ship.createSystem(); + ship.init(); + // ship.setBackCalculate(true); + ship.solveSteadyState(0); + ship.solveTransient(0); + ship.getResults("test"); + ship.getThermoSystem().display(); + } + + /** + *

+ * Setter for the field resultTable. + *

+ * + * @param resultTable the resultTable to set + */ + public void setResultTable(String[][] resultTable) { + this.resultTable = resultTable; + } + + /** + *

+ * Getter for the field liquidDensity. + *

+ * + * @return the liquidDensity + */ + public double getLiquidDensity() { + return liquidDensity; + } + + /** + *

+ * Setter for the field liquidDensity. + *

+ * + * @param liquidDensity the liquidDensity to set + */ + public void setLiquidDensity(double liquidDensity) { + this.liquidDensity = liquidDensity; + } + + /** + *

+ * Getter for the field endTime. + *

+ * + * @return the endTime + */ + public double getEndTime() { + return endTime; + } + + /** + *

+ * Setter for the field endTime. + *

+ * + * @param endTime the endTime to set + */ + public void setEndTime(double endTime) { + this.endTime = endTime; + } + + /** + *

+ * Getter for the field standardISO6976. + *

+ * + * @return the standardISO6976 + */ + public Standard_ISO6976 getStandardISO6976() { + return standardISO6976; + } + + /** + *

+ * Setter for the field standardISO6976. + *

+ * + * @param standardISO6976 the standardISO6976 to set + */ + public void setStandardISO6976(Standard_ISO6976 standardISO6976) { + this.standardISO6976 = standardISO6976; + } + + /** + *

+ * isBackCalculate. + *

+ * + * @return the backCalculate + */ + public boolean isBackCalculate() { + return backCalculate; + } + + /** + *

+ * Setter for the field backCalculate. + *

+ * + * @param backCalculate the backCalculate to set + */ + public void setBackCalculate(boolean backCalculate) { + this.backCalculate = backCalculate; + } + + /** + *

+ * Getter for the field thermoSystem. + *

+ * + * @return the thermoSystem + */ + public neqsim.thermo.system.SystemInterface getThermoSystem() { + return thermoSystem; + } + + /** + *

+ * Setter for the field thermoSystem. + *

+ * + * @param thermoSystem the thermoSystem to set + */ + public void setThermoSystem(neqsim.thermo.system.SystemInterface thermoSystem) { + this.thermoSystem = thermoSystem; + } + + /** + *

+ * isSetInitialTemperature. + *

+ * + * @return the setInitialTemperature + */ + public boolean isSetInitialTemperature() { + return setInitialTemperature; + } + + /** + *

+ * Getter for the field initialTemperature. + *

+ * + * @return the initialTemperature + */ + public double getInitialTemperature() { + return initialTemperature; + } + + /** + *

+ * Setter for the field initialTemperature. + *

+ * + * @param initialTemperature the initialTemperature to set + */ + public void setInitialTemperature(double initialTemperature) { + setInitialTemperature = true; + this.initialTemperature = initialTemperature; + } + + /** + *

+ * Setter for the field initialTemperature. + *

+ * + * @param setInitialTemperature the setInitialTemperature to set + */ + public void setInitialTemperature(boolean setInitialTemperature) { + this.setInitialTemperature = setInitialTemperature; + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/stirredCellSystem/StirredCellSystem.java b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/stirredCellSystem/StirredCellSystem.java index fbcc61469e..16145b5823 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/stirredCellSystem/StirredCellSystem.java +++ b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/stirredCellSystem/StirredCellSystem.java @@ -1,5 +1,6 @@ package neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.stirredCellSystem; +import java.util.UUID; import neqsim.thermo.system.SystemInterface; /** @@ -11,154 +12,158 @@ * @version $Id: $Id */ public class StirredCellSystem - extends neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.TwoPhaseFlowSystem { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for StirredCellSystem. - *

- */ - public StirredCellSystem() {} - - /** {@inheritDoc} */ - @Override - public void createSystem() { - flowLeg = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg[this.getNumberOfLegs()]; - - for (int i = 0; i < getNumberOfLegs(); i++) { - flowLeg[i] = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg(); - } - - flowNode = new neqsim.fluidMechanics.flowNode.FlowNodeInterface[totalNumberOfNodes]; - flowNode[0] = - new neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhaseStirredCellNode.StirredCellNode( - thermoSystem, equipmentGeometry[0]); - - flowNode[totalNumberOfNodes - 1] = flowNode[0].getNextNode(); - - super.createSystem(); - this.setNodes(); + extends neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.TwoPhaseFlowSystem { + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for StirredCellSystem. + *

+ */ + public StirredCellSystem() {} + + /** {@inheritDoc} */ + @Override + public void createSystem() { + flowLeg = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg[this.getNumberOfLegs()]; + + for (int i = 0; i < getNumberOfLegs(); i++) { + flowLeg[i] = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg(); } - /** {@inheritDoc} */ - @Override - public void init() { - for (int j = 0; j < getTotalNumberOfNodes(); j++) { - flowNode[j].init(); - } - - for (int j = 0; j < getTotalNumberOfNodes(); j++) { - for (int phase = 0; phase < 2; phase++) { - flowNode[j].setVelocityOut(phase, this.flowNode[j].getVelocity(phase)); - } - } - - for (int k = 1; k < getTotalNumberOfNodes(); k++) { - for (int phase = 0; phase < 2; phase++) { - this.flowNode[k].setVelocityIn(phase, this.flowNode[k - 1].getVelocityOut(phase)); - } - } - } + flowNode = new neqsim.fluidMechanics.flowNode.FlowNodeInterface[totalNumberOfNodes]; + flowNode[0] = + new neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhaseStirredCellNode.StirredCellNode( + thermoSystem, equipmentGeometry[0]); + + flowNode[totalNumberOfNodes - 1] = flowNode[0].getNextNode(); + + super.createSystem(); + this.setNodes(); + } - /** {@inheritDoc} */ - @Override - public void solveSteadyState(int solverType) { - flowSolver = - new neqsim.fluidMechanics.flowSolver.twoPhaseFlowSolver.stirredCellSolver.StirredCellSolver( - this, getSystemLength(), getTotalNumberOfNodes(), false); + /** {@inheritDoc} */ + @Override + public void init() { + for (int j = 0; j < getTotalNumberOfNodes(); j++) { + flowNode[j].init(); } - /** {@inheritDoc} */ - @Override - public void solveTransient(int solverType) { - getTimeSeries().init(this); - display = - new neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.twoPhaseFlowVisualization.twoPhasePipeFlowVisualization.TwoPhasePipeFlowVisualization( - this.getTotalNumberOfNodes(), getTimeSeries().getTime().length); - for (int i = 0; i < this.getTimeSeries().getTime().length; i++) { - getNode(0).setBulkSystem(this.getTimeSeries().getThermoSystem()[i]); - flowNode[0].initFlowCalc(); - flowNode[0].init(); - flowNode[0].setVelocityIn(this.flowNode[0].getVelocity()); - flowNode[getTotalNumberOfNodes() - 1] - .setVelocity(this.getTimeSeries().getOutletMolarFlowRates()[i]); - // System.out.println("vel: " + this.flowNode[0].getVelocity()); - // getSolver().setTimeStep(this.getTimeSeries().getTimeStep()[i]); - // System.out.println("time step: " + i + " " + - // this.getTimeSeries().getTimeStep()[i]); - System.out.println("time: " + i + " " + this.getTimeSeries().getTime()[i]); - flowSolver.solveTDMA(); - display.setNextData(this, this.getTimeSeries().getTime(i)); - } + for (int j = 0; j < getTotalNumberOfNodes(); j++) { + for (int phase = 0; phase < 2; phase++) { + flowNode[j].setVelocityOut(phase, this.flowNode[j].getVelocity(phase)); + } } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // Initierer et nyt rorsystem - neqsim.fluidMechanics.flowSystem.FlowSystemInterface pipe = new StirredCellSystem(); - - // Definerer termodyanmikken5 - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos(295.3, 5.0); - testSystem.addComponent("methane", 0.11152181, 0); - // testSystem.addComponent("ethane", 0.0011152181, 0); - testSystem.addComponent("water", 0.04962204876, 1); - // testSystem.addComponent("TEG", 0.4962204876, 1); - testSystem.setMixingRule(2); - // benytter klassiske blandingsregler - - pipe.setInletThermoSystem(testSystem); // setter termodyanmikken for rorsystemet - pipe.setNumberOfLegs(1); // deler inn roret i et gitt antall legger - pipe.setNumberOfNodesInLeg(10); // setter antall nodepunkter (beregningspunkter/grid) pr. - // leg - double[] height = {0, 0}; - double[] length = {0.0, 10.0}; - double[] outerTemperature = {278.0, 278.0}; - double[] outerHeatTransferCoef = {2.0, 2.0}; - double[] wallHeatTransferCoef = {2.0, 2.0}; - - pipe.setLegHeights(height); // setter inn hoyde for hver leg-ende - pipe.setLegPositions(length); // setter avstand til hver leg-ende - pipe.setLegOuterTemperatures(outerTemperature); - pipe.setLegOuterHeatTransferCoefficients(outerHeatTransferCoef); - pipe.setLegWallHeatTransferCoefficients(wallHeatTransferCoef); - - neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface[] pipeGemometry = - new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData[6]; // Deffinerer - // geometrien - // for - // roret - double[] pipeDiameter = {0.02588, 0.02588}; - for (int i = 0; i < pipeDiameter.length; i++) { - pipeGemometry[i] = - new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData(pipeDiameter[i]); - } - pipe.setEquipmentGeometry(pipeGemometry); // setter inn rorgeometrien for hver leg - // utforer bergninger - pipe.createSystem(); - pipe.init(); - - double[] times = {0, 10}; - pipe.getTimeSeries().setTimes(times); - SystemInterface[] systems = {testSystem, testSystem, testSystem}; - pipe.getTimeSeries().setInletThermoSystems(systems); - pipe.getTimeSeries().setNumberOfTimeStepsInInterval(5); - pipe.solveSteadyState(2); - pipe.solveTransient(2); - System.out.println("disp"); - pipe.getNode(0).display(); - // pipe.solveTransient(2); - // pipe.solveTransient(2); - - pipe.getNode(0).display(); - pipe.getNode(10).display(); - // pipe.getDisplay().createNetCdfFile("c:/temp5.nc"); + for (int k = 1; k < getTotalNumberOfNodes(); k++) { + for (int phase = 0; phase < 2; phase++) { + this.flowNode[k].setVelocityIn(phase, this.flowNode[k - 1].getVelocityOut(phase)); + } + } + } + + /** {@inheritDoc} */ + @Override + public void solveSteadyState(int type, UUID id) { + // TODO: double[] times = {0.0}; ? + flowSolver = + new neqsim.fluidMechanics.flowSolver.twoPhaseFlowSolver.stirredCellSolver.StirredCellSolver( + this, getSystemLength(), getTotalNumberOfNodes(), false); + calcIdentifier = id; + // TODO: getTimeSeries().init(this); + } + + /** {@inheritDoc} */ + @Override + public void solveTransient(int solverType, UUID id) { + getTimeSeries().init(this); + display = + new neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.twoPhaseFlowVisualization.twoPhasePipeFlowVisualization.TwoPhasePipeFlowVisualization( + this.getTotalNumberOfNodes(), getTimeSeries().getTime().length); + for (int i = 0; i < this.getTimeSeries().getTime().length; i++) { + getNode(0).setBulkSystem(this.getTimeSeries().getThermoSystem()[i]); + flowNode[0].initFlowCalc(); + flowNode[0].init(); + flowNode[0].setVelocityIn(this.flowNode[0].getVelocity()); + flowNode[getTotalNumberOfNodes() - 1] + .setVelocity(this.getTimeSeries().getOutletMolarFlowRates()[i]); + // System.out.println("vel: " + this.flowNode[0].getVelocity()); + // getSolver().setTimeStep(this.getTimeSeries().getTimeStep()[i]); + // System.out.println("time step: " + i + " " + + // this.getTimeSeries().getTimeStep()[i]); + System.out.println("time: " + i + " " + this.getTimeSeries().getTime()[i]); + flowSolver.solveTDMA(); + display.setNextData(this, this.getTimeSeries().getTime(i)); + } + calcIdentifier = id; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // Initierer et nyt rorsystem + neqsim.fluidMechanics.flowSystem.FlowSystemInterface pipe = new StirredCellSystem(); + + // Definerer termodyanmikken5 + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos(295.3, 5.0); + testSystem.addComponent("methane", 0.11152181, 0); + // testSystem.addComponent("ethane", 0.0011152181, 0); + testSystem.addComponent("water", 0.04962204876, 1); + // testSystem.addComponent("TEG", 0.4962204876, 1); + testSystem.setMixingRule(2); + // benytter klassiske blandingsregler + + // setter termodyanmikken for rorsystemet + pipe.setInletThermoSystem(testSystem); + // deler inn roret i et gitt antall legger + pipe.setNumberOfLegs(1); + // setter antall nodepunkter (beregningspunkter/grid) pr. // leg + pipe.setNumberOfNodesInLeg(10); + + double[] height = {0, 0}; + double[] length = {0.0, 10.0}; + double[] outerTemperature = {278.0, 278.0}; + double[] outerHeatTransferCoef = {2.0, 2.0}; + double[] wallHeatTransferCoef = {2.0, 2.0}; + + pipe.setLegHeights(height); // setter inn hoyde for hver leg-ende + pipe.setLegPositions(length); // setter avstand til hver leg-ende + pipe.setLegOuterTemperatures(outerTemperature); + pipe.setLegOuterHeatTransferCoefficients(outerHeatTransferCoef); + pipe.setLegWallHeatTransferCoefficients(wallHeatTransferCoef); + + // Deffinerer geometrien for roret + neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface[] pipeGemometry = + new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData[6]; + double[] pipeDiameter = {0.02588, 0.02588}; + for (int i = 0; i < pipeDiameter.length; i++) { + pipeGemometry[i] = + new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData(pipeDiameter[i]); } + pipe.setEquipmentGeometry(pipeGemometry); // setter inn rorgeometrien for hver leg + // utforer beregninger + pipe.createSystem(); + pipe.init(); + + double[] times = {0, 10}; + pipe.getTimeSeries().setTimes(times); + SystemInterface[] systems = {testSystem, testSystem, testSystem}; + pipe.getTimeSeries().setInletThermoSystems(systems); + pipe.getTimeSeries().setNumberOfTimeStepsInInterval(5); + pipe.solveSteadyState(2); + pipe.solveTransient(2); + System.out.println("disp"); + pipe.getNode(0).display(); + // pipe.solveTransient(2); + // pipe.solveTransient(2); + + pipe.getNode(0).display(); + pipe.getNode(10).display(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhasePipeFlowSystem/TwoPhasePipeFlowSystem.java b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhasePipeFlowSystem/TwoPhasePipeFlowSystem.java index ffebbde898..8463d01c1a 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhasePipeFlowSystem/TwoPhasePipeFlowSystem.java +++ b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhasePipeFlowSystem/TwoPhasePipeFlowSystem.java @@ -1,166 +1,175 @@ package neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.twoPhasePipeFlowSystem; +import java.util.UUID; + /** - *

TwoPhasePipeFlowSystem class.

+ *

+ * TwoPhasePipeFlowSystem class. + *

* * @author asmund * @version $Id: $Id */ public class TwoPhasePipeFlowSystem - extends neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.TwoPhaseFlowSystem { - private static final long serialVersionUID = 1000; - - /** - *

Constructor for TwoPhasePipeFlowSystem.

- */ - public TwoPhasePipeFlowSystem() {} - - /** {@inheritDoc} */ - @Override - public void createSystem() { - // thermoSystem.init(1); - flowLeg = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg[this.getNumberOfLegs()]; - - for (int i = 0; i < getNumberOfLegs(); i++) { - flowLeg[i] = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg(); - } - - flowNode = new neqsim.fluidMechanics.flowNode.FlowNodeInterface[totalNumberOfNodes]; - if (initFlowPattern.equals("stratified")) { - flowNode[0] = - new neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.StratifiedFlowNode( - thermoSystem, equipmentGeometry[0]); - } else if (initFlowPattern.equals("annular")) { - flowNode[0] = - new neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.AnnularFlow( - thermoSystem, equipmentGeometry[0]); - } else { - flowNode[0] = - new neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.StratifiedFlowNode( - thermoSystem, equipmentGeometry[0]); - } - flowNode[totalNumberOfNodes - 1] = flowNode[0].getNextNode(); - - super.createSystem(); - this.setNodes(); + extends neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.TwoPhaseFlowSystem { + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for TwoPhasePipeFlowSystem. + *

+ */ + public TwoPhasePipeFlowSystem() {} + + /** {@inheritDoc} */ + @Override + public void createSystem() { + // thermoSystem.init(1); + flowLeg = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg[this.getNumberOfLegs()]; + + for (int i = 0; i < getNumberOfLegs(); i++) { + flowLeg[i] = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg(); } - /** {@inheritDoc} */ - @Override - public void init() { - for (int j = 0; j < getTotalNumberOfNodes(); j++) { - flowNode[j].initFlowCalc(); - flowNode[j].init(); - } - - for (int j = 0; j < getTotalNumberOfNodes(); j++) { - for (int phase = 0; phase < 2; phase++) { - flowNode[j].setVelocityOut(phase, this.flowNode[j].getVelocity(phase)); - } - } - - for (int k = 1; k < getTotalNumberOfNodes(); k++) { - for (int phase = 0; phase < 2; phase++) { - this.flowNode[k].setVelocityIn(phase, this.flowNode[k - 1].getVelocityOut(phase)); - } - } + flowNode = new neqsim.fluidMechanics.flowNode.FlowNodeInterface[totalNumberOfNodes]; + if (initFlowPattern.equals("stratified")) { + flowNode[0] = + new neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.StratifiedFlowNode( + thermoSystem, equipmentGeometry[0]); + } else if (initFlowPattern.equals("annular")) { + flowNode[0] = + new neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.AnnularFlow( + thermoSystem, equipmentGeometry[0]); + } else { + flowNode[0] = + new neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.StratifiedFlowNode( + thermoSystem, equipmentGeometry[0]); } - - /** {@inheritDoc} */ - @Override - public void solveSteadyState(int solverType) { - double[] times = {0.0}; - display = - new neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.twoPhaseFlowVisualization.twoPhasePipeFlowVisualization.TwoPhasePipeFlowVisualization( - this.getTotalNumberOfNodes(), 1); - getTimeSeries().setTimes(times); - neqsim.thermo.system.SystemInterface[] systems = {flowNode[0].getBulkSystem()}; - getTimeSeries().setInletThermoSystems(systems); - getTimeSeries().setNumberOfTimeStepsInInterval(1); - double[] outletFlowRates = {0.0, 0.0}; - getTimeSeries().setOutletMolarFlowRate(outletFlowRates); - - flowSolver = - new neqsim.fluidMechanics.flowSolver.twoPhaseFlowSolver.twoPhasePipeFlowSolver.TwoPhaseFixedStaggeredGridSolver( - this, getSystemLength(), this.getTotalNumberOfNodes(), false); - flowSolver.setSolverType(solverType); - flowSolver.solveTDMA(); - - getTimeSeries().init(this); - display.setNextData(this); + flowNode[totalNumberOfNodes - 1] = flowNode[0].getNextNode(); + + super.createSystem(); + this.setNodes(); + } + + /** {@inheritDoc} */ + @Override + public void init() { + for (int j = 0; j < getTotalNumberOfNodes(); j++) { + flowNode[j].initFlowCalc(); + flowNode[j].init(); } - /** {@inheritDoc} */ - @Override - public void solveTransient(int type) { - // pipeSolver pipeSolve = new pipeSolver(this, getSystemLength(), - // getTotalNumberOfNodes()); - // pipeSolve.solveTDMA(); + for (int j = 0; j < getTotalNumberOfNodes(); j++) { + for (int phase = 0; phase < 2; phase++) { + flowNode[j].setVelocityOut(phase, this.flowNode[j].getVelocity(phase)); + } } - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - // Initierer et nyt rorsystem - neqsim.fluidMechanics.flowSystem.FlowSystemInterface pipe = new TwoPhasePipeFlowSystem(); - - // Definerer termodyanmikken5 - initierer et system som benytter SRK tilstandsligning - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos(295.3, 5.0); - - // med trykk 305.3 K og 125 bar - // gjor termodynamiske Flash rutiner tilgjengelige - neqsim.thermodynamicOperations.ThermodynamicOperations testOps = - new neqsim.thermodynamicOperations.ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 0.11152181, 0); - // testSystem.addComponent("ethane", 0.0011152181, 0); - testSystem.addComponent("water", 0.04962204876, 1); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // benytter klassiske blandingsregler - - pipe.setInletThermoSystem(testSystem); // setter termodyanmikken for rorsystemet - pipe.setNumberOfLegs(5); // deler inn roret i et gitt antall legger - pipe.setNumberOfNodesInLeg(10); // setter antall nodepunkter (beregningspunkter/grid) pr. - // leg - double[] height = {0, 0, 0, 0, 0, 0}; - double[] length = {0.0, 1.7, 3.5, 5.0, 7.5, 10.4}; - double[] outerTemperature = {278.0, 278.0, 278.0, 278.0, 278.0, 278.0};// , 278.0, 275.0, - // 275.0, 275.0, - // 275.0}; - double[] roughness = {1.0e-5, 1.0e-5, 1.0e-5, 1.0e-5, 1.0e-5, 1.0e-5}; - double[] outHeatCoef = {5.0, 5.0, 5.0, 5.0, 5.0, 5.0}; - double[] wallHeacCoef = {15.0, 15.0, 15.0, 15.0, 15.0, 15.0}; - - pipe.setLegHeights(height); // setter inn hoyde for hver leg-ende - pipe.setLegPositions(length); // setter avstand til hver leg-ende - pipe.setLegOuterTemperatures(outerTemperature); - pipe.setLegWallHeatTransferCoefficients(wallHeacCoef); - pipe.setLegOuterHeatTransferCoefficients(outHeatCoef); - - // Definerer geometrien for roret - neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface[] pipeGemometry = - new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData[6]; - double[] pipeDiameter = {0.02588, 0.02588, 0.02588, 0.02588, 0.02588, 0.02588}; - for (int i = 0; i < pipeDiameter.length; i++) { - pipeGemometry[i] = - new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData(pipeDiameter[i]); - } - pipe.setEquipmentGeometry(pipeGemometry); // setter inn rorgeometrien for hver leg - // utforer bergninger - pipe.createSystem(); - pipe.init(); - - pipe.solveSteadyState(2); - pipe.getNode(30).display(); - // pipe.calcFluxes(); - // pipe.getDisplay().displayResult("temperature"); - // pipe.getDisplay().createNetCdfFile("c:/temp5.nc"); - // pipe.displayResults(); - // testOps.TPflash(); - // testOps.displayResult(); + for (int k = 1; k < getTotalNumberOfNodes(); k++) { + for (int phase = 0; phase < 2; phase++) { + this.flowNode[k].setVelocityIn(phase, this.flowNode[k - 1].getVelocityOut(phase)); + } + } + } + + /** {@inheritDoc} */ + @Override + public void solveSteadyState(int type, UUID id) { + double[] times = {0.0}; + display = + new neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.twoPhaseFlowVisualization.twoPhasePipeFlowVisualization.TwoPhasePipeFlowVisualization( + this.getTotalNumberOfNodes(), 1); + getTimeSeries().setTimes(times); + neqsim.thermo.system.SystemInterface[] systems = {flowNode[0].getBulkSystem()}; + getTimeSeries().setInletThermoSystems(systems); + getTimeSeries().setNumberOfTimeStepsInInterval(1); + double[] outletFlowRates = {0.0, 0.0}; + getTimeSeries().setOutletMolarFlowRate(outletFlowRates); + + flowSolver = + new neqsim.fluidMechanics.flowSolver.twoPhaseFlowSolver.twoPhasePipeFlowSolver.TwoPhaseFixedStaggeredGridSolver( + this, getSystemLength(), this.getTotalNumberOfNodes(), false); + flowSolver.setSolverType(type); + flowSolver.solveTDMA(); + calcIdentifier = id; + + getTimeSeries().init(this); + display.setNextData(this); + } + + /** {@inheritDoc} */ + @Override + public void solveTransient(int type, UUID id) { + // pipeSolver pipeSolve = new pipeSolver(this, getSystemLength(), + // getTotalNumberOfNodes()); + // pipeSolve.solveTDMA(); + calcIdentifier = id; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + // Initierer et nyt rorsystem + neqsim.fluidMechanics.flowSystem.FlowSystemInterface pipe = new TwoPhasePipeFlowSystem(); + + // Definerer termodyanmikken5 - initierer et system som benytter SRK tilstandsligning + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos(295.3, 5.0); + + // med trykk 305.3 K og 125 bar - // gjor termodynamiske Flash rutiner tilgjengelige + neqsim.thermodynamicOperations.ThermodynamicOperations testOps = + new neqsim.thermodynamicOperations.ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 0.11152181, 0); + // testSystem.addComponent("ethane", 0.0011152181, 0); + testSystem.addComponent("water", 0.04962204876, 1); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + // benytter klassiske blandingsregler + + pipe.setInletThermoSystem(testSystem); // setter termodyanmikken for rorsystemet + pipe.setNumberOfLegs(5); // deler inn roret i et gitt antall legger + pipe.setNumberOfNodesInLeg(10); // setter antall nodepunkter (beregningspunkter/grid) pr. + // leg + double[] height = {0, 0, 0, 0, 0, 0}; + double[] length = {0.0, 1.7, 3.5, 5.0, 7.5, 10.4}; + double[] outerTemperature = {278.0, 278.0, 278.0, 278.0, 278.0, 278.0}; // , 278.0, 275.0, + // 275.0, 275.0, + // 275.0}; + double[] roughness = {1.0e-5, 1.0e-5, 1.0e-5, 1.0e-5, 1.0e-5, 1.0e-5}; + double[] outHeatCoef = {5.0, 5.0, 5.0, 5.0, 5.0, 5.0}; + double[] wallHeacCoef = {15.0, 15.0, 15.0, 15.0, 15.0, 15.0}; + + pipe.setLegHeights(height); // setter inn hoyde for hver leg-ende + pipe.setLegPositions(length); // setter avstand til hver leg-ende + pipe.setLegOuterTemperatures(outerTemperature); + pipe.setLegWallHeatTransferCoefficients(wallHeacCoef); + pipe.setLegOuterHeatTransferCoefficients(outHeatCoef); + + // Definerer geometrien for roret + neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface[] pipeGemometry = + new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData[6]; + double[] pipeDiameter = {0.02588, 0.02588, 0.02588, 0.02588, 0.02588, 0.02588}; + for (int i = 0; i < pipeDiameter.length; i++) { + pipeGemometry[i] = + new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData(pipeDiameter[i]); } + pipe.setEquipmentGeometry(pipeGemometry); // setter inn rorgeometrien for hver leg + // utforer beregninger + pipe.createSystem(); + pipe.init(); + + pipe.solveSteadyState(2); + pipe.getNode(30).display(); + // pipe.calcFluxes(); + // pipe.getDisplay().displayResult("temperature"); + // pipe.displayResults(); + // testOps.TPflash(); + // testOps.displayResult(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhasePipeFlowSystem/TwoPhasePipeFlowSystemReac.java b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhasePipeFlowSystem/TwoPhasePipeFlowSystemReac.java index ac541a3cd2..31bcc82bb7 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhasePipeFlowSystem/TwoPhasePipeFlowSystemReac.java +++ b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhasePipeFlowSystem/TwoPhasePipeFlowSystemReac.java @@ -13,84 +13,81 @@ * @version $Id: $Id */ public class TwoPhasePipeFlowSystemReac extends TwoPhasePipeFlowSystem { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for TwoPhasePipeFlowSystemReac. - *

- */ - public TwoPhasePipeFlowSystemReac() {} + /** + *

+ * Constructor for TwoPhasePipeFlowSystemReac. + *

+ */ + public TwoPhasePipeFlowSystemReac() {} - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // Initierer et nyt rorsystem - neqsim.fluidMechanics.flowSystem.FlowSystemInterface pipe = - new TwoPhasePipeFlowSystemReac(); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // Initierer et nyt rorsystem + neqsim.fluidMechanics.flowSystem.FlowSystemInterface pipe = new TwoPhasePipeFlowSystemReac(); - SystemInterface testSystem = new SystemFurstElectrolyteEos(295.3, 50.01325); - testSystem.addComponent("methane", 50.11152187, "Nlitre/min", 0); - testSystem.addComponent("CO2", 50.11152181, "Nlitre/min", 0); - testSystem.addComponent("water", 0.5662204876, "kg/min", 1); - testSystem.addComponent("MDEA", 0.5662204876, "kg/min", 1); + SystemInterface testSystem = new SystemFurstElectrolyteEos(295.3, 50.01325); + testSystem.addComponent("methane", 50.11152187, "Nlitre/min", 0); + testSystem.addComponent("CO2", 50.11152181, "Nlitre/min", 0); + testSystem.addComponent("water", 0.5662204876, "kg/min", 1); + testSystem.addComponent("MDEA", 0.5662204876, "kg/min", 1); - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.setPhysicalPropertyModel(3); - // testOps.TPflash(); - // testSystem.display(); + testSystem.chemicalReactionInit(); + testSystem.createDatabase(true); + testSystem.setMixingRule(4); + testSystem.setPhysicalPropertyModel(3); + // testOps.TPflash(); + // testSystem.display(); - // testSystem.setNumericDerivatives(true); - testSystem.initPhysicalProperties(); + // testSystem.setNumericDerivatives(true); + testSystem.initPhysicalProperties(); - pipe.setInletThermoSystem(testSystem); // setter termodyanmikken for rorsystemet - pipe.setNumberOfLegs(3); // deler inn roret i et gitt antall legger - pipe.setNumberOfNodesInLeg(10); // setter antall nodepunkter (beregningspunkter/grid) pr. - // leg + pipe.setInletThermoSystem(testSystem); // setter termodyanmikken for rorsystemet + pipe.setNumberOfLegs(3); // deler inn roret i et gitt antall legger + pipe.setNumberOfNodesInLeg(10); // setter antall nodepunkter (beregningspunkter/grid) pr. + // leg - double[] height = {0, 0, 0, 0, 0, 0}; - double[] length = {0.0, 0.03, 0.07, 0.13, 2.5, 3.7}; - double[] outerTemperature = - {278.0, 278.0, 278.0, 278.0, 278.0, 278.0, 278.0, 275.0, 275.0, 275.0, 275.0}; + double[] height = {0, 0, 0, 0, 0, 0}; + double[] length = {0.0, 0.03, 0.07, 0.13, 2.5, 3.7}; + double[] outerTemperature = + {278.0, 278.0, 278.0, 278.0, 278.0, 278.0, 278.0, 275.0, 275.0, 275.0, 275.0}; - pipe.setLegHeights(height); // setter inn hoyde for hver leg-ende - pipe.setLegPositions(length); // setter avstand til hver leg-ende - pipe.setLegOuterTemperatures(outerTemperature); + pipe.setLegHeights(height); // setter inn hoyde for hver leg-ende + pipe.setLegPositions(length); // setter avstand til hver leg-ende + pipe.setLegOuterTemperatures(outerTemperature); - neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface[] pipeGemometry = - new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData[5]; // Deffinerer - // geometrien - // for - // roret - double[] pipeDiameter = {0.025, 0.025, 0.025, 0.025, 0.025}; - for (int i = 0; i < pipeDiameter.length; i++) { - pipeGemometry[i] = - new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData(pipeDiameter[i]); - } - pipe.setEquipmentGeometry(pipeGemometry); // setter inn rorgeometrien for hver leg - // utforer bergninger - pipe.createSystem(); - pipe.setEquilibriumMassTransfer(false); - pipe.setEquilibriumHeatTransfer(false); - pipe.init(); + neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface[] pipeGemometry = + new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData[5]; // Deffinerer + // geometrien + // for + // roret + double[] pipeDiameter = {0.025, 0.025, 0.025, 0.025, 0.025}; + for (int i = 0; i < pipeDiameter.length; i++) { + pipeGemometry[i] = + new neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData(pipeDiameter[i]); + } + pipe.setEquipmentGeometry(pipeGemometry); // setter inn rorgeometrien for hver leg + // utforer beregninger + pipe.createSystem(); + pipe.setEquilibriumMassTransfer(false); + pipe.setEquilibriumHeatTransfer(false); + pipe.init(); - pipe.solveSteadyState(2); - ThermodynamicOperations testOps = - new ThermodynamicOperations(pipe.getNode(2).getBulkSystem()); - testOps.TPflash(); + pipe.solveSteadyState(2); + ThermodynamicOperations testOps = new ThermodynamicOperations(pipe.getNode(2).getBulkSystem()); + testOps.TPflash(); - // pipe.calcFluxes(); - // pipe.print(); - pipe.getDisplay().createNetCdfFile("c:/temp5.nc"); - // pipe.displayResult(); - // testOps.TPflash(); - // testOps.displayResult(); - } + // pipe.calcFluxes(); + // pipe.print(); + // pipe.displayResult(); + // testOps.TPflash(); + // testOps.displayResult(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhaseReactorFlowSystem/TwoPhaseReactorFlowSystem.java b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhaseReactorFlowSystem/TwoPhaseReactorFlowSystem.java index e405fa2505..05fa5eee90 100644 --- a/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhaseReactorFlowSystem/TwoPhaseReactorFlowSystem.java +++ b/src/main/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/twoPhaseReactorFlowSystem/TwoPhaseReactorFlowSystem.java @@ -1,5 +1,6 @@ package neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.twoPhaseReactorFlowSystem; +import java.util.UUID; import neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.twoPhaseFlowVisualization.twoPhasePipeFlowVisualization.TwoPhasePipeFlowVisualization; /** @@ -11,157 +12,157 @@ * @version $Id: $Id */ public class TwoPhaseReactorFlowSystem - extends neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.TwoPhaseFlowSystem { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for TwoPhaseReactorFlowSystem. - *

- */ - public TwoPhaseReactorFlowSystem() {} - - /** {@inheritDoc} */ - @Override - public void createSystem() { - // thermoSystem.init(1); - flowLeg = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg[this.getNumberOfLegs()]; - - for (int i = 0; i < getNumberOfLegs(); i++) { - flowLeg[i] = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg(); - } - - flowNode = new neqsim.fluidMechanics.flowNode.FlowNodeInterface[totalNumberOfNodes]; - flowNode[0] = - new neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.StratifiedFlowNode( - thermoSystem, equipmentGeometry[0]); - flowNode[totalNumberOfNodes - 1] = flowNode[0].getNextNode(); - - super.createSystem(); - this.setNodes(); + extends neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.TwoPhaseFlowSystem { + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for TwoPhaseReactorFlowSystem. + *

+ */ + public TwoPhaseReactorFlowSystem() {} + + /** {@inheritDoc} */ + @Override + public void createSystem() { + // thermoSystem.init(1); + flowLeg = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg[this.getNumberOfLegs()]; + + for (int i = 0; i < getNumberOfLegs(); i++) { + flowLeg[i] = new neqsim.fluidMechanics.flowLeg.pipeLeg.PipeLeg(); } - /** {@inheritDoc} */ - @Override - public void init() { - for (int j = 0; j < getTotalNumberOfNodes(); j++) { - flowNode[j].setInterphaseModelType(1); - flowNode[j].getGeometry();// setPackingType() - flowNode[j].initFlowCalc(); - flowNode[j].init(); - } - - for (int j = 0; j < getTotalNumberOfNodes(); j++) { - for (int phase = 0; phase < 2; phase++) { - flowNode[j].setVelocityOut(phase, this.flowNode[j].getVelocity(phase)); - } - } - - for (int k = 1; k < getTotalNumberOfNodes(); k++) { - for (int phase = 0; phase < 2; phase++) { - this.flowNode[k].setVelocityIn(phase, this.flowNode[k - 1].getVelocityOut(phase)); - } - } + flowNode = new neqsim.fluidMechanics.flowNode.FlowNodeInterface[totalNumberOfNodes]; + flowNode[0] = + new neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.StratifiedFlowNode( + thermoSystem, equipmentGeometry[0]); + flowNode[totalNumberOfNodes - 1] = flowNode[0].getNextNode(); + + super.createSystem(); + this.setNodes(); + } + + /** {@inheritDoc} */ + @Override + public void init() { + for (int j = 0; j < getTotalNumberOfNodes(); j++) { + flowNode[j].setInterphaseModelType(1); + flowNode[j].getGeometry(); // setPackingType() + flowNode[j].initFlowCalc(); + flowNode[j].init(); } - /** {@inheritDoc} */ - @Override - public void solveSteadyState(int solverType) { - double[] times = {0.0}; - display = new TwoPhasePipeFlowVisualization(this.getTotalNumberOfNodes(), 1); - getTimeSeries().setTimes(times); - neqsim.thermo.system.SystemInterface[] systems = {flowNode[0].getBulkSystem()}; - getTimeSeries().setInletThermoSystems(systems); - getTimeSeries().setNumberOfTimeStepsInInterval(1); - double[] outletFlowRates = {0.0, 0.0}; - getTimeSeries().setOutletMolarFlowRate(outletFlowRates); - - flowSolver = - new neqsim.fluidMechanics.flowSolver.twoPhaseFlowSolver.twoPhasePipeFlowSolver.TwoPhaseFixedStaggeredGridSolver( - this, getSystemLength(), this.getTotalNumberOfNodes(), false); - flowSolver.setSolverType(solverType); - flowSolver.solveTDMA(); - getTimeSeries().init(this); - display.setNextData(this); + for (int j = 0; j < getTotalNumberOfNodes(); j++) { + for (int phase = 0; phase < 2; phase++) { + flowNode[j].setVelocityOut(phase, this.flowNode[j].getVelocity(phase)); + } } - /** {@inheritDoc} */ - @Override - public void solveTransient(int type) { - // pipeSolver pipeSolve = new pipeSolver(this, getSystemLength(), - // getTotalNumberOfNodes()); - // pipeSolve.solveTDMA(); + for (int k = 1; k < getTotalNumberOfNodes(); k++) { + for (int phase = 0; phase < 2; phase++) { + this.flowNode[k].setVelocityIn(phase, this.flowNode[k - 1].getVelocityOut(phase)); + } } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - // Initierer et nyt rorsystem - neqsim.fluidMechanics.flowSystem.FlowSystemInterface pipe = new TwoPhaseReactorFlowSystem(); - - // Definerer termodyanmikken5 - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos(295.3, 5.0); // initierer - // et - // system - // som - // benytter - // SRK - // tilstandsligning - // med trykk 305.3 K og 125 bar - neqsim.thermodynamicOperations.ThermodynamicOperations testOps = - new neqsim.thermodynamicOperations.ThermodynamicOperations(testSystem); // gjor - // termodyanmiske - // Flash - // rutiner - // tilgjengelige - testSystem.addComponent("methane", 0.11152181, 0); - // testSystem.addComponent("ethane", 0.0011152181, 0); - testSystem.addComponent("water", 0.04962204876, 1); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // benytter klassiske blandingsregler - - pipe.setInletThermoSystem(testSystem); // setter termodyanmikken for rorsystemet - pipe.setNumberOfLegs(5); // deler inn roret i et gitt antall legger - pipe.setNumberOfNodesInLeg(100); // setter antall nodepunkter (beregningspunkter/grid) pr. - // leg - double[] height = {0, 0, 0, 0, 0, 0}; - double[] length = {0.0, 1.7, 3.5, 5.0, 7.5, 10.4}; - double[] outerTemperature = - {278.0, 278.0, 278.0, 278.0, 278.0, 278.0, 278.0, 275.0, 275.0, 275.0, 275.0}; - - pipe.setLegHeights(height); // setter inn hoyde for hver leg-ende - pipe.setLegPositions(length); // setter avstand til hver leg-ende - pipe.setLegOuterTemperatures(outerTemperature); - - neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface[] pipeGemometry = - new neqsim.fluidMechanics.geometryDefinitions.reactor.ReactorData[5]; // Deffinerer - // geometrien - // for - // roret - double[] pipeDiameter = {0.02588, 0.02588, 0.02588, 0.02588, 0.02588}; - for (int i = 0; i < pipeDiameter.length; i++) { - pipeGemometry[i] = new neqsim.fluidMechanics.geometryDefinitions.reactor.ReactorData( - pipeDiameter[i], 1); - } - pipe.setEquipmentGeometry(pipeGemometry); // setter inn rorgeometrien for hver leg - // utforer bergninger - pipe.createSystem(); - pipe.init(); - - pipe.solveSteadyState(2); - // pipe.calcFluxes(); - // pipe.getDisplay().displayResult("temperature"); - pipe.getDisplay().createNetCdfFile("c:/temp5.nc"); - // pipe.displayResults(); - // testOps.TPflash(); - // testOps.displayResult(); + } + + /** {@inheritDoc} */ + @Override + public void solveSteadyState(int type, UUID id) { + double[] times = {0.0}; + display = new TwoPhasePipeFlowVisualization(this.getTotalNumberOfNodes(), 1); + getTimeSeries().setTimes(times); + neqsim.thermo.system.SystemInterface[] systems = {flowNode[0].getBulkSystem()}; + getTimeSeries().setInletThermoSystems(systems); + getTimeSeries().setNumberOfTimeStepsInInterval(1); + double[] outletFlowRates = {0.0, 0.0}; + getTimeSeries().setOutletMolarFlowRate(outletFlowRates); + + flowSolver = + new neqsim.fluidMechanics.flowSolver.twoPhaseFlowSolver.twoPhasePipeFlowSolver.TwoPhaseFixedStaggeredGridSolver( + this, getSystemLength(), this.getTotalNumberOfNodes(), false); + flowSolver.setSolverType(type); + flowSolver.solveTDMA(); + getTimeSeries().init(this); + display.setNextData(this); + } + + /** {@inheritDoc} */ + @Override + public void solveTransient(int type, UUID id) { + // pipeSolver pipeSolve = new pipeSolver(this, getSystemLength(), + // getTotalNumberOfNodes()); + // pipeSolve.solveTDMA(); + calcIdentifier = id; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + // Initierer et nyt rorsystem + neqsim.fluidMechanics.flowSystem.FlowSystemInterface pipe = new TwoPhaseReactorFlowSystem(); + + // Definerer termodyanmikken5 + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos(295.3, 5.0); // initierer + // et + // system + // som + // benytter + // SRK + // tilstandsligning + // med trykk 305.3 K og 125 bar + neqsim.thermodynamicOperations.ThermodynamicOperations testOps = + new neqsim.thermodynamicOperations.ThermodynamicOperations(testSystem); // gjor + // termodyanmiske + // Flash + // rutiner + // tilgjengelige + testSystem.addComponent("methane", 0.11152181, 0); + // testSystem.addComponent("ethane", 0.0011152181, 0); + testSystem.addComponent("water", 0.04962204876, 1); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + // benytter klassiske blandingsregler + + pipe.setInletThermoSystem(testSystem); // setter termodyanmikken for rorsystemet + pipe.setNumberOfLegs(5); // deler inn roret i et gitt antall legger + pipe.setNumberOfNodesInLeg(100); // setter antall nodepunkter (beregningspunkter/grid) pr. + // leg + double[] height = {0, 0, 0, 0, 0, 0}; + double[] length = {0.0, 1.7, 3.5, 5.0, 7.5, 10.4}; + double[] outerTemperature = + {278.0, 278.0, 278.0, 278.0, 278.0, 278.0, 278.0, 275.0, 275.0, 275.0, 275.0}; + + pipe.setLegHeights(height); // setter inn hoyde for hver leg-ende + pipe.setLegPositions(length); // setter avstand til hver leg-ende + pipe.setLegOuterTemperatures(outerTemperature); + + neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface[] pipeGemometry = + new neqsim.fluidMechanics.geometryDefinitions.reactor.ReactorData[5]; // Deffinerer + // geometrien + // for + // roret + double[] pipeDiameter = {0.02588, 0.02588, 0.02588, 0.02588, 0.02588}; + for (int i = 0; i < pipeDiameter.length; i++) { + pipeGemometry[i] = + new neqsim.fluidMechanics.geometryDefinitions.reactor.ReactorData(pipeDiameter[i], 1); } + pipe.setEquipmentGeometry(pipeGemometry); // setter inn rorgeometrien for hver leg + // utforer beregninger + pipe.createSystem(); + pipe.init(); + + pipe.solveSteadyState(2); + // pipe.calcFluxes(); + // pipe.getDisplay().displayResult("temperature"); + // pipe.displayResults(); + // testOps.TPflash(); + // testOps.displayResult(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/GeometryDefinition.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/GeometryDefinition.java index 8bba40dd37..87463d28f3 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/GeometryDefinition.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/GeometryDefinition.java @@ -3,6 +3,7 @@ * * Created on 10. desember 2000, 18:47 */ + package neqsim.fluidMechanics.geometryDefinitions; import neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PackingInterface; @@ -19,222 +20,225 @@ * @version $Id: $Id */ public abstract class GeometryDefinition - implements GeometryDefinitionInterface, neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - - /** {@inheritDoc} */ - @Override - public SurroundingEnvironment getSurroundingEnvironment() { - return surroundingEnvironment; - } - - /** {@inheritDoc} */ - @Override - public void setSurroundingEnvironment(SurroundingEnvironment surroundingEnvironment) { - this.surroundingEnvironment = surroundingEnvironment; - } - - /** - *

- * Getter for the field wall. - *

- * - * @return the wall - */ - public Wall getWall() { - return wall; - } - - /** - *

- * Setter for the field wall. - *

- * - * @param wall the wall to set - */ - public void setWall(Wall wall) { - this.wall = wall; - } - - double wallHeatTransferCoefficient = 20.0; - private double innerWallTemperature = 276.5; - protected PackingInterface packing = null; - - public double diameter = 0, radius = 0, innerSurfaceRoughness = 0.000005, nodeLength = 0, - area = 0, relativeRoughnes = 0; - public double[] layerConductivity, layerThickness; - - public Wall wall = new Wall(); - - private SurroundingEnvironment surroundingEnvironment = new SurroundingEnvironmentBaseClass(); - - /** - * * - *

- * Constructor for GeometryDefinition. - *

- */ - public GeometryDefinition() {} - - /** - *

- * Constructor for GeometryDefinition. - *

- * - * @param diameter a double - */ - public GeometryDefinition(double diameter) { - this.diameter = diameter; - this.radius = diameter / 2.0; - this.area = pi * Math.pow(radius, 2); - } - - /** - *

- * Constructor for GeometryDefinition. - *

- * - * @param diameter a double - * @param roughness a double - */ - public GeometryDefinition(double diameter, double roughness) { - this(diameter); - this.relativeRoughnes = roughness / diameter; - this.innerSurfaceRoughness = roughness; - } - - /** {@inheritDoc} */ - @Override - public GeometryDefinitionInterface clone() { - GeometryDefinitionInterface clonedGeometry = null; - try { - clonedGeometry = (GeometryDefinition) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedGeometry; - } - - /** {@inheritDoc} */ - @Override - public void setNodeLength(double nodeLength) { - this.nodeLength = nodeLength; - } - - /** {@inheritDoc} */ - @Override - public void setInnerSurfaceRoughness(double innerSurfaceRoughness) { - this.innerSurfaceRoughness = innerSurfaceRoughness; - } - - /** {@inheritDoc} */ - @Override - public void init() { - this.radius = diameter / 2.0; - this.area = pi * Math.pow(radius, 2.0); - this.relativeRoughnes = innerSurfaceRoughness / diameter; - } - - /** {@inheritDoc} */ - @Override - public void setDiameter(double diameter) { - this.diameter = diameter; - this.radius = diameter / 2.0; - this.area = pi * Math.pow(radius, 2); - } - - /** {@inheritDoc} */ - @Override - public double getWallHeatTransferCoefficient() { - return wall.getHeatTransferCoefficient(); - } - - /** {@inheritDoc} */ - @Override - public double getDiameter() { - return diameter; - } - - /** {@inheritDoc} */ - @Override - public double getArea() { - return area; - } - - /** {@inheritDoc} */ - @Override - public double getRadius() { - return radius; - } - - /** {@inheritDoc} */ - @Override - public double getInnerSurfaceRoughness() { - return innerSurfaceRoughness; - } - - /** {@inheritDoc} */ - @Override - public double getRelativeRoughnes() { - return relativeRoughnes; - } - - /** {@inheritDoc} */ - @Override - public double getRelativeRoughnes(double diameter) { - return innerSurfaceRoughness / diameter; - } - - /** {@inheritDoc} */ - @Override - public double getCircumference() { - return 2 * pi * radius; - } - - /** {@inheritDoc} */ - @Override - public double getNodeLength() { - return nodeLength; - } - - /** {@inheritDoc} */ - @Override - public GeometryDefinitionInterface getGeometry() { - return this; - } - - /** {@inheritDoc} */ - @Override - public void setPackingType(int i) {} - - /** {@inheritDoc} */ - @Override - public void setPackingType(String name, String material, int size) { - System.out.println("error - packing set in Geometry definition class"); - } - - /** {@inheritDoc} */ - @Override - public PackingInterface getPacking() { - return packing; - } - - /** {@inheritDoc} */ - @Override - public double getInnerWallTemperature() { - return innerWallTemperature; - } - - /** {@inheritDoc} */ - @Override - public void setInnerWallTemperature(double temperature) { - this.innerWallTemperature = temperature; - } - - /** {@inheritDoc} */ - @Override - public void setWallHeatTransferCoefficient(double wallHeatTransferCoefficient) { - this.wallHeatTransferCoefficient = wallHeatTransferCoefficient; - } + implements GeometryDefinitionInterface, neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + + /** {@inheritDoc} */ + @Override + public SurroundingEnvironment getSurroundingEnvironment() { + return surroundingEnvironment; + } + + /** {@inheritDoc} */ + @Override + public void setSurroundingEnvironment(SurroundingEnvironment surroundingEnvironment) { + this.surroundingEnvironment = surroundingEnvironment; + } + + /** + *

+ * Getter for the field wall. + *

+ * + * @return the wall + */ + public Wall getWall() { + return wall; + } + + /** + *

+ * Setter for the field wall. + *

+ * + * @param wall the wall to set + */ + public void setWall(Wall wall) { + this.wall = wall; + } + + double wallHeatTransferCoefficient = 20.0; + private double innerWallTemperature = 276.5; + protected PackingInterface packing = null; + + public double diameter = 0; + public double radius = 0; + public double innerSurfaceRoughness = 0.000005; + public double nodeLength = 0; + public double area = 0; + public double relativeRoughnes = 0; + public double[] layerConductivity; + public double[] layerThickness; + public Wall wall = new Wall(); + + private SurroundingEnvironment surroundingEnvironment = new SurroundingEnvironmentBaseClass(); + + /** + *

+ * Constructor for GeometryDefinition. + *

+ */ + public GeometryDefinition() {} + + /** + *

+ * Constructor for GeometryDefinition. + *

+ * + * @param diameter a double + */ + public GeometryDefinition(double diameter) { + this.diameter = diameter; + this.radius = diameter / 2.0; + this.area = pi * Math.pow(radius, 2); + } + + /** + *

+ * Constructor for GeometryDefinition. + *

+ * + * @param diameter a double + * @param roughness a double + */ + public GeometryDefinition(double diameter, double roughness) { + this(diameter); + this.relativeRoughnes = roughness / diameter; + this.innerSurfaceRoughness = roughness; + } + + /** {@inheritDoc} */ + @Override + public GeometryDefinitionInterface clone() { + GeometryDefinitionInterface clonedGeometry = null; + try { + clonedGeometry = (GeometryDefinition) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + return clonedGeometry; + } + + /** {@inheritDoc} */ + @Override + public void setNodeLength(double nodeLength) { + this.nodeLength = nodeLength; + } + + /** {@inheritDoc} */ + @Override + public void setInnerSurfaceRoughness(double innerSurfaceRoughness) { + this.innerSurfaceRoughness = innerSurfaceRoughness; + } + + /** {@inheritDoc} */ + @Override + public void init() { + this.radius = diameter / 2.0; + this.area = pi * Math.pow(radius, 2.0); + this.relativeRoughnes = innerSurfaceRoughness / diameter; + } + + /** {@inheritDoc} */ + @Override + public void setDiameter(double diameter) { + this.diameter = diameter; + this.radius = diameter / 2.0; + this.area = pi * Math.pow(radius, 2); + } + + /** {@inheritDoc} */ + @Override + public double getWallHeatTransferCoefficient() { + return wall.getHeatTransferCoefficient(); + } + + /** {@inheritDoc} */ + @Override + public double getDiameter() { + return diameter; + } + + /** {@inheritDoc} */ + @Override + public double getArea() { + return area; + } + + /** {@inheritDoc} */ + @Override + public double getRadius() { + return radius; + } + + /** {@inheritDoc} */ + @Override + public double getInnerSurfaceRoughness() { + return innerSurfaceRoughness; + } + + /** {@inheritDoc} */ + @Override + public double getRelativeRoughnes() { + return relativeRoughnes; + } + + /** {@inheritDoc} */ + @Override + public double getRelativeRoughnes(double diameter) { + return innerSurfaceRoughness / diameter; + } + + /** {@inheritDoc} */ + @Override + public double getCircumference() { + return 2 * pi * radius; + } + + /** {@inheritDoc} */ + @Override + public double getNodeLength() { + return nodeLength; + } + + /** {@inheritDoc} */ + @Override + public GeometryDefinitionInterface getGeometry() { + return this; + } + + /** {@inheritDoc} */ + @Override + public void setPackingType(int i) {} + + /** {@inheritDoc} */ + @Override + public void setPackingType(String name, String material, int size) { + System.out.println("error - packing set in Geometry definition class"); + } + + /** {@inheritDoc} */ + @Override + public PackingInterface getPacking() { + return packing; + } + + /** {@inheritDoc} */ + @Override + public double getInnerWallTemperature() { + return innerWallTemperature; + } + + /** {@inheritDoc} */ + @Override + public void setInnerWallTemperature(double temperature) { + this.innerWallTemperature = temperature; + } + + /** {@inheritDoc} */ + @Override + public void setWallHeatTransferCoefficient(double wallHeatTransferCoefficient) { + this.wallHeatTransferCoefficient = wallHeatTransferCoefficient; + } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/GeometryDefinitionInterface.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/GeometryDefinitionInterface.java index 56b9549fd7..84cd409496 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/GeometryDefinitionInterface.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/GeometryDefinitionInterface.java @@ -3,6 +3,7 @@ * * Created on 10. desember 2000, 18:56 */ + package neqsim.fluidMechanics.geometryDefinitions; import neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PackingInterface; @@ -17,219 +18,216 @@ * @version $Id: $Id */ public interface GeometryDefinitionInterface extends Cloneable { - /** - *

- * setDiameter. - *

- * - * @param diameter a double - */ - public void setDiameter(double diameter); - - /** - *

- * setNodeLength. - *

- * - * @param nodeLength a double - */ - public void setNodeLength(double nodeLength); - - /** - *

- * setInnerSurfaceRoughness. - *

- * - * @param innerSurfaceRoughness a double - */ - public void setInnerSurfaceRoughness(double innerSurfaceRoughness); - - /** - *

- * init. - *

- */ - public void init(); - - /** - *

- * getDiameter. - *

- * - * @return a double - */ - public double getDiameter(); - - /** - *

- * getArea. - *

- * - * @return a double - */ - public double getArea(); - - /** - *

- * getRadius. - *

- * - * @return a double - */ - public double getRadius(); - - /** - *

- * getInnerSurfaceRoughness. - *

- * - * @return a double - */ - public double getInnerSurfaceRoughness(); - - /** - *

- * getCircumference. - *

- * - * @return a double - */ - public double getCircumference(); - - /** - *

- * getRelativeRoughnes. - *

- * - * @return a double - */ - public double getRelativeRoughnes(); - - /** - *

- * getNodeLength. - *

- * - * @return a double - */ - public double getNodeLength(); - - /** - *

- * getRelativeRoughnes. - *

- * - * @param diameter a double - * @return a double - */ - public double getRelativeRoughnes(double diameter); - - /** - *

- * getWallHeatTransferCoefficient. - *

- * - * @return a double - */ - public double getWallHeatTransferCoefficient(); - - /** - *

- * setWallHeatTransferCoefficient. - *

- * - * @param outerHeatTransferCoefficient a double - */ - public void setWallHeatTransferCoefficient(double outerHeatTransferCoefficient); - - /** - *

- * setPackingType. - *

- * - * @param i a int - */ - public void setPackingType(int i); - - /** - *

- * setPackingType. - *

- * - * @param name a {@link java.lang.String} object - * @param material a {@link java.lang.String} object - * @param size a int - */ - public void setPackingType(String name, String material, int size); - - /** - *

- * getPacking. - *

- * - * @return a - * {@link neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PackingInterface} - * object - */ - public PackingInterface getPacking(); - - /** - *

- * getGeometry. - *

- * - * @return a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public GeometryDefinitionInterface getGeometry(); - - /** - *

- * clone. - *

- * - * @return a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} - * object - */ - public GeometryDefinitionInterface clone(); - - /** - *

- * getInnerWallTemperature. - *

- * - * @return a double - */ - public double getInnerWallTemperature(); - - /** - *

- * setInnerWallTemperature. - *

- * - * @param temperature a double - */ - public void setInnerWallTemperature(double temperature); - - /** - *

- * getSurroundingEnvironment. - *

- * - * @return a - * {@link neqsim.fluidMechanics.geometryDefinitions.surrounding.SurroundingEnvironment} - * object - */ - public SurroundingEnvironment getSurroundingEnvironment(); - - /** - *

- * setSurroundingEnvironment. - *

- * - * @param surroundingEnvironment a - * {@link neqsim.fluidMechanics.geometryDefinitions.surrounding.SurroundingEnvironment} - * object - */ - public void setSurroundingEnvironment(SurroundingEnvironment surroundingEnvironment); + /** + *

+ * setDiameter. + *

+ * + * @param diameter a double + */ + public void setDiameter(double diameter); + + /** + *

+ * setNodeLength. + *

+ * + * @param nodeLength a double + */ + public void setNodeLength(double nodeLength); + + /** + *

+ * setInnerSurfaceRoughness. + *

+ * + * @param innerSurfaceRoughness a double + */ + public void setInnerSurfaceRoughness(double innerSurfaceRoughness); + + /** + *

+ * init. + *

+ */ + public void init(); + + /** + *

+ * getDiameter. + *

+ * + * @return a double + */ + public double getDiameter(); + + /** + *

+ * getArea. + *

+ * + * @return a double + */ + public double getArea(); + + /** + *

+ * getRadius. + *

+ * + * @return a double + */ + public double getRadius(); + + /** + *

+ * getInnerSurfaceRoughness. + *

+ * + * @return a double + */ + public double getInnerSurfaceRoughness(); + + /** + *

+ * getCircumference. + *

+ * + * @return a double + */ + public double getCircumference(); + + /** + *

+ * getRelativeRoughnes. + *

+ * + * @return a double + */ + public double getRelativeRoughnes(); + + /** + *

+ * getRelativeRoughnes. + *

+ * + * @param diameter a double + * @return a double + */ + public double getRelativeRoughnes(double diameter); + + /** + *

+ * getNodeLength. + *

+ * + * @return a double + */ + public double getNodeLength(); + + /** + *

+ * getWallHeatTransferCoefficient. + *

+ * + * @return a double + */ + public double getWallHeatTransferCoefficient(); + + /** + *

+ * setWallHeatTransferCoefficient. + *

+ * + * @param outerHeatTransferCoefficient a double + */ + public void setWallHeatTransferCoefficient(double outerHeatTransferCoefficient); + + /** + *

+ * setPackingType. + *

+ * + * @param i a int + */ + public void setPackingType(int i); + + /** + *

+ * setPackingType. + *

+ * + * @param name a {@link java.lang.String} object + * @param material a {@link java.lang.String} object + * @param size a int + */ + public void setPackingType(String name, String material, int size); + + /** + *

+ * getPacking. + *

+ * + * @return a + * {@link neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PackingInterface} + * object + */ + public PackingInterface getPacking(); + + /** + *

+ * getGeometry. + *

+ * + * @return a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} object + */ + public GeometryDefinitionInterface getGeometry(); + + /** + *

+ * clone. + *

+ * + * @return a {@link neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface} object + */ + public GeometryDefinitionInterface clone(); + + /** + *

+ * getInnerWallTemperature. + *

+ * + * @return a double + */ + public double getInnerWallTemperature(); + + /** + *

+ * setInnerWallTemperature. + *

+ * + * @param temperature a double + */ + public void setInnerWallTemperature(double temperature); + + /** + *

+ * getSurroundingEnvironment. + *

+ * + * @return a {@link neqsim.fluidMechanics.geometryDefinitions.surrounding.SurroundingEnvironment} + * object + */ + public SurroundingEnvironment getSurroundingEnvironment(); + + /** + *

+ * setSurroundingEnvironment. + *

+ * + * @param surroundingEnvironment a + * {@link neqsim.fluidMechanics.geometryDefinitions.surrounding.SurroundingEnvironment} + * object + */ + public void setSurroundingEnvironment(SurroundingEnvironment surroundingEnvironment); } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/BerlSaddlePacking.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/BerlSaddlePacking.java index ea1f6ce820..43383807f3 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/BerlSaddlePacking.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/BerlSaddlePacking.java @@ -17,17 +17,6 @@ public class BerlSaddlePacking extends Packing { *

*/ public BerlSaddlePacking() { - this("BerlSaddlePacking"); - } - - /** - *

- * Constructor for BerlSaddlePacking. - *

- * - * @param name a {@link java.lang.String} object - */ - public BerlSaddlePacking(String name) { - super(name); + super("BerlSaddlePacking"); } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/Packing.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/Packing.java index 9afad3352d..add78f9454 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/Packing.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/Packing.java @@ -3,8 +3,11 @@ * * Created on 25. august 2001, 23:34 */ + package neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.util.NamedBaseClass; /** @@ -15,32 +18,26 @@ * @author esol * @version $Id: $Id */ -public class Packing extends NamedBaseClass implements PackingInterface { +public abstract class Packing extends NamedBaseClass implements PackingInterface { private static final long serialVersionUID = 1L; - double voidFractionPacking = 0.951, size = 0, surfaceAreaPrVolume = 112.6; + static Logger logger = LogManager.getLogger(Packing.class); - /** - *

- * Constructor for Packing. - *

- */ - @Deprecated - public Packing() { - super("Packing"); - } + double voidFractionPacking = 0.951; + double size = 0; + double surfaceAreaPrVolume = 112.6; /** *

* Constructor for Packing. *

* - * @param name a {@link java.lang.String} object + * @param name Name of packing */ public Packing(String name) { super(name); - try { + try (neqsim.util.database.NeqSimProcessDesignDataBase database = + new neqsim.util.database.NeqSimProcessDesignDataBase()) { System.out.println("init packing"); - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); java.sql.ResultSet dataSet = database.getResultSet(("SELECT * FROM packing WHERE name='" + name + "'")); dataSet.next(); @@ -48,11 +45,8 @@ public Packing(String name) { surfaceAreaPrVolume = Double.parseDouble(dataSet.getString("surfaceAreaPrVolume")); voidFractionPacking = Double.parseDouble(dataSet.getString("voidFraction")); System.out.println("packing ok"); - } - - catch (Exception e) { - String err = e.toString(); - System.out.println(err); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } @@ -61,15 +55,14 @@ public Packing(String name) { * Constructor for Packing. *

* - * @param name a {@link java.lang.String} object - * @param material a {@link java.lang.String} object + * @param name Name of packing + * @param material Name of material * @param size a int */ public Packing(String name, String material, int size) { super(name); - try { + try (neqsim.util.database.NeqSimProcessDesignDataBase database = new neqsim.util.database.NeqSimProcessDesignDataBase()) { System.out.println("init packing"); - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); java.sql.ResultSet dataSet = database.getResultSet(("SELECT * FROM packing WHERE name='" + name + "' AND size=" + size + " AND material='" + material + "'")); dataSet.next(); @@ -77,11 +70,8 @@ public Packing(String name, String material, int size) { surfaceAreaPrVolume = Double.parseDouble(dataSet.getString("surfaceAreaPrVolume")); voidFractionPacking = Double.parseDouble(dataSet.getString("voidFraction")); System.out.println("packing ok"); - } - - catch (Exception e) { - String err = e.toString(); - System.out.println(err); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PackingInterface.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PackingInterface.java index 6c578aff2c..e93b38dfd8 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PackingInterface.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PackingInterface.java @@ -3,6 +3,7 @@ * * Created on 25. august 2001, 23:34 */ + package neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings; /** @@ -14,39 +15,39 @@ * @version $Id: $Id */ public interface PackingInterface { - /** - *

- * getSize. - *

- * - * @return a double - */ - public double getSize(); + /** + *

+ * Getter for property size. + *

+ * + * @return a double + */ + public double getSize(); - /** - *

- * getSurfaceAreaPrVolume. - *

- * - * @return a double - */ - public double getSurfaceAreaPrVolume(); + /** + *

+ * Getter for property surfaceAreaPrVolume. + *

+ * + * @return a double + */ + public double getSurfaceAreaPrVolume(); - /** - *

- * getVoidFractionPacking. - *

- * - * @return a double - */ - public double getVoidFractionPacking(); + /** + *

+ * Getter for property voidFractionPacking. + *

+ * + * @return a double + */ + public double getVoidFractionPacking(); - /** - *

- * setVoidFractionPacking. - *

- * - * @param voidFractionPacking a double - */ - public void setVoidFractionPacking(double voidFractionPacking); + /** + *

+ * Setter for property voidFractionPacking. + *

+ * + * @param voidFractionPacking a double + */ + public void setVoidFractionPacking(double voidFractionPacking); } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PallRingPacking.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PallRingPacking.java index 94887ad748..9acb04d965 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PallRingPacking.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PallRingPacking.java @@ -3,6 +3,7 @@ * * Created on 25. august 2001, 23:58 */ + package neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings; /** @@ -21,20 +22,8 @@ public class PallRingPacking extends Packing { * Constructor for PallRingPacking. *

*/ - @Deprecated public PallRingPacking() { - this("PallRingPacking"); - } - - /** - *

- * Constructor for PallRingPacking. - *

- * - * @param name a {@link java.lang.String} object - */ - public PallRingPacking(String name) { - super(name); + super("PallRingPacking"); } /** @@ -42,11 +31,10 @@ public PallRingPacking(String name) { * Constructor for PallRingPacking. *

* - * @param name a {@link java.lang.String} object * @param material a {@link java.lang.String} object * @param size a int */ - public PallRingPacking(String name, String material, int size) { - super(name, material, size); + public PallRingPacking(String material, int size) { + super("PallRingPacking", material, size); } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/RachigRingPacking.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/RachigRingPacking.java index c0e04d5755..26928f6463 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/RachigRingPacking.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/RachigRingPacking.java @@ -16,9 +16,8 @@ public class RachigRingPacking extends Packing { * Constructor for RachigRingPacking. *

*/ - @Deprecated public RachigRingPacking() { - this("RachigRingPacking"); + super("RachigRingPacking"); } /** @@ -26,22 +25,10 @@ public RachigRingPacking() { * Constructor for RachigRingPacking. *

* - * @param name a {@link java.lang.String} object - */ - public RachigRingPacking(String name) { - super(name); - } - - /** - *

- * Constructor for RachigRingPacking. - *

- * - * @param name a {@link java.lang.String} object * @param material a {@link java.lang.String} object * @param size a int */ - public RachigRingPacking(String name, String material, int size) { - super(name, material, size); + public RachigRingPacking(String material, int size) { + super("RachigRingPacking", material, size); } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/MaterialLayer.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/MaterialLayer.java index 7dd15adc0d..7793f69519 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/MaterialLayer.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/MaterialLayer.java @@ -9,168 +9,168 @@ * @version $Id: $Id */ public class MaterialLayer { - /** - *

- * Getter for the field density. - *

- * - * @return the density - */ - public double getDensity() { - return density; - } - - /** - *

- * Setter for the field density. - *

- * - * @param density the density to set - */ - public void setDensity(double density) { - this.density = density; - } - - /** - *

- * Getter for the field thickness. - *

- * - * @return the thickness - */ - public double getThickness() { - return thickness; - } - - /** - *

- * Setter for the field thickness. - *

- * - * @param thickness the thickness to set - */ - public void setThickness(double thickness) { - this.thickness = thickness; - } - - /** - *

- * Getter for the field conductivity. - *

- * - * @return the conductivity - */ - public double getConductivity() { - return conductivity; - } - - /** - *

- * Setter for the field conductivity. - *

- * - * @param conductivity the conductivity to set - */ - public void setConductivity(double conductivity) { - this.conductivity = conductivity; - } - - /** - *

- * getHeatTransferCoefficient. - *

- * - * @return a double - */ - public double getHeatTransferCoefficient() { - return conductivity / thickness; - } - - /** - *

- * getCv. - *

- * - * @return the Cv - */ - public double getCv() { - return Cv; - } - - /** - *

- * setCv. - *

- * - * @param Cv the Cv to set - */ - public void setCv(double Cv) { - this.Cv = Cv; - } - - private double thickness = 0.01; - private double conductivity = 1.0; - private double Cv = 10.0; - private double density = 2000.0; - private double insideTemperature = 298.15; - private double outsideTemperature = 298.15; - - String material = null; - - /** - *

- * Constructor for MaterialLayer. - *

- * - * @param material a {@link java.lang.String} object - * @param thickness a double - */ - public MaterialLayer(String material, double thickness) { - this.thickness = thickness; - this.material = material; - } - - /** - *

- * Getter for the field insideTemperature. - *

- * - * @return the insideTemperature - */ - public double getInsideTemperature() { - return insideTemperature; - } - - /** - *

- * Setter for the field insideTemperature. - *

- * - * @param insideTemperature the insideTemperature to set - */ - public void setInsideTemperature(double insideTemperature) { - this.insideTemperature = insideTemperature; - } - - /** - *

- * Getter for the field outsideTemperature. - *

- * - * @return the outsideTemperature - */ - public double getOutsideTemperature() { - return outsideTemperature; - } - - /** - *

- * Setter for the field outsideTemperature. - *

- * - * @param outsideTemperature the outsideTemperature to set - */ - public void setOutsideTemperature(double outsideTemperature) { - this.outsideTemperature = outsideTemperature; - } + /** + *

+ * Getter for the field density. + *

+ * + * @return the density + */ + public double getDensity() { + return density; + } + + /** + *

+ * Setter for the field density. + *

+ * + * @param density the density to set + */ + public void setDensity(double density) { + this.density = density; + } + + /** + *

+ * Getter for the field thickness. + *

+ * + * @return the thickness + */ + public double getThickness() { + return thickness; + } + + /** + *

+ * Setter for the field thickness. + *

+ * + * @param thickness the thickness to set + */ + public void setThickness(double thickness) { + this.thickness = thickness; + } + + /** + *

+ * Getter for the field conductivity. + *

+ * + * @return the conductivity + */ + public double getConductivity() { + return conductivity; + } + + /** + *

+ * Setter for the field conductivity. + *

+ * + * @param conductivity the conductivity to set + */ + public void setConductivity(double conductivity) { + this.conductivity = conductivity; + } + + /** + *

+ * getHeatTransferCoefficient. + *

+ * + * @return a double + */ + public double getHeatTransferCoefficient() { + return conductivity / thickness; + } + + /** + *

+ * getCv. + *

+ * + * @return the Cv + */ + public double getCv() { + return Cv; + } + + /** + *

+ * setCv. + *

+ * + * @param Cv the Cv to set + */ + public void setCv(double Cv) { + this.Cv = Cv; + } + + private double thickness = 0.01; + private double conductivity = 1.0; + private double Cv = 10.0; + private double density = 2000.0; + private double insideTemperature = 298.15; + private double outsideTemperature = 298.15; + + String material = null; + + /** + *

+ * Constructor for MaterialLayer. + *

+ * + * @param material a {@link java.lang.String} object + * @param thickness a double + */ + public MaterialLayer(String material, double thickness) { + this.thickness = thickness; + this.material = material; + } + + /** + *

+ * Getter for the field insideTemperature. + *

+ * + * @return the insideTemperature + */ + public double getInsideTemperature() { + return insideTemperature; + } + + /** + *

+ * Setter for the field insideTemperature. + *

+ * + * @param insideTemperature the insideTemperature to set + */ + public void setInsideTemperature(double insideTemperature) { + this.insideTemperature = insideTemperature; + } + + /** + *

+ * Getter for the field outsideTemperature. + *

+ * + * @return the outsideTemperature + */ + public double getOutsideTemperature() { + return outsideTemperature; + } + + /** + *

+ * Setter for the field outsideTemperature. + *

+ * + * @param outsideTemperature the outsideTemperature to set + */ + public void setOutsideTemperature(double outsideTemperature) { + this.outsideTemperature = outsideTemperature; + } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/PipeWall.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/PipeWall.java index d75e78986a..21dc6c55bd 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/PipeWall.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/PipeWall.java @@ -9,11 +9,10 @@ * @version $Id: $Id */ public class PipeWall extends Wall { - /** - *

- * PipeWall. - *

- */ - public PipeWall() { - } + /** + *

+ * PipeWall. + *

+ */ + public PipeWall() {} } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/Wall.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/Wall.java index 094a2469ee..e24c73a9d4 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/Wall.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/Wall.java @@ -11,56 +11,56 @@ * @version $Id: $Id */ public class Wall implements WallInterface { - /** - *

- * Getter for the field heatTransferCoefficient. - *

- * - * @return the heatTransferCOefficient - */ - public double getHeatTransferCoefficient() { - return heatTransferCoefficient; - } + /** + *

+ * Getter for the field heatTransferCoefficient. + *

+ * + * @return the heatTransferCOefficient + */ + public double getHeatTransferCoefficient() { + return heatTransferCoefficient; + } - /** - *

- * Setter for the field heatTransferCoefficient. - *

- * - * @param heatTransferCOefficient the heatTransferCOefficient to set - */ - public void setHeatTransferCoefficient(double heatTransferCOefficient) { - this.heatTransferCoefficient = heatTransferCOefficient; - } + /** + *

+ * Setter for the field heatTransferCoefficient. + *

+ * + * @param heatTransferCOefficient the heatTransferCOefficient to set + */ + public void setHeatTransferCoefficient(double heatTransferCOefficient) { + this.heatTransferCoefficient = heatTransferCOefficient; + } - private ArrayList wallMaterialLayers = new ArrayList(); - private double heatTransferCoefficient = 10.0; + private ArrayList wallMaterialLayers = new ArrayList(); + private double heatTransferCoefficient = 10.0; - /** {@inheritDoc} */ - @Override - public void addMaterialLayer(MaterialLayer layer) { - wallMaterialLayers.add(layer); - heatTransferCoefficient = calcHeatTransferCoefficient(); - } + /** {@inheritDoc} */ + @Override + public void addMaterialLayer(MaterialLayer layer) { + wallMaterialLayers.add(layer); + heatTransferCoefficient = calcHeatTransferCoefficient(); + } - /** {@inheritDoc} */ - @Override - public MaterialLayer getWallMaterialLayer(int i) { - return wallMaterialLayers.get(i); - } + /** {@inheritDoc} */ + @Override + public MaterialLayer getWallMaterialLayer(int i) { + return wallMaterialLayers.get(i); + } - /** - *

- * calcHeatTransferCoefficient. - *

- * - * @return a double - */ - public double calcHeatTransferCoefficient() { - double invheatTransCoef = 0.0; - for (MaterialLayer mat : wallMaterialLayers) { - invheatTransCoef += 1.0 / (mat.getConductivity() / mat.getThickness()); - } - return 1.0 / invheatTransCoef; + /** + *

+ * calcHeatTransferCoefficient. + *

+ * + * @return a double + */ + public double calcHeatTransferCoefficient() { + double invheatTransCoef = 0.0; + for (MaterialLayer mat : wallMaterialLayers) { + invheatTransCoef += 1.0 / (mat.getConductivity() / mat.getThickness()); } + return 1.0 / invheatTransCoef; + } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/WallInterface.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/WallInterface.java index 348fde23cf..0c89714de0 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/WallInterface.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/wall/WallInterface.java @@ -9,26 +9,25 @@ * @version $Id: $Id */ public interface WallInterface { - /** - *

- * addMaterialLayer. - *

- * - * @param layer a - * {@link neqsim.fluidMechanics.geometryDefinitions.internalGeometry.wall.MaterialLayer} - * object - */ - public void addMaterialLayer(MaterialLayer layer); + /** + *

+ * addMaterialLayer. + *

+ * + * @param layer a + * {@link neqsim.fluidMechanics.geometryDefinitions.internalGeometry.wall.MaterialLayer} + * object + */ + public void addMaterialLayer(MaterialLayer layer); - /** - *

- * getWallMaterialLayer. - *

- * - * @param i a int - * @return a - * {@link neqsim.fluidMechanics.geometryDefinitions.internalGeometry.wall.MaterialLayer} - * object - */ - public MaterialLayer getWallMaterialLayer(int i); + /** + *

+ * getWallMaterialLayer. + *

+ * + * @param i a int + * @return a {@link neqsim.fluidMechanics.geometryDefinitions.internalGeometry.wall.MaterialLayer} + * object + */ + public MaterialLayer getWallMaterialLayer(int i); } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/pipe/PipeData.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/pipe/PipeData.java index 025affd7fc..c4453a0c9f 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/pipe/PipeData.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/pipe/PipeData.java @@ -12,57 +12,51 @@ * @version $Id: $Id */ public class PipeData extends GeometryDefinition { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PipeData. - *

- */ - public PipeData() { - this.wall = new PipeWall(); - } + /** + *

+ * Constructor for PipeData. + *

+ */ + public PipeData() { + this.wall = new PipeWall(); + } - /** - *

- * Constructor for PipeData. - *

- * - * @param diameter a double - */ - public PipeData(double diameter) { - super(diameter); - wall = new PipeWall(); - } + /** + *

+ * Constructor for PipeData. + *

+ * + * @param diameter a double + */ + public PipeData(double diameter) { + super(diameter); + wall = new PipeWall(); + } - /** - *

- * Constructor for PipeData. - *

- * - * @param diameter a double - * @param roughness a double - */ - public PipeData(double diameter, double roughness) { - super(diameter, roughness); - wall = new PipeWall(); - } - - /** {@inheritDoc} */ - @Override - public void init() { - super.init(); - } + /** + *

+ * Constructor for PipeData. + *

+ * + * @param diameter a double + * @param roughness a double + */ + public PipeData(double diameter, double roughness) { + super(diameter, roughness); + wall = new PipeWall(); + } - /** {@inheritDoc} */ - @Override - public PipeData clone() { - PipeData clonedPipe = null; - try { - clonedPipe = (PipeData) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - return clonedPipe; + /** {@inheritDoc} */ + @Override + public PipeData clone() { + PipeData clonedPipe = null; + try { + clonedPipe = (PipeData) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + return clonedPipe; + } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/reactor/ReactorData.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/reactor/ReactorData.java index 3e85b40450..7a55079252 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/reactor/ReactorData.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/reactor/ReactorData.java @@ -11,123 +11,112 @@ * @version $Id: $Id */ public class ReactorData extends GeometryDefinition { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ReactorData. - *

- */ - public ReactorData() {} + /** + *

+ * Constructor for ReactorData. + *

+ */ + public ReactorData() {} - /** - *

- * Constructor for ReactorData. - *

- * - * @param diameter a double - */ - public ReactorData(double diameter) { - super(diameter); - } + /** + *

+ * Constructor for ReactorData. + *

+ * + * @param diameter a double + */ + public ReactorData(double diameter) { + super(diameter); + } - /** - *

- * Constructor for ReactorData. - *

- * - * @param diameter a double - * @param roughness a double - */ - public ReactorData(double diameter, double roughness) { - super(diameter, roughness); - packing = - new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking( - "PallRingPacking"); - } + /** + *

+ * Constructor for ReactorData. + *

+ * + * @param diameter a double + * @param roughness a double + */ + public ReactorData(double diameter, double roughness) { + super(diameter, roughness); + packing = + new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking(); + } - /** - *

- * Constructor for ReactorData. - *

- * - * @param diameter a double - * @param packingType a int - */ - public ReactorData(double diameter, int packingType) { - super(diameter); - setPackingType(packingType); - } + /** + *

+ * Constructor for ReactorData. + *

+ * + * @param diameter a double + * @param packingType a int + */ + public ReactorData(double diameter, int packingType) { + super(diameter); + setPackingType(packingType); + } - /** {@inheritDoc} */ - @Override - public void setPackingType(int i) { - // if(i!=100){ - packing = - new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking( - "PallRingPacking"); - // } - } + /** {@inheritDoc} */ + @Override + public void setPackingType(int i) { + // if(i!=100){ + packing = + new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking(); + // } + } - /** - *

- * setPackingType. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setPackingType(String name) { - if (name.equals("pallring")) { - packing = - new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking( - "pallring"); - } else if (name.equals("rashigring")) { - packing = - new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.RachigRingPacking( - "rashigring"); - } else { - System.out.println("pakcing " + name + " not defined in database - using pallrings"); - packing = - new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking( - "pallring"); - } + /** + *

+ * setPackingType. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setPackingType(String name) { + if (name.equals("pallring")) { + packing = + new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking(); + } else if (name.equals("rashigring")) { + packing = + new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.RachigRingPacking(); + } else { + System.out.println("packing " + name + " not defined in database - using pallrings"); + packing = + new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking(); } + } - /** {@inheritDoc} */ - @Override - public void setPackingType(String name, String material, int size) { - if (name.equals("pallring")) { - packing = - new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking( - "pallring", material, size); - } else if (name.equals("rashigring")) { - packing = - new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.RachigRingPacking( - "rashigring", material, size); - } else { - System.out.println("pakcing " + name + " not defined in database - using pallrings"); - packing = - new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking( - "pallring", material, size); - } + /** {@inheritDoc} */ + @Override + public void setPackingType(String name, String material, int size) { + if (name.equals("pallring")) { + packing = + new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking( + material, size); + } else if (name.equals("rashigring")) { + packing = + new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.RachigRingPacking( + material, size); + } else { + System.out.println("packing " + name + " not defined in database - using pallrings"); + packing = + new neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings.PallRingPacking( + material, size); } + } - /** {@inheritDoc} */ - @Override - public void init() { - super.init(); + /** {@inheritDoc} */ + @Override + public ReactorData clone() { + ReactorData clonedPipe = null; + try { + clonedPipe = (ReactorData) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public ReactorData clone() { - ReactorData clonedPipe = null; - try { - clonedPipe = (ReactorData) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return clonedPipe; - } + return clonedPipe; + } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/stirredCell/StirredCell.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/stirredCell/StirredCell.java index c7b7438361..a294cc54fd 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/stirredCell/StirredCell.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/stirredCell/StirredCell.java @@ -11,53 +11,47 @@ * @version $Id: $Id */ public class StirredCell extends GeometryDefinition { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for StirredCell. - *

- */ - public StirredCell() {} + /** + *

+ * Constructor for StirredCell. + *

+ */ + public StirredCell() {} - /** - *

- * Constructor for StirredCell. - *

- * - * @param diameter a double - */ - public StirredCell(double diameter) { - super(diameter); - } - - /** - *

- * Constructor for StirredCell. - *

- * - * @param diameter a double - * @param roughness a double - */ - public StirredCell(double diameter, double roughness) { - super(diameter, roughness); - } + /** + *

+ * Constructor for StirredCell. + *

+ * + * @param diameter a double + */ + public StirredCell(double diameter) { + super(diameter); + } - /** {@inheritDoc} */ - @Override - public void init() { - super.init(); - } + /** + *

+ * Constructor for StirredCell. + *

+ * + * @param diameter a double + * @param roughness a double + */ + public StirredCell(double diameter, double roughness) { + super(diameter, roughness); + } - /** {@inheritDoc} */ - @Override - public StirredCell clone() { - StirredCell clonedPipe = null; - try { - clonedPipe = (StirredCell) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - return clonedPipe; + /** {@inheritDoc} */ + @Override + public StirredCell clone() { + StirredCell clonedPipe = null; + try { + clonedPipe = (StirredCell) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + return clonedPipe; + } } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/PipeSurroundingEnvironment.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/PipeSurroundingEnvironment.java index 6ea4714c86..09b0955c38 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/PipeSurroundingEnvironment.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/PipeSurroundingEnvironment.java @@ -9,19 +9,19 @@ * @version $Id: $Id */ public class PipeSurroundingEnvironment extends SurroundingEnvironmentBaseClass { - /** - *

- * Constructor for PipeSurroundingEnvironment. - *

- */ - public PipeSurroundingEnvironment() {} + /** + *

+ * Constructor for PipeSurroundingEnvironment. + *

+ */ + public PipeSurroundingEnvironment() {} - /** - *

- * Constructor for PipeSurroundingEnvironment. - *

- * - * @param typeName a {@link java.lang.String} object - */ - public PipeSurroundingEnvironment(String typeName) {} + /** + *

+ * Constructor for PipeSurroundingEnvironment. + *

+ * + * @param typeName a {@link java.lang.String} object + */ + public PipeSurroundingEnvironment(String typeName) {} } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/SurroundingEnvironment.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/SurroundingEnvironment.java index b0b1e381a2..0e3833a949 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/SurroundingEnvironment.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/SurroundingEnvironment.java @@ -9,39 +9,39 @@ * @version $Id: $Id */ public interface SurroundingEnvironment { - /** - *

- * getTemperature. - *

- * - * @return a double - */ - public double getTemperature(); + /** + *

+ * getTemperature. + *

+ * + * @return a double + */ + public double getTemperature(); - /** - *

- * setTemperature. - *

- * - * @param temperature a double - */ - public void setTemperature(double temperature); + /** + *

+ * setTemperature. + *

+ * + * @param temperature a double + */ + public void setTemperature(double temperature); - /** - *

- * getHeatTransferCoefficient. - *

- * - * @return a double - */ - public double getHeatTransferCoefficient(); + /** + *

+ * getHeatTransferCoefficient. + *

+ * + * @return a double + */ + public double getHeatTransferCoefficient(); - /** - *

- * setHeatTransferCoefficient. - *

- * - * @param heatTransferCoefficient a double - */ - public void setHeatTransferCoefficient(double heatTransferCoefficient); + /** + *

+ * setHeatTransferCoefficient. + *

+ * + * @param heatTransferCoefficient a double + */ + public void setHeatTransferCoefficient(double heatTransferCoefficient); } diff --git a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/SurroundingEnvironmentBaseClass.java b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/SurroundingEnvironmentBaseClass.java index c7545cf342..34cfa0e0e1 100644 --- a/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/SurroundingEnvironmentBaseClass.java +++ b/src/main/java/neqsim/fluidMechanics/geometryDefinitions/surrounding/SurroundingEnvironmentBaseClass.java @@ -9,37 +9,37 @@ * @version $Id: $Id */ public class SurroundingEnvironmentBaseClass implements SurroundingEnvironment { - /** {@inheritDoc} */ - @Override - public double getTemperature() { - return temperature; - } + /** {@inheritDoc} */ + @Override + public double getTemperature() { + return temperature; + } - /** {@inheritDoc} */ - @Override - public void setTemperature(double temperature) { - this.temperature = temperature; - } + /** {@inheritDoc} */ + @Override + public void setTemperature(double temperature) { + this.temperature = temperature; + } - private double heatTransferCoefficient = 20.0; - private double temperature = 298.15; + private double heatTransferCoefficient = 20.0; + private double temperature = 298.15; - /** - *

- * Constructor for SurroundingEnvironmentBaseClass. - *

- */ - public SurroundingEnvironmentBaseClass() {} + /** + *

+ * Constructor for SurroundingEnvironmentBaseClass. + *

+ */ + public SurroundingEnvironmentBaseClass() {} - /** {@inheritDoc} */ - @Override - public double getHeatTransferCoefficient() { - return heatTransferCoefficient; - } + /** {@inheritDoc} */ + @Override + public double getHeatTransferCoefficient() { + return heatTransferCoefficient; + } - /** {@inheritDoc} */ - @Override - public void setHeatTransferCoefficient(double heatTransferCoefficient) { - this.heatTransferCoefficient = heatTransferCoefficient; - } + /** {@inheritDoc} */ + @Override + public void setHeatTransferCoefficient(double heatTransferCoefficient) { + this.heatTransferCoefficient = heatTransferCoefficient; + } } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/FileWriterBaseClass.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/FileWriterBaseClass.java deleted file mode 100644 index 3151769c9c..0000000000 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/FileWriterBaseClass.java +++ /dev/null @@ -1,20 +0,0 @@ -package neqsim.fluidMechanics.util.fluidMechanicsDataHandeling; - -/** - *

- * FileWriterBaseClass class. - *

- * - * @author esol - * @version $Id: $Id - */ -public class FileWriterBaseClass implements java.io.Serializable { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for FileWriterBaseClass. - *

- */ - public FileWriterBaseClass() {} -} diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/FileWriterInterface.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/FileWriterInterface.java deleted file mode 100644 index 754c7be7a2..0000000000 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/FileWriterInterface.java +++ /dev/null @@ -1,12 +0,0 @@ -package neqsim.fluidMechanics.util.fluidMechanicsDataHandeling; - -/** - *

- * FileWriterInterface interface. - *

- * - * @author esol - * @version $Id: $Id - */ -public interface FileWriterInterface { -} diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/onePhaseFileWriter/OnePhaseFileWriter.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/onePhaseFileWriter/OnePhaseFileWriter.java deleted file mode 100644 index 9bf0e0fee4..0000000000 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/onePhaseFileWriter/OnePhaseFileWriter.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * OnePhaseFileWriter.java - * - * Created on 27. oktober 2000, 22:27 - */ -package neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.onePhaseFileWriter; - -import neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.FileWriterBaseClass; - -/** - *

- * OnePhaseFileWriter class. - *

- * - * @author esol - * @version $Id: $Id - */ -public class OnePhaseFileWriter extends FileWriterBaseClass { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for OnePhaseFileWriter. - *

- */ - public OnePhaseFileWriter() {} -} diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/onePhaseFileWriter/pipeFlowFileWriter/PipeFlowFileWriter.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/onePhaseFileWriter/pipeFlowFileWriter/PipeFlowFileWriter.java deleted file mode 100644 index c5a3d96afe..0000000000 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/onePhaseFileWriter/pipeFlowFileWriter/PipeFlowFileWriter.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * PipeFlowFileWriter.java - * - * Created on 27. oktober 2000, 22:29 - */ -package neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.onePhaseFileWriter.pipeFlowFileWriter; - -import neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.onePhaseFileWriter.OnePhaseFileWriter; - -/** - *

- * PipeFlowFileWriter class. - *

- * - * @author esol - * @version $Id: $Id - */ -public class PipeFlowFileWriter extends OnePhaseFileWriter { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for PipeFlowFileWriter. - *

- */ - public PipeFlowFileWriter() {} -} diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/twoPhaseFileWriter/TwoPhaseFileWriter.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/twoPhaseFileWriter/TwoPhaseFileWriter.java deleted file mode 100644 index 9dbeacd2e3..0000000000 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/twoPhaseFileWriter/TwoPhaseFileWriter.java +++ /dev/null @@ -1,22 +0,0 @@ -package neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.twoPhaseFileWriter; - -import neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.FileWriterBaseClass; - -/** - *

- * TwoPhaseFileWriter class. - *

- * - * @author esol - * @version $Id: $Id - */ -public class TwoPhaseFileWriter extends FileWriterBaseClass { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for TwoPhaseFileWriter. - *

- */ - public TwoPhaseFileWriter() {} -} diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/twoPhaseFileWriter/twoPhasePipeFlowFileWriter/TwoPhasePipeFlowFileWriter.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/twoPhaseFileWriter/twoPhasePipeFlowFileWriter/TwoPhasePipeFlowFileWriter.java deleted file mode 100644 index 0f3341d53e..0000000000 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsDataHandeling/twoPhaseFileWriter/twoPhasePipeFlowFileWriter/TwoPhasePipeFlowFileWriter.java +++ /dev/null @@ -1,22 +0,0 @@ -package neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.twoPhaseFileWriter.twoPhasePipeFlowFileWriter; - -import neqsim.fluidMechanics.util.fluidMechanicsDataHandeling.twoPhaseFileWriter.TwoPhaseFileWriter; - -/** - *

- * TwoPhasePipeFlowFileWriter class. - *

- * - * @author esol - * @version $Id: $Id - */ -public class TwoPhasePipeFlowFileWriter extends TwoPhaseFileWriter { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for TwoPhasePipeFlowFileWriter. - *

- */ - public TwoPhasePipeFlowFileWriter() {} -} diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/FlowNodeVisualization.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/FlowNodeVisualization.java index ca3cfb75f1..9e52f38beb 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/FlowNodeVisualization.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/FlowNodeVisualization.java @@ -3,6 +3,7 @@ * * Created on 5. august 2001, 16:27 */ + package neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowNodeVisualization; import neqsim.fluidMechanics.flowNode.FlowNodeInterface; @@ -16,131 +17,131 @@ * @version $Id: $Id */ public class FlowNodeVisualization implements FlowNodeVisualizationInterface { - public double[] temperature = new double[2]; - public double[] reynoldsNumber = new double[2]; - public double[] interfaceTemperature = new double[2]; - public double[] pressure = new double[2]; - public double[] velocity = new double[2]; - public double[] phaseFraction = new double[2]; - public double[] wallContactLength = new double[2]; - public double[][] bulkComposition, interfaceComposition, effectiveMassTransferCoefficient, - effectiveSchmidtNumber; - public double[][] molarFlux; - public double interphaseContactLength = 0.0; - public double nodeCenter; - public int numberOfComponents = 0; - - /** - *

- * Constructor for FlowNodeVisualization. - *

- */ - public FlowNodeVisualization() {} - - /** {@inheritDoc} */ - @Override - public void setData(FlowNodeInterface node) { - temperature[0] = node.getBulkSystem().getPhases()[0].getTemperature(); - temperature[1] = node.getBulkSystem().getPhases()[1].getTemperature(); - pressure[0] = node.getBulkSystem().getPhases()[0].getPressure(); - pressure[1] = node.getBulkSystem().getPhases()[1].getPressure(); - velocity[0] = node.getVelocity(0); - velocity[1] = node.getVelocity(1); - reynoldsNumber[0] = node.getReynoldsNumber(0); - interphaseContactLength = node.getInterphaseContactLength(0); - wallContactLength[0] = node.getWallContactLength(0); - wallContactLength[1] = node.getWallContactLength(1); - numberOfComponents = node.getBulkSystem().getPhases()[0].getNumberOfComponents(); - nodeCenter = node.getDistanceToCenterOfNode(); - } - - /** {@inheritDoc} */ - @Override - public int getNumberOfComponents() { - return numberOfComponents; - } - - /** {@inheritDoc} */ - @Override - public double getInterphaseContactLength() { - return interphaseContactLength; - } - - /** {@inheritDoc} */ - @Override - public double getWallContactLength(int phase) { - return wallContactLength[phase]; - } - - /** {@inheritDoc} */ - @Override - public double getPressure(int i) { - return pressure[i]; - } - - /** {@inheritDoc} */ - @Override - public double getReynoldsNumber(int i) { - return reynoldsNumber[i]; - } - - /** {@inheritDoc} */ - @Override - public double getDistanceToCenterOfNode() { - return nodeCenter; - } - - /** {@inheritDoc} */ - @Override - public double getTemperature(int i) { - return temperature[i]; - } - - /** {@inheritDoc} */ - @Override - public double getInterfaceTemperature(int i) { - return interfaceTemperature[i]; - } - - /** {@inheritDoc} */ - @Override - public double getVelocity(int i) { - return velocity[i]; - } - - /** {@inheritDoc} */ - @Override - public double getBulkComposition(int i, int phase) { - return bulkComposition[phase][i]; - } - - /** {@inheritDoc} */ - @Override - public double getInterfaceComposition(int i, int phase) { - return interfaceComposition[phase][i]; - } - - /** {@inheritDoc} */ - @Override - public double getMolarFlux(int i, int phase) { - return molarFlux[phase][i]; - } - - /** {@inheritDoc} */ - @Override - public double getEffectiveMassTransferCoefficient(int i, int phase) { - return effectiveMassTransferCoefficient[phase][i]; - } - - /** {@inheritDoc} */ - @Override - public double getEffectiveSchmidtNumber(int i, int phase) { - return effectiveSchmidtNumber[phase][i]; - } - - /** {@inheritDoc} */ - @Override - public double getPhaseFraction(int phase) { - return phaseFraction[phase]; - } + public double[] temperature = new double[2]; + public double[] reynoldsNumber = new double[2]; + public double[] interfaceTemperature = new double[2]; + public double[] pressure = new double[2]; + public double[] velocity = new double[2]; + public double[] phaseFraction = new double[2]; + public double[] wallContactLength = new double[2]; + public double[][] bulkComposition, interfaceComposition, effectiveMassTransferCoefficient, + effectiveSchmidtNumber; + public double[][] molarFlux; + public double interphaseContactLength = 0.0; + public double nodeCenter; + public int numberOfComponents = 0; + + /** + *

+ * Constructor for FlowNodeVisualization. + *

+ */ + public FlowNodeVisualization() {} + + /** {@inheritDoc} */ + @Override + public void setData(FlowNodeInterface node) { + temperature[0] = node.getBulkSystem().getPhases()[0].getTemperature(); + temperature[1] = node.getBulkSystem().getPhases()[1].getTemperature(); + pressure[0] = node.getBulkSystem().getPhases()[0].getPressure(); + pressure[1] = node.getBulkSystem().getPhases()[1].getPressure(); + velocity[0] = node.getVelocity(0); + velocity[1] = node.getVelocity(1); + reynoldsNumber[0] = node.getReynoldsNumber(0); + interphaseContactLength = node.getInterphaseContactLength(0); + wallContactLength[0] = node.getWallContactLength(0); + wallContactLength[1] = node.getWallContactLength(1); + numberOfComponents = node.getBulkSystem().getPhases()[0].getNumberOfComponents(); + nodeCenter = node.getDistanceToCenterOfNode(); + } + + /** {@inheritDoc} */ + @Override + public int getNumberOfComponents() { + return numberOfComponents; + } + + /** {@inheritDoc} */ + @Override + public double getInterphaseContactLength() { + return interphaseContactLength; + } + + /** {@inheritDoc} */ + @Override + public double getWallContactLength(int phase) { + return wallContactLength[phase]; + } + + /** {@inheritDoc} */ + @Override + public double getPressure(int i) { + return pressure[i]; + } + + /** {@inheritDoc} */ + @Override + public double getReynoldsNumber(int i) { + return reynoldsNumber[i]; + } + + /** {@inheritDoc} */ + @Override + public double getDistanceToCenterOfNode() { + return nodeCenter; + } + + /** {@inheritDoc} */ + @Override + public double getTemperature(int i) { + return temperature[i]; + } + + /** {@inheritDoc} */ + @Override + public double getInterfaceTemperature(int i) { + return interfaceTemperature[i]; + } + + /** {@inheritDoc} */ + @Override + public double getVelocity(int i) { + return velocity[i]; + } + + /** {@inheritDoc} */ + @Override + public double getBulkComposition(int i, int phase) { + return bulkComposition[phase][i]; + } + + /** {@inheritDoc} */ + @Override + public double getInterfaceComposition(int i, int phase) { + return interfaceComposition[phase][i]; + } + + /** {@inheritDoc} */ + @Override + public double getMolarFlux(int i, int phase) { + return molarFlux[phase][i]; + } + + /** {@inheritDoc} */ + @Override + public double getEffectiveMassTransferCoefficient(int i, int phase) { + return effectiveMassTransferCoefficient[phase][i]; + } + + /** {@inheritDoc} */ + @Override + public double getEffectiveSchmidtNumber(int i, int phase) { + return effectiveSchmidtNumber[phase][i]; + } + + /** {@inheritDoc} */ + @Override + public double getPhaseFraction(int phase) { + return phaseFraction[phase]; + } } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/FlowNodeVisualizationInterface.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/FlowNodeVisualizationInterface.java index 021da712af..308b7321fc 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/FlowNodeVisualizationInterface.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/FlowNodeVisualizationInterface.java @@ -3,6 +3,7 @@ * * Created on 5. august 2001, 16:28 */ + package neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowNodeVisualization; import neqsim.fluidMechanics.flowNode.FlowNodeInterface; @@ -16,164 +17,164 @@ * @version $Id: $Id */ public interface FlowNodeVisualizationInterface { - /** - *

- * setData. - *

- * - * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object - */ - public void setData(FlowNodeInterface node); - - /** - *

- * getPressure. - *

- * - * @param i a int - * @return a double - */ - public double getPressure(int i); - - /** - *

- * getTemperature. - *

- * - * @param i a int - * @return a double - */ - public double getTemperature(int i); - - /** - *

- * getDistanceToCenterOfNode. - *

- * - * @return a double - */ - public double getDistanceToCenterOfNode(); - - /** - *

- * getVelocity. - *

- * - * @param i a int - * @return a double - */ - public double getVelocity(int i); - - /** - *

- * getBulkComposition. - *

- * - * @param i a int - * @param phase a int - * @return a double - */ - public double getBulkComposition(int i, int phase); - - /** - *

- * getInterfaceComposition. - *

- * - * @param i a int - * @param phase a int - * @return a double - */ - public double getInterfaceComposition(int i, int phase); - - /** - *

- * Get number of components added. - *

- * - * @return the number of components. - */ - public int getNumberOfComponents(); - - /** - *

- * getPhaseFraction. - *

- * - * @param phase a int - * @return a double - */ - public double getPhaseFraction(int phase); - - /** - *

- * getMolarFlux. - *

- * - * @param i a int - * @param phase a int - * @return a double - */ - public double getMolarFlux(int i, int phase); - - /** - *

- * getInterfaceTemperature. - *

- * - * @param i a int - * @return a double - */ - public double getInterfaceTemperature(int i); - - /** - *

- * getInterphaseContactLength. - *

- * - * @return a double - */ - public double getInterphaseContactLength(); - - /** - *

- * getWallContactLength. - *

- * - * @param phase a int - * @return a double - */ - public double getWallContactLength(int phase); - - /** - *

- * getReynoldsNumber. - *

- * - * @param i a int - * @return a double - */ - public double getReynoldsNumber(int i); - - /** - *

- * getEffectiveMassTransferCoefficient. - *

- * - * @param i a int - * @param phase a int - * @return a double - */ - public double getEffectiveMassTransferCoefficient(int i, int phase); - - /** - *

- * getEffectiveSchmidtNumber. - *

- * - * @param i a int - * @param phase a int - * @return a double - */ - public double getEffectiveSchmidtNumber(int i, int phase); + /** + *

+ * setData. + *

+ * + * @param node a {@link neqsim.fluidMechanics.flowNode.FlowNodeInterface} object + */ + public void setData(FlowNodeInterface node); + + /** + *

+ * getPressure. + *

+ * + * @param i a int + * @return a double + */ + public double getPressure(int i); + + /** + *

+ * getTemperature. + *

+ * + * @param i a int + * @return a double + */ + public double getTemperature(int i); + + /** + *

+ * getDistanceToCenterOfNode. + *

+ * + * @return a double + */ + public double getDistanceToCenterOfNode(); + + /** + *

+ * getVelocity. + *

+ * + * @param i a int + * @return a double + */ + public double getVelocity(int i); + + /** + *

+ * getBulkComposition. + *

+ * + * @param i a int + * @param phase a int + * @return a double + */ + public double getBulkComposition(int i, int phase); + + /** + *

+ * getInterfaceComposition. + *

+ * + * @param i a int + * @param phase a int + * @return a double + */ + public double getInterfaceComposition(int i, int phase); + + /** + *

+ * Get number of components added. + *

+ * + * @return the number of components. + */ + public int getNumberOfComponents(); + + /** + *

+ * getPhaseFraction. + *

+ * + * @param phase a int + * @return a double + */ + public double getPhaseFraction(int phase); + + /** + *

+ * getMolarFlux. + *

+ * + * @param i a int + * @param phase a int + * @return a double + */ + public double getMolarFlux(int i, int phase); + + /** + *

+ * getInterfaceTemperature. + *

+ * + * @param i a int + * @return a double + */ + public double getInterfaceTemperature(int i); + + /** + *

+ * getInterphaseContactLength. + *

+ * + * @return a double + */ + public double getInterphaseContactLength(); + + /** + *

+ * getWallContactLength. + *

+ * + * @param phase a int + * @return a double + */ + public double getWallContactLength(int phase); + + /** + *

+ * getReynoldsNumber. + *

+ * + * @param i a int + * @return a double + */ + public double getReynoldsNumber(int i); + + /** + *

+ * getEffectiveMassTransferCoefficient. + *

+ * + * @param i a int + * @param phase a int + * @return a double + */ + public double getEffectiveMassTransferCoefficient(int i, int phase); + + /** + *

+ * getEffectiveSchmidtNumber. + *

+ * + * @param i a int + * @param phase a int + * @return a double + */ + public double getEffectiveSchmidtNumber(int i, int phase); } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/onePhaseFlowNodeVisualization/OnePhaseFlowNodeVisualization.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/onePhaseFlowNodeVisualization/OnePhaseFlowNodeVisualization.java index d588dbd227..ca77187ea5 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/onePhaseFlowNodeVisualization/OnePhaseFlowNodeVisualization.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/onePhaseFlowNodeVisualization/OnePhaseFlowNodeVisualization.java @@ -3,6 +3,7 @@ * * Created on 5. august 2001, 16:29 */ + package neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowNodeVisualization.onePhaseFlowNodeVisualization; import neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowNodeVisualization.FlowNodeVisualization; @@ -16,10 +17,10 @@ * @version $Id: $Id */ public class OnePhaseFlowNodeVisualization extends FlowNodeVisualization { - /** - *

- * Constructor for OnePhaseFlowNodeVisualization. - *

- */ - public OnePhaseFlowNodeVisualization() {} + /** + *

+ * Constructor for OnePhaseFlowNodeVisualization. + *

+ */ + public OnePhaseFlowNodeVisualization() {} } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/onePhaseFlowNodeVisualization/onePhasePipeFlowNodeVisualization/OnePhasePipeFlowNodeVisualization.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/onePhaseFlowNodeVisualization/onePhasePipeFlowNodeVisualization/OnePhasePipeFlowNodeVisualization.java index 6cbd48082c..a274192a8d 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/onePhaseFlowNodeVisualization/onePhasePipeFlowNodeVisualization/OnePhasePipeFlowNodeVisualization.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/onePhaseFlowNodeVisualization/onePhasePipeFlowNodeVisualization/OnePhasePipeFlowNodeVisualization.java @@ -3,6 +3,7 @@ * * Created on 5. august 2001, 16:29 */ + package neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowNodeVisualization.onePhaseFlowNodeVisualization.onePhasePipeFlowNodeVisualization; import neqsim.fluidMechanics.flowNode.FlowNodeInterface; @@ -17,22 +18,21 @@ * @version $Id: $Id */ public class OnePhasePipeFlowNodeVisualization extends OnePhaseFlowNodeVisualization { - /** - *

- * Constructor for OnePhasePipeFlowNodeVisualization. - *

- */ - public OnePhasePipeFlowNodeVisualization() {} + /** + *

+ * Constructor for OnePhasePipeFlowNodeVisualization. + *

+ */ + public OnePhasePipeFlowNodeVisualization() {} - /** {@inheritDoc} */ - @Override - public void setData(FlowNodeInterface node) { - super.setData(node); - bulkComposition = - new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; + /** {@inheritDoc} */ + @Override + public void setData(FlowNodeInterface node) { + super.setData(node); + bulkComposition = new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; - for (int i = 0; i < node.getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - bulkComposition[0][i] = node.getBulkSystem().getPhases()[0].getComponents()[i].getx(); - } + for (int i = 0; i < node.getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + bulkComposition[0][i] = node.getBulkSystem().getPhases()[0].getComponents()[i].getx(); } + } } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/twoPhaseFlowNodeVisualization/TwoPhaseFlowNodeVisualization.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/twoPhaseFlowNodeVisualization/TwoPhaseFlowNodeVisualization.java index 57d1b8a80d..127c4ebe7c 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/twoPhaseFlowNodeVisualization/TwoPhaseFlowNodeVisualization.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowNodeVisualization/twoPhaseFlowNodeVisualization/TwoPhaseFlowNodeVisualization.java @@ -12,54 +12,51 @@ * @version $Id: $Id */ public class TwoPhaseFlowNodeVisualization extends FlowNodeVisualization { - /** - *

- * Constructor for TwoPhaseFlowNodeVisualization. - *

- */ - public TwoPhaseFlowNodeVisualization() {} + /** + *

+ * Constructor for TwoPhaseFlowNodeVisualization. + *

+ */ + public TwoPhaseFlowNodeVisualization() {} - /** {@inheritDoc} */ - @Override - public void setData(FlowNodeInterface node) { - super.setData(node); - bulkComposition = - new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; - effectiveMassTransferCoefficient = - new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; - effectiveSchmidtNumber = - new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; - interfaceComposition = - new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; - molarFlux = new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; + /** {@inheritDoc} */ + @Override + public void setData(FlowNodeInterface node) { + super.setData(node); + bulkComposition = new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; + effectiveMassTransferCoefficient = + new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; + effectiveSchmidtNumber = + new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; + interfaceComposition = + new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; + molarFlux = new double[2][node.getBulkSystem().getPhases()[0].getNumberOfComponents()]; - for (int i = 0; i < node.getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { - bulkComposition[0][i] = node.getBulkSystem().getPhases()[0].getComponents()[i].getx(); - bulkComposition[1][i] = node.getBulkSystem().getPhases()[1].getComponents()[i].getx(); - effectiveMassTransferCoefficient[1][i] = - node.getFluidBoundary().getEffectiveMassTransferCoefficient(1, i); - effectiveMassTransferCoefficient[0][i] = - node.getFluidBoundary().getEffectiveMassTransferCoefficient(0, i); - effectiveSchmidtNumber[0][i] = node.getEffectiveSchmidtNumber(0, i); - effectiveSchmidtNumber[1][i] = node.getEffectiveSchmidtNumber(1, i); - // System.out.println("sc " + effectiveSchmidtNumber[1][i]); - interfaceComposition[0][i] = - node.getFluidBoundary().getInterphaseSystem().getPhases()[0].getComponents()[i] - .getx(); - interfaceComposition[1][i] = - node.getFluidBoundary().getInterphaseSystem().getPhases()[1].getComponents()[i] - .getx(); - molarFlux[0][i] = node.getFluidBoundary().getInterphaseMolarFlux(i); - molarFlux[1][i] = node.getFluidBoundary().getInterphaseMolarFlux(i); - } - - reynoldsNumber[0] = node.getReynoldsNumber(0); - reynoldsNumber[1] = node.getReynoldsNumber(1); - phaseFraction[0] = node.getPhaseFraction(0); - phaseFraction[1] = node.getPhaseFraction(1); - interfaceTemperature[0] = - node.getFluidBoundary().getInterphaseSystem().getPhases()[0].getTemperature(); - interfaceTemperature[1] = - node.getFluidBoundary().getInterphaseSystem().getPhases()[1].getTemperature(); + for (int i = 0; i < node.getBulkSystem().getPhases()[0].getNumberOfComponents(); i++) { + bulkComposition[0][i] = node.getBulkSystem().getPhases()[0].getComponents()[i].getx(); + bulkComposition[1][i] = node.getBulkSystem().getPhases()[1].getComponents()[i].getx(); + effectiveMassTransferCoefficient[1][i] = + node.getFluidBoundary().getEffectiveMassTransferCoefficient(1, i); + effectiveMassTransferCoefficient[0][i] = + node.getFluidBoundary().getEffectiveMassTransferCoefficient(0, i); + effectiveSchmidtNumber[0][i] = node.getEffectiveSchmidtNumber(0, i); + effectiveSchmidtNumber[1][i] = node.getEffectiveSchmidtNumber(1, i); + // System.out.println("sc " + effectiveSchmidtNumber[1][i]); + interfaceComposition[0][i] = + node.getFluidBoundary().getInterphaseSystem().getPhases()[0].getComponents()[i].getx(); + interfaceComposition[1][i] = + node.getFluidBoundary().getInterphaseSystem().getPhases()[1].getComponents()[i].getx(); + molarFlux[0][i] = node.getFluidBoundary().getInterphaseMolarFlux(i); + molarFlux[1][i] = node.getFluidBoundary().getInterphaseMolarFlux(i); } + + reynoldsNumber[0] = node.getReynoldsNumber(0); + reynoldsNumber[1] = node.getReynoldsNumber(1); + phaseFraction[0] = node.getPhaseFraction(0); + phaseFraction[1] = node.getPhaseFraction(1); + interfaceTemperature[0] = + node.getFluidBoundary().getInterphaseSystem().getPhases()[0].getTemperature(); + interfaceTemperature[1] = + node.getFluidBoundary().getInterphaseSystem().getPhases()[1].getTemperature(); + } } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/FlowSystemVisualization.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/FlowSystemVisualization.java index a504ca6d3b..104846ebf3 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/FlowSystemVisualization.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/FlowSystemVisualization.java @@ -13,78 +13,73 @@ * @version $Id: $Id */ public class FlowSystemVisualization implements FlowSystemVisualizationInterface { - protected FlowNodeVisualizationInterface[][] flowNodes; - protected FlowSystemInterface[] flowSystem; - protected int time = 0; - protected double[] absTime; + protected FlowNodeVisualizationInterface[][] flowNodes; + protected FlowSystemInterface[] flowSystem; + protected int time = 0; + protected double[] absTime; - /** - *

- * Constructor for FlowSystemVisualization. - *

- */ - public FlowSystemVisualization() {} + /** + *

+ * Constructor for FlowSystemVisualization. + *

+ */ + public FlowSystemVisualization() {} - /** - *

- * Constructor for FlowSystemVisualization. - *

- * - * @param nodes a int - * @param timeSteps a int - */ - public FlowSystemVisualization(int nodes, int timeSteps) { - flowNodes = new FlowNodeVisualization[timeSteps][nodes]; - flowSystem = new FlowSystemInterface[timeSteps]; - absTime = new double[timeSteps]; - for (int i = 0; i < timeSteps; i++) { - for (int j = 0; j < nodes; j++) { - flowNodes[i][j] = new FlowNodeVisualization(); - } - } - // System.out.println("nodes " + nodes); - // System.out.println("times " + time); + /** + *

+ * Constructor for FlowSystemVisualization. + *

+ * + * @param nodes a int + * @param timeSteps a int + */ + public FlowSystemVisualization(int nodes, int timeSteps) { + flowNodes = new FlowNodeVisualization[timeSteps][nodes]; + flowSystem = new FlowSystemInterface[timeSteps]; + absTime = new double[timeSteps]; + for (int i = 0; i < timeSteps; i++) { + for (int j = 0; j < nodes; j++) { + flowNodes[i][j] = new FlowNodeVisualization(); + } } + // System.out.println("nodes " + nodes); + // System.out.println("times " + time); + } - /** {@inheritDoc} */ - @Override - public void setNextData(FlowSystemInterface system) { - flowSystem[time] = system; - absTime[time] = 0; - for (int i = 0; i < flowNodes[time].length; i++) { - flowNodes[time][i].setData(system.getNode(i)); - } - time++; - // System.out.println("time " + time); + /** {@inheritDoc} */ + @Override + public void setNextData(FlowSystemInterface system) { + flowSystem[time] = system; + absTime[time] = 0; + for (int i = 0; i < flowNodes[time].length; i++) { + flowNodes[time][i].setData(system.getNode(i)); } + time++; + // System.out.println("time " + time); + } - /** {@inheritDoc} */ - @Override - public void setNextData(FlowSystemInterface system, double abstime) { - flowSystem[time] = system; - absTime[time] = abstime; - for (int i = 0; i < flowNodes[time].length; i++) { - flowNodes[time][i].setData(system.getNode(i)); - } - time++; + /** {@inheritDoc} */ + @Override + public void setNextData(FlowSystemInterface system, double abstime) { + flowSystem[time] = system; + absTime[time] = abstime; + for (int i = 0; i < flowNodes[time].length; i++) { + flowNodes[time][i].setData(system.getNode(i)); } + time++; + } - /** {@inheritDoc} */ - @Override - public void createNetCdfFile(String name) { - System.out.println("ok..."); - for (int j = 0; j < time; j++) { - for (int i = 0; i < flowNodes[j].length; i++) { - System.out.println("time " + time + " pres " + flowNodes[j][i].getPressure(0)); - } - } - } + /* + * public void createNetCdfFile(String name) { System.out.println("ok..."); for (int j = 0; j < + * time; j++) { for (int i = 0; i < flowNodes[j].length; i++) { System.out.println("time " + time + * + " pres " + flowNodes[j][i].getPressure(0)); } } } + */ - /** {@inheritDoc} */ - @Override - public void setPoints() {} + /** {@inheritDoc} */ + @Override + public void setPoints() {} - /** {@inheritDoc} */ - @Override - public void displayResult(String name) {} + /** {@inheritDoc} */ + @Override + public void displayResult(String name) {} } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/FlowSystemVisualizationInterface.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/FlowSystemVisualizationInterface.java index e760598231..2a07c2c724 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/FlowSystemVisualizationInterface.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/FlowSystemVisualizationInterface.java @@ -11,47 +11,38 @@ * @version $Id: $Id */ public interface FlowSystemVisualizationInterface { - /** - *

- * setPoints. - *

- */ - public void setPoints(); + /** + *

+ * setPoints. + *

+ */ + public void setPoints(); - /** - *

- * displayResult. - *

- * - * @param name a {@link java.lang.String} object - */ - public void displayResult(String name); + /** + *

+ * displayResult. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void displayResult(String name); - /** - *

- * setNextData. - *

- * - * @param system a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object - */ - public void setNextData(FlowSystemInterface system); + /** + *

+ * setNextData. + *

+ * + * @param system a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object + */ + public void setNextData(FlowSystemInterface system); - /** - *

- * setNextData. - *

- * - * @param system a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object - * @param abstime a double - */ - public void setNextData(FlowSystemInterface system, double abstime); - - /** - *

- * createNetCdfFile. - *

- * - * @param name a {@link java.lang.String} object - */ - public void createNetCdfFile(String name); + /** + *

+ * setNextData. + *

+ * + * @param system a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object + * @param abstime a double + */ + public void setNextData(FlowSystemInterface system, double abstime); } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/onePhaseFlowVisualization/OnePhaseFlowVisualization.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/onePhaseFlowVisualization/OnePhaseFlowVisualization.java index 8ecf8d6a5c..74922d62f8 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/onePhaseFlowVisualization/OnePhaseFlowVisualization.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/onePhaseFlowVisualization/OnePhaseFlowVisualization.java @@ -3,6 +3,7 @@ * * Created on 26. oktober 2000, 20:08 */ + package neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.onePhaseFlowVisualization; /** @@ -14,23 +15,23 @@ * @version $Id: $Id */ public class OnePhaseFlowVisualization extends - neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.FlowSystemVisualization { - /** - *

- * Constructor for OnePhaseFlowVisualization. - *

- */ - public OnePhaseFlowVisualization() {} + neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.FlowSystemVisualization { + /** + *

+ * Constructor for OnePhaseFlowVisualization. + *

+ */ + public OnePhaseFlowVisualization() {} - /** - *

- * Constructor for OnePhaseFlowVisualization. - *

- * - * @param nodes a int - * @param timeSteps a int - */ - public OnePhaseFlowVisualization(int nodes, int timeSteps) { - super(nodes, timeSteps); - } + /** + *

+ * Constructor for OnePhaseFlowVisualization. + *

+ * + * @param nodes a int + * @param timeSteps a int + */ + public OnePhaseFlowVisualization(int nodes, int timeSteps) { + super(nodes, timeSteps); + } } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/onePhaseFlowVisualization/pipeFlowVisualization/PipeFlowVisualization.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/onePhaseFlowVisualization/pipeFlowVisualization/PipeFlowVisualization.java index ca4759d384..40cb106778 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/onePhaseFlowVisualization/pipeFlowVisualization/PipeFlowVisualization.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/onePhaseFlowVisualization/pipeFlowVisualization/PipeFlowVisualization.java @@ -3,6 +3,7 @@ * * Created on 26. oktober 2000, 20:09 */ + package neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.onePhaseFlowVisualization.pipeFlowVisualization; /** @@ -14,184 +15,153 @@ * @version $Id: $Id */ public class PipeFlowVisualization extends - neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.onePhaseFlowVisualization.OnePhaseFlowVisualization { - double[][] pressurePoint = new double[10][10]; - double[][] velocityPoint = new double[10][10]; - double[][] temperaturePoint = new double[10][10]; - public double[][][] bulkComposition; - double[] xPlace = new double[10]; - double[] timeArray = new double[10]; + neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.onePhaseFlowVisualization.OnePhaseFlowVisualization { + double[][] pressurePoint = new double[10][10]; + double[][] velocityPoint = new double[10][10]; + double[][] temperaturePoint = new double[10][10]; + public double[][][] bulkComposition; + double[] xPlace = new double[10]; + double[] timeArray = new double[10]; - /** - *

- * Constructor for PipeFlowVisualization. - *

- */ - public PipeFlowVisualization() {} + /** + *

+ * Constructor for PipeFlowVisualization. + *

+ */ + public PipeFlowVisualization() {} - /** - *

- * Constructor for PipeFlowVisualization. - *

- * - * @param nodes a int - * @param timeSteps a int - */ - public PipeFlowVisualization(int nodes, int timeSteps) { - flowSystem = new neqsim.fluidMechanics.flowSystem.FlowSystemInterface[timeSteps]; - flowNodes = - new neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowNodeVisualization.onePhaseFlowNodeVisualization.onePhasePipeFlowNodeVisualization.OnePhasePipeFlowNodeVisualization[timeSteps][nodes]; - absTime = new double[timeSteps]; - for (int i = 0; i < timeSteps; i++) { - for (int j = 0; j < nodes; j++) { - flowNodes[i][j] = - new neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowNodeVisualization.onePhaseFlowNodeVisualization.onePhasePipeFlowNodeVisualization.OnePhasePipeFlowNodeVisualization(); - } - } - // System.out.println("nodes " + nodes); - // System.out.println("times " + time); + /** + *

+ * Constructor for PipeFlowVisualization. + *

+ * + * @param nodes a int + * @param timeSteps a int + */ + public PipeFlowVisualization(int nodes, int timeSteps) { + flowSystem = new neqsim.fluidMechanics.flowSystem.FlowSystemInterface[timeSteps]; + flowNodes = + new neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowNodeVisualization.onePhaseFlowNodeVisualization.onePhasePipeFlowNodeVisualization.OnePhasePipeFlowNodeVisualization[timeSteps][nodes]; + absTime = new double[timeSteps]; + for (int i = 0; i < timeSteps; i++) { + for (int j = 0; j < nodes; j++) { + flowNodes[i][j] = + new neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowNodeVisualization.onePhaseFlowNodeVisualization.onePhasePipeFlowNodeVisualization.OnePhasePipeFlowNodeVisualization(); + } } + // System.out.println("nodes " + nodes); + // System.out.println("times " + time); + } - /** {@inheritDoc} */ - @Override - public void setPoints() { - pressurePoint = new double[time][flowNodes[0].length]; - temperaturePoint = new double[time][flowNodes[0].length]; - velocityPoint = new double[time][flowNodes[0].length]; - xPlace = new double[flowNodes[0].length]; - timeArray = new double[time]; - bulkComposition = - new double[flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; + /** {@inheritDoc} */ + @Override + public void setPoints() { + pressurePoint = new double[time][flowNodes[0].length]; + temperaturePoint = new double[time][flowNodes[0].length]; + velocityPoint = new double[time][flowNodes[0].length]; + xPlace = new double[flowNodes[0].length]; + timeArray = new double[time]; + bulkComposition = + new double[flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; - for (int j = 0; j < time; j++) { - timeArray[j] = absTime[j]; - for (int i = 0; i < flowNodes[j].length; i++) { - xPlace[i] = flowNodes[j][i].getDistanceToCenterOfNode(); - pressurePoint[j][i] = flowNodes[j][i].getPressure(0); - temperaturePoint[j][i] = flowNodes[j][i].getTemperature(0); - velocityPoint[j][i] = flowNodes[j][i].getVelocity(0); - for (int p = 0; p < flowNodes[0][0].getNumberOfComponents(); p++) { - bulkComposition[p][j][i] = flowNodes[j][i].getBulkComposition(p, 0); - } - } + for (int j = 0; j < time; j++) { + timeArray[j] = absTime[j]; + for (int i = 0; i < flowNodes[j].length; i++) { + xPlace[i] = flowNodes[j][i].getDistanceToCenterOfNode(); + pressurePoint[j][i] = flowNodes[j][i].getPressure(0); + temperaturePoint[j][i] = flowNodes[j][i].getTemperature(0); + velocityPoint[j][i] = flowNodes[j][i].getVelocity(0); + for (int p = 0; p < flowNodes[0][0].getNumberOfComponents(); p++) { + bulkComposition[p][j][i] = flowNodes[j][i].getBulkComposition(p, 0); } + } } + } - /** - *

- * calcPoints. - *

+ /** + *

+ * calcPoints. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void calcPoints(String name) { + double[][] points = new double[1][1]; + setPoints(); + + if (name.equals("pressure")) { + points = pressurePoint; + } + if (name.equals("temperature")) { + points = temperaturePoint; + } + if (name.equals("velocity")) { + points = velocityPoint; + } + if (name.equals("composition")) { + points = bulkComposition[0]; + } + /* + * try { System.out.println("points: " + points.length); * - * @param name a {@link java.lang.String} object + * if (pressurePoint.length > 1) { System.out.println("3D plot "); plot = new + * neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot("title[0]", "title[1]", "title[2]"); + * ((neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot) plot).setXYvals(150, 160, + * points[0].length, 10, 20, points.length); + * ((neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot) plot).setZvals(points); } else { + * System.out.println("2D plot "); plot = new + * neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass("title[1]", "title[2]"); + * ((neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass) plot) .setLineXYVals(xPlace, + * points[0]); ((neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass) plot).setXYVals(xPlace, + * points[0]); } } catch (Exception ex) { System.out.println(ex.toString()); + * System.out.println("plotting failed"); } */ - public void calcPoints(String name) { - double[][] points = new double[1][1]; - setPoints(); + } - if (name.equals("pressure")) { - points = pressurePoint; - } - if (name.equals("temperature")) { - points = temperaturePoint; - } - if (name.equals("velocity")) { - points = velocityPoint; - } - if (name.equals("composition")) { - points = bulkComposition[0]; - } -/* - try { - System.out.println("points: " + points.length); + /** {@inheritDoc} */ + @Override + public void displayResult(String name) { + double[][] points = new double[1][1]; + setPoints(); - if (pressurePoint.length > 1) { - System.out.println("3D plot "); - plot = new neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot("title[0]", "title[1]", - "title[2]"); - ((neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot) plot).setXYvals(150, 160, - points[0].length, 10, 20, points.length); - ((neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot) plot).setZvals(points); - } else { - System.out.println("2D plot "); - plot = new neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass("title[1]", - "title[2]"); - ((neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass) plot) - .setLineXYVals(xPlace, points[0]); - ((neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass) plot).setXYVals(xPlace, - points[0]); - } - } catch (Exception e) { - System.out.println(e.toString()); - System.out.println("plotting failed"); - } - */ + if (name.equals("pressure")) { + points = pressurePoint; } - - /** {@inheritDoc} */ - @Override - public void displayResult(String name) { - double[][] points = new double[1][1]; - setPoints(); - - if (name.equals("pressure")) { - points = pressurePoint; - } - if (name.equals("temperature")) { - points = temperaturePoint; - } - if (name.equals("velocity")) { - points = velocityPoint; - } - if (name.equals("composition")) { - points = bulkComposition[0]; - } -/* - try { - System.out.println("points: " + points.length); - - if (pressurePoint.length > 1) { - System.out.println("3D plot "); - plot = new neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot("title[0]", "title[1]", - "title[2]"); - ((neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot) plot).setXYvals(150, 160, - points[0].length, 10, 20, points.length); - ((neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot) plot).setZvals(points); - } else { - System.out.println("2D plot "); - plot = new neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass("title[1]", - "title[2]"); - ((neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass) plot) - .setLineXYVals(xPlace, points[0]); - ((neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass) plot).setXYVals(xPlace, - points[0]); - } - plot.init(); - } catch (Exception e) { - System.out.println(e.toString()); - System.out.println("plotting failed"); - } - */ + if (name.equals("temperature")) { + points = temperaturePoint; } - - /** {@inheritDoc} */ - /* - @Override - public void createNetCdfFile(String name) { - calcPoints(name); - neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF3D.NetCdf3D file = - new neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF3D.NetCdf3D(); - file.setOutputFileName(name); - file.setXvalues(timeArray, "time", "sec"); - file.setYvalues(xPlace, "length", "meter"); - file.setZvalues(temperaturePoint, "temperature [K]", "sec"); - file.setZvalues(pressurePoint, "pressure [bar]", "sec"); - file.setZvalues(velocityPoint, "velocity [m/sec]", "sec"); - if (absTime.length > 1) { - for (int p = 0; p < flowNodes[0][0].getNumberOfComponents(); p++) { - file.setZvalues(bulkComposition[p], ("comp " + p), "sec"); - } - } - file.createFile(); + if (name.equals("velocity")) { + points = velocityPoint; + } + if (name.equals("composition")) { + points = bulkComposition[0]; } - */ + /* + * try { System.out.println("points: " + points.length); + * + * if (pressurePoint.length > 1) { System.out.println("3D plot "); plot = new + * neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot("title[0]", "title[1]", "title[2]"); + * ((neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot) plot).setXYvals(150, 160, + * points[0].length, 10, 20, points.length); + * ((neqsim.dataPresentation.visAD.visAd3D.visAd3DPlot) plot).setZvals(points); } else { + * System.out.println("2D plot "); plot = new + * neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass("title[1]", "title[2]"); + * ((neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass) plot) .setLineXYVals(xPlace, + * points[0]); ((neqsim.dataPresentation.visAD.visAd2D.visAd2dBaseClass) plot).setXYVals(xPlace, + * points[0]); } plot.init(); } catch (Exception ex) { System.out.println(ex.toString()); + * System.out.println("plotting failed"); } + */ + } + + /* + * public void createNetCdfFile(String name) { calcPoints(name); + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF3D.NetCdf3D file = new + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF3D.NetCdf3D(); + * file.setOutputFileName(name); file.setXvalues(timeArray, "time", "sec"); + * file.setYvalues(xPlace, "length", "meter"); file.setZvalues(temperaturePoint, + * "temperature [K]", "sec"); file.setZvalues(pressurePoint, "pressure [bar]", "sec"); + * file.setZvalues(velocityPoint, "velocity [m/sec]", "sec"); if (absTime.length > 1) { for (int p + * = 0; p < flowNodes[0][0].getNumberOfComponents(); p++) { file.setZvalues(bulkComposition[p], + * ("comp " + p), "sec"); } } file.createFile(); } + */ } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/twoPhaseFlowVisualization/TwoPhaseFlowVisualization.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/twoPhaseFlowVisualization/TwoPhaseFlowVisualization.java index df0a87e5eb..123244bbb3 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/twoPhaseFlowVisualization/TwoPhaseFlowVisualization.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/twoPhaseFlowVisualization/TwoPhaseFlowVisualization.java @@ -9,23 +9,23 @@ * @version $Id: $Id */ public class TwoPhaseFlowVisualization extends - neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.FlowSystemVisualization { - /** - *

- * Constructor for TwoPhaseFlowVisualization. - *

- */ - public TwoPhaseFlowVisualization() {} + neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.FlowSystemVisualization { + /** + *

+ * Constructor for TwoPhaseFlowVisualization. + *

+ */ + public TwoPhaseFlowVisualization() {} - /** - *

- * Constructor for TwoPhaseFlowVisualization. - *

- * - * @param nodes a int - * @param timeSteps a int - */ - public TwoPhaseFlowVisualization(int nodes, int timeSteps) { - super(nodes, timeSteps); - } + /** + *

+ * Constructor for TwoPhaseFlowVisualization. + *

+ * + * @param nodes a int + * @param timeSteps a int + */ + public TwoPhaseFlowVisualization(int nodes, int timeSteps) { + super(nodes, timeSteps); + } } diff --git a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/twoPhaseFlowVisualization/twoPhasePipeFlowVisualization/TwoPhasePipeFlowVisualization.java b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/twoPhaseFlowVisualization/twoPhasePipeFlowVisualization/TwoPhasePipeFlowVisualization.java index 1a4ec9c527..b902f8adb5 100644 --- a/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/twoPhaseFlowVisualization/twoPhasePipeFlowVisualization/TwoPhasePipeFlowVisualization.java +++ b/src/main/java/neqsim/fluidMechanics/util/fluidMechanicsVisualization/flowSystemVisualization/twoPhaseFlowVisualization/twoPhasePipeFlowVisualization/TwoPhasePipeFlowVisualization.java @@ -12,199 +12,186 @@ * @version $Id: $Id */ public class TwoPhasePipeFlowVisualization extends - neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.twoPhaseFlowVisualization.TwoPhaseFlowVisualization { - double[][][] pressurePoint = new double[2][10][10]; - double[][][] velocityPoint = new double[2][10][10]; - double[][][] reynoldsNumber = new double[2][10][10]; - double[][][] phaseFraction = new double[2][10][10]; - double[][][] temperaturePoint = new double[2][10][10]; - double[][][] interphaseContactLength = new double[2][10][10]; - double[][][] interfaceTemperaturePoint = new double[2][10][10]; - public double[][][][] bulkComposition, interfaceComposition, effectiveMassTransferCoefficient; // phase, - // time, - // component, - // node - public double[][][][] molarFlux, schmidtNumber; - public double[][][][] totalMolarMassTransferRate; - public double[][][][] totalVolumetricMassTransferRate; - double[] xPlace = new double[10]; - double[] timeArray = new double[10]; + neqsim.fluidMechanics.util.fluidMechanicsVisualization.flowSystemVisualization.twoPhaseFlowVisualization.TwoPhaseFlowVisualization { + double[][][] pressurePoint = new double[2][10][10]; + double[][][] velocityPoint = new double[2][10][10]; + double[][][] reynoldsNumber = new double[2][10][10]; + double[][][] phaseFraction = new double[2][10][10]; + double[][][] temperaturePoint = new double[2][10][10]; + double[][][] interphaseContactLength = new double[2][10][10]; + double[][][] interfaceTemperaturePoint = new double[2][10][10]; + public double[][][][] bulkComposition, interfaceComposition, effectiveMassTransferCoefficient; // phase, + // time, + // component, + // node + public double[][][][] molarFlux, schmidtNumber; + public double[][][][] totalMolarMassTransferRate; + public double[][][][] totalVolumetricMassTransferRate; + double[] xPlace = new double[10]; + double[] timeArray = new double[10]; - /** - *

- * Constructor for TwoPhasePipeFlowVisualization. - *

- */ - public TwoPhasePipeFlowVisualization() {} + /** + *

+ * Constructor for TwoPhasePipeFlowVisualization. + *

+ */ + public TwoPhasePipeFlowVisualization() {} - /** - *

- * Constructor for TwoPhasePipeFlowVisualization. - *

- * - * @param nodes a int - * @param timeSteps a int - */ - public TwoPhasePipeFlowVisualization(int nodes, int timeSteps) { - flowNodes = new TwoPhaseFlowNodeVisualization[timeSteps][nodes]; - flowSystem = new FlowSystem[timeSteps]; - absTime = new double[timeSteps]; - for (int i = 0; i < timeSteps; i++) { - for (int j = 0; j < nodes; j++) { - flowNodes[i][j] = new TwoPhaseFlowNodeVisualization(); - } - } - // System.out.println("nodes " + nodes); - // System.out.println("times " + time); + /** + *

+ * Constructor for TwoPhasePipeFlowVisualization. + *

+ * + * @param nodes a int + * @param timeSteps a int + */ + public TwoPhasePipeFlowVisualization(int nodes, int timeSteps) { + flowNodes = new TwoPhaseFlowNodeVisualization[timeSteps][nodes]; + flowSystem = new FlowSystem[timeSteps]; + absTime = new double[timeSteps]; + for (int i = 0; i < timeSteps; i++) { + for (int j = 0; j < nodes; j++) { + flowNodes[i][j] = new TwoPhaseFlowNodeVisualization(); + } } + // System.out.println("nodes " + nodes); + // System.out.println("times " + time); + } - /** {@inheritDoc} */ - @Override - public void setPoints() { - pressurePoint = new double[2][time][flowNodes[0].length]; - temperaturePoint = new double[2][time][flowNodes[0].length]; - interphaseContactLength = new double[2][time][flowNodes[0].length]; - velocityPoint = new double[2][time][flowNodes[0].length]; - reynoldsNumber = new double[2][time][flowNodes[0].length]; - phaseFraction = new double[2][time][flowNodes[0].length]; - interfaceTemperaturePoint = new double[2][time][flowNodes[0].length]; - bulkComposition = - new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; - effectiveMassTransferCoefficient = - new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; - interfaceComposition = - new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; - molarFlux = - new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; - schmidtNumber = - new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; - totalMolarMassTransferRate = - new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; - totalVolumetricMassTransferRate = - new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; - xPlace = new double[flowNodes[0].length]; - timeArray = new double[time]; + /** {@inheritDoc} */ + @Override + public void setPoints() { + pressurePoint = new double[2][time][flowNodes[0].length]; + temperaturePoint = new double[2][time][flowNodes[0].length]; + interphaseContactLength = new double[2][time][flowNodes[0].length]; + velocityPoint = new double[2][time][flowNodes[0].length]; + reynoldsNumber = new double[2][time][flowNodes[0].length]; + phaseFraction = new double[2][time][flowNodes[0].length]; + interfaceTemperaturePoint = new double[2][time][flowNodes[0].length]; + bulkComposition = + new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; + effectiveMassTransferCoefficient = + new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; + interfaceComposition = + new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; + molarFlux = new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; + schmidtNumber = + new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; + totalMolarMassTransferRate = + new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; + totalVolumetricMassTransferRate = + new double[2][flowNodes[0][0].getNumberOfComponents()][time][flowNodes[0].length]; + xPlace = new double[flowNodes[0].length]; + timeArray = new double[time]; - for (int k = 0; k < 2; k++) { - for (int j = 0; j < time; j++) { - timeArray[j] = j; - for (int i = 0; i < flowNodes[j].length; i++) { - xPlace[i] = flowNodes[j][i].getDistanceToCenterOfNode(); - pressurePoint[k][j][i] = flowNodes[j][i].getPressure(k); - interphaseContactLength[k][j][i] = flowNodes[j][i].getInterphaseContactLength(); - temperaturePoint[k][j][i] = flowNodes[j][i].getTemperature(k); - velocityPoint[k][j][i] = flowNodes[j][i].getVelocity(k); - reynoldsNumber[k][j][i] = flowNodes[j][i].getReynoldsNumber(k); - phaseFraction[k][j][i] = flowNodes[j][i].getPhaseFraction(k); - interfaceTemperaturePoint[k][j][i] = flowNodes[j][i].getInterfaceTemperature(k); - for (int p = 0; p < flowNodes[0][0].getNumberOfComponents(); p++) { - effectiveMassTransferCoefficient[k][p][j][i] = - flowNodes[j][i].getEffectiveMassTransferCoefficient(p, k); - bulkComposition[k][p][j][i] = flowNodes[j][i].getBulkComposition(p, k); - interfaceComposition[k][p][j][i] = - flowNodes[j][i].getInterfaceComposition(p, k); - molarFlux[k][p][j][i] = flowNodes[j][i].getEffectiveSchmidtNumber(p, k); - schmidtNumber[k][p][j][i] = flowNodes[j][i].getEffectiveSchmidtNumber(p, k); - totalMolarMassTransferRate[k][p][j][i] = - flowSystem[j].getTotalMolarMassTransferRate(p, i); - totalVolumetricMassTransferRate[k][p][j][i] = - totalMolarMassTransferRate[k][p][j][i] * 60.0 / 40.87631889 - * 1000.0; - } - } - } + for (int k = 0; k < 2; k++) { + for (int j = 0; j < time; j++) { + timeArray[j] = j; + for (int i = 0; i < flowNodes[j].length; i++) { + xPlace[i] = flowNodes[j][i].getDistanceToCenterOfNode(); + pressurePoint[k][j][i] = flowNodes[j][i].getPressure(k); + interphaseContactLength[k][j][i] = flowNodes[j][i].getInterphaseContactLength(); + temperaturePoint[k][j][i] = flowNodes[j][i].getTemperature(k); + velocityPoint[k][j][i] = flowNodes[j][i].getVelocity(k); + reynoldsNumber[k][j][i] = flowNodes[j][i].getReynoldsNumber(k); + phaseFraction[k][j][i] = flowNodes[j][i].getPhaseFraction(k); + interfaceTemperaturePoint[k][j][i] = flowNodes[j][i].getInterfaceTemperature(k); + for (int p = 0; p < flowNodes[0][0].getNumberOfComponents(); p++) { + effectiveMassTransferCoefficient[k][p][j][i] = + flowNodes[j][i].getEffectiveMassTransferCoefficient(p, k); + bulkComposition[k][p][j][i] = flowNodes[j][i].getBulkComposition(p, k); + interfaceComposition[k][p][j][i] = flowNodes[j][i].getInterfaceComposition(p, k); + molarFlux[k][p][j][i] = flowNodes[j][i].getEffectiveSchmidtNumber(p, k); + schmidtNumber[k][p][j][i] = flowNodes[j][i].getEffectiveSchmidtNumber(p, k); + totalMolarMassTransferRate[k][p][j][i] = + flowSystem[j].getTotalMolarMassTransferRate(p, i); + totalVolumetricMassTransferRate[k][p][j][i] = + totalMolarMassTransferRate[k][p][j][i] * 60.0 / 40.87631889 * 1000.0; + } } + } } + } - /** {@inheritDoc} */ - @Override - public void displayResult(String name) { - // double[][] points = new double[1][1]; - setPoints(); - - // if(name.equals("pressure")) points = pressurePoint; - // if(name.equals("temperature")) points = temperaturePoint; - // if(name.equals("velocity")) points = velocityPoint; + /** {@inheritDoc} */ + @Override + public void displayResult(String name) { + // double[][] points = new double[1][1]; + setPoints(); - // try{ - // System.out.println("points: " + points.length); + // if(name.equals("pressure")) points = pressurePoint; + // if(name.equals("temperature")) points = temperaturePoint; + // if(name.equals("velocity")) points = velocityPoint; - // if(pressurePoint.length>1){ - // System.out.println("3D plot "); - // plot = new visAd3DPlot("title[0]", "title[1]", "title[2]"); - // ((visAd3DPlot) plot).setXYvals(150, 160, points[0].length, 10, 20, - // points.length); - // ((visAd3DPlot) plot).setZvals(points); - // } - // else{ - // System.out.println("2D plot "); - // plot = new visAd2dBaseClass("title[1]", "title[2]"); - // ((visAd2dBaseClass) plot).setLineXYVals(xPlace, points[0]); - // ((visAd2dBaseClass) plot).setXYVals(xPlace, points[0]); - // } - // plot.init(); - // } - // catch(Exception e){ - // System.out.println(e.toString()); - // System.out.println("plotting failed"); - // } - } + // try{ + // System.out.println("points: " + points.length); - // public void createNetCdfFile(String name){ - // dataPresentation.fileHandeling.createNetCDF.NetCdf file = new - // dataPresentation.fileHandeling.createNetCDF.NetCdf(); - // file.setOutputFileName(name); - // file.setXvalues(timeArray,"time","sec"); - // file.setYvalues(xPlace, "length","meter"); - // // file.setZvalues(temperaturePoint, "time","sec"); - // file.createFile(); + // if(pressurePoint.length>1){ + // System.out.println("3D plot "); + // plot = new visAd3DPlot("title[0]", "title[1]", "title[2]"); + // ((visAd3DPlot) plot).setXYvals(150, 160, points[0].length, 10, 20, + // points.length); + // ((visAd3DPlot) plot).setZvals(points); // } + // else{ + // System.out.println("2D plot "); + // plot = new visAd2dBaseClass("title[1]", "title[2]"); + // ((visAd2dBaseClass) plot).setLineXYVals(xPlace, points[0]); + // ((visAd2dBaseClass) plot).setXYVals(xPlace, points[0]); + // } + // plot.init(); + // } + // catch(Exception ex){ + // System.out.println(ex.toString()); + // System.out.println("plotting failed"); + // } + } + // public void createNetCdfFile(String name){ + // dataPresentation.fileHandeling.createNetCDF.NetCdf file = new + // dataPresentation.fileHandeling.createNetCDF.NetCdf(); + // file.setOutputFileName(name); + // file.setXvalues(timeArray,"time","sec"); + // file.setYvalues(xPlace, "length","meter"); + // // file.setZvalues(temperaturePoint, "time","sec"); + // file.createFile(); + // } - /** {@inheritDoc} */ - /* - @Override - public void createNetCdfFile(String name) { - setPoints(); - neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D file = - new neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); - file.setOutputFileName(name); - file.setXvalues(xPlace, "length", "meter"); - file.setYvalues(pressurePoint[0][0], "gas pressure", "sec"); - file.setYvalues(pressurePoint[1][0], "liquid pressure", "sec"); - file.setYvalues(velocityPoint[0][0], "gas velocity", "sec"); - file.setYvalues(velocityPoint[1][0], "liquid velocity", "sec"); - file.setYvalues(reynoldsNumber[0][0], "gas reynolds number", "sec"); - file.setYvalues(reynoldsNumber[1][0], "liquid reynolds number", "sec"); - file.setYvalues(temperaturePoint[0][0], "gas temperature", "sec"); - file.setYvalues(temperaturePoint[1][0], "liquid temperature", "sec"); - file.setYvalues(phaseFraction[0][0], "void fraction", "sec"); - file.setYvalues(phaseFraction[1][0], "holdup", "sec"); - file.setYvalues(interfaceTemperaturePoint[0][0], "gas interface temperature", "sec"); - file.setYvalues(interfaceTemperaturePoint[1][0], "liquid interface temperature", "sec"); - file.setYvalues(interphaseContactLength[0][0], "interphase contact length", "sec"); - - for (int p = 0; p < flowNodes[0][0].getNumberOfComponents(); p++) { - String comp = "component molefraction " + p; - file.setYvalues(bulkComposition[0][p][0], ("gas " + comp + p), "sec"); - file.setYvalues(bulkComposition[1][p][0], ("liquid " + comp + p), "sec"); - file.setYvalues(interfaceComposition[0][p][0], ("gas (interphase) " + comp), "sec"); - file.setYvalues(interfaceComposition[1][p][0], ("liquid (interphase) " + comp), "sec"); - file.setYvalues(molarFlux[0][p][0], ("gas molar flux " + comp + p), "sec"); - file.setYvalues(molarFlux[1][p][0], ("liquid molar flux " + comp + p), "sec"); - file.setYvalues(totalVolumetricMassTransferRate[0][p][0], - ("total gas Volumetric Mass Transfer " + comp + p), "sec"); - file.setYvalues(totalVolumetricMassTransferRate[1][p][0], - ("total liq Volumetric Mass Transfer " + comp + p), "sec"); - file.setYvalues(effectiveMassTransferCoefficient[0][p][0], - ("eff. masstransfer coef gas " + comp + p), "sec"); - file.setYvalues(effectiveMassTransferCoefficient[1][p][0], - ("eff. masstransfer coef liq " + comp + p), "sec"); - file.setYvalues(schmidtNumber[0][p][0], ("gas scmidtnumber " + comp + p), "-"); - file.setYvalues(schmidtNumber[1][p][0], ("liquid scmidtnumber " + comp + p), "-"); - } - // file.setYvalues(temperaturePoint[0][0], "time","sec"); - file.createFile(); - } - */ + /* + * public void createNetCdfFile(String name) { setPoints(); + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D file = new + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); + * file.setOutputFileName(name); file.setXvalues(xPlace, "length", "meter"); + * file.setYvalues(pressurePoint[0][0], "gas pressure", "sec"); + * file.setYvalues(pressurePoint[1][0], "liquid pressure", "sec"); + * file.setYvalues(velocityPoint[0][0], "gas velocity", "sec"); + * file.setYvalues(velocityPoint[1][0], "liquid velocity", "sec"); + * file.setYvalues(reynoldsNumber[0][0], "gas reynolds number", "sec"); + * file.setYvalues(reynoldsNumber[1][0], "liquid reynolds number", "sec"); + * file.setYvalues(temperaturePoint[0][0], "gas temperature", "sec"); + * file.setYvalues(temperaturePoint[1][0], "liquid temperature", "sec"); + * file.setYvalues(phaseFraction[0][0], "void fraction", "sec"); + * file.setYvalues(phaseFraction[1][0], "holdup", "sec"); + * file.setYvalues(interfaceTemperaturePoint[0][0], "gas interface temperature", "sec"); + * file.setYvalues(interfaceTemperaturePoint[1][0], "liquid interface temperature", "sec"); + * file.setYvalues(interphaseContactLength[0][0], "interphase contact length", "sec"); + * + * for (int p = 0; p < flowNodes[0][0].getNumberOfComponents(); p++) { String comp = + * "component molefraction " + p; file.setYvalues(bulkComposition[0][p][0], ("gas " + comp + p), + * "sec"); file.setYvalues(bulkComposition[1][p][0], ("liquid " + comp + p), "sec"); + * file.setYvalues(interfaceComposition[0][p][0], ("gas (interphase) " + comp), "sec"); + * file.setYvalues(interfaceComposition[1][p][0], ("liquid (interphase) " + comp), "sec"); + * file.setYvalues(molarFlux[0][p][0], ("gas molar flux " + comp + p), "sec"); + * file.setYvalues(molarFlux[1][p][0], ("liquid molar flux " + comp + p), "sec"); + * file.setYvalues(totalVolumetricMassTransferRate[0][p][0], + * ("total gas Volumetric Mass Transfer " + comp + p), "sec"); + * file.setYvalues(totalVolumetricMassTransferRate[1][p][0], + * ("total liq Volumetric Mass Transfer " + comp + p), "sec"); + * file.setYvalues(effectiveMassTransferCoefficient[0][p][0], ("eff. masstransfer coef gas " + + * comp + p), "sec"); file.setYvalues(effectiveMassTransferCoefficient[1][p][0], + * ("eff. masstransfer coef liq " + comp + p), "sec"); file.setYvalues(schmidtNumber[0][p][0], + * ("gas scmidtnumber " + comp + p), "-"); file.setYvalues(schmidtNumber[1][p][0], + * ("liquid scmidtnumber " + comp + p), "-"); } // file.setYvalues(temperaturePoint[0][0], + * "time","sec"); file.createFile(); } + */ } diff --git a/src/main/java/neqsim/fluidMechanics/util/parameterFitting/masstransfer/MassTransferFunction.java b/src/main/java/neqsim/fluidMechanics/util/parameterFitting/masstransfer/MassTransferFunction.java deleted file mode 100644 index ced5f06d8e..0000000000 --- a/src/main/java/neqsim/fluidMechanics/util/parameterFitting/masstransfer/MassTransferFunction.java +++ /dev/null @@ -1,43 +0,0 @@ -package neqsim.fluidMechanics.util.parameterFitting.masstransfer; - -/** - *

- * MassTransferFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class MassTransferFunction extends - neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction { - /** - *

- * Constructor for MassTransferFunction. - *

- */ - public MassTransferFunction() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.init(0); - system.init(1); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - System.out.println(e.toString()); - } - return Math.log(system.getPressure()); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponents()[i].setAcentricFactor(value); - system.getPhases()[1].getComponents()[i].setAcentricFactor(value); - } -} diff --git a/src/main/java/neqsim/fluidMechanics/util/parameterFitting/masstransfer/TestMassTransfer.java b/src/main/java/neqsim/fluidMechanics/util/parameterFitting/masstransfer/TestMassTransfer.java deleted file mode 100644 index a25d472fc3..0000000000 --- a/src/main/java/neqsim/fluidMechanics/util/parameterFitting/masstransfer/TestMassTransfer.java +++ /dev/null @@ -1,74 +0,0 @@ -package neqsim.fluidMechanics.util.parameterFitting.masstransfer; - -import java.sql.ResultSet; -import java.util.ArrayList; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestMassTransfer class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestMassTransfer { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM purecomponentvapourpressures WHERE ComponentName='water' AND VapourPressure<100"); - - try { - System.out.println("adding...."); - while (dataSet.next()) { - MassTransferFunction function = new MassTransferFunction(); - double guess[] = {0.3311}; - double bound[][] = {{0, 1.0},}; - function.setInitialGuess(guess); - SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double vappres = Double.parseDouble(dataSet.getString("VapourPressure")); - double standardDeviation1[] = {0.15}; - SampleValue sample = new SampleValue(Math.log(vappres), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - function.setInitialGuess(guess); - // function.setBounds(bound); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - System.out.println("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(50); - // optim.displayCurveFit(); - // optim.writeToTextFile("c:/test.txt"); - } -} diff --git a/src/main/java/neqsim/fluidMechanics/util/timeSeries/TimeSeries.java b/src/main/java/neqsim/fluidMechanics/util/timeSeries/TimeSeries.java index 26063cdca6..725bc48986 100644 --- a/src/main/java/neqsim/fluidMechanics/util/timeSeries/TimeSeries.java +++ b/src/main/java/neqsim/fluidMechanics/util/timeSeries/TimeSeries.java @@ -3,6 +3,7 @@ * * Created on 18. juni 2001, 19:24 */ + package neqsim.fluidMechanics.util.timeSeries; import neqsim.fluidMechanics.flowSystem.FlowSystemInterface; @@ -17,150 +18,150 @@ * @version $Id: $Id */ public class TimeSeries implements java.io.Serializable { - private static final long serialVersionUID = 1000; - - protected double[] timeSeries, outletMolarFlowRate, outletMolarFlowRates; - protected SystemInterface[] inletThermoSystem; - protected SystemInterface[] thermoSystems; - protected int numberOfTimeStepsInInterval; - protected double[] times, timeSteps; - - /** - *

- * Constructor for TimeSeries. - *

- */ - public TimeSeries() { - this.timeSeries = new double[1]; - } + private static final long serialVersionUID = 1000; - /** - *

- * Setter for the field times. - *

- * - * @param times an array of {@link double} objects - */ - public void setTimes(double[] times) { - this.timeSeries = times; - } + protected double[] timeSeries, outletMolarFlowRate, outletMolarFlowRates; + protected SystemInterface[] inletThermoSystem; + protected SystemInterface[] thermoSystems; + protected int numberOfTimeStepsInInterval; + protected double[] times, timeSteps; - /** - *

- * setInletThermoSystems. - *

- * - * @param inletThermoSystem an array of {@link neqsim.thermo.system.SystemInterface} objects - */ - public void setInletThermoSystems(SystemInterface[] inletThermoSystem) { - this.inletThermoSystem = inletThermoSystem; - } + /** + *

+ * Constructor for TimeSeries. + *

+ */ + public TimeSeries() { + this.timeSeries = new double[1]; + } - /** - *

- * Setter for the field outletMolarFlowRate. - *

- * - * @param outletMolarFlowRate an array of {@link double} objects - */ - public void setOutletMolarFlowRate(double[] outletMolarFlowRate) { - this.outletMolarFlowRate = outletMolarFlowRate; - } + /** + *

+ * Setter for the field times. + *

+ * + * @param times an array of type double + */ + public void setTimes(double[] times) { + this.timeSeries = times; + } - /** - *

- * Getter for the field outletMolarFlowRates. - *

- * - * @return an array of {@link double} objects - */ - public double[] getOutletMolarFlowRates() { - return this.outletMolarFlowRates; - } + /** + *

+ * setInletThermoSystems. + *

+ * + * @param inletThermoSystem an array of {@link neqsim.thermo.system.SystemInterface} objects + */ + public void setInletThermoSystems(SystemInterface[] inletThermoSystem) { + this.inletThermoSystem = inletThermoSystem; + } - /** - *

- * Setter for the field numberOfTimeStepsInInterval. - *

- * - * @param numberOfTimeStepsInInterval a int - */ - public void setNumberOfTimeStepsInInterval(int numberOfTimeStepsInInterval) { - this.numberOfTimeStepsInInterval = numberOfTimeStepsInInterval; - } + /** + *

+ * Setter for the field outletMolarFlowRate. + *

+ * + * @param outletMolarFlowRate an array of type double + */ + public void setOutletMolarFlowRate(double[] outletMolarFlowRate) { + this.outletMolarFlowRate = outletMolarFlowRate; + } - /** - *

- * init. - *

- * - * @param flowSystem a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object - */ - public void init(FlowSystemInterface flowSystem) { - int p = 0; - thermoSystems = new SystemInterface[(timeSeries.length - 1) * numberOfTimeStepsInInterval]; - outletMolarFlowRates = new double[(timeSeries.length - 1) * numberOfTimeStepsInInterval]; - timeSteps = new double[(timeSeries.length - 1) * numberOfTimeStepsInInterval]; - times = new double[(timeSeries.length - 1) * numberOfTimeStepsInInterval]; - - // System.out.println("times " + inletThermoSystem.length); - double temp = 0; - for (int k = 0; k < timeSeries.length - 1; k++) { - double stepLength = (timeSeries[k + 1] - timeSeries[k]) / numberOfTimeStepsInInterval; - for (int i = 0; i < numberOfTimeStepsInInterval; i++) { - timeSteps[p] = stepLength; - temp += stepLength; - times[p] = temp; - if (Double.isNaN(outletMolarFlowRate[0])) { - outletMolarFlowRates[p] = outletMolarFlowRate[k]; - } - thermoSystems[p++] = inletThermoSystem[k].clone(); - } + /** + *

+ * Getter for the field outletMolarFlowRates. + *

+ * + * @return an array of type double + */ + public double[] getOutletMolarFlowRates() { + return this.outletMolarFlowRates; + } + + /** + *

+ * Setter for the field numberOfTimeStepsInInterval. + *

+ * + * @param numberOfTimeStepsInInterval a int + */ + public void setNumberOfTimeStepsInInterval(int numberOfTimeStepsInInterval) { + this.numberOfTimeStepsInInterval = numberOfTimeStepsInInterval; + } + + /** + *

+ * init. + *

+ * + * @param flowSystem a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object + */ + public void init(FlowSystemInterface flowSystem) { + int p = 0; + thermoSystems = new SystemInterface[(timeSeries.length - 1) * numberOfTimeStepsInInterval]; + outletMolarFlowRates = new double[(timeSeries.length - 1) * numberOfTimeStepsInInterval]; + timeSteps = new double[(timeSeries.length - 1) * numberOfTimeStepsInInterval]; + times = new double[(timeSeries.length - 1) * numberOfTimeStepsInInterval]; + + // System.out.println("times " + inletThermoSystem.length); + double temp = 0; + for (int k = 0; k < timeSeries.length - 1; k++) { + double stepLength = (timeSeries[k + 1] - timeSeries[k]) / numberOfTimeStepsInInterval; + for (int i = 0; i < numberOfTimeStepsInInterval; i++) { + timeSteps[p] = stepLength; + temp += stepLength; + times[p] = temp; + if (outletMolarFlowRate != null) { + outletMolarFlowRates[p] = outletMolarFlowRate[k]; } + thermoSystems[p++] = inletThermoSystem[k].clone(); + } } + } - /** - *

- * getThermoSystem. - *

- * - * @return an array of {@link neqsim.thermo.system.SystemInterface} objects - */ - public SystemInterface[] getThermoSystem() { - return thermoSystems; - } + /** + *

+ * getThermoSystem. + *

+ * + * @return an array of {@link neqsim.thermo.system.SystemInterface} objects + */ + public SystemInterface[] getThermoSystem() { + return thermoSystems; + } - /** - *

- * getTimeStep. - *

- * - * @return an array of {@link double} objects - */ - public double[] getTimeStep() { - return timeSteps; - } + /** + *

+ * getTimeStep. + *

+ * + * @return an array of type double + */ + public double[] getTimeStep() { + return timeSteps; + } - /** - *

- * getTime. - *

- * - * @return an array of {@link double} objects - */ - public double[] getTime() { - return times; - } + /** + *

+ * getTime. + *

+ * + * @return an array of type double + */ + public double[] getTime() { + return times; + } - /** - *

- * getTime. - *

- * - * @param i a int - * @return a double - */ - public double getTime(int i) { - return times[i]; - } + /** + *

+ * getTime. + *

+ * + * @param i a int + * @return a double + */ + public double getTime(int i) { + return times[i]; + } } diff --git a/src/main/java/neqsim/log4j2.properties b/src/main/java/neqsim/log4j2.properties new file mode 100644 index 0000000000..2cfa7572c2 --- /dev/null +++ b/src/main/java/neqsim/log4j2.properties @@ -0,0 +1,20 @@ +status = error +name = PropertiesConfig + +filters = threshold + +filter.threshold.type = ThresholdFilter +filter.threshold.level = DEBUG + +appenders = console + +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + + +# Define the root logger with appender file - see https://www.tutorialspoint.com/log4j/log4j_logging_levels.htm +rootLogger.level = OFF +rootLogger.appenderRefs = stdout +rootLogger.appenderRef.stdout.ref = STDOUT \ No newline at end of file diff --git a/src/main/java/neqsim/physicalProperties/PhysicalPropertyHandler.java b/src/main/java/neqsim/physicalProperties/PhysicalPropertyHandler.java index 391b2ea687..db6fed719f 100644 --- a/src/main/java/neqsim/physicalProperties/PhysicalPropertyHandler.java +++ b/src/main/java/neqsim/physicalProperties/PhysicalPropertyHandler.java @@ -2,6 +2,14 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface; +import neqsim.physicalProperties.physicalPropertySystem.commonPhasePhysicalProperties.DefaultPhysicalProperties; +import neqsim.physicalProperties.physicalPropertySystem.gasPhysicalProperties.GasPhysicalProperties; +import neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.AminePhysicalProperties; +import neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.CO2waterPhysicalProperties; +import neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.GlycolPhysicalProperties; +import neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.LiquidPhysicalProperties; +import neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.WaterPhysicalProperties; import neqsim.physicalProperties.physicalPropertySystem.solidPhysicalProperties.SolidPhysicalProperties; import neqsim.thermo.phase.PhaseInterface; @@ -14,175 +22,134 @@ * @version $Id: $Id */ public class PhysicalPropertyHandler implements Cloneable, java.io.Serializable { - private neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhysicalProperties = - null; - private neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface oilPhysicalProperties = - null; - private neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface aqueousPhysicalProperties = - null; - private neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhysicalProperties = - null; - private neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRule mixingRule = null; - static Logger logger = LogManager.getLogger(PhysicalPropertyHandler.class); - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhysicalPropertyHandler.class); - /** - *

- * Constructor for PhysicalPropertyHandler. - *

- */ - public PhysicalPropertyHandler() {} + private PhysicalPropertiesInterface gasPhysicalProperties = null; + private PhysicalPropertiesInterface oilPhysicalProperties = null; + private PhysicalPropertiesInterface aqueousPhysicalProperties = null; + private PhysicalPropertiesInterface solidPhysicalProperties = null; + private neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRule mixingRule = null; - /** - *

- * setPhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param type a int - */ - public void setPhysicalProperties(PhaseInterface phase, int type) { - switch (type) { - case 0: - gasPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.gasPhysicalProperties.GasPhysicalProperties( - phase, 0, 0); - oilPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.LiquidPhysicalProperties( - phase, 0, 0); - aqueousPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.WaterPhysicalProperties( - phase, 0, 0); - break; - case 1: - gasPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.gasPhysicalProperties.GasPhysicalProperties( - phase, 0, 0); - oilPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.LiquidPhysicalProperties( - phase, 0, 0); - aqueousPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.WaterPhysicalProperties( - phase, 0, 0); - break; - case 2: - gasPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.gasPhysicalProperties.GasPhysicalProperties( - phase, 0, 0); - oilPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.LiquidPhysicalProperties( - phase, 0, 0); - aqueousPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.GlycolPhysicalProperties( - phase, 0, 0); - break; - case 3: - gasPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.gasPhysicalProperties.GasPhysicalProperties( - phase, 0, 0); - oilPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.LiquidPhysicalProperties( - phase, 0, 0); - aqueousPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.AminePhysicalProperties( - phase, 0, 0); - break; - case 4: - gasPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.gasPhysicalProperties.GasPhysicalProperties( - phase, 0, 0); - oilPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.LiquidPhysicalProperties( - phase, 0, 0); - aqueousPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties.CO2waterPhysicalProperties( - phase, 0, 0); - break; - case 6: - gasPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.commonPhasePhysicalProperties.DefaultPhysicalProperties( - phase, 0, 0); - oilPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.commonPhasePhysicalProperties.DefaultPhysicalProperties( - phase, 0, 0); - aqueousPhysicalProperties = - new neqsim.physicalProperties.physicalPropertySystem.commonPhasePhysicalProperties.DefaultPhysicalProperties( - phase, 0, 0); - break; - default: - logger.error( - "error selecting physical properties model.\n Continue using default model..."); - setPhysicalProperties(phase, 0); - break; - } - solidPhysicalProperties = new SolidPhysicalProperties(phase); - mixingRule = new neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRule(); - mixingRule.initMixingRules(phase); - gasPhysicalProperties.setMixingRule(mixingRule); - oilPhysicalProperties.setMixingRule(mixingRule); - aqueousPhysicalProperties.setMixingRule(mixingRule); + /** + *

+ * Constructor for PhysicalPropertyHandler. + *

+ */ + public PhysicalPropertyHandler() {} + + /** + *

+ * setPhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param type 0 Orginal/default 1 Water 2 Glycol 3 Amine 4 CO2Water 6 Basic + */ + public void setPhysicalProperties(PhaseInterface phase, int type) { + switch (type) { + case 0: // Default + gasPhysicalProperties = new GasPhysicalProperties(phase, 0, 0); + oilPhysicalProperties = new LiquidPhysicalProperties(phase, 0, 0); + aqueousPhysicalProperties = new WaterPhysicalProperties(phase, 0, 0); + break; + case 1: // Water + gasPhysicalProperties = new GasPhysicalProperties(phase, 0, 0); + oilPhysicalProperties = new LiquidPhysicalProperties(phase, 0, 0); + aqueousPhysicalProperties = new WaterPhysicalProperties(phase, 0, 0); + break; + case 2: // Glycol + gasPhysicalProperties = new GasPhysicalProperties(phase, 0, 0); + oilPhysicalProperties = new LiquidPhysicalProperties(phase, 0, 0); + aqueousPhysicalProperties = new GlycolPhysicalProperties(phase, 0, 0); + break; + case 3: // Amine + gasPhysicalProperties = new GasPhysicalProperties(phase, 0, 0); + oilPhysicalProperties = new LiquidPhysicalProperties(phase, 0, 0); + aqueousPhysicalProperties = new AminePhysicalProperties(phase, 0, 0); + break; + case 4: // CO2water + gasPhysicalProperties = new GasPhysicalProperties(phase, 0, 0); + oilPhysicalProperties = new LiquidPhysicalProperties(phase, 0, 0); + aqueousPhysicalProperties = new CO2waterPhysicalProperties(phase, 0, 0); + break; + case 6: // Basic? + gasPhysicalProperties = new DefaultPhysicalProperties(phase, 0, 0); + oilPhysicalProperties = new DefaultPhysicalProperties(phase, 0, 0); + aqueousPhysicalProperties = new DefaultPhysicalProperties(phase, 0, 0); + break; + default: + logger + .error("error selecting physical properties model.\n Continue using default model..."); + setPhysicalProperties(phase, 0); + break; } + solidPhysicalProperties = new SolidPhysicalProperties(phase); + mixingRule = new neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRule(); + mixingRule.initMixingRules(phase); + gasPhysicalProperties.setMixingRule(mixingRule); + oilPhysicalProperties.setMixingRule(mixingRule); + aqueousPhysicalProperties.setMixingRule(mixingRule); + } - /** - *

- * getPhysicalProperty. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface getPhysicalProperty( - PhaseInterface phase) { - switch (phase.getPhaseTypeName()) { - case "gas": - return gasPhysicalProperties; - case "oil": - return oilPhysicalProperties; - case "aqueous": - return aqueousPhysicalProperties; - case "solid": - return solidPhysicalProperties; - case "wax": - return solidPhysicalProperties; - case "hydrate": - return solidPhysicalProperties; - default: - return gasPhysicalProperties; - } + /** + *

+ * getPhysicalProperty. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public PhysicalPropertiesInterface getPhysicalProperty(PhaseInterface phase) { + switch (phase.getType()) { + case GAS: + return gasPhysicalProperties; + case LIQUID: + // TODO: check if it should be AQUEOUS? + case OIL: + return oilPhysicalProperties; + case AQUEOUS: + return aqueousPhysicalProperties; + case WAX: + case HYDRATE: + case SOLID: + case SOLIDCOMPLEX: + return solidPhysicalProperties; + default: + return gasPhysicalProperties; } + } - /** {@inheritDoc} */ - @Override - public PhysicalPropertyHandler clone() { - PhysicalPropertyHandler clonedHandler = null; + /** {@inheritDoc} */ + @Override + public PhysicalPropertyHandler clone() { + PhysicalPropertyHandler clonedHandler = null; - try { - clonedHandler = (PhysicalPropertyHandler) super.clone(); - } catch (Exception e) { - // e.printStackTrace(System.err); - logger.error(e.getMessage()); - } - try { - if (gasPhysicalProperties != null) { - clonedHandler.gasPhysicalProperties = gasPhysicalProperties.clone(); - } - if (oilPhysicalProperties != null) { - clonedHandler.oilPhysicalProperties = oilPhysicalProperties.clone(); - } - if (aqueousPhysicalProperties != null) { - clonedHandler.aqueousPhysicalProperties = aqueousPhysicalProperties.clone(); - } - if (solidPhysicalProperties != null) { - clonedHandler.solidPhysicalProperties = solidPhysicalProperties.clone(); - } - if (mixingRule != null) { - clonedHandler.mixingRule = mixingRule.clone(); - } - } catch (Exception e) { - e.printStackTrace(System.err); - } - return clonedHandler; + try { + clonedHandler = (PhysicalPropertyHandler) super.clone(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + try { + if (gasPhysicalProperties != null) { + clonedHandler.gasPhysicalProperties = gasPhysicalProperties.clone(); + } + if (oilPhysicalProperties != null) { + clonedHandler.oilPhysicalProperties = oilPhysicalProperties.clone(); + } + if (aqueousPhysicalProperties != null) { + clonedHandler.aqueousPhysicalProperties = aqueousPhysicalProperties.clone(); + } + if (solidPhysicalProperties != null) { + clonedHandler.solidPhysicalProperties = solidPhysicalProperties.clone(); + } + if (mixingRule != null) { + clonedHandler.mixingRule = mixingRule.clone(); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + return clonedHandler; + } } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/InterfaceProperties.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/InterfaceProperties.java index 7917335ff3..1d8c070ff9 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/InterfaceProperties.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/InterfaceProperties.java @@ -3,6 +3,7 @@ * * Created on 13. august 2001, 13:12 */ + package neqsim.physicalProperties.interfaceProperties; import org.apache.logging.log4j.LogManager; @@ -15,6 +16,7 @@ import neqsim.physicalProperties.interfaceProperties.surfaceTension.LGTSurfaceTension; import neqsim.physicalProperties.interfaceProperties.surfaceTension.ParachorSurfaceTension; import neqsim.physicalProperties.interfaceProperties.surfaceTension.SurfaceTensionInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; /** @@ -26,227 +28,227 @@ * @version $Id: $Id */ public class InterfaceProperties implements InterphasePropertiesInterface, java.io.Serializable { - private static final long serialVersionUID = 1000; - - SystemInterface system; - SurfaceTensionInterface gasLiquidSurfaceTensionCalc = null; - SurfaceTensionInterface gasAqueousSurfaceTensionCalc = null; - SurfaceTensionInterface liquidLiquidSurfaceTensionCalc = null; - private AdsorptionInterface[] adsorptionCalc; - double[] surfaceTension; - int numberOfInterfaces = 1; - private int interfacialTensionModel = 0; - static Logger logger = LogManager.getLogger(InterfaceProperties.class); - - /** - *

- * Constructor for InterfaceProperties. - *

- */ - public InterfaceProperties() {} - - /** - *

- * Constructor for InterfaceProperties. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public InterfaceProperties(SystemInterface system) { - numberOfInterfaces = system.getNumberOfPhases() - 1; - this.system = system; - // gasLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); - // gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); - // liquidLiquidSurfaceTensionCalc = new - // FirozabadiRamleyInterfaceTension(system); - } - - /** {@inheritDoc} */ - @Override - public InterfaceProperties clone() { - InterfaceProperties clonedSystem = null; - try { - // clonedSystem = (InterfaceProperties) suclone(); - // clonedSystem.chemicalReactionOperations = (ChemicalReactionOperations) - // chemicalReactionOperations.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - // clonedSystem.system = system; - return clonedSystem; - } - - /** {@inheritDoc} */ - @Override - public void init(SystemInterface system) { - this.system = system; - init(); - } - - /** {@inheritDoc} */ - @Override - public void init() { - numberOfInterfaces = system.getNumberOfPhases() - 1; - surfaceTension = new double[numberOfInterfaces + 1]; - if (gasLiquidSurfaceTensionCalc == null || gasAqueousSurfaceTensionCalc == null - || liquidLiquidSurfaceTensionCalc == null) { - setInterfacialTensionModel(interfacialTensionModel); - } - // surfaceTensionCalc[i] = new LGTSurfaceTension(system); - // surfaceTension[i] = surfaceTensionCalc[i].calcSurfaceTension(i, i - // + 1); - } - - /** {@inheritDoc} */ - @Override - public void initAdsorption() { - setAdsorptionCalc(new AdsorptionInterface[system.getNumberOfPhases()]); - - for (int i = 0; i < system.getNumberOfPhases(); i++) { - getAdsorptionCalc()[i] = new PotentialTheoryAdsorption(system); - } - } - - /** {@inheritDoc} */ - @Override - public void setSolidAdsorbentMaterial(String material) { - for (int i = 0; i < system.getNumberOfPhases(); i++) { - getAdsorptionCalc()[i].setSolidMaterial(material); - } - } - - /** {@inheritDoc} */ - @Override - public void calcAdsorption() { - for (int i = 0; i < system.getNumberOfPhases(); i++) { - getAdsorptionCalc()[i].calcAdorption(i); - } - } - - /* - * public double getSurfaceTension(int numb) { if (numb >= numberOfInterfaces) { return 0.0; } - * else { return surfaceTension[numb]; } } - */ - - /** {@inheritDoc} */ - @Override - public double getSurfaceTension(int numb1, int numb2) { - if (system.getPhase(numb1).getPhaseTypeName().equals("gas") - && system.getPhase(numb2).getPhaseTypeName().equals("oil")) { - return gasLiquidSurfaceTensionCalc.calcSurfaceTension(numb1, numb2); - } else if (system.getPhase(numb1).getPhaseTypeName().equals("gas") - && system.getPhase(numb2).getPhaseTypeName().equals("aqueous")) { - return gasAqueousSurfaceTensionCalc.calcSurfaceTension(numb1, numb2); - } else { - return liquidLiquidSurfaceTensionCalc.calcSurfaceTension(numb1, numb2); - } - } - - // TODO add unit conversion implementation to interfacial tension - /** {@inheritDoc} */ - @Override - public double getSurfaceTension(int numb1, int numb2, String unit) { - double val = getSurfaceTension(numb1, numb2); - /// ...conversion methods - return val; - } - - /** {@inheritDoc} */ - @Override - public SurfaceTensionInterface getSurfaceTensionModel(int i) { - if (system.getPhase(i).getPhaseTypeName().equals("gas")) { - return gasLiquidSurfaceTensionCalc; - } else { - return gasLiquidSurfaceTensionCalc; - } - } - - /** {@inheritDoc} */ - @Override - public int getInterfacialTensionModel() { - return interfacialTensionModel; - } - - /** {@inheritDoc} */ - @Override - public void setInterfacialTensionModel(String phase1, String phase2, String model) { - SurfaceTensionInterface surfTensModel = null; - if ("Linear Gradient Theory".equals(model)) { - surfTensModel = new LGTSurfaceTension(system); - } else if ("Simple Gradient Theory".equals(model)) { - surfTensModel = new GTSurfaceTensionSimple(system); - } else if ("Full Gradient Theory".equals(model)) { - surfTensModel = new GTSurfaceTension(system); - } else if ("Firozabadi Ramley".equals(model)) { - surfTensModel = new FirozabadiRamleyInterfaceTension(system); - } else if ("Parachor".equals(model) || "Weinaug-Katz".equals(model)) { - surfTensModel = new ParachorSurfaceTension(system); - } else { - surfTensModel = new ParachorSurfaceTension(system); - } - - if (phase1.equals("gas") && phase2.equals("oil")) { - gasLiquidSurfaceTensionCalc = surfTensModel; - } else if (phase1.equals("gas") && phase2.equals("aqueous")) { - gasAqueousSurfaceTensionCalc = surfTensModel; - } else if (phase1.equals("oil") && phase2.equals("aqueous")) { - liquidLiquidSurfaceTensionCalc = surfTensModel; - } - } - - /** {@inheritDoc} */ - @Override - public void setInterfacialTensionModel(int interfacialTensionModel) { - this.interfacialTensionModel = interfacialTensionModel; - if (interfacialTensionModel == 0) { - gasLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); - gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); - liquidLiquidSurfaceTensionCalc = new FirozabadiRamleyInterfaceTension(system); - } else if (interfacialTensionModel == 1) { - gasLiquidSurfaceTensionCalc = new GTSurfaceTension(system); // Sintef method - // liquidLiquidSurfaceTensionCalc = new GTSurfaceTension(system); //Sintef - // method - gasAqueousSurfaceTensionCalc = new GTSurfaceTensionSimple(system); - // gasLiquidSurfaceTensionCalc = new GTSurfaceTensionSimple(system); - liquidLiquidSurfaceTensionCalc = new GTSurfaceTensionSimple(system); - } else if (interfacialTensionModel == 2) { - gasLiquidSurfaceTensionCalc = new LGTSurfaceTension(system); - liquidLiquidSurfaceTensionCalc = new LGTSurfaceTension(system); - gasAqueousSurfaceTensionCalc = new LGTSurfaceTension(system); - } else if (interfacialTensionModel == 3) { - gasLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); - gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); - liquidLiquidSurfaceTensionCalc = new FirozabadiRamleyInterfaceTension(system); - } else if (interfacialTensionModel == 4) { - gasLiquidSurfaceTensionCalc = new GTSurfaceTensionSimple(system); - liquidLiquidSurfaceTensionCalc = new LGTSurfaceTension(system); - gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); - } else if (interfacialTensionModel == 5) { - gasLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); - gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); - liquidLiquidSurfaceTensionCalc = new FirozabadiRamleyInterfaceTension(system); - } else { - gasLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); - gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); - liquidLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); - } - } - - /** {@inheritDoc} */ - @Override - public AdsorptionInterface[] getAdsorptionCalc() { - return adsorptionCalc; - } - - /** {@inheritDoc} */ - @Override - public AdsorptionInterface getAdsorptionCalc(String phaseName) { - return adsorptionCalc[system.getPhaseNumberOfPhase(phaseName)]; - } - - /** {@inheritDoc} */ - @Override - public void setAdsorptionCalc(AdsorptionInterface[] adsorptionCalc) { - this.adsorptionCalc = adsorptionCalc; - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(InterfaceProperties.class); + + SystemInterface system; + SurfaceTensionInterface gasLiquidSurfaceTensionCalc = null; + SurfaceTensionInterface gasAqueousSurfaceTensionCalc = null; + SurfaceTensionInterface liquidLiquidSurfaceTensionCalc = null; + private AdsorptionInterface[] adsorptionCalc; + double[] surfaceTension; + int numberOfInterfaces = 1; + private int interfacialTensionModel = 0; + + /** + *

+ * Constructor for InterfaceProperties. + *

+ */ + public InterfaceProperties() {} + + /** + *

+ * Constructor for InterfaceProperties. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public InterfaceProperties(SystemInterface system) { + numberOfInterfaces = system.getNumberOfPhases() - 1; + this.system = system; + // gasLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); + // gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); + // liquidLiquidSurfaceTensionCalc = new + // FirozabadiRamleyInterfaceTension(system); + } + + /** {@inheritDoc} */ + @Override + public InterfaceProperties clone() { + InterfaceProperties clonedSystem = null; + try { + // clonedSystem = (InterfaceProperties) suclone(); + // clonedSystem.chemicalReactionOperations = (ChemicalReactionOperations) + // chemicalReactionOperations.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + // clonedSystem.system = system; + return clonedSystem; + } + + /** {@inheritDoc} */ + @Override + public void init(SystemInterface system) { + this.system = system; + init(); + } + + /** {@inheritDoc} */ + @Override + public void init() { + numberOfInterfaces = system.getNumberOfPhases() - 1; + surfaceTension = new double[numberOfInterfaces + 1]; + if (gasLiquidSurfaceTensionCalc == null || gasAqueousSurfaceTensionCalc == null + || liquidLiquidSurfaceTensionCalc == null) { + setInterfacialTensionModel(interfacialTensionModel); + } + // surfaceTensionCalc[i] = new LGTSurfaceTension(system); + // surfaceTension[i] = surfaceTensionCalc[i].calcSurfaceTension(i, i + // + 1); + } + + /** {@inheritDoc} */ + @Override + public void initAdsorption() { + setAdsorptionCalc(new AdsorptionInterface[system.getNumberOfPhases()]); + + for (int i = 0; i < system.getNumberOfPhases(); i++) { + getAdsorptionCalc()[i] = new PotentialTheoryAdsorption(system); + } + } + + /** {@inheritDoc} */ + @Override + public void setSolidAdsorbentMaterial(String material) { + for (int i = 0; i < system.getNumberOfPhases(); i++) { + getAdsorptionCalc()[i].setSolidMaterial(material); + } + } + + /** {@inheritDoc} */ + @Override + public void calcAdsorption() { + for (int i = 0; i < system.getNumberOfPhases(); i++) { + getAdsorptionCalc()[i].calcAdsorption(i); + } + } + + /* + * public double getSurfaceTension(int numb) { if (numb >= numberOfInterfaces) { return 0.0; } + * else { return surfaceTension[numb]; } } + */ + + /** {@inheritDoc} */ + @Override + public double getSurfaceTension(int numb1, int numb2) { + if (system.getPhase(numb1).getType() == PhaseType.GAS + && system.getPhase(numb2).getType() == PhaseType.OIL) { + return gasLiquidSurfaceTensionCalc.calcSurfaceTension(numb1, numb2); + } else if (system.getPhase(numb1).getType() == PhaseType.GAS + && system.getPhase(numb2).getType() == PhaseType.AQUEOUS) { + return gasAqueousSurfaceTensionCalc.calcSurfaceTension(numb1, numb2); + } else { + return liquidLiquidSurfaceTensionCalc.calcSurfaceTension(numb1, numb2); + } + } + + // TODO: add unit conversion implementation to interfacial tension + /** {@inheritDoc} */ + @Override + public double getSurfaceTension(int numb1, int numb2, String unit) { + double val = getSurfaceTension(numb1, numb2); + // ...conversion methods + return val; + } + + /** {@inheritDoc} */ + @Override + public SurfaceTensionInterface getSurfaceTensionModel(int i) { + if (system.getPhase(i).getType() == PhaseType.GAS) { + return gasLiquidSurfaceTensionCalc; + } else { + return gasLiquidSurfaceTensionCalc; + } + } + + /** {@inheritDoc} */ + @Override + public int getInterfacialTensionModel() { + return interfacialTensionModel; + } + + /** {@inheritDoc} */ + @Override + public void setInterfacialTensionModel(String phase1, String phase2, String model) { + SurfaceTensionInterface surfTensModel = null; + if ("Linear Gradient Theory".equals(model)) { + surfTensModel = new LGTSurfaceTension(system); + } else if ("Simple Gradient Theory".equals(model)) { + surfTensModel = new GTSurfaceTensionSimple(system); + } else if ("Full Gradient Theory".equals(model)) { + surfTensModel = new GTSurfaceTension(system); + } else if ("Firozabadi Ramley".equals(model)) { + surfTensModel = new FirozabadiRamleyInterfaceTension(system); + } else if ("Parachor".equals(model) || "Weinaug-Katz".equals(model)) { + surfTensModel = new ParachorSurfaceTension(system); + } else { + surfTensModel = new ParachorSurfaceTension(system); + } + + if (phase1.equals("gas") && phase2.equals("oil")) { + gasLiquidSurfaceTensionCalc = surfTensModel; + } else if (phase1.equals("gas") && phase2.equals("aqueous")) { + gasAqueousSurfaceTensionCalc = surfTensModel; + } else if (phase1.equals("oil") && phase2.equals("aqueous")) { + liquidLiquidSurfaceTensionCalc = surfTensModel; + } + } + + /** {@inheritDoc} */ + @Override + public void setInterfacialTensionModel(int interfacialTensionModel) { + this.interfacialTensionModel = interfacialTensionModel; + if (interfacialTensionModel == 0) { + gasLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); + gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); + liquidLiquidSurfaceTensionCalc = new FirozabadiRamleyInterfaceTension(system); + } else if (interfacialTensionModel == 1) { + gasLiquidSurfaceTensionCalc = new GTSurfaceTension(system); // Sintef method + // liquidLiquidSurfaceTensionCalc = new GTSurfaceTension(system); //Sintef + // method + gasAqueousSurfaceTensionCalc = new GTSurfaceTensionSimple(system); + // gasLiquidSurfaceTensionCalc = new GTSurfaceTensionSimple(system); + liquidLiquidSurfaceTensionCalc = new GTSurfaceTensionSimple(system); + } else if (interfacialTensionModel == 2) { + gasLiquidSurfaceTensionCalc = new LGTSurfaceTension(system); + liquidLiquidSurfaceTensionCalc = new LGTSurfaceTension(system); + gasAqueousSurfaceTensionCalc = new LGTSurfaceTension(system); + } else if (interfacialTensionModel == 3) { + gasLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); + gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); + liquidLiquidSurfaceTensionCalc = new FirozabadiRamleyInterfaceTension(system); + } else if (interfacialTensionModel == 4) { + gasLiquidSurfaceTensionCalc = new GTSurfaceTensionSimple(system); + liquidLiquidSurfaceTensionCalc = new LGTSurfaceTension(system); + gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); + } else if (interfacialTensionModel == 5) { + gasLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); + gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); + liquidLiquidSurfaceTensionCalc = new FirozabadiRamleyInterfaceTension(system); + } else { + gasLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); + gasAqueousSurfaceTensionCalc = new ParachorSurfaceTension(system); + liquidLiquidSurfaceTensionCalc = new ParachorSurfaceTension(system); + } + } + + /** {@inheritDoc} */ + @Override + public AdsorptionInterface[] getAdsorptionCalc() { + return adsorptionCalc; + } + + /** {@inheritDoc} */ + @Override + public AdsorptionInterface getAdsorptionCalc(String phaseName) { + return adsorptionCalc[system.getPhaseNumberOfPhase(phaseName)]; + } + + /** {@inheritDoc} */ + @Override + public void setAdsorptionCalc(AdsorptionInterface[] adsorptionCalc) { + this.adsorptionCalc = adsorptionCalc; + } } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/InterphasePropertiesInterface.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/InterphasePropertiesInterface.java index 4431d13d55..0b8c0b20ca 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/InterphasePropertiesInterface.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/InterphasePropertiesInterface.java @@ -3,6 +3,7 @@ * * Created on 13. august 2001, 13:13 */ + package neqsim.physicalProperties.interfaceProperties; import neqsim.physicalProperties.interfaceProperties.solidAdsorption.AdsorptionInterface; @@ -17,150 +18,150 @@ * @version $Id: $Id */ public interface InterphasePropertiesInterface extends Cloneable { - /** - *

- * init. - *

- */ - public void init(); - - /** - *

- * calcAdsorption. - *

- */ - public void calcAdsorption(); - - /** - *

- * setInterfacialTensionModel. - *

- * - * @param phase1 a {@link java.lang.String} object - * @param phase2 a {@link java.lang.String} object - * @param model a {@link java.lang.String} object - */ - public void setInterfacialTensionModel(String phase1, String phase2, String model); - - /** - *

- * setSolidAdsorbentMaterial. - *

- * - * @param material a {@link java.lang.String} object - */ - public void setSolidAdsorbentMaterial(String material); - - /** - *

- * clone. - *

- * - * @return a {@link neqsim.physicalProperties.interfaceProperties.InterphasePropertiesInterface} - * object - */ - public InterphasePropertiesInterface clone(); - - /** - *

- * getSurfaceTension. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getSurfaceTension(int i, int j); - - /** - *

- * initAdsorption. - *

- */ - public void initAdsorption(); - - /** - *

- * init. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public void init(neqsim.thermo.system.SystemInterface system); - - /** - *

- * getInterfacialTensionModel. - *

- * - * @return a int - */ - public int getInterfacialTensionModel(); - - /** - *

- * setInterfacialTensionModel. - *

- * - * @param interfacialTensionModel a int - */ - public void setInterfacialTensionModel(int interfacialTensionModel); - - /** - *

- * getSurfaceTensionModel. - *

- * - * @param i a int - * @return a - * {@link neqsim.physicalProperties.interfaceProperties.surfaceTension.SurfaceTensionInterface} - * object - */ - public SurfaceTensionInterface getSurfaceTensionModel(int i); - - /** - *

- * getSurfaceTension. - *

- * - * @param numb1 a int - * @param numb2 a int - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getSurfaceTension(int numb1, int numb2, String unit); - - /** - *

- * getAdsorptionCalc. - *

- * - * @return an array of - * {@link neqsim.physicalProperties.interfaceProperties.solidAdsorption.AdsorptionInterface} - * objects - */ - public AdsorptionInterface[] getAdsorptionCalc(); - - /** - *

- * setAdsorptionCalc. - *

- * - * @param adsorptionCalc an array of - * {@link neqsim.physicalProperties.interfaceProperties.solidAdsorption.AdsorptionInterface} - * objects - */ - public void setAdsorptionCalc(AdsorptionInterface[] adsorptionCalc); - - /** - *

- * getAdsorptionCalc. - *

- * - * @param phaseName a {@link java.lang.String} object - * @return a - * {@link neqsim.physicalProperties.interfaceProperties.solidAdsorption.AdsorptionInterface} - * object - */ - public AdsorptionInterface getAdsorptionCalc(String phaseName); + /** + *

+ * init. + *

+ */ + public void init(); + + /** + *

+ * init. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void init(neqsim.thermo.system.SystemInterface system); + + /** + *

+ * initAdsorption. + *

+ */ + public void initAdsorption(); + + /** + *

+ * calcAdsorption. + *

+ */ + public void calcAdsorption(); + + /** + *

+ * setSolidAdsorbentMaterial. + *

+ * + * @param material a {@link java.lang.String} object + */ + public void setSolidAdsorbentMaterial(String material); + + /** + *

+ * clone. + *

+ * + * @return a {@link neqsim.physicalProperties.interfaceProperties.InterphasePropertiesInterface} + * object + */ + public InterphasePropertiesInterface clone(); + + /** + *

+ * Get Surface tension between two phases. + *

+ * + * @param i First phase number. + * @param j Second phase number. + * @return Surface tension in default unit. + */ + public double getSurfaceTension(int i, int j); + + /** + *

+ * Get Surface tension between two phases in a specified unit. + *

+ * + * @param numb1 First phase number. + * @param numb2 Second phase number. + * @param unit a {@link java.lang.String} object + * @return Surface tension in specified unit. + */ + public double getSurfaceTension(int numb1, int numb2, String unit); + + /** + *

+ * getInterfacialTensionModel. + *

+ * + * @return a int + */ + public int getInterfacialTensionModel(); + + /** + *

+ * getSurfaceTensionModel. + *

+ * + * @param i a int + * @return a + * {@link neqsim.physicalProperties.interfaceProperties.surfaceTension.SurfaceTensionInterface} + * object + */ + public SurfaceTensionInterface getSurfaceTensionModel(int i); + + /** + *

+ * setInterfacialTensionModel. + *

+ * + * @param phase1 a {@link java.lang.String} object + * @param phase2 a {@link java.lang.String} object + * @param model a {@link java.lang.String} object + */ + public void setInterfacialTensionModel(String phase1, String phase2, String model); + + /** + *

+ * setInterfacialTensionModel. + *

+ * + * @param interfacialTensionModel a int + */ + public void setInterfacialTensionModel(int interfacialTensionModel); + + /** + *

+ * getAdsorptionCalc. + *

+ * + * @return an array of + * {@link neqsim.physicalProperties.interfaceProperties.solidAdsorption.AdsorptionInterface} + * objects + */ + public AdsorptionInterface[] getAdsorptionCalc(); + + /** + *

+ * getAdsorptionCalc. + *

+ * + * @param phaseName a {@link java.lang.String} object + * @return a + * {@link neqsim.physicalProperties.interfaceProperties.solidAdsorption.AdsorptionInterface} + * object + */ + public AdsorptionInterface getAdsorptionCalc(String phaseName); + + /** + *

+ * setAdsorptionCalc. + *

+ * + * @param adsorptionCalc an array of + * {@link neqsim.physicalProperties.interfaceProperties.solidAdsorption.AdsorptionInterface} + * objects + */ + public void setAdsorptionCalc(AdsorptionInterface[] adsorptionCalc); } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/solidAdsorption/AdsorptionInterface.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/solidAdsorption/AdsorptionInterface.java index 99caffa07a..ba9d15bdfa 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/solidAdsorption/AdsorptionInterface.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/solidAdsorption/AdsorptionInterface.java @@ -9,41 +9,41 @@ * @version $Id: $Id */ public interface AdsorptionInterface extends neqsim.thermo.ThermodynamicConstantsInterface { - /** - *

- * calcAdorption. - *

- * - * @param phase a int - */ - public void calcAdorption(int phase); + /** + *

+ * calcAdsorption. + *

+ * + * @param phase a int + */ + public void calcAdsorption(int phase); - /** - *

- * getSurfaceExess. - *

- * - * @param component a int - * @return a double - */ - public double getSurfaceExess(int component); + /** + *

+ * getSurfaceExcess. + *

+ * + * @param component a int + * @return a double + */ + public double getSurfaceExcess(int component); - /** - *

- * setSolidMaterial. - *

- * - * @param solidM a {@link java.lang.String} object - */ - public void setSolidMaterial(String solidM); + /** + *

+ * setSolidMaterial. + *

+ * + * @param solidM a {@link java.lang.String} object + */ + public void setSolidMaterial(String solidM); - /** - *

- * getSurfaceExcess. - *

- * - * @param componentName a {@link java.lang.String} object - * @return a double - */ - public double getSurfaceExcess(String componentName); + /** + *

+ * getSurfaceExcess. + *

+ * + * @param componentName a {@link java.lang.String} object + * @return a double + */ + public double getSurfaceExcess(String componentName); } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/solidAdsorption/PotentialTheoryAdsorption.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/solidAdsorption/PotentialTheoryAdsorption.java index 3fcde2e56a..5497040db1 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/solidAdsorption/PotentialTheoryAdsorption.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/solidAdsorption/PotentialTheoryAdsorption.java @@ -13,182 +13,175 @@ * @version $Id: $Id */ public class PotentialTheoryAdsorption implements AdsorptionInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(PotentialTheoryAdsorption.class); - - SystemInterface system; - double[] eps0;// = 7.458;//7.630; // J/mol - double[] z0;// = 3.284;// * 1e-3; // m^3/kg - double[] beta;// = 2.0; - int integrationSteps = 500; - double totalSurfaceExcess; - double[][] compositionSurface, fugacityField; - double[][] zField, epsField; - double[] pressureField, surfaceExcess, surfaceExcessMolFraction, deltaz; - String solidMaterial = "AC"; - - /** - *

- * Constructor for PotentialTheoryAdsorption. - *

- */ - public PotentialTheoryAdsorption() {} - - /** - *

- * Constructor for PotentialTheoryAdsorption. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public PotentialTheoryAdsorption(SystemInterface system) { - this.system = system; - compositionSurface = - new double[integrationSteps][system.getPhase(0).getNumberOfComponents()]; - pressureField = new double[integrationSteps]; - zField = new double[system.getPhase(0).getNumberOfComponents()][integrationSteps]; - epsField = new double[system.getPhase(0).getNumberOfComponents()][integrationSteps]; - fugacityField = new double[system.getPhase(0).getNumberOfComponents()][integrationSteps]; - deltaz = new double[system.getPhase(0).getNumberOfComponents()]; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PotentialTheoryAdsorption.class); + + SystemInterface system; + double[] eps0; // = 7.458; //7.630; // J/mol + double[] z0; // = 3.284; // * 1e-3; // m^3/kg + double[] beta; // = 2.0; + int integrationSteps = 500; + double totalSurfaceExcess; + double[][] compositionSurface; + double[][] fugacityField; + double[][] zField; + double[][] epsField; + double[] pressureField; + double[] surfaceExcess; + double[] surfaceExcessMolFraction; + double[] deltaz; + String solidMaterial = "AC"; + + /** + *

+ * Constructor for PotentialTheoryAdsorption. + *

+ */ + public PotentialTheoryAdsorption() {} + + /** + *

+ * Constructor for PotentialTheoryAdsorption. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public PotentialTheoryAdsorption(SystemInterface system) { + this.system = system; + compositionSurface = new double[integrationSteps][system.getPhase(0).getNumberOfComponents()]; + pressureField = new double[integrationSteps]; + zField = new double[system.getPhase(0).getNumberOfComponents()][integrationSteps]; + epsField = new double[system.getPhase(0).getNumberOfComponents()][integrationSteps]; + fugacityField = new double[system.getPhase(0).getNumberOfComponents()][integrationSteps]; + deltaz = new double[system.getPhase(0).getNumberOfComponents()]; + } + + /** {@inheritDoc} */ + @Override + public void setSolidMaterial(String solidM) { + solidMaterial = solidM; + } + + /** {@inheritDoc} */ + @Override + public void calcAdsorption(int phase) { + SystemInterface tempSystem = system.clone(); + tempSystem.init(3); + double[] bulkFug = new double[system.getPhase(phase).getNumberOfComponents()]; + double[] corrx = new double[system.getPhase(phase).getNumberOfComponents()]; + surfaceExcess = new double[system.getPhase(phase).getNumberOfComponents()]; + surfaceExcessMolFraction = new double[system.getPhase(phase).getNumberOfComponents()]; + + eps0 = new double[system.getPhase(phase).getNumberOfComponents()]; + z0 = new double[system.getPhase(phase).getNumberOfComponents()]; + beta = new double[system.getPhase(phase).getNumberOfComponents()]; + + readDBParameters(); + + for (int comp = 0; comp < system.getPhase(phase).getNumberOfComponents(); comp++) { + bulkFug[comp] = system.getPhase(phase).getComponent(comp).getx() + * system.getPhase(phase).getComponent(comp).getFugacityCoefficient() + * system.getPhase(phase).getPressure(); + deltaz[comp] = z0[comp] / (integrationSteps * 1.0); + zField[comp][0] = z0[comp]; + for (int i = 0; i < integrationSteps; i++) { + zField[comp][i] = zField[comp][0] - deltaz[comp] * i; + epsField[comp][i] = + eps0[comp] * Math.pow(Math.log(z0[comp] / zField[comp][i]), 1.0 / beta[comp]); + } } - - /** {@inheritDoc} */ - @Override - public void setSolidMaterial(String solidM) { - solidMaterial = solidM; - } - - /** {@inheritDoc} */ - @Override - public void calcAdorption(int phase) { - SystemInterface tempSystem = system.clone(); - tempSystem.init(3); - double[] bulkFug = new double[system.getPhase(phase).getNumberOfComponents()]; - double[] corrx = new double[system.getPhase(phase).getNumberOfComponents()]; - surfaceExcess = new double[system.getPhase(phase).getNumberOfComponents()]; - surfaceExcessMolFraction = new double[system.getPhase(phase).getNumberOfComponents()]; - - eps0 = new double[system.getPhase(phase).getNumberOfComponents()]; - z0 = new double[system.getPhase(phase).getNumberOfComponents()]; - beta = new double[system.getPhase(phase).getNumberOfComponents()]; - - readDBParameters(); - + for (int i = 0; i < integrationSteps; i++) { + int iter = 0; + double sumx = 0; + double pressure = 0; + do { + iter++; + sumx = 0.0; + pressure = 0.0; for (int comp = 0; comp < system.getPhase(phase).getNumberOfComponents(); comp++) { - bulkFug[comp] = system.getPhase(phase).getComponent(comp).getx() - * system.getPhase(phase).getComponent(comp).getFugacityCoefficient() - * system.getPhase(phase).getPressure(); - deltaz[comp] = z0[comp] / (integrationSteps * 1.0); - zField[comp][0] = z0[comp]; - for (int i = 0; i < integrationSteps; i++) { - zField[comp][i] = zField[comp][0] - deltaz[comp] * i; - epsField[comp][i] = eps0[comp] - * Math.pow(Math.log(z0[comp] / zField[comp][i]), 1.0 / beta[comp]); - } - } - for (int i = 0; i < integrationSteps; i++) { - int iter = 0; - double sumx = 0, pressure = 0; - do { - iter++; - sumx = 0.0; - pressure = 0.0; - for (int comp = 0; comp < system.getPhase(phase).getNumberOfComponents(); comp++) { - double correction = Math - .exp(epsField[comp][i] / R / system.getPhase(phase).getTemperature()); - fugacityField[comp][i] = correction * bulkFug[comp]; - double fugComp = - tempSystem.getPhase(phase).getComponent(comp).getFugacityCoefficient() - * tempSystem.getPhase(phase).getPressure(); - corrx[comp] = fugacityField[comp][i] / fugComp; - pressure += fugacityField[comp][i] / tempSystem.getPhase(phase) - .getComponent(comp).getFugacityCoefficient(); - } - for (int comp = 0; comp < system.getPhase(phase).getNumberOfComponents(); comp++) { - tempSystem.getPhase(phase).getComponent(comp).setx(corrx[comp]); - sumx += corrx[comp]; - } - tempSystem.setPressure(pressure); - // tempSystem.getPhase(phase).normalize(); - // tempSystem.calc_x_y(); - tempSystem.init(1); - // System.out.println("pressure " + tempSystem.getPressure() + " error " + - // Math.abs(sumx - 1.0)); - } while (Math.abs(sumx - 1.0) > 1e-12 && iter < 100); - - for (int comp = 0; comp < system.getPhase(phase).getNumberOfComponents(); comp++) { - surfaceExcess[comp] += - deltaz[comp] * (1.0e5 / tempSystem.getPhase(phase).getMolarVolume() - * tempSystem.getPhase(phase).getComponent(comp).getx() - - 1.0e5 / system.getPhase(phase).getMolarVolume() - * system.getPhase(phase).getComponent(comp).getx()); - } - } - - totalSurfaceExcess = 0.0; - for (int comp = 0; comp < system.getPhase(phase).getNumberOfComponents(); comp++) { - totalSurfaceExcess += surfaceExcess[comp]; + double correction = + Math.exp(epsField[comp][i] / R / system.getPhase(phase).getTemperature()); + fugacityField[comp][i] = correction * bulkFug[comp]; + double fugComp = tempSystem.getPhase(phase).getComponent(comp).getFugacityCoefficient() + * tempSystem.getPhase(phase).getPressure(); + corrx[comp] = fugacityField[comp][i] / fugComp; + pressure += fugacityField[comp][i] + / tempSystem.getPhase(phase).getComponent(comp).getFugacityCoefficient(); } for (int comp = 0; comp < system.getPhase(phase).getNumberOfComponents(); comp++) { - surfaceExcessMolFraction[comp] = surfaceExcess[comp] / totalSurfaceExcess; - // logger.info("surface excess molfrac " + surfaceExcessMolFraction[comp] + " - // mol/kg adsorbent " + surfaceExcess[comp]); + tempSystem.getPhase(phase).getComponent(comp).setx(corrx[comp]); + sumx += corrx[comp]; } + tempSystem.setPressure(pressure); + // tempSystem.getPhase(phase).normalize(); + // tempSystem.calc_x_y(); + tempSystem.init(1); + // System.out.println("pressure " + tempSystem.getPressure() + " error " + + // Math.abs(sumx - 1.0)); + } while (Math.abs(sumx - 1.0) > 1e-12 && iter < 100); + + for (int comp = 0; comp < system.getPhase(phase).getNumberOfComponents(); comp++) { + surfaceExcess[comp] += deltaz[comp] * (1.0e5 / tempSystem.getPhase(phase).getMolarVolume() + * tempSystem.getPhase(phase).getComponent(comp).getx() + - 1.0e5 / system.getPhase(phase).getMolarVolume() + * system.getPhase(phase).getComponent(comp).getx()); + } } - /** {@inheritDoc} */ - @Override - public double getSurfaceExcess(String componentName) { - int componentNumber = system.getPhase(0).getComponent(componentName).getComponentNumber(); - return surfaceExcess[componentNumber]; + totalSurfaceExcess = 0.0; + for (int comp = 0; comp < system.getPhase(phase).getNumberOfComponents(); comp++) { + totalSurfaceExcess += surfaceExcess[comp]; } - - /** - *

- * readDBParameters. - *

- */ - public void readDBParameters() { - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - for (int comp = 0; comp < system.getPhase(0).getNumberOfComponents(); comp++) { - try { - dataSet = database.getResultSet(("SELECT * FROM adsorptionparameters WHERE name='" - + system.getPhase(0).getComponent(comp).getComponentName() + "' AND Solid='" - + solidMaterial + "'")); - dataSet.next(); - - eps0[comp] = Double.parseDouble(dataSet.getString("eps")); - beta[comp] = Double.parseDouble(dataSet.getString("z0")); - z0[comp] = Double.parseDouble(dataSet.getString("beta")); - - logger.info("adsorption parameters read ok for " - + system.getPhase(0).getComponent(comp).getComponentName() + " eps " - + eps0[comp]); - } catch (Exception e) { - logger.info("Component not found in adsorption DB " - + system.getPhase(0).getComponent(comp).getComponentName() + " on solid " - + solidMaterial); - logger.info("using default parameters"); - eps0[comp] = 7.2; - beta[comp] = 2.0; - z0[comp] = 3.2; - // e.printStackTrace(); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - logger.error("error closing adsorption database.....", e); - } - } - } + for (int comp = 0; comp < system.getPhase(phase).getNumberOfComponents(); comp++) { + surfaceExcessMolFraction[comp] = surfaceExcess[comp] / totalSurfaceExcess; + // logger.info("surface excess molfrac " + surfaceExcessMolFraction[comp] + " + // mol/kg adsorbent " + surfaceExcess[comp]); } - - /** {@inheritDoc} */ - @Override - public double getSurfaceExess(int component) { - return 1.0; + } + + /** {@inheritDoc} */ + @Override + public double getSurfaceExcess(int component) { + throw new UnsupportedOperationException("Unimplemented method 'getSurfaceExcess'"); + } + + /** {@inheritDoc} */ + @Override + public double getSurfaceExcess(String componentName) { + int componentNumber = system.getPhase(0).getComponent(componentName).getComponentNumber(); + return surfaceExcess[componentNumber]; + } + + /** + *

+ * readDBParameters. + *

+ */ + public void readDBParameters() { + for (int comp = 0; comp < system.getPhase(0).getNumberOfComponents(); comp++) { + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet(("SELECT * FROM adsorptionparameters WHERE name='" + + system.getPhase(0).getComponent(comp).getComponentName() + "' AND Solid='" + + solidMaterial + "'"))) { + dataSet.next(); + + eps0[comp] = Double.parseDouble(dataSet.getString("eps")); + beta[comp] = Double.parseDouble(dataSet.getString("z0")); + z0[comp] = Double.parseDouble(dataSet.getString("beta")); + + logger.info("adsorption parameters read ok for " + + system.getPhase(0).getComponent(comp).getComponentName() + " eps " + eps0[comp]); + } catch (Exception ex) { + logger.info("Component not found in adsorption DB " + + system.getPhase(0).getComponent(comp).getComponentName() + " on solid " + + solidMaterial); + logger.info("using default parameters"); + eps0[comp] = 7.2; + beta[comp] = 2.0; + z0[comp] = 3.2; + // logger.error(ex.getMessage(), ex); + } } + } } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/FirozabadiRamleyInterfaceTension.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/FirozabadiRamleyInterfaceTension.java index d633a2796d..e3d90b8883 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/FirozabadiRamleyInterfaceTension.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/FirozabadiRamleyInterfaceTension.java @@ -11,80 +11,79 @@ * @version $Id: $Id */ public class FirozabadiRamleyInterfaceTension extends SurfaceTension { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for FirozabadiRamleyInterfaceTension. - *

- */ - public FirozabadiRamleyInterfaceTension() {} + /** + *

+ * Constructor for FirozabadiRamleyInterfaceTension. + *

+ */ + public FirozabadiRamleyInterfaceTension() {} - /** - *

- * Constructor for FirozabadiRamleyInterfaceTension. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public FirozabadiRamleyInterfaceTension(SystemInterface system) { - super(system); - } - - /** - * {@inheritDoc} - * - * Calculates the pure component surfacetension using the Macleod/Sugden method - */ - @Override - public double calcPureComponentSurfaceTension(int componentNumber) { - return 1.0e-3 - * Math.pow( - system.getPhases()[0].getComponents()[componentNumber] - .getParachorParameter() - * 1.0e-6 - * (system.getPhases()[1].getPhysicalProperties().getDensity() - / system.getPhases()[1].getMolarMass() - * system.getPhases()[1].getComponents()[componentNumber] - .getx() - - system.getPhases()[0].getPhysicalProperties().getDensity() - / system.getPhases()[0].getMolarMass() - * system.getPhases()[0] - .getComponents()[componentNumber].getx()), - 4.0); - } + /** + *

+ * Constructor for FirozabadiRamleyInterfaceTension. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public FirozabadiRamleyInterfaceTension(SystemInterface system) { + super(system); + } - /** - * {@inheritDoc} - * - * Calculates the surfacetension using the Firozabadi Ramley (1988) method for mixtures Units: - * N/m - */ - @Override - public double calcSurfaceTension(int interface1, int interface2) { - if (system.getNumberOfPhases() < 2) { - return 0.0; - } + /** + * {@inheritDoc} + * + *

+ * using the Macleod/Sugden method + *

+ */ + @Override + public double calcPureComponentSurfaceTension(int componentNumber) { + return 1.0e-3 * Math + .pow(system.getPhases()[0].getComponents()[componentNumber].getParachorParameter() * 1.0e-6 + * (system.getPhases()[1].getPhysicalProperties().getDensity() + / system.getPhases()[1].getMolarMass() + * system.getPhases()[1].getComponents()[componentNumber].getx() + - system.getPhases()[0].getPhysicalProperties().getDensity() + / system.getPhases()[0].getMolarMass() + * system.getPhases()[0].getComponents()[componentNumber].getx()), + 4.0); + } - double deltaDens = Math.abs(system.getPhase(interface2).getPhysicalProperties().getDensity() - - system.getPhase(interface1).getPhysicalProperties().getDensity()); - double Tr = system.getPhase(interface1).getTemperature() - / system.getPhase(interface1).getPseudoCriticalTemperature(); - // System.out.println("deltaDens " + deltaDens + " Tr " + Tr + " phasetyaae " + - // system.getPhase(interface1).getPhaseTypeName()); - double a1 = 0.0, b1 = 0.0; - if (deltaDens / 1000.0 < 0.2) { - a1 = 2.2062; - b1 = -0.94716; - } else if (deltaDens / 1000.0 < 0.5) { - a1 = 2.915; - b1 = -0.76852; - } else { - a1 = 3.3858; - b1 = -0.62590; - } + /** + * {@inheritDoc} + * + *

+ * Using the Firozabadi Ramley (1988) method for mixtures Units: N/m + *

+ */ + @Override + public double calcSurfaceTension(int interface1, int interface2) { + if (system.getNumberOfPhases() < 2) { + return 0.0; + } - double temp1 = a1 * Math.pow(deltaDens / 1000.0, b1 + 1.0) / Math.pow(Tr, 0.3125); - return Math.pow(temp1, 4.0) / 1000.0; + double deltaDens = Math.abs(system.getPhase(interface2).getPhysicalProperties().getDensity() + - system.getPhase(interface1).getPhysicalProperties().getDensity()); + double Tr = system.getPhase(interface1).getTemperature() + / system.getPhase(interface1).getPseudoCriticalTemperature(); + // System.out.println("deltaDens " + deltaDens + " Tr " + Tr + " pt " + + // system.getPhase(interface1).getType()); + double a1 = 0.0; + double b1 = 0.0; + if (deltaDens / 1000.0 < 0.2) { + a1 = 2.2062; + b1 = -0.94716; + } else if (deltaDens / 1000.0 < 0.5) { + a1 = 2.915; + b1 = -0.76852; + } else { + a1 = 3.3858; + b1 = -0.62590; } + + double temp1 = a1 * Math.pow(deltaDens / 1000.0, b1 + 1.0) / Math.pow(Tr, 0.3125); + return Math.pow(temp1, 4.0) / 1000.0; + } } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTension.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTension.java index ded686ef0c..708be1322a 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTension.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTension.java @@ -3,6 +3,7 @@ * * Created on 13. august 2001, 13:14 */ + package neqsim.physicalProperties.interfaceProperties.surfaceTension; import org.apache.commons.math3.ode.nonstiff.DormandPrince54Integrator; @@ -14,7 +15,6 @@ * method assumes the number of components to be two or more, and that the species set is equal and * in the same component order for both phases. * - * * Near a fluid-fluid interface, we consider the variation of densities of chemical species, * \f$\boldsymbol{n}(z)\f$, as function of position, \f$z\f$, where element \f$k\f$ of the vector * \f$\boldsymbol{n}(z)\f$ is the number density of chemical species \f$k\f$ in the mixture. The @@ -69,181 +69,179 @@ * @version $Id: $Id */ public class GTSurfaceTension extends SurfaceTension { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - int useFullGT = 1; // 1 will use full gradient theory 0 - will use ODE solver and one component - // assumed linear + int useFullGT = 1; // 1 will use full gradient theory 0 - will use ODE solver and one component + // assumed linear - /** - *

- * Constructor for GTSurfaceTension. - *

- */ - public GTSurfaceTension() {} + /** + *

+ * Constructor for GTSurfaceTension. + *

+ */ + public GTSurfaceTension() {} - /** - *

- * Constructor for GTSurfaceTension. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public GTSurfaceTension(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for GTSurfaceTension. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public GTSurfaceTension(SystemInterface system) { + super(system); + } - /** {@inheritDoc} */ - @Override - public double calcSurfaceTension(int interface1, int interface2) { - SystemInterface localSystem; - double surftens = 0.0; - int refcompIndex = 0; + /** {@inheritDoc} */ + @Override + public double calcSurfaceTension(int interface1, int interface2) { + SystemInterface localSystem; + double surftens = 0.0; + int refcompIndex = 0; - localSystem = this.system.clone(); - switch (useFullGT) { - case 1: - surftens = solveFullDensityProfile(localSystem, interface1, interface2); - break; - default: - refcompIndex = this.getComponentWithHighestBoilingpoint(); - surftens = solveWithRefcomp(localSystem, interface1, interface2, refcompIndex); - } - return surftens; + localSystem = this.system.clone(); + switch (useFullGT) { + case 1: + surftens = solveFullDensityProfile(localSystem, interface1, interface2); + break; + default: + refcompIndex = this.getComponentWithHighestBoilingpoint(); + surftens = solveWithRefcomp(localSystem, interface1, interface2, refcompIndex); } + return surftens; + } - /** - *

- * solveWithRefcomp. Solve for the surface tension by integration in a reference component - * density for cases with no binary interaction parameter in the influcence parameter. - * - * The pertinent equations for calculating the interfacial tension according to Gradient Theory - * can be represented by the system of equations below, providing that the reference component - * number density varies monotonically through the interface, and that the joint influence - * parameter \f$c_{ij}\f$ can be described by a quadratic mixing rule, without a binary - * interaction parameter. The transformation of the integration variable from spacial position - * in the interface to the number density of a reference component simplifies the differential - * algebraic problem to an initial value problem with finite bounds. It is usually not known in - * advance whether the chosen reference component number density varies monotonically over the - * interface, and caution should be used in interpreting the results. - * - * \f{gather}{ \sigma = \int_{\rho_\text{ref}^\text{vap}}^{\rho_\text{ref}^\text{liq}} - * \sqrt{2\Delta\Omega(\boldsymbol{\rho})\sum_i\sum_j c_{ij} - * \frac{\partial\rho_i}{\partial\rho_\text{ref}} - * \frac{\partial\rho_j}{\partial\rho_\text{ref}}} \mathrm{d}\rho_\text{ref}\\ 0 = - * \sqrt{c_i}\left(\mu_\text{ref}^\text{eq} -\mu_\text{ref}(\boldsymbol{\rho})\right) - * -\sqrt{c_\text{ref}} \left(\mu_i^\text{eq}-\mu_i(\boldsymbol{\rho})\right)\\ c_i = - * \left(A_it_i + B_i\right)a_ib_i^{\frac{2}{3}}\\ t_i = 1-T/T_{C,i}\\ A_i = \frac{1}{\xi_1 + - * \xi_2\omega_i}\\ B_i = \frac{1}{\xi_3 + \xi_4\omega_i}\\ c_{ij} = \sqrt{c_ic_j} \f} - * - * Here \f$\sigma\f$ is the interfacial tension, \f$\rho\f$ is the number density, \f$\Omega\f$ - * is the grand canonical potential, \f$\mu_i\f$ is the chemical potential of component, - * \f$i\f$, and \f$c_i\f$ and \f$c_{ij}\f$ is the influence and cross-influence parameter. The - * parameters \f$\xi\f$ must be fitted to the equation of state used. - * - * Since the monotonicity of a reference component in general can not be guaranteed, a more - * general and safer approach would be to solve the system in the spacial domain. This implies - * solving a boundary value problem with infinite bounds. Although asymptotic arguments leads to - * simplifications, solving this problem induces a higher numerical cost and complexity. - * - * This method solves the surface tension integral using a reference component density as the - * integration variable as described above. The equilibrium relations are solved as a set of - * algebraic equations for each evaluation of the differential. The resulting ordinary - * differential equation is integrated with a non-stiff Runge-Kutta class Dormand Prince method, - * similar to the MATLAB routine ode45. - *

- * - * @param system NeqSIM system interface - * @param interface1 Index of the phase to consider for the surface - * @param interface2 Index of the phase to consider for the surface - * @param refcompIndex Index of the reference component to use when using a component density as - * integration variable. - * @return Surface tension in units of N/m. - */ - public static double solveWithRefcomp(SystemInterface system, int interface1, int interface2, - int refcompIndex) { - GTSurfaceTensionODE odesystem; - double yscale = 20.0; - double t, t0, minstep, maxstep, reltol, abstol; - double[] y0 = new double[1]; - double[] y = new double[1]; - double surftens; + /** + *

+ * solveWithRefcomp. Solve for the surface tension by integration in a reference component density + * for cases with no binary interaction parameter in the influcence parameter. + * + * The pertinent equations for calculating the interfacial tension according to Gradient Theory + * can be represented by the system of equations below, providing that the reference component + * number density varies monotonically through the interface, and that the joint influence + * parameter \f$c_{ij}\f$ can be described by a quadratic mixing rule, without a binary + * interaction parameter. The transformation of the integration variable from spacial position in + * the interface to the number density of a reference component simplifies the differential + * algebraic problem to an initial value problem with finite bounds. It is usually not known in + * advance whether the chosen reference component number density varies monotonically over the + * interface, and caution should be used in interpreting the results. + * + * \f{gather}{ \sigma = \int_{\rho_\text{ref}^\text{vap}}^{\rho_\text{ref}^\text{liq}} + * \sqrt{2\Delta\Omega(\boldsymbol{\rho})\sum_i\sum_j c_{ij} + * \frac{\partial\rho_i}{\partial\rho_\text{ref}} \frac{\partial\rho_j}{\partial\rho_\text{ref}}} + * \mathrm{d}\rho_\text{ref}\\ 0 = \sqrt{c_i}\left(\mu_\text{ref}^\text{eq} + * -\mu_\text{ref}(\boldsymbol{\rho})\right) -\sqrt{c_\text{ref}} + * \left(\mu_i^\text{eq}-\mu_i(\boldsymbol{\rho})\right)\\ c_i = \left(A_it_i + + * B_i\right)a_ib_i^{\frac{2}{3}}\\ t_i = 1-T/T_{C,i}\\ A_i = \frac{1}{\xi_1 + \xi_2\omega_i}\\ + * B_i = \frac{1}{\xi_3 + \xi_4\omega_i}\\ c_{ij} = \sqrt{c_ic_j} \f} + * + * Here \f$\sigma\f$ is the interfacial tension, \f$\rho\f$ is the number density, \f$\Omega\f$ is + * the grand canonical potential, \f$\mu_i\f$ is the chemical potential of component, \f$i\f$, and + * \f$c_i\f$ and \f$c_{ij}\f$ is the influence and cross-influence parameter. The parameters + * \f$\xi\f$ must be fitted to the equation of state used. + * + * Since the monotonicity of a reference component in general can not be guaranteed, a more + * general and safer approach would be to solve the system in the spacial domain. This implies + * solving a boundary value problem with infinite bounds. Although asymptotic arguments leads to + * simplifications, solving this problem induces a higher numerical cost and complexity. + * + * This method solves the surface tension integral using a reference component density as the + * integration variable as described above. The equilibrium relations are solved as a set of + * algebraic equations for each evaluation of the differential. The resulting ordinary + * differential equation is integrated with a non-stiff Runge-Kutta class Dormand Prince method, + * similar to the MATLAB routine ode45. + *

+ * + * @param system NeqSIM system interface + * @param interface1 Index of the phase to consider for the surface + * @param interface2 Index of the phase to consider for the surface + * @param refcompIndex Index of the reference component to use when using a component density as + * integration variable. + * @return Surface tension in units of N/m. + */ + public static double solveWithRefcomp(SystemInterface system, int interface1, int interface2, + int refcompIndex) { + GTSurfaceTensionODE odesystem; + double yscale = 20.0; + double t, t0, minstep, maxstep, reltol, abstol; + double[] y0 = new double[1]; + double[] y = new double[1]; + double surftens; - /* - * Setup system of ODE-equations. Abscissa variable number density of the reference - * component is scaled to the range [0,1]. The ordinate variable surface tension is scaled - * scaled according to the variable yscale. - */ - odesystem = new GTSurfaceTensionODE(system, interface1, interface2, refcompIndex, yscale); - t0 = 0; - t = 1.0; - y0[0] = 0.0; + /* + * Setup system of ODE-equations. Abscissa variable number density of the reference component is + * scaled to the range [0,1]. The ordinate variable surface tension is scaled scaled according + * to the variable yscale. + */ + odesystem = new GTSurfaceTensionODE(system, interface1, interface2, refcompIndex, yscale); + t0 = 0; + t = 1.0; + y0[0] = 0.0; - /* - * Tolerances for the integrator. Note that you can adjust the odesystem.reltol and - * odesystem.normtol in order to control the internal Newton-Rhapson solver if the - * odesystem. Tolerances for the odesystem.abstol and .reltol should be less than the - * integrator tolerances for stability. Default Newton-Rhapson values are odesystem.normtol - * = 1e-10; odesystem.reltol = 1e-8; - * - */ - odesystem.normtol = 1e-10; - odesystem.reltol = 1e-8; - minstep = 1e-6; - maxstep = 1e-2; - reltol = 1e-4; - abstol = 1e-4; - t0 = 1e-6; - DormandPrince54Integrator integrator = - new DormandPrince54Integrator(minstep, maxstep, reltol, abstol); - integrator.integrate(odesystem, t0, y0, t, y); - surftens = y[0] / yscale; + /* + * Tolerances for the integrator. Note that you can adjust the odesystem.reltol and + * odesystem.normtol in order to control the internal Newton-Rhapson solver if the odesystem. + * Tolerances for the odesystem.abstol and .reltol should be less than the integrator tolerances + * for stability. Default Newton-Rhapson values are odesystem.normtol = 1e-10; odesystem.reltol + * = 1e-8; + */ + odesystem.normtol = 1e-10; + odesystem.reltol = 1e-8; + minstep = 1e-6; + maxstep = 1e-2; + reltol = 1e-4; + abstol = 1e-4; + t0 = 1e-6; + DormandPrince54Integrator integrator = + new DormandPrince54Integrator(minstep, maxstep, reltol, abstol); + integrator.integrate(odesystem, t0, y0, t, y); + surftens = y[0] / yscale; - return surftens; - } + return surftens; + } - /** - *

- * solveFullDensityProfile. Calculate the surface tension for the general case by integration of - * the component density profiles. - * - * This method can be used in the general case, including when binary interaction influence - * parameters \f$\beta_{ij}\f$ are nonzero. - * - * On the top level, we solve the Euler-Lagrange equation with Newtons method. Consider solving - * Equation for \f$\delta\mu\f$ as a Dirichlet problem on a finite domain \f$-L < z < L\f$ - * around the interface. The distance \f$L\f$ should be large enough that it does not disturb - * the results. The boundary conditions are the homogeneous densities of the two fluids in - * contact, as calculated by a flash calculation. - * - * - * We approximate the solution on a equi-spaced grid with \f$2^N+1\f$ points where \f$N\f$ is an - * integer. Using a Finite Difference approximation, the equation for \f$\delta\mu\f$ can then - * be written as an equation system for the internal grid points, \f$i=2,3,...,2^N\f$: - * - * \f{equation}{ \mathbf{0}=\mathbf{F}\left( \mathbf{n}_i \right) \equiv \Delta \mu \left( - * \mathbf{n}_i \right) - \mathbf{C} \frac{\mathbf{n}_{i-1} - * -2\mathbf{n}_i+\mathbf{n}_{i+1}}{\Delta z^2}, \quad i=2,3,...,2^N \f} - * - * Applying Newtons method on this equation yields the iteration formula for the Newton step: - * \f{eqnarray}{ \mathbf{J}_i\Delta \mathbf{n}_i - \mathbf{C} \frac{\Delta \mathbf{n}_{i-1} - * -2\Delta \mathbf{n}_i +\Delta \mathbf{n}_{i+1}}{\Delta z^2} &=& - \mathbf{F}_i\\ - * \mathbf{n}_i &:=& \mathbf{n}_i + \beta \Delta \mathbf{n}_i \f} where - * \f$\mathbf{J}=\frac{\partial \Delta \mu}{\partial \mathbf{n}_i}\f$ is a Jacobian matrix and - * \f$\mathbf{F}_i=\mathbf{F}\left( \mathbf{n}_i \right)\f$ is the residual. \f$\beta \le 1\f$ - * is a damping factor. This is a block tridiagonal system that can be solved using a band - * solver or a sparse matrix solver. - *

- * - * @param system NeqSIM system interface - * @param interface1 Index of the phase to consider for the surface - * @param interface2 Index of the phase to consider for the surface - * @return Surface tension in units of N/m. - */ - public static double solveFullDensityProfile(SystemInterface system, int interface1, - int interface2) { - GTSurfaceTensionFullGT FullGT; + /** + *

+ * solveFullDensityProfile. Calculate the surface tension for the general case by integration of + * the component density profiles. + * + * This method can be used in the general case, including when binary interaction influence + * parameters \f$\beta_{ij}\f$ are nonzero. + * + * On the top level, we solve the Euler-Lagrange equation with Newtons method. Consider solving + * Equation for \f$\delta\mu\f$ as a Dirichlet problem on a finite domain \f$-L < z < L\f$ + * around the interface. The distance \f$L\f$ should be large enough that it does not disturb the + * results. The boundary conditions are the homogeneous densities of the two fluids in contact, as + * calculated by a flash calculation. + * + * We approximate the solution on a equi-spaced grid with \f$2^N+1\f$ points where \f$N\f$ is an + * integer. Using a Finite Difference approximation, the equation for \f$\delta\mu\f$ can then be + * written as an equation system for the internal grid points, \f$i=2,3,...,2^N\f$: + * + * \f{equation}{ \mathbf{0}=\mathbf{F}\left( \mathbf{n}_i \right) \equiv \Delta \mu \left( + * \mathbf{n}_i \right) - \mathbf{C} \frac{\mathbf{n}_{i-1} + * -2\mathbf{n}_i+\mathbf{n}_{i+1}}{\Delta z^2}, \quad i=2,3,...,2^N \f} + * + * Applying Newtons method on this equation yields the iteration formula for the Newton step: + * \f{eqnarray}{ \mathbf{J}_i\Delta \mathbf{n}_i - \mathbf{C} \frac{\Delta \mathbf{n}_{i-1} + * -2\Delta \mathbf{n}_i +\Delta \mathbf{n}_{i+1}}{\Delta z^2} &=& - \mathbf{F}_i\\ + * \mathbf{n}_i &:=& \mathbf{n}_i + \beta \Delta \mathbf{n}_i \f} where + * \f$\mathbf{J}=\frac{\partial \Delta \mu}{\partial \mathbf{n}_i}\f$ is a Jacobian matrix and + * \f$\mathbf{F}_i=\mathbf{F}\left( \mathbf{n}_i \right)\f$ is the residual. \f$\beta \le 1\f$ is + * a damping factor. This is a block tridiagonal system that can be solved using a band solver or + * a sparse matrix solver. + *

+ * + * @param system NeqSIM system interface + * @param interface1 Index of the phase to consider for the surface + * @param interface2 Index of the phase to consider for the surface + * @return Surface tension in units of N/m. + */ + public static double solveFullDensityProfile(SystemInterface system, int interface1, + int interface2) { + GTSurfaceTensionFullGT FullGT; - FullGT = new GTSurfaceTensionFullGT(system, interface1, interface2); - return FullGT.runcase(); - } + FullGT = new GTSurfaceTensionFullGT(system, interface1, interface2); + return FullGT.runcase(); + } } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionFullGT.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionFullGT.java index a56a6d9fc9..36563801b9 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionFullGT.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionFullGT.java @@ -9,7 +9,7 @@ /** *

* GTSurfaceTensionFullGT class. Solving for the surface tension by direct Newton method.
- * todo: Makeuse of binary interaction parameter for the influence parameter \f$\beta_{ij}\f$ when + * TODO: Make use of binary interaction parameter for the influence parameter \f$\beta_{ij}\f$ when * this becomes available in NeqSIM API. *

* @@ -90,13 +90,12 @@ public GTSurfaceTensionFullGT(SystemInterface flashedSystem, int phase1, int pha this.sys.getPhase(0).setTotalVolume(1.0); this.sys.useVolumeCorrection(false); this.sys.setEmptyFluid(); - double nv[] = new double[this.ncomp]; + double[] nv = new double[this.ncomp]; for (i = 0; i < ncomp; i++) { nv[i] = this.rho_ph1[i] * Pa; } - this.sys.setTotalFlowRate(1.0, "mol/sec"); // added by Even S 18/02/2020 (can not set molar - // composition if total - // flow is zero + this.sys.setTotalFlowRate(1.0, "mol/sec"); + // added by Even S 18/02/2020 (can not set molar composition if total flow is zero this.sys.setMolarComposition(nv); this.sys.init_x_y(); this.sys.setBeta(1.0); @@ -104,13 +103,15 @@ public GTSurfaceTensionFullGT(SystemInterface flashedSystem, int phase1, int pha } /** - * Calculation of the interfacial tension + * Calculation of the interfacial tension. * * @return Interfacial tension in N/m. */ public double runcase() { - int i, j, k; - double cij[][] = new double[ncomp][ncomp]; + int i; + int j; + int k; + double[][] cij = new double[ncomp][ncomp]; double[] delta_mu = new double[this.ncomp]; double[][] dmu_drho = new double[this.ncomp][this.ncomp]; double sigma = 0.0; @@ -118,11 +119,12 @@ public double runcase() { int Nlevel = 3; // Hard coded // int NN; - int N1, N2; + int N1; + int N2; int Ngrid = (1 << Nlevel) + 1; // 2^(Nlevel) + 1 - double rhomat[][] = new double[Ngrid][this.ncomp]; - double rhotmp[][]; - double xgrid[]; + double[][] rhomat = new double[Ngrid][this.ncomp]; + double[][] rhotmp; + double[] xgrid; int Nrefinements = 7; double StopTolerance = 0.01; // Stop if rel change smaller than this @@ -141,9 +143,9 @@ public double runcase() { // For grid remeshing: double H; // Mesh spacing double Lnew; // Half-width of domain - double xgridNew[]; // Grid + double[] xgridNew; // Grid double alpha; // Interpolation weight - double drhodz[][]; // Density gradient + double[][] drhodz; // Density gradient int Nhalf; // Half the number of intervals int Nideal; // Ideal number of grid points, current spacing int NgridNew; // Doubled mesh @@ -173,8 +175,8 @@ public double runcase() { this.ci[i] = this.sys.getPhase(0).getComponent(i).getSurfaceTenisionInfluenceParameter(t); } - /// @todo Change to \f$c_{ij} = (1-\beta_{ij})\sqrt{c_ic_j}\f$ when a - /// NeqSIM function for evaluating \f$\beta_{ij}\f$ becomes available. + // TODO: Change to \f$c_{ij} = (1-\beta_{ij})\sqrt{c_ic_j}\f$ when a + // NeqSIM function for evaluating \f$\beta_{ij}\f$ becomes available. for (i = 0; i < ncomp; i++) { for (j = i; j < ncomp; j++) { cij[i][j] = 1.e18 * Math.sqrt(this.ci[i] * this.ci[j]); // Use nm as unit for length @@ -263,37 +265,42 @@ public double runcase() { * large 4. Iterate until convergence or max #iterations (N_Newton) *

* - * @return sigma The surface tension [N/m] - * @param cij an array of {@link double} objects + * @param cij an array of type double * @param L a double * @param N_Newton a int * @param allowedRelChange a double * @param highOrder a boolean * @param directMethod a boolean - * @param rhomat an array of {@link double} objects + * @param rhomat an array of type double * @param sys a {@link neqsim.thermo.system.SystemInterface} object * @param ncomp a int * @param t a double - * @param mueq an array of {@link double} objects + * @param mueq an array of type double + * @return sigma The surface tension [N/m] */ public static double Newton(double[][] cij, double L, int N_Newton, double allowedRelChange, boolean highOrder, boolean directMethod, double[][] rhomat, SystemInterface sys, int ncomp, double t, double[] mueq) { - int i, j, k; + int i; + int j; + int k; int NewtonStep; int Ngrid = rhomat.length; double H = 2.0 * L / (Ngrid - 1); // Grid spacing - double Jac[][][] = new double[Ngrid][ncomp][ncomp]; - double dmu[][] = new double[Ngrid][ncomp]; - double rres[][] = new double[Ngrid][ncomp]; - double rrho_prev[][] = new double[Ngrid][ncomp]; - double drhodz[][] = new double[Ngrid - 1][ncomp]; + double[][][] Jac = new double[Ngrid][ncomp][ncomp]; + double[][] dmu = new double[Ngrid][ncomp]; + double[][] rres = new double[Ngrid][ncomp]; + double[][] rrho_prev = new double[Ngrid][ncomp]; + double[][] drhodz = new double[Ngrid - 1][ncomp]; double maxrelchange; double urel_Newton; double sigma = 0.0; - double xgrid[] = linspace(-L, L, Ngrid); - double tmp, sum_ztmp, sum_tmp, cg; + double[] xgrid = linspace(-L, L, Ngrid); + double tmp; + double sum_ztmp; + double sum_tmp; + double cg; int icorr; // Process initial array @@ -332,7 +339,7 @@ public static double Newton(double[][] cij, double L, int N_Newton, double allow // %Limit the Newton step by max relative change in solution maxrelchange = 0.0; for (i = 1; i < Ngrid - 1; i++) { // Inner grid points - for (j = 0; j < ncomp; j++) {// Each specie + for (j = 0; j < ncomp; j++) { // Each specie if (Math.abs(rhomat[i][j] - rrho_prev[i][j]) > maxrelchange * Math.abs(rrho_prev[i][j])) { maxrelchange = Math.abs(rhomat[i][j] - rrho_prev[i][j]) / Math.abs(rrho_prev[i][j]); } @@ -342,14 +349,14 @@ public static double Newton(double[][] cij, double L, int N_Newton, double allow // Update solution for (i = 1; i < Ngrid - 1; i++) { // Inner grid points - for (j = 0; j < ncomp; j++) {// Each specie + for (j = 0; j < ncomp; j++) { // Each specie rhomat[i][j] = urel_Newton * rhomat[i][j] + (1.0 - urel_Newton) * rrho_prev[i][j]; } } - if (urel_Newton * maxrelchange < 0.00001) {// %Convergence test FIXME: Hardcoded - // tolerance - break; // %Converged + if (urel_Newton * maxrelchange < 0.00001) { // Convergence test + // FIXME: Hardcoded tolerance + break; } sigma = sigmaCalc(H, rhomat, cij, false, drhodz, ncomp); @@ -421,34 +428,36 @@ public static double Newton(double[][] cij, double L, int N_Newton, double allow * directsolve. Solve linear system for Full Gradient method *

* - * @param rres an array of {@link double} objects - * @param JJ an array of {@link double} objects - * @param C an array of {@link double} objects + * @param rres an array of type double + * @param JJ an array of type double + * @param C an array of type double * @param H a double * @param Ngrid a int - * @param rhomat an array of {@link double} objects + * @param rhomat an array of type double * @param ncomp a int */ - public static void directsolve(double rres[][], double JJ[][][], double C[][], double H, - int Ngrid, double rhomat[][], int ncomp) { - int i, j, k; + public static void directsolve(double[][] rres, double[][][] JJ, double[][] C, double H, + int Ngrid, double[][] rhomat, int ncomp) { + int i; + int j; + int k; double H2 = H * H; double bbtmp; int Neq = (Ngrid - 2) * ncomp; - int iglob, skip; + int iglob; + int skip; int kl = 2 * ncomp + 1; int ku = 2 * ncomp + 1; BandMatrix Jac = new BandMatrix(Neq, kl, ku); DenseMatrix bb = new DenseMatrix(Neq, 1); - DenseMatrix drho = new DenseMatrix(Neq, 1); // Construct right hand side iglob = 0; // Global index for (i = 1; i < Ngrid - 1; i++) { // Inner grid points - for (j = 0; j < ncomp; j++) {// Each specie + for (j = 0; j < ncomp; j++) { // Each specie bbtmp = rres[i][j]; - for (k = 0; k < ncomp; k++) {// Each specie + for (k = 0; k < ncomp; k++) { // Each specie // bb[i][j] = rhomat[i][j] + JJ[i][j][k]*rhomat[i][k] - // C[j][k]*(rhomat[i][k-1]-2*rhomat[i][k]+rhomat[i][k+1])/(H*H) //Loop k bbtmp += JJ[i][j][k] * rhomat[i][k] @@ -460,8 +469,8 @@ public static void directsolve(double rres[][], double JJ[][][], double C[][], d // Add block by block to the jacobian i = 1; // Grid point 2 is the first unknown - for (j = 0; j < ncomp; j++) {// Each specie - for (k = 0; k < ncomp; k++) {// Each specie + for (j = 0; j < ncomp; j++) { // Each specie + for (k = 0; k < ncomp; k++) { // Each specie // Jac[j][k]=JJ[i][j][k]+2.0/H2*C[j][k]; // Jac[j][k+ncomp] = -1.0/H2*C[j][k]; Jac.set(j, k, JJ[i][j][k] + 2.0 / H2 * C[j][k]); @@ -471,8 +480,8 @@ public static void directsolve(double rres[][], double JJ[][][], double C[][], d for (i = 2; i < Ngrid - 2; i++) { // Inner grid points skip = ncomp * (i - 1); - for (j = 0; j < ncomp; j++) {// Each specie - for (k = 0; k < ncomp; k++) {// Each specie + for (j = 0; j < ncomp; j++) { // Each specie + for (k = 0; k < ncomp; k++) { // Each specie // Jac[j+skip][k+skip-ncomp] = -1.0/H2*C[j][k]; // Jac[j+skip][k+skip]=JJ[i][j][k]+2.0/H2*C[j][k]; // Jac[j+skip][k+skip+ncomp] = -1.0/H2*C[j][k]; @@ -485,8 +494,8 @@ public static void directsolve(double rres[][], double JJ[][][], double C[][], d i = Ngrid - 2; // Last unknown grid point skip = ncomp * (i - 1); - for (j = 0; j < ncomp; j++) {// Each specie - for (k = 0; k < ncomp; k++) {// Each specie + for (j = 0; j < ncomp; j++) { // Each specie + for (k = 0; k < ncomp; k++) { // Each specie // Jac[j+skip][k+skip-ncomp] = -1.0/H2*C[j][k]; // Jac[j+skip][k+skip]=JJ[i][j][k]+2.0/H2*C[j][k]; Jac.set(j + skip, k + skip - ncomp, -1.0 / H2 * C[j][k]); @@ -494,11 +503,12 @@ public static void directsolve(double rres[][], double JJ[][][], double C[][], d } } + DenseMatrix drho = new DenseMatrix(Neq, 1); Jac.solve(bb, drho); iglob = 0; for (i = 1; i < Ngrid - 1; i++) { // Inner grid points - for (j = 0; j < ncomp; j++) {// Each specie + for (j = 0; j < ncomp; j++) { // Each specie bbtmp = drho.get(iglob++, 0); // FIXME: Only debugging rhomat[i][j] += bbtmp; // drho.get(iglob++); } @@ -513,17 +523,19 @@ public static void directsolve(double rres[][], double JJ[][][], double C[][], d * \int_{-\infty}^{\infty} \boldsymbol{n_z}^T \boldsymbol{C} \boldsymbol{n_z} \, dz \f} *

* - * @return sigma The surface tension [N/m] * @param h a double - * @param rrho an array of {@link double} objects - * @param C an array of {@link double} objects + * @param rrho an array of type double + * @param C an array of type double * @param highOrder a boolean - * @param drhodz an array of {@link double} objects + * @param drhodz an array of type double * @param ncomp a int + * @return sigma The surface tension [N/m] */ - public static double sigmaCalc(double h, double rrho[][], double C[][], boolean highOrder, - double drhodz[][], int ncomp) { - int i, j, k; + public static double sigmaCalc(double h, double[][] rrho, double[][] C, boolean highOrder, + double[][] drhodz, int ncomp) { + int i; + int j; + int k; double drho2; // For each pair of species j,k, drho2=sum_i{drhodz[i][j]*drhodz[i][k]} double sigma; @@ -558,19 +570,24 @@ public static double sigmaCalc(double h, double rrho[][], double C[][], boolean * integrand. Used to adjust the domain size *

* + * @param z an array of type double + * @param C an array of type double + * @param drhodz an array of type double * @return Interface width (length scale) [nm] - * @param z an array of {@link double} objects - * @param C an array of {@link double} objects - * @param drhodz an array of {@link double} objects */ - public double calc_std_integral(double z[], double C[][], double drhodz[][]) { + public double calc_std_integral(double[] z, double[][] C, double[][] drhodz) { double h1 = z[1] - z[0]; double mean; int Ngrid = drhodz.length + 1; - int j, m, n; + int j; - double zdum = 0.0, z2dum = 0.0, sumdum = 0.0, dum; + int m; + int n; + double zdum = 0.0; + double z2dum = 0.0; + double sumdum = 0.0; + double dum; for (j = 0; j < Ngrid - 1; j++) { dum = 0.0; for (m = 0; m < ncomp; m++) { @@ -595,12 +612,12 @@ public double calc_std_integral(double z[], double C[][], double drhodz[][]) { * @param sys a {@link neqsim.thermo.system.SystemInterface} object * @param ncomp a int * @param t a double - * @param mueq an array of {@link double} objects - * @param rho an array of {@link double} objects - * @param delta_mu an array of {@link double} objects - * @param dmu_drho an array of {@link double} objects + * @param mueq an array of type double + * @param rho an array of type double + * @param delta_mu an array of type double + * @param dmu_drho an array of type double */ - public static void delta_mu(SystemInterface sys, int ncomp, double t, double mueq[], double[] rho, + public static void delta_mu(SystemInterface sys, int ncomp, double t, double[] mueq, double[] rho, double[] delta_mu, double[][] dmu_drho) { int i; double[] pdummy = new double[ncomp]; @@ -621,10 +638,10 @@ public static void delta_mu(SystemInterface sys, int ncomp, double t, double mue * @param a start of range * @param b end of range * @param N number of values. - * @return an array of {@link double} objects + * @return an array of type double */ public static double[] linspace(double a, double b, int N) { - double x[] = new double[N]; + double[] x = new double[N]; double dx = (b - a) / (N - 1); int i; @@ -645,8 +662,9 @@ public static double[] linspace(double a, double b, int N) { public static void debugPlot(double[] x, double[][] y) { int N = y.length; int M = y[0].length; - int i, j; - double yy[] = new double[N]; + int i; + int j; + double[] yy = new double[N]; for (j = 0; j < M; j++) { for (i = 0; i < N; i++) { @@ -669,14 +687,14 @@ public static void debugPlot(double[] x, double[][] y) { * @param sys a {@link neqsim.thermo.system.SystemInterface} object * @param ncomp a int * @param t a double - * @param rho_ph1 an array of {@link double} objects - * @param rho_ph2 an array of {@link double} objects - * @param mueq an array of {@link double} objects - * @param p0 an array of {@link double} objects + * @param rho_ph1 an array of type double + * @param rho_ph2 an array of type double + * @param mueq an array of type double + * @param p0 an array of type double * @param reltol a double */ - public static void initmu(SystemInterface sys, int ncomp, double t, double rho_ph1[], - double rho_ph2[], double mueq[], double p0[], double reltol) { + public static void initmu(SystemInterface sys, int ncomp, double t, double[] rho_ph1, + double[] rho_ph2, double[] mueq, double[] p0, double reltol) { int i; double maxerr = 0.; double[][] dmu_drho1 = new double[ncomp][ncomp]; @@ -691,7 +709,7 @@ public static void initmu(SystemInterface sys, int ncomp, double t, double rho_p maxerr = Math.max(maxerr, Math.abs(mueq[i] / mueq2[i] - 1.0)); } if (maxerr > reltol) { - logger.error("Flash is not properly solved. Maximum relative error in chemical potential: " + logger.warn("Flash is not properly solved. Maximum relative error in chemical potential: " + maxerr + " > " + reltol); throw new RuntimeException("Flash not solved!"); } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionODE.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionODE.java index 4415cf3f20..faf49f6e29 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionODE.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionODE.java @@ -28,348 +28,346 @@ * @version $Id: $Id */ public class GTSurfaceTensionODE implements FirstOrderDifferentialEquations { - static Logger logger = LogManager.getLogger(GTSurfaceTensionODE.class); - - private boolean initialized = false; - private int ncomp; // Number of components. - private SystemInterface sys; // Local work copy of flashed system. - private double[] ci; // Influence parameter. - private double[] mueq; // Chemical potentials at equilibrium. - private double[] rho_ph1; // Density in bulk phase 1. - private double[] rho_ph2; // Density in bulk phase 2. - private double rhoref_span; // Span in reference component number density. - private double[] rho_k; // Density at iteration k. - private double t; // Temperature. - private double[] p0; // Bulk pressure [Pa] - private int refcomp; // Reference component index. - private int[] algidx; // Index for non-reference components. - private static final double Pa = 1e-5; - private static final double m3 = 1e-5; - private double yscale; - public double normtol = 1e-11; - public double reltol = 1e-6; - public double abstol = 1e-6; - public int maxit = 40; - - /** - *

- * Constructor for GTSurfaceTensionODE. - *

- * - * @param flashedSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param phase1 a int - * @param phase2 a int - * @param referenceComponent a int - * @param yscale a double - */ - public GTSurfaceTensionODE(SystemInterface flashedSystem, int phase1, int phase2, - int referenceComponent, double yscale) { - int i, idx = 0; - - // Setup local system clone and some parameters. - this.yscale = yscale; - this.sys = flashedSystem.clone(); - this.refcomp = referenceComponent; - this.ncomp = this.sys.getPhase(0).getNumberOfComponents(); - this.t = this.sys.getPhase(0).getTemperature(); - this.rho_ph1 = new double[this.ncomp]; - this.rho_ph2 = new double[this.ncomp]; - this.rho_k = new double[this.ncomp]; - this.algidx = new int[this.ncomp - 1]; - this.p0 = new double[1]; - this.ci = new double[this.ncomp]; - this.mueq = new double[this.ncomp]; - - for (i = 0; i < this.ncomp; i++) { - if (i != this.refcomp) { - this.algidx[idx] = i; - idx++; - } - } - - /* - * Get influence parameters and densities at phase equilibrium. - */ - for (i = 0; i < this.ncomp; i++) { - this.ci[i] = - this.sys.getPhase(0).getComponent(i).getSurfaceTenisionInfluenceParameter(t); - this.rho_ph1[i] = this.sys.getPhase(phase1).getComponent(i).getx() - / this.sys.getPhase(phase1).getMolarVolume() / m3; - this.rho_ph2[i] = this.sys.getPhase(phase2).getComponent(i).getx() - / this.sys.getPhase(phase2).getMolarVolume() / m3; - this.rho_k[i] = this.rho_ph1[i]; - } - this.rhoref_span = Math.abs(this.rho_ph2[this.refcomp] - this.rho_ph1[this.refcomp]); - this.sys.setBeta(1.0); - this.sys.init(0); - this.sys.setUseTVasIndependentVariables(true); - this.sys.setNumberOfPhases(1); - this.sys.getPhase(0).setTotalVolume(1.0); - this.sys.useVolumeCorrection(false); - this.sys.setEmptyFluid(); - double nv[] = new double[this.ncomp]; - for (i = 0; i < ncomp; i++) { - nv[i] = this.rho_ph1[i] * Pa; - // this.sys.addComponent(this.sys.getPhase(0).getComponent(i).getName(), - // this.rho_ph1[i]*Pa); - } - this.sys.setMolarComposition(nv); - this.sys.setMolarComposition(nv); - this.sys.setMolarComposition(nv); - this.sys.init_x_y(); - this.sys.setBeta(1.0); - this.sys.init(3); + static Logger logger = LogManager.getLogger(GTSurfaceTensionODE.class); + + private boolean initialized = false; + private int ncomp; // Number of components. + private SystemInterface sys; // Local work copy of flashed system. + private double[] ci; // Influence parameter. + private double[] mueq; // Chemical potentials at equilibrium. + private double[] rho_ph1; // Density in bulk phase 1. + private double[] rho_ph2; // Density in bulk phase 2. + private double rhoref_span; // Span in reference component number density. + private double[] rho_k; // Density at iteration k. + private double t; // Temperature. + private double[] p0; // Bulk pressure [Pa] + private int refcomp; // Reference component index. + private int[] algidx; // Index for non-reference components. + private static final double Pa = 1e-5; + private static final double m3 = 1e-5; + private double yscale; + public double normtol = 1e-11; + public double reltol = 1e-6; + public double abstol = 1e-6; + public int maxit = 40; + + /** + *

+ * Constructor for GTSurfaceTensionODE. + *

+ * + * @param flashedSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param phase1 a int + * @param phase2 a int + * @param referenceComponent a int + * @param yscale a double + */ + public GTSurfaceTensionODE(SystemInterface flashedSystem, int phase1, int phase2, + int referenceComponent, double yscale) { + int i; + + int idx = 0; + // Setup local system clone and some parameters. + this.yscale = yscale; + this.sys = flashedSystem.clone(); + this.refcomp = referenceComponent; + this.ncomp = this.sys.getPhase(0).getNumberOfComponents(); + this.t = this.sys.getPhase(0).getTemperature(); + this.rho_ph1 = new double[this.ncomp]; + this.rho_ph2 = new double[this.ncomp]; + this.rho_k = new double[this.ncomp]; + this.algidx = new int[this.ncomp - 1]; + this.p0 = new double[1]; + this.ci = new double[this.ncomp]; + this.mueq = new double[this.ncomp]; + + for (i = 0; i < this.ncomp; i++) { + if (i != this.refcomp) { + this.algidx[idx] = i; + idx++; + } } - /** - * Initialize equilibrium chemical potential, and derivative. + /* + * Get influence parameters and densities at phase equilibrium. */ - public void initmu() { - int i; - double maxerr = 0.; - double[][] dmu_drho1 = new double[this.ncomp][this.ncomp]; - double[][] dmu_drho2 = new double[this.ncomp][this.ncomp]; - double[] mueq2 = new double[this.ncomp]; - double[] p0 = new double[1]; - - GTSurfaceTensionUtils.mufun(this.sys, this.ncomp, this.t, this.rho_ph1, this.mueq, - dmu_drho1, this.p0); - GTSurfaceTensionUtils.mufun(this.sys, this.ncomp, this.t, this.rho_ph2, mueq2, dmu_drho2, - p0); - - // Check flash equilibrium - for (i = 0; i < this.ncomp; i++) { - maxerr = Math.max(maxerr, Math.abs(this.mueq[i] / mueq2[i] - 1.0)); - } - if (maxerr > this.reltol) { - logger.error( - "Flash is not properly solved. Maximum relative error in chemical potential: " - + maxerr + " > " + reltol); - throw new RuntimeException("Flash not solved!"); - } - this.initialized = true; + for (i = 0; i < this.ncomp; i++) { + this.ci[i] = this.sys.getPhase(0).getComponent(i).getSurfaceTenisionInfluenceParameter(t); + this.rho_ph1[i] = this.sys.getPhase(phase1).getComponent(i).getx() + / this.sys.getPhase(phase1).getMolarVolume() / m3; + this.rho_ph2[i] = this.sys.getPhase(phase2).getComponent(i).getx() + / this.sys.getPhase(phase2).getMolarVolume() / m3; + this.rho_k[i] = this.rho_ph1[i]; } - - /** - * {@inheritDoc} - * - * Return the dimension of the ODE problem to the solver. - */ - @Override - public int getDimension() { - return 1; + this.rhoref_span = Math.abs(this.rho_ph2[this.refcomp] - this.rho_ph1[this.refcomp]); + this.sys.setBeta(1.0); + this.sys.init(0); + this.sys.setUseTVasIndependentVariables(true); + this.sys.setNumberOfPhases(1); + this.sys.getPhase(0).setTotalVolume(1.0); + this.sys.useVolumeCorrection(false); + this.sys.setEmptyFluid(); + double[] nv = new double[this.ncomp]; + for (i = 0; i < ncomp; i++) { + nv[i] = this.rho_ph1[i] * Pa; + // this.sys.addComponent(this.sys.getPhase(0).getComponent(i).getName(), + // this.rho_ph1[i]*Pa); + } + this.sys.setMolarComposition(nv); + this.sys.setMolarComposition(nv); + this.sys.setMolarComposition(nv); + this.sys.init_x_y(); + this.sys.setBeta(1.0); + this.sys.init(3); + } + + /** + * Initialize equilibrium chemical potential, and derivative. + */ + public void initmu() { + int i; + double maxerr = 0.; + double[][] dmu_drho1 = new double[this.ncomp][this.ncomp]; + double[][] dmu_drho2 = new double[this.ncomp][this.ncomp]; + double[] mueq2 = new double[this.ncomp]; + double[] p0 = new double[1]; + + GTSurfaceTensionUtils.mufun(this.sys, this.ncomp, this.t, this.rho_ph1, this.mueq, dmu_drho1, + this.p0); + GTSurfaceTensionUtils.mufun(this.sys, this.ncomp, this.t, this.rho_ph2, mueq2, dmu_drho2, p0); + + // Check flash equilibrium + for (i = 0; i < this.ncomp; i++) { + maxerr = Math.max(maxerr, Math.abs(this.mueq[i] / mueq2[i] - 1.0)); + } + if (maxerr > this.reltol) { + logger.error("Flash is not properly solved. Maximum relative error in chemical potential: " + + maxerr + " > " + reltol); + throw new RuntimeException("Flash not solved!"); + } + this.initialized = true; + } + + /** {@inheritDoc} */ + @Override + public int getDimension() { + return 1; + } + + /** {@inheritDoc} */ + @Override + public void computeDerivatives(double t, double[] y, double[] yDot) { + double[] mu = new double[this.ncomp]; + double[][] dmu_drho = new double[this.ncomp][this.ncomp]; + double[] p = new double[1]; + double[] f = new double[this.ncomp]; + double[][] jac = new double[this.ncomp][this.ncomp]; + double[] rho = new double[this.ncomp]; + double delta_omega; + double dsigma; + double cij; + double rho0; + + DMatrixRMaj dn_dnref; + + int j; + if (!this.initialized) { + this.initmu(); } - /** - * {@inheritDoc} - * - * Compute the ODE differential ydot = f(t, y) - */ - @Override - public void computeDerivatives(double t, double[] y, double[] yDot) { - double[] mu = new double[this.ncomp]; - double[][] dmu_drho = new double[this.ncomp][this.ncomp]; - double[] p = new double[1]; - double[] f = new double[this.ncomp]; - double[][] jac = new double[this.ncomp][this.ncomp]; - double[] rho = new double[this.ncomp]; - double delta_omega, dsigma, cij; - double rho0; - - DMatrixRMaj df, dn_dnref, ms; - SingularValueDecomposition svd; - int i, j; - - if (!this.initialized) { - this.initmu(); - } - - rho0 = this.rho_ph1[this.refcomp]; - rho[this.refcomp] = t * this.rhoref_span + rho0; - for (i = 0; i < this.ncomp - 1; i++) { - rho[this.algidx[i]] = this.rho_k[this.algidx[i]]; - } - // System.out.printf("t: %e, rho_ref: %e\n", t, rho[this.refcomp]); - solveRho(rho, mu, dmu_drho, p, f, jac); - for (i = 0; i < this.ncomp; i++) { - this.rho_k[i] = rho[i]; - } + rho0 = this.rho_ph1[this.refcomp]; + rho[this.refcomp] = t * this.rhoref_span + rho0; + for (int i = 0; i < this.ncomp - 1; i++) { + rho[this.algidx[i]] = this.rho_k[this.algidx[i]]; + } + // System.out.printf("t: %e, rho_ref: %e\n", t, rho[this.refcomp]); + solveRho(rho, mu, dmu_drho, p, f, jac); + for (int i = 0; i < this.ncomp; i++) { + this.rho_k[i] = rho[i]; + } - df = new DMatrixRMaj(jac); - ms = new DMatrixRMaj(df.numRows, 1); - svd = DecompositionFactory_DDRM.svd(df.numRows, df.numCols, true, true, true); - if (!svd.decompose(df)) { - throw new RuntimeException("Decomposition failed"); - } - dn_dnref = SingularOps_DDRM.nullSpace((SingularValueDecomposition_F64) svd, ms, - 1e-12); // UtilEjml.EPS); - CommonOps_DDRM.divide(dn_dnref.get(this.refcomp, 0), dn_dnref); - delta_omega = -(p[0] - this.p0[0]); - for (i = 0; i < this.ncomp; i++) { - delta_omega += (mu[i] - this.mueq[i]) * rho[i]; - } + DMatrixRMaj df = new DMatrixRMaj(jac); + DMatrixRMaj ms = new DMatrixRMaj(df.numRows, 1); + SingularValueDecomposition svd = + DecompositionFactory_DDRM.svd(df.numRows, df.numCols, true, true, true); + if (!svd.decompose(df)) { + throw new RuntimeException("Decomposition failed"); + } + dn_dnref = + SingularOps_DDRM.nullSpace((SingularValueDecomposition_F64) svd, ms, 1e-12); // UtilEjml.EPS); + CommonOps_DDRM.divide(dn_dnref.get(this.refcomp, 0), dn_dnref); + delta_omega = -(p[0] - this.p0[0]); + for (int i = 0; i < this.ncomp; i++) { + delta_omega += (mu[i] - this.mueq[i]) * rho[i]; + } - dsigma = 0.0; - for (i = 0; i < this.ncomp; i++) { - for (j = 0; j < this.ncomp; j++) { - cij = Math.sqrt(this.ci[i] * this.ci[j]); - dsigma += cij * dn_dnref.get(i, 0) * dn_dnref.get(j, 0); - } - } + dsigma = 0.0; + for (int i = 0; i < this.ncomp; i++) { + for (j = 0; j < this.ncomp; j++) { + cij = Math.sqrt(this.ci[i] * this.ci[j]); + dsigma += cij * dn_dnref.get(i, 0) * dn_dnref.get(j, 0); + } + } - /* - * If the discriminant becomes negative, this can be due to numerical problems when - * approaching bulk. Assume the profile is sufficiently flat if the reference density has - * exceeded 90% of the target bulk density. A better way is to use the approximations given - * by Davis, Statistical mechanics of surfaces and thin films, VHC Publishers Inc, 1996. - */ - if (delta_omega * dsigma < 0.0) { - if (t > 0.9) { - dsigma = 0.; - } else { - throw new RuntimeException("Negative discriminant"); - } - } else { - dsigma = Math.sqrt(2.0 * delta_omega * dsigma); - } + /* + * If the discriminant becomes negative, this can be due to numerical problems when approaching + * bulk. Assume the profile is sufficiently flat if the reference density has exceeded 90% of + * the target bulk density. A better way is to use the approximations given by Davis, + * Statistical mechanics of surfaces and thin films, VHC Publishers Inc, 1996. + */ + if (delta_omega * dsigma < 0.0) { + if (t > 0.9) { + dsigma = 0.; + } else { + throw new RuntimeException("Negative discriminant"); + } + } else { + dsigma = Math.sqrt(2.0 * delta_omega * dsigma); + } - yDot[0] = dsigma * this.rhoref_span * this.yscale; - // System.out.printf("t: %e, sigma: %e [J/m2]\n", t, y[0]/this.yscale); + yDot[0] = dsigma * this.rhoref_span * this.yscale; + // System.out.printf("t: %e, sigma: %e [J/m2]\n", t, y[0]/this.yscale); - if (y[0] < 0.0) { - y[0] = 0.0; - // throw new RuntimeException("Negative surface tension."); - } + if (y[0] < 0.0) { + y[0] = 0.0; + // throw new RuntimeException("Negative surface tension."); + } + } + + /** + * SolveRho. Solve for the equilibrium density in the interface. Solves the equilibrium relations + * with the Newton-Raphson method. + * + * @param rho Number density [mol/m3] + * @param mu Chemical potential [J/mol] + * @param dmu_drho Chemical potential derivative with respect to mole numbers [J/mol^2] + * @param p Pressure [Pa] + * @param f Residual of equilibrium relations. + * @param jac Jacobian of the equilibrium relations. + */ + private void solveRho(double[] rho, double[] mu, double[][] dmu_drho, double[] p, double[] f, + double[][] jac) { + double normf; + double norm0; + double norm; + double s; + int i; + int j; + int iter; + DMatrixRMaj A = new DMatrixRMaj(this.ncomp - 1, this.ncomp - 1); + DMatrixRMaj b = new DMatrixRMaj(this.ncomp - 1, 1); + DMatrixRMaj x = new DMatrixRMaj(this.ncomp - 1, 1); + DMatrixRMaj x0 = new DMatrixRMaj(this.ncomp - 1, 1); + DMatrixRMaj c = new DMatrixRMaj(this.ncomp - 1, 1); + + GTSurfaceTensionUtils.mufun(this.sys, this.ncomp, this.t, rho, mu, dmu_drho, p); + fjacfun(mu, dmu_drho, f, jac); + for (i = 0; i < this.ncomp - 1; i++) { + int idx1; + + idx1 = this.algidx[i]; + b.set(i, 0, -f[idx1]); + x0.set(i, 0, rho[idx1]); + for (j = 0; j < this.ncomp - 1; j++) { + int idx2; + + idx2 = this.algidx[j]; + A.set(i, j, jac[idx1][idx2]); + } + } + normf = NormOps_DDRM.normP2(b); + if (normf < this.abstol) { + return; } - /** - * SolveRho. Solve for the equilibrium density in the interface. - * - * Solves the equilibrium relations with the Newton-Raphson method. - * - * @param rho Number density [mol/m3] - * @param mu Chemical potential [J/mol] - * @param dmu_drho Chemical potential derivative with respect to mole numbers [J/mol^2] - * @param p Pressure [Pa] - * @param f Residual of equilibrium relations. - * @param jac Jacobian of the equilibrium relations. - */ - private void solveRho(double[] rho, double[] mu, double[][] dmu_drho, double[] p, double[] f, - double[][] jac) { - double normf, norm0, norm, s; - int i, j, iter; - DMatrixRMaj A = new DMatrixRMaj(this.ncomp - 1, this.ncomp - 1); - DMatrixRMaj b = new DMatrixRMaj(this.ncomp - 1, 1); - DMatrixRMaj x = new DMatrixRMaj(this.ncomp - 1, 1); - DMatrixRMaj x0 = new DMatrixRMaj(this.ncomp - 1, 1); - DMatrixRMaj c = new DMatrixRMaj(this.ncomp - 1, 1); - - GTSurfaceTensionUtils.mufun(this.sys, this.ncomp, this.t, rho, mu, dmu_drho, p); - fjacfun(mu, dmu_drho, f, jac); - for (i = 0; i < this.ncomp - 1; i++) { - int idx1; - - idx1 = this.algidx[i]; - b.set(i, 0, -f[idx1]); - x0.set(i, 0, rho[idx1]); - for (j = 0; j < this.ncomp - 1; j++) { - int idx2; - - idx2 = this.algidx[j]; - A.set(i, j, jac[idx1][idx2]); - } - } - normf = NormOps_DDRM.normP2(b); - if (normf < this.abstol) { - return; - } - - CommonOps_DDRM.solve(A, b, x); - for (i = 1; i < this.ncomp - 1; i++) { - double xi; - xi = x.get(i, 0); - if (Double.isNaN(xi)) { - throw new RuntimeException("Update is NaN"); - } - } - s = 0.8; - norm = 1e16; - for (iter = 0; iter < this.maxit; iter++) { - CommonOps_DDRM.elementDiv(x, x0, c); - norm0 = norm; - norm = NormOps_DDRM.normP2(c); - if (norm < norm0) { - s = Math.min(0.8, 1.2 * s); - } - if (norm < this.normtol || normf < this.abstol || normf < this.reltol) { - // System.out.printf("norm(delta_rho/rho_k): %e, norm(f): %e\n", norm, normf); - break; - } - double delta; - - for (i = 0; i < this.ncomp - 1; i++) { - delta = x.get(i, 0); - if ((rho[this.algidx[i]] + s * delta) < 0) { - s = Math.min(s, -0.5 * rho[this.algidx[i]] / delta); - // System.out.printf("s: %e\n", s); - } - } - for (i = 0; i < this.ncomp - 1; i++) { - delta = x.get(i, 0); - rho[this.algidx[i]] += s * delta; - x0.set(i, 0, rho[this.algidx[i]]); - } - GTSurfaceTensionUtils.mufun(this.sys, this.ncomp, this.t, rho, mu, dmu_drho, p); - - fjacfun(mu, dmu_drho, f, jac); - - for (i = 0; i < this.ncomp - 1; i++) { - int idx1; - - idx1 = this.algidx[i]; - b.set(i, 0, -f[idx1]); - for (j = 0; j < this.ncomp - 1; j++) { - int idx2; - - idx2 = this.algidx[j]; - A.set(i, j, jac[idx1][idx2]); - } - } - CommonOps_DDRM.solve(A, b, x); - normf = NormOps_DDRM.normP2(b); + CommonOps_DDRM.solve(A, b, x); + for (i = 1; i < this.ncomp - 1; i++) { + double xi; + xi = x.get(i, 0); + if (Double.isNaN(xi)) { + throw new RuntimeException("Update is NaN"); + } + } + s = 0.8; + norm = 1e16; + for (iter = 0; iter < this.maxit; iter++) { + CommonOps_DDRM.elementDiv(x, x0, c); + norm0 = norm; + norm = NormOps_DDRM.normP2(c); + if (norm < norm0) { + s = Math.min(0.8, 1.2 * s); + } + if (norm < this.normtol || normf < this.abstol || normf < this.reltol) { + // System.out.printf("norm(delta_rho/rho_k): %e, norm(f): %e\n", norm, normf); + break; + } + double delta; + + for (i = 0; i < this.ncomp - 1; i++) { + delta = x.get(i, 0); + if ((rho[this.algidx[i]] + s * delta) < 0) { + s = Math.min(s, -0.5 * rho[this.algidx[i]] / delta); + // System.out.printf("s: %e\n", s); } - if (iter >= this.maxit) { - // System.out.printf("norm(f): %e\n", normf); - for (i = 0; i < this.ncomp - 1; i++) { - logger.info("f[" + i + "]: " + f[this.algidx[i]]); - } - throw new RuntimeException("Failed to solve for density"); + } + for (i = 0; i < this.ncomp - 1; i++) { + delta = x.get(i, 0); + rho[this.algidx[i]] += s * delta; + x0.set(i, 0, rho[this.algidx[i]]); + } + GTSurfaceTensionUtils.mufun(this.sys, this.ncomp, this.t, rho, mu, dmu_drho, p); + + fjacfun(mu, dmu_drho, f, jac); + + for (i = 0; i < this.ncomp - 1; i++) { + int idx1; + + idx1 = this.algidx[i]; + b.set(i, 0, -f[idx1]); + for (j = 0; j < this.ncomp - 1; j++) { + int idx2; + + idx2 = this.algidx[j]; + A.set(i, j, jac[idx1][idx2]); } + } + CommonOps_DDRM.solve(A, b, x); + normf = NormOps_DDRM.normP2(b); } - - /** - * Residual function for the algebraic equilibrium equations. - * - * @param mu an array of {@link double} objects - * @param dmu_drho an array of {@link double} objects - * @param f an array of {@link double} objects - * @param jac an array of {@link double} objects - */ - public void fjacfun(double[] mu, double[][] dmu_drho, double[] f, double[][] jac) { - int i, j; - double delta_muref; - double sqrtcref, sqrtci, scale; - - delta_muref = (this.mueq[this.refcomp] - mu[this.refcomp]); - sqrtcref = Math.sqrt(this.ci[this.refcomp]); - scale = 1.0 / sqrtcref; - for (i = 0; i < this.ncomp; i++) { - sqrtci = Math.sqrt(this.ci[i]); - f[i] = scale * (sqrtci * delta_muref - sqrtcref * (this.mueq[i] - mu[i])); - for (j = 0; j < this.ncomp; j++) { - jac[i][j] = scale - * (sqrtci * (-dmu_drho[this.refcomp][j]) - sqrtcref * (-dmu_drho[i][j])); - } - } + if (iter >= this.maxit) { + // System.out.printf("norm(f): %e\n", normf); + for (i = 0; i < this.ncomp - 1; i++) { + logger.info("f[" + i + "]: " + f[this.algidx[i]]); + } + throw new RuntimeException("Failed to solve for density"); + } + } + + /** + * Residual function for the algebraic equilibrium equations. + * + * @param mu an array of type double + * @param dmu_drho an array of type double + * @param f an array of type double + * @param jac an array of type double + */ + public void fjacfun(double[] mu, double[][] dmu_drho, double[] f, double[][] jac) { + int i; + int j; + double delta_muref; + double sqrtcref; + + double sqrtci; + double scale; + delta_muref = (this.mueq[this.refcomp] - mu[this.refcomp]); + sqrtcref = Math.sqrt(this.ci[this.refcomp]); + scale = 1.0 / sqrtcref; + for (i = 0; i < this.ncomp; i++) { + sqrtci = Math.sqrt(this.ci[i]); + f[i] = scale * (sqrtci * delta_muref - sqrtcref * (this.mueq[i] - mu[i])); + for (j = 0; j < this.ncomp; j++) { + jac[i][j] = scale * (sqrtci * (-dmu_drho[this.refcomp][j]) - sqrtcref * (-dmu_drho[i][j])); + } } + } } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionSimple.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionSimple.java index 550fd004be..dcf8adf553 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionSimple.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionSimple.java @@ -17,426 +17,424 @@ * @version $Id: $Id */ public class GTSurfaceTensionSimple extends SurfaceTension { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(GTSurfaceTensionSimple.class); - - int ite_step = 200; - SystemInterface localSystem = null; - double[][] den_interface = null; - double[] z_step = null; - double[] pressure_interface = null; - boolean calcInfluenceParameter = true; - double[] influenceParam; - private double[][][] dmudn2 = null; - - /** - *

- * Constructor for GTSurfaceTensionSimple. - *

- */ - public GTSurfaceTensionSimple() {} - - /** - *

- * Constructor for GTSurfaceTensionSimple. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public GTSurfaceTensionSimple(SystemInterface system) { - super(system); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(GTSurfaceTensionSimple.class); + + int ite_step = 200; + SystemInterface localSystem = null; + double[][] den_interface = null; + double[] z_step = null; + double[] pressure_interface = null; + boolean calcInfluenceParameter = true; + double[] influenceParam; + private double[][][] dmudn2 = null; + + /** + *

+ * Constructor for GTSurfaceTensionSimple. + *

+ */ + public GTSurfaceTensionSimple() {} + + /** + *

+ * Constructor for GTSurfaceTensionSimple. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public GTSurfaceTensionSimple(SystemInterface system) { + super(system); + } + + /** + *

+ * calcInfluenceParameters. + *

+ */ + public void calcInfluenceParameters() { + influenceParam = new double[localSystem.getPhase(0).getNumberOfComponents()]; + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + influenceParam[i] = localSystem.getPhase(0).getComponent(i) + .getSurfaceTenisionInfluenceParameter(localSystem.getPhase(0).getTemperature()); + } + } + + /** + * {@inheritDoc} + * + *

+ * Using the Gradient Theory for mixtures Units: N/m + *

+ */ + @Override + public double calcSurfaceTension(int interface1, int interface2) { + localSystem = system.clone(); + + double surdenstemp = 0.0; + int referenceComponentNumber = getComponentWithHighestBoilingpoint(); + // localSystem.getPhase(0).getNumberOfComponents() // - 1; + double[] del_den_interface = new double[localSystem.getPhase(0).getNumberOfComponents()]; + double[] del_den_interface_old = new double[localSystem.getPhase(0).getNumberOfComponents()]; + double[] mu_equi = new double[localSystem.getPhase(0).getNumberOfComponents()]; + double[][][] dmudn = new double[ite_step][localSystem.getPhase(0) + .getNumberOfComponents()][localSystem.getPhase(0).getNumberOfComponents()]; + dmudn2 = new double[ite_step][localSystem.getPhase(0).getNumberOfComponents()][localSystem + .getPhase(0).getNumberOfComponents()]; + double[][] mu_inter = new double[ite_step][localSystem.getPhase(0).getNumberOfComponents()]; + double[] mu_times_den = new double[ite_step]; + double[][] fmatrix = new double[localSystem.getPhase(0).getNumberOfComponents() + - 1][localSystem.getPhase(0).getNumberOfComponents() - 1]; + double[] bmatrix = new double[localSystem.getPhase(0).getNumberOfComponents() - 1]; + Matrix ans = null; + z_step = new double[ite_step]; + den_interface = new double[ite_step][localSystem.getPhase(0).getNumberOfComponents()]; + pressure_interface = new double[ite_step]; + pressure_interface[0] = 1e5 * system.getPressure(); + + if (calcInfluenceParameter) { + calcInfluenceParameters(); } - /** - *

- * calcInfluenceParameters. - *

- */ - public void calcInfluenceParameters() { - influenceParam = new double[localSystem.getPhase(0).getNumberOfComponents()]; - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - influenceParam[i] = localSystem.getPhase(0).getComponent(i) - .getSurfaceTenisionInfluenceParameter(localSystem.getPhase(0).getTemperature()); - } + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + mu_equi[i] = system.getPhase(interface1).getComponent(i) + .getChemicalPotential(system.getPhase(interface1)); + den_interface[0][i] = 1e5 * system.getPhase(interface1).getComponent(i).getx() + / system.getPhase(interface1).getMolarVolume(); + localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), + -system.getPhase(0).getComponent(i).getNumberOfmoles()); + localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), + system.getPhase(interface1).getComponent(i).getx() + / system.getPhase(interface1).getMolarVolume()); } - /** - * {@inheritDoc} + del_den_interface[referenceComponentNumber] = + (1e5 * system.getPhase(interface2).getComponent(referenceComponentNumber).getx() + / system.getPhase(interface2).getMolarVolume() + - 1e5 * system.getPhase(interface1).getComponent(referenceComponentNumber).getx() + / system.getPhase(interface1).getMolarVolume()) + / (ite_step * 1.0); + /* + * System.out.println("del den ref " + system.getPhase(interface1).getComponent(0).getx() / + * system.getPhase(interface1).getMolarVolume()); System.out.println("del den ref2 " + + * system.getPhase(interface2).getComponent(0).getx() / + * system.getPhase(interface2).getMolarVolume()); * - * Calculates the surfacetension using the Gradient Theory for mixtures Units: N/m + * System.out.println("del den ref " + system.getPhase(interface1).getComponent(1).getx() / + * system.getPhase(interface1).getMolarVolume()); System.out.println("del den ref2 " + + * system.getPhase(interface2).getComponent(1).getx() / + * system.getPhase(interface2).getMolarVolume()); */ - @Override - public double calcSurfaceTension(int interface1, int interface2) { - localSystem = system.clone(); - - double surdenstemp = 0.0; - int referenceComponentNumber = getComponentWithHighestBoilingpoint();// 2;//localSystem.getPhase(0).getNumberOfComponents() - // - 1; - double[] del_den_interface = new double[localSystem.getPhase(0).getNumberOfComponents()]; - double[] del_den_interface_old = - new double[localSystem.getPhase(0).getNumberOfComponents()]; - double[] mu_equi = new double[localSystem.getPhase(0).getNumberOfComponents()]; - double[][][] dmudn = new double[ite_step][localSystem.getPhase(0) - .getNumberOfComponents()][localSystem.getPhase(0).getNumberOfComponents()]; - dmudn2 = new double[ite_step][localSystem.getPhase(0).getNumberOfComponents()][localSystem - .getPhase(0).getNumberOfComponents()]; - double[][] mu_inter = new double[ite_step][localSystem.getPhase(0).getNumberOfComponents()]; - double[] mu_times_den = new double[ite_step]; - double[][] fmatrix = new double[localSystem.getPhase(0).getNumberOfComponents() - - 1][localSystem.getPhase(0).getNumberOfComponents() - 1]; - double[] bmatrix = new double[localSystem.getPhase(0).getNumberOfComponents() - 1]; - Matrix ans = null; - z_step = new double[ite_step]; - den_interface = new double[ite_step][localSystem.getPhase(0).getNumberOfComponents()]; - pressure_interface = new double[ite_step]; - pressure_interface[0] = 1e5 * system.getPressure(); - - if (calcInfluenceParameter) { - calcInfluenceParameters(); + + localSystem.init(0); + localSystem.setUseTVasIndependentVariables(true); + localSystem.setNumberOfPhases(1); + localSystem.getPhase(0).setTotalVolume(1.0); + localSystem.useVolumeCorrection(false); + localSystem.init_x_y(); + localSystem.init(3); + for (int j = 1; j < ite_step; j++) { + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + mu_inter[j][i] = + localSystem.getPhase(0).getComponent(i).getChemicalPotential(localSystem.getPhase(0)); + /* + * if (java.lang.Double.isNaN(mu_inter[j][i])) { double chemicalPotential = + * localSystem.getPhase(0).getComponent(i) .getChemicalPotential(localSystem.getPhase(0)); } + */ + + for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { + dmudn[j][i][k] = localSystem.getPhase(0).getComponent(i).getChemicalPotentialdNTV(k, + localSystem.getPhase(0)); } + } + int ii = 0; + int kk = 0; + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + if (i == referenceComponentNumber) { + continue; + } + bmatrix[ii] = Math.sqrt(influenceParam[referenceComponentNumber]) + * dmudn[j][i][referenceComponentNumber] + - Math.sqrt(influenceParam[i]) + * dmudn[j][referenceComponentNumber][referenceComponentNumber]; + kk = 0; + for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { + if (k == referenceComponentNumber) { + continue; + } + fmatrix[ii][kk] = Math.sqrt(influenceParam[i]) * dmudn[j][referenceComponentNumber][k] + - Math.sqrt(influenceParam[referenceComponentNumber]) * dmudn[j][i][k]; + kk++; + } + ii++; + } + + if (localSystem.getPhase(0).getNumberOfComponents() > 1) { + Matrix fmatrixJama = new Matrix(fmatrix); + Matrix bmatrixJama = + new Matrix(bmatrix, localSystem.getPhase(0).getNumberOfComponents() - 1); + try { + ans = fmatrixJama.solveTranspose(bmatrixJama.transpose()); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + int pp = 0; + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + if (i != referenceComponentNumber) { + del_den_interface[i] = ans.get(pp, 0) * del_den_interface[referenceComponentNumber]; + if (Math.abs(ans.get(pp, 0)) * del_den_interface[referenceComponentNumber] + / den_interface[j - 1][i] > 0.1) { + del_den_interface[i] = Math.signum(ans.get(pp, 0)) * den_interface[j - 1][i]; + } + pp++; + } + del_den_interface_old[i] = 0; + } + double interact = 1.0; + double err = 1.0; + int iterations = 0; + while (err > 1e-15 && iterations < 1200) { + iterations++; + double totalDens = 0.0; for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - mu_equi[i] = system.getPhase(interface1).getComponent(i) - .getChemicalPotential(system.getPhase(interface1)); - den_interface[0][i] = 1e5 * system.getPhase(interface1).getComponent(i).getx() - / system.getPhase(interface1).getMolarVolume(); - localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), - -system.getPhase(0).getComponent(i).getNumberOfmoles()); - localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), - system.getPhase(interface1).getComponent(i).getx() - / system.getPhase(interface1).getMolarVolume()); + den_interface[j][i] = den_interface[j - 1][i] + del_den_interface[i]; + totalDens += den_interface[j][i]; + localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), + (del_den_interface[i] - del_den_interface_old[i]) / 1.0e5); + del_den_interface_old[i] = del_den_interface[i]; } - del_den_interface[referenceComponentNumber] = (1e5 - * system.getPhase(interface2).getComponent(referenceComponentNumber).getx() - / system.getPhase(interface2).getMolarVolume() - - 1e5 * system.getPhase(interface1).getComponent(referenceComponentNumber).getx() - / system.getPhase(interface1).getMolarVolume()) - / (ite_step * 1.0); - /* - * System.out.println("del den ref " + system.getPhase(interface1).getComponent(0).getx() / - * system.getPhase(interface1).getMolarVolume()); System.out.println("del den ref2 " + - * system.getPhase(interface2).getComponent(0).getx() / - * system.getPhase(interface2).getMolarVolume()); - * - * System.out.println("del den ref " + system.getPhase(interface1).getComponent(1).getx() / - * system.getPhase(interface1).getMolarVolume()); System.out.println("del den ref2 " + - * system.getPhase(interface2).getComponent(1).getx() / - * system.getPhase(interface2).getMolarVolume()); - */ - - localSystem.init(0); - localSystem.setUseTVasIndependentVariables(true); - localSystem.setNumberOfPhases(1); - localSystem.getPhase(0).setTotalVolume(1.0); - localSystem.useVolumeCorrection(false); localSystem.init_x_y(); localSystem.init(3); - for (int j = 1; j < ite_step; j++) { - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - mu_inter[j][i] = localSystem.getPhase(0).getComponent(i) - .getChemicalPotential(localSystem.getPhase(0)); - /* - * if (java.lang.Double.isNaN(mu_inter[j][i])) { double chemicalPotential = - * localSystem.getPhase(0).getComponent(i) - * .getChemicalPotential(localSystem.getPhase(0)); } - */ - - for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { - dmudn[j][i][k] = localSystem.getPhase(0).getComponent(i) - .getChemicalPotentialdNTV(k, localSystem.getPhase(0)); - } - } - - int ii = 0, kk = 0; - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - if (i == referenceComponentNumber) { - continue; - } - bmatrix[ii] = Math.sqrt(influenceParam[referenceComponentNumber]) - * dmudn[j][i][referenceComponentNumber] - - Math.sqrt(influenceParam[i]) - * dmudn[j][referenceComponentNumber][referenceComponentNumber]; - kk = 0; - for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { - if (k == referenceComponentNumber) { - continue; - } - fmatrix[ii][kk] = Math.sqrt(influenceParam[i]) - * dmudn[j][referenceComponentNumber][k] - - Math.sqrt(influenceParam[referenceComponentNumber]) * dmudn[j][i][k]; - kk++; - } - ii++; - } - if (localSystem.getPhase(0).getNumberOfComponents() > 1) { - Matrix fmatrixJama = new Matrix(fmatrix); - Matrix bmatrixJama = - new Matrix(bmatrix, localSystem.getPhase(0).getNumberOfComponents() - 1); - try { - ans = fmatrixJama.solveTranspose(bmatrixJama.transpose()); - } catch (Exception e) { - logger.error("error", e); - } - } + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + mu_inter[j][i] = + localSystem.getPhase(0).getComponent(i).getChemicalPotential(localSystem.getPhase(0)); + for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { + dmudn[j][i][k] = localSystem.getPhase(0).getComponent(i).getChemicalPotentialdNTV(k, + localSystem.getPhase(0)); + dmudn2[j][i][k] = dmudn[j][i][k]; + } + } - int pp = 0; - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - if (i != referenceComponentNumber) { - del_den_interface[i] = - ans.get(pp, 0) * del_den_interface[referenceComponentNumber]; - if (Math.abs(ans.get(pp, 0)) * del_den_interface[referenceComponentNumber] - / den_interface[j - 1][i] > 0.1) { - del_den_interface[i] = - Math.signum(ans.get(pp, 0)) * den_interface[j - 1][i]; - } - pp++; - } - del_den_interface_old[i] = 0; - } - double interact = 1.0; - double err = 1.0; - int iterations = 0; - while (err > 1e-15 && iterations < 1200) { - iterations++; - double totalDens = 0.0; - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - den_interface[j][i] = den_interface[j - 1][i] + del_den_interface[i]; - totalDens += den_interface[j][i]; - localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), - (del_den_interface[i] - del_den_interface_old[i]) / 1.0e5); - del_den_interface_old[i] = del_den_interface[i]; - } - - localSystem.init_x_y(); - localSystem.init(3); - - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - mu_inter[j][i] = localSystem.getPhase(0).getComponent(i) - .getChemicalPotential(localSystem.getPhase(0)); - for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { - dmudn[j][i][k] = localSystem.getPhase(0).getComponent(i) - .getChemicalPotentialdNTV(k, localSystem.getPhase(0)); - dmudn2[j][i][k] = dmudn[j][i][k]; - } - } - - ii = 0; - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - if (i == referenceComponentNumber) { - continue; - } - bmatrix[ii] = -Math.sqrt(influenceParam[i]) - * (mu_equi[referenceComponentNumber] - - mu_inter[j][referenceComponentNumber]) - + Math.sqrt(influenceParam[referenceComponentNumber]) - * (mu_equi[i] - mu_inter[j][i]); - kk = 0; - for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { - if (k == referenceComponentNumber) { - continue; - } - fmatrix[ii][kk] = -Math.sqrt(influenceParam[i]) - * dmudn[j][referenceComponentNumber][k] - + Math.sqrt(influenceParam[referenceComponentNumber]) - * dmudn[j][i][k]; - kk++; - } - ii++; - } - RealMatrix ans2 = null; - RealMatrix bRealMatrix = new Array2DRowRealMatrix(bmatrix); - if (localSystem.getPhase(0).getNumberOfComponents() > 1) { - // BigMatrixImpl fmatrixJama = new BigMatrixImpl(fmatrix); - RealMatrix fmatrixJama = new Array2DRowRealMatrix(fmatrix); - // Matrix fmatrixJama = new Matrix(fmatrix); - // BigMatrixImpl bmatrixJama = new BigMatrixImpl(bmatrix); - // Matrix bmatrixJama = new Matrix(bmatrix, - // localSystem.getPhase(0).getNumberOfComponents() - 1); - try { - // ans = fmatrixJama.solveTranspose(bmatrixJama.transpose()); - // ans2 = new BigMatrixImpl(fmatrixJama.solve(bmatrix)); - DecompositionSolver solver1 = - new org.apache.commons.math3.linear.LUDecomposition(fmatrixJama) - .getSolver(); - ans2 = solver1.solve(bRealMatrix); - } catch (Exception e) { - logger.error("error", e); - } - } - - pp = 0; - err = 0.0; - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - if (i != referenceComponentNumber) { - err += Math.abs(ans2.getEntry(pp, 0) * 1e5) / totalDens; - del_den_interface[i] += 1e5 * ans2.getEntry(pp, 0);// * (iterations) / (10.0 - // + iterations); - pp++; - } - } - } - // System.out.println("err " + err); - - pressure_interface[j] = 1e5 * localSystem.getPhase(0).getPressure(); - mu_times_den[j] = 0.0; - double kappa = 0.0, kappai = 0.0, kappak = 0.0; - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - double infli = influenceParam[i]; // localSystem.getPhase(0).getComponent(i).getSurfaceTenisionInfluenceParameter(localSystem.getPhase(0).getTemperature()); - kappai = del_den_interface[i] / del_den_interface[referenceComponentNumber]; - mu_times_den[j] += den_interface[j][i] * (mu_inter[j][i] - mu_equi[i]); - for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { - if ((localSystem.getPhase(0).getComponent(i).getName().equals("water") - || localSystem.getPhase(0).getComponent(k).getName().equals("water")) - && i != k) { - interact = 0.0; - } else { - interact = 0.0; - } - double inflk = influenceParam[k]; // localSystem.getPhase(0).getComponent(k).getSurfaceTenisionInfluenceParameter(localSystem.getPhase(0).getTemperature()); - kappak = del_den_interface[k] / del_den_interface[referenceComponentNumber]; - kappa += Math.sqrt(infli * inflk) * kappai * kappak * (1.0 - interact); - } - } - mu_times_den[j] += -(pressure_interface[j] - pressure_interface[0]); - z_step[j] = z_step[j - 1] + Math.sqrt(kappa / (2.0 * mu_times_den[j])) - * del_den_interface[referenceComponentNumber]; - if (Double.isNaN(z_step[j])) { - break; + ii = 0; + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + if (i == referenceComponentNumber) { + continue; + } + bmatrix[ii] = -Math.sqrt(influenceParam[i]) + * (mu_equi[referenceComponentNumber] - mu_inter[j][referenceComponentNumber]) + + Math.sqrt(influenceParam[referenceComponentNumber]) * (mu_equi[i] - mu_inter[j][i]); + kk = 0; + for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { + if (k == referenceComponentNumber) { + continue; } - surdenstemp += Math.sqrt(2.0 * kappa * mu_times_den[j]) - * del_den_interface[referenceComponentNumber];// * - // thermo.ThermodynamicConstantsInterface.avagadroNumber; + fmatrix[ii][kk] = -Math.sqrt(influenceParam[i]) * dmudn[j][referenceComponentNumber][k] + + Math.sqrt(influenceParam[referenceComponentNumber]) * dmudn[j][i][k]; + kk++; + } + ii++; } - - // System.out.println("del den ref " + - // localSystem.getPhase(interface1).getComponent(0).getx() / - // localSystem.getPhase(interface1).getMolarVolume() ); - - for (int j = 0; j < ite_step; j++) { - // System.out.println("z " + z_step[j] + " density " + j + " " + - // den_interface[j][0] + " mu_times_den[j] " + mu_times_den[j]+ " - // pressure_interface[j] " + pressure_interface[j] + " "+ - // pressure_interface[0]);// + " " + den_interface[j][1] + " " + - // den_interface[j][0] / den_interface[j][1]); + RealMatrix ans2 = null; + RealMatrix bRealMatrix = new Array2DRowRealMatrix(bmatrix); + if (localSystem.getPhase(0).getNumberOfComponents() > 1) { + // BigMatrixImpl fmatrixJama = new BigMatrixImpl(fmatrix); + RealMatrix fmatrixJama = new Array2DRowRealMatrix(fmatrix); + // Matrix fmatrixJama = new Matrix(fmatrix); + // BigMatrixImpl bmatrixJama = new BigMatrixImpl(bmatrix); + // Matrix bmatrixJama = new Matrix(bmatrix, + // localSystem.getPhase(0).getNumberOfComponents() - 1); + try { + // ans = fmatrixJama.solveTranspose(bmatrixJama.transpose()); + // ans2 = new BigMatrixImpl(fmatrixJama.solve(bmatrix)); + DecompositionSolver solver1 = + new org.apache.commons.math3.linear.LUDecomposition(fmatrixJama).getSolver(); + ans2 = solver1.solve(bRealMatrix); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } - // System.out.println("end "); - return Math.abs(surdenstemp); - } - - /** - *

- * getMolarDensity. - *

- * - * @param compnum a int - * @return an array of {@link double} objects - */ - public double[] getMolarDensity(int compnum) { - double[] temp = new double[ite_step]; - for (int i = 0; i < ite_step; i++) { - temp[i] = den_interface[i][compnum]; + pp = 0; + err = 0.0; + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + if (i != referenceComponentNumber) { + err += Math.abs(ans2.getEntry(pp, 0) * 1e5) / totalDens; + del_den_interface[i] += 1e5 * ans2.getEntry(pp, 0); + // * (iterations) / (10.0 + iterations); + pp++; + } } - return temp; - } - - /** - *

- * getMolarDensityTotal. - *

- * - * @return an array of {@link double} objects - */ - public double[] getMolarDensityTotal() { - double[] temp = new double[ite_step]; - for (int i = 0; i < ite_step; i++) { - for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - temp[i] += den_interface[i][j]; - } + } + // System.out.println("err " + err); + + pressure_interface[j] = 1e5 * localSystem.getPhase(0).getPressure(); + mu_times_den[j] = 0.0; + double kappa = 0.0; + double kappai = 0.0; + double kappak = 0.0; + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + double infli = influenceParam[i]; + // localSystem.getPhase(0).getComponent(i).getSurfaceTenisionInfluenceParameter(localSystem.getPhase(0).getTemperature()); + kappai = del_den_interface[i] / del_den_interface[referenceComponentNumber]; + mu_times_den[j] += den_interface[j][i] * (mu_inter[j][i] - mu_equi[i]); + for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { + if ((localSystem.getPhase(0).getComponent(i).getName().equals("water") + || localSystem.getPhase(0).getComponent(k).getName().equals("water")) && i != k) { + interact = 0.0; + } else { + interact = 0.0; + } + double inflk = influenceParam[k]; + // localSystem.getPhase(0).getComponent(k).getSurfaceTenisionInfluenceParameter(localSystem.getPhase(0).getTemperature()); + kappak = del_den_interface[k] / del_den_interface[referenceComponentNumber]; + kappa += Math.sqrt(infli * inflk) * kappai * kappak * (1.0 - interact); } - return temp; - } - - /** - *

- * getz. - *

- * - * @return an array of {@link double} objects - */ - public double[] getz() { - return z_step; + } + mu_times_den[j] += -(pressure_interface[j] - pressure_interface[0]); + z_step[j] = z_step[j - 1] + Math.sqrt(kappa / (2.0 * mu_times_den[j])) + * del_den_interface[referenceComponentNumber]; + if (Double.isNaN(z_step[j])) { + break; + } + surdenstemp += + Math.sqrt(2.0 * kappa * mu_times_den[j]) * del_den_interface[referenceComponentNumber]; + // * thermo.ThermodynamicConstantsInterface.avagadroNumber; } - /** - *

- * getPressure. - *

- * - * @return an array of {@link double} objects - */ - public double[] getPressure() { - return pressure_interface; - } + // System.out.println("del den ref " + + // localSystem.getPhase(interface1).getComponent(0).getx() / + // localSystem.getPhase(interface1).getMolarVolume() ); - /** - *

- * getInfluenceParameter. - *

- * - * @param interfaceTension a double - * @param componentNumber a int - * @return a double - */ - public double getInfluenceParameter(double interfaceTension, int componentNumber) { - // double startGuess = calcSurfaceTension(0, 1); - double oldInfluenceParameter = influenceParam[componentNumber]; - double calcVal = 0.0, oldCalcVal = 0.0, dSurfTensdinfluence = 0.0; - int iter = 0; - calcInfluenceParameter = true; - calcVal = calcSurfaceTension(0, 1) - interfaceTension; - do { - iter++; - oldCalcVal = calcVal; - // System.out.println("surface tenison " + calcSurfaceTension(0, 1) + " error " - // + calcVal + " influenceParam " + influenceParam[componentNumber]); - calcInfluenceParameter = false; - if (iter > 1) { - influenceParam[componentNumber] -= (calcVal) / dSurfTensdinfluence; - } else { - influenceParam[componentNumber] *= 1.01; - } - calcVal = calcSurfaceTension(0, 1) - interfaceTension; - - dSurfTensdinfluence = (calcVal - oldCalcVal) - / (influenceParam[componentNumber] - oldInfluenceParameter); - oldInfluenceParameter = influenceParam[componentNumber]; - } while (Math.abs(calcVal / interfaceTension) > 1e-8 && iter < 100); - calcInfluenceParameter = true; - return influenceParam[componentNumber]; + for (int j = 0; j < ite_step; j++) { + // System.out.println("z " + z_step[j] + " density " + j + " " + + // den_interface[j][0] + " mu_times_den[j] " + mu_times_den[j]+ " + // pressure_interface[j] " + pressure_interface[j] + " "+ + // pressure_interface[0]); // + " " + den_interface[j][1] + " " + + // den_interface[j][0] / den_interface[j][1]); } - /** - *

- * Getter for the field dmudn2. - *

- * - * @return the dmudn2 - */ - public double[][][] getDmudn2() { - return dmudn2; + // System.out.println("end "); + return Math.abs(surdenstemp); + } + + /** + *

+ * getMolarDensity. + *

+ * + * @param compnum a int + * @return an array of type double + */ + public double[] getMolarDensity(int compnum) { + double[] temp = new double[ite_step]; + for (int i = 0; i < ite_step; i++) { + temp[i] = den_interface[i][compnum]; } - - /** - *

- * Setter for the field dmudn2. - *

- * - * @param dmudn2 the dmudn2 to set - */ - public void setDmudn2(double[][][] dmudn2) { - this.dmudn2 = dmudn2; + return temp; + } + + /** + *

+ * getMolarDensityTotal. + *

+ * + * @return an array of type double + */ + public double[] getMolarDensityTotal() { + double[] temp = new double[ite_step]; + for (int i = 0; i < ite_step; i++) { + for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { + temp[i] += den_interface[i][j]; + } } + return temp; + } + + /** + *

+ * getz. + *

+ * + * @return an array of type double + */ + public double[] getz() { + return z_step; + } + + /** + *

+ * getPressure. + *

+ * + * @return an array of type double + */ + public double[] getPressure() { + return pressure_interface; + } + + /** + *

+ * getInfluenceParameter. + *

+ * + * @param interfaceTension a double + * @param componentNumber a int + * @return a double + */ + public double getInfluenceParameter(double interfaceTension, int componentNumber) { + // double startGuess = calcSurfaceTension(0, 1); + double oldInfluenceParameter = influenceParam[componentNumber]; + double calcVal = 0.0; + double oldCalcVal = 0.0; + double dSurfTensdinfluence = 0.0; + int iter = 0; + calcInfluenceParameter = true; + calcVal = calcSurfaceTension(0, 1) - interfaceTension; + do { + iter++; + oldCalcVal = calcVal; + // System.out.println("surface tenison " + calcSurfaceTension(0, 1) + " error " + // + calcVal + " influenceParam " + influenceParam[componentNumber]); + calcInfluenceParameter = false; + if (iter > 1) { + influenceParam[componentNumber] -= (calcVal) / dSurfTensdinfluence; + } else { + influenceParam[componentNumber] *= 1.01; + } + calcVal = calcSurfaceTension(0, 1) - interfaceTension; + + dSurfTensdinfluence = + (calcVal - oldCalcVal) / (influenceParam[componentNumber] - oldInfluenceParameter); + oldInfluenceParameter = influenceParam[componentNumber]; + } while (Math.abs(calcVal / interfaceTension) > 1e-8 && iter < 100); + calcInfluenceParameter = true; + return influenceParam[componentNumber]; + } + + /** + *

+ * Getter for the field dmudn2. + *

+ * + * @return the dmudn2 + */ + public double[][][] getDmudn2() { + return dmudn2; + } + + /** + *

+ * Setter for the field dmudn2. + *

+ * + * @param dmudn2 the dmudn2 to set + */ + public void setDmudn2(double[][][] dmudn2) { + this.dmudn2 = dmudn2; + } } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionUtils.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionUtils.java index b372be08bc..9bde4be2f5 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionUtils.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/GTSurfaceTensionUtils.java @@ -14,75 +14,75 @@ * @version $Id: $Id */ public class GTSurfaceTensionUtils { - private static final double Pa = 1e-5; - private static final double m3 = 1e-5; + private static final double Pa = 1e-5; + private static final double m3 = 1e-5; - /** - * Calculate chemical potential, chemical potential derivative, and pressure. - * - * Note that the volume/pressure units used in NeqSim renders the number density incorrect by a - * factor of 1e5. When selecting the volume to unity to avoid caring about volume derivatives - * when using number density as the free variable, the mole number input to NeqSIM must be - * scaled by a factor 1e-5. The chemical potential is unaffected by this as it is a intensive - * property. The chemical potential derivative will scale inversely proportional with the mole - * numbers according to the Euler homogeneity of the Gibbs energy function. - * - * @param sys a {@link neqsim.thermo.system.SystemInterface} object - * @param ncomp a int - * @param t a double - * @param rho an array of {@link double} objects - * @param mu an array of {@link double} objects - * @param dmu_drho an array of {@link double} objects - * @param p an array of {@link double} objects - */ - public static void mufun(SystemInterface sys, int ncomp, double t, double[] rho, double[] mu, - double[][] dmu_drho, double[] p) { - double v = 1.0; - double n; - int i, j; - PhaseInterface phase; + /** + * Calculate chemical potential, chemical potential derivative, and pressure. + * + * Note that the volume/pressure units used in NeqSim renders the number density incorrect by a + * factor of 1e5. When selecting the volume to unity to avoid caring about volume derivatives when + * using number density as the free variable, the mole number input to NeqSIM must be scaled by a + * factor 1e-5. The chemical potential is unaffected by this as it is a intensive property. The + * chemical potential derivative will scale inversely proportional with the mole numbers according + * to the Euler homogeneity of the Gibbs energy function. + * + * @param sys a {@link neqsim.thermo.system.SystemInterface} object + * @param ncomp a int + * @param t a double + * @param rho an array of type double + * @param mu an array of type double + * @param dmu_drho an array of type double + * @param p an array of type double + */ + public static void mufun(SystemInterface sys, int ncomp, double t, double[] rho, double[] mu, + double[][] dmu_drho, double[] p) { + double v = 1.0; + double n; + int i; + int j; + PhaseInterface phase; - double[] nv = new double[ncomp]; - phase = sys.getPhase(0); - sys.setTemperature(t); - phase.setTotalVolume(v); + double[] nv = new double[ncomp]; + phase = sys.getPhase(0); + sys.setTemperature(t); + phase.setTotalVolume(v); - for (i = 0; i < ncomp; i++) { - if (rho[i] < 0.) { - throw new RuntimeException("Number density is negative."); - } - // ComponentInterface component = phase.getComponent(i); - n = rho[i] * Pa; - nv[i] = n; - } + for (i = 0; i < ncomp; i++) { + if (rho[i] < 0.) { + throw new RuntimeException("Number density is negative."); + } + // ComponentInterface component = phase.getComponent(i); + n = rho[i] * Pa; + nv[i] = n; + } - // Set the composition multiple times to overcome round off error - // in NeqSIM due to n += (n_new - nold) - // sys.setMolarComposition(nv); - // sys.setMolarComposition(nv); - // sys.setMolarComposition(nv); + // Set the composition multiple times to overcome round off error + // in NeqSIM due to n += (n_new - nold) + // sys.setMolarComposition(nv); + // sys.setMolarComposition(nv); + // sys.setMolarComposition(nv); - sys.setMolarFlowRates(nv); - // sys.setMolarFlowRates(nv); - // sys.setMolarFlowRates(nv); + sys.setMolarFlowRates(nv); + // sys.setMolarFlowRates(nv); + // sys.setMolarFlowRates(nv); - sys.init_x_y(); - sys.setBeta(1.0); - sys.init(3); + sys.init_x_y(); + sys.setBeta(1.0); + sys.init(3); - for (i = 0; i < ncomp; i++) { - mu[i] = sys.getPhase(0).getComponent(i).getChemicalPotential(sys.getPhase(0)); - if (Double.isNaN(mu[i])) { - throw new RuntimeException("Thermo returned NaN for chemical potential."); - } - for (j = 0; j < ncomp; j++) { - dmu_drho[i][j] = - sys.getPhase(0).getComponent(i).getChemicalPotentialdNTV(j, sys.getPhase(0)) - * Pa; - } - } - p[0] = sys.getPhase(0).getPressure() / Pa; + for (i = 0; i < ncomp; i++) { + mu[i] = sys.getPhase(0).getComponent(i).getChemicalPotential(sys.getPhase(0)); + if (Double.isNaN(mu[i])) { + throw new RuntimeException("Thermo returned NaN for chemical potential."); + } + for (j = 0; j < ncomp; j++) { + dmu_drho[i][j] = + sys.getPhase(0).getComponent(i).getChemicalPotentialdNTV(j, sys.getPhase(0)) * Pa; + } } + p[0] = sys.getPhase(0).getPressure() / Pa; + } - private GTSurfaceTensionUtils() {} + private GTSurfaceTensionUtils() {} } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/LGTSurfaceTension.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/LGTSurfaceTension.java index e718750ff2..f9f29ebeac 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/LGTSurfaceTension.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/LGTSurfaceTension.java @@ -11,248 +11,246 @@ * @version $Id: $Id */ public class LGTSurfaceTension extends SurfaceTension { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - int ite_step = 200; - SystemInterface localSystem = null; - double[][] den_interface = null; - double[] z_step = null; - double[] pressure_interface = null; + int ite_step = 200; + SystemInterface localSystem = null; + double[][] den_interface = null; + double[] z_step = null; + double[] pressure_interface = null; - /** - *

- * Constructor for LGTSurfaceTension. - *

- */ - public LGTSurfaceTension() {} + /** + *

+ * Constructor for LGTSurfaceTension. + *

+ */ + public LGTSurfaceTension() {} - /** - *

- * Constructor for LGTSurfaceTension. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public LGTSurfaceTension(SystemInterface system) { - super(system); - } - - /** - * {@inheritDoc} - * - * Calculates the surfacetension using the Gradient Theory for mixtures Units: N/m - */ - @Override - public double calcSurfaceTension(int interface1, int interface2) { - double surdenstemp = 0.0; - localSystem = system.clone(); - - int referenceComponentNumber = getComponentWithHighestBoilingpoint(); - // double influenceParamReferenceComponent = - // localSystem.getPhase(0).getComponent(referenceComponentNumber).getSurfaceTenisionInfluenceParameter(localSystem.getPhase(0).getTemperature()); - double pressure_equi = 1e5 * system.getPressure(); + /** + *

+ * Constructor for LGTSurfaceTension. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public LGTSurfaceTension(SystemInterface system) { + super(system); + } - den_interface = new double[ite_step][localSystem.getPhase(0).getNumberOfComponents()]; - pressure_interface = new double[ite_step]; - pressure_interface[0] = pressure_equi; - double[] del_den_interface = new double[localSystem.getPhase(0).getNumberOfComponents()]; - double[] del_den_interface_old = - new double[localSystem.getPhase(0).getNumberOfComponents()]; + /** + * {@inheritDoc} + * + *

+ * Using the Gradient Theory for mixtures Units: N/m + *

+ */ + @Override + public double calcSurfaceTension(int interface1, int interface2) { + double surdenstemp = 0.0; + localSystem = system.clone(); - double[] mu_equi = new double[localSystem.getPhase(0).getNumberOfComponents()]; - double[][][] dmudn = new double[ite_step][localSystem.getPhase(0) - .getNumberOfComponents()][localSystem.getPhase(0).getNumberOfComponents()]; + int referenceComponentNumber = getComponentWithHighestBoilingpoint(); + // double influenceParamReferenceComponent = + // localSystem.getPhase(0).getComponent(referenceComponentNumber).getSurfaceTenisionInfluenceParameter(localSystem.getPhase(0).getTemperature()); + double pressure_equi = 1e5 * system.getPressure(); - double[][] mu_inter = new double[ite_step][localSystem.getPhase(0).getNumberOfComponents()]; - // double[][][] dmudn_equi = new - // double[ite_step][localSystem.getPhase(0).getNumberOfComponents()][localSystem.getPhase(0).getNumberOfComponents()]; + den_interface = new double[ite_step][localSystem.getPhase(0).getNumberOfComponents()]; + pressure_interface = new double[ite_step]; + pressure_interface[0] = pressure_equi; + double[] del_den_interface = new double[localSystem.getPhase(0).getNumberOfComponents()]; + double[] del_den_interface_old = new double[localSystem.getPhase(0).getNumberOfComponents()]; - double[] mu_times_den = new double[ite_step]; - z_step = new double[ite_step]; - - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - mu_equi[i] = system.getPhase(interface1).getComponent(i) - .getChemicalPotential(system.getPhase(interface1)); - den_interface[0][i] = 1e5 * system.getPhase(interface1).getComponent(i).getx() - / system.getPhase(interface1).getMolarVolume(); - den_interface[ite_step - 1][i] = - 1e5 * system.getPhase(interface2).getComponent(i).getx() - / system.getPhase(interface2).getMolarVolume(); - del_den_interface[i] = (1e5 * system.getPhase(interface2).getComponent(i).getx() - / system.getPhase(interface2).getMolarVolume() - - 1e5 * system.getPhase(interface1).getComponent(i).getx() - / system.getPhase(interface1).getMolarVolume()) - / (ite_step * 1.0); - del_den_interface_old[i] = 0.0; - localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), - -system.getPhase(0).getComponent(i).getNumberOfmoles()); - localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), - system.getPhase(interface1).getComponent(i).getx() - / system.getPhase(interface1).getMolarVolume()); - } + double[] mu_equi = new double[localSystem.getPhase(0).getNumberOfComponents()]; + double[][][] dmudn = new double[ite_step][localSystem.getPhase(0) + .getNumberOfComponents()][localSystem.getPhase(0).getNumberOfComponents()]; - localSystem.init(0); - localSystem.setUseTVasIndependentVariables(true); - localSystem.setNumberOfPhases(1); - localSystem.getPhase(0).setTotalVolume(1.0); - localSystem.useVolumeCorrection(false); - localSystem.initBeta(); - localSystem.init_x_y(); - localSystem.init(3); + double[][] mu_inter = new double[ite_step][localSystem.getPhase(0).getNumberOfComponents()]; + // double[][][] dmudn_equi = new + // double[ite_step][localSystem.getPhase(0).getNumberOfComponents()][localSystem.getPhase(0).getNumberOfComponents()]; - // localSystem.display(); - // System.out.println("inerface1 + " + interface1 + " pressure " + - // localSystem.getPressure()); + double[] mu_times_den = new double[ite_step]; + z_step = new double[ite_step]; - for (int j = 1; j < ite_step; j++) { - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - del_den_interface[i] = (1e5 * system.getPhase(interface2).getComponent(i).getx() - / system.getPhase(interface2).getMolarVolume() - - 1e5 * system.getPhase(interface1).getComponent(i).getx() - / system.getPhase(interface1).getMolarVolume()) - / (ite_step * 1.0); - del_den_interface_old[i] = 0.0; - } + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + mu_equi[i] = system.getPhase(interface1).getComponent(i) + .getChemicalPotential(system.getPhase(interface1)); + den_interface[0][i] = 1e5 * system.getPhase(interface1).getComponent(i).getx() + / system.getPhase(interface1).getMolarVolume(); + den_interface[ite_step - 1][i] = 1e5 * system.getPhase(interface2).getComponent(i).getx() + / system.getPhase(interface2).getMolarVolume(); + del_den_interface[i] = (1e5 * system.getPhase(interface2).getComponent(i).getx() + / system.getPhase(interface2).getMolarVolume() + - 1e5 * system.getPhase(interface1).getComponent(i).getx() + / system.getPhase(interface1).getMolarVolume()) + / (ite_step * 1.0); + del_den_interface_old[i] = 0.0; + localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), + -system.getPhase(0).getComponent(i).getNumberOfmoles()); + localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), + system.getPhase(interface1).getComponent(i).getx() + / system.getPhase(interface1).getMolarVolume()); + } - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - den_interface[j][i] = den_interface[j - 1][i] + del_den_interface[i]; - localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), - (del_den_interface[i] - del_den_interface_old[i]) / 1.0e5); - del_den_interface_old[i] = del_den_interface[i]; - } + localSystem.init(0); + localSystem.setUseTVasIndependentVariables(true); + localSystem.setNumberOfPhases(1); + localSystem.getPhase(0).setTotalVolume(1.0); + localSystem.useVolumeCorrection(false); + localSystem.initBeta(); + localSystem.init_x_y(); + localSystem.init(3); - localSystem.init_x_y(); - localSystem.init(3); - // localSystem.init(3);//need to be fixed - // System.out.println("pressure " + localSystem.getPressure()); - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - mu_inter[j][i] = localSystem.getPhase(0).getComponent(i) - .getChemicalPotential(localSystem.getPhase(0)); - for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { - dmudn[j][i][k] = localSystem.getPhase(0).getComponent(i) - .getChemicalPotentialdNTV(k, localSystem.getPhase(0)); - } - } + // localSystem.display(); + // System.out.println("inerface1 + " + interface1 + " pressure " + + // localSystem.getPressure()); - pressure_interface[j] = 1e5 * localSystem.getPhase(0).getPressure(); + for (int j = 1; j < ite_step; j++) { + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + del_den_interface[i] = (1e5 * system.getPhase(interface2).getComponent(i).getx() + / system.getPhase(interface2).getMolarVolume() + - 1e5 * system.getPhase(interface1).getComponent(i).getx() + / system.getPhase(interface1).getMolarVolume()) + / (ite_step * 1.0); + del_den_interface_old[i] = 0.0; + } - mu_times_den[j] = 0.0; - double kappa = 0.0, kappai = 0.0, kappak = 0.0; - double interact = 1.0; - for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { - double infli = localSystem.getPhase(0).getComponent(i) - .getSurfaceTenisionInfluenceParameter( - localSystem.getPhase(0).getTemperature()); + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + den_interface[j][i] = den_interface[j - 1][i] + del_den_interface[i]; + localSystem.addComponent(localSystem.getPhase(0).getComponent(i).getName(), + (del_den_interface[i] - del_den_interface_old[i]) / 1.0e5); + del_den_interface_old[i] = del_den_interface[i]; + } - if (i == referenceComponentNumber) { - kappai = 1.0; - } else { - kappai = del_den_interface[i] / del_den_interface[referenceComponentNumber]; - } + localSystem.init_x_y(); + localSystem.init(3); + // localSystem.init(3); //need to be fixed + // System.out.println("pressure " + localSystem.getPressure()); + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + mu_inter[j][i] = + localSystem.getPhase(0).getComponent(i).getChemicalPotential(localSystem.getPhase(0)); + for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { + dmudn[j][i][k] = localSystem.getPhase(0).getComponent(i).getChemicalPotentialdNTV(k, + localSystem.getPhase(0)); + } + } - mu_times_den[j] += den_interface[j][i] * (mu_inter[j][i] - mu_equi[i]); - for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { - if ((localSystem.getPhase(0).getComponent(i).getName().equals("water") - || localSystem.getPhase(0).getComponent(k).getName().equals("water")) - && i != k) { - if ((localSystem.getPhase(0).getComponent(i).getName().equals("MEG") - || localSystem.getPhase(0).getComponent(k).getName().equals("MEG")) - && i != k) { - interact = 0.2; - } else { - interact = 0.35; - } - } else { - interact = 0.0; - } + pressure_interface[j] = 1e5 * localSystem.getPhase(0).getPressure(); - double inflk = localSystem.getPhase(0).getComponent(k) - .getSurfaceTenisionInfluenceParameter( - localSystem.getPhase(0).getTemperature()); + mu_times_den[j] = 0.0; + double kappa = 0.0; + double kappai = 0.0; + double kappak = 0.0; + double interact = 1.0; + for (int i = 0; i < localSystem.getPhase(0).getNumberOfComponents(); i++) { + double infli = localSystem.getPhase(0).getComponent(i) + .getSurfaceTenisionInfluenceParameter(localSystem.getPhase(0).getTemperature()); - if (k == referenceComponentNumber) { - kappak = 1.0; - } else { - kappak = del_den_interface[k] / del_den_interface[referenceComponentNumber]; - } + if (i == referenceComponentNumber) { + kappai = 1.0; + } else { + kappai = del_den_interface[i] / del_den_interface[referenceComponentNumber]; + } - kappa += Math.sqrt(infli * inflk) * kappai * kappak * (1.0 - interact); - } - } - mu_times_den[j] += -(pressure_interface[j] - pressure_equi); - z_step[j] = z_step[j - 1] + Math.sqrt(kappa / (2.0 * mu_times_den[j])) - * del_den_interface[referenceComponentNumber]; - if (Double.isNaN(z_step[j])) { - break; + mu_times_den[j] += den_interface[j][i] * (mu_inter[j][i] - mu_equi[i]); + for (int k = 0; k < localSystem.getPhase(0).getNumberOfComponents(); k++) { + if ((localSystem.getPhase(0).getComponent(i).getName().equals("water") + || localSystem.getPhase(0).getComponent(k).getName().equals("water")) && i != k) { + if ((localSystem.getPhase(0).getComponent(i).getName().equals("MEG") + || localSystem.getPhase(0).getComponent(k).getName().equals("MEG")) && i != k) { + interact = 0.2; + } else { + interact = 0.35; } - surdenstemp += Math.sqrt(2.0 * kappa * mu_times_den[j]) - * del_den_interface[referenceComponentNumber];// * - // thermo.ThermodynamicConstantsInterface.avagadroNumber; - // System.out.println("surdenstemp " + surdenstemp + " kappa " + kappa + " - // mu_times_den[j] " + mu_times_den[j] + " z " + z_step[j]); - } + } else { + interact = 0.0; + } - for (int j = 0; j < ite_step; j++) { - // System.out.println("z " + z_step[j] + " density " + j + " " + - // den_interface[j][0] + " " + den_interface[j][1] + " " + den_interface[j][0] / - // den_interface[j][1]); - } + double inflk = localSystem.getPhase(0).getComponent(k) + .getSurfaceTenisionInfluenceParameter(localSystem.getPhase(0).getTemperature()); - return Math.abs(surdenstemp); - } + if (k == referenceComponentNumber) { + kappak = 1.0; + } else { + kappak = del_den_interface[k] / del_den_interface[referenceComponentNumber]; + } - /** - *

- * getMolarDensity. - *

- * - * @param compnum a int - * @return an array of {@link double} objects - */ - public double[] getMolarDensity(int compnum) { - double[] temp = new double[ite_step]; - for (int i = 0; i < ite_step; i++) { - temp[i] = den_interface[i][compnum]; + kappa += Math.sqrt(infli * inflk) * kappai * kappak * (1.0 - interact); } - return temp; + } + mu_times_den[j] += -(pressure_interface[j] - pressure_equi); + z_step[j] = z_step[j - 1] + Math.sqrt(kappa / (2.0 * mu_times_den[j])) + * del_den_interface[referenceComponentNumber]; + if (Double.isNaN(z_step[j])) { + break; + } + surdenstemp += + Math.sqrt(2.0 * kappa * mu_times_den[j]) * del_den_interface[referenceComponentNumber]; + // thermo.ThermodynamicConstantsInterface.avagadroNumber; + // System.out.println("surdenstemp " + surdenstemp + " kappa " + kappa + " + // mu_times_den[j] " + mu_times_den[j] + " z " + z_step[j]); } - /** - *

- * getMolarDensityTotal. - *

- * - * @return an array of {@link double} objects - */ - public double[] getMolarDensityTotal() { - double[] temp = new double[ite_step]; - for (int i = 0; i < ite_step; i++) { - for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - temp[i] += den_interface[i][j]; - } - } - return temp; + for (int j = 0; j < ite_step; j++) { + // System.out.println("z " + z_step[j] + " density " + j + " " + + // den_interface[j][0] + " " + den_interface[j][1] + " " + den_interface[j][0] / + // den_interface[j][1]); } - /** - *

- * getz. - *

- * - * @return an array of {@link double} objects - */ - public double[] getz() { - return z_step; + return Math.abs(surdenstemp); + } + + /** + *

+ * getMolarDensity. + *

+ * + * @param compnum a int + * @return an array of type double + */ + public double[] getMolarDensity(int compnum) { + double[] temp = new double[ite_step]; + for (int i = 0; i < ite_step; i++) { + temp[i] = den_interface[i][compnum]; } + return temp; + } - /** - *

- * getPressure. - *

- * - * @return an array of {@link double} objects - */ - public double[] getPressure() { - return pressure_interface; + /** + *

+ * getMolarDensityTotal. + *

+ * + * @return an array of type double + */ + public double[] getMolarDensityTotal() { + double[] temp = new double[ite_step]; + for (int i = 0; i < ite_step; i++) { + for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { + temp[i] += den_interface[i][j]; + } } + return temp; + } + + /** + *

+ * getz. + *

+ * + * @return an array of type double + */ + public double[] getz() { + return z_step; + } + + /** + *

+ * getPressure. + *

+ * + * @return an array of type double + */ + public double[] getPressure() { + return pressure_interface; + } } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/ParachorSurfaceTension.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/ParachorSurfaceTension.java index 07c1104738..52ab0df440 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/ParachorSurfaceTension.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/ParachorSurfaceTension.java @@ -11,80 +11,80 @@ * @version $Id: $Id */ public class ParachorSurfaceTension extends SurfaceTension { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ParachorSurfaceTension. - *

- */ - public ParachorSurfaceTension() {} + /** + *

+ * Constructor for ParachorSurfaceTension. + *

+ */ + public ParachorSurfaceTension() {} - /** - *

- * Constructor for ParachorSurfaceTension. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public ParachorSurfaceTension(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for ParachorSurfaceTension. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public ParachorSurfaceTension(SystemInterface system) { + super(system); + } - /** - * {@inheritDoc} - * - * Calculates the pure component surfacetension using the Macleod/Sugden method - */ - @Override - public double calcPureComponentSurfaceTension(int componentNumber) { - return 1.0e-3 - * Math.pow( - system.getPhases()[0].getComponents()[componentNumber] - .getParachorParameter() - * 1.0e-6 - * (system.getPhases()[1].getPhysicalProperties().getDensity() - / system.getPhases()[1].getMolarMass() - * system.getPhases()[1].getComponents()[componentNumber] - .getx() - - system.getPhases()[0].getPhysicalProperties().getDensity() - / system.getPhases()[0].getMolarMass() - * system.getPhases()[0] - .getComponents()[componentNumber].getx()), - 4.0); - } + /** + * {@inheritDoc} + * + *

+ * Calculates the pure component surfacetension using the Macleod/Sugden method + *

+ */ + @Override + public double calcPureComponentSurfaceTension(int componentNumber) { + return 1.0e-3 * Math.pow(system.getPhases()[0].getComponents()[componentNumber] + .getParachorParameter() + * 1.0e-6 + * (system.getPhases()[1].getPhysicalProperties().getDensity() + / system.getPhases()[1].getMolarMass() + * system.getPhases()[1].getComponents()[componentNumber].getx() + - system.getPhases()[0].getPhysicalProperties().getDensity() + / system.getPhases()[0].getMolarMass() + * system.getPhases()[0].getComponents()[componentNumber].getx()), + 4.0); + } - /** - * {@inheritDoc} - * - * Calculates the surfacetension using the Macleod/Sugden method for mixtures Units: N/m - */ - @Override - public double calcSurfaceTension(int interface1, int interface2) { - double temp = 0; - if (system.getNumberOfPhases() < 2) { - return 0.0; - } - // if(interface1>=2 || interface2>=2) return 0.0; - // return 0.0; - try { - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - // System.out.println("density1 parachor " + - // system.getPhase(interface1).getPhysicalProperties().getDensity()); - // System.out.println("density2 parachor " + - // system.getPhase(interface2).getPhysicalProperties().getDensity()); - temp += system.getPhase(interface1).getComponent(i).getParachorParameter() * 1.0e-6 - * (system.getPhase(interface2).getPhysicalProperties().getDensity() - / system.getPhase(interface2).getMolarMass() - * system.getPhase(interface2).getComponent(i).getx() - - system.getPhase(interface1).getPhysicalProperties().getDensity() - / system.getPhase(interface1).getMolarMass() - * system.getPhase(interface1).getComponent(i).getx()); - } - } catch (Exception e) { - // e.printStackTrace(); - temp = 0.0; - } - return Math.pow(temp, 4.0) / 1000.0; + /** + * {@inheritDoc} + * + *

+ * Using the Macleod/Sugden method for mixtures Units: N/m + *

+ */ + @Override + public double calcSurfaceTension(int interface1, int interface2) { + double temp = 0; + if (system.getNumberOfPhases() < 2) { + return 0.0; + } + // if(interface1>=2 || interface2>=2) return 0.0; + // return 0.0; + try { + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + // System.out.println("density1 parachor " + + // system.getPhase(interface1).getPhysicalProperties().getDensity()); + // System.out.println("density2 parachor " + + // system.getPhase(interface2).getPhysicalProperties().getDensity()); + temp += system.getPhase(interface1).getComponent(i).getParachorParameter() * 1.0e-6 + * (system.getPhase(interface2).getPhysicalProperties().getDensity() + / system.getPhase(interface2).getMolarMass() + * system.getPhase(interface2).getComponent(i).getx() + - system.getPhase(interface1).getPhysicalProperties().getDensity() + / system.getPhase(interface1).getMolarMass() + * system.getPhase(interface1).getComponent(i).getx()); + } + } catch (Exception ex) { + // logger.error(ex.getMessage(), ex); + temp = 0.0; } + return Math.pow(temp, 4.0) / 1000.0; + } } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/SurfaceTension.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/SurfaceTension.java index 73622b2ee2..f255d198cf 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/SurfaceTension.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/SurfaceTension.java @@ -3,6 +3,7 @@ * * Created on 13. august 2001, 13:14 */ + package neqsim.physicalProperties.interfaceProperties.surfaceTension; import neqsim.physicalProperties.interfaceProperties.InterfaceProperties; @@ -17,62 +18,62 @@ * @version $Id: $Id */ public class SurfaceTension extends InterfaceProperties implements SurfaceTensionInterface { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - protected SystemInterface system; + protected SystemInterface system; - /** - *

- * Constructor for SurfaceTension. - *

- */ - public SurfaceTension() {} + /** + *

+ * Constructor for SurfaceTension. + *

+ */ + public SurfaceTension() {} - /** - *

- * Constructor for SurfaceTension. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public SurfaceTension(SystemInterface system) { - this.system = system; - } + /** + *

+ * Constructor for SurfaceTension. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public SurfaceTension(SystemInterface system) { + this.system = system; + } - /** - *

- * calcPureComponentSurfaceTension. - *

- * - * @param componentNumber a int - * @return a double - */ - public double calcPureComponentSurfaceTension(int componentNumber) { - return 0.0; - } + /** + *

+ * Calculates the pure component surfacetension. + *

+ * + * @param componentNumber Number of component in phase's componentarray. + * @return pure component surface tension. + */ + public double calcPureComponentSurfaceTension(int componentNumber) { + return 0.0; + } - /** {@inheritDoc} */ - @Override - public double calcSurfaceTension(int int1, int int2) { - return 0.0; - } + /** {@inheritDoc} */ + @Override + public double calcSurfaceTension(int interface1, int interface2) { + return 0.0; + } - /** - *

- * getComponentWithHighestBoilingpoint. - *

- * - * @return a int - */ - public int getComponentWithHighestBoilingpoint() { - int compNumb = 0; - double boilPoint = -273.15; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getNormalBoilingPoint() > boilPoint) { - compNumb = i; - boilPoint = system.getPhase(0).getComponent(i).getNormalBoilingPoint(); - } - } - return compNumb; + /** + *

+ * getComponentWithHighestBoilingpoint. + *

+ * + * @return a int + */ + public int getComponentWithHighestBoilingpoint() { + int compNumb = 0; + double boilPoint = 0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getNormalBoilingPoint() > boilPoint) { + compNumb = i; + boilPoint = system.getPhase(0).getComponent(i).getNormalBoilingPoint(); + } } + return compNumb; + } } diff --git a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/SurfaceTensionInterface.java b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/SurfaceTensionInterface.java index 133302fe7b..2666e3c69b 100644 --- a/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/SurfaceTensionInterface.java +++ b/src/main/java/neqsim/physicalProperties/interfaceProperties/surfaceTension/SurfaceTensionInterface.java @@ -3,6 +3,7 @@ * * Created on 13. august 2001, 13:14 */ + package neqsim.physicalProperties.interfaceProperties.surfaceTension; /** @@ -14,14 +15,14 @@ * @version $Id: $Id */ public interface SurfaceTensionInterface { - /** - *

- * calcSurfaceTension. - *

- * - * @param int1 a int - * @param int2 a int - * @return a double - */ - public double calcSurfaceTension(int int1, int int2); + /** + *

+ * calcSurfaceTension. Calculates the surfacetension. + *

+ * + * @param interface1 Phase index 1 + * @param interface2 Phase index 2 + * @return Surface tension in N/m + */ + public double calcSurfaceTension(int interface1, int interface2); } diff --git a/src/main/java/neqsim/physicalProperties/mixingRule/PhysicalPropertyMixingRule.java b/src/main/java/neqsim/physicalProperties/mixingRule/PhysicalPropertyMixingRule.java index fc08213b60..b2adea9d74 100644 --- a/src/main/java/neqsim/physicalProperties/mixingRule/PhysicalPropertyMixingRule.java +++ b/src/main/java/neqsim/physicalProperties/mixingRule/PhysicalPropertyMixingRule.java @@ -3,6 +3,7 @@ * * Created on 2. august 2001, 13:42 */ + package neqsim.physicalProperties.mixingRule; import org.apache.logging.log4j.LogManager; @@ -19,120 +20,96 @@ * @version $Id: $Id */ public class PhysicalPropertyMixingRule - implements PhysicalPropertyMixingRuleInterface, ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(PhysicalPropertyMixingRule.class); - - public double[][] Gij; + implements PhysicalPropertyMixingRuleInterface, ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhysicalPropertyMixingRule.class); - /** - *

- * Constructor for PhysicalPropertyMixingRule. - *

- */ - public PhysicalPropertyMixingRule() {} + public double[][] Gij; - /** {@inheritDoc} */ - @Override - public PhysicalPropertyMixingRule clone() { - PhysicalPropertyMixingRule mixRule = null; + /** + *

+ * Constructor for PhysicalPropertyMixingRule. + *

+ */ + public PhysicalPropertyMixingRule() {} - try { - mixRule = (PhysicalPropertyMixingRule) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public PhysicalPropertyMixingRule clone() { + PhysicalPropertyMixingRule mixRule = null; - double[][] Gij2 = Gij.clone(); - for (int i = 0; i < Gij2.length; i++) { - Gij2[i] = Gij2[i].clone(); - } - mixRule.Gij = Gij2; - return mixRule; + try { + mixRule = (PhysicalPropertyMixingRule) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double getViscosityGij(int i, int j) { - return Gij[i][j]; + double[][] Gij2 = Gij.clone(); + for (int i = 0; i < Gij2.length; i++) { + Gij2[i] = Gij2[i].clone(); } + mixRule.Gij = Gij2; + return mixRule; + } - /** {@inheritDoc} */ - @Override - public void setViscosityGij(double val, int i, int j) { - Gij[i][j] = val; - } + /** {@inheritDoc} */ + @Override + public double getViscosityGij(int i, int j) { + return Gij[i][j]; + } - /** - *

- * getPhysicalPropertyMixingRule. - *

- * - * @return a {@link neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface} - * object - */ - public PhysicalPropertyMixingRuleInterface getPhysicalPropertyMixingRule() { - return this; - } + /** {@inheritDoc} */ + @Override + public void setViscosityGij(double val, int i, int j) { + Gij[i][j] = val; + } - /** {@inheritDoc} */ - @Override - public void initMixingRules(PhaseInterface phase) { - // logger.info("reading mix Gij viscosity.."); - Gij = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - neqsim.util.database.NeqSimDataBase database = null; - java.sql.ResultSet dataSet = null; + /** + *

+ * getPhysicalPropertyMixingRule. + *

+ * + * @return a {@link neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface} + * object + */ + public PhysicalPropertyMixingRuleInterface getPhysicalPropertyMixingRule() { + return this; + } - database = new neqsim.util.database.NeqSimDataBase(); - for (int l = 0; l < phase.getNumberOfComponents(); l++) { - if (phase.getComponent(l).isIsTBPfraction() - || phase.getComponent(l).getIonicCharge() != 0) { - break; - } - String component_name = phase.getComponents()[l].getComponentName(); - for (int k = l; k < phase.getNumberOfComponents(); k++) { - if (k == l || phase.getComponent(k).getIonicCharge() != 0 - || phase.getComponent(k).isIsTBPfraction()) { - break; - } else { - try { - dataSet = database.getResultSet("SELECT gijvisc FROM inter WHERE (COMP1='" - + component_name + "' AND COMP2='" - + phase.getComponents()[k].getComponentName() + "') OR (COMP1='" - + phase.getComponents()[k].getComponentName() + "' AND COMP2='" - + component_name + "')"); - if (dataSet.next()) { - Gij[l][k] = Double.parseDouble(dataSet.getString("gijvisc")); - } else { - Gij[l][k] = 0.0; - } - Gij[k][l] = Gij[l][k]; - } catch (Exception e) { - logger.error("err in phys prop....."); - String err = e.toString(); - logger.error(err); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - logger.error("err closing dataSet in physical property mixing rule...", - e); - } - } - } - } - } - try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); + /** {@inheritDoc} */ + @Override + public void initMixingRules(PhaseInterface phase) { + // logger.info("reading mix Gij viscosity.."); + Gij = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + for (int l = 0; l < phase.getNumberOfComponents(); l++) { + if (phase.getComponent(l).isIsTBPfraction() || phase.getComponent(l).getIonicCharge() != 0) { + break; + } + String component_name = phase.getComponents()[l].getComponentName(); + for (int k = l; k < phase.getNumberOfComponents(); k++) { + if (k == l || phase.getComponent(k).getIonicCharge() != 0 + || phase.getComponent(k).isIsTBPfraction()) { + break; + } else { + try ( + neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet("SELECT gijvisc FROM inter WHERE (COMP1='" + component_name + + "' AND COMP2='" + phase.getComponents()[k].getComponentName() + + "') OR (COMP1='" + phase.getComponents()[k].getComponentName() + + "' AND COMP2='" + component_name + "')")) { + if (dataSet.next()) { + Gij[l][k] = Double.parseDouble(dataSet.getString("gijvisc")); + } else { + Gij[l][k] = 0.0; } - } catch (Exception e) { - logger.error("error closing database.....", e); + Gij[k][l] = Gij[l][k]; + } catch (Exception ex) { + logger.error("err in phys prop.....", ex); + } } + } } + } } diff --git a/src/main/java/neqsim/physicalProperties/mixingRule/PhysicalPropertyMixingRuleInterface.java b/src/main/java/neqsim/physicalProperties/mixingRule/PhysicalPropertyMixingRuleInterface.java index 9c8e0009b6..1590f88ae4 100644 --- a/src/main/java/neqsim/physicalProperties/mixingRule/PhysicalPropertyMixingRuleInterface.java +++ b/src/main/java/neqsim/physicalProperties/mixingRule/PhysicalPropertyMixingRuleInterface.java @@ -3,6 +3,7 @@ * * Created on 2. august 2001, 13:41 */ + package neqsim.physicalProperties.mixingRule; import neqsim.thermo.phase.PhaseInterface; @@ -16,44 +17,44 @@ * @version $Id: $Id */ public interface PhysicalPropertyMixingRuleInterface extends Cloneable { - /** - *

- * getViscosityGij. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getViscosityGij(int i, int j); + /** + *

+ * getViscosityGij. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getViscosityGij(int i, int j); - /** - *

- * setViscosityGij. - *

- * - * @param val a double - * @param i a int - * @param j a int - */ - public void setViscosityGij(double val, int i, int j); + /** + *

+ * setViscosityGij. + *

+ * + * @param val a double + * @param i a int + * @param j a int + */ + public void setViscosityGij(double val, int i, int j); - /** - *

- * initMixingRules. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void initMixingRules(PhaseInterface phase); + /** + *

+ * initMixingRules. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void initMixingRules(PhaseInterface phase); - /** - *

- * clone. - *

- * - * @return a {@link neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface} - * object - */ - public PhysicalPropertyMixingRuleInterface clone(); + /** + *

+ * clone. + *

+ * + * @return a {@link neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface} + * object + */ + public PhysicalPropertyMixingRuleInterface clone(); } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/PhysicalPropertyMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/PhysicalPropertyMethod.java index d67782b613..6f72f4806f 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/PhysicalPropertyMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/PhysicalPropertyMethod.java @@ -3,6 +3,7 @@ * * Created on 3. august 2001, 22:49 */ + package neqsim.physicalProperties.physicalPropertyMethods; import org.apache.logging.log4j.LogManager; @@ -17,39 +18,39 @@ * @version $Id: $Id */ public class PhysicalPropertyMethod implements PhysicalPropertyMethodInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(PhysicalPropertyMethod.class); - - /** - *

- * Constructor for PhysicalPropertyMethod. - *

- */ - public PhysicalPropertyMethod() {} - - /** {@inheritDoc} */ - @Override - public PhysicalPropertyMethod clone() { - PhysicalPropertyMethod properties = null; - - try { - properties = (PhysicalPropertyMethod) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return properties; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhysicalPropertyMethod.class); + + /** + *

+ * Constructor for PhysicalPropertyMethod. + *

+ */ + public PhysicalPropertyMethod() {} + + /** {@inheritDoc} */ + @Override + public PhysicalPropertyMethod clone() { + PhysicalPropertyMethod properties = null; + + try { + properties = (PhysicalPropertyMethod) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void setPhase( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) {} + return properties; + } - /** {@inheritDoc} */ - @Override - public void tuneModel(double val, double temperature, double pressure) { - logger.error("model tuning not implemented!"); - } - // should contain phase objects ++ get diffusivity methods .. more ? + /** {@inheritDoc} */ + @Override + public void setPhase( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) {} + + /** {@inheritDoc} */ + @Override + public void tuneModel(double val, double temperature, double pressure) { + throw new UnsupportedOperationException("Unimplemented method 'tuneModel'"); + } + // should contain phase objects ++ get diffusivity methods .. more ? } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/PhysicalPropertyMethodInterface.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/PhysicalPropertyMethodInterface.java index 4d2baba6d3..28fd7e32dd 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/PhysicalPropertyMethodInterface.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/PhysicalPropertyMethodInterface.java @@ -3,6 +3,7 @@ * * Created on 21. august 2001, 13:20 */ + package neqsim.physicalProperties.physicalPropertyMethods; /** @@ -14,37 +15,37 @@ * @version $Id: $Id */ public interface PhysicalPropertyMethodInterface extends Cloneable, java.io.Serializable { - /** - *

- * clone. - *

- * - * @return a - * {@link neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface} - * object - */ - public PhysicalPropertyMethodInterface clone(); + /** + *

+ * clone. + *

+ * + * @return a + * {@link neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface} + * object + */ + public PhysicalPropertyMethodInterface clone(); - /** - *

- * setPhase. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public void setPhase( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase); + /** + *

+ * setPhase. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public void setPhase( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase); - /** - *

- * tuneModel. - *

- * - * @param val a double - * @param temperature a double - * @param pressure a double - */ - public void tuneModel(double val, double temperature, double pressure); + /** + *

+ * tuneModel. + *

+ * + * @param val a double + * @param temperature a double + * @param pressure a double + */ + public void tuneModel(double val, double temperature, double pressure); } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/CommonPhysicalPropertyMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/CommonPhysicalPropertyMethod.java index 419e1b2da6..d0967a330a 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/CommonPhysicalPropertyMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/CommonPhysicalPropertyMethod.java @@ -9,39 +9,39 @@ * @version $Id: $Id */ public class CommonPhysicalPropertyMethod - extends neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethod { - private static final long serialVersionUID = 1000; + extends neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethod { + private static final long serialVersionUID = 1000; - protected neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase; + protected neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase; - /** - *

- * Constructor for CommonPhysicalPropertyMethod. - *

- */ - public CommonPhysicalPropertyMethod() { - super(); - } + /** + *

+ * Constructor for CommonPhysicalPropertyMethod. + *

+ */ + public CommonPhysicalPropertyMethod() { + super(); + } - /** - *

- * Constructor for CommonPhysicalPropertyMethod. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public CommonPhysicalPropertyMethod( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - super(); - this.phase = phase; - } + /** + *

+ * Constructor for CommonPhysicalPropertyMethod. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public CommonPhysicalPropertyMethod( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + super(); + this.phase = phase; + } - /** {@inheritDoc} */ - @Override - public void setPhase( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - this.phase = phase; - } + /** {@inheritDoc} */ + @Override + public void setPhase( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + this.phase = phase; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/conductivity/Conductivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/conductivity/Conductivity.java index cca038e74d..1d3df884b4 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/conductivity/Conductivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/conductivity/Conductivity.java @@ -4,50 +4,51 @@ import org.apache.logging.log4j.Logger; /** + * Class for physical property Conductivity. * * @author Even Solbraa */ abstract class Conductivity extends - neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.CommonPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Conductivity.class); - - double conductivity = 0; - - /** - *

- * Constructor for Conductivity. - *

- */ - public Conductivity() {} - - /** - *

- * Constructor for Conductivity. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Conductivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - super(phase); + neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.CommonPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Conductivity.class); + + double conductivity = 0; + + /** + *

+ * Constructor for Conductivity. + *

+ */ + public Conductivity() {} + + /** + *

+ * Constructor for Conductivity. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Conductivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + super(phase); + } + + /** {@inheritDoc} */ + @Override + public Conductivity clone() { + Conductivity properties = null; + + try { + properties = (Conductivity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public Conductivity clone() { - Conductivity properties = null; - - try { - properties = (Conductivity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return properties; - } + return properties; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/conductivity/PFCTConductivityMethodMod86.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/conductivity/PFCTConductivityMethodMod86.java index 506b2e9164..17bc0f7997 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/conductivity/PFCTConductivityMethodMod86.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/conductivity/PFCTConductivityMethodMod86.java @@ -1,5 +1,6 @@ package neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.conductivity; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -14,16 +15,31 @@ public class PFCTConductivityMethodMod86 extends Conductivity { private static final long serialVersionUID = 1000; - /** Constant referenceSystem */ - public static SystemInterface referenceSystem = new SystemSrkEos(273.0, 1.01325); + /** Constant referenceSystem. */ + public static SystemInterface referenceSystem = + new SystemSrkEos(273.0, ThermodynamicConstantsInterface.referencePressure); double[] GVcoef = {-2.147621e5, 2.190461e5, -8.618097e4, 1.496099e4, -4.730660e2, -2.331178e2, 3.778439e1, -2.320481, 5.311764e-2}; - double condRefA = -0.25276292, condRefB = 0.33432859, condRefC = 1.12, condRefF = 168.0, - condRefE = 1.0, condRefG = 0.0; - double condRefJ[] = {-7.04036339907, 12.319512908, -8.8525979933e2, 72.835897919, 0.74421462902, + double condRefA = -0.25276292; + + double condRefB = 0.33432859; + + double condRefC = 1.12; + + double condRefF = 168.0; + + double condRefE = 1.0; + + double condRefG = 0.0; + + double[] condRefJ = {-7.04036339907, 12.319512908, -8.8525979933e2, 72.835897919, 0.74421462902, -2.9706914540, 2.2209758501e3}; - double condRefK[] = {-8.55109, 12.5539, -1020.85, 238.394, 1.31563, -72.5759, 1411.6}; - double PCmix = 0.0, TCmix = 0.0, Mmix = 0.0; + double[] condRefK = {-8.55109, 12.5539, -1020.85, 238.394, 1.31563, -72.5759, 1411.6}; + double PCmix = 0.0; + + double TCmix = 0.0; + + double Mmix = 0.0; /** *

@@ -53,15 +69,19 @@ public PFCTConductivityMethodMod86( /** {@inheritDoc} */ @Override public double calcConductivity() { - double Pc0 = referenceSystem.getPhase(0).getComponent(0).getPC(), - Tc0 = referenceSystem.getPhase(0).getComponent(0).getTC(), - M0 = referenceSystem.getPhase(0).getComponent(0).getMolarMass() * 1e3; + double Pc0 = referenceSystem.getPhase(0).getComponent(0).getPC(); - double alfa0 = 1.0, alfaMix = 1.0; - double tempTC1 = 0.0, tempTC2 = 0.0; - double tempPC1 = 0.0, tempPC2 = 0.0; - double Mwtemp = 0.0, Mmtemp = 0.0; + double Tc0 = referenceSystem.getPhase(0).getComponent(0).getTC(); + double M0 = referenceSystem.getPhase(0).getComponent(0).getMolarMass() * 1e3; + double alfa0 = 1.0; + double alfaMix = 1.0; + double tempTC1 = 0.0; + double tempTC2 = 0.0; + double tempPC1 = 0.0; + double tempPC2 = 0.0; + double Mwtemp = 0.0; + double Mmtemp = 0.0; for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { double tempVar = @@ -113,8 +133,8 @@ public double calcConductivity() { * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix); try { referenceSystem.init(1); - } catch (Exception e) { - logger.error("error", e); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } double molDens = 1.0 / referenceSystem.getLowestGibbsEnergyPhase().getMolarVolume() * 100.0; double critMolDens = 10.1521197; @@ -134,9 +154,10 @@ public double calcConductivity() { * Math.sqrt(alphai[i] * alphai[j]); } } - if (alfaMix < 1e-10) + if (alfaMix < 1e-10) { return 0.0; // this can happen befor init is doen on system - // alfaMix= alfaMix*2; + // alfaMix= alfaMix*2; + } double T0 = phase.getPhase().getTemperature() * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix * alfa0 / alfaMix; @@ -148,13 +169,14 @@ public double calcConductivity() { T0 = 273.15; } - double nstarRef = getRefComponentViscosity(T0, 1.01325); + double nstarRef = + getRefComponentViscosity(T0, ThermodynamicConstantsInterface.referencePressure); double CpID = referenceSystem.getLowestGibbsEnergyPhase().getComponent(0).getCp0(T0); double Ffunc = 1.0 + 0.053432 * redDens - 0.030182 * redDens * redDens - 0.029725 * redDens * redDens * redDens; double condIntRef = (1.18653 * nstarRef * (CpID - 2.5 * neqsim.thermo.ThermodynamicConstantsInterface.R) - * Ffunc) / (referenceSystem.getMolarMass());// *1e3; + * Ffunc) / (referenceSystem.getMolarMass()); // *1e3; double nstarMix = calcMixLPViscosity(); double FfuncMix = 1.0 + 0.053432 * redDens - 0.030182 * redDens * redDens @@ -162,7 +184,7 @@ public double calcConductivity() { double CpIDmix = phase.getPhase().getCp0(); double condIntMix = (1.18653 * nstarMix * (CpIDmix - 2.5 * neqsim.thermo.ThermodynamicConstantsInterface.R) - * FfuncMix) / (Mmix / 1.0e3);// *1e3; + * FfuncMix) / (Mmix / 1.0e3); // *1e3; double refConductivity = getRefComponentConductivity(T0, P0); @@ -187,8 +209,8 @@ public double getRefComponentConductivity(double temp, double pres) { double molDens = 1.0 / referenceSystem.getLowestGibbsEnergyPhase().getMolarVolume() * 100.0; // mol/dm^3 double critMolDens = 10.15; double redMolDens = (molDens - critMolDens) / critMolDens; - molDens = referenceSystem.getLowestGibbsEnergyPhase().getDensity() * 1e-3; // density in - // gr/cm^3 + // density in gr/cm^3 + molDens = referenceSystem.getLowestGibbsEnergyPhase().getDensity() * 1e-3; double viscRefO = GVcoef[0] * Math.pow(temp, -1.0) + GVcoef[1] * Math.pow(temp, -2.0 / 3.0) + GVcoef[2] * Math.pow(temp, -1.0 / 3.0) + GVcoef[3] + GVcoef[4] * Math.pow(temp, 1.0 / 3.0) @@ -238,11 +260,12 @@ public double getRefComponentViscosity(double temp, double pres) { double[] GVcoef = {-2.090975e5, 2.647269e5, -1.472818e5, 4.716740e4, -9.491872e3, 1.219979e3, -9.627993e1, 4.274152, -8.141531e-2}; double visRefE = 1.0; - double viscRefJ[] = {-1.035060586e1, 1.7571599671e1, -3.0193918656e3, 1.8873011594e2, + double[] viscRefJ = {-1.035060586e1, 1.7571599671e1, -3.0193918656e3, 1.8873011594e2, 4.2903609488e-2, 1.4529023444e2, 6.1276818706e3}; // double viscRefK[] = {-9.74602, 18.0834, -4126.66, 44.6055, 0.9676544, 81.8134, 15649.9}; - double molDens = 101325.0 / 8.315 / phase.getPhase().getTemperature() / 1.0e3; + double molDens = ThermodynamicConstantsInterface.atm / ThermodynamicConstantsInterface.R + / phase.getPhase().getTemperature() / 1.0e3; double critMolDens = 10.15; double redMolDens = (molDens - critMolDens) / critMolDens; double viscRefO = GVcoef[0] * Math.pow(temp, -1.0) + GVcoef[1] * Math.pow(temp, -2.0 / 3.0) @@ -276,10 +299,10 @@ public double getRefComponentViscosity(double temp, double pres) { * @return a double */ public double calcMixLPViscosity() { - double Pc0 = referenceSystem.getPhase(0).getComponent(0).getPC(), - Tc0 = referenceSystem.getPhase(0).getComponent(0).getTC(), - M0 = referenceSystem.getPhase(0).getComponent(0).getMolarMass() * 1e3; + double Pc0 = referenceSystem.getPhase(0).getComponent(0).getPC(); + double Tc0 = referenceSystem.getPhase(0).getComponent(0).getTC(); + double M0 = referenceSystem.getPhase(0).getComponent(0).getMolarMass() * 1e3; // double PCmix = 0.0, TCmix = 0.0, Mmix = 0.0; /* * for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { for (int j = 0; j < @@ -295,13 +318,15 @@ public double calcMixLPViscosity() { * phase.getPhase().getComponent(i).getx() * * Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 2.0); Mmtemp += * phase.getPhase().getComponent(i).getx() * phase.getPhase().getComponent(i).getMolarMass(); } - * + * * PCmix = 8.0 * tempPC1 / (tempPC2 * tempPC2); TCmix = tempTC1 / tempTC2; Mmix = (Mmtemp + * 1.304e-4 * (Math.pow(Mwtemp / Mmtemp, 2.303) - Math.pow(Mmtemp, 2.303))) * 1e3; * //phase.getPhase().getMolarMass(); */ - double redDens = 101325 / 8.315 / phase.getPhase().getTemperature() / 1.0e3 / 10.15; - double alfa0 = 0.0, alfaMix = 0.0; + double redDens = 101325 / ThermodynamicConstantsInterface.R / phase.getPhase().getTemperature() + / 1.0e3 / 10.15; + double alfa0 = 0.0; + double alfaMix = 0.0; double[] alphai = new double[phase.getPhase().getNumberOfComponents()]; for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { alphai[i] = 1.0 + 6.004e-4 * Math.pow(redDens, 2.043) @@ -319,8 +344,8 @@ public double calcMixLPViscosity() { double T0 = phase.getPhase().getTemperature() * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix * alfaMix / alfa0; - double P0 = - 1.01325 * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix * alfaMix / alfa0; + double P0 = ThermodynamicConstantsInterface.referencePressure + * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix * alfaMix / alfa0; double refVisosity = getRefComponentViscosity(T0, P0); double viscosity = refVisosity * Math.pow(TCmix / Tc0, -1.0 / 6.0) diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/diffusivity/CorrespondingStatesDiffusivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/diffusivity/CorrespondingStatesDiffusivity.java index 817a1c1fa8..1dd87eaedc 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/diffusivity/CorrespondingStatesDiffusivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/diffusivity/CorrespondingStatesDiffusivity.java @@ -1,5 +1,7 @@ package neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.diffusivity; +import neqsim.thermo.phase.PhaseType; + /** *

* CorrespondingStatesDiffusivity class. @@ -9,56 +11,52 @@ * @version $Id: $Id */ public class CorrespondingStatesDiffusivity extends Diffusivity { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double[][] binaryDiffusionCoefficients, binaryLennardJonesOmega; + double[][] binaryDiffusionCoefficients, binaryLennardJonesOmega; - /** - *

- * Constructor for CorrespondingStatesDiffusivity. - *

- */ - public CorrespondingStatesDiffusivity() {} + /** + *

+ * Constructor for CorrespondingStatesDiffusivity. + *

+ */ + public CorrespondingStatesDiffusivity() {} - /** - *

- * Constructor for CorrespondingStatesDiffusivity. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public CorrespondingStatesDiffusivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - super(phase); - binaryDiffusionCoefficients = new double[phase.getPhase().getNumberOfComponents()][phase - .getPhase().getNumberOfComponents()]; - } + /** + *

+ * Constructor for CorrespondingStatesDiffusivity. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public CorrespondingStatesDiffusivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + super(phase); + binaryDiffusionCoefficients = new double[phase.getPhase().getNumberOfComponents()][phase + .getPhase().getNumberOfComponents()]; + } - /** {@inheritDoc} */ - @Override - public double calcBinaryDiffusionCoefficient(int i, int j, int method) { - if (phase.getPhase().getPhaseType() == 0) { - binaryDiffusionCoefficients[i][j] = 1.0e-4 * 9.89e-8 - * Math.pow(phase.getViscosity() * 1e3, -0.907) - * Math.pow( - 1.0 / phase.getPhase().getComponents()[i].getNormalLiquidDensity() - * phase.getPhase().getComponents()[i].getMolarMass() * 1000, - -0.45) - * Math.pow( - 1.0 / phase.getPhase().getComponents()[j].getNormalLiquidDensity() - * phase.getPhase().getComponents()[j].getMolarMass() * 1000, - 0.265) - * phase.getPhase().getTemperature(); - // System.out.println("liq diffusivity " +binaryDiffusionCoefficients[i][j] - // ); - return binaryDiffusionCoefficients[i][j]; - } else { - binaryDiffusionCoefficients[i][j] = 1.8e-5 / phase.getPhase().getPressure(); - // System.out.println("gas diffusivity " +binaryDiffusionCoefficients[i][j] - // ); - return binaryDiffusionCoefficients[i][j]; - } + /** {@inheritDoc} */ + @Override + public double calcBinaryDiffusionCoefficient(int i, int j, int method) { + if (phase.getPhase().getType() == PhaseType.LIQUID) { + binaryDiffusionCoefficients[i][j] = + 1.0e-4 * 9.89e-8 * Math.pow(phase.getViscosity() * 1e3, -0.907) + * Math.pow(1.0 / phase.getPhase().getComponents()[i].getNormalLiquidDensity() + * phase.getPhase().getComponents()[i].getMolarMass() * 1000, -0.45) + * Math.pow(1.0 / phase.getPhase().getComponents()[j].getNormalLiquidDensity() + * phase.getPhase().getComponents()[j].getMolarMass() * 1000, 0.265) + * phase.getPhase().getTemperature(); + // System.out.println("liq diffusivity " +binaryDiffusionCoefficients[i][j] + // ); + return binaryDiffusionCoefficients[i][j]; + } else { + binaryDiffusionCoefficients[i][j] = 1.8e-5 / phase.getPhase().getPressure(); + // System.out.println("gas diffusivity " +binaryDiffusionCoefficients[i][j] + // ); + return binaryDiffusionCoefficients[i][j]; } + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/diffusivity/Diffusivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/diffusivity/Diffusivity.java index 51397de95e..006a7cefc4 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/diffusivity/Diffusivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/diffusivity/Diffusivity.java @@ -13,121 +13,121 @@ * @version $Id: $Id */ public class Diffusivity extends CommonPhysicalPropertyMethod implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DiffusivityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Diffusivity.class); - - double[][] binaryDiffusionCoefficients, binaryLennardJonesOmega; - double[] effectiveDiffusionCoefficient; - - /** - *

- * Constructor for Diffusivity. - *

- */ - public Diffusivity() {} - - /** - *

- * Constructor for Diffusivity. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Diffusivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - super(phase); - binaryDiffusionCoefficients = new double[phase.getPhase().getNumberOfComponents()][phase - .getPhase().getNumberOfComponents()]; - binaryLennardJonesOmega = new double[phase.getPhase().getNumberOfComponents()][phase - .getPhase().getNumberOfComponents()]; - effectiveDiffusionCoefficient = new double[phase.getPhase().getNumberOfComponents()]; - } - - /** {@inheritDoc} */ - @Override - public Diffusivity clone() { - Diffusivity properties = null; - - try { - properties = (Diffusivity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return properties; + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DiffusivityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Diffusivity.class); + + double[][] binaryDiffusionCoefficients; + double[][] binaryLennardJonesOmega; + double[] effectiveDiffusionCoefficient; + + /** + *

+ * Constructor for Diffusivity. + *

+ */ + public Diffusivity() {} + + /** + *

+ * Constructor for Diffusivity. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Diffusivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + super(phase); + binaryDiffusionCoefficients = new double[phase.getPhase().getNumberOfComponents()][phase + .getPhase().getNumberOfComponents()]; + binaryLennardJonesOmega = new double[phase.getPhase().getNumberOfComponents()][phase.getPhase() + .getNumberOfComponents()]; + effectiveDiffusionCoefficient = new double[phase.getPhase().getNumberOfComponents()]; + } + + /** {@inheritDoc} */ + @Override + public Diffusivity clone() { + Diffusivity properties = null; + + try { + properties = (Diffusivity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double calcBinaryDiffusionCoefficient(int i, int j, int method) { - return 1.0e-6; + return properties; + } + + /** {@inheritDoc} */ + @Override + public double calcBinaryDiffusionCoefficient(int i, int j, int method) { + return 1.0e-6; + } + + /** {@inheritDoc} */ + @Override + public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { + binaryDiffusionCoefficients[i][j] = + calcBinaryDiffusionCoefficient(i, j, binaryDiffusionCoefficientMethod); + // System.out.println("diff gas " + binaryDiffusionCoefficients[i][j]); + } } - /** {@inheritDoc} */ - @Override - public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { - binaryDiffusionCoefficients[i][j] = - calcBinaryDiffusionCoefficient(i, j, binaryDiffusionCoefficientMethod); - // System.out.println("diff gas " + binaryDiffusionCoefficients[i][j]); - } - } - - if (multicomponentDiffusionMethod == 0) { - // ok use full matrix - } else if (multicomponentDiffusionMethod == 0) { - // calcEffectiveDiffusionCoefficients(); - } - return binaryDiffusionCoefficients; + if (multicomponentDiffusionMethod == 0) { + // ok use full matrix + } else if (multicomponentDiffusionMethod == 0) { + // calcEffectiveDiffusionCoefficients(); } - - /** {@inheritDoc} */ - @Override - public void calcEffectiveDiffusionCoefficients() { - double sum = 0; - - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - sum = 0; - for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { - if (i == j) { - } else { - sum += phase.getPhase().getComponents()[j].getx() - / binaryDiffusionCoefficients[i][j]; - } - } - effectiveDiffusionCoefficient[i] = - (1.0 - phase.getPhase().getComponents()[i].getx()) / sum; + return binaryDiffusionCoefficients; + } + + /** {@inheritDoc} */ + @Override + public void calcEffectiveDiffusionCoefficients() { + double sum = 0; + + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + sum = 0; + for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { + if (i == j) { + continue; + } else { + sum += phase.getPhase().getComponents()[j].getx() / binaryDiffusionCoefficients[i][j]; } + } + effectiveDiffusionCoefficient[i] = (1.0 - phase.getPhase().getComponents()[i].getx()) / sum; } - - /** {@inheritDoc} */ - @Override - public double getFickBinaryDiffusionCoefficient(int i, int j) { - return binaryDiffusionCoefficients[i][j]; - } - - /** {@inheritDoc} */ - @Override - public double getEffectiveDiffusionCoefficient(int i) { - return effectiveDiffusionCoefficient[i]; - } - - /** {@inheritDoc} */ - @Override - public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j) { - /* - * double temp = (i==j)? 1.0: 0.0; double nonIdealCorrection = temp + - * gasPhase.getPhase().getComponents()[i].getx() * - * gasPhase.getPhase().getComponents()[i].getdfugdn(j) * - * gasPhase.getPhase().getNumberOfMolesInPhase(); if (Double.isNaN(nonIdealCorrection)) - * nonIdealCorrection=1.0; return binaryDiffusionCoefficients[i][j]/nonIdealCorrection; // - * shuld be divided by non ideality factor - */ - return binaryDiffusionCoefficients[i][j]; - } + } + + /** {@inheritDoc} */ + @Override + public double getFickBinaryDiffusionCoefficient(int i, int j) { + return binaryDiffusionCoefficients[i][j]; + } + + /** {@inheritDoc} */ + @Override + public double getEffectiveDiffusionCoefficient(int i) { + return effectiveDiffusionCoefficient[i]; + } + + /** {@inheritDoc} */ + @Override + public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j) { + /* + * double temp = (i==j)? 1.0: 0.0; double nonIdealCorrection = temp + + * gasPhase.getPhase().getComponents()[i].getx() * + * gasPhase.getPhase().getComponents()[i].getdfugdn(j) * + * gasPhase.getPhase().getNumberOfMolesInPhase(); if (Double.isNaN(nonIdealCorrection)) + * nonIdealCorrection=1.0; return binaryDiffusionCoefficients[i][j]/nonIdealCorrection; // shuld + * be divided by non ideality factor + */ + return binaryDiffusionCoefficients[i][j]; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/FrictionTheoryViscosityMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/FrictionTheoryViscosityMethod.java index 74b1f271ef..dd8f90f483 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/FrictionTheoryViscosityMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/FrictionTheoryViscosityMethod.java @@ -12,293 +12,297 @@ * @version Method was checked on 2.8.2001 - seems to be correct - Even Solbraa */ public class FrictionTheoryViscosityMethod extends Viscosity - implements neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - - public double[] pureComponentViscosity, Fc, omegaVisc; - protected double chungE[] = new double[10]; - static double TBPcorrection = 1.0; - // SRK - protected double kapac_fconst = -0.165302; - protected double kaprc_fconst = 6.99574e-3; - protected double kaprrc_fconst = 1.26358e-3; - - protected double[][] kapa_fconst = {{-0.114804, 0.246622, -3.94638e-2}, - {0.246622, -1.15648e-4, 4.18863e-5}, {-3.94638e-2, 4.18863e-5, -5.91999e-9}}; - - protected double[][] kapr_fconst = {{-0.315903, 0.566713, -7.29995e-2}, - {0.566713, -1.0086e-4, 5.17459e-5}, {-7.29995e-2, 5.17459e-5, -5.68708e-9}}; - - protected double kaprr_fconst = 1.35994e-8; - static Logger logger = LogManager.getLogger(FrictionTheoryViscosityMethod.class); - - // PR - // protected double kapac_fconst = -0.140464; - // protected double kaprc_fconst = 1.19902e-2; - // protected double kaprrc_fconst = 8.55115e-4; - - // protected double[][] kapa_fconst = {{-4.89197e-2, 0.270572,-4.48111e-2}, - // {0.270572, -1.10473e-4, 4.08972e-5}, - // {-4.48111e-2,4.08972e-5,-5.79765e-9}}; - - // protected double[][] kapr_fconst = {{-0.357875, 0.637572 , -7.9024e-2 }, - // {0.637572 , -6.02128e-5, 3.72408e-5}, - // {-7.9024e-2,3.72408e-5,-5.65610e-9}}; - - // protected double kaprr_fconst = 1.37290e-8; - /** - *

- * Constructor for FrictionTheoryViscosityMethod. - *

- */ - public FrictionTheoryViscosityMethod() {} - - /** - *

- * Constructor for FrictionTheoryViscosityMethod. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public FrictionTheoryViscosityMethod( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - super(phase); - pureComponentViscosity = new double[phase.getPhase().getNumberOfComponents()]; - Fc = new double[phase.getPhase().getNumberOfComponents()]; - omegaVisc = new double[phase.getPhase().getNumberOfComponents()]; - - if (this.getClass().getName().equals("neqsim.thermo.phase.PhasePrEos")) { - kapac_fconst = -0.140464; - kaprc_fconst = 1.19902e-2; - kaprrc_fconst = 8.55115e-4; - - double[][] kapa_fconst = {{-4.89197e-2, 0.270572, -4.48111e-2}, - {0.270572, -1.10473e-4, 4.08972e-5}, {-4.48111e-2, 4.08972e-5, -5.79765e-9}}; - this.kapa_fconst = kapa_fconst; - - double[][] kapr_fconst = {{-0.357875, 0.637572, -7.9024e-2}, - {0.637572, -6.02128e-5, 3.72408e-5}, {-7.9024e-2, 3.72408e-5, -5.65610e-9}}; - this.kapr_fconst = kapr_fconst; - - kaprr_fconst = 1.37290e-8; - } + implements neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(FrictionTheoryViscosityMethod.class); + + public double[] pureComponentViscosity; + public double[] Fc; + public double[] omegaVisc; + protected double[] chungE = new double[10]; + static double TBPcorrection = 1.0; + // SRK + protected double kapac_fconst = -0.165302; + protected double kaprc_fconst = 6.99574e-3; + protected double kaprrc_fconst = 1.26358e-3; + + protected double[][] kapa_fconst = {{-0.114804, 0.246622, -3.94638e-2}, + {0.246622, -1.15648e-4, 4.18863e-5}, {-3.94638e-2, 4.18863e-5, -5.91999e-9}}; + + protected double[][] kapr_fconst = {{-0.315903, 0.566713, -7.29995e-2}, + {0.566713, -1.0086e-4, 5.17459e-5}, {-7.29995e-2, 5.17459e-5, -5.68708e-9}}; + + protected double kaprr_fconst = 1.35994e-8; + + // PR + // protected double kapac_fconst = -0.140464; + // protected double kaprc_fconst = 1.19902e-2; + // protected double kaprrc_fconst = 8.55115e-4; + + // protected double[][] kapa_fconst = {{-4.89197e-2, 0.270572,-4.48111e-2}, + // {0.270572, -1.10473e-4, 4.08972e-5}, + // {-4.48111e-2,4.08972e-5,-5.79765e-9}}; + + // protected double[][] kapr_fconst = {{-0.357875, 0.637572 , -7.9024e-2 }, + // {0.637572 , -6.02128e-5, 3.72408e-5}, + // {-7.9024e-2,3.72408e-5,-5.65610e-9}}; + + // protected double kaprr_fconst = 1.37290e-8; + /** + *

+ * Constructor for FrictionTheoryViscosityMethod. + *

+ */ + public FrictionTheoryViscosityMethod() {} + + /** + *

+ * Constructor for FrictionTheoryViscosityMethod. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public FrictionTheoryViscosityMethod( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + super(phase); + pureComponentViscosity = new double[phase.getPhase().getNumberOfComponents()]; + Fc = new double[phase.getPhase().getNumberOfComponents()]; + omegaVisc = new double[phase.getPhase().getNumberOfComponents()]; + + if (this.getClass().getName().equals("neqsim.thermo.phase.PhasePrEos")) { + kapac_fconst = -0.140464; + kaprc_fconst = 1.19902e-2; + kaprrc_fconst = 8.55115e-4; + + double[][] kapa_fconst = {{-4.89197e-2, 0.270572, -4.48111e-2}, + {0.270572, -1.10473e-4, 4.08972e-5}, {-4.48111e-2, 4.08972e-5, -5.79765e-9}}; + this.kapa_fconst = kapa_fconst; + + double[][] kapr_fconst = {{-0.357875, 0.637572, -7.9024e-2}, + {0.637572, -6.02128e-5, 3.72408e-5}, {-7.9024e-2, 3.72408e-5, -5.65610e-9}}; + this.kapr_fconst = kapr_fconst; + + kaprr_fconst = 1.37290e-8; } - - /** {@inheritDoc} */ - @Override - public double calcViscosity() { - initChungPureComponentViscosity(); - - double visk0 = 0.0; - double visk1 = 0.0; - double MM = 0.0; - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - visk0 += phase.getPhase().getComponent(i).getx() - * Math.log(getPureComponentViscosity(i)); - MM += phase.getPhase().getComponent(i).getx() - / Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 0.3); - } - visk0 = Math.exp(visk0); - double Prepulsive = 1; - double Pattractive = 1; - try { - // frictional term - Prepulsive = ((neqsim.thermo.phase.PhaseEosInterface) phase.getPhase()) - .getPressureRepulsive(); - Pattractive = ((neqsim.thermo.phase.PhaseEosInterface) phase.getPhase()) - .getPressureAttractive(); - // logger.info("P rep " + Prepulsive); - // logger.info("P atr " + Pattractive); - } catch (Exception e) { - logger.error("error", e); - } - double kaprmx = 0.0; - double kapamx = 0.0; - double kaprrmx = 0.0; - - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - double nci = phase.getPhase().getComponent(i).getCriticalViscosity() * 1e7; - if (phase.getPhase().getComponent(i).isIsPlusFraction() - || phase.getPhase().getComponent(i).isIsTBPfraction()) { - nci *= TBPcorrection; - } - - double phi = 1e1 * R * phase.getPhase().getComponent(i).getTC() - / phase.getPhase().getComponent(i).getPC(); - double bigGam = - phase.getPhase().getComponent(i).getTC() / phase.getPhase().getTemperature(); - - double kapri = getRedKapr(i, phi, bigGam); - double kaprri = getRedKaprr(i, phi, bigGam); - double kapai = getRedKapa(i, phi, bigGam); - - double zi = phase.getPhase().getComponent(i).getx() - / (Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 0.3) * MM); - kaprmx += zi * nci * kapri / phase.getPhase().getComponent(i).getPC(); - kapamx += zi * nci * kapai / phase.getPhase().getComponent(i).getPC(); - kaprrmx += zi * nci * kaprri / (phase.getPhase().getComponent(i).getPC() - * phase.getPhase().getComponent(i).getPC()); - } - visk1 = kaprmx * Prepulsive + kapamx * Pattractive + kaprrmx * Prepulsive * Prepulsive; - - if ((visk0 + visk1) < 1e-20) { - return 1e-6; - } - return (visk0 + visk1) * 1.0e-7; + } + + /** {@inheritDoc} */ + @Override + public double calcViscosity() { + initChungPureComponentViscosity(); + + double visk0 = 0.0; + double visk1 = 0.0; + double MM = 0.0; + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + visk0 += phase.getPhase().getComponent(i).getx() * Math.log(getPureComponentViscosity(i)); + MM += phase.getPhase().getComponent(i).getx() + / Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 0.3); } - - /** - *

- * getRedKapr. - *

- * - * @param compNumb a int - * @param phi a double - * @param bigGamma a double - * @return a double - */ - public double getRedKapr(int compNumb, double phi, double bigGamma) { - return kaprc_fconst + kapr_fconst[0][0] * (bigGamma - 1.0) - + (kapr_fconst[1][0] + kapr_fconst[1][1] * phi) * (Math.exp(bigGamma - 1.0) - 1.0) - + (kapr_fconst[2][0] + kapr_fconst[2][1] * phi + kapr_fconst[2][2] * phi * phi) - * (Math.exp(2 * bigGamma - 2.0) - 1.0); + visk0 = Math.exp(visk0); + double Prepulsive = 1; + double Pattractive = 1; + try { + // frictional term + Prepulsive = + ((neqsim.thermo.phase.PhaseEosInterface) phase.getPhase()).getPressureRepulsive(); + Pattractive = + ((neqsim.thermo.phase.PhaseEosInterface) phase.getPhase()).getPressureAttractive(); + // logger.info("P rep " + Prepulsive); + // logger.info("P atr " + Pattractive); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** - *

- * getRedKaprr. - *

- * - * @param compNumb a int - * @param phi a double - * @param bigGamma a double - * @return a double - */ - public double getRedKaprr(int compNumb, double phi, double bigGamma) { - return kaprrc_fconst + kaprr_fconst * phi * (Math.exp(2.0 * bigGamma) - 1.0) - * Math.pow(bigGamma - 1.0, 2.0); + double kaprmx = 0.0; + double kapamx = 0.0; + double kaprrmx = 0.0; + + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + double nci = phase.getPhase().getComponent(i).getCriticalViscosity() * 1e7; + if (phase.getPhase().getComponent(i).isIsPlusFraction() + || phase.getPhase().getComponent(i).isIsTBPfraction()) { + nci *= TBPcorrection; + } + + double phi = 1e1 * R * phase.getPhase().getComponent(i).getTC() + / phase.getPhase().getComponent(i).getPC(); + double bigGam = phase.getPhase().getComponent(i).getTC() / phase.getPhase().getTemperature(); + + double kapri = getRedKapr(i, phi, bigGam); + double kaprri = getRedKaprr(i, phi, bigGam); + double kapai = getRedKapa(i, phi, bigGam); + + double zi = phase.getPhase().getComponent(i).getx() + / (Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 0.3) * MM); + kaprmx += zi * nci * kapri / phase.getPhase().getComponent(i).getPC(); + kapamx += zi * nci * kapai / phase.getPhase().getComponent(i).getPC(); + kaprrmx += zi * nci * kaprri + / (phase.getPhase().getComponent(i).getPC() * phase.getPhase().getComponent(i).getPC()); } + visk1 = kaprmx * Prepulsive + kapamx * Pattractive + kaprrmx * Prepulsive * Prepulsive; - /** - *

- * getRedKapa. - *

- * - * @param compNumb a int - * @param phi a double - * @param bigGamma a double - * @return a double - */ - public double getRedKapa(int compNumb, double phi, double bigGamma) { - return kapac_fconst + kapa_fconst[0][0] * (bigGamma - 1.0) - + (kapa_fconst[1][0] + kapa_fconst[1][1] * phi) * (Math.exp(bigGamma - 1.0) - 1.0) - + (kapa_fconst[2][0] + kapa_fconst[2][1] * phi + kapa_fconst[2][2] * phi * phi) - * (Math.exp(2.0 * bigGamma - 2.0) - 1.0); + if ((visk0 + visk1) < 1e-20) { + return 1e-6; } - - /** {@inheritDoc} */ - @Override - public double getPureComponentViscosity(int i) { - return pureComponentViscosity[i]; + return (visk0 + visk1) * 1.0e-7; + } + + /** + *

+ * getRedKapr. + *

+ * + * @param compNumb a int + * @param phi a double + * @param bigGamma a double + * @return a double + */ + public double getRedKapr(int compNumb, double phi, double bigGamma) { + return kaprc_fconst + kapr_fconst[0][0] * (bigGamma - 1.0) + + (kapr_fconst[1][0] + kapr_fconst[1][1] * phi) * (Math.exp(bigGamma - 1.0) - 1.0) + + (kapr_fconst[2][0] + kapr_fconst[2][1] * phi + kapr_fconst[2][2] * phi * phi) + * (Math.exp(2 * bigGamma - 2.0) - 1.0); + } + + /** + *

+ * getRedKaprr. + *

+ * + * @param compNumb a int + * @param phi a double + * @param bigGamma a double + * @return a double + */ + public double getRedKaprr(int compNumb, double phi, double bigGamma) { + return kaprrc_fconst + + kaprr_fconst * phi * (Math.exp(2.0 * bigGamma) - 1.0) * Math.pow(bigGamma - 1.0, 2.0); + } + + /** + *

+ * getRedKapa. + *

+ * + * @param compNumb a int + * @param phi a double + * @param bigGamma a double + * @return a double + */ + public double getRedKapa(int compNumb, double phi, double bigGamma) { + return kapac_fconst + kapa_fconst[0][0] * (bigGamma - 1.0) + + (kapa_fconst[1][0] + kapa_fconst[1][1] * phi) * (Math.exp(bigGamma - 1.0) - 1.0) + + (kapa_fconst[2][0] + kapa_fconst[2][1] * phi + kapa_fconst[2][2] * phi * phi) + * (Math.exp(2.0 * bigGamma - 2.0) - 1.0); + } + + /** {@inheritDoc} */ + @Override + public double getPureComponentViscosity(int i) { + return pureComponentViscosity[i]; + } + + /** + *

+ * initChungPureComponentViscosity. + *

+ */ + public void initChungPureComponentViscosity() { + double tempVar = 0; + double A = 1.16145; + + double B = 0.14874; + double C = 0.52487; + double D = 0.77320; + double E = 2.16178; + double F = 2.43787; + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + Fc[i] = 1.0 - 0.2756 * phase.getPhase().getComponents()[i].getAcentricFactor(); + + tempVar = + 1.2593 * phase.getPhase().getTemperature() / phase.getPhase().getComponents()[i].getTC(); + // eq. 9.4.3 TPoLG + double varLast = -6.435e-4 * Math.pow(tempVar, 0.14874) + * Math.sin(18.0323 * Math.pow(tempVar, -0.76830) - 7.27371); + + omegaVisc[i] = A / Math.pow(tempVar, B) + C / Math.exp(D * tempVar) + + E / Math.exp(F * tempVar) + varLast; + + // double critVol = 0.000235751e6+ + // 1e4*3.4277*(phase.getPhase().getComponents()[i].getPC()/(R*phase.getPhase().getComponents()[i].getTC())); + double critVol = phase.getPhase().getPhase().getComponents()[i].getCriticalVolume(); + + pureComponentViscosity[i] = 40.785 + * Math.sqrt(phase.getPhase().getComponents()[i].getMolarMass() * 1000.0 + * phase.getPhase().getTemperature()) + / (Math.pow(critVol, 2.0 / 3.0) * omegaVisc[i]) * Fc[i]; + // logger.info("visk " + pureComponentViscosity[i]); } - - /** - *

- * initChungPureComponentViscosity. - *

- */ - public void initChungPureComponentViscosity() { - double tempVar = 0; - double A = 1.16145, B = 0.14874, C = 0.52487, D = 0.77320, E = 2.16178, F = 2.43787; - + } + + /** {@inheritDoc} */ + @Override + public void tuneModel(double val, double temperature, double pressure) { + double calcVisc = 0; + int iter = 0; + double err = 0.0; + double oldTemp = phase.getPhase().getTemperature(); + double oldPres = phase.getPhase().getPressure(); + phase.getPhase().setTemperature(temperature); + phase.getPhase().setPressure(pressure); + phase.getPhase().init(); + do { + iter++; + phase.getPhase().initPhysicalProperties(); + calcVisc = calcViscosity(); + logger.info("visc " + calcVisc); + err = ((calcVisc - val) / calcVisc); + logger.info("err " + err); + + if (phase.getPhase().hasPlusFraction() || phase.getPhase().hasTBPFraction()) { + logger.info("has plus fraction "); for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - Fc[i] = 1.0 - 0.2756 * phase.getPhase().getComponents()[i].getAcentricFactor(); - - tempVar = 1.2593 * phase.getPhase().getTemperature() - / phase.getPhase().getComponents()[i].getTC(); - // eq. 9.4.3 TPoLG - double varLast = -6.435e-4 * Math.pow(tempVar, 0.14874) - * Math.sin(18.0323 * Math.pow(tempVar, -0.76830) - 7.27371); - - omegaVisc[i] = A / Math.pow(tempVar, B) + C / Math.exp(D * tempVar) - + E / Math.exp(F * tempVar) + varLast; - - // double critVol = 0.000235751e6+ - // 1e4*3.4277*(phase.getPhase().getComponents()[i].getPC()/(R*phase.getPhase().getComponents()[i].getTC())); - double critVol = phase.getPhase().getPhase().getComponents()[i].getCriticalVolume(); - - pureComponentViscosity[i] = 40.785 - * Math.sqrt(phase.getPhase().getComponents()[i].getMolarMass() * 1000.0 - * phase.getPhase().getTemperature()) - / (Math.pow(critVol, 2.0 / 3.0) * omegaVisc[i]) * Fc[i]; - // logger.info("visk " + pureComponentViscosity[i]); + if (phase.getPhase().getComponent(i).isIsPlusFraction() + || phase.getPhase().getComponent(i).isIsTBPfraction()) { + phase.getPhase().getComponent(i).setCriticalViscosity( + phase.getPhase().getComponent(i).getCriticalViscosity() * (1 - err)); + } } - } - - /** {@inheritDoc} */ - @Override - public void tuneModel(double val, double temperature, double pressure) { - double calcVisc = 0; - int iter = 0; - double err = 0.0; - double oldTemp = phase.getPhase().getTemperature(), - oldPres = phase.getPhase().getPressure(); - phase.getPhase().setTemperature(temperature); - phase.getPhase().setPressure(pressure); - phase.getPhase().init(); - do { - iter++; - phase.getPhase().initPhysicalProperties(); - calcVisc = calcViscosity(); - logger.info("visc " + calcVisc); - err = ((calcVisc - val) / calcVisc); - logger.info("err " + err); - - if (phase.getPhase().hasPlusFraction() || phase.getPhase().hasTBPFraction()) { - logger.info("has plus fraction "); - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - if (phase.getPhase().getComponent(i).isIsPlusFraction() - || phase.getPhase().getComponent(i).isIsTBPfraction()) { - phase.getPhase().getComponent(i).setCriticalViscosity( - phase.getPhase().getComponent(i).getCriticalViscosity() - * (1 - err)); - } - } - } else { - logger.info("no plus fraction "); - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - phase.getPhase().getComponent(i).setCriticalViscosity( - phase.getPhase().getComponent(i).getCriticalViscosity() * (1 - err)); - } - } - } while (Math.abs(err) > 1e-4 && iter < 500); - - phase.getPhase().setTemperature(oldTemp); - phase.getPhase().setPressure(oldPres); - phase.getPhase().init(); - } - - /** - *

- * setTBPviscosityCorrection. - *

- * - * @param correction a double - */ - public void setTBPviscosityCorrection(double correction) { - TBPcorrection = correction; - } - - /** - *

- * getTBPviscosityCorrection. - *

- * - * @return a double - */ - public double getTBPviscosityCorrection() { - return TBPcorrection; - } + } else { + logger.info("no plus fraction "); + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + phase.getPhase().getComponent(i).setCriticalViscosity( + phase.getPhase().getComponent(i).getCriticalViscosity() * (1 - err)); + } + } + } while (Math.abs(err) > 1e-4 && iter < 500); + + phase.getPhase().setTemperature(oldTemp); + phase.getPhase().setPressure(oldPres); + phase.getPhase().init(); + } + + /** + *

+ * setTBPviscosityCorrection. + *

+ * + * @param correction a double + */ + public void setTBPviscosityCorrection(double correction) { + TBPcorrection = correction; + } + + /** + *

+ * getTBPviscosityCorrection. + *

+ * + * @return a double + */ + public double getTBPviscosityCorrection() { + return TBPcorrection; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/LBCViscosityMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/LBCViscosityMethod.java index b1a96c9460..146ca78727 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/LBCViscosityMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/LBCViscosityMethod.java @@ -12,80 +12,84 @@ * @version Method was checked on 2.8.2001 - seems to be correct - Even Solbraa */ public class LBCViscosityMethod extends Viscosity { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(LBCViscosityMethod.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(LBCViscosityMethod.class); - double a[] = {0.10230, 0.023364, 0.058533, -0.040758, 0.0093324}; + double[] a = {0.10230, 0.023364, 0.058533, -0.040758, 0.0093324}; - /** - *

- * Constructor for LBCViscosityMethod. - *

- */ - public LBCViscosityMethod() {} + /** + *

+ * Constructor for LBCViscosityMethod. + *

+ */ + public LBCViscosityMethod() {} - /** - *

- * Constructor for LBCViscosityMethod. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public LBCViscosityMethod( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - super(phase); - } - - /** {@inheritDoc} */ - @Override - public double calcViscosity() { - double viscosity = 0.0, lowPresVisc = 0.0, temp = 0.0, temp2 = 0.0, temp3 = 0.0, - temp4 = 0.0; - double eps = 0, critDens = 0.0; - double par1 = 0.0, par2 = 0.0, par3 = 0.0, par4 = 0.0; - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - par1 += phase.getPhase().getComponent(i).getx() - * phase.getPhase().getComponent(i).getTC(); - par2 += phase.getPhase().getComponent(i).getx() - * phase.getPhase().getComponent(i).getMolarMass() * 1000.0; - par3 += phase.getPhase().getComponent(i).getx() - * phase.getPhase().getComponent(i).getPC(); - par4 += phase.getPhase().getComponent(i).getx() - * phase.getPhase().getComponent(i).getCriticalVolume(); - double TR = - phase.getPhase().getTemperature() / phase.getPhase().getComponent(i).getTC(); - temp2 = Math.pow(phase.getPhase().getComponent(i).getTC(), 1.0 / 6.0) - / (Math.pow(phase.getPhase().getComponent(i).getMolarMass() * 1000.0, 1.0 / 2.0) - * Math.pow(phase.getPhase().getComponent(i).getPC(), 2.0 / 3.0)); - temp = TR < 1.5 ? 34.0e-5 * 1.0 / temp2 * Math.pow(TR, 0.94) - : 17.78e-5 * 1.0 / temp2 * Math.pow(4.58 * TR - 1.67, 5.0 / 8.0); + /** + *

+ * Constructor for LBCViscosityMethod. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public LBCViscosityMethod( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + super(phase); + } - temp3 += phase.getPhase().getComponent(i).getx() * temp - * Math.pow(phase.getPhase().getComponent(i).getMolarMass() * 1000.0, 1.0 / 2.0); - temp4 += phase.getPhase().getComponent(i).getx() - * Math.pow(phase.getPhase().getComponent(i).getMolarMass() * 1000.0, 1.0 / 2.0); - } + /** {@inheritDoc} */ + @Override + public double calcViscosity() { + double lowPresVisc = 0.0; + double temp = 0.0; + double temp2 = 0.0; + double temp3 = 0.0; + double temp4 = 0.0; + double critDens = 0.0; + double par1 = 0.0; + double par2 = 0.0; + double par3 = 0.0; + double par4 = 0.0; + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + par1 += phase.getPhase().getComponent(i).getx() * phase.getPhase().getComponent(i).getTC(); + par2 += phase.getPhase().getComponent(i).getx() + * phase.getPhase().getComponent(i).getMolarMass() * 1000.0; + par3 += phase.getPhase().getComponent(i).getx() * phase.getPhase().getComponent(i).getPC(); + par4 += phase.getPhase().getComponent(i).getx() + * phase.getPhase().getComponent(i).getCriticalVolume(); + double TR = phase.getPhase().getTemperature() / phase.getPhase().getComponent(i).getTC(); + temp2 = Math.pow(phase.getPhase().getComponent(i).getTC(), 1.0 / 6.0) + / (Math.pow(phase.getPhase().getComponent(i).getMolarMass() * 1000.0, 1.0 / 2.0) + * Math.pow(phase.getPhase().getComponent(i).getPC(), 2.0 / 3.0)); + temp = TR < 1.5 ? 34.0e-5 * 1.0 / temp2 * Math.pow(TR, 0.94) + : 17.78e-5 * 1.0 / temp2 * Math.pow(4.58 * TR - 1.67, 5.0 / 8.0); - lowPresVisc = temp3 / temp4; - // logger.info("LP visc " + lowPresVisc); - critDens = 1.0 / par4; // mol/cm3 - eps = Math.pow(par1, 1.0 / 6.0) * Math.pow(par2, -1.0 / 2.0) * Math.pow(par3, -2.0 / 3.0); - double reducedDensity = phase.getPhase().getPhysicalProperties().getDensity() - / phase.getPhase().getMolarMass() / critDens / 1000000.0; - // System.out.println("reduced density " + reducedDensity); - double numb = a[0] + a[1] * reducedDensity + a[2] * Math.pow(reducedDensity, 2.0) - + a[3] * Math.pow(reducedDensity, 3.0) + a[4] * Math.pow(reducedDensity, 4.0); - viscosity = (-Math.pow(10.0, -4.0) + Math.pow(numb, 4.0)) / eps + lowPresVisc; - viscosity /= 1.0e3; - // System.out.println("visc " + viscosity); - return viscosity; + temp3 += phase.getPhase().getComponent(i).getx() * temp + * Math.pow(phase.getPhase().getComponent(i).getMolarMass() * 1000.0, 1.0 / 2.0); + temp4 += phase.getPhase().getComponent(i).getx() + * Math.pow(phase.getPhase().getComponent(i).getMolarMass() * 1000.0, 1.0 / 2.0); } - /** {@inheritDoc} */ - @Override - public double getPureComponentViscosity(int i) { - return 0; - } + lowPresVisc = temp3 / temp4; + // logger.info("LP visc " + lowPresVisc); + critDens = 1.0 / par4; // mol/cm3 + double eps = + Math.pow(par1, 1.0 / 6.0) * Math.pow(par2, -1.0 / 2.0) * Math.pow(par3, -2.0 / 3.0); + double reducedDensity = phase.getPhase().getPhysicalProperties().getDensity() + / phase.getPhase().getMolarMass() / critDens / 1000000.0; + // System.out.println("reduced density " + reducedDensity); + double numb = a[0] + a[1] * reducedDensity + a[2] * Math.pow(reducedDensity, 2.0) + + a[3] * Math.pow(reducedDensity, 3.0) + a[4] * Math.pow(reducedDensity, 4.0); + double viscosity = (-Math.pow(10.0, -4.0) + Math.pow(numb, 4.0)) / eps + lowPresVisc; + viscosity /= 1.0e3; + // System.out.println("visc " + viscosity); + return viscosity; + } + + /** {@inheritDoc} */ + @Override + public double getPureComponentViscosity(int i) { + return 0; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethod.java index a77e0b3faf..021f95211b 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethod.java @@ -3,8 +3,10 @@ * * Created on 1. august 2001, 12:44 */ + package neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -17,160 +19,174 @@ * @version Method was checked on 2.8.2001 - seems to be correct - Even Solbraa */ public class PFCTViscosityMethod extends Viscosity { - private static final long serialVersionUID = 1000; - - int phaseTypeNumb = 1; - SystemInterface referenceSystem = new SystemSrkEos(273.0, 1.01325); - double[] GVcoef = {-2.090975e5, 2.647269e5, -1.472818e5, 4.716740e4, -9.491872e3, 1.219979e3, - -9.627993e1, 4.274152, -8.141531e-2}; - double visRefA = 1.696985927, visRefB = -0.133372346, visRefC = 1.4, visRefF = 168.0, - visRefE = 1.0; - double viscRefJ[] = {-1.035060586e1, 1.7571599671e1, -3.0193918656e3, 1.8873011594e2, - 4.2903609488e-2, 1.4529023444e2, 6.1276818706e3}; - - /** - *

- * Constructor for PFCTViscosityMethod. - *

- */ - public PFCTViscosityMethod() {} - - /** - *

- * Constructor for PFCTViscosityMethod. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public PFCTViscosityMethod( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - super(phase); - referenceSystem.addComponent("methane", 10.0); - referenceSystem.init(0); - } - - /** {@inheritDoc} */ - @Override - public double calcViscosity() { - int phaseTypeNumb = 0; - // if(phase.getPhase().getPhaseType()==0) phaseTypeNumb=1; - - double Pc0 = referenceSystem.getPhase(0).getComponent(0).getPC(), - Tc0 = referenceSystem.getPhase(0).getComponent(0).getTC(), - M0 = referenceSystem.getPhase(0).getComponent(0).getMolarMass() * 1e3; - - double PCmix = 0.0, TCmix = 0.0, Mmix = 0.0; - double alfa0 = 1.0, alfaMix = 1.0; - double tempTC1 = 0.0, tempTC2 = 0.0; - double tempPC1 = 0.0, tempPC2 = 0.0; - double Mwtemp = 0.0, Mmtemp = 0.0; - - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { - double tempVar = phase.getPhase().getComponent(i).getx() - * phase.getPhase().getComponent(j).getx() - * Math.pow(Math - .pow(phase.getPhase().getComponent(i).getTC() - / phase.getPhase().getComponent(i).getPC(), 1.0 / 3.0) - + Math.pow( - phase.getPhase().getComponent(j).getTC() - / phase.getPhase().getComponent(j).getPC(), - 1.0 / 3.0), - 3.0); - tempTC1 += tempVar * Math.sqrt(phase.getPhase().getComponent(i).getTC() - * phase.getPhase().getComponent(j).getTC()); - tempTC2 += tempVar; - tempPC1 += tempVar * Math.sqrt(phase.getPhase().getComponent(i).getTC() - * phase.getPhase().getComponent(j).getTC()); - tempPC2 += tempVar; - } - Mwtemp += phase.getPhase().getComponent(i).getx() - * Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 2.0); - Mmtemp += phase.getPhase().getComponent(i).getx() - * phase.getPhase().getComponent(i).getMolarMass(); - } - - PCmix = 8.0 * tempPC1 / (tempPC2 * tempPC2); - TCmix = tempTC1 / tempTC2; - Mmix = (Mmtemp + 0.291 * (Mwtemp / Mmtemp - Mmtemp)) * 1e3; // phase.getPhase().getMolarMass(); - - referenceSystem.setTemperature(phase.getPhase().getTemperature() - * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix); - referenceSystem.setPressure(phase.getPhase().getPressure() - * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix); - referenceSystem.init(1); - double molDens = 1.0 / referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; - double critMolDens = 10.15;// 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); - double redDens = molDens / critMolDens; - - alfaMix = 1.0 + 7.475e-5 * Math.pow(redDens, 4.265) * Math.pow(Mmix, 0.8579); - alfa0 = 1.0 + 8.374e-4 * Math.pow(redDens, 4.265); - // System.out.println("func " + 7.475e-5*Math.pow(16.043, 0.8579)); - double T0 = phase.getPhase().getTemperature() - * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix * alfa0 / alfaMix; - double P0 = phase.getPhase().getPressure() - * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix * alfa0 / alfaMix; - - double refVisosity = getRefComponentViscosity(T0, P0); - // System.out.println("m/mix " + Mmix/M0); - // System.out.println("a/amix " + alfaMix/alfa0); - double viscosity = refVisosity * Math.pow(TCmix / Tc0, -1.0 / 6.0) - * Math.pow(PCmix / Pc0, 2.0 / 3.0) * Math.pow(Mmix / M0, 0.5) * alfaMix / alfa0; - return viscosity; + private static final long serialVersionUID = 1000; + + // todo: is this parameter required? + int phaseTypeNumb = 1; + SystemInterface referenceSystem = + new SystemSrkEos(273.0, ThermodynamicConstantsInterface.referencePressure); + double[] GVcoef = {-2.090975e5, 2.647269e5, -1.472818e5, 4.716740e4, -9.491872e3, 1.219979e3, + -9.627993e1, 4.274152, -8.141531e-2}; + double visRefA = 1.696985927; + + double visRefB = -0.133372346; + + double visRefC = 1.4; + + double visRefF = 168.0; + + double visRefE = 1.0; + + double[] viscRefJ = {-1.035060586e1, 1.7571599671e1, -3.0193918656e3, 1.8873011594e2, + 4.2903609488e-2, 1.4529023444e2, 6.1276818706e3}; + + /** + *

+ * Constructor for PFCTViscosityMethod. + *

+ */ + public PFCTViscosityMethod() {} + + /** + *

+ * Constructor for PFCTViscosityMethod. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public PFCTViscosityMethod( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + super(phase); + referenceSystem.addComponent("methane", 10.0); + referenceSystem.init(0); + } + + /** {@inheritDoc} */ + @Override + public double calcViscosity() { + // int phaseTypeNumb = 0; + // if(phase.getPhase().getPhaseType()==0) phaseTypeNumb=1; + + double Pc0 = referenceSystem.getPhase(0).getComponent(0).getPC(); + + double Tc0 = referenceSystem.getPhase(0).getComponent(0).getTC(); + double M0 = referenceSystem.getPhase(0).getComponent(0).getMolarMass() * 1e3; + double PCmix = 0.0; + double TCmix = 0.0; + double Mmix = 0.0; + double alfa0 = 1.0; + double alfaMix = 1.0; + double tempTC1 = 0.0; + double tempTC2 = 0.0; + double tempPC1 = 0.0; + double tempPC2 = 0.0; + double Mwtemp = 0.0; + + double Mmtemp = 0.0; + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { + double tempVar = + phase.getPhase().getComponent(i).getx() * phase.getPhase().getComponent(j).getx() + * Math.pow(Math + .pow(phase.getPhase().getComponent(i).getTC() + / phase.getPhase().getComponent(i).getPC(), 1.0 / 3.0) + + Math.pow(phase.getPhase().getComponent(j).getTC() + / phase.getPhase().getComponent(j).getPC(), 1.0 / 3.0), + 3.0); + tempTC1 += tempVar * Math.sqrt( + phase.getPhase().getComponent(i).getTC() * phase.getPhase().getComponent(j).getTC()); + tempTC2 += tempVar; + tempPC1 += tempVar * Math.sqrt( + phase.getPhase().getComponent(i).getTC() * phase.getPhase().getComponent(j).getTC()); + tempPC2 += tempVar; + } + Mwtemp += phase.getPhase().getComponent(i).getx() + * Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 2.0); + Mmtemp += + phase.getPhase().getComponent(i).getx() * phase.getPhase().getComponent(i).getMolarMass(); } - /** {@inheritDoc} */ - @Override - public double getPureComponentViscosity(int i) { - return 0; - } - - /** - *

- * getRefComponentViscosity. - *

- * - * @param temp a double - * @param pres a double - * @return a double - */ - public double getRefComponentViscosity(double temp, double pres) { - referenceSystem.setTemperature(temp); - // System.out.println("ref temp " + temp); - referenceSystem.setPressure(pres); - // System.out.println("ref pres " + pres); - referenceSystem.init(1); - double molDens = 1.0 / referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; - // System.out.println("mol dens " + molDens); - double critMolDens = 10.15;// 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); - double redMolDens = (molDens - critMolDens) / critMolDens; - // System.out.println("gv1 " +GVcoef[0]); - - molDens = referenceSystem.getPhase(phaseTypeNumb).getDensity() * 1e-3; - - double viscRefO = GVcoef[0] * Math.pow(temp, -1.0) + GVcoef[1] * Math.pow(temp, -2.0 / 3.0) - + GVcoef[2] * Math.pow(temp, -1.0 / 3.0) + GVcoef[3] - + GVcoef[4] * Math.pow(temp, 1.0 / 3.0) + GVcoef[5] * Math.pow(temp, 2.0 / 3.0) - + GVcoef[6] * temp + GVcoef[7] * Math.pow(temp, 4.0 / 3.0) - + GVcoef[8] * Math.pow(temp, 5.0 / 3.0); - - // System.out.println("ref visc0 " + viscRefO); - - double viscRef1 = - (visRefA + visRefB * Math.pow(visRefC - Math.log(temp / visRefF), 2.0)) * molDens; - // System.out.println("ref visc1 " + viscRef1); - - double temp1 = - Math.pow(molDens, 0.1) * (viscRefJ[1] + viscRefJ[2] / Math.pow(temp, 3.0 / 2.0)); - double temp2 = redMolDens * Math.pow(molDens, 0.5) - * (viscRefJ[4] + viscRefJ[5] / temp + viscRefJ[6] / Math.pow(temp, 2.0)); - double temp3 = Math.exp(temp1 + temp2); - double viscRef2 = visRefE * Math.exp(viscRefJ[0] + viscRefJ[3] / temp) * (temp3 - 1.0); - // System.out.println("ref visc2 " + viscRef2); - double refVisc = (viscRefO + viscRef1 + viscRef2) / 1.0e7; - // System.out.println("ref visc " + refVisc); - return refVisc; - } + PCmix = 8.0 * tempPC1 / (tempPC2 * tempPC2); + TCmix = tempTC1 / tempTC2; + Mmix = (Mmtemp + 0.291 * (Mwtemp / Mmtemp - Mmtemp)) * 1e3; // phase.getPhase().getMolarMass(); + + referenceSystem.setTemperature(phase.getPhase().getTemperature() + * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix); + referenceSystem.setPressure(phase.getPhase().getPressure() + * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix); + referenceSystem.init(1); + + // todo: mixing phasetype and phase index? + double molDens = 1.0 / referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; + double critMolDens = 10.15; // 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); + double redDens = molDens / critMolDens; + + alfaMix = 1.0 + 7.475e-5 * Math.pow(redDens, 4.265) * Math.pow(Mmix, 0.8579); + alfa0 = 1.0 + 8.374e-4 * Math.pow(redDens, 4.265); + // System.out.println("func " + 7.475e-5*Math.pow(16.043, 0.8579)); + double T0 = phase.getPhase().getTemperature() + * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix * alfa0 / alfaMix; + double P0 = phase.getPhase().getPressure() * referenceSystem.getPhase(0).getComponent(0).getPC() + / PCmix * alfa0 / alfaMix; + + double refVisosity = getRefComponentViscosity(T0, P0); + // System.out.println("m/mix " + Mmix/M0); + // System.out.println("a/amix " + alfaMix/alfa0); + double viscosity = refVisosity * Math.pow(TCmix / Tc0, -1.0 / 6.0) + * Math.pow(PCmix / Pc0, 2.0 / 3.0) * Math.pow(Mmix / M0, 0.5) * alfaMix / alfa0; + return viscosity; + } + + /** {@inheritDoc} */ + @Override + public double getPureComponentViscosity(int i) { + return 0; + } + + /** + *

+ * getRefComponentViscosity. + *

+ * + * @param temp a double + * @param pres a double + * @return a double + */ + public double getRefComponentViscosity(double temp, double pres) { + referenceSystem.setTemperature(temp); + // System.out.println("ref temp " + temp); + referenceSystem.setPressure(pres); + // System.out.println("ref pres " + pres); + referenceSystem.init(1); + double molDens = 1.0 / referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; + // System.out.println("mol dens " + molDens); + double critMolDens = 10.15; // 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); + double redMolDens = (molDens - critMolDens) / critMolDens; + // System.out.println("gv1 " +GVcoef[0]); + + molDens = referenceSystem.getPhase(phaseTypeNumb).getDensity() * 1e-3; + + double viscRefO = GVcoef[0] * Math.pow(temp, -1.0) + GVcoef[1] * Math.pow(temp, -2.0 / 3.0) + + GVcoef[2] * Math.pow(temp, -1.0 / 3.0) + GVcoef[3] + GVcoef[4] * Math.pow(temp, 1.0 / 3.0) + + GVcoef[5] * Math.pow(temp, 2.0 / 3.0) + GVcoef[6] * temp + + GVcoef[7] * Math.pow(temp, 4.0 / 3.0) + GVcoef[8] * Math.pow(temp, 5.0 / 3.0); + + // System.out.println("ref visc0 " + viscRefO); + + double viscRef1 = + (visRefA + visRefB * Math.pow(visRefC - Math.log(temp / visRefF), 2.0)) * molDens; + // System.out.println("ref visc1 " + viscRef1); + + double temp1 = Math.pow(molDens, 0.1) * (viscRefJ[1] + viscRefJ[2] / Math.pow(temp, 3.0 / 2.0)); + double temp2 = redMolDens * Math.pow(molDens, 0.5) + * (viscRefJ[4] + viscRefJ[5] / temp + viscRefJ[6] / Math.pow(temp, 2.0)); + double temp3 = Math.exp(temp1 + temp2); + double viscRef2 = visRefE * Math.exp(viscRefJ[0] + viscRefJ[3] / temp) * (temp3 - 1.0); + // System.out.println("ref visc2 " + viscRef2); + double refVisc = (viscRefO + viscRef1 + viscRef2) / 1.0e7; + // System.out.println("ref visc " + refVisc); + return refVisc; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodHeavyOil.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodHeavyOil.java index 5c471711b5..3dd5860b87 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodHeavyOil.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodHeavyOil.java @@ -1,5 +1,6 @@ package neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -12,212 +13,231 @@ * @version Method was checked on 2.8.2001 - seems to be correct - Even Solbraa */ public class PFCTViscosityMethodHeavyOil extends Viscosity { - private static final long serialVersionUID = 1000; - - // SystemInterface referenceSystem = new SystemBWRSEos(273.15, 1.01325); - SystemInterface referenceSystem = new SystemSrkEos(273.0, 1.01325); - int phaseTypeNumb = 1; - double[] GVcoef = {-2.090975e5, 2.647269e5, -1.472818e5, 4.716740e4, -9.491872e3, 1.219979e3, - -9.627993e1, 4.274152, -8.141531e-2}; - double visRefA = 1.696985927, visRefB = -0.133372346, visRefC = 1.4, visRefF = 168.0, - visRefE = 1.0, visRefG = 0.0; - double viscRefJ[] = {-1.035060586e1, 1.7571599671e1, -3.0193918656e3, 1.8873011594e2, - 4.2903609488e-2, 1.4529023444e2, 6.1276818706e3}; - double viscRefK[] = {-9.74602, 18.0834, -4126.66, 44.6055, 0.976544, 81.8134, 15649.9}; - - /** - *

- * Constructor for PFCTViscosityMethodHeavyOil. - *

- */ - public PFCTViscosityMethodHeavyOil() {} - - /** - *

- * Constructor for PFCTViscosityMethodHeavyOil. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public PFCTViscosityMethodHeavyOil( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - super(phase); - if (referenceSystem.getNumberOfMoles() < 1e-10) { - referenceSystem.addComponent("methane", 10.0); - referenceSystem.init(0); - } + private static final long serialVersionUID = 1000; + + // SystemInterface referenceSystem = new SystemBWRSEos(273.15, + // ThermodynamicConstantsInterface.referencePressure); + SystemInterface referenceSystem = + new SystemSrkEos(273.0, ThermodynamicConstantsInterface.referencePressure); + + // todo: is this parameter required? + int phaseTypeNumb = 1; + double[] GVcoef = {-2.090975e5, 2.647269e5, -1.472818e5, 4.716740e4, -9.491872e3, 1.219979e3, + -9.627993e1, 4.274152, -8.141531e-2}; + double visRefA = 1.696985927; + + double visRefB = -0.133372346; + + double visRefC = 1.4; + + double visRefF = 168.0; + + double visRefE = 1.0; + + double visRefG = 0.0; + + double[] viscRefJ = {-1.035060586e1, 1.7571599671e1, -3.0193918656e3, 1.8873011594e2, + 4.2903609488e-2, 1.4529023444e2, 6.1276818706e3}; + double[] viscRefK = {-9.74602, 18.0834, -4126.66, 44.6055, 0.976544, 81.8134, 15649.9}; + + /** + *

+ * Constructor for PFCTViscosityMethodHeavyOil. + *

+ */ + public PFCTViscosityMethodHeavyOil() {} + + /** + *

+ * Constructor for PFCTViscosityMethodHeavyOil. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public PFCTViscosityMethodHeavyOil( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + super(phase); + if (referenceSystem.getNumberOfMoles() < 1e-10) { + referenceSystem.addComponent("methane", 10.0); + referenceSystem.init(0); } - - /** {@inheritDoc} */ - @Override - public double calcViscosity() { - this.calcPureComponentViscosity(); - - double Pc0 = referenceSystem.getPhase(0).getComponent(0).getPC(), - Tc0 = referenceSystem.getPhase(0).getComponent(0).getTC(), - M0 = referenceSystem.getPhase(0).getComponent(0).getMolarMass() * 1e3; - - double PCmix = 0.0, TCmix = 0.0, Mmix = 0.0; - double alfa0 = 1.0, alfaMix = 1.0; - double tempTC1 = 0.0, tempTC2 = 0.0; - double tempPC1 = 0.0, tempPC2 = 0.0; - double Mwtemp = 0.0, Mmtemp = 0.0; - - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { - double tempVar = phase.getPhase().getComponent(i).getx() - * phase.getPhase().getComponent(j).getx() - * Math.pow(Math - .pow(phase.getPhase().getComponent(i).getTC() - / phase.getPhase().getComponent(i).getPC(), 1.0 / 3.0) - + Math.pow( - phase.getPhase().getComponent(j).getTC() - / phase.getPhase().getComponent(j).getPC(), - 1.0 / 3.0), - 3.0); - tempTC1 += tempVar * Math.sqrt(phase.getPhase().getComponent(i).getTC() - * phase.getPhase().getComponent(j).getTC()); - tempTC2 += tempVar; - tempPC1 += tempVar * Math.sqrt(phase.getPhase().getComponent(i).getTC() - * phase.getPhase().getComponent(j).getTC()); - tempPC2 += tempVar; - } - Mwtemp += phase.getPhase().getComponent(i).getx() - * Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 2.0); - Mmtemp += phase.getPhase().getComponent(i).getx() - * phase.getPhase().getComponent(i).getMolarMass(); - } - if (tempTC2 < 1e-10) { - return 0.0; - } - PCmix = 8.0 * tempPC1 / (tempPC2 * tempPC2); - TCmix = tempTC1 / tempTC2; - Mmix = (Mmtemp + 1.304e-4 * (Math.pow(Mwtemp / Mmtemp, 2.303) - Math.pow(Mmtemp, 2.303))) - * 1e3; // phase.getPhase().getMolarMass(); - - referenceSystem.setTemperature(phase.getPhase().getTemperature() - * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix); - referenceSystem.setPressure(phase.getPhase().getPressure() - * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix); - referenceSystem.init(1); - // double molDens = 1.0 / - // referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; - double molDens = 1.0 / referenceSystem.getLowestGibbsEnergyPhase().getMolarVolume() * 100.0; - double critMolDens = 10.15;// 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); - double redDens = molDens / critMolDens; - - alfaMix = 1.0 + 7.378e-3 * Math.pow(redDens, 1.847) * Math.pow(Mmix, 0.5173); - alfa0 = 1.0 + 7.378e-3 * Math.pow(redDens, 1.847) - * Math.pow(referenceSystem.getMolarMass() * 1.0e3, 0.5173); - // alfa0 = 1.0 + 8.374e-4 * Math.pow(redDens, 4.265); - // System.out.println("func " + 7.475e-5*Math.pow(16.043, 0.8579)); - double T0 = phase.getPhase().getTemperature() - * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix * alfa0 / alfaMix; - double P0 = phase.getPhase().getPressure() - * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix * alfa0 / alfaMix; - double refVisosity = 0.0; - if (T0 < 75.0) { - double molM = 0.0; - if (Mwtemp / Mmtemp / Mmtemp <= 1.5) { - molM = Mmtemp * 1e3; - } else { - molM = Mmtemp * Math.pow(Mwtemp / Mmtemp / (1.5 * Mmtemp), 0.5) * 1e3; - } - double sign = 1.0; - if (phase.getPhase().getTemperature() > 564.49) { - sign = -1.0; - } - double termm = - -0.07955 - sign * 0.01101 * molM - 371.8 / phase.getPhase().getTemperature() - + 6.215 * molM / phase.getPhase().getTemperature(); - double HOviscosity = Math.pow(10.0, termm) * 1.0e-3; - HOviscosity += HOviscosity * 0.008 * (phase.getPhase().getPressure() - 1.0); - // refVisosity = refVisosity * Math.exp(0.00384 * - // (Math.pow(phase.getPhase().getPressure(),0.8226) - 1.0) / 0.8226); - - if (T0 < 65) { - return HOviscosity; - } - - refVisosity = getRefComponentViscosity(T0, P0); - double LOviscosity = refVisosity * Math.pow(TCmix / Tc0, -1.0 / 6.0) - * Math.pow(PCmix / Pc0, 2.0 / 3.0) * Math.pow(Mmix / M0, 0.5) * alfaMix / alfa0; - return LOviscosity * (1.0 - (75 - T0) / 10.0) + HOviscosity * (75.0 - T0) / 10.0; - } - // System.out.println("m/mix " + Mmix/M0); - // System.out.println("a/amix " + alfaMix/alfa0); - refVisosity = getRefComponentViscosity(T0, P0); - double viscosity = refVisosity * Math.pow(TCmix / Tc0, -1.0 / 6.0) - * Math.pow(PCmix / Pc0, 2.0 / 3.0) * Math.pow(Mmix / M0, 0.5) * alfaMix / alfa0; - // System.out.println("viscosityLO " + viscosity); - - return viscosity; + } + + /** {@inheritDoc} */ + @Override + public double calcViscosity() { + this.calcPureComponentViscosity(); + + double Pc0 = referenceSystem.getPhase(0).getComponent(0).getPC(); + + double Tc0 = referenceSystem.getPhase(0).getComponent(0).getTC(); + double M0 = referenceSystem.getPhase(0).getComponent(0).getMolarMass() * 1e3; + double PCmix = 0.0; + double TCmix = 0.0; + double Mmix = 0.0; + double alfa0 = 1.0; + double alfaMix = 1.0; + double tempTC1 = 0.0; + double tempTC2 = 0.0; + double tempPC1 = 0.0; + double tempPC2 = 0.0; + double Mwtemp = 0.0; + + double Mmtemp = 0.0; + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { + double tempVar = + phase.getPhase().getComponent(i).getx() * phase.getPhase().getComponent(j).getx() + * Math.pow(Math + .pow(phase.getPhase().getComponent(i).getTC() + / phase.getPhase().getComponent(i).getPC(), 1.0 / 3.0) + + Math.pow(phase.getPhase().getComponent(j).getTC() + / phase.getPhase().getComponent(j).getPC(), 1.0 / 3.0), + 3.0); + tempTC1 += tempVar * Math.sqrt( + phase.getPhase().getComponent(i).getTC() * phase.getPhase().getComponent(j).getTC()); + tempTC2 += tempVar; + tempPC1 += tempVar * Math.sqrt( + phase.getPhase().getComponent(i).getTC() * phase.getPhase().getComponent(j).getTC()); + tempPC2 += tempVar; + } + Mwtemp += phase.getPhase().getComponent(i).getx() + * Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 2.0); + Mmtemp += + phase.getPhase().getComponent(i).getx() * phase.getPhase().getComponent(i).getMolarMass(); + } + if (tempTC2 < 1e-10) { + return 0.0; + } + PCmix = 8.0 * tempPC1 / (tempPC2 * tempPC2); + TCmix = tempTC1 / tempTC2; + Mmix = (Mmtemp + 1.304e-4 * (Math.pow(Mwtemp / Mmtemp, 2.303) - Math.pow(Mmtemp, 2.303))) * 1e3; // phase.getPhase().getMolarMass(); + + referenceSystem.setTemperature(phase.getPhase().getTemperature() + * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix); + referenceSystem.setPressure(phase.getPhase().getPressure() + * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix); + referenceSystem.init(1); + + // todo: mixing phasetype and phase index? + // double molDens = 1.0 / + // referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; + double molDens = 1.0 / referenceSystem.getLowestGibbsEnergyPhase().getMolarVolume() * 100.0; + double critMolDens = 10.15; // 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); + double redDens = molDens / critMolDens; + + alfaMix = 1.0 + 7.378e-3 * Math.pow(redDens, 1.847) * Math.pow(Mmix, 0.5173); + alfa0 = 1.0 + 7.378e-3 * Math.pow(redDens, 1.847) + * Math.pow(referenceSystem.getMolarMass() * 1.0e3, 0.5173); + // alfa0 = 1.0 + 8.374e-4 * Math.pow(redDens, 4.265); + // System.out.println("func " + 7.475e-5*Math.pow(16.043, 0.8579)); + double T0 = phase.getPhase().getTemperature() + * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix * alfa0 / alfaMix; + double P0 = phase.getPhase().getPressure() * referenceSystem.getPhase(0).getComponent(0).getPC() + / PCmix * alfa0 / alfaMix; + double refVisosity = 0.0; + if (T0 < 75.0) { + double molM = 0.0; + if (Mwtemp / Mmtemp / Mmtemp <= 1.5) { + molM = Mmtemp * 1e3; + } else { + molM = Mmtemp * Math.pow(Mwtemp / Mmtemp / (1.5 * Mmtemp), 0.5) * 1e3; + } + double sign = 1.0; + if (phase.getPhase().getTemperature() > 564.49) { + sign = -1.0; + } + double termm = -0.07955 - sign * 0.01101 * molM - 371.8 / phase.getPhase().getTemperature() + + 6.215 * molM / phase.getPhase().getTemperature(); + double HOviscosity = Math.pow(10.0, termm) * 1.0e-3; + HOviscosity += HOviscosity * 0.008 * (phase.getPhase().getPressure() - 1.0); + // refVisosity = refVisosity * Math.exp(0.00384 * + // (Math.pow(phase.getPhase().getPressure(),0.8226) - 1.0) / 0.8226); + + if (T0 < 65) { + return HOviscosity; + } + + refVisosity = getRefComponentViscosity(T0, P0); + double LOviscosity = refVisosity * Math.pow(TCmix / Tc0, -1.0 / 6.0) + * Math.pow(PCmix / Pc0, 2.0 / 3.0) * Math.pow(Mmix / M0, 0.5) * alfaMix / alfa0; + return LOviscosity * (1.0 - (75 - T0) / 10.0) + HOviscosity * (75.0 - T0) / 10.0; + } + // System.out.println("m/mix " + Mmix/M0); + // System.out.println("a/amix " + alfaMix/alfa0); + refVisosity = getRefComponentViscosity(T0, P0); + double viscosity = refVisosity * Math.pow(TCmix / Tc0, -1.0 / 6.0) + * Math.pow(PCmix / Pc0, 2.0 / 3.0) * Math.pow(Mmix / M0, 0.5) * alfaMix / alfa0; + // System.out.println("viscosityLO " + viscosity); + + return viscosity; + } + + /** + *

+ * getRefComponentViscosity. + *

+ * + * @param temp a double + * @param pres a double + * @return a double + */ + public double getRefComponentViscosity(double temp, double pres) { + referenceSystem.setTemperature(temp); + // System.out.println("ref temp " + temp); + referenceSystem.setPressure(pres); + // System.out.println("ref pres " + pres); + referenceSystem.init(1); + // referenceSystem.display(); + + // todo: mixing phasetype and phase index? + // double molDens = 1.0 / + // referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; + double molDens = 1.0 / referenceSystem.getLowestGibbsEnergyPhase().getMolarVolume() * 100.0; // mol/dm^3 + // System.out.println("mol dens " + molDens); + double critMolDens = 10.15; // 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); + double redMolDens = (molDens - critMolDens) / critMolDens; + // System.out.println("gv1 " +GVcoef[0]); + + molDens = referenceSystem.getLowestGibbsEnergyPhase().getDensity() * 1e-3; + + double viscRefO = GVcoef[0] * Math.pow(temp, -1.0) + GVcoef[1] * Math.pow(temp, -2.0 / 3.0) + + GVcoef[2] * Math.pow(temp, -1.0 / 3.0) + GVcoef[3] + GVcoef[4] * Math.pow(temp, 1.0 / 3.0) + + GVcoef[5] * Math.pow(temp, 2.0 / 3.0) + GVcoef[6] * temp + + GVcoef[7] * Math.pow(temp, 4.0 / 3.0) + GVcoef[8] * Math.pow(temp, 5.0 / 3.0); + + // System.out.println("ref visc0 " + viscRefO); + double viscRef1 = + (visRefA + visRefB * Math.pow(visRefC - Math.log(temp / visRefF), 2.0)) * molDens; + // System.out.println("ref visc1 " + viscRef1); + + double temp1 = Math.pow(molDens, 0.1) * (viscRefJ[1] + viscRefJ[2] / Math.pow(temp, 3.0 / 2.0)); + double temp2 = redMolDens * Math.pow(molDens, 0.5) + * (viscRefJ[4] + viscRefJ[5] / temp + viscRefJ[6] / Math.pow(temp, 2.0)); + double temp3 = Math.exp(temp1 + temp2); + + double dTfreeze = temp - 90.69; + double HTAN = + (Math.exp(dTfreeze) - Math.exp(-dTfreeze)) / (Math.exp(dTfreeze) + Math.exp(-dTfreeze)); + visRefE = (HTAN + 1.0) / 2.0; + + double viscRef2 = visRefE * Math.exp(viscRefJ[0] + viscRefJ[3] / temp) * (temp3 - 1.0); + if (Double.isNaN(viscRef2)) { + viscRef2 = 0.0; } - /** - *

- * getRefComponentViscosity. - *

- * - * @param temp a double - * @param pres a double - * @return a double - */ - public double getRefComponentViscosity(double temp, double pres) { - referenceSystem.setTemperature(temp); - // System.out.println("ref temp " + temp); - referenceSystem.setPressure(pres); - // System.out.println("ref pres " + pres); - referenceSystem.init(1); - // referenceSystem.display(); - // double molDens = 1.0 / - // referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; - double molDens = 1.0 / referenceSystem.getLowestGibbsEnergyPhase().getMolarVolume() * 100.0; // mol/dm^3 - // System.out.println("mol dens " + molDens); - double critMolDens = 10.15;// 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); - double redMolDens = (molDens - critMolDens) / critMolDens; - // System.out.println("gv1 " +GVcoef[0]); - - molDens = referenceSystem.getLowestGibbsEnergyPhase().getDensity() * 1e-3; - - double viscRefO = GVcoef[0] * Math.pow(temp, -1.0) + GVcoef[1] * Math.pow(temp, -2.0 / 3.0) - + GVcoef[2] * Math.pow(temp, -1.0 / 3.0) + GVcoef[3] - + GVcoef[4] * Math.pow(temp, 1.0 / 3.0) + GVcoef[5] * Math.pow(temp, 2.0 / 3.0) - + GVcoef[6] * temp + GVcoef[7] * Math.pow(temp, 4.0 / 3.0) - + GVcoef[8] * Math.pow(temp, 5.0 / 3.0); - - // System.out.println("ref visc0 " + viscRefO); - double viscRef1 = - (visRefA + visRefB * Math.pow(visRefC - Math.log(temp / visRefF), 2.0)) * molDens; - // System.out.println("ref visc1 " + viscRef1); - - double temp1 = - Math.pow(molDens, 0.1) * (viscRefJ[1] + viscRefJ[2] / Math.pow(temp, 3.0 / 2.0)); - double temp2 = redMolDens * Math.pow(molDens, 0.5) - * (viscRefJ[4] + viscRefJ[5] / temp + viscRefJ[6] / Math.pow(temp, 2.0)); - double temp3 = Math.exp(temp1 + temp2); - - double dTfreeze = temp - 90.69; - double HTAN = (Math.exp(dTfreeze) - Math.exp(-dTfreeze)) - / (Math.exp(dTfreeze) + Math.exp(-dTfreeze)); - visRefE = (HTAN + 1.0) / 2.0; - - double viscRef2 = visRefE * Math.exp(viscRefJ[0] + viscRefJ[3] / temp) * (temp3 - 1.0); - - double temp4 = - Math.pow(molDens, 0.1) * (viscRefK[1] + viscRefK[2] / Math.pow(temp, 3.0 / 2.0)); - double temp5 = redMolDens * Math.pow(molDens, 0.5) - * (viscRefK[4] + viscRefK[5] / temp + viscRefK[6] / Math.pow(temp, 2.0)); - double temp6 = Math.exp(temp4 + temp5); - visRefG = (1.0 - HTAN) / 2.0; - double viscRef3 = visRefG * Math.exp(viscRefK[0] + viscRefK[3] / temp) * (temp6 - 1.0); - - // System.out.println("ref visc2 " + viscRef2); - // System.out.println("ref visc3 " + viscRef3); - double refVisc = (viscRefO + viscRef1 + viscRef2 + viscRef3) / 1.0e7; - // System.out.println("ref visc " + refVisc); - return refVisc; + double temp4 = Math.pow(molDens, 0.1) * (viscRefK[1] + viscRefK[2] / Math.pow(temp, 3.0 / 2.0)); + double temp5 = redMolDens * Math.pow(molDens, 0.5) + * (viscRefK[4] + viscRefK[5] / temp + viscRefK[6] / Math.pow(temp, 2.0)); + double temp6 = Math.exp(temp4 + temp5); + visRefG = (1.0 - HTAN) / 2.0; + double viscRef3 = visRefG * Math.exp(viscRefK[0] + viscRefK[3] / temp) * (temp6 - 1.0); + if (Double.isNaN(viscRef3)) { + viscRef3 = 0.0; } + double refVisc = (viscRefO + viscRef1 + viscRef2 + viscRef3) / 1.0e7; + return refVisc; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodMod86.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodMod86.java index dfc9a16e45..aac367862d 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodMod86.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodMod86.java @@ -1,5 +1,6 @@ package neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -12,181 +13,197 @@ * @version Method was checked on 2.8.2001 - seems to be correct - Even Solbraa */ public class PFCTViscosityMethodMod86 extends Viscosity { - private static final long serialVersionUID = 1000; - - // SystemInterface referenceSystem = new SystemBWRSEos(273.15, 1.01325); - SystemInterface referenceSystem = new SystemSrkEos(273.0, 1.01325); - int phaseTypeNumb = 1; - double[] GVcoef = {-2.090975e5, 2.647269e5, -1.472818e5, 4.716740e4, -9.491872e3, 1.219979e3, - -9.627993e1, 4.274152, -8.141531e-2}; - double visRefA = 1.696985927, visRefB = -0.133372346, visRefC = 1.4, visRefF = 168.0, - visRefE = 1.0, visRefG = 0.0; - double viscRefJ[] = {-1.035060586e1, 1.7571599671e1, -3.0193918656e3, 1.8873011594e2, - 4.2903609488e-2, 1.4529023444e2, 6.1276818706e3}; - double viscRefK[] = {-9.74602, 18.0834, -4126.66, 44.6055, 0.976544, 81.8134, 15649.9}; - - /** - *

- * Constructor for PFCTViscosityMethodMod86. - *

- */ - public PFCTViscosityMethodMod86() {} - - /** - *

- * Constructor for PFCTViscosityMethodMod86. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public PFCTViscosityMethodMod86( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - super(phase); - if (referenceSystem.getNumberOfMoles() < 1e-10) { - referenceSystem.addComponent("methane", 10.0); - referenceSystem.init(0); - } + private static final long serialVersionUID = 1000; + + // SystemInterface referenceSystem = new SystemBWRSEos(273.15, + // ThermodynamicConstantsInterface.referencePressure); + SystemInterface referenceSystem = + new SystemSrkEos(273.0, ThermodynamicConstantsInterface.referencePressure); + + // todo: is this parameter required? + int phaseTypeNumb = 1; + double[] GVcoef = {-2.090975e5, 2.647269e5, -1.472818e5, 4.716740e4, -9.491872e3, 1.219979e3, + -9.627993e1, 4.274152, -8.141531e-2}; + double visRefA = 1.696985927; + + double visRefB = -0.133372346; + + double visRefC = 1.4; + + double visRefF = 168.0; + + double visRefE = 1.0; + + double visRefG = 0.0; + + double[] viscRefJ = {-1.035060586e1, 1.7571599671e1, -3.0193918656e3, 1.8873011594e2, + 4.2903609488e-2, 1.4529023444e2, 6.1276818706e3}; + double[] viscRefK = {-9.74602, 18.0834, -4126.66, 44.6055, 0.976544, 81.8134, 15649.9}; + + /** + *

+ * Constructor for PFCTViscosityMethodMod86. + *

+ */ + public PFCTViscosityMethodMod86() {} + + /** + *

+ * Constructor for PFCTViscosityMethodMod86. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public PFCTViscosityMethodMod86( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + super(phase); + if (referenceSystem.getNumberOfMoles() < 1e-10) { + referenceSystem.addComponent("methane", 10.0); + referenceSystem.init(0); } - - /** {@inheritDoc} */ - @Override - public double calcViscosity() { - double Pc0 = referenceSystem.getPhase(0).getComponent(0).getPC(), - Tc0 = referenceSystem.getPhase(0).getComponent(0).getTC(), - M0 = referenceSystem.getPhase(0).getComponent(0).getMolarMass() * 1e3; - - double PCmix = 0.0, TCmix = 0.0, Mmix = 0.0; - double alfa0 = 1.0, alfaMix = 1.0; - double tempTC1 = 0.0, tempTC2 = 0.0; - double tempPC1 = 0.0, tempPC2 = 0.0; - double Mwtemp = 0.0, Mmtemp = 0.0; - - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { - double tempVar = phase.getPhase().getComponent(i).getx() - * phase.getPhase().getComponent(j).getx() - * Math.pow(Math - .pow(phase.getPhase().getComponent(i).getTC() - / phase.getPhase().getComponent(i).getPC(), 1.0 / 3.0) - + Math.pow( - phase.getPhase().getComponent(j).getTC() - / phase.getPhase().getComponent(j).getPC(), - 1.0 / 3.0), - 3.0); - tempTC1 += tempVar * Math.sqrt(phase.getPhase().getComponent(i).getTC() - * phase.getPhase().getComponent(j).getTC()); - tempTC2 += tempVar; - tempPC1 += tempVar * Math.sqrt(phase.getPhase().getComponent(i).getTC() - * phase.getPhase().getComponent(j).getTC()); - tempPC2 += tempVar; - } - Mwtemp += phase.getPhase().getComponent(i).getx() - * Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 2.0); - Mmtemp += phase.getPhase().getComponent(i).getx() - * phase.getPhase().getComponent(i).getMolarMass(); - } - if (tempTC2 < 1e-10) { - return 0.0; - } - PCmix = 8.0 * tempPC1 / (tempPC2 * tempPC2); - TCmix = tempTC1 / tempTC2; - Mmix = (Mmtemp + 1.304e-4 * (Math.pow(Mwtemp / Mmtemp, 2.303) - Math.pow(Mmtemp, 2.303))) - * 1e3; // phase.getPhase().getMolarMass(); - - referenceSystem.setTemperature(phase.getPhase().getTemperature() - * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix); - referenceSystem.setPressure(phase.getPhase().getPressure() - * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix); - referenceSystem.init(1); - // double molDens = 1.0 / - // referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; - double molDens = 1.0 / referenceSystem.getLowestGibbsEnergyPhase().getMolarVolume() * 100.0; - double critMolDens = 10.15;// 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); - double redDens = molDens / critMolDens; - - alfaMix = 1.0 + 7.378e-3 * Math.pow(redDens, 1.847) * Math.pow(Mmix, 0.5173); - alfa0 = 1.0 + 7.378e-3 * Math.pow(redDens, 1.847) - * Math.pow(referenceSystem.getMolarMass() * 1.0e3, 0.5173); - // alfa0 = 1.0 + 8.374e-4 * Math.pow(redDens, 4.265); - // System.out.println("func " + 7.475e-5*Math.pow(16.043, 0.8579)); - double T0 = phase.getPhase().getTemperature() - * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix * alfa0 / alfaMix; - double P0 = phase.getPhase().getPressure() - * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix * alfa0 / alfaMix; - - double refVisosity = getRefComponentViscosity(T0, P0); - // System.out.println("m/mix " + Mmix/M0); - // System.out.println("a/amix " + alfaMix/alfa0); - double viscosity = refVisosity * Math.pow(TCmix / Tc0, -1.0 / 6.0) - * Math.pow(PCmix / Pc0, 2.0 / 3.0) * Math.pow(Mmix / M0, 0.5) * alfaMix / alfa0; - // System.out.println("viscosity " + refVisosity); - return viscosity; + } + + /** {@inheritDoc} */ + @Override + public double calcViscosity() { + double Pc0 = referenceSystem.getPhase(0).getComponent(0).getPC(); + + double Tc0 = referenceSystem.getPhase(0).getComponent(0).getTC(); + double M0 = referenceSystem.getPhase(0).getComponent(0).getMolarMass() * 1e3; + double PCmix = 0.0; + double TCmix = 0.0; + double Mmix = 0.0; + double alfa0 = 1.0; + double alfaMix = 1.0; + double tempTC1 = 0.0; + double tempTC2 = 0.0; + double tempPC1 = 0.0; + double tempPC2 = 0.0; + double Mwtemp = 0.0; + + double Mmtemp = 0.0; + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + for (int j = 0; j < phase.getPhase().getNumberOfComponents(); j++) { + double tempVar = + phase.getPhase().getComponent(i).getx() * phase.getPhase().getComponent(j).getx() + * Math.pow(Math + .pow(phase.getPhase().getComponent(i).getTC() + / phase.getPhase().getComponent(i).getPC(), 1.0 / 3.0) + + Math.pow(phase.getPhase().getComponent(j).getTC() + / phase.getPhase().getComponent(j).getPC(), 1.0 / 3.0), + 3.0); + tempTC1 += tempVar * Math.sqrt( + phase.getPhase().getComponent(i).getTC() * phase.getPhase().getComponent(j).getTC()); + tempTC2 += tempVar; + tempPC1 += tempVar * Math.sqrt( + phase.getPhase().getComponent(i).getTC() * phase.getPhase().getComponent(j).getTC()); + tempPC2 += tempVar; + } + Mwtemp += phase.getPhase().getComponent(i).getx() + * Math.pow(phase.getPhase().getComponent(i).getMolarMass(), 2.0); + Mmtemp += + phase.getPhase().getComponent(i).getx() * phase.getPhase().getComponent(i).getMolarMass(); } - - /** - *

- * getRefComponentViscosity. - *

- * - * @param temp a double - * @param pres a double - * @return a double - */ - public double getRefComponentViscosity(double temp, double pres) { - referenceSystem.setTemperature(temp); - // System.out.println("ref temp " + temp); - referenceSystem.setPressure(pres); - // System.out.println("ref pres " + pres); - referenceSystem.init(1); - // referenceSystem.display(); - // double molDens = 1.0 / - // referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; - double molDens = 1.0 / referenceSystem.getLowestGibbsEnergyPhase().getMolarVolume() * 100.0; // mol/dm^3 - // System.out.println("mol dens " + molDens); - double critMolDens = 10.15;// 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); - double redMolDens = (molDens - critMolDens) / critMolDens; - // System.out.println("gv1 " +GVcoef[0]); - - molDens = referenceSystem.getLowestGibbsEnergyPhase().getDensity() * 1e-3; - - double viscRefO = GVcoef[0] * Math.pow(temp, -1.0) + GVcoef[1] * Math.pow(temp, -2.0 / 3.0) - + GVcoef[2] * Math.pow(temp, -1.0 / 3.0) + GVcoef[3] - + GVcoef[4] * Math.pow(temp, 1.0 / 3.0) + GVcoef[5] * Math.pow(temp, 2.0 / 3.0) - + GVcoef[6] * temp + GVcoef[7] * Math.pow(temp, 4.0 / 3.0) - + GVcoef[8] * Math.pow(temp, 5.0 / 3.0); - - // System.out.println("ref visc0 " + viscRefO); - double viscRef1 = - (visRefA + visRefB * Math.pow(visRefC - Math.log(temp / visRefF), 2.0)) * molDens; - // System.out.println("ref visc1 " + viscRef1); - - double temp1 = - Math.pow(molDens, 0.1) * (viscRefJ[1] + viscRefJ[2] / Math.pow(temp, 3.0 / 2.0)); - double temp2 = redMolDens * Math.pow(molDens, 0.5) - * (viscRefJ[4] + viscRefJ[5] / temp + viscRefJ[6] / Math.pow(temp, 2.0)); - double temp3 = Math.exp(temp1 + temp2); - - double dTfreeze = temp - 90.69; - double HTAN = (Math.exp(dTfreeze) - Math.exp(-dTfreeze)) - / (Math.exp(dTfreeze) + Math.exp(-dTfreeze)); - visRefE = (HTAN + 1.0) / 2.0; - - double viscRef2 = visRefE * Math.exp(viscRefJ[0] + viscRefJ[3] / temp) * (temp3 - 1.0); - - double temp4 = - Math.pow(molDens, 0.1) * (viscRefK[1] + viscRefK[2] / Math.pow(temp, 3.0 / 2.0)); - double temp5 = redMolDens * Math.pow(molDens, 0.5) - * (viscRefK[4] + viscRefK[5] / temp + viscRefK[6] / Math.pow(temp, 2.0)); - double temp6 = Math.exp(temp4 + temp5); - visRefG = (1.0 - HTAN) / 2.0; - double viscRef3 = visRefG * Math.exp(viscRefK[0] + viscRefK[3] / temp) * (temp6 - 1.0); - - System.out.println("ref visc2 " + viscRef2); - System.out.println("ref visc3 " + viscRef3); - double refVisc = (viscRefO + viscRef1 + viscRef2 + viscRef3) / 1.0e7; - // System.out.println("ref visc " + refVisc); - return refVisc; + if (tempTC2 < 1e-10) { + return 0.0; } + PCmix = 8.0 * tempPC1 / (tempPC2 * tempPC2); + TCmix = tempTC1 / tempTC2; + Mmix = (Mmtemp + 1.304e-4 * (Math.pow(Mwtemp / Mmtemp, 2.303) - Math.pow(Mmtemp, 2.303))) * 1e3; // phase.getPhase().getMolarMass(); + + referenceSystem.setTemperature(phase.getPhase().getTemperature() + * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix); + referenceSystem.setPressure(phase.getPhase().getPressure() + * referenceSystem.getPhase(0).getComponent(0).getPC() / PCmix); + referenceSystem.init(1); + // todo: mixing phasetype and phase index? + // double molDens = 1.0 / + // referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; + double molDens = 1.0 / referenceSystem.getLowestGibbsEnergyPhase().getMolarVolume() * 100.0; + double critMolDens = 10.15; // 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); + double redDens = molDens / critMolDens; + + alfaMix = 1.0 + 7.378e-3 * Math.pow(redDens, 1.847) * Math.pow(Mmix, 0.5173); + alfa0 = 1.0 + 7.378e-3 * Math.pow(redDens, 1.847) + * Math.pow(referenceSystem.getMolarMass() * 1.0e3, 0.5173); + // alfa0 = 1.0 + 8.374e-4 * Math.pow(redDens, 4.265); + // System.out.println("func " + 7.475e-5*Math.pow(16.043, 0.8579)); + double T0 = phase.getPhase().getTemperature() + * referenceSystem.getPhase(0).getComponent(0).getTC() / TCmix * alfa0 / alfaMix; + double P0 = phase.getPhase().getPressure() * referenceSystem.getPhase(0).getComponent(0).getPC() + / PCmix * alfa0 / alfaMix; + + double refVisosity = getRefComponentViscosity(T0, P0); + // System.out.println("m/mix " + Mmix/M0); + // System.out.println("a/amix " + alfaMix/alfa0); + double viscosity = refVisosity * Math.pow(TCmix / Tc0, -1.0 / 6.0) + * Math.pow(PCmix / Pc0, 2.0 / 3.0) * Math.pow(Mmix / M0, 0.5) * alfaMix / alfa0; + // System.out.println("viscosity " + refVisosity); + return viscosity; + } + + /** + *

+ * getRefComponentViscosity. + *

+ * + * @param temp a double + * @param pres a double + * @return a double + */ + public double getRefComponentViscosity(double temp, double pres) { + referenceSystem.setTemperature(temp); + // System.out.println("ref temp " + temp); + referenceSystem.setPressure(pres); + // System.out.println("ref pres " + pres); + referenceSystem.init(1); + // referenceSystem.display(); + // todo: mixing phasetype and phase index? + // double molDens = 1.0 / + // referenceSystem.getPhase(phaseTypeNumb).getMolarVolume() * 100.0; + double molDens = 1.0 / referenceSystem.getLowestGibbsEnergyPhase().getMolarVolume() * 100.0; // mol/dm^3 + // System.out.println("mol dens " + molDens); + double critMolDens = 10.15; // 1.0/referenceSystem.getPhase(0).getComponent(0).getCriticalVolume(); + double redMolDens = (molDens - critMolDens) / critMolDens; + // System.out.println("gv1 " +GVcoef[0]); + + molDens = referenceSystem.getLowestGibbsEnergyPhase().getDensity() * 1e-3; + + double viscRefO = GVcoef[0] * Math.pow(temp, -1.0) + GVcoef[1] * Math.pow(temp, -2.0 / 3.0) + + GVcoef[2] * Math.pow(temp, -1.0 / 3.0) + GVcoef[3] + GVcoef[4] * Math.pow(temp, 1.0 / 3.0) + + GVcoef[5] * Math.pow(temp, 2.0 / 3.0) + GVcoef[6] * temp + + GVcoef[7] * Math.pow(temp, 4.0 / 3.0) + GVcoef[8] * Math.pow(temp, 5.0 / 3.0); + + // System.out.println("ref visc0 " + viscRefO); + double viscRef1 = + (visRefA + visRefB * Math.pow(visRefC - Math.log(temp / visRefF), 2.0)) * molDens; + // System.out.println("ref visc1 " + viscRef1); + + double temp1 = Math.pow(molDens, 0.1) * (viscRefJ[1] + viscRefJ[2] / Math.pow(temp, 3.0 / 2.0)); + double temp2 = redMolDens * Math.pow(molDens, 0.5) + * (viscRefJ[4] + viscRefJ[5] / temp + viscRefJ[6] / Math.pow(temp, 2.0)); + double temp3 = Math.exp(temp1 + temp2); + + double dTfreeze = temp - 90.69; + double HTAN = + (Math.exp(dTfreeze) - Math.exp(-dTfreeze)) / (Math.exp(dTfreeze) + Math.exp(-dTfreeze)); + visRefE = (HTAN + 1.0) / 2.0; + + double viscRef2 = visRefE * Math.exp(viscRefJ[0] + viscRefJ[3] / temp) * (temp3 - 1.0); + + double temp4 = Math.pow(molDens, 0.1) * (viscRefK[1] + viscRefK[2] / Math.pow(temp, 3.0 / 2.0)); + double temp5 = redMolDens * Math.pow(molDens, 0.5) + * (viscRefK[4] + viscRefK[5] / temp + viscRefK[6] / Math.pow(temp, 2.0)); + double temp6 = Math.exp(temp4 + temp5); + visRefG = (1.0 - HTAN) / 2.0; + double viscRef3 = visRefG * Math.exp(viscRefK[0] + viscRefK[3] / temp) * (temp6 - 1.0); + + System.out.println("ref visc2 " + viscRef2); + System.out.println("ref visc3 " + viscRef3); + double refVisc = (viscRefO + viscRef1 + viscRef2 + viscRef3) / 1.0e7; + // System.out.println("ref visc " + refVisc); + return refVisc; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/Viscosity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/Viscosity.java index 4f99f07525..a796889319 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/Viscosity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/Viscosity.java @@ -4,122 +4,128 @@ import org.apache.logging.log4j.Logger; /** + * Abstract class for Viscosity property. * * @author Even Solbraa */ abstract class Viscosity extends - neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.CommonPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Viscosity.class); - public double[] pureComponentViscosity; + neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.CommonPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Viscosity.class); - /** - *

- * Constructor for Viscosity. - *

- */ - public Viscosity() {} + public double[] pureComponentViscosity; - /** - *

- * Constructor for Viscosity. - *

- * - * @param phase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Viscosity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - super(phase); - pureComponentViscosity = new double[phase.getPhase().getNumberOfComponents()]; - } + /** + *

+ * Constructor for Viscosity. + *

+ */ + public Viscosity() {} - /** - *

- * calcPureComponentViscosity. - *

- */ - public void calcPureComponentViscosity() { - pureComponentViscosity = new double[phase.getPhase().getNumberOfComponents()]; - for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { - if (phase.getPhase().getTemperature() > phase.getPhase().getComponents()[i].getTC()) { - pureComponentViscosity[i] = 5.0e-1; - } else if (phase.getPhase().getComponents()[i].getLiquidViscosityModel() == 1) { - pureComponentViscosity[i] = phase.getPhase().getComponents()[i] - .getLiquidViscosityParameter(0) - * Math.pow(phase.getPhase().getTemperature(), - phase.getPhase().getComponents()[i].getLiquidViscosityParameter(1)); - } else if (phase.getPhase().getComponents()[i].getLiquidViscosityModel() == 2) { - } else if (phase.getPhase().getComponents()[i].getLiquidViscosityModel() == 3) { - pureComponentViscosity[i] = - Math.exp(phase.getPhase().getComponents()[i].getLiquidViscosityParameter(0) - + phase.getPhase().getComponents()[i].getLiquidViscosityParameter(1) - / phase.getPhase().getTemperature() - + phase.getPhase().getComponents()[i].getLiquidViscosityParameter(2) - * phase.getPhase().getTemperature() - + phase.getPhase().getComponents()[i].getLiquidViscosityParameter(3) - * Math.pow(phase.getPhase().getTemperature(), 2)); - } else if (phase.getPhase().getComponents()[i].getLiquidViscosityModel() == 4) { - pureComponentViscosity[i] = Math.pow(10, - phase.getPhase().getComponents()[i].getLiquidViscosityParameter(0) - * (1.0 / phase.getPhase().getTemperature() - - 1.0 / phase.getPhase().getComponents()[i] - .getLiquidViscosityParameter(1)));// phase.getPhase().getComponents()[i].getLiquidViscosityParameter(2)*phase.getPhase().getTemperature()+phase.getPhase().getComponents()[i].getLiquidViscosityParameter(3)/phase.getPhase().getTemperature()+phase.getPhase().getComponents()[i].getLiquidViscosityParameter(3)*Math.pow(phase.getPhase().getTemperature(),2)); - } else { - // System.out.println("no pure component viscosity model defined for component " - // + phase.getPhase().getComponents()[i].getComponentName()); - pureComponentViscosity[i] = 7.0e-1; - } - pureComponentViscosity[i] *= ((getViscosityPressureCorrection(i) + 1.0) / 2.0); - // System.out.println("pure comp viscosity " + pureComponentViscosity[i] + " - // pressure cor " + getViscosityPressureCorrection(i)); - } - } + /** + *

+ * Constructor for Viscosity. + *

+ * + * @param phase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Viscosity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + super(phase); + pureComponentViscosity = new double[phase.getPhase().getNumberOfComponents()]; + } - /** - *

- * getViscosityPressureCorrection. - *

- * - * @param i a int - * @return a double - */ - public double getViscosityPressureCorrection(int i) { - double TR = phase.getPhase().getTemperature() / phase.getPhase().getComponent(i).getTC(); - if (TR > 1) { - return 1.0; - } - double deltaPr = - (phase.getPhase().getPressure() - 0.0) / phase.getPhase().getComponent(i).getPC(); - double A = 0.9991 - (4.674 * 1e-4 / (1.0523 * Math.pow(TR, -0.03877) - 1.0513)); - double D = (0.3257 / Math.pow((1.0039 - Math.pow(TR, 2.573)), 0.2906)) - 0.2086; - double C = -0.07921 + 2.1616 * TR - 13.4040 * TR * TR + 44.1706 * Math.pow(TR, 3) - - 84.8291 * Math.pow(TR, 4) + 96.1209 * Math.pow(TR, 5) - 59.8127 * Math.pow(TR, 6) - + 15.6719 * Math.pow(TR, 7); - return (1.0 + D * Math.pow(deltaPr / 2.118, A)) - / (1.0 + C * phase.getPhase().getComponent(i).getAcentricFactor() * deltaPr); + /** + *

+ * calcPureComponentViscosity. + *

+ */ + public void calcPureComponentViscosity() { + pureComponentViscosity = new double[phase.getPhase().getNumberOfComponents()]; + for (int i = 0; i < phase.getPhase().getNumberOfComponents(); i++) { + if (phase.getPhase().getTemperature() > phase.getPhase().getComponents()[i].getTC()) { + pureComponentViscosity[i] = 5.0e-1; + } else if (phase.getPhase().getComponents()[i].getLiquidViscosityModel() == 1) { + pureComponentViscosity[i] = + phase.getPhase().getComponents()[i].getLiquidViscosityParameter(0) + * Math.pow(phase.getPhase().getTemperature(), + phase.getPhase().getComponents()[i].getLiquidViscosityParameter(1)); + } else if (phase.getPhase().getComponents()[i].getLiquidViscosityModel() == 2) { + } else if (phase.getPhase().getComponents()[i].getLiquidViscosityModel() == 3) { + pureComponentViscosity[i] = + Math.exp(phase.getPhase().getComponents()[i].getLiquidViscosityParameter(0) + + phase.getPhase().getComponents()[i].getLiquidViscosityParameter(1) + / phase.getPhase().getTemperature() + + phase.getPhase().getComponents()[i].getLiquidViscosityParameter(2) + * phase.getPhase().getTemperature() + + phase.getPhase().getComponents()[i].getLiquidViscosityParameter(3) + * Math.pow(phase.getPhase().getTemperature(), 2)); + } else if (phase.getPhase().getComponents()[i].getLiquidViscosityModel() == 4) { + pureComponentViscosity[i] = Math.pow(10, + phase.getPhase().getComponents()[i].getLiquidViscosityParameter(0) + * (1.0 / phase.getPhase().getTemperature() + - 1.0 / phase.getPhase().getComponents()[i].getLiquidViscosityParameter(1))); + // phase.getPhase().getComponents()[i].getLiquidViscosityParameter(2) * + // phase.getPhase().getTemperature()+phase.getPhase().getComponents()[i].getLiquidViscosityParameter(3) + // / + // phase.getPhase().getTemperature()+phase.getPhase().getComponents()[i].getLiquidViscosityParameter(3) + // * Math.pow(phase.getPhase().getTemperature(),2)); + } else { + // System.out.println("no pure component viscosity model defined for component " + // + phase.getPhase().getComponents()[i].getComponentName()); + pureComponentViscosity[i] = 7.0e-1; + } + pureComponentViscosity[i] *= ((getViscosityPressureCorrection(i) + 1.0) / 2.0); + // System.out.println("pure comp viscosity " + pureComponentViscosity[i] + " + // pressure cor " + getViscosityPressureCorrection(i)); } + } - /** {@inheritDoc} */ - @Override - public double getPureComponentViscosity(int i) { - return pureComponentViscosity[i]; + /** + *

+ * getViscosityPressureCorrection. + *

+ * + * @param i a int + * @return a double + */ + public double getViscosityPressureCorrection(int i) { + double TR = phase.getPhase().getTemperature() / phase.getPhase().getComponent(i).getTC(); + if (TR > 1) { + return 1.0; } + double deltaPr = + (phase.getPhase().getPressure() - 0.0) / phase.getPhase().getComponent(i).getPC(); + double A = 0.9991 - (4.674 * 1e-4 / (1.0523 * Math.pow(TR, -0.03877) - 1.0513)); + double D = (0.3257 / Math.pow((1.0039 - Math.pow(TR, 2.573)), 0.2906)) - 0.2086; + double C = -0.07921 + 2.1616 * TR - 13.4040 * TR * TR + 44.1706 * Math.pow(TR, 3) + - 84.8291 * Math.pow(TR, 4) + 96.1209 * Math.pow(TR, 5) - 59.8127 * Math.pow(TR, 6) + + 15.6719 * Math.pow(TR, 7); + return (1.0 + D * Math.pow(deltaPr / 2.118, A)) + / (1.0 + C * phase.getPhase().getComponent(i).getAcentricFactor() * deltaPr); + } - /** {@inheritDoc} */ - @Override - public Viscosity clone() { - Viscosity properties = null; + /** {@inheritDoc} */ + @Override + public double getPureComponentViscosity(int i) { + return pureComponentViscosity[i]; + } - try { - properties = (Viscosity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public Viscosity clone() { + Viscosity properties = null; - return properties; + try { + properties = (Viscosity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return properties; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/GasPhysicalPropertyMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/GasPhysicalPropertyMethod.java index e28076bf48..679e4b21c5 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/GasPhysicalPropertyMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/GasPhysicalPropertyMethod.java @@ -9,65 +9,65 @@ * @version $Id: $Id */ public class GasPhysicalPropertyMethod - extends neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethod { - private static final long serialVersionUID = 1000; + extends neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethod { + private static final long serialVersionUID = 1000; - protected neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase; - public double binaryMolecularDiameter[][]; - public double binaryEnergyParameter[][]; - public double binaryMolecularMass[][]; + protected neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase; + public double[][] binaryMolecularDiameter; + public double[][] binaryEnergyParameter; + public double[][] binaryMolecularMass; - /** - *

- * Constructor for GasPhysicalPropertyMethod. - *

- */ - public GasPhysicalPropertyMethod() { - super(); - } + /** + *

+ * Constructor for GasPhysicalPropertyMethod. + *

+ */ + public GasPhysicalPropertyMethod() { + super(); + } - /** - *

- * Constructor for GasPhysicalPropertyMethod. - *

- * - * @param gasPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public GasPhysicalPropertyMethod( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { - super(); - this.gasPhase = gasPhase; - binaryMolecularDiameter = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase - .getPhase().getNumberOfComponents()]; - binaryMolecularMass = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase - .getPhase().getNumberOfComponents()]; - binaryEnergyParameter = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase - .getPhase().getNumberOfComponents()]; + /** + *

+ * Constructor for GasPhysicalPropertyMethod. + *

+ * + * @param gasPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public GasPhysicalPropertyMethod( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { + super(); + this.gasPhase = gasPhase; + binaryMolecularDiameter = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase + .getPhase().getNumberOfComponents()]; + binaryMolecularMass = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase + .getPhase().getNumberOfComponents()]; + binaryEnergyParameter = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase + .getPhase().getNumberOfComponents()]; - for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { - for (int j = 0; j < gasPhase.getPhase().getNumberOfComponents(); j++) { - binaryMolecularMass[i][j] = 2.0 * Math.pow( - (1.0 / gasPhase.getPhase().getComponents()[i].getMolarMass() / 1000.0 + 1.0 - / gasPhase.getPhase().getComponents()[j].getMolarMass() / 1000.0), - -1.0); - binaryMolecularDiameter[i][j] = (gasPhase.getPhase().getComponents()[i] - .getLennardJonesMolecularDiameter() - + gasPhase.getPhase().getComponents()[j].getLennardJonesMolecularDiameter()) - / 2.0; - binaryEnergyParameter[i][j] = Math.pow(gasPhase.getPhase().getComponents()[i] - .getLennardJonesEnergyParameter() - * gasPhase.getPhase().getComponents()[j].getLennardJonesEnergyParameter(), - 0.5); - } - } + for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { + for (int j = 0; j < gasPhase.getPhase().getNumberOfComponents(); j++) { + binaryMolecularMass[i][j] = + 2.0 * Math + .pow( + (1.0 / gasPhase.getPhase().getComponents()[i].getMolarMass() / 1000.0 + + 1.0 / gasPhase.getPhase().getComponents()[j].getMolarMass() / 1000.0), + -1.0); + binaryMolecularDiameter[i][j] = + (gasPhase.getPhase().getComponents()[i].getLennardJonesMolecularDiameter() + + gasPhase.getPhase().getComponents()[j].getLennardJonesMolecularDiameter()) / 2.0; + binaryEnergyParameter[i][j] = + Math.pow(gasPhase.getPhase().getComponents()[i].getLennardJonesEnergyParameter() + * gasPhase.getPhase().getComponents()[j].getLennardJonesEnergyParameter(), 0.5); + } } + } - /** {@inheritDoc} */ - @Override - public void setPhase( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - this.gasPhase = phase; - } + /** {@inheritDoc} */ + @Override + public void setPhase( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + this.gasPhase = phase; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/conductivity/ChungConductivityMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/conductivity/ChungConductivityMethod.java index 15ce2ef646..18e8b9516b 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/conductivity/ChungConductivityMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/conductivity/ChungConductivityMethod.java @@ -9,93 +9,92 @@ * @version $Id: $Id */ public class ChungConductivityMethod extends Conductivity { - private static final long serialVersionUID = 1000; - double conductivity = 0; - public double[] pureComponentConductivity; + private static final long serialVersionUID = 1000; + double conductivity = 0; + public double[] pureComponentConductivity; - /** - *

- * Constructor for ChungConductivityMethod. - *

- */ - public ChungConductivityMethod() {} + /** + *

+ * Constructor for ChungConductivityMethod. + *

+ */ + public ChungConductivityMethod() {} - /** - *

- * Constructor for ChungConductivityMethod. - *

- * - * @param gasPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public ChungConductivityMethod( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { - super(gasPhase); - pureComponentConductivity = new double[gasPhase.getPhase().getNumberOfComponents()]; - } + /** + *

+ * Constructor for ChungConductivityMethod. + *

+ * + * @param gasPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public ChungConductivityMethod( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { + super(gasPhase); + pureComponentConductivity = new double[gasPhase.getPhase().getNumberOfComponents()]; + } - /** {@inheritDoc} */ - @Override - public double calcConductivity() { - calcPureComponentConductivity(); - double tempVar = 0; - conductivity = 0; + /** {@inheritDoc} */ + @Override + public double calcConductivity() { + calcPureComponentConductivity(); + double tempVar = 0; + conductivity = 0; - for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { - tempVar = 0; - for (int j = 0; j < gasPhase.getPhase().getNumberOfComponents(); j++) { - // Aij from Mason Saxena method - double Aij = 1.0 - * Math.pow(1.0 + Math - .sqrt(pureComponentConductivity[i] / pureComponentConductivity[j]) - * Math.pow(gasPhase.getPhase().getComponents()[i].getMolarMass() - / gasPhase.getPhase().getComponents()[j].getMolarMass(), - 1.0 / 4.0), - 2.0) - / Math.sqrt( - 8.0 * (1.0 + gasPhase.getPhase().getComponents()[i].getMolarMass() - / gasPhase.getPhase().getComponents()[j].getMolarMass())); - tempVar += gasPhase.getPhase().getComponents()[j].getx() * Aij; - } - conductivity += gasPhase.getPhase().getComponents()[i].getx() - * pureComponentConductivity[i] / tempVar; - } - // System.out.println("conductivity " + conductivity); - return conductivity; + for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { + tempVar = 0; + for (int j = 0; j < gasPhase.getPhase().getNumberOfComponents(); j++) { + // Aij from Mason Saxena method + double Aij = 1.0 + * Math.pow(1.0 + Math.sqrt(pureComponentConductivity[i] / pureComponentConductivity[j]) + * Math.pow(gasPhase.getPhase().getComponents()[i].getMolarMass() + / gasPhase.getPhase().getComponents()[j].getMolarMass(), 1.0 / 4.0), + 2.0) + / Math.sqrt(8.0 * (1.0 + gasPhase.getPhase().getComponents()[i].getMolarMass() + / gasPhase.getPhase().getComponents()[j].getMolarMass())); + tempVar += gasPhase.getPhase().getComponents()[j].getx() * Aij; + } + conductivity += + gasPhase.getPhase().getComponents()[i].getx() * pureComponentConductivity[i] / tempVar; } + // System.out.println("conductivity " + conductivity); + return conductivity; + } - /** - *

- * calcPureComponentConductivity. - *

- */ - public void calcPureComponentConductivity() { - double tempVar2 = 0; - double tempBeta = 0, tempAlpha = 0, tempZ = 0; + /** + *

+ * calcPureComponentConductivity. + *

+ */ + public void calcPureComponentConductivity() { + double tempVar2 = 0; + double tempBeta = 0; - for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { - // pure component conductivity - tempVar2 = gasPhase.getPhase().getComponents()[i] - .getCv0(gasPhase.getPhase().getTemperature()) / R - 1.5; - tempBeta = 0.7862 - 0.7109 * gasPhase.getPhase().getComponents()[i].getAcentricFactor() - + 1.3168 * Math.pow(gasPhase.getPhase().getComponents()[i].getAcentricFactor(), - 2.0); - tempZ = 2.0 + 10.5 * Math.pow(gasPhase.getPhase().getTemperature() - / gasPhase.getPhase().getComponents()[i].getTC(), 2.0); - tempAlpha = 1.0 - + tempVar2 * ((0.215 + 0.28288 * tempVar2 - 1.061 * tempBeta + 0.26665 * tempZ) - / (0.6366 + tempBeta * tempZ + 1.061 * tempVar2 * tempBeta)); - pureComponentConductivity[i] = - 1.0 / gasPhase.getPhase().getComponents()[i].getMolarMass() - * gasPhase.getPureComponentViscosity(i) * 1e-7 - * gasPhase.getPhase().getComponents()[i] - .getCv0(gasPhase.getPhase().getTemperature()) - * 3.75 * tempAlpha / (gasPhase.getPhase().getComponents()[i] - .getCv0(gasPhase.getPhase().getTemperature()) / R); - if (pureComponentConductivity[i] < 1e-50) { - pureComponentConductivity[i] = 1e-50; - } - } + double tempAlpha = 0; + double tempZ = 0; + for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { + // pure component conductivity + tempVar2 = + gasPhase.getPhase().getComponents()[i].getCv0(gasPhase.getPhase().getTemperature()) / R + - 1.5; + tempBeta = 0.7862 - 0.7109 * gasPhase.getPhase().getComponents()[i].getAcentricFactor() + + 1.3168 * Math.pow(gasPhase.getPhase().getComponents()[i].getAcentricFactor(), 2.0); + tempZ = 2.0 + 10.5 * Math.pow( + gasPhase.getPhase().getTemperature() / gasPhase.getPhase().getComponents()[i].getTC(), + 2.0); + tempAlpha = + 1.0 + tempVar2 * ((0.215 + 0.28288 * tempVar2 - 1.061 * tempBeta + 0.26665 * tempZ) + / (0.6366 + tempBeta * tempZ + 1.061 * tempVar2 * tempBeta)); + pureComponentConductivity[i] = 1.0 / gasPhase.getPhase().getComponents()[i].getMolarMass() + * gasPhase.getPureComponentViscosity(i) * 1e-7 + * gasPhase.getPhase().getComponents()[i].getCv0(gasPhase.getPhase().getTemperature()) + * 3.75 * tempAlpha + / (gasPhase.getPhase().getComponents()[i].getCv0(gasPhase.getPhase().getTemperature()) + / R); + if (pureComponentConductivity[i] < 1e-50) { + pureComponentConductivity[i] = 1e-50; + } } + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/conductivity/Conductivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/conductivity/Conductivity.java index 4d6af41724..b6cc542e62 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/conductivity/Conductivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/conductivity/Conductivity.java @@ -3,56 +3,58 @@ * * Created on 1. november 2000, 19:00 */ + package neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.conductivity; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** + * Abstract class Conductivity. * * @author Even Solbraa */ abstract class Conductivity extends - neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.GasPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Conductivity.class); - - double conductivity = 0; - - /** - *

- * Constructor for Conductivity. - *

- */ - public Conductivity() {} - - /** - *

- * Constructor for Conductivity. - *

- * - * @param gasPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Conductivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { - super(gasPhase); + neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.GasPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Conductivity.class); + + double conductivity = 0; + + /** + *

+ * Constructor for Conductivity. + *

+ */ + public Conductivity() {} + + /** + *

+ * Constructor for Conductivity. + *

+ * + * @param gasPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Conductivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { + super(gasPhase); + } + + /** {@inheritDoc} */ + @Override + public Conductivity clone() { + Conductivity properties = null; + + try { + properties = (Conductivity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public Conductivity clone() { - Conductivity properties = null; - - try { - properties = (Conductivity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return properties; - } + return properties; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/density/Density.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/density/Density.java index e6b03ab06e..a8344de742 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/density/Density.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/density/Density.java @@ -3,6 +3,7 @@ * * Created on 24. januar 2001, 19:49 */ + package neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.density; import org.apache.logging.log4j.LogManager; @@ -17,61 +18,64 @@ * @author Even Solbraa * @version $Id: $Id */ -public class Density extends GasPhysicalPropertyMethod implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DensityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Density.class); - - /** - *

- * Constructor for Density. - *

- */ - public Density() {} +public class Density extends GasPhysicalPropertyMethod + implements neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DensityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Density.class); - /** - *

- * Constructor for Density. - *

- * - * @param gasPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Density( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { - this.gasPhase = gasPhase; - } + /** + *

+ * Constructor for Density. + *

+ */ + public Density() {} - /** {@inheritDoc} */ - @Override - public Density clone() { - Density properties = null; + /** + *

+ * Constructor for Density. + *

+ * + * @param gasPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Density( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { + this.gasPhase = gasPhase; + } - try { - properties = (Density) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public Density clone() { + Density properties = null; - return properties; + try { + properties = (Density) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - * {@inheritDoc} - * - * Returns the density of the phase. Unit: kg/m^3 - */ - @Override - public double calcDensity() { - double tempVar = 0; - if (gasPhase.getPhase().useVolumeCorrection()) { - for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { - tempVar += gasPhase.getPhase().getComponents()[i].getx() - * gasPhase.getPhase().getComponents()[i].getVolumeCorrection(); - } - } - return 1.0 / (gasPhase.getPhase().getMolarVolume() - tempVar) - * gasPhase.getPhase().getMolarMass() * 1e5; + return properties; + } + + /** + * {@inheritDoc} + * + * Returns the density of the phase. Unit: kg/m^3 + */ + @Override + public double calcDensity() { + double tempVar = 0.0; + if (gasPhase.getPhase().useVolumeCorrection()) { + for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { + tempVar += gasPhase.getPhase().getComponents()[i].getx() + * (gasPhase.getPhase().getComponents()[i].getVolumeCorrection() + + gasPhase.getPhase().getComponents()[i].getVolumeCorrectionT() + * (gasPhase.getPhase().getTemperature() - 288.15)); + } } + // System.out.println("density correction tempvar " + tempVar); + return 1.0 / (gasPhase.getPhase().getMolarVolume() - tempVar) + * gasPhase.getPhase().getMolarMass() * 1.0e5; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/diffusivity/Diffusivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/diffusivity/Diffusivity.java index 364b2e8c31..b2a1a450f1 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/diffusivity/Diffusivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/diffusivity/Diffusivity.java @@ -12,141 +12,146 @@ * @version $Id: $Id */ public class Diffusivity extends - neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.GasPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DiffusivityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Diffusivity.class); - - double[][] binaryDiffusionCoefficients, binaryLennardJonesOmega; - double[] effectiveDiffusionCoefficient; - - /** - *

- * Constructor for Diffusivity. - *

- */ - public Diffusivity() {} - - /** - *

- * Constructor for Diffusivity. - *

- * - * @param gasPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Diffusivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { - super(gasPhase); - binaryDiffusionCoefficients = new double[gasPhase.getPhase() - .getNumberOfComponents()][gasPhase.getPhase().getNumberOfComponents()]; - binaryLennardJonesOmega = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase - .getPhase().getNumberOfComponents()]; - effectiveDiffusionCoefficient = new double[gasPhase.getPhase().getNumberOfComponents()]; + neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.GasPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DiffusivityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Diffusivity.class); + + double[][] binaryDiffusionCoefficients; + double[][] binaryLennardJonesOmega; + double[] effectiveDiffusionCoefficient; + + /** + *

+ * Constructor for Diffusivity. + *

+ */ + public Diffusivity() {} + + /** + *

+ * Constructor for Diffusivity. + *

+ * + * @param gasPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Diffusivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { + super(gasPhase); + binaryDiffusionCoefficients = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase + .getPhase().getNumberOfComponents()]; + binaryLennardJonesOmega = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase + .getPhase().getNumberOfComponents()]; + effectiveDiffusionCoefficient = new double[gasPhase.getPhase().getNumberOfComponents()]; + } + + /** {@inheritDoc} */ + @Override + public Diffusivity clone() { + Diffusivity properties = null; + + try { + properties = (Diffusivity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public Diffusivity clone() { - Diffusivity properties = null; - - try { - properties = (Diffusivity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - properties.binaryDiffusionCoefficients = this.binaryDiffusionCoefficients.clone(); - for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { - System.arraycopy(this.binaryDiffusionCoefficients[i], 0, - properties.binaryDiffusionCoefficients[i], 0, - gasPhase.getPhase().getNumberOfComponents()); - } - return properties; + properties.binaryDiffusionCoefficients = this.binaryDiffusionCoefficients.clone(); + for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { + System.arraycopy(this.binaryDiffusionCoefficients[i], 0, + properties.binaryDiffusionCoefficients[i], 0, + gasPhase.getPhase().getNumberOfComponents()); } - - /** {@inheritDoc} */ - @Override - public double calcBinaryDiffusionCoefficient(int i, int j, int method) { - // method - estimation method - // if(method==? then) - double A2 = 1.06036, B2 = 0.15610, C2 = 0.19300, D2 = 0.47635, E2 = 1.03587, F2 = 1.52996, - G2 = 1.76474, H2 = 3.89411; - double tempVar2 = gasPhase.getPhase().getTemperature() / binaryEnergyParameter[i][j]; - binaryLennardJonesOmega[i][j] = A2 / Math.pow(tempVar2, B2) + C2 / Math.exp(D2 * tempVar2) - + E2 / Math.exp(F2 * tempVar2) + G2 / Math.exp(H2 * tempVar2); + return properties; + } + + /** {@inheritDoc} */ + @Override + public double calcBinaryDiffusionCoefficient(int i, int j, int method) { + // method - estimation method + // if(method==? then) + double A2 = 1.06036; + double B2 = 0.15610; + double C2 = 0.19300; + double D2 = 0.47635; + double E2 = 1.03587; + double F2 = 1.52996; + double G2 = 1.76474; + double H2 = 3.89411; + double tempVar2 = gasPhase.getPhase().getTemperature() / binaryEnergyParameter[i][j]; + binaryLennardJonesOmega[i][j] = A2 / Math.pow(tempVar2, B2) + C2 / Math.exp(D2 * tempVar2) + + E2 / Math.exp(F2 * tempVar2) + G2 / Math.exp(H2 * tempVar2); + binaryDiffusionCoefficients[i][j] = + 0.00266 * Math.pow(gasPhase.getPhase().getTemperature(), 1.5) + / (gasPhase.getPhase().getPressure() * Math.sqrt(binaryMolecularMass[i][j]) + * Math.pow(binaryMolecularDiameter[i][j], 2) * binaryLennardJonesOmega[i][j]); + return binaryDiffusionCoefficients[i][j] *= 1e-4; + } + + /** {@inheritDoc} */ + @Override + public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { + for (int j = i; j < gasPhase.getPhase().getNumberOfComponents(); j++) { binaryDiffusionCoefficients[i][j] = - 0.00266 * Math.pow(gasPhase.getPhase().getTemperature(), 1.5) - / (gasPhase.getPhase().getPressure() * Math.sqrt(binaryMolecularMass[i][j]) - * Math.pow(binaryMolecularDiameter[i][j], 2) - * binaryLennardJonesOmega[i][j]); - return binaryDiffusionCoefficients[i][j] *= 1e-4; + calcBinaryDiffusionCoefficient(i, j, binaryDiffusionCoefficientMethod); + binaryDiffusionCoefficients[j][i] = binaryDiffusionCoefficients[i][j]; + } } - /** {@inheritDoc} */ - @Override - public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { - for (int j = i; j < gasPhase.getPhase().getNumberOfComponents(); j++) { - binaryDiffusionCoefficients[i][j] = - calcBinaryDiffusionCoefficient(i, j, binaryDiffusionCoefficientMethod); - binaryDiffusionCoefficients[j][i] = binaryDiffusionCoefficients[i][j]; - } - } - - if (multicomponentDiffusionMethod == 0) { - // ok use full matrix - } else if (multicomponentDiffusionMethod == 0) { - // calcEffectiveDiffusionCoefficients(); - } - return binaryDiffusionCoefficients; + if (multicomponentDiffusionMethod == 0) { + // ok use full matrix + } else if (multicomponentDiffusionMethod == 0) { + // calcEffectiveDiffusionCoefficients(); } - - /** {@inheritDoc} */ - @Override - public void calcEffectiveDiffusionCoefficients() { - double sum = 0; - - for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { - sum = 0; - for (int j = 0; j < gasPhase.getPhase().getNumberOfComponents(); j++) { - if (i == j) { - } else { - sum += gasPhase.getPhase().getComponents()[j].getx() - / binaryDiffusionCoefficients[i][j]; - } - } - effectiveDiffusionCoefficient[i] = - (1.0 - gasPhase.getPhase().getComponents()[i].getx()) / sum; + return binaryDiffusionCoefficients; + } + + /** {@inheritDoc} */ + @Override + public void calcEffectiveDiffusionCoefficients() { + double sum = 0; + + for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { + sum = 0; + for (int j = 0; j < gasPhase.getPhase().getNumberOfComponents(); j++) { + if (i == j) { + } else { + sum += gasPhase.getPhase().getComponents()[j].getx() / binaryDiffusionCoefficients[i][j]; } + } + effectiveDiffusionCoefficient[i] = + (1.0 - gasPhase.getPhase().getComponents()[i].getx()) / sum; } - - /** {@inheritDoc} */ - @Override - public double getFickBinaryDiffusionCoefficient(int i, int j) { - return binaryDiffusionCoefficients[i][j]; - } - - /** {@inheritDoc} */ - @Override - public double getEffectiveDiffusionCoefficient(int i) { - return effectiveDiffusionCoefficient[i]; - } - - /** {@inheritDoc} */ - @Override - public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j) { - /* - * double temp = (i==j)? 1.0: 0.0; double nonIdealCorrection = temp + - * gasPhase.getPhase().getComponents()[i].getx() * - * gasPhase.getPhase().getComponents()[i].getdfugdn(j) * - * gasPhase.getPhase().getNumberOfMolesInPhase(); if (Double.isNaN(nonIdealCorrection)) - * nonIdealCorrection=1.0; return binaryDiffusionCoefficients[i][j]/nonIdealCorrection; // - * shuld be divided by non ideality factor - */ - return binaryDiffusionCoefficients[i][j]; - } + } + + /** {@inheritDoc} */ + @Override + public double getFickBinaryDiffusionCoefficient(int i, int j) { + return binaryDiffusionCoefficients[i][j]; + } + + /** {@inheritDoc} */ + @Override + public double getEffectiveDiffusionCoefficient(int i) { + return effectiveDiffusionCoefficient[i]; + } + + /** {@inheritDoc} */ + @Override + public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j) { + /* + * double temp = (i==j)? 1.0: 0.0; double nonIdealCorrection = temp + + * gasPhase.getPhase().getComponents()[i].getx() * + * gasPhase.getPhase().getComponents()[i].getdfugdn(j) * + * gasPhase.getPhase().getNumberOfMolesInPhase(); if (Double.isNaN(nonIdealCorrection)) + * nonIdealCorrection=1.0; return binaryDiffusionCoefficients[i][j]/nonIdealCorrection; // shuld + * be divided by non ideality factor + */ + return binaryDiffusionCoefficients[i][j]; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/diffusivity/WilkeLeeDiffusivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/diffusivity/WilkeLeeDiffusivity.java index e9890dcd57..1df0515276 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/diffusivity/WilkeLeeDiffusivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/diffusivity/WilkeLeeDiffusivity.java @@ -9,52 +9,51 @@ * @version $Id: $Id */ public class WilkeLeeDiffusivity extends Diffusivity { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double[][] binaryDiffusionCoefficients, binaryLennardJonesOmega; + double[][] binaryDiffusionCoefficients, binaryLennardJonesOmega; - /** - *

- * Constructor for WilkeLeeDiffusivity. - *

- */ - public WilkeLeeDiffusivity() {} + /** + *

+ * Constructor for WilkeLeeDiffusivity. + *

+ */ + public WilkeLeeDiffusivity() {} - /** - *

- * Constructor for WilkeLeeDiffusivity. - *

- * - * @param gasPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public WilkeLeeDiffusivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { - super(gasPhase); - binaryDiffusionCoefficients = new double[gasPhase.getPhase() - .getNumberOfComponents()][gasPhase.getPhase().getNumberOfComponents()]; - binaryLennardJonesOmega = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase - .getPhase().getNumberOfComponents()]; - } + /** + *

+ * Constructor for WilkeLeeDiffusivity. + *

+ * + * @param gasPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public WilkeLeeDiffusivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { + super(gasPhase); + binaryDiffusionCoefficients = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase + .getPhase().getNumberOfComponents()]; + binaryLennardJonesOmega = new double[gasPhase.getPhase().getNumberOfComponents()][gasPhase + .getPhase().getNumberOfComponents()]; + } - /** {@inheritDoc} */ - @Override - public double calcBinaryDiffusionCoefficient(int i, int j, int method) { - // method - estimation method - // if(method==? then) - // remember this is the Fick's diffusion coefficients - // to get the Maxwell-Stefan coefficient - multiply by gamma - double A2 = 1.06036, B2 = 0.15610, C2 = 0.19300, D2 = 0.47635, E2 = 1.03587, F2 = 1.52996, - G2 = 1.76474, H2 = 3.89411; - double tempVar2 = gasPhase.getPhase().getTemperature() / binaryEnergyParameter[i][j]; - binaryLennardJonesOmega[i][j] = A2 / Math.pow(tempVar2, B2) + C2 / Math.exp(D2 * tempVar2) - + E2 / Math.exp(F2 * tempVar2) + G2 / Math.exp(H2 * tempVar2); - binaryDiffusionCoefficients[i][j] = (3.03 - (0.98 / Math.sqrt(binaryMolecularMass[i][j])) - * 1.0e-3 * Math.pow(gasPhase.getPhase().getTemperature(), 1.5)) - / (gasPhase.getPhase().getPressure() * Math.sqrt(binaryMolecularMass[i][j]) - * Math.pow(binaryMolecularDiameter[i][j], 2.0) - * binaryLennardJonesOmega[i][j]); - return binaryDiffusionCoefficients[i][j] * 1e-4; - } + /** {@inheritDoc} */ + @Override + public double calcBinaryDiffusionCoefficient(int i, int j, int method) { + // method - estimation method + // if(method==? then) + // remember this is the Fick's diffusion coefficients + // to get the Maxwell-Stefan coefficient - multiply by gamma + double A2 = 1.06036, B2 = 0.15610, C2 = 0.19300, D2 = 0.47635, E2 = 1.03587, F2 = 1.52996, + G2 = 1.76474, H2 = 3.89411; + double tempVar2 = gasPhase.getPhase().getTemperature() / binaryEnergyParameter[i][j]; + binaryLennardJonesOmega[i][j] = A2 / Math.pow(tempVar2, B2) + C2 / Math.exp(D2 * tempVar2) + + E2 / Math.exp(F2 * tempVar2) + G2 / Math.exp(H2 * tempVar2); + binaryDiffusionCoefficients[i][j] = (3.03 - (0.98 / Math.sqrt(binaryMolecularMass[i][j])) + * 1.0e-3 * Math.pow(gasPhase.getPhase().getTemperature(), 1.5)) + / (gasPhase.getPhase().getPressure() * Math.sqrt(binaryMolecularMass[i][j]) + * Math.pow(binaryMolecularDiameter[i][j], 2.0) * binaryLennardJonesOmega[i][j]); + return binaryDiffusionCoefficients[i][j] * 1e-4; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/viscosity/ChungViscosityMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/viscosity/ChungViscosityMethod.java index 81443b1e17..0637ef7d2c 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/viscosity/ChungViscosityMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/viscosity/ChungViscosityMethod.java @@ -3,6 +3,7 @@ * * Created on 1. august 2001, 12:44 */ + package neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.viscosity; /** @@ -14,138 +15,148 @@ * @version Method was checked on 2.8.2001 - seems to be correct - Even Solbraa */ public class ChungViscosityMethod extends Viscosity { - private static final long serialVersionUID = 1000; - - public double[] pureComponentViscosity, relativeViscosity, Fc, omegaVisc; - protected double chungE[] = new double[10]; - protected double[][] chungHPcoefs = - {{6.324, 50.412, -51.680, 1189.0}, {1.210e-3, -1.154e-3, -6.257e-3, 0.03728}, - {5.283, 254.209, -168.48, 3898.0}, {6.623, 38.096, -8.464, 31.42}, - {19.745, 7.630, -14.354, 31.53}, {-1.9, -12.537, 4.985, -18.15}, - {24.275, 3.450, -11.291, 69.35}, {0.7972, 1.117, 0.01235, -4.117}, - {-0.2382, 0.06770, -0.8163, 4.025}, {0.06863, 0.3479, 0.5926, -0.727}}; - - /** - *

- * Constructor for ChungViscosityMethod. - *

- */ - public ChungViscosityMethod() {} - - /** - *

- * Constructor for ChungViscosityMethod. - *

- * - * @param gasPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public ChungViscosityMethod( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { - super(gasPhase); - pureComponentViscosity = new double[gasPhase.getPhase().getNumberOfComponents()]; - relativeViscosity = new double[gasPhase.getPhase().getNumberOfComponents()]; - Fc = new double[gasPhase.getPhase().getNumberOfComponents()]; - omegaVisc = new double[gasPhase.getPhase().getNumberOfComponents()]; - } + private static final long serialVersionUID = 1000; - /** {@inheritDoc} */ - @Override - public double calcViscosity() { - // Wilkes method p. 407 TPoLG - initChungPureComponentViscosity(); - double tempVar = 0, tempVar2 = 0; - double viscosity = 0; - - for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { - tempVar = 0; - for (int j = 0; j < gasPhase.getPhase().getNumberOfComponents(); j++) { - tempVar2 = Math - .pow(1.0 + Math.sqrt(pureComponentViscosity[i] / pureComponentViscosity[j]) - * Math.pow(gasPhase.getPhase().getComponents()[j].getMolarMass() - / gasPhase.getPhase().getComponents()[i].getMolarMass(), - 0.25), - 2.0) - / Math.pow( - 8.0 * (1.0 + gasPhase.getPhase().getComponents()[i].getMolarMass() - / gasPhase.getPhase().getComponents()[j].getMolarMass()), - 0.5); - tempVar += gasPhase.getPhase().getComponents()[j].getx() * tempVar2; - } - - viscosity += gasPhase.getPhase().getComponents()[i].getx() * pureComponentViscosity[i] - / tempVar; - } - viscosity *= 1.0e-7; // N-sek/m2 - return viscosity; - } + public double[] pureComponentViscosity; + + public double[] relativeViscosity; + + public double[] Fc; + + public double[] omegaVisc; + + protected double[] chungE = new double[10]; + protected double[][] chungHPcoefs = + {{6.324, 50.412, -51.680, 1189.0}, {1.210e-3, -1.154e-3, -6.257e-3, 0.03728}, + {5.283, 254.209, -168.48, 3898.0}, {6.623, 38.096, -8.464, 31.42}, + {19.745, 7.630, -14.354, 31.53}, {-1.9, -12.537, 4.985, -18.15}, + {24.275, 3.450, -11.291, 69.35}, {0.7972, 1.117, 0.01235, -4.117}, + {-0.2382, 0.06770, -0.8163, 4.025}, {0.06863, 0.3479, 0.5926, -0.727}}; + + /** + *

+ * Constructor for ChungViscosityMethod. + *

+ */ + public ChungViscosityMethod() {} - /** {@inheritDoc} */ - @Override - public double getPureComponentViscosity(int i) { - return pureComponentViscosity[i]; + /** + *

+ * Constructor for ChungViscosityMethod. + *

+ * + * @param gasPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public ChungViscosityMethod( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { + super(gasPhase); + pureComponentViscosity = new double[gasPhase.getPhase().getNumberOfComponents()]; + relativeViscosity = new double[gasPhase.getPhase().getNumberOfComponents()]; + Fc = new double[gasPhase.getPhase().getNumberOfComponents()]; + omegaVisc = new double[gasPhase.getPhase().getNumberOfComponents()]; + } + + /** {@inheritDoc} */ + @Override + public double calcViscosity() { + // Wilkes method p. 407 TPoLG + initChungPureComponentViscosity(); + double tempVar = 0; + double tempVar2 = 0; + double viscosity = 0; + + for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { + tempVar = 0; + for (int j = 0; j < gasPhase.getPhase().getNumberOfComponents(); j++) { + tempVar2 = Math.pow(1.0 + Math.sqrt(pureComponentViscosity[i] / pureComponentViscosity[j]) + * Math.pow(gasPhase.getPhase().getComponents()[j].getMolarMass() + / gasPhase.getPhase().getComponents()[i].getMolarMass(), 0.25), + 2.0) + / Math.pow(8.0 * (1.0 + gasPhase.getPhase().getComponents()[i].getMolarMass() + / gasPhase.getPhase().getComponents()[j].getMolarMass()), 0.5); + tempVar += gasPhase.getPhase().getComponents()[j].getx() * tempVar2; + } + + viscosity += + gasPhase.getPhase().getComponents()[i].getx() * pureComponentViscosity[i] / tempVar; } + viscosity *= 1.0e-7; // N-sek/m2 + return viscosity; + } + + /** {@inheritDoc} */ + @Override + public double getPureComponentViscosity(int i) { + return pureComponentViscosity[i]; + } + + /** + *

+ * initChungPureComponentViscosity. + *

+ */ + public void initChungPureComponentViscosity() { + double tempVar = 0; + double A = 1.16145; + + double B = 0.14874; + double C = 0.52487; + double D = 0.77320; + double E = 2.16178; + double F = 2.43787; + double chungy = 0; + + double chungG1 = 0; + double chungG2 = 0; + double chungviskstartstar = 0; + double chungviskstar = 0; + for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { + // eq. 9-4.11 TPoLG + relativeViscosity[i] = 131.3 * gasPhase.getPhase().getComponents()[i].getDebyeDipoleMoment() + / Math.sqrt(gasPhase.getPhase().getComponents()[i].getCriticalVolume() + * gasPhase.getPhase().getComponents()[i].getTC()); + // eq. 9-4.10 TPoLG + Fc[i] = 1.0 - 0.2756 * gasPhase.getPhase().getComponents()[i].getAcentricFactor() + + 0.059035 * Math.pow(relativeViscosity[i], 4) + + gasPhase.getPhase().getComponents()[i].getViscosityCorrectionFactor(); + + for (int j = 0; j < 10; j++) { + // Table 9-5 TPoLG + chungE[j] = chungHPcoefs[j][0] + + chungHPcoefs[j][1] * gasPhase.getPhase().getComponents()[i].getAcentricFactor() + + chungHPcoefs[j][2] * Math.pow(relativeViscosity[i], 4) + chungHPcoefs[j][3] + * gasPhase.getPhase().getComponents()[i].getViscosityCorrectionFactor(); + } - /** - *

- * initChungPureComponentViscosity. - *

- */ - public void initChungPureComponentViscosity() { - double tempVar = 0; - double A = 1.16145, B = 0.14874, C = 0.52487, D = 0.77320, E = 2.16178, F = 2.43787; - - double chungy = 0, chungG1 = 0, chungG2 = 0, chungviskstartstar = 0, chungviskstar = 0; - - for (int i = 0; i < gasPhase.getPhase().getNumberOfComponents(); i++) { - // eq. 9-4.11 TPoLG - relativeViscosity[i] = - 131.3 * gasPhase.getPhase().getComponents()[i].getDebyeDipoleMoment() - / Math.sqrt(gasPhase.getPhase().getComponents()[i].getCriticalVolume() - * gasPhase.getPhase().getComponents()[i].getTC()); - // eq. 9-4.10 TPoLG - Fc[i] = 1.0 - 0.2756 * gasPhase.getPhase().getComponents()[i].getAcentricFactor() - + 0.059035 * Math.pow(relativeViscosity[i], 4) - + gasPhase.getPhase().getComponents()[i].getViscosityCorrectionFactor(); - - for (int j = 0; j < 10; j++) { - // Table 9-5 TPoLG - chungE[j] = chungHPcoefs[j][0] - + chungHPcoefs[j][1] - * gasPhase.getPhase().getComponents()[i].getAcentricFactor() - + chungHPcoefs[j][2] * Math.pow(relativeViscosity[i], 4) - + chungHPcoefs[j][3] * gasPhase.getPhase().getComponents()[i] - .getViscosityCorrectionFactor(); - } - - // eq. 9-4.8 TPoLG (The properties of Liquids and Gases) - tempVar = 1.2593 * gasPhase.getPhase().getTemperature() - / gasPhase.getPhase().getComponents()[i].getTC(); - // eq. 9.4.3 TPoLG - omegaVisc[i] = A * Math.pow(tempVar, -B) + C * Math.exp(-D * tempVar) - + E * Math.exp(-F * tempVar); - // eq. 9-6.18 TPoLG - chungy = 0.1 / (gasPhase.getPhase().getMolarVolume()) - * gasPhase.getPhase().getComponents()[i].getCriticalVolume() / 6.0; - // eq. 9-6.19 TPoLG - chungG1 = (1.0 - 0.5 * chungy) / Math.pow((1.0 - chungy), 3.0); - // eq. 9-6.20 TPoLG - chungG2 = (chungE[0] * (((1.0 - Math.exp(-chungE[3] * chungy)) / chungy)) - + chungE[1] * chungG1 * Math.exp(chungE[4] * chungy) + chungE[2] * chungG1) - / (chungE[0] * chungE[3] + chungE[1] + chungE[2]); - // eq. 9-6.21 TPoLG - chungviskstartstar = chungE[6] * chungy * chungy * chungG2 * Math - .exp(chungE[7] + chungE[8] / tempVar + chungE[9] * Math.pow(tempVar, -2.0)); - // eq. 9-6.17 TPoLG - chungviskstar = Math.sqrt(tempVar) / omegaVisc[i] - * (Fc[i] * (1.0 / chungG2 + chungE[5] * chungy)) + chungviskstartstar; - pureComponentViscosity[i] = chungviskstar * 36.344 - * Math.pow(gasPhase.getPhase().getComponents()[i].getMolarMass() * 1000.0 - * gasPhase.getPhase().getComponents()[i].getTC(), 0.5) - / (Math.pow( - gasPhase.getPhase().getPhase().getComponents()[i].getCriticalVolume(), - 2.0 / 3.0)); - } + // eq. 9-4.8 TPoLG (The properties of Liquids and Gases) + tempVar = 1.2593 * gasPhase.getPhase().getTemperature() + / gasPhase.getPhase().getComponents()[i].getTC(); + // eq. 9.4.3 TPoLG + omegaVisc[i] = + A * Math.pow(tempVar, -B) + C * Math.exp(-D * tempVar) + E * Math.exp(-F * tempVar); + // eq. 9-6.18 TPoLG + chungy = 0.1 / (gasPhase.getPhase().getMolarVolume()) + * gasPhase.getPhase().getComponents()[i].getCriticalVolume() / 6.0; + // eq. 9-6.19 TPoLG + chungG1 = (1.0 - 0.5 * chungy) / Math.pow((1.0 - chungy), 3.0); + // eq. 9-6.20 TPoLG + chungG2 = (chungE[0] * (((1.0 - Math.exp(-chungE[3] * chungy)) / chungy)) + + chungE[1] * chungG1 * Math.exp(chungE[4] * chungy) + chungE[2] * chungG1) + / (chungE[0] * chungE[3] + chungE[1] + chungE[2]); + // eq. 9-6.21 TPoLG + chungviskstartstar = chungE[6] * chungy * chungy * chungG2 + * Math.exp(chungE[7] + chungE[8] / tempVar + chungE[9] * Math.pow(tempVar, -2.0)); + // eq. 9-6.17 TPoLG + chungviskstar = + Math.sqrt(tempVar) / omegaVisc[i] * (Fc[i] * (1.0 / chungG2 + chungE[5] * chungy)) + + chungviskstartstar; + pureComponentViscosity[i] = chungviskstar * 36.344 + * Math.pow(gasPhase.getPhase().getComponents()[i].getMolarMass() * 1000.0 + * gasPhase.getPhase().getComponents()[i].getTC(), 0.5) + / (Math.pow(gasPhase.getPhase().getPhase().getComponents()[i].getCriticalVolume(), + 2.0 / 3.0)); } + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/viscosity/Viscosity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/viscosity/Viscosity.java index 7a81883cc1..042da61106 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/viscosity/Viscosity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/gasPhysicalProperties/viscosity/Viscosity.java @@ -4,48 +4,49 @@ import org.apache.logging.log4j.Logger; /** + * * Abstract class for Viscosity property. * * @author Even Solbraa */ abstract class Viscosity extends - neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.GasPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Viscosity.class); + neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.GasPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Viscosity.class); - /** - *

- * Constructor for Viscosity. - *

- */ - public Viscosity() {} + /** + *

+ * Constructor for Viscosity. + *

+ */ + public Viscosity() {} - /** - *

- * Constructor for Viscosity. - *

- * - * @param gasPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Viscosity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { - super(gasPhase); - } - - /** {@inheritDoc} */ - @Override - public Viscosity clone() { - Viscosity properties = null; + /** + *

+ * Constructor for Viscosity. + *

+ * + * @param gasPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Viscosity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface gasPhase) { + super(gasPhase); + } - try { - properties = (Viscosity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public Viscosity clone() { + Viscosity properties = null; - return properties; + try { + properties = (Viscosity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return properties; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/LiquidPhysicalPropertyMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/LiquidPhysicalPropertyMethod.java index 6e66841592..c33d9f2871 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/LiquidPhysicalPropertyMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/LiquidPhysicalPropertyMethod.java @@ -9,39 +9,39 @@ * @version $Id: $Id */ public class LiquidPhysicalPropertyMethod - extends neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethod { - private static final long serialVersionUID = 1000; + extends neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethod { + private static final long serialVersionUID = 1000; - protected neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase; + protected neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase; - /** - *

- * Constructor for LiquidPhysicalPropertyMethod. - *

- */ - public LiquidPhysicalPropertyMethod() { - super(); - } + /** + *

+ * Constructor for LiquidPhysicalPropertyMethod. + *

+ */ + public LiquidPhysicalPropertyMethod() { + super(); + } - /** - *

- * Constructor for LiquidPhysicalPropertyMethod. - *

- * - * @param liquidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public LiquidPhysicalPropertyMethod( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { - super(); - this.liquidPhase = liquidPhase; - } + /** + *

+ * Constructor for LiquidPhysicalPropertyMethod. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public LiquidPhysicalPropertyMethod( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + super(); + this.liquidPhase = liquidPhase; + } - /** {@inheritDoc} */ - @Override - public void setPhase( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { - this.liquidPhase = phase; - } + /** {@inheritDoc} */ + @Override + public void setPhase( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface phase) { + this.liquidPhase = phase; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/conductivity/Conductivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/conductivity/Conductivity.java index 41992e5938..3becf1d642 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/conductivity/Conductivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/conductivity/Conductivity.java @@ -3,6 +3,7 @@ * * Created on 1. november 2000, 19:00 */ + package neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.conductivity; import org.apache.logging.log4j.LogManager; @@ -17,96 +18,96 @@ * @version $Id: $Id */ public class Conductivity extends - neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.LiquidPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Conductivity.class); - - double conductivity = 0; - public double[] pureComponentConductivity; + neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.LiquidPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Conductivity.class); - /** - *

- * Constructor for Conductivity. - *

- */ - public Conductivity() {} + double conductivity = 0; + public double[] pureComponentConductivity; - /** - *

- * Constructor for Conductivity. - *

- * - * @param liquidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Conductivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { - super(liquidPhase); - pureComponentConductivity = new double[liquidPhase.getPhase().getNumberOfComponents()]; - } + /** + *

+ * Constructor for Conductivity. + *

+ */ + public Conductivity() {} - /** {@inheritDoc} */ - @Override - public Conductivity clone() { - Conductivity properties = null; + /** + *

+ * Constructor for Conductivity. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Conductivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + super(liquidPhase); + pureComponentConductivity = new double[liquidPhase.getPhase().getNumberOfComponents()]; + } - try { - properties = (Conductivity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public Conductivity clone() { + Conductivity properties = null; - return properties; + try { + properties = (Conductivity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double calcConductivity() { - calcPureComponentConductivity(); + return properties; + } - conductivity = 0.0; + /** {@inheritDoc} */ + @Override + public double calcConductivity() { + calcPureComponentConductivity(); - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { - /* - * tempVar2 = Math .pow(1.0 + Math .sqrt(pureComponentConductivity[i] / - * pureComponentConductivity[j]) - * Math.pow(liquidPhase.getPhase().getComponents()[j].getMolarMass() / - * liquidPhase.getPhase().getComponents()[i].getMolarMass(), 0.25), 2.0) / - * Math.pow(8.0 (1.0 + liquidPhase.getPhase().getComponents()[i].getMolarMass() / - * liquidPhase.getPhase().getComponents()[j].getMolarMass()), 0.5); - */ - } - double wigthFraci = liquidPhase.getPhase().getWtFrac(i); - conductivity += wigthFraci * pureComponentConductivity[i];/// tempVar; - // conductivity = conductivity + - // liquidPhase.getPhase().getComponents()[i].getx() * - // pureComponentConductivity[i];///tempVar; - } + conductivity = 0.0; - return conductivity; + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { + /* + * tempVar2 = Math .pow(1.0 + Math .sqrt(pureComponentConductivity[i] / + * pureComponentConductivity[j]) + * Math.pow(liquidPhase.getPhase().getComponents()[j].getMolarMass() / + * liquidPhase.getPhase().getComponents()[i].getMolarMass(), 0.25), 2.0) / Math.pow(8.0 (1.0 + * + liquidPhase.getPhase().getComponents()[i].getMolarMass() / + * liquidPhase.getPhase().getComponents()[j].getMolarMass()), 0.5); + */ + } + double wigthFraci = liquidPhase.getPhase().getWtFrac(i); + conductivity += wigthFraci * pureComponentConductivity[i]; // tempVar; + // conductivity = conductivity + + // liquidPhase.getPhase().getComponents()[i].getx() * + // pureComponentConductivity[i]; ///tempVar; } - /** - *

- * calcPureComponentConductivity. - *

- */ - public void calcPureComponentConductivity() { - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - // pure component conductivity - pureComponentConductivity[i] = liquidPhase.getPhase().getComponents()[i] - .getLiquidConductivityParameter(0) - + liquidPhase.getPhase().getComponents()[i].getLiquidConductivityParameter(1) - * liquidPhase.getPhase().getTemperature() - + liquidPhase.getPhase().getComponents()[i].getLiquidConductivityParameter(2) - * Math.pow(liquidPhase.getPhase().getTemperature(), 2.0); - if (pureComponentConductivity[i] < 0) { - pureComponentConductivity[i] = 1e-10; - } - } + return conductivity; + } + + /** + *

+ * calcPureComponentConductivity. + *

+ */ + public void calcPureComponentConductivity() { + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + // pure component conductivity + pureComponentConductivity[i] = + liquidPhase.getPhase().getComponents()[i].getLiquidConductivityParameter(0) + + liquidPhase.getPhase().getComponents()[i].getLiquidConductivityParameter(1) + * liquidPhase.getPhase().getTemperature() + + liquidPhase.getPhase().getComponents()[i].getLiquidConductivityParameter(2) + * Math.pow(liquidPhase.getPhase().getTemperature(), 2.0); + if (pureComponentConductivity[i] < 0) { + pureComponentConductivity[i] = 1e-10; + } } + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/Costald.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/Costald.java new file mode 100644 index 0000000000..396bc76d1a --- /dev/null +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/Costald.java @@ -0,0 +1,155 @@ +/* + * Costald.java + * + * Created on 13. July 2022 + */ + +package neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.density; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + *

+ * Costald Density Calculation class. + *

+ * + * @author Even Solbraa + * @version $Id: $Id + */ +public class Costald extends + neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.LiquidPhysicalPropertyMethod + implements neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DensityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Density.class); + + /** + *

+ * Constructor for Costald. + *

+ */ + public Costald() {} + + /** + *

+ * Constructor for Costald. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Costald( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + this.liquidPhase = liquidPhase; + } + + /** {@inheritDoc} */ + @Override + public Costald clone() { + Costald properties = null; + + try { + properties = (Costald) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + + return properties; + } + + /** + * {@inheritDoc} Densities of compressed liquid mixtures. Unit: kg/m^3 + */ + @Override + public double calcDensity() { + // Densities of compressed liquid mixture. Method book "The properties of Gases and Liquids" + // Bruce E. Poling 5.26 + // double tempVar = 0.0; + double ascFactMix = 0.0; + double criticalVolumeMix1 = 0.0; + double criticalVolumeMix2 = 0.0; + double criticalVolumeMix3 = 0.0; + double criticalVolumeMix = 0.0; + double criticalTemperature1 = 0.0; + double criticalTemperatureMix = 0.0; + double pressureMixPseudocritical = 0.0; + double pressurePseudoReduced0 = 0.0; + double pressurePseudoReduced1 = 0.0; + double pressurePseudoReducedVapour = 0.0; + double volumeLiquidMolarSaturated = 0.0; + + double A; // PolynomialA + double B; // PolynomialB + + // The constants of Aalto et al. (1996); + double a0 = -170.335; + double a1 = -28.578; + double a2 = 124.809; + double a3 = -55.5393; + double a4 = 130.01; + double b0 = 0.164813; + double b1 = -0.0914427; + double C = Math.exp(1); + double D = 1.00588; + + if (liquidPhase.getPhase().useVolumeCorrection()) { + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + ascFactMix += Math.sqrt(liquidPhase.getPhase().getComponents()[i].getAcentricFactor()) + * (liquidPhase.getPhase().getComponents()[i].getx()); + + criticalVolumeMix1 += liquidPhase.getPhase().getComponents()[i].getCriticalVolume() + * liquidPhase.getPhase().getComponents()[i].getx(); + criticalVolumeMix2 += + Math.pow(liquidPhase.getPhase().getComponents()[i].getCriticalVolume(), 0.6666) + * liquidPhase.getPhase().getComponents()[i].getx(); + criticalVolumeMix3 += + Math.pow(liquidPhase.getPhase().getComponents()[i].getCriticalVolume(), 0.33333) + * liquidPhase.getPhase().getComponents()[i].getx(); + criticalTemperature1 += Math + .sqrt(liquidPhase.getPhase().getComponents()[i].getTC() + * liquidPhase.getPhase().getComponents()[i].getCriticalVolume()) + * liquidPhase.getPhase().getComponents()[i].getx(); + + /* + * tempVar += liquidPhase.getPhase().getComponents()[i].getx() + * (liquidPhase.getPhase().getComponents()[i].getVolumeCorrection() + + * liquidPhase.getPhase().getComponents()[i].getVolumeCorrectionT() + * (liquidPhase.getPhase().getTemperature() - 288.15)); + */ + } + } + ascFactMix = Math.pow(ascFactMix, 2); + criticalVolumeMix = 0.25 * (criticalVolumeMix1 + 3 * criticalVolumeMix2 * criticalVolumeMix3); + criticalTemperatureMix = Math.pow(criticalTemperature1, 2) / (criticalVolumeMix); + pressureMixPseudocritical = + (0.291 - 0.08 * ascFactMix) * 83.14 * criticalTemperatureMix / (criticalVolumeMix); + pressurePseudoReduced0 = 6.13144 + - 6.30662 / (liquidPhase.getPhase().getTemperature() / criticalTemperatureMix) + - 1.55663 * Math.log(liquidPhase.getPhase().getTemperature() / criticalTemperatureMix) + + 0.17518 * Math.pow(liquidPhase.getPhase().getTemperature() / criticalTemperatureMix, 6); + pressurePseudoReduced1 = 2.99938 + - 3.08508 / (liquidPhase.getPhase().getTemperature() / criticalTemperatureMix) + + 1.26573 * Math.log(liquidPhase.getPhase().getTemperature() / criticalTemperatureMix) + + 0.08560 * Math.pow(liquidPhase.getPhase().getTemperature() / criticalTemperatureMix, 6); + pressurePseudoReducedVapour = + Math.exp(pressurePseudoReduced0 + ascFactMix * pressurePseudoReduced1); + A = a0 + a1 * (liquidPhase.getPhase().getTemperature() / criticalTemperatureMix) + + a2 * Math.pow((liquidPhase.getPhase().getTemperature() / criticalTemperatureMix), 3) + + a3 * Math.pow((liquidPhase.getPhase().getTemperature() / criticalTemperatureMix), 6) + + a4 / (liquidPhase.getPhase().getTemperature() / criticalTemperatureMix); + // System.out.println("density correction tempvar " + tempVar); + B = b0 + b1 * ascFactMix; + volumeLiquidMolarSaturated = criticalVolumeMix * Math.pow((0.29056 - 0.08775 * ascFactMix), Math + .pow(1 - (liquidPhase.getPhase().getTemperature() / criticalTemperatureMix), 0.28571429)); + + return 1 / (volumeLiquidMolarSaturated + * (A + Math.pow(C, + Math.pow((D - (liquidPhase.getPhase().getTemperature() / criticalTemperatureMix)), B)) + * ((liquidPhase.getPhase().getPressure() / pressureMixPseudocritical) + - pressurePseudoReducedVapour)) + / (A + C * ((liquidPhase.getPhase().getPressure() / pressureMixPseudocritical) + - pressurePseudoReducedVapour)) + * 1e-6 / liquidPhase.getPhase().getMolarMass()); + } +} diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/Density.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/Density.java index dd15474cb2..3b05b5c41d 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/Density.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/Density.java @@ -3,6 +3,7 @@ * * Created on 24. januar 2001, 19:49 */ + package neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.density; import org.apache.logging.log4j.LogManager; @@ -17,65 +18,64 @@ * @version $Id: $Id */ public class Density extends - neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.LiquidPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DensityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Density.class); - - /** - *

- * Constructor for Density. - *

- */ - public Density() {} + neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.LiquidPhysicalPropertyMethod + implements neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DensityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Density.class); - /** - *

- * Constructor for Density. - *

- * - * @param liquidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Density( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { - this.liquidPhase = liquidPhase; - } + /** + *

+ * Constructor for Density. + *

+ */ + public Density() {} - /** {@inheritDoc} */ - @Override - public Density clone() { - Density properties = null; + /** + *

+ * Constructor for Density. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Density( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + this.liquidPhase = liquidPhase; + } - try { - properties = (Density) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public Density clone() { + Density properties = null; - return properties; + try { + properties = (Density) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - * {@inheritDoc} - * - * Returns the density of the phase. Unit: kg/m^3 - */ - @Override - public double calcDensity() { - double tempVar = 0.0; - if (liquidPhase.getPhase().useVolumeCorrection()) { - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - tempVar += liquidPhase.getPhase().getComponents()[i].getx() - * (liquidPhase.getPhase().getComponents()[i].getVolumeCorrection() - + liquidPhase.getPhase().getComponents()[i].getVolumeCorrectionT() - * (liquidPhase.getPhase().getTemperature() - 288.15)); - } - } - // System.out.println("density correction tempvar " + tempVar); - return 1.0 / (liquidPhase.getPhase().getMolarVolume() - tempVar) - * liquidPhase.getPhase().getMolarMass() * 1.0e5; + return properties; + } + + /** + * {@inheritDoc} + * + * Returns the density of the phase. Unit: kg/m^3 + */ + @Override + public double calcDensity() { + double tempVar = 0.0; + if (liquidPhase.getPhase().useVolumeCorrection()) { + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + tempVar += liquidPhase.getPhase().getComponents()[i].getx() + * (liquidPhase.getPhase().getComponents()[i].getVolumeCorrection() + + liquidPhase.getPhase().getComponents()[i].getVolumeCorrectionT() + * (liquidPhase.getPhase().getTemperature() - 288.15)); + } } + // System.out.println("density correction tempvar " + tempVar); + return 1.0 / (liquidPhase.getPhase().getMolarVolume() - tempVar) + * liquidPhase.getPhase().getMolarMass() * 1.0e5; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/temp b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/temp new file mode 100644 index 0000000000..046fa3c51d --- /dev/null +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/temp @@ -0,0 +1,39 @@ + public double calcDensity() { + //This class need to be changed to the Costald method + double tempVar = 0.0; + double acsFaactMix =0; + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + acsFaactMix += liquidPhase.getPhase().getComponents()[i].getAcentricFactor()|*Math.sqrt(liquidPhase.getPhase().getComponents()[i].getx()) + + +acsFaactMix Math.pow(acsFaactMix, 2.0) + + liquidPhase.getPhase().getComponents()[i].getCriticalVolume() + liquidPhase.getPhase().getComponents()[i].getTC() + liquidPhase.getPhase().getComponents()[i].PC() + liquidPhase.getPhase().getComponents()[i].getAcentricFactor() + liquidPhase.getPhase().getTemperature() + + liquidPhase.getPhase().getComponent(i).getTriplePointPressure() + + tempVar += liquidPhase.getPhase().getComponents()[i].getx() + * (liquidPhase.getPhase().getComponents()[i].getVolumeCorrection() + + liquidPhase.getPhase().getComponents()[i].getVolumeCorrectionT() + * (liquidPhase.getPhase().getTemperature() - 288.15)); + } + // System.out.println("density correction tempvar " + tempVar); + return 1.0 / (liquidPhase.getPhase().getMolarVolume() - tempVar) + * liquidPhase.getPhase().getMolarMass() * 1.0e5; + } + + + } + + @Test + void testCalcDensity() { + testSystem.getPhase("oil").getPhysicalProperties().setDensityModel("Costald"); + double costaldDensity = testSystem.getPhase("oil").getPhysicalProperties().calcDensity(); + double costaldVolume = 1.0/costaldDensity * testSystem.getPhase("oil").getMolarMass() *1e6; + assertEquals(99.05, costaldVolume, 1e-3); + } +} diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/AmineDiffusivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/AmineDiffusivity.java index 54e949e897..a31526c71f 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/AmineDiffusivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/AmineDiffusivity.java @@ -12,88 +12,90 @@ * @version $Id: $Id */ public class AmineDiffusivity extends SiddiqiLucasMethod { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(AmineDiffusivity.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(AmineDiffusivity.class); - /** - *

- * Constructor for AmineDiffusivity. - *

- */ - public AmineDiffusivity() {} + /** + *

+ * Constructor for AmineDiffusivity. + *

+ */ + public AmineDiffusivity() {} - /** - *

- * Constructor for AmineDiffusivity. - *

- * - * @param liquidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public AmineDiffusivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { - super(liquidPhase); + /** + *

+ * Constructor for AmineDiffusivity. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public AmineDiffusivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + super(liquidPhase); + } + + /** {@inheritDoc} */ + @Override + public void calcEffectiveDiffusionCoefficients() { + super.calcEffectiveDiffusionCoefficients(); + double co2waterdiff = + 0.03389 * Math.exp(-2213.7 / liquidPhase.getPhase().getTemperature()) * 1e-4; // Tammi + // (1994) + // - + // Pcheco + double n2owaterdiff = + 0.03168 * Math.exp(-2209.4 / liquidPhase.getPhase().getTemperature()) * 1e-4; + double n2oaminediff = 5.533e-8 * liquidPhase.getPhase().getTemperature() + / Math.pow(liquidPhase.getViscosity(), 0.545) * 1e-4; // stoke einstein - pacheco + try { + double molConsMDEA = liquidPhase.getPhase().getComponent("MDEA").getx() + * liquidPhase.getPhase().getDensity() / liquidPhase.getPhase().getMolarMass(); + molConsMDEA += liquidPhase.getPhase().getComponent("MDEA+").getx() + * liquidPhase.getPhase().getDensity() / liquidPhase.getPhase().getMolarMass(); + effectiveDiffusionCoefficient[liquidPhase.getPhase().getComponent("CO2") + .getComponentNumber()] = n2oaminediff * co2waterdiff / n2owaterdiff; + effectiveDiffusionCoefficient[liquidPhase.getPhase().getComponent("MDEA") + .getComponentNumber()] = + 0.0207 + * Math.exp( + -2360.7 / liquidPhase.getPhase().getTemperature() - 24.727e-5 * molConsMDEA) + * 1e-4; + } catch (Exception ex) { + logger.error("error eff diff calc ", ex); } + } - /** {@inheritDoc} */ - @Override - public void calcEffectiveDiffusionCoefficients() { - super.calcEffectiveDiffusionCoefficients(); - double co2waterdiff = - 0.03389 * Math.exp(-2213.7 / liquidPhase.getPhase().getTemperature()) * 1e-4; // Tammi - // (1994) - // - - // Pcheco - double n2owaterdiff = - 0.03168 * Math.exp(-2209.4 / liquidPhase.getPhase().getTemperature()) * 1e-4; - double n2oaminediff = 5.533e-8 * liquidPhase.getPhase().getTemperature() - / Math.pow(liquidPhase.getViscosity(), 0.545) * 1e-4; // stoke einstein - pacheco - try { - double molConsMDEA = liquidPhase.getPhase().getComponent("MDEA").getx() - * liquidPhase.getPhase().getDensity() / liquidPhase.getPhase().getMolarMass(); - molConsMDEA += liquidPhase.getPhase().getComponent("MDEA+").getx() - * liquidPhase.getPhase().getDensity() / liquidPhase.getPhase().getMolarMass(); - effectiveDiffusionCoefficient[liquidPhase.getPhase().getComponent("CO2") - .getComponentNumber()] = n2oaminediff * co2waterdiff / n2owaterdiff; - effectiveDiffusionCoefficient[liquidPhase.getPhase().getComponent("MDEA") - .getComponentNumber()] = - 0.0207 * Math.exp(-2360.7 / liquidPhase.getPhase().getTemperature() - - 24.727e-5 * molConsMDEA) * 1e-4; - } catch (Exception e) { - logger.error("error eff diff calc " + e.toString()); - } + /** {@inheritDoc} */ + @Override + public double calcBinaryDiffusionCoefficient(int i, int j, int method) { + calcEffectiveDiffusionCoefficients(); + if (liquidPhase.getPhase().getComponent(i).getComponentName().equals("MDEA")) { + return effectiveDiffusionCoefficient[liquidPhase.getPhase().getComponent("MDEA") + .getComponentNumber()]; + } else { + return effectiveDiffusionCoefficient[liquidPhase.getPhase().getComponent("CO2") + .getComponentNumber()]; } + } - /** {@inheritDoc} */ - @Override - public double calcBinaryDiffusionCoefficient(int i, int j, int method) { - calcEffectiveDiffusionCoefficients(); + /** {@inheritDoc} */ + @Override + public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + calcEffectiveDiffusionCoefficients(); + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { if (liquidPhase.getPhase().getComponent(i).getComponentName().equals("MDEA")) { - return effectiveDiffusionCoefficient[liquidPhase.getPhase().getComponent("MDEA") - .getComponentNumber()]; + binaryDiffusionCoefficients[i][j] = effectiveDiffusionCoefficient[liquidPhase.getPhase() + .getComponent("MDEA").getComponentNumber()]; } else { - return effectiveDiffusionCoefficient[liquidPhase.getPhase().getComponent("CO2") - .getComponentNumber()]; - } - } - - /** {@inheritDoc} */ - @Override - public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - calcEffectiveDiffusionCoefficients(); - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { - if (liquidPhase.getPhase().getComponent(i).getComponentName().equals("MDEA")) { - binaryDiffusionCoefficients[i][j] = effectiveDiffusionCoefficient[liquidPhase - .getPhase().getComponent("MDEA").getComponentNumber()]; - } else { - binaryDiffusionCoefficients[i][j] = effectiveDiffusionCoefficient[liquidPhase - .getPhase().getComponent("CO2").getComponentNumber()]; - } - } + binaryDiffusionCoefficients[i][j] = effectiveDiffusionCoefficient[liquidPhase.getPhase() + .getComponent("CO2").getComponentNumber()]; } - return binaryDiffusionCoefficients; + } } + return binaryDiffusionCoefficients; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/CO2water.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/CO2water.java index b7532c2999..c164d3c863 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/CO2water.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/CO2water.java @@ -9,38 +9,36 @@ * @version $Id: $Id */ public class CO2water extends Diffusivity { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for CO2water. - *

- */ - public CO2water() {} + /** + *

+ * Constructor for CO2water. + *

+ */ + public CO2water() {} - /** - *

- * Constructor for CO2water. - *

- * - * @param liquidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public CO2water( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { - super(liquidPhase); - } + /** + *

+ * Constructor for CO2water. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public CO2water( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + super(liquidPhase); + } - // aqueous correlation - /** {@inheritDoc} */ - @Override - public double calcBinaryDiffusionCoefficient(int i, int j, int method) { - binaryDiffusionCoefficients[i][j] = - 0.03389 * Math.exp(-2213.7 / liquidPhase.getPhase().getTemperature()) * 1e-4; // Tammi - // (1994) - // - - // Pcheco - return binaryDiffusionCoefficients[i][j]; - } + // aqueous correlation + /** {@inheritDoc} */ + @Override + public double calcBinaryDiffusionCoefficient(int i, int j, int method) { + // Tammi (1994) - Pcheco + binaryDiffusionCoefficients[i][j] = + 0.03389 * Math.exp(-2213.7 / liquidPhase.getPhase().getTemperature()) * 1e-4; + return binaryDiffusionCoefficients[i][j]; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/Diffusivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/Diffusivity.java index b29002f377..156bb629a5 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/Diffusivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/Diffusivity.java @@ -7,127 +7,128 @@ * @author Even Solbraa */ abstract class Diffusivity extends - neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.LiquidPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DiffusivityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Diffusivity.class); - - double[][] binaryDiffusionCoefficients; - double[] effectiveDiffusionCoefficient; - - /** - *

- * Constructor for Diffusivity. - *

- */ - public Diffusivity() {} - - /** - *

- * Constructor for Diffusivity. - *

- * - * @param liquidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Diffusivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { - super(liquidPhase); - binaryDiffusionCoefficients = new double[liquidPhase.getPhase() - .getNumberOfComponents()][liquidPhase.getPhase().getNumberOfComponents()]; - effectiveDiffusionCoefficient = new double[liquidPhase.getPhase().getNumberOfComponents()]; - } + neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.LiquidPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DiffusivityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Diffusivity.class); - /** {@inheritDoc} */ - @Override - public Diffusivity clone() { - Diffusivity properties = null; + double[][] binaryDiffusionCoefficients; + double[] effectiveDiffusionCoefficient; - try { - properties = (Diffusivity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for Diffusivity. + *

+ */ + public Diffusivity() {} - properties.binaryDiffusionCoefficients = this.binaryDiffusionCoefficients.clone(); - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - System.arraycopy(this.binaryDiffusionCoefficients[i], 0, - properties.binaryDiffusionCoefficients[i], 0, - liquidPhase.getPhase().getNumberOfComponents()); - } - return properties; - } + /** + *

+ * Constructor for Diffusivity. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Diffusivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + super(liquidPhase); + binaryDiffusionCoefficients = new double[liquidPhase.getPhase() + .getNumberOfComponents()][liquidPhase.getPhase().getNumberOfComponents()]; + effectiveDiffusionCoefficient = new double[liquidPhase.getPhase().getNumberOfComponents()]; + } - /** {@inheritDoc} */ - @Override - public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { - binaryDiffusionCoefficients[i][j] = - calcBinaryDiffusionCoefficient(i, j, binaryDiffusionCoefficientMethod); - } - } + /** {@inheritDoc} */ + @Override + public Diffusivity clone() { + Diffusivity properties = null; - // Vignes correlation - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { - if (i != j) { - binaryDiffusionCoefficients[i][j] = Math.pow(binaryDiffusionCoefficients[i][j], - liquidPhase.getPhase().getComponents()[j].getx()) - * Math.pow(binaryDiffusionCoefficients[j][i], - liquidPhase.getPhase().getComponents()[i].getx()); - } - // System.out.println("diff liq " + binaryDiffusionCoefficients[i][j] ); - } - } - return binaryDiffusionCoefficients; + try { + properties = (Diffusivity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void calcEffectiveDiffusionCoefficients() { - double sum = 0; - - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - sum = 0; - for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { - if (i == j) { - } else { - sum += liquidPhase.getPhase().getComponents()[j].getx() - / binaryDiffusionCoefficients[i][j]; - } - } - effectiveDiffusionCoefficient[i] = - (1.0 - liquidPhase.getPhase().getComponents()[i].getx()) / sum; - } + properties.binaryDiffusionCoefficients = this.binaryDiffusionCoefficients.clone(); + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + System.arraycopy(this.binaryDiffusionCoefficients[i], 0, + properties.binaryDiffusionCoefficients[i], 0, + liquidPhase.getPhase().getNumberOfComponents()); } + return properties; + } - /** {@inheritDoc} */ - @Override - public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j) { - return binaryDiffusionCoefficients[i][j]; + /** {@inheritDoc} */ + @Override + public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { + binaryDiffusionCoefficients[i][j] = + calcBinaryDiffusionCoefficient(i, j, binaryDiffusionCoefficientMethod); + } } - /** {@inheritDoc} */ - @Override - public double getEffectiveDiffusionCoefficient(int i) { - return effectiveDiffusionCoefficient[i]; + // Vignes correlation + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { + if (i != j) { + binaryDiffusionCoefficients[i][j] = Math.pow(binaryDiffusionCoefficients[i][j], + liquidPhase.getPhase().getComponents()[j].getx()) + * Math.pow(binaryDiffusionCoefficients[j][i], + liquidPhase.getPhase().getComponents()[i].getx()); + } + // System.out.println("diff liq " + binaryDiffusionCoefficients[i][j] ); + } } + return binaryDiffusionCoefficients; + } + + /** {@inheritDoc} */ + @Override + public void calcEffectiveDiffusionCoefficients() { + double sum = 0; - /** {@inheritDoc} */ - @Override - public double getFickBinaryDiffusionCoefficient(int i, int j) { - double temp = (i == j) ? 1.0 : 0.0; - double nonIdealCorrection = temp + liquidPhase.getPhase().getComponents()[i].getx() - * liquidPhase.getPhase().getComponents()[i].getdfugdn(j) - * liquidPhase.getPhase().getNumberOfMolesInPhase(); - if (Double.isNaN(nonIdealCorrection)) { - nonIdealCorrection = 1.0; + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + sum = 0; + for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { + if (i == j) { + } else { + sum += + liquidPhase.getPhase().getComponents()[j].getx() / binaryDiffusionCoefficients[i][j]; } - return binaryDiffusionCoefficients[i][j] * nonIdealCorrection; // shuld be divided by non - // ideality factor + } + effectiveDiffusionCoefficient[i] = + (1.0 - liquidPhase.getPhase().getComponents()[i].getx()) / sum; } + } + + /** {@inheritDoc} */ + @Override + public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j) { + return binaryDiffusionCoefficients[i][j]; + } + + /** {@inheritDoc} */ + @Override + public double getEffectiveDiffusionCoefficient(int i) { + return effectiveDiffusionCoefficient[i]; + } + + /** {@inheritDoc} */ + @Override + public double getFickBinaryDiffusionCoefficient(int i, int j) { + double temp = (i == j) ? 1.0 : 0.0; + double nonIdealCorrection = temp + liquidPhase.getPhase().getComponents()[i].getx() + * liquidPhase.getPhase().getComponents()[i].getdfugdn(j) + * liquidPhase.getPhase().getNumberOfMolesInPhase(); + if (Double.isNaN(nonIdealCorrection)) { + nonIdealCorrection = 1.0; + } + + // shuld be divided by non ideality factor + return binaryDiffusionCoefficients[i][j] * nonIdealCorrection; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/SiddiqiLucasMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/SiddiqiLucasMethod.java index 60932acc7b..5dcf8feda6 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/SiddiqiLucasMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/diffusivity/SiddiqiLucasMethod.java @@ -9,72 +9,66 @@ * @version $Id: $Id */ public class SiddiqiLucasMethod extends Diffusivity { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SiddiqiLucasMethod. - *

- */ - public SiddiqiLucasMethod() {} + /** + *

+ * Constructor for SiddiqiLucasMethod. + *

+ */ + public SiddiqiLucasMethod() {} - /** - *

- * Constructor for SiddiqiLucasMethod. - *

- * - * @param liquidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public SiddiqiLucasMethod( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { - super(liquidPhase); - } + /** + *

+ * Constructor for SiddiqiLucasMethod. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public SiddiqiLucasMethod( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + super(liquidPhase); + } - // aqueous correlation - /** {@inheritDoc} */ - @Override - public double calcBinaryDiffusionCoefficient(int i, int j, int method) { - // method - estimation method - // if(method==? then) - // remember this is the Maxwell-Stefan diffusion coefficients - binaryDiffusionCoefficients[i][j] = 1.0e-4 * 2.98e-7 - * Math.pow(liquidPhase.getPureComponentViscosity(j), -1.026) - * Math.pow( - 1.0 / liquidPhase.getPhase().getComponents()[i].getNormalLiquidDensity() - * liquidPhase.getPhase().getComponents()[i].getMolarMass() * 1000, - -0.5473) - * liquidPhase.getPhase().getTemperature(); - return binaryDiffusionCoefficients[i][j]; - } + // aqueous correlation + /** {@inheritDoc} */ + @Override + public double calcBinaryDiffusionCoefficient(int i, int j, int method) { + // method - estimation method + // if(method==? then) + // remember this is the Maxwell-Stefan diffusion coefficients + binaryDiffusionCoefficients[i][j] = + 1.0e-4 * 2.98e-7 * Math.pow(liquidPhase.getPureComponentViscosity(j), -1.026) + * Math.pow(1.0 / liquidPhase.getPhase().getComponents()[i].getNormalLiquidDensity() + * liquidPhase.getPhase().getComponents()[i].getMolarMass() * 1000, -0.5473) + * liquidPhase.getPhase().getTemperature(); + return binaryDiffusionCoefficients[i][j]; + } - // non-aqueous correlation - /** - *

- * calcBinaryDiffusionCoefficient2. - *

- * - * @param i a int - * @param j a int - * @param method a int - * @return a double - */ - public double calcBinaryDiffusionCoefficient2(int i, int j, int method) { - // method - estimation method - // if(method==? then) - // remember this is the Maxwell-Stefan diffusion coefficients - binaryDiffusionCoefficients[i][j] = 1.0e-4 * 9.89e-8 - * Math.pow(liquidPhase.getPureComponentViscosity(j), -0.907) - * Math.pow( - 1.0 / liquidPhase.getPhase().getComponents()[i].getNormalLiquidDensity() - * liquidPhase.getPhase().getComponents()[i].getMolarMass() * 1000, - -0.45) - * Math.pow( - 1.0 / liquidPhase.getPhase().getComponents()[j].getNormalLiquidDensity() - * liquidPhase.getPhase().getComponents()[j].getMolarMass() * 1000, - 0.265) - * liquidPhase.getPhase().getTemperature(); - return binaryDiffusionCoefficients[i][j]; - } + // non-aqueous correlation + /** + *

+ * calcBinaryDiffusionCoefficient2. + *

+ * + * @param i a int + * @param j a int + * @param method a int + * @return a double + */ + public double calcBinaryDiffusionCoefficient2(int i, int j, int method) { + // method - estimation method + // if(method==? then) + // remember this is the Maxwell-Stefan diffusion coefficients + binaryDiffusionCoefficients[i][j] = + 1.0e-4 * 9.89e-8 * Math.pow(liquidPhase.getPureComponentViscosity(j), -0.907) + * Math.pow(1.0 / liquidPhase.getPhase().getComponents()[i].getNormalLiquidDensity() + * liquidPhase.getPhase().getComponents()[i].getMolarMass() * 1000, -0.45) + * Math.pow(1.0 / liquidPhase.getPhase().getComponents()[j].getNormalLiquidDensity() + * liquidPhase.getPhase().getComponents()[j].getMolarMass() * 1000, 0.265) + * liquidPhase.getPhase().getTemperature(); + return binaryDiffusionCoefficients[i][j]; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/viscosity/AmineViscosity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/viscosity/AmineViscosity.java index 32267238fa..3b3655fb15 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/viscosity/AmineViscosity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/viscosity/AmineViscosity.java @@ -9,43 +9,43 @@ * @version Method was checked on 2.8.2001 - seems to be correct - Even Solbraa */ public class AmineViscosity extends Viscosity { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for AmineViscosity. - *

- */ - public AmineViscosity() {} + /** + *

+ * Constructor for AmineViscosity. + *

+ */ + public AmineViscosity() {} - /** - *

- * Constructor for AmineViscosity. - *

- * - * @param liquidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public AmineViscosity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { - super(liquidPhase); - } + /** + *

+ * Constructor for AmineViscosity. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public AmineViscosity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + super(liquidPhase); + } - /** {@inheritDoc} */ - @Override - public double calcViscosity() { - super.calcViscosity(); - double wtFracA = liquidPhase.getPhase().getComponent("MDEA").getx() - * liquidPhase.getPhase().getComponent("MDEA").getMolarMass() - / liquidPhase.getPhase().getMolarMass(); - wtFracA += liquidPhase.getPhase().getComponent("MDEA+").getx() - * liquidPhase.getPhase().getComponent("MDEA+").getMolarMass() - / liquidPhase.getPhase().getMolarMass(); - double viscA = -12.197 - 8.905 * wtFracA; - double viscB = 1438.717 + 4218.749 * wtFracA; - double logviscosity = viscA + viscB / liquidPhase.getPhase().getTemperature();// //N-sek/m2 - // System.out.println("visc " + Math.exp(logviscosity)); - return Math.exp(logviscosity); - } + /** {@inheritDoc} */ + @Override + public double calcViscosity() { + super.calcViscosity(); + double wtFracA = liquidPhase.getPhase().getComponent("MDEA").getx() + * liquidPhase.getPhase().getComponent("MDEA").getMolarMass() + / liquidPhase.getPhase().getMolarMass(); + wtFracA += liquidPhase.getPhase().getComponent("MDEA+").getx() + * liquidPhase.getPhase().getComponent("MDEA+").getMolarMass() + / liquidPhase.getPhase().getMolarMass(); + double viscA = -12.197 - 8.905 * wtFracA; + double viscB = 1438.717 + 4218.749 * wtFracA; + double logviscosity = viscA + viscB / liquidPhase.getPhase().getTemperature(); // //N-sek/m2 + // System.out.println("visc " + Math.exp(logviscosity)); + return Math.exp(logviscosity); + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/viscosity/Viscosity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/viscosity/Viscosity.java index ccc814a49f..bd538bd63a 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/viscosity/Viscosity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/viscosity/Viscosity.java @@ -12,159 +12,156 @@ * @version Method was checked on 2.8.2001 - seems to be correct - Even Solbraa */ public class Viscosity extends - neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.LiquidPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Viscosity.class); + neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.LiquidPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Viscosity.class); - public double[] pureComponentViscosity; + public double[] pureComponentViscosity; - /** - *

- * Constructor for Viscosity. - *

- */ - public Viscosity() {} + /** + *

+ * Constructor for Viscosity. + *

+ */ + public Viscosity() {} - /** - *

- * Constructor for Viscosity. - *

- * - * @param liquidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Viscosity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { - super(liquidPhase); - pureComponentViscosity = new double[liquidPhase.getPhase().getNumberOfComponents()]; - } - - /** {@inheritDoc} */ - @Override - public Viscosity clone() { - Viscosity properties = null; + /** + *

+ * Constructor for Viscosity. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Viscosity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + super(liquidPhase); + pureComponentViscosity = new double[liquidPhase.getPhase().getNumberOfComponents()]; + } - try { - properties = (Viscosity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public Viscosity clone() { + Viscosity properties = null; - return properties; + try { + properties = (Viscosity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double calcViscosity() { - double tempVar = 0, tempVar2 = 0; - double viscosity = 0; - this.calcPureComponentViscosity(); + return properties; + } - // method og Grunberg and Nissan [87] - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - tempVar += liquidPhase.getPhase().getWtFrac(i) * Math.log(pureComponentViscosity[i]); - // tempVar += liquidPhase.getPhase().getComponents()[i].getx() * - // Math.log(pureComponentViscosity[i]); - } - tempVar2 = 0; - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - double wigthFraci = liquidPhase.getPhase().getWtFrac(i); - for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { - double wigthFracj = liquidPhase.getPhase().getWtFrac(j); - if (i != j) { - tempVar2 += wigthFraci * wigthFracj - * liquidPhase.getMixingRule().getViscosityGij(i, j); - // System.out.println("gij " + liquidPhase.getMixingRule().getViscosityGij(i, - // j)); - } + /** {@inheritDoc} */ + @Override + public double calcViscosity() { + double tempVar = 0; + double tempVar2 = 0; + this.calcPureComponentViscosity(); - // if(i!=j) tempVar2 += - // liquidPhase.getPhase().getComponents()[i].getx()*liquidPhase.getPhase().getComponents()[j].getx()*liquidPhase.getMixingRule().getViscosityGij(i,j); - } - } - viscosity = Math.exp(tempVar + tempVar2) / 1.0e3; // N-sek/m2 - return viscosity; + // method og Grunberg and Nissan [87] + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + tempVar += liquidPhase.getPhase().getWtFrac(i) * Math.log(pureComponentViscosity[i]); + // tempVar += liquidPhase.getPhase().getComponents()[i].getx() * + // Math.log(pureComponentViscosity[i]); } - - /** - *

- * calcPureComponentViscosity. - *

- */ - public void calcPureComponentViscosity() { - pureComponentViscosity = new double[liquidPhase.getPhase().getNumberOfComponents()]; - for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { - if (liquidPhase.getPhase().getTemperature() > liquidPhase.getPhase().getComponents()[i] - .getTC()) { - pureComponentViscosity[i] = 5.0e-1; - } else if (liquidPhase.getPhase().getComponents()[i].getLiquidViscosityModel() == 1) { - pureComponentViscosity[i] = - liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(0) - * Math.pow(liquidPhase.getPhase().getTemperature(), - liquidPhase.getPhase().getComponents()[i] - .getLiquidViscosityParameter(1)); - } else if (liquidPhase.getPhase().getComponents()[i].getLiquidViscosityModel() == 2) { - pureComponentViscosity[i] = Math.exp(liquidPhase.getPhase().getComponents()[i] - .getLiquidViscosityParameter(0) - + liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(1) - / liquidPhase.getPhase().getTemperature()); - } else if (liquidPhase.getPhase().getComponents()[i].getLiquidViscosityModel() == 3) { - pureComponentViscosity[i] = Math.exp(liquidPhase.getPhase().getComponents()[i] - .getLiquidViscosityParameter(0) - + liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(1) - / liquidPhase.getPhase().getTemperature() - + liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(2) - * liquidPhase.getPhase().getTemperature() - + liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(3) - * Math.pow(liquidPhase.getPhase().getTemperature(), 2)); - } else if (liquidPhase.getPhase().getComponents()[i].getLiquidViscosityModel() == 4) { - pureComponentViscosity[i] = Math.pow(10, - liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(0) - * (1.0 / liquidPhase.getPhase().getTemperature() - - 1.0 / liquidPhase.getPhase().getComponents()[i] - .getLiquidViscosityParameter(1)));// liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(2)*liquidPhase.getPhase().getTemperature()+liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(3)/liquidPhase.getPhase().getTemperature()+liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(3)*Math.pow(liquidPhase.getPhase().getTemperature(),2)); - } else { - // System.out.println("no pure component viscosity model defined for component " - // + liquidPhase.getPhase().getComponents()[i].getComponentName()); - pureComponentViscosity[i] = 7.0e-1; - } - pureComponentViscosity[i] *= ((getViscosityPressureCorrection(i) + 1.0) / 2.0); - // System.out.println("pure comp viscosity " + pureComponentViscosity[i] + " - // pressure cor " + getViscosityPressureCorrection(i)); + tempVar2 = 0; + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + double wigthFraci = liquidPhase.getPhase().getWtFrac(i); + for (int j = 0; j < liquidPhase.getPhase().getNumberOfComponents(); j++) { + double wigthFracj = liquidPhase.getPhase().getWtFrac(j); + if (i != j) { + tempVar2 += wigthFraci * wigthFracj * liquidPhase.getMixingRule().getViscosityGij(i, j); + // System.out.println("gij " + liquidPhase.getMixingRule().getViscosityGij(i, + // j)); } + + // if(i!=j) tempVar2 += + // liquidPhase.getPhase().getComponents()[i].getx()*liquidPhase.getPhase().getComponents()[j].getx()*liquidPhase.getMixingRule().getViscosityGij(i,j); + } } + double viscosity = Math.exp(tempVar + tempVar2) / 1.0e3; // N-sek/m2 + return viscosity; + } - /** {@inheritDoc} */ - @Override - public double getPureComponentViscosity(int i) { - return pureComponentViscosity[i]; + /** + *

+ * calcPureComponentViscosity. + *

+ */ + public void calcPureComponentViscosity() { + pureComponentViscosity = new double[liquidPhase.getPhase().getNumberOfComponents()]; + for (int i = 0; i < liquidPhase.getPhase().getNumberOfComponents(); i++) { + if (liquidPhase.getPhase().getTemperature() > liquidPhase.getPhase().getComponents()[i] + .getTC()) { + pureComponentViscosity[i] = 5.0e-1; + } else if (liquidPhase.getPhase().getComponents()[i].getLiquidViscosityModel() == 1) { + pureComponentViscosity[i] = + liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(0) + * Math.pow(liquidPhase.getPhase().getTemperature(), + liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(1)); + } else if (liquidPhase.getPhase().getComponents()[i].getLiquidViscosityModel() == 2) { + pureComponentViscosity[i] = + Math.exp(liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(0) + + liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(1) + / liquidPhase.getPhase().getTemperature()); + } else if (liquidPhase.getPhase().getComponents()[i].getLiquidViscosityModel() == 3) { + pureComponentViscosity[i] = + Math.exp(liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(0) + + liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(1) + / liquidPhase.getPhase().getTemperature() + + liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(2) + * liquidPhase.getPhase().getTemperature() + + liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(3) + * Math.pow(liquidPhase.getPhase().getTemperature(), 2)); + } else if (liquidPhase.getPhase().getComponents()[i].getLiquidViscosityModel() == 4) { + pureComponentViscosity[i] = Math.pow(10, liquidPhase.getPhase().getComponents()[i] + .getLiquidViscosityParameter(0) + * (1.0 / liquidPhase.getPhase().getTemperature() + - 1.0 / liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(1))); // liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(2)*liquidPhase.getPhase().getTemperature()+liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(3)/liquidPhase.getPhase().getTemperature()+liquidPhase.getPhase().getComponents()[i].getLiquidViscosityParameter(3)*Math.pow(liquidPhase.getPhase().getTemperature(),2)); + } else { + // System.out.println("no pure component viscosity model defined for component " + // + liquidPhase.getPhase().getComponents()[i].getComponentName()); + pureComponentViscosity[i] = 7.0e-1; + } + pureComponentViscosity[i] *= ((getViscosityPressureCorrection(i) + 1.0) / 2.0); + // System.out.println("pure comp viscosity " + pureComponentViscosity[i] + " + // pressure cor " + getViscosityPressureCorrection(i)); } + } - /** - *

- * getViscosityPressureCorrection. - *

- * - * @param i a int - * @return a double - */ - public double getViscosityPressureCorrection(int i) { - double TR = liquidPhase.getPhase().getTemperature() - / liquidPhase.getPhase().getComponent(i).getTC(); - if (TR > 1) { - return 1.0; - } - double deltaPr = (liquidPhase.getPhase().getPressure() - 0.0) - / liquidPhase.getPhase().getComponent(i).getPC(); - double A = 0.9991 - (4.674 * 1e-4 / (1.0523 * Math.pow(TR, -0.03877) - 1.0513)); - double D = (0.3257 / Math.pow((1.0039 - Math.pow(TR, 2.573)), 0.2906)) - 0.2086; - double C = -0.07921 + 2.1616 * TR - 13.4040 * TR * TR + 44.1706 * Math.pow(TR, 3) - - 84.8291 * Math.pow(TR, 4) + 96.1209 * Math.pow(TR, 5) - 59.8127 * Math.pow(TR, 6) - + 15.6719 * Math.pow(TR, 7); - return (1.0 + D * Math.pow(deltaPr / 2.118, A)) - / (1.0 + C * liquidPhase.getPhase().getComponent(i).getAcentricFactor() * deltaPr); + /** {@inheritDoc} */ + @Override + public double getPureComponentViscosity(int i) { + return pureComponentViscosity[i]; + } + + /** + *

+ * getViscosityPressureCorrection. + *

+ * + * @param i a int + * @return a double + */ + public double getViscosityPressureCorrection(int i) { + double TR = + liquidPhase.getPhase().getTemperature() / liquidPhase.getPhase().getComponent(i).getTC(); + if (TR > 1) { + return 1.0; } + double deltaPr = (liquidPhase.getPhase().getPressure() - 0.0) + / liquidPhase.getPhase().getComponent(i).getPC(); + double A = 0.9991 - (4.674 * 1e-4 / (1.0523 * Math.pow(TR, -0.03877) - 1.0513)); + double D = (0.3257 / Math.pow((1.0039 - Math.pow(TR, 2.573)), 0.2906)) - 0.2086; + double C = -0.07921 + 2.1616 * TR - 13.4040 * TR * TR + 44.1706 * Math.pow(TR, 3) + - 84.8291 * Math.pow(TR, 4) + 96.1209 * Math.pow(TR, 5) - 59.8127 * Math.pow(TR, 6) + + 15.6719 * Math.pow(TR, 7); + return (1.0 + D * Math.pow(deltaPr / 2.118, A)) + / (1.0 + C * liquidPhase.getPhase().getComponent(i).getAcentricFactor() * deltaPr); + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/ConductivityInterface.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/ConductivityInterface.java index 25d61436ef..d1a17da53f 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/ConductivityInterface.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/ConductivityInterface.java @@ -3,21 +3,25 @@ import neqsim.thermo.ThermodynamicConstantsInterface; /** - *

ConductivityInterface interface.

+ *

+ * ConductivityInterface interface. + *

* * @author Even Solbraa * @version $Id: $Id */ public interface ConductivityInterface extends ThermodynamicConstantsInterface, - neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface { - /** - *

calcConductivity.

- * - * @return a double - */ - public double calcConductivity(); + neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface { + /** + *

+ * calcConductivity. + *

+ * + * @return a double + */ + public double calcConductivity(); - /** {@inheritDoc} */ - @Override - public ConductivityInterface clone(); + /** {@inheritDoc} */ + @Override + public ConductivityInterface clone(); } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DensityInterface.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DensityInterface.java index 3d47a81da8..aa7ec819f7 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DensityInterface.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DensityInterface.java @@ -3,21 +3,25 @@ import neqsim.thermo.ThermodynamicConstantsInterface; /** - *

DensityInterface interface.

+ *

+ * DensityInterface interface. + *

* * @author Even Solbraa * @version $Id: $Id */ public interface DensityInterface extends ThermodynamicConstantsInterface, - neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface { - /** - *

calcDensity.

- * - * @return a double - */ - public double calcDensity(); + neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface { + /** + *

+ * calcDensity. + *

+ * + * @return a double + */ + public double calcDensity(); - /** {@inheritDoc} */ - @Override - public DensityInterface clone(); + /** {@inheritDoc} */ + @Override + public DensityInterface clone(); } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DiffusivityInterface.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DiffusivityInterface.java index 68b5ef73e4..7e75bd2b38 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DiffusivityInterface.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/DiffusivityInterface.java @@ -11,71 +11,71 @@ * @version $Id: $Id */ public interface DiffusivityInterface extends ThermodynamicConstantsInterface, - neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface { - /** - *

- * calcBinaryDiffusionCoefficient. - *

- * - * @param i a int - * @param j a int - * @param method a int - * @return a double - */ - public double calcBinaryDiffusionCoefficient(int i, int j, int method); + neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface { + /** + *

+ * calcBinaryDiffusionCoefficient. + *

+ * + * @param i a int + * @param j a int + * @param method a int + * @return a double + */ + public double calcBinaryDiffusionCoefficient(int i, int j, int method); - /** - *

- * calcDiffusionCoefficients. - *

- * - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - * @return an array of {@link double} objects - */ - public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod); + /** + *

+ * calcDiffusionCoefficients. + *

+ * + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + * @return an array of type double + */ + public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod); - /** - *

- * getFickBinaryDiffusionCoefficient. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getFickBinaryDiffusionCoefficient(int i, int j); + /** + *

+ * getFickBinaryDiffusionCoefficient. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getFickBinaryDiffusionCoefficient(int i, int j); - /** - *

- * getMaxwellStefanBinaryDiffusionCoefficient. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j); + /** + *

+ * getMaxwellStefanBinaryDiffusionCoefficient. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j); - /** - *

- * getEffectiveDiffusionCoefficient. - *

- * - * @param i a int - * @return a double - */ - public double getEffectiveDiffusionCoefficient(int i); + /** + *

+ * getEffectiveDiffusionCoefficient. + *

+ * + * @param i a int + * @return a double + */ + public double getEffectiveDiffusionCoefficient(int i); - /** - *

- * calcEffectiveDiffusionCoefficients. - *

- */ - public void calcEffectiveDiffusionCoefficients(); + /** + *

+ * calcEffectiveDiffusionCoefficients. + *

+ */ + public void calcEffectiveDiffusionCoefficients(); - /** {@inheritDoc} */ - @Override - public DiffusivityInterface clone(); + /** {@inheritDoc} */ + @Override + public DiffusivityInterface clone(); } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/ViscosityInterface.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/ViscosityInterface.java index fa66476cad..766fdbe089 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/ViscosityInterface.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/methodInterface/ViscosityInterface.java @@ -1,29 +1,35 @@ package neqsim.physicalProperties.physicalPropertyMethods.methodInterface; /** - *

ViscosityInterface interface.

+ *

+ * ViscosityInterface interface. + *

* * @author Even Solbraa * @version $Id: $Id */ public interface ViscosityInterface - extends neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface { - /** - *

calcViscosity.

- * - * @return a double - */ - public double calcViscosity(); + extends neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethodInterface { + /** + *

+ * calcViscosity. + *

+ * + * @return a double + */ + public double calcViscosity(); - /** - *

getPureComponentViscosity.

- * - * @param i a int - * @return a double - */ - public double getPureComponentViscosity(int i); + /** + *

+ * getPureComponentViscosity. + *

+ * + * @param i a int + * @return a double + */ + public double getPureComponentViscosity(int i); - /** {@inheritDoc} */ - @Override - public ViscosityInterface clone(); + /** {@inheritDoc} */ + @Override + public ViscosityInterface clone(); } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/SolidPhysicalPropertyMethod.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/SolidPhysicalPropertyMethod.java index 8b28d5e425..336d7dd311 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/SolidPhysicalPropertyMethod.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/SolidPhysicalPropertyMethod.java @@ -9,39 +9,39 @@ * @version $Id: $Id */ public class SolidPhysicalPropertyMethod - extends neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethod { - private static final long serialVersionUID = 1000; + extends neqsim.physicalProperties.physicalPropertyMethods.PhysicalPropertyMethod { + private static final long serialVersionUID = 1000; - protected neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase; + protected neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase; - /** - *

- * Constructor for SolidPhysicalPropertyMethod. - *

- */ - public SolidPhysicalPropertyMethod() { - super(); - } + /** + *

+ * Constructor for SolidPhysicalPropertyMethod. + *

+ */ + public SolidPhysicalPropertyMethod() { + super(); + } - /** - *

- * Constructor for SolidPhysicalPropertyMethod. - *

- * - * @param solidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public SolidPhysicalPropertyMethod( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase) { - super(); - this.solidPhase = solidPhase; - } + /** + *

+ * Constructor for SolidPhysicalPropertyMethod. + *

+ * + * @param solidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public SolidPhysicalPropertyMethod( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase) { + super(); + this.solidPhase = solidPhase; + } - /** {@inheritDoc} */ - @Override - public void setPhase( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase) { - this.solidPhase = solidPhase; - } + /** {@inheritDoc} */ + @Override + public void setPhase( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase) { + this.solidPhase = solidPhase; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/conductivity/Conductivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/conductivity/Conductivity.java index dbf6fe4baa..a762698815 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/conductivity/Conductivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/conductivity/Conductivity.java @@ -3,10 +3,12 @@ * * Created on 1. november 2000, 19:00 */ + package neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.conductivity; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.phase.PhaseType; /** *

@@ -17,59 +19,59 @@ * @version $Id: $Id */ public class Conductivity extends - neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.SolidPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Conductivity.class); - - double conductivity = 0; + neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.SolidPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Conductivity.class); - /** - *

- * Constructor for Conductivity. - *

- */ - public Conductivity() {} + double conductivity = 0; - /** - *

- * Constructor for Conductivity. - *

- * - * @param solidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Conductivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase) { - super(solidPhase); - } + /** + *

+ * Constructor for Conductivity. + *

+ */ + public Conductivity() {} - /** {@inheritDoc} */ - @Override - public Conductivity clone() { - Conductivity properties = null; + /** + *

+ * Constructor for Conductivity. + *

+ * + * @param solidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Conductivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase) { + super(solidPhase); + } - try { - properties = (Conductivity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public Conductivity clone() { + Conductivity properties = null; - return properties; + try { + properties = (Conductivity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double calcConductivity() { - // using default value of parafin wax - if (solidPhase.getPhase().getPhaseTypeName().equals("wax")) { - conductivity = 0.25; - } else { - conductivity = 2.18; - } + return properties; + } - return conductivity; + /** {@inheritDoc} */ + @Override + public double calcConductivity() { + // using default value of parafin wax + if (solidPhase.getPhase().getType() == PhaseType.WAX) { + conductivity = 0.25; + } else { + conductivity = 2.18; } + + return conductivity; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/density/Density.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/density/Density.java index b194c00bb2..53e15a298a 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/density/Density.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/density/Density.java @@ -3,6 +3,7 @@ * * Created on 24. januar 2001, 19:49 */ + package neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.density; import org.apache.logging.log4j.LogManager; @@ -17,65 +18,64 @@ * @version $Id: $Id */ public class Density extends - neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.SolidPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DensityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Density.class); - - /** - *

- * Constructor for Density. - *

- */ - public Density() {} + neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.SolidPhysicalPropertyMethod + implements neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DensityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Density.class); - /** - *

- * Constructor for Density. - *

- * - * @param liquidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Density( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { - this.solidPhase = liquidPhase; - } + /** + *

+ * Constructor for Density. + *

+ */ + public Density() {} - /** {@inheritDoc} */ - @Override - public Density clone() { - Density properties = null; + /** + *

+ * Constructor for Density. + *

+ * + * @param liquidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Density( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface liquidPhase) { + this.solidPhase = liquidPhase; + } - try { - properties = (Density) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public Density clone() { + Density properties = null; - return properties; + try { + properties = (Density) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - * {@inheritDoc} - * - * Returns the density of the phase. Unit: kg/m^3 - */ - @Override - public double calcDensity() { - double tempVar = 0.0; - if (solidPhase.getPhase().useVolumeCorrection()) { - for (int i = 0; i < solidPhase.getPhase().getNumberOfComponents(); i++) { - tempVar += solidPhase.getPhase().getComponents()[i].getx() - * (solidPhase.getPhase().getComponents()[i].getVolumeCorrection() - + solidPhase.getPhase().getComponents()[i].getVolumeCorrectionT() - * (solidPhase.getPhase().getTemperature() - 288.15)); - } - } - // System.out.println("density correction tempvar " + tempVar); - return 1.0 / (solidPhase.getPhase().getMolarVolume() - tempVar) - * solidPhase.getPhase().getMolarMass() * 1e5; + return properties; + } + + /** + * {@inheritDoc} + * + * Returns the density of the phase. Unit: kg/m^3 + */ + @Override + public double calcDensity() { + double tempVar = 0.0; + if (solidPhase.getPhase().useVolumeCorrection()) { + for (int i = 0; i < solidPhase.getPhase().getNumberOfComponents(); i++) { + tempVar += solidPhase.getPhase().getComponents()[i].getx() + * (solidPhase.getPhase().getComponents()[i].getVolumeCorrection() + + solidPhase.getPhase().getComponents()[i].getVolumeCorrectionT() + * (solidPhase.getPhase().getTemperature() - 288.15)); + } } + // System.out.println("density correction tempvar " + tempVar); + return 1.0 / (solidPhase.getPhase().getMolarVolume() - tempVar) + * solidPhase.getPhase().getMolarMass() * 1e5; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/diffusivity/Diffusivity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/diffusivity/Diffusivity.java index ae94ef3b4f..c0d651ab66 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/diffusivity/Diffusivity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/diffusivity/Diffusivity.java @@ -12,95 +12,95 @@ * @version $Id: $Id */ public class Diffusivity extends - neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.SolidPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DiffusivityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Diffusivity.class); + neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.SolidPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DiffusivityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Diffusivity.class); - double[][] binaryDiffusionCoefficients; - double[] effectiveDiffusionCoefficient; + double[][] binaryDiffusionCoefficients; + double[] effectiveDiffusionCoefficient; - /** - *

- * Constructor for Diffusivity. - *

- */ - public Diffusivity() {} + /** + *

+ * Constructor for Diffusivity. + *

+ */ + public Diffusivity() {} - /** - *

- * Constructor for Diffusivity. - *

- * - * @param solidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Diffusivity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase) { - super(solidPhase); - binaryDiffusionCoefficients = new double[solidPhase.getPhase() - .getNumberOfComponents()][solidPhase.getPhase().getNumberOfComponents()]; - effectiveDiffusionCoefficient = new double[solidPhase.getPhase().getNumberOfComponents()]; - } - - /** {@inheritDoc} */ - @Override - public Diffusivity clone() { - Diffusivity properties = null; + /** + *

+ * Constructor for Diffusivity. + *

+ * + * @param solidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Diffusivity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase) { + super(solidPhase); + binaryDiffusionCoefficients = new double[solidPhase.getPhase() + .getNumberOfComponents()][solidPhase.getPhase().getNumberOfComponents()]; + effectiveDiffusionCoefficient = new double[solidPhase.getPhase().getNumberOfComponents()]; + } - try { - properties = (Diffusivity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public Diffusivity clone() { + Diffusivity properties = null; - properties.binaryDiffusionCoefficients = this.binaryDiffusionCoefficients.clone(); - for (int i = 0; i < solidPhase.getPhase().getNumberOfComponents(); i++) { - // todo: fails with indexerror if components has been added after construction of object - // getNumberOfComponents() > len(this.binaryDiffusionCoefficients) - System.arraycopy(this.binaryDiffusionCoefficients[i], 0, - properties.binaryDiffusionCoefficients[i], 0, - solidPhase.getPhase().getNumberOfComponents()); - } - return properties; + try { + properties = (Diffusivity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - return binaryDiffusionCoefficients; + properties.binaryDiffusionCoefficients = this.binaryDiffusionCoefficients.clone(); + for (int i = 0; i < solidPhase.getPhase().getNumberOfComponents(); i++) { + // TODO: fails with indexerror if components has been added after construction of object + // getNumberOfComponents() > len(this.binaryDiffusionCoefficients) + System.arraycopy(this.binaryDiffusionCoefficients[i], 0, + properties.binaryDiffusionCoefficients[i], 0, + solidPhase.getPhase().getNumberOfComponents()); } + return properties; + } - /** {@inheritDoc} */ - @Override - public void calcEffectiveDiffusionCoefficients() {} + /** {@inheritDoc} */ + @Override + public double[][] calcDiffusionCoefficients(int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + return binaryDiffusionCoefficients; + } - /** {@inheritDoc} */ - @Override - public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j) { - return binaryDiffusionCoefficients[i][j]; - } + /** {@inheritDoc} */ + @Override + public void calcEffectiveDiffusionCoefficients() {} - /** {@inheritDoc} */ - @Override - public double getEffectiveDiffusionCoefficient(int i) { - return effectiveDiffusionCoefficient[i]; - } + /** {@inheritDoc} */ + @Override + public double getMaxwellStefanBinaryDiffusionCoefficient(int i, int j) { + return binaryDiffusionCoefficients[i][j]; + } - /** {@inheritDoc} */ - @Override - public double getFickBinaryDiffusionCoefficient(int i, int j) { - double nonIdealCorrection = 1.0; - return binaryDiffusionCoefficients[i][j] * nonIdealCorrection; // shuld be divided by non - // ideality factor - } + /** {@inheritDoc} */ + @Override + public double getEffectiveDiffusionCoefficient(int i) { + return effectiveDiffusionCoefficient[i]; + } - /** {@inheritDoc} */ - @Override - public double calcBinaryDiffusionCoefficient(int i, int j, int method) { - throw new UnsupportedOperationException("Not supported yet."); - } + /** {@inheritDoc} */ + @Override + public double getFickBinaryDiffusionCoefficient(int i, int j) { + double nonIdealCorrection = 1.0; + // shuld be divided by non ideality factor + return binaryDiffusionCoefficients[i][j] * nonIdealCorrection; + } + + /** {@inheritDoc} */ + @Override + public double calcBinaryDiffusionCoefficient(int i, int j, int method) { + throw new UnsupportedOperationException("Unimplemented method 'calcBinaryDiffusionCoefficient"); + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/viscosity/Viscosity.java b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/viscosity/Viscosity.java index 7a126e9e43..366336d5ee 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/viscosity/Viscosity.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertyMethods/solidPhysicalProperties/viscosity/Viscosity.java @@ -13,78 +13,78 @@ * @version Method was checked on 2.8.2001 - seems to be correct - Even Solbraa */ public class Viscosity extends - neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.SolidPhysicalPropertyMethod - implements - neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Viscosity.class); + neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.SolidPhysicalPropertyMethod + implements + neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Viscosity.class); - public double[] pureComponentViscosity; + public double[] pureComponentViscosity; - /** - *

- * Constructor for Viscosity. - *

- */ - public Viscosity() {} + /** + *

+ * Constructor for Viscosity. + *

+ */ + public Viscosity() {} - /** - *

- * Constructor for Viscosity. - *

- * - * @param solidPhase a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public Viscosity( - neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase) { - super(solidPhase); - } - - /** {@inheritDoc} */ - @Override - public Viscosity clone() { - Viscosity properties = null; + /** + *

+ * Constructor for Viscosity. + *

+ * + * @param solidPhase a + * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public Viscosity( + neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface solidPhase) { + super(solidPhase); + } - try { - properties = (Viscosity) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public Viscosity clone() { + Viscosity properties = null; - return properties; + try { + properties = (Viscosity) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double calcViscosity() { - double viscosity = NaN; - return viscosity; - } + return properties; + } - /** - *

- * calcPureComponentViscosity. - *

- */ - public void calcPureComponentViscosity() {} + /** {@inheritDoc} */ + @Override + public double calcViscosity() { + double viscosity = NaN; + return viscosity; + } - /** {@inheritDoc} */ - @Override - public double getPureComponentViscosity(int i) { - return pureComponentViscosity[i]; - } + /** + *

+ * calcPureComponentViscosity. + *

+ */ + public void calcPureComponentViscosity() {} - /** - *

- * getViscosityPressureCorrection. - *

- * - * @param i a int - * @return a double - */ - public double getViscosityPressureCorrection(int i) { - return 0.0; - } + /** {@inheritDoc} */ + @Override + public double getPureComponentViscosity(int i) { + return pureComponentViscosity[i]; + } + + /** + *

+ * getViscosityPressureCorrection. + *

+ * + * @param i a int + * @return a double + */ + public double getViscosityPressureCorrection(int i) { + return 0.0; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalProperties.java index d2e95208c5..068e104245 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalProperties.java @@ -3,10 +3,22 @@ * * Created on 29. oktober 2000, 16:13 */ + package neqsim.physicalProperties.physicalPropertySystem; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.conductivity.PFCTConductivityMethodMod86; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.diffusivity.CorrespondingStatesDiffusivity; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.FrictionTheoryViscosityMethod; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.LBCViscosityMethod; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodHeavyOil; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodMod86; +import neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.conductivity.ChungConductivityMethod; +import neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.WilkeLeeDiffusivity; +import neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.diffusivity.AmineDiffusivity; +import neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.diffusivity.SiddiqiLucasMethod; +import neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface; import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.phase.PhaseInterface; @@ -19,401 +31,390 @@ * @version $Id: $Id */ public abstract class PhysicalProperties - implements PhysicalPropertiesInterface, ThermodynamicConstantsInterface { - /** {@inheritDoc} */ - @Override - public void setMixingRule( - neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface mixingRule) { - this.mixingRule = mixingRule; - } - - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(PhysicalProperties.class); - - public PhaseInterface phase; - protected int binaryDiffusionCoefficientMethod; - protected int multicomponentDiffusionMethod; - private neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface mixingRule = - null; - public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface conductivityCalc; - public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface viscosityCalc; - public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DiffusivityInterface diffusivityCalc; - public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DensityInterface densityCalc; - public double kinematicViscosity = 0, density = 0, viscosity = 0, conductivity = 0; - private double[] waxViscosityParameter = {37.82, 83.96, 8.559e6}; - - /** - *

- * Constructor for PhysicalProperties. - *

- */ - public PhysicalProperties() {} - - /** - *

- * Constructor for PhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public PhysicalProperties(PhaseInterface phase) { - this.phase = phase; - } - - /** - *

- * Constructor for PhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - */ - public PhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - this.phase = phase; - this.binaryDiffusionCoefficientMethod = binaryDiffusionCoefficientMethod; - this.multicomponentDiffusionMethod = multicomponentDiffusionMethod; - } - - /** {@inheritDoc} */ - @Override - public PhysicalProperties clone() { - PhysicalProperties properties = null; - - try { - properties = (PhysicalProperties) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - properties.densityCalc = densityCalc.clone(); - properties.diffusivityCalc = diffusivityCalc.clone(); - properties.viscosityCalc = viscosityCalc.clone(); - properties.conductivityCalc = conductivityCalc.clone(); - if (mixingRule != null) - properties.mixingRule = mixingRule.clone(); - return properties; - } - - /** {@inheritDoc} */ - @Override - public PhaseInterface getPhase() { - return phase; - } - - /** {@inheritDoc} */ - @Override - public neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface getMixingRule() { - return mixingRule; - } - - /** {@inheritDoc} */ - @Override - public void setMixingRuleNull() { - setMixingRule(null); - } - - /** {@inheritDoc} */ - @Override - public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface getViscosityModel() { - return viscosityCalc; - } - - /** {@inheritDoc} */ - @Override - public void setConductivityModel(String model) { - if ("PFCT".equals(model)) { - conductivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.conductivity.PFCTConductivityMethodMod86( - this); - } else if ("polynom".equals(model)) { - conductivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.conductivity.Conductivity( - this); - } else if ("Chung".equals(model)) { - conductivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.conductivity.ChungConductivityMethod( - this); - } else { - conductivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.conductivity.PFCTConductivityMethodMod86( - this); - } - } - - /** {@inheritDoc} */ - @Override - public void setViscosityModel(String model) { - if ("polynom".equals(model)) { - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.viscosity.Viscosity( - this); - } else if ("friction theory".equals(model)) { - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.FrictionTheoryViscosityMethod( - this); - } else if ("LBC".equals(model)) { - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.LBCViscosityMethod( - this); - } else if ("PFCT".equals(model)) { - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodMod86( - this); - } else if ("PFCT-Heavy-Oil".equals(model)) { - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodHeavyOil( - this); - } - } - - /** - *

- * setDiffusionCoefficientModel. - *

- * - * @param model a {@link java.lang.String} object - */ - public void setDiffusionCoefficientModel(String model) { - if ("CSP".equals(model)) { - diffusivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.diffusivity.CorrespondingStatesDiffusivity( - this); - } else if ("Wilke Lee".equals(model)) { - diffusivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.WilkeLeeDiffusivity( - this); - } else if ("Siddiqi Lucas".equals(model)) { - diffusivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.diffusivity.SiddiqiLucasMethod( - this); - } else if ("Alkanol amine".equals(model)) { - diffusivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.diffusivity.AmineDiffusivity( - this); - } - } - - /** {@inheritDoc} */ - @Override - public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface getConductivityModel() { - return conductivityCalc; - } - - /** {@inheritDoc} */ - @Override - public void setBinaryDiffusionCoefficientMethod(int i) { - binaryDiffusionCoefficientMethod = i; - } - - /** {@inheritDoc} */ - @Override - public void setMulticomponentDiffusionMethod(int i) { - multicomponentDiffusionMethod = i; - } - - /** - *

- * calcKinematicViscosity. - *

- * - * @return a double - */ - public double calcKinematicViscosity() { - kinematicViscosity = viscosity / phase.getDensity(); - return kinematicViscosity; - } - - /** - *

- * setPhases. - *

- */ - public void setPhases() { - conductivityCalc.setPhase(this); - densityCalc.setPhase(this); - viscosityCalc.setPhase(this); - diffusivityCalc.setPhase(this); - } - - /** {@inheritDoc} */ - @Override - public void init(PhaseInterface phase) { - this.phase = phase; - this.setPhases(); - try { - density = densityCalc.calcDensity(); - viscosity = viscosityCalc.calcViscosity(); - kinematicViscosity = this.calcKinematicViscosity(); - diffusivityCalc.calcDiffusionCoefficients(binaryDiffusionCoefficientMethod, - multicomponentDiffusionMethod); - // diffusivityCalc.calcEffectiveDiffusionCoefficients(); - conductivity = conductivityCalc.calcConductivity(); - } catch (Exception e) { - // might be a chance that entering here ends in an infinite loop... - phase.resetPhysicalProperties(); - phase.initPhysicalProperties(); - } - } - - /** {@inheritDoc} */ - @Override - public void setPhase(PhaseInterface phase) { - this.phase = phase; - this.setPhases(); - } - - /** {@inheritDoc} */ - @Override - public void init(PhaseInterface phase, String type) { - if (type.equals("density")) { - density = densityCalc.calcDensity(); - } else if (type.equals("viscosity")) { - viscosity = viscosityCalc.calcViscosity(); - } else if (type.equals("conductivity")) { - conductivity = conductivityCalc.calcConductivity(); - } else { - init(phase); - } - } - - /** {@inheritDoc} */ - @Override - public double getViscosityOfWaxyOil(double waxVolumeFraction, double shareRate) { - return viscosity * (Math.exp(waxViscosityParameter[0] * waxVolumeFraction) - + waxViscosityParameter[1] * waxVolumeFraction / Math.sqrt(shareRate) - + waxViscosityParameter[2] * Math.pow(waxVolumeFraction, 4.0) / shareRate); - } - - /** {@inheritDoc} */ - @Override - public double getViscosity() { - if (viscosity < 0) { - return 1e-5; - } - return viscosity; - } - - /** {@inheritDoc} */ - @Override - public double getPureComponentViscosity(int i) { - return viscosityCalc.getPureComponentViscosity(i); - } - - /** {@inheritDoc} */ - @Override - public double getConductivity() { - if (conductivity < 0) { - return 1e-5; - } - return conductivity; - } - - /** {@inheritDoc} */ - @Override - public double getDensity() { - return density; - } - - /** {@inheritDoc} */ - @Override - public double calcDensity() { - return densityCalc.calcDensity(); - } - - /** {@inheritDoc} */ - @Override - public double getKinematicViscosity() { - if (kinematicViscosity < 0) { - return 1e-5; - } - return kinematicViscosity; - } - - /** - *

- * getDiffusionCoefficient. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getDiffusionCoefficient(int i, int j) { - return diffusivityCalc.getMaxwellStefanBinaryDiffusionCoefficient(i, j); - } - - /** {@inheritDoc} */ - @Override - public double getDiffusionCoefficient(String comp1, String comp2) { - return diffusivityCalc.getMaxwellStefanBinaryDiffusionCoefficient( - phase.getComponent(comp1).getComponentNumber(), - phase.getComponent(comp2).getComponentNumber()); - } - - /** {@inheritDoc} */ - @Override - public double getFickDiffusionCoefficient(int i, int j) { - return diffusivityCalc.getFickBinaryDiffusionCoefficient(i, j); - } - - /** {@inheritDoc} */ - @Override - public void calcEffectiveDiffusionCoefficients() { - this.init(phase); - diffusivityCalc.calcEffectiveDiffusionCoefficients(); - } - - /** {@inheritDoc} */ - @Override - public double getEffectiveDiffusionCoefficient(int i) { - return diffusivityCalc.getEffectiveDiffusionCoefficient(i); - } - - /** {@inheritDoc} */ - @Override - public double getEffectiveDiffusionCoefficient(String compName) { - return diffusivityCalc.getEffectiveDiffusionCoefficient( - phase.getComponent(compName).getComponentNumber()); - } - - /** {@inheritDoc} */ - @Override - public double getEffectiveSchmidtNumber(int i) { - return getKinematicViscosity() / diffusivityCalc.getEffectiveDiffusionCoefficient(i); - } - - /** - *

- * Getter for the field waxViscosityParameter. - *

- * - * @return the waxViscosityParameter - */ - public double[] getWaxViscosityParameter() { - return waxViscosityParameter; - } - - /** - *

- * Setter for the field waxViscosityParameter. - *

- * - * @param waxViscosityParameter the waxViscosityParameter to set - */ - public void setWaxViscosityParameter(double[] waxViscosityParameter) { - this.waxViscosityParameter = waxViscosityParameter; - } - - /** - *

- * Setter for the field waxViscosityParameter. - *

- * - * @param paramNumber a int - * @param waxViscosityParameter a double - */ - public void setWaxViscosityParameter(int paramNumber, double waxViscosityParameter) { - this.waxViscosityParameter[paramNumber] = waxViscosityParameter; - } + implements PhysicalPropertiesInterface, ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhysicalProperties.class); + + public PhaseInterface phase; + protected int binaryDiffusionCoefficientMethod; + protected int multicomponentDiffusionMethod; + private neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface mixingRule = + null; + public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface conductivityCalc; + public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface viscosityCalc; + public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DiffusivityInterface diffusivityCalc; + public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.DensityInterface densityCalc; + public double kinematicViscosity = 0; + public double density = 0; + public double viscosity = 0; + public double conductivity = 0; + private double[] waxViscosityParameter = {37.82, 83.96, 8.559e6}; + + /** + *

+ * Constructor for PhysicalProperties. + *

+ */ + public PhysicalProperties() {} + + /** + *

+ * Constructor for PhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public PhysicalProperties(PhaseInterface phase) { + this.phase = phase; + } + + /** + *

+ * Constructor for PhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + */ + public PhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + this.phase = phase; + this.binaryDiffusionCoefficientMethod = binaryDiffusionCoefficientMethod; + this.multicomponentDiffusionMethod = multicomponentDiffusionMethod; + } + + /** {@inheritDoc} */ + @Override + public PhysicalProperties clone() { + PhysicalProperties properties = null; + + try { + properties = (PhysicalProperties) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + properties.densityCalc = densityCalc.clone(); + properties.diffusivityCalc = diffusivityCalc.clone(); + properties.viscosityCalc = viscosityCalc.clone(); + properties.conductivityCalc = conductivityCalc.clone(); + if (mixingRule != null) { + properties.mixingRule = mixingRule.clone(); + } + return properties; + } + + /** {@inheritDoc} */ + @Override + public PhaseInterface getPhase() { + return phase; + } + + /** {@inheritDoc} */ + @Override + public neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface getMixingRule() { + return mixingRule; + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule( + neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface mixingRule) { + this.mixingRule = mixingRule; + } + + /** {@inheritDoc} */ + @Override + public void setMixingRuleNull() { + setMixingRule(null); + } + + /** {@inheritDoc} */ + @Override + public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface getViscosityModel() { + return viscosityCalc; + } + + /** {@inheritDoc} */ + @Override + public void setDensityModel(String model) { + if ("Peneloux volume shift".equals(model)) { + densityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.density.Density( + this); + } else if ("Costald".equals(model)) { + densityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.density.Costald( + this); + } + } + + /** {@inheritDoc} */ + @Override + public void setConductivityModel(String model) { + if ("PFCT".equals(model)) { + conductivityCalc = new PFCTConductivityMethodMod86(this); + } else if ("polynom".equals(model)) { + conductivityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.conductivity.Conductivity( + this); + } else if ("Chung".equals(model)) { + conductivityCalc = new ChungConductivityMethod(this); + } else { + conductivityCalc = new PFCTConductivityMethodMod86(this); + } + } + + /** {@inheritDoc} */ + @Override + public void setViscosityModel(String model) { + if ("polynom".equals(model)) { + viscosityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.viscosity.Viscosity( + this); + } else if ("friction theory".equals(model)) { + viscosityCalc = new FrictionTheoryViscosityMethod(this); + } else if ("LBC".equals(model)) { + viscosityCalc = new LBCViscosityMethod(this); + } else if ("PFCT".equals(model)) { + viscosityCalc = new PFCTViscosityMethodMod86(this); + } else if ("PFCT-Heavy-Oil".equals(model)) { + viscosityCalc = new PFCTViscosityMethodHeavyOil(this); + } + } + + /** + *

+ * setDiffusionCoefficientModel. + *

+ * + * @param model a {@link java.lang.String} object + */ + public void setDiffusionCoefficientModel(String model) { + if ("CSP".equals(model)) { + diffusivityCalc = new CorrespondingStatesDiffusivity(this); + } else if ("Wilke Lee".equals(model)) { + diffusivityCalc = new WilkeLeeDiffusivity(this); + } else if ("Siddiqi Lucas".equals(model)) { + diffusivityCalc = new SiddiqiLucasMethod(this); + } else if ("Alkanol amine".equals(model)) { + diffusivityCalc = new AmineDiffusivity(this); + } + } + + /** {@inheritDoc} */ + @Override + public ConductivityInterface getConductivityModel() { + return conductivityCalc; + } + + /** {@inheritDoc} */ + @Override + public void setBinaryDiffusionCoefficientMethod(int i) { + binaryDiffusionCoefficientMethod = i; + } + + /** {@inheritDoc} */ + @Override + public void setMulticomponentDiffusionMethod(int i) { + multicomponentDiffusionMethod = i; + } + + /** + *

+ * calcKinematicViscosity. + *

+ * + * @return a double + */ + public double calcKinematicViscosity() { + kinematicViscosity = viscosity / phase.getDensity(); + return kinematicViscosity; + } + + /** + *

+ * setPhases. + *

+ */ + public void setPhases() { + conductivityCalc.setPhase(this); + densityCalc.setPhase(this); + viscosityCalc.setPhase(this); + diffusivityCalc.setPhase(this); + } + + /** {@inheritDoc} */ + @Override + public void setPhase(PhaseInterface phase) { + this.phase = phase; + this.setPhases(); + } + + /** {@inheritDoc} */ + @Override + public void init(PhaseInterface phase) { + this.phase = phase; + this.setPhases(); + try { + density = densityCalc.calcDensity(); + viscosity = viscosityCalc.calcViscosity(); + kinematicViscosity = this.calcKinematicViscosity(); + diffusivityCalc.calcDiffusionCoefficients(binaryDiffusionCoefficientMethod, + multicomponentDiffusionMethod); + // diffusivityCalc.calcEffectiveDiffusionCoefficients(); + conductivity = conductivityCalc.calcConductivity(); + } catch (Exception ex) { + // might be a chance that entering here ends in an infinite loop... + phase.resetPhysicalProperties(); + phase.initPhysicalProperties(); + } + } + + /** {@inheritDoc} */ + @Override + public void init(PhaseInterface phase, String type) { + if (type.equalsIgnoreCase("density")) { + density = densityCalc.calcDensity(); + } else if (type.equalsIgnoreCase("viscosity")) { + viscosity = viscosityCalc.calcViscosity(); + } else if (type.equalsIgnoreCase("conductivity")) { + conductivity = conductivityCalc.calcConductivity(); + } else { + init(phase); + } + } + + /** {@inheritDoc} */ + @Override + public double getViscosityOfWaxyOil(double waxVolumeFraction, double shareRate) { + return viscosity * (Math.exp(waxViscosityParameter[0] * waxVolumeFraction) + + waxViscosityParameter[1] * waxVolumeFraction / Math.sqrt(shareRate) + + waxViscosityParameter[2] * Math.pow(waxVolumeFraction, 4.0) / shareRate); + } + + /** {@inheritDoc} */ + @Override + public double getViscosity() { + if (viscosity < 0) { + return 1e-5; + } + return viscosity; + } + + /** {@inheritDoc} */ + @Override + public double getPureComponentViscosity(int i) { + return viscosityCalc.getPureComponentViscosity(i); + } + + /** {@inheritDoc} */ + @Override + public double getConductivity() { + if (conductivity < 0) { + return 1e-5; + } + return conductivity; + } + + /** {@inheritDoc} */ + @Override + public double getDensity() { + return density; + } + + /** {@inheritDoc} */ + @Override + public double calcDensity() { + return densityCalc.calcDensity(); + } + + /** {@inheritDoc} */ + @Override + public double getKinematicViscosity() { + if (kinematicViscosity < 0) { + return 1e-5; + } + return kinematicViscosity; + } + + /** {@inheritDoc} */ + @Override + public double getDiffusionCoefficient(int i, int j) { + return diffusivityCalc.getMaxwellStefanBinaryDiffusionCoefficient(i, j); + } + + /** {@inheritDoc} */ + @Override + public double getDiffusionCoefficient(String comp1, String comp2) { + return diffusivityCalc.getMaxwellStefanBinaryDiffusionCoefficient( + phase.getComponent(comp1).getComponentNumber(), + phase.getComponent(comp2).getComponentNumber()); + } + + /** {@inheritDoc} */ + @Override + public double getFickDiffusionCoefficient(int i, int j) { + return diffusivityCalc.getFickBinaryDiffusionCoefficient(i, j); + } + + /** {@inheritDoc} */ + @Override + public void calcEffectiveDiffusionCoefficients() { + this.init(phase); + diffusivityCalc.calcEffectiveDiffusionCoefficients(); + } + + /** {@inheritDoc} */ + @Override + public double getEffectiveDiffusionCoefficient(int i) { + return diffusivityCalc.getEffectiveDiffusionCoefficient(i); + } + + /** {@inheritDoc} */ + @Override + public double getEffectiveDiffusionCoefficient(String compName) { + return diffusivityCalc + .getEffectiveDiffusionCoefficient(phase.getComponent(compName).getComponentNumber()); + } + + /** {@inheritDoc} */ + @Override + public double getEffectiveSchmidtNumber(int i) { + return getKinematicViscosity() / diffusivityCalc.getEffectiveDiffusionCoefficient(i); + } + + /** + *

+ * Getter for the field waxViscosityParameter. + *

+ * + * @return the waxViscosityParameter + */ + public double[] getWaxViscosityParameter() { + return waxViscosityParameter; + } + + /** + *

+ * Setter for the field waxViscosityParameter. + *

+ * + * @param waxViscosityParameter the waxViscosityParameter to set + */ + public void setWaxViscosityParameter(double[] waxViscosityParameter) { + this.waxViscosityParameter = waxViscosityParameter; + } + + /** + *

+ * Setter for the field waxViscosityParameter. + *

+ * + * @param paramNumber a int + * @param waxViscosityParameter a double + */ + public void setWaxViscosityParameter(int paramNumber, double waxViscosityParameter) { + this.waxViscosityParameter[paramNumber] = waxViscosityParameter; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalPropertiesInterface.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalPropertiesInterface.java index f27feb65ea..7918ba1b21 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalPropertiesInterface.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/PhysicalPropertiesInterface.java @@ -3,6 +3,7 @@ * * Created on 29. oktober 2000, 16:14 */ + package neqsim.physicalProperties.physicalPropertySystem; import neqsim.thermo.phase.PhaseInterface; @@ -16,274 +17,281 @@ * @version $Id: $Id */ public interface PhysicalPropertiesInterface extends Cloneable { - /** - *

- * getPureComponentViscosity. - *

- * - * @param i a int - * @return a double - */ - public double getPureComponentViscosity(int i); + /** + *

+ * getPureComponentViscosity. + *

+ * + * @param i a int + * @return a double + */ + public double getPureComponentViscosity(int i); + + /** + *

+ * setDensityModel. + *

+ * + * @param model a {@link java.lang.String} object + */ + public void setDensityModel(String model); - /** - *

- * setMixingRule. - *

- * - * @param mixingRule a - * {@link neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface} - * object - */ - public void setMixingRule( - neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface mixingRule); + /** + *

+ * setMixingRule. + *

+ * + * @param mixingRule a + * {@link neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface} object + */ + public void setMixingRule( + neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface mixingRule); - /** - *

- * getMixingRule. - *

- * - * @return a {@link neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface} - * object - */ - public neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface getMixingRule(); + /** + *

+ * getMixingRule. + *

+ * + * @return a {@link neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface} + * object + */ + public neqsim.physicalProperties.mixingRule.PhysicalPropertyMixingRuleInterface getMixingRule(); - /** - *

- * getViscosity. - *

- * - * @return a double - */ - public double getViscosity(); + /** + *

+ * getViscosity. + *

+ * + * @return a double + */ + public double getViscosity(); - /** - *

- * setMixingRuleNull. - *

- */ - public void setMixingRuleNull(); + /** + *

+ * setMixingRuleNull. + *

+ */ + public void setMixingRuleNull(); - /** - *

- * getViscosityOfWaxyOil. - *

- * - * @param waxVolumeFraction a double - * @param shareRate a double - * @return a double - */ - public double getViscosityOfWaxyOil(double waxVolumeFraction, double shareRate); + /** + *

+ * getViscosityOfWaxyOil. + *

+ * + * @param waxVolumeFraction a double + * @param shareRate a double + * @return a double + */ + public double getViscosityOfWaxyOil(double waxVolumeFraction, double shareRate); - /** - *

- * getDiffusionCoefficient. - *

- * - * @param comp1 a {@link java.lang.String} object - * @param comp2 a {@link java.lang.String} object - * @return a double - */ - public double getDiffusionCoefficient(String comp1, String comp2); + /** + *

+ * getDiffusionCoefficient. + *

+ * + * @param comp1 a {@link java.lang.String} object + * @param comp2 a {@link java.lang.String} object + * @return a double + */ + public double getDiffusionCoefficient(String comp1, String comp2); - /** - *

- * getConductivity. - *

- * - * @return a double - */ - public double getConductivity(); + /** + *

+ * getConductivity. + *

+ * + * @return a double + */ + public double getConductivity(); - /** - *

- * getKinematicViscosity. - *

- * - * @return a double - */ - public double getKinematicViscosity(); + /** + *

+ * getKinematicViscosity. + *

+ * + * @return a double + */ + public double getKinematicViscosity(); - /** - *

- * getEffectiveDiffusionCoefficient. - *

- * - * @param compName a {@link java.lang.String} object - * @return a double - */ - public double getEffectiveDiffusionCoefficient(String compName); + /** + *

+ * getEffectiveDiffusionCoefficient. + *

+ * + * @param compName a {@link java.lang.String} object + * @return a double + */ + public double getEffectiveDiffusionCoefficient(String compName); - /** - *

- * setViscosityModel. - *

- * - * @param model a {@link java.lang.String} object - */ - public void setViscosityModel(String model); + /** + *

+ * setViscosityModel. + *

+ * + * @param model a {@link java.lang.String} object + */ + public void setViscosityModel(String model); - /** - *

- * setConductivityModel. - *

- * - * @param model a {@link java.lang.String} object - */ - public void setConductivityModel(String model); + /** + *

+ * setConductivityModel. + *

+ * + * @param model a {@link java.lang.String} object + */ + public void setConductivityModel(String model); - /** - *

- * getDensity. - *

- * - * @return a double - */ - public double getDensity(); + /** + *

+ * getDensity. + *

+ * + * @return a double + */ + public double getDensity(); - /** - *

- * getPhase. - *

- * - * @return a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public PhaseInterface getPhase(); + /** + *

+ * getPhase. + *

+ * + * @return a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public PhaseInterface getPhase(); - /** - *

- * setPhase. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void setPhase(PhaseInterface phase); + /** + *

+ * setPhase. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void setPhase(PhaseInterface phase); - /** - *

- * calcDensity. - *

- * - * @return a double - */ - public double calcDensity(); + /** + *

+ * calcDensity. + *

+ * + * @return a double + */ + public double calcDensity(); - /** - *

- * getEffectiveSchmidtNumber. - *

- * - * @param i a int - * @return a double - */ - public double getEffectiveSchmidtNumber(int i); + /** + *

+ * getEffectiveSchmidtNumber. + *

+ * + * @param i a int + * @return a double + */ + public double getEffectiveSchmidtNumber(int i); - /** - *

- * getDiffusionCoefficient. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getDiffusionCoefficient(int i, int j); + /** + *

+ * getDiffusionCoefficient. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getDiffusionCoefficient(int i, int j); - /** - *

- * getEffectiveDiffusionCoefficient. - *

- * - * @param i a int - * @return a double - */ - public double getEffectiveDiffusionCoefficient(int i); + /** + *

+ * getEffectiveDiffusionCoefficient. + *

+ * + * @param i a int + * @return a double + */ + public double getEffectiveDiffusionCoefficient(int i); - /** - *

- * calcEffectiveDiffusionCoefficients. - *

- */ - public void calcEffectiveDiffusionCoefficients(); + /** + *

+ * calcEffectiveDiffusionCoefficients. + *

+ */ + public void calcEffectiveDiffusionCoefficients(); - /** - *

- * getFickDiffusionCoefficient. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getFickDiffusionCoefficient(int i, int j); + /** + *

+ * getFickDiffusionCoefficient. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getFickDiffusionCoefficient(int i, int j); - /** - *

- * Initialize / calculate all physical properties of object. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void init(PhaseInterface phase); + /** + *

+ * Initialize / calculate all physical properties of object. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void init(PhaseInterface phase); - /** - *

- * init. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param type a {@link java.lang.String} object - */ - public void init(PhaseInterface phase, String type); + /** + *

+ * init. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param type a {@link java.lang.String} object + */ + public void init(PhaseInterface phase, String type); - /** - *

- * clone. - *

- * - * @return a - * {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} - * object - */ - public PhysicalPropertiesInterface clone(); + /** + *

+ * clone. + *

+ * + * @return a {@link neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterface} + * object + */ + public PhysicalPropertiesInterface clone(); - /** - *

- * setBinaryDiffusionCoefficientMethod. - *

- * - * @param i a int - */ - public void setBinaryDiffusionCoefficientMethod(int i); + /** + *

+ * setBinaryDiffusionCoefficientMethod. + *

+ * + * @param i a int + */ + public void setBinaryDiffusionCoefficientMethod(int i); - /** - *

- * setMulticomponentDiffusionMethod. - *

- * - * @param i a int - */ - public void setMulticomponentDiffusionMethod(int i); + /** + *

+ * setMulticomponentDiffusionMethod. + *

+ * + * @param i a int + */ + public void setMulticomponentDiffusionMethod(int i); - /** - *

- * getViscosityModel. - *

- * - * @return a - * {@link neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface} - * object - */ - public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface getViscosityModel(); + /** + *

+ * getViscosityModel. + *

+ * + * @return a + * {@link neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface} + * object + */ + public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ViscosityInterface getViscosityModel(); - /** - *

- * getConductivityModel. - *

- * - * @return a - * {@link neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface} - * object - */ - public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface getConductivityModel(); + /** + *

+ * getConductivityModel. + *

+ * + * @return a + * {@link neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface} + * object + */ + public neqsim.physicalProperties.physicalPropertyMethods.methodInterface.ConductivityInterface getConductivityModel(); } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/commonPhasePhysicalProperties/DefaultPhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/commonPhasePhysicalProperties/DefaultPhysicalProperties.java index f1b40fb9a0..0c80d60ad0 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/commonPhasePhysicalProperties/DefaultPhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/commonPhasePhysicalProperties/DefaultPhysicalProperties.java @@ -1,5 +1,8 @@ package neqsim.physicalProperties.physicalPropertySystem.commonPhasePhysicalProperties; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.conductivity.PFCTConductivityMethodMod86; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.diffusivity.CorrespondingStatesDiffusivity; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.FrictionTheoryViscosityMethod; import neqsim.physicalProperties.physicalPropertySystem.PhysicalProperties; import neqsim.thermo.phase.PhaseInterface; @@ -12,47 +15,37 @@ * @version $Id: $Id */ public class DefaultPhysicalProperties extends PhysicalProperties { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for DefaultPhysicalProperties. - *

- */ - public DefaultPhysicalProperties() {} + /** + *

+ * Constructor for DefaultPhysicalProperties. + *

+ */ + public DefaultPhysicalProperties() {} - /** - *

- * Constructor for DefaultPhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - */ - public DefaultPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); - conductivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.conductivity.PFCTConductivityMethodMod86( - this); + /** + *

+ * Constructor for DefaultPhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + */ + public DefaultPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); + conductivityCalc = new PFCTConductivityMethodMod86(this); - // viscosityCalc = new - // physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethod(this); - // viscosityCalc = new - // physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodMod86(this); - // viscosityCalc = new - // physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.LBCViscosityMethod(this); - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.FrictionTheoryViscosityMethod( - this); - diffusivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.diffusivity.CorrespondingStatesDiffusivity( - this); - - densityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.density.Density( - this); - this.init(phase); - } + // viscosityCalc = new PFCTViscosityMethod(this); + // viscosityCalc = new PFCTViscosityMethodMod86(this); + // viscosityCalc = new LBCViscosityMethod(this); + viscosityCalc = new FrictionTheoryViscosityMethod(this); + diffusivityCalc = new CorrespondingStatesDiffusivity(this); + densityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.density.Density( + this); + this.init(phase); + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/AirPhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/AirPhysicalProperties.java index a0a856cae6..c43d1a714c 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/AirPhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/AirPhysicalProperties.java @@ -3,8 +3,11 @@ * * Created on 13. august 2001, 10:34 */ + package neqsim.physicalProperties.physicalPropertySystem.gasPhysicalProperties; +import neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.conductivity.ChungConductivityMethod; +import neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.viscosity.ChungViscosityMethod; import neqsim.thermo.phase.PhaseInterface; /** @@ -16,42 +19,37 @@ * @version $Id: $Id */ public class AirPhysicalProperties extends GasPhysicalProperties { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for AirPhysicalProperties. - *

- */ - public AirPhysicalProperties() {} + /** + *

+ * Constructor for AirPhysicalProperties. + *

+ */ + public AirPhysicalProperties() {} - /** - *

- * Constructor for AirPhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - */ - public AirPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); - conductivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.conductivity.ChungConductivityMethod( - this); - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.viscosity.ChungViscosityMethod( - this); - diffusivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.Diffusivity( - this); - // diffusivityCalc = new - // physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.WilkeLeeDiffusivity(this); + /** + *

+ * Constructor for AirPhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + */ + public AirPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); + conductivityCalc = new ChungConductivityMethod(this); + viscosityCalc = new ChungViscosityMethod(this); + diffusivityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.Diffusivity( + this); + // diffusivityCalc = new WilkeLeeDiffusivity(this); - densityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.density.Density( - this); - this.init(phase); - } + densityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.density.Density( + this); + this.init(phase); + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/GasPhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/GasPhysicalProperties.java index b16f8c1be2..f77013672d 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/GasPhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/GasPhysicalProperties.java @@ -3,10 +3,13 @@ * * Created on 29. oktober 2000, 16:18 */ + package neqsim.physicalProperties.physicalPropertySystem.gasPhysicalProperties; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.conductivity.PFCTConductivityMethodMod86; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodHeavyOil; import neqsim.thermo.phase.PhaseInterface; /** @@ -18,67 +21,57 @@ * @version $Id: $Id */ public class GasPhysicalProperties - extends neqsim.physicalProperties.physicalPropertySystem.PhysicalProperties { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(GasPhysicalProperties.class); + extends neqsim.physicalProperties.physicalPropertySystem.PhysicalProperties { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(GasPhysicalProperties.class); - /** - *

- * Constructor for GasPhysicalProperties. - *

- */ - public GasPhysicalProperties() {} + /** + *

+ * Constructor for GasPhysicalProperties. + *

+ */ + public GasPhysicalProperties() {} - /** - *

- * Constructor for GasPhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - */ - public GasPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); - // conductivityCalc = new - // neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.conductivity.ChungConductivityMethod(this); - conductivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.conductivity.PFCTConductivityMethodMod86( - this); - // viscosityCalc = new - // physicalProperties.physicalPropertyMethods.gasPhysicalProperties.viscosity.ChungViscosityMethod(this); - // viscosityCalc = new - // neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.FrictionTheoryViscosityMethod(this); - // viscosityCalc = new - // neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodMod86(this); - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodHeavyOil( - this); + /** + *

+ * Constructor for GasPhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + */ + public GasPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); + // conductivityCalc = new ChungConductivityMethod(this); + conductivityCalc = new PFCTConductivityMethodMod86(this); + // viscosityCalc = new ChungViscosityMethod(this); + // viscosityCalc = new FrictionTheoryViscosityMethod(this); + // viscosityCalc = new PFCTViscosityMethodMod86(this); + viscosityCalc = new PFCTViscosityMethodHeavyOil(this); - /// viscosityCalc = new - /// neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.LBCViscosityMethod(this); - diffusivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.Diffusivity( - this); - // diffusivityCalc = new - // physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.WilkeLeeDiffusivity(this); - densityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.density.Density( - this); - // this.init(phase); - } + // viscosityCalc = new LBCViscosityMethod(this); + diffusivityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.Diffusivity( + this); + // diffusivityCalc = new WilkeLeeDiffusivity(this); + densityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.density.Density( + this); + // this.init(phase); + } - /** {@inheritDoc} */ - @Override - public GasPhysicalProperties clone() { - GasPhysicalProperties properties = null; + /** {@inheritDoc} */ + @Override + public GasPhysicalProperties clone() { + GasPhysicalProperties properties = null; - try { - properties = (GasPhysicalProperties) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return properties; + try { + properties = (GasPhysicalProperties) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + return properties; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/NaturalGasPhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/NaturalGasPhysicalProperties.java index 98f3ba9f1c..9862c6f9fd 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/NaturalGasPhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/gasPhysicalProperties/NaturalGasPhysicalProperties.java @@ -3,8 +3,11 @@ * * Created on 13. august 2001, 10:32 */ + package neqsim.physicalProperties.physicalPropertySystem.gasPhysicalProperties; +import neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.conductivity.ChungConductivityMethod; +import neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.viscosity.ChungViscosityMethod; import neqsim.thermo.phase.PhaseInterface; /** @@ -16,44 +19,38 @@ * @version $Id: $Id */ public class NaturalGasPhysicalProperties extends GasPhysicalProperties { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for NaturalGasPhysicalProperties. - *

- */ - public NaturalGasPhysicalProperties() {} + /** + *

+ * Constructor for NaturalGasPhysicalProperties. + *

+ */ + public NaturalGasPhysicalProperties() {} - /** - *

- * Constructor for NaturalGasPhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - */ - public NaturalGasPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); - conductivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.conductivity.ChungConductivityMethod( - this); - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.viscosity.ChungViscosityMethod( - this); - // viscosityCalc = new - // physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodMod86(this); - diffusivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.Diffusivity( - this); - // diffusivityCalc = new - // physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.WilkeLeeDiffusivity(this); + /** + *

+ * Constructor for NaturalGasPhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + */ + public NaturalGasPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); + conductivityCalc = new ChungConductivityMethod(this); + viscosityCalc = new ChungViscosityMethod(this); + // viscosityCalc = new PFCTViscosityMethodMod86(this); + diffusivityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.diffusivity.Diffusivity( + this); + // diffusivityCalc = new WilkeLeeDiffusivity(this); - densityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.density.Density( - this); - this.init(phase); - } + densityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.density.Density( + this); + this.init(phase); + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/AminePhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/AminePhysicalProperties.java index 417374ca35..a54a5073e4 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/AminePhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/AminePhysicalProperties.java @@ -3,6 +3,7 @@ * * Created on 13. august 2001, 10:31 */ + package neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties; import neqsim.physicalProperties.physicalPropertyMethods.gasPhysicalProperties.density.Density; @@ -20,30 +21,30 @@ * @version $Id: $Id */ public class AminePhysicalProperties extends LiquidPhysicalProperties { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for AminePhysicalProperties. - *

- */ - public AminePhysicalProperties() {} + /** + *

+ * Constructor for AminePhysicalProperties. + *

+ */ + public AminePhysicalProperties() {} - /** - *

- * Constructor for AminePhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - */ - public AminePhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); - conductivityCalc = new Conductivity(this); - viscosityCalc = new AmineViscosity(this); - diffusivityCalc = new AmineDiffusivity(this); - densityCalc = new Density(this); - } + /** + *

+ * Constructor for AminePhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + */ + public AminePhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); + conductivityCalc = new Conductivity(this); + viscosityCalc = new AmineViscosity(this); + diffusivityCalc = new AmineDiffusivity(this); + densityCalc = new Density(this); + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/CO2waterPhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/CO2waterPhysicalProperties.java index 9a8a886cfa..9e85896475 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/CO2waterPhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/CO2waterPhysicalProperties.java @@ -17,45 +17,45 @@ * @version $Id: $Id */ public class CO2waterPhysicalProperties - extends neqsim.physicalProperties.physicalPropertySystem.PhysicalProperties { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(CO2waterPhysicalProperties.class); + extends neqsim.physicalProperties.physicalPropertySystem.PhysicalProperties { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(CO2waterPhysicalProperties.class); - /** - *

- * Constructor for CO2waterPhysicalProperties. - *

- */ - public CO2waterPhysicalProperties() {} + /** + *

+ * Constructor for CO2waterPhysicalProperties. + *

+ */ + public CO2waterPhysicalProperties() {} - /** - *

- * Constructor for CO2waterPhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - */ - public CO2waterPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); - conductivityCalc = new Conductivity(this); - viscosityCalc = new Viscosity(this); - diffusivityCalc = new CO2water(this); - densityCalc = new Density(this); - } + /** + *

+ * Constructor for CO2waterPhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + */ + public CO2waterPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); + conductivityCalc = new Conductivity(this); + viscosityCalc = new Viscosity(this); + diffusivityCalc = new CO2water(this); + densityCalc = new Density(this); + } - /** {@inheritDoc} */ - @Override - public CO2waterPhysicalProperties clone() { - CO2waterPhysicalProperties properties = null; + /** {@inheritDoc} */ + @Override + public CO2waterPhysicalProperties clone() { + CO2waterPhysicalProperties properties = null; - try { - properties = (CO2waterPhysicalProperties) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return properties; + try { + properties = (CO2waterPhysicalProperties) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + return properties; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/GlycolPhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/GlycolPhysicalProperties.java index fee6319dbf..874494e9fe 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/GlycolPhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/GlycolPhysicalProperties.java @@ -3,6 +3,7 @@ * * Created on 13. august 2001, 10:31 */ + package neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties; import neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.conductivity.Conductivity; @@ -20,30 +21,30 @@ * @version $Id: $Id */ public class GlycolPhysicalProperties extends LiquidPhysicalProperties { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for GlycolPhysicalProperties. - *

- */ - public GlycolPhysicalProperties() {} + /** + *

+ * Constructor for GlycolPhysicalProperties. + *

+ */ + public GlycolPhysicalProperties() {} - /** - *

- * Constructor for GlycolPhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - */ - public GlycolPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); - conductivityCalc = new Conductivity(this); - viscosityCalc = new Viscosity(this); - diffusivityCalc = new SiddiqiLucasMethod(this); - densityCalc = new Density(this); - } + /** + *

+ * Constructor for GlycolPhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + */ + public GlycolPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); + conductivityCalc = new Conductivity(this); + viscosityCalc = new Viscosity(this); + diffusivityCalc = new SiddiqiLucasMethod(this); + densityCalc = new Density(this); + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/LiquidPhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/LiquidPhysicalProperties.java index 6a0da03f73..846f237877 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/LiquidPhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/LiquidPhysicalProperties.java @@ -3,10 +3,13 @@ * * Created on 29. oktober 2000, 16:17 */ + package neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.conductivity.PFCTConductivityMethodMod86; +import neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodHeavyOil; import neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.density.Density; import neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.diffusivity.SiddiqiLucasMethod; import neqsim.thermo.phase.PhaseInterface; @@ -20,58 +23,50 @@ * @version $Id: $Id */ public class LiquidPhysicalProperties - extends neqsim.physicalProperties.physicalPropertySystem.PhysicalProperties { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(LiquidPhysicalProperties.class); - - /** - *

- * Constructor for LiquidPhysicalProperties. - *

- */ - public LiquidPhysicalProperties() {} + extends neqsim.physicalProperties.physicalPropertySystem.PhysicalProperties { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(LiquidPhysicalProperties.class); - /** - *

- * Constructor for LiquidPhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - */ - public LiquidPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); - // conductivityCalc = new Conductivity(this); - conductivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.conductivity.PFCTConductivityMethodMod86( - this); - // viscosityCalc = new Viscosity(this); - // viscosityCalc = new - // neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.FrictionTheoryViscosityMethod(this); - // viscosityCalc = new - // neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodMod86(this); - // viscosityCalc = new - // neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.LBCViscosityMethod(this); - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity.PFCTViscosityMethodHeavyOil( - this); + /** + *

+ * Constructor for LiquidPhysicalProperties. + *

+ */ + public LiquidPhysicalProperties() {} - diffusivityCalc = new SiddiqiLucasMethod(this); - densityCalc = new Density(this); - } + /** + *

+ * Constructor for LiquidPhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + */ + public LiquidPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); + // conductivityCalc = new Conductivity(this); + conductivityCalc = new PFCTConductivityMethodMod86(this); + // viscosityCalc = new Viscosity(this); + // viscosityCalc = new FrictionTheoryViscosityMethod(this); + // viscosityCalc = new PFCTViscosityMethodMod86(this); + // viscosityCalc = new LBCViscosityMethod(this); + viscosityCalc = new PFCTViscosityMethodHeavyOil(this); + diffusivityCalc = new SiddiqiLucasMethod(this); + densityCalc = new Density(this); + } - /** {@inheritDoc} */ - @Override - public LiquidPhysicalProperties clone() { - LiquidPhysicalProperties properties = null; + /** {@inheritDoc} */ + @Override + public LiquidPhysicalProperties clone() { + LiquidPhysicalProperties properties = null; - try { - properties = (LiquidPhysicalProperties) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return properties; + try { + properties = (LiquidPhysicalProperties) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + return properties; + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/WaterPhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/WaterPhysicalProperties.java index 4912c467cc..ae7f5c9a95 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/WaterPhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/liquidPhysicalProperties/WaterPhysicalProperties.java @@ -3,6 +3,7 @@ * * Created on 13. august 2001, 10:34 */ + package neqsim.physicalProperties.physicalPropertySystem.liquidPhysicalProperties; import neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.conductivity.Conductivity; @@ -20,30 +21,30 @@ * @version $Id: $Id */ public class WaterPhysicalProperties extends LiquidPhysicalProperties { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for WaterPhysicalProperties. - *

- */ - public WaterPhysicalProperties() {} + /** + *

+ * Constructor for WaterPhysicalProperties. + *

+ */ + public WaterPhysicalProperties() {} - /** - *

- * Constructor for WaterPhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param binaryDiffusionCoefficientMethod a int - * @param multicomponentDiffusionMethod a int - */ - public WaterPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, - int multicomponentDiffusionMethod) { - super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); - conductivityCalc = new Conductivity(this); - viscosityCalc = new Viscosity(this); - diffusivityCalc = new SiddiqiLucasMethod(this); - densityCalc = new Density(this); - } + /** + *

+ * Constructor for WaterPhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param binaryDiffusionCoefficientMethod a int + * @param multicomponentDiffusionMethod a int + */ + public WaterPhysicalProperties(PhaseInterface phase, int binaryDiffusionCoefficientMethod, + int multicomponentDiffusionMethod) { + super(phase, binaryDiffusionCoefficientMethod, multicomponentDiffusionMethod); + conductivityCalc = new Conductivity(this); + viscosityCalc = new Viscosity(this); + diffusivityCalc = new SiddiqiLucasMethod(this); + densityCalc = new Density(this); + } } diff --git a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/solidPhysicalProperties/SolidPhysicalProperties.java b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/solidPhysicalProperties/SolidPhysicalProperties.java index 90ac05f929..5bef0aa1c6 100644 --- a/src/main/java/neqsim/physicalProperties/physicalPropertySystem/solidPhysicalProperties/SolidPhysicalProperties.java +++ b/src/main/java/neqsim/physicalProperties/physicalPropertySystem/solidPhysicalProperties/SolidPhysicalProperties.java @@ -12,36 +12,36 @@ * @version $Id: $Id */ public class SolidPhysicalProperties extends PhysicalProperties { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SolidPhysicalProperties. - *

- */ - public SolidPhysicalProperties() {} + /** + *

+ * Constructor for SolidPhysicalProperties. + *

+ */ + public SolidPhysicalProperties() {} - /** - *

- * Constructor for SolidPhysicalProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public SolidPhysicalProperties(PhaseInterface phase) { - super(phase); - conductivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.conductivity.Conductivity( - this); - viscosityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.viscosity.Viscosity( - this); - diffusivityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.diffusivity.Diffusivity( - this); - densityCalc = - new neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.density.Density( - this); - this.init(phase); - } + /** + *

+ * Constructor for SolidPhysicalProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public SolidPhysicalProperties(PhaseInterface phase) { + super(phase); + conductivityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.conductivity.Conductivity( + this); + viscosityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.viscosity.Viscosity( + this); + diffusivityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.diffusivity.Diffusivity( + this); + densityCalc = + new neqsim.physicalProperties.physicalPropertyMethods.solidPhysicalProperties.density.Density( + this); + this.init(phase); + } } diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/binarySystemViscosity/grunbergNissanMethod/GrunbergNissanFunction.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/binarySystemViscosity/grunbergNissanMethod/GrunbergNissanFunction.java deleted file mode 100644 index ff515d3861..0000000000 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/binarySystemViscosity/grunbergNissanMethod/GrunbergNissanFunction.java +++ /dev/null @@ -1,40 +0,0 @@ -package neqsim.physicalProperties.util.parameterFitting.binaryComponentParameterFitting.binarySystemViscosity.grunbergNissanMethod; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * GrunbergNissanFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class GrunbergNissanFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for GrunbergNissanFunction. - *

- */ - public GrunbergNissanFunction() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(1); - system.initPhysicalProperties(); - return system.getPhases()[1].getPhysicalProperties().getViscosity() * 1e3; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - // system.getPhases()[0].getPhysicalProperties().getMixingRule().setViscosityGij(value, 0, - // 1); - // system.getPhases()[0].getPhysicalProperties().getMixingRule().setViscosityGij(value, 1, - // 0); - system.getPhases()[1].getPhysicalProperties().getMixingRule().setViscosityGij(value, 1, 0); - system.getPhase(1).getPhysicalProperties().getMixingRule().setViscosityGij(value, 0, 1); - } -} diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/binarySystemViscosity/grunbergNissanMethod/TestGrunbergNissanFit.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/binarySystemViscosity/grunbergNissanMethod/TestGrunbergNissanFit.java deleted file mode 100644 index 2e3c5e5e57..0000000000 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/binarySystemViscosity/grunbergNissanMethod/TestGrunbergNissanFit.java +++ /dev/null @@ -1,85 +0,0 @@ -package neqsim.physicalProperties.util.parameterFitting.binaryComponentParameterFitting.binarySystemViscosity.grunbergNissanMethod; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestGrunbergNissanFit class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestGrunbergNissanFit { - static Logger logger = LogManager.getLogger(TestGrunbergNissanFit.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database - .getResultSet("SELECT * FROM binarysystemviscosity WHERE ComponentName1='TEG'"); - - try { - logger.info("adding...."); - while (dataSet.next()) { - GrunbergNissanFunction function = new GrunbergNissanFunction(); - double guess[] = {0.001}; - function.setInitialGuess(guess); - SystemInterface testSystem = new SystemSrkEos(280, 0.001); - double x1 = Double.parseDouble(dataSet.getString("x1")); - testSystem.addComponent("TEG", x1); - testSystem.addComponent("water", Double.parseDouble(dataSet.getString("x2"))); - testSystem.createDatabase(true); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.init(0); - testSystem.initPhysicalProperties(); - double sample1[] = {x1, testSystem.getTemperature()}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(Double.parseDouble(dataSet.getString("Viscosity")), - Double.parseDouble(dataSet.getString("StdDev")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - // double sample1[] = {0.1}; - // for(int i=0;i - * DiffusivityFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class DiffusivityFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for DiffusivityFunction. - *

- */ - public DiffusivityFunction() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(1); - system.initPhysicalProperties(); - return system.getPhase(1).getPhysicalProperties().getDiffusionCoefficient(0, 1) * 1e9; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - // system.getPhases()[0].getPhysicalProperties().getMixingRule().setViscosityGij(value, 0, - // 1); - // system.getPhases()[0].getPhysicalProperties().getMixingRule().setViscosityGij(value, 1, - // 0); - // system.getPhase(1).getComponent(0).setLiquidViscosityModel(i);//system.getPhases()[1].getComponent(0).setMolarMass(i);//getPhysicalProperties().getMixingRule().setViscosityGij(value, - // 1, 0); - // system.getPhase(0).getComponent(0).setLiquidViscosityModel(i);//MolarMass(i);//system.getPhase(1).getPhysicalProperties().getMixingRule().setViscosityGij(value, - // 0, 1); - } -} diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/diffusivity/TestDiffusivity.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/diffusivity/TestDiffusivity.java deleted file mode 100644 index f7f7fa5d61..0000000000 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/binaryComponentParameterFitting/diffusivity/TestDiffusivity.java +++ /dev/null @@ -1,83 +0,0 @@ -package neqsim.physicalProperties.util.parameterFitting.binaryComponentParameterFitting.diffusivity; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestDiffusivity class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestDiffusivity { - static Logger logger = LogManager.getLogger(TestDiffusivity.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM binaryliquiddiffusioncoefficientdata WHERE ComponentSolute='CO2' AND ComponentSolvent='water'"); - - try { - logger.info("adding...."); - while (dataSet.next()) { - DiffusivityFunction function = new DiffusivityFunction(); - double guess[] = {0.001}; - function.setInitialGuess(guess); - SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentSolute"), 1.0e-10); - testSystem.addComponent(dataSet.getString("ComponentSolvent"), 1.0); - testSystem.createDatabase(true); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.init(0); - testSystem.setPhysicalPropertyModel(4); - testSystem.initPhysicalProperties(); - double sample1[] = {testSystem.getTemperature()}; - double standardDeviation1[] = {0.1}; - SampleValue sample = new SampleValue( - Double.parseDouble(dataSet.getString("DiffusionCoefficient")), 0.01, - sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - // double sample1[] = {0.1}; - // for(int i=0;i - * ConductivityFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class ConductivityFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for ConductivityFunction. - *

- */ - public ConductivityFunction() { - params = new double[3]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.init(1); - system.initPhysicalProperties(); - return system.getPhases()[1].getPhysicalProperties().getConductivity(); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponents()[0].setLiquidConductivityParameter(value, i); - system.getPhases()[1].getComponents()[0].setLiquidConductivityParameter(value, i); - } -} diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompConductivity/linearLiquidModel/TestConductivityFit.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompConductivity/linearLiquidModel/TestConductivityFit.java deleted file mode 100644 index 399684a0f7..0000000000 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompConductivity/linearLiquidModel/TestConductivityFit.java +++ /dev/null @@ -1,84 +0,0 @@ -package neqsim.physicalProperties.util.parameterFitting.pureComponentParameterFitting.pureCompConductivity.linearLiquidModel; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestConductivityFit class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestConductivityFit { - static Logger logger = LogManager.getLogger(TestConductivityFit.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM purecomponentconductivitydata WHERE ComponentName='TEG'"); - // ResultSet dataSet = database.getResultSet("NeqSimDataBase", "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - - try { - logger.info("adding...."); - while (dataSet.next()) { - ConductivityFunction function = new ConductivityFunction(); - double guess[] = {-0.384, 0.00525, -0.00000637}; - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkEos(280, 1.1); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.init(0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(Double.parseDouble(dataSet.getString("Conductivity")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - double sample1[] = {0.1}; - for (int i = 0; i < sampleList.size(); i++) { - logger.info("ans: " + (sampleList.get(i)).getFunction().calcValue(sample1)); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayResult(); - optim.displayCurveFit(); - } -} diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/RacketFunction.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/RacketFunction.java deleted file mode 100644 index 69607c8bd7..0000000000 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/RacketFunction.java +++ /dev/null @@ -1,39 +0,0 @@ -package neqsim.physicalProperties.util.parameterFitting.pureComponentParameterFitting.pureCompDensity.pureComponentRacketVolumeCorrectionParameterFitting; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * RacketFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class RacketFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for RacketFunction. - *

- */ - public RacketFunction() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.init(1); - system.initPhysicalProperties(); - return system.getPhases()[1].getPhysicalProperties().getDensity(); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponents()[i].setRacketZ(value); - system.getPhases()[1].getComponents()[i].setRacketZ(value); - } -} diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/TestRacketFit.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/TestRacketFit.java deleted file mode 100644 index 58fb3ba7ef..0000000000 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/TestRacketFit.java +++ /dev/null @@ -1,80 +0,0 @@ -package neqsim.physicalProperties.util.parameterFitting.pureComponentParameterFitting.pureCompDensity.pureComponentRacketVolumeCorrectionParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestRacketFit class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestRacketFit { - static Logger logger = LogManager.getLogger(TestRacketFit.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database - .getResultSet("SELECT * FROM purecomponentdensity WHERE ComponentName='MEG'"); - // ResultSet dataSet = database.getResultSet("NeqSimDataBase", "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - - try { - logger.info("adding...."); - while (dataSet.next()) { - RacketFunction function = new RacketFunction(); - double guess[] = {0.3211}; - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.init(0); - testSystem.setMixingRule(2); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(Double.parseDouble(dataSet.getString("Density")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - // optim.displayCurveFit(); - - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/TestRacketFitting.py b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/TestRacketFitting.py deleted file mode 100644 index cb747b1c0e..0000000000 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompDensity/pureComponentRacketVolumeCorrectionParameterFitting/TestRacketFitting.py +++ /dev/null @@ -1,19 +0,0 @@ -from parameterFitting.nonLinearParameterFitting.levenbergMarquardtNonLinearParameterFitting import * -from parameterFitting.nonLinearParameterFitting.levenbergMarquardtNonLinearParameterFitting.physicalModelParameterFitting.racketVolumeCorrectionParameterFitting import * -from parameterFitting import * - -optimalisationModel = LevenbergMarquardt() -function = RacketFunction() -optimalisationModel.setFunction(function) - -sample1 = SampleValue(1000,[273]) -sample2 = SampleValue(1000,[283]) -sample3 = SampleValue(998, [293]) -sample4 = SampleValue(996 ,[303]) - -sampleList = [sample1,sample2,sample3,sample4] - -sampleSet = SampleSet(sampleList) -optimalisationModel.setSampleSet(sampleSet) - -optimalisationModel.solve() diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/InfluenceParamGTFunction.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/InfluenceParamGTFunction.java deleted file mode 100644 index e5cb80fd1b..0000000000 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/InfluenceParamGTFunction.java +++ /dev/null @@ -1,47 +0,0 @@ -package neqsim.physicalProperties.util.parameterFitting.pureComponentParameterFitting.pureCompInterfaceTension; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * InfluenceParamGTFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class InfluenceParamGTFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(InfluenceParamGTFunction.class); - - /** - *

- * Constructor for InfluenceParamGTFunction. - *

- */ - public InfluenceParamGTFunction() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(3); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error("error", e); - } - system.initPhysicalProperties(); - return system.getInterphaseProperties().getSurfaceTension(0, 1) * 1e3; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponent(0).setSurfTensInfluenceParam(i, value); - system.getPhases()[1].getComponent(0).setSurfTensInfluenceParam(i, value); - } -} diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/InfluenceParamGTFunctionBinaryData.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/InfluenceParamGTFunctionBinaryData.java deleted file mode 100644 index 48d4a98f93..0000000000 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/InfluenceParamGTFunctionBinaryData.java +++ /dev/null @@ -1,50 +0,0 @@ -package neqsim.physicalProperties.util.parameterFitting.pureComponentParameterFitting.pureCompInterfaceTension; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * InfluenceParamGTFunctionBinaryData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class InfluenceParamGTFunctionBinaryData extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(InfluenceParamGTFunctionBinaryData.class); - - /** - *

- * Constructor for InfluenceParamGTFunctionBinaryData. - *

- */ - public InfluenceParamGTFunctionBinaryData() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(3); - try { - thermoOps.dewPointMach(system.getPhase(0).getComponent(1).getComponentName(), - "dewPointTemperature", system.getTemperature()); - } catch (Exception e) { - logger.error("error", e); - } - system.initPhysicalProperties(); - return system.getInterphaseProperties().getSurfaceTension(0, 1) * 1e3; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - for (int kk = 0; kk < system.getPhase(0).getNumberOfComponents(); kk++) { - system.getPhases()[0].getComponent(kk).setSurfTensInfluenceParam(i, value); - system.getPhases()[1].getComponent(kk).setSurfTensInfluenceParam(i, value); - } - } -} diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/ParachorFunction.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/ParachorFunction.java index 5ee75e9253..d27880ae65 100644 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/ParachorFunction.java +++ b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/ParachorFunction.java @@ -13,35 +13,35 @@ * @version $Id: $Id */ public class ParachorFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(ParachorFunction.class); + static Logger logger = LogManager.getLogger(ParachorFunction.class); - /** - *

- * Constructor for ParachorFunction. - *

- */ - public ParachorFunction() { - params = new double[1]; - } + /** + *

+ * Constructor for ParachorFunction. + *

+ */ + public ParachorFunction() { + params = new double[1]; + } - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(3); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error("error", e); - } - system.initPhysicalProperties(); - return system.getInterphaseProperties().getSurfaceTension(0, 1) * 1e3; + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + system.init(3); + try { + thermoOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + system.initPhysicalProperties(); + return system.getInterphaseProperties().getSurfaceTension(0, 1) * 1e3; + } - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponent(0).setParachorParameter(value); - system.getPhases()[1].getComponent(0).setParachorParameter(value); - } + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; + system.getPhases()[0].getComponent(0).setParachorParameter(value); + system.getPhases()[1].getComponent(0).setParachorParameter(value); + } } diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/TestInfluenceParamGTFunction.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/TestInfluenceParamGTFunction.java deleted file mode 100644 index b123381976..0000000000 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/TestInfluenceParamGTFunction.java +++ /dev/null @@ -1,147 +0,0 @@ -package neqsim.physicalProperties.util.parameterFitting.pureComponentParameterFitting.pureCompInterfaceTension; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPAstatoil; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestInfluenceParamGTFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestInfluenceParamGTFunction { - static Logger logger = LogManager.getLogger(TestInfluenceParamGTFunction.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM purecomponentsurfacetension2 WHERE ComponentName IN ('n-pentane','ethane','methane', 'propane','CO2', 'c-hexane','M-cy-C5', 'n-pentane','n-hexane', 'n-nonane','nC10')");// AND - // ComponentName<>'nC10' - // AND - // ComponentName<>'nC11' - // AND - // ComponentName<>'nC12' - // AND - // ComponentName<>'nC13'"); - boolean includePureCompData = true; - - // double guess[] = { -0.7708158524, 0.4990571549, 0.8645478315, -0.3509810630, - // -0.1611763157}; // SRK param - double guess[] = {-0.0286407191587279700, -1.85760887578596, 0.520588, -0.1386439759, - 1.1216308727071944}; // CPA - // param - - // double guess[] = {1.9286440937, -8.7271963910, 1.2495334818, -1.8975206092}; - // double guess[] = {-5.2897559010400935E-17, 7.103588505598196E-17};//, - // 1.1161368619, 0.8363538313}; // PR param - - try { - while (dataSet.next() && includePureCompData) { - InfluenceParamGTFunction function = new InfluenceParamGTFunction(); - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkCPAstatoil(280, 10.1); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.createDatabase(true); - testSystem.setMixingRule(7); - testSystem.init(0); - testSystem.setNumberOfPhases(2); - testSystem.getInterphaseProperties().setInterfacialTensionModel(2); - testSystem.init(3); - double sample1[] = {testSystem.getTemperature(), testSystem.getPressure()}; - double standardDeviation1[] = {0.1, 0.1}; - double surfTens = Double.parseDouble(dataSet.getString("SurfaceTension")); - SampleValue sample = new SampleValue(surfTens, - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - - sampleList.add(sample); - - Double.toString(sample.getFunction().calcValue(new double[0])); - // double influenceParam = ((GTSurfaceTension) - // testSystem.getInterphaseProperties().getSurfaceTensionModel(0)).getInfluenceParameter(surfTens - // / 1.0e3, 0); - // logger.error(testSystem.getTemperature() + " " + influenceParam); - // double factor = influenceParam / - // (testSystem.getPhase(0).getComponent(0).getAttractiveTerm().aT(testSystem.getTemperature()) - // * 1.0e-5) / Math.pow(((ComponentEosInterface) - // testSystem.getPhase(0).getComponent(0)).calcb() * 1e-5, 2.0 / 3.0); - // sample.setDescription((1.0 - testSystem.getTemperature() / - // testSystem.getPhase(0).getComponent(0).getTC()) + " " + - // Double.toString(factor)); - sample.setReference(testSystem.getPhase(0).getComponent(0).getComponentName()); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - /* - * dataSet = database.getResultSet("NeqSimDataBase", - * "SELECT * FROM BinaryComponentSurfaceTension WHERE Include=1");// AND - * ComponentName<>'nC12' AND ComponentName<>'nC13'"); boolean includeBinaryData = false; - * - * try { logger.error("adding...."); while (dataSet.next() && includeBinaryData) { - * InfluenceParamGTFunctionBinaryData function = new InfluenceParamGTFunctionBinaryData(); - * function.setInitialGuess(guess); - * - * SystemInterface testSystem = new SystemPrEos(280, 0.1); - * testSystem.addComponent(dataSet.getString("ComponentName1"), 10.10); - * testSystem.addComponent(dataSet.getString("ComponentName2"), 1.10); - * testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - * testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature") )); - * testSystem.createDatabase(true); - * testSystem.getInterphaseProperties().setInterfacialTensionModel(1); - * testSystem.setMixingRule(2); testSystem.init(0); testSystem.setNumberOfPhases(2); - * testSystem.init(3); double sample1[] = {testSystem.getTemperature(), - * testSystem.getPressure()}; double standardDeviation1[] = {0.1, 0.1}; double surfTens = - * Double.parseDouble(dataSet.getString("SurfaceTension")); SampleValue sample = new - * SampleValue(surfTens, Double.parseDouble(dataSet.getString("StandardDeviation")), - * sample1, standardDeviation1); sample.setFunction(function); - * sample.setThermodynamicSystem(testSystem); sampleList.add(sample); - * - * Double.toString(sample.getFunction().calcValue(new double[0])); double influenceParam = - * ((GTSurfaceTension) testSystem.getInterphaseProperties().getSurfaceTensionModel(0)). - * getInfluenceParameter(surfTens / 1.0e3, 0); logger.error(testSystem.getTemperature() + - * " " + influenceParam); double factor = influenceParam / - * (testSystem.getPhase(0).getComponent(0).getAttractiveTerm().aT(testSystem. - * getTemperature()) * 1.0e-5) / Math.pow(((ComponentEosInterface) - * testSystem.getPhase(0).getComponent(0)).calcb() * 1e-5, 2.0 / 3.0); - * sample.setDescription((1.0 - testSystem.getTemperature() / - * testSystem.getPhase(0).getComponent(0).getTC()) + " " + Double.toString(factor)); - * sample.setReference("binary data"); } } catch (Exception e) { - * logger.error("database error" + e); } - */ - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/TestParachorFit.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/TestParachorFit.java index 163d735cd3..0cc176c2fd 100644 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/TestParachorFit.java +++ b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompInterfaceTension/TestParachorFit.java @@ -20,62 +20,60 @@ * @version $Id: $Id */ public class TestParachorFit { - static Logger logger = LogManager.getLogger(TestParachorFit.class); + static Logger logger = LogManager.getLogger(TestParachorFit.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + LevenbergMarquardt optim = new LevenbergMarquardt(); + ArrayList sampleList = new ArrayList(); - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM purecomponentsurfacetension WHERE ComponentName='MEG'"); + try (NeqSimDataBase database = new NeqSimDataBase(); + ResultSet dataSet = database + .getResultSet("SELECT * FROM purecomponentsurfacetension WHERE ComponentName='MEG'")) { + while (dataSet.next()) { + ParachorFunction function = new ParachorFunction(); + double guess[] = {207.2}; // methane + function.setInitialGuess(guess); - try { - while (dataSet.next()) { - ParachorFunction function = new ParachorFunction(); - double guess[] = {207.2}; // methane - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkCPAstatoil(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.getInterphaseProperties().setInterfacialTensionModel(-10); - testSystem.useVolumeCorrection(true); - testSystem.setMixingRule(2); - testSystem.init(0); - testSystem.setNumberOfPhases(2); - testSystem.init(3); - double sample1[] = {testSystem.getTemperature(), testSystem.getPressure()}; - double standardDeviation1[] = {0.1, 0.1}; - SampleValue sample = - new SampleValue(Double.parseDouble(dataSet.getString("SurfaceTension")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } + SystemInterface testSystem = new SystemSrkCPAstatoil(280, 0.001); + testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); + testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); + testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); + testSystem.getInterphaseProperties().setInterfacialTensionModel(-10); + testSystem.useVolumeCorrection(true); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.setNumberOfPhases(2); + testSystem.init(3); + double sample1[] = {testSystem.getTemperature(), testSystem.getPressure()}; + double standardDeviation1[] = {0.1, 0.1}; + SampleValue sample = + new SampleValue(Double.parseDouble(dataSet.getString("SurfaceTension")), + Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, + standardDeviation1); + sample.setFunction(function); + sample.setThermodynamicSystem(testSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); + } - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); + SampleSet sampleSet = new SampleSet(sampleList); + optim.setSampleSet(sampleSet); - // do simulations - optim.solve(); - optim.displayCurveFit(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); + // do simulations + optim.solve(); + optim.displayCurveFit(); + // optim.runMonteCarloSimulation(); + optim.displayCurveFit(); - // optim.writeToTextFile("c:/testFit.txt"); - } + // optim.writeToTextFile("c:/testFit.txt"); + } } diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/chungMethod/ChungFunction.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/chungMethod/ChungFunction.java index 8595e451b4..a13f208be3 100644 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/chungMethod/ChungFunction.java +++ b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/chungMethod/ChungFunction.java @@ -11,29 +11,29 @@ * @version $Id: $Id */ public class ChungFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for ChungFunction. - *

- */ - public ChungFunction() { - params = new double[1]; - } + /** + *

+ * Constructor for ChungFunction. + *

+ */ + public ChungFunction() { + params = new double[1]; + } - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.init(1); - system.initPhysicalProperties(); - return system.getPhases()[1].getPhysicalProperties().getViscosity(); - } + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + system.setTemperature(dependentValues[0]); + system.init(1); + system.initPhysicalProperties(); + return system.getPhases()[1].getPhysicalProperties().getViscosity(); + } - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponents()[i].setViscosityAssociationFactor(value); - system.getPhases()[1].getComponents()[i].setViscosityAssociationFactor(value); - } + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; + system.getPhases()[0].getComponents()[i].setViscosityAssociationFactor(value); + system.getPhases()[1].getComponents()[i].setViscosityAssociationFactor(value); + } } diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/chungMethod/TestChungFit.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/chungMethod/TestChungFit.java index 73823cef23..dce70dbb38 100644 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/chungMethod/TestChungFit.java +++ b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/chungMethod/TestChungFit.java @@ -20,56 +20,55 @@ * @version $Id: $Id */ public class TestChungFit { - static Logger logger = LogManager.getLogger(TestChungFit.class); + static Logger logger = LogManager.getLogger(TestChungFit.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + LevenbergMarquardt optim = new LevenbergMarquardt(); + ArrayList sampleList = new ArrayList(); - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM purecomponentviscosity");// WHERE - // ComponentName='MDEA*'"); + // inserting samples from database - try { - while (dataSet.next()) { - ChungFunction function = new ChungFunction(); - double guess[] = {0.3211}; - function.setInitialGuess(guess); + try (NeqSimDataBase database = new NeqSimDataBase(); + ResultSet dataSet = database.getResultSet("SELECT * FROM purecomponentviscosity") // WHERE + // ComponentName='MDEA*'"); + ) { + while (dataSet.next()) { + ChungFunction function = new ChungFunction(); + double guess[] = {0.3211}; + function.setInitialGuess(guess); - SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent("MDEA", 100.0); - // testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.createDatabase(true); - testSystem.init(0); - testSystem.setMixingRule(2); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(Double.parseDouble(dataSet.getString("Viscosity")), 0.001, - sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } + SystemInterface testSystem = new SystemSrkEos(280, 0.001); + testSystem.addComponent("MDEA", 100.0); + // testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); + testSystem.createDatabase(true); + testSystem.init(0); + testSystem.setMixingRule(2); + double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; + double standardDeviation1[] = {0.1}; + SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("Viscosity")), + 0.001, sample1, standardDeviation1); + sample.setFunction(function); + sample.setThermodynamicSystem(testSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); + } - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); + SampleSet sampleSet = new SampleSet(sampleList); + optim.setSampleSet(sampleSet); - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayResult(); - optim.displayCurveFit(); - } + // do simulations + optim.solve(); + // optim.runMonteCarloSimulation(); + optim.displayResult(); + optim.displayCurveFit(); + } } diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/linearLiquidModel/TestViscosityFit.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/linearLiquidModel/TestViscosityFit.java index c882521e13..ba2c27eba1 100644 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/linearLiquidModel/TestViscosityFit.java +++ b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/linearLiquidModel/TestViscosityFit.java @@ -20,70 +20,67 @@ * @version $Id: $Id */ public class TestViscosityFit { - static Logger logger = LogManager.getLogger(TestViscosityFit.class); + static Logger logger = LogManager.getLogger(TestViscosityFit.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + LevenbergMarquardt optim = new LevenbergMarquardt(); + ArrayList sampleList = new ArrayList(); - // inserting samples from database - NeqSimExperimentDatabase database = new NeqSimExperimentDatabase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM purecomponentviscosity WHERE ComponentName='MEG' ORDER BY Temperature"); + // inserting samples from database + NeqSimExperimentDatabase database = new NeqSimExperimentDatabase(); - try { - while (dataSet.next()) { - ViscosityFunction function = new ViscosityFunction(); - // double guess[] = {-66.2, 11810, 0.1331, -0.0000983}; //mdea - // double guess[] = {-5.771E1, 7.647E3, 1.442E-1, -1.357E-4}; //water - double guess[] = {-10.14, 3868.803, -0.00550507};// ,0.000001};//,0.001}; //MEG - // double guess[] = { -53.92523097004079, 9741.992308,0,0.106066223998382}; - // //TEG - function.setInitialGuess(guess); - SystemInterface testSystem = new SystemSrkEos(280, 0.001); - // logger.info("component " + dataSet.getString("ComponentName")); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - double temp = Double.parseDouble(dataSet.getString("Temperature")); - testSystem.setTemperature(temp); - testSystem.init(0); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(Double.parseDouble(dataSet.getString("Viscosity")), - Double.parseDouble(dataSet.getString("StdDev")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } + try (ResultSet dataSet = database.getResultSet( + "SELECT * FROM purecomponentviscosity WHERE ComponentName='MEG' ORDER BY Temperature")) { + while (dataSet.next()) { + ViscosityFunction function = new ViscosityFunction(); + // double guess[] = {-66.2, 11810, 0.1331, -0.0000983}; //mdea + // double guess[] = {-5.771E1, 7.647E3, 1.442E-1, -1.357E-4}; //water + double guess[] = {-10.14, 3868.803, -0.00550507}; // ,0.000001}; //,0.001}; //MEG + // double guess[] = { -53.92523097004079, 9741.992308,0,0.106066223998382}; + // //TEG + function.setInitialGuess(guess); + SystemInterface testSystem = new SystemSrkEos(280, 0.001); + // logger.info("component " + dataSet.getString("ComponentName")); + testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); + testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + double temp = Double.parseDouble(dataSet.getString("Temperature")); + testSystem.setTemperature(temp); + testSystem.init(0); + double sample1[] = {temp}; + double standardDeviation1[] = {0.1}; + SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("Viscosity")), + Double.parseDouble(dataSet.getString("StdDev")), sample1, standardDeviation1); + sample.setFunction(function); + sample.setThermodynamicSystem(testSystem); + sampleList.add(sample); + } + } catch (Exception ex) { + logger.error("database error", ex); + } - // double sample1[] = { 0.1 }; - // for (int i = 0; i < sampleList.size(); i++) { - // logger.info("ans: " + - // ((SampleValue)sampleList.get(i)).getFunction().calcValue(sample1)); - // } + // double sample1[] = { 0.1 }; + // for (int i = 0; i < sampleList.size(); i++) { + // logger.info("ans: " + + // ((SampleValue)sampleList.get(i)).getFunction().calcValue(sample1)); + // } - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - optim.setMaxNumberOfIterations(100); - // do simulations - optim.solve(); - optim.displayCurveFit(); - // optim.runMonteCarloSimulation(); - // optim.displayCurveFit(); - // optim.writeToTextFile("c:/testFit.txt"); - } + SampleSet sampleSet = new SampleSet(sampleList); + optim.setSampleSet(sampleSet); + optim.setMaxNumberOfIterations(100); + // do simulations + optim.solve(); + optim.displayCurveFit(); + // optim.runMonteCarloSimulation(); + // optim.displayCurveFit(); + // optim.writeToTextFile("c:/testFit.txt"); + } } diff --git a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/linearLiquidModel/ViscosityFunction.java b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/linearLiquidModel/ViscosityFunction.java index 1709843cfb..1400d0d81a 100644 --- a/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/linearLiquidModel/ViscosityFunction.java +++ b/src/main/java/neqsim/physicalProperties/util/parameterFitting/pureComponentParameterFitting/pureCompViscosity/linearLiquidModel/ViscosityFunction.java @@ -3,6 +3,7 @@ * * Created on 24. januar 2001, 23:30 */ + package neqsim.physicalProperties.util.parameterFitting.pureComponentParameterFitting.pureCompViscosity.linearLiquidModel; import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; @@ -16,26 +17,26 @@ * @version $Id: $Id */ public class ViscosityFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for ViscosityFunction. - *

- */ - public ViscosityFunction() {} + /** + *

+ * Constructor for ViscosityFunction. + *

+ */ + public ViscosityFunction() {} - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(1); - system.initPhysicalProperties(); - return system.getPhases()[1].getPhysicalProperties().getViscosity() * 1e3; - } + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + system.init(1); + system.initPhysicalProperties(); + return system.getPhases()[1].getPhysicalProperties().getViscosity() * 1e3; + } - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponents()[0].setLiquidViscosityParameter(value, i); - system.getPhases()[1].getComponents()[0].setLiquidViscosityParameter(value, i); - } + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; + system.getPhases()[0].getComponents()[0].setLiquidViscosityParameter(value, i); + system.getPhases()[1].getComponents()[0].setLiquidViscosityParameter(value, i); + } } diff --git a/src/main/java/neqsim/processSimulation/SimulationBaseClass.java b/src/main/java/neqsim/processSimulation/SimulationBaseClass.java index 2b984bb244..c572a6c0e1 100644 --- a/src/main/java/neqsim/processSimulation/SimulationBaseClass.java +++ b/src/main/java/neqsim/processSimulation/SimulationBaseClass.java @@ -1,24 +1,51 @@ package neqsim.processSimulation; +import java.util.UUID; import neqsim.util.NamedBaseClass; +import neqsim.util.exception.InvalidInputException; +/** + * Base class for process simulation objects. + * + * @author ASMF + * @version $Id: $Id + */ public abstract class SimulationBaseClass extends NamedBaseClass implements SimulationInterface { private static final long serialVersionUID = 1L; + + /** + * Unique identifier of which solve/run call was last called successfully. + */ + protected UUID calcIdentifier; protected boolean calculateSteadyState = true; + protected double time = 0; + private boolean runInSteps = false; + /** + *

+ * Constructor for SimulationBaseClass. + *

+ * + * @param name a {@link java.lang.String} object + */ public SimulationBaseClass(String name) { super(name); } /** {@inheritDoc} */ @Override - public void runTransient(double dt) { - if (getCalculateSteadyState()) { - run(); - return; - } + public UUID getCalculationIdentifier() { + return calcIdentifier; + } - throw new UnsupportedOperationException("RunTransient using difference equations is not supported yet."); + /** {@inheritDoc} */ + @Override + public void setCalculationIdentifier(UUID value) { + if (this.calcIdentifier == null || this.calcIdentifier != value) { + this.calcIdentifier = value; + } else { + this.calcIdentifier = value; + } } /** {@inheritDoc} */ @@ -32,4 +59,38 @@ public boolean getCalculateSteadyState() { public void setCalculateSteadyState(boolean steady) { this.calculateSteadyState = steady; } + + /** {@inheritDoc} */ + @Override + public double getTime() { + return this.time; + } + + /** {@inheritDoc} */ + @Override + public void setTime(double value) { + this.time = value; + } + + /** {@inheritDoc} */ + @Override + public void increaseTime(double dt) { + if (dt < 0) { + throw new RuntimeException(new InvalidInputException(this, "increaseTime", "dt", + "Negative values are not allowed. Not possible to go backwards in time.")); + } + this.time = this.time + dt; + } + + /** {@inheritDoc} */ + @Override + public void setRunInSteps(boolean setRunSteps) { + runInSteps = setRunSteps; + } + + /** {@inheritDoc} */ + @Override + public boolean isRunInSteps() { + return runInSteps; + } } diff --git a/src/main/java/neqsim/processSimulation/SimulationInterface.java b/src/main/java/neqsim/processSimulation/SimulationInterface.java index 46da985592..f651c028f0 100644 --- a/src/main/java/neqsim/processSimulation/SimulationInterface.java +++ b/src/main/java/neqsim/processSimulation/SimulationInterface.java @@ -1,54 +1,179 @@ package neqsim.processSimulation; +import java.io.Serializable; +import java.util.UUID; import neqsim.util.NamedInterface; -public interface SimulationInterface extends NamedInterface, Runnable { +/** + * Interface for simulation objects. + * + * @author ASMF + * @version $Id: $Id + */ +public interface SimulationInterface extends NamedInterface, Runnable, Serializable { /** - * Get calculateSteadyState - * + * Getter for property calcIdentifier. + * + * @return Value of calcIdentifier. + */ + public UUID getCalculationIdentifier(); + + /** + * Setter for property calcIdentifier. + * + * @param value Value to set. + */ + public void setCalculationIdentifier(UUID value); + + /** + * Getter for property calculateSteadyState. + * * @return Value of property calculateSteadyState */ public boolean getCalculateSteadyState(); /** - * Setter for property calculateSteadyState - * + * Setter for property calculateSteadyState. + * * @param steady Set true to do steady state calculation when calling runTransient. */ public void setCalculateSteadyState(boolean steady); + /** + * Getter for the field time. + * + * @return Value of property time. + */ + public double getTime(); + + /** + * Setter for field time. + * + * @param value Value to set. + */ + public void setTime(double value); + + /** + * Method to increase field time by a given value. + * + * @param dt Value to increase time by. + */ + public void increaseTime(double dt); + /** *

- * run + * setRunInSteps. *

- * In this method all thermodynamic and unit operations will be calculated in a steady state - * calculation. * + * @param setRunSteps boolean set true to run in steps + */ + public void setRunInSteps(boolean setRunSteps); + + /** + *

+ * isRunInSteps. + *

* + * @return boolean */ - @Override - public void run(); + public boolean isRunInSteps(); + + /** + *

+ * run. + *

+ * + * @param id UUID + */ + public void run(UUID id); + + /** + *

+ * run. + *

+ */ + public default void run() { + if (isRunInSteps()) { + run_step(UUID.randomUUID()); + } else { + run(UUID.randomUUID()); + } + } + + /** + *

+ * run_step + *

+ * In this method all thermodynamic and unit operations will be calculated in a steady state + * calculation. It does not solve resycles - only calculates one step. + */ + public default void run_step() { + run_step(UUID.randomUUID()); + } + + /** + *

+ * run_step + *

+ * In this method all thermodynamic and unit operations will be calculated in a steady state + * calculation. Sets calc identifier UUID. It does not solve resycles - only calculates one step + * + * @param value Calc identifier UUID to set. + */ + public void run_step(UUID value); /** *

* runTransient *

- * This method calculates thermodynamic and unit operations using - * difference equations if available and calculateSteadyState is true. - * Use setCalculateSteadyState to set the parameter. - * - * @param dt is the delta time step (seconds) + * This method calculates thermodynamic and unit operations using difference equations if + * available and calculateSteadyState is true. Use setCalculateSteadyState to set the parameter. + * Sets calc identifier UUID. * + * @param dt Delta time [s] + */ + public default void runTransient(double dt) { + runTransient(dt, UUID.randomUUID()); + } + + /** + *

+ * runTransient + *

+ * This method calculates thermodynamic and unit operations using difference equations if + * available and calculateSteadyState is true. Use setCalculateSteadyState to set the parameter. + * Sets calc identifier UUID. * + * @param dt Delta time [s] + * @param id Calculation identifier */ - public void runTransient(double dt); + public default void runTransient(double dt, UUID id) { + if (getCalculateSteadyState()) { + run(id); + increaseTime(dt); + return; + } + + throw new UnsupportedOperationException( + "RunTransient using difference equations is not supported yet."); + } /** *

- * solved. + * Returns whether or not the module has been solved. *

* * @return a boolean */ public boolean solved(); + + /** + *

+ * getReport_json. + *

+ * Return results of simulation in json format + * + * @return a String + */ + public String getReport_json(); } diff --git a/src/main/java/neqsim/processSimulation/conditionMonitor/ConditionMonitor.java b/src/main/java/neqsim/processSimulation/conditionMonitor/ConditionMonitor.java index 6d2752cbe9..dfb636e939 100644 --- a/src/main/java/neqsim/processSimulation/conditionMonitor/ConditionMonitor.java +++ b/src/main/java/neqsim/processSimulation/conditionMonitor/ConditionMonitor.java @@ -12,84 +12,84 @@ * @version $Id: $Id */ public class ConditionMonitor implements java.io.Serializable, Runnable { - private static final long serialVersionUID = 1000; - ProcessSystem refprocess = null; - ProcessSystem process = null; - String report; + private static final long serialVersionUID = 1000; + ProcessSystem refprocess = null; + ProcessSystem process = null; + String report; - /** - *

- * Constructor for ConditionMonitor. - *

- */ - public ConditionMonitor() {} + /** + *

+ * Constructor for ConditionMonitor. + *

+ */ + public ConditionMonitor() {} - /** - *

- * Constructor for ConditionMonitor. - *

- * - * @param refprocess a {@link neqsim.processSimulation.processSystem.ProcessSystem} object - */ - public ConditionMonitor(ProcessSystem refprocess) { - this.refprocess = refprocess; - process = refprocess.copy(); - } + /** + *

+ * Constructor for ConditionMonitor. + *

+ * + * @param refprocess a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public ConditionMonitor(ProcessSystem refprocess) { + this.refprocess = refprocess; + process = refprocess.copy(); + } - /** - *

- * conditionAnalysis. - *

- * - * @param unitName a {@link java.lang.String} object - */ - public void conditionAnalysis(String unitName) { - neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass refUn = - (neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass) refprocess - .getUnit(unitName); - ((neqsim.processSimulation.processEquipment.ProcessEquipmentInterface) process - .getUnit(unitName)).runConditionAnalysis(refUn); - report += ((neqsim.processSimulation.processEquipment.ProcessEquipmentInterface) process - .getUnit(unitName)).getConditionAnalysisMessage(); - } + /** + *

+ * conditionAnalysis. + *

+ * + * @param unitName a {@link java.lang.String} object + */ + public void conditionAnalysis(String unitName) { + neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass refUn = + (neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass) refprocess + .getUnit(unitName); + ((neqsim.processSimulation.processEquipment.ProcessEquipmentInterface) process + .getUnit(unitName)).runConditionAnalysis(refUn); + report += ((neqsim.processSimulation.processEquipment.ProcessEquipmentInterface) process + .getUnit(unitName)).getConditionAnalysisMessage(); + } - /** - *

- * conditionAnalysis. - *

- */ - public void conditionAnalysis() { - ArrayList names = process.getAllUnitNames(); - for (int i = 0; i < names.size(); i++) { - conditionAnalysis(names.get(i)); - } + /** + *

+ * conditionAnalysis. + *

+ */ + public void conditionAnalysis() { + ArrayList names = process.getAllUnitNames(); + for (int i = 0; i < names.size(); i++) { + conditionAnalysis(names.get(i)); } + } - /** - *

- * Getter for the field report. - *

- * - * @return a {@link java.lang.String} object - */ - public String getReport() { - return report; - } + /** + *

+ * Getter for the field report. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getReport() { + return report; + } - /** - *

- * Getter for the field process. - *

- * - * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object - */ - public ProcessSystem getProcess() { - return process; - } + /** + *

+ * Getter for the field process. + *

+ * + * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public ProcessSystem getProcess() { + return process; + } - /** {@inheritDoc} */ - @Override - public void run() { - process = refprocess.copy(); - } + /** {@inheritDoc} */ + @Override + public void run() { + process = refprocess.copy(); + } } diff --git a/src/main/java/neqsim/processSimulation/conditionMonitor/ConditionMonitorSpecifications.java b/src/main/java/neqsim/processSimulation/conditionMonitor/ConditionMonitorSpecifications.java index 25829ada77..551cdc90fd 100644 --- a/src/main/java/neqsim/processSimulation/conditionMonitor/ConditionMonitorSpecifications.java +++ b/src/main/java/neqsim/processSimulation/conditionMonitor/ConditionMonitorSpecifications.java @@ -9,11 +9,11 @@ * @version $Id: $Id */ public interface ConditionMonitorSpecifications extends java.io.Serializable { - /** Constant HXmaxDeltaT=5.0 */ - double HXmaxDeltaT = 5.0; - /** - * Constant HXmaxDeltaT_ErrorMsg="Too high temperature difference between"{trunked} - */ - String HXmaxDeltaT_ErrorMsg = - "Too high temperature difference between streams. Max difference: " + HXmaxDeltaT; + /** Constant HXmaxDeltaT=5.0. */ + double HXmaxDeltaT = 5.0; + /** + * Constant HXmaxDeltaT_ErrorMsg="Too high temperature difference between"{trunked}. + */ + String HXmaxDeltaT_ErrorMsg = + "Too high temperature difference between streams. Max difference: " + HXmaxDeltaT; } diff --git a/src/main/java/neqsim/processSimulation/controllerDevice/ControllerDeviceBaseClass.java b/src/main/java/neqsim/processSimulation/controllerDevice/ControllerDeviceBaseClass.java index 9f4d2f3bdb..e05e29633a 100644 --- a/src/main/java/neqsim/processSimulation/controllerDevice/ControllerDeviceBaseClass.java +++ b/src/main/java/neqsim/processSimulation/controllerDevice/ControllerDeviceBaseClass.java @@ -3,8 +3,12 @@ * * Created on 10. oktober 2006, 19:59 */ + package neqsim.processSimulation.controllerDevice; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.measurementDevice.MeasurementDeviceInterface; import neqsim.util.NamedBaseClass; @@ -17,163 +21,223 @@ * @version $Id: $Id */ public class ControllerDeviceBaseClass extends NamedBaseClass implements ControllerDeviceInterface { - private static final long serialVersionUID = 1000; - - private String unit = "[?]"; - private MeasurementDeviceInterface transmitter = null; - private double controllerSetPoint = 0.0; - private double oldError = 0.0, oldoldError = 0.0; - private double error = 0.0; - private double response = 30.0; - int propConstant = 1; - private boolean reverseActing = false; - private double Ksp = 1.0; - private double Tint = 300.0, TintValue = 0.0; - private double Tderiv = 300.0; - - public ControllerDeviceBaseClass() { - super("controller"); - } - - /** {@inheritDoc} */ - @Override - public void setTransmitter(MeasurementDeviceInterface device) { - this.transmitter = device; - } - - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - return this.transmitter.getMeasuredValue(); - } - - /** {@inheritDoc} */ - @Override - public void runTransient(double percentSignal, double dt) { - if (isReverseActing()) { - propConstant = -1; - } - oldoldError = error; - oldError = error; - error = transmitter.getMeasuredPercentValue() - - (controllerSetPoint - transmitter.getMinimumValue()) - / (transmitter.getMaximumValue() - transmitter.getMinimumValue()) * 100; - - TintValue += Ksp / Tint * error * dt; - double TderivValue = Ksp * Tderiv * (error - oldError) / dt; - response = percentSignal + propConstant * (Ksp * error + TintValue + TderivValue); - //System.out.println("error " + error + " %"); - // error = device.getMeasuredPercentValue()-controlValue; - // double regulatorSignal = error*1.0; - } - - /** {@inheritDoc} */ - @Override - public void setControllerSetPoint(double signal) { - this.controllerSetPoint = signal; - } - - /** {@inheritDoc} */ - @Override - public String getUnit() { - return unit; - } - - /** {@inheritDoc} */ - @Override - public void setUnit(String unit) { - this.unit = unit; - } - - /** {@inheritDoc} */ - @Override - public double getResponse() { - return response; - } - - /** {@inheritDoc} */ - @Override - public boolean isReverseActing() { - return reverseActing; - } - - /** {@inheritDoc} */ - @Override - public void setReverseActing(boolean reverseActing) { - this.reverseActing = reverseActing; - } - - /** - *

- * getKsp. - *

- * - * @return a double - */ - public double getKsp() { - return Ksp; - } - - /** - *

- * setKsp. - *

- * - * @param Ksp a double - */ - public void setKsp(double Ksp) { - this.Ksp = Ksp; - } - - /** {@inheritDoc} */ - @Override - public void setControllerParameters(double Ksp, double Ti, double Td) { - this.setKsp(Ksp); - this.setTint(Ti); - this.setTderiv(Td); - } - - /** - *

- * getTint. - *

- * - * @return a double - */ - public double getTint() { - return Tint; - } - - /** - *

- * setTint. - *

- * - * @param Tint a double - */ - public void setTint(double Tint) { - this.Tint = Tint; - } - - /** - *

- * getTderiv. - *

- * - * @return a double - */ - public double getTderiv() { - return Tderiv; - } - - /** - *

- * setTderiv. - *

- * - * @param Tderiv a double - */ - public void setTderiv(double Tderiv) { - this.Tderiv = Tderiv; - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ControllerDeviceBaseClass.class); + + /** + * Unique identifier of which solve/run call was last called successfully. + */ + protected UUID calcIdentifier; + + private String unit = "[?]"; + private MeasurementDeviceInterface transmitter = null; + private double controllerSetPoint = 0.0; + private double oldError = 0.0; + private double oldoldError = 0.0; + private double error = 0.0; + private double response = 30.0; + int propConstant = 1; + private boolean reverseActing = false; + private double Kp = 1.0; + private double Ti = 300.0; + private double Td = 0.0; + + // Internal state of integration contribution + private double TintValue = 0.0; + boolean isActive = true; + + /** + *

+ * Constructor for ControllerDeviceBaseClass. + *

+ */ + public ControllerDeviceBaseClass() { + this("controller"); + } + + /** {@inheritDoc} */ + @Override + public void setActive(boolean isActive) { + this.isActive = isActive; + } + + /** {@inheritDoc} */ + @Override + public boolean isActive() { + return isActive; + } + + /** + *

+ * Constructor for ControllerDeviceBaseClass. + *

+ * + * @param name Name of PID controller object + */ + public ControllerDeviceBaseClass(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void setTransmitter(MeasurementDeviceInterface device) { + this.transmitter = device; + } + + /** {@inheritDoc} */ + @Override + public double getMeasuredValue() { + return this.transmitter.getMeasuredValue(); + } + + /** {@inheritDoc} */ + @Override + public void runTransient(double initResponse, double dt, UUID id) { + if (!isActive) { + response = initResponse; + calcIdentifier = id; + return; + } + if (isReverseActing()) { + propConstant = -1; + } + oldoldError = error; + oldError = error; + + // Error is normalized + error = + transmitter.getMeasuredPercentValue() - (controllerSetPoint - transmitter.getMinimumValue()) + / (transmitter.getMaximumValue() - transmitter.getMinimumValue()) * 100; + + if (Ti != 0) { + TintValue = Kp / Ti * error; + } + double TderivValue = Kp * Td * ((error - 2 * oldError + oldoldError) / (dt * dt)); + + response = initResponse + + propConstant * ((Kp * (error - oldError) / dt) + TintValue + TderivValue) * dt; + calcIdentifier = id; + } + + /** {@inheritDoc} */ + @Override + public void setControllerSetPoint(double signal) { + this.controllerSetPoint = signal; + } + + /** {@inheritDoc} */ + @Override + public String getUnit() { + return unit; + } + + /** {@inheritDoc} */ + @Override + public void setUnit(String unit) { + this.unit = unit; + } + + /** {@inheritDoc} */ + @Override + public double getResponse() { + return response; + } + + /** {@inheritDoc} */ + @Override + public boolean isReverseActing() { + return reverseActing; + } + + /** {@inheritDoc} */ + @Override + public void setReverseActing(boolean reverseActing) { + this.reverseActing = reverseActing; + } + + /** + *

+ * Get proportional gain of PID controller. + *

+ * + * @return Proportional gain of PID controller + */ + public double getKp() { + return Kp; + } + + /** + *

+ * Set proportional gain of PID controller. + *

+ * + * @param Kp Proportional gain of PID controller + */ + public void setKp(double Kp) { + if (Kp >= 0) { + this.Kp = Kp; + } else { + logger.warn("Negative Kp is not allowed. Use setReverseActing."); + } + } + + /** {@inheritDoc} */ + @Override + public void setControllerParameters(double Kp, double Ti, double Td) { + this.setKp(Kp); + this.setTi(Ti); + this.setTd(Td); + } + + /** + *

+ * Get integral time of PID controller. + *

+ * + * @return Integral time in seconds + */ + public double getTi() { + return Ti; + } + + /** + *

+ * Set integral time of PID controller. + *

+ * + * @param Ti Integral time in seconds + */ + public void setTi(double Ti) { + if (Ti >= 0) { + this.Ti = Ti; + } else { + logger.warn("Negative Ti is not allowed."); + } + } + + /** + *

+ * Get derivative time of PID controller. + *

+ * + * @return Derivative time of controller + */ + public double getTd() { + return Td; + } + + /** + *

+ * Set derivative time of PID controller. + *

+ * + * @param Td Derivative time in seconds + */ + public void setTd(double Td) { + if (Td >= 0) { + this.Td = Td; + } else { + logger.warn("Negative Td is not allowed."); + } + } } diff --git a/src/main/java/neqsim/processSimulation/controllerDevice/ControllerDeviceInterface.java b/src/main/java/neqsim/processSimulation/controllerDevice/ControllerDeviceInterface.java index 0598a82353..9b7f9fd2b6 100644 --- a/src/main/java/neqsim/processSimulation/controllerDevice/ControllerDeviceInterface.java +++ b/src/main/java/neqsim/processSimulation/controllerDevice/ControllerDeviceInterface.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.controllerDevice; +import java.util.UUID; import neqsim.processSimulation.measurementDevice.MeasurementDeviceInterface; /** @@ -11,105 +12,140 @@ * @version $Id: $Id */ public interface ControllerDeviceInterface extends java.io.Serializable { - /** - *

- * getMeasuredValue. - *

- * - * @return a double - */ - public double getMeasuredValue(); - - /** - *

- * setControllerSetPoint. - *

- * - * @param signal a double - */ - public void setControllerSetPoint(double signal); - - /** - *

- * getUnit. - *

- * - * @return a {@link java.lang.String} object - */ - public String getUnit(); - - /** - *

- * setUnit. - *

- * - * @param unit a {@link java.lang.String} object - */ - public void setUnit(String unit); - - /** - *

- * setTransmitter. - *

- * - * @param device a {@link neqsim.processSimulation.measurementDevice.MeasurementDeviceInterface} - * object - */ - public void setTransmitter(MeasurementDeviceInterface device); - - /** - *

- * run. - *

- * - * @param signal a double - * @param dt a double - */ - public void runTransient(double signal, double dt); - - /** - *

- * getResponse. - *

- * - * @return a double - */ - public double getResponse(); - - /** - *

- * isReverseActing. - *

- * - * @return a boolean - */ - public boolean isReverseActing(); - - /** - *

- * setReverseActing. - *

- * - * @param reverseActing a boolean - */ - public void setReverseActing(boolean reverseActing); - - /** - *

- * setControllerParameters. - *

- * - * @param Ksp a double - * @param Ti a double - * @param Td a double - */ - public void setControllerParameters(double Ksp, double Ti, double Td); - - /** {@inheritDoc} */ - @Override - public boolean equals(Object o); - - /** {@inheritDoc} */ - @Override - public int hashCode(); + /** + *

+ * getMeasuredValue. + *

+ * + * @return a double + */ + public double getMeasuredValue(); + + /** + *

+ * setControllerSetPoint. + *

+ * + * @param signal a double + */ + public void setControllerSetPoint(double signal); + + /** + *

+ * getUnit. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getUnit(); + + /** + *

+ * setUnit. + *

+ * + * @param unit a {@link java.lang.String} object + */ + public void setUnit(String unit); + + /** + *

+ * setTransmitter. + *

+ * + * @param device a {@link neqsim.processSimulation.measurementDevice.MeasurementDeviceInterface} + * object + */ + public void setTransmitter(MeasurementDeviceInterface device); + + /** + *

+ * runTransient. + *

+ * Calculates controller output. Sets calc identifier UUID. + * + * @param initResponse Init value for response calculation + * @param dt Delta time [s] + */ + public default void runTransient(double initResponse, double dt) { + runTransient(initResponse, dt, UUID.randomUUID()); + } + + /** + *

+ * runTransient. + *

+ * Calculates controller output. Sets calc identifier UUID. + * + * @param initResponse Init value for response calculation + * @param dt Delta time [s] + * @param id Calculation identifier + */ + public void runTransient(double initResponse, double dt, UUID id); + + /** + *

+ * getResponse. + *

+ * + * @return a double + */ + public double getResponse(); + + /** + *

+ * isReverseActing. + *

+ * + * @return a boolean + */ + public boolean isReverseActing(); + + /** + *

+ * setReverseActing. + *

+ * + * @param reverseActing a boolean + */ + public void setReverseActing(boolean reverseActing); + + /** + *

+ * Set PID tuning parameters. + *

+ * + * @param Kp Proportional gain + * @param Ti Integral time in seconds + * @param Td Derivative time in seconds + */ + public void setControllerParameters(double Kp, double Ti, double Td); + + /** {@inheritDoc} */ + @Override + public boolean equals(Object o); + + /** {@inheritDoc} */ + @Override + public int hashCode(); + + /** + *

+ * setActive. + *

+ * Set if controller is active + * + * @param isActive Set true to make controller active. + */ + public void setActive(boolean isActive); + + /** + *

+ * isActive. + *

+ * Specifies if controller is active + * + * @return a boolean + */ + public boolean isActive(); } diff --git a/src/main/java/neqsim/processSimulation/costEstimation/CostEstimateBaseClass.java b/src/main/java/neqsim/processSimulation/costEstimation/CostEstimateBaseClass.java index 29613f10e6..5d93ac38af 100644 --- a/src/main/java/neqsim/processSimulation/costEstimation/CostEstimateBaseClass.java +++ b/src/main/java/neqsim/processSimulation/costEstimation/CostEstimateBaseClass.java @@ -2,8 +2,10 @@ import java.util.ArrayList; import java.util.Objects; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.processSimulation.mechanicalDesign.SystemMechanicalDesign; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; -import neqsim.processSimulation.processSystem.ProcessSystem; /** *

@@ -14,84 +16,92 @@ * @version $Id: $Id */ public class CostEstimateBaseClass implements java.io.Serializable { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(CostEstimateBaseClass.class); - private ProcessSystem processSystem; - private double CAPEXperWeight = 1000.0; // KNOK/tones + private SystemMechanicalDesign processdesign; + private double CAPEXperWeight = 1000.0; // KNOK/tones - /** - *

- * Constructor for CostEstimateBaseClass. - *

- * - * @param process a {@link neqsim.processSimulation.processSystem.ProcessSystem} - * object - */ - public CostEstimateBaseClass(ProcessSystem process) { - this.processSystem = process; - } + /** + *

+ * Constructor for CostEstimateBaseClass. + *

+ * + * @param processdesign a {@link neqsim.processSimulation.mechanicalDesign.SystemMechanicalDesign} + * object + */ + public CostEstimateBaseClass(SystemMechanicalDesign processdesign) { + this.processdesign = processdesign; + } - /** - * - * @param process input process - * @param costFactor cost factor - */ - public CostEstimateBaseClass(ProcessSystem process, double costFactor) { - this(process); - this.CAPEXperWeight = costFactor; - } + /** + *

+ * Constructor for CostEstimateBaseClass. + *

+ * + * @param processdesign a {@link neqsim.processSimulation.mechanicalDesign.SystemMechanicalDesign} + * @param costFactor cost factor + */ + public CostEstimateBaseClass(SystemMechanicalDesign processdesign, double costFactor) { + this(processdesign); + this.CAPEXperWeight = costFactor; + } - /** - *

- * getWeightBasedCAPEXEstimate. - *

- * - * @return a double - */ - public double getWeightBasedCAPEXEstimate() { - return this.processSystem.getSystemMechanicalDesign().getTotalWeight() * CAPEXperWeight; - } + /** + *

+ * getWeightBasedCAPEXEstimate. + *

+ * + * @return a double + */ + public double getWeightBasedCAPEXEstimate() { + return this.processdesign.getTotalWeight() * CAPEXperWeight; + } - /** - *

- * getCAPEXestimate. - *

- * - * @return a double - */ - public double getCAPEXestimate() { - double cost = 0; - ArrayList names = this.processSystem.getAllUnitNames(); - for (int i = 0; i < names.size(); i++) { - try { - if (!((ProcessEquipmentInterface) this.processSystem.getUnit(names.get(i)) == null)) { - cost += ((ProcessEquipmentInterface) this.processSystem.getUnit(names.get(i))) - .getMechanicalDesign().getCostEstimate().getTotaltCost(); - } - } catch (Exception e) { - e.printStackTrace(); - } + /** + *

+ * getCAPEXestimate. + *

+ * + * @return a double + */ + public double getCAPEXestimate() { + double cost = 0; + ArrayList names = processdesign.getProcess().getAllUnitNames(); + for (int i = 0; i < names.size(); i++) { + try { + if (!((ProcessEquipmentInterface) this.processdesign.getProcess() + .getUnit(names.get(i)) == null)) { + cost += + ((ProcessEquipmentInterface) this.processdesign.getProcess().getUnit(names.get(i))) + .getMechanicalDesign().getCostEstimate().getTotaltCost(); } - return cost; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } + return cost; + } - /** {@inheritDoc} */ - @Override - public int hashCode() { - return Objects.hash(CAPEXperWeight); - } + /** {@inheritDoc} */ + @Override + public int hashCode() { + return Objects.hash(CAPEXperWeight); + } - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - CostEstimateBaseClass other = (CostEstimateBaseClass) obj; - return Double.doubleToLongBits(CAPEXperWeight) == Double - .doubleToLongBits(other.CAPEXperWeight); + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; } + CostEstimateBaseClass other = (CostEstimateBaseClass) obj; + return Double.doubleToLongBits(CAPEXperWeight) == Double.doubleToLongBits(other.CAPEXperWeight); + } } diff --git a/src/main/java/neqsim/processSimulation/costEstimation/UnitCostEstimateBaseClass.java b/src/main/java/neqsim/processSimulation/costEstimation/UnitCostEstimateBaseClass.java index e052897855..3e642e3c64 100644 --- a/src/main/java/neqsim/processSimulation/costEstimation/UnitCostEstimateBaseClass.java +++ b/src/main/java/neqsim/processSimulation/costEstimation/UnitCostEstimateBaseClass.java @@ -1,7 +1,6 @@ package neqsim.processSimulation.costEstimation; import java.util.Objects; - import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; /** @@ -13,59 +12,59 @@ * @version $Id: $Id */ public class UnitCostEstimateBaseClass implements java.io.Serializable { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - private double costPerWeightUnit = 1000.0; - public MechanicalDesign mechanicalEquipment = null; + private double costPerWeightUnit = 1000.0; + public MechanicalDesign mechanicalEquipment = null; - /** - *

- * Constructor for UnitCostEstimateBaseClass. - *

- */ - public UnitCostEstimateBaseClass() {} + /** + *

+ * Constructor for UnitCostEstimateBaseClass. + *

+ */ + public UnitCostEstimateBaseClass() {} - /** - *

- * Constructor for UnitCostEstimateBaseClass. - *

- * - * @param mechanicalEquipment a - * {@link neqsim.processSimulation.mechanicalDesign.MechanicalDesign} object - */ - public UnitCostEstimateBaseClass(MechanicalDesign mechanicalEquipment) { - this.mechanicalEquipment = mechanicalEquipment; - } + /** + *

+ * Constructor for UnitCostEstimateBaseClass. + *

+ * + * @param mechanicalEquipment a {@link neqsim.processSimulation.mechanicalDesign.MechanicalDesign} + * object + */ + public UnitCostEstimateBaseClass(MechanicalDesign mechanicalEquipment) { + this.mechanicalEquipment = mechanicalEquipment; + } - /** - *

- * getTotaltCost. - *

- * - * @return the totaltCost - */ - public double getTotaltCost() { - return this.mechanicalEquipment.getWeightTotal() * costPerWeightUnit; - } + /** + *

+ * getTotaltCost. + *

+ * + * @return the totaltCost + */ + public double getTotaltCost() { + return this.mechanicalEquipment.getWeightTotal() * costPerWeightUnit; + } - /** {@inheritDoc} */ - @Override - public int hashCode() { - return Objects.hash(costPerWeightUnit, mechanicalEquipment); - } + /** {@inheritDoc} */ + @Override + public int hashCode() { + return Objects.hash(costPerWeightUnit, mechanicalEquipment); + } - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - UnitCostEstimateBaseClass other = (UnitCostEstimateBaseClass) obj; - return Double.doubleToLongBits(costPerWeightUnit) == Double - .doubleToLongBits(other.costPerWeightUnit) - && Objects.equals(mechanicalEquipment, other.mechanicalEquipment); - } + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + UnitCostEstimateBaseClass other = (UnitCostEstimateBaseClass) obj; + return Double.doubleToLongBits(costPerWeightUnit) == Double + .doubleToLongBits(other.costPerWeightUnit) + && Objects.equals(mechanicalEquipment, other.mechanicalEquipment); + } } diff --git a/src/main/java/neqsim/processSimulation/costEstimation/compressor/CompressorCostEstimate.java b/src/main/java/neqsim/processSimulation/costEstimation/compressor/CompressorCostEstimate.java index 5553cf5e5e..e95891dab2 100644 --- a/src/main/java/neqsim/processSimulation/costEstimation/compressor/CompressorCostEstimate.java +++ b/src/main/java/neqsim/processSimulation/costEstimation/compressor/CompressorCostEstimate.java @@ -12,29 +12,29 @@ * @version $Id: $Id */ public class CompressorCostEstimate extends UnitCostEstimateBaseClass { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for CompressorCostEstimate. - *

- * - * @param mechanicalEquipment a - * {@link neqsim.processSimulation.mechanicalDesign.compressor.CompressorMechanicalDesign} - * object - */ - public CompressorCostEstimate(CompressorMechanicalDesign mechanicalEquipment) { - super(mechanicalEquipment); - } + /** + *

+ * Constructor for CompressorCostEstimate. + *

+ * + * @param mechanicalEquipment a + * {@link neqsim.processSimulation.mechanicalDesign.compressor.CompressorMechanicalDesign} + * object + */ + public CompressorCostEstimate(CompressorMechanicalDesign mechanicalEquipment) { + super(mechanicalEquipment); + } - /** {@inheritDoc} */ - @Override - public double getTotaltCost() { - CompressorMechanicalDesign sepMecDesign = (CompressorMechanicalDesign) mechanicalEquipment; + /** {@inheritDoc} */ + @Override + public double getTotaltCost() { + CompressorMechanicalDesign sepMecDesign = (CompressorMechanicalDesign) mechanicalEquipment; - sepMecDesign.getWeightTotal(); - sepMecDesign.getVolumeTotal(); + sepMecDesign.getWeightTotal(); + sepMecDesign.getVolumeTotal(); - return this.mechanicalEquipment.getWeightTotal(); - } + return this.mechanicalEquipment.getWeightTotal(); + } } diff --git a/src/main/java/neqsim/processSimulation/costEstimation/separator/SeparatorCostEstimate.java b/src/main/java/neqsim/processSimulation/costEstimation/separator/SeparatorCostEstimate.java index f9442d2fe9..e6513b59e9 100644 --- a/src/main/java/neqsim/processSimulation/costEstimation/separator/SeparatorCostEstimate.java +++ b/src/main/java/neqsim/processSimulation/costEstimation/separator/SeparatorCostEstimate.java @@ -12,29 +12,29 @@ * @version $Id: $Id */ public class SeparatorCostEstimate extends UnitCostEstimateBaseClass { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SeparatorCostEstimate. - *

- * - * @param mechanicalEquipment a - * {@link neqsim.processSimulation.mechanicalDesign.separator.SeparatorMechanicalDesign} - * object - */ - public SeparatorCostEstimate(SeparatorMechanicalDesign mechanicalEquipment) { - super(mechanicalEquipment); - } + /** + *

+ * Constructor for SeparatorCostEstimate. + *

+ * + * @param mechanicalEquipment a + * {@link neqsim.processSimulation.mechanicalDesign.separator.SeparatorMechanicalDesign} + * object + */ + public SeparatorCostEstimate(SeparatorMechanicalDesign mechanicalEquipment) { + super(mechanicalEquipment); + } - /** {@inheritDoc} */ - @Override - public double getTotaltCost() { - SeparatorMechanicalDesign sepMecDesign = (SeparatorMechanicalDesign) mechanicalEquipment; + /** {@inheritDoc} */ + @Override + public double getTotaltCost() { + SeparatorMechanicalDesign sepMecDesign = (SeparatorMechanicalDesign) mechanicalEquipment; - sepMecDesign.getWeightTotal(); - sepMecDesign.getVolumeTotal(); + sepMecDesign.getWeightTotal(); + sepMecDesign.getVolumeTotal(); - return this.mechanicalEquipment.getWeightTotal(); - } + return this.mechanicalEquipment.getWeightTotal(); + } } diff --git a/src/main/java/neqsim/processSimulation/costEstimation/valve/ValveCostEstimate.java b/src/main/java/neqsim/processSimulation/costEstimation/valve/ValveCostEstimate.java index 32317546ff..87dae95aaa 100644 --- a/src/main/java/neqsim/processSimulation/costEstimation/valve/ValveCostEstimate.java +++ b/src/main/java/neqsim/processSimulation/costEstimation/valve/ValveCostEstimate.java @@ -4,31 +4,36 @@ import neqsim.processSimulation.mechanicalDesign.valve.ValveMechanicalDesign; /** - *

ValveCostEstimate class.

+ *

+ * ValveCostEstimate class. + *

* * @author asmund * @version $Id: $Id */ public class ValveCostEstimate extends UnitCostEstimateBaseClass { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

Constructor for ValveCostEstimate.

- * - * @param mechanicalEquipment a {@link neqsim.processSimulation.mechanicalDesign.valve.ValveMechanicalDesign} object - */ - public ValveCostEstimate(ValveMechanicalDesign mechanicalEquipment) { - super(mechanicalEquipment); - } + /** + *

+ * Constructor for ValveCostEstimate. + *

+ * + * @param mechanicalEquipment a + * {@link neqsim.processSimulation.mechanicalDesign.valve.ValveMechanicalDesign} object + */ + public ValveCostEstimate(ValveMechanicalDesign mechanicalEquipment) { + super(mechanicalEquipment); + } - /** {@inheritDoc} */ - @Override - public double getTotaltCost() { - ValveMechanicalDesign valveMecDesign = (ValveMechanicalDesign) mechanicalEquipment; + /** {@inheritDoc} */ + @Override + public double getTotaltCost() { + ValveMechanicalDesign valveMecDesign = (ValveMechanicalDesign) mechanicalEquipment; - valveMecDesign.getWeightTotal(); - valveMecDesign.getVolumeTotal(); + valveMecDesign.getWeightTotal(); + valveMecDesign.getVolumeTotal(); - return this.mechanicalEquipment.getWeightTotal(); - } + return this.mechanicalEquipment.getWeightTotal(); + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/CombustionEmissionsCalculator.java b/src/main/java/neqsim/processSimulation/measurementDevice/CombustionEmissionsCalculator.java new file mode 100644 index 0000000000..c2882e9e43 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/measurementDevice/CombustionEmissionsCalculator.java @@ -0,0 +1,111 @@ +package neqsim.processSimulation.measurementDevice; + +import java.util.HashMap; +import java.util.Map; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; + +/** + *

+ * CombustionEmissionsCalculator class. + *

+ * + * @author Even Solbraa + */ +public class CombustionEmissionsCalculator extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1L; + + // Composition of natural gas (in mole percent) + private static final Map NATURAL_GAS_COMPOSITION = new HashMap<>(); + + // CO2 emissions factor for each component (in kg CO2 per kg of component + // burned) + private static final Map CO2_EMISSIONS_FACTORS = new HashMap<>(); + + /** + *

+ * Constructor for CombustionEmissionsCalculator. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public CombustionEmissionsCalculator(StreamInterface stream) { + this("EmissionCalculator", stream); + } + + /** + *

+ * Constructor for CombustionEmissionsCalculator. + *

+ * + * @param name Name of WaterDewPointAnalyser + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public CombustionEmissionsCalculator(String name, StreamInterface stream) { + super(name, "kg/hr", stream); + } + + /** + *

+ * setComponents. + *

+ */ + public void setComponents() { + NATURAL_GAS_COMPOSITION.clear(); + CO2_EMISSIONS_FACTORS.clear(); + if (stream.getFluid().getPhase(0).hasComponent("methane")) { + NATURAL_GAS_COMPOSITION.put("Methane", stream.getFluid().getComponent("methane").getz()); + CO2_EMISSIONS_FACTORS.put("Methane", 2.75); + } + if (stream.getFluid().getPhase(0).hasComponent("ethane")) { + NATURAL_GAS_COMPOSITION.put("Ethane", stream.getFluid().getComponent("ethane").getz()); + CO2_EMISSIONS_FACTORS.put("Ethane", 3.75); + } + if (stream.getFluid().getPhase(0).hasComponent("propane")) { + NATURAL_GAS_COMPOSITION.put("Propane", stream.getFluid().getComponent("propane").getz()); + CO2_EMISSIONS_FACTORS.put("Propane", 5.5); + } + if (stream.getFluid().getPhase(0).hasComponent("n-butane")) { + NATURAL_GAS_COMPOSITION.put("n-butane", stream.getFluid().getComponent("n-butane").getz()); + CO2_EMISSIONS_FACTORS.put("n-butane", 6.5); + } + if (stream.getFluid().getPhase(0).hasComponent("i-butane")) { + NATURAL_GAS_COMPOSITION.put("i-butane", stream.getFluid().getComponent("i-butane").getz()); + CO2_EMISSIONS_FACTORS.put("i-butane", 6.5); + } + // .... + } + + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + setComponents(); + return calculateCO2Emissions(NATURAL_GAS_COMPOSITION, CO2_EMISSIONS_FACTORS) + * stream.getFluid().getFlowRate(unit); + } + + /** + *

+ * calculateCO2Emissions. + *

+ * + * @param composition a {@link java.util.Map} object + * @param emissionsFactors a {@link java.util.Map} object + * @return a double + */ + public static double calculateCO2Emissions(Map composition, + Map emissionsFactors) { + double totalEmissions = 0.0; + + for (Map.Entry entry : composition.entrySet()) { + String component = entry.getKey(); + double molePercent = entry.getValue(); + + double emissionsFactor = emissionsFactors.get(component); + double componentEmissions = molePercent * emissionsFactor; + + totalEmissions += componentEmissions; + } + + return totalEmissions; + } +} diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/CompressorMonitor.java b/src/main/java/neqsim/processSimulation/measurementDevice/CompressorMonitor.java new file mode 100644 index 0000000000..cc304c9a69 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/measurementDevice/CompressorMonitor.java @@ -0,0 +1,58 @@ +package neqsim.processSimulation.measurementDevice; + +import neqsim.processSimulation.processEquipment.compressor.Compressor; + +/** + *

+ * CompressorMonitor class. + *

+ * + * @author ESOL + * @version $Id: $Id + */ +public class CompressorMonitor extends MeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; + protected Compressor compressor = null; + + /** + *

+ * Constructor for CompressorMonitor. + *

+ * + * @param compressor a {@link neqsim.processSimulation.processEquipment.compressor.Compressor} + * object + */ + public CompressorMonitor(Compressor compressor) { + this("Compressor Monitor", compressor); + } + + /** + *

+ * Constructor for CompressorMonitor. + *

+ * + * @param name Name of Compressor + * @param compressor a {@link neqsim.processSimulation.processEquipment.compressor.Compressor} + */ + public CompressorMonitor(String name, Compressor compressor) { + super(name, "rpm"); + this.compressor = compressor; + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + System.out.println("measured speed " + compressor.getSpeed()); + } + + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + if (unit.equals("distance to surge")) { + return compressor.getDistanceToSurge(); + } else { + return compressor.getDistanceToSurge(); + // return compressor.getSpeed(); + } + } +} diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/CricondenbarAnalyser.java b/src/main/java/neqsim/processSimulation/measurementDevice/CricondenbarAnalyser.java index 474b966d50..1c54de544c 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/CricondenbarAnalyser.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/CricondenbarAnalyser.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.measurementDevice; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -12,94 +14,85 @@ * @author ESOL * @version $Id: $Id */ -public class CricondenbarAnalyser extends MeasurementDeviceBaseClass { - private static final long serialVersionUID = 1000; +public class CricondenbarAnalyser extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(CricondenbarAnalyser.class); - protected int streamNumber = 0; - /** Constant numberOfStreams=0 */ - protected static int numberOfStreams = 0; - protected StreamInterface stream = null; + /** + *

+ * Constructor for CricondenbarAnalyser. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public CricondenbarAnalyser(StreamInterface stream) { + this("CricondenbarAnalyser", stream); + } - /** - *

- * Constructor for CricondenbarAnalyser. - *

- */ - public CricondenbarAnalyser() {} + /** + *

+ * Constructor for CricondenbarAnalyser. + *

+ * + * @param name Name of CricondenbarAnalyser + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public CricondenbarAnalyser(String name, StreamInterface stream) { + super(name, "K", stream); + setConditionAnalysisMaxDeviation(1.0); + } - /** - *

- * Constructor for CricondenbarAnalyser. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + /** {@inheritDoc} */ + @Override + public void displayResult() { + /* + * try { // System.out.println("total water production [kg/dag]" + // + * stream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles()*stream. + * getThermoSystem().getPhase(0).getComponent("water").getMolarMass()*3600*24); // + * System.out.println("water in phase 1 (ppm) " + // + * stream.getThermoSystem().getPhase(0).getComponent("water").getx()*1e6); } finally { } */ - public CricondenbarAnalyser(StreamInterface stream) { - this.stream = stream; - numberOfStreams++; - streamNumber = numberOfStreams; - unit = "K"; - setConditionAnalysisMaxDeviation(1.0); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - try { - // System.out.println("total water production [kg/dag]" + - // stream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles()*stream.getThermoSystem().getPhase(0).getComponent("water").getMolarMass()*3600*24); - // System.out.println("water in phase 1 (ppm) " + - // stream.getThermoSystem().getPhase(0).getComponent("water").getx()*1e6); - } finally { - } - } + } - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - return getMeasuredValue(unit); + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + SystemInterface tempFluid = stream.getThermoSystem().clone(); + tempFluid.removeComponent("water"); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.setRunAsThread(true); + thermoOps.calcPTphaseEnvelope(false, 1.); + thermoOps.waitAndCheckForFinishedCalculation(15000); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + return thermoOps.get("cricondenbar")[1]; + } - /** {@inheritDoc} */ - @Override - public double getMeasuredValue(String unit) { - SystemInterface tempFluid = stream.getThermoSystem().clone(); - tempFluid.removeComponent("water"); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); - try { - thermoOps.setRunAsThread(true); - thermoOps.calcPTphaseEnvelope(false, 1.); - thermoOps.waitAndCheckForFinishedCalculation(15000); - } catch (Exception e) { - e.printStackTrace(); - } - return thermoOps.get("cricondenbar")[1]; + /** + *

+ * getMeasuredValue2. + *

+ * + * @param unit a {@link java.lang.String} object + * @param temp a double + * @return a double + */ + public double getMeasuredValue2(String unit, double temp) { + SystemInterface tempFluid = stream.getThermoSystem().clone(); + tempFluid.setTemperature(temp, "C"); + tempFluid.setPressure(10.0, "bara"); + if (tempFluid.getPhase(0).hasComponent("water")) { + tempFluid.removeComponent("water"); } - - /** - *

- * getMeasuredValue2. - *

- * - * @param unit a {@link java.lang.String} object - * @param temp a double - * @return a double - */ - public double getMeasuredValue2(String unit, double temp) { - SystemInterface tempFluid = stream.getThermoSystem().clone(); - tempFluid.setTemperature(temp, "C"); - tempFluid.setPressure(10.0, "bara"); - if (tempFluid.getPhase(0).hasComponent("water")) { - tempFluid.removeComponent("water"); - } - neqsim.PVTsimulation.simulation.SaturationPressure thermoOps = - new neqsim.PVTsimulation.simulation.SaturationPressure(tempFluid); - try { - thermoOps.run(); - } catch (Exception e) { - e.printStackTrace(); - } - return thermoOps.getSaturationPressure(); + neqsim.PVTsimulation.simulation.SaturationPressure thermoOps = + new neqsim.PVTsimulation.simulation.SaturationPressure(tempFluid); + try { + thermoOps.run(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + return thermoOps.getSaturationPressure(); + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/FlowInducedVibrationAnalyser.java b/src/main/java/neqsim/processSimulation/measurementDevice/FlowInducedVibrationAnalyser.java new file mode 100644 index 0000000000..346c3ff69e --- /dev/null +++ b/src/main/java/neqsim/processSimulation/measurementDevice/FlowInducedVibrationAnalyser.java @@ -0,0 +1,184 @@ +package neqsim.processSimulation.measurementDevice; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.processSimulation.processEquipment.pipeline.PipeBeggsAndBrills; + +/** + *

+ * FlowInducedVibrationAnalyser class. + *

+ * + * @author SEROS + * @version $Id: $Id + */ +public class FlowInducedVibrationAnalyser extends MeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(WaterDewPointAnalyser.class); + + private double supportDistance = 3; + + private Boolean calcSupportArrangement = false; + + private String supportArrangement = "Stiff"; // Consult with a mechanical engineer regarding + // either the support distance or + // natural frequency of vibrations, especially if measurements have been taken + + private String method = "LOF"; // Likelihood of failure + private PipeBeggsAndBrills pipe; + private Boolean segmentSet = false; + private int segment; + private double FRMSConstant = 6.7; + + /** + *

+ * Constructor for WaterDewPointAnalyser. + *

+ * + * @param pipe a {@link neqsim.processSimulation.processEquipment.pipeline.PipeBeggsAndBrills} + * object + */ + public FlowInducedVibrationAnalyser(PipeBeggsAndBrills pipe) { + this("Pipeline Flow Induced Vibration Analyzer", pipe); + } + + /** + *

+ * Constructor for FlowInducedVibrationAnalyser. + *

+ * + * @param name Name of FlowInducedVibrationAnalyser + * @param pipe a {@link neqsim.processSimulation.processEquipment.pipeline.PipeBeggsAndBrills} + * object + */ + public FlowInducedVibrationAnalyser(String name, PipeBeggsAndBrills pipe) { + super(name, pipe.getName() + " FIV analyser"); + this.pipe = pipe; + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + try { + } finally { + } + } + + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + if (!segmentSet) { + segment = pipe.getNumberOfIncrements(); + } + double mixDensity = pipe.getSegmentMixtureDensity(segment); + double mixVelocity = pipe.getSegmentMixtureSuperficialVelocity(segment); + double gasVelocity = pipe.getSegmentGasSuperficialVelocity(segment); + double GVF = gasVelocity / mixVelocity; + if (method.equals("LOF")) { + double FVF = 1.0; + if (GVF > 0.88) { + if (GVF > 0.99) { + FVF = Math.sqrt(pipe.getSegmentMixtureViscosity(segment) / Math.sqrt(0.001)); + } else { + FVF = -27.882 * GVF * GVF + 45.545 * GVF - 17.495; + } + } + double externalDiamater = (pipe.getDiameter() + 2 * pipe.getThickness()) * 1000;// mm + double alpha = 0.0; + double betta = 0.0; + if (supportArrangement.equals("Stiff")) { + alpha = 446187 + 646 * externalDiamater + + 9.17E-4 * externalDiamater * externalDiamater * externalDiamater; + betta = 0.1 * Math.log(externalDiamater) - 1.3739; + } else if (supportArrangement.equals("Medium stiff")) { + alpha = 283921 + 370 * externalDiamater; + betta = 0.1106 * Math.log(externalDiamater) - 1.501; + } else if (supportArrangement.equals("Medium")) { + alpha = 150412 + 209 * externalDiamater; + betta = 0.0815 * Math.log(externalDiamater) - 1.3269; + } else { + alpha = 41.21 * Math.log(externalDiamater) + 49397; + betta = 0.0815 * Math.log(externalDiamater) - 1.3842; + } + double diameterOverThickness = externalDiamater / (1000 * pipe.getThickness()); + double Fv = alpha * Math.pow(diameterOverThickness, betta); + double LOF = mixDensity * mixVelocity * mixVelocity * FVF / Fv; + return LOF; + } else if (method.equals("FRMS")) { + if (GVF < 0.8) { + return GVF; + } else { + return 1 + 5 * (1 - GVF) * Math.pow(pipe.getDiameter(), 1.6) * FRMSConstant + * Math.pow(pipe.getSegmentLiquidDensity(segment), 0.6) * Math.pow(mixVelocity, 1.2); + } + } + return Double.NaN; + } + + /** + *

+ * Getter for the field method. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getMethod() { + return method; + } + + /** + *

+ * Setter for the field method. + *

+ * + * @param method a {@link java.lang.String} object + */ + public void setMethod(String method) { + this.method = method; + } + + /** + *

+ * Setter for the field segment. + *

+ * + * @param segment a {@link java.lang.Double} object + */ + public void setSegment(int segment) { + this.segment = segment; + this.segmentSet = true; + } + + /** + *

+ * setFRMSConstant. + *

+ * + * @param frms a double + */ + public void setFRMSConstant(double frms) { + this.FRMSConstant = frms; + } + + /** + *

+ * Setter for the support arrangement supportArrangement. + *

+ * + * @param arrangement a {@link java.lang.String} object + */ + public void setSupportArrangement(String arrangement) { + this.supportArrangement = arrangement; + } + + /** + *

+ * Setter for the support distance . + *

+ * + * @param distance a {@link java.lang.Double} object + */ + public void setSupportDistance(Double distance) { + this.supportDistance = distance; + } +} diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/HydrateEquilibriumTemperatureAnalyser.java b/src/main/java/neqsim/processSimulation/measurementDevice/HydrateEquilibriumTemperatureAnalyser.java index 7f8d58f767..1544530f6f 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/HydrateEquilibriumTemperatureAnalyser.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/HydrateEquilibriumTemperatureAnalyser.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.measurementDevice; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -12,95 +14,87 @@ * @author ESOL * @version $Id: $Id */ -public class HydrateEquilibriumTemperatureAnalyser extends MeasurementDeviceBaseClass { - private static final long serialVersionUID = 1000; +public class HydrateEquilibriumTemperatureAnalyser extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(HydrateEquilibriumTemperatureAnalyser.class); - protected int streamNumber = 0; - /** Constant numberOfStreams=0 */ - protected static int numberOfStreams = 0; - protected StreamInterface stream = null; - private double referencePressure = 0; + private double referencePressure = 0; - /** - *

- * Constructor for HydrateEquilibriumTemperatureAnalyser. - *

- */ - public HydrateEquilibriumTemperatureAnalyser() {} + /** + *

+ * Constructor for HydrateEquilibriumTemperatureAnalyser. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public HydrateEquilibriumTemperatureAnalyser(StreamInterface stream) { + this("HydrateEquilibriumTemperatureAnalyser", stream); + } + + /** + *

+ * Constructor for HydrateEquilibriumTemperatureAnalyser. + *

+ * + * @param name Name of HydrateEquilibriumTemperatureAnalyser + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public HydrateEquilibriumTemperatureAnalyser(String name, StreamInterface stream) { + super("HydrateEquilibriumTemperatureAnalyser", "K", stream); + setConditionAnalysisMaxDeviation(1.0); + } - /** - *

- * Constructor for HydrateEquilibriumTemperatureAnalyser. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + /** {@inheritDoc} */ + @Override + public void displayResult() { + /* + * try { // System.out.println("total water production [kg/dag]" + // + * stream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles() * // + * stream.getThermoSystem().getPhase(0).getComponent("water").getMolarMass()*3600*24); // + * System.out.println("water in phase 1 (ppm) " + // + * stream.getThermoSystem().getPhase(0).getComponent("water").getx()*1e6); } finally { } */ - public HydrateEquilibriumTemperatureAnalyser(StreamInterface stream) { - this.stream = stream; - numberOfStreams++; - streamNumber = numberOfStreams; - unit = "K"; - setConditionAnalysisMaxDeviation(1.0); - } + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - try { - // System.out.println("total water production [kg/dag]" + - // stream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles()*stream.getThermoSystem().getPhase(0).getComponent("water").getMolarMass()*3600*24); - // System.out.println("water in phase 1 (ppm) " + - // stream.getThermoSystem().getPhase(0).getComponent("water").getx()*1e6); - } finally { - } + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + SystemInterface tempFluid = stream.getThermoSystem().clone(); + if (!tempFluid.getHydrateCheck()) { + tempFluid.setHydrateCheck(true); } - - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - return getMeasuredValue(unit); + tempFluid.setTemperature(10.0, "C"); + if (referencePressure > 1e-10) { + tempFluid.setPressure(referencePressure); } - - /** {@inheritDoc} */ - @Override - public double getMeasuredValue(String unit) { - SystemInterface tempFluid = stream.getThermoSystem().clone(); - if (!tempFluid.getHydrateCheck()) { - tempFluid.setHydrateCheck(true); - } - tempFluid.setTemperature(10.0, "C"); - if (referencePressure > 1e-10) { - tempFluid.setPressure(referencePressure); - } - ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); - try { - thermoOps.hydrateFormationTemperature(); - } catch (Exception e) { - e.printStackTrace(); - } - return tempFluid.getTemperature(unit); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.hydrateFormationTemperature(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + return tempFluid.getTemperature(unit); + } - /** - *

- * Getter for the field referencePressure. - *

- * - * @return a double - */ - public double getReferencePressure() { - return referencePressure; - } + /** + *

+ * Getter for the field referencePressure. + *

+ * + * @return Reference pressure in bara + */ + public double getReferencePressure() { + return referencePressure; + } - /** - *

- * Setter for the field referencePressure. - *

- * - * @param referencePressure a double - */ - public void setReferencePressure(double referencePressure) { - this.referencePressure = referencePressure; - } + /** + *

+ * Setter for the field referencePressure. + *

+ * + * @param referencePressure Reference pressure to set in in bara + */ + public void setReferencePressure(double referencePressure) { + this.referencePressure = referencePressure; + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/LevelTransmitter.java b/src/main/java/neqsim/processSimulation/measurementDevice/LevelTransmitter.java index 6c675affd0..c2ee757350 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/LevelTransmitter.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/LevelTransmitter.java @@ -11,38 +11,49 @@ * @version $Id: $Id */ public class LevelTransmitter extends MeasurementDeviceBaseClass { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - protected Separator separator = null; + protected Separator separator = null; - /** - *

- * Constructor for LevelTransmitter. - *

- */ - public LevelTransmitter() {} + /** + *

+ * Constructor for LevelTransmitter. + *

+ * + * @param separator a {@link neqsim.processSimulation.processEquipment.separator.Separator} object + */ + public LevelTransmitter(Separator separator) { + this("LevelTransmitter", separator); + } - /** - *

- * Constructor for LevelTransmitter. - *

- * - * @param separator a {@link neqsim.processSimulation.processEquipment.separator.Separator} - * object - */ - public LevelTransmitter(Separator separator) { - this.separator = separator; - } + /** + *

+ * Constructor for LevelTransmitter. + *

+ * + * @param name Name of LevelTransmitter + * @param separator a {@link neqsim.processSimulation.processEquipment.separator.Separator} object + */ + public LevelTransmitter(String name, Separator separator) { + super(name, ""); + this.setMaximumValue(1); + this.setMinimumValue(0); + this.separator = separator; + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - System.out.println("measured level " + separator.getLiquidLevel()); - } + /** {@inheritDoc} */ + @Override + public void displayResult() { + System.out.println("measured level " + separator.getLiquidLevel()); + } - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - return separator.getLiquidLevel(); + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + if (!unit.equalsIgnoreCase("")) { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + "getMeasuredValue", "unit", "currently only supports \"\"")); } + return separator.getLiquidLevel(); + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/MeasurementDeviceBaseClass.java b/src/main/java/neqsim/processSimulation/measurementDevice/MeasurementDeviceBaseClass.java index ca0d631cdb..5e24780f80 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/MeasurementDeviceBaseClass.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/MeasurementDeviceBaseClass.java @@ -11,239 +11,240 @@ * @author ESOL * @version $Id: $Id */ -public abstract class MeasurementDeviceBaseClass extends NamedBaseClass implements MeasurementDeviceInterface { - private static final long serialVersionUID = 1000; - - /** {@inheritDoc} */ - @Override - public OnlineSignal getOnlineSignal() { - return onlineSignal; - } - - /** - *

- * Setter for the field onlineSignal. - *

- * - * @param onlineSignal the onlineSignal to set - */ - public void setOnlineSignal(OnlineSignal onlineSignal) { - this.onlineSignal = onlineSignal; - } - - /** {@inheritDoc} */ - @Override - public boolean isOnlineSignal() { - return isOnlineSignal; - } - - /** - *

- * Setter for the field isOnlineSignal. - *

- * - * @param isOnlineSignal the isOnlineSignal to set - * @param plantName a {@link java.lang.String} object - * @param transmitterame a {@link java.lang.String} object - */ - public void setIsOnlineSignal(boolean isOnlineSignal, String plantName, String transmitterame) { - this.isOnlineSignal = isOnlineSignal; - onlineSignal = new OnlineSignal(plantName, transmitterame); - } - - protected String unit = "-"; - private double maximumValue = 1.0; - private double minimumValue = 0.0; - private boolean logging = false; - private OnlineSignal onlineSignal = null; - private boolean isOnlineSignal = false; - private double onlineMeasurementValue = 0.0; - private String onlineMeasurementValueUnit = ""; - private boolean conditionAnalysis = true; - private String conditionAnalysisMessage = ""; - private double conditionAnalysisMaxDeviation = 0.0; - - public MeasurementDeviceBaseClass() { - super("default"); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() {} - - /** {@inheritDoc} */ - @Override - public String getUnit() { - return unit; - } - - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - return 0.0; - } - - /** {@inheritDoc} */ - @Override - public void setUnit(String unit) { - this.unit = unit; - } - - /** {@inheritDoc} */ - @Override - public double getMaximumValue() { - return maximumValue; - } - - /** {@inheritDoc} */ - @Override - public void setMaximumValue(double maximumValue) { - this.maximumValue = maximumValue; - } - - /** {@inheritDoc} */ - @Override - public double getMinimumValue() { - return minimumValue; - } - - /** {@inheritDoc} */ - @Override - public void setMinimumValue(double minimumValue) { - this.minimumValue = minimumValue; - } - - /** {@inheritDoc} */ - @Override - public double getMeasuredPercentValue() { - return (getMeasuredValue() - minimumValue) / (maximumValue - minimumValue) * 100; - } - - /** {@inheritDoc} */ - @Override - public boolean isLogging() { - return logging; - } - - /** {@inheritDoc} */ - @Override - public void setLogging(boolean logging) { - this.logging = logging; - } - - /** {@inheritDoc} */ - @Override - public double getOnlineValue() { - return getOnlineSignal().getValue(); - } - - /** {@inheritDoc} */ - @Override - public double getMeasuredValue(String unit) { - return 0.0; - } - - /** - *

- * Setter for the field onlineMeasurementValue. - *

- * - * @param value a double - * @param unit a {@link java.lang.String} object - */ - public void setOnlineMeasurementValue(double value, String unit) { - onlineMeasurementValue = value; - onlineMeasurementValueUnit = unit; - } - - /** - *

- * Getter for the field onlineMeasurementValue. - *

- * - * @return a double - */ - public double getOnlineMeasurementValue() { - return onlineMeasurementValue; - } - - /** - *

- * doConditionAnalysis. - *

- * - * @return a boolean - */ - public boolean doConditionAnalysis() { - return conditionAnalysis; - } - - /** - *

- * Setter for the field conditionAnalysis. - *

- * - * @param conditionMonitor a boolean - */ - public void setConditionAnalysis(boolean conditionMonitor) { - this.conditionAnalysis = conditionMonitor; - } - - /** - *

- * runConditionAnalysis. - *

- */ - public void runConditionAnalysis() { - if (Math.abs(getMeasuredValue(onlineMeasurementValueUnit) - - onlineMeasurementValue) < getConditionAnalysisMaxDeviation()) { - conditionAnalysisMessage = "ok"; - } else { - conditionAnalysisMessage = "fail"; - } - } - - /** - *

- * Getter for the field conditionAnalysisMessage. - *

- * - * @return a {@link java.lang.String} object - */ - public String getConditionAnalysisMessage() { - return conditionAnalysisMessage; - } - - /** - *

- * setQualityCheckMessage. - *

- * - * @param conditionAnalysisMessage a {@link java.lang.String} object - */ - public void setQualityCheckMessage(String conditionAnalysisMessage) { - this.conditionAnalysisMessage = conditionAnalysisMessage; - } - - /** - *

- * Getter for the field conditionAnalysisMaxDeviation. - *

- * - * @return a double - */ - public double getConditionAnalysisMaxDeviation() { - return conditionAnalysisMaxDeviation; - } - - /** - *

- * Setter for the field conditionAnalysisMaxDeviation. - *

- * - * @param conditionAnalysisMaxDeviation a double - */ - public void setConditionAnalysisMaxDeviation(double conditionAnalysisMaxDeviation) { - this.conditionAnalysisMaxDeviation = conditionAnalysisMaxDeviation; - } +public abstract class MeasurementDeviceBaseClass extends NamedBaseClass + implements MeasurementDeviceInterface { + private static final long serialVersionUID = 1000; + + protected String unit; + + private double maximumValue = 1.0; + private double minimumValue = 0.0; + + private boolean logging = false; + private OnlineSignal onlineSignal = null; + private boolean isOnlineSignal = false; + private double onlineMeasurementValue = 0.0; + private String onlineMeasurementValueUnit = ""; + + private boolean conditionAnalysis = true; + private String conditionAnalysisMessage = ""; + private double conditionAnalysisMaxDeviation = 0.0; + + /** + * Constructor for MeasurementDeviceBaseClass. + * + * @param name Name of the object + * @param unit Engineering unit of the measurement + */ + public MeasurementDeviceBaseClass(String name, String unit) { + super(name); + setUnit(unit); + } + + /** {@inheritDoc} */ + @Override + public OnlineSignal getOnlineSignal() { + return onlineSignal; + } + + /** + *

+ * Setter for the field onlineSignal. + *

+ * + * @param onlineSignal the onlineSignal to set + */ + public void setOnlineSignal(OnlineSignal onlineSignal) { + this.onlineSignal = onlineSignal; + } + + /** {@inheritDoc} */ + @Override + public boolean isOnlineSignal() { + return isOnlineSignal; + } + + /** + *

+ * Setter for the field isOnlineSignal. + *

+ * + * @param isOnlineSignal the isOnlineSignal to set + * @param plantName a {@link java.lang.String} object + * @param transmitterame a {@link java.lang.String} object + */ + public void setIsOnlineSignal(boolean isOnlineSignal, String plantName, String transmitterame) { + this.isOnlineSignal = isOnlineSignal; + onlineSignal = new OnlineSignal(plantName, transmitterame); + } + + /** {@inheritDoc} */ + @Override + public String getUnit() { + return unit; + } + + /** {@inheritDoc} */ + @Override + public void setUnit(String unit) { + this.unit = unit; + } + + /** {@inheritDoc} */ + @Override + public double getMaximumValue() { + return maximumValue; + } + + /** {@inheritDoc} */ + @Override + public void setMaximumValue(double maximumValue) { + this.maximumValue = maximumValue; + } + + /** {@inheritDoc} */ + @Override + public double getMinimumValue() { + return minimumValue; + } + + /** {@inheritDoc} */ + @Override + public void setMinimumValue(double minimumValue) { + this.minimumValue = minimumValue; + } + + /** {@inheritDoc} */ + @Override + public double getMeasuredPercentValue() { + return (getMeasuredValue() - minimumValue) / (maximumValue - minimumValue) * 100; + } + + /** {@inheritDoc} */ + @Override + public boolean isLogging() { + return logging; + } + + /** {@inheritDoc} */ + @Override + public void setLogging(boolean logging) { + this.logging = logging; + } + + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + return 0.0; + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + System.out.println("measured value: " + getMeasuredValue()); + } + + /** + *

+ * Setter for the field onlineMeasurementValue. + *

+ * + * @param value a double + * @param unit a {@link java.lang.String} object + */ + public void setOnlineMeasurementValue(double value, String unit) { + onlineMeasurementValue = value; + onlineMeasurementValueUnit = unit; + } + + /** + *

+ * Getter for the field onlineMeasurementValue. + *

+ * + * @return a double + */ + public double getOnlineMeasurementValue() { + return onlineMeasurementValue; + } + + /** + *

+ * doConditionAnalysis. + *

+ * + * @return a boolean + */ + public boolean doConditionAnalysis() { + return conditionAnalysis; + } + + /** + *

+ * Setter for the field conditionAnalysis. + *

+ * + * @param conditionMonitor a boolean + */ + public void setConditionAnalysis(boolean conditionMonitor) { + this.conditionAnalysis = conditionMonitor; + } + + /** + *

+ * runConditionAnalysis. + *

+ */ + public void runConditionAnalysis() { + if (Math.abs(getMeasuredValue(onlineMeasurementValueUnit) + - onlineMeasurementValue) < getConditionAnalysisMaxDeviation()) { + conditionAnalysisMessage = "ok"; + } else { + conditionAnalysisMessage = "fail"; + } + } + + /** + *

+ * Getter for the field conditionAnalysisMessage. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getConditionAnalysisMessage() { + return conditionAnalysisMessage; + } + + /** + *

+ * setQualityCheckMessage. + *

+ * + * @param conditionAnalysisMessage a {@link java.lang.String} object + */ + public void setQualityCheckMessage(String conditionAnalysisMessage) { + this.conditionAnalysisMessage = conditionAnalysisMessage; + } + + /** + *

+ * Getter for the field conditionAnalysisMaxDeviation. + *

+ * + * @return a double + */ + public double getConditionAnalysisMaxDeviation() { + return conditionAnalysisMaxDeviation; + } + + /** + *

+ * Setter for the field conditionAnalysisMaxDeviation. + *

+ * + * @param conditionAnalysisMaxDeviation a double + */ + public void setConditionAnalysisMaxDeviation(double conditionAnalysisMaxDeviation) { + this.conditionAnalysisMaxDeviation = conditionAnalysisMaxDeviation; + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/MeasurementDeviceInterface.java b/src/main/java/neqsim/processSimulation/measurementDevice/MeasurementDeviceInterface.java index 53b12f445c..4f0e11d220 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/MeasurementDeviceInterface.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/MeasurementDeviceInterface.java @@ -12,145 +12,149 @@ * @version $Id: $Id */ public interface MeasurementDeviceInterface extends NamedInterface, java.io.Serializable { - /** - *

- * displayResult. - *

- */ - public void displayResult(); - - /** - *

- * getMeasuredValue. - *

- * - * @return a double - */ - public double getMeasuredValue(); - - /** - *

- * getMeasuredValue. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getMeasuredValue(String unit); - - /** - *

- * getOnlineSignal. - *

- * - * @return a {@link neqsim.processSimulation.measurementDevice.online.OnlineSignal} object - */ - public OnlineSignal getOnlineSignal(); - - /** - *

- * getMeasuredPercentValue. - *

- * - * @return a double - */ - public double getMeasuredPercentValue(); - - /** - *

- * getUnit. - *

- * - * @return a {@link java.lang.String} object - */ - public String getUnit(); - - /** - *

- * setUnit. - *

- * - * @param unit a {@link java.lang.String} object - */ - public void setUnit(String unit); - - /** - *

- * getMaximumValue. - *

- * - * @return a double - */ - public double getMaximumValue(); - - /** - *

- * setMaximumValue. - *

- * - * @param maximumValue a double - */ - public void setMaximumValue(double maximumValue); - - /** - *

- * getMinimumValue. - *

- * - * @return a double - */ - public double getMinimumValue(); - - /** - *

- * setMinimumValue. - *

- * - * @param minimumValue a double - */ - public void setMinimumValue(double minimumValue); - - /** - *

- * isLogging. - *

- * - * @return a boolean - */ - public boolean isLogging(); - - /** - *

- * setLogging. - *

- * - * @param logging a boolean - */ - public void setLogging(boolean logging); - - /** - *

- * getOnlineValue. - *

- * - * @return a double - */ - public double getOnlineValue(); - - /** - *

- * isOnlineSignal. - *

- * - * @return a boolean - */ - public boolean isOnlineSignal(); - - /** {@inheritDoc} */ - @Override - public boolean equals(Object o); - - /** {@inheritDoc} */ - @Override - public int hashCode(); + /** + *

+ * displayResult. + *

+ */ + public void displayResult(); + + /** + *

+ * getMeasuredValue. + *

+ * + * @return Get measured value in unit GetUnit() + */ + public default double getMeasuredValue() { + return getMeasuredValue(getUnit()); + } + + /** + *

+ * Get Measured value in specified unit. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getMeasuredValue(String unit); + + /** + *

+ * getOnlineSignal. + *

+ * + * @return a {@link neqsim.processSimulation.measurementDevice.online.OnlineSignal} object + */ + public OnlineSignal getOnlineSignal(); + + /** + *

+ * getMeasuredPercentValue. + *

+ * + * @return a double + */ + public double getMeasuredPercentValue(); + + /** + *

+ * getUnit. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getUnit(); + + /** + *

+ * setUnit. + *

+ * + * @param unit a {@link java.lang.String} object + */ + public void setUnit(String unit); + + /** + *

+ * getMaximumValue. + *

+ * + * @return a double + */ + public double getMaximumValue(); + + /** + *

+ * setMaximumValue. + *

+ * + * @param maximumValue a double + */ + public void setMaximumValue(double maximumValue); + + /** + *

+ * getMinimumValue. + *

+ * + * @return a double + */ + public double getMinimumValue(); + + /** + *

+ * setMinimumValue. + *

+ * + * @param minimumValue a double + */ + public void setMinimumValue(double minimumValue); + + /** + *

+ * isLogging. + *

+ * + * @return a boolean + */ + public boolean isLogging(); + + /** + *

+ * setLogging. + *

+ * + * @param logging a boolean + */ + public void setLogging(boolean logging); + + /** + *

+ * getOnlineValue. + *

+ * + * @return a double + */ + public default double getOnlineValue() { + return getOnlineSignal().getValue(); + } + + /** + *

+ * isOnlineSignal. + *

+ * + * @return a boolean + */ + public boolean isOnlineSignal(); + + /** {@inheritDoc} */ + @Override + public boolean equals(Object o); + + /** {@inheritDoc} */ + @Override + public int hashCode(); } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/MolarMassAnalyser.java b/src/main/java/neqsim/processSimulation/measurementDevice/MolarMassAnalyser.java index 8e8cbd997d..2af44d4efe 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/MolarMassAnalyser.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/MolarMassAnalyser.java @@ -10,49 +10,45 @@ * @author ESOL * @version $Id: $Id */ -public class MolarMassAnalyser extends MeasurementDeviceBaseClass { - private static final long serialVersionUID = 1000; +public class MolarMassAnalyser extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; - protected int streamNumber = 0; - /** Constant numberOfStreams=0 */ - protected static int numberOfStreams = 0; - protected StreamInterface stream = null; + /** + *

+ * Constructor for MolarMassAnalyser. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public MolarMassAnalyser(StreamInterface stream) { + this("molar mass analyser", stream); + } - /** - *

- * Constructor for MolarMassAnalyser. - *

- */ - public MolarMassAnalyser() { - name = "molar mass analyser"; - unit = "gr/mol"; - } - - /** - *

- * Constructor for MolarMassAnalyser. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public MolarMassAnalyser(StreamInterface stream) { - this(); - this.stream = stream; - numberOfStreams++; - streamNumber = numberOfStreams; - } + /** + *

+ * Constructor for MolarMassAnalyser. + *

+ * + * @param name Name of MolarMassAnalyser + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public MolarMassAnalyser(String name, StreamInterface stream) { + super(name, "gr/mol", stream); + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - System.out.println( - "measured temperature " + stream.getThermoSystem().getMolarMass() * 1000.0); - } + /** {@inheritDoc} */ + @Override + public void displayResult() { + System.out.println("measured Molar mass " + getMeasuredValue()); + } - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - return stream.getThermoSystem().getMolarMass() * 1000.0; + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + if (!unit.equalsIgnoreCase("gr/mol")) { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + "getMeasuredValue", "unit", "currently only supports \"gr/mol\"")); } + return stream.getThermoSystem().getMolarMass() * 1000.0; + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/MultiPhaseMeter.java b/src/main/java/neqsim/processSimulation/measurementDevice/MultiPhaseMeter.java index 51292af953..fa33ec465e 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/MultiPhaseMeter.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/MultiPhaseMeter.java @@ -2,11 +2,9 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import neqsim.processSimulation.processEquipment.splitter.Splitter; -import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** @@ -17,16 +15,14 @@ * @author asmund * @version $Id: $Id */ -public class MultiPhaseMeter extends MeasurementDeviceBaseClass { +public class MultiPhaseMeter extends StreamMeasurementDeviceBaseClass { private static final long serialVersionUID = 1000; static Logger logger = LogManager.getLogger(MultiPhaseMeter.class); - protected StreamInterface stream = null; - double pressure = 10.0, temperature = 298.15; - String unitT, unitP; - public MultiPhaseMeter() { - name = "Multi Phase Meter"; - } + double pressure = 1.01325; + double temperature = 288.15; + String unitT; + String unitP; /** *

@@ -36,9 +32,7 @@ public MultiPhaseMeter() { * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ public MultiPhaseMeter(StreamInterface stream) { - this(); - name = "Multi Phase Meter"; - this.stream = stream; + this("Multi Phase Meter", stream); } /** @@ -50,9 +44,7 @@ public MultiPhaseMeter(StreamInterface stream) { * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ public MultiPhaseMeter(String name, StreamInterface stream) { - this(); - this.name = name; - this.stream = stream; + super(name, "kg/hr", stream); } /** @@ -105,140 +97,177 @@ public void setTemperature(double temperature, String unitT) { /** {@inheritDoc} */ @Override - public double getMeasuredValue() { - return stream.getThermoSystem().getFlowRate("kg/hr"); + public double getMeasuredValue(String unit) { + return stream.getThermoSystem().getFlowRate(unit); } - /** {@inheritDoc} */ - @Override - public double getMeasuredValue(String measurement) { - if (measurement.equals("mass rate")) { - return stream.getThermoSystem().getFlowRate("kg/hr"); + /** + * Get specific measurement type. Supports "mass rate", "GOR", "gasDensity", "oilDensity", + * "waterDensity" and "GOR_std". + * + * @param measurement Measurement value to get. + * @param unit Unit to get value in + * @return Measured value + */ + public double getMeasuredValue(String measurement, String unit) { + if (measurement.equals("mass rate")) { + return stream.getFlowRate(unit); + } + + if (stream.getFlowRate("kg/hr") < 1e-10) { + return Double.NaN; + } + + if (measurement.equals("GOR")) { + SystemInterface tempFluid = stream.getFluid().clone(); + tempFluid.setTemperature(temperature, unitT); + tempFluid.setPressure(pressure, unitP); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return Double.NaN; + } + // tempFluid.display(); + if (!tempFluid.hasPhaseType("gas")) { + return Double.NaN; + } + if (!tempFluid.hasPhaseType("oil")) { + return Double.NaN; + } + tempFluid.initPhysicalProperties("density"); + return tempFluid.getPhase("gas").getCorrectedVolume() + / tempFluid.getPhase("oil").getCorrectedVolume(); + } + if (measurement.equals("Gas Flow Rate")) { + SystemInterface tempFluid = stream.getThermoSystem().clone(); + tempFluid.setTemperature(temperature, unitT); + tempFluid.setPressure(pressure, unitP); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return Double.NaN; + } + // tempFluid.display(); + if (!tempFluid.hasPhaseType("gas")) { + return Double.NaN; + } + tempFluid.initPhysicalProperties("density"); + return tempFluid.getPhase("gas").getFlowRate(unit); + } + if (measurement.equals("Oil Flow Rate")) { + SystemInterface tempFluid = stream.getThermoSystem().clone(); + tempFluid.setTemperature(temperature, unitT); + tempFluid.setPressure(pressure, unitP); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return Double.NaN; + } + // tempFluid.display(); + if (!tempFluid.hasPhaseType("oil")) { + return Double.NaN; + } + tempFluid.initPhysicalProperties("density"); + return tempFluid.getPhase("oil").getFlowRate(unit); + } + if (measurement.equals("Water Flow Rate")) { + SystemInterface tempFluid = stream.getThermoSystem().clone(); + tempFluid.setTemperature(temperature, unitT); + tempFluid.setPressure(pressure, unitP); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return Double.NaN; + } + // tempFluid.display(); + if (!tempFluid.hasPhaseType("aqueous")) { + return Double.NaN; + } + tempFluid.initPhysicalProperties("density"); + return tempFluid.getPhase("aqueous").getFlowRate(unit); + } + if (measurement.equals("gasDensity") || measurement.equals("oilDensity") + || measurement.equals("waterDensity")) { + SystemInterface tempFluid = stream.getThermoSystem().clone(); + tempFluid.setTemperature(temperature, unitT); + tempFluid.setPressure(pressure, unitP); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getStackTrace()); + return Double.NaN; + } + tempFluid.initPhysicalProperties(); + if (measurement.equals("gasDensity")) { + if (!tempFluid.hasPhaseType("gas")) { + return 0.0; + } else { + return tempFluid.getPhase("gas").getDensity("kg/m3"); } - - if(stream.getThermoSystem().getFlowRate("kg/hr")<1e-10) { - return Double.NaN; + } + if (measurement.equals("oilDensity")) { + if (!tempFluid.hasPhaseType("oil")) { + return 0.0; + } else { + return tempFluid.getPhase("oil").getDensity("kg/m3"); } - - if (measurement.equals("GOR")) { - SystemInterface tempFluid = stream.getThermoSystem().clone(); - tempFluid.setTemperature(temperature, unitT); - tempFluid.setPressure(pressure, unitP); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); - try { - thermoOps.TPflash(); - } catch (Exception e) { - logger.error(e.getStackTrace()); - return Double.NaN; - } - // tempFluid.display(); - if (!tempFluid.hasPhaseType("gas")) { - return Double.NaN; - } - if (!tempFluid.hasPhaseType("oil")) { - return Double.NaN; - } - tempFluid.initPhysicalProperties("density"); - return tempFluid.getPhase("gas").getCorrectedVolume() - / tempFluid.getPhase("oil").getCorrectedVolume(); + } + if (measurement.equals("waterDensity")) { + if (!tempFluid.hasPhaseType("aqueous")) { + return 0.0; + } else { + return tempFluid.getPhase("aqueous").getDensity("kg/m3"); } - if (measurement.equals("gasDensity") || measurement.equals("oilDensity") - || measurement.equals("waterDensity")) { - SystemInterface tempFluid = stream.getThermoSystem().clone(); - tempFluid.setTemperature(temperature, unitT); - tempFluid.setPressure(pressure, unitP); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); - try { - thermoOps.TPflash(); - } catch (Exception e) { - logger.error(e.getStackTrace()); - return Double.NaN; - } - tempFluid.initPhysicalProperties(); - if (measurement.equals("gasDensity")) { - if (!tempFluid.hasPhaseType("gas")) { - return 0.0; - } else { - return tempFluid.getPhase("gas").getDensity("kg/m3"); - } - } - if (measurement.equals("oilDensity")) { - if (!tempFluid.hasPhaseType("oil")) { - return 0.0; - } else { - return tempFluid.getPhase("oil").getDensity("kg/m3"); - } - } - if (measurement.equals("waterDensity")) { - if (!tempFluid.hasPhaseType("aqueous")) { - return 0.0; - } else { - return tempFluid.getPhase("aqueous").getDensity("kg/m3"); - } - } - return 0.0; - } else if (measurement.equals("GOR_std")) { - SystemInterface tempFluid = stream.getThermoSystem().clone(); - tempFluid.setTemperature(15.0, "C"); - tempFluid.setPressure(1.01325, "bara"); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); - try { - thermoOps.TPflash(); - } catch (Exception e) { - logger.error(e.getStackTrace()); - return Double.NaN; - } - if (!tempFluid.hasPhaseType("gas")) { - return Double.NaN; - } - if (!tempFluid.hasPhaseType("oil")) { - return Double.NaN; - } - tempFluid.initPhysicalProperties("density"); - return tempFluid.getPhase("gas").getCorrectedVolume() - / tempFluid.getPhase("oil").getCorrectedVolume(); - } else - return 0.0; - } + } + return 0.0; + } else if (measurement.equals("GOR_std")) { + SystemInterface tempFluid = stream.getThermoSystem().clone(); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testFluid = new SystemSrkEos(338.15, 50.0); - testFluid.addComponent("nitrogen", 1.205); - testFluid.addComponent("CO2", 1.340); - testFluid.addComponent("methane", 87.974); - testFluid.addComponent("ethane", 5.258); - testFluid.addComponent("propane", 3.283); - testFluid.addComponent("i-butane", 0.082); - testFluid.addComponent("n-butane", 0.487); - testFluid.addComponent("i-pentane", 0.056); - testFluid.addComponent("n-pentane", 1.053); - testFluid.addComponent("nC10", 4.053); - testFluid.setMixingRule(2); - testFluid.setMultiPhaseCheck(true); - - testFluid.setTemperature(24.0, "C"); - testFluid.setPressure(48.0, "bara"); - testFluid.setTotalFlowRate(4.5, "MSm3/day"); - - Stream stream_1 = new Stream("Stream1", testFluid); - - MultiPhaseMeter multiPhaseMeter = new MultiPhaseMeter("test", stream_1); - multiPhaseMeter.setTemperature(90.0, "C"); - multiPhaseMeter.setPressure(60.0, "bara"); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(multiPhaseMeter); - operations.run(); - System.out.println("GOR " + multiPhaseMeter.getMeasuredValue("GOR")); - System.out.println("GOR_std " + multiPhaseMeter.getMeasuredValue("GOR_std")); + tempFluid.setTemperature(15.0, "C"); + tempFluid.setPressure(ThermodynamicConstantsInterface.referencePressure, "bara"); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getStackTrace()); + return Double.NaN; + } + if (!tempFluid.hasPhaseType("gas")) { + return Double.NaN; + } + if (!tempFluid.hasPhaseType("oil")) { + return Double.NaN; + } + tempFluid.initPhysicalProperties("density"); + + double GOR_in_sm3_sm3 = tempFluid.getPhase("gas").getFlowRate("Sm3/hr") + / tempFluid.getPhase("oil").getFlowRate("m3/hr"); + double GOR_via_corrected_volume = tempFluid.getPhase("gas").getCorrectedVolume() + / tempFluid.getPhase("oil").getCorrectedVolume(); + + // System.out.println("Stream 2 (results inside MPM) " + " GOR sm3/sm3 " + GOR_in_sm3_sm3 + // + " GOR Corrected by volume " + GOR_via_corrected_volume); + + // System.out.println("Stream 2 (results inside MPM) getPhase(gas).getCorrectedVolume() " + // + tempFluid.getPhase("gas").getCorrectedVolume()); + // System.out.println("Stream 2 (results inside MPM) getPhase(oil).getCorrectedVolume() " + // + tempFluid.getPhase("oil").getCorrectedVolume()); + + // GOR_via_corrected_volume and GOR_in_sm3_sm3 should not be so different ? + return tempFluid.getPhase("gas").getCorrectedVolume() + / tempFluid.getPhase("oil").getCorrectedVolume(); + } else { + logger.warn("Measurement type " + measurement + " is not found"); + return 0.0; + } } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/NMVOCAnalyser.java b/src/main/java/neqsim/processSimulation/measurementDevice/NMVOCAnalyser.java new file mode 100644 index 0000000000..ce4f359d6d --- /dev/null +++ b/src/main/java/neqsim/processSimulation/measurementDevice/NMVOCAnalyser.java @@ -0,0 +1,71 @@ +package neqsim.processSimulation.measurementDevice; + +import neqsim.processSimulation.processEquipment.stream.StreamInterface; + +/** + *

+ * NMVOCAnalyser class. + *

+ * + * @author ESOL + * @version $Id: $Id + */ +public class NMVOCAnalyser extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for NMVOCAnalyser. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public NMVOCAnalyser(StreamInterface stream) { + this("NM VOC Analyser", stream); + } + + /** + *

+ * Constructor for NMVOCAnalyser. + *

+ * + * @param name Name of NMVOCAnalyser + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public NMVOCAnalyser(String name, StreamInterface stream) { + super(name, "kg/hr", stream); + } + + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + return getnmVOCFlowRate(unit); + } + + /** + *

+ * Calculates the mass flow rate of non-methane volatile organic compounds (nmVOCs). + *

+ * + * @param unit Unit to get measurement in + * @return the flow rate of nmVOCs in the flow unit set setUnit method (e.g. "kg/hr", + * "tonnes/year") + */ + public double getnmVOCFlowRate(String unit) { + // Define list of components to include in mass flow calculation + java.util.List nmVOCcomponents = java.util.Arrays.asList("ethane", "propane", "i-butane", "n-butane", + "i-pentane", + "n-pentane", + "n-hexane", "n-heptane", "benzene", "nC8", "nC9", "nC10", "nC11"); + + double flow = 0.0; + for (int i = 0; i < this.stream.getFluid().getNumberOfComponents(); i++) { + String name = this.stream.getFluid().getComponent(i).getName(); + if (nmVOCcomponents.contains(name)) { + flow += this.stream.getFluid().getComponent(i).getFlowRate(unit); + } + } + + return flow; + } +} diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/PressureTransmitter.java b/src/main/java/neqsim/processSimulation/measurementDevice/PressureTransmitter.java index 449bf8da17..0e638f3b66 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/PressureTransmitter.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/PressureTransmitter.java @@ -10,48 +10,41 @@ * @author ESOL * @version $Id: $Id */ -public class PressureTransmitter extends MeasurementDeviceBaseClass { - private static final long serialVersionUID = 1000; +public class PressureTransmitter extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; - protected int streamNumber = 0; - /** Constant numberOfStreams=0 */ - protected static int numberOfStreams = 0; - protected StreamInterface stream = null; + /** + *

+ * Constructor for PressureTransmitter. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public PressureTransmitter(StreamInterface stream) { + this("Pressure Transmitter", stream); + } - /** - *

- * Constructor for PressureTransmitter. - *

- */ - public PressureTransmitter() { - name = "Pressure Transmitter"; - unit = "bar"; - } + /** + *

+ * Constructor for PressureTransmitter. + *

+ * + * @param name Name of PressureTransmitter + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public PressureTransmitter(String name, StreamInterface stream) { + super(name, "bar", stream); + } - /** - *

- * Constructor for PressureTransmitter. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public PressureTransmitter(StreamInterface stream) { - this(); - this.stream = stream; - numberOfStreams++; - streamNumber = numberOfStreams; - } + /** {@inheritDoc} */ + @Override + public void displayResult() { + System.out.println("measured temperature " + stream.getPressure()); + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - System.out.println("measured temperature " + stream.getPressure()); - } - - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - return stream.getThermoSystem().getPressure(); - } + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + return stream.getThermoSystem().getPressure(unit); + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/StreamMeasurementDeviceBaseClass.java b/src/main/java/neqsim/processSimulation/measurementDevice/StreamMeasurementDeviceBaseClass.java new file mode 100644 index 0000000000..ae74b3f5b9 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/measurementDevice/StreamMeasurementDeviceBaseClass.java @@ -0,0 +1,47 @@ +package neqsim.processSimulation.measurementDevice; + +import neqsim.processSimulation.processEquipment.stream.StreamInterface; + +/** + *

+ * Abstract MeasurementDeviceBaseClass class. + *

+ * + * @author ESOL + * @version $Id: $Id + */ +public abstract class StreamMeasurementDeviceBaseClass extends MeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; + + protected StreamInterface stream = null; + + /** + * Constructor for MeasurementDeviceBaseClass. + * + * @param name Name of the object + * @param unit Engineering unit of the measurement + * @param stream Streaminterface object to measure from + */ + public StreamMeasurementDeviceBaseClass(String name, String unit, StreamInterface stream) { + super(name, unit); + setStream(stream); + } + + /** + * Getter for property stream. + * + * @return StreamInterface object. + */ + public StreamInterface getStream() { + return this.stream; + } + + /** + * Setter for property stream. + * + * @param stream Stream to set. + */ + public void setStream(StreamInterface stream) { + this.stream = stream; + } +} diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/TemperatureTransmitter.java b/src/main/java/neqsim/processSimulation/measurementDevice/TemperatureTransmitter.java index 178985769f..82570fde1b 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/TemperatureTransmitter.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/TemperatureTransmitter.java @@ -3,6 +3,7 @@ * * Created on 6. juni 2006, 15:24 */ + package neqsim.processSimulation.measurementDevice; import neqsim.processSimulation.processEquipment.stream.StreamInterface; @@ -15,43 +16,41 @@ * @author ESOL * @version $Id: $Id */ -public class TemperatureTransmitter extends MeasurementDeviceBaseClass { - private static final long serialVersionUID = 1000; - - protected int streamNumber = 0; - /** Constant numberOfStreams=0 */ - protected static int numberOfStreams = 0; - protected StreamInterface stream = null; +public class TemperatureTransmitter extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; - public TemperatureTransmitter() { - name = "Temperature Transmitter"; - unit = "K"; - } + /** + *

+ * Constructor for TemperatureTransmitter. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public TemperatureTransmitter(StreamInterface stream) { + this("Temperature Transmitter", stream); + } - /** - *

- * Constructor for TemperatureTransmitter. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public TemperatureTransmitter(StreamInterface stream) { - this(); - this.stream = stream; - numberOfStreams++; - streamNumber = numberOfStreams; - } + /** + *

+ * Constructor for TemperatureTransmitter. + *

+ * + * @param name Name of TemperatureTransmitter + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public TemperatureTransmitter(String name, StreamInterface stream) { + super(name, "K", stream); + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - System.out.println("measured temperature " + getMeasuredValue()); - } + /** {@inheritDoc} */ + @Override + public void displayResult() { + System.out.println("measured temperature " + getMeasuredValue()); + } - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - return stream.getThermoSystem().getTemperature(); - } + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + return stream.getThermoSystem().getTemperature(unit); + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/VolumeFlowTransmitter.java b/src/main/java/neqsim/processSimulation/measurementDevice/VolumeFlowTransmitter.java index 415c15b3a2..2a3f952456 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/VolumeFlowTransmitter.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/VolumeFlowTransmitter.java @@ -1,6 +1,7 @@ package neqsim.processSimulation.measurementDevice; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.ThermodynamicConstantsInterface; /** *

@@ -10,95 +11,88 @@ * @author ESOL * @version $Id: $Id */ -public class VolumeFlowTransmitter extends MeasurementDeviceBaseClass { - private static final long serialVersionUID = 1000; +public class VolumeFlowTransmitter extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; - protected int streamNumber = 0; - /** Constant numberOfStreams=0 */ - protected static int numberOfStreams = 0; - protected StreamInterface stream = null; - private int measuredPhaseNumber = 0; + private int measuredPhaseNumber = 0; - /** - *

- * Constructor for VolumeFlowTransmitter. - *

- */ - public VolumeFlowTransmitter() {} + /** + *

+ * Constructor for VolumeFlowTransmitter. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public VolumeFlowTransmitter(StreamInterface stream) { + this("volume flow rate", stream); + } - /** - *

- * Constructor for VolumeFlowTransmitter. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public VolumeFlowTransmitter(StreamInterface stream) { - this.stream = stream; - numberOfStreams++; - streamNumber = numberOfStreams; - name = "volume flow rate"; - unit = "m^3/hr"; - } + /** + *

+ * Constructor for VolumeFlowTransmitter. + *

+ * + * @param name Name of VolumeFlowTransmitter + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public VolumeFlowTransmitter(String name, StreamInterface stream) { + super(name, "m^3/hr", stream); + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - System.out.println("measured volume " + Double.toString(getMeasuredValue()) + " " + unit); - } + /** {@inheritDoc} */ + @Override + public void displayResult() { + System.out.println("measured volume " + Double.toString(getMeasuredValue()) + " " + unit); + } - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - stream.getThermoSystem().initPhysicalProperties(); - if (unit.equals("kg/hr")) { - return stream.getFlowRate(unit); - } - else if (unit.equals("m^3/hr")) { - return stream.getThermoSystem().getPhase(measuredPhaseNumber).getNumberOfMolesInPhase() - * stream.getThermoSystem().getPhase(measuredPhaseNumber).getMolarMass() - / stream.getThermoSystem().getPhase(measuredPhaseNumber).getPhysicalProperties() - .getDensity() - * 3600.0; - } else if (unit.equals("Nm^3/day")) { - return stream.getThermoSystem().getPhase(measuredPhaseNumber).getNumberOfMolesInPhase() - * neqsim.thermo.ThermodynamicConstantsInterface.R - * neqsim.thermo.ThermodynamicConstantsInterface.normalStateTemperature - / 101325.0 * 3600.0 * 24; - } else if (unit.equals("Sm^3/day")) { - return stream.getThermoSystem().getPhase(measuredPhaseNumber).getNumberOfMolesInPhase() - * neqsim.thermo.ThermodynamicConstantsInterface.R - * neqsim.thermo.ThermodynamicConstantsInterface.standardStateTemperature - / 101325.0 * 3600.0 * 24; - } else { - return stream.getThermoSystem().getPhase(measuredPhaseNumber).getNumberOfMolesInPhase() - * stream.getThermoSystem().getPhase(measuredPhaseNumber).getMolarMass() - / stream.getThermoSystem().getPhase(measuredPhaseNumber).getPhysicalProperties() - .getDensity() - * 3600.0; - } + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + stream.getThermoSystem().initPhysicalProperties(); + if (unit.equals("kg/hr")) { + return stream.getFlowRate(unit); + } else if (unit.equals("m^3/hr")) { + return stream.getThermoSystem().getPhase(measuredPhaseNumber).getNumberOfMolesInPhase() + * stream.getThermoSystem().getPhase(measuredPhaseNumber).getMolarMass() / stream + .getThermoSystem().getPhase(measuredPhaseNumber).getPhysicalProperties().getDensity() + * 3600.0; + } else if (unit.equals("Nm^3/day")) { + return stream.getThermoSystem().getPhase(measuredPhaseNumber).getNumberOfMolesInPhase() + * neqsim.thermo.ThermodynamicConstantsInterface.R + * neqsim.thermo.ThermodynamicConstantsInterface.normalStateTemperature + / ThermodynamicConstantsInterface.atm * 3600.0 * 24; + } else if (unit.equals("Sm^3/day")) { + return stream.getThermoSystem().getPhase(measuredPhaseNumber).getNumberOfMolesInPhase() + * neqsim.thermo.ThermodynamicConstantsInterface.R + * neqsim.thermo.ThermodynamicConstantsInterface.standardStateTemperature + / ThermodynamicConstantsInterface.atm * 3600.0 * 24; + } else { + return stream.getThermoSystem().getPhase(measuredPhaseNumber).getNumberOfMolesInPhase() + * stream.getThermoSystem().getPhase(measuredPhaseNumber).getMolarMass() / stream + .getThermoSystem().getPhase(measuredPhaseNumber).getPhysicalProperties().getDensity() + * 3600.0; } + } - /** - *

- * Getter for the field measuredPhaseNumber. - *

- * - * @return a int - */ - public int getMeasuredPhaseNumber() { - return measuredPhaseNumber; - } + /** + *

+ * Getter for the field measuredPhaseNumber. + *

+ * + * @return a int + */ + public int getMeasuredPhaseNumber() { + return measuredPhaseNumber; + } - /** - *

- * Setter for the field measuredPhaseNumber. - *

- * - * @param measuredPhase a int - */ - public void setMeasuredPhaseNumber(int measuredPhase) { - this.measuredPhaseNumber = measuredPhase; - } + /** + *

+ * Setter for the field measuredPhaseNumber. + *

+ * + * @param measuredPhase a int + */ + public void setMeasuredPhaseNumber(int measuredPhase) { + this.measuredPhaseNumber = measuredPhase; + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/WaterContentAnalyser.java b/src/main/java/neqsim/processSimulation/measurementDevice/WaterContentAnalyser.java index ed40227fac..7d0d28c5a5 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/WaterContentAnalyser.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/WaterContentAnalyser.java @@ -10,57 +10,50 @@ * @author ESOL * @version $Id: $Id */ -public class WaterContentAnalyser extends MeasurementDeviceBaseClass { - private static final long serialVersionUID = 1000; +public class WaterContentAnalyser extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; - protected int streamNumber = 0; - /** Constant numberOfStreams=0 */ - protected static int numberOfStreams = 0; - protected StreamInterface stream = null; + /** + *

+ * Constructor for WaterContentAnalyser. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public WaterContentAnalyser(StreamInterface stream) { + this("water analyser", stream); + } - /** - *

- * Constructor for WaterContentAnalyser. - *

- */ - public WaterContentAnalyser() {} + /** + *

+ * Constructor for WaterContentAnalyser. + *

+ * + * @param name Name of WaterContentAnalyser + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public WaterContentAnalyser(String name, StreamInterface stream) { + super(name, "kg/day", stream); + } - /** - *

- * Constructor for WaterContentAnalyser. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public WaterContentAnalyser(StreamInterface stream) { - this.stream = stream; - numberOfStreams++; - streamNumber = numberOfStreams; - name = "water analyser"; - unit = "kg/day"; + /** {@inheritDoc} */ + @Override + public void displayResult() { + try { + System.out.println("total water production [kg/dag]" + stream.getThermoSystem().getPhase(0) + .getComponent("water").getNumberOfmoles() + * stream.getThermoSystem().getPhase(0).getComponent("water").getMolarMass() * 3600 + * 24); + System.out.println("water in phase 1 (ppm) " + + stream.getThermoSystem().getPhase(0).getComponent("water").getx() * 1e6); + } finally { } + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - try { - System.out.println("total water production [kg/dag]" - + stream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles() - * stream.getThermoSystem().getPhase(0).getComponent("water") - .getMolarMass() - * 3600 * 24); - System.out.println("water in phase 1 (ppm) " - + stream.getThermoSystem().getPhase(0).getComponent("water").getx() * 1e6); - } finally { - } - } - - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - return stream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles() - * stream.getThermoSystem().getPhase(0).getComponent("water").getMolarMass() * 3600 - * 24; - } + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + return stream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles() + * stream.getThermoSystem().getPhase(0).getComponent("water").getMolarMass() * 3600 * 24; + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/WaterDewPointAnalyser.java b/src/main/java/neqsim/processSimulation/measurementDevice/WaterDewPointAnalyser.java index 32da848e2c..f18c4629fe 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/WaterDewPointAnalyser.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/WaterDewPointAnalyser.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.measurementDevice; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.util.empiric.BukacekWaterInGas; @@ -13,132 +15,125 @@ * @author ESOL * @version $Id: $Id */ -public class WaterDewPointAnalyser extends MeasurementDeviceBaseClass { - private static final long serialVersionUID = 1000; +public class WaterDewPointAnalyser extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(WaterDewPointAnalyser.class); - protected int streamNumber = 0; - /** Constant numberOfStreams=0 */ - protected static int numberOfStreams = 0; - protected StreamInterface stream = null; - private double referencePressure = 70.0; - private String method = "Bukacek"; + private double referencePressure = 70.0; + private String method = "Bukacek"; - /** - *

- * Constructor for WaterDewPointAnalyser. - *

- */ - public WaterDewPointAnalyser() {} + /** + *

+ * Constructor for WaterDewPointAnalyser. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public WaterDewPointAnalyser(StreamInterface stream) { + this("WaterDewPointAnalyser", stream); + } - /** - *

- * Constructor for WaterDewPointAnalyser. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public WaterDewPointAnalyser(StreamInterface stream) { - this.stream = stream; - numberOfStreams++; - streamNumber = numberOfStreams; - unit = "K"; - setConditionAnalysisMaxDeviation(1.0); - } + /** + *

+ * Constructor for WaterDewPointAnalyser. + *

+ * + * @param name Name of WaterDewPointAnalyser + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public WaterDewPointAnalyser(String name, StreamInterface stream) { + super(name, "K", stream); + setConditionAnalysisMaxDeviation(1.0); + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - try { - // System.out.println("total water production [kg/dag]" + - // stream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles()*stream.getThermoSystem().getPhase(0).getComponent("water").getMolarMass()*3600*24); - // System.out.println("water in phase 1 (ppm) " + - // stream.getThermoSystem().getPhase(0).getComponent("water").getx()*1e6); - } finally { - } + /** {@inheritDoc} */ + @Override + public void displayResult() { + try { + // System.out.println("total water production [kg/dag]" + + // stream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles() * + // stream.getThermoSystem().getPhase(0).getComponent("water").getMolarMass()*3600*24); + // System.out.println("water in phase 1 (ppm) " + + // stream.getThermoSystem().getPhase(0).getComponent("water").getx()*1e6); + } finally { } + } - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { - return getMeasuredValue(unit); + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + if (method.equals("Bukacek")) { + SystemInterface tempFluid = stream.getThermoSystem().clone(); + tempFluid.setTemperature(BukacekWaterInGas + .waterDewPointTemperature(tempFluid.getComponent("water").getx(), referencePressure)); + return tempFluid.getTemperature(unit); + } else if (method.equals("multiphase")) { + SystemInterface tempFluid = stream.getThermoSystem().clone(); + tempFluid.setPressure(referencePressure); + tempFluid.setTemperature(0.1, "C"); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.waterDewPointTemperatureMultiphaseFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + return tempFluid.getTemperature(unit); + } else { + SystemInterface tempFluid = stream.getThermoSystem().clone(); + SystemInterface tempFluid2 = tempFluid.setModel("GERG-water-EOS"); + tempFluid2.setPressure(referencePressure); + tempFluid2.setTemperature(-17.0, "C"); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid2); + try { + thermoOps.waterDewPointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + return tempFluid2.getTemperature(unit); } + } - /** {@inheritDoc} */ - @Override - public double getMeasuredValue(String unit) { - if (method.equals("Bukacek")) { - SystemInterface tempFluid = stream.getThermoSystem().clone(); - tempFluid.setTemperature(BukacekWaterInGas.waterDewPointTemperature( - tempFluid.getComponent("water").getx(), referencePressure)); - return tempFluid.getTemperature(unit); - } else if (method.equals("multiphase")) { - SystemInterface tempFluid = stream.getThermoSystem().clone(); - tempFluid.setPressure(referencePressure); - tempFluid.setTemperature(0.1, "C"); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); - try { - thermoOps.waterDewPointTemperatureMultiphaseFlash(); - } catch (Exception e) { - e.printStackTrace(); - } - return tempFluid.getTemperature(unit); - } else { - SystemInterface tempFluid = stream.getThermoSystem().clone(); - SystemInterface tempFluid2 = tempFluid.setModel("GERG-water-EOS"); - tempFluid2.setPressure(referencePressure); - tempFluid2.setTemperature(-17.0, "C"); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid2); - try { - thermoOps.waterDewPointTemperatureFlash(); - } catch (Exception e) { - e.printStackTrace(); - } - return tempFluid2.getTemperature(unit); - } - } + /** + *

+ * Getter for the field referencePressure. + *

+ * + * @return Reference pressure in bara + */ + public double getReferencePressure() { + return referencePressure; + } - /** - *

- * Getter for the field referencePressure. - *

- * - * @return a double - */ - public double getReferencePressure() { - return referencePressure; - } + /** + *

+ * Setter for the field referencePressure. + *

+ * + * @param referencePressure Reference pressure to set in in bara + */ + public void setReferencePressure(double referencePressure) { + this.referencePressure = referencePressure; + } - /** - *

- * Setter for the field referencePressure. - *

- * - * @param referencePressure a double - */ - public void setReferencePressure(double referencePressure) { - this.referencePressure = referencePressure; - } + /** + *

+ * Getter for the field method. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getMethod() { + return method; + } - /** - *

- * Getter for the field method. - *

- * - * @return a {@link java.lang.String} object - */ - public String getMethod() { - return method; - } - - /** - *

- * Setter for the field method. - *

- * - * @param method a {@link java.lang.String} object - */ - public void setMethod(String method) { - this.method = method; - } + /** + *

+ * Setter for the field method. + *

+ * + * @param method a {@link java.lang.String} object + */ + public void setMethod(String method) { + this.method = method; + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/WellAllocator.java b/src/main/java/neqsim/processSimulation/measurementDevice/WellAllocator.java index 622c87e0c2..ac2e7e2439 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/WellAllocator.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/WellAllocator.java @@ -1,52 +1,81 @@ package neqsim.processSimulation.measurementDevice; -import neqsim.processSimulation.processEquipment.separator.Separator; -import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; -import neqsim.processSimulation.util.monitor.WellAllocatorResponse; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -public class WellAllocator extends MeasurementDeviceBaseClass { - - protected StreamInterface wellStream = null; +/** + *

+ * WellAllocator class. + *

+ * + * @author ASMF + * @version $Id: $Id + */ +public class WellAllocator extends StreamMeasurementDeviceBaseClass { + private static final long serialVersionUID = 1L; protected StreamInterface exportGasStream = null; protected StreamInterface exportOilStream = null; - public WellAllocator() { - name = "Well Allocator"; - } - - + /** + *

+ * Constructor for WellAllocator. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ public WellAllocator(StreamInterface stream) { - name = "Well Allocator"; - this.wellStream = stream; + this("Well Allocator", stream); } - public WellAllocator(String streamname, StreamInterface stream) { - this(stream); - name = streamname; + /** + *

+ * Constructor for WellAllocator. + *

+ * + * @param name a {@link java.lang.String} object + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public WellAllocator(String name, StreamInterface stream) { + super(name, "kg/hr", stream); } - + /** + *

+ * Setter for the field exportGasStream. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ public void setExportGasStream(StreamInterface stream) { this.exportGasStream = stream; } + /** + *

+ * Setter for the field exportOilStream. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ public void setExportOilStream(StreamInterface stream) { this.exportOilStream = stream; } /** {@inheritDoc} */ @Override - public double getMeasuredValue() { - return wellStream.getThermoSystem().getFlowRate("kg/hr"); + public double getMeasuredValue(String unit) { + return stream.getThermoSystem().getFlowRate(unit); } - /** {@inheritDoc} */ - @Override - public double getMeasuredValue(String measurement) { - int numberOfComps = wellStream.getThermoSystem().getNumberOfComponents(); + /** + * Get specific measurement type. Supports "gas export rate", "oil export rate" and "total export + * rate". + * + * @param measurement Measurement value to get + * @param unit Unit to get value in + * @return Measured value + */ + public double getMeasuredValue(String measurement, String unit) { + int numberOfComps = stream.getThermoSystem().getNumberOfComponents(); double[] splitFactors = new double[numberOfComps]; double gasExportFlow = 0.0; double oilExportFlow = 0.0; @@ -54,75 +83,19 @@ public double getMeasuredValue(String measurement) { splitFactors[i] = exportGasStream.getFluid().getComponent(i).getFlowRate("kg/hr") / (exportGasStream.getFluid().getComponent(i).getFlowRate("kg/hr") + exportOilStream.getFluid().getComponent(i).getFlowRate("kg/hr")); - gasExportFlow += wellStream.getFluid().getComponent(i).getTotalFlowRate("kg/hr") * splitFactors[i]; + gasExportFlow += + stream.getFluid().getComponent(i).getTotalFlowRate(unit) * splitFactors[i]; oilExportFlow += - wellStream.getFluid().getComponent(i).getTotalFlowRate("kg/hr") * (1.0 - splitFactors[i]); + stream.getFluid().getComponent(i).getTotalFlowRate(unit) * (1.0 - splitFactors[i]); } if (measurement.equals("gas export rate")) { return gasExportFlow; - } - if (measurement.equals("oil export rate")) { + } else if (measurement.equals("oil export rate")) { return oilExportFlow; - } - if (measurement.equals("total export rate")) { - return wellStream.getFluid().getFlowRate("kg/hr"); + } else if (measurement.equals("total export rate")) { + return stream.getFluid().getFlowRate(unit); } return 0.0; } - - public static void main(String[] args) { - SystemInterface testFluid = new SystemSrkEos(338.15, 50.0); - testFluid.addComponent("nitrogen", 1.205); - testFluid.addComponent("CO2", 1.340); - testFluid.addComponent("methane", 87.974); - testFluid.addComponent("ethane", 5.258); - testFluid.addComponent("propane", 3.283); - testFluid.addComponent("i-butane", 0.082); - testFluid.addComponent("n-butane", 0.487); - testFluid.addComponent("i-pentane", 0.056); - testFluid.addComponent("n-pentane", 1.053); - testFluid.addComponent("nC10", 14.053); - testFluid.setMixingRule(2); - - testFluid.setTemperature(24.0, "C"); - testFluid.setPressure(48.0, "bara"); - testFluid.setTotalFlowRate(2500.0, "kg/hr"); - - Stream stream_1 = new Stream("Stream1", testFluid); - - SystemInterface testFluid2 = testFluid.clone(); - // testFluid2.setMolarComposition(new double[] {0.1, 0.1, 0.9, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0}); - Stream stream_2 = new Stream("Stream2", testFluid2); - - Separator sep1 = new Separator("sep1", stream_1); - sep1.addStream(stream_2); - - Stream stream_gasExp = new Stream("gasexp", sep1.getGasOutStream()); - - Stream stream_oilExp = new Stream("gasexp", sep1.getLiquidOutStream()); - - WellAllocator wellAlloc = new WellAllocator("alloc", stream_1); - wellAlloc.setExportGasStream(stream_gasExp); - wellAlloc.setExportOilStream(stream_oilExp); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(stream_2); - operations.add(sep1); - operations.add(stream_gasExp); - operations.add(stream_oilExp); - operations.add(wellAlloc); - operations.run(); - - WellAllocatorResponse responsAl = new WellAllocatorResponse(wellAlloc); - - System.out.println("name " + responsAl.name); - System.out.println("gas flow " + responsAl.gasExportRate); - System.out.println("oil flow " + responsAl.oilExportRate); - System.out.println("total flow " + responsAl.totalExportRate); - - } - } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/online/OnlineSignal.java b/src/main/java/neqsim/processSimulation/measurementDevice/online/OnlineSignal.java index 90902b5214..a7a33301ec 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/online/OnlineSignal.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/online/OnlineSignal.java @@ -11,117 +11,116 @@ * @version $Id: $Id */ public class OnlineSignal implements java.io.Serializable { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Getter for the field unit. - *

- * - * @return the unit - */ - public String getUnit() { - return unit; - } + /** + *

+ * Getter for the field unit. + *

+ * + * @return the unit + */ + public String getUnit() { + return unit; + } - /** - *

- * Setter for the field unit. - *

- * - * @param unit the unit to set - */ - public void setUnit(String unit) { - this.unit = unit; - } + /** + *

+ * Setter for the field unit. + *

+ * + * @param unit the unit to set + */ + public void setUnit(String unit) { + this.unit = unit; + } - Date dateStamp = new Date(); - String name = ""; - String plantName = "Kaarsto"; - String transmitterName = "21TI1117"; - java.sql.ResultSet dataSet = null; - double value = 1.0; - private String unit = "C"; - neqsim.util.database.AspenIP21Database database = null; + Date dateStamp = new Date(); + String name = ""; + String plantName = "Kaarsto"; + String transmitterName = "21TI1117"; + java.sql.ResultSet dataSet = null; + double value = 1.0; + private String unit = "C"; + neqsim.util.database.AspenIP21Database database = null; - /** - *

- * Constructor for OnlineSignal. - *

- * - * @param plantName a {@link java.lang.String} object - * @param transmitterName a {@link java.lang.String} object - */ - public OnlineSignal(String plantName, String transmitterName) { - this.plantName = plantName; - this.transmitterName = transmitterName; + /** + *

+ * Constructor for OnlineSignal. + *

+ * + * @param plantName a {@link java.lang.String} object + * @param transmitterName a {@link java.lang.String} object + */ + public OnlineSignal(String plantName, String transmitterName) { + this.plantName = plantName; + this.transmitterName = transmitterName; - connect(); - } + connect(); + } - /** - *

- * connect. - *

- * - * @return a boolean - */ - public boolean connect() { - if (plantName.equals("Karsto")) { - database = new neqsim.util.database.AspenIP21Database(); - } else { - database = new neqsim.util.database.AspenIP21Database(); - } - try { - dataSet = - database.getResultSet(("SELECT * FROM IP_AnalogDef WHERE NAME='" + name + "'")); - dataSet.next(); - value = dataSet.getDouble("IP_VALUE"); - } catch (Exception e) { - // dataSet.close(); - return false; - } - return true; + /** + *

+ * connect. + *

+ * + * @return a boolean + */ + public boolean connect() { + if (plantName.equals("Karsto")) { + database = new neqsim.util.database.AspenIP21Database(); + } else { + database = new neqsim.util.database.AspenIP21Database(); } - - /** - *

- * getTimeStamp. - *

- * - * @return a {@link java.util.Date} object - */ - public Date getTimeStamp() { - return dateStamp; + try { + dataSet = database.getResultSet(("SELECT * FROM IP_AnalogDef WHERE NAME='" + name + "'")); + dataSet.next(); + value = dataSet.getDouble("IP_VALUE"); + } catch (Exception ex) { + // dataSet.close(); + return false; } + return true; + } + + /** + *

+ * getTimeStamp. + *

+ * + * @return a {@link java.util.Date} object + */ + public Date getTimeStamp() { + return dateStamp; + } - /** - *

- * Getter for the field value. - *

- * - * @return a double - */ - public double getValue() { - try { - // System.out.println("reading online vale from: " + transmitterName ); - dataSet = database.getResultSet( - ("SELECT * FROM IP_AnalogDef WHERE NAME='" + transmitterName + "'")); - dataSet.next(); - value = dataSet.getDouble("IP_VALUE"); - // System.out.println("value + " + value ); - } catch (Exception e) { - // dataSet.close(); - return 0; - } finally { - try { - dataSet.close(); - } catch (Exception e) { - // dataSet.close(); - return 0; - } - } - dateStamp = new Date(); // read dateStamp - return value; // read online measurement + /** + *

+ * Getter for the field value. + *

+ * + * @return a double + */ + public double getValue() { + try { + // System.out.println("reading online vale from: " + transmitterName ); + dataSet = database + .getResultSet(("SELECT * FROM IP_AnalogDef WHERE NAME='" + transmitterName + "'")); + dataSet.next(); + value = dataSet.getDouble("IP_VALUE"); + // System.out.println("value + " + value ); + } catch (Exception ex) { + // dataSet.close(); + return 0; + } finally { + try { + dataSet.close(); + } catch (Exception ex) { + // dataSet.close(); + return 0; + } } + dateStamp = new Date(); // read dateStamp + return value; // read online measurement + } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/pHProbe.java b/src/main/java/neqsim/processSimulation/measurementDevice/pHProbe.java index 03e890425f..3c80505a58 100644 --- a/src/main/java/neqsim/processSimulation/measurementDevice/pHProbe.java +++ b/src/main/java/neqsim/processSimulation/measurementDevice/pHProbe.java @@ -12,30 +12,35 @@ * @author ESOL * @version $Id: $Id */ -public class pHProbe extends MeasurementDeviceBaseClass { +public class pHProbe extends StreamMeasurementDeviceBaseClass { private static final long serialVersionUID = 1000; - protected StreamInterface stream = null; protected SystemInterface reactiveThermoSystem; protected ThermodynamicOperations thermoOps; - private double alkanility = 0.0; + + private double alkalinity = 0.0; /** *

* Constructor for pHProbe. *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ - public pHProbe() {} + public pHProbe(StreamInterface stream) { + this("phProbe", stream); + } /** *

* Constructor for pHProbe. *

* + * @param name Name of pHProbe * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ - public pHProbe(StreamInterface stream) { - this.stream = stream; + public pHProbe(String name, StreamInterface stream) { + super(name, "", stream); } /** @@ -44,47 +49,41 @@ public pHProbe(StreamInterface stream) { *

*/ public void run() { - - if (stream != null) { - if (stream.getFluid().hasPhaseType("aqueous")) { - reactiveThermoSystem = stream.getFluid().clone(); - // reactiveThermoSystem = stream.getFluid().phaseToSystem("aqueous"); - reactiveThermoSystem = reactiveThermoSystem.setModel("Electrolyte-CPA-EOS-statoil"); - if (getAlkanility() > 1e-10) { - double waterkg = reactiveThermoSystem.getComponent("water").getTotalFlowRate("kg/sec"); - reactiveThermoSystem.addComponent("Na+", waterkg * getAlkanility() / 1e3); - reactiveThermoSystem.addComponent("OH-", waterkg * getAlkanility() / 1e3); - } - if (!reactiveThermoSystem.isChemicalSystem()) { - reactiveThermoSystem.chemicalReactionInit(); - reactiveThermoSystem.setMixingRule(10); - reactiveThermoSystem.setMultiPhaseCheck(false); - } - thermoOps = new ThermodynamicOperations(reactiveThermoSystem); - thermoOps.TPflash(); - } else - return; + if (stream != null && stream.getFluid().hasPhaseType("aqueous")) { + reactiveThermoSystem = stream.getFluid().clone(); + // reactiveThermoSystem = stream.getFluid().phaseToSystem("aqueous"); + reactiveThermoSystem = reactiveThermoSystem.setModel("Electrolyte-CPA-EOS-statoil"); + if (getAlkalinity() > 1e-10) { + double waterkg = reactiveThermoSystem.getComponent("water").getTotalFlowRate("kg/sec"); + reactiveThermoSystem.addComponent("Na+", waterkg * getAlkalinity() / 1e3); + reactiveThermoSystem.addComponent("OH-", waterkg * getAlkalinity() / 1e3); + } + if (!reactiveThermoSystem.isChemicalSystem()) { + reactiveThermoSystem.chemicalReactionInit(); + reactiveThermoSystem.setMixingRule(10); + reactiveThermoSystem.setMultiPhaseCheck(false); + } + thermoOps = new ThermodynamicOperations(reactiveThermoSystem); + thermoOps.TPflash(); } } /** {@inheritDoc} */ @Override - public void displayResult() { - System.out.println("measured temperature " + stream.getTemperature()); - } - - /** {@inheritDoc} */ - @Override - public double getMeasuredValue() { + public double getMeasuredValue(String unit) { + if (!unit.equalsIgnoreCase("")) { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + "getMeasuredValue", "unit", "can only be empty.")); + } if (stream != null) { if (stream.getFluid().hasPhaseType("aqueous")) { reactiveThermoSystem = stream.getFluid().clone(); // reactiveThermoSystem = stream.getFluid().phaseToSystem("aqueous"); reactiveThermoSystem = reactiveThermoSystem.setModel("Electrolyte-CPA-EOS-statoil"); - if (getAlkanility() > 1e-10) { + if (getAlkalinity() > 1e-10) { double waterkg = reactiveThermoSystem.getComponent("water").getTotalFlowRate("kg/sec"); - reactiveThermoSystem.addComponent("Na+", waterkg * getAlkanility() / 1e3); - reactiveThermoSystem.addComponent("OH-", waterkg * getAlkanility() / 1e3); + reactiveThermoSystem.addComponent("Na+", waterkg * getAlkalinity() / 1e3); + reactiveThermoSystem.addComponent("OH-", waterkg * getAlkalinity() / 1e3); } if (!reactiveThermoSystem.isChemicalSystem()) { reactiveThermoSystem.chemicalReactionInit(); @@ -93,28 +92,36 @@ public double getMeasuredValue() { } thermoOps = new ThermodynamicOperations(reactiveThermoSystem); thermoOps.TPflash(); - return reactiveThermoSystem.getPhase(reactiveThermoSystem.getPhaseNumberOfPhase("aqueous")) - .getpH(); + return reactiveThermoSystem.getPhase("aqueous").getpH(); } else { System.out.println("no aqueous phase for pH analyser"); return 7.0; } - } else + } else { System.out.println("no stream connected to pH analyser"); + } return Double.NaN; } /** - * @return the alkanility + *

+ * Getter for the field alkalinity. + *

+ * + * @return the alkalinity */ - public double getAlkanility() { - return alkanility; + public double getAlkalinity() { + return alkalinity; } /** - * @param alkanility the alkanility to set + *

+ * Setter for the field alkalinity. + *

+ * + * @param alkalinity the alkalinity to set */ - public void setAlkanility(double alkanility) { - this.alkanility = alkanility; + public void setAlkalinity(double alkalinity) { + this.alkalinity = alkalinity; } } diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/FluidSevereSlug.java b/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/FluidSevereSlug.java new file mode 100644 index 0000000000..ce60505901 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/FluidSevereSlug.java @@ -0,0 +1,138 @@ +package neqsim.processSimulation.measurementDevice.simpleFlowRegime; + +import neqsim.thermo.system.SystemInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + *

+ * FluidSevereSlug class. + *

+ * + * @author ASMF + * @version $Id: $Id + */ +public class FluidSevereSlug { + private double liqDensity = 1000.0; + private double liqVisc = 0.001; + private double molecularWeight = 0.029; + private double gasConstant = 8314 / molecularWeight * 1000; + + private double oilDensity = 0; + private double waterDensity = 0; + private double waterWtFraction = 0; + + private double oilViscosity = 0; + private double waterViscosity = 0; + private double oilWtFraction = 0; + + private int phaseNumber; + + FluidSevereSlug(SystemInterface fluid) { + ThermodynamicOperations ops = new ThermodynamicOperations(fluid); + ops.TPflash(); + fluid.initProperties(); + if ((fluid.getNumberOfPhases()) < 2) { + System.out.println("There is only one phase"); + } + if (fluid.hasPhaseType("oil")) { + phaseNumber = fluid.getPhaseNumberOfPhase("oil"); + oilDensity = fluid.getPhase("oil").getDensity("kg/m3"); + oilViscosity = fluid.getPhase("oil").getViscosity("kg/msec"); + oilWtFraction = fluid.getWtFraction(phaseNumber) * 100; + } + if (fluid.hasPhaseType("aqueous")) { + phaseNumber = fluid.getPhaseNumberOfPhase("aqueous"); + waterDensity = fluid.getPhase("aqueous").getDensity("kg/m3"); + waterViscosity = fluid.getPhase("aqueous").getViscosity("kg/msec"); + waterWtFraction = fluid.getWtFraction(phaseNumber) * 100; + } + + this.liqDensity = (waterWtFraction / 100) * waterDensity + (oilWtFraction / 100) * oilDensity; + this.liqVisc = (waterWtFraction / 100) * waterViscosity + (oilWtFraction / 100) * oilViscosity; + this.molecularWeight = fluid.getPhase("gas").getMolarMass(); + } + + FluidSevereSlug(double liqDensity, double liqVisc, double molecularWeight) { + this.setLiqDensity(liqDensity); + this.setLiqVisc(liqVisc); + this.setMolecularWeight(molecularWeight); + this.gasConstant = 8314 / (molecularWeight * 1000); + } + + /** + *

+ * Setter for the field liqDensity. + *

+ * + * @param liqDensity a double + */ + public void setLiqDensity(double liqDensity) { + this.liqDensity = liqDensity; + } + + /** + *

+ * Getter for the field liqDensity. + *

+ * + * @return a double + */ + public double getLiqDensity() { + return liqDensity; + } + + /** + *

+ * Setter for the field liqVisc. + *

+ * + * @param liqVisc a double + */ + public void setLiqVisc(double liqVisc) { + this.liqVisc = liqVisc; + } + + /** + *

+ * Getter for the field liqVisc. + *

+ * + * @return a double + */ + public double getliqVisc() { + return liqVisc; + } + + /** + *

+ * Setter for the field molecularWeight. + *

+ * + * @param molecularWeight a double + */ + public void setMolecularWeight(double molecularWeight) { + this.molecularWeight = molecularWeight; + } + + /** + *

+ * Getter for the field molecularWeight. + *

+ * + * @return a double + */ + public double getMolecularWeight() { + return molecularWeight; + } + + /** + *

+ * Getter for the field gasConstant. + *

+ * + * @return a double + */ + public double getGasConstant() { + return gasConstant; + } +} diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/Pipe.java b/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/Pipe.java new file mode 100644 index 0000000000..f6e2abdcd0 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/Pipe.java @@ -0,0 +1,178 @@ +// Create a Pipe Object +package neqsim.processSimulation.measurementDevice.simpleFlowRegime; + +/** + *

+ * Pipe class. + *

+ * + * @author ASMF + * @version $Id: $Id + */ +public class Pipe { + private String name = "Default severe slug pipe"; + private double internalDiameter = 0.05; + private double leftLength = 167.0; + private double rightLength = 7.7; + private double angle = 2.0; + final double pi = 3.1415926; + + // Default Constructor: + Pipe() { + this.setName(name); + this.setInternalDiameter(internalDiameter); + this.setLeftLength(leftLength); + this.setRightLength(rightLength); + this.setAngle(angle); + } + + // User Defined pipe parameters including pipe name (constructor): + Pipe(String name, double internalDiameter, double leftLength, double rightLength, double angle) { + this.setName(name); + this.setInternalDiameter(internalDiameter); + this.setLeftLength(leftLength); + this.setRightLength(rightLength); + this.setAngle(angle); + } + + // User Defined pipe parameters excluding pipe name (constructor): + Pipe(double internalDiameter, double leftLength, double rightLength, double angle) { + this.setInternalDiameter(internalDiameter); + this.setLeftLength(leftLength); + this.setRightLength(rightLength); + this.setAngle(angle); + } + + // Encapsulation: Get and Set Methods. This keyword referes to the current object + // 1. Pipe name encapsulation + /** + *

+ * Setter for the field name. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setName(String name) { + this.name = name; + } + + /** + *

+ * Getter for the field name. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getName() { + return name; + } + + // 2. Pipe Internal Diameter encapsulation + /** + *

+ * Setter for the field internalDiameter. + *

+ * + * @param internalDiameter a double + */ + public void setInternalDiameter(double internalDiameter) { + this.internalDiameter = internalDiameter; + } + + /** + *

+ * Getter for the field internalDiameter. + *

+ * + * @return a double + */ + public double getInternalDiameter() { + return internalDiameter; + } + + // 3. Pipe Internal Diameter encapsulation + /** + *

+ * Setter for the field leftLength. + *

+ * + * @param leftLength a double + */ + public void setLeftLength(double leftLength) { + this.leftLength = leftLength; + } + + /** + *

+ * Getter for the field leftLength. + *

+ * + * @return a double + */ + public double getLeftLength() { + return leftLength; + } + + // 4. Pipe Right Length encapsulation + /** + *

+ * Setter for the field rightLength. + *

+ * + * @param rightLength a double + */ + public void setRightLength(double rightLength) { + this.rightLength = rightLength; + } + + /** + *

+ * Getter for the field rightLength. + *

+ * + * @return a double + */ + public double getRightLength() { + return rightLength; + } + + // 4. Pipe Angle encapsulation + /** + *

+ * Setter for the field angle. + *

+ * + * @param angle a double + */ + public void setAngle(double angle) { + this.angle = angle; + } + + /** + *

+ * Getter for the field angle. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getAngle(String unit) { + if (unit.equals("Degree")) { + return this.angle; + } else if (unit.equals("Radian")) { + return this.angle * pi / 180; + } + return this.angle; + } + + /** + *

+ * getArea. + *

+ * + * @return a double + */ + public double getArea() { + return pi * Math.pow(this.internalDiameter, 2) / 4; + } +} diff --git a/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugAnalyser.java b/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugAnalyser.java new file mode 100644 index 0000000000..986f0e48e0 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugAnalyser.java @@ -0,0 +1,828 @@ +package neqsim.processSimulation.measurementDevice.simpleFlowRegime; + +import java.util.Arrays; +import java.util.Collections; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.processSimulation.measurementDevice.MeasurementDeviceBaseClass; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + *

+ * SevereSlugAnalyser class. + *

+ * + * @author ASMF + * @version $Id: $Id + */ +public class SevereSlugAnalyser extends MeasurementDeviceBaseClass { + private static final long serialVersionUID = 1L; + static Logger logger = LogManager.getLogger(SevereSlugAnalyser.class); + + FluidSevereSlug fluidSevereS; + Pipe pipe; + SevereSlugAnalyser severeSlug; + Stream streamS; + + final double gravAcc = neqsim.thermo.ThermodynamicConstantsInterface.gravity; + + // Severe slug problem + private double simulationTime = 200; + private double usl = 3.0; + private double usg = 0.5; + private double outletPressure = 100000.0; + private double temperature = 20.0; + private int numberOfTimeSteps = 20000; + private double internalDiameter = 0.0; + private double leftLength = 0.0; + private double rightLength = 0.0; + private double angle = 0.0; + + // These variables should not be changed by the user I guess. + // But this can be done if the user has advanced knowledge about the problem. + double alfaRiser = 0.0; // gas fraction in the riser + double z = 0.0001; // some initial value to start the calculation + double lambdaStagnant = 0.0; + double uLevel = 0.0; // some initial value to start the calculation + double valveConstant = 0.0; + double normalPressure = 100000.0; + final double pi = neqsim.thermo.ThermodynamicConstantsInterface.pi; + + double[] resPres; + double[] resTime; + double[] resLiqHoldUpRiser; + double[] resLiqHeight; + double[] resMixVelocity; + double[] usgMap; + double[] uslMap; + double slugValue; + + // Simulation variables (calculated variables) + double deltaT; + double driftVel; + double flowDistCoeff; + double mixDensity; + double pressure; + double slugLength; + double transVel; + double Um; + double UmOld; + double UsgL; + double UslL; + double UsgR; + double UslR; + double U; + double Re; + double lambda; + double friction; + double frictionStagnant; + double frictionValve; + double frictionTot; + double gravL; + double gravR; + double gravity; + double alfaRiserOld; + double zOld; + double Lg; + double pressureOld; + double alfaLeft; + double gasDensity; + double n; + double gamma1; + double gamma2; + double gamma; + double holdUp1; + double holdUp2; + double holdUp; + double function2; + double function1; + + double iter; + + String flowPattern; + + // This constructor is used for the "default" values + SevereSlugAnalyser() { + super("SevereSlugAnalyser", "m3/sec"); + } + + // This constructor is used for the user input of superficial liquid and gas velocities, + // and the rest will be the default values + SevereSlugAnalyser(double usl, double usg) { + this(); + this.setSuperficialLiquidVelocity(usl); + this.setSuperficialGasVelocity(usg); + } + + // This constructor is used for the user input of superficial liquid and gas velocities, + // outletPressure, + // temperature, simulationTime, numberOfTimeSteps + // and the rest will be the default values + SevereSlugAnalyser(double usl, double usg, double outletPressure, double temperature, + double simulationTime, int numberOfTimeSteps) { + this(); + this.setSuperficialLiquidVelocity(usl); + this.setSuperficialGasVelocity(usg); + this.setOutletPressure(outletPressure); + this.setTemperature(temperature); + this.setSimulationTime(simulationTime); + this.setNumberOfTimeSteps(numberOfTimeSteps); + } + + SevereSlugAnalyser(SystemInterface fluid, Pipe pipe, double outletPressure, double temperature, + double simulationTime, int numberOfTimeSteps) { + this(); + ThermodynamicOperations ops = new ThermodynamicOperations(fluid); + ops.TPflash(); + fluid.initProperties(); + + if (fluid.getNumberOfPhases() == 2) { + usl = fluid.getPhase(1).getFlowRate("m3/sec") / pipe.getArea(); + } else { + usl = fluid.getPhase(1).getFlowRate("m3/sec") / pipe.getArea() + + fluid.getPhase(2).getFlowRate("m3/sec") / pipe.getArea(); + } + usg = fluid.getPhase(0).getFlowRate("m3/sec") / pipe.getArea(); + this.setOutletPressure(outletPressure); + this.setTemperature(temperature); + this.setSimulationTime(simulationTime); + this.setNumberOfTimeSteps(numberOfTimeSteps); + } + + SevereSlugAnalyser(Stream stream, double internalDiameter, double leftLength, double rightLength, + double angle, double outletPressure, double temperature, double simulationTime, + int numberOfTimeSteps) { + this(); + pipe = new Pipe(internalDiameter, leftLength, rightLength, angle); + streamS = stream; + SystemInterface fluid = stream.getThermoSystem(); + ThermodynamicOperations ops = new ThermodynamicOperations(fluid); + ops.TPflash(); + fluid.initProperties(); + if (fluid.getNumberOfPhases() == 2) { + usl = fluid.getPhase(1).getFlowRate("m3/sec") / pipe.getArea(); + } else { + usl = fluid.getPhase(1).getFlowRate("m3/sec") / pipe.getArea() + + fluid.getPhase(2).getFlowRate("m3/sec") / pipe.getArea(); + } + fluidSevereS = new FluidSevereSlug(fluid); + usg = fluid.getPhase(0).getFlowRate("m3/sec") / pipe.getArea(); + + severeSlug = new SevereSlugAnalyser(usl, usg, outletPressure, temperature, simulationTime, + numberOfTimeSteps); + } + + SevereSlugAnalyser(Stream stream, double internalDiameter, double leftLength, double rightLength, + double angle, double simulationTime, int numberOfTimeSteps) { + this(stream, internalDiameter, leftLength, rightLength, angle, stream.getPressure("Pa"), + stream.getTemperature("C"), simulationTime, numberOfTimeSteps); + } + + SevereSlugAnalyser(Stream stream, double internalDiameter, double leftLength, double rightLength, + double angle) { + this(stream, internalDiameter, leftLength, rightLength, angle, stream.getPressure("Pa"), + stream.getTemperature("C"), 500.0, 50000); + } + + SevereSlugAnalyser(double outletPressure, double temperature, double simulationTime, + int numberOfTimeSteps) { + this(); + this.setOutletPressure(outletPressure); + this.setTemperature(temperature); + this.setSimulationTime(simulationTime); + this.setNumberOfTimeSteps(numberOfTimeSteps); + } + + // Encapsulation + // 1. Superficial Liquid Velocity Encapsulation + /** + *

+ * setSuperficialLiquidVelocity. + *

+ * + * @param usl a double + */ + public void setSuperficialLiquidVelocity(double usl) { + this.usl = usl; + } + + /** + *

+ * getSuperficialLiquidVelocity. + *

+ * + * @return a double + */ + public double getSuperficialLiquidVelocity() { + return usl; + } + + // 2. Superficial Gas Velocity Encapsulation + /** + *

+ * setSuperficialGasVelocity. + *

+ * + * @param usg a double + */ + public void setSuperficialGasVelocity(double usg) { + this.usg = usg; + } + + /** + *

+ * getSuperficialGasVelocity. + *

+ * + * @return a double + */ + public double getSuperficialGasVelocity() { + return usg; + } + + /** + *

+ * Getter for the field flowPattern. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getFlowPattern() { + return flowPattern; + } + + /** + *

+ * Getter for the field slugValue. + *

+ * + * @return a double + */ + public double getSlugValue() { + return slugValue; + } + + // 3. Pipe Outlet Pressure Encapsulation + /** + *

+ * Setter for the field outletPressure. + *

+ * + * @param outletPressure a double + */ + public void setOutletPressure(double outletPressure) { + this.outletPressure = outletPressure; + } + + /** + *

+ * Getter for the field outletPressure. + *

+ * + * @return a double + */ + public double getOutletPressure() { + return outletPressure; + } + + // 4. Temperature Encapsulation + /** + *

+ * Setter for the field temperature. + *

+ * + * @param temperature a double + */ + public void setTemperature(double temperature) { + this.temperature = temperature; + } + + /** + *

+ * Getter for the field temperature. + *

+ * + * @return a double + */ + public double getTemperature() { + return temperature; + } + + // 5. Number of Time Steps Encapsulation + /** + *

+ * Setter for the field numberOfTimeSteps. + *

+ * + * @param numberOfTimeSteps a int + */ + public void setNumberOfTimeSteps(int numberOfTimeSteps) { + this.numberOfTimeSteps = numberOfTimeSteps; + } + + /** + *

+ * Getter for the field numberOfTimeSteps. + *

+ * + * @return a int + */ + public int getNumberOfTimeSteps() { + return numberOfTimeSteps; + } + + // 6. Simulation Time Encapsulation + /** + *

+ * Setter for the field simulationTime. + *

+ * + * @param simulationTime a double + */ + public void setSimulationTime(double simulationTime) { + this.simulationTime = simulationTime; + } + + /** + *

+ * Getter for the field simulationTime. + *

+ * + * @return a double + */ + public double getSimulationTime() { + return simulationTime; + } + + // Method 1: Calculating the universal gas constant + /** + *

+ * gasConst. + *

+ * + * @param fluid a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.FluidSevereSlug} + * object + * @return a double + */ + public double gasConst(FluidSevereSlug fluid) { + return ThermodynamicConstantsInterface.R / fluid.getMolecularWeight() * (273.15 + temperature); + } + + // Declare the variables for resuts after creating an object Severe slug with required number of + // steps. + + /** + *

+ * slugHoldUp. + *

+ * + * @param pipe a {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.Pipe} object + * @param severeSlug a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.SevereSlugAnalyser} + * object + * @return a double + */ + public double slugHoldUp(Pipe pipe, SevereSlugAnalyser severeSlug) { + double Udrift; + double C0 = 1.2; + double Umix; + + Umix = severeSlug.getSuperficialGasVelocity() + severeSlug.getSuperficialLiquidVelocity(); + Udrift = Math.sqrt(gravAcc * pipe.getInternalDiameter()); + holdUp = 1 - severeSlug.getSuperficialGasVelocity() / (C0 * Umix + Udrift); + return holdUp; + } + + /** + *

+ * stratifiedHoldUp. + *

+ * + * @param fluid a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.FluidSevereSlug} + * object + * @param pipe a {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.Pipe} object + * @param severeSlug a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.SevereSlugAnalyser} + * object + * @return a double + */ + public double stratifiedHoldUp(FluidSevereSlug fluid, Pipe pipe, SevereSlugAnalyser severeSlug) { + Re = fluid.getLiqDensity() * severeSlug.getSuperficialLiquidVelocity() + * pipe.getInternalDiameter() / (fluid.getliqVisc()); + lambda = Math.max(0.34 * Math.pow(Re, -0.25), 64 / Re); + if (0.34 * Math.pow(Re, -0.25) > 64 / Re) { + n = 0.25; + } else { + n = 1; + } + friction = 0.5 * lambda * Math.pow(severeSlug.getSuperficialLiquidVelocity(), 2) + / (gravAcc * Math.sin(pipe.getAngle("Radian")) * pipe.getInternalDiameter()); + + gamma1 = 0.1; + gamma2 = 2.2; + iter = 0; + while (Math.abs(gamma2 - gamma1) > 1e-5 && iter < 200) { + holdUp2 = (gamma2 - 0.5 * Math.sin(2 * gamma2)) / (pi); + function2 = Math.pow(holdUp2, 3) * Math.pow((pi / gamma2), (n + 1)) - friction; + + holdUp1 = (gamma1 - 0.5 * Math.sin(2 * gamma1)) / (pi); + function1 = Math.pow(holdUp1, 3) * Math.pow((pi / gamma1), (n + 1)) - friction; + + gamma = gamma2 - function2 * (gamma2 - gamma1) / (function2 - function1); + if (gamma < 0) { + if (gamma2 != 0.1) { + gamma = 0.1; + } else { + gamma = 0.2; + } + } + if (gamma > 3.00) { + if (gamma2 != 2.99) { + gamma = 2.99; + } else { + gamma = 2.97; + } + } + + gamma1 = gamma2; + gamma2 = gamma; + iter = iter + 1; + } + + if (iter == 199) { + logger.debug("Could not find solution for stratified flow holdup"); + } else { + holdUp = (gamma - 0.5 * Math.sin(2 * gamma)) / (pi); + } + return holdUp; + } + + // Passing 3 objects as input parameters (fluid, pipe, severeSlug) + /** + *

+ * runSevereSlug. + *

+ * + * @param fluid a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.FluidSevereSlug} + * object + * @param pipe a {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.Pipe} object + * @param severeSlug a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.SevereSlugAnalyser} + * object + */ + public void runSevereSlug(FluidSevereSlug fluid, Pipe pipe, SevereSlugAnalyser severeSlug) { + resPres = new double[severeSlug.getNumberOfTimeSteps()]; + resTime = new double[severeSlug.getNumberOfTimeSteps()]; + resLiqHoldUpRiser = new double[severeSlug.getNumberOfTimeSteps()]; + resLiqHeight = new double[severeSlug.getNumberOfTimeSteps()]; + resMixVelocity = new double[severeSlug.getNumberOfTimeSteps()]; + + deltaT = 0.001; // severeSlug.getSimulationTime() / severeSlug.getNumberOfTimeSteps(); + mixDensity = fluid.getLiqDensity(); + // Initial condition + pressure = + severeSlug.getOutletPressure() + mixDensity * severeSlug.gravAcc * pipe.getRightLength(); + Um = severeSlug.getSuperficialGasVelocity(); + holdUp = severeSlug.stratifiedHoldUp(fluid, pipe, severeSlug); + // Drift velocity for the vertical flows + driftVel = 0.35 * Math.sqrt(gravAcc * pipe.getInternalDiameter()); + alfaLeft = 1 - holdUp; + + for (int i = 0; i < severeSlug.numberOfTimeSteps; i++) { + slugLength = -z + pipe.getRightLength() * (1 - alfaRiser); // Slug Length + // Reynolds number + Re = fluid.getLiqDensity() * Math.abs(Um) * pipe.getInternalDiameter() / fluid.getliqVisc(); + lambda = Math.max(0.34 * Math.pow(Re, -0.25), 64 / Re); // friction factor + friction = 0.5 * lambda * fluid.getLiqDensity() * Um * Math.abs(Um) * slugLength + / pipe.getInternalDiameter(); // frictional pressure loss + // Oscillation Friction + frictionStagnant = 0.5 * lambdaStagnant * fluid.getLiqDensity() * uLevel * Math.abs(uLevel) + * slugLength / pipe.getInternalDiameter(); + // Valve Friction + frictionValve = valveConstant * fluid.getLiqDensity() * Um * Math.abs(Um); + // Total Friction + friction = friction + frictionStagnant + frictionValve; + // Gravity + gravL = -fluid.getLiqDensity() * Math.abs(z) * gravAcc * Math.sin((pipe.getAngle("Radian"))); + gravR = mixDensity * gravAcc * pipe.getRightLength(); + gravity = gravL + gravR; + + // Momentum Balance + UmOld = Um; + Um = UmOld + deltaT * ((pressure - severeSlug.outletPressure) - friction - gravity) + / (-z * fluid.getLiqDensity() + pipe.getRightLength() * mixDensity); + + // Slip Relation: Calculate translational velocity + if (Re < 2300) { + flowDistCoeff = 2; + } else { + flowDistCoeff = 1.2; + } + + transVel = flowDistCoeff * Um + driftVel; + // State Equation + // All cases, Case 1: Open Bend; Case 2: Blocked Bend; Case 3: Backflow + UsgL = + (Um - severeSlug.getSuperficialLiquidVelocity()) * ((Um > 0) ? 1 : 0) * ((z > 0) ? 1 : 0); + + UslL = + (severeSlug.getSuperficialLiquidVelocity() * ((z > 0) ? 1 : 0) + Um * ((z < 0) ? 1 : 0)) + * ((Um > 0) ? 1 : 0) + Um * ((Um < 0) ? 1 : 0); + + UsgR = + (alfaRiser * transVel * ((z > 0) ? 1 : 0) + Um * ((z < 0) ? 1 : 0)) * ((Um > 0) ? 1 : 0) + + Um * ((Um < 0) ? 1 : 0); + UslR = (Um - alfaRiser * transVel) * ((Um > 0) ? 1 : 0) * ((z > 0) ? 1 : 0); + + U = UsgL - UsgR - UslL + UslR; + + // Riser vapour fraction + alfaRiserOld = alfaRiser; + alfaRiser = alfaRiserOld + 0.5 * deltaT * U / (pipe.getRightLength()); + alfaRiser = Math.max(0.0, alfaRiser); + alfaRiser = Math.min(1.0, alfaRiser); + + // Level + uLevel = (-severeSlug.getSuperficialLiquidVelocity() + Um); + zOld = z; + z = zOld + deltaT * uLevel; + z = ((z < 0) ? 1 : 0) * z + ((z > 0) ? 1 : 0) * 0.0001; + uLevel = uLevel * ((z < 0) ? 1 : 0); + + Lg = pipe.getLeftLength() + z; + pressureOld = pressure; + pressure = pressureOld + + deltaT * (severeSlug.getSuperficialGasVelocity() * normalPressure - UsgL * pressureOld) + / (Lg * alfaLeft) + - deltaT * (pressureOld * uLevel) / (Lg * alfaLeft); + + gasDensity = pressure / (fluid.getGasConstant() * (273.15 + severeSlug.getTemperature())); + mixDensity = alfaRiser * gasDensity + (1 - alfaRiser) * fluid.getLiqDensity(); + + resPres[i] = pressure / 100000; + resTime[i] = i * deltaT; + resLiqHoldUpRiser[i] = (1 - alfaRiser); + resLiqHeight[i] = z; + resMixVelocity[i] = Um; + } + } + + /** + *

+ * checkFlowRegime. + *

+ * + * @param fluid a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.FluidSevereSlug} + * object + * @param pipe a {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.Pipe} object + * @param severeSlug a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.SevereSlugAnalyser} + * object + * @return a {@link java.lang.String} object + */ + public String checkFlowRegime(FluidSevereSlug fluid, Pipe pipe, SevereSlugAnalyser severeSlug) { + Double[] halfRes = new Double[severeSlug.getNumberOfTimeSteps() / 2]; + severeSlug.runSevereSlug(fluid, pipe, severeSlug); + double sum = 0; + for (int i = severeSlug.numberOfTimeSteps / 2; i < severeSlug.numberOfTimeSteps; i++) { + sum = sum + severeSlug.resPres[i]; + halfRes[i - severeSlug.numberOfTimeSteps / 2] = severeSlug.resPres[i]; + } + double meanValue = sum / ((double) numberOfTimeSteps / 2); + double max = Collections.max(Arrays.asList(halfRes)); + slugValue = (max / meanValue) - 1; + double stratifiedHoldUp = stratifiedHoldUp(fluid, pipe, severeSlug); + logger.debug(stratifiedHoldUp); + + double slugHoldUp = slugHoldUp(pipe, severeSlug); + logger.debug(slugHoldUp); + logger.debug("The severe slug value is " + slugValue); + if (slugValue > 0.1 && slugHoldUp > stratifiedHoldUp) { + flowPattern = "Severe Slug"; + } else if (slugValue > 0.05 && slugHoldUp > stratifiedHoldUp) { + flowPattern = "Severe Slug 2. Small pressure variations"; + } else { + if (slugHoldUp < stratifiedHoldUp) { + flowPattern = "Slug Flow"; + } else { + if (stratifiedHoldUp < 0.1) { + flowPattern = "Liquid droplets flow"; + } + if (stratifiedHoldUp > 0.9) { + flowPattern = "Gas droplets flow"; + } + if (stratifiedHoldUp > 0.1 && stratifiedHoldUp < 0.9) { + flowPattern = "Stratified Flow"; + } + } + } + logger.debug("Simulated flow regime is then: " + flowPattern); + return flowPattern; + } + + /** {@inheritDoc} */ + @Override + public double getMeasuredValue(String unit) { + if (!unit.equalsIgnoreCase("m3/sec")) { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + "getMeasuredValue", "unit", "currently only supports \"m3/sec\"")); + } + + SystemInterface fluid = streamS.getThermoSystem(); + ThermodynamicOperations ops = new ThermodynamicOperations(fluid); + ops.TPflash(); + fluid.initProperties(); + if (fluid.getNumberOfPhases() == 2) { + usl = fluid.getPhase(1).getFlowRate("m3/sec") / pipe.getArea(); + } else { + usl = fluid.getPhase(1).getFlowRate("m3/sec") / pipe.getArea() + + fluid.getPhase(2).getFlowRate("m3/sec") / pipe.getArea(); + } + fluidSevereS = new FluidSevereSlug(fluid); + usg = fluid.getPhase(0).getFlowRate("m3/sec") / pipe.getArea(); + severeSlug = new SevereSlugAnalyser(usl, usg, outletPressure, temperature, simulationTime, + numberOfTimeSteps); + checkFlowRegime(fluidSevereS, pipe, severeSlug); + return slugValue; + } + + /** + *

+ * getMeasuredValue. + *

+ * + * @param fluid a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.FluidSevereSlug} + * object + * @param pipe a {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.Pipe} object + * @param severeSlug a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.SevereSlugAnalyser} + * object + * @return a double + */ + public double getMeasuredValue(FluidSevereSlug fluid, Pipe pipe, SevereSlugAnalyser severeSlug) { + checkFlowRegime(fluid, pipe, severeSlug); + return slugValue; + } + + /** + *

+ * getPredictedFlowRegime. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getPredictedFlowRegime() { + logger.debug(angle); + SystemInterface fluid = streamS.getThermoSystem(); + ThermodynamicOperations ops = new ThermodynamicOperations(fluid); + ops.TPflash(); + fluid.initProperties(); + if (fluid.getNumberOfPhases() == 1) { + flowPattern = "Single Phase"; + } else if (pipe.getAngle("Radian") <= 0.0) { + flowPattern = "Regime cannot be detected (angle < or = 0.0). Severe slug is not possible"; + } else { + if (fluid.getNumberOfPhases() == 2) { + usl = fluid.getPhase(1).getFlowRate("m3/sec") / pipe.getArea(); + } else { + usl = fluid.getPhase(1).getFlowRate("m3/sec") / pipe.getArea() + + fluid.getPhase(2).getFlowRate("m3/sec") / pipe.getArea(); + } + fluidSevereS = new FluidSevereSlug(fluid); + usg = fluid.getPhase(0).getFlowRate("m3/sec") / pipe.getArea(); + severeSlug = new SevereSlugAnalyser(usl, usg, outletPressure, temperature, simulationTime, + numberOfTimeSteps); + checkFlowRegime(fluidSevereS, pipe, severeSlug); + } + return flowPattern; + } + + /** + *

+ * getPredictedFlowRegime. + *

+ * + * @param fluid a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.FluidSevereSlug} + * object + * @param pipe a {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.Pipe} object + * @param severeSlug a + * {@link neqsim.processSimulation.measurementDevice.simpleFlowRegime.SevereSlugAnalyser} + * object + * @return a {@link java.lang.String} object + */ + public String getPredictedFlowRegime(FluidSevereSlug fluid, Pipe pipe, + SevereSlugAnalyser severeSlug) { + checkFlowRegime(fluid, pipe, severeSlug); + return flowPattern; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 15.0), 10); + testSystem.addComponent("methane", 0.015, "MSm^3/day"); + testSystem.addComponent("n-heptane", 0.0055, "MSm^3/day"); + testSystem.setMixingRule(2); + testSystem.init(0); + Stream inputStream = new Stream("inputStream", testSystem); + SevereSlugAnalyser mySevereSlug4 = + new SevereSlugAnalyser(inputStream, 0.05, 167, 7.7, 2, 100000.0, 20.0, 200.0, 20000); + logger.debug(inputStream.getFlowRate("kg/sec")); + mySevereSlug4.getPredictedFlowRegime(); + // inputStream.setFlowRate(0.00001, "MSm^3/day"); + // System.out.println(inputStream.getFlowRate("kg/sec")); + // mySevereSlug4.getPredictedFlowRegime(); + } + + // To be implemented + // public void buildFlowMap(double ugmax, double ulmax, int numberOfStepsMap, FluidSevereSlug + // fluid, Pipe pipe, SevereSlug severeSlug){ + // String stability1; + // String stability2; + // for (double usl = 0.01; usl < ulmax; usl = usl + ulmax/numberOfStepsMap) { + // severeSlug.setSuperficialLiquidVelocity(usl); + // double usg1 = 0.01; + // double usg2 = ugmax; + // double usg_sol; + // iter = 0; + + // while(Math.abs(usg1 - usg2) > 1e-5 && iter < 200){ + // severeSlug.setSuperficialGasVelocity(usg1); + // severeSlug.checkFlowRegime(fluid, pipe, severeSlug); + // function1 = severeSlug.slugValue - 0.05; + + // severeSlug.setSuperficialGasVelocity(usg2); + // checkFlowRegime(fluid, pipe, severeSlug); + // function2 = severeSlug.slugValue - 0.05; + + // usg_sol = usg2 - function2*(usg2 - usg1)/(function2 - function1); + + // if (usg_sol < 0){ + // if (usg2 != 0.01) + // { + // usg2 = 0.01; + // } + // else{ + // usg2 = ugmax/2; + // } + // } + // if (usg_sol > ugmax){ + // if (usg_sol != ugmax-0.01) + // { + // usg2 = ugmax-0.01; + // } + // else{ + // usg2 = 0.02; + // } + // } + + // usg1 = usg2; + // usg2 = usg; + // iter = iter + 1; + // } + + // if (iter == 199){ + // System.out.println("Could not find the border"); + // } + // else{ + // } + + // severeSlug.setSuperficialLiquidVelocity(usl); + // severeSlug.setSuperficialGasVelocity(0.01); + // String flowPattern1 = severeSlug.checkFlowRegime(fluid, pipe, severeSlug); + // severeSlug.setSuperficialGasVelocity(ugmax); + // String flowPattern2 = severeSlug.checkFlowRegime(fluid, pipe, severeSlug); + // if (flowPattern1 == "Severe Slug" || flowPattern1 == "Severe Slug 2. Small pressure + // variations"){ + // stability1 = "Not stable"; + // } + // else{ + // stability1 = "Stable"; + // } + // if (flowPattern2 == "Severe Slug" || flowPattern2 == "Severe Slug 2. Small pressure + // variations"){ + // stability2 = "Not stable"; + // } + // else{ + // stability2 = "Stable"; + // } + // if (flowPattern1 != flowPattern2){ + // } + // } + // } +} diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/MechanicalDesign.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/MechanicalDesign.java index 94450a4524..82e64570ae 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/MechanicalDesign.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/MechanicalDesign.java @@ -119,6 +119,8 @@ public void setMaterialDesignStandard(MaterialPlateDesignStandard materialDesign public double moduleLength = 0.0; public Hashtable designStandard = new Hashtable(); public UnitCostEstimateBaseClass costEstimate = null; + double defaultLiquidDensity = 1000.0; + double defaultLiquidViscosity = 0.001012; /** *

@@ -424,7 +426,7 @@ public void setPressureMarginFactor(double pressureMarginFactor) { * @return a double */ public double getOuterDiameter() { - return 1.0;// processEquipment.getInternalDiameter(); + return outerDiameter; } /** @@ -1023,11 +1025,11 @@ public void displayResults() { Container dialogContentPane = dialog.getContentPane(); dialogContentPane.setLayout(new BorderLayout()); - String[] names = {"", "Volume", "Weight"}; - String[][] table = new String[3][3];// createTable(getProcessEquipment().getName()); + String[][] table = new String[3][3]; // createTable(getProcessEquipment().getName()); table[1][0] = getProcessEquipment().getName(); table[1][1] = Double.toString(getWeightTotal()); table[1][2] = Double.toString(getVolumeTotal()); + String[] names = {"", "Volume", "Weight"}; JTable Jtab = new JTable(table, names); JScrollPane scrollpane = new JScrollPane(Jtab); dialogContentPane.add(scrollpane); @@ -1081,6 +1083,50 @@ public UnitCostEstimateBaseClass getCostEstimate() { return costEstimate; } + /** + *

+ * Setter for the field defaultLiquidDensity. + *

+ * + * @param defaultLiqDens a double + */ + public void setDefaultLiquidDensity(double defaultLiqDens) { + this.defaultLiquidDensity = defaultLiqDens; + } + + /** + *

+ * Getter for the field defaultLiquidDensity. + *

+ * + * @return a double + */ + public double getDefaultLiquidDensity() { + return defaultLiquidDensity; + } + + /** + *

+ * Setter for the field defaultLiquidViscosity. + *

+ * + * @param defaultLiqVisc a double + */ + public void setDefaultLiquidViscosity(double defaultLiqVisc) { + this.defaultLiquidViscosity = defaultLiqVisc; + } + + /** + *

+ * Getter for the field defaultLiquidViscosity. + *

+ * + * @return a double + */ + public double getDefaultLiquidViscosity() { + return defaultLiquidViscosity; + } + /** {@inheritDoc} */ @Override public int hashCode() { diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/SystemMechanicalDesign.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/SystemMechanicalDesign.java index 43ec44b6a5..04820c240a 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/SystemMechanicalDesign.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/SystemMechanicalDesign.java @@ -2,6 +2,8 @@ import java.util.ArrayList; import java.util.Objects; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processSystem.ProcessSystem; @@ -15,6 +17,7 @@ */ public class SystemMechanicalDesign implements java.io.Serializable { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SystemMechanicalDesign.class); ProcessSystem processSystem = null; double totalPlotSpace = 0.0; @@ -33,6 +36,17 @@ public SystemMechanicalDesign(ProcessSystem processSystem) { this.processSystem = processSystem; } + /** + *

+ * getProcess. + *

+ * + * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public ProcessSystem getProcess() { + return processSystem; + } + /** *

* setCompanySpecificDesignStandards. @@ -42,7 +56,7 @@ public SystemMechanicalDesign(ProcessSystem processSystem) { */ public void setCompanySpecificDesignStandards(String name) { for (int i = 0; i < this.processSystem.getUnitOperations().size(); i++) { - this.processSystem.getUnitOperations().get(i).getMechanicalDesign() + this.getProcess().getUnitOperations().get(i).getMechanicalDesign() .setCompanySpecificDesignStandards(name); } } @@ -57,6 +71,8 @@ public void runDesignCalculation() { for (int i = 0; i < names.size(); i++) { try { if (!((ProcessEquipmentInterface) this.processSystem.getUnit(names.get(i)) == null)) { + ((ProcessEquipmentInterface) this.processSystem.getUnit(names.get(i))) + .initMechanicalDesign(); ((ProcessEquipmentInterface) this.processSystem.getUnit(names.get(i))) .getMechanicalDesign().calcDesign(); totalPlotSpace += ((ProcessEquipmentInterface) this.processSystem.getUnit(names.get(i))) @@ -69,8 +85,8 @@ public void runDesignCalculation() { .getMechanicalDesign().getWeightTotal(); numberOfModules++; } - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } } @@ -130,6 +146,25 @@ public int getTotalNumberOfModules() { return numberOfModules; } + /** + *

+ * getMechanicalWeight. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getMechanicalWeight(String unit) { + double weight = 0.0; + for (int i = 0; i < processSystem.getUnitOperations().size(); i++) { + processSystem.getUnitOperations().get(i).getMechanicalDesign().calcDesign(); + System.out.println("Name " + processSystem.getUnitOperations().get(i).getName() + " weight " + + processSystem.getUnitOperations().get(i).getMechanicalDesign().getWeightTotal()); + weight += processSystem.getUnitOperations().get(i).getMechanicalDesign().getWeightTotal(); + } + return weight; + } + /** {@inheritDoc} */ @Override public int hashCode() { @@ -139,12 +174,15 @@ public int hashCode() { /** {@inheritDoc} */ @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } SystemMechanicalDesign other = (SystemMechanicalDesign) obj; return numberOfModules == other.numberOfModules && Objects.equals(processSystem, other.processSystem) diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/absorber/AbsorberMechanicalDesign.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/absorber/AbsorberMechanicalDesign.java index 045a494e14..4da088ef57 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/absorber/AbsorberMechanicalDesign.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/absorber/AbsorberMechanicalDesign.java @@ -1,8 +1,8 @@ package neqsim.processSimulation.mechanicalDesign.absorber; -import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; import neqsim.processSimulation.mechanicalDesign.designStandards.PressureVesselDesignStandard; import neqsim.processSimulation.mechanicalDesign.designStandards.SeparatorDesignStandard; +import neqsim.processSimulation.mechanicalDesign.separator.SeparatorMechanicalDesign; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.absorber.SimpleTEGAbsorber; import neqsim.processSimulation.processEquipment.separator.Separator; @@ -17,7 +17,7 @@ * @author esol * @version $Id: $Id */ -public class AbsorberMechanicalDesign extends MechanicalDesign { +public class AbsorberMechanicalDesign extends SeparatorMechanicalDesign { private static final long serialVersionUID = 1000; private double wallThickness = 0.02; @@ -100,7 +100,7 @@ public void calcDesign() { double gasDensity = ((Separator) getProcessEquipment()).getGasOutStream().getThermoSystem() .getPhase(0).getPhysicalProperties().getDensity(); - double liqDensity = 1000.0;// ((SimpleTEGAbsorber) + double liqDensity = 1000.0; // ((SimpleTEGAbsorber) // getProcessEquipment()).getLiquidOutStream().getThermoSystem().getPhase(1).getPhysicalProperties().getDensity(); // maxDesignVolumeFlow = volumeSafetyFactor * ((Separator) diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/adsorber/AdsorberMechanicalDesign.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/adsorber/AdsorberMechanicalDesign.java index 02f797c55d..23f4f8d6bb 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/adsorber/AdsorberMechanicalDesign.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/adsorber/AdsorberMechanicalDesign.java @@ -66,12 +66,17 @@ public void calcDesign() { SimpleAdsorber separator = (SimpleAdsorber) getProcessEquipment(); // double Fg = 1.0; - double emptyVesselWeight = 0.0, internalsWeight = 0.0, externalNozzelsWeight = 0.0; - double pipingWeight = 0.0, structualWeight = 0.0, electricalWeight = 0.0; + double emptyVesselWeight = 0.0; + double internalsWeight = 0.0; + double externalNozzelsWeight = 0.0; + double pipingWeight = 0.0; + double structualWeight = 0.0; + double electricalWeight = 0.0; double totalSkidWeight = 0.0; - double moduleWidth = 0.0, moduleHeight = 0.0, moduleLength = 0.0; - + double moduleWidth = 0.0; + double moduleHeight = 0.0; + double moduleLength = 0.0; double materialsCost = 0.0; // double sepLength = 0.0; diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/compressor/CompressorMechanicalDesign.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/compressor/CompressorMechanicalDesign.java index c7dfadfc9c..227b83b53d 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/compressor/CompressorMechanicalDesign.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/compressor/CompressorMechanicalDesign.java @@ -63,7 +63,7 @@ public void displayResults() { dialogContentPane.setLayout(new BorderLayout()); String[] names = {"Name", "Value", "Unit"}; - String[][] table = new String[16][3];// createTable(getProcessEquipment().getName()); + String[][] table = new String[16][3]; // createTable(getProcessEquipment().getName()); table[1][0] = "Separator Inner Diameter"; table[1][1] = Double.toString(getInnerDiameter()); @@ -119,8 +119,12 @@ public void calcDesign() { Compressor compressor = (Compressor) getProcessEquipment(); double Fg = 1.0; - double emptyVesselWeight = 0.0, internalsWeight = 0.0, externalNozzelsWeight = 0.0; - double pipingWeight = 0.0, structualWeight = 0.0, electricalWeight = 0.0; + double emptyVesselWeight = 0.0; + double internalsWeight = 0.0; + double externalNozzelsWeight = 0.0; + double pipingWeight = 0.0; + double structualWeight = 0.0; + double electricalWeight = 0.0; double totalSkidWeight = 0.0; // double moduleWidth = 0.0, moduleHeight = 0.0, moduleLength = 0.0; @@ -140,7 +144,7 @@ public void calcDesign() { // maxDesignVolumeFlow = ((Compressor) // getProcessEquipment()).getThermoSystem().getPhase(0).getVolume() / 1e5; - double maxGasVelocity = 1;// Math.sqrt((liqDensity - gasDensity) / gasDensity); + double maxGasVelocity = 1; // Math.sqrt((liqDensity - gasDensity) / gasDensity); innerDiameter = Math.sqrt(4.0 * getMaxDesignVolumeFlow() / (neqsim.thermo.ThermodynamicConstantsInterface.pi * maxGasVelocity * Fg)); tantanLength = innerDiameter * 5.0; @@ -148,9 +152,10 @@ public void calcDesign() { // alternative design // double bubbleDiameter = 250.0e-6; - // double bubVelocity = 1;// 9.82 * Math.pow(bubbleDiameter, 2.0) * (liqDensity - double Ar = 1.0;// ((Separator) getProcessEquipment()).getThermoSystem().getPhase(1).getVolume() - // / 1e5 / bubVelocity; + // double bubVelocity = 1; // 9.82 * Math.pow(bubbleDiameter, 2.0) * (liqDensity + double Ar = 1.0; // ((Separator) + // getProcessEquipment()).getThermoSystem().getPhase(1).getVolume() + // / 1e5 / bubVelocity; double Daim = Math.sqrt(Ar / 4.0); double Length2 = 4.0 * Daim; diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/AbsorptionColumnDesignStandard.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/AbsorptionColumnDesignStandard.java index 56d930f5c5..749290b329 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/AbsorptionColumnDesignStandard.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/AbsorptionColumnDesignStandard.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.mechanicalDesign.designStandards; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; /** @@ -12,6 +14,7 @@ */ public class AbsorptionColumnDesignStandard extends DesignStandard { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(AbsorptionColumnDesignStandard.class); private double molecularSieveWaterCapacity = 20; @@ -26,33 +29,19 @@ public class AbsorptionColumnDesignStandard extends DesignStandard { public AbsorptionColumnDesignStandard(String name, MechanicalDesign equipmentInn) { super(name, equipmentInn); - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); java.sql.ResultSet dataSet = null; - try { - try { - dataSet = database.getResultSet( - ("SELECT * FROM technicalrequirements WHERE EQUIPMENTTYPE='Absorber' AND Company='" - + standardName + "'")); - while (dataSet.next()) { - String specName = dataSet.getString("SPECIFICATION"); - if (specName.equals("MolecularSieve3AWaterCapacity")) { - molecularSieveWaterCapacity = Double.parseDouble(dataSet.getString("MAXVALUE")); - } + try (neqsim.util.database.NeqSimProcessDesignDataBase database = new neqsim.util.database.NeqSimProcessDesignDataBase()) { + dataSet = database.getResultSet( + ("SELECT * FROM technicalrequirements WHERE EQUIPMENTTYPE='Absorber' AND Company='" + + standardName + "'")); + while (dataSet.next()) { + String specName = dataSet.getString("SPECIFICATION"); + if (specName.equals("MolecularSieve3AWaterCapacity")) { + molecularSieveWaterCapacity = Double.parseDouble(dataSet.getString("MAXVALUE")); } - } catch (Exception e) { - e.printStackTrace(); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - System.out.println("error closing database.....GasScrubberDesignStandard"); - e.printStackTrace(); } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/AdsorptionDehydrationDesignStandard.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/AdsorptionDehydrationDesignStandard.java index f6c6f8f3b4..006048330b 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/AdsorptionDehydrationDesignStandard.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/AdsorptionDehydrationDesignStandard.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.mechanicalDesign.designStandards; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; /** @@ -12,6 +14,7 @@ */ public class AdsorptionDehydrationDesignStandard extends DesignStandard { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(AdsorptionDehydrationDesignStandard.class); private double molecularSieveWaterCapacity = 20; @@ -26,10 +29,9 @@ public class AdsorptionDehydrationDesignStandard extends DesignStandard { public AdsorptionDehydrationDesignStandard(String name, MechanicalDesign equipmentInn) { super(name, equipmentInn); - neqsim.util.database.NeqSimTechnicalDesignDatabase database = - new neqsim.util.database.NeqSimTechnicalDesignDatabase(); - java.sql.ResultSet dataSet = null; - try { + try (neqsim.util.database.NeqSimProcessDesignDataBase database = + new neqsim.util.database.NeqSimProcessDesignDataBase()) { + java.sql.ResultSet dataSet = null; try { dataSet = database.getResultSet( ("SELECT * FROM technicalrequirements_process WHERE EQUIPMENTTYPE='Adsorber Dehydration' AND Company='" @@ -40,20 +42,21 @@ public AdsorptionDehydrationDesignStandard(String name, MechanicalDesign equipme molecularSieveWaterCapacity = Double.parseDouble(dataSet.getString("MAXVALUE")); } } - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } finally { + try { + if (dataSet != null) { + dataSet.close(); + } + } catch (Exception ex) { + System.out.println("error closing database.....GasScrubberDesignStandard"); + logger.error(ex.getMessage(), ex); + } } } catch (Exception e) { + // TODO Auto-generated catch block e.printStackTrace(); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - System.out.println("error closing database.....GasScrubberDesignStandard"); - e.printStackTrace(); - } } } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/CompressorDesignStandard.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/CompressorDesignStandard.java index d55f2d43c3..29fde9c887 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/CompressorDesignStandard.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/CompressorDesignStandard.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.mechanicalDesign.designStandards; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; /** @@ -12,6 +14,7 @@ */ public class CompressorDesignStandard extends DesignStandard { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(CompressorDesignStandard.class); private double compressorFactor = 0.11; @@ -26,36 +29,24 @@ public class CompressorDesignStandard extends DesignStandard { public CompressorDesignStandard(String name, MechanicalDesign equipmentInn) { super(name, equipmentInn); - neqsim.util.database.NeqSimTechnicalDesignDatabase database = - new neqsim.util.database.NeqSimTechnicalDesignDatabase(); - java.sql.ResultSet dataSet = null; - try { - try { - dataSet = database.getResultSet( - ("SELECT * FROM technicalrequirements_process WHERE EQUIPMENTTYPE='Compressor' AND Company='" - + standardName + "'")); + try (neqsim.util.database.NeqSimProcessDesignDataBase database = + new neqsim.util.database.NeqSimProcessDesignDataBase()) { + try (java.sql.ResultSet dataSet = database.getResultSet( + ("SELECT * FROM technicalrequirements_process WHERE EQUIPMENTTYPE='Compressor' AND Company='" + + standardName + "'"))) { while (dataSet.next()) { String specName = dataSet.getString("SPECIFICATION"); if (specName.equals("compressorFactor")) { compressorFactor = Double.parseDouble(dataSet.getString("MAXVALUE")); } } - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - // gasLoadFactor = Double.parseDouble(dataSet.getString("gasloadfactor")); } catch (Exception e) { + // TODO Auto-generated catch block e.printStackTrace(); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - System.out.println("error closing database.....GasScrubberDesignStandard"); - e.printStackTrace(); - } } } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/GasScrubberDesignStandard.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/GasScrubberDesignStandard.java index 07adf44d97..5b2621ebc7 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/GasScrubberDesignStandard.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/GasScrubberDesignStandard.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.mechanicalDesign.designStandards; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; /** @@ -12,6 +14,7 @@ */ public class GasScrubberDesignStandard extends DesignStandard { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(GasScrubberDesignStandard.class); double gasLoadFactor = 0.11; double designFactorVolumeFlow = 1.1; @@ -30,10 +33,9 @@ public class GasScrubberDesignStandard extends DesignStandard { public GasScrubberDesignStandard(String name, MechanicalDesign equipmentInn) { super(name, equipmentInn); - neqsim.util.database.NeqSimTechnicalDesignDatabase database = - new neqsim.util.database.NeqSimTechnicalDesignDatabase(); - java.sql.ResultSet dataSet = null; - try { + try (neqsim.util.database.NeqSimProcessDesignDataBase database = + new neqsim.util.database.NeqSimProcessDesignDataBase()) { + java.sql.ResultSet dataSet = null; try { dataSet = database.getResultSet( ("SELECT * FROM technicalrequirements_process WHERE EQUIPMENTTYPE='Gas scrubber' AND Company='" @@ -42,33 +44,31 @@ public GasScrubberDesignStandard(String name, MechanicalDesign equipmentInn) { String specName = dataSet.getString("SPECIFICATION"); if (specName.equals("GasLoadFactor")) { gasLoadFactor = Double.parseDouble(dataSet.getString("MAXVALUE")); - } - if (specName.equals("FlowDesignFactor")) { + } else if (specName.equals("FlowDesignFactor")) { designFactorVolumeFlow = Double.parseDouble(dataSet.getString("MAXVALUE")); - } - if (specName.equals("LengthGasInetToHHLL")) { + } else if (specName.equals("LengthGasInetToHHLL")) { designFactorVolumeFlow = Double.parseDouble(dataSet.getString("MINVALUE")); - } - if (specName.equals("LengthMeshPadToDemistingCyclone")) { + } else if (specName.equals("LengthMeshPadToDemistingCyclone")) { designFactorVolumeFlow = Double.parseDouble(dataSet.getString("MINVALUE")); } } - } catch (Exception e) { - e.printStackTrace(); - } - // gasLoadFactor = Double.parseDouble(dataSet.getString("gasloadfactor")); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (dataSet != null) { - dataSet.close(); + // gasLoadFactor = Double.parseDouble(dataSet.getString("gasloadfactor")); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } finally { + try { + if (dataSet != null) { + dataSet.close(); + } + } catch (Exception ex) { + System.out.println("error closing database.....GasScrubberDesignStandard"); + logger.error(ex.getMessage(), ex); } - } catch (Exception e) { - System.out.println("error closing database.....GasScrubberDesignStandard"); - e.printStackTrace(); } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/MaterialPipeDesignStandard.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/MaterialPipeDesignStandard.java index 49ee14be7d..af26aad349 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/MaterialPipeDesignStandard.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/MaterialPipeDesignStandard.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.mechanicalDesign.designStandards; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; /** @@ -12,6 +14,7 @@ */ public class MaterialPipeDesignStandard extends DesignStandard { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(MaterialPipeDesignStandard.class); /** *

@@ -141,38 +144,25 @@ public void readMaterialDesignStandard(String specNo, String grade) { this.grade = grade; specificationNumber = specNo; - neqsim.util.database.NeqSimTechnicalDesignDatabase database = - new neqsim.util.database.NeqSimTechnicalDesignDatabase(); - java.sql.ResultSet dataSet = null; - try { - try { - dataSet = database - .getResultSet(("SELECT * FROM materialpipeproperties WHERE specificationNumber='" - + specificationNumber + "' AND grade='" + grade + "'")); + try (neqsim.util.database.NeqSimProcessDesignDataBase database = + new neqsim.util.database.NeqSimProcessDesignDataBase()) { + try (java.sql.ResultSet dataSet = + database.getResultSet(("SELECT * FROM materialpipeproperties WHERE specificationNumber='" + + specificationNumber + "' AND grade='" + grade + "'"))) { while (dataSet.next()) { minimumYeildStrength = (Double.parseDouble(dataSet.getString("minimumYeildStrength"))) * 0.00689475729; - // design factor table has to be developed // Efactor table has to be implemented // temperatureDeratingFactor has to be implemented } - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - // gasLoadFactor = Double.parseDouble(dataSet.getString("gasloadfactor")); } catch (Exception e) { + // TODO Auto-generated catch block e.printStackTrace(); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - System.out.println("error closing database.....GasScrubberDesignStandard"); - e.printStackTrace(); - } } } } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/MaterialPlateDesignStandard.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/MaterialPlateDesignStandard.java index 4b51a10cd2..aea9e26bb1 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/MaterialPlateDesignStandard.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/MaterialPlateDesignStandard.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.mechanicalDesign.designStandards; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; /** @@ -12,6 +14,7 @@ */ public class MaterialPlateDesignStandard extends DesignStandard { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(MaterialPlateDesignStandard.class); /** *

@@ -77,10 +80,9 @@ public void readMaterialDesignStandard(String name, String specNo, String grade, specificationNumber = specNo; divisionClassNumber = divClassNo; - neqsim.util.database.NeqSimTechnicalDesignDatabase database = - new neqsim.util.database.NeqSimTechnicalDesignDatabase(); - java.sql.ResultSet dataSet = null; - try { + try (neqsim.util.database.NeqSimProcessDesignDataBase database = + new neqsim.util.database.NeqSimProcessDesignDataBase()) { + java.sql.ResultSet dataSet = null; try { dataSet = database.getResultSet(("SELECT * FROM materialplateproperties WHERE materialName='" @@ -94,22 +96,23 @@ public void readMaterialDesignStandard(String name, String specNo, String grade, (Double.parseDouble(dataSet.getString("divisionClass2"))) * 0.00689475729; // MPa } } - } catch (Exception e) { - e.printStackTrace(); - } - // gasLoadFactor = Double.parseDouble(dataSet.getString("gasloadfactor")); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (dataSet != null) { - dataSet.close(); + // gasLoadFactor = Double.parseDouble(dataSet.getString("gasloadfactor")); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } finally { + try { + if (dataSet != null) { + dataSet.close(); + } + } catch (Exception ex) { + System.out.println("error closing database.....GasScrubberDesignStandard"); + logger.error(ex.getMessage(), ex); } - } catch (Exception e) { - System.out.println("error closing database.....GasScrubberDesignStandard"); - e.printStackTrace(); } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/PipelineDesignStandard.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/PipelineDesignStandard.java index 0dd6b74a6b..65110623e0 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/PipelineDesignStandard.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/PipelineDesignStandard.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.mechanicalDesign.designStandards; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; /** @@ -12,6 +14,7 @@ */ public class PipelineDesignStandard extends DesignStandard { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PipelineDesignStandard.class); double safetyFactor = 1.0; @@ -31,34 +34,23 @@ public PipelineDesignStandard(String name, MechanicalDesign equipmentInn) { // double jointEfficiency = // equipment.getJointEfficiencyStandard().getJEFactor(); - neqsim.util.database.NeqSimTechnicalDesignDatabase database = - new neqsim.util.database.NeqSimTechnicalDesignDatabase(); - java.sql.ResultSet dataSet = null; - try { - try { - dataSet = database.getResultSet( - ("SELECT * FROM technicalrequirements_process WHERE EQUIPMENTTYPE='Pipeline' AND Company='" - + standardName + "'")); + try (neqsim.util.database.NeqSimProcessDesignDataBase database = + new neqsim.util.database.NeqSimProcessDesignDataBase()) { + try (java.sql.ResultSet dataSet = database.getResultSet( + ("SELECT * FROM technicalrequirements_process WHERE EQUIPMENTTYPE='Pipeline' AND Company='" + + standardName + "'"))) { while (dataSet.next()) { String specName = dataSet.getString("SPECIFICATION"); if (specName.equals("safetyFactor")) { safetyFactor = Double.parseDouble(dataSet.getString("MAXVALUE")); } } - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } catch (Exception e) { + // TODO Auto-generated catch block e.printStackTrace(); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - System.out.println("error closing database.....GasScrubberDesignStandard"); - e.printStackTrace(); - } } } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/PressureVesselDesignStandard.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/PressureVesselDesignStandard.java index d20f9896d4..a55df29194 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/PressureVesselDesignStandard.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/PressureVesselDesignStandard.java @@ -64,7 +64,6 @@ public double calcWallThickness() { - 0.2 * equipment.getMaxOperationPressure() / 10.0) + equipment.getCorrosionAllowanse(); } - - return wallT / 1000.0; // return wall thcikness in meter + return wallT / 1000.0; // return wall thickness in meter } } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/SeparatorDesignStandard.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/SeparatorDesignStandard.java index cd8c5b46a6..1fac2ce3ba 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/SeparatorDesignStandard.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/designStandards/SeparatorDesignStandard.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.mechanicalDesign.designStandards; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; import neqsim.processSimulation.processEquipment.separator.SeparatorInterface; @@ -13,6 +15,7 @@ */ public class SeparatorDesignStandard extends DesignStandard { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SeparatorDesignStandard.class); /** *

@@ -50,10 +53,9 @@ public void setFg(double Fg) { */ public SeparatorDesignStandard(String name, MechanicalDesign equipmentInn) { super(name, equipmentInn); - neqsim.util.database.NeqSimTechnicalDesignDatabase database = - new neqsim.util.database.NeqSimTechnicalDesignDatabase(); - java.sql.ResultSet dataSet = null; - try { + try (neqsim.util.database.NeqSimProcessDesignDataBase database = + new neqsim.util.database.NeqSimProcessDesignDataBase()) { + java.sql.ResultSet dataSet = null; try { dataSet = database.getResultSet( ("SELECT * FROM technicalrequirements_process WHERE EQUIPMENTTYPE='Separator' AND Company='" @@ -73,22 +75,23 @@ public SeparatorDesignStandard(String name, MechanicalDesign equipmentInn) { + Double.parseDouble(dataSet.getString("MINVALUE"))) / 2.0; } } - } catch (Exception e) { - e.printStackTrace(); - } - // gasLoadFactor = Double.parseDouble(dataSet.getString("gasloadfactor")); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (dataSet != null) { - dataSet.close(); + // gasLoadFactor = Double.parseDouble(dataSet.getString("gasloadfactor")); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } finally { + try { + if (dataSet != null) { + dataSet.close(); + } + } catch (Exception ex) { + System.out.println("error closing database.....GasScrubberDesignStandard"); + logger.error(ex.getMessage(), ex); } - } catch (Exception e) { - System.out.println("error closing database.....GasScrubberDesignStandard"); - e.printStackTrace(); } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } @@ -150,10 +153,11 @@ public double getLiquidRetentionTime(String name, MechanicalDesign equipmentInn) // select correct residensetime from database // to be implmented if (name.equals("API12J")) { - if (dens < 0.85) + if (dens < 0.85) { retTime = 60.0; - else if (dens > 0.93) + } else if (dens > 0.93) { retTime = 180.0; + } } return retTime; } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/pipeline/PipelineMechanicalDesign.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/pipeline/PipelineMechanicalDesign.java index ee89557d74..2d0cb32b20 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/pipeline/PipelineMechanicalDesign.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/pipeline/PipelineMechanicalDesign.java @@ -59,24 +59,18 @@ public void calcDesign() { /* * Pipeline pipeline = (Pipeline) getProcessEquipment(); double flow = ((AdiabaticPipe) * getProcessEquipment()).getOutStream().getThermoSystem().getVolume() / 1e5; - * + * * double innerArea = Math.PI * innerDiameter * innerDiameter / 4.0; double gasVelocity = flow / * innerArea; double wallThickness = 0.0; */ // ASME/ANSI Code B31.8 if (designStandardCode.equals("ANSI/ASME Standard B31.8")) { - wallThickness = ((AdiabaticPipe) getProcessEquipment()).getMechanicalDesign() - .getMaxOperationPressure() * innerDiameter - / (2.0 - * ((AdiabaticPipe) getProcessEquipment()).getMechanicalDesign() - .getMaterialPipeDesignStandard().getDesignFactor() - * ((AdiabaticPipe) getProcessEquipment()).getMechanicalDesign() - .getMaterialPipeDesignStandard().getEfactor() - * ((AdiabaticPipe) getProcessEquipment()).getMechanicalDesign() - .getMaterialPipeDesignStandard().getTemperatureDeratingFactor() - * ((AdiabaticPipe) getProcessEquipment()).getMechanicalDesign() - .getMaterialPipeDesignStandard().getMinimumYeildStrength()); + wallThickness = getMaxOperationPressure() * innerDiameter + / (2.0 * getMaterialPipeDesignStandard().getDesignFactor() + * getMaterialPipeDesignStandard().getEfactor() + * getMaterialPipeDesignStandard().getTemperatureDeratingFactor() + * getMaterialPipeDesignStandard().getMinimumYeildStrength()); } else if (designStandardCode.equals("ANSI/ASME Standard B31.3")) { wallThickness = 0.0001; // to be implemented // ((AdiabaticPipe) @@ -128,10 +122,9 @@ public static void main(String args[]) { operations.add(stream_1); operations.add(pipe); - // operations.run(); - operations.getSystemMechanicalDesign().setCompanySpecificDesignStandards("Statoil"); - operations.getSystemMechanicalDesign().runDesignCalculation(); - operations.getSystemMechanicalDesign().setDesign(); + // operations.getSystemMechanicalDesign().setCompanySpecificDesignStandards("Statoil"); + // operations.getSystemMechanicalDesign().runDesignCalculation(); + // operations.getSystemMechanicalDesign().setDesign(); operations.run(); } } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/GasScrubberMechanicalDesign.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/GasScrubberMechanicalDesign.java index c4cc485081..cf65eb86b8 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/GasScrubberMechanicalDesign.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/GasScrubberMechanicalDesign.java @@ -1,6 +1,7 @@ package neqsim.processSimulation.mechanicalDesign.separator; import neqsim.processSimulation.mechanicalDesign.designStandards.GasScrubberDesignStandard; +import neqsim.processSimulation.mechanicalDesign.separator.sectionType.SepDesignSection; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.separator.Separator; import neqsim.processSimulation.processEquipment.separator.SeparatorInterface; @@ -72,7 +73,9 @@ public void calcDesign() { .getPhysicalProperties().getDensity(); double liqDensity = ((SeparatorInterface) getProcessEquipment()).getThermoSystem().getPhase(1) .getPhysicalProperties().getDensity(); - + if (((SeparatorInterface) getProcessEquipment()).getThermoSystem().getNumberOfPhases() == 1) { + liqDensity = getDefaultLiquidDensity(); + } maxDesignVolumeFlow = volumeSafetyFactor * ((SeparatorInterface) getProcessEquipment()).getThermoSystem().getPhase(0).getVolume() / 1e5; @@ -81,17 +84,21 @@ public void calcDesign() { innerDiameter = Math.sqrt(4.0 * getMaxDesignVolumeFlow() / (neqsim.thermo.ThermodynamicConstantsInterface.pi * maxGasVelocity * Fg)); tantanLength = innerDiameter * 5.0; - System.out.println("inner Diameter " + innerDiameter); + // System.out.println("inner Diameter " + innerDiameter); // calculating from standard codes // sepLength = innerDiameter * 2.0; emptyVesselWeight = 0.032 * getWallThickness() * 1e3 * innerDiameter * 1e3 * tantanLength; + + setOuterDiameter(innerDiameter + 2.0 * getWallThickness()); for (SeparatorSection sep : separator.getSeparatorSections()) { - sep.getMechanicalDesign().calcDesign(); - internalsWeight += sep.getMechanicalDesign().getTotalWeight(); + sep.setOuterDiameter(getOuterDiameter()); + SepDesignSection sect = sep.getMechanicalDesign(); + sect.calcDesign(); + internalsWeight += sect.getTotalWeight(); } - System.out.println("internal weight " + internalsWeight); + // System.out.println("internal weight " + internalsWeight); externalNozzelsWeight = 0.0; double Wv = emptyVesselWeight + internalsWeight + externalNozzelsWeight; @@ -104,17 +111,14 @@ public void calcDesign() { moduleLength = innerDiameter * 2.5; moduleLength = tantanLength * 1.5; moduleHeight = innerDiameter * 2; - // } - - setOuterDiameter(innerDiameter + 2.0 * getWallThickness()); - - System.out.println("wall thickness: " + separator.getName() + " " + getWallThickness() + " m"); - System.out.println("separator dry weigth: " + emptyVesselWeight + " kg"); - System.out.println("total skid weigth: " + totalSkidWeight + " kg"); - System.out.println("foot print: width:" + moduleWidth + " length " + moduleLength + " height " - + moduleHeight + " meter."); - System.out.println("mechanical price: " + materialsCost + " kNOK"); - + /* + * System.out.println("wall thickness: " + separator.getName() + " " + getWallThickness() + + * " m"); System.out.println("separator dry weigth: " + emptyVesselWeight + " kg"); + * System.out.println("total skid weigth: " + totalSkidWeight + " kg"); + * System.out.println("foot print: width:" + moduleWidth + " length " + moduleLength + + * " height " + moduleHeight + " meter."); System.out.println("mechanical price: " + + * materialsCost + " kNOK"); + */ setWeigthVesselShell(emptyVesselWeight); tantanLength = innerDiameter * 5; diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/SeparatorMechanicalDesign.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/SeparatorMechanicalDesign.java index 14f6f1fb3b..e718eca581 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/SeparatorMechanicalDesign.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/SeparatorMechanicalDesign.java @@ -25,9 +25,6 @@ */ public class SeparatorMechanicalDesign extends MechanicalDesign { private static final long serialVersionUID = 1000; - - double wallThickness = 0.0; - private double outerDiameter = 0.0; double gasLoadFactor = 1.0; double volumeSafetyFactor = 1.0; double Fg = 1.0; @@ -76,12 +73,11 @@ public void readDesignSpecifications() { volumeSafetyFactor = ((SeparatorDesignStandard) getDesignStandard().get("separator process design")) .getVolumetricDesignFactor(); - retentionTime = 120.0;// ((SeparatorDesignStandard) - // getDesignStandard().get("separator process - // design")).getLiquidRetentionTime("API12J", this); + retentionTime = 120.0; // ((SeparatorDesignStandard) + // getDesignStandard().get("separator process + // design")).getLiquidRetentionTime("API12J", this); } else { System.out.println("no separator process design specified......"); - return; } } @@ -93,7 +89,7 @@ public void displayResults() { dialogContentPane.setLayout(new BorderLayout()); String[] names = {"Name", "Value", "Unit"}; - String[][] table = new String[16][3];// createTable(getProcessEquipment().getName()); + String[][] table = new String[16][3]; // createTable(getProcessEquipment().getName()); table[1][0] = "Separator Inner Diameter"; table[1][1] = Double.toString(getInnerDiameter()); @@ -151,19 +147,27 @@ public void calcDesign() { separator.getThermoSystem().initPhysicalProperties(); separator.setDesignLiquidLevelFraction(Fg); - double emptyVesselWeight = 0.0, internalsWeight = 0.0, externalNozzelsWeight = 0.0; - double pipingWeight = 0.0, structualWeight = 0.0, electricalWeight = 0.0; + double emptyVesselWeight = 0.0; + double internalsWeight = 0.0; + double externalNozzelsWeight = 0.0; + double pipingWeight = 0.0; + double structualWeight = 0.0; + double electricalWeight = 0.0; double totalSkidWeight = 0.0; // double moduleWidth = 0.0, moduleHeight = 0.0, moduleLength = 0.0; double materialsCost = 0.0; double gasDensity = ((SeparatorInterface) getProcessEquipment()).getThermoSystem().getPhase(0) .getPhysicalProperties().getDensity(); + double liqDensity = ((SeparatorInterface) getProcessEquipment()).getThermoSystem().getPhase(1) .getPhysicalProperties().getDensity(); double liqViscosity = ((SeparatorInterface) getProcessEquipment()).getThermoSystem().getPhase(1) .getPhysicalProperties().getViscosity(); - + if (((SeparatorInterface) getProcessEquipment()).getThermoSystem().getNumberOfPhases() == 1) { + liqDensity = getDefaultLiquidDensity(); + liqViscosity = getDefaultLiquidViscosity(); + } maxDesignVolumeFlow = volumeSafetyFactor * ((SeparatorInterface) getProcessEquipment()).getThermoSystem().getPhase(0).getVolume() / 1e5; @@ -183,12 +187,12 @@ public void calcDesign() { double sepratorLength = tantanLength + innerDiameter; if (sepratorLength / innerDiameter > 6 || sepratorLength / innerDiameter < 3) { - System.out - .println("Fg need to be modified ... L/D separator= " + sepratorLength / innerDiameter); + // System.out + // .println("Fg need to be modified ... L/D separator= " + sepratorLength / innerDiameter); tantanLength = innerDiameter * 5.0; sepratorLength = tantanLength + innerDiameter; } - System.out.println("inner Diameter " + innerDiameter); + // System.out.println("inner Diameter " + innerDiameter); // alternative design double bubbleDiameter = 250.0e-6; @@ -207,12 +211,14 @@ public void calcDesign() { // sepLength = innerDiameter * 2.0; emptyVesselWeight = 0.032 * getWallThickness() * 1e3 * innerDiameter * 1e3 * tantanLength; + setOuterDiameter(innerDiameter + 2.0 * getWallThickness()); for (SeparatorSection sep : separator.getSeparatorSections()) { + sep.setOuterDiameter(getOuterDiameter()); sep.getMechanicalDesign().calcDesign(); internalsWeight += sep.getMechanicalDesign().getTotalWeight(); } - System.out.println("internal weight " + internalsWeight); + // System.out.println("internal weight " + internalsWeight); externalNozzelsWeight = 0.0; // need to be implemented double Wv = emptyVesselWeight + internalsWeight + externalNozzelsWeight; @@ -226,15 +232,14 @@ public void calcDesign() { moduleHeight = innerDiameter * 2 + 1.0; // } - setOuterDiameter(innerDiameter + 2.0 * getWallThickness()); - - System.out.println("wall thickness: " + separator.getName() + " " + getWallThickness() + " m"); - System.out.println("separator dry weigth: " + emptyVesselWeight + " kg"); - System.out.println("total skid weigth: " + totalSkidWeight + " kg"); - System.out.println("foot print: width:" + moduleWidth + " length " + moduleLength + " height " - + moduleHeight + " meter."); - System.out.println("mechanical price: " + materialsCost + " kNOK"); - + /* + * System.out.println("wall thickness: " + separator.getName() + " " + getWallThickness() + + * " m"); System.out.println("separator dry weigth: " + emptyVesselWeight + " kg"); + * System.out.println("total skid weigth: " + totalSkidWeight + " kg"); + * System.out.println("foot print: width:" + moduleWidth + " length " + moduleLength + + * " height " + moduleHeight + " meter."); System.out.println("mechanical price: " + + * materialsCost + " kNOK"); + */ setWeigthVesselShell(emptyVesselWeight); // tantanLength = innerDiameter * 5; @@ -270,28 +275,4 @@ public void setDesign() { ((Separator) getProcessEquipment()).setSeparatorLength(tantanLength); // this method will be implemented to set calculated design... } - - /** {@inheritDoc} */ - @Override - public double getOuterDiameter() { - return outerDiameter; - } - - /** {@inheritDoc} */ - @Override - public double getWallThickness() { - return wallThickness; - } - - /** {@inheritDoc} */ - @Override - public void setWallThickness(double wallThickness) { - this.wallThickness = wallThickness; - } - - /** {@inheritDoc} */ - @Override - public void setOuterDiameter(double outerDiameter) { - this.outerDiameter = outerDiameter; - } } diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/DistillationTraySection.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/DistillationTraySection.java index dc9041c183..4cbedcc789 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/DistillationTraySection.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/DistillationTraySection.java @@ -27,8 +27,7 @@ public DistillationTraySection(SeparatorSection separatorSection) { /** {@inheritDoc} */ @Override public void calcDesign() { - double vesselDiameter = - separatorSection.getSeparator().getMechanicalDesign().getOuterDiameter() * 1e3; + double vesselDiameter = separatorSection.getOuterDiameter() * 1e3; if (vesselDiameter <= 616) { totalWeight = 32.0; } else if (vesselDiameter <= 770) { diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/MecMeshSection.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/MecMeshSection.java index e17b364348..8ea032ef9e 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/MecMeshSection.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/MecMeshSection.java @@ -27,8 +27,7 @@ public MecMeshSection(SeparatorSection separatorSection) { /** {@inheritDoc} */ @Override public void calcDesign() { - double vesselDiameter = - separatorSection.getSeparator().getMechanicalDesign().getOuterDiameter() * 1e3; + double vesselDiameter = separatorSection.getOuterDiameter() * 1e3; if (vesselDiameter <= 616) { totalWeight = 5.0; } else if (vesselDiameter <= 770) { diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/MechVaneSection.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/MechVaneSection.java index bced222fb6..f4620ee716 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/MechVaneSection.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/separator/sectionType/MechVaneSection.java @@ -28,7 +28,7 @@ public MechVaneSection(SeparatorSection separatorSection) { @Override public void calcDesign() { double vesselDiameter = - separatorSection.getSeparator().getMechanicalDesign().getOuterDiameter() * 1e3; + separatorSection.getOuterDiameter() * 1e3; if (vesselDiameter <= 616) { totalWeight = 6.0; } else if (vesselDiameter <= 770) { diff --git a/src/main/java/neqsim/processSimulation/mechanicalDesign/valve/ValveMechanicalDesign.java b/src/main/java/neqsim/processSimulation/mechanicalDesign/valve/ValveMechanicalDesign.java index d7919dd15c..4a53efcec1 100644 --- a/src/main/java/neqsim/processSimulation/mechanicalDesign/valve/ValveMechanicalDesign.java +++ b/src/main/java/neqsim/processSimulation/mechanicalDesign/valve/ValveMechanicalDesign.java @@ -9,7 +9,7 @@ import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; import neqsim.processSimulation.mechanicalDesign.designStandards.ValveDesignStandard; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; -import neqsim.processSimulation.processEquipment.valve.ThrottlingValve;; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; /** *

@@ -33,8 +33,9 @@ public class ValveMechanicalDesign extends MechanicalDesign { * Constructor for ValveMechanicalDesign. *

* - * @param equipment a {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} - * object + * @param equipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} + * object */ public ValveMechanicalDesign(ProcessEquipmentInterface equipment) { super(equipment); @@ -49,8 +50,7 @@ public void readDesignSpecifications() { if (getDesignStandard().containsKey("valve design codes")) { System.out.println("valve code standard: " + getDesignStandard().get("valve design codes").getStandardName()); - valveCvMax = - ((ValveDesignStandard) getDesignStandard().get("valve design codes")).getValveCvMax(); + valveCvMax = ((ValveDesignStandard) getDesignStandard().get("valve design codes")).getValveCvMax(); } else { System.out.println("no valve code standard specified......using default"); } @@ -65,9 +65,10 @@ public void calcDesign() { outletPressure = valve1.getOutletPressure(); dP = inletPressure - outletPressure; - valveCvMax = valve1.getThermoSystem().getVolume("m3/hr") + valveCvMax = valve1.getThermoSystem().getFlowRate("m3/hr") * Math.sqrt(valve1.getThermoSystem().getDensity("kg/m3") / 1000.0 / dP); valveWeight = valveCvMax * 100.0; + setWeightTotal(valveWeight); } /** {@inheritDoc} */ @@ -77,9 +78,9 @@ public void displayResults() { Container dialogContentPane = dialog.getContentPane(); dialogContentPane.setLayout(new BorderLayout()); - String[] names = {"Name", "Value", "Unit"}; + String[] names = { "Name", "Value", "Unit" }; - String[][] table = new String[16][3];// createTable(getProcessEquipment().getName()); + String[][] table = new String[16][3]; // createTable(getProcessEquipment().getName()); table[1][0] = "Valve weight [kg]"; table[1][1] = Double.toString(valveWeight); diff --git a/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentBaseClass.java b/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentBaseClass.java index 025ec98e16..2799a1a065 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentBaseClass.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentBaseClass.java @@ -3,16 +3,19 @@ * * Created on 6. juni 2006, 15:12 */ + package neqsim.processSimulation.processEquipment; import java.util.Arrays; import java.util.HashMap; import java.util.Objects; +import java.util.UUID; import org.apache.commons.lang.SerializationUtils; import neqsim.processSimulation.SimulationBaseClass; import neqsim.processSimulation.controllerDevice.ControllerDeviceInterface; import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; import neqsim.processSimulation.processEquipment.stream.EnergyStream; +import neqsim.processSimulation.util.report.Report; import neqsim.thermo.system.SystemInterface; /** @@ -35,6 +38,7 @@ public abstract class ProcessEquipmentBaseClass extends SimulationBaseClass public HashMap properties = new HashMap(); public EnergyStream energyStream = new EnergyStream(); private boolean isSetEnergyStream = false; + protected boolean isSolved = false; /** *

@@ -59,7 +63,7 @@ public void displayResult() {} /** * Create deep copy. - * + * * @return a deep copy of the unit operation/process equipment */ public ProcessEquipmentInterface copy() { @@ -117,6 +121,10 @@ public MechanicalDesign getMechanicalDesign() { return new MechanicalDesign(this); } + /** {@inheritDoc} */ + @Override + public void initMechanicalDesign() {} + /** {@inheritDoc} */ @Override public String getSpecification() { @@ -138,7 +146,7 @@ public String[][] reportResults() { /** {@inheritDoc} */ @Override public boolean solved() { - return true; + return isSolved; } /** @@ -167,35 +175,43 @@ public void setEnergyStream(EnergyStream energyStream) { /** *

- * isSetEnergyStream. + * Setter for the field energyStream. *

* - * @return a boolean + * @param isSetEnergyStream a boolean */ - public boolean isSetEnergyStream() { - return isSetEnergyStream; + public void setEnergyStream(boolean isSetEnergyStream) { + this.isSetEnergyStream = isSetEnergyStream; } /** *

- * Setter for the field energyStream. + * isSetEnergyStream. *

* - * @param isSetEnergyStream a boolean + * @return a boolean */ - public void setEnergyStream(boolean isSetEnergyStream) { - this.isSetEnergyStream = isSetEnergyStream; + public boolean isSetEnergyStream() { + return isSetEnergyStream; } /** {@inheritDoc} */ @Override public double getPressure() { - return 1.0; + return getFluid().getPressure(); + } + + /** {@inheritDoc} */ + @Override + public double getPressure(String unit) { + return getFluid().getPressure(unit); } /** {@inheritDoc} */ @Override - public void setPressure(double pressure) {} + public void setPressure(double pressure) { + getFluid().setPressure(pressure); + } /** {@inheritDoc} */ @Override @@ -227,13 +243,8 @@ public String getConditionAnalysisMessage() { return conditionAnalysisMessage; } - /** - *

- * getResultTable. - *

- * - * @return an array of {@link java.lang.String} objects - */ + /** {@inheritDoc} */ + @Override public String[][] getResultTable() { return null; } @@ -252,12 +263,15 @@ public int hashCode() { /** {@inheritDoc} */ @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } ProcessEquipmentBaseClass other = (ProcessEquipmentBaseClass) obj; return Objects.equals(conditionAnalysisMessage, other.conditionAnalysisMessage) && Objects.equals(controller, other.controller) @@ -268,4 +282,23 @@ public boolean equals(Object obj) { && Arrays.deepEquals(report, other.report) && Objects.equals(specification, other.specification); } + + /** {@inheritDoc} */ + @Override + public String toJson() { + return null; + } + + /** + * {@inheritDoc} + * + * @return a String + */ + public String getReport_json() { + return new Report(this).generateJsonReport(); + } + + /** {@inheritDoc} */ + @Override + public void run_step(UUID id) {} } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentInterface.java index 1aab7b31eb..4fea2f15a6 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/ProcessEquipmentInterface.java @@ -13,8 +13,7 @@ * @author Even Solbraa * @version $Id: $Id */ -public interface ProcessEquipmentInterface extends SimulationInterface, java.io.Serializable { - +public interface ProcessEquipmentInterface extends SimulationInterface { /** *

* reportResults. @@ -26,13 +25,31 @@ public interface ProcessEquipmentInterface extends SimulationInterface, java.io. /** *

- * getMechanicalDesign. + * Initialize a initMechanicalDesign for the equipment. + *

+ */ + default void initMechanicalDesign() {} + + /** + *

+ * Get a mechanicalDesign for the equipment. *

* * @return a {@link neqsim.processSimulation.mechanicalDesign.MechanicalDesign} object */ public MechanicalDesign getMechanicalDesign(); + /** + *

+ * Check if process module needs recalculating. + *

+ * + * @return true or false + */ + public default boolean needRecalculation() { + return true; + } + /** *

* getSpecification. @@ -93,7 +110,7 @@ public interface ProcessEquipmentInterface extends SimulationInterface, java.io. * * @return a {@link neqsim.thermo.system.SystemInterface} object */ - default public SystemInterface getFluid() { + public default SystemInterface getFluid() { return getThermoSystem(); } @@ -118,7 +135,7 @@ default public SystemInterface getFluid() { /** *

- * getPressure. + * Getter for the field pressure. *

* * @return a double @@ -127,7 +144,17 @@ default public SystemInterface getFluid() { /** *

- * setPressure. + * Getter for the field pressure converted to specified unit. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getPressure(String unit); + + /** + *

+ * Setter for the field pressure. *

* * @param pressure a double @@ -154,7 +181,7 @@ default public SystemInterface getFluid() { public String getConditionAnalysisMessage(); /** - * method to return entropy production of the unit operation + * method to return entropy production of the unit operation. * * @param unit Supported units are J/K and kJ/K * @return entropy in specified unit @@ -162,7 +189,7 @@ default public SystemInterface getFluid() { public double getEntropyProduction(String unit); /** - * Get exergy change production of the unit operation + * Get exergy change production of the unit operation. * * @param unit Supported units are J and kJ * @param surroundingTemperature The surrounding temperature in Kelvin @@ -186,4 +213,23 @@ default public SystemInterface getFluid() { /** {@inheritDoc} */ @Override public int hashCode(); + + /** + *

+ * toJson. + *

+ * + * @return a String + */ + public String toJson(); + + /** + *

+ * getReport_json + *

+ * Return results of simulation in json format + * + * @return a String + */ + public String getReport_json(); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/TwoPortEquipment.java b/src/main/java/neqsim/processSimulation/processEquipment/TwoPortEquipment.java index 9ac2378712..286de84623 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/TwoPortEquipment.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/TwoPortEquipment.java @@ -2,101 +2,114 @@ import neqsim.processSimulation.processEquipment.stream.StreamInterface; -public abstract class TwoPortEquipment extends ProcessEquipmentBaseClass implements TwoPortInterface { - protected StreamInterface inStream; - protected StreamInterface outStream; - - /** - * Constructor for TwoPortEquipment - * - * @param name Name of TwoPortEquipment - */ - public TwoPortEquipment(String name) { - super(name); - } - - /** - * Constructor for TwoPortEquipment - * - * @param name Name of TwoPortEquipment - * @param stream Stream to set as inlet Stream. A clone of stream is set as - * outlet stream. - */ - public TwoPortEquipment(String name, StreamInterface stream) { - this(name); - this.inStream = stream; - this.outStream = stream.clone(); - } - - /** {@inheritDoc} */ - @Override - public double getInletPressure() { - return getInletStream().getPressure(); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getInletStream() { - return inStream; - } - - /** {@inheritDoc} */ - @Override - public double getInletTemperature() { - return getInletStream().getTemperature(); - } - - /** {@inheritDoc} */ - @Override - public double getOutletPressure() { - return getOutletStream().getPressure(); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutletStream() { - return outStream; - } - - /** {@inheritDoc} */ - @Override - public double getOutletTemperature() { - return getOutletStream().getTemperature(); - } - - /** {@inheritDoc} */ - @Override - public void setInletPressure(double pressure) { - this.inStream.setPressure(pressure); - } - - /** {@inheritDoc} */ - @Override - public void setInletStream(StreamInterface stream) { - this.inStream = stream; - } - - /** {@inheritDoc} */ - @Override - public void setInletTemperature(double temperature) { - this.inStream.setTemperature(temperature, "unit"); - } - - /** {@inheritDoc} */ - @Override - public void setOutletPressure(double pressure) { - this.outStream.setPressure(pressure); - } - - /** {@inheritDoc} */ - @Override - public void setOutletStream(StreamInterface stream) { - this.outStream = stream; - } - - /** {@inheritDoc} */ - @Override - public void setOutletTemperature(double temperature) { - this.outStream.setTemperature(temperature, "unit"); - } -} \ No newline at end of file +/** + * Abstract class defining ProcessEquipment with one inlet and one outlet. + * + * @author ASMF + * @version $Id: $Id + */ +public abstract class TwoPortEquipment extends ProcessEquipmentBaseClass + implements TwoPortInterface { + private static final long serialVersionUID = 1L; + protected StreamInterface inStream; + protected StreamInterface outStream; + + /** + * Constructor for TwoPortEquipment. + * + * @param name Name of TwoPortEquipment + */ + public TwoPortEquipment(String name) { + super(name); + } + + /** + * Constructor for TwoPortEquipment. + * + * @param name Name of TwoPortEquipment + * @param stream Stream to set as inlet Stream. A clone of stream is set as outlet stream. + */ + public TwoPortEquipment(String name, StreamInterface stream) { + this(name); + this.inStream = stream; + this.outStream = stream.clone(); + } + + /** {@inheritDoc} */ + @Override + public double getInletPressure() { + return getInletStream().getPressure(); + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getInletStream() { + return inStream; + } + + /** {@inheritDoc} */ + @Override + public double getInletTemperature() { + return getInletStream().getTemperature(); + } + + /** {@inheritDoc} */ + @Override + public double getOutletPressure() { + return getOutletStream().getPressure(); + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getOutletStream() { + return outStream; + } + + /** {@inheritDoc} */ + @Override + public double getOutletTemperature() { + return getOutletStream().getTemperature(); + } + + /** {@inheritDoc} */ + @Override + public void setInletPressure(double pressure) { + this.inStream.setPressure(pressure); + } + + /** {@inheritDoc} */ + @Override + public void setInletStream(StreamInterface stream) { + this.inStream = stream; + } + + /** {@inheritDoc} */ + @Override + public void setInletTemperature(double temperature) { + this.inStream.setTemperature(temperature, "unit"); + } + + /** {@inheritDoc} */ + @Override + public void setOutletPressure(double pressure) { + this.outStream.setPressure(pressure); + } + + /** {@inheritDoc} */ + @Override + public void setOutletStream(StreamInterface stream) { + this.outStream = stream; + } + + /** {@inheritDoc} */ + @Override + public void setOutletTemperature(double temperature) { + this.outStream.setTemperature(temperature, "unit"); + } + + /** {@inheritDoc} */ + @Override + public String toJson() { + return null; + } +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/TwoPortInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/TwoPortInterface.java index 32e356d5c7..ef665d6702 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/TwoPortInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/TwoPortInterface.java @@ -2,109 +2,115 @@ import neqsim.processSimulation.processEquipment.stream.StreamInterface; +/** + * Interface for processEquipment with a single inlet stream and a single outlet stream. + * + * @author ASMF + * @version $Id: $Id + */ public interface TwoPortInterface { - /** - * Get inlet pressure of twoport. - * - * @return inlet pressure of TwoPortEquipment in unit bara - */ - public double getInletPressure(); + /** + * Get inlet pressure of twoport. + * + * @return inlet pressure of TwoPortEquipment in unit bara + */ + public double getInletPressure(); - /** - * Get inlet Stream of twoport. - * - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - @Deprecated - default public StreamInterface getInStream() { - return getInletStream(); - } + /** + * Get inlet Stream of twoport. + * + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + @Deprecated + public default StreamInterface getInStream() { + return getInletStream(); + } - /** - * Get inlet Stream of twoport. - * - * @return inlet Stream of TwoPortEquipment - */ - public StreamInterface getInletStream(); + /** + * Get inlet Stream of twoport. + * + * @return inlet Stream of TwoPortEquipment + */ + public StreamInterface getInletStream(); - /** - * Get inlet temperature of twoport. - * - * @return inlet temperature of TwoPortEquipment in unit kelvin - */ - public double getInletTemperature(); + /** + * Get inlet temperature of twoport. + * + * @return inlet temperature of TwoPortEquipment in unit kelvin + */ + public double getInletTemperature(); - /** - * Get outlet pressure of twoport. - * - * @return outlet pressure of TwoPortEquipment in unit bara - */ - public double getOutletPressure(); + /** + * Get outlet pressure of twoport. + * + * @return outlet pressure of TwoPortEquipment in unit bara + */ + public double getOutletPressure(); - /** - * Get outlet Stream of twoport. - * - * @deprecated use {@link #getOutletStream()} instead - * @return outlet Stream of TwoPortEquipment - */ - @Deprecated - default public StreamInterface getOutStream() { - return getOutletStream(); - } + /** + * Get outlet Stream of twoport. + * + * @return outlet Stream of TwoPortEquipment + * @deprecated use {@link #getOutletStream()} instead + */ + @Deprecated + public default StreamInterface getOutStream() { + return getOutletStream(); + } - /** - * Get outlet Stream of twoport. - * - * @return outlet Stream of TwoPortEquipment - */ - public StreamInterface getOutletStream(); + /** + * Get outlet Stream of twoport. + * + * @return outlet Stream of TwoPortEquipment + */ + public StreamInterface getOutletStream(); - /** - * Get outlet temperature of twoport. - * - * @return outlet temperature of TwoPortEquipment in unit kelvin - */ - public double getOutletTemperature(); + /** + * Get outlet temperature of twoport. + * + * @return outlet temperature of TwoPortEquipment in unit kelvin + */ + public double getOutletTemperature(); - /** - * Set inlet pressure of twoport. - * - * @param pressure value to set in unit bara - */ - public void setInletPressure(double pressure); + /** + * Set inlet pressure of twoport. + * + * @param pressure value to set in unit bara + */ + public void setInletPressure(double pressure); - /** - * Set inlet Stream of twoport. - * - * @param inletStream value to set - */ - public void setInletStream(StreamInterface inletStream); + /** + * Set inlet Stream of twoport. + * + * @param inletStream value to set + */ + public void setInletStream(StreamInterface inletStream); - /** - * Set inlet temperature of twoport. - * - * @param temperature value to set in unit kelvin - */ - public void setInletTemperature(double temperature); + /** + * Set inlet temperature of twoport. + * + * @param temperature value to set in unit kelvin + */ + public void setInletTemperature(double temperature); - /** - * Set outlet pressure of twoport. - * - * @param pressure value to set in unit bara - */ - public void setOutletPressure(double pressure); + /** + * Set outlet pressure of twoport. + * + * @param pressure value to set in unit bara + */ + public void setOutletPressure(double pressure); - /** - * Set outlet Stream of twoport. - * - * @param stream value to set - */ - public void setOutletStream(StreamInterface stream); + /** + * Set outlet Stream of twoport. + * + * @param stream value to set + */ + public void setOutletStream(StreamInterface stream); - /** - * Set outlet temperature of twoport. - * - * @param temperature value to set in kelvin - */ - public void setOutletTemperature(double temperature); + /** + * Set outlet temperature of twoport. + * + * @param temperature value to set in kelvin + */ + public void setOutletTemperature(double temperature); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/absorber/AbsorberInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/absorber/AbsorberInterface.java index ebfc230903..9546e4212e 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/absorber/AbsorberInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/absorber/AbsorberInterface.java @@ -11,12 +11,12 @@ * @version $Id: $Id */ public interface AbsorberInterface extends ProcessEquipmentInterface { - /** - *

- * setAproachToEquilibrium. - *

- * - * @param eff a double - */ - public void setAproachToEquilibrium(double eff); + /** + *

+ * setAproachToEquilibrium. + *

+ * + * @param eff a double + */ + public void setAproachToEquilibrium(double eff); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleAbsorber.java b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleAbsorber.java index e92ecd91ff..0d6018663d 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleAbsorber.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleAbsorber.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.processEquipment.absorber; +import java.util.UUID; + import neqsim.processSimulation.mechanicalDesign.absorber.AbsorberMechanicalDesign; import neqsim.processSimulation.processEquipment.separator.Separator; import neqsim.processSimulation.processEquipment.stream.Stream; @@ -15,377 +17,381 @@ * @version $Id: $Id */ public class SimpleAbsorber extends Separator implements AbsorberInterface { - private static final long serialVersionUID = 1000; - - boolean setTemperature = false; - StreamInterface[] outStream = new Stream[2]; - StreamInterface[] inStream = new Stream[2]; - SystemInterface system; - protected double temperatureOut = 0, dT = 0.0; - private int numberOfStages = 5; - private double numberOfTheoreticalStages = 3.0; - double absorptionEfficiency = 0.5; - private double HTU = 0.85; - private double NTU = 2.0; - private double stageEfficiency = 0.25; - private double fsFactor = 0.0; - - /** - *

- * Constructor for SimpleAbsorber. - *

- */ - @Deprecated - public SimpleAbsorber() { - this("SimpleAbsorber"); - } - - /** - *

- * Constructor for SimpleAbsorber. - *

- * - * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - @Deprecated - public SimpleAbsorber(StreamInterface inStream1) { - this("SimpleAbsorber", inStream1); - } - - /** - * - * @param name name of absorber - */ - public SimpleAbsorber(String name) { - super(name); - } - - /** - *

- * Constructor for SimpleAbsorber. - *

- * - * @param name name of absorber - * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public SimpleAbsorber(String name, StreamInterface inStream1) { - super(name); - this.inStream[0] = inStream1; - this.inStream[1] = inStream1; - outStream[0] = inStream1.clone(); - outStream[1] = inStream1.clone(); - setName(name); - - SystemInterface systemOut1 = inStream1.getThermoSystem().clone(); - outStream[0].setThermoSystem(systemOut1); - - double molCO2 = - inStream1.getThermoSystem().getPhase(0).getComponent("CO2").getNumberOfmoles(); - System.out.println("mol CO2 " + molCO2); - SystemInterface systemOut0 = inStream1.getThermoSystem().clone(); - systemOut0.init(0); - systemOut0.addComponent("MDEA", molCO2 * absorptionEfficiency); - systemOut0.addComponent("water", molCO2 * absorptionEfficiency * 10.0); - systemOut0.chemicalReactionInit(); - systemOut0.createDatabase(true); - systemOut0.setMixingRule(4); - outStream[1].setThermoSystem(systemOut0); - outStream[1].run(); - } - - /** {@inheritDoc} */ - public AbsorberMechanicalDesign getMechanicalDesign() { - return new AbsorberMechanicalDesign(this); - } - - /** {@inheritDoc} */ - @Override - public void setName(String name) { - super.setName(name); - // outStream[0].setName(name + "_Sout1"); - // outStream[1].setName(name + "_Sout2"); - } - - /** - *

- * Setter for the field dT. - *

- * - * @param dT a double - */ - public void setdT(double dT) { - this.dT = dT; - } - - /** - *

- * Getter for the field outStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getOutStream() { - return outStream[0]; - } - - /** - *

- * Getter for the field outStream. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getOutStream(int i) { - return outStream[i]; - } - - /** - *

- * getSolventInStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getSolventInStream() { - return inStream[0]; - } - - /** - *

- * Getter for the field inStream. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getInStream(int i) { - return inStream[i]; - } - - /** - *

- * setOutTemperature. - *

- * - * @param temperature a double - */ - public void setOutTemperature(double temperature) { - this.temperatureOut = temperature; - } - - /** - *

- * getOutTemperature. - *

- * - * @param i a int - */ - public void getOutTemperature(int i) { - outStream[i].getThermoSystem().getTemperature(); - } - - /** - *

- * getInTemperature. - *

- * - * @param i a int - */ - public void getInTemperature(int i) { - inStream[i].getThermoSystem().getTemperature(); - } - - /** {@inheritDoc} */ - @Override - public void run() { - SystemInterface systemOut1 = inStream[1].getThermoSystem().clone(); - outStream[0].setThermoSystem(systemOut1); - outStream[0].run(); - - outStream[1].run(); - - double error = 1e5; - error = absorptionEfficiency - (outStream[1].getThermoSystem().getPhase(1) - .getComponent("CO2").getNumberOfMolesInPhase() - + outStream[1].getThermoSystem().getPhase(1).getComponent("HCO3-") - .getNumberOfMolesInPhase()) - / (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA") - .getNumberOfMolesInPhase() - + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") - .getNumberOfMolesInPhase()); - int iter = 0; - do { - iter++; - double factor = (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA") - .getNumberOfMolesInPhase() - + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") - .getNumberOfMolesInPhase()); - // outStream[1].getThermoSystem().addComponent("CO2",(20.0-outStream[1].getThermoSystem().getPhase(0).getComponent("CO2").getNumberOfMolesInPhase()),0); - outStream[1].getThermoSystem().addComponent("MDEA", -error * factor); - outStream[1].getThermoSystem().addComponent("water", -error * 10.0 * factor); - outStream[1].run(); - error = absorptionEfficiency - ((outStream[1].getThermoSystem().getPhase(1) - .getComponent("CO2").getNumberOfMolesInPhase() - + outStream[1].getThermoSystem().getPhase(1).getComponent("HCO3-") - .getNumberOfMolesInPhase()) - / (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA") - .getNumberOfMolesInPhase() - + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") - .getNumberOfMolesInPhase())); - - System.out.println("error " + error); - } while (Math.abs(error) > 1e-4 && iter < 30 - && outStream[1].getThermoSystem().getPhase(1).getBeta() > 0 - && outStream[0].getThermoSystem().getPhase(1).getBeta() > 0); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - outStream[0].displayResult(); - outStream[1].displayResult(); - } - - /** {@inheritDoc} */ - @Override - public void setAproachToEquilibrium(double eff) { - this.absorptionEfficiency = eff; - } - - /** - *

- * Getter for the field numberOfTheoreticalStages. - *

- * - * @return a double - */ - public double getNumberOfTheoreticalStages() { - return numberOfTheoreticalStages; - } - - /** - *

- * Setter for the field numberOfTheoreticalStages. - *

- * - * @param numberOfTheoreticalStages a double - */ - public void setNumberOfTheoreticalStages(double numberOfTheoreticalStages) { - this.numberOfTheoreticalStages = numberOfTheoreticalStages; - } - - /** - *

- * Getter for the field numberOfStages. - *

- * - * @return a int - */ - public int getNumberOfStages() { - return numberOfStages; - } - - /** - *

- * Setter for the field numberOfStages. - *

- * - * @param numberOfStages a int - */ - public void setNumberOfStages(int numberOfStages) { - this.numberOfStages = numberOfStages; - } - - /** - *

- * Getter for the field stageEfficiency. - *

- * - * @return a double - */ - public double getStageEfficiency() { - return stageEfficiency; - } - - /** - *

- * Setter for the field stageEfficiency. - *

- * - * @param stageEfficiency a double - */ - public void setStageEfficiency(double stageEfficiency) { - this.stageEfficiency = stageEfficiency; - } - - /** - *

- * getHTU. - *

- * - * @return a double - */ - public double getHTU() { - return HTU; - } - - /** - *

- * setHTU. - *

- * - * @param HTU a double - */ - public void setHTU(double HTU) { - this.HTU = HTU; - } - - /** - *

- * getNTU. - *

- * - * @return a double - */ - public double getNTU() { - return NTU; - } - - /** - *

- * setNTU. - *

- * - * @param NTU a double - */ - public void setNTU(double NTU) { - this.NTU = NTU; - } - - /** - *

- * Getter for the field fsFactor. - *

- * - * @return a double - */ - public double getFsFactor() { - double intArea = 3.14 * getInternalDiameter() * getInternalDiameter() / 4.0; - return getGasOutStream().getThermoSystem().getFlowRate("m3/sec") / intArea - * Math.sqrt(getGasOutStream().getThermoSystem().getDensity("kg/m3")); - } - - /** - *

- * getWettingRate. - *

- * - * @return a double - */ - public double getWettingRate() { - double intArea = 3.14 * getInternalDiameter() * getInternalDiameter() / 4.0; - return getLiquidOutStream().getThermoSystem().getFlowRate("m3/hr") / intArea; - } + private static final long serialVersionUID = 1000; + + boolean setTemperature = false; + StreamInterface[] outStream = new Stream[2]; + StreamInterface[] inStream = new Stream[2]; + SystemInterface system; + protected double temperatureOut = 0; + protected double dT = 0.0; + private int numberOfStages = 5; + private double numberOfTheoreticalStages = 3.0; + double absorptionEfficiency = 0.5; + private double HTU = 0.85; + private double NTU = 2.0; + private double stageEfficiency = 0.25; + private double fsFactor = 0.0; + + /** + *

+ * Constructor for SimpleAbsorber. + *

+ */ + @Deprecated + public SimpleAbsorber() { + this("SimpleAbsorber"); + } + + /** + *

+ * Constructor for SimpleAbsorber. + *

+ * + * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + @Deprecated + public SimpleAbsorber(StreamInterface inStream1) { + this("SimpleAbsorber", inStream1); + } + + /** + *

+ * Constructor for SimpleAbsorber. + *

+ * + * @param name name of absorber + */ + public SimpleAbsorber(String name) { + super(name); + } + + /** + *

+ * Constructor for SimpleAbsorber. + *

+ * + * @param name name of absorber + * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public SimpleAbsorber(String name, StreamInterface inStream1) { + super(name); + this.inStream[0] = inStream1; + this.inStream[1] = inStream1; + outStream[0] = inStream1.clone(); + outStream[1] = inStream1.clone(); + setName(name); + + SystemInterface systemOut1 = inStream1.getThermoSystem().clone(); + outStream[0].setThermoSystem(systemOut1); + + double molCO2 = inStream1.getThermoSystem().getPhase(0).getComponent("CO2").getNumberOfmoles(); + System.out.println("mol CO2 " + molCO2); + SystemInterface systemOut0 = inStream1.getThermoSystem().clone(); + systemOut0.init(0); + systemOut0.addComponent("MDEA", molCO2 * absorptionEfficiency); + systemOut0.addComponent("water", molCO2 * absorptionEfficiency * 10.0); + systemOut0.chemicalReactionInit(); + systemOut0.createDatabase(true); + systemOut0.setMixingRule(4); + outStream[1].setThermoSystem(systemOut0); + outStream[1].run(); + } + + /** {@inheritDoc} */ + @Override + public AbsorberMechanicalDesign getMechanicalDesign() { + return new AbsorberMechanicalDesign(this); + } + + /** {@inheritDoc} */ + @Override + public void setName(String name) { + super.setName(name); + // outStream[0].setName(name + "_Sout1"); + // outStream[1].setName(name + "_Sout2"); + } + + /** + *

+ * Setter for the field dT. + *

+ * + * @param dT a double + */ + public void setdT(double dT) { + this.dT = dT; + } + + /** + *

+ * Getter for the field outStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getOutStream() { + return outStream[0]; + } + + /** + *

+ * Getter for the field outStream. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getOutStream(int i) { + return outStream[i]; + } + + /** + *

+ * getSolventInStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getSolventInStream() { + return inStream[0]; + } + + /** + *

+ * Getter for the field inStream. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getInStream(int i) { + return inStream[i]; + } + + /** + *

+ * setOutTemperature. + *

+ * + * @param temperature a double + */ + public void setOutTemperature(double temperature) { + this.temperatureOut = temperature; + } + + /** + *

+ * getOutTemperature. + *

+ * + * @param i a int + */ + public void getOutTemperature(int i) { + outStream[i].getThermoSystem().getTemperature(); + } + + /** + *

+ * getInTemperature. + *

+ * + * @param i a int + */ + public void getInTemperature(int i) { + inStream[i].getThermoSystem().getTemperature(); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + SystemInterface systemOut1 = inStream[1].getThermoSystem().clone(); + outStream[0].setThermoSystem(systemOut1); + outStream[0].run(id); + outStream[1].run(id); + + double error = 1e5; + error = absorptionEfficiency - (outStream[1].getThermoSystem().getPhase(1).getComponent("CO2") + .getNumberOfMolesInPhase() + + outStream[1].getThermoSystem().getPhase(1).getComponent("HCO3-") + .getNumberOfMolesInPhase()) + / (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA").getNumberOfMolesInPhase() + + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") + .getNumberOfMolesInPhase()); + int iter = 0; + do { + iter++; + double factor = + (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA").getNumberOfMolesInPhase() + + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") + .getNumberOfMolesInPhase()); + // outStream[1].getThermoSystem().addComponent("CO2",(20.0-outStream[1].getThermoSystem().getPhase(0).getComponent("CO2").getNumberOfMolesInPhase()),0); + outStream[1].getThermoSystem().addComponent("MDEA", -error * factor); + outStream[1].getThermoSystem().addComponent("water", -error * 10.0 * factor); + outStream[1].run(); + error = absorptionEfficiency - ((outStream[1].getThermoSystem().getPhase(1) + .getComponent("CO2").getNumberOfMolesInPhase() + + outStream[1].getThermoSystem().getPhase(1).getComponent("HCO3-") + .getNumberOfMolesInPhase()) + / (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA") + .getNumberOfMolesInPhase() + + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") + .getNumberOfMolesInPhase())); + + System.out.println("error " + error); + } while (Math.abs(error) > 1e-4 && iter < 30 + && outStream[1].getThermoSystem().getPhase(1).getBeta() > 0 + && outStream[0].getThermoSystem().getPhase(1).getBeta() > 0); + outStream[1].setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + outStream[0].displayResult(); + outStream[1].displayResult(); + } + + /** {@inheritDoc} */ + @Override + public void setAproachToEquilibrium(double eff) { + this.absorptionEfficiency = eff; + } + + /** + *

+ * Getter for the field numberOfTheoreticalStages. + *

+ * + * @return a double + */ + public double getNumberOfTheoreticalStages() { + return numberOfTheoreticalStages; + } + + /** + *

+ * Setter for the field numberOfTheoreticalStages. + *

+ * + * @param numberOfTheoreticalStages a double + */ + public void setNumberOfTheoreticalStages(double numberOfTheoreticalStages) { + this.numberOfTheoreticalStages = numberOfTheoreticalStages; + } + + /** + *

+ * Getter for the field numberOfStages. + *

+ * + * @return a int + */ + public int getNumberOfStages() { + return numberOfStages; + } + + /** + *

+ * Setter for the field numberOfStages. + *

+ * + * @param numberOfStages a int + */ + public void setNumberOfStages(int numberOfStages) { + this.numberOfStages = numberOfStages; + } + + /** + *

+ * Getter for the field stageEfficiency. + *

+ * + * @return a double + */ + public double getStageEfficiency() { + return stageEfficiency; + } + + /** + *

+ * Setter for the field stageEfficiency. + *

+ * + * @param stageEfficiency a double + */ + public void setStageEfficiency(double stageEfficiency) { + this.stageEfficiency = stageEfficiency; + } + + /** + *

+ * getHTU. + *

+ * + * @return a double + */ + public double getHTU() { + return HTU; + } + + /** + *

+ * setHTU. + *

+ * + * @param HTU a double + */ + public void setHTU(double HTU) { + this.HTU = HTU; + } + + /** + *

+ * getNTU. + *

+ * + * @return a double + */ + public double getNTU() { + return NTU; + } + + /** + *

+ * setNTU. + *

+ * + * @param NTU a double + */ + public void setNTU(double NTU) { + this.NTU = NTU; + } + + /** + *

+ * Getter for the field fsFactor. + *

+ * + * @return a double + */ + public double getFsFactor() { + double intArea = 3.14 * getInternalDiameter() * getInternalDiameter() / 4.0; + return getGasOutStream().getThermoSystem().getFlowRate("m3/sec") / intArea + * Math.sqrt(getGasOutStream().getThermoSystem().getDensity("kg/m3")); + } + + /** + *

+ * getWettingRate. + *

+ * + * @return a double + */ + public double getWettingRate() { + double intArea = 3.14 * getInternalDiameter() * getInternalDiameter() / 4.0; + return getLiquidOutStream().getThermoSystem().getFlowRate("m3/hr") / intArea; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java index 71fd3be756..3058f4007b 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/absorber/SimpleTEGAbsorber.java @@ -5,12 +5,14 @@ import java.text.DecimalFormat; import java.text.FieldPosition; import java.util.ArrayList; +import java.util.UUID; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; -import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -24,582 +26,580 @@ * @version $Id: $Id */ public class SimpleTEGAbsorber extends SimpleAbsorber { - private static final long serialVersionUID = 1000; - - protected ArrayList streams = new ArrayList(0); - protected double pressure = 0; - protected int numberOfInputStreams = 0; - protected StreamInterface mixedStream; - protected StreamInterface gasInStream; - protected StreamInterface solventInStream; - private StreamInterface gasOutStream; - private StreamInterface solventOutStream; - protected StreamInterface outStream; - private double kwater = 1e-4; - int solventStreamNumber = 0; - private boolean isSetWaterInDryGas = false; - private double waterInDryGas = 30e-6; - - - /** - *

- * Constructor for SimpleTEGAbsorber. - *

- */ - @Deprecated - public SimpleTEGAbsorber() { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SimpleTEGAbsorber.class); + + protected ArrayList streams = new ArrayList(0); + protected double pressure = 0; + protected int numberOfInputStreams = 0; + protected StreamInterface mixedStream; + protected StreamInterface gasInStream; + protected StreamInterface solventInStream; + private StreamInterface gasOutStream; + private StreamInterface solventOutStream; + protected StreamInterface outStream; + private double kwater = 1e-4; + int solventStreamNumber = 0; + private boolean isSetWaterInDryGas = false; + private double waterInDryGas = 30e-6; + + /** + *

+ * Constructor for SimpleTEGAbsorber. + *

+ */ + @Deprecated + public SimpleTEGAbsorber() {} + + /** + *

+ * Constructor for SimpleTEGAbsorber. + *

+ * + * @param name a {@link java.lang.String} object + */ + public SimpleTEGAbsorber(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void addStream(StreamInterface newStream) { + streams.add(newStream); + if (numberOfInputStreams == 0) { + mixedStream = streams.get(0).clone(); + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().init(0); + mixedStream.getThermoSystem().init(3); } - /** - *

- * Constructor for SimpleTEGAbsorber. - *

- * - * @param name a {@link java.lang.String} object - */ - public SimpleTEGAbsorber(String name) { - super(name); - } - - /** {@inheritDoc} */ - @Override - public void addStream(StreamInterface newStream) { - streams.add(newStream); - if (numberOfInputStreams == 0) { - mixedStream = (Stream) streams.get(0).clone(); - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixedStream.getThermoSystem().init(0); - mixedStream.getThermoSystem().init(3); + numberOfInputStreams++; + } + + /** + *

+ * addGasInStream. + *

+ * + * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void addGasInStream(StreamInterface newStream) { + // TODO: fail if gasInStream is not null? + gasInStream = newStream; + gasOutStream = newStream.clone(); + addStream(newStream); + } + + /** + *

+ * addSolventInStream. + *

+ * + * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void addSolventInStream(StreamInterface newStream) { + // TODO: fail if solventInStream is not null? + solventInStream = newStream; + solventOutStream = newStream.clone(); + addStream(newStream); + solventStreamNumber = streams.size() - 1; + } + + /** + *

+ * replaceSolventInStream. + *

+ * + * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void replaceSolventInStream(StreamInterface newStream) { + // TODO: fails if solventStreamNumber is 0, i.e. no solventinstream set? + solventInStream = newStream; + streams.set(solventStreamNumber, solventInStream); + } + + /** {@inheritDoc} */ + @Override + public void setPressure(double pressure) { + this.pressure = pressure; + } + + /** + *

+ * mixStream. + *

+ */ + public void mixStream() { + String compName = new String(); + + for (int k = 1; k < streams.size(); k++) { + for (int i = 0; i < streams.get(k).getThermoSystem().getPhases()[0] + .getNumberOfComponents(); i++) { + boolean gotComponent = false; + String componentName = + streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i].getName(); + // System.out.println("adding: " + componentName); + + double moles = + streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i].getNumberOfmoles(); + // System.out.println("moles: " + moles + " " + + // mixedStream.getThermoSystem().getPhases()[0].getNumberOfComponents()); + for (int p = 0; p < mixedStream.getThermoSystem().getPhases()[0] + .getNumberOfComponents(); p++) { + if (mixedStream.getThermoSystem().getPhases()[0].getComponents()[p].getName() + .equals(componentName)) { + gotComponent = true; + compName = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] + .getComponentName(); + } } - numberOfInputStreams++; - } - - /** - *

- * addGasInStream. - *

- * - * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void addGasInStream(StreamInterface newStream) { - gasInStream = (Stream) newStream; - gasOutStream = (Stream) newStream.clone(); - addStream(newStream); - } - - /** - *

- * addSolventInStream. - *

- * - * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void addSolventInStream(StreamInterface newStream) { - solventInStream = (Stream) newStream; - solventOutStream = (Stream) newStream.clone(); - addStream(newStream); - solventStreamNumber = streams.size() - 1; - } - - /** - *

- * replaceSolventInStream. - *

- * - * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void replaceSolventInStream(StreamInterface newStream) { - solventInStream = (Stream) newStream; - streams.set(solventStreamNumber, solventInStream); - } - - /** {@inheritDoc} */ - @Override - public void setPressure(double pressure) { - this.pressure = pressure; - } - - /** - *

- * mixStream. - *

- */ - public void mixStream() { - String compName = new String(); - - for (int k = 1; k < streams.size(); k++) { - for (int i = 0; i < streams.get(k).getThermoSystem().getPhases()[0] - .getNumberOfComponents(); i++) { - boolean gotComponent = false; - String componentName = - streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i] - .getName(); - // System.out.println("adding: " + componentName); - - double moles = streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i] - .getNumberOfmoles(); - // System.out.println("moles: " + moles + " " + - // mixedStream.getThermoSystem().getPhases()[0].getNumberOfComponents()); - for (int p = 0; p < mixedStream.getThermoSystem().getPhases()[0] - .getNumberOfComponents(); p++) { - if (mixedStream.getThermoSystem().getPhases()[0].getComponents()[p].getName() - .equals(componentName)) { - gotComponent = true; - compName = - streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] - .getComponentName(); - } - } - - if (gotComponent) { - // System.out.println("adding moles starting...."); - mixedStream.getThermoSystem().addComponent(compName, moles); - // mixedStream.getThermoSystem().init_x_y(); - // System.out.println("adding moles finished"); - } else { - // System.out.println("ikke gaa hit"); - mixedStream.getThermoSystem().addComponent(compName, moles); - } - } + if (gotComponent) { + // System.out.println("adding moles starting...."); + mixedStream.getThermoSystem().addComponent(compName, moles); + // mixedStream.getThermoSystem().init_x_y(); + // System.out.println("adding moles finished"); + } else { + // System.out.println("ikke gaa hit"); + mixedStream.getThermoSystem().addComponent(compName, moles); } - mixedStream.getThermoSystem().init_x_y(); - mixedStream.getThermoSystem().initBeta(); - mixedStream.getThermoSystem().init(2); + } } - - /** - *

- * guessTemperature. - *

- * - * @return a double - */ - public double guessTemperature() { - double gtemp = 0; - for (int k = 0; k < streams.size(); k++) { - gtemp += streams.get(k).getThermoSystem().getTemperature() - * streams.get(k).getThermoSystem().getNumberOfMoles() - / mixedStream.getThermoSystem().getNumberOfMoles(); - } - return gtemp; + mixedStream.getThermoSystem().init_x_y(); + mixedStream.getThermoSystem().initBeta(); + mixedStream.getThermoSystem().init(2); + } + + /** + *

+ * guessTemperature. + *

+ * + * @return a double + */ + public double guessTemperature() { + double gtemp = 0; + for (int k = 0; k < streams.size(); k++) { + gtemp += streams.get(k).getThermoSystem().getTemperature() + * streams.get(k).getThermoSystem().getNumberOfMoles() + / mixedStream.getThermoSystem().getNumberOfMoles(); } - - /** - *

- * calcMixStreamEnthalpy. - *

- * - * @return a double - */ - public double calcMixStreamEnthalpy() { - double enthalpy = 0; - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().init(3); - enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); - // System.out.println("total enthalpy k : " + ( - // ((StreamInterface) streams.get(k)).getThermoSystem()).getEnthalpy()); - } - // System.out.println("total enthalpy of streams: " + enthalpy); - return enthalpy; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutStream() { - return mixedStream; + return gtemp; + } + + /** + *

+ * calcMixStreamEnthalpy. + *

+ * + * @return a double + */ + public double calcMixStreamEnthalpy() { + double enthalpy = 0; + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().init(3); + enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); + // System.out.println("total enthalpy k : " + ( + // ((StreamInterface) streams.get(k)).getThermoSystem()).getEnthalpy()); } + // System.out.println("total enthalpy of streams: " + enthalpy); + return enthalpy; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getOutStream() { + return mixedStream; + } + + /** + *

+ * getInStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getInStream() { + return gasInStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getGasOutStream() { + return gasOutStream; + } + + /** + *

+ * Getter for the field gasInStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getGasInStream() { + return gasInStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getLiquidOutStream() { + return solventOutStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getSolventInStream() { + return solventInStream; + } + + /** + *

+ * calcEa. + *

+ * + * @return a double + */ + public double calcEa() { + double A = mixedStream.getThermoSystem().getPhase(1).getNumberOfMolesInPhase() + / mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase() / kwater; + absorptionEfficiency = (Math.pow(A, getNumberOfTheoreticalStages() + 1) - A) + / (Math.pow(A, getNumberOfTheoreticalStages() + 1) - 1.0); + return absorptionEfficiency; + } + + /** + *

+ * calcY0. + *

+ * + * @return a double + */ + public double calcY0() { + // double fugacityWaterLiquid = + // mixedStream.getThermoSystem().getPhase(1).getFugacity("water"); + // double xrel = + // mixedStream.getFluid().getPhase(0).getComponent("water").getx()/solventInStream.getFluid().getPhase(0).getComponent("water").getx(); + // double y0 = + // xrel*fugacityWaterLiquid/(mixedStream.getFluid().getPhase(0).getComponent("water").getFugacityCoefficient()*mixedStream.getFluid().getPressure()); + double fugCoefRef = + mixedStream.getThermoSystem().getPhase(1).getComponent("water").getFugacityCoefficient(); + double y0 = solventInStream.getFluid().getPhase(0).getComponent("water").getx() * fugCoefRef + / (mixedStream.getThermoSystem().getPhase(0).getComponent("water") + .getFugacityCoefficient()); + return y0; + } + + /** + *

+ * calcNumberOfTheoreticalStages. + *

+ * + * @return a double + */ + public double calcNumberOfTheoreticalStages() { + setNumberOfTheoreticalStages(getStageEfficiency() * getNumberOfStages()); + return getNumberOfTheoreticalStages(); + } + + /** + *

+ * calcNTU. + *

+ * + * @param y0 a double + * @param y1 a double + * @param yb a double + * @param ymix a double + * @return a double + */ + public double calcNTU(double y0, double y1, double yb, double ymix) { + return Math.log((yb - ymix) / (y1 - y0)); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + try { + double y1 = 0.0; + // double yN = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(); + mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().init(0); + mixStream(); + // System.out.println("feed total number of water " + + // mixedStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); + double enthalpy = calcMixStreamEnthalpy(); + // System.out.println("temp guess " + guessTemperature()); + mixedStream.getThermoSystem().setTemperature(guessTemperature()); + ThermodynamicOperations testOps = new ThermodynamicOperations(mixedStream.getThermoSystem()); + testOps.TPflash(); + testOps.PHflash(enthalpy, 0); + + kwater = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx() + / mixedStream.getThermoSystem().getPhase(1).getComponent("water").getx(); + + calcNumberOfTheoreticalStages(); + // System.out.println("number of theoretical stages " + + // getNumberOfTheoreticalStages()); + double absorptionEffiency = calcEa(); - /** - *

- * getInStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getInStream() { - return gasInStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGasOutStream() { - return gasOutStream; - } - - /** - *

- * Getter for the field gasInStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getGasInStream() { - return gasInStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquidOutStream() { - return solventOutStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getSolventInStream() { - return solventInStream; - } - - /** - *

- * calcEa. - *

- * - * @return a double - */ - public double calcEa() { - double A = mixedStream.getThermoSystem().getPhase(1).getNumberOfMolesInPhase() - / mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase() / kwater; - absorptionEfficiency = (Math.pow(A, getNumberOfTheoreticalStages() + 1) - A) - / (Math.pow(A, getNumberOfTheoreticalStages() + 1) - 1.0); - return absorptionEfficiency; - } - - /** - *

- * calcY0. - *

- * - * @return a double - */ - public double calcY0() { - // double fugacityWaterLiquid = - // mixedStream.getThermoSystem().getPhase(1).getFugacity("water"); - // double xrel = - // mixedStream.getFluid().getPhase(0).getComponent("water").getx()/solventInStream.getFluid().getPhase(0).getComponent("water").getx(); - // double y0 = - // xrel*fugacityWaterLiquid/(mixedStream.getFluid().getPhase(0).getComponent("water").getFugacityCoefficient()*mixedStream.getFluid().getPressure()); - double fugCoefRef = mixedStream.getThermoSystem().getPhase(1).getComponent("water") - .getFugacityCoefficient(); - double y0 = solventInStream.getFluid().getPhase(0).getComponent("water").getx() * fugCoefRef - / (mixedStream.getThermoSystem().getPhase(0).getComponent("water") - .getFugacityCoefficient()); - return y0; - } - - /** - *

- * calcNumberOfTheoreticalStages. - *

- * - * @return a double - */ - public double calcNumberOfTheoreticalStages() { - setNumberOfTheoreticalStages(getStageEfficiency() * getNumberOfStages()); - return getNumberOfTheoreticalStages(); - } - - /** - *

- * calcNTU. - *

- * - * @param y0 a double - * @param y1 a double - * @param yb a double - * @param ymix a double - * @return a double - */ - public double calcNTU(double y0, double y1, double yb, double ymix) { - double NTU = Math.log((yb - ymix) / (y1 - y0)); - return NTU; - } - - /** {@inheritDoc} */ - @Override - public void run() { - try { - double y0 = 0.0, y1 = 0.0; - // double yN = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(); - double absorptionEffiency = 0.0; - mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixedStream.getThermoSystem().init(0); - mixStream(); - // System.out.println("feed total number of water " + - // mixedStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); - double enthalpy = calcMixStreamEnthalpy(); - //// System.out.println("temp guess " + guessTemperature()); - mixedStream.getThermoSystem().setTemperature(guessTemperature()); - ThermodynamicOperations testOps = - new ThermodynamicOperations(mixedStream.getThermoSystem()); - testOps.TPflash(); - testOps.PHflash(enthalpy, 0); - - kwater = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx() - / mixedStream.getThermoSystem().getPhase(1).getComponent("water").getx(); - - calcNumberOfTheoreticalStages(); - // System.out.println("number of theoretical stages " + - // getNumberOfTheoreticalStages()); - absorptionEffiency = calcEa(); - - y0 = calcY0(); - if (isSetWaterInDryGas) { - y1 = waterInDryGas; - setNumberOfTheoreticalStages(2.0); - } else { - y1 = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() - - absorptionEffiency - * (gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() - - y0); - } - - double yMean = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx(); - double molesWaterToMove = (yMean - y1) - * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); - // System.out.println("Lean TEG to absorber " - // +solventInStream.getFlowRate("kg/hr")); - - // System.out.println("mole water to move " + molesWaterToMove); - // System.out.println("total moles water in gas " + - // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfMolesInPhase()); - // System.out.println("total moles water " + - // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles()); - StreamInterface stream = mixedStream.clone(); - stream.setName("test"); - stream.getThermoSystem().addComponent("water", -molesWaterToMove, 0); - stream.getThermoSystem().addComponent("water", molesWaterToMove, 1); - stream.getThermoSystem().initBeta(); - stream.getThermoSystem().init_x_y(); - stream.getThermoSystem().init(2); - mixedStream = stream; - - // stream.getThermoSystem().display(); - - SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); - SystemInterface gasTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[0]); - gasTemp.init(2); - gasOutStream.setThermoSystem(gasTemp); - // System.out.println("gas total number of water " + - // gasOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); - - tempSystem = mixedStream.getThermoSystem().clone(); - SystemInterface liqTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[1]); - liqTemp.init(2); - solventOutStream.setThermoSystem(liqTemp); - // System.out.println("solvent total number of water " + - // solventOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); - - setNTU(calcNTU(y0, y1, - gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(), yMean)); - // System.out.println("NTU " + getNTU()); - - // double Ks = 0.055; - getSolventOutStream().getThermoSystem().initPhysicalProperties(); - getGasOutStream().getThermoSystem().initPhysicalProperties(); - - // double vtemp = Ks * Math.sqrt((getSolventOutStream().getThermoSystem().getPhase(0) - // .getPhysicalProperties().getDensity() - - // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() - // .getDensity()) / - // getSolventOutStream().getThermoSystem().getPhase(0).getPhysicalProperties().getDensity()); - - // double d = Math.sqrt(4.0 * getGasOutStream().getMolarRate() * - // getGasOutStream().getThermoSystem().getPhase(0).getMolarMass() / - // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() - // .getDensity()/ 3.14 / vtemp); - // System.out.println("diameter " + d); - } catch (Exception e) { - e.printStackTrace(); - } - // System.out.println("rich TEG from absorber " + - // getSolventOutStream().getFlowRate("kg/hr")); - } - - /** - *

- * getGasLoadFactor. - *

- * - * @return a double - */ - public double getGasLoadFactor() { - double intArea = 3.14 * getInternalDiameter() * getInternalDiameter() / 4.0; - double vs = getGasOutStream().getThermoSystem().getFlowRate("m3/sec") / intArea; - return vs / Math.sqrt((getSolventOutStream().getThermoSystem().getPhase(0) - .getPhysicalProperties().getDensity() - - getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() - .getDensity()) - / getSolventOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() - .getDensity()); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - SystemInterface thermoSystem = mixedStream.getThermoSystem(); - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.#####E0"); - - JDialog dialog = new JDialog(new JFrame(), "Results from TPflash"); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new FlowLayout()); - - thermoSystem.initPhysicalProperties(); - String[][] table = new String[50][5]; - String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; - table[0][0] = ""; - table[0][1] = ""; - table[0][2] = ""; - table[0][3] = ""; - StringBuffer buf = new StringBuffer(); - FieldPosition test = new FieldPosition(0); - - for (int i = 0; i < thermoSystem.getNumberOfPhases(); i++) { - for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { - table[j + 1][0] = thermoSystem.getPhases()[0].getComponents()[j].getName(); - buf = new StringBuffer(); - table[j + 1][i + 1] = - nf.format(thermoSystem.getPhases()[i].getComponents()[j].getx(), buf, test) - .toString(); - table[j + 1][4] = "[-]"; - } - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][0] = "Density"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][i + 1] = - nf.format(thermoSystem.getPhases()[i].getPhysicalProperties().getDensity(), buf, - test).toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][4] = "[kg/m^3]"; - - // Double.longValue(thermoSystem.getPhases()[i].getBeta()); - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][0] = "PhaseFraction"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][i + 1] = - nf.format(thermoSystem.getPhases()[i].getBeta(), buf, test).toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][4] = "[-]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][0] = "MolarMass"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][i + 1] = - nf.format(thermoSystem.getPhases()[i].getMolarMass() * 1000, buf, test) - .toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][4] = "[kg/kmol]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][0] = "Cp"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][i + 1] = nf.format( - (thermoSystem.getPhases()[i].getCp() - / (thermoSystem.getPhases()[i].getNumberOfMolesInPhase() - * thermoSystem.getPhases()[i].getMolarMass() * 1000)), - buf, test).toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][4] = "[kJ/kg*K]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][0] = "Viscosity"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][i + 1] = - nf.format((thermoSystem.getPhases()[i].getPhysicalProperties().getViscosity()), - buf, test).toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][4] = "[kg/m*sec]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][0] = "Conductivity"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][i + 1] = - nf.format(thermoSystem.getPhases()[i].getPhysicalProperties().getConductivity(), - buf, test).toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][4] = "[W/m*K]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][0] = "Pressure"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][i + 1] = - Double.toString(thermoSystem.getPhases()[i].getPressure()); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][4] = "[bar]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][0] = "Temperature"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][i + 1] = - Double.toString(thermoSystem.getPhases()[i].getTemperature()); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][4] = "[K]"; - Double.toString(thermoSystem.getPhases()[i].getTemperature()); - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][0] = "Stream"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][i + 1] = getName(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][4] = "-"; - } - - JTable Jtab = new JTable(table, names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); - dialog.pack(); - dialog.setVisible(true); - } - - /** - *

- * Setter for the field gasOutStream. - *

- * - * @param gasOutStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public void setGasOutStream(StreamInterface gasOutStream) { - this.gasOutStream = gasOutStream; - } - - /** - *

- * Getter for the field solventOutStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getSolventOutStream() { - return solventOutStream; - } - - /** - *

- * Setter for the field solventOutStream. - *

- * - * @param solventOutStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public void setSolventOutStream(StreamInterface solventOutStream) { - this.solventOutStream = solventOutStream; - } - - /** {@inheritDoc} */ - @Override - public void runConditionAnalysis(ProcessEquipmentInterface refTEGabsorberloc) { - double yin = getGasInStream().getFluid().getPhase("gas").getComponent("water").getx(); - double yout = getGasOutStream().getFluid().getPhase("gas").getComponent("water").getx(); double y0 = calcY0(); - double A = mixedStream.getThermoSystem().getPhase(1).getNumberOfMolesInPhase() - / mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase() / kwater; - double N = Math.log(((A - 1.0) / A) * ((yin - y0) / (yout - y0)) + (1.0 / A)) / Math.log(A); - setNumberOfTheoreticalStages(N); + if (isSetWaterInDryGas) { + y1 = waterInDryGas; + setNumberOfTheoreticalStages(2.0); + } else { + y1 = gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() + - absorptionEffiency + * (gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx() - y0); + } + + double yMean = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx(); + double molesWaterToMove = + (yMean - y1) * mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); + // System.out.println("Lean TEG to absorber " + // +solventInStream.getFlowRate("kg/hr")); + + // System.out.println("mole water to move " + molesWaterToMove); + // System.out.println("total moles water in gas " + + // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfMolesInPhase()); + // System.out.println("total moles water " + + // mixedStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfmoles()); + StreamInterface newMixedStream = mixedStream.clone(); + newMixedStream.setName("test"); + newMixedStream.getThermoSystem().addComponent("water", -molesWaterToMove, 0); + newMixedStream.getThermoSystem().addComponent("water", molesWaterToMove, 1); + newMixedStream.getThermoSystem().initBeta(); + newMixedStream.getThermoSystem().init_x_y(); + newMixedStream.getThermoSystem().init(2); + mixedStream = newMixedStream; + mixedStream.setCalculationIdentifier(id); + + // stream.getThermoSystem().display(); + + SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); + SystemInterface gasTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[0]); + gasTemp.init(2); + gasOutStream.setThermoSystem(gasTemp); + // System.out.println("gas total number of water " + + // gasOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); + + tempSystem = mixedStream.getThermoSystem().clone(); + SystemInterface liqTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[1]); + liqTemp.init(2); + solventOutStream.setThermoSystem(liqTemp); + // System.out.println("solvent total number of water " + + // solventOutStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); + + setNTU(calcNTU(y0, y1, gasInStream.getThermoSystem().getPhase(0).getComponent("water").getx(), + yMean)); + // System.out.println("NTU " + getNTU()); + + // double Ks = 0.055; + getSolventOutStream().getThermoSystem().initPhysicalProperties(); + getSolventOutStream().setCalculationIdentifier(id); + getGasOutStream().getThermoSystem().initPhysicalProperties(); + getGasOutStream().setCalculationIdentifier(id); + + // double vtemp = Ks * Math.sqrt((getSolventOutStream().getThermoSystem().getPhase(0) + // .getPhysicalProperties().getDensity() - + // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() + // .getDensity()) / + // getSolventOutStream().getThermoSystem().getPhase(0).getPhysicalProperties().getDensity()); + + // double d = Math.sqrt(4.0 * getGasOutStream().getMolarRate() * + // getGasOutStream().getThermoSystem().getPhase(0).getMolarMass() / + // getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() + // .getDensity()/ 3.14 / vtemp); + // System.out.println("diameter " + d); + setCalculationIdentifier(id); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** - *

- * Setter for the field waterInDryGas. - *

- * @param waterInDryGasInput water in dry gas - */ - public void setWaterInDryGas(double waterInDryGasInput) { - waterInDryGas = waterInDryGasInput; - isSetWaterInDryGas = true; + // System.out.println("rich TEG from absorber " + + // getSolventOutStream().getFlowRate("kg/hr")); + } + + /** {@inheritDoc} */ + @Override + public double getGasLoadFactor() { + double intArea = 3.14 * getInternalDiameter() * getInternalDiameter() / 4.0; + double vs = getGasOutStream().getThermoSystem().getFlowRate("m3/sec") / intArea; + return vs / Math.sqrt( + (getSolventOutStream().getThermoSystem().getPhase(0).getPhysicalProperties().getDensity() + - getGasOutStream().getThermoSystem().getPhase(0).getPhysicalProperties().getDensity()) + / getSolventOutStream().getThermoSystem().getPhase(0).getPhysicalProperties() + .getDensity()); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + SystemInterface thermoSystem = mixedStream.getThermoSystem(); + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.#####E0"); + + JDialog dialog = new JDialog(new JFrame(), "Results from TPflash"); + Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new FlowLayout()); + + thermoSystem.initPhysicalProperties(); + String[][] table = new String[50][5]; + String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; + table[0][0] = ""; + table[0][1] = ""; + table[0][2] = ""; + table[0][3] = ""; + StringBuffer buf = new StringBuffer(); + FieldPosition test = new FieldPosition(0); + + for (int i = 0; i < thermoSystem.getNumberOfPhases(); i++) { + for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { + table[j + 1][0] = thermoSystem.getPhases()[0].getComponents()[j].getName(); + buf = new StringBuffer(); + table[j + 1][i + 1] = + nf.format(thermoSystem.getPhases()[i].getComponents()[j].getx(), buf, test).toString(); + table[j + 1][4] = "[-]"; + } + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][0] = "Density"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][i + 1] = + nf.format(thermoSystem.getPhases()[i].getPhysicalProperties().getDensity(), buf, test) + .toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][4] = "[kg/m^3]"; + + // Double.longValue(thermoSystem.getPhases()[i].getBeta()); + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][0] = "PhaseFraction"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][i + 1] = + nf.format(thermoSystem.getPhases()[i].getBeta(), buf, test).toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][4] = "[-]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][0] = "MolarMass"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][i + 1] = + nf.format(thermoSystem.getPhases()[i].getMolarMass() * 1000, buf, test).toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][4] = "[kg/kmol]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][0] = "Cp"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][i + 1] = + nf.format((thermoSystem.getPhases()[i].getCp() + / (thermoSystem.getPhases()[i].getNumberOfMolesInPhase() + * thermoSystem.getPhases()[i].getMolarMass() * 1000)), + buf, test).toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][4] = "[kJ/kg*K]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][0] = "Viscosity"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][i + 1] = + nf.format((thermoSystem.getPhases()[i].getPhysicalProperties().getViscosity()), buf, test) + .toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][4] = "[kg/m*sec]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][0] = "Conductivity"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][i + 1] = nf + .format(thermoSystem.getPhases()[i].getPhysicalProperties().getConductivity(), buf, test) + .toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][4] = "[W/m*K]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][0] = "Pressure"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][i + 1] = + Double.toString(thermoSystem.getPhases()[i].getPressure()); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][4] = "[bar]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][0] = "Temperature"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][i + 1] = + Double.toString(thermoSystem.getPhases()[i].getTemperature()); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][4] = "[K]"; + Double.toString(thermoSystem.getPhases()[i].getTemperature()); + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][0] = "Stream"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][i + 1] = getName(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][4] = "-"; } - public void isSetWaterInDryGas(boolean isSetwaterInDryGas) { - this.isSetWaterInDryGas = isSetwaterInDryGas; - } + JTable Jtab = new JTable(table, names); + JScrollPane scrollpane = new JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + dialog.pack(); + dialog.setVisible(true); + } + + /** + *

+ * Setter for the field gasOutStream. + *

+ * + * @param gasOutStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public void setGasOutStream(StreamInterface gasOutStream) { + this.gasOutStream = gasOutStream; + } + + /** + *

+ * Getter for the field solventOutStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getSolventOutStream() { + return solventOutStream; + } + + /** + *

+ * Setter for the field solventOutStream. + *

+ * + * @param solventOutStream a + * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public void setSolventOutStream(StreamInterface solventOutStream) { + this.solventOutStream = solventOutStream; + } + + /** {@inheritDoc} */ + @Override + public void runConditionAnalysis(ProcessEquipmentInterface refTEGabsorberloc) { + double yin = getGasInStream().getFluid().getPhase("gas").getComponent("water").getx(); + double yout = getGasOutStream().getFluid().getPhase("gas").getComponent("water").getx(); + double y0 = calcY0(); + double A = mixedStream.getThermoSystem().getPhase(1).getNumberOfMolesInPhase() + / mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase() / kwater; + double N = Math.log(((A - 1.0) / A) * ((yin - y0) / (yout - y0)) + (1.0 / A)) / Math.log(A); + setNumberOfTheoreticalStages(N); + } + + /** + *

+ * Setter for the field waterInDryGas. + *

+ * + * @param waterInDryGasInput water in dry gas + */ + public void setWaterInDryGas(double waterInDryGasInput) { + waterInDryGas = waterInDryGasInput; + isSetWaterInDryGas = true; + } + + /** + *

+ * isSetWaterInDryGas. + *

+ * + * @param isSetwaterInDryGas a boolean + */ + public void isSetWaterInDryGas(boolean isSetwaterInDryGas) { + this.isSetWaterInDryGas = isSetwaterInDryGas; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/absorber/WaterStripperColumn.java b/src/main/java/neqsim/processSimulation/processEquipment/absorber/WaterStripperColumn.java index d0191d12a3..ff502e6495 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/absorber/WaterStripperColumn.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/absorber/WaterStripperColumn.java @@ -5,14 +5,16 @@ import java.text.DecimalFormat; import java.text.FieldPosition; import java.util.ArrayList; - +import java.util.UUID; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; - +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -25,524 +27,522 @@ * @version $Id: $Id */ public class WaterStripperColumn extends SimpleAbsorber { - private static final long serialVersionUID = 1000; - - protected ArrayList streams = new ArrayList(0); - protected double pressure = 0; - protected int numberOfInputStreams = 0; - protected StreamInterface mixedStream; - protected StreamInterface gasInStream; - protected StreamInterface solventInStream; - private StreamInterface gasOutStream; - private StreamInterface solventOutStream; - protected String name = "mixer"; - protected StreamInterface outStream; - private double waterDewPointTemperature = 263.15, dewPressure = 70.0, kwater = 1e-4; - int solventStreamNumber = 0; - - /** - *

- * Constructor for WaterStripperColumn. - *

- */ - @Deprecated - public WaterStripperColumn() { - } - - /** - *

- * Constructor for WaterStripperColumn. - *

- * - * @param name a {@link java.lang.String} object - */ - public WaterStripperColumn(String name) { - super(name); - } - - /** {@inheritDoc} */ - @Override - public void addStream(StreamInterface newStream) { - streams.add(newStream); - if (numberOfInputStreams == 0) { - mixedStream = (Stream) streams.get(0).clone(); - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixedStream.getThermoSystem().init(0); - mixedStream.getThermoSystem().init(3); - } - - numberOfInputStreams++; - } - - /** - *

- * addGasInStream. - *

- * - * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void addGasInStream(StreamInterface newStream) { - gasInStream = (Stream) newStream; - gasOutStream = (Stream) newStream.clone(); - addStream(newStream); - } - - /** - *

- * addSolventInStream. - *

- * - * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void addSolventInStream(StreamInterface newStream) { - solventInStream = (Stream) newStream; - solventOutStream = (Stream) newStream.clone(); - addStream(newStream); - solventStreamNumber = streams.size() - 1; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(WaterStripperColumn.class); + + protected ArrayList streams = new ArrayList(0); + protected double pressure = 0; + protected int numberOfInputStreams = 0; + protected StreamInterface mixedStream; + protected StreamInterface gasInStream; + protected StreamInterface solventInStream; + private StreamInterface gasOutStream; + private StreamInterface solventOutStream; + protected StreamInterface outStream; + private double waterDewPointTemperature = 263.15; + private double dewPressure = 70.0; + + private double kwater = 1e-4; + + int solventStreamNumber = 0; + + /** + *

+ * Constructor for WaterStripperColumn. + *

+ */ + @Deprecated + public WaterStripperColumn() {} + + /** + *

+ * Constructor for WaterStripperColumn. + *

+ * + * @param name a {@link java.lang.String} object + */ + public WaterStripperColumn(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void addStream(StreamInterface newStream) { + streams.add(newStream); + if (numberOfInputStreams == 0) { + mixedStream = streams.get(0).clone(); + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().init(0); + mixedStream.getThermoSystem().init(3); } - /** - *

- * replaceSolventInStream. - *

- * - * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void replaceSolventInStream(StreamInterface newStream) { - solventInStream = (Stream) newStream; - streams.set(solventStreamNumber, solventInStream); - } - - /** {@inheritDoc} */ - @Override - public void setPressure(double pressure) { - this.pressure = pressure; - } - - /** - *

- * mixStream. - *

- */ - public void mixStream() { - String compName = new String(); - - for (int k = 1; k < streams.size(); k++) { - for (int i = 0; i < streams.get(k).getThermoSystem().getPhases()[0] - .getNumberOfComponents(); i++) { - boolean gotComponent = false; - String componentName = - streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i] - .getName(); - // System.out.println("adding: " + componentName); - - double moles = streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i] - .getNumberOfmoles(); - // System.out.println("moles: " + moles + " " + - // mixedStream.getThermoSystem().getPhases()[0].getNumberOfComponents()); - for (int p = 0; p < mixedStream.getThermoSystem().getPhases()[0] - .getNumberOfComponents(); p++) { - if (mixedStream.getThermoSystem().getPhases()[0].getComponents()[p].getName() - .equals(componentName)) { - gotComponent = true; - - compName = - streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] - .getComponentName(); - } - } - - if (gotComponent) { - // System.out.println("adding moles starting...."); - mixedStream.getThermoSystem().addComponent(compName, moles); - // mixedStream.getThermoSystem().init_x_y(); - // System.out.println("adding moles finished"); - } else { - // System.out.println("ikke gaa hit"); - mixedStream.getThermoSystem().addComponent(compName, moles); - } - } - } - mixedStream.getThermoSystem().init_x_y(); - mixedStream.getThermoSystem().initBeta(); - mixedStream.getThermoSystem().init(2); - } - - /** - *

- * guessTemperature. - *

- * - * @return a double - */ - public double guessTemperature() { - double gtemp = 0; - for (int k = 0; k < streams.size(); k++) { - gtemp += streams.get(k).getThermoSystem().getTemperature() - * streams.get(k).getThermoSystem().getNumberOfMoles() - / mixedStream.getThermoSystem().getNumberOfMoles(); + numberOfInputStreams++; + } + + /** + *

+ * addGasInStream. + *

+ * + * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void addGasInStream(StreamInterface newStream) { + gasInStream = newStream; + gasOutStream = newStream.clone(); + addStream(newStream); + } + + /** + *

+ * addSolventInStream. + *

+ * + * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void addSolventInStream(StreamInterface newStream) { + solventInStream = newStream; + solventOutStream = newStream.clone(); + addStream(newStream); + solventStreamNumber = streams.size() - 1; + } + + /** + *

+ * replaceSolventInStream. + *

+ * + * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void replaceSolventInStream(StreamInterface newStream) { + solventInStream = newStream; + streams.set(solventStreamNumber, solventInStream); + } + + /** {@inheritDoc} */ + @Override + public void setPressure(double pressure) { + this.pressure = pressure; + } + + /** + *

+ * mixStream. + *

+ */ + public void mixStream() { + String compName = new String(); + + for (int k = 1; k < streams.size(); k++) { + for (int i = 0; i < streams.get(k).getThermoSystem().getPhases()[0] + .getNumberOfComponents(); i++) { + boolean gotComponent = false; + String componentName = + streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i].getName(); + // System.out.println("adding: " + componentName); + + double moles = + streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i].getNumberOfmoles(); + // System.out.println("moles: " + moles + " " + + // mixedStream.getThermoSystem().getPhases()[0].getNumberOfComponents()); + for (int p = 0; p < mixedStream.getThermoSystem().getPhases()[0] + .getNumberOfComponents(); p++) { + if (mixedStream.getThermoSystem().getPhases()[0].getComponents()[p].getName() + .equals(componentName)) { + gotComponent = true; + + compName = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] + .getComponentName(); + } } - return gtemp; - } - /** - *

- * calcMixStreamEnthalpy. - *

- * - * @return a double - */ - public double calcMixStreamEnthalpy() { - double enthalpy = 0; - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().init(3); - enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); - // System.out.println("total enthalpy k : " + ( - // ((StreamInterface) streams.get(k)).getThermoSystem()).getEnthalpy()); + if (gotComponent) { + // System.out.println("adding moles starting...."); + mixedStream.getThermoSystem().addComponent(compName, moles); + // mixedStream.getThermoSystem().init_x_y(); + // System.out.println("adding moles finished"); + } else { + // System.out.println("ikke gaa hit"); + mixedStream.getThermoSystem().addComponent(compName, moles); } - // System.out.println("total enthalpy of streams: " + enthalpy); - return enthalpy; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutStream() { - return mixedStream; - } - - /** - *

- * getInStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getInStream() { - return gasInStream; + } } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGasOutStream() { - return gasOutStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquidOutStream() { - return solventOutStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getSolventInStream() { - return solventInStream; - } - - /** - *

- * calcEa. - *

- * - * @return a double - */ - public double calcEa() { - double A = mixedStream.getThermoSystem().getPhase(1).getNumberOfMolesInPhase() - / mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase() / kwater; - absorptionEfficiency = (Math.pow(A, getNumberOfTheoreticalStages() + 1) - A) - / (Math.pow(A, getNumberOfTheoreticalStages() + 1) - 1.0); - return absorptionEfficiency; - } - - /** - *

- * calcX0. - *

- * - * @return a double - */ - public double calcX0() { - return 0.0; + mixedStream.getThermoSystem().init_x_y(); + mixedStream.getThermoSystem().initBeta(); + mixedStream.getThermoSystem().init(2); + } + + /** + *

+ * guessTemperature. + *

+ * + * @return a double + */ + public double guessTemperature() { + double gtemp = 0; + for (int k = 0; k < streams.size(); k++) { + gtemp += streams.get(k).getThermoSystem().getTemperature() + * streams.get(k).getThermoSystem().getNumberOfMoles() + / mixedStream.getThermoSystem().getNumberOfMoles(); } - - /** - *

- * calcNumberOfTheoreticalStages. - *

- * - * @return a double - */ - public double calcNumberOfTheoreticalStages() { - setNumberOfTheoreticalStages(getStageEfficiency() * getNumberOfStages()); - return getNumberOfTheoreticalStages(); - } - - /** - *

- * calcNTU. - *

- * - * @param y0 a double - * @param y1 a double - * @param yb a double - * @param ymix a double - * @return a double - */ - public double calcNTU(double y0, double y1, double yb, double ymix) { - double NTU = Math.log((yb - ymix) / (y1 - y0)); - return NTU; + return gtemp; + } + + /** + *

+ * calcMixStreamEnthalpy. + *

+ * + * @return a double + */ + public double calcMixStreamEnthalpy() { + double enthalpy = 0; + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().init(3); + enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); + // System.out.println("total enthalpy k : " + ( + // ((StreamInterface) streams.get(k)).getThermoSystem()).getEnthalpy()); } - - /** {@inheritDoc} */ - @Override - public void run() { - try { - double x2 = getSolventInStream().getFluid().getPhase(0).getComponent("water").getz(); - double x0 = 0.0; - double absorptionEffiency = 0.0; - mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixedStream.getThermoSystem().init(0); - mixStream(); - double enthalpy = calcMixStreamEnthalpy(); - //// System.out.println("temp guess " + guessTemperature()); - mixedStream.getThermoSystem().setTemperature(guessTemperature()); - ThermodynamicOperations testOps = - new ThermodynamicOperations(mixedStream.getThermoSystem()); - testOps.TPflash(); - testOps.PHflash(enthalpy, 0); - - if (mixedStream.getThermoSystem().getNumberOfPhases() == 1) { - if (mixedStream.getThermoSystem().getPhase(0).getPhaseTypeName() - .equals("aqueous")) { - SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); - gasOutStream.setEmptyThermoSystem(tempSystem); - gasOutStream.run(); - solventOutStream.setThermoSystem(tempSystem); - solventOutStream.run(); - } - if (mixedStream.getThermoSystem().getPhase(0).getPhaseTypeName().equals("gas")) { - SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); - solventOutStream.setEmptyThermoSystem(tempSystem); - solventOutStream.run(); - gasOutStream.setThermoSystem(tempSystem); - gasOutStream.run(); - } - return; - } - - kwater = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx() - / mixedStream.getThermoSystem().getPhase(1).getComponent("water").getx(); - - double Ntheoretical = calcNumberOfTheoreticalStages(); - // System.out.println("number of theoretical stages " + - // getNumberOfTheoreticalStages()); - absorptionEffiency = calcEa(); - - x0 = calcX0(); - double revA = 1.0 / absorptionEffiency; - - double x1 = x2 - (Math.pow(revA, Ntheoretical + 1) - revA) - / (Math.pow(revA, Ntheoretical + 1) - 1.0) * (x2 - x0); - - double xMean = mixedStream.getThermoSystem().getPhase(1).getComponent("water").getx(); - double molesWaterToMove = (xMean - x1) - * mixedStream.getThermoSystem().getPhase(1).getNumberOfMolesInPhase(); - // System.out.println("mole water to move " + molesWaterToMove); - - StreamInterface stream = mixedStream.clone(); - stream.setName("test"); - stream.getThermoSystem().addComponent("water", molesWaterToMove, 0); - stream.getThermoSystem().addComponent("water", -molesWaterToMove, 1); - stream.getThermoSystem().initBeta(); - stream.getThermoSystem().init_x_y(); - stream.getThermoSystem().init(2); - mixedStream = stream; - // stream.getThermoSystem().display(); - - SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); - SystemInterface gasTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[0]); - gasTemp.init(2); - gasOutStream.setThermoSystem(gasTemp); - - tempSystem = mixedStream.getThermoSystem().clone(); - SystemInterface liqTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[1]); - liqTemp.init(2); - solventOutStream.setThermoSystem(liqTemp); - solventOutStream.run(); - // System.out.println("Gas from water stripper " + - // gasOutStream.getFlowRate("kg/hr") + " kg/hr"); - - // System.out.println("TEG from water stripper " + - // solventOutStream.getFlowRate("kg/hr") + " kg/hr"); - } catch (Exception e) { - e.printStackTrace(); + // System.out.println("total enthalpy of streams: " + enthalpy); + return enthalpy; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getOutStream() { + return mixedStream; + } + + /** + *

+ * getInStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getInStream() { + return gasInStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getGasOutStream() { + return gasOutStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getLiquidOutStream() { + return solventOutStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getSolventInStream() { + return solventInStream; + } + + /** + *

+ * calcEa. + *

+ * + * @return a double + */ + public double calcEa() { + double A = mixedStream.getThermoSystem().getPhase(1).getNumberOfMolesInPhase() + / mixedStream.getThermoSystem().getPhase(0).getNumberOfMolesInPhase() / kwater; + absorptionEfficiency = (Math.pow(A, getNumberOfTheoreticalStages() + 1) - A) + / (Math.pow(A, getNumberOfTheoreticalStages() + 1) - 1.0); + return absorptionEfficiency; + } + + /** + *

+ * calcX0. + *

+ * + * @return a double + */ + public double calcX0() { + return 0.0; + } + + /** + *

+ * calcNumberOfTheoreticalStages. + *

+ * + * @return a double + */ + public double calcNumberOfTheoreticalStages() { + setNumberOfTheoreticalStages(getStageEfficiency() * getNumberOfStages()); + return getNumberOfTheoreticalStages(); + } + + /** + *

+ * calcNTU. + *

+ * + * @param y0 a double + * @param y1 a double + * @param yb a double + * @param ymix a double + * @return a double + */ + public double calcNTU(double y0, double y1, double yb, double ymix) { + return Math.log((yb - ymix) / (y1 - y0)); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + try { + double x2 = getSolventInStream().getFluid().getPhase(0).getComponent("water").getz(); + double x0 = 0.0; + double absorptionEffiency = 0.0; + mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().init(0); + mixStream(); + double enthalpy = calcMixStreamEnthalpy(); + // System.out.println("temp guess " + guessTemperature()); + mixedStream.getThermoSystem().setTemperature(guessTemperature()); + ThermodynamicOperations testOps = new ThermodynamicOperations(mixedStream.getThermoSystem()); + testOps.TPflash(); + testOps.PHflash(enthalpy, 0); + + if (mixedStream.getThermoSystem().getNumberOfPhases() == 1) { + if (mixedStream.getThermoSystem().getPhase(0).getType() == PhaseType.AQUEOUS) { + SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); + gasOutStream.setEmptyThermoSystem(tempSystem); + gasOutStream.run(id); + solventOutStream.setThermoSystem(tempSystem); + solventOutStream.run(id); } - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - SystemInterface thermoSystem = mixedStream.getThermoSystem(); - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.#####E0"); - - JDialog dialog = new JDialog(new JFrame(), "Results from TPflash"); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new FlowLayout()); - - thermoSystem.initPhysicalProperties(); - String[][] table = new String[50][5]; - String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; - table[0][0] = ""; - table[0][1] = ""; - table[0][2] = ""; - table[0][3] = ""; - StringBuffer buf = new StringBuffer(); - FieldPosition test = new FieldPosition(0); - - for (int i = 0; i < thermoSystem.getNumberOfPhases(); i++) { - for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { - table[j + 1][0] = thermoSystem.getPhases()[0].getComponents()[j].getName(); - buf = new StringBuffer(); - table[j + 1][i + 1] = - nf.format(thermoSystem.getPhases()[i].getComponents()[j].getx(), buf, test) - .toString(); - table[j + 1][4] = "[-]"; - } - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][0] = "Density"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][i + 1] = - nf.format(thermoSystem.getPhases()[i].getPhysicalProperties().getDensity(), buf, - test).toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][4] = "[kg/m^3]"; - - // Double.longValue(thermoSystem.getPhases()[i].getBeta()); - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][0] = "PhaseFraction"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][i + 1] = - nf.format(thermoSystem.getPhases()[i].getBeta(), buf, test).toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][4] = "[-]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][0] = "MolarMass"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][i + 1] = - nf.format(thermoSystem.getPhases()[i].getMolarMass() * 1000, buf, test) - .toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][4] = "[kg/kmol]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][0] = "Cp"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][i + 1] = nf.format( - (thermoSystem.getPhases()[i].getCp() - / (thermoSystem.getPhases()[i].getNumberOfMolesInPhase() - * thermoSystem.getPhases()[i].getMolarMass() * 1000)), - buf, test).toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][4] = "[kJ/kg*K]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][0] = "Viscosity"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][i + 1] = - nf.format((thermoSystem.getPhases()[i].getPhysicalProperties().getViscosity()), - buf, test).toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][4] = "[kg/m*sec]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][0] = "Conductivity"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][i + 1] = - nf.format(thermoSystem.getPhases()[i].getPhysicalProperties().getConductivity(), - buf, test).toString(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][4] = "[W/m*K]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][0] = "Pressure"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][i + 1] = - Double.toString(thermoSystem.getPhases()[i].getPressure()); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][4] = "[bar]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][0] = "Temperature"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][i + 1] = - Double.toString(thermoSystem.getPhases()[i].getTemperature()); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][4] = "[K]"; - Double.toString(thermoSystem.getPhases()[i].getTemperature()); - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][0] = "Stream"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][i + 1] = name; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][4] = "-"; + if (mixedStream.getThermoSystem().getPhase(0).getType() == PhaseType.GAS) { + SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); + solventOutStream.setEmptyThermoSystem(tempSystem); + solventOutStream.run(id); + gasOutStream.setThermoSystem(tempSystem); + gasOutStream.run(id); } - - JTable Jtab = new JTable(table, names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); - dialog.pack(); - dialog.setVisible(true); - } - - /** - *

- * Getter for the field waterDewPointTemperature. - *

- * - * @return a double - */ - public double getWaterDewPointTemperature() { - return waterDewPointTemperature; + } else { + kwater = mixedStream.getThermoSystem().getPhase(0).getComponent("water").getx() + / mixedStream.getThermoSystem().getPhase(1).getComponent("water").getx(); + + double Ntheoretical = calcNumberOfTheoreticalStages(); + // System.out.println("number of theoretical stages " + + // getNumberOfTheoreticalStages()); + absorptionEffiency = calcEa(); + + x0 = calcX0(); + double revA = 1.0 / absorptionEffiency; + + double x1 = x2 - (Math.pow(revA, Ntheoretical + 1) - revA) + / (Math.pow(revA, Ntheoretical + 1) - 1.0) * (x2 - x0); + + double xMean = mixedStream.getThermoSystem().getPhase(1).getComponent("water").getx(); + double molesWaterToMove = + (xMean - x1) * mixedStream.getThermoSystem().getPhase(1).getNumberOfMolesInPhase(); + // System.out.println("mole water to move " + molesWaterToMove); + + StreamInterface stream = mixedStream.clone(); + stream.setName("test"); + stream.getThermoSystem().addComponent("water", molesWaterToMove, 0); + stream.getThermoSystem().addComponent("water", -molesWaterToMove, 1); + stream.getThermoSystem().initBeta(); + stream.getThermoSystem().init_x_y(); + stream.getThermoSystem().init(2); + mixedStream = stream; + // stream.getThermoSystem().display(); + + SystemInterface tempSystem = mixedStream.getThermoSystem().clone(); + SystemInterface gasTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[0]); + gasTemp.init(2); + gasOutStream.setThermoSystem(gasTemp); + gasOutStream.setCalculationIdentifier(id); + + tempSystem = mixedStream.getThermoSystem().clone(); + SystemInterface liqTemp = tempSystem.phaseToSystem(tempSystem.getPhases()[1]); + liqTemp.init(2); + solventOutStream.setThermoSystem(liqTemp); + solventOutStream.run(id); + + mixedStream.setCalculationIdentifier(id); + + // System.out.println("Gas from water stripper " + + // gasOutStream.getFlowRate("kg/hr") + " kg/hr"); + + // System.out.println("TEG from water stripper " + + // solventOutStream.getFlowRate("kg/hr") + " kg/hr"); + } + setCalculationIdentifier(id); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** - *

- * Setter for the field waterDewPointTemperature. - *

- * - * @param waterDewPointTemperature a double - * @param dewPressure a double - */ - public void setWaterDewPointTemperature(double waterDewPointTemperature, double dewPressure) { - this.waterDewPointTemperature = waterDewPointTemperature; - this.dewPressure = dewPressure; - } - - /** - *

- * Setter for the field gasOutStream. - *

- * - * @param gasOutStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public void setGasOutStream(StreamInterface gasOutStream) { - this.gasOutStream = gasOutStream; + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + SystemInterface thermoSystem = mixedStream.getThermoSystem(); + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.#####E0"); + + JDialog dialog = new JDialog(new JFrame(), "Results from TPflash"); + Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new FlowLayout()); + + thermoSystem.initPhysicalProperties(); + String[][] table = new String[50][5]; + String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; + table[0][0] = ""; + table[0][1] = ""; + table[0][2] = ""; + table[0][3] = ""; + StringBuffer buf = new StringBuffer(); + FieldPosition test = new FieldPosition(0); + + for (int i = 0; i < thermoSystem.getNumberOfPhases(); i++) { + for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { + table[j + 1][0] = thermoSystem.getPhases()[0].getComponents()[j].getName(); + buf = new StringBuffer(); + table[j + 1][i + 1] = + nf.format(thermoSystem.getPhases()[i].getComponents()[j].getx(), buf, test).toString(); + table[j + 1][4] = "[-]"; + } + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][0] = "Density"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][i + 1] = + nf.format(thermoSystem.getPhases()[i].getPhysicalProperties().getDensity(), buf, test) + .toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 2][4] = "[kg/m^3]"; + + // Double.longValue(thermoSystem.getPhases()[i].getBeta()); + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][0] = "PhaseFraction"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][i + 1] = + nf.format(thermoSystem.getPhases()[i].getBeta(), buf, test).toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][4] = "[-]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][0] = "MolarMass"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][i + 1] = + nf.format(thermoSystem.getPhases()[i].getMolarMass() * 1000, buf, test).toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][4] = "[kg/kmol]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][0] = "Cp"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][i + 1] = + nf.format((thermoSystem.getPhases()[i].getCp() + / (thermoSystem.getPhases()[i].getNumberOfMolesInPhase() + * thermoSystem.getPhases()[i].getMolarMass() * 1000)), + buf, test).toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][4] = "[kJ/kg*K]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][0] = "Viscosity"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][i + 1] = + nf.format((thermoSystem.getPhases()[i].getPhysicalProperties().getViscosity()), buf, test) + .toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][4] = "[kg/m*sec]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][0] = "Conductivity"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][i + 1] = nf + .format(thermoSystem.getPhases()[i].getPhysicalProperties().getConductivity(), buf, test) + .toString(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][4] = "[W/m*K]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][0] = "Pressure"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][i + 1] = + Double.toString(thermoSystem.getPhases()[i].getPressure()); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][4] = "[bar]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][0] = "Temperature"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][i + 1] = + Double.toString(thermoSystem.getPhases()[i].getTemperature()); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][4] = "[K]"; + Double.toString(thermoSystem.getPhases()[i].getTemperature()); + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][0] = "Stream"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][i + 1] = name; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][4] = "-"; } - /** - *

- * Getter for the field solventOutStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getSolventOutStream() { - return solventOutStream; - } - - /** - *

- * Setter for the field solventOutStream. - *

- * - * @param solventOutStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public void setSolventOutStream(StreamInterface solventOutStream) { - this.solventOutStream = solventOutStream; - } + JTable Jtab = new JTable(table, names); + JScrollPane scrollpane = new JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + dialog.pack(); + dialog.setVisible(true); + } + + /** + *

+ * Getter for the field waterDewPointTemperature. + *

+ * + * @return a double + */ + public double getWaterDewPointTemperature() { + return waterDewPointTemperature; + } + + /** + *

+ * Setter for the field waterDewPointTemperature. + *

+ * + * @param waterDewPointTemperature a double + * @param dewPressure a double + */ + public void setWaterDewPointTemperature(double waterDewPointTemperature, double dewPressure) { + this.waterDewPointTemperature = waterDewPointTemperature; + this.dewPressure = dewPressure; + } + + /** + *

+ * Setter for the field gasOutStream. + *

+ * + * @param gasOutStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void setGasOutStream(StreamInterface gasOutStream) { + this.gasOutStream = gasOutStream; + } + + /** + *

+ * Getter for the field solventOutStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getSolventOutStream() { + return solventOutStream; + } + + /** + *

+ * Setter for the field solventOutStream. + *

+ * + * @param solventOutStream a + * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public void setSolventOutStream(StreamInterface solventOutStream) { + this.solventOutStream = solventOutStream; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/adsorber/SimpleAdsorber.java b/src/main/java/neqsim/processSimulation/processEquipment/adsorber/SimpleAdsorber.java index ab76815249..870187ab20 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/adsorber/SimpleAdsorber.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/adsorber/SimpleAdsorber.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.processEquipment.adsorber; +import java.util.UUID; + import neqsim.processSimulation.mechanicalDesign.adsorber.AdsorberMechanicalDesign; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.stream.Stream; @@ -15,340 +17,346 @@ * @version $Id: $Id */ public class SimpleAdsorber extends ProcessEquipmentBaseClass { - private static final long serialVersionUID = 1000; - - boolean setTemperature = false; - String name = new String(); - StreamInterface[] outStream = new Stream[2]; - StreamInterface[] inStream = new Stream[2]; - SystemInterface system; - protected double temperatureOut = 0, dT = 0.0; - private int numberOfStages = 5; - private double numberOfTheoreticalStages = 3.0; - double absorptionEfficiency = 0.5; - private double HTU = 0.85; - private double NTU = 2.0; - private double stageEfficiency = 0.25; - - /** - *

- * Constructor for SimpleAdsorber. - *

- */ - @Deprecated - public SimpleAdsorber() { - this("SimpleAdsorber"); - } - - /** - *

- * Constructor for SimpleAdsorber. - *

- * - * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public SimpleAdsorber(StreamInterface inStream1) { - this("SimpleAdsorber"); - this.inStream[0] = inStream1; - this.inStream[1] = inStream1; - outStream[0] = (Stream) inStream1.clone(); - outStream[1] = (Stream) inStream1.clone(); - - SystemInterface systemOut1 = inStream1.getThermoSystem().clone(); - outStream[0].setThermoSystem(systemOut1); - - double molCO2 = - inStream1.getThermoSystem().getPhase(0).getComponent("CO2").getNumberOfmoles(); - System.out.println("mol CO2 " + molCO2); - SystemInterface systemOut0 = inStream1.getThermoSystem().clone(); - systemOut0.init(0); - systemOut0.addComponent("MDEA", molCO2 * absorptionEfficiency); - systemOut0.addComponent("water", molCO2 * absorptionEfficiency * 10.0); - systemOut0.chemicalReactionInit(); - systemOut0.createDatabase(true); - systemOut0.setMixingRule(4); - outStream[1].setThermoSystem(systemOut0); - outStream[1].run(); - } - - /** {@inheritDoc} */ - public SimpleAdsorber(String name) { - super(name); - } - - /** - *

- * Constructor for SimpleAdsorber. - *

- * - * @param name name of the unit operation - * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public SimpleAdsorber(String name, StreamInterface inStream1) { - this(name); - this.inStream[0] = inStream1; - this.inStream[1] = inStream1; - outStream[0] = (Stream) inStream1.clone(); - outStream[1] = (Stream) inStream1.clone(); - setName(name); - - SystemInterface systemOut1 = inStream1.getThermoSystem().clone(); - outStream[0].setThermoSystem(systemOut1); - - double molCO2 = - inStream1.getThermoSystem().getPhase(0).getComponent("CO2").getNumberOfmoles(); - System.out.println("mol CO2 " + molCO2); - SystemInterface systemOut0 = inStream1.getThermoSystem().clone(); - systemOut0.init(0); - systemOut0.addComponent("MDEA", molCO2 * absorptionEfficiency); - systemOut0.addComponent("water", molCO2 * absorptionEfficiency * 10.0); - systemOut0.chemicalReactionInit(); - systemOut0.createDatabase(true); - systemOut0.setMixingRule(4); - outStream[1].setThermoSystem(systemOut0); - outStream[1].run(); - } - - public AdsorberMechanicalDesign getMechanicalDesign() { - return new AdsorberMechanicalDesign(this); - } - - /** {@inheritDoc} */ - @Override - public void setName(String name) { - super.setName(name); - outStream[0].setName(name + "_Sout1"); - outStream[1].setName(name + "_Sout2"); - } - - /** - *

- * Setter for the field dT. - *

- * - * @param dT a double - */ - public void setdT(double dT) { - this.dT = dT; - } - - /** - *

- * Getter for the field outStream. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface getOutStream(int i) { - return outStream[i]; - } - - /** - *

- * setOutTemperature. - *

- * - * @param temperature a double - */ - public void setOutTemperature(double temperature) { - this.temperatureOut = temperature; - } - - /** - *

- * getOutTemperature. - *

- * - * @param i a int - */ - public void getOutTemperature(int i) { - outStream[i].getThermoSystem().getTemperature(); - } - - /** - *

- * getInTemperature. - *

- * - * @param i a int - */ - public void getInTemperature(int i) { - inStream[i].getThermoSystem().getTemperature(); - } - - /** {@inheritDoc} */ - @Override - public void run() { - SystemInterface systemOut1 = inStream[1].getThermoSystem().clone(); - outStream[0].setThermoSystem(systemOut1); - outStream[0].run(); - - outStream[1].run(); - - double error = 1e5; - error = absorptionEfficiency - (outStream[1].getThermoSystem().getPhase(1) - .getComponent("CO2").getNumberOfMolesInPhase() - + outStream[1].getThermoSystem().getPhase(1).getComponent("HCO3-") - .getNumberOfMolesInPhase()) - / (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA") - .getNumberOfMolesInPhase() - + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") - .getNumberOfMolesInPhase()); - int iter = 0; - do { - iter++; - double factor = (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA") - .getNumberOfMolesInPhase() - + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") - .getNumberOfMolesInPhase()); - // outStream[1].getThermoSystem().addComponent("CO2",(20.0-outStream[1].getThermoSystem().getPhase(0).getComponent("CO2").getNumberOfMolesInPhase()),0); - outStream[1].getThermoSystem().addComponent("MDEA", -error * factor); - outStream[1].getThermoSystem().addComponent("water", -error * 10.0 * factor); - outStream[1].run(); - error = absorptionEfficiency - ((outStream[1].getThermoSystem().getPhase(1) - .getComponent("CO2").getNumberOfMolesInPhase() - + outStream[1].getThermoSystem().getPhase(1).getComponent("HCO3-") - .getNumberOfMolesInPhase()) - / (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA") - .getNumberOfMolesInPhase() - + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") - .getNumberOfMolesInPhase())); - - System.out.println("error " + error); - } while (Math.abs(error) > 1e-4 && iter < 30 - && outStream[1].getThermoSystem().getPhase(1).getBeta() > 0 - && outStream[0].getThermoSystem().getPhase(1).getBeta() > 0); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - outStream[0].displayResult(); - outStream[1].displayResult(); - } - - /** - *

- * setAproachToEquilibrium. - *

- * - * @param eff a double - */ - public void setAproachToEquilibrium(double eff) { - this.absorptionEfficiency = eff; - } - - /** - *

- * Getter for the field numberOfTheoreticalStages. - *

- * - * @return a double - */ - public double getNumberOfTheoreticalStages() { - return numberOfTheoreticalStages; - } - - /** - *

- * Setter for the field numberOfTheoreticalStages. - *

- * - * @param numberOfTheoreticalStages a double - */ - public void setNumberOfTheoreticalStages(double numberOfTheoreticalStages) { - this.numberOfTheoreticalStages = numberOfTheoreticalStages; - } - - /** - *

- * Getter for the field numberOfStages. - *

- * - * @return a int - */ - public int getNumberOfStages() { - return numberOfStages; - } - - /** - *

- * Setter for the field numberOfStages. - *

- * - * @param numberOfStages a int - */ - public void setNumberOfStages(int numberOfStages) { - this.numberOfStages = numberOfStages; - } - - /** - *

- * Getter for the field stageEfficiency. - *

- * - * @return a double - */ - public double getStageEfficiency() { - return stageEfficiency; - } - - /** - *

- * Setter for the field stageEfficiency. - *

- * - * @param stageEfficiency a double - */ - public void setStageEfficiency(double stageEfficiency) { - this.stageEfficiency = stageEfficiency; - } - - /** - *

- * getHTU. - *

- * - * @return a double - */ - public double getHTU() { - return HTU; - } - - /** - *

- * setHTU. - *

- * - * @param HTU a double - */ - public void setHTU(double HTU) { - this.HTU = HTU; - } - - /** - *

- * getNTU. - *

- * - * @return a double - */ - public double getNTU() { - return NTU; - } - - /** - *

- * setNTU. - *

- * - * @param NTU a double - */ - public void setNTU(double NTU) { - this.NTU = NTU; - } + private static final long serialVersionUID = 1000; + + boolean setTemperature = false; + StreamInterface[] outStream = new Stream[2]; + StreamInterface[] inStream = new Stream[2]; + SystemInterface system; + protected double temperatureOut = 0; + + protected double dT = 0.0; + + private int numberOfStages = 5; + private double numberOfTheoreticalStages = 3.0; + double absorptionEfficiency = 0.5; + private double HTU = 0.85; + private double NTU = 2.0; + private double stageEfficiency = 0.25; + + /** + *

+ * Constructor for SimpleAdsorber. + *

+ */ + @Deprecated + public SimpleAdsorber() { + this("SimpleAdsorber"); + } + + /** + *

+ * Constructor for SimpleAdsorber. + *

+ * + * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public SimpleAdsorber(StreamInterface inStream1) { + this("SimpleAdsorber"); + this.inStream[0] = inStream1; + this.inStream[1] = inStream1; + outStream[0] = inStream1.clone(); + outStream[1] = inStream1.clone(); + + SystemInterface systemOut1 = inStream1.getThermoSystem().clone(); + outStream[0].setThermoSystem(systemOut1); + + double molCO2 = inStream1.getThermoSystem().getPhase(0).getComponent("CO2").getNumberOfmoles(); + System.out.println("mol CO2 " + molCO2); + SystemInterface systemOut0 = inStream1.getThermoSystem().clone(); + systemOut0.init(0); + systemOut0.addComponent("MDEA", molCO2 * absorptionEfficiency); + systemOut0.addComponent("water", molCO2 * absorptionEfficiency * 10.0); + systemOut0.chemicalReactionInit(); + systemOut0.createDatabase(true); + systemOut0.setMixingRule(4); + outStream[1].setThermoSystem(systemOut0); + outStream[1].run(); + } + + /** + * {@inheritDoc} + * + * @param name a {@link java.lang.String} object + */ + public SimpleAdsorber(String name) { + super(name); + } + + /** + *

+ * Constructor for SimpleAdsorber. + *

+ * + * @param name name of the unit operation + * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public SimpleAdsorber(String name, StreamInterface inStream1) { + this(name); + this.inStream[0] = inStream1; + this.inStream[1] = inStream1; + outStream[0] = inStream1.clone(); + outStream[1] = inStream1.clone(); + setName(name); + + SystemInterface systemOut1 = inStream1.getThermoSystem().clone(); + outStream[0].setThermoSystem(systemOut1); + + double molCO2 = inStream1.getThermoSystem().getPhase(0).getComponent("CO2").getNumberOfmoles(); + System.out.println("mol CO2 " + molCO2); + SystemInterface systemOut0 = inStream1.getThermoSystem().clone(); + systemOut0.init(0); + systemOut0.addComponent("MDEA", molCO2 * absorptionEfficiency); + systemOut0.addComponent("water", molCO2 * absorptionEfficiency * 10.0); + systemOut0.chemicalReactionInit(); + systemOut0.createDatabase(true); + systemOut0.setMixingRule(4); + outStream[1].setThermoSystem(systemOut0); + outStream[1].run(); + } + + /** {@inheritDoc} */ + @Override + public AdsorberMechanicalDesign getMechanicalDesign() { + return new AdsorberMechanicalDesign(this); + } + + /** {@inheritDoc} */ + @Override + public void setName(String name) { + super.setName(name); + outStream[0].setName(name + "_Sout1"); + outStream[1].setName(name + "_Sout2"); + } + + /** + *

+ * Setter for the field dT. + *

+ * + * @param dT a double + */ + public void setdT(double dT) { + this.dT = dT; + } + + /** + *

+ * Getter for the field outStream. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getOutStream(int i) { + return outStream[i]; + } + + /** + *

+ * setOutTemperature. + *

+ * + * @param temperature a double + */ + public void setOutTemperature(double temperature) { + this.temperatureOut = temperature; + } + + /** + *

+ * getOutTemperature. + *

+ * + * @param i a int + */ + public void getOutTemperature(int i) { + outStream[i].getThermoSystem().getTemperature(); + } + + /** + *

+ * getInTemperature. + *

+ * + * @param i a int + */ + public void getInTemperature(int i) { + inStream[i].getThermoSystem().getTemperature(); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + SystemInterface systemOut1 = inStream[1].getThermoSystem().clone(); + outStream[0].setThermoSystem(systemOut1); + outStream[0].run(id); + outStream[1].run(id); + + double error = 1e5; + error = absorptionEfficiency - (outStream[1].getThermoSystem().getPhase(1).getComponent("CO2") + .getNumberOfMolesInPhase() + + outStream[1].getThermoSystem().getPhase(1).getComponent("HCO3-") + .getNumberOfMolesInPhase()) + / (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA").getNumberOfMolesInPhase() + + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") + .getNumberOfMolesInPhase()); + int iter = 0; + do { + iter++; + double factor = + (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA").getNumberOfMolesInPhase() + + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") + .getNumberOfMolesInPhase()); + // outStream[1].getThermoSystem().addComponent("CO2",(20.0-outStream[1].getThermoSystem().getPhase(0).getComponent("CO2").getNumberOfMolesInPhase()),0); + outStream[1].getThermoSystem().addComponent("MDEA", -error * factor); + outStream[1].getThermoSystem().addComponent("water", -error * 10.0 * factor); + outStream[1].run(id); + error = absorptionEfficiency - ((outStream[1].getThermoSystem().getPhase(1) + .getComponent("CO2").getNumberOfMolesInPhase() + + outStream[1].getThermoSystem().getPhase(1).getComponent("HCO3-") + .getNumberOfMolesInPhase()) + / (outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA") + .getNumberOfMolesInPhase() + + outStream[1].getThermoSystem().getPhase(1).getComponent("MDEA+") + .getNumberOfMolesInPhase())); + + System.out.println("error " + error); + } while (Math.abs(error) > 1e-4 && iter < 30 + && outStream[1].getThermoSystem().getPhase(1).getBeta() > 0 + && outStream[0].getThermoSystem().getPhase(1).getBeta() > 0); + outStream[1].setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + outStream[0].displayResult(); + outStream[1].displayResult(); + } + + /** + *

+ * setAproachToEquilibrium. + *

+ * + * @param eff a double + */ + public void setAproachToEquilibrium(double eff) { + this.absorptionEfficiency = eff; + } + + /** + *

+ * Getter for the field numberOfTheoreticalStages. + *

+ * + * @return a double + */ + public double getNumberOfTheoreticalStages() { + return numberOfTheoreticalStages; + } + + /** + *

+ * Setter for the field numberOfTheoreticalStages. + *

+ * + * @param numberOfTheoreticalStages a double + */ + public void setNumberOfTheoreticalStages(double numberOfTheoreticalStages) { + this.numberOfTheoreticalStages = numberOfTheoreticalStages; + } + + /** + *

+ * Getter for the field numberOfStages. + *

+ * + * @return a int + */ + public int getNumberOfStages() { + return numberOfStages; + } + + /** + *

+ * Setter for the field numberOfStages. + *

+ * + * @param numberOfStages a int + */ + public void setNumberOfStages(int numberOfStages) { + this.numberOfStages = numberOfStages; + } + + /** + *

+ * Getter for the field stageEfficiency. + *

+ * + * @return a double + */ + public double getStageEfficiency() { + return stageEfficiency; + } + + /** + *

+ * Setter for the field stageEfficiency. + *

+ * + * @param stageEfficiency a double + */ + public void setStageEfficiency(double stageEfficiency) { + this.stageEfficiency = stageEfficiency; + } + + /** + *

+ * getHTU. + *

+ * + * @return a double + */ + public double getHTU() { + return HTU; + } + + /** + *

+ * setHTU. + *

+ * + * @param HTU a double + */ + public void setHTU(double HTU) { + this.HTU = HTU; + } + + /** + *

+ * getNTU. + *

+ * + * @return a double + */ + public double getNTU() { + return NTU; + } + + /** + *

+ * setNTU. + *

+ * + * @param NTU a double + */ + public void setNTU(double NTU) { + this.NTU = NTU; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/AntiSurge.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/AntiSurge.java index f9d466afda..e2c3f68e14 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/compressor/AntiSurge.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/AntiSurge.java @@ -3,109 +3,127 @@ import java.util.Objects; /** - *

AntiSurge class.

+ *

+ * AntiSurge class. + *

* * @author asmund * @version $Id: $Id */ public class AntiSurge implements java.io.Serializable { - private static final long serialVersionUID = 1000; - private boolean isActive = false; - private boolean isSurge = false; - private double surgeControlFactor = 1.05; - private double currentSurgeFraction = 0.0; + private static final long serialVersionUID = 1000; + private boolean isActive = false; + private boolean isSurge = false; + private double surgeControlFactor = 1.05; + private double currentSurgeFraction = 0.0; - /** - *

isActive.

- * - * @return a boolean - */ - public boolean isActive() { - return isActive; - } + /** + *

+ * isActive. + *

+ * + * @return a boolean + */ + public boolean isActive() { + return isActive; + } - /** - *

setActive.

- * - * @param isActive a boolean - */ - public void setActive(boolean isActive) { - this.isActive = isActive; - } + /** + *

+ * setActive. + *

+ * + * @param isActive a boolean + */ + public void setActive(boolean isActive) { + this.isActive = isActive; + } - /** - *

isSurge.

- * - * @return a boolean - */ - public boolean isSurge() { - return isSurge; - } + /** + *

+ * isSurge. + *

+ * + * @return a boolean + */ + public boolean isSurge() { + return isSurge; + } - /** - *

setSurge.

- * - * @param isSurge a boolean - */ - public void setSurge(boolean isSurge) { - this.isSurge = isSurge; - } + /** + *

+ * setSurge. + *

+ * + * @param isSurge a boolean + */ + public void setSurge(boolean isSurge) { + this.isSurge = isSurge; + } - /** - *

Getter for the field surgeControlFactor.

- * - * @return a double - */ - public double getSurgeControlFactor() { - return surgeControlFactor; - } + /** + *

+ * Getter for the field surgeControlFactor. + *

+ * + * @return a double + */ + public double getSurgeControlFactor() { + return surgeControlFactor; + } - /** - *

Setter for the field surgeControlFactor.

- * - * @param antiSurgeSafetyFactor a double - */ - public void setSurgeControlFactor(double antiSurgeSafetyFactor) { - this.surgeControlFactor = antiSurgeSafetyFactor; - } + /** + *

+ * Setter for the field surgeControlFactor. + *

+ * + * @param antiSurgeSafetyFactor a double + */ + public void setSurgeControlFactor(double antiSurgeSafetyFactor) { + this.surgeControlFactor = antiSurgeSafetyFactor; + } - /** - *

Getter for the field currentSurgeFraction.

- * - * @return a double - */ - public double getCurrentSurgeFraction() { - return currentSurgeFraction; - } + /** + *

+ * Getter for the field currentSurgeFraction. + *

+ * + * @return a double + */ + public double getCurrentSurgeFraction() { + return currentSurgeFraction; + } - /** - *

Setter for the field currentSurgeFraction.

- * - * @param currentSurgeFraction a double - */ - public void setCurrentSurgeFraction(double currentSurgeFraction) { - this.currentSurgeFraction = currentSurgeFraction; - } + /** + *

+ * Setter for the field currentSurgeFraction. + *

+ * + * @param currentSurgeFraction a double + */ + public void setCurrentSurgeFraction(double currentSurgeFraction) { + this.currentSurgeFraction = currentSurgeFraction; + } - /** {@inheritDoc} */ - @Override - public int hashCode() { - return Objects.hash(currentSurgeFraction, isActive, isSurge, surgeControlFactor); - } + /** {@inheritDoc} */ + @Override + public int hashCode() { + return Objects.hash(currentSurgeFraction, isActive, isSurge, surgeControlFactor); + } - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - AntiSurge other = (AntiSurge) obj; - return Double.doubleToLongBits(currentSurgeFraction) == Double - .doubleToLongBits(other.currentSurgeFraction) && isActive == other.isActive - && isSurge == other.isSurge && Double.doubleToLongBits(surgeControlFactor) == Double - .doubleToLongBits(other.surgeControlFactor); - } + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + AntiSurge other = (AntiSurge) obj; + return Double.doubleToLongBits(currentSurgeFraction) == Double + .doubleToLongBits(other.currentSurgeFraction) && isActive == other.isActive + && isSurge == other.isSurge && Double.doubleToLongBits(surgeControlFactor) == Double + .doubleToLongBits(other.surgeControlFactor); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/Compressor.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/Compressor.java index eba4275f0f..e4b217beb1 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/compressor/Compressor.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/Compressor.java @@ -5,15 +5,18 @@ import java.text.DecimalFormat; import java.text.FieldPosition; import java.util.Objects; +import java.util.UUID; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import com.google.gson.GsonBuilder; import neqsim.processSimulation.mechanicalDesign.compressor.CompressorMechanicalDesign; import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.util.monitor.CompressorResponse; import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -29,21 +32,28 @@ public class Compressor extends TwoPortEquipment implements CompressorInterface { private static final long serialVersionUID = 1000; static Logger logger = LogManager.getLogger(Compressor.class); + public SystemInterface thermoSystem; private double outTemperature = 298.15; private boolean useOutTemperature = false; + private double compressionRatio = 2.0; + private boolean useCompressionRatio = false; private CompressorPropertyProfile propertyProfile = new CompressorPropertyProfile(); public double dH = 0.0; public double inletEnthalpy = 0; public double pressure = 0.0; - private int speed = 3000; - public double isentropicEfficiency = 1.0, polytropicEfficiency = 1.0; + private double speed = 3000; + private double maxspeed = 30000; + private double minspeed = 0; + public double isentropicEfficiency = 1.0; + public double polytropicEfficiency = 1.0; public boolean usePolytropicCalc = false; public boolean powerSet = false; private CompressorChartInterface compressorChart = new CompressorChart(); private AntiSurge antiSurge = new AntiSurge(); private double polytropicHead = 0; - private double polytropicFluidHead = 0, polytropicHeadMeter = 0.0; + private double polytropicFluidHead = 0; + private double polytropicHeadMeter = 0.0; private double polytropicExponent = 0; private int numberOfCompressorCalcSteps = 40; private boolean useRigorousPolytropicMethod = false; @@ -87,7 +97,11 @@ public Compressor(boolean interpolateMapLookup) { this("Compressor", interpolateMapLookup); } - /** {@inheritDoc} */ + /** + * Constructor for Compressor. + * + * @param name Name of compressor + */ public Compressor(String name) { super(name); } @@ -111,7 +125,7 @@ public Compressor(String name, StreamInterface inletStream) { * Constructor for Compressor. *

* - * @param name name of compressor + * @param name Name of compressor * @param interpolateMapLookup a boolean */ public Compressor(String name, boolean interpolateMapLookup) { @@ -122,17 +136,13 @@ public Compressor(String name, boolean interpolateMapLookup) { } /** {@inheritDoc} */ + @Override public CompressorMechanicalDesign getMechanicalDesign() { return new CompressorMechanicalDesign(this); } - /** - *

- * Create deep copy. - *

- * - * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object - */ + /** {@inheritDoc} */ + @Override public Compressor copy() { return (Compressor) super.copy(); } @@ -143,8 +153,8 @@ public void setInletStream(StreamInterface inletStream) { this.inStream = inletStream; try { this.outStream = inletStream.clone(); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } @@ -178,13 +188,8 @@ public void setOutletPressure(double pressure, String unit) { this.pressureUnit = unit; } - /** - *

- * getOutletPressure. - *

- * - * @return a double - */ + /** {@inheritDoc} */ + @Override public double getOutletPressure() { return pressure; } @@ -237,15 +242,18 @@ public void setPower(double p) { } /** - * Calculates polytropic or isentropic efficiency + * Calculates polytropic or isentropic efficiency. * * @param outTemperature a double * @return a double */ public double solveEfficiency(double outTemperature) { - double funk = 0.0, funkOld = 0.0; + double funk = 0.0; + double funkOld = 0.0; double newPoly; - double dfunkdPoly = 100.0, dPoly = 100.0, oldPoly = outTemperature; + double dfunkdPoly = 100.0; + double dPoly = 100.0; + double oldPoly = outTemperature; useOutTemperature = false; run(); useOutTemperature = true; @@ -304,8 +312,20 @@ public double findOutPressure(double hinn, double hout, double polytropicEfficie /** {@inheritDoc} */ @Override - public void run() { + public void run(UUID id) { thermoSystem = inStream.getThermoSystem().clone(); + + if (Math.abs(pressure - thermoSystem.getPressure(pressureUnit)) < 1e-6 + && !compressorChart.isUseCompressorChart()) { + thermoSystem.initProperties(); + outStream.setThermoSystem(getThermoSystem()); + outStream.setCalculationIdentifier(id); + dH = 0.0; + polytropicFluidHead = 0.0; + polytropicHeadMeter = 0.0; + return; + } + ThermodynamicOperations thermoOps = new ThermodynamicOperations(getThermoSystem()); thermoOps = new ThermodynamicOperations(getThermoSystem()); getThermoSystem().init(3); @@ -315,7 +335,7 @@ public void run() { double densInn = getThermoSystem().getDensity(); double entropy = getThermoSystem().getEntropy(); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { double[] gergProps; gergProps = getThermoSystem().getPhase(0).getProperties_GERG2008(); hinn = gergProps[7] * getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); @@ -328,6 +348,9 @@ public void run() { double orginalMolarFLow = thermoSystem.getTotalNumberOfMoles(); double fractionAntiSurge = 0.0; double kappa = 0.0; + if (useCompressionRatio) { + setOutletPressure(presinn * compressionRatio); + } if (useOutTemperature) { if (useRigorousPolytropicMethod) { solveEfficiency(outTemperature); @@ -341,13 +364,13 @@ public void run() { double MW = thermoSystem.getMolarMass(); thermoSystem.setPressure(getOutletPressure(), pressureUnit); thermoOps.PSflash(entropy); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { thermoOps.PSflashGERG2008(entropy); } thermoSystem.initPhysicalProperties("density"); double densOutIsentropic = thermoSystem.getDensity("kg/m3"); double enthalpyOutIsentropic = thermoSystem.getEnthalpy(); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { double[] gergProps; gergProps = getThermoSystem().getPhase(0).getProperties_GERG2008(); densOutIsentropic = getThermoSystem().getPhase(0).getDensity_GERG2008(); @@ -360,7 +383,7 @@ public void run() { thermoSystem.initPhysicalProperties("density"); double outEnthalpy = thermoSystem.getEnthalpy(); double densOut = thermoSystem.getDensity("kg/m3"); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { double[] gergProps; gergProps = getThermoSystem().getPhase(0).getProperties_GERG2008(); outEnthalpy = gergProps[7] * getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); @@ -385,7 +408,6 @@ public void run() { isentropicEfficiency = (enthalpyOutIsentropic - inletEnthalpy) / dH; // isentropicEfficiency = (getThermoSystem().getEnthalpy() - hinn) / dH; - double k = Math.log(getOutletPressure() / presinn) / Math.log(densOutIsentropic / densInn); double term1 = Math.pow(getOutletPressure() / presinn, (n - 1.0) / n) - 1.0; double term2 = n / (n - 1.0) * (k - 1.0) / k; @@ -406,7 +428,8 @@ public void run() { } } outStream.setThermoSystem(getThermoSystem()); - + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); return; } } @@ -421,7 +444,7 @@ public void run() { } else { kappa = thermoSystem.getGamma2(); } - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { double[] gergProps; gergProps = getThermoSystem().getPhase(0).getProperties_GERG2008(); actualFlowRate *= gergProps[1] / z_inlet; @@ -443,9 +466,11 @@ public void run() { polytropicFluidHead = polytropicHead; polytropicHeadMeter = polytropicHead * 1000.0 / 9.81; } - double pressureRatio = Math.pow((polytropicFluidHead * 1000.0 - + (n / (n - 1.0) * z_inlet * 8.314 * (temperature_inlet) / MW)) - / (n / (n - 1.0) * z_inlet * 8.314 * (temperature_inlet) / MW), n / (n - 1.0)); + double pressureRatio = Math.pow((polytropicFluidHead * 1000.0 + (n / (n - 1.0) * z_inlet + * ThermodynamicConstantsInterface.R * (temperature_inlet) / MW)) + / (n / (n - 1.0) * z_inlet * ThermodynamicConstantsInterface.R * (temperature_inlet) + / MW), + n / (n - 1.0)); setOutletPressure(thermoSystem.getPressure() * pressureRatio); if (getAntiSurge().isActive()) { logger.info("surge flow " @@ -478,18 +503,18 @@ public void run() { thermoSystem.setPressure(pressure, pressureUnit); thermoOps = new ThermodynamicOperations(getThermoSystem()); thermoOps.PHflash(hout, 0); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { thermoOps.PHflashGERG2008(hout); } } else { if (polytropicMethod.equals("detailed")) { - // todo add detailed output of compressor calculations + // TODO: add detailed output of compressor calculations int numbersteps = numberOfCompressorCalcSteps; double dp = (pressure - getThermoSystem().getPressure()) / (1.0 * numbersteps); for (int i = 0; i < numbersteps; i++) { entropy = getThermoSystem().getEntropy(); hinn = getThermoSystem().getEnthalpy(); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { double[] gergProps; gergProps = getThermoSystem().getPhase(0).getProperties_GERG2008(); hinn = gergProps[7] * getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); @@ -497,7 +522,7 @@ public void run() { } getThermoSystem().setPressure(getThermoSystem().getPressure() + dp, pressureUnit); thermoOps = new ThermodynamicOperations(getThermoSystem()); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { thermoOps.PSflashGERG2008(entropy); } else { double oleTemp = getThermoSystem().getTemperature(); @@ -510,14 +535,14 @@ public void run() { } } double newEnt = getThermoSystem().getEnthalpy(); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { double[] gergProps; gergProps = getThermoSystem().getPhase(0).getProperties_GERG2008(); newEnt = gergProps[7] * getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); } double hout = hinn + (newEnt - hinn) / polytropicEfficiency; thermoOps.PHflash(hout, 0); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { thermoOps.PHflashGERG2008(hout); } if (propertyProfile.isActive()) { @@ -535,7 +560,7 @@ public void run() { thermoSystem.initProperties(); double densOutIsentropic = thermoSystem.getDensity("kg/m3"); double enthalpyOutIsentropic = thermoSystem.getEnthalpy(); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { thermoOps.PSflashGERG2008(entropy); double[] gergProps; gergProps = getThermoSystem().getPhase(0).getProperties_GERG2008(); @@ -557,7 +582,7 @@ public void run() { double hout = hinn + dH; thermoOps = new ThermodynamicOperations(getThermoSystem()); thermoOps.PHflash(hout, 0); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { thermoOps.PHflashGERG2008(hout); } } else { @@ -566,7 +591,7 @@ public void run() { thermoSystem.initProperties(); double densOutIsentropic = thermoSystem.getDensity("kg/m3"); double enthalpyOutIsentropic = thermoSystem.getEnthalpy(); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { thermoOps.PSflashGERG2008(entropy); double[] gergProps; gergProps = getThermoSystem().getPhase(0).getProperties_GERG2008(); @@ -585,7 +610,7 @@ public void run() { double hout = hinn + dH; thermoOps = new ThermodynamicOperations(getThermoSystem()); thermoOps.PHflash(hout, 0); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { thermoOps.PHflashGERG2008(hout); } } @@ -595,14 +620,14 @@ public void run() { // System.out.println("entropy inn.." + entropy); thermoOps = new ThermodynamicOperations(getThermoSystem()); thermoOps.PSflash(entropy); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { thermoOps.PSflashGERG2008(entropy); } // double densOutIdeal = getThermoSystem().getDensity(); double newEnt = getThermoSystem().getEnthalpy(); if (!powerSet) { dH = (getThermoSystem().getEnthalpy() - hinn) / isentropicEfficiency; - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { double[] gergProps; gergProps = getThermoSystem().getPhase(0).getProperties_GERG2008(); newEnt = gergProps[7] * getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); @@ -611,10 +636,13 @@ public void run() { } double hout = hinn + dH; isentropicEfficiency = (newEnt - hinn) / dH; + // TODO: the polytropic efficiency calculation here need to be corrected, it is always larger + // than isentropic efficiency + polytropicEfficiency = isentropicEfficiency; dH = hout - hinn; thermoOps = new ThermodynamicOperations(getThermoSystem()); thermoOps.PHflash(hout, 0); - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { thermoOps.PHflashGERG2008(hout); } } @@ -626,10 +654,57 @@ public void run() { } thermoSystem.initProperties(); outStream.setThermoSystem(getThermoSystem()); + outStream.setCalculationIdentifier(id); polytropicFluidHead = getPower() / getThermoSystem().getFlowRate("kg/sec") / 1000.0 * getPolytropicEfficiency(); polytropicHeadMeter = polytropicFluidHead * 1000.0 / 9.81; + compressionRatio = getOutletPressure() / presinn; + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void runTransient(double dt, UUID id) { + if (getCalculateSteadyState()) { + run(id); + increaseTime(dt); + return; + } + runController(dt, id); + + inStream.getThermoSystem().init(3); + outStream.getThermoSystem().init(3); + double head = (outStream.getThermoSystem().getEnthalpy("kJ/kg") + - inStream.getThermoSystem().getEnthalpy("kJ/kg")); + double guessFlow = inStream.getFluid().getFlowRate("m3/hr"); + double actualFlowRateNew = getCompressorChart().getFlow(head, getSpeed(), guessFlow); + if (actualFlowRateNew < 0.0 || Double.isNaN(actualFlowRateNew)) { + logger.error( + "actual flow rate is negative or NaN and would lead to failure of calculation: actual flow rate " + + actualFlowRateNew); + } + inStream.setFlowRate(actualFlowRateNew, "Am3/hr"); + + inStream.getThermoSystem().init(3); + inStream.getThermoSystem().initPhysicalProperties("density"); + inStream.run(id); + inStream.getThermoSystem().init(3); + + outStream.setFlowRate(inStream.getFlowRate("kg/hr"), "kg/hr"); + outStream.run(); + outStream.getThermoSystem().init(3); + + inletEnthalpy = inStream.getFluid().getEnthalpy(); + thermoSystem = outStream.getThermoSystem().clone(); + thermoSystem.initPhysicalProperties("density"); + + polytropicEfficiency = + compressorChart.getPolytropicEfficiency(inStream.getFlowRate("m3/hr"), speed) / 100.0; + polytropicFluidHead = head * polytropicEfficiency; + dH = polytropicFluidHead * 1000.0 * thermoSystem.getMolarMass() / getPolytropicEfficiency() + * inStream.getThermoSystem().getTotalNumberOfMoles(); + setCalculationIdentifier(id); } /** @@ -811,13 +886,14 @@ public double getTotalWork() { if (getAntiSurge().isActive()) { multi = 1.0 + getAntiSurge().getCurrentSurgeFraction(); } - if (useGERG2008 && thermoSystem.getNumberOfPhases() == 1) { + if (useGERG2008 && inStream.getThermoSystem().getNumberOfPhases() == 1) { double[] gergProps; gergProps = getThermoSystem().getPhase(0).getProperties_GERG2008(); double enth = gergProps[7] * getThermoSystem().getPhase(0).getNumberOfMolesInPhase(); return (enth - inletEnthalpy) * multi; - } else + } else { return multi * (getThermoSystem().getEnthalpy() - inletEnthalpy); + } } /** {@inheritDoc} */ @@ -916,6 +992,14 @@ public boolean isSurge(double flow, double head) { return getAntiSurge().isSurge(); } + /** {@inheritDoc} */ + @Override + public double getDistanceToSurge() { + return (getInletStream().getFlowRate("m3/hr") + - getCompressorChart().getSurgeCurve().getSurgeFlow(getPolytropicFluidHead())) + / getCompressorChart().getSurgeCurve().getSurgeFlow(getPolytropicFluidHead()); + } + /** *

* isStoneWall. @@ -946,9 +1030,9 @@ public void setAntiSurge(AntiSurge antiSurge) { * Getter for the field speed. *

* - * @return a int + * @return a double */ - public int getSpeed() { + public double getSpeed() { return speed; } @@ -959,7 +1043,7 @@ public int getSpeed() { * * @param speed a int */ - public void setSpeed(int speed) { + public void setSpeed(double speed) { this.speed = speed; } @@ -972,12 +1056,13 @@ public void setSpeed(int speed) { * @return a double */ public double getPolytropicHead(String unit) { - if (unit.equals("kJ/kg")) + if (unit.equals("kJ/kg")) { return polytropicFluidHead; - else if (unit.equals("meter")) + } else if (unit.equals("meter")) { return polytropicHeadMeter; - else + } else { return polytropicHead; + } } /** @@ -1043,10 +1128,11 @@ public void setPolytropicHeadMeter(double polytropicHeadMeter) { * @return a double */ public double getOutTemperature() { - if (useOutTemperature) + if (useOutTemperature) { return outTemperature; - else + } else { return getThermoSystem().getTemperature(); + } } /** @@ -1172,8 +1258,8 @@ public void setPolytropicMethod(String polytropicMethod) { } /** - * Getter for property useGERG2008 - * + * Getter for property useGERG2008. + * * @return Value */ public boolean isUseGERG2008() { @@ -1181,22 +1267,63 @@ public boolean isUseGERG2008() { } /** - * Setter for property useGERG2008 - * + * Setter for property useGERG2008. + * * @param useGERG2008 Value to set */ public void setUseGERG2008(boolean useGERG2008) { this.useGERG2008 = useGERG2008; } + /** + *

+ * Getter for the field propertyProfile. + *

+ * + * @return a + * {@link neqsim.processSimulation.processEquipment.compressor.CompressorPropertyProfile} + * object + */ public CompressorPropertyProfile getPropertyProfile() { return propertyProfile; } + /** + *

+ * Setter for the field propertyProfile. + *

+ * + * @param propertyProfile a + * {@link neqsim.processSimulation.processEquipment.compressor.CompressorPropertyProfile} + * object + */ public void setPropertyProfile(CompressorPropertyProfile propertyProfile) { this.propertyProfile = propertyProfile; } + /** + *

+ * runController. + *

+ * + * @param dt a double + * @param id Calculation identifier + */ + public void runController(double dt, UUID id) { + if (hasController && getController().isActive()) { + getController().runTransient(this.speed, dt, id); + this.speed = getController().getResponse(); + if (this.speed > maxspeed) { + this.speed = maxspeed; + } + if (this.speed < minspeed) { + this.speed = minspeed; + } + // System.out.println("valve opening " + this.percentValveOpening + " %"); + } + setCalculationIdentifier(id); + } + /** {@inheritDoc} */ @Override public int hashCode() { @@ -1214,12 +1341,15 @@ public int hashCode() { /** {@inheritDoc} */ @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (!super.equals(obj)) + } + if (!super.equals(obj)) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } Compressor other = (Compressor) obj; return Objects.equals(antiSurge, other.antiSurge) && Objects.equals(compressorChart, other.compressorChart) @@ -1248,4 +1378,57 @@ public boolean equals(Object obj) { && usePolytropicCalc == other.usePolytropicCalc && useRigorousPolytropicMethod == other.useRigorousPolytropicMethod; } + + /** {@inheritDoc} */ + @Override + public void setMaximumSpeed(double maxSpeed) { + this.maxspeed = maxSpeed; + } + + /** {@inheritDoc} */ + @Override + public void setMinimumSpeed(double minspeed) { + this.minspeed = minspeed; + } + + /** {@inheritDoc} */ + @Override + public double getMaximumSpeed() { + return maxspeed; + } + + /** {@inheritDoc} */ + @Override + public double getMinimumSpeed() { + return minspeed; + } + + /** + *

+ * Setter for the field compressionRatio. + *

+ * + * @param compRatio a double + */ + public void setCompressionRatio(double compRatio) { + this.compressionRatio = compRatio; + useCompressionRatio = true; + } + + /** + *

+ * Getter for the field compressionRatio. + *

+ * + * @return a double + */ + public double getCompressionRatio() { + return compressionRatio; + } + + /** {@inheritDoc} */ + @Override + public String toJson() { + return new GsonBuilder().create().toJson(new CompressorResponse(this)); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChart.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChart.java index 439dc220f0..fd48aba400 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChart.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChart.java @@ -18,367 +18,437 @@ * @version $Id: $Id */ public class CompressorChart implements CompressorChartInterface, java.io.Serializable { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(CompressorChart.class); - ArrayList chartValues = new ArrayList(); - private SurgeCurve surgeCurve = new SurgeCurve(); - private StoneWallCurve stoneWallCurve = new StoneWallCurve(); - boolean isSurge = false; - double maxSpeedCurve = 0; - double minSpeedCurve = 1e10; - boolean isStoneWall = false; - double refMW; - private String headUnit = "meter"; - private boolean useCompressorChart = false; - double refTemperature; - double refPressure; - double referenceSpeed = 1000.0; - double refZ; - private boolean useRealKappa = false; - double[] chartConditions = null; - final WeightedObservedPoints reducedHeadFitter = new WeightedObservedPoints(); - final WeightedObservedPoints reducedFlowFitter = new WeightedObservedPoints(); - final WeightedObservedPoints fanLawCorrectionFitter = new WeightedObservedPoints(); - final WeightedObservedPoints reducedPolytropicEfficiencyFitter = new WeightedObservedPoints(); - PolynomialFunction reducedHeadFitterFunc = null; - PolynomialFunction reducedPolytropicEfficiencyFunc = null; - PolynomialFunction fanLawCorrectionFunc = null; - double[] speed; - double[][] flow; - double[][] head; - double[][] polytropicEfficiency; - double[][] redflow; - double[][] redhead; - double[][] redpolytropicEfficiency; - - /** - *

- * Constructor for CompressorChart. - *

- */ - public CompressorChart() {} - - /** {@inheritDoc} */ - @Override - public void addCurve(double speed, double[] flow, double[] head, - double[] polytropicEfficiency) { - CompressorCurve curve = new CompressorCurve(speed, flow, head, polytropicEfficiency); - chartValues.add(curve); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(CompressorChart.class); + + ArrayList chartValues = new ArrayList(); + private SurgeCurve surgeCurve = new SurgeCurve(); + private StoneWallCurve stoneWallCurve = new StoneWallCurve(); + boolean isSurge = false; + double maxSpeedCurve = 0; + double minSpeedCurve = 1e10; + boolean isStoneWall = false; + double refMW; + private String headUnit = "meter"; + private boolean useCompressorChart = false; + double refTemperature; + double refPressure; + double referenceSpeed = 1000.0; + double refZ; + private boolean useRealKappa = false; + double[] chartConditions = null; + final WeightedObservedPoints reducedHeadFitter = new WeightedObservedPoints(); + final WeightedObservedPoints reducedFlowFitter = new WeightedObservedPoints(); + final WeightedObservedPoints fanLawCorrectionFitter = new WeightedObservedPoints(); + final WeightedObservedPoints reducedPolytropicEfficiencyFitter = new WeightedObservedPoints(); + PolynomialFunction reducedHeadFitterFunc = null; + PolynomialFunction reducedPolytropicEfficiencyFunc = null; + PolynomialFunction fanLawCorrectionFunc = null; + double[] speed; + double[][] flow; + double[][] head; + double[][] polytropicEfficiency; + double[][] redflow; + double[][] redhead; + double[][] redpolytropicEfficiency; + + /** + *

+ * Constructor for CompressorChart. + *

+ */ + public CompressorChart() {} + + /** {@inheritDoc} */ + @Override + public void addCurve(double speed, double[] flow, double[] head, double[] polytropicEfficiency) { + CompressorCurve curve = new CompressorCurve(speed, flow, head, polytropicEfficiency); + chartValues.add(curve); + } + + /** {@inheritDoc} */ + @Override + public void setCurves(double[] chartConditions, double[] speed, double[][] flow, double[][] head, + double[][] polyEff) { + this.speed = speed; + this.head = head; + this.polytropicEfficiency = polyEff; + this.flow = flow; + + this.redhead = new double[head.length][head[0].length]; + this.redpolytropicEfficiency = new double[polyEff.length][polyEff[0].length]; + this.redflow = new double[flow.length][flow[0].length]; + + for (int i = 0; i < speed.length; i++) { + if (speed[i] > maxSpeedCurve) { + maxSpeedCurve = speed[i]; + } + if (speed[i] < minSpeedCurve) { + minSpeedCurve = speed[i]; + } + CompressorCurve curve = new CompressorCurve(speed[i], flow[i], head[i], polyEff[i]); + chartValues.add(curve); + for (int j = 0; j < flow[i].length; j++) { + redflow[i][j] = flow[i][j] / speed[i]; + redpolytropicEfficiency[i][j] = polyEff[i][j]; + redhead[i][j] = head[i][j] / speed[i] / speed[i]; + reducedHeadFitter.add(redflow[i][j], redhead[i][j]); + reducedPolytropicEfficiencyFitter.add(redflow[i][j], redpolytropicEfficiency[i][j]); + double flowFanLaw = flow[i][j] * speed[i] / speed[0]; + // TODO: MLLU: not correct. speed[0] should be the requested speed + fanLawCorrectionFitter.add(speed[i] / speed[0], flow[i][j] / flowFanLaw); + } } - /** {@inheritDoc} */ - @Override - public void setCurves(double[] chartConditions, double[] speed, double[][] flow, - double[][] head, double[][] polyEff) { - this.speed = speed; - this.head = head; - this.polytropicEfficiency = polyEff; - this.flow = flow; - - this.redhead = new double[head.length][head[0].length]; - this.redpolytropicEfficiency = new double[polyEff.length][polyEff[0].length]; - this.redflow = new double[flow.length][flow[0].length]; - - for (int i = 0; i < speed.length; i++) { - if (speed[i] > maxSpeedCurve) - maxSpeedCurve = speed[i]; - if (speed[i] < minSpeedCurve) - minSpeedCurve = speed[i]; - CompressorCurve curve = new CompressorCurve(speed[i], flow[i], head[i], polyEff[i]); - chartValues.add(curve); - for (int j = 0; j < flow[i].length; j++) { - redflow[i][j] = flow[i][j] / speed[i]; - redpolytropicEfficiency[i][j] = polyEff[i][j]; - redhead[i][j] = head[i][j] / speed[i] / speed[i]; - reducedHeadFitter.add(redflow[i][j], redhead[i][j]); - reducedPolytropicEfficiencyFitter.add(redflow[i][j], redpolytropicEfficiency[i][j]); - double flowFanLaw = flow[i][j] * speed[i] / speed[0]; // MLLU: not correct. speed[0] - // should be the - // requested speed - fanLawCorrectionFitter.add(speed[i] / speed[0], flow[i][j] / flowFanLaw); - } - } - - referenceSpeed = (maxSpeedCurve + minSpeedCurve) / 2.0; - - PolynomialCurveFitter fitter = PolynomialCurveFitter.create(2); - - reducedHeadFitterFunc = new PolynomialFunction(fitter.fit(reducedHeadFitter.toList())); - reducedPolytropicEfficiencyFunc = - new PolynomialFunction(fitter.fit(reducedPolytropicEfficiencyFitter.toList())); - fanLawCorrectionFunc = new PolynomialFunction(fitter.fit(fanLawCorrectionFitter.toList())); - setUseCompressorChart(true); + referenceSpeed = (maxSpeedCurve + minSpeedCurve) / 2.0; + + PolynomialCurveFitter fitter = PolynomialCurveFitter.create(2); + + reducedHeadFitterFunc = new PolynomialFunction(fitter.fit(reducedHeadFitter.toList())); + reducedPolytropicEfficiencyFunc = + new PolynomialFunction(fitter.fit(reducedPolytropicEfficiencyFitter.toList())); + fanLawCorrectionFunc = new PolynomialFunction(fitter.fit(fanLawCorrectionFitter.toList())); + setUseCompressorChart(true); + } + + /** + *

+ * fitReducedCurve. + *

+ */ + public void fitReducedCurve() {} + + /** {@inheritDoc} */ + @Override + public double getPolytropicHead(double flow, double speed) { + // double flowCorrection = fanLawCorrectionFunc.value(speed/referenceSpeed); + // System.out.println("flow correction " + flowCorrection); + return reducedHeadFitterFunc.value(flow / speed) * speed * speed; + // return reducedHeadFitterFunc.value(flowCorrection * flow / speed) * speed * + // speed; + } + + /** {@inheritDoc} */ + @Override + public double getPolytropicEfficiency(double flow, double speed) { + // double flowCorrection = fanLawCorrectionFunc.value(speed/referenceSpeed); + return reducedPolytropicEfficiencyFunc.value(flow / speed); + // return reducedPolytropicEfficiencyFunc.value(reducedHeadFitterFunc*flow / + // speed); + } + + /** {@inheritDoc} */ + @Override + public int getSpeed(double flow, double head) { + int iter = 1; + double error = 1.0; + double derrordspeed = 1.0; + double newspeed = referenceSpeed; + double newhead = 0.0; + double oldspeed = newspeed + 1.0; + double oldhead = getPolytropicHead(flow, oldspeed); + double olderror = oldhead - head; + do { + iter++; + newhead = getPolytropicHead(flow, newspeed); + error = newhead - head; + derrordspeed = (error - olderror) / (newspeed - oldspeed); + newspeed -= error / derrordspeed; + // System.out.println("speed " + newspeed); + } while (Math.abs(error) > 1e-6 && iter < 100); + + // change speed to minimize + // Math.abs(head - reducedHeadFitterFunc.value(flow / speed) * speed * speed); + return (int) Math.round(newspeed); + } + + /** {@inheritDoc} */ + @Override + public double getFlow(double head, double speed, double guessFlow) { + int iter = 1; + double error = 1.0; + double derrordspeed = 1.0; + double newflow = guessFlow; + double newhead = 0.0; + double oldflow = newflow * 1.1; + double oldhead = getPolytropicHead(oldflow, speed); + double olderror = oldhead - head; + do { + iter++; + newhead = + getPolytropicHead(newflow, speed) / (getPolytropicEfficiency(newflow, speed) / 100.0); + error = newhead - head; + derrordspeed = (error - olderror) / (newflow - oldflow); + newflow -= error / derrordspeed; + // System.out.println("newflow " + newflow); + } while (Math.abs(error) > 1e-6 && iter < 100); + + // change speed to minimize + // Math.abs(head - reducedHeadFitterFunc.value(flow / speed) * speed * speed); + return newflow; + } + + /** + *

+ * addSurgeCurve. + *

+ * + * @param flow an array of type double + * @param head an array of type double + */ + public void addSurgeCurve(double[] flow, double[] head) { + surgeCurve = new SurgeCurve(flow, head); + } + + /** + *

+ * polytropicEfficiency. + *

+ * + * @param flow a double + * @param speed a double + * @return a double + */ + public double polytropicEfficiency(double flow, double speed) { + return 100.0; + } + + /** + *

+ * checkSurge1. + *

+ * + * @param flow a double + * @param head a double + * @return a boolean + */ + public boolean checkSurge1(double flow, double head) { + return false; + } + + /** + *

+ * checkSurge2. + *

+ * + * @param flow a double + * @param speed a double + * @return a boolean + */ + public boolean checkSurge2(double flow, double speed) { + return false; + } + + /** + *

+ * checkStoneWall. + *

+ * + * @param flow a double + * @param speed a double + * @return a boolean + */ + public boolean checkStoneWall(double flow, double speed) { + return false; + } + + /** {@inheritDoc} */ + @Override + public void setReferenceConditions(double refMW, double refTemperature, double refPressure, + double refZ) { + this.refMW = refMW; + this.refTemperature = refTemperature; + this.refPressure = refPressure; + this.refZ = refZ; + } + + /** {@inheritDoc} */ + @Override + public SurgeCurve getSurgeCurve() { + return surgeCurve; + } + + /** {@inheritDoc} */ + @Override + public void setSurgeCurve(SurgeCurve surgeCurve) { + this.surgeCurve = surgeCurve; + } + + /** {@inheritDoc} */ + @Override + public StoneWallCurve getStoneWallCurve() { + return stoneWallCurve; + } + + /** {@inheritDoc} */ + @Override + public void setStoneWallCurve(StoneWallCurve stoneWallCurve) { + this.stoneWallCurve = stoneWallCurve; + } + + /** {@inheritDoc} */ + @Override + public boolean isUseCompressorChart() { + return useCompressorChart; + } + + /** {@inheritDoc} */ + @Override + public void setUseCompressorChart(boolean useCompressorChart) { + this.useCompressorChart = useCompressorChart; + } + + /** {@inheritDoc} */ + @Override + public String getHeadUnit() { + return headUnit; + } + + /** {@inheritDoc} */ + @Override + public void setHeadUnit(String headUnit) { + if (headUnit.equals("meter") || headUnit.equals("kJ/kg")) { + this.headUnit = headUnit; + } else { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + "setHeadUnit", "headUnit", "does not support value " + headUnit)); } - - /** - *

- * fitReducedCurve. - *

- */ - public void fitReducedCurve() {} - - /** {@inheritDoc} */ - @Override - public double getPolytropicHead(double flow, double speed) { - // double flowCorrection = fanLawCorrectionFunc.value(speed/referenceSpeed); - // System.out.println("flow correction " + flowCorrection); - return reducedHeadFitterFunc.value(flow / speed) * speed * speed; - // return reducedHeadFitterFunc.value(flowCorrection * flow / speed) * speed * - // speed; - } - - /** {@inheritDoc} */ - @Override - public double getPolytropicEfficiency(double flow, double speed) { - // double flowCorrection = fanLawCorrectionFunc.value(speed/referenceSpeed); - return reducedPolytropicEfficiencyFunc.value(flow / speed); - // return reducedPolytropicEfficiencyFunc.value(reducedHeadFitterFunc*flow / - // speed); + this.headUnit = headUnit; + } + + /** {@inheritDoc} */ + @Override + public boolean useRealKappa() { + return useRealKappa; + } + + /** {@inheritDoc} */ + @Override + public void setUseRealKappa(boolean useRealKappa) { + this.useRealKappa = useRealKappa; + } + + /** {@inheritDoc} */ + @Override + public void plot() { + neqsim.dataPresentation.JFreeChart.graph2b graph = + new neqsim.dataPresentation.JFreeChart.graph2b(flow, head, + Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), "head vs flow", + "flow", "head"); + graph.setVisible(true); + neqsim.dataPresentation.JFreeChart.graph2b graph2 = + new neqsim.dataPresentation.JFreeChart.graph2b(flow, polytropicEfficiency, + Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), "eff vs flow", + "flow", "eff"); + graph2.setVisible(true); + neqsim.dataPresentation.JFreeChart.graph2b graph3 = + new neqsim.dataPresentation.JFreeChart.graph2b(redflow, redhead, + Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), + "red head vs red flow", "red flow", "red head"); + graph3.setVisible(true); + neqsim.dataPresentation.JFreeChart.graph2b graph4 = + new neqsim.dataPresentation.JFreeChart.graph2b(redflow, polytropicEfficiency, + Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), + "red eff vs red dflow", "red flow", "red eff"); + graph4.setVisible(true); + } + + /** {@inheritDoc} */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Arrays.hashCode(chartConditions); + result = prime * result + Arrays.deepHashCode(flow); + result = prime * result + Arrays.deepHashCode(head); + result = prime * result + Arrays.deepHashCode(polytropicEfficiency); + result = prime * result + Arrays.deepHashCode(redflow); + result = prime * result + Arrays.deepHashCode(redhead); + result = prime * result + Arrays.deepHashCode(redpolytropicEfficiency); + result = prime * result + Arrays.hashCode(speed); + result = prime * result + Objects.hash(chartValues, fanLawCorrectionFunc, headUnit, isStoneWall, + isSurge, maxSpeedCurve, minSpeedCurve, reducedHeadFitterFunc, + reducedPolytropicEfficiencyFunc, refMW, refPressure, refTemperature, refZ, referenceSpeed, + stoneWallCurve, surgeCurve, useCompressorChart, useRealKappa); + // result = prime * result + Objects.hash(fanLawCorrectionFitter, + // reducedFlowFitter,reducedHeadFitter,reducedPolytropicEfficiencyFitter ) + return result; + } + + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; } - - /** {@inheritDoc} */ - @Override - public int getSpeed(double flow, double head) { - int iter = 1; - double error = 1.0, derrordspeed = 1.0; - double newspeed = referenceSpeed; - double newhead = 0.0; - double oldspeed = newspeed + 1.0; - double oldhead = getPolytropicHead(flow, oldspeed); - double olderror = oldhead - head; - do { - iter++; - newhead = getPolytropicHead(flow, newspeed); - error = newhead - head; - derrordspeed = (error - olderror) / (newspeed - oldspeed); - newspeed -= error / derrordspeed; - // System.out.println("speed " + newspeed); - } while (Math.abs(error) > 1e-6 && iter < 100); - - // change speed to minimize - // Math.abs(head - reducedHeadFitterFunc.value(flow / speed) * speed * speed); - return (int) Math.round(newspeed); - } - - /** - *

- * addSurgeCurve. - *

- * - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - */ - public void addSurgeCurve(double[] flow, double[] head) { - surgeCurve = new SurgeCurve(flow, head); + if (obj == null) { + return false; } - - /** - *

- * polytropicEfficiency. - *

- * - * @param flow a double - * @param speed a double - * @return a double - */ - public double polytropicEfficiency(double flow, double speed) { - return 100.0; - } - - /** - *

- * checkSurge1. - *

- * - * @param flow a double - * @param head a double - * @return a boolean - */ - public boolean checkSurge1(double flow, double head) { - return false; - } - - /** - *

- * checkSurge2. - *

- * - * @param flow a double - * @param speed a double - * @return a boolean - */ - public boolean checkSurge2(double flow, double speed) { - return false; - } - - /** - *

- * checkStoneWall. - *

- * - * @param flow a double - * @param speed a double - * @return a boolean - */ - public boolean checkStoneWall(double flow, double speed) { - return false; - } - - /** {@inheritDoc} */ - @Override - public void setReferenceConditions(double refMW, double refTemperature, double refPressure, - double refZ) { - this.refMW = refMW; - this.refTemperature = refTemperature; - this.refPressure = refPressure; - this.refZ = refZ; - } - - /** {@inheritDoc} */ - @Override - public SurgeCurve getSurgeCurve() { - return surgeCurve; - } - - /** {@inheritDoc} */ - @Override - public void setSurgeCurve(SurgeCurve surgeCurve) { - this.surgeCurve = surgeCurve; - } - - /** {@inheritDoc} */ - @Override - public StoneWallCurve getStoneWallCurve() { - return stoneWallCurve; - } - - /** {@inheritDoc} */ - @Override - public void setStoneWallCurve(StoneWallCurve stoneWallCurve) { - this.stoneWallCurve = stoneWallCurve; - } - - /** {@inheritDoc} */ - @Override - public boolean isUseCompressorChart() { - return useCompressorChart; - } - - /** {@inheritDoc} */ - @Override - public void setUseCompressorChart(boolean useCompressorChart) { - this.useCompressorChart = useCompressorChart; - } - - /** {@inheritDoc} */ - @Override - public String getHeadUnit() { - return headUnit; - } - - /** {@inheritDoc} */ - @Override - public void setHeadUnit(String headUnit) { - this.headUnit = headUnit; - } - - /** {@inheritDoc} */ - @Override - public boolean useRealKappa() { - return useRealKappa; - } - - /** {@inheritDoc} */ - @Override - public void setUseRealKappa(boolean useRealKappa) { - this.useRealKappa = useRealKappa; - } - - /** {@inheritDoc} */ - @Override - public void plot() { - neqsim.dataPresentation.JFreeChart.graph2b graph = - new neqsim.dataPresentation.JFreeChart.graph2b(flow, head, - Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), - "head vs flow", "flow", "head"); - graph.setVisible(true); - neqsim.dataPresentation.JFreeChart.graph2b graph2 = - new neqsim.dataPresentation.JFreeChart.graph2b(flow, polytropicEfficiency, - Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), - "eff vs flow", "flow", "eff"); - graph2.setVisible(true); - neqsim.dataPresentation.JFreeChart.graph2b graph3 = - new neqsim.dataPresentation.JFreeChart.graph2b(redflow, redhead, - Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), - "red head vs red flow", "red flow", "red head"); - graph3.setVisible(true); - neqsim.dataPresentation.JFreeChart.graph2b graph4 = - new neqsim.dataPresentation.JFreeChart.graph2b(redflow, polytropicEfficiency, - Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), - "red eff vs red dflow", "red flow", "red eff"); - graph4.setVisible(true); - } - - /** {@inheritDoc} */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.hashCode(chartConditions); - result = prime * result + Arrays.deepHashCode(flow); - result = prime * result + Arrays.deepHashCode(head); - result = prime * result + Arrays.deepHashCode(polytropicEfficiency); - result = prime * result + Arrays.deepHashCode(redflow); - result = prime * result + Arrays.deepHashCode(redhead); - result = prime * result + Arrays.deepHashCode(redpolytropicEfficiency); - result = prime * result + Arrays.hashCode(speed); - result = prime * result + Objects.hash(chartValues, fanLawCorrectionFunc, headUnit, isStoneWall, isSurge, - maxSpeedCurve, minSpeedCurve, reducedHeadFitterFunc, reducedPolytropicEfficiencyFunc, refMW, - refPressure, refTemperature, refZ, referenceSpeed, stoneWallCurve, surgeCurve, useCompressorChart, - useRealKappa); - // result = prime * result + Objects.hash(fanLawCorrectionFitter, - // reducedFlowFitter,reducedHeadFitter,reducedPolytropicEfficiencyFitter ) - return result; - } - - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - CompressorChart other = (CompressorChart) obj; - return Arrays.equals(chartConditions, other.chartConditions) - && Objects.equals(chartValues, other.chartValues) - && Objects.equals(fanLawCorrectionFunc, other.fanLawCorrectionFunc) - && Arrays.deepEquals(flow, other.flow) && Arrays.deepEquals(head, other.head) - && Objects.equals(headUnit, other.headUnit) && isStoneWall == other.isStoneWall - && isSurge == other.isSurge - && Double.doubleToLongBits(maxSpeedCurve) == Double.doubleToLongBits(other.maxSpeedCurve) - && Double.doubleToLongBits(minSpeedCurve) == Double.doubleToLongBits(other.minSpeedCurve) - && Arrays.deepEquals(polytropicEfficiency, other.polytropicEfficiency) - && Arrays.deepEquals(redflow, other.redflow) && Arrays.deepEquals(redhead, other.redhead) - && Arrays.deepEquals(redpolytropicEfficiency, other.redpolytropicEfficiency) - && Objects.equals(reducedHeadFitterFunc, other.reducedHeadFitterFunc) - && Objects.equals(reducedPolytropicEfficiencyFunc, other.reducedPolytropicEfficiencyFunc) - && Double.doubleToLongBits(refMW) == Double.doubleToLongBits(other.refMW) - && Double.doubleToLongBits(refPressure) == Double.doubleToLongBits(other.refPressure) - && Double.doubleToLongBits(refTemperature) == Double - .doubleToLongBits(other.refTemperature) - && Double.doubleToLongBits(refZ) == Double.doubleToLongBits(other.refZ) - && Double.doubleToLongBits(referenceSpeed) == Double - .doubleToLongBits(other.referenceSpeed) - && Arrays.equals(speed, other.speed) - && Objects.equals(stoneWallCurve, other.stoneWallCurve) - && Objects.equals(surgeCurve, other.surgeCurve) - && useCompressorChart == other.useCompressorChart && useRealKappa == other.useRealKappa; - // && Objects.equals(fanLawCorrectionFitter, other.fanLawCorrectionFitter) - // && Objects.equals(reducedFlowFitter, other.reducedFlowFitter) - // && Objects.equals(reducedHeadFitter, other.reducedHeadFitter) - // && Objects.equals(reducedPolytropicEfficiencyFitter, - // other.reducedPolytropicEfficiencyFitter) + if (getClass() != obj.getClass()) { + return false; } + CompressorChart other = (CompressorChart) obj; + return Arrays.equals(chartConditions, other.chartConditions) + && Objects.equals(chartValues, other.chartValues) + && Objects.equals(fanLawCorrectionFunc, other.fanLawCorrectionFunc) + && Arrays.deepEquals(flow, other.flow) && Arrays.deepEquals(head, other.head) + && Objects.equals(headUnit, other.headUnit) && isStoneWall == other.isStoneWall + && isSurge == other.isSurge + && Double.doubleToLongBits(maxSpeedCurve) == Double.doubleToLongBits(other.maxSpeedCurve) + && Double.doubleToLongBits(minSpeedCurve) == Double.doubleToLongBits(other.minSpeedCurve) + && Arrays.deepEquals(polytropicEfficiency, other.polytropicEfficiency) + && Arrays.deepEquals(redflow, other.redflow) && Arrays.deepEquals(redhead, other.redhead) + && Arrays.deepEquals(redpolytropicEfficiency, other.redpolytropicEfficiency) + && Objects.equals(reducedHeadFitterFunc, other.reducedHeadFitterFunc) + && Objects.equals(reducedPolytropicEfficiencyFunc, other.reducedPolytropicEfficiencyFunc) + && Double.doubleToLongBits(refMW) == Double.doubleToLongBits(other.refMW) + && Double.doubleToLongBits(refPressure) == Double.doubleToLongBits(other.refPressure) + && Double.doubleToLongBits(refTemperature) == Double.doubleToLongBits(other.refTemperature) + && Double.doubleToLongBits(refZ) == Double.doubleToLongBits(other.refZ) + && Double.doubleToLongBits(referenceSpeed) == Double.doubleToLongBits(other.referenceSpeed) + && Arrays.equals(speed, other.speed) && Objects.equals(stoneWallCurve, other.stoneWallCurve) + && Objects.equals(surgeCurve, other.surgeCurve) + && useCompressorChart == other.useCompressorChart && useRealKappa == other.useRealKappa; + // && Objects.equals(fanLawCorrectionFitter, other.fanLawCorrectionFitter) + // && Objects.equals(reducedFlowFitter, other.reducedFlowFitter) + // && Objects.equals(reducedHeadFitter, other.reducedHeadFitter) + // && Objects.equals(reducedPolytropicEfficiencyFitter, + // other.reducedPolytropicEfficiencyFitter) + } + + /** + *

Getter for the field maxSpeedCurve.

+ * + * @return a double + */ + public double getMaxSpeedCurve() { + return maxSpeedCurve; + } + + /** + *

Setter for the field maxSpeedCurve.

+ * + * @param maxSpeedCurve a double + */ + public void setMaxSpeedCurve(double maxSpeedCurve) { + this.maxSpeedCurve = maxSpeedCurve; + } + + /** + *

Getter for the field minSpeedCurve.

+ * + * @return a double + */ + public double getMinSpeedCurve() { + return minSpeedCurve; + } + + /** + *

Setter for the field minSpeedCurve.

+ * + * @param minSpeedCurve a double + */ + public void setMinSpeedCurve(double minSpeedCurve) { + this.minSpeedCurve = minSpeedCurve; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartAlternativeMapLookup.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartAlternativeMapLookup.java index 288e3e085d..f4c47b52bb 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartAlternativeMapLookup.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartAlternativeMapLookup.java @@ -21,528 +21,530 @@ * @version $Id: $Id */ public class CompressorChartAlternativeMapLookup - implements CompressorChartInterface, java.io.Serializable { - private static final long serialVersionUID = 1000; - - static Logger logger = LogManager.getLogger(CompressorChart.class); - ArrayList chartValues = new ArrayList(); - ArrayList chartSpeeds = new ArrayList(); - private SurgeCurve surgeCurve = new SurgeCurve(); - private StoneWallCurve stoneWallCurve = new StoneWallCurve(); - boolean isSurge = false; - boolean isStoneWall = false; - double refMW; - private String headUnit = "meter"; - private boolean useCompressorChart = false; - double refTemperature; - double refPressure; - double referenceSpeed = 1000.0; - double refZ; - private boolean useRealKappa = false; - double[] chartConditions = null; - final WeightedObservedPoints reducedHeadFitter = new WeightedObservedPoints(); - final WeightedObservedPoints reducedFlowFitter = new WeightedObservedPoints(); - final WeightedObservedPoints fanLawCorrectionFitter = new WeightedObservedPoints(); - final WeightedObservedPoints reducedPolytropicEfficiencyFitter = new WeightedObservedPoints(); - PolynomialFunction reducedHeadFitterFunc = null; - PolynomialFunction reducedPolytropicEfficiencyFunc = null; - PolynomialFunction fanLawCorrectionFunc = null; - double gearRatio = 1.0; - - /** - *

- * Constructor for CompressorChartAlternativeMapLookup. - *

- */ - public CompressorChartAlternativeMapLookup() {} - - /** {@inheritDoc} */ - @Override - public void addCurve(double speed, double[] flow, double[] head, - double[] polytropicEfficiency) { - CompressorCurve curve = new CompressorCurve(speed, flow, head, polytropicEfficiency); - chartValues.add(curve); - chartSpeeds.add(speed); + implements CompressorChartInterface, java.io.Serializable { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(CompressorChart.class); + + ArrayList chartValues = new ArrayList(); + ArrayList chartSpeeds = new ArrayList(); + private SurgeCurve surgeCurve = new SurgeCurve(); + private StoneWallCurve stoneWallCurve = new StoneWallCurve(); + boolean isSurge = false; + boolean isStoneWall = false; + double refMW; + private String headUnit = "meter"; + private boolean useCompressorChart = false; + double refTemperature; + double refPressure; + double referenceSpeed = 1000.0; + double refZ; + private boolean useRealKappa = false; + double[] chartConditions = null; + final WeightedObservedPoints reducedHeadFitter = new WeightedObservedPoints(); + final WeightedObservedPoints reducedFlowFitter = new WeightedObservedPoints(); + final WeightedObservedPoints fanLawCorrectionFitter = new WeightedObservedPoints(); + final WeightedObservedPoints reducedPolytropicEfficiencyFitter = new WeightedObservedPoints(); + PolynomialFunction reducedHeadFitterFunc = null; + PolynomialFunction reducedPolytropicEfficiencyFunc = null; + PolynomialFunction fanLawCorrectionFunc = null; + double gearRatio = 1.0; + + /** + *

+ * Constructor for CompressorChartAlternativeMapLookup. + *

+ */ + public CompressorChartAlternativeMapLookup() {} + + /** {@inheritDoc} */ + @Override + public void addCurve(double speed, double[] flow, double[] head, double[] polytropicEfficiency) { + CompressorCurve curve = new CompressorCurve(speed, flow, head, polytropicEfficiency); + chartValues.add(curve); + chartSpeeds.add(speed); + } + + /** {@inheritDoc} */ + @Override + public void setCurves(double[] chartConditions, double[] speed, double[][] flow, double[][] head, + double[][] polyEff) { + for (int i = 0; i < speed.length; i++) { + CompressorCurve curve = new CompressorCurve(speed[i], flow[i], head[i], polyEff[i]); + chartValues.add(curve); + chartSpeeds.add(speed[i]); } - /** {@inheritDoc} */ - @Override - public void setCurves(double[] chartConditions, double[] speed, double[][] flow, - double[][] head, double[][] polyEff) { - for (int i = 0; i < speed.length; i++) { - CompressorCurve curve = new CompressorCurve(speed[i], flow[i], head[i], polyEff[i]); - chartValues.add(curve); - chartSpeeds.add(speed[i]); - } - - setUseCompressorChart(true); + setUseCompressorChart(true); + } + + /** + *

+ * getClosestRefSpeeds. + *

+ * + * @param speed a double + * @return a {@link java.util.ArrayList} object + */ + public ArrayList getClosestRefSpeeds(double speed) { + ArrayList closestRefSpeeds = new ArrayList(); + Double[] speedArray = new Double[chartSpeeds.size()]; + speedArray = chartSpeeds.toArray(speedArray); + Arrays.sort(speedArray); + boolean speedOnRef = false; + + for (int i = 0; i < chartSpeeds.size(); i++) { + double s = chartValues.get(i).speed; + if (speed == s) { // speed is equal to a reference speed + closestRefSpeeds.add(s); + speedOnRef = true; + } } - /** - *

- * getClosestRefSpeeds. - *

- * - * @param speed a double - * @return a {@link java.util.ArrayList} object - */ - public ArrayList getClosestRefSpeeds(double speed) { - ArrayList closestRefSpeeds = new ArrayList(); - Double[] speedArray = new Double[chartSpeeds.size()]; - speedArray = chartSpeeds.toArray(speedArray); - Arrays.sort(speedArray); - boolean speedOnRef = false; - - for (int i = 0; i < chartSpeeds.size(); i++) { - double s = chartValues.get(i).speed; - if (speed == s) { // speed is equal to a reference speed - closestRefSpeeds.add(s); - speedOnRef = true; - } - } - - if (!speedOnRef) { - int pos = bisect_left(speedArray, speed); - if (pos == 0) { // speed is lower than the lowest reference speed - closestRefSpeeds.add(speedArray[0]); - } else if (pos == chartSpeeds.size()) { // speed is higher than the highest reference - // speed - closestRefSpeeds.add(speedArray[speedArray.length - 1]); - } else { // speed is in between two reference speeds - closestRefSpeeds.add(speedArray[pos - 1]); - closestRefSpeeds.add(speedArray[pos]); - } - } - return closestRefSpeeds; + if (!speedOnRef) { + int pos = bisect_left(speedArray, speed); + if (pos == 0) { // speed is lower than the lowest reference speed + closestRefSpeeds.add(speedArray[0]); + } else if (pos == chartSpeeds.size()) { + // speed is higher than the highest reference speed + closestRefSpeeds.add(speedArray[speedArray.length - 1]); + } else { // speed is in between two reference speeds + closestRefSpeeds.add(speedArray[pos - 1]); + closestRefSpeeds.add(speedArray[pos]); + } } - - /** {@inheritDoc} */ - @Override - public double getPolytropicHead(double flow, double speed) { - ArrayList closestRefSpeeds = new ArrayList(); - closestRefSpeeds = getClosestRefSpeeds(speed); - double s; - // double speedRatio; - ArrayList tempHeads = new ArrayList(); - SplineInterpolator asi = new SplineInterpolator(); - - for (int i = 0; i < closestRefSpeeds.size(); i++) { - s = closestRefSpeeds.get(i); - // speedRatio = speed * gearRatio / s; - PolynomialSplineFunction psf = - asi.interpolate(getCurveAtRefSpeed(s).flow, getCurveAtRefSpeed(s).head); - tempHeads.add(psf.value(flow)); - } - - double sum = 0.0; - for (int i = 0; i < tempHeads.size(); i++) { - sum += tempHeads.get(i); - } - return sum / tempHeads.size(); + return closestRefSpeeds; + } + + /** {@inheritDoc} */ + @Override + public double getPolytropicHead(double flow, double speed) { + ArrayList closestRefSpeeds = new ArrayList(); + closestRefSpeeds = getClosestRefSpeeds(speed); + double s; + // double speedRatio; + ArrayList tempHeads = new ArrayList(); + SplineInterpolator asi = new SplineInterpolator(); + + for (int i = 0; i < closestRefSpeeds.size(); i++) { + s = closestRefSpeeds.get(i); + // speedRatio = speed * gearRatio / s; + PolynomialSplineFunction psf = + asi.interpolate(getCurveAtRefSpeed(s).flow, getCurveAtRefSpeed(s).head); + tempHeads.add(psf.value(flow)); } - /** {@inheritDoc} */ - @Override - public double getPolytropicEfficiency(double flow, double speed) { - ArrayList closestRefSpeeds = new ArrayList(); - closestRefSpeeds = getClosestRefSpeeds(speed); - double s; - ArrayList tempEffs = new ArrayList(); - SplineInterpolator asi = new SplineInterpolator(); - - for (int i = 0; i < closestRefSpeeds.size(); i++) { - s = closestRefSpeeds.get(i); - PolynomialSplineFunction psf = asi.interpolate(getCurveAtRefSpeed(s).flow, - getCurveAtRefSpeed(s).polytropicEfficiency); - tempEffs.add(psf.value(flow)); - } - - double sum = 0.0; - for (int i = 0; i < tempEffs.size(); i++) { - sum += tempEffs.get(i); - } - return sum / tempEffs.size(); + double sum = 0.0; + for (int i = 0; i < tempHeads.size(); i++) { + sum += tempHeads.get(i); } - - /** - *

- * addSurgeCurve. - *

- * - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - */ - public void addSurgeCurve(double[] flow, double[] head) { - surgeCurve = new SurgeCurve(flow, head); + return sum / tempHeads.size(); + } + + /** {@inheritDoc} */ + @Override + public double getPolytropicEfficiency(double flow, double speed) { + ArrayList closestRefSpeeds = new ArrayList(); + closestRefSpeeds = getClosestRefSpeeds(speed); + double s; + ArrayList tempEffs = new ArrayList(); + SplineInterpolator asi = new SplineInterpolator(); + + for (int i = 0; i < closestRefSpeeds.size(); i++) { + s = closestRefSpeeds.get(i); + PolynomialSplineFunction psf = + asi.interpolate(getCurveAtRefSpeed(s).flow, getCurveAtRefSpeed(s).polytropicEfficiency); + tempEffs.add(psf.value(flow)); } - /** - *

- * getCurveAtRefSpeed. - *

- * - * @param refSpeed a double - * @return a {@link neqsim.processSimulation.processEquipment.compressor.CompressorCurve} object - */ - public CompressorCurve getCurveAtRefSpeed(double refSpeed) { - for (int i = 0; i < chartValues.size(); i++) { - CompressorCurve c = chartValues.get(i); - if (c.speed == refSpeed) { - return c; - } - } - String msg = "Does not match any speed in the chart."; - logger.error(msg); - neqsim.util.exception.InvalidInputException e = - new neqsim.util.exception.InvalidInputException(this, "getCurveAtRefSpeed", "refSpeed", - msg); - throw new RuntimeException(e); + double sum = 0.0; + for (int i = 0; i < tempEffs.size(); i++) { + sum += tempEffs.get(i); } - - /** - *

- * Getter for the field gearRatio. - *

- * - * @return a double - */ - public double getGearRatio() { - return gearRatio; - } - - /** - *

- * Setter for the field gearRatio. - *

- * - * @param GR a double - */ - public void setGearRatio(double GR) { - gearRatio = GR; - } - - /** - *

- * polytropicEfficiency. - *

- * - * @param flow a double - * @param speed a double - * @return a double - */ - public double polytropicEfficiency(double flow, double speed) { - return 100.0; - } - - /** {@inheritDoc} */ - @Override - public int getSpeed(double flow, double head) { - int iter = 1; - double error = 1.0, derrordspeed = 1.0; - double newspeed = referenceSpeed; - double newhead = 0.0; - double oldspeed = newspeed + 1.0; - double oldhead = getPolytropicHead(flow, oldspeed); - double olderror = oldhead - head; - do { - iter++; - newhead = getPolytropicHead(flow, newspeed); - error = newhead - head; - derrordspeed = (error - olderror) / (newspeed - oldspeed); - newspeed -= error / derrordspeed; - // System.out.println("speed " + newspeed); - } while (Math.abs(error) > 1e-6 && iter < 100); - - // change speed to minimize - // Math.abs(head - reducedHeadFitterFunc.value(flow / speed) * speed * speed); - return (int) Math.round(newspeed); - } - - /** - *

- * checkSurge1. - *

- * - * @param flow a double - * @param head a double - * @return a boolean - */ - public boolean checkSurge1(double flow, double head) { - return false; - } - - /** - *

- * checkSurge2. - *

- * - * @param flow a double - * @param speed a double - * @return a boolean - */ - public boolean checkSurge2(double flow, double speed) { - return false; + return sum / tempEffs.size(); + } + + /** + *

+ * addSurgeCurve. + *

+ * + * @param flow an array of type double + * @param head an array of type double + */ + public void addSurgeCurve(double[] flow, double[] head) { + surgeCurve = new SurgeCurve(flow, head); + } + + /** + *

+ * getCurveAtRefSpeed. + *

+ * + * @param refSpeed a double + * @return a {@link neqsim.processSimulation.processEquipment.compressor.CompressorCurve} object + */ + public CompressorCurve getCurveAtRefSpeed(double refSpeed) { + for (int i = 0; i < chartValues.size(); i++) { + CompressorCurve c = chartValues.get(i); + if (c.speed == refSpeed) { + return c; + } } - - /** - *

- * checkStoneWall. - *

- * - * @param flow a double - * @param speed a double - * @return a boolean + String msg = "Does not match any speed in the chart."; + neqsim.util.exception.InvalidInputException ex = + new neqsim.util.exception.InvalidInputException(this, "getCurveAtRefSpeed", "refSpeed", + msg); + throw new RuntimeException(ex); + } + + /** + *

+ * Getter for the field gearRatio. + *

+ * + * @return a double + */ + public double getGearRatio() { + return gearRatio; + } + + /** + *

+ * Setter for the field gearRatio. + *

+ * + * @param GR a double + */ + public void setGearRatio(double GR) { + gearRatio = GR; + } + + /** + *

+ * polytropicEfficiency. + *

+ * + * @param flow a double + * @param speed a double + * @return a double + */ + public double polytropicEfficiency(double flow, double speed) { + return 100.0; + } + + /** {@inheritDoc} */ + @Override + public int getSpeed(double flow, double head) { + int iter = 1; + double error = 1.0; + double derrordspeed = 1.0; + double newspeed = referenceSpeed; + double newhead = 0.0; + double oldspeed = newspeed + 1.0; + double oldhead = getPolytropicHead(flow, oldspeed); + double olderror = oldhead - head; + do { + iter++; + newhead = getPolytropicHead(flow, newspeed); + error = newhead - head; + derrordspeed = (error - olderror) / (newspeed - oldspeed); + newspeed -= error / derrordspeed; + // System.out.println("speed " + newspeed); + } while (Math.abs(error) > 1e-6 && iter < 100); + + // change speed to minimize + // Math.abs(head - reducedHeadFitterFunc.value(flow / speed) * speed * speed); + return (int) Math.round(newspeed); + } + + /** + *

+ * checkSurge1. + *

+ * + * @param flow a double + * @param head a double + * @return a boolean + */ + public boolean checkSurge1(double flow, double head) { + return false; + } + + /** + *

+ * checkSurge2. + *

+ * + * @param flow a double + * @param speed a double + * @return a boolean + */ + public boolean checkSurge2(double flow, double speed) { + return false; + } + + /** + *

+ * checkStoneWall. + *

+ * + * @param flow a double + * @param speed a double + * @return a boolean + */ + public boolean checkStoneWall(double flow, double speed) { + return false; + } + + /** {@inheritDoc} */ + @Override + public void setReferenceConditions(double refMW, double refTemperature, double refPressure, + double refZ) { + this.refMW = refMW; + this.refTemperature = refTemperature; + this.refPressure = refPressure; + this.refZ = refZ; + } + + /** {@inheritDoc} */ + @Override + public SurgeCurve getSurgeCurve() { + return surgeCurve; + } + + /** {@inheritDoc} */ + @Override + public void setSurgeCurve(SurgeCurve surgeCurve) { + this.surgeCurve = surgeCurve; + } + + /** {@inheritDoc} */ + @Override + public StoneWallCurve getStoneWallCurve() { + return stoneWallCurve; + } + + /** {@inheritDoc} */ + @Override + public void setStoneWallCurve(StoneWallCurve stoneWallCurve) { + this.stoneWallCurve = stoneWallCurve; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testFluid = new SystemSrkEos(298.15, 50.0); + + // testFluid.addComponent("methane", 1.0); + // testFluid.setMixingRule(2); + // testFluid.setTotalFlowRate(0.635, "MSm3/day"); + + testFluid.addComponent("nitrogen", 1.205); + testFluid.addComponent("CO2", 1.340); + testFluid.addComponent("methane", 87.974); + testFluid.addComponent("ethane", 5.258); + testFluid.addComponent("propane", 3.283); + testFluid.addComponent("i-butane", 0.082); + testFluid.addComponent("n-butane", 0.487); + testFluid.addComponent("i-pentane", 0.056); + testFluid.addComponent("n-pentane", 0.053); + testFluid.setMixingRule(2); + testFluid.setMultiPhaseCheck(true); + + testFluid.setTemperature(24.0, "C"); + testFluid.setPressure(48.0, "bara"); + // testFluid.setTotalFlowRate(3.635, "MSm3/day"); + testFluid.setTotalFlowRate(5.4, "MSm3/day"); + + Stream stream_1 = new Stream("Stream1", testFluid); + Compressor comp1 = new Compressor("cmp1", true); + comp1.setInletStream(stream_1); + comp1.setUsePolytropicCalc(true); + // comp1.getAntiSurge().setActive(true); + comp1.setSpeed(11918); + + double[] chartConditions = new double[] {0.3, 1.0, 1.0, 1.0}; + /* + * double[] speed = new double[] { 1000.0, 2000.0, 3000.0, 4000.0 }; double[][] flow = new + * double[][] { { 453.2, 600.0, 750.0, 800.0 }, { 453.2, 600.0, 750.0, 800.0 }, { 453.2, 600.0, + * 750.0, 800.0 }, { 453.2, 600.0, 750.0, 800.0 } }; double[][] head = new double[][] { { + * 10000.0, 9000.0, 8000.0, 7500.0 }, { 10000.0, 9000.0, 8000.0, 7500.0 }, { 10000.0, 9000.0, + * 8000.0, 7500.0 }, { 10000.0, 9000.0, 8000.0, 7500.0 } }; double[][] polyEff = new double[][] + * { { 90.0, 91.0, 89.0, 88.0 }, { 90.0, 91.0, 89.0, 88.0 }, { 90.0, 91.0, 89.0, 88.1 }, { 90.0, + * 91.0, 89.0, 88.1 } }; */ - public boolean checkStoneWall(double flow, double speed) { - return false; - } - - /** {@inheritDoc} */ - @Override - public void setReferenceConditions(double refMW, double refTemperature, double refPressure, - double refZ) { - this.refMW = refMW; - this.refTemperature = refTemperature; - this.refPressure = refPressure; - this.refZ = refZ; - } - - /** {@inheritDoc} */ - @Override - public SurgeCurve getSurgeCurve() { - return surgeCurve; - } - /** {@inheritDoc} */ - @Override - public void setSurgeCurve(SurgeCurve surgeCurve) { - this.surgeCurve = surgeCurve; - } - - /** {@inheritDoc} */ - @Override - public StoneWallCurve getStoneWallCurve() { - return stoneWallCurve; - } - - /** {@inheritDoc} */ - @Override - public void setStoneWallCurve(StoneWallCurve stoneWallCurve) { - this.stoneWallCurve = stoneWallCurve; - } - - /** - *

- * main. - *

+ double[] speed = new double[] {12913, 12298, 11683, 11098, 10453, 9224, 8609, 8200}; + double[][] flow = new double[][] { + {2789.1285, 3174.0375, 3689.2288, 4179.4503, 4570.2768, 4954.7728, 5246.0329, 5661.0331}, + {2571.1753, 2943.7254, 3440.2675, 3837.4448, 4253.0898, 4668.6643, 4997.1926, 5387.4952}, + {2415.3793, 2763.0706, 3141.7095, 3594.7436, 4047.6467, 4494.1889, 4853.7353, 5138.7858}, + {2247.2043, 2799.7342, 3178.3428, 3656.1551, 4102.778, 4394.1591, 4648.3224, 4840.4998}, + {2072.8397, 2463.9483, 2836.4078, 3202.5266, 3599.6333, 3978.0203, 4257.0022, 4517.345}, + {1835.9552, 2208.455, 2618.1322, 2940.8034, 3244.7852, 3530.1279, 3753.3738, 3895.9746}, + {1711.3386, 1965.8848, 2356.9431, 2685.9247, 3008.5154, 3337.2855, 3591.5092}, + {1636.5807, 2002.8708, 2338.0319, 2642.1245, 2896.4894, 3113.6264, 3274.8764, 3411.2977}}; + double[][] head = + new double[][] {{80.0375, 78.8934, 76.2142, 71.8678, 67.0062, 60.6061, 53.0499, 39.728}, + {72.2122, 71.8369, 68.9009, 65.8341, 60.7167, 54.702, 47.2749, 35.7471}, + {65.1576, 64.5253, 62.6118, 59.1619, 54.0455, 47.0059, 39.195, 31.6387}, + {58.6154, 56.9627, 54.6647, 50.4462, 44.4322, 38.4144, 32.9084, 28.8109}, + {52.3295, 51.0573, 49.5283, 46.3326, 42.3685, 37.2502, 31.4884, 25.598}, + {40.6578, 39.6416, 37.6008, 34.6603, 30.9503, 27.1116, 23.2713, 20.4546}, + {35.2705, 34.6359, 32.7228, 31.0645, 27.0985, 22.7482, 18.0113}, + {32.192, 31.1756, 29.1329, 26.833, 23.8909, 21.3324, 18.7726, 16.3403}}; + double[][] polyEff = new double[][] { + {77.2452238409573, 79.4154186459363, 80.737960012489, 80.5229826589649, 79.2210931638144, + 75.4719133864634, 69.6034181197298, 58.7322388482707}, + {77.0107837113504, 79.3069974136389, 80.8941189021135, 80.7190194665918, 79.5313242980328, + 75.5912622896367, 69.6846136362097, 60.0043057990909}, + {77.0043065299874, 79.1690958847856, 80.8038169975675, 80.6543975614197, 78.8532389102705, + 73.6664774270613, 66.2735600426727, 57.671664571658}, + {77.0716623789093, 80.4629750233093, 81.1390811169072, 79.6374242667478, 75.380928428817, + 69.5332969549779, 63.7997587622339, 58.8120614497758}, + {76.9705872525642, 79.8335492585324, 80.9468133671171, 80.5806471927835, 78.0462158225426, + 73.0403707523258, 66.5572286338589, 59.8624822515064}, + {77.5063036680357, 80.2056198362559, 81.0339108025933, 79.6085962687939, 76.3814534404405, + 70.8027503005902, 64.6437367160571, 60.5299349982342}, + {77.8175271586685, 80.065165942218, 81.0631362122632, 79.8955051771299, 76.1983240929369, + 69.289982774309, 60.8567149372229}, + {78.0924334304045, 80.9353551568667, 80.7904437766234, 78.8639325223295, 75.2170936751143, + 70.3105081673411, 65.5507568533569, 61.0391468300337}}; + + // double[] chartConditions = new double[] { 0.3, 1.0, 1.0, 1.0 }; + // double[] speed = new double[] { 13402.0 }; + // double[][] flow = new double[][] { { 1050.0, 1260.0, 1650.0, 1950.0 } }; + // double[][] head = new double[][] { { 8555.0, 8227.0, 6918.0, 5223.0 } }; + // double[][] head = new double[][] { { 85.0, 82.0, 69.0, 52.0 } }; + // double[][] polyEff = new double[][] { { 66.8, 69.0, 66.4, 55.6 } }; + comp1.getCompressorChart().setCurves(chartConditions, speed, flow, head, polyEff); + // comp1.getCompressorChart().setHeadUnit("kJ/kg"); + /* + * double[] surgeflow = new double[] { 453.2, 550.0, 700.0, 800.0 }; double[] surgehead = new + * double[] { 6000.0, 7000.0, 8000.0, 10000.0 }; + * comp1.getCompressorChart().getSurgeCurve().setCurve(chartConditions, surgeflow, surgehead); * - * @param args an array of {@link java.lang.String} objects + * double[] stoneWallflow = new double[] { 923.2, 950.0, 980.0, 1000.0 }; double[] stoneWallHead + * = new double[] { 6000.0, 7000.0, 8000.0, 10000.0 }; + * comp1.getCompressorChart().getStoneWallCurve().setCurve(chartConditions, stoneWallflow, + * stoneWallHead); */ - public static void main(String[] args) { - SystemInterface testFluid = new SystemSrkEos(298.15, 50.0); - - // testFluid.addComponent("methane", 1.0); - // testFluid.setMixingRule(2); - // testFluid.setTotalFlowRate(0.635, "MSm3/day"); - - testFluid.addComponent("nitrogen", 1.205); - testFluid.addComponent("CO2", 1.340); - testFluid.addComponent("methane", 87.974); - testFluid.addComponent("ethane", 5.258); - testFluid.addComponent("propane", 3.283); - testFluid.addComponent("i-butane", 0.082); - testFluid.addComponent("n-butane", 0.487); - testFluid.addComponent("i-pentane", 0.056); - testFluid.addComponent("n-pentane", 0.053); - testFluid.setMixingRule(2); - testFluid.setMultiPhaseCheck(true); - - testFluid.setTemperature(24.0, "C"); - testFluid.setPressure(48.0, "bara"); - // testFluid.setTotalFlowRate(3.635, "MSm3/day"); - testFluid.setTotalFlowRate(5.4, "MSm3/day"); - - Stream stream_1 = new Stream("Stream1", testFluid); - Compressor comp1 = new Compressor("cmp1", true); - comp1.setInletStream(stream_1); - comp1.setUsePolytropicCalc(true); - // comp1.getAntiSurge().setActive(true); - comp1.setSpeed(11918); - - double[] chartConditions = new double[] {0.3, 1.0, 1.0, 1.0}; - /* - * double[] speed = new double[] { 1000.0, 2000.0, 3000.0, 4000.0 }; double[][] flow = new - * double[][] { { 453.2, 600.0, 750.0, 800.0 }, { 453.2, 600.0, 750.0, 800.0 }, { 453.2, - * 600.0, 750.0, 800.0 }, { 453.2, 600.0, 750.0, 800.0 } }; double[][] head = new double[][] - * { { 10000.0, 9000.0, 8000.0, 7500.0 }, { 10000.0, 9000.0, 8000.0, 7500.0 }, { 10000.0, - * 9000.0, 8000.0, 7500.0 }, { 10000.0, 9000.0, 8000.0, 7500.0 } }; double[][] polyEff = new - * double[][] { { 90.0, 91.0, 89.0, 88.0 }, { 90.0, 91.0, 89.0, 88.0 }, { 90.0, 91.0, 89.0, - * 88.1 }, { 90.0, 91.0, 89.0, 88.1 } }; - */ - - double[] speed = new double[] {12913, 12298, 11683, 11098, 10453, 9224, 8609, 8200}; - double[][] flow = new double[][] { - {2789.1285, 3174.0375, 3689.2288, 4179.4503, 4570.2768, 4954.7728, 5246.0329, - 5661.0331}, - {2571.1753, 2943.7254, 3440.2675, 3837.4448, 4253.0898, 4668.6643, 4997.1926, - 5387.4952}, - {2415.3793, 2763.0706, 3141.7095, 3594.7436, 4047.6467, 4494.1889, 4853.7353, - 5138.7858}, - {2247.2043, 2799.7342, 3178.3428, 3656.1551, 4102.778, 4394.1591, 4648.3224, - 4840.4998}, - {2072.8397, 2463.9483, 2836.4078, 3202.5266, 3599.6333, 3978.0203, 4257.0022, - 4517.345}, - {1835.9552, 2208.455, 2618.1322, 2940.8034, 3244.7852, 3530.1279, 3753.3738, - 3895.9746}, - {1711.3386, 1965.8848, 2356.9431, 2685.9247, 3008.5154, 3337.2855, 3591.5092}, - {1636.5807, 2002.8708, 2338.0319, 2642.1245, 2896.4894, 3113.6264, 3274.8764, - 3411.2977}}; - double[][] head = new double[][] { - {80.0375, 78.8934, 76.2142, 71.8678, 67.0062, 60.6061, 53.0499, 39.728}, - {72.2122, 71.8369, 68.9009, 65.8341, 60.7167, 54.702, 47.2749, 35.7471}, - {65.1576, 64.5253, 62.6118, 59.1619, 54.0455, 47.0059, 39.195, 31.6387}, - {58.6154, 56.9627, 54.6647, 50.4462, 44.4322, 38.4144, 32.9084, 28.8109}, - {52.3295, 51.0573, 49.5283, 46.3326, 42.3685, 37.2502, 31.4884, 25.598}, - {40.6578, 39.6416, 37.6008, 34.6603, 30.9503, 27.1116, 23.2713, 20.4546}, - {35.2705, 34.6359, 32.7228, 31.0645, 27.0985, 22.7482, 18.0113}, - {32.192, 31.1756, 29.1329, 26.833, 23.8909, 21.3324, 18.7726, 16.3403},}; - double[][] polyEff = new double[][] { - {77.2452238409573, 79.4154186459363, 80.737960012489, 80.5229826589649, - 79.2210931638144, 75.4719133864634, 69.6034181197298, 58.7322388482707}, - {77.0107837113504, 79.3069974136389, 80.8941189021135, 80.7190194665918, - 79.5313242980328, 75.5912622896367, 69.6846136362097, 60.0043057990909}, - {77.0043065299874, 79.1690958847856, 80.8038169975675, 80.6543975614197, - 78.8532389102705, 73.6664774270613, 66.2735600426727, 57.671664571658}, - {77.0716623789093, 80.4629750233093, 81.1390811169072, 79.6374242667478, - 75.380928428817, 69.5332969549779, 63.7997587622339, 58.8120614497758}, - {76.9705872525642, 79.8335492585324, 80.9468133671171, 80.5806471927835, - 78.0462158225426, 73.0403707523258, 66.5572286338589, 59.8624822515064}, - {77.5063036680357, 80.2056198362559, 81.0339108025933, 79.6085962687939, - 76.3814534404405, 70.8027503005902, 64.6437367160571, 60.5299349982342}, - {77.8175271586685, 80.065165942218, 81.0631362122632, 79.8955051771299, - 76.1983240929369, 69.289982774309, 60.8567149372229}, - {78.0924334304045, 80.9353551568667, 80.7904437766234, 78.8639325223295, - 75.2170936751143, 70.3105081673411, 65.5507568533569, 61.0391468300337}}; - - // double[] chartConditions = new double[] { 0.3, 1.0, 1.0, 1.0 }; - // double[] speed = new double[] { 13402.0 }; - // double[][] flow = new double[][] { { 1050.0, 1260.0, 1650.0, 1950.0 } }; - // double[][] head = new double[][] { { 8555.0, 8227.0, 6918.0, 5223.0 } }; - // double[][] head = new double[][] { { 85.0, 82.0, 69.0, 52.0 } }; - // double[][] polyEff = new double[][] { { 66.8, 69.0, 66.4, 55.6 } }; - comp1.getCompressorChart().setCurves(chartConditions, speed, flow, head, polyEff); - // comp1.getCompressorChart().setHeadUnit("kJ/kg"); - /* - * double[] surgeflow = new double[] { 453.2, 550.0, 700.0, 800.0 }; double[] surgehead = - * new double[] { 6000.0, 7000.0, 8000.0, 10000.0 }; - * comp1.getCompressorChart().getSurgeCurve().setCurve(chartConditions, surgeflow, - * surgehead); - * - * double[] stoneWallflow = new double[] { 923.2, 950.0, 980.0, 1000.0 }; double[] - * stoneWallHead = new double[] { 6000.0, 7000.0, 8000.0, 10000.0 }; - * comp1.getCompressorChart().getStoneWallCurve().setCurve(chartConditions, stoneWallflow, - * stoneWallHead); - */ - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(comp1); - operations.run(); - operations.displayResult(); - - System.out.println("power " + comp1.getPower()); - System.out.println( - "fraction in anti surge line " + comp1.getAntiSurge().getCurrentSurgeFraction()); - System.out.println("Polytropic head from curve:" + comp1.getPolytropicHead()); - System.out.println("Polytropic eff from curve:" + comp1.getPolytropicEfficiency() * 100.0); - System.out.println("flow " + stream_1.getThermoSystem().getFlowRate("m3/hr")); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(comp1); + operations.run(); + operations.displayResult(); + + System.out.println("power " + comp1.getPower()); + System.out + .println("fraction in anti surge line " + comp1.getAntiSurge().getCurrentSurgeFraction()); + System.out.println("Polytropic head from curve:" + comp1.getPolytropicHead()); + System.out.println("Polytropic eff from curve:" + comp1.getPolytropicEfficiency() * 100.0); + System.out.println("flow " + stream_1.getThermoSystem().getFlowRate("m3/hr")); + } + + /** {@inheritDoc} */ + @Override + public boolean isUseCompressorChart() { + return useCompressorChart; + } + + /** {@inheritDoc} */ + @Override + public void setUseCompressorChart(boolean useCompressorChart) { + this.useCompressorChart = useCompressorChart; + } + + /** {@inheritDoc} */ + @Override + public String getHeadUnit() { + return headUnit; + } + + /** {@inheritDoc} */ + @Override + public void setHeadUnit(String headUnit) { + if (headUnit.equals("meter") || headUnit.equals("kJ/kg")) { + this.headUnit = headUnit; + } else { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + "setHeadUnit", "headUnit", "does not support value " + headUnit)); } - - /** {@inheritDoc} */ - @Override - public boolean isUseCompressorChart() { - return useCompressorChart; + } + + /** {@inheritDoc} */ + @Override + public boolean useRealKappa() { + return useRealKappa; + } + + /** {@inheritDoc} */ + @Override + public void setUseRealKappa(boolean useRealKappa) { + this.useRealKappa = useRealKappa; + } + + /** + *

+ * bisect_left. + *

+ * + * @param A an array of {@link java.lang.Double} objects + * @param x a double + * @return a int + */ + public static int bisect_left(Double[] A, double x) { + return bisect_left(A, x, 0, A.length); + } + + /** + *

+ * bisect_left. + *

+ * + * @param A an array of {@link java.lang.Double} objects + * @param x a double + * @param lo a int + * @param hi a int + * @return a int + */ + public static int bisect_left(Double[] A, double x, int lo, int hi) { + int N = A.length; + if (N == 0) { + return 0; } - - /** {@inheritDoc} */ - @Override - public void setUseCompressorChart(boolean useCompressorChart) { - this.useCompressorChart = useCompressorChart; - } - - /** {@inheritDoc} */ - @Override - public String getHeadUnit() { - return headUnit; - } - - /** {@inheritDoc} */ - @Override - public void setHeadUnit(String headUnit) { - this.headUnit = headUnit; - } - - /** {@inheritDoc} */ - @Override - public boolean useRealKappa() { - return useRealKappa; + if (x < A[lo]) { + return lo; } - - /** {@inheritDoc} */ - @Override - public void setUseRealKappa(boolean useRealKappa) { - this.useRealKappa = useRealKappa; + if (x > A[hi - 1]) { + return hi; } - - /** - *

- * bisect_left. - *

- * - * @param A an array of {@link java.lang.Double} objects - * @param x a double - * @return a int - */ - public static int bisect_left(Double[] A, double x) { - return bisect_left(A, x, 0, A.length); + for (;;) { + if (lo + 1 == hi) { + return x == A[lo] ? lo : (lo + 1); + } + int mi = (hi + lo) / 2; + if (x <= A[mi]) { + hi = mi; + } else { + lo = mi; + } } + } - /** - *

- * bisect_left. - *

- * - * @param A an array of {@link java.lang.Double} objects - * @param x a double - * @param lo a int - * @param hi a int - * @return a int - */ - public static int bisect_left(Double[] A, double x, int lo, int hi) { - int N = A.length; - if (N == 0) { - return 0; - } - if (x < A[lo]) { - return lo; - } - if (x > A[hi - 1]) { - return hi; - } - for (;;) { - if (lo + 1 == hi) { - return x == A[lo] ? lo : (lo + 1); - } - int mi = (hi + lo) / 2; - if (x <= A[mi]) { - hi = mi; - } else { - lo = mi; - } - } - } + /** {@inheritDoc} */ + @Override + public void plot() {} - /** {@inheritDoc} */ - @Override - public void plot() {} + /** {@inheritDoc} */ + @Override + public double getFlow(double head, double speed, double guessFlow) { + return 0.0; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartGenerator.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartGenerator.java new file mode 100644 index 0000000000..d1b18144d3 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartGenerator.java @@ -0,0 +1,82 @@ +package neqsim.processSimulation.processEquipment.compressor; + +/** + * Compressor chart generator. + * + * @author Even Solbraa + */ +public class CompressorChartGenerator { + Compressor compressor = null; + + /** + *

+ * Constructor for CompressorChartGenerator. + *

+ * + * @param inpcompressor a {@link neqsim.processSimulation.processEquipment.compressor.Compressor} + * object + */ + public CompressorChartGenerator(Compressor inpcompressor) { + this.compressor = inpcompressor; + } + + /** + *

+ * generateCompressorChart. + *

+ * + * @param generationOption string to specify how to generate the compressor chart + * @return a {@link neqsim.processSimulation.processEquipment.compressor.CompressorChart} object + */ + public CompressorChart generateCompressorChart(String generationOption) { + // Generation compressor chart + double[] chartConditions = new double[3]; + chartConditions[0] = compressor.getOutletStream().getFluid().getMolarMass("kg/mol"); + + double refspeed = compressor.getSpeed(); + double[] speed = new double[1]; + speed[0] = refspeed; + double minSpeed = refspeed / 2.0; + double maxSpeed = refspeed * 2.0; + + compressor.getInletStream().getFluid().initPhysicalProperties("density"); + double refflow = compressor.getInletStream().getFlowRate("m3/hr"); + double[][] flow = new double[1][3]; + flow[0][0] = refflow * 0.7; + flow[0][1] = refflow * 1.0; + flow[0][2] = refflow * 1.43; + double minFlow = refflow / 2.0; + double maxFlow = refflow * 2.0; + + double refhead = compressor.getPolytropicFluidHead(); + double[][] head = new double[1][3]; + head[0][0] = refhead * 1.5; + head[0][1] = refhead; + head[0][2] = refhead * 0.5; + + double[][] polyEff = new double[1][3]; + polyEff[0][0] = compressor.getPolytropicEfficiency() * 100.0 * 0.9; + polyEff[0][1] = compressor.getPolytropicEfficiency() * 100.0; + polyEff[0][2] = compressor.getPolytropicEfficiency() * 100.0 * 0.85; + CompressorChart compChart = new CompressorChart(); + compChart.setUseCompressorChart(true); + compChart.setHeadUnit("kJ/kg"); + compChart.setCurves(chartConditions, speed, flow, head, polyEff); + + // Generating surge curve + double minFlowSurgeFlow = 0.7 * refflow; + double refSurgeFlow = 0.8 * refflow; + double maxSurgeFlow = 0.9 * refflow; + double headSurgeRef = compChart.getPolytropicHead(refSurgeFlow, refspeed); + double headSurgeMin = compChart.getPolytropicHead(minFlow, minSpeed); + double headSurgeMax = compChart.getPolytropicHead(maxSurgeFlow, maxSpeed); + + SurgeCurve surgecurve = new SurgeCurve(); + + surgecurve.setCurve(new double[3], new double[] {minFlowSurgeFlow, refSurgeFlow, maxSurgeFlow}, + new double[] {headSurgeMin, headSurgeRef, headSurgeMax}); + + compChart.setSurgeCurve(surgecurve); + return compChart; + } +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartInterface.java index 92cbf7f814..2a2178a078 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartInterface.java @@ -9,161 +9,171 @@ * @version $Id: $Id */ public interface CompressorChartInterface extends Cloneable { - /** - * This method is used add a curve to the CompressorChart object - * - * @param speed a double - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - * @param polytropicEfficiency an array of {@link double} objects - */ - public void addCurve(double speed, double[] flow, double[] head, double[] polytropicEfficiency); - - /** - * This method is used add a set of curves to the CompressorChart object - * - * @param chartConditions an array of {@link double} objects - * @param speed an array of {@link double} objects - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - * @param polyEff an array of {@link double} objects - */ - public void setCurves(double[] chartConditions, double[] speed, double[][] flow, - double[][] head, double[][] polyEff); - - /** - * Get method for polytropic head from reference curves. - * - * @param flow [m3/h], speed in [rpm]. - * @return polytropic head in unit [getHeadUnit] - * @param speed a double - */ - public double getPolytropicHead(double flow, double speed); - - /** - * Get method for polytropic efficiency from reference curves. - * - * @param flow [m3/h], speed in [rpm]. - * @return polytropic efficiency [%]. - * @param speed a double - */ - public double getPolytropicEfficiency(double flow, double speed); - - /** - * Set method for the reference conditions of the compressor chart - * - * @param refMW a double - * @param refTemperature a double - * @param refPressure a double - * @param refZ a double - */ - public void setReferenceConditions(double refMW, double refTemperature, double refPressure, - double refZ); - - /** - * Checks if set to use compressor chart for compressor calculations (chart is set for - * compressor) - * - * @return a boolean - */ - public boolean isUseCompressorChart(); - - /** - * Set compressor calculations to use compressor chart - * - * @param useCompressorChart a boolean - */ - public void setUseCompressorChart(boolean useCompressorChart); - - /** - * get the selected unit of head - * - * @return unit of head - */ - public String getHeadUnit(); - - /** - * set unit of head - * - * @param headUnit a {@link java.lang.String} object - */ - public void setHeadUnit(String headUnit); - - /** - * get method for kappa setting. true = real kappa is used, false = ideal kappa is used - * - * @return true/false flag - */ - public boolean useRealKappa(); - - /** - * set method for kappa setting. true = real kappa is used, false = ideal kappa is used - * - * @param useRealKappa a boolean - */ - public void setUseRealKappa(boolean useRealKappa); - - /** - *

- * getSurgeCurve. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.compressor.SurgeCurve} object - */ - public SurgeCurve getSurgeCurve(); - - /** - *

- * setSurgeCurve. - *

- * - * @param surgeCurve a {@link neqsim.processSimulation.processEquipment.compressor.SurgeCurve} - * object - */ - public void setSurgeCurve(SurgeCurve surgeCurve); - - /** - *

- * getStoneWallCurve. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.compressor.StoneWallCurve} object - */ - public StoneWallCurve getStoneWallCurve(); - - /** - *

- * setStoneWallCurve. - *

- * - * @param stoneWallCurve a - * {@link neqsim.processSimulation.processEquipment.compressor.StoneWallCurve} object - */ - public void setStoneWallCurve(StoneWallCurve stoneWallCurve); - - /** - *

- * getSpeed. - *

- * - * @param flow a double - * @param head a double - * @return a int - */ - public int getSpeed(double flow, double head); - - /** - *

- * plot. - *

- */ - public void plot(); - - /** {@inheritDoc} */ - @Override - public boolean equals(Object o); - - /** {@inheritDoc} */ - @Override - public int hashCode(); + /** + * This method is used add a curve to the CompressorChart object. + * + * @param speed a double + * @param flow an array of type double + * @param head an array of type double + * @param polytropicEfficiency an array of type double + */ + public void addCurve(double speed, double[] flow, double[] head, double[] polytropicEfficiency); + + /** + * This method is used add a set of curves to the CompressorChart object. + * + * @param chartConditions an array of type double + * @param speed an array of type double + * @param flow an array of type double + * @param head an array of type double + * @param polyEff an array of type double + */ + public void setCurves(double[] chartConditions, double[] speed, double[][] flow, double[][] head, + double[][] polyEff); + + /** + * Get method for polytropic head from reference curves. + * + * @param flow [m3/h], speed in [rpm]. + * @param speed a double + * @return polytropic head in unit [getHeadUnit] + */ + public double getPolytropicHead(double flow, double speed); + + /** + * Get method for polytropic efficiency from reference curves. + * + * @param flow [m3/h], speed in [rpm]. + * @param speed a double + * @return polytropic efficiency [%]. + */ + public double getPolytropicEfficiency(double flow, double speed); + + /** + * Set method for the reference conditions of the compressor chart. + * + * @param refMW a double + * @param refTemperature a double + * @param refPressure a double + * @param refZ a double + */ + public void setReferenceConditions(double refMW, double refTemperature, double refPressure, + double refZ); + + /** + * Checks if set to use compressor chart for compressor calculations (chart is set for + * compressor). + * + * @return a boolean + */ + public boolean isUseCompressorChart(); + + /** + * Set compressor calculations to use compressor chart. + * + * @param useCompressorChart a boolean + */ + public void setUseCompressorChart(boolean useCompressorChart); + + /** + * get the selected unit of head. + * + * @return unit of head + */ + public String getHeadUnit(); + + /** + * set unit of head. + * + * @param headUnit a {@link java.lang.String} object + */ + public void setHeadUnit(String headUnit); + + /** + * get method for kappa setting. true = real kappa is used, false = ideal kappa is used + * + * @return true/false flag + */ + public boolean useRealKappa(); + + /** + * set method for kappa setting. true = real kappa is used, false = ideal kappa is used + * + * @param useRealKappa a boolean + */ + public void setUseRealKappa(boolean useRealKappa); + + /** + *

+ * getSurgeCurve. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.compressor.SurgeCurve} object + */ + public SurgeCurve getSurgeCurve(); + + /** + *

+ * setSurgeCurve. + *

+ * + * @param surgeCurve a {@link neqsim.processSimulation.processEquipment.compressor.SurgeCurve} + * object + */ + public void setSurgeCurve(SurgeCurve surgeCurve); + + /** + *

+ * getStoneWallCurve. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.compressor.StoneWallCurve} object + */ + public StoneWallCurve getStoneWallCurve(); + + /** + *

+ * setStoneWallCurve. + *

+ * + * @param stoneWallCurve a + * {@link neqsim.processSimulation.processEquipment.compressor.StoneWallCurve} object + */ + public void setStoneWallCurve(StoneWallCurve stoneWallCurve); + + /** + *

+ * getSpeed. + *

+ * + * @param flow a double + * @param head a double + * @return a int + */ + public int getSpeed(double flow, double head); + + /** + *

+ * plot. + *

+ */ + public void plot(); + + /** {@inheritDoc} */ + @Override + public boolean equals(Object o); + + /** {@inheritDoc} */ + @Override + public int hashCode(); + + /** + *

getFlow.

+ * + * @param head a double + * @param speed a double + * @param guessFlow a double + * @return a double + */ + public double getFlow(double head, double speed, double guessFlow); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorCurve.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorCurve.java index df665cd1b2..9fd12cb869 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorCurve.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorCurve.java @@ -4,67 +4,73 @@ import java.util.Objects; /** - *

CompressorCurve class.

+ *

+ * CompressorCurve class. + *

* * @author asmund * @version $Id: $Id */ public class CompressorCurve implements java.io.Serializable { - private static final long serialVersionUID = 1000; - public double[] flow; - public double[] head; - public double[] polytropicEfficiency; - public double speed = 1000.0; + private static final long serialVersionUID = 1000; + public double[] flow; + public double[] head; + public double[] polytropicEfficiency; + public double speed = 1000.0; - /** - *

Constructor for CompressorCurve.

- */ - public CompressorCurve() { - flow = new double[] {453.2, 600.0, 750.0}; - head = new double[] {1000.0, 900.0, 800.0}; - polytropicEfficiency = new double[] {78.0, 79.0, 78.0}; - } + /** + *

+ * Constructor for CompressorCurve. + *

+ */ + public CompressorCurve() { + flow = new double[] {453.2, 600.0, 750.0}; + head = new double[] {1000.0, 900.0, 800.0}; + polytropicEfficiency = new double[] {78.0, 79.0, 78.0}; + } - /** - *

Constructor for CompressorCurve.

- * - * @param speed a double - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - * @param polytropicEfficiency an array of {@link double} objects - */ - public CompressorCurve(double speed, double[] flow, double[] head, - double[] polytropicEfficiency) { - this.speed = speed; - this.flow = flow; - this.head = head; - this.polytropicEfficiency = polytropicEfficiency; - } + /** + *

+ * Constructor for CompressorCurve. + *

+ * + * @param speed a double + * @param flow an array of type double + * @param head an array of type double + * @param polytropicEfficiency an array of type double + */ + public CompressorCurve(double speed, double[] flow, double[] head, + double[] polytropicEfficiency) { + this.speed = speed; + this.flow = flow; + this.head = head; + this.polytropicEfficiency = polytropicEfficiency; + } - /** {@inheritDoc} */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.hashCode(flow); - result = prime * result + Arrays.hashCode(head); - result = prime * result + Arrays.hashCode(polytropicEfficiency); - result = prime * result + Objects.hash(speed); - return result; - } + /** {@inheritDoc} */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Arrays.hashCode(flow); + result = prime * result + Arrays.hashCode(head); + result = prime * result + Arrays.hashCode(polytropicEfficiency); + result = prime * result + Objects.hash(speed); + return result; + } - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - CompressorCurve other = (CompressorCurve) obj; - return Arrays.equals(flow, other.flow) && Arrays.equals(head, other.head) - && Arrays.equals(polytropicEfficiency, other.polytropicEfficiency) - && Double.doubleToLongBits(speed) == Double.doubleToLongBits(other.speed); - } + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + CompressorCurve other = (CompressorCurve) obj; + return Arrays.equals(flow, other.flow) && Arrays.equals(head, other.head) + && Arrays.equals(polytropicEfficiency, other.polytropicEfficiency) + && Double.doubleToLongBits(speed) == Double.doubleToLongBits(other.speed); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorInterface.java index b70d0fa7ff..d78bb058db 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorInterface.java @@ -3,6 +3,7 @@ * * Created on 22. august 2001, 17:20 */ + package neqsim.processSimulation.processEquipment.compressor; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; @@ -17,57 +18,92 @@ * @version $Id: $Id */ public interface CompressorInterface extends ProcessEquipmentInterface, TwoPortInterface { - /** - *

- * getEnergy. - *

- * - * @return a double - */ - public double getEnergy(); + /** + *

+ * getEnergy. + *

+ * + * @return a double + */ + public double getEnergy(); + + /** + *

+ * getIsentropicEfficiency. + *

+ * + * @return a double + */ + public double getIsentropicEfficiency(); + + /** + *

+ * setIsentropicEfficiency. + *

+ * + * @param isentropicEfficiency a double + */ + public void setIsentropicEfficiency(double isentropicEfficiency); + + /** + *

+ * getPolytropicEfficiency. + *

+ * + * @return a double + */ + public double getPolytropicEfficiency(); + + /** + *

+ * setPolytropicEfficiency. + *

+ * + * @param polytropicEfficiency a double + */ + public void setPolytropicEfficiency(double polytropicEfficiency); + + /** + *

+ * getAntiSurge. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.compressor.AntiSurge} object + */ + public AntiSurge getAntiSurge(); - /** - *

- * getIsentropicEfficiency. - *

- * - * @return a double - */ - public double getIsentropicEfficiency(); + /** + *

getDistanceToSurge.

+ * + * @return a double + */ + public double getDistanceToSurge(); - /** - *

- * setIsentropicEfficiency. - *

- * - * @param isentropicEfficiency a double - */ - public void setIsentropicEfficiency(double isentropicEfficiency); + /** + *

setMaximumSpeed.

+ * + * @param maxSpeed a double + */ + public void setMaximumSpeed(double maxSpeed); - /** - *

- * getPolytropicEfficiency. - *

- * - * @return a double - */ - public double getPolytropicEfficiency(); + /** + *

setMinimumSpeed.

+ * + * @param minspeed a double + */ + public void setMinimumSpeed(double minspeed); - /** - *

- * setPolytropicEfficiency. - *

- * - * @param polytropicEfficiency a double - */ - public void setPolytropicEfficiency(double polytropicEfficiency); + /** + *

getMaximumSpeed.

+ * + * @return a double + */ + public double getMaximumSpeed(); - /** - *

- * getAntiSurge. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.compressor.AntiSurge} object - */ - public AntiSurge getAntiSurge(); + /** + *

getMinimumSpeed.

+ * + * @return a double + */ + public double getMinimumSpeed(); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorPropertyProfile.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorPropertyProfile.java index 3f405b9289..5a155a94ee 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorPropertyProfile.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/CompressorPropertyProfile.java @@ -5,34 +5,79 @@ import neqsim.thermo.system.SystemInterface; /** - * @author ESOL + *

+ * CompressorPropertyProfile class. + *

* + * @author ESOL + * @version $Id: $Id */ public class CompressorPropertyProfile implements Serializable { private static final long serialVersionUID = 1L; + private ArrayList fluid = new ArrayList(); private boolean isActive = false; + /** + *

+ * Constructor for CompressorPropertyProfile. + *

+ */ public CompressorPropertyProfile() {} + /** + *

+ * addFluid. + *

+ * + * @param inputFLuid a {@link neqsim.thermo.system.SystemInterface} object + */ public void addFluid(SystemInterface inputFLuid) { inputFLuid.initPhysicalProperties(); fluid.add(inputFLuid); } + /** + *

+ * isActive. + *

+ * + * @return a boolean + */ public boolean isActive() { return isActive; } + /** + *

+ * setActive. + *

+ * + * @param isActive a boolean + */ public void setActive(boolean isActive) { this.isActive = isActive; fluid.clear(); } + /** + *

+ * Getter for the field fluid. + *

+ * + * @return a {@link java.util.ArrayList} object + */ public ArrayList getFluid() { return fluid; } + /** + *

+ * Setter for the field fluid. + *

+ * + * @param fluid a {@link java.util.ArrayList} object + */ public void setFluid(ArrayList fluid) { this.fluid = fluid; } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/StoneWallCurve.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/StoneWallCurve.java index 1ad453d54f..6727b9f236 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/compressor/StoneWallCurve.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/StoneWallCurve.java @@ -17,125 +17,130 @@ * @version $Id: $Id */ public class StoneWallCurve implements java.io.Serializable { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(StoneWallCurve.class); - double[] flow; - double[] head; - double[] chartConditions = null; - private boolean isActive = false; - final WeightedObservedPoints flowFitter = new WeightedObservedPoints(); - PolynomialFunction flowFitterFunc = null; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(StoneWallCurve.class); - /** - *

- * Constructor for StoneWallCurve. - *

- */ - public StoneWallCurve() { - // flow = new double[] {453.2, 600.0, 750.0}; - // head = new double[] {1000.0, 900.0, 800.0}; - } + double[] flow; + double[] head; + double[] chartConditions = null; + private boolean isActive = false; + final WeightedObservedPoints flowFitter = new WeightedObservedPoints(); + PolynomialFunction flowFitterFunc = null; - /** - *

- * Constructor for StoneWallCurve. - *

- * - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - */ - public StoneWallCurve(double[] flow, double[] head) { - this.flow = flow; - this.head = head; - } + /** + *

+ * Constructor for StoneWallCurve. + *

+ */ + public StoneWallCurve() { + // flow = new double[] {453.2, 600.0, 750.0}; + // head = new double[] {1000.0, 900.0, 800.0}; + } - /** - *

- * setCurve. - *

- * - * @param chartConditions an array of {@link double} objects - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - */ - public void setCurve(double[] chartConditions, double[] flow, double[] head) { - this.chartConditions = chartConditions; - for (int i = 0; i < flow.length; i++) { - flowFitter.add(head[i], flow[i]); - } - PolynomialCurveFitter fitter = PolynomialCurveFitter.create(2); - flowFitterFunc = new PolynomialFunction(fitter.fit(flowFitter.toList())); - isActive = true; - } + /** + *

+ * Constructor for StoneWallCurve. + *

+ * + * @param flow an array of type double + * @param head an array of type double + */ + public StoneWallCurve(double[] flow, double[] head) { + this.flow = flow; + this.head = head; + } - /** - *

- * getStoneWallFlow. - *

- * - * @param head a double - * @return a double - */ - public double getStoneWallFlow(double head) { - return flowFitterFunc.value(head); + /** + *

+ * setCurve. + *

+ * + * @param chartConditions an array of type double + * @param flow an array of type double + * @param head an array of type double + */ + public void setCurve(double[] chartConditions, double[] flow, double[] head) { + this.chartConditions = chartConditions; + for (int i = 0; i < flow.length; i++) { + flowFitter.add(head[i], flow[i]); } + PolynomialCurveFitter fitter = PolynomialCurveFitter.create(2); + flowFitterFunc = new PolynomialFunction(fitter.fit(flowFitter.toList())); + isActive = true; + } - /** - *

- * isStoneWall. - *

- * - * @param head a double - * @param flow a double - * @return a boolean - */ - public boolean isStoneWall(double head, double flow) { - if (getStoneWallFlow(head) < flow) - return true; - else - return false; - } + /** + *

+ * getStoneWallFlow. + *

+ * + * @param head a double + * @return a double + */ + public double getStoneWallFlow(double head) { + return flowFitterFunc.value(head); + } - /** - * @return boolean - */ - boolean isActive() { - return isActive; + /** + *

+ * isStoneWall. + *

+ * + * @param head a double + * @param flow a double + * @return a boolean + */ + public boolean isStoneWall(double head, double flow) { + if (getStoneWallFlow(head) < flow) { + return true; + } else { + return false; } + } - /** - * @param isActive true if stone wall curve should be used for compressor calculations - */ - void setActive(boolean isActive) { - this.isActive = isActive; - } + /** + * @return boolean + */ + boolean isActive() { + return isActive; + } - /** {@inheritDoc} */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.hashCode(chartConditions); - result = prime * result + Arrays.hashCode(flow); - result = prime * result + Arrays.hashCode(head); - result = prime * result + Objects.hash(flowFitterFunc, isActive); - // result = prime * result + Objects.hash(flowFitter); - return result; - } + /** + * @param isActive true if stone wall curve should be used for compressor calculations + */ + void setActive(boolean isActive) { + this.isActive = isActive; + } + + /** {@inheritDoc} */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Arrays.hashCode(chartConditions); + result = prime * result + Arrays.hashCode(flow); + result = prime * result + Arrays.hashCode(head); + result = prime * result + Objects.hash(flowFitterFunc, isActive); + // result = prime * result + Objects.hash(flowFitter); + return result; + } - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - StoneWallCurve other = (StoneWallCurve) obj; - return Arrays.equals(chartConditions, other.chartConditions) && Arrays.equals(flow, other.flow) - // && Objects.equals(flowFitter, other.flowFitter) - && Objects.equals(flowFitterFunc, other.flowFitterFunc) && Arrays.equals(head, other.head) - && isActive == other.isActive; + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; } + StoneWallCurve other = (StoneWallCurve) obj; + return Arrays.equals(chartConditions, other.chartConditions) && Arrays.equals(flow, other.flow) + && Objects.equals(flowFitterFunc, other.flowFitterFunc) && Arrays.equals(head, other.head) + && isActive == other.isActive; + // && Objects.equals(flowFitter, other.flowFitter) + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/compressor/SurgeCurve.java b/src/main/java/neqsim/processSimulation/processEquipment/compressor/SurgeCurve.java index 20f3d1ae68..7011bf34b4 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/compressor/SurgeCurve.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/compressor/SurgeCurve.java @@ -17,131 +17,136 @@ * @version $Id: $Id */ public class SurgeCurve implements java.io.Serializable { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(SurgeCurve.class); - double[] flow; - double[] head; - double[] chartConditions = null; - private boolean isActive = false; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SurgeCurve.class); - final WeightedObservedPoints flowFitter = new WeightedObservedPoints(); - PolynomialFunction flowFitterFunc = null; + double[] flow; + double[] head; + double[] chartConditions = null; + private boolean isActive = false; - /** - *

- * Constructor for SurgeCurve. - *

- */ - public SurgeCurve() {} + final WeightedObservedPoints flowFitter = new WeightedObservedPoints(); + PolynomialFunction flowFitterFunc = null; - /** - *

- * Constructor for SurgeCurve. - *

- * - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - */ - public SurgeCurve(double[] flow, double[] head) { - this.flow = flow; - this.head = head; - } + /** + *

+ * Constructor for SurgeCurve. + *

+ */ + public SurgeCurve() {} - /** - *

- * setCurve. - *

- * - * @param chartConditions an array of {@link double} objects - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - */ - public void setCurve(double[] chartConditions, double[] flow, double[] head) { - this.flow = flow; - this.head = head; - this.chartConditions = chartConditions; - for (int i = 0; i < flow.length; i++) { - flowFitter.add(head[i], flow[i]); - } - PolynomialCurveFitter fitter = PolynomialCurveFitter.create(2); - flowFitterFunc = new PolynomialFunction(fitter.fit(flowFitter.toList())); - isActive = true; + /** + *

+ * Constructor for SurgeCurve. + *

+ * + * @param flow an array of type double + * @param head an array of type double + */ + public SurgeCurve(double[] flow, double[] head) { + this.flow = flow; + this.head = head; + } - // trykkforhold paa y-aksen mot redused flow - // dp over sugetrykk - // surge kurva er invariat i plottet trykkforhold mot redused flow - // CCC bruker dP/ (over maaleblnde som representerer flow) dP/Ps - paa x-aksen - // trykkforhold paa y-aksen (trykk ut/trykk inn) + /** + *

+ * setCurve. + *

+ * + * @param chartConditions an array of type double + * @param flow an array of type double + * @param head an array of type double + */ + public void setCurve(double[] chartConditions, double[] flow, double[] head) { + this.flow = flow; + this.head = head; + this.chartConditions = chartConditions; + for (int i = 0; i < flow.length; i++) { + flowFitter.add(head[i], flow[i]); } + PolynomialCurveFitter fitter = PolynomialCurveFitter.create(2); + flowFitterFunc = new PolynomialFunction(fitter.fit(flowFitter.toList())); + isActive = true; - /** - *

- * getSurgeFlow. - *

- * - * @param head a double - * @return a double - */ - public double getSurgeFlow(double head) { - return flowFitterFunc.value(head); - } + // trykkforhold paa y-aksen mot redused flow + // dp over sugetrykk + // surge kurva er invariat i plottet trykkforhold mot redused flow + // CCC bruker dP/ (over maaleblnde som representerer flow) dP/Ps - paa x-aksen + // trykkforhold paa y-aksen (trykk ut/trykk inn) + } - /** - *

- * isSurge. - *

- * - * @param head a double - * @param flow a double - * @return a boolean - */ - public boolean isSurge(double head, double flow) { - if (getSurgeFlow(head) > flow) - return true; - else - return false; - } + /** + *

+ * getSurgeFlow. + *

+ * + * @param head a double + * @return a double + */ + public double getSurgeFlow(double head) { + return flowFitterFunc.value(head); + } - /** - * @return boolean - */ - boolean isActive() { - return isActive; + /** + *

+ * isSurge. + *

+ * + * @param head a double + * @param flow a double + * @return a boolean + */ + public boolean isSurge(double head, double flow) { + if (getSurgeFlow(head) > flow) { + return true; + } else { + return false; } + } - /** - * @param isActive true if surge curve should be used for compressor calculations - */ - void setActive(boolean isActive) { - this.isActive = isActive; - } + /** + * @return boolean + */ + boolean isActive() { + return isActive; + } - /** {@inheritDoc} */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.hashCode(chartConditions); - result = prime * result + Arrays.hashCode(flow); - result = prime * result + Arrays.hashCode(head); - result = prime * result + Objects.hash(flowFitterFunc, isActive); - // result = prime * result + Objects.hash(flowFitter); - return result; - } + /** + * @param isActive true if surge curve should be used for compressor calculations + */ + void setActive(boolean isActive) { + this.isActive = isActive; + } + + /** {@inheritDoc} */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Arrays.hashCode(chartConditions); + result = prime * result + Arrays.hashCode(flow); + result = prime * result + Arrays.hashCode(head); + result = prime * result + Objects.hash(flowFitterFunc, isActive); + // result = prime * result + Objects.hash(flowFitter); + return result; + } - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - SurgeCurve other = (SurgeCurve) obj; - return Arrays.equals(chartConditions, other.chartConditions) && Arrays.equals(flow, other.flow) - // && Objects.equals(flowFitter, other.flowFitter) - && Objects.equals(flowFitterFunc, other.flowFitterFunc) && Arrays.equals(head, other.head) - && isActive == other.isActive; + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; } + SurgeCurve other = (SurgeCurve) obj; + return Arrays.equals(chartConditions, other.chartConditions) && Arrays.equals(flow, other.flow) + && Objects.equals(flowFitterFunc, other.flowFitterFunc) && Arrays.equals(head, other.head) + && isActive == other.isActive; + // && Objects.equals(flowFitter, other.flowFitter) + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/distillation/Condenser.java b/src/main/java/neqsim/processSimulation/processEquipment/distillation/Condenser.java index df3f1c5b19..4bb8c4f304 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/distillation/Condenser.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/distillation/Condenser.java @@ -1,5 +1,9 @@ package neqsim.processSimulation.processEquipment.distillation; +import java.util.UUID; +import neqsim.processSimulation.processEquipment.splitter.Splitter; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -12,73 +16,153 @@ * @version $Id: $Id */ public class Condenser extends SimpleTray { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - private double refluxRatio = 0.1; - boolean refluxIsSet = false; - double duty = 0.0; + private double refluxRatio = 0.1; + boolean refluxIsSet = false; + double duty = 0.0; + boolean totalCondenser = false; + Splitter mixedStreamSplitter = null; - /** {@inheritDoc} */ - public Condenser(String name) { - super(name); - } + /** + *

+ * Setter for the field totalCondenser. + *

+ * + * @param isTotalCondenser a boolean + */ + public void setTotalCondenser(boolean isTotalCondenser) { + this.totalCondenser = isTotalCondenser; + } - /** - *

- * Getter for the field refluxRatio. - *

- * - * @return the refluxRatio - */ - public double getRefluxRatio() { - return refluxRatio; - } + /** + * {@inheritDoc} + * + * @param name a {@link java.lang.String} object + */ + public Condenser(String name) { + super(name); + } + + /** + *

+ * Getter for the field refluxRatio. + *

+ * + * @return the refluxRatio + */ + public double getRefluxRatio() { + return refluxRatio; + } + + /** + *

+ * Setter for the field refluxRatio. + *

+ * + * @param refluxRatio the refluxRatio to set + */ + public void setRefluxRatio(double refluxRatio) { + this.refluxRatio = refluxRatio; + refluxIsSet = true; + } - /** - *

- * Setter for the field refluxRatio. - *

- * - * @param refluxRatio the refluxRatio to set - */ - public void setRefluxRatio(double refluxRatio) { - this.refluxRatio = refluxRatio; - refluxIsSet = true; + /** + *

+ * Getter for the field duty. + *

+ * + * @return a double + */ + public double getDuty() { + // return calcMixStreamEnthalpy(); + return duty; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getGasOutStream() { + if (totalCondenser) { + return new Stream("", mixedStreamSplitter.getSplitStream(1)); + } else { + return super.getGasOutStream(); } + } + + /** + *

+ * getProductOutStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getProductOutStream() { + return getGasOutStream(); + } - /** - *

- * Getter for the field duty. - *

- * - * @return a double - */ - public double getDuty() { - // return calcMixStreamEnthalpy(); - return duty; + /** + * {@inheritDoc} + * + *

+ * getLiquidOutStream. + *

+ */ + @Override + public StreamInterface getLiquidOutStream() { + if (totalCondenser) { + return new Stream("", mixedStreamSplitter.getSplitStream(0)); + } else { + return super.getLiquidOutStream(); } + } - /** {@inheritDoc} */ - @Override - public void run() { - // System.out.println("guess temperature " + getTemperature()); - if (!refluxIsSet) { - super.run(); - } else { - SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); - // System.out.println("total number of moles " + - // thermoSystem2.getTotalNumberOfMoles()); - mixedStream.setThermoSystem(thermoSystem2); - ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); - testOps.PVrefluxFlash(refluxRatio, 0); - } - // System.out.println("enthalpy: " + - // mixedStream.getThermoSystem().getEnthalpy()); - // System.out.println("enthalpy: " + enthalpy); - // System.out.println("temperature: " + - // mixedStream.getThermoSystem().getTemperature()); - duty = mixedStream.getFluid().getEnthalpy() - calcMixStreamEnthalpy0(); - energyStream.setDuty(duty); - // System.out.println("beta " + mixedStream.getThermoSystem().getBeta()) + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + // System.out.println("guess temperature " + getTemperature()); + if (refluxIsSet && totalCondenser) { + UUID oldID = getCalculationIdentifier(); + SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); + mixedStream.setThermoSystem(thermoSystem2); + ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); + if (streams.size() > 0) { + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().init(0); + mixStream(); + } + double enthalpy = calcMixStreamEnthalpy(); + try { + testOps.bubblePointTemperatureFlash(); + } catch (Exception e) { + e.printStackTrace(); + } + mixedStream.getThermoSystem().init(3); + // mixedStream.getThermoSystem().prettyPrint(); + + mixedStreamSplitter = new Splitter("splitter", mixedStream, 2); + mixedStreamSplitter.setSplitFactors(new double[] {refluxRatio, 1.0 - refluxRatio}); + mixedStreamSplitter.run(); + } else if (!refluxIsSet) { + UUID oldID = getCalculationIdentifier(); + super.run(id); + setCalculationIdentifier(oldID); + } else { + SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); + // System.out.println("total number of moles " + + // thermoSystem2.getTotalNumberOfMoles()); + mixedStream.setThermoSystem(thermoSystem2); + ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); + testOps.PVrefluxFlash(refluxRatio, 0); } + // System.out.println("enthalpy: " + + // mixedStream.getThermoSystem().getEnthalpy()); + // System.out.println("enthalpy: " + enthalpy); + // System.out.println("temperature: " + + // mixedStream.getThermoSystem().getTemperature()); + duty = mixedStream.getFluid().getEnthalpy() - calcMixStreamEnthalpy0(); + energyStream.setDuty(duty); + // System.out.println("beta " + mixedStream.getThermoSystem().getBeta()) + + setCalculationIdentifier(id); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumn.java b/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumn.java index 053a384814..222c902371 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumn.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumn.java @@ -2,6 +2,9 @@ import java.util.ArrayList; import java.util.Objects; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.heatExchanger.Heater; import neqsim.processSimulation.processEquipment.mixer.Mixer; @@ -9,6 +12,7 @@ import neqsim.processSimulation.processEquipment.separator.Separator; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** @@ -20,664 +24,776 @@ * @version $Id: $Id */ public class DistillationColumn extends ProcessEquipmentBaseClass implements DistillationInterface { - private static final long serialVersionUID = 1000; - private boolean doInitializion = true; - boolean hasReboiler = false, hasCondenser = false; - protected ArrayList trays = new ArrayList(0); - double condenserCoolingDuty = 10.0; - private double reboilerTemperature = 273.15; - private double condenserTemperature = 270.15; - double topTrayPressure = -1.0, bottomTrayPressure = -1.0; - int numberOfTrays = 1; - private int feedTrayNumber = 1; - StreamInterface stream_3 = new Stream("stream_3"), gasOutStream = new Stream("gasOutStream"), - liquidOutStream = new Stream("liquidOutStream"), feedStream = null; - boolean stream_3isset = false; - private double internalDiameter = 1.0; - neqsim.processSimulation.processSystem.ProcessSystem distoperations; - Heater heater; - Separator separator2; - - - /** - *

- * Constructor for DistillationColumn. - *

- * - * @param numberOfTraysLocal a int - * @param hasReboiler a boolean - * @param hasCondenser a boolean - */ - public DistillationColumn(int numberOfTraysLocal, boolean hasReboiler, boolean hasCondenser) { - super("DistillationColumn"); - this.hasReboiler = hasReboiler; - this.hasCondenser = hasCondenser; - distoperations = new neqsim.processSimulation.processSystem.ProcessSystem(); - this.numberOfTrays = numberOfTraysLocal; - if (hasReboiler) { - trays.add(new Reboiler("Reboiler")); - this.numberOfTrays++; - } - for (int i = 0; i < numberOfTraysLocal; i++) { - trays.add(new SimpleTray("SimpleTray" + i + 1)); - } - if (hasCondenser) { - trays.add(new Condenser("Condenser")); - this.numberOfTrays++; - } - for (int i = 0; i < this.numberOfTrays; i++) { - distoperations.add(trays.get(i)); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(DistillationColumn.class); + + private boolean doInitializion = true; + boolean hasReboiler = false; + boolean hasCondenser = false; + protected ArrayList trays = new ArrayList(0); + double condenserCoolingDuty = 10.0; + private double reboilerTemperature = 273.15; + private double condenserTemperature = 270.15; + double topTrayPressure = -1.0; + double bottomTrayPressure = -1.0; + int numberOfTrays = 1; + int maxNumberOfIterations = 10; + private int feedTrayNumber = 1; + StreamInterface stream_3 = new Stream("stream_3"); + StreamInterface gasOutStream = new Stream("gasOutStream"); + StreamInterface liquidOutStream = new Stream("liquidOutStream"); + StreamInterface feedStream = null; + boolean stream_3isset = false; + private double internalDiameter = 1.0; + neqsim.processSimulation.processSystem.ProcessSystem distoperations; + Heater heater; + Separator separator2; + private double err = 1.0e10; + + /** + *

+ * Constructor for DistillationColumn. + *

+ * + * @param numberOfTraysLocal a int + * @param hasReboiler a boolean + * @param hasCondenser a boolean + */ + public DistillationColumn(int numberOfTraysLocal, boolean hasReboiler, boolean hasCondenser) { + super("DistillationColumn"); + this.hasReboiler = hasReboiler; + this.hasCondenser = hasCondenser; + distoperations = new neqsim.processSimulation.processSystem.ProcessSystem(); + this.numberOfTrays = numberOfTraysLocal; + if (hasReboiler) { + trays.add(new Reboiler("Reboiler")); + this.numberOfTrays++; + } + for (int i = 0; i < numberOfTraysLocal; i++) { + trays.add(new SimpleTray("SimpleTray" + i + 1)); + } + if (hasCondenser) { + trays.add(new Condenser("Condenser")); + this.numberOfTrays++; + } + for (int i = 0; i < this.numberOfTrays; i++) { + distoperations.add(trays.get(i)); + } + } + + /** + *

+ * addFeedStream. + *

+ * + * @param inputStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + * @param feedTrayNumber a int + */ + public void addFeedStream(StreamInterface inputStream, int feedTrayNumber) { + feedStream = inputStream; + getTray(feedTrayNumber).addStream(inputStream); + setFeedTrayNumber(feedTrayNumber); + double moles = inputStream.getThermoSystem().getTotalNumberOfMoles(); + gasOutStream.setThermoSystem(inputStream.getThermoSystem().clone()); + gasOutStream.getThermoSystem().setTotalNumberOfMoles(moles / 2.0); + liquidOutStream.setThermoSystem(inputStream.getThermoSystem().clone()); + liquidOutStream.getThermoSystem().setTotalNumberOfMoles(moles / 2.0); + } + + /** + *

+ * init. + *

+ */ + public void init() { + if (!isDoInitializion()) { + return; + } + setDoInitializion(false); + ((Runnable) trays.get(feedTrayNumber)).run(); + if (getTray(feedTrayNumber).getFluid().getNumberOfPhases() == 1) { + for (int i = 0; i < numberOfTrays; i++) { + if (getTray(i).getNumberOfInputStreams() > 0 && i != feedTrayNumber) { + getTray(feedTrayNumber).addStream(trays.get(i).getStream(0)); + getTray(feedTrayNumber).run(); + getTray(feedTrayNumber) + .removeInputStream(getTray(feedTrayNumber).getNumberOfInputStreams() - 1); + if (getTray(feedTrayNumber).getThermoSystem().getNumberOfPhases() > 1) { + break; + } + } else if (i == feedTrayNumber && getTray(i).getNumberOfInputStreams() > 1) { + getTray(feedTrayNumber).addStream(trays.get(i).getStream(1)); + ((Runnable) trays.get(feedTrayNumber)).run(); + getTray(feedTrayNumber) + .removeInputStream(getTray(feedTrayNumber).getNumberOfInputStreams() - 1); + if (getTray(feedTrayNumber).getThermoSystem().getNumberOfPhases() > 1) { + break; + } } + } } - /** - *

- * addFeedStream. - *

- * - * @param inputStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - * @param feedTrayNumber a int - */ - public void addFeedStream(StreamInterface inputStream, int feedTrayNumber) { - feedStream = inputStream; - getTray(feedTrayNumber).addStream(inputStream); - setFeedTrayNumber(feedTrayNumber); - double moles = inputStream.getThermoSystem().getTotalNumberOfMoles(); - gasOutStream.setThermoSystem(inputStream.getThermoSystem().clone()); - gasOutStream.getThermoSystem().setTotalNumberOfMoles(moles / 2.0); - liquidOutStream.setThermoSystem(inputStream.getThermoSystem().clone()); - liquidOutStream.getThermoSystem().setTotalNumberOfMoles(moles / 2.0); + if (getTray(feedTrayNumber).getFluid().getNumberOfPhases() == 1) { + getTray(feedTrayNumber).getThermoSystem().init(0); + getTray(feedTrayNumber).getThermoSystem().init(3); } - /** - *

- * init. - *

- */ - public void init() { - if (!isDoInitializion()) { - return; - } - setDoInitializion(false); - ((Runnable) trays.get(feedTrayNumber)).run(); - - if (getTray(feedTrayNumber).getStream(0).getFluid().getNumberOfPhases() == 1) { - for (int i = 0; i < numberOfTrays; i++) { - if (getTray(i).getNumberOfInputStreams() > 0 && i != feedTrayNumber) { - getTray(feedTrayNumber).addStream(trays.get(i).getStream(0)); - ((Runnable) trays.get(feedTrayNumber)).run(); - if (getTray(feedTrayNumber).getStream(0).getFluid().getNumberOfPhases() > 1) - break; - } - } - } - ((MixerInterface) trays.get(numberOfTrays - 1)) - .addStream(trays.get(feedTrayNumber).getGasOutStream()); - ((Mixer) trays.get(numberOfTrays - 1)).getStream(0).getThermoSystem() - .setTotalNumberOfMoles(((Mixer) trays.get(numberOfTrays - 1)).getStream(0) - .getThermoSystem().getTotalNumberOfMoles() * (1.0e-6)); - ((MixerInterface) trays.get(0)).addStream(trays.get(feedTrayNumber).getLiquidOutStream()); - int streamNumbReboil = (trays.get(0)).getNumberOfInputStreams() - 1; - ((Mixer) trays.get(0)).getStream(streamNumbReboil).getThermoSystem() - .setTotalNumberOfMoles(((Mixer) trays.get(0)).getStream(streamNumbReboil) - .getThermoSystem().getTotalNumberOfMoles() * (1.0e-6)); - - // ((Runnable) trays.get(numberOfTrays - 1)).run(); - ((Runnable) trays.get(0)).run(); - - condenserTemperature = - ((MixerInterface) trays.get(numberOfTrays - 1)).getThermoSystem().getTemperature(); - reboilerTemperature = ((MixerInterface) trays.get(0)).getThermoSystem().getTemperature(); - - // double deltaTemp = (reboilerTemperature - condenserTemperature) / (numberOfTrays * 1.0); - double feedTrayTemperature = - getTray(getFeedTrayNumber()).getThermoSystem().getTemperature(); - - double deltaTempCondenser = (feedTrayTemperature - condenserTemperature) - / (numberOfTrays * 1.0 - feedTrayNumber - 1); - double deltaTempReboiler = - (reboilerTemperature - feedTrayTemperature) / (feedTrayNumber * 1.0); - - double delta = 0; - for (int i = feedTrayNumber + 1; i < numberOfTrays; i++) { - delta += deltaTempCondenser; - ((Mixer) trays.get(i)).setTemperature( - getTray(getFeedTrayNumber()).getThermoSystem().getTemperature() - delta); - } - delta = 0; - for (int i = feedTrayNumber - 1; i >= 0; i--) { - delta += deltaTempReboiler; - ((Mixer) trays.get(i)).setTemperature( - getTray(getFeedTrayNumber()).getThermoSystem().getTemperature() + delta); - } + // ((Mixer) trays.get(numberOfTrays - 1)).getStream(0).getThermoSystem() + // .setTotalNumberOfMoles(((Mixer) trays.get(numberOfTrays - + // 1)).getStream(0).getThermoSystem() + // .getTotalNumberOfMoles() * (1.0)); + ((MixerInterface) trays.get(0)) + .addStream(trays.get(feedTrayNumber).getLiquidOutStream().clone()); + // ((Mixer) + // trays.get(0)).getStream(streamNumbReboil).getThermoSystem().setTotalNumberOfMoles( + // ((Mixer) + // trays.get(0)).getStream(streamNumbReboil).getThermoSystem().getTotalNumberOfMoles() + // * (1.0)); + + // ((Runnable) trays.get(numberOfTrays - 1)).run(); + ((Runnable) trays.get(0)).run(); + + double feedTrayTemperature = getTray(getFeedTrayNumber()).getTemperature(); + + if (trays.get(numberOfTrays - 1).getNumberOfInputStreams() > 0) { + condenserTemperature = + ((MixerInterface) trays.get(numberOfTrays - 1)).getThermoSystem().getTemperature(); + } else { + condenserTemperature = feedTrayTemperature - 1.0; + } - for (int i = 1; i < numberOfTrays - 1; i++) { - ((MixerInterface) trays.get(i)).addStream(trays.get(i - 1).getGasOutStream()); - trays.get(i).init(); - ((Runnable) trays.get(i)).run(); - } + reboilerTemperature = ((MixerInterface) trays.get(0)).getThermoSystem().getTemperature(); - ((MixerInterface) trays.get(numberOfTrays - 1)).replaceStream(0, - trays.get(numberOfTrays - 2).getGasOutStream()); - trays.get(numberOfTrays - 1).init(); - ((Runnable) trays.get(numberOfTrays - 1)).run(); + double deltaTempCondenser = + (feedTrayTemperature - condenserTemperature) / (numberOfTrays * 1.0 - feedTrayNumber - 1); + double deltaTempReboiler = (reboilerTemperature - feedTrayTemperature) / (feedTrayNumber * 1.0); - for (int i = numberOfTrays - 2; i >= 1; i--) { - ((MixerInterface) trays.get(i)).addStream(trays.get(i + 1).getLiquidOutStream()); - trays.get(i).init(); - ((Runnable) trays.get(i)).run(); - } - int streamNumb = (trays.get(0)).getNumberOfInputStreams() - 1; - ((MixerInterface) trays.get(0)).replaceStream(streamNumb, - trays.get(1).getLiquidOutStream()); - trays.get(0).init(); - ((Runnable) trays.get(0)).run(); + double delta = 0; + for (int i = feedTrayNumber + 1; i < numberOfTrays; i++) { + delta += deltaTempCondenser; + ((Mixer) trays.get(i)) + .setTemperature(getTray(getFeedTrayNumber()).getThermoSystem().getTemperature() - delta); } - - /** - *

- * Getter for the field gasOutStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface getGasOutStream() { - return gasOutStream; + delta = 0; + for (int i = feedTrayNumber - 1; i >= 0; i--) { + delta += deltaTempReboiler; + ((Mixer) trays.get(i)) + .setTemperature(getTray(getFeedTrayNumber()).getThermoSystem().getTemperature() + delta); } - /** - *

- * Getter for the field liquidOutStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface getLiquidOutStream() { - return liquidOutStream; + for (int i = 1; i < numberOfTrays; i++) { + ((MixerInterface) trays.get(i)).addStream(trays.get(i - 1).getGasOutStream()); + trays.get(i).init(); + ((Runnable) trays.get(i)).run(); } - /** - *

- * getTray. - *

- * - * @param trayNumber a int - * @return a {@link neqsim.processSimulation.processEquipment.distillation.SimpleTray} object - */ - public SimpleTray getTray(int trayNumber) { - return trays.get(trayNumber); + for (int i = numberOfTrays - 2; i >= 1; i--) { + ((MixerInterface) trays.get(i)).addStream(trays.get(i + 1).getLiquidOutStream()); + trays.get(i).init(); + ((Runnable) trays.get(i)).run(); + } + int streamNumb = (trays.get(0)).getNumberOfInputStreams() - 1; + ((MixerInterface) trays.get(0)).replaceStream(streamNumb, trays.get(1).getLiquidOutStream()); + trays.get(0).init(); + ((Runnable) trays.get(0)).run(); + + // massBalanceCheck(); + } + + /** + *

+ * Getter for the field gasOutStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getGasOutStream() { + return gasOutStream; + } + + /** + *

+ * Getter for the field liquidOutStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getLiquidOutStream() { + return liquidOutStream; + } + + /** + *

+ * getTray. + *

+ * + * @param trayNumber a int + * @return a {@link neqsim.processSimulation.processEquipment.distillation.SimpleTray} object + */ + public SimpleTray getTray(int trayNumber) { + return trays.get(trayNumber); + } + + /** {@inheritDoc} */ + @Override + public void setNumberOfTrays(int number) { + int oldNumberOfTrays = numberOfTrays; + + int tempNumberOfTrays = number; + + if (hasReboiler) { + tempNumberOfTrays++; + } + if (hasCondenser) { + tempNumberOfTrays++; } - /** {@inheritDoc} */ - @Override - public void setNumberOfTrays(int number) { - int oldNumberOfTrays = numberOfTrays; - - int tempNumberOfTrays = number; - - if (hasReboiler) { - tempNumberOfTrays++; - } - if (hasCondenser) { - tempNumberOfTrays++; - } - - int change = tempNumberOfTrays - oldNumberOfTrays; - - if (change > 0) { - for (int i = 0; i < change; i++) { - trays.add(1, new SimpleTray("SimpleTray" + oldNumberOfTrays + i + 1)); - } - } else if (change < 0) { - for (int i = 0; i > change; i--) { - trays.remove(1); - } - } - numberOfTrays = tempNumberOfTrays; + int change = tempNumberOfTrays - oldNumberOfTrays; - setDoInitializion(true); - init(); + if (change > 0) { + for (int i = 0; i < change; i++) { + trays.add(1, new SimpleTray("SimpleTray" + oldNumberOfTrays + i + 1)); + } + } else if (change < 0) { + for (int i = 0; i > change; i--) { + trays.remove(1); + } } - - /** - *

- * setTopCondenserDuty. - *

- * - * @param duty a double - */ - public void setTopCondenserDuty(double duty) { - condenserCoolingDuty = duty; + numberOfTrays = tempNumberOfTrays; + + setDoInitializion(true); + init(); + } + + /** + *

+ * setTopCondenserDuty. + *

+ * + * @param duty a double + */ + public void setTopCondenserDuty(double duty) { + condenserCoolingDuty = duty; + } + + /** + *

+ * setTopPressure. + *

+ * + * @param topPressure a double + */ + public void setTopPressure(double topPressure) { + topTrayPressure = topPressure; + } + + /** + *

+ * setBottomPressure. + *

+ * + * @param bottomPressure a double + */ + public void setBottomPressure(double bottomPressure) { + bottomTrayPressure = bottomPressure; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (bottomTrayPressure < 0) { + bottomTrayPressure = getTray(feedTrayNumber).getStream(0).getPressure(); } - - /** - *

- * setTopPressure. - *

- * - * @param topPressure a double - */ - public void setTopPressure(double topPressure) { - topTrayPressure = topPressure; + if (topTrayPressure < 0) { + topTrayPressure = getTray(feedTrayNumber).getStream(0).getPressure(); } - /** - *

- * setBottomPressure. - *

- * - * @param bottomPressure a double - */ - public void setBottomPressure(double bottomPressure) { - bottomTrayPressure = bottomPressure; + double dp = 0.0; + if (numberOfTrays > 1) { + dp = (bottomTrayPressure - topTrayPressure) / (numberOfTrays - 1.0); } - - /** {@inheritDoc} */ - @Override - public void run() { - double dp = 0.0; - if (bottomTrayPressure < 0) { - bottomTrayPressure = getTray(feedTrayNumber).getStream(0).getPressure(); - } - if (topTrayPressure < 0) { - topTrayPressure = getTray(feedTrayNumber).getStream(0).getPressure(); - } - if (numberOfTrays > 1) { - dp = (bottomTrayPressure - topTrayPressure) / (numberOfTrays - 1.0); - } + for (int i = 0; i < numberOfTrays; i++) { + trays.get(i).setPressure(bottomTrayPressure - i * dp); + } + SystemInterface inpS = feedStream.getThermoSystem().clone(); + getTray(feedTrayNumber).getStream(0).setThermoSystem(inpS); + + if (numberOfTrays == 1) { + trays.get(0).run(id); + gasOutStream.setThermoSystem(trays.get(0).getGasOutStream().getThermoSystem().clone()); + liquidOutStream.setThermoSystem(trays.get(0).getLiquidOutStream().getThermoSystem().clone()); + } else { + if (isDoInitializion()) { + this.init(); + } + err = 1.0e10; + double errOld; + int iter = 0; + double[] oldtemps = new double[numberOfTrays]; + trays.get(feedTrayNumber).run(id); + + do { + iter++; + errOld = err; + err = 0.0; for (int i = 0; i < numberOfTrays; i++) { - trays.get(i).setPressure(bottomTrayPressure - i * dp); - } - getTray(feedTrayNumber).getStream(0).setThermoSystem(feedStream.getThermoSystem().clone()); - - if (numberOfTrays == 1) { - ((Runnable) trays.get(0)).run(); - gasOutStream.setThermoSystem(trays.get(0).getGasOutStream().getThermoSystem().clone()); - liquidOutStream - .setThermoSystem(trays.get(0).getLiquidOutStream().getThermoSystem().clone()); - return; + oldtemps[i] = ((MixerInterface) trays.get(i)).getThermoSystem().getTemperature(); } - if (isDoInitializion()) { - this.init(); + for (int i = feedTrayNumber; i > 1; i--) { + int replaceStream1 = trays.get(i - 1).getNumberOfInputStreams() - 1; + ((Mixer) trays.get(i - 1)).replaceStream(replaceStream1, + trays.get(i).getLiquidOutStream()); + trays.get(i - 1).setPressure(bottomTrayPressure - (i - 1) * dp); + trays.get(i - 1).run(id); } - double err = 1.0e10, errOld; - int iter = 0; - double[] oldtemps = new double[numberOfTrays]; - ((Runnable) trays.get(feedTrayNumber)).run(); - - do { - iter++; - errOld = err; - err = 0.0; - for (int i = 0; i < numberOfTrays; i++) { - oldtemps[i] = ((MixerInterface) trays.get(i)).getThermoSystem().getTemperature(); - } - - for (int i = feedTrayNumber; i > 1; i--) { - ((Mixer) trays.get(i - 1)).replaceStream(1, trays.get(i).getLiquidOutStream()); - trays.get(i - 1).setPressure(bottomTrayPressure - (i - 1) * dp); - ((Runnable) trays.get(i - 1)).run(); - } - int streamNumb = (trays.get(0)).getNumberOfInputStreams() - 1; - ((Mixer) trays.get(0)).replaceStream(streamNumb, trays.get(1).getLiquidOutStream()); - ((Runnable) trays.get(0)).run(); - - for (int i = 1; i <= numberOfTrays - 1; i++) { - int replaceStream = 0; - if (i == feedTrayNumber) - replaceStream = 1; - ((Mixer) trays.get(i)).replaceStream(replaceStream, - trays.get(i - 1).getGasOutStream()); - ((Runnable) trays.get(i)).run(); - } - - for (int i = numberOfTrays - 2; i == feedTrayNumber; i--) { - int replaceStream = 1; - if (i == feedTrayNumber) - replaceStream = 2; - if (i == feedTrayNumber && i == 0) - replaceStream = 1; - ((Mixer) trays.get(i)).replaceStream(replaceStream, - trays.get(i + 1).getLiquidOutStream()); - ((Runnable) trays.get(i)).run(); - } - for (int i = 0; i < numberOfTrays; i++) { - err += Math.abs(oldtemps[i] - - ((MixerInterface) trays.get(i)).getThermoSystem().getTemperature()); - } - System.out.println("error iter " + err + " iteration " + iter); - // massBalanceCheck(); - } while (err > 1e-4 && err < errOld && iter < 10);// && !massBalanceCheck()); - - // massBalanceCheck(); - gasOutStream.setThermoSystem( - trays.get(numberOfTrays - 1).getGasOutStream().getThermoSystem().clone()); - liquidOutStream - .setThermoSystem(trays.get(0).getLiquidOutStream().getThermoSystem().clone()); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - distoperations.displayResult(); - } - - /** - *

- * massBalanceCheck. - *

- * - * @return a boolean - */ - public boolean massBalanceCheck() { - double[] massInput = new double[numberOfTrays]; - double[] massOutput = new double[numberOfTrays]; - double[] massBalance = new double[numberOfTrays]; - System.out.println("water in feed " - + feedStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); - System.out.println("water in strip gas feed " + trays.get(0).getStream(0).getFluid() - .getPhase(0).getComponent("water").getNumberOfmoles()); - - for (int i = 0; i < numberOfTrays; i++) { - int numberOfInputStreams = trays.get(i).getNumberOfInputStreams(); - for (int j = 0; j < numberOfInputStreams; j++) { - massInput[i] += trays.get(i).getStream(j).getFluid().getFlowRate("kg/hr"); - } - massOutput[i] += trays.get(i).getGasOutStream().getFlowRate("kg/hr"); - massOutput[i] += trays.get(i).getLiquidOutStream().getFlowRate("kg/hr"); - massBalance[i] = massInput[i] - massOutput[i]; - System.out.println("tray " + i + " number of input streams " + numberOfInputStreams - + " massinput " + massInput[i] + " massoutput " + massOutput[i] - + " massbalance " + massBalance[i] + " gasout " - + trays.get(i).getGasOutStream().getFlowRate("kg/hr") + " liquidout " - + trays.get(i).getLiquidOutStream().getFlowRate("kg/hr") + " pressure " - + trays.get(i).getGasOutStream().getPressure() + " temperature " - + trays.get(i).getGasOutStream().getTemperature("C")); - - System.out - .println("tray " + i + " number of input streams " + numberOfInputStreams - + " water in gasout " - + trays.get(i).getGasOutStream().getFluid().getPhase(0) - .getComponent("water").getNumberOfmoles() - + " water in liquidout " - + trays.get(i).getLiquidOutStream().getFluid().getPhase(0) - .getComponent("water").getNumberOfmoles() - + " pressure " + trays.get(i).getGasOutStream().getPressure() - + " temperature " + trays.get(i).getGasOutStream().getTemperature("C")); + int streamNumb = trays.get(0).getNumberOfInputStreams() - 1; + trays.get(0).setPressure(bottomTrayPressure); + ((Mixer) trays.get(0)).replaceStream(streamNumb, trays.get(1).getLiquidOutStream()); + trays.get(0).run(id); + + for (int i = 1; i <= numberOfTrays - 1; i++) { + int replaceStream = trays.get(i).getNumberOfInputStreams() - 2; + if (i == (numberOfTrays - 1)) { + replaceStream = trays.get(i).getNumberOfInputStreams() - 1; + } + ((Mixer) trays.get(i)).replaceStream(replaceStream, trays.get(i - 1).getGasOutStream()); + trays.get(i).run(id); } - double massError = 0.0; - for (int i = 0; i < numberOfTrays; i++) { - massError += Math.abs(massBalance[i]); + for (int i = numberOfTrays - 2; i >= feedTrayNumber; i--) { + int replaceStream = trays.get(i).getNumberOfInputStreams() - 1; + ((Mixer) trays.get(i)).replaceStream(replaceStream, + trays.get(i + 1).getLiquidOutStream()); + trays.get(i).run(id); } - if (massError > 1e-6) - return false; - else - return true; - } - - /** - *

- * energyBalanceCheck. - *

- */ - public void energyBalanceCheck() { - double[] energyInput = new double[numberOfTrays]; - double[] energyOutput = new double[numberOfTrays]; - double[] energyBalance = new double[numberOfTrays]; for (int i = 0; i < numberOfTrays; i++) { - int numberOfInputStreams = trays.get(i).getNumberOfInputStreams(); - for (int j = 0; j < numberOfInputStreams; j++) { - energyInput[i] += trays.get(i).getStream(j).getFluid().getEnthalpy(); - } - energyOutput[i] += trays.get(i).getGasOutStream().getFluid().getEnthalpy(); - energyOutput[i] += trays.get(i).getLiquidOutStream().getFluid().getEnthalpy(); - energyBalance[i] = energyInput[i] - energyOutput[i]; - System.out.println("tray " + i + " number of input streams " + numberOfInputStreams - + " energyinput " + energyInput[i] + " energyoutput " + energyOutput[i] - + " energybalance " + energyBalance[i] + " gasout " - + trays.get(i).getGasOutStream().getFlowRate("kg/hr") + " liquidout " - + trays.get(i).getLiquidOutStream().getFlowRate("kg/hr") + " pressure " - + trays.get(i).getGasOutStream().getPressure() + " temperature " - + trays.get(i).getGasOutStream().getTemperature("C")); + err += Math.abs( + oldtemps[i] - ((MixerInterface) trays.get(i)).getThermoSystem().getTemperature()); } + logger.info("error iter " + err + " iteration " + iter); + // System.out.println("error iter " + err + " iteration " + iter); + // massBalanceCheck(); + } while (err > 1e-4 && err < errOld && iter < maxNumberOfIterations); // && + // !massBalanceCheck()); + // massBalanceCheck(); + // componentMassBalanceCheck("water"); + gasOutStream.setThermoSystem( + trays.get(numberOfTrays - 1).getGasOutStream().getThermoSystem().clone()); + gasOutStream.setCalculationIdentifier(id); + liquidOutStream.setThermoSystem(trays.get(0).getLiquidOutStream().getThermoSystem().clone()); + liquidOutStream.setCalculationIdentifier(id); + + for (int i = 0; i < numberOfTrays; i++) { + // TODO: set calculation ids of child elements of trays + trays.get(i).setCalculationIdentifier(id); + } } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 - 0.0), 15.000); - // testSystem.addComponent("methane", 10.00); - testSystem.addComponent("ethane", 10.0); - testSystem.addComponent("CO2", 10.0); - testSystem.addComponent("propane", 20.0); - // testSystem.addComponent("i-butane", 5.0); - // testSystem.addComponent("n-hexane", 15.0); - // testSystem.addComponent("n-heptane", 30.0); - // testSystem.addComponent("n-octane", 4.0); - // testSystem.addComponent("n-nonane", 3.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); - ops.TPflash(); - testSystem.display(); - Stream stream_1 = new Stream("Stream1", testSystem); - - DistillationColumn column = new DistillationColumn(5, true, true); - column.addFeedStream(stream_1, 3); - // column.getReboiler().setHeatInput(520000.0); - ((Reboiler) column.getReboiler()).setRefluxRatio(0.5); - // column.getCondenser().setHeatInput(-70000.0); - // ((Condenser) column.getCondenser()).setRefluxRatio(0.2); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(column); - operations.run(); - - column.displayResult(); - System.out.println("reboiler duty" + ((Reboiler) column.getReboiler()).getDuty()); - System.out.println("condenser duty" + ((Condenser) column.getCondenser()).getDuty()); - } - - /** - *

- * getReboiler. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.distillation.SimpleTray} object - */ - public SimpleTray getReboiler() { - return trays.get(0); - } - - /** - *

- * getCondenser. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.distillation.SimpleTray} object - */ - public SimpleTray getCondenser() { - return trays.get(trays.size() - 1); - } - - /** - *

- * Getter for the field reboilerTemperature. - *

- * - * @return the reboilerTemperature - */ - public double getReboilerTemperature() { - return reboilerTemperature; - } - - /** - *

- * Setter for the field reboilerTemperature. - *

- * - * @param reboilerTemperature the reboilerTemperature to set - */ - public void setReboilerTemperature(double reboilerTemperature) { - this.reboilerTemperature = reboilerTemperature; - } - - /** - *

- * getCondenserTemperature. - *

- * - * @return the condenserTemperature - */ - public double getCondenserTemperature() { - return condenserTemperature; + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + distoperations.displayResult(); + } + + /** + *

+ * component componentMassBalanceCheck. + *

+ * + * @param componentName component name to heck mass balance for + * @return a boolean + */ + public boolean componentMassBalanceCheck(String componentName) { + double[] massInput = new double[numberOfTrays]; + double[] massOutput = new double[numberOfTrays]; + double[] massBalance = new double[numberOfTrays]; + double[] massFeedInput = new double[numberOfTrays]; + for (int i = 0; i < numberOfTrays; i++) { + int numberOfInputStreams = trays.get(i).getNumberOfInputStreams() - 2; + if (i == 0 || i == numberOfTrays - 1) { + numberOfInputStreams = trays.get(i).getNumberOfInputStreams() - 1; + } + + for (int j = 0; j < numberOfInputStreams; j++) { + for (int k = 0; k < trays.get(i).getStream(j).getFluid().getNumberOfPhases(); k++) { + massFeedInput[i] += trays.get(i).getStream(j).getFluid().getPhase(k) + .getComponent(componentName).getFlowRate("kg/hr"); + } + } } - /** - *

- * setCondenserTemperature. - *

- * - * @param condenserTemperature the condenserTemperature to set - */ - public void setCondenserTemperature(double condenserTemperature) { - this.condenserTemperature = condenserTemperature; + for (int i = 0; i < numberOfTrays; i++) { + int numberOfInputStreams = trays.get(i).getNumberOfInputStreams(); + for (int j = 0; j < numberOfInputStreams; j++) { + for (int k = 0; k < trays.get(i).getStream(j).getFluid().getNumberOfPhases(); k++) { + massInput[i] += trays.get(i).getStream(j).getFluid().getPhase(k) + .getComponent(componentName).getFlowRate("kg/hr"); + } + } + massOutput[i] += trays.get(i).getGasOutStream().getFluid().getComponent(componentName) + .getFlowRate("kg/hr"); + massOutput[i] += trays.get(i).getLiquidOutStream().getFluid().getComponent(componentName) + .getFlowRate("kg/hr"); + massBalance[i] = massInput[i] - massOutput[i]; + + System.out.println("component " + componentName + " tray " + i + " number of input streams " + + numberOfInputStreams + " massinput " + massInput[i] + " massoutput " + massOutput[i] + + " massbalance " + massBalance[i] + " gasout " + + trays.get(i).getGasOutStream().getFluid().getComponent("water").getFlowRate("kg/hr") + + " liquidout " + + trays.get(i).getLiquidOutStream().getFluid().getComponent("water").getFlowRate("kg/hr") + + " pressure " + trays.get(i).getGasOutStream().getPressure() + " temperature " + + trays.get(i).getGasOutStream().getTemperature("C") + " feedtotray " + massFeedInput[i]); } - /** - *

- * Getter for the field feedTrayNumber. - *

- * - * @return the feedTrayNumber - */ - public int getFeedTrayNumber() { - return feedTrayNumber; + double massError = 0.0; + for (int i = 0; i < numberOfTrays; i++) { + massError += Math.abs(massBalance[i]); } - - /** - *

- * Setter for the field feedTrayNumber. - *

- * - * @param feedTrayNumber the feedTrayNumber to set - */ - public void setFeedTrayNumber(int feedTrayNumber) { - this.feedTrayNumber = feedTrayNumber; + if (massError > 1e-6) { + return false; + } else { + return true; } - - /** - *

- * isDoInitializion. - *

- * - * @return a boolean - */ - public boolean isDoInitializion() { - return doInitializion; + } + + /** + *

+ * massBalanceCheck. + *

+ * + * @return a boolean + */ + public boolean massBalanceCheck() { + double[] massInput = new double[numberOfTrays]; + double[] massOutput = new double[numberOfTrays]; + double[] massBalance = new double[numberOfTrays]; + // System.out.println("water in feed " + // + + // feedStream.getFluid().getPhase(0).getComponent("water").getNumberOfmoles()); + // System.out.println("water in strip gas feed " + + // trays.get(0).getStream(0).getFluid().getPhase(0) + // .getComponent("water").getNumberOfmoles()); + + for (int i = 0; i < numberOfTrays; i++) { + int numberOfInputStreams = trays.get(i).getNumberOfInputStreams(); + for (int j = 0; j < numberOfInputStreams; j++) { + massInput[i] += trays.get(i).getStream(j).getFluid().getFlowRate("kg/hr"); + } + massOutput[i] += trays.get(i).getGasOutStream().getFlowRate("kg/hr"); + massOutput[i] += trays.get(i).getLiquidOutStream().getFlowRate("kg/hr"); + massBalance[i] = massInput[i] - massOutput[i]; + System.out.println("tray " + i + " number of input streams " + numberOfInputStreams + + " massinput " + massInput[i] + " massoutput " + massOutput[i] + " massbalance " + + massBalance[i] + " gasout " + trays.get(i).getGasOutStream().getFlowRate("kg/hr") + + " liquidout " + trays.get(i).getLiquidOutStream().getFlowRate("kg/hr") + " pressure " + + trays.get(i).getGasOutStream().getPressure() + " temperature " + + trays.get(i).getGasOutStream().getTemperature("C")); + /* + * System.out.println( "tray " + i + " number of input streams " + numberOfInputStreams + + * " water in gasout " + + * trays.get(i).getGasOutStream().getFluid().getPhase(0).getComponent("water") + * .getNumberOfmoles() + " water in liquidout " + + * trays.get(i).getLiquidOutStream().getFluid().getPhase(0).getComponent( "water") + * .getNumberOfmoles() + " pressure " + trays.get(i).getGasOutStream().getPressure() + + * " temperature " + trays.get(i).getGasOutStream().getTemperature("C")); + */ } - /** - *

- * Setter for the field doInitializion. - *

- * - * @param doInitializion a boolean - */ - public void setDoInitializion(boolean doInitializion) { - this.doInitializion = doInitializion; + double massError = 0.0; + for (int i = 0; i < numberOfTrays; i++) { + massError += Math.abs(massBalance[i]); } - - /** - *

- * getFsFactor. - *

- * - * @return a double - */ - public double getFsFactor() { - double intArea = 3.14 * getInternalDiameter() * getInternalDiameter() / 4.0; - return getGasOutStream().getThermoSystem().getFlowRate("m3/sec") / intArea - * Math.sqrt(getGasOutStream().getThermoSystem().getDensity("kg/m3")); + if (massError > 1e-6) { + return false; + } else { + return true; } - - /** - *

- * Getter for the field internalDiameter. - *

- * - * @return a double - */ - public double getInternalDiameter() { - return internalDiameter; + } + + /** + *

+ * energyBalanceCheck. + *

+ */ + public void energyBalanceCheck() { + double[] energyInput = new double[numberOfTrays]; + double[] energyOutput = new double[numberOfTrays]; + double[] energyBalance = new double[numberOfTrays]; + for (int i = 0; i < numberOfTrays; i++) { + int numberOfInputStreams = trays.get(i).getNumberOfInputStreams(); + for (int j = 0; j < numberOfInputStreams; j++) { + energyInput[i] += trays.get(i).getStream(j).getFluid().getEnthalpy(); + } + energyOutput[i] += trays.get(i).getGasOutStream().getFluid().getEnthalpy(); + energyOutput[i] += trays.get(i).getLiquidOutStream().getFluid().getEnthalpy(); + energyBalance[i] = energyInput[i] - energyOutput[i]; + System.out.println( + "tray " + i + " number of input streams " + numberOfInputStreams + " energyinput " + + energyInput[i] + " energyoutput " + energyOutput[i] + " energybalance " + + energyBalance[i] + " gasout " + trays.get(i).getGasOutStream().getFlowRate("kg/hr") + + " liquidout " + trays.get(i).getLiquidOutStream().getFlowRate("kg/hr") + + " pressure " + trays.get(i).getGasOutStream().getPressure() + " temperature " + + trays.get(i).getGasOutStream().getTemperature("C")); } - - /** - *

- * Setter for the field internalDiameter. - *

- * - * @param internalDiameter a double - */ - public void setInternalDiameter(double internalDiameter) { - this.internalDiameter = internalDiameter; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 - 0.0), 15.000); + // testSystem.addComponent("methane", 10.00); + testSystem.addComponent("ethane", 10.0); + testSystem.addComponent("CO2", 10.0); + testSystem.addComponent("propane", 20.0); + // testSystem.addComponent("i-butane", 5.0); + // testSystem.addComponent("n-hexane", 15.0); + // testSystem.addComponent("n-heptane", 30.0); + // testSystem.addComponent("n-octane", 4.0); + // testSystem.addComponent("n-nonane", 3.0); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + ops.TPflash(); + testSystem.display(); + Stream stream_1 = new Stream("Stream1", testSystem); + + DistillationColumn column = new DistillationColumn(5, true, true); + column.addFeedStream(stream_1, 3); + // column.getReboiler().setHeatInput(520000.0); + ((Reboiler) column.getReboiler()).setRefluxRatio(0.5); + // column.getCondenser().setHeatInput(-70000.0); + // ((Condenser) column.getCondenser()).setRefluxRatio(0.2); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(column); + operations.run(); + + column.displayResult(); + System.out.println("reboiler duty" + ((Reboiler) column.getReboiler()).getDuty()); + System.out.println("condenser duty" + ((Condenser) column.getCondenser()).getDuty()); + } + + /** + *

+ * getReboiler. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.distillation.SimpleTray} object + */ + public SimpleTray getReboiler() { + return trays.get(0); + } + + /** + *

+ * getCondenser. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.distillation.SimpleTray} object + */ + public SimpleTray getCondenser() { + return trays.get(trays.size() - 1); + } + + /** + *

+ * Getter for the field reboilerTemperature. + *

+ * + * @return the reboilerTemperature + */ + public double getReboilerTemperature() { + return reboilerTemperature; + } + + /** + *

+ * Setter for the field reboilerTemperature. + *

+ * + * @param reboilerTemperature the reboilerTemperature to set + */ + public void setReboilerTemperature(double reboilerTemperature) { + this.reboilerTemperature = reboilerTemperature; + } + + /** + *

+ * getCondenserTemperature. + *

+ * + * @return the condenserTemperature + */ + public double getCondenserTemperature() { + return condenserTemperature; + } + + /** + *

+ * setCondenserTemperature. + *

+ * + * @param condenserTemperature the condenserTemperature to set + */ + public void setCondenserTemperature(double condenserTemperature) { + this.condenserTemperature = condenserTemperature; + } + + /** + *

+ * Getter for the field feedTrayNumber. + *

+ * + * @return the feedTrayNumber + */ + public int getFeedTrayNumber() { + return feedTrayNumber; + } + + /** + *

+ * Setter for the field feedTrayNumber. + *

+ * + * @param feedTrayNumber the feedTrayNumber to set + */ + public void setFeedTrayNumber(int feedTrayNumber) { + this.feedTrayNumber = feedTrayNumber; + } + + /** + *

+ * isDoInitializion. + *

+ * + * @return a boolean + */ + public boolean isDoInitializion() { + return doInitializion; + } + + /** + *

+ * Setter for the field doInitializion. + *

+ * + * @param doInitializion a boolean + */ + public void setDoInitializion(boolean doInitializion) { + this.doInitializion = doInitializion; + } + + /** + *

+ * getFsFactor. + *

+ * + * @return a double + */ + public double getFsFactor() { + double intArea = 3.14 * getInternalDiameter() * getInternalDiameter() / 4.0; + return getGasOutStream().getThermoSystem().getFlowRate("m3/sec") / intArea + * Math.sqrt(getGasOutStream().getThermoSystem().getDensity("kg/m3")); + } + + /** + *

+ * Getter for the field internalDiameter. + *

+ * + * @return a double + */ + public double getInternalDiameter() { + return internalDiameter; + } + + /** {@inheritDoc} */ + @Override + public boolean solved() { + return (err < 1e-4); + } + + /** + *

+ * Setter for the field maxNumberOfIterations. + *

+ * + * @param maxIter a double + */ + public void setMaxNumberOfIterations(int maxIter) { + this.maxNumberOfIterations = maxIter; + } + + /** + *

+ * Setter for the field internalDiameter. + *

+ * + * @param internalDiameter a double + */ + public void setInternalDiameter(double internalDiameter) { + this.internalDiameter = internalDiameter; + } + + /** {@inheritDoc} */ + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + + Objects.hash(bottomTrayPressure, condenserCoolingDuty, condenserTemperature, + distoperations, doInitializion, feedStream, feedTrayNumber, gasOutStream, hasCondenser, + hasReboiler, heater, internalDiameter, liquidOutStream, numberOfTrays, + reboilerTemperature, separator2, stream_3, stream_3isset, topTrayPressure, trays); + return result; + } + + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; } - - /** {@inheritDoc} */ - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result - + Objects.hash(bottomTrayPressure, condenserCoolingDuty, condenserTemperature, - distoperations, doInitializion, feedStream, feedTrayNumber, gasOutStream, - hasCondenser, hasReboiler, heater, internalDiameter, liquidOutStream, numberOfTrays, - reboilerTemperature, separator2, stream_3, stream_3isset, topTrayPressure, trays); - return result; + if (!super.equals(obj)) { + return false; } - - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) - return false; - DistillationColumn other = (DistillationColumn) obj; - return Double.doubleToLongBits(bottomTrayPressure) == Double - .doubleToLongBits(other.bottomTrayPressure) - && Double.doubleToLongBits(condenserCoolingDuty) == Double - .doubleToLongBits(other.condenserCoolingDuty) - && Double.doubleToLongBits(condenserTemperature) == Double - .doubleToLongBits(other.condenserTemperature) - && Objects.equals(distoperations, other.distoperations) - && doInitializion == other.doInitializion && Objects.equals(feedStream, other.feedStream) - && feedTrayNumber == other.feedTrayNumber - && Objects.equals(gasOutStream, other.gasOutStream) && hasCondenser == other.hasCondenser - && hasReboiler == other.hasReboiler && Objects.equals(heater, other.heater) - && Double.doubleToLongBits(internalDiameter) == Double - .doubleToLongBits(other.internalDiameter) - && Objects.equals(liquidOutStream, other.liquidOutStream) - && numberOfTrays == other.numberOfTrays - && Double.doubleToLongBits(reboilerTemperature) == Double - .doubleToLongBits(other.reboilerTemperature) - && Objects.equals(separator2, other.separator2) - && Objects.equals(stream_3, other.stream_3) && stream_3isset == other.stream_3isset - && Double.doubleToLongBits(topTrayPressure) == Double - .doubleToLongBits(other.topTrayPressure) - && Objects.equals(trays, other.trays); + if (getClass() != obj.getClass()) { + return false; } + DistillationColumn other = (DistillationColumn) obj; + return Double.doubleToLongBits(bottomTrayPressure) == Double + .doubleToLongBits(other.bottomTrayPressure) + && Double.doubleToLongBits(condenserCoolingDuty) == Double + .doubleToLongBits(other.condenserCoolingDuty) + && Double.doubleToLongBits(condenserTemperature) == Double + .doubleToLongBits(other.condenserTemperature) + && Objects.equals(distoperations, other.distoperations) + && doInitializion == other.doInitializion && Objects.equals(feedStream, other.feedStream) + && feedTrayNumber == other.feedTrayNumber + && Objects.equals(gasOutStream, other.gasOutStream) && hasCondenser == other.hasCondenser + && hasReboiler == other.hasReboiler && Objects.equals(heater, other.heater) + && Double.doubleToLongBits(internalDiameter) == Double + .doubleToLongBits(other.internalDiameter) + && Objects.equals(liquidOutStream, other.liquidOutStream) + && numberOfTrays == other.numberOfTrays + && Double.doubleToLongBits(reboilerTemperature) == Double + .doubleToLongBits(other.reboilerTemperature) + && Objects.equals(separator2, other.separator2) && Objects.equals(stream_3, other.stream_3) + && stream_3isset == other.stream_3isset && Double + .doubleToLongBits(topTrayPressure) == Double.doubleToLongBits(other.topTrayPressure) + && Objects.equals(trays, other.trays); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationInterface.java index 70fd43e93e..de87bdeee3 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/distillation/DistillationInterface.java @@ -11,12 +11,12 @@ * @version $Id: $Id */ public interface DistillationInterface extends ProcessEquipmentInterface { - /** - *

- * setNumberOfTrays. - *

- * - * @param number a int - */ - public void setNumberOfTrays(int number); + /** + *

+ * setNumberOfTrays. + *

+ * + * @param number a int + */ + public void setNumberOfTrays(int number); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/distillation/Reboiler.java b/src/main/java/neqsim/processSimulation/processEquipment/distillation/Reboiler.java index 91c12210ea..a9617c64ff 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/distillation/Reboiler.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/distillation/Reboiler.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.distillation; +import java.util.UUID; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -12,78 +13,84 @@ * @version $Id: $Id */ public class Reboiler extends neqsim.processSimulation.processEquipment.distillation.SimpleTray { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - private double refluxRatio = 0.1; - boolean refluxIsSet = false; - double duty = 0.0; + private double refluxRatio = 0.1; + boolean refluxIsSet = false; + double duty = 0.0; - /** - *

- * Constructor for Reboiler. - *

- * - * @param name name of unit operation - */ - public Reboiler(String name) { - super(name); - } + /** + *

+ * Constructor for Reboiler. + *

+ * + * @param name name of unit operation + */ + public Reboiler(String name) { + super(name); + } - /** - *

- * Getter for the field refluxRatio. - *

- * - * @return the refluxRatio - */ - public double getRefluxRatio() { - return refluxRatio; - } + /** + *

+ * Getter for the field refluxRatio. + *

+ * + * @return the refluxRatio + */ + public double getRefluxRatio() { + return refluxRatio; + } - /** - *

- * Setter for the field refluxRatio. - *

- * - * @param refluxRatio the refluxRatio to set - */ - public void setRefluxRatio(double refluxRatio) { - this.refluxRatio = refluxRatio; - refluxIsSet = true; - } + /** + *

+ * Setter for the field refluxRatio. + *

+ * + * @param refluxRatio the refluxRatio to set + */ + public void setRefluxRatio(double refluxRatio) { + this.refluxRatio = refluxRatio; + refluxIsSet = true; + } - /** - *

- * Getter for the field duty. - *

- * - * @return a double - */ - public double getDuty() { - return duty; - // return calcMixStreamEnthalpy(); + /** + *

+ * Getter for the field duty. + *

+ * + * @return a double + */ + public double getDuty() { + return duty; + // return calcMixStreamEnthalpy(); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!refluxIsSet) { + UUID oldid = getCalculationIdentifier(); + super.run(id); + mixedStream.setCalculationIdentifier(oldid); + setCalculationIdentifier(oldid); + } else { + SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); + // System.out.println("total number of moles " + + // thermoSystem2.getTotalNumberOfMoles()); + mixedStream.setThermoSystem(thermoSystem2); + ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); + testOps.PVrefluxFlash(refluxRatio, 1); } + // System.out.println("enthalpy: " + + // mixedStream.getThermoSystem().getEnthalpy()); + // System.out.println("enthalpy: " + enthalpy); + // System.out.println("temperature: " + + // mixedStream.getThermoSystem().getTemperature()); - /** {@inheritDoc} */ - @Override - public void run() { - if (!refluxIsSet) { - super.run(); - } else { - SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); - // System.out.println("total number of moles " + - // thermoSystem2.getTotalNumberOfMoles()); - mixedStream.setThermoSystem(thermoSystem2); - ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); - testOps.PVrefluxFlash(refluxRatio, 1); - } - // System.out.println("enthalpy: " + - // mixedStream.getThermoSystem().getEnthalpy()); - // System.out.println("enthalpy: " + enthalpy); - // System.out.println("temperature: " + - // mixedStream.getThermoSystem().getTemperature()); + // System.out.println("beta " + mixedStream.getThermoSystem().getBeta()) + duty = mixedStream.getFluid().getEnthalpy() - calcMixStreamEnthalpy0(); - // System.out.println("beta " + mixedStream.getThermoSystem().getBeta()) - duty = mixedStream.getFluid().getEnthalpy() - calcMixStreamEnthalpy0(); - } + mixedStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/distillation/SimpleTray.java b/src/main/java/neqsim/processSimulation/processEquipment/distillation/SimpleTray.java index ff3aa7464f..91c30f713f 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/distillation/SimpleTray.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/distillation/SimpleTray.java @@ -1,5 +1,8 @@ package neqsim.processSimulation.processEquipment.distillation; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; @@ -14,210 +17,224 @@ * @version $Id: $Id */ public class SimpleTray extends neqsim.processSimulation.processEquipment.mixer.Mixer - implements TrayInterface { - private static final long serialVersionUID = 1000; - - double heatInput = 0.0; - private double temperature = Double.NaN, trayPressure = -1.0; - - /** - *

- * Constructor for SimpleTray. - *

- * - * @param name name of tray - */ - public SimpleTray(String name) { - super(name); + implements TrayInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SimpleTray.class); + + double heatInput = 0.0; + private double temperature = Double.NaN; + + private double trayPressure = -1.0; + + /** + *

+ * Constructor for SimpleTray. + *

+ * + * @param name name of tray + */ + public SimpleTray(String name) { + super(name); + } + + /** + *

+ * init. + *

+ */ + public void init() { + int pp = 0; + if (streams.size() == 3) { + pp = 1; } - - /** - *

- * init. - *

- */ - public void init() { - int pp = 0; - if (streams.size() == 3) { - pp = 1; - } - for (int k = pp; k < streams.size(); k++) { - (streams.get(k).getThermoSystem()).setTemperature(temperature); - } + for (int k = pp; k < streams.size(); k++) { + (streams.get(k).getThermoSystem()).setTemperature(temperature); } - - /** {@inheritDoc} */ - @Override - public void setHeatInput(double heatinp) { - this.heatInput = heatinp; + } + + /** {@inheritDoc} */ + @Override + public void setHeatInput(double heatinp) { + this.heatInput = heatinp; + } + + /** + *

+ * calcMixStreamEnthalpy0. + *

+ * + * @return a double + */ + public double calcMixStreamEnthalpy0() { + double enthalpy = 0; + + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().init(3); + enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); + // System.out.println("total enthalpy k : " + ( ((Stream) + // streams.get(k)).getThermoSystem()).getEnthalpy()); } - - /** - *

- * calcMixStreamEnthalpy0. - *

- * - * @return a double - */ - public double calcMixStreamEnthalpy0() { - double enthalpy = 0; - - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().init(3); - enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); - // System.out.println("total enthalpy k : " + ( ((Stream) - // streams.get(k)).getThermoSystem()).getEnthalpy()); - } - // System.out.println("total enthalpy of streams: " + enthalpy); - return enthalpy; + // System.out.println("total enthalpy of streams: " + enthalpy); + return enthalpy; + } + + /** {@inheritDoc} */ + @Override + public double calcMixStreamEnthalpy() { + double enthalpy = heatInput; + if (isSetEnergyStream()) { + enthalpy -= energyStream.getDuty(); } - /** {@inheritDoc} */ - @Override - public double calcMixStreamEnthalpy() { - double enthalpy = heatInput; - if (isSetEnergyStream()) { - enthalpy -= energyStream.getDuty(); - } - - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().init(3); - enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); - // System.out.println("total enthalpy k : " + ( ((Stream) - // streams.get(k)).getThermoSystem()).getEnthalpy()); - } - // System.out.println("total enthalpy of streams: " + enthalpy); - return enthalpy; + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().init(3); + enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); + // System.out.println("total enthalpy k : " + ( ((Stream) + // streams.get(k)).getThermoSystem()).getEnthalpy()); } - - /** - *

- * run2. - *

- */ - public void run2() { - super.run(); - temperature = mixedStream.getTemperature(); + // System.out.println("total enthalpy of streams: " + enthalpy); + return enthalpy; + } + + /** + *

+ * run2. + *

+ */ + public void run2() { + super.run(); + temperature = mixedStream.getTemperature(); + } + + /** + *

+ * TPflash. + *

+ */ + public void TPflash() {} + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + double enthalpy = 0.0; + // double flowRate = ((Stream) + // streams.get(0)).getThermoSystem().getFlowRate("kg/hr"); + // ((Stream) streams.get(0)).getThermoSystem().display(); + SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); + + // System.out.println("total number of moles " + + // thermoSystem2.getTotalNumberOfMoles()); + if (trayPressure > 0) { + thermoSystem2.setPressure(trayPressure); } - - /** - *

- * TPflash. - *

- */ - public void TPflash() {} - - /** {@inheritDoc} */ - @Override - public void run() { - double enthalpy = 0.0; - // double flowRate = ((Stream) - // streams.get(0)).getThermoSystem().getFlowRate("kg/hr"); - // ((Stream) streams.get(0)).getThermoSystem().display(); - SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); - - // System.out.println("total number of moles " + - // thermoSystem2.getTotalNumberOfMoles()); - if (trayPressure > 0) { - thermoSystem2.setPressure(trayPressure); - } - mixedStream.setThermoSystem(thermoSystem2); - // thermoSystem2.display(); - ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); - if (streams.size() > 0) { - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixedStream.getThermoSystem().init(0); - - mixStream(); - if (trayPressure > 0) - mixedStream.setPressure(trayPressure, "bara"); - enthalpy = calcMixStreamEnthalpy(); - // System.out.println("temp guess " + guessTemperature()); - if (!isSetOutTemperature()) { - // mixedStream.getThermoSystem().setTemperature(guessTemperature()); - } else { - mixedStream.setTemperature(getOutTemperature(), "K"); - } - // System.out.println("filan temp " + mixedStream.getTemperature()); - } - if (isSetOutTemperature()) { - if (!Double.isNaN(getOutTemperature())) - mixedStream.getThermoSystem().setTemperature(getOutTemperature()); - testOps.TPflash(); - mixedStream.getThermoSystem().init(2); - } else { - try { - testOps.PHflash(enthalpy, 0); - } catch (Exception e) { - if (!Double.isNaN(getOutTemperature())) - mixedStream.getThermoSystem().setTemperature(getOutTemperature()); - testOps.TPflash(); - } - } - setTemperature(mixedStream.getTemperature()); - } - - /** - *

- * getGasOutStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getGasOutStream() { - return new Stream("", mixedStream.getThermoSystem().phaseToSystem(0)); - } - - /** - *

- * getLiquidOutStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getLiquidOutStream() { - return new Stream("", mixedStream.getThermoSystem().phaseToSystem(1)); + mixedStream.setThermoSystem(thermoSystem2); + // thermoSystem2.display(); + ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); + if (streams.size() > 0) { + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().init(0); + + mixStream(); + if (trayPressure > 0) { + mixedStream.setPressure(trayPressure, "bara"); + } + enthalpy = calcMixStreamEnthalpy(); + // System.out.println("temp guess " + guessTemperature()); + if (!isSetOutTemperature()) { + // mixedStream.getThermoSystem().setTemperature(guessTemperature()); + } else { + mixedStream.setTemperature(getOutTemperature(), "K"); + } + // System.out.println("filan temp " + mixedStream.getTemperature()); } - - /** - *

- * Getter for the field temperature. - *

- * - * @return the temperature - */ - public double getTemperature() { - return temperature; + if (isSetOutTemperature()) { + if (!Double.isNaN(getOutTemperature())) { + mixedStream.getThermoSystem().setTemperature(getOutTemperature()); + } + testOps.TPflash(); + mixedStream.getThermoSystem().init(2); + } else { + try { + testOps.PHflash(enthalpy, 0); + } catch (Exception ex) { + if (!Double.isNaN(getOutTemperature())) { + mixedStream.getThermoSystem().setTemperature(getOutTemperature()); + } + testOps.TPflash(); + } } - /** {@inheritDoc} */ - @Override - public void setPressure(double pres) { - trayPressure = pres; - } + setTemperature(mixedStream.getTemperature()); + mixedStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); - /** {@inheritDoc} */ - @Override - public void setTemperature(double temperature) { - this.temperature = temperature; + if (mixedStream.getFluid().getNumberOfPhases() >= 3) { + System.out + .println("error...." + mixedStream.getFluid().getNumberOfPhases() + " phases on tray"); + logger.warn("error...." + mixedStream.getFluid().getNumberOfPhases() + " phases on tray"); } - - /** {@inheritDoc} */ - @Override - public double guessTemperature() { - if (Double.isNaN(temperature)) { - double gtemp = 0; - for (int k = 0; k < streams.size(); k++) { - gtemp += streams.get(k).getThermoSystem().getTemperature() - * streams.get(k).getThermoSystem().getNumberOfMoles() - / mixedStream.getThermoSystem().getNumberOfMoles(); - } - // System.out.println("guess temperature " + gtemp); - return gtemp; - } else { - // System.out.println("temperature " + temperature); - return temperature; - } + } + + /** + *

+ * getGasOutStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getGasOutStream() { + return new Stream("", mixedStream.getThermoSystem().phaseToSystem(0)); + } + + /** + *

+ * getLiquidOutStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getLiquidOutStream() { + return new Stream("", mixedStream.getThermoSystem().phaseToSystem(1)); + } + + /** + *

+ * Getter for the field temperature. + *

+ * + * @return the temperature + */ + public double getTemperature() { + return temperature; + } + + /** {@inheritDoc} */ + @Override + public void setPressure(double pres) { + trayPressure = pres; + } + + /** {@inheritDoc} */ + @Override + public void setTemperature(double temperature) { + this.temperature = temperature; + } + + /** {@inheritDoc} */ + @Override + public double guessTemperature() { + if (Double.isNaN(temperature)) { + double gtemp = 0; + for (int k = 0; k < streams.size(); k++) { + gtemp += streams.get(k).getThermoSystem().getTemperature() + * streams.get(k).getThermoSystem().getNumberOfMoles() + / mixedStream.getThermoSystem().getNumberOfMoles(); + } + // System.out.println("guess temperature " + gtemp); + return gtemp; + } else { + // System.out.println("temperature " + temperature); + return temperature; } + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/distillation/TrayInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/distillation/TrayInterface.java index 2e00b5847e..7e09b2b22d 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/distillation/TrayInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/distillation/TrayInterface.java @@ -12,23 +12,22 @@ * @version $Id: $Id */ public interface TrayInterface extends ProcessEquipmentInterface { + /** + *

+ * addStream. + *

+ * + * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void addStream(StreamInterface newStream); - /** - *

- * addStream. - *

- * - * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void addStream(StreamInterface newStream); - - /** - *

- * setHeatInput. - *

- * - * @param heatinp a double - */ - public void setHeatInput(double heatinp); + /** + *

+ * setHeatInput. + *

+ * + * @param heatinp a double + */ + public void setHeatInput(double heatinp); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/distillation/VLSolidTray.java b/src/main/java/neqsim/processSimulation/processEquipment/distillation/VLSolidTray.java index 150b4ae9c6..0a44e67337 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/distillation/VLSolidTray.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/distillation/VLSolidTray.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.distillation; +import java.util.UUID; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; @@ -14,119 +15,119 @@ * @version $Id: $Id */ public class VLSolidTray extends SimpleTray { - private static final long serialVersionUID = 1000; - - double heatInput = 0.0; - private double temperature = 273.15; - - /** - *

- * Constructor for VLSolidTray. - *

- * - * @param name name of tray - */ - public VLSolidTray(String name) { - super(name); + private static final long serialVersionUID = 1000; + + double heatInput = 0.0; + private double temperature = 273.15; + + /** + *

+ * Constructor for VLSolidTray. + *

+ * + * @param name name of tray + */ + public VLSolidTray(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void init() { + int pp = 0; + if (streams.size() == 3) { + pp = 1; } - - /** {@inheritDoc} */ - @Override - public void init() { - int pp = 0; - if (streams.size() == 3) { - pp = 1; - } - for (int k = pp; k < streams.size(); k++) { - (streams.get(k).getThermoSystem()).setTemperature(temperature); - } - } - - /** {@inheritDoc} */ - @Override - public void setHeatInput(double heatinp) { - this.heatInput = heatinp; + for (int k = pp; k < streams.size(); k++) { + (streams.get(k).getThermoSystem()).setTemperature(temperature); } - - /** {@inheritDoc} */ - @Override - public double calcMixStreamEnthalpy() { - double enthalpy = heatInput; - - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().init(3); - enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); - System.out.println( - "total enthalpy k : " + streams.get(k).getThermoSystem().getEnthalpy()); - } - System.out.println("total enthalpy of streams: " + enthalpy); - return enthalpy; + } + + /** {@inheritDoc} */ + @Override + public void setHeatInput(double heatinp) { + this.heatInput = heatinp; + } + + /** {@inheritDoc} */ + @Override + public double calcMixStreamEnthalpy() { + double enthalpy = heatInput; + + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().init(3); + enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); + System.out.println("total enthalpy k : " + streams.get(k).getThermoSystem().getEnthalpy()); } - - /** {@inheritDoc} */ - @Override - public void run() { - double enthalpy = 0.0; - - // ((Stream) streams.get(0)).getThermoSystem().display(); - - SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); - // System.out.println("total number of moles " + - // thermoSystem2.getTotalNumberOfMoles()); - mixedStream.setThermoSystem(thermoSystem2); - // thermoSystem2.display(); - ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); - if (streams.size() > 0) { - // mixedStream.getThermoSystem().setSolidPhaseCheck("CO2"); - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixedStream.getThermoSystem().init(0); - - mixStream(); - - enthalpy = calcMixStreamEnthalpy(); - // mixedStream.getThermoSystem().display(); - // System.out.println("temp guess " + guessTemperature()); - mixedStream.getThermoSystem().setSolidPhaseCheck("CO2"); - mixedStream.getThermoSystem().setTemperature(guessTemperature()); - testOps.PHsolidFlash(enthalpy); - mixedStream.getThermoSystem().display(); - // System.out.println("filan temp " + mixedStream.getTemperature()); - } else { - testOps.TPflash(); - } - mixedStream.getThermoSystem().setSolidPhaseCheck(false); - // System.out.println("enthalpy: " + - // mixedStream.getThermoSystem().getEnthalpy()); - // System.out.println("enthalpy: " + enthalpy); - // System.out.println("temperature: " + - // mixedStream.getThermoSystem().getTemperature()); - - // System.out.println("beta " + mixedStream.getThermoSystem().getBeta()); - // outStream.setThermoSystem(mixedStream.getThermoSystem()); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGasOutStream() { - return new Stream("", mixedStream.getThermoSystem().phaseToSystem(0)); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquidOutStream() { - return new Stream("", mixedStream.getThermoSystem().phaseToSystem(1)); - } - - /** {@inheritDoc} */ - @Override - public double getTemperature() { - return temperature; - } - - /** {@inheritDoc} */ - @Override - public void setTemperature(double temperature) { - this.temperature = temperature; + System.out.println("total enthalpy of streams: " + enthalpy); + return enthalpy; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + double enthalpy = 0.0; + + // ((Stream) streams.get(0)).getThermoSystem().display(); + + SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); + // System.out.println("total number of moles " + + // thermoSystem2.getTotalNumberOfMoles()); + mixedStream.setThermoSystem(thermoSystem2); + // thermoSystem2.display(); + ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); + if (streams.size() > 0) { + // mixedStream.getThermoSystem().setSolidPhaseCheck("CO2"); + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().init(0); + + mixStream(); + + enthalpy = calcMixStreamEnthalpy(); + // mixedStream.getThermoSystem().display(); + // System.out.println("temp guess " + guessTemperature()); + mixedStream.getThermoSystem().setSolidPhaseCheck("CO2"); + mixedStream.getThermoSystem().setTemperature(guessTemperature()); + testOps.PHsolidFlash(enthalpy); + mixedStream.getThermoSystem().display(); + // System.out.println("filan temp " + mixedStream.getTemperature()); + } else { + testOps.TPflash(); } + mixedStream.getThermoSystem().setSolidPhaseCheck(false); + // System.out.println("enthalpy: " + + // mixedStream.getThermoSystem().getEnthalpy()); + // System.out.println("enthalpy: " + enthalpy); + // System.out.println("temperature: " + + // mixedStream.getThermoSystem().getTemperature()); + + // System.out.println("beta " + mixedStream.getThermoSystem().getBeta()); + // outStream.setThermoSystem(mixedStream.getThermoSystem()); + mixedStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getGasOutStream() { + return new Stream("", mixedStream.getThermoSystem().phaseToSystem(0)); + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getLiquidOutStream() { + return new Stream("", mixedStream.getThermoSystem().phaseToSystem(1)); + } + + /** {@inheritDoc} */ + @Override + public double getTemperature() { + return temperature; + } + + /** {@inheritDoc} */ + @Override + public void setTemperature(double temperature) { + this.temperature = temperature; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/expander/Expander.java b/src/main/java/neqsim/processSimulation/processEquipment/expander/Expander.java index a773929bda..b11ecaad1f 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/expander/Expander.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/expander/Expander.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.expander; +import java.util.UUID; import neqsim.processSimulation.processEquipment.compressor.Compressor; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -13,114 +14,110 @@ * @version $Id: $Id */ public class Expander extends Compressor implements ExpanderInterface { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for Expander. - *

- */ - @Deprecated - public Expander() { - super(); - } + /** + *

+ * Constructor for Expander. + *

+ */ + @Deprecated + public Expander() { + super(); + } - /** - *

- * Constructor for Expander. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public Expander(StreamInterface inletStream) { - super(inletStream); - } + /** + *

+ * Constructor for Expander. + *

+ * + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public Expander(StreamInterface inletStream) { + super(inletStream); + } - /** - * Constructor for Expander. - * - * @param name name of unit operation - */ - public Expander(String name) { - super(name); - } + /** + * Constructor for Expander. + * + * @param name name of unit operation + */ + public Expander(String name) { + super(name); + } - /** - *

- * Constructor for Expander. - *

- * - * @param name a {@link java.lang.String} object - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public Expander(String name, StreamInterface inletStream) { - super(name, inletStream); - } + /** + *

+ * Constructor for Expander. + *

+ * + * @param name a {@link java.lang.String} object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public Expander(String name, StreamInterface inletStream) { + super(name, inletStream); + } - /** {@inheritDoc} */ - @Override - public void run() { - // System.out.println("expander running.."); - thermoSystem = inStream.getThermoSystem().clone(); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(getThermoSystem()); - thermoOps = new ThermodynamicOperations(thermoSystem); - thermoSystem.init(3); - // double presinn = getThermoSystem().getPressure(); - double hinn = getThermoSystem().getEnthalpy(); - // double densInn = getThermoSystem().getDensity(); - double entropy = getThermoSystem().getEntropy(); - inletEnthalpy = hinn; + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + // System.out.println("expander running.."); + thermoSystem = inStream.getThermoSystem().clone(); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(getThermoSystem()); + thermoOps = new ThermodynamicOperations(thermoSystem); + thermoSystem.init(3); + // double presinn = getThermoSystem().getPressure(); + double hinn = getThermoSystem().getEnthalpy(); + // double densInn = getThermoSystem().getDensity(); + double entropy = getThermoSystem().getEntropy(); + inletEnthalpy = hinn; - if (usePolytropicCalc) { - int numbersteps = 40; - double dp = (pressure - getThermoSystem().getPressure()) / (1.0 * numbersteps); - for (int i = 0; i < numbersteps; i++) { - entropy = getThermoSystem().getEntropy(); - hinn = getThermoSystem().getEnthalpy(); - getThermoSystem().setPressure(getThermoSystem().getPressure() + dp); - thermoOps.PSflash(entropy); - double hout = - hinn + (getThermoSystem().getEnthalpy() - hinn) * polytropicEfficiency; - thermoOps.PHflash(hout, 0); - } - /* - * HYSYS method double oldPolyt = 10.5; int iter = 0; do { - * - * - * iter++; double n = Math.log(thermoSystem.getPressure() / presinn) / - * Math.log(thermoSystem.getDensity() / densInn); double k = - * Math.log(thermoSystem.getPressure() / presinn) / Math.log(densOutIdeal / densInn); - * double factor = ((Math.pow(thermoSystem.getPressure() / presinn, (n - 1.0) / n) - - * 1.0) * (n / (n - 1.0)) * (k - 1) / k) / (Math.pow(thermoSystem.getPressure() / - * presinn, (k - 1.0) / k) - 1.0); oldPolyt = polytropicEfficiency; polytropicEfficiency - * = factor * isentropicEfficiency; dH = thermoSystem.getEnthalpy() - hinn; hout = hinn - * + dH / polytropicEfficiency; thermoOps.PHflash(hout, 0); - * System.out.println(" factor " + factor + " n " + n + " k " + k + - * " polytropic effici " + polytropicEfficiency + " iter " + iter); - * - * } while (Math.abs((oldPolyt - polytropicEfficiency) / oldPolyt) > 1e-5 && iter < - * 500); // polytropicEfficiency = isentropicEfficiency * (); - * - */ - } else { - getThermoSystem().setPressure(pressure); + if (usePolytropicCalc) { + int numbersteps = 40; + double dp = (pressure - getThermoSystem().getPressure()) / (1.0 * numbersteps); + for (int i = 0; i < numbersteps; i++) { + entropy = getThermoSystem().getEntropy(); + hinn = getThermoSystem().getEnthalpy(); + getThermoSystem().setPressure(getThermoSystem().getPressure() + dp); + thermoOps.PSflash(entropy); + double hout = hinn + (getThermoSystem().getEnthalpy() - hinn) * polytropicEfficiency; + thermoOps.PHflash(hout, 0); + } + /* + * HYSYS method double oldPolyt = 10.5; int iter = 0; do { + * + * iter++; double n = Math.log(thermoSystem.getPressure() / presinn) / + * Math.log(thermoSystem.getDensity() / densInn); double k = + * Math.log(thermoSystem.getPressure() / presinn) / Math.log(densOutIdeal / densInn); double + * factor = ((Math.pow(thermoSystem.getPressure() / presinn, (n - 1.0) / n) - 1.0) * (n / (n - + * 1.0)) * (k - 1) / k) / (Math.pow(thermoSystem.getPressure() / presinn, (k - 1.0) / k) - + * 1.0); oldPolyt = polytropicEfficiency; polytropicEfficiency = factor * + * isentropicEfficiency; dH = thermoSystem.getEnthalpy() - hinn; hout = hinn + dH / + * polytropicEfficiency; thermoOps.PHflash(hout, 0); System.out.println(" factor " + factor + + * " n " + n + " k " + k + " polytropic effici " + polytropicEfficiency + " iter " + iter); } + * while (Math.abs((oldPolyt - polytropicEfficiency) / oldPolyt) > 1e-5 && iter < 500); // + * polytropicEfficiency = isentropicEfficiency * (); + */ + } else { + getThermoSystem().setPressure(pressure); - // System.out.println("entropy inn.." + entropy); - thermoOps.PSflash(entropy); - // double densOutIdeal = getThermoSystem().getDensity(); - if (!powerSet) { - dH = (getThermoSystem().getEnthalpy() - hinn) * isentropicEfficiency; - } - double hout = hinn + dH; - isentropicEfficiency = dH / (getThermoSystem().getEnthalpy() - hinn); - // System.out.println("isentropicEfficiency.. " + isentropicEfficiency); - dH = hout - hinn; - thermoOps.PHflash(hout, 0); - } - // thermoSystem.display(); - outStream.setThermoSystem(getThermoSystem()); + // System.out.println("entropy inn.." + entropy); + thermoOps.PSflash(entropy); + // double densOutIdeal = getThermoSystem().getDensity(); + if (!powerSet) { + dH = (getThermoSystem().getEnthalpy() - hinn) * isentropicEfficiency; + } + double hout = hinn + dH; + isentropicEfficiency = dH / (getThermoSystem().getEnthalpy() - hinn); + // System.out.println("isentropicEfficiency.. " + isentropicEfficiency); + dH = hout - hinn; + thermoOps.PHflash(hout, 0); } + // thermoSystem.display(); + outStream.setThermoSystem(getThermoSystem()); + setCalculationIdentifier(id); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/expander/ExpanderInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/expander/ExpanderInterface.java index b52d89f462..5d48369aff 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/expander/ExpanderInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/expander/ExpanderInterface.java @@ -12,12 +12,12 @@ * @version $Id: $Id */ public interface ExpanderInterface extends ProcessEquipmentInterface, TwoPortInterface { - /** - *

- * getEnergy. - *

- * - * @return a double - */ - public double getEnergy(); + /** + *

+ * getEnergy. + *

+ * + * @return a double + */ + public double getEnergy(); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/expander/ExpanderOld.java b/src/main/java/neqsim/processSimulation/processEquipment/expander/ExpanderOld.java index 53a294893d..bc003ad9b2 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/expander/ExpanderOld.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/expander/ExpanderOld.java @@ -4,6 +4,7 @@ import java.awt.FlowLayout; import java.text.DecimalFormat; import java.text.FieldPosition; +import java.util.UUID; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; @@ -27,7 +28,7 @@ public class ExpanderOld extends TwoPortEquipment implements ExpanderInterface { SystemInterface thermoSystem; ThermodynamicOperations thermoOps; - // todo: neither subclass of Compressor nor TwoPortEquipment + // TODO: neither subclass of Compressor nor TwoPortEquipment, nor used. remove class? double dH = 0.0; double pressure = 0.0; @@ -56,7 +57,7 @@ public ExpanderOld(StreamInterface inletStream) { /** * Constructor for ExpanderOld. - * + * * @param name name of expander */ public ExpanderOld(String name) { @@ -68,7 +69,7 @@ public ExpanderOld(String name) { * Constructor for ExpanderOld. *

* - * @param name a {@link java.lang.String} object + * @param name name of expander * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} * object */ @@ -100,22 +101,21 @@ public double getEnergy() { /** {@inheritDoc} */ @Override - public void run() { + public void run(UUID id) { System.out.println("expander running.."); thermoSystem = inStream.getThermoSystem().clone(); thermoOps = new ThermodynamicOperations(thermoSystem); thermoSystem.init(3); - double hinn = thermoSystem.getEnthalpy(); double entropy = thermoSystem.getEntropy(); - thermoSystem.setPressure(pressure); System.out.println("entropy inn.." + entropy); + double hinn = thermoSystem.getEnthalpy(); + thermoSystem.setPressure(pressure); thermoOps.PSflash(entropy); dH = thermoSystem.getEnthalpy() - hinn; outStream.setThermoSystem(thermoSystem); + setCalculationIdentifier(id); } - - /** {@inheritDoc} */ @Override public void displayResult() { @@ -129,7 +129,6 @@ public void displayResult() { thermoSystem.initPhysicalProperties(); String[][] table = new String[20][5]; - String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; table[0][0] = ""; table[0][1] = ""; table[0][2] = ""; @@ -206,6 +205,7 @@ public void displayResult() { table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][4] = "-"; } + String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; JTable Jtab = new JTable(table, names); JScrollPane scrollpane = new JScrollPane(Jtab); dialogContentPane.add(scrollpane); diff --git a/src/main/java/neqsim/processSimulation/processEquipment/filter/CharCoalFilter.java b/src/main/java/neqsim/processSimulation/processEquipment/filter/CharCoalFilter.java index 7570990c0a..c3e1ce1afc 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/filter/CharCoalFilter.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/filter/CharCoalFilter.java @@ -11,28 +11,28 @@ * @version $Id: $Id */ public class CharCoalFilter extends Filter { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for CharCoalFilter. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public CharCoalFilter(StreamInterface inStream) { - super(inStream); - } + /** + *

+ * Constructor for CharCoalFilter. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public CharCoalFilter(StreamInterface inStream) { + super(inStream); + } - /** - * Constructor for CharCoalFilter. - * - * @param name name of filter - * @param inStream input stream - */ - public CharCoalFilter(String name, StreamInterface inStream) { - super(name, inStream); - } + /** + * Constructor for CharCoalFilter. + * + * @param name name of filter + * @param inStream input stream + */ + public CharCoalFilter(String name, StreamInterface inStream) { + super(name, inStream); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/filter/Filter.java b/src/main/java/neqsim/processSimulation/processEquipment/filter/Filter.java index 57f11bb14b..e78af11329 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/filter/Filter.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/filter/Filter.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.filter; +import java.util.UUID; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.stream.StreamInterface; @@ -48,7 +49,7 @@ public Filter(String name, StreamInterface inStream) { /** {@inheritDoc} */ @Override - public void run() { + public void run(UUID id) { SystemInterface system = inStream.getThermoSystem().clone(); if (Math.abs(getDeltaP()) > 1e-10) { system.setPressure(inStream.getPressure() - getDeltaP()); @@ -58,6 +59,7 @@ public void run() { system.initProperties(); outStream.setThermoSystem(system); Cv = Math.sqrt(deltaP) / inStream.getFlowRate("kg/hr"); + setCalculationIdentifier(id); } /** diff --git a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/Cooler.java b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/Cooler.java index e9d14c40f3..8f3903846b 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/Cooler.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/Cooler.java @@ -1,6 +1,9 @@ package neqsim.processSimulation.processEquipment.heatExchanger; +import java.util.UUID; +import com.google.gson.GsonBuilder; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.util.monitor.HeaterResponse; /** *

@@ -11,68 +14,73 @@ * @version $Id: $Id */ public class Cooler extends Heater { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for Cooler. - *

- */ - @Deprecated - public Cooler() { - super(); - } + /** + *

+ * Constructor for Cooler. + *

+ */ + @Deprecated + public Cooler() { + super(); + } - /** - *

- * Constructor for Cooler. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public Cooler(StreamInterface inStream) { - super(inStream); - } + /** + *

+ * Constructor for Cooler. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public Cooler(StreamInterface inStream) { + super(inStream); + } - /** - * Constructor for Cooler. - * - * @param name name of cooler - */ - public Cooler(String name) { - super(name); - } + /** + * Constructor for Cooler. + * + * @param name name of cooler + */ + public Cooler(String name) { + super(name); + } - /** - *

- * Constructor for Cooler. - *

- * - * @param name a {@link java.lang.String} object - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public Cooler(String name, StreamInterface inStream) { - super(name, inStream); - } + /** + *

+ * Constructor for Cooler. + *

+ * + * @param name a {@link java.lang.String} object + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public Cooler(String name, StreamInterface inStream) { + super(name, inStream); + } - /** {@inheritDoc} */ - @Override - public double getEntropyProduction(String unit) { - double entrop = 0.0; + /** {@inheritDoc} */ + @Override + public double getEntropyProduction(String unit) { + UUID id = UUID.randomUUID(); + inStream.run(id); + inStream.getFluid().init(3); + getOutletStream().run(id); + getOutletStream().getFluid().init(3); - inStream.run(); - inStream.getFluid().init(3); - getOutletStream().run(); - getOutletStream().getFluid().init(3); + double heatTransferEntropyProd = coolingMediumTemperature * getDuty(); + System.out.println("heat entropy " + heatTransferEntropyProd); + double entrop = getOutletStream().getThermoSystem().getEntropy(unit) + - inStream.getThermoSystem().getEntropy(unit); - double heatTransferEntropyProd = coolingMediumTemperature * getDuty(); - System.out.println("heat entropy " + heatTransferEntropyProd); - entrop += getOutletStream().getThermoSystem().getEntropy(unit) - - inStream.getThermoSystem().getEntropy(unit); + return entrop; + } - return entrop; - } + /** {@inheritDoc} */ + @Override + public String toJson() { + return new GsonBuilder().create().toJson(new HeaterResponse(this)); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchanger.java b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchanger.java index 1b13b9331d..4eb831a699 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchanger.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchanger.java @@ -3,12 +3,16 @@ * * Created on 15. mars 2001, 14:17 */ + package neqsim.processSimulation.processEquipment.heatExchanger; +import java.util.UUID; +import com.google.gson.GsonBuilder; import neqsim.processSimulation.conditionMonitor.ConditionMonitorSpecifications; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.util.monitor.HXResponse; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -21,589 +25,736 @@ * @version $Id: $Id */ public class HeatExchanger extends Heater implements HeatExchangerInterface { - private static final long serialVersionUID = 1000; - - boolean setTemperature = false; - StreamInterface[] outStream = new Stream[2]; - StreamInterface[] inStream = new Stream[2]; - SystemInterface system; - double NTU; - protected double temperatureOut = 0, dT = 0.0; - double dH = 0.0; - private double UAvalue = 500.0; - double duty = 0.0; - private double hotColdDutyBalance = 1.0; - boolean firstTime = true; - public double guessOutTemperature = 273.15 + 130.0; - int outStreamSpecificationNumber = 0; - public double thermalEffectiveness = 0.0; - private String flowArrangement = "concentric tube counterflow"; - - /** - *

- * Constructor for HeatExchanger. - *

- */ - @Deprecated - public HeatExchanger() { - this("HeatExchanger"); - } - - /** - *

- * Constructor for HeatExchanger. - *

- * - * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public HeatExchanger(StreamInterface inStream1) { - this("HeatExchanger", inStream1); - } - - /** - *

- * Constructor for HeatExchanger. - *

- * - * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - * @param inStream2 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public HeatExchanger(StreamInterface inStream1, StreamInterface inStream2) { - this("HeatExchanger", inStream1, inStream2); - } - - /** - * Constructor for HeatExchanger. - * - * @param name name of heat exchanger - */ - public HeatExchanger(String name) { - super(name); - } - - /** - * Constructor for HeatExchanger. - * - * @param name name of heat exchanger - * @param inStream1 input stream - */ - public HeatExchanger(String name, StreamInterface inStream1) { - this(name); - this.inStream[0] = inStream1; - this.inStream[1] = inStream1; - outStream[0] = inStream1.clone(); - outStream[1] = inStream1.clone(); - } - - /** - * Constructor for HeatExchanger. - * - * @param name name of heat exchanger - * @param inStream1 input stream 1 - * @param inStream2 input stream 2 - */ - public HeatExchanger(String name, StreamInterface inStream1, StreamInterface inStream2) { - this(name); - this.inStream[0] = inStream1; - this.inStream[1] = inStream2; - outStream[0] = inStream1.clone(); - outStream[1] = inStream2.clone(); - } - - /** - *

- * addInStream. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void addInStream(StreamInterface inStream) { - this.inStream[1] = inStream; - } - - /** - *

- * setFeedStream. - *

- * - * @param number a int - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void setFeedStream(int number, StreamInterface inStream) { - this.inStream[number] = inStream; - outStream[number] = inStream.clone(); - } - - /** {@inheritDoc} */ - @Override - public void setName(String name) { - super.setName(name); - outStream[0].setName(name + "_Sout1"); - outStream[1].setName(name + "_Sout2"); - } + private static final long serialVersionUID = 1000; + + boolean setTemperature = false; + StreamInterface[] outStream = new Stream[2]; + StreamInterface[] inStream = new Stream[2]; + SystemInterface system; + double NTU; + protected double temperatureOut = 0; + + protected double dT = 0.0; + + double dH = 0.0; + private double UAvalue = 500.0; + double duty = 0.0; + private double hotColdDutyBalance = 1.0; + boolean firstTime = true; + public double guessOutTemperature = 273.15 + 130.0; + public String guessOutTemperatureUnit = "K"; + int outStreamSpecificationNumber = 0; + public double thermalEffectiveness = 0.0; + private String flowArrangement = "concentric tube counterflow"; + private boolean useDeltaT = false; + + /** + *

+ * Constructor for HeatExchanger. + *

+ */ + @Deprecated + public HeatExchanger() { + this("HeatExchanger"); + } + + /** + *

+ * Constructor for HeatExchanger. + *

+ * + * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public HeatExchanger(StreamInterface inStream1) { + this("HeatExchanger", inStream1); + } + + /** + *

+ * Constructor for HeatExchanger. + *

+ * + * @param inStream1 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + * @param inStream2 a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public HeatExchanger(StreamInterface inStream1, StreamInterface inStream2) { + this("HeatExchanger", inStream1, inStream2); + } + + /** + * Constructor for HeatExchanger. + * + * @param name name of heat exchanger + */ + public HeatExchanger(String name) { + super(name); + } + + /** + * Constructor for HeatExchanger. + * + * @param name name of heat exchanger + * @param inStream1 input stream + */ + public HeatExchanger(String name, StreamInterface inStream1) { + this(name); + this.inStream[0] = inStream1; + this.inStream[1] = inStream1; + outStream[0] = inStream1.clone(); + outStream[1] = inStream1.clone(); + } + + /** + * Constructor for HeatExchanger. + * + * @param name name of heat exchanger + * @param inStream1 input stream 1 + * @param inStream2 input stream 2 + */ + public HeatExchanger(String name, StreamInterface inStream1, StreamInterface inStream2) { + this(name); + this.inStream[0] = inStream1; + this.inStream[1] = inStream2; + outStream[0] = inStream1.clone(); + outStream[1] = inStream2.clone(); + } + + /** + *

+ * addInStream. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void addInStream(StreamInterface inStream) { + this.inStream[1] = inStream; + } + + /** + *

+ * setFeedStream. + *

+ * + * @param number a int + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void setFeedStream(int number, StreamInterface inStream) { + this.inStream[number] = inStream; + outStream[number] = inStream.clone(); + } + + /** {@inheritDoc} */ + @Override + public void setName(String name) { + super.setName(name); + outStream[0].setName(name + "_Sout1"); + outStream[1].setName(name + "_Sout2"); + } + + /** {@inheritDoc} */ + @Override + public void setdT(double dT) { + this.dT = dT; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getOutStream(int i) { + return outStream[i]; + } + + /** + *

+ * Getter for the field inStream. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getInStream(int i) { + return inStream[i]; + } + + /** {@inheritDoc} */ + @Override + public void setOutTemperature(double temperature) { + this.temperatureOut = temperature; + } + + /** + *

+ * getOutTemperature. + *

+ * + * @param i a int + */ + public void getOutTemperature(int i) { + outStream[i].getThermoSystem().getTemperature(); + } + + /** + *

+ * getInTemperature. + *

+ * + * @param i a int + */ + public void getInTemperature(int i) { + inStream[i].getThermoSystem().getTemperature(); + } + + /** + *

+ * Setter for the field outStream. + *

+ * + * @param outStream the outStream to set + * @param streamNumber a int + */ + public void setOutStream(int streamNumber, StreamInterface outStream) { + this.outStream[streamNumber] = outStream; + outStreamSpecificationNumber = streamNumber; + } + + /** + *

+ * runSpecifiedStream. + *

+ * + * @param id UUID of run + */ + public void runSpecifiedStream(UUID id) { + int nonOutStreamSpecifiedStreamNumber = 0; + if (outStreamSpecificationNumber == 0) { + nonOutStreamSpecifiedStreamNumber = 1; + } + + SystemInterface systemOut0 = + inStream[nonOutStreamSpecifiedStreamNumber].getThermoSystem().clone(); + // SystemInterface systemOut1 = + // inStream[outStreamSpecificationNumber].getThermoSystem().clone(); + + if (getSpecification().equals("out stream")) { + outStream[outStreamSpecificationNumber] + .setFlowRate(getInStream(outStreamSpecificationNumber).getFlowRate("kg/sec"), "kg/sec"); + outStream[outStreamSpecificationNumber].run(id); + temperatureOut = outStream[outStreamSpecificationNumber].getTemperature(); + // system = + // outStream[outStreamSpecificationNumber].getThermoSystem().clone(); + } + + double deltaEnthalpy = outStream[outStreamSpecificationNumber].getFluid().getEnthalpy() + - inStream[outStreamSpecificationNumber].getFluid().getEnthalpy(); + double enthalpyOutRef = + inStream[nonOutStreamSpecifiedStreamNumber].getFluid().getEnthalpy() - deltaEnthalpy; + + ThermodynamicOperations testOps = new ThermodynamicOperations(systemOut0); + testOps.PHflash(enthalpyOutRef); + System.out.println("out temperature " + systemOut0.getTemperature("C")); + outStream[nonOutStreamSpecifiedStreamNumber].setFluid(systemOut0); + } + + /** + *

+ * runSpecifiedStream. + *

+ * + * @param id UUID of run + */ + public void runDeltaT(UUID id) { + + if (getSpecification().equals("out stream")) { + runSpecifiedStream(id); + } else if (firstTime) { + firstTime = false; + SystemInterface systemOut0 = inStream[0].getThermoSystem().clone(); + outStream[0].setThermoSystem(systemOut0); + outStream[0].getThermoSystem().setTemperature(guessOutTemperature, guessOutTemperatureUnit); + outStream[0].run(id); + run(id); + } else { + int streamToCalculate = 0; + + for (StreamInterface stream : inStream) { + stream.run(); + } + + int streamToSet = 1; + SystemInterface systemOut0 = inStream[streamToSet].getThermoSystem().clone(); + SystemInterface systemOut1 = inStream[streamToCalculate].getThermoSystem().clone(); + double sign = Math.signum( + inStream[streamToCalculate].getTemperature() - inStream[streamToSet].getTemperature()); + // systemOut1.setTemperature(inTemp1); + outStream[streamToSet].setThermoSystem(systemOut0); + outStream[streamToCalculate].setThermoSystem(systemOut1); + outStream[streamToSet] + .setTemperature(inStream[streamToCalculate].getTemperature() + sign * deltaT, "K"); + if (!outStream[streamToSet].getSpecification().equals("TP")) { + outStream[streamToSet].runTPflash(); + } + outStream[streamToSet].run(id); + double dEntalphy1 = outStream[streamToSet].getThermoSystem().getEnthalpy() + - inStream[streamToSet].getThermoSystem().getEnthalpy(); + double C1 = + Math.abs(dEntalphy1) / Math.abs((outStream[streamToSet].getThermoSystem().getTemperature() + - inStream[streamToSet].getThermoSystem().getTemperature())); + + outStream[streamToCalculate].setTemperature( + inStream[streamToSet].getThermoSystem().getTemperature() - sign * deltaT, "K"); + if (!outStream[streamToCalculate].getSpecification().equals("TP")) { + outStream[streamToCalculate].runTPflash(); + } + outStream[streamToCalculate].run(id); + double dEntalphy2 = outStream[streamToCalculate].getThermoSystem().getEnthalpy() + - inStream[streamToCalculate].getThermoSystem().getEnthalpy(); + double C2 = Math.abs(dEntalphy2) + / Math.abs(outStream[streamToCalculate].getThermoSystem().getTemperature() + - inStream[streamToCalculate].getThermoSystem().getTemperature()); + double Cmin = C1; + double Cmax = C2; + if (C2 < C1) { + Cmin = C2; + Cmax = C1; + } + double Cr = Cmin / Cmax; + if (Math.abs(dEntalphy1) < Math.abs(dEntalphy2)) { + int streamCHange = streamToCalculate; + streamToCalculate = streamToSet; + streamToSet = streamCHange; + } + + double dEntalphy = outStream[streamToSet].getThermoSystem().getEnthalpy() + - inStream[streamToSet].getThermoSystem().getEnthalpy(); + // System.out.println("dent " + dEntalphy); + ThermodynamicOperations testOps = + new ThermodynamicOperations(outStream[streamToCalculate].getThermoSystem()); + testOps.PHflash(inStream[streamToCalculate].getThermoSystem().getEnthalpy() - dEntalphy, 0); + + if (Math.abs(thermalEffectiveness - 1.0) > 1e-10) { + testOps = new ThermodynamicOperations(outStream[streamToSet].getThermoSystem()); + testOps.PHflash(inStream[streamToSet].getThermoSystem().getEnthalpy() + dEntalphy, 0); + } + duty = dEntalphy; + hotColdDutyBalance = 1.0; + + UAvalue = dEntalphy / (outStream[streamToSet].getThermoSystem().getTemperature() + - inStream[streamToSet].getThermoSystem().getTemperature()); + } + + setCalculationIdentifier(id); + + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (useDeltaT) { + runDeltaT(id); + return; + } + if (getSpecification().equals("out stream")) { + runSpecifiedStream(id); + } else if (firstTime) { + firstTime = false; + SystemInterface systemOut0 = inStream[0].getThermoSystem().clone(); + outStream[0].setThermoSystem(systemOut0); + outStream[0].getThermoSystem().setTemperature(guessOutTemperature, guessOutTemperatureUnit); + outStream[0].run(id); + run(id); + } else { + int streamToCalculate = 0; + + // double cP0 = inStream[0].getThermoSystem().getCp(); + // double cP1 = inStream[1].getThermoSystem().getCp(); + // if (cP0 < cP1) { + // streamToCalculate = 1; + // streamToSet = 0; + // } + + // Make sure these streams to run because of the issues with enthalpy + // calculations if not run + for (StreamInterface stream : inStream) { + stream.run(); + } + + int streamToSet = 1; + SystemInterface systemOut0 = inStream[streamToSet].getThermoSystem().clone(); + SystemInterface systemOut1 = inStream[streamToCalculate].getThermoSystem().clone(); + + // systemOut1.setTemperature(inTemp1); + outStream[streamToSet].setThermoSystem(systemOut0); + outStream[streamToCalculate].setThermoSystem(systemOut1); + outStream[streamToSet].setTemperature(inStream[streamToCalculate].getTemperature(), "K"); + if (!outStream[streamToSet].getSpecification().equals("TP")) { + outStream[streamToSet].runTPflash(); + } + outStream[streamToSet].run(id); + double dEntalphy1 = outStream[streamToSet].getThermoSystem().getEnthalpy() + - inStream[streamToSet].getThermoSystem().getEnthalpy(); + double C1 = + Math.abs(dEntalphy1) / Math.abs((outStream[streamToSet].getThermoSystem().getTemperature() + - inStream[streamToSet].getThermoSystem().getTemperature())); + + outStream[streamToCalculate] + .setTemperature(inStream[streamToSet].getThermoSystem().getTemperature(), "K"); + if (!outStream[streamToCalculate].getSpecification().equals("TP")) { + outStream[streamToCalculate].runTPflash(); + } + outStream[streamToCalculate].run(id); + double dEntalphy2 = outStream[streamToCalculate].getThermoSystem().getEnthalpy() + - inStream[streamToCalculate].getThermoSystem().getEnthalpy(); + double C2 = Math.abs(dEntalphy2) + / Math.abs(outStream[streamToCalculate].getThermoSystem().getTemperature() + - inStream[streamToCalculate].getThermoSystem().getTemperature()); + double Cmin = C1; + double Cmax = C2; + if (C2 < C1) { + Cmin = C2; + Cmax = C1; + } + double Cr = Cmin / Cmax; + if (Math.abs(dEntalphy1) > Math.abs(dEntalphy2)) { + int streamCHange = streamToCalculate; + streamToCalculate = streamToSet; + streamToSet = streamCHange; + } + + double dEntalphy = outStream[streamToSet].getThermoSystem().getEnthalpy() + - inStream[streamToSet].getThermoSystem().getEnthalpy(); + NTU = UAvalue / Cmin; + + thermalEffectiveness = calcThermalEffectivenes(NTU, Cr); + // double corrected_Entalphy = dEntalphy; // * + // inStream[1].getThermoSystem().getNumberOfMoles() / + // inStream[0].getThermoSystem().getNumberOfMoles(); + dEntalphy = thermalEffectiveness * dEntalphy; + // System.out.println("dent " + dEntalphy); + ThermodynamicOperations testOps = + new ThermodynamicOperations(outStream[streamToCalculate].getThermoSystem()); + testOps.PHflash(inStream[streamToCalculate].getThermoSystem().getEnthalpy() - dEntalphy, 0); + + if (Math.abs(thermalEffectiveness - 1.0) > 1e-10) { + testOps = new ThermodynamicOperations(outStream[streamToSet].getThermoSystem()); + testOps.PHflash(inStream[streamToSet].getThermoSystem().getEnthalpy() + dEntalphy, 0); + } + duty = dEntalphy; + hotColdDutyBalance = 1.0; + // outStream[0].displayResult(); + // outStream[1].displayResult(); + // System.out.println("temperatur Stream 1 out " + + // outStream[0].getTemperature()); + // System.out.println("temperatur Stream 0 out " + + // outStream[1].getTemperature()); + // outStream[0].setThermoSystem(systemOut0); + // System.out.println("temperature out " + + // outStream[streamToCalculate].getTemperature()); + /* + * if (systemOut0.getTemperature() <= inTemp1 - dT) { systemOut0.setTemperature(inTemp1); + * outStream[0].setThermoSystem(systemOut0); outStream[0].run(); //inStream[0].run(); + * + * dEntalphy = outStream[0].getThermoSystem().getEnthalpy() - + * inStream[0].getThermoSystem().getEnthalpy(); corrected_Entalphy = dEntalphy * + * inStream[0].getThermoSystem().getNumberOfMoles() / + * inStream[1].getThermoSystem().getNumberOfMoles(); + * + * systemOut1 = inStream[1].getThermoSystem().clone(); System.out.println("dent " + + * dEntalphy); testOps = new ThermodynamicOperations(systemOut1); + * testOps.PHflash(systemOut1.getEnthalpy() - corrected_Entalphy, 0); + * outStream[1].setThermoSystem(systemOut1); System.out.println("temperatur out " + + * outStream[1].getTemperature()); } + */ + } + + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public double getDuty() { + return duty; + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + outStream[0].displayResult(); + outStream[1].displayResult(); + } + + /** + *

+ * getUAvalue. + *

+ * + * @return the UAvalue + */ + public double getUAvalue() { + return UAvalue; + } + + /** + *

+ * setUAvalue. + *

+ * + * @param UAvalue the UAvalue to set + */ + public void setUAvalue(double UAvalue) { + this.UAvalue = UAvalue; + } + + /** + *

+ * Getter for the field guessOutTemperature. + *

+ * + * @return a double + */ + public double getGuessOutTemperature() { + return guessOutTemperature; + } + + /** + *

+ * Setter for the field guessOutTemperature. + *

+ * + * @param guessOutTemperature a double + */ + public void setGuessOutTemperature(double guessOutTemperature) { + this.guessOutTemperature = guessOutTemperature; + this.guessOutTemperatureUnit = "K"; + } + + /** + *

+ * Setter for the field guessOutTemperature. + *

+ * + * @param guessOutTemperature a double + */ + public void setGuessOutTemperature(double guessOutTemperature, String unit) { + this.guessOutTemperature = guessOutTemperature; + this.guessOutTemperatureUnit = unit; + } + + /** {@inheritDoc} */ + @Override + public double getEntropyProduction(String unit) { + double entrop = 0.0; + + for (int i = 0; i < 2; i++) { + UUID id = UUID.randomUUID(); + inStream[i].run(id); + inStream[i].getFluid().init(3); + outStream[i].run(id); + outStream[i].getFluid().init(3); + entrop += outStream[i].getThermoSystem().getEntropy(unit) + - inStream[i].getThermoSystem().getEntropy(unit); + } + + int stream1 = 0; + int stream2 = 1; + if (inStream[0].getTemperature() < inStream[1].getTemperature()) { + stream2 = 0; + stream1 = 1; + } + double heatTransferEntropyProd = Math.abs(getDuty()) + * (1.0 / inStream[stream2].getTemperature() - 1.0 / (inStream[stream1].getTemperature())); + // System.out.println("heat entropy " + heatTransferEntropyProd); + + return entrop + heatTransferEntropyProd; + } + + /** {@inheritDoc} */ + @Override + public double getMassBalance(String unit) { + double mass = 0.0; + + for (int i = 0; i < 2; i++) { + inStream[i].run(); + inStream[i].getFluid().init(3); + outStream[i].run(); + outStream[i].getFluid().init(3); + mass += outStream[i].getThermoSystem().getFlowRate(unit) + - inStream[i].getThermoSystem().getFlowRate(unit); + } + return mass; + } + + /** {@inheritDoc} */ + @Override + public void runConditionAnalysis(ProcessEquipmentInterface refExchanger) { + double heatBalanceError = 0.0; + conditionAnalysisMessage += name + " condition analysis started/"; + HeatExchanger refEx = (HeatExchanger) refExchanger; + for (int i = 0; i < 2; i++) { + inStream[i].getFluid().initProperties(); + outStream[i].getFluid().initProperties(); + heatBalanceError += outStream[i].getThermoSystem().getEnthalpy() + - inStream[i].getThermoSystem().getEnthalpy(); + + if (Math.abs(refEx.getInStream(i).getTemperature("C") + - getInStream(i).getTemperature("C")) > ConditionMonitorSpecifications.HXmaxDeltaT) { + conditionAnalysisMessage += ConditionMonitorSpecifications.HXmaxDeltaT_ErrorMsg; + } else if (Math.abs(refEx.getOutStream(i).getTemperature("C") + - getOutStream(i).getTemperature("C")) > ConditionMonitorSpecifications.HXmaxDeltaT) { + conditionAnalysisMessage += ConditionMonitorSpecifications.HXmaxDeltaT_ErrorMsg; + } + } + heatBalanceError = heatBalanceError / (outStream[0].getThermoSystem().getEnthalpy() + - inStream[0].getThermoSystem().getEnthalpy()) * 100.0; + if (Math.abs(heatBalanceError) > 10.0) { + String error = "Heat balance not fulfilled. Error: " + heatBalanceError + " "; + conditionAnalysisMessage += error; + } else { + String error = "Heat balance ok. Enthalpy balance deviation: " + heatBalanceError + " %"; + conditionAnalysisMessage += error; + } + + conditionAnalysisMessage += name + "/analysis ended/"; + + // this.run(); + double duty1 = Math.abs( + outStream[0].getThermoSystem().getEnthalpy() - inStream[0].getThermoSystem().getEnthalpy()); + double duty2 = Math.abs( + outStream[1].getThermoSystem().getEnthalpy() - inStream[1].getThermoSystem().getEnthalpy()); + thermalEffectiveness = ((HeatExchanger) refExchanger).getThermalEffectiveness() + * (duty1 + duty2) / 2.0 / Math.abs(((HeatExchanger) refExchanger).getDuty()); + hotColdDutyBalance = duty1 / duty2; + } + + /** + *

+ * runConditionAnalysis. + *

+ */ + public void runConditionAnalysis() { + runConditionAnalysis(this); + } + + /** + *

+ * Getter for the field thermalEffectiveness. + *

+ * + * @return a double + */ + public double getThermalEffectiveness() { + return thermalEffectiveness; + } + + /** + *

+ * Setter for the field thermalEffectiveness. + *

+ * + * @param thermalEffectiveness a double + */ + public void setThermalEffectiveness(double thermalEffectiveness) { + this.thermalEffectiveness = thermalEffectiveness; + } + + /** + *

+ * Getter for the field flowArrangement. + *

+ * + * @return String + */ + public String getFlowArrangement() { + return flowArrangement; + } + + /** + *

+ * Setter for the field flowArrangement. + *

+ * + * @param flowArrangement name of flow arrangement + */ + public void setFlowArrangement(String flowArrangement) { + this.flowArrangement = flowArrangement; + } + + /** + *

+ * calcThermalEffectivenes. + *

+ * + * @param NTU a double + * @param Cr a double + * @return a double + */ + public double calcThermalEffectivenes(double NTU, double Cr) { + if (Cr == 0.0) { + return 1.0 - Math.exp(-NTU); + } + if (flowArrangement.equals("concentric tube counterflow")) { + if (Cr == 1.0) { + return NTU / (1.0 + NTU); + } else { + return (1.0 - Math.exp(-NTU * (1 - Cr))) / (1.0 - Cr * Math.exp(-NTU * (1 - Cr))); + } + } else if (flowArrangement.equals("concentric tube paralellflow")) { + return (1.0 - Math.exp(-NTU * (1 + Cr))) / ((1 + Cr)); + } else if (flowArrangement.equals("shell and tube")) { + return (1.0 - Math.exp(-NTU * (1 - Cr))) / (1.0 - Cr * Math.exp(-NTU * (1 - Cr))); + } else { + return (1.0 - Math.exp(-NTU * (1 - Cr))) / (1.0 - Cr * Math.exp(-NTU * (1 - Cr))); + } + } + + /** + *

+ * Getter for the field hotColdDutyBalance. + *

+ * + * @return a double + */ + public double getHotColdDutyBalance() { + return hotColdDutyBalance; + } + + /** + *

+ * Setter for the field hotColdDutyBalance. + *

+ * + * @param hotColdDutyBalance a double + */ + public void setHotColdDutyBalance(double hotColdDutyBalance) { + this.hotColdDutyBalance = hotColdDutyBalance; + } + + /** {@inheritDoc} */ + @Override + public String toJson() { + return new GsonBuilder().serializeSpecialFloatingPointValues().create() + .toJson(new HXResponse(this)); + } + + + public void setUseDeltaT(boolean useDeltaT) { + this.useDeltaT = useDeltaT; + } + + private double deltaT = 1.0; + + public double getDeltaT() { + return deltaT; + } + + public void setDeltaT(double deltaT) { + useDeltaT = true; + this.deltaT = deltaT; + } - /** {@inheritDoc} */ - @Override - public void setdT(double dT) { - this.dT = dT; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutStream(int i) { - return outStream[i]; - } - - /** - *

- * Getter for the field inStream. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface getInStream(int i) { - return inStream[i]; - } - - /** {@inheritDoc} */ - @Override - public void setOutTemperature(double temperature) { - this.temperatureOut = temperature; - } - - /** - *

- * getOutTemperature. - *

- * - * @param i a int - */ - public void getOutTemperature(int i) { - outStream[i].getThermoSystem().getTemperature(); - } - - /** - *

- * getInTemperature. - *

- * - * @param i a int - */ - public void getInTemperature(int i) { - inStream[i].getThermoSystem().getTemperature(); - } - - /** - *

- * Setter for the field outStream. - *

- * - * @param outStream the outStream to set - * @param streamNumber a int - */ - public void setOutStream(int streamNumber, StreamInterface outStream) { - this.outStream[streamNumber] = outStream; - outStreamSpecificationNumber = streamNumber; - } - - /** - *

- * runSpecifiedStream. - *

- */ - public void runSpecifiedStream() { - int nonOutStreamSpecifiedStreamNumber = 0; - if (outStreamSpecificationNumber == 0) { - nonOutStreamSpecifiedStreamNumber = 1; - } - - SystemInterface systemOut0 = - inStream[nonOutStreamSpecifiedStreamNumber].getThermoSystem().clone(); - // SystemInterface systemOut1 = - // inStream[outStreamSpecificationNumber].getThermoSystem().clone(); - - if (getSpecification().equals("out stream")) { - outStream[outStreamSpecificationNumber].setFlowRate( - getInStream(outStreamSpecificationNumber).getFlowRate("kg/sec"), "kg/sec"); - outStream[outStreamSpecificationNumber].run(); - temperatureOut = outStream[outStreamSpecificationNumber].getTemperature(); - // system = - // outStream[outStreamSpecificationNumber].getThermoSystem().clone(); - } - - double deltaEnthalpy = outStream[outStreamSpecificationNumber].getFluid().getEnthalpy() - - inStream[outStreamSpecificationNumber].getFluid().getEnthalpy(); - double enthalpyOutRef = inStream[nonOutStreamSpecifiedStreamNumber].getFluid().getEnthalpy() - - deltaEnthalpy; - - ThermodynamicOperations testOps = new ThermodynamicOperations(systemOut0); - testOps.PHflash(enthalpyOutRef); - System.out.println("out temperature " + systemOut0.getTemperature("C")); - outStream[nonOutStreamSpecifiedStreamNumber].setFluid(systemOut0); - } - - /** {@inheritDoc} */ - @Override - public void run() { - if (getSpecification().equals("out stream")) { - runSpecifiedStream(); - return; - } - - // inStream[0].run(); - // inStream[1].displayResult(); - if (firstTime) { - firstTime = false; - SystemInterface systemOut0 = inStream[0].getThermoSystem().clone(); - outStream[0].setThermoSystem(systemOut0); - outStream[0].getThermoSystem().setTemperature(guessOutTemperature); - outStream[0].run(); - run(); - return; - } - - double cP0 = inStream[0].getThermoSystem().getCp(); - double cP1 = inStream[1].getThermoSystem().getCp(); - int streamToCalculate = 0, streamToSet = 1; - - if (cP0 < cP1) { - // streamToCalculate = 1; - // streamToSet = 0; - } - SystemInterface systemOut0 = inStream[streamToSet].getThermoSystem().clone(); - SystemInterface systemOut1 = inStream[streamToCalculate].getThermoSystem().clone(); - - // systemOut1.setTemperature(inTemp1); - outStream[streamToSet].setThermoSystem(systemOut0); - outStream[streamToCalculate].setThermoSystem(systemOut1); - outStream[streamToSet].setTemperature( - inStream[streamToCalculate].getThermoSystem().getTemperature(), "K"); - outStream[streamToSet].getThermoSystem() - .setTemperature(inStream[streamToCalculate].getThermoSystem().getTemperature()); - if (!outStream[streamToSet].getSpecification().equals("TP")) { - outStream[streamToSet].runTPflash(); - } - outStream[streamToSet].run(); - double dEntalphy1 = outStream[streamToSet].getThermoSystem().getEnthalpy() - - inStream[streamToSet].getThermoSystem().getEnthalpy(); - double C1 = Math.abs(dEntalphy1) - / Math.abs((outStream[streamToSet].getThermoSystem().getTemperature() - - inStream[streamToSet].getThermoSystem().getTemperature())); - - outStream[streamToCalculate] - .setTemperature(inStream[streamToSet].getThermoSystem().getTemperature(), "K"); - outStream[streamToCalculate].getThermoSystem() - .setTemperature(inStream[streamToSet].getThermoSystem().getTemperature()); - if (!outStream[streamToCalculate].getSpecification().equals("TP")) { - outStream[streamToCalculate].runTPflash(); - } - outStream[streamToCalculate].run(); - double dEntalphy2 = outStream[streamToCalculate].getThermoSystem().getEnthalpy() - - inStream[streamToCalculate].getThermoSystem().getEnthalpy(); - double C2 = Math.abs(dEntalphy2) - / Math.abs(outStream[streamToCalculate].getThermoSystem().getTemperature() - - inStream[streamToCalculate].getThermoSystem().getTemperature()); - double Cmin = C1; - double Cmax = C2; - if (C2 < C1) { - Cmin = C2; - Cmax = C1; - } - double Cr = Cmin / Cmax; - if (Math.abs(dEntalphy1) > Math.abs(dEntalphy2)) { - int streamCHange = streamToCalculate; - streamToCalculate = streamToSet; - streamToSet = streamCHange; - } - - double dEntalphy = outStream[streamToSet].getThermoSystem().getEnthalpy() - - inStream[streamToSet].getThermoSystem().getEnthalpy(); - NTU = UAvalue / Cmin; - - thermalEffectiveness = calcThermalEffectivenes(NTU, Cr); - // double corrected_Entalphy = dEntalphy;// * - // inStream[1].getThermoSystem().getNumberOfMoles() / - // inStream[0].getThermoSystem().getNumberOfMoles(); - dEntalphy = thermalEffectiveness * dEntalphy; - // System.out.println("dent " + dEntalphy); - ThermodynamicOperations testOps = - new ThermodynamicOperations(outStream[streamToCalculate].getThermoSystem()); - testOps.PHflash(inStream[streamToCalculate].getThermoSystem().getEnthalpy() - dEntalphy, 0); - - if (Math.abs(thermalEffectiveness - 1.0) > 1e-10) { - testOps = new ThermodynamicOperations(outStream[streamToSet].getThermoSystem()); - testOps.PHflash(inStream[streamToSet].getThermoSystem().getEnthalpy() + dEntalphy, 0); - } - duty = dEntalphy; - hotColdDutyBalance = 1.0; - // outStream[0].displayResult(); - // outStream[1].displayResult(); - // System.out.println("temperatur Stream 1 out " + - // outStream[0].getTemperature()); - // System.out.println("temperatur Stream 0 out " + - // outStream[1].getTemperature()); - // outStream[0].setThermoSystem(systemOut0); - // System.out.println("temperature out " + - // outStream[streamToCalculate].getTemperature()); - /* - * if (systemOut0.getTemperature() <= inTemp1 - dT) { systemOut0.setTemperature(inTemp1); - * outStream[0].setThermoSystem(systemOut0); outStream[0].run(); //inStream[0].run(); - * - * dEntalphy = outStream[0].getThermoSystem().getEnthalpy() - - * inStream[0].getThermoSystem().getEnthalpy(); corrected_Entalphy = dEntalphy * - * inStream[0].getThermoSystem().getNumberOfMoles() / - * inStream[1].getThermoSystem().getNumberOfMoles(); - * - * systemOut1 = inStream[1].getThermoSystem().clone(); System.out.println("dent " + - * dEntalphy); testOps = new ThermodynamicOperations(systemOut1); - * testOps.PHflash(systemOut1.getEnthalpy() - corrected_Entalphy, 0); - * outStream[1].setThermoSystem(systemOut1); System.out.println("temperatur out " + - * outStream[1].getTemperature()); } - */ - } - - /** {@inheritDoc} */ - @Override - public double getDuty() { - return duty; - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - outStream[0].displayResult(); - outStream[1].displayResult(); - } - - /** - *

- * getUAvalue. - *

- * - * @return the UAvalue - */ - public double getUAvalue() { - return UAvalue; - } - - /** - *

- * setUAvalue. - *

- * - * @param UAvalue the UAvalue to set - */ - public void setUAvalue(double UAvalue) { - this.UAvalue = UAvalue; - } - - /** - *

- * Getter for the field guessOutTemperature. - *

- * - * @return a double - */ - public double getGuessOutTemperature() { - return guessOutTemperature; - } - - /** - *

- * Setter for the field guessOutTemperature. - *

- * - * @param guessOutTemperature a double - */ - public void setGuessOutTemperature(double guessOutTemperature) { - this.guessOutTemperature = guessOutTemperature; - } - - /** {@inheritDoc} */ - @Override - public double getEntropyProduction(String unit) { - double entrop = 0.0; - - for (int i = 0; i < 2; i++) { - inStream[i].run(); - inStream[i].getFluid().init(3); - outStream[i].run(); - outStream[i].getFluid().init(3); - entrop += outStream[i].getThermoSystem().getEntropy(unit) - - inStream[i].getThermoSystem().getEntropy(unit); - } - - int stream1 = 0; - int stream2 = 1; - if (inStream[0].getTemperature() < inStream[1].getTemperature()) { - stream2 = 0; - stream1 = 1; - } - double heatTransferEntropyProd = - Math.abs(getDuty()) * (1.0 / inStream[stream2].getTemperature() - - 1.0 / (inStream[stream1].getTemperature())); - // System.out.println("heat entropy " + heatTransferEntropyProd); - - return entrop + heatTransferEntropyProd; - } - - /** {@inheritDoc} */ - @Override - public double getMassBalance(String unit) { - double mass = 0.0; - - for (int i = 0; i < 2; i++) { - inStream[i].run(); - inStream[i].getFluid().init(3); - outStream[i].run(); - outStream[i].getFluid().init(3); - mass += outStream[i].getThermoSystem().getFlowRate(unit) - - inStream[i].getThermoSystem().getFlowRate(unit); - } - return mass; - } - - /** {@inheritDoc} */ - @Override - public void runConditionAnalysis(ProcessEquipmentInterface refExchanger) { - double heatBalanceError = 0.0; - conditionAnalysisMessage += name + " condition analysis started/"; - HeatExchanger refEx = (HeatExchanger) refExchanger; - for (int i = 0; i < 2; i++) { - inStream[i].getFluid().initProperties(); - outStream[i].getFluid().initProperties(); - heatBalanceError += outStream[i].getThermoSystem().getEnthalpy() - - inStream[i].getThermoSystem().getEnthalpy(); - - if (Math.abs(refEx.getInStream(i).getTemperature("C") - getInStream(i) - .getTemperature("C")) > ConditionMonitorSpecifications.HXmaxDeltaT) { - conditionAnalysisMessage += ConditionMonitorSpecifications.HXmaxDeltaT_ErrorMsg; - } else if (Math.abs(refEx.getOutStream(i).getTemperature("C") - getOutStream(i) - .getTemperature("C")) > ConditionMonitorSpecifications.HXmaxDeltaT) { - conditionAnalysisMessage += ConditionMonitorSpecifications.HXmaxDeltaT_ErrorMsg; - } - } - heatBalanceError = heatBalanceError / (outStream[0].getThermoSystem().getEnthalpy() - - inStream[0].getThermoSystem().getEnthalpy()) * 100.0; - if (Math.abs(heatBalanceError) > 10.0) { - String error = "Heat balance not fulfilled. Error: " + heatBalanceError + " "; - conditionAnalysisMessage += error; - } else { - String error = - "Heat balance ok. Enthalpy balance deviation: " + heatBalanceError + " %"; - conditionAnalysisMessage += error; - } - - conditionAnalysisMessage += name + "/analysis ended/"; - - // this.run(); - double duty1 = Math.abs(outStream[0].getThermoSystem().getEnthalpy() - - inStream[0].getThermoSystem().getEnthalpy()); - double duty2 = Math.abs(outStream[1].getThermoSystem().getEnthalpy() - - inStream[1].getThermoSystem().getEnthalpy()); - thermalEffectiveness = ((HeatExchanger) refExchanger).getThermalEffectiveness() - * (duty1 + duty2) / 2.0 / Math.abs(((HeatExchanger) refExchanger).getDuty()); - hotColdDutyBalance = duty1 / duty2; - } - - /** - *

- * runConditionAnalysis. - *

- */ - public void runConditionAnalysis() { - runConditionAnalysis(this); - } - - /** - *

- * Getter for the field thermalEffectiveness. - *

- * - * @return a double - */ - public double getThermalEffectiveness() { - return thermalEffectiveness; - } - - /** - *

- * Setter for the field thermalEffectiveness. - *

- * - * @param thermalEffectiveness a double - */ - public void setThermalEffectiveness(double thermalEffectiveness) { - this.thermalEffectiveness = thermalEffectiveness; - } - - /** - * @return String - */ - String getFlowArrangement() { - return flowArrangement; - } - - /** - * @param flowArrangement name of flow arrangement - */ - void setFlowArrangement(String flowArrangement) { - this.flowArrangement = flowArrangement; - } - - /** - *

- * calcThermalEffectivenes. - *

- * - * @param NTU a double - * @param Cr a double - * @return a double - */ - public double calcThermalEffectivenes(double NTU, double Cr) { - if (Cr == 0.0) { - return 1.0 - Math.exp(-NTU); - } - if (flowArrangement.equals("concentric tube counterflow")) { - if (Cr == 1.0) - return NTU / (1.0 + NTU); - else - return (1.0 - Math.exp(-NTU * (1 - Cr))) / (1.0 - Cr * Math.exp(-NTU * (1 - Cr))); - } else if (flowArrangement.equals("concentric tube paralellflow")) { - return (1.0 - Math.exp(-NTU * (1 + Cr))) / ((1 + Cr)); - } else if (flowArrangement.equals("shell and tube")) { - return (1.0 - Math.exp(-NTU * (1 - Cr))) / (1.0 - Cr * Math.exp(-NTU * (1 - Cr))); - } else - return (1.0 - Math.exp(-NTU * (1 - Cr))) / (1.0 - Cr * Math.exp(-NTU * (1 - Cr))); - } - - /** - *

- * Getter for the field hotColdDutyBalance. - *

- * - * @return a double - */ - public double getHotColdDutyBalance() { - return hotColdDutyBalance; - } - - /** - *

- * Setter for the field hotColdDutyBalance. - *

- * - * @param hotColdDutyBalance a double - */ - public void setHotColdDutyBalance(double hotColdDutyBalance) { - this.hotColdDutyBalance = hotColdDutyBalance; - } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchangerInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchangerInterface.java index deb3c8197a..f0c5b57273 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchangerInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchangerInterface.java @@ -9,13 +9,13 @@ * @version $Id: $Id */ public interface HeatExchangerInterface extends HeaterInterface { - /** - *

- * getOutStream. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public neqsim.processSimulation.processEquipment.stream.StreamInterface getOutStream(int i); + /** + *

+ * getOutStream. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public neqsim.processSimulation.processEquipment.stream.StreamInterface getOutStream(int i); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/Heater.java b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/Heater.java index 3a4805f33c..1daaad0eac 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/Heater.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/Heater.java @@ -3,11 +3,15 @@ * * Created on 15. mars 2001, 14:17 */ + package neqsim.processSimulation.processEquipment.heatExchanger; +import java.util.UUID; +import com.google.gson.GsonBuilder; import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.util.monitor.HeaterResponse; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -32,6 +36,15 @@ public class Heater extends TwoPortEquipment implements HeaterInterface { private String pressureUnit = "bara"; double coolingMediumTemperature = 278.15; + // Results from previous calculation + protected double lastTemperature = 0.0; + protected double lastPressure = 0.0; + protected double lastFlowRate = 0.0; + protected double lastOutPressure = 0.0; + protected double lastOutTemperature = 0.0; + protected double lastDuty = 0.0; + protected double lastPressureDrop = 0.0; + /** *

* Constructor for Heater. @@ -57,7 +70,7 @@ public Heater(StreamInterface inStream) { /** * Constructor for Heater. - * + * * @param name name of heater */ public Heater(String name) { @@ -140,7 +153,25 @@ public void setOutTP(double temperature, double pressure) { /** {@inheritDoc} */ @Override - public void run() { + public boolean needRecalculation() { + if (inStream == null) { + return true; + } + if (inStream.getFluid().getTemperature() == lastTemperature + && inStream.getFluid().getPressure() == lastPressure + && Math.abs(inStream.getFluid().getFlowRate("kg/hr") - lastFlowRate) + / inStream.getFluid().getFlowRate("kg/hr") < 1e-6 + && lastDuty == getDuty() && lastOutPressure == pressureOut + && lastOutTemperature == temperatureOut && getPressureDrop() == lastPressureDrop) { + return false; + } else { + return true; + } + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { system = inStream.getThermoSystem().clone(); system.init(3); double oldH = system.getEnthalpy(); @@ -155,7 +186,7 @@ public void run() { ThermodynamicOperations testOps = new ThermodynamicOperations(system); if (getSpecification().equals("out stream")) { getOutletStream().setFlowRate(getInletStream().getFlowRate("kg/sec"), "kg/sec"); - getOutletStream().run(); + getOutletStream().run(id); temperatureOut = getOutletStream().getTemperature(); system = getOutletStream().getThermoSystem().clone(); } else if (setTemperature) { @@ -180,6 +211,28 @@ public void run() { // testOps.TPflash(); // system.setTemperature(temperatureOut); getOutletStream().setThermoSystem(system); + lastTemperature = inStream.getFluid().getTemperature(); + lastPressure = inStream.getFluid().getPressure(); + lastFlowRate = inStream.getFluid().getFlowRate("kg/hr"); + lastDuty = getDuty(); + lastOutPressure = pressureOut; + lastOutTemperature = temperatureOut; + lastPressureDrop = pressureDrop; + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void runTransient(double dt, UUID id) { + if (getCalculateSteadyState()) { + run(id); + increaseTime(dt); + } else { + inStream.setPressure(outStream.getPressure()); + inStream.run(); + run(id); + increaseTime(dt); + } } /** {@inheritDoc} */ @@ -294,14 +347,13 @@ public void setOutStream(StreamInterface outStream) { /** {@inheritDoc} */ @Override public double getEntropyProduction(String unit) { - double entrop = 0.0; - - inStream.run(); + UUID id = UUID.randomUUID(); + inStream.run(id); inStream.getFluid().init(3); - outStream.run(); + outStream.run(id); outStream.getFluid().init(3); - entrop += + double entrop = outStream.getThermoSystem().getEntropy(unit) - inStream.getThermoSystem().getEntropy(unit); return entrop; @@ -310,16 +362,19 @@ public double getEntropyProduction(String unit) { /** {@inheritDoc} */ @Override public double getExergyChange(String unit, double surroundingTemperature) { - double entrop = 0.0; - - inStream.run(); + UUID id = UUID.randomUUID(); + inStream.run(id); inStream.getFluid().init(3); - outStream.run(); + outStream.run(id); outStream.getFluid().init(3); - entrop += outStream.getThermoSystem().getExergy(surroundingTemperature, unit) + return outStream.getThermoSystem().getExergy(surroundingTemperature, unit) - inStream.getThermoSystem().getExergy(surroundingTemperature, unit); + } - return entrop; + /** {@inheritDoc} */ + @Override + public String toJson() { + return new GsonBuilder().create().toJson(new HeaterResponse(this)); } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeaterInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeaterInterface.java index 9304108cba..f0f75ec14a 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeaterInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/HeaterInterface.java @@ -11,42 +11,42 @@ * @version $Id: $Id */ public interface HeaterInterface extends SimulationInterface { - /** - *

- * setdT. - *

- * - * @param dT a double - */ - public void setdT(double dT); + /** + *

+ * setdT. + *

+ * + * @param dT a double + */ + public void setdT(double dT); - /** - *

- * setOutTP. - *

- * - * @param temperature a double - * @param pressure a double - */ - public void setOutTP(double temperature, double pressure); + /** + *

+ * setOutTP. + *

+ * + * @param temperature a double + * @param pressure a double + */ + public void setOutTP(double temperature, double pressure); - /** - *

- * setOutTemperature. - *

- * - * @param temperature a double - * @param unit a {@link java.lang.String} object - */ - public void setOutTemperature(double temperature, String unit); + /** + *

+ * setOutTemperature. + *

+ * + * @param temperature a double + * @param unit a {@link java.lang.String} object + */ + public void setOutTemperature(double temperature, String unit); - /** - *

- * setOutPressure. - *

- * - * @param pressure a double - * @param unit a {@link java.lang.String} object - */ - public void setOutPressure(double pressure, String unit); + /** + *

+ * setOutPressure. + *

+ * + * @param pressure a double + * @param unit a {@link java.lang.String} object + */ + public void setOutPressure(double pressure, String unit); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/NeqHeater.java b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/NeqHeater.java index 3393c02231..fc86b56da2 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/NeqHeater.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/NeqHeater.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.heatExchanger; +import java.util.UUID; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; @@ -12,82 +13,85 @@ * @version $Id: $Id */ public class NeqHeater extends Heater { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - SystemInterface system; - double dH = 0.0; + SystemInterface system; + double dH = 0.0; - /** - *

- * Constructor for NeqHeater. - *

- */ - @Deprecated - public NeqHeater() { - this("NeqHeater"); - } + /** + *

+ * Constructor for NeqHeater. + *

+ */ + @Deprecated + public NeqHeater() { + this("NeqHeater"); + } - /** - *

- * Constructor for NeqHeater. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public NeqHeater(StreamInterface inStream) { - this("NeqHeater", inStream); - } + /** + *

+ * Constructor for NeqHeater. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public NeqHeater(StreamInterface inStream) { + this("NeqHeater", inStream); + } - /** - * Constructor for NeqHeater. - * - * @param name name of heater - */ - public NeqHeater(String name) { - super(name); - } + /** + * Constructor for NeqHeater. + * + * @param name name of heater + */ + public NeqHeater(String name) { + super(name); + } - /** - * Constructor for NeqHeater. - * - * @param name name of heater - * @param inStream input stream - */ - public NeqHeater(String name, StreamInterface inStream) { - super(name, inStream); - } + /** + * Constructor for NeqHeater. + * + * @param name name of heater + * @param inStream input stream + */ + public NeqHeater(String name, StreamInterface inStream) { + super(name, inStream); + } - /** {@inheritDoc} */ - @Override - public void setOutTemperature(double temperature) { - this.setTemperature = true; - this.temperatureOut = temperature; - } + /** {@inheritDoc} */ + @Override + public void setOutTemperature(double temperature) { + this.setTemperature = true; + this.temperatureOut = temperature; + } - /** {@inheritDoc} */ - @Override - public void run() { - system = inStream.getThermoSystem().clone(); - double oldH = system.getEnthalpy(); - if (setTemperature) { - system.setTemperature(temperatureOut); - } else { - system.setTemperature(system.getTemperature() + dT); - } - system.init(3); - double newH = system.getEnthalpy(); - dH = newH - oldH; - // system.setTemperature(temperatureOut); - // testOps.TPflash(); - // system.setTemperature(temperatureOut); - outStream.setThermoSystem(system); + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + system = inStream.getThermoSystem().clone(); + double oldH = system.getEnthalpy(); + if (setTemperature) { + system.setTemperature(temperatureOut); + } else { + system.setTemperature(system.getTemperature() + dT); } + system.init(3); + double newH = system.getEnthalpy(); + dH = newH - oldH; + // system.setTemperature(temperatureOut); + // testOps.TPflash(); + // system.setTemperature(temperatureOut); + outStream.setThermoSystem(system); - /** {@inheritDoc} */ - @Override - public void displayResult() { - System.out.println("heater dH: " + dH); - } + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + System.out.println("heater dH: " + dH); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/ReBoiler.java b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/ReBoiler.java index 7ba44b74d4..e07f86cf22 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/ReBoiler.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/heatExchanger/ReBoiler.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.heatExchanger; +import java.util.UUID; import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; @@ -14,97 +15,99 @@ * @version $Id: $Id */ public class ReBoiler extends TwoPortEquipment { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - boolean setTemperature = false; - SystemInterface system; - private double reboilerDuty = 0.0; + boolean setTemperature = false; + SystemInterface system; + private double reboilerDuty = 0.0; - /** - *

- * Constructor for ReBoiler. - *

- */ - @Deprecated - public ReBoiler() { - super("ReBoiler"); - } + /** + *

+ * Constructor for ReBoiler. + *

+ */ + @Deprecated + public ReBoiler() { + super("ReBoiler"); + } - /** - *

- * Constructor for ReBoiler. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public ReBoiler(StreamInterface inStream) { - this("ReBoiler", inStream); - } + /** + *

+ * Constructor for ReBoiler. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public ReBoiler(StreamInterface inStream) { + this("ReBoiler", inStream); + } - /** - *

- * Constructor for ReBoiler. - *

- * - * @param name name of reboiler - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public ReBoiler(String name, StreamInterface inStream) { - super(name, inStream); - } + /** + *

+ * Constructor for ReBoiler. + *

+ * + * @param name name of reboiler + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public ReBoiler(String name, StreamInterface inStream) { + super(name, inStream); + } - /** {@inheritDoc} */ - @Override - public void run() { - system = inStream.getThermoSystem().clone(); - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - testOps.TPflash(); - double oldH = system.getEnthalpy(); - testOps = new ThermodynamicOperations(system); - testOps.TPflash(); - testOps.PHflash(oldH + reboilerDuty, 0); - outStream.setThermoSystem(system); - // if(setTemperature) system.setTemperature(temperatureOut); - // else system.setTemperature(system.getTemperature()+dT); - // testOps = new ThermodynamicOperations(system); - // system.setTemperat ure(temperatureOut); - // testOps.TPflash(); - // double newH = system.getEnthalpy(); - // dH = newH - oldH; - // // system.setTemperature(temperatureOut); - // // testOps.TPflash(); - // // system.setTemperature(temperatureOut); - // outStream.setThermoSystem(system); - } + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + system = inStream.getThermoSystem().clone(); + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + double oldH = system.getEnthalpy(); + testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + testOps.PHflash(oldH + reboilerDuty, 0); + outStream.setThermoSystem(system); + // if(setTemperature) system.setTemperature(temperatureOut); + // else system.setTemperature(system.getTemperature()+dT); + // testOps = new ThermodynamicOperations(system); + // system.setTemperat ure(temperatureOut); + // testOps.TPflash(); + // double newH = system.getEnthalpy(); + // dH = newH - oldH; + // // system.setTemperature(temperatureOut); + // // testOps.TPflash(); + // // system.setTemperature(temperatureOut); + // outStream.setThermoSystem(system); + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - System.out.println("out Temperature " + reboilerDuty); - } + /** {@inheritDoc} */ + @Override + public void displayResult() { + System.out.println("out Temperature " + reboilerDuty); + } - /** - *

- * Getter for the field reboilerDuty. - *

- * - * @return a double - */ - public double getReboilerDuty() { - return reboilerDuty; - } + /** + *

+ * Getter for the field reboilerDuty. + *

+ * + * @return a double + */ + public double getReboilerDuty() { + return reboilerDuty; + } - /** - *

- * Setter for the field reboilerDuty. - *

- * - * @param reboilerDuty a double - */ - public void setReboilerDuty(double reboilerDuty) { - this.reboilerDuty = reboilerDuty; - } + /** + *

+ * Setter for the field reboilerDuty. + *

+ * + * @param reboilerDuty a double + */ + public void setReboilerDuty(double reboilerDuty) { + this.reboilerDuty = reboilerDuty; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/manifold/Manifold.java b/src/main/java/neqsim/processSimulation/processEquipment/manifold/Manifold.java new file mode 100644 index 0000000000..a547a8c98b --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/manifold/Manifold.java @@ -0,0 +1,103 @@ +package neqsim.processSimulation.processEquipment.manifold; + +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; +import neqsim.processSimulation.processEquipment.mixer.Mixer; +import neqsim.processSimulation.processEquipment.splitter.Splitter; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; + +/** + *

+ * Manifold class. + *

+ * A manifold is a process unit that can take in any number of streams and distribute them into a + * number of output streams. In NeqSim it is created as a combination of a mixer and a splitter. + * + * @author Even Solbraa + * @version $Id: $Id + */ +public class Manifold extends ProcessEquipmentBaseClass { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Manifold.class); + + protected Mixer localmixer = new Mixer("local mixer"); + protected Splitter localsplitter = new Splitter("local splitter"); + + double[] splitFactors = new double[1]; + + /** + *

+ * Constructor for Splitter. + *

+ */ + public Manifold() { + super("Manifold"); + } + + /** + *

+ * Constructor for Splitter with name as input. + *

+ * + * @param name name of manifold + */ + public Manifold(String name) { + super(name); + } + + /** + *

+ * addStream. + *

+ * + * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void addStream(StreamInterface newStream) { + localmixer.addStream(newStream); + } + + /** + *

+ * setSplitFactors. + *

+ * + * @param splitFact an array of type double + */ + public void setSplitFactors(double[] splitFact) { + splitFactors = splitFact; + localsplitter.setInletStream(localmixer.getOutletStream()); + localsplitter.setSplitFactors(splitFactors); + } + + /** + *

getSplitStream.

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getSplitStream(int i) { + return localsplitter.getSplitStream(i); + } + + /** + *

+ * getMixedStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + */ + public StreamInterface getMixedStream() { + return localmixer.getOutletStream(); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + localmixer.run(id); + localsplitter.setInletStream(localmixer.getOutletStream()); + localsplitter.run(); + } +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/mixer/Mixer.java b/src/main/java/neqsim/processSimulation/processEquipment/mixer/Mixer.java index 5ec3635fad..36206a9bd2 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/mixer/Mixer.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/mixer/Mixer.java @@ -5,7 +5,9 @@ import java.text.DecimalFormat; import java.text.FieldPosition; import java.util.ArrayList; +import java.util.Iterator; import java.util.Objects; +import java.util.UUID; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; @@ -28,13 +30,13 @@ */ public class Mixer extends ProcessEquipmentBaseClass implements MixerInterface { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Mixer.class); protected ArrayList streams = new ArrayList(0); private int numberOfInputStreams = 0; protected StreamInterface mixedStream; private boolean isSetOutTemperature = false; private double outTemperature = Double.NaN; - static Logger logger = LogManager.getLogger(Mixer.class); /** *

@@ -69,6 +71,13 @@ public void replaceStream(int i, StreamInterface newStream) { streams.set(i, newStream); } + /** {@inheritDoc} */ + @Override + public void removeInputStream(int i) { + streams.remove(i); + numberOfInputStreams--; + } + /** {@inheritDoc} */ @Override public void addStream(StreamInterface newStream) { @@ -76,14 +85,13 @@ public void addStream(StreamInterface newStream) { try { if (getNumberOfInputStreams() == 0) { - mixedStream = (Stream) streams.get(0).clone(); // cloning the first stream + mixedStream = streams.get(0).clone(); // cloning the first stream // mixedStream.getThermoSystem().setNumberOfPhases(2); - // mixedStream.getThermoSystem().reInitPhaseType(); // mixedStream.getThermoSystem().init(0); // mixedStream.getThermoSystem().init(3); } - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } numberOfInputStreams++; @@ -151,11 +159,12 @@ public void mixStream() { } } } - if (hasAddedNewComponent) + if (hasAddedNewComponent) { mixedStream.getThermoSystem().setMixingRule(mixedStream.getThermoSystem().getMixingRule()); - // mixedStream.getThermoSystem().init_x_y(); - // mixedStream.getThermoSystem().initBeta(); - // mixedStream.getThermoSystem().init(2); + // mixedStream.getThermoSystem().init_x_y(); + // mixedStream.getThermoSystem().initBeta(); + // mixedStream.getThermoSystem().init(2); + } } /** @@ -202,7 +211,20 @@ public StreamInterface getOutletStream() { /** {@inheritDoc} */ @Override - public void run() { + public boolean needRecalculation() { + Iterator iter = streams.iterator(); + while (iter.hasNext()) { + StreamInterface str = iter.next(); + if (!str.solved()) { + return true; + } + } + return false; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { double enthalpy = 0.0; // ((Stream) streams.get(0)).getThermoSystem().display(); SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); @@ -214,35 +236,37 @@ public void run() { ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); if (streams.size() > 0) { mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); mixedStream.getThermoSystem().init(0); mixStream(); enthalpy = calcMixStreamEnthalpy(); // System.out.println("temp guess " + guessTemperature()); - if (!isSetOutTemperature) { - mixedStream.getThermoSystem().setTemperature(guessTemperature()); - } else { + if (isSetOutTemperature) { mixedStream.setTemperature(outTemperature, "K"); + } else { + mixedStream.getThermoSystem().setTemperature(guessTemperature()); } // System.out.println("filan temp " + mixedStream.getTemperature()); } if (isSetOutTemperature) { - if (!Double.isNaN(getOutTemperature())) + if (!Double.isNaN(getOutTemperature())) { mixedStream.getThermoSystem().setTemperature(getOutTemperature()); + } testOps.TPflash(); mixedStream.getThermoSystem().init(2); } else { try { testOps.PHflash(enthalpy, 0); - } catch (Exception e) { - logger.error(e.getMessage()); - if (!Double.isNaN(getOutTemperature())) + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + if (!Double.isNaN(getOutTemperature())) { mixedStream.getThermoSystem().setTemperature(getOutTemperature()); + } testOps.TPflash(); } } + mixedStream.setCalculationIdentifier(id); // System.out.println("enthalpy: " + // mixedStream.getThermoSystem().getEnthalpy()); @@ -252,12 +276,12 @@ public void run() { // System.out.println("beta " + mixedStream.getThermoSystem().getBeta()); // outStream.setThermoSystem(mixedStream.getThermoSystem()); + setCalculationIdentifier(id); } /** {@inheritDoc} */ @Override public void displayResult() { - SystemInterface thermoSystem = mixedStream.getThermoSystem(); DecimalFormat nf = new DecimalFormat(); nf.setMaximumFractionDigits(5); nf.applyPattern("#.#####E0"); @@ -266,9 +290,9 @@ public void displayResult() { Container dialogContentPane = dialog.getContentPane(); dialogContentPane.setLayout(new FlowLayout()); + SystemInterface thermoSystem = mixedStream.getThermoSystem(); thermoSystem.initPhysicalProperties(); String[][] table = new String[50][5]; - String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; table[0][0] = ""; table[0][1] = ""; table[0][2] = ""; @@ -347,6 +371,7 @@ public void displayResult() { table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][4] = "-"; } + String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; JTable Jtab = new JTable(table, names); JScrollPane scrollpane = new JScrollPane(Jtab); dialogContentPane.add(scrollpane); @@ -459,12 +484,15 @@ public int hashCode() { /** {@inheritDoc} */ @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (!super.equals(obj)) + } + if (!super.equals(obj)) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } Mixer other = (Mixer) obj; return isSetOutTemperature == other.isSetOutTemperature && Objects.equals(mixedStream, other.mixedStream) diff --git a/src/main/java/neqsim/processSimulation/processEquipment/mixer/MixerInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/mixer/MixerInterface.java index 28bee7b1c7..390fd06220 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/mixer/MixerInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/mixer/MixerInterface.java @@ -3,6 +3,7 @@ * * Created on 21. august 2001, 22:28 */ + package neqsim.processSimulation.processEquipment.mixer; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; @@ -11,7 +12,7 @@ /** *

- * MixerInterface interface. + * Interface for processEquipment with multiple inlet streams and a single outlet stream. *

* * @author esol @@ -30,23 +31,23 @@ public interface MixerInterface extends ProcessEquipmentInterface { /** *

- * getOutStream. + * Getter for outlet stream object. *

- * + * * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ public StreamInterface getOutletStream(); /** *

- * getOutStream. + * Getter for outlet stream object. *

- * - * @deprecated use {@link #getOutletStream} instead + * * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + * @deprecated use {@link #getOutletStream} instead */ @Deprecated - default public StreamInterface getOutStream() { + public default StreamInterface getOutStream() { return getOutletStream(); } @@ -64,4 +65,13 @@ default public StreamInterface getOutStream() { /** {@inheritDoc} */ @Override public SystemInterface getThermoSystem(); + + /** + *

+ * removeInputStream. + *

+ * + * @param i a int + */ + public void removeInputStream(int i); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticMixer.java b/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticMixer.java index 6122cdac1b..ac1c67ed06 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticMixer.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticMixer.java @@ -3,8 +3,10 @@ * * Created on 11. mars 2001, 01:49 */ + package neqsim.processSimulation.processEquipment.mixer; +import java.util.UUID; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** @@ -16,112 +18,119 @@ * @version $Id: $Id */ public class StaticMixer extends Mixer { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for StaticMixer. - *

- */ - @Deprecated - public StaticMixer() {} + /** + *

+ * Constructor for StaticMixer. + *

+ */ + @Deprecated + public StaticMixer() {} - /** - *

- * Constructor for StaticMixer. - *

- * - * @param name a {@link java.lang.String} object - */ - public StaticMixer(String name) { - super(name); - } + /** + *

+ * Constructor for StaticMixer. + *

+ * + * @param name a {@link java.lang.String} object + */ + public StaticMixer(String name) { + super(name); + } - /** {@inheritDoc} */ - @Override - public void mixStream() { - int index = 0; - String compName = new String(); - for (int k = 1; k < streams.size(); k++) { - for (int i = 0; i < streams.get(k).getThermoSystem().getPhases()[0] - .getNumberOfComponents(); i++) { - boolean gotComponent = false; - String componentName = - streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i] - .getName(); - // System.out.println("adding: " + componentName); - double moles = streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i] - .getNumberOfmoles(); - // System.out.println("moles: " + moles + " " + - // mixedStream.getThermoSystem().getPhases()[0].getNumberOfComponents()); - for (int p = 0; p < mixedStream.getThermoSystem().getPhases()[0] - .getNumberOfComponents(); p++) { - if (mixedStream.getThermoSystem().getPhases()[0].getComponents()[p].getName() - .equals(componentName)) { - gotComponent = true; - index = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] - .getComponentNumber(); - compName = - streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] - .getComponentName(); - } - } + /** {@inheritDoc} */ + @Override + public void mixStream() { + int index = 0; + String compName = new String(); + for (int k = 1; k < streams.size(); k++) { + for (int i = 0; i < streams.get(k).getThermoSystem().getPhases()[0] + .getNumberOfComponents(); i++) { + boolean gotComponent = false; + String componentName = + streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i].getName(); + // System.out.println("adding: " + componentName); + double moles = + streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i].getNumberOfmoles(); + // System.out.println("moles: " + moles + " " + + // mixedStream.getThermoSystem().getPhases()[0].getNumberOfComponents()); + for (int p = 0; p < mixedStream.getThermoSystem().getPhases()[0] + .getNumberOfComponents(); p++) { + if (mixedStream.getThermoSystem().getPhases()[0].getComponents()[p].getName() + .equals(componentName)) { + gotComponent = true; + index = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] + .getComponentNumber(); + compName = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] + .getComponentName(); + } + } - if (gotComponent) { - // System.out.println("adding moles starting...."); - mixedStream.getThermoSystem().addComponent(index, moles, 0); - // mixedStream.getThermoSystem().init_x_y(); - // System.out.println("adding moles finished"); - } else { - // System.out.println("ikke gaa hit"); - mixedStream.getThermoSystem().addComponent(compName, moles, 0); - } - } + if (gotComponent) { + // System.out.println("adding moles starting...."); + mixedStream.getThermoSystem().addComponent(index, moles, 0); + // mixedStream.getThermoSystem().init_x_y(); + // System.out.println("adding moles finished"); + } else { + // System.out.println("ikke gaa hit"); + mixedStream.getThermoSystem().addComponent(compName, moles, 0); } + } } + } - /** {@inheritDoc} */ - @Override - public double guessTemperature() { - double gtemp = 0; - for (int k = 0; k < streams.size(); k++) { - gtemp += streams.get(k).getThermoSystem().getTemperature() - * streams.get(k).getThermoSystem().getNumberOfMoles() - / mixedStream.getThermoSystem().getNumberOfMoles(); - } - return gtemp; + /** {@inheritDoc} */ + @Override + public double guessTemperature() { + double gtemp = 0; + for (int k = 0; k < streams.size(); k++) { + gtemp += streams.get(k).getThermoSystem().getTemperature() + * streams.get(k).getThermoSystem().getNumberOfMoles() + / mixedStream.getThermoSystem().getNumberOfMoles(); } + return gtemp; + } - /** {@inheritDoc} */ - @Override - public double calcMixStreamEnthalpy() { - double enthalpy = 0; - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().init(3); - enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); - System.out.println( - "total enthalpy k : " + streams.get(k).getThermoSystem().getEnthalpy()); - } - System.out.println("total enthalpy of streams: " + enthalpy); - return enthalpy; + /** {@inheritDoc} */ + @Override + public double calcMixStreamEnthalpy() { + double enthalpy = 0; + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().init(3); + enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); + System.out.println("total enthalpy k : " + streams.get(k).getThermoSystem().getEnthalpy()); } + System.out.println("total enthalpy of streams: " + enthalpy); + return enthalpy; + } - /** {@inheritDoc} */ - @Override - public void run() { - double enthalpy = 0.0; - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().init(3); - enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); - } - mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixStream(); - ThermodynamicOperations testOps = - new ThermodynamicOperations(mixedStream.getThermoSystem()); + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + double enthalpy = 0.0; + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().init(3); + enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); + } + mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().reInitPhaseType(); + mixStream(); + ThermodynamicOperations testOps = new ThermodynamicOperations(mixedStream.getThermoSystem()); + try { + if (Double.isNaN(enthalpy)) { + logger.error("error in StaticMixer calc0 - enthalpy NaN"); + testOps.TPflash(); + } else { testOps.PHflash(enthalpy, 0); - // System.out.println("temp " + mixedStream.getThermoSystem().getTemperature()); - mixedStream.getThermoSystem().init(3); } + // System.out.println("enthalp ok " + enthalpy); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + // System.out.println("temp " + mixedStream.getThermoSystem().getTemperature()); + mixedStream.getThermoSystem().init(3); + setCalculationIdentifier(id); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticNeqMixer.java b/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticNeqMixer.java index af9c953841..d4c5ca9c46 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticNeqMixer.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticNeqMixer.java @@ -3,8 +3,10 @@ * * Created on 11. mars 2001, 01:49 */ + package neqsim.processSimulation.processEquipment.mixer; +import java.util.UUID; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -17,113 +19,113 @@ * @version $Id: $Id */ public class StaticNeqMixer extends StaticMixer { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for StaticNeqMixer. - *

- */ - @Deprecated - public StaticNeqMixer() {} + /** + *

+ * Constructor for StaticNeqMixer. + *

+ */ + @Deprecated + public StaticNeqMixer() {} - /** - *

- * Constructor for StaticNeqMixer. - *

- * - * @param name a {@link java.lang.String} object - */ - public StaticNeqMixer(String name) { - super(name); - } + /** + *

+ * Constructor for StaticNeqMixer. + *

+ * + * @param name a {@link java.lang.String} object + */ + public StaticNeqMixer(String name) { + super(name); + } - /** {@inheritDoc} */ - @Override - public void mixStream() { - int index = 0; - String compName = new String(); + /** {@inheritDoc} */ + @Override + public void mixStream() { + int index = 0; + String compName = new String(); - for (int k = 1; k < streams.size(); k++) { - for (int i = 0; i < streams.get(k).getThermoSystem().getPhases()[0] - .getNumberOfComponents(); i++) { - boolean gotComponent = false; - String componentName = - streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i] - .getName(); - System.out.println("adding: " + componentName); - int numberOfPhases = streams.get(k).getThermoSystem().getNumberOfPhases(); - double[] moles = new double[numberOfPhases]; - // her maa man egentlig sjekke at phase typen er den samme !!! antar at begge er - // to fase elle gass - tofase - for (int p = 0; p < numberOfPhases; p++) { - moles[p] = streams.get(k).getThermoSystem().getPhases()[p].getComponents()[i] - .getNumberOfMolesInPhase(); - } - for (int p = 0; p < mixedStream.getThermoSystem().getPhases()[0] - .getNumberOfComponents(); p++) { - if (mixedStream.getThermoSystem().getPhases()[0].getComponents()[p].getName() - .equals(componentName)) { - gotComponent = true; - index = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] - .getComponentNumber(); - compName = - streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] - .getComponentName(); - } - } + for (int k = 1; k < streams.size(); k++) { + for (int i = 0; i < streams.get(k).getThermoSystem().getPhases()[0] + .getNumberOfComponents(); i++) { + boolean gotComponent = false; + String componentName = + streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i].getName(); + System.out.println("adding: " + componentName); + int numberOfPhases = streams.get(k).getThermoSystem().getNumberOfPhases(); + double[] moles = new double[numberOfPhases]; + // her maa man egentlig sjekke at phase typen er den samme !!! antar at begge er + // to fase elle gass - tofase + for (int p = 0; p < numberOfPhases; p++) { + moles[p] = streams.get(k).getThermoSystem().getPhases()[p].getComponents()[i] + .getNumberOfMolesInPhase(); + } + for (int p = 0; p < mixedStream.getThermoSystem().getPhases()[0] + .getNumberOfComponents(); p++) { + if (mixedStream.getThermoSystem().getPhases()[0].getComponents()[p].getName() + .equals(componentName)) { + gotComponent = true; + index = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] + .getComponentNumber(); + compName = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] + .getComponentName(); + } + } - if (gotComponent) { - System.out.println("adding moles starting...."); - for (int p = 0; p < numberOfPhases; p++) { - mixedStream.getThermoSystem().addComponent(index, moles[p], p); - } - System.out.println("adding moles finished"); - } else { - System.out.println("ikke gaa hit"); - for (int p = 0; p < numberOfPhases; p++) { - mixedStream.getThermoSystem().addComponent(compName, moles[p], p); - } - } - } + if (gotComponent) { + System.out.println("adding moles starting...."); + for (int p = 0; p < numberOfPhases; p++) { + mixedStream.getThermoSystem().addComponent(index, moles[p], p); + } + System.out.println("adding moles finished"); + } else { + System.out.println("ikke gaa hit"); + for (int p = 0; p < numberOfPhases; p++) { + mixedStream.getThermoSystem().addComponent(compName, moles[p], p); + } } - mixedStream.getThermoSystem().init_x_y(); - mixedStream.getThermoSystem().initBeta(); - mixedStream.getThermoSystem().init(2); + } } + mixedStream.getThermoSystem().init_x_y(); + mixedStream.getThermoSystem().initBeta(); + mixedStream.getThermoSystem().init(2); + } - /** {@inheritDoc} */ - @Override - public void run() { - double enthalpy = 0.0; - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().init(3); - enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); - } + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + double enthalpy = 0.0; + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().init(3); + enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); + } - mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixStream(); + mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().reInitPhaseType(); + mixStream(); - SystemInterface syst = mixedStream.getThermoSystem().clone(); - syst.setTemperature(streams.get(0).getThermoSystem().getTemperature()); - syst.setPressure(streams.get(0).getThermoSystem().getPressure()); - ThermodynamicOperations testOps = new ThermodynamicOperations(syst); - testOps.PHflash(enthalpy, 0); - System.out.println("temp " + syst.getTemperature()); - mixedStream.getThermoSystem().setTemperature(syst.getTemperature()); - mixedStream.getThermoSystem().init(3); - // double enthalpy = calcMixStreamEnthalpy(); - // System.out.println("temp guess " + guessTemperature()); - // mixedStream.getThermoSystem().setTemperature(guessTemperature()); - // testOps = new ThermodynamicOperations(mixedStream.getThermoSystem()); - // testOps.TPflash(); - // testOps.PHflash(enthalpy, 0); - // System.out.println("enthalpy: " + - // mixedStream.getThermoSystem().getEnthalpy()); - // System.out.println("enthalpy: " + enthalpy); - // System.out.println("temperature: " + - // mixedStream.getThermoSystem().getTemperature()); - } + SystemInterface syst = mixedStream.getThermoSystem().clone(); + syst.setTemperature(streams.get(0).getThermoSystem().getTemperature()); + syst.setPressure(streams.get(0).getThermoSystem().getPressure()); + ThermodynamicOperations testOps = new ThermodynamicOperations(syst); + testOps.PHflash(enthalpy, 0); + System.out.println("temp " + syst.getTemperature()); + mixedStream.getThermoSystem().setTemperature(syst.getTemperature()); + mixedStream.getThermoSystem().init(3); + // double enthalpy = calcMixStreamEnthalpy(); + // System.out.println("temp guess " + guessTemperature()); + // mixedStream.getThermoSystem().setTemperature(guessTemperature()); + // testOps = new ThermodynamicOperations(mixedStream.getThermoSystem()); + // testOps.TPflash(); + // testOps.PHflash(enthalpy, 0); + // System.out.println("enthalpy: " + + // mixedStream.getThermoSystem().getEnthalpy()); + // System.out.println("enthalpy: " + enthalpy); + // System.out.println("temperature: " + + // mixedStream.getThermoSystem().getTemperature()); + mixedStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticPhaseMixer.java b/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticPhaseMixer.java index e816cd93b0..af63452eeb 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticPhaseMixer.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/mixer/StaticPhaseMixer.java @@ -1,5 +1,8 @@ package neqsim.processSimulation.processEquipment.mixer; +import java.util.UUID; +import neqsim.thermo.phase.PhaseType; + /** *

* StaticPhaseMixer class. @@ -9,113 +12,113 @@ * @version $Id: $Id */ public class StaticPhaseMixer extends StaticMixer { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for StaticPhaseMixer. - *

- */ - @Deprecated - public StaticPhaseMixer() {} + /** + *

+ * Constructor for StaticPhaseMixer. + *

+ */ + @Deprecated + public StaticPhaseMixer() {} - /** - *

- * Constructor for StaticPhaseMixer. - *

- * - * @param name a {@link java.lang.String} object - */ - public StaticPhaseMixer(String name) { - super(name); - } + /** + *

+ * Constructor for StaticPhaseMixer. + *

+ * + * @param name a {@link java.lang.String} object + */ + public StaticPhaseMixer(String name) { + super(name); + } - /** {@inheritDoc} */ - @Override - public void mixStream() { - int index = 0; - String compName = new String(); + /** {@inheritDoc} */ + @Override + public void mixStream() { + int index = 0; + String compName = new String(); - for (int k = 1; k < streams.size(); k++) { - for (int i = 0; i < streams.get(k).getThermoSystem().getPhases()[0] - .getNumberOfComponents(); i++) { - boolean gotComponent = false; - String componentName = - streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i] - .getName(); - System.out.println("adding: " + componentName); - int numberOfPhases = streams.get(k).getThermoSystem().getNumberOfPhases(); - double[] moles = new double[numberOfPhases]; - int[] phaseType = new int[numberOfPhases]; + for (int k = 1; k < streams.size(); k++) { + for (int i = 0; i < streams.get(k).getThermoSystem().getPhases()[0] + .getNumberOfComponents(); i++) { + boolean gotComponent = false; + String componentName = + streams.get(k).getThermoSystem().getPhases()[0].getComponents()[i].getName(); + System.out.println("adding: " + componentName); + int numberOfPhases = streams.get(k).getThermoSystem().getNumberOfPhases(); + double[] moles = new double[numberOfPhases]; + PhaseType[] phaseType = new PhaseType[numberOfPhases]; - // her maa man egentlig sjekke at phase typen er den samme !!! antar at begge er - // to fase elle gass - tofase - for (int p = 0; p < numberOfPhases; p++) { - moles[p] = streams.get(k).getThermoSystem().getPhase(p).getComponents()[i] - .getNumberOfMolesInPhase(); - phaseType[p] = streams.get(k).getThermoSystem().getPhase(p).getPhaseType(); - } - if (k == 1) { - phaseType[0] = 0; - mixedStream.getThermoSystem().getPhase(1) - .setTemperature(streams.get(k).getThermoSystem().getTemperature()); - } + // her maa man egentlig sjekke at phase typen er den samme !!! antar at begge er + // to fase elle gass - tofase + for (int p = 0; p < numberOfPhases; p++) { + moles[p] = streams.get(k).getThermoSystem().getPhase(p).getComponents()[i] + .getNumberOfMolesInPhase(); + phaseType[p] = streams.get(k).getThermoSystem().getPhase(p).getType(); + } + if (k == 1) { + phaseType[0] = PhaseType.LIQUID; + mixedStream.getThermoSystem().getPhase(1) + .setTemperature(streams.get(k).getThermoSystem().getTemperature()); + } - for (int p = 0; p < mixedStream.getThermoSystem().getPhases()[0] - .getNumberOfComponents(); p++) { - if (mixedStream.getThermoSystem().getPhases()[0].getComponents()[p].getName() - .equals(componentName)) { - gotComponent = true; - index = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] - .getComponentNumber(); - compName = - streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] - .getComponentName(); - } - } + for (int p = 0; p < mixedStream.getThermoSystem().getPhases()[0] + .getNumberOfComponents(); p++) { + if (mixedStream.getThermoSystem().getPhases()[0].getComponents()[p].getName() + .equals(componentName)) { + gotComponent = true; + index = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] + .getComponentNumber(); + compName = streams.get(0).getThermoSystem().getPhases()[0].getComponents()[p] + .getComponentName(); + } + } - if (gotComponent) { - System.out.println("adding moles starting...."); - for (int p = 0; p < numberOfPhases; p++) { - if (phaseType[p] == 0) { - System.out.println("adding liq"); - mixedStream.getThermoSystem().addComponent(index, moles[p], 1); - } else if (phaseType[p] == 1) { - System.out.println("adding gas"); - mixedStream.getThermoSystem().addComponent(index, moles[p], 0); - } else { - System.out.println("not here...."); - } - } - System.out.println("adding moles finished"); - } else { - System.out.println("ikke gaa hit"); - for (int p = 0; p < numberOfPhases; p++) { - mixedStream.getThermoSystem().addComponent(compName, moles[p], p); - } - } + if (gotComponent) { + System.out.println("adding moles starting...."); + for (int p = 0; p < numberOfPhases; p++) { + if (phaseType[p] == PhaseType.LIQUID) { + System.out.println("adding liq"); + mixedStream.getThermoSystem().addComponent(index, moles[p], 1); + } else if (phaseType[p] == PhaseType.GAS) { + System.out.println("adding gas"); + mixedStream.getThermoSystem().addComponent(index, moles[p], 0); + } else { + System.out.println("not here...."); } + } + System.out.println("adding moles finished"); + } else { + System.out.println("ikke gaa hit"); + for (int p = 0; p < numberOfPhases; p++) { + mixedStream.getThermoSystem().addComponent(compName, moles[p], p); + } } - mixedStream.getThermoSystem().init_x_y(); - mixedStream.getThermoSystem().initBeta(); - mixedStream.getThermoSystem().init(2); + } } + mixedStream.getThermoSystem().init_x_y(); + mixedStream.getThermoSystem().initBeta(); + mixedStream.getThermoSystem().init(2); + } - /** {@inheritDoc} */ - @Override - public void run() { - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().init(3); - } + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().init(3); + } - mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); - mixedStream.getThermoSystem().init(0); - mixedStream.getThermoSystem().setBeta(1, 1e-10); - mixedStream.getThermoSystem().init(2); - mixedStream.getThermoSystem().reInitPhaseType(); + mixedStream.setThermoSystem((streams.get(0).getThermoSystem().clone())); + mixedStream.getThermoSystem().init(0); + mixedStream.getThermoSystem().setBeta(1, 1e-10); + mixedStream.getThermoSystem().init(2); + mixedStream.getThermoSystem().reInitPhaseType(); - mixStream(); + mixStream(); - mixedStream.getThermoSystem().init(3); - } + mixedStream.getThermoSystem().init(3); + mixedStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticPipe.java b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticPipe.java index 336f463232..270fb01dd2 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticPipe.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticPipe.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.pipeline; +import java.util.UUID; import neqsim.fluidMechanics.flowSystem.FlowSystemInterface; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; @@ -14,380 +15,385 @@ * @version $Id: $Id */ public class AdiabaticPipe extends Pipeline { - private static final long serialVersionUID = 1000; - - double inletPressure = 0; - boolean setTemperature = false, setPressureOut = false; - protected double temperatureOut = 270, pressureOut = 0.0; - double length = 100.0; - double insideDiameter = 0.1; - double velocity = 1.0; - double pipeWallRoughness = 1e-5; - private double inletElevation = 0; - private double outletElevation = 0; - double dH = 0.0; - String flowPattern = "unknown"; - String pipeSpecification = "AP02"; - - /** - *

- * Constructor for AdiabaticPipe. - *

- */ - @Deprecated - public AdiabaticPipe() { - this("AdiabaticPipe"); + private static final long serialVersionUID = 1000; + + double inletPressure = 0; + boolean setTemperature = false; + + boolean setPressureOut = false; + + protected double temperatureOut = 270; + + protected double pressureOut = 0.0; + + double length = 100.0; + double insideDiameter = 0.1; + double velocity = 1.0; + double pipeWallRoughness = 1e-5; + private double inletElevation = 0; + private double outletElevation = 0; + double dH = 0.0; + String flowPattern = "unknown"; + String pipeSpecification = "AP02"; + + /** + *

+ * Constructor for AdiabaticPipe. + *

+ */ + @Deprecated + public AdiabaticPipe() { + this("AdiabaticPipe"); + } + + /** + *

+ * Constructor for AdiabaticPipe. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public AdiabaticPipe(StreamInterface inStream) { + this("AdiabaticPipe", inStream); + } + + /** + * Constructor for AdiabaticPipe. + * + * @param name name of pipe + */ + public AdiabaticPipe(String name) { + super(name); + } + + /** + * Constructor for AdiabaticPipe. + * + * @param name name of pipe + * @param inStream input stream + */ + public AdiabaticPipe(String name, StreamInterface inStream) { + this(name); + this.inStream = inStream; + outStream = inStream.clone(); + } + + /** + *

+ * Setter for the field pipeSpecification. + *

+ * + * @param nominalDiameter a double + * @param pipeSec a {@link java.lang.String} object + */ + public void setPipeSpecification(double nominalDiameter, String pipeSec) { + pipeSpecification = pipeSec; + insideDiameter = nominalDiameter / 1000.0; + } + + /** + *

+ * setOutTemperature. + *

+ * + * @param temperature a double + */ + public void setOutTemperature(double temperature) { + setTemperature = true; + this.temperatureOut = temperature; + } + + /** + *

+ * setOutPressure. + *

+ * + * @param pressure a double + */ + public void setOutPressure(double pressure) { + setPressureOut = true; + this.pressureOut = pressure; + } + + /** + *

+ * calcWallFrictionFactor. + *

+ * + * @param reynoldsNumber a double + * @return a double + */ + public double calcWallFrictionFactor(double reynoldsNumber) { + double relativeRoughnes = getPipeWallRoughness() / insideDiameter; + if (Math.abs(reynoldsNumber) < 2000) { + flowPattern = "laminar"; + return 64.0 / reynoldsNumber; + } else { + flowPattern = "turbulent"; + return Math.pow((1.0 + / (-1.8 * Math.log10(6.9 / reynoldsNumber + Math.pow(relativeRoughnes / 3.7, 1.11)))), + 2.0); } - - /** - *

- * Constructor for AdiabaticPipe. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public AdiabaticPipe(StreamInterface inStream) { - this("AdiabaticPipe", inStream); - } - - /** - * Constructor for AdiabaticPipe. - * - * @param name name of pipe - */ - public AdiabaticPipe(String name) { - super(name); - } - - /** - * Constructor for AdiabaticPipe. - * - * @param name name of pipe - * @param inStream input stream - */ - public AdiabaticPipe(String name, StreamInterface inStream) { - this(name); - this.inStream = inStream; - outStream = (Stream) inStream.clone(); - } - - /** - *

- * Setter for the field pipeSpecification. - *

- * - * @param nominalDiameter a double - * @param pipeSec a {@link java.lang.String} object - */ - public void setPipeSpecification(double nominalDiameter, String pipeSec) { - pipeSpecification = pipeSec; - insideDiameter = nominalDiameter / 1000.0; - } - - /** - *

- * setOutTemperature. - *

- * - * @param temperature a double - */ - public void setOutTemperature(double temperature) { - setTemperature = true; - this.temperatureOut = temperature; - } - - /** - *

- * setOutPressure. - *

- * - * @param pressure a double - */ - public void setOutPressure(double pressure) { - setPressureOut = true; - this.pressureOut = pressure; + } + + /** + *

+ * calcPressureOut. + *

+ * + * @return a double + */ + public double calcPressureOut() { + double area = Math.PI / 4.0 * Math.pow(insideDiameter, 2.0); + velocity = system.getPhase(0).getTotalVolume() / area / 1.0e5; + double reynoldsNumber = velocity * insideDiameter + / system.getPhase(0).getPhysicalProperties().getKinematicViscosity(); + double frictionFactor = calcWallFrictionFactor(reynoldsNumber); + double dp = Math + .pow(4.0 * system.getPhase(0).getNumberOfMolesInPhase() * system.getPhase(0).getMolarMass() + / neqsim.thermo.ThermodynamicConstantsInterface.pi, 2.0) + * frictionFactor * length * system.getPhase(0).getZ() + * neqsim.thermo.ThermodynamicConstantsInterface.R / system.getPhase(0).getMolarMass() + * system.getTemperature() / Math.pow(insideDiameter, 5.0); + // \\System.out.println("friction fact" + frictionFactor + " velocity " + + // velocity + " reynolds number " + reynoldsNumber); + // System.out.println("dp gravity " + // + system.getDensity("kg/m3") * neqsim.thermo.ThermodynamicConstantsInterface.gravity + // * (inletElevation - outletElevation) / 1.0e5); + double dp_gravity = + system.getDensity("kg/m3") * neqsim.thermo.ThermodynamicConstantsInterface.gravity + * (inletElevation - outletElevation); + return Math.sqrt(Math.pow(inletPressure * 1e5, 2.0) - dp) / 1.0e5 + dp_gravity / 1.0e5; + } + + /** + *

+ * calcFlow. + *

+ * + * @return a double + */ + public double calcFlow() { + double averagePressue = (inletPressure + pressureOut) / 2.0; + system.setPressure(averagePressue); + system.init(1); + system.initPhysicalProperties(); + + double area = Math.PI / 4.0 * Math.pow(insideDiameter, 2.0); + double presdrop2 = Math.pow(inletPressure * 1e2, 2.0) - Math.pow(pressureOut * 1e2, 2.0); + double gasGravity = system.getMolarMass() / 0.028; + double oldReynold = 0; + double reynoldsNumber = -1000.0; + double flow = 0; + do { + oldReynold = reynoldsNumber; + velocity = system.getPhase(0).getTotalVolume() / area / 1.0e5; + reynoldsNumber = velocity * insideDiameter + / system.getPhase(0).getPhysicalProperties().getKinematicViscosity(); + double frictionFactor = calcWallFrictionFactor(reynoldsNumber) * 4.0; + double temp = Math.sqrt(presdrop2 * Math.pow(insideDiameter * 1000.0, 5.0) + / (gasGravity * system.getPhase(0).getZ() * system.getTemperature() * frictionFactor + * length / 1000.0)); + flow = 1.1494e-3 * 288.15 / (system.getPressure() * 100) * temp; + system.setTotalFlowRate(flow / 1e6, "MSm^3/day"); + system.init(1); + // System.out.println("flow " + flow + " velocity " + velocity); + } while (Math.abs(reynoldsNumber - oldReynold) / reynoldsNumber > 1e-3); + return flow; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + system = inStream.getThermoSystem().clone(); + inletPressure = system.getPressure(); + // system.setMultiPhaseCheck(true); + if (setTemperature) { + system.setTemperature(this.temperatureOut); } - /** - *

- * calcWallFrictionFactor. - *

- * - * @param reynoldsNumber a double - * @return a double - */ - public double calcWallFrictionFactor(double reynoldsNumber) { - double relativeRoughnes = getPipeWallRoughness() / insideDiameter; - if (Math.abs(reynoldsNumber) < 2000) { - flowPattern = "laminar"; - return 64.0 / reynoldsNumber; - } else { - flowPattern = "turbulent"; - return Math.pow( - (1.0 / (-1.8 * Math - .log10(6.9 / reynoldsNumber + Math.pow(relativeRoughnes / 3.7, 1.11)))), - 2.0); - } - } - - /** - *

- * calcPressureOut. - *

- * - * @return a double - */ - public double calcPressureOut() { - double area = Math.PI / 4.0 * Math.pow(insideDiameter, 2.0); - velocity = system.getPhase(0).getTotalVolume() / area / 1.0e5; - double reynoldsNumber = velocity * insideDiameter - / system.getPhase(0).getPhysicalProperties().getKinematicViscosity(); - double frictionFactor = calcWallFrictionFactor(reynoldsNumber); - double dp = Math - .pow(4.0 * system.getPhase(0).getNumberOfMolesInPhase() - * system.getPhase(0).getMolarMass() - / neqsim.thermo.ThermodynamicConstantsInterface.pi, 2.0) - * frictionFactor * length * system.getPhase(0).getZ() - * neqsim.thermo.ThermodynamicConstantsInterface.R - / system.getPhase(0).getMolarMass() * system.getTemperature() - / Math.pow(insideDiameter, 5.0); - // \\System.out.println("friction fact" + frictionFactor + " velocity " + - // velocity + " reynolds number " + reynoldsNumber); - System.out.println("dp gravity " - + system.getDensity("kg/m3") * neqsim.thermo.ThermodynamicConstantsInterface.gravity - * (inletElevation - outletElevation) / 1.0e5); - double dp_gravity = - system.getDensity("kg/m3") * neqsim.thermo.ThermodynamicConstantsInterface.gravity - * (inletElevation - outletElevation); - return Math.sqrt(Math.pow(inletPressure * 1e5, 2.0) - dp) / 1.0e5 + dp_gravity / 1.0e5; - } - - /** - *

- * calcFlow. - *

- * - * @return a double - */ - public double calcFlow() { - double averagePressue = (inletPressure + pressureOut) / 2.0; - system.setPressure(averagePressue); - system.init(1); + double oldPressure = 0.0; + int iter = 0; + if (!setPressureOut) { + do { + iter++; + oldPressure = system.getPressure(); + system.init(3); system.initPhysicalProperties(); - - double area = Math.PI / 4.0 * Math.pow(insideDiameter, 2.0); - double presdrop2 = Math.pow(inletPressure * 1e2, 2.0) - Math.pow(pressureOut * 1e2, 2.0); - double gasGravity = system.getMolarMass() / 0.028; - double oldReynold = 0; - double reynoldsNumber = -1000.0; - double flow = 0; - do { - oldReynold = reynoldsNumber; - velocity = system.getPhase(0).getTotalVolume() / area / 1.0e5; - reynoldsNumber = velocity * insideDiameter - / system.getPhase(0).getPhysicalProperties().getKinematicViscosity(); - double frictionFactor = calcWallFrictionFactor(reynoldsNumber) * 4.0; - double temp = Math.sqrt(presdrop2 * Math.pow(insideDiameter * 1000.0, 5.0) - / (gasGravity * system.getPhase(0).getZ() * system.getTemperature() - * frictionFactor * length / 1000.0)); - flow = 1.1494e-3 * 288.15 / (system.getPressure() * 100) * temp; - system.setTotalFlowRate(flow / 1e6, "MSm^3/day"); - system.init(1); - // System.out.println("flow " + flow + " velocity " + velocity); - } while (Math.abs(reynoldsNumber - oldReynold) / reynoldsNumber > 1e-3); - return flow; - } - - /** {@inheritDoc} */ - @Override - public void run() { - system = inStream.getThermoSystem().clone(); - inletPressure = system.getPressure(); - // system.setMultiPhaseCheck(true); - if (setTemperature) { - system.setTemperature(this.temperatureOut); - } - - double oldPressure = 0.0; - int iter = 0; - if (!setPressureOut) { - do { - iter++; - oldPressure = system.getPressure(); - system.init(3); - system.initPhysicalProperties(); - system.setPressure(calcPressureOut()); - } while (Math.abs(system.getPressure() - oldPressure) > 1e-2 && iter < 25); - } else { - calcFlow(); - system.setPressure(pressureOut); - system.init(3); - } - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - testOps.TPflash(); - if (setPressureOut) { - inStream.getThermoSystem().setTotalFlowRate(system.getFlowRate("kg/sec"), "kg/sec"); - } - // system.setMultiPhaseCheck(false); - outStream.setThermoSystem(system); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - system.display(); - } - - /** {@inheritDoc} */ - @Override - public FlowSystemInterface getPipe() { - return null; + system.setPressure(calcPressureOut()); + } while (Math.abs(system.getPressure() - oldPressure) > 1e-2 && iter < 25); + } else { + calcFlow(); + system.setPressure(pressureOut); + system.init(3); } - - /** {@inheritDoc} */ - @Override - public void setInitialFlowPattern(String flowPattern) {} - - /** - *

- * Getter for the field length. - *

- * - * @return the length - */ - public double getLength() { - return length; - } - - /** - *

- * Setter for the field length. - *

- * - * @param length the length to set - */ - public void setLength(double length) { - this.length = length; - } - - /** - *

- * getDiameter. - *

- * - * @return the diameter - */ - public double getDiameter() { - return insideDiameter; - } - - /** - *

- * setDiameter. - *

- * - * @param diameter the diameter to set - */ - public void setDiameter(double diameter) { - this.insideDiameter = diameter; - } - - /** - *

- * Getter for the field pipeWallRoughness. - *

- * - * @return the pipeWallRoughness - */ - public double getPipeWallRoughness() { - return pipeWallRoughness; - } - - /** - *

- * Setter for the field pipeWallRoughness. - *

- * - * @param pipeWallRoughness the pipeWallRoughness to set - */ - public void setPipeWallRoughness(double pipeWallRoughness) { - this.pipeWallRoughness = pipeWallRoughness; - } - - /** - *

- * Getter for the field inletElevation. - *

- * - * @return the inletElevation - */ - public double getInletElevation() { - return inletElevation; - } - - /** - *

- * Setter for the field inletElevation. - *

- * - * @param inletElevation the inletElevation to set - */ - public void setInletElevation(double inletElevation) { - this.inletElevation = inletElevation; - } - - /** - *

- * Getter for the field outletElevation. - *

- * - * @return the outletElevation - */ - public double getOutletElevation() { - return outletElevation; - } - - /** - *

- * Setter for the field outletElevation. - *

- * - * @param outletElevation the outletElevation to set - */ - public void setOutletElevation(double outletElevation) { - this.outletElevation = outletElevation; - } - - /** - *

- * main. - *

- * - * @param name an array of {@link java.lang.String} objects - */ - public static void main(String[] name) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 5.0), 220.00); - testSystem.addComponent("methane", 24.0, "MSm^3/day"); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.init(0); - - Stream stream_1 = new Stream("Stream1", testSystem); - - AdiabaticPipe pipe = new AdiabaticPipe(stream_1); - pipe.setLength(700000.0); - pipe.setDiameter(0.7112); - pipe.setPipeWallRoughness(5e-6); - pipe.setOutPressure(112.0); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(pipe); - operations.run(); - pipe.displayResult(); + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + if (setPressureOut) { + inStream.getThermoSystem().setTotalFlowRate(system.getFlowRate("kg/sec"), "kg/sec"); } + // system.setMultiPhaseCheck(false); + outStream.setThermoSystem(system); + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + system.display(); + } + + /** {@inheritDoc} */ + @Override + public FlowSystemInterface getPipe() { + return null; + } + + /** {@inheritDoc} */ + @Override + public void setInitialFlowPattern(String flowPattern) {} + + /** + *

+ * Getter for the field length. + *

+ * + * @return the length + */ + public double getLength() { + return length; + } + + /** + *

+ * Setter for the field length. + *

+ * + * @param length the length to set + */ + public void setLength(double length) { + this.length = length; + } + + /** + *

+ * getDiameter. + *

+ * + * @return the diameter + */ + public double getDiameter() { + return insideDiameter; + } + + /** + *

+ * setDiameter. + *

+ * + * @param diameter the diameter to set + */ + public void setDiameter(double diameter) { + this.insideDiameter = diameter; + } + + /** + *

+ * Getter for the field pipeWallRoughness. + *

+ * + * @return the pipeWallRoughness + */ + public double getPipeWallRoughness() { + return pipeWallRoughness; + } + + /** + *

+ * Setter for the field pipeWallRoughness. + *

+ * + * @param pipeWallRoughness the pipeWallRoughness to set + */ + public void setPipeWallRoughness(double pipeWallRoughness) { + this.pipeWallRoughness = pipeWallRoughness; + } + + /** + *

+ * Getter for the field inletElevation. + *

+ * + * @return the inletElevation + */ + public double getInletElevation() { + return inletElevation; + } + + /** + *

+ * Setter for the field inletElevation. + *

+ * + * @param inletElevation the inletElevation to set + */ + public void setInletElevation(double inletElevation) { + this.inletElevation = inletElevation; + } + + /** + *

+ * Getter for the field outletElevation. + *

+ * + * @return the outletElevation + */ + public double getOutletElevation() { + return outletElevation; + } + + /** + *

+ * Setter for the field outletElevation. + *

+ * + * @param outletElevation the outletElevation to set + */ + public void setOutletElevation(double outletElevation) { + this.outletElevation = outletElevation; + } + + /** + *

+ * main. + *

+ * + * @param name an array of {@link java.lang.String} objects + */ + public static void main(String[] name) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 5.0), 220.00); + testSystem.addComponent("methane", 24.0, "MSm^3/day"); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.init(0); + + Stream stream_1 = new Stream("Stream1", testSystem); + + AdiabaticPipe pipe = new AdiabaticPipe(stream_1); + pipe.setLength(700000.0); + pipe.setDiameter(0.7112); + pipe.setPipeWallRoughness(5e-6); + pipe.setOutPressure(112.0); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(pipe); + operations.run(); + pipe.displayResult(); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticTwoPhasePipe.java b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticTwoPhasePipe.java index 92353a409a..987a1d909b 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticTwoPhasePipe.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticTwoPhasePipe.java @@ -1,7 +1,7 @@ package neqsim.processSimulation.processEquipment.pipeline; +import java.util.UUID; import neqsim.fluidMechanics.flowSystem.FlowSystemInterface; -import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -15,480 +15,476 @@ * @version $Id: $Id */ public class AdiabaticTwoPhasePipe extends Pipeline { - private static final long serialVersionUID = 1000; - - double inletPressure = 0; - boolean setTemperature = false, setPressureOut = false; - protected double temperatureOut = 270, pressureOut = 0.0; - - private double pressureOutLimit = 0.0; - double length = 100.0, flowLimit = 1e20; - String maxflowunit = "kg/hr"; - double insideDiameter = 0.1; - double velocity = 1.0; - double pipeWallRoughness = 1e-5; - private double inletElevation = 0; - private double outletElevation = 0; - double dH = 0.0; - String flowPattern = "unknown"; - String pipeSpecification = "AP02"; - - /** - *

- * Constructor for AdiabaticTwoPhasePipe. - *

- */ - @Deprecated - public AdiabaticTwoPhasePipe() { + private static final long serialVersionUID = 1000; + + double inletPressure = 0; + boolean setTemperature = false; + + boolean setPressureOut = false; + + protected double temperatureOut = 270; + + protected double pressureOut = 0.0; + + private double pressureOutLimit = 0.0; + double length = 100.0; + + double flowLimit = 1e20; + + String maxflowunit = "kg/hr"; + double insideDiameter = 0.1; + double velocity = 1.0; + double pipeWallRoughness = 1e-5; + + /** Elevation at pipe inlet in meters. */ + private double inletElevation = 0; + /** Elevation at pipe outlet in meters. */ + private double outletElevation = 0; + double dH = 0.0; + String flowPattern = "unknown"; + String pipeSpecification = "AP02"; + + /** + *

+ * Constructor for AdiabaticTwoPhasePipe. + *

+ */ + @Deprecated + public AdiabaticTwoPhasePipe() {} + + /** + *

+ * Constructor for AdiabaticTwoPhasePipe. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public AdiabaticTwoPhasePipe(StreamInterface inStream) { + this("AdiabaticTwoPhasePipe", inStream); + } + + /** + * Constructor for AdiabaticTwoPhasePipe. + * + * @param name name of pipe + */ + public AdiabaticTwoPhasePipe(String name) { + super(name); + } + + /** + * Constructor for AdiabaticTwoPhasePipe. + * + * @param name name of pipe + * @param inStream input stream + */ + public AdiabaticTwoPhasePipe(String name, StreamInterface inStream) { + super(name, inStream); + } + + /** + *

+ * Setter for the field pipeSpecification. + *

+ * + * @param nominalDiameter a double + * @param pipeSec a {@link java.lang.String} object + */ + public void setPipeSpecification(double nominalDiameter, String pipeSec) { + pipeSpecification = pipeSec; + insideDiameter = nominalDiameter / 1000.0; + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return outStream.getThermoSystem(); + } + + /** + *

+ * setOutTemperature. + *

+ * + * @param temperature a double + */ + public void setOutTemperature(double temperature) { + setTemperature = true; + this.temperatureOut = temperature; + } + + /** + *

+ * setOutPressure. + *

+ * + * @param pressure a double + */ + public void setOutPressure(double pressure) { + setPressureOut = true; + this.pressureOut = pressure; + } + + /** + *

+ * calcWallFrictionFactor. + *

+ * + * @param reynoldsNumber a double + * @return a double + */ + public double calcWallFrictionFactor(double reynoldsNumber) { + double relativeRoughnes = getPipeWallRoughness() / insideDiameter; + if (Math.abs(reynoldsNumber) < 2000) { + flowPattern = "laminar"; + return 64.0 / reynoldsNumber; + } else { + flowPattern = "turbulent"; + return Math.pow((1.0 + / (-1.8 * Math.log10(6.9 / reynoldsNumber + Math.pow(relativeRoughnes / 3.7, 1.11)))), + 2.0); } - - /** - *

- * Constructor for AdiabaticTwoPhasePipe. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public AdiabaticTwoPhasePipe(StreamInterface inStream) { - this("AdiabaticTwoPhasePipe", inStream); - } - - /** - * Constructor for AdiabaticTwoPhasePipe. - * - * @param name name of pipe - */ - public AdiabaticTwoPhasePipe(String name) { - super(name); - } - - /** - * Constructor for AdiabaticTwoPhasePipe. - * - * @param name name of pipe - * @param inStream input stream - */ - public AdiabaticTwoPhasePipe(String name, StreamInterface inStream) { - super(name, inStream); - } - - /** - *

- * Setter for the field pipeSpecification. - *

- * - * @param nominalDiameter a double - * @param pipeSec a {@link java.lang.String} object - */ - public void setPipeSpecification(double nominalDiameter, String pipeSec) { - pipeSpecification = pipeSec; - insideDiameter = nominalDiameter / 1000.0; - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return outStream.getThermoSystem(); - } - - /** - *

- * setOutTemperature. - *

- * - * @param temperature a double - */ - public void setOutTemperature(double temperature) { - setTemperature = true; - this.temperatureOut = temperature; - } - - /** - *

- * setOutPressure. - *

- * - * @param pressure a double - */ - public void setOutPressure(double pressure) { - setPressureOut = true; - this.pressureOut = pressure; - } - - /** - *

- * calcWallFrictionFactor. - *

- * - * @param reynoldsNumber a double - * @return a double - */ - public double calcWallFrictionFactor(double reynoldsNumber) { - double relativeRoughnes = getPipeWallRoughness() / insideDiameter; - if (Math.abs(reynoldsNumber) < 2000) { - flowPattern = "laminar"; - return 64.0 / reynoldsNumber; - } else { - flowPattern = "turbulent"; - return Math.pow( - (1.0 / (-1.8 * Math - .log10(6.9 / reynoldsNumber + Math.pow(relativeRoughnes / 3.7, 1.11)))), - 2.0); - } - } - - /** - *

- * calcPressureOut. - *

- * - * @return a double - */ - public double calcPressureOut() { - double area = Math.PI / 4.0 * Math.pow(insideDiameter, 2.0); - velocity = system.getFlowRate("m3/sec") / area; - double reynoldsNumber = velocity * insideDiameter / system.getKinematicViscosity("m2/sec"); - double frictionFactor = calcWallFrictionFactor(reynoldsNumber); - double dp = 2.0 * frictionFactor * length * Math.pow(system.getFlowRate("kg/sec"), 2.0) - / insideDiameter / system.getDensity("kg/m3");// * () * - // neqsim.thermo.ThermodynamicConstantsInterface.R - // / system.getMolarMass() * system.getTemperature() / Math.pow(insideDiameter, - // 5.0); - // \\System.out.println("friction fact" + frictionFactor + " velocity " + - // velocity + " reynolds number " + reynoldsNumber); - // System.out.println("dp gravity " + - // system.getDensity("kg/m3")*neqsim.thermo.ThermodynamicConstantsInterface.gravity*(inletElevation-outletElevation)/1.0e5); - double dp_gravity = - system.getDensity("kg/m3") * neqsim.thermo.ThermodynamicConstantsInterface.gravity - * (inletElevation - outletElevation); - return (inletPressure * 1e5 - dp) / 1.0e5 + dp_gravity / 1.0e5; - } - - /** - *

- * calcFlow. - *

- * - * @param pressureOut a double - * @return a double - */ - public double calcFlow(double pressureOut) { - double averagePressue = (pressureOut + pressureOut) / 2.0; - system.setPressure(averagePressue); - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - testOps.TPflash(); - system.initProperties(); - - double area = Math.PI / 4.0 * Math.pow(insideDiameter, 2.0); - double presdrop2 = Math.pow(inletPressure * 1e2, 2.0) - Math.pow(pressureOut * 1e2, 2.0); - double gasGravity = system.getMolarMass() / 0.028; - double oldReynold = 0; - double reynoldsNumber = -1000.0; - double flow = 0; - do { - oldReynold = reynoldsNumber; - velocity = system.getVolume("m3") / area; - reynoldsNumber = velocity * insideDiameter / system.getKinematicViscosity(); - double frictionFactor = calcWallFrictionFactor(reynoldsNumber) * 4.0; - double temp = Math.sqrt(presdrop2 * Math.pow(insideDiameter * 1000.0, 5.0) / (gasGravity - * system.getZ() * system.getTemperature() * frictionFactor * length / 1000.0)); - flow = 1.1494e-3 * 288.15 / (system.getPressure() * 100) * temp; - system.setTotalFlowRate(flow / 1e6, "MSm^3/day"); - testOps.TPflash(); - system.initProperties(); - // System.out.println("flow " + flow + " velocity " + velocity); - } while (Math.abs(reynoldsNumber - oldReynold) / reynoldsNumber > 1e-3); - return flow; + } + + /** + *

+ * calcPressureOut. + *

+ * + * @return a double + */ + public double calcPressureOut() { + double area = Math.PI / 4.0 * Math.pow(insideDiameter, 2.0); + velocity = system.getFlowRate("m3/sec") / area; + double supGasVel = system.getPhase(0).getFlowRate("m3/sec") / area; + double supoilVel = system.getPhase(0).getFlowRate("m3/sec") / area; + + double reynoldsNumber = velocity * insideDiameter / system.getKinematicViscosity("m2/sec"); + double frictionFactor = calcWallFrictionFactor(reynoldsNumber); + // double dp = 2.0 * frictionFactor * length * Math.pow(system.getFlowRate("kg/sec"), 2.0) + // / insideDiameter / system.getDensity("kg/m3"); // * () * + // neqsim.thermo.ThermodynamicConstantsInterface.R + double dp = 6253000 * Math.pow(system.getFlowRate("kg/hr"), 2.0) * frictionFactor + / Math.pow(insideDiameter * 1000, 5.0) / system.getDensity("kg/m3") / 100.0 * 1000.0 + * length; + + // / system.getMolarMass() * system.getTemperature() / Math.pow(insideDiameter, + // 5.0); + // \\System.out.println("friction fact" + frictionFactor + " velocity " + + // velocity + " reynolds number " + reynoldsNumber); + // System.out.println("dp gravity " + + // system.getDensity("kg/m3")*neqsim.thermo.ThermodynamicConstantsInterface.gravity*(inletElevation-outletElevation)/1.0e5); + double dp_gravity = + system.getDensity("kg/m3") * neqsim.thermo.ThermodynamicConstantsInterface.gravity + * (inletElevation - outletElevation); + return (inletPressure * 1e5 - dp) / 1.0e5 + dp_gravity / 1.0e5; + } + + /** + *

+ * calcFlow. + *

+ * + * @param pressureOut a double + * @return a double + */ + public double calcFlow(double pressureOut) { + double averagePressue = (pressureOut + pressureOut) / 2.0; + system.setPressure(averagePressue); + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + system.initProperties(); + + double area = Math.PI / 4.0 * Math.pow(insideDiameter, 2.0); + double presdrop2 = Math.pow(inletPressure * 1e2, 2.0) - Math.pow(pressureOut * 1e2, 2.0); + double gasGravity = system.getMolarMass() / 0.028; + double oldReynold = 0; + double reynoldsNumber = -1000.0; + double flow = 0; + do { + oldReynold = reynoldsNumber; + velocity = system.getVolume("m3") / area; + reynoldsNumber = velocity * insideDiameter / system.getKinematicViscosity(); + double frictionFactor = calcWallFrictionFactor(reynoldsNumber) * 4.0; + double temp = Math.sqrt(presdrop2 * Math.pow(insideDiameter * 1000.0, 5.0) / (gasGravity + * system.getZ() * system.getTemperature() * frictionFactor * length / 1000.0)); + flow = 1.1494e-3 * 288.15 / (system.getPressure() * 100) * temp; + system.setTotalFlowRate(flow / 1e6, "MSm^3/day"); + testOps.TPflash(); + system.initProperties(); + // System.out.println("flow " + flow + " velocity " + velocity); + } while (Math.abs(reynoldsNumber - oldReynold) / reynoldsNumber > 1e-3); + return flow; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + system = inStream.getThermoSystem().clone(); + inletPressure = system.getPressure(); + // system.setMultiPhaseCheck(true); + if (setTemperature) { + system.setTemperature(this.temperatureOut); } - /** {@inheritDoc} */ - @Override - public void run() { - system = inStream.getThermoSystem().clone(); - inletPressure = system.getPressure(); - // system.setMultiPhaseCheck(true); - if (setTemperature) { - system.setTemperature(this.temperatureOut); - } - - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - testOps.TPflash(); + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + testOps.TPflash(); - double oldPressure = 0.0; - int iter = 0; - if (!setPressureOut) { - if (system.getFlowRate(maxflowunit) > flowLimit) { - system.setTotalFlowRate(flowLimit, maxflowunit); - testOps = new ThermodynamicOperations(system); - testOps.TPflash(); - } - do { - iter++; - oldPressure = system.getPressure(); - system.initProperties(); - double outP = calcPressureOut(); - if (outP < 1e-10 || Double.isNaN(outP)) - break; - system.setPressure(outP); - testOps = new ThermodynamicOperations(system); - testOps.TPflash(); - } while (Math.abs(system.getPressure() - oldPressure) > 1e-2 && iter < 25); - if (system.getPressure() < pressureOutLimit) { - iter = 0; - double outP = system.getPressure(); - do { - iter++; - oldPressure = system.getNumberOfMoles(); - system.setTotalNumberOfMoles( - system.getNumberOfMoles() * outP / pressureOutLimit); - - // System.out.println("new moles " + - // system.getNumberOfMoles() + " outP "+ outP); - // outP = calcPressureOut(); - // System.out.println("out P " + outP + " oldP " + oldPressure); - testOps = new ThermodynamicOperations(system); - testOps.TPflash(); - system.initProperties(); - - outP = calcPressureOut(); - system.setPressure(outP); - - if (outP < 1e-10 || Double.isNaN(outP)) - break; - } while (Math.abs(system.getNumberOfMoles() - oldPressure) / oldPressure > 1e-3 - && iter < 3); - // calcFlow(pressureOutLimit); - // System.out.println("new moles " + - // system.getNumberOfMoles()*system.getPressure()/pressureOutLimit); - // System.out.println("flow " + system.getFlowRate(maxflowunit)); - } - if (system.getFlowRate(maxflowunit) > flowLimit) { - system.setTotalFlowRate(flowLimit, maxflowunit); - system.init(1); - } - inStream.getThermoSystem().setTotalFlowRate(system.getFlowRate(maxflowunit), - maxflowunit); - inStream.run(); - } else { - calcFlow(pressureOut); - inStream.getThermoSystem().setTotalFlowRate(system.getFlowRate("kg/sec"), "kg/sec"); - system.setPressure(pressureOut); - system.init(3); - if (system.getFlowRate(maxflowunit) > flowLimit) { - system.setTotalFlowRate(flowLimit, maxflowunit); - inStream.getThermoSystem().setTotalFlowRate(flowLimit, maxflowunit); - iter = 0; - do { - iter++; - oldPressure = system.getPressure(); - system.init(3); - system.initPhysicalProperties(); - system.setPressure(calcPressureOut()); - testOps = new ThermodynamicOperations(system); - testOps.TPflash(); - } while (Math.abs(system.getPressure() - oldPressure) > 1e-2 && iter < 25); - } - } + double oldPressure = 0.0; + int iter = 0; + if (!setPressureOut) { + if (system.getFlowRate(maxflowunit) > flowLimit) { + system.setTotalFlowRate(flowLimit, maxflowunit); testOps = new ThermodynamicOperations(system); testOps.TPflash(); - System.out.println("flow rate " + system.getFlowRate(maxflowunit)); - // system.setMultiPhaseCheck(false); - outStream.setThermoSystem(system); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - system.display(); - } - - /** {@inheritDoc} */ - @Override - public FlowSystemInterface getPipe() { - return null; - } - - /** {@inheritDoc} */ - @Override - public void setInitialFlowPattern(String flowPattern) {} - - /** - *

- * Getter for the field length. - *

- * - * @return the length - */ - public double getLength() { - return length; - } - - /** - *

- * Setter for the field length. - *

- * - * @param length the length to set - */ - public void setLength(double length) { - this.length = length; - } - - /** - *

- * getDiameter. - *

- * - * @return the diameter - */ - public double getDiameter() { - return insideDiameter; - } - - /** - *

- * setDiameter. - *

- * - * @param diameter the diameter to set - */ - public void setDiameter(double diameter) { - this.insideDiameter = diameter; - } - - /** - *

- * Getter for the field pipeWallRoughness. - *

- * - * @return the pipeWallRoughness - */ - public double getPipeWallRoughness() { - return pipeWallRoughness; - } - - /** - *

- * Setter for the field pipeWallRoughness. - *

- * - * @param pipeWallRoughness the pipeWallRoughness to set - */ - public void setPipeWallRoughness(double pipeWallRoughness) { - this.pipeWallRoughness = pipeWallRoughness; - } - - /** - *

- * Getter for the field inletElevation. - *

- * - * @return the inletElevation - */ - public double getInletElevation() { - return inletElevation; - } - - /** - *

- * Setter for the field inletElevation. - *

- * - * @param inletElevation the inletElevation to set - */ - public void setInletElevation(double inletElevation) { - this.inletElevation = inletElevation; - } - - /** - *

- * Getter for the field outletElevation. - *

- * - * @return the outletElevation - */ - public double getOutletElevation() { - return outletElevation; - } - - /** - *

- * Setter for the field outletElevation. - *

- * - * @param outletElevation the outletElevation to set - */ - public void setOutletElevation(double outletElevation) { - this.outletElevation = outletElevation; - } - - /** - *

- * main. - *

- * - * @param name an array of {@link java.lang.String} objects - */ - public static void main(String[] name) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 5.0), 100.00); - testSystem.addComponent("methane", 10.0, "MSm^3/day"); - testSystem.addComponent("n-heptane", 5.0, "MSm^3/day"); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.init(0); - - Stream stream_1 = new Stream("Stream1", testSystem); - - AdiabaticTwoPhasePipe pipe = new AdiabaticTwoPhasePipe(stream_1); - pipe.setLength(100000.0); - pipe.setDiameter(0.5017112); - pipe.setPipeWallRoughness(10e-6); - // pipe.setOutPressure(112.0); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(pipe); - operations.run(); - pipe.displayResult(); - System.out.println("flow " + pipe.getOutletStream().getFluid().getFlowRate("MSm3/day")); - } - - /** - *

- * Getter for the field pressureOutLimit. - *

- * - * @return a double - */ - public double getPressureOutLimit() { - return pressureOutLimit; - } - - /** - *

- * Setter for the field pressureOutLimit. - *

- * - * @param pressureOutLimit a double - */ - public void setPressureOutLimit(double pressureOutLimit) { - this.pressureOutLimit = pressureOutLimit; - } - - /** - *

- * Setter for the field flowLimit. - *

- * - * @param flowLimit a double - * @param unit a {@link java.lang.String} object - */ - public void setFlowLimit(double flowLimit, String unit) { - this.flowLimit = flowLimit; - maxflowunit = unit; + } + + system.initProperties(); + double outP = calcPressureOut(); + if (outP < 1e-10 || Double.isNaN(outP)) { + system.setPressure(0.001); + logger.debug("pressure too low in pipe...."); + } + system.setPressure(outP); + testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + + if (system.getPressure() < pressureOutLimit) { + iter = 0; + outP = system.getPressure(); + do { + iter++; + oldPressure = system.getNumberOfMoles(); + system.setTotalNumberOfMoles(system.getNumberOfMoles() * outP / pressureOutLimit); + + // System.out.println("new moles " + + // system.getNumberOfMoles() + " outP "+ outP); + // outP = calcPressureOut(); + // System.out.println("out P " + outP + " oldP " + oldPressure); + testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + system.initProperties(); + + outP = calcPressureOut(); + system.setPressure(outP); + + if (outP < 1e-10 || Double.isNaN(outP)) { + break; + } + } while (Math.abs(system.getNumberOfMoles() - oldPressure) / oldPressure > 1e-3 + && iter < 3); + // calcFlow(pressureOutLimit); + // System.out.println("new moles " + + // system.getNumberOfMoles()*system.getPressure()/pressureOutLimit); + // System.out.println("flow " + system.getFlowRate(maxflowunit)); + } + if (system.getFlowRate(maxflowunit) > flowLimit) { + system.setTotalFlowRate(flowLimit, maxflowunit); + system.init(1); + } + // SetTotalFlowRate resets beta factors, but they are fixed in run below + inStream.getThermoSystem().setTotalFlowRate(system.getFlowRate(maxflowunit), maxflowunit); + inStream.run(id); + } else { + calcFlow(pressureOut); + inStream.getThermoSystem().setTotalFlowRate(system.getFlowRate("kg/sec"), "kg/sec"); + system.setPressure(pressureOut); + system.init(3); + if (system.getFlowRate(maxflowunit) > flowLimit) { + system.setTotalFlowRate(flowLimit, maxflowunit); + inStream.getThermoSystem().setTotalFlowRate(flowLimit, maxflowunit); + iter = 0; + do { + iter++; + oldPressure = system.getPressure(); + system.init(3); + system.initPhysicalProperties(); + system.setPressure(calcPressureOut()); + testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + } while (Math.abs(system.getPressure() - oldPressure) > 1e-2 && iter < 25); + } } + testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + System.out.println("flow rate " + system.getFlowRate(maxflowunit)); + // system.setMultiPhaseCheck(false); + outStream.setThermoSystem(system); + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + system.display(); + } + + /** + *

getSuperficialVelocity.

+ * + * @return a double + */ + public double getSuperficialVelocity() { + return getInletStream().getThermoSystem().getFlowRate("kg/sec") + / getInletStream().getThermoSystem().getDensity("kg/m3") + / (Math.PI / 4.0 * Math.pow(insideDiameter, 2.0)); + } + + /** {@inheritDoc} */ + @Override + public FlowSystemInterface getPipe() { + return null; + } + + /** {@inheritDoc} */ + @Override + public void setInitialFlowPattern(String flowPattern) {} + + /** + *

+ * Getter for the field length. + *

+ * + * @return the length + */ + public double getLength() { + return length; + } + + /** + *

+ * Setter for the field length. + *

+ * + * @param length the length to set + */ + public void setLength(double length) { + this.length = length; + } + + /** + *

+ * getDiameter. + *

+ * + * @return the diameter + */ + public double getDiameter() { + return insideDiameter; + } + + /** + *

+ * setDiameter. + *

+ * + * @param diameter the diameter to set + */ + public void setDiameter(double diameter) { + insideDiameter = diameter; + } + + /** + *

+ * Getter for the field pipeWallRoughness. + *

+ * + * @return the pipeWallRoughness + */ + public double getPipeWallRoughness() { + return pipeWallRoughness; + } + + /** + *

+ * Setter for the field pipeWallRoughness. + *

+ * + * @param pipeWallRoughness the pipeWallRoughness to set + */ + public void setPipeWallRoughness(double pipeWallRoughness) { + this.pipeWallRoughness = pipeWallRoughness; + } + + /** + *

+ * Getter for the field inletElevation. + *

+ * + * @return the inletElevation + */ + public double getInletElevation() { + return inletElevation; + } + + /** + *

+ * Setter for the field inletElevation. + *

+ * + * @param inletElevation the inletElevation to set + */ + public void setInletElevation(double inletElevation) { + this.inletElevation = inletElevation; + } + + /** + *

+ * Getter for the field outletElevation. + *

+ * + * @return the outletElevation + */ + public double getOutletElevation() { + return outletElevation; + } + + /** + *

+ * Setter for the field outletElevation. + *

+ * + * @param outletElevation the outletElevation to set + */ + public void setOutletElevation(double outletElevation) { + this.outletElevation = outletElevation; + } + + /** + *

+ * Getter for the field pressureOutLimit. + *

+ * + * @return a double + */ + public double getPressureOutLimit() { + return pressureOutLimit; + } + + /** + *

+ * Setter for the field pressureOutLimit. + *

+ * + * @param pressureOutLimit a double + */ + public void setPressureOutLimit(double pressureOutLimit) { + this.pressureOutLimit = pressureOutLimit; + } + + /** + *

+ * Setter for the field flowLimit. + *

+ * + * @param flowLimit a double + * @param unit a {@link java.lang.String} object + */ + public void setFlowLimit(double flowLimit, String unit) { + this.flowLimit = flowLimit; + maxflowunit = unit; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/Fittings.java b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/Fittings.java index d29864556a..1adb113d33 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/Fittings.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/Fittings.java @@ -2,6 +2,8 @@ import java.io.Serializable; import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** *

@@ -12,113 +14,119 @@ * @version $Id: $Id */ public class Fittings implements Serializable { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Fittings.class); + + ArrayList fittingList = new ArrayList(); + + /** + *

+ * Constructor for Fittings. + *

+ */ + public Fittings() {} + + /** + *

+ * add. + *

+ * + * @param name a {@link java.lang.String} object + * @param LdivD a double + */ + public void add(String name, double LdivD) { + fittingList.add(new Fitting(name, LdivD)); + } + + /** + *

+ * add. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void add(String name) { + fittingList.add(new Fitting(name)); + } + + /** + *

+ * getFittingsList. + *

+ * + * @return a {@link java.util.ArrayList} object + */ + public ArrayList getFittingsList() { + return fittingList; + } + + /** + * Constructor for Fitting. + */ + public class Fitting implements Serializable { private static final long serialVersionUID = 1000; - ArrayList fittingList = new ArrayList(); + private String fittingName = ""; + private double LtoD = 1.0; + + public Fitting(String name, double LdivD) { + this.fittingName = name; + LtoD = LdivD; + } /** - *

- * Constructor for Fittings. - *

+ * Constructor for Fitting. + * + * @param name Name of fitting */ - public Fittings() {} + public Fitting(String name) { + this.fittingName = name; + + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet(("SELECT * FROM fittings WHERE name='" + name + "'"))) { + dataSet.next(); + LtoD = (Double.parseDouble(dataSet.getString("LtoD"))); + System.out.printf("LtoD " + LtoD); + } catch (Exception ex) { + logger.error("error in comp", ex); + } + } /** - *

- * add. - *

+ * Getter for parameter fittingName. * - * @param name a {@link java.lang.String} object - * @param LdivD a double + * @return the fittingName */ - public void add(String name, double LdivD) { - fittingList.add(new Fitting(name, LdivD)); + public String getFittingName() { + return fittingName; } /** - *

- * add. - *

+ * Setter for parameter fittingName. * - * @param name a {@link java.lang.String} object + * @param fittingName the fittingName to set */ - public void add(String name) { - fittingList.add(new Fitting(name)); + public void setFittingName(String fittingName) { + this.fittingName = fittingName; } /** - *

- * getFittingsList. - *

+ * Getter for parameter LtoD. * - * @return a {@link java.util.ArrayList} object + * @return the LtoD */ - public ArrayList getFittingsList() { - return fittingList; + public double getLtoD() { + return LtoD; } - public class Fitting implements Serializable { - private static final long serialVersionUID = 1000; - - private String fittingName = ""; - private double LtoD = 1.0; - - public Fitting(String name, double LdivD) { - this.fittingName = name; - LtoD = LdivD; - } - - public Fitting(String name) { - this.fittingName = name; - - neqsim.util.database.NeqSimDataBase database = - new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - dataSet = - database.getResultSet(("SELECT * FROM fittings WHERE name='" + name + "'")); - dataSet.next(); - LtoD = (Double.parseDouble(dataSet.getString("LtoD"))); - System.out.printf("LtoD " + LtoD); - } catch (Exception e) { - System.out.println("error in comp"); - e.printStackTrace(); - } finally { - try { - dataSet.close(); - } catch (Exception e) { - System.out.println("error closing database....."); - e.printStackTrace(); - } - } - } - - /** - * @return the fittingName - */ - public String getFittingName() { - return fittingName; - } - - /** - * @param fittingName the fittingName to set - */ - public void setFittingName(String fittingName) { - this.fittingName = fittingName; - } - - /** - * @return the LtoD - */ - public double getLtoD() { - return LtoD; - } - - /** - * @param LtoD the LtoD to set - */ - public void setLtoD(double LtoD) { - this.LtoD = LtoD; - } + /** + * Setter for parameter LtoD. + * + * @param LtoD the LtoD to set + */ + public void setLtoD(double LtoD) { + this.LtoD = LtoD; } + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/IncompressiblePipeFlow.java b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/IncompressiblePipeFlow.java index 3d3c7b1f75..ea33e69752 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/IncompressiblePipeFlow.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/IncompressiblePipeFlow.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.pipeline; +import java.util.UUID; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -13,190 +14,192 @@ * @version $Id: $Id */ public class IncompressiblePipeFlow extends AdiabaticPipe { - private static final long serialVersionUID = 1000; - - Fittings fittings = new Fittings(); - private double totalEqLenth = 0; - double momentum = 0; - - /** - *

- * Constructor for IncompressiblePipeFlow. - *

- */ - @Deprecated - public IncompressiblePipeFlow() { - super("IncompressiblePipeFlow"); + private static final long serialVersionUID = 1000; + + Fittings fittings = new Fittings(); + private double totalEqLenth = 0; + double momentum = 0; + + /** + *

+ * Constructor for IncompressiblePipeFlow. + *

+ */ + @Deprecated + public IncompressiblePipeFlow() { + super("IncompressiblePipeFlow"); + } + + /** + *

+ * Constructor for IncompressiblePipeFlow. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public IncompressiblePipeFlow(StreamInterface inStream) { + this("IncompressiblePipeFlow", inStream); + } + + /** + * Constructor for IncompressiblePipeFlow. + * + * @param name name of pipeline + */ + public IncompressiblePipeFlow(String name) { + super(name); + } + + /** + * * Constructor for IncompressiblePipeFlow. + * + * @param name name of pipe + * @param inStream input stream + */ + public IncompressiblePipeFlow(String name, StreamInterface inStream) { + super(name, inStream); + } + + /** + *

+ * addFittingFromDatabase. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void addFittingFromDatabase(String name) { + fittings.add(name); + } + + /** + *

+ * addFitting. + *

+ * + * @param name a {@link java.lang.String} object + * @param LdivD a double + */ + public void addFitting(String name, double LdivD) { + fittings.add(name, LdivD); + } + + /** {@inheritDoc} */ + @Override + public double calcPressureOut() { + setTotalEqLenth(length); + + for (int i = 0; i < fittings.fittingList.size(); i++) { + setTotalEqLenth(getTotalEqLenth() + fittings.getFittingsList().get(i).getLtoD()); } - /** - *

- * Constructor for IncompressiblePipeFlow. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public IncompressiblePipeFlow(StreamInterface inStream) { - this("IncompressiblePipeFlow", inStream); - } - - /** - * Constructor for IncompressiblePipeFlow. - * - * @param name name of pipeline - */ - public IncompressiblePipeFlow(String name) { - super(name); - } - - /** - * * Constructor for IncompressiblePipeFlow. - * - * @param name name of pipe - * @param inStream input stream - */ - public IncompressiblePipeFlow(String name, StreamInterface inStream) { - super(name, inStream); - } - - /** - *

- * addFittingFromDatabase. - *

- * - * @param name a {@link java.lang.String} object - */ - public void addFittingFromDatabase(String name) { - fittings.add(name); - } - - /** - *

- * addFitting. - *

- * - * @param name a {@link java.lang.String} object - * @param LdivD a double - */ - public void addFitting(String name, double LdivD) { - fittings.add(name, LdivD); - } - - /** {@inheritDoc} */ - @Override - public double calcPressureOut() { - setTotalEqLenth(length); - - for (int i = 0; i < fittings.fittingList.size(); i++) { - setTotalEqLenth(getTotalEqLenth() + fittings.getFittingsList().get(i).getLtoD()); - } - - double area = 3.14 / 4.0 * Math.pow(insideDiameter, 2.0); - double velocity = 1.0 / system.getPhase(0).getPhysicalProperties().getDensity() - / (system.getPhase(0).getNumberOfMolesInPhase() - * (system.getPhase(0).getMolarVolume() / 1e5)) - / area; - - momentum = system.getPhase(0).getPhysicalProperties().getDensity() * velocity * velocity; - double reynoldsNumber = velocity * insideDiameter - / system.getPhase(0).getPhysicalProperties().getKinematicViscosity(); - double frictionFactor = calcWallFrictionFactor(reynoldsNumber); - - double dp = -momentum * frictionFactor * getTotalEqLenth() / (2.0 * insideDiameter); - dp += (getInletElevation() - getOutletElevation()) - * system.getPhase(0).getPhysicalProperties().getDensity() - * neqsim.thermo.ThermodynamicConstantsInterface.gravity; - - // double dp = Math.pow(4.0 * system.getPhase(0).getNumberOfMolesInPhase() * - // system.getPhase(0).getMolarMass()/thermo.ThermodynamicConstantsInterface.pi, - // 2.0) * frictionFactor * length * system.getPhase(0).getZ() * - // thermo.ThermodynamicConstantsInterface.R/system.getPhase(0).getMolarMass() * - // system.getTemperature() / Math.pow(insideDiameter, 5.0); - System.out.println("outpres " + ((system.getPressure() * 1e5 + dp) / 1.0e5) + " dp " + dp - + " friction fact" + frictionFactor + " velocity " + velocity + " reynolds number " - + reynoldsNumber + " equivalentLength " + getTotalEqLenth()); - - return (system.getPressure() * 1e5 + dp) / 1.0e5; - } - - /** {@inheritDoc} */ - @Override - public void run() { - system = inStream.getThermoSystem().clone(); - // system.setMultiPhaseCheck(true); - if (setTemperature) { - system.setTemperature(this.temperatureOut); - } - system.init(3); - system.initPhysicalProperties(); - calcPressureOut(); - system.setPressure(calcPressureOut()); - - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - testOps.TPflash(); - // system.setMultiPhaseCheck(false); - outStream.setThermoSystem(system); - } - - /** - *

- * main. - *

- * - * @param name an array of {@link java.lang.String} objects - */ - public static void main(String[] name) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); - testSystem.addComponent("water", 100.0 * 1e3, "kg/hr"); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.initPhysicalProperties(); - Stream stream_1 = new Stream("Stream1", testSystem); - - IncompressiblePipeFlow pipe = new IncompressiblePipeFlow(stream_1); - pipe.setLength(1000.0); - pipe.setDiameter(0.25); - pipe.setPipeWallRoughness(2e-5); - pipe.addFittingFromDatabase("Standard elbow (R=1.5D), 90deg"); - - IncompressiblePipeFlow pipe2 = new IncompressiblePipeFlow(pipe.getOutletStream()); - pipe2.setLength(1000.0); - pipe2.setDiameter(0.25); - pipe2.setPipeWallRoughness(2e-5); - pipe2.setInletElevation(10); - pipe2.setOutletElevation(0); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(pipe); - operations.add(pipe2); - operations.run(); - pipe.displayResult(); - } - - /** - *

- * Getter for the field totalEqLenth. - *

- * - * @return the totalEqLenth - */ - public double getTotalEqLenth() { - return totalEqLenth; - } - - /** - *

- * Setter for the field totalEqLenth. - *

- * - * @param totalEqLenth the totalEqLenth to set - */ - public void setTotalEqLenth(double totalEqLenth) { - this.totalEqLenth = totalEqLenth; + double area = 3.14 / 4.0 * Math.pow(insideDiameter, 2.0); + double velocity = 1.0 / system.getPhase(0).getPhysicalProperties().getDensity() + / (system.getPhase(0).getNumberOfMolesInPhase() + * (system.getPhase(0).getMolarVolume() / 1e5)) + / area; + + momentum = system.getPhase(0).getPhysicalProperties().getDensity() * velocity * velocity; + double reynoldsNumber = velocity * insideDiameter + / system.getPhase(0).getPhysicalProperties().getKinematicViscosity(); + double frictionFactor = calcWallFrictionFactor(reynoldsNumber); + + double dp = -momentum * frictionFactor * getTotalEqLenth() / (2.0 * insideDiameter); + dp += (getInletElevation() - getOutletElevation()) + * system.getPhase(0).getPhysicalProperties().getDensity() + * neqsim.thermo.ThermodynamicConstantsInterface.gravity; + + // double dp = Math.pow(4.0 * system.getPhase(0).getNumberOfMolesInPhase() * + // system.getPhase(0).getMolarMass()/thermo.ThermodynamicConstantsInterface.pi, + // 2.0) * frictionFactor * length * system.getPhase(0).getZ() * + // thermo.ThermodynamicConstantsInterface.R/system.getPhase(0).getMolarMass() * + // system.getTemperature() / Math.pow(insideDiameter, 5.0); + System.out.println("outpres " + ((system.getPressure() * 1e5 + dp) / 1.0e5) + " dp " + dp + + " friction fact" + frictionFactor + " velocity " + velocity + " reynolds number " + + reynoldsNumber + " equivalentLength " + getTotalEqLenth()); + + return (system.getPressure() * 1e5 + dp) / 1.0e5; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + system = inStream.getThermoSystem().clone(); + // system.setMultiPhaseCheck(true); + if (setTemperature) { + system.setTemperature(this.temperatureOut); } + system.init(3); + system.initPhysicalProperties(); + calcPressureOut(); + system.setPressure(calcPressureOut()); + + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + // system.setMultiPhaseCheck(false); + outStream.setThermoSystem(system); + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** + *

+ * main. + *

+ * + * @param name an array of {@link java.lang.String} objects + */ + public static void main(String[] name) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem.addComponent("water", 100.0 * 1e3, "kg/hr"); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.initPhysicalProperties(); + Stream stream_1 = new Stream("Stream1", testSystem); + + IncompressiblePipeFlow pipe = new IncompressiblePipeFlow(stream_1); + pipe.setLength(1000.0); + pipe.setDiameter(0.25); + pipe.setPipeWallRoughness(2e-5); + pipe.addFittingFromDatabase("Standard elbow (R=1.5D), 90deg"); + + IncompressiblePipeFlow pipe2 = new IncompressiblePipeFlow(pipe.getOutletStream()); + pipe2.setLength(1000.0); + pipe2.setDiameter(0.25); + pipe2.setPipeWallRoughness(2e-5); + pipe2.setInletElevation(10); + pipe2.setOutletElevation(0); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(pipe); + operations.add(pipe2); + operations.run(); + pipe.displayResult(); + } + + /** + *

+ * Getter for the field totalEqLenth. + *

+ * + * @return the totalEqLenth + */ + public double getTotalEqLenth() { + return totalEqLenth; + } + + /** + *

+ * Setter for the field totalEqLenth. + *

+ * + * @param totalEqLenth the totalEqLenth to set + */ + public void setTotalEqLenth(double totalEqLenth) { + this.totalEqLenth = totalEqLenth; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/OnePhasePipeLine.java b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/OnePhasePipeLine.java index 21f0ba4626..ab5a14d6af 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/OnePhasePipeLine.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/OnePhasePipeLine.java @@ -3,10 +3,13 @@ * * Created on 21. august 2001, 20:44 */ + package neqsim.processSimulation.processEquipment.pipeline; +import java.util.UUID; import neqsim.fluidMechanics.flowSystem.onePhaseFlowSystem.pipeFlowSystem.PipeFlowSystem; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.system.SystemInterface; /** *

@@ -17,69 +20,66 @@ * @version $Id: $Id */ public class OnePhasePipeLine extends Pipeline { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for OnePhasePipeLine. - *

- */ - @Deprecated - public OnePhasePipeLine() { - this("OnePhasePipeLine"); - } + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for OnePhasePipeLine. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public OnePhasePipeLine(StreamInterface inStream) { - this("OnePhasePipeLine", inStream); - } + /** + *

+ * Constructor for OnePhasePipeLine. + *

+ */ + @Deprecated + public OnePhasePipeLine() { + this("OnePhasePipeLine"); + } - /** - * Constructor for OnePhasePipeLine. - * - * @param name name of pipe - */ - public OnePhasePipeLine(String name) { - super(name); - } + /** + *

+ * Constructor for OnePhasePipeLine. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public OnePhasePipeLine(StreamInterface inStream) { + this("OnePhasePipeLine", inStream); + } - /** - * Constructor for OnePhasePipeLine. - * - * @param name name of pipe - * @param inStream input stream - */ - public OnePhasePipeLine(String name, StreamInterface inStream) { - super(name, inStream); - pipe = new PipeFlowSystem(); - } + /** + * Constructor for OnePhasePipeLine. + * + * @param name name of pipe + */ + public OnePhasePipeLine(String name) { + super(name); + } - /** - *

- * createSystem. - *

- */ - public void createSystem() {} + /** + * Constructor for OnePhasePipeLine. + * + * @param name name of pipe + * @param inStream input stream + */ + public OnePhasePipeLine(String name, StreamInterface inStream) { + super(name, inStream); + pipe = new PipeFlowSystem(); + } - /** {@inheritDoc} */ - @Override - public void run() { - super.run(); - pipe.solveSteadyState(10); - // pipe.print(); - // pipe.getDisplay().createNetCdfFile(fileName); - outStream.setThermoSystem(pipe.getNode(pipe.getTotalNumberOfNodes() - 1).getBulkSystem()); - } + /** + *

+ * createSystem. + *

+ */ + public void createSystem() {} - /** {@inheritDoc} */ - @Override - public void runTransient(double dt) { - super.runTransient(dt); - } + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + UUID oldid = getCalculationIdentifier(); + super.run(id); + setCalculationIdentifier(oldid); + pipe.solveSteadyState(10, id); + // pipe.print(); + outStream.setThermoSystem(pipe.getNode(pipe.getTotalNumberOfNodes() - 1).getBulkSystem().clone()); + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/PipeBeggsAndBrills.java b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/PipeBeggsAndBrills.java new file mode 100644 index 0000000000..84617a167f --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/PipeBeggsAndBrills.java @@ -0,0 +1,1309 @@ +package neqsim.processSimulation.processEquipment.pipeline; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + *

+ * PipeBeggsAndBrills class. + *

+ * + * @author Even Solbraa , Sviatoslav Eroshkin + * @version $Id: $Id + */ +public class PipeBeggsAndBrills extends Pipeline { + private static final long serialVersionUID = 1001; + + int iteration; + + private double nominalDiameter; + + private Boolean PipeSpecSet = false; + + // Inlet pressure of the pipeline (initialization) + private double inletPressure = Double.NaN; + + private double totalPressureDrop = 0; + + // Outlet properties initialization [K] and [bar] + protected double temperatureOut = 270; + protected double pressureOut = 0.0; + + // Unit for maximum flow + String maxflowunit = "kg/hr"; + + // Inside diameter of the pipe [m] + private double insideDiameter = Double.NaN; + + // Thickness diameter of the pipe [m] + private double pipeThickness = Double.NaN; + + // Roughness of the pipe wall [m] + private double pipeWallRoughness = 1e-5; + + // Flag to run isothermal calculations + private boolean runIsothermal = true; + + // Flow pattern of the fluid in the pipe + private String regime; + + // Volume fraction of liquid in the input mixture + private double inputVolumeFractionLiquid; + + // Froude number of the mixture + private double mixtureFroudeNumber; + + // Specification of the pipe + private String pipeSpecification = "LD201"; + + // Ref. Beggs and Brills + private double A; + + // Area of the pipe [m2] + private double area; + + // Superficial gas velocity in the pipe [m/s] + private double supGasVel; + + // Superficial liquid velocity in the pipe [m/s] + private double supLiquidVel; + + // Density of the mixture [kg/m3] + private double mixtureDensity; + + // Hydrostatic pressure drop in the pipe [bar] + private double hydrostaticPressureDrop; + + // Holdup ref. Beggs and Brills + private double El = 0; + + // Superficial mixture velocity in the pipe [m/s] + private double supMixVel; + + // Frictional pressure loss in the pipe [bar] + private double frictionPressureLoss; + + // Total pressure drop in the pipe [bar] + private double pressureDrop; + + // Number of pipe increments for calculations + private int numberOfIncrements = 5; + + // Length of the pipe [m] + private double totalLength = Double.NaN; + + // Elevation of the pipe [m] + private double totalElevation = Double.NaN; + + // Angle of the pipe [degrees] + private double angle = Double.NaN; + + // Density of the liquid in the mixture in case of water and oil phases present together + private double mixtureLiquidDensity; + + // Viscosity of the liquid in the mixture in case of water and oil phases present together + private double mixtureLiquidViscosity; + + // Mass fraction of oil in the mixture in case of water and oil phases present together + private double mixtureOilMassFraction; + + // Volume fraction of oil in the mixture in case of water and oil phases present together + private double mixtureOilVolumeFraction; + + private double cumulativeLength; + + private double cumulativeElevation; + + // For segment calculation + double length; + double elevation; + + // Results initialization (for each segment) + + private List pressureProfile; + private List temperatureProfile; + private List pressureDropProfile; + private List flowRegimeProfile; + + private List liquidSuperficialVelocityProfile; + private List gasSuperficialVelocityProfile; + private List mixtureSuperficialVelocityProfile; + + private List mixtureViscosityProfile; + private List mixtureDensityProfile; + private List liquidDensityProfile; + + private List liquidHoldupProfile; + private List mixtureReynoldsNumber; + + private List lengthProfile; + private List elevationProfile; + private List incrementsProfile; + + /** + *

+ * Constructor for PipeBeggsAndBrills. + *

+ */ + @Deprecated + public PipeBeggsAndBrills() {} + + /** + *

+ * Constructor for PipeBeggsAndBrills. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public PipeBeggsAndBrills(StreamInterface inStream) { + this("PipeBeggsAndBrills", inStream); + } + + /** + * Constructor for PipeBeggsAndBrills. + * + * @param name name of pipe + */ + public PipeBeggsAndBrills(String name) { + super(name); + } + + /** + * Constructor for PipeBeggsAndBrills. + * + * @param name name of pipe + * @param inStream input stream + */ + public PipeBeggsAndBrills(String name, StreamInterface inStream) { + super(name, inStream); + } + + /** + *

+ * Setter for the field pipeSpecification. + *

+ * + * @param nominalDiameter a double in inch + * @param pipeSec a {@link java.lang.String} object + */ + public void setPipeSpecification(double nominalDiameter, String pipeSec) { + this.pipeSpecification = pipeSec; + this.nominalDiameter = nominalDiameter; + this.PipeSpecSet = true; + + neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet("SELECT * FROM pipedata where Size='" + nominalDiameter + "'"); + try { + if (dataSet.next()) { + this.pipeThickness = Double.parseDouble(dataSet.getString(pipeSpecification)) / 1000; + this.insideDiameter = + (Double.parseDouble(dataSet.getString("OD"))) / 1000 - 2 * this.pipeThickness; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return outStream.getThermoSystem(); + } + + /** + *

+ * Setter for the field elevation. + *

+ * + * @param elevation a double + */ + public void setElevation(double elevation) { + this.totalElevation = elevation; + } + + /** + *

+ * Setter for the field length. + *

+ * + * @param length the length to set + */ + public void setLength(double length) { + this.totalLength = length; + } + + /** + *

+ * setDiameter. + *

+ * + * @param diameter the diameter to set + */ + public void setDiameter(double diameter) { + insideDiameter = diameter; + } + + /** + *

+ * setThickness. + *

+ * + * @param pipeThickness the thickness to set + */ + public void setThickness(double pipeThickness) { + this.pipeThickness = pipeThickness; + } + + /** + *

+ * getThickness. + *

+ * + * @return a double + */ + public double getThickness() { + return this.pipeThickness; + } + + /** + *

+ * Setter for the field angle. + *

+ * + * @param angle a double + */ + public void setAngle(double angle) { + this.angle = angle; + } + + /** + *

+ * Setter for the field pipeWallRoughness. + *

+ * + * @param pipeWallRoughness the pipeWallRoughness to set + */ + public void setPipeWallRoughness(double pipeWallRoughness) { + this.pipeWallRoughness = pipeWallRoughness; + } + + /** + *

+ * Setter for the field numberOfIncrements. + *

+ * + * @param numberOfIncrements a int + */ + public void setNumberOfIncrements(int numberOfIncrements) { + this.numberOfIncrements = numberOfIncrements; + } + + /** + *

+ * Setter for the field runIsothermal. + *

+ * + * @param runIsothermal a boolean + */ + public void setRunIsothermal(boolean runIsothermal) { + this.runIsothermal = runIsothermal; + } + + /** + * Converts the input values from the system measurement units to imperial units. Needed because + * the main equations and coefficients are developed for imperial system + *

+ * The conversions applied are: + *

+ *
    + *
  • Inside Diameter (m) - (feet): multiplied by 3.2808399
  • + *
  • Angle (m) - (feet): multiplied by 0.01745329
  • + *
  • Elevation (m) - (feet): multiplied by 3.2808399
  • + *
  • Length (m) - (feet): multiplied by 3.2808399
  • + *
  • Pipe Wall Roughness (m) - (feet): multiplied by 3.2808399
  • + *
+ */ + public void convertSystemUnitToImperial() { + insideDiameter = insideDiameter * 3.2808399; + angle = 0.01745329 * angle; + elevation = elevation * 3.2808399; + length = length * 3.2808399; + pipeWallRoughness = pipeWallRoughness * 3.2808399; + } + + /** + * Converts the input values from imperial units to the system measurement units. Needed because + * the main equations and coefficients are developed for imperial system + *

+ * The conversions applied are the inverse of those in the {@link #convertSystemUnitToImperial()} + * method: + *

+ *
    + *
  • Inside Diameter (ft - m): divided by 3.2808399
  • + *
  • Angle (ft - m): divided by 0.01745329
  • + *
  • Elevation (ft - m): divided by 3.2808399
  • + *
  • Length (ft - m): divided by 3.2808399
  • + *
  • Pipe Wall Roughness (ft - m): divided by 3.2808399
  • + *
  • Pressure Drop (lb/inch) -(bar): multiplied by 1.48727E-05
  • + *
+ */ + public void convertSystemUnitToMetric() { + insideDiameter = insideDiameter / 3.2808399; + angle = angle / 0.01745329; + elevation = elevation / 3.2808399; + length = length / 3.2808399; + pipeWallRoughness = pipeWallRoughness / 3.2808399; + pressureDrop = pressureDrop * 1.48727E-05; + } + + /** + *

+ * calculateMissingValue. + *

+ */ + public void calculateMissingValue() { + if (Double.isNaN(totalLength)) { + totalLength = calculateLength(); + } else if (Double.isNaN(totalElevation)) { + totalElevation = calculateElevation(); + } else if (Double.isNaN(angle)) { + angle = calculateAngle(); + } + if (Math.abs(totalElevation) > Math.abs(totalLength)) { + throw new RuntimeException( + new neqsim.util.exception.InvalidInputException("PipeBeggsAndBrills", "calcMissingValue", + "elevation", "- cannot be higher than length of the pipe" + length)); + } + if (Double.isNaN(totalElevation) || Double.isNaN(totalLength) || Double.isNaN(angle) + || Double.isNaN(insideDiameter)) { + throw new RuntimeException( + new neqsim.util.exception.InvalidInputException("PipeBeggsAndBrills", "calcMissingValue", + "elevation or length or angle or inlet diameter", "cannot be null")); + } + } + + /** + * Calculates the length based on the elevation and angle. + * + * @return the calculated length. + */ + private double calculateLength() { + return totalElevation / Math.sin(Math.toRadians(angle)); + } + + /** + * Calculates the elevation based on the length and angle. + * + * @return the calculated elevation. + */ + private double calculateElevation() { + return totalLength * Math.sin(Math.toRadians(angle)); + } + + /** + * Calculates the angle based on the length and elevation. + * + * @return the calculated angle. + */ + private double calculateAngle() { + return Math.toDegrees(Math.asin(totalElevation / totalLength)); + } + + /** + *

+ * calcFlowRegime. + *

+ * + * @return a {@link java.lang.String} object + */ + public String calcFlowRegime() { + // Calc input volume fraction + area = (Math.PI / 4.0) * Math.pow(insideDiameter, 2.0); + if (system.getNumberOfPhases() != 1) { + if (system.getNumberOfPhases() == 3) { + supLiquidVel = + (system.getPhase(1).getFlowRate("ft3/sec") + system.getPhase(2).getFlowRate("ft3/sec")) + / area; + } else { + supLiquidVel = system.getPhase(1).getFlowRate("ft3/sec") / area; + } + + supGasVel = system.getPhase(0).getFlowRate("ft3/sec") / area; + supMixVel = supLiquidVel + supGasVel; + + mixtureFroudeNumber = Math.pow(supMixVel, 2) / (32.174 * insideDiameter); + inputVolumeFractionLiquid = supLiquidVel / supMixVel; + } else { + if (system.hasPhaseType("gas")) { + supGasVel = system.getPhase(0).getFlowRate("ft3/sec") / area; + supMixVel = supGasVel; + inputVolumeFractionLiquid = 0.0; + regime = "Single Phase"; + } else { + supLiquidVel = system.getPhase(1).getFlowRate("ft3/sec") / area; + supMixVel = supLiquidVel; + inputVolumeFractionLiquid = 1.0; + regime = "Single Phase"; + } + } + + liquidSuperficialVelocityProfile.add(supLiquidVel / 3.2808399); // to meters + gasSuperficialVelocityProfile.add(supGasVel / 3.2808399); + mixtureSuperficialVelocityProfile.add(supMixVel / 3.2808399); + + double L1 = 316 * Math.pow(inputVolumeFractionLiquid, 0.302); + double L2 = 0.0009252 * Math.pow(inputVolumeFractionLiquid, -2.4684); + double L3 = 0.1 * Math.pow(inputVolumeFractionLiquid, -1.4516); + double L4 = 0.5 * Math.pow(inputVolumeFractionLiquid, -6.738); + + if (regime != "Single Phase") { + if ((inputVolumeFractionLiquid < 0.01 && mixtureFroudeNumber < L1) + || (inputVolumeFractionLiquid >= 0.01 && mixtureFroudeNumber < L2)) { + regime = "SEGREGATED"; + } else if ((inputVolumeFractionLiquid < 0.4 && inputVolumeFractionLiquid >= 0.01 + && mixtureFroudeNumber <= L1 && mixtureFroudeNumber > L3) + || (inputVolumeFractionLiquid >= 0.4 && mixtureFroudeNumber <= L4 + && mixtureFroudeNumber > L3)) { + regime = "INTERMITTENT"; + } else if ((inputVolumeFractionLiquid < 0.4 && mixtureFroudeNumber >= L4) + || (inputVolumeFractionLiquid >= 0.4 && mixtureFroudeNumber > L4)) { + regime = "DISTRIBUTED"; + } else if (mixtureFroudeNumber > L2 && mixtureFroudeNumber < L3) { + regime = "TRANSITION"; + } else if (inputVolumeFractionLiquid < 0.1 || inputVolumeFractionLiquid > 0.9) { + regime = "INTERMITTENT"; + } else if (mixtureFroudeNumber > 110) { + regime = "INTERMITTENT"; + } else { + throw new RuntimeException(new neqsim.util.exception.InvalidOutputException( + "PipeBeggsAndBrills", "run: calcFlowRegime", "FlowRegime", "Flow regime is not found")); + } + } + + A = (L3 - mixtureFroudeNumber) / (L3 - L2); + + flowRegimeProfile.add(regime); + return regime; + } + + /** + *

+ * calcHydrostaticPressureDifference + *

+ * + * @return a double + */ + public double calcHydrostaticPressureDifference() { + double B = 1 - A; + + double BThetta; + + if (regime == "SEGREGATED") { + El = 0.98 * Math.pow(inputVolumeFractionLiquid, 0.4846) + / Math.pow(mixtureFroudeNumber, 0.0868); + } else if (regime == "INTERMITTENT") { + El = 0.845 * Math.pow(inputVolumeFractionLiquid, 0.5351) + / (Math.pow(mixtureFroudeNumber, 0.0173)); + } else if (regime == "DISTRIBUTED") { + El = 1.065 * Math.pow(inputVolumeFractionLiquid, 0.5824) + / (Math.pow(mixtureFroudeNumber, 0.0609)); + } else if (regime == "TRANSITION") { + El = A * 0.98 * Math.pow(inputVolumeFractionLiquid, 0.4846) + / Math.pow(mixtureFroudeNumber, 0.0868) + + B * 0.845 * Math.pow(inputVolumeFractionLiquid, 0.5351) + / (Math.pow(mixtureFroudeNumber, 0.0173)); + } else if (regime == "Single Phase") { + if (inputVolumeFractionLiquid < 0.1) { + El = inputVolumeFractionLiquid; + } else { + El = 1.0 - inputVolumeFractionLiquid; + } + } + + if (regime != "Single Phase") { + double SG; + if (system.getNumberOfPhases() == 3) { + mixtureOilMassFraction = system.getPhase(1).getFlowRate("kg/hr") + / (system.getPhase(1).getFlowRate("kg/hr") + system.getPhase(2).getFlowRate("kg/hr")); + mixtureOilVolumeFraction = system.getPhase(1).getVolume() + / (system.getPhase(1).getVolume() + system.getPhase(2).getVolume()); + + mixtureLiquidViscosity = system.getPhase(1).getViscosity("cP") * mixtureOilVolumeFraction + + (system.getPhase(2).getViscosity("cP")) * (1 - mixtureOilVolumeFraction); + + mixtureLiquidDensity = (system.getPhase(1).getDensity("lb/ft3") * mixtureOilMassFraction + + system.getPhase(2).getDensity("lb/ft3") * (1 - mixtureOilMassFraction)); + + SG = (mixtureLiquidDensity) / (1000 * 0.0624279606); + } else { + SG = system.getPhase(1).getDensity("lb/ft3") / (1000 * 0.0624279606); + } + + double APIgrav = (141.5 / (SG)) - 131.0; + double sigma68 = 39.0 - 0.2571 * APIgrav; + double sigma100 = 37.5 - 0.2571 * APIgrav; + double sigma; + + if (system.getTemperature("C") * (9.0 / 5.0) + 32.0 > 100.0) { + sigma = sigma100; + } else if (system.getTemperature("C") * (9.0 / 5.0) + 32.0 < 68.0) { + sigma = sigma68; + } else { + sigma = sigma68 + (system.getTemperature("C") * (9.0 / 5.0) + 32.0 - 68.0) + * (sigma100 - sigma68) / (100.0 - 68.0); + } + double pressureCorrection = 1.0 - 0.024 * Math.pow((system.getPressure("psi")), 0.45); + sigma = sigma * pressureCorrection; + double Nvl = 1.938 * supLiquidVel + * Math.pow(system.getPhase(1).getDensity() * 0.0624279606 / (32.2 * sigma), 0.25); + double betta = 0; + + if (elevation > 0) { + if (regime == "SEGREGATED") { + betta = (1 - inputVolumeFractionLiquid) + * Math.log(0.011 * Math.pow(Nvl, 3.539) / (Math.pow(inputVolumeFractionLiquid, 3.768) + * Math.pow(mixtureFroudeNumber, 1.614))); + } else if (regime == "INTERMITTENT") { + betta = (1 - inputVolumeFractionLiquid) + * Math.log(2.96 * Math.pow(inputVolumeFractionLiquid, 0.305) + * Math.pow(mixtureFroudeNumber, 0.0978) / (Math.pow(Nvl, 0.4473))); + } else if (regime == "DISTRIBUTED") { + betta = 0; + } + } else { + betta = (1 - inputVolumeFractionLiquid) + * Math.log(4.70 * Math.pow(Nvl, 0.1244) / (Math.pow(inputVolumeFractionLiquid, 0.3692) + * Math.pow(mixtureFroudeNumber, 0.5056))); + } + betta = (betta > 0) ? betta : 0; + BThetta = 1 + betta * (Math.sin(1.8 * angle * 0.01745329) + - (1.0 / 3.0) * Math.pow(Math.sin(1.8 * angle * 0.01745329), 3.0)); + + El = BThetta * El; + if (system.getNumberOfPhases() == 3) { + mixtureDensity = + mixtureLiquidDensity * El + system.getPhase(0).getDensity("lb/ft3") * (1 - El); + } else { + mixtureDensity = system.getPhase(1).getDensity("lb/ft3") * El + + system.getPhase(0).getDensity("lb/ft3") * (1 - El); + } + } else { + if (system.hasPhaseType("gas")) { + mixtureDensity = system.getPhase(0).getDensity("lb/ft3"); + } else { + mixtureDensity = system.getPhase(1).getDensity("lb/ft3"); + } + } + hydrostaticPressureDrop = mixtureDensity * 32.2 * elevation; // 32.2 - g + + liquidHoldupProfile.add(El); + + return hydrostaticPressureDrop; + } + + /** + *

+ * calcFrictionPressureLoss. + *

+ * + * @return a double + */ + public double calcFrictionPressureLoss() { + double S = 0; + double rhoNoSlip = 0; + double muNoSlip = 0; + + if (system.getNumberOfPhases() != 1) { + if (regime != "Single Phase") { + double y = inputVolumeFractionLiquid / (Math.pow(El, 2)); + if (1 < y && y < 1.2) { + S = Math.log(2.2 * y - 1.2); + } else { + S = Math.log(y) / (-0.0523 + 3.18 * Math.log(y) - 0.872 * Math.pow(Math.log(y), 2.0) + + 0.01853 * Math.pow(Math.log(y), 4)); + } + if (system.getNumberOfPhases() == 3) { + rhoNoSlip = mixtureLiquidDensity * inputVolumeFractionLiquid + + (system.getPhase(0).getDensity("lb/ft3")) * (1 - inputVolumeFractionLiquid); + muNoSlip = mixtureLiquidViscosity * inputVolumeFractionLiquid + + (system.getPhase(0).getViscosity("cP")) * (1 - inputVolumeFractionLiquid); + liquidDensityProfile.add(mixtureLiquidDensity * 16.01846); + } else { + rhoNoSlip = (system.getPhase(1).getDensity("lb/ft3")) * inputVolumeFractionLiquid + + (system.getPhase(0).getDensity("lb/ft3")) * (1 - inputVolumeFractionLiquid); + muNoSlip = system.getPhase(1).getViscosity("cP") * inputVolumeFractionLiquid + + (system.getPhase(0).getViscosity("cP")) * (1 - inputVolumeFractionLiquid); + liquidDensityProfile.add((system.getPhase(1).getDensity("lb/ft3")) * 16.01846); + } + } else { + rhoNoSlip = (system.getPhase(1).getDensity("lb/ft3")) * inputVolumeFractionLiquid + + (system.getPhase(0).getDensity("lb/ft3")) * (1 - inputVolumeFractionLiquid); + muNoSlip = system.getPhase(1).getViscosity("cP") * inputVolumeFractionLiquid + + (system.getPhase(0).getViscosity("cP")) * (1 - inputVolumeFractionLiquid); + liquidDensityProfile.add((system.getPhase(1).getDensity("lb/ft3")) * 16.01846); + } + } else { + if (system.hasPhaseType("gas")) { + rhoNoSlip = (system.getPhase(0).getDensity("lb/ft3")); + muNoSlip = (system.getPhase(0).getViscosity("cP")); + liquidDensityProfile.add(0.0); + } else { + rhoNoSlip = (system.getPhase(1).getDensity("lb/ft3")); + muNoSlip = (system.getPhase(1).getViscosity("cP")); + liquidDensityProfile.add(rhoNoSlip * 16.01846); + } + } + + mixtureViscosityProfile.add(muNoSlip); + mixtureDensityProfile.add(rhoNoSlip * 16.01846); + + double ReNoSlip = + rhoNoSlip * supMixVel * insideDiameter * (16 / (3.28 * 3.28)) / (0.001 * muNoSlip); + + mixtureReynoldsNumber.add(ReNoSlip); + + double E = pipeWallRoughness / insideDiameter; + + // Haaland equation + double frictionFactor = Math.pow(1 / (-1.8 * Math.log10((E / 3.7) + (6.9 / ReNoSlip))), 2); + double frictionTwoPhase = frictionFactor * Math.exp(S); + + frictionPressureLoss = + frictionTwoPhase * Math.pow(supMixVel, 2) * rhoNoSlip * (length) / (2 * insideDiameter); + return frictionPressureLoss; + } + + /** + *

+ * calcPressureDrop. + *

+ * + * @return a double + */ + public double calcPressureDrop() { + convertSystemUnitToImperial(); + regime = "unknown"; + calcFlowRegime(); + hydrostaticPressureDrop = calcHydrostaticPressureDifference(); + frictionPressureLoss = calcFrictionPressureLoss(); + pressureDrop = (hydrostaticPressureDrop + frictionPressureLoss); + convertSystemUnitToMetric(); + iteration = iteration + 1; + return pressureDrop; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + iteration = 0; + + pressureProfile = new ArrayList<>(); + temperatureProfile = new ArrayList<>(); + + pressureDropProfile = new ArrayList<>(); + flowRegimeProfile = new ArrayList<>(); + + liquidSuperficialVelocityProfile = new ArrayList<>(); + gasSuperficialVelocityProfile = new ArrayList<>(); + mixtureSuperficialVelocityProfile = new ArrayList<>(); + + mixtureViscosityProfile = new ArrayList<>(); + mixtureDensityProfile = new ArrayList<>(); + liquidDensityProfile = new ArrayList<>(); + liquidHoldupProfile = new ArrayList<>(); + mixtureReynoldsNumber = new ArrayList<>(); + + lengthProfile = new ArrayList<>(); + elevationProfile = new ArrayList<>(); + incrementsProfile = new ArrayList<>(); + + calculateMissingValue(); + double enthalpyInlet = Double.NaN; + length = totalLength / numberOfIncrements; + elevation = totalElevation / numberOfIncrements; + system = inStream.getThermoSystem().clone(); + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + system.initProperties(); + + if (!runIsothermal) { + enthalpyInlet = system.getEnthalpy(); + } + double pipeInletPressure = system.getPressure(); + cumulativeLength = 0.0; + cumulativeElevation = 0.0; + pressureProfile.add(system.getPressure()); // pressure at segment 0 + temperatureProfile.add(system.getTemperature()); // temperature at segment 0 + pressureDropProfile.add(0.0); // DP at segment 0 + for (int i = 1; i <= numberOfIncrements; i++) { + lengthProfile.add(cumulativeLength); + elevationProfile.add(cumulativeElevation); + incrementsProfile.add(i - 1); + + cumulativeLength += length; + cumulativeElevation += elevation; + + inletPressure = system.getPressure(); + pressureDrop = calcPressureDrop(); + pressureDropProfile.add(pressureDrop); + pressureOut = inletPressure - pressureDrop; + pressureProfile.add(pressureOut); + if (pressureOut < 0) { + throw new RuntimeException(new neqsim.util.exception.InvalidOutputException( + "PipeBeggsAndBrills", "run: calcOutletPressure", "pressure out", + "- Outlet pressure is negative" + pressureOut)); + } + + system.setPressure(pressureOut); + if (!runIsothermal) { + testOps.PHflash(enthalpyInlet); + } else { + testOps.TPflash(); + } + system.initProperties(); + temperatureProfile.add(system.getTemperature()); + } + totalPressureDrop = pipeInletPressure - system.getPressure(); + calcPressureDrop(); // to initialize final parameters + lengthProfile.add(cumulativeLength); + elevationProfile.add(cumulativeElevation); + incrementsProfile.add(getNumberOfIncrements()); + + outStream.setThermoSystem(system); + outStream.setCalculationIdentifier(id); + } + + /** + * {@inheritDoc} + * + *

+ * runTransient. + *

+ */ + @Override + public void runTransient(double dt, UUID id) { + run(id); + increaseTime(dt); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + system.display(); + } + + /** + *

+ * getInletSuperficialVelocity. + *

+ * + * @return a double + */ + public double getInletSuperficialVelocity() { + return getInletStream().getThermoSystem().getFlowRate("kg/sec") + / getInletStream().getThermoSystem().getDensity("kg/m3") + / (Math.PI / 4.0 * Math.pow(insideDiameter, 2.0)); + } + + /** + *

+ * getOutletSuperficialVelocity. + *

+ * + * @return a double + */ + public double getOutletSuperficialVelocity() { + return getSegmentMixtureSuperficialVelocity(numberOfIncrements); + } + + /** + *

+ * getNumberOfIncrements + *

+ * + * @return a double + */ + public int getNumberOfIncrements() { + return numberOfIncrements; + } + + /** + *

+ * Getter for the field angle. + *

+ * + * @return angle in degrees + */ + public double getAngle() { + return angle; + } + + /** + *

+ * Getter for the field length. + *

+ * + * @return total length of the pipe in m + */ + public double getLength() { + return cumulativeLength; + } + + /** + *

+ * Getter for the field elevation. + *

+ * + * @return total elevation of the pipe in m + */ + public double getElevation() { + return cumulativeElevation; + } + + /** + *

+ * getDiameter. + *

+ * + * @return the diameter + */ + public double getDiameter() { + return insideDiameter; + } + + /** + *

+ * getFlowRegime. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getFlowRegime() { + return regime; + } + + /** + *

+ * Getter for the field LastSegmentPressureDrop. + *

+ * + * @return pressure drop last segment + */ + public double getLastSegmentPressureDrop() { + return pressureDrop; + } + + /** + *

+ * Getter for the field totalPressureDrop. + *

+ * + * @return total pressure drop + */ + public double getPressureDrop() { + return totalPressureDrop; + } + + /** + *

+ * Getter for the field PressureProfile. + *

+ * + * @return a list double + */ + public List getPressureProfile() { + return new ArrayList<>(pressureProfile); + } + + /** + *

+ * getSegmentPressure + *

+ * + * @param index segment number + * @return segment pressure as double + */ + public Double getSegmentPressure(int index) { + if (index >= 0 && index < pressureProfile.size()) { + return pressureProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + * Get Pressure + * + * @return ArrayList of pressure drop profile + */ + public List getPressureDropProfile() { + return new ArrayList<>(pressureDropProfile); + } + + /** + *

+ * getSegmentPressureDrop. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentPressureDrop(int index) { + if (index >= 0 && index < pressureDropProfile.size()) { + return pressureDropProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + *

+ * Getter for the field temperatureProfile. + *

+ * + * @return list of temperatures + */ + public List getTemperatureProfile() { + return new ArrayList<>(temperatureProfile); + } + + /** + *

+ * getSegmentTemperature. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentTemperature(int index) { + if (index >= 0 && index < temperatureProfile.size()) { + return temperatureProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + *

+ * Getter for the field flowRegimeProfile. + *

+ * + * @return list of flow regime names + */ + public List getFlowRegimeProfile() { + return new ArrayList<>(flowRegimeProfile); + } + + /** + *

+ * getSegmentFlowRegime. + *

+ * + * @param index segment number + * @return String + */ + public String getSegmentFlowRegime(int index) { + if (index >= 0 && index < flowRegimeProfile.size()) { + return flowRegimeProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + *

+ * Getter for the field liquidSuperficialVelocityProfile. + *

+ * + * @return list of liquid superficial velocity profile + */ + public List getLiquidSuperficialVelocityProfile() { + return new ArrayList<>(liquidSuperficialVelocityProfile); + } + + /** + *

+ * Getter for the field gasSuperficialVelocityProfile. + *

+ * + * @return list of gas superficial velocities + */ + public List getGasSuperficialVelocityProfile() { + return new ArrayList<>(gasSuperficialVelocityProfile); + } + + /** + *

+ * Getter for the field mixtureSuperficialVelocityProfile. + *

+ * + * @return list of mixture superficial velocity profile + */ + public List getMixtureSuperficialVelocityProfile() { + return new ArrayList<>(mixtureSuperficialVelocityProfile); + } + + /** + *

+ * Getter for the field mixtureViscosityProfile. + *

+ * + * @return list of mixture viscosity + */ + public List getMixtureViscosityProfile() { + return new ArrayList<>(mixtureViscosityProfile); + } + + /** + *

+ * Getter for the field mixtureDensityProfile. + *

+ * + * @return list of density profile + */ + public List getMixtureDensityProfile() { + return new ArrayList<>(mixtureDensityProfile); + } + + + /** + *

+ * Getter for the field liquidDensityProfile. + *

+ * + * @return a {@link java.util.List} object + */ + public List getLiquidDensityProfile() { + return new ArrayList<>(liquidDensityProfile); + } + + + /** + *

+ * Getter for the field liquidHoldupProfile. + *

+ * + * @return list of hold-up + */ + public List getLiquidHoldupProfile() { + return new ArrayList<>(liquidHoldupProfile); + } + + /** + *

+ * Getter for the field mixtureReynoldsNumber. + *

+ * + * @return list of reynold numbers + */ + public List getMixtureReynoldsNumber() { + return new ArrayList<>(mixtureReynoldsNumber); + } + + /** + *

+ * Getter for the field lengthProfile. + *

+ * + * @return list of length profile + */ + public List getLengthProfile() { + return new ArrayList<>(lengthProfile); + } + + /** + *

+ * Getter for the field incrementsProfile. + *

+ * + * @return list of increments profile + */ + public List getIncrementsProfile() { + return new ArrayList<>(incrementsProfile); + } + + /** + *

+ * Getter for the field elevationProfile. + *

+ * + * @return list of elevation profile + */ + public List getElevationProfile() { + return new ArrayList<>(elevationProfile); + } + + /** + *

+ * getSegmentLiquidSuperficialVelocity. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentLiquidSuperficialVelocity(int index) { + if (index >= 0 && index <= liquidSuperficialVelocityProfile.size()) { + return liquidSuperficialVelocityProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + *

+ * getSegmentGasSuperficialVelocity. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentGasSuperficialVelocity(int index) { + if (index >= 0 && index <= gasSuperficialVelocityProfile.size()) { + return gasSuperficialVelocityProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + *

+ * getSegmentMixtureSuperficialVelocity. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentMixtureSuperficialVelocity(int index) { + if (index >= 0 && index <= mixtureSuperficialVelocityProfile.size()) { + return mixtureSuperficialVelocityProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + *

+ * getSegmentMixtureViscosity. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentMixtureViscosity(int index) { + if (index >= 0 && index <= mixtureViscosityProfile.size()) { + return mixtureViscosityProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + *

+ * getSegmentMixtureDensity. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentMixtureDensity(int index) { + if (index >= 0 && index <= mixtureDensityProfile.size()) { + return mixtureDensityProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + + /** + *

+ * getSegmentLiquidDensity. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentLiquidDensity(int index) { + if (index >= 0 && index <= liquidDensityProfile.size()) { + return liquidDensityProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + + /** + *

+ * getSegmentLiquidHoldup. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentLiquidHoldup(int index) { + if (index >= 0 && index <= liquidHoldupProfile.size()) { + return liquidHoldupProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + *

+ * getSegmentMixtureReynoldsNumber. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentMixtureReynoldsNumber(int index) { + if (index >= 0 && index <= mixtureReynoldsNumber.size()) { + return mixtureReynoldsNumber.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + *

+ * getSegmentLength. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentLength(int index) { + if (index >= 0 && index <= lengthProfile.size()) { + return lengthProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } + + /** + *

+ * getSegmentElevation. + *

+ * + * @param index segment number + * @return Double + */ + public Double getSegmentElevation(int index) { + if (index >= 0 && index <= elevationProfile.size()) { + return elevationProfile.get(index); + } else { + throw new IndexOutOfBoundsException("Index is out of bounds."); + } + } +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/PipeLineInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/PipeLineInterface.java index cb3eb61373..5072ae3ee8 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/PipeLineInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/PipeLineInterface.java @@ -3,6 +3,7 @@ * * Created on 21. august 2001, 20:44 */ + package neqsim.processSimulation.processEquipment.pipeline; import neqsim.fluidMechanics.flowSystem.FlowSystemInterface; @@ -18,93 +19,93 @@ * @version $Id: $Id */ public interface PipeLineInterface extends SimulationInterface, TwoPortInterface { - /** - *

- * setNumberOfLegs. - *

- * - * @param number a int - */ - public void setNumberOfLegs(int number); + /** + *

+ * setNumberOfLegs. + *

+ * + * @param number a int + */ + public void setNumberOfLegs(int number); - /** - *

- * setHeightProfile. - *

- * - * @param heights an array of {@link double} objects - */ - public void setHeightProfile(double[] heights); + /** + *

+ * setHeightProfile. + *

+ * + * @param heights an array of type double + */ + public void setHeightProfile(double[] heights); - /** - *

- * setLegPositions. - *

- * - * @param positions an array of {@link double} objects - */ - public void setLegPositions(double[] positions); + /** + *

+ * setLegPositions. + *

+ * + * @param positions an array of type double + */ + public void setLegPositions(double[] positions); - /** - *

- * setPipeDiameters. - *

- * - * @param diameter an array of {@link double} objects - */ - public void setPipeDiameters(double[] diameter); + /** + *

+ * setPipeDiameters. + *

+ * + * @param diameter an array of type double + */ + public void setPipeDiameters(double[] diameter); - /** - *

- * setPipeWallRoughness. - *

- * - * @param rough an array of {@link double} objects - */ - public void setPipeWallRoughness(double[] rough); + /** + *

+ * setPipeWallRoughness. + *

+ * + * @param rough an array of type double + */ + public void setPipeWallRoughness(double[] rough); - /** - *

- * setOuterTemperatures. - *

- * - * @param outerTemp an array of {@link double} objects - */ - public void setOuterTemperatures(double[] outerTemp); + /** + *

+ * setOuterTemperatures. + *

+ * + * @param outerTemp an array of type double + */ + public void setOuterTemperatures(double[] outerTemp); - /** - *

- * setNumberOfNodesInLeg. - *

- * - * @param number a int - */ - public void setNumberOfNodesInLeg(int number); + /** + *

+ * setNumberOfNodesInLeg. + *

+ * + * @param number a int + */ + public void setNumberOfNodesInLeg(int number); - /** - *

- * setOutputFileName. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setOutputFileName(String name); + /** + *

+ * setOutputFileName. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setOutputFileName(String name); - /** - *

- * setInitialFlowPattern. - *

- * - * @param flowPattern a {@link java.lang.String} object - */ - public void setInitialFlowPattern(String flowPattern); + /** + *

+ * setInitialFlowPattern. + *

+ * + * @param flowPattern a {@link java.lang.String} object + */ + public void setInitialFlowPattern(String flowPattern); - /** - *

- * getPipe. - *

- * - * @return a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object - */ - public FlowSystemInterface getPipe(); + /** + *

+ * getPipe. + *

+ * + * @return a {@link neqsim.fluidMechanics.flowSystem.FlowSystemInterface} object + */ + public FlowSystemInterface getPipe(); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/Pipeline.java b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/Pipeline.java index 4b2ab5766a..f54a8bb6b8 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/Pipeline.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/Pipeline.java @@ -3,8 +3,12 @@ * * Created on 14. mars 2001, 22:30 */ + package neqsim.processSimulation.processEquipment.pipeline; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.fluidMechanics.flowSystem.FlowSystemInterface; import neqsim.fluidMechanics.geometryDefinitions.GeometryDefinitionInterface; import neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData; @@ -22,320 +26,329 @@ * @version $Id: $Id */ public class Pipeline extends TwoPortEquipment implements PipeLineInterface { - private static final long serialVersionUID = 1000; - - protected String fileName = "c:/test5.nc"; - protected FlowSystemInterface pipe; - protected SystemInterface system; - String flowPattern = "stratified"; - double[] times; - boolean equilibriumHeatTransfer = true, equilibriumMassTransfer = false; - // default variables - int numberOfLegs = 1, numberOfNodesInLeg = 30; - double[] legHeights = {0, 0};// ,0,0,0}; - double[] legPositions = {0.0, 1.0};// 10.0,20.0,30.0,40.0}; - double[] pipeDiameters = {0.1507588, 0.1507588};// , 1.207588, 1.207588, 1.207588}; - double[] outerTemperature = {278.0, 278.0};// , 278.0, 278.0, 278.0}; - double[] pipeWallRoughness = {1e-5, 1e-5};// , 1e-5, 1e-5, 1e-5}; - double[] outerHeatTransferCoeffs = {1e-5, 1e-5};// , 1e-5, 1e-5, 1e-5}; - double[] wallHeatTransferCoeffs = {1e-5, 1e-5};// , 1e-5, 1e-5, 1e-5}; - - /** - *

- * Constructor for Pipeline. - *

- */ - @Deprecated - public Pipeline() { - this("Pipeline"); - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Pipeline.class); - /** - *

- * Constructor for Pipeline. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public Pipeline(StreamInterface inStream) { - this("Pipeline", inStream); - } + protected String fileName = "c:/test5.nc"; + protected FlowSystemInterface pipe; + protected SystemInterface system; + String flowPattern = "stratified"; + double[] times; + boolean equilibriumHeatTransfer = true; + boolean equilibriumMassTransfer = false; + int numberOfLegs = 1; + int numberOfNodesInLeg = 30; + double[] legHeights = {0, 0}; // ,0,0,0}; + double[] legPositions = {0.0, 1.0}; // 10.0,20.0,30.0,40.0}; + double[] pipeDiameters = {0.1507588, 0.1507588}; // , 1.207588, 1.207588, 1.207588}; + double[] outerTemperature = {278.0, 278.0}; // , 278.0, 278.0, 278.0}; + double[] pipeWallRoughness = {1e-5, 1e-5}; // , 1e-5, 1e-5, 1e-5}; + double[] outerHeatTransferCoeffs = {1e-5, 1e-5}; // , 1e-5, 1e-5, 1e-5}; + double[] wallHeatTransferCoeffs = {1e-5, 1e-5}; // , 1e-5, 1e-5, 1e-5}; - /** - *

- * Constructor for Pipeline. - *

- * - * @param name a {@link java.lang.String} object - */ - public Pipeline(String name) { - super(name); - } + PipelineMechanicalDesign pipelineMechanicalDesign = null; - /** - *

- * Constructor for Pipeline. - *

- * - * @param name a {@link java.lang.String} object - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public Pipeline(String name, StreamInterface inStream) { - super(name, inStream); - } + /** + *

+ * Constructor for Pipeline. + *

+ */ + @Deprecated + public Pipeline() { + this("Pipeline"); + } - public PipelineMechanicalDesign getMechanicalDesign() { - return new PipelineMechanicalDesign(this); - } + /** + *

+ * Constructor for Pipeline. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public Pipeline(StreamInterface inStream) { + this("Pipeline", inStream); + } - /** {@inheritDoc} */ - @Override - public void setOutputFileName(String name) { - this.fileName = name; - } + /** + *

+ * Constructor for Pipeline. + *

+ * + * @param name a {@link java.lang.String} object + */ + public Pipeline(String name) { + super(name); + } - /** {@inheritDoc} */ - @Override - public void setNumberOfLegs(int number) { - this.numberOfLegs = number; - } + /** + *

+ * Constructor for Pipeline. + *

+ * + * @param name a {@link java.lang.String} object + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public Pipeline(String name, StreamInterface inStream) { + super(name, inStream); + } - /** {@inheritDoc} */ - @Override - public void setNumberOfNodesInLeg(int number) { - this.numberOfNodesInLeg = number; - } + /** {@inheritDoc} */ + @Override + public void initMechanicalDesign() { + pipelineMechanicalDesign = new PipelineMechanicalDesign(this); + } - /** {@inheritDoc} */ - @Override - public void setHeightProfile(double[] heights) { - if (heights.length != this.numberOfLegs + 1) { - System.out.println("Wrong number of heights specified."); - System.out.println("Number of heights must be number of legs + 1 "); - System.out.println( - "Remember to specify number of legs first (default 5) - than set the leg heights (default 6)."); - return; - } - legHeights = new double[heights.length]; - System.arraycopy(heights, 0, legHeights, 0, legHeights.length); - } + /** {@inheritDoc} */ + @Override + public PipelineMechanicalDesign getMechanicalDesign() { + return pipelineMechanicalDesign; + } - /** {@inheritDoc} */ - @Override - public void setLegPositions(double[] positions) { - if (positions.length != this.numberOfLegs + 1) { - System.out.println("Wrong number of legpositions specified."); - System.out.println("Number of heights must be number of legs + 1 "); - System.out.println( - "Remember to specify number of legs first (default 5) - than set the leg heights (default 6)."); - return; - } - legPositions = new double[positions.length]; - System.arraycopy(positions, 0, legPositions, 0, legPositions.length); - } + /** {@inheritDoc} */ + @Override + public void setOutputFileName(String name) { + this.fileName = name; + } - /** {@inheritDoc} */ - @Override - public void setPipeDiameters(double[] diameter) { - if (diameter.length != this.numberOfLegs + 1) { - System.out.println("Wrong number of diameters specified."); - System.out.println("Number of diameters must be number of legs + 1 "); - System.out.println( - "Remember to specify number of legs first (default 5) - than set the leg heights (default 6)."); - return; - } - pipeDiameters = new double[diameter.length]; - System.arraycopy(diameter, 0, pipeDiameters, 0, pipeDiameters.length); - } + /** {@inheritDoc} */ + @Override + public void setNumberOfLegs(int number) { + this.numberOfLegs = number; + } - /** - *

- * setPipeOuterHeatTransferCoefficients. - *

- * - * @param heatCoefs an array of {@link double} objects - */ - public void setPipeOuterHeatTransferCoefficients(double[] heatCoefs) { - if (heatCoefs.length != this.numberOfLegs + 1) { - System.out.println("Wrong number of diameters specified."); - System.out.println("Number of diameters must be number of legs + 1 "); - System.out.println( - "Remember to specify number of legs first (default 5) - than set the leg heights (default 6)."); - return; - } - outerHeatTransferCoeffs = new double[heatCoefs.length]; - System.arraycopy(heatCoefs, 0, outerHeatTransferCoeffs, 0, outerHeatTransferCoeffs.length); - } + /** {@inheritDoc} */ + @Override + public void setNumberOfNodesInLeg(int number) { + this.numberOfNodesInLeg = number; + } - /** - *

- * setPipeWallHeatTransferCoefficients. - *

- * - * @param heatCoefs an array of {@link double} objects - */ - public void setPipeWallHeatTransferCoefficients(double[] heatCoefs) { - if (heatCoefs.length != this.numberOfLegs + 1) { - System.out.println("Wrong number of diameters specified."); - System.out.println("Number of diameters must be number of legs + 1 "); - System.out.println( - "Remember to specify number of legs first (default 5) - than set the leg heights (default 6)."); - return; - } - wallHeatTransferCoeffs = new double[heatCoefs.length]; - System.arraycopy(heatCoefs, 0, wallHeatTransferCoeffs, 0, wallHeatTransferCoeffs.length); + /** {@inheritDoc} */ + @Override + public void setHeightProfile(double[] heights) { + if (heights.length != this.numberOfLegs + 1) { + System.out.println("Wrong number of heights specified."); + System.out.println("Number of heights must be number of legs + 1 "); + return; } + legHeights = new double[heights.length]; + System.arraycopy(heights, 0, legHeights, 0, legHeights.length); + } - /** {@inheritDoc} */ - @Override - public void setPipeWallRoughness(double[] rough) { - if (rough.length != this.numberOfLegs + 1) { - System.out.println("Wrong number of roghuness points specified."); - System.out.println("Number of heights must be number of legs + 1 "); - System.out.println( - "Remember to specify number of legs first (default 5) - than set the leg heights (default 6)."); - return; - } - pipeWallRoughness = new double[rough.length]; - System.arraycopy(rough, 0, pipeWallRoughness, 0, pipeWallRoughness.length); + /** {@inheritDoc} */ + @Override + public void setLegPositions(double[] positions) { + if (positions.length != this.numberOfLegs + 1) { + System.out.println("Wrong number of legpositions specified."); + System.out.println("Number of legpositions must be number of legs + 1 "); + return; } + legPositions = new double[positions.length]; + System.arraycopy(positions, 0, legPositions, 0, legPositions.length); + } - /** {@inheritDoc} */ - @Override - public void setOuterTemperatures(double[] outerTemp) { - if (outerTemp.length != this.numberOfLegs + 1) { - System.out.println("Wrong number of outer temperature points specified."); - System.out.println("Number of heights must be number of legs + 1 "); - System.out.println( - "Remember to specify number of legs first (default 5) - than set the leg heights (default 6)."); - return; - } - outerTemperature = new double[outerTemp.length]; - System.arraycopy(outerTemp, 0, outerTemperature, 0, outerTemperature.length); + /** {@inheritDoc} */ + @Override + public void setPipeDiameters(double[] diameter) { + if (diameter.length != this.numberOfLegs + 1) { + System.out.println("Wrong number of diameters specified."); + System.out.println("Number of diameters must be number of legs + 1 "); + return; } + pipeDiameters = new double[diameter.length]; + System.arraycopy(diameter, 0, pipeDiameters, 0, pipeDiameters.length); + } - /** - *

- * Setter for the field equilibriumMassTransfer. - *

- * - * @param test a boolean - */ - public void setEquilibriumMassTransfer(boolean test) { - equilibriumMassTransfer = test; + /** + *

+ * setPipeOuterHeatTransferCoefficients. + *

+ * + * @param heatCoefs an array of type double + */ + public void setPipeOuterHeatTransferCoefficients(double[] heatCoefs) { + if (heatCoefs.length != this.numberOfLegs + 1) { + System.out.println("Wrong number of heatCoefs specified."); + System.out.println("Number of heatCoefs must be number of legs + 1 "); + return; } + outerHeatTransferCoeffs = new double[heatCoefs.length]; + System.arraycopy(heatCoefs, 0, outerHeatTransferCoeffs, 0, outerHeatTransferCoeffs.length); + } - /** - *

- * Setter for the field equilibriumHeatTransfer. - *

- * - * @param test a boolean - */ - public void setEquilibriumHeatTransfer(boolean test) { - equilibriumHeatTransfer = test; + /** + *

+ * setPipeWallHeatTransferCoefficients. + *

+ * + * @param heatCoefs an array of type double + */ + public void setPipeWallHeatTransferCoefficients(double[] heatCoefs) { + if (heatCoefs.length != this.numberOfLegs + 1) { + System.out.println("Wrong number of heatCoefs specified."); + System.out.println("Number of heatCoefs must be number of legs + 1 "); + return; } + wallHeatTransferCoeffs = new double[heatCoefs.length]; + System.arraycopy(heatCoefs, 0, wallHeatTransferCoeffs, 0, wallHeatTransferCoeffs.length); + } - /** {@inheritDoc} */ - @Override - public void run() { - system = inStream.getThermoSystem(); - GeometryDefinitionInterface[] pipeGemometry = new PipeData[numberOfLegs + 1]; - for (int i = 0; i < pipeDiameters.length; i++) { - pipeGemometry[i] = new PipeData(pipeDiameters[i], pipeWallRoughness[i]); - } - pipe.setInletThermoSystem(system); - pipe.setNumberOfLegs(numberOfLegs); - pipe.setNumberOfNodesInLeg(numberOfNodesInLeg); - pipe.setEquipmentGeometry(pipeGemometry); - pipe.setLegOuterTemperatures(outerTemperature); - pipe.setLegHeights(legHeights); - pipe.setLegOuterHeatTransferCoefficients(outerHeatTransferCoeffs); - pipe.setLegWallHeatTransferCoefficients(wallHeatTransferCoeffs); - pipe.setLegPositions(legPositions); - pipe.setInitialFlowPattern(flowPattern); - pipe.createSystem(); - pipe.setEquilibriumMassTransfer(equilibriumMassTransfer); - pipe.setEquilibriumHeatTransfer(equilibriumHeatTransfer); - pipe.init(); + /** {@inheritDoc} */ + @Override + public void setPipeWallRoughness(double[] rough) { + if (rough.length != this.numberOfLegs + 1) { + System.out.println("Wrong number of roughness points specified."); + System.out.println("Number of roughness must be number of legs + 1 "); + return; } + pipeWallRoughness = new double[rough.length]; + System.arraycopy(rough, 0, pipeWallRoughness, 0, pipeWallRoughness.length); + } - /** {@inheritDoc} */ - @Override - public void runTransient(double dt) { - pipe.solveTransient(2); - pipe.getDisplay().createNetCdfFile(fileName); + /** {@inheritDoc} */ + @Override + public void setOuterTemperatures(double[] outerTemp) { + if (outerTemp.length != this.numberOfLegs + 1) { + System.out.println("Wrong number of outer temperature points specified."); + System.out.println("Number of outer temperature must be number of legs + 1 "); + return; } + outerTemperature = new double[outerTemp.length]; + System.arraycopy(outerTemp, 0, outerTemperature, 0, outerTemperature.length); + } - /** {@inheritDoc} */ - @Override - public void displayResult() {} + /** + *

+ * Setter for the field equilibriumMassTransfer. + *

+ * + * @param test a boolean + */ + public void setEquilibriumMassTransfer(boolean test) { + equilibriumMassTransfer = test; + } - /** {@inheritDoc} */ - @Override - public FlowSystemInterface getPipe() { - return pipe; - } + /** + *

+ * Setter for the field equilibriumHeatTransfer. + *

+ * + * @param test a boolean + */ + public void setEquilibriumHeatTransfer(boolean test) { + equilibriumHeatTransfer = test; + } - /** {@inheritDoc} */ - @Override - public void setInitialFlowPattern(String flowPattern) { - this.flowPattern = flowPattern; + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + system = inStream.getThermoSystem().clone(); + GeometryDefinitionInterface[] pipeGemometry = new PipeData[numberOfLegs + 1]; + for (int i = 0; i < pipeDiameters.length; i++) { + pipeGemometry[i] = new PipeData(pipeDiameters[i], pipeWallRoughness[i]); } + pipe.setInletThermoSystem(system); + pipe.setNumberOfLegs(numberOfLegs); + pipe.setNumberOfNodesInLeg(numberOfNodesInLeg); + pipe.setEquipmentGeometry(pipeGemometry); + pipe.setLegOuterTemperatures(outerTemperature); + pipe.setLegHeights(legHeights); + pipe.setLegOuterHeatTransferCoefficients(outerHeatTransferCoeffs); + pipe.setLegWallHeatTransferCoefficients(wallHeatTransferCoeffs); + pipe.setLegPositions(legPositions); + pipe.setInitialFlowPattern(flowPattern); + pipe.createSystem(); + pipe.setEquilibriumMassTransfer(equilibriumMassTransfer); + pipe.setEquilibriumHeatTransfer(equilibriumHeatTransfer); + pipe.init(); + setCalculationIdentifier(id); + } - /** - * Getter for property times. - * - * @return Value of property times. - */ - public double[] getTimes() { - return this.times; - } + /** {@inheritDoc} */ + @Override + public void runTransient(double dt, UUID id) { + pipe.solveTransient(2, id); + } - /** - *

- * getSuperficialVelocity. - *

- * - * @param phase a int - * @param node a int - * @return a double - */ - public double getSuperficialVelocity(int phase, int node) { - try { - return outStream.getThermoSystem().getPhase(phase).getNumberOfMolesInPhase() - * outStream.getThermoSystem().getPhase(phase).getMolarMass() - / outStream.getThermoSystem().getPhase(phase).getPhysicalProperties() - .getDensity() - / (3.14 * pipeDiameters[node] * pipeDiameters[node] / 4.0); - } catch (Exception e) { - e.printStackTrace(); - } finally { - } - return 0.0; - } + /** {@inheritDoc} */ + @Override + public void displayResult() {} - /** - * Setter for property times. - * - * @param times New value of property times. - * @param systems an array of {@link neqsim.thermo.system.SystemInterface} objects - * @param timestepininterval a int - */ - public void setTimeSeries(double[] times, SystemInterface[] systems, int timestepininterval) { - this.times = times; - pipe.getTimeSeries().setTimes(times); - pipe.getTimeSeries().setInletThermoSystems(systems); - pipe.getTimeSeries().setNumberOfTimeStepsInInterval(timestepininterval); - } + /** {@inheritDoc} */ + @Override + public FlowSystemInterface getPipe() { + return pipe; + } - /** {@inheritDoc} */ - @Override - public double getEntropyProduction(String unit) { - return outStream.getThermoSystem().getEntropy(unit) - - inStream.getThermoSystem().getEntropy(unit); + /** {@inheritDoc} */ + @Override + public void setInitialFlowPattern(String flowPattern) { + this.flowPattern = flowPattern; + } + + /** + * Getter for property times. + * + * @return Value of property times. + */ + public double[] getTimes() { + return this.times; + } + + /** + *

+ * getSuperficialVelocity. + *

+ * + * @param phase a int + * @param node a int + * @return a double + */ + public double getSuperficialVelocity(int phase, int node) { + try { + return outStream.getThermoSystem().getPhase(phase).getNumberOfMolesInPhase() + * outStream.getThermoSystem().getPhase(phase).getMolarMass() + / outStream.getThermoSystem().getPhase(phase).getPhysicalProperties().getDensity() + / (3.14 * pipeDiameters[node] * pipeDiameters[node] / 4.0); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } finally { } + return 0.0; + } + + /** + * Setter for property times. + * + * @param times New value of property times. + * @param systems an array of {@link neqsim.thermo.system.SystemInterface} objects + * @param timestepininterval a int + */ + public void setTimeSeries(double[] times, SystemInterface[] systems, int timestepininterval) { + this.times = times; + pipe.getTimeSeries().setTimes(times); + pipe.getTimeSeries().setInletThermoSystems(systems); + pipe.getTimeSeries().setNumberOfTimeStepsInInterval(timestepininterval); + } + + /** {@inheritDoc} */ + @Override + public double getEntropyProduction(String unit) { + return outStream.getThermoSystem().getEntropy(unit) + - inStream.getThermoSystem().getEntropy(unit); + } + + /** + *

+ * getOutletPressure. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getOutletPressure(String unit) { + return outStream.getPressure(unit); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/SimpleTPoutPipeline.java b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/SimpleTPoutPipeline.java index 4101358aeb..56700b0527 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/SimpleTPoutPipeline.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/SimpleTPoutPipeline.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.pipeline; +import java.util.UUID; import neqsim.fluidMechanics.flowSystem.FlowSystemInterface; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -13,104 +14,105 @@ * @version $Id: $Id */ public class SimpleTPoutPipeline extends Pipeline { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - boolean setTemperature = false; - protected double temperatureOut = 0, pressureOut = 0.0; - double dH = 0.0; + boolean setTemperature = false; + protected double temperatureOut = 0, pressureOut = 0.0; + double dH = 0.0; - /** - *

- * Constructor for SimpleTPoutPipeline. - *

- */ - @Deprecated - public SimpleTPoutPipeline() {} + /** + *

+ * Constructor for SimpleTPoutPipeline. + *

+ */ + @Deprecated + public SimpleTPoutPipeline() {} - /** - *

- * Constructor for SimpleTPoutPipeline. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public SimpleTPoutPipeline(StreamInterface inStream) { - this("SimpleTPoutPipeline", inStream); - } + /** + *

+ * Constructor for SimpleTPoutPipeline. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public SimpleTPoutPipeline(StreamInterface inStream) { + this("SimpleTPoutPipeline", inStream); + } - /** - * Constructor for SimpleTPoutPipeline. - * - * @param name name of pipeline - */ - public SimpleTPoutPipeline(String name) { - super(name); - } + /** + * Constructor for SimpleTPoutPipeline. + * + * @param name name of pipeline + */ + public SimpleTPoutPipeline(String name) { + super(name); + } - /** - * Constructor for SimpleTPoutPipeline. - * - * @param name name of pipeline - * @param inStream the inlet stream - */ - public SimpleTPoutPipeline(String name, StreamInterface inStream) { - super(name, inStream); - } + /** + * Constructor for SimpleTPoutPipeline. + * + * @param name name of pipeline + * @param inStream the inlet stream + */ + public SimpleTPoutPipeline(String name, StreamInterface inStream) { + super(name, inStream); + } - /** - *

- * setOutTemperature. - *

- * - * @param temperature a double - */ - public void setOutTemperature(double temperature) { - this.temperatureOut = temperature; - } + /** + *

+ * setOutTemperature. + *

+ * + * @param temperature a double + */ + public void setOutTemperature(double temperature) { + this.temperatureOut = temperature; + } - /** - *

- * setOutPressure. - *

- * - * @param pressure a double - */ - public void setOutPressure(double pressure) { - this.pressureOut = pressure; - } + /** + *

+ * setOutPressure. + *

+ * + * @param pressure a double + */ + public void setOutPressure(double pressure) { + this.pressureOut = pressure; + } - /** {@inheritDoc} */ - @Override - public void run() { - system = inStream.getThermoSystem().clone(); - // system.setMultiPhaseCheck(true); - system.setTemperature(this.temperatureOut); - system.setPressure(this.pressureOut); - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - testOps.TPflash(); - // system.setMultiPhaseCheck(false); - outStream.setThermoSystem(system); - } + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + system = inStream.getThermoSystem().clone(); + // system.setMultiPhaseCheck(true); + system.setTemperature(this.temperatureOut); + system.setPressure(this.pressureOut); + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + testOps.TPflash(); + // system.setMultiPhaseCheck(false); + outStream.setThermoSystem(system); + setCalculationIdentifier(id); + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - outStream.getThermoSystem().display(name); - outStream.getThermoSystem().initPhysicalProperties(); - System.out.println("Superficial velocity out gas : " + getSuperficialVelocity(0, 1)); - System.out.println("Superficial velocity out condensate : " + getSuperficialVelocity(1, 1)); - System.out.println("Superficial velocity out MEG/water : " + getSuperficialVelocity(2, 1)); - } + /** {@inheritDoc} */ + @Override + public void displayResult() { + outStream.getThermoSystem().display(name); + outStream.getThermoSystem().initPhysicalProperties(); + System.out.println("Superficial velocity out gas : " + getSuperficialVelocity(0, 1)); + System.out.println("Superficial velocity out condensate : " + getSuperficialVelocity(1, 1)); + System.out.println("Superficial velocity out MEG/water : " + getSuperficialVelocity(2, 1)); + } - /** {@inheritDoc} */ - @Override - public FlowSystemInterface getPipe() { - return null; - } + /** {@inheritDoc} */ + @Override + public FlowSystemInterface getPipe() { + return null; + } - /** {@inheritDoc} */ - @Override - public void setInitialFlowPattern(String flowPattern) {} + /** {@inheritDoc} */ + @Override + public void setInitialFlowPattern(String flowPattern) {} } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/TwoPhasePipeLine.java b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/TwoPhasePipeLine.java index 6f4602c9fc..97905983eb 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pipeline/TwoPhasePipeLine.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pipeline/TwoPhasePipeLine.java @@ -3,8 +3,10 @@ * * Created on 21. august 2001, 20:45 */ + package neqsim.processSimulation.processEquipment.pipeline; +import java.util.UUID; import neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.twoPhasePipeFlowSystem.TwoPhasePipeFlowSystem; import neqsim.processSimulation.processEquipment.stream.StreamInterface; @@ -17,65 +19,67 @@ * @version $Id: $Id */ public class TwoPhasePipeLine extends Pipeline { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for TwoPhasePipeLine. - *

- */ - @Deprecated - public TwoPhasePipeLine() { - this("TwoPhasePipeLine"); - } + /** + *

+ * Constructor for TwoPhasePipeLine. + *

+ */ + @Deprecated + public TwoPhasePipeLine() { + this("TwoPhasePipeLine"); + } - /** - *

- * Constructor for TwoPhasePipeLine. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - @Deprecated - public TwoPhasePipeLine(StreamInterface inStream) { - this("TwoPhasePipeLine", inStream); - } + /** + *

+ * Constructor for TwoPhasePipeLine. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + @Deprecated + public TwoPhasePipeLine(StreamInterface inStream) { + this("TwoPhasePipeLine", inStream); + } - /** - * Constructor for TwoPhasePipeLine. - * - * @param name name of pipeline - */ - public TwoPhasePipeLine(String name) { - super(name); - } + /** + * Constructor for TwoPhasePipeLine. + * + * @param name name of pipeline + */ + public TwoPhasePipeLine(String name) { + super(name); + } - /** - *

- * Constructor for TwoPhasePipeLine. - *

- * - * @param name a {@link java.lang.String} object - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public TwoPhasePipeLine(String name, StreamInterface inStream) { - super(name, inStream); - pipe = new TwoPhasePipeFlowSystem(); - } + /** + *

+ * Constructor for TwoPhasePipeLine. + *

+ * + * @param name a {@link java.lang.String} object + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public TwoPhasePipeLine(String name, StreamInterface inStream) { + super(name, inStream); + pipe = new TwoPhasePipeFlowSystem(); + } - /** - *

- * createSystem. - *

- */ - public void createSystem() {} + /** + *

+ * createSystem. + *

+ */ + public void createSystem() {} - /** {@inheritDoc} */ - @Override - public void run() { - super.run(); - pipe.solveSteadyState(2); - pipe.print(); - pipe.getDisplay().createNetCdfFile(fileName); - } + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + UUID oldid = getCalculationIdentifier(); + super.run(id); + setCalculationIdentifier(oldid); + pipe.solveSteadyState(2, id); + setCalculationIdentifier(id); + pipe.print(); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/powerGeneration/GasTurbine.java b/src/main/java/neqsim/processSimulation/processEquipment/powerGeneration/GasTurbine.java index 6990602866..5b209cf8e9 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/powerGeneration/GasTurbine.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/powerGeneration/GasTurbine.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.powerGeneration; +import java.util.UUID; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.processSimulation.mechanicalDesign.compressor.CompressorMechanicalDesign; @@ -10,6 +11,7 @@ import neqsim.processSimulation.processEquipment.heatExchanger.Heater; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; /** @@ -44,14 +46,21 @@ public GasTurbine() { this("GasTurbine"); } + /** + *

+ * Constructor for GasTurbine. + *

+ * + * @param name a {@link java.lang.String} object + */ public GasTurbine(String name) { super(name); // needs to be changed to gas tubing mechanical design - SystemInterface airThermoSystem = neqsim.thermo.Fluid.create("combustion air"); + SystemInterface airThermoSystem = new neqsim.thermo.Fluid().create("combustion air"); airThermoSystem.createDatabase(true); // airThermoSystem.display(); airStream = new Stream("airStream", airThermoSystem); - airStream.setPressure(1.01325); + airStream.setPressure(ThermodynamicConstantsInterface.referencePressure); airStream.setTemperature(288.15, "K"); airCompressor = new Compressor("airCompressor", airStream); } @@ -83,6 +92,8 @@ public GasTurbine(String name, StreamInterface inletStream) { super(name, inletStream); } + /** {@inheritDoc} */ + @Override public CompressorMechanicalDesign getMechanicalDesign() { return new CompressorMechanicalDesign(this); } @@ -110,69 +121,113 @@ public double getPower() { } /** + * {@inheritDoc} + * *

* Setter for the field inletStream. *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object */ + @Override public void setInletStream(StreamInterface inletStream) { this.inStream = inletStream; try { this.outStream = inletStream.clone(); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } /** {@inheritDoc} */ @Override - public void run() { - double heatOfCombustion = inStream.LCV() * inStream.getFlowRate("mole/sec"); + public void run(UUID id) { thermoSystem = inStream.getThermoSystem().clone(); airStream.setFlowRate(thermoSystem.getFlowRate("mole/sec") * airGasRatio, "mole/sec"); - airStream.setPressure(1.01325); - airStream.run(); + airStream.setPressure(ThermodynamicConstantsInterface.referencePressure); + airStream.run(id); airCompressor.setInletStream(airStream); airCompressor.setOutletPressure(combustionpressure); - airCompressor.run(); + airCompressor.run(id); compressorPower = airCompressor.getPower(); StreamInterface outStreamAir = airCompressor.getOutletStream().clone(); outStreamAir.getFluid().addFluid(thermoSystem); // outStreamAir.getFluid().setTemperature(800.0); // outStreamAir.getFluid().createDatabase(true); - double moleMethane = outStreamAir.getFluid().getComponent("methane").getNumberOfmoles(); - // double moleEthane = outStreamAir.getFluid().getComponent("ethane").getNumberOfmoles(); - // double molePropane = outStreamAir.getFluid().getComponent("propane").getNumberOfmoles(); - outStreamAir.run(); + outStreamAir.run(id); + + double heatOfCombustion = inStream.LCV() * inStream.getFlowRate("mole/sec"); Heater locHeater = new Heater("locHeater", outStreamAir); locHeater.setEnergyInput(heatOfCombustion); - locHeater.run(); + locHeater.run(id); + double moleMethane = outStreamAir.getFluid().getComponent("methane").getNumberOfmoles(); + // double moleEthane = + // outStreamAir.getFluid().getComponent("ethane").getNumberOfmoles(); + // double molePropane = + // outStreamAir.getFluid().getComponent("propane").getNumberOfmoles(); locHeater.getOutletStream().getFluid().addComponent("CO2", moleMethane); locHeater.getOutletStream().getFluid().addComponent("water", moleMethane * 2.0); locHeater.getOutletStream().getFluid().addComponent("methane", -moleMethane); locHeater.getOutletStream().getFluid().addComponent("oxygen", -moleMethane * 2.0); - // todo: Init fails because there is less than moleMethane of oxygen + // TODO: Init fails because there is less than moleMethane of oxygen locHeater.getOutletStream().getFluid().init(3); - // locHeater.getOutStream().run(); + // locHeater.getOutStream().run(id); locHeater.displayResult(); Expander expander = new Expander("expander", locHeater.getOutletStream()); - expander.setOutletPressure(1.01325); - expander.run(); + expander.setOutletPressure(ThermodynamicConstantsInterface.referencePressure); + expander.run(id); Cooler cooler1 = new Cooler("cooler1", expander.getOutletStream()); cooler1.setOutTemperature(288.15); - cooler1.run(); + cooler1.run(id); expanderPower = expander.getPower(); power = expanderPower - compressorPower; this.heat = cooler1.getDuty(); + setCalculationIdentifier(id); + } + + /** + *

+ * Calculates ideal air fuel ratio [kg air/kg fuel]. + *

+ * + * @return ideal air fuel ratio [kg air/kg fuel] + */ + public double calcIdealAirFuelRatio() { + thermoSystem = inStream.getThermoSystem().clone(); + double elementsH = 0.0; + double elementsC = 0.0; + double sumHC = 0.0; + double molMassHC = 0.0; + double wtFracHC = 0.0; + for (int i = 0; i < thermoSystem.getNumberOfComponents(); i++) { + if (thermoSystem.getComponent(i).isHydrocarbon()) { + sumHC += thermoSystem.getComponent(i).getz(); + molMassHC += + thermoSystem.getComponent(i).getz() * thermoSystem.getComponent(i).getMolarMass(); + elementsC += thermoSystem.getComponent(i).getz() + * thermoSystem.getComponent(i).getElements().getNumberOfElements("C"); + elementsH += thermoSystem.getComponent(i).getz() + * thermoSystem.getComponent(i).getElements().getNumberOfElements("H"); + } + } + + if (sumHC < 1e-100) { + return 0.0; + } else { + wtFracHC = molMassHC / thermoSystem.getMolarMass(); + molMassHC /= sumHC; + elementsC /= sumHC; + elementsH /= sumHC; + } + double A = elementsC + elementsH / 4; + + double AFR = A * (32.0 + 3.76 * 28.0) / 1000.0 / molMassHC * wtFracHC; + return AFR; } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pump/Pump.java b/src/main/java/neqsim/processSimulation/processEquipment/pump/Pump.java index ddf23756ec..4530db06c6 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pump/Pump.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pump/Pump.java @@ -4,12 +4,15 @@ import java.awt.FlowLayout; import java.text.DecimalFormat; import java.text.FieldPosition; +import java.util.UUID; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; +import com.google.gson.GsonBuilder; import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.util.monitor.PumpResponse; import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -65,7 +68,7 @@ public Pump(StreamInterface inletStream) { /** * Constructor for Pump. - * + * * @param name name of pump */ public Pump(String name) { @@ -153,7 +156,7 @@ public void calculateAsCompressor(boolean setPumpCalcType) { /** {@inheritDoc} */ @Override - public void run() { + public void run(UUID id) { // System.out.println("pump running.."); inStream.getThermoSystem().init(3); double hinn = inStream.getThermoSystem().getEnthalpy(); @@ -168,7 +171,7 @@ public void run() { thermoOps.TPflash(); thermoSystem.init(3); } else { - if (calculateAsCompressor) { + if (!pumpChart.isUsePumpChart() && calculateAsCompressor) { thermoSystem = inStream.getThermoSystem().clone(); thermoSystem.setPressure(pressure, pressureUnit); // System.out.println("entropy inn.." + entropy); @@ -184,6 +187,7 @@ public void run() { thermoOps = new ThermodynamicOperations(getThermoSystem()); thermoOps.PHflash(hout, 0); } else if (pumpChart.isUsePumpChart()) { + thermoSystem = inStream.getThermoSystem().clone(); double pumpHead = 0.0; pumpHead = getPumpChart().getHead(thermoSystem.getFlowRate("m3/hr"), getSpeed()); isentropicEfficiency = @@ -217,8 +221,10 @@ public void run() { // thermoOps.PSflash(entropy); dH = thermoSystem.getEnthalpy() - hinn; outStream.setThermoSystem(thermoSystem); + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); - // outStream.run(); + // outStream.run(id); } /** {@inheritDoc} */ @@ -376,10 +382,11 @@ public void setIsentropicEfficiency(double isentropicEfficiency) { * @return a double */ public double getOutTemperature() { - if (useOutTemperature) + if (useOutTemperature) { return outTemperature; - else + } else { return getThermoSystem().getTemperature(); + } } /** @@ -420,6 +427,19 @@ public void setPressure(double pressure, String unit) { pressureUnit = unit; } + /** + *

+ * Setter for the field pressure. + *

+ * + * @param pressure a double + * @param unit a {@link java.lang.String} object + */ + public void setOutletPressure(double pressure, String unit) { + setOutletPressure(pressure); + pressureUnit = unit; + } + /** *

* Setter for the field speed. @@ -452,4 +472,11 @@ public double getSpeed() { public PumpChart getPumpChart() { return pumpChart; } + + /** {@inheritDoc} */ + @Override + public String toJson() { + return new GsonBuilder().serializeSpecialFloatingPointValues().create() + .toJson(new PumpResponse(this)); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpChart.java b/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpChart.java index 70240e9028..e2a8270133 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpChart.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpChart.java @@ -20,346 +20,347 @@ * @version $Id: $Id */ public class PumpChart implements PumpChartInterface, java.io.Serializable { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(PumpChart.class); - ArrayList chartValues = new ArrayList(); - boolean isSurge = false; - double maxSpeedCurve = 0; - double minSpeedCurve = 1e10; - double refMW; - private String headUnit = "meter"; - private boolean usePumpChart = false; - double refTemperature; - double refPressure; - double referenceSpeed = 1000.0; - double refZ; - private boolean useRealKappa = false; - double[] chartConditions = null; - final WeightedObservedPoints reducedHeadFitter = new WeightedObservedPoints(); - final WeightedObservedPoints reducedFlowFitter = new WeightedObservedPoints(); - final WeightedObservedPoints fanLawCorrectionFitter = new WeightedObservedPoints(); - final WeightedObservedPoints reducedEfficiencyFitter = new WeightedObservedPoints(); - PolynomialFunction reducedHeadFitterFunc = null; - PolynomialFunction reducedEfficiencyFunc = null; - PolynomialFunction fanLawCorrectionFunc = null; - double[] speed; - double[][] flow; - double[][] head; - double[][] efficiency; - double[][] redflow; - double[][] redhead; - double[][] redEfficiency; - - /** - *

- * Constructor for PumpChart. - *

- */ - public PumpChart() {} - - /** {@inheritDoc} */ - @Override - public void addCurve(double speed, double[] flow, double[] head, double[] efficiency) { - PumpCurve curve = new PumpCurve(speed, flow, head, efficiency); - chartValues.add(curve); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PumpChart.class); + + ArrayList chartValues = new ArrayList(); + boolean isSurge = false; + double maxSpeedCurve = 0; + double minSpeedCurve = 1e10; + double refMW; + private String headUnit = "meter"; + private boolean usePumpChart = false; + double refTemperature; + double refPressure; + double referenceSpeed = 1000.0; + double refZ; + private boolean useRealKappa = false; + double[] chartConditions = null; + final WeightedObservedPoints reducedHeadFitter = new WeightedObservedPoints(); + final WeightedObservedPoints reducedFlowFitter = new WeightedObservedPoints(); + final WeightedObservedPoints fanLawCorrectionFitter = new WeightedObservedPoints(); + final WeightedObservedPoints reducedEfficiencyFitter = new WeightedObservedPoints(); + PolynomialFunction reducedHeadFitterFunc = null; + PolynomialFunction reducedEfficiencyFunc = null; + PolynomialFunction fanLawCorrectionFunc = null; + double[] speed; + double[][] flow; + double[][] head; + double[][] efficiency; + double[][] redflow; + double[][] redhead; + double[][] redEfficiency; + + /** + *

+ * Constructor for PumpChart. + *

+ */ + public PumpChart() {} + + /** {@inheritDoc} */ + @Override + public void addCurve(double speed, double[] flow, double[] head, double[] efficiency) { + PumpCurve curve = new PumpCurve(speed, flow, head, efficiency); + chartValues.add(curve); + } + + /** {@inheritDoc} */ + @Override + public void setCurves(double[] chartConditions, double[] speed, double[][] flow, double[][] head, + double[][] efficiency) { + this.speed = speed; + this.head = head; + this.efficiency = efficiency; + this.flow = flow; + + this.redhead = new double[head.length][head[0].length]; + this.redEfficiency = new double[efficiency.length][efficiency[0].length]; + this.redflow = new double[flow.length][flow[0].length]; + + for (int i = 0; i < speed.length; i++) { + if (speed[i] > maxSpeedCurve) { + maxSpeedCurve = speed[i]; + } + if (speed[i] < minSpeedCurve) { + minSpeedCurve = speed[i]; + } + PumpCurve curve = new PumpCurve(speed[i], flow[i], head[i], efficiency[i]); + chartValues.add(curve); + for (int j = 0; j < flow[i].length; j++) { + redflow[i][j] = flow[i][j] / speed[i]; + redEfficiency[i][j] = efficiency[i][j]; + redhead[i][j] = head[i][j] / speed[i] / speed[i]; + reducedHeadFitter.add(redflow[i][j], redhead[i][j]); + reducedEfficiencyFitter.add(redflow[i][j], redEfficiency[i][j]); + // TODO: MLLU: not correct. speed[0] should be the requested speed + double flowFanLaw = flow[i][j] * speed[i] / speed[0]; + fanLawCorrectionFitter.add(speed[i] / speed[0], flow[i][j] / flowFanLaw); + } } - /** {@inheritDoc} */ - @Override - public void setCurves(double[] chartConditions, double[] speed, double[][] flow, - double[][] head, double[][] efficiency) { - this.speed = speed; - this.head = head; - this.efficiency = efficiency; - this.flow = flow; - - this.redhead = new double[head.length][head[0].length]; - this.redEfficiency = new double[efficiency.length][efficiency[0].length]; - this.redflow = new double[flow.length][flow[0].length]; - - for (int i = 0; i < speed.length; i++) { - if (speed[i] > maxSpeedCurve) - maxSpeedCurve = speed[i]; - if (speed[i] < minSpeedCurve) - minSpeedCurve = speed[i]; - PumpCurve curve = new PumpCurve(speed[i], flow[i], head[i], efficiency[i]); - chartValues.add(curve); - for (int j = 0; j < flow[i].length; j++) { - redflow[i][j] = flow[i][j] / speed[i]; - redEfficiency[i][j] = efficiency[i][j]; - redhead[i][j] = head[i][j] / speed[i] / speed[i]; - reducedHeadFitter.add(redflow[i][j], redhead[i][j]); - reducedEfficiencyFitter.add(redflow[i][j], redEfficiency[i][j]); - double flowFanLaw = flow[i][j] * speed[i] / speed[0]; // MLLU: not correct. speed[0] - // should be the - // requested speed - fanLawCorrectionFitter.add(speed[i] / speed[0], flow[i][j] / flowFanLaw); - } - } - - referenceSpeed = (maxSpeedCurve + minSpeedCurve) / 2.0; - - PolynomialCurveFitter fitter = PolynomialCurveFitter.create(2); - - reducedHeadFitterFunc = new PolynomialFunction(fitter.fit(reducedHeadFitter.toList())); - reducedEfficiencyFunc = - new PolynomialFunction(fitter.fit(reducedEfficiencyFitter.toList())); - fanLawCorrectionFunc = new PolynomialFunction(fitter.fit(fanLawCorrectionFitter.toList())); - setUsePumpChart(true); - } - - /** - *

- * fitReducedCurve. - *

- */ - public void fitReducedCurve() {} - - /** {@inheritDoc} */ - @Override - public double getHead(double flow, double speed) { - return reducedHeadFitterFunc.value(flow / speed) * speed * speed; - } - - /** {@inheritDoc} */ - @Override - public double getEfficiency(double flow, double speed) { - return reducedEfficiencyFunc.value(flow / speed); - } - - /** {@inheritDoc} */ - @Override - public int getSpeed(double flow, double head) { - int iter = 1; - double error = 1.0, derrordspeed = 1.0; - double newspeed = referenceSpeed; - double newhead = 0.0; - double oldspeed = newspeed + 1.0; - double oldhead = getHead(flow, oldspeed); - double olderror = oldhead - head; - do { - iter++; - newhead = getHead(flow, newspeed); - error = newhead - head; - derrordspeed = (error - olderror) / (newspeed - oldspeed); - newspeed -= error / derrordspeed; - // System.out.println("speed " + newspeed); - } while (Math.abs(error) > 1e-6 && iter < 100); - - // change speed to minimize - // Math.abs(head - reducedHeadFitterFunc.value(flow / speed) * speed * speed); - return (int) Math.round(newspeed); - } - - /** - *

- * efficiency. - *

- * - * @param flow a double - * @param speed a double - * @return a double - */ - public double efficiency(double flow, double speed) { - return 100.0; - } - - /** - *

- * checkSurge1. - *

- * - * @param flow a double - * @param head a double - * @return a boolean - */ - public boolean checkSurge1(double flow, double head) { - return false; - } - - /** - *

- * checkSurge2. - *

- * - * @param flow a double - * @param speed a double - * @return a boolean - */ - public boolean checkSurge2(double flow, double speed) { - return false; - } - - /** - *

- * checkStoneWall. - *

- * - * @param flow a double - * @param speed a double - * @return a boolean - */ - public boolean checkStoneWall(double flow, double speed) { - return false; - } - - /** {@inheritDoc} */ - @Override - public void setReferenceConditions(double refMW, double refTemperature, double refPressure, - double refZ) { - this.refMW = refMW; - this.refTemperature = refTemperature; - this.refPressure = refPressure; - this.refZ = refZ; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testFluid = new SystemSrkEos(298.15, 50.0); - testFluid.addComponent("water", 1.0); - testFluid.setTemperature(20.0, "C"); - testFluid.setPressure(1.0, "bara"); - testFluid.setTotalFlowRate(1000.0, "kg/hr"); - - Stream stream_1 = new Stream("Stream1", testFluid); - - Pump pump1 = new Pump("pump1", stream_1); - pump1.setOutletPressure(100.0); - // comp1.getAntiSurge().setActive(true); - pump1.setSpeed(12918); - - double[] chartConditions = new double[] {0.3, 1.0, 1.0, 1.0}; - // double[] speed = new double[] { 1000.0, 2000.0, 3000.0, 4000.0 }; - // double[][] flow = new double[][] { { 453.2, 600.0, 750.0, 800.0 }, { 453.2, - // 600.0, 750.0, 800.0 - // }, { 453.2, 600.0, 750.0, 800.0 }, { 453.2, 600.0, 750.0, 800.0 } }; - // double[][] head = new double[][] { { 10000.0, 9000.0, 8000.0, 7500.0 }, { - // 10000.0, 9000.0, 8000.0, 7500.0 }, { 10000.0, 9000.0, 8000.0, 7500.0 }, { - // 10000.0, 9000.0, 8000.0, 7500.0 } }; - // double[][] polyEff = new double[][] { { - // 90.0, 91.0, 89.0, 88.0 }, { 90.0, 91.0, 89.0, 88.0 }, { 90.0, 91.0, 89.0, - // 88.1 }, { 90.0, 91.0, 89.0, 88.1 } }; - - double[] speed = new double[] {12913, 12298, 11683, 11098, 10453, 9224, 8609, 8200}; - double[][] flow = new double[][] { - {2789.1285, 3174.0375, 3689.2288, 4179.4503, 4570.2768, 4954.7728, 5246.0329, - 5661.0331}, - {2571.1753, 2943.7254, 3440.2675, 3837.4448, 4253.0898, 4668.6643, 4997.1926, - 5387.4952}, - {2415.3793, 2763.0706, 3141.7095, 3594.7436, 4047.6467, 4494.1889, 4853.7353, - 5138.7858}, - {2247.2043, 2799.7342, 3178.3428, 3656.1551, 4102.778, 4394.1591, 4648.3224, - 4840.4998}, - {2072.8397, 2463.9483, 2836.4078, 3202.5266, 3599.6333, 3978.0203, 4257.0022, - 4517.345}, - {1835.9552, 2208.455, 2618.1322, 2940.8034, 3244.7852, 3530.1279, 3753.3738, - 3895.9746}, - {1711.3386, 1965.8848, 2356.9431, 2685.9247, 3008.5154, 3337.2855, 3591.5092}, - {1636.5807, 2002.8708, 2338.0319, 2642.1245, 2896.4894, 3113.6264, 3274.8764, - 3411.2977}}; - double[][] head = new double[][] { - {80.0375, 78.8934, 76.2142, 71.8678, 67.0062, 60.6061, 53.0499, 39.728}, - {72.2122, 71.8369, 68.9009, 65.8341, 60.7167, 54.702, 47.2749, 35.7471}, - {65.1576, 64.5253, 62.6118, 59.1619, 54.0455, 47.0059, 39.195, 31.6387}, - {58.6154, 56.9627, 54.6647, 50.4462, 44.4322, 38.4144, 32.9084, 28.8109}, - {52.3295, 51.0573, 49.5283, 46.3326, 42.3685, 37.2502, 31.4884, 25.598}, - {40.6578, 39.6416, 37.6008, 34.6603, 30.9503, 27.1116, 23.2713, 20.4546}, - {35.2705, 34.6359, 32.7228, 31.0645, 27.0985, 22.7482, 18.0113}, - {32.192, 31.1756, 29.1329, 26.833, 23.8909, 21.3324, 18.7726, 16.3403},}; - double[][] efficiency = new double[][] { - {77.2452238409573, 79.4154186459363, 80.737960012489, 80.5229826589649, - 79.2210931638144, 75.4719133864634, 69.6034181197298, 58.7322388482707}, - {77.0107837113504, 79.3069974136389, 80.8941189021135, 80.7190194665918, - 79.5313242980328, 75.5912622896367, 69.6846136362097, 60.0043057990909}, - {77.0043065299874, 79.1690958847856, 80.8038169975675, 80.6543975614197, - 78.8532389102705, 73.6664774270613, 66.2735600426727, 57.671664571658}, - {77.0716623789093, 80.4629750233093, 81.1390811169072, 79.6374242667478, - 75.380928428817, 69.5332969549779, 63.7997587622339, 58.8120614497758}, - {76.9705872525642, 79.8335492585324, 80.9468133671171, 80.5806471927835, - 78.0462158225426, 73.0403707523258, 66.5572286338589, 59.8624822515064}, - {77.5063036680357, 80.2056198362559, 81.0339108025933, 79.6085962687939, - 76.3814534404405, 70.8027503005902, 64.6437367160571, 60.5299349982342}, - {77.8175271586685, 80.065165942218, 81.0631362122632, 79.8955051771299, - 76.1983240929369, 69.289982774309, 60.8567149372229}, - {78.0924334304045, 80.9353551568667, 80.7904437766234, 78.8639325223295, - 75.2170936751143, 70.3105081673411, 65.5507568533569, 61.0391468300337}}; - - pump1.getPumpChart().setCurves(chartConditions, speed, flow, head, efficiency); - pump1.getPumpChart().setHeadUnit("kJ/kg"); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(pump1); - operations.run(); - - System.out.println("pump power " + pump1.getPower()); - } - - /** {@inheritDoc} */ - @Override - public boolean isUsePumpChart() { - return usePumpChart; - } - - /** {@inheritDoc} */ - @Override - public void setUsePumpChart(boolean usePumpChart) { - this.usePumpChart = usePumpChart; - } - - /** {@inheritDoc} */ - @Override - public String getHeadUnit() { - return headUnit; - } - - /** {@inheritDoc} */ - @Override - public void setHeadUnit(String headUnit) { - this.headUnit = headUnit; - } - - /** {@inheritDoc} */ - @Override - public boolean useRealKappa() { - return useRealKappa; - } - - /** {@inheritDoc} */ - @Override - public void setUseRealKappa(boolean useRealKappa) { - this.useRealKappa = useRealKappa; - } - - /** {@inheritDoc} */ - @Override - public void plot() { - neqsim.dataPresentation.JFreeChart.graph2b graph = - new neqsim.dataPresentation.JFreeChart.graph2b(flow, head, - Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), - "head vs flow", "flow", "head"); - graph.setVisible(true); - neqsim.dataPresentation.JFreeChart.graph2b graph2 = - new neqsim.dataPresentation.JFreeChart.graph2b(flow, efficiency, - Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), - "eff vs flow", "flow", "eff"); - graph2.setVisible(true); - neqsim.dataPresentation.JFreeChart.graph2b graph3 = - new neqsim.dataPresentation.JFreeChart.graph2b(redflow, redhead, - Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), - "red head vs red flow", "red flow", "red head"); - graph3.setVisible(true); - neqsim.dataPresentation.JFreeChart.graph2b graph4 = - new neqsim.dataPresentation.JFreeChart.graph2b(redflow, efficiency, - Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), - "red eff vs red dflow", "red flow", "red eff"); - graph4.setVisible(true); + referenceSpeed = (maxSpeedCurve + minSpeedCurve) / 2.0; + + PolynomialCurveFitter fitter = PolynomialCurveFitter.create(2); + + reducedHeadFitterFunc = new PolynomialFunction(fitter.fit(reducedHeadFitter.toList())); + reducedEfficiencyFunc = new PolynomialFunction(fitter.fit(reducedEfficiencyFitter.toList())); + fanLawCorrectionFunc = new PolynomialFunction(fitter.fit(fanLawCorrectionFitter.toList())); + setUsePumpChart(true); + } + + /** + *

+ * fitReducedCurve. + *

+ */ + public void fitReducedCurve() {} + + /** {@inheritDoc} */ + @Override + public double getHead(double flow, double speed) { + return reducedHeadFitterFunc.value(flow / speed) * speed * speed; + } + + /** {@inheritDoc} */ + @Override + public double getEfficiency(double flow, double speed) { + return reducedEfficiencyFunc.value(flow / speed); + } + + /** {@inheritDoc} */ + @Override + public int getSpeed(double flow, double head) { + int iter = 1; + double error = 1.0; + double derrordspeed = 1.0; + double newspeed = referenceSpeed; + double newhead = 0.0; + double oldspeed = newspeed + 1.0; + double oldhead = getHead(flow, oldspeed); + double olderror = oldhead - head; + do { + iter++; + newhead = getHead(flow, newspeed); + error = newhead - head; + derrordspeed = (error - olderror) / (newspeed - oldspeed); + newspeed -= error / derrordspeed; + // System.out.println("speed " + newspeed); + } while (Math.abs(error) > 1e-6 && iter < 100); + + // change speed to minimize + // Math.abs(head - reducedHeadFitterFunc.value(flow / speed) * speed * speed); + return (int) Math.round(newspeed); + } + + /** + *

+ * efficiency. + *

+ * + * @param flow a double + * @param speed a double + * @return a double + */ + public double efficiency(double flow, double speed) { + return 100.0; + } + + /** + *

+ * checkSurge1. + *

+ * + * @param flow a double + * @param head a double + * @return a boolean + */ + public boolean checkSurge1(double flow, double head) { + return false; + } + + /** + *

+ * checkSurge2. + *

+ * + * @param flow a double + * @param speed a double + * @return a boolean + */ + public boolean checkSurge2(double flow, double speed) { + return false; + } + + /** + *

+ * checkStoneWall. + *

+ * + * @param flow a double + * @param speed a double + * @return a boolean + */ + public boolean checkStoneWall(double flow, double speed) { + return false; + } + + /** {@inheritDoc} */ + @Override + public void setReferenceConditions(double refMW, double refTemperature, double refPressure, + double refZ) { + this.refMW = refMW; + this.refTemperature = refTemperature; + this.refPressure = refPressure; + this.refZ = refZ; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testFluid = new SystemSrkEos(298.15, 50.0); + testFluid.addComponent("water", 1.0); + testFluid.setTemperature(20.0, "C"); + testFluid.setPressure(1.0, "bara"); + testFluid.setTotalFlowRate(1000.0, "kg/hr"); + + Stream stream_1 = new Stream("Stream1", testFluid); + + Pump pump1 = new Pump("pump1", stream_1); + pump1.setOutletPressure(100.0); + // comp1.getAntiSurge().setActive(true); + pump1.setSpeed(12918); + + double[] chartConditions = new double[] {0.3, 1.0, 1.0, 1.0}; + // double[] speed = new double[] { 1000.0, 2000.0, 3000.0, 4000.0 }; + // double[][] flow = new double[][] { { 453.2, 600.0, 750.0, 800.0 }, { 453.2, + // 600.0, 750.0, 800.0 + // }, { 453.2, 600.0, 750.0, 800.0 }, { 453.2, 600.0, 750.0, 800.0 } }; + // double[][] head = new double[][] { { 10000.0, 9000.0, 8000.0, 7500.0 }, { + // 10000.0, 9000.0, 8000.0, 7500.0 }, { 10000.0, 9000.0, 8000.0, 7500.0 }, { + // 10000.0, 9000.0, 8000.0, 7500.0 } }; + // double[][] polyEff = new double[][] { { + // 90.0, 91.0, 89.0, 88.0 }, { 90.0, 91.0, 89.0, 88.0 }, { 90.0, 91.0, 89.0, + // 88.1 }, { 90.0, 91.0, 89.0, 88.1 } }; + + double[] speed = new double[] {12913, 12298, 11683, 11098, 10453, 9224, 8609, 8200}; + double[][] flow = new double[][] { + {2789.1285, 3174.0375, 3689.2288, 4179.4503, 4570.2768, 4954.7728, 5246.0329, 5661.0331}, + {2571.1753, 2943.7254, 3440.2675, 3837.4448, 4253.0898, 4668.6643, 4997.1926, 5387.4952}, + {2415.3793, 2763.0706, 3141.7095, 3594.7436, 4047.6467, 4494.1889, 4853.7353, 5138.7858}, + {2247.2043, 2799.7342, 3178.3428, 3656.1551, 4102.778, 4394.1591, 4648.3224, 4840.4998}, + {2072.8397, 2463.9483, 2836.4078, 3202.5266, 3599.6333, 3978.0203, 4257.0022, 4517.345}, + {1835.9552, 2208.455, 2618.1322, 2940.8034, 3244.7852, 3530.1279, 3753.3738, 3895.9746}, + {1711.3386, 1965.8848, 2356.9431, 2685.9247, 3008.5154, 3337.2855, 3591.5092}, + {1636.5807, 2002.8708, 2338.0319, 2642.1245, 2896.4894, 3113.6264, 3274.8764, 3411.2977}}; + double[][] head = + new double[][] {{80.0375, 78.8934, 76.2142, 71.8678, 67.0062, 60.6061, 53.0499, 39.728}, + {72.2122, 71.8369, 68.9009, 65.8341, 60.7167, 54.702, 47.2749, 35.7471}, + {65.1576, 64.5253, 62.6118, 59.1619, 54.0455, 47.0059, 39.195, 31.6387}, + {58.6154, 56.9627, 54.6647, 50.4462, 44.4322, 38.4144, 32.9084, 28.8109}, + {52.3295, 51.0573, 49.5283, 46.3326, 42.3685, 37.2502, 31.4884, 25.598}, + {40.6578, 39.6416, 37.6008, 34.6603, 30.9503, 27.1116, 23.2713, 20.4546}, + {35.2705, 34.6359, 32.7228, 31.0645, 27.0985, 22.7482, 18.0113}, + {32.192, 31.1756, 29.1329, 26.833, 23.8909, 21.3324, 18.7726, 16.3403},}; + double[][] efficiency = new double[][] { + {77.2452238409573, 79.4154186459363, 80.737960012489, 80.5229826589649, 79.2210931638144, + 75.4719133864634, 69.6034181197298, 58.7322388482707}, + {77.0107837113504, 79.3069974136389, 80.8941189021135, 80.7190194665918, 79.5313242980328, + 75.5912622896367, 69.6846136362097, 60.0043057990909}, + {77.0043065299874, 79.1690958847856, 80.8038169975675, 80.6543975614197, 78.8532389102705, + 73.6664774270613, 66.2735600426727, 57.671664571658}, + {77.0716623789093, 80.4629750233093, 81.1390811169072, 79.6374242667478, 75.380928428817, + 69.5332969549779, 63.7997587622339, 58.8120614497758}, + {76.9705872525642, 79.8335492585324, 80.9468133671171, 80.5806471927835, 78.0462158225426, + 73.0403707523258, 66.5572286338589, 59.8624822515064}, + {77.5063036680357, 80.2056198362559, 81.0339108025933, 79.6085962687939, 76.3814534404405, + 70.8027503005902, 64.6437367160571, 60.5299349982342}, + {77.8175271586685, 80.065165942218, 81.0631362122632, 79.8955051771299, 76.1983240929369, + 69.289982774309, 60.8567149372229}, + {78.0924334304045, 80.9353551568667, 80.7904437766234, 78.8639325223295, 75.2170936751143, + 70.3105081673411, 65.5507568533569, 61.0391468300337}}; + + pump1.getPumpChart().setCurves(chartConditions, speed, flow, head, efficiency); + pump1.getPumpChart().setHeadUnit("kJ/kg"); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(pump1); + operations.run(); + + System.out.println("pump power " + pump1.getPower()); + } + + /** {@inheritDoc} */ + @Override + public boolean isUsePumpChart() { + return usePumpChart; + } + + /** {@inheritDoc} */ + @Override + public void setUsePumpChart(boolean usePumpChart) { + this.usePumpChart = usePumpChart; + } + + /** {@inheritDoc} */ + @Override + public String getHeadUnit() { + return headUnit; + } + + /** {@inheritDoc} */ + @Override + public void setHeadUnit(String headUnit) { + if (headUnit.equals("meter") || headUnit.equals("kJ/kg")) { + this.headUnit = headUnit; + } else { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + "setHeadUnit", "headUnit", "does not support value " + headUnit)); } + this.headUnit = headUnit; + } + + /** {@inheritDoc} */ + @Override + public boolean useRealKappa() { + return useRealKappa; + } + + /** {@inheritDoc} */ + @Override + public void setUseRealKappa(boolean useRealKappa) { + this.useRealKappa = useRealKappa; + } + + /** {@inheritDoc} */ + @Override + public void plot() { + neqsim.dataPresentation.JFreeChart.graph2b graph = + new neqsim.dataPresentation.JFreeChart.graph2b(flow, head, + Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), "head vs flow", + "flow", "head"); + graph.setVisible(true); + neqsim.dataPresentation.JFreeChart.graph2b graph2 = + new neqsim.dataPresentation.JFreeChart.graph2b(flow, efficiency, + Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), "eff vs flow", + "flow", "eff"); + graph2.setVisible(true); + neqsim.dataPresentation.JFreeChart.graph2b graph3 = + new neqsim.dataPresentation.JFreeChart.graph2b(redflow, redhead, + Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), + "red head vs red flow", "red flow", "red head"); + graph3.setVisible(true); + neqsim.dataPresentation.JFreeChart.graph2b graph4 = + new neqsim.dataPresentation.JFreeChart.graph2b(redflow, efficiency, + Arrays.stream(speed).mapToObj(String::valueOf).toArray(String[]::new), + "red eff vs red dflow", "red flow", "red eff"); + graph4.setVisible(true); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpChartInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpChartInterface.java index a24f83c5f6..9123c23cc2 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpChartInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpChartInterface.java @@ -9,115 +9,115 @@ * @version $Id: $Id */ public interface PumpChartInterface extends Cloneable { - /** - * This method is used add a curve to the CompressorChart object - * - * @param speed a double - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - * @param efficiency an array of {@link double} objects - */ - public void addCurve(double speed, double[] flow, double[] head, double[] efficiency); + /** + * This method is used add a curve to the CompressorChart object. + * + * @param speed a double + * @param flow an array of type double + * @param head an array of type double + * @param efficiency an array of type double + */ + public void addCurve(double speed, double[] flow, double[] head, double[] efficiency); - /** - * This method is used add a set of curves to the CompressorChart object - * - * @param chartConditions an array of {@link double} objects - * @param speed an array of {@link double} objects - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - * @param polyEff an array of {@link double} objects - */ - public void setCurves(double[] chartConditions, double[] speed, double[][] flow, - double[][] head, double[][] polyEff); + /** + * This method is used add a set of curves to the CompressorChart object. + * + * @param chartConditions an array of type double + * @param speed an array of type double + * @param flow an array of type double + * @param head an array of type double + * @param polyEff an array of type double + */ + public void setCurves(double[] chartConditions, double[] speed, double[][] flow, double[][] head, + double[][] polyEff); - /** - * Get method for polytropic head from reference curves. - * - * @param flow [m3/h], speed in [rpm]. - * @return polytropic head in unit [getHeadUnit] - * @param speed a double - */ - public double getHead(double flow, double speed); + /** + * Get method for polytropic head from reference curves. + * + * @param flow [m3/h], speed in [rpm]. + * @param speed a double + * @return polytropic head in unit [getHeadUnit] + */ + public double getHead(double flow, double speed); - /** - * Get method for efficiency from reference curves. - * - * @param flow [m3/h], speed in [rpm]. - * @return efficiency [%]. - * @param speed a double - */ - public double getEfficiency(double flow, double speed); + /** + * Get method for efficiency from reference curves. + * + * @param flow [m3/h], speed in [rpm]. + * @param speed a double + * @return efficiency [%]. + */ + public double getEfficiency(double flow, double speed); - /** - * Set method for the reference conditions of the compressor chart - * - * @param refMW a double - * @param refTemperature a double - * @param refPressure a double - * @param refZ a double - */ - public void setReferenceConditions(double refMW, double refTemperature, double refPressure, - double refZ); + /** + * Set method for the reference conditions of the compressor chart. + * + * @param refMW a double + * @param refTemperature a double + * @param refPressure a double + * @param refZ a double + */ + public void setReferenceConditions(double refMW, double refTemperature, double refPressure, + double refZ); - /** - * Checks if set to use compressor chart for compressor calculations (chart is set for - * compressor) - * - * @return a boolean - */ - public boolean isUsePumpChart(); + /** + * Checks if set to use compressor chart for compressor calculations (chart is set for + * compressor). + * + * @return a boolean + */ + public boolean isUsePumpChart(); - /** - * Set compressor calculations to use compressor chart - * - * @param useCompressorChart a boolean - */ - public void setUsePumpChart(boolean useCompressorChart); + /** + * Set compressor calculations to use compressor chart. + * + * @param useCompressorChart a boolean + */ + public void setUsePumpChart(boolean useCompressorChart); - /** - * get the selected unit of head - * - * @return unit of head - */ - public String getHeadUnit(); + /** + * Get the selected unit of head. + * + * @return unit of head + */ + public String getHeadUnit(); - /** - * set unit of head - * - * @param headUnit a {@link java.lang.String} object - */ - public void setHeadUnit(String headUnit); + /** + * Set unit of head. + * + * @param headUnit a {@link java.lang.String} object + */ + public void setHeadUnit(String headUnit); - /** - * get method for kappa setting. true = real kappa is used, false = ideal kappa is used - * - * @return true/false flag - */ - public boolean useRealKappa(); + /** + * get method for kappa setting. true = real kappa is used, false = ideal kappa is used + * + * @return true/false flag + */ + public boolean useRealKappa(); - /** - * set method for kappa setting. true = real kappa is used, false = ideal kappa is used - * - * @param useRealKappa a boolean - */ - public void setUseRealKappa(boolean useRealKappa); + /** + * set method for kappa setting. true = real kappa is used, false = ideal kappa is used + * + * @param useRealKappa a boolean + */ + public void setUseRealKappa(boolean useRealKappa); - /** - *

- * getSpeed. - *

- * - * @param flow a double - * @param head a double - * @return a int - */ - public int getSpeed(double flow, double head); + /** + *

+ * getSpeed. + *

+ * + * @param flow a double + * @param head a double + * @return a int + */ + public int getSpeed(double flow, double head); - /** - *

- * plot. - *

- */ - public void plot(); + /** + *

+ * plot. + *

+ */ + public void plot(); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpCurve.java b/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpCurve.java index 4bca07c3cc..3d5d364bde 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpCurve.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpCurve.java @@ -1,39 +1,45 @@ package neqsim.processSimulation.processEquipment.pump; /** - *

PumpCurve class.

+ *

+ * PumpCurve class. + *

* * @author asmund * @version $Id: $Id */ public class PumpCurve implements java.io.Serializable { - private static final long serialVersionUID = 1000; - public double[] flow; - public double[] head; - public double[] efficiency; - public double speed = 1000.0; + private static final long serialVersionUID = 1000; + public double[] flow; + public double[] head; + public double[] efficiency; + public double speed = 1000.0; - /** - *

Constructor for PumpCurve.

- */ - public PumpCurve() { - flow = new double[] {453.2, 600.0, 750.0}; - head = new double[] {1000.0, 900.0, 800.0}; - efficiency = new double[] {78.0, 79.0, 78.0}; - } + /** + *

+ * Constructor for PumpCurve. + *

+ */ + public PumpCurve() { + flow = new double[] {453.2, 600.0, 750.0}; + head = new double[] {1000.0, 900.0, 800.0}; + efficiency = new double[] {78.0, 79.0, 78.0}; + } - /** - *

Constructor for PumpCurve.

- * - * @param speed a double - * @param flow an array of {@link double} objects - * @param head an array of {@link double} objects - * @param efficiency an array of {@link double} objects - */ - public PumpCurve(double speed, double[] flow, double[] head, double[] efficiency) { - this.speed = speed; - this.flow = flow; - this.head = head; - this.efficiency = efficiency; - } + /** + *

+ * Constructor for PumpCurve. + *

+ * + * @param speed a double + * @param flow an array of type double + * @param head an array of type double + * @param efficiency an array of type double + */ + public PumpCurve(double speed, double[] flow, double[] head, double[] efficiency) { + this.speed = speed; + this.flow = flow; + this.head = head; + this.efficiency = efficiency; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpInterface.java index f953a230b4..1ba71bc627 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/pump/PumpInterface.java @@ -12,21 +12,21 @@ * @version $Id: $Id */ public interface PumpInterface extends ProcessEquipmentInterface, TwoPortInterface { - /** - *

- * getEnergy. - *

- * - * @return a double - */ - public double getEnergy(); + /** + *

+ * getEnergy. + *

+ * + * @return a double + */ + public double getEnergy(); - /** - *

- * getPower. - *

- * - * @return a double - */ - public double getPower(); + /** + *

+ * getPower. + *

+ * + * @return a double + */ + public double getPower(); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirCVDsim.java b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirCVDsim.java new file mode 100644 index 0000000000..73a73c2284 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirCVDsim.java @@ -0,0 +1,33 @@ +package neqsim.processSimulation.processEquipment.reservoir; + +import java.util.UUID; +import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; +import neqsim.thermo.system.SystemInterface; + +/** + *

+ * ReservoirCVDsim class. + *

+ * + * @author Even Solbraa + * @version $Id: ReservoirCVDsim.java 1234 2024-05-31 10:00:00Z esolbraa $ + */ +public class ReservoirCVDsim extends ProcessEquipmentBaseClass { + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for ReservoirCVDsim. + *

+ * + * @param name a {@link java.lang.String} object + * @param reservoirFluid a {@link neqsim.thermo.system.SystemInterface} object + */ + public ReservoirCVDsim(String name, SystemInterface reservoirFluid) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) {} +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirDiffLibsim.java b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirDiffLibsim.java new file mode 100644 index 0000000000..18037be550 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirDiffLibsim.java @@ -0,0 +1,33 @@ +package neqsim.processSimulation.processEquipment.reservoir; + +import java.util.UUID; +import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; +import neqsim.thermo.system.SystemInterface; + +/** + *

+ * ReservoirDiffLibsim class. + *

+ * + * @author Even Solbraa + * @version $Id: ReservoirDiffLibsim.java 1234 2024-05-31 10:00:00Z esolbraa $ + */ +public class ReservoirDiffLibsim extends ProcessEquipmentBaseClass { + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for ReservoirDiffLibsim. + *

+ * + * @param name a {@link java.lang.String} object + * @param reservoirFluid a {@link neqsim.thermo.system.SystemInterface} object + */ + public ReservoirDiffLibsim(String name, SystemInterface reservoirFluid) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) {} +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirTPsim.java b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirTPsim.java new file mode 100644 index 0000000000..4829206a64 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/ReservoirTPsim.java @@ -0,0 +1,149 @@ +package neqsim.processSimulation.processEquipment.reservoir; + +import java.util.UUID; +import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + *

+ * ReservoirTPsim class. + *

+ * + * @author Even Solbraa + * @version $Id: ReservoirTPsim.java 1234 2024-05-31 10:00:00Z esolbraa $ + */ +public class ReservoirTPsim extends ProcessEquipmentBaseClass { + private static final long serialVersionUID = 1000; + + private SystemInterface reservoirFluid = null; + private StreamInterface outStream = null; + + private double pressure = 100.0; + private double temperature = 100.0; + private double flowRate = 100.0; + private String flowUnit = "kg/hr"; + private String tUnit = "K"; + private String pUnit = "bar"; + + private String prodPhaseName = "gas"; + + /** + *

+ * getReserervourFluid. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getReserervourFluid() { + return reservoirFluid; + } + + /** + *

+ * Constructor for ReservoirTPsim. + *

+ * + * @param name a {@link java.lang.String} object + * @param reservoirFluid a {@link neqsim.thermo.system.SystemInterface} object + */ + public ReservoirTPsim(String name, SystemInterface reservoirFluid) { + super(name); + this.reservoirFluid = reservoirFluid; + outStream = new Stream(getName() + "_out", reservoirFluid.clone()); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + SystemInterface fluid1 = ((SystemInterface) reservoirFluid).clone(); + fluid1.setTemperature(temperature, tUnit); + fluid1.setPressure(pressure, pUnit); + fluid1.setTotalFlowRate(flowRate, flowUnit); + + ThermodynamicOperations operations = new ThermodynamicOperations(fluid1); + operations.TPflash(); + + if (prodPhaseName.equals("gas") && fluid1.hasPhaseType("gas")) { + outStream.setFluid(fluid1.phaseToSystem("gas")); + } else if (prodPhaseName.equals("oil") && fluid1.hasPhaseType("oil")) { + outStream.setFluid(fluid1.phaseToSystem("oil")); + } else { + outStream.setFluid(fluid1.phaseToSystem(1)); + } + } + + /** + *

+ * Getter for the field outStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getOutStream() { + return outStream; + } + + /** + *

+ * Setter for the field pressure. + *

+ * + * @param reservoirPressure a double + * @param pUnit a {@link java.lang.String} object + */ + public void setPressure(double reservoirPressure, String pUnit) { + this.pressure = reservoirPressure; + this.pUnit = pUnit; + } + + /** + *

+ * Setter for the field temperature. + *

+ * + * @param reservoirTemperature a double + * @param tUnit a {@link java.lang.String} object + */ + public void setTemperature(double reservoirTemperature, String tUnit) { + this.temperature = reservoirTemperature; + this.tUnit = tUnit; + } + + /** + *

+ * Getter for the field prodPhaseName. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getProdPhaseName() { + return prodPhaseName; + } + + /** + *

+ * Setter for the field prodPhaseName. + *

+ * + * @param prodPhaseName a {@link java.lang.String} object + */ + public void setProdPhaseName(String prodPhaseName) { + this.prodPhaseName = prodPhaseName; + } + + /** + *

+ * Setter for the field flowRate. + *

+ * + * @param flowRate a double + * @param flowUnit a {@link java.lang.String} object + */ + public void setFlowRate(double flowRate, String flowUnit) { + this.flowRate = flowRate; + this.flowUnit = flowUnit; + } +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/reservoir/SimpleReservoir.java b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/SimpleReservoir.java index 5d3127f2df..4d1f679e80 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/reservoir/SimpleReservoir.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/SimpleReservoir.java @@ -3,15 +3,19 @@ * * Created on 12. mars 2001, 19:48 */ + package neqsim.processSimulation.processEquipment.reservoir; import java.util.ArrayList; +import java.util.UUID; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.pipeline.AdiabaticTwoPhasePipe; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; +import neqsim.util.unit.PressureUnit; /** *

@@ -22,746 +26,831 @@ * @version $Id: $Id */ public class SimpleReservoir extends ProcessEquipmentBaseClass { - private static final long serialVersionUID = 1000; - - SystemInterface thermoSystem; - - double oilVolume = 0.0, gasVolume = 0.0, waterVolume = 0.0; - ArrayList gasProducer = new ArrayList(); - ArrayList oilProducer = new ArrayList(); - ArrayList gasInjector = new ArrayList(); - ArrayList waterInjector = new ArrayList(); - - double gasProductionTotal = 0.0; - double oilProductionTotal = 0.0; - double OOIP = 0.0; - double OGIP = 0.0; - - // StreamInterface gasOutStream; - // StreamInterface oilOutStream; - double reservoirVolume = 0.0; - double lowPressureLimit = 50.0; - double time = 0.0; - - /** - *

- * Constructor for SimpleReservoir. - *

- */ - @Deprecated - public SimpleReservoir() { - this("SimpleReservoir"); + private static final long serialVersionUID = 1000; + + SystemInterface thermoSystem; + + double oilVolume = 0.0; + double gasVolume = 0.0; + double waterVolume = 0.0; + + ArrayList gasProducer = new ArrayList(); + ArrayList oilProducer = new ArrayList(); + ArrayList gasInjector = new ArrayList(); + ArrayList waterInjector = new ArrayList(); + ArrayList waterProducer = new ArrayList(); + + double gasProductionTotal = 0.0; + double oilProductionTotal = 0.0; + double OOIP = 0.0; + double OGIP = 0.0; + + // StreamInterface gasOutStream; + // StreamInterface oilOutStream; + double reservoirVolume = 0.0; + double lowPressureLimit = 50.0; + + /** + *

+ * Constructor for SimpleReservoir. + *

+ */ + @Deprecated + public SimpleReservoir() { + this("SimpleReservoir"); + } + + /** + *

+ * Constructor for SimpleReservoir. + *

+ * + * @param name a {@link java.lang.String} object + */ + public SimpleReservoir(String name) { + super(name); + } + + /** + *

+ * getReservoirFluid. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getReservoirFluid() { + return thermoSystem; + } + + /* + * public StreamInterface getGasOutStream() { return gasOutStream; } + * + * public StreamInterface getOilOutStream() { return oilOutStream; } + */ + + /** + *

+ * addGasProducer. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface addGasProducer(String name) { + Well newWell = new Well(name); + gasProducer.add(newWell); + StreamInterface gasOutStream = new Stream("gasOutStream"); + gasOutStream.setFluid(thermoSystem.phaseToSystem("gas")); + gasOutStream.getFluid().setTotalFlowRate(1.0e-1, "kg/sec"); + newWell.setStream(gasOutStream); + return newWell.getStream(); + } + + /** + *

+ * addOilProducer. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface addOilProducer(String name) { + Well newWell = new Well(name); + oilProducer.add(newWell); + StreamInterface oilOutStream = new Stream("oilOutStream"); + oilOutStream.setFluid(thermoSystem.phaseToSystem("oil")); + oilOutStream.getFluid().setTotalFlowRate(1.0e-1, "kg/sec"); + newWell.setStream(oilOutStream); + return newWell.getStream(); + } + + /** + *

+ * addWaterInjector. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface addWaterInjector(String name) { + Well newWell = new Well(name); + waterInjector.add(newWell); + StreamInterface waterInStream = new Stream("waterInStream"); + waterInStream.setFluid(thermoSystem.phaseToSystem("aqueous")); + // waterInStream.init(0); + waterInStream.getFluid().setTotalFlowRate(1.0e-1, "kg/sec"); + newWell.setStream(waterInStream); + return newWell.getStream(); + } + + /** + *

+ * addWaterProducer. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface addWaterProducer(String name) { + Well newWell = new Well(name); + waterProducer.add(newWell); + StreamInterface waterOutStream = new Stream("waterOutStream"); + waterOutStream.setFluid(thermoSystem.phaseToSystem("aqueous")); + waterOutStream.getFluid().setTotalFlowRate(1.0e-1, "kg/sec"); + newWell.setStream(waterOutStream); + return newWell.getStream(); + } + + /** + *

+ * addGasInjector. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface addGasInjector(String name) { + Well newWell = new Well(name); + gasInjector.add(newWell); + StreamInterface gasInStream = new Stream("gasInStream"); + gasInStream.setFluid(thermoSystem.phaseToSystem("gas")); + gasInStream.getFluid().setTotalFlowRate(1.0e-1, "kg/sec"); + newWell.setStream(gasInStream); + return newWell.getStream(); + } + + /** + *

+ * getGasInPlace. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getGasInPlace(String unit) { + SystemInterface locStream = (thermoSystem).clone(); + locStream.setTemperature(288.15); + locStream.setPressure(ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations ops = new ThermodynamicOperations(locStream); + ops.TPflash(); + locStream.initProperties(); + double volume = Double.NaN; + if (locStream.hasPhaseType("gas")) { + volume = locStream.getPhase("gas").getVolume("m3"); + } + if (unit.equals("GSm3")) { + return volume / 1.0e9; + } + return volume; + } + + /** + *

+ * getOilInPlace. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getOilInPlace(String unit) { + SystemInterface locStream = (thermoSystem).clone(); + locStream.setTemperature(288.15); + locStream.setPressure(ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations ops = new ThermodynamicOperations(locStream); + ops.TPflash(); + locStream.initProperties(); + double volume = Double.NaN; + if (locStream.hasPhaseType("oil")) { + volume = locStream.getPhase("oil").getVolume("m3"); + } + if (unit.equals("MSm3")) { + return volume / 1.0e6; + } + return volume; + } + + /** + *

+ * Getter for the field gasProducer. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object + */ + public Well getGasProducer(int i) { + return gasProducer.get(i); + } + + /** + *

+ * Getter for the field oilProducer. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object + */ + public Well getOilProducer(int i) { + return oilProducer.get(i); + } + + /** + *

+ * Getter for the field oilProducer. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object + */ + public Well getOilProducer(String name) { + for (int i = 0; i < oilProducer.size(); i++) { + if (oilProducer.get(i).getName().equals(name)) { + return oilProducer.get(i); + } + } + return null; + } + + /** + *

+ * Getter for the field waterProducer. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object + */ + public Well getWaterProducer(int i) { + return waterProducer.get(i); + } + + /** + *

+ * Getter for the field waterInjector. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object + */ + public Well getWaterInjector(int i) { + return waterInjector.get(i); + } + + /** + *

+ * Getter for the field gasInjector. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object + */ + public Well getGasInjector(int i) { + return gasInjector.get(i); + } + + /** + *

+ * setReservoirFluid. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param gasVolume a double + * @param oilVolume a double + * @param waterVolume a double + */ + public void setReservoirFluid(SystemInterface thermoSystem, double gasVolume, double oilVolume, + double waterVolume) { + this.thermoSystem = thermoSystem; + this.oilVolume = oilVolume; + this.gasVolume = gasVolume; + this.waterVolume = waterVolume; + + ThermodynamicOperations ops = new ThermodynamicOperations(thermoSystem); + ops.TPflash(); + + if (waterVolume > 1e-10 && !thermoSystem.hasPhaseType("aqueous")) { + thermoSystem.addComponent("water", thermoSystem.getTotalNumberOfMoles()); + ops.TPflash(); } - /** - *

- * Constructor for SimpleReservoir. - *

- * - * @param name a {@link java.lang.String} object - */ - public SimpleReservoir(String name) { - super(name); + thermoSystem.initProperties(); + SystemInterface thermoSystem2 = thermoSystem.clone(); + thermoSystem.setEmptyFluid(); + for (int j = 0; j < thermoSystem.getNumberOfPhases(); j++) { + String phaseType = thermoSystem.getPhase(j).getPhaseTypeName(); + double relFact = gasVolume / (thermoSystem2.getPhase(j).getVolume() * 1.0e-5); + if (phaseType.equals("oil")) { + relFact = oilVolume / (thermoSystem2.getPhase(j).getVolume() * 1.0e-5); + // totalliquidVolume += oilVolume / thermoSystem2.getPhase(j).getMolarVolume(); + } else if (phaseType.equals("aqueous")) { + relFact = waterVolume / (thermoSystem2.getPhase(j).getVolume() * 1.0e-5); + } else { + relFact = gasVolume / (thermoSystem2.getPhase(j).getVolume() * 1.0e-5); + } + for (int i = 0; i < thermoSystem.getPhase(j).getNumberOfComponents(); i++) { + thermoSystem.addComponent(thermoSystem.getPhase(j).getComponent(i).getComponentNumber(), + relFact * thermoSystem2.getPhase(j).getComponent(i).getNumberOfMolesInPhase(), j); + } } - /** - *

- * getReservoirFluid. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getReservoirFluid() { - return thermoSystem; + ThermodynamicOperations ops2 = new ThermodynamicOperations(thermoSystem); + ops2.TPflash(); + thermoSystem.initProperties(); + reservoirVolume = gasVolume + oilVolume + waterVolume; + + OOIP = getOilInPlace("Sm3"); + OGIP = getGasInPlace("Sm3"); + lowPressureLimit = 50.0; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + // System.out.println("gas volume " + thermoSystem.getPhase("gas").getVolume("m3")); + // System.out.println("oil volume " + thermoSystem.getPhase("oil").getVolume("m3")); + // System.out.println("water volume " + thermoSystem.getPhase("aqueous").getVolume("m3")); + + for (int i = 0; i < gasProducer.size(); i++) { + gasProducer.get(i).getStream().run(id); + } + for (int i = 0; i < oilProducer.size(); i++) { + oilProducer.get(i).getStream().run(id); + } + for (int i = 0; i < waterInjector.size(); i++) { + waterInjector.get(i).getStream().run(id); + } + for (int i = 0; i < waterProducer.size(); i++) { + waterProducer.get(i).getStream().run(id); + } + for (int i = 0; i < gasInjector.size(); i++) { + gasInjector.get(i).getStream().run(id); } - /* - * public StreamInterface getGasOutStream() { return gasOutStream; } - * - * - * - * public StreamInterface getOilOutStream() { return oilOutStream; } - */ + // gasOutStream.setFluid(thermoSystem.phaseToSystem("gas")); + // gasOutStream.run(id); + + setCalculationIdentifier(id); + } + + /** + *

+ * GORprodution. + *

+ * + * @return a double + */ + public double GORprodution() { + double GOR = 0.0; + double flow = 0.0; + for (int i = 0; i < gasProducer.size(); i++) { + flow += gasProducer.get(i).getStream().getFluid().getTotalNumberOfMoles(); + GOR += gasProducer.get(i).getGOR() + * gasProducer.get(i).getStream().getFluid().getTotalNumberOfMoles(); + } + for (int i = 0; i < oilProducer.size(); i++) { + flow += oilProducer.get(i).getStream().getFluid().getTotalNumberOfMoles(); + GOR += oilProducer.get(i).getGOR() + * oilProducer.get(i).getStream().getFluid().getTotalNumberOfMoles(); + } + return GOR / flow; + } + + /** + *

+ * getGasProdution. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getGasProdution(String unit) { + double volume = 0.0; + for (int i = 0; i < gasProducer.size(); i++) { + volume += gasProducer.get(i).getStdGasProduction(); + } + for (int i = 0; i < oilProducer.size(); i++) { + volume += oilProducer.get(i).getStdGasProduction(); + } + if (unit.equals("Sm3/sec")) { + } else if (unit.equals("Sm3/day")) { + volume = volume * 60.0 * 60 * 24; + } + return volume; + } + + /** + *

+ * getOilProdution. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getOilProdution(String unit) { + double volume = 0.0; + for (int i = 0; i < gasProducer.size(); i++) { + volume += gasProducer.get(i).getStdOilProduction(); + } + for (int i = 0; i < oilProducer.size(); i++) { + volume += oilProducer.get(i).getStdOilProduction(); + } + if (unit.equals("Sm3/sec")) { + } else if (unit.equals("Sm3/day")) { + volume = volume * 60.0 * 60 * 24; + } + return volume; + } + + /** + *

+ * getWaterProdution. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getWaterProdution(String unit) { + double volume = 0.0; + for (int i = 0; i < gasProducer.size(); i++) { + volume += gasProducer.get(i).getStdWaterProduction(); + } + for (int i = 0; i < oilProducer.size(); i++) { + volume += oilProducer.get(i).getStdWaterProduction(); + } + for (int i = 0; i < waterProducer.size(); i++) { + volume += waterProducer.get(i).getStdWaterProduction(); + } + if (unit.equals("Sm3/sec")) { + } else if (unit.equals("Sm3/day")) { + volume = volume * 60.0 * 60 * 24; + } else if (unit.equals("Sm3/hr")) { + volume = volume * 60.0 * 60; + } + return volume; + } + + /** {@inheritDoc} */ + @Override + public void runTransient(double dt, UUID id) { + increaseTime(dt); + if (thermoSystem.getPressure("bara") < lowPressureLimit) { + System.out.println("low pressure reservoir limit reached"); + setCalculationIdentifier(id); + return; + } + gasProductionTotal += getGasProdution("Sm3/sec") * dt; + oilProductionTotal += getOilProdution("Sm3/sec") * dt; + thermoSystem.init(0); + for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { + // thermoSystem.addComponent(i, -10000000000.001); + for (int k = 0; k < gasProducer.size(); k++) { + thermoSystem.addComponent(i, + -gasProducer.get(k).getStream().getFluid().getComponent(i).getNumberOfmoles() * dt); + } + + for (int k = 0; k < oilProducer.size(); k++) { + thermoSystem.addComponent(i, + -oilProducer.get(k).getStream().getFluid().getComponent(i).getNumberOfmoles() * dt); + } + + for (int k = 0; k < waterInjector.size(); k++) { + thermoSystem.addComponent(i, + waterInjector.get(k).getStream().getFluid().getComponent(i).getNumberOfmoles() * dt); + } + for (int k = 0; k < waterProducer.size(); k++) { + thermoSystem.addComponent(i, + -waterProducer.get(k).getStream().getFluid().getComponent(i).getNumberOfmoles() * dt); + } + for (int k = 0; k < gasInjector.size(); k++) { + thermoSystem.addComponent(i, + gasInjector.get(k).getStream().getFluid().getComponent(i).getNumberOfmoles() * dt); + } + } - /** - *

- * addGasProducer. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface addGasProducer(String name) { - Well newWell = new Well(name); - gasProducer.add(newWell); - StreamInterface gasOutStream = new Stream("gasOutStream"); - gasOutStream.setFluid(thermoSystem.phaseToSystem("gas")); - gasOutStream.getFluid().setTotalFlowRate(1.0e-1, "kg/sec"); - newWell.setStream(gasOutStream); - return newWell.getStream(); - } - - /** - *

- * addOilProducer. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface addOilProducer(String name) { - Well newWell = new Well(name); - oilProducer.add(newWell); - StreamInterface oilOutStream = new Stream("oilOutStream"); - oilOutStream.setFluid(thermoSystem.phaseToSystem("oil")); - oilOutStream.getFluid().setTotalFlowRate(1.0e-1, "kg/sec"); - newWell.setStream(oilOutStream); - return newWell.getStream(); - } - - /** - *

- * addWaterInjector. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface addWaterInjector(String name) { - Well newWell = new Well(name); - waterInjector.add(newWell); - StreamInterface waterInStream = new Stream("waterInStream"); - waterInStream.setFluid(thermoSystem.phaseToSystem("aqueous")); - // waterInStream.init(0); - waterInStream.getFluid().setTotalFlowRate(1.0e-1, "kg/sec"); - newWell.setStream(waterInStream); - return newWell.getStream(); - } - - /** - *

- * addGasInjector. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface addGasInjector(String name) { - Well newWell = new Well(name); - gasInjector.add(newWell); - StreamInterface gasInStream = new Stream("gasInStream"); - gasInStream.setFluid(thermoSystem.phaseToSystem("gas")); - gasInStream.getFluid().setTotalFlowRate(1.0e-1, "kg/sec"); - newWell.setStream(gasInStream); - return newWell.getStream(); - } - - /** - *

- * getGasInPlace. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getGasInPlace(String unit) { - SystemInterface locStream = (thermoSystem).clone(); - locStream.setTemperature(288.15); - locStream.setPressure(1.01325); - ThermodynamicOperations ops = new ThermodynamicOperations(locStream); - ops.TPflash(); - locStream.initProperties(); - double volume = Double.NaN; - if (locStream.hasPhaseType("gas")) { - volume = locStream.getPhase("gas").getVolume("m3"); - } - if (unit.equals("GSm3")) { - return volume / 1.0e9; - } - return volume; - } - - /** - *

- * getOilInPlace. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double + ThermodynamicOperations ops = new ThermodynamicOperations(thermoSystem); + ops.TVflash(reservoirVolume, "m3"); + thermoSystem.initProperties(); + + /* + * if (thermoSystem.hasPhaseType("gas")) System.out.println("gas volume " + + * thermoSystem.getPhase("gas").getVolume("m3")); if (thermoSystem.hasPhaseType("oil")) + * System.out.println("oil volume " + thermoSystem.getPhase("oil").getVolume("m3")); if + * (thermoSystem.hasPhaseType("aqueous")) System.out.println("water volume " + + * thermoSystem.getPhase("aqueous").getVolume("m3")); */ - public double getOilInPlace(String unit) { - SystemInterface locStream = (thermoSystem).clone(); - locStream.setTemperature(288.15); - locStream.setPressure(1.01325); - ThermodynamicOperations ops = new ThermodynamicOperations(locStream); - ops.TPflash(); - locStream.initProperties(); - double volume = Double.NaN; - if (locStream.hasPhaseType("oil")) { - volume = locStream.getPhase("oil").getVolume("m3"); - } - if (unit.equals("MSm3")) { - return volume / 1.0e6; - } - return volume; - } - - /** - *

- * Getter for the field gasProducer. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object + // System.out.println("pressure " + thermoSystem.getPressure("bara")); + + if (thermoSystem.hasPhaseType("gas")) { + for (int k = 0; k < gasProducer.size(); k++) { + gasProducer.get(k).getStream().getFluid() + .setMolarComposition(thermoSystem.getPhase("gas").getMolarComposition()); + gasProducer.get(k).getStream().run(id); + } + } + if (thermoSystem.hasPhaseType("oil")) { + for (int k = 0; k < oilProducer.size(); k++) { + oilProducer.get(k).getStream().getFluid() + .setMolarComposition(thermoSystem.getPhase("oil").getMolarComposition()); + oilProducer.get(k).getStream().run(id); + } + } + /* + * if(thermoSystem.hasPhaseType("aqueous")) { for (int k = 0; k < waterInjector.size(); k++) { + * waterInjector.get(k).getStream().getFluid() + * .setMolarComposition(thermoSystem.getPhase("aqueous").getMolarComposition()); + * waterInjector.get(k).getStream().run(); } */ - public Well getGasProducer(int i) { - return gasProducer.get(i); + for (int k = 0; k < waterInjector.size(); k++) { + waterInjector.get(k).getStream().run(id); } - - /** - *

- * Getter for the field oilProducer. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object + for (int k = 0; k < waterProducer.size(); k++) { + waterProducer.get(k).getStream().run(id); + } + for (int k = 0; k < gasInjector.size(); k++) { + gasInjector.get(k).getStream().run(id); + } + /* + * double totalVolume = 0; for (int i = 0; i < getReservoirFluid().getNumberOfPhases(); i++) { + * totalVolume += getReservoirFluid().getPhase(i).getVolume("m3"); } + * System.out.println("tot volume " + totalVolume/1.0e6 + " gas volume "+ */ - public Well getOilProducer(int i) { - return oilProducer.get(i); + + // getReservoirFluid().getPhase("gas").getVolume("m3")/1.0e6 + " oil volume "+ + // getReservoirFluid().getPhase("oil").getVolume("m3")/1.0e6 + " water volume "+ + // getReservoirFluid().getPhase("aqueous").getVolume("m3")/1.0e6); + // oilOutStream.getFluid().setMolarComposition(thermoSystem.getPhase("oil").getMolarComposition()); + // oilOutStream.run(id); + + // thermoSystem.display(); + for (int k = 0; k < gasProducer.size(); k++) { + gasProducer.get(k).getStream().getFluid().setPressure(thermoSystem.getPressure()); } - /** - *

- * Getter for the field waterInjector. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object - */ - public Well getWaterInjector(int i) { - return waterInjector.get(i); + for (int k = 0; k < oilProducer.size(); k++) { + oilProducer.get(k).getStream().getFluid().setPressure(thermoSystem.getPressure()); } - /** - *

- * Getter for the field gasInjector. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object - */ - public Well getGasInjector(int i) { - return gasInjector.get(i); + for (int k = 0; k < waterInjector.size(); k++) { + waterInjector.get(k).getStream().setPressure(thermoSystem.getPressure()); } + for (int k = 0; k < waterProducer.size(); k++) { + waterProducer.get(k).getStream().setPressure(thermoSystem.getPressure()); + } + for (int k = 0; k < gasInjector.size(); k++) { + gasInjector.get(k).getStream().setPressure(thermoSystem.getPressure()); + } + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + thermoSystem.display(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 100.0), 200.00); + testSystem.addComponent("nitrogen", 0.100); + testSystem.addComponent("methane", 30.00); + testSystem.addComponent("ethane", 1.0); + testSystem.addComponent("propane", 1.0); + testSystem.addComponent("i-butane", 1.0); + testSystem.addComponent("n-butane", 1.0); + testSystem.addComponent("n-hexane", 0.1); + testSystem.addComponent("n-heptane", 0.1); + testSystem.addComponent("n-nonane", 1.0); + testSystem.addComponent("nC10", 1.0); + testSystem.addComponent("nC12", 3.0); + testSystem.addComponent("nC15", 3.0); + testSystem.addComponent("nC20", 3.0); + testSystem.addComponent("water", 11.0); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + + SimpleReservoir reservoirOps = new SimpleReservoir("Well 1 reservoir"); + reservoirOps.setReservoirFluid(testSystem, 5.0 * 1e7, 552.0 * 1e6, 10.0e6); + + StreamInterface producedOilStream = reservoirOps.addOilProducer("oilproducer_1"); + StreamInterface injectorGasStream = reservoirOps.addGasInjector("gasproducer_1"); + StreamInterface producedGasStream = reservoirOps.addGasProducer("SLP_A32562G"); + StreamInterface waterInjectorStream = reservoirOps.addWaterInjector("SLP_WI32562O"); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(reservoirOps); + // operations.save("c:/temp/resmode1.neqsim"); + + System.out.println("gas in place (GIP) " + reservoirOps.getGasInPlace("GSm3") + " GSm3"); + System.out.println("oil in place (OIP) " + reservoirOps.getOilInPlace("MSm3") + " MSm3"); + + // StreamInterface producedGasStream = + // reservoirOps.addGasProducer("SLP_A32562G"); + producedGasStream.setFlowRate(0.01, "MSm3/day"); + + // StreamInterface injectorGasStream = + // reservoirOps.addGasInjector("SLP_A32562GI"); + injectorGasStream.setFlowRate(0.01, "MSm3/day"); + // injectorGasStream.getFluid().setMolarComposition(.new double[0.1, 0.1]); + + // StreamInterface producedGasStream2 = + // reservoirOps.addGasProducer("SLP_A32562G2"); + // producedGasStream2.setFlowRate(0.011, "MSm3/hr"); + + producedOilStream.setFlowRate(50000000.0, "kg/day"); + + waterInjectorStream.setFlowRate(12100000.0, "kg/day"); + + // StreamInterface producedGasStream = reservoirOps.getGasOutStream(); + // producedGasStream.setFlowRate(1.0e-3, "MSm3/day"); + + // StreamInterface producedOilStream = reservoirOps.getOilOutStream(); + // producedOilStream.setFlowRate(1500000.0, "kg/hr"); + + reservoirOps.run(); + + reservoirOps.runTransient(60 * 60 * 24 * 3); + for (int i = 0; i < 1; i++) { + reservoirOps.runTransient(60 * 60 * 24 * 15); + System.out.println("water volume" + + reservoirOps.getReservoirFluid().getPhase("aqueous").getVolume("m3") / 1.0e6); + System.out + .println("oil production total" + reservoirOps.getOilProductionTotal("Sm3") + " Sm3"); + System.out + .println("total produced " + reservoirOps.getProductionTotal("MSm3 oe") + " MSm3 oe"); + if (reservoirOps.getFluid().getPressure() < 50.0) { + break; + } + } + System.out.println("GOR gas " + reservoirOps.getGasProducer(0).getGOR()); + // System.out.println("GOR oil " + reservoirOps.getOilProducer(0).getGOR()); + System.out.println("GOR production " + reservoirOps.GORprodution()); - /** - *

- * Getter for the field oilProducer. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.processSimulation.processEquipment.reservoir.Well} object - */ - public Well getOilProducer(String name) { - for (int i = 0; i < oilProducer.size(); i++) { - if (oilProducer.get(i).getName().equals(name)) { - return oilProducer.get(i); - } - } - return null; - } - - /** - *

- * setReservoirFluid. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param gasVolume a double - * @param oilVolume a double - * @param waterVolume a double - */ - public void setReservoirFluid(SystemInterface thermoSystem, double gasVolume, double oilVolume, - double waterVolume) { - this.thermoSystem = thermoSystem; - this.oilVolume = oilVolume; - this.gasVolume = gasVolume; - this.waterVolume = waterVolume; - ThermodynamicOperations ops = new ThermodynamicOperations(thermoSystem); - ops.TPflash(); - - // thermoSystem.display(); - SystemInterface thermoSystem2 = thermoSystem.clone(); - - thermoSystem.setEmptyFluid();// (1.0e-10); - // thermoSystem.init(1); - // thermoSystem.display(); - // System.out.println("number of phases " + thermoSystem.getNumberOfPhases()); - // double totalliquidVolume = 0.0; - for (int j = 0; j < thermoSystem.getNumberOfPhases(); j++) { - double relFact = gasVolume / (thermoSystem2.getPhase(j).getVolume() * 1.0e-5); - if (j >= 1) { - if (j == 1) { - relFact = oilVolume / (thermoSystem2.getPhase(j).getVolume() * 1.0e-5); - // totalliquidVolume += oilVolume / thermoSystem2.getPhase(j).getMolarVolume(); - } else if (j == 2) { - relFact = waterVolume / (thermoSystem2.getPhase(j).getVolume() * 1.0e-5); - // totalliquidVolume += waterVolume / - // thermoSystem2.getPhase(j).getMolarVolume(); - } - } - for (int i = 0; i < thermoSystem.getPhase(j).getNumberOfComponents(); i++) { - thermoSystem.addComponent( - thermoSystem.getPhase(j).getComponent(i).getComponentNumber(), - relFact * thermoSystem2.getPhase(j).getComponent(i) - .getNumberOfMolesInPhase(), - j); - } - } - /* - * if (thermoSystem.hasPhaseType("gas")) { thermoSystem.setBeta(gasVolume / - * thermoSystem2.getPhase(0).getMolarVolume() / (gasVolume / - * thermoSystem2.getPhase(0).getMolarVolume() + oilVolume / - * thermoSystem2.getPhase(1).getMolarVolume())); } - */ - ThermodynamicOperations ops2 = new ThermodynamicOperations(thermoSystem); - ops2.TPflash(); - thermoSystem.initProperties(); - // thermoSystem.display(); - // gasOutStream = new Stream(); - // gasOutStream.setFluid(thermoSystem.phaseToSystem("gas")); - reservoirVolume = gasVolume + oilVolume + waterVolume; - - OOIP = getOilInPlace("Sm3"); - OGIP = getGasInPlace("Sm3"); - // oilOutStream = new Stream(); - // oilOutStream.setFluid(thermoSystem.phaseToSystem("oil")); - - lowPressureLimit = 50.0; - } - - /** {@inheritDoc} */ - @Override - public void run() { - System.out.println("gas volume " + thermoSystem.getPhase("gas").getVolume("m3")); - System.out.println("oil volume " + thermoSystem.getPhase("oil").getVolume("m3")); - System.out.println("water volume " + thermoSystem.getPhase("aqueous").getVolume("m3")); - - for (int i = 0; i < gasProducer.size(); i++) { - gasProducer.get(i).getStream().run(); - } - for (int i = 0; i < oilProducer.size(); i++) { - oilProducer.get(i).getStream().run(); - } - for (int i = 0; i < waterInjector.size(); i++) { - waterInjector.get(i).getStream().run(); - } - for (int i = 0; i < gasInjector.size(); i++) { - gasInjector.get(i).getStream().run(); - } - - // gasOutStream.setFluid(thermoSystem.phaseToSystem("gas")); - // gasOutStream.run(); - } - - /** - *

- * GORprodution. - *

- * - * @return a double - */ - public double GORprodution() { - double GOR = 0.0; - double flow = 0.0; - for (int i = 0; i < gasProducer.size(); i++) { - flow += gasProducer.get(i).getStream().getFluid().getNumberOfMoles(); - GOR += gasProducer.get(i).getGOR() - * gasProducer.get(i).getStream().getFluid().getNumberOfMoles(); - } - for (int i = 0; i < oilProducer.size(); i++) { - flow += oilProducer.get(i).getStream().getFluid().getNumberOfMoles(); - GOR += oilProducer.get(i).getGOR() - * oilProducer.get(i).getStream().getFluid().getNumberOfMoles(); - } - return GOR / flow; - } - - /** - *

- * getGasProdution. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getGasProdution(String unit) { - double volume = 0.0; - for (int i = 0; i < gasProducer.size(); i++) { - volume += gasProducer.get(i).getStdGasProduction(); - } - for (int i = 0; i < oilProducer.size(); i++) { - volume += oilProducer.get(i).getStdGasProduction(); - } - if (unit.equals("Sm3/sec")) { - } else if (unit.equals("Sm3/day")) { - volume = volume * 60.0 * 60 * 24; - } - return volume; - } - - /** - *

- * getOilProdution. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getOilProdution(String unit) { - double volume = 0.0; - for (int i = 0; i < gasProducer.size(); i++) { - volume += gasProducer.get(i).getStdOilProduction(); - } - for (int i = 0; i < oilProducer.size(); i++) { - volume += oilProducer.get(i).getStdOilProduction(); - } - if (unit.equals("Sm3/sec")) { - } else if (unit.equals("Sm3/day")) { - volume = volume * 60.0 * 60 * 24; - } - return volume; - } - - /** {@inheritDoc} */ - @Override - public void runTransient(double dt) { - time = getTime() + dt; - if (thermoSystem.getPressure("bara") < lowPressureLimit) { - System.out.println("low pressure reservoir limit reached"); - return; - } - gasProductionTotal += getGasProdution("Sm3/sec") * dt; - oilProductionTotal += getOilProdution("Sm3/sec") * dt; - thermoSystem.init(0); - for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { - // thermoSystem.addComponent(i, -10000000000.001); - for (int k = 0; k < gasProducer.size(); k++) { - thermoSystem.addComponent(i, -gasProducer.get(k).getStream().getFluid() - .getComponent(i).getNumberOfmoles() * dt); - } - - for (int k = 0; k < oilProducer.size(); k++) { - thermoSystem.addComponent(i, -oilProducer.get(k).getStream().getFluid() - .getComponent(i).getNumberOfmoles() * dt); - } - - for (int k = 0; k < waterInjector.size(); k++) { - thermoSystem.addComponent(i, waterInjector.get(k).getStream().getFluid() - .getComponent(i).getNumberOfmoles() * dt); - } - for (int k = 0; k < gasInjector.size(); k++) { - thermoSystem.addComponent(i, - gasInjector.get(k).getStream().getFluid().getComponent(i).getNumberOfmoles() - * dt); - } - } - - ThermodynamicOperations ops = new ThermodynamicOperations(thermoSystem); - ops.TVflash(reservoirVolume, "m3"); - thermoSystem.initProperties(); - - /* - * if (thermoSystem.hasPhaseType("gas")) System.out.println("gas volume " + - * thermoSystem.getPhase("gas").getVolume("m3")); if (thermoSystem.hasPhaseType("oil")) - * System.out.println("oil volume " + thermoSystem.getPhase("oil").getVolume("m3")); if - * (thermoSystem.hasPhaseType("aqueous")) System.out.println("water volume " + - * thermoSystem.getPhase("aqueous").getVolume("m3")); - */ - // System.out.println("pressure " + thermoSystem.getPressure("bara")); - - if (thermoSystem.hasPhaseType("gas")) { - for (int k = 0; k < gasProducer.size(); k++) { - gasProducer.get(k).getStream().getFluid() - .setMolarComposition(thermoSystem.getPhase("gas").getMolarComposition()); - gasProducer.get(k).getStream().run(); - } - } - if (thermoSystem.hasPhaseType("oil")) { - for (int k = 0; k < oilProducer.size(); k++) { - oilProducer.get(k).getStream().getFluid() - .setMolarComposition(thermoSystem.getPhase("oil").getMolarComposition()); - oilProducer.get(k).getStream().run(); - } - } - /* - * if(thermoSystem.hasPhaseType("aqueous")) { for (int k = 0; k < waterInjector.size(); k++) - * { waterInjector.get(k).getStream().getFluid() - * .setMolarComposition(thermoSystem.getPhase("aqueous").getMolarComposition()); - * waterInjector.get(k).getStream().run(); } - */ - for (int k = 0; k < waterInjector.size(); k++) { - waterInjector.get(k).getStream().run(); - } - for (int k = 0; k < gasInjector.size(); k++) { - gasInjector.get(k).getStream().run(); - } - /* - * double totalVolume = 0; for (int i = 0; i < getReservoirFluid().getNumberOfPhases(); i++) - * { totalVolume += getReservoirFluid().getPhase(i).getVolume("m3"); } - * System.out.println("tot volume " + totalVolume/1.0e6 + " gas volume "+ - */ - - // getReservoirFluid().getPhase("gas").getVolume("m3")/1.0e6 + " oil volume "+ - // getReservoirFluid().getPhase("oil").getVolume("m3")/1.0e6 + " water volume "+ - // getReservoirFluid().getPhase("aqueous").getVolume("m3")/1.0e6); - // oilOutStream.getFluid().setMolarComposition(thermoSystem.getPhase("oil").getMolarComposition()); - // oilOutStream.run(); - - // thermoSystem.display(); - for (int k = 0; k < gasProducer.size(); k++) { - gasProducer.get(k).getStream().getFluid().setPressure(thermoSystem.getPressure()); - } - - for (int k = 0; k < oilProducer.size(); k++) { - oilProducer.get(k).getStream().getFluid().setPressure(thermoSystem.getPressure()); - } - - for (int k = 0; k < waterInjector.size(); k++) { - waterInjector.get(k).getStream().setPressure(thermoSystem.getPressure()); - } - for (int k = 0; k < gasInjector.size(); k++) { - gasInjector.get(k).getStream().setPressure(thermoSystem.getPressure()); - } - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - thermoSystem.display(); - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 100.0), 200.00); - testSystem.addComponent("nitrogen", 0.100); - testSystem.addComponent("methane", 30.00); - testSystem.addComponent("ethane", 1.0); - testSystem.addComponent("propane", 1.0); - testSystem.addComponent("i-butane", 1.0); - testSystem.addComponent("n-butane", 1.0); - testSystem.addComponent("n-hexane", 0.1); - testSystem.addComponent("n-heptane", 0.1); - testSystem.addComponent("n-nonane", 1.0); - testSystem.addComponent("nC10", 1.0); - testSystem.addComponent("nC12", 3.0); - testSystem.addComponent("nC15", 3.0); - testSystem.addComponent("nC20", 3.0); - testSystem.addComponent("water", 11.0); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - - SimpleReservoir reservoirOps = new SimpleReservoir("Well 1 reservoir"); - reservoirOps.setReservoirFluid(testSystem, 5.0 * 1e7, 552.0 * 1e6, 10.0e6); - - StreamInterface producedOilStream = reservoirOps.addOilProducer("oilproducer_1"); - StreamInterface injectorGasStream = reservoirOps.addGasInjector("gasproducer_1"); - StreamInterface producedGasStream = reservoirOps.addGasProducer("SLP_A32562G"); - StreamInterface waterInjectorStream = reservoirOps.addWaterInjector("SLP_WI32562O"); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(reservoirOps); - operations.save("c:/temp/resmode1.neqsim"); - - System.out.println("gas in place (GIP) " + reservoirOps.getGasInPlace("GSm3") + " GSm3"); - System.out.println("oil in place (OIP) " + reservoirOps.getOilInPlace("MSm3") + " MSm3"); - - // StreamInterface producedGasStream = - // reservoirOps.addGasProducer("SLP_A32562G"); - producedGasStream.setFlowRate(0.01, "MSm3/day"); - - // StreamInterface injectorGasStream = - // reservoirOps.addGasInjector("SLP_A32562GI"); - injectorGasStream.setFlowRate(0.01, "MSm3/day"); - // injectorGasStream.getFluid().setMolarComposition(.new double[0.1, 0.1]); - - // StreamInterface producedGasStream2 = - // reservoirOps.addGasProducer("SLP_A32562G2"); - // producedGasStream2.setFlowRate(0.011, "MSm3/hr"); - - producedOilStream.setFlowRate(50000000.0, "kg/day"); - - waterInjectorStream.setFlowRate(12100000.0, "kg/day"); - - // StreamInterface producedGasStream = reservoirOps.getGasOutStream(); - // producedGasStream.setFlowRate(1.0e-3, "MSm3/day"); - - // StreamInterface producedOilStream = reservoirOps.getOilOutStream(); - // producedOilStream.setFlowRate(1500000.0, "kg/hr"); - - reservoirOps.run(); - - reservoirOps.runTransient(60 * 60 * 24 * 3); - for (int i = 0; i < 1; i++) { - reservoirOps.runTransient(60 * 60 * 24 * 15); - System.out.println("water volume" - + reservoirOps.getReservoirFluid().getPhase("aqueous").getVolume("m3") / 1.0e6); - System.out.println( - "oil production total" + reservoirOps.getOilProductionTotal("Sm3") + " Sm3"); - System.out.println( - "total produced " + reservoirOps.getProductionTotal("MSm3 oe") + " MSm3 oe"); - if (reservoirOps.getFluid().getPressure() < 50.0) - break; - } - System.out.println("GOR gas " + reservoirOps.getGasProducer(0).getGOR()); - // System.out.println("GOR oil " + reservoirOps.getOilProducer(0).getGOR()); - System.out.println("GOR production " + reservoirOps.GORprodution()); - - // System.out.println("GOR oil " + reservoirOps.getOilProducer(0).getGOR()); - - System.out - .println("gas production " + reservoirOps.getGasProdution("Sm3/day") + " Sm3/day"); - System.out - .println("oil production " + reservoirOps.getOilProdution("Sm3/day") + " Sm3/day"); - - System.out.println( - "oil production total" + reservoirOps.getOilProductionTotal("Sm3") + " Sm3"); - - // reservoirOps.runTransient(60 * 60 * 24 * 365); - // reservoirOps.runTransient(60 * 60 * 24 * 365); - // reservoirOps.runTransient(60 * 60 * 24 * 365); - System.out.println( - "gas production total" + reservoirOps.getGasProductionTotal("GSm3") + " GSm3"); - - System.out.println( - "oil production total" + reservoirOps.getOilProductionTotal("MSm3") + " MSm3"); - System.out.println("gas in place (GIP) " + reservoirOps.getGasInPlace("GSm3") + " GSm3"); - System.out.println("oil in place (OIP) " + reservoirOps.getOilInPlace("MSm3") + " MSm3"); - System.out - .println("original oil in place (OOIP) " + reservoirOps.getOOIP("MSm3") + " MSm3"); - System.out - .println("original gas in place (OGIP) " + reservoirOps.getOGIP("GSm3") + " GSm3"); - - // reservoirOps.runTransient(60 * 60 * 24 * 365); - // producedGasStream.setFlowRate(4.0, "MSm3/day"); - // producedOilStream.setFlowRate(1.0, "kg/hr"); - - for (int i = 0; i < 300; i++) { - // reservoirOps.runTransient(60 * 60 * 24 * 365); - } - System.out.println("oil flow " + producedOilStream.getFlowRate("kg/hr")); - - AdiabaticTwoPhasePipe testPipe = new AdiabaticTwoPhasePipe("testPipe", producedOilStream); - testPipe.setLength(3300.0); - testPipe.setInletElevation(0.0); - testPipe.setOutletElevation(2200.0); - testPipe.setDiameter(2.69); - testPipe.setPressureOutLimit(80.0); - testPipe.setFlowLimit(producedOilStream.getFlowRate("kg/hr") * 0.4, "kg/hr"); - testPipe.setOutTemperature(273.15 + 50.0); - testPipe.run(); - System.out.println(" flow limit " + producedOilStream.getFlowRate("kg/hr") * 0.4); - System.out.println("oil flow " + producedOilStream.getFlowRate("kg/hr")); - // testPipe.getOutStream().displayResult(); - - for (int i = 0; i < 60; i++) { - reservoirOps.runTransient(60 * 60 * 24 * 25); - testPipe.run(); - System.out.println("oil flow " + producedOilStream.getFlowRate("kg/hr") + " pressure " - + producedOilStream.getPressure("bara") + " pipe out pres " - + testPipe.getOutletStream().getFluid().getPressure()); - } - } - - /** - *

- * Getter for the field gasProductionTotal. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getGasProductionTotal(String unit) { - if (unit.equals("MSm3")) - return gasProductionTotal / 1e6; - if (unit.equals("GSm3")) - return gasProductionTotal / 1e9; - return gasProductionTotal; - } - - /** - *

- * Getter for the field oilProductionTotal. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getOilProductionTotal(String unit) { - if (unit.equals("MSm3")) - return oilProductionTotal / 1e6; - return oilProductionTotal; - } - - /** - *

- * getProductionTotal. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getProductionTotal(String unit) { - double prod = getOilProductionTotal("Sm3") + getGasProductionTotal("Sm3") / 1.0e3; - if (unit.equals("MSm3 oe")) - return prod / 1e6; - return prod; - } - - /** - *

- * getOOIP. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getOOIP(String unit) { - if (unit.equals("MSm3")) - return OOIP / 1.0e6; - return OOIP; - } - - /** - *

- * getOGIP. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getOGIP(String unit) { - if (unit.equals("GSm3")) - return OGIP / 1.0e9; - return OGIP; - } - - /** - *

- * Getter for the field time. - *

- * - * @return a double - */ - public double getTime() { - return time; + // System.out.println("GOR oil " + reservoirOps.getOilProducer(0).getGOR()); + + System.out.println("gas production " + reservoirOps.getGasProdution("Sm3/day") + " Sm3/day"); + System.out.println("oil production " + reservoirOps.getOilProdution("Sm3/day") + " Sm3/day"); + + System.out + .println("oil production total" + reservoirOps.getOilProductionTotal("Sm3") + " Sm3"); + + // reservoirOps.runTransient(60 * 60 * 24 * 365); + // reservoirOps.runTransient(60 * 60 * 24 * 365); + // reservoirOps.runTransient(60 * 60 * 24 * 365); + System.out + .println("gas production total" + reservoirOps.getGasProductionTotal("GSm3") + " GSm3"); + + System.out + .println("oil production total" + reservoirOps.getOilProductionTotal("MSm3") + " MSm3"); + System.out.println("gas in place (GIP) " + reservoirOps.getGasInPlace("GSm3") + " GSm3"); + System.out.println("oil in place (OIP) " + reservoirOps.getOilInPlace("MSm3") + " MSm3"); + System.out.println("original oil in place (OOIP) " + reservoirOps.getOOIP("MSm3") + " MSm3"); + System.out.println("original gas in place (OGIP) " + reservoirOps.getOGIP("GSm3") + " GSm3"); + + // reservoirOps.runTransient(60 * 60 * 24 * 365); + // producedGasStream.setFlowRate(4.0, "MSm3/day"); + // producedOilStream.setFlowRate(1.0, "kg/hr"); + + for (int i = 0; i < 300; i++) { + // reservoirOps.runTransient(60 * 60 * 24 * 365); + } + System.out.println("oil flow " + producedOilStream.getFlowRate("kg/hr")); + + AdiabaticTwoPhasePipe testPipe = new AdiabaticTwoPhasePipe("testPipe", producedOilStream); + testPipe.setLength(3300.0); + testPipe.setInletElevation(0.0); + testPipe.setOutletElevation(2200.0); + testPipe.setDiameter(2.69); + testPipe.setPressureOutLimit(80.0); + testPipe.setFlowLimit(producedOilStream.getFlowRate("kg/hr") * 0.4, "kg/hr"); + testPipe.setOutTemperature(273.15 + 50.0); + testPipe.run(); + System.out.println(" flow limit " + producedOilStream.getFlowRate("kg/hr") * 0.4); + System.out.println("oil flow " + producedOilStream.getFlowRate("kg/hr")); + // testPipe.getOutStream().displayResult(); + + for (int i = 0; i < 60; i++) { + reservoirOps.runTransient(60 * 60 * 24 * 25); + testPipe.run(); + System.out.println("oil flow " + producedOilStream.getFlowRate("kg/hr") + " pressure " + + producedOilStream.getPressure("bara") + " pipe out pres " + + testPipe.getOutletStream().getFluid().getPressure()); + } + } + + /** + *

+ * Getter for the field gasProductionTotal. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getGasProductionTotal(String unit) { + if (unit.equals("MSm3")) { + return gasProductionTotal / 1e6; + } + if (unit.equals("GSm3")) { + return gasProductionTotal / 1e9; + } + return gasProductionTotal; + } + + /** + *

+ * Getter for the field oilProductionTotal. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getOilProductionTotal(String unit) { + if (unit.equals("MSm3")) { + return oilProductionTotal / 1e6; + } + return oilProductionTotal; + } + + /** + *

+ * getProductionTotal. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getProductionTotal(String unit) { + double prod = getOilProductionTotal("Sm3") + getGasProductionTotal("Sm3") / 1.0e3; + if (unit.equals("MSm3 oe")) { + return prod / 1e6; + } + return prod; + } + + /** + *

+ * getOOIP. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getOOIP(String unit) { + if (unit.equals("MSm3")) { + return OOIP / 1.0e6; + } + return OOIP; + } + + /** + *

+ * getOGIP. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getOGIP(String unit) { + if (unit.equals("GSm3")) { + return OGIP / 1.0e9; } + return OGIP; + } + + /** {@inheritDoc} */ + @Override + public double getTime() { + return time; + } + + /** + *

+ * Setter for the field lowPressureLimit. + *

+ * + * @param value a double + * @param unit a {@link java.lang.String} object + */ + public void setLowPressureLimit(double value, String unit) { + PressureUnit conver = new PressureUnit(value, unit); + lowPressureLimit = conver.getValue("bara"); + } + + /** + *

+ * Getter for the field lowPressureLimit. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getLowPressureLimit(String unit) { + PressureUnit conver = new PressureUnit(lowPressureLimit, "bara"); + return conver.getValue(unit); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/reservoir/Well.java b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/Well.java index 65eb564bd0..23a707b52a 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/reservoir/Well.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/Well.java @@ -1,6 +1,7 @@ package neqsim.processSimulation.processEquipment.reservoir; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; import neqsim.util.NamedBaseClass; @@ -14,115 +15,133 @@ * @version $Id: $Id */ public class Well extends NamedBaseClass { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - private StreamInterface stream = null; - double x, y, z; + private StreamInterface stream = null; + double x, y, z; - /** - *

- * Constructor for Well. - *

- * - * @deprecated use {@link #Well(String)} instead - */ - @Deprecated - public Well() { - this("Well"); - } + /** + *

+ * Constructor for Well. + *

+ * + * @deprecated use {@link #Well(String)} instead + */ + @Deprecated + public Well() { + this("Well"); + } - /** - *

- * Constructor for Well. - *

- * - * @param name a {@link java.lang.String} object - */ - public Well(String name) { - super(name); - } + /** + *

+ * Constructor for Well. + *

+ * + * @param name a {@link java.lang.String} object + */ + public Well(String name) { + super(name); + } - /** - *

- * Getter for the field stream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface getStream() { - return stream; - } + /** + *

+ * Getter for the field stream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getStream() { + return stream; + } + + /** + *

+ * Setter for the field stream. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public void setStream(StreamInterface stream) { + this.stream = stream; + } - /** - *

- * Setter for the field stream. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void setStream(StreamInterface stream) { - this.stream = stream; + /** + *

+ * getGOR. + *

+ * + * @return a double + */ + public double getGOR() { + SystemInterface locStream = (stream.getFluid()).clone(); + locStream.setTemperature(288.15); + locStream.setPressure(ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations ops = new ThermodynamicOperations(locStream); + ops.TPflash(); + double GOR = Double.NaN; + if (locStream.hasPhaseType("gas") && locStream.hasPhaseType("oil")) { + GOR = locStream.getPhase("gas").getVolume("m3") / locStream.getPhase("oil").getVolume("m3"); } + return GOR; + } - /** - *

- * getGOR. - *

- * - * @return a double - */ - public double getGOR() { - SystemInterface locStream = (stream.getFluid()).clone(); - locStream.setTemperature(288.15); - locStream.setPressure(1.01325); - ThermodynamicOperations ops = new ThermodynamicOperations(locStream); - ops.TPflash(); - double GOR = Double.NaN; - if (locStream.hasPhaseType("gas") && locStream.hasPhaseType("oil")) { - GOR = locStream.getPhase("gas").getVolume("m3") - / locStream.getPhase("oil").getVolume("m3"); - } - return GOR; + /** + *

+ * getStdGasProduction. + *

+ * + * @return a double + */ + public double getStdGasProduction() { + SystemInterface locStream = (stream.getFluid()).clone(); + locStream.setTemperature(288.15); + locStream.setPressure(ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations ops = new ThermodynamicOperations(locStream); + ops.TPflash(); + double volume = 0; + if (locStream.hasPhaseType("gas")) { + volume = locStream.getPhase("gas").getVolume("m3"); } + return volume; + } - /** - *

- * getStdGasProduction. - *

- * - * @return a double - */ - public double getStdGasProduction() { - SystemInterface locStream = (stream.getFluid()).clone(); - locStream.setTemperature(288.15); - locStream.setPressure(1.01325); - ThermodynamicOperations ops = new ThermodynamicOperations(locStream); - ops.TPflash(); - double volume = Double.NaN; - if (locStream.hasPhaseType("gas")) { - volume = locStream.getPhase("gas").getVolume("m3"); - } - return volume; + /** + *

+ * getStdOilProduction. + *

+ * + * @return a double + */ + public double getStdOilProduction() { + SystemInterface locStream = (stream.getFluid()).clone(); + locStream.setTemperature(288.15); + locStream.setPressure(ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations ops = new ThermodynamicOperations(locStream); + ops.TPflash(); + double volume = 0; + if (locStream.hasPhaseType("oil")) { + volume = locStream.getPhase("oil").getVolume("m3"); } + return volume; + } - /** - *

- * getStdOilProduction. - *

- * - * @return a double - */ - public double getStdOilProduction() { - SystemInterface locStream = (stream.getFluid()).clone(); - locStream.setTemperature(288.15); - locStream.setPressure(1.01325); - ThermodynamicOperations ops = new ThermodynamicOperations(locStream); - ops.TPflash(); - double volume = Double.NaN; - if (locStream.hasPhaseType("oil")) { - volume = locStream.getPhase("oil").getVolume("m3"); - } - return volume; + /** + *

+ * getStdWaterProduction. + *

+ * + * @return a double + */ + public double getStdWaterProduction() { + SystemInterface locStream = (stream.getFluid()).clone(); + locStream.setTemperature(288.15); + locStream.setPressure(ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations ops = new ThermodynamicOperations(locStream); + ops.TPflash(); + double volume = 0; + if (locStream.hasPhaseType("aqueous")) { + volume = locStream.getPhase("aqueous").getVolume("m3"); } + return volume; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/reservoir/WellFlow.java b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/WellFlow.java index b6a438c12d..fc4ed9ac2b 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/reservoir/WellFlow.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/reservoir/WellFlow.java @@ -1,5 +1,13 @@ package neqsim.processSimulation.processEquipment.reservoir; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.processSimulation.processEquipment.TwoPortEquipment; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.system.SystemInterface; + /** *

* WellFlow class. @@ -8,5 +16,101 @@ * @author asmund * @version $Id: $Id */ -public class WellFlow { +public class WellFlow extends TwoPortEquipment { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ThrottlingValve.class); + SystemInterface thermoSystem; + private double wellProductionIndex = 0; + double pressureOut = 1.0; + String pressureUnit = "bara"; + boolean useWellProductionIndex = false; + boolean calcpressure = true; + + /** + *

+ * Constructor for WellFlow. + *

+ * + * @param name a {@link java.lang.String} object + */ + public WellFlow(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void setInletStream(StreamInterface stream) { + super.setInletStream(stream); + StreamInterface outStream = stream.clone(); + outStream.setName("outStream"); + super.setOutletStream(outStream); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + thermoSystem = getInletStream().getThermoSystem().clone(); + thermoSystem.setPressure(pressureOut, pressureUnit); + outStream.setThermoSystem(thermoSystem); + if (useWellProductionIndex) { + if (calcpressure) { + double presout = 1.0; + if (Math.pow(getInletStream().getPressure("bara"), 2.0) + - getInletStream().getFlowRate("MSm3/day") / wellProductionIndex > 0) { + presout = Math.sqrt(Math.pow(getInletStream().getPressure("bara"), 2.0) + - getInletStream().getFlowRate("MSm3/day") / wellProductionIndex); + } else { + logger.error("pressure lower that 0"); + throw new RuntimeException( + new neqsim.util.exception.InvalidInputException("WellFlow", "run: calcOutletPressure", + "pressure", "- Outlet pressure is negative" + pressureOut)); + } + // System.out.println("out pres " + presout); + outStream.setPressure(presout, "bara"); + } else { + double flow = wellProductionIndex * (Math.pow(getInletStream().getPressure("bara"), 2.0) + - Math.pow(thermoSystem.getPressure("bara"), 2.0)); + outStream.setFlowRate(flow, "MSm3/day"); + } + } else { + wellProductionIndex = getInletStream().getFlowRate("MSm3/day") + / (Math.pow(getInletStream().getPressure("bara"), 2.0) + - Math.pow(thermoSystem.getPressure("bara"), 2.0)); + } + outStream.run(); + } + + /** {@inheritDoc} */ + @Override + public void runTransient(double dt, UUID id) { + if (getCalculateSteadyState()) { + run(id); + increaseTime(dt); + return; + } + double flow = wellProductionIndex * (Math.pow(getInletStream().getPressure("bara"), 2.0) + - Math.pow(thermoSystem.getPressure("bara"), 2.0)); + + outStream.setFlowRate(flow, "MSm3/day"); + outStream.run(); + } + + /** + *

Getter for the field wellProductionIndex.

+ * + * @return a double + */ + public double getWellProductionIndex() { + return wellProductionIndex; + } + + /** + *

Setter for the field wellProductionIndex.

+ * + * @param wellProductionIndex a double + */ + public void setWellProductionIndex(double wellProductionIndex) { + useWellProductionIndex = true; + this.wellProductionIndex = wellProductionIndex; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/GasScrubber.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/GasScrubber.java index 26ee860718..4438b2a316 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/GasScrubber.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/GasScrubber.java @@ -3,14 +3,11 @@ * * Created on 12. mars 2001, 19:48 */ + package neqsim.processSimulation.processEquipment.separator; -import java.util.ArrayList; import neqsim.processSimulation.mechanicalDesign.separator.GasScrubberMechanicalDesign; -import neqsim.processSimulation.processEquipment.separator.sectionType.SeparatorSection; -import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; -import neqsim.thermo.system.SystemInterface; /** *

@@ -21,134 +18,56 @@ * @version $Id: $Id */ public class GasScrubber extends Separator { - private static final long serialVersionUID = 1000; - - SystemInterface thermoSystem, gasSystem, waterSystem, liquidSystem, thermoSystemCloned; - ArrayList scrubberSection = null; - StreamInterface inletStream; - StreamInterface gasOutStream; - StreamInterface liquidOutStream; - String name = new String(); - - /** - *

- * Constructor for GasScrubber. - *

- */ - @Deprecated - public GasScrubber() { - this("GasScrubber"); - } - - /** - *

- * Constructor for GasScrubber. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - @Deprecated - public GasScrubber(StreamInterface inletStream) { - this("GasScrubber", inletStream); - } - - /** - * Constructor for GasScrubber. - * - * @param name name of gas scrubber - */ - public GasScrubber(String name) { - super(name); - this.setOrientation("vertical"); - } - - /** - *

- * Constructor for GasScrubber. - *

- * - * @param name a {@link java.lang.String} object - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public GasScrubber(String name, StreamInterface inletStream) { - super(name, inletStream); - this.setOrientation("vertical"); - } - - public GasScrubberMechanicalDesign getMechanicalDesign() { - return new GasScrubberMechanicalDesign(this); - } - - /** - *

- * Setter for the field inletStream. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public void setInletStream(StreamInterface inletStream) { - this.inletStream = inletStream; - - thermoSystem = inletStream.getThermoSystem().clone(); - gasSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[0]); - gasOutStream = new Stream("gasOutStream", gasSystem); - - thermoSystem = inletStream.getThermoSystem().clone(); - liquidSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[1]); - liquidOutStream = new Stream("liquidOutStream", liquidSystem); - } - - /** - *

- * addScrubberSection. - *

- * - * @param type a {@link java.lang.String} object - */ - public void addScrubberSection(String type) { - scrubberSection.add(new SeparatorSection("section" + scrubberSection.size() + 1, type, this)); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquidOutStream() { - return liquidOutStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGasOutStream() { - return gasOutStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGas() { - return getGasOutStream(); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquid() { - return getLiquidOutStream(); - } - - /** {@inheritDoc} */ - @Override - public void run() { - thermoSystem = inletStream.getThermoSystem().clone(); - gasSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[0]); - gasSystem.setNumberOfPhases(1); - gasOutStream.setThermoSystem(gasSystem); - - thermoSystem = inletStream.getThermoSystem().clone(); - liquidSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[1]); - liquidSystem.setNumberOfPhases(1); - liquidOutStream.setThermoSystem(liquidSystem); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - } + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for GasScrubber. + *

+ */ + @Deprecated + public GasScrubber() { + this("GasScrubber"); + } + + /** + *

+ * Constructor for GasScrubber. + *

+ * + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + @Deprecated + public GasScrubber(StreamInterface inletStream) { + this("GasScrubber", inletStream); + } + + /** + * Constructor for GasScrubber. + * + * @param name name of gas scrubber + */ + public GasScrubber(String name) { + super(name); + this.setOrientation("vertical"); + } + + /** + *

+ * Constructor for GasScrubber. + *

+ * + * @param name a {@link java.lang.String} object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public GasScrubber(String name, StreamInterface inletStream) { + super(name, inletStream); + this.setOrientation("vertical"); + } + + /** {@inheritDoc} */ + @Override + public GasScrubberMechanicalDesign getMechanicalDesign() { + return new GasScrubberMechanicalDesign(this); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/GasScrubberSimple.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/GasScrubberSimple.java index f67e17695b..4213871ae0 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/GasScrubberSimple.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/GasScrubberSimple.java @@ -3,8 +3,10 @@ * * Created on 12. mars 2001, 19:48 */ + package neqsim.processSimulation.processEquipment.separator; +import java.util.UUID; import neqsim.processSimulation.mechanicalDesign.separator.GasScrubberMechanicalDesign; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; @@ -20,147 +22,154 @@ * @version $Id: $Id */ public class GasScrubberSimple extends Separator { - private static final long serialVersionUID = 1000; - - SystemInterface gasSystem, waterSystem, liquidSystem, thermoSystemCloned; - StreamInterface inletStream; - StreamInterface gasOutStream; - StreamInterface liquidOutStream; - String name = new String(); - - /** - *

- * Constructor for GasScrubberSimple. - *

- */ - @Deprecated - public GasScrubberSimple() { - this("GasScrubberSimple"); - } - - /** - *

- * Constructor for GasScrubberSimple. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - @Deprecated - public GasScrubberSimple(StreamInterface inletStream) { - this("GasScrubberSimple", inletStream); - } - - /** - * Constructor for GasScrubberSimple. - * - * @param name name of scrubber - */ - public GasScrubberSimple(String name) { - super(name); - this.setOrientation("vertical"); - } - - /** - *

- * Constructor for GasScrubberSimple. - *

- * - * @param name a {@link java.lang.String} object - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public GasScrubberSimple(String name, StreamInterface inletStream) { - super(name, inletStream); - this.setOrientation("vertical"); - } - - public GasScrubberMechanicalDesign getMechanicalDesign() { - return new GasScrubberMechanicalDesign(this); - } - - /** - *

- * Setter for the field inletStream. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public void setInletStream(StreamInterface inletStream) { - this.inletStream = inletStream; - - thermoSystem = inletStream.getThermoSystem().clone(); - gasSystem = thermoSystem.phaseToSystem(0); - gasOutStream = new Stream("gasOutStream", gasSystem); - - thermoSystem = inletStream.getThermoSystem().clone(); - liquidSystem = thermoSystem.phaseToSystem(1); - liquidOutStream = new Stream("liquidOutStream", liquidSystem); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquidOutStream() { - return liquidOutStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGasOutStream() { - return gasOutStream; + private static final long serialVersionUID = 1000; + + SystemInterface gasSystem; + SystemInterface waterSystem; + SystemInterface liquidSystem; + SystemInterface thermoSystemCloned; + + StreamInterface inletStream; + StreamInterface gasOutStream; + StreamInterface liquidOutStream; + + /** + *

+ * Constructor for GasScrubberSimple. + *

+ */ + @Deprecated + public GasScrubberSimple() { + this("GasScrubberSimple"); + } + + /** + *

+ * Constructor for GasScrubberSimple. + *

+ * + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + @Deprecated + public GasScrubberSimple(StreamInterface inletStream) { + this("GasScrubberSimple", inletStream); + } + + /** + * Constructor for GasScrubberSimple. + * + * @param name name of scrubber + */ + public GasScrubberSimple(String name) { + super(name); + this.setOrientation("vertical"); + } + + /** + *

+ * Constructor for GasScrubberSimple. + *

+ * + * @param name a {@link java.lang.String} object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public GasScrubberSimple(String name, StreamInterface inletStream) { + super(name, inletStream); + this.setOrientation("vertical"); + } + + /** {@inheritDoc} */ + @Override + public GasScrubberMechanicalDesign getMechanicalDesign() { + return new GasScrubberMechanicalDesign(this); + } + + /** + * {@inheritDoc} + * + *

+ * Setter for the field inletStream. + *

+ */ + @Override + public void setInletStream(StreamInterface inletStream) { + this.inletStream = inletStream; + + thermoSystem = inletStream.getThermoSystem().clone(); + gasSystem = thermoSystem.phaseToSystem(0); + gasOutStream = new Stream("gasOutStream", gasSystem); + + thermoSystem = inletStream.getThermoSystem().clone(); + liquidSystem = thermoSystem.phaseToSystem(1); + liquidOutStream = new Stream("liquidOutStream", liquidSystem); + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getLiquidOutStream() { + return liquidOutStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getGasOutStream() { + return gasOutStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getGas() { + return getGasOutStream(); + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getLiquid() { + return getLiquidOutStream(); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + thermoSystem = inletStream.getThermoSystem().clone(); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); + thermoOps.TPflash(); + if (separatorSection.size() > 0) { + calcLiquidCarryoverFraction(); + thermoSystem.addLiquidToGas(getLiquidCarryoverFraction()); } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGas() { - return getGasOutStream(); + gasSystem = thermoSystem.phaseToSystem(0); + gasSystem.setNumberOfPhases(1); + gasOutStream.setThermoSystem(gasSystem); + + thermoSystem = inletStream.getThermoSystem().clone(); + if (separatorSection.size() > 0) { + thermoSystem.addGasToLiquid(getGasCarryunderFraction()); + liquidSystem = thermoSystem.phaseToSystem(1); } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquid() { - return getLiquidOutStream(); + liquidSystem.setNumberOfPhases(1); + liquidOutStream.setThermoSystem(liquidSystem); + setCalculationIdentifier(id); + } + + /** + *

+ * calcLiquidCarryoverFraction. + *

+ * + * @return a double + */ + public double calcLiquidCarryoverFraction() { + double ktotal = 1.0; + + for (int i = 0; i < separatorSection.size(); i++) { + ktotal *= (1.0 - separatorSection.get(i).getEfficiency()); } - - /** {@inheritDoc} */ - @Override - public void run() { - thermoSystem = inletStream.getThermoSystem().clone(); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); - thermoOps.TPflash(); - if (separatorSection.size() > 0) { - calcLiquidCarryoverFraction(); - thermoSystem.addLiquidToGas(getLiquidCarryoverFraction()); - } - gasSystem = thermoSystem.phaseToSystem(0); - gasSystem.setNumberOfPhases(1); - gasOutStream.setThermoSystem(gasSystem); - - thermoSystem = inletStream.getThermoSystem().clone(); - if (separatorSection.size() > 0) { - thermoSystem.addGasToLiquid(getGasCarryunderFraction()); - liquidSystem = thermoSystem.phaseToSystem(1); - } - liquidSystem.setNumberOfPhases(1); - liquidOutStream.setThermoSystem(liquidSystem); - } - - /** - *

- * calcLiquidCarryoverFraction. - *

- * - * @return a double - */ - public double calcLiquidCarryoverFraction() { - double Ktot = 1.0; - - for (int i = 0; i < separatorSection.size(); i++) { - Ktot *= (1.0 - separatorSection.get(i).getEfficiency()); - } - System.out.println("Ktot " + (1.0 - Ktot)); - double area = getInternalDiameter() * getInternalDiameter() / 4.0 * 3.14; - double gasVel = - thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarVolume() / 1e5 / area; - setLiquidCarryoverFraction(Ktot); - return gasVel; - } + System.out.println("Ktot " + (1.0 - ktotal)); + double area = getInternalDiameter() * getInternalDiameter() / 4.0 * 3.14; + double gasVel = + thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarVolume() / 1e5 / area; + setLiquidCarryoverFraction(ktotal); + return gasVel; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/Hydrocyclone.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/Hydrocyclone.java index efa4d92bc9..d28e29a291 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/Hydrocyclone.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/Hydrocyclone.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.separator; +import java.util.UUID; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -38,9 +39,8 @@ public Hydrocyclone() { * Constructor for Hydrocyclone. *

* - * @param inletStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object */ @Deprecated public Hydrocyclone(StreamInterface inletStream) { @@ -49,7 +49,7 @@ public Hydrocyclone(StreamInterface inletStream) { /** * Constructor for Hydrocyclone. - * + * * @param name name of hydrosycolen */ public Hydrocyclone(String name) { @@ -61,10 +61,9 @@ public Hydrocyclone(String name) { * Constructor for Hydrocyclone. *

* - * @param name a {@link java.lang.String} object - * @param inletStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @param name a {@link java.lang.String} object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object */ public Hydrocyclone(String name, StreamInterface inletStream) { super(name, inletStream); @@ -85,9 +84,7 @@ public void setInletStream(StreamInterface inletStream) { * Getter for the field waterOutStream. *

* - * @return a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ public StreamInterface getWaterOutStream() { return waterOutStream; @@ -98,9 +95,7 @@ public StreamInterface getWaterOutStream() { * getOilOutStream. *

* - * @return a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ public StreamInterface getOilOutStream() { return liquidOutStream; @@ -108,8 +103,8 @@ public StreamInterface getOilOutStream() { /** {@inheritDoc} */ @Override - public void run() { - inletStreamMixer.run(); + public void run(UUID id) { + inletStreamMixer.run(id); thermoSystem = inletStreamMixer.getOutletStream().getThermoSystem().clone(); // double oilInWaterIn = 0.0001; // @@ -137,10 +132,9 @@ public void run() { } else { gasOutStream.setThermoSystem(thermoSystem.getEmptySystemClone()); } - // //gasOutStream.run(); - //// liquidSystem = thermoSystem.phaseToSystem(1); - //// liquidOutStream.setThermoSystem(liquidSystem); + // liquidSystem = thermoSystem.phaseToSystem(1); + // liquidOutStream.setThermoSystem(liquidSystem); if (thermoSystem.hasPhaseType("aqueous") || thermoSystem.hasPhaseType("oil")) { liquidOutStream.setThermoSystemFromPhase(thermoSystem, "liquid"); liquidOutStream.getFluid().init(2); @@ -148,8 +142,9 @@ public void run() { liquidOutStream.setThermoSystem(thermoSystem.getEmptySystemClone()); } // sOutStream.setPressure(overflowPressure, "bara"); - gasOutStream.run(); - liquidOutStream.run(); + gasOutStream.run(id); + liquidOutStream.run(id); + setCalculationIdentifier(id); } /** {@inheritDoc} */ diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/NeqGasScrubber.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/NeqGasScrubber.java index 6efa19914c..5a6e12807f 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/NeqGasScrubber.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/NeqGasScrubber.java @@ -1,6 +1,7 @@ package neqsim.processSimulation.processEquipment.separator; import java.util.ArrayList; +import java.util.UUID; import neqsim.processSimulation.mechanicalDesign.separator.GasScrubberMechanicalDesign; import neqsim.processSimulation.processEquipment.separator.sectionType.SeparatorSection; import neqsim.processSimulation.processEquipment.stream.Stream; @@ -16,137 +17,145 @@ * @version $Id: $Id */ public class NeqGasScrubber extends Separator { - private static final long serialVersionUID = 1000; - - SystemInterface thermoSystem, gasSystem, waterSystem, liquidSystem, thermoSystemCloned; - ArrayList scrubberSection = null; - StreamInterface inletStream; - StreamInterface gasOutStream; - StreamInterface liquidOutStream; - String name = new String(); - - /** - *

- * Constructor for NeqGasScrubber. - *

- */ - @Deprecated - public NeqGasScrubber() { - this("NeqGasScrubber"); - } - - /** - *

- * Constructor for NeqGasScrubber. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public NeqGasScrubber(StreamInterface inletStream) { - this("NeqGasScrubber", inletStream); - } - - /** - * Constructor for NeqGasScrubber. - * - * @param name name of unit operation - */ - public NeqGasScrubber(String name) { - super(name); - this.setOrientation("vertical"); - } - - /** - *

- * Constructor for NeqGasScrubber. - *

- * - * @param name a {@link java.lang.String} object - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public NeqGasScrubber(String name, StreamInterface inletStream) { - super(name, inletStream); - this.setOrientation("vertical"); - } - - public GasScrubberMechanicalDesign getMechanicalDesign() { - return new GasScrubberMechanicalDesign(this); - } - - /** - *

- * Setter for the field inletStream. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void setInletStream(StreamInterface inletStream) { - this.inletStream = inletStream; - - thermoSystem = inletStream.getThermoSystem().clone(); - gasSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[0]); - gasOutStream = new Stream("gasOutStream", gasSystem); - - thermoSystem = inletStream.getThermoSystem().clone(); - liquidSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[1]); - liquidOutStream = new Stream("liquidOutStream", liquidSystem); - } - - /** - *

- * addScrubberSection. - *

- * - * @param type a {@link java.lang.String} object - */ - public void addScrubberSection(String type) { - scrubberSection.add(new SeparatorSection("section" + scrubberSection.size() + 1, type, this)); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquidOutStream() { - return liquidOutStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGasOutStream() { - return gasOutStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGas() { - return getGasOutStream(); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquid() { - return getLiquidOutStream(); - } - - /** {@inheritDoc} */ - @Override - public void run() { - thermoSystem = inletStream.getThermoSystem().clone(); - gasSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[0]); - gasSystem.setNumberOfPhases(1); - gasOutStream.setThermoSystem(gasSystem); - - thermoSystem = inletStream.getThermoSystem().clone(); - liquidSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[1]); - liquidSystem.setNumberOfPhases(1); - liquidOutStream.setThermoSystem(liquidSystem); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - } + private static final long serialVersionUID = 1000; + + SystemInterface thermoSystem; + + SystemInterface gasSystem; + SystemInterface waterSystem; + SystemInterface liquidSystem; + SystemInterface thermoSystemCloned; + + StreamInterface inletStream; + StreamInterface gasOutStream; + StreamInterface liquidOutStream; + + ArrayList scrubberSection = null; + + /** + *

+ * Constructor for NeqGasScrubber. + *

+ */ + @Deprecated + public NeqGasScrubber() { + this("NeqGasScrubber"); + } + + /** + *

+ * Constructor for NeqGasScrubber. + *

+ * + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public NeqGasScrubber(StreamInterface inletStream) { + this("NeqGasScrubber", inletStream); + } + + /** + * Constructor for NeqGasScrubber. + * + * @param name name of unit operation + */ + public NeqGasScrubber(String name) { + super(name); + this.setOrientation("vertical"); + } + + /** + *

+ * Constructor for NeqGasScrubber. + *

+ * + * @param name a {@link java.lang.String} object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public NeqGasScrubber(String name, StreamInterface inletStream) { + super(name, inletStream); + this.setOrientation("vertical"); + } + + /** {@inheritDoc} */ + @Override + public GasScrubberMechanicalDesign getMechanicalDesign() { + return new GasScrubberMechanicalDesign(this); + } + + /** + * {@inheritDoc} + * + *

+ * Setter for the field inletStream. + *

+ */ + @Override + public void setInletStream(StreamInterface inletStream) { + this.inletStream = inletStream; + + thermoSystem = inletStream.getThermoSystem().clone(); + gasSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[0]); + gasOutStream = new Stream("gasOutStream", gasSystem); + + thermoSystem = inletStream.getThermoSystem().clone(); + liquidSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[1]); + liquidOutStream = new Stream("liquidOutStream", liquidSystem); + } + + /** + *

+ * addScrubberSection. + *

+ * + * @param type a {@link java.lang.String} object + */ + public void addScrubberSection(String type) { + scrubberSection.add(new SeparatorSection("section" + scrubberSection.size() + 1, type, this)); + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getLiquidOutStream() { + return liquidOutStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getGasOutStream() { + return gasOutStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getGas() { + return getGasOutStream(); + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getLiquid() { + return getLiquidOutStream(); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + thermoSystem = inletStream.getThermoSystem().clone(); + gasSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[0]); + gasSystem.setNumberOfPhases(1); + gasOutStream.setThermoSystem(gasSystem); + + thermoSystem = inletStream.getThermoSystem().clone(); + liquidSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[1]); + liquidSystem.setNumberOfPhases(1); + liquidOutStream.setThermoSystem(liquidSystem); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() {} } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/Separator.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/Separator.java index deddf5ec0a..df3447fdc9 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/Separator.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/Separator.java @@ -3,10 +3,15 @@ * * Created on 12. mars 2001, 19:48 */ + package neqsim.processSimulation.processEquipment.separator; import java.util.ArrayList; import java.util.Objects; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import com.google.gson.GsonBuilder; import neqsim.processSimulation.mechanicalDesign.separator.SeparatorMechanicalDesign; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.mixer.Mixer; @@ -17,6 +22,7 @@ import neqsim.processSimulation.processEquipment.separator.sectionType.ValveSection; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.util.monitor.SeparatorResponse; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -30,25 +36,43 @@ */ public class Separator extends ProcessEquipmentBaseClass implements SeparatorInterface { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Separator.class); + + SystemInterface thermoSystem; + SystemInterface gasSystem; + SystemInterface waterSystem; + SystemInterface liquidSystem; + SystemInterface thermoSystemCloned; + SystemInterface thermoSystem2; - SystemInterface thermoSystem, gasSystem, waterSystem, liquidSystem, thermoSystemCloned, - thermoSystem2; + /** Orientation of separator. "horizontal" or "vertical" */ private String orientation = "horizontal"; StreamInterface gasOutStream; StreamInterface liquidOutStream; + private double pressureDrop = 0.0; - private double internalDiameter = 1.0; public int numberOfInputStreams = 0; Mixer inletStreamMixer = new Mixer("Separator Inlet Stream Mixer"); private double efficiency = 1.0; private double liquidCarryoverFraction = 0.0; private double gasCarryunderFraction = 0.0; + + /** Length of separator volume. */ private double separatorLength = 5.0; - double liquidVolume = 1.0, gasVolume = 18.0; - private double liquidLevel = liquidVolume / (liquidVolume + gasVolume); + /** Inner diameter/height of separator volume. */ + private double internalDiameter = 1.0; + + /** LiquidLevel as volume fraction of liquidvolume/(liquid + gas volume). */ + private double liquidLevel = 0.5; + double liquidVolume = + Math.PI * internalDiameter * internalDiameter / 4.0 * separatorLength * liquidLevel; + double gasVolume = + Math.PI * internalDiameter * internalDiameter / 4.0 * separatorLength * (1.0 - liquidLevel); private double designLiquidLevelFraction = 0.8; ArrayList separatorSection = new ArrayList(); + SeparatorMechanicalDesign separatorMechanicalDesign; + /** * Constructor for Separator. */ @@ -61,9 +85,8 @@ public Separator() { /** * Constructor for Separator. * - * @param inletStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object */ @Deprecated public Separator(StreamInterface inletStream) { @@ -72,7 +95,7 @@ public Separator(StreamInterface inletStream) { /** * Constructor for Separator. - * + * * @param name Name of separator */ public Separator(String name) { @@ -82,18 +105,26 @@ public Separator(String name) { /** * Constructor for Separator. * - * @param name a {@link java.lang.String} object - * @param inletStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @param name a {@link java.lang.String} object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object */ public Separator(String name, StreamInterface inletStream) { this(name); setInletStream(inletStream); + numberOfInputStreams++; } - public SeparatorMechanicalDesign gMechanicalDesign() { - return new SeparatorMechanicalDesign(this); + /** {@inheritDoc} */ + @Override + public SeparatorMechanicalDesign getMechanicalDesign() { + return separatorMechanicalDesign; + } + + /** {@inheritDoc} */ + @Override + public void initMechanicalDesign() { + separatorMechanicalDesign = new SeparatorMechanicalDesign(this); } /** @@ -101,9 +132,8 @@ public SeparatorMechanicalDesign gMechanicalDesign() { * setInletStream. *

* - * @param inletStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object */ public void setInletStream(StreamInterface inletStream) { inletStreamMixer.addStream(inletStream); @@ -121,9 +151,8 @@ public void setInletStream(StreamInterface inletStream) { * addStream. *

* - * @param newStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object */ public void addStream(StreamInterface newStream) { if (numberOfInputStreams == 0) { @@ -139,9 +168,7 @@ public void addStream(StreamInterface newStream) { * Getter for the field liquidOutStream. *

* - * @return a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ public StreamInterface getLiquidOutStream() { return liquidOutStream; @@ -152,9 +179,7 @@ public StreamInterface getLiquidOutStream() { * Getter for the field gasOutStream. *

* - * @return a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ public StreamInterface getGasOutStream() { return gasOutStream; @@ -165,9 +190,7 @@ public StreamInterface getGasOutStream() { * getGas. *

* - * @return a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ public StreamInterface getGas() { return getGasOutStream(); @@ -178,9 +201,7 @@ public StreamInterface getGas() { * getLiquid. *

* - * @return a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object */ public StreamInterface getLiquid() { return getLiquidOutStream(); @@ -194,8 +215,8 @@ public SystemInterface getThermoSystem() { /** {@inheritDoc} */ @Override - public void run() { - inletStreamMixer.run(); + public void run(UUID id) { + inletStreamMixer.run(id); thermoSystem2 = inletStreamMixer.getOutletStream().getThermoSystem().clone(); thermoSystem2.setPressure(thermoSystem2.getPressure() - pressureDrop); @@ -212,57 +233,64 @@ public void run() { liquidOutStream.setThermoSystem(thermoSystem2.getEmptySystemClone()); } if (thermoSystem2.hasPhaseType("gas")) { - gasOutStream.run(); + gasOutStream.run(id); } else { gasOutStream.getFluid().init(3); } if (thermoSystem2.hasPhaseType("aqueous") || thermoSystem2.hasPhaseType("oil")) { - liquidOutStream.run(); + liquidOutStream.run(id); } else { - liquidOutStream.getFluid().init(3); + try { + liquidOutStream.getFluid().init(3); + } catch (Exception e) { + logger.error(e.getMessage()); + } } - // liquidOutStream.setThermoSystemFromPhase(thermoSystem2, "aqueous"); - try { - thermoSystem = thermoSystem2.clone(); - thermoSystem.setTotalNumberOfMoles(1.0e-10); - thermoSystem.init(1); - // System.out.println("number of phases " + thermoSystem.getNumberOfPhases()); - double totalliquidVolume = 0.0; - for (int j = 0; j < thermoSystem.getNumberOfPhases(); j++) { - double relFact = gasVolume / (thermoSystem2.getPhase(j).getVolume() * 1.0e-5); - if (j >= 1) { - relFact = liquidVolume / (thermoSystem2.getPhase(j).getVolume() * 1.0e-5); - - totalliquidVolume += liquidVolume / thermoSystem2.getPhase(j).getMolarVolume(); + if (getCalculateSteadyState()) { + thermoSystem = thermoSystem2; + } else { + try { + liquidVolume = + Math.PI * internalDiameter * internalDiameter / 4.0 * separatorLength * liquidLevel; + gasVolume = Math.PI * internalDiameter * internalDiameter / 4.0 * separatorLength + * (1.0 - liquidLevel); + thermoSystem = thermoSystem2.clone(); + thermoSystem.init(1); + thermoSystem.initPhysicalProperties("density"); + thermoSystem2.initPhysicalProperties("density"); + for (int j = 0; j < thermoSystem.getNumberOfPhases(); j++) { + double relFact = 1.0; + if (thermoSystem.getPhase(j).getPhaseTypeName().equals("gas")) { + relFact = gasVolume / (thermoSystem2.getPhase(j).getVolume("m3")); + } else { + relFact = liquidVolume / (thermoSystem2.getPhase(j).getVolume("m3")); + } + for (int i = 0; i < thermoSystem.getPhase(j).getNumberOfComponents(); i++) { + thermoSystem.addComponent(i, (relFact - 1.0) + * thermoSystem2.getPhase(j).getComponent(i).getNumberOfMolesInPhase(), j); + } } - for (int i = 0; i < thermoSystem.getPhase(j).getNumberOfComponents(); i++) { - thermoSystem.addComponent(thermoSystem.getPhase(j).getComponent(i).getComponentNumber(), - relFact * thermoSystem2.getPhase(j).getComponent(i).getNumberOfMolesInPhase(), j); + ThermodynamicOperations ops = new ThermodynamicOperations(thermoSystem); + ops.TPflash(); + thermoSystem.init(3); + thermoSystem.initPhysicalProperties("density"); + if (thermoSystem.hasPhaseType("oil") || thermoSystem.hasPhaseType("aqueous")) { + liquidLevel = thermoSystem.getPhase(1).getVolume("m3") / (liquidVolume + gasVolume); + liquidVolume = getLiquidLevel() * 3.14 / 4.0 * getInternalDiameter() + * getInternalDiameter() * getSeparatorLength(); + } else { + liquidLevel = 0.0; + liquidVolume = 0.0; } - } - if (thermoSystem.hasPhaseType("gas")) { - thermoSystem.setBeta(gasVolume / thermoSystem2.getPhase(0).getMolarVolume() - / (gasVolume / thermoSystem2.getPhase(0).getMolarVolume() + totalliquidVolume)); + gasVolume = (1.0 - getLiquidLevel()) * 3.14 / 4.0 * getInternalDiameter() + * getInternalDiameter() * getSeparatorLength(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - thermoSystem.initBeta(); - thermoSystem.init(3); - // System.out.println("moles in separator " + thermoSystem.getNumberOfMoles()); - // double volume1 = thermoSystem.getVolume(); - // System.out.println("volume1 bef " + volume1); - // System.out.println("beta " + thermoSystem.getBeta()); - - liquidLevel = thermoSystem.getPhase(1).getVolume() * 1e-5 / (liquidVolume + gasVolume); - liquidVolume = getLiquidLevel() * 3.14 / 4.0 * getInternalDiameter() * getInternalDiameter() - * getSeparatorLength(); - gasVolume = (1.0 - getLiquidLevel()) * 3.14 / 4.0 * getInternalDiameter() - * getInternalDiameter() * getSeparatorLength(); - // System.out.println("moles out" + - // liquidOutStream.getThermoSystem().getTotalNumberOfMoles()); - } catch (Exception e) { - e.printStackTrace(); } - thermoSystem = thermoSystem2; + + setCalculationIdentifier(id); } /** {@inheritDoc} */ @@ -279,52 +307,77 @@ public String[][] getResultTable() { /** {@inheritDoc} */ @Override - public void runTransient(double dt) { + public void runTransient(double dt, UUID id) { if (getCalculateSteadyState()) { - run(); - return; - } + run(id); + increaseTime(dt); + setCalculationIdentifier(id); + } else { + inletStreamMixer.run(id); + thermoSystem.init(3); + thermoSystem.initPhysicalProperties("density"); + try { + gasOutStream.getThermoSystem().init(3); + liquidOutStream.getThermoSystem().init(3); + } catch (Exception e) { + logger.error(e.getMessage()); + } + boolean hasliq = false; + double deliq = 0.0; + if (thermoSystem.hasPhaseType("oil") || thermoSystem.hasPhaseType("aqueous")) { + hasliq = true; + deliq = -liquidOutStream.getThermoSystem().getEnthalpy(); + } + double deltaEnergy = inletStreamMixer.getOutletStream().getThermoSystem().getEnthalpy() + - gasOutStream.getThermoSystem().getEnthalpy() + deliq; + double newEnergy = thermoSystem.getInternalEnergy() + dt * deltaEnergy; + thermoSystem.init(0); + for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { + double dncomp = 0.0; + dncomp += + inletStreamMixer.getOutletStream().getThermoSystem().getComponent(i).getNumberOfmoles(); + double dniliq = 0.0; + if (hasliq) { + dniliq = -liquidOutStream.getThermoSystem().getComponent(i).getNumberOfmoles(); + } + dncomp += -gasOutStream.getThermoSystem().getComponent(i).getNumberOfmoles() + dniliq; - inletStreamMixer.run(); - - // System.out.println("moles out" + - // liquidOutStream.getThermoSystem().getTotalNumberOfMoles()); - // double inMoles = - // inletStreamMixer.getOutStream().getThermoSystem().getTotalNumberOfMoles(); - // double gasoutMoles = gasOutStream.getThermoSystem().getNumberOfMoles(); - // double liqoutMoles = liquidOutStream.getThermoSystem().getNumberOfMoles(); - thermoSystem.init(3); - gasOutStream.getThermoSystem().init(3); - liquidOutStream.getThermoSystem().init(3); - double volume1 = thermoSystem.getVolume(); - // System.out.println("volume1 " + volume1); - double deltaEnergy = inletStreamMixer.getOutletStream().getThermoSystem().getEnthalpy() - - gasOutStream.getThermoSystem().getEnthalpy() - - liquidOutStream.getThermoSystem().getEnthalpy(); - // System.out.println("enthalph delta " + deltaEnergy); - double newEnergy = thermoSystem.getInternalEnergy() + dt * deltaEnergy; - for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { - double dn = inletStreamMixer.getOutletStream().getThermoSystem().getPhase(0).getComponent(i) - .getNumberOfMolesInPhase() - + inletStreamMixer.getOutletStream().getThermoSystem().getPhase(1).getComponent(i) - .getNumberOfMolesInPhase() - - gasOutStream.getThermoSystem().getPhase(0).getComponent(i).getNumberOfMolesInPhase() - - liquidOutStream.getThermoSystem().getPhase(0).getComponent(i).getNumberOfMolesInPhase(); - // System.out.println("dn " + dn); - thermoSystem.addComponent(inletStreamMixer.getOutletStream().getThermoSystem().getPhase(0) - .getComponent(i).getComponentNumber(), dn * dt); - } - ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); - thermoOps.VUflash(volume1, newEnergy); + thermoSystem.addComponent(i, dncomp * dt); + } + ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); + thermoOps.VUflash(gasVolume + liquidVolume, newEnergy, "m3", "J"); + thermoSystem.initPhysicalProperties("density"); - setTempPres(thermoSystem.getTemperature(), thermoSystem.getPressure()); + if (thermoSystem.hasPhaseType("gas")) { + gasOutStream.getFluid() + .setMolarComposition(thermoSystem.getPhase("gas").getMolarComposition()); + } + if (thermoSystem.hasPhaseType("oil") || thermoSystem.hasPhaseType("aqueous")) { + if (thermoSystem.getNumberOfPhases() > 1) { + liquidOutStream.getFluid() + .setMolarComposition(thermoSystem.getPhase(1).getMolarComposition()); + } + } + setTempPres(thermoSystem.getTemperature(), thermoSystem.getPressure()); - liquidLevel = thermoSystem.getPhase(1).getVolume() * 1e-5 / (liquidVolume + gasVolume); - // System.out.println("liquid level " + liquidLevel); - liquidVolume = getLiquidLevel() * 3.14 / 4.0 * getInternalDiameter() * getInternalDiameter() - * getSeparatorLength(); - gasVolume = (1.0 - getLiquidLevel()) * 3.14 / 4.0 * getInternalDiameter() - * getInternalDiameter() * getSeparatorLength(); + liquidLevel = 0.0; + if (thermoSystem.hasPhaseType("oil") || thermoSystem.hasPhaseType("aqueous")) { + double volumeLoc = 0.0; + if (thermoSystem.hasPhaseType("oil")) { + volumeLoc += thermoSystem.getPhase("oil").getVolume("m3"); + } + if (thermoSystem.hasPhaseType("aqueous")) { + volumeLoc += thermoSystem.getPhase("aqueous").getVolume("m3"); + } + liquidLevel = volumeLoc / (liquidVolume + gasVolume); + } + liquidVolume = getLiquidLevel() * 3.14 / 4.0 * getInternalDiameter() * getInternalDiameter() + * getSeparatorLength(); + gasVolume = (1.0 - getLiquidLevel()) * 3.14 / 4.0 * getInternalDiameter() + * getInternalDiameter() * getSeparatorLength(); + // System.out.println("gas volume " + gasVolume + " liq volime " + liquidVolume); + setCalculationIdentifier(id); + } } /** @@ -343,9 +396,11 @@ public void setTempPres(double temp, double pres) { gasOutStream.getThermoSystem().setPressure(pres); liquidOutStream.getThermoSystem().setPressure(pres); - inletStreamMixer.run(); - gasOutStream.run(); - liquidOutStream.run(); + UUID id = UUID.randomUUID(); + + inletStreamMixer.run(id); + gasOutStream.run(id); + liquidOutStream.run(id); } /** @@ -414,6 +469,12 @@ public void setGasCarryunderFraction(double gasCarryunderFraction) { this.gasCarryunderFraction = gasCarryunderFraction; } + /** {@inheritDoc} */ + @Override + public void setLiquidLevel(double liquidlev) { + liquidLevel = liquidlev; + } + /** *

* Getter for the field liquidLevel. @@ -472,7 +533,7 @@ public void setInternalDiameter(double diameter) { * @return a double */ public double getGasSuperficialVelocity() { - return thermoSystem.getPhase(0).getTotalVolume() / 1e5 + return thermoSystem.getPhase(0).getVolume("m3") / (neqsim.thermo.ThermodynamicConstantsInterface.pi * getInternalDiameter() * getInternalDiameter() / 4.0); } @@ -527,7 +588,7 @@ public double getDeRatedGasLoadFactor() { if (surfaceTension < 10.0e-3) { derating = 1.0 - 0.5 * (10.0e-3 - surfaceTension) / 10.0e-3; } - System.out.println("derating " + derating); + // System.out.println("derating " + derating); double term1 = (thermoSystem.getPhase(1).getPhysicalProperties().getDensity() - thermoSystem.getPhase(0).getPhysicalProperties().getDensity()) / thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); @@ -545,11 +606,12 @@ public double getDeRatedGasLoadFactor() { public double getDeRatedGasLoadFactor(int phase) { thermoSystem.initPhysicalProperties(); double derating = 1.0; - double surfaceTension = thermoSystem.getInterphaseProperties().getSurfaceTension(phase - 1, phase); + double surfaceTension = + thermoSystem.getInterphaseProperties().getSurfaceTension(phase - 1, phase); if (surfaceTension < 10.0e-3) { derating = 1.0 - 0.5 * (10.0e-3 - surfaceTension) / 10.0e-3; } - System.out.println("derating " + derating); + // System.out.println("derating " + derating); double term1 = (thermoSystem.getPhase(phase).getPhysicalProperties().getDensity() - thermoSystem.getPhase(0).getPhysicalProperties().getDensity()) / thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); @@ -630,7 +692,7 @@ public SeparatorSection getSeparatorSection(String name) { return sec; } } - System.out.println("no section with name: " + name + " found....."); + // System.out.println("no section with name: " + name + " found....."); return null; } @@ -654,15 +716,15 @@ public ArrayList getSeparatorSections() { * @param type a {@link java.lang.String} object */ public void addSeparatorSection(String name, String type) { - if (type.equals("vane")) { + if (type.equalsIgnoreCase("vane")) { separatorSection.add(new SeparatorSection(name, type, this)); - } else if (type.equals("meshpad")) { + } else if (type.equalsIgnoreCase("meshpad")) { separatorSection.add(new MeshSection(name, type, this)); - } else if (type.equals("manway")) { + } else if (type.equalsIgnoreCase("manway")) { separatorSection.add(new ManwaySection(name, type, this)); - } else if (type.equals("valve")) { + } else if (type.equalsIgnoreCase("valve")) { separatorSection.add(new ValveSection(name, type, this)); - } else if (type.equals("nozzle")) { + } else if (type.equalsIgnoreCase("nozzle")) { separatorSection.add(new NozzleSection(name, type, this)); } else { separatorSection.add(new SeparatorSection(name, type, this)); @@ -708,7 +770,7 @@ public double getEntropyProduction(String unit) { if (thermoSystem.hasPhaseType("aqueous") || thermoSystem.hasPhaseType("oil")) { try { getLiquidOutStream().getThermoSystem().init(3); - } catch (Exception e) { + } catch (Exception ex) { } } if (thermoSystem.hasPhaseType("gas")) { @@ -763,12 +825,15 @@ public int hashCode() { /** {@inheritDoc} */ @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (!super.equals(obj)) + } + if (!super.equals(obj)) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } Separator other = (Separator) obj; return Double.doubleToLongBits(designLiquidLevelFraction) == Double .doubleToLongBits(other.designLiquidLevelFraction) @@ -799,11 +864,27 @@ public boolean equals(Object obj) { && Objects.equals(waterSystem, other.waterSystem); } + /** + *

+ * getFeedStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getFeedStream() { + return inletStreamMixer.getOutletStream(); + } + + /** {@inheritDoc} */ + @Override + public String toJson() { + return new GsonBuilder().create().toJson(new SeparatorResponse(this)); + } + /* - * private class SeparatorReport extends Object{ public Double gasLoadFactor; - * SeparatorReport(){ + * private class SeparatorReport extends Object{ public Double gasLoadFactor; SeparatorReport(){ * gasLoadFactor = getGasLoadFactor(); } } - * + * * public SeparatorReport getReport(){ return this.new SeparatorReport(); } */ } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/SeparatorInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/SeparatorInterface.java index e081d25d1a..c0024e5c4e 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/SeparatorInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/SeparatorInterface.java @@ -3,6 +3,7 @@ * * Created on 22. august 2001, 17:22 */ + package neqsim.processSimulation.processEquipment.separator; import neqsim.processSimulation.SimulationInterface; @@ -17,21 +18,30 @@ * @version $Id: $Id */ public interface SeparatorInterface extends SimulationInterface { - /** - *

- * getThermoSystem. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getThermoSystem(); + /** + *

+ * getThermoSystem. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getThermoSystem(); + + /** + *

+ * setInternalDiameter. + *

+ * + * @param diam a double + */ + public void setInternalDiameter(double diam); - /** - *

- * setInternalDiameter. - *

- * - * @param diam a double - */ - public void setInternalDiameter(double diam); + /** + *

+ * Setter for the field liquidLevel. + *

+ * + * @param liquidlev a double + */ + public void setLiquidLevel(double liquidlev); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/ThreePhaseSeparator.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/ThreePhaseSeparator.java index edecc81807..daf8431c6d 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/ThreePhaseSeparator.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/ThreePhaseSeparator.java @@ -1,7 +1,10 @@ package neqsim.processSimulation.processEquipment.separator; +import java.util.UUID; +import com.google.gson.GsonBuilder; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.util.monitor.SeparatorResponse; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** @@ -61,7 +64,7 @@ public ThreePhaseSeparator(StreamInterface inletStream) { /** * Constructor for ThreePhaseSeparator. - * + * * @param name name of separator */ public ThreePhaseSeparator(String name) { @@ -155,8 +158,8 @@ public StreamInterface getOilOutStream() { /** {@inheritDoc} */ @Override - public void run() { - inletStreamMixer.run(); + public void run(UUID id) { + inletStreamMixer.run(id); thermoSystem = inletStreamMixer.getOutletStream().getThermoSystem().clone(); thermoSystem.setMultiPhaseCheck(true); @@ -182,32 +185,31 @@ public void run() { // //gasOutStream.setThermoSystem(gasSystem); if (thermoSystem.hasPhaseType("gas")) { gasOutStream.setThermoSystemFromPhase(thermoSystem, "gas"); - gasOutStream.run(); + gasOutStream.run(id); } else { gasOutStream.setThermoSystem(thermoSystem.getEmptySystemClone()); } - // //gasOutStream.run(); - //// liquidSystem = thermoSystem.phaseToSystem(1); - //// liquidOutStream.setThermoSystem(liquidSystem); + // quidSystem = thermoSystem.phaseToSystem(1); + // liquidOutStream.setThermoSystem(liquidSystem); if (thermoSystem.hasPhaseType("oil")) { // thermoSystem.display(); liquidOutStream.setThermoSystemFromPhase(thermoSystem, "oil"); - liquidOutStream.run(); + liquidOutStream.run(id); // thermoSystem.display(); } else { liquidOutStream.setThermoSystem(thermoSystem.getEmptySystemClone()); } - // //liquidOutStream.run(); - //// waterSystem = thermoSystem.phaseToSystem(2); - //// waterOutStream.setThermoSystem(waterSystem); + // waterSystem = thermoSystem.phaseToSystem(2); + // waterOutStream.setThermoSystem(waterSystem); if (thermoSystem.hasPhaseType("aqueous")) { waterOutStream.setThermoSystemFromPhase(thermoSystem, "aqueous"); - waterOutStream.run(); + waterOutStream.run(id); } else { waterOutStream.setThermoSystem(thermoSystem.getEmptySystemClone()); } + setCalculationIdentifier(id); } /** {@inheritDoc} */ @@ -267,4 +269,10 @@ public double getExergyChange(String unit, double surroundingTemperature) { + getOilOutStream().getThermoSystem().getEntropy(unit) + getGasOutStream().getThermoSystem().getExergy(surroundingTemperature, unit) - entrop; } + + /** {@inheritDoc} */ + @Override + public String toJson() { + return new GsonBuilder().create().toJson(new SeparatorResponse(this)); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/TwoPhaseSeparator.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/TwoPhaseSeparator.java index 226595cb01..2e9322855c 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/TwoPhaseSeparator.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/TwoPhaseSeparator.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.separator; +import java.util.UUID; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; @@ -13,113 +14,118 @@ * @version $Id: $Id */ public class TwoPhaseSeparator extends Separator { - private static final long serialVersionUID = 1000; - - SystemInterface thermoSystem, gasSystem, waterSystem, liquidSystem, thermoSystemCloned; - StreamInterface inletStream; - StreamInterface gasOutStream; - StreamInterface liquidOutStream; - String name = new String(); - - /** - *

- * Constructor for TwoPhaseSeparator. - *

- */ - @Deprecated - public TwoPhaseSeparator() { - this("TwoPhaseSeparator"); - } - - /** - *

- * Constructor for TwoPhaseSeparator. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public TwoPhaseSeparator(StreamInterface inletStream) { - this("TwoPhaseSeparator", inletStream); - } - - /** - * Constructor for TwoPhaseSeparator. - * - * @param name name of separator - */ - public TwoPhaseSeparator(String name) { - super(name); - } - - /** - *

- * Constructor for TwoPhaseSeparator. - *

- * - * @param name a {@link java.lang.String} object - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public TwoPhaseSeparator(String name, StreamInterface inletStream) { - super(name, inletStream); - } - - /** {@inheritDoc} */ - @Override - public void setInletStream(StreamInterface inletStream) { - this.inletStream = inletStream; - - thermoSystem = inletStream.getThermoSystem().clone(); - gasSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[0]); - gasOutStream = new Stream("gasOutStream", gasSystem); - - thermoSystem = inletStream.getThermoSystem().clone(); - liquidSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[1]); - liquidOutStream = new Stream("liquidOutStream", liquidSystem); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquidOutStream() { - return liquidOutStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGasOutStream() { - return gasOutStream; - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getGas() { - return getGasOutStream(); - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getLiquid() { - return getLiquidOutStream(); - } - - /** {@inheritDoc} */ - @Override - public void run() { - thermoSystem = inletStream.getThermoSystem().clone(); - gasSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[0]); - gasSystem.setNumberOfPhases(1); - gasOutStream.setThermoSystem(gasSystem); - - thermoSystem = inletStream.getThermoSystem().clone(); - liquidSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[1]); - liquidSystem.setNumberOfPhases(1); - liquidOutStream.setThermoSystem(liquidSystem); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - } + private static final long serialVersionUID = 1000; + + SystemInterface thermoSystem; + + SystemInterface gasSystem; + SystemInterface waterSystem; + SystemInterface liquidSystem; + SystemInterface thermoSystemCloned; + + StreamInterface inletStream; + StreamInterface gasOutStream; + StreamInterface liquidOutStream; + + /** + *

+ * Constructor for TwoPhaseSeparator. + *

+ */ + @Deprecated + public TwoPhaseSeparator() { + this("TwoPhaseSeparator"); + } + + /** + *

+ * Constructor for TwoPhaseSeparator. + *

+ * + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public TwoPhaseSeparator(StreamInterface inletStream) { + this("TwoPhaseSeparator", inletStream); + } + + /** + * Constructor for TwoPhaseSeparator. + * + * @param name name of separator + */ + public TwoPhaseSeparator(String name) { + super(name); + } + + /** + *

+ * Constructor for TwoPhaseSeparator. + *

+ * + * @param name a {@link java.lang.String} object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public TwoPhaseSeparator(String name, StreamInterface inletStream) { + super(name, inletStream); + } + + /** {@inheritDoc} */ + @Override + public void setInletStream(StreamInterface inletStream) { + this.inletStream = inletStream; + + thermoSystem = inletStream.getThermoSystem().clone(); + gasSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[0]); + gasOutStream = new Stream("gasOutStream", gasSystem); + + thermoSystem = inletStream.getThermoSystem().clone(); + liquidSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[1]); + liquidOutStream = new Stream("liquidOutStream", liquidSystem); + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getLiquidOutStream() { + return liquidOutStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getGasOutStream() { + return gasOutStream; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getGas() { + return getGasOutStream(); + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getLiquid() { + return getLiquidOutStream(); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + thermoSystem = inletStream.getThermoSystem().clone(); + gasSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[0]); + gasSystem.setNumberOfPhases(1); + gasOutStream.setThermoSystem(gasSystem); + + thermoSystem = inletStream.getThermoSystem().clone(); + liquidSystem = thermoSystem.phaseToSystem(thermoSystem.getPhases()[1]); + liquidSystem.setNumberOfPhases(1); + liquidOutStream.setThermoSystem(liquidSystem); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() {} } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/ManwaySection.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/ManwaySection.java index 3621926d3f..0a5b15e854 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/ManwaySection.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/ManwaySection.java @@ -12,28 +12,30 @@ * @version $Id: $Id */ public class ManwaySection extends SeparatorSection { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ManwaySection. - *

- * - * @param name a {@link java.lang.String} object - * @param type a {@link java.lang.String} object - * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object - */ - public ManwaySection(String name, String type, Separator sep) { - super(name, type, sep); - } + /** + *

+ * Constructor for ManwaySection. + *

+ * + * @param name a {@link java.lang.String} object + * @param type a {@link java.lang.String} object + * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object + */ + public ManwaySection(String name, String type, Separator sep) { + super(name, type, sep); + } - public MechManwaySection getMechanicalDesign() { - return new MechManwaySection(this); - } + /** {@inheritDoc} */ + @Override + public MechManwaySection getMechanicalDesign() { + return new MechManwaySection(this); + } - /** {@inheritDoc} */ - @Override - public double calcEfficiency() { - return 1.0; - } + /** {@inheritDoc} */ + @Override + public double calcEfficiency() { + return 1.0; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/MeshSection.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/MeshSection.java index c9f6a7273f..e330691054 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/MeshSection.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/MeshSection.java @@ -12,34 +12,35 @@ * @version $Id: $Id */ public class MeshSection extends SeparatorSection { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + /** + *

+ * Constructor for MeshSection. + *

+ * + * @param name a {@link java.lang.String} object + * @param type a {@link java.lang.String} object + * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object + */ + public MeshSection(String name, String type, Separator sep) { + super(name, type, sep); + } - /** - *

- * Constructor for MeshSection. - *

- * - * @param name a {@link java.lang.String} object - * @param type a {@link java.lang.String} object - * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object - */ - public MeshSection(String name, String type, Separator sep) { - super(name, type, sep); - } - - public MecMeshSection getMechanicalDesign() { - return new MecMeshSection(this); - } + /** {@inheritDoc} */ + @Override + public MecMeshSection getMechanicalDesign() { + return new MecMeshSection(this); + } - /** {@inheritDoc} */ - @Override - public double calcEfficiency() { - double gasLoadF = getSeparator().getGasLoadFactor(); - if (gasLoadF > 0.1) { - return 0.1 / gasLoadF; - } else { - return 1.0; - } + /** {@inheritDoc} */ + @Override + public double calcEfficiency() { + double gasLoadF = getSeparator().getGasLoadFactor(); + if (gasLoadF > 0.1) { + return 0.1 / gasLoadF; + } else { + return 1.0; } + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/NozzleSection.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/NozzleSection.java index fb0d649366..3483ec3aef 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/NozzleSection.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/NozzleSection.java @@ -12,28 +12,30 @@ * @version $Id: $Id */ public class NozzleSection extends SeparatorSection { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for NozzleSection. - *

- * - * @param name a {@link java.lang.String} object - * @param type a {@link java.lang.String} object - * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object - */ - public NozzleSection(String name, String type, Separator sep) { - super(name, type, sep); - } + /** + *

+ * Constructor for NozzleSection. + *

+ * + * @param name a {@link java.lang.String} object + * @param type a {@link java.lang.String} object + * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object + */ + public NozzleSection(String name, String type, Separator sep) { + super(name, type, sep); + } - public MechNozzleSection getMechanicalDesign() { - return new MechNozzleSection(this); - } + /** {@inheritDoc} */ + @Override + public MechNozzleSection getMechanicalDesign() { + return new MechNozzleSection(this); + } - /** {@inheritDoc} */ - @Override - public double calcEfficiency() { - return 1.0; - } + /** {@inheritDoc} */ + @Override + public double calcEfficiency() { + return 1.0; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/PackedSection.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/PackedSection.java index d6e3e9fe06..cd48cda135 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/PackedSection.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/PackedSection.java @@ -11,29 +11,29 @@ * @version $Id: $Id */ public class PackedSection extends SeparatorSection { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PackedSection. - *

- * - * @param name a {@link java.lang.String} object - * @param type a {@link java.lang.String} object - * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object - */ - public PackedSection(String name, String type, Separator sep) { - super(name, type, sep); - } + /** + *

+ * Constructor for PackedSection. + *

+ * + * @param name a {@link java.lang.String} object + * @param type a {@link java.lang.String} object + * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object + */ + public PackedSection(String name, String type, Separator sep) { + super(name, type, sep); + } - /** {@inheritDoc} */ - @Override - public double calcEfficiency() { - double gasLoadF = getSeparator().getGasLoadFactor(); - if (gasLoadF > 0.1) { - return 0.1 / gasLoadF; - } else { - return 1.0; - } + /** {@inheritDoc} */ + @Override + public double calcEfficiency() { + double gasLoadF = getSeparator().getGasLoadFactor(); + if (gasLoadF > 0.1) { + return 0.1 / gasLoadF; + } else { + return 1.0; } + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/SeparatorSection.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/SeparatorSection.java index 56f3647965..bd73553d9d 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/SeparatorSection.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/SeparatorSection.java @@ -13,178 +13,175 @@ * @version $Id: $Id */ public class SeparatorSection extends NamedBaseClass { - private static final long serialVersionUID = 1000; - - private double efficiency = 0.95; - public Separator separator = null; - private boolean calcEfficiency = false; - private double pressureDrop = 33 / 5.0 * 1e-3;// bar - String type; - public double outerDiameter = 1.0; - - /** - *

- * Constructor for SeparatorSection. - *

- * - * @param name a {@link java.lang.String} object - * @param type a {@link java.lang.String} object - * @param sep a - * {@link neqsim.processSimulation.processEquipment.separator.Separator} - * object - */ - public SeparatorSection(String name, String type, Separator sep) { - super(name); - this.type = type; - this.separator = sep; - } - - /** - *

- * calcEfficiency. - *

- * - * @return a double - */ - public double calcEfficiency() { - return efficiency; - } - - /** - *

- * Getter for the field efficiency. - *

- * - * @return the efficiency - */ - public double getEfficiency() { - if (isCalcEfficiency()) { - return calcEfficiency(); - } - return efficiency; - } - - /** - *

- * Setter for the field efficiency. - *

- * - * @param efficiency the efficiency to set - */ - public void setEfficiency(double efficiency) { - this.efficiency = efficiency; - } - - /** - *

- * isCalcEfficiency. - *

- * - * @return the calcEfficiency - */ - public boolean isCalcEfficiency() { - return calcEfficiency; - } - - /** - *

- * Setter for the field calcEfficiency. - *

- * - * @param calcEfficiency the calcEfficiency to set - */ - public void setCalcEfficiency(boolean calcEfficiency) { - this.calcEfficiency = calcEfficiency; - } - - /** - *

- * getMinimumLiquidSealHeight. - *

- * - * @return a double - */ - public double getMinimumLiquidSealHeight() { - return getPressureDrop() * 1e5 / neqsim.thermo.ThermodynamicConstantsInterface.gravity - / (getSeparator().getThermoSystem().getPhase(1).getPhysicalProperties().getDensity() - - getSeparator().getThermoSystem().getPhase(0).getPhysicalProperties() - .getDensity()); - } - - /** - *

- * getPressureDrop. - *

- * - * @return the pressureDrop - */ - public double getPressureDrop() { - return pressureDrop; - } - - /** - *

- * setPressureDrop. - *

- * - * @param pressureDrop the pressureDrop to set - */ - public void setPressureDrop(double pressureDrop) { - this.pressureDrop = pressureDrop; - } - - /** - *

- * Getter for the field mechanicalDesign. - *

- * - * @return the mechanicalDesign - */ - public SepDesignSection getMechanicalDesign() { - return new SepDesignSection(this); - } - - /** - *

- * Getter for the field separator. - *

- * - * @return the separator - */ - public Separator getSeparator() { - return separator; - } - - /** - *

- * Setter for the field separator. - *

- * - * @param separator the separator to set - */ - public void setSeparator(Separator separator) { - this.separator = separator; - } - - /** - *

- * Getter for the field outerDiameter. - *

- * - * @return the outerDiameter - */ - public double getOuterDiameter() { - return outerDiameter; - } - - /** - *

- * Setter for the field outerDiameter. - *

- * - * @param outerDiameter the outerDiameter to set - */ - public void setOuterDiameter(double outerDiameter) { - this.outerDiameter = outerDiameter; + private static final long serialVersionUID = 1000; + + private double efficiency = 0.95; + public Separator separator = null; + private boolean calcEfficiency = false; + private double pressureDrop = 33 / 5.0 * 1e-3; // bar + String type; + public double outerDiameter = 1.0; + + /** + *

+ * Constructor for SeparatorSection. + *

+ * + * @param name a {@link java.lang.String} object + * @param type a {@link java.lang.String} object + * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object + */ + public SeparatorSection(String name, String type, Separator sep) { + super(name); + this.type = type; + this.separator = sep; + } + + /** + *

+ * calcEfficiency. + *

+ * + * @return a double + */ + public double calcEfficiency() { + return efficiency; + } + + /** + *

+ * Getter for the field efficiency. + *

+ * + * @return the efficiency + */ + public double getEfficiency() { + if (isCalcEfficiency()) { + return calcEfficiency(); } + return efficiency; + } + + /** + *

+ * Setter for the field efficiency. + *

+ * + * @param efficiency the efficiency to set + */ + public void setEfficiency(double efficiency) { + this.efficiency = efficiency; + } + + /** + *

+ * isCalcEfficiency. + *

+ * + * @return the calcEfficiency + */ + public boolean isCalcEfficiency() { + return calcEfficiency; + } + + /** + *

+ * Setter for the field calcEfficiency. + *

+ * + * @param calcEfficiency the calcEfficiency to set + */ + public void setCalcEfficiency(boolean calcEfficiency) { + this.calcEfficiency = calcEfficiency; + } + + /** + *

+ * getMinimumLiquidSealHeight. + *

+ * + * @return a double + */ + public double getMinimumLiquidSealHeight() { + return getPressureDrop() * 1e5 / neqsim.thermo.ThermodynamicConstantsInterface.gravity + / (getSeparator().getThermoSystem().getPhase(1).getPhysicalProperties().getDensity() + - getSeparator().getThermoSystem().getPhase(0).getPhysicalProperties().getDensity()); + } + + /** + *

+ * getPressureDrop. + *

+ * + * @return the pressureDrop + */ + public double getPressureDrop() { + return pressureDrop; + } + + /** + *

+ * setPressureDrop. + *

+ * + * @param pressureDrop the pressureDrop to set + */ + public void setPressureDrop(double pressureDrop) { + this.pressureDrop = pressureDrop; + } + + /** + *

+ * Getter for the field mechanicalDesign. + *

+ * + * @return the mechanicalDesign + */ + public SepDesignSection getMechanicalDesign() { + return new SepDesignSection(this); + } + + /** + *

+ * Getter for the field separator. + *

+ * + * @return the separator + */ + public Separator getSeparator() { + return separator; + } + + /** + *

+ * Setter for the field separator. + *

+ * + * @param separator the separator to set + */ + public void setSeparator(Separator separator) { + this.separator = separator; + } + + /** + *

+ * Getter for the field outerDiameter. + *

+ * + * @return the outerDiameter + */ + public double getOuterDiameter() { + return outerDiameter; + } + + /** + *

+ * Setter for the field outerDiameter. + *

+ * + * @param outerDiameter the outerDiameter to set + */ + public void setOuterDiameter(double outerDiameter) { + this.outerDiameter = outerDiameter; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/ValveSection.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/ValveSection.java index cb5f977ef8..847313429f 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/ValveSection.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/ValveSection.java @@ -12,33 +12,35 @@ * @version $Id: $Id */ public class ValveSection extends SeparatorSection { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ValveSection. - *

- * - * @param name a {@link java.lang.String} object - * @param type a {@link java.lang.String} object - * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object - */ - public ValveSection(String name, String type, Separator sep) { - super(name, type, sep); - } + /** + *

+ * Constructor for ValveSection. + *

+ * + * @param name a {@link java.lang.String} object + * @param type a {@link java.lang.String} object + * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object + */ + public ValveSection(String name, String type, Separator sep) { + super(name, type, sep); + } - public DistillationTraySection getMechanicalDesign() { - return new DistillationTraySection(this); - } + /** {@inheritDoc} */ + @Override + public DistillationTraySection getMechanicalDesign() { + return new DistillationTraySection(this); + } - /** {@inheritDoc} */ - @Override - public double calcEfficiency() { - double gasLoadF = getSeparator().getGasLoadFactor(); - if (gasLoadF > 0.1) { - return 0.1 / gasLoadF; - } else { - return 1.0; - } + /** {@inheritDoc} */ + @Override + public double calcEfficiency() { + double gasLoadF = getSeparator().getGasLoadFactor(); + if (gasLoadF > 0.1) { + return 0.1 / gasLoadF; + } else { + return 1.0; } + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/VaneSection.java b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/VaneSection.java index 1e56c9e486..350379f2bd 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/VaneSection.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/separator/sectionType/VaneSection.java @@ -12,33 +12,35 @@ * @version $Id: $Id */ public class VaneSection extends SeparatorSection { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for VaneSection. - *

- * - * @param name a {@link java.lang.String} object - * @param type a {@link java.lang.String} object - * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object - */ - public VaneSection(String name, String type, Separator sep) { - super(name, type, sep); - } + /** + *

+ * Constructor for VaneSection. + *

+ * + * @param name a {@link java.lang.String} object + * @param type a {@link java.lang.String} object + * @param sep a {@link neqsim.processSimulation.processEquipment.separator.Separator} object + */ + public VaneSection(String name, String type, Separator sep) { + super(name, type, sep); + } - public MechVaneSection getMechanicalDesign() { - return new MechVaneSection(this); - } + /** {@inheritDoc} */ + @Override + public MechVaneSection getMechanicalDesign() { + return new MechVaneSection(this); + } - /** {@inheritDoc} */ - @Override - public double calcEfficiency() { - double gasLoadF = getSeparator().getGasLoadFactor(); - if (gasLoadF > 0.1) { - return 0.1 / gasLoadF; - } else { - return 1.0; - } + /** {@inheritDoc} */ + @Override + public double calcEfficiency() { + double gasLoadF = getSeparator().getGasLoadFactor(); + if (gasLoadF > 0.1) { + return 0.1 / gasLoadF; + } else { + return 1.0; } + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitter.java b/src/main/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitter.java index b09b6637e5..01d77e52ec 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitter.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitter.java @@ -1,5 +1,8 @@ package neqsim.processSimulation.processEquipment.splitter; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; @@ -16,6 +19,7 @@ */ public class ComponentSplitter extends ProcessEquipmentBaseClass { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentSplitter.class); SystemInterface thermoSystem; StreamInterface inletStream; @@ -34,7 +38,7 @@ public ComponentSplitter() { /** * Constructor for Splitter. - * + * * @param name name of splitter */ public ComponentSplitter(String name) { @@ -49,17 +53,31 @@ public ComponentSplitter(String name) { * @param name a {@link java.lang.String} object * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} * object - * */ public ComponentSplitter(String name, StreamInterface inletStream) { this(name); this.setInletStream(inletStream); } + /** + *

+ * setSplitFactors. + *

+ * + * @param factors an array of type double + */ public void setSplitFactors(double[] factors) { splitFactor = factors; } + /** + *

+ * Setter for the field inletStream. + *

+ * + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ public void setInletStream(StreamInterface inletStream) { this.inletStream = inletStream; splitStream = new Stream[2]; @@ -67,18 +85,26 @@ public void setInletStream(StreamInterface inletStream) { for (int i = 0; i < splitStream.length; i++) { splitStream[i] = new Stream("Split Stream", inletStream.getThermoSystem().clone()); } - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } + /** + *

+ * Getter for the field splitStream. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ public StreamInterface getSplitStream(int i) { return splitStream[i]; } /** {@inheritDoc} */ @Override - public void run() { + public void run(UUID id) { for (int i = 0; i < 2; i++) { thermoSystem = inletStream.getThermoSystem().clone(); thermoSystem.setEmptyFluid(); @@ -101,10 +127,10 @@ public void run() { new ThermodynamicOperations(splitStream[i].getThermoSystem()); thermoOps.TPflash(); } + setCalculationIdentifier(id); } /** {@inheritDoc} */ @Override - public void displayResult() { - } + public void displayResult() {} } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/splitter/Splitter.java b/src/main/java/neqsim/processSimulation/processEquipment/splitter/Splitter.java index 2bf790a6d1..71e14e3d1e 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/splitter/Splitter.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/splitter/Splitter.java @@ -1,8 +1,10 @@ package neqsim.processSimulation.processEquipment.splitter; +import java.util.UUID; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; +import neqsim.processSimulation.processEquipment.mixer.Mixer; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; @@ -19,11 +21,18 @@ public class Splitter extends ProcessEquipmentBaseClass implements SplitterInterface { private static final long serialVersionUID = 1000; static Logger logger = LogManager.getLogger(Splitter.class); - SystemInterface thermoSystem, gasSystem, waterSystem, liquidSystem, thermoSystemCloned; + + SystemInterface thermoSystem; + SystemInterface gasSystem; + SystemInterface waterSystem; + SystemInterface liquidSystem; + SystemInterface thermoSystemCloned; StreamInterface inletStream; StreamInterface[] splitStream; protected int splitNumber = 1; double[] splitFactor = new double[1]; + double[] flowRates; + String flowUnit = "mole/sec"; /** *

@@ -50,7 +59,7 @@ public Splitter(StreamInterface inletStream) { /** * Constructor for Splitter. - * + * * @param name name of splitter */ public Splitter(String name) { @@ -59,7 +68,7 @@ public Splitter(String name) { /** * Constructor for Splitter. - * + * * @param name name of splitter * @param inStream input stream */ @@ -90,6 +99,9 @@ public void setSplitNumber(int i) { splitNumber = i; splitFactor = new double[splitNumber]; splitFactor[0] = 1.0; + if (inletStream != null) { + setInletStream(inletStream); + } } /** @@ -97,7 +109,7 @@ public void setSplitNumber(int i) { * setSplitFactors. *

* - * @param splitFact an array of {@link double} objects + * @param splitFact an array of type double */ public void setSplitFactors(double[] splitFact) { double sum = 0.0; @@ -112,21 +124,74 @@ public void setSplitFactors(double[] splitFact) { splitFactor[i] = splitFact[i] / sum; } splitNumber = splitFact.length; + flowRates = null; + setInletStream(inletStream); + } + + /** + *

+ * setFlowRates. + *

+ * + * @param flowRates an array of type double + * @param flowUnit a {@link java.lang.String} object + */ + public void setFlowRates(double[] flowRates, String flowUnit) { + if (flowRates.length != splitNumber) { + setInletStream(inletStream); + } + this.flowRates = flowRates; + this.flowUnit = flowUnit; + + splitNumber = flowRates.length; + splitFactor = new double[flowRates.length]; + splitFactor[0] = 1.0; setInletStream(inletStream); } + /** + *

+ * calcSplitFactors. + *

+ */ + public void calcSplitFactors() { + double sum = 0.0; + for (int i = 0; i < flowRates.length; i++) { + if (flowRates[i] > 0.0) { + sum += flowRates[i]; + } + } + + double missingFlowRate = 0.0; + for (int i = 0; i < flowRates.length; i++) { + if (flowRates[i] < -0.1) { + missingFlowRate = inletStream.getFlowRate(flowUnit) - sum; + sum += missingFlowRate; + } + } + + splitFactor = new double[flowRates.length]; + for (int i = 0; i < flowRates.length; i++) { + splitFactor[i] = flowRates[i] / sum; + if (flowRates[i] < -0.1) { + splitFactor[i] = missingFlowRate / sum; + } + } + } + /** {@inheritDoc} */ @Override public void setInletStream(StreamInterface inletStream) { this.inletStream = inletStream; - splitStream = new Stream[splitNumber]; - try { - for (int i = 0; i < splitNumber; i++) { - // System.out.println("splitting...." + i); - splitStream[i] = new Stream("Split Stream", inletStream.getThermoSystem().clone()); + if (splitStream == null || splitStream.length != splitNumber) { + splitStream = new Stream[splitNumber]; + try { + for (int i = 0; i < splitNumber; i++) { + splitStream[i] = new Stream("Split Stream", inletStream.getThermoSystem().clone()); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - } catch (Exception e) { - e.printStackTrace(); } } @@ -138,21 +203,26 @@ public StreamInterface getSplitStream(int i) { /** {@inheritDoc} */ @Override - public void run() { + public void run(UUID id) { double totSplit = 0.0; + + if (flowRates != null) { + calcSplitFactors(); + } + for (int i = 0; i < splitNumber; i++) { - if(splitFactor[i]<0) { + if (splitFactor[i] < 0) { logger.debug("split factor negative = " + splitFactor[i]); splitFactor[i] = 0.0; } totSplit += splitFactor[i]; } - if(Math.abs(totSplit-1.0)>1e-10) { + if (Math.abs(totSplit - 1.0) > 1e-10) { logger.debug("total split factor different from 0 in splitter - totsplit = " + totSplit); logger.debug("setting first split to = " + (1.0 - totSplit)); splitFactor[0] = 1.0 - totSplit; } - + for (int i = 0; i < splitNumber; i++) { thermoSystem = inletStream.getThermoSystem().clone(); thermoSystem.init(0); @@ -160,12 +230,61 @@ public void run() { for (int j = 0; j < inletStream.getThermoSystem().getPhase(0).getNumberOfComponents(); j++) { int index = inletStream.getThermoSystem().getPhase(0).getComponent(j).getComponentNumber(); double moles = inletStream.getThermoSystem().getPhase(0).getComponent(j).getNumberOfmoles(); - splitStream[i].getThermoSystem().addComponent(index, moles * splitFactor[i] - moles); + double change = + (moles * splitFactor[i] - moles > 0) ? moles : moles * splitFactor[i] - moles; + splitStream[i].getThermoSystem().addComponent(index, change); } ThermodynamicOperations thermoOps = new ThermodynamicOperations(splitStream[i].getThermoSystem()); thermoOps.TPflash(); } + + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void runTransient(double dt, UUID id) { + if (getCalculateSteadyState()) { + run(id); + increaseTime(dt); + } else { + Mixer mixer = new Mixer("tmpMixer"); + for (int i = 0; i < splitStream.length; i++) { + splitStream[i].setPressure(inletStream.getPressure()); + splitStream[i].setTemperature(inletStream.getTemperature("C"), "C"); + splitStream[i].run(); + mixer.addStream(splitStream[i]); + } + mixer.run(); + + inletStream.setThermoSystem(mixer.getThermoSystem()); + inletStream.run(); + setCalculationIdentifier(id); + } + } + + /** + *

+ * Getter for the field splitFactor. + *

+ * + * @param i a int + * @return a double + */ + public double getSplitFactor(int i) { + return splitFactor[i]; + } + + /** + *

+ * getSplitFactors. + *

+ * + * @return an array of type double + */ + public double[] getSplitFactors() { + return splitFactor; } /** {@inheritDoc} */ diff --git a/src/main/java/neqsim/processSimulation/processEquipment/splitter/SplitterInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/splitter/SplitterInterface.java index 93a414ea84..c5c4b8138f 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/splitter/SplitterInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/splitter/SplitterInterface.java @@ -12,33 +12,32 @@ * @version $Id: $Id */ public interface SplitterInterface extends ProcessEquipmentInterface { + /** + *

+ * setSplitNumber. + *

+ * + * @param i a int + */ + public void setSplitNumber(int i); - /** - *

- * setSplitNumber. - *

- * - * @param i a int - */ - public void setSplitNumber(int i); + /** + *

+ * setInletStream. + *

+ * + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void setInletStream(StreamInterface inletStream); - /** - *

- * setInletStream. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void setInletStream(StreamInterface inletStream); - - /** - *

- * getSplitStream. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public StreamInterface getSplitStream(int i); + /** + *

+ * getSplitStream. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public StreamInterface getSplitStream(int i); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/stream/EnergyStream.java b/src/main/java/neqsim/processSimulation/processEquipment/stream/EnergyStream.java index 93a80a499b..14605352c4 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/stream/EnergyStream.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/stream/EnergyStream.java @@ -1,6 +1,8 @@ package neqsim.processSimulation.processEquipment.stream; import java.util.Objects; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** *

@@ -11,60 +13,64 @@ * @version $Id: $Id */ public class EnergyStream implements java.io.Serializable, Cloneable { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(EnergyStream.class); - private double duty = 0.0; + private double duty = 0.0; - /** {@inheritDoc} */ - @Override - public EnergyStream clone() { - EnergyStream clonedStream = null; - try { - clonedStream = (EnergyStream) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - return clonedStream; + /** {@inheritDoc} */ + @Override + public EnergyStream clone() { + EnergyStream clonedStream = null; + try { + clonedStream = (EnergyStream) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + return clonedStream; + } - /** - *

- * Getter for the field duty. - *

- * - * @return a double - */ - public double getDuty() { - return duty; - } + /** + *

+ * Getter for the field duty. + *

+ * + * @return a double + */ + public double getDuty() { + return duty; + } - /** - *

- * Setter for the field duty. - *

- * - * @param duty a double - */ - public void setDuty(double duty) { - this.duty = duty; - } + /** + *

+ * Setter for the field duty. + *

+ * + * @param duty a double + */ + public void setDuty(double duty) { + this.duty = duty; + } - /** {@inheritDoc} */ - @Override - public int hashCode() { - return Objects.hashCode(duty); - } + /** {@inheritDoc} */ + @Override + public int hashCode() { + return Objects.hashCode(duty); + } - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - EnergyStream other = (EnergyStream) obj; - return Double.doubleToLongBits(duty) == Double.doubleToLongBits(other.duty); + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; } + EnergyStream other = (EnergyStream) obj; + return Double.doubleToLongBits(duty) == Double.doubleToLongBits(other.duty); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/stream/EquilibriumStream.java b/src/main/java/neqsim/processSimulation/processEquipment/stream/EquilibriumStream.java index ea73e80a5f..8a3a00078f 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/stream/EquilibriumStream.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/stream/EquilibriumStream.java @@ -1,5 +1,8 @@ package neqsim.processSimulation.processEquipment.stream; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -12,84 +15,85 @@ * @version $Id: $Id */ public class EquilibriumStream extends Stream { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(EquilibriumStream.class); - /** - *

- * Constructor for EquilibriumStream. - *

- */ - @Deprecated - public EquilibriumStream() {} + /** + *

+ * Constructor for EquilibriumStream. + *

+ */ + @Deprecated + public EquilibriumStream() {} - /** - *

- * Constructor for EquilibriumStream. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - @Deprecated - public EquilibriumStream(SystemInterface thermoSystem) { - super(thermoSystem); - } + /** + *

+ * Constructor for EquilibriumStream. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + @Deprecated + public EquilibriumStream(SystemInterface thermoSystem) { + super(thermoSystem); + } - /** - *

- * Constructor for EquilibriumStream. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public EquilibriumStream(StreamInterface stream) { - this("EquilibriumStream", stream.getThermoSystem()); - } + /** + *

+ * Constructor for EquilibriumStream. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + @Deprecated + public EquilibriumStream(StreamInterface stream) { + this("EquilibriumStream", stream.getThermoSystem()); + } - /** - * Constructor for EquilibriumStream. - * - * @param name name of stream - */ - public EquilibriumStream(String name) { - super(name); - } + /** + * Constructor for EquilibriumStream. + * + * @param name name of stream + */ + public EquilibriumStream(String name) { + super(name); + } - /** - *

- * Constructor for EquilibriumStream. - *

- * - * @param name a {@link java.lang.String} object - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public EquilibriumStream(String name, SystemInterface thermoSystem) { - super(name, thermoSystem); - } + /** + *

+ * Constructor for EquilibriumStream. + *

+ * + * @param name a {@link java.lang.String} object + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public EquilibriumStream(String name, SystemInterface thermoSystem) { + super(name, thermoSystem); + } - /** {@inheritDoc} */ - @Override - public EquilibriumStream clone() { - EquilibriumStream clonedStream = null; + /** {@inheritDoc} */ + @Override + public EquilibriumStream clone() { + EquilibriumStream clonedStream = null; - try { - clonedStream = (EquilibriumStream) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - thermoSystem = thermoSystem.clone(); - return clonedStream; + try { + clonedStream = (EquilibriumStream) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public void run() { - System.out.println("start flashing stream... " + streamNumber); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); - thermoOps.TPflash(); - System.out.println("number of phases: " + thermoSystem.getNumberOfPhases()); - System.out.println("beta: " + thermoSystem.getBeta()); - } + thermoSystem = thermoSystem.clone(); + return clonedStream; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + System.out.println("start flashing stream... " + streamNumber); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); + thermoOps.TPflash(); + System.out.println("number of phases: " + thermoSystem.getNumberOfPhases()); + System.out.println("beta: " + thermoSystem.getBeta()); + setCalculationIdentifier(id); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/stream/IronIonSaturationStream.java b/src/main/java/neqsim/processSimulation/processEquipment/stream/IronIonSaturationStream.java index 468d250cb8..e25dfa1e93 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/stream/IronIonSaturationStream.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/stream/IronIonSaturationStream.java @@ -3,8 +3,12 @@ * * Created on 12. mars 2001, 13:11 */ + package neqsim.processSimulation.processEquipment.stream; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -17,123 +21,123 @@ * @version $Id: $Id */ public class IronIonSaturationStream extends Stream { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(IronIonSaturationStream.class); - protected SystemInterface reactiveThermoSystem; + protected SystemInterface reactiveThermoSystem; - /** - *

- * Constructor for IronIonSaturationStream. - *

- */ - @Deprecated - public IronIonSaturationStream() { - this("IronIonSaturationStream"); - } + /** + *

+ * Constructor for IronIonSaturationStream. + *

+ */ + @Deprecated + public IronIonSaturationStream() { + this("IronIonSaturationStream"); + } - /** - *

- * Constructor for IronIonSaturationStream. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - @Deprecated - public IronIonSaturationStream(SystemInterface thermoSystem) { - this("IronIonSaturationStream", thermoSystem); - } + /** + *

+ * Constructor for IronIonSaturationStream. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + @Deprecated + public IronIonSaturationStream(SystemInterface thermoSystem) { + this("IronIonSaturationStream", thermoSystem); + } - /** - *

- * Constructor for IronIonSaturationStream. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public IronIonSaturationStream(StreamInterface stream) { - this("IronIonSaturationStream", stream); - } + /** + *

+ * Constructor for IronIonSaturationStream. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + @Deprecated + public IronIonSaturationStream(StreamInterface stream) { + this("IronIonSaturationStream", stream); + } - /** - * Constructor for IronIonSaturationStream. - * - * @param name name of stream - */ - public IronIonSaturationStream(String name) { - super(name); - } + /** + * Constructor for IronIonSaturationStream. + * + * @param name name of stream + */ + public IronIonSaturationStream(String name) { + super(name); + } - /** - * Constructor for IronIonSaturationStream. - * - * @param name name of stream - * @param stream input stream - */ - public IronIonSaturationStream(String name, StreamInterface stream) { - super(name, stream); - } + /** + * Constructor for IronIonSaturationStream. + * + * @param name name of stream + * @param stream input stream + */ + public IronIonSaturationStream(String name, StreamInterface stream) { + super(name, stream); + } - /** - *

- * Constructor for IronIonSaturationStream. - *

- * - * @param name a {@link java.lang.String} object - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public IronIonSaturationStream(String name, SystemInterface thermoSystem) { - super(name, thermoSystem); - } + /** + *

+ * Constructor for IronIonSaturationStream. + *

+ * + * @param name a {@link java.lang.String} object + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public IronIonSaturationStream(String name, SystemInterface thermoSystem) { + super(name, thermoSystem); + } - /** {@inheritDoc} */ - @Override - public IronIonSaturationStream clone() { - IronIonSaturationStream clonedSystem = null; - try { - clonedSystem = (IronIonSaturationStream) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public IronIonSaturationStream clone() { + IronIonSaturationStream clonedSystem = null; + try { + clonedSystem = (IronIonSaturationStream) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + return clonedSystem; + } - /** {@inheritDoc} */ - @Override - public void run() { - System.out.println("start flashing stream... " + streamNumber); - if (stream != null) { - thermoSystem = this.stream.getThermoSystem().clone(); - } - if (stream != null) { - reactiveThermoSystem = - this.stream.getThermoSystem().setModel("Electrolyte-CPA-EOS-statoil"); - } - reactiveThermoSystem.addComponent("Fe++", 1e-6); - // reactiveThermoSystem.chemicalReactionInit(); - // reactiveThermoSystem.createDatabase(true); - // reactiveThermoSystem.addComponent("water", - // reactiveThermoSystem.getPhase(0).getComponent("MEG").getNumberOfmoles()); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(reactiveThermoSystem); - thermoOps.TPflash(); - reactiveThermoSystem.display(); - try { - System.out.println("aqueous phase number " - + reactiveThermoSystem.getPhaseNumberOfPhase("aqueous")); - thermoOps.addIonToScaleSaturation(reactiveThermoSystem.getPhaseNumberOfPhase("aqueous"), - "FeCO3", "Fe++"); - } catch (Exception ex) { - ex.printStackTrace(); - } - reactiveThermoSystem.display(); - System.out.println("number of phases: " + reactiveThermoSystem.getNumberOfPhases()); - System.out.println("beta: " + reactiveThermoSystem.getBeta()); + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + System.out.println("start flashing stream... " + streamNumber); + if (stream != null) { + thermoSystem = this.stream.getThermoSystem().clone(); } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - reactiveThermoSystem.display(name); + if (stream != null) { + reactiveThermoSystem = this.stream.getThermoSystem().setModel("Electrolyte-CPA-EOS-statoil"); } + reactiveThermoSystem.addComponent("Fe++", 1e-6); + // reactiveThermoSystem.chemicalReactionInit(); + // reactiveThermoSystem.createDatabase(true); + // reactiveThermoSystem.addComponent("water", + // reactiveThermoSystem.getPhase(0).getComponent("MEG").getNumberOfmoles()); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(reactiveThermoSystem); + thermoOps.TPflash(); + reactiveThermoSystem.display(); + try { + System.out + .println("aqueous phase number " + reactiveThermoSystem.getPhaseNumberOfPhase("aqueous")); + thermoOps.addIonToScaleSaturation(reactiveThermoSystem.getPhaseNumberOfPhase("aqueous"), + "FeCO3", "Fe++"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + reactiveThermoSystem.display(); + System.out.println("number of phases: " + reactiveThermoSystem.getNumberOfPhases()); + System.out.println("beta: " + reactiveThermoSystem.getBeta()); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + reactiveThermoSystem.display(name); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/stream/NeqStream.java b/src/main/java/neqsim/processSimulation/processEquipment/stream/NeqStream.java index b4197b1cd8..381aa32c11 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/stream/NeqStream.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/stream/NeqStream.java @@ -1,5 +1,8 @@ package neqsim.processSimulation.processEquipment.stream; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.system.SystemInterface; /** @@ -11,103 +14,104 @@ * @version $Id: $Id */ public class NeqStream extends Stream { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(NeqStream.class); - /** - *

- * Constructor for NeqStream. - *

- */ - @Deprecated - public NeqStream() { - super("NeqStream"); - } + /** + *

+ * Constructor for NeqStream. + *

+ */ + @Deprecated + public NeqStream() { + super("NeqStream"); + } - /** - *

- * Constructor for NeqStream. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - @Deprecated - public NeqStream(SystemInterface thermoSystem) { - super(thermoSystem); - } + /** + *

+ * Constructor for NeqStream. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + @Deprecated + public NeqStream(SystemInterface thermoSystem) { + super(thermoSystem); + } - /** - *

- * Constructor for NeqStream. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public NeqStream(StreamInterface stream) { - super(stream); - } + /** + *

+ * Constructor for NeqStream. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + @Deprecated + public NeqStream(StreamInterface stream) { + super(stream); + } - /** - * Constructor for NeqStream. - * - * @param name name of stream - */ - public NeqStream(String name) { - super(name); - } + /** + * Constructor for NeqStream. + * + * @param name name of stream + */ + public NeqStream(String name) { + super(name); + } - /** - * Constructor for NeqStream. - * - * @param name name of stream - * @param stream input stream - */ - public NeqStream(String name, StreamInterface stream) { - super(name, stream); - } + /** + * Constructor for NeqStream. + * + * @param name name of stream + * @param stream input stream + */ + public NeqStream(String name, StreamInterface stream) { + super(name, stream); + } - /** - *

- * Constructor for NeqStream. - *

- * - * @param name a {@link java.lang.String} object - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public NeqStream(String name, SystemInterface thermoSystem) { - super(name, thermoSystem); - } + /** + *

+ * Constructor for NeqStream. + *

+ * + * @param name a {@link java.lang.String} object + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public NeqStream(String name, SystemInterface thermoSystem) { + super(name, thermoSystem); + } - /** {@inheritDoc} */ - @Override - public NeqStream clone() { - NeqStream clonedStream = null; + /** {@inheritDoc} */ + @Override + public NeqStream clone() { + NeqStream clonedStream = null; - try { - clonedStream = (NeqStream) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } + try { + clonedStream = (NeqStream) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); + } - thermoSystem = thermoSystem.clone(); + thermoSystem = thermoSystem.clone(); - return clonedStream; - } + return clonedStream; + } - /** {@inheritDoc} */ - @Override - public void run() { - System.out.println("start flashing stream... " + streamNumber); - if (stream != null) { - thermoSystem = this.stream.getThermoSystem().clone(); - } - this.thermoSystem.init_x_y(); - this.thermoSystem.initBeta(); - this.thermoSystem.init(3); - // thermoOps = new ThermodynamicOperations(thermoSystem); - // thermoOps.TPflash(); - System.out.println("number of phases: " + thermoSystem.getNumberOfPhases()); - System.out.println("beta: " + thermoSystem.getBeta()); + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + System.out.println("start flashing stream... " + streamNumber); + if (stream != null) { + thermoSystem = this.stream.getThermoSystem().clone(); } + this.thermoSystem.init_x_y(); + this.thermoSystem.initBeta(); + this.thermoSystem.init(3); + // thermoOps = new ThermodynamicOperations(thermoSystem); + // thermoOps.TPflash(); + System.out.println("number of phases: " + thermoSystem.getNumberOfPhases()); + System.out.println("beta: " + thermoSystem.getBeta()); + setCalculationIdentifier(id); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/stream/ScalePotentialCheckStream.java b/src/main/java/neqsim/processSimulation/processEquipment/stream/ScalePotentialCheckStream.java index aa87aac852..a269a371df 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/stream/ScalePotentialCheckStream.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/stream/ScalePotentialCheckStream.java @@ -1,5 +1,8 @@ package neqsim.processSimulation.processEquipment.stream; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -12,110 +15,110 @@ * @version $Id: $Id */ public class ScalePotentialCheckStream extends Stream { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ScalePotentialCheckStream.class); - protected SystemInterface reactiveThermoSystem; + protected SystemInterface reactiveThermoSystem; - /** - *

- * Constructor for ScalePotentialCheckStream. - *

- */ - @Deprecated - public ScalePotentialCheckStream() { - super("ScalePotentialCheckStream"); - } + /** + *

+ * Constructor for ScalePotentialCheckStream. + *

+ */ + @Deprecated + public ScalePotentialCheckStream() { + super("ScalePotentialCheckStream"); + } - /** - *

- * Constructor for ScalePotentialCheckStream. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public ScalePotentialCheckStream(SystemInterface thermoSystem) { - super("ScalePotentialCheckStream", thermoSystem); - } + /** + *

+ * Constructor for ScalePotentialCheckStream. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public ScalePotentialCheckStream(SystemInterface thermoSystem) { + super("ScalePotentialCheckStream", thermoSystem); + } - /** - *

- * Constructor for ScalePotentialCheckStream. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public ScalePotentialCheckStream(StreamInterface stream) { - super("ScalePotentialCheckStream", stream); - } + /** + *

+ * Constructor for ScalePotentialCheckStream. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + @Deprecated + public ScalePotentialCheckStream(StreamInterface stream) { + super("ScalePotentialCheckStream", stream); + } - /** - * Constructor for ScalePotentialCheckStream. - * - * @param name name of unit operation - */ - public ScalePotentialCheckStream(String name) { - super(name); - } + /** + * Constructor for ScalePotentialCheckStream. + * + * @param name name of unit operation + */ + public ScalePotentialCheckStream(String name) { + super(name); + } - /** - * Constructor for ScalePotentialCheckStream. - * - * @param name name of stream - * @param stream input stream - */ - public ScalePotentialCheckStream(String name, StreamInterface stream) { - super(name, stream); - } + /** + * Constructor for ScalePotentialCheckStream. + * + * @param name name of stream + * @param stream input stream + */ + public ScalePotentialCheckStream(String name, StreamInterface stream) { + super(name, stream); + } - /** - *

- * Constructor for ScalePotentialCheckStream. - *

- * - * @param name a {@link java.lang.String} object - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public ScalePotentialCheckStream(String name, SystemInterface thermoSystem) { - super(name, thermoSystem); + /** + *

+ * Constructor for ScalePotentialCheckStream. + *

+ * + * @param name a {@link java.lang.String} object + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public ScalePotentialCheckStream(String name, SystemInterface thermoSystem) { + super(name, thermoSystem); + } + + /** {@inheritDoc} */ + @Override + public ScalePotentialCheckStream clone() { + ScalePotentialCheckStream clonedSystem = null; + try { + clonedSystem = (ScalePotentialCheckStream) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + return clonedSystem; + } - /** {@inheritDoc} */ - @Override - public ScalePotentialCheckStream clone() { - ScalePotentialCheckStream clonedSystem = null; - try { - clonedSystem = (ScalePotentialCheckStream) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + System.out.println("start flashing stream... " + streamNumber); + if (stream != null) { + thermoSystem = this.stream.getThermoSystem().clone(); + } + if (stream != null) { + reactiveThermoSystem = this.stream.getThermoSystem().setModel("Electrolyte-CPA-EOS-statoil"); } - /** {@inheritDoc} */ - @Override - public void run() { - System.out.println("start flashing stream... " + streamNumber); - if (stream != null) { - thermoSystem = this.stream.getThermoSystem().clone(); - } - if (stream != null) { - reactiveThermoSystem = - this.stream.getThermoSystem().setModel("Electrolyte-CPA-EOS-statoil"); - } + ThermodynamicOperations thermoOps = new ThermodynamicOperations(reactiveThermoSystem); + thermoOps.TPflash(); + reactiveThermoSystem.init(3); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(reactiveThermoSystem); - thermoOps.TPflash(); - reactiveThermoSystem.init(3); + System.out.println("number of phases: " + reactiveThermoSystem.getNumberOfPhases()); + System.out.println("beta: " + reactiveThermoSystem.getBeta()); + setCalculationIdentifier(id); + } - System.out.println("number of phases: " + reactiveThermoSystem.getNumberOfPhases()); - System.out.println("beta: " + reactiveThermoSystem.getBeta()); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - reactiveThermoSystem.display(name); - } + /** {@inheritDoc} */ + @Override + public void displayResult() { + reactiveThermoSystem.display(name); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/stream/Stream.java b/src/main/java/neqsim/processSimulation/processEquipment/stream/Stream.java index d6a1602a29..3540ae6ce0 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/stream/Stream.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/stream/Stream.java @@ -3,10 +3,19 @@ * * Created on 12. mars 2001, 13:11 */ + package neqsim.processSimulation.processEquipment.stream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import com.google.gson.GsonBuilder; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; +import neqsim.processSimulation.util.monitor.StreamResponse; import neqsim.standards.gasQuality.Standard_ISO6976; +import neqsim.standards.oilQuality.Standard_ASTM_D6377; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -19,541 +28,685 @@ * @version $Id: $Id */ public class Stream extends ProcessEquipmentBaseClass implements StreamInterface, Cloneable { - private static final long serialVersionUID = 1000; - - protected SystemInterface thermoSystem; - - protected int streamNumber = 0; - /** Constant numberOfStreams=0 */ - protected static int numberOfStreams = 0; - private double gasQuality = 0.5; - protected StreamInterface stream = null; - - /** - *

- * Constructor for Stream. - *

- */ - @Deprecated - public Stream() { - super("Stream"); - } - - /** - *

- * Constructor for Stream. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public Stream(StreamInterface stream) { - this("Stream", stream); - } - - /** - *

- * Constructor for Stream. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - @Deprecated - public Stream(SystemInterface thermoSystem) { - this("Stream", thermoSystem); - } - - /** - * Constructor for Stream. - * - * @param name name of stream - */ - public Stream(String name) { - super(name); - } - - /** - * Constructor for Stream. - * - * @param name name of stream - * @param stream input stream - */ - public Stream(String name, StreamInterface stream) { - super(name); - this.setStream(stream); - thermoSystem = stream.getThermoSystem(); - numberOfStreams++; - streamNumber = numberOfStreams; - } - - /** - *

- * Constructor for Stream. - *

- * - * @param name a {@link java.lang.String} object - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public Stream(String name, SystemInterface thermoSystem) { - super(name); - this.thermoSystem = thermoSystem; - numberOfStreams++; - streamNumber = numberOfStreams; - } - - /** - *

- * Getter for the field gasQuality. - *

- * - * @return the gasQuality - */ - public double getGasQuality() { - return gasQuality; - } - - /** - *

- * Setter for the field gasQuality. - *

- * - * @param gasQuality the gasQuality to set - */ - public void setGasQuality(double gasQuality) { - this.gasQuality = gasQuality; - } - - /** {@inheritDoc} */ - @Override - public double getHydrateEquilibriumTemperature() { - if (!thermoSystem.getPhase(0).hasComponent("water")) { - System.out.println("ny hydrate: no water in stream: " + name); - return 0.0; - } - try { - SystemInterface copySystem = thermoSystem.clone(); - copySystem.setHydrateCheck(true); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(copySystem); - thermoOps.hydrateFormationTemperature(); - return copySystem.getTemperature(); - } catch (Exception e) { - e.printStackTrace(); - } - return 0.0; - } - - /** - *

- * getSolidFormationTemperature. - *

- * - * @param solidName a {@link java.lang.String} object - * @return a double - */ - public double getSolidFormationTemperature(String solidName) { - SystemInterface copySystem = thermoSystem.clone(); - - try { - if (solidName.equals("hydrate")) { - copySystem.setHydrateCheck(true); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(copySystem); - thermoOps.hydrateFormationTemperature(); - } else { - copySystem.setSolidPhaseCheck(false); - copySystem.setSolidPhaseCheck(solidName); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(copySystem); - thermoOps.freezingPointTemperatureFlash(); - } - return copySystem.getTemperature(); - } catch (Exception e) { - e.printStackTrace(); - } - return 0.0; - } - - /** {@inheritDoc} */ - @Override - public Stream clone() { - Stream clonedSystem = null; - try { - clonedSystem = (Stream) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - if (stream != null) - clonedSystem.setStream((Stream) stream.clone());; - clonedSystem.thermoSystem = getThermoSystem().clone(); - return clonedSystem; - } - - /** {@inheritDoc} */ - @Override - public double getTemperature() { - return thermoSystem.getTemperature(); - } - - /** {@inheritDoc} */ - @Override - public double getPressure() { - return thermoSystem.getPressure(); - } - - /** {@inheritDoc} */ - @Override - public double getMolarRate() { - return thermoSystem.getTotalNumberOfMoles(); - } - - /** {@inheritDoc} */ - @Override - public void setThermoSystem(SystemInterface thermoSystem) { - this.thermoSystem = thermoSystem; - if (stream != null) { - stream.setThermoSystem(thermoSystem); - } - } - - /** {@inheritDoc} */ - @Override - public void setFluid(SystemInterface fluid) { - this.setThermoSystem(fluid); - } - - /** {@inheritDoc} */ - @Override - public void setThermoSystemFromPhase(SystemInterface thermoSystem, String phaseTypeName) { - if (phaseTypeName.equals("liquid")) { - if (thermoSystem.hasPhaseType("oil") && thermoSystem.hasPhaseType("aqueous")) { - this.thermoSystem = - thermoSystem.phaseToSystem(thermoSystem.getPhaseNumberOfPhase("oil"), - thermoSystem.getPhaseNumberOfPhase("aqueous")); - } else if (thermoSystem.hasPhaseType("oil")) { - this.thermoSystem = - thermoSystem.phaseToSystem(thermoSystem.getPhaseNumberOfPhase("oil")); - } else if (thermoSystem.hasPhaseType("aqueous")) { - this.thermoSystem = - thermoSystem.phaseToSystem(thermoSystem.getPhaseNumberOfPhase("aqueous")); - } else { - System.out.println("no phase of type " + phaseTypeName); - System.out.println("...returning empty system "); - setEmptyThermoSystem(thermoSystem); - } - return; - } - if (thermoSystem.hasPhaseType(phaseTypeName)) { - this.thermoSystem = thermoSystem.phaseToSystem(phaseTypeName); - } else { - System.out.println("no phase of type " + phaseTypeName); - System.out.println("...returning empty system "); - setEmptyThermoSystem(thermoSystem); - } - } - - /** {@inheritDoc} */ - @Override - public void setEmptyThermoSystem(SystemInterface thermoSystem) { - this.thermoSystem = thermoSystem.getEmptySystemClone(); - this.thermoSystem.setNumberOfPhases(0); - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return this.thermoSystem; - } - - /** {@inheritDoc} */ - @Override - public void setFlowRate(double flowrate, String unit) { - this.getFluid().setTotalFlowRate(flowrate, unit); - } - - /** {@inheritDoc} */ - @Override - public void setPressure(double pressure, String unit) { - getFluid().setPressure(pressure, unit); - } - - /** {@inheritDoc} */ - @Override - public void setTemperature(double temperature, String unit) { - getFluid().setTemperature(temperature, unit); - } - - /** {@inheritDoc} */ - @Override - public double getFlowRate(String unit) { - return this.getFluid().getFlowRate(unit); - } - - /** {@inheritDoc} */ - @Override - public double getPressure(String unit) { - return getFluid().getPressure(unit); - } - - /** {@inheritDoc} */ - @Override - public double getTemperature(String unit) { - return getFluid().getTemperature(unit); - } - - /** {@inheritDoc} */ - @Override - public void runTPflash() { - if (stream != null) { - thermoSystem = this.stream.getThermoSystem().clone(); - } - - ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Stream.class); + + protected SystemInterface thermoSystem; + + protected int streamNumber = 0; + /** Constant numberOfStreams=0. */ + protected static int numberOfStreams = 0; + private double gasQuality = 0.5; + protected StreamInterface stream = null; + + // Results from previous run + protected double lastTemperature = 0.0; + protected double lastPressure = 0.0; + protected double lastFlowRate = 0.0; + + /** + *

+ * Constructor for Stream. + *

+ */ + @Deprecated + public Stream() { + super("Stream"); + } + + /** + *

+ * Constructor for Stream. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + @Deprecated + public Stream(StreamInterface stream) { + this("Stream", stream); + } + + /** + *

+ * Constructor for Stream. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + @Deprecated + public Stream(SystemInterface thermoSystem) { + this("Stream", thermoSystem); + } + + /** + * Constructor for Stream. + * + * @param name name of stream + */ + public Stream(String name) { + super(name); + } + + /** + * Constructor for Stream. + * + * @param name name of stream + * @param stream input stream + */ + public Stream(String name, StreamInterface stream) { + this(name); + this.setStream(stream); + numberOfStreams++; + streamNumber = numberOfStreams; + } + + /** + *

+ * Constructor for Stream. + *

+ * + * @param name a {@link java.lang.String} object + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public Stream(String name, SystemInterface thermoSystem) { + super(name); + this.thermoSystem = thermoSystem; + numberOfStreams++; + streamNumber = numberOfStreams; + } + + /** + *

+ * Getter for the field gasQuality. + *

+ * + * @return the gasQuality + */ + public double getGasQuality() { + return gasQuality; + } + + /** + *

+ * Setter for the field gasQuality. + *

+ * + * @param gasQuality the gasQuality to set + */ + public void setGasQuality(double gasQuality) { + this.gasQuality = gasQuality; + } + + /** {@inheritDoc} */ + @Override + public double getHydrateEquilibriumTemperature() { + if (!getFluid().getPhase(0).hasComponent("water")) { + System.out.println("ny hydrate: no water in stream: " + name); + return 0.0; + } + try { + SystemInterface copySystem = getFluid().clone(); + copySystem.setHydrateCheck(true); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(copySystem); + thermoOps.hydrateFormationTemperature(); + return copySystem.getTemperature(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + return 0.0; + } + + /** + *

+ * getSolidFormationTemperature. + *

+ * + * @param solidName a {@link java.lang.String} object + * @return a double + */ + public double getSolidFormationTemperature(String solidName) { + SystemInterface copySystem = getFluid().clone(); + + try { + if (solidName.equals("hydrate")) { + copySystem.setHydrateCheck(true); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(copySystem); + thermoOps.hydrateFormationTemperature(); + } else { + copySystem.setSolidPhaseCheck(false); + copySystem.setSolidPhaseCheck(solidName); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(copySystem); + thermoOps.freezingPointTemperatureFlash(); + } + return copySystem.getTemperature(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + return 0.0; + } + + /** {@inheritDoc} */ + @Override + public Stream clone() { + Stream clonedSystem = null; + try { + clonedSystem = (Stream) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); + } + if (stream != null) { + clonedSystem.setStream(stream.clone()); + } + if (thermoSystem != null) { + clonedSystem.thermoSystem = thermoSystem.clone(); + } + + return clonedSystem; + } + + /** {@inheritDoc} */ + @Override + public double getTemperature() { + return getFluid().getTemperature(); + } + + /** {@inheritDoc} */ + @Override + public double getTemperature(String unit) { + return getFluid().getTemperature(unit); + } + + /** {@inheritDoc} */ + @Override + public double getPressure() { + return getFluid().getPressure(); + } + + /** {@inheritDoc} */ + @Override + public double getPressure(String unit) { + return getFluid().getPressure(unit); + } + + /** {@inheritDoc} */ + @Override + public double getMolarRate() { + return getFluid().getTotalNumberOfMoles(); + } + + /** {@inheritDoc} */ + @Override + public void setThermoSystem(SystemInterface thermoSystem) { + if (stream != null) { + stream.setThermoSystem(thermoSystem); + } else { + this.thermoSystem = thermoSystem; + } + } + + /** {@inheritDoc} */ + @Override + public void setFluid(SystemInterface fluid) { + if (stream != null) { + stream.setFluid(fluid); + } else { + this.setThermoSystem(fluid); + } + } + + /** {@inheritDoc} */ + @Override + public void setThermoSystemFromPhase(SystemInterface thermoSystem, String phaseTypeName) { + if (phaseTypeName.equals("liquid")) { + if (thermoSystem.hasPhaseType("oil") && thermoSystem.hasPhaseType("aqueous")) { + this.thermoSystem = thermoSystem.phaseToSystem(thermoSystem.getPhaseNumberOfPhase("oil"), + thermoSystem.getPhaseNumberOfPhase("aqueous")); + } else if (thermoSystem.hasPhaseType("oil")) { + this.thermoSystem = thermoSystem.phaseToSystem(thermoSystem.getPhaseNumberOfPhase("oil")); + } else if (thermoSystem.hasPhaseType("aqueous")) { + this.thermoSystem = + thermoSystem.phaseToSystem(thermoSystem.getPhaseNumberOfPhase("aqueous")); + } else { + System.out.println("no phase of type " + phaseTypeName); + System.out.println("...returning empty system "); + setEmptyThermoSystem(thermoSystem); + } + return; + } + if (thermoSystem.hasPhaseType(phaseTypeName)) { + this.thermoSystem = thermoSystem.phaseToSystem(phaseTypeName); + } else { + System.out.println("no phase of type " + phaseTypeName); + System.out.println("...returning empty system "); + setEmptyThermoSystem(thermoSystem); + } + } + + /** {@inheritDoc} */ + @Override + public void setEmptyThermoSystem(SystemInterface thermoSystem) { + this.thermoSystem = thermoSystem.getEmptySystemClone(); + this.thermoSystem.setNumberOfPhases(0); + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return this.getFluid(); + } + + /** {@inheritDoc} */ + @Override + public void setFlowRate(double flowrate, String unit) { + getFluid().setTotalFlowRate(flowrate, unit); + } + + /** {@inheritDoc} */ + @Override + public void setPressure(double pressure, String unit) { + getFluid().setPressure(pressure, unit); + } + + /** {@inheritDoc} */ + @Override + public void setTemperature(double temperature, String unit) { + getFluid().setTemperature(temperature, unit); + } + + /** {@inheritDoc} */ + @Override + public void runTPflash() { + if (stream != null) { + thermoSystem = stream.getThermoSystem().clone(); + } + + ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); + thermoOps.TPflash(); + thermoSystem.initProperties(); + if (stream != null) { + stream.setFluid(thermoSystem); + } + } + + /** {@inheritDoc} */ + @Override + public boolean needRecalculation() { + if (stream != null) { + thermoSystem = stream.getFluid(); + } + if (getFluid().getTemperature() == lastTemperature && getFluid().getPressure() == lastPressure + && Math.abs(getFluid().getFlowRate("kg/hr") - lastFlowRate) + / getFluid().getFlowRate("kg/hr") < 1e-6) { + isSolved = true; + return false; + } else { + isSolved = false; + return true; + } + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + // System.out.println("start flashing stream... " + streamNumber); + thermoSystem = getFluid().clone(); + + ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); + + if (stream != null && thermoSystem.getNumberOfComponents() == 1 + && getSpecification().equals("TP")) { + setSpecification("PH"); + } + if (getSpecification().equals("TP")) { + thermoOps.TPflash(); + } else if (getSpecification().equals("dewP")) { + try { + thermoOps.dewPointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); thermoOps.TPflash(); - thermoSystem.initProperties(); - } - - /** {@inheritDoc} */ - @Override - public void run() { - // System.out.println("start flashing stream... " + streamNumber); - if (stream != null) { - thermoSystem = this.stream.getThermoSystem().clone(); - } - ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); - - if (stream != null && getThermoSystem().getNumberOfComponents() == 1 - && getSpecification().equals("TP")) { - setSpecification("PH"); - } - if (getSpecification().equals("TP")) { - thermoOps.TPflash(); - } else if (getSpecification().equals("dewP")) { - try { - thermoOps.dewPointTemperatureFlash(); - } catch (Exception e) { - e.printStackTrace(); - thermoOps.TPflash(); - } - } else if (getSpecification().equals("dewT")) { - try { - thermoOps.dewPointPressureFlash(); - } catch (Exception e) { - e.printStackTrace(); - thermoOps.TPflash(); - } - } else if (getSpecification().equals("gas quality")) { - try { - thermoSystem.init(0); - thermoSystem.init(2); - double gasEnthalpy = thermoSystem.getPhase(0).getEnthalpy(); - double liquidEnthalpy = thermoSystem.getPhase(1).getEnthalpy(); - - double enthalpySpec = - getGasQuality() * gasEnthalpy + (1.0 - getGasQuality()) * liquidEnthalpy; - thermoOps.PHflash(enthalpySpec); - } catch (Exception e) { - e.printStackTrace(); - thermoOps.TPflash(); - } - } else if (getSpecification().equals("bubP")) { - try { - thermoOps.bubblePointTemperatureFlash(); - } catch (Exception e) { - e.printStackTrace(); - thermoOps.TPflash(); - } - } else if (getSpecification().equals("bubT")) { - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - e.printStackTrace(); - thermoOps.TPflash(); - } - } else if (getSpecification().equals("PH")) { - try { - thermoOps.PHflash(getThermoSystem().getEnthalpy(), 0); - } catch (Exception e) { - e.printStackTrace(); - thermoOps.TPflash(); - } - } else { - thermoOps.TPflash(); - } - - thermoSystem.initProperties(); - // System.out.println("number of phases: " + thermoSystem.getNumberOfPhases()); - // System.out.println("beta: " + thermoSystem.getBeta()); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - thermoSystem.display(name); - } - - /** - *

- * getResultTable. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[][] getResultTable() { - return thermoSystem.getResultTable(); - } - - /** {@inheritDoc} */ - @Override - public void runTransient(double dt) { - if (hasController) { - // This adjusts the flow rate through this stream. - // Typically used to match/manipulate mass balance. - runController(dt); - this.setFlowRate(getController().getResponse(), "kg/hr"); } - - run(); - } - - /** - *

- * runController. - *

- * - * @param dt a double - */ - public void runController(double dt) { - if (hasController) { - getController().runTransient(this.getFlowRate("kg/hr"), dt); - } - } - - /** {@inheritDoc} */ - @Override - public void flashStream() { - ThermodynamicOperations ops = new ThermodynamicOperations(thermoSystem); - ops.TPflash(); - } - - /** - *

- * phaseEnvelope. - *

- */ - public void phaseEnvelope() { - SystemInterface localSyst = thermoSystem.clone(); - ThermodynamicOperations ops = new ThermodynamicOperations(localSyst); - ops.setRunAsThread(true); - ops.calcPTphaseEnvelope(true); - ops.waitAndCheckForFinishedCalculation(10000); - ops.displayResult(); - // ops.getJfreeChart(); - } - - /** {@inheritDoc} */ - @Override - public double CCB(String unit) { - SystemInterface localSyst = thermoSystem.clone(); - ThermodynamicOperations ops = new ThermodynamicOperations(localSyst); - ops.setRunAsThread(true); - ops.calcPTphaseEnvelope(true); - ops.waitAndCheckForFinishedCalculation(10000); - if (unit.equals("bara") || unit.equals("bar")) { - return ops.get("cricondenbar")[1]; - } else { - if (unit.equals("C")) - return ops.get("cricondenbar")[0] - 273.15; - else - return ops.get("cricondenbar")[0]; - } - // return ops.get - // ops.getJfreeChart(); - } - - /** {@inheritDoc} */ - @Override - public double CCT(String unit) { - SystemInterface localSyst = thermoSystem.clone(); - ThermodynamicOperations ops = new ThermodynamicOperations(localSyst); - ops.setRunAsThread(true); - ops.calcPTphaseEnvelope(true); - ops.waitAndCheckForFinishedCalculation(10000); - if (unit.equals("bara") || unit.equals("bar")) { - return ops.get("cricondentherm")[1]; - } else { - if (unit.equals("C")) - return ops.get("cricondentherm")[0] - 273.15; - else - return ops.get("cricondentherm")[0]; - } - // return ops.get - // ops.getJfreeChart(); - } - - /** {@inheritDoc} */ - @Override - public double TVP(double temperature, String unit) { - SystemInterface localSyst = thermoSystem.clone(); - localSyst.setTemperature(temperature, unit); - ThermodynamicOperations ops = new ThermodynamicOperations(localSyst); - try { - ops.bubblePointPressureFlash(false); - } catch (Exception e) { - } - return localSyst.getPressure(unit); - } - - /** {@inheritDoc} */ - @Override - public String[][] reportResults() { - return thermoSystem.getResultTable(); - } - - /** - *

- * getProperty. - *

- * - * @param propertyName a {@link java.lang.String} object - * @param unit a {@link java.lang.String} object - * @param phase a {@link java.lang.String} object - * @param component a {@link java.lang.String} object - * @return a {@link java.lang.Object} object - */ - public Object getProperty(String propertyName, String unit, String phase, String component) { - // getFluid().getProperties.containsKey(propertyName)) { - // if(properties.containsKey(propertyName)) { - // } - // else - return null; - } - - /** {@inheritDoc} */ - @Override - public double GCV() { - Standard_ISO6976 standard = new Standard_ISO6976(thermoSystem.clone(), 0, 15.55, "volume"); - standard.setReferenceState("real"); - standard.calculate(); - return standard.getValue("GCV") * 1.0e3; - } - - /** {@inheritDoc} */ - @Override - public double LCV() { - Standard_ISO6976 standard = new Standard_ISO6976(thermoSystem.clone(), 0, 15.55, "volume"); - standard.setReferenceState("real"); - standard.calculate(); - return standard.getValue("InferiorCalorificValue") * 1.0e3; + } else if (getSpecification().equals("dewT")) { + try { + thermoOps.dewPointPressureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + thermoOps.TPflash(); + } + } else if (getSpecification().equals("gas quality")) { + try { + thermoSystem.init(0); + thermoSystem.init(2); + double gasEnthalpy = thermoSystem.getPhase(0).getEnthalpy(); + double liquidEnthalpy = thermoSystem.getPhase(1).getEnthalpy(); + + double enthalpySpec = + getGasQuality() * gasEnthalpy + (1.0 - getGasQuality()) * liquidEnthalpy; + thermoOps.PHflash(enthalpySpec); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + thermoOps.TPflash(); + } + } else if (getSpecification().equals("bubP")) { + try { + thermoOps.bubblePointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + thermoOps.TPflash(); + } + } else if (getSpecification().equals("bubT")) { + try { + thermoOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + thermoOps.TPflash(); + } + } else if (getSpecification().equals("PH")) { + try { + thermoOps.PHflash(thermoSystem.getEnthalpy(), 0); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + thermoOps.TPflash(); + } + } else { + thermoOps.TPflash(); + } + + thermoSystem.initProperties(); + + lastFlowRate = thermoSystem.getFlowRate("kg/hr"); + lastTemperature = thermoSystem.getTemperature(); + lastPressure = thermoSystem.getPressure(); + + if (stream != null) { + stream.setFluid(thermoSystem); + } + // System.out.println("number of phases: " + thermoSystem.getNumberOfPhases()); + // System.out.println("beta: " + thermoSystem.getBeta()); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + getFluid().display(name); + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return getFluid().calcResultTable(); + } + + /** {@inheritDoc} */ + @Override + public void runTransient(double dt, UUID id) { + if (hasController) { + // This adjusts the flow rate through this stream. + // Typically used to match/manipulate mass balance. + runController(dt, id); + this.setFlowRate(getController().getResponse(), "kg/hr"); + } + + run(id); + increaseTime(dt); + } + + /** + *

+ * runController. + *

+ * + * @param dt a double + * @param id UUID of run + */ + public void runController(double dt, UUID id) { + if (hasController) { + getController().runTransient(this.getFlowRate("kg/hr"), dt, id); + } + } + + /** {@inheritDoc} */ + @Override + public void flashStream() { + ThermodynamicOperations ops = new ThermodynamicOperations(getFluid()); + ops.TPflash(); + } + + /** + *

+ * phaseEnvelope. + *

+ */ + public void phaseEnvelope() { + SystemInterface localSyst = getFluid().clone(); + ThermodynamicOperations ops = new ThermodynamicOperations(localSyst); + ops.setRunAsThread(true); + ops.calcPTphaseEnvelope(true); + ops.waitAndCheckForFinishedCalculation(10000); + ops.displayResult(); + // ops.getJfreeChart(); + } + + /** {@inheritDoc} */ + @Override + public double CCB(String unit) { + SystemInterface localSyst = getFluid().clone(); + ThermodynamicOperations ops = new ThermodynamicOperations(localSyst); + ops.setRunAsThread(true); + ops.calcPTphaseEnvelope(true); + ops.waitAndCheckForFinishedCalculation(10000); + if (unit.equals("bara") || unit.equals("bar")) { + return ops.get("cricondenbar")[1]; + } else { + if (unit.equals("C")) { + return ops.get("cricondenbar")[0] - 273.15; + } else { + return ops.get("cricondenbar")[0]; + } } - - /** - *

- * Setter for the field stream. - *

- * - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void setStream(StreamInterface stream) { - this.stream = stream; + // return ops.get + // ops.getJfreeChart(); + } + + /** {@inheritDoc} */ + @Override + public double CCT(String unit) { + SystemInterface localSyst = getFluid().clone(); + ThermodynamicOperations ops = new ThermodynamicOperations(localSyst); + ops.setRunAsThread(true); + ops.calcPTphaseEnvelope(true); + ops.waitAndCheckForFinishedCalculation(10000); + if (unit.equals("bara") || unit.equals("bar")) { + return ops.get("cricondentherm")[1]; + } else { + if (unit.equals("C")) { + return ops.get("cricondentherm")[0] - 273.15; + } else { + return ops.get("cricondentherm")[0]; + } } + // return ops.get + // ops.getJfreeChart(); + } + + /** {@inheritDoc} */ + @Override + public double TVP(double temperature, String unit) { + SystemInterface localSyst = getFluid().clone(); + localSyst.setTemperature(temperature, unit); + ThermodynamicOperations ops = new ThermodynamicOperations(localSyst); + try { + ops.bubblePointPressureFlash(false); + } catch (Exception ex) { + } + return localSyst.getPressure(); + } + + /** {@inheritDoc} */ + @Override + public double getTVP(double referenceTemperature, String unit, String returnUnit) { + SystemInterface localSyst = getFluid().clone(); + localSyst.setTemperature(referenceTemperature, unit); + ThermodynamicOperations ops = new ThermodynamicOperations(localSyst); + try { + ops.bubblePointPressureFlash(false); + } catch (Exception ex) { + } + return localSyst.getPressure(returnUnit); + } + + /** {@inheritDoc} */ + @Override + public double getRVP(double referenceTemperature, String unit, String returnUnit) { + SystemInterface localSyst = getFluid().clone(); + Standard_ASTM_D6377 standard = new Standard_ASTM_D6377(localSyst); + standard.setReferenceTemperature(referenceTemperature, unit); + standard.calculate(); + return standard.getValue("RVP", returnUnit); + } + + /** {@inheritDoc} */ + @Override + public String[][] reportResults() { + return getFluid().getResultTable(); + } + + /** + *

+ * getProperty. + *

+ * + * @param propertyName a {@link java.lang.String} object + * @param unit a {@link java.lang.String} object + * @param phase a {@link java.lang.String} object + * @param component a {@link java.lang.String} object + * @return a {@link java.lang.Object} object + */ + public Object getProperty(String propertyName, String unit, String phase, String component) { + // getFluid().getProperties.containsKey(propertyName)) { + // if(properties.containsKey(propertyName)) { + // } + // else + return null; + } + + /** {@inheritDoc} */ + @Override + public double GCV() { + Standard_ISO6976 standard = new Standard_ISO6976(getFluid().clone(), 0, 15.55, "volume"); + standard.setReferenceState("real"); + standard.calculate(); + return standard.getValue("GCV") * 1.0e3; + } + + /** {@inheritDoc} */ + @Override + public double getGCV(String unit, double refTVolume, double refTCombustion) { + Standard_ISO6976 standard = + new Standard_ISO6976(getFluid().clone(), refTVolume, refTCombustion, unit); + standard.setReferenceState("real"); + standard.calculate(); + return standard.getValue("SuperiorCalorificValue") * 1.0e3; + } + + /** {@inheritDoc} */ + @Override + public double getWI(String unit, double refTVolume, double refTCombustion) { + Standard_ISO6976 standard = + new Standard_ISO6976(getFluid().clone(), refTVolume, refTCombustion, unit); + standard.setReferenceState("real"); + standard.calculate(); + return standard.getValue("SuperiorWobbeIndex") * 1.0e3; + } + + /** {@inheritDoc} */ + @Override + public Standard_ISO6976 getISO6976(String unit, double refTVolume, double refTCombustion) { + Standard_ISO6976 standard = + new Standard_ISO6976(getFluid().clone(), refTVolume, refTCombustion, unit); + standard.setReferenceState("real"); + return standard; + } + + /** {@inheritDoc} */ + @Override + public double LCV() { + Standard_ISO6976 standard = new Standard_ISO6976(getFluid().clone(), 0, 15.55, "volume"); + standard.setReferenceState("real"); + standard.calculate(); + return standard.getValue("InferiorCalorificValue") * 1.0e3; + } + + /** + *

+ * Setter for the field stream. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public void setStream(StreamInterface stream) { + this.stream = stream; + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getFluid() { + if (stream != null) { + return stream.getFluid(); + } else { + return thermoSystem; + } + } + + /** + *

+ * getReport. + *

+ * + * @return a String object + */ + public ArrayList getReport() { + ArrayList report = new ArrayList(); + HashMap gasprops = new HashMap(); + ArrayList phases = new ArrayList(); + + phases.add("Total"); + if (getFluid().hasPhaseType("gas")) { + phases.add("Gas"); + gasprops.put("temperature", + Double.toString(getTemperature(neqsim.util.unit.Units.getSymbol("temperature")))); + } + if (getFluid().hasPhaseType("oil")) { + phases.add("oil"); + } + if (getFluid().hasPhaseType("aqueous")) { + phases.add("aqueous"); + } + + report.add(phases.toArray(new String[0])); + + report.add(new String[] {"temperature", + Double.toString(getTemperature(neqsim.util.unit.Units.getSymbol("temperature"))), + neqsim.util.unit.Units.getSymbol("temperature")}); + report.add(new String[] {"pressure", + Double.toString(getPressure(neqsim.util.unit.Units.getSymbol("pressure"))), + neqsim.util.unit.Units.getSymbol("pressure")}); + report.add(new String[] {"mass flow", + Double.toString(getFlowRate(neqsim.util.unit.Units.getSymbol("mass flow"))), + neqsim.util.unit.Units.getSymbol("mass flow")}); + report.add(new String[] {"molar flow", + Double.toString(getFlowRate(neqsim.util.unit.Units.getSymbol("molar flow"))), + neqsim.util.unit.Units.getSymbol("molar flow")}); + report.add(new String[] {"volume flow", + Double.toString(getFlowRate(neqsim.util.unit.Units.getSymbol("volume flow"))), + neqsim.util.unit.Units.getSymbol("volume flow")}); + return report; + } + + /** {@inheritDoc} */ + @Override + public String toJson() { + return new GsonBuilder().create().toJson(new StreamResponse(this)); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/stream/StreamInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/stream/StreamInterface.java index 3d7ee55cab..a63e5e2699 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/stream/StreamInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/stream/StreamInterface.java @@ -3,9 +3,11 @@ * * Created on 21. august 2001, 22:49 */ + package neqsim.processSimulation.processEquipment.stream; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; +import neqsim.standards.gasQuality.Standard_ISO6976; import neqsim.thermo.system.SystemInterface; /** @@ -17,219 +19,282 @@ * @version $Id: $Id */ public interface StreamInterface extends ProcessEquipmentInterface { - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem(); - - /** - *

- * setThermoSystem. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setThermoSystem(SystemInterface thermoSystem); - - /** - *

- * setFlowRate. - *

- * - * @param flowrate a double - * @param unit a {@link java.lang.String} object - */ - public void setFlowRate(double flowrate, String unit); - - /** - *

- * getPressure. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getPressure(String unit); - - /** - *

- * runTPflash. - *

- */ - public void runTPflash(); - - /** - *

- * getTemperature. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getTemperature(String unit); - - /** {@inheritDoc} */ - @Override - public void setName(String name); - - /** - *

- * CCT. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double CCT(String unit); - - /** - *

- * getTemperature. - *

- * - * @return a double - */ - public double getTemperature(); - - /** - *

- * CCB. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double CCB(String unit); - - /** - *

- * getFlowRate. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getFlowRate(String unit); - - /** - *

- * TVP. - *

- * - * @param temperature a double - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double TVP(double temperature, String unit); - - /** - *

- * setFluid. - *

- * - * @param fluid a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setFluid(SystemInterface fluid); - - /** - *

- * getMolarRate. - *

- * - * @return a double - */ - public double getMolarRate(); - - /** {@inheritDoc} */ - @Override - public double getPressure(); - - /** - *

- * clone. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface clone(); - - /** - *

- * flashStream. - *

- */ - public void flashStream(); - - /** - *

- * getHydrateEquilibriumTemperature. - *

- * - * @return a double - */ - public double getHydrateEquilibriumTemperature(); - - /** - *

- * setThermoSystemFromPhase. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param phaseTypeName a {@link java.lang.String} object - */ - public void setThermoSystemFromPhase(SystemInterface thermoSystem, String phaseTypeName); - - /** - *

- * setEmptyThermoSystem. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setEmptyThermoSystem(SystemInterface thermoSystem); - - /** - *

- * setPressure. - *

- * - * @param pressure a double - * @param unit a {@link java.lang.String} object - */ - public void setPressure(double pressure, String unit); - - /** - *

- * setTemperature. - *

- * - * @param temperature a double - * @param unit a {@link java.lang.String} object - */ - public void setTemperature(double temperature, String unit); - - /** - *

- * GCV. - *

- * - * @return a double - */ - public double GCV(); - - /** - *

- * LCV. - *

- * - * @return a double - */ - public double LCV(); - - /** {@inheritDoc} */ - @Override - public boolean equals(Object o); - - /** {@inheritDoc} */ - @Override - public int hashCode(); + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem(); + + /** + *

+ * setThermoSystem. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setThermoSystem(SystemInterface thermoSystem); + + /** + *

+ * setFlowRate. + *

+ * + * @param flowrate a double + * @param unit a {@link java.lang.String} object + */ + public void setFlowRate(double flowrate, String unit); + + /** + * {@inheritDoc} + * + *

+ * getPressure. + *

+ */ + @Override + public double getPressure(String unit); + + /** {@inheritDoc} */ + @Override + public double getPressure(); + + /** + *

+ * runTPflash. + *

+ */ + public void runTPflash(); + + /** + *

+ * getTemperature. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getTemperature(String unit); + + /** + *

+ * getTemperature. + *

+ * + * @return a double + */ + public double getTemperature(); + + /** {@inheritDoc} */ + @Override + public void setName(String name); + + /** + *

+ * CCT. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double CCT(String unit); + + /** + *

+ * CCB. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double CCB(String unit); + + /** + *

+ * getFlowRate. Wrapper for SystemInterface.getFlowRate(). + *

+ * + * @param unit Supported units are kg/sec, kg/min, kg/hr, kg/day, m3/sec, m3/min, m3/hr, Sm3/sec, + * Sm3/hr, Sm3/day, MSm3/day, mole/sec, mole/min, mole/hr + * @return flow rate in specified unit + */ + public default double getFlowRate(String unit) { + return this.getFluid().getFlowRate(unit); + } + + /** + *

+ * TVP. + *

+ * + * @param temperature a double + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double TVP(double temperature, String unit); + + /** + *

+ * TVP. + *

+ * + * @param referenceTemperature a double + * @param unit a {@link java.lang.String} object + * @param returnUnit a {@link java.lang.String} object + * @return a double + */ + public double getTVP(double referenceTemperature, String unit, String returnUnit); + + /** + *

+ * TVP. + *

+ * + * @param referenceTemperature a double + * @param unit a {@link java.lang.String} object + * @param returnUnit a {@link java.lang.String} object + * @return a double + */ + public double getRVP(double referenceTemperature, String unit, String returnUnit); + + /** + *

+ * setFluid. + *

+ * + * @param fluid a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setFluid(SystemInterface fluid); + + /** + *

+ * getMolarRate. + *

+ * + * @return a double + */ + public double getMolarRate(); + + /** + *

+ * clone. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface clone(); + + /** + *

+ * flashStream. + *

+ */ + public void flashStream(); + + /** + *

+ * getHydrateEquilibriumTemperature. + *

+ * + * @return a double + */ + public double getHydrateEquilibriumTemperature(); + + /** + *

+ * setThermoSystemFromPhase. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param phaseTypeName a {@link java.lang.String} object + */ + public void setThermoSystemFromPhase(SystemInterface thermoSystem, String phaseTypeName); + + /** + *

+ * setEmptyThermoSystem. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setEmptyThermoSystem(SystemInterface thermoSystem); + + /** + *

+ * setPressure. + *

+ * + * @param pressure a double + * @param unit a {@link java.lang.String} object + */ + public void setPressure(double pressure, String unit); + + /** + *

+ * setTemperature. + *

+ * + * @param temperature a double + * @param unit a {@link java.lang.String} object + */ + public void setTemperature(double temperature, String unit); + + /** + *

+ * GCV. + *

+ * + * @return a double + */ + public double GCV(); + + /** + *

+ * getGCV. + *

+ * + * @param unit a String + * @param refTVolume a double in Celcius + * @param refTCombustion a double in Celcius + * @return a double + */ + public double getGCV(String unit, double refTVolume, double refTCombustion); + + /** + *

+ * getWI. + *

+ * + * @param unit a String + * @param refTVolume a double in Celcius + * @param refTCombustion a double in Celcius + * @return a double + */ + public double getWI(String unit, double refTVolume, double refTCombustion); + + /** + *

+ * getWI. + *

+ * + * @param unit a String + * @param refTVolume a double in Celcius + * @param refTCombustion a double in Celcius + * @return a Standard_ISO6976 + */ + public Standard_ISO6976 getISO6976(String unit, double refTVolume, double refTCombustion); + + /** + *

+ * LCV. + *

+ * + * @return a double + */ + public double LCV(); + + /** {@inheritDoc} */ + @Override + public boolean equals(Object o); + + /** {@inheritDoc} */ + @Override + public int hashCode(); } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/stream/VirtualStream.java b/src/main/java/neqsim/processSimulation/processEquipment/stream/VirtualStream.java new file mode 100644 index 0000000000..ae73adffa2 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/stream/VirtualStream.java @@ -0,0 +1,165 @@ +package neqsim.processSimulation.processEquipment.stream; + +import java.util.UUID; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; + +/** + *

+ * VirtualStream class. + *

+ * + * @author Even Solbraa + * @version $Id: $Id + */ +public class VirtualStream extends ProcessEquipmentBaseClass { + private static final long serialVersionUID = 1L; + static Logger logger = LogManager.getLogger(VirtualStream.class); + + protected StreamInterface refStream = null; + protected StreamInterface outStream = null; + protected double flowRate; + protected String flowUnit; + protected boolean setFlowRate = false; + protected double temperature; + protected String temperatureUnit; + protected boolean setTemperature = false; + protected double pressure; + protected String pressureUnit; + protected boolean setPressure = false; + protected double[] composition; + protected String compositionUnit; + protected boolean setComposition = false; + + /** + *

+ * Constructor for VirtualStream. + *

+ * + * @param name a {@link java.lang.String} object + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public VirtualStream(String name, StreamInterface stream) { + super(name); + refStream = stream; + } + + /** + *

+ * Constructor for VirtualStream. + *

+ * + * @param name a {@link java.lang.String} object + */ + public VirtualStream(String name) { + super(name); + } + + /** + *

+ * setReferenceStream. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public void setReferenceStream(StreamInterface stream) { + refStream = stream; + } + + /** + *

+ * Setter for the field flowRate. + *

+ * + * @param rate a double + * @param unit a {@link java.lang.String} object + */ + public void setFlowRate(double rate, String unit) { + flowRate = rate; + flowUnit = unit; + setFlowRate = true; + } + + /** + *

+ * Setter for the field composition. + *

+ * + * @param comps an array of type double + * @param unit a {@link java.lang.String} object + */ + public void setComposition(double[] comps, String unit) { + composition = comps; + compositionUnit = unit; + setComposition = true; + } + + /** + *

+ * Setter for the field temperature. + *

+ * + * @param temp a double + * @param unit a {@link java.lang.String} object + */ + public void setTemperature(double temp, String unit) { + temperature = temp; + temperatureUnit = unit; + setTemperature = true; + } + + /** + *

+ * Setter for the field pressure. + *

+ * + * @param pres a double + * @param unit a {@link java.lang.String} object + */ + public void setPressure(double pres, String unit) { + pressure = pres; + pressureUnit = unit; + setPressure = true; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + outStream = new Stream("new stram", refStream.getFluid().clone()); + + if (setFlowRate) { + outStream.setFlowRate(flowRate, flowUnit); + } + if (setTemperature) { + outStream.setTemperature(temperature, temperatureUnit); + } + if (setPressure) { + outStream.setPressure(pressure, pressureUnit); + } + if (setComposition) { + outStream.getFluid().setMolarComposition(composition); + } + outStream.run(id); + } + + /** + *

+ * Getter for the field outStream. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getOutStream() { + return outStream; + } + + /** {@inheritDoc} */ + @Override + public boolean solved() { + // TODO Auto-generated method stub + return false; + } +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/subsea/SimpleFlowLine.java b/src/main/java/neqsim/processSimulation/processEquipment/subsea/SimpleFlowLine.java index b6432f764e..46f09538bf 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/subsea/SimpleFlowLine.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/subsea/SimpleFlowLine.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.subsea; +import java.util.UUID; import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.pipeline.AdiabaticTwoPhasePipe; import neqsim.processSimulation.processEquipment.stream.StreamInterface; @@ -14,105 +15,105 @@ * @version $Id: $Id */ public class SimpleFlowLine extends TwoPortEquipment { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - private double height = 100.0; - public double length = 520.0; - double outletTemperature = 313.15; - AdiabaticTwoPhasePipe pipeline; + private double height = 100.0; + public double length = 520.0; + double outletTemperature = 313.15; + AdiabaticTwoPhasePipe pipeline; - /** - *

- * Constructor for SimpleFlowLine. - *

- * - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public SimpleFlowLine(StreamInterface inStream) { - this("SimpleFlowLine", inStream); - - } - - /** - * Constructor for SimpleFlowLine. - * - * @param name Name of SimpleFlowLine object - * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public SimpleFlowLine(String name, StreamInterface inStream) { - super(name); - this.inStream = inStream; - setOutletStream(inStream.clone()); - pipeline = new AdiabaticTwoPhasePipe("pipeline", inStream); - } + /** + *

+ * Constructor for SimpleFlowLine. + *

+ * + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public SimpleFlowLine(StreamInterface inStream) { + this("SimpleFlowLine", inStream); + } - /** - *

- * Getter for the field pipeline. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.pipeline.AdiabaticTwoPhasePipe} - * object - */ - public AdiabaticTwoPhasePipe getPipeline() { - return pipeline; - } + /** + * Constructor for SimpleFlowLine. + * + * @param name Name of SimpleFlowLine object + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public SimpleFlowLine(String name, StreamInterface inStream) { + super(name); + this.inStream = inStream; + setOutletStream(inStream.clone()); + pipeline = new AdiabaticTwoPhasePipe("pipeline", inStream); + } - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return getOutletStream().getThermoSystem(); - } + /** + *

+ * Getter for the field pipeline. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.pipeline.AdiabaticTwoPhasePipe} + * object + */ + public AdiabaticTwoPhasePipe getPipeline() { + return pipeline; + } - /** {@inheritDoc} */ - @Override - public void run() { - pipeline.run(); - getOutletStream().setFluid(pipeline.getOutletStream().getFluid()); + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return getOutletStream().getThermoSystem(); + } - /* - * System.out.println("stary P " ); - * - * SystemInterface fluidIn = (inStream.getFluid()).clone(); fluidIn.initProperties(); - * - * double density = fluidIn.getDensity("kg/m3"); - * - * double deltaP = - * density*getHeight()*neqsim.thermo.ThermodynamicConstantsInterface.gravity/1. 0e5; - * - * System.out.println("density " +density + " delta P " + deltaP); - * - * fluidIn.setPressure(fluidIn.getPressure("bara")-deltaP); - * fluidIn.setTemperature(outletTemperature); - * - * ThermodynamicOperations ops = new ThermodynamicOperations(fluidIn); ops.TPflash(); - * - * getOutletStream().setFluid(fluidIn); - */ - } + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + pipeline.run(id); + getOutletStream().setFluid(pipeline.getOutletStream().getFluid()); - /** - *

- * Getter for the field height. - *

+ /* + * System.out.println("stary P " ); * - * @return a double - */ - public double getHeight() { - return height; - } - - /** - *

- * Setter for the field height. - *

+ * SystemInterface fluidIn = (inStream.getFluid()).clone(); fluidIn.initProperties(); + * + * double density = fluidIn.getDensity("kg/m3"); + * + * double deltaP = density*getHeight()*neqsim.thermo.ThermodynamicConstantsInterface.gravity/1. + * 0e5; + * + * System.out.println("density " +density + " delta P " + deltaP); * - * @param height a double + * fluidIn.setPressure(fluidIn.getPressure("bara")-deltaP); + * fluidIn.setTemperature(outletTemperature); + * + * ThermodynamicOperations ops = new ThermodynamicOperations(fluidIn); ops.TPflash(); + * + * getOutletStream().setFluid(fluidIn); */ - public void setHeight(double height) { - this.height = height; - } + setCalculationIdentifier(id); + } + + /** + *

+ * Getter for the field height. + *

+ * + * @return a double + */ + public double getHeight() { + return height; + } + + /** + *

+ * Setter for the field height. + *

+ * + * @param height a double + */ + public void setHeight(double height) { + this.height = height; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/subsea/SubseaWell.java b/src/main/java/neqsim/processSimulation/processEquipment/subsea/SubseaWell.java index 13273b308a..980c7c9b62 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/subsea/SubseaWell.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/subsea/SubseaWell.java @@ -1,6 +1,7 @@ package neqsim.processSimulation.processEquipment.subsea; import java.util.ArrayList; +import java.util.UUID; import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.pipeline.AdiabaticTwoPhasePipe; import neqsim.processSimulation.processEquipment.reservoir.SimpleReservoir; @@ -18,160 +19,158 @@ * @version $Id: $Id */ public class SubseaWell extends TwoPortEquipment { - private static final long serialVersionUID = 1000; - - public double height = 1000.0, length = 1200.0; - AdiabaticTwoPhasePipe pipeline; - - /** - *

- * Constructor for SubseaWell. - *

+ private static final long serialVersionUID = 1000; + + public double height = 1000.0, length = 1200.0; + AdiabaticTwoPhasePipe pipeline; + + /** + *

+ * Constructor for SubseaWell. + *

+ * + * @param instream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public SubseaWell(StreamInterface instream) { + super("SubseaWell"); + this.inStream = instream; + setOutletStream(instream.clone()); + pipeline = new AdiabaticTwoPhasePipe("pipeline", instream); + } + + /** + *

+ * Getter for the field pipeline. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.pipeline.AdiabaticTwoPhasePipe} + * object + */ + public AdiabaticTwoPhasePipe getPipeline() { + return pipeline; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + pipeline.run(id); + getOutletStream().setFluid(pipeline.getOutletStream().getFluid()); + + /* + * System.out.println("stary P " ); SystemInterface fluidIn = (inStream.getFluid()).clone(); + * fluidIn.initProperties(); * - * @param instream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public SubseaWell(StreamInterface instream) { - super("SubseaWell"); - this.inStream = instream; - setOutletStream(instream.clone()); - pipeline = new AdiabaticTwoPhasePipe("pipeline", instream); - } - - /** - *

- * Getter for the field pipeline. - *

+ * double density = fluidIn.getDensity("kg/m3"); * - * @return a {@link neqsim.processSimulation.processEquipment.pipeline.AdiabaticTwoPhasePipe} - * object - */ - public AdiabaticTwoPhasePipe getPipeline() { - return pipeline; - } - - /** {@inheritDoc} */ - @Override - public void run() { - pipeline.run(); - getOutletStream().setFluid(pipeline.getOutletStream().getFluid()); - - /* - * System.out.println("stary P " ); SystemInterface fluidIn = (inStream.getFluid()).clone(); - * fluidIn.initProperties(); - * - * double density = fluidIn.getDensity("kg/m3"); - * - * double deltaP = - * density*height*neqsim.thermo.ThermodynamicConstantsInterface.gravity/1.0e5; - * - * System.out.println("density " +density + " delta P " + deltaP); - * - * fluidIn.setPressure(fluidIn.getPressure("bara")-deltaP); - * - * ThermodynamicOperations ops = new ThermodynamicOperations(fluidIn); ops.TPflash(); - * - * getOutStream().setFluid(fluidIn); - */ - } - - /** - *

- * main. - *

+ * double deltaP = density*height*neqsim.thermo.ThermodynamicConstantsInterface.gravity/1.0e5; + * + * System.out.println("density " +density + " delta P " + deltaP); * - * @param args an array of {@link java.lang.String} objects + * fluidIn.setPressure(fluidIn.getPressure("bara")-deltaP); + * + * ThermodynamicOperations ops = new ThermodynamicOperations(fluidIn); ops.TPflash(); + * + * getOutStream().setFluid(fluidIn); */ - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 100.0), 250.00); - testSystem.addComponent("nitrogen", 0.100); - testSystem.addComponent("methane", 70.00); - testSystem.addComponent("ethane", 1.0); - testSystem.addComponent("propane", 1.0); - testSystem.addComponent("i-butane", 1.0); - testSystem.addComponent("n-butane", 1.0); - testSystem.addComponent("n-hexane", 0.1); - testSystem.addComponent("n-heptane", 0.1); - testSystem.addComponent("n-nonane", 1.0); - testSystem.addComponent("nC10", 1.0); - testSystem.addComponent("nC12", 3.0); - testSystem.addComponent("nC15", 13.0); - testSystem.addComponent("nC20", 13.0); - testSystem.addComponent("water", 11.0); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - - SimpleReservoir reservoirOps = new SimpleReservoir("Well 1 reservoir"); - reservoirOps.setReservoirFluid(testSystem, 5.0 * 1e7, 552.0 * 1e6, 10.0e6); - StreamInterface producedOilStream = reservoirOps.addOilProducer("oilproducer_1"); - producedOilStream.setFlowRate(3500.0 * 24.0 * 600.0, "kg/day"); - - reservoirOps.run(); - - System.out.println("water volume" - + reservoirOps.getReservoirFluid().getPhase("aqueous").getVolume("m3") / 1.0e6); - System.out.println( - "oil production total" + reservoirOps.getOilProductionTotal("Sm3") + " Sm3"); - System.out.println( - "total produced " + reservoirOps.getProductionTotal("MSm3 oe") + " MSm3 oe"); - - SubseaWell well1 = new SubseaWell(reservoirOps.getOilProducer("oilproducer_1").getStream()); - well1.getPipeline().setDiameter(0.3); - well1.getPipeline().setLength(5500.0); - well1.getPipeline().setInletElevation(-1000.0); - well1.getPipeline().setOutletElevation(-100.0); - ThrottlingValve subseaChoke = new ThrottlingValve("subseaChoke", well1.getOutletStream()); - subseaChoke.setOutletPressure(90.0); - subseaChoke.setAcceptNegativeDP(false); - SimpleFlowLine flowLine = new SimpleFlowLine("flowLine", subseaChoke.getOutletStream()); - flowLine.getPipeline().setDiameter(0.4); - flowLine.getPipeline().setLength(2000.0); - flowLine.getPipeline().setInletElevation(-100.0); - // flowLine.set - ThrottlingValve topsideChoke = - new ThrottlingValve("topsideChoke", flowLine.getOutletStream()); - topsideChoke.setOutletPressure(50.0, "bara"); - topsideChoke.setAcceptNegativeDP(false); - - Adjuster adjust = new Adjuster("adjust"); - adjust.setActivateWhenLess(true); - adjust.setTargetVariable(flowLine.getOutletStream(), "pressure", 70.0, "bara"); - adjust.setAdjustedVariable(producedOilStream, "flow rate"); - - ProcessSystem ops = new ProcessSystem(); - ops.add(well1); - ops.add(subseaChoke); - ops.add(flowLine); - ops.add(topsideChoke); - ops.add(adjust); - - ArrayList res = new ArrayList(); - // for(int i=0;i<152;i++) { - // do { - reservoirOps.runTransient(60 * 60 * 24 * 1); - ops.run(); - res.add(new double[] {reservoirOps.getTime(), - producedOilStream.getFluid().getFlowRate("kg/hr"), - reservoirOps.getOilProductionTotal("MSm3 oe")}); - System.out.println("subsea choke DP " + subseaChoke.getDeltaPressure("bara")); - System.out.println("topside choke DP " + topsideChoke.getDeltaPressure("bara")); - System.out.println("oil production " + producedOilStream.getFluid().getFlowRate("kg/hr")); - // } - // while(producedOilStream.getFluid().getFlowRate("kg/hr")>1.0e5); - - ProcessSystem GasOilProcess = ProcessSystem.open("c:/temp/offshorePro.neqsim"); - ((StreamInterface) GasOilProcess.getUnit("well stream")) - .setThermoSystem(topsideChoke.getOutletStream().getFluid()); - ((StreamInterface) GasOilProcess.getUnit("well stream")).setPressure(70.0, "bara"); - ((StreamInterface) GasOilProcess.getUnit("well stream")).setTemperature(65.0, "C"); - GasOilProcess.run(); - - System.out.println("power " + GasOilProcess.getPower("MW")); - for (int i = 0; i < res.size(); i++) { - System.out.println("time " + res.get(i)[0] + " oil production " + res.get(i)[1] - + " total production MSm3 oe " + res.get(i)[2]); - } - } + setCalculationIdentifier(id); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 100.0), 250.00); + testSystem.addComponent("nitrogen", 0.100); + testSystem.addComponent("methane", 70.00); + testSystem.addComponent("ethane", 1.0); + testSystem.addComponent("propane", 1.0); + testSystem.addComponent("i-butane", 1.0); + testSystem.addComponent("n-butane", 1.0); + testSystem.addComponent("n-hexane", 0.1); + testSystem.addComponent("n-heptane", 0.1); + testSystem.addComponent("n-nonane", 1.0); + testSystem.addComponent("nC10", 1.0); + testSystem.addComponent("nC12", 3.0); + testSystem.addComponent("nC15", 13.0); + testSystem.addComponent("nC20", 13.0); + testSystem.addComponent("water", 11.0); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + + SimpleReservoir reservoirOps = new SimpleReservoir("Well 1 reservoir"); + reservoirOps.setReservoirFluid(testSystem, 5.0 * 1e7, 552.0 * 1e6, 10.0e6); + StreamInterface producedOilStream = reservoirOps.addOilProducer("oilproducer_1"); + producedOilStream.setFlowRate(3500.0 * 24.0 * 600.0, "kg/day"); + + reservoirOps.run(); + + System.out.println("water volume" + + reservoirOps.getReservoirFluid().getPhase("aqueous").getVolume("m3") / 1.0e6); + System.out + .println("oil production total" + reservoirOps.getOilProductionTotal("Sm3") + " Sm3"); + System.out + .println("total produced " + reservoirOps.getProductionTotal("MSm3 oe") + " MSm3 oe"); + + SubseaWell well1 = new SubseaWell(reservoirOps.getOilProducer("oilproducer_1").getStream()); + well1.getPipeline().setDiameter(0.3); + well1.getPipeline().setLength(5500.0); + well1.getPipeline().setInletElevation(-1000.0); + well1.getPipeline().setOutletElevation(-100.0); + ThrottlingValve subseaChoke = new ThrottlingValve("subseaChoke", well1.getOutletStream()); + subseaChoke.setOutletPressure(90.0); + subseaChoke.setAcceptNegativeDP(false); + SimpleFlowLine flowLine = new SimpleFlowLine("flowLine", subseaChoke.getOutletStream()); + flowLine.getPipeline().setDiameter(0.4); + flowLine.getPipeline().setLength(2000.0); + flowLine.getPipeline().setInletElevation(-100.0); + // flowLine.set + ThrottlingValve topsideChoke = new ThrottlingValve("topsideChoke", flowLine.getOutletStream()); + topsideChoke.setOutletPressure(50.0, "bara"); + topsideChoke.setAcceptNegativeDP(false); + + Adjuster adjust = new Adjuster("adjust"); + adjust.setActivateWhenLess(true); + adjust.setTargetVariable(flowLine.getOutletStream(), "pressure", 70.0, "bara"); + adjust.setAdjustedVariable(producedOilStream, "flow rate"); + + ProcessSystem ops = new ProcessSystem(); + ops.add(well1); + ops.add(subseaChoke); + ops.add(flowLine); + ops.add(topsideChoke); + ops.add(adjust); + + ArrayList res = new ArrayList(); + // for(int i=0;i<152;i++) { + // do { + reservoirOps.runTransient(60 * 60 * 24 * 1); + ops.run(); + res.add(new double[] {reservoirOps.getTime(), producedOilStream.getFluid().getFlowRate("kg/hr"), + reservoirOps.getOilProductionTotal("MSm3 oe")}); + System.out.println("subsea choke DP " + subseaChoke.getDeltaPressure("bara")); + System.out.println("topside choke DP " + topsideChoke.getDeltaPressure("bara")); + System.out.println("oil production " + producedOilStream.getFluid().getFlowRate("kg/hr")); + // } + // while(producedOilStream.getFluid().getFlowRate("kg/hr")>1.0e5); + + ProcessSystem GasOilProcess = ProcessSystem.open("c:/temp/offshorePro.neqsim"); + ((StreamInterface) GasOilProcess.getUnit("well stream")) + .setThermoSystem(topsideChoke.getOutletStream().getFluid()); + ((StreamInterface) GasOilProcess.getUnit("well stream")).setPressure(70.0, "bara"); + ((StreamInterface) GasOilProcess.getUnit("well stream")).setTemperature(65.0, "C"); + GasOilProcess.run(); + + System.out.println("power " + GasOilProcess.getPower("MW")); + for (int i = 0; i < res.size(); i++) { + System.out.println("time " + res.get(i)[0] + " oil production " + res.get(i)[1] + + " total production MSm3 oe " + res.get(i)[2]); + } + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/tank/Tank.java b/src/main/java/neqsim/processSimulation/processEquipment/tank/Tank.java index 5cb8be75dd..c4f1f52c91 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/tank/Tank.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/tank/Tank.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.processEquipment.tank; +import java.util.UUID; + import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.mixer.Mixer; import neqsim.processSimulation.processEquipment.stream.Stream; @@ -18,7 +20,11 @@ public class Tank extends ProcessEquipmentBaseClass { private static final long serialVersionUID = 1000; - SystemInterface thermoSystem, gasSystem, waterSystem, liquidSystem, thermoSystemCloned; + SystemInterface thermoSystem; + SystemInterface gasSystem; + SystemInterface waterSystem; + SystemInterface liquidSystem; + SystemInterface thermoSystemCloned; Stream gasOutStream; Stream liquidOutStream; private int numberOfInputStreams = 0; @@ -27,10 +33,17 @@ public class Tank extends ProcessEquipmentBaseClass { private double liquidCarryoverFraction = 0.0; private double gasCarryunderFraction = 0.0; private double volume = 136000.0; - double steelWallTemperature = 298.15, steelWallMass = 1840.0 * 1000.0, steelWallArea = 15613.0, - heatTransferNumber = 5.0, steelCp = 450.0; - double separatorLength = 40.0, separatorDiameter = 60.0; - double liquidVolume = 235.0, gasVolume = 15.0; + double steelWallTemperature = 298.15; + double steelWallMass = 1840.0 * 1000.0; + double steelWallArea = 15613.0; + double heatTransferNumber = 5.0; + double steelCp = 450.0; + + double separatorLength = 40.0; + double separatorDiameter = 60.0; + double liquidVolume = 235.0; + double gasVolume = 15.0; + private double liquidLevel = liquidVolume / (liquidVolume + gasVolume); /** @@ -49,9 +62,8 @@ public Tank() { * Constructor for Tank. *

* - * @param inletStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object */ @Deprecated public Tank(StreamInterface inletStream) { @@ -60,7 +72,7 @@ public Tank(StreamInterface inletStream) { /** * Constructor for Tank. - * + * * @param name name of tank */ public Tank(String name) { @@ -72,14 +84,13 @@ public Tank(String name) { * Constructor for Tank. *

* - * @param name a {@link java.lang.String} object - * @param inletStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @param name a {@link java.lang.String} object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object */ public Tank(String name, StreamInterface inletStream) { super(name); - addStream(inletStream); + setInletStream(inletStream); } /** @@ -87,9 +98,8 @@ public Tank(String name, StreamInterface inletStream) { * setInletStream. *

* - * @param inletStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object */ public void setInletStream(StreamInterface inletStream) { inletStreamMixer.addStream(inletStream); @@ -107,13 +117,12 @@ public void setInletStream(StreamInterface inletStream) { * addStream. *

* - * @param newStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object + * @param newStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object */ public void addStream(StreamInterface newStream) { if (numberOfInputStreams == 0) { - setInletStream((Stream) newStream); + setInletStream(newStream); } else { inletStreamMixer.addStream(newStream); } @@ -125,8 +134,7 @@ public void addStream(StreamInterface newStream) { * Getter for the field liquidOutStream. *

* - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} - * object + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object */ public StreamInterface getLiquidOutStream() { return liquidOutStream; @@ -137,8 +145,7 @@ public StreamInterface getLiquidOutStream() { * Getter for the field gasOutStream. *

* - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} - * object + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object */ public StreamInterface getGasOutStream() { return gasOutStream; @@ -149,8 +156,7 @@ public StreamInterface getGasOutStream() { * getGas. *

* - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} - * object + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object */ public StreamInterface getGas() { return getGasOutStream(); @@ -161,8 +167,7 @@ public StreamInterface getGas() { * getLiquid. *

* - * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} - * object + * @return a {@link neqsim.processSimulation.processEquipment.stream.Stream} object */ public StreamInterface getLiquid() { return getLiquidOutStream(); @@ -170,8 +175,8 @@ public StreamInterface getLiquid() { /** {@inheritDoc} */ @Override - public void run() { - inletStreamMixer.run(); + public void run(UUID id) { + inletStreamMixer.run(id); SystemInterface thermoSystem2 = inletStreamMixer.getOutletStream().getThermoSystem().clone(); ThermodynamicOperations ops = new ThermodynamicOperations(thermoSystem2); ops.VUflash(thermoSystem2.getVolume(), thermoSystem2.getInternalEnergy()); @@ -199,11 +204,8 @@ public void run() { relFact = liquidVolume / (thermoSystem.getPhase(j).getVolume() * 1.0e-5); } for (int i = 0; i < thermoSystem.getPhase(j).getNumberOfComponents(); i++) { - thermoSystem.addComponent( - thermoSystem.getPhase(j).getComponent(i).getComponentName(), - relFact * thermoSystem.getPhase(j).getComponent(i) - .getNumberOfMolesInPhase(), - j); + thermoSystem.addComponent(thermoSystem.getPhase(j).getComponent(i).getComponentName(), + relFact * thermoSystem.getPhase(j).getComponent(i).getNumberOfMolesInPhase(), j); } } if (thermoSystem2.getNumberOfPhases() == 2) { @@ -224,11 +226,13 @@ public void run() { } else { liquidLevel = 1e-10; } - liquidVolume = getLiquidLevel() * 3.14 / 4.0 * separatorDiameter * separatorDiameter - * separatorLength; + liquidVolume = + getLiquidLevel() * 3.14 / 4.0 * separatorDiameter * separatorDiameter * separatorLength; gasVolume = (1.0 - getLiquidLevel()) * 3.14 / 4.0 * separatorDiameter * separatorDiameter * separatorLength; System.out.println("moles out" + liquidOutStream.getThermoSystem().getTotalNumberOfMoles()); + + setCalculationIdentifier(id); } /** {@inheritDoc} */ @@ -239,13 +243,14 @@ public void displayResult() { /** {@inheritDoc} */ @Override - public void runTransient(double dt) { + public void runTransient(double dt, UUID id) { if (getCalculateSteadyState()) { - run(); + run(id); + increaseTime(dt); return; } - inletStreamMixer.run(); + inletStreamMixer.run(id); System.out.println("moles out" + liquidOutStream.getThermoSystem().getTotalNumberOfMoles()); // double inMoles = @@ -280,16 +285,20 @@ public void runTransient(double dt) { dn += inletStreamMixer.getOutletStream().getThermoSystem().getPhase(k).getComponent(i) .getNumberOfMolesInPhase(); } - dn = dn - gasOutStream.getThermoSystem().getPhase(0).getComponent(i) - .getNumberOfMolesInPhase() - - liquidOutStream.getThermoSystem().getPhase(0).getComponent(i) - .getNumberOfMolesInPhase(); + dn = dn - gasOutStream.getThermoSystem().getPhase(0).getComponent(i).getNumberOfMolesInPhase() + - liquidOutStream.getThermoSystem().getPhase(0).getComponent(i).getNumberOfMolesInPhase(); System.out.println("dn " + dn); thermoSystem.addComponent(inletStreamMixer.getOutletStream().getThermoSystem().getPhase(0) .getComponent(i).getComponentName(), dn * dt); } + System.out.println("liquid level " + liquidLevel); + liquidVolume = + getLiquidLevel() * 3.14 / 4.0 * separatorDiameter * separatorDiameter * separatorLength; + gasVolume = (1.0 - getLiquidLevel()) * 3.14 / 4.0 * separatorDiameter * separatorDiameter + * separatorLength; System.out.println("total moles " + thermoSystem.getTotalNumberOfMoles()); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); thermoOps.VUflash(volume1, newEnergy); @@ -302,10 +311,11 @@ public void runTransient(double dt) { liquidLevel = 1e-10; } System.out.println("liquid level " + liquidLevel); - liquidVolume = getLiquidLevel() * 3.14 / 4.0 * separatorDiameter * separatorDiameter - * separatorLength; + liquidVolume = + getLiquidLevel() * 3.14 / 4.0 * separatorDiameter * separatorDiameter * separatorLength; gasVolume = (1.0 - getLiquidLevel()) * 3.14 / 4.0 * separatorDiameter * separatorDiameter * separatorLength; + setCalculationIdentifier(id); } /** @@ -318,14 +328,12 @@ public void runTransient(double dt) { public void setOutComposition(SystemInterface thermoSystem) { for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { if (thermoSystem.hasPhaseType("gas")) { - getGasOutStream().getThermoSystem().getPhase(0).getComponent(i) - .setx(thermoSystem.getPhase(thermoSystem.getPhaseNumberOfPhase("gas")) - .getComponent(i).getx()); + getGasOutStream().getThermoSystem().getPhase(0).getComponent(i).setx(thermoSystem + .getPhase(thermoSystem.getPhaseNumberOfPhase("gas")).getComponent(i).getx()); } if (thermoSystem.hasPhaseType("oil")) { - getLiquidOutStream().getThermoSystem().getPhase(0).getComponent(i) - .setx(thermoSystem.getPhase(thermoSystem.getPhaseNumberOfPhase("oil")) - .getComponent(i).getx()); + getLiquidOutStream().getThermoSystem().getPhase(0).getComponent(i).setx(thermoSystem + .getPhase(thermoSystem.getPhaseNumberOfPhase("oil")).getComponent(i).getx()); } } } @@ -346,9 +354,10 @@ public void setTempPres(double temp, double pres) { gasOutStream.getThermoSystem().setPressure(pres); liquidOutStream.getThermoSystem().setPressure(pres); - inletStreamMixer.run(); - gasOutStream.run(); - liquidOutStream.run(); + UUID id = UUID.randomUUID(); + inletStreamMixer.run(id); + gasOutStream.run(id); + liquidOutStream.run(id); } /** diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/Adjuster.java b/src/main/java/neqsim/processSimulation/processEquipment/util/Adjuster.java index 1569f95a26..6b1caaddc3 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/Adjuster.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/Adjuster.java @@ -1,8 +1,8 @@ package neqsim.processSimulation.processEquipment.util; +import java.util.UUID; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.stream.Stream; @@ -16,283 +16,382 @@ * @version $Id: $Id */ public class Adjuster extends ProcessEquipmentBaseClass { - private static final long serialVersionUID = 1000; - - ProcessEquipmentInterface adjustedEquipment = null, targetEquipment = null; - String adjustedVarialble = "", targetVariable = "", targetPhase = "", targetComponent = ""; - double targetValue = 0.0; - String targetUnit = ""; - private double tolerance = 1e-6; - double inputValue = 0.0, oldInputValue = 0.0; - private double error = 1e6, oldError = 1.0e6; - int iterations = 0; - private boolean activateWhenLess = false; - - static Logger logger = LogManager.getLogger(Adjuster.class); - - /** - *

- * Constructor for Adjuster. - *

- */ - @Deprecated - public Adjuster() { - this("Adjuster"); - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Adjuster.class); - /** - *

- * Constructor for Adjuster. - *

- * - * @param name a {@link java.lang.String} object - */ - public Adjuster(String name) { - super(name); - } + ProcessEquipmentInterface adjustedEquipment = null; + ProcessEquipmentInterface targetEquipment = null; - /** - *

- * setAdjustedVariable. - *

- * - * @param adjustedEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - * @param adjstedVariable a {@link java.lang.String} object - */ - public void setAdjustedVariable(ProcessEquipmentInterface adjustedEquipment, - String adjstedVariable) { - this.adjustedEquipment = adjustedEquipment; - this.adjustedVarialble = adjstedVariable; - } + String adjustedVariable = ""; + String adjustedVariableUnit = ""; + double maxAdjustedValue = 1e10; + double minAdjustedValue = -1e10; + String targetVariable = ""; + String targetPhase = ""; + String targetComponent = ""; - /** - *

- * Setter for the field targetVariable. - *

- * - * @param targetEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - * @param targetVariable a {@link java.lang.String} object - * @param targetValue a double - * @param targetUnit a {@link java.lang.String} object - */ - public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, - double targetValue, String targetUnit) { - this.targetEquipment = targetEquipment; - this.targetVariable = targetVariable; - this.targetValue = targetValue; - this.targetUnit = targetUnit; - } + double targetValue = 0.0; + String targetUnit = ""; + private double tolerance = 1e-6; + double inputValue = 0.0; + double oldInputValue = 0.0; + private double error = 1e6; + private double oldError = 1.0e6; - /** - *

- * Setter for the field targetVariable. - *

- * - * @param targetEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - * @param targetVariable a {@link java.lang.String} object - * @param targetValue a double - * @param targetUnit a {@link java.lang.String} object - * @param targetPhase a {@link java.lang.String} object - */ - public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, - double targetValue, String targetUnit, String targetPhase) { - this.targetEquipment = targetEquipment; - this.targetVariable = targetVariable; - this.targetValue = targetValue; - this.targetUnit = targetUnit; - this.targetPhase = targetPhase; - } + int iterations = 0; + private boolean activateWhenLess = false; - /** - *

- * Setter for the field targetVariable. - *

- * - * @param targetEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - * @param targetVariable a {@link java.lang.String} object - * @param targetValue a double - * @param targetUnit a {@link java.lang.String} object - * @param targetPhase a {@link java.lang.String} object - * @param targetComponent a {@link java.lang.String} object - */ - public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, - double targetValue, String targetUnit, String targetPhase, String targetComponent) { - this.targetEquipment = targetEquipment; - this.targetVariable = targetVariable; - this.targetValue = targetValue; - this.targetUnit = targetUnit; - this.targetPhase = targetPhase; - this.targetComponent = targetComponent; - } + /** + *

+ * Constructor for Adjuster. + *

+ */ + @Deprecated + public Adjuster() { + this("Adjuster"); + } - /** {@inheritDoc} */ - @Override - public void run() { - oldError = error; - - if (adjustedVarialble.equals("mass flow")) { - inputValue = ((Stream) adjustedEquipment).getThermoSystem().getFlowRate("kg/hr"); - } else { - inputValue = ((Stream) adjustedEquipment).getThermoSystem().getNumberOfMoles(); - } - - double targetValueCurrent = 0.0; - if (targetVariable.equals("mass fraction") && !targetPhase.equals("") - && !targetComponent.equals("")) { - targetValueCurrent = ((Stream) targetEquipment).getThermoSystem().getPhase(targetPhase) - .getWtFrac(targetComponent); - } else if (targetVariable.equals("gasVolumeFlow")) { - targetValueCurrent = - ((Stream) targetEquipment).getThermoSystem().getFlowRate(targetUnit); - } else if (targetVariable.equals("pressure")) { - targetValueCurrent = - ((Stream) targetEquipment).getThermoSystem().getPressure(targetUnit); - } else { - targetValueCurrent = ((Stream) targetEquipment).getThermoSystem().getVolume(targetUnit); - } - - if (activateWhenLess && targetValueCurrent > targetValue) { - error = 0.0; - activateWhenLess = true; - return; - } - - iterations++; - double deviation = targetValue - targetValueCurrent; - - error = deviation; - logger.info("adjuster deviation " + deviation + " inputValue " + inputValue); - if (iterations < 2) { - if (adjustedVarialble.equals("mass flow")) { - ((Stream) adjustedEquipment).getThermoSystem() - .setTotalFlowRate(inputValue + deviation, "kg/hr"); - } else { - ((Stream) adjustedEquipment).getThermoSystem() - .setTotalFlowRate(inputValue + deviation, "mol/sec"); - } - } else { - double derivate = (error - oldError) / (inputValue - oldInputValue); - double newVal = error / derivate; - if (adjustedVarialble.equals("mass flow")) { - ((Stream) adjustedEquipment).getThermoSystem().setTotalFlowRate(inputValue - newVal, - "kg/hr"); - } else { - ((Stream) adjustedEquipment).getThermoSystem().setTotalFlowRate(inputValue - newVal, - "mol/sec"); - } - } - - oldInputValue = inputValue; - } + /** + *

+ * Constructor for Adjuster. + *

+ * + * @param name a {@link java.lang.String} object + */ + public Adjuster(String name) { + super(name); + } - /** {@inheritDoc} */ - @Override - public boolean solved() { - if (Math.abs(error) < tolerance) - return true; - else - return false; - } + /** + *

+ * setAdjustedVariable. + *

+ * + * @param adjustedEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param adjstedVariable a {@link java.lang.String} object + * @param unit a string + */ + public void setAdjustedVariable(ProcessEquipmentInterface adjustedEquipment, + String adjstedVariable, String unit) { + this.adjustedEquipment = adjustedEquipment; + this.adjustedVariable = adjstedVariable; + this.adjustedVariableUnit = unit; + } + + /** + *

+ * setAdjustedVariable. + *

+ * + * @param adjustedEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param adjstedVariable a {@link java.lang.String} object + */ + public void setAdjustedVariable(ProcessEquipmentInterface adjustedEquipment, + String adjstedVariable) { + this.adjustedEquipment = adjustedEquipment; + this.adjustedVariable = adjstedVariable; + } + + /** + *

+ * Setter for the field targetVariable. + *

+ * + * @param targetEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param targetVariable a {@link java.lang.String} object + * @param targetValue a double + * @param targetUnit a {@link java.lang.String} object + */ + public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, + double targetValue, String targetUnit) { + this.targetEquipment = targetEquipment; + this.targetVariable = targetVariable; + this.targetValue = targetValue; + this.targetUnit = targetUnit; + } + + /** + *

+ * Setter for the field targetVariable. + *

+ * + * @param targetEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param targetVariable a {@link java.lang.String} object + * @param targetValue a double + * @param targetUnit a {@link java.lang.String} object + * @param targetPhase a {@link java.lang.String} object + */ + public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, + double targetValue, String targetUnit, String targetPhase) { + this.targetEquipment = targetEquipment; + this.targetVariable = targetVariable; + this.targetValue = targetValue; + this.targetUnit = targetUnit; + this.targetPhase = targetPhase; + } - /** {@inheritDoc} */ - @Override - public void displayResult() {} - - /** - *

- * Getter for the field tolerance. - *

- * - * @return a double - */ - public double getTolerance() { - return tolerance; + /** + *

+ * Setter for the field targetVariable. + *

+ * + * @param targetEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param targetVariable a {@link java.lang.String} object + * @param targetValue a double + * @param targetUnit a {@link java.lang.String} object + * @param targetPhase a {@link java.lang.String} object + * @param targetComponent a {@link java.lang.String} object + */ + public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, + double targetValue, String targetUnit, String targetPhase, String targetComponent) { + this.targetEquipment = targetEquipment; + this.targetVariable = targetVariable; + this.targetValue = targetValue; + this.targetUnit = targetUnit; + this.targetPhase = targetPhase; + this.targetComponent = targetComponent; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + oldError = error; + + if (adjustedVariable.equals("mass flow")) { + inputValue = ((Stream) adjustedEquipment).getThermoSystem().getFlowRate("kg/hr"); + } else if (adjustedVariable.equals("flow") && adjustedVariableUnit != null) { + inputValue = ((Stream) adjustedEquipment).getThermoSystem().getFlowRate(adjustedVariableUnit); + } else if (adjustedVariable.equals("pressure") && adjustedVariableUnit != null) { + inputValue = ((Stream) adjustedEquipment).getPressure(adjustedVariableUnit); + } else if (adjustedVariable.equals("temperature") && adjustedVariableUnit != null) { + inputValue = ((Stream) adjustedEquipment).getTemperature(adjustedVariableUnit); + } else { + inputValue = ((Stream) adjustedEquipment).getThermoSystem().getNumberOfMoles(); } - /** - *

- * Setter for the field tolerance. - *

- * - * @param tolerance the tolerance to set - */ - public void setTolerance(double tolerance) { - this.tolerance = tolerance; + double targetValueCurrent = 0.0; + if (targetVariable.equals("mass fraction") && !targetPhase.equals("") + && !targetComponent.equals("")) { + targetValueCurrent = ((Stream) targetEquipment).getThermoSystem().getPhase(targetPhase) + .getWtFrac(targetComponent); + } else if (targetVariable.equals("gasVolumeFlow")) { + targetValueCurrent = ((Stream) targetEquipment).getThermoSystem().getFlowRate(targetUnit); + } else if (targetVariable.equals("pressure")) { + targetValueCurrent = ((Stream) targetEquipment).getThermoSystem().getPressure(targetUnit); + } else { + targetValueCurrent = ((Stream) targetEquipment).getThermoSystem().getVolume(targetUnit); } - /** - *

- * Getter for the field error. - *

- * - * @return the error - */ - public double getError() { - return error; + if (activateWhenLess && targetValueCurrent > targetValue) { + error = 0.0; + activateWhenLess = true; + setCalculationIdentifier(id); + return; } - /** - *

- * Setter for the field error. - *

- * - * @param error the error to set - */ - public void setError(double error) { - this.error = error; + iterations++; + double deviation = targetValue - targetValueCurrent; + + error = deviation; + if (iterations < 2) { + if (adjustedVariable.equals("mass flow")) { + ((Stream) adjustedEquipment).getThermoSystem().setTotalFlowRate(inputValue + deviation, + "kg/hr"); + } else if (adjustedVariable.equals("flow") && adjustedVariableUnit != null) { + ((Stream) adjustedEquipment).getThermoSystem().setTotalFlowRate( + inputValue + Math.signum(deviation) * inputValue / 100.0, adjustedVariableUnit); + } else if (adjustedVariable.equals("pressure") && adjustedVariableUnit != null) { + ((Stream) adjustedEquipment).setPressure(inputValue + deviation / 10.0, + adjustedVariableUnit); + } else if (adjustedVariable.equals("temperature") && adjustedVariableUnit != null) { + ((Stream) adjustedEquipment).setTemperature(inputValue + deviation / 10.0, + adjustedVariableUnit); + } else { + ((Stream) adjustedEquipment).getThermoSystem().setTotalFlowRate(inputValue + deviation, + "mol/sec"); + } + } else { + double derivate = (error - oldError) / (inputValue - oldInputValue); + double newVal = error / derivate; + if (inputValue - newVal > maxAdjustedValue) { + newVal = inputValue - maxAdjustedValue; + } + if (inputValue - newVal < minAdjustedValue) { + newVal = inputValue - minAdjustedValue; + } + if (adjustedVariable.equals("mass flow")) { + ((Stream) adjustedEquipment).getThermoSystem().setTotalFlowRate(inputValue - newVal, + "kg/hr"); + } else if (adjustedVariable.equals("flow") && adjustedVariableUnit != null) { + ((Stream) adjustedEquipment).getThermoSystem().setTotalFlowRate(inputValue - newVal, + adjustedVariableUnit); + } else if (adjustedVariable.equals("pressure") && adjustedVariableUnit != null) { + ((Stream) adjustedEquipment).setPressure(inputValue - newVal, adjustedVariableUnit); + } else if (adjustedVariable.equals("temperature") && adjustedVariableUnit != null) { + ((Stream) adjustedEquipment).setTemperature(inputValue - newVal, adjustedVariableUnit); + } else { + ((Stream) adjustedEquipment).getThermoSystem().setTotalFlowRate(inputValue - newVal, + "mol/sec"); + } } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // test code for adjuster... - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 20.00); - testSystem.addComponent("methane", 1000.00); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - - Stream stream_1 = new Stream("Stream1", testSystem); - Adjuster adjuster1 = new Adjuster(); - adjuster1.setAdjustedVariable(stream_1, "molarFlow"); - adjuster1.setTargetVariable(stream_1, "gasVolumeFlow", 10.0, "MSm3/day", ""); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(adjuster1); - - operations.run(); + oldInputValue = inputValue; + + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public boolean solved() { + if (Math.abs(error) < tolerance) { + return true; + } else { + return false; } + } + + /** {@inheritDoc} */ + @Override + public void displayResult() {} + + /** + *

+ * Getter for the field tolerance. + *

+ * + * @return a double + */ + public double getTolerance() { + return tolerance; + } + + /** + *

+ * Setter for the field tolerance. + *

+ * + * @param tolerance the tolerance to set + */ + public void setTolerance(double tolerance) { + this.tolerance = tolerance; + } + + /** + *

+ * Getter for the field error. + *

+ * + * @return the error + */ + public double getError() { + return error; + } + + /** + *

+ * Setter for the field error. + *

+ * + * @param error the error to set + */ + public void setError(double error) { + this.error = error; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // test code for adjuster... + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 20.00); + testSystem.addComponent("methane", 1000.00); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - /** - *

- * isActivateWhenLess. - *

- * - * @return a boolean - */ - public boolean isActivateWhenLess() { - return activateWhenLess; + Stream stream_1 = new Stream("Stream1", testSystem); + Adjuster adjuster1 = new Adjuster(); + adjuster1.setAdjustedVariable(stream_1, "molarFlow"); + adjuster1.setTargetVariable(stream_1, "gasVolumeFlow", 10.0, "MSm3/day", ""); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(adjuster1); + + operations.run(); + } + + /** + *

+ * isActivateWhenLess. + *

+ * + * @return a boolean + */ + public boolean isActivateWhenLess() { + return activateWhenLess; + } + + /** + *

+ * Setter for the field activateWhenLess. + *

+ * + * @param activateWhenLess a boolean + */ + public void setActivateWhenLess(boolean activateWhenLess) { + this.activateWhenLess = activateWhenLess; + } + + /** + *

Setter for the field maxAdjustedValue.

+ * + * @param maxVal a double + */ + public void setMaxAdjustedValue(double maxVal) { + maxAdjustedValue = maxVal; + if (maxAdjustedValue < minAdjustedValue) { + minAdjustedValue = maxAdjustedValue; } + } - /** - *

- * Setter for the field activateWhenLess. - *

- * - * @param activateWhenLess a boolean - */ - public void setActivateWhenLess(boolean activateWhenLess) { - this.activateWhenLess = activateWhenLess; + /** + *

Setter for the field minAdjustedValue.

+ * + * @param minVal a double + */ + public void setMinAdjustedValue(double minVal) { + minAdjustedValue = minVal; + if (minAdjustedValue > maxAdjustedValue) { + maxAdjustedValue = minAdjustedValue; } + } + + /** + *

Getter for the field maxAdjustedValue.

+ * + * @return a double + */ + public double getMaxAdjustedValue() { + return maxAdjustedValue; + } + + /** + *

Getter for the field minAdjustedValue.

+ * + * @return a double + */ + public double getMinAdjustedValue() { + return minAdjustedValue; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/Calculator.java b/src/main/java/neqsim/processSimulation/processEquipment/util/Calculator.java index cc8c5f6dce..65049fde21 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/Calculator.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/Calculator.java @@ -1,11 +1,12 @@ package neqsim.processSimulation.processEquipment.util; import java.util.ArrayList; +import java.util.Iterator; +import java.util.UUID; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; -import neqsim.processSimulation.processEquipment.stream.Stream; /** *

@@ -16,81 +17,101 @@ * @version $Id: $Id */ public class Calculator extends ProcessEquipmentBaseClass { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Calculator.class); - ArrayList inputVariable = new ArrayList(); - private ProcessEquipmentInterface outputVariable; - String type = "sumTEG"; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Calculator.class); - /** - *

- * Constructor for Calculator. - *

- * - * @param name a {@link java.lang.String} object - */ - public Calculator(String name) { - super(name); - } + ArrayList inputVariable = new ArrayList(); + private ProcessEquipmentInterface outputVariable; + String type = "sumTEG"; - /** - *

- * addInputVariable. - *

- * - * @param unit a {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} - * object - */ - public void addInputVariable(ProcessEquipmentInterface unit) { - inputVariable.add(unit); - } + /** + *

+ * Constructor for Calculator. + *

+ * + * @param name a {@link java.lang.String} object + */ + public Calculator(String name) { + super(name); + } - /** - *

- * Getter for the field outputVariable. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - */ - public ProcessEquipmentInterface getOutputVariable() { - return outputVariable; - } + /** + *

+ * addInputVariable. + *

+ * + * @param unit a {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} + * object + */ + public void addInputVariable(ProcessEquipmentInterface unit) { + inputVariable.add(unit); + } - /** {@inheritDoc} */ - @Override - public void run() { - double sum = 0.0; + /** + *

+ * Getter for the field outputVariable. + *

+ * + * @return a {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + */ + public ProcessEquipmentInterface getOutputVariable() { + return outputVariable; + } - if (name.equals("MEG makeup calculator")) { - for (int i = 0; i < inputVariable.size(); i++) { - sum += inputVariable.get(i).getFluid().getPhase(0).getComponent("MEG") - .getFlowRate("kg/hr"); - } - } else { - for (int i = 0; i < inputVariable.size(); i++) { - sum += inputVariable.get(i).getFluid().getPhase(0).getComponent("TEG") - .getFlowRate("kg/hr"); - } - } + /** {@inheritDoc} */ + @Override + public boolean needRecalculation() { + Iterator iter = inputVariable.iterator(); + while (iter.hasNext()) { + ProcessEquipmentInterface str = iter.next(); + if (!str.solved()) { + return true; + } + } + return false; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + double sum = 0.0; - // System.out.println("make up MEG " + sum); - outputVariable.getFluid().setTotalFlowRate(sum, "kg/hr"); - try { - ((Stream) outputVariable).setFlowRate(sum, "kg/hr"); - } catch (Exception e) { - logger.error("error", e.getMessage()); - } + if (name.equals("MEG makeup calculator")) { + for (int i = 0; i < inputVariable.size(); i++) { + sum += inputVariable.get(i).getFluid().getPhase(0).getComponent("MEG").getFlowRate("kg/hr"); + } + } else { + for (int i = 0; i < inputVariable.size(); i++) { + sum += inputVariable.get(i).getFluid().getComponent("TEG").getFlowRate("kg/hr"); + } } - /** - *

- * Setter for the field outputVariable. - *

- * - * @param outputVariable a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - */ - public void setOutputVariable(ProcessEquipmentInterface outputVariable) { - this.outputVariable = outputVariable; + // System.out.println("make up TEG " + sum); + // ((Stream) outputVariable).setFlowRate(sum, "kg/hr"); + try { + if (sum < 0.0) { + sum = 0.0; + } + ((neqsim.processSimulation.processEquipment.stream.Stream) outputVariable).setFlowRate(sum, + "kg/hr"); + outputVariable.run(); + outputVariable.setCalculationIdentifier(id); + } catch (Exception ex) { + logger.info("flow rate error " + sum); + logger.error("error in calculator", ex); } + setCalculationIdentifier(id); + } + + /** + *

+ * Setter for the field outputVariable. + *

+ * + * @param outputVariable a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + */ + public void setOutputVariable(ProcessEquipmentInterface outputVariable) { + this.outputVariable = outputVariable; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/FlowRateAdjuster.java b/src/main/java/neqsim/processSimulation/processEquipment/util/FlowRateAdjuster.java new file mode 100644 index 0000000000..5715e75c34 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/FlowRateAdjuster.java @@ -0,0 +1,194 @@ +package neqsim.processSimulation.processEquipment.util; + +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; +import neqsim.processSimulation.processEquipment.TwoPortEquipment; +import neqsim.processSimulation.processEquipment.mixer.Mixer; +import neqsim.processSimulation.processEquipment.mixer.StaticMixer; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + *

+ * Adjuster class. + *

+ * + * @author Even Solbraa + * @version $Id: $Id + */ +public class FlowRateAdjuster extends TwoPortEquipment { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(FlowRateAdjuster.class); + + String name = "Flow Rate Adjuster"; + + public double desiredGasFlow; + public double desiredOilFlow; + public double desiredWaterFlow; + private String unit; + + ProcessEquipmentInterface adjustedEquipment = null; + ProcessEquipmentInterface targetEquipment = null; + + String adjustedVariable = ""; + String adjustedVariableUnit = ""; + double maxAdjustedValue = 1e10; + double minAdjustedValue = -1e10; + String targetVariable = ""; + String targetPhase = ""; + String targetComponent = ""; + + double targetValue = 0.0; + String targetUnit = ""; + private double tolerance = 1e-6; + double inputValue = 0.0; + double oldInputValue = 0.0; + private double error = 1e6; + private double oldError = 1.0e6; + + int iterations = 0; + private boolean activateWhenLess = false; + Stream waterStream; + double waterDensity; + + /** + *

+ * Constructor for FlowRateAdjuster. + *

+ */ + @Deprecated + public FlowRateAdjuster() { + this("Flow Rate Adjuster"); + } + + /** + *

+ * Constructor for FlowRateAdjuster. + *

+ * + * @param name a {@link java.lang.String} object + */ + public FlowRateAdjuster(String name) { + super(name); + } + + /** + *

+ * Constructor for FlowRateAdjuster. + *

+ * + * @param name a {@link java.lang.String} object + * @param inStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public FlowRateAdjuster(String name, StreamInterface inStream) { + super(name, inStream); + } + + /** + *

+ * setAdjustedVariable. + *

+ * + * @param desiredGasFlow a {@link java.lang.Double} object + * @param desiredOilFlow a {@link java.lang.Double} object + * @param desiredWaterFlow a {@link java.lang.Double} object + * @param unit a {@link java.lang.String} object + */ + public void setAdjustedFlowRates(Double desiredGasFlow, Double desiredOilFlow, + Double desiredWaterFlow, String unit) { + this.desiredGasFlow = desiredGasFlow; + this.desiredOilFlow = desiredOilFlow; + this.desiredWaterFlow = desiredWaterFlow; + this.unit = unit; + } + + /** + *

+ * setAdjustedVariable. + *

+ * + * @param desiredGasFlow a {@link java.lang.Double} object + * @param desiredOilFlow a {@link java.lang.Double} object + * @param unit a {@link java.lang.String} object + */ + public void setAdjustedFlowRates(Double desiredGasFlow, Double desiredOilFlow, String unit) { + this.setAdjustedFlowRates(desiredGasFlow, desiredOilFlow, 0.0, unit); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + SystemInterface adjustedFluid = inStream.getFluid(); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(adjustedFluid); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + + SystemInterface gasFluid = adjustedFluid.phaseToSystem(0).clone(); + SystemInterface oilFluid = adjustedFluid.phaseToSystem(1).clone(); + + double temperature = inStream.getTemperature("C"); + double pressure = inStream.getPressure("bara"); + + if (desiredWaterFlow > 0.0) { + SystemInterface waterFluid = adjustedFluid.phaseToSystem(2).clone(); + waterFluid.initPhysicalProperties(); + waterDensity = waterFluid.getDensity("kg/m3"); + + waterStream = new Stream("Water Stream", waterFluid); + waterStream.setTemperature(temperature, "C"); + waterStream.setPressure(pressure, "bara"); + + } + gasFluid.initPhysicalProperties(); + oilFluid.initPhysicalProperties(); + + double oilDensity = oilFluid.getDensity("kg/m3"); + + Stream gasStream = new Stream("Gas Stream", gasFluid); + gasStream.setTemperature(temperature, "C"); + gasStream.setPressure(pressure, "bara"); + + Stream oilStream = new Stream("Oil Stream", oilFluid); + oilStream.setTemperature(temperature, "C"); + oilStream.setPressure(pressure, "bara"); + + if (unit.equals("Sm3/hr")) { + gasStream.setFlowRate(desiredGasFlow, unit); + oilStream.setFlowRate(desiredOilFlow * oilDensity, "kg/hr"); + if (desiredWaterFlow > 0.0) { + waterStream.setFlowRate(desiredWaterFlow * waterDensity, "kg/hr"); + } + } else { + gasStream.setFlowRate(desiredGasFlow, unit); + oilStream.setFlowRate(desiredOilFlow, unit); + if (desiredWaterFlow > 0.0) { + waterStream.setFlowRate(desiredWaterFlow, unit); + } + } + gasStream.run(); + oilStream.run(); + if (desiredWaterFlow > 0.0) { + waterStream.run(); + } + + Mixer wellStramMixer = new StaticMixer("Stream mixer"); + wellStramMixer.addStream(gasStream); + wellStramMixer.addStream(oilStream); + if (desiredWaterFlow > 0.0) { + wellStramMixer.addStream(waterStream); + } + wellStramMixer.run(); + + outStream.setThermoSystem(wellStramMixer.getOutletStream().getFluid()); + outStream.run(); + outStream.setCalculationIdentifier(id); + } +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/FlowSetter.java b/src/main/java/neqsim/processSimulation/processEquipment/util/FlowSetter.java new file mode 100644 index 0000000000..3b16de09c3 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/FlowSetter.java @@ -0,0 +1,424 @@ +package neqsim.processSimulation.processEquipment.util; + +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.processSimulation.processEquipment.TwoPortEquipment; +import neqsim.processSimulation.processEquipment.heatExchanger.Heater; +import neqsim.processSimulation.processEquipment.mixer.Mixer; +import neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.processSystem.ProcessSystem; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; +import neqsim.util.exception.InvalidInputException; + +/** + *

+ * FlowSetter class. + *

+ * + * @author esol + * @version $Id: $Id + */ +public class FlowSetter extends TwoPortEquipment { + private static final long serialVersionUID = 1000; + private static final Logger logger = LogManager.getLogger(FlowSetter.class); + double[] pressure = new double[] {1.01325}; + double[] temperature = new double[] {15.0}; + String unitT = "C"; + String unitP = "bara"; + + private double gasFlowRate; + private double oilFlowRate; + private double waterFlowRate; + String unitGasFlowRate = "Sm3/day"; + String unitOilFlowRate = "m3/hr"; + String unitWaterFlowRate = "m3/hr"; + + ProcessSystem referenceProcess = null; + + @Deprecated + /** + *

+ * Constructor for FlowSetter. + *

+ */ + public FlowSetter() { + super("Flow Setter"); + } + + /** + *

+ * Constructor for FlowSetter. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + @Deprecated + public FlowSetter(StreamInterface stream) { + this("Flow Setter", stream); + } + + /** + *

+ * Constructor for FlowSetter. + *

+ * + * @param name a {@link java.lang.String} object + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public FlowSetter(String name, StreamInterface stream) { + super(name, stream); + } + + /** + * {@inheritDoc} + * + *

+ * Setter for the field inletStream. + *

+ */ + @Override + public void setInletStream(StreamInterface inletStream) { + this.inStream = inletStream; + try { + this.outStream = inletStream.clone(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + /** + *

+ * Get setGasFlowRate + *

+ * + * @param flowRate flow rate + * @param flowUnit Supported units are Sm3/sec, Sm3/hr, Sm3/day, MSm3/day + */ + public void setGasFlowRate(double flowRate, String flowUnit) { + double conversionFactor = 1.0; + switch (flowUnit) { + case "Sm3/sec": + conversionFactor = 1.0; + break; + case "Sm3/hr": + conversionFactor = 1.0 / 3600.0; + break; + case "Sm3/day": + conversionFactor = 1.0 / 3600.0 / 24.0; + break; + case "MSm3/day": + conversionFactor = 1.0 / 3600.0 / 24.0 * 1e6; + break; + default: + throw new RuntimeException("unit not supported " + flowUnit); + } + gasFlowRate = flowRate * conversionFactor; + } + + /** + *

+ * Get getGasFlowRate + *

+ * + * @param flowUnit Supported units are Sm3/sec, Sm3/hr, Sm3/day, MSm3/day + * @return gas flow rate in unit sm3/sec + */ + public double getGasFlowRate(String flowUnit) { + double conversionFactor = 1.0; + switch (flowUnit) { + case "Sm3/sec": + conversionFactor = 1.0; + break; + case "Sm3/hr": + conversionFactor = 1.0 * 3600.0; + break; + case "Sm3/day": + conversionFactor = 1.0 * 3600.0 * 24.0; + break; + case "MSm3/day": + conversionFactor = 1.0 * 3600.0 * 24.0 / 1e6; + break; + default: + throw new RuntimeException("unit not supported " + flowUnit); + } + return gasFlowRate * conversionFactor; + } + + /** + *

+ * Get setOilFlowRate + *

+ * + * @param flowRate flow rate + * @param flowUnit Supported units are m3/sec, m3/hr, m3/day + */ + public void setOilFlowRate(double flowRate, String flowUnit) { + double conversionFactor = 1.0; + switch (flowUnit) { + case "m3/sec": + conversionFactor = 1.0; + break; + case "m3/hr": + conversionFactor = 1.0 / 3600.0; + break; + case "m3/day": + conversionFactor = 1.0 / 3600.0 / 24.0; + break; + default: + throw new RuntimeException("unit not supported " + flowUnit); + } + oilFlowRate = flowRate * conversionFactor; + } + + /** + *

+ * Get getOilFlowRate + *

+ * + * @param flowUnit Supported units are m3/sec, m3/hr, m3/day + * @return oil flow rate in unit m3/sec + */ + public double getOilFlowRate(String flowUnit) { + double conversionFactor = 1.0; + switch (flowUnit) { + case "m3/sec": + conversionFactor = 1.0; + break; + case "m3/hr": + conversionFactor = 1.0 * 3600.0; + break; + case "m3/day": + conversionFactor = 1.0 * 3600.0 * 24.0; + break; + default: + throw new RuntimeException("unit not supported " + flowUnit); + } + return oilFlowRate * conversionFactor; + } + + /** + *

+ * Get setWaterFlowRate + *

+ * + * @param flowRate flow rate + * @param flowUnit Supported units are m3/sec, m3/hr, m3/day + */ + public void setWaterFlowRate(double flowRate, String flowUnit) { + double conversionFactor = 1.0; + switch (flowUnit) { + case "m3/sec": + conversionFactor = 1.0; + break; + case "m3/hr": + conversionFactor = 1.0 / 3600.0; + break; + case "m3/day": + conversionFactor = 1.0 / 3600.0 / 24.0; + break; + default: + throw new RuntimeException("unit not supported " + flowUnit); + } + waterFlowRate = flowRate * conversionFactor; + } + + /** + *

+ * Get getWaterFlowRate + *

+ * + * @param flowUnit Supported units are m3/sec, m3/hr, m3/day + * @return water flow rate in unit m3/sec + */ + public double getWaterFlowRate(String flowUnit) { + double conversionFactor = 1.0; + switch (flowUnit) { + case "m3/sec": + conversionFactor = 1.0; + break; + case "m3/hr": + conversionFactor = 1.0 * 3600.0; + break; + case "m3/day": + conversionFactor = 1.0 * 3600.0 * 24.0; + break; + default: + throw new RuntimeException("unit not supported " + flowUnit); + } + return waterFlowRate * conversionFactor; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + SystemInterface tempFluid = inStream.getThermoSystem().clone(); + + if (referenceProcess == null) { + referenceProcess = createReferenceProcess(inStream); + } + + if (tempFluid.getFlowRate("kg/sec") < 1e-6) { + outStream.setThermoSystem(tempFluid); + return; + } + + double error = 0.0; + do { + error = 0.0; + ((StreamInterface) referenceProcess.getUnit("feed stream")).setFluid(tempFluid); + referenceProcess.run(); + ((StreamInterface) referenceProcess.getUnit("gas")).getFluid() + .initPhysicalProperties("density"); + ((StreamInterface) referenceProcess.getUnit("oil")).getFluid() + .initPhysicalProperties("density"); + + double[] moleChange = new double[tempFluid.getNumberOfComponents()]; + for (int i = 0; i < tempFluid.getNumberOfComponents(); i++) { + moleChange[i] = ((StreamInterface) referenceProcess.getUnit("gas")).getFluid() + .getComponent(i).getNumberOfMolesInPhase() + * (getGasFlowRate("Sm3/hr") + / ((StreamInterface) referenceProcess.getUnit("gas")).getFlowRate("Sm3/hr")) + - ((StreamInterface) referenceProcess.getUnit("gas")).getFluid().getComponent(i) + .getNumberOfMolesInPhase() + + + ((StreamInterface) referenceProcess.getUnit("oil")).getFluid().getComponent(i) + .getNumberOfMolesInPhase() + * (getOilFlowRate("m3/hr") + / ((StreamInterface) referenceProcess.getUnit("oil")).getFlowRate("m3/hr")) + - ((StreamInterface) referenceProcess.getUnit("oil")).getFluid().getComponent(i) + .getNumberOfMolesInPhase(); + error += Math.abs(moleChange[i]); + } + tempFluid.init(0); + for (int i = 0; i < tempFluid.getNumberOfComponents(); i++) { + tempFluid.addComponent(i, moleChange[i]); + } + } while (error > ((StreamInterface) referenceProcess.getUnit("feed stream")).getFluid() + .getTotalNumberOfMoles() / 1e6); + + if (waterFlowRate > 0) { + tempFluid.addComponent("water", getWaterFlowRate("m3/hr") * 1000.0, "kg/hr"); + } + + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + + outStream.setThermoSystem(tempFluid); + outStream.run(); + outStream.getFluid().initPhysicalProperties(); + + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** + *

+ * createReferenceProcess. + *

+ * + * @param feedStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public ProcessSystem createReferenceProcess(StreamInterface feedStream) { + ProcessSystem referenceProcess = new ProcessSystem(); + + StreamInterface feedStream1 = new Stream("feed stream", feedStream.getFluid()); + feedStream1.setTemperature(temperature[0], unitT); + feedStream1.setPressure(pressure[0], unitP); + referenceProcess.add(feedStream1); + + ThreePhaseSeparator separator1ststage = + new ThreePhaseSeparator("1st stage separator", feedStream1); + referenceProcess.add(separator1ststage); + + Mixer gasMixer = new Mixer("gas mixer"); + gasMixer.addStream(separator1ststage.getGasOutStream()); + + StreamInterface gasExport = new Stream("gas", gasMixer.getOutletStream()); + StreamInterface oilExport = null; + + if (temperature.length == 0 || temperature == null) { + throw new RuntimeException( + new InvalidInputException(this, "getReferenceProcess", "temperature", "can not be null")); + } else if (temperature.length == 1) { + oilExport = new Stream("oil", separator1ststage.getOilOutStream()); + } else if (temperature.length == 2) { + Heater heater2ndstage = new Heater("2nd stage heater", separator1ststage.getOilOutStream()); + heater2ndstage.setOutPressure(pressure[1], unitP); + heater2ndstage.setOutTemperature(temperature[1], unitT); + referenceProcess.add(heater2ndstage); + + ThreePhaseSeparator separator2ndstage = + new ThreePhaseSeparator("2nd stage separator", heater2ndstage.getOutletStream()); + referenceProcess.add(separator2ndstage); + + gasMixer.addStream(separator2ndstage.getGasOutStream()); + oilExport = new Stream("oil", separator2ndstage.getOilOutStream()); + } else if (temperature.length == 3) { + Heater heater2ndstage = new Heater("2nd stage heater", separator1ststage.getOilOutStream()); + heater2ndstage.setOutPressure(pressure[1], unitP); + heater2ndstage.setOutTemperature(temperature[1], unitT); + referenceProcess.add(heater2ndstage); + + ThreePhaseSeparator separator2ndstage = + new ThreePhaseSeparator("2nd stage separator", heater2ndstage.getOutletStream()); + referenceProcess.add(separator2ndstage); + + Heater heater3rdstage = new Heater("3rd stage heater", separator2ndstage.getOilOutStream()); + heater3rdstage.setOutPressure(pressure[2], unitP); + heater3rdstage.setOutTemperature(temperature[2], unitT); + referenceProcess.add(heater3rdstage); + + ThreePhaseSeparator separator3rdstage = + new ThreePhaseSeparator("3rd stage separator", heater3rdstage.getOutletStream()); + referenceProcess.add(separator3rdstage); + + gasMixer.addStream(separator2ndstage.getGasOutStream()); + gasMixer.addStream(separator3rdstage.getGasOutStream()); + oilExport = new Stream("oil", separator3rdstage.getOilOutStream()); + } + + referenceProcess.add(gasMixer); + referenceProcess.add(gasExport); + referenceProcess.add(oilExport); + + return referenceProcess; + } + + /** + *

+ * Getter for the field referenceProcess. + *

+ * + * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public ProcessSystem getReferenceProcess() { + return referenceProcess; + } + + /** + *

+ * setSeparationPT. + *

+ * + * @param pressure an array of type double + * @param unitP a {@link java.lang.String} object + * @param temperature an array of type double + * @param unitT a {@link java.lang.String} object + */ + public void setSeparationPT(double[] pressure, String unitP, double[] temperature, String unitT) { + this.pressure = pressure; + this.unitP = unitP; + this.temperature = temperature; + this.unitT = unitT; + } +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/GORfitter.java b/src/main/java/neqsim/processSimulation/processEquipment/util/GORfitter.java index f2a7b10a26..4de244c5f0 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/GORfitter.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/GORfitter.java @@ -1,11 +1,12 @@ package neqsim.processSimulation.processEquipment.util; -import neqsim.processSimulation.measurementDevice.MultiPhaseMeter; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.TwoPortEquipment; -import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** @@ -18,15 +19,24 @@ */ public class GORfitter extends TwoPortEquipment { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(GORfitter.class); - double pressure = 1.01325, temperature = 15.0; + double pressure = ThermodynamicConstantsInterface.referencePressure; + double temperature = 15.0; private String referenceConditions = "standard"; // "actual"; private boolean fitAsGVF = false; - private double GOR = 120.0, GVF; - String unitT = "C", unitP = "bara"; + private double GOR = 120.0; + private double GVF; + String unitT = "C"; + String unitP = "bara"; @Deprecated + /** + *

+ * Constructor for GORfitter. + *

+ */ public GORfitter() { super("GOR fitter"); } @@ -55,34 +65,36 @@ public GORfitter(String name, StreamInterface stream) { super(name, stream); } + /** + *

+ * getGFV. + *

+ * + * @return a double + */ public double getGFV() { return GVF; } /** + * {@inheritDoc} + * *

* Setter for the field inletStream. *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object */ + @Override public void setInletStream(StreamInterface inletStream) { this.inStream = inletStream; try { this.outStream = inletStream.clone(); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } - /** - *

- * Getter for the field pressure. - *

- * - * @return a double - */ + /** {@inheritDoc} */ + @Override public double getPressure() { return pressure; } @@ -126,7 +138,7 @@ public void setTemperature(double temperature, String unitT) { /** {@inheritDoc} */ @Override - public void run() { + public void run(UUID id) { SystemInterface tempFluid = inStream.getThermoSystem().clone(); double flow = tempFluid.getFlowRate("kg/sec"); @@ -145,21 +157,21 @@ public void run() { ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); try { thermoOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } outStream.setThermoSystem(tempFluid); return; } if (!getReferenceConditions().equals("actual")) { tempFluid.setTemperature(15.0, "C"); - tempFluid.setPressure(1.01325, "bara"); + tempFluid.setPressure(ThermodynamicConstantsInterface.referencePressure, "bara"); } ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); try { thermoOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } if (!tempFluid.hasPhaseType("gas") || !tempFluid.hasPhaseType("oil")) { outStream = inStream.clone(); @@ -196,83 +208,23 @@ public void run() { tempFluid.setTotalFlowRate(flow, "kg/sec"); try { thermoOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + tempFluid.initProperties(); outStream.setThermoSystem(tempFluid); - if(!tempFluid.hasPhaseType("gas")) { + if (!tempFluid.hasPhaseType("gas")) { GVF = 0.0; - } - else if(tempFluid.hasPhaseType("gas") && tempFluid.hasPhaseType("oil")) { - GVF = tempFluid.getPhase("gas").getCorrectedVolume() - / (tempFluid.getPhase("oil").getCorrectedVolume() - + tempFluid.getPhase("gas").getCorrectedVolume()); - } - else { + } else if (tempFluid.hasPhaseType("gas") && tempFluid.hasPhaseType("oil")) { + GVF = tempFluid.getPhase("gas").getCorrectedVolume() + / (tempFluid.getPhase("oil").getCorrectedVolume() + + tempFluid.getPhase("gas").getCorrectedVolume()); + } else { GVF = Double.NaN; } - return; - } - - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testFluid = new SystemSrkEos(338.15, 50.0); - testFluid.addComponent("nitrogen", 1.205); - testFluid.addComponent("CO2", 1.340); - testFluid.addComponent("methane", 87.974); - testFluid.addComponent("ethane", 5.258); - testFluid.addComponent("propane", 3.283); - testFluid.addComponent("i-butane", 0.082); - testFluid.addComponent("n-butane", 0.487); - testFluid.addComponent("i-pentane", 0.056); - testFluid.addComponent("n-pentane", 1.053); - testFluid.addComponent("nC10", 4.053); - testFluid.setMixingRule(2); - testFluid.setMultiPhaseCheck(true); - - testFluid.setTemperature(90.0, "C"); - testFluid.setPressure(60.0, "bara"); - testFluid.setTotalFlowRate(1e6, "kg/hr"); - - Stream stream_1 = new Stream("Stream1", testFluid); - MultiPhaseMeter multiPhaseMeter = new MultiPhaseMeter("test", stream_1); - multiPhaseMeter.setTemperature(90.0, "C"); - multiPhaseMeter.setPressure(60.0, "bara"); - - GORfitter gORFItter = new GORfitter("test", stream_1); - gORFItter.setTemperature(15.0, "C"); - gORFItter.setPressure(1.01325, "bara"); - gORFItter.setReferenceConditions("actual"); - // gORFItter.setGVF(0.1); - gORFItter.setGOR(10.1); - - Stream stream_2 = new Stream("stream_2", gORFItter.getOutletStream()); - - MultiPhaseMeter multiPhaseMeter2 = new MultiPhaseMeter("test", stream_2); - multiPhaseMeter2.setTemperature(90.0, "C"); - multiPhaseMeter2.setPressure(60.0, "bara"); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(multiPhaseMeter); - operations.add(gORFItter); - operations.add(stream_2); - operations.add(multiPhaseMeter2); - operations.run(); - System.out.println("GOR " + multiPhaseMeter.getMeasuredValue("GOR")); - System.out.println("GOR_std " + multiPhaseMeter.getMeasuredValue("GOR_std")); - System.out.println("GOR2 " + multiPhaseMeter2.getMeasuredValue("GOR")); - System.out.println("GOR2_std " + multiPhaseMeter2.getMeasuredValue("GOR_std")); - System.out.println("stream_2 flow " + stream_2.getFlowRate("kg/hr")); + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); } /** @@ -298,12 +250,23 @@ public void setGOR(double gOR) { this.GOR = gOR; } + /** + *

+ * setGVF. + *

+ * + * @param gvf a double + */ public void setGVF(double gvf) { fitAsGVF = true; this.GOR = gvf; } /** + *

+ * Getter for the field referenceConditions. + *

+ * * @return the referenceConditions */ public String getReferenceConditions() { @@ -311,6 +274,10 @@ public String getReferenceConditions() { } /** + *

+ * Setter for the field referenceConditions. + *

+ * * @param referenceConditions the referenceConditions to set */ public void setReferenceConditions(String referenceConditions) { @@ -318,6 +285,10 @@ public void setReferenceConditions(String referenceConditions) { } /** + *

+ * isFitAsGVF. + *

+ * * @return the fitAsGVF */ public boolean isFitAsGVF() { @@ -325,6 +296,10 @@ public boolean isFitAsGVF() { } /** + *

+ * Setter for the field fitAsGVF. + *

+ * * @param fitAsGVF the fitAsGVF to set */ public void setFitAsGVF(boolean fitAsGVF) { diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/MPFMfitter.java b/src/main/java/neqsim/processSimulation/processEquipment/util/MPFMfitter.java new file mode 100644 index 0000000000..2a59020587 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/MPFMfitter.java @@ -0,0 +1,332 @@ +package neqsim.processSimulation.processEquipment.util; + +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.processSimulation.processEquipment.TwoPortEquipment; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + *

+ * GORfitter class. + *

+ * + * @author asmund + * @version $Id: $Id + */ +public class MPFMfitter extends TwoPortEquipment { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(MPFMfitter.class); + + double pressure = ThermodynamicConstantsInterface.referencePressure; + double temperature = 15.0; + private String referenceConditions = "standard"; // "actual"; + private boolean fitAsGVF = false; + + private double GOR = 120.0; + private double GVF; + String unitT = "C"; + String unitP = "bara"; + + SystemInterface referenceFluidPackage = null; + + @Deprecated + /** + *

+ * Constructor for MPFMfitter. + *

+ */ + public MPFMfitter() { + super("MPFMfitter fitter"); + } + + /** + *

+ * Constructor for MPFMfitter. + *

+ * + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + @Deprecated + public MPFMfitter(StreamInterface stream) { + this("MPFMfitter", stream); + } + + /** + *

+ * Constructor for MPFMfitter. + *

+ * + * @param name a {@link java.lang.String} object + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public MPFMfitter(String name, StreamInterface stream) { + super(name, stream); + } + + /** + *

+ * getGFV. + *

+ * + * @return a double + */ + public double getGFV() { + return GVF; + } + + /** + * {@inheritDoc} + * + *

+ * Setter for the field inletStream. + *

+ */ + @Override + public void setInletStream(StreamInterface inletStream) { + this.inStream = inletStream; + try { + this.outStream = inletStream.clone(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + /** {@inheritDoc} */ + @Override + public double getPressure() { + return pressure; + } + + /** + *

+ * Setter for the field pressure. + *

+ * + * @param pressure a double + * @param unitP a {@link java.lang.String} object + */ + public void setPressure(double pressure, String unitP) { + this.pressure = pressure; + this.unitP = unitP; + } + + /** + *

+ * getTemperature. + *

+ * + * @return a double + */ + public double getTemperature() { + return temperature; + } + + /** + *

+ * Setter for the field temperature. + *

+ * + * @param temperature a double + * @param unitT a {@link java.lang.String} object + */ + public void setTemperature(double temperature, String unitT) { + this.temperature = temperature; + this.unitT = unitT; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + SystemInterface tempFluid = inStream.getThermoSystem().clone(); + double flow = tempFluid.getFlowRate("kg/sec"); + + if (GOR < 1e-15) { + outStream.setThermoSystem(tempFluid); + return; + } + + if (flow < 1e-6) { + outStream.setThermoSystem(tempFluid); + return; + } + + if (GOR == 0 && tempFluid.hasPhaseType("gas")) { + tempFluid.removePhase(0); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + outStream.setThermoSystem(tempFluid); + return; + } + if (!getReferenceConditions().equals("actual")) { + tempFluid.setTemperature(15.0, "C"); + tempFluid.setPressure(ThermodynamicConstantsInterface.referencePressure, "bara"); + } + ThermodynamicOperations thermoOps = new ThermodynamicOperations(tempFluid); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + if (!tempFluid.hasPhaseType("gas") || !tempFluid.hasPhaseType("oil")) { + outStream = inStream.clone(); + return; + } + tempFluid.initPhysicalProperties("density"); + double currGOR = tempFluid.getPhase("gas").getCorrectedVolume() + / tempFluid.getPhase("oil").getCorrectedVolume(); + + if (fitAsGVF) { + GOR = tempFluid.getPhase("oil").getCorrectedVolume() * getGOR() + / (tempFluid.getPhase("oil").getCorrectedVolume() + - tempFluid.getPhase("oil").getCorrectedVolume() * getGOR()); + // GVF*Vo/(Vo-GVF*Vo) + // currGOR = tempFluid.getPhase("gas").getCorrectedVolume() + // / (tempFluid.getPhase("oil").getCorrectedVolume() + + // tempFluid.getPhase("gas").getCorrectedVolume()); + } + + double dev = getGOR() / currGOR; + // System.out.println("dev "+dev); + + double[] moleChange = new double[tempFluid.getNumberOfComponents()]; + for (int i = 0; i < tempFluid.getNumberOfComponents(); i++) { + moleChange[i] = + (dev - 1.0) * tempFluid.getPhase("gas").getComponent(i).getNumberOfMolesInPhase(); + } + tempFluid.init(0); + for (int i = 0; i < tempFluid.getNumberOfComponents(); i++) { + tempFluid.addComponent(i, moleChange[i]); + } + tempFluid.setPressure((inStream.getThermoSystem()).getPressure()); + tempFluid.setTemperature((inStream.getThermoSystem()).getTemperature()); + tempFluid.setTotalFlowRate(flow, "kg/sec"); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + tempFluid.initProperties(); + outStream.setThermoSystem(tempFluid); + if (!tempFluid.hasPhaseType("gas")) { + GVF = 0.0; + } else if (tempFluid.hasPhaseType("gas") && tempFluid.hasPhaseType("oil")) { + GVF = tempFluid.getPhase("gas").getCorrectedVolume() + / (tempFluid.getPhase("oil").getCorrectedVolume() + + tempFluid.getPhase("gas").getCorrectedVolume()); + } else { + GVF = Double.NaN; + } + + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** + *

+ * getGOR. + *

+ * + * @return a double + */ + public double getGOR() { + return GOR; + } + + /** + *

+ * setGOR. + *

+ * + * @param gOR a double + */ + public void setGOR(double gOR) { + fitAsGVF = false; + this.GOR = gOR; + } + + /** + *

+ * setGVF. + *

+ * + * @param gvf a double + */ + public void setGVF(double gvf) { + fitAsGVF = true; + this.GOR = gvf; + } + + /** + *

+ * Getter for the field referenceConditions. + *

+ * + * @return the referenceConditions + */ + public String getReferenceConditions() { + return referenceConditions; + } + + /** + *

+ * Setter for the field referenceConditions. + *

+ * + * @param referenceConditions the referenceConditions to set + */ + public void setReferenceConditions(String referenceConditions) { + this.referenceConditions = referenceConditions; + } + + /** + *

+ * isFitAsGVF. + *

+ * + * @return the fitAsGVF + */ + public boolean isFitAsGVF() { + return fitAsGVF; + } + + /** + *

+ * Setter for the field fitAsGVF. + *

+ * + * @param fitAsGVF the fitAsGVF to set + */ + public void setFitAsGVF(boolean fitAsGVF) { + this.fitAsGVF = fitAsGVF; + } + + /** + *

+ * Getter for the field referenceFluidPackage. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getReferenceFluidPackage() { + return referenceFluidPackage; + } + + /** + *

+ * Setter for the field referenceFluidPackage. + *

+ * + * @param referenceFluidPackage a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setReferenceFluidPackage(SystemInterface referenceFluidPackage) { + this.referenceFluidPackage = referenceFluidPackage; + } +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/MoleFractionControllerUtil.java b/src/main/java/neqsim/processSimulation/processEquipment/util/MoleFractionControllerUtil.java index 6994e26d90..901c261eeb 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/MoleFractionControllerUtil.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/MoleFractionControllerUtil.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.util; +import java.util.UUID; import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; @@ -20,7 +21,9 @@ public class MoleFractionControllerUtil extends TwoPortEquipment { SystemInterface thermoSystem; ThermodynamicOperations thermoOps; String compName = null; - double moleFrac = 1.0, molesChange = 0.0, moleFractionReductionRatio = 0.0; + double moleFrac = 1.0; + double molesChange = 0.0; + double moleFractionReductionRatio = 0.0; boolean moleFractionReduction = false; /** @@ -37,13 +40,13 @@ public MoleFractionControllerUtil(StreamInterface inletStream) { } /** + * {@inheritDoc} + * *

* Setter for the field inletStream. *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object */ + @Override public void setInletStream(StreamInterface inletStream) { this.inStream = inletStream; @@ -116,7 +119,7 @@ public void setRelativeMoleFractionReduction(String compName, double moleFracRat /** {@inheritDoc} */ @Override - public void run() { + public void run(UUID id) { // System.out.println("MoleFractionContollerUtil running.."); thermoSystem = inStream.getThermoSystem().clone(); if (thermoSystem.getPhase(0).hasComponent(compName)) { @@ -128,10 +131,11 @@ public void run() { (moleFractionReductionRatio) * thermoSystem.getPhase(0).getComponent(compName).getz(); } double molesChange = deltaFrac * thermoSystem.getTotalNumberOfMoles(); - thermoSystem.addComponent(compName, molesChange);// deltaFrac*thermoSystem.getTotalNumberOfMoles()); + thermoSystem.addComponent(compName, molesChange); // deltaFrac*thermoSystem.getTotalNumberOfMoles()); thermoOps.TPflash(); } outStream.setThermoSystem(thermoSystem); + setCalculationIdentifier(id); } /** {@inheritDoc} */ diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/NeqSimUnit.java b/src/main/java/neqsim/processSimulation/processEquipment/util/NeqSimUnit.java index 8a7bf3fc12..9ee7a3f63e 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/NeqSimUnit.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/NeqSimUnit.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.util; +import java.util.UUID; import neqsim.fluidMechanics.flowNode.FlowNodeInterface; import neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.AnnularFlow; import neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode.DropletFlowNode; @@ -19,337 +20,340 @@ * @version $Id: $Id */ public class NeqSimUnit extends TwoPortEquipment { - private static final long serialVersionUID = 1000; - - SystemInterface thermoSystem; - private String equipment = "pipeline"; - String flowPattern = "stratified"; - private double length = 1.0; - public int numberOfNodes = 100; - private double ID = 0.5; - private double outerTemperature = 283.15; - public double interfacialArea = 0.0; - - /** - *

- * Constructor for NeqSimUnit. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - * @param equipment a {@link java.lang.String} object - * @param flowPattern a {@link java.lang.String} object - */ - public NeqSimUnit(StreamInterface inletStream, String equipment, String flowPattern) { - super("NeqSimUnit"); - this.flowPattern = flowPattern; - this.setEquipment(equipment); - setInletStream(inletStream); - } - - /** - *

- * Setter for the field inletStream. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public void setInletStream(StreamInterface inletStream) { - this.inStream = inletStream; - - thermoSystem = inletStream.getThermoSystem().clone(); - outStream = new Stream("outStream", thermoSystem); + private static final long serialVersionUID = 1000; + + SystemInterface thermoSystem; + private String equipment = "pipeline"; + String flowPattern = "stratified"; + private double length = 1.0; + public int numberOfNodes = 100; + private double ID = 0.5; + private double outerTemperature = 283.15; + public double interfacialArea = 0.0; + + /** + *

+ * Constructor for NeqSimUnit. + *

+ * + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + * @param equipment a {@link java.lang.String} object + * @param flowPattern a {@link java.lang.String} object + */ + public NeqSimUnit(StreamInterface inletStream, String equipment, String flowPattern) { + super("NeqSimUnit"); + this.flowPattern = flowPattern; + this.setEquipment(equipment); + setInletStream(inletStream); + } + + /** + * {@inheritDoc} + * + *

+ * Setter for the field inletStream. + *

+ */ + @Override + public void setInletStream(StreamInterface inletStream) { + this.inStream = inletStream; + + thermoSystem = inletStream.getThermoSystem().clone(); + outStream = new Stream("outStream", thermoSystem); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + thermoSystem = inStream.getThermoSystem().clone(); + if (equipment.equals("pipeline") && flowPattern.equals("stratified")) { + runStratified(); + } else if (equipment.equals("pipeline") && flowPattern.equals("annular")) { + runAnnular(); + } else if (equipment.equals("pipeline") && flowPattern.equals("droplet")) { + runDroplet(); + } else { + runStratified(); } - - /** {@inheritDoc} */ - @Override - public void run() { - thermoSystem = inStream.getThermoSystem().clone(); - if (equipment.equals("pipeline") && flowPattern.equals("stratified")) { - runStratified(); - } else if (equipment.equals("pipeline") && flowPattern.equals("annular")) { - runAnnular(); - } else if (equipment.equals("pipeline") && flowPattern.equals("droplet")) { - runDroplet(); - } else { - runStratified(); - } - // outStream.setThermoSystem(thermoSystem); - } - - /** - *

- * runDroplet. - *

- */ - public void runDroplet() { - PipeData pipe1 = new PipeData(getID(), 0.00025); - FlowNodeInterface test = new DropletFlowNode(thermoSystem, pipe1); - test.setInterphaseModelType(1); - test.setLengthOfNode(getLength() / (numberOfNodes * 1.0)); - test.getGeometry().getSurroundingEnvironment().setTemperature(getOuterTemperature()); - - test.getFluidBoundary().setHeatTransferCalc(false); - test.getFluidBoundary().setMassTransferCalc(true); - double length = 0; - test.initFlowCalc(); - double[][] temperatures2 = new double[3][1000]; - int k = 0; - interfacialArea = 0.0; - for (int i = 0; i < numberOfNodes; i++) { - interfacialArea = getInterfacialArea() + test.getInterphaseContactArea(); - length += test.getLengthOfNode(); - test.initFlowCalc(); - test.calcFluxes(); - if (i > 1 && (i % 1) == 0) { - k++; - // test.display("length " + length); - // test.getBulkSystem().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - // test.getFluidBounsdary().display("length " + length); - // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); - temperatures2[0][k] = length; - temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); - // test.getFluidBoundary().display("test"); - } - - // test.getBulkSystem().display(); - test.update(); - // test.getFluidBoundary().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - - // test.getFluidBoundary().display("test"); - } - - /* - * for (int i = 0; i < k; i++) { System.out.println("len temp " + temperatures2[0][i] + " " - * + temperatures2[1][i]); } - */ + // outStream.setThermoSystem(thermoSystem); + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** + *

+ * runDroplet. + *

+ */ + public void runDroplet() { + PipeData pipe1 = new PipeData(getID(), 0.00025); + FlowNodeInterface test = new DropletFlowNode(thermoSystem, pipe1); + test.setInterphaseModelType(1); + test.setLengthOfNode(getLength() / (numberOfNodes * 1.0)); + test.getGeometry().getSurroundingEnvironment().setTemperature(getOuterTemperature()); + + test.getFluidBoundary().setHeatTransferCalc(false); + test.getFluidBoundary().setMassTransferCalc(true); + double length = 0; + test.initFlowCalc(); + double[][] temperatures2 = new double[3][1000]; + int k = 0; + interfacialArea = 0.0; + for (int i = 0; i < numberOfNodes; i++) { + interfacialArea = getInterfacialArea() + test.getInterphaseContactArea(); + length += test.getLengthOfNode(); + test.initFlowCalc(); + test.calcFluxes(); + if (i > 1 && (i % 1) == 0) { + k++; // test.display("length " + length); - outStream.setThermoSystem(test.getBulkSystem()); + // test.getBulkSystem().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + // test.getFluidBounsdary().display("length " + length); + // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); + temperatures2[0][k] = length; + temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); + // test.getFluidBoundary().display("test"); + } + + // test.getBulkSystem().display(); + test.update(); + // test.getFluidBoundary().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + + // test.getFluidBoundary().display("test"); } - /** - *

- * runStratified. - *

+ /* + * for (int i = 0; i < k; i++) { System.out.println("len temp " + temperatures2[0][i] + " " + + * temperatures2[1][i]); } */ - public void runStratified() { - PipeData pipe1 = new PipeData(getID(), 0.00025); - FlowNodeInterface test = new StratifiedFlowNode(thermoSystem, pipe1); - test.setInterphaseModelType(1); - test.setLengthOfNode(getLength() / (numberOfNodes * 1.0)); - test.getGeometry().getSurroundingEnvironment().setTemperature(getOuterTemperature()); - - test.getFluidBoundary().setHeatTransferCalc(false); - test.getFluidBoundary().setMassTransferCalc(true); - double length = 0; - test.initFlowCalc(); - double[][] temperatures2 = new double[3][1000]; - int k = 0; - interfacialArea = 0.0; - for (int i = 0; i < numberOfNodes; i++) { - interfacialArea = getInterfacialArea() + test.getInterphaseContactArea(); - length += test.getLengthOfNode(); - test.initFlowCalc(); - test.calcFluxes(); - if (i > 1 && (i % 1) == 0) { - k++; - // test.display("length " + length); - // test.getBulkSystem().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - // test.getFluidBounsdary().display("length " + length); - // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); - temperatures2[0][k] = length; - temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); - // test.getFluidBoundary().display("test"); - } - - // test.getBulkSystem().display(); - test.update(); - // test.getFluidBoundary().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - - // test.getFluidBoundary().display("test"); - } - - /* - * for (int i = 0; i < k; i++) { System.out.println("len temp " + temperatures2[0][i] + " " - * + temperatures2[1][i]); } - */ + // test.display("length " + length); + outStream.setThermoSystem(test.getBulkSystem()); + } + + /** + *

+ * runStratified. + *

+ */ + public void runStratified() { + PipeData pipe1 = new PipeData(getID(), 0.00025); + FlowNodeInterface test = new StratifiedFlowNode(thermoSystem, pipe1); + test.setInterphaseModelType(1); + test.setLengthOfNode(getLength() / (numberOfNodes * 1.0)); + test.getGeometry().getSurroundingEnvironment().setTemperature(getOuterTemperature()); + + test.getFluidBoundary().setHeatTransferCalc(false); + test.getFluidBoundary().setMassTransferCalc(true); + double length = 0; + test.initFlowCalc(); + double[][] temperatures2 = new double[3][1000]; + int k = 0; + interfacialArea = 0.0; + for (int i = 0; i < numberOfNodes; i++) { + interfacialArea = getInterfacialArea() + test.getInterphaseContactArea(); + length += test.getLengthOfNode(); + test.initFlowCalc(); + test.calcFluxes(); + if (i > 1 && (i % 1) == 0) { + k++; // test.display("length " + length); - outStream.setThermoSystem(test.getBulkSystem()); + // test.getBulkSystem().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + // test.getFluidBounsdary().display("length " + length); + // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); + temperatures2[0][k] = length; + temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); + // test.getFluidBoundary().display("test"); + } + + // test.getBulkSystem().display(); + test.update(); + // test.getFluidBoundary().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + + // test.getFluidBoundary().display("test"); } - /** - *

- * runAnnular. - *

+ /* + * for (int i = 0; i < k; i++) { System.out.println("len temp " + temperatures2[0][i] + " " + + * temperatures2[1][i]); } */ - public void runAnnular() { - PipeData pipe1 = new PipeData(getID(), 0.00025); - FlowNodeInterface test = new AnnularFlow(thermoSystem, pipe1); - test.setInterphaseModelType(1); - test.setLengthOfNode(getLength() / (numberOfNodes * 1.0)); - test.getGeometry().getSurroundingEnvironment().setTemperature(getOuterTemperature()); - - test.getFluidBoundary().setHeatTransferCalc(false); - test.getFluidBoundary().setMassTransferCalc(true); - double length = 0; - test.initFlowCalc(); - double[][] temperatures2 = new double[3][1000]; - int k = 0; - interfacialArea = 0.0; - for (int i = 0; i < numberOfNodes; i++) { - interfacialArea = getInterfacialArea() + test.getInterphaseContactArea(); - length += test.getLengthOfNode(); - test.initFlowCalc(); - test.calcFluxes(); - if (i > 1 && (i % 1) == 0) { - k++; - // test.display("length " + length); - // test.getBulkSystem().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - // test.getFluidBounsdary().display("length " + length); - // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); - temperatures2[0][k] = length; - temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); - // test.getFluidBoundary().display("test"); - } - - // test.getBulkSystem().display(); - test.update(); - // test.getFluidBoundary().display("length " + length); - // test.getInterphaseSystem().display("length " + length); - - // test.getFluidBoundary().display("test"); - } - - /* - * for (int i = 0; i < k; i++) { System.out.println("len temp " + temperatures2[0][i] + " " - * + temperatures2[1][i]); } - */ + // test.display("length " + length); + outStream.setThermoSystem(test.getBulkSystem()); + } + + /** + *

+ * runAnnular. + *

+ */ + public void runAnnular() { + PipeData pipe1 = new PipeData(getID(), 0.00025); + FlowNodeInterface test = new AnnularFlow(thermoSystem, pipe1); + test.setInterphaseModelType(1); + test.setLengthOfNode(getLength() / (numberOfNodes * 1.0)); + test.getGeometry().getSurroundingEnvironment().setTemperature(getOuterTemperature()); + + test.getFluidBoundary().setHeatTransferCalc(false); + test.getFluidBoundary().setMassTransferCalc(true); + double length = 0; + test.initFlowCalc(); + double[][] temperatures2 = new double[3][1000]; + int k = 0; + interfacialArea = 0.0; + for (int i = 0; i < numberOfNodes; i++) { + interfacialArea = getInterfacialArea() + test.getInterphaseContactArea(); + length += test.getLengthOfNode(); + test.initFlowCalc(); + test.calcFluxes(); + if (i > 1 && (i % 1) == 0) { + k++; // test.display("length " + length); - outStream.setThermoSystem(test.getBulkSystem()); - } - - /** - *

- * Getter for the field length. - *

- * - * @return a double - */ - public double getLength() { - return length; - } - - /** - *

- * Setter for the field length. - *

- * - * @param length a double - */ - public void setLength(double length) { - this.length = length; - } - - /** - *

- * getID. - *

- * - * @return a double - */ - public double getID() { - return ID; - } - - /** - *

- * setID. - *

- * - * @param iD a double - */ - public void setID(double iD) { - ID = iD; - } - - /** - *

- * Getter for the field outerTemperature. - *

- * - * @return a double - */ - public double getOuterTemperature() { - return outerTemperature; - } - - /** - *

- * Setter for the field outerTemperature. - *

- * - * @param outerTemperature a double - */ - public void setOuterTemperature(double outerTemperature) { - this.outerTemperature = outerTemperature; - } - - /** - *

- * Getter for the field equipment. - *

- * - * @return a {@link java.lang.String} object - */ - public String getEquipment() { - return equipment; + // test.getBulkSystem().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + // test.getFluidBounsdary().display("length " + length); + // test.setLengthOfNode(0.000005 + test.getLengthOfNode() / 2.0); + temperatures2[0][k] = length; + temperatures2[1][k] = test.getGeometry().getInnerWallTemperature(); + // test.getFluidBoundary().display("test"); + } + + // test.getBulkSystem().display(); + test.update(); + // test.getFluidBoundary().display("length " + length); + // test.getInterphaseSystem().display("length " + length); + + // test.getFluidBoundary().display("test"); } - /** - *

- * Setter for the field equipment. - *

- * - * @param equipment a {@link java.lang.String} object + /* + * for (int i = 0; i < k; i++) { System.out.println("len temp " + temperatures2[0][i] + " " + + * temperatures2[1][i]); } */ - public void setEquipment(String equipment) { - this.equipment = equipment; - } - - /** - *

- * Getter for the field interfacialArea. - *

- * - * @return a double - */ - public double getInterfacialArea() { - return interfacialArea; - } - - /** - *

- * Getter for the field numberOfNodes. - *

- * - * @return a int - */ - public int getNumberOfNodes() { - return numberOfNodes; - } - - /** - *

- * Setter for the field numberOfNodes. - *

- * - * @param numberOfNodes a int - */ - public void setNumberOfNodes(int numberOfNodes) { - this.numberOfNodes = numberOfNodes; - } + // test.display("length " + length); + outStream.setThermoSystem(test.getBulkSystem()); + } + + /** + *

+ * Getter for the field length. + *

+ * + * @return a double + */ + public double getLength() { + return length; + } + + /** + *

+ * Setter for the field length. + *

+ * + * @param length a double + */ + public void setLength(double length) { + this.length = length; + } + + /** + *

+ * getID. + *

+ * + * @return a double + */ + public double getID() { + return ID; + } + + /** + *

+ * setID. + *

+ * + * @param iD a double + */ + public void setID(double iD) { + ID = iD; + } + + /** + *

+ * Getter for the field outerTemperature. + *

+ * + * @return a double + */ + public double getOuterTemperature() { + return outerTemperature; + } + + /** + *

+ * Setter for the field outerTemperature. + *

+ * + * @param outerTemperature a double + */ + public void setOuterTemperature(double outerTemperature) { + this.outerTemperature = outerTemperature; + } + + /** + *

+ * Getter for the field equipment. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getEquipment() { + return equipment; + } + + /** + *

+ * Setter for the field equipment. + *

+ * + * @param equipment a {@link java.lang.String} object + */ + public void setEquipment(String equipment) { + this.equipment = equipment; + } + + /** + *

+ * Getter for the field interfacialArea. + *

+ * + * @return a double + */ + public double getInterfacialArea() { + return interfacialArea; + } + + /** + *

+ * Getter for the field numberOfNodes. + *

+ * + * @return a int + */ + public int getNumberOfNodes() { + return numberOfNodes; + } + + /** + *

+ * Setter for the field numberOfNodes. + *

+ * + * @param numberOfNodes a int + */ + public void setNumberOfNodes(int numberOfNodes) { + this.numberOfNodes = numberOfNodes; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/PressureDrop.java b/src/main/java/neqsim/processSimulation/processEquipment/util/PressureDrop.java new file mode 100644 index 0000000000..95d08817a0 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/PressureDrop.java @@ -0,0 +1,82 @@ +package neqsim.processSimulation.processEquipment.util; + +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + *

+ * PressureDrop class. + *

+ * The pressure drop unit is used to simulate pressure drops in process plant. The proessure drop is + * simulated using a constant enthalpy flash. + * + * @author esol + * @version $Id: $Id + */ +public class PressureDrop extends ThrottlingValve { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PressureDrop.class); + + SystemInterface thermoSystem; + double pressureDrop = 0.1; + + /** + *

+ * Constructor for PressureDrop. + *

+ * + * @param name the name of the pressure drop unit + */ + public PressureDrop(String name) { + super(name); + } + + /** + *

Setter for the field pressureDrop.

+ * + * @param pressureDrop a double + * @param unit a {@link java.lang.String} object + */ + public void setPressureDrop(double pressureDrop, String unit) { + if (unit.equals("bara")) { + this.pressureDrop = pressureDrop; + } else if (unit.equals("Pa")) { + this.pressureDrop = pressureDrop / 1e5; + } else { + throw new RuntimeException("pressure drop unit not supported: " + unit); + } + } + + /** + *

+ * Constructor for PressureDropUnit. + *

+ * + * @param name a {@link java.lang.String} object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public PressureDrop(String name, StreamInterface inletStream) { + this(name); + setInletStream(inletStream); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + thermoSystem = getInletStream().getThermoSystem().clone(); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); + thermoSystem.init(3); + double enthalpy = thermoSystem.getEnthalpy(); + + thermoSystem.setPressure(thermoSystem.getPressure() - pressureDrop); + thermoOps.PHflash(enthalpy); + + outStream.setFluid(thermoSystem); + } +} diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java b/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java index 36396f2915..e23175cf2c 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/Recycle.java @@ -1,10 +1,11 @@ package neqsim.processSimulation.processEquipment.util; import java.util.ArrayList; - +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.mixer.MixerInterface; -import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -18,445 +19,547 @@ * @version $Id: $Id */ public class Recycle extends ProcessEquipmentBaseClass implements MixerInterface { - private static final long serialVersionUID = 1000; - - protected ArrayList streams = new ArrayList(0); - private ArrayList downstreamProperty = new ArrayList(0); - protected int numberOfInputStreams = 0; - protected StreamInterface mixedStream; - StreamInterface lastIterationStream = null; - private StreamInterface outletStream = null; - private double tolerance = 1e-4; - private double error = 1e6; - private int priority = 100; - boolean firstTime = true; - int iterations = 0; - int maxIterations = 10; - - /** - *

- * Constructor for Recycle. - *

- */ - @Deprecated - public Recycle() { - this("Recycle"); - } - - /** - *

- * Constructor for Recycle. - *

- * - * @param name a {@link java.lang.String} object - */ - public Recycle(String name) { - super(name); - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return mixedStream.getThermoSystem(); - } - - /** - *

- * Setter for the field downstreamProperty. - *

- * - * @param property a {@link java.lang.String} object - */ - public void setDownstreamProperty(String property) { - downstreamProperty.add(property); - } - - /** {@inheritDoc} */ - @Override - public void replaceStream(int i, StreamInterface newStream) { - streams.set(i, newStream); - } - - /** {@inheritDoc} */ - @Override - public void addStream(StreamInterface newStream) { - streams.add(newStream); - - if (numberOfInputStreams == 0) { - mixedStream = streams.get(0).clone(); - // mixedStream.getThermoSystem().setNumberOfPhases(2); - // mixedStream.getThermoSystem().reInitPhaseType(); - // mixedStream.getThermoSystem().init(0); - // mixedStream.getThermoSystem().init(3); - } - mixedStream.setEmptyThermoSystem(streams.get(0).getThermoSystem()); - numberOfInputStreams++; - lastIterationStream = mixedStream.clone(); - } - - /** - *

- * getStream. - *

- * - * @param i a int - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface getStream(int i) { - return streams.get(i); - } - - /** - *

- * mixStream. - *

- */ - public void mixStream() { - int index = 0; - // String compName = new String(); - - for (int k = 1; k < streams.size(); k++) { - for (int i = 0; i < streams.get(k).getThermoSystem().getPhase(0) - .getNumberOfComponents(); i++) { - boolean gotComponent = false; - String componentName = - streams.get(k).getThermoSystem().getPhase(0).getComponent(i).getName(); - // System.out.println("adding: " + componentName); - // int numberOfPhases = streams.get(k).getThermoSystem().getNumberOfPhases(); - - double moles = streams.get(k).getThermoSystem().getPhase(0).getComponent(i) - .getNumberOfmoles(); - // System.out.println("moles: " + moles + " " + - // mixedStream.getThermoSystem().getPhase(0).getNumberOfComponents()); - for (int p = 0; p < mixedStream.getThermoSystem().getPhase(0) - .getNumberOfComponents(); p++) { - if (mixedStream.getThermoSystem().getPhase(0).getComponent(p).getName() - .equals(componentName)) { - gotComponent = true; - index = streams.get(0).getThermoSystem().getPhase(0).getComponent(p) - .getComponentNumber(); - // compName = streams.get(0).getThermoSystem().getPhase(0).getComponent(p) - // .getComponentName(); - } - } - - if (gotComponent) { - // System.out.println("adding moles starting...."); - mixedStream.getThermoSystem().addComponent(index, moles); - // mixedStream.getThermoSystem().init_x_y(); - // System.out.println("adding moles finished"); - } else { - System.out.println("ikke gaa hit"); - mixedStream.getThermoSystem().addComponent(index, moles); - } - } - } - // mixedStream.getThermoSystem().init_x_y(); - // mixedStream.getThermoSystem().initBeta(); - // mixedStream.getThermoSystem().init(2); - } - - /** - *

- * guessTemperature. - *

- * - * @return a double - */ - public double guessTemperature() { - double gtemp = 0; - for (int k = 0; k < streams.size(); k++) { - gtemp += streams.get(k).getThermoSystem().getTemperature() - * streams.get(k).getThermoSystem().getNumberOfMoles() - / mixedStream.getThermoSystem().getNumberOfMoles(); - } - return gtemp; - } - - /** - *

- * calcMixStreamEnthalpy. - *

- * - * @return a double - */ - public double calcMixStreamEnthalpy() { - double enthalpy = 0; - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().init(3); - enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); - // System.out.println("total enthalpy k : " + ( ((Stream) - // streams.get(k)).getThermoSystem()).getEnthalpy()); - } - // System.out.println("total enthalpy of streams: " + enthalpy); - return enthalpy; - } - - /** {@inheritDoc} */ - @Deprecated - public StreamInterface getOutStream() { - return mixedStream; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Recycle.class); + + protected ArrayList streams = new ArrayList(0); + private ArrayList downstreamProperty = new ArrayList(0); + protected int numberOfInputStreams = 0; + protected StreamInterface mixedStream; + StreamInterface lastIterationStream = null; + private StreamInterface outletStream = null; + private double tolerance = 1e-4; + private int priority = 100; + private double error = 1e10; + private double errorFlow = 1e10; + boolean firstTime = true; + int iterations = 0; + int maxIterations = 10; + + double compositionAccuracy = 1.0; + double temperatureAccuracy = 1.0; + double flowAccuracy = 1.0; + + /** + *

+ * Setter for the field compositionAccuracy. + *

+ * + * @param compositionAccuracy a double + */ + public void setCompositionAccuracy(double compositionAccuracy) { + this.compositionAccuracy = compositionAccuracy; + } + + /** + *

+ * Setter for the field temperatureAccuracy. + *

+ * + * @param temperatureAccuracy a double + */ + public void setTemperatureAccuracy(double temperatureAccuracy) { + this.temperatureAccuracy = temperatureAccuracy; + } + + /** + *

+ * Setter for the field flowAccuracy. + *

+ * + * @param flowAccuracy a double + */ + public void setFlowAccuracy(double flowAccuracy) { + this.flowAccuracy = flowAccuracy; + } + + /** + *

+ * Constructor for Recycle. + *

+ */ + @Deprecated + public Recycle() { + this("Recycle"); + } + + /** + *

+ * resetIterations. + *

+ */ + public void resetIterations() { + iterations = 0; + } + + /** + *

+ * Constructor for Recycle. + *

+ * + * @param name a {@link java.lang.String} object + */ + public Recycle(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return mixedStream.getThermoSystem(); + } + + /** + *

+ * Setter for the field downstreamProperty. + *

+ * + * @param property a {@link java.util.ArrayList} object + */ + public void setDownstreamProperty(ArrayList property) { + this.downstreamProperty = property; + } + + /** + *

+ * Setter for the field downstreamProperty. + *

+ * + * @param property a {@link java.lang.String} object + */ + public void setDownstreamProperty(String property) { + downstreamProperty.add(property); + } + + /** {@inheritDoc} */ + @Override + public void replaceStream(int i, StreamInterface newStream) { + streams.set(i, newStream); + } + + /** {@inheritDoc} */ + @Override + public void addStream(StreamInterface newStream) { + streams.add(newStream); + + if (numberOfInputStreams == 0) { + mixedStream = streams.get(0).clone(); + // mixedStream.getThermoSystem().setNumberOfPhases(2); + // mixedStream.getThermoSystem().init(0); + // mixedStream.getThermoSystem().init(3); } - - /** - *

- * initiateDownstreamProperties. - *

- * - * @param outstream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void initiateDownstreamProperties(StreamInterface outstream) { - lastIterationStream = outstream.clone(); - } - - /** - *

- * setDownstreamProperties. - *

- */ - public void setDownstreamProperties() { - if (downstreamProperty.size() > 0) { - for (int i = 0; i < downstreamProperty.size(); i++) { - if (downstreamProperty.get(i).equals("flow rate")) - mixedStream.setFlowRate(outletStream.getFlowRate("kg/hr"), "kg/hr"); - } + mixedStream.setEmptyThermoSystem(streams.get(0).getThermoSystem()); + numberOfInputStreams++; + lastIterationStream = mixedStream.clone(); + } + + /** + *

+ * getStream. + *

+ * + * @param i a int + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getStream(int i) { + return streams.get(i); + } + + /** + *

+ * mixStream. + *

+ */ + public void mixStream() { + int index = 0; + // String compName = new String(); + + for (int k = 1; k < streams.size(); k++) { + for (int i = 0; i < streams.get(k).getThermoSystem().getPhase(0) + .getNumberOfComponents(); i++) { + boolean gotComponent = false; + String componentName = + streams.get(k).getThermoSystem().getPhase(0).getComponent(i).getName(); + // logger.info("adding: " + componentName); + // int numberOfPhases = streams.get(k).getThermoSystem().getNumberOfPhases(); + + double moles = + streams.get(k).getThermoSystem().getPhase(0).getComponent(i).getNumberOfmoles(); + // logger.info("moles: " + moles + " " + + // mixedStream.getThermoSystem().getPhase(0).getNumberOfComponents()); + for (int p = 0; p < mixedStream.getThermoSystem().getPhase(0) + .getNumberOfComponents(); p++) { + if (mixedStream.getThermoSystem().getPhase(0).getComponent(p).getName() + .equals(componentName)) { + gotComponent = true; + index = + streams.get(0).getThermoSystem().getPhase(0).getComponent(p).getComponentNumber(); + // compName = streams.get(0).getThermoSystem().getPhase(0).getComponent(p) + // .getComponentName(); + } } - } - /** {@inheritDoc} */ - @Override - public void run() { - iterations++; - /* - * if(firstTime || iterations>maxIterations) { firstTime=false; return; - * - * } - */ - double enthalpy = 0.0; - // System.out.println("flow rate old in recycle " + - // outletStream.getFlowRate("kg/hr")); - // ((Stream) streams.get(0)).getThermoSystem().display(); - SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); - // System.out.println("total number of moles " + - // thermoSystem2.getTotalNumberOfMoles()); - mixedStream.setThermoSystem(thermoSystem2); - ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); - if (streams.size() > 1) { - mixedStream.getThermoSystem().setNumberOfPhases(2); - mixedStream.getThermoSystem().reInitPhaseType(); - mixedStream.getThermoSystem().init(0); - - mixStream(); - - setDownstreamProperties(); - try { - enthalpy = calcMixStreamEnthalpy(); - } catch (Exception e) { - // String error = e.getMessage(); - return; - } - // System.out.println("temp guess " + guessTemperature()); - mixedStream.getThermoSystem().setTemperature(guessTemperature()); - testOps.PHflash(enthalpy, 0); - // System.out.println("filan temp " + mixedStream.getTemperature()); + if (gotComponent) { + // logger.info("adding moles starting...."); + mixedStream.getThermoSystem().addComponent(index, moles); + // mixedStream.getThermoSystem().init_x_y(); + // logger.info("adding moles finished"); } else { - setDownstreamProperties(); - testOps.TPflash(); + logger.warn("ikke gaa hit"); + mixedStream.getThermoSystem().addComponent(index, moles); } - setError(massBalanceCheck()); - System.out.println(name + " recycle error: " + getError()); - lastIterationStream = (Stream) mixedStream.clone(); - outletStream.setThermoSystem(mixedStream.getThermoSystem()); - // System.out.println("flow rate new in recycle " + - // outletStream.getFlowRate("kg/hr")); - - // System.out.println("enthalpy: " + - // mixedStream.getThermoSystem().getEnthalpy()); - // System.out.println("enthalpy: " + enthalpy); - // System.out.println("temperature: " + - // mixedStream.getThermoSystem().getTemperature()); - - // System.out.println("beta " + mixedStream.getThermoSystem().getBeta()); - // outStream.setThermoSystem(mixedStream.getThermoSystem()); + } } - - /** - *

- * massBalanceCheck. - *

- * - * @return a double - */ - public double massBalanceCheck() { - double error = 0.0; - // System.out.println("flow rate new " + - // mixedStream.getThermoSystem().getFlowRate("kg/hr")); - // System.out.println("temperature " + - // mixedStream.getThermoSystem().getTemperature("C")); - // System.out.println("pressure " + - // mixedStream.getThermoSystem().getPressure("bara")); - if (lastIterationStream.getFluid().getNumberOfComponents() != mixedStream.getFluid() - .getNumberOfComponents()) { - return 10.0; - } - for (int i = 0; i < mixedStream.getThermoSystem().getPhase(0) - .getNumberOfComponents(); i++) { - // System.out.println("x last " + - // lastIterationStream.getThermoSystem().getPhase(0).getComponent(i).getx()); - // System.out.println("x new " + - // mixedStream.getThermoSystem().getPhase(0).getComponent(i).getx()); - error += Math.abs(mixedStream.getThermoSystem().getPhase(0).getComponent(i).getx() - - lastIterationStream.getThermoSystem().getPhase(0).getComponent(i).getx()); - } - return Math.abs(error); + // mixedStream.getThermoSystem().init_x_y(); + // mixedStream.getThermoSystem().initBeta(); + // mixedStream.getThermoSystem().init(2); + } + + /** + *

+ * guessTemperature. + *

+ * + * @return a double + */ + public double guessTemperature() { + double gtemp = 0; + for (int k = 0; k < streams.size(); k++) { + gtemp += streams.get(k).getThermoSystem().getTemperature() + * streams.get(k).getThermoSystem().getNumberOfMoles() + / mixedStream.getThermoSystem().getNumberOfMoles(); } - - /** {@inheritDoc} */ - @Override - public void displayResult() {} - - /** {@inheritDoc} */ - @Override - public void setPressure(double pres) { - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().setPressure(pres); - } - mixedStream.getThermoSystem().setPressure(pres); + return gtemp; + } + + /** + *

+ * calcMixStreamEnthalpy. + *

+ * + * @return a double + */ + public double calcMixStreamEnthalpy() { + double enthalpy = 0; + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().init(3); + enthalpy += streams.get(k).getThermoSystem().getEnthalpy(); + // logger.info("total enthalpy k : " + ( ((Stream) + // streams.get(k)).getThermoSystem()).getEnthalpy()); } - - /** - *

- * setTemperature. - *

- * - * @param temp a double - */ - public void setTemperature(double temp) { - for (int k = 0; k < streams.size(); k++) { - streams.get(k).getThermoSystem().setTemperature(temp); + // logger.info("total enthalpy of streams: " + enthalpy); + return enthalpy; + } + + /** {@inheritDoc} */ + @Override + @Deprecated + public StreamInterface getOutStream() { + return mixedStream; + } + + /** + *

+ * initiateDownstreamProperties. + *

+ * + * @param outstream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void initiateDownstreamProperties(StreamInterface outstream) { + lastIterationStream = outstream.clone(); + } + + /** + *

+ * setDownstreamProperties. + *

+ */ + public void setDownstreamProperties() { + if (downstreamProperty.size() > 0) { + for (int i = 0; i < downstreamProperty.size(); i++) { + if (downstreamProperty.get(i).equals("flow rate")) { + mixedStream.setFlowRate(outletStream.getFlowRate("kg/hr"), "kg/hr"); } - mixedStream.getThermoSystem().setTemperature(temp); + } } - - /** - *

- * Getter for the field tolerance. - *

- * - * @return the tolerance + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + iterations++; + /* + * if(firstTime || iterations>maxIterations) { firstTime=false; return; } */ - public double getTolerance() { - return tolerance; + double enthalpy = 0.0; + + logger.info("flow rate old in recycle " + outletStream.getFlowRate("kg/hr")); + SystemInterface thermoSystem2 = streams.get(0).getThermoSystem().clone(); + if (numberOfInputStreams == 1 && thermoSystem2.getFlowRate("kg/hr") < 1e-100) { + setError(0); + setErrorFlow(0); + return; } - - /** - *

- * Setter for the field tolerance. - *

- * - * @param tolerance the tolerance to set - */ - public void setTolerance(double tolerance) { - this.tolerance = tolerance; + mixedStream.setThermoSystem(thermoSystem2); + ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem2); + if (streams.size() > 1) { + mixedStream.getThermoSystem().setNumberOfPhases(2); + mixedStream.getThermoSystem().reInitPhaseType(); + mixedStream.getThermoSystem().init(0); + + mixStream(); + + setDownstreamProperties(); + try { + enthalpy = calcMixStreamEnthalpy(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return; + } + // logger.info("temp guess " + guessTemperature()); + mixedStream.getThermoSystem().setTemperature(guessTemperature()); + testOps.PHflash(enthalpy, 0); + // logger.info("filan temp " + mixedStream.getTemperature()); + } else { + setDownstreamProperties(); + testOps.TPflash(); } - - /** - *

- * Getter for the field error. - *

- * - * @return the error - */ - public double getError() { - return error; + mixedStream.setCalculationIdentifier(id); + setError(massBalanceCheck()); + setErrorFlow(massBalanceCheck2()); + logger.debug("comp recycle error: " + getError()); + logger.debug("flow recycle error: " + getErrorFlow()); + lastIterationStream = mixedStream.clone(); + outletStream.setThermoSystem(mixedStream.getThermoSystem()); + outletStream.setCalculationIdentifier(id); + logger.info( + "flow rate new in recycle " + outletStream.getFlowRate("kg/hr") + " iter " + iterations); + + // logger.info("enthalpy: " + + // mixedStream.getThermoSystem().getEnthalpy()); + // logger.info("enthalpy: " + enthalpy); + // logger.info("temperature: " + + // mixedStream.getThermoSystem().getTemperature()); + + // logger.info("beta " + mixedStream.getThermoSystem().getBeta()); + // outStream.setThermoSystem(mixedStream.getThermoSystem()); + setCalculationIdentifier(id); + } + + /** + *

+ * massBalanceCheck. + *

+ * + * @return a double + */ + public double massBalanceCheck2() { + double abs_sum_errorFlow = 0.0; + if (mixedStream.getFlowRate("kg/sec") < 1.0) { + abs_sum_errorFlow += + Math.abs(mixedStream.getFlowRate("kg/sec") - lastIterationStream.getFlowRate("kg/sec")); + } else { + abs_sum_errorFlow += + Math.abs(mixedStream.getFlowRate("kg/sec") - lastIterationStream.getFlowRate("kg/sec")) + / mixedStream.getFlowRate("kg/sec") * 100.0; } - /** - *

- * Setter for the field error. - *

- * - * @param error the error to set - */ - public void setError(double error) { - this.error = error; + return abs_sum_errorFlow; + } + + /** + *

+ * massBalanceCheck. + *

+ * + * @return a double + */ + public double massBalanceCheck() { + // logger.info("flow rate new " + + // mixedStream.getThermoSystem().getFlowRate("kg/hr")); + // logger.info("temperature " + + // mixedStream.getThermoSystem().getTemperature("C")); + // logger.info("pressure " + + // mixedStream.getThermoSystem().getPressure("bara")); + if (lastIterationStream.getFluid().getNumberOfComponents() != mixedStream.getFluid() + .getNumberOfComponents()) { + return 10.0; } - /** - *

- * Getter for the field priority. - *

- * - * @return a int - */ - public int getPriority() { - return priority; - } + double abs_sum_error = 0.0; + for (int i = 0; i < mixedStream.getThermoSystem().getPhase(0).getNumberOfComponents(); i++) { + // logger.info("x last " + + // lastIterationStream.getThermoSystem().getPhase(0).getComponent(i).getx()); + // logger.info("x new " + + // mixedStream.getThermoSystem().getPhase(0).getComponent(i).getx()); - /** - *

- * Setter for the field priority. - *

- * - * @param priority a int - */ - public void setPriority(int priority) { - this.priority = priority; + abs_sum_error += Math.abs(mixedStream.getThermoSystem().getPhase(0).getComponent(i).getx() + - lastIterationStream.getThermoSystem().getPhase(0).getComponent(i).getx()); } - /** {@inheritDoc} */ - @Override - public boolean solved() { - if (error < tolerance) - return true; - else - return false; - } + return abs_sum_error; + } - /** - *

- * Getter for the field downstreamProperty. - *

- * - * @return a {@link java.util.ArrayList} object - */ - public ArrayList getDownstreamProperty() { - return downstreamProperty; - } + /** {@inheritDoc} */ + @Override + public void displayResult() {} - /** - *

- * Setter for the field downstreamProperty. - *

- * - * @param upstreamProperty a {@link java.util.ArrayList} object - */ - public void setDownstreamProperty(ArrayList upstreamProperty) { - this.downstreamProperty = upstreamProperty; + /** {@inheritDoc} */ + @Override + public void setPressure(double pres) { + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().setPressure(pres); } - - /** - *

- * Getter for the field outletStream. - *

- * - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface getOutletStream() { - return outletStream; + mixedStream.getThermoSystem().setPressure(pres); + } + + /** + *

+ * setTemperature. + *

+ * + * @param temp a double + */ + public void setTemperature(double temp) { + for (int k = 0; k < streams.size(); k++) { + streams.get(k).getThermoSystem().setTemperature(temp); } - - /** - *

- * Setter for the field outletStream. - *

- * - * @param outletStream a - * {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public void setOutletStream(StreamInterface outletStream) { - this.outletStream = outletStream; - lastIterationStream = this.outletStream.clone(); + mixedStream.getThermoSystem().setTemperature(temp); + } + + /** + *

+ * Getter for the field tolerance. + *

+ * + * @return the tolerance + */ + public double getTolerance() { + return tolerance; + } + + /** + *

+ * Setter for the field tolerance. + *

+ * + * @param tolerance the tolerance to set + */ + public void setTolerance(double tolerance) { + this.tolerance = tolerance; + } + + /** + *

+ * Getter for the field error. + *

+ * + * @return the error + */ + public double getError() { + return error; + } + + /** + *

+ * Setter for the field error. + *

+ * + * @param error the error to set + */ + public void setError(double error) { + this.error = error; + } + + /** + *

+ * Setter for the field errorFlow. + *

+ * + * @param errorFlow the error to set + */ + public void setErrorFlow(double errorFlow) { + this.errorFlow = errorFlow; + } + + /** + *

+ * Getter for the field errorFlow. + *

+ * + * @return a double + */ + public double getErrorFlow() { + return errorFlow; + } + + /** + *

+ * Getter for the field priority. + *

+ * + * @return a int + */ + public int getPriority() { + return priority; + } + + /** + *

+ * Setter for the field priority. + *

+ * + * @param priority a int + */ + public void setPriority(int priority) { + this.priority = priority; + } + + /** {@inheritDoc} */ + @Override + public boolean solved() { + if (Math.abs(this.error) < tolerance && Math.abs(this.errorFlow) < flowAccuracy + && iterations > 1) { + return true; + } else { + return false; } + } + + /** + *

+ * Getter for the field downstreamProperty. + *

+ * + * @return a {@link java.util.ArrayList} object + */ + public ArrayList getDownstreamProperty() { + return downstreamProperty; + } + + /** {@inheritDoc} */ + @Override + public StreamInterface getOutletStream() { + return outletStream; + } + + /** + *

+ * Setter for the field outletStream. + *

+ * + * @param outletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public void setOutletStream(StreamInterface outletStream) { + this.outletStream = outletStream; + lastIterationStream = this.outletStream.clone(); + } + + /** {@inheritDoc} */ + @Override + public void removeInputStream(int i) { + streams.remove(i); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/RecycleController.java b/src/main/java/neqsim/processSimulation/processEquipment/util/RecycleController.java index a2e7b6d67d..6c43cc2f35 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/RecycleController.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/RecycleController.java @@ -12,210 +12,222 @@ * @version $Id: $Id */ public class RecycleController implements java.io.Serializable { - private static final long serialVersionUID = 1000; - - ArrayList recycleArray = new ArrayList(); - ArrayList priorityArray = new ArrayList(); - private int currentPriorityLevel = 100; - private int minimumPriorityLevel = 100; - private int maximumPriorityLevel = 100; - - /** - *

- * Constructor for RecycleController. - *

- */ - public RecycleController() {} - - /** - *

- * init. - *

- */ - public void init() { - for (Recycle recyc : recycleArray) { - if (recyc.getPriority() < minimumPriorityLevel) - minimumPriorityLevel = recyc.getPriority(); - if (recyc.getPriority() > maximumPriorityLevel) - maximumPriorityLevel = recyc.getPriority(); - } - - currentPriorityLevel = minimumPriorityLevel; - } - - /** - *

- * resetPriorityLevel. - *

- */ - public void resetPriorityLevel() { - currentPriorityLevel = minimumPriorityLevel; + private static final long serialVersionUID = 1000; + + ArrayList recycleArray = new ArrayList(); + ArrayList priorityArray = new ArrayList(); + private int currentPriorityLevel = 100; + private int minimumPriorityLevel = 100; + private int maximumPriorityLevel = 100; + + /** + *

+ * Constructor for RecycleController. + *

+ */ + public RecycleController() {} + + /** + *

+ * init. + *

+ */ + public void init() { + for (Recycle recyc : recycleArray) { + recyc.resetIterations(); + if (recyc.getPriority() < minimumPriorityLevel) { + minimumPriorityLevel = recyc.getPriority(); + } + if (recyc.getPriority() > maximumPriorityLevel) { + maximumPriorityLevel = recyc.getPriority(); + } } - /** - *

- * addRecycle. - *

- * - * @param recycle a {@link neqsim.processSimulation.processEquipment.util.Recycle} object - */ - public void addRecycle(Recycle recycle) { - recycleArray.add(recycle); - priorityArray.add(recycle.getPriority()); + currentPriorityLevel = minimumPriorityLevel; + } + + /** + *

+ * resetPriorityLevel. + *

+ */ + public void resetPriorityLevel() { + currentPriorityLevel = minimumPriorityLevel; + } + + /** + *

+ * addRecycle. + *

+ * + * @param recycle a {@link neqsim.processSimulation.processEquipment.util.Recycle} object + */ + public void addRecycle(Recycle recycle) { + recycleArray.add(recycle); + priorityArray.add(recycle.getPriority()); + } + + /** + *

+ * doSolveRecycle. + *

+ * + * @param recycle a {@link neqsim.processSimulation.processEquipment.util.Recycle} object + * @return a boolean + */ + public boolean doSolveRecycle(Recycle recycle) { + if (recycle.getPriority() == getCurrentPriorityLevel()) { + return true; + } else { + return false; } - - /** - *

- * doSolveRecycle. - *

- * - * @param recycle a {@link neqsim.processSimulation.processEquipment.util.Recycle} object - * @return a boolean - */ - public boolean doSolveRecycle(Recycle recycle) { - if (recycle.getPriority() == getCurrentPriorityLevel()) - return true; - else - return false; + } + + /** + *

+ * isHighestPriority. + *

+ * + * @param recycle a {@link neqsim.processSimulation.processEquipment.util.Recycle} object + * @return a boolean + */ + public boolean isHighestPriority(Recycle recycle) { + if (recycle.getPriority() == maximumPriorityLevel) { + return true; + } else { + return false; } - - /** - *

- * isHighestPriority. - *

- * - * @param recycle a {@link neqsim.processSimulation.processEquipment.util.Recycle} object - * @return a boolean - */ - public boolean isHighestPriority(Recycle recycle) { - if (recycle.getPriority() == maximumPriorityLevel) - return true; - else - return false; - } - - /** - *

- * solvedCurrentPriorityLevel. - *

- * - * @return a boolean - */ - public boolean solvedCurrentPriorityLevel() { - for (Recycle recyc : recycleArray) { - if (recyc.getPriority() == currentPriorityLevel) { - if (!recyc.solved()) - return false; - } + } + + /** + *

+ * solvedCurrentPriorityLevel. + *

+ * + * @return a boolean + */ + public boolean solvedCurrentPriorityLevel() { + for (Recycle recyc : recycleArray) { + if (recyc.getPriority() == currentPriorityLevel) { + if (!recyc.solved()) { + return false; } - return true; + } } - - /** - *

- * nextPriorityLevel. - *

- */ - public void nextPriorityLevel() { - currentPriorityLevel = maximumPriorityLevel; + return true; + } + + /** + *

+ * nextPriorityLevel. + *

+ */ + public void nextPriorityLevel() { + currentPriorityLevel = maximumPriorityLevel; + } + + /** + *

+ * hasLoverPriorityLevel. + *

+ * + * @return a boolean + */ + public boolean hasLoverPriorityLevel() { + if (currentPriorityLevel > minimumPriorityLevel) { + return true; + } else { + return false; } - - /** - *

- * hasLoverPriorityLevel. - *

- * - * @return a boolean - */ - public boolean hasLoverPriorityLevel() { - if (currentPriorityLevel > minimumPriorityLevel) { - return true; - } else - return false; + } + + /** + *

+ * hasHigherPriorityLevel. + *

+ * + * @return a boolean + */ + public boolean hasHigherPriorityLevel() { + if (currentPriorityLevel < maximumPriorityLevel) { + return true; + } else { + return false; } - - /** - *

- * hasHigherPriorityLevel. - *

- * - * @return a boolean - */ - public boolean hasHigherPriorityLevel() { - if (currentPriorityLevel < maximumPriorityLevel) { - return true; - } else - return false; + } + + /** + *

+ * solvedAll. + *

+ * + * @return a boolean + */ + public boolean solvedAll() { + for (Recycle recyc : recycleArray) { + if (!recyc.solved()) { + return false; + } } - - /** - *

- * solvedAll. - *

- * - * @return a boolean - */ - public boolean solvedAll() { - for (Recycle recyc : recycleArray) { - if (!recyc.solved()) - return false; - } - return true; - } - - /** - *

- * clear. - *

- */ - public void clear() { - recycleArray.clear(); - priorityArray.clear(); - } - - /** - *

- * Getter for the field currentPriorityLevel. - *

- * - * @return a int - */ - public int getCurrentPriorityLevel() { - return currentPriorityLevel; + return true; + } + + /** + *

+ * clear. + *

+ */ + public void clear() { + recycleArray.clear(); + priorityArray.clear(); + } + + /** + *

+ * Getter for the field currentPriorityLevel. + *

+ * + * @return a int + */ + public int getCurrentPriorityLevel() { + return currentPriorityLevel; + } + + /** + *

+ * Setter for the field currentPriorityLevel. + *

+ * + * @param currentPriorityLevel a int + */ + public void setCurrentPriorityLevel(int currentPriorityLevel) { + this.currentPriorityLevel = currentPriorityLevel; + } + + /** {@inheritDoc} */ + @Override + public int hashCode() { + return Objects.hash(currentPriorityLevel, maximumPriorityLevel, minimumPriorityLevel, + priorityArray, recycleArray); + } + + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; } - - /** - *

- * Setter for the field currentPriorityLevel. - *

- * - * @param currentPriorityLevel a int - */ - public void setCurrentPriorityLevel(int currentPriorityLevel) { - this.currentPriorityLevel = currentPriorityLevel; + if (obj == null) { + return false; } - - /** {@inheritDoc} */ - @Override - public int hashCode() { - return Objects.hash(currentPriorityLevel, maximumPriorityLevel, minimumPriorityLevel, - priorityArray, recycleArray); - } - - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - RecycleController other = (RecycleController) obj; - return currentPriorityLevel == other.currentPriorityLevel - && maximumPriorityLevel == other.maximumPriorityLevel - && minimumPriorityLevel == other.minimumPriorityLevel - && Objects.equals(priorityArray, other.priorityArray) - && Objects.equals(recycleArray, other.recycleArray); + if (getClass() != obj.getClass()) { + return false; } + RecycleController other = (RecycleController) obj; + return currentPriorityLevel == other.currentPriorityLevel + && maximumPriorityLevel == other.maximumPriorityLevel + && minimumPriorityLevel == other.minimumPriorityLevel + && Objects.equals(priorityArray, other.priorityArray) + && Objects.equals(recycleArray, other.recycleArray); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/SetPoint.java b/src/main/java/neqsim/processSimulation/processEquipment/util/SetPoint.java index 38af1984a3..6213a8d209 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/SetPoint.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/SetPoint.java @@ -1,8 +1,8 @@ package neqsim.processSimulation.processEquipment.util; +import java.util.UUID; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.stream.Stream; @@ -16,211 +16,217 @@ * @version $Id: $Id */ public class SetPoint extends ProcessEquipmentBaseClass { - private static final long serialVersionUID = 1000; - - ProcessEquipmentInterface sourceEquipment = null, targetEquipment = null; - String sourceVarialble = "", targetVariable = "", targetPhase = "", targetComponent = ""; - double targetValue = 0.0; - String targetUnit = ""; - double inputValue = 0.0, oldInputValue = 0.0; - - static Logger logger = LogManager.getLogger(SetPoint.class); - - /** - *

- * Constructor for SetPoint. - *

- */ - @Deprecated - public SetPoint() { - this("SetPoint"); - } - - /** - *

- * Constructor for SetPoint. - *

- * - * @param name a {@link java.lang.String} object - */ - public SetPoint(String name) { - super(name); - } - - /** - *

- * Constructor for SetPoint. - *

- * - * @param name a {@link java.lang.String} object - * @param targetEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - * @param targetVariable a {@link java.lang.String} object - * @param sourceEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - */ - public SetPoint(String name, ProcessEquipmentInterface targetEquipment, String targetVariable, - ProcessEquipmentInterface sourceEquipment) { - this(name); - this.targetEquipment = targetEquipment; - this.targetVariable = targetVariable; - this.sourceEquipment = sourceEquipment; - run(); - } - - /** - *

- * setSourceVariable. - *

- * - * @param adjustedEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - * @param adjstedVariable a {@link java.lang.String} object - */ - public void setSourceVariable(ProcessEquipmentInterface adjustedEquipment, - String adjstedVariable) { - this.sourceEquipment = adjustedEquipment; - this.sourceVarialble = adjstedVariable; - } - - /** - *

- * setSourceVariable. - *

- * - * @param adjustedEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - */ - public void setSourceVariable(ProcessEquipmentInterface adjustedEquipment) { - this.sourceEquipment = adjustedEquipment; - } - - /** - *

- * Setter for the field targetVariable. - *

- * - * @param targetEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - * @param targetVariable a {@link java.lang.String} object - * @param targetValue a double - * @param targetUnit a {@link java.lang.String} object - */ - public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, - double targetValue, String targetUnit) { - this.targetEquipment = targetEquipment; - this.targetVariable = targetVariable; - this.targetValue = targetValue; - this.targetUnit = targetUnit; - } - - /** - *

- * Setter for the field targetVariable. - *

- * - * @param targetEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - * @param targetVariable a {@link java.lang.String} object - */ - public void setTargetVariable(ProcessEquipmentInterface targetEquipment, - String targetVariable) { - this.targetEquipment = targetEquipment; - this.targetVariable = targetVariable; - } - - /** - *

- * Setter for the field targetVariable. - *

- * - * @param targetEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - * @param targetVariable a {@link java.lang.String} object - * @param targetValue a double - * @param targetUnit a {@link java.lang.String} object - * @param targetPhase a {@link java.lang.String} object - */ - public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, - double targetValue, String targetUnit, String targetPhase) { - this.targetEquipment = targetEquipment; - this.targetVariable = targetVariable; - this.targetValue = targetValue; - this.targetUnit = targetUnit; - this.targetPhase = targetPhase; - } - - /** - *

- * Setter for the field targetVariable. - *

- * - * @param targetEquipment a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - * @param targetVariable a {@link java.lang.String} object - * @param targetValue a double - * @param targetUnit a {@link java.lang.String} object - * @param targetPhase a {@link java.lang.String} object - * @param targetComponent a {@link java.lang.String} object - */ - public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, - double targetValue, String targetUnit, String targetPhase, String targetComponent) { - this.targetEquipment = targetEquipment; - this.targetVariable = targetVariable; - this.targetValue = targetValue; - this.targetUnit = targetUnit; - this.targetPhase = targetPhase; - this.targetComponent = targetComponent; - } - - /** {@inheritDoc} */ - @Override - public void run() { - if (targetVariable.equals("pressure")) { - targetEquipment.setPressure(sourceEquipment.getPressure()); - } else { - inputValue = ((Stream) sourceEquipment).getThermoSystem().getNumberOfMoles(); - - double targetValueCurrent = - ((Stream) targetEquipment).getThermoSystem().getVolume(targetUnit); - - double deviation = targetValue - targetValueCurrent; - - logger.info("adjuster deviation " + deviation + " inputValue " + inputValue); - - oldInputValue = inputValue; - } - } - - /** {@inheritDoc} */ - @Override - public void displayResult() {} - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // test code for adjuster... - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 20.00); - testSystem.addComponent("methane", 1000.00); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - - Stream stream_1 = new Stream("Stream1", testSystem); - SetPoint adjuster1 = new SetPoint(); - adjuster1.setSourceVariable(stream_1, "molarFlow"); - adjuster1.setTargetVariable(stream_1, "gasVolumeFlow", 10.0, "", "MSm3/day"); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(adjuster1); - - operations.run(); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SetPoint.class); + + ProcessEquipmentInterface sourceEquipment = null; + ProcessEquipmentInterface targetEquipment = null; + + String sourceVariable = ""; + String targetVariable = ""; + String targetPhase = ""; + String targetComponent = ""; + + double targetValue = 0.0; + String targetUnit = ""; + double inputValue = 0.0; + double oldInputValue = 0.0; + + /** + *

+ * Constructor for SetPoint. + *

+ */ + @Deprecated + public SetPoint() { + this("SetPoint"); + } + + /** + *

+ * Constructor for SetPoint. + *

+ * + * @param name a {@link java.lang.String} object + */ + public SetPoint(String name) { + super(name); + } + + /** + *

+ * Constructor for SetPoint. + *

+ * + * @param name a {@link java.lang.String} object + * @param targetEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param targetVariable a {@link java.lang.String} object + * @param sourceEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + */ + public SetPoint(String name, ProcessEquipmentInterface targetEquipment, String targetVariable, + ProcessEquipmentInterface sourceEquipment) { + this(name); + this.targetEquipment = targetEquipment; + this.targetVariable = targetVariable; + this.sourceEquipment = sourceEquipment; + // run(); + } + + /** + *

+ * setSourceVariable. + *

+ * + * @param adjustedEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param adjstedVariable a {@link java.lang.String} object + */ + public void setSourceVariable(ProcessEquipmentInterface adjustedEquipment, + String adjstedVariable) { + this.sourceEquipment = adjustedEquipment; + this.sourceVariable = adjstedVariable; + } + + /** + *

+ * setSourceVariable. + *

+ * + * @param adjustedEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + */ + public void setSourceVariable(ProcessEquipmentInterface adjustedEquipment) { + this.sourceEquipment = adjustedEquipment; + } + + /** + *

+ * Setter for the field targetVariable. + *

+ * + * @param targetEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param targetVariable a {@link java.lang.String} object + * @param targetValue a double + * @param targetUnit a {@link java.lang.String} object + */ + public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, + double targetValue, String targetUnit) { + this.targetEquipment = targetEquipment; + this.targetVariable = targetVariable; + this.targetValue = targetValue; + this.targetUnit = targetUnit; + } + + /** + *

+ * Setter for the field targetVariable. + *

+ * + * @param targetEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param targetVariable a {@link java.lang.String} object + */ + public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable) { + this.targetEquipment = targetEquipment; + this.targetVariable = targetVariable; + } + + /** + *

+ * Setter for the field targetVariable. + *

+ * + * @param targetEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param targetVariable a {@link java.lang.String} object + * @param targetValue a double + * @param targetUnit a {@link java.lang.String} object + * @param targetPhase a {@link java.lang.String} object + */ + public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, + double targetValue, String targetUnit, String targetPhase) { + this.targetEquipment = targetEquipment; + this.targetVariable = targetVariable; + this.targetValue = targetValue; + this.targetUnit = targetUnit; + this.targetPhase = targetPhase; + } + + /** + *

+ * Setter for the field targetVariable. + *

+ * + * @param targetEquipment a + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object + * @param targetVariable a {@link java.lang.String} object + * @param targetValue a double + * @param targetUnit a {@link java.lang.String} object + * @param targetPhase a {@link java.lang.String} object + * @param targetComponent a {@link java.lang.String} object + */ + public void setTargetVariable(ProcessEquipmentInterface targetEquipment, String targetVariable, + double targetValue, String targetUnit, String targetPhase, String targetComponent) { + this.targetEquipment = targetEquipment; + this.targetVariable = targetVariable; + this.targetValue = targetValue; + this.targetUnit = targetUnit; + this.targetPhase = targetPhase; + this.targetComponent = targetComponent; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (targetVariable.equals("pressure")) { + targetEquipment.setPressure(sourceEquipment.getPressure()); + } else { + inputValue = ((Stream) sourceEquipment).getThermoSystem().getNumberOfMoles(); + + double targetValueCurrent = + ((Stream) targetEquipment).getThermoSystem().getVolume(targetUnit); + + double deviation = targetValue - targetValueCurrent; + + logger.info("adjuster deviation " + deviation + " inputValue " + inputValue); + + oldInputValue = inputValue; } + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() {} + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // test code for adjuster... + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 20.00); + testSystem.addComponent("methane", 1000.00); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + + Stream stream_1 = new Stream("Stream1", testSystem); + SetPoint adjuster1 = new SetPoint(); + adjuster1.setSourceVariable(stream_1, "molarFlow"); + adjuster1.setTargetVariable(stream_1, "gasVolumeFlow", 10.0, "", "MSm3/day"); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(adjuster1); + + operations.run(); + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtil.java b/src/main/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtil.java index ddc8e6cfd3..2ef35764ff 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtil.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtil.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.util; +import java.util.UUID; import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; @@ -19,6 +20,9 @@ public class StreamSaturatorUtil extends TwoPortEquipment { SystemInterface thermoSystem; private boolean multiPhase = true; + private double approachToSaturation = 1.0; + + protected double oldInletFlowRate = 0.0; /** *

@@ -35,7 +39,7 @@ public StreamSaturatorUtil(StreamInterface inletStream) { /** * Constructor for StreamSaturatorUtil. - * + * * @param name name of unit opeation * @param inStream input stream */ @@ -45,13 +49,13 @@ public StreamSaturatorUtil(String name, StreamInterface inStream) { } /** + * {@inheritDoc} + * *

* Setter for the field inletStream. *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object */ + @Override public void setInletStream(StreamInterface inletStream) { this.inStream = inletStream; @@ -61,8 +65,25 @@ public void setInletStream(StreamInterface inletStream) { /** {@inheritDoc} */ @Override - public void run() { + public boolean needRecalculation() { + if (outStream == null || inStream == null) { + return true; + } + if (inStream.getTemperature() == outStream.getTemperature() + && inStream.getPressure() == outStream.getPressure() + && Math.abs(inStream.getFlowRate("kg/hr") - oldInletFlowRate) + / inStream.getFlowRate("kg/hr") < 1e-3) { + return false; + } else { + return true; + } + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { boolean changeBack = false; + thermoSystem = inStream.getThermoSystem().clone(); if (multiPhase && !thermoSystem.doMultiPhaseCheck()) { thermoSystem.setMultiPhaseCheck(true); @@ -70,11 +91,25 @@ public void run() { } ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); thermoOps.saturateWithWater(); + + if (thermoSystem.getPhase(0).hasComponent("water") && approachToSaturation < 1.0) { + try { + thermoSystem.addComponent("water", + -thermoSystem.getComponent("water").getNumberOfmoles() * (1.0 - approachToSaturation)); + thermoOps.TPflash(); + } catch (Exception e) { + e.printStackTrace(); + } + } + thermoSystem.init(3); if (changeBack) { thermoSystem.setMultiPhaseCheck(false); } + outStream.setThermoSystem(thermoSystem); + oldInletFlowRate = inStream.getFlowRate("kg/hr"); + setCalculationIdentifier(id); } /** @@ -98,4 +133,15 @@ public boolean isMultiPhase() { public void setMultiPhase(boolean multiPhase) { this.multiPhase = multiPhase; } + + /** + *

+ * setApprachToSaturation. + *

+ * + * @param approachToSaturation a double + */ + public void setApprachToSaturation(double approachToSaturation) { + this.approachToSaturation = approachToSaturation; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/util/StreamTransition.java b/src/main/java/neqsim/processSimulation/processEquipment/util/StreamTransition.java index f135fd68ad..4120ebf089 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/util/StreamTransition.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/util/StreamTransition.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.processEquipment.util; +import java.util.UUID; + import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.processSimulation.processSystem.ProcessSystem; @@ -60,7 +62,7 @@ public StreamTransition(String name, StreamInterface inletStream, StreamInterfac /** {@inheritDoc} */ @Override - public void run() { + public void run(UUID id) { SystemInterface outThermoSystem = null; if (outStream != null) { outThermoSystem = outStream.getFluid().clone(); @@ -82,7 +84,8 @@ public void run() { // fluid1.setTemperature(fluid2.getTemperature()); // fluid1.setPressure(fluid2.getPressure()); outStream.setThermoSystem(outThermoSystem); - outStream.run(); + outStream.run(id); + setCalculationIdentifier(id); } /** {@inheritDoc} */ @@ -105,12 +108,14 @@ public static void main(String[] args) { new StreamTransition((StreamInterface) offshoreProcessoperations.getUnit("rich gas"), (StreamInterface) TEGprocess.getUnit("dry feed gas")); - offshoreProcessoperations.run(); - trans.run(); + UUID id = UUID.randomUUID(); + + offshoreProcessoperations.run(id); + trans.run(id); ((StreamInterface) offshoreProcessoperations.getUnit("rich gas")).displayResult(); // ((StreamInterface) TEGprocess.getUnit("dry feed gas")).displayResult(); trans.displayResult(); - TEGprocess.run(); + TEGprocess.run(id); ((StreamInterface) TEGprocess.getUnit("dry feed gas")).displayResult(); // ((StreamInterface) TEGprocess.getUnit("dry feed gas")).displayResult(); diff --git a/src/main/java/neqsim/processSimulation/processEquipment/valve/SafetyValve.java b/src/main/java/neqsim/processSimulation/processEquipment/valve/SafetyValve.java index 0e01aabead..a9360349fc 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/valve/SafetyValve.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/valve/SafetyValve.java @@ -11,96 +11,96 @@ * @version $Id: $Id */ public class SafetyValve extends ThrottlingValve { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - private double pressureSpec = 10.0; - private double fullOpenPressure = 10.0; + private double pressureSpec = 10.0; + private double fullOpenPressure = 10.0; - /** - *

- * Constructor for SafetyValve. - *

- */ - @Deprecated - public SafetyValve() { - this("SafetyValve"); - } + /** + *

+ * Constructor for SafetyValve. + *

+ */ + @Deprecated + public SafetyValve() { + this("SafetyValve"); + } - /** - *

- * Constructor for SafetyValve. - *

- * - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - @Deprecated - public SafetyValve(StreamInterface inletStream) { - this("SafetyValve", inletStream); - } + /** + *

+ * Constructor for SafetyValve. + *

+ * + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + @Deprecated + public SafetyValve(StreamInterface inletStream) { + this("SafetyValve", inletStream); + } - /** - * Constructor for SafetyValve. - * - * @param name name of valve - */ - public SafetyValve(String name) { - super(name); - } + /** + * Constructor for SafetyValve. + * + * @param name name of valve + */ + public SafetyValve(String name) { + super(name); + } - /** - *

- * Constructor for SafetyValve. - *

- * - * @param name a {@link java.lang.String} object - * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object - */ - public SafetyValve(String name, StreamInterface inletStream) { - super(name, inletStream); - } + /** + *

+ * Constructor for SafetyValve. + *

+ * + * @param name a {@link java.lang.String} object + * @param inletStream a {@link neqsim.processSimulation.processEquipment.stream.Stream} object + */ + public SafetyValve(String name, StreamInterface inletStream) { + super(name, inletStream); + } - /** - *

- * Getter for the field pressureSpec. - *

- * - * @return the pressureSpec - */ - public double getPressureSpec() { - return pressureSpec; - } + /** + *

+ * Getter for the field pressureSpec. + *

+ * + * @return the pressureSpec + */ + public double getPressureSpec() { + return pressureSpec; + } - /** - *

- * Setter for the field pressureSpec. - *

- * - * @param pressureSpec the pressureSpec to set - */ - public void setPressureSpec(double pressureSpec) { - this.pressureSpec = pressureSpec; - } + /** + *

+ * Setter for the field pressureSpec. + *

+ * + * @param pressureSpec the pressureSpec to set + */ + public void setPressureSpec(double pressureSpec) { + this.pressureSpec = pressureSpec; + } - /** - *

- * Getter for the field fullOpenPressure. - *

- * - * @return the fullOpenPressure - */ - public double getFullOpenPressure() { - return fullOpenPressure; - } + /** + *

+ * Getter for the field fullOpenPressure. + *

+ * + * @return the fullOpenPressure + */ + public double getFullOpenPressure() { + return fullOpenPressure; + } - /** - *

- * Setter for the field fullOpenPressure. - *

- * - * @param fullOpenPressure the fullOpenPressure to set - */ - public void setFullOpenPressure(double fullOpenPressure) { - this.fullOpenPressure = fullOpenPressure; - } + /** + *

+ * Setter for the field fullOpenPressure. + *

+ * + * @param fullOpenPressure the fullOpenPressure to set + */ + public void setFullOpenPressure(double fullOpenPressure) { + this.fullOpenPressure = fullOpenPressure; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java b/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java index e3a0c71a9b..e3b1d606b3 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValve.java @@ -1,7 +1,14 @@ package neqsim.processSimulation.processEquipment.valve; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import com.google.gson.GsonBuilder; +import neqsim.processSimulation.mechanicalDesign.valve.ValveMechanicalDesign; import neqsim.processSimulation.processEquipment.TwoPortEquipment; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.util.monitor.ValveResponse; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -15,18 +22,27 @@ */ public class ThrottlingValve extends TwoPortEquipment implements ValveInterface { private static final long serialVersionUID = 1000; - - protected String name = new String(); - private boolean valveCvSet = false, isoThermal = false; + static Logger logger = LogManager.getLogger(ThrottlingValve.class); SystemInterface thermoSystem; + + private boolean valveCvSet = false; + + private boolean isoThermal = false; + double pressure = 0.0; - private double Cv = 1.0; + private double Cv; private double maxMolarFlow = 1000.0; private double minMolarFlow = 0.0; + private double maxValveOpening = 100.0; + private double minValveOpening = 0.0; private double percentValveOpening = 100.0; double molarFlow = 0.0; private String pressureUnit = "bara"; private boolean acceptNegativeDP = true; + ValveMechanicalDesign valveMechanicalDesign; + boolean isCalcPressure = false; + private boolean gasValve = true; + private double Fp = 1.0; /** *

@@ -53,7 +69,7 @@ public ThrottlingValve(StreamInterface inletStream) { /** * * Constructor for ThrottlingValve. - * + * * @param name name of valve */ public ThrottlingValve(String name) { @@ -154,16 +170,312 @@ public void setOutletPressure(double pressure, String unit) { /** {@inheritDoc} */ @Override - public void run() { + public boolean needRecalculation() { + if (getInletStream().getThermoSystem().getTemperature() == thermoSystem.getTemperature() + && getInletStream().getThermoSystem().getPressure() == thermoSystem.getPressure() + && getInletStream().getThermoSystem().getFlowRate("kg/hr") == thermoSystem + .getFlowRate("kg/hr") + && getOutletPressure() == getOutletStream().getPressure()) { + return false; + } else { + return true; + } + } + + /** + * Adjusts the flow coefficient (Cv) based on the percentage valve opening. + * + * @param Cv Flow coefficient in US gallons per minute (USG/min). + * @param percentValveOpening Percentage valve opening (0 to 100). + * @return Adjusted flow coefficient (Cv) in US gallons per minute (USG/min). + */ + private static double adjustCv(double Cv, double percentValveOpening) { + return Cv * (percentValveOpening / 100); + } + + /** + * Calculates the mass flow rate through a control valve for a liquid based on the given + * parameters. + * + * @param P1 Upstream pressure in bar. + * @param P2 Downstream pressure in bar. + * @param rho Density of the fluid in kilograms per cubic meter (kg/m³). + * @param Cv Flow coefficient in US gallons per minute (USG/min). + * @param Fp Piping geometry factor (dimensionless). + * @param percentValveOpening Percentage valve opening (0 to 100). + * @return Mass flow rate in kilograms per hour (kg/h). + */ + public static double liquidValveMassFlow(double P1, double P2, double rho, double Cv, double Fp, + double percentValveOpening) { + // Equation unit conversion constant + final double N1 = 0.0865; + + // Convert pressures from bar to Pascals directly in the code + double P1Pa = P1 * 100000; + double P2Pa = P2 * 100000; + + // Adjust Cv based on the percentage valve opening + double adjustedCv = adjustCv(Cv, percentValveOpening); + + // Clip Cv value to be non-negative + double clippedCv = Math.max(adjustedCv, 0); + // Calculate pressure difference and clip to be non-negative + double deltaP = Math.max(P1Pa - P2Pa, 0); + // Calculate mass flow rate + double massFlowRate = clippedCv * N1 * Fp * Math.sqrt(deltaP * rho); + + return massFlowRate; + } + + /** + * Calculates the percent valve opening given the mass flow rate through a valve, upstream + * pressure (P1), downstream pressure (P2), fluid density (rho), flow coefficient (Cv), and piping + * geometry factor (Fp). + * + * @param massFlowRate The mass flow rate through the valve in kg/hr. + * @param P1 The upstream pressure in bar. + * @param P2 The downstream pressure in bar. + * @param rho The density of the fluid in kilograms per cubic meter (kg/m³). + * @param Cv The flow coefficient of the valve in US gallons per minute (USG/min). + * @param Fp The piping geometry factor (dimensionless). + * @return The percent valve opening. + */ + public static double calcPercentValveOpeningLiquid(double massFlowRate, double P1, double P2, + double rho, double Cv, double Fp) { + // Equation unit conversion constant + final double N1 = 0.0865; + + // Convert pressures from bar to Pascals directly in the code + double P1Pa = P1 * 100000; + double P2Pa = P2 * 100000; + + // Calculate pressure difference and clip to be non-negative + double deltaP = Math.max(P1Pa - P2Pa, 0); + + // Calculate the denominator part of the equation + double denominator = Cv * N1 * Fp * Math.sqrt(deltaP * rho); + + // Calculate percent valve opening + double percentValveOpening = (massFlowRate / denominator) * 100; + + return percentValveOpening; + } + + /** + * Calculates the downstream pressure (P2) through a control valve for a liquid based on the given + * parameters. + * + * @param P1 Upstream pressure in bar. + * @param m Mass flow rate in kilograms per hour (kg/h). + * @param rho Density of the fluid in kilograms per cubic meter (kg/m³). + * @param Cv Flow coefficient in US gallons per minute (USG/min). + * @param Fp Piping geometry factor (dimensionless). + * @param percentValveOpening Percentage valve opening (0 to 100). + * @return Downstream pressure in bar. + */ + public static double liquidValvePout(double P1, double m, double rho, double Cv, double Fp, + double percentValveOpening) { + // Equation unit conversion constant + final double N1 = 0.0865; + + // Convert upstream pressure from bar to Pascals directly in the code + double P1Pa = P1 * 100000; + + // Adjust Cv based on the percentage valve opening + double adjustedCv = adjustCv(Cv, percentValveOpening); + + // Clip Cv value to be non-negative + double clippedCv = Math.max(adjustedCv, 0); + // Calculate deltaP from mass flow rate + double deltaP = Math.pow(m / (clippedCv * N1 * Fp), 2) / rho; + // Calculate downstream pressure + double P2Pa = P1Pa - deltaP; + + // Ensure downstream pressure is non-negative + P2Pa = Math.max(P2Pa, 0); + + // Convert downstream pressure from Pascals to bar directly in the code + return P2Pa / 100000; + } + + /** + * Calculates the flow coefficient (Cv) of a control valve for a liquid based on the given + * parameters. + * + * @param P1 Upstream pressure in bar. + * @param P2 Downstream pressure in bar. + * @param rho Density of the fluid in kilograms per cubic meter (kg/m³). + * @param m Mass flow rate in kilograms per hour (kg/h). + * @param Fp Piping geometry factor (dimensionless). + * @param percentValveOpening Percentage valve opening (0 to 100). + * @return Flow coefficient (Cv) in US gallons per minute (USG/min). + */ + public static double liquidValveCv(double P1, double P2, double rho, double m, double Fp, + double percentValveOpening) { + // Equation unit conversion constant + final double N1 = 0.0865; + + // Convert pressures from bar to Pascals directly in the code + double P1Pa = P1 * 100000; + double P2Pa = P2 * 100000; + + // Calculate pressure difference and clip to be non-negative + double deltaP = Math.max(P1Pa - P2Pa, 0); + // Calculate flow coefficient + double Cv = m / (N1 * Fp * Math.sqrt(deltaP * rho)); + + // Adjust Cv based on the percentage valve opening + return Cv / (percentValveOpening / 100); + } + + /** + * Calculates the mass flow rate through a valve given the upstream pressure (Pus), downstream + * pressure (Pds), fluid density (rhous), and flow coefficient (Cv). + * + *

+ * The calculation is based on the formula for mass flow through a valve. + *

+ * + * @param Pus The upstream pressure (Pus) in bara. + * @param Pds The downstream pressure (Pds) in bara. + * @param rhous The density of the fluid upstream of the valve in kg/m^3. + * @param Cv The flow coefficient of the valve. + * @param percentValveOpening Opening of valve in % + * @return The mass flow rate through the valve in kg/hr. + */ + public double calcmassflow(double Pus, double Pds, double rhous, double Cv, + double percentValveOpening) { + // Sine of 3417 / 30.0 + double sineFactor = Math.sin(3417 / 30.0); + + // Calculate the mass flow rate + double massFlowRate = 0.0457 * Math.sqrt(Pus * 100.0 * rhous) * sineFactor + * Math.sqrt((Pus - Pds) / Pus) * Cv * percentValveOpening / 100.0; + return massFlowRate; + } + + /** + * Calculates the downstream pressure (Pds) of a valve given the upstream pressure (Pus), fluid + * density (rhous), flow coefficient (Cv), mass flow rate, and the percent valve opening. + * + * The calculation is based on the formula for mass flow through a valve, rearranged to solve for + * Pds. + * + * @param Pus The upstream pressure (Pus) in bara. + * @param rhous The density of the fluid upstream of the valve in kg/m^3. + * @param Cv The flow coefficient of the valve. + * @param massFlowRate The mass flow rate through the valve in kg/hr. + * @param percentValveOpening Opening of valve in % + * @return The downstream pressure (Pds) in bara. + */ + public double calcValvePout(double Pus, double rhous, double Cv, double massFlowRate, + double percentValveOpening) { + // Sine of 3417 / 30.0 + double sineFactor = Math.sin(3417 / 30.0); + + // Calculate the term that involves the mass flow rate, Cv, and percent valve opening + double flowTerm = (massFlowRate / (0.0457 * Math.sqrt(Pus * 100.0 * rhous) * sineFactor * Cv + * (percentValveOpening / 100.0))); + + // Square the flowTerm to eliminate the square root + double flowTermSquared = flowTerm * flowTerm; + + // Calculate Pds + double Pds = Pus * (1 - flowTermSquared); + + return Pds; + } + + /** + * Calculates the flow coefficient (Cv) of a valve given the upstream pressure (Pus), downstream + * pressure (Pds), fluid density (rhous), mass flow rate, and the percent valve opening. + * + * The calculation is based on the formula for mass flow through a valve, rearranged to solve for + * Cv. + * + * @param Pus The upstream pressure (Pus) in bara. + * @param Pds The downstream pressure (Pds) in bara. + * @param rhous The density of the fluid upstream of the valve in kg/m^3. + * @param massFlowRate The mass flow rate through the valve in kg/hr. + * @param percentValveOpening Opening of valve in % + * @return The flow coefficient (Cv) of the valve. + */ + public double calcCv(double Pus, double Pds, double rhous, double massFlowRate, + double percentValveOpening) { + // Sine of 3417 / 30.0 + double sineFactor = Math.sin(3417 / 30.0); + + // Calculate Cv + double Cv = massFlowRate / (0.0457 * Math.sqrt(Pus * 100.0 * rhous) * sineFactor + * Math.sqrt((Pus - Pds) / Pus) * percentValveOpening / 100.0); + + return Cv; + } + + /** + * Calculates the percent valve opening given the upstream pressure (Pus), downstream pressure + * (Pds), fluid density (rhous), flow coefficient (Cv), and mass flow rate. + * + * The calculation is based on the formula for mass flow through a valve, rearranged to solve for + * percent valve opening. + * + * @param Pus The upstream pressure (Pus) in bara. + * @param Pds The downstream pressure (Pds) in bara. + * @param rhous The density of the fluid upstream of the valve in kg/m^3. + * @param Cv The flow coefficient of the valve. + * @param massFlowRate The mass flow rate through the valve in kg/hr. + * @return The percent valve opening. + */ + public double calcPercentValveOpening(double Pus, double Pds, double rhous, double Cv, + double massFlowRate) { + // Sine of 3417 / 30.0 + double sineFactor = Math.sin(3417 / 30.0); + + // Calculate the term that involves the mass flow rate, Pus, rhous, and Cv + double term = massFlowRate / (0.0457 * Math.sqrt(Pus * 100 * rhous) * sineFactor * Cv); + + // Calculate the percent valve opening + double percentValveOpening = term / Math.sqrt(1 - (Pds / Pus)) * 100.0; + + return percentValveOpening; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { // System.out.println("valve running.."); // outStream.setSpecification(inletStream.getSpecification()); thermoSystem = getInletStream().getThermoSystem().clone(); ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); thermoSystem.init(3); double enthalpy = thermoSystem.getEnthalpy(); + inStream.getThermoSystem().initPhysicalProperties("density"); + double outp = 0.0; + + if (inStream.getThermoSystem().hasPhaseType(PhaseType.GAS) + && inStream.getThermoSystem().getVolumeFraction(0) > 0.9) { + setGasValve(true); + } else { + setGasValve(false); + } + + if (valveCvSet && isCalcPressure) { + if (gasValve) { + outp = calcValvePout(inStream.getThermoSystem().getPressure(), + inStream.getThermoSystem().getDensity("kg/m3"), Cv, inStream.getFlowRate("kg/hr"), + percentValveOpening); + } else { + outp = + liquidValvePout(inStream.getThermoSystem().getPressure(), inStream.getFlowRate("kg/hr"), + inStream.getThermoSystem().getDensity("kg/m3"), Cv, Fp, percentValveOpening); + } + setOutletPressure(outp); + } + if ((thermoSystem.getPressure(pressureUnit) - pressure) < 0) { - if (isAcceptNegativeDP()) + if (isAcceptNegativeDP()) { thermoSystem.setPressure(pressure, pressureUnit); + } } else { thermoSystem.setPressure(pressure, pressureUnit); } @@ -173,7 +485,8 @@ public void run() { } // System.out.println("enthalpy inn.." + enthalpy); // thermoOps.PHflash(enthalpy, 0); - if (isIsoThermal() || Math.abs(pressure - inStream.getThermoSystem().getPressure()) < 1e-6) { + if (isIsoThermal() || Math.abs(pressure - inStream.getThermoSystem().getPressure()) < 1e-6 + || thermoSystem.getNumberOfMoles() < 1e-12) { thermoOps.TPflash(); } else { thermoOps.PHflash(enthalpy, 0); @@ -185,31 +498,58 @@ public void run() { // inletStream.getThermoSystem().getDensity()); if (!valveCvSet) { - Cv = inStream.getThermoSystem().getTotalNumberOfMoles() / (getPercentValveOpening() / 100.0 - * Math.sqrt( - (inStream.getThermoSystem().getPressure() - outStream.getThermoSystem().getPressure()) - / thermoSystem.getDensity())); + // If valve CV is not set, calculate it from inletstream flow, percent opening + // and + // differential pressure over valve. + if (gasValve) { + Cv = calcCv(inStream.getThermoSystem().getPressure(), + outStream.getThermoSystem().getPressure(), inStream.getFluid().getDensity("kg/m3"), + inStream.getFlowRate("kg/hr"), percentValveOpening); + } else { + Cv = liquidValveCv(inStream.getThermoSystem().getPressure(), + outStream.getThermoSystem().getPressure(), inStream.getFluid().getDensity("kg/m3"), + inStream.getFlowRate("kg/hr"), Fp, percentValveOpening); + } + valveCvSet = true; + } + if (gasValve) { + percentValveOpening = calcPercentValveOpening(inStream.getThermoSystem().getPressure(), + outStream.getThermoSystem().getPressure(), inStream.getFluid().getDensity("kg/m3"), Cv, + inStream.getFlowRate("kg/hr")); + + } else { + percentValveOpening = calcPercentValveOpeningLiquid(inStream.getFlowRate("kg/hr"), + inStream.getThermoSystem().getPressure(), outStream.getThermoSystem().getPressure(), + inStream.getFluid().getDensity("kg/m3"), Cv, Fp); + } + + if (gasValve) { + molarFlow = calcmassflow(inStream.getThermoSystem().getPressure(), + outStream.getThermoSystem().getPressure(), inStream.getFluid().getDensity("kg/m3"), Cv, + percentValveOpening) / 3600.0 / inStream.getFluid().getMolarMass("kg/mol"); + } else { + molarFlow = liquidValveMassFlow(inStream.getThermoSystem().getPressure(), + outStream.getThermoSystem().getPressure(), inStream.getFluid().getDensity("kg/m3"), Cv, + Fp, percentValveOpening) / 3600.0 / inStream.getFluid().getMolarMass("kg/mol"); } - molarFlow = getCv() * getPercentValveOpening() / 100.0 - * Math.sqrt( - (inStream.getThermoSystem().getPressure() - outStream.getThermoSystem().getPressure()) - / thermoSystem.getDensity()); + if (Math.abs(pressure - inStream.getThermoSystem().getPressure()) < 1e-6) { molarFlow = inStream.getThermoSystem().getTotalNumberOfMoles(); } - // System.out.println("molar flow " + molarFlow); - inStream.getThermoSystem().setTotalNumberOfMoles(molarFlow); - inStream.getThermoSystem().init(3); - // inletStream.run(); + try { + inStream.getThermoSystem().setTotalNumberOfMoles(molarFlow); + inStream.getThermoSystem().init(3); + } catch (Exception e) { + logger.error(e.getMessage()); + } + // inletStream.run(id); outStream.setThermoSystem(thermoSystem.clone()); outStream.getThermoSystem().setTotalNumberOfMoles(molarFlow); outStream.getThermoSystem().init(3); - // outStream.run(); - // Cv = - // inletStream.getThermoSystem().getTotalNumberOfMoles()/Math.sqrt(inletStream.getPressure()-outStream.getPressure()); - // molarFlow = inletStream.getThermoSystem().getTotalNumberOfMoles(); + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); } /** {@inheritDoc} */ @@ -226,13 +566,14 @@ public String[][] getResultTable() { /** {@inheritDoc} */ @Override - public void runTransient(double dt) { + public void runTransient(double dt, UUID id) { if (getCalculateSteadyState()) { - run(); + run(id); + increaseTime(dt); return; } - runController(dt); + runController(dt, id); thermoSystem = inStream.getThermoSystem().clone(); ThermodynamicOperations thermoOps = new ThermodynamicOperations(thermoSystem); @@ -248,33 +589,32 @@ public void runTransient(double dt) { } thermoSystem.initPhysicalProperties("density"); outStream.setThermoSystem(thermoSystem); - // if(getPercentValveOpening()<99){ - molarFlow = getCv() * getPercentValveOpening() / 100.0 - * Math.sqrt( - (inStream.getThermoSystem().getPressure() - outStream.getThermoSystem().getPressure()) - / thermoSystem.getDensity()); - // System.out.println("molar flow " + molarFlow); - // System.out.println("Cv " + getCv()); - // System.out.println("density " + inletStream.getThermoSystem().getDensity()); - - // 8 } else { - // molarFlow=inletStream.getThermoSystem().getTotalNumberOfMoles(); - // } - - inStream.getThermoSystem().setTotalNumberOfMoles(molarFlow); - inStream.getThermoSystem().init(1); - inStream.run(); - outStream.getThermoSystem().setTotalNumberOfMoles(molarFlow); - outStream.getThermoSystem().init(1); - outStream.run(); + if (gasValve) { + molarFlow = calcmassflow(inStream.getThermoSystem().getPressure(), + outStream.getThermoSystem().getPressure(), inStream.getFluid().getDensity("kg/m3"), Cv, + percentValveOpening) / 3600.0 / inStream.getFluid().getMolarMass("kg/mol"); + } else { + molarFlow = liquidValveMassFlow(inStream.getThermoSystem().getPressure(), + outStream.getThermoSystem().getPressure(), inStream.getFluid().getDensity("kg/m3"), Cv, + Fp, percentValveOpening) / 3600.0 / inStream.getFluid().getMolarMass("kg/mol"); + } - // System.out.println("delta p valve " + - // (inletStream.getThermoSystem().getPressure() - - // outStream.getThermoSystem().getPressure())); - // System.out.println("total molar flow out " + molarFlow); - // System.out.println("Total volume flow " + - // outStream.getThermoSystem().getVolume()); + try { + inStream.getThermoSystem().setTotalNumberOfMoles(molarFlow); + inStream.getThermoSystem().init(1); + inStream.run(id); + } catch (Exception e) { + logger.error(e.getMessage()); + } + try { + outStream.getThermoSystem().setTotalNumberOfMoles(molarFlow); + outStream.getThermoSystem().init(1); + outStream.run(id); + } catch (Exception e) { + logger.error(e.getMessage()); + } + setCalculationIdentifier(id); } /** @@ -283,19 +623,32 @@ public void runTransient(double dt) { *

* * @param dt a double + * @param id Calculation identifier */ - public void runController(double dt) { - if (hasController) { - getController().runTransient(this.percentValveOpening, dt); + public void runController(double dt, UUID id) { + if (hasController && getController().isActive()) { + getController().runTransient(this.percentValveOpening, dt, id); this.percentValveOpening = getController().getResponse(); - if (this.percentValveOpening > 100) { - this.percentValveOpening = 100; + if (this.percentValveOpening > maxValveOpening) { + this.percentValveOpening = maxValveOpening; } - if (this.percentValveOpening < 0) { - this.percentValveOpening = 1e-10; + if (this.percentValveOpening < minValveOpening) { + this.percentValveOpening = minValveOpening; } // System.out.println("valve opening " + this.percentValveOpening + " %"); } + setCalculationIdentifier(id); + } + + /** + *

+ * setMinimumValveOpening. + *

+ * + * @param minopen a double + */ + public void setMinimumValveOpening(double minopen) { + minValveOpening = minopen; } /** {@inheritDoc} */ @@ -306,8 +659,29 @@ public double getCv() { /** {@inheritDoc} */ @Override - public void setCv(double Cv) { - this.Cv = Cv; + public double getCv(String unit) { + if (unit.equals("US")) { + return Cv / 54.9; + } else { + return Cv; + } + } + + /** {@inheritDoc} */ + @Override + public void setCv(double cv) { + this.Cv = cv; + valveCvSet = true; + } + + /** {@inheritDoc} */ + @Override + public void setCv(double cv, String unit) { + if (unit.equals("US")) { + this.Cv = cv * 54.9; + } else { + this.Cv = cv; + } valveCvSet = true; } @@ -396,4 +770,77 @@ public boolean isAcceptNegativeDP() { public void setAcceptNegativeDP(boolean acceptNegativeDP) { this.acceptNegativeDP = acceptNegativeDP; } + + /** {@inheritDoc} */ + @Override + public void initMechanicalDesign() { + valveMechanicalDesign = new ValveMechanicalDesign(this); + } + + /** {@inheritDoc} */ + @Override + public ValveMechanicalDesign getMechanicalDesign() { + return valveMechanicalDesign; + } + + /** + *

+ * setIsCalcOutPressure. + *

+ * + * @param isSetPres a boolean + */ + public void setIsCalcOutPressure(boolean isSetPres) { + isCalcPressure = isSetPres; + } + + /** {@inheritDoc} */ + @Override + public String toJson() { + return new GsonBuilder().create().toJson(new ValveResponse(this)); + } + + /** + *

+ * isGasValve. + *

+ * + * @return a boolean + */ + public boolean isGasValve() { + return gasValve; + } + + /** + *

+ * Setter for the field gasValve. + *

+ * + * @param gasValve a boolean + */ + public void setGasValve(boolean gasValve) { + this.gasValve = gasValve; + } + + /** + *

+ * getFp. + *

+ * + * @return a double + */ + public double getFp() { + return Fp; + } + + /** + *

+ * setFp. + *

+ * + * @param fp a double + */ + public void setFp(double fp) { + Fp = fp; + } } diff --git a/src/main/java/neqsim/processSimulation/processEquipment/valve/ValveInterface.java b/src/main/java/neqsim/processSimulation/processEquipment/valve/ValveInterface.java index b2a6b8e42e..9de6989699 100644 --- a/src/main/java/neqsim/processSimulation/processEquipment/valve/ValveInterface.java +++ b/src/main/java/neqsim/processSimulation/processEquipment/valve/ValveInterface.java @@ -3,6 +3,7 @@ * * Created on 22. august 2001, 17:20 */ + package neqsim.processSimulation.processEquipment.valve; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; @@ -18,62 +19,81 @@ * @version $Id: $Id */ public interface ValveInterface extends ProcessEquipmentInterface, TwoPortInterface { - /** - *

- * isIsoThermal. - *

- * - * @return a boolean - */ - public boolean isIsoThermal(); + /** + *

+ * isIsoThermal. + *

+ * + * @return a boolean + */ + public boolean isIsoThermal(); + + /** + *

+ * setIsoThermal. + *

+ * + * @param isoThermal a boolean + */ + public void setIsoThermal(boolean isoThermal); - /** - *

- * setIsoThermal. - *

- * - * @param isoThermal a boolean - */ - public void setIsoThermal(boolean isoThermal); + /** + *

+ * getPercentValveOpening. + *

+ * + * @return a double + */ + public double getPercentValveOpening(); - /** - *

- * getPercentValveOpening. - *

- * - * @return a double - */ - public double getPercentValveOpening(); + /** + *

+ * setPercentValveOpening. + *

+ * + * @param percentValveOpening a double + */ + public void setPercentValveOpening(double percentValveOpening); - /** - *

- * setPercentValveOpening. - *

- * - * @param percentValveOpening a double - */ - public void setPercentValveOpening(double percentValveOpening); + /** + *

+ * getCv. + *

+ * + * @return a double + */ + public double getCv(); - /** - *

- * getCv. - *

- * - * @return a double - */ - public double getCv(); + /** + *

+ * getCv. + *

+ * + * @param unit can be SI or US SI is unit litre/minute US is gallons per minute + * @return a double + */ + public double getCv(String unit); - /** - *

- * setCv. - *

- * - * @param Cv a double - */ - public void setCv(double Cv); + /** + *

+ * setCv. + *

+ * + * @param Cv a double + */ + public void setCv(double Cv); + /** + *

+ * setCv. + *

+ * + * @param Cv a double + * @param unit can be SI or US SI is unit litre/minute US is gallons per minute + */ + public void setCv(double Cv, String unit); - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem(); + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem(); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/ModuleInterface.java b/src/main/java/neqsim/processSimulation/processSystem/ModuleInterface.java index 90f6b9b0c2..0e188c5cb6 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/ModuleInterface.java +++ b/src/main/java/neqsim/processSimulation/processSystem/ModuleInterface.java @@ -3,6 +3,7 @@ * * Created on 1. november 2006, 21:48 */ + package neqsim.processSimulation.processSystem; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; @@ -17,104 +18,102 @@ * @version $Id: $Id */ public interface ModuleInterface extends ProcessEquipmentInterface { - /** - *

- * getOperations. - *

- * - * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object - */ - public neqsim.processSimulation.processSystem.ProcessSystem getOperations(); - - /** - *

- * addInputStream. - *

- * - * @param streamName a {@link java.lang.String} object - * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} - * object - */ - public void addInputStream(String streamName, StreamInterface stream); + /** + *

+ * getOperations. + *

+ * + * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public neqsim.processSimulation.processSystem.ProcessSystem getOperations(); - /** - *

- * getOutputStream. - *

- * - * @param streamName a {@link java.lang.String} object - * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamInterface getOutputStream(String streamName); + /** + *

+ * addInputStream. + *

+ * + * @param streamName a {@link java.lang.String} object + * @param stream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public void addInputStream(String streamName, StreamInterface stream); - /** - *

- * getPreferedThermodynamicModel. - *

- * - * @return a {@link java.lang.String} object - */ - public String getPreferedThermodynamicModel(); + /** + *

+ * getOutputStream. + *

+ * + * @param streamName a {@link java.lang.String} object + * @return a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object + */ + public StreamInterface getOutputStream(String streamName); - /** - *

- * setPreferedThermodynamicModel. - *

- * - * @param preferedThermodynamicModel a {@link java.lang.String} object - */ - public void setPreferedThermodynamicModel(String preferedThermodynamicModel); + /** + *

+ * getPreferedThermodynamicModel. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getPreferedThermodynamicModel(); + /** + *

+ * setPreferedThermodynamicModel. + *

+ * + * @param preferedThermodynamicModel a {@link java.lang.String} object + */ + public void setPreferedThermodynamicModel(String preferedThermodynamicModel); - /** - *

- * initializeStreams. - *

- */ - public void initializeStreams(); + /** + *

+ * initializeStreams. + *

+ */ + public void initializeStreams(); - /** - *

- * initializeModule. - *

- */ - public void initializeModule(); + /** + *

+ * initializeModule. + *

+ */ + public void initializeModule(); - /** - *

- * setIsCalcDesign. - *

- * - * @param isCalcDesign a boolean - */ - public void setIsCalcDesign(boolean isCalcDesign); + /** + *

+ * setIsCalcDesign. + *

+ * + * @param isCalcDesign a boolean + */ + public void setIsCalcDesign(boolean isCalcDesign); - /** - *

- * isCalcDesign. - *

- * - * @return a boolean - */ - public boolean isCalcDesign(); + /** + *

+ * isCalcDesign. + *

+ * + * @return a boolean + */ + public boolean isCalcDesign(); - /** - *

- * getUnit. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link java.lang.Object} object - */ - public Object getUnit(String name); + /** + *

+ * getUnit. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link java.lang.Object} object + */ + public Object getUnit(String name); - /** - *

- * setProperty. - *

- * - * @param propertyName a {@link java.lang.String} object - * @param value a double - */ - public void setProperty(String propertyName, double value); + /** + *

+ * setProperty. + *

+ * + * @param propertyName a {@link java.lang.String} object + * @param value a double + */ + public void setProperty(String propertyName, double value); } diff --git a/src/main/java/neqsim/processSimulation/processSystem/ProcessModule.java b/src/main/java/neqsim/processSimulation/processSystem/ProcessModule.java new file mode 100644 index 0000000000..4c9cf560bb --- /dev/null +++ b/src/main/java/neqsim/processSimulation/processSystem/ProcessModule.java @@ -0,0 +1,273 @@ +package neqsim.processSimulation.processSystem; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import org.apache.commons.lang.SerializationUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.processSimulation.SimulationBaseClass; +import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; +import neqsim.processSimulation.processEquipment.util.Recycle; +import neqsim.processSimulation.util.report.Report; + +/** + * A class representing a process module class that can contain unit operations and other modules. + * Module will be runnning until all recycles in this module are solved. If no recycle in the module + * then run only once. + * + * @author [seros] + * @version 1.0 + */ +public class ProcessModule extends SimulationBaseClass { + private static final long serialVersionUID = 1000; + private static final Logger logger = LogManager.getLogger(ProcessModule.class); + + private int unitIndex = 0; + + private final List recycleModules = new ArrayList<>(); + + private List addedUnitOperations = new ArrayList<>(); + private List operationsIndex = new ArrayList<>(); + + private List addedModules = new ArrayList<>(); + private List modulesIndex = new ArrayList<>(); + + private boolean solved = false; + + /** + * Default constructor that sets the name to "Default Module Name". + */ + public ProcessModule() { + this("Default Module Name"); + } + + /** + * Constructor that takes a name as a parameter. + * + * @param name the name of the process module + */ + public ProcessModule(String name) { + super(name); + } + + /** + * Add an unit operation to the process module. + * + * @param processSystem the process system that contains the unit operations to be added. + */ + public void add(ProcessSystem processSystem) { + addedUnitOperations.add(processSystem); + operationsIndex.add(unitIndex++); + } + + /** + * Add a process module to the process module. + * + * @param module the process module to be added + */ + public void add(ProcessModule module) { + addedModules.add(module); + modulesIndex.add(unitIndex++); + } + + /** + * Get the list of added unit operations. + * + * @return the list of added unit operations + */ + public List getAddedUnitOperations() { + return addedUnitOperations; + } + + /** + * Get the list of operations index. The operations index is used to follow the correct order of + * calculations. + * + * @return the list of operations index + */ + public List getOperationsIndex() { + return operationsIndex; + } + + /** + * Get the list of added process modules. + * + * @return the list of added process modules + */ + public List getAddedModules() { + return addedModules; + } + + /** + * Get the list of module index. The module index is used to follow the correct order of + * calculations. + * + * @return the list of module index + */ + public List getModulesIndex() { + return modulesIndex; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + logger.info("Running module " + getName()); + checkModulesRecycles(); + int iteration = 0; + do { + for (int i = 0; i < unitIndex; i++) { + if (operationsIndex.contains(i)) { + int index = operationsIndex.indexOf(i); + for (ProcessEquipmentInterface unitOperation : addedUnitOperations.get(index) + .getUnitOperations()) { + if (iteration == 0 || unitOperation.needRecalculation()) { + unitOperation.run(id); + } + } + } else if (modulesIndex.contains(i)) { + int index = modulesIndex.indexOf(i); + addedModules.get(index).run(id); + } + } + iteration++; + logger.info("Iteration : " + iteration + " module : " + getName() + " "); + } while (!recyclesSolved() && iteration <= 100); + logger.info("Finished running module " + getName()); + solved = true; + } + + /** + * Adds all recycle operations from addedUnitOperations to recycleModules list. + */ + public void checkModulesRecycles() { + for (ProcessSystem operation : addedUnitOperations) { + for (ProcessEquipmentInterface unitOperation : operation.getUnitOperations()) { + if (unitOperation instanceof Recycle) { + recycleModules.add(unitOperation); + } + } + } + } + + /** + * Checks if all recycle operations in recycleModules are solved. + * + * @return true if all recycle operations are solved, false otherwise + */ + public boolean recyclesSolved() { + for (ProcessEquipmentInterface recycle : recycleModules) { + if (!recycle.solved()) { + return false; + } + } + return true; + } + + /** {@inheritDoc} */ + + @Override + public boolean solved() { + return solved; + } + + /** + *

+ * runAsThread. + *

+ * + * @return a {@link java.lang.Thread} object + */ + public Thread runAsThread() { + Thread processThread = new Thread(this); + processThread.start(); + return processThread; + } + + /** + * Returns the unit with the given name from the list of added unit operations and list of added + * modules. + * + * @param name the name of the unit to retrieve + * @return the unit with the given name, or {@code null} if no such unit is found + */ + public Object getUnit(String name) { + for (ProcessSystem processSystem : addedUnitOperations) { + Object unit = processSystem.getUnit(name); + if (unit != null) { + return unit; + } + } + + for (ProcessModule processModule : addedModules) { + Object unit = processModule.getUnit(name); + if (unit != null) { + return unit; + } + } + return null; // no unit found with the given name + } + + /** + * Returns the unit with the given name from the list of added unit operations and list of added + * modules. + * + * @param name the name of the unit to retrieve + * @return the unit with the given name, or {@code null} if no such unit is found + */ + public Object getMeasurementDevice(String name) { + for (ProcessSystem processSystem : addedUnitOperations) { + Object unit = processSystem.getMeasurementDevice(name); + if (unit != null) { + return unit; + } + } + + for (ProcessModule processModule : addedModules) { + Object unit = processModule.getMeasurementDevice(name); + if (unit != null) { + return unit; + } + } + return null; // no unit found with the given name + } + + /** + *

+ * Create deep copy. + *

+ * + * @return a {@link neqsim.processSimulation.processSystem.ProcessModule} object + */ + public ProcessModule copy() { + byte[] bytes = SerializationUtils.serialize(this); + ProcessModule copyModule = (ProcessModule) SerializationUtils.deserialize(bytes); + return copyModule; + } + + /** + *

+ * getReport. + *

+ * + * @return a {@link java.util.ArrayList} object + */ + public ArrayList getReport() { + return null; + } + + /** + * {@inheritDoc} + * + * @return a String + */ + public String getReport_json() { + return new Report(this).generateJsonReport(); + } + + /** {@inheritDoc} */ + @Override + public void run_step(UUID id) { + run(id); + } +} diff --git a/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java b/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java index ca3360a858..7768f7d79d 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java +++ b/src/main/java/neqsim/processSimulation/processSystem/ProcessModuleBaseClass.java @@ -3,12 +3,15 @@ * * Created on 1. november 2006, 22:07 */ + package neqsim.processSimulation.processSystem; +import java.util.UUID; import neqsim.processSimulation.SimulationBaseClass; import neqsim.processSimulation.controllerDevice.ControllerDeviceInterface; import neqsim.processSimulation.mechanicalDesign.MechanicalDesign; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; +import neqsim.processSimulation.util.report.Report; import neqsim.thermo.system.SystemInterface; /** @@ -24,11 +27,20 @@ public abstract class ProcessModuleBaseClass extends SimulationBaseClass private static final long serialVersionUID = 1000; protected String preferedThermodynamicModel = ""; - protected boolean isInitializedModule = false, isInitializedStreams = false; + protected boolean isInitializedModule = false; + protected boolean isInitializedStreams = false; + private boolean isCalcDesign = false; private neqsim.processSimulation.processSystem.ProcessSystem operations = new neqsim.processSimulation.processSystem.ProcessSystem(); + /** + *

+ * Constructor for ProcessModuleBaseClass. + *

+ * + * @param name a {@link java.lang.String} object + */ public ProcessModuleBaseClass(String name) { super(name); } @@ -111,8 +123,8 @@ public neqsim.processSimulation.processSystem.ProcessSystem getOperations() { /** {@inheritDoc} */ @Override - public void runTransient(double dt) { - getOperations().runTransient(dt); + public void runTransient(double dt, UUID id) { + getOperations().runTransient(dt, id); } // TODO: Check if all the equipment is solved correctly @@ -128,6 +140,12 @@ public SystemInterface getThermoSystem() { return null; } + /** {@inheritDoc} */ + @Override + public String getSpecification() { + return null; + } + /** *

* setSpecification. @@ -138,12 +156,6 @@ public SystemInterface getThermoSystem() { */ public void setSpecification(String specificationName, double value) {} - /** {@inheritDoc} */ - @Override - public String getSpecification() { - return null; - } - /** {@inheritDoc} */ @Override public void setSpecification(String specification) {} @@ -209,14 +221,40 @@ public String getConditionAnalysisMessage() { return null; } + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } + /** + * {@inheritDoc} + * *

- * getResultTable. + * getPressure. *

- * - * @return an array of {@link java.lang.String} objects */ - public String[][] getResultTable() { + @Override + public double getPressure(String unit) { + return 1.0; + } + + /** {@inheritDoc} */ + @Override + public String toJson() { return null; } + + /** + * {@inheritDoc} + * + * @return a String + */ + public String getReport_json() { + return new Report(this).generateJsonReport(); + } + + /** {@inheritDoc} */ + @Override + public void run_step(UUID id) {} } diff --git a/src/main/java/neqsim/processSimulation/processSystem/ProcessSystem.java b/src/main/java/neqsim/processSimulation/processSystem/ProcessSystem.java index bfa98b1a47..d78d526234 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/ProcessSystem.java +++ b/src/main/java/neqsim/processSimulation/processSystem/ProcessSystem.java @@ -7,18 +7,18 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; +import java.util.UUID; import org.apache.commons.lang.SerializationUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.processSimulation.SimulationBaseClass; import neqsim.processSimulation.conditionMonitor.ConditionMonitor; -import neqsim.processSimulation.costEstimation.CostEstimateBaseClass; import neqsim.processSimulation.measurementDevice.MeasurementDeviceInterface; -import neqsim.processSimulation.mechanicalDesign.SystemMechanicalDesign; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.util.Recycle; import neqsim.processSimulation.processEquipment.util.RecycleController; +import neqsim.processSimulation.util.report.Report; import neqsim.thermo.system.SystemInterface; /** @@ -30,920 +30,959 @@ * @version $Id: $Id */ public class ProcessSystem extends SimulationBaseClass { - private static final long serialVersionUID = 1000; - - transient Thread thisThread; - String[][] signalDB = new String[1000][100]; - private double time = 0; - private double surroundingTemperature = 288.15; - private int timeStepNumber = 0; - private ArrayList unitOperations = - new ArrayList(0); - ArrayList measurementDevices = - new ArrayList(0); - RecycleController recycleController = new RecycleController(); - private double timeStep = 1.0; - static Logger logger = LogManager.getLogger(ProcessSystem.class); - - /** - *

- * Constructor for ProcessSystem. - *

- */ - public ProcessSystem() { - this("Process system"); - } - - /** - * Constructor for ProcessSystem. - * - * @param name name of process - */ - public ProcessSystem(String name) { - super(name); - } - - /** - *

- * add. - *

- * - * @param operation a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} object - */ - public void add(ProcessEquipmentInterface operation) { - ArrayList units = this.getUnitOperations(); - - for (ProcessEquipmentInterface unit : units) { - if (unit == operation) { - return; - } - } - - if (getAllUnitNames().contains(operation.getName())) { - String currClass = operation.getClass().getSimpleName(); - int num = 1; - for (ProcessEquipmentInterface unit : units) { - if (unit.getClass().getSimpleName().equals(currClass)) { - num++; - } - } - operation.setName(currClass + Integer.toString(num)); - } - - getUnitOperations().add(operation); - if (operation instanceof ModuleInterface) { - ((ModuleInterface) operation).initializeModule(); - } - } - - /** - *

- * add. - *

- * - * @param measurementDevice a - * {@link neqsim.processSimulation.measurementDevice.MeasurementDeviceInterface} object - */ - public void add(MeasurementDeviceInterface measurementDevice) { - measurementDevices.add(measurementDevice); - } - - /** - *

- * add. - *

- * - * @param operations an array of - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} objects - */ - public void add(ProcessEquipmentInterface[] operations) { - getUnitOperations().addAll(Arrays.asList(operations)); - } - - /** - *

- * getUnit. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link java.lang.Object} object - */ - public Object getUnit(String name) { - for (int i = 0; i < getUnitOperations().size(); i++) { - if (getUnitOperations().get(i) instanceof ModuleInterface) { - for (int j = 0; j < ((ModuleInterface) getUnitOperations().get(i)).getOperations() - .getUnitOperations().size(); j++) { - if (((ModuleInterface) getUnitOperations().get(i)).getOperations() - .getUnitOperations().get(j).getName().equals(name)) { - return ((ModuleInterface) getUnitOperations().get(i)).getOperations() - .getUnitOperations().get(j); - } - } - } else if (getUnitOperations().get(i).getName().equals(name)) { - return getUnitOperations().get(i); - } - } - return null; - } - - /** - *

- * hasUnitName. - *

- * - * @param name a {@link java.lang.String} object - * @return a boolean - */ - public boolean hasUnitName(String name) { - if (getUnit(name) == null) { - return false; - } else { - return true; - } - } - - /** - *

- * getMeasurementDevice. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link java.lang.Object} object - */ - public Object getMeasurementDevice(String name) { - for (int i = 0; i < measurementDevices.size(); i++) { - if (measurementDevices.get(i).getName().equals(name)) { - return measurementDevices.get(i); - } - } - return null; - } - - /** - *

- * getUnitNumber. - *

- * - * @param name a {@link java.lang.String} object - * @return a int - */ - public int getUnitNumber(String name) { - for (int i = 0; i < getUnitOperations().size(); i++) { - if (getUnitOperations().get(i) instanceof ModuleInterface) { - for (int j = 0; j < ((ModuleInterface) getUnitOperations().get(i)).getOperations() - .getUnitOperations().size(); j++) { - if (((ModuleInterface) getUnitOperations().get(i)).getOperations() - .getUnitOperations().get(j).getName().equals(name)) { - return j; - } - } - } else if (getUnitOperations().get(i).getName().equals(name)) { - return i; - } - } - return 0; - } - - /** - *

- * replaceObject. - *

- * - * @param unitName a {@link java.lang.String} object - * @param operation a - * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass} object - */ - public void replaceObject(String unitName, ProcessEquipmentBaseClass operation) { - unitOperations.set(getUnitNumber(name), operation); - } - - /** - *

- * getAllUnitNames. - *

- * - * @return a {@link java.util.ArrayList} object - */ - public ArrayList getAllUnitNames() { - ArrayList unitNames = new ArrayList(); - for (int i = 0; i < getUnitOperations().size(); i++) { - if (getUnitOperations().get(i) instanceof ModuleInterface) { - for (int j = 0; j < ((ModuleInterface) getUnitOperations().get(i)).getOperations() - .getUnitOperations().size(); j++) { - unitNames.add(((ModuleInterface) getUnitOperations().get(i)).getOperations() - .getUnitOperations().get(j).getName()); - } - } - unitNames.add(unitOperations.get(i).getName()); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ProcessSystem.class); + + transient Thread thisThread; + String[][] signalDB = new String[10000][100]; + private double surroundingTemperature = 288.15; + private int timeStepNumber = 0; + private ArrayList unitOperations = + new ArrayList(0); + ArrayList measurementDevices = + new ArrayList(0); + RecycleController recycleController = new RecycleController(); + private double timeStep = 1.0; + + /** + *

+ * Constructor for ProcessSystem. + *

+ */ + public ProcessSystem() { + this("Process system"); + } + + /** + * Constructor for ProcessSystem. + * + * @param name name of process + */ + public ProcessSystem(String name) { + super(name); + } + + /** + *

+ * add. + *

+ * + * @param operation a {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} + * object + */ + public void add(ProcessEquipmentInterface operation) { + ArrayList units = this.getUnitOperations(); + + for (ProcessEquipmentInterface unit : units) { + if (unit == operation) { + return; + } + } + + if (getAllUnitNames().contains(operation.getName())) { + String currClass = operation.getClass().getSimpleName(); + int num = 1; + for (ProcessEquipmentInterface unit : units) { + if (unit.getClass().getSimpleName().equals(currClass)) { + num++; } - return unitNames; - } - - /** - *

- * Getter for the field unitOperations. - *

- * - * @return the unitOperations - */ - public ArrayList getUnitOperations() { - return unitOperations; - } - - /** - *

- * removeUnit. - *

- * - * @param name a {@link java.lang.String} object - */ - public void removeUnit(String name) { - for (int i = 0; i < unitOperations.size(); i++) { - if (unitOperations.get(i).getName().equals(name)) { - unitOperations.remove(i); - } + } + operation.setName(currClass + Integer.toString(num)); + } + + getUnitOperations().add(operation); + if (operation instanceof ModuleInterface) { + ((ModuleInterface) operation).initializeModule(); + } + } + + /** + *

+ * add. + *

+ * + * @param position a int + * @param operation a {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} + * object + */ + public void add(int position, ProcessEquipmentInterface operation) { + ArrayList units = this.getUnitOperations(); + + for (ProcessEquipmentInterface unit : units) { + if (unit == operation) { + return; + } + } + + if (getAllUnitNames().contains(operation.getName())) { + String currClass = operation.getClass().getSimpleName(); + int num = 1; + for (ProcessEquipmentInterface unit : units) { + if (unit.getClass().getSimpleName().equals(currClass)) { + num++; } - } - - /** - *

- * clearAll. - *

- */ - public void clearAll() { - unitOperations = new ArrayList(0); - } - - /** - *

- * clear. - *

- */ - public void clear() { - unitOperations = new ArrayList(0); - } - - /** - *

- * setFluid. - *

- * - * @param fluid1 a {@link neqsim.thermo.system.SystemInterface} object - * @param fluid2 a {@link neqsim.thermo.system.SystemInterface} object - * @param addNewComponents a boolean - */ - public void setFluid(SystemInterface fluid1, SystemInterface fluid2, boolean addNewComponents) { - fluid1.setEmptyFluid(); - boolean addedComps = false; - for (int i = 0; i < fluid2.getNumberOfComponents(); i++) { - if (fluid1.getPhase(0).hasComponent(fluid2.getComponent(i).getName())) { - fluid1.addComponent(fluid2.getComponent(i).getName(), - fluid2.getComponent(i).getNumberOfmoles()); - } else { - if (addNewComponents) { - addedComps = true; - if (fluid2.getComponent(i).isIsTBPfraction() - || fluid2.getComponent(i).isIsPlusFraction()) { - fluid1.addTBPfraction(fluid2.getComponent(i).getName(), - fluid2.getComponent(i).getNumberOfmoles(), - fluid2.getComponent(i).getMolarMass(), - fluid2.getComponent(i).getNormalLiquidDensity()); - } else { - fluid1.addComponent(fluid2.getComponent(i).getName(), - fluid2.getComponent(i).getNumberOfmoles()); - } - } - } + } + operation.setName(currClass + Integer.toString(num)); + } + + getUnitOperations().add(position, operation); + if (operation instanceof ModuleInterface) { + ((ModuleInterface) operation).initializeModule(); + } + } + + /** + *

+ * add. + *

+ * + * @param measurementDevice a + * {@link neqsim.processSimulation.measurementDevice.MeasurementDeviceInterface} object + */ + public void add(MeasurementDeviceInterface measurementDevice) { + measurementDevices.add(measurementDevice); + } + + /** + *

+ * add. + *

+ * + * @param operations an array of + * {@link neqsim.processSimulation.processEquipment.ProcessEquipmentInterface} objects + */ + public void add(ProcessEquipmentInterface[] operations) { + getUnitOperations().addAll(Arrays.asList(operations)); + } + + /** + *

+ * getUnit. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link java.lang.Object} object + */ + public Object getUnit(String name) { + for (int i = 0; i < getUnitOperations().size(); i++) { + if (getUnitOperations().get(i) instanceof ModuleInterface) { + for (int j = 0; j < ((ModuleInterface) getUnitOperations().get(i)).getOperations() + .getUnitOperations().size(); j++) { + if (((ModuleInterface) getUnitOperations().get(i)).getOperations().getUnitOperations() + .get(j).getName().equals(name)) { + return ((ModuleInterface) getUnitOperations().get(i)).getOperations() + .getUnitOperations().get(j); + } } - if (addedComps) { - fluid1.createDatabase(true); + } else if (getUnitOperations().get(i).getName().equals(name)) { + return getUnitOperations().get(i); + } + } + return null; + } + + /** + *

+ * hasUnitName. + *

+ * + * @param name a {@link java.lang.String} object + * @return a boolean + */ + public boolean hasUnitName(String name) { + if (getUnit(name) == null) { + return false; + } else { + return true; + } + } + + /** + *

+ * getMeasurementDevice. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.processSimulation.measurementDevice.MeasurementDeviceInterface} object + */ + public MeasurementDeviceInterface getMeasurementDevice(String name) { + for (int i = 0; i < measurementDevices.size(); i++) { + if (measurementDevices.get(i).getName().equals(name)) { + return measurementDevices.get(i); + } + } + return null; + } + + /** + *

+ * getUnitNumber. + *

+ * + * @param name a {@link java.lang.String} object + * @return a int + */ + public int getUnitNumber(String name) { + for (int i = 0; i < getUnitOperations().size(); i++) { + if (getUnitOperations().get(i) instanceof ModuleInterface) { + for (int j = 0; j < ((ModuleInterface) getUnitOperations().get(i)).getOperations() + .getUnitOperations().size(); j++) { + if (((ModuleInterface) getUnitOperations().get(i)).getOperations().getUnitOperations() + .get(j).getName().equals(name)) { + return j; + } } - fluid1.init(0); - fluid1.setTemperature(fluid2.getTemperature()); - fluid1.setPressure(fluid2.getPressure()); - } - - /** - *

- * setFluid. - *

- * - * @param fluid1 a {@link neqsim.thermo.system.SystemInterface} object - * @param fluid2 a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setFluid(SystemInterface fluid1, SystemInterface fluid2) { - fluid1.setEmptyFluid(); - boolean addedComps = false; - for (int i = 0; i < fluid2.getNumberOfComponents(); i++) { - if (fluid1.getPhase(0).hasComponent(fluid2.getComponent(i).getName())) { - fluid1.addComponent(fluid2.getComponent(i).getName(), - fluid2.getComponent(i).getNumberOfmoles()); - } else { - addedComps = true; - if (fluid2.getComponent(i).isIsTBPfraction() - || fluid2.getComponent(i).isIsPlusFraction()) { - fluid1.addTBPfraction(fluid2.getComponent(i).getName(), - fluid2.getComponent(i).getNumberOfmoles(), - fluid2.getComponent(i).getMolarMass(), - fluid2.getComponent(i).getNormalLiquidDensity()); - } else { - fluid1.addComponent(fluid2.getComponent(i).getName(), - fluid2.getComponent(i).getNumberOfmoles()); - } - } + } else if (getUnitOperations().get(i).getName().equals(name)) { + return i; + } + } + return 0; + } + + /** + *

+ * replaceObject. + *

+ * + * @param unitName a {@link java.lang.String} object + * @param operation a {@link neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass} + * object + */ + public void replaceObject(String unitName, ProcessEquipmentBaseClass operation) { + unitOperations.set(getUnitNumber(name), operation); + } + + /** + *

+ * getAllUnitNames. + *

+ * + * @return a {@link java.util.ArrayList} object + */ + public ArrayList getAllUnitNames() { + ArrayList unitNames = new ArrayList(); + for (int i = 0; i < getUnitOperations().size(); i++) { + if (getUnitOperations().get(i) instanceof ModuleInterface) { + for (int j = 0; j < ((ModuleInterface) getUnitOperations().get(i)).getOperations() + .getUnitOperations().size(); j++) { + unitNames.add(((ModuleInterface) getUnitOperations().get(i)).getOperations() + .getUnitOperations().get(j).getName()); } - if (addedComps) { - fluid1.createDatabase(true); + } + unitNames.add(unitOperations.get(i).getName()); + } + return unitNames; + } + + /** + *

+ * Getter for the field unitOperations. + *

+ * + * @return the unitOperations + */ + public ArrayList getUnitOperations() { + return unitOperations; + } + + /** + *

+ * removeUnit. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void removeUnit(String name) { + for (int i = 0; i < unitOperations.size(); i++) { + if (unitOperations.get(i).getName().equals(name)) { + unitOperations.remove(i); + } + } + } + + /** + *

+ * clearAll. + *

+ */ + public void clearAll() { + unitOperations = new ArrayList(0); + } + + /** + *

+ * clear. + *

+ */ + public void clear() { + unitOperations = new ArrayList(0); + } + + /** + *

+ * setFluid. + *

+ * + * @param fluid1 a {@link neqsim.thermo.system.SystemInterface} object + * @param fluid2 a {@link neqsim.thermo.system.SystemInterface} object + * @param addNewComponents a boolean + */ + public void setFluid(SystemInterface fluid1, SystemInterface fluid2, boolean addNewComponents) { + fluid1.setEmptyFluid(); + boolean addedComps = false; + for (int i = 0; i < fluid2.getNumberOfComponents(); i++) { + if (fluid1.getPhase(0).hasComponent(fluid2.getComponent(i).getName())) { + fluid1.addComponent(fluid2.getComponent(i).getName(), + fluid2.getComponent(i).getNumberOfmoles()); + } else { + if (addNewComponents) { + addedComps = true; + if (fluid2.getComponent(i).isIsTBPfraction() + || fluid2.getComponent(i).isIsPlusFraction()) { + fluid1.addTBPfraction(fluid2.getComponent(i).getName(), + fluid2.getComponent(i).getNumberOfmoles(), fluid2.getComponent(i).getMolarMass(), + fluid2.getComponent(i).getNormalLiquidDensity()); + } else { + fluid1.addComponent(fluid2.getComponent(i).getName(), + fluid2.getComponent(i).getNumberOfmoles()); + } } - fluid1.init(0); - fluid1.setTemperature(fluid2.getTemperature()); - fluid1.setPressure(fluid2.getPressure()); - } - - /** - *

- * runAsThread. - *

- * - * @return a {@link java.lang.Thread} object - */ - public Thread runAsThread() { - Thread processThread = new Thread(this); - processThread.start(); - return processThread; - } - - /** {@inheritDoc} */ - @Override - public void run() { - boolean isConverged = true; - boolean hasResycle = false; - // boolean hasAdjuster = false; - int iter = 0; - - // Initializing recycle controller - recycleController.clear(); - for (int i = 0; i < unitOperations.size(); i++) { - if (unitOperations.get(i).getClass().getSimpleName().equals("Recycle")) { - hasResycle = true; - recycleController.addRecycle((Recycle) unitOperations.get(i)); - } - if (unitOperations.get(i).getClass().getSimpleName().equals("Adjuster")) { - // hasAdjuster = true; - } - } - recycleController.init(); - - do { - iter++; - isConverged = true; - for (int i = 0; i < unitOperations.size(); i++) { - if (!unitOperations.get(i).getClass().getSimpleName().equals("Recycle")) - try { - ((Runnable) unitOperations.get(i)).run(); - } catch (Exception e) { - // String error = e.getMessage(); - e.printStackTrace(); - } - if (unitOperations.get(i).getClass().getSimpleName().equals("Recycle") - && recycleController.doSolveRecycle((Recycle) unitOperations.get(i))) { - try { - ((Runnable) unitOperations.get(i)).run(); - } catch (Exception e) { - // String error = e.getMessage(); - e.printStackTrace(); - } - } - } - if (!recycleController.solvedAll() || recycleController.hasHigherPriorityLevel()) { - isConverged = false; - } - if (recycleController.solvedCurrentPriorityLevel()) { - recycleController.nextPriorityLevel(); - } else if (recycleController.hasLoverPriorityLevel() - && !recycleController.solvedAll()) { - recycleController.resetPriorityLevel(); - // isConverged=true; - } - - for (int i = 0; i < unitOperations.size(); i++) { - if (unitOperations.get(i).getClass().getSimpleName().equals("Adjuster")) { - if (!((neqsim.processSimulation.processEquipment.util.Adjuster) unitOperations - .get(i)).solved()) { - isConverged = false; - } - } - } - - /* - * signalDB = new String[1000][1 + 3 * measurementDevices.size()]; - * - * signalDB[timeStepNumber] = new String[1 + 3 * measurementDevices.size()]; for (int i - * = 0; i < measurementDevices.size(); i++) { signalDB[timeStepNumber][0] = - * Double.toString(time); signalDB[timeStepNumber][3 * i + 1] = - * ((MeasurementDeviceInterface) measurementDevices.get(i)) .getName(); - * signalDB[timeStepNumber][3 * i + 2] = Double .toString(((MeasurementDeviceInterface) - * measurementDevices.get(i)).getMeasuredValue()); signalDB[timeStepNumber][3 * i + 3] = - * ((MeasurementDeviceInterface) measurementDevices.get(i)) .getUnit(); - * - * } - */ - } while ((!isConverged || (iter < 2 && hasResycle)) && iter < 100); - - for (int i = 0; i < unitOperations.size(); i++) { - if (unitOperations.get(i).getClass().getSimpleName().equals("Adjuster")) { - if (!((neqsim.processSimulation.processEquipment.util.Adjuster) unitOperations - .get(i)).solved()) { - isConverged = false; - } - } - } - } - - /** - *

- * runTransient. - *

- * - * @param dt differential temperature - */ - @Override - public void runTransient(double dt) { - setTimeStep(dt); - time += dt; - - for (int i = 0; i < unitOperations.size(); i++) { - unitOperations.get(i).runTransient(dt); - } - timeStepNumber++; - signalDB[timeStepNumber] = new String[1 + 3 * measurementDevices.size()]; - for (int i = 0; i < measurementDevices.size(); i++) { - signalDB[timeStepNumber][0] = Double.toString(time); - signalDB[timeStepNumber][3 * i + 1] = measurementDevices.get(i).getName(); - signalDB[timeStepNumber][3 * i + 2] = - Double.toString(measurementDevices.get(i).getMeasuredValue()); - signalDB[timeStepNumber][3 * i + 3] = measurementDevices.get(i).getUnit(); - } - } - - @Override - public boolean solved() { - return true; - } - - /** - *

- * Getter for the field time. - *

- * - * @return a double - */ - public double getTime() { - return time; - } - - /** - *

- * Getter for the field time. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getTime(String unit) { - if (unit.equals("sec")) { - return time; - } else if (unit.equals("hr")) { - return time / 3600.0; - } else if (unit.equals("day")) { - return time / (3600.0 * 24); - } else if (unit.equals("year")) { - return time / (3600.0 * 24 * 365); - } - return time; - } - - /** - *

- * runTransient. - *

- */ - public void runTransient() { - runTransient(getTimeStep()); - } - - /** - *

- * size. - *

- * - * @return a int - */ - public int size() { - return unitOperations.size(); - } - - /** - *

- * view. - *

- */ - public void view() { - this.displayResult(); - } - - /** - *

- * displayResult. - *

- */ - public void displayResult() { - try { - thisThread.join(); - } catch (Exception e) { - System.out.println("Thread did not finish"); - } - for (int i = 0; i < unitOperations.size(); i++) { - unitOperations.get(i).displayResult(); - } - - /* - * JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - * frame.setLayout(new GridLayout(1, 0, 5, 5)); JTextArea area1 = new JTextArea(10, 10); - * JTable Jtab = new JTable(reportResults(), reportResults()[0]); frame.add(area1); - * frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); - */ - } - - /** - *

- * reportMeasuredValues. - *

- */ - public void reportMeasuredValues() { - try { - thisThread.join(); - } catch (Exception e) { - System.out.println("Thread did not finish"); - } - for (int i = 0; i < measurementDevices.size(); i++) { - System.out.println("Measurements Device Name: " + measurementDevices.get(i).getName()); - System.out.println("Value: " + measurementDevices.get(i).getMeasuredValue() + " " - + measurementDevices.get(i).getUnit()); - if (measurementDevices.get(i).isOnlineSignal()) - System.out.println( - "Online value: " + measurementDevices.get(i).getOnlineSignal().getValue() - + " " + measurementDevices.get(i).getOnlineSignal().getUnit()); - } - } - - /** - *

- * save. - *

- * - * @param filePath a {@link java.lang.String} object - */ - public void save(String filePath) { - try (ObjectOutputStream out = - new ObjectOutputStream(new FileOutputStream(filePath, false))) { - out.writeObject(this); - logger.info("process file saved to: " + filePath); - } catch (Exception e) { - logger.error(e.toString()); - e.printStackTrace(); - } - } - - /** - *

- * open. - *

- * - * @param filePath a {@link java.lang.String} object - * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object - */ - public static ProcessSystem open(String filePath) { - try (ObjectInputStream objectinputstream = - new ObjectInputStream(new FileInputStream(filePath))) { - return (ProcessSystem) objectinputstream.readObject(); - // logger.info("process file open ok: " + filePath); - } catch (Exception e) { - // logger.error(e.toString()); - e.printStackTrace(); - } - return null; - } - - /** - *

- * reportResults. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[][] reportResults() { - String[][] text = new String[200][]; - - int numb = 0; - for (int i = 0; i < unitOperations.size(); i++) { - for (int k = 0; k < unitOperations.get(i).reportResults().length; k++) { - text[numb++] = unitOperations.get(i).reportResults()[k]; - } - } - return text; - } - - /** - *

- * printLogFile. - *

- * - * @param filename a {@link java.lang.String} object - */ - public void printLogFile(String filename) { - neqsim.dataPresentation.fileHandeling.createTextFile.TextFile tempFile = - new neqsim.dataPresentation.fileHandeling.createTextFile.TextFile(); - tempFile.setOutputFileName(filename); - tempFile.setValues(signalDB); - tempFile.createFile(); - } - - /** - *

- * Getter for the field timeStep. - *

- * - * @return a double - */ - public double getTimeStep() { - return timeStep; - } - - /** - *

- * Setter for the field timeStep. - *

- * - * @param timeStep a double - */ - public void setTimeStep(double timeStep) { - this.timeStep = timeStep; - } - - /** - *

- * Getter for the field name. - *

- * - * @return the name - */ - public String getName() { - return name; - } - - /** - *

- * Setter for the field name. - *

- * - * @param name the name to set - */ - public void setName(String name) { - this.name = name; - } - - /** - *

- * Get a SystemMechanicalDesign object from processSystem. - *

- * - * @return a new SystemMechanicalDesign object - */ - public SystemMechanicalDesign getSystemMechanicalDesign() { - return new SystemMechanicalDesign(this); - } - - /** - *

- * Get a CostEstimateBaseClass object from processSystem. - *

- * - * @return a new CostEstimateBaseClass object - */ - public CostEstimateBaseClass getCostEstimator() { - return new CostEstimateBaseClass(this); - } - - /** - *

- * getEntropyProduction. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getEntropyProduction(String unit) { - double entropyProduction = 0.0; - for (int i = 0; i < unitOperations.size(); i++) { - entropyProduction += unitOperations.get(i).getEntropyProduction(unit); - System.out.println("unit " + unitOperations.get(i).getName() + " entropy production " - + unitOperations.get(i).getEntropyProduction(unit)); - } - return entropyProduction; - } - - /** - *

- * getExergyChange. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getExergyChange(String unit) { - double exergyChange = 0.0; - for (int i = 0; i < unitOperations.size(); i++) { - exergyChange += unitOperations.get(i).getExergyChange("J", getSurroundingTemperature()); - System.out.println("unit " + unitOperations.get(i).getName() + " exergy change " - + unitOperations.get(i).getExergyChange("J", getSurroundingTemperature())); - } - return exergyChange; - } - - /** - *

- * getPower. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getPower(String unit) { - double power = 0.0; - for (int i = 0; i < unitOperations.size(); i++) { - if (unitOperations.get(i).getClass().getSimpleName().equals("Compressor")) { - power += ((neqsim.processSimulation.processEquipment.compressor.Compressor) unitOperations - .get(i)).getPower(); - } else if (unitOperations.get(i).getClass().getSimpleName().equals("Pump")) { - power += ((neqsim.processSimulation.processEquipment.pump.Pump) unitOperations - .get(i)).getPower(); - } + } + } + if (addedComps) { + fluid1.createDatabase(true); + } + fluid1.init(0); + fluid1.setTemperature(fluid2.getTemperature()); + fluid1.setPressure(fluid2.getPressure()); + } + + /** + *

+ * setFluid. + *

+ * + * @param fluid1 a {@link neqsim.thermo.system.SystemInterface} object + * @param fluid2 a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setFluid(SystemInterface fluid1, SystemInterface fluid2) { + fluid1.setEmptyFluid(); + boolean addedComps = false; + for (int i = 0; i < fluid2.getNumberOfComponents(); i++) { + if (fluid1.getPhase(0).hasComponent(fluid2.getComponent(i).getName())) { + fluid1.addComponent(fluid2.getComponent(i).getName(), + fluid2.getComponent(i).getNumberOfmoles()); + } else { + addedComps = true; + if (fluid2.getComponent(i).isIsTBPfraction() || fluid2.getComponent(i).isIsPlusFraction()) { + fluid1.addTBPfraction(fluid2.getComponent(i).getName(), + fluid2.getComponent(i).getNumberOfmoles(), fluid2.getComponent(i).getMolarMass(), + fluid2.getComponent(i).getNormalLiquidDensity()); + } else { + fluid1.addComponent(fluid2.getComponent(i).getName(), + fluid2.getComponent(i).getNumberOfmoles()); } - if (unit.equals("MW")) { - return power / 1.0e6; - } else if (unit.equals("kW")) { - return power / 1.0e3; - } else - return power; - } - - /** - *

- * getCoolerDuty. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getCoolerDuty(String unit) { - double heat = 0.0; - for (int i = 0; i < unitOperations.size(); i++) { - if (unitOperations.get(i).getClass().getSimpleName().equals("Cooler")) { - heat += ((neqsim.processSimulation.processEquipment.heatExchanger.Cooler) unitOperations - .get(i)).getDuty(); + } + } + if (addedComps) { + fluid1.createDatabase(true); + } + fluid1.init(0); + fluid1.setTemperature(fluid2.getTemperature()); + fluid1.setPressure(fluid2.getPressure()); + } + + /** + *

+ * runAsThread. + *

+ * + * @return a {@link java.lang.Thread} object + */ + public Thread runAsThread() { + Thread processThread = new Thread(this); + processThread.start(); + return processThread; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + boolean hasResycle = false; + // boolean hasAdjuster = false; + + // Initializing recycle controller + recycleController.clear(); + for (int i = 0; i < unitOperations.size(); i++) { + if (unitOperations.get(i).getClass().getSimpleName().equals("Recycle")) { + hasResycle = true; + recycleController.addRecycle((Recycle) unitOperations.get(i)); + } + if (unitOperations.get(i).getClass().getSimpleName().equals("Adjuster")) { + // hasAdjuster = true; + } + } + recycleController.init(); + + boolean isConverged = true; + int iter = 0; + do { + iter++; + isConverged = true; + for (int i = 0; i < unitOperations.size(); i++) { + if (!unitOperations.get(i).getClass().getSimpleName().equals("Recycle")) { + try { + if (iter == 1 || unitOperations.get(i).needRecalculation()) { + unitOperations.get(i).run(id); } + } catch (Exception ex) { + // String error = ex.getMessage(); + logger.error(ex.getMessage(), ex); + } } - return heat; - } - - /** - *

- * getHeaterDuty. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getHeaterDuty(String unit) { - double heat = 0.0; - for (int i = 0; i < unitOperations.size(); i++) { - if (unitOperations.get(i).getClass().getSimpleName().equals("Heater")) { - heat += ((neqsim.processSimulation.processEquipment.heatExchanger.Heater) unitOperations - .get(i)).getDuty(); - } + if (unitOperations.get(i).getClass().getSimpleName().equals("Recycle") + && recycleController.doSolveRecycle((Recycle) unitOperations.get(i))) { + try { + unitOperations.get(i).run(id); + } catch (Exception ex) { + // String error = ex.getMessage(); + logger.error(ex.getMessage(), ex); + } } - return heat; - } - - /** - *

- * getMechanicalWeight. - *

- * - * @param unit a {@link java.lang.String} object - * @return a double - */ - public double getMechanicalWeight(String unit) { - double weight = 0.0; - for (int i = 0; i < unitOperations.size(); i++) { - unitOperations.get(i).getMechanicalDesign().calcDesign(); - System.out.println("Name " + unitOperations.get(i).getName() + " weight " - + unitOperations.get(i).getMechanicalDesign().getWeightTotal()); - weight += unitOperations.get(i).getMechanicalDesign().getWeightTotal(); + } + if (!recycleController.solvedAll() || recycleController.hasHigherPriorityLevel()) { + isConverged = false; + } + + if (recycleController.solvedCurrentPriorityLevel()) { + recycleController.nextPriorityLevel(); + } else if (recycleController.hasLoverPriorityLevel() && !recycleController.solvedAll()) { + recycleController.resetPriorityLevel(); + // isConverged=true; + } + + for (int i = 0; i < unitOperations.size(); i++) { + if (unitOperations.get(i).getClass().getSimpleName().equals("Adjuster")) { + if (!((neqsim.processSimulation.processEquipment.util.Adjuster) unitOperations.get(i)) + .solved()) { + isConverged = false; + break; + } } - return weight; - } - - /** - *

- * Getter for the field surroundingTemperature. - *

- * - * @return a double - */ - public double getSurroundingTemperature() { - return surroundingTemperature; - } - - /** - *

- * Setter for the field surroundingTemperature. - *

- * - * @param surroundingTemperature a double - */ - public void setSurroundingTemperature(double surroundingTemperature) { - this.surroundingTemperature = surroundingTemperature; - } - - /** - *

- * Create deep copy. - *

- * - * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object - */ - public ProcessSystem copy() { - byte[] bytes = SerializationUtils.serialize(this); - ProcessSystem copyOperation = (ProcessSystem) SerializationUtils.deserialize(bytes); - return copyOperation; - } - - /** - *

- * getConditionMonitor. - *

- * - * @return a {@link neqsim.processSimulation.conditionMonitor.ConditionMonitor} object - */ - public ConditionMonitor getConditionMonitor() { - return new ConditionMonitor(this); - } - - /** {@inheritDoc} */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.deepHashCode(signalDB); - result = prime * result + Objects.hash(measurementDevices, name, recycleController, - surroundingTemperature, time, timeStep, timeStepNumber, unitOperations); - return result; - } - - /** {@inheritDoc} */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - ProcessSystem other = (ProcessSystem) obj; - return Objects.equals(measurementDevices, other.measurementDevices) - && Objects.equals(name, other.name) - && Objects.equals(recycleController, other.recycleController) - && Arrays.deepEquals(signalDB, other.signalDB) - && Double.doubleToLongBits(surroundingTemperature) == Double - .doubleToLongBits(other.surroundingTemperature) - && Double.doubleToLongBits(time) == Double.doubleToLongBits(other.time) - && Double.doubleToLongBits(timeStep) == Double.doubleToLongBits(other.timeStep) - && timeStepNumber == other.timeStepNumber - && Objects.equals(unitOperations, other.unitOperations); + } + + /* + * signalDB = new String[1000][1 + 3 * measurementDevices.size()]; + * + * signalDB[timeStepNumber] = new String[1 + 3 * measurementDevices.size()]; for (int i = 0; i + * < measurementDevices.size(); i++) { signalDB[timeStepNumber][0] = Double.toString(time); + * signalDB[timeStepNumber][3 * i + 1] = ((MeasurementDeviceInterface) + * measurementDevices.get(i)) .getName(); signalDB[timeStepNumber][3 * i + 2] = Double + * .toString(((MeasurementDeviceInterface) measurementDevices.get(i)).getMeasuredValue()); + * signalDB[timeStepNumber][3 * i + 3] = ((MeasurementDeviceInterface) + * measurementDevices.get(i)) .getUnit(); } + */ + } while ((!isConverged || (iter < 2 && hasResycle)) && iter < 100); + + for (int i = 0; i < unitOperations.size(); i++) { + unitOperations.get(i).setCalculationIdentifier(id); + } + + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void run_step(UUID id) { + for (int i = 0; i < unitOperations.size(); i++) { + try { + // if (unitOperations.get(i).needRecalculation()) { + unitOperations.get(i).run(id); + // } + } catch (Exception ex) { + // String error = ex.getMessage(); + logger.error(ex.getMessage(), ex); + } + } + for (int i = 0; i < unitOperations.size(); i++) { + unitOperations.get(i).setCalculationIdentifier(id); + } + setCalculationIdentifier(id); + } + + /* + * signalDB = new String[1000][1 + 3 * measurementDevices.size()]; + * + * signalDB[timeStepNumber] = new String[1 + 3 * measurementDevices.size()]; for (int i = 0; i < + * measurementDevices.size(); i++) { signalDB[timeStepNumber][0] = Double.toString(time); + * signalDB[timeStepNumber][3 * i + 1] = ((MeasurementDeviceInterface) measurementDevices.get(i)) + * .getName(); signalDB[timeStepNumber][3 * i + 2] = Double + * .toString(((MeasurementDeviceInterface) measurementDevices.get(i)).getMeasuredValue()); + * signalDB[timeStepNumber][3 * i + 3] = ((MeasurementDeviceInterface) measurementDevices.get(i)) + * .getUnit(); } + */ + + /** + *

+ * runTransient. + *

+ */ + public void runTransient() { + runTransient(getTimeStep(), UUID.randomUUID()); + } + + /** + * {@inheritDoc} + * + *

+ * runTransient. + *

+ */ + @Override + public void runTransient(double dt, UUID id) { + setTimeStep(dt); + increaseTime(dt); + + for (int i = 0; i < unitOperations.size(); i++) { + unitOperations.get(i).runTransient(dt, id); + } + + timeStepNumber++; + signalDB[timeStepNumber] = new String[1 + 3 * measurementDevices.size()]; + for (int i = 0; i < measurementDevices.size(); i++) { + signalDB[timeStepNumber][0] = Double.toString(time); + signalDB[timeStepNumber][3 * i + 1] = measurementDevices.get(i).getName(); + signalDB[timeStepNumber][3 * i + 2] = + Double.toString(measurementDevices.get(i).getMeasuredValue()); + signalDB[timeStepNumber][3 * i + 3] = measurementDevices.get(i).getUnit(); + } + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public boolean solved() { + return true; + } + + /** {@inheritDoc} */ + @Override + public double getTime() { + return time; + } + + /** + *

+ * Getter for the field time. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getTime(String unit) { + if (unit.equals("sec")) { + return time; + } else if (unit.equals("hr")) { + return time / 3600.0; + } else if (unit.equals("day")) { + return time / (3600.0 * 24); + } else if (unit.equals("year")) { + return time / (3600.0 * 24 * 365); + } + return time; + } + + /** + *

+ * size. + *

+ * + * @return a int + */ + public int size() { + return unitOperations.size(); + } + + /** + *

+ * view. + *

+ */ + public void view() { + this.displayResult(); + } + + /** + *

+ * displayResult. + *

+ */ + public void displayResult() { + try { + thisThread.join(); + } catch (Exception ex) { + logger.error("Thread did not finish", ex); + } + for (int i = 0; i < unitOperations.size(); i++) { + unitOperations.get(i).displayResult(); } /* - * @XmlRootElement private class Report extends Object{ public Double name; public - * ArrayList unitOperationsReports = new ArrayList(); - * - * Report(){ name= getName(); - * - * for (int i = 0; i < unitOperations.size(); i++) { - * unitOperationsReports.add(unitOperations.getReport()); } } } - * - * public Report getReport(){ return this.new Report(); } - */ + * JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + * frame.setLayout(new GridLayout(1, 0, 5, 5)); JTextArea area1 = new JTextArea(10, 10); JTable + * Jtab = new JTable(reportResults(), reportResults()[0]); frame.add(area1); frame.pack(); + * frame.setLocationRelativeTo(null); frame.setVisible(true); + */ + } + + /** + *

+ * reportMeasuredValues. + *

+ */ + public void reportMeasuredValues() { + try { + thisThread.join(); + } catch (Exception ex) { + logger.error("Thread did not finish", ex); + } + for (int i = 0; i < measurementDevices.size(); i++) { + System.out.println("Measurements Device Name: " + measurementDevices.get(i).getName()); + System.out.println("Value: " + measurementDevices.get(i).getMeasuredValue() + " " + + measurementDevices.get(i).getUnit()); + if (measurementDevices.get(i).isOnlineSignal()) { + System.out.println("Online value: " + measurementDevices.get(i).getOnlineSignal().getValue() + + " " + measurementDevices.get(i).getOnlineSignal().getUnit()); + } + } + } + + /** + *

+ * save. + *

+ * + * @param filePath a {@link java.lang.String} object + */ + public void save(String filePath) { + try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath, false))) { + out.writeObject(this); + logger.info("process file saved to: " + filePath); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + /** + *

+ * open. + *

+ * + * @param filePath a {@link java.lang.String} object + * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public static ProcessSystem open(String filePath) { + try (ObjectInputStream objectinputstream = + new ObjectInputStream(new FileInputStream(filePath))) { + return (ProcessSystem) objectinputstream.readObject(); + // logger.info("process file open ok: " + filePath); + } catch (Exception ex) { + // logger.error(ex.toString()); + logger.error(ex.getMessage(), ex); + } + return null; + } + + /** + *

+ * reportResults. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[][] reportResults() { + String[][] text = new String[200][]; + + int numb = 0; + for (int i = 0; i < unitOperations.size(); i++) { + for (int k = 0; k < unitOperations.get(i).reportResults().length; k++) { + text[numb++] = unitOperations.get(i).reportResults()[k]; + } + } + return text; + } + + /** + *

+ * printLogFile. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void printLogFile(String filename) { + neqsim.dataPresentation.fileHandeling.createTextFile.TextFile tempFile = + new neqsim.dataPresentation.fileHandeling.createTextFile.TextFile(); + tempFile.setOutputFileName(filename); + tempFile.setValues(signalDB); + tempFile.createFile(); + } + + /** + *

+ * Getter for the field timeStep. + *

+ * + * @return a double + */ + public double getTimeStep() { + return timeStep; + } + + /** + *

+ * Setter for the field timeStep. + *

+ * + * @param timeStep a double + */ + public void setTimeStep(double timeStep) { + this.timeStep = timeStep; + } + + /** {@inheritDoc} */ + @Override + public String getName() { + return name; + } + + /** + * {@inheritDoc} + * + *

+ * Setter for the field name. + *

+ */ + @Override + public void setName(String name) { + this.name = name; + } + + /** + *

+ * getEntropyProduction. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getEntropyProduction(String unit) { + double entropyProduction = 0.0; + for (int i = 0; i < unitOperations.size(); i++) { + entropyProduction += unitOperations.get(i).getEntropyProduction(unit); + System.out.println("unit " + unitOperations.get(i).getName() + " entropy production " + + unitOperations.get(i).getEntropyProduction(unit)); + } + return entropyProduction; + } + + /** + *

+ * getExergyChange. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getExergyChange(String unit) { + double exergyChange = 0.0; + for (int i = 0; i < unitOperations.size(); i++) { + exergyChange += unitOperations.get(i).getExergyChange("J", getSurroundingTemperature()); + System.out.println("unit " + unitOperations.get(i).getName() + " exergy change " + + unitOperations.get(i).getExergyChange("J", getSurroundingTemperature())); + } + return exergyChange; + } + + /** + *

+ * getPower. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getPower(String unit) { + double power = 0.0; + for (int i = 0; i < unitOperations.size(); i++) { + if (unitOperations.get(i).getClass().getSimpleName().equals("Compressor")) { + power += ((neqsim.processSimulation.processEquipment.compressor.Compressor) unitOperations + .get(i)).getPower(); + } else if (unitOperations.get(i).getClass().getSimpleName().equals("Pump")) { + power += ((neqsim.processSimulation.processEquipment.pump.Pump) unitOperations.get(i)) + .getPower(); + } + } + if (unit.equals("MW")) { + return power / 1.0e6; + } else if (unit.equals("kW")) { + return power / 1.0e3; + } else { + return power; + } + } + + /** + *

+ * getCoolerDuty. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getCoolerDuty(String unit) { + double heat = 0.0; + for (int i = 0; i < unitOperations.size(); i++) { + if (unitOperations.get(i).getClass().getSimpleName().equals("Cooler")) { + heat += + ((neqsim.processSimulation.processEquipment.heatExchanger.Cooler) unitOperations.get(i)) + .getDuty(); + } + } + if (unit.equals("MW")) { + return heat / 1.0e6; + } else if (unit.equals("kW")) { + return heat / 1.0e3; + } else { + return heat; + } + } + + /** + *

+ * getHeaterDuty. + *

+ * + * @param unit a {@link java.lang.String} object + * @return a double + */ + public double getHeaterDuty(String unit) { + double heat = 0.0; + for (int i = 0; i < unitOperations.size(); i++) { + if (unitOperations.get(i).getClass().getSimpleName().equals("Heater")) { + heat += + ((neqsim.processSimulation.processEquipment.heatExchanger.Heater) unitOperations.get(i)) + .getDuty(); + } + } + if (unit.equals("MW")) { + return heat / 1.0e6; + } else if (unit.equals("kW")) { + return heat / 1.0e3; + } else { + return heat; + } + } + + /** + *

+ * Getter for the field surroundingTemperature. + *

+ * + * @return a double + */ + public double getSurroundingTemperature() { + return surroundingTemperature; + } + + /** + *

+ * Setter for the field surroundingTemperature. + *

+ * + * @param surroundingTemperature a double + */ + public void setSurroundingTemperature(double surroundingTemperature) { + this.surroundingTemperature = surroundingTemperature; + } + + /** + *

+ * Create deep copy. + *

+ * + * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public ProcessSystem copy() { + byte[] bytes = SerializationUtils.serialize(this); + ProcessSystem copyOperation = (ProcessSystem) SerializationUtils.deserialize(bytes); + return copyOperation; + } + + /** + *

+ * getConditionMonitor. + *

+ * + * @return a {@link neqsim.processSimulation.conditionMonitor.ConditionMonitor} object + */ + public ConditionMonitor getConditionMonitor() { + return new ConditionMonitor(this); + } + + /** {@inheritDoc} */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Arrays.deepHashCode(signalDB); + result = prime * result + Objects.hash(measurementDevices, name, recycleController, + surroundingTemperature, time, timeStep, timeStepNumber, unitOperations); + return result; + } + + /** {@inheritDoc} */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + ProcessSystem other = (ProcessSystem) obj; + return Objects.equals(measurementDevices, other.measurementDevices) + && Objects.equals(name, other.name) + && Objects.equals(recycleController, other.recycleController) + && Arrays.deepEquals(signalDB, other.signalDB) + && Double.doubleToLongBits(surroundingTemperature) == Double + .doubleToLongBits(other.surroundingTemperature) + && Double.doubleToLongBits(time) == Double.doubleToLongBits(other.time) + && Double.doubleToLongBits(timeStep) == Double.doubleToLongBits(other.timeStep) + && timeStepNumber == other.timeStepNumber + && Objects.equals(unitOperations, other.unitOperations); + } + + /** + * {@inheritDoc} + * + * @return a String + */ + public String getReport_json() { + return new Report(this).generateJsonReport(); + } + + /* + * @XmlRootElement private class Report extends Object{ public Double name; public + * ArrayList unitOperationsReports = new ArrayList(); + * + * Report(){ name= getName(); + * + * for (int i = 0; i < unitOperations.size(); i++) { + * unitOperationsReports.add(unitOperations.getReport()); } } } + * + * public Report getReport(){ return this.new Report(); } + */ } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/AdsorptionDehydrationlModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/AdsorptionDehydrationlModule.java index 59e644f732..2710bd0ce3 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/AdsorptionDehydrationlModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/AdsorptionDehydrationlModule.java @@ -1,11 +1,15 @@ package neqsim.processSimulation.processSystem.processModules; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.adsorber.SimpleAdsorber; import neqsim.processSimulation.processEquipment.separator.Separator; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.processSimulation.processSystem.ProcessModuleBaseClass; +import neqsim.thermo.ThermodynamicConstantsInterface; /** *

@@ -16,211 +20,222 @@ * @version $Id: $Id */ public class AdsorptionDehydrationlModule extends ProcessModuleBaseClass { - private static final long serialVersionUID = 1000; - - protected StreamInterface gasStreamToAdsorber = null, gasStreamFromAdsorber = null; - protected SimpleAdsorber[] adsorber = null; - double regenerationCycleTime = 1.0, waterDewPontTemperature = 273.15 - 10.0, designFlow = 1.0, - designAdsorptionTemperature = 298.0, designRegenerationTemperature = 440.0, - designAdsorptionPressure = 60.0; - int numberOfAdorptionBeds = 3; - double adsorberInternalDiameter = 1.0; - double adsorbentFillingHeight = 3.0; - - public AdsorptionDehydrationlModule(String name) { - super(name); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(AdsorptionDehydrationlModule.class); + + protected StreamInterface gasStreamToAdsorber = null; + protected StreamInterface gasStreamFromAdsorber = null; + protected SimpleAdsorber[] adsorber = null; + double regenerationCycleTime = 1.0; + double waterDewPontTemperature = 273.15 - 10.0; + double designFlow = 1.0; + double designAdsorptionTemperature = 298.0; + double designRegenerationTemperature = 440.0; + double designAdsorptionPressure = 60.0; + int numberOfAdsorptionBeds = 3; + double adsorberInternalDiameter = 1.0; + double adsorbentFillingHeight = 3.0; + + /** + *

Constructor for AdsorptionDehydrationlModule.

+ * + * @param name a {@link java.lang.String} object + */ + public AdsorptionDehydrationlModule(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void addInputStream(String streamName, StreamInterface stream) { + if (streamName.equals("gasStreamToAdsorber")) { + this.gasStreamToAdsorber = stream; } + } - /** {@inheritDoc} */ - @Override - public void addInputStream(String streamName, StreamInterface stream) { - if (streamName.equals("gasStreamToAdsorber")) { - this.gasStreamToAdsorber = stream; - } + /** {@inheritDoc} */ + @Override + public StreamInterface getOutputStream(String streamName) { + if (!isInitializedStreams) { + initializeStreams(); } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutputStream(String streamName) { - if (!isInitializedStreams) { - initializeStreams(); - } - if (streamName.equals("gasStreamFromAdsorber")) { - return this.gasStreamFromAdsorber; - } else { - return null; - } + if (streamName.equals("gasStreamFromAdsorber")) { + return this.gasStreamFromAdsorber; + } else { + return null; } - - /** {@inheritDoc} */ - @Override - public ProcessEquipmentInterface getUnit(String unitName) { - if (unitName.equals("adorber_0")) { - return adsorber[0]; - } else if (unitName.equals("adorber_1")) { - return adsorber[1]; - } else if (unitName.equals("adorber_2")) { - return adsorber[2]; - } else { - return null; - } + } + + /** {@inheritDoc} */ + @Override + public ProcessEquipmentInterface getUnit(String unitName) { + if (unitName.equals("adorber_0")) { + return adsorber[0]; + } else if (unitName.equals("adorber_1")) { + return adsorber[1]; + } else if (unitName.equals("adorber_2")) { + return adsorber[2]; + } else { + return null; } + } - /** {@inheritDoc} */ - @Override - public void run() { - if (!isInitializedModule) { - initializeModule(); - } - gasStreamToAdsorber.run(); - - getOperations().run(); - - // gasStreamFromAdsorber = (Stream) inletSeparator.getGasOutStream().clone(); - // gasStreamFromAdsorber.getThermoSystem().addComponent("water", - // -gasStreamFromAdsorber.getThermoSystem().getPhase(0).getComponent("water").getNumberOfMolesInPhase() - // * 0.99); - // gasStreamFromAdsorber.getThermoSystem().addComponent("TEG", 1e-10); - // gasStreamFromAdsorber.getThermoSystem().init(1); + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!isInitializedModule) { + initializeModule(); } - - /** {@inheritDoc} */ - @Override - public void initializeStreams() { - isInitializedStreams = true; - try { - adsorber = new SimpleAdsorber[numberOfAdorptionBeds]; - for (int i = 0; i < numberOfAdorptionBeds; i++) { - adsorber[i] = new SimpleAdsorber("SimpleAdsorber_" + i + 1, gasStreamToAdsorber); - } - this.gasStreamFromAdsorber = (Stream) this.gasStreamToAdsorber.clone(); - this.gasStreamFromAdsorber.setName("Stream from Adsorber"); - } catch (Exception e) { - e.printStackTrace(); - } + gasStreamToAdsorber.run(id); + + getOperations().run(id); + + // gasStreamFromAdsorber = (Stream) inletSeparator.getGasOutStream().clone(); + // gasStreamFromAdsorber.getThermoSystem().addComponent("water", + // -gasStreamFromAdsorber.getThermoSystem().getPhase(0).getComponent("water").getNumberOfMolesInPhase() + // * 0.99); + // gasStreamFromAdsorber.getThermoSystem().addComponent("TEG", 1e-10); + // gasStreamFromAdsorber.getThermoSystem().init(1); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void initializeStreams() { + isInitializedStreams = true; + try { + adsorber = new SimpleAdsorber[numberOfAdsorptionBeds]; + for (int i = 0; i < numberOfAdsorptionBeds; i++) { + adsorber[i] = new SimpleAdsorber("SimpleAdsorber_" + i + 1, gasStreamToAdsorber); + } + this.gasStreamFromAdsorber = this.gasStreamToAdsorber.clone(); + this.gasStreamFromAdsorber.setName("Stream from Adsorber"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } - /** {@inheritDoc} */ - @Override - public void initializeModule() { - isInitializedModule = true; + /** {@inheritDoc} */ + @Override + public void initializeModule() { + isInitializedModule = true; - getOperations().add(gasStreamToAdsorber); - } + getOperations().add(gasStreamToAdsorber); + } - /** {@inheritDoc} */ - @Override - public void setSpecification(String specificationName, double value) { - if (specificationName.equals("water dew point temperature")) { - waterDewPontTemperature = value; - } - if (specificationName.equals("designFlow")) { - designFlow = value; - } - if (specificationName.equals("designAdsorptionTemperature")) { - designAdsorptionTemperature = value; - } - if (specificationName.equals("designRegenerationTemperature")) { - designRegenerationTemperature = value; - } - if (specificationName.equals("designAdsorptionPressure")) { - designAdsorptionPressure = value; - } - - if (specificationName.equals("regenerationCycleTime")) { - regenerationCycleTime = value; - } + /** {@inheritDoc} */ + @Override + public void setSpecification(String specificationName, double value) { + if (specificationName.equals("water dew point temperature")) { + waterDewPontTemperature = value; } - - /** {@inheritDoc} */ - @Override - public void calcDesign() { - Stream tempStream = (Stream) gasStreamToAdsorber.clone(); - tempStream.getThermoSystem().setPressure(designAdsorptionPressure); - tempStream.getThermoSystem().setTemperature(designAdsorptionTemperature); - tempStream.run(); - tempStream.getThermoSystem().initPhysicalProperties(); - double gasDensity = - tempStream.getThermoSystem().getPhase(0).getPhysicalProperties().getDensity(); - - double gasVelocity = 67.0 / Math.sqrt(gasDensity); - - double qa = designFlow / (numberOfAdorptionBeds - 1.0) / 1440.0 - * (1.01325 / designAdsorptionPressure) * (designAdsorptionTemperature / 288.15) - * tempStream.getThermoSystem().getPhase(0).getZ(); - adsorberInternalDiameter = Math.sqrt(4.0 * qa / Math.PI / gasVelocity); - - double waterLoadingCycle = regenerationCycleTime * designFlow * 42.29489667 - * tempStream.getThermoSystem().getPhase(0).getComponent("water").getx() - * tempStream.getThermoSystem().getPhase(0).getComponent("water").getMolarMass();// 360.0; - // // - // kg/cycle - // this - // needs - // to - // be - // calculated - double usefulDesiccantCapacity = 10.0; // 10% - double bulkDensityDesiccant = 750.0; // 10% - - adsorbentFillingHeight = 400.0 * waterLoadingCycle / (Math.PI * usefulDesiccantCapacity - * bulkDensityDesiccant * adsorberInternalDiameter * adsorberInternalDiameter); - - // double lenghtDiameterRatio = adsorbentFillingHeight / adsorberInternalDiameter; - // design is done here + if (specificationName.equals("designFlow")) { + designFlow = value; } - - /** {@inheritDoc} */ - @Override - public void setDesign() { - for (int i = 0; i < numberOfAdorptionBeds; i++) { - adsorber[i].getMechanicalDesign().setInnerDiameter(adsorberInternalDiameter); - adsorber[i].getMechanicalDesign().setTantanLength(adsorbentFillingHeight * 1.5); - } - // set design is done here + if (specificationName.equals("designAdsorptionTemperature")) { + designAdsorptionTemperature = value; + } + if (specificationName.equals("designRegenerationTemperature")) { + designRegenerationTemperature = value; + } + if (specificationName.equals("designAdsorptionPressure")) { + designAdsorptionPressure = value; } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 30.0), 10.0); - - testSystem.addComponent("methane", 1.0); - testSystem.addComponent("water", 1.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - - Stream inletStream = new Stream("inletStream", testSystem); - Separator separator = new Separator("Separator 1", inletStream); - - neqsim.processSimulation.processSystem.processModules.AdsorptionDehydrationlModule adsorptionPlant = - new neqsim.processSimulation.processSystem.processModules.AdsorptionDehydrationlModule("absPlant"); - adsorptionPlant.addInputStream("gasStreamToAdsorber", separator.getGasOutStream()); - adsorptionPlant.setSpecification("water dew point temperature", 273.15 - 100.0); - adsorptionPlant.setSpecification("designFlow", 20.0e6); // MSm^3/day - adsorptionPlant.setSpecification("designAdsorptionTemperature", 273.15 + 30); - adsorptionPlant.setSpecification("designRegenerationTemperature", 273.15 + 250.0); - adsorptionPlant.setSpecification("designAdsorptionPressure", 60.0); - adsorptionPlant.setSpecification("regenerationCycleTime", 1.0); // days per cycle - adsorptionPlant.setSpecification("maxDesignPressure", 100.0); - adsorptionPlant.setSpecification("maxDesignTemperature", 100.0); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(inletStream); - operations.add(separator); - operations.add(adsorptionPlant); - - operations.run(); - - adsorptionPlant.calcDesign(); - - // TEGplant.getOutputStream("gasStreamFromAdsorber").displayResult(); + if (specificationName.equals("regenerationCycleTime")) { + regenerationCycleTime = value; + } + } + + /** {@inheritDoc} */ + @Override + public void calcDesign() { + Stream tempStream = (Stream) gasStreamToAdsorber.clone(); + tempStream.getThermoSystem().setPressure(designAdsorptionPressure); + tempStream.getThermoSystem().setTemperature(designAdsorptionTemperature); + tempStream.run(); + tempStream.getThermoSystem().initPhysicalProperties(); + double gasDensity = + tempStream.getThermoSystem().getPhase(0).getPhysicalProperties().getDensity(); + + double gasVelocity = 67.0 / Math.sqrt(gasDensity); + + double qa = designFlow / (numberOfAdsorptionBeds - 1.0) / 1440.0 + * (ThermodynamicConstantsInterface.referencePressure / designAdsorptionPressure) + * (designAdsorptionTemperature / 288.15) + * tempStream.getThermoSystem().getPhase(0).getZ(); + adsorberInternalDiameter = Math.sqrt(4.0 * qa / Math.PI / gasVelocity); + + double waterLoadingCycle = regenerationCycleTime * designFlow * 42.29489667 + * tempStream.getThermoSystem().getPhase(0).getComponent("water").getx() + * tempStream.getThermoSystem().getPhase(0).getComponent("water").getMolarMass(); // 360.0; + // kg/cycle + // this + // needs + // to be + // calculated + double usefulDesiccantCapacity = 10.0; // 10% + double bulkDensityDesiccant = 750.0; // 10% + + adsorbentFillingHeight = 400.0 * waterLoadingCycle / (Math.PI * usefulDesiccantCapacity + * bulkDensityDesiccant * adsorberInternalDiameter * adsorberInternalDiameter); + + // double lenghtDiameterRatio = adsorbentFillingHeight / adsorberInternalDiameter; + // design is done here + } + + /** {@inheritDoc} */ + @Override + public void setDesign() { + for (int i = 0; i < numberOfAdsorptionBeds; i++) { + adsorber[i].getMechanicalDesign().setInnerDiameter(adsorberInternalDiameter); + adsorber[i].getMechanicalDesign().setTantanLength(adsorbentFillingHeight * 1.5); } + // set design is done here + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 30.0), 10.0); + + testSystem.addComponent("methane", 1.0); + testSystem.addComponent("water", 1.0); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + + Stream inletStream = new Stream("inletStream", testSystem); + Separator separator = new Separator("Separator 1", inletStream); + + neqsim.processSimulation.processSystem.processModules.AdsorptionDehydrationlModule adsorptionPlant = + new neqsim.processSimulation.processSystem.processModules.AdsorptionDehydrationlModule( + "absPlant"); + adsorptionPlant.addInputStream("gasStreamToAdsorber", separator.getGasOutStream()); + adsorptionPlant.setSpecification("water dew point temperature", 273.15 - 100.0); + adsorptionPlant.setSpecification("designFlow", 20.0e6); // MSm^3/day + adsorptionPlant.setSpecification("designAdsorptionTemperature", 273.15 + 30); + adsorptionPlant.setSpecification("designRegenerationTemperature", 273.15 + 250.0); + adsorptionPlant.setSpecification("designAdsorptionPressure", 60.0); + adsorptionPlant.setSpecification("regenerationCycleTime", 1.0); // days per cycle + adsorptionPlant.setSpecification("maxDesignPressure", 100.0); + adsorptionPlant.setSpecification("maxDesignTemperature", 100.0); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(inletStream); + operations.add(separator); + operations.add(adsorptionPlant); + + operations.run(); + + adsorptionPlant.calcDesign(); + + // TEGplant.getOutputStream("gasStreamFromAdsorber").displayResult(); + } } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/CO2RemovalModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/CO2RemovalModule.java index cb8ca8520e..be73f092d0 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/CO2RemovalModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/CO2RemovalModule.java @@ -1,5 +1,8 @@ package neqsim.processSimulation.processSystem.processModules; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.separator.Separator; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; @@ -14,89 +17,94 @@ * @version $Id: $Id */ public class CO2RemovalModule extends ProcessModuleBaseClass { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(CO2RemovalModule.class); - protected StreamInterface streamToAbsorber = null, streamFromAbsorber = null, - gasFromCO2Stripper = null; + protected StreamInterface streamToAbsorber = null, streamFromAbsorber = null, + gasFromCO2Stripper = null; - protected Separator inletSeparator = null; + protected Separator inletSeparator = null; - public CO2RemovalModule(String name) { - super(name); - } + /** + *

Constructor for CO2RemovalModule.

+ * + * @param name a {@link java.lang.String} object + */ + public CO2RemovalModule(String name) { + super(name); + } - /** {@inheritDoc} */ - @Override - public void addInputStream(String streamName, StreamInterface stream) { - if (streamName.equals("streamToAbsorber")) { - this.streamToAbsorber = stream; - } + /** {@inheritDoc} */ + @Override + public void addInputStream(String streamName, StreamInterface stream) { + if (streamName.equals("streamToAbsorber")) { + this.streamToAbsorber = stream; } + } - /** {@inheritDoc} */ - @Override - public StreamInterface getOutputStream(String streamName) { - if (!isInitializedStreams) { - initializeStreams(); - } - if (streamName.equals("streamFromAbsorber")) { - return this.streamFromAbsorber; - } else { - return null; - } + /** {@inheritDoc} */ + @Override + public StreamInterface getOutputStream(String streamName) { + if (!isInitializedStreams) { + initializeStreams(); } + if (streamName.equals("streamFromAbsorber")) { + return this.streamFromAbsorber; + } else { + return null; + } + } - /** {@inheritDoc} */ - @Override - public void run() { - if (!isInitializedModule) { - initializeModule(); - } - getOperations().run(); - - streamFromAbsorber = (Stream) inletSeparator.getGasOutStream().clone(); - streamFromAbsorber.getThermoSystem().addComponent("CO2", - -streamFromAbsorber.getThermoSystem().getPhase(0).getComponent("CO2") - .getNumberOfMolesInPhase() * 0.99); - streamFromAbsorber.getThermoSystem().addComponent("MEG", - -streamFromAbsorber.getThermoSystem().getPhase(0).getComponent("MEG") - .getNumberOfMolesInPhase() * 0.99); - streamFromAbsorber.getThermoSystem().init(1); + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!isInitializedModule) { + initializeModule(); } + getOperations().run(id); + + streamFromAbsorber = inletSeparator.getGasOutStream().clone(); + streamFromAbsorber.getThermoSystem().addComponent("CO2", -streamFromAbsorber.getThermoSystem() + .getPhase(0).getComponent("CO2").getNumberOfMolesInPhase() * 0.99); + streamFromAbsorber.getThermoSystem().addComponent("MEG", -streamFromAbsorber.getThermoSystem() + .getPhase(0).getComponent("MEG").getNumberOfMolesInPhase() * 0.99); + streamFromAbsorber.getThermoSystem().init(1); + setCalculationIdentifier(id); + } - /** {@inheritDoc} */ - @Override - public void initializeStreams() { - isInitializedStreams = true; - try { - this.streamFromAbsorber = (Stream) this.streamToAbsorber.clone(); - this.streamFromAbsorber.setName("Stream from ABsorber"); + /** {@inheritDoc} */ + @Override + public void initializeStreams() { + isInitializedStreams = true; + try { + this.streamFromAbsorber = this.streamToAbsorber.clone(); + this.streamFromAbsorber.setName("Stream from ABsorber"); - this.gasFromCO2Stripper = (Stream) this.streamToAbsorber.clone(); - this.gasFromCO2Stripper.setName("Gas stream from Stripper"); - } catch (Exception e) { - e.printStackTrace(); - } + this.gasFromCO2Stripper = this.streamToAbsorber.clone(); + this.gasFromCO2Stripper.setName("Gas stream from Stripper"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } - /** {@inheritDoc} */ - @Override - public void initializeModule() { - isInitializedModule = true; - inletSeparator = new Separator("inletSeparator", streamToAbsorber); + /** {@inheritDoc} */ + @Override + public void initializeModule() { + isInitializedModule = true; + inletSeparator = new Separator("inletSeparator", streamToAbsorber); - getOperations().add(inletSeparator); - } + getOperations().add(inletSeparator); + } - /** {@inheritDoc} */ - @Override - public void calcDesign() { - // design is done here - } + /** {@inheritDoc} */ + @Override + public void calcDesign() { + // design is done here + } - /** {@inheritDoc} */ - @Override - public void setDesign() { - // set design is done here - } + /** {@inheritDoc} */ + @Override + public void setDesign() { + // set design is done here + } } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/DPCUModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/DPCUModule.java index c696a49542..b3dc3c1c36 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/DPCUModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/DPCUModule.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processSystem.processModules; +import java.util.UUID; import neqsim.processSimulation.processEquipment.compressor.Compressor; import neqsim.processSimulation.processEquipment.distillation.Condenser; import neqsim.processSimulation.processEquipment.distillation.DistillationColumn; @@ -26,274 +27,288 @@ * @version $Id: $Id */ public class DPCUModule extends ProcessModuleBaseClass { - private static final long serialVersionUID = 1000; - - StreamInterface ethaneOvhComp, gasDistColumnExit, liquidDistColumnExit, feedStream, - gasExitStream, oilExitStream, glycolFeedStream, glycolExitStream; - Separator glycolScrubber; - Separator inletSeparator; - double inletSepTemperature = 50.00, pressureAfterRedValve = 55.0; // bar' - double gasScrubberTemperature = 30.00, firstStageOutPressure = 110.0, - glycolScrubberTemperature = 20.0, secondStageOutPressure = 200.0; // bar - double glycolInjectionRate = 10.0, exportGasTemperature = 273.15 + 30.0, - liquidPumpPressure = 150.0; // m^3/hr - Separator LTseparator; - HeatExchanger heatExchanger1; - ThrottlingValve valve1; - Expander expander; - Compressor compressor1; - Mixer mixer; - DistillationColumn distColumn; - - public DPCUModule(String name) { - super(name); + private static final long serialVersionUID = 1000; + + StreamInterface ethaneOvhComp, gasDistColumnExit, liquidDistColumnExit, feedStream, gasExitStream, + oilExitStream, glycolFeedStream, glycolExitStream; + Separator glycolScrubber; + Separator inletSeparator; + double inletSepTemperature = 50.00, pressureAfterRedValve = 55.0; // bar' + double gasScrubberTemperature = 30.00, firstStageOutPressure = 110.0, + glycolScrubberTemperature = 20.0, secondStageOutPressure = 200.0; // bar + double glycolInjectionRate = 10.0, exportGasTemperature = 273.15 + 30.0, + liquidPumpPressure = 150.0; // m^3/hr + Separator LTseparator; + HeatExchanger heatExchanger1; + ThrottlingValve valve1; + Expander expander; + Compressor compressor1; + Mixer mixer; + DistillationColumn distColumn; + + /** + *

+ * Constructor for DPCUModule. + *

+ * + * @param name a {@link java.lang.String} object + */ + public DPCUModule(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void addInputStream(String streamName, StreamInterface stream) { + if (streamName.equals("feed stream")) { + this.feedStream = stream; } - - /** {@inheritDoc} */ - @Override - public void addInputStream(String streamName, StreamInterface stream) { - if (streamName.equals("feed stream")) { - this.feedStream = stream; - } - if (streamName.equals("glycol feed stream")) { - this.glycolFeedStream = stream; - } - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutputStream(String streamName) { - if (!isInitializedStreams) { - initializeStreams(); - } - if (streamName.equals("gas exit stream")) { - return this.gasExitStream; - } else if (streamName.equals("oil exit stream")) { - return this.oilExitStream; - } else if (streamName.equals("gas from dist column")) { - return this.gasDistColumnExit; - } else if (streamName.equals("liquid from dist column")) { - return this.liquidDistColumnExit; - } else { - return null; - } - } - - /** {@inheritDoc} */ - @Override - public void initializeModule() { - isInitializedModule = true; - // double inletPressure = feedStream.getPressure(); - - ValveInterface inletValve = new ThrottlingValve("inlet valve", feedStream); - inletValve.setOutletPressure(pressureAfterRedValve); - - heatExchanger1 = new HeatExchanger("heatExchanger1", inletValve.getOutletStream()); - // heatExchanger1.setOutTemperature(273.15 - 18); - // heatExchanger1.setUAvalue(10000.0); - // heatExchanger1.addInStream(feedStream2); - - Cooler heatExchanger2 = new Cooler("heatExchanger2", heatExchanger1.getOutStream(0)); - // heatExchanger2.setUAvalue(1000.0); - heatExchanger1.setOutTemperature(273.15 - 21.0); - // heatExchanger1.addInStream(feedStream2); - - expander = new Expander("expander", heatExchanger2.getOutletStream()); - expander.setOutletPressure(46.0); - - LTseparator = new Separator("LTseparator", expander.getOutletStream()); - - Splitter splitter = new Splitter("LTsplitter", LTseparator.getGasOutStream(), 2); - splitter.setSplitFactors(new double[] {0.9, 0.1}); - - heatExchanger1.addInStream(splitter.getSplitStream(0)); - - mixer = new Mixer("gasmixer"); - mixer.addStream(heatExchanger1.getOutStream(1)); - mixer.addStream(splitter.getSplitStream(1)); - - compressor1 = new Compressor("Compressor 1", mixer.getOutletStream()); - compressor1.setOutletPressure(65.0); - - Recycle recycl = new Recycle("recycler"); - recycl.addStream(compressor1.getOutletStream()); - - valve1 = new ThrottlingValve("valve1", LTseparator.getLiquidOutStream()); - valve1.setOutletPressure(30.0); - - distColumn = new DistillationColumn(10, true, true); - distColumn.addFeedStream(valve1.getOutletStream(), 2); - // distColumn.setCondenserTemperature(273.15 - 72.0); - // distColumn.setReboilerTemperature(273.0+40.0); - ((Reboiler) distColumn.getReboiler()).setRefluxRatio(10.7); - ((Condenser) distColumn.getCondenser()).setRefluxRatio(10.7); - - // heatExchanger2.addInStream(distColumn.getGasOutStream()); - getOperations().add(inletValve); - getOperations().add(heatExchanger1); - getOperations().add(heatExchanger2); - getOperations().add(expander); - getOperations().add(LTseparator); - getOperations().add(splitter); - getOperations().add(mixer); - getOperations().add(compressor1); - getOperations().add(recycl); - getOperations().add(valve1); - // getOperations().add(distColumn); - - /* - * Cooler inletCooler = new Cooler("inlet well stream cooler", feedStream); - * inletCooler.setOutTemperature(inletSepTemperature + 273.15); - * - * inletSeparator = new Separator("Inlet separator", inletCooler.getOutStream()); - * - * Cooler gasCooler = new Cooler("separator gas cooler", inletSeparator.getGasOutStream()); - * gasCooler.setOutTemperature(gasScrubberTemperature + 273.15); - * - * oilPump = new Pump("liquid pump", inletSeparator.getLiquidOutStream()); - * oilPump.setOutletPressure(liquidPumpPressure); - * - * Separator gasScrubber = new Separator("HC dew point control scrubber", - * gasCooler.getOutStream()); - * - * Recycle HPliquidRecycle = new Recycle("Resycle"); double tolerance = 1e-2; - * HPliquidRecycle.setTolerance(tolerance); - * HPliquidRecycle.addStream(gasScrubber.getLiquidOutStream()); - * inletSeparator.addStream(HPliquidRecycle.getOutStream()); - * - * Compressor firstStageCompressor = new Compressor("1st stage compressor", - * gasScrubber.getGasOutStream()); - * firstStageCompressor.setOutletPressure(firstStageOutPressure); - * - * glycolFeedStream.getThermoSystem().setPressure(firstStageOutPressure); - * - * Mixer glycolMixer = new Mixer("glycol injection mixer"); - * glycolMixer.addStream(firstStageCompressor.getOutStream()); - * glycolMixer.addStream(glycolFeedStream); - * - * Cooler mixerAfterCooler = new Cooler("glycol mixer after cooler", - * glycolMixer.getOutStream()); mixerAfterCooler.setOutTemperature(glycolScrubberTemperature - * + 273.15); - * - * glycolScrubber = new Separator("Water dew point control scrubber", - * mixerAfterCooler.getOutStream()); - * - * secondStageCompressor = new Compressor("2nd stage compressor", - * glycolScrubber.getGasOutStream()); - * secondStageCompressor.setOutletPressure(secondStageOutPressure); - * - * secondStageAfterCooler = new Cooler("second stage after cooler", - * secondStageCompressor.getOutStream()); - * secondStageAfterCooler.setOutTemperature(exportGasTemperature + 273.15); - * - * getOperations().add(inletCooler); getOperations().add(inletSeparator); - * getOperations().add(gasCooler); getOperations().add(oilPump); - * getOperations().add(gasScrubber); getOperations().add(HPliquidRecycle); - * getOperations().add(firstStageCompressor); getOperations().add(glycolMixer); - * getOperations().add(mixerAfterCooler); getOperations().add(glycolScrubber); - * getOperations().add(secondStageCompressor); getOperations().add(secondStageAfterCooler); - * - */ - } - - /** {@inheritDoc} */ - @Override - public void run() { - if (!isInitializedModule) { - initializeModule(); - } - getOperations().run(); - - gasExitStream = compressor1.getOutletStream(); - oilExitStream = LTseparator.getLiquidOutStream(); - gasDistColumnExit = distColumn.getGasOutStream(); - liquidDistColumnExit = distColumn.getLiquidOutStream(); + if (streamName.equals("glycol feed stream")) { + this.glycolFeedStream = stream; } + } - /** {@inheritDoc} */ - @Override - public void initializeStreams() { - isInitializedStreams = true; + /** {@inheritDoc} */ + @Override + public StreamInterface getOutputStream(String streamName) { + if (!isInitializedStreams) { + initializeStreams(); } - - /** {@inheritDoc} */ - @Override - public void calcDesign() { - // design is done here + if (streamName.equals("gas exit stream")) { + return this.gasExitStream; + } else if (streamName.equals("oil exit stream")) { + return this.oilExitStream; + } else if (streamName.equals("gas from dist column")) { + return this.gasDistColumnExit; + } else if (streamName.equals("liquid from dist column")) { + return this.liquidDistColumnExit; + } else { + return null; } - - /** {@inheritDoc} */ - @Override - public void setDesign() { - // set design is done here - } - - /** {@inheritDoc} */ - @Override - public void setSpecification(String specificationName, double value) { - if (specificationName.equals("pressure after reduction valve")) { - pressureAfterRedValve = value; - } else if (specificationName.equals("gas scrubber temperature")) { - gasScrubberTemperature = value; - } - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - System.out.println("compressor power " + compressor1.getEnergy()); - System.out.println("expander power " + expander.getEnergy()); - valve1.displayResult(); - } - - /** - *

- * main. - *

+ } + + /** {@inheritDoc} */ + @Override + public void initializeModule() { + isInitializedModule = true; + // double inletPressure = feedStream.getPressure(); + + ValveInterface inletValve = new ThrottlingValve("inlet valve", feedStream); + inletValve.setOutletPressure(pressureAfterRedValve); + + heatExchanger1 = new HeatExchanger("heatExchanger1", inletValve.getOutletStream()); + // heatExchanger1.setOutTemperature(273.15 - 18); + // heatExchanger1.setUAvalue(10000.0); + // heatExchanger1.addInStream(feedStream2); + + Cooler heatExchanger2 = new Cooler("heatExchanger2", heatExchanger1.getOutStream(0)); + // heatExchanger2.setUAvalue(1000.0); + heatExchanger1.setOutTemperature(273.15 - 21.0); + // heatExchanger1.addInStream(feedStream2); + + expander = new Expander("expander", heatExchanger2.getOutletStream()); + expander.setOutletPressure(46.0); + + LTseparator = new Separator("LTseparator", expander.getOutletStream()); + + Splitter splitter = new Splitter("LTsplitter", LTseparator.getGasOutStream(), 2); + splitter.setSplitFactors(new double[] {0.9, 0.1}); + + heatExchanger1.addInStream(splitter.getSplitStream(0)); + + mixer = new Mixer("gasmixer"); + mixer.addStream(heatExchanger1.getOutStream(1)); + mixer.addStream(splitter.getSplitStream(1)); + + compressor1 = new Compressor("Compressor 1", mixer.getOutletStream()); + compressor1.setOutletPressure(65.0); + + Recycle recycl = new Recycle("recycler"); + recycl.addStream(compressor1.getOutletStream()); + + valve1 = new ThrottlingValve("valve1", LTseparator.getLiquidOutStream()); + valve1.setOutletPressure(30.0); + + distColumn = new DistillationColumn(10, true, true); + distColumn.addFeedStream(valve1.getOutletStream(), 2); + // distColumn.setCondenserTemperature(273.15 - 72.0); + // distColumn.setReboilerTemperature(273.0+40.0); + ((Reboiler) distColumn.getReboiler()).setRefluxRatio(10.7); + ((Condenser) distColumn.getCondenser()).setRefluxRatio(10.7); + + // heatExchanger2.addInStream(distColumn.getGasOutStream()); + getOperations().add(inletValve); + getOperations().add(heatExchanger1); + getOperations().add(heatExchanger2); + getOperations().add(expander); + getOperations().add(LTseparator); + getOperations().add(splitter); + getOperations().add(mixer); + getOperations().add(compressor1); + getOperations().add(recycl); + getOperations().add(valve1); + // getOperations().add(distColumn); + + /* + * Cooler inletCooler = new Cooler("inlet well stream cooler", feedStream); + * inletCooler.setOutTemperature(inletSepTemperature + 273.15); * - * @param args an array of {@link java.lang.String} objects + * inletSeparator = new Separator("Inlet separator", inletCooler.getOutStream()); + * + * Cooler gasCooler = new Cooler("separator gas cooler", inletSeparator.getGasOutStream()); + * gasCooler.setOutTemperature(gasScrubberTemperature + 273.15); + * + * oilPump = new Pump("liquid pump", inletSeparator.getLiquidOutStream()); + * oilPump.setOutletPressure(liquidPumpPressure); + * + * Separator gasScrubber = new Separator("HC dew point control scrubber", + * gasCooler.getOutStream()); + * + * Recycle HPliquidRecycle = new Recycle("Resycle"); double tolerance = 1e-2; + * HPliquidRecycle.setTolerance(tolerance); + * HPliquidRecycle.addStream(gasScrubber.getLiquidOutStream()); + * inletSeparator.addStream(HPliquidRecycle.getOutStream()); + * + * Compressor firstStageCompressor = new Compressor("1st stage compressor", + * gasScrubber.getGasOutStream()); + * firstStageCompressor.setOutletPressure(firstStageOutPressure); + * + * glycolFeedStream.getThermoSystem().setPressure(firstStageOutPressure); + * + * Mixer glycolMixer = new Mixer("glycol injection mixer"); + * glycolMixer.addStream(firstStageCompressor.getOutStream()); + * glycolMixer.addStream(glycolFeedStream); + * + * Cooler mixerAfterCooler = new Cooler("glycol mixer after cooler", + * glycolMixer.getOutStream()); mixerAfterCooler.setOutTemperature(glycolScrubberTemperature + + * 273.15); + * + * glycolScrubber = new Separator("Water dew point control scrubber", + * mixerAfterCooler.getOutStream()); + * + * secondStageCompressor = new Compressor("2nd stage compressor", + * glycolScrubber.getGasOutStream()); + * secondStageCompressor.setOutletPressure(secondStageOutPressure); + * + * secondStageAfterCooler = new Cooler("second stage after cooler", + * secondStageCompressor.getOutStream()); + * secondStageAfterCooler.setOutTemperature(exportGasTemperature + 273.15); + * + * getOperations().add(inletCooler); getOperations().add(inletSeparator); + * getOperations().add(gasCooler); getOperations().add(oilPump); + * getOperations().add(gasScrubber); getOperations().add(HPliquidRecycle); + * getOperations().add(firstStageCompressor); getOperations().add(glycolMixer); + * getOperations().add(mixerAfterCooler); getOperations().add(glycolScrubber); + * getOperations().add(secondStageCompressor); getOperations().add(secondStageAfterCooler); */ - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos(273.15 + 7.5, 110.0); - - testSystem.addComponent("CO2", 0.0218295567233988); - testSystem.addComponent("nitrogen", 0.00739237702184805); - testSystem.addComponent("methane", 0.831767017569769); - testSystem.addComponent("ethane", 0.0790893243389708); - testSystem.addComponent("propane", 0.0378546917300062); - testSystem.addComponent("i-butane", 0.00543253464081659); - testSystem.addComponent("n-butane", 0.0095144918510181); - testSystem.addComponent("i-pentane", 0.00207801067169675); - testSystem.addComponent("n-pentane", 0.00211497210679094); - testSystem.addComponent("n-hexane", 0.000512675581812218); - testSystem.addComponent("n-heptane", 0.000205410042894726); - testSystem.addComponent("n-octane", 0.000677697183000435); - - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - - Stream feedStream = new Stream("Well stream", testSystem); - feedStream.getThermoSystem().setTotalFlowRate(5, "MSm^3/hr"); - - // feedStream.addAnalogMeasurement("Name", "type"); - // feedStream.addAlarm("type", );.. - DPCUModule dpcuModule = new DPCUModule("dpcuModule"); - dpcuModule.addInputStream("feed stream", feedStream); - dpcuModule.setSpecification("pressure after reduction valve", 108.0); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(feedStream); - operations.add(dpcuModule); - operations.run(); - - dpcuModule.getOutputStream("gas exit stream").displayResult(); - dpcuModule.getOutputStream("oil exit stream").displayResult(); - dpcuModule.getOutputStream("gas from dist column").displayResult(); - dpcuModule.getOutputStream("liquid from dist column").displayResult(); - - dpcuModule.displayResult(); - // dpcuModule.getOutputStream("gasmixer").displayResult(); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!isInitializedModule) { + initializeModule(); + } + getOperations().run(id); + + gasExitStream = compressor1.getOutletStream(); + gasExitStream.setCalculationIdentifier(id); + + oilExitStream = LTseparator.getLiquidOutStream(); + oilExitStream.setCalculationIdentifier(id); + + gasDistColumnExit = distColumn.getGasOutStream(); + gasDistColumnExit.setCalculationIdentifier(id); + + liquidDistColumnExit = distColumn.getLiquidOutStream(); + liquidDistColumnExit.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void initializeStreams() { + isInitializedStreams = true; + } + + /** {@inheritDoc} */ + @Override + public void calcDesign() { + // design is done here + } + + /** {@inheritDoc} */ + @Override + public void setDesign() { + // set design is done here + } + + /** {@inheritDoc} */ + @Override + public void setSpecification(String specificationName, double value) { + if (specificationName.equals("pressure after reduction valve")) { + pressureAfterRedValve = value; + } else if (specificationName.equals("gas scrubber temperature")) { + gasScrubberTemperature = value; } + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + System.out.println("compressor power " + compressor1.getEnergy()); + System.out.println("expander power " + expander.getEnergy()); + valve1.displayResult(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos(273.15 + 7.5, 110.0); + + testSystem.addComponent("CO2", 0.0218295567233988); + testSystem.addComponent("nitrogen", 0.00739237702184805); + testSystem.addComponent("methane", 0.831767017569769); + testSystem.addComponent("ethane", 0.0790893243389708); + testSystem.addComponent("propane", 0.0378546917300062); + testSystem.addComponent("i-butane", 0.00543253464081659); + testSystem.addComponent("n-butane", 0.0095144918510181); + testSystem.addComponent("i-pentane", 0.00207801067169675); + testSystem.addComponent("n-pentane", 0.00211497210679094); + testSystem.addComponent("n-hexane", 0.000512675581812218); + testSystem.addComponent("n-heptane", 0.000205410042894726); + testSystem.addComponent("n-octane", 0.000677697183000435); + + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + + Stream feedStream = new Stream("Well stream", testSystem); + feedStream.getThermoSystem().setTotalFlowRate(5, "MSm^3/hr"); + + // feedStream.addAnalogMeasurement("Name", "type"); + // feedStream.addAlarm("type", );.. + DPCUModule dpcuModule = new DPCUModule("dpcuModule"); + dpcuModule.addInputStream("feed stream", feedStream); + dpcuModule.setSpecification("pressure after reduction valve", 108.0); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(feedStream); + operations.add(dpcuModule); + operations.run(); + + dpcuModule.getOutputStream("gas exit stream").displayResult(); + dpcuModule.getOutputStream("oil exit stream").displayResult(); + dpcuModule.getOutputStream("gas from dist column").displayResult(); + dpcuModule.getOutputStream("liquid from dist column").displayResult(); + + dpcuModule.displayResult(); + // dpcuModule.getOutputStream("gasmixer").displayResult(); + } } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/GlycolDehydrationlModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/GlycolDehydrationlModule.java index 38dfa7b550..7d630d93d5 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/GlycolDehydrationlModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/GlycolDehydrationlModule.java @@ -1,5 +1,8 @@ package neqsim.processSimulation.processSystem.processModules; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; import neqsim.processSimulation.processEquipment.absorber.SimpleTEGAbsorber; import neqsim.processSimulation.processEquipment.heatExchanger.Cooler; @@ -21,506 +24,528 @@ * @version $Id: $Id */ public class GlycolDehydrationlModule extends ProcessModuleBaseClass { - private static final long serialVersionUID = 1000; - - protected StreamInterface gasStreamToAbsorber = null, strippingGas = null, - gasStreamFromAbsorber = null, gasFromStripper = null, leanTEGStreamToAbsorber = null; - protected SimpleTEGAbsorber absorbtionColumn = null; - // protected DistillationColumn stripperColumn = null; - protected Separator stripperColumn = null; - Heater reboiler = null; - protected Pump HPpump = null; - protected Separator glycolFlashDrum = null, waterSeparator = null; - protected ThrottlingValve valveHP = null, valveMP = null; - Cooler heatExchanger1 = null, heatExchanger2 = null, heatExchanger3 = null; - double waterDewPontSpecification = 273.15 - 10.0; - double numberOfTheoreticalEquilibriumStages = 2; - private double flashPressure = 5.0; - double designStandardGasFlowRate = 20.0, maxAbsorberDesignPressure = 70.0; - double designGasFeedTemperature = 273.15 + 30.0; - double leanGlycolMolarFraction = 0.95, leanGlycolwtFraction = 0.99, - leanGlycolMolarFlowRate = 1.0, maxglycolFlowRate = 1; - String glycolTypeName = "TEG"; - double reboilerTemperature = 273.15 + 204.0, regenerationPressure = 1.4; - - public GlycolDehydrationlModule(String name) { - super(name); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(GlycolDehydrationlModule.class); + + protected StreamInterface gasStreamToAbsorber = null; + protected StreamInterface strippingGas = null; + protected StreamInterface gasStreamFromAbsorber = null; + protected StreamInterface gasFromStripper = null; + protected StreamInterface leanTEGStreamToAbsorber = null; + protected SimpleTEGAbsorber absorbtionColumn = null; + // protected DistillationColumn stripperColumn = null; + protected Separator stripperColumn = null; + Heater reboiler = null; + protected Pump HPpump = null; + protected Separator glycolFlashDrum = null; + protected Separator waterSeparator = null; + protected ThrottlingValve valveHP = null; + protected ThrottlingValve valveMP = null; + + Cooler heatExchanger1 = null; + Cooler heatExchanger2 = null; + Cooler heatExchanger3 = null; + + double waterDewPontSpecification = 273.15 - 10.0; + double numberOfTheoreticalEquilibriumStages = 2; + private double flashPressure = 5.0; + double designStandardGasFlowRate = 20.0; + double maxAbsorberDesignPressure = 70.0; + double designGasFeedTemperature = 273.15 + 30.0; + double leanGlycolMolarFraction = 0.95; + double leanGlycolwtFraction = 0.99; + double leanGlycolMolarFlowRate = 1.0; + double maxglycolFlowRate = 1; + String glycolTypeName = "TEG"; + double reboilerTemperature = 273.15 + 204.0; + double regenerationPressure = 1.4; + + /** + *

+ * Constructor for GlycolDehydrationlModule. + *

+ * + * @param name a {@link java.lang.String} object + */ + public GlycolDehydrationlModule(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void addInputStream(String streamName, StreamInterface stream) { + if (streamName.equals("gasStreamToAbsorber")) { + this.gasStreamToAbsorber = stream; + this.strippingGas = stream.clone(); } - - /** {@inheritDoc} */ - @Override - public void addInputStream(String streamName, StreamInterface stream) { - if (streamName.equals("gasStreamToAbsorber")) { - this.gasStreamToAbsorber = stream; - this.strippingGas = stream.clone(); - } - if (streamName.equals("strippingGas")) { - this.strippingGas = stream; - } + if (streamName.equals("strippingGas")) { + this.strippingGas = stream; } + } - /** {@inheritDoc} */ - @Override - public StreamInterface getOutputStream(String streamName) { - if (!isInitializedStreams) { - initializeStreams(); - } - if (streamName.equals("gasStreamFromAbsorber")) { - return this.gasStreamFromAbsorber; - } - if (streamName.equals("liquidFromStripper")) { - return this.stripperColumn.getLiquidOutStream(); - } - if (streamName.equals("liquidFromStripper")) { - return this.stripperColumn.getLiquidOutStream(); - } - if (streamName.equals("condenserStripper")) { - return this.stripperColumn.getGasOutStream(); - } else { - return null; - } + /** {@inheritDoc} */ + @Override + public StreamInterface getOutputStream(String streamName) { + if (!isInitializedStreams) { + initializeStreams(); } - - /** - *

- * solveAbsorptionFactor. - *

- * - * @param Ea a double - * @return a double - */ - public double solveAbsorptionFactor(double Ea) { - double A = 7.0, Aold = 7.0; - double error = 1.0, errorOld = 1.0; - int iter = 0; - do { - iter++; - errorOld = error; - error = (Math.pow(A, numberOfTheoreticalEquilibriumStages + 1.0) - A) - / (Math.pow(A, numberOfTheoreticalEquilibriumStages + 1.0) - 1) - Ea; - - double dErrordA = (error - errorOld) / (A - Aold); - Aold = A; - if (iter > 2) { - A -= error / dErrordA; - } else { - A += error; - } - } while (Math.abs(error) > 1e-6 && iter < 100); - return A; + if (streamName.equals("gasStreamFromAbsorber")) { + return this.gasStreamFromAbsorber; } - - /** {@inheritDoc} */ - @Override - public void run() { - if (!isInitializedStreams) { - initializeStreams(); - } - if (!isInitializedModule) { - initializeModule(); - } - if (!isCalcDesign()) { - calcDesign(); - } - getOperations().run(); + if (streamName.equals("liquidFromStripper")) { + return this.stripperColumn.getLiquidOutStream(); } - - /** {@inheritDoc} */ - @Override - public void initializeStreams() { - isInitializedStreams = true; - try { - this.gasStreamFromAbsorber = this.gasStreamToAbsorber.clone(); - this.gasStreamFromAbsorber.setName("Stream from TEG Absorber"); - - this.gasFromStripper = this.gasStreamToAbsorber.clone(); - this.gasFromStripper.setName("Gas stream from Stripper"); - - this.leanTEGStreamToAbsorber = this.gasStreamToAbsorber.clone(); - this.leanTEGStreamToAbsorber.setName("lean TEG to absorber"); - - this.leanTEGStreamToAbsorber.getThermoSystem().setEmptyFluid(); - this.leanTEGStreamToAbsorber.getThermoSystem().addComponent("water", - leanGlycolMolarFlowRate * (1.0 - leanGlycolMolarFraction)); - this.leanTEGStreamToAbsorber.getThermoSystem().addComponent("TEG", - leanGlycolMolarFlowRate * leanGlycolMolarFraction); - this.leanTEGStreamToAbsorber.getThermoSystem().setTotalFlowRate(maxglycolFlowRate, - "kg/hr"); - } catch (Exception e) { - e.printStackTrace(); - } + if (streamName.equals("liquidFromStripper")) { + return this.stripperColumn.getLiquidOutStream(); } - - /** {@inheritDoc} */ - @Override - public void initializeModule() { - if (!isInitializedStreams) { - initializeStreams(); - } - isInitializedModule = true; - - absorbtionColumn = new SimpleTEGAbsorber("absorbtionColumn"); - absorbtionColumn.addGasInStream(gasStreamToAbsorber); - absorbtionColumn.addSolventInStream(leanTEGStreamToAbsorber); - - valveHP = new ThrottlingValve("valveHP", absorbtionColumn.getLiquidOutStream()); - valveHP.setOutletPressure(flashPressure); - - glycolFlashDrum = new Separator("flash drum", valveHP.getOutletStream()); - - valveMP = new ThrottlingValve("valveMP", glycolFlashDrum.getLiquidOutStream()); - valveMP.setOutletPressure(regenerationPressure); - - /* - * stripperColumn = new DistillationColumn(5, true, false); - * stripperColumn.addFeedStream(valveMP.getOutStream(), 3); - * stripperColumn.setCondenserTemperature(273.15 + 80.0); ((Reboiler) - * stripperColumn.getReboiler()).setRefluxRatio(11.7); - * - */ - - Heater reboiler = new Heater("reboiler", valveMP.getOutletStream()); - reboiler.setOutTemperature(reboilerTemperature); - - strippingGas.setTemperature(reboilerTemperature, "K"); - strippingGas.setPressure(regenerationPressure, "bara"); - stripperColumn = new Separator("stripperColumn", reboiler.getOutletStream()); - stripperColumn.addStream(strippingGas); - - heatExchanger1 = new Cooler("heatExchanger1", stripperColumn.getLiquidOutStream()); - heatExchanger1.setOutTemperature(100.0); - - HPpump = new Pump("HP lean TEG pump", heatExchanger1.getOutletStream()); - HPpump.setOutletPressure(gasStreamToAbsorber.getPressure()); - - heatExchanger2 = new Cooler("heatExchanger2", HPpump.getOutletStream()); - heatExchanger2.setOutTemperature(273.15 + 40.0); - - heatExchanger3 = new Cooler("heatExchanger3", stripperColumn.getGasOutStream()); - heatExchanger3.setOutTemperature(273.15 + 30.0); - - waterSeparator = new Separator("watersep", heatExchanger3.getOutletStream()); - - // leanTEGStreamToAbsorber = heatExchanger2.getOutStream(); - // getOperations().add(gasStreamToAbsorber); - getOperations().add(leanTEGStreamToAbsorber); - getOperations().add(absorbtionColumn); - // getOperations().add(gasStreamFromAbsorber); - getOperations().add(valveHP); - getOperations().add(glycolFlashDrum); - getOperations().add(valveMP); - getOperations().add(reboiler); - getOperations().add(stripperColumn); - - getOperations().add(heatExchanger1); - getOperations().add(HPpump); - getOperations().add(heatExchanger2); - getOperations().add(heatExchanger3); - getOperations().add(waterSeparator); - - // operations.add(leanTEGStreamToAbsorber); + if (streamName.equals("condenserStripper")) { + return this.stripperColumn.getGasOutStream(); + } else { + return null; } - - /** {@inheritDoc} */ - @Override - public void setProperty(String specificationName, double value, String unit) { - if (unit == "") { - setProperty(specificationName, value); - } else { - setProperty(specificationName, value); - } + } + + /** + *

+ * solveAbsorptionFactor. + *

+ * + * @param Ea a double + * @return a double + */ + public double solveAbsorptionFactor(double Ea) { + double A = 7.0; + double Aold = 7.0; + double error = 1.0; + double errorOld = 1.0; + int iter = 0; + do { + iter++; + errorOld = error; + error = (Math.pow(A, numberOfTheoreticalEquilibriumStages + 1.0) - A) + / (Math.pow(A, numberOfTheoreticalEquilibriumStages + 1.0) - 1) - Ea; + + double dErrordA = (error - errorOld) / (A - Aold); + Aold = A; + if (iter > 2) { + A -= error / dErrordA; + } else { + A += error; + } + } while (Math.abs(error) > 1e-6 && iter < 100); + return A; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!isInitializedStreams) { + initializeStreams(); } - - /** {@inheritDoc} */ - @Override - public void setProperty(String specificationName, double value) { - if (specificationName.equals("water dew point specification")) { - waterDewPontSpecification = value; - } - if (specificationName.equals("number of theoretical stages")) { - numberOfTheoreticalEquilibriumStages = value; - } - if (specificationName.equals("designStandardGasFlowRate")) { - designStandardGasFlowRate = value; - } - if (specificationName.equals("designGasFeedTemperature")) { - designGasFeedTemperature = value; - } - if (specificationName.equals("maxAbsorberDesignPressure")) { - maxAbsorberDesignPressure = value; - } - if (specificationName.equals("maxglycolFlowRate")) { - maxglycolFlowRate = value; - } - if (specificationName.equals("flashPressure")) { - flashPressure = value; - } - if (specificationName.equals("reboilerTemperature")) { - reboilerTemperature = value; - } - if (specificationName.equals("regenerationPressure")) { - regenerationPressure = value; - } + if (!isInitializedModule) { + initializeModule(); } - - /** - *

- * calcGlycolConcentration. - *

- * - * @param y0 a double - * @return a double - */ - public double calcGlycolConcentration(double y0) { - Stream tempStream = (Stream) this.gasStreamToAbsorber.clone(); - tempStream.run(); - - double dn = 1.0 * tempStream.getThermoSystem().getPhase(0).getComponent("water") - .getNumberOfMolesInPhase(); - double error = 1.0, oldError = 0.0; - double oldNumberOfMoles = 0.0, numberOfMoles = 0.0; - int iter = 0; - do { - iter++; - oldNumberOfMoles = numberOfMoles; - tempStream.getThermoSystem().addComponent("TEG", dn); - tempStream.run(); - numberOfMoles = - tempStream.getThermoSystem().getPhase(0).getComponent("TEG").getNumberOfmoles(); - oldError = error; - error = (tempStream.getThermoSystem().getPhase(0).getComponent("water").getx() - y0);// / - // y0; - - double derrordn = (error - oldError) / (numberOfMoles - oldNumberOfMoles); - if (iter < 2) { - dn = error; - } else { - dn = -error / derrordn; - } - System.out.println("error " + error); - } while (Math.abs(error) > 1e-8 && iter < 100); - leanGlycolMolarFraction = - tempStream.getThermoSystem().getPhase(1).getComponent("TEG").getx(); - leanGlycolwtFraction = tempStream.getThermoSystem().getPhase(1).getComponent("TEG").getx() - * tempStream.getThermoSystem().getPhase(1).getComponent("TEG").getMolarMass() - / tempStream.getThermoSystem().getPhase(1).getMolarMass(); - - return leanGlycolwtFraction; + if (!isCalcDesign()) { + calcDesign(); } - - /** - *

- * calcKglycol. - *

- * - * @return a double - */ - public double calcKglycol() { - Stream tempStream = (Stream) this.gasStreamToAbsorber.clone(); - tempStream.getThermoSystem().addComponent("TEG", 5.0 * tempStream.getThermoSystem() - .getPhase(0).getComponent("water").getNumberOfMolesInPhase()); - tempStream.run(); - double activityCoefficientTEG = - tempStream.getThermoSystem().getPhase(1).getActivityCoefficient(tempStream - .getThermoSystem().getPhase(1).getComponent("water").getComponentNumber()); - double K = tempStream.getThermoSystem().getPhase(0).getComponent("water").getx() - / (tempStream.getThermoSystem().getPhase(1).getComponent("water").getx() - * activityCoefficientTEG); - - return K; + getOperations().run(id); + + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void initializeStreams() { + isInitializedStreams = true; + try { + this.gasStreamFromAbsorber = this.gasStreamToAbsorber.clone(); + this.gasStreamFromAbsorber.setName("Stream from TEG Absorber"); + + this.gasFromStripper = this.gasStreamToAbsorber.clone(); + this.gasFromStripper.setName("Gas stream from Stripper"); + + this.leanTEGStreamToAbsorber = this.gasStreamToAbsorber.clone(); + this.leanTEGStreamToAbsorber.setName("lean TEG to absorber"); + + this.leanTEGStreamToAbsorber.getThermoSystem().setEmptyFluid(); + this.leanTEGStreamToAbsorber.getThermoSystem().addComponent("water", + leanGlycolMolarFlowRate * (1.0 - leanGlycolMolarFraction)); + this.leanTEGStreamToAbsorber.getThermoSystem().addComponent("TEG", + leanGlycolMolarFlowRate * leanGlycolMolarFraction); + this.leanTEGStreamToAbsorber.getThermoSystem().setTotalFlowRate(maxglycolFlowRate, "kg/hr"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - gasStreamFromAbsorber.getThermoSystem().display(); - leanTEGStreamToAbsorber.displayResult(); - glycolFlashDrum.displayResult(); - heatExchanger2.displayResult(); - waterSeparator.displayResult(); + /** {@inheritDoc} */ + @Override + public void initializeModule() { + if (!isInitializedStreams) { + initializeStreams(); } + isInitializedModule = true; - /** {@inheritDoc} */ - @Override - public void calcDesign() { - setIsCalcDesign(true); - double yN = gasStreamToAbsorber.getThermoSystem().getPhase(0).getComponent("water").getx(); - - // Estimates K value - double K = calcKglycol();// gasStreamToAbsorber.getThermoSystem().getPhase(1).getComponent("water").getFugacityCoefficient() - // / - // gasStreamToAbsorber.getThermoSystem().getPhase(0).getComponent("water").getFugacityCoefficient(); - gasStreamFromAbsorber = gasStreamToAbsorber.clone(); - // gasStreamFromAbsorber.getThermoSystem().addComponent("water", 1.0); - gasStreamFromAbsorber.getThermoSystem().setTemperature(waterDewPontSpecification); - gasStreamFromAbsorber.run(); - double y1 = - gasStreamFromAbsorber.getThermoSystem().getPhase(0).getComponent("water").getx(); - gasStreamFromAbsorber.getThermoSystem().setTemperature(waterDewPontSpecification - 10.0); - gasStreamFromAbsorber.run(); - double y0 = - gasStreamFromAbsorber.getThermoSystem().getPhase(0).getComponent("water").getx(); - gasStreamFromAbsorber.run(); - calcGlycolConcentration(y0); - - double Ea = (yN - y1) / (yN - y0); - - double absorptionFactor = solveAbsorptionFactor(Ea); - leanGlycolMolarFlowRate = - absorptionFactor * K * designStandardGasFlowRate * 42.28981 / 24.0 / 3600; // kg - // TEG/hr - // gasStreamFromAbsorber.displayResult(); - // double kgWater = - // gasStreamToAbsorber.getThermoSystem().getPhase(0).getComponent("water").getx() - // * designStandardGasFlowRate*1e6 * 42.28981 / 24.0 /3600 * - // gasStreamFromAbsorber.getThermoSystem().getPhase(0).getComponent("water").getMolarMass(); - // double kgTEGperkgWater = leanGlycolMolarFlowRate / kgWater; - - gasStreamFromAbsorber.getThermoSystem().removePhase(1); - gasStreamFromAbsorber.getThermoSystem().setTemperature(designGasFeedTemperature); - gasStreamFromAbsorber.run(); - /* - * absorbtionColumn.setNumberOfTheoreticalStages( numberOfTheoreticalEquilibriumStages); - * absorbtionColumn.getMechanicalDesign().setMaxDesignGassVolumeFlow( - * designStandardGasFlowRate); - * absorbtionColumn.getMechanicalDesign().setMaxDesignVolumeFlow( - * designStandardGasFlowRate); - * absorbtionColumn.getMechanicalDesign().setMaxOperationPressure( - * maxAbsorberDesignPressure); absorbtionColumn.getMechanicalDesign().calcDesign(); - */ - this.leanTEGStreamToAbsorber.getThermoSystem().setEmptyFluid(); - this.leanTEGStreamToAbsorber.getThermoSystem().addComponent("methane", 1e-15); - this.leanTEGStreamToAbsorber.getThermoSystem().addComponent("water", - leanGlycolMolarFlowRate * (1.0 - leanGlycolMolarFraction)); - this.leanTEGStreamToAbsorber.getThermoSystem().addComponent("TEG", - leanGlycolMolarFlowRate * leanGlycolMolarFraction); - this.leanTEGStreamToAbsorber.run(); - } + absorbtionColumn = new SimpleTEGAbsorber("absorbtionColumn"); + absorbtionColumn.addGasInStream(gasStreamToAbsorber); + absorbtionColumn.addSolventInStream(leanTEGStreamToAbsorber); - /** {@inheritDoc} */ - @Override - public void setDesign() { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkCPAstatoil((273.15 + 40.0), 1.0); - testSystem.addComponent("water", leanGlycolMolarFlowRate * (1.0 - leanGlycolMolarFraction)); - testSystem.addComponent("TEG", leanGlycolMolarFlowRate * leanGlycolMolarFraction); - testSystem.setMixingRule(9); - this.leanTEGStreamToAbsorber.setThermoSystem(testSystem); - this.leanTEGStreamToAbsorber.run(); - // this.leanTEGStreamToAbsorber.displayResult(); - - absorbtionColumn.getMechanicalDesign().setDesign(); - } + valveHP = new ThrottlingValve("valveHP", absorbtionColumn.getLiquidOutStream()); + valveHP.setOutletPressure(flashPressure); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkCPAstatoil((273.15 + 40.0), 70.0); - - testSystem.addComponent("methane", 100.0); - testSystem.addComponent("water", 0.1); - testSystem.addComponent("TEG", 0.0); - - testSystem.createDatabase(true); - testSystem.setMultiPhaseCheck(true); - testSystem.setMixingRule(10); - testSystem.setTotalFlowRate(5, "MSm^3/day"); - - Stream gasinletStream = new Stream("gasinletStream", testSystem); - - neqsim.thermo.system.SystemInterface strippingGasSystem = - new neqsim.thermo.system.SystemSrkCPAstatoil((273.15 + 40.0), 70.0); - - strippingGasSystem.addComponent("methane", 1.0); - strippingGasSystem.addComponent("water", 0); - strippingGasSystem.addComponent("TEG", 0); - - strippingGasSystem.createDatabase(true); - strippingGasSystem.setMultiPhaseCheck(true); - strippingGasSystem.setMixingRule(10); - strippingGasSystem.setTotalFlowRate(0.005, "MSm^3/day"); - - Stream strippingGasStream = new Stream("strippingGasStream", strippingGasSystem); - - StreamSaturatorUtil saturator = new StreamSaturatorUtil("saturator", gasinletStream); - - Separator separator = new Separator("Separator 1", saturator.getOutletStream()); - - neqsim.processSimulation.processSystem.processModules.GlycolDehydrationlModule TEGplant = - new neqsim.processSimulation.processSystem.processModules.GlycolDehydrationlModule("TEGplant"); - TEGplant.addInputStream("gasStreamToAbsorber", saturator.getOutletStream()); - TEGplant.addInputStream("strippingGas", strippingGasStream); - TEGplant.setSpecification("water dew point specification", 273.15 - 10.0); - TEGplant.setSpecification("number of theoretical stages", 1.5); - TEGplant.setSpecification("maxAbsorberDesignPressure", 70.0); - TEGplant.setSpecification("designStandardGasFlowRate", 5.0e6); - TEGplant.setSpecification("maxglycolFlowRate", 10.0); - TEGplant.setSpecification("designGasFeedTemperature", 273.15 + 30); - TEGplant.setSpecification("flashPressure", 5.0); - TEGplant.setSpecification("regenerationPressure", 1.21325); - TEGplant.setSpecification("reboilerTemperature", 273.15 + 205.0); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(gasinletStream); - operations.add(saturator); - // operations.add(separator); - operations.add(TEGplant); - - operations.run(); - saturator.getOutletStream().displayResult(); - separator.getThermoSystem().display(); - ((ProcessEquipmentBaseClass) operations.getUnit("reboiler")).run(); - // separator.getGasOutStream().displayResult(); - // TEGplant.displayResult(); - // TEGplant.calcDesign(); - // TEGplant.setDesign(); - TEGplant.getOutputStream("gasStreamFromAbsorber").displayResult(); - - TEGplant.getOutputStream("liquidFromStripper").run(); - TEGplant.getOutputStream("liquidFromStripper").displayResult(); - System.out.println("wt TEG " + TEGplant.getOutputStream("liquidFromStripper").getFluid() - .getPhase(0).getWtFrac("TEG")); - System.out.println("reboiler duty " - + ((Heater) operations.getUnit("reboiler")).getDuty() / 1000.0 + " kW"); - System.out.println("Lean TEG flow " - + ((Pump) operations.getUnit("HP lean TEG pump")).getFluid().getFlowRate("kg/hr") - + " kg/hr"); - System.out.println("Lean TEG pump power " - + ((Pump) operations.getUnit("HP lean TEG pump")).getPower() / 1000.0 + " kW"); - - ((Separator) operations.getUnit("flash drum")).displayResult(); - ((Separator) operations.getUnit("watersep")).displayResult(); - ((ProcessEquipmentBaseClass) operations.getUnit("reboiler")).run(); - ((ProcessEquipmentBaseClass) operations.getUnit("reboiler")).displayResult(); - // TEGplant.getOutputStream("condenserStripper").displayResult(); - } + glycolFlashDrum = new Separator("flash drum", valveHP.getOutletStream()); - /** - *

- * Getter for the field flashPressure. - *

- * - * @return a double + valveMP = new ThrottlingValve("valveMP", glycolFlashDrum.getLiquidOutStream()); + valveMP.setOutletPressure(regenerationPressure); + + /* + * stripperColumn = new DistillationColumn(5, true, false); + * stripperColumn.addFeedStream(valveMP.getOutStream(), 3); + * stripperColumn.setCondenserTemperature(273.15 + 80.0); ((Reboiler) + * stripperColumn.getReboiler()).setRefluxRatio(11.7); */ - public double getFlashPressure() { - return flashPressure; + + Heater reboiler = new Heater("reboiler", valveMP.getOutletStream()); + reboiler.setOutTemperature(reboilerTemperature); + + strippingGas.setTemperature(reboilerTemperature, "K"); + strippingGas.setPressure(regenerationPressure, "bara"); + stripperColumn = new Separator("stripperColumn", reboiler.getOutletStream()); + stripperColumn.addStream(strippingGas); + + heatExchanger1 = new Cooler("heatExchanger1", stripperColumn.getLiquidOutStream()); + heatExchanger1.setOutTemperature(100.0); + + HPpump = new Pump("HP lean TEG pump", heatExchanger1.getOutletStream()); + HPpump.setOutletPressure(gasStreamToAbsorber.getPressure()); + + heatExchanger2 = new Cooler("heatExchanger2", HPpump.getOutletStream()); + heatExchanger2.setOutTemperature(273.15 + 40.0); + + heatExchanger3 = new Cooler("heatExchanger3", stripperColumn.getGasOutStream()); + heatExchanger3.setOutTemperature(273.15 + 30.0); + + waterSeparator = new Separator("watersep", heatExchanger3.getOutletStream()); + + // leanTEGStreamToAbsorber = heatExchanger2.getOutStream(); + // getOperations().add(gasStreamToAbsorber); + getOperations().add(leanTEGStreamToAbsorber); + getOperations().add(absorbtionColumn); + // getOperations().add(gasStreamFromAbsorber); + getOperations().add(valveHP); + getOperations().add(glycolFlashDrum); + getOperations().add(valveMP); + getOperations().add(reboiler); + getOperations().add(stripperColumn); + + getOperations().add(heatExchanger1); + getOperations().add(HPpump); + getOperations().add(heatExchanger2); + getOperations().add(heatExchanger3); + getOperations().add(waterSeparator); + + // operations.add(leanTEGStreamToAbsorber); + } + + /** {@inheritDoc} */ + @Override + public void setProperty(String specificationName, double value, String unit) { + if (unit == "") { + setProperty(specificationName, value); + } else { + setProperty(specificationName, value); } + } - /** - *

- * Setter for the field flashPressure. - *

- * - * @param flashPressure a double - */ - public void setFlashPressure(double flashPressure) { - this.flashPressure = flashPressure; + /** {@inheritDoc} */ + @Override + public void setProperty(String specificationName, double value) { + if (specificationName.equals("water dew point specification")) { + waterDewPontSpecification = value; + } + if (specificationName.equals("number of theoretical stages")) { + numberOfTheoreticalEquilibriumStages = value; + } + if (specificationName.equals("designStandardGasFlowRate")) { + designStandardGasFlowRate = value; } + if (specificationName.equals("designGasFeedTemperature")) { + designGasFeedTemperature = value; + } + if (specificationName.equals("maxAbsorberDesignPressure")) { + maxAbsorberDesignPressure = value; + } + if (specificationName.equals("maxglycolFlowRate")) { + maxglycolFlowRate = value; + } + if (specificationName.equals("flashPressure")) { + flashPressure = value; + } + if (specificationName.equals("reboilerTemperature")) { + reboilerTemperature = value; + } + if (specificationName.equals("regenerationPressure")) { + regenerationPressure = value; + } + } + + /** + *

+ * calcGlycolConcentration. + *

+ * + * @param y0 a double + * @return a double + */ + public double calcGlycolConcentration(double y0) { + Stream tempStream = (Stream) this.gasStreamToAbsorber.clone(); + tempStream.run(); + + double dn = 1.0 + * tempStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfMolesInPhase(); + double error = 1.0; + double oldError = 0.0; + double oldNumberOfMoles = 0.0; + double numberOfMoles = 0.0; + int iter = 0; + do { + iter++; + oldNumberOfMoles = numberOfMoles; + tempStream.getThermoSystem().addComponent("TEG", dn); + tempStream.run(); + numberOfMoles = + tempStream.getThermoSystem().getPhase(0).getComponent("TEG").getNumberOfmoles(); + oldError = error; + error = (tempStream.getThermoSystem().getPhase(0).getComponent("water").getx() - y0); // / + // y0; + + double derrordn = (error - oldError) / (numberOfMoles - oldNumberOfMoles); + if (iter < 2) { + dn = error; + } else { + dn = -error / derrordn; + } + System.out.println("error " + error); + } while (Math.abs(error) > 1e-8 && iter < 100); + leanGlycolMolarFraction = tempStream.getThermoSystem().getPhase(1).getComponent("TEG").getx(); + leanGlycolwtFraction = tempStream.getThermoSystem().getPhase(1).getComponent("TEG").getx() + * tempStream.getThermoSystem().getPhase(1).getComponent("TEG").getMolarMass() + / tempStream.getThermoSystem().getPhase(1).getMolarMass(); + + return leanGlycolwtFraction; + } + + /** + *

+ * calcKglycol. + *

+ * + * @return a double + */ + public double calcKglycol() { + Stream tempStream = (Stream) this.gasStreamToAbsorber.clone(); + tempStream.getThermoSystem().addComponent("TEG", 5.0 + * tempStream.getThermoSystem().getPhase(0).getComponent("water").getNumberOfMolesInPhase()); + tempStream.run(); + double activityCoefficientTEG = tempStream.getThermoSystem().getPhase(1).getActivityCoefficient( + tempStream.getThermoSystem().getPhase(1).getComponent("water").getComponentNumber()); + double K = tempStream.getThermoSystem().getPhase(0).getComponent("water").getx() + / (tempStream.getThermoSystem().getPhase(1).getComponent("water").getx() + * activityCoefficientTEG); + + return K; + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + gasStreamFromAbsorber.getThermoSystem().display(); + leanTEGStreamToAbsorber.displayResult(); + glycolFlashDrum.displayResult(); + heatExchanger2.displayResult(); + waterSeparator.displayResult(); + } + + /** {@inheritDoc} */ + @Override + public void calcDesign() { + setIsCalcDesign(true); + double yN = gasStreamToAbsorber.getThermoSystem().getPhase(0).getComponent("water").getx(); + + // Estimates K value + double K = calcKglycol(); // gasStreamToAbsorber.getThermoSystem().getPhase(1).getComponent("water").getFugacityCoefficient() + // / + // gasStreamToAbsorber.getThermoSystem().getPhase(0).getComponent("water").getFugacityCoefficient(); + gasStreamFromAbsorber = gasStreamToAbsorber.clone(); + // gasStreamFromAbsorber.getThermoSystem().addComponent("water", 1.0); + gasStreamFromAbsorber.getThermoSystem().setTemperature(waterDewPontSpecification); + + UUID id = UUID.randomUUID(); + gasStreamFromAbsorber.run(id); + double y1 = gasStreamFromAbsorber.getThermoSystem().getPhase(0).getComponent("water").getx(); + gasStreamFromAbsorber.getThermoSystem().setTemperature(waterDewPontSpecification - 10.0); + gasStreamFromAbsorber.run(id); + double y0 = gasStreamFromAbsorber.getThermoSystem().getPhase(0).getComponent("water").getx(); + gasStreamFromAbsorber.run(id); + calcGlycolConcentration(y0); + + double Ea = (yN - y1) / (yN - y0); + + double absorptionFactor = solveAbsorptionFactor(Ea); + leanGlycolMolarFlowRate = + absorptionFactor * K * designStandardGasFlowRate * 42.28981 / 24.0 / 3600; // kg + // TEG/hr + // gasStreamFromAbsorber.displayResult(); + // double kgWater = + // gasStreamToAbsorber.getThermoSystem().getPhase(0).getComponent("water").getx() + // * designStandardGasFlowRate*1e6 * 42.28981 / 24.0 /3600 * + // gasStreamFromAbsorber.getThermoSystem().getPhase(0).getComponent("water").getMolarMass(); + // double kgTEGperkgWater = leanGlycolMolarFlowRate / kgWater; + + gasStreamFromAbsorber.getThermoSystem().removePhase(1); + gasStreamFromAbsorber.getThermoSystem().setTemperature(designGasFeedTemperature); + gasStreamFromAbsorber.run(id); + /* + * absorbtionColumn.setNumberOfTheoreticalStages( numberOfTheoreticalEquilibriumStages); + * absorbtionColumn.getMechanicalDesign().setMaxDesignGassVolumeFlow( + * designStandardGasFlowRate); absorbtionColumn.getMechanicalDesign().setMaxDesignVolumeFlow( + * designStandardGasFlowRate); absorbtionColumn.getMechanicalDesign().setMaxOperationPressure( + * maxAbsorberDesignPressure); absorbtionColumn.getMechanicalDesign().calcDesign(); + */ + this.leanTEGStreamToAbsorber.getThermoSystem().setEmptyFluid(); + this.leanTEGStreamToAbsorber.getThermoSystem().addComponent("methane", 1e-15); + this.leanTEGStreamToAbsorber.getThermoSystem().addComponent("water", + leanGlycolMolarFlowRate * (1.0 - leanGlycolMolarFraction)); + this.leanTEGStreamToAbsorber.getThermoSystem().addComponent("TEG", + leanGlycolMolarFlowRate * leanGlycolMolarFraction); + this.leanTEGStreamToAbsorber.run(id); + } + + /** {@inheritDoc} */ + @Override + public void setDesign() { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkCPAstatoil((273.15 + 40.0), 1.0); + testSystem.addComponent("water", leanGlycolMolarFlowRate * (1.0 - leanGlycolMolarFraction)); + testSystem.addComponent("TEG", leanGlycolMolarFlowRate * leanGlycolMolarFraction); + testSystem.setMixingRule(9); + this.leanTEGStreamToAbsorber.setThermoSystem(testSystem); + this.leanTEGStreamToAbsorber.run(); + // this.leanTEGStreamToAbsorber.displayResult(); + + absorbtionColumn.getMechanicalDesign().setDesign(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkCPAstatoil((273.15 + 40.0), 70.0); + + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("water", 0.1); + testSystem.addComponent("TEG", 0.0); + + testSystem.createDatabase(true); + testSystem.setMultiPhaseCheck(true); + testSystem.setMixingRule(10); + testSystem.setTotalFlowRate(5, "MSm^3/day"); + + Stream gasinletStream = new Stream("gasinletStream", testSystem); + + neqsim.thermo.system.SystemInterface strippingGasSystem = + new neqsim.thermo.system.SystemSrkCPAstatoil((273.15 + 40.0), 70.0); + + strippingGasSystem.addComponent("methane", 1.0); + strippingGasSystem.addComponent("water", 0); + strippingGasSystem.addComponent("TEG", 0); + + strippingGasSystem.createDatabase(true); + strippingGasSystem.setMultiPhaseCheck(true); + strippingGasSystem.setMixingRule(10); + strippingGasSystem.setTotalFlowRate(0.005, "MSm^3/day"); + + Stream strippingGasStream = new Stream("strippingGasStream", strippingGasSystem); + + StreamSaturatorUtil saturator = new StreamSaturatorUtil("saturator", gasinletStream); + + Separator separator = new Separator("Separator 1", saturator.getOutletStream()); + + neqsim.processSimulation.processSystem.processModules.GlycolDehydrationlModule TEGplant = + new neqsim.processSimulation.processSystem.processModules.GlycolDehydrationlModule( + "TEGplant"); + TEGplant.addInputStream("gasStreamToAbsorber", saturator.getOutletStream()); + TEGplant.addInputStream("strippingGas", strippingGasStream); + TEGplant.setSpecification("water dew point specification", 273.15 - 10.0); + TEGplant.setSpecification("number of theoretical stages", 1.5); + TEGplant.setSpecification("maxAbsorberDesignPressure", 70.0); + TEGplant.setSpecification("designStandardGasFlowRate", 5.0e6); + TEGplant.setSpecification("maxglycolFlowRate", 10.0); + TEGplant.setSpecification("designGasFeedTemperature", 273.15 + 30); + TEGplant.setSpecification("flashPressure", 5.0); + TEGplant.setSpecification("regenerationPressure", 1.21325); + TEGplant.setSpecification("reboilerTemperature", 273.15 + 205.0); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(gasinletStream); + operations.add(saturator); + // operations.add(separator); + operations.add(TEGplant); + + operations.run(); + saturator.getOutletStream().displayResult(); + separator.getThermoSystem().display(); + ((ProcessEquipmentBaseClass) operations.getUnit("reboiler")).run(); + // separator.getGasOutStream().displayResult(); + // TEGplant.displayResult(); + // TEGplant.calcDesign(); + // TEGplant.setDesign(); + TEGplant.getOutputStream("gasStreamFromAbsorber").displayResult(); + + TEGplant.getOutputStream("liquidFromStripper").run(); + TEGplant.getOutputStream("liquidFromStripper").displayResult(); + System.out.println("wt TEG " + + TEGplant.getOutputStream("liquidFromStripper").getFluid().getPhase(0).getWtFrac("TEG")); + System.out.println( + "reboiler duty " + ((Heater) operations.getUnit("reboiler")).getDuty() / 1000.0 + " kW"); + System.out.println("Lean TEG flow " + + ((Pump) operations.getUnit("HP lean TEG pump")).getFluid().getFlowRate("kg/hr") + + " kg/hr"); + System.out.println("Lean TEG pump power " + + ((Pump) operations.getUnit("HP lean TEG pump")).getPower() / 1000.0 + " kW"); + + ((Separator) operations.getUnit("flash drum")).displayResult(); + ((Separator) operations.getUnit("watersep")).displayResult(); + ((ProcessEquipmentBaseClass) operations.getUnit("reboiler")).run(); + ((ProcessEquipmentBaseClass) operations.getUnit("reboiler")).displayResult(); + // TEGplant.getOutputStream("condenserStripper").displayResult(); + } + + /** + *

+ * Getter for the field flashPressure. + *

+ * + * @return a double + */ + public double getFlashPressure() { + return flashPressure; + } + + /** + *

+ * Setter for the field flashPressure. + *

+ * + * @param flashPressure a double + */ + public void setFlashPressure(double flashPressure) { + this.flashPressure = flashPressure; + } } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/MEGReclaimerModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/MEGReclaimerModule.java index 5f34cb272a..6160a1a464 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/MEGReclaimerModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/MEGReclaimerModule.java @@ -1,5 +1,8 @@ package neqsim.processSimulation.processSystem.processModules; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.heatExchanger.Heater; import neqsim.processSimulation.processEquipment.mixer.Mixer; import neqsim.processSimulation.processEquipment.pump.Pump; @@ -18,168 +21,176 @@ * @version $Id: $Id */ public class MEGReclaimerModule extends ProcessModuleBaseClass { - private static final long serialVersionUID = 1000; - - protected StreamInterface streamToReclaimer = null, streamToWaterRemoval = null, - streamFromBoosterCompressor = null, streamWithWaste = null; - - ThrottlingValve inletValve = null; - Mixer inletMixer = null; - protected Separator flashSeparator = null; - Pump MEGRecircPump = null; - Heater MEGrecircHeater = null; - ThrottlingValve recircValve = null; - Heater vacumCooler = null; - - double reclaimerPressure = 0.17; - - public MEGReclaimerModule(String name) { - super(name); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(MEGReclaimerModule.class); + + protected StreamInterface streamToReclaimer = null; + protected StreamInterface streamToWaterRemoval = null; + protected StreamInterface streamFromBoosterCompressor = null; + protected StreamInterface streamWithWaste = null; + ThrottlingValve inletValve = null; + Mixer inletMixer = null; + protected Separator flashSeparator = null; + Pump MEGRecircPump = null; + Heater MEGrecircHeater = null; + ThrottlingValve recircValve = null; + Heater vacumCooler = null; + + double reclaimerPressure = 0.17; + + /** + *

Constructor for MEGReclaimerModule.

+ * + * @param name a {@link java.lang.String} object + */ + public MEGReclaimerModule(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void addInputStream(String streamName, StreamInterface stream) { + if (streamName.equals("streamToReclaimer")) { + this.streamToReclaimer = stream; } + } - /** {@inheritDoc} */ - @Override - public void addInputStream(String streamName, StreamInterface stream) { - if (streamName.equals("streamToReclaimer")) { - this.streamToReclaimer = stream; - } + /** {@inheritDoc} */ + @Override + public StreamInterface getOutputStream(String streamName) { + if (!isInitializedStreams) { + initializeStreams(); } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutputStream(String streamName) { - if (!isInitializedStreams) { - initializeStreams(); - } - if (streamName.equals("streamToWaterRemoval")) { - return this.streamToWaterRemoval; - } else { - return null; - } + if (streamName.equals("streamToWaterRemoval")) { + return this.streamToWaterRemoval; + } else { + return null; } - - /** {@inheritDoc} */ - @Override - public void initializeStreams() { - isInitializedStreams = true; - try { - this.streamToWaterRemoval = (Stream) this.streamToReclaimer.clone(); - this.streamToWaterRemoval.setName("Desalted MEG stream"); - - this.streamFromBoosterCompressor = (Stream) this.streamToReclaimer.clone(); - this.streamFromBoosterCompressor.setName("Stream from Booster Compressor"); - - this.streamWithWaste = (Stream) this.streamToReclaimer.clone(); - this.streamWithWaste.setName("Reclaimer Waste Stream"); - } catch (Exception e) { - e.printStackTrace(); - } + } + + /** {@inheritDoc} */ + @Override + public void initializeStreams() { + isInitializedStreams = true; + try { + this.streamToWaterRemoval = this.streamToReclaimer.clone(); + this.streamToWaterRemoval.setName("Desalted MEG stream"); + + this.streamFromBoosterCompressor = this.streamToReclaimer.clone(); + this.streamFromBoosterCompressor.setName("Stream from Booster Compressor"); + + this.streamWithWaste = this.streamToReclaimer.clone(); + this.streamWithWaste.setName("Reclaimer Waste Stream"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } - /** {@inheritDoc} */ - @Override - public void initializeModule() { - isInitializedModule = true; + /** {@inheritDoc} */ + @Override + public void initializeModule() { + isInitializedModule = true; - inletValve = new ThrottlingValve("inletValve", streamToReclaimer); - inletValve.setOutletPressure(reclaimerPressure); - inletValve.setIsoThermal(true); + inletValve = new ThrottlingValve("inletValve", streamToReclaimer); + inletValve.setOutletPressure(reclaimerPressure); + inletValve.setIsoThermal(true); - inletMixer = new Mixer("inletMixer"); - inletMixer.addStream(inletValve.getOutletStream()); + inletMixer = new Mixer("inletMixer"); + inletMixer.addStream(inletValve.getOutletStream()); - flashSeparator = new Separator("flashSeparator", inletMixer.getOutletStream()); + flashSeparator = new Separator("flashSeparator", inletMixer.getOutletStream()); - MEGRecircPump = new Pump("MEGRecircPump", flashSeparator.getLiquidOutStream()); - MEGRecircPump.setMolarFlow(50.0); - MEGRecircPump.setOutletPressure(5.0); + MEGRecircPump = new Pump("MEGRecircPump", flashSeparator.getLiquidOutStream()); + MEGRecircPump.setMolarFlow(50.0); + MEGRecircPump.setOutletPressure(5.0); - MEGrecircHeater = new Heater("MEGrecircHeater", MEGRecircPump.getOutletStream()); - // MEGrecircHeater.setEnergyInput(5000.0); - MEGrecircHeater.setOutTemperature(273 + 68.9); + MEGrecircHeater = new Heater("MEGrecircHeater", MEGRecircPump.getOutletStream()); + // MEGrecircHeater.setEnergyInput(5000.0); + MEGrecircHeater.setOutTemperature(273 + 68.9); - recircValve = new ThrottlingValve("recircValve", MEGrecircHeater.getOutletStream()); - recircValve.setOutletPressure(reclaimerPressure); - recircValve.setIsoThermal(true); + recircValve = new ThrottlingValve("recircValve", MEGrecircHeater.getOutletStream()); + recircValve.setOutletPressure(reclaimerPressure); + recircValve.setIsoThermal(true); - inletMixer.addStream(recircValve.getOutletStream()); + inletMixer.addStream(recircValve.getOutletStream()); - vacumCooler = new Heater("vacumCooler", flashSeparator.getGasOutStream()); + vacumCooler = new Heater("vacumCooler", flashSeparator.getGasOutStream()); - getOperations().add(streamToReclaimer); - getOperations().add(inletValve); - getOperations().add(inletMixer); - getOperations().add(flashSeparator); - getOperations().add(MEGRecircPump); - getOperations().add(MEGrecircHeater); - getOperations().add(recircValve); - } + getOperations().add(streamToReclaimer); + getOperations().add(inletValve); + getOperations().add(inletMixer); + getOperations().add(flashSeparator); + getOperations().add(MEGRecircPump); + getOperations().add(MEGrecircHeater); + getOperations().add(recircValve); + } - /** {@inheritDoc} */ - @Override - public void run() { - if (!isInitializedModule) { - initializeModule(); - } - for (int i = 0; i < 2; i++) { - getOperations().run(); - flashSeparator.displayResult(); - System.out.println("flow to vacum separator " - + inletMixer.getOutletStream().getThermoSystem().getTotalNumberOfMoles()); - } - - streamToWaterRemoval = flashSeparator.getGasOutStream(); + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!isInitializedModule) { + initializeModule(); } - - /** - *

- * setOperationPressure. - *

- * - * @param pressure a double - */ - public void setOperationPressure(double pressure) { - reclaimerPressure = pressure; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 30.0), 10.0); - - testSystem.addComponent("methane", 0.001); - testSystem.addComponent("CO2", 0.001); - testSystem.addComponent("MEG", 0.3); - testSystem.addComponent("water", 0.7); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - - Stream inletStream = new Stream("inletStream", testSystem); - inletStream.run(); - inletStream.displayResult(); - MEGReclaimerModule reclaimer = new MEGReclaimerModule("reclaimer"); - reclaimer.addInputStream("streamToReclaimer", inletStream); - reclaimer.setOperationPressure(0.17); - - reclaimer.run(); - // reclaimer.displayResult(); + for (int i = 0; i < 2; i++) { + getOperations().run(id); + flashSeparator.displayResult(); + System.out.println("flow to vacuum separator " + + inletMixer.getOutletStream().getThermoSystem().getTotalNumberOfMoles()); } - /** {@inheritDoc} */ - @Override - public void calcDesign() { - // design is done here - } - - /** {@inheritDoc} */ - @Override - public void setDesign() { - // set design is done here - } + streamToWaterRemoval = flashSeparator.getGasOutStream(); + setCalculationIdentifier(id); + } + + /** + *

+ * setOperationPressure. + *

+ * + * @param pressure a double + */ + public void setOperationPressure(double pressure) { + reclaimerPressure = pressure; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 30.0), 10.0); + + testSystem.addComponent("methane", 0.001); + testSystem.addComponent("CO2", 0.001); + testSystem.addComponent("MEG", 0.3); + testSystem.addComponent("water", 0.7); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.run(); + inletStream.displayResult(); + MEGReclaimerModule reclaimer = new MEGReclaimerModule("reclaimer"); + reclaimer.addInputStream("streamToReclaimer", inletStream); + reclaimer.setOperationPressure(0.17); + + reclaimer.run(); + // reclaimer.displayResult(); + } + + /** {@inheritDoc} */ + @Override + public void calcDesign() { + // design is done here + } + + /** {@inheritDoc} */ + @Override + public void setDesign() { + // set design is done here + } } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/MixerGasProcessingModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/MixerGasProcessingModule.java index 7565caa41b..c0ad2f3ac0 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/MixerGasProcessingModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/MixerGasProcessingModule.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processSystem.processModules; +import java.util.UUID; import neqsim.processSimulation.processEquipment.compressor.Compressor; import neqsim.processSimulation.processEquipment.heatExchanger.Cooler; import neqsim.processSimulation.processEquipment.mixer.Mixer; @@ -20,236 +21,255 @@ * @version $Id: $Id */ public class MixerGasProcessingModule extends ProcessModuleBaseClass { - private static final long serialVersionUID = 1000; - - StreamInterface feedStream, gasExitStream, oilExitStream, glycolFeedStream, glycolExitStream; - Separator glycolScrubber; - Separator inletSeparator; - double inletSepTemperature = 50.00; // bar' - double gasScrubberTemperature = 30.00, firstStageOutPressure = 110.0, - glycolScrubberTemperature = 20.0, secondStageOutPressure = 200.0; // bar - double glycolInjectionRate = 10.0, exportGasTemperature = 273.15 + 30.0, - liquidPumpPressure = 150.0; // m^3/hr - Compressor secondStageCompressor; - Pump oilPump; - Cooler secondStageAfterCooler; - - public MixerGasProcessingModule(String name) { - super(name); + private static final long serialVersionUID = 1000; + + StreamInterface feedStream; + StreamInterface gasExitStream; + StreamInterface oilExitStream; + StreamInterface glycolFeedStream; + StreamInterface glycolExitStream; + + Separator glycolScrubber; + Separator inletSeparator; + double inletSepTemperature = 50.00; // bar' + double gasScrubberTemperature = 30.00; + double firstStageOutPressure = 110.0; + double glycolScrubberTemperature = 20.0; + double secondStageOutPressure = 200.0; + double glycolInjectionRate = 10.0; + double exportGasTemperature = 273.15 + 30.0; + double liquidPumpPressure = 150.0; + + Compressor secondStageCompressor; + Pump oilPump; + Cooler secondStageAfterCooler; + + /** + *

Constructor for MixerGasProcessingModule.

+ * + * @param name a {@link java.lang.String} object + */ + public MixerGasProcessingModule(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void addInputStream(String streamName, StreamInterface stream) { + if (streamName.equals("feed stream")) { + this.feedStream = stream; } - - /** {@inheritDoc} */ - @Override - public void addInputStream(String streamName, StreamInterface stream) { - if (streamName.equals("feed stream")) { - this.feedStream = stream; - } - if (streamName.equals("glycol feed stream")) { - this.glycolFeedStream = stream; - } - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutputStream(String streamName) { - if (!isInitializedStreams) { - initializeStreams(); - } - if (streamName.equals("gas exit stream")) { - return this.gasExitStream; - } else if (streamName.equals("oil exit stream")) { - return this.oilExitStream; - } else if (streamName.equals("glycol exit stream")) { - return this.glycolExitStream; - } else if (streamName.equals("glycol feed stream")) { - return this.glycolFeedStream; - } else { - return null; - } - } - - /** {@inheritDoc} */ - @Override - public void initializeModule() { - isInitializedModule = true; - // double inletPressure = feedStream.getPressure(); - - Cooler inletCooler = new Cooler("inlet well stream cooler", feedStream); - inletCooler.setOutTemperature(inletSepTemperature + 273.15); - - inletSeparator = new Separator("Inlet separator", inletCooler.getOutletStream()); - - Cooler gasCooler = new Cooler("separator gas cooler", inletSeparator.getGasOutStream()); - gasCooler.setOutTemperature(gasScrubberTemperature + 273.15); - - oilPump = new Pump("liquid pump", inletSeparator.getLiquidOutStream()); - oilPump.setOutletPressure(liquidPumpPressure); - - Separator gasScrubber = - new Separator("HC dew point control scrubber", gasCooler.getOutletStream()); - - Recycle HPliquidRecycle = new Recycle("Resycle"); - double tolerance = 1e-2; - HPliquidRecycle.setTolerance(tolerance); - HPliquidRecycle.addStream(gasScrubber.getLiquidOutStream()); - inletSeparator.addStream(HPliquidRecycle.getOutStream()); - - Compressor firstStageCompressor = - new Compressor("1st stage compressor", gasScrubber.getGasOutStream()); - firstStageCompressor.setOutletPressure(firstStageOutPressure); - - glycolFeedStream.getThermoSystem().setPressure(firstStageOutPressure); - - Mixer glycolMixer = new Mixer("glycol injection mixer"); - glycolMixer.addStream(firstStageCompressor.getOutletStream()); - glycolMixer.addStream(glycolFeedStream); - - Cooler mixerAfterCooler = - new Cooler("glycol mixer after cooler", glycolMixer.getOutletStream()); - mixerAfterCooler.setOutTemperature(glycolScrubberTemperature + 273.15); - - glycolScrubber = - new Separator("Water dew point control scrubber", mixerAfterCooler.getOutletStream()); - - secondStageCompressor = - new Compressor("2nd stage compressor", glycolScrubber.getGasOutStream()); - secondStageCompressor.setOutletPressure(secondStageOutPressure); - - secondStageAfterCooler = - new Cooler("second stage after cooler", secondStageCompressor.getOutletStream()); - secondStageAfterCooler.setOutTemperature(exportGasTemperature + 273.15); - - getOperations().add(inletCooler); - getOperations().add(inletSeparator); - getOperations().add(gasCooler); - getOperations().add(oilPump); - getOperations().add(gasScrubber); - getOperations().add(HPliquidRecycle); - getOperations().add(firstStageCompressor); - getOperations().add(glycolMixer); - getOperations().add(mixerAfterCooler); - getOperations().add(glycolScrubber); - getOperations().add(secondStageCompressor); - getOperations().add(secondStageAfterCooler); - } - - /** {@inheritDoc} */ - @Override - public void initializeStreams() { - isInitializedStreams = true; - } - - /** {@inheritDoc} */ - @Override - public void run() { - if (!isInitializedModule) { - initializeModule(); - } - getOperations().run(); - - gasExitStream = secondStageAfterCooler.getOutletStream(); - oilExitStream = oilPump.getOutletStream(); - glycolExitStream = glycolScrubber.getLiquidOutStream(); + if (streamName.equals("glycol feed stream")) { + this.glycolFeedStream = stream; } + } - /** {@inheritDoc} */ - @Override - public void calcDesign() { - // design is done here + /** {@inheritDoc} */ + @Override + public StreamInterface getOutputStream(String streamName) { + if (!isInitializedStreams) { + initializeStreams(); } - - /** {@inheritDoc} */ - @Override - public void setDesign() { - // set design is done here + if (streamName.equals("gas exit stream")) { + return this.gasExitStream; + } else if (streamName.equals("oil exit stream")) { + return this.oilExitStream; + } else if (streamName.equals("glycol exit stream")) { + return this.glycolExitStream; + } else if (streamName.equals("glycol feed stream")) { + return this.glycolFeedStream; + } else { + return null; } - - /** {@inheritDoc} */ - @Override - public void setSpecification(String specificationName, double value) { - if (specificationName.equals("inlet separation temperature")) { - inletSepTemperature = value; - } else if (specificationName.equals("gas scrubber temperature")) { - gasScrubberTemperature = value; - } else if (specificationName.equals("first stage out pressure")) { - firstStageOutPressure = value; - } else if (specificationName.equals("glycol scrubber temperature")) { - glycolScrubberTemperature = value; - } else if (specificationName.equals("second stage out pressure")) { - secondStageOutPressure = value; - } else if (specificationName.equals("export gas temperature")) { - exportGasTemperature = value; - } else if (specificationName.equals("liquid pump out pressure")) { - liquidPumpPressure = value; - } + } + + /** {@inheritDoc} */ + @Override + public void initializeModule() { + isInitializedModule = true; + // double inletPressure = feedStream.getPressure(); + + Cooler inletCooler = new Cooler("inlet well stream cooler", feedStream); + inletCooler.setOutTemperature(inletSepTemperature + 273.15); + + inletSeparator = new Separator("Inlet separator", inletCooler.getOutletStream()); + + Cooler gasCooler = new Cooler("separator gas cooler", inletSeparator.getGasOutStream()); + gasCooler.setOutTemperature(gasScrubberTemperature + 273.15); + + oilPump = new Pump("liquid pump", inletSeparator.getLiquidOutStream()); + oilPump.setOutletPressure(liquidPumpPressure); + + Separator gasScrubber = + new Separator("HC dew point control scrubber", gasCooler.getOutletStream()); + + Recycle HPliquidRecycle = new Recycle("Resycle"); + double tolerance = 1e-2; + HPliquidRecycle.setTolerance(tolerance); + HPliquidRecycle.addStream(gasScrubber.getLiquidOutStream()); + inletSeparator.addStream(HPliquidRecycle.getOutletStream()); + + Compressor firstStageCompressor = + new Compressor("1st stage compressor", gasScrubber.getGasOutStream()); + firstStageCompressor.setOutletPressure(firstStageOutPressure); + + glycolFeedStream.getThermoSystem().setPressure(firstStageOutPressure); + + Mixer glycolMixer = new Mixer("glycol injection mixer"); + glycolMixer.addStream(firstStageCompressor.getOutletStream()); + glycolMixer.addStream(glycolFeedStream); + + Cooler mixerAfterCooler = + new Cooler("glycol mixer after cooler", glycolMixer.getOutletStream()); + mixerAfterCooler.setOutTemperature(glycolScrubberTemperature + 273.15); + + glycolScrubber = + new Separator("Water dew point control scrubber", mixerAfterCooler.getOutletStream()); + + secondStageCompressor = + new Compressor("2nd stage compressor", glycolScrubber.getGasOutStream()); + secondStageCompressor.setOutletPressure(secondStageOutPressure); + + secondStageAfterCooler = + new Cooler("second stage after cooler", secondStageCompressor.getOutletStream()); + secondStageAfterCooler.setOutTemperature(exportGasTemperature + 273.15); + + getOperations().add(inletCooler); + getOperations().add(inletSeparator); + getOperations().add(gasCooler); + getOperations().add(oilPump); + getOperations().add(gasScrubber); + getOperations().add(HPliquidRecycle); + getOperations().add(firstStageCompressor); + getOperations().add(glycolMixer); + getOperations().add(mixerAfterCooler); + getOperations().add(glycolScrubber); + getOperations().add(secondStageCompressor); + getOperations().add(secondStageAfterCooler); + } + + /** {@inheritDoc} */ + @Override + public void initializeStreams() { + isInitializedStreams = true; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!isInitializedModule) { + initializeModule(); } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 50, 65); - - testSystem.addComponent("methane", 50); - testSystem.addComponent("propane", 0.15); - testSystem.addComponent("nC10", 2); - testSystem.addComponent("water", 5); - testSystem.addComponent("TEG", 5e-9); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.setMultiPhaseCheck(true); - - neqsim.thermo.system.SystemInterface glycolTestSystem = - new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 15, 50); - glycolTestSystem.addComponent("methane", 0); - glycolTestSystem.addComponent("propane", 0); - glycolTestSystem.addComponent("nC10", 0); - glycolTestSystem.addComponent("water", 1e-4); - glycolTestSystem.addComponent("TEG", 0.8); - - glycolTestSystem.createDatabase(true); - glycolTestSystem.setMixingRule(10); - glycolTestSystem.setMultiPhaseCheck(true); - glycolTestSystem.init(0); - Stream wellStream = new Stream("Well stream", testSystem); - wellStream.getThermoSystem().setTotalFlowRate(5.0, "MSm^3/day"); - - Stream glycolFeedStream = new Stream("Glycol feed stream", glycolTestSystem); - glycolFeedStream.getThermoSystem().setTotalFlowRate(4.0 * 1e3, "kg/hr"); - - MixerGasProcessingModule separationModule = new MixerGasProcessingModule("GasMixer"); - separationModule.addInputStream("feed stream", wellStream); - separationModule.addInputStream("glycol feed stream", glycolFeedStream); - separationModule.setSpecification("inlet separation temperature", 55.0); - separationModule.setSpecification("gas scrubber temperature", 35.0); - separationModule.setSpecification("glycol scrubber temperature", 25.0); - separationModule.setSpecification("first stage out pressure", 110.0); - separationModule.setSpecification("second stage out pressure", 200.0); - separationModule.setSpecification("export gas temperature", 30.0); - separationModule.setSpecification("liquid pump out pressure", 150.0); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(wellStream); - operations.add(glycolFeedStream); - operations.add(separationModule); - operations.run(); - // glycolFeedStream.displayResult(); - // separationModule.getOutputStream("gas exit stream").displayResult(); - // separationModule.getOutputStream("oil exit stream").displayResult(); - // separationModule.getOutputStream("liquid pump").displayResult(); - double en = ((PumpInterface) separationModule.getOperations().getUnit("liquid pump")) - .getPower(); - // separationModule.getOutputStream("glycol feed stream").displayResult(); - // separationModule.getOutputStream("glycol exit stream").displayResult(); - - // ((Separator) operations.getUnit("Water dew point control - // scrubber")).displayResult(); + getOperations().run(id); + + gasExitStream = secondStageAfterCooler.getOutletStream(); + gasExitStream.setCalculationIdentifier(id); + oilExitStream = oilPump.getOutletStream(); + oilExitStream.setCalculationIdentifier(id); + glycolExitStream = glycolScrubber.getLiquidOutStream(); + glycolExitStream.setCalculationIdentifier(id); + + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void calcDesign() { + // design is done here + } + + /** {@inheritDoc} */ + @Override + public void setDesign() { + // set design is done here + } + + /** {@inheritDoc} */ + @Override + public void setSpecification(String specificationName, double value) { + if (specificationName.equals("inlet separation temperature")) { + inletSepTemperature = value; + } else if (specificationName.equals("gas scrubber temperature")) { + gasScrubberTemperature = value; + } else if (specificationName.equals("first stage out pressure")) { + firstStageOutPressure = value; + } else if (specificationName.equals("glycol scrubber temperature")) { + glycolScrubberTemperature = value; + } else if (specificationName.equals("second stage out pressure")) { + secondStageOutPressure = value; + } else if (specificationName.equals("export gas temperature")) { + exportGasTemperature = value; + } else if (specificationName.equals("liquid pump out pressure")) { + liquidPumpPressure = value; } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 50, 65); + + testSystem.addComponent("methane", 50); + testSystem.addComponent("propane", 0.15); + testSystem.addComponent("nC10", 2); + testSystem.addComponent("water", 5); + testSystem.addComponent("TEG", 5e-9); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.setMultiPhaseCheck(true); + + neqsim.thermo.system.SystemInterface glycolTestSystem = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 15, 50); + glycolTestSystem.addComponent("methane", 0); + glycolTestSystem.addComponent("propane", 0); + glycolTestSystem.addComponent("nC10", 0); + glycolTestSystem.addComponent("water", 1e-4); + glycolTestSystem.addComponent("TEG", 0.8); + + glycolTestSystem.createDatabase(true); + glycolTestSystem.setMixingRule(10); + glycolTestSystem.setMultiPhaseCheck(true); + glycolTestSystem.init(0); + Stream wellStream = new Stream("Well stream", testSystem); + wellStream.getThermoSystem().setTotalFlowRate(5.0, "MSm^3/day"); + + Stream glycolFeedStream = new Stream("Glycol feed stream", glycolTestSystem); + glycolFeedStream.getThermoSystem().setTotalFlowRate(4.0 * 1e3, "kg/hr"); + + MixerGasProcessingModule separationModule = new MixerGasProcessingModule("GasMixer"); + separationModule.addInputStream("feed stream", wellStream); + separationModule.addInputStream("glycol feed stream", glycolFeedStream); + separationModule.setSpecification("inlet separation temperature", 55.0); + separationModule.setSpecification("gas scrubber temperature", 35.0); + separationModule.setSpecification("glycol scrubber temperature", 25.0); + separationModule.setSpecification("first stage out pressure", 110.0); + separationModule.setSpecification("second stage out pressure", 200.0); + separationModule.setSpecification("export gas temperature", 30.0); + separationModule.setSpecification("liquid pump out pressure", 150.0); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(wellStream); + operations.add(glycolFeedStream); + operations.add(separationModule); + operations.run(); + // glycolFeedStream.displayResult(); + // separationModule.getOutputStream("gas exit stream").displayResult(); + // separationModule.getOutputStream("oil exit stream").displayResult(); + // separationModule.getOutputStream("liquid pump").displayResult(); + double en = + ((PumpInterface) separationModule.getOperations().getUnit("liquid pump")).getPower(); + // separationModule.getOutputStream("glycol feed stream").displayResult(); + // separationModule.getOutputStream("glycol exit stream").displayResult(); + + // ((Separator) operations.getUnit("Water dew point control + // scrubber")).displayResult(); + } } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/PropaneCoolingModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/PropaneCoolingModule.java index 0834685918..1c049eec28 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/PropaneCoolingModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/PropaneCoolingModule.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processSystem.processModules; +import java.util.UUID; import neqsim.processSimulation.processEquipment.compressor.Compressor; import neqsim.processSimulation.processEquipment.compressor.CompressorInterface; import neqsim.processSimulation.processEquipment.heatExchanger.Cooler; @@ -18,209 +19,214 @@ * @version $Id: $Id */ public class PropaneCoolingModule extends ProcessModuleBaseClass { - - public PropaneCoolingModule(String name) { - super(name); - } - /** - *

- * Setter for the field condenserTemperature. - *

- * - * @param condenserTemperature the condenserTemperature to set - */ - public void setCondenserTemperature(double condenserTemperature) { - this.condenserTemperature = condenserTemperature; - } - - /** - *

- * Setter for the field vaporizerTemperature. - *

- * - * @param vaporizerTemperature the vaporizerTemperature to set - */ - public void setVaporizerTemperature(double vaporizerTemperature) { - this.vaporizerTemperature = vaporizerTemperature; - } - - private static final long serialVersionUID = 1000; - - StreamInterface refrigerantStream; - private double condenserTemperature = 273.15 + 30.0; // Kelvin - private double vaporizerTemperature = 273.15 - 40.0; // Kelvin - - /** {@inheritDoc} */ - @Override - public void addInputStream(String streamName, StreamInterface stream) { - if (streamName.equals("refrigerant")) { - this.refrigerantStream = stream; - } - } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutputStream(String streamName) { - if (!isInitializedStreams) { - initializeStreams(); - } - if (streamName.equals("refrigerant")) { - return this.refrigerantStream; - } else if (streamName.equals("refrigerant...")) { - return this.refrigerantStream; - } else { - return null; - } + /** + *

Constructor for PropaneCoolingModule.

+ * + * @param name a {@link java.lang.String} object + */ + public PropaneCoolingModule(String name) { + super(name); + } + + /** + *

+ * Setter for the field condenserTemperature. + *

+ * + * @param condenserTemperature the condenserTemperature to set + */ + public void setCondenserTemperature(double condenserTemperature) { + this.condenserTemperature = condenserTemperature; + } + + /** + *

+ * Setter for the field vaporizerTemperature. + *

+ * + * @param vaporizerTemperature the vaporizerTemperature to set + */ + public void setVaporizerTemperature(double vaporizerTemperature) { + this.vaporizerTemperature = vaporizerTemperature; + } + + private static final long serialVersionUID = 1000; + + StreamInterface refrigerantStream; + private double condenserTemperature = 273.15 + 30.0; // Kelvin + private double vaporizerTemperature = 273.15 - 40.0; // Kelvin + + /** {@inheritDoc} */ + @Override + public void addInputStream(String streamName, StreamInterface stream) { + if (streamName.equals("refrigerant")) { + this.refrigerantStream = stream; } + } - /** {@inheritDoc} */ - @Override - public void initializeModule() { - isInitializedModule = true; - - refrigerantStream.getThermoSystem().setTemperature(condenserTemperature); - ((Stream) refrigerantStream).setSpecification("bubT"); - refrigerantStream.run(); - - ThrottlingValve JTvalve = new ThrottlingValve("JTvalve", refrigerantStream); - - Cooler cooler = new Cooler("propane evaporator", JTvalve.getOutletStream()); - cooler.setPressureDrop(0.35); - cooler.setSpecification("out stream"); - - Stream stream_2 = new Stream("stream_2", cooler.getOutletStream()); - stream_2.setSpecification("dewT"); - stream_2.getThermoSystem().setTemperature(vaporizerTemperature); - stream_2.run(); - - cooler.setOutletStream(stream_2); - JTvalve.setOutletPressure(stream_2.getPressure()); - - Compressor compressor1 = new Compressor("propane compressor", stream_2); - // compressor1.setIsentropicEfficiency(0.75); - // compressor1.setPower(180000); - compressor1.setOutletPressure(refrigerantStream.getPressure()); - - Heater condenser = new Heater("propane condenser", compressor1.getOutletStream()); - condenser.setPressureDrop(0.07); - condenser.setSpecification("out stream"); - condenser.setOutletStream((Stream) refrigerantStream); - - System.out.println("adding operations...."); - getOperations().add(refrigerantStream); - getOperations().add(JTvalve); - getOperations().add(cooler); - getOperations().add(stream_2); - getOperations().add(compressor1); - getOperations().add(condenser); - System.out.println("finished adding operations...."); + /** {@inheritDoc} */ + @Override + public StreamInterface getOutputStream(String streamName) { + if (!isInitializedStreams) { + initializeStreams(); } - - /** {@inheritDoc} */ - @Override - public void run() { - if (!isInitializedModule) { - initializeModule(); - } - System.out.println("running model...."); - getOperations().run(); - - // gasExitStream = secondStageAfterCooler.getOutStream(); - } - - /** {@inheritDoc} */ - @Override - public void initializeStreams() { - isInitializedStreams = true; - } - - /** {@inheritDoc} */ - @Override - public void calcDesign() { - // design is done here + if (streamName.equals("refrigerant")) { + return this.refrigerantStream; + } else if (streamName.equals("refrigerant...")) { + return this.refrigerantStream; + } else { + return null; } - - /** {@inheritDoc} */ - @Override - public void setDesign() { - // set design is done here + } + + /** {@inheritDoc} */ + @Override + public void initializeModule() { + UUID id = UUID.randomUUID(); + isInitializedModule = true; + + refrigerantStream.getThermoSystem().setTemperature(condenserTemperature); + ((Stream) refrigerantStream).setSpecification("bubT"); + refrigerantStream.run(id); + + ThrottlingValve JTvalve = new ThrottlingValve("JTvalve", refrigerantStream); + + Cooler cooler = new Cooler("propane evaporator", JTvalve.getOutletStream()); + cooler.setPressureDrop(0.35); + cooler.setSpecification("out stream"); + + Stream stream_2 = new Stream("stream_2", cooler.getOutletStream()); + stream_2.setSpecification("dewT"); + stream_2.getThermoSystem().setTemperature(vaporizerTemperature); + stream_2.run(id); + + cooler.setOutletStream(stream_2); + JTvalve.setOutletPressure(stream_2.getPressure()); + + Compressor compressor1 = new Compressor("propane compressor", stream_2); + // compressor1.setIsentropicEfficiency(0.75); + // compressor1.setPower(180000); + compressor1.setOutletPressure(refrigerantStream.getPressure()); + + Heater condenser = new Heater("propane condenser", compressor1.getOutletStream()); + condenser.setPressureDrop(0.07); + condenser.setSpecification("out stream"); + condenser.setOutletStream(refrigerantStream); + + System.out.println("adding operations...."); + getOperations().add(refrigerantStream); + getOperations().add(JTvalve); + getOperations().add(cooler); + getOperations().add(stream_2); + getOperations().add(compressor1); + getOperations().add(condenser); + System.out.println("finished adding operations...."); + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!isInitializedModule) { + initializeModule(); } - - /** {@inheritDoc} */ - @Override - public void setSpecification(String specificationName, double value) { - if (specificationName.equals("vaporizerTemperature")) { - setVaporizerTemperature(value); - } else if (specificationName.equals("condenserTemperature")) { - setCondenserTemperature(value); - } - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos(273.15 - 20, 1); - testSystem.addComponent("propane", 0.30); - testSystem.createDatabase(true); - - Stream porpane = new Stream("porpane", testSystem); - PropaneCoolingModule propaneModule = new PropaneCoolingModule("propaneModule"); - propaneModule.setCondenserTemperature(273.15 + 30); - propaneModule.setVaporizerTemperature(273.15 - 40); - - propaneModule.addInputStream("refrigerant", porpane); - propaneModule.run(); - - double compressorWork = - ((CompressorInterface) propaneModule.getOperations().getUnit("propane compressor")) - .getEnergy(); - - double evaporatorDuty = - ((Cooler) propaneModule.getOperations().getUnit("propane evaporator")) - .getEnergyInput(); - double evaporatorPressure = - ((Cooler) propaneModule.getOperations().getUnit("propane evaporator")) - .getOutletStream().getPressure(); - double evaporatorTemperature = - ((Cooler) propaneModule.getOperations().getUnit("propane evaporator")) - .getOutletStream().getTemperature(); - - double condenserDuty = ((Heater) propaneModule.getOperations().getUnit("propane condenser")) - .getEnergyInput(); - double condenserPressure = - ((Heater) propaneModule.getOperations().getUnit("propane condenser")).getOutletStream() - .getPressure(); - double condenserTemperature = - ((Heater) propaneModule.getOperations().getUnit("propane condenser")).getOutletStream() - .getTemperature(); - - System.out.println("Compressor work " + compressorWork + " W"); - - System.out.println("evaporator duty " + evaporatorDuty + " W"); - System.out.println("evaporator temperature " + (evaporatorTemperature - 273.15) + " C"); - System.out.println("evaporator pressure " + evaporatorPressure + " bara"); - - System.out.println("condenser duty " + condenserDuty + " W"); - System.out.println("condenser temperature " + (condenserTemperature - 273.15) + " C"); - System.out.println("condenser pressure " + condenserPressure + " bara"); - // ((Cooler) propaneModule.getOperations().getUnit("propane - // evaporator")).getInStream().displayResult(); - // ((Cooler) propaneModule.getOperations().getUnit("propane - // evaporator")).getOutStream().displayResult(); - - // TT ((CompressorInterface) propaneModule.getOperations().getUnit("propane - // compressor")).displayResult(); - // ((CompressorInterface) propaneModule.getOperations().getUnit("propane - // compressor")).getOutStream().displayResult(); - // ((Heater) propaneModule.getOperations().getUnit("propane - // condenser")).getInStream().displayResult(); - // ((Heater) propaneModule.getOperations().getUnit("propane - // condenser")).getOutStream().displayResult(); + System.out.println("running model...."); + getOperations().run(id); + + // gasExitStream = secondStageAfterCooler.getOutStream(); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void initializeStreams() { + isInitializedStreams = true; + } + + /** {@inheritDoc} */ + @Override + public void calcDesign() { + // design is done here + } + + /** {@inheritDoc} */ + @Override + public void setDesign() { + // set design is done here + } + + /** {@inheritDoc} */ + @Override + public void setSpecification(String specificationName, double value) { + if (specificationName.equals("vaporizerTemperature")) { + setVaporizerTemperature(value); + } else if (specificationName.equals("condenserTemperature")) { + setCondenserTemperature(value); } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos(273.15 - 20, 1); + testSystem.addComponent("propane", 0.30); + testSystem.createDatabase(true); + + Stream porpane = new Stream("porpane", testSystem); + PropaneCoolingModule propaneModule = new PropaneCoolingModule("propaneModule"); + propaneModule.setCondenserTemperature(273.15 + 30); + propaneModule.setVaporizerTemperature(273.15 - 40); + + propaneModule.addInputStream("refrigerant", porpane); + propaneModule.run(); + + double compressorWork = + ((CompressorInterface) propaneModule.getOperations().getUnit("propane compressor")) + .getEnergy(); + + double evaporatorDuty = + ((Cooler) propaneModule.getOperations().getUnit("propane evaporator")).getEnergyInput(); + double evaporatorPressure = + ((Cooler) propaneModule.getOperations().getUnit("propane evaporator")).getOutletStream() + .getPressure(); + double evaporatorTemperature = + ((Cooler) propaneModule.getOperations().getUnit("propane evaporator")).getOutletStream() + .getTemperature(); + + double condenserDuty = + ((Heater) propaneModule.getOperations().getUnit("propane condenser")).getEnergyInput(); + double condenserPressure = ((Heater) propaneModule.getOperations().getUnit("propane condenser")) + .getOutletStream().getPressure(); + double condenserTemperature = + ((Heater) propaneModule.getOperations().getUnit("propane condenser")).getOutletStream() + .getTemperature(); + + System.out.println("Compressor work " + compressorWork + " W"); + + System.out.println("evaporator duty " + evaporatorDuty + " W"); + System.out.println("evaporator temperature " + (evaporatorTemperature - 273.15) + " C"); + System.out.println("evaporator pressure " + evaporatorPressure + " bara"); + + System.out.println("condenser duty " + condenserDuty + " W"); + System.out.println("condenser temperature " + (condenserTemperature - 273.15) + " C"); + System.out.println("condenser pressure " + condenserPressure + " bara"); + // ((Cooler) propaneModule.getOperations().getUnit("propane + // evaporator")).getInStream().displayResult(); + // ((Cooler) propaneModule.getOperations().getUnit("propane + // evaporator")).getOutStream().displayResult(); + + // TT ((CompressorInterface) propaneModule.getOperations().getUnit("propane + // compressor")).displayResult(); + // ((CompressorInterface) propaneModule.getOperations().getUnit("propane + // compressor")).getOutStream().displayResult(); + // ((Heater) propaneModule.getOperations().getUnit("propane + // condenser")).getInStream().displayResult(); + // ((Heater) propaneModule.getOperations().getUnit("propane + // condenser")).getOutStream().displayResult(); + } } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModule.java index 54fd229ff2..db3b13941a 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModule.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processSystem.processModules; +import java.util.UUID; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.compressor.Compressor; import neqsim.processSimulation.processEquipment.heatExchanger.Cooler; @@ -14,319 +15,339 @@ import neqsim.processSimulation.processSystem.ProcessModuleBaseClass; /** - *

SeparationTrainModule class.

+ *

+ * SeparationTrainModule class. + *

* * @author esol * @version $Id: $Id */ public class SeparationTrainModule extends ProcessModuleBaseClass { - private static final long serialVersionUID = 1000; - - protected StreamInterface feedStream = null, gasExitStream = null, oilExitStream = null; - // ThreePhaseSeparator thirdStageSeparator = null; - Separator gasInletScrubber = null; - Cooler oilCooler; - double secondstagePressure = 15.00; // bar' - double thirdstagePressure = 1.50; // bar - double heatedOilTemperature = 273.15 + 50; - double exitGasScrubberTemperature = 273.15 + 30; - double firstStageCompressorAfterCoolerTemperature = 273.15 + 30; - double exportOilTemperature = 273.15 + 30; - - public SeparationTrainModule(String name) { - super(name); + private static final long serialVersionUID = 1000; + + protected StreamInterface feedStream = null; + + protected StreamInterface gasExitStream = null; + + protected StreamInterface oilExitStream = null; + + // ThreePhaseSeparator thirdStageSeparator = null; + Separator gasInletScrubber = null; + Cooler oilCooler; + double secondstagePressure = 15.00; // bar' + double thirdstagePressure = 1.50; // bar + double heatedOilTemperature = 273.15 + 50; + double exitGasScrubberTemperature = 273.15 + 30; + double firstStageCompressorAfterCoolerTemperature = 273.15 + 30; + double exportOilTemperature = 273.15 + 30; + + /** + *

+ * Constructor for SeparationTrainModule. + *

+ * + * @param name a {@link java.lang.String} object + */ + public SeparationTrainModule(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void addInputStream(String streamName, StreamInterface stream) { + if (streamName.equals("feed stream")) { + this.feedStream = stream; } + } - /** {@inheritDoc} */ - @Override - public void addInputStream(String streamName, StreamInterface stream) { - if (streamName.equals("feed stream")) { - this.feedStream = stream; - } + /** {@inheritDoc} */ + @Override + public StreamInterface getOutputStream(String streamName) { + if (!isInitializedStreams) { + initializeStreams(); } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutputStream(String streamName) { - if (!isInitializedStreams) { - initializeStreams(); - } - if (streamName.equals("gas exit stream")) { - return this.gasExitStream; - } else if (streamName.equals("oil exit stream")) { - return this.oilExitStream; - } else { - return null; - } + if (streamName.equals("gas exit stream")) { + return this.gasExitStream; + } else if (streamName.equals("oil exit stream")) { + return this.oilExitStream; + } else { + return null; } + } - /** {@inheritDoc} */ - @Override - public void run() { - if (!isInitializedModule) { - initializeModule(); - } - getOperations().run(); - - gasExitStream = gasInletScrubber.getGasOutStream(); - oilExitStream = oilCooler.getOutletStream(); + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!isInitializedModule) { + initializeModule(); } - - /** {@inheritDoc} */ - @Override - public void initializeModule() { - isInitializedModule = true; - double inletPressure = feedStream.getPressure(); - Separator inletSeparator = new Separator("Inlet separator", feedStream); - - Heater liquidOutHeater = - new Heater("oil/water heater", inletSeparator.getLiquidOutStream()); - liquidOutHeater.setOutTemperature(heatedOilTemperature); - - ThreePhaseSeparator firstStageSeparator = - new ThreePhaseSeparator("1st stage separator", liquidOutHeater.getOutletStream()); - - ThrottlingValve valve1 = - new ThrottlingValve("1stTo2ndStageOilValve", firstStageSeparator.getOilOutStream()); - valve1.setOutletPressure(secondstagePressure); - - ThreePhaseSeparator secondStageSeparator = - new ThreePhaseSeparator("2nd stage Separator", valve1.getOutletStream()); - - ThrottlingValve thirdStageValve = - new ThrottlingValve("2-3stageOilValve", secondStageSeparator.getLiquidOutStream()); - thirdStageValve.setOutletPressure(thirdstagePressure); - - ThreePhaseSeparator thirdStageSeparator = - new ThreePhaseSeparator("3rd stage Separator", thirdStageValve.getOutletStream()); - - oilCooler = new Cooler("export oil cooler", thirdStageSeparator.getLiquidOutStream()); - oilCooler.setOutTemperature(exportOilTemperature); - - Compressor thirdStageCompressor = - new Compressor("3rd stage recompressor", thirdStageSeparator.getGasOutStream()); - thirdStageCompressor.setOutletPressure(secondstagePressure); - - Cooler thirdSstageCoooler = - new Cooler("3rd stage cooler", thirdStageCompressor.getOutletStream()); - thirdSstageCoooler.setOutTemperature(firstStageCompressorAfterCoolerTemperature); - - Mixer thirdStageMixer = new Mixer("1st and 2nd stage gas mixer"); - thirdStageMixer.addStream(thirdSstageCoooler.getOutletStream()); - thirdStageMixer.addStream(secondStageSeparator.getGasOutStream()); - - Separator thirdStageScrubber = - new Separator("recompression scrubber", thirdStageMixer.getOutletStream()); - secondStageSeparator.addStream(thirdStageScrubber.getLiquidOutStream()); - - Compressor secondStageCompressor = - new Compressor("2nd stage recompressor", thirdStageScrubber.getGasOutStream()); - secondStageCompressor.setOutletPressure(inletPressure); - - Mixer HPgasMixer = new Mixer("HPgas mixer"); - HPgasMixer.addStream(firstStageSeparator.getGasOutStream()); - HPgasMixer.addStream(secondStageCompressor.getOutletStream()); - HPgasMixer.addStream(inletSeparator.getGasOutStream()); - - Cooler inletGasCooler = new Cooler("HP gas cooler", HPgasMixer.getOutletStream()); - inletGasCooler.setOutTemperature(exitGasScrubberTemperature); - - gasInletScrubber = new Separator("HP gas scrubber", inletGasCooler.getOutletStream()); - - Recycle HPliquidRecycle = new Recycle("Resycle"); - double tolerance = 1e-10; - HPliquidRecycle.setTolerance(tolerance); - HPliquidRecycle.addStream(gasInletScrubber.getLiquidOutStream()); - inletSeparator.addStream(HPliquidRecycle.getOutStream()); - - getOperations().add(inletSeparator); - getOperations().add(liquidOutHeater); - getOperations().add(firstStageSeparator); - getOperations().add(valve1); - getOperations().add(secondStageSeparator); - getOperations().add(thirdStageValve); - getOperations().add(thirdStageSeparator); - getOperations().add(thirdStageCompressor); - getOperations().add(thirdStageMixer); - getOperations().add(thirdSstageCoooler); - getOperations().add(thirdStageScrubber); - getOperations().add(HPliquidRecycle); - getOperations().add(secondStageCompressor); - getOperations().add(oilCooler); - getOperations().add(HPgasMixer); - getOperations().add(inletGasCooler); - getOperations().add(gasInletScrubber); - - // gasExitStream = gasInletScrubber.getGasOutStream(); - // oilExitStream = thirdStageSeparator.getOilOutStream(); + getOperations().run(id); + + gasExitStream = gasInletScrubber.getGasOutStream(); + gasExitStream.setCalculationIdentifier(id); + oilExitStream = oilCooler.getOutletStream(); + oilExitStream.setCalculationIdentifier(id); + + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void initializeModule() { + isInitializedModule = true; + double inletPressure = feedStream.getPressure(); + Separator inletSeparator = new Separator("Inlet separator", feedStream); + + Heater liquidOutHeater = new Heater("oil/water heater", inletSeparator.getLiquidOutStream()); + liquidOutHeater.setOutTemperature(heatedOilTemperature); + + ThreePhaseSeparator firstStageSeparator = + new ThreePhaseSeparator("1st stage separator", liquidOutHeater.getOutletStream()); + + ThrottlingValve valve1 = + new ThrottlingValve("1stTo2ndStageOilValve", firstStageSeparator.getOilOutStream()); + valve1.setOutletPressure(secondstagePressure); + + ThreePhaseSeparator secondStageSeparator = + new ThreePhaseSeparator("2nd stage Separator", valve1.getOutletStream()); + + ThrottlingValve thirdStageValve = + new ThrottlingValve("2-3stageOilValve", secondStageSeparator.getLiquidOutStream()); + thirdStageValve.setOutletPressure(thirdstagePressure); + + ThreePhaseSeparator thirdStageSeparator = + new ThreePhaseSeparator("3rd stage Separator", thirdStageValve.getOutletStream()); + + oilCooler = new Cooler("export oil cooler", thirdStageSeparator.getLiquidOutStream()); + oilCooler.setOutTemperature(exportOilTemperature); + + Compressor thirdStageCompressor = + new Compressor("3rd stage recompressor", thirdStageSeparator.getGasOutStream()); + thirdStageCompressor.setOutletPressure(secondstagePressure); + + Cooler thirdSstageCoooler = + new Cooler("3rd stage cooler", thirdStageCompressor.getOutletStream()); + thirdSstageCoooler.setOutTemperature(firstStageCompressorAfterCoolerTemperature); + + Mixer thirdStageMixer = new Mixer("1st and 2nd stage gas mixer"); + thirdStageMixer.addStream(thirdSstageCoooler.getOutletStream()); + thirdStageMixer.addStream(secondStageSeparator.getGasOutStream()); + + Separator thirdStageScrubber = + new Separator("recompression scrubber", thirdStageMixer.getOutletStream()); + secondStageSeparator.addStream(thirdStageScrubber.getLiquidOutStream()); + + Compressor secondStageCompressor = + new Compressor("2nd stage recompressor", thirdStageScrubber.getGasOutStream()); + secondStageCompressor.setOutletPressure(inletPressure); + + Mixer HPgasMixer = new Mixer("HPgas mixer"); + HPgasMixer.addStream(firstStageSeparator.getGasOutStream()); + HPgasMixer.addStream(secondStageCompressor.getOutletStream()); + HPgasMixer.addStream(inletSeparator.getGasOutStream()); + + Cooler inletGasCooler = new Cooler("HP gas cooler", HPgasMixer.getOutletStream()); + inletGasCooler.setOutTemperature(exitGasScrubberTemperature); + + gasInletScrubber = new Separator("HP gas scrubber", inletGasCooler.getOutletStream()); + + Recycle HPliquidRecycle = new Recycle("Resycle"); + double tolerance = 1e-10; + HPliquidRecycle.setTolerance(tolerance); + HPliquidRecycle.addStream(gasInletScrubber.getLiquidOutStream()); + inletSeparator.addStream(HPliquidRecycle.getOutletStream()); + + getOperations().add(inletSeparator); + getOperations().add(liquidOutHeater); + getOperations().add(firstStageSeparator); + getOperations().add(valve1); + getOperations().add(secondStageSeparator); + getOperations().add(thirdStageValve); + getOperations().add(thirdStageSeparator); + getOperations().add(thirdStageCompressor); + getOperations().add(thirdStageMixer); + getOperations().add(thirdSstageCoooler); + getOperations().add(thirdStageScrubber); + getOperations().add(HPliquidRecycle); + getOperations().add(secondStageCompressor); + getOperations().add(oilCooler); + getOperations().add(HPgasMixer); + getOperations().add(inletGasCooler); + getOperations().add(gasInletScrubber); + + // gasExitStream = gasInletScrubber.getGasOutStream(); + // oilExitStream = thirdStageSeparator.getOilOutStream(); + } + + /** {@inheritDoc} */ + @Override + public void initializeStreams() { + isInitializedStreams = true; + } + + /** {@inheritDoc} */ + @Override + public void calcDesign() { + // design is done here + } + + /** {@inheritDoc} */ + @Override + public void setDesign() { + // set design is done here + } + + /** {@inheritDoc} */ + @Override + public void setSpecification(String specificationName, double value) { + if (specificationName.equals("Second stage pressure")) { + secondstagePressure = value; } - - /** {@inheritDoc} */ - @Override - public void initializeStreams() { - isInitializedStreams = true; + if (specificationName.equals("heated oil temperature")) { + heatedOilTemperature = value; } - - /** {@inheritDoc} */ - @Override - public void calcDesign() { - // design is done here + if (specificationName.equals("Third stage pressure")) { + thirdstagePressure = value; } - - /** {@inheritDoc} */ - @Override - public void setDesign() { - // set design is done here + if (specificationName.equals("Gas exit temperature")) { + exitGasScrubberTemperature = value; } - - /** {@inheritDoc} */ - @Override - public void setSpecification(String specificationName, double value) { - if (specificationName.equals("Second stage pressure")) { - secondstagePressure = value; - } - if (specificationName.equals("heated oil temperature")) { - heatedOilTemperature = value; - } - if (specificationName.equals("Third stage pressure")) { - thirdstagePressure = value; - } - if (specificationName.equals("Gas exit temperature")) { - exitGasScrubberTemperature = value; - } - if (specificationName.equals("First stage compressor after cooler temperature")) { - firstStageCompressorAfterCoolerTemperature = value; - } - if (specificationName.equals("Export oil temperature")) { - exportOilTemperature = value; - } + if (specificationName.equals("First stage compressor after cooler temperature")) { + firstStageCompressorAfterCoolerTemperature = value; } - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos(273.15 + 50, 65); - - // testSystem.addComponent("CO2", 1); - // testSystem.addComponent("nitrogen", 1); - testSystem.addComponent("methane", 95); - // testSystem.addComponent("ethane", 1); - // testSystem.addTBPfraction("C7", 1.0, 187.0 / 1000.0, 0.84738); - - // testSystem.addComponent("propane", 5); - // testSystem.addComponent("n-octane", 2); - testSystem.addComponent("nC10", 6); - // testSystem.setHeavyTBPfractionAsPlusFraction(); - // testSystem.getCharacterization().characterisePlusFraction(); - - testSystem.addComponent("water", 12); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - testSystem.init(0); - testSystem.init(3); - double a = testSystem.getTotalNumberOfMoles(); - - Stream wellStream = new Stream("Well stream", testSystem); - // wellStream.getThermoSystem().setTotalFlowRate(5.0, "MSm^3/day"); - - SeparationTrainModule separationModule = new SeparationTrainModule("separationModule"); - separationModule.addInputStream("feed stream", wellStream); - separationModule.setSpecification("Second stage pressure", 15.0); - separationModule.setSpecification("heated oil temperature", 273.15 + 55.0); - separationModule.setSpecification("Third stage pressure", 1.0); - separationModule.setSpecification("Gas exit temperature", 273.15 + 25.0); - separationModule.setSpecification("First stage compressor after cooler temperature", - 273.15 + 25.0); - separationModule.setSpecification("Export oil temperature", 273.15 + 25.0); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - - operations.add(wellStream); - operations.add(separationModule); - // separationModule.getUnit("") - // ((Recycle) operations.getUnit("Resycle")).setTolerance(1e-9); - - operations.run(); - - // ArrayList names2 = operations.getAllUnitNames(); - // processSimulation.processEquipment.ProcessEquipmentInterface tempStr = - // (ProcessEquipmentBaseClass) operations.getUnit("2nd stage recompressor"); - // tempStr.displayResult(); - // wellStream.displayResult(); - ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("Inlet separator")) - .getMechanicalDesign().calcDesign(); - ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("Inlet separator")) - .getMechanicalDesign().displayResults(); - - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("1st stage separator")).getMechanicalDesign().calcDesign(); - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("1st stage separator")).getMechanicalDesign().displayResults(); - - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("2nd stage Separator")).getMechanicalDesign().calcDesign(); - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("2nd stage Separator")).getMechanicalDesign().displayResults(); - - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("3rd stage Separator")).getMechanicalDesign().calcDesign(); - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("3rd stage Separator")).getMechanicalDesign().displayResults(); - - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("2nd stage recompressor")).getMechanicalDesign().calcDesign(); - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("2nd stage recompressor")).getMechanicalDesign().displayResults(); - - operations.getSystemMechanicalDesign().runDesignCalculation(); - operations.getSystemMechanicalDesign().getTotalPlotSpace(); - System.out.println("Modules " + operations.getSystemMechanicalDesign().getTotalVolume()); - - System.out.println( - "Modules " + operations.getSystemMechanicalDesign().getTotalNumberOfModules()); - System.out.println("Weight " + operations.getSystemMechanicalDesign().getTotalWeight()); - System.out.println( - "Plot space " + operations.getSystemMechanicalDesign().getTotalPlotSpace()); - System.out.println("CAPEX " + operations.getCostEstimator().getWeightBasedCAPEXEstimate()); - System.out.println("CAPEX " + operations.getCostEstimator().getCAPEXestimate()); - - /* - * separationModule.getOutputStream("Inlet separator").displayResult(); - * separationModule.getOutputStream("oil exit stream").displayResult(); - * System.out.println("third stage compressor power " + ((Compressor) - * separationModule.getOperations().getUnit("3rd stage recompressor")).getPower( ) + " W"); - * System.out.println("secondstage compressor power " + ((Compressor) - * separationModule.getOperations().getUnit("2nd stage recompressor")).getPower( ) + " W"); - * System.out.println("third stage cooler duty " + ((Cooler) - * separationModule.getOperations().getUnit("3rd stage cooler")).getEnergyInput( ) + " W"); - * System.out.println("HP gas cooler duty " + ((Cooler) - * separationModule.getOperations().getUnit("HP gas cooler")).getEnergyInput() + " W"); - * System.out.println("Export oil flow " + - * separationModule.getOutputStream("oil exit stream").getThermoSystem(). - * getTotalNumberOfMoles() * - * separationModule.getOutputStream("oil exit stream").getThermoSystem(). getMolarMass() / - * separationModule.getOutputStream("oil exit stream").getThermoSystem(). - * getPhase(0).getPhysicalProperties().getDensity() * 3600.0 + " m^3/hr"); - * System.out.println("Export gas flow " + - * separationModule.getOutputStream("gas exit stream").getThermoSystem(). - * getTotalNumberOfMoles() * - * separationModule.getOutputStream("gas exit stream").getThermoSystem(). getMolarMass() / - * separationModule.getOutputStream("gas exit stream").getThermoSystem(). - * getPhase(0).getPhysicalProperties().getDensity() * 3600.0 + " m^3/hr"); - * System.out.println("Export gas flow " + - * separationModule.getOutputStream("gas exit stream").getThermoSystem(). - * getTotalNumberOfMoles() * 8.314 * (273.15 + 15.0) / 101325.0 * 3600.0 * 24 / 1.0e6 + - * " MSm^3/day"); System.out.println("oil/water heater duty " + ((Heater) - * separationModule.getOperations().getUnit("oil/water heater")).getEnergyInput( ) + " W"); - * System.out.println("Export oil cooler duty " + ((Cooler) - * separationModule.getOperations().getUnit("export oil cooler")).getEnergyInput () + " W"); - */ + if (specificationName.equals("Export oil temperature")) { + exportOilTemperature = value; } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos(273.15 + 50, 65); + + // testSystem.addComponent("CO2", 1); + // testSystem.addComponent("nitrogen", 1); + testSystem.addComponent("methane", 95); + // testSystem.addComponent("ethane", 1); + // testSystem.addTBPfraction("C7", 1.0, 187.0 / 1000.0, 0.84738); + + // testSystem.addComponent("propane", 5); + // testSystem.addComponent("n-octane", 2); + testSystem.addComponent("nC10", 6); + // testSystem.setHeavyTBPfractionAsPlusFraction(); + // testSystem.getCharacterization().characterisePlusFraction(); + + testSystem.addComponent("water", 12); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + testSystem.init(0); + testSystem.init(3); + double a = testSystem.getTotalNumberOfMoles(); + + Stream wellStream = new Stream("Well stream", testSystem); + // wellStream.getThermoSystem().setTotalFlowRate(5.0, "MSm^3/day"); + + SeparationTrainModule separationModule = new SeparationTrainModule("separationModule"); + separationModule.addInputStream("feed stream", wellStream); + separationModule.setSpecification("Second stage pressure", 15.0); + separationModule.setSpecification("heated oil temperature", 273.15 + 55.0); + separationModule.setSpecification("Third stage pressure", 1.0); + separationModule.setSpecification("Gas exit temperature", 273.15 + 25.0); + separationModule.setSpecification("First stage compressor after cooler temperature", + 273.15 + 25.0); + separationModule.setSpecification("Export oil temperature", 273.15 + 25.0); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + + operations.add(wellStream); + operations.add(separationModule); + // separationModule.getUnit("") + // ((Recycle) operations.getUnit("Resycle")).setTolerance(1e-9); + + operations.run(); + + // ArrayList names2 = operations.getAllUnitNames(); + // processSimulation.processEquipment.ProcessEquipmentInterface tempStr = + // (ProcessEquipmentBaseClass) operations.getUnit("2nd stage recompressor"); + // tempStr.displayResult(); + // wellStream.displayResult(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("Inlet separator")) + .getMechanicalDesign().calcDesign(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("Inlet separator")) + .getMechanicalDesign().displayResults(); + + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("1st stage separator")) + .getMechanicalDesign().calcDesign(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("1st stage separator")) + .getMechanicalDesign().displayResults(); + + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("2nd stage Separator")) + .getMechanicalDesign().calcDesign(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("2nd stage Separator")) + .getMechanicalDesign().displayResults(); + + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("3rd stage Separator")) + .getMechanicalDesign().calcDesign(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("3rd stage Separator")) + .getMechanicalDesign().displayResults(); + + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("2nd stage recompressor")) + .getMechanicalDesign().calcDesign(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("2nd stage recompressor")) + .getMechanicalDesign().displayResults(); + + // operations.getSystemMechanicalDesign().runDesignCalculation(); + // operations.getSystemMechanicalDesign().getTotalPlotSpace(); + // System.out.println("Modules " + operations.getSystemMechanicalDesign().getTotalVolume()); + + // System.out + // .println("Modules " + operations.getSystemMechanicalDesign().getTotalNumberOfModules()); + // System.out.println("Weight " + operations.getSystemMechanicalDesign().getTotalWeight()); + // System.out.println("Plot space " + + // operations.getSystemMechanicalDesign().getTotalPlotSpace()); + // System.out.println("CAPEX " + operations.getCostEstimator().getWeightBasedCAPEXEstimate()); + // System.out.println("CAPEX " + operations.getCostEstimator().getCAPEXestimate()); + + /* + * separationModule.getOutputStream("Inlet separator").displayResult(); + * separationModule.getOutputStream("oil exit stream").displayResult(); + * System.out.println("third stage compressor power " + ((Compressor) + * separationModule.getOperations().getUnit("3rd stage recompressor")).getPower( ) + " W"); + * System.out.println("secondstage compressor power " + ((Compressor) + * separationModule.getOperations().getUnit("2nd stage recompressor")).getPower( ) + " W"); + * System.out.println("third stage cooler duty " + ((Cooler) + * separationModule.getOperations().getUnit("3rd stage cooler")).getEnergyInput( ) + " W"); + * System.out.println("HP gas cooler duty " + ((Cooler) + * separationModule.getOperations().getUnit("HP gas cooler")).getEnergyInput() + " W"); + * System.out.println("Export oil flow " + + * separationModule.getOutputStream("oil exit stream").getThermoSystem(). + * getTotalNumberOfMoles() * + * separationModule.getOutputStream("oil exit stream").getThermoSystem(). getMolarMass() / + * separationModule.getOutputStream("oil exit stream").getThermoSystem(). + * getPhase(0).getPhysicalProperties().getDensity() * 3600.0 + " m^3/hr"); + * System.out.println("Export gas flow " + + * separationModule.getOutputStream("gas exit stream").getThermoSystem(). + * getTotalNumberOfMoles() * + * separationModule.getOutputStream("gas exit stream").getThermoSystem(). getMolarMass() / + * separationModule.getOutputStream("gas exit stream").getThermoSystem(). + * getPhase(0).getPhysicalProperties().getDensity() * 3600.0 + " m^3/hr"); + * System.out.println("Export gas flow " + + * separationModule.getOutputStream("gas exit stream").getThermoSystem(). + * getTotalNumberOfMoles() * ThermodynamicConstantsInterface.R * (273.15 + 15.0) + * /ThermodynamicConstantsInterface.atm * 3600.0 * 24 / 1.0e6 + " MSm^3/day"); + * System.out.println("oil/water heater duty " + ((Heater) + * separationModule.getOperations().getUnit("oil/water heater")).getEnergyInput( ) + " W"); + * System.out.println("Export oil cooler duty " + ((Cooler) + * separationModule.getOperations().getUnit("export oil cooler")).getEnergyInput () + " W"); + */ + } } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModuleSimple.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModuleSimple.java index 37b0068353..49ee75b16e 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModuleSimple.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/SeparationTrainModuleSimple.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processSystem.processModules; +import java.util.UUID; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.compressor.Compressor; import neqsim.processSimulation.processEquipment.heatExchanger.Cooler; @@ -14,319 +15,335 @@ import neqsim.processSimulation.processSystem.ProcessModuleBaseClass; /** - *

SeparationTrainModuleSimple class.

+ *

+ * SeparationTrainModuleSimple class. + *

* * @author esol * @version $Id: $Id */ public class SeparationTrainModuleSimple extends ProcessModuleBaseClass { - private static final long serialVersionUID = 1000; - - protected StreamInterface feedStream = null, gasExitStream = null, oilExitStream = null; - // ThreePhaseSeparator thirdStageSeparator = null; - Separator gasInletScrubber = null; - Cooler oilCooler; - double secondstagePressure = 15.00; // bar' - double thirdstagePressure = 1.50; // bar - double heatedOilTemperature = 273.15 + 50; - double exitGasScrubberTemperature = 273.15 + 30; - double firstStageCompressorAfterCoolerTemperature = 273.15 + 30; - double exportOilTemperature = 273.15 + 30; - - public SeparationTrainModuleSimple(String name) { - super(name); + private static final long serialVersionUID = 1000; + + protected StreamInterface feedStream = null; + protected StreamInterface gasExitStream = null; + protected StreamInterface oilExitStream = null; + + // ThreePhaseSeparator thirdStageSeparator = null; + Separator gasInletScrubber = null; + Cooler oilCooler; + double secondstagePressure = 15.00; // bar' + double thirdstagePressure = 1.50; // bar + double heatedOilTemperature = 273.15 + 50; + double exitGasScrubberTemperature = 273.15 + 30; + double firstStageCompressorAfterCoolerTemperature = 273.15 + 30; + double exportOilTemperature = 273.15 + 30; + + /** + *

+ * Constructor for SeparationTrainModuleSimple. + *

+ * + * @param name a {@link java.lang.String} object + */ + public SeparationTrainModuleSimple(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void addInputStream(String streamName, StreamInterface stream) { + if (streamName.equals("feed stream")) { + this.feedStream = stream; } + } - /** {@inheritDoc} */ - @Override - public void addInputStream(String streamName, StreamInterface stream) { - if (streamName.equals("feed stream")) { - this.feedStream = stream; - } + /** {@inheritDoc} */ + @Override + public StreamInterface getOutputStream(String streamName) { + if (!isInitializedStreams) { + initializeStreams(); } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutputStream(String streamName) { - if (!isInitializedStreams) { - initializeStreams(); - } - if (streamName.equals("gas exit stream")) { - return this.gasExitStream; - } else if (streamName.equals("oil exit stream")) { - return this.oilExitStream; - } else { - return null; - } + if (streamName.equals("gas exit stream")) { + return this.gasExitStream; + } else if (streamName.equals("oil exit stream")) { + return this.oilExitStream; + } else { + return null; } + } - /** {@inheritDoc} */ - @Override - public void run() { - if (!isInitializedModule) { - initializeModule(); - } - getOperations().run(); - - gasExitStream = gasInletScrubber.getGasOutStream(); - oilExitStream = oilCooler.getOutletStream(); + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!isInitializedModule) { + initializeModule(); } - - /** {@inheritDoc} */ - @Override - public void initializeModule() { - isInitializedModule = true; - double inletPressure = feedStream.getPressure(); - Separator inletSeparator = new Separator("Inlet separator", feedStream); - - Heater liquidOutHeater = - new Heater("oil/water heater", inletSeparator.getLiquidOutStream()); - liquidOutHeater.setOutTemperature(heatedOilTemperature); - - ThreePhaseSeparator firstStageSeparator = - new ThreePhaseSeparator("1st stage separator", liquidOutHeater.getOutletStream()); - - ThrottlingValve valve1 = - new ThrottlingValve("1stTo2ndStageOilValve", firstStageSeparator.getOilOutStream()); - valve1.setOutletPressure(secondstagePressure); - - ThreePhaseSeparator secondStageSeparator = - new ThreePhaseSeparator("2nd stage Separator", valve1.getOutletStream()); - - ThrottlingValve thirdStageValve = - new ThrottlingValve("2-3stageOilValve", secondStageSeparator.getLiquidOutStream()); - thirdStageValve.setOutletPressure(thirdstagePressure); - - ThreePhaseSeparator thirdStageSeparator = - new ThreePhaseSeparator("3rd stage Separator", thirdStageValve.getOutletStream()); - - oilCooler = new Cooler("export oil cooler", thirdStageSeparator.getLiquidOutStream()); - oilCooler.setOutTemperature(exportOilTemperature); - - Compressor thirdStageCompressor = - new Compressor("3rd stage recompressor", thirdStageSeparator.getGasOutStream()); - thirdStageCompressor.setOutletPressure(secondstagePressure); - - Cooler thirdSstageCoooler = - new Cooler("3rd stage cooler", thirdStageCompressor.getOutletStream()); - thirdSstageCoooler.setOutTemperature(firstStageCompressorAfterCoolerTemperature); - - Mixer thirdStageMixer = new Mixer("1st and 2nd stage gas mixer"); - thirdStageMixer.addStream(thirdSstageCoooler.getOutletStream()); - thirdStageMixer.addStream(secondStageSeparator.getGasOutStream()); - - Separator thirdStageScrubber = - new Separator("recompression scrubber", thirdStageMixer.getOutletStream()); - secondStageSeparator.addStream(thirdStageScrubber.getLiquidOutStream()); - - Compressor secondStageCompressor = - new Compressor("2nd stage recompressor", thirdStageScrubber.getGasOutStream()); - secondStageCompressor.setOutletPressure(inletPressure); - - Mixer HPgasMixer = new Mixer("HPgas mixer"); - HPgasMixer.addStream(firstStageSeparator.getGasOutStream()); - HPgasMixer.addStream(secondStageCompressor.getOutletStream()); - HPgasMixer.addStream(inletSeparator.getGasOutStream()); - - Cooler inletGasCooler = new Cooler("HP gas cooler", HPgasMixer.getOutletStream()); - inletGasCooler.setOutTemperature(exitGasScrubberTemperature); - - gasInletScrubber = new Separator("HP gas scrubber", inletGasCooler.getOutletStream()); - - Recycle HPliquidRecycle = new Recycle("Resycle"); - double tolerance = 1e-10; - HPliquidRecycle.setTolerance(tolerance); - HPliquidRecycle.addStream(gasInletScrubber.getLiquidOutStream()); - inletSeparator.addStream(HPliquidRecycle.getOutStream()); - - getOperations().add(inletSeparator); - getOperations().add(liquidOutHeater); - getOperations().add(firstStageSeparator); - getOperations().add(valve1); - getOperations().add(secondStageSeparator); - getOperations().add(thirdStageValve); - getOperations().add(thirdStageSeparator); - getOperations().add(thirdStageCompressor); - getOperations().add(thirdStageMixer); - getOperations().add(thirdSstageCoooler); - getOperations().add(thirdStageScrubber); - getOperations().add(HPliquidRecycle); - getOperations().add(secondStageCompressor); - getOperations().add(oilCooler); - getOperations().add(HPgasMixer); - getOperations().add(inletGasCooler); - getOperations().add(gasInletScrubber); - - // gasExitStream = gasInletScrubber.getGasOutStream(); - // oilExitStream = thirdStageSeparator.getOilOutStream(); + getOperations().run(id); + + gasExitStream = gasInletScrubber.getGasOutStream(); + oilExitStream = oilCooler.getOutletStream(); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void initializeModule() { + isInitializedModule = true; + double inletPressure = feedStream.getPressure(); + Separator inletSeparator = new Separator("Inlet separator", feedStream); + + Heater liquidOutHeater = new Heater("oil/water heater", inletSeparator.getLiquidOutStream()); + liquidOutHeater.setOutTemperature(heatedOilTemperature); + + ThreePhaseSeparator firstStageSeparator = + new ThreePhaseSeparator("1st stage separator", liquidOutHeater.getOutletStream()); + + ThrottlingValve valve1 = + new ThrottlingValve("1stTo2ndStageOilValve", firstStageSeparator.getOilOutStream()); + valve1.setOutletPressure(secondstagePressure); + + ThreePhaseSeparator secondStageSeparator = + new ThreePhaseSeparator("2nd stage Separator", valve1.getOutletStream()); + + ThrottlingValve thirdStageValve = + new ThrottlingValve("2-3stageOilValve", secondStageSeparator.getLiquidOutStream()); + thirdStageValve.setOutletPressure(thirdstagePressure); + + ThreePhaseSeparator thirdStageSeparator = + new ThreePhaseSeparator("3rd stage Separator", thirdStageValve.getOutletStream()); + + oilCooler = new Cooler("export oil cooler", thirdStageSeparator.getLiquidOutStream()); + oilCooler.setOutTemperature(exportOilTemperature); + + Compressor thirdStageCompressor = + new Compressor("3rd stage recompressor", thirdStageSeparator.getGasOutStream()); + thirdStageCompressor.setOutletPressure(secondstagePressure); + + Cooler thirdSstageCoooler = + new Cooler("3rd stage cooler", thirdStageCompressor.getOutletStream()); + thirdSstageCoooler.setOutTemperature(firstStageCompressorAfterCoolerTemperature); + + Mixer thirdStageMixer = new Mixer("1st and 2nd stage gas mixer"); + thirdStageMixer.addStream(thirdSstageCoooler.getOutletStream()); + thirdStageMixer.addStream(secondStageSeparator.getGasOutStream()); + + Separator thirdStageScrubber = + new Separator("recompression scrubber", thirdStageMixer.getOutletStream()); + secondStageSeparator.addStream(thirdStageScrubber.getLiquidOutStream()); + + Compressor secondStageCompressor = + new Compressor("2nd stage recompressor", thirdStageScrubber.getGasOutStream()); + secondStageCompressor.setOutletPressure(inletPressure); + + Mixer HPgasMixer = new Mixer("HPgas mixer"); + HPgasMixer.addStream(firstStageSeparator.getGasOutStream()); + HPgasMixer.addStream(secondStageCompressor.getOutletStream()); + HPgasMixer.addStream(inletSeparator.getGasOutStream()); + + Cooler inletGasCooler = new Cooler("HP gas cooler", HPgasMixer.getOutletStream()); + inletGasCooler.setOutTemperature(exitGasScrubberTemperature); + + gasInletScrubber = new Separator("HP gas scrubber", inletGasCooler.getOutletStream()); + + Recycle HPliquidRecycle = new Recycle("Resycle"); + double tolerance = 1e-10; + HPliquidRecycle.setTolerance(tolerance); + HPliquidRecycle.addStream(gasInletScrubber.getLiquidOutStream()); + inletSeparator.addStream(HPliquidRecycle.getOutletStream()); + + getOperations().add(inletSeparator); + getOperations().add(liquidOutHeater); + getOperations().add(firstStageSeparator); + getOperations().add(valve1); + getOperations().add(secondStageSeparator); + getOperations().add(thirdStageValve); + getOperations().add(thirdStageSeparator); + getOperations().add(thirdStageCompressor); + getOperations().add(thirdStageMixer); + getOperations().add(thirdSstageCoooler); + getOperations().add(thirdStageScrubber); + getOperations().add(HPliquidRecycle); + getOperations().add(secondStageCompressor); + getOperations().add(oilCooler); + getOperations().add(HPgasMixer); + getOperations().add(inletGasCooler); + getOperations().add(gasInletScrubber); + + // gasExitStream = gasInletScrubber.getGasOutStream(); + // oilExitStream = thirdStageSeparator.getOilOutStream(); + } + + /** {@inheritDoc} */ + @Override + public void initializeStreams() { + isInitializedStreams = true; + } + + /** {@inheritDoc} */ + @Override + public void calcDesign() { + // design is done here + } + + /** {@inheritDoc} */ + @Override + public void setDesign() { + // set design is done here + } + + /** {@inheritDoc} */ + @Override + public void setSpecification(String specificationName, double value) { + if (specificationName.equals("Second stage pressure")) { + secondstagePressure = value; } - - /** {@inheritDoc} */ - @Override - public void initializeStreams() { - isInitializedStreams = true; + if (specificationName.equals("heated oil temperature")) { + heatedOilTemperature = value; } - - /** {@inheritDoc} */ - @Override - public void calcDesign() { - // design is done here + if (specificationName.equals("Third stage pressure")) { + thirdstagePressure = value; } - - /** {@inheritDoc} */ - @Override - public void setDesign() { - // set design is done here + if (specificationName.equals("Gas exit temperature")) { + exitGasScrubberTemperature = value; } - - /** {@inheritDoc} */ - @Override - public void setSpecification(String specificationName, double value) { - if (specificationName.equals("Second stage pressure")) { - secondstagePressure = value; - } - if (specificationName.equals("heated oil temperature")) { - heatedOilTemperature = value; - } - if (specificationName.equals("Third stage pressure")) { - thirdstagePressure = value; - } - if (specificationName.equals("Gas exit temperature")) { - exitGasScrubberTemperature = value; - } - if (specificationName.equals("First stage compressor after cooler temperature")) { - firstStageCompressorAfterCoolerTemperature = value; - } - if (specificationName.equals("Export oil temperature")) { - exportOilTemperature = value; - } + if (specificationName.equals("First stage compressor after cooler temperature")) { + firstStageCompressorAfterCoolerTemperature = value; } - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos(273.15 + 50, 65); - - // testSystem.addComponent("CO2", 1); - // testSystem.addComponent("nitrogen", 1); - testSystem.addComponent("methane", 95); - // testSystem.addComponent("ethane", 1); - // testSystem.addTBPfraction("C7", 1.0, 187.0 / 1000.0, 0.84738); - - // testSystem.addComponent("propane", 5); - // testSystem.addComponent("n-octane", 2); - testSystem.addComponent("nC10", 6); - // testSystem.setHeavyTBPfractionAsPlusFraction(); - // testSystem.getCharacterization().characterisePlusFraction(); - - testSystem.addComponent("water", 12); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - testSystem.init(0); - testSystem.init(3); - double a = testSystem.getTotalNumberOfMoles(); - - Stream wellStream = new Stream("Well stream", testSystem); - // wellStream.getThermoSystem().setTotalFlowRate(5.0, "MSm^3/day"); - - SeparationTrainModuleSimple separationModule = new SeparationTrainModuleSimple("simpleSepTrain"); - separationModule.addInputStream("feed stream", wellStream); - separationModule.setSpecification("Second stage pressure", 15.0); - separationModule.setSpecification("heated oil temperature", 273.15 + 55.0); - separationModule.setSpecification("Third stage pressure", 1.0); - separationModule.setSpecification("Gas exit temperature", 273.15 + 25.0); - separationModule.setSpecification("First stage compressor after cooler temperature", - 273.15 + 25.0); - separationModule.setSpecification("Export oil temperature", 273.15 + 25.0); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - - operations.add(wellStream); - operations.add(separationModule); - // separationModule.getUnit("") - // ((Recycle) operations.getUnit("Resycle")).setTolerance(1e-9); - - operations.run(); - - // ArrayList names2 = operations.getAllUnitNames(); - // processSimulation.processEquipment.ProcessEquipmentInterface tempStr = - // (ProcessEquipmentBaseClass) operations.getUnit("2nd stage recompressor"); - // tempStr.displayResult(); - // wellStream.displayResult(); - ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("Inlet separator")) - .getMechanicalDesign().calcDesign(); - ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("Inlet separator")) - .getMechanicalDesign().displayResults(); - - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("1st stage separator")).getMechanicalDesign().calcDesign(); - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("1st stage separator")).getMechanicalDesign().displayResults(); - - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("2nd stage Separator")).getMechanicalDesign().calcDesign(); - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("2nd stage Separator")).getMechanicalDesign().displayResults(); - - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("3rd stage Separator")).getMechanicalDesign().calcDesign(); - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("3rd stage Separator")).getMechanicalDesign().displayResults(); - - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("2nd stage recompressor")).getMechanicalDesign().calcDesign(); - ((ProcessEquipmentInterface) separationModule.getOperations() - .getUnit("2nd stage recompressor")).getMechanicalDesign().displayResults(); - - operations.getSystemMechanicalDesign().runDesignCalculation(); - operations.getSystemMechanicalDesign().getTotalPlotSpace(); - System.out.println("Modules " + operations.getSystemMechanicalDesign().getTotalVolume()); - - System.out.println( - "Modules " + operations.getSystemMechanicalDesign().getTotalNumberOfModules()); - System.out.println("Weight " + operations.getSystemMechanicalDesign().getTotalWeight()); - System.out.println( - "Plot space " + operations.getSystemMechanicalDesign().getTotalPlotSpace()); - System.out.println("CAPEX " + operations.getCostEstimator().getWeightBasedCAPEXEstimate()); - System.out.println("CAPEX " + operations.getCostEstimator().getCAPEXestimate()); - - /* - * separationModule.getOutputStream("Inlet separator").displayResult(); - * separationModule.getOutputStream("oil exit stream").displayResult(); - * System.out.println("third stage compressor power " + ((Compressor) - * separationModule.getOperations().getUnit("3rd stage recompressor")).getPower( ) + " W"); - * System.out.println("secondstage compressor power " + ((Compressor) - * separationModule.getOperations().getUnit("2nd stage recompressor")).getPower( ) + " W"); - * System.out.println("third stage cooler duty " + ((Cooler) - * separationModule.getOperations().getUnit("3rd stage cooler")).getEnergyInput( ) + " W"); - * System.out.println("HP gas cooler duty " + ((Cooler) - * separationModule.getOperations().getUnit("HP gas cooler")).getEnergyInput() + " W"); - * System.out.println("Export oil flow " + - * separationModule.getOutputStream("oil exit stream").getThermoSystem(). - * getTotalNumberOfMoles() * - * separationModule.getOutputStream("oil exit stream").getThermoSystem(). getMolarMass() / - * separationModule.getOutputStream("oil exit stream").getThermoSystem(). - * getPhase(0).getPhysicalProperties().getDensity() * 3600.0 + " m^3/hr"); - * System.out.println("Export gas flow " + - * separationModule.getOutputStream("gas exit stream").getThermoSystem(). - * getTotalNumberOfMoles() * - * separationModule.getOutputStream("gas exit stream").getThermoSystem(). getMolarMass() / - * separationModule.getOutputStream("gas exit stream").getThermoSystem(). - * getPhase(0).getPhysicalProperties().getDensity() * 3600.0 + " m^3/hr"); - * System.out.println("Export gas flow " + - * separationModule.getOutputStream("gas exit stream").getThermoSystem(). - * getTotalNumberOfMoles() * 8.314 * (273.15 + 15.0) / 101325.0 * 3600.0 * 24 / 1.0e6 + - * " MSm^3/day"); System.out.println("oil/water heater duty " + ((Heater) - * separationModule.getOperations().getUnit("oil/water heater")).getEnergyInput( ) + " W"); - * System.out.println("Export oil cooler duty " + ((Cooler) - * separationModule.getOperations().getUnit("export oil cooler")).getEnergyInput () + " W"); - */ + if (specificationName.equals("Export oil temperature")) { + exportOilTemperature = value; } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos(273.15 + 50, 65); + + // testSystem.addComponent("CO2", 1); + // testSystem.addComponent("nitrogen", 1); + testSystem.addComponent("methane", 95); + // testSystem.addComponent("ethane", 1); + // testSystem.addTBPfraction("C7", 1.0, 187.0 / 1000.0, 0.84738); + + // testSystem.addComponent("propane", 5); + // testSystem.addComponent("n-octane", 2); + testSystem.addComponent("nC10", 6); + // testSystem.setHeavyTBPfractionAsPlusFraction(); + // testSystem.getCharacterization().characterisePlusFraction(); + + testSystem.addComponent("water", 12); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + testSystem.init(0); + testSystem.init(3); + double a = testSystem.getTotalNumberOfMoles(); + + Stream wellStream = new Stream("Well stream", testSystem); + // wellStream.getThermoSystem().setTotalFlowRate(5.0, "MSm^3/day"); + + SeparationTrainModuleSimple separationModule = + new SeparationTrainModuleSimple("simpleSepTrain"); + separationModule.addInputStream("feed stream", wellStream); + separationModule.setSpecification("Second stage pressure", 15.0); + separationModule.setSpecification("heated oil temperature", 273.15 + 55.0); + separationModule.setSpecification("Third stage pressure", 1.0); + separationModule.setSpecification("Gas exit temperature", 273.15 + 25.0); + separationModule.setSpecification("First stage compressor after cooler temperature", + 273.15 + 25.0); + separationModule.setSpecification("Export oil temperature", 273.15 + 25.0); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + + operations.add(wellStream); + operations.add(separationModule); + // separationModule.getUnit("") + // ((Recycle) operations.getUnit("Resycle")).setTolerance(1e-9); + + operations.run(); + + // ArrayList names2 = operations.getAllUnitNames(); + // processSimulation.processEquipment.ProcessEquipmentInterface tempStr = + // (ProcessEquipmentBaseClass) operations.getUnit("2nd stage recompressor"); + // tempStr.displayResult(); + // wellStream.displayResult(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("Inlet separator")) + .getMechanicalDesign().calcDesign(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("Inlet separator")) + .getMechanicalDesign().displayResults(); + + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("1st stage separator")) + .getMechanicalDesign().calcDesign(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("1st stage separator")) + .getMechanicalDesign().displayResults(); + + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("2nd stage Separator")) + .getMechanicalDesign().calcDesign(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("2nd stage Separator")) + .getMechanicalDesign().displayResults(); + + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("3rd stage Separator")) + .getMechanicalDesign().calcDesign(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("3rd stage Separator")) + .getMechanicalDesign().displayResults(); + + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("2nd stage recompressor")) + .getMechanicalDesign().calcDesign(); + ((ProcessEquipmentInterface) separationModule.getOperations().getUnit("2nd stage recompressor")) + .getMechanicalDesign().displayResults(); + + // operations.getSystemMechanicalDesign().runDesignCalculation(); + // operations.getSystemMechanicalDesign().getTotalPlotSpace(); + // System.out.println("Modules " + operations.getSystemMechanicalDesign().getTotalVolume()); + + // System.out + // .println("Modules " + operations.getSystemMechanicalDesign().getTotalNumberOfModules()); + // System.out.println("Weight " + operations.getSystemMechanicalDesign().getTotalWeight()); + // System.out.println("Plot space " + + // operations.getSystemMechanicalDesign().getTotalPlotSpace()); + // System.out.println("CAPEX " + operations.getCostEstimator().getWeightBasedCAPEXEstimate()); + // System.out.println("CAPEX " + operations.getCostEstimator().getCAPEXestimate()); + + /* + * separationModule.getOutputStream("Inlet separator").displayResult(); + * separationModule.getOutputStream("oil exit stream").displayResult(); + * System.out.println("third stage compressor power " + ((Compressor) + * separationModule.getOperations().getUnit("3rd stage recompressor")).getPower( ) + " W"); + * System.out.println("secondstage compressor power " + ((Compressor) + * separationModule.getOperations().getUnit("2nd stage recompressor")).getPower( ) + " W"); + * System.out.println("third stage cooler duty " + ((Cooler) + * separationModule.getOperations().getUnit("3rd stage cooler")).getEnergyInput( ) + " W"); + * System.out.println("HP gas cooler duty " + ((Cooler) + * separationModule.getOperations().getUnit("HP gas cooler")).getEnergyInput() + " W"); + * System.out.println("Export oil flow " + + * separationModule.getOutputStream("oil exit stream").getThermoSystem(). + * getTotalNumberOfMoles() * + * separationModule.getOutputStream("oil exit stream").getThermoSystem(). getMolarMass() / + * separationModule.getOutputStream("oil exit stream").getThermoSystem(). + * getPhase(0).getPhysicalProperties().getDensity() * 3600.0 + " m^3/hr"); + * System.out.println("Export gas flow " + + * separationModule.getOutputStream("gas exit stream").getThermoSystem(). + * getTotalNumberOfMoles() * + * separationModule.getOutputStream("gas exit stream").getThermoSystem(). getMolarMass() / + * separationModule.getOutputStream("gas exit stream").getThermoSystem(). + * getPhase(0).getPhysicalProperties().getDensity() * 3600.0 + " m^3/hr"); + * System.out.println("Export gas flow " + + * separationModule.getOutputStream("gas exit stream").getThermoSystem(). + * getTotalNumberOfMoles() * ThermodynamicConstantsInterface.R * (273.15 + 15.0) + * /ThermodynamicConstantsInterface.atm * 3600.0 * 24 / 1.0e6 + " MSm^3/day"); + * System.out.println("oil/water heater duty " + ((Heater) + * separationModule.getOperations().getUnit("oil/water heater")).getEnergyInput( ) + " W"); + * System.out.println("Export oil cooler duty " + ((Cooler) + * separationModule.getOperations().getUnit("export oil cooler")).getEnergyInput () + " W"); + */ + } } diff --git a/src/main/java/neqsim/processSimulation/processSystem/processModules/WellFluidModule.java b/src/main/java/neqsim/processSimulation/processSystem/processModules/WellFluidModule.java index 095034d208..b0d3c4ac59 100644 --- a/src/main/java/neqsim/processSimulation/processSystem/processModules/WellFluidModule.java +++ b/src/main/java/neqsim/processSimulation/processSystem/processModules/WellFluidModule.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processSystem.processModules; +import java.util.UUID; import neqsim.processSimulation.processEquipment.heatExchanger.Cooler; import neqsim.processSimulation.processEquipment.heatExchanger.Heater; import neqsim.processSimulation.processEquipment.mixer.Mixer; @@ -9,234 +10,251 @@ import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; import neqsim.processSimulation.processSystem.ProcessModuleBaseClass; +import neqsim.thermo.ThermodynamicConstantsInterface; /** - *

WellFluidModule class.

+ *

+ * WellFluidModule class. + *

* * @author esol * @version $Id: $Id */ public class WellFluidModule extends ProcessModuleBaseClass { - private static final long serialVersionUID = 1000; - - protected StreamInterface feedStream = null, outStream = null; - // ThreePhaseSeparator thirdStageSeparator = null; - Cooler oilCooler; - double secondstagePressure = 15.00; // bar' - double inletPressure = 55.0, gasfactor = 0.1; - double thirdstagePressure = 1.01325; - double separationTemperature = 273.15 + 15; - double exitGasScrubberTemperature = 273.15 + 30; - double firstStageCompressorAfterCoolerTemperature = 273.15 + 30; - double exportOilTemperature = 273.15 + 30; - - public WellFluidModule(String name) { - super(name); + private static final long serialVersionUID = 1000; + + protected StreamInterface feedStream = null; + protected StreamInterface outStream = null; + + // ThreePhaseSeparator thirdStageSeparator = null; + Cooler oilCooler; + double secondstagePressure = 15.00; // bar' + double inletPressure = 55.0; + + double gasfactor = 0.1; + + double thirdstagePressure = ThermodynamicConstantsInterface.referencePressure; + double separationTemperature = 273.15 + 15; + double exitGasScrubberTemperature = 273.15 + 30; + double firstStageCompressorAfterCoolerTemperature = 273.15 + 30; + double exportOilTemperature = 273.15 + 30; + + /** + *

Constructor for WellFluidModule.

+ * + * @param name a {@link java.lang.String} object + */ + public WellFluidModule(String name) { + super(name); + } + + /** {@inheritDoc} */ + @Override + public void addInputStream(String streamName, StreamInterface stream) { + if (streamName.equals("feed stream")) { + this.feedStream = stream; } + } - /** {@inheritDoc} */ - @Override - public void addInputStream(String streamName, StreamInterface stream) { - if (streamName.equals("feed stream")) { - this.feedStream = stream; - } + /** {@inheritDoc} */ + @Override + public StreamInterface getOutputStream(String streamName) { + if (!isInitializedStreams) { + initializeStreams(); } - - /** {@inheritDoc} */ - @Override - public StreamInterface getOutputStream(String streamName) { - if (!isInitializedStreams) { - initializeStreams(); - } - return this.outStream; - } - - /** {@inheritDoc} */ - @Override - public void run() { - if (!isInitializedModule) { - initializeModule(); - } - getOperations().run(); - - double volGas = ((Mixer) getOperations().getUnit("gas mixer")).getOutletStream() - .getThermoSystem().getVolume(); - double volOil = ((ThreePhaseSeparator) getOperations().getUnit("3rd stage Separator")) - .getOilOutStream().getThermoSystem().getVolume(); - - double GOR = volGas / volOil; - System.out.println("GOR " + GOR); - outStream = ((Mixer) getOperations().getUnit("well mixer")).getOutletStream(); - - // ((Heater) getOperations().getUnit("gas heater")).displayResult(); - - Stream gasStream = - (Stream) ((Heater) getOperations().getUnit("gas heater")).getOutletStream().clone(); - gasStream.getThermoSystem().setPressure(inletPressure); - Stream oilStream = - (Stream) ((ThreePhaseSeparator) getOperations().getUnit("3rd stage Separator")) - .getOilOutStream().clone(); - oilStream.getThermoSystem().setPressure(inletPressure); - - ((Separator) getOperations().getUnit("Inlet separator")).addStream(gasStream); - ((Separator) getOperations().getUnit("Inlet separator")).addStream(oilStream); - getOperations().run(); - - volGas = ((Mixer) getOperations().getUnit("gas mixer")).getOutletStream().getThermoSystem() - .getVolume(); - volOil = ((ThreePhaseSeparator) getOperations().getUnit("3rd stage Separator")) - .getOilOutStream().getThermoSystem().getVolume(); - - GOR = volGas / volOil; - System.out.println("GOR " + GOR); - outStream = ((Mixer) getOperations().getUnit("well mixer")).getOutletStream(); - } - - /** {@inheritDoc} */ - @Override - public void initializeModule() { - isInitializedModule = true; - inletPressure = feedStream.getPressure(); - Separator inletSeparator = new Separator("Inlet separator", feedStream); - - Heater liquidOutHeater = - new Heater("oil/water heater", inletSeparator.getLiquidOutStream()); - liquidOutHeater.setOutTemperature(separationTemperature); - - ThreePhaseSeparator firstStageSeparator = - new ThreePhaseSeparator("1st stage separator", liquidOutHeater.getOutletStream()); - - ThrottlingValve valve1 = - new ThrottlingValve("1stTo2ndStageOilValve", firstStageSeparator.getOilOutStream()); - valve1.setOutletPressure(secondstagePressure); - - Heater liquidOutHeater2 = new Heater("oil/water heater2", valve1.getOutletStream()); - liquidOutHeater2.setOutTemperature(separationTemperature); - - ThreePhaseSeparator secondStageSeparator = - new ThreePhaseSeparator("2nd stage Separator", liquidOutHeater2.getOutletStream()); - - ThrottlingValve thirdStageValve = - new ThrottlingValve("2-3stageOilValve", secondStageSeparator.getLiquidOutStream()); - thirdStageValve.setOutletPressure(thirdstagePressure); - - Heater liquidOutHeater3 = - new Heater("oil/water heater3", thirdStageValve.getOutletStream()); - liquidOutHeater3.setOutTemperature(separationTemperature); - - ThreePhaseSeparator thirdStageSeparator = - new ThreePhaseSeparator("3rd stage Separator", liquidOutHeater3.getOutletStream()); - - Mixer gasMixer = new Mixer("gas mixer"); - - gasMixer.addStream(inletSeparator.getGasOutStream()); - gasMixer.addStream(firstStageSeparator.getGasOutStream()); - gasMixer.addStream(secondStageSeparator.getGasOutStream()); - gasMixer.addStream(thirdStageSeparator.getGasOutStream()); - - Heater gasHeater = new Heater("gas heater", gasMixer.getOutletStream()); - gasHeater.setOutTemperature(separationTemperature); - - Mixer wellStreamMixer = new Mixer("well mixer"); - wellStreamMixer.addStream(thirdStageSeparator.getOilOutStream()); - wellStreamMixer.addStream(gasHeater.getOutletStream()); - - getOperations().add(inletSeparator); - getOperations().add(liquidOutHeater); - getOperations().add(firstStageSeparator); - getOperations().add(valve1); - getOperations().add(liquidOutHeater2); - getOperations().add(secondStageSeparator); - getOperations().add(thirdStageValve); - getOperations().add(liquidOutHeater3); - getOperations().add(thirdStageSeparator); - getOperations().add(gasMixer); - getOperations().add(gasHeater); - getOperations().add(wellStreamMixer); - - // gasExitStream = gasInletScrubber.getGasOutStream(); - // oilExitStream = thirdStageSeparator.getOilOutStream(); - } - - /** {@inheritDoc} */ - @Override - public void initializeStreams() { - isInitializedStreams = true; - } - - /** {@inheritDoc} */ - @Override - public void calcDesign() { - // design is done here + return this.outStream; + } + + /** {@inheritDoc} */ + @Override + public void run(UUID id) { + if (!isInitializedModule) { + initializeModule(); } - - /** {@inheritDoc} */ - @Override - public void setDesign() { - // set design is done here + getOperations().run(id); + + double volGas = ((Mixer) getOperations().getUnit("gas mixer")).getOutletStream() + .getThermoSystem().getVolume(); + double volOil = ((ThreePhaseSeparator) getOperations().getUnit("3rd stage Separator")) + .getOilOutStream().getThermoSystem().getVolume(); + + double GOR = volGas / volOil; + System.out.println("GOR " + GOR); + outStream = ((Mixer) getOperations().getUnit("well mixer")).getOutletStream(); + + // ((Heater) getOperations().getUnit("gas heater")).displayResult(); + + Stream gasStream = + (Stream) ((Heater) getOperations().getUnit("gas heater")).getOutletStream().clone(); + gasStream.getThermoSystem().setPressure(inletPressure); + Stream oilStream = + (Stream) ((ThreePhaseSeparator) getOperations().getUnit("3rd stage Separator")) + .getOilOutStream().clone(); + oilStream.getThermoSystem().setPressure(inletPressure); + + ((Separator) getOperations().getUnit("Inlet separator")).addStream(gasStream); + ((Separator) getOperations().getUnit("Inlet separator")).addStream(oilStream); + getOperations().run(id); + + volGas = ((Mixer) getOperations().getUnit("gas mixer")).getOutletStream().getThermoSystem() + .getVolume(); + volOil = ((ThreePhaseSeparator) getOperations().getUnit("3rd stage Separator")) + .getOilOutStream().getThermoSystem().getVolume(); + + GOR = volGas / volOil; + System.out.println("GOR " + GOR); + outStream = ((Mixer) getOperations().getUnit("well mixer")).getOutletStream(); + + outStream.setCalculationIdentifier(id); + setCalculationIdentifier(id); + } + + /** {@inheritDoc} */ + @Override + public void initializeModule() { + isInitializedModule = true; + inletPressure = feedStream.getPressure(); + Separator inletSeparator = new Separator("Inlet separator", feedStream); + + Heater liquidOutHeater = new Heater("oil/water heater", inletSeparator.getLiquidOutStream()); + liquidOutHeater.setOutTemperature(separationTemperature); + + ThreePhaseSeparator firstStageSeparator = + new ThreePhaseSeparator("1st stage separator", liquidOutHeater.getOutletStream()); + + ThrottlingValve valve1 = + new ThrottlingValve("1stTo2ndStageOilValve", firstStageSeparator.getOilOutStream()); + valve1.setOutletPressure(secondstagePressure); + + Heater liquidOutHeater2 = new Heater("oil/water heater2", valve1.getOutletStream()); + liquidOutHeater2.setOutTemperature(separationTemperature); + + ThreePhaseSeparator secondStageSeparator = + new ThreePhaseSeparator("2nd stage Separator", liquidOutHeater2.getOutletStream()); + + ThrottlingValve thirdStageValve = + new ThrottlingValve("2-3stageOilValve", secondStageSeparator.getLiquidOutStream()); + thirdStageValve.setOutletPressure(thirdstagePressure); + + Heater liquidOutHeater3 = new Heater("oil/water heater3", thirdStageValve.getOutletStream()); + liquidOutHeater3.setOutTemperature(separationTemperature); + + ThreePhaseSeparator thirdStageSeparator = + new ThreePhaseSeparator("3rd stage Separator", liquidOutHeater3.getOutletStream()); + + Mixer gasMixer = new Mixer("gas mixer"); + + gasMixer.addStream(inletSeparator.getGasOutStream()); + gasMixer.addStream(firstStageSeparator.getGasOutStream()); + gasMixer.addStream(secondStageSeparator.getGasOutStream()); + gasMixer.addStream(thirdStageSeparator.getGasOutStream()); + + Heater gasHeater = new Heater("gas heater", gasMixer.getOutletStream()); + gasHeater.setOutTemperature(separationTemperature); + + Mixer wellStreamMixer = new Mixer("well mixer"); + wellStreamMixer.addStream(thirdStageSeparator.getOilOutStream()); + wellStreamMixer.addStream(gasHeater.getOutletStream()); + + getOperations().add(inletSeparator); + getOperations().add(liquidOutHeater); + getOperations().add(firstStageSeparator); + getOperations().add(valve1); + getOperations().add(liquidOutHeater2); + getOperations().add(secondStageSeparator); + getOperations().add(thirdStageValve); + getOperations().add(liquidOutHeater3); + getOperations().add(thirdStageSeparator); + getOperations().add(gasMixer); + getOperations().add(gasHeater); + getOperations().add(wellStreamMixer); + + // gasExitStream = gasInletScrubber.getGasOutStream(); + // oilExitStream = thirdStageSeparator.getOilOutStream(); + } + + /** {@inheritDoc} */ + @Override + public void initializeStreams() { + isInitializedStreams = true; + } + + /** {@inheritDoc} */ + @Override + public void calcDesign() { + // design is done here + } + + /** {@inheritDoc} */ + @Override + public void setDesign() { + // set design is done here + } + + /** {@inheritDoc} */ + @Override + public void setSpecification(String specificationName, double value) { + if (specificationName.equals("Second stage pressure")) { + secondstagePressure = value; } - - /** {@inheritDoc} */ - @Override - public void setSpecification(String specificationName, double value) { - if (specificationName.equals("Second stage pressure")) { - secondstagePressure = value; - } - if (specificationName.equals("separation temperature")) { - separationTemperature = value; - } - if (specificationName.equals("Third stage pressure")) { - thirdstagePressure = value; - } + if (specificationName.equals("separation temperature")) { + separationTemperature = value; } - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos(273.15 + 50, 65); - - // testSystem.addComponent("CO2", 1); - // testSystem.addComponent("nitrogen", 1); - testSystem.addComponent("methane", 195); - // testSystem.addComponent("ethane", 1); - // testSystem.addTBPfraction("C7", 1.0, 187.0 / 1000.0, 0.84738); - - // testSystem.addComponent("propane", 5); - // testSystem.addComponent("n-octane", 2); - testSystem.addComponent("nC10", 6); - // testSystem.setHeavyTBPfractionAsPlusFraction(); - // testSystem.getCharacterization().characterisePlusFraction(); - - testSystem.addComponent("water", 12); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - testSystem.init(0); - testSystem.init(3); - double a = testSystem.getTotalNumberOfMoles(); - - Stream wellStream = new Stream("Well stream", testSystem); - // wellStream.getThermoSystem().setTotalFlowRate(5.0, "MSm^3/day"); - - WellFluidModule separationModule = new WellFluidModule("separationModule"); - separationModule.addInputStream("feed stream", wellStream); - separationModule.setSpecification("Second stage pressure", 15.0); - separationModule.setSpecification("separation temperature", 273.15 + 15.0); - separationModule.setSpecification("Third stage pressure", 1.01325); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - - operations.add(wellStream); - operations.add(separationModule); - // separationModule.getUnit("") - // ((Recycle) operations.getUnit("Resycle")).setTolerance(1e-9); - - operations.run(); + if (specificationName.equals("Third stage pressure")) { + thirdstagePressure = value; } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos(273.15 + 50, 65); + + // testSystem.addComponent("CO2", 1); + // testSystem.addComponent("nitrogen", 1); + testSystem.addComponent("methane", 195); + // testSystem.addComponent("ethane", 1); + // testSystem.addTBPfraction("C7", 1.0, 187.0 / 1000.0, 0.84738); + + // testSystem.addComponent("propane", 5); + // testSystem.addComponent("n-octane", 2); + testSystem.addComponent("nC10", 6); + // testSystem.setHeavyTBPfractionAsPlusFraction(); + // testSystem.getCharacterization().characterisePlusFraction(); + + testSystem.addComponent("water", 12); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + testSystem.init(0); + testSystem.init(3); + double a = testSystem.getTotalNumberOfMoles(); + + Stream wellStream = new Stream("Well stream", testSystem); + // wellStream.getThermoSystem().setTotalFlowRate(5.0, "MSm^3/day"); + + WellFluidModule separationModule = new WellFluidModule("separationModule"); + separationModule.addInputStream("feed stream", wellStream); + separationModule.setSpecification("Second stage pressure", 15.0); + separationModule.setSpecification("separation temperature", 273.15 + 15.0); + separationModule.setSpecification("Third stage pressure", + ThermodynamicConstantsInterface.referencePressure); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + + operations.add(wellStream); + operations.add(separationModule); + // separationModule.getUnit("") + // ((Recycle) operations.getUnit("Resycle")).setTolerance(1e-9); + + operations.run(); + } } diff --git a/src/main/java/neqsim/processSimulation/util/monitor/CompressorResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/CompressorResponse.java index 15adb97bac..77c2ecea31 100644 --- a/src/main/java/neqsim/processSimulation/util/monitor/CompressorResponse.java +++ b/src/main/java/neqsim/processSimulation/util/monitor/CompressorResponse.java @@ -3,60 +3,66 @@ import neqsim.processSimulation.processEquipment.compressor.Compressor; /** - *

CompressorResponse class.

+ *

+ * CompressorResponse class. + *

* * @author asmund * @version $Id: $Id */ public class CompressorResponse { - public String name = "test"; + public String name = "test"; - public Double suctionTemperature; - public Double dischargeTemperature; - public Double suctionPressure; - public Double dischargePressure; - public Double polytropicHead; - public Double polytropicEfficiency; - public Double power; - public Double suctionVolumeFlow; - public Double internalVolumeFlow; - public Double dischargeVolumeFlow; - public Double molarMass; - public Double suctionMassDensity; - public Double dischargeMassDensity; - public Double massflow; - public Integer speed; + public Double suctionTemperature; + public Double dischargeTemperature; + public Double suctionPressure; + public Double dischargePressure; + public Double polytropicHead; + public Double polytropicEfficiency; + public Double power; + public Double suctionVolumeFlow; + public Double internalVolumeFlow; + public Double dischargeVolumeFlow; + public Double molarMass; + public Double suctionMassDensity; + public Double dischargeMassDensity; + public Double massflow; + public Double speed; - /** - *

Constructor for CompressorResponse.

- */ - public CompressorResponse() { - } + /** + *

+ * Constructor for CompressorResponse. + *

+ */ + public CompressorResponse() {} - /** - *

Constructor for CompressorResponse.

- * - * @param inputCompressor a {@link neqsim.processSimulation.processEquipment.compressor.Compressor} object - */ - public CompressorResponse(Compressor inputCompressor){ - name = inputCompressor.getName(); - molarMass = inputCompressor.getInletStream().getFluid().getMolarMass(); - suctionMassDensity = inputCompressor.getInletStream().getFluid().getDensity("kg/m3"); - dischargeMassDensity = inputCompressor.getOutletStream().getFluid().getDensity("kg/m3"); - massflow = inputCompressor.getInletStream().getFluid().getFlowRate("kg/hr"); - suctionVolumeFlow = inputCompressor.getInletStream().getFluid().getFlowRate("m3/hr"); - dischargeVolumeFlow = inputCompressor.getOutletStream().getFluid().getFlowRate("m3/hr"); - suctionPressure = inputCompressor.getInletStream().getPressure("bara"); - suctionTemperature = inputCompressor.getInletStream().getTemperature("C"); - dischargeTemperature = inputCompressor.getOutletStream().getTemperature("C"); - dischargePressure = inputCompressor.getOutletStream().getPressure("bara"); - polytropicHead = inputCompressor.getPolytropicFluidHead(); - polytropicEfficiency = inputCompressor.getPolytropicEfficiency(); - power = inputCompressor.getPower("kW"); - speed = inputCompressor.getSpeed(); - if (inputCompressor.getAntiSurge().isActive()) { - internalVolumeFlow = inputCompressor.getCompressorChart().getSurgeCurve() - .getSurgeFlow(polytropicHead); - } + /** + *

+ * Constructor for CompressorResponse. + *

+ * + * @param inputCompressor a + * {@link neqsim.processSimulation.processEquipment.compressor.Compressor} object + */ + public CompressorResponse(Compressor inputCompressor) { + name = inputCompressor.getName(); + molarMass = inputCompressor.getInletStream().getFluid().getMolarMass(); + suctionMassDensity = inputCompressor.getInletStream().getFluid().getDensity("kg/m3"); + dischargeMassDensity = inputCompressor.getOutletStream().getFluid().getDensity("kg/m3"); + massflow = inputCompressor.getInletStream().getFluid().getFlowRate("kg/hr"); + suctionVolumeFlow = inputCompressor.getInletStream().getFluid().getFlowRate("m3/hr"); + dischargeVolumeFlow = inputCompressor.getOutletStream().getFluid().getFlowRate("m3/hr"); + suctionPressure = inputCompressor.getInletStream().getPressure("bara"); + suctionTemperature = inputCompressor.getInletStream().getTemperature("C"); + dischargeTemperature = inputCompressor.getOutletStream().getTemperature("C"); + dischargePressure = inputCompressor.getOutletStream().getPressure("bara"); + polytropicHead = inputCompressor.getPolytropicFluidHead(); + polytropicEfficiency = inputCompressor.getPolytropicEfficiency(); + power = inputCompressor.getPower("kW"); + speed = inputCompressor.getSpeed(); + if (inputCompressor.getAntiSurge().isActive()) { + internalVolumeFlow = + inputCompressor.getCompressorChart().getSurgeCurve().getSurgeFlow(polytropicHead); } + } } diff --git a/src/main/java/neqsim/processSimulation/util/monitor/Fluid.java b/src/main/java/neqsim/processSimulation/util/monitor/Fluid.java deleted file mode 100644 index d79931d75e..0000000000 --- a/src/main/java/neqsim/processSimulation/util/monitor/Fluid.java +++ /dev/null @@ -1,120 +0,0 @@ -package neqsim.processSimulation.util.monitor; - -import java.util.HashMap; -import java.util.Map; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.NamedBaseClass; - -/** - *

- * Fluid class. - *

- * - * @author asmund - * @version $Id: $Id - */ -public class Fluid extends NamedBaseClass { - private static final long serialVersionUID = 1L; - public Double volumeFlow; - public Double molarMass; - public Double massDensity; - public Double massflow; - - public Map compProp; - - public Map> definedComponent; - public Map> oilComponent; - - /** - *

- * Constructor for Fluid. - *

- */ - @Deprecated - public Fluid() { - this("Fluid"); - } - - /** - *

- * Constructor for Fluid. Sets name of inputFluid as name. - *

- * - * @param inputFluid a {@link neqsim.thermo.system.SystemInterface} object - */ - public Fluid(SystemInterface inputFluid) { - this(inputFluid.getFluidName(), inputFluid); - } - - /** - * Constructor for Fluid. - * - * @param name name of fluid - */ - public Fluid(String name) { - super(name); - this.definedComponent = new HashMap<>(); - this.oilComponent = new HashMap<>(); - } - - /** - * Constructor for Fluid. - * - * @param name name of fluid - * @param inputFluid input fluid - */ - public Fluid(String name, SystemInterface inputFluid) { - this(name); - - for (int i = 0; i < inputFluid.getNumberOfComponents(); i++) { - compProp = new HashMap<>(); - if (inputFluid.getPhase(0).getComponent(i).isIsTBPfraction()) { - compProp.put("molFraction", inputFluid.getPhase(0).getComponent(i).getz()); - compProp.put("massFlow", inputFluid.getPhase(0).getComponent(i).getFlowRate("kg/hr")); - compProp.put("molarMass", inputFluid.getPhase(0).getComponent(i).getMolarMass()); - compProp.put("normalLiquidDensity", - inputFluid.getPhase(0).getComponent(i).getNormalLiquidDensity()); - oilComponent.put(inputFluid.getPhase(0).getComponent(i).getComponentName(), compProp); - } else { - compProp.put("molFraction", inputFluid.getPhase(0).getComponent(i).getz()); - compProp.put("massFlow", inputFluid.getPhase(0).getComponent(i).getFlowRate("kg/hr")); - definedComponent.put( - inputFluid.getPhase(0).getComponent(i).getComponentName().replaceAll("-", ""), - compProp); - } - } - - molarMass = inputFluid.getMolarMass(); - massDensity = inputFluid.getDensity("kg/m3"); - massflow = inputFluid.getFlowRate("kg/hr"); - volumeFlow = inputFluid.getFlowRate("m3/hr"); - } - - /** - * @return SystemInterface - */ - SystemInterface getNeqSimFluid() { - SystemInterface tempFluid = new neqsim.thermo.system.SystemSrkEos(); - - definedComponent.keySet().forEach(key -> { - tempFluid.addComponent(key, definedComponent.get(key).get("molFraction")); - }); - - oilComponent.keySet().forEach(key -> { - tempFluid.addTBPfraction(key, definedComponent.get(key).get("molFraction"), - definedComponent.get(key).get("molarMass"), - definedComponent.get(key).get("normalLiquidDensity")); - }); - - tempFluid.setMixingRule(2); - - return tempFluid; - } - - /** - *

- * print. - *

- */ - public void print() {} -} diff --git a/src/main/java/neqsim/processSimulation/util/monitor/FluidComponentResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/FluidComponentResponse.java new file mode 100644 index 0000000000..0b929c5936 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/util/monitor/FluidComponentResponse.java @@ -0,0 +1,119 @@ +package neqsim.processSimulation.util.monitor; + +import java.util.HashMap; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.thermo.component.ComponentInterface; +import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.system.SystemInterface; + +/** + *

+ * Fluid class. + *

+ * + * @author asmund + * @version $Id: $Id + */ +public class FluidComponentResponse { + private static final long serialVersionUID = 1L; + static Logger logger = LogManager.getLogger(FluidComponentResponse.class); + public String name; + public HashMap> properties = + new HashMap>(); + + /** + *

+ * Constructor for FluidComponentResponse. + *

+ */ + @Deprecated + public FluidComponentResponse() { + this("Fluid"); + } + + /** + *

+ * Constructor for FluidComponentResponse. Sets name of inputFluid as name. + *

+ * + * @param inputFluid a {@link neqsim.thermo.system.SystemInterface} object + */ + public FluidComponentResponse(SystemInterface inputFluid) { + this(inputFluid.getFluidName(), inputFluid); + } + + /** + * Constructor for FluidComponentResponse. + * + * @param nameinp name of fluid + */ + public FluidComponentResponse(String nameinp) { + this.name = nameinp; + } + + /** + * Constructor for FluidComponentResponse. + * + * @param fluidname name of fluid + * @param fluid input fluid + */ + public FluidComponentResponse(String fluidname, SystemInterface fluid) { + this(fluidname); + name = fluidname; + SystemInterface inputFluid = fluid.clone(); + inputFluid.init(0); + + HashMap newdata = new HashMap(); + + for (int i = 0; i < inputFluid.getNumberOfComponents(); i++) { + String name = inputFluid.getPhase(0).getComponent(i).getComponentName(); + ComponentInterface component = inputFluid.getPhase(0).getComponent(i); + PhaseInterface phase = inputFluid.getPhase(0); + newdata = new HashMap(); + newdata.put("Acentric Factor", + new Value(Double.toString(component.getAcentricFactor()), "-")); + newdata.put("Mole Fraction", new Value(Double.toString(component.getz()), "-")); + newdata.put("Weigth Fraction", new Value(Double.toString(phase.getWtFrac(i)), "-")); + newdata.put("Critical Temperature", + new Value( + Double.toString(component.getTC(neqsim.util.unit.Units.getSymbol("temperature"))), + neqsim.util.unit.Units.getSymbol("temperature"))); + newdata.put("Critical Pressure", + new Value(Double.toString(component.getPC(neqsim.util.unit.Units.getSymbol("pressure"))), + neqsim.util.unit.Units.getSymbol("pressure"))); + newdata.put("Normal Liquid Density", + new Value( + Double.toString( + component.getNormalLiquidDensity(neqsim.util.unit.Units.getSymbol("density"))), + neqsim.util.unit.Units.getSymbol("density"))); + + properties.put(name, newdata); + } + } + + /** + * @return SystemInterface + */ + SystemInterface getNeqSimFluid() { + SystemInterface tempFluid = new neqsim.thermo.system.SystemSrkEos(); + /* + * definedComponent.keySet().forEach(key -> { tempFluid.addComponent(key, + * definedComponent.get(key).get("molFraction")); }); + * + * oilComponent.keySet().forEach(key -> { tempFluid.addTBPfraction(key, + * definedComponent.get(key).get("molFraction"), definedComponent.get(key).get("molarMass"), + * definedComponent.get(key).get("normalLiquidDensity")); }); + * + * tempFluid.setMixingRule(2); + */ + return tempFluid; + } + + /** + *

+ * print. + *

+ */ + public void print() {} +} diff --git a/src/main/java/neqsim/processSimulation/util/monitor/FluidResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/FluidResponse.java new file mode 100644 index 0000000000..671e128a6f --- /dev/null +++ b/src/main/java/neqsim/processSimulation/util/monitor/FluidResponse.java @@ -0,0 +1,207 @@ +package neqsim.processSimulation.util.monitor; + +import java.util.HashMap; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.thermo.system.SystemInterface; + +/** + *

+ * Fluid class. + *

+ * + * @author asmund + * @version $Id: $Id + */ +public class FluidResponse { + private static final long serialVersionUID = 1L; + static Logger logger = LogManager.getLogger(FluidResponse.class); + public String name; + public HashMap> properties = + new HashMap>(); + public HashMap> composition = + new HashMap>(); + public HashMap> conditions = + new HashMap>(); + + /** + *

+ * Constructor for Fluid. + *

+ */ + @Deprecated + public FluidResponse() { + this("Fluid"); + } + + /** + *

+ * Constructor for Fluid. Sets name of inputFluid as name. + *

+ * + * @param inputFluid a {@link neqsim.thermo.system.SystemInterface} object + */ + public FluidResponse(SystemInterface inputFluid) { + this(inputFluid.getFluidName(), inputFluid); + } + + /** + * Constructor for Fluid. + * + * @param nameinp name of fluid + */ + public FluidResponse(String nameinp) { + this.name = nameinp; + } + + /** + * Constructor for Fluid. + * + * @param fluidname name of fluid + * @param inputFluid input fluid + */ + public FluidResponse(String fluidname, SystemInterface inputFluid) { + this(fluidname); + + name = inputFluid.getFluidName(); + + HashMap newdata = new HashMap(); + newdata.put("temperature", + new Value( + Double.toString( + inputFluid.getTemperature(neqsim.util.unit.Units.getSymbol("temperature"))), + neqsim.util.unit.Units.getSymbol("temperature"))); + newdata.put("pressure", + new Value( + Double.toString(inputFluid.getPressure(neqsim.util.unit.Units.getSymbol("pressure"))), + neqsim.util.unit.Units.getSymbol("pressure"))); + newdata.put("molar flow", + new Value( + Double.toString(inputFluid.getFlowRate(neqsim.util.unit.Units.getSymbol("molar flow"))), + neqsim.util.unit.Units.getSymbol("molar flow"))); + newdata.put("mass flow", + new Value( + Double.toString(inputFluid.getFlowRate(neqsim.util.unit.Units.getSymbol("mass flow"))), + neqsim.util.unit.Units.getSymbol("mass flow"))); + newdata.put("fluid model", new Value(inputFluid.getModelName(), "")); + newdata.put("enthalpy", + new Value( + Double.toString(inputFluid.getEnthalpy(neqsim.util.unit.Units.getSymbol("enthalpy"))), + neqsim.util.unit.Units.getSymbol("enthalpy"))); + conditions.put("overall", newdata); + + for (int i = 0; i < inputFluid.getNumberOfPhases(); i++) { + String name = inputFluid.getPhase(i).getPhaseTypeName(); + newdata = new HashMap(); + newdata.put("temperature", + new Value( + Double.toString(inputFluid.getPhase(name) + .getTemperature(neqsim.util.unit.Units.getSymbol("temperature"))), + neqsim.util.unit.Units.getSymbol("temperature"))); + newdata.put("pressure", new Value( + Double.toString( + inputFluid.getPhase(name).getPressure(neqsim.util.unit.Units.getSymbol("pressure"))), + neqsim.util.unit.Units.getSymbol("pressure"))); + newdata.put("molar flow", + new Value( + Double.toString(inputFluid.getPhase(name) + .getFlowRate(neqsim.util.unit.Units.getSymbol("molar flow"))), + neqsim.util.unit.Units.getSymbol("molar flow"))); + newdata.put("mass flow", new Value( + Double.toString( + inputFluid.getPhase(name).getFlowRate(neqsim.util.unit.Units.getSymbol("mass flow"))), + neqsim.util.unit.Units.getSymbol("mass flow"))); + newdata.put("fluid model", new Value(inputFluid.getModelName(), "")); + newdata.put("enthalpy", new Value( + Double.toString( + inputFluid.getPhase(name).getEnthalpy(neqsim.util.unit.Units.getSymbol("enthalpy"))), + neqsim.util.unit.Units.getSymbol("enthalpy"))); + conditions.put(name, newdata); + } + + name = inputFluid.getFluidName(); + newdata = new HashMap(); + for (int i = 0; i < inputFluid.getNumberOfComponents(); i++) { + newdata.put(inputFluid.getComponent(i).getComponentName(), + new Value(Double.toString(inputFluid.getComponent(i).getz()), "mole fraction")); + } + composition.put("overall", newdata); + for (int j = 0; j < inputFluid.getNumberOfPhases(); j++) { + newdata = new HashMap(); + HashMap newdata2 = new HashMap(); + for (int i = 0; i < inputFluid.getNumberOfComponents(); i++) { + newdata2.put(inputFluid.getPhase(j).getComponent(i).getComponentName(), new Value( + Double.toString(inputFluid.getPhase(j).getComponent(i).getx()), "mole fraction")); + newdata.put(inputFluid.getPhase(j).getComponent(i).getComponentName(), + new Value(Double.toString(inputFluid.getPhase(j).getWtFrac(i)), "weight fraction")); + } + composition.put(inputFluid.getPhase(j).getPhaseTypeName(), newdata2); + composition.put(inputFluid.getPhase(j).getPhaseTypeName() + "_wt", newdata); + } + + newdata = new HashMap(); + + newdata.put("density", + new Value( + Double.toString(inputFluid.getDensity(neqsim.util.unit.Units.getSymbol("density"))), + neqsim.util.unit.Units.getSymbol("density"))); + + newdata.put("molar mass", + new Value( + Double + .toString(inputFluid.getMolarMass(neqsim.util.unit.Units.getSymbol("Molar Mass"))), + neqsim.util.unit.Units.getSymbol("Molar Mass"))); + + newdata.put("flow rate", + new Value( + Double + .toString(inputFluid.getFlowRate(neqsim.util.unit.Units.getSymbol("volume flow"))), + neqsim.util.unit.Units.getSymbol("volume flow"))); + properties.put("overall", newdata); + for (int i = 0; i < inputFluid.getNumberOfPhases(); i++) { + newdata = new HashMap(); + String name = inputFluid.getPhase(i).getPhaseTypeName(); + newdata.put("density", new Value( + Double.toString( + inputFluid.getPhase(name).getDensity(neqsim.util.unit.Units.getSymbol("density"))), + neqsim.util.unit.Units.getSymbol("density"))); + newdata.put("molar mass", + new Value( + Double.toString(inputFluid.getPhase(name) + .getMolarMass(neqsim.util.unit.Units.getSymbol("Molar Mass"))), + neqsim.util.unit.Units.getSymbol("Molar Mass"))); + + newdata.put("flow rate", + new Value( + Double.toString(inputFluid.getPhase(name) + .getFlowRate(neqsim.util.unit.Units.getSymbol("volume flow"))), + neqsim.util.unit.Units.getSymbol("volume flow"))); + properties.put(name, newdata); + } + } + + /** + * @return SystemInterface + */ + SystemInterface getNeqSimFluid() { + SystemInterface tempFluid = new neqsim.thermo.system.SystemSrkEos(); + /* + * definedComponent.keySet().forEach(key -> { tempFluid.addComponent(key, + * definedComponent.get(key).get("molFraction")); }); + * + * oilComponent.keySet().forEach(key -> { tempFluid.addTBPfraction(key, + * definedComponent.get(key).get("molFraction"), definedComponent.get(key).get("molarMass"), + * definedComponent.get(key).get("normalLiquidDensity")); }); + * + * tempFluid.setMixingRule(2); + */ + return tempFluid; + } + + /** + *

+ * print. + *

+ */ + public void print() {} +} diff --git a/src/main/java/neqsim/processSimulation/util/monitor/HXResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/HXResponse.java index e1baa98547..926c8f8d09 100644 --- a/src/main/java/neqsim/processSimulation/util/monitor/HXResponse.java +++ b/src/main/java/neqsim/processSimulation/util/monitor/HXResponse.java @@ -11,43 +11,43 @@ * @version $Id: $Id */ public class HXResponse { - public String name = "test"; - - public Double feedTemperature1; - public Double dischargeTemperature1; - public Double HXthermalEfectiveness; - - public Double feedTemperature2; - public Double dischargeTemperature2; - - public Double dutyBalance; - - /** - *

- * Constructor for HXResponse. - *

- */ - public HXResponse() {} - - /** - *

- * Constructor for HXResponse. - *

- * - * @param inputHeatExchenger a - * {@link neqsim.processSimulation.processEquipment.heatExchanger.HeatExchanger} object - */ - public HXResponse(HeatExchanger inputHeatExchenger) { - name = inputHeatExchenger.getName(); - - feedTemperature1 = inputHeatExchenger.getInStream(0).getTemperature("C"); - dischargeTemperature1 = inputHeatExchenger.getOutStream(0).getTemperature("C"); - - feedTemperature2 = inputHeatExchenger.getInStream(1).getTemperature("C"); - dischargeTemperature2 = inputHeatExchenger.getOutStream(1).getTemperature("C"); - - HXthermalEfectiveness = inputHeatExchenger.getThermalEffectiveness(); - - dutyBalance = inputHeatExchenger.getHotColdDutyBalance(); - } + public String name = "test"; + + public Double feedTemperature1; + public Double dischargeTemperature1; + public Double HXthermalEfectiveness; + + public Double feedTemperature2; + public Double dischargeTemperature2; + + public Double dutyBalance; + public Double duty; + public Double UAvalue; + + /** + *

+ * Constructor for HXResponse. + *

+ */ + public HXResponse() {} + + /** + *

+ * Constructor for HXResponse. + *

+ * + * @param inputHeatExchanger a + * {@link neqsim.processSimulation.processEquipment.heatExchanger.HeatExchanger} object + */ + public HXResponse(HeatExchanger inputHeatExchanger) { + name = inputHeatExchanger.getName(); + feedTemperature1 = inputHeatExchanger.getInStream(0).getTemperature("C"); + dischargeTemperature1 = inputHeatExchanger.getOutStream(0).getTemperature("C"); + feedTemperature2 = inputHeatExchanger.getInStream(1).getTemperature("C"); + dischargeTemperature2 = inputHeatExchanger.getOutStream(1).getTemperature("C"); + HXthermalEfectiveness = inputHeatExchanger.getThermalEffectiveness(); + dutyBalance = inputHeatExchanger.getHotColdDutyBalance(); + duty = inputHeatExchanger.getDuty(); + UAvalue = inputHeatExchanger.getUAvalue(); + } } diff --git a/src/main/java/neqsim/processSimulation/util/monitor/HeaterResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/HeaterResponse.java index fde87bc08a..d5c44ffacd 100644 --- a/src/main/java/neqsim/processSimulation/util/monitor/HeaterResponse.java +++ b/src/main/java/neqsim/processSimulation/util/monitor/HeaterResponse.java @@ -11,33 +11,25 @@ * @version $Id: $Id */ public class HeaterResponse { - public String name = "test"; + public String name = "test"; - public Double feedTemperature; - public Double dischargeTemperature; - public Double duty; + public Double feedTemperature; + public Double dischargeTemperature; + public Double duty; - /** - *

- * Constructor for HeaterResponse. - *

- */ - public HeaterResponse() {} + /** + *

+ * Constructor for HeaterResponse. + *

+ * + * @param inputHeater a {@link neqsim.processSimulation.processEquipment.heatExchanger.Heater} object + */ + public HeaterResponse(Heater inputHeater) { + name = inputHeater.getName(); - /** - *

- * Constructor for HeaterResponse. - *

- * - * @param inputHeater a {@link neqsim.processSimulation.processEquipment.heatExchanger.Heater} - * object - */ - public HeaterResponse(Heater inputHeater) { - name = inputHeater.getName(); + feedTemperature = inputHeater.getInletStream().getTemperature("C"); + dischargeTemperature = inputHeater.getOutletStream().getTemperature("C"); - feedTemperature = inputHeater.getInletStream().getTemperature("C"); - dischargeTemperature = inputHeater.getOutletStream().getTemperature("C"); - - duty = inputHeater.getDuty(); - } + duty = inputHeater.getDuty(); + } } diff --git a/src/main/java/neqsim/processSimulation/util/monitor/MPMResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/MPMResponse.java index 5883a19b24..4c50c5a5e0 100644 --- a/src/main/java/neqsim/processSimulation/util/monitor/MPMResponse.java +++ b/src/main/java/neqsim/processSimulation/util/monitor/MPMResponse.java @@ -11,30 +11,23 @@ * @version $Id: $Id */ public class MPMResponse { - public String name; - public Double massFLow, GOR, GOR_std, gasDensity, oilDensity, waterDensity; + public String name; + public Double massFLow, GOR, GOR_std, gasDensity, oilDensity, waterDensity; - /** - *

- * Constructor for MPMResponse. - *

- */ - public MPMResponse() {} - - /** - *

- * Constructor for MPMResponse. - *

- * - * @param inputMPM a {@link neqsim.processSimulation.measurementDevice.MultiPhaseMeter} object - */ - public MPMResponse(MultiPhaseMeter inputMPM) { - name = inputMPM.getName(); - massFLow = inputMPM.getMeasuredValue(); - GOR = inputMPM.getMeasuredValue("GOR"); - GOR_std = inputMPM.getMeasuredValue("GOR_std"); - gasDensity = inputMPM.getMeasuredValue("gasDensity"); - oilDensity = inputMPM.getMeasuredValue("oilDensity"); - waterDensity = inputMPM.getMeasuredValue("waterDensity"); - } + /** + *

+ * Constructor for MPMResponse. + *

+ * + * @param inputMPM a {@link neqsim.processSimulation.measurementDevice.MultiPhaseMeter} object + */ + public MPMResponse(MultiPhaseMeter inputMPM) { + name = inputMPM.getName(); + massFLow = inputMPM.getMeasuredValue(); + GOR = inputMPM.getMeasuredValue("GOR", ""); + GOR_std = inputMPM.getMeasuredValue("GOR_std", ""); + gasDensity = inputMPM.getMeasuredValue("gasDensity", ""); + oilDensity = inputMPM.getMeasuredValue("oilDensity", ""); + waterDensity = inputMPM.getMeasuredValue("waterDensity", ""); + } } diff --git a/src/main/java/neqsim/processSimulation/util/monitor/PumpResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/PumpResponse.java index 3deaf18f37..3d15e7fe93 100644 --- a/src/main/java/neqsim/processSimulation/util/monitor/PumpResponse.java +++ b/src/main/java/neqsim/processSimulation/util/monitor/PumpResponse.java @@ -11,58 +11,53 @@ * @version $Id: $Id */ public class PumpResponse { - public String name = "test"; + public String name = "test"; - public Double suctionTemperature; - public Double dischargeTemperature; - public Double suctionPressure; - public Double dischargePressure; - // public Double polytropicHead; - // public Double polytropicEfficiency; - public Double power; - public Double suctionVolumeFlow; - public Double internalVolumeFlow; - public Double dischargeVolumeFlow; - public Double molarMass; - public Double suctionMassDensity; - public Double dischargeMassDensity; - public Double massflow; - public Integer speed; + public Double suctionTemperature; + public Double dischargeTemperature; + public Double suctionPressure; + public Double dischargePressure; + // public Double polytropicHead; + // public Double polytropicEfficiency; + public Double power; + public Double duty; + public Double suctionVolumeFlow; + public Double internalVolumeFlow; + public Double dischargeVolumeFlow; + public Double molarMass; + public Double suctionMassDensity; + public Double dischargeMassDensity; + public Double massflow; + public Integer speed; - /** - *

- * Constructor for PumpResponse. - *

- */ - public PumpResponse() {} + /** + *

+ * Constructor for PumpResponse. + *

+ * + * @param inputPump a {@link neqsim.processSimulation.processEquipment.pump.Pump} object + */ + public PumpResponse(Pump inputPump) { + name = inputPump.getName(); + molarMass = inputPump.getInletStream().getFluid().getMolarMass(); + suctionMassDensity = inputPump.getInletStream().getFluid().getDensity("kg/m3"); + dischargeMassDensity = inputPump.getOutletStream().getFluid().getDensity("kg/m3"); + massflow = inputPump.getInletStream().getFluid().getFlowRate("kg/hr"); + suctionVolumeFlow = inputPump.getInletStream().getFluid().getFlowRate("m3/hr"); + dischargeVolumeFlow = inputPump.getOutletStream().getFluid().getFlowRate("m3/hr"); + suctionPressure = inputPump.getInletStream().getPressure("bara"); + suctionTemperature = inputPump.getInletStream().getTemperature("C"); + dischargeTemperature = inputPump.getOutletStream().getTemperature("C"); + dischargePressure = inputPump.getOutletStream().getPressure("bara"); - /** - *

- * Constructor for PumpResponse. - *

- * - * @param inputPump a {@link neqsim.processSimulation.processEquipment.pump.Pump} object - */ - public PumpResponse(Pump inputPump) { - name = inputPump.getName(); - molarMass = inputPump.getInletStream().getFluid().getMolarMass(); - suctionMassDensity = inputPump.getInletStream().getFluid().getDensity("kg/m3"); - dischargeMassDensity = inputPump.getOutletStream().getFluid().getDensity("kg/m3"); - massflow = inputPump.getInletStream().getFluid().getFlowRate("kg/hr"); - suctionVolumeFlow = inputPump.getInletStream().getFluid().getFlowRate("m3/hr"); - dischargeVolumeFlow = inputPump.getOutletStream().getFluid().getFlowRate("m3/hr"); - suctionPressure = inputPump.getInletStream().getPressure("bara"); - suctionTemperature = inputPump.getInletStream().getTemperature("C"); - dischargeTemperature = inputPump.getOutletStream().getTemperature("C"); - dischargePressure = inputPump.getOutletStream().getPressure("bara"); - - // polytropicHead = inputCompressor.getPolytropicFluidHead(); - // polytropicEfficiency =inputCompressor.getPolytropicEfficiency(); - power = inputPump.getPower("W");// "kW"); - // speed = inputPump.getSpeed(); - // if(inputCompressor.getAntiSurge().isActive()){ - // internalVolumeFlow = - // inputCompressor.getCompressorChart().getSurgeCurve().getSurgeFlow(polytropicHead); - // } - } + // polytropicHead = inputCompressor.getPolytropicFluidHead(); + // polytropicEfficiency =inputCompressor.getPolytropicEfficiency(); + power = inputPump.getPower("W"); // "kW"); + duty = power; + // speed = inputPump.getSpeed(); + // if(inputCompressor.getAntiSurge().isActive()){ + // internalVolumeFlow = + // inputCompressor.getCompressorChart().getSurgeCurve().getSurgeFlow(polytropicHead); + // } + } } diff --git a/src/main/java/neqsim/processSimulation/util/monitor/SeparatorResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/SeparatorResponse.java index 756230a71b..5c3a750a4f 100644 --- a/src/main/java/neqsim/processSimulation/util/monitor/SeparatorResponse.java +++ b/src/main/java/neqsim/processSimulation/util/monitor/SeparatorResponse.java @@ -14,15 +14,7 @@ public class SeparatorResponse { public String name; public Double gasLoadFactor; - public Double massflow; - public Fluid gasFluid, liquidFluid, oilFluid, waterFluid; - - /** - *

- * Constructor for SeparatorResponse. - *

- */ - public SeparatorResponse() {} + public StreamResponse feed, gas, liquid, oil, water; /** *

@@ -34,16 +26,17 @@ public SeparatorResponse() {} */ public SeparatorResponse(ThreePhaseSeparator inputSeparator) { name = inputSeparator.getName(); - massflow = inputSeparator.getFluid().getFlowRate("kg/hr"); gasLoadFactor = inputSeparator.getGasLoadFactor(); + + feed = new StreamResponse(inputSeparator.getFeedStream()); if (inputSeparator.getThermoSystem().hasPhaseType("aqueous")) { - waterFluid = new Fluid(inputSeparator.getWaterOutStream().getFluid()); + water = new StreamResponse(inputSeparator.getWaterOutStream()); } if (inputSeparator.getThermoSystem().hasPhaseType("oil")) { - oilFluid = new Fluid(inputSeparator.getOilOutStream().getFluid()); + oil = new StreamResponse(inputSeparator.getOilOutStream()); } if (inputSeparator.getThermoSystem().hasPhaseType("gas")) { - gasFluid = new Fluid(inputSeparator.getGasOutStream().getFluid()); + gas = new StreamResponse(inputSeparator.getGasOutStream()); } } @@ -57,20 +50,15 @@ public SeparatorResponse(ThreePhaseSeparator inputSeparator) { */ public SeparatorResponse(Separator inputSeparator) { name = inputSeparator.getName(); - massflow = inputSeparator.getFluid().getFlowRate("kg/hr"); gasLoadFactor = inputSeparator.getGasLoadFactor(); - if (inputSeparator.getThermoSystem().hasPhaseType("aqueous")) { - waterFluid = new Fluid(inputSeparator.getThermoSystem().phaseToSystem("aqueous")); - } - if (inputSeparator.getThermoSystem().hasPhaseType("oil")) { - oilFluid = new Fluid(inputSeparator.getThermoSystem().phaseToSystem("oil")); + feed = new StreamResponse(inputSeparator.getFeedStream()); + if (inputSeparator.getThermoSystem().hasPhaseType("aqueous") + || inputSeparator.getThermoSystem().hasPhaseType("liquid") + || inputSeparator.getThermoSystem().hasPhaseType("oil")) { + liquid = new StreamResponse(inputSeparator.getLiquidOutStream()); } if (inputSeparator.getThermoSystem().hasPhaseType("gas")) { - gasFluid = new Fluid(inputSeparator.getGasOutStream().getFluid()); - } - if (inputSeparator.getThermoSystem().hasPhaseType("oil") - || inputSeparator.getThermoSystem().hasPhaseType("aqueous")) { - liquidFluid = new Fluid(inputSeparator.getLiquidOutStream().getFluid()); + gas = new StreamResponse(inputSeparator.getGasOutStream()); } } } diff --git a/src/main/java/neqsim/processSimulation/util/monitor/StreamResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/StreamResponse.java index 113f470538..f328f9a1b2 100644 --- a/src/main/java/neqsim/processSimulation/util/monitor/StreamResponse.java +++ b/src/main/java/neqsim/processSimulation/util/monitor/StreamResponse.java @@ -1,67 +1,251 @@ package neqsim.processSimulation.util.monitor; +import java.util.HashMap; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.standards.gasQuality.Standard_ISO6976; /** - *

StreamResponse class.

+ *

+ * StreamResponse class. + *

* * @author asmund * @version $Id: $Id */ public class StreamResponse { - public String name; - public Fluid fluid; - public Double temperature; - public Double pressure; - public Double volumeFlow; - public Double molarMass; - public Double massDensity; - public Double massflow; - public Double massflowGas; - public Double massflowOil; - public Double massflowAqueous; - - /** - *

Constructor for StreamResponse.

- */ - public StreamResponse() { + static Logger logger = LogManager.getLogger(StreamResponse.class); + public String name; + public HashMap> properties = + new HashMap>(); + public HashMap> conditions = + new HashMap>(); + public HashMap> composition = + new HashMap>(); + + /** + *

+ * Constructor for StreamResponse. + *

+ * + * @param inputStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} + * object + */ + public StreamResponse(StreamInterface inputStream) { + name = inputStream.getName(); + + HashMap newdata = new HashMap(); + newdata.put("temperature", + new Value( + Double.toString( + inputStream.getTemperature(neqsim.util.unit.Units.getSymbol("temperature"))), + neqsim.util.unit.Units.getSymbol("temperature"))); + newdata.put("pressure", + new Value( + Double.toString(inputStream.getPressure(neqsim.util.unit.Units.getSymbol("pressure"))), + neqsim.util.unit.Units.getSymbol("pressure"))); + newdata.put("molar flow", + new Value( + Double + .toString(inputStream.getFlowRate(neqsim.util.unit.Units.getSymbol("molar flow"))), + neqsim.util.unit.Units.getSymbol("molar flow"))); + newdata.put("mass flow", + new Value( + Double.toString(inputStream.getFlowRate(neqsim.util.unit.Units.getSymbol("mass flow"))), + neqsim.util.unit.Units.getSymbol("mass flow"))); + newdata.put("fluid model", new Value(inputStream.getFluid().getModelName(), "")); + newdata.put("enthalpy", + new Value( + Double.toString( + inputStream.getFluid().getEnthalpy(neqsim.util.unit.Units.getSymbol("enthalpy"))), + neqsim.util.unit.Units.getSymbol("enthalpy"))); + conditions.put("overall", newdata); + + for (int i = 0; i < inputStream.getFluid().getNumberOfPhases(); i++) { + String name = inputStream.getFluid().getPhase(i).getPhaseTypeName(); + newdata = new HashMap(); + newdata.put("temperature", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getTemperature(neqsim.util.unit.Units.getSymbol("temperature"))), + neqsim.util.unit.Units.getSymbol("temperature"))); + newdata.put("pressure", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getPressure(neqsim.util.unit.Units.getSymbol("pressure"))), + neqsim.util.unit.Units.getSymbol("pressure"))); + newdata.put("molar flow", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getFlowRate(neqsim.util.unit.Units.getSymbol("molar flow"))), + neqsim.util.unit.Units.getSymbol("molar flow"))); + newdata.put("mass flow", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getFlowRate(neqsim.util.unit.Units.getSymbol("mass flow"))), + neqsim.util.unit.Units.getSymbol("mass flow"))); + newdata.put("fluid model", new Value(inputStream.getFluid().getModelName(), "")); + newdata.put("enthalpy", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getEnthalpy(neqsim.util.unit.Units.getSymbol("enthalpy"))), + neqsim.util.unit.Units.getSymbol("enthalpy"))); + conditions.put(name, newdata); } - /** - *

Constructor for StreamResponse.

- * - * @param inputStream a {@link neqsim.processSimulation.processEquipment.stream.StreamInterface} object - */ - public StreamResponse(StreamInterface inputStream){ - name = inputStream.getName(); - fluid = new Fluid(inputStream.getFluid()); - temperature = inputStream.getTemperature("C"); - pressure = inputStream.getPressure("bara"); - molarMass = inputStream.getFluid().getMolarMass(); - massDensity = inputStream.getFluid().getDensity("kg/m3"); - massflow = inputStream.getFluid().getFlowRate("kg/hr"); - volumeFlow = inputStream.getFluid().getFlowRate("m3/hr"); - - if (inputStream.getFluid().hasPhaseType("gas")) { - massflowGas = inputStream.getFluid().getPhase("gas").getFlowRate("kg/hr"); - } else { - massflowGas = 0.0; - } - if (inputStream.getFluid().hasPhaseType("aqueous")) { - massflowAqueous = inputStream.getFluid().getPhase("aqueous").getFlowRate("kg/hr"); - } else { - massflowAqueous = 0.0; + name = inputStream.getName(); + newdata = new HashMap(); + for (int i = 0; i < inputStream.getFluid().getNumberOfComponents(); i++) { + newdata.put(inputStream.getFluid().getComponent(i).getComponentName(), new Value( + Double.toString(inputStream.getFluid().getComponent(i).getz()), "mole fraction")); + } + composition.put("overall", newdata); + for (int j = 0; j < inputStream.getFluid().getNumberOfPhases(); j++) { + newdata = new HashMap(); + HashMap newdata2 = new HashMap(); + for (int i = 0; i < inputStream.getFluid().getNumberOfComponents(); i++) { + newdata2.put(inputStream.getFluid().getPhase(j).getComponent(i).getComponentName(), + new Value(Double.toString(inputStream.getFluid().getPhase(j).getComponent(i).getx()), + "mole fraction")); + newdata.put(inputStream.getFluid().getPhase(j).getComponent(i).getComponentName(), + new Value(Double.toString(inputStream.getFluid().getPhase(j).getWtFrac(i)), + "weight fraction")); + } + composition.put(inputStream.getFluid().getPhase(j).getPhaseTypeName(), newdata2); + composition.put(inputStream.getFluid().getPhase(j).getPhaseTypeName() + "_wt", newdata); + } + + newdata = new HashMap(); + + newdata.put("density", + new Value( + Double.toString( + inputStream.getFluid().getDensity(neqsim.util.unit.Units.getSymbol("density"))), + neqsim.util.unit.Units.getSymbol("density"))); + + newdata.put("molar mass", new Value( + Double.toString( + inputStream.getFluid().getMolarMass(neqsim.util.unit.Units.getSymbol("Molar Mass"))), + neqsim.util.unit.Units.getSymbol("Molar Mass"))); + + newdata.put("flow rate", new Value( + Double.toString( + inputStream.getFluid().getFlowRate(neqsim.util.unit.Units.getSymbol("volume flow"))), + neqsim.util.unit.Units.getSymbol("volume flow"))); + + newdata.put("heat capacity (Cp)", new Value( + Double.toString( + inputStream.getFluid().getCp(neqsim.util.unit.Units.getSymbol("Heat Capacity (Cp)"))), + neqsim.util.unit.Units.getSymbol("Heat Capacity (Cp)"))); + + newdata.put("heat capacity (Cv)", new Value( + Double.toString( + inputStream.getFluid().getCv(neqsim.util.unit.Units.getSymbol("Heat Capacity (Cv)"))), + neqsim.util.unit.Units.getSymbol("Heat Capacity (Cv)"))); + + newdata.put("enthalpy", + new Value( + Double.toString( + inputStream.getFluid().getEnthalpy(neqsim.util.unit.Units.getSymbol("enthalpy"))), + neqsim.util.unit.Units.getSymbol("enthalpy"))); + + newdata.put("entropy", + new Value( + Double.toString( + inputStream.getFluid().getEntropy(neqsim.util.unit.Units.getSymbol("entropy"))), + neqsim.util.unit.Units.getSymbol("entropy"))); + + properties.put("overall", newdata); + for (int i = 0; i < inputStream.getFluid().getNumberOfPhases(); i++) { + newdata = new HashMap(); + String name = inputStream.getFluid().getPhase(i).getPhaseTypeName(); + newdata.put("density", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getDensity(neqsim.util.unit.Units.getSymbol("density"))), + neqsim.util.unit.Units.getSymbol("density"))); + newdata.put("molar mass", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getMolarMass(neqsim.util.unit.Units.getSymbol("Molar Mass"))), + neqsim.util.unit.Units.getSymbol("Molar Mass"))); + + newdata.put("flow rate", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getFlowRate(neqsim.util.unit.Units.getSymbol("volume flow"))), + neqsim.util.unit.Units.getSymbol("volume flow"))); + + newdata.put("heat capacity (Cp)", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getCp(neqsim.util.unit.Units.getSymbol("Heat Capacity (Cp)"))), + neqsim.util.unit.Units.getSymbol("Heat Capacity (Cp)"))); + + newdata.put("heat capacity (Cv)", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getCv(neqsim.util.unit.Units.getSymbol("Heat Capacity (Cv)"))), + neqsim.util.unit.Units.getSymbol("Heat Capacity (Cv)"))); + + newdata.put("enthalpy", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getEnthalpy(neqsim.util.unit.Units.getSymbol("enthalpy"))), + neqsim.util.unit.Units.getSymbol("enthalpy"))); + + newdata.put("entropy", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getEntropy(neqsim.util.unit.Units.getSymbol("entropy"))), + neqsim.util.unit.Units.getSymbol("entropy"))); + + if (name.equals("oil")) { + try { + newdata.put("TVP", + new Value( + Double.toString( + inputStream.getTVP(37.8, "C", neqsim.util.unit.Units.getSymbol("pressure"))), + neqsim.util.unit.Units.getSymbol("pressure"))); + } catch (Exception e) { + logger.error(e.getMessage()); } - if (inputStream.getFluid().hasPhaseType("oil")) { - massflowOil = inputStream.getFluid().getPhase("oil").getFlowRate("kg/hr"); - } else { - massflowOil = 0.0; + try { + newdata.put("RVP", + new Value( + Double.toString( + inputStream.getRVP(37.8, "C", neqsim.util.unit.Units.getSymbol("pressure"))), + neqsim.util.unit.Units.getSymbol("pressure"))); + newdata.put("relative density", new Value( + Double.toString(inputStream.getFluid().getPhase(name).getDensity("kg/m3") / 1000.0), + "-")); + } catch (Exception e) { + logger.error(e.getMessage()); } + } else if (name.equals("gas")) { + Standard_ISO6976 standard = inputStream.getISO6976("volume", 15.0, 15.0); + standard.calculate(); + newdata.put("GCV", new Value( + Double.toString(standard.getValue("SuperiorCalorificValue") / 1e3), "MJ/Sm3 @15C,15C")); + newdata.put("WI", new Value(Double.toString(standard.getValue("SuperiorWobbeIndex") / 1e3), + "MJ/Sm3 @15C,15C")); + newdata.put("standard flow rate", + new Value( + Double.toString(inputStream.getFluid().getPhase(name) + .getFlowRate(neqsim.util.unit.Units.getSymbol("standard volume flow"))), + neqsim.util.unit.Units.getSymbol("standard volume flow"))); + newdata.put("relative density", + new Value(Double.toString(standard.getValue("RelativeDensity")), "[-]")); + } + properties.put(name, newdata); } + } - /** - *

print.

- */ - public void print(){ - } + /** + *

+ * print. + *

+ */ + public void print() {} } diff --git a/src/main/java/neqsim/processSimulation/util/monitor/ThreePhaseSeparatorResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/ThreePhaseSeparatorResponse.java index abf3b83352..b06ca576ca 100644 --- a/src/main/java/neqsim/processSimulation/util/monitor/ThreePhaseSeparatorResponse.java +++ b/src/main/java/neqsim/processSimulation/util/monitor/ThreePhaseSeparatorResponse.java @@ -12,47 +12,38 @@ * @version $Id: $Id */ public class ThreePhaseSeparatorResponse { - public String name; - public Double gasLoadFactor; - public Double massflow; - public Fluid gasFluid, oilFluid; + public String name; + public Double gasLoadFactor; + public Double massflow; + public FluidResponse gasFluid, oilFluid; - /** - *

- * Constructor for ThreePhaseSeparatorResponse. - *

- */ - public ThreePhaseSeparatorResponse() {} + /** + *

+ * Constructor for ThreePhaseSeparatorResponse. + *

+ * + * @param inputSeparator a {@link neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator} object + */ + public ThreePhaseSeparatorResponse(ThreePhaseSeparator inputSeparator) { + name = inputSeparator.getName(); + massflow = inputSeparator.getFluid().getFlowRate("kg/hr"); + gasLoadFactor = inputSeparator.getGasLoadFactor(); + oilFluid = new FluidResponse(inputSeparator.getOilOutStream().getFluid()); + gasFluid = new FluidResponse(inputSeparator.getGasOutStream().getFluid()); + } - /** - *

- * Constructor for ThreePhaseSeparatorResponse. - *

- * - * @param inputSeparator a - * {@link neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator} object - */ - public ThreePhaseSeparatorResponse(ThreePhaseSeparator inputSeparator) { - name = inputSeparator.getName(); - massflow = inputSeparator.getFluid().getFlowRate("kg/hr"); - gasLoadFactor = inputSeparator.getGasLoadFactor(); - oilFluid = new Fluid(inputSeparator.getOilOutStream().getFluid()); - gasFluid = new Fluid(inputSeparator.getGasOutStream().getFluid()); - } - - /** - *

- * Constructor for ThreePhaseSeparatorResponse. - *

- * - * @param inputSeparator a {@link neqsim.processSimulation.processEquipment.separator.Separator} - * object - */ - public ThreePhaseSeparatorResponse(Separator inputSeparator) { - name = inputSeparator.getName(); - massflow = inputSeparator.getFluid().getFlowRate("kg/hr"); - gasLoadFactor = inputSeparator.getGasLoadFactor(); - oilFluid = new Fluid(inputSeparator.getLiquidOutStream().getFluid()); - gasFluid = new Fluid(inputSeparator.getGasOutStream().getFluid()); - } + /** + *

+ * Constructor for ThreePhaseSeparatorResponse. + *

+ * + * @param inputSeparator a {@link neqsim.processSimulation.processEquipment.separator.Separator} object + */ + public ThreePhaseSeparatorResponse(Separator inputSeparator) { + name = inputSeparator.getName(); + massflow = inputSeparator.getFluid().getFlowRate("kg/hr"); + gasLoadFactor = inputSeparator.getGasLoadFactor(); + oilFluid = new FluidResponse(inputSeparator.getLiquidOutStream().getFluid()); + gasFluid = new FluidResponse(inputSeparator.getGasOutStream().getFluid()); + } } diff --git a/src/main/java/neqsim/processSimulation/util/monitor/Value.java b/src/main/java/neqsim/processSimulation/util/monitor/Value.java new file mode 100644 index 0000000000..46cc0a6d7f --- /dev/null +++ b/src/main/java/neqsim/processSimulation/util/monitor/Value.java @@ -0,0 +1,24 @@ +package neqsim.processSimulation.util.monitor; + +/** + * Unit class nested within Units. + * + * @author Even Solbraa + */ +public class Value { + public String value; + public String unit; + + /** + *

+ * Constructor for Value. + *

+ * + * @param value a {@link java.lang.String} object + * @param unit a {@link java.lang.String} object + */ + public Value(String value, String unit) { + this.value = value; + this.unit = unit; + } +} diff --git a/src/main/java/neqsim/processSimulation/util/monitor/ValveResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/ValveResponse.java new file mode 100644 index 0000000000..9d20f49589 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/util/monitor/ValveResponse.java @@ -0,0 +1,44 @@ +package neqsim.processSimulation.util.monitor; + +import java.util.ArrayList; +import neqsim.processSimulation.processEquipment.valve.ValveInterface; + +/** + *

+ * StreamResponse class. + *

+ * + * @author asmund + * @version $Id: $Id + */ +public class ValveResponse { + public String name; + public ArrayList data = new ArrayList(); + + /** + *

+ * Constructor for StreamResponse. + *

+ * + * @param valve a {@link neqsim.processSimulation.processEquipment.valve.ValveInterface} object + */ + public ValveResponse(ValveInterface valve) { + name = valve.getName(); + + data.add(new String[] {"outlet temperature", + Double.toString(valve.getOutletStream() + .getTemperature(neqsim.util.unit.Units.getSymbol("temperature"))), + neqsim.util.unit.Units.getSymbol("temperature")}); + data.add(new String[] {"outlet pressure", + Double.toString( + valve.getOutletStream().getPressure(neqsim.util.unit.Units.getSymbol("pressure"))), + neqsim.util.unit.Units.getSymbol("pressure")}); + } + + /** + *

+ * print. + *

+ */ + public void print() {} +} diff --git a/src/main/java/neqsim/processSimulation/util/monitor/WellAllocatorResponse.java b/src/main/java/neqsim/processSimulation/util/monitor/WellAllocatorResponse.java index 38ee830b4d..e3abbcf165 100644 --- a/src/main/java/neqsim/processSimulation/util/monitor/WellAllocatorResponse.java +++ b/src/main/java/neqsim/processSimulation/util/monitor/WellAllocatorResponse.java @@ -11,27 +11,20 @@ * @version $Id: $Id */ public class WellAllocatorResponse { - public String name; - public Double gasExportRate, oilExportRate, totalExportRate; + public String name; + public Double gasExportRate, oilExportRate, totalExportRate; - /** - *

- * Constructor for WellAllocatorResponse. - *

- */ - public WellAllocatorResponse() {} - - /** - *

- * Constructor for WellAllocatorResponse. - *

- * - * @param inputAllocator a {@link neqsim.processSimulation.measurementDevice.WellAllocator} object - */ - public WellAllocatorResponse(WellAllocator inputAllocator) { - name = inputAllocator.getName(); - gasExportRate = inputAllocator.getMeasuredValue("gas export rate"); - oilExportRate = inputAllocator.getMeasuredValue("oil export rate"); - totalExportRate = inputAllocator.getMeasuredValue("total export rate"); - } + /** + *

+ * Constructor for WellAllocatorResponse. + *

+ * + * @param inputAllocator a {@link neqsim.processSimulation.measurementDevice.WellAllocator} object + */ + public WellAllocatorResponse(WellAllocator inputAllocator) { + name = inputAllocator.getName(); + gasExportRate = inputAllocator.getMeasuredValue("gas export rate", "kg/hr"); + oilExportRate = inputAllocator.getMeasuredValue("oil export rate", "kg/hr"); + totalExportRate = inputAllocator.getMeasuredValue("total export rate", "kg/hr"); + } } diff --git a/src/main/java/neqsim/processSimulation/util/report/Report.java b/src/main/java/neqsim/processSimulation/util/report/Report.java new file mode 100644 index 0000000000..f2d11b7772 --- /dev/null +++ b/src/main/java/neqsim/processSimulation/util/report/Report.java @@ -0,0 +1,116 @@ +package neqsim.processSimulation.util.report; + +import java.util.HashMap; +import java.util.Map; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass; +import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; +import neqsim.processSimulation.processSystem.ProcessModule; +import neqsim.processSimulation.processSystem.ProcessModuleBaseClass; +import neqsim.processSimulation.processSystem.ProcessSystem; +import neqsim.thermo.system.SystemInterface; + +/** + *

+ * Report class. + *

+ * + * @author even + * @version $Id: $Id + */ +public class Report { + static Logger logger = LogManager.getLogger(Report.class); + ProcessSystem process = null; + ProcessEquipmentBaseClass processEquipment = null; + SystemInterface fluid = null; + + /** + *

Constructor for Report.

+ * + * @param process a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public Report(ProcessSystem process) { + this.process = process; + } + + /** + *

Constructor for Report.

+ * + * @param fluid a {@link neqsim.thermo.system.SystemInterface} object + */ + public Report(SystemInterface fluid) { + this.fluid = fluid; + } + + /** + *

Constructor for Report.

+ * + * @param processEquipmentBaseClass a {@link neqsim.processSimulation.processEquipment.ProcessEquipmentBaseClass} object + */ + public Report(ProcessEquipmentBaseClass processEquipmentBaseClass) { + processEquipment = processEquipmentBaseClass; + } + + /** + *

Constructor for Report.

+ * + * @param processModule a {@link neqsim.processSimulation.processSystem.ProcessModule} object + */ + public Report(ProcessModule processModule) { + // TODO Auto-generated constructor stub + } + + /** + *

Constructor for Report.

+ * + * @param processModuleBaseClass a {@link neqsim.processSimulation.processSystem.ProcessModuleBaseClass} object + */ + public Report(ProcessModuleBaseClass processModuleBaseClass) { + // TODO Auto-generated constructor stub + } + + /** + *

generateJsonReport.

+ * + * @return a {@link java.lang.String} object + */ + public String generateJsonReport() { + Map json_reports = new HashMap<>(); + + if (process != null) { + for (ProcessEquipmentInterface unit : process.getUnitOperations()) { + json_reports.put(unit.getName(), unit.toJson()); + } + } + if (processEquipment != null) { + json_reports.put(processEquipment.getName(), processEquipment.toJson()); + } + if (fluid != null) { + json_reports.put(fluid.getFluidName(), fluid.toJson()); + } + + // Create a JsonObject to hold the parsed nested JSON objects + JsonObject finalJsonObject = new JsonObject(); + + // Iterate through the entries of the json_reports map + for (Map.Entry entry : json_reports.entrySet()) { + // Parse each value as a separate JSON object using the static parseString method + try { + JsonObject nestedJsonObject = JsonParser.parseString(entry.getValue()).getAsJsonObject(); + // Update the final JsonObject with the parsed JSON object + finalJsonObject.add(entry.getKey(), nestedJsonObject); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + + // Convert the final JsonObject to a JSON string with pretty printing + Gson prettyGson = new GsonBuilder().setPrettyPrinting().create(); + return prettyGson.toJson(finalJsonObject); + } +} diff --git a/src/main/java/neqsim/standards/Standard.java b/src/main/java/neqsim/standards/Standard.java index f12a47199e..5f9daff797 100644 --- a/src/main/java/neqsim/standards/Standard.java +++ b/src/main/java/neqsim/standards/Standard.java @@ -3,6 +3,7 @@ * * Created on 13. juni 2004, 23:56 */ + package neqsim.standards; import java.awt.BorderLayout; @@ -35,11 +36,12 @@ public abstract class Standard extends NamedBaseClass implements StandardInterfa protected SystemInterface thermoSystem; protected ThermodynamicOperations thermoOps; private String referenceState = "real"; // "ideal"real + private double referencePressure = 70.0; /** * Constructor for Standard. - * - * @param name name of standard + * + * @param name name of standard * @param description description */ public Standard(String name, String description) { @@ -49,9 +51,9 @@ public Standard(String name, String description) { /** * Constructor for Standard. - * - * @param name name of standard - * @param thermoSyst input fluid + * + * @param name name of standard + * @param thermoSyst input fluid * @param description description of standard */ public Standard(String name, String description, SystemInterface thermoSyst) { @@ -109,16 +111,21 @@ public void setStandardDescription(String standardDescription) { /** {@inheritDoc} */ @Override public String[][] createTable(String name) { + if (thermoSystem == null) { + String[][] table = new String[0][6]; + return table; + } thermoSystem.setNumberOfPhases(1); - thermoSystem.createTable(name); DecimalFormat nf = new DecimalFormat(); nf.setMaximumFractionDigits(5); nf.applyPattern("#.#####E0"); - String[][] table = new String[thermoSystem.getPhases()[0].getNumberOfComponents() + 30][6]; + + int rows = thermoSystem.getPhases()[0].getNumberOfComponents() + 30; + String[][] table = new String[rows][6]; // String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; - table[0][0] = "";// getPhases()[0].getPhaseTypeName();//""; + table[0][0] = ""; // getPhases()[0].getType(); //""; for (int i = 0; i < thermoSystem.getPhases()[0].getNumberOfComponents() + 30; i++) { for (int j = 0; j < 6; j++) { @@ -126,7 +133,7 @@ public String[][] createTable(String name) { } } for (int i = 0; i < thermoSystem.getNumberOfPhases(); i++) { - table[0][i + 1] = thermoSystem.getPhase(i).getPhaseTypeName(); + table[0][i + 1] = thermoSystem.getPhase(i).getType().toString(); } StringBuffer buf = new StringBuffer(); @@ -154,7 +161,7 @@ public void display(String name) { Container dialogContentPane = dialog.getContentPane(); dialogContentPane.setLayout(new BorderLayout()); - String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; + String[] names = { "", "Phase 1", "Phase 2", "Phase 3", "Unit" }; String[][] table = createTable(name); JTable Jtab = new JTable(table, names); JScrollPane scrollpane = new JScrollPane(Jtab); @@ -196,4 +203,16 @@ public String getReferenceState() { public void setReferenceState(String referenceState) { this.referenceState = referenceState; } + + /** {@inheritDoc} */ + @Override + public double getReferencePressure() { + return referencePressure; + } + + /** {@inheritDoc} */ + @Override + public void setReferencePressure(double referencePressure) { + this.referencePressure = referencePressure; + } } diff --git a/src/main/java/neqsim/standards/StandardInterface.java b/src/main/java/neqsim/standards/StandardInterface.java index 8015e443ca..e86d3b2d00 100644 --- a/src/main/java/neqsim/standards/StandardInterface.java +++ b/src/main/java/neqsim/standards/StandardInterface.java @@ -3,6 +3,7 @@ * * Created on 13. juni 2004, 23:29 */ + package neqsim.standards; import neqsim.standards.salesContract.ContractInterface; @@ -17,150 +18,168 @@ * @version $Id: $Id */ public interface StandardInterface { - /** - *

- * getValue. - *

- * - * @param returnParameter a {@link java.lang.String} object - * @param returnUnit a {@link java.lang.String} object - * @return a double - */ - double getValue(java.lang.String returnParameter, java.lang.String returnUnit); - - /** - *

- * getValue. - *

- * - * @param returnParameter a {@link java.lang.String} object - * @return a double - */ - double getValue(java.lang.String returnParameter); - - /** - *

- * getUnit. - *

- * - * @param returnParameter a {@link java.lang.String} object - * @return a {@link java.lang.String} object - */ - public String getUnit(String returnParameter); - - /** - *

- * calculate. - *

- */ - public void calculate(); - - /** - *

- * isOnSpec. - *

- * - * @return a boolean - */ - public boolean isOnSpec(); - - /** - *

- * getSalesContract. - *

- * - * @return a {@link neqsim.standards.salesContract.ContractInterface} object - */ - public ContractInterface getSalesContract(); - - /** - *

- * setSalesContract. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setSalesContract(String name); - - /** - *

- * getName. - *

- * - * @return a {@link java.lang.String} object - */ - public String getName(); - - /** - *

- * setSalesContract. - *

- * - * @param salesContract a {@link neqsim.standards.salesContract.ContractInterface} object - */ - public void setSalesContract(ContractInterface salesContract); - - /** - *

- * getStandardDescription. - *

- * - * @return a {@link java.lang.String} object - */ - public String getStandardDescription(); - - /** - *

- * createTable. - *

- * - * @param name a {@link java.lang.String} object - * @return an array of {@link java.lang.String} objects - */ - public String[][] createTable(String name); - - /** - *

- * display. - *

- * - * @param name a {@link java.lang.String} object - */ - public void display(String name); - - /** - *

- * getThermoSystem. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getThermoSystem(); - - /** - *

- * setThermoSystem. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setThermoSystem(SystemInterface thermoSystem); - - /** - *

- * getResultTable. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[][] getResultTable(); - - /** - *

- * setResultTable. - *

- * - * @param resultTable an array of {@link java.lang.String} objects - */ - public void setResultTable(String[][] resultTable); + /** + *

+ * getValue. + *

+ * + * @param returnParameter a {@link java.lang.String} object + * @param returnUnit a {@link java.lang.String} object + * @return a double + */ + double getValue(String returnParameter, String returnUnit); + + /** + *

+ * getValue. + *

+ * + * @param returnParameter a {@link java.lang.String} object + * @return a double + */ + double getValue(String returnParameter); + + /** + *

+ * getUnit. + *

+ * + * @param returnParameter a {@link java.lang.String} object + * @return a {@link java.lang.String} object + */ + public String getUnit(String returnParameter); + + /** + *

+ * calculate. + *

+ */ + public void calculate(); + + /** + *

+ * isOnSpec. + *

+ * + * @return a boolean + */ + public boolean isOnSpec(); + + /** + *

+ * getSalesContract. + *

+ * + * @return a {@link neqsim.standards.salesContract.ContractInterface} object + */ + public ContractInterface getSalesContract(); + + /** + *

+ * setSalesContract. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setSalesContract(String name); + + /** + *

+ * setSalesContract. + *

+ * + * @param salesContract a {@link neqsim.standards.salesContract.ContractInterface} object + */ + public void setSalesContract(ContractInterface salesContract); + + /** + *

+ * getName. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getName(); + + /** + *

+ * getStandardDescription. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getStandardDescription(); + + /** + *

+ * createTable. + *

+ * + * @param name a {@link java.lang.String} object + * @return an array of {@link java.lang.String} objects + */ + public String[][] createTable(String name); + + /** + *

+ * display. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void display(String name); + + /** + *

+ * getThermoSystem. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getThermoSystem(); + + /** + *

+ * setThermoSystem. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setThermoSystem(SystemInterface thermoSystem); + + /** + *

+ * getResultTable. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[][] getResultTable(); + + /** + *

+ * setResultTable. + *

+ * + * @param resultTable an array of {@link java.lang.String} objects + */ + public void setResultTable(String[][] resultTable); + + /** + *

+ * Getter for the field referencePressure. + *

+ * + * @return Reference pressure in bara + */ + public double getReferencePressure(); + + /** + *

+ * Setter for the field referencePressure. + *

+ * + * @param referencePressure Reference pressure to set in in bara + */ + public void setReferencePressure(double referencePressure); } diff --git a/src/main/java/neqsim/standards/gasQuality/BestPracticeHydrocarbonDewPoint.java b/src/main/java/neqsim/standards/gasQuality/BestPracticeHydrocarbonDewPoint.java index 642203a833..2ad4cb5bf7 100644 --- a/src/main/java/neqsim/standards/gasQuality/BestPracticeHydrocarbonDewPoint.java +++ b/src/main/java/neqsim/standards/gasQuality/BestPracticeHydrocarbonDewPoint.java @@ -1,5 +1,7 @@ package neqsim.standards.gasQuality; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -13,9 +15,13 @@ * @version $Id: $Id */ public class BestPracticeHydrocarbonDewPoint extends neqsim.standards.Standard { + static Logger logger = LogManager.getLogger(BestPracticeHydrocarbonDewPoint.class); + private static final long serialVersionUID = 1L; - String dewPointTemperatureUnit = "C", pressureUnit = "bar"; - double dewPointTemperature = 273.0, dewPointTemperatureSpec = -12.0; + String dewPointTemperatureUnit = "C"; + String pressureUnit = "bar"; + double dewPointTemperature = 273.0; + double dewPointTemperatureSpec = -12.0; double specPressure = 50.0; double initTemperature = 273.15 - 20.0; SystemInterface thermoSystem; @@ -54,15 +60,15 @@ public void calculate() { this.thermoSystem.setPressure(specPressure); try { this.thermoOps.dewPointTemperatureFlash(); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } dewPointTemperature = this.thermoSystem.getTemperature() - 273.15; } /** {@inheritDoc} */ @Override - public double getValue(String returnParameter, java.lang.String returnUnit) { + public double getValue(String returnParameter, String returnUnit) { if (returnParameter.equals("hydrocarbondewpointTemperature")) { return dewPointTemperature; } else { diff --git a/src/main/java/neqsim/standards/gasQuality/Draft_GERG2004.java b/src/main/java/neqsim/standards/gasQuality/Draft_GERG2004.java index 9c2d92b7f6..cefb88e063 100644 --- a/src/main/java/neqsim/standards/gasQuality/Draft_GERG2004.java +++ b/src/main/java/neqsim/standards/gasQuality/Draft_GERG2004.java @@ -2,6 +2,8 @@ import java.text.DecimalFormat; import java.text.FieldPosition; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.system.SystemGERG2004Eos; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -16,6 +18,8 @@ */ public class Draft_GERG2004 extends neqsim.standards.Standard { private static final long serialVersionUID = 1L; + static Logger logger = LogManager.getLogger(Draft_GERG2004.class); + double specPressure = 70.0; double initTemperature = 273.15; @@ -54,14 +58,14 @@ public void calculate() { try { this.thermoOps.TPflash(); thermoSystem.display(); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } /** {@inheritDoc} */ @Override - public double getValue(String returnParameter, java.lang.String returnUnit) { + public double getValue(String returnParameter, String returnUnit) { return 0.0; } @@ -107,9 +111,18 @@ public String[][] createTable(String name) { DecimalFormat nf = new DecimalFormat(); nf.setMaximumFractionDigits(5); nf.applyPattern("#.#####E0"); - String[][] table = new String[thermoSystem.getPhases()[0].getNumberOfComponents() + 30][6]; + + int rows = 0; + if (thermoSystem == null) { + String[][] table = new String[0][6]; + return table; + } + + rows = thermoSystem.getPhases()[0].getNumberOfComponents() + 30; + String[][] table = new String[rows][6]; + // String[] names = {"", "Phase 1", "Phase 2", "Phase 3", "Unit"}; - table[0][0] = "";// getPhases()[0].getPhaseTypeName();//""; + table[0][0] = ""; // getPhases()[0].getType(); //""; for (int i = 0; i < thermoSystem.getPhases()[0].getNumberOfComponents() + 30; i++) { for (int j = 0; j < 6; j++) { @@ -117,7 +130,7 @@ public String[][] createTable(String name) { } } for (int i = 0; i < thermoSystem.getNumberOfPhases(); i++) { - table[0][i + 1] = thermoSystem.getPhase(i).getPhaseTypeName(); + table[0][i + 1] = thermoSystem.getPhase(i).getType().toString(); } StringBuffer buf = new StringBuffer(); diff --git a/src/main/java/neqsim/standards/gasQuality/Draft_ISO18453.java b/src/main/java/neqsim/standards/gasQuality/Draft_ISO18453.java index 8c1164ef0e..1a839c7eb1 100644 --- a/src/main/java/neqsim/standards/gasQuality/Draft_ISO18453.java +++ b/src/main/java/neqsim/standards/gasQuality/Draft_ISO18453.java @@ -1,5 +1,7 @@ package neqsim.standards.gasQuality; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.system.SystemGERGwaterEos; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -14,9 +16,11 @@ */ public class Draft_ISO18453 extends neqsim.standards.Standard { private static final long serialVersionUID = 1L; - String dewPointTemperatureUnit = "C", pressureUnit = "bar"; - double dewPointTemperature = 273.0, dewPointTemperatureSpec = -12.0; - double specPressure = 70.0; + static Logger logger = LogManager.getLogger(Draft_ISO18453.class); + String dewPointTemperatureUnit = "C"; + String pressureUnit = "bar"; + double dewPointTemperature = 273.0; + double dewPointTemperatureSpec = -12.0; double initTemperature = 273.15; SystemInterface thermoSystem; ThermodynamicOperations thermoOps; @@ -35,7 +39,7 @@ public Draft_ISO18453(SystemInterface thermoSystem) { this.thermoSystem = thermoSystem; } else { // System.out.println("setting model GERG water..."); - this.thermoSystem = new SystemGERGwaterEos(initTemperature, specPressure); + this.thermoSystem = new SystemGERGwaterEos(initTemperature, getReferencePressure()); for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { this.thermoSystem.addComponent(thermoSystem.getPhase(0).getComponent(i).getName(), thermoSystem.getPhase(0).getComponent(i).getNumberOfmoles()); @@ -55,19 +59,19 @@ public Draft_ISO18453(SystemInterface thermoSystem) { @Override public void calculate() { this.thermoSystem.setTemperature(initTemperature); - this.thermoSystem.setPressure(specPressure); + this.thermoSystem.setPressure(getReferencePressure()); try { this.thermoOps.waterDewPointTemperatureFlash(); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } dewPointTemperature = this.thermoSystem.getTemperature() - 273.15; } /** {@inheritDoc} */ @Override - public double getValue(String returnParameter, java.lang.String returnUnit) { + public double getValue(String returnParameter, String returnUnit) { if (returnParameter.equals("dewPointTemperature")) { return dewPointTemperature; } else { diff --git a/src/main/java/neqsim/standards/gasQuality/GasChromotograpyhBase.java b/src/main/java/neqsim/standards/gasQuality/GasChromotograpyhBase.java index 7ec3a1624e..41dacfc0fb 100644 --- a/src/main/java/neqsim/standards/gasQuality/GasChromotograpyhBase.java +++ b/src/main/java/neqsim/standards/gasQuality/GasChromotograpyhBase.java @@ -12,7 +12,7 @@ */ public class GasChromotograpyhBase extends neqsim.standards.Standard { private static final long serialVersionUID = 1L; - String componentName = "", unit = "mol%"; + String unit = "mol%"; /** *

@@ -20,11 +20,9 @@ public class GasChromotograpyhBase extends neqsim.standards.Standard { *

* * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param component a {@link java.lang.String} object */ - public GasChromotograpyhBase(SystemInterface thermoSystem, String component) { - super("gas cromotography", "Gas composition", thermoSystem); - this.componentName = component; + public GasChromotograpyhBase(SystemInterface thermoSystem) { + super("gas chromotography", "Gas composition", thermoSystem); } /** {@inheritDoc} */ @@ -36,7 +34,7 @@ public void calculate() { /** {@inheritDoc} */ @Override - public double getValue(String returnParameter, java.lang.String returnUnit) { + public double getValue(String componentName, String returnUnit) { unit = returnUnit; if (returnUnit.equals("mol%")) { return 100 * thermoSystem.getPhase(0).getComponent(componentName).getz(); @@ -50,7 +48,7 @@ public double getValue(String returnParameter, java.lang.String returnUnit) { /** {@inheritDoc} */ @Override - public double getValue(String returnParameter) { + public double getValue(String componentName) { return thermoSystem.getPhase(0).getComponent(componentName).getz(); } diff --git a/src/main/java/neqsim/standards/gasQuality/Standard_ISO15403.java b/src/main/java/neqsim/standards/gasQuality/Standard_ISO15403.java new file mode 100644 index 0000000000..61c35f2981 --- /dev/null +++ b/src/main/java/neqsim/standards/gasQuality/Standard_ISO15403.java @@ -0,0 +1,81 @@ +package neqsim.standards.gasQuality; + +import neqsim.thermo.system.SystemInterface; + +/** + *

+ * Standard_ISO15403 class. + *

+ * + * @author ASMF + */ +public class Standard_ISO15403 extends neqsim.standards.Standard { + private static final long serialVersionUID = 1L; + + private double NM; + private double MON; + + /** + *

+ * Constructor for Standard_ISO15403. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public Standard_ISO15403(SystemInterface thermoSystem) { + super("Standard_ISO15403", + "Natural gas — Natural gas for use as a compressed fuel for vehicles", thermoSystem); + } + + private double getMolefraction(String name) { + if (thermoSystem.getPhase(0).hasComponent(name)) { + return thermoSystem.getComponent(name).getz(); + } else { + return 0.0; + } + } + + /** {@inheritDoc} */ + @Override + public void calculate() { + MON = 137.78 * getMolefraction("methane") + 29.948 * getMolefraction("ethane") + - 18.193 * getMolefraction("propane") + - 167.062 * (getMolefraction("n-butane") + getMolefraction("i-butane")) + + 181.233 * getMolefraction("CO2") + 26.944 * getMolefraction("nitrogen"); + + NM = 1.445 * MON - 103.42; + } + + /** {@inheritDoc} */ + @Override + public double getValue(String returnParameter) { + if (returnParameter.equals("MON")) { + return MON; + } else if (returnParameter.equals("NM")) { + return NM; + } else { + neqsim.util.exception.InvalidInputException ex = + new neqsim.util.exception.InvalidInputException(this, "getValue", "returnParameter", + "parameter not supported"); + throw new RuntimeException(ex); + } + } + + /** {@inheritDoc} */ + @Override + public double getValue(String returnParameter, String returnUnit) { + return getValue(returnParameter); + } + + /** {@inheritDoc} */ + @Override + public String getUnit(String returnParameter) { + return ""; + } + + /** {@inheritDoc} */ + @Override + public boolean isOnSpec() { + return true; + } +} diff --git a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6578.java b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6578.java index eaf4e634c7..c9876907e9 100644 --- a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6578.java +++ b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6578.java @@ -18,7 +18,8 @@ public class Standard_ISO6578 extends neqsim.standards.Standard { private static final long serialVersionUID = 1L; double LNGdensity = 0.0; String densityUnit = "kg/m^3"; - double KMcorrectionFactor1 = 0.0, KMcorrectionFactor2 = 0.0; + double KMcorrectionFactor1 = 0.0; + double KMcorrectionFactor2 = 0.0; double[] Vi = null; boolean use6578volumeCorrectionFactors = true; double[] temperatures = {105.0, 110.0, 115.0, 120.0, 125.0, 130.0, 135.0}; @@ -71,11 +72,12 @@ public class Standard_ISO6578 extends neqsim.standards.Standard { {1.31, 1.5, 1.72, 1.99, 2.33, 2.77, 3.31, 3.95, 4.74}, {1.38, 1.59, 1.83, 2.12, 2.48, 2.95, 3.51, 4.19, 5.03}, {1.47, 1.68, 1.93, 2.24, 2.63, 3.12, 3.72, 4.45, 5.34}}; - BicubicInterpolatingFunction pcs1 = null, pcs2 = null; + BicubicInterpolatingFunction pcs1 = null; + BicubicInterpolatingFunction pcs2 = null; LinearInterpolator liearInterpol = new LinearInterpolator(); - double[] Vitemperatures = ISO6578temperatures;// {-180.0, -175.0, -170.0, -165.0, -160.0, - // -155.0, -150.0, -145.0, - // -140.0}; + double[] Vitemperatures = ISO6578temperatures; // {-180.0, -175.0, -170.0, -165.0, -160.0, + // -155.0, -150.0, -145.0, + // -140.0}; double[] Vimethane = {0.035771, 0.036315, 0.036891, 0.037500, 0.038149, 0.038839, 0.039580, 0.040375, 0.041237}; double[] Viethane = @@ -198,8 +200,8 @@ public void calculate() { // thermoSystem.getTemperature(); try { Vi[i] = function.value(thermoSystem.getTemperature()); - } catch (Exception e) { - // e.printStackTrace(); + } catch (Exception ex) { + // logger.error(ex.getMessage(), ex); // System.out.println("volume "+ // (thermoSystem.getPhase(0).getMolarVolume())/10e4); Vi[i] = thermoSystem.getPhase(1).getMolarVolume() / 100.0; @@ -211,14 +213,15 @@ public void calculate() { Vmix += thermoSystem.getPhase(0).getComponent(i).getx() * Vi[i]; } - double xn2 = 0.0, xch4 = 0.0; + double xn2 = 0.0; + double xch4 = 0.0; try { KMcorrectionFactor1 = pcs1.value(thermoSystem.getPhase(0).getMolarMass() * 1000.0, thermoSystem.getTemperature()); KMcorrectionFactor2 = pcs2.value(thermoSystem.getPhase(0).getMolarMass() * 1000.0, thermoSystem.getTemperature()); - } catch (Exception e) { - /// e.printStackTrace(); + } catch (Exception ex) { + // logger.error(ex.getMessage(), ex); KMcorrectionFactor1 = 0.0; KMcorrectionFactor2 = 0.0; } @@ -241,7 +244,7 @@ public void calculate() { /** {@inheritDoc} */ @Override - public double getValue(String returnParameter, java.lang.String returnUnit) { + public double getValue(String returnParameter, String returnUnit) { return LNGdensity; } diff --git a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6974.java b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6974.java new file mode 100644 index 0000000000..e21273f52d --- /dev/null +++ b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6974.java @@ -0,0 +1,27 @@ +package neqsim.standards.gasQuality; + +import neqsim.thermo.system.SystemInterface; + +/** + *

+ * Standard_ISO6974 class. + *

+ * + * @author ESOL + * @version $Id: $Id + */ +public class Standard_ISO6974 extends GasChromotograpyhBase { + private static final long serialVersionUID = 1L; + + /** + *

+ * Constructor for Standard_ISO6974. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public Standard_ISO6974(SystemInterface thermoSystem) { + super(thermoSystem); + setName("ISO6974"); + } +} diff --git a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976.java b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976.java index 7d0e1ecc27..aa6f15de6d 100644 --- a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976.java +++ b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; /** @@ -16,604 +17,678 @@ * @version $Id: $Id */ public class Standard_ISO6976 extends neqsim.standards.Standard - implements neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - - // metering conditions - ArrayList componentsNotDefinedByStandard = new ArrayList(); - double volRefT = 0; - double volRefP = 1.01325; - double R = 8.314510; - double molRefm3 = 0.0; - // combustion conditions - double energyRefT = 25; - double energyRefP = 1.01325; - String referenceType = "volume"; // mass volume molar - String energyUnit = "KJ/Nm3"; - double energy = 1.0; - double Zmix0 = 1.0, Zmix15 = 1.0, Zmix20 = 1.0; - double Zair0 = 0.99941, Zair15 = 0.99958, Zair20 = 0.99963; - double averageCarbonNumber = 0.0; - int[] carbonNumber; - double[] M; - double[] Z0, Z15, Z20; - double[] bsqrt0, bsqrt15, bsqrt20; - double[] Hsup0, Hsup15, Hsup20, Hsup25, Hsup60F; - double[] Hinf0, Hinf15, Hinf20, Hinf25, Hinf60F; - double Mmix = 0.0; - double HsupIdeal0 = 0.0, HsupIdeal15 = 0.0, HsupIdeal20 = 0.0, HsupIdeal25 = 0.0, HsupIdeal60F = 0.0; - double HinfIdeal0 = 0.0, HinfIdeal15 = 0.0, HinfIdeal20 = 0.0, HinfIdeal25 = 0.0, HinfIdeal60F = 0.0; - double wobbeIdeal = 0.0, wobbeReal = 0.0; - double relDensIdeal = 0.0, relDensReal = 0.0; - double densIdeal = 0.0, densReal = 0.0; - static Logger logger = LogManager.getLogger(Standard_ISO6976.class); - - public Standard_ISO6976(SystemInterface thermoSystem) { - this("Standard_ISO6976", - "Calculation of calorific values, density, relative density and Wobbe index from composition", - thermoSystem); + implements neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Standard_ISO6976.class); + + // metering conditions + ArrayList componentsNotDefinedByStandard = new ArrayList(); + double volRefT = 0; + double volRefP = ThermodynamicConstantsInterface.referencePressure; + // ThermodynamicConstantsInterface.R + double R = 8.314510; + double molRefm3 = 0.0; + // combustion conditions + double energyRefT = 25; + double energyRefP = ThermodynamicConstantsInterface.referencePressure; + String referenceType = "volume"; // mass volume molar + String energyUnit = "KJ/Nm3"; + double energy = 1.0; + double Zmix0 = 1.0; + double Zmix15 = 1.0; + double Zmix20 = 1.0; + double Zair0 = 0.99941; + double Zair15 = 0.99958; + double Zair20 = 0.99963; + double averageCarbonNumber = 0.0; + int[] carbonNumber; + double[] M; + double[] Z0; + double[] Z15; + double[] Z20; + double[] bsqrt0; + double[] bsqrt15; + double[] bsqrt20; + double[] Hsup0; + double[] Hsup15; + double[] Hsup20; + double[] Hsup25; + double[] Hsup60F; + double[] Hinf0; + double[] Hinf15; + double[] Hinf20; + double[] Hinf25; + double[] Hinf60F; + double Mmix = 0.0; + double HsupIdeal0 = 0.0; + double HsupIdeal15 = 0.0; + double HsupIdeal20 = 0.0; + double HsupIdeal25 = 0.0; + double HsupIdeal60F = 0.0; + double HinfIdeal0 = 0.0; + double HinfIdeal15 = 0.0; + double HinfIdeal20 = 0.0; + double HinfIdeal25 = 0.0; + double HinfIdeal60F = 0.0; + double wobbeIdeal = 0.0; + double wobbeReal = 0.0; + double relDensIdeal = 0.0; + double relDensReal = 0.0; + double densIdeal = 0.0; + double densReal = 0.0; + + /** + * Constructor for Standard_ISO6976. + * + * @param thermoSystem SystemInterface to base object on + */ + public Standard_ISO6976(SystemInterface thermoSystem) { + this("Standard_ISO6976", + "Calculation of calorific values, density, relative density and Wobbe index from composition", + thermoSystem); + } + + /** + * Constructor for Standard_ISO6976. + * + * @param name Name of standard + * @param description Description of standard + * @param thermoSystem SystemInterface to base object on + */ + public Standard_ISO6976(String name, String description, SystemInterface thermoSystem) { + super(name, description, thermoSystem); + M = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + carbonNumber = new int[thermoSystem.getPhase(0).getNumberOfComponents()]; + + Z0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Z15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Z20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + + bsqrt0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + bsqrt15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + bsqrt20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + + Hsup0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hsup15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hsup20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hsup25 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hsup60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + + Hinf0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hinf15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hinf20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hinf25 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hinf60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + java.sql.ResultSet dataSet = null; + + for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { + try { + dataSet = database.getResultSet(("SELECT * FROM ISO6976constants WHERE ComponentName='" + + this.thermoSystem.getPhase(0).getComponent(i).getName() + "'")); + dataSet.next(); + dataSet.getString("ID"); + } catch (Exception ex) { + try { + String compName = "inert"; + String compType = this.thermoSystem.getPhase(0).getComponent(i).getComponentType(); + if (compType.equals("HC") || compType.equals("TBP") || compType.equals("plus")) { + compName = "n-heptane"; + } else if (compType.equals("alcohol") || compType.equals("glycol")) { + compName = "methanol"; + } + + dataSet.close(); + dataSet = database.getResultSet( + ("SELECT * FROM iso6976constants WHERE ComponentName='" + compName + "'")); + M[i] = this.thermoSystem.getPhase(0).getComponent(i).getMolarMass(); + dataSet.next(); + } catch (Exception ex2) { + logger.error(ex2.getMessage()); + } + componentsNotDefinedByStandard + .add("this.thermoSystem.getPhase(0).getComponent(i).getComponentName()"); + } + carbonNumber[i] = Integer.parseInt(dataSet.getString("numberOfCarbon")); + M[i] = Double.parseDouble(dataSet.getString("MolarMass")); + Z0[i] = Double.parseDouble(dataSet.getString("Z0")); + Z15[i] = Double.parseDouble(dataSet.getString("Z15")); + Z20[i] = Double.parseDouble(dataSet.getString("Z20")); + + bsqrt0[i] = Double.parseDouble(dataSet.getString("srtb0")); + bsqrt15[i] = Double.parseDouble(dataSet.getString("srtb15")); + bsqrt20[i] = Double.parseDouble(dataSet.getString("srtb20")); + + Hsup0[i] = Double.parseDouble(dataSet.getString("Hsupmolar0")); + Hsup15[i] = Double.parseDouble(dataSet.getString("Hsupmolar15")); + Hsup20[i] = Double.parseDouble(dataSet.getString("Hsupmolar20")); + Hsup25[i] = Double.parseDouble(dataSet.getString("Hsupmolar25")); + Hsup60F[i] = Double.parseDouble(dataSet.getString("Hsupmolar60F")); + + Hinf0[i] = Double.parseDouble(dataSet.getString("Hinfmolar0")); + Hinf15[i] = Double.parseDouble(dataSet.getString("Hinfmolar15")); + Hinf20[i] = Double.parseDouble(dataSet.getString("Hinfmolar20")); + Hinf25[i] = Double.parseDouble(dataSet.getString("Hinfmolar25")); + Hinf60F[i] = Double.parseDouble(dataSet.getString("Hinfmolar60F")); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + // logger.info("ok adding components in " + getName()); + } + + /** + *

+ * Constructor for Standard_ISO6976. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param volumetricReferenceTemperaturedegC a double (valid are 0, 15, 15.55 and 20) + * @param energyReferenceTemperaturedegC a double (valid are 0, 15, 15.55 and 20) + * @param calculationType a {@link java.lang.String} object + */ + public Standard_ISO6976(SystemInterface thermoSystem, double volumetricReferenceTemperaturedegC, + double energyReferenceTemperaturedegC, String calculationType) { + this(thermoSystem); + this.referenceType = calculationType; + volRefT = volumetricReferenceTemperaturedegC; + energyRefT = energyReferenceTemperaturedegC; + } + + /** {@inheritDoc} */ + @Override + public void calculate() { + Zmix0 = 1.0; + Zmix15 = 1.0; + Zmix20 = 1.0; + double Zmixtemp0 = 0.0; + double Zmixtemp15 = 0.0; + double Zmixtemp20 = 0.0; + Mmix = 0.0; + relDensIdeal = 0.0; + HsupIdeal0 = 0.0; + HsupIdeal15 = 0.0; + HsupIdeal20 = 0.0; + HsupIdeal25 = 0.0; + HsupIdeal60F = 0.0; + HinfIdeal0 = 0.0; + HinfIdeal15 = 0.0; + HinfIdeal20 = 0.0; + HinfIdeal25 = 0.0; + HinfIdeal60F = 0.0; + + for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { + Mmix += thermoSystem.getPhase(0).getComponent(i).getz() * M[i]; + + Zmixtemp0 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt0[i]; + Zmixtemp15 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt15[i]; + Zmixtemp20 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt20[i]; + + HsupIdeal0 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup0[i]; + HsupIdeal15 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup15[i]; + HsupIdeal20 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup20[i]; + HsupIdeal25 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup25[i]; + HsupIdeal60F += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup60F[i]; + + HinfIdeal0 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf0[i]; + HinfIdeal15 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf15[i]; + HinfIdeal20 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf20[i]; + HinfIdeal25 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf25[i]; + HinfIdeal60F += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf60F[i]; + + relDensIdeal += thermoSystem.getPhase(0).getComponent(i).getz() * M[i] / molarMassAir; + } + Zmix0 -= Math.pow(Zmixtemp0, 2.0); + Zmix15 -= Math.pow(Zmixtemp15, 2.0); + Zmix20 -= Math.pow(Zmixtemp20, 2.0); + molRefm3 = + volRefP * 1.0e5 * 1.0 / (R * (getVolRefT() + 273.15) * getValue("CompressionFactor")); + // System.out.println("molRefm3 " + molRefm3); + } + + /** {@inheritDoc} */ + @Override + public double getValue(String returnParameter, String returnUnit) { + checkReferenceCondition(); + + if (returnParameter.equals("GCV")) { + returnParameter = "SuperiorCalorificValue"; + } + if (returnParameter.equals("LCV")) { + returnParameter = "InferiorCalorificValue"; + } + + double returnValue = 0.0; + + if (getVolRefT() == 0) { + returnValue = Zmix0; + } else if (getVolRefT() == 15) { + returnValue = Zmix15; + } else if (getVolRefT() == 15.55) { + returnValue = Zmix15; + } else if (getVolRefT() == 20) { + returnValue = Zmix20; + } else { + returnValue = Zmix15; + } + + if (returnParameter.equals("CompressionFactor")) { + return returnValue; + } + if (returnParameter.equals("MolarMass")) { + return Mmix; + } + + double realCorrection = 1.0; + if (getReferenceState().equals("ideal")) { + realCorrection = 1.0; + } else { + realCorrection = returnValue; + } + + if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 0) { + returnValue = HsupIdeal0; + } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 15) { + returnValue = HsupIdeal15; + } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 20) { + returnValue = HsupIdeal20; + } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 25) { + returnValue = HsupIdeal25; + } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 15.55) { + returnValue = HsupIdeal60F; + } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 0) { + returnValue = HinfIdeal0; + } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 15) { + returnValue = HinfIdeal15; + } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 20) { + returnValue = HinfIdeal20; + } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 25) { + returnValue = HinfIdeal25; + } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 15.55) { + returnValue = HinfIdeal60F; + } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 0) { + returnValue = HsupIdeal0; + } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 15) { + returnValue = HsupIdeal15; + } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 20) { + returnValue = HsupIdeal20; + } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 25) { + returnValue = HsupIdeal25; + } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 15.55) { + returnValue = HsupIdeal60F; + } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 0) { + returnValue = HinfIdeal0; + } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 15) { + returnValue = HinfIdeal15; + } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 20) { + returnValue = HinfIdeal20; + } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 15.55) { + returnValue = HinfIdeal60F; + } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 25) { + returnValue = HinfIdeal25; + } + if (returnUnit.equals("kWh")) { + returnValue /= 3600.0; } - public Standard_ISO6976(String name, String description, SystemInterface thermoSystem) { - super(name, - description, - thermoSystem); - M = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - carbonNumber = new int[thermoSystem.getPhase(0).getNumberOfComponents()]; - - Z0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Z15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Z20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - - bsqrt0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - bsqrt15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - bsqrt20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - - Hsup0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hsup15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hsup20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hsup25 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hsup60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - - Hinf0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hinf15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hinf20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hinf25 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hinf60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { - try { - dataSet = database.getResultSet(("SELECT * FROM iso6976constants WHERE ComponentName='" - + this.thermoSystem.getPhase(0).getComponent(i).getName() + "'")); - dataSet.next(); - dataSet.getString("ID"); - } catch (Exception e) { - try { - String compName = "inert"; - String compType = this.thermoSystem.getPhase(0).getComponent(i).getComponentType(); - if (compType.equals("HC") || compType.equals("TBP") || compType.equals("plus")) { - compName = "n-heptane"; - } else if (compType.equals("alcohol") || compType.equals("glycol")) { - compName = "methanol"; - } - - dataSet.close(); - dataSet = database.getResultSet( - ("SELECT * FROM iso6976constants WHERE ComponentName='" + compName + "'")); - M[i] = this.thermoSystem.getPhase(0).getComponent(i).getMolarMass(); - dataSet.next(); - } catch (Exception er) { - er.printStackTrace(); - } - componentsNotDefinedByStandard - .add("this.thermoSystem.getPhase(0).getComponent(i).getComponentName()"); - } - carbonNumber[i] = Integer.parseInt(dataSet.getString("numberOfCarbon")); - M[i] = Double.parseDouble(dataSet.getString("MolarMass")); - Z0[i] = Double.parseDouble(dataSet.getString("Z0")); - Z15[i] = Double.parseDouble(dataSet.getString("Z15")); - Z20[i] = Double.parseDouble(dataSet.getString("Z20")); - - bsqrt0[i] = Double.parseDouble(dataSet.getString("srtb0")); - bsqrt15[i] = Double.parseDouble(dataSet.getString("srtb15")); - bsqrt20[i] = Double.parseDouble(dataSet.getString("srtb20")); - - Hsup0[i] = Double.parseDouble(dataSet.getString("Hsupmolar0")); - Hsup15[i] = Double.parseDouble(dataSet.getString("Hsupmolar15")); - Hsup20[i] = Double.parseDouble(dataSet.getString("Hsupmolar20")); - Hsup25[i] = Double.parseDouble(dataSet.getString("Hsupmolar25")); - Hsup60F[i] = Double.parseDouble(dataSet.getString("Hsupmolar60F")); - - Hinf0[i] = Double.parseDouble(dataSet.getString("Hinfmolar0")); - Hinf15[i] = Double.parseDouble(dataSet.getString("Hinfmolar15")); - Hinf20[i] = Double.parseDouble(dataSet.getString("Hinfmolar20")); - Hinf25[i] = Double.parseDouble(dataSet.getString("Hinfmolar25")); - Hinf60F[i] = Double.parseDouble(dataSet.getString("Hinfmolar60F")); - } - } catch (Exception e) { - String err = e.toString(); - System.out.println(err); - } finally { - try { - dataSet.close(); - database.getConnection().close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - // logger.info("ok adding components in " + getName()); - } - - /** - *

- * Constructor for Standard_ISO6976. - *

- * - * @param thermoSystem a - * {@link neqsim.thermo.system.SystemInterface} - * object - * @param volumetricReferenceTemperaturedegC a double - * @param energyReferenceTemperaturedegC a double - * @param calculationType a {@link java.lang.String} object - */ - public Standard_ISO6976(SystemInterface thermoSystem, double volumetricReferenceTemperaturedegC, - double energyReferenceTemperaturedegC, String calculationType) { - this(thermoSystem); - this.referenceType = calculationType; - volRefT = volumetricReferenceTemperaturedegC; - energyRefT = energyReferenceTemperaturedegC; - } - - /** {@inheritDoc} */ - @Override - public void calculate() { - Zmix0 = 1.0; - Zmix15 = 1.0; - Zmix20 = 1.0; - double Zmixtemp0 = 0.0; - double Zmixtemp15 = 0.0; - double Zmixtemp20 = 0.0; - Mmix = 0.0; - relDensIdeal = 0.0; - HsupIdeal0 = 0.0; - HsupIdeal15 = 0.0; - HsupIdeal20 = 0.0; - HsupIdeal25 = 0.0; - HsupIdeal60F = 0.0; - HinfIdeal0 = 0.0; - HinfIdeal15 = 0.0; - HinfIdeal20 = 0.0; - HinfIdeal25 = 0.0; - HinfIdeal60F = 0.0; - - for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { - Mmix += thermoSystem.getPhase(0).getComponent(i).getz() * M[i]; - - Zmixtemp0 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt0[i]; - Zmixtemp15 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt15[i]; - Zmixtemp20 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt20[i]; - - HsupIdeal0 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup0[i]; - HsupIdeal15 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup15[i]; - HsupIdeal20 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup20[i]; - HsupIdeal25 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup25[i]; - HsupIdeal60F += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup60F[i]; - - HinfIdeal0 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf0[i]; - HinfIdeal15 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf15[i]; - HinfIdeal20 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf20[i]; - HinfIdeal25 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf25[i]; - HinfIdeal60F += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf60F[i]; - - relDensIdeal += thermoSystem.getPhase(0).getComponent(i).getz() * M[i] / molarMassAir; - } - Zmix0 -= Math.pow(Zmixtemp0, 2.0); - Zmix15 -= Math.pow(Zmixtemp15, 2.0); - Zmix20 -= Math.pow(Zmixtemp20, 2.0); - molRefm3 = volRefP * 1.0e5 * 1.0 / (R * (getVolRefT() + 273.15) * getValue("CompressionFactor")); - // System.out.println("molRefm3 " + molRefm3); - } - - /** {@inheritDoc} */ - @Override - public double getValue(String returnParameter, java.lang.String returnUnit) { - if (returnParameter.equals("GCV")) { - returnParameter = "SuperiorCalorificValue"; - } - if (returnParameter.equals("LCV")) { - returnParameter = "InferiorCalorificValue"; - } - - double returnValue = 0.0; - - if (getVolRefT() == 0) { - returnValue = Zmix0; - } else if (getVolRefT() == 15) { - returnValue = Zmix15; - } else if (getVolRefT() == 15.55) { - returnValue = Zmix15; - } else if (getVolRefT() == 20) { - returnValue = Zmix20; - } - - if (returnParameter.equals("CompressionFactor")) { - return returnValue; - } - if (returnParameter.equals("MolarMass")) { - return Mmix; - } - - double realCorrection = 1.0; - if (getReferenceState().equals("ideal")) { - realCorrection = 1.0; - } else { - realCorrection = returnValue; - } - - if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 0) { - returnValue = HsupIdeal0; - } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 15) { - returnValue = HsupIdeal15; - } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 20) { - returnValue = HsupIdeal20; - } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 25) { - returnValue = HsupIdeal25; - } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 15.55) { - returnValue = HsupIdeal60F; - } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 0) { - returnValue = HinfIdeal0; - } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 15) { - returnValue = HinfIdeal15; - } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 20) { - returnValue = HinfIdeal20; - } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 25) { - returnValue = HinfIdeal25; - } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 15.55) { - returnValue = HinfIdeal60F; - } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 0) { - returnValue = HsupIdeal0; - } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 15) { - returnValue = HsupIdeal15; - } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 20) { - returnValue = HsupIdeal20; - } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 25) { - returnValue = HsupIdeal25; - } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 15.55) { - returnValue = HsupIdeal60F; - } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 0) { - returnValue = HinfIdeal0; - } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 15) { - returnValue = HinfIdeal15; - } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 20) { - returnValue = HinfIdeal20; - } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 15.55) { - returnValue = HinfIdeal60F; - } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 25) { - returnValue = HinfIdeal25; - } - if (returnUnit.equals("kWh")) { - returnValue /= 3600.0; - } - - double relativeDens = 0.0; - // System.out.println("reference state " + getReferenceState()); - if (getReferenceState().equals("ideal")) { - relativeDens = relDensIdeal; - } else if (getVolRefT() == 0) { - relativeDens = relDensIdeal * Zair0 / Zmix0; - } else if (getVolRefT() == 15) { - relativeDens = relDensIdeal * Zair15 / Zmix15; - } else if (getVolRefT() == 15.55) { - relativeDens = relDensIdeal * Zair15 / Zmix15; - } else if (getVolRefT() == 20) { - relativeDens = relDensIdeal * Zair20 / Zmix20; - } - if (returnParameter.equals("RelativeDensity")) { - return relativeDens; - } - if (returnParameter.equals("InferiorWobbeIndex") || returnParameter.equals("SuperiorWobbeIndex")) { - returnValue /= Math.sqrt(relativeDens); - } - if (returnParameter.equals("DensityIdeal")) { - return volRefP * 1e5 / (R * (getVolRefT() + 273.15)) * Mmix / 1.0e3; - } - if (returnParameter.equals("DensityReal")) { - return volRefP * 1e5 / (R * (getVolRefT() + 273.15)) * Mmix / 1.0e3 / realCorrection; - } - - if (getReferenceType().equals("molar")) { - return returnValue; - } else if (getReferenceType().equals("mass")) { - return returnValue / (Mmix / 1000.0); - } else { - return returnValue * volRefP * 1.0e5 / (R * (getVolRefT() + 273.15)) / realCorrection; - } - } - - /** {@inheritDoc} */ - @Override - public double getValue(String returnParameter) { - return getValue(returnParameter, ""); - } - - /** {@inheritDoc} */ - @Override - public String getUnit(String returnParameter) { - if (returnParameter.equals("CompressionFactor")) { - return "-"; - } else { - return energyUnit; - } - } - - /** {@inheritDoc} */ - @Override - public boolean isOnSpec() { - return true; - } - - /** {@inheritDoc} */ - @Override - public String[][] createTable(String name) { - thermoSystem.setNumberOfPhases(1); - - thermoSystem.createTable(name); - - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.#####E0"); - String[][] table = new String[thermoSystem.getPhases()[0].getNumberOfComponents() + 30][6]; - // String[] names = { "", "Phase 1", "Phase 2", "Phase 3", "Unit" }; - table[0][0] = "";// getPhases()[0].getPhaseTypeName();//""; - - for (int i = 0; i < thermoSystem.getPhases()[0].getNumberOfComponents() + 30; i++) { - for (int j = 0; j < 6; j++) { - table[i][j] = ""; - } - } - for (int i = 0; i < thermoSystem.getNumberOfPhases(); i++) { - table[0][i + 1] = thermoSystem.getPhase(i).getPhaseTypeName(); - } - - StringBuffer buf = new StringBuffer(); - FieldPosition test = new FieldPosition(0); - - String referenceTypeUnit = ""; - if (getReferenceType().equals("volume")) { - referenceTypeUnit = "m^3"; - } else if (getReferenceType().equals("mass")) { - referenceTypeUnit = "kg"; - } else if (getReferenceType().equals("molar")) { - referenceTypeUnit = "mol"; - } - for (int i = 0; i < thermoSystem.getNumberOfPhases(); i++) { - for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { - table[j + 1][0] = thermoSystem.getPhases()[0].getComponents()[j].getName(); - buf = new StringBuffer(); - table[j + 1][i + 1] = nf - .format(thermoSystem.getPhase(thermoSystem.getPhaseIndex(i)).getComponents()[j].getx(), buf, - test) - .toString(); - table[j + 1][4] = "[-]"; - } - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][0] = "Compressibility Factor"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][i + 1] = nf - .format(getValue("CompressionFactor")); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][4] = "[-]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][0] = "Superior Calorific Value"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][i + 1] = nf - .format(getValue("SuperiorCalorificValue")); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][4] = "[kJ/" + referenceTypeUnit + "]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][0] = "Inferior Calorific Value"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][i + 1] = nf - .format(getValue("InferiorCalorificValue")); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][4] = "[kJ/" + referenceTypeUnit + "]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 6][0] = "Superior Wobbe Index"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 6][i + 1] = nf - .format(getValue("SuperiorWobbeIndex") / 3600.0); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 6][4] = "[kWh/" + referenceTypeUnit + "]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][0] = "Superior Wobbe Index"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][i + 1] = nf - .format(getValue("SuperiorWobbeIndex")); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][4] = "[kJ/" + referenceTypeUnit + "]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][0] = "Inferior Wobbe Index"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][i + 1] = nf - .format(getValue("InferiorWobbeIndex")); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][4] = "[kJ/" + referenceTypeUnit + "]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 9][0] = "Relative Density"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 9][i + 1] = nf - .format(getValue("RelativeDensity")); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 9][4] = "[-]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][0] = "Molar Mass"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][i + 1] = nf.format(getValue("MolarMass")); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][4] = "[gr/mol]"; - - buf = new StringBuffer(); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][0] = "Density"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][i + 1] = nf.format(getValue("DensityReal")); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][4] = "[kg/m^3]"; - - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][0] = "Reference Temperature Combustion"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][i + 1] = Double.toString(getEnergyRefT()); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][4] = "[C]"; - - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 14][0] = "Reference Temperature Volume"; - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 14][i + 1] = Double.toString(getVolRefT()); - table[thermoSystem.getPhases()[0].getNumberOfComponents() + 14][4] = "[C]"; - } - - resultTable = table; - return table; - } - - /** - *

- * Getter for the field energyRefT. - *

- * - * @return the energyRefT - */ - public // combustion conditions - double getEnergyRefT() { - return energyRefT; - } - - /** - *

- * Setter for the field energyRefT. - *

- * - * @param energyRefT the energyRefT to set - */ - public void setEnergyRefT(double energyRefT) { - this.energyRefT = energyRefT; - } - - /** - *

- * Getter for the field energyRefP. - *

- * - * @return the energyRefP - */ - public double getEnergyRefP() { - return energyRefP; - } - - /** - *

- * Setter for the field energyRefP. - *

- * - * @param energyRefP the energyRefP to set - */ - public void setEnergyRefP(double energyRefP) { - this.energyRefP = energyRefP; - } - - /** - *

- * Getter for the field volRefT. - *

- * - * @return the volRefT - */ - public // metering conditions - double getVolRefT() { - return volRefT; - } - - /** - *

- * Setter for the field volRefT. - *

- * - * @param volRefT the volRefT to set - */ - public void setVolRefT(double volRefT) { - this.volRefT = volRefT; - } - - /** - *

- * Getter for the field componentsNotDefinedByStandard. - *

- * - * @return the componentsNotDefinedByStandard - */ - public // metering conditions - ArrayList getComponentsNotDefinedByStandard() { - return componentsNotDefinedByStandard; - } - - /** - *

- * getTotalMolesOfInerts. - *

- * - * @return a double - */ - public double getTotalMolesOfInerts() { - double inerts = 0.0; - for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { - if (carbonNumber[j] == 0) { - inerts += thermoSystem.getPhase(0).getComponent(j).getNumberOfmoles(); - } - } - - return inerts; - } - - /** - *

- * removeInertsButNitrogen. - *

- */ - public void removeInertsButNitrogen() { - for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { - if (carbonNumber[j] == 0 && !thermoSystem.getPhase(0).getComponent(j).getName().equals("nitrogen")) { - thermoSystem.addComponent("nitrogen", thermoSystem.getPhase(0).getComponent(j).getNumberOfmoles()); - thermoSystem.addComponent(thermoSystem.getPhase(0).getComponent(j).getName(), - -thermoSystem.getPhase(0).getComponent(j).getNumberOfmoles() * 0.99999); - } - } - } - - /** - *

- * Getter for the field averageCarbonNumber. - *

- * - * @return the averageCarbonNumber - */ - public double getAverageCarbonNumber() { - double inerts = getTotalMolesOfInerts(); - averageCarbonNumber = 0; - for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { - averageCarbonNumber += carbonNumber[j] * thermoSystem.getPhase(0).getComponent(j).getNumberOfmoles() - / (thermoSystem.getTotalNumberOfMoles() - inerts); - } - System.out.println("average carbon number " + averageCarbonNumber); - return averageCarbonNumber; - } - - /** - *

- * Getter for the field referenceType. - *

- * - * @return the referenceType - */ - public String getReferenceType() { - return referenceType; - } - - /** - *

- * Setter for the field referenceType. - *

- * - * @param referenceType the referenceType to set - */ - public void setReferenceType(String referenceType) { - this.referenceType = referenceType; - } + double relativeDens = 0.0; + // System.out.println("reference state " + getReferenceState()); + if (getReferenceState().equals("ideal")) { + relativeDens = relDensIdeal; + } else if (getVolRefT() == 0) { + relativeDens = relDensIdeal * Zair0 / Zmix0; + } else if (getVolRefT() == 15) { + relativeDens = relDensIdeal * Zair15 / Zmix15; + } else if (getVolRefT() == 15.55) { + relativeDens = relDensIdeal * Zair15 / Zmix15; + } else if (getVolRefT() == 20) { + relativeDens = relDensIdeal * Zair20 / Zmix20; + } + if (returnParameter.equals("RelativeDensity")) { + return relativeDens; + } + if (returnParameter.equals("InferiorWobbeIndex") + || returnParameter.equals("SuperiorWobbeIndex")) { + returnValue /= Math.sqrt(relativeDens); + } + if (returnParameter.equals("DensityIdeal")) { + return volRefP * 1e5 / (R * (getVolRefT() + 273.15)) * Mmix / 1.0e3; + } + if (returnParameter.equals("DensityReal")) { + return volRefP * 1e5 / (R * (getVolRefT() + 273.15)) * Mmix / 1.0e3 / realCorrection; + } + + if (getReferenceType().equals("molar")) { + return returnValue; + } else if (getReferenceType().equals("mass")) { + return returnValue / (Mmix / 1000.0); + } else { + return returnValue * volRefP * 1.0e5 / (R * (getVolRefT() + 273.15)) / realCorrection; + } + } + + /** + *

+ * checkReferenceCondition. + *

+ */ + public void checkReferenceCondition() { + Double[] validvalues = {0.0, 15.0, 15.55, 20.0, 25.0}; + + if (!java.util.Arrays.stream(validvalues).anyMatch(Double.valueOf(energyRefT)::equals)) { + energyRefT = 25.0; + logger.error("energy reference temperature not in valid range...setting it to 25C"); + } + if (!java.util.Arrays.stream(validvalues).anyMatch(Double.valueOf(volRefT)::equals)) { + volRefT = 15.0; + logger.error("volume reference temperature not in valid range...setting it to 15C"); + } + } + + /** {@inheritDoc} */ + @Override + public double getValue(String returnParameter) { + return getValue(returnParameter, ""); + } + + /** {@inheritDoc} */ + @Override + public String getUnit(String returnParameter) { + if (returnParameter.equals("CompressionFactor")) { + return "-"; + } else { + return energyUnit; + } + } + + /** {@inheritDoc} */ + @Override + public boolean isOnSpec() { + return true; + } + + /** {@inheritDoc} */ + @Override + public String[][] createTable(String name) { + thermoSystem.setNumberOfPhases(1); + + thermoSystem.createTable(name); + + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.#####E0"); + + int rows = 0; + if (thermoSystem == null) { + String[][] table = new String[0][6]; + return table; + } + + rows = thermoSystem.getPhases()[0].getNumberOfComponents() + 30; + String[][] table = new String[rows][6]; + + // String[] names = { "", "Phase 1", "Phase 2", "Phase 3", "Unit" }; + table[0][0] = ""; // getPhases()[0].getType(); //""; + + for (int i = 0; i < thermoSystem.getPhases()[0].getNumberOfComponents() + 30; i++) { + for (int j = 0; j < 6; j++) { + table[i][j] = ""; + } + } + for (int i = 0; i < thermoSystem.getNumberOfPhases(); i++) { + table[0][i + 1] = thermoSystem.getPhase(i).getType().toString(); + } + + StringBuffer buf = new StringBuffer(); + FieldPosition test = new FieldPosition(0); + + String referenceTypeUnit = ""; + if (getReferenceType().equals("volume")) { + referenceTypeUnit = "m^3"; + } else if (getReferenceType().equals("mass")) { + referenceTypeUnit = "kg"; + } else if (getReferenceType().equals("molar")) { + referenceTypeUnit = "mol"; + } + for (int i = 0; i < thermoSystem.getNumberOfPhases(); i++) { + for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { + table[j + 1][0] = thermoSystem.getPhases()[0].getComponents()[j].getName(); + buf = new StringBuffer(); + table[j + 1][i + 1] = nf + .format(thermoSystem.getPhase(thermoSystem.getPhaseIndex(i)).getComponents()[j].getx(), + buf, test) + .toString(); + table[j + 1][4] = "[-]"; + } + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][0] = "Compressibility Factor"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][i + 1] = + nf.format(getValue("CompressionFactor")); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 3][4] = "[-]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][0] = + "Superior Calorific Value"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][i + 1] = + nf.format(getValue("SuperiorCalorificValue")); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 4][4] = + "[kJ/" + referenceTypeUnit + "]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][0] = + "Inferior Calorific Value"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][i + 1] = + nf.format(getValue("InferiorCalorificValue")); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 5][4] = + "[kJ/" + referenceTypeUnit + "]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 6][0] = "Superior Wobbe Index"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 6][i + 1] = + nf.format(getValue("SuperiorWobbeIndex") / 3600.0); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 6][4] = + "[kWh/" + referenceTypeUnit + "]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][0] = "Superior Wobbe Index"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][i + 1] = + nf.format(getValue("SuperiorWobbeIndex")); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 7][4] = + "[kJ/" + referenceTypeUnit + "]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][0] = "Inferior Wobbe Index"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][i + 1] = + nf.format(getValue("InferiorWobbeIndex")); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 8][4] = + "[kJ/" + referenceTypeUnit + "]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 9][0] = "Relative Density"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 9][i + 1] = + nf.format(getValue("RelativeDensity")); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 9][4] = "[-]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][0] = "Molar Mass"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][i + 1] = + nf.format(getValue("MolarMass")); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 10][4] = "[gr/mol]"; + + buf = new StringBuffer(); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][0] = "Density"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][i + 1] = + nf.format(getValue("DensityReal")); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 11][4] = "[kg/m^3]"; + + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][0] = + "Reference Temperature Combustion"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][i + 1] = + Double.toString(getEnergyRefT()); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 13][4] = "[C]"; + + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 14][0] = + "Reference Temperature Volume"; + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 14][i + 1] = + Double.toString(getVolRefT()); + table[thermoSystem.getPhases()[0].getNumberOfComponents() + 14][4] = "[C]"; + } + + resultTable = table; + return table; + } + + /** + *

+ * Getter for the field energyRefT. // combustion conditions + *

+ * + * @return the energyRefT + */ + public double getEnergyRefT() { + return energyRefT; + } + + /** + *

+ * Setter for the field energyRefT. + *

+ * + * @param energyRefT the energyRefT to set + */ + public void setEnergyRefT(double energyRefT) { + this.energyRefT = energyRefT; + } + + /** + *

+ * Getter for the field energyRefP. + *

+ * + * @return the energyRefP + */ + public double getEnergyRefP() { + return energyRefP; + } + + /** + *

+ * Setter for the field energyRefP. + *

+ * + * @param energyRefP the energyRefP to set + */ + public void setEnergyRefP(double energyRefP) { + this.energyRefP = energyRefP; + } + + /** + *

+ * Getter for the field volRefT. metering conditions + *

+ * + * @return the volRefT + */ + public double getVolRefT() { + return volRefT; + } + + /** + *

+ * Setter for the field volRefT. + *

+ * + * @param volRefT the volRefT to set + */ + public void setVolRefT(double volRefT) { + this.volRefT = volRefT; + } + + /** + *

+ * Getter for the field componentsNotDefinedByStandard. + *

+ * + * @return the componentsNotDefinedByStandard + */ + public ArrayList getComponentsNotDefinedByStandard() { + return componentsNotDefinedByStandard; + } + + /** + *

+ * getTotalMolesOfInerts. + *

+ * + * @return a double + */ + public double getTotalMolesOfInerts() { + double inerts = 0.0; + for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { + if (carbonNumber[j] == 0) { + inerts += thermoSystem.getPhase(0).getComponent(j).getNumberOfmoles(); + } + } + + return inerts; + } + + /** + *

+ * removeInertsButNitrogen. + *

+ */ + public void removeInertsButNitrogen() { + for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { + if (carbonNumber[j] == 0 + && !thermoSystem.getPhase(0).getComponent(j).getName().equals("nitrogen")) { + thermoSystem.addComponent("nitrogen", + thermoSystem.getPhase(0).getComponent(j).getNumberOfmoles()); + thermoSystem.addComponent(thermoSystem.getPhase(0).getComponent(j).getName(), + -thermoSystem.getPhase(0).getComponent(j).getNumberOfmoles() * 0.99999); + } + } + } + + /** + *

+ * Getter for the field averageCarbonNumber. + *

+ * + * @return the averageCarbonNumber + */ + public double getAverageCarbonNumber() { + double inerts = getTotalMolesOfInerts(); + averageCarbonNumber = 0; + for (int j = 0; j < thermoSystem.getPhases()[0].getNumberOfComponents(); j++) { + averageCarbonNumber += + carbonNumber[j] * thermoSystem.getPhase(0).getComponent(j).getNumberOfmoles() + / (thermoSystem.getTotalNumberOfMoles() - inerts); + } + System.out.println("average carbon number " + averageCarbonNumber); + return averageCarbonNumber; + } + + /** + *

+ * Getter for the field referenceType. + *

+ * + * @return the referenceType + */ + public String getReferenceType() { + return referenceType; + } + + /** + *

+ * Setter for the field referenceType. + *

+ * + * @param referenceType the referenceType to set + */ + public void setReferenceType(String referenceType) { + this.referenceType = referenceType; + } } diff --git a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976_2016.java b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976_2016.java index 9b55e5e172..4936811e84 100644 --- a/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976_2016.java +++ b/src/main/java/neqsim/standards/gasQuality/Standard_ISO6976_2016.java @@ -13,336 +13,364 @@ * @version $Id: $Id */ public class Standard_ISO6976_2016 extends Standard_ISO6976 { - private static final long serialVersionUID = 1000; - - // metering conditions - - double R = 8.3144621; - - double Zmix0 = 1.0, Zmix15 = 1.0, Zmix20 = 1.0, Zmix60F = 1.0; - double Zair0 = 0.999419, Zair15 = 0.999595, Zair60F = 999601, Zair20 = 0.999645; - - double[] Z0, Z15, Z20, Z60F; - double[] bsqrt0, bsqrt15, bsqrt20, bsqrt60F; - double[] Hsup0, Hsup15, Hsup20, Hsup25, Hsup60F; - double[] Hinf0, Hinf15, Hinf20, Hinf25, Hinf60F; - double HsupIdeal0 = 0.0, HsupIdeal15 = 0.0, HsupIdeal20 = 0.0, HsupIdeal25 = 0.0, - HsupIdeal60F = 0.0; - double HinfIdeal0 = 0.0, HinfIdeal15 = 0.0, HinfIdeal20 = 0.0, HinfIdeal25 = 0.0, - HinfIdeal60F = 0.0; - static Logger logger = LogManager.getLogger(Standard_ISO6976_2016.class); - - public Standard_ISO6976_2016(SystemInterface thermoSystem) { - super("Standard_ISO6976_2016", - "Calculation of calorific values, density, relative density and Wobbe index from composition based on ISO6976 version 2016", - thermoSystem); - M = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - carbonNumber = new int[thermoSystem.getPhase(0).getNumberOfComponents()]; - - Z0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Z15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Z60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Z20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - - bsqrt0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - bsqrt15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - bsqrt60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - bsqrt20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - - Hsup0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hsup15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hsup20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hsup25 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hsup60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - - Hinf0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hinf15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hinf20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hinf25 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - Hinf60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Standard_ISO6976_2016.class); + + // metering conditions + + // ThermodynamicConstantsInterface.R + double R = 8.3144621; + + double Zmix0 = 1.0; + double Zmix15 = 1.0; + double Zmix20 = 1.0; + double Zmix60F = 1.0; + + double Zair0 = 0.999419; + double Zair15 = 0.999595; + double Zair60F = 999601; + double Zair20 = 0.999645; + + double[] Z0; + double[] Z15; + double[] Z20; + double[] Z60F; + + double[] bsqrt0; + double[] bsqrt15; + double[] bsqrt20; + double[] bsqrt60F; + + double[] Hsup0; + double[] Hsup15; + double[] Hsup20; + double[] Hsup25; + double[] Hsup60F; + + double[] Hinf0; + double[] Hinf15; + double[] Hinf20; + double[] Hinf25; + double[] Hinf60F; + + double HsupIdeal0 = 0.0; + double HsupIdeal15 = 0.0; + double HsupIdeal20 = 0.0; + double HsupIdeal25 = 0.0; + double HsupIdeal60F = 0.0; + + double HinfIdeal0 = 0.0; + double HinfIdeal15 = 0.0; + double HinfIdeal20 = 0.0; + double HinfIdeal25 = 0.0; + double HinfIdeal60F = 0.0; + + /** + *

+ * Constructor for Standard_ISO6976_2016. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + */ + public Standard_ISO6976_2016(SystemInterface thermoSystem) { + super("Standard_ISO6976_2016", + "Calculation of calorific values, density, relative density and Wobbe index from composition based on ISO6976 version 2016", + thermoSystem); + M = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + carbonNumber = new int[thermoSystem.getPhase(0).getNumberOfComponents()]; + + Z0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Z15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Z60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Z20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + + bsqrt0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + bsqrt15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + bsqrt60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + bsqrt20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + + Hsup0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hsup15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hsup20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hsup25 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hsup60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + + Hinf0 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hinf15 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hinf20 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hinf25 = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + Hinf60F = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + java.sql.ResultSet dataSet = null; + for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { try { - neqsim.util.database.NeqSimDataBase database = - new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - - for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { - try { - dataSet = database.getResultSet( - ("SELECT * FROM iso6976constants2016 WHERE ComponentName='" - + this.thermoSystem.getPhase(0).getComponent(i).getName() - + "'")); - dataSet.next(); - M[i] = Double.parseDouble(dataSet.getString("MolarMass")); - } catch (Exception e) { - try { - String compName = "inert"; - String compType = - this.thermoSystem.getPhase(0).getComponent(i).getComponentType(); - - if (compType.equals("HC") || compType.equals("TBP") - || compType.equals("plus")) { - compName = "n-heptane"; - } else if (compType.equals("alcohol") || compType.equals("glycol")) { - compName = "methanol"; - } - - dataSet.close(); - dataSet = database.getResultSet( - ("SELECT * FROM iso6976constants2016 WHERE ComponentName='" - + compName + "'")); - M[i] = this.thermoSystem.getPhase(0).getComponent(i).getMolarMass(); - dataSet.next(); - } catch (Exception er) { - logger.error(er.toString()); - } - componentsNotDefinedByStandard.add( - "this.thermoSystem.getPhase(0).getComponent(i).getComponentName()"); - logger.info("added component not specified by ISO6976constants2016 " - + this.thermoSystem.getPhase(0).getComponent(i).getComponentName()); - } finally { - dataSet.close(); - } - - carbonNumber[i] = Integer.parseInt(dataSet.getString("numberOfCarbon")); - - Z0[i] = Double.parseDouble(dataSet.getString("Z0")); - Z15[i] = Double.parseDouble(dataSet.getString("Z15")); - Z60F[i] = Double.parseDouble(dataSet.getString("Z60F")); - Z20[i] = Double.parseDouble(dataSet.getString("Z20")); - - bsqrt0[i] = Double.parseDouble(dataSet.getString("srtb0")); - bsqrt15[i] = Double.parseDouble(dataSet.getString("srtb15")); - bsqrt60F[i] = Double.parseDouble(dataSet.getString("srtb60F")); - bsqrt20[i] = Double.parseDouble(dataSet.getString("srtb20")); - - Hsup0[i] = Double.parseDouble(dataSet.getString("Hsupmolar0")); - Hsup15[i] = Double.parseDouble(dataSet.getString("Hsupmolar15")); - Hsup20[i] = Double.parseDouble(dataSet.getString("Hsupmolar20")); - Hsup25[i] = Double.parseDouble(dataSet.getString("Hsupmolar25")); - Hsup60F[i] = Double.parseDouble(dataSet.getString("Hsupmolar60F")); - - Hinf0[i] = Double.parseDouble(dataSet.getString("Hinfmolar0")); - Hinf15[i] = Double.parseDouble(dataSet.getString("Hinfmolar15")); - Hinf20[i] = Double.parseDouble(dataSet.getString("Hinfmolar20")); - Hinf25[i] = Double.parseDouble(dataSet.getString("Hinfmolar25")); - Hinf60F[i] = Double.parseDouble(dataSet.getString("Hinfmolar60F")); + dataSet = + database.getResultSet(("SELECT * FROM iso6976constants2016 WHERE ComponentName='" + + this.thermoSystem.getPhase(0).getComponent(i).getName() + "'")); + dataSet.next(); + M[i] = Double.parseDouble(dataSet.getString("MolarMass")); + } catch (Exception ex) { + try { + String compName = "inert"; + String compType = this.thermoSystem.getPhase(0).getComponent(i).getComponentType(); + + if (compType.equals("HC") || compType.equals("TBP") || compType.equals("plus")) { + compName = "n-heptane"; + } else if (compType.equals("alcohol") || compType.equals("glycol")) { + compName = "methanol"; } dataSet.close(); - database.getConnection().close(); - } catch (Exception e) { - String err = e.toString(); - logger.error(err); + dataSet = database.getResultSet( + ("SELECT * FROM iso6976constants2016 WHERE ComponentName='" + compName + "'")); + M[i] = this.thermoSystem.getPhase(0).getComponent(i).getMolarMass(); + dataSet.next(); + } catch (Exception er) { + logger.error(er.toString()); + } + componentsNotDefinedByStandard + .add("this.thermoSystem.getPhase(0).getComponent(i).getComponentName()"); + logger.info("added component not specified by ISO6976constants2016 " + + this.thermoSystem.getPhase(0).getComponent(i).getComponentName()); } - } - /** - *

- * Constructor for Standard_ISO6976_2016. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param volumetricReferenceTemperaturedegC a double - * @param energyReferenceTemperaturedegC a double - * @param calculationType a {@link java.lang.String} object - */ - public Standard_ISO6976_2016(SystemInterface thermoSystem, - double volumetricReferenceTemperaturedegC, double energyReferenceTemperaturedegC, - String calculationType) { - this(thermoSystem); - this.referenceType = calculationType; - volRefT = volumetricReferenceTemperaturedegC; - energyRefT = energyReferenceTemperaturedegC; + carbonNumber[i] = Integer.parseInt(dataSet.getString("numberOfCarbon")); + + Z0[i] = Double.parseDouble(dataSet.getString("Z0")); + Z15[i] = Double.parseDouble(dataSet.getString("Z15")); + Z60F[i] = Double.parseDouble(dataSet.getString("Z60F")); + Z20[i] = Double.parseDouble(dataSet.getString("Z20")); + + bsqrt0[i] = Double.parseDouble(dataSet.getString("srtb0")); + bsqrt15[i] = Double.parseDouble(dataSet.getString("srtb15")); + bsqrt60F[i] = Double.parseDouble(dataSet.getString("srtb60F")); + bsqrt20[i] = Double.parseDouble(dataSet.getString("srtb20")); + + Hsup0[i] = Double.parseDouble(dataSet.getString("Hsupmolar0")); + Hsup15[i] = Double.parseDouble(dataSet.getString("Hsupmolar15")); + Hsup20[i] = Double.parseDouble(dataSet.getString("Hsupmolar20")); + Hsup25[i] = Double.parseDouble(dataSet.getString("Hsupmolar25")); + Hsup60F[i] = Double.parseDouble(dataSet.getString("Hsupmolar60F")); + + Hinf0[i] = Double.parseDouble(dataSet.getString("Hinfmolar0")); + Hinf15[i] = Double.parseDouble(dataSet.getString("Hinfmolar15")); + Hinf20[i] = Double.parseDouble(dataSet.getString("Hinfmolar20")); + Hinf25[i] = Double.parseDouble(dataSet.getString("Hinfmolar25")); + Hinf60F[i] = Double.parseDouble(dataSet.getString("Hinfmolar60F")); + + dataSet.close(); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** {@inheritDoc} */ - @Override - public void calculate() { - Zmix0 = 1.0; - Zmix15 = 1.0; - Zmix60F = 1.0; - Zmix20 = 1.0; - double Zmixtemp0 = 0.0; - double Zmixtemp15 = 0.0; - double Zmixtemp60F = 0.0; - double Zmixtemp20 = 0.0; - Mmix = 0.0; - relDensIdeal = 0.0; - HsupIdeal0 = 0.0; - HsupIdeal15 = 0.0; - HsupIdeal20 = 0.0; - HsupIdeal25 = 0.0; - HsupIdeal60F = 0.0; - HinfIdeal0 = 0.0; - HinfIdeal15 = 0.0; - HinfIdeal20 = 0.0; - HinfIdeal25 = 0.0; - HinfIdeal60F = 0.0; - - for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { - Mmix += thermoSystem.getPhase(0).getComponent(i).getz() * M[i]; - - Zmixtemp0 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt0[i]; - Zmixtemp15 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt15[i]; - Zmixtemp60F += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt60F[i]; - Zmixtemp20 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt20[i]; - - HsupIdeal0 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup0[i]; - HsupIdeal15 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup15[i]; - HsupIdeal20 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup20[i]; - HsupIdeal25 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup25[i]; - HsupIdeal60F += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup60F[i]; - - HinfIdeal0 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf0[i]; - HinfIdeal15 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf15[i]; - HinfIdeal20 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf20[i]; - HinfIdeal25 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf25[i]; - HinfIdeal60F += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf60F[i]; - - relDensIdeal += thermoSystem.getPhase(0).getComponent(i).getz() * M[i] / molarMassAir; - } - Zmix0 -= Math.pow(Zmixtemp0, 2.0); - Zmix15 -= Math.pow(Zmixtemp15, 2.0); - Zmix60F -= Math.pow(Zmixtemp60F, 2.0); - Zmix20 -= Math.pow(Zmixtemp20, 2.0); - molRefm3 = volRefP * 1.0e5 * 1.0 - / (R * (getVolRefT() + 273.15) * getValue("CompressionFactor")); - // System.out.println("molRefm3 " + molRefm3); + } + + /** + *

+ * Constructor for Standard_ISO6976_2016. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param volumetricReferenceTemperaturedegC a double (valid are 0, 15, 15.55 and 20) + * @param energyReferenceTemperaturedegC a double (valid are 0, 15, 15.55 and 20) + * @param calculationType a {@link java.lang.String} object + */ + public Standard_ISO6976_2016(SystemInterface thermoSystem, + double volumetricReferenceTemperaturedegC, double energyReferenceTemperaturedegC, + String calculationType) { + this(thermoSystem); + this.referenceType = calculationType; + volRefT = volumetricReferenceTemperaturedegC; + energyRefT = energyReferenceTemperaturedegC; + } + + /** {@inheritDoc} */ + @Override + public void calculate() { + Zmix0 = 1.0; + Zmix15 = 1.0; + Zmix60F = 1.0; + Zmix20 = 1.0; + double Zmixtemp0 = 0.0; + double Zmixtemp15 = 0.0; + double Zmixtemp60F = 0.0; + double Zmixtemp20 = 0.0; + Mmix = 0.0; + relDensIdeal = 0.0; + HsupIdeal0 = 0.0; + HsupIdeal15 = 0.0; + HsupIdeal20 = 0.0; + HsupIdeal25 = 0.0; + HsupIdeal60F = 0.0; + HinfIdeal0 = 0.0; + HinfIdeal15 = 0.0; + HinfIdeal20 = 0.0; + HinfIdeal25 = 0.0; + HinfIdeal60F = 0.0; + + for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { + Mmix += thermoSystem.getPhase(0).getComponent(i).getz() * M[i]; + + Zmixtemp0 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt0[i]; + Zmixtemp15 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt15[i]; + Zmixtemp60F += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt60F[i]; + Zmixtemp20 += thermoSystem.getPhase(0).getComponent(i).getz() * bsqrt20[i]; + + HsupIdeal0 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup0[i]; + HsupIdeal15 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup15[i]; + HsupIdeal20 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup20[i]; + HsupIdeal25 += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup25[i]; + HsupIdeal60F += thermoSystem.getPhase(0).getComponent(i).getz() * Hsup60F[i]; + + HinfIdeal0 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf0[i]; + HinfIdeal15 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf15[i]; + HinfIdeal20 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf20[i]; + HinfIdeal25 += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf25[i]; + HinfIdeal60F += thermoSystem.getPhase(0).getComponent(i).getz() * Hinf60F[i]; + + relDensIdeal += thermoSystem.getPhase(0).getComponent(i).getz() * M[i] / molarMassAir; + } + Zmix0 -= Math.pow(Zmixtemp0, 2.0); + Zmix15 -= Math.pow(Zmixtemp15, 2.0); + Zmix60F -= Math.pow(Zmixtemp60F, 2.0); + Zmix20 -= Math.pow(Zmixtemp20, 2.0); + molRefm3 = + volRefP * 1.0e5 * 1.0 / (R * (getVolRefT() + 273.15) * getValue("CompressionFactor")); + // System.out.println("molRefm3 " + molRefm3); + } + + /** {@inheritDoc} */ + @Override + public double getValue(String returnParameter, String returnUnit) { + checkReferenceCondition(); + if (returnParameter.equals("GCV")) { + returnParameter = "SuperiorCalorificValue"; + } + if (returnParameter.equals("LCV")) { + returnParameter = "InferiorCalorificValue"; } - /** {@inheritDoc} */ - @Override - public double getValue(String returnParameter, java.lang.String returnUnit) { - if (returnParameter.equals("GCV")) { - returnParameter = "SuperiorCalorificValue"; - } - if (returnParameter.equals("LCV")) { - returnParameter = "InferiorCalorificValue"; - } - - double returnValue = 0.0; - - if (getVolRefT() == 0) { - returnValue = Zmix0; - } else if (getVolRefT() == 15) { - returnValue = Zmix15; - } else if (getVolRefT() == 15.55) { - returnValue = Zmix60F; - } else if (getVolRefT() == 20) { - returnValue = Zmix20; - } - - if (returnParameter.equals("CompressionFactor")) { - return returnValue; - } - if (returnParameter.equals("MolarMass")) { - return Mmix; - } - - double realCorrection = 1.0; - if (getReferenceState().equals("ideal")) { - realCorrection = 1.0; - } else { - realCorrection = returnValue; - } - - if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 0) { - returnValue = HsupIdeal0; - } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 15) { - returnValue = HsupIdeal15; - } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 20) { - returnValue = HsupIdeal20; - } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 25) { - returnValue = HsupIdeal25; - } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 15.55) { - returnValue = HsupIdeal60F; - } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 0) { - returnValue = HinfIdeal0; - } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 15) { - returnValue = HinfIdeal15; - } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 20) { - returnValue = HinfIdeal20; - } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 25) { - returnValue = HinfIdeal25; - } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 15.55) { - returnValue = HinfIdeal60F; - } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 0) { - returnValue = HsupIdeal0; - } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 15) { - returnValue = HsupIdeal15; - } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 20) { - returnValue = HsupIdeal20; - } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 25) { - returnValue = HsupIdeal25; - } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 15.55) { - returnValue = HsupIdeal60F; - } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 0) { - returnValue = HinfIdeal0; - } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 15) { - returnValue = HinfIdeal15; - } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 20) { - returnValue = HinfIdeal20; - } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 15.55) { - returnValue = HinfIdeal60F; - } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 25) { - returnValue = HinfIdeal25; - } - if (returnUnit.equals("kWh")) { - returnValue /= 3600.0; - } + double returnValue = 0.0; + + if (getVolRefT() == 0) { + returnValue = Zmix0; + } else if (getVolRefT() == 15) { + returnValue = Zmix15; + } else if (getVolRefT() == 15.55) { + returnValue = Zmix60F; + } else if (getVolRefT() == 20) { + returnValue = Zmix20; + } else { + returnValue = Zmix15; + } - double relativeDens = 0.0; - if (getReferenceState().equals("ideal")) { - relativeDens = relDensIdeal; - } else if (getVolRefT() == 0) { - relativeDens = relDensIdeal * Zair0 / Zmix0; - } else if (getVolRefT() == 15) { - relativeDens = relDensIdeal * Zair15 / Zmix15; - } else if (getVolRefT() == 15.55) { - relativeDens = relDensIdeal * Zair60F / Zmix60F; - } else if (getVolRefT() == 20) { - relativeDens = relDensIdeal * Zair20 / Zmix20; - } - if (returnParameter.equals("RelativeDensity")) { - return relativeDens; - } - if (returnParameter.equals("InferiorWobbeIndex") - || returnParameter.equals("SuperiorWobbeIndex")) { - returnValue /= Math.sqrt(relativeDens); - } - if (returnParameter.equals("DensityIdeal")) { - return volRefP * 1e5 / (R * (getVolRefT() + 273.15)) * Mmix / 1.0e3; - } - if (returnParameter.equals("DensityReal")) { - return volRefP * 1e5 / (R * (getVolRefT() + 273.15)) * Mmix / 1.0e3 / realCorrection; - } + if (returnParameter.equals("CompressionFactor")) { + return returnValue; + } + if (returnParameter.equals("MolarMass")) { + return Mmix; + } - if (getReferenceType().equals("molar")) { - return returnValue; - } else if (getReferenceType().equals("mass")) { - return returnValue / (Mmix / 1000.0); - } else { - return returnValue * volRefP * 1.0e5 / (R * (getVolRefT() + 273.15)) / realCorrection; - } + double realCorrection = 1.0; + if (getReferenceState().equals("ideal")) { + realCorrection = 1.0; + } else { + realCorrection = returnValue; } - /** {@inheritDoc} */ - @Override - public double getValue(String returnParameter) { - return getValue(returnParameter, ""); + if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 0) { + returnValue = HsupIdeal0; + } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 15) { + returnValue = HsupIdeal15; + } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 20) { + returnValue = HsupIdeal20; + } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 25) { + returnValue = HsupIdeal25; + } else if (returnParameter.equals("SuperiorCalorificValue") && getEnergyRefT() == 15.55) { + returnValue = HsupIdeal60F; + } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 0) { + returnValue = HinfIdeal0; + } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 15) { + returnValue = HinfIdeal15; + } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 20) { + returnValue = HinfIdeal20; + } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 25) { + returnValue = HinfIdeal25; + } else if (returnParameter.equals("InferiorCalorificValue") && getEnergyRefT() == 15.55) { + returnValue = HinfIdeal60F; + } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 0) { + returnValue = HsupIdeal0; + } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 15) { + returnValue = HsupIdeal15; + } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 20) { + returnValue = HsupIdeal20; + } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 25) { + returnValue = HsupIdeal25; + } else if (returnParameter.equals("SuperiorWobbeIndex") && getEnergyRefT() == 15.55) { + returnValue = HsupIdeal60F; + } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 0) { + returnValue = HinfIdeal0; + } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 15) { + returnValue = HinfIdeal15; + } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 20) { + returnValue = HinfIdeal20; + } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 15.55) { + returnValue = HinfIdeal60F; + } else if (returnParameter.equals("InferiorWobbeIndex") && getEnergyRefT() == 25) { + returnValue = HinfIdeal25; + } + if (returnUnit.equals("kWh")) { + returnValue /= 3600.0; } - /** {@inheritDoc} */ - @Override - public String getUnit(String returnParameter) { - if (returnParameter.equals("CompressionFactor")) { - return "-"; - } else { - return energyUnit; - } + double relativeDens = 0.0; + if (getReferenceState().equals("ideal")) { + relativeDens = relDensIdeal; + } else if (getVolRefT() == 0) { + relativeDens = relDensIdeal * Zair0 / Zmix0; + } else if (getVolRefT() == 15) { + relativeDens = relDensIdeal * Zair15 / Zmix15; + } else if (getVolRefT() == 15.55) { + relativeDens = relDensIdeal * Zair60F / Zmix60F; + } else if (getVolRefT() == 20) { + relativeDens = relDensIdeal * Zair20 / Zmix20; + } + if (returnParameter.equals("RelativeDensity")) { + return relativeDens; + } + if (returnParameter.equals("InferiorWobbeIndex") + || returnParameter.equals("SuperiorWobbeIndex")) { + returnValue /= Math.sqrt(relativeDens); + } + if (returnParameter.equals("DensityIdeal")) { + return volRefP * 1e5 / (R * (getVolRefT() + 273.15)) * Mmix / 1.0e3; + } + if (returnParameter.equals("DensityReal")) { + return volRefP * 1e5 / (R * (getVolRefT() + 273.15)) * Mmix / 1.0e3 / realCorrection; } - /** - * @return the energyRefT - */ + if (getReferenceType().equals("molar")) { + return returnValue; + } else if (getReferenceType().equals("mass")) { + return returnValue / (Mmix / 1000.0); + } else { + return returnValue * volRefP * 1.0e5 / (R * (getVolRefT() + 273.15)) / realCorrection; + } + } + + /** {@inheritDoc} */ + @Override + public double getValue(String returnParameter) { + return getValue(returnParameter, ""); + } + + /** {@inheritDoc} */ + @Override + public String getUnit(String returnParameter) { + if (returnParameter.equals("CompressionFactor")) { + return "-"; + } else { + return energyUnit; + } + } } diff --git a/src/main/java/neqsim/standards/gasQuality/SulfurSpecificationMethod.java b/src/main/java/neqsim/standards/gasQuality/SulfurSpecificationMethod.java index a448274f74..24afd0c825 100644 --- a/src/main/java/neqsim/standards/gasQuality/SulfurSpecificationMethod.java +++ b/src/main/java/neqsim/standards/gasQuality/SulfurSpecificationMethod.java @@ -12,7 +12,6 @@ */ public class SulfurSpecificationMethod extends neqsim.standards.Standard { private static final long serialVersionUID = 1L; - SystemInterface thermoSystem; String unit = "ppm"; double H2Scontent = 0.0; @@ -35,14 +34,26 @@ public void calculate() { /** {@inheritDoc} */ @Override - public double getValue(String returnParameter, java.lang.String returnUnit) { + public double getValue(String returnParameter, String returnUnit) { thermoSystem.init(0); - if (thermoSystem.getPhase(0).hasComponent("H2S")) { - if (returnParameter.equals("H2S content")) { + if (returnParameter.equals("H2S")) { + if (thermoSystem.getPhase(0).hasComponent("H2S")) { H2Scontent = thermoSystem.getPhase(0).getComponent("H2S").getx() * 1e6; return H2Scontent; + } else { + return 0.0; } } + if (returnParameter.equals("Total sulfur")) { + double sulfurcontent = 0.0; + if (thermoSystem.getPhase(0).hasComponent("H2S")) { + sulfurcontent += thermoSystem.getPhase(0).getComponent("H2S").getx() * 1e6; + } + if (thermoSystem.getPhase(0).hasComponent("SO2")) { + sulfurcontent += thermoSystem.getPhase(0).getComponent("So2").getx() * 1e6; + } + return sulfurcontent; + } return 0.0; } diff --git a/src/main/java/neqsim/standards/gasQuality/UKspecifications_ICF_SI.java b/src/main/java/neqsim/standards/gasQuality/UKspecifications_ICF_SI.java index 1043de78bd..29eea41c05 100644 --- a/src/main/java/neqsim/standards/gasQuality/UKspecifications_ICF_SI.java +++ b/src/main/java/neqsim/standards/gasQuality/UKspecifications_ICF_SI.java @@ -3,6 +3,8 @@ import org.apache.commons.math3.linear.Array2DRowRealMatrix; import org.apache.commons.math3.linear.DecompositionSolver; import org.apache.commons.math3.linear.RealMatrix; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.system.SystemInterface; /** @@ -15,7 +17,10 @@ */ public class UKspecifications_ICF_SI extends neqsim.standards.Standard { private static final long serialVersionUID = 1L; - String componentName = "", unit = "-"; + static Logger logger = LogManager.getLogger(UKspecifications_ICF_SI.class); + + String componentName = ""; + String unit = "-"; Standard_ISO6976 iso6976 = null; double propaneNumber = 0.0; @@ -40,7 +45,7 @@ public void calculate() { /** {@inheritDoc} */ @Override - public double getValue(String returnParameter, java.lang.String returnUnit) { + public double getValue(String returnParameter, String returnUnit) { if (returnParameter.equals("PropaneNumber")) { return propaneNumber; } @@ -84,8 +89,9 @@ public boolean isOnSpec() { public double calcPropaneNumber() { double avgCarbon = iso6976.getAverageCarbonNumber(); - double[][] Amatrix = {{1.0, 1.0}, {1.0, 3.0}};// {thermoSystem.getNumberOfMoles(), - // thermoSystem.getNumberOfMoles()*iso6976.getAverageCarbonNumber()}}; + double[][] Amatrix = {{1.0, 1.0}, {1.0, 3.0}}; + // {thermoSystem.getNumberOfMoles(), // + // thermoSystem.getNumberOfMoles()*iso6976.getAverageCarbonNumber()}}; double[] bmatrix = {(thermoSystem.getTotalNumberOfMoles() - iso6976.getTotalMolesOfInerts()), avgCarbon * (thermoSystem.getTotalNumberOfMoles() - iso6976.getTotalMolesOfInerts())}; @@ -103,8 +109,8 @@ public double calcPropaneNumber() { System.out.println("propane number " + (nitrogenCalc + ans2.getEntry(1, 0)) / thermoSystem.getTotalNumberOfMoles() * 100.0); return nitrogenCalc + ans2.getEntry(1, 0); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } return 1.0; } @@ -129,7 +135,8 @@ public double calcWithNitrogenAsInert() { } localIso6976.removeInertsButNitrogen(); - double newWI = targetWI / 1.01, oldWI = 0.0; + double newWI = targetWI / 1.01; + double oldWI = 0.0; double dn2 = 0.1; // double dWIdN2; int iter = 0; diff --git a/src/main/java/neqsim/standards/oilQuality/Standard_ASTM_D6377.java b/src/main/java/neqsim/standards/oilQuality/Standard_ASTM_D6377.java index a8551e26ca..2e5aa98443 100644 --- a/src/main/java/neqsim/standards/oilQuality/Standard_ASTM_D6377.java +++ b/src/main/java/neqsim/standards/oilQuality/Standard_ASTM_D6377.java @@ -1,5 +1,8 @@ package neqsim.standards.oilQuality; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -14,8 +17,59 @@ */ public class Standard_ASTM_D6377 extends neqsim.standards.Standard { private static final long serialVersionUID = 1L; + static Logger logger = LogManager.getLogger(Standard_ASTM_D6377.class); + String unit = "bara"; double RVP = 1.0; + double TVP = 1.0; + double referenceTemperature = 37.8; + String referenceTemperatureUnit = "C"; + String methodRVP = "VPCR4"; // RVP_ASTM_D6377 // RVP_ASTM_D323_73_79 // + // RVP_ASTM_D323_82 // VPCR4_no_water // VPCR4 + + private double VPCR4_no_water = 0.0; + private double VPCR4 = 0.0; + private double RVP_ASTM_D6377 = 0.0; + private double RVP_ASTM_D323_73_79 = 0.0; + private double RVP_ASTM_D323_82 = 0.0; + + /** + * Gets the method used for measuring Reid Vapor Pressure (RVP). + * + *

+ * The method can be one of the following: + *

+ *
    + *
  • RVP_ASTM_D6377
  • + *
  • RVP_ASTM_D323_73_79
  • + *
  • RVP_ASTM_D323_82
  • + *
  • VPCR4
  • + *
+ * + * @return the method used for RVP measurement. + */ + public String getMethodRVP() { + return methodRVP; + } + + /** + * Sets the method used for measuring Reid Vapor Pressure (RVP). + * + *

+ * The method should be one of the following: + *

+ *
    + *
  • RVP_ASTM_D6377
  • + *
  • RVP_ASTM_D323_73_79
  • + *
  • RVP_ASTM_D323_82
  • + *
  • VPCR4
  • + *
+ * + * @param methodRVP the method to set for RVP measurement. + */ + public void setMethodRVP(String methodRVP) { + this.methodRVP = methodRVP; + } /** *

@@ -31,26 +85,44 @@ public Standard_ASTM_D6377(SystemInterface thermoSystem) { /** {@inheritDoc} */ @Override public void calculate() { - this.thermoSystem.setTemperature(273.15 + 37.8); - this.thermoSystem.setPressure(1.01325); + this.thermoSystem.setTemperature(referenceTemperature, "C"); + this.thermoSystem.setPressure(ThermodynamicConstantsInterface.referencePressure); this.thermoOps = new ThermodynamicOperations(thermoSystem); try { this.thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - // double TVP = this.thermoSystem.getPressure(); - double liquidVolume = thermoSystem.getVolume(); + TVP = this.thermoSystem.getPressure(); - this.thermoSystem.setPressure(0.9); + this.thermoSystem.setPressure(TVP * 0.9); try { - this.thermoOps.TVflash(liquidVolume * 4.0); - } catch (Exception e) { - e.printStackTrace(); + // ASTM D323 -08 method is used for this property calculation. It is defined at the pressure + // at 100°F (37.8°C) at which 80% of the stream by volume is vapor at 100°F. In + this.thermoOps.TVfractionFlash(0.8); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - RVP = (0.752 * (100.0 * this.thermoSystem.getPressure()) + 6.07) / 100.0; + VPCR4 = this.thermoSystem.getPressure(); + RVP_ASTM_D6377 = 0.834 * VPCR4; + RVP_ASTM_D323_82 = (0.752 * (100.0 * this.thermoSystem.getPressure()) + 6.07) / 100.0; + + SystemInterface fluid1 = this.thermoSystem.clone(); + if (fluid1.hasComponent("water")) { + fluid1.removeComponent("water"); + fluid1.init(0); + } + try { + // ASTM D323 -08 method is used for this property calculation. It is defined at the pressure + // at 100°F (37.8°C) at which 80% of the stream by volume is vapor at 100°F. In + this.thermoOps.TVfractionFlash(0.8); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + VPCR4_no_water = this.thermoSystem.getPressure(); + RVP_ASTM_D323_73_79 = VPCR4_no_water; } /** {@inheritDoc} */ @@ -67,14 +139,60 @@ public String getUnit(String returnParameter) { /** {@inheritDoc} */ @Override - public double getValue(String returnParameter, java.lang.String returnUnit) { - return RVP; + public double getValue(String returnParameter, String returnUnit) { + if (returnParameter == "RVP") { + double RVPlocal = getValue("RVP"); + neqsim.util.unit.PressureUnit presConversion = + new neqsim.util.unit.PressureUnit(RVPlocal, "bara"); + return presConversion.getValue(returnUnit); + } + if (returnParameter == "TVP") { + neqsim.util.unit.PressureUnit presConversion = + new neqsim.util.unit.PressureUnit(getValue("TVP"), "bara"); + return presConversion.getValue(returnUnit); + } else { + return RVP; + } } /** {@inheritDoc} */ @Override public double getValue(String returnParameter) { - return RVP; + if (returnParameter.equals("RVP")) { + switch (methodRVP) { + case "RVP_ASTM_D6377": + return RVP_ASTM_D6377; + case "RVP_ASTM_D323_73_79": + return RVP_ASTM_D323_73_79; + case "VPCR4": + return VPCR4; + case "RVP_ASTM_D323_82": + return RVP_ASTM_D323_82; + case "VPCR4_no_water": + return VPCR4_no_water; + default: + return VPCR4; + } + } else if (returnParameter.equals("TVP")) { + return TVP; + } else { + logger.error("returnParameter not supported.. " + returnParameter); + return 0.0; + } + } + + /** + *

+ * setReferenceTemperature. + *

+ * + * @param refTemp a double + * @param refTempUnit a {@link java.lang.String} object + */ + public void setReferenceTemperature(double refTemp, String refTempUnit) { + neqsim.util.unit.TemperatureUnit tempConversion = + new neqsim.util.unit.TemperatureUnit(refTemp, refTempUnit); + referenceTemperature = tempConversion.getValue(refTemp, refTempUnit, "C"); } /** @@ -90,10 +208,14 @@ public static void main(String args[]) { testSystem.addComponent("ethane", 0.006538); testSystem.addComponent("propane", 0.006538); testSystem.addComponent("n-pentane", 0.545); + testSystem.addComponent("water", 0.00545); testSystem.setMixingRule(2); testSystem.init(0); Standard_ASTM_D6377 standard = new Standard_ASTM_D6377(testSystem); standard.calculate(); System.out.println("RVP " + standard.getValue("RVP", "bara")); + standard.setMethodRVP("RVP_ASTM_D323_73_79"); + standard.calculate(); + System.out.println("RVP_ASTM_D323_73_79 " + standard.getValue("RVP", "bara")); } } diff --git a/src/main/java/neqsim/standards/salesContract/BaseContract.java b/src/main/java/neqsim/standards/salesContract/BaseContract.java index 564a9f9431..f6c822c6c4 100644 --- a/src/main/java/neqsim/standards/salesContract/BaseContract.java +++ b/src/main/java/neqsim/standards/salesContract/BaseContract.java @@ -3,17 +3,22 @@ * * Created on 15. juni 2004, 21:43 */ + package neqsim.standards.salesContract; import java.awt.BorderLayout; import java.awt.Container; +import java.util.ArrayList; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.standards.StandardInterface; import neqsim.standards.gasQuality.BestPracticeHydrocarbonDewPoint; import neqsim.standards.gasQuality.Draft_ISO18453; import neqsim.standards.gasQuality.GasChromotograpyhBase; +import neqsim.standards.gasQuality.Standard_ISO6974; import neqsim.standards.gasQuality.Standard_ISO6976; import neqsim.standards.gasQuality.SulfurSpecificationMethod; import neqsim.standards.gasQuality.UKspecifications_ICF_SI; @@ -28,270 +33,257 @@ * @version $Id: $Id */ public class BaseContract implements ContractInterface { + static Logger logger = LogManager.getLogger(BaseContract.class); - private String[][] resultTable = new String[50][9]; - double waterDewPointTemperature = -12.0; - double waterDewPointSpecPressure = 70.0; - private String contractName = ""; - ContractSpecification[] spesifications = new ContractSpecification[50]; - private int specificationsNumber = 0; + private String[][] resultTable = new String[50][9]; + double waterDewPointTemperature = -12.0; + double waterDewPointSpecPressure = 70.0; + private String contractName = ""; + ArrayList spesifications = new ArrayList(); + private int specificationsNumber = 0; - public BaseContract() {} + /** + *

+ * Constructor for BaseContract. + *

+ */ + public BaseContract() {} - /** - *

- * Constructor for BaseContract. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public BaseContract(SystemInterface system) { - StandardInterface standard = new Draft_ISO18453(system); - spesifications[0] = new ContractSpecification("", "", "", "water dew point specification", - standard, 0, 0, "degC", 0, 0, 0, ""); - } + /** + *

+ * Constructor for BaseContract. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public BaseContract(SystemInterface system) { + StandardInterface standard = new Draft_ISO18453(system); + spesifications.add(new ContractSpecification("", "", "", "water dew point specification", + standard, 0, 0, "degC", 0, 0, 0, "")); + } - /** - *

- * Constructor for BaseContract. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param terminal a {@link java.lang.String} object - * @param country a {@link java.lang.String} object - */ - public BaseContract(SystemInterface system, String terminal, String country) { - int numb = 0; - this.setContractName(contractName); - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - dataSet = - database.getResultSet("SELECT * FROM gascontractspecifications WHERE TERMINAL='" - + terminal + "'" + " AND COUNTRY='" + country + "'"); - while (dataSet.next()) { - numb++; - StandardInterface method = getMethod(system, dataSet.getString("METHOD")); - spesifications[numb - 1] = getSpecification(method, dataSet.getString("NAME"), - dataSet.getString("SPECIFICATION"), dataSet.getString("COUNTRY"), - dataSet.getString("TERMINAL"), - Double.parseDouble(dataSet.getString("MINVALUE")), - Double.parseDouble(dataSet.getString("MAXVALUE")), - dataSet.getString("UNIT"), - Double.parseDouble(dataSet.getString("ReferenceTmeasurement")), - Double.parseDouble(dataSet.getString("ReferenceTcombustion")), - Double.parseDouble(dataSet.getString("ReferencePbar")), - dataSet.getString("Comments")); - System.out.println("specification added..." + numb); - } - } catch (Exception e) { - System.out.println("error in comp"); - e.printStackTrace(); - } finally { - specificationsNumber = numb; - try { - if (dataSet != null) { - dataSet.close(); - } - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - System.out.println("error closing database....."); - e.printStackTrace(); - } - } + /** + *

+ * Constructor for BaseContract. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param terminal a {@link java.lang.String} object + * @param country a {@link java.lang.String} object + */ + public BaseContract(SystemInterface system, String terminal, String country) { + int numb = 0; + this.setContractName(contractName); + try ( + neqsim.util.database.NeqSimContractDataBase database = + new neqsim.util.database.NeqSimContractDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet("SELECT * FROM gascontractspecifications WHERE TERMINAL='" + + terminal + "'" + " AND COUNTRY='" + country + "'")) { + while (dataSet.next()) { + numb++; + StandardInterface method = getMethod(system, dataSet.getString("METHOD")); + double referencePressure = Double.parseDouble(dataSet.getString("ReferencePbar")); + method.setReferencePressure(referencePressure); + spesifications.add(getSpecification(method, dataSet.getString("NAME"), + dataSet.getString("SPECIFICATION"), dataSet.getString("COUNTRY"), + dataSet.getString("TERMINAL"), Double.parseDouble(dataSet.getString("MINVALUE")), + Double.parseDouble(dataSet.getString("MAXVALUE")), dataSet.getString("UNIT"), + Double.parseDouble(dataSet.getString("ReferenceTdegC")), + Double.parseDouble(dataSet.getString("ReferenceTdegC")), referencePressure, ""));// dataSet.getString("Comments")); + // System.out.println(dataSet.getString("Comments")); + // System.out.println("specification added..." + numb); + } + } catch (Exception ex) { + logger.error("error in comp", ex); + } finally { + specificationsNumber = spesifications.size(); } + } - /** - *

- * getMethod. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param methodName a {@link java.lang.String} object - * @return a {@link neqsim.standards.StandardInterface} object - */ - public StandardInterface getMethod(SystemInterface system, String methodName) { - if (methodName.equals("ISO18453")) { - return new Draft_ISO18453(system); - } - if (methodName.equals("CO2")) { - return new GasChromotograpyhBase(system, "CO2"); - } - if (methodName.equals("H2S")) { - return new GasChromotograpyhBase(system, "H2S"); - } - if (methodName.equals("Total sulphur")) { - return new GasChromotograpyhBase(system, "H2S"); - } - if (methodName.equals("oxygen")) { - return new GasChromotograpyhBase(system, "oxygen"); - } - if (methodName.equals("ISO6976")) { - return new Standard_ISO6976(system); - } - if (methodName.equals("SulfurSpecificationMethod")) { - return new SulfurSpecificationMethod(system); - } - if (methodName.equals("BestPracticeHydrocarbonDewPoint")) { - return new BestPracticeHydrocarbonDewPoint(system); - } - if (methodName.equals("UKspecifications")) { - return new UKspecifications_ICF_SI(system); - } - return null; + /** + *

+ * getMethod. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param methodName a {@link java.lang.String} object + * @return a {@link neqsim.standards.StandardInterface} object + */ + public StandardInterface getMethod(SystemInterface system, String methodName) { + if (methodName.equals("ISO18453")) { + Draft_ISO18453 standard = new Draft_ISO18453(system); + standard.setReferencePressure(specificationsNumber); + return new Draft_ISO18453(system); } - - /** - *

- * getSpecification. - *

- * - * @param method a {@link neqsim.standards.StandardInterface} object - * @param specificationName a {@link java.lang.String} object - * @param specificationName2 a {@link java.lang.String} object - * @param country a {@link java.lang.String} object - * @param terminal a {@link java.lang.String} object - * @param minValue a double - * @param maxValue a double - * @param unit a {@link java.lang.String} object - * @param referenceTemperature a double - * @param referenceTemperatureComb a double - * @param referencePressure a double - * @param comments a {@link java.lang.String} object - * @return a {@link neqsim.standards.salesContract.ContractSpecification} object - */ - public ContractSpecification getSpecification(StandardInterface method, - String specificationName, String specificationName2, String country, String terminal, - double minValue, double maxValue, String unit, double referenceTemperature, - double referenceTemperatureComb, double referencePressure, String comments) { - return new ContractSpecification(specificationName, specificationName2, country, terminal, - method, minValue, maxValue, unit, referenceTemperature, referenceTemperatureComb, - referencePressure, comments); + if (methodName.equals("ISO6974")) { + return new Standard_ISO6974(system); + } + if (methodName.equals("Total sulphur")) { + return new GasChromotograpyhBase(system); + } + if (methodName.equals("oxygen")) { + return new Standard_ISO6974(system); + } + if (methodName.equals("ISO6976")) { + return new Standard_ISO6976(system); + } + if (methodName.equals("SulfurSpecificationMethod")) { + return new SulfurSpecificationMethod(system); } + if (methodName.equals("BestPracticeHydrocarbonDewPoint")) { + return new BestPracticeHydrocarbonDewPoint(system); + } + if (methodName.equals("UKspecifications")) { + return new UKspecifications_ICF_SI(system); + } + return null; + } + + /** + *

+ * getSpecification. + *

+ * + * @param method a {@link neqsim.standards.StandardInterface} object + * @param specificationName a {@link java.lang.String} object + * @param specificationName2 a {@link java.lang.String} object + * @param country a {@link java.lang.String} object + * @param terminal a {@link java.lang.String} object + * @param minValue a double + * @param maxValue a double + * @param unit a {@link java.lang.String} object + * @param referenceTemperature a double + * @param referenceTemperatureComb a double + * @param referencePressure a double + * @param comments a {@link java.lang.String} object + * @return a {@link neqsim.standards.salesContract.ContractSpecification} object + */ + public ContractSpecification getSpecification(StandardInterface method, String specificationName, + String specificationName2, String country, String terminal, double minValue, double maxValue, + String unit, double referenceTemperature, double referenceTemperatureComb, + double referencePressure, String comments) { + return new ContractSpecification(specificationName, specificationName2, country, terminal, + method, minValue, maxValue, unit, referenceTemperature, referenceTemperatureComb, + referencePressure, comments); + } - /** {@inheritDoc} */ - @Override - public void runCheck() { - int j = 0; - resultTable = new String[specificationsNumber][12]; - for (int i = 0; i < specificationsNumber; i++) { - if (!(spesifications[i] == null)) { - try { - spesifications[i].getStandard().calculate(); - } catch (Exception e) { - e.printStackTrace(); - } - spesifications[i].getStandard().setSalesContract(this); - System.out.println("Type: " + spesifications[i].getDescription() + " Standard " - + spesifications[i].getStandard().getName() + " : " - + spesifications[i].getStandard().isOnSpec()); - getResultTable()[j][0] = spesifications[i].getDescription(); - getResultTable()[j][1] = Double.toString(spesifications[i].getStandard() - .getValue(spesifications[i].getName(), spesifications[i].getUnit())); - getResultTable()[j][2] = spesifications[i].getCountry(); - getResultTable()[j][3] = spesifications[i].getTerminal(); - getResultTable()[j][4] = Double.toString(spesifications[i].getMinValue()); - getResultTable()[j][5] = Double.toString(spesifications[i].getMaxValue()); - getResultTable()[j][6] = spesifications[i].getUnit(); - getResultTable()[j][7] = spesifications[i].getStandard().getName(); - getResultTable()[j][8] = - Double.toString(spesifications[i].getReferenceTemperatureMeasurement()); - getResultTable()[j][9] = - Double.toString(spesifications[i].getReferenceTemperatureCombustion()); - getResultTable()[j][10] = Double.toString(spesifications[i].getReferencePressure()); - getResultTable()[j][11] = spesifications[i].getComments(); - j++; - } + /** {@inheritDoc} */ + @Override + public void runCheck() { + int j = 0; + resultTable = new String[specificationsNumber][12]; + for (ContractSpecification spesification : spesifications) + if (!(spesification == null)) { + try { + spesification.getStandard().calculate(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - } + spesification.getStandard().setSalesContract(this); + System.out.println("Type: " + spesification.getSpecification() + " Standard " + + spesification.getStandard().getName() + " : " + + spesification.getStandard().isOnSpec()); + getResultTable()[j][0] = spesification.getSpecification(); + getResultTable()[j][1] = Double.toString(spesification.getStandard() + .getValue(spesification.getSpecification(), spesification.getUnit())); + getResultTable()[j][2] = spesification.getCountry(); + getResultTable()[j][3] = spesification.getTerminal(); + getResultTable()[j][4] = Double.toString(spesification.getMinValue()); + getResultTable()[j][5] = Double.toString(spesification.getMaxValue()); + getResultTable()[j][6] = spesification.getUnit(); + getResultTable()[j][7] = spesification.getStandard().getName(); + getResultTable()[j][8] = + Double.toString(spesification.getReferenceTemperatureMeasurement()); + getResultTable()[j][9] = Double.toString(spesification.getReferenceTemperatureCombustion()); + getResultTable()[j][10] = Double.toString(spesification.getReferencePressure()); + getResultTable()[j][11] = spesification.getComments(); + j++; + } + } - /** {@inheritDoc} */ - @Override - public void display() { - JFrame dialog = new JFrame( - "Specification check against sales specifications: " + getContractName()); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new BorderLayout()); + /** {@inheritDoc} */ + @Override + public void display() { + JFrame dialog = + new JFrame("Specification check against sales specifications: " + getContractName()); + Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new BorderLayout()); - String[] names = {"Specification", "Value", "Country", "Terminal", "Minimum", "Maximum", - "Unit", "Method", "Reference temperature measurement", - "Reference temperature of combustion", "Reference pressure", "Comments"}; - JTable Jtab = new JTable(getResultTable(), names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); - dialog.pack(); - dialog.setVisible(true); - } + String[] names = {"Specification", "Value", "Country", "Terminal", "Minimum", "Maximum", "Unit", + "Method", "Reference temperature measurement", "Reference temperature of combustion", + "Reference pressure", "Comments"}; + JTable Jtab = new JTable(getResultTable(), names); + JScrollPane scrollpane = new JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + dialog.pack(); + dialog.setVisible(true); + } - /** {@inheritDoc} */ - @Override - public void setContract(String name) { - waterDewPointTemperature = -12.0; - waterDewPointSpecPressure = 70.0; - } + /** {@inheritDoc} */ + @Override + public void setContract(String name) { + waterDewPointTemperature = -12.0; + waterDewPointSpecPressure = 70.0; + } - /** {@inheritDoc} */ - @Override - public double getWaterDewPointTemperature() { - return waterDewPointTemperature; - } + /** {@inheritDoc} */ + @Override + public double getWaterDewPointTemperature() { + return waterDewPointTemperature; + } - /** {@inheritDoc} */ - @Override - public void setWaterDewPointTemperature(double waterDewPointTemperature) { - this.waterDewPointTemperature = waterDewPointTemperature; - } + /** {@inheritDoc} */ + @Override + public void setWaterDewPointTemperature(double waterDewPointTemperature) { + this.waterDewPointTemperature = waterDewPointTemperature; + } - /** {@inheritDoc} */ - @Override - public double getWaterDewPointSpecPressure() { - return waterDewPointSpecPressure; - } + /** {@inheritDoc} */ + @Override + public double getWaterDewPointSpecPressure() { + return waterDewPointSpecPressure; + } - /** {@inheritDoc} */ - @Override - public void setWaterDewPointSpecPressure(double waterDewPointSpecPressure) { - this.waterDewPointSpecPressure = waterDewPointSpecPressure; - } + /** {@inheritDoc} */ + @Override + public void setWaterDewPointSpecPressure(double waterDewPointSpecPressure) { + this.waterDewPointSpecPressure = waterDewPointSpecPressure; + } - /** {@inheritDoc} */ - @Override - public int getSpecificationsNumber() { - return specificationsNumber; - } + /** {@inheritDoc} */ + @Override + public int getSpecificationsNumber() { + return specificationsNumber; + } - /** {@inheritDoc} */ - @Override - public void setSpecificationsNumber(int specificationsNumber) { - this.specificationsNumber = specificationsNumber; - } + /** {@inheritDoc} */ + @Override + public void setSpecificationsNumber(int specificationsNumber) { + this.specificationsNumber = specificationsNumber; + } - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return resultTable; - } + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return resultTable; + } - /** {@inheritDoc} */ - @Override - public void setResultTable(String[][] resultTable) { - this.resultTable = resultTable; - } + /** {@inheritDoc} */ + @Override + public void setResultTable(String[][] resultTable) { + this.resultTable = resultTable; + } - /** {@inheritDoc} */ - @Override - public String getContractName() { - return contractName; - } + /** {@inheritDoc} */ + @Override + public String getContractName() { + return contractName; + } - /** {@inheritDoc} */ - @Override - public void setContractName(String contractName) { - this.contractName = contractName; - } + /** {@inheritDoc} */ + @Override + public void setContractName(String contractName) { + this.contractName = contractName; + } } diff --git a/src/main/java/neqsim/standards/salesContract/ContractInterface.java b/src/main/java/neqsim/standards/salesContract/ContractInterface.java index 89c3308283..fb4bbcb159 100644 --- a/src/main/java/neqsim/standards/salesContract/ContractInterface.java +++ b/src/main/java/neqsim/standards/salesContract/ContractInterface.java @@ -3,6 +3,7 @@ * * Created on 15. juni 2004, 21:43 */ + package neqsim.standards.salesContract; /** @@ -14,116 +15,123 @@ * @version $Id: $Id */ public interface ContractInterface { - /** - *

- * setContract. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setContract(String name); + /** + *

+ * setContract. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setContract(String name); + + /** + *

+ * getWaterDewPointTemperature. + *

+ * + * @return a double + */ + public double getWaterDewPointTemperature(); - /** - *

- * getWaterDewPointTemperature. - *

- * - * @return a double - */ - public double getWaterDewPointTemperature(); + /** + *

+ * setWaterDewPointTemperature. + *

+ * + * @param waterDewPointTemperature a double + */ + public void setWaterDewPointTemperature(double waterDewPointTemperature); - /** - *

- * setWaterDewPointTemperature. - *

- * - * @param waterDewPointTemperature a double - */ - public void setWaterDewPointTemperature(double waterDewPointTemperature); + /** + *

+ * getWaterDewPointSpecPressure. + *

+ * + * @return a double + */ + public double getWaterDewPointSpecPressure(); - /** - *

- * getWaterDewPointSpecPressure. - *

- * - * @return a double - */ - public double getWaterDewPointSpecPressure(); + /** + *

+ * setWaterDewPointSpecPressure. + *

+ * + * @param waterDewPointSpecPressure a double + */ + public void setWaterDewPointSpecPressure(double waterDewPointSpecPressure); - /** - *

- * setWaterDewPointSpecPressure. - *

- * - * @param waterDewPointSpecPressure a double - */ - public void setWaterDewPointSpecPressure(double waterDewPointSpecPressure); + /** + *

+ * runCheck. + *

+ */ + public void runCheck(); - /** - *

- * runCheck. - *

- */ - public void runCheck(); + /** + *

+ * getResultTable. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[][] getResultTable(); - /** - *

- * getResultTable. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[][] getResultTable(); + /** + *

+ * setResultTable. + *

+ * + * @param resultTable an array of {@link java.lang.String} objects + */ + public void setResultTable(String[][] resultTable); - /** - *

- * setResultTable. - *

- * - * @param resultTable an array of {@link java.lang.String} objects - */ - public void setResultTable(String[][] resultTable); + /** + *

+ * getSpecificationsNumber. + *

+ * + * @return a int + */ + public int getSpecificationsNumber(); - /** - *

- * getSpecificationsNumber. - *

- * - * @return a int - */ - public int getSpecificationsNumber(); + /** + *

+ * setSpecificationsNumber. + *

+ * + * @param specificationsNumber a int + */ + public void setSpecificationsNumber(int specificationsNumber); - /** - *

- * setSpecificationsNumber. - *

- * - * @param specificationsNumber a int - */ - public void setSpecificationsNumber(int specificationsNumber); + /** + *

+ * display. + *

+ */ + public void display(); - /** - *

- * display. - *

- */ - public void display(); + /** + *

+ * getContractName. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getContractName(); - /** - *

- * getContractName. - *

- * - * @return a {@link java.lang.String} object - */ - public String getContractName(); + /** + *

+ * setContractName. + *

+ * + * @param contractName a {@link java.lang.String} object + */ + public void setContractName(String contractName); - /** - *

- * setContractName. - *

- * - * @param contractName a {@link java.lang.String} object - */ - public void setContractName(String contractName); + /** + * Prints the contract. + */ + public default void prettyPrint() { + neqsim.thermo.util.readwrite.TablePrinter.printTable(getResultTable()); + } } diff --git a/src/main/java/neqsim/standards/salesContract/ContractSpecification.java b/src/main/java/neqsim/standards/salesContract/ContractSpecification.java index 3251741be9..d351e471b8 100644 --- a/src/main/java/neqsim/standards/salesContract/ContractSpecification.java +++ b/src/main/java/neqsim/standards/salesContract/ContractSpecification.java @@ -3,6 +3,7 @@ * * Created on 15. juni 2004, 22:59 */ + package neqsim.standards.salesContract; import neqsim.standards.StandardInterface; @@ -19,15 +20,22 @@ public class ContractSpecification extends NamedBaseClass { private static final long serialVersionUID = 1L; StandardInterface standard = null; - String description = "dew point temperature specification"; + String specification = "dew point temperature specification"; private String country = ""; private String terminal = ""; private double minValue = 0; private double maxValue = 0; - private double referenceTemperatureMeasurement = 0, referenceTemperatureCombustion = 0; + private double referenceTemperatureMeasurement = 0; + private double referenceTemperatureCombustion = 0; private double referencePressure = 0; - private String unit = "", comments = ""; + private String unit = ""; + private String comments = ""; + /** + *

+ * Constructor for ContractSpecification. + *

+ */ @Deprecated public ContractSpecification() { super("ContractSpecification"); @@ -39,7 +47,7 @@ public ContractSpecification() { *

* * @param name a {@link java.lang.String} object - * @param description a {@link java.lang.String} object + * @param specification a {@link java.lang.String} object * @param country a {@link java.lang.String} object * @param terminal a {@link java.lang.String} object * @param standard a {@link neqsim.standards.StandardInterface} object @@ -51,14 +59,14 @@ public ContractSpecification() { * @param referencePressure a double * @param comments a {@link java.lang.String} object */ - public ContractSpecification(String name, String description, String country, String terminal, + public ContractSpecification(String name, String specification, String country, String terminal, StandardInterface standard, double minValue, double maxValue, String unit, double referenceTemperature, double referenceTemperatureComb, double referencePressure, String comments) { super(name); this.country = country; this.terminal = terminal; - this.description = description; + this.specification = specification; this.standard = standard; this.unit = unit; this.setReferenceTemperatureMeasurement(referenceTemperature); @@ -88,21 +96,21 @@ public void setStandard(neqsim.standards.StandardInterface standard) { } /** - * Getter for property description. + * Getter for property specification. * - * @return Value of property description. + * @return Value of property specification. */ - public java.lang.String getDescription() { - return description; + public java.lang.String getSpecification() { + return specification; } /** - * Setter for property description. + * Setter for property specification. * - * @param description New value of property description. + * @param specification New value of property description. */ - public void setDescription(java.lang.String description) { - this.description = description; + public void setSpecification(java.lang.String specification) { + this.specification = specification; } /** @@ -196,7 +204,7 @@ public void setReferenceTemperatureMeasurement(double referenceTemperature) { * Getter for the field referencePressure. *

* - * @return a double + * @return Reference pressure in bara */ public double getReferencePressure() { return referencePressure; @@ -207,7 +215,7 @@ public double getReferencePressure() { * Setter for the field referencePressure. *

* - * @param referencePressure a double + * @param referencePressure Reference pressure to set in in bara */ public void setReferencePressure(double referencePressure) { this.referencePressure = referencePressure; diff --git a/src/main/java/neqsim/statistics/dataAnalysis/dataSmoothing/DataSmoothor.java b/src/main/java/neqsim/statistics/dataAnalysis/dataSmoothing/DataSmoothor.java deleted file mode 100644 index 25b7e98642..0000000000 --- a/src/main/java/neqsim/statistics/dataAnalysis/dataSmoothing/DataSmoothor.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * DataSmoothor.java - * - * Created on 31. januar 2001, 21:27 - */ -package neqsim.statistics.dataAnalysis.dataSmoothing; - -import Jama.Matrix; - -/** - *

- * DataSmoothor class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class DataSmoothor { - double[] nonSmoothedNumbers, smoothedNumbers, cCoef; - int nl = 0, nr = 0, ld = 0, m = 0, mm = 0, imj = 0, kk = 0; - int[] index; - double[][] a; - double[] b; - double sum = 0, fac = 0; - - /** - *

- * Constructor for DataSmoothor. - *

- */ - public DataSmoothor() {} - - /** - *

- * Constructor for DataSmoothor. - *

- * - * @param nonSmoothedNumbers an array of {@link double} objects - * @param nl a int - * @param nr a int - * @param ld a int - * @param m a int - */ - public DataSmoothor(double[] nonSmoothedNumbers, int nl, int nr, int ld, int m) { - this.nonSmoothedNumbers = new double[nonSmoothedNumbers.length]; - this.smoothedNumbers = new double[nonSmoothedNumbers.length]; - this.cCoef = new double[nonSmoothedNumbers.length]; - this.nonSmoothedNumbers = nonSmoothedNumbers; - System.arraycopy(nonSmoothedNumbers, 0, smoothedNumbers, 0, nonSmoothedNumbers.length); - this.nl = nl; - this.nr = nr; - this.ld = ld; - this.m = m; - } - - /** - *

- * runSmoothing. - *

- */ - public void runSmoothing() { - findCoefs(); - setSmoothedNumbers(); - } - - /** - *

- * findCoefs. - *

- */ - public void findCoefs() { - if (nonSmoothedNumbers.length < (nl + nr + 1) || nl < 0 || nr < 0 || ld > m - || nl + nr < m) { - System.err.println("Wrong input to DataSmoothor!"); - } - - index = new int[m + 1]; - a = new double[m + 1][m + 1]; - b = new double[m + 1]; - - for (int i = 0; i < m + 1; i++) { - index[i] = 1; - b[i] = 1.0; - for (int j = 0; j < m + 1; j++) { - a[j][j] = 1.0; - } - } - - for (int ipj = 0; ipj <= (m << 1); ipj++) { - sum = !(ipj == 0) ? 0.0 : 1.0; - for (int k = 1; k <= nr; k++) { - sum += Math.pow(k, ipj); - } - for (int k = 1; k <= nl; k++) { - sum += Math.pow(-k, ipj); - } - mm = Math.min(ipj, 2 * m - ipj); - for (imj = -mm; imj <= mm; imj += 2) { - a[(ipj + imj) / 2][(ipj - imj) / 2] = sum; - } - } - - for (int j = 0; j < m + 1; j++) { - b[j] = 0.0; - } - b[ld] = 1.0; - - Matrix amatrix = new Matrix(a); - // amatrix.print(10,2); - Matrix bmatrix = new Matrix(b, 1); - bmatrix = amatrix.solve(bmatrix.transpose()); - // bmatrix.print(10,2); - b = bmatrix.transpose().getArray()[0]; - - for (int kk = 0; kk < nonSmoothedNumbers.length; kk++) { - cCoef[kk] = 0.0; - } - - for (int k = -nl; k <= nr; k++) { - sum = b[0]; - fac = 1.0; - for (mm = 0; mm < m; mm++) { - sum += b[mm + 1] * (fac *= k); - } - kk = ((nonSmoothedNumbers.length - k) % nonSmoothedNumbers.length); - cCoef[kk] = sum; - } - // new Matrix(cCoef,1).print(10,2); - } - - /** - *

- * Setter for the field smoothedNumbers. - *

- */ - public void setSmoothedNumbers() { - for (int i = nl; i < nonSmoothedNumbers.length - nr; i++) { - smoothedNumbers[i] = 0; - smoothedNumbers[i] = cCoef[0] * nonSmoothedNumbers[i]; - for (int j = 0; j < nl; j++) { - smoothedNumbers[i] += - cCoef[nonSmoothedNumbers.length - 1 - j] * nonSmoothedNumbers[i - j - 1]; - } - for (int j = 0; j < nr; j++) { - smoothedNumbers[i] += cCoef[j + 1] * nonSmoothedNumbers[i + j - 1]; - } - } - } - - /** - *

- * Getter for the field smoothedNumbers. - *

- * - * @return an array of {@link double} objects - */ - public double[] getSmoothedNumbers() { - return smoothedNumbers; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - double[] numbers = {10, 11, 12, 13, 14, 15, 15.5, 15, 19, 14, 14, 13, 12, 12, 11, 10, 9, 8}; - DataSmoothor test = new DataSmoothor(numbers, 3, 3, 0, 4); - Matrix data = new Matrix(test.getSmoothedNumbers(), 1); - data.print(10, 2); - test.runSmoothing(); - data = new Matrix(test.getSmoothedNumbers(), 1); - data.print(10, 2); - } -} diff --git a/src/main/java/neqsim/statistics/dataanalysis/datasmoothing/DataSmoother.java b/src/main/java/neqsim/statistics/dataanalysis/datasmoothing/DataSmoother.java new file mode 100644 index 0000000000..3923a9ab25 --- /dev/null +++ b/src/main/java/neqsim/statistics/dataanalysis/datasmoothing/DataSmoother.java @@ -0,0 +1,162 @@ +/* + * DataSmoother.java + * + * Created on 31. januar 2001, 21:27 + */ + +package neqsim.statistics.dataanalysis.datasmoothing; + +import Jama.Matrix; + +/** + *

+ * DataSmoothor class. + *

+ * + * @author Even Solbraa + * @version $Id: $Id + */ +public class DataSmoother { + double[] nonSmoothedNumbers; + double[] smoothedNumbers; + double[] cCoef; + int nl = 0; + int nr = 0; + int ld = 0; + int m = 0; + int mm = 0; + int imj = 0; + int kk = 0; + int[] index; + double[][] a; + double[] b; + double sum = 0; + double fac = 0; + + /** + *

+ * Constructor for DataSmoothor. + *

+ * + * @param nonSmoothedNumbers an array of type double + * @param nl a int + * @param nr a int + * @param ld a int + * @param m a int + */ + public DataSmoother(double[] nonSmoothedNumbers, int nl, int nr, int ld, int m) { + this.nonSmoothedNumbers = new double[nonSmoothedNumbers.length]; + this.smoothedNumbers = new double[nonSmoothedNumbers.length]; + this.cCoef = new double[nonSmoothedNumbers.length]; + this.nonSmoothedNumbers = nonSmoothedNumbers; + System.arraycopy(nonSmoothedNumbers, 0, smoothedNumbers, 0, nonSmoothedNumbers.length); + this.nl = nl; + this.nr = nr; + this.ld = ld; + this.m = m; + } + + /** + *

+ * runSmoothing. + *

+ */ + public void runSmoothing() { + findCoefs(); + setSmoothedNumbers(); + } + + /** + *

+ * findCoefs. + *

+ */ + public void findCoefs() { + if (nonSmoothedNumbers.length < (nl + nr + 1) || nl < 0 || nr < 0 || ld > m || nl + nr < m) { + System.err.println("Wrong input to DataSmoothor!"); + } + + index = new int[m + 1]; + a = new double[m + 1][m + 1]; + b = new double[m + 1]; + + for (int i = 0; i < m + 1; i++) { + index[i] = 1; + b[i] = 1.0; + for (int j = 0; j < m + 1; j++) { + a[j][j] = 1.0; + } + } + + for (int ipj = 0; ipj <= (m << 1); ipj++) { + sum = !(ipj == 0) ? 0.0 : 1.0; + for (int k = 1; k <= nr; k++) { + sum += Math.pow(k, ipj); + } + for (int k = 1; k <= nl; k++) { + sum += Math.pow(-k, ipj); + } + mm = Math.min(ipj, 2 * m - ipj); + for (imj = -mm; imj <= mm; imj += 2) { + a[(ipj + imj) / 2][(ipj - imj) / 2] = sum; + } + } + + for (int j = 0; j < m + 1; j++) { + b[j] = 0.0; + } + b[ld] = 1.0; + + Matrix amatrix = new Matrix(a); + // amatrix.print(10,2); + Matrix bmatrix = new Matrix(b, 1); + bmatrix = amatrix.solve(bmatrix.transpose()); + // bmatrix.print(10,2); + b = bmatrix.transpose().getArray()[0]; + + for (int kk = 0; kk < nonSmoothedNumbers.length; kk++) { + cCoef[kk] = 0.0; + } + + for (int k = -nl; k <= nr; k++) { + sum = b[0]; + fac = 1.0; + for (mm = 0; mm < m; mm++) { + sum += b[mm + 1] * (fac *= k); + } + kk = ((nonSmoothedNumbers.length - k) % nonSmoothedNumbers.length); + cCoef[kk] = sum; + } + // new Matrix(cCoef,1).print(10,2); + } + + /** + *

+ * Setter for the field smoothedNumbers. + *

+ */ + public void setSmoothedNumbers() { + for (int i = nl; i < nonSmoothedNumbers.length - nr; i++) { + smoothedNumbers[i] = 0; + smoothedNumbers[i] = cCoef[0] * nonSmoothedNumbers[i]; + for (int j = 0; j < nl; j++) { + smoothedNumbers[i] += + cCoef[nonSmoothedNumbers.length - 1 - j] * nonSmoothedNumbers[i - j - 1]; + } + for (int j = 0; j < nr; j++) { + smoothedNumbers[i] += cCoef[j + 1] * nonSmoothedNumbers[i + j - 1]; + } + } + } + + /** + *

+ * Getter for the field smoothedNumbers. + *

+ * + * @return an array of type double + */ + public double[] getSmoothedNumbers() { + return smoothedNumbers; + } +} diff --git a/src/main/java/neqsim/statistics/experimentalEquipmentData/ExperimentalEquipmentData.java b/src/main/java/neqsim/statistics/experimentalEquipmentData/ExperimentalEquipmentData.java index f1d3defe7a..bd3ae85011 100644 --- a/src/main/java/neqsim/statistics/experimentalEquipmentData/ExperimentalEquipmentData.java +++ b/src/main/java/neqsim/statistics/experimentalEquipmentData/ExperimentalEquipmentData.java @@ -3,6 +3,7 @@ * * Created on 9. februar 2001, 10:00 */ + package neqsim.statistics.experimentalEquipmentData; /** @@ -14,14 +15,14 @@ * @version $Id: $Id */ public class ExperimentalEquipmentData { - protected double diameter = 0, length = 0; - protected double volume = 0; - protected double diameterUncertaty = 0, lengthUncertanty = 0; + protected double diameter = 0, length = 0; + protected double volume = 0; + protected double diameterUncertaty = 0, lengthUncertanty = 0; - /** - *

- * Constructor for ExperimentalEquipmentData. - *

- */ - public ExperimentalEquipmentData() {} + /** + *

+ * Constructor for ExperimentalEquipmentData. + *

+ */ + public ExperimentalEquipmentData() {} } diff --git a/src/main/java/neqsim/statistics/experimentalEquipmentData/wettedWallColumnData/WettedWallColumnData.java b/src/main/java/neqsim/statistics/experimentalEquipmentData/wettedWallColumnData/WettedWallColumnData.java index aa823792ea..f65a8421ee 100644 --- a/src/main/java/neqsim/statistics/experimentalEquipmentData/wettedWallColumnData/WettedWallColumnData.java +++ b/src/main/java/neqsim/statistics/experimentalEquipmentData/wettedWallColumnData/WettedWallColumnData.java @@ -3,6 +3,7 @@ * * Created on 9. februar 2001, 10:01 */ + package neqsim.statistics.experimentalEquipmentData.wettedWallColumnData; import neqsim.statistics.experimentalEquipmentData.ExperimentalEquipmentData; @@ -16,91 +17,91 @@ * @version $Id: $Id */ public class WettedWallColumnData extends ExperimentalEquipmentData { - /** - *

- * Constructor for WettedWallColumnData. - *

- */ - public WettedWallColumnData() {} + /** + *

+ * Constructor for WettedWallColumnData. + *

+ */ + public WettedWallColumnData() {} - /** - *

- * Constructor for WettedWallColumnData. - *

- * - * @param diameter a double - * @param length a double - * @param volume a double - */ - public WettedWallColumnData(double diameter, double length, double volume) { - this.diameter = diameter; - this.length = length; - this.volume = volume; - } + /** + *

+ * Constructor for WettedWallColumnData. + *

+ * + * @param diameter a double + * @param length a double + * @param volume a double + */ + public WettedWallColumnData(double diameter, double length, double volume) { + this.diameter = diameter; + this.length = length; + this.volume = volume; + } - /** - *

- * setDiameter. - *

- * - * @param diameter a double - */ - public void setDiameter(double diameter) { - this.diameter = diameter; - } + /** + *

+ * setDiameter. + *

+ * + * @param diameter a double + */ + public void setDiameter(double diameter) { + this.diameter = diameter; + } - /** - *

- * getDiameter. - *

- * - * @return a double - */ - public double getDiameter() { - return this.diameter; - } + /** + *

+ * getDiameter. + *

+ * + * @return a double + */ + public double getDiameter() { + return this.diameter; + } - /** - *

- * setLength. - *

- * - * @param length a double - */ - public void setLength(double length) { - this.length = length; - } + /** + *

+ * setLength. + *

+ * + * @param length a double + */ + public void setLength(double length) { + this.length = length; + } - /** - *

- * getLength. - *

- * - * @return a double - */ - public double getLength() { - return this.length; - } + /** + *

+ * getLength. + *

+ * + * @return a double + */ + public double getLength() { + return this.length; + } - /** - *

- * setVolume. - *

- * - * @param volume a double - */ - public void setVolume(double volume) { - this.volume = volume; - } + /** + *

+ * setVolume. + *

+ * + * @param volume a double + */ + public void setVolume(double volume) { + this.volume = volume; + } - /** - *

- * getVolume. - *

- * - * @return a double - */ - public double getVolume() { - return this.volume; - } + /** + *

+ * getVolume. + *

+ * + * @return a double + */ + public double getVolume() { + return this.volume; + } } diff --git a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataObject.java b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataObject.java index d87d5e9e1d..690923264d 100644 --- a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataObject.java +++ b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataObject.java @@ -9,10 +9,10 @@ * @version $Id: $Id */ public class DataObject implements DataObjectInterface { - /** - *

- * Constructor for DataObject. - *

- */ - public DataObject() {} + /** + *

+ * Constructor for DataObject. + *

+ */ + public DataObject() {} } diff --git a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataObjectInterface.java b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataObjectInterface.java index e77decd65d..b83cadc5f2 100644 --- a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataObjectInterface.java +++ b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataObjectInterface.java @@ -3,6 +3,7 @@ * * Created on 1. februar 2001, 13:09 */ + package neqsim.statistics.experimentalSampleCreation.readDataFromFile; /** diff --git a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReader.java b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReader.java index 772c5244e4..a06fb2a630 100644 --- a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReader.java +++ b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReader.java @@ -3,11 +3,14 @@ * * Created on 1. februar 2001, 11:38 */ + package neqsim.statistics.experimentalSampleCreation.readDataFromFile; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.StringTokenizer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** *

@@ -18,6 +21,8 @@ * @version $Id: $Id */ public class DataReader implements DataReaderInterface { + static Logger logger = LogManager.getLogger(DataReader.class); + protected String fileName; protected ArrayList sampleObjectList = new ArrayList(); @@ -63,9 +68,8 @@ public void readData() { filepointer = file.getFilePointer(); tokenizer.nextToken(); } while (filepointer < length); - } catch (Exception e) { - String err = e.toString(); - System.out.println(err); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } @@ -74,7 +78,7 @@ public void readData() { * Getter for the field sampleObjectList. *

* - * @return a {@link java.util.ArrayList} of {@link DataObject} + * @return a {@link java.util.ArrayList} of {@link neqsim.statistics.experimentalSampleCreation.readDataFromFile.DataObject} */ public ArrayList getSampleObjectList() { return sampleObjectList; diff --git a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReaderInterface.java b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReaderInterface.java index 2e75f0c792..353fbcbcb9 100644 --- a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReaderInterface.java +++ b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/DataReaderInterface.java @@ -3,6 +3,7 @@ * * Created on 1. februar 2001, 11:38 */ + package neqsim.statistics.experimentalSampleCreation.readDataFromFile; /** @@ -14,10 +15,10 @@ * @version $Id: $Id */ public interface DataReaderInterface { - /** - *

- * readData. - *

- */ - public void readData(); + /** + *

+ * readData. + *

+ */ + public void readData(); } diff --git a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/wettedWallColumnReader/WettedWallColumnDataObject.java b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/wettedWallColumnReader/WettedWallColumnDataObject.java index 2b0cf70cde..ceba93f203 100644 --- a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/wettedWallColumnReader/WettedWallColumnDataObject.java +++ b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/wettedWallColumnReader/WettedWallColumnDataObject.java @@ -3,6 +3,7 @@ * * Created on 1. februar 2001, 12:19 */ + package neqsim.statistics.experimentalSampleCreation.readDataFromFile.wettedWallColumnReader; import java.sql.Time; @@ -17,235 +18,241 @@ * @version $Id: $Id */ public class WettedWallColumnDataObject extends DataObject { - double pressure = 0, inletGasTemperature = 0, outletGasTemperature = 0; - double inletLiquidTemperature = 0, outletLiquidTemperature = 0, columnWallTemperature = 0; - double totalGasFlow = 0, co2SupplyFlow = 0, inletLiquidFlow = 0; - Time time = null; - - /** - *

- * Constructor for WettedWallColumnDataObject. - *

- */ - public WettedWallColumnDataObject() {} - - /** - *

- * Setter for the field time. - *

- * - * @param time a {@link java.lang.String} object - */ - public void setTime(String time) { - this.time = Time.valueOf(time); - } - - /** - *

- * Getter for the field time. - *

- * - * @return a long - */ - public long getTime() { - return this.time.getTime(); - } - - /** - *

- * Setter for the field pressure. - *

- * - * @param pressure a double - */ - public void setPressure(double pressure) { - this.pressure = pressure; - } - - /** - *

- * Getter for the field pressure. - *

- * - * @return a double - */ - public double getPressure() { - return this.pressure; - } - - /** - *

- * Setter for the field inletGasTemperature. - *

- * - * @param temperature a double - */ - public void setInletGasTemperature(double temperature) { - this.inletGasTemperature = temperature; - } - - /** - *

- * Getter for the field inletGasTemperature. - *

- * - * @return a double - */ - public double getInletGasTemperature() { - return this.inletGasTemperature; - } - - /** - *

- * Setter for the field inletLiquidTemperature. - *

- * - * @param temperature a double - */ - public void setInletLiquidTemperature(double temperature) { - this.inletLiquidTemperature = temperature; - } - - /** - *

- * Getter for the field inletLiquidTemperature. - *

- * - * @return a double - */ - public double getInletLiquidTemperature() { - return this.inletLiquidTemperature; - } - - /** - *

- * Setter for the field outletGasTemperature. - *

- * - * @param temperature a double - */ - public void setOutletGasTemperature(double temperature) { - this.outletGasTemperature = temperature; - } - - /** - *

- * Getter for the field outletGasTemperature. - *

- * - * @return a double - */ - public double getOutletGasTemperature() { - return this.outletGasTemperature; - } - - /** - *

- * Setter for the field outletLiquidTemperature. - *

- * - * @param temperature a double - */ - public void setOutletLiquidTemperature(double temperature) { - this.outletLiquidTemperature = temperature; - } - - /** - *

- * Getter for the field outletLiquidTemperature. - *

- * - * @return a double - */ - public double getOutletLiquidTemperature() { - return this.outletLiquidTemperature; - } - - /** - *

- * Setter for the field columnWallTemperature. - *

- * - * @param temperature a double - */ - public void setColumnWallTemperature(double temperature) { - this.columnWallTemperature = temperature; - } - - /** - *

- * Getter for the field columnWallTemperature. - *

- * - * @return a double - */ - public double getColumnWallTemperature() { - return this.columnWallTemperature; - } - - /** - *

- * setInletTotalGasFlow. - *

- * - * @param totalGasFlow a double - */ - public void setInletTotalGasFlow(double totalGasFlow) { - this.totalGasFlow = totalGasFlow; - } - - /** - *

- * getInletTotalGasFlow. - *

- * - * @return a double - */ - public double getInletTotalGasFlow() { - return this.totalGasFlow; - } - - /** - *

- * Setter for the field co2SupplyFlow. - *

- * - * @param co2Flow a double - */ - public void setCo2SupplyFlow(double co2Flow) { - this.co2SupplyFlow = co2Flow; - } - - /** - *

- * Getter for the field co2SupplyFlow. - *

- * - * @return a double - */ - public double getCo2SupplyFlow() { - return this.co2SupplyFlow; - } - - /** - *

- * Setter for the field inletLiquidFlow. - *

- * - * @param inletLiquidFlow a double - */ - public void setInletLiquidFlow(double inletLiquidFlow) { - this.inletLiquidFlow = inletLiquidFlow; - } - - /** - *

- * Getter for the field inletLiquidFlow. - *

- * - * @return a double - */ - public double getInletLiquidFlow() { - return this.inletLiquidFlow; - } + double pressure = 0; + double inletGasTemperature = 0; + double outletGasTemperature = 0; + double inletLiquidTemperature = 0; + double outletLiquidTemperature = 0; + double columnWallTemperature = 0; + double totalGasFlow = 0; + double co2SupplyFlow = 0; + double inletLiquidFlow = 0; + Time time = null; + + /** + *

+ * Constructor for WettedWallColumnDataObject. + *

+ */ + public WettedWallColumnDataObject() {} + + /** + *

+ * Setter for the field time. + *

+ * + * @param time a {@link java.lang.String} object + */ + public void setTime(String time) { + this.time = Time.valueOf(time); + } + + /** + *

+ * Getter for the field time. + *

+ * + * @return a long + */ + public long getTime() { + return this.time.getTime(); + } + + /** + *

+ * Setter for the field pressure. + *

+ * + * @param pressure a double + */ + public void setPressure(double pressure) { + this.pressure = pressure; + } + + /** + *

+ * Getter for the field pressure. + *

+ * + * @return a double + */ + public double getPressure() { + return this.pressure; + } + + /** + *

+ * Setter for the field inletGasTemperature. + *

+ * + * @param temperature a double + */ + public void setInletGasTemperature(double temperature) { + this.inletGasTemperature = temperature; + } + + /** + *

+ * Getter for the field inletGasTemperature. + *

+ * + * @return a double + */ + public double getInletGasTemperature() { + return this.inletGasTemperature; + } + + /** + *

+ * Setter for the field inletLiquidTemperature. + *

+ * + * @param temperature a double + */ + public void setInletLiquidTemperature(double temperature) { + this.inletLiquidTemperature = temperature; + } + + /** + *

+ * Getter for the field inletLiquidTemperature. + *

+ * + * @return a double + */ + public double getInletLiquidTemperature() { + return this.inletLiquidTemperature; + } + + /** + *

+ * Setter for the field outletGasTemperature. + *

+ * + * @param temperature a double + */ + public void setOutletGasTemperature(double temperature) { + this.outletGasTemperature = temperature; + } + + /** + *

+ * Getter for the field outletGasTemperature. + *

+ * + * @return a double + */ + public double getOutletGasTemperature() { + return this.outletGasTemperature; + } + + /** + *

+ * Setter for the field outletLiquidTemperature. + *

+ * + * @param temperature a double + */ + public void setOutletLiquidTemperature(double temperature) { + this.outletLiquidTemperature = temperature; + } + + /** + *

+ * Getter for the field outletLiquidTemperature. + *

+ * + * @return a double + */ + public double getOutletLiquidTemperature() { + return this.outletLiquidTemperature; + } + + /** + *

+ * Setter for the field columnWallTemperature. + *

+ * + * @param temperature a double + */ + public void setColumnWallTemperature(double temperature) { + this.columnWallTemperature = temperature; + } + + /** + *

+ * Getter for the field columnWallTemperature. + *

+ * + * @return a double + */ + public double getColumnWallTemperature() { + return this.columnWallTemperature; + } + + /** + *

+ * setInletTotalGasFlow. + *

+ * + * @param totalGasFlow a double + */ + public void setInletTotalGasFlow(double totalGasFlow) { + this.totalGasFlow = totalGasFlow; + } + + /** + *

+ * getInletTotalGasFlow. + *

+ * + * @return a double + */ + public double getInletTotalGasFlow() { + return this.totalGasFlow; + } + + /** + *

+ * Setter for the field co2SupplyFlow. + *

+ * + * @param co2Flow a double + */ + public void setCo2SupplyFlow(double co2Flow) { + this.co2SupplyFlow = co2Flow; + } + + /** + *

+ * Getter for the field co2SupplyFlow. + *

+ * + * @return a double + */ + public double getCo2SupplyFlow() { + return this.co2SupplyFlow; + } + + /** + *

+ * Setter for the field inletLiquidFlow. + *

+ * + * @param inletLiquidFlow a double + */ + public void setInletLiquidFlow(double inletLiquidFlow) { + this.inletLiquidFlow = inletLiquidFlow; + } + + /** + *

+ * Getter for the field inletLiquidFlow. + *

+ * + * @return a double + */ + public double getInletLiquidFlow() { + return this.inletLiquidFlow; + } } diff --git a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/wettedWallColumnReader/WettedWallDataReader.java b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/wettedWallColumnReader/WettedWallDataReader.java index d4d95a6a38..6f798ab73d 100644 --- a/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/wettedWallColumnReader/WettedWallDataReader.java +++ b/src/main/java/neqsim/statistics/experimentalSampleCreation/readDataFromFile/wettedWallColumnReader/WettedWallDataReader.java @@ -3,10 +3,13 @@ * * Created on 1. februar 2001, 13:05 */ + package neqsim.statistics.experimentalSampleCreation.readDataFromFile.wettedWallColumnReader; import java.io.RandomAccessFile; import java.util.StringTokenizer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.statistics.experimentalSampleCreation.readDataFromFile.DataReader; /** @@ -18,98 +21,97 @@ * @version $Id: $Id */ public class WettedWallDataReader extends DataReader { - /** - *

- * Constructor for WettedWallDataReader. - *

- */ - public WettedWallDataReader() {} + static Logger logger = LogManager.getLogger(WettedWallDataReader.class); - /** - *

- * Constructor for WettedWallDataReader. - *

- * - * @param fileName a {@link java.lang.String} object - */ - public WettedWallDataReader(String fileName) { - super(fileName); - } + /** + *

+ * Constructor for WettedWallDataReader. + *

+ */ + public WettedWallDataReader() {} - /** {@inheritDoc} */ - @Override - public void readData() { - StringTokenizer tokenizer; - int k = 0; - String path = "c:/logdata/" + this.fileName + ".log"; - System.out.println(path); + /** + *

+ * Constructor for WettedWallDataReader. + *

+ * + * @param fileName a {@link java.lang.String} object + */ + public WettedWallDataReader(String fileName) { + super(fileName); + } - try (RandomAccessFile file = new RandomAccessFile(path, "r")) { - long filepointer = 0; - long length = file.length(); - for (int i = 0; i < 6; i++) { - file.readLine(); - } - do { - k++; - WettedWallColumnDataObject dataObject = new WettedWallColumnDataObject(); - String s = file.readLine(); - tokenizer = new StringTokenizer(s); - tokenizer.nextToken(); - dataObject.setTime(tokenizer.nextToken()); - tokenizer.nextToken(); - tokenizer.nextToken(); - dataObject.setInletLiquidTemperature(Double.parseDouble(tokenizer.nextToken())); - dataObject.setInletGasTemperature(Double.parseDouble(tokenizer.nextToken())); - tokenizer.nextToken(); // vaeske inn paa vaeskefordeler - dataObject.setOutletLiquidTemperature(Double.parseDouble(tokenizer.nextToken())); - dataObject.setColumnWallTemperature(Double.parseDouble(tokenizer.nextToken())); - dataObject.setOutletGasTemperature(Double.parseDouble(tokenizer.nextToken())); - tokenizer.nextToken(); - tokenizer.nextToken(); - tokenizer.nextToken(); - dataObject.setPressure(Double.parseDouble(tokenizer.nextToken())); - tokenizer.nextToken(); - tokenizer.nextToken(); - dataObject.setCo2SupplyFlow(Double.parseDouble(tokenizer.nextToken())); - dataObject.setInletTotalGasFlow(Double.parseDouble(tokenizer.nextToken())); - dataObject.setInletLiquidFlow(Double.parseDouble(tokenizer.nextToken())); + /** {@inheritDoc} */ + @Override + public void readData() { + StringTokenizer tokenizer; + int k = 0; + String path = "c:/logdata/" + this.fileName + ".log"; + System.out.println(path); - filepointer = file.getFilePointer(); - tokenizer.nextToken(); - sampleObjectList.add(dataObject); - } while (filepointer < length); - } catch (Exception e) { - String err = e.toString(); - System.out.println(err); - } - System.out.println("Read data from file done!"); - System.out.println(k + " datapoints imported from file"); - } + try (RandomAccessFile file = new RandomAccessFile(path, "r")) { + long filepointer = 0; + long length = file.length(); + for (int i = 0; i < 6; i++) { + file.readLine(); + } + do { + k++; + WettedWallColumnDataObject dataObject = new WettedWallColumnDataObject(); + String s = file.readLine(); + tokenizer = new StringTokenizer(s); + tokenizer.nextToken(); + dataObject.setTime(tokenizer.nextToken()); + tokenizer.nextToken(); + tokenizer.nextToken(); + dataObject.setInletLiquidTemperature(Double.parseDouble(tokenizer.nextToken())); + dataObject.setInletGasTemperature(Double.parseDouble(tokenizer.nextToken())); + tokenizer.nextToken(); // vaeske inn paa vaeskefordeler + dataObject.setOutletLiquidTemperature(Double.parseDouble(tokenizer.nextToken())); + dataObject.setColumnWallTemperature(Double.parseDouble(tokenizer.nextToken())); + dataObject.setOutletGasTemperature(Double.parseDouble(tokenizer.nextToken())); + tokenizer.nextToken(); + tokenizer.nextToken(); + tokenizer.nextToken(); + dataObject.setPressure(Double.parseDouble(tokenizer.nextToken())); + tokenizer.nextToken(); + tokenizer.nextToken(); + dataObject.setCo2SupplyFlow(Double.parseDouble(tokenizer.nextToken())); + dataObject.setInletTotalGasFlow(Double.parseDouble(tokenizer.nextToken())); + dataObject.setInletLiquidFlow(Double.parseDouble(tokenizer.nextToken())); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - WettedWallDataReader reader = new WettedWallDataReader("31011222"); - int i = 0; - do { - System.out.println("svar: " - + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)).getTime()); - System.out.println("total gas flow: " - + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) - .getInletTotalGasFlow()); - System.out.println("co2 flow: " - + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) - .getCo2SupplyFlow()); - System.out.println("pressure: " - + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) - .getPressure()); - i++; - } while (i < reader.getSampleObjectList().size() - 1); + filepointer = file.getFilePointer(); + tokenizer.nextToken(); + sampleObjectList.add(dataObject); + } while (filepointer < length); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + System.out.println("Read data from file done!"); + System.out.println(k + " datapoints imported from file"); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + WettedWallDataReader reader = new WettedWallDataReader("31011222"); + int i = 0; + do { + System.out.println( + "svar: " + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)).getTime()); + System.out.println( + "total gas flow: " + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) + .getInletTotalGasFlow()); + System.out.println("co2 flow: " + + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)).getCo2SupplyFlow()); + System.out.println("pressure: " + + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)).getPressure()); + i++; + } while (i < reader.getSampleObjectList().size() - 1); + } } diff --git a/src/main/java/neqsim/statistics/experimentalSampleCreation/sampleCreator/SampleCreator.java b/src/main/java/neqsim/statistics/experimentalSampleCreation/sampleCreator/SampleCreator.java index 4bbc174eaf..cdeb4b5cca 100644 --- a/src/main/java/neqsim/statistics/experimentalSampleCreation/sampleCreator/SampleCreator.java +++ b/src/main/java/neqsim/statistics/experimentalSampleCreation/sampleCreator/SampleCreator.java @@ -3,6 +3,7 @@ * * Created on 8. februar 2001, 09:14 */ + package neqsim.statistics.experimentalSampleCreation.sampleCreator; import neqsim.statistics.experimentalEquipmentData.ExperimentalEquipmentData; @@ -18,50 +19,50 @@ * @version $Id: $Id */ public class SampleCreator { - protected SystemInterface system; - ThermodynamicOperations thermoOps; - ExperimentalEquipmentData equipment; + protected SystemInterface system; + ThermodynamicOperations thermoOps; + ExperimentalEquipmentData equipment; - /** - *

- * Constructor for SampleCreator. - *

- */ - public SampleCreator() {} + /** + *

+ * Constructor for SampleCreator. + *

+ */ + public SampleCreator() {} - /** - *

- * Constructor for SampleCreator. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param thermoOps a {@link neqsim.thermodynamicOperations.ThermodynamicOperations} object - */ - public SampleCreator(SystemInterface system, ThermodynamicOperations thermoOps) { - this.system = system; - this.thermoOps = thermoOps; - } + /** + *

+ * Constructor for SampleCreator. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param thermoOps a {@link neqsim.thermodynamicOperations.ThermodynamicOperations} object + */ + public SampleCreator(SystemInterface system, ThermodynamicOperations thermoOps) { + this.system = system; + this.thermoOps = thermoOps; + } - /** - *

- * setThermoSystem. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setThermoSystem(SystemInterface system) { - this.system = system; - } + /** + *

+ * setThermoSystem. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setThermoSystem(SystemInterface system) { + this.system = system; + } - /** - *

- * setExperimentalEquipment. - *

- * - * @param equipment a - * {@link neqsim.statistics.experimentalEquipmentData.ExperimentalEquipmentData} object - */ - public void setExperimentalEquipment(ExperimentalEquipmentData equipment) { - this.equipment = equipment; - } + /** + *

+ * setExperimentalEquipment. + *

+ * + * @param equipment a + * {@link neqsim.statistics.experimentalEquipmentData.ExperimentalEquipmentData} object + */ + public void setExperimentalEquipment(ExperimentalEquipmentData equipment) { + this.equipment = equipment; + } } diff --git a/src/main/java/neqsim/statistics/experimentalSampleCreation/sampleCreator/wettedWallColumnSampleCreator/WettedWallColumnSampleCreator.java b/src/main/java/neqsim/statistics/experimentalSampleCreation/sampleCreator/wettedWallColumnSampleCreator/WettedWallColumnSampleCreator.java index 1ae6b99c47..6c6b69cacc 100644 --- a/src/main/java/neqsim/statistics/experimentalSampleCreation/sampleCreator/wettedWallColumnSampleCreator/WettedWallColumnSampleCreator.java +++ b/src/main/java/neqsim/statistics/experimentalSampleCreation/sampleCreator/wettedWallColumnSampleCreator/WettedWallColumnSampleCreator.java @@ -3,15 +3,17 @@ * * Created on 8. februar 2001, 09:14 */ + package neqsim.statistics.experimentalSampleCreation.sampleCreator.wettedWallColumnSampleCreator; import Jama.Matrix; -import neqsim.statistics.dataAnalysis.dataSmoothing.DataSmoothor; +import neqsim.statistics.dataanalysis.datasmoothing.DataSmoother; import neqsim.statistics.experimentalEquipmentData.ExperimentalEquipmentData; import neqsim.statistics.experimentalEquipmentData.wettedWallColumnData.WettedWallColumnData; import neqsim.statistics.experimentalSampleCreation.readDataFromFile.wettedWallColumnReader.WettedWallColumnDataObject; import neqsim.statistics.experimentalSampleCreation.readDataFromFile.wettedWallColumnReader.WettedWallDataReader; import neqsim.statistics.experimentalSampleCreation.sampleCreator.SampleCreator; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -24,185 +26,196 @@ * @version $Id: $Id */ public class WettedWallColumnSampleCreator extends SampleCreator { - WettedWallDataReader reader; - DataSmoothor smoothor; - double[] time, pressure, inletLiquidTemperature, outletLiquidTemperature, inletGasTemperature, - inletTotalGasFlowRate, inletLiquidFlowRate, co2SupplyRate, columnWallTemperature, dPdt, - dNdt, dPdn, dNdtOld, dnVdt; - double[] smoothedPressure, smoothedInletLiquidTemperature, smoothedOutletLiquidTemperature, - smoothedInletGasTemperature, smoothedInletTotalGasFlowRate, smoothedInletLiquidFlowRate, - smoothedCo2SupplyRate, smoothedColumnWallTemperature; - - /** - *

- * Constructor for WettedWallColumnSampleCreator. - *

- */ - public WettedWallColumnSampleCreator() {} - - /** - *

- * Constructor for WettedWallColumnSampleCreator. - *

- * - * @param file a {@link java.lang.String} object - */ - public WettedWallColumnSampleCreator(String file) { - reader = new WettedWallDataReader(file); - } - - /** - *

- * setSampleValues. - *

- */ - public void setSampleValues() { - time = new double[reader.getSampleObjectList().size() - 1]; - pressure = new double[reader.getSampleObjectList().size() - 1]; - inletLiquidTemperature = new double[reader.getSampleObjectList().size() - 1]; - outletLiquidTemperature = new double[reader.getSampleObjectList().size() - 1]; - inletGasTemperature = new double[reader.getSampleObjectList().size() - 1]; - inletTotalGasFlowRate = new double[reader.getSampleObjectList().size() - 1]; - inletLiquidFlowRate = new double[reader.getSampleObjectList().size() - 1]; - co2SupplyRate = new double[reader.getSampleObjectList().size() - 1]; - columnWallTemperature = new double[reader.getSampleObjectList().size() - 1]; - - int i = 0; - do { - time[i] = ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)).getTime(); - pressure[i] = ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) - .getPressure(); - inletLiquidTemperature[i] = - ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) - .getInletLiquidTemperature(); - outletLiquidTemperature[i] = - ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) - .getOutletLiquidTemperature(); - columnWallTemperature[i] = - ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) - .getColumnWallTemperature(); - inletTotalGasFlowRate[i] = - ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) - .getInletTotalGasFlow(); - co2SupplyRate[i] = ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) - .getCo2SupplyFlow(); - inletLiquidFlowRate[i] = - ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) - .getInletLiquidFlow(); - i++; - } while (i < reader.getSampleObjectList().size() - 1); - } - - /** - *

- * smoothData. - *

- */ - public void smoothData() { - Matrix data = new Matrix(pressure, 1); - data.print(10, 2); - - smoothor = new DataSmoothor(pressure, 10, 10, 0, 2); - smoothor.runSmoothing(); - smoothedPressure = smoothor.getSmoothedNumbers(); - - smoothor = new DataSmoothor(inletLiquidTemperature, 10, 10, 0, 2); - smoothor.runSmoothing(); - smoothedInletLiquidTemperature = smoothor.getSmoothedNumbers(); - - smoothor = new DataSmoothor(outletLiquidTemperature, 10, 10, 0, 2); - smoothor.runSmoothing(); - smoothedOutletLiquidTemperature = smoothor.getSmoothedNumbers(); - - smoothor = new DataSmoothor(columnWallTemperature, 10, 10, 0, 2); - smoothor.runSmoothing(); - smoothedColumnWallTemperature = smoothor.getSmoothedNumbers(); - - smoothor = new DataSmoothor(inletTotalGasFlowRate, 10, 10, 0, 2); - smoothor.runSmoothing(); - smoothedInletTotalGasFlowRate = smoothor.getSmoothedNumbers(); - - smoothor = new DataSmoothor(co2SupplyRate, 10, 10, 0, 2); - smoothor.runSmoothing(); - smoothedCo2SupplyRate = smoothor.getSmoothedNumbers(); - - smoothor = new DataSmoothor(inletLiquidFlowRate, 10, 10, 0, 2); - smoothor.runSmoothing(); - smoothedInletLiquidFlowRate = smoothor.getSmoothedNumbers(); - - data = new Matrix(smoothedPressure, 1); - data.print(10, 2); - - System.out.println("data-smoothing finished!"); - } - - /** - *

- * calcdPdt. - *

- */ - public void calcdPdt() { - system.init(0); - dPdt = new double[reader.getSampleObjectList().size() - 1]; - dPdt[0] = 0; - dPdt[reader.getSampleObjectList().size() - 2] = 0; - - dPdn = new double[reader.getSampleObjectList().size() - 1]; - dPdn[0] = 0; - dPdn[reader.getSampleObjectList().size() - 2] = 0; - - double err = 0; - dNdt = new double[reader.getSampleObjectList().size() - 1]; - dNdtOld = new double[reader.getSampleObjectList().size() - 1]; - dnVdt = new double[reader.getSampleObjectList().size() - 1]; - - do { - for (int i = 1; i < (reader.getSampleObjectList().size() - 3); i++) { - system.setTemperature(smoothedInletLiquidTemperature[i]); - system.setPressure(smoothedPressure[i]); - system.getPhases()[0].addMoles(1, dNdt[i] * (time[i] - time[i - 1])); - system.getPhases()[1].addMoles(1, -dNdt[i] * (time[i] - time[i - 1])); - system.init(1); - // her bor det komme en funksjon som finer nummeret til Co2! - dPdt[i] = (smoothedPressure[i + 1] - smoothedPressure[i - 1]) - / (time[i + 1] - time[i - 1]); - // dPdn[i] = system.getPhases()[1].getdPdn(1); - } - - dNdt[0] = 0; - dNdt[reader.getSampleObjectList().size() - 2] = 0; - err = 0; - - for (int i = 1; i < (reader.getSampleObjectList().size() - 3); i++) { - dNdtOld[i] = dNdt[i]; - dNdt[i] = dPdt[i] * 1.0 / dPdn[i]; - err += Math.abs((dNdtOld[i] - dNdt[i])); - // System.out.println("dndt: " + dNdt[i]); - dnVdt[i] = dNdt[i] * 8.314 * 298.15 / 101325.0 * 1000 * 60; - System.out.println("dVdt: " + dnVdt[i]); - } - System.out.println("err: " + err); - } while (err > 1e-10); - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - WettedWallColumnSampleCreator creator = new WettedWallColumnSampleCreator("31011250"); - ExperimentalEquipmentData eq = new WettedWallColumnData(0.025, 1.48, 4.9); - creator.setExperimentalEquipment(eq); - creator.setSampleValues(); - creator.smoothData(); - SystemInterface sys = new SystemSrkEos(298, 10); - sys.addComponent("methane", 100); - sys.addComponent("CO2", 10); - // sys.addComponent("water",10); - creator.setThermoSystem(sys); - creator.calcdPdt(); - } + WettedWallDataReader reader; + double[] time; + double[] pressure; + double[] inletLiquidTemperature; + double[] outletLiquidTemperature; + double[] inletGasTemperature; + double[] inletTotalGasFlowRate; + double[] inletLiquidFlowRate; + double[] co2SupplyRate; + double[] columnWallTemperature; + double[] dPdt; + double[] dNdt; + double[] dPdn; + double[] dNdtOld; + double[] dnVdt; + double[] smoothedPressure; + double[] smoothedInletLiquidTemperature; + double[] smoothedOutletLiquidTemperature; + double[] smoothedInletGasTemperature; + double[] smoothedInletTotalGasFlowRate; + double[] smoothedInletLiquidFlowRate; + double[] smoothedCo2SupplyRate; + double[] smoothedColumnWallTemperature; + + /** + *

+ * Constructor for WettedWallColumnSampleCreator. + *

+ */ + public WettedWallColumnSampleCreator() {} + + /** + *

+ * Constructor for WettedWallColumnSampleCreator. + *

+ * + * @param file a {@link java.lang.String} object + */ + public WettedWallColumnSampleCreator(String file) { + reader = new WettedWallDataReader(file); + } + + /** + *

+ * setSampleValues. + *

+ */ + public void setSampleValues() { + time = new double[reader.getSampleObjectList().size() - 1]; + pressure = new double[reader.getSampleObjectList().size() - 1]; + inletLiquidTemperature = new double[reader.getSampleObjectList().size() - 1]; + outletLiquidTemperature = new double[reader.getSampleObjectList().size() - 1]; + inletGasTemperature = new double[reader.getSampleObjectList().size() - 1]; + inletTotalGasFlowRate = new double[reader.getSampleObjectList().size() - 1]; + inletLiquidFlowRate = new double[reader.getSampleObjectList().size() - 1]; + co2SupplyRate = new double[reader.getSampleObjectList().size() - 1]; + columnWallTemperature = new double[reader.getSampleObjectList().size() - 1]; + + int i = 0; + do { + time[i] = ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)).getTime(); + pressure[i] = + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)).getPressure(); + inletLiquidTemperature[i] = ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) + .getInletLiquidTemperature(); + outletLiquidTemperature[i] = + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) + .getOutletLiquidTemperature(); + columnWallTemperature[i] = ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)) + .getColumnWallTemperature(); + inletTotalGasFlowRate[i] = + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)).getInletTotalGasFlow(); + co2SupplyRate[i] = + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)).getCo2SupplyFlow(); + inletLiquidFlowRate[i] = + ((WettedWallColumnDataObject) reader.getSampleObjectList().get(i)).getInletLiquidFlow(); + i++; + } while (i < reader.getSampleObjectList().size() - 1); + } + + /** + *

+ * smoothData. + *

+ */ + public void smoothData() { + Matrix data = new Matrix(pressure, 1); + data.print(10, 2); + + DataSmoother smoother = new DataSmoother(pressure, 10, 10, 0, 2); + smoother.runSmoothing(); + smoothedPressure = smoother.getSmoothedNumbers(); + + smoother = new DataSmoother(inletLiquidTemperature, 10, 10, 0, 2); + smoother.runSmoothing(); + smoothedInletLiquidTemperature = smoother.getSmoothedNumbers(); + + smoother = new DataSmoother(outletLiquidTemperature, 10, 10, 0, 2); + smoother.runSmoothing(); + smoothedOutletLiquidTemperature = smoother.getSmoothedNumbers(); + + smoother = new DataSmoother(columnWallTemperature, 10, 10, 0, 2); + smoother.runSmoothing(); + smoothedColumnWallTemperature = smoother.getSmoothedNumbers(); + + smoother = new DataSmoother(inletTotalGasFlowRate, 10, 10, 0, 2); + smoother.runSmoothing(); + smoothedInletTotalGasFlowRate = smoother.getSmoothedNumbers(); + + smoother = new DataSmoother(co2SupplyRate, 10, 10, 0, 2); + smoother.runSmoothing(); + smoothedCo2SupplyRate = smoother.getSmoothedNumbers(); + + smoother = new DataSmoother(inletLiquidFlowRate, 10, 10, 0, 2); + smoother.runSmoothing(); + smoothedInletLiquidFlowRate = smoother.getSmoothedNumbers(); + + data = new Matrix(smoothedPressure, 1); + data.print(10, 2); + + System.out.println("data-smoothing finished!"); + } + + /** + *

+ * calcdPdt. + *

+ */ + public void calcdPdt() { + system.init(0); + dPdt = new double[reader.getSampleObjectList().size() - 1]; + dPdt[0] = 0; + dPdt[reader.getSampleObjectList().size() - 2] = 0; + + dPdn = new double[reader.getSampleObjectList().size() - 1]; + dPdn[0] = 0; + dPdn[reader.getSampleObjectList().size() - 2] = 0; + + double err = 0; + dNdt = new double[reader.getSampleObjectList().size() - 1]; + dNdtOld = new double[reader.getSampleObjectList().size() - 1]; + dnVdt = new double[reader.getSampleObjectList().size() - 1]; + + do { + for (int i = 1; i < (reader.getSampleObjectList().size() - 3); i++) { + system.setTemperature(smoothedInletLiquidTemperature[i]); + system.setPressure(smoothedPressure[i]); + system.getPhases()[0].addMoles(1, dNdt[i] * (time[i] - time[i - 1])); + system.getPhases()[1].addMoles(1, -dNdt[i] * (time[i] - time[i - 1])); + system.init(1); + // her bor det komme en funksjon som finer nummeret til Co2! + dPdt[i] = (smoothedPressure[i + 1] - smoothedPressure[i - 1]) / (time[i + 1] - time[i - 1]); + // dPdn[i] = system.getPhases()[1].getdPdn(1); + } + + dNdt[0] = 0; + dNdt[reader.getSampleObjectList().size() - 2] = 0; + err = 0; + + for (int i = 1; i < (reader.getSampleObjectList().size() - 3); i++) { + dNdtOld[i] = dNdt[i]; + dNdt[i] = dPdt[i] * 1.0 / dPdn[i]; + err += Math.abs((dNdtOld[i] - dNdt[i])); + // System.out.println("dndt: " + dNdt[i]); + dnVdt[i] = dNdt[i] * ThermodynamicConstantsInterface.R * 298.15 + / ThermodynamicConstantsInterface.atm * 1000 * 60; + System.out.println("dVdt: " + dnVdt[i]); + } + System.out.println("err: " + err); + } while (err > 1e-10); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + WettedWallColumnSampleCreator creator = new WettedWallColumnSampleCreator("31011250"); + ExperimentalEquipmentData eq = new WettedWallColumnData(0.025, 1.48, 4.9); + creator.setExperimentalEquipment(eq); + creator.setSampleValues(); + creator.smoothData(); + SystemInterface sys = new SystemSrkEos(298, 10); + sys.addComponent("methane", 100); + sys.addComponent("CO2", 10); + // sys.addComponent("water",10); + creator.setThermoSystem(sys); + creator.calcdPdt(); + } } diff --git a/src/main/java/neqsim/statistics/monteCarloSimulation/MonteCarloSimulation.java b/src/main/java/neqsim/statistics/monteCarloSimulation/MonteCarloSimulation.java index 777cfa1b74..1361d354ca 100644 --- a/src/main/java/neqsim/statistics/monteCarloSimulation/MonteCarloSimulation.java +++ b/src/main/java/neqsim/statistics/monteCarloSimulation/MonteCarloSimulation.java @@ -3,6 +3,7 @@ * * Created on 30. januar 2001, 13:06 */ + package neqsim.statistics.monteCarloSimulation; import Jama.Matrix; @@ -18,86 +19,86 @@ * @version $Id: $Id */ public class MonteCarloSimulation { - StatisticsInterface baseStatClass; - StatisticsInterface[] statClasses; - double[][] reportMatrix; - int numberOfRuns = 50; + StatisticsInterface baseStatClass; + StatisticsInterface[] statClasses; + double[][] reportMatrix; + int numberOfRuns = 50; - /** - *

- * Constructor for MonteCarloSimulation. - *

- */ - public MonteCarloSimulation() {} + /** + *

+ * Constructor for MonteCarloSimulation. + *

+ */ + public MonteCarloSimulation() {} - /** - *

- * Constructor for MonteCarloSimulation. - *

- * - * @param baseStatClass a {@link neqsim.statistics.parameterFitting.StatisticsInterface} object - */ - public MonteCarloSimulation(StatisticsInterface baseStatClass) { - this.baseStatClass = baseStatClass; - } + /** + *

+ * Constructor for MonteCarloSimulation. + *

+ * + * @param baseStatClass a {@link neqsim.statistics.parameterFitting.StatisticsInterface} object + */ + public MonteCarloSimulation(StatisticsInterface baseStatClass) { + this.baseStatClass = baseStatClass; + } - /** - *

- * Constructor for MonteCarloSimulation. - *

- * - * @param baseStatClass a {@link neqsim.statistics.parameterFitting.StatisticsBaseClass} object - * @param numberOfRuns a int - */ - public MonteCarloSimulation(StatisticsBaseClass baseStatClass, int numberOfRuns) { - this.baseStatClass = baseStatClass; - this.numberOfRuns = numberOfRuns; - } + /** + *

+ * Constructor for MonteCarloSimulation. + *

+ * + * @param baseStatClass a {@link neqsim.statistics.parameterFitting.StatisticsBaseClass} object + * @param numberOfRuns a int + */ + public MonteCarloSimulation(StatisticsBaseClass baseStatClass, int numberOfRuns) { + this.baseStatClass = baseStatClass; + this.numberOfRuns = numberOfRuns; + } - /** - *

- * Setter for the field numberOfRuns. - *

- * - * @param numberOfRuns a int - */ - public void setNumberOfRuns(int numberOfRuns) { - this.numberOfRuns = numberOfRuns; - } + /** + *

+ * Setter for the field numberOfRuns. + *

+ * + * @param numberOfRuns a int + */ + public void setNumberOfRuns(int numberOfRuns) { + this.numberOfRuns = numberOfRuns; + } - /** - *

- * runSimulation. - *

- */ - public void runSimulation() { - baseStatClass.init(); - statClasses = new StatisticsInterface[numberOfRuns]; - for (int i = 0; i < numberOfRuns; i++) { - statClasses[i] = baseStatClass.createNewRandomClass(); - statClasses[i].solve(); - } - createReportMatrix(); + /** + *

+ * runSimulation. + *

+ */ + public void runSimulation() { + baseStatClass.init(); + statClasses = new StatisticsInterface[numberOfRuns]; + for (int i = 0; i < numberOfRuns; i++) { + statClasses[i] = baseStatClass.createNewRandomClass(); + statClasses[i].solve(); } + createReportMatrix(); + } - /** - *

- * createReportMatrix. - *

- */ - public void createReportMatrix() { - reportMatrix = new double[10][numberOfRuns]; - for (int i = 0; i < numberOfRuns; i++) { - reportMatrix[0][i] = i; - - for (int j = 0; j < statClasses[0].getSampleSet().getSample(0).getFunction() - .getNumberOfFittingParams(); j++) { - reportMatrix[j + 1][i] = statClasses[i].getSampleSet().getSample(0).getFunction() - .getFittingParams(j); - } - } + /** + *

+ * createReportMatrix. + *

+ */ + public void createReportMatrix() { + reportMatrix = new double[10][numberOfRuns]; + for (int i = 0; i < numberOfRuns; i++) { + reportMatrix[0][i] = i; - Matrix report = new Matrix(reportMatrix);// .print(10,2); - report.print(10, 17); + for (int j = 0; j < statClasses[0].getSampleSet().getSample(0).getFunction() + .getNumberOfFittingParams(); j++) { + reportMatrix[j + 1][i] = + statClasses[i].getSampleSet().getSample(0).getFunction().getFittingParams(j); + } } + + Matrix report = new Matrix(reportMatrix); // .print(10,2); + report.print(10, 17); + } } diff --git a/src/main/java/neqsim/statistics/parameterFitting/BaseFunction.java b/src/main/java/neqsim/statistics/parameterFitting/BaseFunction.java index a678d180a7..d65653470e 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/BaseFunction.java +++ b/src/main/java/neqsim/statistics/parameterFitting/BaseFunction.java @@ -12,113 +12,113 @@ * @version $Id: $Id */ public abstract class BaseFunction implements FunctionInterface { - public double[] params = null; - public double[][] bounds = null; - - public SystemInterface system; - public ThermodynamicOperations thermoOps; - - /** - *

- * Constructor for BaseFunction. - *

- */ - public BaseFunction() {} - - /** {@inheritDoc} */ - @Override - public BaseFunction clone() { - BaseFunction clonedClass = null; - try { - clonedClass = (BaseFunction) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - // if(system!=null) clonedClass.system = system.clone(); - clonedClass.params = params.clone(); - System.arraycopy(params, 0, clonedClass.params, 0, params.length); - - return clonedClass; - } - - /** {@inheritDoc} */ - @Override - public void setThermodynamicSystem(SystemInterface system) { - this.system = system; - thermoOps = new ThermodynamicOperations(system); - } - - /** {@inheritDoc} */ - @Override - public double getFittingParams(int i) { - return params[i]; - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getSystem() { - return system; - } - - /** {@inheritDoc} */ - @Override - public double[] getFittingParams() { - return params; - } - - /** {@inheritDoc} */ - @Override - public int getNumberOfFittingParams() { - return params.length; - } - - /** {@inheritDoc} */ - @Override - public void setInitialGuess(double[] guess) { - System.out.println("start fitting " + guess.length + " parameter(s)..."); - params = new double[guess.length]; - System.arraycopy(guess, 0, params, 0, guess.length); - } - - /** {@inheritDoc} */ - @Override - public abstract double calcValue(double[] dependentValues); - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public abstract void setFittingParams(int i, double value); - - /** {@inheritDoc} */ - @Override - public void setDatabaseParameters() {} - - /** {@inheritDoc} */ - @Override - public double getLowerBound(int i) { - return this.bounds[i][0]; - } - - /** {@inheritDoc} */ - @Override - public double getUpperBound(int i) { - return this.bounds[i][1]; - } - - /** {@inheritDoc} */ - @Override - public double[][] getBounds() { - return this.bounds; - } - - /** {@inheritDoc} */ - @Override - public void setBounds(double[][] bounds) { - this.bounds = bounds; + public double[] params = null; + public double[][] bounds = null; + + public SystemInterface system; + public ThermodynamicOperations thermoOps; + + /** + *

+ * Constructor for BaseFunction. + *

+ */ + public BaseFunction() {} + + /** {@inheritDoc} */ + @Override + public BaseFunction clone() { + BaseFunction clonedClass = null; + try { + clonedClass = (BaseFunction) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + // if(system!=null) clonedClass.system = system.clone(); + clonedClass.params = params.clone(); + System.arraycopy(params, 0, clonedClass.params, 0, params.length); + + return clonedClass; + } + + /** {@inheritDoc} */ + @Override + public void setThermodynamicSystem(SystemInterface system) { + this.system = system; + thermoOps = new ThermodynamicOperations(system); + } + + /** {@inheritDoc} */ + @Override + public double[] getFittingParams() { + return params; + } + + /** {@inheritDoc} */ + @Override + public double getFittingParams(int i) { + return params[i]; + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getSystem() { + return system; + } + + /** {@inheritDoc} */ + @Override + public int getNumberOfFittingParams() { + return params.length; + } + + /** {@inheritDoc} */ + @Override + public void setInitialGuess(double[] guess) { + System.out.println("start fitting " + guess.length + " parameter(s)..."); + params = new double[guess.length]; + System.arraycopy(guess, 0, params, 0, guess.length); + } + + /** {@inheritDoc} */ + @Override + public abstract double calcValue(double[] dependentValues); + + /** {@inheritDoc} */ + @Override + public double calcTrueValue(double val) { + return val; + } + + /** {@inheritDoc} */ + @Override + public abstract void setFittingParams(int i, double value); + + /** {@inheritDoc} */ + @Override + public void setDatabaseParameters() {} + + /** {@inheritDoc} */ + @Override + public double getLowerBound(int i) { + return this.bounds[i][0]; + } + + /** {@inheritDoc} */ + @Override + public double getUpperBound(int i) { + return this.bounds[i][1]; + } + + /** {@inheritDoc} */ + @Override + public double[][] getBounds() { + return this.bounds; + } + + /** {@inheritDoc} */ + @Override + public void setBounds(double[][] bounds) { + this.bounds = bounds; + } } diff --git a/src/main/java/neqsim/statistics/parameterFitting/FunctionInterface.java b/src/main/java/neqsim/statistics/parameterFitting/FunctionInterface.java index 9273dd9530..a936162a8e 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/FunctionInterface.java +++ b/src/main/java/neqsim/statistics/parameterFitting/FunctionInterface.java @@ -3,6 +3,7 @@ * * Created on 30. januar 2001, 21:40 */ + package neqsim.statistics.parameterFitting; import neqsim.thermo.system.SystemInterface; @@ -16,142 +17,142 @@ * @version $Id: $Id */ public interface FunctionInterface extends Cloneable { - /** - *

- * calcValue. - *

- * - * @param dependentValues an array of {@link double} objects - * @return a double - */ - public double calcValue(double[] dependentValues); - - /** - *

- * calcTrueValue. - *

- * - * @param val a double - * @return a double - */ - public double calcTrueValue(double val); - - /** - *

- * setFittingParams. - *

- * - * @param i a int - * @param value a double - */ - public void setFittingParams(int i, double value); - - /** - *

- * setDatabaseParameters. - *

- */ - public void setDatabaseParameters(); - - /** - *

- * getFittingParams. - *

- * - * @param i a int - * @return a double - */ - public double getFittingParams(int i); - - /** - *

- * getFittingParams. - *

- * - * @return an array of {@link double} objects - */ - public double[] getFittingParams(); - - /** - *

- * getNumberOfFittingParams. - *

- * - * @return a int - */ - public int getNumberOfFittingParams(); - - /** - *

- * setInitialGuess. - *

- * - * @param guess an array of {@link double} objects - */ - public void setInitialGuess(double[] guess); - - /** - *

- * clone. - *

- * - * @return a {@link neqsim.statistics.parameterFitting.FunctionInterface} object - */ - public FunctionInterface clone(); - - /** - *

- * setThermodynamicSystem. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setThermodynamicSystem(SystemInterface system); - - /** - *

- * getSystem. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getSystem(); - - /** - *

- * getBounds. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getBounds(); - - /** - *

- * getLowerBound. - *

- * - * @param i a int - * @return a double - */ - public double getLowerBound(int i); - - /** - *

- * getUpperBound. - *

- * - * @param i a int - * @return a double - */ - public double getUpperBound(int i); - - /** - *

- * setBounds. - *

- * - * @param bounds an array of {@link double} objects - */ - public void setBounds(double[][] bounds); + /** + *

+ * calcValue. + *

+ * + * @param dependentValues an array of type double + * @return a double + */ + public double calcValue(double[] dependentValues); + + /** + *

+ * calcTrueValue. + *

+ * + * @param val a double + * @return a double + */ + public double calcTrueValue(double val); + + /** + *

+ * setFittingParams. + *

+ * + * @param i a int + * @param value a double + */ + public void setFittingParams(int i, double value); + + /** + *

+ * setDatabaseParameters. + *

+ */ + public void setDatabaseParameters(); + + /** + *

+ * getFittingParams. + *

+ * + * @param i a int + * @return a double + */ + public double getFittingParams(int i); + + /** + *

+ * getFittingParams. + *

+ * + * @return an array of type double + */ + public double[] getFittingParams(); + + /** + *

+ * getNumberOfFittingParams. + *

+ * + * @return a int + */ + public int getNumberOfFittingParams(); + + /** + *

+ * setInitialGuess. + *

+ * + * @param guess an array of type double + */ + public void setInitialGuess(double[] guess); + + /** + *

+ * clone. + *

+ * + * @return a {@link neqsim.statistics.parameterFitting.FunctionInterface} object + */ + public FunctionInterface clone(); + + /** + *

+ * setThermodynamicSystem. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setThermodynamicSystem(SystemInterface system); + + /** + *

+ * getSystem. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getSystem(); + + /** + *

+ * getBounds. + *

+ * + * @return an array of type double + */ + public double[][] getBounds(); + + /** + *

+ * getLowerBound. + *

+ * + * @param i a int + * @return a double + */ + public double getLowerBound(int i); + + /** + *

+ * getUpperBound. + *

+ * + * @param i a int + * @return a double + */ + public double getUpperBound(int i); + + /** + *

+ * setBounds. + *

+ * + * @param bounds an array of type double + */ + public void setBounds(double[][] bounds); } diff --git a/src/main/java/neqsim/statistics/parameterFitting/NumericalDerivative.java b/src/main/java/neqsim/statistics/parameterFitting/NumericalDerivative.java index 58efa9c62d..1fd82c32fc 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/NumericalDerivative.java +++ b/src/main/java/neqsim/statistics/parameterFitting/NumericalDerivative.java @@ -3,6 +3,7 @@ * * Created on 28. juli 2000, 15:39 */ + package neqsim.statistics.parameterFitting; /** @@ -13,101 +14,100 @@ * @author Even Solbraa * @version $Id: $Id */ -public class NumericalDerivative implements java.io.Serializable { - private static final long serialVersionUID = 1000; - - final static double CON = 1.4; - final static double CON2 = CON * CON; - final static double BIG = 1.0e30; - final static int NTAB = 10; - final static double SAFE = 2.0; +public final class NumericalDerivative implements java.io.Serializable { + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for NumericalDerivative. - *

- */ - public NumericalDerivative() {} + static final double CON = 1.4; + static final double CON2 = CON * CON; + static final double BIG = 1.0e30; + static final int NTAB = 10; + static final double SAFE = 2.0; - /** - *

- * calcDerivative. - *

- * - * @param system a {@link neqsim.statistics.parameterFitting.StatisticsBaseClass} object - * @param sampleNumber a int - * @param parameterNumber a int - * @return a double - */ - public static double calcDerivative(StatisticsBaseClass system, int sampleNumber, - int parameterNumber) { - double errt, fac, hh, ans, err; - double h = Math.abs(system.getSampleSet().getSample(sampleNumber).getFunction() - .getFittingParams(parameterNumber)) / 1.0e3; - if (h == 0.0) { - System.out.println("h must be larger than 0!"); - System.out.println("setting it to 1.0e-10"); - h = 1.0e-10; - } - double[][] a = new double[NTAB][NTAB]; + /** + * Dummy constructor, not for use. Class is to be considered static. + */ + private NumericalDerivative() {} - hh = h; - // System.out.println("hh " + hh); - double oldFittingParam1 = system.getSampleSet().getSample(sampleNumber).getFunction() - .getFittingParams(parameterNumber); - system.getSampleSet().getSample(sampleNumber).getFunction() - .setFittingParams(parameterNumber, oldFittingParam1 + hh); - double val1 = system.calcValue(system.getSample(sampleNumber)); - system.getSampleSet().getSample(sampleNumber).getFunction() - .setFittingParams(parameterNumber, oldFittingParam1 - hh); - double val2 = system.calcValue(system.getSample(sampleNumber)); - system.getSampleSet().getSample(sampleNumber).getFunction() - .setFittingParams(parameterNumber, oldFittingParam1); + /** + *

+ * calcDerivative. + *

+ * + * @param system a {@link neqsim.statistics.parameterFitting.StatisticsBaseClass} object + * @param sampleNumber a int + * @param parameterNumber a int + * @return a double + */ + public static double calcDerivative(StatisticsBaseClass system, int sampleNumber, + int parameterNumber) { + double errt; + double fac; + double hh; + double h = Math.abs(system.getSampleSet().getSample(sampleNumber).getFunction() + .getFittingParams(parameterNumber)) / 1.0e3; + if (h == 0.0) { + System.out.println("h must be larger than 0!"); + System.out.println("setting it to 1.0e-10"); + h = 1.0e-10; + } - a[0][0] = (val1 - val2) / (2.0 * hh); - ans = a[0][0]; - err = BIG; + hh = h; + // System.out.println("hh " + hh); + double oldFittingParam1 = system.getSampleSet().getSample(sampleNumber).getFunction() + .getFittingParams(parameterNumber); + system.getSampleSet().getSample(sampleNumber).getFunction().setFittingParams(parameterNumber, + oldFittingParam1 + hh); + double val1 = system.calcValue(system.getSample(sampleNumber)); + system.getSampleSet().getSample(sampleNumber).getFunction().setFittingParams(parameterNumber, + oldFittingParam1 - hh); + double val2 = system.calcValue(system.getSample(sampleNumber)); + system.getSampleSet().getSample(sampleNumber).getFunction().setFittingParams(parameterNumber, + oldFittingParam1); - for (int i = 1; i <= 0 * NTAB - 1; i++) { - hh /= CON; + double[][] a = new double[NTAB][NTAB]; + a[0][0] = (val1 - val2) / (2.0 * hh); + double ans = a[0][0]; + double err = BIG; - double oldFittingParam = system.getSampleSet().getSample(sampleNumber).getFunction() - .getFittingParams(parameterNumber); - system.getSampleSet().getSample(sampleNumber).getFunction() - .setFittingParams(parameterNumber, oldFittingParam + hh); - val1 = system.calcValue(system.getSample(sampleNumber)); - // system.getSampleSet().getSample(sampleNumber).getFunction().setFittingParams(parameterNumber, - // oldFittingParam); - system.getSampleSet().getSample(sampleNumber).getFunction() - .setFittingParams(parameterNumber, oldFittingParam - hh); - val2 = system.calcValue(system.getSample(sampleNumber)); - system.getSampleSet().getSample(sampleNumber).getFunction() - .setFittingParams(parameterNumber, oldFittingParam); + for (int i = 1; i <= 0 * NTAB - 1; i++) { + hh /= CON; - a[0][i] = (val1 - val2) / (2.0 * hh); - fac = CON2; - for (int j = 1; j <= i; j++) { - a[j][i] = (a[j - 1][i] * fac - a[j - 1][i - 1]) / (fac - 1.0); - fac = CON2 * fac; - errt = Math.max(Math.abs(a[j][i] - a[j - 1][i]), - Math.abs(a[j][i] - a[j - 1][i - 1])); - // System.out.println("errt : " +errt); + double oldFittingParam = system.getSampleSet().getSample(sampleNumber).getFunction() + .getFittingParams(parameterNumber); + system.getSampleSet().getSample(sampleNumber).getFunction().setFittingParams(parameterNumber, + oldFittingParam + hh); + val1 = system.calcValue(system.getSample(sampleNumber)); + // system.getSampleSet().getSample(sampleNumber).getFunction().setFittingParams(parameterNumber, + // oldFittingParam); + system.getSampleSet().getSample(sampleNumber).getFunction().setFittingParams(parameterNumber, + oldFittingParam - hh); + val2 = system.calcValue(system.getSample(sampleNumber)); + system.getSampleSet().getSample(sampleNumber).getFunction().setFittingParams(parameterNumber, + oldFittingParam); - if (errt <= err) { - err = errt; - ans = a[j][i]; - } - // System.out.println("deriv1 " + ans); - } + a[0][i] = (val1 - val2) / (2.0 * hh); + fac = CON2; + for (int j = 1; j <= i; j++) { + a[j][i] = (a[j - 1][i] * fac - a[j - 1][i - 1]) / (fac - 1.0); + fac = CON2 * fac; + errt = Math.max(Math.abs(a[j][i] - a[j - 1][i]), Math.abs(a[j][i] - a[j - 1][i - 1])); + // System.out.println("errt : " +errt); - if (Math.abs(a[i][i] - a[i - 1][i - 1]) >= SAFE * err) { - break; - } + if (errt <= err) { + err = errt; + ans = a[j][i]; } - system.getSampleSet().getSample(sampleNumber).getFunction() - .setFittingParams(parameterNumber, oldFittingParam1); - // System.out.println("deriv " + ans); - // System.out.println("err " + err); - return ans; + // System.out.println("deriv1 " + ans); + } + + if (Math.abs(a[i][i] - a[i - 1][i - 1]) >= SAFE * err) { + break; + } } + system.getSampleSet().getSample(sampleNumber).getFunction().setFittingParams(parameterNumber, + oldFittingParam1); + // System.out.println("deriv " + ans); + // System.out.println("err " + err); + return ans; + } } diff --git a/src/main/java/neqsim/statistics/parameterFitting/SampleSet.java b/src/main/java/neqsim/statistics/parameterFitting/SampleSet.java index 5e838e4d5d..e8b81aa470 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/SampleSet.java +++ b/src/main/java/neqsim/statistics/parameterFitting/SampleSet.java @@ -3,6 +3,7 @@ * * Created on 28. januar 2001, 13:17 */ + package neqsim.statistics.parameterFitting; import java.util.ArrayList; @@ -17,135 +18,133 @@ * @version $Id: $Id */ public class SampleSet implements Cloneable { - private ArrayList samples = new ArrayList(1); - - /** - *

- * Constructor for SampleSet. - *

- */ - public SampleSet() {} - - /** - *

- * Constructor for SampleSet. - *

- * - * @param samplesIn an array of {@link neqsim.statistics.parameterFitting.SampleValue} objects - */ - public SampleSet(SampleValue[] samplesIn) { - samples.addAll(Arrays.asList(samplesIn)); - } + private ArrayList samples = new ArrayList(1); - /** - *

- * Constructor for SampleSet. - *

- * - * @param samplesIn a {@link java.util.ArrayList} object - */ - public SampleSet(ArrayList samplesIn) { - for (int i = 0; i < samplesIn.size(); i++) { - samples.add(samplesIn.get(i)); - } - } + /** + *

+ * Constructor for SampleSet. + *

+ */ + public SampleSet() {} - /** {@inheritDoc} */ - @Override - public SampleSet clone() { - SampleSet clonedSet = null; - try { - clonedSet = (SampleSet) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - clonedSet.samples = new ArrayList(samples); - for (int i = 0; i < samples.size(); i++) { - clonedSet.samples.set(i, samples.get(i).clone()); - } - - return clonedSet; - } + /** + *

+ * Constructor for SampleSet. + *

+ * + * @param samplesIn an array of {@link neqsim.statistics.parameterFitting.SampleValue} objects + */ + public SampleSet(SampleValue[] samplesIn) { + samples.addAll(Arrays.asList(samplesIn)); + } - /** - *

- * add. - *

- * - * @param sampleIn a {@link neqsim.statistics.parameterFitting.SampleValue} object - */ - public void add(SampleValue sampleIn) { - samples.add(sampleIn); + /** + *

+ * Constructor for SampleSet. + *

+ * + * @param samplesIn a {@link java.util.ArrayList} object + */ + public SampleSet(ArrayList samplesIn) { + for (int i = 0; i < samplesIn.size(); i++) { + samples.add(samplesIn.get(i)); } + } - /** - *

- * addSampleSet. - *

- * - * @param sampleSet a {@link neqsim.statistics.parameterFitting.SampleSet} object - */ - public void addSampleSet(SampleSet sampleSet) { - for (int i = 0; i < sampleSet.getLength(); i++) { - samples.add(sampleSet.getSample(i)); - } + /** {@inheritDoc} */ + @Override + public SampleSet clone() { + SampleSet clonedSet = null; + try { + clonedSet = (SampleSet) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** - *

- * getSample. - *

- * - * @param i a int - * @return a {@link neqsim.statistics.parameterFitting.SampleValue} object - */ - public SampleValue getSample(int i) { - return this.samples.get(i); + clonedSet.samples = new ArrayList(samples); + for (int i = 0; i < samples.size(); i++) { + clonedSet.samples.set(i, samples.get(i).clone()); } - // public SampleValue[] getSamples() { - // SampleValue[] samplesOut = new SampleValue[samples.size()]; - // for(int i=0;i - * getLength. - *

- * - * @return a int - */ - public int getLength() { - return samples.size(); + return clonedSet; + } + + /** + *

+ * add. + *

+ * + * @param sampleIn a {@link neqsim.statistics.parameterFitting.SampleValue} object + */ + public void add(SampleValue sampleIn) { + samples.add(sampleIn); + } + + /** + *

+ * addSampleSet. + *

+ * + * @param sampleSet a {@link neqsim.statistics.parameterFitting.SampleSet} object + */ + public void addSampleSet(SampleSet sampleSet) { + for (int i = 0; i < sampleSet.getLength(); i++) { + samples.add(sampleSet.getSample(i)); } + } + + /** + *

+ * getSample. + *

+ * + * @param i a int + * @return a {@link neqsim.statistics.parameterFitting.SampleValue} object + */ + public SampleValue getSample(int i) { + return this.samples.get(i); + } + + // public SampleValue[] getSamples() { + // SampleValue[] samplesOut = new SampleValue[samples.size()]; + // for(int i=0;i + * getLength. + *

+ * + * @return a int + */ + public int getLength() { + return samples.size(); + } + + /** + *

+ * createNewNormalDistributedSet. + *

+ * + * @return a {@link neqsim.statistics.parameterFitting.SampleSet} object + */ + public SampleSet createNewNormalDistributedSet() { + SampleSet newSet = this.clone(); - /** - *

- * createNewNormalDistributedSet. - *

- * - * @return a {@link neqsim.statistics.parameterFitting.SampleSet} object - */ - public SampleSet createNewNormalDistributedSet() { - SampleSet newSet = this.clone(); - - for (int i = 0; i < samples.size(); i++) { - for (int j = 0; j < newSet.getSample(i).getDependentValues().length; j++) { - System.out.println("old Var: " + newSet.getSample(i).getDependentValue(j)); - double newVar = cern.jet.random.Normal.staticNextDouble( - newSet.getSample(i).getDependentValue(j), - newSet.getSample(i).getStandardDeviation(j)); - newVar = cern.jet.random.Normal.staticNextDouble( - newSet.getSample(i).getDependentValue(j), - newSet.getSample(i).getStandardDeviation(j)); - newSet.getSample(i).setDependentValue(j, newVar); - System.out.println("new var: " + newVar); - } - } - return newSet; + for (int i = 0; i < samples.size(); i++) { + for (int j = 0; j < newSet.getSample(i).getDependentValues().length; j++) { + System.out.println("old Var: " + newSet.getSample(i).getDependentValue(j)); + double newVar = cern.jet.random.Normal.staticNextDouble( + newSet.getSample(i).getDependentValue(j), newSet.getSample(i).getStandardDeviation(j)); + newVar = cern.jet.random.Normal.staticNextDouble(newSet.getSample(i).getDependentValue(j), + newSet.getSample(i).getStandardDeviation(j)); + newSet.getSample(i).setDependentValue(j, newVar); + System.out.println("new var: " + newVar); + } } + return newSet; + } } diff --git a/src/main/java/neqsim/statistics/parameterFitting/SampleValue.java b/src/main/java/neqsim/statistics/parameterFitting/SampleValue.java index 8557beb91d..3707faf178 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/SampleValue.java +++ b/src/main/java/neqsim/statistics/parameterFitting/SampleValue.java @@ -3,6 +3,7 @@ * * Created on 22. januar 2001, 23:01 */ + package neqsim.statistics.parameterFitting; import neqsim.thermo.system.SystemInterface; @@ -17,228 +18,227 @@ * @version $Id: $Id */ public class SampleValue implements Cloneable { - protected FunctionInterface testFunction; - double sampleValue = 0; - double[] dependentValues; - String reference = "unknown"; - String description = "unknown"; - /** - * Standard deviation of function value - */ - double standardDeviation = 0.0001; - public SystemInterface system; - public ThermodynamicOperations thermoOps; - /** - * Standard deviation of dependent variables - */ - double[] standardDeviations; - - /** - *

- * Constructor for SampleValue. - *

- */ - public SampleValue() {} - - /** - *

- * Constructor for SampleValue. - *

- * - * @param sampleValue a double - * @param standardDeviation a double - * @param dependentValues an array of {@link double} objects - */ - public SampleValue(double sampleValue, double standardDeviation, double[] dependentValues) { - this.dependentValues = new double[dependentValues.length]; - this.sampleValue = sampleValue; - this.standardDeviation = standardDeviation; - System.arraycopy(dependentValues, 0, this.dependentValues, 0, dependentValues.length); - } - - /** - *

- * Constructor for SampleValue. - *

- * - * @param sampleValue a double - * @param standardDeviation a double - * @param dependentValues an array of {@link double} objects - * @param standardDeviations an array of {@link double} objects - */ - public SampleValue(double sampleValue, double standardDeviation, double[] dependentValues, - double[] standardDeviations) { - this(sampleValue, standardDeviation, dependentValues); - this.standardDeviations = standardDeviations; - } - - /** {@inheritDoc} */ - @Override - public SampleValue clone() { - SampleValue clonedValue = null; - try { - clonedValue = (SampleValue) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - // this was modified 20.05.2002 - // clonedValue.system = system.clone(); - clonedValue.testFunction = testFunction.clone(); - clonedValue.dependentValues = this.dependentValues.clone(); - System.arraycopy(dependentValues, 0, clonedValue.dependentValues, 0, - dependentValues.length); - - return clonedValue; - } - - /** - *

- * setThermodynamicSystem. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setThermodynamicSystem(SystemInterface system) { - this.system = system;// system.clone(); - thermoOps = new ThermodynamicOperations(system); - this.getFunction().setThermodynamicSystem(this.system); - } - - /** - *

- * setFunction. - *

- * - * @param function a {@link neqsim.statistics.parameterFitting.BaseFunction} object - */ - public void setFunction(BaseFunction function) { - testFunction = function; - } - - /** - *

- * getFunction. - *

- * - * @return a {@link neqsim.statistics.parameterFitting.FunctionInterface} object - */ - public FunctionInterface getFunction() { - return testFunction; - } - - /** - *

- * Getter for the field standardDeviation. - *

- * - * @return a double - */ - public double getStandardDeviation() { - return standardDeviation; - } - - /** - *

- * Getter for the field standardDeviation. - *

- * - * @param i a int - * @return a double - */ - public double getStandardDeviation(int i) { - return standardDeviations[i]; - } - - /** - *

- * Getter for the field sampleValue. - *

- * - * @return a double - */ - public double getSampleValue() { - return sampleValue; - } - - /** - *

- * Getter for the field dependentValues. - *

- * - * @return an array of {@link double} objects - */ - public double[] getDependentValues() { - return dependentValues; - } - - /** - *

- * getDependentValue. - *

- * - * @param i a int - * @return a double - */ - public double getDependentValue(int i) { - return dependentValues[i]; - } - - /** - *

- * Setter for the field dependentValues. - *

- * - * @param vals an array of {@link double} objects - */ - public void setDependentValues(double[] vals) { - System.arraycopy(vals, 0, this.dependentValues, 0, dependentValues.length); - } - - /** - *

- * setDependentValue. - *

- * - * @param i a int - * @param val a double - */ - public void setDependentValue(int i, double val) { - this.dependentValues[i] = val; - } - - /** - * Getter for property reference. - * - * @return Value of property reference. - */ - public java.lang.String getReference() { - return reference; - } - - /** - * Setter for property reference. - * - * @param reference New value of property reference. - */ - public void setReference(java.lang.String reference) { - this.reference = reference; - } - - /** - * Getter for property description. - * - * @return Value of property description. - */ - public java.lang.String getDescription() { - return description; - } - - /** - * Setter for property description. - * - * @param description New value of property description. - */ - public void setDescription(java.lang.String description) { - this.description = description; - } + protected FunctionInterface testFunction; + double sampleValue = 0; + double[] dependentValues; + String reference = "unknown"; + String description = "unknown"; + /** + * Standard deviation of function value. + */ + double standardDeviation = 0.0001; + public SystemInterface system; + public ThermodynamicOperations thermoOps; + /** + * Standard deviation of dependent variables. + */ + double[] standardDeviations; + + /** + *

+ * Constructor for SampleValue. + *

+ */ + public SampleValue() {} + + /** + *

+ * Constructor for SampleValue. + *

+ * + * @param sampleValue a double + * @param standardDeviation a double + * @param dependentValues an array of type double + */ + public SampleValue(double sampleValue, double standardDeviation, double[] dependentValues) { + this.dependentValues = new double[dependentValues.length]; + this.sampleValue = sampleValue; + this.standardDeviation = standardDeviation; + System.arraycopy(dependentValues, 0, this.dependentValues, 0, dependentValues.length); + } + + /** + *

+ * Constructor for SampleValue. + *

+ * + * @param sampleValue a double + * @param standardDeviation a double + * @param dependentValues an array of type double + * @param standardDeviations an array of type double + */ + public SampleValue(double sampleValue, double standardDeviation, double[] dependentValues, + double[] standardDeviations) { + this(sampleValue, standardDeviation, dependentValues); + this.standardDeviations = standardDeviations; + } + + /** {@inheritDoc} */ + @Override + public SampleValue clone() { + SampleValue clonedValue = null; + try { + clonedValue = (SampleValue) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); + } + // this was modified 20.05.2002 + // clonedValue.system = system.clone(); + clonedValue.testFunction = testFunction.clone(); + clonedValue.dependentValues = this.dependentValues.clone(); + System.arraycopy(dependentValues, 0, clonedValue.dependentValues, 0, dependentValues.length); + + return clonedValue; + } + + /** + *

+ * setThermodynamicSystem. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setThermodynamicSystem(SystemInterface system) { + this.system = system; // system.clone(); + thermoOps = new ThermodynamicOperations(system); + this.getFunction().setThermodynamicSystem(this.system); + } + + /** + *

+ * setFunction. + *

+ * + * @param function a {@link neqsim.statistics.parameterFitting.BaseFunction} object + */ + public void setFunction(BaseFunction function) { + testFunction = function; + } + + /** + *

+ * getFunction. + *

+ * + * @return a {@link neqsim.statistics.parameterFitting.FunctionInterface} object + */ + public FunctionInterface getFunction() { + return testFunction; + } + + /** + *

+ * Getter for the field standardDeviation. + *

+ * + * @return a double + */ + public double getStandardDeviation() { + return standardDeviation; + } + + /** + *

+ * Getter for the field standardDeviation. + *

+ * + * @param i a int + * @return a double + */ + public double getStandardDeviation(int i) { + return standardDeviations[i]; + } + + /** + *

+ * Getter for the field sampleValue. + *

+ * + * @return a double + */ + public double getSampleValue() { + return sampleValue; + } + + /** + *

+ * Getter for the field dependentValues. + *

+ * + * @return an array of type double + */ + public double[] getDependentValues() { + return dependentValues; + } + + /** + *

+ * getDependentValue. + *

+ * + * @param i a int + * @return a double + */ + public double getDependentValue(int i) { + return dependentValues[i]; + } + + /** + *

+ * Setter for the field dependentValues. + *

+ * + * @param vals an array of type double + */ + public void setDependentValues(double[] vals) { + System.arraycopy(vals, 0, this.dependentValues, 0, dependentValues.length); + } + + /** + *

+ * setDependentValue. + *

+ * + * @param i a int + * @param val a double + */ + public void setDependentValue(int i, double val) { + this.dependentValues[i] = val; + } + + /** + * Getter for property reference. + * + * @return Value of property reference. + */ + public java.lang.String getReference() { + return reference; + } + + /** + * Setter for property reference. + * + * @param reference New value of property reference. + */ + public void setReference(java.lang.String reference) { + this.reference = reference; + } + + /** + * Getter for property description. + * + * @return Value of property description. + */ + public java.lang.String getDescription() { + return description; + } + + /** + * Setter for property description. + * + * @param description New value of property description. + */ + public void setDescription(java.lang.String description) { + this.description = description; + } } diff --git a/src/main/java/neqsim/statistics/parameterFitting/StatisticsBaseClass.java b/src/main/java/neqsim/statistics/parameterFitting/StatisticsBaseClass.java index 4447f6ad15..f37d205059 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/StatisticsBaseClass.java +++ b/src/main/java/neqsim/statistics/parameterFitting/StatisticsBaseClass.java @@ -3,6 +3,7 @@ * * Created on 22. januar 2001, 23:00 */ + package neqsim.statistics.parameterFitting; import java.awt.Container; @@ -13,6 +14,8 @@ import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import Jama.Matrix; /** @@ -24,747 +27,750 @@ * @version $Id: $Id */ public abstract class StatisticsBaseClass implements Cloneable, StatisticsInterface { - protected SampleSet sampleSet = new SampleSet(); - protected double chiSquare = 0; - protected double[][] dyda; - protected double[] beta; - protected double[][] alpha; - protected double[] parameterStandardDeviation, parameterUncertainty; - protected double multiFactor = 10.0; - private int numberOfTuningParameters = 1; - protected Matrix coVarianceMatrix, parameterCorrelationMatrix; - protected double xVal[][]; - protected double expVal[]; - protected double absDev[], reldeviation[]; - protected double calcVal[]; - protected String[][] valTable; - protected double absStdDev = 0.0, biasdev = 0.0, incompleteGammaComplemented = 0.0; - - /** - *

- * Constructor for StatisticsBaseClass. - *

- */ - public StatisticsBaseClass() {} - - /** {@inheritDoc} */ - @Override - public StatisticsBaseClass clone() { - StatisticsBaseClass clonedClass = null; - try { - clonedClass = (StatisticsBaseClass) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); + static Logger logger = LogManager.getLogger(StatisticsBaseClass.class); + + protected SampleSet sampleSet = new SampleSet(); + protected double chiSquare = 0; + protected double[][] dyda; + protected double[] beta; + protected double[][] alpha; + protected double[] parameterStandardDeviation; + protected double[] parameterUncertainty; + protected double multiFactor = 10.0; + private int numberOfTuningParameters = 1; + protected Matrix coVarianceMatrix; + + protected Matrix parameterCorrelationMatrix; + + protected double[][] xVal; + protected double[] expVal; + protected double[] absDev; + + protected double[] reldeviation; + + protected double[] calcVal; + protected String[][] valTable; + protected double absStdDev = 0.0; + + protected double biasdev = 0.0; + + protected double incompleteGammaComplemented = 0.0; + + /** + *

+ * Constructor for StatisticsBaseClass. + *

+ */ + public StatisticsBaseClass() {} + + /** {@inheritDoc} */ + @Override + public StatisticsBaseClass clone() { + StatisticsBaseClass clonedClass = null; + try { + clonedClass = (StatisticsBaseClass) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + clonedClass.sampleSet = sampleSet.clone(); + + return clonedClass; + } + + /** + *

+ * Setter for the field sampleSet. + *

+ * + * @param sampleSet a {@link neqsim.statistics.parameterFitting.SampleSet} object + */ + public void setSampleSet(SampleSet sampleSet) { + this.sampleSet = sampleSet; + } + + /** + *

+ * addSampleSet. + *

+ * + * @param sampleSet a {@link neqsim.statistics.parameterFitting.SampleSet} object + */ + public void addSampleSet(SampleSet sampleSet) { + this.sampleSet.addSampleSet(sampleSet); + } + + /** {@inheritDoc} */ + @Override + public StatisticsBaseClass createNewRandomClass() { + StatisticsBaseClass newClass = this.clone(); + newClass.setSampleSet(this.sampleSet.createNewNormalDistributedSet()); + return newClass; + } + + /** + *

+ * calcValue. + *

+ * + * @param sample a {@link neqsim.statistics.parameterFitting.SampleValue} object + * @return a double + */ + public double calcValue(SampleValue sample) { + return sample.getFunction().calcValue(sample.getDependentValues()); + } + + /** + *

+ * checkBounds. + *

+ * + * @param newParameters a {@link Jama.Matrix} object + */ + public void checkBounds(Matrix newParameters) { + String okstring = ""; + int errors = 0; + if (sampleSet.getSample(0).getFunction().getBounds() != null) { + for (int i = 0; i < newParameters.getColumnDimension(); i++) { + if (newParameters.get(0, i) < sampleSet.getSample(0).getFunction().getLowerBound(i)) { + okstring += "parameter " + i + " lower than bound: " + newParameters.get(0, i) + "\n"; + errors++; + newParameters.set(0, i, sampleSet.getSample(0).getFunction().getLowerBound(i)); } - - clonedClass.sampleSet = sampleSet.clone(); - - return clonedClass; - } - - /** - *

- * Setter for the field sampleSet. - *

- * - * @param sampleSet a {@link neqsim.statistics.parameterFitting.SampleSet} object - */ - public void setSampleSet(SampleSet sampleSet) { - this.sampleSet = sampleSet; - } - - /** - *

- * addSampleSet. - *

- * - * @param sampleSet a {@link neqsim.statistics.parameterFitting.SampleSet} object - */ - public void addSampleSet(SampleSet sampleSet) { - this.sampleSet.addSampleSet(sampleSet); - } - - /** {@inheritDoc} */ - @Override - public StatisticsBaseClass createNewRandomClass() { - StatisticsBaseClass newClass = this.clone(); - newClass.setSampleSet(this.sampleSet.createNewNormalDistributedSet()); - return newClass; - } - - /** - *

- * calcValue. - *

- * - * @param sample a {@link neqsim.statistics.parameterFitting.SampleValue} object - * @return a double - */ - public double calcValue(SampleValue sample) { - return sample.getFunction().calcValue(sample.getDependentValues()); - } - - /** - *

- * checkBounds. - *

- * - * @param newParameters a {@link Jama.Matrix} object - */ - public void checkBounds(Matrix newParameters) { - String okstring = ""; - int errors = 0; - if (sampleSet.getSample(0).getFunction().getBounds() != null) { - for (int i = 0; i < newParameters.getColumnDimension(); i++) { - if (newParameters.get(0, i) < sampleSet.getSample(0).getFunction() - .getLowerBound(i)) { - okstring += "parameter " + i + " lower than bound: " + newParameters.get(0, i) - + "\n"; - errors++; - newParameters.set(0, i, sampleSet.getSample(0).getFunction().getLowerBound(i)); - } - if (newParameters.get(0, i) > sampleSet.getSample(0).getFunction() - .getUpperBound(i)) { - okstring += "parameter " + i + " higher than bound: " + newParameters.get(0, i) - + "\n"; - errors++; - newParameters.set(0, i, sampleSet.getSample(0).getFunction().getUpperBound(i)); - } - } - System.out.println("bounds checked - errors: " + errors); - System.out.println(okstring); + if (newParameters.get(0, i) > sampleSet.getSample(0).getFunction().getUpperBound(i)) { + okstring += "parameter " + i + " higher than bound: " + newParameters.get(0, i) + "\n"; + errors++; + newParameters.set(0, i, sampleSet.getSample(0).getFunction().getUpperBound(i)); } - } - - /** - *

- * calcTrueValue. - *

- * - * @param sample a {@link neqsim.statistics.parameterFitting.SampleValue} object - * @return a double - */ - public double calcTrueValue(SampleValue sample) { - return sample.getFunction().calcTrueValue(calcValue(sample)); - } - - /** - *

- * calcTrueValue. - *

- * - * @param val a double - * @param sample a {@link neqsim.statistics.parameterFitting.SampleValue} object - * @return a double - */ - public double calcTrueValue(double val, SampleValue sample) { - return sample.getFunction().calcTrueValue(val); - } - - /** - *

- * setFittingParameters. - *

- * - * @param parameterVals an array of {@link double} objects - */ - public void setFittingParameters(double[] parameterVals) { - for (int i = 0; i < sampleSet.getLength(); i++) { - for (int k = - 0; k < sampleSet.getSample(i).getFunction().getFittingParams().length; k++) { - sampleSet.getSample(i).getFunction().setFittingParams(k, parameterVals[k]); - } + } + System.out.println("bounds checked - errors: " + errors); + System.out.println(okstring); + } + } + + /** + *

+ * calcTrueValue. + *

+ * + * @param sample a {@link neqsim.statistics.parameterFitting.SampleValue} object + * @return a double + */ + public double calcTrueValue(SampleValue sample) { + return sample.getFunction().calcTrueValue(calcValue(sample)); + } + + /** + *

+ * calcTrueValue. + *

+ * + * @param val a double + * @param sample a {@link neqsim.statistics.parameterFitting.SampleValue} object + * @return a double + */ + public double calcTrueValue(double val, SampleValue sample) { + return sample.getFunction().calcTrueValue(val); + } + + /** + *

+ * setFittingParameters. + *

+ * + * @param parameterVals an array of type double + */ + public void setFittingParameters(double[] parameterVals) { + for (int i = 0; i < sampleSet.getLength(); i++) { + for (int k = 0; k < sampleSet.getSample(i).getFunction().getFittingParams().length; k++) { + sampleSet.getSample(i).getFunction().setFittingParams(k, parameterVals[k]); + } + } + } + + /** + *

+ * setFittingParameter. + *

+ * + * @param parameterNumber a int + * @param parameterVal a double + */ + public void setFittingParameter(int parameterNumber, double parameterVal) { + for (int i = 0; i < sampleSet.getLength(); i++) { + sampleSet.getSample(i).getFunction().setFittingParams(parameterNumber, parameterVal); + } + } + + /** + *

+ * getSample. + *

+ * + * @param i a int + * @return a {@link neqsim.statistics.parameterFitting.SampleValue} object + */ + public SampleValue getSample(int i) { + return sampleSet.getSample(i); + } + + /** {@inheritDoc} */ + @Override + public SampleSet getSampleSet() { + return sampleSet; + } + + /** + *

+ * calcChiSquare. + *

+ * + * @return a double + */ + public double calcChiSquare() { + calcVal = new double[sampleSet.getLength()]; + double chiSquare = 0; + for (int i = 0; i < sampleSet.getLength(); i++) { + calcVal[i] = this.calcValue(sampleSet.getSample(i)); + chiSquare += Math.pow((sampleSet.getSample(i).getSampleValue() - calcVal[i]) + / sampleSet.getSample(i).getStandardDeviation(), 2.0); + } + return chiSquare; + } + + /** + *

+ * calcAlphaMatrix. + *

+ * + * @return an array of type double + */ + public double[][] calcAlphaMatrix() { + double[][] alpha = new double[sampleSet.getSample(0).getFunction() + .getFittingParams().length][sampleSet.getSample(0).getFunction().getFittingParams().length]; + for (int i = 0; i < alpha.length; i++) { + for (int j = 0; j < alpha[0].length; j++) { + alpha[i][j] = 0.0; + for (int k = 0; k < sampleSet.getLength(); k++) { + alpha[i][j] += (dyda[k][i] * dyda[k][j]) + / Math.pow(sampleSet.getSample(k).getStandardDeviation(), 2.0); } - } - - /** - *

- * setFittingParameter. - *

- * - * @param parameterNumber a int - * @param parameterVal a double - */ - public void setFittingParameter(int parameterNumber, double parameterVal) { - for (int i = 0; i < sampleSet.getLength(); i++) { - sampleSet.getSample(i).getFunction().setFittingParams(parameterNumber, parameterVal); + if (i == j) { + alpha[i][j] *= (1.0 + multiFactor); } - } - - /** - *

- * getSample. - *

- * - * @param i a int - * @return a {@link neqsim.statistics.parameterFitting.SampleValue} object - */ - public SampleValue getSample(int i) { - return sampleSet.getSample(i); - } - - /** {@inheritDoc} */ - @Override - public SampleSet getSampleSet() { - return sampleSet; - } - - /** - *

- * calcChiSquare. - *

- * - * @return a double - */ - public double calcChiSquare() { - calcVal = new double[sampleSet.getLength()]; - double chiSquare = 0; - for (int i = 0; i < sampleSet.getLength(); i++) { - calcVal[i] = this.calcValue(sampleSet.getSample(i)); - chiSquare += Math.pow((sampleSet.getSample(i).getSampleValue() - calcVal[i]) - / sampleSet.getSample(i).getStandardDeviation(), 2.0); - } - return chiSquare; - } - - /** - *

- * calcAlphaMatrix. - *

- * - * @return an array of {@link double} objects - */ - public double[][] calcAlphaMatrix() { - double[][] alpha = - new double[sampleSet.getSample(0).getFunction().getFittingParams().length][sampleSet - .getSample(0).getFunction().getFittingParams().length]; - for (int i = 0; i < alpha.length; i++) { - for (int j = 0; j < alpha[0].length; j++) { - alpha[i][j] = 0.0; - for (int k = 0; k < sampleSet.getLength(); k++) { - alpha[i][j] += (dyda[k][i] * dyda[k][j]) - / Math.pow(sampleSet.getSample(k).getStandardDeviation(), 2.0); - } - if (i == j) { - alpha[i][j] *= (1.0 + multiFactor); - } - } - } - return alpha; - } - - /** - *

- * calcBetaMatrix. - *

- * - * @return an array of {@link double} objects - */ - public double[] calcBetaMatrix() { - double[] beta = new double[sampleSet.getSample(0).getFunction().getFittingParams().length]; - for (int i = 0; i < beta.length; i++) { - beta[i] = 0.0; - for (int j = 0; j < sampleSet.getLength(); j++) { - beta[i] += (sampleSet.getSample(j).getSampleValue() - calcVal[j]) - / Math.pow(sampleSet.getSample(j).getStandardDeviation(), 2.0) * dyda[j][i]; - } - } - return beta; - } - - /** - *

- * calcDerivatives. - *

- * - * @return an array of {@link double} objects - */ - public double[][] calcDerivatives() { - dyda = new double[sampleSet.getLength()][sampleSet.getSample(0).getFunction() - .getNumberOfFittingParams()]; - - for (int i = 0; i < sampleSet.getLength(); i++) { - for (int j = 0; j < sampleSet.getSample(0).getFunction() - .getNumberOfFittingParams(); j++) { - dyda[i][j] = NumericalDerivative.calcDerivative(this, i, j); - } - } - return dyda; - } - - // public void calcParameterStandardDeviation(){ - // parameterStandardDeviation = new - // double[sampleSet.getSample(0).getFunction().getNumberOfFittingParams()]; - // for(int - // j=0;j - * calcParameterStandardDeviation. - *

- */ - public void calcParameterStandardDeviation() { - parameterStandardDeviation = - new double[sampleSet.getSample(0).getFunction().getNumberOfFittingParams()]; - for (int j = 0; j < sampleSet.getSample(0).getFunction().getNumberOfFittingParams(); j++) { - parameterStandardDeviation[j] = Math.sqrt(coVarianceMatrix.get(j, j)); - } - } - - /** - * Calculates the confidence interval given by 95.4%. See Numerical Recepies in C. p. 697 - */ - public void calcParameterUncertainty() { - parameterUncertainty = - new double[sampleSet.getSample(0).getFunction().getNumberOfFittingParams()]; - for (int j = 0; j < sampleSet.getSample(0).getFunction().getNumberOfFittingParams(); j++) { - parameterUncertainty[j] = Math.sqrt(4.0) * Math.sqrt(coVarianceMatrix.get(j, j)); - } - } - - /** - *

- * calcCoVarianceMatrix. - *

- */ - public void calcCoVarianceMatrix() { - double old = multiFactor; - multiFactor = 0.0; - calcAlphaMatrix(); - coVarianceMatrix = new Matrix(alpha).inverse(); - multiFactor = old; - } - - /** - *

- * calcCorrelationMatrix. - *

- */ - public void calcCorrelationMatrix() { - parameterCorrelationMatrix = - new Matrix(sampleSet.getSample(0).getFunction().getNumberOfFittingParams(), - sampleSet.getSample(0).getFunction().getNumberOfFittingParams()); - for (int i = 0; i < sampleSet.getSample(0).getFunction().getNumberOfFittingParams(); i++) { - for (int j = 0; j < sampleSet.getSample(0).getFunction() - .getNumberOfFittingParams(); j++) { - double temp = coVarianceMatrix.get(i, j) - / Math.sqrt(coVarianceMatrix.get(j, j) * coVarianceMatrix.get(i, i)); - parameterCorrelationMatrix.set(i, j, temp); - } - } - } - - /** {@inheritDoc} */ - @Override - public abstract void init(); - - /** {@inheritDoc} */ - @Override - public abstract void solve(); - - /** - *

- * runMonteCarloSimulation. - *

- */ - public void runMonteCarloSimulation() { - neqsim.statistics.monteCarloSimulation.MonteCarloSimulation montCarlSim = - new neqsim.statistics.monteCarloSimulation.MonteCarloSimulation(this, 10); - montCarlSim.runSimulation(); - } - - /** {@inheritDoc} */ - @Override - public void runMonteCarloSimulation(int numRuns) { - neqsim.statistics.monteCarloSimulation.MonteCarloSimulation montCarlSim = - new neqsim.statistics.monteCarloSimulation.MonteCarloSimulation(this, numRuns); - montCarlSim.runSimulation(); - } - - /** - *

- * calcAbsDev. - *

- */ - public void calcAbsDev() { - setFittingParameters(sampleSet.getSample(0).getFunction().getFittingParams()); - xVal = new double[sampleSet.getSample(0).getDependentValues().length][sampleSet - .getLength()]; - expVal = new double[sampleSet.getLength()]; - absDev = new double[sampleSet.getLength()]; - calcVal = new double[sampleSet.getLength()]; - - double rmsDev = 0.0; - double dev = 0, dev2 = 0.0; - double shiSq = 0.0; - - biasdev = 0.0; - absStdDev = 0.0; - - for (int i = 0; i < sampleSet.getLength(); i++) { - expVal[i] = this.calcTrueValue(sampleSet.getSample(i).getSampleValue(), - sampleSet.getSample(i)); - calcVal[i] = this.calcTrueValue(sampleSet.getSample(i)); - shiSq += Math.pow( - (calcVal[i] - expVal[i]) / sampleSet.getSample(i).getStandardDeviation(), 2.0); - absDev[i] = Math.abs((calcVal[i] - expVal[i]) / expVal[i] * 100.0); - dev = Math.abs((calcVal[i] - expVal[i]) / expVal[i] * 100.0); - dev2 = Math.pow(calcVal[i] - expVal[i], 2.0); - absStdDev += dev; - rmsDev += dev2; - System.out.println("x " + sampleSet.getSample(i).getDependentValue(0) + " val: " - + calcVal[i] + " exp val " + expVal[i] + " deviation " + dev); - for (int j = 0; j < sampleSet.getSample(0).getDependentValues().length; j++) { - xVal[j][i] = sampleSet.getSample(i).getDependentValue(j); - } - biasdev += (calcVal[i] - expVal[i]) / expVal[i] * 100.0; - } - absStdDev /= sampleSet.getLength(); - rmsDev = Math.sqrt(rmsDev / sampleSet.getLength()); - biasdev /= sampleSet.getLength(); - chiSquare = shiSq; - - System.out.println("Shi-Square: " + shiSq); - System.out.println("bias dev: " + biasdev); - System.out.println("abs dev " + absStdDev); - System.out.println("rms dev " + rmsDev * 100); - } - - /** - *

- * displayValues. - *

- */ - public void displayValues() { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.#####E0"); - JDialog dialog = new JDialog(new JFrame(), "Results from Parameter Fitting"); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new FlowLayout()); - - valTable = new String[sampleSet.getLength() - + 10][sampleSet.getSample(0).getDependentValues().length + 7]; - String[] names = {"point", "x", "expY", "calcY", "abs dev [%]", "reference", "description"}; - valTable[0][0] = ""; - valTable[0][1] = ""; - valTable[0][2] = ""; - valTable[0][3] = ""; - StringBuffer buf = new StringBuffer(); - FieldPosition test = new FieldPosition(0); - - for (int j = 0; j < sampleSet.getLength(); j++) { - valTable[j + 1][0] = "" + j; - buf = new StringBuffer(); - valTable[j + 1][1] = nf.format(xVal[0][j], buf, test).toString(); - buf = new StringBuffer(); - valTable[j + 1][2] = nf.format(expVal[j], buf, test).toString(); - buf = new StringBuffer(); - valTable[j + 1][3] = nf.format(calcVal[j], buf, test).toString(); - buf = new StringBuffer(); - valTable[j + 1][4] = nf.format(absDev[j], buf, test).toString(); - buf = new StringBuffer(); - valTable[j + 1][5] = sampleSet.getSample(j).getReference(); - valTable[j + 1][6] = sampleSet.getSample(j).getDescription(); - } - - for (int j = 0; j < sampleSet.getLength(); j++) { - for (int i = 0; i < sampleSet.getSample(j).getDependentValues().length; i++) { - buf = new StringBuffer(); - valTable[j + 1][7 + i] = nf - .format(sampleSet.getSample(j).getDependentValue(i), buf, test).toString(); - } - } - - JTable Jtab = new JTable(valTable, names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); - dialog.pack(); - dialog.setVisible(true); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.###E0"); - JDialog dialog = new JDialog(new JFrame(), "Results from Parameter Fitting"); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new FlowLayout()); - - String[][] table = new String[15][5]; - String[] names = {"Parameter", "Value", "Standard deviation", "Uncertatnty ", "--"}; - table[0][0] = ""; - table[0][1] = ""; - table[0][2] = ""; - table[0][3] = ""; - StringBuffer buf = new StringBuffer(); - FieldPosition test = new FieldPosition(0); - - for (int j = 0; j < sampleSet.getSample(0).getFunction().getFittingParams().length; j++) { - table[j + 1][0] = "parameter " + j; - buf = new StringBuffer(); - table[j + 1][1] = - nf.format(sampleSet.getSample(0).getFunction().getFittingParams()[j], buf, test) - .toString(); - } - - int numb = sampleSet.getSample(0).getFunction().getFittingParams().length; - - table[numb + 2][0] = "Number Of Data Points "; - buf = new StringBuffer(); - nf.applyPattern("#"); - table[numb + 2][1] = nf.format(sampleSet.getLength(), buf, test).toString(); - - table[numb + 3][0] = "Shi-Square "; - buf = new StringBuffer(); - nf.applyPattern("#.###E0"); - table[numb + 3][1] = nf.format(chiSquare, buf, test).toString(); - table[numb + 4][0] = "Abs.rel.dev (%) "; - buf = new StringBuffer(); - table[numb + 4][1] = nf.format(absStdDev, buf, test).toString(); - table[numb + 5][0] = "Bias.dev (%) "; - buf = new StringBuffer(); - table[numb + 5][1] = nf.format(biasdev, buf, test).toString(); - - JTable Jtab = new JTable(table, names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); - dialog.pack(); - dialog.setVisible(true); - } - - /** - *

- * displayResultWithDeviation. - *

- */ - public void displayResultWithDeviation() { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.###E0"); - - calcDeviation(); - JDialog dialog = new JDialog(new JFrame(), "Results from Parameter Fitting"); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new FlowLayout()); - - String[][] table = new String[15][5]; - String[] names = {"Parameter", "Value", "Standard deviation", "Uncertatnty ", "--"}; - table[0][0] = ""; - table[0][1] = ""; - table[0][2] = ""; - table[0][3] = ""; - StringBuffer buf = new StringBuffer(); - FieldPosition test = new FieldPosition(0); - - for (int j = 0; j < sampleSet.getSample(0).getFunction().getFittingParams().length; j++) { - table[j + 1][0] = "parameter " + j; - buf = new StringBuffer(); - table[j + 1][1] = - nf.format(sampleSet.getSample(0).getFunction().getFittingParams()[j], buf, test) - .toString(); - buf = new StringBuffer(); - table[j + 1][2] = nf.format(parameterStandardDeviation[j], buf, test).toString(); - buf = new StringBuffer(); - table[j + 1][3] = nf.format(parameterUncertainty[j], buf, test).toString(); - table[j + 1][4] = "[-]"; - } - - int numb = sampleSet.getSample(0).getFunction().getFittingParams().length; - - table[numb + 2][0] = "Number Of Data Points "; - buf = new StringBuffer(); - nf.applyPattern("#"); - table[numb + 2][1] = nf.format(sampleSet.getLength(), buf, test).toString(); - - table[numb + 3][0] = "Shi-Square "; + } + } + return alpha; + } + + /** + *

+ * calcBetaMatrix. + *

+ * + * @return an array of type double + */ + public double[] calcBetaMatrix() { + double[] beta = new double[sampleSet.getSample(0).getFunction().getFittingParams().length]; + for (int i = 0; i < beta.length; i++) { + beta[i] = 0.0; + for (int j = 0; j < sampleSet.getLength(); j++) { + beta[i] += (sampleSet.getSample(j).getSampleValue() - calcVal[j]) + / Math.pow(sampleSet.getSample(j).getStandardDeviation(), 2.0) * dyda[j][i]; + } + } + return beta; + } + + /** + *

+ * calcDerivatives. + *

+ * + * @return an array of type double + */ + public double[][] calcDerivatives() { + dyda = new double[sampleSet.getLength()][sampleSet.getSample(0).getFunction() + .getNumberOfFittingParams()]; + + for (int i = 0; i < sampleSet.getLength(); i++) { + for (int j = 0; j < sampleSet.getSample(0).getFunction().getNumberOfFittingParams(); j++) { + dyda[i][j] = NumericalDerivative.calcDerivative(this, i, j); + } + } + return dyda; + } + + // public void calcParameterStandardDeviation(){ + // parameterStandardDeviation = new + // double[sampleSet.getSample(0).getFunction().getNumberOfFittingParams()]; + // for(int + // j=0;j + * calcParameterStandardDeviation. + *

+ */ + public void calcParameterStandardDeviation() { + parameterStandardDeviation = + new double[sampleSet.getSample(0).getFunction().getNumberOfFittingParams()]; + for (int j = 0; j < sampleSet.getSample(0).getFunction().getNumberOfFittingParams(); j++) { + parameterStandardDeviation[j] = Math.sqrt(coVarianceMatrix.get(j, j)); + } + } + + /** + * Calculates the confidence interval given by 95.4%. See Numerical Recepies in C. p. 697 + */ + public void calcParameterUncertainty() { + parameterUncertainty = + new double[sampleSet.getSample(0).getFunction().getNumberOfFittingParams()]; + for (int j = 0; j < sampleSet.getSample(0).getFunction().getNumberOfFittingParams(); j++) { + parameterUncertainty[j] = Math.sqrt(4.0) * Math.sqrt(coVarianceMatrix.get(j, j)); + } + } + + /** + *

+ * calcCoVarianceMatrix. + *

+ */ + public void calcCoVarianceMatrix() { + double old = multiFactor; + multiFactor = 0.0; + calcAlphaMatrix(); + coVarianceMatrix = new Matrix(alpha).inverse(); + multiFactor = old; + } + + /** + *

+ * calcCorrelationMatrix. + *

+ */ + public void calcCorrelationMatrix() { + parameterCorrelationMatrix = + new Matrix(sampleSet.getSample(0).getFunction().getNumberOfFittingParams(), + sampleSet.getSample(0).getFunction().getNumberOfFittingParams()); + for (int i = 0; i < sampleSet.getSample(0).getFunction().getNumberOfFittingParams(); i++) { + for (int j = 0; j < sampleSet.getSample(0).getFunction().getNumberOfFittingParams(); j++) { + double temp = coVarianceMatrix.get(i, j) + / Math.sqrt(coVarianceMatrix.get(j, j) * coVarianceMatrix.get(i, i)); + parameterCorrelationMatrix.set(i, j, temp); + } + } + } + + /** {@inheritDoc} */ + @Override + public abstract void init(); + + /** {@inheritDoc} */ + @Override + public abstract void solve(); + + /** + *

+ * runMonteCarloSimulation. + *

+ */ + public void runMonteCarloSimulation() { + neqsim.statistics.monteCarloSimulation.MonteCarloSimulation montCarlSim = + new neqsim.statistics.monteCarloSimulation.MonteCarloSimulation(this, 10); + montCarlSim.runSimulation(); + } + + /** {@inheritDoc} */ + @Override + public void runMonteCarloSimulation(int numRuns) { + neqsim.statistics.monteCarloSimulation.MonteCarloSimulation montCarlSim = + new neqsim.statistics.monteCarloSimulation.MonteCarloSimulation(this, numRuns); + montCarlSim.runSimulation(); + } + + /** + *

+ * calcAbsDev. + *

+ */ + public void calcAbsDev() { + setFittingParameters(sampleSet.getSample(0).getFunction().getFittingParams()); + xVal = new double[sampleSet.getSample(0).getDependentValues().length][sampleSet.getLength()]; + expVal = new double[sampleSet.getLength()]; + absDev = new double[sampleSet.getLength()]; + calcVal = new double[sampleSet.getLength()]; + + double rmsDev = 0.0; + double dev = 0; + double dev2 = 0.0; + double shiSq = 0.0; + + biasdev = 0.0; + absStdDev = 0.0; + + for (int i = 0; i < sampleSet.getLength(); i++) { + expVal[i] = + this.calcTrueValue(sampleSet.getSample(i).getSampleValue(), sampleSet.getSample(i)); + calcVal[i] = this.calcTrueValue(sampleSet.getSample(i)); + shiSq += + Math.pow((calcVal[i] - expVal[i]) / sampleSet.getSample(i).getStandardDeviation(), 2.0); + absDev[i] = Math.abs((calcVal[i] - expVal[i]) / expVal[i] * 100.0); + dev = Math.abs((calcVal[i] - expVal[i]) / expVal[i] * 100.0); + dev2 = Math.pow(calcVal[i] - expVal[i], 2.0); + absStdDev += dev; + rmsDev += dev2; + System.out.println("x " + sampleSet.getSample(i).getDependentValue(0) + " val: " + calcVal[i] + + " exp val " + expVal[i] + " deviation " + dev); + for (int j = 0; j < sampleSet.getSample(0).getDependentValues().length; j++) { + xVal[j][i] = sampleSet.getSample(i).getDependentValue(j); + } + biasdev += (calcVal[i] - expVal[i]) / expVal[i] * 100.0; + } + absStdDev /= sampleSet.getLength(); + rmsDev = Math.sqrt(rmsDev / sampleSet.getLength()); + biasdev /= sampleSet.getLength(); + chiSquare = shiSq; + + System.out.println("Shi-Square: " + shiSq); + System.out.println("bias dev: " + biasdev); + System.out.println("abs dev " + absStdDev); + System.out.println("rms dev " + rmsDev * 100); + } + + /** + *

+ * displayValues. + *

+ */ + public void displayValues() { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.#####E0"); + JDialog dialog = new JDialog(new JFrame(), "Results from Parameter Fitting"); + Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new FlowLayout()); + + valTable = new String[sampleSet.getLength() + + 10][sampleSet.getSample(0).getDependentValues().length + 7]; + String[] names = {"point", "x", "expY", "calcY", "abs dev [%]", "reference", "description"}; + valTable[0][0] = ""; + valTable[0][1] = ""; + valTable[0][2] = ""; + valTable[0][3] = ""; + StringBuffer buf = new StringBuffer(); + FieldPosition test = new FieldPosition(0); + + for (int j = 0; j < sampleSet.getLength(); j++) { + valTable[j + 1][0] = "" + j; + buf = new StringBuffer(); + valTable[j + 1][1] = nf.format(xVal[0][j], buf, test).toString(); + buf = new StringBuffer(); + valTable[j + 1][2] = nf.format(expVal[j], buf, test).toString(); + buf = new StringBuffer(); + valTable[j + 1][3] = nf.format(calcVal[j], buf, test).toString(); + buf = new StringBuffer(); + valTable[j + 1][4] = nf.format(absDev[j], buf, test).toString(); + buf = new StringBuffer(); + valTable[j + 1][5] = sampleSet.getSample(j).getReference(); + valTable[j + 1][6] = sampleSet.getSample(j).getDescription(); + } + + for (int j = 0; j < sampleSet.getLength(); j++) { + for (int i = 0; i < sampleSet.getSample(j).getDependentValues().length; i++) { buf = new StringBuffer(); - nf.applyPattern("#.###E0"); - table[numb + 3][1] = nf.format(chiSquare, buf, test).toString(); - table[numb + 4][0] = "Abs.rel.dev (%) "; + valTable[j + 1][7 + i] = + nf.format(sampleSet.getSample(j).getDependentValue(i), buf, test).toString(); + } + } + + JTable Jtab = new JTable(valTable, names); + JScrollPane scrollpane = new JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + dialog.pack(); + dialog.setVisible(true); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.###E0"); + JDialog dialog = new JDialog(new JFrame(), "Results from Parameter Fitting"); + Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new FlowLayout()); + + String[][] table = new String[15][5]; + String[] names = {"Parameter", "Value", "Standard deviation", "Uncertatnty ", "--"}; + table[0][0] = ""; + table[0][1] = ""; + table[0][2] = ""; + table[0][3] = ""; + StringBuffer buf = new StringBuffer(); + FieldPosition test = new FieldPosition(0); + + for (int j = 0; j < sampleSet.getSample(0).getFunction().getFittingParams().length; j++) { + table[j + 1][0] = "parameter " + j; + buf = new StringBuffer(); + table[j + 1][1] = nf + .format(sampleSet.getSample(0).getFunction().getFittingParams()[j], buf, test).toString(); + } + + int numb = sampleSet.getSample(0).getFunction().getFittingParams().length; + + table[numb + 2][0] = "Number Of Data Points "; + buf = new StringBuffer(); + nf.applyPattern("#"); + table[numb + 2][1] = nf.format(sampleSet.getLength(), buf, test).toString(); + + table[numb + 3][0] = "Shi-Square "; + buf = new StringBuffer(); + nf.applyPattern("#.###E0"); + table[numb + 3][1] = nf.format(chiSquare, buf, test).toString(); + table[numb + 4][0] = "Abs.rel.dev (%) "; + buf = new StringBuffer(); + table[numb + 4][1] = nf.format(absStdDev, buf, test).toString(); + table[numb + 5][0] = "Bias.dev (%) "; + buf = new StringBuffer(); + table[numb + 5][1] = nf.format(biasdev, buf, test).toString(); + + JTable Jtab = new JTable(table, names); + JScrollPane scrollpane = new JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + dialog.pack(); + dialog.setVisible(true); + } + + /** + *

+ * displayResultWithDeviation. + *

+ */ + public void displayResultWithDeviation() { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.###E0"); + + calcDeviation(); + JDialog dialog = new JDialog(new JFrame(), "Results from Parameter Fitting"); + Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new FlowLayout()); + + String[][] table = new String[15][5]; + String[] names = {"Parameter", "Value", "Standard deviation", "Uncertatnty ", "--"}; + table[0][0] = ""; + table[0][1] = ""; + table[0][2] = ""; + table[0][3] = ""; + StringBuffer buf = new StringBuffer(); + FieldPosition test = new FieldPosition(0); + + for (int j = 0; j < sampleSet.getSample(0).getFunction().getFittingParams().length; j++) { + table[j + 1][0] = "parameter " + j; + buf = new StringBuffer(); + table[j + 1][1] = nf + .format(sampleSet.getSample(0).getFunction().getFittingParams()[j], buf, test).toString(); + buf = new StringBuffer(); + table[j + 1][2] = nf.format(parameterStandardDeviation[j], buf, test).toString(); + buf = new StringBuffer(); + table[j + 1][3] = nf.format(parameterUncertainty[j], buf, test).toString(); + table[j + 1][4] = "[-]"; + } + + int numb = sampleSet.getSample(0).getFunction().getFittingParams().length; + + table[numb + 2][0] = "Number Of Data Points "; + buf = new StringBuffer(); + nf.applyPattern("#"); + table[numb + 2][1] = nf.format(sampleSet.getLength(), buf, test).toString(); + + table[numb + 3][0] = "Shi-Square "; + buf = new StringBuffer(); + nf.applyPattern("#.###E0"); + table[numb + 3][1] = nf.format(chiSquare, buf, test).toString(); + table[numb + 4][0] = "Abs.rel.dev (%) "; + buf = new StringBuffer(); + table[numb + 4][1] = nf.format(absStdDev, buf, test).toString(); + table[numb + 5][0] = "Bias.dev (%) "; + buf = new StringBuffer(); + table[numb + 5][1] = nf.format(biasdev, buf, test).toString(); + table[numb + 6][0] = "Goodnes Of Fit (0-1)"; + buf = new StringBuffer(); + nf.applyPattern("#.###E0"); + table[numb + 6][1] = nf.format(incompleteGammaComplemented, buf, test).toString(); + + JTable Jtab = new JTable(table, names); + JScrollPane scrollpane = new JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + dialog.pack(); + dialog.setVisible(true); + // Matrix te = parameterStdDevMatrix.copy(); + // te.display("Std. Deviation" ,5); + // coVarianceMatrix.display("CoVariance",5); + // parameterCorrelationMatrix.display("Correlation",5); + displayMatrix(coVarianceMatrix, "CoVariance", 5); + displayMatrix(parameterCorrelationMatrix, "Correlation", 5); + // parameterUncertaintyMatrix.display("Param. uncertatnty",5); + } + + /** + *

+ * displayMatrix. + *

+ * + * @param coVarianceMatrix a {@link Jama.Matrix} object + * @param name a {@link java.lang.String} object + * @param d a int + */ + public void displayMatrix(Matrix coVarianceMatrix, String name, int d) { + int m = coVarianceMatrix.getRowDimension(); + int n = coVarianceMatrix.getColumnDimension(); + String[] names = new String[m]; + StringBuffer buf = new StringBuffer(); + DecimalFormat form = new DecimalFormat(); + form.setMinimumIntegerDigits(1); + form.setMaximumFractionDigits(d); + form.setMinimumFractionDigits(d); + form.setGroupingUsed(false); + form.applyPattern("#.##E0"); + FieldPosition test = new FieldPosition(0); + String[][] X = new String[m][n]; + for (int i = 0; i < m; i++) { + names[i] = name + " " + i; + for (int j = 0; j < n; j++) { buf = new StringBuffer(); - table[numb + 4][1] = nf.format(absStdDev, buf, test).toString(); - table[numb + 5][0] = "Bias.dev (%) "; - buf = new StringBuffer(); - table[numb + 5][1] = nf.format(biasdev, buf, test).toString(); - table[numb + 6][0] = "Goodnes Of Fit (0-1)"; - buf = new StringBuffer(); - nf.applyPattern("#.###E0"); - table[numb + 6][1] = nf.format(incompleteGammaComplemented, buf, test).toString(); - - JTable Jtab = new JTable(table, names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); - dialog.pack(); - dialog.setVisible(true); - // Matrix te = parameterStdDevMatrix.copy(); - // te.display("Std. Deviation" ,5); - // coVarianceMatrix.display("CoVariance",5); - // parameterCorrelationMatrix.display("Correlation",5); - displayMatrix(coVarianceMatrix, "CoVariance", 5); - displayMatrix(parameterCorrelationMatrix, "Correlation", 5); - // parameterUncertaintyMatrix.display("Param. uncertatnty",5); - } - - /** - *

- * displayMatrix. - *

- * - * @param coVarianceMatrix a {@link Jama.Matrix} object - * @param name a {@link java.lang.String} object - * @param d a int - */ - public void displayMatrix(Matrix coVarianceMatrix, String name, int d) { - int m = coVarianceMatrix.getRowDimension(); - int n = coVarianceMatrix.getColumnDimension(); - String[] names = new String[m]; - StringBuffer buf = new StringBuffer(); - DecimalFormat form = new DecimalFormat(); - form.setMinimumIntegerDigits(1); - form.setMaximumFractionDigits(d); - form.setMinimumFractionDigits(d); - form.setGroupingUsed(false); - form.applyPattern("#.##E0"); - FieldPosition test = new FieldPosition(0); - String[][] X = new String[m][n]; - for (int i = 0; i < m; i++) { - names[i] = name + " " + i; - for (int j = 0; j < n; j++) { - buf = new StringBuffer(); - X[i][j] = form.format(coVarianceMatrix.get(i, j), buf, test).toString(); - } - } - - JDialog dialog = new JDialog(new JFrame(), name); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new FlowLayout()); - JTable Jtab = new JTable(X, names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); - dialog.pack(); - dialog.setVisible(true); - } - - /** - *

- * calcDeviation. - *

- */ - public void calcDeviation() { - setFittingParameters(sampleSet.getSample(0).getFunction().getFittingParams()); - init(); - - System.out.println(""); - System.out.println("Co-variance matrix : "); - - calcCoVarianceMatrix(); - // coVarianceMatrix.print(2,10); - - System.out.println(""); - System.out.println("Parameter uncertanty : "); - calcParameterUncertainty(); - // parameterUncertaintyMatrix = new Matrix(parameterUncertainty,1); - // parameterUncertaintyMatrix.print(2,10); - - System.out.println(""); - System.out.println("Parameter std deviation : "); - calcParameterStandardDeviation(); - // parameterStdDevMatrix = new Matrix(parameterStandardDeviation,1); - // parameterStdDevMatrix.print(2,10); - calcCorrelationMatrix(); - - incompleteGammaComplemented = cern.jet.stat.Gamma.incompleteGammaComplement( - (sampleSet.getLength() - - sampleSet.getSample(0).getFunction().getFittingParams().length) / 2.0, - 0.5 * chiSquare); - } - - /** {@inheritDoc} */ - @Override - public void writeToTextFile(String name) { - neqsim.dataPresentation.fileHandeling.createTextFile.TextFile tempfile = - new neqsim.dataPresentation.fileHandeling.createTextFile.TextFile(); - tempfile.setOutputFileName(name); - tempfile.setValues(valTable); - tempfile.createFile(); - } - - /** - *

- * displaySimple. - *

- */ - public void displaySimple() { - calcAbsDev(); - try { - //displayGraph(); - } catch (Exception e) { - System.out.println("could not display graph"); - e.printStackTrace(); - } - try { - displayResult(); - } catch (Exception e) { - System.out.println("could not display graph"); - e.printStackTrace(); - } - try { - displayValues(); - } catch (Exception e) { - System.out.println("could not display graph"); - e.printStackTrace(); - } - } - - /** {@inheritDoc} */ - @Override - public void displayCurveFit() { - calcAbsDev(); - try { - //displayGraph(); - } catch (Exception e) { - System.out.println("could not display graph"); - e.printStackTrace(); - } - try { - displayResult(); - } catch (Exception e) { - System.out.println("could not display graph"); - e.printStackTrace(); - } - try { - displayValues(); - } catch (Exception e) { - System.out.println("could not display graph"); - e.printStackTrace(); - } - try { - displayResultWithDeviation(); - } catch (Exception e) { - System.out.println("could not calc deviation"); - e.printStackTrace(); - } - } - - /** {@inheritDoc} */ - @Override - public int getNumberOfTuningParameters() { - return numberOfTuningParameters; - } - - /** {@inheritDoc} */ - @Override - public void setNumberOfTuningParameters(int numberOfTuningParameters) { - this.numberOfTuningParameters = numberOfTuningParameters; - } + X[i][j] = form.format(coVarianceMatrix.get(i, j), buf, test).toString(); + } + } + + JDialog dialog = new JDialog(new JFrame(), name); + Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new FlowLayout()); + JTable Jtab = new JTable(X, names); + JScrollPane scrollpane = new JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + dialog.pack(); + dialog.setVisible(true); + } + + /** + *

+ * calcDeviation. + *

+ */ + public void calcDeviation() { + setFittingParameters(sampleSet.getSample(0).getFunction().getFittingParams()); + init(); + + System.out.println(""); + System.out.println("Co-variance matrix : "); + + calcCoVarianceMatrix(); + // coVarianceMatrix.print(2,10); + + System.out.println(""); + System.out.println("Parameter uncertanty : "); + calcParameterUncertainty(); + // parameterUncertaintyMatrix = new Matrix(parameterUncertainty,1); + // parameterUncertaintyMatrix.print(2,10); + + System.out.println(""); + System.out.println("Parameter std deviation : "); + calcParameterStandardDeviation(); + // parameterStdDevMatrix = new Matrix(parameterStandardDeviation,1); + // parameterStdDevMatrix.print(2,10); + calcCorrelationMatrix(); + + incompleteGammaComplemented = cern.jet.stat.Gamma.incompleteGammaComplement( + (sampleSet.getLength() - sampleSet.getSample(0).getFunction().getFittingParams().length) + / 2.0, + 0.5 * chiSquare); + } + + /** {@inheritDoc} */ + @Override + public void writeToTextFile(String name) { + neqsim.dataPresentation.fileHandeling.createTextFile.TextFile tempfile = + new neqsim.dataPresentation.fileHandeling.createTextFile.TextFile(); + tempfile.setOutputFileName(name); + tempfile.setValues(valTable); + tempfile.createFile(); + } + + /** + *

+ * displaySimple. + *

+ */ + public void displaySimple() { + calcAbsDev(); + try { + // displayGraph(); + } catch (Exception ex) { + System.out.println("could not display graph"); + logger.error(ex.getMessage(), ex); + } + try { + displayResult(); + } catch (Exception ex) { + System.out.println("could not display graph"); + logger.error(ex.getMessage(), ex); + } + try { + displayValues(); + } catch (Exception ex) { + System.out.println("could not display graph"); + logger.error(ex.getMessage(), ex); + } + } + + /** {@inheritDoc} */ + @Override + public void displayCurveFit() { + calcAbsDev(); + try { + // displayGraph(); + } catch (Exception ex) { + System.out.println("could not display graph"); + logger.error(ex.getMessage(), ex); + } + try { + displayResult(); + } catch (Exception ex) { + System.out.println("could not display graph"); + logger.error(ex.getMessage(), ex); + } + try { + displayValues(); + } catch (Exception ex) { + System.out.println("could not display graph"); + logger.error(ex.getMessage(), ex); + } + try { + displayResultWithDeviation(); + } catch (Exception ex) { + System.out.println("could not calc deviation"); + logger.error(ex.getMessage(), ex); + } + } + + /** {@inheritDoc} */ + @Override + public int getNumberOfTuningParameters() { + return numberOfTuningParameters; + } + + /** {@inheritDoc} */ + @Override + public void setNumberOfTuningParameters(int numberOfTuningParameters) { + this.numberOfTuningParameters = numberOfTuningParameters; + } } diff --git a/src/main/java/neqsim/statistics/parameterFitting/StatisticsInterface.java b/src/main/java/neqsim/statistics/parameterFitting/StatisticsInterface.java index ca6ac8f765..6378fd9080 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/StatisticsInterface.java +++ b/src/main/java/neqsim/statistics/parameterFitting/StatisticsInterface.java @@ -3,6 +3,7 @@ * * Created on 30. januar 2001, 18:25 */ + package neqsim.statistics.parameterFitting; /** @@ -14,94 +15,85 @@ * @version $Id: $Id */ public interface StatisticsInterface { - /** - *

- * createNewRandomClass. - *

- * - * @return a {@link neqsim.statistics.parameterFitting.StatisticsBaseClass} object - */ - public StatisticsBaseClass createNewRandomClass(); - - /** - *

- * solve. - *

- */ - public void solve(); + /** + *

+ * createNewRandomClass. + *

+ * + * @return a {@link neqsim.statistics.parameterFitting.StatisticsBaseClass} object + */ + public StatisticsBaseClass createNewRandomClass(); - /** - *

- * init. - *

- */ - public void init(); + /** + *

+ * solve. + *

+ */ + public void solve(); - /** - *

- * getSampleSet. - *

- * - * @return a {@link neqsim.statistics.parameterFitting.SampleSet} object - */ - public SampleSet getSampleSet(); + /** + *

+ * init. + *

+ */ + public void init(); - /** - *

- * displayResult. - *

- */ - public void displayResult(); + /** + *

+ * getSampleSet. + *

+ * + * @return a {@link neqsim.statistics.parameterFitting.SampleSet} object + */ + public SampleSet getSampleSet(); - /** - *

- * displayCurveFit. - *

- */ - public void displayCurveFit(); + /** + *

+ * displayResult. + *

+ */ + public void displayResult(); - /** - *

- * writeToTextFile. - *

- * - * @param name a {@link java.lang.String} object - */ - public void writeToTextFile(String name); + /** + *

+ * displayCurveFit. + *

+ */ + public void displayCurveFit(); - /** - *

- * writeToCdfFile. - *

- * - * @param name a {@link java.lang.String} object - */ - //public void writeToCdfFile(String name); + /** + *

+ * writeToTextFile. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void writeToTextFile(String name); - /** - *

- * getNumberOfTuningParameters. - *

- * - * @return a int - */ - public int getNumberOfTuningParameters(); + /** + *

+ * getNumberOfTuningParameters. + *

+ * + * @return a int + */ + public int getNumberOfTuningParameters(); - /** - *

- * setNumberOfTuningParameters. - *

- * - * @param numberOfTuningParameters a int - */ - public void setNumberOfTuningParameters(int numberOfTuningParameters); + /** + *

+ * setNumberOfTuningParameters. + *

+ * + * @param numberOfTuningParameters a int + */ + public void setNumberOfTuningParameters(int numberOfTuningParameters); - /** - *

- * runMonteCarloSimulation. - *

- * - * @param numberOfRuns a int - */ - public void runMonteCarloSimulation(int numberOfRuns); + /** + *

+ * runMonteCarloSimulation. + *

+ * + * @param numberOfRuns a int + */ + public void runMonteCarloSimulation(int numberOfRuns); } diff --git a/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardt.java b/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardt.java index 38a136ee04..64dc6d3ca6 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardt.java +++ b/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardt.java @@ -3,6 +3,7 @@ * * Created on 22. januar 2001, 23:00 */ + package neqsim.statistics.parameterFitting.nonLinearParameterFitting; import Jama.Matrix; @@ -17,143 +18,143 @@ * @version $Id: $Id */ public class LevenbergMarquardt extends StatisticsBaseClass { - double oldChiSquare = 1e100; - double newChiSquare = 0; - Matrix parameterStdDevMatrix; - Matrix parameterUncertaintyMatrix; - Thread thisThread; - boolean solved = false; - private int maxNumberOfIterations = 50; - - /** - *

- * Constructor for LevenbergMarquardt. - *

- */ - public LevenbergMarquardt() { - thisThread = new Thread(); - } + double oldChiSquare = 1e100; + double newChiSquare = 0; + Matrix parameterStdDevMatrix; + Matrix parameterUncertaintyMatrix; + Thread thisThread; + boolean solved = false; + private int maxNumberOfIterations = 50; - /** {@inheritDoc} */ - @Override - public LevenbergMarquardt clone() { - LevenbergMarquardt clonedClass = null; - try { - clonedClass = (LevenbergMarquardt) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } + /** + *

+ * Constructor for LevenbergMarquardt. + *

+ */ + public LevenbergMarquardt() { + thisThread = new Thread(); + } - return clonedClass; + /** {@inheritDoc} */ + @Override + public LevenbergMarquardt clone() { + LevenbergMarquardt clonedClass = null; + try { + clonedClass = (LevenbergMarquardt) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public void init() { - chiSquare = calcChiSquare(); - System.out.println("Chi square: " + chiSquare); - dyda = calcDerivatives(); - beta = calcBetaMatrix(); - alpha = calcAlphaMatrix(); - } + return clonedClass; + } - /** {@inheritDoc} */ - @Override - public void solve() { - setFittingParameters(sampleSet.getSample(0).getFunction().getFittingParams()); - Matrix betaMatrix; - Matrix newParameters; - int n = 0; - init(); - do { - n++; - if (chiSquare < oldChiSquare) { - oldChiSquare = chiSquare; - } - betaMatrix = new Matrix(beta, 1).transpose(); - Matrix alphaMatrix = new Matrix(alpha); - betaMatrix.print(10, 3); - alphaMatrix.print(10, 3); - Matrix solvedMatrix = alphaMatrix.solve(betaMatrix); + /** {@inheritDoc} */ + @Override + public void init() { + chiSquare = calcChiSquare(); + System.out.println("Chi square: " + chiSquare); + dyda = calcDerivatives(); + beta = calcBetaMatrix(); + alpha = calcAlphaMatrix(); + } - Matrix oldParameters = - new Matrix(sampleSet.getSample(0).getFunction().getFittingParams(), 1).copy(); - newParameters = oldParameters.copy().plus(solvedMatrix.transpose()); - // Matrix diffMat = newParameters.copy().minus(oldParameters); - this.checkBounds(newParameters); - this.setFittingParameters(newParameters.copy().getArray()[0]); - newChiSquare = calcChiSquare(); - if (newChiSquare >= oldChiSquare || Double.isNaN(newChiSquare)) { - newChiSquare = oldChiSquare; - multiFactor *= 10.0; - System.out.println("keeping old values"); - this.setFittingParameters(oldParameters.getArray()[0]); - } else { - multiFactor /= 10.0; - System.out.println("Chi square ok : "); - } - System.out.println("Chi after : " + newChiSquare); - System.out.println("iterations: " + n); - calcAbsDev(); - try { - Thread.sleep(50); - } catch (Exception e) { - } - System.out.println("Parameters:"); - newParameters.print(100, 100); - init(); - } while (((Math.abs(newChiSquare) > 1e-6) && n < maxNumberOfIterations - && Math.abs(betaMatrix.norm2()) > 1.0e-6) || n < 5); - solved = true; + /** {@inheritDoc} */ + @Override + public void solve() { + setFittingParameters(sampleSet.getSample(0).getFunction().getFittingParams()); + Matrix betaMatrix; + Matrix newParameters; + int n = 0; + init(); + do { + n++; + if (chiSquare < oldChiSquare) { + oldChiSquare = chiSquare; + } + betaMatrix = new Matrix(beta, 1).transpose(); + Matrix alphaMatrix = new Matrix(alpha); + betaMatrix.print(10, 3); + alphaMatrix.print(10, 3); + Matrix solvedMatrix = alphaMatrix.solve(betaMatrix); - System.out.println("iterations: " + n); - System.out.println("Chi square: " + chiSquare); - System.out.println("Parameters:"); - newParameters.print(10, 10); - } + Matrix oldParameters = + new Matrix(sampleSet.getSample(0).getFunction().getFittingParams(), 1).copy(); + newParameters = oldParameters.copy().plus(solvedMatrix.transpose()); + // Matrix diffMat = newParameters.copy().minus(oldParameters); + this.checkBounds(newParameters); + this.setFittingParameters(newParameters.copy().getArray()[0]); + newChiSquare = calcChiSquare(); + if (newChiSquare >= oldChiSquare || Double.isNaN(newChiSquare)) { + newChiSquare = oldChiSquare; + multiFactor *= 10.0; + System.out.println("keeping old values"); + this.setFittingParameters(oldParameters.getArray()[0]); + } else { + multiFactor /= 10.0; + System.out.println("Chi square ok : "); + } + System.out.println("Chi after : " + newChiSquare); + System.out.println("iterations: " + n); + calcAbsDev(); + try { + Thread.sleep(50); + } catch (Exception ex) { + } + System.out.println("Parameters:"); + newParameters.print(100, 100); + init(); + } while (((Math.abs(newChiSquare) > 1e-6) && n < maxNumberOfIterations + && Math.abs(betaMatrix.norm2()) > 1.0e-6) || n < 5); + solved = true; - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - /* - * LevenbergMarquardt optim = new LevenbergMarquardt(); TestFunction testFunction = new - * TestFunction(); // optim.setFunction(testFunction); - * - * SampleValue[] sample = new SampleValue[3]; double sample1[] = { 6 }; sample[0] = new - * SampleValue(8.5,0.1,sample1); double sample2[] = { 4 }; sample[1] = new - * SampleValue(5.5,0.1,sample2); double sample3[] = { 4 }; sample[2] = new - * SampleValue(5.51,0.1,sample3); - * - * SampleSet sampleSet = new SampleSet(sample); sampleSet = - * sampleSet.createNewNormalDistributedSet(); optim.setSampleSet(sampleSet); optim.solve(); - * optim.runMonteCarloSimulation(); - */ - } + System.out.println("iterations: " + n); + System.out.println("Chi square: " + chiSquare); + System.out.println("Parameters:"); + newParameters.print(10, 10); + } - /** - *

- * Getter for the field maxNumberOfIterations. - *

+ /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + /* + * LevenbergMarquardt optim = new LevenbergMarquardt(); TestFunction testFunction = new + * TestFunction(); // optim.setFunction(testFunction); * - * @return the maxNumberOfIterations - */ - public int getMaxNumberOfIterations() { - return maxNumberOfIterations; - } - - /** - *

- * Setter for the field maxNumberOfIterations. - *

+ * SampleValue[] sample = new SampleValue[3]; double sample1[] = { 6 }; sample[0] = new + * SampleValue(8.5,0.1,sample1); double sample2[] = { 4 }; sample[1] = new + * SampleValue(5.5,0.1,sample2); double sample3[] = { 4 }; sample[2] = new + * SampleValue(5.51,0.1,sample3); * - * @param maxNumberOfIterations the maxNumberOfIterations to set + * SampleSet sampleSet = new SampleSet(sample); sampleSet = + * sampleSet.createNewNormalDistributedSet(); optim.setSampleSet(sampleSet); optim.solve(); + * optim.runMonteCarloSimulation(); */ - public void setMaxNumberOfIterations(int maxNumberOfIterations) { - this.maxNumberOfIterations = maxNumberOfIterations; - } + } + + /** + *

+ * Getter for the field maxNumberOfIterations. + *

+ * + * @return the maxNumberOfIterations + */ + public int getMaxNumberOfIterations() { + return maxNumberOfIterations; + } + + /** + *

+ * Setter for the field maxNumberOfIterations. + *

+ * + * @param maxNumberOfIterations the maxNumberOfIterations to set + */ + public void setMaxNumberOfIterations(int maxNumberOfIterations) { + this.maxNumberOfIterations = maxNumberOfIterations; + } } diff --git a/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtAbsDev.java b/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtAbsDev.java index 2672a8f61b..0cfed84484 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtAbsDev.java +++ b/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtAbsDev.java @@ -3,6 +3,7 @@ * * Created on 22. januar 2001, 23:00 */ + package neqsim.statistics.parameterFitting.nonLinearParameterFitting; /** @@ -14,77 +15,76 @@ * @version $Id: $Id */ public class LevenbergMarquardtAbsDev extends LevenbergMarquardt { - /** - *

- * Constructor for LevenbergMarquardtAbsDev. - *

- */ - public LevenbergMarquardtAbsDev() { - super(); + /** + *

+ * Constructor for LevenbergMarquardtAbsDev. + *

+ */ + public LevenbergMarquardtAbsDev() { + super(); + } + + /** {@inheritDoc} */ + @Override + public LevenbergMarquardtAbsDev clone() { + LevenbergMarquardtAbsDev clonedClass = null; + try { + clonedClass = (LevenbergMarquardtAbsDev) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public LevenbergMarquardtAbsDev clone() { - LevenbergMarquardtAbsDev clonedClass = null; - try { - clonedClass = (LevenbergMarquardtAbsDev) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } + return clonedClass; + } - return clonedClass; + /** {@inheritDoc} */ + @Override + public double calcChiSquare() { + double chiSquare = 0; + for (int i = 0; i < sampleSet.getLength(); i++) { + chiSquare += Math + .abs((sampleSet.getSample(i).getSampleValue() - this.calcValue(sampleSet.getSample(i)))) + / sampleSet.getSample(i).getStandardDeviation(); } + return chiSquare; + } - /** {@inheritDoc} */ - @Override - public double calcChiSquare() { - double chiSquare = 0; - for (int i = 0; i < sampleSet.getLength(); i++) { - chiSquare += Math - .abs((sampleSet.getSample(i).getSampleValue() - - this.calcValue(sampleSet.getSample(i)))) - / sampleSet.getSample(i).getStandardDeviation(); + /** {@inheritDoc} */ + @Override + public double[][] calcAlphaMatrix() { + double[][] alpha = new double[sampleSet.getSample(0).getFunction() + .getFittingParams().length][sampleSet.getSample(0).getFunction().getFittingParams().length]; + for (int i = 0; i < alpha.length; i++) { + for (int j = 0; j < alpha[0].length; j++) { + alpha[i][j] = 0.0; + for (int k = 0; k < sampleSet.getLength(); k++) { + alpha[i][j] += (dyda[k][i] * dyda[k][j]) / sampleSet.getSample(k).getStandardDeviation(); } - return chiSquare; - } - - /** {@inheritDoc} */ - @Override - public double[][] calcAlphaMatrix() { - double[][] alpha = - new double[sampleSet.getSample(0).getFunction().getFittingParams().length][sampleSet - .getSample(0).getFunction().getFittingParams().length]; - for (int i = 0; i < alpha.length; i++) { - for (int j = 0; j < alpha[0].length; j++) { - alpha[i][j] = 0.0; - for (int k = 0; k < sampleSet.getLength(); k++) { - alpha[i][j] += (dyda[k][i] * dyda[k][j]) - / sampleSet.getSample(k).getStandardDeviation(); - } - if (i == j) { - alpha[i][j] *= (1.0 + multiFactor); - } - } + if (i == j) { + alpha[i][j] *= (1.0 + multiFactor); } - return alpha; + } } + return alpha; + } - /** {@inheritDoc} */ - @Override - public double[] calcBetaMatrix() { - double[] beta = new double[sampleSet.getSample(0).getFunction().getFittingParams().length]; - for (int i = 0; i < beta.length; i++) { - beta[i] = 0.0; - for (int j = 0; j < sampleSet.getLength(); j++) { - int k = (sampleSet.getSample(i).getSampleValue() - - this.calcValue(sampleSet.getSample(i))) > 0 ? 1 : -1; - beta[i] += k - * Math.abs((sampleSet.getSample(j).getSampleValue() - - calcValue(sampleSet.getSample(j)))) - / sampleSet.getSample(j).getStandardDeviation() * dyda[j][i]; - } - } - return beta; + /** {@inheritDoc} */ + @Override + public double[] calcBetaMatrix() { + double[] beta = new double[sampleSet.getSample(0).getFunction().getFittingParams().length]; + for (int i = 0; i < beta.length; i++) { + beta[i] = 0.0; + for (int j = 0; j < sampleSet.getLength(); j++) { + int k = + (sampleSet.getSample(i).getSampleValue() - this.calcValue(sampleSet.getSample(i))) > 0 + ? 1 + : -1; + beta[i] += k + * Math + .abs((sampleSet.getSample(j).getSampleValue() - calcValue(sampleSet.getSample(j)))) + / sampleSet.getSample(j).getStandardDeviation() * dyda[j][i]; + } } + return beta; + } } diff --git a/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtBiasDev.java b/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtBiasDev.java index 4a6be6a629..0b58099d30 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtBiasDev.java +++ b/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtBiasDev.java @@ -3,6 +3,7 @@ * * Created on 22. januar 2001, 23:00 */ + package neqsim.statistics.parameterFitting.nonLinearParameterFitting; /** @@ -14,73 +15,70 @@ * @version $Id: $Id */ public class LevenbergMarquardtBiasDev extends LevenbergMarquardt { - /** - *

- * Constructor for LevenbergMarquardtBiasDev. - *

- */ - public LevenbergMarquardtBiasDev() { - super(); + /** + *

+ * Constructor for LevenbergMarquardtBiasDev. + *

+ */ + public LevenbergMarquardtBiasDev() { + super(); + } + + /** {@inheritDoc} */ + @Override + public LevenbergMarquardtBiasDev clone() { + LevenbergMarquardtBiasDev clonedClass = null; + try { + clonedClass = (LevenbergMarquardtBiasDev) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } - /** {@inheritDoc} */ - @Override - public LevenbergMarquardtBiasDev clone() { - LevenbergMarquardtBiasDev clonedClass = null; - try { - clonedClass = (LevenbergMarquardtBiasDev) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } + return clonedClass; + } - return clonedClass; + /** {@inheritDoc} */ + @Override + public double calcChiSquare() { + double chiSquare = 0; + for (int i = 0; i < sampleSet.getLength(); i++) { + chiSquare += + (sampleSet.getSample(i).getSampleValue() - this.calcValue(sampleSet.getSample(i))) + / sampleSet.getSample(i).getStandardDeviation(); } + return chiSquare; + } - /** {@inheritDoc} */ - @Override - public double calcChiSquare() { - double chiSquare = 0; - for (int i = 0; i < sampleSet.getLength(); i++) { - chiSquare += (sampleSet.getSample(i).getSampleValue() - - this.calcValue(sampleSet.getSample(i))) - / sampleSet.getSample(i).getStandardDeviation(); + /** {@inheritDoc} */ + @Override + public double[][] calcAlphaMatrix() { + double[][] alpha = new double[sampleSet.getSample(0).getFunction() + .getFittingParams().length][sampleSet.getSample(0).getFunction().getFittingParams().length]; + for (int i = 0; i < alpha.length; i++) { + for (int j = 0; j < alpha[0].length; j++) { + alpha[i][j] = 0.0; + for (int k = 0; k < sampleSet.getLength(); k++) { + alpha[i][j] += (dyda[k][i] * dyda[k][j]) / sampleSet.getSample(k).getStandardDeviation(); } - return chiSquare; - } - - /** {@inheritDoc} */ - @Override - public double[][] calcAlphaMatrix() { - double[][] alpha = - new double[sampleSet.getSample(0).getFunction().getFittingParams().length][sampleSet - .getSample(0).getFunction().getFittingParams().length]; - for (int i = 0; i < alpha.length; i++) { - for (int j = 0; j < alpha[0].length; j++) { - alpha[i][j] = 0.0; - for (int k = 0; k < sampleSet.getLength(); k++) { - alpha[i][j] += (dyda[k][i] * dyda[k][j]) - / sampleSet.getSample(k).getStandardDeviation(); - } - if (i == j) { - alpha[i][j] *= (1.0 + multiFactor); - } - } + if (i == j) { + alpha[i][j] *= (1.0 + multiFactor); } - return alpha; + } } + return alpha; + } - /** {@inheritDoc} */ - @Override - public double[] calcBetaMatrix() { - double[] beta = new double[sampleSet.getSample(0).getFunction().getFittingParams().length]; - for (int i = 0; i < beta.length; i++) { - beta[i] = 0.0; - for (int j = 0; j < sampleSet.getLength(); j++) { - beta[i] += (sampleSet.getSample(j).getSampleValue() - - calcValue(sampleSet.getSample(j))) - / sampleSet.getSample(j).getStandardDeviation() * dyda[j][i]; - } - } - return beta; + /** {@inheritDoc} */ + @Override + public double[] calcBetaMatrix() { + double[] beta = new double[sampleSet.getSample(0).getFunction().getFittingParams().length]; + for (int i = 0; i < beta.length; i++) { + beta[i] = 0.0; + for (int j = 0; j < sampleSet.getLength(); j++) { + beta[i] += (sampleSet.getSample(j).getSampleValue() - calcValue(sampleSet.getSample(j))) + / sampleSet.getSample(j).getStandardDeviation() * dyda[j][i]; + } } + return beta; + } } diff --git a/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtFunction.java b/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtFunction.java index a70dd98f9a..15af7533b9 100644 --- a/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtFunction.java +++ b/src/main/java/neqsim/statistics/parameterFitting/nonLinearParameterFitting/LevenbergMarquardtFunction.java @@ -11,64 +11,63 @@ * @version $Id: $Id */ public class LevenbergMarquardtFunction extends BaseFunction { - /** - *

- * Constructor for LevenbergMarquardtFunction. - *

- */ - public LevenbergMarquardtFunction() {} + /** + *

+ * Constructor for LevenbergMarquardtFunction. + *

+ */ + public LevenbergMarquardtFunction() {} - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - return 3.0 * params[0] * params[1] - 2.0 * params[0] * dependentValues[0] - - dependentValues[0]; - } + /** {@inheritDoc} */ + @Override + public double calcValue(double[] dependentValues) { + return 3.0 * params[0] * params[1] - 2.0 * params[0] * dependentValues[0] - dependentValues[0]; + } - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - } + /** {@inheritDoc} */ + @Override + public void setFittingParams(int i, double value) { + params[i] = value; + } - /** {@inheritDoc} */ - @Override - public double getFittingParams(int i) { - return params[i]; - } + /** {@inheritDoc} */ + @Override + public double getFittingParams(int i) { + return params[i]; + } - /** {@inheritDoc} */ - @Override - public double[] getFittingParams() { - return params; - } + /** {@inheritDoc} */ + @Override + public double[] getFittingParams() { + return params; + } - /** {@inheritDoc} */ - @Override - public int getNumberOfFittingParams() { - return params.length; - } + /** {@inheritDoc} */ + @Override + public int getNumberOfFittingParams() { + return params.length; + } - /** - *

- * setFittingParams. - *

- * - * @param value an array of {@link double} objects - */ - public void setFittingParams(double[] value) { - System.arraycopy(value, 0, params, 0, value.length); - } + /** + *

+ * setFittingParams. + *

+ * + * @param value an array of type double + */ + public void setFittingParams(double[] value) { + System.arraycopy(value, 0, params, 0, value.length); + } - /** - *

- * setFittingParam. - *

- * - * @param parameterNumber a int - * @param parameterVal a double - */ - public void setFittingParam(int parameterNumber, double parameterVal) { - params[parameterNumber] = parameterVal; - } + /** + *

+ * setFittingParam. + *

+ * + * @param parameterNumber a int + * @param parameterVal a double + */ + public void setFittingParam(int parameterNumber, double parameterVal) { + params[parameterNumber] = parameterVal; + } } diff --git a/src/main/java/neqsim/statistics/test.java b/src/main/java/neqsim/statistics/test.java deleted file mode 100644 index 04d5edf686..0000000000 --- a/src/main/java/neqsim/statistics/test.java +++ /dev/null @@ -1,12 +0,0 @@ -package neqsim.statistics; - -/** - *

- * test class. - *

- * - * @author esol - * @version $Id: $Id - */ -public class test { -} diff --git a/src/main/java/neqsim/thermo/Fluid.java b/src/main/java/neqsim/thermo/Fluid.java index 212ac16236..d89bb48c19 100644 --- a/src/main/java/neqsim/thermo/Fluid.java +++ b/src/main/java/neqsim/thermo/Fluid.java @@ -1,6 +1,3 @@ -/** - * - */ package neqsim.thermo; import org.apache.logging.log4j.LogManager; @@ -15,407 +12,365 @@ * @version $Id: $Id */ public class Fluid { - static Logger logger = LogManager.getLogger(Fluid.class); - static neqsim.thermo.system.SystemInterface fluid = null; - private static boolean hasWater = false; - private static boolean autoSelectModel = false; - private static String thermoModel = "srk"; - private static String thermoMixingRule = "classic"; + static Logger logger = LogManager.getLogger(Fluid.class); - private static void setThermoModel() { - if (thermoModel.equals("srk")) { - fluid = new neqsim.thermo.system.SystemSrkEos(); - } else if (thermoModel.equals("pr")) { - fluid = new neqsim.thermo.system.SystemPrEos(); - } else if (thermoModel.equals("cpa")) { - fluid = new neqsim.thermo.system.SystemSrkCPAstatoil(); - } else { - fluid = new neqsim.thermo.system.SystemSrkEos(); - } - } + neqsim.thermo.system.SystemInterface fluid = null; + private boolean hasWater = false; + private boolean autoSelectModel = false; + private String thermoModel = "srk"; + private String thermoMixingRule = "classic"; - private static void setMixingRule() { - fluid.setMixingRule(getThermoMixingRule()); - } + /** + *

+ * Constructor for Fluid. + *

+ */ + public Fluid() {} + + /** + *

+ * Getter for the field fluid. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public neqsim.thermo.system.SystemInterface getFluid() { + return fluid; + } - /** - *

- * create2. - *

- * - * @param componentNames an array of {@link java.lang.String} objects - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public static neqsim.thermo.system.SystemInterface create2(String[] componentNames) { - double[] comp = new double[componentNames.length]; - for (int i = 0; i < componentNames.length; i++) { - comp[i] = 1.0; - } - return create2(componentNames, comp, "mol/sec"); + /** + * + */ + private void setThermoModel() { + if (thermoModel.equals("srk")) { + fluid = new neqsim.thermo.system.SystemSrkEos(); + } else if (thermoModel.equals("pr")) { + fluid = new neqsim.thermo.system.SystemPrEos(); + } else if (thermoModel.equals("cpa")) { + fluid = new neqsim.thermo.system.SystemSrkCPAstatoil(); + } else { + fluid = new neqsim.thermo.system.SystemSrkEos(); } + } - /** - *

- * create2. - *

- * - * @param componentNames an array of {@link java.lang.String} objects - * @param flowrate an array of {@link double} objects - * @param unit a {@link java.lang.String} object - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public static neqsim.thermo.system.SystemInterface create2(String[] componentNames, - double[] flowrate, String unit) { - setThermoModel(); - createFluid(componentNames, flowrate, unit); - if (isHasWater() == true) - fluid.addComponent("water", 0.1); - fluid.createDatabase(true); - setMixingRule(); - if (isHasWater()) { - fluid.setMultiPhaseCheck(true); - } - if (isAutoSelectModel()) { - fluid = fluid.autoSelectModel(); - } - fluid.init(0); - return fluid; + /** + *

+ * create2. + *

+ * + * @param componentNames an array of {@link java.lang.String} objects + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public neqsim.thermo.system.SystemInterface create2(String[] componentNames) { + double[] comp = new double[componentNames.length]; + for (int i = 0; i < componentNames.length; i++) { + comp[i] = 1.0; } + return create2(componentNames, comp, "mol/sec"); + } - /** - *

- * create. - *

- * - * @param fluidType a {@link java.lang.String} object - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public static neqsim.thermo.system.SystemInterface create(String fluidType) { - String[] compNames = null; - double[] flowrate = null; - setThermoModel(); - if (fluidType.equals("water")) { - compNames = new String[] {"water"}; - flowrate = new double[] {1.0}; - createFluid(compNames, flowrate, "mole/sec"); - } - if (fluidType.equals("dry gas")) { - compNames = new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", - "n-butane"}; - flowrate = new double[] {0.01, 0.02, 0.82, 0.11, 0.05, 0.01, 0.012}; - createFluid(compNames, flowrate, "mole/sec"); - } else if (fluidType.equals("rich gas")) { - compNames = new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", - "n-butane", "i-pentane", "n-pentane", "n-hexane", "n-heptane", "n-octane", - "n-nonane", "nC10"}; - flowrate = new double[] {0.01, 0.02, 0.82, 0.11, 0.05, 0.01, 0.012, 0.01, 0.01, 0.01, - 0.01, 0.01, 0.01, 0.01}; - createFluid(compNames, flowrate, "mole/sec"); - } else if (fluidType.equals("air")) { - compNames = new String[] {"nitrogen", "oxygen"}; - flowrate = new double[] {0.78, 0.22}; - createFluid(compNames, flowrate, "mole/sec"); - } else if (fluidType.equals("combustion air")) { - compNames = new String[] {"nitrogen", "oxygen", "CO2", "water"}; - flowrate = new double[] {0.78084, 0.20946, 0.033, 0.1}; - createFluid(compNames, flowrate, "mole/sec"); - } else if (fluidType.equals("gas condensate")) { - compNames = new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", - "n-butane", "i-pentane", "n-pentane", "n-hexane", "n-heptane", "n-octane", - "n-nonane", "nC10"}; - flowrate = new double[] {0.01, 0.02, 0.32, 0.05, 0.03, 0.01, 0.012, 0.01, 0.01, 0.01, - 0.01, 0.01, 0.01, 0.01}; - createFluid(compNames, flowrate, "mole/sec"); - String[] charNames = new String[] {"C10-C15", "C16-C19", "C20-C30", "C31-C50"}; - double[] charFlowrate = new double[] {0.1, 0.08, 0.05, 0.01}; - double[] molarMass = new double[] {0.20, 0.3, 0.36, 0.4}; - double[] density = new double[] {700.0e-3, 810.0e-3, 880.0e-3, 920.0e-3}; - addCharacterized(charNames, charFlowrate, molarMass, density); - } else if (fluidType.equals("petrol")) { - compNames = new String[] {"n-pentane", "n-hexane", "n-heptane", "n-octane", "n-nonane", - "nC10", "nC11", "nC12"}; - flowrate = new double[] {0.1, 0.1, 0.1, 0.1, 0.3, 0.1, 0.1, 0.1}; - createFluid(compNames, flowrate, "mole/sec"); - } else if (fluidType.equals("diesel")) { - compNames = new String[] {"n-heptane", "n-octane", "n-nonane", "nC10", "nC11", "nC12", - "nC13", "nC14"}; - flowrate = new double[] {0.1, 0.1, 0.1, 0.3, 0.1, 0.1, 0.1, 0.1}; - createFluid(compNames, flowrate, "mole/sec"); - } else if (fluidType.equals("light oil")) { - compNames = new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", - "n-butane", "i-pentane", "n-pentane", "n-hexane", "n-heptane", "n-octane", - "n-nonane", "nC10"}; - flowrate = new double[] {0.01, 0.02, 0.52, 0.11, 0.05, 0.01, 0.012, 0.01, 0.01, 0.01, - 0.01, 0.01, 0.01, 0.01}; - createFluid(compNames, flowrate, "mole/sec"); - String[] charNames = new String[] {"C10-C15", "C16-C19", "C20-C30", "C31-C50"}; - double[] charFlowrate = new double[] {0.2, 0.1, 0.05, 0.01}; - double[] molarMass = new double[] {0.20, 0.3, 0.36, 0.4}; - double[] density = new double[] {700.0e-3, 810.0e-3, 880.0e-3, 920.0e-3}; - addCharacterized(charNames, charFlowrate, molarMass, density); - } else if (fluidType.equals("black oil")) { - compNames = new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", - "n-butane", "i-pentane", "n-pentane", "n-hexane"}; - flowrate = new double[] {0.01, 0.02, 0.22, 0.11, 0.05, 0.01, 0.012, 0.01, 0.01, 0.01}; - createFluid(compNames, flowrate, "mole/sec"); - String[] charNames = - new String[] {"C10-C15", "C16-C19", "C20-C30", "C31-C50", "C51-C80"}; - double[] charFlowrate = new double[] {0.2, 0.1, 0.1, 0.05, 0.01}; - double[] molarMass = new double[] {0.20, 0.25, 0.3, 0.36, 0.4}; - double[] density = new double[] {700.0e-3, 750.0e-3, 810.0e-3, 880.0e-3, 920.0e-3}; - addCharacterized(charNames, charFlowrate, molarMass, density); - } else if (fluidType.equals("black oil with water")) { - compNames = new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", - "n-butane", "i-pentane", "n-pentane", "n-hexane"}; - flowrate = new double[] {0.01, 0.02, 0.22, 0.11, 0.05, 0.01, 0.012, 0.01, 0.01, 0.01}; - createFluid(compNames, flowrate, "mole/sec"); - String[] charNames = - new String[] {"C10-C15", "C16-C19", "C20-C30", "C31-C50", "C51-C80"}; - double[] charFlowrate = new double[] {0.2, 0.1, 0.1, 0.05, 0.01}; - double[] molarMass = new double[] {0.20, 0.25, 0.3, 0.36, 0.4}; - double[] density = new double[] {700.0e-3, 750.0e-3, 810.0e-3, 880.0e-3, 920.0e-3}; - addCharacterized(charNames, charFlowrate, molarMass, density); - setHasWater(true); - } else if (fluidType.equals("heavy oil")) { - compNames = new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", - "n-butane", "i-pentane", "n-pentane", "n-hexane"}; - flowrate = new double[] {0.01, 0.01, 0.12, 0.11, 0.05, 0.01, 0.012, 0.01, 0.01, 0.01}; - createFluid(compNames, flowrate, "mole/sec"); - String[] charNames = - new String[] {"C10-C15", "C16-C19", "C20-C30", "C31-C50", "C51-C80"}; - double[] charFlowrate = new double[] {0.2, 0.2, 0.2, 0.1, 0.1}; - double[] molarMass = new double[] {0.20, 0.25, 0.3, 0.36, 0.4}; - double[] density = new double[] {700.0e-3, 750.0e-3, 810.0e-3, 880.0e-3, 920.0e-3}; - addCharacterized(charNames, charFlowrate, molarMass, density); - } else if (neqsim.util.database.NeqSimDataBase.hasComponent(fluidType)) { - compNames = new String[] {fluidType}; - flowrate = new double[] {1.0}; - createFluid(compNames, flowrate, "mole/sec"); - } else { - return null; - } + /** + *

+ * create2. + *

+ * + * @param componentNames an array of {@link java.lang.String} objects + * @param flowrate an array of type double + * @param unit a {@link java.lang.String} object + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public neqsim.thermo.system.SystemInterface create2(String[] componentNames, double[] flowrate, + String unit) { + setThermoModel(); + createFluid(componentNames, flowrate, unit); + if (isHasWater()) { + fluid.addComponent("water", 0.1); + } + fluid.createDatabase(true); + fluid.setMixingRule(fluid.getMixingRule()); + if (isHasWater()) { + fluid.setMultiPhaseCheck(true); + } + if (isAutoSelectModel()) { + fluid = fluid.autoSelectModel(); + } + fluid.init(0); + return fluid; + } - if (isHasWater() == true) - fluid.addComponent("water", 0.1); - fluid.createDatabase(true); - setMixingRule(); - if (isHasWater()) { - fluid.setMultiPhaseCheck(true); - } - if (isAutoSelectModel()) { - fluid = fluid.autoSelectModel(); - } - fluid.init(0); - return fluid; + /** + *

+ * create. + *

+ * + * @param fluidType a {@link java.lang.String} object + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public neqsim.thermo.system.SystemInterface create(String fluidType) { + String[] compNames = null; + double[] flowrate = null; + this.setThermoModel(); + if (fluidType.equals("water")) { + compNames = new String[] {"water"}; + flowrate = new double[] {1.0}; + createFluid(compNames, flowrate, "mole/sec"); + } + if (fluidType.equals("dry gas")) { + compNames = + new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", "n-butane"}; + flowrate = new double[] {0.01, 0.02, 0.82, 0.11, 0.05, 0.01, 0.012}; + createFluid(compNames, flowrate, "mole/sec"); + } else if (fluidType.equals("rich gas")) { + compNames = + new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", "n-butane", + "i-pentane", "n-pentane", "n-hexane", "n-heptane", "n-octane", "n-nonane", "nC10"}; + flowrate = new double[] {0.01, 0.02, 0.82, 0.11, 0.05, 0.01, 0.012, 0.01, 0.01, 0.01, 0.01, + 0.01, 0.01, 0.01}; + createFluid(compNames, flowrate, "mole/sec"); + } else if (fluidType.equals("air")) { + compNames = new String[] {"nitrogen", "oxygen"}; + flowrate = new double[] {0.78, 0.22}; + createFluid(compNames, flowrate, "mole/sec"); + } else if (fluidType.equals("combustion air")) { + compNames = new String[] {"nitrogen", "oxygen", "CO2", "water"}; + flowrate = new double[] {0.78084, 0.20946, 0.033, 0.1}; + createFluid(compNames, flowrate, "mole/sec"); + } else if (fluidType.equals("gas condensate")) { + compNames = + new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", "n-butane", + "i-pentane", "n-pentane", "n-hexane", "n-heptane", "n-octane", "n-nonane", "nC10"}; + flowrate = new double[] {0.01, 0.02, 0.32, 0.05, 0.03, 0.01, 0.012, 0.01, 0.01, 0.01, 0.01, + 0.01, 0.01, 0.01}; + createFluid(compNames, flowrate, "mole/sec"); + String[] charNames = new String[] {"C10-C15", "C16-C19", "C20-C30", "C31-C50"}; + double[] charFlowrate = new double[] {0.1, 0.08, 0.05, 0.01}; + double[] molarMass = new double[] {0.20, 0.3, 0.36, 0.4}; + double[] density = new double[] {700.0e-3, 810.0e-3, 880.0e-3, 920.0e-3}; + getFluid().addCharacterized(charNames, charFlowrate, molarMass, density); + } else if (fluidType.equals("petrol")) { + compNames = new String[] {"n-pentane", "n-hexane", "n-heptane", "n-octane", "n-nonane", + "nC10", "nC11", "nC12"}; + flowrate = new double[] {0.1, 0.1, 0.1, 0.1, 0.3, 0.1, 0.1, 0.1}; + createFluid(compNames, flowrate, "mole/sec"); + } else if (fluidType.equals("diesel")) { + compNames = new String[] {"n-heptane", "n-octane", "n-nonane", "nC10", "nC11", "nC12", "nC13", + "nC14"}; + flowrate = new double[] {0.1, 0.1, 0.1, 0.3, 0.1, 0.1, 0.1, 0.1}; + createFluid(compNames, flowrate, "mole/sec"); + } else if (fluidType.equals("light oil")) { + compNames = + new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", "n-butane", + "i-pentane", "n-pentane", "n-hexane", "n-heptane", "n-octane", "n-nonane", "nC10"}; + flowrate = new double[] {0.01, 0.02, 0.52, 0.11, 0.05, 0.01, 0.012, 0.01, 0.01, 0.01, 0.01, + 0.01, 0.01, 0.01}; + createFluid(compNames, flowrate, "mole/sec"); + String[] charNames = new String[] {"C10-C15", "C16-C19", "C20-C30", "C31-C50"}; + double[] charFlowrate = new double[] {0.2, 0.1, 0.05, 0.01}; + double[] molarMass = new double[] {0.20, 0.3, 0.36, 0.4}; + double[] density = new double[] {700.0e-3, 810.0e-3, 880.0e-3, 920.0e-3}; + getFluid().addCharacterized(charNames, charFlowrate, molarMass, density); + } else if (fluidType.equals("black oil")) { + compNames = new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", + "n-butane", "i-pentane", "n-pentane", "n-hexane"}; + flowrate = new double[] {0.01, 0.02, 0.22, 0.11, 0.05, 0.01, 0.012, 0.01, 0.01, 0.01}; + createFluid(compNames, flowrate, "mole/sec"); + String[] charNames = new String[] {"C10-C15", "C16-C19", "C20-C30", "C31-C50", "C51-C80"}; + double[] charFlowrate = new double[] {0.2, 0.1, 0.1, 0.05, 0.01}; + double[] molarMass = new double[] {0.20, 0.25, 0.3, 0.36, 0.4}; + double[] density = new double[] {700.0e-3, 750.0e-3, 810.0e-3, 880.0e-3, 920.0e-3}; + getFluid().addCharacterized(charNames, charFlowrate, molarMass, density); + } else if (fluidType.equals("black oil with water")) { + compNames = new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", + "n-butane", "i-pentane", "n-pentane", "n-hexane"}; + flowrate = new double[] {0.01, 0.02, 0.22, 0.11, 0.05, 0.01, 0.012, 0.01, 0.01, 0.01}; + createFluid(compNames, flowrate, "mole/sec"); + String[] charNames = new String[] {"C10-C15", "C16-C19", "C20-C30", "C31-C50", "C51-C80"}; + double[] charFlowrate = new double[] {0.2, 0.1, 0.1, 0.05, 0.01}; + double[] molarMass = new double[] {0.20, 0.25, 0.3, 0.36, 0.4}; + double[] density = new double[] {700.0e-3, 750.0e-3, 810.0e-3, 880.0e-3, 920.0e-3}; + getFluid().addCharacterized(charNames, charFlowrate, molarMass, density); + setHasWater(true); + } else if (fluidType.equals("heavy oil")) { + compNames = new String[] {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", + "n-butane", "i-pentane", "n-pentane", "n-hexane"}; + flowrate = new double[] {0.01, 0.01, 0.12, 0.11, 0.05, 0.01, 0.012, 0.01, 0.01, 0.01}; + createFluid(compNames, flowrate, "mole/sec"); + String[] charNames = new String[] {"C10-C15", "C16-C19", "C20-C30", "C31-C50", "C51-C80"}; + double[] charFlowrate = new double[] {0.2, 0.2, 0.2, 0.1, 0.1}; + double[] molarMass = new double[] {0.20, 0.25, 0.3, 0.36, 0.4}; + double[] density = new double[] {700.0e-3, 750.0e-3, 810.0e-3, 880.0e-3, 920.0e-3}; + getFluid().addCharacterized(charNames, charFlowrate, molarMass, density); + } else if (neqsim.util.database.NeqSimDataBase.hasComponent(fluidType)) { + compNames = new String[] {fluidType}; + flowrate = new double[] {1.0}; + createFluid(compNames, flowrate, "mole/sec"); + } else { + return null; } - /** - *

- * addCharacterized. - *

- * - * @param charNames an array of {@link java.lang.String} objects - * @param charFlowrate an array of {@link double} objects - * @param molarMass an array of {@link double} objects - * @param relativedensity an array of {@link double} objects - */ - public static void addCharacterized(String[] charNames, double[] charFlowrate, - double[] molarMass, double[] relativedensity) { - if (charNames.length != charFlowrate.length) { - logger.error("component names and mole fractions need to be same length..."); - } - for (int i = 0; i < charNames.length; i++) { - fluid.addTBPfraction(charNames[i], charFlowrate[i], molarMass[i], relativedensity[i]); - } + if (isHasWater()) { + fluid.addComponent("water", 0.1); } + fluid.createDatabase(true); + fluid.setMixingRule(fluid.getMixingRule()); + if (isHasWater()) { + fluid.setMultiPhaseCheck(true); + } + if (isAutoSelectModel()) { + fluid = fluid.autoSelectModel(); + } + fluid.init(0); + return fluid; + } - /** - *

- * addOilFractions. - *

- * - * @param charNames an array of {@link java.lang.String} objects - * @param charFlowrate an array of {@link double} objects - * @param molarMass an array of {@link double} objects - * @param relativedensity an array of {@link double} objects - * @param lastIsPlusFraction a boolean - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public static neqsim.thermo.system.SystemInterface addOilFractions(String[] charNames, - double[] charFlowrate, double[] molarMass, double[] relativedensity, - boolean lastIsPlusFraction) { - if (charNames.length != charFlowrate.length) { - logger.error("component names and mole fractions need to be same length..."); - } + /** + *

+ * createFluid. + *

+ * + * @param componentNames an array of {@link java.lang.String} objects + * @param flowrate an array of type double + * @param unit a {@link java.lang.String} object + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public neqsim.thermo.system.SystemInterface createFluid(String[] componentNames, + double[] flowrate, String unit) { + setThermoModel(); + if (componentNames.length != flowrate.length) { + logger.error("component names and mole fractions need to be same length..."); + } - for (int i = 0; i < charNames.length - 1; i++) { - fluid.addTBPfraction(charNames[i], charFlowrate[i], molarMass[i], relativedensity[i]); - } - int i = charNames.length - 1; - if (lastIsPlusFraction) { - fluid.addPlusFraction(charNames[i], charFlowrate[i], molarMass[i], relativedensity[i]); - } else { - fluid.addTBPfraction(charNames[i], charFlowrate[i], molarMass[i], relativedensity[i]); - } - fluid.createDatabase(true); - if (lastIsPlusFraction) { - fluid.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(12); - fluid.getCharacterization().setLumpingModel("PVTlumpingModel"); - fluid.getCharacterization().characterisePlusFraction(); - } - setMixingRule(); - fluid.setMultiPhaseCheck(true); - fluid.init(0); - return fluid; + for (int i = 0; i < componentNames.length; i++) { + fluid.addComponent(componentNames[i], flowrate[i], unit); } - /** - *

- * createFluid. - *

- * - * @param componentNames an array of {@link java.lang.String} objects - * @param flowrate an array of {@link double} objects - * @param unit a {@link java.lang.String} object - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public static neqsim.thermo.system.SystemInterface createFluid(String[] componentNames, - double[] flowrate, String unit) { - if (componentNames.length != flowrate.length) { - logger.error("component names and mole fractions need to be same length..."); - } + return fluid; + } - for (int i = 0; i < componentNames.length; i++) { - fluid.addComponent(componentNames[i], flowrate[i], unit); - } + /** + *

+ * addComponment. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void addComponment(String name) { + fluid.addComponent(name, 1.0); + fluid.createDatabase(true); + fluid.setMixingRule(2); - return fluid; + if (isHasWater()) { + fluid.setMultiPhaseCheck(true); } + } - /** - *

- * addComponment. - *

- * - * @param name a {@link java.lang.String} object - */ - public static void addComponment(String name) { - fluid.addComponent(name, 1.0); - fluid.createDatabase(true); - fluid.setMixingRule(2); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.Fluid fluidCreator = new neqsim.thermo.Fluid(); - if (isHasWater()) { - fluid.setMultiPhaseCheck(true); - } - } + neqsim.thermo.system.SystemInterface fluid = fluidCreator.create("petrol"); + fluid.display(); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - neqsim.thermo.Fluid.setHasWater(true); - neqsim.thermo.system.SystemInterface fluid = neqsim.thermo.Fluid.create("petrol"); - fluid.display(); + neqsim.thermo.system.SystemInterface fluid2 = fluidCreator.create("dry gas"); + fluid2.display(); + fluid2.getNumberOfComponents(); - neqsim.thermo.system.SystemInterface fluid2 = neqsim.thermo.Fluid.create("dry gas"); - fluid2.display(); - fluid2.getNumberOfComponents(); + neqsim.thermo.system.SystemInterface fluid3 = fluidCreator.create("black oil with water"); + fluid3.display(); + fluid3.getNumberOfComponents(); + } - neqsim.thermo.system.SystemInterface fluid3 = - neqsim.thermo.Fluid.create("black oil with water"); - fluid3.display(); - fluid3.getNumberOfComponents(); - } + /** + *

+ * isHasWater. + *

+ * + * @return a boolean + */ + public boolean isHasWater() { + return hasWater; + } - /** - *

- * isHasWater. - *

- * - * @return a boolean - */ - public static boolean isHasWater() { - return hasWater; - } + /** + *

+ * Setter for the field hasWater. + *

+ * + * @param hasWater a boolean + */ + public void setHasWater(boolean hasWater) { + this.hasWater = hasWater; + } - /** - *

- * Setter for the field hasWater. - *

- * - * @param hasWater a boolean - */ - public static void setHasWater(boolean hasWater) { - Fluid.hasWater = hasWater; - } + /** + *

+ * isAutoSelectModel. + *

+ * + * @return a boolean + */ + public boolean isAutoSelectModel() { + return autoSelectModel; + } - /** - *

- * isAutoSelectModel. - *

- * - * @return a boolean - */ - public static boolean isAutoSelectModel() { - return autoSelectModel; - } + /** + *

+ * Setter for the field autoSelectModel. + *

+ * + * @param autoSelectModel a boolean + */ + public void setAutoSelectModel(boolean autoSelectModel) { + this.autoSelectModel = autoSelectModel; + } - /** - *

- * Setter for the field autoSelectModel. - *

- * - * @param autoSelectModel a boolean - */ - public static void setAutoSelectModel(boolean autoSelectModel) { - Fluid.autoSelectModel = autoSelectModel; - } + /** + *

+ * Getter for the field thermoModel. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getThermoModel() { + return thermoModel; + } - /** - *

- * Getter for the field thermoModel. - *

- * - * @return a {@link java.lang.String} object - */ - public static String getThermoModel() { - return thermoModel; - } + /** + *

+ * Setter for the field thermoModel. + *

+ * + * @param thermoModel a {@link java.lang.String} object + */ + public void setThermoModel(String thermoModel) { + this.thermoModel = thermoModel; + } - /** - *

- * Setter for the field thermoModel. - *

- * - * @param thermoModel a {@link java.lang.String} object - */ - public static void setThermoModel(String thermoModel) { - Fluid.thermoModel = thermoModel; - } + /** + *

+ * Getter for the field thermoMixingRule. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getThermoMixingRule() { + return thermoMixingRule; + } - /** - *

- * Getter for the field thermoMixingRule. - *

- * - * @return a {@link java.lang.String} object - */ - public static String getThermoMixingRule() { - return thermoMixingRule; - } - - /** - *

- * Setter for the field thermoMixingRule. - *

- * - * @param thermoMixingRule a {@link java.lang.String} object - */ - public static void setThermoMixingRule(String thermoMixingRule) { - Fluid.thermoMixingRule = thermoMixingRule; - } + /** + *

+ * Setter for the field thermoMixingRule. + *

+ * + * @param thermoMixingRule a {@link java.lang.String} object + */ + public void setThermoMixingRule(String thermoMixingRule) { + this.thermoMixingRule = thermoMixingRule; + } } diff --git a/src/main/java/neqsim/thermo/FluidCreator.java b/src/main/java/neqsim/thermo/FluidCreator.java new file mode 100644 index 0000000000..4efe9b0624 --- /dev/null +++ b/src/main/java/neqsim/thermo/FluidCreator.java @@ -0,0 +1,73 @@ +package neqsim.thermo; + +import neqsim.thermo.system.SystemInterface; + +/** + * Used to generate fluids of type SystemInterface. + * + * @author esol + * @version $Id: $Id + */ +public final class FluidCreator { + /** Constant hasWater=false. */ + public static boolean hasWater = false; + /** Constant autoSelectModel=false. */ + public static boolean autoSelectModel = false; + /** Constant thermoModel="srk". */ + public static String thermoModel = "srk"; + /** Constant thermoMixingRule="classic". */ + public static String thermoMixingRule = "classic"; + + /** + * Dummy constructor, not for use. Class is to be considered static. + */ + private FluidCreator() {} + + /** + * Create SystemInterface. + * + * @param componentNames name of components to be added to a fluid + * @return a fluid object (SystemInterface) + */ + public static SystemInterface create(String[] componentNames) { + Fluid fluid = new Fluid(); + fluid.setHasWater(hasWater); + fluid.setAutoSelectModel(autoSelectModel); + fluid.setThermoModel(thermoModel); + fluid.setThermoModel(thermoModel); + return fluid.create2(componentNames); + } + + /** + * Create SystemInterface. + * + * @param componentNames name of components to be added to a fluid + * @param flowrate flow rate + * @param unit unit of flow rate + * @return a fluid object (SystemInterface) + */ + public static SystemInterface create(String[] componentNames, double[] flowrate, String unit) { + Fluid fluid = new Fluid(); + fluid.setHasWater(hasWater); + fluid.setAutoSelectModel(autoSelectModel); + fluid.setThermoModel(thermoModel); + fluid.setThermoModel(thermoModel); + return fluid.createFluid(componentNames, flowrate, unit); + } + + /** + * Create SystemInterface. + * + * @param fluidType fluid type can be "dry gas", "water", "air", "gas condensate", "combustion + * air"... + * @return a fluid object (SystemInterface) + */ + public static SystemInterface create(String fluidType) { + Fluid fluid = new Fluid(); + fluid.setHasWater(hasWater); + fluid.setAutoSelectModel(autoSelectModel); + fluid.setThermoModel(thermoModel); + fluid.setThermoModel(thermoModel); + return fluid.create(fluidType); + } +} diff --git a/src/main/java/neqsim/thermo/ThermodynamicConstantsInterface.java b/src/main/java/neqsim/thermo/ThermodynamicConstantsInterface.java index c984924b3c..7030f54791 100644 --- a/src/main/java/neqsim/thermo/ThermodynamicConstantsInterface.java +++ b/src/main/java/neqsim/thermo/ThermodynamicConstantsInterface.java @@ -1,8 +1,3 @@ -/* - * ThermodynamicConstantsInterface.java - * - * Created on 3. juni 2000, 19:07 - */ package neqsim.thermo; /** @@ -14,34 +9,34 @@ * @version $Id: $Id */ public interface ThermodynamicConstantsInterface extends java.io.Serializable { - /** Constant R=8.3144621 */ - double R = 8.3144621; - /** Constant pi=3.14159265 */ - double pi = 3.14159265; - /** Constant gravity=9.80665 */ - double gravity = 9.80665; - /** Constant avagadroNumber=6.023e23 */ - double avagadroNumber = 6.023e23; - /** Constant MAX_NUMBER_OF_COMPONENTS=100 */ - static final int MAX_NUMBER_OF_COMPONENTS = 100; - /** Constant referenceTemperature=273.15 */ - double referenceTemperature = 273.15; - /** Constant referencePressure=1.01325 */ - double referencePressure = 1.01325; - /** Constant boltzmannConstant=1.38066e-23 */ - double boltzmannConstant = 1.38066e-23; - /** Constant electronCharge=1.6021917e-19 */ - double electronCharge = 1.6021917e-19; - /** Constant planckConstant=6.626196e-34 */ - double planckConstant = 6.626196e-34; - /** Constant vacumPermittivity=8.85419e-12 */ - double vacumPermittivity = 8.85419e-12; - /** Constant faradayConstant=96486.70 */ - double faradayConstant = 96486.70; - /** Constant standardStateTemperature=288.15 */ - double standardStateTemperature = 288.15; - /** Constant normalStateTemperature=273.15 */ - double normalStateTemperature = 273.15; - /** Constant molarMassAir=28.96546 */ - double molarMassAir = 28.96546; + /** Constant R=8.3144621. */ + double R = 8.3144621; + /** Constant pi=3.14159265. */ + double pi = 3.14159265; + /** Constant gravity=9.80665 [kg/ms^2]. */ + double gravity = 9.80665; + /** Constant avagadroNumber=6.023e23. */ + double avagadroNumber = 6.023e23; + /** Constant referenceTemperature=273.15 [K]. */ + double referenceTemperature = 273.15; + /** Constant referencePressure=1.01325 [bar]. */ + double referencePressure = 1.01325; + /** Constant atm=101325 [Pa]. */ + double atm = 101325; + /** Constant boltzmannConstant=1.38066e-23. */ + double boltzmannConstant = 1.38066e-23; + /** Constant electronCharge=1.6021917e-19. */ + double electronCharge = 1.6021917e-19; + /** Constant planckConstant=6.626196e-34. */ + double planckConstant = 6.626196e-34; + /** Constant vacumPermittivity=8.85419e-12. */ + double vacumPermittivity = 8.85419e-12; + /** Constant faradayConstant=96486.70. */ + double faradayConstant = 96486.70; + /** Constant standardStateTemperature=288.15 [K]. */ + double standardStateTemperature = 288.15; + /** Constant normalStateTemperature=273.15 [K]. */ + double normalStateTemperature = 273.15; + /** Constant molarMassAir=28.96546 [g/mol]. */ + double molarMassAir = 28.96546; } diff --git a/src/main/java/neqsim/thermo/ThermodynamicModelSettings.java b/src/main/java/neqsim/thermo/ThermodynamicModelSettings.java index 679b5d2622..8cbb0574d8 100644 --- a/src/main/java/neqsim/thermo/ThermodynamicModelSettings.java +++ b/src/main/java/neqsim/thermo/ThermodynamicModelSettings.java @@ -9,8 +9,8 @@ * @version $Id: $Id */ public interface ThermodynamicModelSettings extends java.io.Serializable { - /** Constant phaseFractionMinimumLimit=1e-12 */ - double phaseFractionMinimumLimit = 1e-12; - /** Constant MAX_NUMBER_OF_COMPONENTS=100 */ - static final int MAX_NUMBER_OF_COMPONENTS = 100; + /** Constant phaseFractionMinimumLimit=1e-12. */ + double phaseFractionMinimumLimit = 1e-12; + /** Constant MAX_NUMBER_OF_COMPONENTS=100. */ + int MAX_NUMBER_OF_COMPONENTS = 100; } diff --git a/src/main/java/neqsim/thermo/ThermodynamicModelTest.java b/src/main/java/neqsim/thermo/ThermodynamicModelTest.java index ff7dba0307..e9853dc03a 100644 --- a/src/main/java/neqsim/thermo/ThermodynamicModelTest.java +++ b/src/main/java/neqsim/thermo/ThermodynamicModelTest.java @@ -3,6 +3,7 @@ * * Created on 7. mai 2001, 19:20 */ + package neqsim.thermo; import org.apache.logging.log4j.LogManager; @@ -19,9 +20,11 @@ */ public class ThermodynamicModelTest implements ThermodynamicConstantsInterface { private static final long serialVersionUID = 1000; - SystemInterface system; static Logger logger = LogManager.getLogger(ThermodynamicModelTest.class); + SystemInterface system; + private double maxError = 1e-10; + /** *

* Constructor for ThermodynamicModelTest. @@ -54,16 +57,16 @@ public void runTest() { logger.info("testing fugacity der pressure..." + checkFugacityCoefficientsDP()); logger.info("testing fugacity der temperature..." + checkFugacityCoefficientsDT()); logger.info("comparing to numerical derivatives..." + checkNumerically()); - // System.out.println("testing fugacitycoefs..." + checkFugacityCoefficients()); - // System.out.println("testing fugacity der composition..." + + // logger.info("testing fugacitycoefs..." + checkFugacityCoefficients()); + // logger.info("testing fugacity der composition..." + // checkFugacityCoefficientsDn()); - // System.out.println("testing fugacity der composition2..." + + // logger.info("testing fugacity der composition2..." + // checkFugacityCoefficientsDn2()); - // System.out.println("testing fugacity der pressure..." + + // logger.info("testing fugacity der pressure..." + // checkFugacityCoefficientsDP()); - // System.out.println("testing fugacity der temperature..." + + // logger.info("testing fugacity der temperature..." + // checkFugacityCoefficientsDT()); - // System.out.println("comparing to numerical derivatives..." + + // logger.info("comparing to numerical derivatives..." + // checkNumerically()); } @@ -75,7 +78,7 @@ public void runTest() { * @return a boolean */ public boolean checkFugacityCoefficients() { - double temp1 = 0 ; + double temp1 = 0; for (int j = 0; j < system.getNumberOfPhases(); j++) { for (int i = 0; i < system.getPhase(j).getNumberOfComponents(); i++) { temp1 += system.getPhase(j).getComponents()[i].getNumberOfMolesInPhase() @@ -86,23 +89,23 @@ public boolean checkFugacityCoefficients() { temp1 -= system.getPhase(j).getGresTP() / (R * system.getTemperature()); } logger.info("Testing fugacity coefficients..................."); - //logger.info("Total fug gas : " + temp1); - //logger.info("Total fug liq : " + temp2); - // System.out.println("Testing fugacity coefficients..................."); - // System.out.println("Total fug gas : " + temp1); - // System.out.println("Total fug liq : " + temp2); - //System.out.println("MOLAR VOLUME 1 " + system.getPhase("gas").getMolarVolume()); - // System.out.println("MOLAR VOLUME 2 " + system.getPhase("aqueous").getMolarVolume()); - //System.out.println("number of phases " + system.getNumberOfPhases()); - //System.out.println("number of components " + system.getNumberOfComponents()); + // logger.info("Total fug gas : " + temp1); + // logger.info("Total fug liq : " + temp2); + // logger.info("Testing fugacity coefficients..................."); + // logger.info("Total fug gas : " + temp1); + // logger.info("Total fug liq : " + temp2); + // logger.info("MOLAR VOLUME 1 " + system.getPhase("gas").getMolarVolume()); + // logger.info("MOLAR VOLUME 2 " + system.getPhase("aqueous").getMolarVolume()); + // logger.info("number of phases " + system.getNumberOfPhases()); + // logger.info("number of components " + system.getNumberOfComponents()); // temp1 -= system.getPhase(j).getGresTP() / (R * system.getTemperature()); // temp2 -= system.getPhases()[1].getGresTP() / (R * system.getTemperature()); double sum = Math.abs(temp1); - //logger.info("Diffference fug gas : " + temp1); - //logger.info("Difference fug liq : " + temp2); - // System.out.println("Diffference fug gas : " + temp1); - // System.out.println("Difference fug liq : " + temp2); - return Math.abs(sum) < 1e-10; + // logger.info("Diffference fug gas : " + temp1); + // logger.info("Difference fug liq : " + temp2); + // logger.info("Diffference fug gas : " + temp1); + // logger.info("Difference fug liq : " + temp2); + return Math.abs(sum) < maxError; } /** @@ -113,43 +116,40 @@ public boolean checkFugacityCoefficients() { * @return a boolean */ // public boolean checkFugacityCoefficientsDn() { - public boolean checkFugacityCoefficientsDn() { double temp1 = 0; double sum = 0; for (int k = 0; k < system.getNumberOfPhases(); k++) { - for (int j = 0; j < system.getPhase(k).getNumberOfComponents(); j++) { - temp1 = 0; - //temp2 = 0; - // temp1 += - // Math.log(system.getPhases()[0].getComponents()[j].getFugacityCoefficient()); - // temp2 += - // Math.log(system.getPhases()[1].getComponents()[j].getFugacityCoefficient()); - for (int i = 0; i < system.getPhase(k).getNumberOfComponents(); i++) { - temp1 += system.getPhase(k).getComponents()[i].getNumberOfMolesInPhase() - * system.getPhase(k).getComponents()[i].getdfugdn(j); - //temp2 += system.getPhases()[1].getComponents()[i].getNumberOfMolesInPhase() - //* system.getPhases()[1].getComponents()[i].getdfugdn(j); - // System.out.println("fug " + - // system.getPhases()[1].getComponents()[i].getNumberOfMolesInPhase()*system.getPhases()[1].getComponents()[i].getdfugdn(j)); + for (int j = 0; j < system.getPhase(k).getNumberOfComponents(); j++) { + temp1 = 0; + // temp2 = 0; + // temp1 += + // Math.log(system.getPhases()[0].getComponents()[j].getFugacityCoefficient()); + // temp2 += + // Math.log(system.getPhases()[1].getComponents()[j].getFugacityCoefficient()); + for (int i = 0; i < system.getPhase(k).getNumberOfComponents(); i++) { + temp1 += system.getPhase(k).getComponents()[i].getNumberOfMolesInPhase() + * system.getPhase(k).getComponents()[i].getdfugdn(j); + // temp2 += system.getPhases()[1].getComponents()[i].getNumberOfMolesInPhase() + // * system.getPhases()[1].getComponents()[i].getdfugdn(j); + // logger.info("fug " + + // system.getPhases()[1].getComponents()[i].getNumberOfMolesInPhase()*system.getPhases()[1].getComponents()[i].getdfugdn(j)); + } + + // logger.info("test fugdn gas : " + j + " " + temp1 + " name " + + // system.getPhases()[0].getComponents()[j].getComponentName()); + // logger.info("test fugdn liq : " + j + " " + temp2); } - - - // System.out.println("test fugdn gas : " + j + " " + temp1 + " name " + - // system.getPhases()[0].getComponents()[j].getComponentName()); - // System.out.println("test fugdn liq : " + j + " " + temp2); } - } - sum += Math.abs(temp1) ; - logger.info("Testing composition derivatives of fugacity coefficients..................."); + sum += Math.abs(temp1); + logger.info("Testing composition derivatives of fugacity coefficients..................."); logger.info("Diffference : " + sum); - // System.out.println("Testing composition derivatives of fugacity + // logger.info("Testing composition derivatives of fugacity // coefficients..................."); - // System.out.println("Difference : " + sum); - return Math.abs(sum) < 1e-10; + // logger.info("Difference : " + sum); + return Math.abs(sum) < maxError; } - /** *

* checkFugacityCoefficientsDn2. @@ -163,34 +163,35 @@ public boolean checkFugacityCoefficientsDn2() { double sum = 0; for (int k = 0; k < system.getNumberOfPhases(); k++) { - for (int j = 0; j < system.getPhase(k).getNumberOfComponents(); j++) { - temp1 = 0; - //temp2 = 0; - // temp1 += - // Math.log(system.getPhases()[0].getComponents()[j].getFugacityCoefficient()); - // temp2 += - // Math.log(system.getPhases()[1].getComponents()[j].getFugacityCoefficient()); - for (int i = 0; i < system.getPhase(k).getNumberOfComponents(); i++) { - temp1 += system.getPhase(k).getComponents()[i].getdfugdn(j) - - system.getPhase(k).getComponents()[j].getdfugdn(i); - //temp2 += system.getPhases()[1].getComponents()[i].getdfugdn(j) - // - system.getPhases()[1].getComponents()[j].getdfugdn(i); + for (int j = 0; j < system.getPhase(k).getNumberOfComponents(); j++) { + temp1 = 0; + // temp2 = 0; + // temp1 += + // Math.log(system.getPhases()[0].getComponents()[j].getFugacityCoefficient()); + // temp2 += + // Math.log(system.getPhases()[1].getComponents()[j].getFugacityCoefficient()); + for (int i = 0; i < system.getPhase(k).getNumberOfComponents(); i++) { + temp1 += system.getPhase(k).getComponents()[i].getdfugdn(j) + - system.getPhase(k).getComponents()[j].getdfugdn(i); + // temp2 += system.getPhases()[1].getComponents()[i].getdfugdn(j) + // - system.getPhases()[1].getComponents()[j].getdfugdn(i); + } + // sum += Math.abs(temp1) + Math.abs(temp2); + // logger.info("test fugdn gas : " + j + " " + temp1); + // logger.info("test fugdn liq : " + j + " " + temp2); } - //sum += Math.abs(temp1) + Math.abs(temp2); - // System.out.println("test fugdn gas : " + j + " " + temp1); - // System.out.println("test fugdn liq : " + j + " " + temp2); + + // logger.info("Testing composition derivatives2 of fugacity + // coefficients..................."); + // logger.info("Diffference : " + sum); + // logger.info("Testing composition derivatives2 of fugacity + // coefficients..................."); + // logger.info("Difference : " + sum); } - - //logger.info("Testing composition derivatives2 of fugacity coefficients..................."); - //logger.info("Diffference : " + sum); - // System.out.println("Testing composition derivatives2 of fugacity - // coefficients..................."); - // System.out.println("Difference : " + sum); - } - sum += Math.abs(temp1) ; - logger.info("Testing composition derivatives2 of fugacity coefficients..................."); - logger.info("Diffference : " + sum); - return Math.abs(sum) < 1e-10; + sum += Math.abs(temp1); + logger.info("Testing composition derivatives2 of fugacity coefficients..................."); + logger.info("Diffference : " + sum); + return Math.abs(sum) < maxError; } /** @@ -208,22 +209,20 @@ public boolean checkFugacityCoefficientsDP() { for (int i = 0; i < system.getPhase(j).getNumberOfComponents(); i++) { temp1 += system.getPhase(j).getComponents()[i].getNumberOfMolesInPhase() * system.getPhase(j).getComponents()[i].getdfugdp(); - } temp1 -= (system.getPhase(j).getZ() - 1.0) * system.getPhase(j).getNumberOfMolesInPhase() / system.getPhase(j).getPressure(); - } sum = Math.abs(temp1) + Math.abs(temp2); - // System.out.println("test fugdp gas : " + temp1); - // System.out.println("test fugdp liq : " + temp2); + // logger.info("test fugdp gas : " + temp1); + // logger.info("test fugdp liq : " + temp2); logger.info("Testing pressure derivatives of fugacity coefficients..................."); logger.info("Error : " + sum); - // System.out.println("Testing pressure derivatives of fugacity + // logger.info("Testing pressure derivatives of fugacity // coefficients..................."); - // System.out.println("Error : " + sum); + // logger.info("Error : " + sum); - return Math.abs(sum) < 1e-10; + return Math.abs(sum) < maxError; } /** @@ -249,14 +248,14 @@ public boolean checkFugacityCoefficientsDT() { } // sum = Math.abs(temp1) + Math.abs(temp2); sum = Math.abs(temp1); - // System.out.println("test fugdp gas : " + system.getPhases()[0].getHresTP()); - // System.out.println("test fugdp liq : " + temp2); + // logger.info("test fugdp gas : " + system.getPhases()[0].getHresTP()); + // logger.info("test fugdp liq : " + temp2); logger.info("Testing temperature derivatives of fugacity coefficients..................."); logger.info("Error : " + sum); - // System.out.println("Testing temperature derivatives of fugacity + // logger.info("Testing temperature derivatives of fugacity // coefficients..................."); - // System.out.println("Error : " + sum); - return Math.abs(sum) < 1e-10; + // logger.info("Error : " + sum); + return Math.abs(sum) < maxError; } /** @@ -314,9 +313,9 @@ public boolean checkNumerically() { logger.info("dt: liq phase comp " + i + " % error " + ((liqfug[0][i] - liqfug[1][i]) / (2 * dt) - liqnumericDfugdt[0][i]) / liqnumericDfugdt[0][i] * 100.0); - // System.out.println("dt: gas phase comp " + i + " % error " + ((gasfug[0][i] - + // logger.info("dt: gas phase comp " + i + " % error " + ((gasfug[0][i] - // gasfug[1][i])/(2*dt) - gasnumericDfugdt[0][i])/gasnumericDfugdt[0][i]*100.0); - // System.out.println("dt: liq phase comp " + i + " % error " + ((liqfug[0][i] - + // logger.info("dt: liq phase comp " + i + " % error " + ((liqfug[0][i] - // liqfug[1][i])/(2*dt) - liqnumericDfugdt[0][i])/liqnumericDfugdt[0][i]*100.0); } @@ -347,9 +346,9 @@ public boolean checkNumerically() { logger.info("dp: liq phase comp " + i + " % error " + ((liqfug[0][i] - liqfug[1][i]) / (2 * dp) - liqnumericDfugdp[0][i]) / liqnumericDfugdp[0][i] * 100.0); - // System.out.println("dp: gas phase comp " + i + " % error " + ((gasfug[0][i] - + // logger.info("dp: gas phase comp " + i + " % error " + ((gasfug[0][i] - // gasfug[1][i])/(2*dp) - gasnumericDfugdp[0][i])/gasnumericDfugdp[0][i]*100.0); - // System.out.println("dp: liq phase comp " + i + " % error " + ((liqfug[0][i] - + // logger.info("dp: liq phase comp " + i + " % error " + ((liqfug[0][i] - // liqfug[1][i])/(2*dp) - liqnumericDfugdp[0][i])/liqnumericDfugdp[0][i]*100.0); } @@ -362,9 +361,9 @@ public boolean checkNumerically() { logger.info( "component name " + system.getPhases()[phase].getComponents()[k].getComponentName()); logger.info("dn " + dn); - // System.out.println("component name " + + // logger.info("component name " + // system.getPhases()[phase].getComponents()[k].getComponentName()); - // System.out.println("dn " + dn); + // logger.info("dn " + dn); if (dn < 1e-12) { dn = 1e-12; } @@ -397,7 +396,7 @@ public boolean checkNumerically() { logger.info("dn: gas phase comp " + i + " % error " + ((liqfug[0][i] - liqfug[1][i]) / (2 * dn) - gasnumericDfugdn[0][i][k]) / gasnumericDfugdn[0][i][k] * 100.0); - // System.out.println("dn: gas phase comp " + i + " % error " + + // logger.info("dn: gas phase comp " + i + " % error " + // ((liqfug[0][i] - // liqfug[1][i])/(2*dn) - // gasnumericDfugdn[0][i][k])/gasnumericDfugdn[0][i][k]*100.0); @@ -406,7 +405,7 @@ public boolean checkNumerically() { logger.info("dn: liq phase comp " + i + " % error " + ((liqfug[0][i] - liqfug[1][i]) / (2 * dn) - liqnumericDfugdn[0][i][k]) / liqnumericDfugdn[0][i][k] * 100.0); - // System.out.println("dn: liq phase comp " + i + " % error " + + // logger.info("dn: liq phase comp " + i + " % error " + // ((liqfug[0][i] - // liqfug[1][i])/(2*dn) - // liqnumericDfugdn[0][i][k])/liqnumericDfugdn[0][i][k]*100.0); @@ -421,4 +420,13 @@ public boolean checkNumerically() { } return true; } + + /** + * Setter for property maxError. + * + * @param maxErr before test will report failed Set maximum allowed error in model check + */ + public void setMaxError(double maxErr) { + this.maxError = maxErr; + } } diff --git a/src/main/java/neqsim/thermo/atomElement/Element.java b/src/main/java/neqsim/thermo/atomElement/Element.java index b0197e7bdf..d82149f7dd 100644 --- a/src/main/java/neqsim/thermo/atomElement/Element.java +++ b/src/main/java/neqsim/thermo/atomElement/Element.java @@ -3,6 +3,7 @@ * * Created on 4. februar 2001, 22:11 */ + package neqsim.thermo.atomElement; import java.util.ArrayList; @@ -19,79 +20,114 @@ * @version $Id: $Id */ public class Element implements ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - String[] nameArray; - double[] coefArray; - static Logger logger = LogManager.getLogger(Element.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Element.class); + + private String name; + private String[] nameArray; + private double[] coefArray; + + /** + *

+ * Constructor for Element. + *

+ * + * @param name Name of component. + */ + public Element(String name) { + this.name = name; - /** - *

- * Constructor for Element. - *

- */ - public Element() {} + ArrayList names = new ArrayList(); + ArrayList stocCoef = new ArrayList(); - /** - *

- * Constructor for Element. - *

- * - * @param name a {@link java.lang.String} object - */ - public Element(String name) { - ArrayList names = new ArrayList(); - ArrayList stocCoef = new ArrayList(); - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - try { - java.sql.ResultSet dataSet = database - .getResultSet(("SELECT * FROM element WHERE componentname='" + name + "'")); - dataSet.next(); - // System.out.println("comp name " + dataSet.getString("componentname")); - do { - names.add(dataSet.getString("atomelement").trim()); - // System.out.println("name " + dataSet.getString("atomelement")); - stocCoef.add(dataSet.getString("number")); - } while (dataSet.next()); + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet(("SELECT * FROM element WHERE componentname='" + name + "'"))) { + if (!dataSet.next()) { + return; + } - nameArray = new String[names.size()]; - coefArray = new double[nameArray.length]; - for (int i = 0; i < nameArray.length; i++) { - coefArray[i] = Double.parseDouble(stocCoef.get(i)); - nameArray[i] = names.get(i); - } - dataSet.close(); - database.getConnection().close(); - } catch (Exception e) { - try { - database.getConnection().close(); - } catch (Exception ex) { - logger.error(ex); - } - String err = e.toString(); - logger.error(err); - // System.out.println(err); - } + do { + names.add(dataSet.getString("atomelement").trim()); + stocCoef.add(dataSet.getString("number")); + } while (dataSet.next()); + + nameArray = new String[names.size()]; + coefArray = new double[nameArray.length]; + for (int i = 0; i < nameArray.length; i++) { + coefArray[i] = Double.parseDouble(stocCoef.get(i)); + nameArray[i] = names.get(i); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } + + /** + * Getter for property name. + * + * @return Component name. + */ + public String getName() { + return this.name; + } - /** - *

- * getElementNames. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[] getElementNames() { - return nameArray; + /** + * Getter for property nameArray. + * + * @return an array of {@link java.lang.String} objects. Names of Elements of component. + */ + public String[] getElementNames() { + return nameArray; + } + + /** + * GetNumberOfElements. + * + * @param elementName name of element + * @return NumberOfElements of a given type. + */ + public double getNumberOfElements(String elementName) { + if (nameArray == null) { + neqsim.util.exception.InvalidInputException ex = + new neqsim.util.exception.InvalidInputException(this, "getNumberOfElements", elementName, + "component not in element database.."); + throw new RuntimeException(ex); + } + for (int i = 0; i < nameArray.length; i++) { + if (nameArray[i].equals(elementName)) { + return coefArray[i]; + } } + return 0.0; + } - /** - *

- * getElementCoefs. - *

- * - * @return an array of {@link double} objects - */ - public double[] getElementCoefs() { - return coefArray; + /** + * Getter for property coefArray. + * + * @return an array of type double. Coefficient corresponding to nameArray. + */ + public double[] getElementCoefs() { + return coefArray; + } + + /** + * Get all defined components. + * + * @return All element names in database. + */ + public static ArrayList getAllElementComponentNames() { + ArrayList names = new ArrayList(); + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = database.getResultSet(("SELECT * FROM element"))) { + dataSet.next(); + do { + names.add(dataSet.getString("componentname").trim()); + } while (dataSet.next()); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + + return names; + } } diff --git a/src/main/java/neqsim/thermo/atomElement/UNIFACgroup.java b/src/main/java/neqsim/thermo/atomElement/UNIFACgroup.java index 23cceb4ab6..256c6d05fd 100644 --- a/src/main/java/neqsim/thermo/atomElement/UNIFACgroup.java +++ b/src/main/java/neqsim/thermo/atomElement/UNIFACgroup.java @@ -5,6 +5,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.component.ComponentGEUnifac; import neqsim.thermo.phase.PhaseGEUnifac; @@ -18,22 +19,26 @@ */ public class UNIFACgroup implements ThermodynamicConstantsInterface, Comparable { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(UNIFACgroup.class); + double R = 0.0; double Q = 0.0; int n = 0; double xComp = 0.0; - double QComp = 0.0, QMix = 0.0; - public double[] QMixdN = null;// , xMixdN = null; - double[] lnGammaMixdn = new double[MAX_NUMBER_OF_COMPONENTS]; - double lnGammaComp = 0.0, lnGammaMix = 0.0; - double lnGammaCompdT = 0.0, lnGammaMixdT = 0.0; + double QComp = 0.0; + double QMix = 0.0; + public double[] QMixdN = null; // , xMixdN = null; + double[] lnGammaMixdn = new double[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + double lnGammaComp = 0.0; + double lnGammaMix = 0.0; + double lnGammaCompdT = 0.0; + double lnGammaMixdT = 0.0; private double lnGammaCompdTdT = 0.0; private double lnGammaMixdTdT = 0.0; int groupIndex = 0; String groupName = ""; int mainGroup = 0; int subGroup = 0; - static Logger logger = LogManager.getLogger(UNIFACgroup.class); /** *

@@ -73,15 +78,14 @@ public UNIFACgroup() {} * @param temp a int */ public UNIFACgroup(int groupNumber, int temp) { - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - try { + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { java.sql.ResultSet dataSet = null; try { dataSet = database .getResultSet(("SELECT * FROM unifacgroupparam WHERE Secondary=" + groupNumber + "")); dataSet.next(); dataSet.getClob("name"); - } catch (Exception e) { + } catch (Exception ex) { dataSet.close(); dataSet = database .getResultSet(("SELECT * FROM unifacgroupparam WHERE Secondary=" + groupNumber + "")); @@ -93,17 +97,8 @@ public UNIFACgroup(int groupNumber, int temp) { mainGroup = Integer.parseInt(dataSet.getString("Main")); subGroup = Integer.parseInt(dataSet.getString("Secondary")); groupName = dataSet.getString("Name"); - dataSet.close(); - database.getConnection().close(); - } catch (Exception e) { - try { - database.getConnection().close(); - } catch (Exception ex) { - logger.error(ex); - } - String err = e.toString(); - logger.error(err); - // System.out.println(err); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } @@ -215,6 +210,7 @@ public void setGroupName(java.lang.String groupName) { this.groupName = groupName; } + /** {@inheritDoc} */ @Override public int compareTo(UNIFACgroup o) { if (o.getSubGroup() < getSubGroup()) { @@ -241,13 +237,17 @@ public int hashCode() { /** {@inheritDoc} */ // @Override + @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } UNIFACgroup other = (UNIFACgroup) obj; return subGroup == other.subGroup; /* @@ -268,12 +268,11 @@ public boolean equals(Object obj) { */ } - /** * Getter for property xComp. * - * @return Value of property xComp. * @param component a {@link neqsim.thermo.component.ComponentGEUnifac} object + * @return Value of property xComp. */ public double calcXComp(ComponentGEUnifac component) { double temp = 0.0; @@ -286,7 +285,7 @@ public double calcXComp(ComponentGEUnifac component) { } /* * public double calcXMix(PhaseGEUnifac phase) { double temp = 0.0, temp2 = 0.0, tempVal = 0.0; - * + * * for (int j = 0; j < phase.getNumberOfComponents(); j++) { for (int i = 0; i < * ((ComponentGEUnifac) phase.getComponent(j)).getNumberOfUNIFACgroups(); i++) { tempVal = * phase.getComponent(j).getNumberOfMolesInPhase() * ((ComponentGEUnifac) @@ -326,7 +325,10 @@ public double calcQComp(ComponentGEUnifac component) { */ public double calcQMix(PhaseGEUnifac phase) { ComponentGEUnifac component; - double temp = 0.0, temp2 = 0.0, tempVar, numberOfMoles; + double temp = 0.0; + double temp2 = 0.0; + double tempVar; + double numberOfMoles; UNIFACgroup unifacGroup; int numberOfGrups = 0; for (int j = 0; j < phase.getNumberOfComponents(); j++) { @@ -353,14 +355,19 @@ public double calcQMix(PhaseGEUnifac phase) { *

* * @param phase a {@link neqsim.thermo.phase.PhaseGEUnifac} object - * @return an array of {@link double} objects + * @return an array of type double */ public double[] calcQMixdN(PhaseGEUnifac phase) { setQMixdN(new double[phase.getNumberOfComponents()]); ComponentGEUnifac component; UNIFACgroup unifacGroup; // calcXMixdN(phase); - double temp, temp2, tempVar, tempdn, temp2dn, tempVardn = 0.0; + double temp; + double temp2; + double tempVar; + double tempdn; + double temp2dn; + double tempVardn = 0.0; for (int k = 0; k < phase.getNumberOfComponents(); k++) { temp = 0.0; temp2 = 0.0; @@ -403,7 +410,7 @@ public double getQMixdN(int comp) { } /* * public double getXMixdN(int comp) { return xMixdN[comp]; } - * + * * public void setXMixdN(double[] xMixdN) { this.xMixdN = xMixdN; } */ diff --git a/src/main/java/neqsim/thermo/characterization/Characterise.java b/src/main/java/neqsim/thermo/characterization/Characterise.java index 462e14a103..34cd86f10a 100644 --- a/src/main/java/neqsim/thermo/characterization/Characterise.java +++ b/src/main/java/neqsim/thermo/characterization/Characterise.java @@ -13,164 +13,165 @@ * @version $Id: $Id */ public class Characterise implements java.io.Serializable, Cloneable { - private static final long serialVersionUID = 1000; - SystemInterface system = null; - TBPCharacterize TBPCharacterise = null; - private TBPModelInterface TBPfractionModel = null; - private PlusFractionModel plusFractionModelSelector = null; - private PlusFractionModelInterface plusFractionModel = null; - private LumpingModelInterface lumpingModel = null; - protected String TBPFractionModelName = "PedersenSRK"; - protected LumpingModel lumpingModelSelector = null; - protected TBPfractionModel TBPfractionModelSelector; - static Logger logger = LogManager.getLogger(Characterise.class); - - public Characterise() {} - - /** - *

- * Constructor for Characterise. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public Characterise(SystemInterface system) { - this.system = system; - - TBPCharacterise = new neqsim.thermo.characterization.TBPCharacterize(system); - - TBPfractionModelSelector = new TBPfractionModel(); - TBPfractionModel = TBPfractionModelSelector.getModel(""); - - lumpingModelSelector = new LumpingModel(system); - lumpingModel = lumpingModelSelector.getModel(""); - - plusFractionModelSelector = new PlusFractionModel(system); - plusFractionModel = plusFractionModelSelector.getModel(""); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Characterise.class); + + SystemInterface system = null; + TBPCharacterize TBPCharacterise = null; + private TBPModelInterface TBPfractionModel = null; + private PlusFractionModel plusFractionModelSelector = null; + private PlusFractionModelInterface plusFractionModel = null; + private LumpingModelInterface lumpingModel = null; + protected String TBPFractionModelName = "PedersenSRK"; + protected LumpingModel lumpingModelSelector = null; + protected TBPfractionModel TBPfractionModelSelector; + + /** + *

+ * Constructor for Characterise. + *

+ */ + public Characterise() {} + + /** + *

+ * Constructor for Characterise. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public Characterise(SystemInterface system) { + this.system = system; + + TBPCharacterise = new neqsim.thermo.characterization.TBPCharacterize(system); + + TBPfractionModelSelector = new TBPfractionModel(); + TBPfractionModel = TBPfractionModelSelector.getModel(""); + + lumpingModelSelector = new LumpingModel(system); + lumpingModel = lumpingModelSelector.getModel(""); + + plusFractionModelSelector = new PlusFractionModel(system); + plusFractionModel = plusFractionModelSelector.getModel(""); + } + + /** + *

+ * setThermoSystem. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setThermoSystem(SystemInterface system) { + this.system = system; + } + + /** {@inheritDoc} */ + @Override + public Characterise clone() { + Characterise clonedSystem = null; + try { + clonedSystem = (Characterise) super.clone(); + // clonedSystem.chemicalReactionOperations = (ChemicalReactionOperations) + // chemicalReactionOperations.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - - /** - *

- * setThermoSystem. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setThermoSystem(SystemInterface system) { - this.system = system; - } - - /** {@inheritDoc} */ - @Override - public Characterise clone() { - Characterise clonedSystem = null; - try { - clonedSystem = (Characterise) super.clone(); - // clonedSystem.chemicalReactionOperations = (ChemicalReactionOperations) - // chemicalReactionOperations.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return clonedSystem; - } - - /** - *

- * getTBPModel. - *

- * - * @return a {@link neqsim.thermo.characterization.TBPModelInterface} object - */ - public TBPModelInterface getTBPModel() { - return TBPfractionModel; - } - - /** - *

- * setTBPModel. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setTBPModel(String name) { - TBPfractionModel = TBPfractionModelSelector.getModel(name); - } - - /** - *

- * Setter for the field lumpingModel. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setLumpingModel(String name) { - lumpingModel = lumpingModelSelector.getModel(name); + return clonedSystem; + } + + /** + *

+ * getTBPModel. + *

+ * + * @return a {@link neqsim.thermo.characterization.TBPModelInterface} object + */ + public TBPModelInterface getTBPModel() { + return TBPfractionModel; + } + + /** + *

+ * setTBPModel. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setTBPModel(String name) { + TBPfractionModel = TBPfractionModelSelector.getModel(name); + } + + /** + *

+ * Setter for the field lumpingModel. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setLumpingModel(String name) { + lumpingModel = lumpingModelSelector.getModel(name); + } + + /** + *

+ * Setter for the field plusFractionModel. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setPlusFractionModel(String name) { + plusFractionModel = plusFractionModelSelector.getModel(name); + } + + /** + *

+ * Getter for the field plusFractionModel. + *

+ * + * @return a {@link neqsim.thermo.characterization.PlusFractionModelInterface} object + */ + public PlusFractionModelInterface getPlusFractionModel() { + return plusFractionModel; + } + + /** + *

+ * Getter for the field lumpingModel. + *

+ * + * @return a {@link neqsim.thermo.characterization.LumpingModelInterface} object + */ + public LumpingModelInterface getLumpingModel() { + return lumpingModel; + } + + /** + *

+ * characterisePlusFraction. + *

+ */ + public void characterisePlusFraction() { + system.init(0); + if (plusFractionModel.hasPlusFraction()) { + if (plusFractionModel.getMPlus() > plusFractionModel.getMaxPlusMolarMass()) { + logger.error("plus fraction molar mass too heavy for " + plusFractionModel.getName()); + plusFractionModel = plusFractionModelSelector.getModel("heavyOil"); + logger.info("changing to " + plusFractionModel.getName()); + } + plusFractionModel.characterizePlusFraction(TBPfractionModel); + lumpingModel.generateLumpedComposition(this); } - - /** - *

- * Setter for the field plusFractionModel. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setPlusFractionModel(String name) { - plusFractionModel = plusFractionModelSelector.getModel(name); - } - - /** - *

- * Getter for the field plusFractionModel. - *

- * - * @return a {@link neqsim.thermo.characterization.PlusFractionModelInterface} object - */ - public PlusFractionModelInterface getPlusFractionModel() { - return plusFractionModel; - } - - /** - *

- * Getter for the field lumpingModel. - *

- * - * @return a {@link neqsim.thermo.characterization.LumpingModelInterface} object - */ - public LumpingModelInterface getLumpingModel() { - return lumpingModel; - } - - /** - *

- * characterisePlusFraction. - *

- */ - public void characterisePlusFraction() { - system.init(0); - if (plusFractionModel.hasPlusFraction()) { - if (plusFractionModel.getMPlus() > plusFractionModel.getMaxPlusMolarMass()) { - logger.error( - "plus fraction molar mass too heavy for " + plusFractionModel.getName()); - plusFractionModel = plusFractionModelSelector.getModel("heavyOil"); - logger.info("changing to " + plusFractionModel.getName()); - } - plusFractionModel.characterizePlusFraction(TBPfractionModel); - lumpingModel.generateLumpedComposition(this); - } - } - - /* - * - * public boolean addPlusFraction(int start, int end) { plusFractionModel = new - * PlusCharacterize(system); if (TBPCharacterise.hasPlusFraction()) { - * TBPCharacterise.groupTBPfractions(); TBPCharacterise.generateTBPFractions(); return true; } - * else { System.out.println("not able to generate pluss fraction"); return false; } } - * - * - * public boolean characterize2() { if (TBPCharacterise.groupTBPfractions()) { - * TBPCharacterise.solve(); return true; } else { System.out.println("not able to generate pluss - * fraction"); return false; } } - * - * - */ + } + + /* + * public boolean addPlusFraction(int start, int end) { plusFractionModel = new + * PlusCharacterize(system); if (TBPCharacterise.hasPlusFraction()) { + * TBPCharacterise.groupTBPfractions(); TBPCharacterise.generateTBPFractions(); return true; } + * else { System.out.println("not able to generate pluss fraction"); return false; } } + * + * public boolean characterize2() { if (TBPCharacterise.groupTBPfractions()) { + * TBPCharacterise.solve(); return true; } else { System.out.println("not able to generate pluss + * fraction"); return false; } } + */ } diff --git a/src/main/java/neqsim/thermo/characterization/CharacteriseInterface.java b/src/main/java/neqsim/thermo/characterization/CharacteriseInterface.java index 781d318d75..f793bc5aba 100644 --- a/src/main/java/neqsim/thermo/characterization/CharacteriseInterface.java +++ b/src/main/java/neqsim/thermo/characterization/CharacteriseInterface.java @@ -9,256 +9,256 @@ * @version $Id: $Id */ public interface CharacteriseInterface { - /** Constant PVTsimMolarMass */ - public double[] PVTsimMolarMass = {80.0, 96.0, 107, 121, 134, 147, 161, 175, 190, 206, 222, 237, - 251, 263, 275, 291, 305, 318, 331, 345, 359, 374, 388, 402, 416, 430, 444, 458, 472, - 486, 500, 514, 528, 542, 556, 570, 584, 598, 612, 626, 640, 654, 668, 682, 696, 710, - 724, 738, 752, 766, 780, 794, 808, 822, 836, 850, 864, 878, 892, 906, 920, 934, 948, - 962, 976, 990, 1004, 1018, 1032, 1046, 1060, 1074, 1088, 1102, 1116}; + /** Constant PVTsimMolarMass. */ + public double[] PVTsimMolarMass = {80.0, 96.0, 107, 121, 134, 147, 161, 175, 190, 206, 222, 237, + 251, 263, 275, 291, 305, 318, 331, 345, 359, 374, 388, 402, 416, 430, 444, 458, 472, 486, 500, + 514, 528, 542, 556, 570, 584, 598, 612, 626, 640, 654, 668, 682, 696, 710, 724, 738, 752, 766, + 780, 794, 808, 822, 836, 850, 864, 878, 892, 906, 920, 934, 948, 962, 976, 990, 1004, 1018, + 1032, 1046, 1060, 1074, 1088, 1102, 1116}; - /** - *

- * solve. - *

- */ - public void solve(); + /** + *

+ * solve. + *

+ */ + public void solve(); - /** - *

- * generatePlusFractions. - *

- * - * @param start a int - * @param end a int - * @param zplus a double - * @param Mplus a double - */ - public void generatePlusFractions(int start, int end, double zplus, double Mplus); + /** + *

+ * generatePlusFractions. + *

+ * + * @param start a int + * @param end a int + * @param zplus a double + * @param Mplus a double + */ + public void generatePlusFractions(int start, int end, double zplus, double Mplus); - /** - *

- * generateTBPFractions. - *

- */ - public void generateTBPFractions(); + /** + *

+ * generateTBPFractions. + *

+ */ + public void generateTBPFractions(); - /** - *

- * groupTBPfractions. - *

- * - * @return a boolean - */ - public boolean groupTBPfractions(); + /** + *

+ * groupTBPfractions. + *

+ * + * @return a boolean + */ + public boolean groupTBPfractions(); - /** - *

- * hasPlusFraction. - *

- * - * @return a boolean - */ - public boolean hasPlusFraction(); + /** + *

+ * hasPlusFraction. + *

+ * + * @return a boolean + */ + public boolean hasPlusFraction(); - /** - *

- * isPseudocomponents. - *

- * - * @return a boolean - */ - public boolean isPseudocomponents(); + /** + *

+ * isPseudocomponents. + *

+ * + * @return a boolean + */ + public boolean isPseudocomponents(); - /** - *

- * setPseudocomponents. - *

- * - * @param pseudocomponents a boolean - */ - public void setPseudocomponents(boolean pseudocomponents); + /** + *

+ * setPseudocomponents. + *

+ * + * @param pseudocomponents a boolean + */ + public void setPseudocomponents(boolean pseudocomponents); - /** - *

- * setNumberOfPseudocomponents. - *

- * - * @param numberOfPseudocomponents a int - */ - public void setNumberOfPseudocomponents(int numberOfPseudocomponents); + /** + *

+ * setNumberOfPseudocomponents. + *

+ * + * @param numberOfPseudocomponents a int + */ + public void setNumberOfPseudocomponents(int numberOfPseudocomponents); - /** - *

- * addCharacterizedPlusFraction. - *

- */ - public void addCharacterizedPlusFraction(); + /** + *

+ * addCharacterizedPlusFraction. + *

+ */ + public void addCharacterizedPlusFraction(); - /** - *

- * removeTBPfraction. - *

- */ - public void removeTBPfraction(); + /** + *

+ * removeTBPfraction. + *

+ */ + public void removeTBPfraction(); - /** - *

- * addHeavyEnd. - *

- */ - public void addHeavyEnd(); + /** + *

+ * addHeavyEnd. + *

+ */ + public void addHeavyEnd(); - /** - *

- * addTBPFractions. - *

- */ - public void addTBPFractions(); + /** + *

+ * addTBPFractions. + *

+ */ + public void addTBPFractions(); - /** - *

- * getCoefs. - *

- * - * @return an array of {@link double} objects - */ - public double[] getCoefs(); + /** + *

+ * getCoefs. + *

+ * + * @return an array of type double + */ + public double[] getCoefs(); - /** - *

- * getCoef. - *

- * - * @param i a int - * @return a double - */ - public double getCoef(int i); + /** + *

+ * getCoef. + *

+ * + * @param i a int + * @return a double + */ + public double getCoef(int i); - /** - *

- * getFirstPlusFractionNumber. - *

- * - * @return a int - */ - public int getFirstPlusFractionNumber(); + /** + *

+ * getFirstPlusFractionNumber. + *

+ * + * @return a int + */ + public int getFirstPlusFractionNumber(); - /** - *

- * getLastPlusFractionNumber. - *

- * - * @return a int - */ - public int getLastPlusFractionNumber(); + /** + *

+ * getLastPlusFractionNumber. + *

+ * + * @return a int + */ + public int getLastPlusFractionNumber(); - /** - *

- * setZPlus. - *

- * - * @param zPlus a double - */ - public void setZPlus(double zPlus); + /** + *

+ * setZPlus. + *

+ * + * @param zPlus a double + */ + public void setZPlus(double zPlus); - /** - *

- * getPlusCoefs. - *

- * - * @return an array of {@link double} objects - */ - public double[] getPlusCoefs(); + /** + *

+ * getPlusCoefs. + *

+ * + * @return an array of type double + */ + public double[] getPlusCoefs(); - /** - *

- * getPlusCoefs. - *

- * - * @param i a int - * @return a double - */ - public double getPlusCoefs(int i); + /** + *

+ * getPlusCoefs. + *

+ * + * @param i a int + * @return a double + */ + public double getPlusCoefs(int i); - /** - *

- * setPlusCoefs. - *

- * - * @param plusCoefs an array of {@link double} objects - */ - public void setPlusCoefs(double[] plusCoefs); + /** + *

+ * setPlusCoefs. + *

+ * + * @param plusCoefs an array of type double + */ + public void setPlusCoefs(double[] plusCoefs); - /** - *

- * getDensPlus. - *

- * - * @return a double - */ - public double getDensPlus(); + /** + *

+ * getDensPlus. + *

+ * + * @return a double + */ + public double getDensPlus(); - /** - *

- * getZPlus. - *

- * - * @return a double - */ - public double getZPlus(); + /** + *

+ * getZPlus. + *

+ * + * @return a double + */ + public double getZPlus(); - /** - *

- * getMPlus. - *

- * - * @return a double - */ - public double getMPlus(); + /** + *

+ * getMPlus. + *

+ * + * @return a double + */ + public double getMPlus(); - /** - *

- * setMPlus. - *

- * - * @param MPlus a double - */ - public void setMPlus(double MPlus); + /** + *

+ * setMPlus. + *

+ * + * @param MPlus a double + */ + public void setMPlus(double MPlus); - /** - *

- * getDensLastTBP. - *

- * - * @return a double - */ - public double getDensLastTBP(); + /** + *

+ * getDensLastTBP. + *

+ * + * @return a double + */ + public double getDensLastTBP(); - /** - *

- * setCoefs. - *

- * - * @param coefs an array of {@link double} objects - */ - public void setCoefs(double[] coefs); + /** + *

+ * setCoefs. + *

+ * + * @param coefs an array of type double + */ + public void setCoefs(double[] coefs); - /** - *

- * setCoefs. - *

- * - * @param coef a double - * @param i a int - */ - public void setCoefs(double coef, int i); + /** + *

+ * setCoefs. + *

+ * + * @param coef a double + * @param i a int + */ + public void setCoefs(double coef, int i); - /** - *

- * setDensLastTBP. - *

- * - * @param densLastTBP a double - */ - public void setDensLastTBP(double densLastTBP); + /** + *

+ * setDensLastTBP. + *

+ * + * @param densLastTBP a double + */ + public void setDensLastTBP(double densLastTBP); } diff --git a/src/main/java/neqsim/thermo/characterization/LumpingModel.java b/src/main/java/neqsim/thermo/characterization/LumpingModel.java index e1fb0b3c99..b10cdae9e9 100644 --- a/src/main/java/neqsim/thermo/characterization/LumpingModel.java +++ b/src/main/java/neqsim/thermo/characterization/LumpingModel.java @@ -13,326 +13,433 @@ * @version $Id: $Id */ public class LumpingModel implements java.io.Serializable { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(LumpingModel.class); + + int numberOfLumpedComponents = 7; + int numberOfPseudocomponents = 7; + private String[] lumpedComponentNames = null; + double[] fractionOfHeavyEnd = null; + String name = ""; + SystemInterface system = null; + + /** + *

+ * Constructor for LumpingModel. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public LumpingModel(SystemInterface system) { + this.system = system; + } + + /** + * StandardLumpingModel distributes the pseudo components into equal weight fractions starting + * with the first TBP fraction in the fluid. + * + * @author Even Solbraa + * @version 1.0 + */ + public class StandardLumpingModel + implements LumpingModelInterface, Cloneable, java.io.Serializable { private static final long serialVersionUID = 1000; - int numberOfLumpedComponents = 7, numberOfPseudocomponents = 7; - private String[] lumpedComponentNames = null; - double[] fractionOfHeavyEnd = null; - String name = ""; - SystemInterface system = null; - static Logger logger = LogManager.getLogger(LumpingModel.class); - - /** - *

- * Constructor for LumpingModel. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public LumpingModel(SystemInterface system) { - this.system = system; + + public StandardLumpingModel() {} + + @Override + public void setNumberOfLumpedComponents(int lumpedNumb) { + numberOfLumpedComponents = lumpedNumb; } - /** - * StandardLumpingModel distributes the pseudo components into equal weight - * fractions starting with the first TBP fraction in the fluid - * - * @author Even Solbraa - * @version 1.0 - */ - public class StandardLumpingModel - implements LumpingModelInterface, Cloneable, java.io.Serializable { - private static final long serialVersionUID = 1000; - - public StandardLumpingModel() {} - - @Override - public void setNumberOfLumpedComponents(int lumpedNumb) { - numberOfLumpedComponents = lumpedNumb; - } + @Override + public int getNumberOfLumpedComponents() { + return numberOfLumpedComponents; + } - @Override - public int getNumberOfLumpedComponents() { - return numberOfLumpedComponents; - } + @Override + public void setNumberOfPseudoComponents(int lumpedNumb) { + numberOfPseudocomponents = lumpedNumb; + } - @Override - public void setNumberOfPseudoComponents(int lumpedNumb) { - numberOfPseudocomponents = lumpedNumb; - } + @Override + public int getNumberOfPseudoComponents() { + return numberOfPseudocomponents; + } - @Override - public int getNumberOfPseudoComponents() { - return numberOfPseudocomponents; - } + @Override + public String getName() { + return name; + } - @Override - public String getName() { - return name; - } + @Override + public String getLumpedComponentName(int i) { + return lumpedComponentNames[i]; + } - @Override - public String getLumpedComponentName(int i) { - return lumpedComponentNames[i]; - } + @Override + public String[] getLumpedComponentNames() { + return lumpedComponentNames; + } - @Override - public String[] getLumpedComponentNames() { - return lumpedComponentNames; + @Override + public void generateLumpedComposition(Characterise charac) { + numberOfLumpedComponents = numberOfPseudocomponents; + lumpedComponentNames = new String[numberOfLumpedComponents]; + fractionOfHeavyEnd = new double[numberOfPseudocomponents]; + double[] zPlus = new double[numberOfPseudocomponents]; + double weightFrac = 0.0; + double weightTot = 0.0; + double molFracTot = 0.0; + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).isIsTBPfraction() + || system.getPhase(0).getComponent(i).isIsPlusFraction()) { + weightTot += system.getPhase(0).getComponent(i).getz() + * system.getPhase(0).getComponent(i).getMolarMass(); + molFracTot += system.getPhase(0).getComponent(i).getz(); } - - @Override - public void generateLumpedComposition(Characterise charac) { - numberOfLumpedComponents = numberOfPseudocomponents; - lumpedComponentNames = new String[numberOfLumpedComponents]; - fractionOfHeavyEnd = new double[numberOfPseudocomponents]; - double[] zPlus = new double[numberOfPseudocomponents]; - double weightFrac = 0.0; - double weightTot = 0.0; - double molFracTot = 0.0; - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).isIsTBPfraction() - || system.getPhase(0).getComponent(i).isIsPlusFraction()) { - weightTot += system.getPhase(0).getComponent(i).getz() - * system.getPhase(0).getComponent(i).getMolarMass(); - molFracTot += system.getPhase(0).getComponent(i).getz(); - } - } - - double meanWeightFrac = weightTot / (numberOfPseudocomponents + 1e-10); - int k = 0; - // int firstPS = charac.getPlusFractionModel().getFirstTBPFractionNumber(); - double Maverage = 0.0, denstemp1 = 0.0, denstemp2 = 0.0; - double totalNumberOfMoles = system.getNumberOfMoles(); - int i = 0; - int added = 0; - if (charac.getPlusFractionModel().hasPlusFraction()) { - added++; - } - int pseudoNumber = 1; - double accumulatedWeigthFrac = 0.0; - - for (int ii = 0; ii < system.getPhase(0).getNumberOfComponents() - added; ii++) { - String name = system.getPhase(0).getComponent(ii).getComponentName(); - if (system.getPhase(0).getComponent(name).isIsTBPfraction() - || system.getPhase(0).getComponent(name).isIsPlusFraction()) { - Maverage += system.getPhase(0).getComponent(name).getz() - * system.getPhase(0).getComponent(name).getMolarMass(); - weightFrac += system.getPhase(0).getComponent(name).getz() - * system.getPhase(0).getComponent(name).getMolarMass(); - zPlus[k] += system.getPhase(0).getComponent(name).getz(); - denstemp1 += system.getPhase(0).getComponent(name).getz() - * system.getPhase(0).getComponent(name).getMolarMass(); - denstemp2 += system.getPhase(0).getComponent(name).getz() - * system.getPhase(0).getComponent(name).getMolarMass() - / system.getPhase(0).getComponent(name).getNormalLiquidDensity(); - system.removeComponent(name); - // logger.info("removing component " + name); - ii--; - } - - if (weightFrac >= meanWeightFrac) { - accumulatedWeigthFrac += weightFrac; - meanWeightFrac = (weightTot - accumulatedWeigthFrac) - / (numberOfPseudocomponents - pseudoNumber); - String addName = "PC" + Integer.toString(pseudoNumber++); - // String addName = (i == firstPS) ? "PC" + Integer.toString(firstPS) : "PC" + - // Integer.toString(firstPS) + "-" + Integer.toString(ii); - fractionOfHeavyEnd[k] = zPlus[k] / molFracTot; - lumpedComponentNames[pseudoNumber - 2] = addName; - system.addTBPfraction(addName, totalNumberOfMoles * zPlus[k], - Maverage / zPlus[k], denstemp1 / denstemp2); - denstemp1 = 0.0; - denstemp2 = 0.0; - weightFrac = 0.0; - Maverage = 0.0; - k++; - added++; - } - } - - for (i = charac.getPlusFractionModel().getFirstPlusFractionNumber(); i < charac - .getPlusFractionModel().getLastPlusFractionNumber(); i++) { - Maverage += charac.getPlusFractionModel().getZ()[i] - * charac.getPlusFractionModel().getM()[i]; - weightFrac += charac.getPlusFractionModel().getZ()[i] - * charac.getPlusFractionModel().getM()[i]; - accumulatedWeigthFrac += charac.getPlusFractionModel().getZ()[i] - * charac.getPlusFractionModel().getM()[i]; - zPlus[k] += charac.getPlusFractionModel().getZ()[i]; - denstemp1 += charac.getPlusFractionModel().getZ()[i] - * charac.getPlusFractionModel().getM()[i]; - denstemp2 += charac.getPlusFractionModel().getZ()[i] - * charac.getPlusFractionModel().getM()[i] - / charac.getPlusFractionModel().getDens()[i]; - - // System.out.println("weigth " + weightFrac + " i" + i); - if ((weightFrac >= meanWeightFrac - && !((numberOfPseudocomponents - pseudoNumber) == 0)) - || i == charac.getPlusFractionModel().getLastPlusFractionNumber() - 1) { - meanWeightFrac = (weightTot - accumulatedWeigthFrac) - / (numberOfPseudocomponents - pseudoNumber); - String addName = "PC" + Integer.toString(pseudoNumber++); - lumpedComponentNames[pseudoNumber - 2] = addName; - // System.out.println("adding " + addName); - fractionOfHeavyEnd[k] = zPlus[k] / molFracTot; - system.addTBPfraction(addName, totalNumberOfMoles * zPlus[k], - Maverage / zPlus[k], denstemp1 / denstemp2); - denstemp1 = 0.0; - denstemp2 = 0.0; - weightFrac = 0.0; - Maverage = 0.0; - k++; - } - } - if (charac.getPlusFractionModel().hasPlusFraction()) { - system.removeComponent(system.getPhase(0) - .getComponent(charac.getPlusFractionModel().getPlusComponentNumber()) - .getName()); - } + } + + double meanWeightFrac = weightTot / (numberOfPseudocomponents + 1e-10); + int k = 0; + // int firstPS = charac.getPlusFractionModel().getFirstTBPFractionNumber(); + double Maverage = 0.0; + double denstemp1 = 0.0; + double denstemp2 = 0.0; + double totalNumberOfMoles = system.getNumberOfMoles(); + int i = 0; + int added = 0; + if (charac.getPlusFractionModel().hasPlusFraction()) { + added++; + } + int pseudoNumber = 1; + double accumulatedWeigthFrac = 0.0; + + for (int ii = 0; ii < system.getPhase(0).getNumberOfComponents() - added; ii++) { + String name = system.getPhase(0).getComponent(ii).getComponentName(); + if (system.getPhase(0).getComponent(name).isIsTBPfraction() + || system.getPhase(0).getComponent(name).isIsPlusFraction()) { + Maverage += system.getPhase(0).getComponent(name).getz() + * system.getPhase(0).getComponent(name).getMolarMass(); + weightFrac += system.getPhase(0).getComponent(name).getz() + * system.getPhase(0).getComponent(name).getMolarMass(); + zPlus[k] += system.getPhase(0).getComponent(name).getz(); + denstemp1 += system.getPhase(0).getComponent(name).getz() + * system.getPhase(0).getComponent(name).getMolarMass(); + denstemp2 += system.getPhase(0).getComponent(name).getz() + * system.getPhase(0).getComponent(name).getMolarMass() + / system.getPhase(0).getComponent(name).getNormalLiquidDensity(); + system.removeComponent(name); + // logger.info("removing component " + name); + ii--; } - @Override - public double getFractionOfHeavyEnd(int i) { - if (fractionOfHeavyEnd == null) { - neqsim.util.exception.ThermoException e = - new neqsim.util.exception.NotInitializedException(this, "getFractionOfHeavyEnd", - "fractionOfHeavyEnd", "characterisePlusFraction or generateLumpedComposition"); - logger.error(e.getMessage()); - throw new RuntimeException(e); - } - return fractionOfHeavyEnd[i]; + if (weightFrac >= meanWeightFrac) { + accumulatedWeigthFrac += weightFrac; + meanWeightFrac = + (weightTot - accumulatedWeigthFrac) / (numberOfPseudocomponents - pseudoNumber); + String addName = "PC" + Integer.toString(pseudoNumber++); + // String addName = (i == firstPS) ? "PC" + Integer.toString(firstPS) : "PC" + + // Integer.toString(firstPS) + "-" + Integer.toString(ii); + fractionOfHeavyEnd[k] = zPlus[k] / molFracTot; + lumpedComponentNames[pseudoNumber - 2] = addName; + system.addTBPfraction(addName, totalNumberOfMoles * zPlus[k], Maverage / zPlus[k], + denstemp1 / denstemp2); + denstemp1 = 0.0; + denstemp2 = 0.0; + weightFrac = 0.0; + Maverage = 0.0; + k++; + added++; } + } + + for (i = charac.getPlusFractionModel().getFirstPlusFractionNumber(); i < charac + .getPlusFractionModel().getLastPlusFractionNumber(); i++) { + Maverage += + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + weightFrac += + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + accumulatedWeigthFrac += + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + zPlus[k] += charac.getPlusFractionModel().getZ()[i]; + denstemp1 += + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + denstemp2 += charac.getPlusFractionModel().getZ()[i] + * charac.getPlusFractionModel().getM()[i] / charac.getPlusFractionModel().getDens()[i]; + + // System.out.println("weigth " + weightFrac + " i" + i); + if ((weightFrac >= meanWeightFrac && !((numberOfPseudocomponents - pseudoNumber) == 0)) + || i == charac.getPlusFractionModel().getLastPlusFractionNumber() - 1) { + meanWeightFrac = + (weightTot - accumulatedWeigthFrac) / (numberOfPseudocomponents - pseudoNumber); + String addName = "PC" + Integer.toString(pseudoNumber++); + lumpedComponentNames[pseudoNumber - 2] = addName; + // System.out.println("adding " + addName); + fractionOfHeavyEnd[k] = zPlus[k] / molFracTot; + system.addTBPfraction(addName, totalNumberOfMoles * zPlus[k], Maverage / zPlus[k], + denstemp1 / denstemp2); + denstemp1 = 0.0; + denstemp2 = 0.0; + weightFrac = 0.0; + Maverage = 0.0; + k++; + } + } + if (charac.getPlusFractionModel().hasPlusFraction()) { + system.removeComponent(system.getPhase(0) + .getComponent(charac.getPlusFractionModel().getPlusComponentNumber()).getName()); + } + } + + @Override + public double getFractionOfHeavyEnd(int i) { + if (fractionOfHeavyEnd == null) { + neqsim.util.exception.ThermoException ex = + new neqsim.util.exception.NotInitializedException(this, "getFractionOfHeavyEnd", + "fractionOfHeavyEnd", "characterisePlusFraction or generateLumpedComposition"); + logger.error(ex.getMessage(), ex); + throw new RuntimeException(ex); + } + return fractionOfHeavyEnd[i]; } + } + + /** + * PVTLumpingModel distributes the pseudo components into equal weight fractions starting with the + * plus fractions. + * + * @author Even Solbraa + * @version 1.0 + */ + public class PVTLumpingModel extends StandardLumpingModel { + private static final long serialVersionUID = 1000; + + public PVTLumpingModel() {} + + @Override + public void generateLumpedComposition(Characterise charac) { + double weightFrac = 0.0; + double weightTot = 0.0; + double molFracTot = 0.0; + + int firstPlusFractionNumber = + system.getCharacterization().getPlusFractionModel().getFirstPlusFractionNumber(); + int compNumberOfFirstComponentInPlusFraction = + system.getCharacterization().getPlusFractionModel().getPlusComponentNumber(); + int numberOfDefinedTBPcomponents = 0; - /** - * PVTLumpingModel distributes the pseudo components into equal weight fractions - * starting with the plus fractions - * - * @author Even Solbraa - * @version 1.0 - */ - public class PVTLumpingModel extends StandardLumpingModel { - private static final long serialVersionUID = 1000; - - public PVTLumpingModel() {} - - @Override - public void generateLumpedComposition(Characterise charac) { - double weightFrac = 0.0; - double weightTot = 0.0; - double molFracTot = 0.0; - - int firstPlusFractionNumber = system.getCharacterization().getPlusFractionModel() - .getFirstPlusFractionNumber(); - int compNumberOfFirstComponentInPlusFraction = - system.getCharacterization().getPlusFractionModel().getPlusComponentNumber(); - int numberOfDefinedTBPcomponents = 0; - - for (int compNumb = 0; compNumb < firstPlusFractionNumber; compNumb++) { - if (system.getPhase(0).hasComponent("C" + Integer.toString(compNumb) + "_PC")) { - numberOfDefinedTBPcomponents++; - } - } - - if ((numberOfPseudocomponents - - numberOfDefinedTBPcomponents) <= numberOfLumpedComponents) - numberOfPseudocomponents = numberOfDefinedTBPcomponents + numberOfLumpedComponents; - - numberOfLumpedComponents = numberOfPseudocomponents - numberOfDefinedTBPcomponents; - lumpedComponentNames = new String[numberOfLumpedComponents]; - fractionOfHeavyEnd = new double[numberOfLumpedComponents]; - double[] zPlus = new double[numberOfLumpedComponents]; - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if ((system.getPhase(0).getComponent(i).isIsTBPfraction() - || system.getPhase(0).getComponent(i).isIsPlusFraction()) - && (i >= compNumberOfFirstComponentInPlusFraction)) { - weightTot += system.getPhase(0).getComponent(i).getz() - * system.getPhase(0).getComponent(i).getMolarMass(); - molFracTot += system.getPhase(0).getComponent(i).getz(); - } - } - - double meanWeightFrac = weightTot / (numberOfLumpedComponents + 1e-10); - int k = 0; - double Maverage = 0.0, denstemp1 = 0.0, denstemp2 = 0.0; - double totalNumberOfMoles = system.getNumberOfMoles(); - int i = 0; - int pseudoNumber = 1; - double accumulatedWeigthFrac = 0.0; - - int starti = charac.getPlusFractionModel().getFirstPlusFractionNumber(); - for (i = charac.getPlusFractionModel().getFirstPlusFractionNumber(); i < charac - .getPlusFractionModel().getLastPlusFractionNumber(); i++) { - Maverage += charac.getPlusFractionModel().getZ()[i] - * charac.getPlusFractionModel().getM()[i]; - weightFrac += charac.getPlusFractionModel().getZ()[i] - * charac.getPlusFractionModel().getM()[i]; - accumulatedWeigthFrac += charac.getPlusFractionModel().getZ()[i] - * charac.getPlusFractionModel().getM()[i]; - zPlus[k] += charac.getPlusFractionModel().getZ()[i]; - denstemp1 += charac.getPlusFractionModel().getZ()[i] - * charac.getPlusFractionModel().getM()[i]; - denstemp2 += charac.getPlusFractionModel().getZ()[i] - * charac.getPlusFractionModel().getM()[i] - / charac.getPlusFractionModel().getDens()[i]; - - // System.out.println("weigth " + weightFrac + " i" + i); - if ((weightFrac >= meanWeightFrac - && !((numberOfLumpedComponents - pseudoNumber) == 0)) - || i == charac.getPlusFractionModel().getLastPlusFractionNumber() - 1) { - meanWeightFrac = (weightTot - accumulatedWeigthFrac) - / (numberOfLumpedComponents - pseudoNumber); - // String addName = "PC" + Integer.toString(pseudoNumber++); - pseudoNumber++; - String addName = "C" + Integer.toString(starti) + "-" + Integer.toString(i); - getLumpedComponentNames()[k] = addName; - // System.out.println("adding " + addName); - fractionOfHeavyEnd[k] = zPlus[k] / molFracTot; - - system.addTBPfraction(addName, totalNumberOfMoles * zPlus[k], - Maverage / zPlus[k], denstemp1 / denstemp2); - denstemp1 = 0.0; - denstemp2 = 0.0; - weightFrac = 0.0; - Maverage = 0.0; - k++; - starti = i + 1; - } - } - if (charac.getPlusFractionModel().hasPlusFraction()) { - system.removeComponent(system.getPhase(0) - .getComponent(charac.getPlusFractionModel().getPlusComponentNumber()) - .getName()); - } + for (int compNumb = 0; compNumb < firstPlusFractionNumber; compNumb++) { + if (system.getPhase(0).hasComponent("C" + Integer.toString(compNumb) + "_PC")) { + numberOfDefinedTBPcomponents++; } + } + + if ((numberOfPseudocomponents - numberOfDefinedTBPcomponents) <= numberOfLumpedComponents) { + numberOfPseudocomponents = numberOfDefinedTBPcomponents + numberOfLumpedComponents; + } + + numberOfLumpedComponents = numberOfPseudocomponents - numberOfDefinedTBPcomponents; + lumpedComponentNames = new String[numberOfLumpedComponents]; + fractionOfHeavyEnd = new double[numberOfLumpedComponents]; + double[] zPlus = new double[numberOfLumpedComponents]; + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if ((system.getPhase(0).getComponent(i).isIsTBPfraction() + || system.getPhase(0).getComponent(i).isIsPlusFraction()) + && (i >= compNumberOfFirstComponentInPlusFraction)) { + weightTot += system.getPhase(0).getComponent(i).getz() + * system.getPhase(0).getComponent(i).getMolarMass(); + molFracTot += system.getPhase(0).getComponent(i).getz(); + } + } + + double meanWeightFrac = weightTot / (numberOfLumpedComponents + 1e-10); + int k = 0; + double Maverage = 0.0; + double denstemp1 = 0.0; + double denstemp2 = 0.0; + double totalNumberOfMoles = system.getNumberOfMoles(); + int i = 0; + int pseudoNumber = 1; + double accumulatedWeigthFrac = 0.0; + + int starti = charac.getPlusFractionModel().getFirstPlusFractionNumber(); + for (i = charac.getPlusFractionModel().getFirstPlusFractionNumber(); i < charac + .getPlusFractionModel().getLastPlusFractionNumber(); i++) { + Maverage += + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + weightFrac += + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + accumulatedWeigthFrac += + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + zPlus[k] += charac.getPlusFractionModel().getZ()[i]; + denstemp1 += + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + denstemp2 += charac.getPlusFractionModel().getZ()[i] + * charac.getPlusFractionModel().getM()[i] / charac.getPlusFractionModel().getDens()[i]; + + // System.out.println("weigth " + weightFrac + " i" + i); + if ((weightFrac >= meanWeightFrac && !((numberOfLumpedComponents - pseudoNumber) == 0)) + || i == charac.getPlusFractionModel().getLastPlusFractionNumber() - 1) { + meanWeightFrac = + (weightTot - accumulatedWeigthFrac) / (numberOfLumpedComponents - pseudoNumber); + // String addName = "PC" + Integer.toString(pseudoNumber++); + pseudoNumber++; + String addName = "C" + Integer.toString(starti) + "-" + Integer.toString(i); + getLumpedComponentNames()[k] = addName; + // System.out.println("adding " + addName); + fractionOfHeavyEnd[k] = zPlus[k] / molFracTot; + + system.addTBPfraction(addName, totalNumberOfMoles * zPlus[k], Maverage / zPlus[k], + denstemp1 / denstemp2); + denstemp1 = 0.0; + denstemp2 = 0.0; + weightFrac = 0.0; + Maverage = 0.0; + k++; + starti = i + 1; + } + } + if (charac.getPlusFractionModel().hasPlusFraction()) { + system.removeComponent(system.getPhase(0) + .getComponent(charac.getPlusFractionModel().getPlusComponentNumber()).getName()); + } + } - @Override - public double getFractionOfHeavyEnd(int i) { - if (fractionOfHeavyEnd == null) { - neqsim.util.exception.ThermoException e = - new neqsim.util.exception.NotInitializedException(this, "getFractionOfHeavyEnd", - "fractionOfHeavyEnd", "characterisePlusFraction or generateLumpedComposition"); - logger.error(e.getMessage()); - throw new RuntimeException(e); - } - return fractionOfHeavyEnd[i]; + @Override + public double getFractionOfHeavyEnd(int i) { + if (fractionOfHeavyEnd == null) { + neqsim.util.exception.ThermoException ex = + new neqsim.util.exception.NotInitializedException(this, "getFractionOfHeavyEnd", + "fractionOfHeavyEnd", "characterisePlusFraction or generateLumpedComposition"); + logger.error(ex.getMessage(), ex); + throw new RuntimeException(ex); + } + return fractionOfHeavyEnd[i]; + } + } + + /** + * NoLumpingModel ddoes not distribute pseudo components plus fractions. + * + * @author Even Solbraa + * @version 1.0 + */ + public class NoLumpingModel extends StandardLumpingModel { + private static final long serialVersionUID = 1000; + + public NoLumpingModel() {} + + @Override + public void generateLumpedComposition(Characterise charac) { + numberOfPseudocomponents = charac.getPlusFractionModel().getLastPlusFractionNumber(); + + double weightFrac = 0.0; + double weightTot = 0.0; + double molFracTot = 0.0; + + int firstPlusFractionNumber = + system.getCharacterization().getPlusFractionModel().getFirstPlusFractionNumber(); + int compNumberOfFirstComponentInPlusFraction = + system.getCharacterization().getPlusFractionModel().getPlusComponentNumber(); + int numberOfDefinedTBPcomponents = 0; + + for (int compNumb = 0; compNumb < firstPlusFractionNumber; compNumb++) { + if (system.getPhase(0).hasComponent("C" + Integer.toString(compNumb) + "_PC")) { + numberOfDefinedTBPcomponents++; } + } + + if ((numberOfPseudocomponents - numberOfDefinedTBPcomponents) <= numberOfLumpedComponents) { + numberOfPseudocomponents = numberOfDefinedTBPcomponents + numberOfLumpedComponents; + } + + numberOfLumpedComponents = numberOfPseudocomponents - numberOfDefinedTBPcomponents; + lumpedComponentNames = new String[numberOfLumpedComponents]; + fractionOfHeavyEnd = new double[numberOfLumpedComponents]; + double[] zPlus = new double[numberOfLumpedComponents]; + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if ((system.getPhase(0).getComponent(i).isIsTBPfraction() + || system.getPhase(0).getComponent(i).isIsPlusFraction()) + && (i >= compNumberOfFirstComponentInPlusFraction)) { + weightTot += system.getPhase(0).getComponent(i).getz() + * system.getPhase(0).getComponent(i).getMolarMass(); + molFracTot += system.getPhase(0).getComponent(i).getz(); + } + } + + double meanWeightFrac = weightTot / (numberOfLumpedComponents + 1e-10); + int k = 0; + double Maverage = 0.0; + double denstemp1 = 0.0; + double denstemp2 = 0.0; + double totalNumberOfMoles = system.getNumberOfMoles(); + int i = 0; + int pseudoNumber = 1; + double accumulatedWeigthFrac = 0.0; + + int starti = charac.getPlusFractionModel().getFirstPlusFractionNumber(); + for (i = charac.getPlusFractionModel().getFirstPlusFractionNumber(); i < charac + .getPlusFractionModel().getLastPlusFractionNumber(); i++) { + Maverage = + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + weightFrac = + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + accumulatedWeigthFrac = + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + zPlus[k] = charac.getPlusFractionModel().getZ()[i]; + denstemp1 = + charac.getPlusFractionModel().getZ()[i] * charac.getPlusFractionModel().getM()[i]; + denstemp2 = charac.getPlusFractionModel().getZ()[i] + * charac.getPlusFractionModel().getM()[i] / charac.getPlusFractionModel().getDens()[i]; + pseudoNumber++; + String addName = "C" + Integer.toString(starti) + "-" + Integer.toString(i); + getLumpedComponentNames()[k] = addName; + // System.out.println("adding " + addName); + fractionOfHeavyEnd[k] = zPlus[k] / molFracTot; + + system.addTBPfraction(addName, totalNumberOfMoles * zPlus[k], Maverage / zPlus[k], + denstemp1 / denstemp2); + k++; + starti = i + 1; + } + if (charac.getPlusFractionModel().hasPlusFraction()) { + system.removeComponent(system.getPhase(0) + .getComponent(charac.getPlusFractionModel().getPlusComponentNumber()).getName()); + } } - /** - *

- * getModel. - *

- * - * @param modelName a {@link java.lang.String} object - * @return a {@link neqsim.thermo.characterization.LumpingModelInterface} object - */ - public LumpingModelInterface getModel(String modelName) { - if (modelName.equals("PVTlumpingModel")) { - return new PVTLumpingModel(); - } else - return new StandardLumpingModel(); + @Override + public double getFractionOfHeavyEnd(int i) { + if (fractionOfHeavyEnd == null) { + neqsim.util.exception.ThermoException ex = + new neqsim.util.exception.NotInitializedException(this, "getFractionOfHeavyEnd", + "fractionOfHeavyEnd", "characterisePlusFraction or generateLumpedComposition"); + logger.error(ex.getMessage(), ex); + throw new RuntimeException(ex); + } + return fractionOfHeavyEnd[i]; + } + } + + /** + *

+ * getModel. + *

+ * + * @param modelName a {@link java.lang.String} object + * @return a {@link neqsim.thermo.characterization.LumpingModelInterface} object + */ + public LumpingModelInterface getModel(String modelName) { + if (modelName.equals("PVTlumpingModel")) { + return new PVTLumpingModel(); + } else if (modelName.equals("no lumping")) { + return new NoLumpingModel(); + } else { + return new StandardLumpingModel(); } + } } diff --git a/src/main/java/neqsim/thermo/characterization/LumpingModelInterface.java b/src/main/java/neqsim/thermo/characterization/LumpingModelInterface.java index 9877cf163f..e042ecf958 100644 --- a/src/main/java/neqsim/thermo/characterization/LumpingModelInterface.java +++ b/src/main/java/neqsim/thermo/characterization/LumpingModelInterface.java @@ -9,86 +9,86 @@ * @version $Id: $Id */ public interface LumpingModelInterface { - /** - *

- * setNumberOfLumpedComponents. - *

- * - * @param numb a int - */ - public void setNumberOfLumpedComponents(int numb); + /** + *

+ * setNumberOfLumpedComponents. + *

+ * + * @param numb a int + */ + public void setNumberOfLumpedComponents(int numb); - /** - *

- * getName. - *

- * - * @return a {@link java.lang.String} object - */ - public String getName(); + /** + *

+ * getName. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getName(); - /** - *

- * generateLumpedComposition. - *

- * - * @param charac a {@link neqsim.thermo.characterization.Characterise} object - */ - public void generateLumpedComposition(Characterise charac); + /** + *

+ * generateLumpedComposition. + *

+ * + * @param charac a {@link neqsim.thermo.characterization.Characterise} object + */ + public void generateLumpedComposition(Characterise charac); - /** - *

- * getNumberOfLumpedComponents. - *

- * - * @return a int - */ - public int getNumberOfLumpedComponents(); + /** + *

+ * getNumberOfLumpedComponents. + *

+ * + * @return a int + */ + public int getNumberOfLumpedComponents(); - /** - *

- * getFractionOfHeavyEnd. - *

- * - * @param i a int - * @return a double - */ - public double getFractionOfHeavyEnd(int i); + /** + *

+ * getFractionOfHeavyEnd. + *

+ * + * @param i a int + * @return a double + */ + public double getFractionOfHeavyEnd(int i); - /** - *

- * setNumberOfPseudoComponents. - *

- * - * @param lumpedNumb a int - */ - public void setNumberOfPseudoComponents(int lumpedNumb); + /** + *

+ * setNumberOfPseudoComponents. + *

+ * + * @param lumpedNumb a int + */ + public void setNumberOfPseudoComponents(int lumpedNumb); - /** - *

- * getNumberOfPseudoComponents. - *

- * - * @return a int - */ - public int getNumberOfPseudoComponents(); + /** + *

+ * getNumberOfPseudoComponents. + *

+ * + * @return a int + */ + public int getNumberOfPseudoComponents(); - /** - *

- * getLumpedComponentName. - *

- * - * @param i a int - * @return a {@link java.lang.String} object - */ - public String getLumpedComponentName(int i); + /** + *

+ * getLumpedComponentName. + *

+ * + * @param i a int + * @return a {@link java.lang.String} object + */ + public String getLumpedComponentName(int i); - /** - *

- * getLumpedComponentNames. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[] getLumpedComponentNames(); + /** + *

+ * getLumpedComponentNames. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getLumpedComponentNames(); } diff --git a/src/main/java/neqsim/thermo/characterization/NewtonSolveAB.java b/src/main/java/neqsim/thermo/characterization/NewtonSolveAB.java index af249ad370..cadd4f7cc2 100644 --- a/src/main/java/neqsim/thermo/characterization/NewtonSolveAB.java +++ b/src/main/java/neqsim/thermo/characterization/NewtonSolveAB.java @@ -2,130 +2,139 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import Jama.Matrix; import neqsim.thermo.system.SystemInterface; /** - *

NewtonSolveAB class.

+ *

+ * NewtonSolveAB class. + *

* * @author asmund * @version $Id: $Id */ public class NewtonSolveAB implements java.io.Serializable { - private static final long serialVersionUID = 1000; - int iter = 0; - Matrix Jac; - Matrix fvec; - Matrix sol, dx; - int numberOfComponents = 0; - TBPCharacterize characterizeClass; - static Logger logger = LogManager.getLogger(NewtonSolveAB.class); - - SystemInterface system = null; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(NewtonSolveAB.class); - /** - *

Constructor for NewtonSolveAB.

- */ - public NewtonSolveAB() {} + int iter = 0; + Matrix Jac; + Matrix fvec; + Matrix sol; + Matrix dx; + int numberOfComponents = 0; + TBPCharacterize characterizeClass; + SystemInterface system = null; - /** - *

Constructor for NewtonSolveAB.

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param characterizeClass a {@link neqsim.thermo.characterization.TBPCharacterize} object - */ - public NewtonSolveAB(SystemInterface system, TBPCharacterize characterizeClass) { - this.system = system; - this.characterizeClass = characterizeClass; - numberOfComponents = system.getPhase(0).getNumberOfComponents(); - Jac = new Matrix(2, 2); - fvec = new Matrix(2, 1); - sol = new Matrix(2, 1); - sol.set(0, 0, characterizeClass.getPlusCoefs(0)); - sol.set(1, 0, characterizeClass.getPlusCoefs(1)); - } + /** + *

+ * Constructor for NewtonSolveAB. + *

+ */ + public NewtonSolveAB() {} - /** - *

Setter for the field fvec.

- */ - public void setfvec() { - double f0 = -characterizeClass.getZPlus(); - for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass - .getLastPlusFractionNumber(); i++) { - f0 += Math.exp( - characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)); - } - fvec.set(0, 0, f0); + /** + *

+ * Constructor for NewtonSolveAB. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param characterizeClass a {@link neqsim.thermo.characterization.TBPCharacterize} object + */ + public NewtonSolveAB(SystemInterface system, TBPCharacterize characterizeClass) { + this.system = system; + this.characterizeClass = characterizeClass; + numberOfComponents = system.getPhase(0).getNumberOfComponents(); + Jac = new Matrix(2, 2); + fvec = new Matrix(2, 1); + sol = new Matrix(2, 1); + sol.set(0, 0, characterizeClass.getPlusCoefs(0)); + sol.set(1, 0, characterizeClass.getPlusCoefs(1)); + } - f0 = -characterizeClass.getMPlus() * characterizeClass.getZPlus(); - for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass - .getLastPlusFractionNumber(); i++) { - f0 += Math.exp( - characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)) - * (14.0 * i - 4.0); - } - fvec.set(1, 0, f0); + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + double f0 = -characterizeClass.getZPlus(); + for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass + .getLastPlusFractionNumber(); i++) { + f0 += Math.exp(characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)); } + fvec.set(0, 0, f0); - /** - *

setJac.

- */ - public void setJac() { - Jac.timesEquals(0.0); + f0 = -characterizeClass.getMPlus() * characterizeClass.getZPlus(); + for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass + .getLastPlusFractionNumber(); i++) { + f0 += Math.exp(characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)) + * (14.0 * i - 4.0); + } + fvec.set(1, 0, f0); + } - double f0 = 0.0; - for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass - .getLastPlusFractionNumber(); i++) { - f0 += Math.exp( - characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)); - } - Jac.set(0, 0, f0 + (0.0)); + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); - f0 = 0.0; - for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass - .getLastPlusFractionNumber(); i++) { - f0 += characterizeClass.getPlusCoefs(1) * Math.exp( - characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)); - } - Jac.set(1, 0, f0); + double f0 = 0.0; + for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass + .getLastPlusFractionNumber(); i++) { + f0 += Math.exp(characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)); + } + Jac.set(0, 0, f0 + (0.0)); - f0 = 0.0; - for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass - .getLastPlusFractionNumber(); i++) { - f0 += (14.0 * i - 4.0) * Math.exp( - characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)); - } - Jac.set(0, 1, f0); + f0 = 0.0; + for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass + .getLastPlusFractionNumber(); i++) { + f0 += characterizeClass.getPlusCoefs(1) + * Math.exp(characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)); + } + Jac.set(1, 0, f0); - f0 = 0.0; - for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass - .getLastPlusFractionNumber(); i++) { - f0 += (14.0 * i - 4.0) * characterizeClass.getPlusCoefs(1) * Math.exp( - characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)); - } - Jac.set(1, 1, f0 + (0.0)); + f0 = 0.0; + for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass + .getLastPlusFractionNumber(); i++) { + f0 += (14.0 * i - 4.0) + * Math.exp(characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)); } + Jac.set(0, 1, f0); - /** - *

solve.

- */ - public void solve() { - do { - iter++; - setfvec(); - fvec.print(10, 2); - setJac(); - Jac.print(10, 2); - dx = Jac.solve(fvec); - logger.info("dx: "); - dx.print(10, 3); - // System.out.println("dx "); - // dx.print(10,3); - sol.minusEquals(dx.times(iter / (iter + 100.0))); - characterizeClass.setPlusCoefs(sol.transpose().copy().getArray()[0]); - } while (((dx.norm2() / sol.norm2() < 1e-6 || iter < 15000) && iter < 50000)); - logger.info("ok char: "); - sol.print(10, 10); + f0 = 0.0; + for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass + .getLastPlusFractionNumber(); i++) { + f0 += (14.0 * i - 4.0) * characterizeClass.getPlusCoefs(1) + * Math.exp(characterizeClass.getPlusCoefs(0) + characterizeClass.getPlusCoefs(1) * (i)); } + Jac.set(1, 1, f0 + (0.0)); + } + + /** + *

+ * solve. + *

+ */ + public void solve() { + do { + iter++; + setfvec(); + fvec.print(10, 2); + setJac(); + Jac.print(10, 2); + dx = Jac.solve(fvec); + logger.info("dx: "); + dx.print(10, 3); + // System.out.println("dx "); + // dx.print(10,3); + sol.minusEquals(dx.times(iter / (iter + 100.0))); + characterizeClass.setPlusCoefs(sol.transpose().copy().getArray()[0]); + } while (((dx.norm2() / sol.norm2() < 1e-6 || iter < 15000) && iter < 50000)); + logger.info("ok char: "); + sol.print(10, 10); + } } diff --git a/src/main/java/neqsim/thermo/characterization/NewtonSolveABCD.java b/src/main/java/neqsim/thermo/characterization/NewtonSolveABCD.java index bf928f4d69..57ef607efb 100644 --- a/src/main/java/neqsim/thermo/characterization/NewtonSolveABCD.java +++ b/src/main/java/neqsim/thermo/characterization/NewtonSolveABCD.java @@ -2,7 +2,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import Jama.Matrix; import neqsim.thermo.system.SystemInterface; @@ -15,132 +14,128 @@ * @version $Id: $Id */ public class NewtonSolveABCD implements java.io.Serializable { - private static final long serialVersionUID = 1000; - int iter = 0; - Matrix Jac; - Matrix fvec; - Matrix sol, dx; - int numberOfComponents = 0; - TBPCharacterize characterizeClass; - double[] calcTPBfraction = null; - static Logger logger = LogManager.getLogger(NewtonSolveABCD.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(NewtonSolveABCD.class); - /** - *

- * Constructor for NewtonSolveABCD. - *

- */ - public NewtonSolveABCD() {} + int iter = 0; + Matrix Jac; + Matrix fvec; + Matrix sol; + Matrix dx; + int numberOfComponents = 0; + TBPCharacterize characterizeClass; + double[] calcTPBfraction = null; - /** - *

- * Constructor for NewtonSolveABCD. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param characterizeClass a {@link neqsim.thermo.characterization.TBPCharacterize} object - */ - public NewtonSolveABCD(SystemInterface system, TBPCharacterize characterizeClass) { - // this.system = system; - this.characterizeClass = characterizeClass; - numberOfComponents = system.getPhase(0).getNumberOfComponents(); - Jac = new Matrix(2 * characterizeClass.getLength(), 4); - fvec = new Matrix(2 * characterizeClass.getLength(), 1); - sol = new Matrix(4, 1); - sol.set(0, 0, characterizeClass.getCoef(0)); - sol.set(1, 0, characterizeClass.getCoef(1)); - sol.set(2, 0, characterizeClass.getCoef(2)); - sol.set(3, 0, characterizeClass.getCoef(3)); - calcTPBfraction = new double[characterizeClass.getLength()]; - } + /** + *

+ * Constructor for NewtonSolveABCD. + *

+ */ + public NewtonSolveABCD() {} - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - for (int i = 0; i < characterizeClass.getLength(); i++) { - fvec.set(i, 0, - Math.log(characterizeClass.getTBPfractions(i)) - characterizeClass.getCoef(0) - - characterizeClass.getCoef(1) - * (i + characterizeClass.getFirstPlusFractionNumber())); - } + /** + *

+ * Constructor for NewtonSolveABCD. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param characterizeClass a {@link neqsim.thermo.characterization.TBPCharacterize} object + */ + public NewtonSolveABCD(SystemInterface system, TBPCharacterize characterizeClass) { + // this.system = system; + this.characterizeClass = characterizeClass; + numberOfComponents = system.getPhase(0).getNumberOfComponents(); + Jac = new Matrix(2 * characterizeClass.getLength(), 4); + fvec = new Matrix(2 * characterizeClass.getLength(), 1); + sol = new Matrix(4, 1); + sol.set(0, 0, characterizeClass.getCoef(0)); + sol.set(1, 0, characterizeClass.getCoef(1)); + sol.set(2, 0, characterizeClass.getCoef(2)); + sol.set(3, 0, characterizeClass.getCoef(3)); + calcTPBfraction = new double[characterizeClass.getLength()]; + } - for (int i = characterizeClass.getLength(); i < 2 * characterizeClass.getLength(); i++) { - fvec.set(i, 0, - characterizeClass.getTBPdens(i - characterizeClass.getLength()) - - characterizeClass.getCoef(2) - - characterizeClass.getCoef(3) - * Math.log((i + characterizeClass.getFirstPlusFractionNumber() - - characterizeClass.getLength()))); - } + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + for (int i = 0; i < characterizeClass.getLength(); i++) { + fvec.set(i, 0, Math.log(characterizeClass.getTBPfractions(i)) - characterizeClass.getCoef(0) + - characterizeClass.getCoef(1) * (i + characterizeClass.getFirstPlusFractionNumber())); + } - for (int i = 0; i < characterizeClass.getLength(); i++) { - calcTPBfraction[i] = - Math.exp(characterizeClass.getCoef(0) + characterizeClass.getCoef(1) - * (i + characterizeClass.getFirstPlusFractionNumber())); - } - characterizeClass.setCalcTBPfractions(calcTPBfraction); + for (int i = characterizeClass.getLength(); i < 2 * characterizeClass.getLength(); i++) { + fvec.set(i, 0, characterizeClass.getTBPdens(i - characterizeClass.getLength()) + - characterizeClass.getCoef(2) - characterizeClass.getCoef(3) * Math.log((i + + characterizeClass.getFirstPlusFractionNumber() - characterizeClass.getLength()))); } - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac.timesEquals(0.0); + for (int i = 0; i < characterizeClass.getLength(); i++) { + calcTPBfraction[i] = Math.exp(characterizeClass.getCoef(0) + + characterizeClass.getCoef(1) * (i + characterizeClass.getFirstPlusFractionNumber())); + } + characterizeClass.setCalcTBPfractions(calcTPBfraction); + } - double tempJ = 0.0; + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); - for (int i = 0; i < characterizeClass.getLength(); i++) { - for (int j = 0; j < 4; j++) { - if (j == 0) { - tempJ = -1.0; - } else if (j == 1) { - tempJ = -(i + characterizeClass.getFirstPlusFractionNumber()); - } else { - tempJ = 0.0; - } - Jac.set(i, j, tempJ); - } - } + double tempJ = 0.0; - for (int i = characterizeClass.getLength(); i < 2 * characterizeClass.getLength(); i++) { - for (int j = 0; j < 4; j++) { - if (j == 2) { - tempJ = -1.0; - } else if (j == 3) { - tempJ = -Math.log(i + characterizeClass.getFirstPlusFractionNumber() - - characterizeClass.getLength()); - } else { - tempJ = 0.0; - } - Jac.set(i, j, tempJ); - } + for (int i = 0; i < characterizeClass.getLength(); i++) { + for (int j = 0; j < 4; j++) { + if (j == 0) { + tempJ = -1.0; + } else if (j == 1) { + tempJ = -(i + characterizeClass.getFirstPlusFractionNumber()); + } else { + tempJ = 0.0; } + Jac.set(i, j, tempJ); + } } - /** - *

- * solve. - *

- */ - public void solve() { - do { - iter++; - setfvec(); - fvec.print(10, 2); - setJac(); - Jac.print(10, 2); - dx = Jac.solve(fvec); - logger.info("dx: "); - dx.print(10, 3); - sol.minusEquals(dx.times(0.5)); - characterizeClass.setCoefs(sol.transpose().copy().getArray()[0]); - } while (((dx.norm2() / sol.norm2() < 1e-6 || iter < 15) && iter < 50)); - logger.info("ok char: "); - sol.print(10, 10); + for (int i = characterizeClass.getLength(); i < 2 * characterizeClass.getLength(); i++) { + for (int j = 0; j < 4; j++) { + if (j == 2) { + tempJ = -1.0; + } else if (j == 3) { + tempJ = -Math.log( + i + characterizeClass.getFirstPlusFractionNumber() - characterizeClass.getLength()); + } else { + tempJ = 0.0; + } + Jac.set(i, j, tempJ); + } } + } + + /** + *

+ * solve. + *

+ */ + public void solve() { + do { + iter++; + setfvec(); + fvec.print(10, 2); + setJac(); + Jac.print(10, 2); + dx = Jac.solve(fvec); + logger.info("dx: "); + dx.print(10, 3); + sol.minusEquals(dx.times(0.5)); + characterizeClass.setCoefs(sol.transpose().copy().getArray()[0]); + } while (((dx.norm2() / sol.norm2() < 1e-6 || iter < 15) && iter < 50)); + logger.info("ok char: "); + sol.print(10, 10); + } } diff --git a/src/main/java/neqsim/thermo/characterization/NewtonSolveCDplus.java b/src/main/java/neqsim/thermo/characterization/NewtonSolveCDplus.java index e2211d45ce..11f9e0db87 100644 --- a/src/main/java/neqsim/thermo/characterization/NewtonSolveCDplus.java +++ b/src/main/java/neqsim/thermo/characterization/NewtonSolveCDplus.java @@ -15,14 +15,16 @@ */ public class NewtonSolveCDplus implements java.io.Serializable { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(NewtonSolveCDplus.class); + int iter = 0; Matrix Jac; Matrix fvec; - Matrix sol, dx; + Matrix sol; + Matrix dx; int numberOfComponents = 0; PlusCharacterize characterizeClass; // SystemInterface system = null; - static Logger logger = LogManager.getLogger(NewtonSolveCDplus.class); /** *

@@ -60,7 +62,9 @@ public NewtonSolveCDplus(SystemInterface system, PlusCharacterize characterizeCl *

*/ public void setfvec() { - double zSum = 0.0, mSum = 0.0, densSum = 0.0; + double zSum = 0.0; + double mSum = 0.0; + double densSum = 0.0; for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass .getLastPlusFractionNumber(); i++) { double ztemp = Math.exp(characterizeClass.getCoef(0) + characterizeClass.getCoef(1) * (i)); @@ -96,7 +100,8 @@ public void setJac() { double tempJ = 0.0; for (int j = 0; j < 3; j++) { - double nTot = 0.0, nTot2 = 0.0; + double nTot = 0.0; + double nTot2 = 0.0; for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass .getLastPlusFractionNumber(); i++) { nTot += Math.exp(characterizeClass.getCoef(0) + characterizeClass.getCoef(1) * i); @@ -113,7 +118,11 @@ public void setJac() { } for (int j = 0; j < 3; j++) { - double mTot1 = 0.0, mTot2 = 0.0, zSum2 = 0.0, zSum = 0.0, zSum3 = 0.0; + double mTot1 = 0.0; + double mTot2 = 0.0; + double zSum2 = 0.0; + double zSum = 0.0; + double zSum3 = 0.0; for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass .getLastPlusFractionNumber(); i++) { mTot1 += (CharacteriseInterface.PVTsimMolarMass[i - 6] / 1000.0) @@ -136,8 +145,15 @@ public void setJac() { } for (int j = 0; j < 3; j++) { - double A = 0.0, B = 0.0, Bpow2 = 0.0, Ader1 = 0.0, Bder1 = 0.0, Ader2 = 0.0, Bder2 = 0.0, - Bder3 = 0.0, Bder4 = 0.0; + double A = 0.0; + double B = 0.0; + double Bpow2 = 0.0; + double Ader1 = 0.0; + double Bder1 = 0.0; + double Ader2 = 0.0; + double Bder2 = 0.0; + double Bder3 = 0.0; + double Bder4 = 0.0; for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass .getLastPlusFractionNumber(); i++) { double M = CharacteriseInterface.PVTsimMolarMass[i - 6] / 1000.0; diff --git a/src/main/java/neqsim/thermo/characterization/PedersenPlusModelSolver.java b/src/main/java/neqsim/thermo/characterization/PedersenPlusModelSolver.java index 7243716f9e..360a3262bd 100644 --- a/src/main/java/neqsim/thermo/characterization/PedersenPlusModelSolver.java +++ b/src/main/java/neqsim/thermo/characterization/PedersenPlusModelSolver.java @@ -15,14 +15,19 @@ */ public class PedersenPlusModelSolver implements java.io.Serializable { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PedersenPlusModelSolver.class); + int iter = 0; - Matrix JacAB, JacCD; - Matrix fvecAB, fvecCD; - Matrix solAB, solCD, dx; + Matrix JacAB; + Matrix JacCD; + Matrix fvecAB; + Matrix fvecCD; + Matrix solAB; + Matrix solCD; + Matrix dx; int numberOfComponents = 0; PlusFractionModel.PedersenPlusModel characterizeClass; SystemInterface system = null; - static Logger logger = LogManager.getLogger(PedersenPlusModelSolver.class); /** *

@@ -65,7 +70,8 @@ public PedersenPlusModelSolver(SystemInterface system, *

*/ public void setfvecAB() { - double zSum = 0.0, mSum = 0.0; + double zSum = 0.0; + double mSum = 0.0; for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass .getLastPlusFractionNumber(); i++) { double ztemp = Math.exp(characterizeClass.getCoef(0) + characterizeClass.getCoef(1) * (i)); @@ -92,7 +98,8 @@ public void setJacAB() { double tempJ = 0.0; for (int j = 0; j < 2; j++) { - double nTot = 0.0, nTot2 = 0.0; + double nTot = 0.0; + double nTot2 = 0.0; for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass .getLastPlusFractionNumber(); i++) { nTot += Math.exp(characterizeClass.getCoef(0) + characterizeClass.getCoef(1) * i); @@ -107,7 +114,11 @@ public void setJacAB() { } for (int j = 0; j < 2; j++) { - double mTot1 = 0.0, mTot2 = 0.0, zSum2 = 0.0, zSum = 0.0, zSum3 = 0.0; + double mTot1 = 0.0; + double mTot2 = 0.0; + double zSum2 = 0.0; + double zSum = 0.0; + double zSum3 = 0.0; for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass .getLastPlusFractionNumber(); i++) { mTot1 += (characterizeClass.PVTsimMolarMass[i - 6] / 1000.0) @@ -135,10 +146,13 @@ public void setJacAB() { */ public void setfvecCD() { double densTBO = - characterizeClass.PVTsimDensities[characterizeClass.getFirstPlusFractionNumber() - 6];// 0.71;//characterizeClass.getDensLastTBP(); + characterizeClass.PVTsimDensities[characterizeClass.getFirstPlusFractionNumber() - 6]; + // 0.71; + // //characterizeClass.getDensLastTBP(); fvecCD.set(0, 0, (characterizeClass.getCoef(2) + characterizeClass.getCoef(3) * Math.log(characterizeClass.getFirstPlusFractionNumber() - 1)) - densTBO); - double temp = 0.0, temp2 = 0; + double temp = 0.0; + double temp2 = 0; for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass .getLastPlusFractionNumber(); i++) { temp += Math.exp(characterizeClass.getCoef(0) + characterizeClass.getCoef(1) * (i)) @@ -161,7 +175,9 @@ public void setJacCD() { JacCD.set(0, 0, 1); JacCD.set(0, 1, Math.log(characterizeClass.getFirstPlusFractionNumber() - 1)); - double temp = 0.0, temp2 = 0, temp3 = 0; + double temp = 0.0; + double temp2 = 0; + double temp3 = 0; // double deriv = 0; for (int i = characterizeClass.getFirstPlusFractionNumber(); i < characterizeClass .getLastPlusFractionNumber(); i++) { diff --git a/src/main/java/neqsim/thermo/characterization/PlusCharacterize.java b/src/main/java/neqsim/thermo/characterization/PlusCharacterize.java index d7a303b4a3..d926fde9a7 100644 --- a/src/main/java/neqsim/thermo/characterization/PlusCharacterize.java +++ b/src/main/java/neqsim/thermo/characterization/PlusCharacterize.java @@ -14,478 +14,473 @@ * @version $Id: $Id */ public class PlusCharacterize implements java.io.Serializable, CharacteriseInterface { - private static final long serialVersionUID = 1000; - double TBPfractions[] = null; - boolean firsttime = true; - double MPlus = 300.0, zPlus = 0.3, densPlus = 0.98; - private double densLastTBP = 0.78; - int carbonNumberVector[] = null; - protected boolean pseudocomponents = true; - int firstPlusFractionNumber = 1; - int lastPlusFractionNumber = 80; - int numberOfPseudocomponents = 5;// (lastPlusFractionNumber-firstPlusFractionNumber)*50; - int length = 0; - double[] coefs = {4.4660105006, -1.1266303727, 0.80, 0.0408709562}; - double[] SRKcoefs = {4.4660105006, -1.1266303727, 8.1927423578, -3.4668277785}; - double[] PRcoefs = {4.4660105006, -1.1266303727, 8.1927423578, -3.4668277785}; - double[] plusCoefs = {0.0007774204804, -0.02390179}; - SystemInterface system = null; - static Logger logger = LogManager.getLogger(PlusCharacterize.class); - - public PlusCharacterize() {} - - /** - *

- * Constructor for PlusCharacterize. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public PlusCharacterize(SystemInterface system) { - this.system = system; - } - - /** {@inheritDoc} */ - @Override - public boolean hasPlusFraction() { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { - return true; - } - } - return false; - } - - /** - *

- * setHeavyTBPtoPlus. - *

- */ - public void setHeavyTBPtoPlus() { - int plusCompNumber = 0, compNumber = 0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - try { - if (system.getPhase(0).getComponent(i).isIsTBPfraction()) { - Integer firstPlusNumber = Integer.valueOf(0); - if (system.getPhase(0).getComponent(i).getComponentName().substring(3, 4) - .equals("_")) { - firstPlusNumber = Integer.valueOf(system.getPhase(0).getComponent(i) - .getComponentName().substring(1, 3)); - } else { - firstPlusNumber = Integer.valueOf(system.getPhase(0).getComponent(i) - .getComponentName().substring(1, 2)); - } - if (plusCompNumber < firstPlusNumber.intValue()) { - plusCompNumber = firstPlusNumber.intValue(); - compNumber = i; - } - } - } catch (Exception e) { - e.toString(); - } - } - for (int i = 0; i < system.getNumberOfPhases(); i++) { - system.getPhase(i).getComponent(compNumber).setIsTBPfraction(false); - system.getPhase(i).getComponent(compNumber).setIsPlusFraction(true); - - MPlus = system.getPhase(i).getComponent(compNumber).getMolarMass(); - zPlus = system.getPhase(i).getComponent(compNumber).getz(); - densPlus = system.getPhase(i).getComponent(compNumber).getNormalLiquidDensity(); - } - coefs[2] = system.getPhase(0).getComponent(compNumber - 1).getNormalLiquidDensity() + 0.03; - densLastTBP = system.getPhase(0).getComponent(compNumber - 1).getNormalLiquidDensity(); - } - - /** {@inheritDoc} */ - @Override - public void solve() { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - try { - if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { - Integer firstPlusNumber = Integer.valueOf(0); - if (system.getPhase(0).getComponent(i).getComponentName().substring(3, 4) - .equals("_")) { - firstPlusNumber = Integer.valueOf(system.getPhase(0).getComponent(i) - .getComponentName().substring(1, 3)); - } else { - firstPlusNumber = Integer.valueOf(system.getPhase(0).getComponent(i) - .getComponentName().substring(1, 2)); - } - if (firstPlusFractionNumber < firstPlusNumber.intValue()) { - firstPlusFractionNumber = firstPlusNumber.intValue(); - } - } - } catch (Exception e) { - e.toString(); - } - } - logger.info("first plus fraction number " + firstPlusFractionNumber); - - // NewtonSolveABCDplus solver = new NewtonSolveABCDplus(system, this); - // NewtonSolveCDplus solver2 = new NewtonSolveCDplus(system, this); - // solver.solve(); - // solver2.solve(); - - // NewtonSolveABCD2 solver3 = new NewtonSolveABCD2(system, this); - // solver3.solve(); - } - - /** {@inheritDoc} */ - @Override - public double[] getCoefs() { - return this.coefs; - } - - /** {@inheritDoc} */ - @Override - public double getCoef(int i) { - return this.coefs[i]; - } - - /** {@inheritDoc} */ - @Override - public void setCoefs(double[] coefs) { - System.arraycopy(coefs, 0, this.coefs, 0, coefs.length); - - if (firsttime) { - if (coefs.length == 3) { - double Dtot = 0.0; - for (int i = getFirstPlusFractionNumber(); i < getLastPlusFractionNumber(); i++) { - Dtot += (getDensPlus() - this.getCoef(2)) / Math.log(i);// (this.getCoef(2)+this.getCoef(3)*Math.log(i)-this.getCoef(2))/Math.log(i); - } - double lengthPlus = - this.getLastPlusFractionNumber() - this.getFirstPlusFractionNumber(); - logger.info("length plus " + lengthPlus); - Dtot /= lengthPlus; - logger.info("D " + Dtot); - this.coefs[3] = Dtot; - } - firsttime = false; - } - - double mSum = 0.0, densSum = 0.0; - int iter = 0; - do { - iter++; - mSum = 0.0; - densSum = 0.0; - for (int i = this.getFirstPlusFractionNumber(); i < this - .getLastPlusFractionNumber(); i++) { - double ztemp = Math.exp(this.getCoef(0) + this.getCoef(1) * (i)); - double M = PVTsimMolarMass[i - 6] / 1000.0; - double dens = this.getCoef(2) + this.getCoef(3) * Math.log(i); - mSum += ztemp * M; - densSum += (ztemp * M / dens); - } - densSum = mSum / densSum; - - this.coefs[3] += 1.0 * (densPlus - densSum) / densSum * this.coefs[3]; - // System.out.println("coef " + this.coefs[3]); - } while (Math.abs(densPlus - densSum) > 1e-6 && iter < 1000); - } - - /** {@inheritDoc} */ - @Override - public void setCoefs(double coef, int i) { - this.coefs[i] = coef; - } - - /** - * Getter for property length. - * - * @return Value of property length. - */ - public int getLength() { - return length; - } - - /** {@inheritDoc} */ - @Override - public void generatePlusFractions(int start, int end, double zplus, double Mplus) {} - - /** {@inheritDoc} */ - @Override - public void addHeavyEnd() {} - - /** {@inheritDoc} */ - @Override - public void generateTBPFractions() {} - - /** {@inheritDoc} */ - @Override - public void addCharacterizedPlusFraction() { - if (!pseudocomponents) { - numberOfPseudocomponents = - getLastPlusFractionNumber() - getFirstPlusFractionNumber() + 1; - } - - double[] zPlus = new double[numberOfPseudocomponents]; - double[] MPlus = new double[numberOfPseudocomponents]; - - double weightFrac = 0.0; - double weightTot = 0.0; - - for (int i = getFirstPlusFractionNumber(); i < getLastPlusFractionNumber(); i++) { - weightTot += Math.exp(getCoef(0) + getCoef(1) * i) * PVTsimMolarMass[i - 6] / 1000.0; - } - - double meanWeightFrac = weightTot / (numberOfPseudocomponents + 0.000001); - zPlus = new double[numberOfPseudocomponents]; - MPlus = new double[numberOfPseudocomponents]; - int k = 0; - int firstPS = firstPlusFractionNumber; - double Maverage = 0.0, denstemp1 = 0.0, denstemp2 = 0.0; - - double totalNumberOfMoles = system.getNumberOfMoles(); - - for (int i = getFirstPlusFractionNumber(); i < getLastPlusFractionNumber(); i++) { - zPlus[k] += Math.exp(getCoef(0) + getCoef(1) * i); - MPlus[k] += PVTsimMolarMass[i - 6] / 1000.0; - denstemp1 += Math.exp(getCoef(0) + getCoef(1) * i) * PVTsimMolarMass[i - 6] / 1000.0; - denstemp2 += Math.exp(getCoef(0) + getCoef(1) * i) * PVTsimMolarMass[i - 6] / 1000.0 - / (getCoef(2) + getCoef(3) * Math.log(i)); - // System.out.println("dens " + denstemp1/denstemp2); - Maverage += Math.exp(getCoef(0) + getCoef(1) * i) * PVTsimMolarMass[i - 6] / 1000.0; - weightFrac += Math.exp(getCoef(0) + getCoef(1) * i) * PVTsimMolarMass[i - 6] / 1000.0; - // System.out.println("weigth " + weightFrac + " i" + i); - if (weightFrac >= meanWeightFrac || !pseudocomponents - || i == getLastPlusFractionNumber() - 1) { - String name = (i == firstPS) ? "PC" + Integer.toString(firstPS) - : "PC" + Integer.toString(firstPS) + "-" + Integer.toString(i); - system.addTBPfraction(name, totalNumberOfMoles * zPlus[k], Maverage / zPlus[k], - denstemp1 / denstemp2); - denstemp1 = 0.0; - denstemp2 = 0.0; - weightFrac = 0.0; - Maverage = 0.0; - k++; - firstPS = i + 1; - } - } - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { - system.removeComponent(system.getPhase(0).getComponent(i).getName()); - break; - } - } - } - - /** - *

- * addPseudoTBPfraction. - *

- * - * @param start a int - * @param end a int - */ - public void addPseudoTBPfraction(int start, int end) {} - - /** - * Getter for property carbonNumberVector. - * - * @return Value of property carbonNumberVector. - */ - public int[] getCarbonNumberVector() { - return this.carbonNumberVector; - } - - /** - * Setter for property carbonNumberVector. - * - * @param carbonNumberVector New value of property carbonNumberVector. - */ - public void setCarbonNumberVector(int[] carbonNumberVector) { - this.carbonNumberVector = carbonNumberVector; - } - - /** {@inheritDoc} */ - @Override - public int getFirstPlusFractionNumber() { - return firstPlusFractionNumber; - } - - /** {@inheritDoc} */ - @Override - public int getLastPlusFractionNumber() { - return lastPlusFractionNumber; - } - - /** - * Setter for property firstPlusFractionNumber. - * - * @param firstPlusFractionNumber New value of property firstPlusFractionNumber. - */ - public void setFirstPlusFractionNumber(int firstPlusFractionNumber) { - this.firstPlusFractionNumber = firstPlusFractionNumber; - } - - /** - * Getter for property startPlus. - * - * @return Value of property startPlus. - */ - public int getStartPlus() { - return firstPlusFractionNumber; - } - - /** - * Setter for property firstPlusFractionNumber. - * - * @param startPlus New value of property firstPlusFractionNumber. - * @deprecated use {@link #setFirstPlusFractionNumber(int firstPlusFractionNumber)} instead. - * - */ - @Deprecated - public void setStartPlus(int startPlus) { - setFirstPlusFractionNumber(startPlus); - } - - /** {@inheritDoc} */ - @Override - public double getMPlus() { - return MPlus; - } - - /** {@inheritDoc} */ - @Override - public void setMPlus(double MPlus) { - this.MPlus = MPlus; - } - - /** {@inheritDoc} */ - @Override - public double getZPlus() { - return zPlus; - } - - /** {@inheritDoc} */ - @Override - public void setZPlus(double zPlus) { - this.zPlus = zPlus; - } - - /** {@inheritDoc} */ - @Override - public double[] getPlusCoefs() { - return this.plusCoefs; - } - - /** {@inheritDoc} */ - @Override - public double getPlusCoefs(int i) { - return this.plusCoefs[i]; - } - - /** {@inheritDoc} */ - @Override - public void setPlusCoefs(double[] plusCoefs) { - this.plusCoefs = plusCoefs; - } - - /** {@inheritDoc} */ - @Override - public double getDensPlus() { - return densPlus; - } - - /** - * Setter for property densPlus. - * - * @param densPlus New value of property densPlus. - */ - public void setDensPlus(double densPlus) { - this.densPlus = densPlus; - } - - /** {@inheritDoc} */ - @Override - public boolean groupTBPfractions() { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PlusCharacterize.class); + + double[] TBPfractions = null; + boolean firsttime = true; + double MPlus = 300.0; + double zPlus = 0.3; + double densPlus = 0.98; + private double densLastTBP = 0.78; + int[] carbonNumberVector = null; + protected boolean pseudocomponents = true; + int firstPlusFractionNumber = 1; + int lastPlusFractionNumber = 80; + int numberOfPseudocomponents = 5; // (lastPlusFractionNumber-firstPlusFractionNumber)*50; + int length = 0; + double[] coefs = {4.4660105006, -1.1266303727, 0.80, 0.0408709562}; + double[] SRKcoefs = {4.4660105006, -1.1266303727, 8.1927423578, -3.4668277785}; + double[] PRcoefs = {4.4660105006, -1.1266303727, 8.1927423578, -3.4668277785}; + double[] plusCoefs = {0.0007774204804, -0.02390179}; + SystemInterface system = null; + + /** + *

+ * Constructor for PlusCharacterize. + *

+ */ + public PlusCharacterize() {} + + /** + *

+ * Constructor for PlusCharacterize. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public PlusCharacterize(SystemInterface system) { + this.system = system; + } + + /** {@inheritDoc} */ + @Override + public boolean hasPlusFraction() { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { return true; - } - - /** - * Getter for property numberOfPseudocomponents. - * - * @return Value of property numberOfPseudocomponents. - */ - public int getNumberOfPseudocomponents() { - return numberOfPseudocomponents; - } - - /** {@inheritDoc} */ - @Override - public void setNumberOfPseudocomponents(int numberOfPseudocomponents) { - this.numberOfPseudocomponents = numberOfPseudocomponents; - } - - /** {@inheritDoc} */ - @Override - public boolean isPseudocomponents() { - return pseudocomponents; - } - - /** {@inheritDoc} */ - @Override - public void setPseudocomponents(boolean pseudocomponents) { - this.pseudocomponents = pseudocomponents; - } - - /** {@inheritDoc} */ - @Override - public void removeTBPfraction() { - ArrayList list = new ArrayList(); - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - double boilpoint = system.getPhase(0).getComponent(i).getNormalBoilingPoint(); - if (boilpoint >= 69.0) { - list.add(system.getPhase(0).getComponent(i).getName()); - } + } + } + return false; + } + + /** + *

+ * setHeavyTBPtoPlus. + *

+ */ + public void setHeavyTBPtoPlus() { + int plusCompNumber = 0; + int compNumber = 0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + try { + if (system.getPhase(0).getComponent(i).isIsTBPfraction()) { + Integer firstPlusNumber = Integer.valueOf(0); + if (system.getPhase(0).getComponent(i).getComponentName().substring(3, 4).equals("_")) { + firstPlusNumber = Integer + .valueOf(system.getPhase(0).getComponent(i).getComponentName().substring(1, 3)); + } else { + firstPlusNumber = Integer + .valueOf(system.getPhase(0).getComponent(i).getComponentName().substring(1, 2)); + } + if (plusCompNumber < firstPlusNumber.intValue()) { + plusCompNumber = firstPlusNumber.intValue(); + compNumber = i; + } } - - for (int i = 0; i < list.size(); i++) { - try { - system.removeComponent(list.get(i)); - logger.info("removing " + list.get(i)); - } catch (Exception e) { - logger.error("not able to remove " + list.get(i)); - // return; - } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + for (int i = 0; i < system.getNumberOfPhases(); i++) { + system.getPhase(i).getComponent(compNumber).setIsTBPfraction(false); + system.getPhase(i).getComponent(compNumber).setIsPlusFraction(true); + + MPlus = system.getPhase(i).getComponent(compNumber).getMolarMass(); + zPlus = system.getPhase(i).getComponent(compNumber).getz(); + densPlus = system.getPhase(i).getComponent(compNumber).getNormalLiquidDensity(); + } + coefs[2] = system.getPhase(0).getComponent(compNumber - 1).getNormalLiquidDensity() + 0.03; + densLastTBP = system.getPhase(0).getComponent(compNumber - 1).getNormalLiquidDensity(); + } + + /** {@inheritDoc} */ + @Override + public void solve() { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + try { + if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { + Integer firstPlusNumber = Integer.valueOf(0); + if (system.getPhase(0).getComponent(i).getComponentName().substring(3, 4).equals("_")) { + firstPlusNumber = Integer + .valueOf(system.getPhase(0).getComponent(i).getComponentName().substring(1, 3)); + } else { + firstPlusNumber = Integer + .valueOf(system.getPhase(0).getComponent(i).getComponentName().substring(1, 2)); + } + if (firstPlusFractionNumber < firstPlusNumber.intValue()) { + firstPlusFractionNumber = firstPlusNumber.intValue(); + } } - } - - /** {@inheritDoc} */ - @Override - public void addTBPFractions() {} - - /** {@inheritDoc} */ - @Override - public double getDensLastTBP() { - return densLastTBP; - } - - /** {@inheritDoc} */ - @Override - public void setDensLastTBP(double densLastTBP) { - this.densLastTBP = densLastTBP; - } - - /** - *

- * characterizePlusFraction. - *

- */ - public void characterizePlusFraction() { - system.init(0); - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { - MPlus = system.getPhase(0).getComponent(i).getMolarMass(); - zPlus = system.getPhase(0).getComponent(i).getz(); - densPlus = system.getPhase(0).getComponent(i).getNormalLiquidDensity(); - } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + logger.info("first plus fraction number " + firstPlusFractionNumber); + + // NewtonSolveABCDplus solver = new NewtonSolveABCDplus(system, this); + // NewtonSolveCDplus solver2 = new NewtonSolveCDplus(system, this); + // solver.solve(); + // solver2.solve(); + + // NewtonSolveABCD2 solver3 = new NewtonSolveABCD2(system, this); + // solver3.solve(); + } + + /** {@inheritDoc} */ + @Override + public double[] getCoefs() { + return this.coefs; + } + + /** {@inheritDoc} */ + @Override + public double getCoef(int i) { + return this.coefs[i]; + } + + /** {@inheritDoc} */ + @Override + public void setCoefs(double[] coefs) { + System.arraycopy(coefs, 0, this.coefs, 0, coefs.length); + + if (firsttime) { + if (coefs.length == 3) { + double Dtot = 0.0; + for (int i = getFirstPlusFractionNumber(); i < getLastPlusFractionNumber(); i++) { + Dtot += (getDensPlus() - this.getCoef(2)) / Math.log(i); // (this.getCoef(2)+this.getCoef(3)*Math.log(i)-this.getCoef(2))/Math.log(i); } - - coefs[0] = 0.1; - coefs[1] = Math.log(zPlus) / getFirstPlusFractionNumber(); - solve(); - } + double lengthPlus = this.getLastPlusFractionNumber() - this.getFirstPlusFractionNumber(); + logger.info("length plus " + lengthPlus); + Dtot /= lengthPlus; + logger.info("D " + Dtot); + this.coefs[3] = Dtot; + } + firsttime = false; + } + + double mSum = 0.0; + double densSum = 0.0; + int iter = 0; + do { + iter++; + mSum = 0.0; + densSum = 0.0; + for (int i = this.getFirstPlusFractionNumber(); i < this.getLastPlusFractionNumber(); i++) { + double ztemp = Math.exp(this.getCoef(0) + this.getCoef(1) * (i)); + double M = PVTsimMolarMass[i - 6] / 1000.0; + double dens = this.getCoef(2) + this.getCoef(3) * Math.log(i); + mSum += ztemp * M; + densSum += (ztemp * M / dens); + } + densSum = mSum / densSum; + + this.coefs[3] += 1.0 * (densPlus - densSum) / densSum * this.coefs[3]; + // System.out.println("coef " + this.coefs[3]); + } while (Math.abs(densPlus - densSum) > 1e-6 && iter < 1000); + } + + /** {@inheritDoc} */ + @Override + public void setCoefs(double coef, int i) { + this.coefs[i] = coef; + } + + /** + * Getter for property length. + * + * @return Value of property length. + */ + public int getLength() { + return length; + } + + /** {@inheritDoc} */ + @Override + public void generatePlusFractions(int start, int end, double zplus, double Mplus) {} + + /** {@inheritDoc} */ + @Override + public void addHeavyEnd() {} + + /** {@inheritDoc} */ + @Override + public void generateTBPFractions() {} + + /** {@inheritDoc} */ + @Override + public void addCharacterizedPlusFraction() { + if (!pseudocomponents) { + numberOfPseudocomponents = getLastPlusFractionNumber() - getFirstPlusFractionNumber() + 1; + } + + double[] zPlus = new double[numberOfPseudocomponents]; + double[] MPlus = new double[numberOfPseudocomponents]; + + double weightFrac = 0.0; + double weightTot = 0.0; + + for (int i = getFirstPlusFractionNumber(); i < getLastPlusFractionNumber(); i++) { + weightTot += Math.exp(getCoef(0) + getCoef(1) * i) * PVTsimMolarMass[i - 6] / 1000.0; + } + + double meanWeightFrac = weightTot / (numberOfPseudocomponents + 0.000001); + zPlus = new double[numberOfPseudocomponents]; + MPlus = new double[numberOfPseudocomponents]; + int k = 0; + int firstPS = firstPlusFractionNumber; + double Maverage = 0.0; + + double denstemp1 = 0.0; + double denstemp2 = 0.0; + double totalNumberOfMoles = system.getNumberOfMoles(); + + for (int i = getFirstPlusFractionNumber(); i < getLastPlusFractionNumber(); i++) { + zPlus[k] += Math.exp(getCoef(0) + getCoef(1) * i); + MPlus[k] += PVTsimMolarMass[i - 6] / 1000.0; + denstemp1 += Math.exp(getCoef(0) + getCoef(1) * i) * PVTsimMolarMass[i - 6] / 1000.0; + denstemp2 += Math.exp(getCoef(0) + getCoef(1) * i) * PVTsimMolarMass[i - 6] / 1000.0 + / (getCoef(2) + getCoef(3) * Math.log(i)); + // System.out.println("dens " + denstemp1/denstemp2); + Maverage += Math.exp(getCoef(0) + getCoef(1) * i) * PVTsimMolarMass[i - 6] / 1000.0; + weightFrac += Math.exp(getCoef(0) + getCoef(1) * i) * PVTsimMolarMass[i - 6] / 1000.0; + // System.out.println("weigth " + weightFrac + " i" + i); + if (weightFrac >= meanWeightFrac || !pseudocomponents + || i == getLastPlusFractionNumber() - 1) { + String name = (i == firstPS) ? "PC" + Integer.toString(firstPS) + : "PC" + Integer.toString(firstPS) + "-" + Integer.toString(i); + system.addTBPfraction(name, totalNumberOfMoles * zPlus[k], Maverage / zPlus[k], + denstemp1 / denstemp2); + denstemp1 = 0.0; + denstemp2 = 0.0; + weightFrac = 0.0; + Maverage = 0.0; + k++; + firstPS = i + 1; + } + } + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { + system.removeComponent(system.getPhase(0).getComponent(i).getName()); + break; + } + } + } + + /** + *

+ * addPseudoTBPfraction. + *

+ * + * @param start a int + * @param end a int + */ + public void addPseudoTBPfraction(int start, int end) {} + + /** + * Getter for property carbonNumberVector. + * + * @return Value of property carbonNumberVector. + */ + public int[] getCarbonNumberVector() { + return this.carbonNumberVector; + } + + /** + * Setter for property carbonNumberVector. + * + * @param carbonNumberVector New value of property carbonNumberVector. + */ + public void setCarbonNumberVector(int[] carbonNumberVector) { + this.carbonNumberVector = carbonNumberVector; + } + + /** {@inheritDoc} */ + @Override + public int getFirstPlusFractionNumber() { + return firstPlusFractionNumber; + } + + /** {@inheritDoc} */ + @Override + public int getLastPlusFractionNumber() { + return lastPlusFractionNumber; + } + + /** + * Setter for property firstPlusFractionNumber. + * + * @param firstPlusFractionNumber New value of property firstPlusFractionNumber. + */ + public void setFirstPlusFractionNumber(int firstPlusFractionNumber) { + this.firstPlusFractionNumber = firstPlusFractionNumber; + } + + /** + * Getter for property startPlus. + * + * @return Value of property startPlus. + */ + public int getStartPlus() { + return firstPlusFractionNumber; + } + + /** {@inheritDoc} */ + @Override + public double getMPlus() { + return MPlus; + } + + /** {@inheritDoc} */ + @Override + public void setMPlus(double MPlus) { + this.MPlus = MPlus; + } + + /** {@inheritDoc} */ + @Override + public double getZPlus() { + return zPlus; + } + + /** {@inheritDoc} */ + @Override + public void setZPlus(double zPlus) { + this.zPlus = zPlus; + } + + /** {@inheritDoc} */ + @Override + public double[] getPlusCoefs() { + return this.plusCoefs; + } + + /** {@inheritDoc} */ + @Override + public double getPlusCoefs(int i) { + return this.plusCoefs[i]; + } + + /** {@inheritDoc} */ + @Override + public void setPlusCoefs(double[] plusCoefs) { + this.plusCoefs = plusCoefs; + } + + /** {@inheritDoc} */ + @Override + public double getDensPlus() { + return densPlus; + } + + /** + * Setter for property densPlus. + * + * @param densPlus New value of property densPlus. + */ + public void setDensPlus(double densPlus) { + this.densPlus = densPlus; + } + + /** {@inheritDoc} */ + @Override + public boolean groupTBPfractions() { + return true; + } + + /** + * Getter for property numberOfPseudocomponents. + * + * @return Value of property numberOfPseudocomponents. + */ + public int getNumberOfPseudocomponents() { + return numberOfPseudocomponents; + } + + /** {@inheritDoc} */ + @Override + public void setNumberOfPseudocomponents(int numberOfPseudocomponents) { + this.numberOfPseudocomponents = numberOfPseudocomponents; + } + + /** {@inheritDoc} */ + @Override + public boolean isPseudocomponents() { + return pseudocomponents; + } + + /** {@inheritDoc} */ + @Override + public void setPseudocomponents(boolean pseudocomponents) { + this.pseudocomponents = pseudocomponents; + } + + /** {@inheritDoc} */ + @Override + public void removeTBPfraction() { + ArrayList list = new ArrayList(); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + double boilpoint = system.getPhase(0).getComponent(i).getNormalBoilingPoint(); + if (boilpoint >= 273.15 + 69.0) { + list.add(system.getPhase(0).getComponent(i).getName()); + } + } + + for (int i = 0; i < list.size(); i++) { + try { + system.removeComponent(list.get(i)); + logger.info("removing " + list.get(i)); + } catch (Exception ex) { + logger.error("not able to remove " + list.get(i), ex); + // return; + } + } + } + + /** {@inheritDoc} */ + @Override + public void addTBPFractions() {} + + /** {@inheritDoc} */ + @Override + public double getDensLastTBP() { + return densLastTBP; + } + + /** {@inheritDoc} */ + @Override + public void setDensLastTBP(double densLastTBP) { + this.densLastTBP = densLastTBP; + } + + /** + *

+ * characterizePlusFraction. + *

+ */ + public void characterizePlusFraction() { + system.init(0); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).isIsPlusFraction()) { + MPlus = system.getPhase(0).getComponent(i).getMolarMass(); + zPlus = system.getPhase(0).getComponent(i).getz(); + densPlus = system.getPhase(0).getComponent(i).getNormalLiquidDensity(); + } + } + + coefs[0] = 0.1; + coefs[1] = Math.log(zPlus) / getFirstPlusFractionNumber(); + solve(); + } } diff --git a/src/main/java/neqsim/thermo/characterization/PlusFractionModel.java b/src/main/java/neqsim/thermo/characterization/PlusFractionModel.java index 786ff8492d..6c6e6eb259 100644 --- a/src/main/java/neqsim/thermo/characterization/PlusFractionModel.java +++ b/src/main/java/neqsim/thermo/characterization/PlusFractionModel.java @@ -14,12 +14,19 @@ public class PlusFractionModel implements java.io.Serializable { private static final long serialVersionUID = 1000; private String name = ""; private SystemInterface system = null; - double MPlus = 0.0, zPlus = 0.0, densPlus = 0.0; + double MPlus = 0.0; + double zPlus = 0.0; + double densPlus = 0.0; int firstPlusFractionNumber = 1; int lastPlusFractionNumber = 80; int plusComponentNumber = 0; private double maxPlusMolarMass = 1000.0; - double[] z, M, dens, TC, PC, acs; + double[] z; + double[] M; + double[] dens; + double[] TC; + double[] PC; + double[] acs; /** *

@@ -139,7 +146,8 @@ public int getFirstPlusFractionNumber() { @Override public int getFirstTBPFractionNumber() { int firstTBPNumber = 0; - double M = 1e10, Mmin = 1e10; + double M = 1e10; + double Mmin = 1e10; for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { if (system.getPhase(0).getComponent(i).isIsTBPfraction()) { M = system.getPhase(0).getComponent(i).getMolarMass(); @@ -241,7 +249,7 @@ public void setCoefs(double[] coefs) { if (coefs.length == 3) { double Dtot = 0.0; for (int i = firstPlusFractionNumber; i < lastPlusFractionNumber; i++) { - Dtot += (densPlus - this.getCoef(2)) / Math.log(i);// (this.getCoef(2)+this.getCoef(3)*Math.log(i)-this.getCoef(2))/Math.log(i); + Dtot += (densPlus - this.getCoef(2)) / Math.log(i); // (this.getCoef(2)+this.getCoef(3)*Math.log(i)-this.getCoef(2))/Math.log(i); } double lengthPlus = lastPlusFractionNumber - firstPlusFractionNumber; // System.out.println("length plus " + lengthPlus); @@ -253,7 +261,8 @@ public void setCoefs(double[] coefs) { } // double zSum = 0.0; - double mSum = 0.0, densSum = 0.0; + double mSum = 0.0; + double densSum = 0.0; int iter = 0; do { iter++; @@ -299,7 +308,9 @@ public PedersenHeavyOilPlusModel() { * @return a {@link neqsim.thermo.characterization.PlusFractionModelInterface} object */ public PlusFractionModelInterface getModel(String name) { - if (name.equals("heavyOil")) { + if (name.equals("Pedersen")) { + return new PedersenPlusModel(); + } else if (name.equals("Pedersen Heavy Oil")) { return new PedersenHeavyOilPlusModel(); } else { return new PedersenPlusModel(); diff --git a/src/main/java/neqsim/thermo/characterization/PlusFractionModelInterface.java b/src/main/java/neqsim/thermo/characterization/PlusFractionModelInterface.java index feb8407e71..df08e6fa83 100644 --- a/src/main/java/neqsim/thermo/characterization/PlusFractionModelInterface.java +++ b/src/main/java/neqsim/thermo/characterization/PlusFractionModelInterface.java @@ -9,157 +9,157 @@ * @version $Id: $Id */ public interface PlusFractionModelInterface extends java.io.Serializable { - /** - *

- * hasPlusFraction. - *

- * - * @return a boolean - */ - public boolean hasPlusFraction(); - - /** - *

- * characterizePlusFraction. - *

- * - * @param model a {@link neqsim.thermo.characterization.TBPModelInterface} object - */ - public void characterizePlusFraction(TBPModelInterface model); - - /** - *

- * getFirstTBPFractionNumber. - *

- * - * @return a int - */ - public int getFirstTBPFractionNumber(); - - /** - *

- * getFirstPlusFractionNumber. - *

- * - * @return a int - */ - public int getFirstPlusFractionNumber(); - - /** - *

- * getMaxPlusMolarMass. - *

- * - * @return a double - */ - public double getMaxPlusMolarMass(); - - /** - *

- * getName. - *

- * - * @return a {@link java.lang.String} object - */ - public String getName(); - - /** - *

- * getLastPlusFractionNumber. - *

- * - * @return a int - */ - public int getLastPlusFractionNumber(); - - /** - *

- * getPlusComponentNumber. - *

- * - * @return a int - */ - public int getPlusComponentNumber(); - - /** - *

- * getNumberOfPlusPseudocomponents. - *

- * - * @return a double - */ - public double getNumberOfPlusPseudocomponents(); - - /** - *

- * getMPlus. - *

- * - * @return a double - */ - public double getMPlus(); - - /** - *

- * getZPlus. - *

- * - * @return a double - */ - public double getZPlus(); - - /** - *

- * getDensPlus. - *

- * - * @return a double - */ - public double getDensPlus(); - - /** - *

- * getZ. - *

- * - * @return an array of {@link double} objects - */ - public double[] getZ(); - - /** - *

- * getM. - *

- * - * @return an array of {@link double} objects - */ - public double[] getM(); - - /** - *

- * getDens. - *

- * - * @return an array of {@link double} objects - */ - public double[] getDens(); - - /** - *

- * getCoefs. - *

- * - * @return an array of {@link double} objects - */ - public double[] getCoefs(); - - /** - *

- * getCoef. - *

- * - * @param i a int - * @return a double - */ - public double getCoef(int i); + /** + *

+ * hasPlusFraction. + *

+ * + * @return a boolean + */ + public boolean hasPlusFraction(); + + /** + *

+ * characterizePlusFraction. + *

+ * + * @param model a {@link neqsim.thermo.characterization.TBPModelInterface} object + */ + public void characterizePlusFraction(TBPModelInterface model); + + /** + *

+ * getFirstTBPFractionNumber. + *

+ * + * @return a int + */ + public int getFirstTBPFractionNumber(); + + /** + *

+ * getFirstPlusFractionNumber. + *

+ * + * @return a int + */ + public int getFirstPlusFractionNumber(); + + /** + *

+ * getMaxPlusMolarMass. + *

+ * + * @return a double + */ + public double getMaxPlusMolarMass(); + + /** + *

+ * getName. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getName(); + + /** + *

+ * getLastPlusFractionNumber. + *

+ * + * @return a int + */ + public int getLastPlusFractionNumber(); + + /** + *

+ * getPlusComponentNumber. + *

+ * + * @return a int + */ + public int getPlusComponentNumber(); + + /** + *

+ * getNumberOfPlusPseudocomponents. + *

+ * + * @return a double + */ + public double getNumberOfPlusPseudocomponents(); + + /** + *

+ * getMPlus. + *

+ * + * @return a double + */ + public double getMPlus(); + + /** + *

+ * getZPlus. + *

+ * + * @return a double + */ + public double getZPlus(); + + /** + *

+ * getDensPlus. + *

+ * + * @return a double + */ + public double getDensPlus(); + + /** + *

+ * getZ. + *

+ * + * @return an array of type double + */ + public double[] getZ(); + + /** + *

+ * getM. + *

+ * + * @return an array of type double + */ + public double[] getM(); + + /** + *

+ * getDens. + *

+ * + * @return an array of type double + */ + public double[] getDens(); + + /** + *

+ * getCoefs. + *

+ * + * @return an array of type double + */ + public double[] getCoefs(); + + /** + *

+ * getCoef. + *

+ * + * @param i a int + * @return a double + */ + public double getCoef(int i); } diff --git a/src/main/java/neqsim/thermo/characterization/Recombine.java b/src/main/java/neqsim/thermo/characterization/Recombine.java index a5efe02fca..63a2a7e53f 100644 --- a/src/main/java/neqsim/thermo/characterization/Recombine.java +++ b/src/main/java/neqsim/thermo/characterization/Recombine.java @@ -11,84 +11,84 @@ * @version $Id: $Id */ public class Recombine { - SystemInterface gas, oil; - private SystemInterface recombinedSystem = null; - private double GOR = 1000.0; - private double oilDesnity = 0.8; + SystemInterface gas, oil; + private SystemInterface recombinedSystem = null; + private double GOR = 1000.0; + private double oilDesnity = 0.8; - /** - *

- * Constructor for Recombine. - *

- * - * @param gas a {@link neqsim.thermo.system.SystemInterface} object - * @param oil a {@link neqsim.thermo.system.SystemInterface} object - */ - public Recombine(SystemInterface gas, SystemInterface oil) {} + /** + *

+ * Constructor for Recombine. + *

+ * + * @param gas a {@link neqsim.thermo.system.SystemInterface} object + * @param oil a {@link neqsim.thermo.system.SystemInterface} object + */ + public Recombine(SystemInterface gas, SystemInterface oil) {} - /** - *

- * runRecombination. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface runRecombination() { - return getRecombinedSystem(); - } + /** + *

+ * runRecombination. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface runRecombination() { + return getRecombinedSystem(); + } - /** - *

- * getGOR. - *

- * - * @return the GOR - */ - public double getGOR() { - return GOR; - } + /** + *

+ * getGOR. + *

+ * + * @return the GOR + */ + public double getGOR() { + return GOR; + } - /** - *

- * setGOR. - *

- * - * @param GOR the GOR to set - */ - public void setGOR(double GOR) { - this.GOR = GOR; - } + /** + *

+ * setGOR. + *

+ * + * @param GOR the GOR to set + */ + public void setGOR(double GOR) { + this.GOR = GOR; + } - /** - *

- * Getter for the field oilDesnity. - *

- * - * @return the oilDesnity - */ - public double getOilDesnity() { - return oilDesnity; - } + /** + *

+ * Getter for the field oilDesnity. + *

+ * + * @return the oilDesnity + */ + public double getOilDesnity() { + return oilDesnity; + } - /** - *

- * Setter for the field oilDesnity. - *

- * - * @param oilDesnity the oilDesnity to set - */ - public void setOilDesnity(double oilDesnity) { - this.oilDesnity = oilDesnity; - } + /** + *

+ * Setter for the field oilDesnity. + *

+ * + * @param oilDesnity the oilDesnity to set + */ + public void setOilDesnity(double oilDesnity) { + this.oilDesnity = oilDesnity; + } - /** - *

- * Getter for the field recombinedSystem. - *

- * - * @return the recombinedSystem - */ - public SystemInterface getRecombinedSystem() { - return recombinedSystem; - } + /** + *

+ * Getter for the field recombinedSystem. + *

+ * + * @return the recombinedSystem + */ + public SystemInterface getRecombinedSystem() { + return recombinedSystem; + } } diff --git a/src/main/java/neqsim/thermo/characterization/TBPCharacterize.java b/src/main/java/neqsim/thermo/characterization/TBPCharacterize.java index c2f557a4e9..31fd1ed4b4 100644 --- a/src/main/java/neqsim/thermo/characterization/TBPCharacterize.java +++ b/src/main/java/neqsim/thermo/characterization/TBPCharacterize.java @@ -3,6 +3,7 @@ * * Created on 3. januar 2003, 10:03 */ + package neqsim.thermo.characterization; import neqsim.thermo.system.SystemInterface; @@ -16,322 +17,327 @@ * @version $Id: $Id */ public class TBPCharacterize extends PlusCharacterize { - private static final long serialVersionUID = 1000; - int startPlus = 7; - int endPlus = 20; - double[] calcTBPfractions = null; - double[] TBPdens = null; - double[] TBPmoles = null; - double[] TBPdensDenom = null; - double[] TBP_Mnom = null; - double[] TBP_M = null; - - public TBPCharacterize() {} - - /** - *

- * Constructor for TBPCharacterize. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public TBPCharacterize(SystemInterface system) { - this.system = system; - firstPlusFractionNumber = 7; - lastPlusFractionNumber = 40; - } - - /** {@inheritDoc} */ - @Override - public boolean groupTBPfractions() { - system.init(0); - double old = 0; - - TBPfractions = new double[50]; - TBP_Mnom = new double[50]; - TBPdensDenom = new double[50]; - TBPmoles = new double[50]; - - int numb = 49; - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - // if (system.getPhase(0).getComponent(i).getComponentType().equals("HC")) { - double boilpoint = system.getPhase(0).getComponent(i).getNormalBoilingPoint(); - - if (boilpoint >= 331.0) { - numb = 13; - } else if (boilpoint >= 317.0) { - numb = 12; - } else if (boilpoint >= 303.0) { - numb = 11; - } else if (boilpoint >= 287.0) { - numb = 10; - } else if (boilpoint >= 271.1) { - numb = 9; - } else if (boilpoint >= 253.9) { - numb = 8; - } else if (boilpoint >= 235.9) { - numb = 7; - } else if (boilpoint >= 216.8) { - numb = 6; - } else if (boilpoint >= 196.4) { - numb = 5; - } else if (boilpoint >= 174.6) { - numb = 4; - } else if (boilpoint >= 151.3) { - numb = 3; - } else if (boilpoint >= 126.1) { - numb = 2; - } else if (boilpoint >= 98.9) { - numb = 1; - } else if (boilpoint >= 69.2) { - numb = 0; - } else { - numb = 49; - } - if (boilpoint > old) { - length = numb + 1; - old = boilpoint; - } - TBPmoles[numb] += system.getPhase(0).getComponent(i).getNumberOfmoles(); - TBPfractions[numb] += system.getPhase(0).getComponent(i).getz(); - TBP_Mnom[numb] += system.getPhase(0).getComponent(i).getz() - * system.getPhase(0).getComponent(i).getMolarMass(); - TBPdensDenom[numb] += system.getPhase(0).getComponent(i).getz() - * system.getPhase(0).getComponent(i).getMolarMass() - / system.getPhase(0).getComponent(i).getNormalLiquidDensity(); - // } - } - TBPdens = new double[length]; - TBP_M = new double[length]; - carbonNumberVector = new int[length]; - - for (int i = 0; i < length; i++) { - TBPdens[i] = TBP_Mnom[i] / TBPdensDenom[i]; - TBP_M[i] = TBP_Mnom[i] / TBPfractions[i]; - carbonNumberVector[i] = getFirstPlusFractionNumber() + i; - } - - return length > 1; - } - - /** {@inheritDoc} */ - @Override - public void addTBPFractions() { - for (int i = 0; i < TBPdens.length; i++) { - // System.out.println("Mi " + TBP_M[i] + " dens " + TBPdens[i]); - system.addTBPfraction("C" + Integer.toString(carbonNumberVector[i]), TBPmoles[i], - TBP_M[i], TBPdens[i]); - } - } - - /** - *

- * saveCharacterizedFluid. - *

- * - * @return a boolean - */ - public boolean saveCharacterizedFluid() { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - // double boilpoint = - // system.getPhase(0).getComponent(i).getNormalBoilingPoint(); - } - return true; - } - - /** - * Getter for property TBPfractions. - * - * @return Value of property TBPfractions. - */ - public double[] getTBPfractions() { - return this.TBPfractions; - } - - /** {@inheritDoc} */ - @Override - public void setCoefs(double coef, int i) { - this.coefs[i] = coef; - } - - /** - *

- * getTBPfractions. - *

- * - * @param i a int - * @return a double - */ - public double getTBPfractions(int i) { - return this.TBPfractions[i]; - } - - /** - * Setter for property TBPfractions. - * - * @param TBPfractions New value of property TBPfractions. - */ - public void setTBPfractions(double[] TBPfractions) { - this.TBPfractions = TBPfractions; - } - - /** {@inheritDoc} */ - @Override - public void solve() { - NewtonSolveABCD solver = new NewtonSolveABCD(system, this); - solver.solve(); - } - - /** - *

- * solveAB. - *

- */ - public void solveAB() { - NewtonSolveAB solver = new NewtonSolveAB(system, this); - solver.solve(); - } - - /** {@inheritDoc} */ - @Override - public void setCoefs(double[] coefs) { - this.coefs = coefs; - } - - /** - * Getter for property TBPdens. - * - * @return Value of property TBPdens. - */ - public double[] getTBPdens() { - return this.TBPdens; - } - - /** - *

- * getTBPdens. - *

- * - * @param i a int - * @return a double - */ - public double getTBPdens(int i) { - return this.TBPdens[i]; + private static final long serialVersionUID = 1000; + int startPlus = 7; + int endPlus = 20; + double[] calcTBPfractions = null; + double[] TBPdens = null; + double[] TBPmoles = null; + double[] TBPdensDenom = null; + double[] TBP_Mnom = null; + double[] TBP_M = null; + + /** + *

+ * Constructor for TBPCharacterize. + *

+ */ + public TBPCharacterize() {} + + /** + *

+ * Constructor for TBPCharacterize. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public TBPCharacterize(SystemInterface system) { + this.system = system; + firstPlusFractionNumber = 7; + lastPlusFractionNumber = 40; + } + + /** {@inheritDoc} */ + @Override + public boolean groupTBPfractions() { + system.init(0); + double old = 0; + + TBPfractions = new double[50]; + TBP_Mnom = new double[50]; + TBPdensDenom = new double[50]; + TBPmoles = new double[50]; + + int numb = 49; + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + // if (system.getPhase(0).getComponent(i).getComponentType().equals("HC")) { + double boilpoint = system.getPhase(0).getComponent(i).getNormalBoilingPoint("C"); + + if (boilpoint >= 331.0) { + numb = 13; + } else if (boilpoint >= 317.0) { + numb = 12; + } else if (boilpoint >= 303.0) { + numb = 11; + } else if (boilpoint >= 287.0) { + numb = 10; + } else if (boilpoint >= 271.1) { + numb = 9; + } else if (boilpoint >= 253.9) { + numb = 8; + } else if (boilpoint >= 235.9) { + numb = 7; + } else if (boilpoint >= 216.8) { + numb = 6; + } else if (boilpoint >= 196.4) { + numb = 5; + } else if (boilpoint >= 174.6) { + numb = 4; + } else if (boilpoint >= 151.3) { + numb = 3; + } else if (boilpoint >= 126.1) { + numb = 2; + } else if (boilpoint >= 98.9) { + numb = 1; + } else if (boilpoint >= 69.2) { + numb = 0; + } else { + numb = 49; + } + if (boilpoint > old) { + length = numb + 1; + old = boilpoint; + } + TBPmoles[numb] += system.getPhase(0).getComponent(i).getNumberOfmoles(); + TBPfractions[numb] += system.getPhase(0).getComponent(i).getz(); + TBP_Mnom[numb] += system.getPhase(0).getComponent(i).getz() + * system.getPhase(0).getComponent(i).getMolarMass(); + TBPdensDenom[numb] += system.getPhase(0).getComponent(i).getz() + * system.getPhase(0).getComponent(i).getMolarMass() + / system.getPhase(0).getComponent(i).getNormalLiquidDensity(); + // } } - - /** - * Setter for property TBPdens. - * - * @param TBPdens New value of property TBPdens. - */ - public void setTBPdens(double[] TBPdens) { - this.TBPdens = TBPdens; - } - - /** {@inheritDoc} */ - @Override - public int getLength() { - return length; + TBPdens = new double[length]; + TBP_M = new double[length]; + carbonNumberVector = new int[length]; + + for (int i = 0; i < length; i++) { + TBPdens[i] = TBP_Mnom[i] / TBPdensDenom[i]; + TBP_M[i] = TBP_Mnom[i] / TBPfractions[i]; + carbonNumberVector[i] = getFirstPlusFractionNumber() + i; } - /** - * Getter for property TBP_M. - * - * @return Value of property TBP_M. - */ - public double[] getTBP_M() { - return this.TBP_M; - } + return length > 1; + } - /** - * Setter for property TBP_M. - * - * @param TBP_M New value of property TBP_M. - */ - public void setTBP_M(double[] TBP_M) { - this.TBP_M = TBP_M; + /** {@inheritDoc} */ + @Override + public void addTBPFractions() { + for (int i = 0; i < TBPdens.length; i++) { + // System.out.println("Mi " + TBP_M[i] + " dens " + TBPdens[i]); + system.addTBPfraction("C" + Integer.toString(carbonNumberVector[i]), TBPmoles[i], TBP_M[i], + TBPdens[i]); } - - /** {@inheritDoc} */ - @Override - public int[] getCarbonNumberVector() { - return this.carbonNumberVector; - } - - /** {@inheritDoc} */ - @Override - public void setCarbonNumberVector(int[] carbonNumberVector) { - this.carbonNumberVector = carbonNumberVector; - } - - /** - * Getter for property calcTBPfractions. - * - * @return Value of property calcTBPfractions. - */ - public double[] getCalcTBPfractions() { - return this.calcTBPfractions; - } - - /** - * Setter for property calcTBPfractions. - * - * @param calcTBPfractions New value of property calcTBPfractions. - */ - public void setCalcTBPfractions(double[] calcTBPfractions) { - this.calcTBPfractions = calcTBPfractions; - } - - /** {@inheritDoc} */ - @Override - public double[] getPlusCoefs() { - return this.plusCoefs; - } - - /** {@inheritDoc} */ - @Override - public double getPlusCoefs(int i) { - return this.plusCoefs[i]; - } - - /** {@inheritDoc} */ - @Override - public void setPlusCoefs(double[] plusCoefs) { - this.plusCoefs = plusCoefs; - } - - /** {@inheritDoc} */ - @Override - public double getDensPlus() { - return densPlus; - } - - /** {@inheritDoc} */ - @Override - public void setDensPlus(double densPlus) { - this.densPlus = densPlus; - } - - /** {@inheritDoc} */ - @Override - public boolean isPseudocomponents() { - return false; - } - - /** - *

- * addPlusFraction. - *

- */ - public void addPlusFraction() {} - - /** {@inheritDoc} */ - @Override - public void addHeavyEnd() { - int old = getFirstPlusFractionNumber(); - setFirstPlusFractionNumber(length + 7); - generateTBPFractions(); - setFirstPlusFractionNumber(old); + } + + /** + *

+ * saveCharacterizedFluid. + *

+ * + * @return a boolean + */ + public boolean saveCharacterizedFluid() { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + // double boilpoint = + // system.getPhase(0).getComponent(i).getNormalBoilingPoint(); } + return true; + } + + /** + * Getter for property TBPfractions. + * + * @return Value of property TBPfractions. + */ + public double[] getTBPfractions() { + return this.TBPfractions; + } + + /** {@inheritDoc} */ + @Override + public void setCoefs(double coef, int i) { + this.coefs[i] = coef; + } + + /** + *

+ * getTBPfractions. + *

+ * + * @param i a int + * @return a double + */ + public double getTBPfractions(int i) { + return this.TBPfractions[i]; + } + + /** + * Setter for property TBPfractions. + * + * @param TBPfractions New value of property TBPfractions. + */ + public void setTBPfractions(double[] TBPfractions) { + this.TBPfractions = TBPfractions; + } + + /** {@inheritDoc} */ + @Override + public void solve() { + NewtonSolveABCD solver = new NewtonSolveABCD(system, this); + solver.solve(); + } + + /** + *

+ * solveAB. + *

+ */ + public void solveAB() { + NewtonSolveAB solver = new NewtonSolveAB(system, this); + solver.solve(); + } + + /** {@inheritDoc} */ + @Override + public void setCoefs(double[] coefs) { + this.coefs = coefs; + } + + /** + * Getter for property TBPdens. + * + * @return Value of property TBPdens. + */ + public double[] getTBPdens() { + return this.TBPdens; + } + + /** + *

+ * getTBPdens. + *

+ * + * @param i a int + * @return a double + */ + public double getTBPdens(int i) { + return this.TBPdens[i]; + } + + /** + * Setter for property TBPdens. + * + * @param TBPdens New value of property TBPdens. + */ + public void setTBPdens(double[] TBPdens) { + this.TBPdens = TBPdens; + } + + /** {@inheritDoc} */ + @Override + public int getLength() { + return length; + } + + /** + * Getter for property TBP_M. + * + * @return Value of property TBP_M. + */ + public double[] getTBP_M() { + return this.TBP_M; + } + + /** + * Setter for property TBP_M. + * + * @param TBP_M New value of property TBP_M. + */ + public void setTBP_M(double[] TBP_M) { + this.TBP_M = TBP_M; + } + + /** {@inheritDoc} */ + @Override + public int[] getCarbonNumberVector() { + return this.carbonNumberVector; + } + + /** {@inheritDoc} */ + @Override + public void setCarbonNumberVector(int[] carbonNumberVector) { + this.carbonNumberVector = carbonNumberVector; + } + + /** + * Getter for property calcTBPfractions. + * + * @return Value of property calcTBPfractions. + */ + public double[] getCalcTBPfractions() { + return this.calcTBPfractions; + } + + /** + * Setter for property calcTBPfractions. + * + * @param calcTBPfractions New value of property calcTBPfractions. + */ + public void setCalcTBPfractions(double[] calcTBPfractions) { + this.calcTBPfractions = calcTBPfractions; + } + + /** {@inheritDoc} */ + @Override + public double[] getPlusCoefs() { + return this.plusCoefs; + } + + /** {@inheritDoc} */ + @Override + public double getPlusCoefs(int i) { + return this.plusCoefs[i]; + } + + /** {@inheritDoc} */ + @Override + public void setPlusCoefs(double[] plusCoefs) { + this.plusCoefs = plusCoefs; + } + + /** {@inheritDoc} */ + @Override + public double getDensPlus() { + return densPlus; + } + + /** {@inheritDoc} */ + @Override + public void setDensPlus(double densPlus) { + this.densPlus = densPlus; + } + + /** {@inheritDoc} */ + @Override + public boolean isPseudocomponents() { + return false; + } + + /** + *

+ * addPlusFraction. + *

+ */ + public void addPlusFraction() {} + + /** {@inheritDoc} */ + @Override + public void addHeavyEnd() { + int old = getFirstPlusFractionNumber(); + setFirstPlusFractionNumber(length + 7); + generateTBPFractions(); + setFirstPlusFractionNumber(old); + } } diff --git a/src/main/java/neqsim/thermo/characterization/TBPModelInterface.java b/src/main/java/neqsim/thermo/characterization/TBPModelInterface.java index a0061a913a..2d72b887fe 100644 --- a/src/main/java/neqsim/thermo/characterization/TBPModelInterface.java +++ b/src/main/java/neqsim/thermo/characterization/TBPModelInterface.java @@ -11,143 +11,143 @@ * @version $Id: $Id */ public interface TBPModelInterface { - /** - *

- * calcTC. - *

- * - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcTC(double molarMass, double density); + /** + *

+ * calcTC. + *

+ * + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcTC(double molarMass, double density); - /** - *

- * calcPC. - *

- * - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcPC(double molarMass, double density); + /** + *

+ * calcPC. + *

+ * + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcPC(double molarMass, double density); - /** - *

- * calcm. - *

- * - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcm(double molarMass, double density); + /** + *

+ * calcm. + *

+ * + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcm(double molarMass, double density); - /** - *

- * calcTB. - *

- * - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcTB(double molarMass, double density); + /** + *

+ * calcTB. + *

+ * + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcTB(double molarMass, double density); - /** - *

- * calcAcentricFactorKeslerLee. - *

- * - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcAcentricFactorKeslerLee(double molarMass, double density); + /** + *

+ * calcAcentricFactorKeslerLee. + *

+ * + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcAcentricFactorKeslerLee(double molarMass, double density); - /** - *

- * calcAcentricFactor. - *

- * - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcAcentricFactor(double molarMass, double density); + /** + *

+ * calcAcentricFactor. + *

+ * + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcAcentricFactor(double molarMass, double density); - /** - *

- * calcRacketZ. - *

- * - * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcRacketZ(SystemInterface thermoSystem, double molarMass, double density); + /** + *

+ * calcRacketZ. + *

+ * + * @param thermoSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcRacketZ(SystemInterface thermoSystem, double molarMass, double density); - /** - *

- * calcCriticalVolume. - *

- * - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcCriticalVolume(double molarMass, double density); + /** + *

+ * calcCriticalVolume. + *

+ * + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcCriticalVolume(double molarMass, double density); - /** - *

- * calcParachorParameter. - *

- * - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcParachorParameter(double molarMass, double density); + /** + *

+ * calcParachorParameter. + *

+ * + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcParachorParameter(double molarMass, double density); - /** - *

- * calcCriticalViscosity. - *

- * - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcCriticalViscosity(double molarMass, double density); + /** + *

+ * calcCriticalViscosity. + *

+ * + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcCriticalViscosity(double molarMass, double density); - /** - *

- * isCalcm. - *

- * - * @return a boolean - */ - public boolean isCalcm(); + /** + *

+ * isCalcm. + *

+ * + * @return a boolean + */ + public boolean isCalcm(); - /** - *

- * calcWatsonCharacterizationFactor. - *

- * - * @param molarMass a double - * @param density a double - * @return a double - */ - public double calcWatsonCharacterizationFactor(double molarMass, double density); + /** + *

+ * calcWatsonCharacterizationFactor. + *

+ * + * @param molarMass a double + * @param density a double + * @return a double + */ + public double calcWatsonCharacterizationFactor(double molarMass, double density); - /** - *

- * getName. - *

- * - * @return a {@link java.lang.String} object - */ - public String getName(); + /** + *

+ * getName. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getName(); } diff --git a/src/main/java/neqsim/thermo/characterization/TBPfractionModel.java b/src/main/java/neqsim/thermo/characterization/TBPfractionModel.java index dcc6b906ae..67017cd9a1 100644 --- a/src/main/java/neqsim/thermo/characterization/TBPfractionModel.java +++ b/src/main/java/neqsim/thermo/characterization/TBPfractionModel.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; /** @@ -13,333 +14,488 @@ * @version $Id: $Id */ public class TBPfractionModel implements java.io.Serializable { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(TBPfractionModel.class); + + String name = ""; + + /** + *

+ * Constructor for TBPfractionModel. + *

+ */ + public TBPfractionModel() {} + + /** + * Base model for something. + */ + public abstract class TBPBaseModel implements TBPModelInterface, Cloneable, java.io.Serializable { private static final long serialVersionUID = 1000; - String name = ""; - static Logger logger = LogManager.getLogger(TBPfractionModel.class); - - /** - *

- * Constructor for TBPfractionModel. - *

- */ - public TBPfractionModel() {} - - public abstract class TBPBaseModel - implements TBPModelInterface, Cloneable, java.io.Serializable { - private static final long serialVersionUID = 1000; - - protected boolean calcm = true; - - @Override - public String getName() { - return name; - } - - @Override - public double calcTB(double molarMass, double density) { - return Math.pow((molarMass / 5.805e-5 * Math.pow(density, 0.9371)), 1.0 / 2.3776); - } - - @Override - public double calcWatsonCharacterizationFactor(double molarMass, double density) { - // System.out.println("boiling point " + calcTB(molarMass, density)); - return Math.pow(1.8 * calcTB(molarMass, density), 1.0 / 3.0) / density; - } - - @Override - public double calcAcentricFactorKeslerLee(double molarMass, double density) { - double TC = calcTC(molarMass, density); - double TB = calcTB(molarMass, density); - double PC = calcPC(molarMass, density); - double TBR = TB / TC; - double PBR = 1.01325 / PC; - if (TBR < 0.8) { - return (Math.log(PBR) - 5.92714 + 6.09649 / TBR + 1.28862 * Math.log(TBR) - - 0.169347 * Math.pow(TBR, 6.0)) - / (15.2518 - 15.6875 / TBR - 13.4721 * Math.log(TBR) - + 0.43577 * Math.pow(TBR, 6.0)); - } else { - double Kw = Math.pow(TB, 1.0 / 3.0) / density; - return -7.904 + 0.1352 * Kw - 0.007465 * Kw * Kw + 8.359 * TBR - + (1.408 - 0.01063 * Kw) / TBR; - } - } - - @Override - public double calcAcentricFactor(double molarMass, double density) { - double TC = calcTC(molarMass, density); - double TB = calcTB(molarMass, density); - double PC = calcPC(molarMass, density); - return 3.0 / 7.0 * Math.log10(PC / 1.01325) / (TC / TB - 1.0) - 1.0; - } - - @Override - public double calcCriticalVolume(double molarMass, double density) { - double TC = calcTC(molarMass, density); - double PC = calcPC(molarMass, density); - double acs = calcAcentricFactor(molarMass, density);// thermoSystem.getPhase(thermoSystem.getPhaseIndex(0)).getComponent(0).getAcentricFactor(); - double criticaVol = (0.2918 - 0.0928 * acs) * 8.314 * TC / PC * 10.0; - if (criticaVol < 0) { - // logger.info("acentric factor in calc critVol " + acs); - criticaVol = (0.2918 - 0.0928) * 8.314 * TC / PC * 10.0; - } - return criticaVol; - } - - @Override - public double calcParachorParameter(double molarMass, double density) { - return 59.3 + 2.34 * molarMass * 1000.0; - } - - @Override - public double calcCriticalViscosity(double molarMass, double density) { - double TC = calcTC(molarMass, density); - double PC = calcPC(molarMass, density); - return 7.94830 * Math.sqrt(molarMass) * Math.pow(PC, 2.0 / 3.0) - / Math.pow(TC, 1.0 / 6.0) * 1e-7; - } - - @Override - public boolean isCalcm() { - return calcm; - } - } - - public class PedersenTBPModelSRK extends TBPBaseModel { - private static final long serialVersionUID = 1000; - - double[][] TBPfractionCoefOil = - {{163.12, 86.052, 0.43475, -1877.4, 0.0}, {-0.13408, 2.5019, 208.46, -3987.2, 1.0}, - {0.7431, 0.0048122, 0.0096707, -3.7184e-6, 0.0}}; - double[][] TBPfractionCoefsHeavyOil = {{8.3063e2, 1.75228e1, 4.55911e-2, -1.13484e4, 0.0}, - {8.02988e-1, 1.78396, 1.56740e2, -6.96559e3, 0.25}, - {-4.7268e-2, 6.02931e-2, 1.21051, -5.76676e-3, 0}}; - double[] TPBracketcoefs = {0.29441, 0.40768}; - double[][] TBPfractionCoefs = null; - - @Override - public double calcTC(double molarMass, double density) { - // System.out.println("TC ccc " + TBPfractionCoefs[0][0]); - if (molarMass < 1120) { - TBPfractionCoefs = TBPfractionCoefOil; - } else { - TBPfractionCoefs = TBPfractionCoefsHeavyOil; - } - // System.out.println("coef " + TBPfractionCoefs[0][0]); - return TBPfractionCoefs[0][0] * density + TBPfractionCoefs[0][1] * Math.log(molarMass) - + TBPfractionCoefs[0][2] * molarMass + TBPfractionCoefs[0][3] / molarMass; - } - - @Override - public double calcPC(double molarMass, double density) { - if (molarMass < 1120) { - TBPfractionCoefs = TBPfractionCoefOil; - } else { - TBPfractionCoefs = TBPfractionCoefsHeavyOil; - } - - return 0.01325 + Math.exp(TBPfractionCoefs[1][0] - + TBPfractionCoefs[1][1] * Math.pow(density, TBPfractionCoefs[1][4]) - + TBPfractionCoefs[1][2] / molarMass - + TBPfractionCoefs[1][3] / Math.pow(molarMass, 2.0)); - } - - @Override - public double calcm(double molarMass, double density) { - if (molarMass < 1120) { - TBPfractionCoefs = TBPfractionCoefOil; - return TBPfractionCoefs[2][0] + TBPfractionCoefs[2][1] * molarMass - + TBPfractionCoefs[2][2] * density - + TBPfractionCoefs[2][3] * Math.pow(molarMass, 2.0); - } else { - TBPfractionCoefs = TBPfractionCoefsHeavyOil; - return TBPfractionCoefs[2][0] + TBPfractionCoefs[2][1] * Math.log(molarMass) - + TBPfractionCoefs[2][2] * density - + TBPfractionCoefs[2][3] * Math.sqrt(molarMass); - } - } - - @Override - public double calcTB(double molarMass, double density) { - if (molarMass < 90) { - return 273.15 + 84; - } - if (molarMass < 107) { - return 273.15 + 116.6; - } - if (molarMass < 121) { - return 273.15 + 142.2; - } - if (molarMass < 134) { - return 273.15 + 165.8; - } - if (molarMass < 147) { - return 273.15 + 187.2; - } - if (molarMass < 161) { - return 273.15 + 208.3; - } - - return 97.58 * Math.pow(molarMass, 0.3323) * Math.pow(density, 0.04609); - } - - @Override - public double calcRacketZ(SystemInterface thermoSystem, double molarMass, double density) { - double penelouxC = - (thermoSystem.getPhase(0).getMolarVolume() - molarMass / (density * 10.0)); - // System.out.println("peneloux c " + penelouxC); - double TC = calcTC(molarMass, density); - // double TB = calcTB(molarMass, density); - double PC = calcPC(molarMass, density); - return TPBracketcoefs[0] - penelouxC / (TPBracketcoefs[1] - * neqsim.thermo.ThermodynamicConstantsInterface.R * TC / PC); - } - } - - public class PedersenTBPModelSRKHeavyOil extends PedersenTBPModelSRK { - private static final long serialVersionUID = 1000; - - double[][] TBPfractionCoefsHeavyOil = {{8.3063e2, 1.75228e1, 4.55911e-2, -1.13484e4, 0.0}, - {8.02988e-1, 1.78396, 1.56740e2, -6.96559e3, 0.25}, - {-4.7268e-2, 6.02931e-2, 1.21051, -5.76676e-3, 0}}; - double[][] TBPfractionCoefOil = TBPfractionCoefsHeavyOil; - - public PedersenTBPModelSRKHeavyOil() { - TBPfractionCoefsHeavyOil = - new double[][] {{8.3063e2, 1.75228e1, 4.55911e-2, -1.13484e4, 0.0}, - {8.02988e-1, 1.78396, 1.56740e2, -6.96559e3, 0.25}, - {-4.7268e-2, 6.02931e-2, 1.21051, -5.76676e-3, 0}}; - TBPfractionCoefOil = TBPfractionCoefsHeavyOil; - } - } - - public class PedersenTBPModelPR extends PedersenTBPModelSRK { - private static final long serialVersionUID = 1000; - - public PedersenTBPModelPR() { - double[][] TBPfractionCoefOil2 = {{73.4043, 97.3562, 0.618744, -2059.32, 0.0}, - {0.0728462, 2.18811, 163.91, -4043.23, 1.0 / 4.0}, - {0.373765, 0.00549269, 0.0117934, -4.93049e-6, 0.0}}; - double[][] TBPfractionCoefHeavyOil2 = - {{9.13222e2, 1.01134e1, 4.54194e-2, -1.3587e4, 0.0}, - {1.28155, 1.26838, 1.67106e2, -8.10164e3, 0.25}, - {-2.3838e-1, 6.10147e-2, 1.32349, -6.52067e-3, 0.0}}; - double[] TPBracketcoefs2 = {0.25969, 0.50033}; - TBPfractionCoefOil = TBPfractionCoefOil2; - TBPfractionCoefsHeavyOil = TBPfractionCoefHeavyOil2; - TPBracketcoefs = TPBracketcoefs2; - } - } - - public class PedersenTBPModelPRHeavyOil extends PedersenTBPModelPR { - private static final long serialVersionUID = 1000; - - public PedersenTBPModelPRHeavyOil() { - double[][] TBPfractionCoefHeavyOil2 = - {{9.13222e2, 1.01134e1, 4.54194e-2, -1.3587e4, 0.0}, - {1.28155, 1.26838, 1.67106e2, -8.10164e3, 0.25}, - {-2.3838e-1, 6.10147e-2, 1.32349, -6.52067e-3, 0.0}}; - // double[][] TBPfractionCoefOil = TBPfractionCoefHeavyOil2; - // double[][] TBPfractionCoefsHeavyOil = TBPfractionCoefHeavyOil2; - TBPfractionCoefOil = TBPfractionCoefHeavyOil2; - TBPfractionCoefsHeavyOil = TBPfractionCoefHeavyOil2; - } - } - - public class RiaziDaubert extends PedersenTBPModelSRK { - private static final long serialVersionUID = 1000; - - public RiaziDaubert() { - calcm = false; - } - - @Override - public double calcTC(double molarMass, double density) { - // molarMass=molarMass*1e3; - if (molarMass > 300) { - return super.calcTC(molarMass, density); - } - return 5.0 / 9.0 * 554.4 - * Math.exp( - -1.3478e-4 * molarMass - 0.61641 * density + 0.0 * molarMass * density) - * Math.pow(molarMass, 0.2998) * Math.pow(density, 1.0555);// Math.pow(sig1, b) * - // Math.pow(sig2, c); - } - - @Override - public double calcPC(double molarMass, double density) { - if (molarMass > 300) { - return super.calcPC(molarMass, density); - } - return 0.068947 * 4.5203e4 - * Math.exp( - -1.8078e-3 * molarMass + -0.3084 * density + 0.0 * molarMass * density) - * Math.pow(molarMass, -0.8063) * Math.pow(density, 1.6015);// Math.pow(sig1, b) - // * Math.pow(sig2, - // c); - } - - public double calcAcentricFactor2(double molarMass, double density) { - double TC = calcTC(molarMass, density); - double TB = calcTB(molarMass, density); - double PC = calcPC(molarMass, density); - return 3.0 / 7.0 * Math.log10(PC / 1.01325) / (TC / TB - 1.0) - 1.0; - } - - @Override - public double calcTB(double molarMass, double density) { - // Soreide method (Whitson book) - return 5.0 / 9.0 - * (1928.3 - 1.695e5 * Math.pow(molarMass, -0.03522) * Math.pow(density, 3.266) - * Math.exp(-4.922e-3 * molarMass - 4.7685 * density - + 3.462e-3 * molarMass * density));// 97.58*Math.pow(molarMass,0.3323)*Math.pow(density,0.04609); - } - - @Override - public double calcAcentricFactor(double molarMass, double density) { - double TC = calcTC(molarMass, density); - double TB = calcTB(molarMass, density); - double PC = calcPC(molarMass, density); - double TBR = TB / TC; - double PBR = 1.01325 / PC; - if (TBR < 0.8) { - return (Math.log(PBR) - 5.92714 + 6.09649 / TBR + 1.28862 * Math.log(TBR) - - 0.169347 * Math.pow(TBR, 6.0)) - / (15.2518 - 15.6875 / TBR - 13.4721 * Math.log(TBR) - + 0.43577 * Math.pow(TBR, 6.0)); - } else { - double Kw = Math.pow(TB, 1.0 / 3.0) / density; - return -7.904 + 0.1352 * Kw - 0.007465 * Kw * Kw + 8.359 * TBR - + (1.408 - 0.01063 * Kw) / TBR; - } - } - } - - /** - *

- * getModel. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.thermo.characterization.TBPModelInterface} object - */ - public TBPModelInterface getModel(String name) { - this.name = name; - if (name.equals("PedersenSRK")) { - return new PedersenTBPModelSRK(); - } else if (name.equals("PedersenSRKHeavyOil")) { - logger.info("using SRK heavy oil TBp................."); - return new PedersenTBPModelSRKHeavyOil(); - } else if (name.equals("PedersenPR")) { - return new PedersenTBPModelPR(); - } else if (name.equals("PedersenPRHeavyOil")) { - logger.info("using PR heavy oil TBp................."); - return new PedersenTBPModelPRHeavyOil(); - } else if (name.equals("RiaziDaubert")) { - return new RiaziDaubert(); - } else { - // System.out.println("not a valid TBPModelName................."); - return new PedersenTBPModelSRK(); - } + + protected boolean calcm = true; + + @Override + public String getName() { + return name; + } + + @Override + public double calcTB(double molarMass, double density) { + return Math.pow((molarMass / 5.805e-5 * Math.pow(density, 0.9371)), 1.0 / 2.3776); + } + + @Override + public double calcWatsonCharacterizationFactor(double molarMass, double density) { + // System.out.println("boiling point " + calcTB(molarMass, density)); + return Math.pow(1.8 * calcTB(molarMass, density), 1.0 / 3.0) / density; + } + + @Override + public double calcAcentricFactorKeslerLee(double molarMass, double density) { + double TC = calcTC(molarMass, density); + double TB = calcTB(molarMass, density); + double PC = calcPC(molarMass, density); + double TBR = TB / TC; + double PBR = ThermodynamicConstantsInterface.referencePressure / PC; + if (TBR < 0.8) { + return (Math.log(PBR) - 5.92714 + 6.09649 / TBR + 1.28862 * Math.log(TBR) + - 0.169347 * Math.pow(TBR, 6.0)) + / (15.2518 - 15.6875 / TBR - 13.4721 * Math.log(TBR) + 0.43577 * Math.pow(TBR, 6.0)); + } else { + double Kw = Math.pow(TB, 1.0 / 3.0) / density; + return -7.904 + 0.1352 * Kw - 0.007465 * Kw * Kw + 8.359 * TBR + + (1.408 - 0.01063 * Kw) / TBR; + } + } + + @Override + public double calcAcentricFactor(double molarMass, double density) { + double TC = calcTC(molarMass, density); + double TB = calcTB(molarMass, density); + double PC = calcPC(molarMass, density); + return 3.0 / 7.0 * Math.log10(PC / ThermodynamicConstantsInterface.referencePressure) + / (TC / TB - 1.0) - 1.0; + } + + @Override + public double calcCriticalVolume(double molarMass, double density) { + double TC = calcTC(molarMass, density); + double PC = calcPC(molarMass, density); + double acs = calcAcentricFactor(molarMass, density); // thermoSystem.getPhase(thermoSystem.getPhaseIndex(0)).getComponent(0).getAcentricFactor(); + double criticaVol = + (0.2918 - 0.0928 * acs) * ThermodynamicConstantsInterface.R * TC / PC * 10.0; + if (criticaVol < 0) { + // logger.info("acentric factor in calc critVol " + acs); + criticaVol = (0.2918 - 0.0928) * ThermodynamicConstantsInterface.R * TC / PC * 10.0; + } + return criticaVol; + } + + @Override + public double calcParachorParameter(double molarMass, double density) { + return 59.3 + 2.34 * molarMass * 1000.0; + } + + @Override + public double calcCriticalViscosity(double molarMass, double density) { + double TC = calcTC(molarMass, density); + double PC = calcPC(molarMass, density); + return 7.94830 * Math.sqrt(molarMass) * Math.pow(PC, 2.0 / 3.0) / Math.pow(TC, 1.0 / 6.0) + * 1e-7; + } + + @Override + public double calcRacketZ(SystemInterface thermoSystem, double molarMass, double density) { + throw new RuntimeException("calcm() method not defined"); + } + + @Override + public double calcm(double molarMass, double density) { + throw new RuntimeException("calcm() method not defined"); + } + + @Override + public boolean isCalcm() { + return calcm; + } + } + + /** + * PedersenTBPModelSRK + */ + public class PedersenTBPModelSRK extends TBPBaseModel { + private static final long serialVersionUID = 1000; + + double[][] TBPfractionCoefOil = {{163.12, 86.052, 0.43475, -1877.4, 0.0}, + {-0.13408, 2.5019, 208.46, -3987.2, 1.0}, {0.7431, 0.0048122, 0.0096707, -3.7184e-6, 0.0}}; + double[][] TBPfractionCoefsHeavyOil = {{8.3063e2, 1.75228e1, 4.55911e-2, -1.13484e4, 0.0}, + {8.02988e-1, 1.78396, 1.56740e2, -6.96559e3, 0.25}, + {-4.7268e-2, 6.02931e-2, 1.21051, -5.76676e-3, 0}}; + double[] TPBracketcoefs = {0.29441, 0.40768}; + double[][] TBPfractionCoefs = null; + + @Override + public double calcTC(double molarMass, double density) { + // System.out.println("TC ccc " + TBPfractionCoefs[0][0]); + if (molarMass < 1120) { + TBPfractionCoefs = TBPfractionCoefOil; + } else { + TBPfractionCoefs = TBPfractionCoefsHeavyOil; + } + // System.out.println("coef " + TBPfractionCoefs[0][0]); + return TBPfractionCoefs[0][0] * density + TBPfractionCoefs[0][1] * Math.log(molarMass) + + TBPfractionCoefs[0][2] * molarMass + TBPfractionCoefs[0][3] / molarMass; + } + + @Override + public double calcPC(double molarMass, double density) { + if (molarMass < 1120) { + TBPfractionCoefs = TBPfractionCoefOil; + } else { + TBPfractionCoefs = TBPfractionCoefsHeavyOil; + } + + return Math.exp(0.01325 + TBPfractionCoefs[1][0] + + TBPfractionCoefs[1][1] * Math.pow(density, TBPfractionCoefs[1][4]) + + TBPfractionCoefs[1][2] / molarMass + TBPfractionCoefs[1][3] / Math.pow(molarMass, 2.0)); + } + + @Override + public double calcm(double molarMass, double density) { + if (molarMass < 1120) { + TBPfractionCoefs = TBPfractionCoefOil; + } else { + TBPfractionCoefs = TBPfractionCoefsHeavyOil; + } + return TBPfractionCoefs[2][0] + TBPfractionCoefs[2][1] * molarMass + + TBPfractionCoefs[2][2] * density + TBPfractionCoefs[2][3] * Math.pow(molarMass, 2.0); + } + + @Override + public double calcTB(double molarMass, double density) { + if (molarMass < 540) { + return 2E-06 * Math.pow(molarMass, 3) - 0.0035 * Math.pow(molarMass, 2) + 2.4003 * molarMass + + 171.74; + } else { + return 97.58 * Math.pow(molarMass, 0.3323) * Math.pow(density, 0.04609); + } + } + + @Override + public double calcRacketZ(SystemInterface thermoSystem, double molarMass, double density) { + double penelouxC = (thermoSystem.getPhase(0).getMolarVolume() - molarMass / (density * 10.0)); + // System.out.println("peneloux c " + penelouxC); + double TC = calcTC(molarMass, density); + // double TB = calcTB(molarMass, density); + double PC = calcPC(molarMass, density); + return TPBracketcoefs[0] - penelouxC + / (TPBracketcoefs[1] * neqsim.thermo.ThermodynamicConstantsInterface.R * TC / PC); + } + } + + public class PedersenTBPModelSRKHeavyOil extends PedersenTBPModelSRK { + private static final long serialVersionUID = 1000; + + double[][] TBPfractionCoefsHeavyOil = {{8.3063e2, 1.75228e1, 4.55911e-2, -1.13484e4, 0.0}, + {8.02988e-1, 1.78396, 1.56740e2, -6.96559e3, 0.25}, + {-4.7268e-2, 6.02931e-2, 1.21051, -5.76676e-3, 0}}; + double[][] TBPfractionCoefOil = TBPfractionCoefsHeavyOil; + + public PedersenTBPModelSRKHeavyOil() { + TBPfractionCoefsHeavyOil = new double[][] {{8.3063e2, 1.75228e1, 4.55911e-2, -1.13484e4, 0.0}, + {8.02988e-1, 1.78396, 1.56740e2, -6.96559e3, 0.25}, + {-4.7268e-2, 6.02931e-2, 1.21051, -5.76676e-3, 0}}; + TBPfractionCoefOil = TBPfractionCoefsHeavyOil; + } + } + + public class PedersenTBPModelPR extends PedersenTBPModelSRK { + private static final long serialVersionUID = 1000; + + public PedersenTBPModelPR() { + double[][] TBPfractionCoefOil2 = {{73.4043, 97.3562, 0.618744, -2059.32, 0.0}, + {0.0728462, 2.18811, 163.91, -4043.23, 1.0 / 4.0}, + {0.373765, 0.00549269, 0.0117934, -4.93049e-6, 0.0}}; + double[][] TBPfractionCoefHeavyOil2 = {{9.13222e2, 1.01134e1, 4.54194e-2, -1.3587e4, 0.0}, + {1.28155, 1.26838, 1.67106e2, -8.10164e3, 0.25}, + {-2.3838e-1, 6.10147e-2, 1.32349, -6.52067e-3, 0.0}}; + double[] TPBracketcoefs2 = {0.25969, 0.50033}; + TBPfractionCoefOil = TBPfractionCoefOil2; + TBPfractionCoefsHeavyOil = TBPfractionCoefHeavyOil2; + TPBracketcoefs = TPBracketcoefs2; + } + } + + public class PedersenTBPModelPRHeavyOil extends PedersenTBPModelPR { + private static final long serialVersionUID = 1000; + + public PedersenTBPModelPRHeavyOil() { + double[][] TBPfractionCoefHeavyOil2 = {{9.13222e2, 1.01134e1, 4.54194e-2, -1.3587e4, 0.0}, + {1.28155, 1.26838, 1.67106e2, -8.10164e3, 0.25}, + {-2.3838e-1, 6.10147e-2, 1.32349, -6.52067e-3, 0.0}}; + // double[][] TBPfractionCoefOil = TBPfractionCoefHeavyOil2; + // double[][] TBPfractionCoefsHeavyOil = TBPfractionCoefHeavyOil2; + TBPfractionCoefOil = TBPfractionCoefHeavyOil2; + TBPfractionCoefsHeavyOil = TBPfractionCoefHeavyOil2; + } + } + + public class RiaziDaubert extends PedersenTBPModelSRK { + private static final long serialVersionUID = 1000; + + public RiaziDaubert() { + calcm = false; + } + + @Override + public double calcTC(double molarMass, double density) { + // molarMass=molarMass*1e3; + if (molarMass > 300) { + return super.calcTC(molarMass, density); + } + return 5.0 / 9.0 * 554.4 + * Math.exp(-1.3478e-4 * molarMass - 0.61641 * density + 0.0 * molarMass * density) + * Math.pow(molarMass, 0.2998) * Math.pow(density, 1.0555); // Math.pow(sig1, b) * + // Math.pow(sig2, c); + } + + @Override + public double calcPC(double molarMass, double density) { + if (molarMass > 300) { + return super.calcPC(molarMass, density); + } + return 0.068947 * 4.5203e4 + * Math.exp(-1.8078e-3 * molarMass + -0.3084 * density + 0.0 * molarMass * density) + * Math.pow(molarMass, -0.8063) * Math.pow(density, 1.6015); // Math.pow(sig1, b) + // * Math.pow(sig2, + // c); + } + + public double calcAcentricFactor2(double molarMass, double density) { + double TC = calcTC(molarMass, density); + double TB = calcTB(molarMass, density); + double PC = calcPC(molarMass, density); + return 3.0 / 7.0 * Math.log10(PC / ThermodynamicConstantsInterface.referencePressure) + / (TC / TB - 1.0) - 1.0; + } + + @Override + public double calcTB(double molarMass, double density) { + // Soreide method (Whitson book) + return 5.0 / 9.0 * (1928.3 - 1.695e5 * Math.pow(molarMass, -0.03522) + * Math.pow(density, 3.266) + * Math.exp(-4.922e-3 * molarMass - 4.7685 * density + 3.462e-3 * molarMass * density)); // 97.58*Math.pow(molarMass,0.3323)*Math.pow(density,0.04609); + } + + @Override + public double calcAcentricFactor(double molarMass, double density) { + double TC = calcTC(molarMass, density); + double TB = calcTB(molarMass, density); + double PC = calcPC(molarMass, density); + double TBR = TB / TC; + double PBR = ThermodynamicConstantsInterface.referencePressure / PC; + if (TBR < 0.8) { + return (Math.log(PBR) - 5.92714 + 6.09649 / TBR + 1.28862 * Math.log(TBR) + - 0.169347 * Math.pow(TBR, 6.0)) + / (15.2518 - 15.6875 / TBR - 13.4721 * Math.log(TBR) + 0.43577 * Math.pow(TBR, 6.0)); + } else { + double Kw = Math.pow(TB, 1.0 / 3.0) / density; + return -7.904 + 0.1352 * Kw - 0.007465 * Kw * Kw + 8.359 * TBR + + (1.408 - 0.01063 * Kw) / TBR; + } + } + } + + /** + * Lee-Kesler property estimation method + */ + public class LeeKesler extends TBPBaseModel { + private static final long serialVersionUID = 1000; + + public LeeKesler() { + calcm = false; + } + + @Override + public double calcTC(double molarMass, double density) { + double sg = density; + double TB = calcTB(molarMass, density); + double TC = + 189.8 + 450.6 * sg + (0.4244 + 0.1174 * sg) * TB + (0.1441 - 1.0069 * sg) * 1e5 / TB; + return TC; + } + + @Override + public double calcPC(double molarMass, double density) { + double sg = density; + double TB = calcTB(molarMass, density); + double logpc = + 3.3864 - 0.0566 / sg - ((0.43639 + 4.1216 / sg + 0.21343 / sg / sg) * 1e-3 * TB) + + ((0.47579 + 1.182 / sg + 0.15302 / sg / sg) * 1e-6 * TB * TB) + - ((2.4505 + 9.9099 / sg / sg) * 1e-10 * TB * TB * TB); + double PC = Math.exp(logpc) * 10; + return PC; + } + + public double calcAcentricFactor(double molarMass, double density) { + return super.calcAcentricFactorKeslerLee(molarMass, density); + } + } + + /** + * Two property estimation method + */ + public class TwuModel extends TBPBaseModel { + private static final long serialVersionUID = 1000; + + public TwuModel() { + calcm = false; + } + + @Override + public double calcTC(double molarMass, double density) { + double sg = density; + double TB = calcTB(molarMass, density); + double MW = solveMW(TB); + double Tcnalkane = TB * 1.0 / (0.533272 + 0.343831e-3 * TB + 2.526167e-7 * TB * TB + - 1.65848e-10 * TB * TB * TB + 4.60774e24 * Math.pow(TB, -13)); + double phi = 1.0 - TB / Tcnalkane; + double SGalkane = + 0.843593 - 0.128624 * phi - 3.36159 * Math.pow(phi, 3) - 13749 * Math.pow(phi, 12); + double PCnalkane = Math.pow(0.318317 + 0.099334 * Math.sqrt(phi) + 2.89698 * phi + + 3.0054 * phi * phi + 8.65163 * Math.pow(phi, 4), 2); + double VCnalkane = Math.pow( + (0.82055 + 0.715468 * phi + 2.21266 * phi * phi * phi + 13411.1 * Math.pow(phi, 14)), -8); + double deltaST = Math.exp(5.0 * (SGalkane - sg)) - 1.0; + double fT = deltaST * (-0.270159 * Math.pow(TB, -0.5) + + (0.0398285 - 0.706691 * Math.pow(TB, -0.5) * deltaST)); + double TC = Tcnalkane * Math.pow(((1 + 2 * fT) / (1 - 2 * fT)), 2); + return TC; + } + + public double calculateTfunc(double MW_alkane, double TB) { + double phi = Math.log(MW_alkane); + return Math + .exp(5.1264 + 2.71579 * phi - 0.28659 * phi * phi - 39.8544 / phi - 0.122488 / phi / phi) + - 13.7512 * phi + 19.6197 * phi * phi - TB; + } + + public double computeGradient(double MW_alkane, double TB) { + double delta = 1; + double TfuncPlus = calculateTfunc(MW_alkane + delta, TB); + double TfuncMinus = calculateTfunc(MW_alkane - delta, TB); + return (TfuncPlus - TfuncMinus) / (2 * delta); + } + + public double solveMW(double TB) { + double MW_alkane = TB / (5.8 - 0.0052 * TB); + double tolerance = 1e-6; + double prevMW_alkane; + double error = 1.0; + int iter = 0; + + do { + iter++; + prevMW_alkane = MW_alkane; + double gradient = computeGradient(MW_alkane, TB); + MW_alkane -= 0.5 * calculateTfunc(MW_alkane, TB) / gradient; + error = Math.abs(MW_alkane - prevMW_alkane); + } while (Math.abs(error) > tolerance && iter < 1000 || iter < 3); + + return MW_alkane; + } + + @Override + public double calcPC(double molarMass, double density) { + double sg = density; + double TB = calcTB(molarMass, density); + double MW = solveMW(TB); + double Tcnalkane = TB * 1.0 / (0.533272 + 0.343831e-3 * TB + 2.526167e-7 * TB * TB + - 1.65848e-10 * TB * TB * TB + 4.60774e24 * Math.pow(TB, -13)); + double phi = 1.0 - TB / Tcnalkane; + double SGalkane = + 0.843593 - 0.128624 * phi - 3.36159 * Math.pow(phi, 3) - 13749 * Math.pow(phi, 12); + double PCnalkane = Math.pow(0.318317 + 0.099334 * Math.sqrt(phi) + 2.89698 * phi + + 3.0054 * phi * phi + 8.65163 * Math.pow(phi, 4), 2); + double VCnalkane = Math.pow( + (0.82055 + 0.715468 * phi + 2.21266 * phi * phi * phi + 13411.1 * Math.pow(phi, 14)), -8); + double deltaST = Math.exp(5.0 * (SGalkane - sg)) - 1.0; + double fT = deltaST * (-0.270159 * Math.pow(TB, -0.5) + + (0.0398285 - 0.706691 * Math.pow(TB, -0.5) * deltaST)); + double TC = Tcnalkane * Math.pow(((1 + 2 * fT) / (1 - 2 * fT)), 2); + double deltaSP = Math.exp(0.5 * (SGalkane - sg)) - 1.0; + double deltaSV = Math.exp(4.0 * (SGalkane * SGalkane - sg * sg)) - 1.0; + double fV = deltaSV + * (0.347776 * Math.pow(TB, -0.5) + (-0.182421 + 2.24890 * Math.pow(TB, -0.5)) * deltaSV); + double VC = VCnalkane * Math.pow(((1 + 2 * fV) / (1 - 2 * fV)), 2); + double fP = deltaSP * ((2.53262 - 34.4321 * Math.pow(TB, -0.5) - 0.00230193 * TB) + + (-11.4277 + 187.934 * Math.pow(TB, -0.5) + 0.00414963 * TB) * deltaSP); + double PC = PCnalkane * (TC / Tcnalkane) * (VCnalkane / VC) + * Math.pow(((1 + 2 * fP) / (1 - 2 * fP)), 2); + return PC * 10.0; // * 10 due to conversion MPa to bar + } + + @Override + public double calcCriticalVolume(double molarMass, double density) { + double sg = density; + double TB = calcTB(molarMass, density); + double MW = solveMW(TB); + double Tcnalkane = TB * 1.0 / (0.533272 + 0.343831e-3 * TB + 2.526167e-7 * TB * TB + - 1.65848e-10 * TB * TB * TB + 4.60774e24 * Math.pow(TB, -13)); + double phi = 1.0 - TB / Tcnalkane; + double SGalkane = + 0.843593 - 0.128624 * phi - 3.36159 * Math.pow(phi, 3) - 13749 * Math.pow(phi, 12); + double PCnalkane = Math.pow(0.318317 + 0.099334 * Math.sqrt(phi) + 2.89698 * phi + + 3.0054 * phi * phi + 8.65163 * Math.pow(phi, 4), 2); + double VCnalkane = Math.pow( + (0.82055 + 0.715468 * phi + 2.21266 * phi * phi * phi + 13411.1 * Math.pow(phi, 14)), -8); + double deltaST = Math.exp(5.0 * (SGalkane - sg)) - 1.0; + double fT = deltaST * (-0.270159 * Math.pow(TB, -0.5) + + (0.0398285 - 0.706691 * Math.pow(TB, -0.5) * deltaST)); + double TC = Tcnalkane * Math.pow(((1 + 2 * fT) / (1 - 2 * fT)), 2); + double deltaSP = Math.exp(0.5 * (SGalkane - sg)) - 1.0; + double deltaSV = Math.exp(4.0 * (SGalkane * SGalkane - sg * sg)) - 1.0; + double fV = deltaSV + * (0.347776 * Math.pow(TB, -0.5) + (-0.182421 + 2.24890 * Math.pow(TB, -0.5)) * deltaSV); + double VC = VCnalkane * Math.pow(((1 + 2 * fV) / (1 - 2 * fV)), 2); + double fP = deltaSP * ((2.53262 - 34.4321 * Math.pow(TB, -0.5) - 0.00230193 * TB) + + (-11.4277 + 187.934 * Math.pow(TB, -0.5) + 0.00414963 * TB) * deltaSP); + double PC = PCnalkane * (TC / Tcnalkane) * (VCnalkane / VC) + * Math.pow(((1 + 2 * fP) / (1 - 2 * fP)), 2); + return VC * 1e3; // m3/mol + } + + } + + /** + *

+ * getModel. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.thermo.characterization.TBPModelInterface} object + */ + public TBPModelInterface getModel(String name) { + this.name = name; + if (name.equals("PedersenSRK")) { + return new PedersenTBPModelSRK(); + } else if (name.equals("PedersenSRKHeavyOil")) { + logger.info("using SRK heavy oil TBp................."); + return new PedersenTBPModelSRKHeavyOil(); + } else if (name.equals("PedersenPR")) { + return new PedersenTBPModelPR(); + } else if (name.equals("PedersenPRHeavyOil")) { + logger.info("using PR heavy oil TBp................."); + return new PedersenTBPModelPRHeavyOil(); + } else if (name.equals("RiaziDaubert")) { + return new RiaziDaubert(); + } else if (name.equals("Lee-Kesler")) { + return new LeeKesler(); + } else if (name.equals("Twu")) { + return new TwuModel(); + } else { + // System.out.println("not a valid TBPModelName................."); + return new PedersenTBPModelSRK(); } + } } diff --git a/src/main/java/neqsim/thermo/characterization/WaxCharacterise.java b/src/main/java/neqsim/thermo/characterization/WaxCharacterise.java index d7d098f030..bad3849f61 100644 --- a/src/main/java/neqsim/thermo/characterization/WaxCharacterise.java +++ b/src/main/java/neqsim/thermo/characterization/WaxCharacterise.java @@ -13,301 +13,292 @@ * @version $Id: $Id */ public class WaxCharacterise implements java.io.Serializable, Cloneable { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(WaxCharacterise.class); + + SystemInterface thermoSystem = null; + String name = ""; + protected WaxModelInterface model = new PedersenWaxModel(); + + /** + *

+ * Constructor for WaxCharacterise. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public WaxCharacterise(SystemInterface system) { + thermoSystem = system; + } + + /** {@inheritDoc} */ + @Override + public WaxCharacterise clone() { + WaxCharacterise clonedSystem = null; + try { + clonedSystem = (WaxCharacterise) super.clone(); + clonedSystem.model = model.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + return clonedSystem; + } + + public abstract class WaxBaseModel implements WaxModelInterface { private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(WaxCharacterise.class); - SystemInterface thermoSystem = null; - String name = ""; - protected WaxModelInterface model = new PedersenWaxModel(); - /** - *

- * Constructor for WaxCharacterise. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public WaxCharacterise(SystemInterface system) { - thermoSystem = system; - } + double[] parameterWax = new double[3]; + double[] parameterWaxHeatOfFusion = new double[1]; + double[] parameterWaxTriplePointTemperature = new double[1]; - /** {@inheritDoc} */ @Override - public WaxCharacterise clone() { - WaxCharacterise clonedSystem = null; - try { - clonedSystem = (WaxCharacterise) super.clone(); - clonedSystem.model = model.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return clonedSystem; + public WaxBaseModel clone() { + WaxBaseModel clonedSystem = null; + try { + clonedSystem = (WaxBaseModel) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + return clonedSystem; } - public abstract class WaxBaseModel implements WaxModelInterface { - private static final long serialVersionUID = 1000; - - double[] parameterWax = new double[3]; - double[] parameterWaxHeatOfFusion = new double[1]; - double[] parameterWaxTriplePointTemperature = new double[1]; - - @Override - public WaxBaseModel clone() { - WaxBaseModel clonedSystem = null; - try { - clonedSystem = (WaxBaseModel) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return clonedSystem; - } - - @Override - public void addTBPWax() {} - - @Override - public void setWaxParameters(double[] parameters) { - parameterWax = parameters; - } - - @Override - public void setWaxParameter(int i, double parameters) { - parameterWax[i] = parameters; - } + @Override + public void addTBPWax() {} - @Override - public void setParameterWaxHeatOfFusion(int i, double parameters) { - parameterWaxHeatOfFusion[i] = parameters; - } + @Override + public void setWaxParameters(double[] parameters) { + parameterWax = parameters; + } - @Override - public void setParameterWaxTriplePointTemperature(int i, double parameters) { - parameterWaxTriplePointTemperature[i] = parameters; - } + @Override + public void setWaxParameter(int i, double parameters) { + parameterWax[i] = parameters; + } - @Override - public double[] getWaxParameters() { - return parameterWax; - } + @Override + public void setParameterWaxHeatOfFusion(int i, double parameters) { + parameterWaxHeatOfFusion[i] = parameters; + } - /** - * @return the parameterWaxHeatOfFusion - */ - @Override - public double[] getParameterWaxHeatOfFusion() { - return parameterWaxHeatOfFusion; - } + @Override + public void setParameterWaxTriplePointTemperature(int i, double parameters) { + parameterWaxTriplePointTemperature[i] = parameters; + } - /** - * @param parameterWaxHeatOfFusion the parameterWaxHeatOfFusion to set - */ - @Override - public void setParameterWaxHeatOfFusion(double[] parameterWaxHeatOfFusion) { - this.parameterWaxHeatOfFusion = parameterWaxHeatOfFusion; - } + @Override + public double[] getWaxParameters() { + return parameterWax; + } - /** - * @return the parameterWaxTriplePointTemperature - */ - @Override - public double[] getParameterWaxTriplePointTemperature() { - return parameterWaxTriplePointTemperature; - } + /** + * @return the parameterWaxHeatOfFusion + */ + @Override + public double[] getParameterWaxHeatOfFusion() { + return parameterWaxHeatOfFusion; + } - /** - * @param parameterWaxTriplePointTemperature the parameterWaxTriplePointTemperature to set - */ - @Override - public void setParameterWaxTriplePointTemperature( - double[] parameterWaxTriplePointTemperature) { - this.parameterWaxTriplePointTemperature = parameterWaxTriplePointTemperature; - } + /** + * @param parameterWaxHeatOfFusion the parameterWaxHeatOfFusion to set + */ + @Override + public void setParameterWaxHeatOfFusion(double[] parameterWaxHeatOfFusion) { + this.parameterWaxHeatOfFusion = parameterWaxHeatOfFusion; } - public class PedersenWaxModel extends WaxBaseModel { - private static final long serialVersionUID = 1000; + /** + * @return the parameterWaxTriplePointTemperature + */ + @Override + public double[] getParameterWaxTriplePointTemperature() { + return parameterWaxTriplePointTemperature; + } - public PedersenWaxModel() { - parameterWax[0] = 1.074; - parameterWax[1] = 6.584e-6; - parameterWax[2] = 0.1915; + /** + * @param parameterWaxTriplePointTemperature the parameterWaxTriplePointTemperature to set + */ + @Override + public void setParameterWaxTriplePointTemperature(double[] parameterWaxTriplePointTemperature) { + this.parameterWaxTriplePointTemperature = parameterWaxTriplePointTemperature; + } + } - parameterWaxHeatOfFusion[0] = 1.0; - parameterWaxTriplePointTemperature[0] = 1.0; - } + public class PedersenWaxModel extends WaxBaseModel { + private static final long serialVersionUID = 1000; - public double calcTriplePointTemperature(int componentNumber) { - return parameterWaxTriplePointTemperature[0] * (374.5 + (0.02617 - * (thermoSystem.getPhase(0).getComponent(componentNumber).getMolarMass() - * 1000.0) - - 20172.0 - / (thermoSystem.getPhase(0).getComponent(componentNumber).getMolarMass() - * 1000.0))); - } + public PedersenWaxModel() { + parameterWax[0] = 1.074; + parameterWax[1] = 6.584e-6; + parameterWax[2] = 0.1915; - public double calcHeatOfFusion(int componentNumber) { - return getParameterWaxHeatOfFusion()[0] * 0.1426 / 0.238845 - * thermoSystem.getPhase(0).getComponent(componentNumber).getMolarMass() * 1000.0 - * thermoSystem.getPhase(0).getComponent(componentNumber) - .getTriplePointTemperature(); - } + parameterWaxHeatOfFusion[0] = 1.0; + parameterWaxTriplePointTemperature[0] = 1.0; + } - public double calcParaffinDensity(int componentNumber) { - return 0.3915 + 0.0675 * Math.log( - thermoSystem.getPhase(0).getComponent(componentNumber).getMolarMass() * 1000.0); - } + public double calcTriplePointTemperature(int componentNumber) { + return parameterWaxTriplePointTemperature[0] * (374.5 + (0.02617 + * (thermoSystem.getPhase(0).getComponent(componentNumber).getMolarMass() * 1000.0) + - 20172.0 + / (thermoSystem.getPhase(0).getComponent(componentNumber).getMolarMass() * 1000.0))); + } - public double calcPCwax(int componentNumber, String normalComponent) { - return thermoSystem.getPhase(0).getComponent(normalComponent).getPC() - * Math.pow(calcParaffinDensity(componentNumber) / thermoSystem.getPhase(0) - .getComponent(normalComponent).getNormalLiquidDensity(), 3.46); - } + public double calcHeatOfFusion(int componentNumber) { + return getParameterWaxHeatOfFusion()[0] * 0.1426 / 0.238845 + * thermoSystem.getPhase(0).getComponent(componentNumber).getMolarMass() * 1000.0 + * thermoSystem.getPhase(0).getComponent(componentNumber).getTriplePointTemperature(); + } - @Override - public void addTBPWax() { - int numberOfCOmponents = thermoSystem.getPhase(0).getNumberOfComponents(); - boolean hasWax = false; - for (int i = 0; i < numberOfCOmponents; i++) { - if (thermoSystem.getPhase(0).getComponent(i).getName().startsWith("wax")) { - hasWax = true; - } - } - - for (int i = 0; i < numberOfCOmponents; i++) { - if (hasWax - && thermoSystem.getPhase(0).getComponent(i).getName().startsWith("wax")) { - double A = parameterWax[0], B = parameterWax[1], C = parameterWax[2]; - String compName = - thermoSystem.getPhase(0).getComponent(i).getName().substring(3); - - double densityLocal = calcParaffinDensity(i); - - double molesChange = thermoSystem.getPhase(0).getComponent(compName) - .getNumberOfmoles() - * (1.0 - (A + B - * thermoSystem.getPhase(0).getComponent(compName).getMolarMass() - * 1000.0) - * Math.pow((thermoSystem.getPhase(0).getComponent(compName) - .getNormalLiquidDensity() - densityLocal) - / densityLocal, C)); - - if (molesChange < 0) { - molesChange = 0.0; - } - - thermoSystem.addComponent(compName, -molesChange); - thermoSystem.addComponent(thermoSystem.getPhase(0).getComponent(i).getName(), - molesChange); - for (int k = 0; k < thermoSystem.getNumberOfPhases(); k++) { - thermoSystem.getPhase(k).getComponent(i).setWaxFormer(true); - thermoSystem.getPhase(k).getComponent(i) - .setHeatOfFusion(calcHeatOfFusion(i)); - thermoSystem.getPhase(k).getComponent(i) - .setTriplePointTemperature(calcTriplePointTemperature(i)); - } - } else if (!hasWax && (thermoSystem.getPhase(0).getComponent(i).isIsTBPfraction() - || thermoSystem.getPhase(0).getComponent(i).isIsPlusFraction())) { - // double A = 1.074, B = 6.584e-4, C = 0.1915; - double A = parameterWax[0], B = parameterWax[1], C = parameterWax[2]; - - double densityLocal = calcParaffinDensity(i); - double molesChange = - thermoSystem.getPhase(0).getComponent(i).getNumberOfmoles() * (1.0 - (A - + B * thermoSystem.getPhase(0).getComponent(i).getMolarMass() - * 1000.0) - * Math.pow((thermoSystem.getPhase(0).getComponent(i) - .getNormalLiquidDensity() - densityLocal) - / densityLocal, C)); - // if(molesChange<0) molesChange=0.0; - // System.out.println("moles change " + molesChange); - thermoSystem.addComponent( - thermoSystem.getPhase(0).getComponent(i).getComponentName(), - -molesChange); - thermoSystem.addTBPfraction( - "wax" + thermoSystem.getPhase(0).getComponent(i).getComponentName(), - molesChange, thermoSystem.getPhase(0).getComponent(i).getMolarMass(), - thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity()); - - int cNumb = thermoSystem.getPhase(0).getNumberOfComponents() - 1; - double waxPC = calcPCwax(cNumb, - thermoSystem.getPhase(0).getComponent(i).getComponentName()); - - for (int k = 0; k < thermoSystem.getNumberOfPhases(); k++) { - thermoSystem.getPhase(k).getComponent(cNumb).setWaxFormer(true); - thermoSystem.getPhase(k).getComponent(cNumb) - .setHeatOfFusion(calcHeatOfFusion(cNumb)); - thermoSystem.getPhase(k).getComponent(cNumb) - .setTriplePointTemperature(calcTriplePointTemperature(cNumb)); - thermoSystem.getPhase(k).getComponent(cNumb).setPC(waxPC); - } - } - } - } + public double calcParaffinDensity(int componentNumber) { + return 0.3915 + 0.0675 * Math + .log(thermoSystem.getPhase(0).getComponent(componentNumber).getMolarMass() * 1000.0); + } - @Override - public void removeWax() { - for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { - if (thermoSystem.getPhase(0).getComponent(i).getName().startsWith("wax")) { - String compName = - thermoSystem.getPhase(0).getComponent(i).getName().substring(3); - double moles = thermoSystem.getPhase(0).getComponent(i).getNumberOfmoles(); - thermoSystem.addComponent( - thermoSystem.getPhase(0).getComponent(i).getComponentName(), -moles); - thermoSystem.addComponent(compName, moles); - } - } - } + public double calcPCwax(int componentNumber, String normalComponent) { + return thermoSystem.getPhase(0).getComponent(normalComponent).getPC() * Math.pow( + calcParaffinDensity(componentNumber) + / thermoSystem.getPhase(0).getComponent(normalComponent).getNormalLiquidDensity(), + 3.46); } - /** - *

- * Getter for the field model. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.thermo.characterization.WaxModelInterface} object - */ - public WaxModelInterface getModel(String name) { - this.name = name; - if (name.equals("PedersenWax")) { - return new PedersenWaxModel(); + @Override + public void addTBPWax() { + int numberOfCOmponents = thermoSystem.getPhase(0).getNumberOfComponents(); + boolean hasWax = false; + for (int i = 0; i < numberOfCOmponents; i++) { + if (thermoSystem.getPhase(0).getComponent(i).getName().startsWith("wax")) { + hasWax = true; } - return new PedersenWaxModel(); + } + + for (int i = 0; i < numberOfCOmponents; i++) { + if (hasWax && thermoSystem.getPhase(0).getComponent(i).getName().startsWith("wax")) { + double A = parameterWax[0]; + double B = parameterWax[1]; + double C = parameterWax[2]; + String compName = thermoSystem.getPhase(0).getComponent(i).getName().substring(3); + + double densityLocal = calcParaffinDensity(i); + + double molesChange = + thermoSystem.getPhase(0).getComponent(compName).getNumberOfmoles() * (1.0 - (A + + B * thermoSystem.getPhase(0).getComponent(compName).getMolarMass() * 1000.0) + * Math + .pow((thermoSystem.getPhase(0).getComponent(compName).getNormalLiquidDensity() + - densityLocal) / densityLocal, C)); + + if (molesChange < 0) { + molesChange = 0.0; + } + + thermoSystem.addComponent(compName, -molesChange); + thermoSystem.addComponent(thermoSystem.getPhase(0).getComponent(i).getName(), + molesChange); + for (int k = 0; k < thermoSystem.getNumberOfPhases(); k++) { + thermoSystem.getPhase(k).getComponent(i).setWaxFormer(true); + thermoSystem.getPhase(k).getComponent(i).setHeatOfFusion(calcHeatOfFusion(i)); + thermoSystem.getPhase(k).getComponent(i) + .setTriplePointTemperature(calcTriplePointTemperature(i)); + } + } else if (!hasWax && (thermoSystem.getPhase(0).getComponent(i).isIsTBPfraction() + || thermoSystem.getPhase(0).getComponent(i).isIsPlusFraction())) { + // double A = 1.074, B = 6.584e-4, C = 0.1915; + double A = parameterWax[0]; + + double B = parameterWax[1]; + double C = parameterWax[2]; + double densityLocal = calcParaffinDensity(i); + double molesChange = thermoSystem.getPhase(0).getComponent(i).getNumberOfmoles() + * (1.0 - (A + B * thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000.0) + * Math.pow((thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity() + - densityLocal) / densityLocal, C)); + // if(molesChange<0) molesChange=0.0; + // System.out.println("moles change " + molesChange); + thermoSystem.addComponent(thermoSystem.getPhase(0).getComponent(i).getComponentName(), + -molesChange); + thermoSystem.addTBPfraction( + "wax" + thermoSystem.getPhase(0).getComponent(i).getComponentName(), molesChange, + thermoSystem.getPhase(0).getComponent(i).getMolarMass(), + thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity()); + + int cNumb = thermoSystem.getPhase(0).getNumberOfComponents() - 1; + double waxPC = + calcPCwax(cNumb, thermoSystem.getPhase(0).getComponent(i).getComponentName()); + + for (int k = 0; k < thermoSystem.getNumberOfPhases(); k++) { + thermoSystem.getPhase(k).getComponent(cNumb).setWaxFormer(true); + thermoSystem.getPhase(k).getComponent(cNumb).setHeatOfFusion(calcHeatOfFusion(cNumb)); + thermoSystem.getPhase(k).getComponent(cNumb) + .setTriplePointTemperature(calcTriplePointTemperature(cNumb)); + thermoSystem.getPhase(k).getComponent(cNumb).setPC(waxPC); + } + } + } } - /** - *

- * Setter for the field model. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setModel(String name) { - this.name = name; - if (name.equals("PedersenWax")) { - model = new PedersenWaxModel(); + @Override + public void removeWax() { + for (int i = 0; i < thermoSystem.getPhase(0).getNumberOfComponents(); i++) { + if (thermoSystem.getPhase(0).getComponent(i).getName().startsWith("wax")) { + String compName = thermoSystem.getPhase(0).getComponent(i).getName().substring(3); + double moles = thermoSystem.getPhase(0).getComponent(i).getNumberOfmoles(); + thermoSystem.addComponent(thermoSystem.getPhase(0).getComponent(i).getComponentName(), + -moles); + thermoSystem.addComponent(compName, moles); } - model = new PedersenWaxModel(); + } } - - /** - *

- * Getter for the field model. - *

- * - * @return a {@link neqsim.thermo.characterization.WaxModelInterface} object - */ - public WaxModelInterface getModel() { - return model; + } + + /** + *

+ * Getter for the field model. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link neqsim.thermo.characterization.WaxModelInterface} object + */ + public WaxModelInterface getModel(String name) { + this.name = name; + if (name.equals("PedersenWax")) { + return new PedersenWaxModel(); } - - /** - *

- * setModelName. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setModelName(String name) { - this.name = name; + return new PedersenWaxModel(); + } + + /** + *

+ * Setter for the field model. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setModel(String name) { + this.name = name; + if (name.equals("PedersenWax")) { + model = new PedersenWaxModel(); } + model = new PedersenWaxModel(); + } + + /** + *

+ * Getter for the field model. + *

+ * + * @return a {@link neqsim.thermo.characterization.WaxModelInterface} object + */ + public WaxModelInterface getModel() { + return model; + } + + /** + *

+ * setModelName. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setModelName(String name) { + this.name = name; + } } diff --git a/src/main/java/neqsim/thermo/characterization/WaxModelInterface.java b/src/main/java/neqsim/thermo/characterization/WaxModelInterface.java index 36fc1e21ff..5775e008db 100644 --- a/src/main/java/neqsim/thermo/characterization/WaxModelInterface.java +++ b/src/main/java/neqsim/thermo/characterization/WaxModelInterface.java @@ -9,110 +9,110 @@ * @version $Id: $Id */ public interface WaxModelInterface extends java.io.Serializable, Cloneable { - /** - *

- * addTBPWax. - *

- */ - public void addTBPWax(); + /** + *

+ * addTBPWax. + *

+ */ + public void addTBPWax(); - /** - *

- * clone. - *

- * - * @return a {@link neqsim.thermo.characterization.WaxModelInterface} object - */ - public WaxModelInterface clone(); + /** + *

+ * clone. + *

+ * + * @return a {@link neqsim.thermo.characterization.WaxModelInterface} object + */ + public WaxModelInterface clone(); - /** - *

- * setWaxParameters. - *

- * - * @param parameters an array of {@link double} objects - */ - public void setWaxParameters(double[] parameters); + /** + *

+ * setWaxParameters. + *

+ * + * @param parameters an array of type double + */ + public void setWaxParameters(double[] parameters); - /** - *

- * getWaxParameters. - *

- * - * @return an array of {@link double} objects - */ - public double[] getWaxParameters(); + /** + *

+ * getWaxParameters. + *

+ * + * @return an array of type double + */ + public double[] getWaxParameters(); - /** - *

- * setWaxParameter. - *

- * - * @param i a int - * @param parameters a double - */ - public void setWaxParameter(int i, double parameters); + /** + *

+ * setWaxParameter. + *

+ * + * @param i a int + * @param parameters a double + */ + public void setWaxParameter(int i, double parameters); - /** - *

- * setParameterWaxHeatOfFusion. - *

- * - * @param i a int - * @param parameters a double - */ - public void setParameterWaxHeatOfFusion(int i, double parameters); + /** + *

+ * setParameterWaxHeatOfFusion. + *

+ * + * @param i a int + * @param parameters a double + */ + public void setParameterWaxHeatOfFusion(int i, double parameters); - /** - *

- * removeWax. - *

- */ - public void removeWax(); + /** + *

+ * setParameterWaxHeatOfFusion. + *

+ * + * @param parameterWaxHeatOfFusion an array of type double + */ + public void setParameterWaxHeatOfFusion(double[] parameterWaxHeatOfFusion); - /** - *

- * getParameterWaxHeatOfFusion. - *

- * - * @return an array of {@link double} objects - */ - public double[] getParameterWaxHeatOfFusion(); + /** + *

+ * removeWax. + *

+ */ + public void removeWax(); - /** - *

- * setParameterWaxHeatOfFusion. - *

- * - * @param parameterWaxHeatOfFusion an array of {@link double} objects - */ - public void setParameterWaxHeatOfFusion(double[] parameterWaxHeatOfFusion); + /** + *

+ * getParameterWaxHeatOfFusion. + *

+ * + * @return an array of type double + */ + public double[] getParameterWaxHeatOfFusion(); - /** - *

- * getParameterWaxTriplePointTemperature. - *

- * - * @return an array of {@link double} objects - */ - public double[] getParameterWaxTriplePointTemperature(); + /** + *

+ * getParameterWaxTriplePointTemperature. + *

+ * + * @return an array of type double + */ + public double[] getParameterWaxTriplePointTemperature(); - /** - *

- * setParameterWaxTriplePointTemperature. - *

- * - * @param parameterWaxTriplePointTemperature an array of {@link double} objects - */ - public void setParameterWaxTriplePointTemperature(double[] parameterWaxTriplePointTemperature); + /** + *

+ * setParameterWaxTriplePointTemperature. + *

+ * + * @param parameterWaxTriplePointTemperature an array of type double + */ + public void setParameterWaxTriplePointTemperature(double[] parameterWaxTriplePointTemperature); - /** - *

- * setParameterWaxTriplePointTemperature. - *

- * - * @param i a int - * @param parameters a double - */ - public void setParameterWaxTriplePointTemperature(int i, double parameters); + /** + *

+ * setParameterWaxTriplePointTemperature. + *

+ * + * @param i a int + * @param parameters a double + */ + public void setParameterWaxTriplePointTemperature(int i, double parameters); } diff --git a/src/main/java/neqsim/thermo/component/Component.java b/src/main/java/neqsim/thermo/component/Component.java index 66707bb032..7417adae32 100644 --- a/src/main/java/neqsim/thermo/component/Component.java +++ b/src/main/java/neqsim/thermo/component/Component.java @@ -3,66 +3,152 @@ * * Created on 8. april 2000, 23:28 */ + package neqsim.thermo.component; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.atomElement.Element; import neqsim.thermo.component.attractiveEosTerm.AttractiveTermInterface; import neqsim.thermo.phase.PhaseInterface; import neqsim.util.database.NeqSimDataBase; +import neqsim.util.unit.PressureUnit; +import neqsim.util.unit.TemperatureUnit; -abstract class Component implements ComponentInterface { +/** + *

+ * Abstract Component class. + *

+ * + * @author Even Solbraa + */ +public abstract class Component implements ComponentInterface { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Component.class); double[] surfTensInfluenceParam = {0.28367, -0.05164, -0.81594, 1.06810, -1.1147}; - protected int index, componentNumber, attractiveTermNumber = 0, numberOfAssociationSites = 0; - protected double logFugacityCoefficient = 0.0, associationVolume = 0.0, associationEnergy = 0.0, - aCPA = 0.0, bCPA = 0.0, mCPA = 0.0, srkacentricFactor = 0.0; - protected String componentName = "default", referenceStateType = "solvent", - associationScheme = "0", antoineLiqVapPresType = null; - private String formulae = "", CASnumber = ""; + /** Index number of Component in database. */ + protected int index; + /** Index number of Component in Phase object component array. */ + protected int componentNumber; + /** Name of component. */ + protected String componentName = "default"; + + // TODO: what does "HC", "inert" and "Component" mean? + /** + * Type of component. Can be "normal", "TBP", "plus", "ion", but what does "HC", "inert" and + * "Component?" do? + */ + private String componentType = "Component"; + + /** Mole fraction of Component in System. */ + protected double z; + /** Mole fraction of Component in Phase. */ + protected double x = 0; + /** + * Number of moles of Component in System. numberOfMoles = totalNumberOfMoles * z. + */ + protected double numberOfMoles = 0.0; + /** Number of moles of Component in Phase. totalNumberOfMoles * x * beta. */ + protected double numberOfMolesInPhase = 0.0; + protected double K; + + protected int attractiveTermNumber = 0; + protected int numberOfAssociationSites = 0; + protected double associationVolume = 0.0; + protected double associationEnergy = 0.0; + protected double aCPA = 0.0; + protected double bCPA = 0.0; + protected double mCPA = 0.0; + protected double srkacentricFactor = 0.0; + // TODO: what are the available options here? + protected String referenceStateType = "solvent"; + protected String associationScheme = "0"; + protected String antoineLiqVapPresType = null; + private String formulae = ""; + private String CASnumber = ""; protected Element elements = null; - protected boolean isTBPfraction = false, isPlusFraction = false, isNormalComponent = true, - isIon = false; + + protected boolean isTBPfraction = false; + protected boolean isPlusFraction = false; + protected boolean isNormalComponent = true; + protected boolean isIon = false; + private boolean isHydrateFormer = false; private boolean waxFormer = false; - private String componentType = "Component"; - protected double qPure = 0, voli = 1.0; + protected double qPure = 0; + protected double voli = 1.0; protected int calcActivity = 1; + /** Check for solid phase and do solid phase calculations. */ protected boolean solidCheck = false; - protected double dqPuredT = 0, dqPuredTdT = 0; + protected double dqPuredT = 0; + protected double dqPuredTdT = 0; private double racketZCPA = 0; private double criticalCompressibilityFactor = 0.0; - private double volumeCorrectionConst = 0.0, volumeCorrectionT = 0.0, volumeCorrectionT_CPA = 0.0; - protected double criticalPressure, criticalTemperature, molarMass, acentricFactor, - numberOfMoles = 0.0, numberOfMolesInPhase = 0.0, normalLiquidDensity = 0; - protected double reducedPressure, reducedTemperature, fugacityCoefficient, debyeDipoleMoment = 0, - viscosityCorrectionFactor = 0, criticalVolume = 0, racketZ = 0; - protected double gibbsEnergyOfFormation = 0, criticalViscosity = 0.0; - protected double referencePotential = 0, viscosityFrictionK = 1.0; + private double volumeCorrectionConst = 0.0; + private double volumeCorrectionT = 0.0; + private double volumeCorrectionT_CPA = 0.0; + protected double criticalPressure; + protected double criticalTemperature; + protected double molarMass; + protected double acentricFactor; + protected double normalLiquidDensity = 0; + protected double reducedPressure; + protected double reducedTemperature; + protected double fugacityCoefficient; + protected double debyeDipoleMoment = 0; + protected double viscosityCorrectionFactor = 0; + protected double criticalVolume = 0; + protected double racketZ = 0; + protected double gibbsEnergyOfFormation = 0; + protected double criticalViscosity = 0.0; + protected double referencePotential = 0; + protected double viscosityFrictionK = 1.0; protected int liquidViscosityModel = 0; protected int ionicCharge = 0; private double referenceEnthalpy = 0.0; - protected double parachorParameter = 0.0, normalBoilingPoint = 0, sphericalCoreRadius = 0.384, - standardDensity = 0, AntoineASolid = 0.0, AntoineBSolid = 0.0, AntoineCSolid = 0.0; + protected double parachorParameter = 0.0; + protected double normalBoilingPoint = 0; + protected double sphericalCoreRadius = 0.384; + protected double standardDensity = 0; + protected double AntoineASolid = 0.0; + protected double AntoineBSolid = 0.0; + protected double AntoineCSolid = 0.0; protected double[] liquidViscosityParameter = new double[4]; protected double[] liquidConductivityParameter = new double[3]; protected double[] henryCoefParameter = new double[4]; protected double[] dielectricParameter = new double[5]; - protected double[] schwartzentruberParams = new double[3], matiascopemanParams = new double[3], - matiascopemanParamsPR = new double[3], TwuCoonParams = new double[3], - matiascopemanSolidParams = new double[3], matiascopemanParamsUMRPRU = new double[5]; - protected double lennardJonesMolecularDiameter = 0, lennardJonesEnergyParameter = 0, - stokesCationicDiameter = 0, paulingAnionicDiameter = 0; - protected double K, z; - protected double x = 0; + protected double[] schwartzentruberParams = new double[3]; + protected double[] matiascopemanParams = new double[3]; + protected double[] matiascopemanParamsPR = new double[3]; + protected double[] TwuCoonParams = new double[3]; + protected double[] matiascopemanSolidParams = new double[3]; + protected double[] matiascopemanParamsUMRPRU = new double[5]; + protected double lennardJonesMolecularDiameter = 0; + protected double lennardJonesEnergyParameter = 0; + protected double stokesCationicDiameter = 0; + protected double paulingAnionicDiameter = 0; + private int orginalNumberOfAssociationSites = 0; - protected double dfugdt = 0.1, dfugdp = 0.1; - protected double[] dfugdn = new double[MAX_NUMBER_OF_COMPONENTS]; - public double[] dfugdx = new double[MAX_NUMBER_OF_COMPONENTS]; - double AntoineA = 0, AntoineB = 0, AntoineC = 0, AntoineD = 0, AntoineE = 0; + + /* Derivative of fugacity wrt temperature */ + protected double dfugdt = 0.1; + /* Derivative of fugacity wrt pressure */ + protected double dfugdp = 0.1; + /* Derivative of fugacity wrt mole fraction (of each ) */ + protected double[] dfugdn = new double[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + /* Derivative of fugacity wrt temperature */ + public double[] dfugdx = new double[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + + // Parameters for Antoine equation + double AntoineA = 0; + double AntoineB = 0; + double AntoineC = 0; + double AntoineD = 0; + double AntoineE = 0; + private double CpA = 100.0; private double CpB = 0; private double CpC = 0; @@ -71,11 +157,16 @@ abstract class Component implements ComponentInterface { private double[] CpSolid = new double[5]; private double[] CpLiquid = new double[5]; private double heatOfFusion = 0.0; - double triplePointDensity = 10.0, triplePointPressure = 0.0; + + double triplePointDensity = 10.0; + double triplePointPressure = 0.0; private double triplePointTemperature = 1000.0; double meltingPointTemperature = 110.0; + private double idealGasEnthalpyOfFormation = 0.0; - double idealGasGibsEnergyOfFormation = 0.0, idealGasAbsoluteEntropy = 0.0; + double idealGasGibbsEnergyOfFormation = 0.0; + double idealGasAbsoluteEntropy = 0.0; + double Hsub = 0.0; double[] solidDensityCoefs = new double[5]; double[] liquidDensityCoefs = new double[5]; @@ -85,19 +176,18 @@ abstract class Component implements ComponentInterface { protected double epsikSAFT = 0; private double associationVolumeSAFT; private double associationEnergySAFT = 0; - static Logger logger = LogManager.getLogger(Component.class); /** *

* Constructor for Component. *

* - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double + * @param number a int. Not used. + * @param TC Critical temperature + * @param PC Critical pressure + * @param M Molar mass + * @param a Acentric factor + * @param moles Total number of moles of component. */ public Component(int number, double TC, double PC, double M, double a, double moles) { criticalPressure = PC; @@ -112,88 +202,48 @@ public Component(int number, double TC, double PC, double M, double a, double mo * Constructor for Component. *

* - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. */ - public Component(String component_name, double moles, double molesInPhase, int compnumber) { - createComponent(component_name, moles, molesInPhase, compnumber); + public Component(String name, double moles, double molesInPhase, int compIndex) { + createComponent(name, moles, molesInPhase, compIndex); } /** {@inheritDoc} */ @Override - public void insertComponentIntoDatabase(String databaseName) { - databaseName = "comptemp"; - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - try { - int isW = 0; - if (isWaxFormer()) { - isW = 1; - } - if (NeqSimDataBase.createTemporaryTables()) { - database.execute("insert into comptemp VALUES (" + (1000 + componentNumber) + ", '" - + componentName + "', '00-00-0','" + getComponentType() + "', " - + (1000 + componentNumber) + ", 'HC', " + (molarMass * 1000.0) + ", " - + normalLiquidDensity + ", " + (getTC() - 273.15) + ", " + getPC() + ", " - + getAcentricFactor() + "," + (getNormalBoilingPoint() - 273.15) - + ", 39.948, 74.9, 'Classic', 0, " + getCpA() + ", " + getCpB() + ", " + getCpC() + ", " - + getCpD() + ", " + getCpE() - + ", 'log', 5.2012, 1936.281, -20.143, -1.23303, 1000, 1.8, 0.076, 0.0, 0.0, 2.52, 809.1, 0, 3, -24.71, 4210, 0.0453, -3.38e-005, -229000, -19.2905, 29814.5, -0.019678, 0.000132, -3.11e-007, 0, 'solvent', 0, 0, 0, 0, 0.0789, -1.16, 0, -0.384, 0.00525, -6.37e-006, 207, " - + getHeatOfFusion() + ", 1000, 0.00611, " + getTriplePointTemperature() + ", " - + getMeltingPointTemperature() - + ", -242000, 189, 53, -0.00784, 0, 0, 0, 5.46, 0.305, 647, 0.081, 0, 52100000, 0.32, -0.212, 0.258, 0, 0.999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'no', " - + getmSAFTi() + ", " + (getSigmaSAFTi() * 1e10) + ", " + getEpsikSAFT() - + ", 0, 0,0,0,0,0," + isW + ",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)"); - } - index = 1000 + componentNumber; - CASnumber = "00-00-0"; - } catch (Exception e) { - logger.error("error in inserting to database", e); - } finally { - try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error closing database.....", e); - } + public void createComponent(String name, double moles, double molesInPhase, int compIndex) { + if (name == null) { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + "createComponent", "name", "can not be null")); } - } - - /** {@inheritDoc} */ - @Override - public void createComponent(String component_name, double moles, double molesInPhase, - int compnumber) { - component_name = ComponentInterface.getComponentName(component_name); - componentName = component_name; + if (name.trim() == "") { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + "createComponent", "name", "can not be empty")); + } + name = ComponentInterface.getComponentNameFromAlias(name); + componentName = name; numberOfMoles = moles; numberOfMolesInPhase = molesInPhase; - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); java.sql.ResultSet dataSet = null; - try { - if (!component_name.equals("default")) { + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + if (!name.equals("default")) { try { if (NeqSimDataBase.createTemporaryTables()) { - dataSet = database - .getResultSet(("SELECT * FROM comptemp WHERE name='" + component_name + "'")); + dataSet = database.getResultSet(("SELECT * FROM comptemp WHERE name='" + name + "'")); } else { - dataSet = - database.getResultSet(("SELECT * FROM comp WHERE name='" + component_name + "'")); + dataSet = database.getResultSet(("SELECT * FROM comp WHERE name='" + name + "'")); } dataSet.next(); dataSet.getString("ID"); // if(dataSet.isAfterLast()) dataSet.next(); - } catch (Exception e) { + } catch (Exception ex) { try { dataSet.close(); // logger.info("no parameters in tempcomp -- trying comp.. " + - // component_name); - dataSet = - database.getResultSet(("SELECT * FROM comp WHERE name='" + component_name + "'")); + // name); + dataSet = database.getResultSet(("SELECT * FROM comp WHERE name='" + name + "'")); dataSet.next(); } catch (Exception e2) { throw new RuntimeException(e2); @@ -237,10 +287,10 @@ public void createComponent(String component_name, double moles, double molesInP AntoineC = Double.parseDouble(dataSet.getString("ANTOINEC")); // AX AntoineD = Double.parseDouble(dataSet.getString("ANTOINED")); AntoineE = Double.parseDouble(dataSet.getString("ANTOINEE")); - + normalBoilingPoint = Double.parseDouble(dataSet.getString("normboil")) + 273.15; if (AntoineA == 0) { AntoineA = 1.0; - AntoineB = getNormalBoilingPoint(); + AntoineB = getNormalBoilingPoint() - 273.15; } AntoineASolid = Double.parseDouble(dataSet.getString("ANTOINESolidA")); @@ -248,7 +298,7 @@ public void createComponent(String component_name, double moles, double molesInP AntoineCSolid = Double.parseDouble(dataSet.getString("ANTOINESolidC")); debyeDipoleMoment = Double.parseDouble(dataSet.getString("dipolemoment")); - normalBoilingPoint = Double.parseDouble(dataSet.getString("normboil")); + standardDensity = Double.parseDouble(dataSet.getString("stddens")); viscosityCorrectionFactor = Double.parseDouble(dataSet.getString("viscfact")); // BC racketZ = Double.parseDouble(dataSet.getString("racketZ")); // BE @@ -327,7 +377,7 @@ public void createComponent(String component_name, double moles, double molesInP setIdealGasEnthalpyOfFormation( Double.parseDouble(dataSet.getString("EnthalpyOfFormation"))); - idealGasGibsEnergyOfFormation = gibbsEnergyOfFormation; + idealGasGibbsEnergyOfFormation = gibbsEnergyOfFormation; idealGasAbsoluteEntropy = Double.parseDouble(dataSet.getString("AbsoluteEntropy")); for (int i = 0; i < 5; i++) { @@ -399,23 +449,9 @@ public void createComponent(String component_name, double moles, double molesInP waxFormer = Integer.parseInt(dataSet.getString("waxformer")) == 1; // System.out.println(componentName + " pure component parameters: ok..."); } - componentNumber = compnumber; - } catch (Exception e) { - logger.error("error in comp", e); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error closing database.....", e); - } + componentNumber = compIndex; + } catch (Exception ex) { + logger.error("error in comp", ex); } srkacentricFactor = acentricFactor; @@ -423,54 +459,68 @@ public void createComponent(String component_name, double moles, double molesInP paulingAnionicDiameter = lennardJonesMolecularDiameter; } + /** {@inheritDoc} */ + @Override + public void insertComponentIntoDatabase(String databaseName) { + databaseName = "comptemp"; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + int isW = 0; + if (isWaxFormer()) { + isW = 1; + } + index = 1000 + componentNumber; + if (NeqSimDataBase.createTemporaryTables()) { + database.execute("insert into " + databaseName + " VALUES (" + (1000 + componentNumber) + + ", '" + componentName + "', '00-00-0','" + getComponentType() + "', " + index + + ", 'HC', " + (molarMass * 1000.0) + ", " + normalLiquidDensity + ", " + + (getTC() - 273.15) + ", " + getPC() + ", " + getAcentricFactor() + "," + + (getNormalBoilingPoint() - 273.15) + ", 39.948, 74.9, 'Classic', 0, " + getCpA() + + ", " + getCpB() + ", " + getCpC() + ", " + getCpD() + ", " + getCpE() + + ", 'log', 5.2012, 1936.281, -20.143, -1.23303, 1000, 1.8, 0.076, 0.0, 0.0, 2.52, 809.1, 0, 3, -24.71, 4210, 0.0453, -3.38e-005, -229000, -19.2905, 29814.5, -0.019678, 0.000132, -3.11e-007, 0, 'solvent', 0, 0, 0, 0, 0.0789, -1.16, 0, -0.384, 0.00525, -6.37e-006, 207, " + + getHeatOfFusion() + ", 1000, 0.00611, " + getTriplePointTemperature() + ", " + + getMeltingPointTemperature() + + ", -242000, 189, 53, -0.00784, 0, 0, 0, 5.46, 0.305, 647, 0.081, 0, 52100000, 0.32, -0.212, 0.258, 0, 0.999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'no', " + + getmSAFTi() + ", " + (getSigmaSAFTi() * 1e10) + ", " + getEpsikSAFT() + + ", 0, 0,0,0,0,0," + isW + ",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)"); + } + CASnumber = "00-00-0"; + } catch (Exception ex) { + logger.error("error in inserting to database", ex); + } + } + /** {@inheritDoc} */ @Override public Component clone() { Component clonedComponent = null; try { clonedComponent = (Component) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } return clonedComponent; } - /** {@inheritDoc} */ - @Override - public void addMolesChemReac(double dn) { - numberOfMoles += dn; - numberOfMolesInPhase += dn; - if (numberOfMoles < 0) { - numberOfMoles = 0; - } - if (numberOfMolesInPhase < 0) { - numberOfMolesInPhase = 0; - } - } - /** {@inheritDoc} */ @Override public void addMolesChemReac(double dn, double totdn) { - numberOfMoles += totdn; - - if (numberOfMoles < 0) { - numberOfMoles = 0; - } - - numberOfMolesInPhase += dn; - if (numberOfMolesInPhase < 0) { - numberOfMolesInPhase = 0; + if (numberOfMoles + totdn < 0 || numberOfMolesInPhase + dn < 0) { + if (Math.abs(dn) < 1e-12) { + dn = 0; + totdn = 0; + } else { + String msg = "will lead to negative number of moles of component in phase for component " + + getComponentName() + " who has " + numberOfMolesInPhase + + " in phase and chage request was " + dn; + neqsim.util.exception.InvalidInputException ex = + new neqsim.util.exception.InvalidInputException(this, "addMolesChemReac", "dn", msg); + throw new RuntimeException(ex); + // logger.error(ex.getMessage()); + } } - } - - /** {@inheritDoc} */ - @Override - public void addMoles(double dn) { + numberOfMoles += totdn; numberOfMolesInPhase += dn; - if (numberOfMolesInPhase < 0) { - numberOfMolesInPhase = 0; - } } /** {@inheritDoc} */ @@ -486,13 +536,12 @@ public void setProperties(ComponentInterface component) { /** {@inheritDoc} */ @Override public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - + int initType) { if (totalNumberOfMoles == 0) { throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, "init", "totalNumberOfMoles", "must be larger than 0")); } - if (type == 0) { + if (initType == 0) { K = Math.exp(Math.log(criticalPressure / pressure) + 5.373 * (1.0 + srkacentricFactor) * (1.0 - criticalTemperature / temperature)); z = numberOfMoles / totalNumberOfMoles; @@ -516,7 +565,7 @@ public Element getElements() { /** {@inheritDoc} */ @Override public void Finit(PhaseInterface phase, double temp, double pres, double totMoles, double beta, - int numberOfComponents, int type) {} + int numberOfComponents, int initType) {} /** {@inheritDoc} */ @Override @@ -574,7 +623,7 @@ public double getHeatOfVapourization(double temp) { /** {@inheritDoc} */ @Override - public final double getTripplePointDensity() { + public final double getTriplePointDensity() { return triplePointDensity; } @@ -604,8 +653,8 @@ public final double getIdealGasEnthalpyOfFormation() { /** {@inheritDoc} */ @Override - public final double getIdealGasGibsEnergyOfFormation() { - return idealGasGibsEnergyOfFormation; + public final double getIdealGasGibbsEnergyOfFormation() { + return idealGasGibbsEnergyOfFormation; } /** {@inheritDoc} */ @@ -620,18 +669,40 @@ public final double getTC() { return criticalTemperature; } + /** {@inheritDoc} */ + @Override + public final double getTC(String unit) { + neqsim.util.unit.TemperatureUnit tempConversion = + new neqsim.util.unit.TemperatureUnit(criticalTemperature, "K"); + return tempConversion.getValue(unit); + } + /** {@inheritDoc} */ @Override public final void setTC(double val) { criticalTemperature = val; } + /** {@inheritDoc} */ + @Override + public final void setTC(double val, String unit) { + TemperatureUnit inValue = new TemperatureUnit(val, unit); + criticalTemperature = inValue.getValue(val, unit, "K"); + } + /** {@inheritDoc} */ @Override public final void setPC(double val) { criticalPressure = val; } + /** {@inheritDoc} */ + @Override + public final void setPC(double val, String unit) { + PressureUnit inValue = new PressureUnit(val, unit); + criticalPressure = inValue.getValue(val, unit, "bara"); + } + /** {@inheritDoc} */ @Override public final String getComponentName() { @@ -650,6 +721,14 @@ public final double getPC() { return criticalPressure; } + /** {@inheritDoc} */ + @Override + public final double getPC(String unit) { + neqsim.util.unit.PressureUnit presConversion = + new neqsim.util.unit.PressureUnit(criticalPressure, "bara"); + return presConversion.getValue(unit); + } + /** {@inheritDoc} */ @Override public double getGibbsEnergyOfFormation() { @@ -715,6 +794,73 @@ public double getNormalLiquidDensity() { return normalLiquidDensity; } + /** {@inheritDoc} */ + @Override + public double getNormalLiquidDensity(String unit) { + double refDensity = normalLiquidDensity * 1e3; // density in kg/m3 + double conversionFactor = 1.0; + switch (unit) { + case "kg/m3": + conversionFactor = 1.0; + break; + case "lb/ft3": + conversionFactor = 0.0624279606; + break; + case "kg/Sm3": + return getMolarMass() * ThermodynamicConstantsInterface.atm + / ThermodynamicConstantsInterface.R + / ThermodynamicConstantsInterface.standardStateTemperature; + case "mol/m3": + conversionFactor = 1.0 / getMolarMass(); + break; + default: + throw new RuntimeException("unit not supported " + unit); + } + return refDensity * conversionFactor; + } + + /** {@inheritDoc} */ + @Override + public double getMolarMass(String unit) { + double refMolarMass = getMolarMass(); + double conversionFactor = 1.0; + switch (unit) { + case "kg/mol": + conversionFactor = 1.0; + break; + case "gr/mol": + conversionFactor = 1000.0; + break; + case "lbm/lbmol": + conversionFactor = 1000.0; + break; + default: + throw new RuntimeException("unit not supported " + unit); + } + return refMolarMass * conversionFactor; + } + + /** {@inheritDoc} */ + @Override + public void setMolarMass(double value, String unit) { + double refMolarMass = value; + double conversionFactor = 1.0; + switch (unit) { + case "kg/mol": + conversionFactor = 1.0; + break; + case "gr/mol": + conversionFactor = 1000.0; + break; + case "lbm/lbmol": + conversionFactor = 1000.0; + break; + default: + throw new RuntimeException("unit not supported " + unit); + } + molarMass = refMolarMass * 1.0 / conversionFactor; + } + /** {@inheritDoc} */ @Override public double getViscosityCorrectionFactor() { @@ -775,11 +921,7 @@ public double getLiquidConductivityParameter(int i) { return liquidConductivityParameter[i]; } - /** - * {@inheritDoc} - * - * Units in m*e10 - */ + /** {@inheritDoc} */ @Override public double getLennardJonesMolecularDiameter() { return lennardJonesMolecularDiameter; @@ -797,38 +939,21 @@ public double getHsub() { return Hsub; } - /** - * {@inheritDoc} - * - * Calculates the pure comonent solid vapor pressure (bar) with the C-C equation, based on Hsub - * Should only be used in the valid temperature range below the triple point (specified in - * component database). - */ + /** {@inheritDoc} */ @Override public double getCCsolidVaporPressure(double temperature) { return triplePointPressure * (Math.exp(Hsub / R * (1.0 / getTriplePointTemperature() - 1.0 / temperature))); } - /** - * {@inheritDoc} - * - * Calculates the DT of pure comonent solid vapor pressure (bar) with the C-C equation, based on - * Hsub Should only be used in the valid temperature range below the triple point (specified in - * component database). - */ + /** {@inheritDoc} */ @Override public double getCCsolidVaporPressuredT(double temperature) { return triplePointPressure * Hsub / R * (1.0 / (temperature * temperature)) * (Math.exp(Hsub / R * (1.0 / getTriplePointTemperature() - 1.0 / temperature))); } - /** - * {@inheritDoc} - * - * Calculates the pure component solid density in kg/liter Should only be used in the valid - * temperature range (specified in component database). - */ + /** {@inheritDoc} */ @Override public double getPureComponentSolidDensity(double temperature) { return molarMass * 1000.0 @@ -838,13 +963,7 @@ public double getPureComponentSolidDensity(double temperature) { + solidDensityCoefs[4] * Math.pow(temperature, 4.0)); } - /** - * {@inheritDoc} - * - * Calculates the pure component liquid density in kg/liter Should only be used in the valid - * temperature range (specified in component database). This method seems to give bad results at - * the moment - */ + /** {@inheritDoc} */ @Override public double getPureComponentLiquidDensity(double temperature) { return molarMass * 1000.0 @@ -856,11 +975,7 @@ public double getPureComponentLiquidDensity(double temperature) { // Math.pow(1.0 - temperature / liquidDensityCoefs[2], liquidDensityCoefs[3])); } - /** - * {@inheritDoc} - * - * Calculates the pure comonent heat of vaporization in J/mol - */ + /** {@inheritDoc} */ @Override public double getPureComponentHeatOfVaporization(double temperature) { return 1.0e-3 * heatOfVaporizationCoefs[0] @@ -941,26 +1056,27 @@ public final double getFugacityCoefficient() { /** {@inheritDoc} */ @Override public double fugcoef(PhaseInterface phase) { - fugacityCoefficient = 1.0;// this.fugcoef(phase, phase.getNumberOfComponents(), - // phase.getTemperature(), - // phase.getPressure()); - logFugacityCoefficient = Math.log(fugacityCoefficient); + fugacityCoefficient = 1.0; + // this.fugcoef(phase, phase.getNumberOfComponents(), phase.getTemperature(), + // phase.getPressure()); return fugacityCoefficient; } /** {@inheritDoc} */ @Override public double logfugcoefdT(PhaseInterface phase) { - dfugdt = 0.0;// this.fugcoefDiffTemp(phase, phase.getNumberOfComponents(), - // phase.getTemperature(), phase.getPressure()); + dfugdt = 0.0; + // this.fugcoefDiffTemp(phase, phase.getNumberOfComponents(), phase.getTemperature(), + // phase.getPressure()); return dfugdt; } /** {@inheritDoc} */ @Override public double logfugcoefdP(PhaseInterface phase) { - dfugdp = 0.0;// this.fugcoefDiffPres(phase, phase.getNumberOfComponents(), - // phase.getTemperature(), phase.getPressure()); + dfugdp = 0.0; + // this.fugcoefDiffPres(phase, phase.getNumberOfComponents(), phase.getTemperature(), + // phase.getPressure()); return dfugdp; } @@ -1106,18 +1222,6 @@ public final double getChemicalPotentialdP() { return voli; } - /** {@inheritDoc} */ - @Override - public final double getChemicalPotentialdT(PhaseInterface phase) { - return -getEntropy(phase.getTemperature(), phase.getPressure()) / numberOfMolesInPhase; - } - - /** {@inheritDoc} */ - @Override - public final double getChemicalPotentialdV(PhaseInterface phase) { - return getChemicalPotentialdP() * phase.getdPdVTn(); - } - /** *

* getChemicalPotentialdP. @@ -1131,6 +1235,18 @@ public final double getChemicalPotentialdP(int i, PhaseInterface phase) { return R * phase.getTemperature() * getFugacitydN(i, phase); } + /** {@inheritDoc} */ + @Override + public final double getChemicalPotentialdT(PhaseInterface phase) { + return -getEntropy(phase.getTemperature(), phase.getPressure()) / numberOfMolesInPhase; + } + + /** {@inheritDoc} */ + @Override + public final double getChemicalPotentialdV(PhaseInterface phase) { + return getChemicalPotentialdP() * phase.getdPdVTn(); + } + /** {@inheritDoc} */ @Override public void setComponentNumber(int numb) { @@ -1141,21 +1257,14 @@ public void setComponentNumber(int numb) { @Override public double getAntoineVaporPressure(double temp) { if (antoineLiqVapPresType.equals("pow10")) { - return Math.pow(10.0, AntoineA - (AntoineB / (temp + AntoineC - 273.15))); // equation - // and - // parameter - // from - // properties - // o liquids - // and - // gases - // (poling - // 5th ed) + // equation and parameter from properties o and gases (poling 5th ed) + return Math.pow(10.0, AntoineA - (AntoineB / (temp + AntoineC - 273.15))); + } else if (antoineLiqVapPresType.equals("pow10KPa")) { + // equation and parameter from properties o and gases (poling 5th ed) + return Math.pow(10.0, AntoineA - (AntoineB / (temp + AntoineC))) / 1.0e5; } else if (antoineLiqVapPresType.equals("exp") || antoineLiqVapPresType.equals("log")) { - return Math.exp(AntoineA - (AntoineB / (temp + AntoineC))); // equation and parameter - // from properties o - // liquids and gases (poling - // 5th ed) + // equation and parameter from properties o and gases (poling 5th ed) + return Math.exp(AntoineA - (AntoineB / (temp + AntoineC))); } else if (Math.abs(AntoineE) > 1e-12) { return Math.exp(AntoineA + AntoineB / temp + AntoineC * Math.log(temp) + AntoineD * Math.pow(temp, AntoineE)) / 100000; @@ -1187,7 +1296,8 @@ public double getAntoineVaporPressuredT(double temp) { /** {@inheritDoc} */ @Override public double getAntoineVaporTemperature(double pres) { - double nyPres = 0, nyTemp = criticalTemperature * 0.7; + double nyPres = 0; + double nyTemp = criticalTemperature * 0.7; int iter = 0; do { iter++; @@ -1342,15 +1452,14 @@ public final void setTwuCoonParams(int i, double param) { @Override public double fugcoefDiffPresNumeric(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) { - double temp1 = 0.0, temp2 = 0.0; double dp = phase.getPressure() / 1.0e5; - temp1 = phase.getComponents()[componentNumber].getFugacityCoefficient(); + final double temp1 = phase.getComponents()[componentNumber].getFugacityCoefficient(); phase.setPressure(phase.getPressure() - dp); - phase.init(numberOfMolesInPhase, numberOfComponents, 1, phase.getPhaseType(), phase.getBeta()); + phase.init(numberOfMolesInPhase, numberOfComponents, 1, phase.getBeta()); phase.getComponents()[componentNumber].fugcoef(phase); - temp2 = phase.getComponents()[componentNumber].getFugacityCoefficient(); + final double temp2 = phase.getComponents()[componentNumber].getFugacityCoefficient(); phase.setPressure(phase.getPressure() + dp); - phase.init(numberOfMolesInPhase, numberOfComponents, 1, phase.getPhaseType(), phase.getBeta()); + phase.init(numberOfMolesInPhase, numberOfComponents, 1, phase.getBeta()); phase.getComponents()[componentNumber].fugcoef(phase); dfugdp = (Math.log(temp1) - Math.log(temp2)) / dp; return dfugdp; @@ -1360,16 +1469,15 @@ public double fugcoefDiffPresNumeric(PhaseInterface phase, int numberOfComponent @Override public double fugcoefDiffTempNumeric(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) { - double temp1 = 0.0, temp2 = 0.0; double dt = phase.getTemperature() / 1.0e6; - temp1 = phase.getComponents()[componentNumber].getFugacityCoefficient(); + final double temp1 = phase.getComponents()[componentNumber].getFugacityCoefficient(); phase.setTemperature(phase.getTemperature() - dt); - phase.init(numberOfMolesInPhase, numberOfComponents, 1, phase.getPhaseType(), phase.getBeta()); + phase.init(numberOfMolesInPhase, numberOfComponents, 1, phase.getBeta()); phase.getComponents()[componentNumber].fugcoef(phase); - temp2 = phase.getComponents()[componentNumber].getFugacityCoefficient(); + final double temp2 = phase.getComponents()[componentNumber].getFugacityCoefficient(); // phase.setTemperature(phase.getTemperature()+dt); // System.out.println("temp " + phase.getTemperature()); - // phase.init(numberOfMolesInPhase, numberOfComponents, 1,phase.getPhaseType(), + // phase.init(numberOfMolesInPhase, numberOfComponents, 1, // phase.getBeta()); // phase.getComponents()[componentNumber].fugcoef(phase, numberOfComponents, // phase.getTemperature(), phase.getPressure()); @@ -1421,12 +1529,6 @@ public void setPaulingAnionicDiameter(double paulingAnionicDiameter) { this.paulingAnionicDiameter = paulingAnionicDiameter; } - /** {@inheritDoc} */ - @Override - public final double getLogFugacityCoefficient() { - return logFugacityCoefficient; - } - /** {@inheritDoc} */ @Override public final int getAttractiveTermNumber() { @@ -1471,7 +1573,7 @@ public final double[] getMatiascopemanParams() { * Getter for the field matiascopemanParamsPR. *

* - * @return an array of {@link double} objects + * @return an array of type double */ public final double[] getMatiascopemanParamsPR() { return matiascopemanParamsPR; @@ -1505,7 +1607,6 @@ public void setMatiascopemanParams(double[] matiascopemanParams) { @Override public void setFugacityCoefficient(double val) { fugacityCoefficient = val; - logFugacityCoefficient = Math.log(fugacityCoefficient); } /** {@inheritDoc} */ @@ -1562,6 +1663,14 @@ public double getNormalBoilingPoint() { return normalBoilingPoint; } + /** {@inheritDoc} */ + @Override + public double getNormalBoilingPoint(String unit) { + neqsim.util.unit.TemperatureUnit tempConversion = + new neqsim.util.unit.TemperatureUnit(getNormalBoilingPoint(), "K"); + return tempConversion.getValue(unit); + } + /** {@inheritDoc} */ @Override public void setNormalBoilingPoint(double normalBoilingPoint) { @@ -1690,7 +1799,7 @@ public boolean isIsTBPfraction() { /** {@inheritDoc} */ @Override public boolean isHydrocarbon() { - return isIsTBPfraction() || isPlusFraction || componentType.equals("HC"); + return isIsTBPfraction() || isPlusFraction || componentType.equalsIgnoreCase("HC"); } /** {@inheritDoc} */ @@ -1734,7 +1843,7 @@ public boolean isIsNormalComponent() { /** {@inheritDoc} */ @Override public boolean isInert() { - return componentType.equals("inert"); + return componentType.equalsIgnoreCase("inert"); } /** {@inheritDoc} */ @@ -1747,8 +1856,9 @@ public void setIsNormalComponent(boolean isNormalComponent) { /** {@inheritDoc} */ @Override public boolean isIsIon() { - if (componentType.equals("ion")) + if (componentType.equalsIgnoreCase("ion")) { setIsIon(true); + } return isIon; } @@ -1779,8 +1889,8 @@ public final boolean doSolidCheck() { /** {@inheritDoc} */ @Override - public void setSolidCheck(boolean solidCheck) { - this.solidCheck = solidCheck; + public void setSolidCheck(boolean checkForSolids) { + this.solidCheck = checkForSolids; } /** {@inheritDoc} */ @@ -1810,15 +1920,12 @@ public java.lang.String getComponentType() { return componentType; } - /** - * {@inheritDoc} - * - * Getter for property Henrys Coefficient. Unit is bar. ln H = C1 + C2/T + C3lnT + C4*T - */ + /** {@inheritDoc} */ @Override public double getHenryCoef(double temperature) { // System.out.println("henry " + - // Math.exp(henryCoefParameter[0]+henryCoefParameter[1]/temperature+henryCoefParameter[2]*Math.log(temperature)+henryCoefParameter[3]*temperature)*100*0.01802); + // Math.exp(henryCoefParameter[0]+henryCoefParameter[1] / + // temperature+henryCoefParameter[2]*Math.log(temperature)+henryCoefParameter[3]*temperature)*100*0.01802); return Math .exp(henryCoefParameter[0] + henryCoefParameter[1] / temperature + henryCoefParameter[2] * Math.log(temperature) + henryCoefParameter[3] * temperature) @@ -2040,7 +2147,7 @@ public void setTriplePointTemperature(double triplePointTemperature) { @Override public void setComponentType(String componentType) { this.componentType = componentType; - if (componentType.equals("TBP")) { + if (componentType.equalsIgnoreCase("TBP")) { setIsTBPfraction(true); } } @@ -2192,13 +2299,8 @@ public double getVolumeCorrectionT() { return volumeCorrectionT; } - /** - *

- * getVolumeCorrection. - *

- * - * @return a double - */ + /** {@inheritDoc} */ + @Override public double getVolumeCorrection() { return 0.0; } @@ -2242,12 +2344,14 @@ public double getFlowRate(String flowunit) { return numberOfMolesInPhase * getMolarMass() * 60.0; } else if (flowunit.equals("kg/hr")) { return numberOfMolesInPhase * getMolarMass() * 3600.0; - } else if (flowunit.equals("m3/hr")) { - return getVoli() / 1.0e5 * 3600.0; - } else if (flowunit.equals("m3/min")) { - return getVoli() / 1.0e5 * 60.0; + } else if (flowunit.equals("tonnes/year")) { + return numberOfMolesInPhase * getMolarMass() * 3600.0 * 24.0 * 365.0 / 1000.0; } else if (flowunit.equals("m3/sec")) { return getVoli() / 1.0e5; + } else if (flowunit.equals("m3/min")) { + return getVoli() / 1.0e5 * 60.0; + } else if (flowunit.equals("m3/hr")) { + return getVoli() / 1.0e5 * 3600.0; } else if (flowunit.equals("mole/sec")) { return numberOfMolesInPhase; } else if (flowunit.equals("mole/min")) { diff --git a/src/main/java/neqsim/thermo/component/ComponentBWRS.java b/src/main/java/neqsim/thermo/component/ComponentBWRS.java index 7384ee4bf4..35179cc583 100644 --- a/src/main/java/neqsim/thermo/component/ComponentBWRS.java +++ b/src/main/java/neqsim/thermo/component/ComponentBWRS.java @@ -14,473 +14,464 @@ * @version $Id: $Id */ public class ComponentBWRS extends ComponentSrk { - private static final long serialVersionUID = 1000; - - int OP = 9; - int OE = 6; - private double[] aBWRS = new double[32]; - private double[] BP = new double[OP]; - private double[] BE = new double[OE]; - - private double[] BPdT = new double[OP]; - private double[] BEdT = new double[OE]; - - private double[] BPdTdT = new double[OP]; - private double[] BEdTdT = new double[OE]; - - double rhoc = 0.0; - double gammaBWRS = 0.0; - - PhaseBWRSEos refPhaseBWRS = null; - - static Logger logger = LogManager.getLogger(ComponentBWRS.class); - - /** - *

- * Constructor for ComponentBWRS. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentBWRS(String component_name, double moles, double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - - try { - neqsim.util.database.NeqSimDataBase database = - new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - dataSet = database.getResultSet( - ("SELECT * FROM mbwr32param WHERE name='" + component_name + "'")); - dataSet.next(); - dataSet.getClob("name"); - } catch (Exception e) { - dataSet.close(); - dataSet = database.getResultSet( - ("SELECT * FROM mbwr32param WHERE name='" + component_name + "'")); - dataSet.next(); - } - - for (int i = 0; i < 32; i++) { - aBWRS[i] = Double.parseDouble(dataSet.getString("a" + i)); - // System.out.println(aBWRS[i]); - } - rhoc = Double.parseDouble(dataSet.getString("rhoc")); - gammaBWRS = 1.0 / (rhoc * rhoc); - // logger.info("gamma " + gammaBWRS); - dataSet.close(); - database.getConnection().close(); - } - - catch (Exception e) { - String err = e.toString(); - logger.error(err); - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentBWRS.class); + + int OP = 9; + int OE = 6; + private double[] aBWRS = new double[32]; + private double[] BP = new double[OP]; + private double[] BE = new double[OE]; + + private double[] BPdT = new double[OP]; + private double[] BEdT = new double[OE]; + + private double[] BPdTdT = new double[OP]; + private double[] BEdTdT = new double[OE]; + + double rhoc = 0.0; + double gammaBWRS = 0.0; + + PhaseBWRSEos refPhaseBWRS = null; + + /** + *

+ * Constructor for ComponentBWRS. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentBWRS(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + java.sql.ResultSet dataSet = null; + try { + dataSet = database.getResultSet(("SELECT * FROM mbwr32param WHERE name='" + name + "'")); + dataSet.next(); + dataSet.getClob("name"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + + for (int i = 0; i < 32; i++) { + aBWRS[i] = Double.parseDouble(dataSet.getString("a" + i)); + // System.out.println(aBWRS[i]); + } + rhoc = Double.parseDouble(dataSet.getString("rhoc")); + gammaBWRS = 1.0 / (rhoc * rhoc); + // logger.info("gamma " + gammaBWRS); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** - *

- * Constructor for ComponentBWRS. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentBWRS(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); - } - - /** {@inheritDoc} */ - @Override - public ComponentBWRS clone() { - ComponentBWRS clonedComponent = null; - try { - clonedComponent = (ComponentBWRS) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedComponent; + } + + /** + *

+ * Constructor for ComponentBWRS. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentBWRS(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + } + + /** {@inheritDoc} */ + @Override + public ComponentBWRS clone() { + ComponentBWRS clonedComponent = null; + try { + clonedComponent = (ComponentBWRS) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - - BP[0] = R * temperature; - BP[1] = aBWRS[0] * temperature + aBWRS[1] * Math.sqrt(temperature) + aBWRS[2] - + aBWRS[3] / temperature + aBWRS[4] / Math.pow(temperature, 2.0); - BP[2] = aBWRS[5] * temperature + aBWRS[6] + aBWRS[7] / temperature - + aBWRS[8] / Math.pow(temperature, 2.0); - BP[3] = aBWRS[9] * temperature + aBWRS[10] + aBWRS[11] / temperature; - BP[4] = aBWRS[12]; - BP[5] = aBWRS[13] / temperature + aBWRS[14] / Math.pow(temperature, 2.0); - BP[6] = aBWRS[15] / temperature; - BP[7] = aBWRS[16] / temperature + aBWRS[17] / Math.pow(temperature, 2.0); - BP[8] = aBWRS[18] / Math.pow(temperature, 2.0); - - BE[0] = (aBWRS[19] / Math.pow(temperature, 2.0) + aBWRS[20] / Math.pow(temperature, 3.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - BE[1] = (aBWRS[21] / Math.pow(temperature, 2.0) + aBWRS[22] / Math.pow(temperature, 4.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - BE[2] = (aBWRS[23] / Math.pow(temperature, 2.0) + aBWRS[24] / Math.pow(temperature, 3.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - BE[3] = (aBWRS[25] / Math.pow(temperature, 2.0) + aBWRS[26] / Math.pow(temperature, 4.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - BE[4] = (aBWRS[27] / Math.pow(temperature, 2.0) + aBWRS[28] / Math.pow(temperature, 3.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - BE[5] = (aBWRS[29] / Math.pow(temperature, 2.0) + aBWRS[30] / Math.pow(temperature, 3.0) - + aBWRS[31] / Math.pow(temperature, 4.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - - BPdT[0] = R; - BPdT[1] = aBWRS[0] + aBWRS[1] / (2.0 * Math.sqrt(temperature)) - - aBWRS[3] / Math.pow(temperature, 2.0) - - 2.0 * aBWRS[4] / Math.pow(temperature, 3.0); - BPdT[2] = aBWRS[5] - aBWRS[7] / Math.pow(temperature, 2.0) - - 2.0 * aBWRS[8] / Math.pow(temperature, 3.0); - BPdT[3] = aBWRS[9] - aBWRS[11] / Math.pow(temperature, 2.0); - BPdT[4] = 0.0; - BPdT[5] = -aBWRS[13] / Math.pow(temperature, 2.0) - - 2.0 * aBWRS[14] / Math.pow(temperature, 3.0); - BPdT[6] = -aBWRS[15] / Math.pow(temperature, 2.0); - BPdT[7] = -aBWRS[16] / Math.pow(temperature, 2.0) - - 2.0 * aBWRS[17] / Math.pow(temperature, 3.0); - BPdT[8] = -2.0 * aBWRS[18] / Math.pow(temperature, 3.0); - - BEdT[0] = (-2.0 * aBWRS[19] / Math.pow(temperature, 3.0) - - 3.0 * aBWRS[20] / Math.pow(temperature, 4.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - BEdT[1] = (-2.0 * aBWRS[21] / Math.pow(temperature, 3.0) - - 4.0 * aBWRS[22] / Math.pow(temperature, 5.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - BEdT[2] = (-2.0 * aBWRS[23] / Math.pow(temperature, 3.0) - - 3.0 * aBWRS[24] / Math.pow(temperature, 4.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - BEdT[3] = (-2.0 * aBWRS[25] / Math.pow(temperature, 3.0) - - 4.0 * aBWRS[26] / Math.pow(temperature, 5.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - BEdT[4] = (-2.0 * aBWRS[27] / Math.pow(temperature, 3.0) - - 3.0 * aBWRS[28] / Math.pow(temperature, 4.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - BEdT[5] = (-2.0 * aBWRS[29] / Math.pow(temperature, 3.0) - - 3.0 * aBWRS[30] / Math.pow(temperature, 4.0) - - 4.0 * aBWRS[31] / Math.pow(temperature, 5.0));// *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); - - // disse deriverte er ennaa ikke satt inn (finnes i Odvar's avhandling) - BPdTdT[0] = 0; - BPdTdT[1] = 0; - BPdTdT[2] = 0; - BPdTdT[3] = 0; - BPdTdT[4] = 0; - BPdTdT[5] = 0; - BPdTdT[6] = 0; - BPdTdT[7] = 0; - BPdTdT[8] = 0; - - BEdTdT[0] = 0.0; - BEdTdT[1] = 0.0; - BEdTdT[2] = 0.0; - BEdTdT[3] = 0.0; - BEdTdT[4] = 0.0; - BEdTdT[5] = 0.0; + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, + int initType) { + super.init(temperature, pressure, totalNumberOfMoles, beta, initType); + + BP[0] = R * temperature; + BP[1] = aBWRS[0] * temperature + aBWRS[1] * Math.sqrt(temperature) + aBWRS[2] + + aBWRS[3] / temperature + aBWRS[4] / Math.pow(temperature, 2.0); + BP[2] = aBWRS[5] * temperature + aBWRS[6] + aBWRS[7] / temperature + + aBWRS[8] / Math.pow(temperature, 2.0); + BP[3] = aBWRS[9] * temperature + aBWRS[10] + aBWRS[11] / temperature; + BP[4] = aBWRS[12]; + BP[5] = aBWRS[13] / temperature + aBWRS[14] / Math.pow(temperature, 2.0); + BP[6] = aBWRS[15] / temperature; + BP[7] = aBWRS[16] / temperature + aBWRS[17] / Math.pow(temperature, 2.0); + BP[8] = aBWRS[18] / Math.pow(temperature, 2.0); + + BE[0] = (aBWRS[19] / Math.pow(temperature, 2.0) + aBWRS[20] / Math.pow(temperature, 3.0)); + // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + BE[1] = (aBWRS[21] / Math.pow(temperature, 2.0) + aBWRS[22] / Math.pow(temperature, 4.0)); + // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + BE[2] = (aBWRS[23] / Math.pow(temperature, 2.0) + aBWRS[24] / Math.pow(temperature, 3.0)); + // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + BE[3] = (aBWRS[25] / Math.pow(temperature, 2.0) + aBWRS[26] / Math.pow(temperature, 4.0)); + // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + BE[4] = (aBWRS[27] / Math.pow(temperature, 2.0) + aBWRS[28] / Math.pow(temperature, 3.0)); + // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + BE[5] = (aBWRS[29] / Math.pow(temperature, 2.0) + aBWRS[30] / Math.pow(temperature, 3.0) + + aBWRS[31] / Math.pow(temperature, 4.0)); // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + + BPdT[0] = R; + BPdT[1] = aBWRS[0] + aBWRS[1] / (2.0 * Math.sqrt(temperature)) + - aBWRS[3] / Math.pow(temperature, 2.0) - 2.0 * aBWRS[4] / Math.pow(temperature, 3.0); + BPdT[2] = aBWRS[5] - aBWRS[7] / Math.pow(temperature, 2.0) + - 2.0 * aBWRS[8] / Math.pow(temperature, 3.0); + BPdT[3] = aBWRS[9] - aBWRS[11] / Math.pow(temperature, 2.0); + BPdT[4] = 0.0; + BPdT[5] = + -aBWRS[13] / Math.pow(temperature, 2.0) - 2.0 * aBWRS[14] / Math.pow(temperature, 3.0); + BPdT[6] = -aBWRS[15] / Math.pow(temperature, 2.0); + BPdT[7] = + -aBWRS[16] / Math.pow(temperature, 2.0) - 2.0 * aBWRS[17] / Math.pow(temperature, 3.0); + BPdT[8] = -2.0 * aBWRS[18] / Math.pow(temperature, 3.0); + + BEdT[0] = (-2.0 * aBWRS[19] / Math.pow(temperature, 3.0) + - 3.0 * aBWRS[20] / Math.pow(temperature, 4.0)); // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + BEdT[1] = (-2.0 * aBWRS[21] / Math.pow(temperature, 3.0) + - 4.0 * aBWRS[22] / Math.pow(temperature, 5.0)); // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + BEdT[2] = (-2.0 * aBWRS[23] / Math.pow(temperature, 3.0) + - 3.0 * aBWRS[24] / Math.pow(temperature, 4.0)); // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + BEdT[3] = (-2.0 * aBWRS[25] / Math.pow(temperature, 3.0) + - 4.0 * aBWRS[26] / Math.pow(temperature, 5.0)); // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + BEdT[4] = (-2.0 * aBWRS[27] / Math.pow(temperature, 3.0) + - 3.0 * aBWRS[28] / Math.pow(temperature, 4.0)); // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + BEdT[5] = (-2.0 * aBWRS[29] / Math.pow(temperature, 3.0) + - 3.0 * aBWRS[30] / Math.pow(temperature, 4.0) + - 4.0 * aBWRS[31] / Math.pow(temperature, 5.0)); // *Math.exp(-gammaBWRS*Math.pow(getMolarDensity(),2.0)); + + // disse deriverte er ennaa ikke satt inn (finnes i Odvar's avhandling) + BPdTdT[0] = 0; + BPdTdT[1] = 0; + BPdTdT[2] = 0; + BPdTdT[3] = 0; + BPdTdT[4] = 0; + BPdTdT[5] = 0; + BPdTdT[6] = 0; + BPdTdT[7] = 0; + BPdTdT[8] = 0; + + BEdTdT[0] = 0.0; + BEdTdT[1] = 0.0; + BEdTdT[2] = 0.0; + BEdTdT[3] = 0.0; + BEdTdT[4] = 0.0; + BEdTdT[5] = 0.0; + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponentphases, double temperature, + double pressure) { + // System.out.println("Fref " + + // refPhaseBWRS.getF()/phase.getNumberOfMolesInPhase()); + // System.out.println("Fref2 " + 1e3*(getFpoldn(phase, numberOfComponentphases, + // temperature, pressure) + getFexpdn(phase, numberOfComponentphases, + // temperature, pressure))); + // System.out.println("Fref3 " + refPhaseBWRS.getdFdN()); + return refPhaseBWRS.getF() / phase.getNumberOfMolesInPhase(); + // return refPhaseBWRS.getdFdN(); + // System.out.println("dFdN super " + + // super.dFdN(phase,numberOfComponentphases,temperature,pressure)); + // System.out.println("this dFdN " + 1e3*(getFpoldn(phase, numberOfComponentphases, + // temperature, pressure) + getFexpdn(phase, numberOfComponentphases, temperature, + // pressure))); + // return 1e3*(getFpoldn(phase, numberOfComponentphases, temperature, pressure) + // + getFexpdn(phase, numberOfComponentphases, temperature, pressure)); + } + + /** + *

+ * getFpoldn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponentphases a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double getFpoldn(PhaseInterface phase, int numberOfComponentphases, double temperature, + double pressure) { + double temp = 0.0; + for (int i = 1; i < OP; i++) { + temp += i * getBP(i) / (i - 0.0) * Math.pow(((PhaseBWRSEos) phase).getMolarDensity(), i - 1.0) + * getdRhodn(phase, numberOfComponentphases, temperature, pressure); } - - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponentphases, double temperature, - double pressure) { - // System.out.println("Fref " + - // refPhaseBWRS.getF()/phase.getNumberOfMolesInPhase()); - // System.out.println("Fref2 " + 1e3*(getFpoldn(phase, numberOfComponentphases, - // temperature, pressure) + getFexpdn(phase, numberOfComponentphases, - // temperature, pressure))); - // System.out.println("Fref3 " + refPhaseBWRS.getdFdN()); - return refPhaseBWRS.getF() / phase.getNumberOfMolesInPhase(); - // return refPhaseBWRS.getdFdN(); - // System.out.println("dFdN super " + - // super.dFdN(phase,numberOfComponentphases,temperature,pressure)); - // System.out.println("this dFdN " + 1e3*(getFpoldn(phase, numberOfComponentphases, - // temperature, pressure) + getFexpdn(phase, numberOfComponentphases, temperature, - // pressure))); - // return 1e3*(getFpoldn(phase, numberOfComponentphases, temperature, pressure) - // + getFexpdn(phase, numberOfComponentphases, temperature, pressure)); + return phase.getNumberOfMolesInPhase() / (R * temperature) * temp + + ((PhaseBWRSEos) phase).getFpol() / phase.getNumberOfMolesInPhase(); + } + + /** + *

+ * getdRhodn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponentphases a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double getdRhodn(PhaseInterface phase, int numberOfComponentphases, double temperature, + double pressure) { + return ((PhaseBWRSEos) phase).getMolarDensity() / phase.getNumberOfMolesInPhase(); + } + + /** + *

+ * getELdn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponentphases a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double getELdn(PhaseInterface phase, int numberOfComponentphases, double temperature, + double pressure) { + return -2.0 * ((PhaseBWRSEos) phase).getMolarDensity() * getGammaBWRS() + * Math.exp(-getGammaBWRS() * Math.pow(((PhaseBWRSEos) phase).getMolarDensity(), 2.0)) + * getdRhodn(phase, numberOfComponentphases, temperature, pressure); + } + + /** + *

+ * getFexpdn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponentphases a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double getFexpdn(PhaseInterface phase, int numberOfComponentphases, double temperature, + double pressure) { + double oldTemp = 0.0; + double temp = 0.0; + oldTemp = -getBE(0) / (2.0 * getGammaBWRS()) + * getELdn(phase, numberOfComponentphases, temperature, pressure); + + temp += oldTemp; + for (int i = 1; i < OE; i++) { + oldTemp = -getBE(i) / (2.0 * getGammaBWRS()) + * Math.pow(((PhaseBWRSEos) phase).getMolarDensity(), 2 * i) + * getELdn(phase, numberOfComponentphases, temperature, pressure) + + - (2.0 * i) * getBE(i) / (2.0 * getGammaBWRS()) * ((PhaseBWRSEos) phase).getEL() + * Math.pow(((PhaseBWRSEos) phase).getMolarDensity(), 2.0 * i - 1.0) + + + getBE(i) / (2.0 * getGammaBWRS()) * (2.0 * i) / getBE(i - 1) * oldTemp; + + temp += oldTemp; } - /** - *

- * getFpoldn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponentphases a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double getFpoldn(PhaseInterface phase, int numberOfComponentphases, double temperature, - double pressure) { - double temp = 0.0; - for (int i = 1; i < OP; i++) { - temp += i * getBP(i) / (i - 0.0) - * Math.pow(((PhaseBWRSEos) phase).getMolarDensity(), i - 1.0) - * getdRhodn(phase, numberOfComponentphases, temperature, pressure); - } - return phase.getNumberOfMolesInPhase() / (R * temperature) * temp - + ((PhaseBWRSEos) phase).getFpol() / phase.getNumberOfMolesInPhase(); - } - - /** - *

- * getdRhodn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponentphases a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double getdRhodn(PhaseInterface phase, int numberOfComponentphases, double temperature, - double pressure) { - return ((PhaseBWRSEos) phase).getMolarDensity() / phase.getNumberOfMolesInPhase(); - } - - /** - *

- * getELdn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponentphases a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double getELdn(PhaseInterface phase, int numberOfComponentphases, double temperature, - double pressure) { - return -2.0 * ((PhaseBWRSEos) phase).getMolarDensity() * getGammaBWRS() - * Math.exp( - -getGammaBWRS() * Math.pow(((PhaseBWRSEos) phase).getMolarDensity(), 2.0)) - * getdRhodn(phase, numberOfComponentphases, temperature, pressure); - } - - /** - *

- * getFexpdn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponentphases a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double getFexpdn(PhaseInterface phase, int numberOfComponentphases, double temperature, - double pressure) { - double oldTemp = 0.0, temp = 0.0; - oldTemp = -getBE(0) / (2.0 * getGammaBWRS()) - * getELdn(phase, numberOfComponentphases, temperature, pressure); - - temp += oldTemp; - for (int i = 1; i < OE; i++) { - oldTemp = -getBE(i) / (2.0 * getGammaBWRS()) - * Math.pow(((PhaseBWRSEos) phase).getMolarDensity(), 2 * i) - * getELdn(phase, numberOfComponentphases, temperature, pressure) - - - (2.0 * i) * getBE(i) / (2.0 * getGammaBWRS()) * ((PhaseBWRSEos) phase).getEL() - * Math.pow(((PhaseBWRSEos) phase).getMolarDensity(), 2.0 * i - 1.0) - - + getBE(i) / (2.0 * getGammaBWRS()) * (2.0 * i) / getBE(i - 1) * oldTemp; - - temp += oldTemp; - } - - return phase.getNumberOfMolesInPhase() / (R * temperature) * temp - + ((PhaseBWRSEos) phase).getFexp() / phase.getNumberOfMolesInPhase(); - } - - /** - * Getter for property aBWRS. - * - * @return Value of property aBWRS. - */ - public double[] getABWRS() { - return this.aBWRS; - } - - /** - *

- * Getter for the field aBWRS. - *

- * - * @param i a int - * @return a double - */ - public double getABWRS(int i) { - return this.aBWRS[i]; - } - - /** - * Setter for property aBWRS. - * - * @param aBWRS New value of property aBWRS. - */ - public void setABWRS(double[] aBWRS) { - this.aBWRS = aBWRS; - } - - /** - * Getter for property BP. - * - * @return Value of property BP. public double[] getBPdT() { return this.BPdT; } - * @param i a int - */ - public double getBP(int i) { - return this.BP[i]; - } - - /** - * Setter for property BP. - * - * @param BP New value of property BP. - */ - public void setBP(double[] BP) { - this.BP = BP; - } - - /** - * Getter for property BE. - * - * @return Value of property BE. - */ - public double[] getBE() { - return this.BE; - } - - /** - *

- * getBE. - *

- * - * @param i a int - * @return a double - */ - public double getBE(int i) { - return this.BE[i]; - } - - /** - * Setter for property BE. - * - * @param BE New value of property BE. - */ - public void setBE(double[] BE) { - this.BE = BE; - } - - /** - *

- * Setter for the field refPhaseBWRS. - *

- * - * @param refPhaseBWRS a {@link neqsim.thermo.phase.PhaseBWRSEos} object - */ - public void setRefPhaseBWRS(neqsim.thermo.phase.PhaseBWRSEos refPhaseBWRS) { - this.refPhaseBWRS = refPhaseBWRS; - } - - /** - * Getter for property gammaBWRS. - * - * @return Value of property gammaBWRS. - */ - public double getGammaBWRS() { - return gammaBWRS; - } - - /** - * Setter for property gammaBWRS. - * - * @param gammaBWRS New value of property gammaBWRS. - */ - public void setGammaBWRS(double gammaBWRS) { - this.gammaBWRS = gammaBWRS; - } - - /** - * Getter for property BPdT. - * - * @return Value of property BPdT. - */ - public double[] getBPdT() { - return this.BPdT; - } - - /** - *

- * getBPdT. - *

- * - * @param i a int - * @return a double - */ - public double getBPdT(int i) { - return this.BPdT[i]; - } - - /** - * Setter for property BPdT. - * - * @param BPdT New value of property BPdT. - */ - public void setBPdT(double[] BPdT) { - this.BPdT = BPdT; - } - - /** - * Getter for property BEdT. - * - * @return Value of property BEdT. - */ - public double[] getBEdT() { - return this.BEdT; - } - - /** - *

- * getBEdT. - *

- * - * @param i a int - * @return a double - */ - public double getBEdT(int i) { - return this.BEdT[i]; - } - - /** - * Setter for property BEdT. - * - * @param BEdT New value of property BEdT. - */ - public void setBEdT(double[] BEdT) { - this.BEdT = BEdT; - } - - /** - * Getter for property rhoc. - * - * @return Value of property rhoc. - */ - public double getRhoc() { - return rhoc; - } - - /** - * Setter for property rhoc. - * - * @param rhoc New value of property rhoc. - */ - public void setRhoc(double rhoc) { - this.rhoc = rhoc; - } + return phase.getNumberOfMolesInPhase() / (R * temperature) * temp + + ((PhaseBWRSEos) phase).getFexp() / phase.getNumberOfMolesInPhase(); + } + + /** + * Getter for property aBWRS. + * + * @return Value of property aBWRS. + */ + public double[] getABWRS() { + return this.aBWRS; + } + + /** + *

+ * Getter for the field aBWRS. + *

+ * + * @param i a int + * @return a double + */ + public double getABWRS(int i) { + return this.aBWRS[i]; + } + + /** + * Setter for property aBWRS. + * + * @param aBWRS New value of property aBWRS. + */ + public void setABWRS(double[] aBWRS) { + this.aBWRS = aBWRS; + } + + /** + * Getter for property BP. + * + * @param i a int + * @return Value of property BP. public double[] getBPdT() { return this.BPdT; } + */ + public double getBP(int i) { + return this.BP[i]; + } + + /** + * Setter for property BP. + * + * @param BP New value of property BP. + */ + public void setBP(double[] BP) { + this.BP = BP; + } + + /** + * Getter for property BE. + * + * @return Value of property BE. + */ + public double[] getBE() { + return this.BE; + } + + /** + *

+ * getBE. + *

+ * + * @param i a int + * @return a double + */ + public double getBE(int i) { + return this.BE[i]; + } + + /** + * Setter for property BE. + * + * @param BE New value of property BE. + */ + public void setBE(double[] BE) { + this.BE = BE; + } + + /** + *

+ * Setter for the field refPhaseBWRS. + *

+ * + * @param refPhaseBWRS a {@link neqsim.thermo.phase.PhaseBWRSEos} object + */ + public void setRefPhaseBWRS(neqsim.thermo.phase.PhaseBWRSEos refPhaseBWRS) { + this.refPhaseBWRS = refPhaseBWRS; + } + + /** + * Getter for property gammaBWRS. + * + * @return Value of property gammaBWRS. + */ + public double getGammaBWRS() { + return gammaBWRS; + } + + /** + * Setter for property gammaBWRS. + * + * @param gammaBWRS New value of property gammaBWRS. + */ + public void setGammaBWRS(double gammaBWRS) { + this.gammaBWRS = gammaBWRS; + } + + /** + * Getter for property BPdT. + * + * @return Value of property BPdT. + */ + public double[] getBPdT() { + return this.BPdT; + } + + /** + *

+ * getBPdT. + *

+ * + * @param i a int + * @return a double + */ + public double getBPdT(int i) { + return this.BPdT[i]; + } + + /** + * Setter for property BPdT. + * + * @param BPdT New value of property BPdT. + */ + public void setBPdT(double[] BPdT) { + this.BPdT = BPdT; + } + + /** + * Getter for property BEdT. + * + * @return Value of property BEdT. + */ + public double[] getBEdT() { + return this.BEdT; + } + + /** + *

+ * getBEdT. + *

+ * + * @param i a int + * @return a double + */ + public double getBEdT(int i) { + return this.BEdT[i]; + } + + /** + * Setter for property BEdT. + * + * @param BEdT New value of property BEdT. + */ + public void setBEdT(double[] BEdT) { + this.BEdT = BEdT; + } + + /** + * Getter for property rhoc. + * + * @return Value of property rhoc. + */ + public double getRhoc() { + return rhoc; + } + + /** + * Setter for property rhoc. + * + * @param rhoc New value of property rhoc. + */ + public void setRhoc(double rhoc) { + this.rhoc = rhoc; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentCPAInterface.java b/src/main/java/neqsim/thermo/component/ComponentCPAInterface.java index bd736f77eb..1f0ee6d24d 100644 --- a/src/main/java/neqsim/thermo/component/ComponentCPAInterface.java +++ b/src/main/java/neqsim/thermo/component/ComponentCPAInterface.java @@ -11,155 +11,155 @@ * @version $Id: $Id */ public interface ComponentCPAInterface extends ComponentEosInterface { - /** - *

- * getXsite. - *

- * - * @return an array of {@link double} objects - */ - public double[] getXsite(); - - /** - *

- * getXsiteOld. - *

- * - * @return an array of {@link double} objects - */ - public double[] getXsiteOld(); - - /** - *

- * getXsitedT. - *

- * - * @return an array of {@link double} objects - */ - public double[] getXsitedT(); - - /** - *

- * getXsitedTdT. - *

- * - * @return an array of {@link double} objects - */ - public double[] getXsitedTdT(); - - /** - *

- * setXsitedTdT. - *

- * - * @param i a int - * @param xsitedTdT a double - */ - public void setXsitedTdT(int i, double xsitedTdT); - - /** - *

- * setXsitedT. - *

- * - * @param i a int - * @param xsitedT a double - */ - public void setXsitedT(int i, double xsitedT); - - /** - *

- * dFCPAdXi. - *

- * - * @param site a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double dFCPAdXi(int site, PhaseInterface phase); - - /** - *

- * getXsitedV. - *

- * - * @return an array of {@link double} objects - */ - public double[] getXsitedV(); - - /** - *

- * dFCPAdXidXj. - *

- * - * @param sitei a int - * @param sitej a int - * @param compj a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double dFCPAdXidXj(int sitei, int sitej, int compj, PhaseInterface phase); - - /** - *

- * setXsite. - *

- * - * @param i a int - * @param xsite a double - */ - public void setXsite(int i, double xsite); - - /** - *

- * setXsiteOld. - *

- * - * @param i a int - * @param xsite a double - */ - public void setXsiteOld(int i, double xsite); - - /** - *

- * setXsitedV. - *

- * - * @param i a int - * @param xsite a double - */ - public void setXsitedV(int i, double xsite); - - /** - *

- * dFCPAdNdXi. - *

- * - * @param site a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double dFCPAdNdXi(int site, PhaseInterface phase); - - /** - *

- * dFCPAdVdXi. - *

- * - * @param site a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double dFCPAdVdXi(int site, PhaseInterface phase); - - /** - *

- * setXsitedni. - *

- * - * @param xnumb a int - * @param compnumb a int - * @param val a double - */ - public void setXsitedni(int xnumb, int compnumb, double val); + /** + *

+ * getXsite. + *

+ * + * @return an array of type double + */ + public double[] getXsite(); + + /** + *

+ * getXsiteOld. + *

+ * + * @return an array of type double + */ + public double[] getXsiteOld(); + + /** + *

+ * getXsitedT. + *

+ * + * @return an array of type double + */ + public double[] getXsitedT(); + + /** + *

+ * getXsitedTdT. + *

+ * + * @return an array of type double + */ + public double[] getXsitedTdT(); + + /** + *

+ * setXsitedTdT. + *

+ * + * @param i a int + * @param xsitedTdT a double + */ + public void setXsitedTdT(int i, double xsitedTdT); + + /** + *

+ * setXsitedT. + *

+ * + * @param i a int + * @param xsitedT a double + */ + public void setXsitedT(int i, double xsitedT); + + /** + *

+ * dFCPAdXi. + *

+ * + * @param site a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double dFCPAdXi(int site, PhaseInterface phase); + + /** + *

+ * getXsitedV. + *

+ * + * @return an array of type double + */ + public double[] getXsitedV(); + + /** + *

+ * dFCPAdXidXj. + *

+ * + * @param sitei a int + * @param sitej a int + * @param compj a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double dFCPAdXidXj(int sitei, int sitej, int compj, PhaseInterface phase); + + /** + *

+ * setXsite. + *

+ * + * @param i a int + * @param xsite a double + */ + public void setXsite(int i, double xsite); + + /** + *

+ * setXsiteOld. + *

+ * + * @param i a int + * @param xsite a double + */ + public void setXsiteOld(int i, double xsite); + + /** + *

+ * setXsitedV. + *

+ * + * @param i a int + * @param xsite a double + */ + public void setXsitedV(int i, double xsite); + + /** + *

+ * dFCPAdNdXi. + *

+ * + * @param site a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double dFCPAdNdXi(int site, PhaseInterface phase); + + /** + *

+ * dFCPAdVdXi. + *

+ * + * @param site a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double dFCPAdVdXi(int site, PhaseInterface phase); + + /** + *

+ * setXsitedni. + *

+ * + * @param xnumb a int + * @param compnumb a int + * @param val a double + */ + public void setXsitedni(int xnumb, int compnumb, double val); } diff --git a/src/main/java/neqsim/thermo/component/ComponentCSPsrk.java b/src/main/java/neqsim/thermo/component/ComponentCSPsrk.java index e9db4ea932..bb537a45e0 100644 --- a/src/main/java/neqsim/thermo/component/ComponentCSPsrk.java +++ b/src/main/java/neqsim/thermo/component/ComponentCSPsrk.java @@ -12,164 +12,160 @@ * @version $Id: $Id */ public class ComponentCSPsrk extends ComponentSrk { - private static final long serialVersionUID = 1000; - - double f_scale_mix_i = 0; - double h_scale_mix_i = 0; - PhaseCSPsrkEos refPhaseBWRS = null; - - /** - *

- * Constructor for ComponentCSPsrk. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentCSPsrk(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + private static final long serialVersionUID = 1000; + + double f_scale_mix_i = 0; + double h_scale_mix_i = 0; + PhaseCSPsrkEos refPhaseBWRS = null; + + /** + *

+ * Constructor for ComponentCSPsrk. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentCSPsrk(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } + + /** + *

+ * Constructor for ComponentCSPsrk. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentCSPsrk(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + } + + /** {@inheritDoc} */ + @Override + public ComponentCSPsrk clone() { + ComponentCSPsrk clonedComponent = null; + try { + clonedComponent = (ComponentCSPsrk) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * Constructor for ComponentCSPsrk. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentCSPsrk(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); - } - - /** {@inheritDoc} */ - @Override - public ComponentCSPsrk clone() { - ComponentCSPsrk clonedComponent = null; - try { - clonedComponent = (ComponentCSPsrk) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedComponent; - } - - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - h_scale_mix_i = Bi / (refPhaseBWRS.getRefBWRSPhase().getB() - / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase()); - - double termfi1 = Ai / refPhaseBWRS.getA(); - double termfi2 = h_scale_mix_i / refPhaseBWRS.getH_scale_mix(); - double termfi3 = - ((ComponentEosInterface) refPhaseBWRS.getRefBWRSPhase().getComponent(0)).getaDiffT() - / ((ComponentEosInterface) refPhaseBWRS.getRefBWRSPhase().getComponent(0)) - .getaT() - * refPhaseBWRS.getRefBWRSPhase().getTemperature() - / refPhaseBWRS.getNumberOfMolesInPhase(); - double termfi4 = - 1.0 - ((ComponentEosInterface) refPhaseBWRS.getRefBWRSPhase().getComponent(0)) - .getaDiffT() - / ((ComponentEosInterface) refPhaseBWRS.getRefBWRSPhase().getComponent(0)) - .getaT() - * refPhaseBWRS.getRefBWRSPhase().getTemperature(); - - f_scale_mix_i = (termfi1 - termfi2 - termfi3) / termfi4 * refPhaseBWRS.getF_scale_mix(); - } - - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponentphases, double temperature, - double pressure) { - // System.out.println("dFdN super " + super.dFdN(phase, - // numberOfComponentphases,temperature,pressure)); - double term1 = f_scale_mix_i * refPhaseBWRS.getRefBWRSPhase().getF() + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, + int initType) { + super.init(temperature, pressure, totalNumberOfMoles, beta, initType); + h_scale_mix_i = Bi / (refPhaseBWRS.getRefBWRSPhase().getB() + / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase()); + + double termfi1 = Ai / refPhaseBWRS.getA(); + double termfi2 = h_scale_mix_i / refPhaseBWRS.getH_scale_mix(); + double termfi3 = + ((ComponentEosInterface) refPhaseBWRS.getRefBWRSPhase().getComponent(0)).getaDiffT() + / ((ComponentEosInterface) refPhaseBWRS.getRefBWRSPhase().getComponent(0)).getaT() + * refPhaseBWRS.getRefBWRSPhase().getTemperature() + / refPhaseBWRS.getNumberOfMolesInPhase(); + double termfi4 = + 1.0 - ((ComponentEosInterface) refPhaseBWRS.getRefBWRSPhase().getComponent(0)).getaDiffT() + / ((ComponentEosInterface) refPhaseBWRS.getRefBWRSPhase().getComponent(0)).getaT() + * refPhaseBWRS.getRefBWRSPhase().getTemperature(); + + f_scale_mix_i = (termfi1 - termfi2 - termfi3) / termfi4 * refPhaseBWRS.getF_scale_mix(); + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponentphases, double temperature, + double pressure) { + // System.out.println("dFdN super " + super.dFdN(phase, + // numberOfComponentphases,temperature,pressure)); + double term1 = f_scale_mix_i * refPhaseBWRS.getRefBWRSPhase().getF() + / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase() + * refPhaseBWRS.getRefBWRSPhase().getTemperature() / temperature; + double term2 = refPhaseBWRS.getF_scale_mix() + * (refPhaseBWRS.getRefBWRSPhase().dFdT() + / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase() + * (1.0 / refPhaseBWRS.getNumberOfMolesInPhase() + - f_scale_mix_i / refPhaseBWRS.getF_scale_mix()) + * refPhaseBWRS.getRefBWRSPhase().getTemperature() + + refPhaseBWRS.getRefBWRSPhase().dFdV() / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase() - * refPhaseBWRS.getRefBWRSPhase().getTemperature() / temperature; - double term2 = refPhaseBWRS.getF_scale_mix() - * (refPhaseBWRS.getRefBWRSPhase().dFdT() - / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase() - * (1.0 / refPhaseBWRS.getNumberOfMolesInPhase() - - f_scale_mix_i / refPhaseBWRS.getF_scale_mix()) - * refPhaseBWRS.getRefBWRSPhase().getTemperature() - + refPhaseBWRS.getRefBWRSPhase().dFdV() - / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase() - * (-1.0 * h_scale_mix_i / refPhaseBWRS.getH_scale_mix() - * refPhaseBWRS.getRefBWRSPhase().getMolarVolume())) - * refPhaseBWRS.getRefBWRSPhase().getTemperature() / temperature - / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase(); - double term3 = refPhaseBWRS.getF_scale_mix() * refPhaseBWRS.getRefBWRSPhase().getF() * 1.0 - / temperature * 1.0 / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase() - * (1.0 / refPhaseBWRS.getNumberOfMolesInPhase() - - f_scale_mix_i / refPhaseBWRS.getF_scale_mix()) - * refPhaseBWRS.getRefBWRSPhase().getTemperature(); - // System.out.println("dFdN " + super.dFdN(phase, - // numberOfComponentphases,temperature,pressure)); - return term1 + term2 + term3; - } - - /** - * Getter for property f_scale_mix_i. - * - * @return Value of property f_scale_mix_i. - */ - public double getF_scale_mix_i() { - return f_scale_mix_i; - } - - /** - * Setter for property f_scale_mix_i. - * - * @param f_scale_mix_i New value of property f_scale_mix_i. - */ - public void setF_scale_mix_i(double f_scale_mix_i) { - this.f_scale_mix_i = f_scale_mix_i; - } - - /** - * Getter for property h_scale_mix_i. - * - * @return Value of property h_scale_mix_i. - */ - public double getH_scale_mix_i() { - return h_scale_mix_i; - } - - /** - * Setter for property h_scale_mix_i. - * - * @param h_scale_mix_i New value of property h_scale_mix_i. - */ - public void setH_scale_mix_i(double h_scale_mix_i) { - this.h_scale_mix_i = h_scale_mix_i; - } - - /** - * Getter for property refPhaseBWRS. - * - * @return Value of property refPhaseBWRS. - */ - public neqsim.thermo.phase.PhaseCSPsrkEos getRefPhaseBWRS() { - return refPhaseBWRS; - } - - /** - * Setter for property refPhaseBWRS. - * - * @param refPhaseBWRS New value of property refPhaseBWRS. - */ - public void setRefPhaseBWRS(neqsim.thermo.phase.PhaseCSPsrkEos refPhaseBWRS) { - this.refPhaseBWRS = refPhaseBWRS; - } + * (-1.0 * h_scale_mix_i / refPhaseBWRS.getH_scale_mix() + * refPhaseBWRS.getRefBWRSPhase().getMolarVolume())) + * refPhaseBWRS.getRefBWRSPhase().getTemperature() / temperature + / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase(); + double term3 = refPhaseBWRS.getF_scale_mix() * refPhaseBWRS.getRefBWRSPhase().getF() * 1.0 + / temperature * 1.0 / refPhaseBWRS.getRefBWRSPhase().getNumberOfMolesInPhase() + * (1.0 / refPhaseBWRS.getNumberOfMolesInPhase() + - f_scale_mix_i / refPhaseBWRS.getF_scale_mix()) + * refPhaseBWRS.getRefBWRSPhase().getTemperature(); + // System.out.println("dFdN " + super.dFdN(phase, + // numberOfComponentphases,temperature,pressure)); + return term1 + term2 + term3; + } + + /** + * Getter for property f_scale_mix_i. + * + * @return Value of property f_scale_mix_i. + */ + public double getF_scale_mix_i() { + return f_scale_mix_i; + } + + /** + * Setter for property f_scale_mix_i. + * + * @param f_scale_mix_i New value of property f_scale_mix_i. + */ + public void setF_scale_mix_i(double f_scale_mix_i) { + this.f_scale_mix_i = f_scale_mix_i; + } + + /** + * Getter for property h_scale_mix_i. + * + * @return Value of property h_scale_mix_i. + */ + public double getH_scale_mix_i() { + return h_scale_mix_i; + } + + /** + * Setter for property h_scale_mix_i. + * + * @param h_scale_mix_i New value of property h_scale_mix_i. + */ + public void setH_scale_mix_i(double h_scale_mix_i) { + this.h_scale_mix_i = h_scale_mix_i; + } + + /** + * Getter for property refPhaseBWRS. + * + * @return Value of property refPhaseBWRS. + */ + public neqsim.thermo.phase.PhaseCSPsrkEos getRefPhaseBWRS() { + return refPhaseBWRS; + } + + /** + * Setter for property refPhaseBWRS. + * + * @param refPhaseBWRS New value of property refPhaseBWRS. + */ + public void setRefPhaseBWRS(neqsim.thermo.phase.PhaseCSPsrkEos refPhaseBWRS) { + this.refPhaseBWRS = refPhaseBWRS; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentDesmukhMather.java b/src/main/java/neqsim/thermo/component/ComponentDesmukhMather.java index a57ce5bfc5..4b62e6cc26 100644 --- a/src/main/java/neqsim/thermo/component/ComponentDesmukhMather.java +++ b/src/main/java/neqsim/thermo/component/ComponentDesmukhMather.java @@ -4,6 +4,7 @@ import org.apache.logging.log4j.Logger; import neqsim.thermo.phase.PhaseDesmukhMather; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -14,152 +15,131 @@ * @version $Id: $Id */ public class ComponentDesmukhMather extends ComponentGE { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - private double deshMathIonicDiameter = 1.0; - static Logger logger = LogManager.getLogger(ComponentDesmukhMather.class); + private double deshMathIonicDiameter = 1.0; + static Logger logger = LogManager.getLogger(ComponentDesmukhMather.class); - /** - *

- * Constructor for ComponentDesmukhMather. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentDesmukhMather(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; + /** + *

+ * Constructor for ComponentDesmukhMather. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentDesmukhMather(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + java.sql.ResultSet dataSet = null; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + if (!name.equals("default")) { try { - if (!component_name.equals("default")) { - try { - dataSet = database.getResultSet( - ("SELECT * FROM comptemp WHERE name='" + component_name + "'")); - dataSet.next(); - dataSet.getString("FORMULA"); - } catch (Exception e) { - dataSet.close(); - logger.info("no parameters in tempcomp -- trying comp.. " + component_name); - dataSet = database.getResultSet( - ("SELECT * FROM comp WHERE name='" + component_name + "'")); - dataSet.next(); - } - deshMathIonicDiameter = - Double.parseDouble(dataSet.getString("DeshMatIonicDiameter")); - } - } catch (Exception e) { - logger.error("error in comp", e); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error closing database.....", e); - } + dataSet = database.getResultSet(("SELECT * FROM comptemp WHERE name='" + name + "'")); + dataSet.next(); + dataSet.getString("FORMULA"); + } catch (Exception ex) { + dataSet.close(); + logger.info("no parameters in tempcomp -- trying comp.. " + name); + dataSet = database.getResultSet(("SELECT * FROM comp WHERE name='" + name + "'")); + dataSet.next(); } + deshMathIonicDiameter = Double.parseDouble(dataSet.getString("DeshMatIonicDiameter")); + } + } catch (Exception ex) { + logger.error("error in comp", ex); } + } - /** {@inheritDoc} */ - @Override - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] HValpha, double[][] HVgij, - double[][] intparam, String[][] mixRule) { - return getGamma(phase, numberOfComponents, temperature, pressure, phasetype); - } - - /** - *

- * getGamma. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @return a double - */ - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - double A = 1.174; + /** {@inheritDoc} */ + @Override + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double[][] HValpha, double[][] HVgij, double[][] intparam, + String[][] mixRule) { + return getGamma(phase, numberOfComponents, temperature, pressure, pt); + } - double B = 3.32384e9; - double Iion = ((PhaseDesmukhMather) phase).getIonicStrength(); - double temp = 0.0; + /** + *

+ * getGamma. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @return a double + */ + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + double A = 1.174; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - if (!phase.getComponent(i).getComponentName().equals("water")) { - temp += 2.0 * ((PhaseDesmukhMather) phase).getBetaDesMatij(i, getComponentNumber()) - * phase.getComponent(i).getMolality(phase);// phase.getComponent(i).getMolarity(phase); - } - } - // System.out.println("molality MDEA "+ - // phase.getComponent("MDEA").getMolality(phase)); + double B = 3.32384e9; + double Iion = ((PhaseDesmukhMather) phase).getIonicStrength(); + double temp = 0.0; - lngamma = -A * Math.pow(getIonicCharge(), 2.0) * Math.sqrt(Iion) - / (1.0 + B * deshMathIonicDiameter * 1e-10 * Math.sqrt(Iion)) + temp; - // else lngamma = 0.0; - // System.out.println("temp2 "+ - // -2.303*A*Math.pow(getIonicCharge(),2.0)*Math.sqrt(Iion)/(1.0+B*Math.sqrt(Iion))); - gamma = getMolality(phase) * ((PhaseDesmukhMather) phase).getSolventMolarMass() - * Math.exp(lngamma) / getx(); - lngamma = Math.log(gamma); - logger.info("gamma " + componentName + " " + gamma); - return gamma; + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + if (!phase.getComponent(i).getComponentName().equals("water")) { + temp += 2.0 * ((PhaseDesmukhMather) phase).getBetaDesMatij(i, getComponentNumber()) + * phase.getComponent(i).getMolality(phase); // phase.getComponent(i).getMolarity(phase); + } } + // System.out.println("molality MDEA "+ + // phase.getComponent("MDEA").getMolality(phase)); - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - // System.out.println("fug coef " + - // gamma*getAntoineVaporPressure(phase.getTemperature())/phase.getPressure()); - if (componentName.equals("water")) { - double watervol = 1.0 / 1000.0 * getMolarMass(); - double watervappres = getAntoineVaporPressure(phase.getTemperature()); - fugacityCoefficient = - gamma * watervappres - * Math.exp(watervol / (R * phase.getTemperature()) - * (phase.getPressure() - watervappres) * 1e5) - / phase.getPressure(); - } else if (ionicCharge == 0 && referenceStateType.equals("solvent")) { - fugacityCoefficient = - gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure(); - } else if (ionicCharge == 0 && referenceStateType.equals("solute")) { - fugacityCoefficient = - gamma * getHenryCoef(phase.getTemperature()) / phase.getPressure(); // sjekke - // denne - } else { - fugacityCoefficient = 1e-15; - // System.out.println("fug " + fugacityCoefficient); - } - logFugacityCoefficient = Math.log(fugacityCoefficient); - return fugacityCoefficient; - } + lngamma = -A * Math.pow(getIonicCharge(), 2.0) * Math.sqrt(Iion) + / (1.0 + B * deshMathIonicDiameter * 1e-10 * Math.sqrt(Iion)) + temp; + // else lngamma = 0.0; + // System.out.println("temp2 "+ + // -2.303*A*Math.pow(getIonicCharge(),2.0)*Math.sqrt(Iion)/(1.0+B*Math.sqrt(Iion))); + gamma = getMolality(phase) * ((PhaseDesmukhMather) phase).getSolventMolarMass() + * Math.exp(lngamma) / getx(); + lngamma = Math.log(gamma); + logger.info("gamma " + componentName + " " + gamma); + return gamma; + } - /** - * Getter for property lngamma. - * - * @return Value of property lngamma. - */ - public double getLngamma() { - return lngamma; + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase) { + // System.out.println("fug coef " + + // gamma*getAntoineVaporPressure(phase.getTemperature())/phase.getPressure()); + if (componentName.equals("water")) { + double watervol = 1.0 / 1000.0 * getMolarMass(); + double watervappres = getAntoineVaporPressure(phase.getTemperature()); + fugacityCoefficient = gamma * watervappres + * Math.exp( + watervol / (R * phase.getTemperature()) * (phase.getPressure() - watervappres) * 1e5) + / phase.getPressure(); + } else if (ionicCharge == 0 && referenceStateType.equals("solvent")) { + fugacityCoefficient = + gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure(); + } else if (ionicCharge == 0 && referenceStateType.equals("solute")) { + // TODO: sjekk denne + fugacityCoefficient = gamma * getHenryCoef(phase.getTemperature()) / phase.getPressure(); + } else { + fugacityCoefficient = 1e-15; + // System.out.println("fug " + fugacityCoefficient); } - /** {@inheritDoc} */ - @Override - public double getMolality(PhaseInterface phase) { - return getNumberOfMolesInPhase() / ((PhaseDesmukhMather) phase).getSolventWeight(); - } + return fugacityCoefficient; + } + + /** + * Getter for property lngamma. + * + * @return Value of property lngamma. + */ + public double getLngamma() { + return lngamma; + } + + /** {@inheritDoc} */ + @Override + public double getMolality(PhaseInterface phase) { + return getNumberOfMolesInPhase() / ((PhaseDesmukhMather) phase).getSolventWeight(); + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPA.java b/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPA.java index f86d65bb8c..cde1830079 100644 --- a/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPA.java +++ b/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPA.java @@ -12,650 +12,644 @@ * @version $Id: $Id */ public class ComponentElectrolyteCPA extends ComponentModifiedFurstElectrolyteEos - implements ComponentCPAInterface { - private static final long serialVersionUID = 1000; - - int cpaon = 1; - double[] xsite = new double[0]; - double[][] xsitedni = new double[0][0]; - double[] xsiteOld = new double[0]; - double[] xsitedV = new double[0]; - double[] xsitedT = new double[0]; - double[] xsitedTdT = new double[0]; - - /** - *

- * Constructor for ComponentElectrolyteCPA. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentElectrolyteCPA(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - xsite = new double[numberOfAssociationSites]; - xsitedni = new double[numberOfAssociationSites][100]; - xsitedV = new double[numberOfAssociationSites]; - xsitedT = new double[numberOfAssociationSites]; - xsitedTdT = new double[numberOfAssociationSites]; - xsiteOld = new double[numberOfAssociationSites]; - if (numberOfAssociationSites != 0 && cpaon == 1) { - // System.out.println("ass sites: " + numberOfAssociationSites); - // System.out.println("aSRK " + a + " aCPA " + aCPA); - // System.out.println("bSRK " + b + " bCPA " + bCPA); - for (int j = 0; j < getNumberOfAssociationSites(); j++) { - setXsite(j, 1.0); - setXsiteOld(j, 1.0); - setXsitedV(j, 0.0); - setXsitedT(j, 0.0); - } - if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - a = aCPA; - b = bCPA; - } - setAttractiveTerm(0); - } - // double[] surfTensInfluenceParamtemp = {-0.0286407191587279700, - // -1.85760887578596, 0.520588, -0.1386439759, 1.1216308727071944}; - // this.surfTensInfluenceParam = surfTensInfluenceParamtemp; - } - - /** - *

- * Constructor for ComponentElectrolyteCPA. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentElectrolyteCPA(int number, double TC, double PC, double M, double a, - double moles) { - super(number, TC, PC, M, a, moles); - xsite = new double[numberOfAssociationSites]; - xsitedni = new double[numberOfAssociationSites][100]; - xsitedV = new double[numberOfAssociationSites]; - xsitedT = new double[numberOfAssociationSites]; - xsitedTdT = new double[numberOfAssociationSites]; - xsiteOld = new double[numberOfAssociationSites]; - if (numberOfAssociationSites != 0 && cpaon == 1) { - for (int j = 0; j < getNumberOfAssociationSites(); j++) { - setXsite(j, 1.0); - setXsiteOld(j, 1.0); - setXsitedV(j, 0.0); - setXsitedT(j, 0.0); - } - if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - a = aCPA; - b = bCPA; - } - setAttractiveTerm(0); - } - // double[] surfTensInfluenceParamtemp = {-0.0286407191587279700, - // -1.85760887578596, 0.520588, -0.1386439759, 1.1216308727071944}; - // this.surfTensInfluenceParam = surfTensInfluenceParamtemp; - } - - /** {@inheritDoc} */ - @Override - public ComponentElectrolyteCPA clone() { - ComponentElectrolyteCPA clonedComponent = null; - try { - clonedComponent = (ComponentElectrolyteCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - clonedComponent.xsite = xsite.clone(); - System.arraycopy(this.xsite, 0, clonedComponent.xsite, 0, xsite.length); - clonedComponent.xsiteOld = xsiteOld.clone(); - System.arraycopy(this.xsiteOld, 0, clonedComponent.xsiteOld, 0, xsiteOld.length); - clonedComponent.xsitedV = xsitedV.clone(); - System.arraycopy(this.xsitedV, 0, clonedComponent.xsitedV, 0, xsitedV.length); - clonedComponent.xsitedT = xsitedT.clone(); - System.arraycopy(this.xsitedT, 0, clonedComponent.xsitedT, 0, xsitedT.length); - clonedComponent.xsitedTdT = xsitedTdT.clone(); - System.arraycopy(this.xsitedTdT, 0, clonedComponent.xsitedTdT, 0, xsitedTdT.length); - clonedComponent.xsitedni = xsitedni.clone(); - System.arraycopy(this.xsitedni, 0, clonedComponent.xsitedni, 0, xsitedni.length); - return clonedComponent; - } - - /** {@inheritDoc} */ - @Override - public double getVolumeCorrection() { - if ((getRacketZCPA() < 1.0e-10) && cpaon == 1) { - return 0.0; - } else { - setVolumeCorrectionT(getVolumeCorrectionT_CPA()); - setRacketZ(getRacketZCPA()); - return super.getVolumeCorrection(); - } - } - - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } - - /** {@inheritDoc} */ - @Override - public void setAttractiveTerm(int i) { - super.setAttractiveTerm(i); - if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - getAttractiveTerm().setm(mCPA); - } - } - - /** {@inheritDoc} */ - @Override - public void seta(double a) { - aCPA = a; - } - - /** {@inheritDoc} */ - @Override - public void setb(double a) { - bCPA = a; - } - - /** {@inheritDoc} */ - @Override - public double calca() { - if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - return aCPA; - } else { - return super.calca(); - } - } - - /** {@inheritDoc} */ - @Override - public double calcb() { - if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - return bCPA; - } else { - return super.calcb(); - } - } - - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); - double Fcpa = 0.0; - // if(phase.getPhaseType()==1) cpaon=0; - if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { - Fcpa = dFCPAdN(phase, numberOfComponents, temperature, pressure); - } - // System.out.println("Fsup " + Fsup + " fcpa " + Fcpa); - // System.out.println("i " + componentNumber + " dFCPAdn " + Fcpa); - return Fsup + cpaon * Fcpa; - } - - /** {@inheritDoc} */ - @Override - public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { - return super.dFdNdT(phase, numberOfComponents, temperature, pressure) - + cpaon * dFCPAdNdT(phase, numberOfComponents, temperature, pressure); - } else { - return super.dFdNdT(phase, numberOfComponents, temperature, pressure); - } - } - - /** {@inheritDoc} */ - @Override - public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - // System.out.println("dQdndV " + dFCPAdNdV(phase, numberOfComponents, - // temperature, pressure) + " dFdndV " + super.dFdNdV(phase, numberOfComponents, - // temperature, pressure)); - if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { - return super.dFdNdV(phase, numberOfComponents, temperature, pressure) - + cpaon * dFCPAdNdV(phase, numberOfComponents, temperature, pressure); - } else { - return super.dFdNdV(phase, numberOfComponents, temperature, pressure); - } - } - - /** {@inheritDoc} */ - @Override - public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - // System.out.println("ij " + componentNumber + " " + j + " dQCPAdndn " + - // dFCPAdNdN(j, phase, numberOfComponents, temperature, pressure)+ " dQsrkdndn " - // + super.dFdNdN(j, phase, numberOfComponents, temperature, pressure)); - // System.out.println("dFdndn " +(super.dFdNdN(j, phase, numberOfComponents, - // temperature, pressure) + dFCPAdNdN(j, phase, numberOfComponents, temperature, - // pressure))); - if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { - return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure) - + cpaon * dFCPAdNdN(j, phase, numberOfComponents, temperature, pressure); - } else { - return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure); - } - } - - /** - *

- * dFCPAdNdN. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double temp1 = 0; - for (int i = 0; i < numberOfAssociationSites; i++) { - temp1 += 1.0 / getXsite()[i] * getXsitedni(i, j); - } - double tot2 = 0.0; - for (int i = 0; i < phase.getComponent(j).getNumberOfAssociationSites(); i++) { - tot2 += calc_lngi(phase) - * (1.0 - ((ComponentElectrolyteCPA) phase.getComponent(j)).getXsite()[i]); - } - double tot1 = 1.0 / 2.0 * tot2; - - double tot4 = 0.0; - tot4 = 0.5 * ((PhaseCPAInterface) phase).getHcpatot() * calc_lngij(j, phase); - double tot10 = 0.0; - for (int kk = 0; kk < phase.getNumberOfComponents(); kk++) { - for (int k = 0; k < phase.getComponent(kk).getNumberOfAssociationSites(); k++) { - tot10 += -phase.getComponent(kk).getNumberOfMolesInPhase() - * ((ComponentElectrolyteCPA) phase.getComponent(kk)).getXsitedni(k, j); - } - } - double tot11 = tot10 / 2.0 * calc_lngi(phase); - - // System.out.println("dFCPAdndn " + (temp1 - tot1 - tot4 - tot11)); - return temp1 - tot1 - tot4 - tot11; - } - - /** - *

- * dFCPAdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - xi += Math.log(xsite[i]); - } - // System.out.println("dFCPAdn " + ((xi - ((PhaseCPAInterface) - // phase).getHcpatot() / 2.0 * calc_lngi(phase)))+ " " + componentNumber); - return (xi - ((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngi(phase)); - } - - /** - *

- * dFCPAdNdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - xi += (1.0 / xsite[i]) * xsitedV[i]; - } - - double tot1 = 0.0, tot2 = 0.0; - for (int k = 0; k < phase.getNumberOfComponents(); k++) { - tot2 = 0.0; - for (int i = 0; i < phase.getComponent(k).getNumberOfAssociationSites(); i++) { - tot2 -= calc_lngi(phase) - * ((ComponentElectrolyteCPA) phase.getComponent(k)).getXsitedV()[i]; - } - tot1 += 1.0 / 2.0 * tot2 * phase.getComponent(k).getNumberOfMolesInPhase(); - } - - double tot3 = 0.0, tot4 = 0.0; - for (int k = 0; k < phase.getNumberOfComponents(); k++) { - tot3 = 0.0; - for (int i = 0; i < phase.getComponent(k).getNumberOfAssociationSites(); i++) { - tot3 += (1.0 - ((ComponentElectrolyteCPA) phase.getComponent(k)).getXsite()[i]) - * calc_lngidV(phase); - } - tot4 += 0.5 * phase.getComponent(k).getNumberOfMolesInPhase() * tot3; - } - // System.out.println("dFCPAdndV " + (xi - tot1 - tot4)); - return xi - tot1 - tot4; - } - - /** - *

- * dFCPAdNdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - xi += 1.0 / xsite[i] * xsitedT[i]; - } - - double tot1 = 0.0, tot2 = 0.0; - for (int k = 0; k < phase.getNumberOfComponents(); k++) { - tot2 = 0.0; - for (int i = 0; i < phase.getComponent(k).getNumberOfAssociationSites(); i++) { - tot2 -= ((ComponentElectrolyteCPA) phase.getComponent(k)).getXsitedT()[i]; - } - tot1 += tot2 * phase.getComponent(k).getNumberOfMolesInPhase(); - } - // System.out.println("dFCPAdndT " + (xi - 1.0 / 2.0 * calc_lngi(phase) * - // tot1)); - // System.out.println("dlngdni " + calc_lngi(phase)); - return xi - 1.0 / 2.0 * calc_lngi(phase) * tot1; - } - - /** - *

- * calc_hCPAdn. - *

- * - * @return a double - */ - public double calc_hCPAdn() { - double hdn = 0.0; - for (int i = 0; i < getNumberOfAssociationSites(); i++) { - hdn = 1.0 - getXsite()[i]; - } - return hdn; - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdXi(int site, PhaseInterface phase) { - return getNumberOfMolesInPhase() * (1.0 / xsite[site] - 1.0 / 2.0); - } - - /** - *

- * dFCPAdXidni. - *

- * - * @param site a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double dFCPAdXidni(int site, PhaseInterface phase) { - return (1.0 / xsite[site] - 1.0 / 2.0); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdXidXj(int sitei, int sitej, int compj, PhaseInterface phase) { - double fact = 0.0; - if (sitei == sitej && compj == componentNumber) { - fact = 1.0; - } - return -getNumberOfMolesInPhase() / Math.pow(xsite[sitei], 2.0) * fact - - getNumberOfMolesInPhase() * phase.getComponent(compj).getNumberOfMolesInPhase() - * ((PhaseCPAInterface) phase).getCpamix().calcDelta(sitei, sitej, - componentNumber, compj, phase, phase.getTemperature(), - phase.getPressure(), phase.getNumberOfComponents()); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdVdXi(int site, PhaseInterface phase) { - return -1.0 / (2.0 * phase.getTotalVolume()) - * (1.0 - phase.getTotalVolume() * ((PhaseCPAInterface) phase).getGcpav()) - * getNumberOfMolesInPhase(); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdNdXi(int site, PhaseInterface phase) { - double xi = 1.0 / xsite[site]; - - // return xi - tempp; - return xi + getNumberOfMolesInPhase() / 2.0 * calc_lngi(phase); - } - - /** - *

- * dFCPAdNdXidXdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double dFCPAdNdXidXdV(PhaseInterface phase) { - double temp = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - temp += dFCPAdNdXi(i, phase) * getXsitedV()[i]; - } - return temp; - } - - /** - *

- * calc_lngi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngi(PhaseInterface phase) { - return 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) - / ((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())); - } - - /** - *

- * calc_lngidV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngidV(PhaseInterface phase) { - return 2.0 * getBi() * (10.0) - / ((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())) - - 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) - * (2.0 * 32.0 * phase.getTotalVolume() - 12.0 * phase.getB()) - / Math.pow(((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())), 2.0); - } - - /** - *

- * calc_lngij. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngij(int j, PhaseInterface phase) { - return 2.0 * getBij(j) * (10.0 * phase.getTotalVolume() - phase.getB()) - / ((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())); - } - - /** {@inheritDoc} */ - @Override - public double[] getXsite() { - return this.xsite; - } - - /** - * Setter for property xsite. - * - * @param xsite New value of property xsite. - */ - public void setXsite(double[] xsite) { - this.xsite = xsite; - } - - /** {@inheritDoc} */ - @Override - public void setXsite(int i, double xsite) { - this.xsite[i] = xsite; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedV() { - return this.xsitedV; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedV(int i, double xsitedV) { - this.xsitedV[i] = xsitedV; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedT() { - return this.xsitedT; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedTdT() { - return this.xsitedTdT; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedT(int i, double xsitedT) { - this.xsitedT[i] = xsitedT; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedTdT(int i, double xsitedTdT) { - this.xsitedTdT[i] = xsitedTdT; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsiteOld() { - return this.xsiteOld; - } - - /** - * Setter for property xsite. - * - * @param xsiteOld an array of {@link double} objects - */ - public void setXsiteOld(double[] xsiteOld) { - this.xsiteOld = xsiteOld; - } - - /** {@inheritDoc} */ - @Override - public void setXsiteOld(int i, double xsiteOld) { - this.xsiteOld[i] = xsiteOld; - } - - /** - *

- * Getter for the field xsitedni. - *

- * - * @return the xsitedni - */ - public double[][] getXsitedni() { - return xsitedni; - } - - /** - *

- * Getter for the field xsitedni. - *

- * - * @param xNumb a int - * @param compNumbi a int - * @return a double - */ - public double getXsitedni(int xNumb, int compNumbi) { - return xsitedni[xNumb][compNumbi]; - } - - /** - *

- * Setter for the field xsitedni. - *

- * - * @param xsitedni the xsitedni to set - */ - public void setXsitedni(double[][] xsitedni) { - this.xsitedni = xsitedni; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedni(int xnumb, int compnumb, double val) { - xsitedni[xnumb][compnumb] = val; - } - - /** {@inheritDoc} */ - @Override - public double getSurfaceTenisionInfluenceParameter(double temperature) { - double AA = 0, BB = 0; - if (componentName.equals("water")) { - double TR = 1.0 - temperature / getTC(); - AA = -2.2367E-16; - BB = 2.83732E-16; - // return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB); - - double AAW1 = 2.2505E-16; - double AAW2 = -1.3646E-16; - - return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) - * (AAW1 + AAW2 * TR + 0.5113e-16 * TR * TR); - } // old - else if (componentName.equals("water2")) { /// THis is the old method from - double TR = 1.0 - temperature / getTC(); - AA = -2.2367E-16; - BB = 2.83732E-16; - return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB); - } else if (componentName.equals("MEG")) { - return 1.04874809905393E-19; - } else if (componentName.equals("TEG")) { - return 7.46824658716429E-19; - } else { - return super.getSurfaceTenisionInfluenceParameter(temperature); - } - } + implements ComponentCPAInterface { + private static final long serialVersionUID = 1000; + + int cpaon = 1; + double[] xsite = new double[0]; + double[][] xsitedni = new double[0][0]; + double[] xsiteOld = new double[0]; + double[] xsitedV = new double[0]; + double[] xsitedT = new double[0]; + double[] xsitedTdT = new double[0]; + + /** + *

+ * Constructor for ComponentElectrolyteCPA. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentElectrolyteCPA(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + xsite = new double[numberOfAssociationSites]; + xsitedni = new double[numberOfAssociationSites][100]; + xsitedV = new double[numberOfAssociationSites]; + xsitedT = new double[numberOfAssociationSites]; + xsitedTdT = new double[numberOfAssociationSites]; + xsiteOld = new double[numberOfAssociationSites]; + if (numberOfAssociationSites != 0 && cpaon == 1) { + // System.out.println("ass sites: " + numberOfAssociationSites); + // System.out.println("aSRK " + a + " aCPA " + aCPA); + // System.out.println("bSRK " + b + " bCPA " + bCPA); + for (int j = 0; j < getNumberOfAssociationSites(); j++) { + setXsite(j, 1.0); + setXsiteOld(j, 1.0); + setXsitedV(j, 0.0); + setXsitedT(j, 0.0); + } + if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + a = aCPA; + b = bCPA; + } + setAttractiveTerm(0); + } + // double[] surfTensInfluenceParamtemp = {-0.0286407191587279700, + // -1.85760887578596, 0.520588, -0.1386439759, 1.1216308727071944}; + // this.surfTensInfluenceParam = surfTensInfluenceParamtemp; + } + + /** + *

+ * Constructor for ComponentElectrolyteCPA. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentElectrolyteCPA(int number, double TC, double PC, double M, double a, + double moles) { + super(number, TC, PC, M, a, moles); + xsite = new double[numberOfAssociationSites]; + xsitedni = new double[numberOfAssociationSites][100]; + xsitedV = new double[numberOfAssociationSites]; + xsitedT = new double[numberOfAssociationSites]; + xsitedTdT = new double[numberOfAssociationSites]; + xsiteOld = new double[numberOfAssociationSites]; + if (numberOfAssociationSites != 0 && cpaon == 1) { + for (int j = 0; j < getNumberOfAssociationSites(); j++) { + setXsite(j, 1.0); + setXsiteOld(j, 1.0); + setXsitedV(j, 0.0); + setXsitedT(j, 0.0); + } + if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + a = aCPA; + b = bCPA; + } + setAttractiveTerm(0); + } + // double[] surfTensInfluenceParamtemp = {-0.0286407191587279700, + // -1.85760887578596, 0.520588, -0.1386439759, 1.1216308727071944}; + // this.surfTensInfluenceParam = surfTensInfluenceParamtemp; + } + + /** {@inheritDoc} */ + @Override + public ComponentElectrolyteCPA clone() { + ComponentElectrolyteCPA clonedComponent = null; + try { + clonedComponent = (ComponentElectrolyteCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + + clonedComponent.xsite = xsite.clone(); + System.arraycopy(this.xsite, 0, clonedComponent.xsite, 0, xsite.length); + clonedComponent.xsiteOld = xsiteOld.clone(); + System.arraycopy(this.xsiteOld, 0, clonedComponent.xsiteOld, 0, xsiteOld.length); + clonedComponent.xsitedV = xsitedV.clone(); + System.arraycopy(this.xsitedV, 0, clonedComponent.xsitedV, 0, xsitedV.length); + clonedComponent.xsitedT = xsitedT.clone(); + System.arraycopy(this.xsitedT, 0, clonedComponent.xsitedT, 0, xsitedT.length); + clonedComponent.xsitedTdT = xsitedTdT.clone(); + System.arraycopy(this.xsitedTdT, 0, clonedComponent.xsitedTdT, 0, xsitedTdT.length); + clonedComponent.xsitedni = xsitedni.clone(); + System.arraycopy(this.xsitedni, 0, clonedComponent.xsitedni, 0, xsitedni.length); + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public double getVolumeCorrection() { + if ((getRacketZCPA() < 1.0e-10) && cpaon == 1) { + return 0.0; + } else { + setVolumeCorrectionT(getVolumeCorrectionT_CPA()); + setRacketZ(getRacketZCPA()); + return super.getVolumeCorrection(); + } + } + + /** {@inheritDoc} */ + @Override + public void setAttractiveTerm(int i) { + super.setAttractiveTerm(i); + if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + getAttractiveTerm().setm(mCPA); + } + } + + /** {@inheritDoc} */ + @Override + public void seta(double a) { + aCPA = a; + } + + /** {@inheritDoc} */ + @Override + public void setb(double a) { + bCPA = a; + } + + /** {@inheritDoc} */ + @Override + public double calca() { + if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + return aCPA; + } else { + return super.calca(); + } + } + + /** {@inheritDoc} */ + @Override + public double calcb() { + if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + return bCPA; + } else { + return super.calcb(); + } + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); + double Fcpa = 0.0; + // if(phase.getPhaseType()==1) cpaon=0; + if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { + Fcpa = dFCPAdN(phase, numberOfComponents, temperature, pressure); + } + // System.out.println("Fsup " + Fsup + " fcpa " + Fcpa); + // System.out.println("i " + componentNumber + " dFCPAdn " + Fcpa); + return Fsup + cpaon * Fcpa; + } + + /** {@inheritDoc} */ + @Override + public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { + return super.dFdNdT(phase, numberOfComponents, temperature, pressure) + + cpaon * dFCPAdNdT(phase, numberOfComponents, temperature, pressure); + } else { + return super.dFdNdT(phase, numberOfComponents, temperature, pressure); + } + } + + /** {@inheritDoc} */ + @Override + public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + // System.out.println("dQdndV " + dFCPAdNdV(phase, numberOfComponents, + // temperature, pressure) + " dFdndV " + super.dFdNdV(phase, numberOfComponents, + // temperature, pressure)); + if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { + return super.dFdNdV(phase, numberOfComponents, temperature, pressure) + + cpaon * dFCPAdNdV(phase, numberOfComponents, temperature, pressure); + } else { + return super.dFdNdV(phase, numberOfComponents, temperature, pressure); + } + } + + /** {@inheritDoc} */ + @Override + public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + // System.out.println("ij " + componentNumber + " " + j + " dQCPAdndn " + + // dFCPAdNdN(j, phase, numberOfComponents, temperature, pressure)+ " dQsrkdndn " + // + super.dFdNdN(j, phase, numberOfComponents, temperature, pressure)); + // System.out.println("dFdndn " +(super.dFdNdN(j, phase, numberOfComponents, + // temperature, pressure) + dFCPAdNdN(j, phase, numberOfComponents, temperature, + // pressure))); + if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { + return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure) + + cpaon * dFCPAdNdN(j, phase, numberOfComponents, temperature, pressure); + } else { + return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure); + } + } + + /** + *

+ * dFCPAdNdN. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double temp1 = 0; + for (int i = 0; i < numberOfAssociationSites; i++) { + temp1 += 1.0 / getXsite()[i] * getXsitedni(i, j); + } + double tot2 = 0.0; + for (int i = 0; i < phase.getComponent(j).getNumberOfAssociationSites(); i++) { + tot2 += calc_lngi(phase) + * (1.0 - ((ComponentElectrolyteCPA) phase.getComponent(j)).getXsite()[i]); + } + double tot1 = 1.0 / 2.0 * tot2; + + double tot4 = 0.0; + tot4 = 0.5 * ((PhaseCPAInterface) phase).getHcpatot() * calc_lngij(j, phase); + double tot10 = 0.0; + for (int kk = 0; kk < phase.getNumberOfComponents(); kk++) { + for (int k = 0; k < phase.getComponent(kk).getNumberOfAssociationSites(); k++) { + tot10 += -phase.getComponent(kk).getNumberOfMolesInPhase() + * ((ComponentElectrolyteCPA) phase.getComponent(kk)).getXsitedni(k, j); + } + } + double tot11 = tot10 / 2.0 * calc_lngi(phase); + + // System.out.println("dFCPAdndn " + (temp1 - tot1 - tot4 - tot11)); + return temp1 - tot1 - tot4 - tot11; + } + + /** + *

+ * dFCPAdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + xi += Math.log(xsite[i]); + } + // System.out.println("dFCPAdn " + ((xi - ((PhaseCPAInterface) + // phase).getHcpatot() / 2.0 * calc_lngi(phase)))+ " " + componentNumber); + return (xi - ((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngi(phase)); + } + + /** + *

+ * dFCPAdNdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + xi += (1.0 / xsite[i]) * xsitedV[i]; + } + + double tot1 = 0.0; + double tot2 = 0.0; + for (int k = 0; k < phase.getNumberOfComponents(); k++) { + tot2 = 0.0; + for (int i = 0; i < phase.getComponent(k).getNumberOfAssociationSites(); i++) { + tot2 -= + calc_lngi(phase) * ((ComponentElectrolyteCPA) phase.getComponent(k)).getXsitedV()[i]; + } + tot1 += 1.0 / 2.0 * tot2 * phase.getComponent(k).getNumberOfMolesInPhase(); + } + + double tot3 = 0.0; + double tot4 = 0.0; + for (int k = 0; k < phase.getNumberOfComponents(); k++) { + tot3 = 0.0; + for (int i = 0; i < phase.getComponent(k).getNumberOfAssociationSites(); i++) { + tot3 += (1.0 - ((ComponentElectrolyteCPA) phase.getComponent(k)).getXsite()[i]) + * calc_lngidV(phase); + } + tot4 += 0.5 * phase.getComponent(k).getNumberOfMolesInPhase() * tot3; + } + // System.out.println("dFCPAdndV " + (xi - tot1 - tot4)); + return xi - tot1 - tot4; + } + + /** + *

+ * dFCPAdNdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + xi += 1.0 / xsite[i] * xsitedT[i]; + } + + double tot1 = 0.0; + double tot2 = 0.0; + for (int k = 0; k < phase.getNumberOfComponents(); k++) { + tot2 = 0.0; + for (int i = 0; i < phase.getComponent(k).getNumberOfAssociationSites(); i++) { + tot2 -= ((ComponentElectrolyteCPA) phase.getComponent(k)).getXsitedT()[i]; + } + tot1 += tot2 * phase.getComponent(k).getNumberOfMolesInPhase(); + } + // System.out.println("dFCPAdndT " + (xi - 1.0 / 2.0 * calc_lngi(phase) * + // tot1)); + // System.out.println("dlngdni " + calc_lngi(phase)); + return xi - 1.0 / 2.0 * calc_lngi(phase) * tot1; + } + + /** + *

+ * calc_hCPAdn. + *

+ * + * @return a double + */ + public double calc_hCPAdn() { + double hdn = 0.0; + for (int i = 0; i < getNumberOfAssociationSites(); i++) { + hdn = 1.0 - getXsite()[i]; + } + return hdn; + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdXi(int site, PhaseInterface phase) { + return getNumberOfMolesInPhase() * (1.0 / xsite[site] - 1.0 / 2.0); + } + + /** + *

+ * dFCPAdXidni. + *

+ * + * @param site a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double dFCPAdXidni(int site, PhaseInterface phase) { + return (1.0 / xsite[site] - 1.0 / 2.0); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdXidXj(int sitei, int sitej, int compj, PhaseInterface phase) { + double fact = 0.0; + if (sitei == sitej && compj == componentNumber) { + fact = 1.0; + } + return -getNumberOfMolesInPhase() / Math.pow(xsite[sitei], 2.0) * fact + - getNumberOfMolesInPhase() * phase.getComponent(compj).getNumberOfMolesInPhase() + * ((PhaseCPAInterface) phase).getCpamix().calcDelta(sitei, sitej, componentNumber, + compj, phase, phase.getTemperature(), phase.getPressure(), + phase.getNumberOfComponents()); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdVdXi(int site, PhaseInterface phase) { + return -1.0 / (2.0 * phase.getTotalVolume()) + * (1.0 - phase.getTotalVolume() * ((PhaseCPAInterface) phase).getGcpav()) + * getNumberOfMolesInPhase(); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdNdXi(int site, PhaseInterface phase) { + double xi = 1.0 / xsite[site]; + + // return xi - tempp; + return xi + getNumberOfMolesInPhase() / 2.0 * calc_lngi(phase); + } + + /** + *

+ * dFCPAdNdXidXdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double dFCPAdNdXidXdV(PhaseInterface phase) { + double temp = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + temp += dFCPAdNdXi(i, phase) * getXsitedV()[i]; + } + return temp; + } + + /** + *

+ * calc_lngi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngi(PhaseInterface phase) { + return 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) + / ((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())); + } + + /** + *

+ * calc_lngidV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngidV(PhaseInterface phase) { + return 2.0 * getBi() * (10.0) + / ((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())) + - 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) + * (2.0 * 32.0 * phase.getTotalVolume() - 12.0 * phase.getB()) + / Math.pow(((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())), 2.0); + } + + /** + *

+ * calc_lngij. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngij(int j, PhaseInterface phase) { + return 2.0 * getBij(j) * (10.0 * phase.getTotalVolume() - phase.getB()) + / ((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())); + } + + /** {@inheritDoc} */ + @Override + public double[] getXsite() { + return this.xsite; + } + + /** + * Setter for property xsite. + * + * @param xsite New value of property xsite. + */ + public void setXsite(double[] xsite) { + this.xsite = xsite; + } + + /** {@inheritDoc} */ + @Override + public void setXsite(int i, double xsite) { + this.xsite[i] = xsite; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedV() { + return this.xsitedV; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedV(int i, double xsitedV) { + this.xsitedV[i] = xsitedV; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedT() { + return this.xsitedT; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedTdT() { + return this.xsitedTdT; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedT(int i, double xsitedT) { + this.xsitedT[i] = xsitedT; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedTdT(int i, double xsitedTdT) { + this.xsitedTdT[i] = xsitedTdT; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsiteOld() { + return this.xsiteOld; + } + + /** + * Setter for property xsite. + * + * @param xsiteOld an array of type double + */ + public void setXsiteOld(double[] xsiteOld) { + this.xsiteOld = xsiteOld; + } + + /** {@inheritDoc} */ + @Override + public void setXsiteOld(int i, double xsiteOld) { + this.xsiteOld[i] = xsiteOld; + } + + /** + *

+ * Getter for the field xsitedni. + *

+ * + * @return the xsitedni + */ + public double[][] getXsitedni() { + return xsitedni; + } + + /** + *

+ * Getter for the field xsitedni. + *

+ * + * @param xNumb a int + * @param compNumbi a int + * @return a double + */ + public double getXsitedni(int xNumb, int compNumbi) { + return xsitedni[xNumb][compNumbi]; + } + + /** + *

+ * Setter for the field xsitedni. + *

+ * + * @param xsitedni the xsitedni to set + */ + public void setXsitedni(double[][] xsitedni) { + this.xsitedni = xsitedni; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedni(int xnumb, int compnumb, double val) { + xsitedni[xnumb][compnumb] = val; + } + + /** {@inheritDoc} */ + @Override + public double getSurfaceTenisionInfluenceParameter(double temperature) { + double AA = 0; + double BB = 0; + if (componentName.equals("water")) { + double TR = 1.0 - temperature / getTC(); + AA = -2.2367E-16; + BB = 2.83732E-16; + // return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB); + + double AAW1 = 2.2505E-16; + double AAW2 = -1.3646E-16; + + return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AAW1 + AAW2 * TR + 0.5113e-16 * TR * TR); + } else if (componentName.equals("water2")) { // THis is the old method from + double TR = 1.0 - temperature / getTC(); + AA = -2.2367E-16; + BB = 2.83732E-16; + return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB); + } else if (componentName.equals("MEG")) { + return 1.04874809905393E-19; + } else if (componentName.equals("TEG")) { + return 7.46824658716429E-19; + } else { + return super.getSurfaceTenisionInfluenceParameter(temperature); + } + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPAOld.java b/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPAOld.java index bd1ead1ae3..8405866e56 100644 --- a/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPAOld.java +++ b/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPAOld.java @@ -14,411 +14,402 @@ * @version $Id: $Id */ public class ComponentElectrolyteCPAOld extends ComponentModifiedFurstElectrolyteEos - implements ComponentCPAInterface { - private static final long serialVersionUID = 1000; - - int cpaon = 1; - - private double[][] xsitedni = new double[0][0]; - double[] xsite = new double[0]; - double[] xsiteOld = new double[0]; - double[] xsitedV = new double[0]; - double[] xsitedT = new double[0]; - static Logger logger = LogManager.getLogger(ComponentElectrolyteCPAOld.class); - - /** - *

- * Constructor for ComponentElectrolyteCPAOld. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentElectrolyteCPAOld(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - xsite = new double[numberOfAssociationSites]; - xsitedV = new double[numberOfAssociationSites]; - xsiteOld = new double[numberOfAssociationSites]; - xsitedT = new double[numberOfAssociationSites]; - if (numberOfAssociationSites != 0 && cpaon == 1) { - logger.info("ass sites: " + numberOfAssociationSites); - logger.info("aSRK " + a + " aCPA " + aCPA); - logger.info("bSRK " + b + " bCPA " + bCPA); - for (int j = 0; j < getNumberOfAssociationSites(); j++) { - setXsite(j, 1.0); - setXsiteOld(j, 1.0); - setXsitedV(j, 0.0); - setXsitedT(j, 0.0); - } - if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - a = aCPA; - b = bCPA; - } - setAttractiveTerm(0); - } - } - - /** - *

- * Constructor for ComponentElectrolyteCPAOld. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentElectrolyteCPAOld(int number, double TC, double PC, double M, double a, - double moles) { - super(number, TC, PC, M, a, moles); - xsite = new double[numberOfAssociationSites]; - xsitedV = new double[numberOfAssociationSites]; - xsiteOld = new double[numberOfAssociationSites]; - xsitedT = new double[numberOfAssociationSites]; - if (numberOfAssociationSites != 0 && cpaon == 1) { - for (int j = 0; j < getNumberOfAssociationSites(); j++) { - setXsite(j, 1.0); - setXsiteOld(j, 1.0); - setXsitedV(j, 0.0); - setXsitedT(j, 0.0); - } - if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - a = aCPA; - b = bCPA; - } - setAttractiveTerm(0); - } - } - - /** {@inheritDoc} */ - @Override - public ComponentElectrolyteCPAOld clone() { - ComponentElectrolyteCPAOld clonedComponent = null; - try { - clonedComponent = (ComponentElectrolyteCPAOld) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - clonedComponent.xsite = xsite.clone(); - System.arraycopy(this.xsite, 0, clonedComponent.xsite, 0, xsite.length); - clonedComponent.xsiteOld = xsiteOld.clone(); - System.arraycopy(this.xsiteOld, 0, clonedComponent.xsiteOld, 0, xsiteOld.length); - clonedComponent.xsitedV = xsitedV.clone(); - System.arraycopy(this.xsitedV, 0, clonedComponent.xsitedV, 0, xsitedV.length); - clonedComponent.xsitedT = xsitedT.clone(); - System.arraycopy(this.xsitedT, 0, clonedComponent.xsitedT, 0, xsitedT.length); - return clonedComponent; - } - - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } - - /** {@inheritDoc} */ - @Override - public double getVolumeCorrection() { - if ((aCPA > 1.0e-10) && cpaon == 1) { - return 0.0; - } else { - return super.getVolumeCorrection(); - } - } - - /** {@inheritDoc} */ - @Override - public void setAttractiveTerm(int i) { - super.setAttractiveTerm(i); - if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - getAttractiveTerm().setm(mCPA); - } - } - - /** {@inheritDoc} */ - @Override - public void seta(double a) { - aCPA = a; - } - - /** {@inheritDoc} */ - @Override - public void setb(double a) { - bCPA = a; - } - - /** {@inheritDoc} */ - @Override - public double calca() { - if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - return aCPA; - } else { - return super.calca(); - } - } - - /** {@inheritDoc} */ - @Override - public double calcb() { - if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - return bCPA; - } else { - return super.calcb(); - } - } - - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); - double Fcpa = 0.0; - // if(phase.getPhaseType()==1) cpaon=0; - Fcpa = dFCPAdN(phase, numberOfComponents, temperature, pressure); - // System.out.println("Fsup " + Fsup + " fcpa " + Fcpa); - return Fsup + cpaon * Fcpa; - } - - /** {@inheritDoc} */ - @Override - public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdT(phase, numberOfComponents, temperature, pressure) - + dFCPAdNdT(phase, numberOfComponents, temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdV(phase, numberOfComponents, temperature, pressure) - + dFCPAdNdV(phase, numberOfComponents, temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure); - } - - /** - *

- * dFCPAdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - xi += Math.log(xsite[i]); - } - return (xi - ((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngi(phase)); - } - - /** - *

- * dFCPAdNdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = dFCPAdNdXidXdV(phase); - double xi2 = -((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngidV(phase); - return xi + xi2; - } - - /** - *

- * dFCPAdNdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - xi += (1.0 / xsite[i] - 1.0 / 2.0) * xsitedT[i]; - } - return xi; - } - - /** - *

- * calc_lngidV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngidV(PhaseInterface phase) { - return 2.0 * getBi() * (10.0) - / ((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())) - - 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) - * (32 * Math.pow(phase.getTotalVolume(), 2.0) - - 12.0 * phase.getTotalVolume() * phase.getB() - + Math.pow(phase.getB(), 2.0)) - / Math.pow(((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())), 2.0); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdVdXi(int site, PhaseInterface phase) { - return 1.0 / (2.0 * phase.getTotalVolume()) - * (1.0 - phase.getTotalVolume() * ((PhaseCPAInterface) phase).getGcpav()) - * getNumberOfMolesInPhase(); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdNdXi(int site, PhaseInterface phase) { - double xi = 1.0 / xsite[site]; - - // return xi - tempp; - return xi + getNumberOfMolesInPhase() / 2.0 * calc_lngi(phase); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdXidXj(int sitei, int sitej, int compj, PhaseInterface phase) { - return 0.0; - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdXi(int site, PhaseInterface phase) { - return 0.0; - } - - /** - *

- * dFCPAdNdXidXdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double dFCPAdNdXidXdV(PhaseInterface phase) { - double temp = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - temp += dFCPAdNdXi(i, phase) * getXsitedV()[i]; - } - return temp; - } - - /** - *

- * calc_lngi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngi(PhaseInterface phase) { - return 0.475 / (1.0 - 0.475 * phase.getB() / phase.getTotalVolume()) * getBi() - / phase.getTotalVolume(); - } - - /** {@inheritDoc} */ - @Override - public double[] getXsite() { - return this.xsite; - } - - /** - * Setter for property xsite. - * - * @param xsite New value of property xsite. - */ - public void setXsite(double[] xsite) { - this.xsite = xsite; - } - - /** {@inheritDoc} */ - @Override - public void setXsite(int i, double xsite) { - this.xsite[i] = xsite; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedV() { - return this.xsitedV; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedV(int i, double xsitedV) { - this.xsitedV[i] = xsitedV; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsiteOld() { - return this.xsiteOld; - } - - /** - * Setter for property xsite. - * - * @param xsiteOld an array of {@link double} objects - */ - public void setXsiteOld(double[] xsiteOld) { - this.xsiteOld = xsiteOld; - } - - /** {@inheritDoc} */ - @Override - public void setXsiteOld(int i, double xsiteOld) {} - - /** {@inheritDoc} */ - @Override - public double[] getXsitedT() { - return null; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedTdT() { - return null; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedT(int i, double xsitedT) {} - - /** {@inheritDoc} */ - @Override - public void setXsitedTdT(int i, double xsitedT) {} - - /** {@inheritDoc} */ - @Override - public void setXsitedni(int xnumb, int compnumb, double val) { - xsitedni[xnumb][compnumb] = val; - } + implements ComponentCPAInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentElectrolyteCPAOld.class); + + int cpaon = 1; + + private double[][] xsitedni = new double[0][0]; + double[] xsite = new double[0]; + double[] xsiteOld = new double[0]; + double[] xsitedV = new double[0]; + double[] xsitedT = new double[0]; + + /** + *

+ * Constructor for ComponentElectrolyteCPAOld. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentElectrolyteCPAOld(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + xsite = new double[numberOfAssociationSites]; + xsitedV = new double[numberOfAssociationSites]; + xsiteOld = new double[numberOfAssociationSites]; + xsitedT = new double[numberOfAssociationSites]; + if (numberOfAssociationSites != 0 && cpaon == 1) { + logger.info("ass sites: " + numberOfAssociationSites); + logger.info("aSRK " + a + " aCPA " + aCPA); + logger.info("bSRK " + b + " bCPA " + bCPA); + for (int j = 0; j < getNumberOfAssociationSites(); j++) { + setXsite(j, 1.0); + setXsiteOld(j, 1.0); + setXsitedV(j, 0.0); + setXsitedT(j, 0.0); + } + if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + a = aCPA; + b = bCPA; + } + setAttractiveTerm(0); + } + } + + /** + *

+ * Constructor for ComponentElectrolyteCPAOld. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentElectrolyteCPAOld(int number, double TC, double PC, double M, double a, + double moles) { + super(number, TC, PC, M, a, moles); + xsite = new double[numberOfAssociationSites]; + xsitedV = new double[numberOfAssociationSites]; + xsiteOld = new double[numberOfAssociationSites]; + xsitedT = new double[numberOfAssociationSites]; + if (numberOfAssociationSites != 0 && cpaon == 1) { + for (int j = 0; j < getNumberOfAssociationSites(); j++) { + setXsite(j, 1.0); + setXsiteOld(j, 1.0); + setXsitedV(j, 0.0); + setXsitedT(j, 0.0); + } + if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + a = aCPA; + b = bCPA; + } + setAttractiveTerm(0); + } + } + + /** {@inheritDoc} */ + @Override + public ComponentElectrolyteCPAOld clone() { + ComponentElectrolyteCPAOld clonedComponent = null; + try { + clonedComponent = (ComponentElectrolyteCPAOld) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + clonedComponent.xsite = xsite.clone(); + System.arraycopy(this.xsite, 0, clonedComponent.xsite, 0, xsite.length); + clonedComponent.xsiteOld = xsiteOld.clone(); + System.arraycopy(this.xsiteOld, 0, clonedComponent.xsiteOld, 0, xsiteOld.length); + clonedComponent.xsitedV = xsitedV.clone(); + System.arraycopy(this.xsitedV, 0, clonedComponent.xsitedV, 0, xsitedV.length); + clonedComponent.xsitedT = xsitedT.clone(); + System.arraycopy(this.xsitedT, 0, clonedComponent.xsitedT, 0, xsitedT.length); + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public double getVolumeCorrection() { + if ((aCPA > 1.0e-10) && cpaon == 1) { + return 0.0; + } else { + return super.getVolumeCorrection(); + } + } + + /** {@inheritDoc} */ + @Override + public void setAttractiveTerm(int i) { + super.setAttractiveTerm(i); + if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + getAttractiveTerm().setm(mCPA); + } + } + + /** {@inheritDoc} */ + @Override + public void seta(double a) { + aCPA = a; + } + + /** {@inheritDoc} */ + @Override + public void setb(double a) { + bCPA = a; + } + + /** {@inheritDoc} */ + @Override + public double calca() { + if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + return aCPA; + } else { + return super.calca(); + } + } + + /** {@inheritDoc} */ + @Override + public double calcb() { + if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + return bCPA; + } else { + return super.calcb(); + } + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); + double Fcpa = 0.0; + // if(phase.getPhaseType()==1) cpaon=0; + Fcpa = dFCPAdN(phase, numberOfComponents, temperature, pressure); + // System.out.println("Fsup " + Fsup + " fcpa " + Fcpa); + return Fsup + cpaon * Fcpa; + } + + /** {@inheritDoc} */ + @Override + public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdT(phase, numberOfComponents, temperature, pressure) + + dFCPAdNdT(phase, numberOfComponents, temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdV(phase, numberOfComponents, temperature, pressure) + + dFCPAdNdV(phase, numberOfComponents, temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure); + } + + /** + *

+ * dFCPAdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + xi += Math.log(xsite[i]); + } + return (xi - ((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngi(phase)); + } + + /** + *

+ * dFCPAdNdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = dFCPAdNdXidXdV(phase); + double xi2 = -((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngidV(phase); + return xi + xi2; + } + + /** + *

+ * dFCPAdNdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + xi += (1.0 / xsite[i] - 1.0 / 2.0) * xsitedT[i]; + } + return xi; + } + + /** + *

+ * calc_lngidV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngidV(PhaseInterface phase) { + return 2.0 * getBi() * (10.0) + / ((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())) + - 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) + * (32 * Math.pow(phase.getTotalVolume(), 2.0) + - 12.0 * phase.getTotalVolume() * phase.getB() + Math.pow(phase.getB(), 2.0)) + / Math.pow(((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())), 2.0); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdVdXi(int site, PhaseInterface phase) { + return 1.0 / (2.0 * phase.getTotalVolume()) + * (1.0 - phase.getTotalVolume() * ((PhaseCPAInterface) phase).getGcpav()) + * getNumberOfMolesInPhase(); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdNdXi(int site, PhaseInterface phase) { + double xi = 1.0 / xsite[site]; + + // return xi - tempp; + return xi + getNumberOfMolesInPhase() / 2.0 * calc_lngi(phase); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdXidXj(int sitei, int sitej, int compj, PhaseInterface phase) { + return 0.0; + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdXi(int site, PhaseInterface phase) { + return 0.0; + } + + /** + *

+ * dFCPAdNdXidXdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double dFCPAdNdXidXdV(PhaseInterface phase) { + double temp = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + temp += dFCPAdNdXi(i, phase) * getXsitedV()[i]; + } + return temp; + } + + /** + *

+ * calc_lngi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngi(PhaseInterface phase) { + return 0.475 / (1.0 - 0.475 * phase.getB() / phase.getTotalVolume()) * getBi() + / phase.getTotalVolume(); + } + + /** {@inheritDoc} */ + @Override + public double[] getXsite() { + return this.xsite; + } + + /** + * Setter for property xsite. + * + * @param xsite New value of property xsite. + */ + public void setXsite(double[] xsite) { + this.xsite = xsite; + } + + /** {@inheritDoc} */ + @Override + public void setXsite(int i, double xsite) { + this.xsite[i] = xsite; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedV() { + return this.xsitedV; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedV(int i, double xsitedV) { + this.xsitedV[i] = xsitedV; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsiteOld() { + return this.xsiteOld; + } + + /** + * Setter for property xsite. + * + * @param xsiteOld an array of type double + */ + public void setXsiteOld(double[] xsiteOld) { + this.xsiteOld = xsiteOld; + } + + /** {@inheritDoc} */ + @Override + public void setXsiteOld(int i, double xsiteOld) {} + + /** {@inheritDoc} */ + @Override + public double[] getXsitedT() { + return null; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedTdT() { + return null; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedT(int i, double xsitedT) {} + + /** {@inheritDoc} */ + @Override + public void setXsitedTdT(int i, double xsitedT) {} + + /** {@inheritDoc} */ + @Override + public void setXsitedni(int xnumb, int compnumb, double val) { + xsitedni[xnumb][compnumb] = val; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPAstatoil.java b/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPAstatoil.java index ab247cbb47..6d37cc2deb 100644 --- a/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPAstatoil.java +++ b/src/main/java/neqsim/thermo/component/ComponentElectrolyteCPAstatoil.java @@ -11,77 +11,76 @@ * @version $Id: $Id */ public class ComponentElectrolyteCPAstatoil extends ComponentElectrolyteCPA { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ComponentElectrolyteCPAstatoil. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentElectrolyteCPAstatoil(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } - - /** - *

- * Constructor for ComponentElectrolyteCPAstatoil. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentElectrolyteCPAstatoil(int number, double TC, double PC, double M, double a, - double moles) { - super(number, TC, PC, M, a, moles); - } + /** + *

+ * Constructor for ComponentElectrolyteCPAstatoil. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentElectrolyteCPAstatoil(String name, double moles, double molesInPhase, + int compIndex) { + super(name, moles, molesInPhase, compIndex); + } - /** {@inheritDoc} */ - @Override - public ComponentElectrolyteCPAstatoil clone() { - ComponentElectrolyteCPAstatoil clonedComponent = null; - try { - clonedComponent = (ComponentElectrolyteCPAstatoil) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for ComponentElectrolyteCPAstatoil. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentElectrolyteCPAstatoil(int number, double TC, double PC, double M, double a, + double moles) { + super(number, TC, PC, M, a, moles); + } - return clonedComponent; + /** {@inheritDoc} */ + @Override + public ComponentElectrolyteCPAstatoil clone() { + ComponentElectrolyteCPAstatoil clonedComponent = null; + try { + clonedComponent = (ComponentElectrolyteCPAstatoil) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double calc_lngi(PhaseInterface phase) { - // System.out.println("val " - // +0.475/(1.0-0.475*phase.getB()/phase.getTotalVolume())*getBi()/phase.getTotalVolume()); - return 0.475 / (1.0 - 0.475 * phase.getB() / phase.getTotalVolume()) * getBi() - / phase.getTotalVolume(); - } + return clonedComponent; + } - /** {@inheritDoc} */ - @Override - public double calc_lngidV(PhaseInterface phase) { - double temp = phase.getTotalVolume() - 0.475 * phase.getB(); - return -0.475 * getBi() / (temp * temp); - } + /** {@inheritDoc} */ + @Override + public double calc_lngi(PhaseInterface phase) { + // System.out.println("val " + // +0.475/(1.0-0.475*phase.getB()/phase.getTotalVolume())*getBi()/phase.getTotalVolume()); + return 0.475 / (1.0 - 0.475 * phase.getB() / phase.getTotalVolume()) * getBi() + / phase.getTotalVolume(); + } - /** {@inheritDoc} */ - @Override - public double calc_lngij(int j, PhaseInterface phase) { - double temp = phase.getTotalVolume() - 0.475 * phase.getB(); - // System.out.println("B " + phase.getB() + " Bi " + getBi() + " bij " + - // getBij(j)); - return 0.475 * getBij(j) * 0 / (phase.getTotalVolume() - 0.475 * phase.getB()) - - 0.475 * getBi() * 1.0 / (temp * temp) - * (-0.475 * ((ComponentEosInterface) phase.getComponent(j)).getBi()); - } + /** {@inheritDoc} */ + @Override + public double calc_lngidV(PhaseInterface phase) { + double temp = phase.getTotalVolume() - 0.475 * phase.getB(); + return -0.475 * getBi() / (temp * temp); + } + + /** {@inheritDoc} */ + @Override + public double calc_lngij(int j, PhaseInterface phase) { + double temp = phase.getTotalVolume() - 0.475 * phase.getB(); + // System.out.println("B " + phase.getB() + " Bi " + getBi() + " bij " + + // getBij(j)); + return 0.475 * getBij(j) * 0 / (phase.getTotalVolume() - 0.475 * phase.getB()) - 0.475 * getBi() + * 1.0 / (temp * temp) * (-0.475 * ((ComponentEosInterface) phase.getComponent(j)).getBi()); + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentEos.java b/src/main/java/neqsim/thermo/component/ComponentEos.java index f8f982a259..b48e16fedf 100644 --- a/src/main/java/neqsim/thermo/component/ComponentEos.java +++ b/src/main/java/neqsim/thermo/component/ComponentEos.java @@ -3,10 +3,12 @@ * * Created on 14. mai 2000, 21:27 */ + package neqsim.thermo.component; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.component.attractiveEosTerm.AtractiveTermMatCopPRUMRNew; import neqsim.thermo.component.attractiveEosTerm.AttractiveTermCPAstatoil; import neqsim.thermo.component.attractiveEosTerm.AttractiveTermGERG; @@ -31,697 +33,746 @@ import neqsim.thermo.phase.PhaseInterface; /** + *

+ * Abstract ComponentEos class. + *

+ * * @author Even Solbraa */ -abstract class ComponentEos extends Component implements ComponentEosInterface { - private static final long serialVersionUID = 1000; - - public double a = 1, b = 1, m = 0, alpha = 0, aT = 1, aDiffT = 0, Bi = 0, Ai = 0, AiT = 0, - aDiffDiffT = 0; - public double[] Aij = new double[MAX_NUMBER_OF_COMPONENTS]; - public double[] Bij = new double[MAX_NUMBER_OF_COMPONENTS]; - protected double delta1 = 0, delta2 = 0; - protected double aDern = 0, aDerT = 0, aDerTT = 0, aDerTn = 0, bDern = 0, bDerTn = 0; - protected double dAdndn[] = new double[MAX_NUMBER_OF_COMPONENTS]; - protected double dBdndn[] = new double[MAX_NUMBER_OF_COMPONENTS]; - private AttractiveTermInterface attractiveParameter; - static Logger logger = LogManager.getLogger(ComponentEos.class); - - /** - *

- * Constructor for ComponentEos. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentEos(String component_name, double moles, double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } - - /** - *

- * Constructor for ComponentEos. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentEos(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); - } - - /** {@inheritDoc} */ - @Override - public ComponentEos clone() { - ComponentEos clonedComponent = null; - try { - clonedComponent = (ComponentEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - clonedComponent.setAttractiveParameter(this.getAttractiveParameter().clone()); - - return clonedComponent; - } - - /** {@inheritDoc} */ - @Override - public void init(double temp, double pres, double totMoles, double beta, int type) { - super.init(temp, pres, totMoles, beta, type); - a = calca(); - b = calcb(); - reducedTemperature = reducedTemperature(temp); - reducedPressure = reducedPressure(pres); - aT = a * alpha(temp); - if (type >= 2) { - aDiffT = diffaT(temp); - aDiffDiffT = diffdiffaT(temp); - } - } - - /** {@inheritDoc} */ - @Override - public void Finit(PhaseInterface phase, double temp, double pres, double totMoles, double beta, - int numberOfComponents, int type) { - Bi = phase.calcBi(componentNumber, phase, temp, pres, numberOfComponents); - Ai = phase.calcAi(componentNumber, phase, temp, pres, numberOfComponents); - if (type >= 2) { - AiT = phase.calcAiT(componentNumber, phase, temp, pres, numberOfComponents); - } - double totVol = phase.getMolarVolume() * phase.getNumberOfMolesInPhase(); - voli = -(-R * temp * dFdNdV(phase, numberOfComponents, temp, pres) - + R * temp / (phase.getMolarVolume() * phase.getNumberOfMolesInPhase())) - / (-R * temp * phase.dFdVdV() - - phase.getNumberOfMolesInPhase() * R * temp / (totVol * totVol)); - - if (type >= 3) { - for (int j = 0; j < numberOfComponents; j++) { - Aij[j] = phase.calcAij(componentNumber, j, phase, temp, pres, numberOfComponents); - Bij[j] = phase.calcBij(componentNumber, j, phase, temp, pres, numberOfComponents); - } - } - } - - /** {@inheritDoc} */ - @Override - public void setAttractiveTerm(int i) { - attractiveTermNumber = i; - if (i == 0) { - setAttractiveParameter(new AttractiveTermSrk(this)); - } else if (i == 1) { - setAttractiveParameter(new AttractiveTermPr(this)); - } else if (i == 2) { - setAttractiveParameter( - new AttractiveTermSchwartzentruber(this, getSchwartzentruberParams())); - } else if (i == 3) { - setAttractiveParameter(new AttractiveTermMollerup(this, getSchwartzentruberParams())); - } else if (i == 4) { - setAttractiveParameter(new AttractiveTermMatCop(this, getMatiascopemanParams())); - } else if (i == 5) { - setAttractiveParameter(new AttractiveTermRk(this)); - } else if (i == 6) { - setAttractiveParameter(new AttractiveTermPr1978(this)); - } else if (i == 7) { - setAttractiveParameter(new AttractiveTermPrDelft1998(this)); - } else if (i == 8) { - setAttractiveParameter(new AttractiveTermPrGassem2001(this)); - } else if (i == 9) { - setAttractiveParameter(new AttractiveTermPrDanesh(this)); - } else if (i == 10) { - setAttractiveParameter(new AttractiveTermGERG(this)); - } else if (i == 11) { - setAttractiveParameter(new AttractiveTermTwuCoon(this)); - } else if (i == 12) { - setAttractiveParameter(new AttractiveTermTwuCoonParam(this, getTwuCoonParams())); - } else if (i == 13) { - setAttractiveParameter(new AttractiveTermMatCopPR(this, getMatiascopemanParamsPR())); - } else if (i == 14) { - setAttractiveParameter(new AttractiveTermTwu(this)); - } else if (i == 15) { - setAttractiveParameter(new AttractiveTermCPAstatoil(this)); - } else if (i == 16) { - setAttractiveParameter(new AttractiveTermUMRPRU(this)); - } else if (i == 17) { - setAttractiveParameter(new AttractiveTermMatCopPRUMR(this)); - } else if (i == 18) { - if (componentName.equals("mercury")) { - setAttractiveParameter(new AttractiveTermTwuCoonStatoil(this, getTwuCoonParams())); - } else { - setAttractiveParameter(new AttractiveTermSrk(this)); - } - } else if (i == 19) { - setAttractiveParameter( - new AtractiveTermMatCopPRUMRNew(this, getMatiascopemanParamsUMRPRU())); - } else { - logger.error("error selecting an alpha formultaion term"); - logger.info("ok setting alpha function"); - } - } - - /** {@inheritDoc} */ - @Override - public AttractiveTermInterface getAttractiveTerm() { - return this.getAttractiveParameter(); - } - - /** - * @param temperature temperature of fluid - * @return double reduced temperature T/TC - */ - double reducedTemperature(double temperature) { - return temperature / criticalTemperature; - } - - /** - * @param pressure pressure in unit bara - * @return double - */ - double reducedPressure(double pressure) { - return pressure / criticalPressure; - } - - /** {@inheritDoc} */ - @Override - public double geta() { - return a; - } - - /** {@inheritDoc} */ - @Override - public double getb() { - return b; - } - - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return phase.Fn() + phase.FB() * getBi() + phase.FD() * getAi(); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) { - return (phase.FBT() + phase.FBD() * phase.getAT()) * getBi() + phase.FDT() * getAi() + phase.FD() * getAiT(); - } +public abstract class ComponentEos extends Component implements ComponentEosInterface { + private static final long serialVersionUID = 1000; - /** {@inheritDoc} */ - @Override - public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) { - return phase.FnV() + phase.FBV() * getBi() + phase.FDV() * getAi(); - } + public double a = 1; - /** {@inheritDoc} */ - @Override - public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, double pressure) { - ComponentEosInterface[] comp_Array = (ComponentEosInterface[]) phase.getcomponentArray(); - return phase.FnB() * (getBi() + comp_Array[j].getBi()) - + phase.FBD() * (getBi() * comp_Array[j].getAi() + comp_Array[j].getBi() * getAi()) - + phase.FB() * getBij(j) + phase.FBB() * getBi() * comp_Array[j].getBi() - + phase.FD() * getAij(j); - } + public double b = 1; - /** {@inheritDoc} */ - @Override - public double getAi() { - return Ai; - } + public double m = 0; - /** {@inheritDoc} */ - @Override - public double getAiT() { - return AiT; - } + public double alpha = 0; - /** {@inheritDoc} */ - @Override - public double getBi() { - return Bi; - } + public double aT = 1; - /** {@inheritDoc} */ - @Override - public double getBij(int j) { - return Bij[j]; - } + public double aDiffT = 0; - /** {@inheritDoc} */ - @Override - public double getAij(int j) { - return Aij[j]; - } + public double Bi = 0; - /** {@inheritDoc} */ - @Override - public double getaDiffT() { - return aDiffT; - } + public double Ai = 0; - /** {@inheritDoc} */ - @Override - public double getaDiffDiffT() { - return aDiffDiffT; - } + public double AiT = 0; - /** {@inheritDoc} */ - @Override - public double getaT() { - return aT; - } - - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - double temperature = phase.getTemperature(), pressure = phase.getPressure(); - logFugacityCoefficient = dFdN(phase, phase.getNumberOfComponents(), temperature, pressure) - - Math.log(pressure * phase.getMolarVolume() / (R * temperature)); - fugacityCoefficient = Math.exp(logFugacityCoefficient); - return fugacityCoefficient; - } + public double aDiffDiffT = 0; - /** {@inheritDoc} */ - @Override - public double logfugcoefdP(PhaseInterface phase) { - double temperature = phase.getTemperature(), pressure = phase.getPressure(); - dfugdp = getVoli() / R / temperature - 1.0 / pressure; - return dfugdp; - } + public double[] Aij = new double[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + public double[] Bij = new double[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + protected double delta1 = 0; - /** {@inheritDoc} */ - @Override - public double logfugcoefdT(PhaseInterface phase) { - double temperature = phase.getTemperature(), pressure = phase.getPressure(); - int numberOfComponents = phase.getNumberOfComponents(); - dfugdt = (this.dFdNdT(phase, numberOfComponents, temperature, pressure) + 1.0 / temperature - - getVoli() / R / temperature - * (-R * temperature * phase.dFdTdV() + pressure / temperature)); - return dfugdt; - } + protected double delta2 = 0; - /** {@inheritDoc} */ - @Override - public double[] logfugcoefdN(PhaseInterface phase) { - double temperature = phase.getTemperature(), pressure = phase.getPressure(); - int numberOfComponents = phase.getNumberOfComponents(); - ComponentEosInterface[] comp_Array = (ComponentEosInterface[]) phase.getComponents(); - - for (int i = 0; i < numberOfComponents; i++) { - // System.out.println("dfdndn " + dFdNdN(i, phase, numberOfComponents, - // temperature, pressure) + " n " + phase.getNumberOfMolesInPhase() + " voli " + - // getVoli()/R/temperature + " dFdNdV " + comp_Array[i].dFdNdV(phase, - // numberOfComponents, temperature, pressure)); - dfugdn[i] = (this.dFdNdN(i, phase, numberOfComponents, temperature, pressure) - + 1.0 / phase.getNumberOfMolesInPhase() - - getVoli() / R / temperature - * (-R * temperature * comp_Array[i].dFdNdV(phase, numberOfComponents, - temperature, pressure) - + R * temperature / phase.getTotalVolume())); - // System.out.println("dfugdn " + dfugdn[i]); - // System.out.println("dFdndn " + dFdNdN(i, phase, numberOfComponents, - // temperature, pressure) + " voli " + voli + " dFdvdn " + - // comp_Array[i].dFdNdV(phase, numberOfComponents, temperature, pressure) + " - // dfugdn " + dfugdn[i]); - dfugdx[i] = dfugdn[i] * phase.getNumberOfMolesInPhase(); - } - // System.out.println("diffN: " + 1 + dfugdn[0]); - return dfugdn; - } + protected double aDern = 0; - // Method added by Neeraj + protected double aDerT = 0; + + protected double aDerTT = 0; + + protected double aDerTn = 0; + + protected double bDern = 0; + + protected double bDerTn = 0; + + protected double[] dAdndn = new double[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + protected double[] dBdndn = new double[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + private AttractiveTermInterface attractiveParameter; + static Logger logger = LogManager.getLogger(ComponentEos.class); + + /** + *

+ * Constructor for ComponentEos. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentEos(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } + + /** + *

+ * Constructor for ComponentEos. + *

+ * + * @param number a int + * @param TC Critical temperature + * @param PC Critical pressure + * @param M Molar mass + * @param a Acentric factor + * @param moles Number of moles + */ + public ComponentEos(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + } + + /** {@inheritDoc} */ + @Override + public ComponentEos clone() { + ComponentEos clonedComponent = null; + try { + clonedComponent = (ComponentEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + + clonedComponent.setAttractiveParameter(this.getAttractiveParameter().clone()); + + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public void init(double temp, double pres, double totMoles, double beta, int initType) { + super.init(temp, pres, totMoles, beta, initType); + a = calca(); + b = calcb(); + reducedTemperature = reducedTemperature(temp); + reducedPressure = reducedPressure(pres); + aT = a * alpha(temp); + if (initType >= 2) { + aDiffT = diffaT(temp); + aDiffDiffT = diffdiffaT(temp); + } + } + + /** {@inheritDoc} */ + @Override + public void Finit(PhaseInterface phase, double temp, double pres, double totMoles, double beta, + int numberOfComponents, int initType) { + Bi = phase.calcBi(componentNumber, phase, temp, pres, numberOfComponents); + Ai = phase.calcAi(componentNumber, phase, temp, pres, numberOfComponents); + if (initType >= 2) { + AiT = phase.calcAiT(componentNumber, phase, temp, pres, numberOfComponents); + } + double totVol = phase.getMolarVolume() * phase.getNumberOfMolesInPhase(); + voli = -(-R * temp * dFdNdV(phase, numberOfComponents, temp, pres) + + R * temp / (phase.getMolarVolume() * phase.getNumberOfMolesInPhase())) + / (-R * temp * phase.dFdVdV() + - phase.getNumberOfMolesInPhase() * R * temp / (totVol * totVol)); + + if (initType >= 3) { + for (int j = 0; j < numberOfComponents; j++) { + Aij[j] = phase.calcAij(componentNumber, j, phase, temp, pres, numberOfComponents); + Bij[j] = phase.calcBij(componentNumber, j, phase, temp, pres, numberOfComponents); + } + } + } + + /** {@inheritDoc} */ + @Override + public void setAttractiveTerm(int i) { + attractiveTermNumber = i; + if (i == 0) { + setAttractiveParameter(new AttractiveTermSrk(this)); + } else if (i == 1) { + setAttractiveParameter(new AttractiveTermPr(this)); + } else if (i == 2) { + setAttractiveParameter(new AttractiveTermSchwartzentruber(this, getSchwartzentruberParams())); + } else if (i == 3) { + setAttractiveParameter(new AttractiveTermMollerup(this, getSchwartzentruberParams())); + } else if (i == 4) { + setAttractiveParameter(new AttractiveTermMatCop(this, getMatiascopemanParams())); + } else if (i == 5) { + setAttractiveParameter(new AttractiveTermRk(this)); + } else if (i == 6) { + setAttractiveParameter(new AttractiveTermPr1978(this)); + } else if (i == 7) { + setAttractiveParameter(new AttractiveTermPrDelft1998(this)); + } else if (i == 8) { + setAttractiveParameter(new AttractiveTermPrGassem2001(this)); + } else if (i == 9) { + setAttractiveParameter(new AttractiveTermPrDanesh(this)); + } else if (i == 10) { + setAttractiveParameter(new AttractiveTermGERG(this)); + } else if (i == 11) { + setAttractiveParameter(new AttractiveTermTwuCoon(this)); + } else if (i == 12) { + setAttractiveParameter(new AttractiveTermTwuCoonParam(this, getTwuCoonParams())); + } else if (i == 13) { + setAttractiveParameter(new AttractiveTermMatCopPR(this, getMatiascopemanParamsPR())); + } else if (i == 14) { + setAttractiveParameter(new AttractiveTermTwu(this)); + } else if (i == 15) { + setAttractiveParameter(new AttractiveTermCPAstatoil(this)); + } else if (i == 16) { + setAttractiveParameter(new AttractiveTermUMRPRU(this)); + } else if (i == 17) { + setAttractiveParameter(new AttractiveTermMatCopPRUMR(this)); + } else if (i == 18) { + if (componentName.equals("mercury")) { + setAttractiveParameter(new AttractiveTermTwuCoonStatoil(this, getTwuCoonParams())); + } else { + setAttractiveParameter(new AttractiveTermSrk(this)); + } + } else if (i == 19) { + setAttractiveParameter(new AtractiveTermMatCopPRUMRNew(this, getMatiascopemanParamsUMRPRU())); + } else { + logger.error("error selecting an alpha formultaion term"); + logger.info("ok setting alpha function"); + } + } + + /** {@inheritDoc} */ + @Override + public AttractiveTermInterface getAttractiveTerm() { + return this.getAttractiveParameter(); + } + + /** + * Get reduced temperature. + * + * @param temperature temperature of fluid + * @return double reduced temperature T/TC + */ + double reducedTemperature(double temperature) { + return temperature / criticalTemperature; + } + + /** + *

+ * Get reduced pressure. + *

+ * + * @param pressure pressure in unit bara + * @return double + */ + double reducedPressure(double pressure) { + return pressure / criticalPressure; + } + + /** {@inheritDoc} */ + @Override + public double geta() { + return a; + } + + /** {@inheritDoc} */ + @Override + public double getb() { + return b; + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return phase.Fn() + phase.FB() * getBi() + phase.FD() * getAi(); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return (phase.FBT() + phase.FBD() * phase.getAT()) * getBi() + phase.FDT() * getAi() + + phase.FD() * getAiT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return phase.FnV() + phase.FBV() * getBi() + phase.FDV() * getAi(); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + ComponentEosInterface[] comp_Array = (ComponentEosInterface[]) phase.getcomponentArray(); + return phase.FnB() * (getBi() + comp_Array[j].getBi()) + + phase.FBD() * (getBi() * comp_Array[j].getAi() + comp_Array[j].getBi() * getAi()) + + phase.FB() * getBij(j) + phase.FBB() * getBi() * comp_Array[j].getBi() + + phase.FD() * getAij(j); + } + + /** {@inheritDoc} */ + @Override + public double getAi() { + return Ai; + } + + /** {@inheritDoc} */ + @Override + public double getAiT() { + return AiT; + } + + /** {@inheritDoc} */ + @Override + public double getBi() { + return Bi; + } + + /** {@inheritDoc} */ + @Override + public double getBij(int j) { + return Bij[j]; + } + + /** {@inheritDoc} */ + @Override + public double getAij(int j) { + return Aij[j]; + } + + /** {@inheritDoc} */ + @Override + public double getaDiffT() { + return aDiffT; + } + + /** {@inheritDoc} */ + @Override + public double getaDiffDiffT() { + return aDiffDiffT; + } + + /** {@inheritDoc} */ + @Override + public double getaT() { + return aT; + } + + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase) { + double temperature = phase.getTemperature(); + double pressure = phase.getPressure(); + double logFugacityCoefficient = + dFdN(phase, phase.getNumberOfComponents(), temperature, pressure) + - Math.log(pressure * phase.getMolarVolume() / (R * temperature)); + fugacityCoefficient = Math.exp(logFugacityCoefficient); + return fugacityCoefficient; + } + + /** {@inheritDoc} */ + @Override + public double logfugcoefdP(PhaseInterface phase) { + double temperature = phase.getTemperature(); + double pressure = phase.getPressure(); + dfugdp = getVoli() / R / temperature - 1.0 / pressure; + return dfugdp; + } + + /** {@inheritDoc} */ + @Override + public double logfugcoefdT(PhaseInterface phase) { + double temperature = phase.getTemperature(); + double pressure = phase.getPressure(); + int numberOfComponents = phase.getNumberOfComponents(); + dfugdt = (this.dFdNdT(phase, numberOfComponents, temperature, pressure) + 1.0 / temperature + - getVoli() / R / temperature + * (-R * temperature * phase.dFdTdV() + pressure / temperature)); + return dfugdt; + } + + /** {@inheritDoc} */ + @Override + public double[] logfugcoefdN(PhaseInterface phase) { + double temperature = phase.getTemperature(); + double pressure = phase.getPressure(); + int numberOfComponents = phase.getNumberOfComponents(); + ComponentEosInterface[] comp_Array = (ComponentEosInterface[]) phase.getComponents(); + + for (int i = 0; i < numberOfComponents; i++) { + // System.out.println("dfdndn " + dFdNdN(i, phase, numberOfComponents, + // temperature, pressure) + " n " + phase.getNumberOfMolesInPhase() + " voli " + + // getVoli()/R/temperature + " dFdNdV " + comp_Array[i].dFdNdV(phase, + // numberOfComponents, temperature, pressure)); + dfugdn[i] = (this.dFdNdN(i, phase, numberOfComponents, temperature, pressure) + + 1.0 / phase.getNumberOfMolesInPhase() + - getVoli() / R / temperature + * (-R * temperature + * comp_Array[i].dFdNdV(phase, numberOfComponents, temperature, pressure) + + R * temperature / phase.getTotalVolume())); + // System.out.println("dfugdn " + dfugdn[i]); + // System.out.println("dFdndn " + dFdNdN(i, phase, numberOfComponents, + // temperature, pressure) + " voli " + voli + " dFdvdn " + + // comp_Array[i].dFdNdV(phase, numberOfComponents, temperature, pressure) + " + // dfugdn " + dfugdn[i]); + dfugdx[i] = dfugdn[i] * phase.getNumberOfMolesInPhase(); + } + // System.out.println("diffN: " + 1 + dfugdn[0]); + return dfugdn; + } + + // Method added by Neeraj + /* + * public double getdfugdn(int i){ double[] dfugdnv = this.logfugcoefdN(phase); //return 0.0001; + * return dfugdnv[i]; } + */ + // Added By Neeraj + /** {@inheritDoc} */ + @Override + public double logfugcoefdNi(PhaseInterface phase, int k) { + double temperature = phase.getTemperature(); + double pressure = phase.getPressure(); + int numberOfComponents = phase.getNumberOfComponents(); + double vol; + double voli; + ComponentEosInterface[] comp_Array = (ComponentEosInterface[]) phase.getcomponentArray(); + vol = phase.getMolarVolume(); + voli = getVoli(); + + dfugdn[k] = (this.dFdNdN(k, phase, numberOfComponents, temperature, pressure) + + 1.0 / phase.getNumberOfMolesInPhase() + - voli / R / temperature + * (-R * temperature + * comp_Array[k].dFdNdV(phase, numberOfComponents, temperature, pressure) + + R * temperature / (vol * phase.getNumberOfMolesInPhase()))); + dfugdx[k] = dfugdn[k] * (phase.getNumberOfMolesInPhase()); + // System.out.println("Main dfugdn "+dfugdn[k]); + return dfugdn[k]; + } + + /** {@inheritDoc} */ + @Override + public double getAder() { + return aDern; + } + + /** {@inheritDoc} */ + @Override + public void setAder(double val) { + aDern = val; + } + + /** {@inheritDoc} */ + @Override + public double getdAdndn(int j) { + return dAdndn[j]; + } + + /** {@inheritDoc} */ + @Override + public void setdAdndn(int jComp, double val) { + dAdndn[jComp] = val; + } + + /** {@inheritDoc} */ + @Override + public void setdAdT(double val) { + aDerT = val; + } + + /** {@inheritDoc} */ + @Override + public double getdAdT() { + return aDerT; + } + + /** {@inheritDoc} */ + @Override + public void setdAdTdn(double val) { + aDerTn = val; + } + + /** {@inheritDoc} */ + @Override + public double getdAdTdn() { + return aDerTn; + } + + /** + *

+ * getdAdTdT. + *

+ * + * @return a double + */ + public double getdAdTdT() { + return aDerT; + } + + /** {@inheritDoc} */ + @Override + public void setdAdTdT(double val) { + aDerTT = val; + } + + /** {@inheritDoc} */ + @Override + public double getBder() { + return bDern; + } + + /** {@inheritDoc} */ + @Override + public void setBder(double val) { + bDern = val; + } + + /** {@inheritDoc} */ + @Override + public double getdBdndn(int j) { + return dBdndn[j]; + } + + /** {@inheritDoc} */ + @Override + public void setdBdndn(int jComp, double val) { + dBdndn[jComp] = val; + } + + /** {@inheritDoc} */ + @Override + public double getdBdT() { + return 1; + } + + /** {@inheritDoc} */ + @Override + public void setdBdTdT(double val) {} + + /** {@inheritDoc} */ + @Override + public double getdBdndT() { + return bDerTn; + } + + /** {@inheritDoc} */ + @Override + public void setdBdndT(double val) { + bDerTn = val; + } + + /** + *

+ * alpha. + *

+ * + * @param temperature a double + * @return a double + */ + public double alpha(double temperature) { + return getAttractiveParameter().alpha(temperature); + } + + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getAttractiveParameter().aT(temperature); + } + + /** + *

+ * diffalphaT. + *

+ * + * @param temperature a double + * @return a double + */ + public double diffalphaT(double temperature) { + return getAttractiveParameter().diffalphaT(temperature); + } + + /** + *

+ * diffdiffalphaT. + *

+ * + * @param temperature a double + * @return a double + */ + public double diffdiffalphaT(double temperature) { + return getAttractiveParameter().diffdiffalphaT(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getAttractiveParameter().diffaT(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getAttractiveParameter().diffdiffaT(temperature); + } + + /** {@inheritDoc} */ + @Override + public double[] getDeltaEosParameters() { + double[] param = {delta1, delta2}; + return param; + } + + /** {@inheritDoc} */ + @Override + public void seta(double a) { + this.a = a; + } + + /** {@inheritDoc} */ + @Override + public void setb(double b) { + this.b = b; + } + + /** {@inheritDoc} */ + @Override + public abstract double calca(); + + /** {@inheritDoc} */ + @Override + public abstract double calcb(); + + /** {@inheritDoc} */ + @Override + public double getSurfaceTenisionInfluenceParameter(double temperature) { /* - * public double getdfugdn(int i){ double[] dfugdnv = this.logfugcoefdN(phase); //return 0.0001; - * return dfugdnv[i]; } + * double a_inf = -3.471 + 4.927 * getCriticalCompressibilityFactor() + 13.085 * + * Math.pow(getCriticalCompressibilityFactor(), 2.0) - 2.067 * getAcentricFactor() + 1.891 * + * Math.pow(getAcentricFactor(), 2.0); double b_inf = -1.690 + 2.311 * + * getCriticalCompressibilityFactor() + 5.644 * Math.pow(getCriticalCompressibilityFactor(), + * 2.0) - 1.027 * getAcentricFactor() + 1.424 * Math.pow(getAcentricFactor(), 2.0); double c_inf + * = -0.318 + 0.299 * getCriticalCompressibilityFactor() + 1.710 * + * Math.pow(getCriticalCompressibilityFactor(), 2.0) - 0.174 * getAcentricFactor() + 0.157 * + * Math.pow(getAcentricFactor(), 2.0); */ - // Added By Neeraj - /** {@inheritDoc} */ - @Override - public double logfugcoefdNi(PhaseInterface phase, int k) { - double temperature = phase.getTemperature(), pressure = phase.getPressure(); - int numberOfComponents = phase.getNumberOfComponents(); - double vol, voli; - ComponentEosInterface[] comp_Array = (ComponentEosInterface[]) phase.getcomponentArray(); - vol = phase.getMolarVolume(); - voli = getVoli(); - - dfugdn[k] = - (this.dFdNdN(k, phase, numberOfComponents, temperature, pressure) - + 1.0 / phase.getNumberOfMolesInPhase() - - voli / R / temperature * (-R * temperature - * comp_Array[k].dFdNdV(phase, numberOfComponents, temperature, - pressure) - + R * temperature / (vol * phase.getNumberOfMolesInPhase()))); - dfugdx[k] = dfugdn[k] * (phase.getNumberOfMolesInPhase()); - // System.out.println("Main dfugdn "+dfugdn[k]); - return dfugdn[k]; - } - - /** {@inheritDoc} */ - @Override - public double getAder() { - return aDern; - } - - /** {@inheritDoc} */ - @Override - public void setAder(double val) { - aDern = val; - } - - /** {@inheritDoc} */ - @Override - public double getdAdndn(int j) { - return dAdndn[j]; - } - - /** {@inheritDoc} */ - @Override - public void setdAdndn(int jComp, double val) { - dAdndn[jComp] = val; - } - - /** {@inheritDoc} */ - @Override - public void setdAdT(double val) { - aDerT = val; - } - - /** {@inheritDoc} */ - @Override - public double getdAdT() { - return aDerT; - } - - /** {@inheritDoc} */ - @Override - public void setdAdTdn(double val) { - aDerTn = val; - } - - /** {@inheritDoc} */ - @Override - public double getdAdTdn() { - return aDerTn; - } - - /** - *

- * getdAdTdT. - *

- * - * @return a double - */ - public double getdAdTdT() { - return aDerT; - } - - /** {@inheritDoc} */ - @Override - public void setdAdTdT(double val) { - aDerTT = val; - } - - /** {@inheritDoc} */ - @Override - public double getBder() { - return bDern; - } - - /** {@inheritDoc} */ - @Override - public void setBder(double val) { - bDern = val; - } - - /** {@inheritDoc} */ - @Override - public double getdBdndn(int j) { - return dBdndn[j]; - } - - /** {@inheritDoc} */ - @Override - public void setdBdndn(int jComp, double val) { - dBdndn[jComp] = val; - } - - /** {@inheritDoc} */ - @Override - public double getdBdT() { - return 1; - } - - /** {@inheritDoc} */ - @Override - public void setdBdTdT(double val) {} - - /** {@inheritDoc} */ - @Override - public double getdBdndT() { - return bDerTn; - } - - /** {@inheritDoc} */ - @Override - public void setdBdndT(double val) { - bDerTn = val; - } - - /** - *

- * alpha. - *

- * - * @param temperature a double - * @return a double - */ - public double alpha(double temperature) { - return getAttractiveParameter().alpha(temperature); - } - - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getAttractiveParameter().aT(temperature); - } - - /** - *

- * diffalphaT. - *

- * - * @param temperature a double - * @return a double - */ - public double diffalphaT(double temperature) { - return getAttractiveParameter().diffalphaT(temperature); - } - - /** - *

- * diffdiffalphaT. - *

- * - * @param temperature a double - * @return a double - */ - public double diffdiffalphaT(double temperature) { - return getAttractiveParameter().diffdiffalphaT(temperature); - } - - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getAttractiveParameter().diffaT(temperature); - } - - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getAttractiveParameter().diffdiffaT(temperature); - } - - /** {@inheritDoc} */ - @Override - public double[] getDeltaEosParameters() { - double[] param = {delta1, delta2}; - return param; - } - - /** {@inheritDoc} */ - @Override - public void seta(double a) { - this.a = a; - } - - /** {@inheritDoc} */ - @Override - public void setb(double b) { - this.b = b; - } - - /** {@inheritDoc} */ - @Override - public abstract double calca(); - - /** {@inheritDoc} */ - @Override - public abstract double calcb(); - - /** {@inheritDoc} */ - @Override - public double getSurfaceTenisionInfluenceParameter(double temperature) { - /* - * double a_inf = -3.471 + 4.927 * getCriticalCompressibilityFactor() + 13.085 * - * Math.pow(getCriticalCompressibilityFactor(), 2.0) - 2.067 * getAcentricFactor() + 1.891 * - * Math.pow(getAcentricFactor(), 2.0); double b_inf = -1.690 + 2.311 * - * getCriticalCompressibilityFactor() + 5.644 * Math.pow(getCriticalCompressibilityFactor(), - * 2.0) - 1.027 * getAcentricFactor() + 1.424 * Math.pow(getAcentricFactor(), 2.0); double - * c_inf = -0.318 + 0.299 * getCriticalCompressibilityFactor() + 1.710 * - * Math.pow(getCriticalCompressibilityFactor(), 2.0) - 0.174 * getAcentricFactor() + 0.157 * - * Math.pow(getAcentricFactor(), 2.0); - */ - double TR = 1.0 - temperature / getTC(); - if (TR < 1) { - TR = 0.5; - } - - // double scale1 = aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * Math.exp(a_inf + b_inf * - // Math.log(TR) + c_inf * (Math.pow(Math.log(TR), 2.0))) / - // Math.pow(ThermodynamicConstantsInterface.avagadroNumber, 8.0 / 3.0); - - // System.out.println("scale1 " + scale1); - // return scale1; - // getAttractiveTerm().alpha(temperature)*1e-5 * Math.pow(b*1e-5, 2.0 / 3.0) * - // Math.exp(a_inf + b_inf * Math.log(TR) + c_inf * (Math.pow(Math.log(TR), - // 2.0)))/ Math.pow(ThermodynamicConstantsInterface.avagadroNumber, 8.0 / 3.0); - - double AA = -1.0e-16 / (1.2326 + 1.3757 * getAcentricFactor()); - double BB = 1.0e-16 / (0.9051 + 1.541 * getAcentricFactor()); - - // double scale2 = getAttractiveTerm().alpha(temperature) * 1e-5 * Math.pow(b * 1e-5, 2.0 / - // 3.0) * (AA * TR + BB); - // System.out.println("scale2 " + scale2); - return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB);/// Math.pow(ThermodynamicConstantsInterface.avagadroNumber, - /// 2.0 / 3.0); - } - - /** - *

- * getAresnTV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getAresnTV(PhaseInterface phase) { - return R * phase.getTemperature() * dFdN(phase, phase.getNumberOfComponents(), - phase.getTemperature(), phase.getPressure()); - } - - /** {@inheritDoc} */ - @Override - public double getChemicalPotential(PhaseInterface phase) { - double entalp = getHID(phase.getTemperature()) * numberOfMolesInPhase; - double entrop = numberOfMolesInPhase * getIdEntropy(phase.getTemperature()); - // double chempot = ((entalp - phase.getTemperature() * entrop) + numberOfMolesInPhase * R * - // phase.getTemperature() * Math.log(numberOfMolesInPhase * R * phase.getTemperature() / - // phase.getVolume() / referencePressure) + getAresnTV(phase) * numberOfMolesInPhase) / - // numberOfMolesInPhase; - - // double chempot2 = super.getChemicalPotential(phase); - // System.out.println("d " + chempot + " " + chempot2); - return ((entalp - phase.getTemperature() * entrop) - + numberOfMolesInPhase * R * phase.getTemperature() - * Math.log(numberOfMolesInPhase * R * phase.getTemperature() - / phase.getVolume() / referencePressure) - + getAresnTV(phase) * numberOfMolesInPhase) / numberOfMolesInPhase; - // return dF; - } - - /** - *

- * getdUdnSV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getdUdnSV(PhaseInterface phase) { - return getChemicalPotential(phase); - } - - /** - *

- * getdUdSdnV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getdUdSdnV(PhaseInterface phase) { - return -1.0 / phase.FTT() * dFdNdT(phase, phase.getNumberOfComponents(), - phase.getTemperature(), phase.getPressure()); - } - - /** - *

- * getdUdVdnS. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getdUdVdnS(PhaseInterface phase) { - return 1.0 / phase.FTT() * dFdNdV(phase, phase.getNumberOfComponents(), - phase.getTemperature(), phase.getPressure()); - } - - /** - *

- * getdUdndnSV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param compNumb1 a int - * @param compNumb2 a int - * @return a double - */ - public double getdUdndnSV(PhaseInterface phase, int compNumb1, int compNumb2) { - return dFdNdN(compNumb2, phase, phase.getNumberOfComponents(), phase.getTemperature(), - phase.getPressure()) - - dFdNdT(phase, phase.getNumberOfComponents(), phase.getTemperature(), - phase.getPressure()) * 1.0 / phase.FTT();// * - // phase.getComponent(compNumb2).getF; - } - - /** - *

- * Getter for the field attractiveParameter. - *

- * - * @return a {@link neqsim.thermo.component.attractiveEosTerm.AttractiveTermInterface} object - */ - public AttractiveTermInterface getAttractiveParameter() { - return attractiveParameter; - } - - /** - *

- * Setter for the field attractiveParameter. - *

- * - * @param attractiveParameter a - * {@link neqsim.thermo.component.attractiveEosTerm.AttractiveTermInterface} object - */ - public void setAttractiveParameter(AttractiveTermInterface attractiveParameter) { - this.attractiveParameter = attractiveParameter; - } + double TR = 1.0 - temperature / getTC(); + if (TR < 1) { + TR = 0.5; + } + + // double scale1 = aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * Math.exp(a_inf + b_inf * + // Math.log(TR) + c_inf * (Math.pow(Math.log(TR), 2.0))) / + // Math.pow(ThermodynamicConstantsInterface.avagadroNumber, 8.0 / 3.0); + + // System.out.println("scale1 " + scale1); + // return scale1; + // getAttractiveTerm().alpha(temperature)*1e-5 * Math.pow(b*1e-5, 2.0 / 3.0) * + // Math.exp(a_inf + b_inf * Math.log(TR) + c_inf * (Math.pow(Math.log(TR), + // 2.0)))/ Math.pow(ThermodynamicConstantsInterface.avagadroNumber, 8.0 / 3.0); + + double AA = -1.0e-16 / (1.2326 + 1.3757 * getAcentricFactor()); + double BB = 1.0e-16 / (0.9051 + 1.541 * getAcentricFactor()); + + // double scale2 = getAttractiveTerm().alpha(temperature) * 1e-5 * Math.pow(b * 1e-5, 2.0 / + // 3.0) * (AA * TR + BB); + // System.out.println("scale2 " + scale2); + return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB); + // Math.pow(ThermodynamicConstantsInterface.avagadroNumber, // 2.0 / 3.0); + } + + /** + *

+ * getAresnTV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getAresnTV(PhaseInterface phase) { + return R * phase.getTemperature() + * dFdN(phase, phase.getNumberOfComponents(), phase.getTemperature(), phase.getPressure()); + } + + /** {@inheritDoc} */ + @Override + public double getChemicalPotential(PhaseInterface phase) { + double entalp = getHID(phase.getTemperature()) * numberOfMolesInPhase; + double entrop = numberOfMolesInPhase * getIdEntropy(phase.getTemperature()); + // double chempot = ((entalp - phase.getTemperature() * entrop) + numberOfMolesInPhase * R * + // phase.getTemperature() * Math.log(numberOfMolesInPhase * R * phase.getTemperature() / + // phase.getVolume() / referencePressure) + getAresnTV(phase) * numberOfMolesInPhase) / + // numberOfMolesInPhase; + + // double chempot2 = super.getChemicalPotential(phase); + // System.out.println("d " + chempot + " " + chempot2); + return ((entalp - phase.getTemperature() * entrop) + numberOfMolesInPhase * R + * phase.getTemperature() * Math.log(numberOfMolesInPhase * R * phase.getTemperature() + / phase.getVolume() / referencePressure) + + getAresnTV(phase) * numberOfMolesInPhase) / numberOfMolesInPhase; + // return dF; + } + + /** + *

+ * getdUdnSV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getdUdnSV(PhaseInterface phase) { + return getChemicalPotential(phase); + } + + /** + *

+ * getdUdSdnV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getdUdSdnV(PhaseInterface phase) { + return -1.0 / phase.FTT() + * dFdNdT(phase, phase.getNumberOfComponents(), phase.getTemperature(), phase.getPressure()); + } + + /** + *

+ * getdUdVdnS. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getdUdVdnS(PhaseInterface phase) { + return 1.0 / phase.FTT() + * dFdNdV(phase, phase.getNumberOfComponents(), phase.getTemperature(), phase.getPressure()); + } + + /** + *

+ * getdUdndnSV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param compNumb1 a int + * @param compNumb2 a int + * @return a double + */ + public double getdUdndnSV(PhaseInterface phase, int compNumb1, int compNumb2) { + return dFdNdN(compNumb2, phase, phase.getNumberOfComponents(), phase.getTemperature(), + phase.getPressure()) + - dFdNdT(phase, phase.getNumberOfComponents(), phase.getTemperature(), phase.getPressure()) + * 1.0 / phase.FTT(); + // * phase.getComponent(compNumb2).getF; + } + + /** + *

+ * Getter for the field attractiveParameter. + *

+ * + * @return a {@link neqsim.thermo.component.attractiveEosTerm.AttractiveTermInterface} object + */ + public AttractiveTermInterface getAttractiveParameter() { + return attractiveParameter; + } + + /** + *

+ * Setter for the field attractiveParameter. + *

+ * + * @param attractiveParameter a + * {@link neqsim.thermo.component.attractiveEosTerm.AttractiveTermInterface} object + */ + public void setAttractiveParameter(AttractiveTermInterface attractiveParameter) { + this.attractiveParameter = attractiveParameter; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentEosInterface.java b/src/main/java/neqsim/thermo/component/ComponentEosInterface.java index 8d8690371b..1e44427f9b 100644 --- a/src/main/java/neqsim/thermo/component/ComponentEosInterface.java +++ b/src/main/java/neqsim/thermo/component/ComponentEosInterface.java @@ -3,6 +3,7 @@ * * Created on 4. juni 2000, 13:35 */ + package neqsim.thermo.component; import neqsim.thermo.phase.PhaseInterface; @@ -16,366 +17,366 @@ * @version $Id: $Id */ public interface ComponentEosInterface extends ComponentInterface { - /** - *

- * aT. - *

- * - * @param temperature a double - * @return a double - */ - double aT(double temperature); - - /** - *

- * diffaT. - *

- * - * @param temperature a double - * @return a double - */ - public double diffaT(double temperature); - - /** - *

- * diffdiffaT. - *

- * - * @param temperature a double - * @return a double - */ - public double diffdiffaT(double temperature); - - /** - *

- * getb. - *

- * - * @return a double - */ - public double getb(); - - /** - *

- * getAiT. - *

- * - * @return a double - */ - public double getAiT(); - - /** - *

- * geta. - *

- * - * @return a double - */ - public double geta(); - - /** - *

- * getaDiffT. - *

- * - * @return a double - */ - public double getaDiffT(); - - /** - *

- * getaDiffDiffT. - *

- * - * @return a double - */ - public double getaDiffDiffT(); - - /** - *

- * getaT. - *

- * - * @return a double - */ - public double getaT(); - - /** - *

- * getBij. - *

- * - * @param j a int - * @return a double - */ - public double getBij(int j); - - /** - *

- * getAij. - *

- * - * @param j a int - * @return a double - */ - public double getAij(int j); - - /** - *

- * getBi. - *

- * - * @return a double - */ - public double getBi(); - - /** - *

- * getAi. - *

- * - * @return a double - */ - public double getAi(); - - /** - *

- * calca. - *

- * - * @return a double - */ - public double calca(); - - /** - *

- * calcb. - *

- * - * @return a double - */ - public double calcb(); - - /** - *

- * getAder. - *

- * - * @return a double - */ - public double getAder(); - - /** - *

- * setAder. - *

- * - * @param val a double - */ - public void setAder(double val); - - /** - *

- * getDeltaEosParameters. - *

- * - * @return an array of {@link double} objects - */ - public double[] getDeltaEosParameters(); - - /** - *

- * getdAdndn. - *

- * - * @param j a int - * @return a double - */ - public double getdAdndn(int j); - - /** - *

- * setdAdndn. - *

- * - * @param jComp a int - * @param val a double - */ - public void setdAdndn(int jComp, double val); - - /** - *

- * getdAdT. - *

- * - * @return a double - */ - public double getdAdT(); - - /** - *

- * setdAdT. - *

- * - * @param val a double - */ - public void setdAdT(double val); - - /** - *

- * setdAdTdT. - *

- * - * @param val a double - */ - public void setdAdTdT(double val); - - /** - *

- * getBder. - *

- * - * @return a double - */ - public double getBder(); - - /** - *

- * setBder. - *

- * - * @param val a double - */ - public void setBder(double val); - - /** - *

- * getdBdndn. - *

- * - * @param j a int - * @return a double - */ - public double getdBdndn(int j); - - /** - *

- * setdBdndn. - *

- * - * @param jComp a int - * @param val a double - */ - public void setdBdndn(int jComp, double val); - - /** - *

- * getdBdT. - *

- * - * @return a double - */ - public double getdBdT(); - - /** - *

- * setdBdTdT. - *

- * - * @param val a double - */ - public void setdBdTdT(double val); - - /** - *

- * getdBdndT. - *

- * - * @return a double - */ - public double getdBdndT(); - - /** - *

- * setdBdndT. - *

- * - * @param val a double - */ - public void setdBdndT(double val); - - /** - *

- * setdAdTdn. - *

- * - * @param val a double - */ - public void setdAdTdn(double val); - - /** - *

- * getdAdTdn. - *

- * - * @return a double - */ - public double getdAdTdn(); - - /** - *

- * dFdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure); - - /** - *

- * dFdNdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure); - - /** - *

- * dFdNdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure); - - /** - *

- * dFdNdN. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure); + /** + *

+ * aT. + *

+ * + * @param temperature a double + * @return a double + */ + double aT(double temperature); + + /** + *

+ * diffaT. + *

+ * + * @param temperature a double + * @return a double + */ + public double diffaT(double temperature); + + /** + *

+ * diffdiffaT. + *

+ * + * @param temperature a double + * @return a double + */ + public double diffdiffaT(double temperature); + + /** + *

+ * getb. + *

+ * + * @return a double + */ + public double getb(); + + /** + *

+ * getAiT. + *

+ * + * @return a double + */ + public double getAiT(); + + /** + *

+ * geta. + *

+ * + * @return a double + */ + public double geta(); + + /** + *

+ * getaDiffT. + *

+ * + * @return a double + */ + public double getaDiffT(); + + /** + *

+ * getaDiffDiffT. + *

+ * + * @return a double + */ + public double getaDiffDiffT(); + + /** + *

+ * getaT. + *

+ * + * @return a double + */ + public double getaT(); + + /** + *

+ * getBij. + *

+ * + * @param j a int + * @return a double + */ + public double getBij(int j); + + /** + *

+ * getAij. + *

+ * + * @param j a int + * @return a double + */ + public double getAij(int j); + + /** + *

+ * getBi. + *

+ * + * @return a double + */ + public double getBi(); + + /** + *

+ * getAi. + *

+ * + * @return a double + */ + public double getAi(); + + /** + *

+ * calca. + *

+ * + * @return a double + */ + public double calca(); + + /** + *

+ * calcb. + *

+ * + * @return a double + */ + public double calcb(); + + /** + *

+ * getAder. + *

+ * + * @return a double + */ + public double getAder(); + + /** + *

+ * setAder. + *

+ * + * @param val a double + */ + public void setAder(double val); + + /** + *

+ * getDeltaEosParameters. + *

+ * + * @return an array of type double + */ + public double[] getDeltaEosParameters(); + + /** + *

+ * getdAdndn. + *

+ * + * @param j a int + * @return a double + */ + public double getdAdndn(int j); + + /** + *

+ * setdAdndn. + *

+ * + * @param jComp a int + * @param val a double + */ + public void setdAdndn(int jComp, double val); + + /** + *

+ * getdAdT. + *

+ * + * @return a double + */ + public double getdAdT(); + + /** + *

+ * setdAdT. + *

+ * + * @param val a double + */ + public void setdAdT(double val); + + /** + *

+ * setdAdTdT. + *

+ * + * @param val a double + */ + public void setdAdTdT(double val); + + /** + *

+ * getBder. + *

+ * + * @return a double + */ + public double getBder(); + + /** + *

+ * setBder. + *

+ * + * @param val a double + */ + public void setBder(double val); + + /** + *

+ * getdBdndn. + *

+ * + * @param j a int + * @return a double + */ + public double getdBdndn(int j); + + /** + *

+ * setdBdndn. + *

+ * + * @param jComp a int + * @param val a double + */ + public void setdBdndn(int jComp, double val); + + /** + *

+ * getdBdT. + *

+ * + * @return a double + */ + public double getdBdT(); + + /** + *

+ * setdBdTdT. + *

+ * + * @param val a double + */ + public void setdBdTdT(double val); + + /** + *

+ * getdBdndT. + *

+ * + * @return a double + */ + public double getdBdndT(); + + /** + *

+ * setdBdndT. + *

+ * + * @param val a double + */ + public void setdBdndT(double val); + + /** + *

+ * setdAdTdn. + *

+ * + * @param val a double + */ + public void setdAdTdn(double val); + + /** + *

+ * getdAdTdn. + *

+ * + * @return a double + */ + public double getdAdTdn(); + + /** + *

+ * dFdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure); + + /** + *

+ * dFdNdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure); + + /** + *

+ * dFdNdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure); + + /** + *

+ * dFdNdN. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure); } diff --git a/src/main/java/neqsim/thermo/component/ComponentGE.java b/src/main/java/neqsim/thermo/component/ComponentGE.java index f8aa2c92d7..0260c74beb 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGE.java +++ b/src/main/java/neqsim/thermo/component/ComponentGE.java @@ -3,6 +3,7 @@ * * Created on 10. juli 2000, 21:05 */ + package neqsim.thermo.component; import org.apache.logging.log4j.LogManager; @@ -11,141 +12,143 @@ import neqsim.thermo.phase.PhaseInterface; /** + * Abstract class ComponentGE. * * @author Even Solbraa */ -abstract class ComponentGE extends Component implements ComponentGEInterface { - private static final long serialVersionUID = 1000; - - protected double gamma = 0, gammaRefCor = 0; - protected double lngamma = 0, dlngammadt = 0, dlngammadp = 0, dlngammadtdt = 0.0; - protected double[] dlngammadn; - static Logger logger = LogManager.getLogger(ComponentGE.class); - - /** - *

- * Constructor for ComponentGE. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGE(String component_name, double moles, double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } - - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - logger.info("fug coef " - + gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure()); - if (referenceStateType.equals("solvent")) { - fugacityCoefficient = - gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure(); - gammaRefCor = gamma; - } else { - double activinf = 1.0; - if (phase.hasComponent("water")) { - int waternumb = phase.getComponent("water").getComponentNumber(); - activinf = gamma / ((PhaseGE) phase) - .getActivityCoefficientInfDilWater(componentNumber, waternumb); - } else { - activinf = gamma / ((PhaseGE) phase).getActivityCoefficientInfDil(componentNumber); - } - fugacityCoefficient = - activinf * getHenryCoef(phase.getTemperature()) / phase.getPressure();// gamma* - // benyttes - // ikke - gammaRefCor = activinf; - } - logFugacityCoefficient = Math.log(fugacityCoefficient); - - return fugacityCoefficient; - } - - /** - *

- * fugcoefDiffPres. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double fugcoefDiffPres(PhaseInterface phase) { - // double temperature = phase.getTemperature(), pressure = phase.getPressure(); - // int numberOfComponents = phase.getNumberOfComponents(); - if (referenceStateType.equals("solvent")) { - dfugdp = 0.0; // forelopig uten pointing - } else { - dfugdp = 0.0; // forelopig uten pointing - } - return dfugdp; - } - - /** - *

- * fugcoefDiffTemp. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double fugcoefDiffTemp(PhaseInterface phase) { - double temperature = phase.getTemperature(); - // double pressure = phase.getPressure(); - // int numberOfComponents = phase.getNumberOfComponents(); - - if (referenceStateType.equals("solvent")) { - dfugdt = dlngammadt + 1.0 / getAntoineVaporPressure(temperature) - * getAntoineVaporPressuredT(temperature); - logger.info("check this dfug dt - antoine"); - } else { - dfugdt = dlngammadt + getHenryCoefdT(temperature); - } - return dfugdt; - } - - /** {@inheritDoc} */ - @Override - public double getGamma() { - return gamma; +public abstract class ComponentGE extends Component implements ComponentGEInterface { + private static final long serialVersionUID = 1000; + + protected double gamma = 0; + protected double gammaRefCor = 0; + protected double lngamma = 0; + protected double dlngammadt = 0; + protected double dlngammadp = 0; + protected double dlngammadtdt = 0.0; + protected double[] dlngammadn; + static Logger logger = LogManager.getLogger(ComponentGE.class); + + /** + *

+ * Constructor for ComponentGE. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGE(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } + + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase) { + logger.info("fug coef " + + gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure()); + if (referenceStateType.equals("solvent")) { + fugacityCoefficient = + gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure(); + gammaRefCor = gamma; + } else { + double activinf = 1.0; + if (phase.hasComponent("water")) { + int waternumb = phase.getComponent("water").getComponentNumber(); + activinf = + gamma / ((PhaseGE) phase).getActivityCoefficientInfDilWater(componentNumber, waternumb); + } else { + activinf = gamma / ((PhaseGE) phase).getActivityCoefficientInfDil(componentNumber); + } + fugacityCoefficient = activinf * getHenryCoef(phase.getTemperature()) / phase.getPressure(); + // gamma* benyttes ikke + gammaRefCor = activinf; } - /** {@inheritDoc} */ - @Override - public double getlnGamma() { - return lngamma; + return fugacityCoefficient; + } + + /** + *

+ * fugcoefDiffPres. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double fugcoefDiffPres(PhaseInterface phase) { + // double temperature = phase.getTemperature(), pressure = phase.getPressure(); + // int numberOfComponents = phase.getNumberOfComponents(); + if (referenceStateType.equals("solvent")) { + dfugdp = 0.0; // forelopig uten pointing + } else { + dfugdp = 0.0; // forelopig uten pointing } - - /** {@inheritDoc} */ - @Override - public double getlnGammadt() { - return dlngammadt; - } - - /** {@inheritDoc} */ - @Override - public double getlnGammadtdt() { - return dlngammadtdt; - } - - /** {@inheritDoc} */ - @Override - public double getlnGammadn(int k) { - return dlngammadn[k]; - } - - /** {@inheritDoc} */ - @Override - public void setlnGammadn(int k, double val) { - dlngammadn[k] = val; - } - - /** {@inheritDoc} */ - @Override - public double getGammaRefCor() { - return gammaRefCor; + return dfugdp; + } + + /** + *

+ * fugcoefDiffTemp. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double fugcoefDiffTemp(PhaseInterface phase) { + double temperature = phase.getTemperature(); + // double pressure = phase.getPressure(); + // int numberOfComponents = phase.getNumberOfComponents(); + + if (referenceStateType.equals("solvent")) { + dfugdt = dlngammadt + + 1.0 / getAntoineVaporPressure(temperature) * getAntoineVaporPressuredT(temperature); + logger.info("check this dfug dt - antoine"); + } else { + dfugdt = dlngammadt + getHenryCoefdT(temperature); } + return dfugdt; + } + + /** {@inheritDoc} */ + @Override + public double getGamma() { + return gamma; + } + + /** {@inheritDoc} */ + @Override + public double getlnGamma() { + return lngamma; + } + + /** {@inheritDoc} */ + @Override + public double getlnGammadt() { + return dlngammadt; + } + + /** {@inheritDoc} */ + @Override + public double getlnGammadtdt() { + return dlngammadtdt; + } + + /** {@inheritDoc} */ + @Override + public double getlnGammadn(int k) { + return dlngammadn[k]; + } + + /** {@inheritDoc} */ + @Override + public void setlnGammadn(int k, double val) { + dlngammadn[k] = val; + } + + /** {@inheritDoc} */ + @Override + public double getGammaRefCor() { + return gammaRefCor; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentGEInterface.java b/src/main/java/neqsim/thermo/component/ComponentGEInterface.java index b54ecb6541..bf09d8b862 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGEInterface.java +++ b/src/main/java/neqsim/thermo/component/ComponentGEInterface.java @@ -3,9 +3,11 @@ * * Created on 11. juli 2000, 19:58 */ + package neqsim.thermo.component; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -16,88 +18,88 @@ * @version $Id: $Id */ public interface ComponentGEInterface extends ComponentInterface { - /** - *

- * getGamma. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @param HValpha an array of {@link double} objects - * @param HVgij an array of {@link double} objects - * @param intparam an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @return a double - */ - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] HValpha, double[][] HVgij, - double[][] intparam, String[][] mixRule); + /** + *

+ * getGamma. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @param HValpha an array of type double + * @param HVgij an array of type double + * @param intparam an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @return a double + */ + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double[][] HValpha, double[][] HVgij, double[][] intparam, + String[][] mixRule); - /** - *

- * getGamma. - *

- * - * @return a double - */ - public double getGamma(); + /** + *

+ * getGamma. + *

+ * + * @return a double + */ + public double getGamma(); - /** - *

- * getlnGamma. - *

- * - * @return a double - */ - public double getlnGamma(); + /** + *

+ * getlnGamma. + *

+ * + * @return a double + */ + public double getlnGamma(); - /** - *

- * getGammaRefCor. - *

- * - * @return a double - */ - public double getGammaRefCor(); + /** + *

+ * getGammaRefCor. + *

+ * + * @return a double + */ + public double getGammaRefCor(); - /** - *

- * getlnGammadt. - *

- * - * @return a double - */ - public double getlnGammadt(); + /** + *

+ * getlnGammadt. + *

+ * + * @return a double + */ + public double getlnGammadt(); - /** - *

- * getlnGammadtdt. - *

- * - * @return a double - */ - public double getlnGammadtdt(); + /** + *

+ * getlnGammadtdt. + *

+ * + * @return a double + */ + public double getlnGammadtdt(); - /** - *

- * getlnGammadn. - *

- * - * @param k a int - * @return a double - */ - public double getlnGammadn(int k); + /** + *

+ * getlnGammadn. + *

+ * + * @param k a int + * @return a double + */ + public double getlnGammadn(int k); - /** - *

- * setlnGammadn. - *

- * - * @param k a int - * @param val a double - */ - public void setlnGammadn(int k, double val); + /** + *

+ * setlnGammadn. + *

+ * + * @param k a int + * @param val a double + */ + public void setlnGammadn(int k, double val); } diff --git a/src/main/java/neqsim/thermo/component/ComponentGENRTLmodifiedHV.java b/src/main/java/neqsim/thermo/component/ComponentGENRTLmodifiedHV.java index 9064269e22..be1f98c343 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGENRTLmodifiedHV.java +++ b/src/main/java/neqsim/thermo/component/ComponentGENRTLmodifiedHV.java @@ -3,9 +3,11 @@ * * Created on 18. juli 2000, 18:36 */ + package neqsim.thermo.component; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -23,24 +25,23 @@ public class ComponentGENRTLmodifiedHV extends ComponentGeNRTL { * Constructor for ComponentGENRTLmodifiedHV. *

* - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. */ - public ComponentGENRTLmodifiedHV(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + public ComponentGENRTLmodifiedHV(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); } /** {@inheritDoc} */ @Override public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] HValpha, double[][] HVgij, double[][] intparam, + double pressure, PhaseType pt, double[][] HValpha, double[][] HVgij, double[][] intparam, String[][] mixRule) { double[][] HVgijT = new double[numberOfComponents][numberOfComponents]; - return getGamma(phase, numberOfComponents, temperature, pressure, phasetype, HValpha, HVgij, - HVgijT, intparam, mixRule); + return getGamma(phase, numberOfComponents, temperature, pressure, pt, HValpha, HVgij, HVgijT, + intparam, mixRule); } /** @@ -52,32 +53,70 @@ public double getGamma(PhaseInterface phase, int numberOfComponents, double temp * @param numberOfComponents a int * @param temperature a double * @param pressure a double - * @param phasetype a int - * @param HValpha an array of {@link double} objects - * @param HVgij an array of {@link double} objects - * @param HVgijT an array of {@link double} objects - * @param intparam an array of {@link double} objects + * @param pt the PhaseType of the phase + * @param HValpha an array of type double + * @param HVgij an array of type double + * @param HVgijT an array of type double + * @param intparam an array of type double * @param mixRule an array of {@link java.lang.String} objects * @return a double */ public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] HValpha, double[][] HVgij, double[][] HVgijT, + double pressure, PhaseType pt, double[][] HValpha, double[][] HVgij, double[][] HVgijT, double[][] intparam, String[][] mixRule) { int type = phase.getInitType(); - double A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, tau = 0, tau2 = 0, G = 0, G2 = 0, alpha = 0, - Dij = 0, Dji = 0, DijT = 0, DjiT = 0, gij = 0, gjj = 0, gji = 0, gii = 0; - int j, l; - double dAdT = 0, dBdT = 0, dCdT = 0, dCdTdT = 0, dDdT = 0, dDdTdT = 0, dBdTdT = 0; + double A = 0; + double B = 0; + double C = 0; + double D = 0; + double E = 0; + double F = 0; + double tau = 0; + double tau2 = 0; + double G = 0; + double G2 = 0; + double alpha = 0; + double Dij = 0; + double Dji = 0; + double DijT = 0; + double DjiT = 0; + double gij = 0; + double gjj = 0; + double gji = 0; + double gii = 0; + int j; + int l; + double dAdT = 0; + double dBdT = 0; + double dCdT = 0; + double dCdTdT = 0; + double dDdT = 0; + double dDdTdT = 0; + double dBdTdT = 0; // double dEdT; double dAdTdT = 0; - double dtaudt = 0, dtaudtdt = 0.0, dtau2dt = 0, dtau2dtdt = 0.0, dGdt = 0, dG2dt = 0, - dGdtdt = 0, dG2dtdt = 0.0; + double dtaudt = 0; + double dtaudtdt = 0.0; + double dtau2dt = 0; + double dtau2dtdt = 0.0; + double dGdt = 0; + double dG2dt = 0; + double dGdtdt = 0; + double dG2dtdt = 0.0; double[][] Gmatrix = new double[numberOfComponents][numberOfComponents]; double[][] tauMatrix = new double[numberOfComponents][numberOfComponents]; dlngammadn = new double[numberOfComponents]; ComponentEosInterface[] comp_Array = (ComponentEosInterface[]) phase.getcomponentArray(); - double dA2dTetter = 0, dA2dTdTetter = 0, dA3dTetter = 0, dA3dTdTetter = 0.0, dA4dTetter = 0, - dA4dTdTetter = 0, dA5dTetter = 0, dA5dTdTetter = 0, dA6dTetter = 0, dA6dTdTetter = 0; + double dA2dTetter = 0; + double dA2dTdTetter = 0; + double dA3dTetter = 0; + double dA3dTdTetter = 0.0; + double dA4dTetter = 0; + double dA4dTdTetter = 0; + double dA5dTetter = 0; + double dA5dTdTetter = 0; + double dA6dTetter = 0; + double dA6dTdTetter = 0; // for(int w=0;w<3;w++){ F = 0; // double dFdT = 0; @@ -92,8 +131,16 @@ public double getGamma(PhaseInterface phase, int numberOfComponents, double temp dA4dTetter = 0; dA5dTetter = 0; dA6dTetter = 0; - double dA2dT = 0, dA2dTdT = 0.0, dA3dT = 0, dA3dTdT = 0, dA4dT = 0, dA4dTdT = 0, dA5dT = 0, - dA5dTdT = 0, dA6dT = 0, dA6dTdT = 0.0; + double dA2dT = 0; + double dA2dTdT = 0.0; + double dA3dT = 0; + double dA3dTdT = 0; + double dA4dT = 0; + double dA4dTdT = 0; + double dA5dT = 0; + double dA5dTdT = 0; + double dA6dT = 0; + double dA6dTdT = 0.0; double deltaEOS = 1.0 / (comp_Array[0].getDeltaEosParameters()[1] - comp_Array[0].getDeltaEosParameters()[0]) * Math.log((1.0 + comp_Array[0].getDeltaEosParameters()[1]) @@ -394,11 +441,8 @@ public double getGamma(PhaseInterface phase, int numberOfComponents, double temp * Gmatrix[componentNumber][f] / (sum * sum); } dlngammadn[p] = (dAdn / B - A / (B * B) * dBdn) + dEdn / Ctemp - Dtemp - - Etemp * Gmatrix[componentNumber][p] / (Ctemp * Ctemp) + 2.0 * Ftemp - Gtemp;// E/(C*C)*dCdn[p]*(tau2-D/C) - // + - // E/C*(-dDdn[p]/C - // + - // D/(C*C)*dCdn[p]); + - Etemp * Gmatrix[componentNumber][p] / (Ctemp * Ctemp) + 2.0 * Ftemp - Gtemp; + // E/(C*C)*dCdn[p]*(tau2-D/C) + E/C*(-dDdn[p]/C + D/(C*C)*dCdn[p]); dlngammadn[p] /= (nt); } // System.out.println("Dlngamdn: " + dlngammadn[p] + " x: " + diff --git a/src/main/java/neqsim/thermo/component/ComponentGENRTLmodifiedWS.java b/src/main/java/neqsim/thermo/component/ComponentGENRTLmodifiedWS.java index 6bf82f1636..aa37b657f3 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGENRTLmodifiedWS.java +++ b/src/main/java/neqsim/thermo/component/ComponentGENRTLmodifiedWS.java @@ -1,6 +1,7 @@ package neqsim.thermo.component; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -11,253 +12,289 @@ * @version $Id: $Id */ public class ComponentGENRTLmodifiedWS extends ComponentGeNRTL { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ComponentGENRTLmodifiedWS. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGENRTLmodifiedWS(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } + /** + *

+ * Constructor for ComponentGENRTLmodifiedWS. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGENRTLmodifiedWS(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } - /** {@inheritDoc} */ - @Override - public double getlnGammadt() { - return dlngammadt; - } + /** {@inheritDoc} */ + @Override + public double getlnGammadt() { + return dlngammadt; + } - /** {@inheritDoc} */ - @Override - public double getlnGammadn(int k) { - return dlngammadn[k]; - } + /** {@inheritDoc} */ + @Override + public double getlnGammadn(int k) { + return dlngammadn[k]; + } - /** {@inheritDoc} */ - @Override - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] WSalpha, double[][] WSgij, - double[][] intparam, String[][] mixRule) { - double[][] WSgijT = new double[numberOfComponents][numberOfComponents]; - return getGamma(phase, numberOfComponents, temperature, pressure, phasetype, WSalpha, WSgij, - WSgijT, intparam, mixRule); - } + /** {@inheritDoc} */ + @Override + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double[][] WSalpha, double[][] WSgij, double[][] intparam, + String[][] mixRule) { + double[][] WSgijT = new double[numberOfComponents][numberOfComponents]; + return getGamma(phase, numberOfComponents, temperature, pressure, pt, WSalpha, WSgij, WSgijT, + intparam, mixRule); + } - /** - *

- * getGamma. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @param WSalpha an array of {@link double} objects - * @param WSgij an array of {@link double} objects - * @param WSgijT an array of {@link double} objects - * @param intparam an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @return a double - */ - @SuppressWarnings("unused") - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] WSalpha, double[][] WSgij, double[][] WSgijT, - double[][] intparam, String[][] mixRule) { - double type = phase.getInitType(); - double A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, ny = 0, tau = 0, tau2 = 0, G = 0, G2 = 0, - alpha = 0, Dij = 0, Djj = 0, Dji = 0, Dii = 0, DijT = 0, DjjT = 0, DjiT = 0, - DiiT = 0, gij = 0, gjj = 0, gji = 0, gii = 0, F2T = 0, tot2 = 0; - int i, j, l, k, delta = 0; - double dAdT = 0, dBdT = 0, dEdT, dCdT = 0, dFdT = 0, dDdT = 0; - double dtaudt = 0, dtau2dt = 0, dGdt = 0, dG2dt = 0; - double[][] Gmatrix = new double[numberOfComponents][numberOfComponents]; - double[][] tauMatrix = new double[numberOfComponents][numberOfComponents]; - dlngammadn = new double[numberOfComponents]; - ComponentInterface[] comp_Array = phase.getcomponentArray(); - double lngammaold = 0, dlngammadtold = 0, dA2dTetter = 0, dA3dTetter = 0, dA4dTetter = 0, - dA5dTetter = 0, dA6dTetter = 0; - // for(int w=0;w<3;w++){ - F = 0; - dFdT = 0; - dBdT = 0; - dAdT = 0; - dDdT = 0; - A = 0; - B = 0; - dlngammadt = 0.0; - dA2dTetter = 0; - dA3dTetter = 0; - dA4dTetter = 0; - dA5dTetter = 0; - dA6dTetter = 0; - double dA2dT = 0, dA3dT = 0, dA4dT = 0, dA5dT = 0, dA6dT = 0; + /** + *

+ * getGamma. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @param WSalpha an array of type double + * @param WSgij an array of type double + * @param WSgijT an array of type double + * @param intparam an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @return a double + */ + @SuppressWarnings("unused") + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double[][] WSalpha, double[][] WSgij, double[][] WSgijT, + double[][] intparam, String[][] mixRule) { + double type = phase.getInitType(); + double A = 0; + double B = 0; + double C = 0; + double D = 0; + double E = 0; + double F = 0; + double ny = 0; + double tau = 0; + double tau2 = 0; + double G = 0; + double G2 = 0; + double alpha = 0; + double Dij = 0; + double Djj = 0; + double Dji = 0; + double Dii = 0; + double DijT = 0; + double DjjT = 0; + double DjiT = 0; + double DiiT = 0; + double gij = 0; + double gjj = 0; + double gji = 0; + double gii = 0; + double F2T = 0; + double tot2 = 0; + int i; + int j; + int l; + int k; + int delta = 0; + double dAdT = 0; + double dBdT = 0; + double dEdT; + double dCdT = 0; + double dFdT = 0; + double dDdT = 0; + double dtaudt = 0; + double dtau2dt = 0; + double dGdt = 0; + double dG2dt = 0; + double[][] Gmatrix = new double[numberOfComponents][numberOfComponents]; + double[][] tauMatrix = new double[numberOfComponents][numberOfComponents]; + dlngammadn = new double[numberOfComponents]; + ComponentInterface[] comp_Array = phase.getcomponentArray(); + double lngammaold = 0; + double dlngammadtold = 0; + double dA2dTetter = 0; + double dA3dTetter = 0; + double dA4dTetter = 0; + double dA5dTetter = 0; + double dA6dTetter = 0; + // for(int w=0;w<3;w++){ + F = 0; + dFdT = 0; + dBdT = 0; + dAdT = 0; + dDdT = 0; + A = 0; + B = 0; + dlngammadt = 0.0; + dA2dTetter = 0; + dA3dTetter = 0; + dA4dTetter = 0; + dA5dTetter = 0; + dA6dTetter = 0; + double dA2dT = 0; - // PhaseGEEosInterface phaseny = (PhaseGEEosInterface) phase.getPhase(); - // PhaseGEInterface GEPhase = phaseny.getGEphase(); + // PhaseGEEosInterface phaseny = (PhaseGEEosInterface) phase.getPhase(); + // PhaseGEInterface GEPhase = phaseny.getGEphase(); - // ComponentGeNRTLInterface[] compArray = (ComponentGeNRTLInterface[]) - // GEPhase.getcomponentArray(); - // PhaseGEInterface GEphase = new PhaseGEInterface(); - // PhaseGEInterface phaseny = (PhaseGEInterface) phase.getPhase(); + // ComponentGeNRTLInterface[] compArray = (ComponentGeNRTLInterface[]) + // GEPhase.getcomponentArray(); + // PhaseGEInterface GEphase = new PhaseGEInterface(); + // PhaseGEInterface phaseny = (PhaseGEInterface) phase.getPhase(); - for (j = 0; j < numberOfComponents; j++) { - Dij = WSgij[this.getComponentNumber()][j]; - // System.out.println("Dij" + Dij); - Dji = WSgij[j][this.getComponentNumber()]; - // System.out.println("Dji" + Dji); - DijT = WSgijT[this.getComponentNumber()][j]; - DjiT = WSgijT[j][this.getComponentNumber()]; - // gji = HVgij[j][this.getComponentNumber()]; - // gjj = HVgii[j][j]; - alpha = WSalpha[j][this.getComponentNumber()]; // new HV + T*(gji-gii) - tau = Dji / (temperature) + DjiT; // + Math.pow(gji, b) - tau2 = Dij / (temperature) + DijT; - dtaudt = -tau / temperature + DjiT / temperature; - dtau2dt = -tau2 / temperature + DijT / temperature; - // System.out.println("method GE1" + tau); + double dA3dT = 0; + double dA4dT = 0; + double dA5dT = 0; + double dA6dT = 0; + for (j = 0; j < numberOfComponents; j++) { + Dij = WSgij[this.getComponentNumber()][j]; + // System.out.println("Dij" + Dij); + Dji = WSgij[j][this.getComponentNumber()]; + // System.out.println("Dji" + Dji); + DijT = WSgijT[this.getComponentNumber()][j]; + DjiT = WSgijT[j][this.getComponentNumber()]; + // gji = HVgij[j][this.getComponentNumber()]; + // gjj = HVgii[j][j]; + alpha = WSalpha[j][this.getComponentNumber()]; // new HV + T*(gji-gii) + tau = Dji / (temperature) + DjiT; // + Math.pow(gji, b) + tau2 = Dij / (temperature) + DijT; + dtaudt = -tau / temperature + DjiT / temperature; + dtau2dt = -tau2 / temperature + DijT / temperature; + // System.out.println("method GE1" + tau); - G = Math.exp(-alpha * tau); - dGdt = dtaudt * -alpha * G; - G2 = Math.exp(-alpha * tau2); - dG2dt = dtau2dt * -alpha * G2; + G = Math.exp(-alpha * tau); + dGdt = dtaudt * -alpha * G; + G2 = Math.exp(-alpha * tau2); + dG2dt = dtau2dt * -alpha * G2; - A += tau * G * comp_Array[j].getx(); - dAdT = dAdT + comp_Array[j].getx() * dGdt * tau + comp_Array[j].getx() * G * dtaudt; - dA2dT = comp_Array[j].getx() * dG2dt * tau2 + comp_Array[j].getx() * G2 * dtau2dt; - dA3dT = tau2 * G2 * comp_Array[j].getx(); - dA4dT = 2 * comp_Array[j].getx() * G2; - dA5dT = comp_Array[j].getx() * dG2dt; - dA6dT = comp_Array[j].getx() * G2; - B += G * comp_Array[j].getx(); - dBdT += dGdt * comp_Array[j].getx(); - E = G2 * comp_Array[j].getx(); - dEdT = dG2dt * comp_Array[j].getx(); + A += tau * G * comp_Array[j].getx(); + dAdT = dAdT + comp_Array[j].getx() * dGdt * tau + comp_Array[j].getx() * G * dtaudt; + dA2dT = comp_Array[j].getx() * dG2dt * tau2 + comp_Array[j].getx() * G2 * dtau2dt; + dA3dT = tau2 * G2 * comp_Array[j].getx(); + dA4dT = 2 * comp_Array[j].getx() * G2; + dA5dT = comp_Array[j].getx() * dG2dt; + dA6dT = comp_Array[j].getx() * G2; + B += G * comp_Array[j].getx(); + dBdT += dGdt * comp_Array[j].getx(); + E = G2 * comp_Array[j].getx(); + dEdT = dG2dt * comp_Array[j].getx(); - C = 0; - D = 0; - dCdT = 0; - dDdT = 0; - // System.out.println("hei"); + C = 0; + D = 0; + dCdT = 0; + dDdT = 0; + // System.out.println("hei"); - for (l = 0; l < numberOfComponents; l++) { - Dij = WSgij[l][j]; - DijT = WSgijT[l][j]; - alpha = WSalpha[l][j]; - tau = Dij / (temperature) + DijT; - dtaudt = -tau / temperature + DijT / temperature; + for (l = 0; l < numberOfComponents; l++) { + Dij = WSgij[l][j]; + DijT = WSgijT[l][j]; + alpha = WSalpha[l][j]; + tau = Dij / (temperature) + DijT; + dtaudt = -tau / temperature + DijT / temperature; - G = Math.exp(-alpha * tau); - dGdt = dtaudt * -alpha * G; - Gmatrix[l][j] = G; - tauMatrix[l][j] = tau; + G = Math.exp(-alpha * tau); + dGdt = dtaudt * -alpha * G; + Gmatrix[l][j] = G; + tauMatrix[l][j] = tau; - C += G * comp_Array[l].getx(); - dCdT += dGdt * comp_Array[l].getx(); - D += G * tau * comp_Array[l].getx(); - dDdT += comp_Array[l].getx() * dGdt * tau + comp_Array[l].getx() * G * dtaudt; - } - dA2dTetter += dA2dT / C; - dA3dTetter += dA3dT * dCdT / (C * C); + C += G * comp_Array[l].getx(); + dCdT += dGdt * comp_Array[l].getx(); + D += G * tau * comp_Array[l].getx(); + dDdT += comp_Array[l].getx() * dGdt * tau + comp_Array[l].getx() * G * dtaudt; + } + dA2dTetter += dA2dT / C; + dA3dTetter += dA3dT * dCdT / (C * C); - dA4dTetter += dA4dT * dCdT * D / (C * C * C); - dA5dTetter += dA5dT * D / (C * C); - dA6dTetter += dA6dT * dDdT / (C * C); + dA4dTetter += dA4dT * dCdT * D / (C * C * C); + dA5dTetter += dA5dT * D / (C * C); + dA6dTetter += dA6dT * dDdT / (C * C); - if (mixRule[this.getComponentNumber()][j].equals("WS")) { - tau2 = WSgij[this.getComponentNumber()][j] / (temperature) - + WSgijT[this.getComponentNumber()][j]; - } - dtau2dt = -tau2 / temperature + WSgijT[this.getComponentNumber()][j] / temperature; + if (mixRule[this.getComponentNumber()][j].equals("WS")) { + tau2 = WSgij[this.getComponentNumber()][j] / (temperature) + + WSgijT[this.getComponentNumber()][j]; + } + dtau2dt = -tau2 / temperature + WSgijT[this.getComponentNumber()][j] / temperature; - F += E / C * (tau2 - D / C); - dFdT += (dEdT / C - E / (C * C) * dCdT) * (tau2 - D / C) - + E / C * (dtau2dt - (dDdT / C - D / (C * C) * dCdT)); - // F2T = F2T - 2*2*A/Math.pow(C,2) + 2*2*E*D/Math.pow(C,3); // A til A2; - } + F += E / C * (tau2 - D / C); + dFdT += (dEdT / C - E / (C * C) * dCdT) * (tau2 - D / C) + + E / C * (dtau2dt - (dDdT / C - D / (C * C) * dCdT)); + // F2T = F2T - 2*2*A/Math.pow(C,2) + 2*2*E*D/Math.pow(C,3); // A til A2; + } - lngamma = A / B + F; - // dlngammadt = dAdT/B - A/(B*B)*dBdT + dFdT; - dlngammadt = (dAdT / B - A / (B * B) * dBdT + dA2dTetter - dA3dTetter + dA4dTetter - - dA5dTetter - dA6dTetter); - /* - * if(w==0){ dlngammadtold = dlngammadt; temperature +=0.0001; } - * - * if(w==1){ lngammaold = lngamma; temperature -=0.0002; } } - */ - // System.out.println("deriv: " + lngammaold + " " + lngamma + " " + - // ((lngammaold-lngamma)/0.0002) + " " + dlngammadtold); - // System.out.println("deriv t : " +dlngammadt); + lngamma = A / B + F; + // dlngammadt = dAdT/B - A/(B*B)*dBdT + dFdT; + dlngammadt = (dAdT / B - A / (B * B) * dBdT + dA2dTetter - dA3dTetter + dA4dTetter - dA5dTetter + - dA6dTetter); + /* + * if(w==0){ dlngammadtold = dlngammadt; temperature +=0.0001; } + * + * if(w==1){ lngammaold = lngamma; temperature -=0.0002; } } + */ + // System.out.println("deriv: " + lngammaold + " " + lngamma + " " + + // ((lngammaold-lngamma)/0.0002) + " " + dlngammadtold); + // System.out.println("deriv t : " +dlngammadt); - // tot2 = -2*A/B/B + F2T; - // dlngammadt = (lngammaold-lngamma)/0.002; + // tot2 = -2*A/B/B + F2T; + // dlngammadt = (lngammaold-lngamma)/0.002; - // phaseny.getExessGibbsEnergy(numberOfComponents, temperature, pressure, - // phasetype) - gamma = Math.exp(lngamma); + // phaseny.getExcessGibbsEnergy(numberOfComponents, temperature, pressure, + // pt) + gamma = Math.exp(lngamma); - // if derivates.... - if (type == 3) { - double dAdn = 0; - double dBdn = 0; - double Etemp = 0; - double dEdn = 0; - double Ctemp = 0; - double Dtemp = 0; - double Ftemp = 0; - double Gtemp = 0; + // if derivates.... + if (type == 3) { + double dAdn = 0; + double dBdn = 0; + double Etemp = 0; + double dEdn = 0; + double Ctemp = 0; + double Dtemp = 0; + double Ftemp = 0; + double Gtemp = 0; - for (int p = 0; p < numberOfComponents; p++) { - dAdn = tauMatrix[p][this.getComponentNumber()] - * Gmatrix[p][this.getComponentNumber()]; - dBdn = Gmatrix[p][this.getComponentNumber()]; - dEdn = Gmatrix[this.getComponentNumber()][p] - * tauMatrix[this.getComponentNumber()][p]; - // dFdn = Gmatrix[this.getComponentNumber()][p]; - Dtemp = 0; - Ctemp = 0; - Etemp = 0; - Ftemp = 0; - Gtemp = 0; - double nt = 0; - for (int f = 0; f < numberOfComponents; f++) { - nt += comp_Array[f].getNumberOfMolesInPhase(); - Ctemp += comp_Array[f].getx() * Gmatrix[f][p]; - Etemp += comp_Array[f].getx() * Gmatrix[f][p] * tauMatrix[f][p]; - double sum = 0.0; - double sum2 = 0.0; - for (int g = 0; g < numberOfComponents; g++) { - sum += comp_Array[g].getx() * Gmatrix[g][f]; - sum2 += comp_Array[g].getx() * Gmatrix[g][f] * tauMatrix[g][f]; - } - Dtemp += Gmatrix[p][f] * Gmatrix[this.getComponentNumber()][f] - * tauMatrix[this.getComponentNumber()][f] * comp_Array[f].getx() - / (sum * sum); - Ftemp += comp_Array[f].getx() * Gmatrix[p][f] * sum2 - * Gmatrix[this.getComponentNumber()][f] / (sum * sum * sum); - Gtemp += comp_Array[f].getx() * Gmatrix[p][f] * tauMatrix[p][f] - * Gmatrix[this.getComponentNumber()][f] / (sum * sum); - } - dlngammadn[p] = (dAdn / B - A / (B * B) * dBdn) + dEdn / Ctemp - Dtemp - - Etemp * Gmatrix[this.getComponentNumber()][p] / (Ctemp * Ctemp) - + 2.0 * Ftemp - Gtemp;// E/(C*C)*dCdn[p]*(tau2-D/C) - // + - // E/C*(-dDdn[p]/C - // + - // D/(C*C)*dCdn[p]); - dlngammadn[p] /= (nt); - } - // System.out.println("Dlngamdn: " + dlngammadn[p] + " x: " + - // comp_Array[p].getx()+ " length: "); + for (int p = 0; p < numberOfComponents; p++) { + dAdn = tauMatrix[p][this.getComponentNumber()] * Gmatrix[p][this.getComponentNumber()]; + dBdn = Gmatrix[p][this.getComponentNumber()]; + dEdn = Gmatrix[this.getComponentNumber()][p] * tauMatrix[this.getComponentNumber()][p]; + // dFdn = Gmatrix[this.getComponentNumber()][p]; + Dtemp = 0; + Ctemp = 0; + Etemp = 0; + Ftemp = 0; + Gtemp = 0; + double nt = 0; + for (int f = 0; f < numberOfComponents; f++) { + nt += comp_Array[f].getNumberOfMolesInPhase(); + Ctemp += comp_Array[f].getx() * Gmatrix[f][p]; + Etemp += comp_Array[f].getx() * Gmatrix[f][p] * tauMatrix[f][p]; + double sum = 0.0; + double sum2 = 0.0; + for (int g = 0; g < numberOfComponents; g++) { + sum += comp_Array[g].getx() * Gmatrix[g][f]; + sum2 += comp_Array[g].getx() * Gmatrix[g][f] * tauMatrix[g][f]; + } + Dtemp += Gmatrix[p][f] * Gmatrix[this.getComponentNumber()][f] + * tauMatrix[this.getComponentNumber()][f] * comp_Array[f].getx() / (sum * sum); + Ftemp += comp_Array[f].getx() * Gmatrix[p][f] * sum2 + * Gmatrix[this.getComponentNumber()][f] / (sum * sum * sum); + Gtemp += comp_Array[f].getx() * Gmatrix[p][f] * tauMatrix[p][f] + * Gmatrix[this.getComponentNumber()][f] / (sum * sum); } - - return gamma; + dlngammadn[p] = (dAdn / B - A / (B * B) * dBdn) + dEdn / Ctemp - Dtemp + - Etemp * Gmatrix[this.getComponentNumber()][p] / (Ctemp * Ctemp) + 2.0 * Ftemp - Gtemp; + // E/(C*C)*dCdn[p]*(tau2-D/C) + E/C*(-dDdn[p]/C + D/(C*C)*dCdn[p]); + dlngammadn[p] /= (nt); + } + // System.out.println("Dlngamdn: " + dlngammadn[p] + " x: " + + // comp_Array[p].getx()+ " length: "); } + + return gamma; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentGERG2004.java b/src/main/java/neqsim/thermo/component/ComponentGERG2004.java index ced2efe827..18ae7d720a 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGERG2004.java +++ b/src/main/java/neqsim/thermo/component/ComponentGERG2004.java @@ -11,98 +11,90 @@ * @version $Id: $Id */ public class ComponentGERG2004 extends ComponentEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ComponentGERG2004. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGERG2004(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } - - /** - *

- * Constructor for ComponentGERG2004. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentGERG2004(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); - } + /** + *

+ * Constructor for ComponentGERG2004. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGERG2004(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } - /** {@inheritDoc} */ - @Override - public ComponentGERG2004 clone() { - ComponentGERG2004 clonedComponent = null; - try { - clonedComponent = (ComponentGERG2004) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for ComponentGERG2004. + *

+ * + * @param number a int + * @param TC Critical temperature + * @param PC Critical pressure + * @param M Molar mass + * @param a Acentric factor + * @param moles Number of moles + */ + public ComponentGERG2004(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + } - return clonedComponent; + /** {@inheritDoc} */ + @Override + public ComponentGERG2004 clone() { + ComponentGERG2004 clonedComponent = null; + try { + clonedComponent = (ComponentGERG2004) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } + return clonedComponent; + } - /** {@inheritDoc} */ - @Override - public double getVolumeCorrection() { - return 0.0; - } + /** {@inheritDoc} */ + @Override + public double getVolumeCorrection() { + return 0.0; + } - /** {@inheritDoc} */ - @Override - public double calca() { - return 0; - } + /** {@inheritDoc} */ + @Override + public double calca() { + return 0; + } - /** {@inheritDoc} */ - @Override - public double calcb() { - return 0; - } + /** {@inheritDoc} */ + @Override + public double calcb() { + return 0; + } - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - return fugacityCoefficient; - } + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase) { + return fugacityCoefficient; + } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - return 1; - } + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + return 1; + } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return 1; - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return 1; + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return 1; - } + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return 1; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentGEUnifac.java b/src/main/java/neqsim/thermo/component/ComponentGEUnifac.java index e0453f0a4d..8066fee4d5 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGEUnifac.java +++ b/src/main/java/neqsim/thermo/component/ComponentGEUnifac.java @@ -3,6 +3,7 @@ * * Created on 10. juli 2000, 21:06 */ + package neqsim.thermo.component; import java.util.ArrayList; @@ -11,6 +12,7 @@ import neqsim.thermo.atomElement.UNIFACgroup; import neqsim.thermo.phase.PhaseGEUnifac; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -21,345 +23,334 @@ * @version $Id: $Id */ public class ComponentGEUnifac extends ComponentGEUniquac { - private static final long serialVersionUID = 1000; - - ArrayList unifacGroups = new ArrayList(); - UNIFACgroup[] unifacGroupsArray = new UNIFACgroup[0]; - double[] lnGammakComp = null; - double[] lnGammakMix = null; - double Q = 0.0; - double R = 0.0; - int numberOfUnifacSubGroups = 133; - static Logger logger = LogManager.getLogger(ComponentGEUnifac.class); - - /** - *

- * Constructor for ComponentGEUnifac. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGEUnifac(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - if (!this.getClass().equals(ComponentGEUnifac.class)) { - return; - } - if (component_name.contains("_PC")) { - double number = getMolarMass() / 0.014; - int intNumb = (int) Math.round(number) - 2; - unifacGroups.add(new UNIFACgroup(1, 2)); - unifacGroups.add(new UNIFACgroup(2, intNumb)); - logger.info("adding unifac pseudo.." + intNumb); - return; - } - try { - neqsim.util.database.NeqSimDataBase database = - new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - dataSet = database.getResultSet( - ("SELECT * FROM unifaccomp WHERE Name='" + component_name + "'")); - dataSet.next(); - dataSet.getClob("name"); - } catch (Exception e) { - dataSet.close(); - dataSet = database.getResultSet( - ("SELECT * FROM unifaccomp WHERE Name='" + component_name + "'")); - dataSet.next(); - } - - for (int p = 1; p < numberOfUnifacSubGroups; p++) { - int temp = Integer.parseInt(dataSet.getString("sub" + Integer.toString(p))); - if (temp > 0) { - unifacGroups.add(new UNIFACgroup(p, temp)); - // System.out.println("comp " + component_name + " adding UNIFAC group " + p); - } - } - - dataSet.close(); - database.getConnection().close(); - } catch (Exception e) { - String err = e.toString(); - logger.error(err); - } - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentGEUnifac.class); - /** - *

- * addUNIFACgroup. - *

- * - * @param p a int - * @param n a int - */ - public void addUNIFACgroup(int p, int n) { - unifacGroups.add(new UNIFACgroup(p, n)); - unifacGroupsArray = unifacGroups.toArray(unifacGroupsArray); - } + ArrayList unifacGroups = new ArrayList(); + UNIFACgroup[] unifacGroupsArray = new UNIFACgroup[0]; + double[] lnGammakComp = null; + double[] lnGammakMix = null; + double Q = 0.0; + double R = 0.0; + int numberOfUnifacSubGroups = 133; - /** - *

- * getQ. - *

- * - * @return a double - */ - public double getQ() { - double sum = 0.0; - - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - sum += this.getUnifacGroup(i).getQ() * getUnifacGroup(i).getN(); - } - Q = sum; - return sum; + /** + *

+ * Constructor for ComponentGEUnifac. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGEUnifac(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + if (!this.getClass().equals(ComponentGEUnifac.class)) { + return; + } + if (name.contains("_PC")) { + double number = getMolarMass() / 0.014; + int intNumb = (int) Math.round(number) - 2; + unifacGroups.add(new UNIFACgroup(1, 2)); + unifacGroups.add(new UNIFACgroup(2, intNumb)); + logger.info("adding unifac pseudo.." + intNumb); + return; } - /** - * Getter for property R. - * - * @return Value of property R. - */ - public double getR() { - double sum = 0.0; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + java.sql.ResultSet dataSet = null; + try { + dataSet = database.getResultSet(("SELECT * FROM unifaccomp WHERE Name='" + name + "'")); + dataSet.next(); + dataSet.getClob("name"); + } catch (Exception ex) { + dataSet.close(); + dataSet = database.getResultSet(("SELECT * FROM unifaccomp WHERE Name='" + name + "'")); + dataSet.next(); + } - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - sum += this.getUnifacGroup(i).getR() * getUnifacGroup(i).getN(); + for (int p = 1; p < numberOfUnifacSubGroups; p++) { + int temp = Integer.parseInt(dataSet.getString("sub" + Integer.toString(p))); + if (temp > 0) { + unifacGroups.add(new UNIFACgroup(p, temp)); + // System.out.println("comp " + name + " adding UNIFAC group " + p); } - R = sum; - return sum; + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - fugacityCoefficient = - (this.getGamma(phase, numberOfComponents, temperature, pressure, phasetype) - * this.getAntoineVaporPressure(temperature) / pressure); - return fugacityCoefficient; - } + /** + *

+ * addUNIFACgroup. + *

+ * + * @param p a int + * @param n a int + */ + public void addUNIFACgroup(int p, int n) { + unifacGroups.add(new UNIFACgroup(p, n)); + unifacGroupsArray = unifacGroups.toArray(unifacGroupsArray); + } - /** - *

- * calclnGammak. - *

- * - * @param k a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void calclnGammak(int k, PhaseInterface phase) { - double sum1Comp = 0.0, sum1Mix = 0.0; - double sum3Comp = 0.0, sum3Mix = 0.0; - - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - sum1Comp += getUnifacGroup(i).getQComp() - * Math.exp(-1.0 / phase.getTemperature() * ((PhaseGEUnifac) phase).getAij( - getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); - sum1Mix += getUnifacGroup(i).getQMix() - * Math.exp(-1.0 / phase.getTemperature() * ((PhaseGEUnifac) phase).getAij( - getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); - double sum2Comp = 0.0, sum2Mix = 0.0; - for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { - sum2Comp += getUnifacGroup(j).getQComp() * Math.exp(-1.0 / phase.getTemperature() - * ((PhaseGEUnifac) phase).getAij(getUnifacGroup(j).getGroupIndex(), - getUnifacGroup(i).getGroupIndex())); - sum2Mix += getUnifacGroup(j).getQMix() * Math.exp(-1.0 / phase.getTemperature() - * ((PhaseGEUnifac) phase).getAij(getUnifacGroup(j).getGroupIndex(), - getUnifacGroup(i).getGroupIndex())); - } - sum3Comp += getUnifacGroup(i).getQComp() - * Math.exp(-1.0 / phase.getTemperature() * ((PhaseGEUnifac) phase).getAij( - getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) - / sum2Comp; - sum3Mix += getUnifacGroup(i).getQMix() - * Math.exp(-1.0 / phase.getTemperature() * ((PhaseGEUnifac) phase).getAij( - getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) - / sum2Mix; - } - double tempGammaComp = - this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Comp) - sum3Comp); - double tempGammaMix = this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Mix) - sum3Mix); - getUnifacGroup(k).setLnGammaComp(tempGammaComp); - getUnifacGroup(k).setLnGammaMix(tempGammaMix); + /** + *

+ * getQ. + *

+ * + * @return a double + */ + public double getQ() { + double sum = 0.0; + + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + sum += this.getUnifacGroup(i).getQ() * getUnifacGroup(i).getN(); } + Q = sum; + return sum; + } - /** {@inheritDoc} */ - @Override - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - double lngammaCombinational = 0.0, lngammaResidual = 0.0; - dlngammadn = new double[numberOfComponents]; - dlngammadt = 0.0; - ComponentGEUnifac[] compArray = (ComponentGEUnifac[]) phase.getcomponentArray(); - double temp1 = 0, temp2 = 0, suml = 0.0; - double V = 0.0, F = 0.0; - - for (int j = 0; j < numberOfComponents; j++) { - temp1 += compArray[j].getx() * compArray[j].getR(); - temp2 += (compArray[j].getQ() * compArray[j].getx()); - suml += compArray[j].getx() * (10.0 / 2.0 * (compArray[j].getR() - compArray[j].getQ()) - - (compArray[j].getR() - 1.0)); - } + /** + * Getter for property R. + * + * @return Value of property R. + */ + public double getR() { + double sum = 0.0; - V = this.getx() * this.getR() / temp1; - F = this.getx() * this.getQ() / temp2; - double li = 10.0 / 2.0 * (getR() - getQ()) - (getR() - 1.0); - // System.out.println("li " + li); - lngammaCombinational = Math.log(V / getx()) + 10.0 / 2.0 * getQ() * Math.log(F / V) + li - - V / getx() * suml; - // System.out.println("ln gamma comb " + lngammaCombinational); - - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - getUnifacGroup(i).calcXComp(this); - // getUnifacGroup(i).calcXMix((PhaseGEUnifac) phase); - getUnifacGroup(i).calcQComp(this); - getUnifacGroup(i).calcQMix((PhaseGEUnifac) phase); - } - lnGammakComp = new double[getNumberOfUNIFACgroups()]; - lnGammakMix = new double[getNumberOfUNIFACgroups()]; - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - calclnGammak(i, phase); - } + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + sum += this.getUnifacGroup(i).getR() * getUnifacGroup(i).getN(); + } + R = sum; + return sum; + } - lngammaResidual = 0.0; - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - lngammaResidual += getUnifacGroup(i).getN() - * (getUnifacGroup(i).getLnGammaMix() - getUnifacGroup(i).getLnGammaComp()); - } - lngamma = lngammaResidual + lngammaCombinational; - // System.out.println("gamma " + Math.exp(lngamma)); - gamma = Math.exp(lngamma); + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + fugacityCoefficient = (this.getGamma(phase, numberOfComponents, temperature, pressure, pt) + * this.getAntoineVaporPressure(temperature) / pressure); + return fugacityCoefficient; + } - return gamma; - } + /** + *

+ * calclnGammak. + *

+ * + * @param k a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void calclnGammak(int k, PhaseInterface phase) { + double sum1Comp = 0.0; + double sum1Mix = 0.0; + double sum3Comp = 0.0; - /** {@inheritDoc} */ - @Override - public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - dfugdp = (Math - .log(fugcoef(phase, numberOfComponents, temperature, pressure + 0.01, phasetype)) - - Math.log(fugcoef(phase, numberOfComponents, temperature, pressure - 0.01, - phasetype))) - / 0.02; - return dfugdp; + double sum3Mix = 0.0; + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + sum1Comp += getUnifacGroup(i).getQComp() + * Math.exp(-1.0 / phase.getTemperature() * ((PhaseGEUnifac) phase) + .getAij(getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); + sum1Mix += getUnifacGroup(i).getQMix() + * Math.exp(-1.0 / phase.getTemperature() * ((PhaseGEUnifac) phase) + .getAij(getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); + double sum2Comp = 0.0; + double sum2Mix = 0.0; + for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { + sum2Comp += getUnifacGroup(j).getQComp() + * Math.exp(-1.0 / phase.getTemperature() * ((PhaseGEUnifac) phase) + .getAij(getUnifacGroup(j).getGroupIndex(), getUnifacGroup(i).getGroupIndex())); + sum2Mix += getUnifacGroup(j).getQMix() + * Math.exp(-1.0 / phase.getTemperature() * ((PhaseGEUnifac) phase) + .getAij(getUnifacGroup(j).getGroupIndex(), getUnifacGroup(i).getGroupIndex())); + } + sum3Comp += getUnifacGroup(i).getQComp() + * Math.exp(-1.0 / phase.getTemperature() * ((PhaseGEUnifac) phase) + .getAij(getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) + / sum2Comp; + sum3Mix += getUnifacGroup(i).getQMix() + * Math.exp(-1.0 / phase.getTemperature() * ((PhaseGEUnifac) phase) + .getAij(getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) + / sum2Mix; } + double tempGammaComp = this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Comp) - sum3Comp); + double tempGammaMix = this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Mix) - sum3Mix); + getUnifacGroup(k).setLnGammaComp(tempGammaComp); + getUnifacGroup(k).setLnGammaMix(tempGammaMix); + } - /** {@inheritDoc} */ - @Override - public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - dfugdt = (Math - .log(fugcoef(phase, numberOfComponents, temperature + 0.01, pressure, phasetype)) - - Math.log(fugcoef(phase, numberOfComponents, temperature - 0.01, pressure, - phasetype))) - / 0.02; - return dfugdt; - } + /** {@inheritDoc} */ + @Override + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + double lngammaCombinational = 0.0; + double lngammaResidual = 0.0; + dlngammadn = new double[numberOfComponents]; + dlngammadt = 0.0; + ComponentGEUnifac[] compArray = (ComponentGEUnifac[]) phase.getcomponentArray(); + double temp1 = 0; + double temp2 = 0; + double suml = 0.0; + double V = 0.0; - /* - * public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double - * temperature, double pressure, int phasetype){ // NumericalDerivative deriv = new - * NumericalDerivative(); // System.out.println("dfugdP : " + - * NumericalDerivative.fugcoefDiffPres(this, phase, numberOfComponents, temperature, pressure, - * phasetype)); return NumericalDerivative.fugcoefDiffPres(this, phase, numberOfComponents, - * temperature, pressure, phasetype); } - * - * public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double - * temperature, double pressure, int phasetype){ NumericalDerivative deriv = new - * NumericalDerivative(); // System.out.println("dfugdT : " + - * NumericalDerivative.fugcoefDiffTemp(this, phase, numberOfComponents, temperature, pressure, - * phasetype)); return NumericalDerivative.fugcoefDiffTemp(this, phase, numberOfComponents, - * temperature, pressure, phasetype); - * - * } - */ - - /** - * Getter for property unifacGroups. - * - * @return an ArrayList of {@link neqsim.thermo.atomElement.UNIFACgroup} objects. Value of - * property unifacGroups. - */ - public ArrayList getUnifacGroups2() { - return unifacGroups; + double F = 0.0; + for (int j = 0; j < numberOfComponents; j++) { + temp1 += compArray[j].getx() * compArray[j].getR(); + temp2 += (compArray[j].getQ() * compArray[j].getx()); + suml += compArray[j].getx() * (10.0 / 2.0 * (compArray[j].getR() - compArray[j].getQ()) + - (compArray[j].getR() - 1.0)); } - /** - *

- * Getter for the field unifacGroups. - *

- * - * @return an array of {@link neqsim.thermo.atomElement.UNIFACgroup} objects - */ - public UNIFACgroup[] getUnifacGroups() { - return unifacGroupsArray; - } + V = this.getx() * this.getR() / temp1; + F = this.getx() * this.getQ() / temp2; + double li = 10.0 / 2.0 * (getR() - getQ()) - (getR() - 1.0); + // System.out.println("li " + li); + lngammaCombinational = + Math.log(V / getx()) + 10.0 / 2.0 * getQ() * Math.log(F / V) + li - V / getx() * suml; + // System.out.println("ln gamma comb " + lngammaCombinational); - /** - *

- * getUnifacGroup2. - *

- * - * @param i a int - * @return a {@link neqsim.thermo.atomElement.UNIFACgroup} object - */ - public neqsim.thermo.atomElement.UNIFACgroup getUnifacGroup2(int i) { - return unifacGroups.get(i); + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + getUnifacGroup(i).calcXComp(this); + // getUnifacGroup(i).calcXMix((PhaseGEUnifac) phase); + getUnifacGroup(i).calcQComp(this); + getUnifacGroup(i).calcQMix((PhaseGEUnifac) phase); } - - /** - *

- * getUnifacGroup. - *

- * - * @param i a int - * @return a {@link neqsim.thermo.atomElement.UNIFACgroup} object - */ - public neqsim.thermo.atomElement.UNIFACgroup getUnifacGroup(int i) { - return unifacGroupsArray[i]; + lnGammakComp = new double[getNumberOfUNIFACgroups()]; + lnGammakMix = new double[getNumberOfUNIFACgroups()]; + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + calclnGammak(i, phase); } - /** - * Setter for property unifacGroups. - * - * @param unifacGroups New value of property unifacGroups. - */ - public void setUnifacGroups(ArrayList unifacGroups) { - this.unifacGroups = unifacGroups; - unifacGroupsArray = unifacGroups.toArray(unifacGroupsArray); + lngammaResidual = 0.0; + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + lngammaResidual += getUnifacGroup(i).getN() + * (getUnifacGroup(i).getLnGammaMix() - getUnifacGroup(i).getLnGammaComp()); } + lngamma = lngammaResidual + lngammaCombinational; + // System.out.println("gamma " + Math.exp(lngamma)); + gamma = Math.exp(lngamma); - /** - *

- * getNumberOfUNIFACgroups. - *

- * - * @return a int - */ - public int getNumberOfUNIFACgroups() { - return unifacGroups.size(); - } + return gamma; + } - /** - * Setter for property Q. - * - * @param Q New value of property Q. - */ - public void setQ(double Q) { - this.Q = Q; - } + /** {@inheritDoc} */ + @Override + public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + dfugdp = (Math.log(fugcoef(phase, numberOfComponents, temperature, pressure + 0.01, pt)) + - Math.log(fugcoef(phase, numberOfComponents, temperature, pressure - 0.01, pt))) / 0.02; + return dfugdp; + } - /** - * Setter for property R. - * - * @param R New value of property R. - */ - public void setR(double R) { - this.R = R; - } + /** {@inheritDoc} */ + @Override + public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + dfugdt = (Math.log(fugcoef(phase, numberOfComponents, temperature + 0.01, pressure, pt)) + - Math.log(fugcoef(phase, numberOfComponents, temperature - 0.01, pressure, pt))) / 0.02; + return dfugdt; + } + + /* + * public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double temperature, + * double pressure, PhaseType pt){ // NumericalDerivative deriv = new NumericalDerivative(); // + * System.out.println("dfugdP : " + NumericalDerivative.fugcoefDiffPres(this, phase, + * numberOfComponents, temperature, pressure, pt)); return + * NumericalDerivative.fugcoefDiffPres(this, phase, numberOfComponents, temperature, pressure, + * pt); } + * + * public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double temperature, + * double pressure, PhaseType pt){ NumericalDerivative deriv = new NumericalDerivative(); // + * System.out.println("dfugdT : " + NumericalDerivative.fugcoefDiffTemp(this, phase, + * numberOfComponents, temperature, pressure, pt)); return + * NumericalDerivative.fugcoefDiffTemp(this, phase, numberOfComponents, temperature, pressure, + * pt); } + */ + + /** + * Getter for property unifacGroups. + * + * @return an ArrayList of {@link neqsim.thermo.atomElement.UNIFACgroup} objects. Value of + * property unifacGroups. + */ + public ArrayList getUnifacGroups2() { + return unifacGroups; + } + + /** + *

+ * Getter for the field unifacGroups. + *

+ * + * @return an array of {@link neqsim.thermo.atomElement.UNIFACgroup} objects + */ + public UNIFACgroup[] getUnifacGroups() { + return unifacGroupsArray; + } + + /** + *

+ * getUnifacGroup2. + *

+ * + * @param i a int + * @return a {@link neqsim.thermo.atomElement.UNIFACgroup} object + */ + public neqsim.thermo.atomElement.UNIFACgroup getUnifacGroup2(int i) { + return unifacGroups.get(i); + } + + /** + *

+ * getUnifacGroup. + *

+ * + * @param i a int + * @return a {@link neqsim.thermo.atomElement.UNIFACgroup} object + */ + public neqsim.thermo.atomElement.UNIFACgroup getUnifacGroup(int i) { + return unifacGroupsArray[i]; + } + + /** + * Setter for property unifacGroups. + * + * @param unifacGroups New value of property unifacGroups. + */ + public void setUnifacGroups(ArrayList unifacGroups) { + this.unifacGroups = unifacGroups; + unifacGroupsArray = unifacGroups.toArray(unifacGroupsArray); + } + + /** + *

+ * getNumberOfUNIFACgroups. + *

+ * + * @return a int + */ + public int getNumberOfUNIFACgroups() { + return unifacGroups.size(); + } + + /** + * Setter for property Q. + * + * @param Q New value of property Q. + */ + public void setQ(double Q) { + this.Q = Q; + } + + /** + * Setter for property R. + * + * @param R New value of property R. + */ + public void setR(double R) { + this.R = R; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentGEUnifacPSRK.java b/src/main/java/neqsim/thermo/component/ComponentGEUnifacPSRK.java index 3905ed68c9..c5c421dadb 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGEUnifacPSRK.java +++ b/src/main/java/neqsim/thermo/component/ComponentGEUnifacPSRK.java @@ -2,6 +2,7 @@ import neqsim.thermo.phase.PhaseGEUnifac; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -12,197 +13,194 @@ * @version $Id: $Id */ public class ComponentGEUnifacPSRK extends ComponentGEUnifac { - private static final long serialVersionUID = 1000; - - double[][] bij = new double[1][1]; - double[][] cij = new double[1][1]; - - /** - *

- * Constructor for ComponentGEUnifacPSRK. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGEUnifacPSRK(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + private static final long serialVersionUID = 1000; + + double[][] bij = new double[1][1]; + double[][] cij = new double[1][1]; + + /** + *

+ * Constructor for ComponentGEUnifacPSRK. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGEUnifacPSRK(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } + + /** + *

+ * calcaij. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param i a int + * @param j a int + * @return a double + */ + public double calcaij(PhaseInterface phase, int i, int j) { + return ((PhaseGEUnifac) phase).getAij(i, j) + + ((PhaseGEUnifac) phase).getBij(i, j) * phase.getTemperature() + + ((PhaseGEUnifac) phase).getCij(i, j) * Math.pow(phase.getTemperature(), 2.0); + } + + /** + *

+ * calcaijdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param i a int + * @param j a int + * @return a double + */ + public double calcaijdT(PhaseInterface phase, int i, int j) { + return ((PhaseGEUnifac) phase).getBij(i, j) + + 2.0 * ((PhaseGEUnifac) phase).getCij(i, j) * phase.getTemperature(); + } + + /** {@inheritDoc} */ + @Override + public void calclnGammak(int k, PhaseInterface phase) { + double sum1Comp = 0.0; + double sum1Mix = 0.0; + double sum3Comp = 0.0; + + double sum3Mix = 0.0; + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + sum1Comp += getUnifacGroup(i).getQComp() * Math.exp(-1.0 / phase.getTemperature() + * calcaij(phase, getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); + sum1Mix += getUnifacGroup(i).getQMix() * Math.exp(-1.0 / phase.getTemperature() + * calcaij(phase, getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); + double sum2Comp = 0.0; + double sum2Mix = 0.0; + for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { + sum2Comp += getUnifacGroup(j).getQComp() * Math.exp(-1.0 / phase.getTemperature() + * calcaij(phase, getUnifacGroup(j).getGroupIndex(), getUnifacGroup(i).getGroupIndex())); + sum2Mix += getUnifacGroup(j).getQMix() * Math.exp(-1.0 / phase.getTemperature() + * calcaij(phase, getUnifacGroup(j).getGroupIndex(), getUnifacGroup(i).getGroupIndex())); + } + sum3Comp += getUnifacGroup(i).getQComp() * Math.exp(-1.0 / phase.getTemperature() + * calcaij(phase, getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) + / sum2Comp; + sum3Mix += getUnifacGroup(i).getQMix() * Math.exp(-1.0 / phase.getTemperature() + * calcaij(phase, getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) + / sum2Mix; } - - /** - *

- * calcaij. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param i a int - * @param j a int - * @return a double - */ - public double calcaij(PhaseInterface phase, int i, int j) { - return ((PhaseGEUnifac) phase).getAij(i, j) - + ((PhaseGEUnifac) phase).getBij(i, j) * phase.getTemperature() - + ((PhaseGEUnifac) phase).getCij(i, j) * Math.pow(phase.getTemperature(), 2.0); + double tempGammaComp = this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Comp) - sum3Comp); + double tempGammaMix = this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Mix) - sum3Mix); + getUnifacGroup(k).setLnGammaComp(tempGammaComp); + getUnifacGroup(k).setLnGammaMix(tempGammaMix); + } + + /** + *

+ * calclnGammakdT. + *

+ * + * @param k a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void calclnGammakdT(int k, PhaseInterface phase) { + double sum1Comp = 0.0; + double sum1Mix = 0.0; + double sum3Comp = 0.0; + + double sum3Mix = 0.0; + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + sum1Comp += getUnifacGroup(i).getQComp() * Math.exp(-1.0 / phase.getTemperature() + * calcaijdT(phase, getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); + sum1Mix += getUnifacGroup(i).getQMix() * Math.exp(-1.0 / phase.getTemperature() + * calcaijdT(phase, getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); + double sum2Comp = 0.0; + double sum2Mix = 0.0; + for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { + sum2Comp += + getUnifacGroup(j).getQComp() * Math.exp(-1.0 / phase.getTemperature() * calcaijdT(phase, + getUnifacGroup(j).getGroupIndex(), getUnifacGroup(i).getGroupIndex())); + sum2Mix += + getUnifacGroup(j).getQMix() * Math.exp(-1.0 / phase.getTemperature() * calcaijdT(phase, + getUnifacGroup(j).getGroupIndex(), getUnifacGroup(i).getGroupIndex())); + } + sum3Comp += getUnifacGroup(i).getQComp() * Math.exp(-1.0 / phase.getTemperature() + * calcaijdT(phase, getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) + / sum2Comp; + sum3Mix += getUnifacGroup(i).getQMix() * Math.exp(-1.0 / phase.getTemperature() + * calcaijdT(phase, getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) + / sum2Mix; + } + double tempGammaComp = this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Comp) - sum3Comp); + double tempGammaMix = this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Mix) - sum3Mix); + getUnifacGroup(k).setLnGammaCompdT(tempGammaComp); + getUnifacGroup(k).setLnGammaMixdT(tempGammaMix); + } + + /** {@inheritDoc} */ + @Override + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + int initType = phase.getInitType(); + double lngammaCombinational = 0.0; + double lngammaResidual = 0.0; + double lngammaResidualdT = 0.0; + dlngammadn = new double[numberOfComponents]; + dlngammadt = 0.0; + ComponentGEUnifac[] compArray = (ComponentGEUnifac[]) phase.getcomponentArray(); + double temp1 = 0; + double temp2 = 0; + double suml = 0.0; + double V = 0.0; + + double F = 0.0; + for (int j = 0; j < numberOfComponents; j++) { + temp1 += compArray[j].getx() * compArray[j].getR(); + temp2 += (compArray[j].getQ() * compArray[j].getx()); + suml += compArray[j].getx() * (10.0 / 2.0 * (compArray[j].getR() - compArray[j].getQ()) + - (compArray[j].getR() - 1.0)); } - /** - *

- * calcaijdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param i a int - * @param j a int - * @return a double - */ - public double calcaijdT(PhaseInterface phase, int i, int j) { - return ((PhaseGEUnifac) phase).getBij(i, j) - + 2.0 * ((PhaseGEUnifac) phase).getCij(i, j) * phase.getTemperature(); + V = this.getx() * this.getR() / temp1; + F = this.getx() * this.getQ() / temp2; + double li = 10.0 / 2.0 * (getR() - getQ()) - (getR() - 1.0); + // System.out.println("li " + li); + lngammaCombinational = + (10.0 / 2.0 * getQ() * Math.log(F / V) + li - V / getx() * suml) + Math.log(V / getx()); + // System.out.println("ln gamma comb " + lngammaCombinational); + + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + getUnifacGroup(i).calcXComp(this); + // getUnifacGroup(i).calcXMix((PhaseGEUnifac) phase); + getUnifacGroup(i).calcQComp(this); + getUnifacGroup(i).calcQMix((PhaseGEUnifac) phase); } - /** {@inheritDoc} */ - @Override - public void calclnGammak(int k, PhaseInterface phase) { - double sum1Comp = 0.0, sum1Mix = 0.0; - double sum3Comp = 0.0, sum3Mix = 0.0; - - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - sum1Comp += getUnifacGroup(i).getQComp() - * Math.exp(-1.0 / phase.getTemperature() * calcaij(phase, - getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); - sum1Mix += getUnifacGroup(i).getQMix() - * Math.exp(-1.0 / phase.getTemperature() * calcaij(phase, - getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); - double sum2Comp = 0.0, sum2Mix = 0.0; - for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { - sum2Comp += getUnifacGroup(j).getQComp() * Math.exp(-1.0 / phase.getTemperature() - * calcaij(phase, getUnifacGroup(j).getGroupIndex(), - getUnifacGroup(i).getGroupIndex())); - sum2Mix += getUnifacGroup(j).getQMix() * Math.exp(-1.0 / phase.getTemperature() - * calcaij(phase, getUnifacGroup(j).getGroupIndex(), - getUnifacGroup(i).getGroupIndex())); - } - sum3Comp += getUnifacGroup(i).getQComp() - * Math.exp(-1.0 / phase.getTemperature() * calcaij(phase, - getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) - / sum2Comp; - sum3Mix += getUnifacGroup(i).getQMix() - * Math.exp(-1.0 / phase.getTemperature() * calcaij(phase, - getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) - / sum2Mix; - } - double tempGammaComp = - this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Comp) - sum3Comp); - double tempGammaMix = this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Mix) - sum3Mix); - getUnifacGroup(k).setLnGammaComp(tempGammaComp); - getUnifacGroup(k).setLnGammaMix(tempGammaMix); + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + calclnGammak(i, phase); } - /** - *

- * calclnGammakdT. - *

- * - * @param k a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void calclnGammakdT(int k, PhaseInterface phase) { - double sum1Comp = 0.0, sum1Mix = 0.0; - double sum3Comp = 0.0, sum3Mix = 0.0; - - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - sum1Comp += getUnifacGroup(i).getQComp() - * Math.exp(-1.0 / phase.getTemperature() * calcaijdT(phase, - getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); - sum1Mix += getUnifacGroup(i).getQMix() - * Math.exp(-1.0 / phase.getTemperature() * calcaijdT(phase, - getUnifacGroup(i).getGroupIndex(), getUnifacGroup(k).getGroupIndex())); - double sum2Comp = 0.0, sum2Mix = 0.0; - for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { - sum2Comp += getUnifacGroup(j).getQComp() * Math.exp(-1.0 / phase.getTemperature() - * calcaijdT(phase, getUnifacGroup(j).getGroupIndex(), - getUnifacGroup(i).getGroupIndex())); - sum2Mix += getUnifacGroup(j).getQMix() * Math.exp(-1.0 / phase.getTemperature() - * calcaijdT(phase, getUnifacGroup(j).getGroupIndex(), - getUnifacGroup(i).getGroupIndex())); - } - sum3Comp += getUnifacGroup(i).getQComp() - * Math.exp(-1.0 / phase.getTemperature() * calcaijdT(phase, - getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) - / sum2Comp; - sum3Mix += getUnifacGroup(i).getQMix() - * Math.exp(-1.0 / phase.getTemperature() * calcaijdT(phase, - getUnifacGroup(k).getGroupIndex(), getUnifacGroup(i).getGroupIndex())) - / sum2Mix; - } - double tempGammaComp = - this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Comp) - sum3Comp); - double tempGammaMix = this.getUnifacGroup(k).getQ() * (1.0 - Math.log(sum1Mix) - sum3Mix); - getUnifacGroup(k).setLnGammaCompdT(tempGammaComp); - getUnifacGroup(k).setLnGammaMixdT(tempGammaMix); + lngammaResidual = 0.0; + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + lngammaResidual += getUnifacGroup(i).getN() + * (getUnifacGroup(i).getLnGammaMix() - getUnifacGroup(i).getLnGammaComp()); } - /** {@inheritDoc} */ - @Override - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - int initType = phase.getInitType(); - double lngammaCombinational = 0.0, lngammaResidual = 0.0; - double lngammaResidualdT = 0.0; - dlngammadn = new double[numberOfComponents]; - dlngammadt = 0.0; - ComponentGEUnifac[] compArray = (ComponentGEUnifac[]) phase.getcomponentArray(); - double temp1 = 0, temp2 = 0, suml = 0.0; - double V = 0.0, F = 0.0; - - for (int j = 0; j < numberOfComponents; j++) { - temp1 += compArray[j].getx() * compArray[j].getR(); - temp2 += (compArray[j].getQ() * compArray[j].getx()); - suml += compArray[j].getx() * (10.0 / 2.0 * (compArray[j].getR() - compArray[j].getQ()) - - (compArray[j].getR() - 1.0)); - } - - V = this.getx() * this.getR() / temp1; - F = this.getx() * this.getQ() / temp2; - double li = 10.0 / 2.0 * (getR() - getQ()) - (getR() - 1.0); - // System.out.println("li " + li); - lngammaCombinational = (10.0 / 2.0 * getQ() * Math.log(F / V) + li - V / getx() * suml) - + Math.log(V / getx()); - // System.out.println("ln gamma comb " + lngammaCombinational); - - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - getUnifacGroup(i).calcXComp(this); - // getUnifacGroup(i).calcXMix((PhaseGEUnifac) phase); - getUnifacGroup(i).calcQComp(this); - getUnifacGroup(i).calcQMix((PhaseGEUnifac) phase); - } - - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - calclnGammak(i, phase); - } - - lngammaResidual = 0.0; - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - lngammaResidual += getUnifacGroup(i).getN() - * (getUnifacGroup(i).getLnGammaMix() - getUnifacGroup(i).getLnGammaComp()); - } - - lngamma = lngammaResidual + lngammaCombinational; - gamma = Math.exp(lngamma); - - if (initType > 1) { - lngammaResidualdT = 0.0; - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - calclnGammakdT(i, phase); - lngammaResidualdT += getUnifacGroup(i).getN() * (getUnifacGroup(i).getLnGammaMixdT() - - getUnifacGroup(i).getLnGammaCompdT()); - } - dlngammadt = lngammaResidualdT; - } - - return gamma; + lngamma = lngammaResidual + lngammaCombinational; + gamma = Math.exp(lngamma); + + if (initType > 1) { + lngammaResidualdT = 0.0; + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + calclnGammakdT(i, phase); + lngammaResidualdT += getUnifacGroup(i).getN() + * (getUnifacGroup(i).getLnGammaMixdT() - getUnifacGroup(i).getLnGammaCompdT()); + } + dlngammadt = lngammaResidualdT; } + + return gamma; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentGEUnifacUMRPRU.java b/src/main/java/neqsim/thermo/component/ComponentGEUnifacUMRPRU.java index b8363045b3..b2bd488f15 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGEUnifacUMRPRU.java +++ b/src/main/java/neqsim/thermo/component/ComponentGEUnifacUMRPRU.java @@ -6,6 +6,7 @@ import neqsim.thermo.phase.PhaseGEUnifac; import neqsim.thermo.phase.PhaseGEUnifacUMRPRU; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -16,622 +17,612 @@ * @version $Id: $Id */ public class ComponentGEUnifacUMRPRU extends ComponentGEUnifac { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(ComponentGEUnifacUMRPRU.class); - - int numberOfUnifacSubGroups = 139; - double[][] aij = null, aijdT = null, aijdTdT = null; - double[][] tempExpaij = null; - double oldTemperature = -10.0, old2Temperature = -10; - static double VCommontemp = 0.0, FCommontemp = 0.0; - double[] sum2Comp = null, sum2Mix = null, sum2CompdT = null, sum2CompdTdT = null, - sum2MixdT = null, sum2MixdTdT = null; - - /** - *

- * Constructor for ComponentGEUnifacUMRPRU. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGEUnifacUMRPRU(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - // System.out.println("finished reading UNIFAC "); - if (component_name.contains("_PC")) { - double number = getMolarMass() / 0.014; - int intNumb = (int) Math.round(number) - 2; - unifacGroups.clear(); - unifacGroups.add(new UNIFACgroup(1, 2)); - unifacGroups.add(new UNIFACgroup(2, intNumb)); - unifacGroupsArray = unifacGroups.toArray(unifacGroupsArray); - // System.out.println("adding unifac pseudo.." + intNumb); - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - getUnifacGroup(i).calcXComp(this); - } - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - getUnifacGroup(i).calcQComp(this); - } - return; - } - try { - neqsim.util.database.NeqSimDataBase database = - new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - dataSet = database.getResultSet( - ("SELECT * FROM unifaccompumrpru WHERE Name='" + component_name + "'")); - dataSet.next(); - // dataSet.getClob("name"); - } catch (Exception e) { - dataSet.close(); - dataSet = database.getResultSet( - ("SELECT * FROM unifaccompumrpru WHERE Name='" + component_name + "'")); - dataSet.next(); - logger.error("Something went wrong. Closing database.", e); - } - unifacGroups.clear(); - for (int p = 1; p < numberOfUnifacSubGroups; p++) { - int temp = Integer.parseInt(dataSet.getString("sub" + Integer.toString(p))); - if (temp > 0) { - unifacGroups.add(new UNIFACgroup(p, temp)); - // System.out.println("compUMR " + component_name + " adding UNIFAC group " + - // p); - } - } - - dataSet.close(); - database.getConnection().close(); - } catch (Exception e) { - String err = e.toString(); - logger.error(err); - } - unifacGroupsArray = unifacGroups.toArray(unifacGroupsArray); - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - getUnifacGroup(i).calcXComp(this); - } - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - getUnifacGroup(i).calcQComp(this); - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentGEUnifacUMRPRU.class); + + int numberOfUnifacSubGroups = 139; + double[][] aij = null; + double[][] aijdT = null; + double[][] aijdTdT = null; + double[][] tempExpaij = null; + double oldTemperature = -10.0; + double old2Temperature = -10; + double[] sum2Comp = null; + double[] sum2Mix = null; + double[] sum2CompdT = null; + double[] sum2CompdTdT = null; + double[] sum2MixdT = null; + double[] sum2MixdTdT = null; + + /** + *

+ * Constructor for ComponentGEUnifacUMRPRU. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGEUnifacUMRPRU(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + // System.out.println("finished reading UNIFAC "); + if (name.contains("_PC")) { + double number = getMolarMass() / 0.014; + int intNumb = (int) Math.round(number) - 2; + unifacGroups.clear(); + unifacGroups.add(new UNIFACgroup(1, 2)); + unifacGroups.add(new UNIFACgroup(2, intNumb)); + unifacGroupsArray = unifacGroups.toArray(unifacGroupsArray); + // System.out.println("adding unifac pseudo.." + intNumb); + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + getUnifacGroup(i).calcXComp(this); + } + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + getUnifacGroup(i).calcQComp(this); + } + return; } - - /** - *

- * calcTempExpaij. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void calcTempExpaij(PhaseInterface phase) { - if (tempExpaij == null) { - tempExpaij = new double[getNumberOfUNIFACgroups()][getNumberOfUNIFACgroups()]; - - sum2Comp = new double[getNumberOfUNIFACgroups()]; - sum2Mix = new double[getNumberOfUNIFACgroups()]; - - sum2CompdT = new double[getNumberOfUNIFACgroups()]; - sum2MixdT = new double[getNumberOfUNIFACgroups()]; - - sum2CompdTdT = new double[getNumberOfUNIFACgroups()]; - sum2MixdTdT = new double[getNumberOfUNIFACgroups()]; - } - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { - tempExpaij[i][j] = Math.exp(-1.0 / phase.getTemperature() * getaij( - getUnifacGroup(i).getGroupIndex(), getUnifacGroup(j).getGroupIndex())); - } + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + java.sql.ResultSet dataSet = null; + try { + dataSet = + database.getResultSet(("SELECT * FROM unifaccompumrpru WHERE Name='" + name + "'")); + dataSet.next(); + // dataSet.getClob("name"); + } catch (Exception ex) { + dataSet.close(); + dataSet = + database.getResultSet(("SELECT * FROM unifaccompumrpru WHERE Name='" + name + "'")); + dataSet.next(); + logger.error("Something went wrong. Closing database.", ex); + } + unifacGroups.clear(); + for (int p = 1; p < numberOfUnifacSubGroups; p++) { + int temp = Integer.parseInt(dataSet.getString("sub" + Integer.toString(p))); + if (temp > 0) { + unifacGroups.add(new UNIFACgroup(p, temp)); + // System.out.println("compUMR " + name + " adding UNIFAC group " + + // p); } + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** - *

- * calcSum2Comp. - *

- */ - public void calcSum2Comp() { - UNIFACgroup[] unifacGroupsLocal = getUnifacGroups(); - for (int i = 0; i < unifacGroupsLocal.length; i++) { - sum2Comp[i] = 0; - sum2Mix[i] = 0; - for (int j = 0; j < unifacGroupsLocal.length; j++) { - sum2Comp[i] += unifacGroupsLocal[j].getQComp() * tempExpaij[j][i]; - sum2Mix[i] += unifacGroupsLocal[j].getQMix() * tempExpaij[j][i]; - } - } + unifacGroupsArray = unifacGroups.toArray(unifacGroupsArray); + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + getUnifacGroup(i).calcXComp(this); } - - /** - *

- * calcSum2CompdTdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void calcSum2CompdTdT(PhaseInterface phase) { - double der, tempVar, tempVar2; - double tempSqared = phase.getTemperature() * phase.getTemperature(); - double temp3pow = tempSqared * phase.getTemperature(); - UNIFACgroup[] unifacGroupsLocal = getUnifacGroups(); - for (int i = 0; i < unifacGroupsLocal.length; i++) { - sum2CompdT[i] = 0; - sum2CompdTdT[i] = 0; - sum2MixdT[i] = 0; - sum2MixdTdT[i] = 0; - for (int j = 0; j < unifacGroupsLocal.length; j++) { - tempVar2 = getaij(unifacGroupsLocal[j].getGroupIndex(), - unifacGroupsLocal[i].getGroupIndex()); - tempVar = getaijdT(unifacGroupsLocal[j].getGroupIndex(), - unifacGroupsLocal[i].getGroupIndex()); - - double Xsum2CompdT = unifacGroupsLocal[j].getQComp() - * (tempVar2 / tempSqared - tempVar / phase.getTemperature()) - * tempExpaij[j][i]; - sum2CompdT[i] += Xsum2CompdT; - der = tempVar / tempSqared - 2.0 * tempVar2 / temp3pow - - getaijdTdT(unifacGroupsLocal[j].getGroupIndex(), - unifacGroupsLocal[i].getGroupIndex()) / phase.getTemperature() - + tempVar / tempSqared; - sum2CompdTdT[i] += - (tempVar2 / tempSqared - tempVar / phase.getTemperature()) * Xsum2CompdT - + der * unifacGroupsLocal[j].getQComp() * tempExpaij[j][i]; - - double Xsum2MixdT = unifacGroupsLocal[j].getQMix() - * (tempVar2 / tempSqared - tempVar / phase.getTemperature()) - * tempExpaij[j][i]; - sum2MixdT[i] += Xsum2MixdT; - sum2MixdTdT[i] += - (tempVar2 / tempSqared - tempVar / phase.getTemperature()) * Xsum2MixdT - + der * unifacGroupsLocal[j].getQMix() * tempExpaij[j][i]; - } - } + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + getUnifacGroup(i).calcQComp(this); } - - /** {@inheritDoc} */ - @Override - public void calclnGammak(int k, PhaseInterface phase) { - double sum1Comp = 0.0, sum1Mix = 0.0; - double sum3Comp = 0.0, sum3Mix = 0.0; - UNIFACgroup[] unifacGroupsLocal = getUnifacGroups(); - for (int i = 0; i < unifacGroupsLocal.length; i++) { - sum1Comp += unifacGroupsLocal[i].getQComp() * tempExpaij[i][k]; - sum1Mix += unifacGroupsLocal[i].getQMix() * tempExpaij[i][k]; - sum3Comp += unifacGroupsLocal[i].getQComp() * tempExpaij[k][i] / sum2Comp[i]; - sum3Mix += unifacGroupsLocal[i].getQMix() * tempExpaij[k][i] / sum2Mix[i]; - } - double tempGammaComp = unifacGroupsLocal[k].getQ() * (1.0 - Math.log(sum1Comp) - sum3Comp); - double tempGammaMix = unifacGroupsLocal[k].getQ() * (1.0 - Math.log(sum1Mix) - sum3Mix); - getUnifacGroup(k).setLnGammaComp(tempGammaComp); - getUnifacGroup(k).setLnGammaMix(tempGammaMix); + } + + /** + *

+ * calcTempExpaij. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void calcTempExpaij(PhaseInterface phase) { + if (tempExpaij == null) { + tempExpaij = new double[getNumberOfUNIFACgroups()][getNumberOfUNIFACgroups()]; + + sum2Comp = new double[getNumberOfUNIFACgroups()]; + sum2Mix = new double[getNumberOfUNIFACgroups()]; + + sum2CompdT = new double[getNumberOfUNIFACgroups()]; + sum2MixdT = new double[getNumberOfUNIFACgroups()]; + + sum2CompdTdT = new double[getNumberOfUNIFACgroups()]; + sum2MixdTdT = new double[getNumberOfUNIFACgroups()]; } - - /** - *

- * calclnGammakdn. - *

- * - * @param k a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param derCompNumb a int - */ - public void calclnGammakdn(int k, PhaseInterface phase, int derCompNumb) { - double sum1Mix = 0.0, sum1Mixdn = 0.0, sum3Mix = 0.0; - UNIFACgroup[] unifacGroupsLocal = getUnifacGroups(); - for (int i = 0; i < unifacGroupsLocal.length; i++) { - sum1Mix += unifacGroupsLocal[i].getQMix() * tempExpaij[i][k]; - sum1Mixdn += unifacGroupsLocal[i].QMixdN[derCompNumb] * tempExpaij[i][k]; - double sum2Mixdn = 0.0; - for (int j = 0; j < unifacGroupsLocal.length; j++) { - // sum2Mix += getUnifacGroup(j).getQMix() * tempExpaij[j][i]; - sum2Mixdn += unifacGroupsLocal[j].QMixdN[derCompNumb] * tempExpaij[j][i]; - } - sum3Mix += (unifacGroupsLocal[i].QMixdN[derCompNumb] * tempExpaij[k][i] * sum2Mix[i] - - unifacGroupsLocal[i].getQMix() * tempExpaij[k][i] * sum2Mixdn) - / (sum2Mix[i] * sum2Mix[i]); - } - double tempGammaMix = unifacGroupsLocal[k].getQ() * (-sum1Mixdn / sum1Mix - sum3Mix); - // getUnifacGroup(k).setLnGammaComp(tempGammaComp); - unifacGroupsLocal[k].setLnGammaMixdn(tempGammaMix, derCompNumb); + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { + tempExpaij[i][j] = Math.exp(-1.0 / phase.getTemperature() + * getaij(getUnifacGroup(i).getGroupIndex(), getUnifacGroup(j).getGroupIndex())); + } } - - /** - *

- * calclnGammakdTdT. - *

- * - * @param k a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void calclnGammakdTdT(int k, PhaseInterface phase) { - double sum1Comp = 0.0, sum1CompdT = 0.0, sum1CompdTdT = 0.0, sum1Mix = 0.0, sum1MixdT = 0.0, - sum1MixdTdT = 0.0, sum2Comp2, sum2Mix2; - double sum3Comp = 0, sum3CompdT = 0.0, sum3Mix = 0, sum3MixdT = 0.0; - double tempSqared = phase.getTemperature() * phase.getTemperature(); - double temp3pow = tempSqared * phase.getTemperature(); - double Xsum1CompdT, Xsum1MixdT, vComp, der, vdTComp, vdTdTComp, vMix, vdTMix, vdTdTMix; - double tempVar1, tempVar2, tempVar1dT, tempVar2dT; - UNIFACgroup[] unifacGroupsLocal = getUnifacGroups(); - for (int i = 0; i < unifacGroupsLocal.length; i++) { - tempVar1 = getaij(unifacGroupsLocal[i].getGroupIndex(), - unifacGroupsLocal[k].getGroupIndex()); - tempVar2 = getaij(unifacGroupsLocal[k].getGroupIndex(), - unifacGroupsLocal[i].getGroupIndex()); - tempVar1dT = getaijdT(unifacGroupsLocal[i].getGroupIndex(), - unifacGroupsLocal[k].getGroupIndex()); - tempVar2dT = getaijdT(unifacGroupsLocal[k].getGroupIndex(), - unifacGroupsLocal[i].getGroupIndex()); - sum1Comp += unifacGroupsLocal[i].getQComp() * tempExpaij[i][k]; - Xsum1CompdT = unifacGroupsLocal[i].getQComp() - * (tempVar1 / tempSqared - tempVar1dT / phase.getTemperature()) - * tempExpaij[i][k]; - sum1CompdT += Xsum1CompdT; - der = tempVar1dT / tempSqared - 2.0 * tempVar1 / temp3pow - - getaijdTdT(unifacGroupsLocal[i].getGroupIndex(), - unifacGroupsLocal[k].getGroupIndex()) / phase.getTemperature() - + tempVar1dT / tempSqared; - sum1CompdTdT += - (tempVar1 / tempSqared - tempVar1dT / phase.getTemperature()) * Xsum1CompdT - + der * unifacGroupsLocal[i].getQComp() * tempExpaij[i][k]; - - sum1Mix += unifacGroupsLocal[i].getQMix() * tempExpaij[i][k]; - Xsum1MixdT = unifacGroupsLocal[i].getQMix() - * (tempVar1 / tempSqared - tempVar1dT / phase.getTemperature()) - * tempExpaij[i][k]; - sum1MixdT += Xsum1MixdT; - sum1MixdTdT += - (tempVar1 / tempSqared - tempVar1dT / phase.getTemperature()) * Xsum1MixdT - + der * unifacGroupsLocal[i].getQMix() * tempExpaij[i][k]; - - vComp = unifacGroupsLocal[i].getQComp() * tempExpaij[k][i]; - vdTComp = unifacGroupsLocal[i].getQComp() - * (tempVar2 / tempSqared - tempVar2dT / phase.getTemperature()) - * tempExpaij[k][i]; - der = tempVar2dT / tempSqared - 2.0 * tempVar2 / temp3pow - - getaijdTdT(unifacGroupsLocal[k].getGroupIndex(), - getUnifacGroup(i).getGroupIndex()) / phase.getTemperature() - + tempVar2dT / tempSqared; - vdTdTComp = (tempVar2 / tempSqared - tempVar2dT / phase.getTemperature()) * vdTComp - + der * getUnifacGroup(i).getQComp() * tempExpaij[k][i]; - - vMix = unifacGroupsLocal[i].getQMix() * tempExpaij[k][i]; - vdTMix = unifacGroupsLocal[i].getQMix() - * (tempVar2 / tempSqared - tempVar2dT / phase.getTemperature()) - * tempExpaij[k][i]; - vdTdTMix = (tempVar2 / tempSqared - tempVar2dT / phase.getTemperature()) * vdTMix - + der * unifacGroupsLocal[i].getQMix() * tempExpaij[k][i]; - - sum3Comp += - (vdTComp / sum2Comp[i] - vComp / Math.pow(sum2Comp[i], 2.0) * sum2CompdT[i]); - sum3Mix += (vdTMix / sum2Mix[i] - vMix / Math.pow(sum2Mix[i], 2.0) * sum2MixdT[i]); - sum2Comp2 = sum2Comp[i] * sum2Comp[i]; - sum3CompdT += (vdTdTComp / sum2Comp[i] - vdTComp / sum2Comp2 * sum2CompdT[i] - - vdTComp / sum2Comp2 * sum2CompdT[i]) - + 2.0 * vComp / (sum2Comp2 * sum2Comp[i]) * sum2CompdT[i] * sum2CompdT[i] - - vComp / sum2Comp2 * sum2CompdTdT[i]; - - sum2Mix2 = sum2Mix[i] * sum2Mix[i]; - sum3MixdT += vdTdTMix / sum2Mix[i] - vdTMix / sum2Mix2 * sum2MixdT[i] - - vdTMix / sum2Mix2 * sum2MixdT[i] - + 2.0 * vMix / (sum2Mix2 * sum2Mix[i]) * sum2MixdT[i] * sum2MixdT[i] - - vMix / sum2Mix2 * sum2MixdTdT[i]; - } - - double tempGammaComp = - unifacGroupsLocal[k].getQ() * (-1.0 / sum1Comp * sum1CompdT - sum3Comp); - double tempGammaMix = unifacGroupsLocal[k].getQ() * (-1.0 / sum1Mix * sum1MixdT - sum3Mix); - - unifacGroupsLocal[k].setLnGammaCompdT(tempGammaComp); - unifacGroupsLocal[k].setLnGammaMixdT(tempGammaMix); - - double tempGammaCompdT = unifacGroupsLocal[k].getQ() * (-1.0 / sum1Comp * sum1CompdTdT - + 1.0 / (sum1Comp * sum1Comp) * sum1CompdT * sum1CompdT - sum3CompdT); - - double tempGammaMixdT = unifacGroupsLocal[k].getQ() * (-1.0 / sum1Mix * sum1MixdTdT - + 1.0 / (sum1Mix * sum1Mix) * sum1MixdT * sum1MixdT - sum3MixdT); - unifacGroupsLocal[k].setLnGammaCompdTdT(tempGammaCompdT); - unifacGroupsLocal[k].setLnGammaMixdTdT(tempGammaMixdT); + } + + /** + *

+ * calcSum2Comp. + *

+ */ + public void calcSum2Comp() { + UNIFACgroup[] unifacGroupsLocal = getUnifacGroups(); + for (int i = 0; i < unifacGroupsLocal.length; i++) { + sum2Comp[i] = 0; + sum2Mix[i] = 0; + for (int j = 0; j < unifacGroupsLocal.length; j++) { + sum2Comp[i] += unifacGroupsLocal[j].getQComp() * tempExpaij[j][i]; + sum2Mix[i] += unifacGroupsLocal[j].getQMix() * tempExpaij[j][i]; + } } - - /** - *

- * commonInit. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - */ - public void commonInit(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - VCommontemp = 0; - FCommontemp = 0; - ComponentGEUnifac[] compArray = (ComponentGEUnifac[]) phase.getcomponentArray(); - - for (int j = 0; j < numberOfComponents; j++) { - VCommontemp += compArray[j].getx() * compArray[j].getR(); - FCommontemp += (compArray[j].getQ() * compArray[j].getx()); - } + } + + /** + *

+ * calcSum2CompdTdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void calcSum2CompdTdT(PhaseInterface phase) { + double der; + double tempVar; + double tempVar2; + double tempSqared = phase.getTemperature() * phase.getTemperature(); + double temp3pow = tempSqared * phase.getTemperature(); + UNIFACgroup[] unifacGroupsLocal = getUnifacGroups(); + for (int i = 0; i < unifacGroupsLocal.length; i++) { + sum2CompdT[i] = 0; + sum2CompdTdT[i] = 0; + sum2MixdT[i] = 0; + sum2MixdTdT[i] = 0; + for (int j = 0; j < unifacGroupsLocal.length; j++) { + tempVar2 = + getaij(unifacGroupsLocal[j].getGroupIndex(), unifacGroupsLocal[i].getGroupIndex()); + tempVar = + getaijdT(unifacGroupsLocal[j].getGroupIndex(), unifacGroupsLocal[i].getGroupIndex()); + + double Xsum2CompdT = unifacGroupsLocal[j].getQComp() + * (tempVar2 / tempSqared - tempVar / phase.getTemperature()) * tempExpaij[j][i]; + sum2CompdT[i] += Xsum2CompdT; + der = + tempVar / tempSqared - 2.0 * tempVar2 / temp3pow + - getaijdTdT(unifacGroupsLocal[j].getGroupIndex(), + unifacGroupsLocal[i].getGroupIndex()) / phase.getTemperature() + + tempVar / tempSqared; + sum2CompdTdT[i] += (tempVar2 / tempSqared - tempVar / phase.getTemperature()) * Xsum2CompdT + + der * unifacGroupsLocal[j].getQComp() * tempExpaij[j][i]; + + double Xsum2MixdT = unifacGroupsLocal[j].getQMix() + * (tempVar2 / tempSqared - tempVar / phase.getTemperature()) * tempExpaij[j][i]; + sum2MixdT[i] += Xsum2MixdT; + sum2MixdTdT[i] += (tempVar2 / tempSqared - tempVar / phase.getTemperature()) * Xsum2MixdT + + der * unifacGroupsLocal[j].getQMix() * tempExpaij[j][i]; + } + } + } + + /** {@inheritDoc} */ + @Override + public void calclnGammak(int k, PhaseInterface phase) { + double sum1Comp = 0.0; + double sum1Mix = 0.0; + double sum3Comp = 0.0; + double sum3Mix = 0.0; + UNIFACgroup[] unifacGroupsLocal = getUnifacGroups(); + for (int i = 0; i < unifacGroupsLocal.length; i++) { + sum1Comp += unifacGroupsLocal[i].getQComp() * tempExpaij[i][k]; + sum1Mix += unifacGroupsLocal[i].getQMix() * tempExpaij[i][k]; + sum3Comp += unifacGroupsLocal[i].getQComp() * tempExpaij[k][i] / sum2Comp[i]; + sum3Mix += unifacGroupsLocal[i].getQMix() * tempExpaij[k][i] / sum2Mix[i]; + } + double tempGammaComp = unifacGroupsLocal[k].getQ() * (1.0 - Math.log(sum1Comp) - sum3Comp); + double tempGammaMix = unifacGroupsLocal[k].getQ() * (1.0 - Math.log(sum1Mix) - sum3Mix); + getUnifacGroup(k).setLnGammaComp(tempGammaComp); + getUnifacGroup(k).setLnGammaMix(tempGammaMix); + } + + /** + *

+ * calclnGammakdn. + *

+ * + * @param k a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param derCompNumb a int + */ + public void calclnGammakdn(int k, PhaseInterface phase, int derCompNumb) { + double sum1Mix = 0.0; + double sum1Mixdn = 0.0; + double sum3Mix = 0.0; + UNIFACgroup[] unifacGroupsLocal = getUnifacGroups(); + for (int i = 0; i < unifacGroupsLocal.length; i++) { + sum1Mix += unifacGroupsLocal[i].getQMix() * tempExpaij[i][k]; + sum1Mixdn += unifacGroupsLocal[i].QMixdN[derCompNumb] * tempExpaij[i][k]; + double sum2Mixdn = 0.0; + for (int j = 0; j < unifacGroupsLocal.length; j++) { + // sum2Mix += getUnifacGroup(j).getQMix() * tempExpaij[j][i]; + sum2Mixdn += unifacGroupsLocal[j].QMixdN[derCompNumb] * tempExpaij[j][i]; + } + sum3Mix += (unifacGroupsLocal[i].QMixdN[derCompNumb] * tempExpaij[k][i] * sum2Mix[i] + - unifacGroupsLocal[i].getQMix() * tempExpaij[k][i] * sum2Mixdn) + / (sum2Mix[i] * sum2Mix[i]); + } + double tempGammaMix = unifacGroupsLocal[k].getQ() * (-sum1Mixdn / sum1Mix - sum3Mix); + // getUnifacGroup(k).setLnGammaComp(tempGammaComp); + unifacGroupsLocal[k].setLnGammaMixdn(tempGammaMix, derCompNumb); + } + + /** + *

+ * calclnGammakdTdT. + *

+ * + * @param k a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void calclnGammakdTdT(int k, PhaseInterface phase) { + double sum1Comp = 0.0; + double sum1CompdT = 0.0; + double sum1CompdTdT = 0.0; + double sum1Mix = 0.0; + double sum1MixdT = 0.0; + double sum1MixdTdT = 0.0; + double sum2Comp2; + double sum2Mix2; + double sum3Comp = 0; + double sum3CompdT = 0.0; + double sum3Mix = 0; + double sum3MixdT = 0.0; + double tempSqared = phase.getTemperature() * phase.getTemperature(); + double temp3pow = tempSqared * phase.getTemperature(); + double Xsum1CompdT; + double Xsum1MixdT; + double vComp; + double der; + double vdTComp; + double vdTdTComp; + double vMix; + double vdTMix; + double vdTdTMix; + double tempVar1; + double tempVar2; + double tempVar1dT; + double tempVar2dT; + UNIFACgroup[] unifacGroupsLocal = getUnifacGroups(); + for (int i = 0; i < unifacGroupsLocal.length; i++) { + tempVar1 = getaij(unifacGroupsLocal[i].getGroupIndex(), unifacGroupsLocal[k].getGroupIndex()); + tempVar2 = getaij(unifacGroupsLocal[k].getGroupIndex(), unifacGroupsLocal[i].getGroupIndex()); + tempVar1dT = + getaijdT(unifacGroupsLocal[i].getGroupIndex(), unifacGroupsLocal[k].getGroupIndex()); + tempVar2dT = + getaijdT(unifacGroupsLocal[k].getGroupIndex(), unifacGroupsLocal[i].getGroupIndex()); + sum1Comp += unifacGroupsLocal[i].getQComp() * tempExpaij[i][k]; + Xsum1CompdT = unifacGroupsLocal[i].getQComp() + * (tempVar1 / tempSqared - tempVar1dT / phase.getTemperature()) * tempExpaij[i][k]; + sum1CompdT += Xsum1CompdT; + der = + tempVar1dT / tempSqared - 2.0 * tempVar1 / temp3pow + - getaijdTdT(unifacGroupsLocal[i].getGroupIndex(), + unifacGroupsLocal[k].getGroupIndex()) / phase.getTemperature() + + tempVar1dT / tempSqared; + sum1CompdTdT += (tempVar1 / tempSqared - tempVar1dT / phase.getTemperature()) * Xsum1CompdT + + der * unifacGroupsLocal[i].getQComp() * tempExpaij[i][k]; + + sum1Mix += unifacGroupsLocal[i].getQMix() * tempExpaij[i][k]; + Xsum1MixdT = unifacGroupsLocal[i].getQMix() + * (tempVar1 / tempSqared - tempVar1dT / phase.getTemperature()) * tempExpaij[i][k]; + sum1MixdT += Xsum1MixdT; + sum1MixdTdT += (tempVar1 / tempSqared - tempVar1dT / phase.getTemperature()) * Xsum1MixdT + + der * unifacGroupsLocal[i].getQMix() * tempExpaij[i][k]; + + vComp = unifacGroupsLocal[i].getQComp() * tempExpaij[k][i]; + vdTComp = unifacGroupsLocal[i].getQComp() + * (tempVar2 / tempSqared - tempVar2dT / phase.getTemperature()) * tempExpaij[k][i]; + der = tempVar2dT / tempSqared - 2.0 * tempVar2 / temp3pow + - getaijdTdT(unifacGroupsLocal[k].getGroupIndex(), getUnifacGroup(i).getGroupIndex()) + / phase.getTemperature() + + tempVar2dT / tempSqared; + vdTdTComp = (tempVar2 / tempSqared - tempVar2dT / phase.getTemperature()) * vdTComp + + der * getUnifacGroup(i).getQComp() * tempExpaij[k][i]; + + vMix = unifacGroupsLocal[i].getQMix() * tempExpaij[k][i]; + vdTMix = unifacGroupsLocal[i].getQMix() + * (tempVar2 / tempSqared - tempVar2dT / phase.getTemperature()) * tempExpaij[k][i]; + vdTdTMix = (tempVar2 / tempSqared - tempVar2dT / phase.getTemperature()) * vdTMix + + der * unifacGroupsLocal[i].getQMix() * tempExpaij[k][i]; + + sum3Comp += (vdTComp / sum2Comp[i] - vComp / Math.pow(sum2Comp[i], 2.0) * sum2CompdT[i]); + sum3Mix += (vdTMix / sum2Mix[i] - vMix / Math.pow(sum2Mix[i], 2.0) * sum2MixdT[i]); + sum2Comp2 = sum2Comp[i] * sum2Comp[i]; + sum3CompdT += (vdTdTComp / sum2Comp[i] - vdTComp / sum2Comp2 * sum2CompdT[i] + - vdTComp / sum2Comp2 * sum2CompdT[i]) + + 2.0 * vComp / (sum2Comp2 * sum2Comp[i]) * sum2CompdT[i] * sum2CompdT[i] + - vComp / sum2Comp2 * sum2CompdTdT[i]; + + sum2Mix2 = sum2Mix[i] * sum2Mix[i]; + sum3MixdT += vdTdTMix / sum2Mix[i] - vdTMix / sum2Mix2 * sum2MixdT[i] + - vdTMix / sum2Mix2 * sum2MixdT[i] + + 2.0 * vMix / (sum2Mix2 * sum2Mix[i]) * sum2MixdT[i] * sum2MixdT[i] + - vMix / sum2Mix2 * sum2MixdTdT[i]; } - // TODO impement dlngammadn - - /** {@inheritDoc} */ - @Override - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - int initType = phase.getInitType(); - double lngammaCombinational, lngammaResidual, lngammaResidualdT, lngammaResidualdTdT; - gamma = 1.0; - lngamma = 0.0; - dlngammadt = 0.0; - dlngammadtdt = 0.0; - ComponentGEUnifac[] compArray = (ComponentGEUnifac[]) phase.getcomponentArray(); - - if (this.getx() < 1e-100) { - return gamma; - } - - double V = this.getx() * this.getR() / VCommontemp; - double F = this.getx() * this.getQ() / FCommontemp; - - lngammaCombinational = -10.0 / 2.0 * getQ() * (Math.log(V / F) + 1.0 - V / F); - - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - // getUnifacGroup(i).calcXComp(this);. - // getUnifacGroup(i).calcQComp(this); - getUnifacGroup(i).setQMix( - ((PhaseGEUnifacUMRPRU) phase).getQmix(getUnifacGroup(i).getGroupName())); - // getUnifacGroup(i).calcQMix((PhaseGEUnifac) phase); - } + double tempGammaComp = unifacGroupsLocal[k].getQ() * (-1.0 / sum1Comp * sum1CompdT - sum3Comp); + double tempGammaMix = unifacGroupsLocal[k].getQ() * (-1.0 / sum1Mix * sum1MixdT - sum3Mix); + + unifacGroupsLocal[k].setLnGammaCompdT(tempGammaComp); + unifacGroupsLocal[k].setLnGammaMixdT(tempGammaMix); + + double tempGammaCompdT = unifacGroupsLocal[k].getQ() * (-1.0 / sum1Comp * sum1CompdTdT + + 1.0 / (sum1Comp * sum1Comp) * sum1CompdT * sum1CompdT - sum3CompdT); + + double tempGammaMixdT = unifacGroupsLocal[k].getQ() * (-1.0 / sum1Mix * sum1MixdTdT + + 1.0 / (sum1Mix * sum1Mix) * sum1MixdT * sum1MixdT - sum3MixdT); + unifacGroupsLocal[k].setLnGammaCompdTdT(tempGammaCompdT); + unifacGroupsLocal[k].setLnGammaMixdTdT(tempGammaMixdT); + } + + // TODO impement dlngammadn + + /** {@inheritDoc} */ + @Override + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + int initType = phase.getInitType(); + double lngammaCombinational; + double lngammaResidual; + double lngammaResidualdT; + double lngammaResidualdTdT; + gamma = 1.0; + lngamma = 0.0; + dlngammadt = 0.0; + dlngammadtdt = 0.0; + ComponentGEUnifac[] compArray = (ComponentGEUnifac[]) phase.getcomponentArray(); + + if (this.getx() < 1e-100) { + return gamma; + } - if (Math.abs(temperature - oldTemperature) > 1e-10) { - calcUnifacGroupParams(phase); - calcTempExpaij(phase); - } + double V = this.getx() * this.getR() / ((PhaseGEUnifacUMRPRU) phase).getVCommontemp(); + double F = this.getx() * this.getQ() / ((PhaseGEUnifacUMRPRU) phase).getFCommontemp(); - lngammaResidual = 0.0; + lngammaCombinational = -10.0 / 2.0 * getQ() * (Math.log(V / F) + 1.0 - V / F); - calcSum2Comp(); - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - calclnGammak(i, phase); - lngammaResidual += getUnifacGroup(i).getN() - * (getUnifacGroup(i).getLnGammaMix() - getUnifacGroup(i).getLnGammaComp()); - } + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + // getUnifacGroup(i).calcXComp(this);. + // getUnifacGroup(i).calcQComp(this); + getUnifacGroup(i) + .setQMix(((PhaseGEUnifacUMRPRU) phase).getQmix(getUnifacGroup(i).getGroupName())); + // getUnifacGroup(i).calcQMix((PhaseGEUnifac) phase); + } - lngamma = lngammaResidual + lngammaCombinational; + if (Math.abs(temperature - oldTemperature) > 1e-10) { + calcUnifacGroupParams(phase); + calcTempExpaij(phase); + } - if (Double.isNaN(lngamma)) { - logger.error("gamma NaN......"); - lngamma = 0.0; - gamma = 1.0; - dlngammadt = 0; - dlngammadtdt = 0; - return gamma; - } + lngammaResidual = 0.0; - gamma = Math.exp(lngamma); - if (gamma < 1e-10) { - gamma = 1.0; // this code has been added to - } - if (initType > 1) { - if (Math.abs(temperature - old2Temperature) > 1e-10) { - calcUnifacGroupParamsdT(phase); - } - - calcSum2CompdTdT(phase); - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - calclnGammakdTdT(i, phase); - } - lngammaResidualdT = 0.0; - lngammaResidualdTdT = 0.0; - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - lngammaResidualdT += getUnifacGroup(i).getN() * (getUnifacGroup(i).getLnGammaMixdT() - - getUnifacGroup(i).getLnGammaCompdT()); - lngammaResidualdTdT += - getUnifacGroup(i).getN() * (getUnifacGroup(i).getLnGammaMixdTdT() - - getUnifacGroup(i).getLnGammaCompdTdT()); - } - - dlngammadt = lngammaResidualdT; - dlngammadtdt = lngammaResidualdTdT; - - if (Double.isNaN(dlngammadt)) { - dlngammadt = 0.0; - } - if (Double.isNaN(dlngammadtdt)) { - dlngammadtdt = 0.0; - } - old2Temperature = phase.getTemperature(); - } + calcSum2Comp(); + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + calclnGammak(i, phase); + lngammaResidual += getUnifacGroup(i).getN() + * (getUnifacGroup(i).getLnGammaMix() - getUnifacGroup(i).getLnGammaComp()); + } - if (initType > 2) { - dlngammadn = new double[numberOfComponents]; - - for (int ii = 0; ii < getNumberOfUNIFACgroups(); ii++) { - // getUnifacGroup(ii).calcQMixdN((PhaseGEUnifac) phase); - getUnifacGroup(ii).setQMixdN( - ((PhaseGEUnifacUMRPRU) phase).getQmixdN(getUnifacGroup(ii).getGroupName())); - } - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - double lngammaResidualdn = 0.0; - double lngammaCombinationaldn = -10.0 / 2.0 * getQ() - / compArray[i].getNumberOfMolesInPhase() * (V / F - 1.0) - * (V / (getx() * this.getR()) * compArray[i].getx() * compArray[i].getR() - - F / (getx() * this.getQ()) * compArray[i].getx() - * compArray[i].getQ()); - for (int ii = 0; ii < getNumberOfUNIFACgroups(); ii++) { - calclnGammakdn(ii, phase, i); - lngammaResidualdn += - getUnifacGroup(ii).getN() * getUnifacGroup(ii).getLnGammaMixdn(i); - } - - double dlnGammadn = lngammaCombinationaldn + lngammaResidualdn; - if (Double.isNaN(dlnGammadn)) { - dlnGammadn = 0.0; - } - setlnGammadn(i, dlnGammadn); - } - } + lngamma = lngammaResidual + lngammaCombinational; - oldTemperature = temperature; - return gamma; + if (Double.isNaN(lngamma)) { + logger.warn("gamma NaN......"); + lngamma = 0.0; + gamma = 1.0; + dlngammadt = 0; + dlngammadtdt = 0; + return gamma; } - /** - *

- * calcUnifacGroupParams. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void calcUnifacGroupParams(PhaseInterface phase) { - if (aij == null) { - aij = new double[getNumberOfUNIFACgroups()][getNumberOfUNIFACgroups()]; - } - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { - aij[i][j] = calcaij(phase, i, j); - } - } + gamma = Math.exp(lngamma); + if (gamma < 1e-10) { + gamma = 1.0; // this code has been added to } - - /** - *

- * calcUnifacGroupParamsdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void calcUnifacGroupParamsdT(PhaseInterface phase) { - if (aijdT == null) { - aijdT = new double[getNumberOfUNIFACgroups()][getNumberOfUNIFACgroups()]; - aijdTdT = new double[getNumberOfUNIFACgroups()][getNumberOfUNIFACgroups()]; - } - for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { - for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { - aijdT[i][j] = calcaijdT(phase, i, j); - aijdTdT[i][j] = calcaijdTdT(phase, i, j); - } - } + if (initType > 1) { + if (Math.abs(temperature - old2Temperature) > 1e-10) { + calcUnifacGroupParamsdT(phase); + } + + calcSum2CompdTdT(phase); + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + calclnGammakdTdT(i, phase); + } + lngammaResidualdT = 0.0; + lngammaResidualdTdT = 0.0; + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + lngammaResidualdT += getUnifacGroup(i).getN() + * (getUnifacGroup(i).getLnGammaMixdT() - getUnifacGroup(i).getLnGammaCompdT()); + lngammaResidualdTdT += getUnifacGroup(i).getN() + * (getUnifacGroup(i).getLnGammaMixdTdT() - getUnifacGroup(i).getLnGammaCompdTdT()); + } + + dlngammadt = lngammaResidualdT; + dlngammadtdt = lngammaResidualdTdT; + + if (Double.isNaN(dlngammadt)) { + dlngammadt = 0.0; + } + if (Double.isNaN(dlngammadtdt)) { + dlngammadtdt = 0.0; + } + old2Temperature = phase.getTemperature(); } - /** - *

- * calcGammaNumericalDerivatives. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - */ - public void calcGammaNumericalDerivatives(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - phase.setInitType(1); - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - double dn = getNumberOfMolesInPhase() / 1e6; - phase.addMoles(getComponentNumber(), dn); - x = getNumberOfmoles() / getNumberOfMolesInPhase(); - getGamma(phase, numberOfComponents, temperature, pressure, phasetype); - double oldGamma = lngamma; - phase.addMoles(getComponentNumber(), dn); - - x = getNumberOfmoles() / getNumberOfMolesInPhase(); - - getGamma(phase, numberOfComponents, temperature, pressure, phasetype); - - double dlnGammadn = (oldGamma - lngamma) / dn; - // System.out.println("dlnGammadn " + dlnGammadn); - setlnGammadn(i, dlnGammadn); + if (initType > 2) { + dlngammadn = new double[numberOfComponents]; + + for (int ii = 0; ii < getNumberOfUNIFACgroups(); ii++) { + // getUnifacGroup(ii).calcQMixdN((PhaseGEUnifac) phase); + getUnifacGroup(ii) + .setQMixdN(((PhaseGEUnifacUMRPRU) phase).getQmixdN(getUnifacGroup(ii).getGroupName())); + } + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + double lngammaResidualdn = 0.0; + double lngammaCombinationaldn = + -10.0 / 2.0 * getQ() / compArray[i].getNumberOfMolesInPhase() * (V / F - 1.0) + * (V / (getx() * this.getR()) * compArray[i].getx() * compArray[i].getR() + - F / (getx() * this.getQ()) * compArray[i].getx() * compArray[i].getQ()); + for (int ii = 0; ii < getNumberOfUNIFACgroups(); ii++) { + calclnGammakdn(ii, phase, i); + lngammaResidualdn += getUnifacGroup(ii).getN() * getUnifacGroup(ii).getLnGammaMixdn(i); } - } - /** - *

- * Getter for the field aij. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getaij(int i, int j) { - return aij[i][j]; + double dlnGammadn = lngammaCombinationaldn + lngammaResidualdn; + if (Double.isNaN(dlnGammadn)) { + dlnGammadn = 0.0; + } + setlnGammadn(i, dlnGammadn); + } } - /** - *

- * Getter for the field aijdT. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getaijdT(int i, int j) { - return aijdT[i][j]; + oldTemperature = temperature; + return gamma; + } + + /** + *

+ * calcUnifacGroupParams. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void calcUnifacGroupParams(PhaseInterface phase) { + if (aij == null) { + aij = new double[getNumberOfUNIFACgroups()][getNumberOfUNIFACgroups()]; } - - /** - *

- * Getter for the field aijdTdT. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getaijdTdT(int i, int j) { - return aijdTdT[i][j]; + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { + aij[i][j] = calcaij(phase, i, j); + } } - - /** - *

- * calcaij. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param i a int - * @param j a int - * @return a double - */ - public double calcaij(PhaseInterface phase, int i, int j) { - double temp = phase.getTemperature() - 298.15; - return ((PhaseGEUnifac) phase).getAij(i, j) + ((PhaseGEUnifac) phase).getBij(i, j) * temp - + ((PhaseGEUnifac) phase).getCij(i, j) * temp * temp; + } + + /** + *

+ * calcUnifacGroupParamsdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void calcUnifacGroupParamsdT(PhaseInterface phase) { + if (aijdT == null) { + aijdT = new double[getNumberOfUNIFACgroups()][getNumberOfUNIFACgroups()]; + aijdTdT = new double[getNumberOfUNIFACgroups()][getNumberOfUNIFACgroups()]; } - - /** - *

- * calcaijdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param i a int - * @param j a int - * @return a double - */ - public double calcaijdT(PhaseInterface phase, int i, int j) { - return ((PhaseGEUnifac) phase).getBij(i, j) - + 2.0 * ((PhaseGEUnifac) phase).getCij(i, j) * (phase.getTemperature() - 298.15); + for (int i = 0; i < getNumberOfUNIFACgroups(); i++) { + for (int j = 0; j < getNumberOfUNIFACgroups(); j++) { + aijdT[i][j] = calcaijdT(phase, i, j); + aijdTdT[i][j] = calcaijdTdT(phase, i, j); + } } - - /** - *

- * calcaijdTdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param i a int - * @param j a int - * @return a double - */ - public double calcaijdTdT(PhaseInterface phase, int i, int j) { - return 2.0 * ((PhaseGEUnifac) phase).getCij(i, j); + } + + /** + *

+ * calcGammaNumericalDerivatives. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + */ + public void calcGammaNumericalDerivatives(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + phase.setInitType(1); + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + double dn = getNumberOfMolesInPhase() / 1e6; + phase.addMoles(getComponentNumber(), dn); + x = getNumberOfmoles() / getNumberOfMolesInPhase(); + getGamma(phase, numberOfComponents, temperature, pressure, pt); + double oldGamma = lngamma; + phase.addMoles(getComponentNumber(), dn); + + x = getNumberOfmoles() / getNumberOfMolesInPhase(); + + getGamma(phase, numberOfComponents, temperature, pressure, pt); + + double dlnGammadn = (oldGamma - lngamma) / dn; + // System.out.println("dlnGammadn " + dlnGammadn); + setlnGammadn(i, dlnGammadn); } + } + + /** + *

+ * Getter for the field aij. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getaij(int i, int j) { + return aij[i][j]; + } + + /** + *

+ * Getter for the field aijdT. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getaijdT(int i, int j) { + return aijdT[i][j]; + } + + /** + *

+ * Getter for the field aijdTdT. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getaijdTdT(int i, int j) { + return aijdTdT[i][j]; + } + + /** + *

+ * calcaij. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param i a int + * @param j a int + * @return a double + */ + public double calcaij(PhaseInterface phase, int i, int j) { + double temp = phase.getTemperature() - 298.15; + return ((PhaseGEUnifac) phase).getAij(i, j) + ((PhaseGEUnifac) phase).getBij(i, j) * temp + + ((PhaseGEUnifac) phase).getCij(i, j) * temp * temp; + } + + /** + *

+ * calcaijdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param i a int + * @param j a int + * @return a double + */ + public double calcaijdT(PhaseInterface phase, int i, int j) { + return ((PhaseGEUnifac) phase).getBij(i, j) + + 2.0 * ((PhaseGEUnifac) phase).getCij(i, j) * (phase.getTemperature() - 298.15); + } + + /** + *

+ * calcaijdTdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param i a int + * @param j a int + * @return a double + */ + public double calcaijdTdT(PhaseInterface phase, int i, int j) { + return 2.0 * ((PhaseGEUnifac) phase).getCij(i, j); + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentGEUniquac.java b/src/main/java/neqsim/thermo/component/ComponentGEUniquac.java index 3d3b8269dc..752a6746e2 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGEUniquac.java +++ b/src/main/java/neqsim/thermo/component/ComponentGEUniquac.java @@ -3,11 +3,13 @@ * * Created on 10. juli 2000, 21:06 */ + package neqsim.thermo.component; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -18,245 +20,223 @@ * @version $Id: $Id */ public class ComponentGEUniquac extends ComponentGE { - private static final long serialVersionUID = 1000; - - double r = 0, q = 0; - - static Logger logger = LogManager.getLogger(ComponentGEUniquac.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentGEUniquac.class); - /** - *

- * Constructor for ComponentGEUniquac. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGEUniquac(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - if (!this.getClass().equals(ComponentGEUniquac.class)) { - return; - } - if (component_name.contains("_PC")) { - // double number = getMolarMass() / 0.014; - // int intNumb = (int) Math.round(number) - 2; - r = 1.0; - q = 1.0; - return; - } - try { - neqsim.util.database.NeqSimDataBase database = - new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - dataSet = database.getResultSet( - ("SELECT * FROM unifaccomp WHERE Name='" + component_name + "'")); - dataSet.next(); - dataSet.getClob("name"); - } catch (Exception e) { - dataSet.close(); - dataSet = database.getResultSet( - ("SELECT * FROM unifaccomp WHERE Name='" + component_name + "'")); - dataSet.next(); - } - r = Double.parseDouble(dataSet.getString("rUNIQUAQ")); - q = Double.parseDouble(dataSet.getString("qUNIQUAQ")); + double r = 0; + double q = 0; - dataSet.close(); - database.getConnection().close(); - } catch (Exception e) { - String err = e.toString(); - logger.error(err); - } + /** + *

+ * Constructor for ComponentGEUniquac. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGEUniquac(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + if (!this.getClass().equals(ComponentGEUniquac.class)) { + return; } - - /** - *

- * fugcoef. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @return a double - */ - public double fugcoef(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - fugacityCoefficient = - (this.getGamma(phase, numberOfComponents, temperature, pressure, phasetype) - * this.getAntoineVaporPressure(temperature) / pressure); - return fugacityCoefficient; + if (name.contains("_PC")) { + // double number = getMolarMass() / 0.014; + // int intNumb = (int) Math.round(number) - 2; + r = 1.0; + q = 1.0; + return; } - - /** {@inheritDoc} */ - @Override - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] HValpha, double[][] HVgij, - double[][] intparam, String[][] mixRule) { - return 0.0; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + java.sql.ResultSet dataSet = null; + try { + dataSet = database.getResultSet(("SELECT * FROM unifaccomp WHERE Name='" + name + "'")); + dataSet.next(); + dataSet.getClob("name"); + } catch (Exception ex) { + dataSet.close(); + dataSet = database.getResultSet(("SELECT * FROM unifaccomp WHERE Name='" + name + "'")); + dataSet.next(); + } + r = Double.parseDouble(dataSet.getString("rUNIQUAQ")); + q = Double.parseDouble(dataSet.getString("qUNIQUAQ")); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } - /** - *

- * getGamma. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @return a double - */ - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - /* - * double V = 0, F = 0, a, gammaC = 0, gammaR = 0, temp1 = 0, temp2 = 0, temp3=0, temp4 = 0, - * temp5=0, gamma; int j, k; - * - * - * ComponentGEInterface[] compArray = (ComponentGEInterface[]) phase.getcomponentArray(); - * - * - * for (j=0;j< numberOfComponents;j++){ - * - * temp1 = temp1 + compArray[j].getx()*((ComponentGEUniquac) compArray[j]).getr(); temp2 = - * temp2 + (((ComponentGEUniquac) compArray[j]).getq() * compArray[j].getx()); } - * - * - * V = V + this.getr() / temp1; //System.out.println("V: " + V); F = F + this.getq() / - * temp2; //System.out.println("F: " + F); - * - * gammaC = 1 - V + Math.log(V) - 5 * this.getq() * (1 - V/F + Math.log(V/F)); - * - * // System.out.println("gammaC: " + gammaC); - * - * temp1 = 0; temp2 = 0; temp3 = 0; - * - * for (k=0;k< numberOfComponents;k++){ temp4 = 0; temp4 = - * (intparam[compArray[k].getIndex()][this.getIndex()]/temperature); temp1 = temp1 + - * compArray[k].getq() * compArray[k].getx() * - * Math.exp(-intparam[compArray[k].getIndex()][this.getIndex()]/temperature); temp2 = temp2 - * + compArray[k].getq() * compArray[k].getx(); } - * - * for (k=0;k< numberOfComponents;k++){ temp5 = 0; for (j=0;j< numberOfComponents;j++){ - * temp5 = temp5 + compArray[j].getq() * compArray[j].getx() * - * Math.exp(-intparam[compArray[j].getIndex()][compArray[k].getIndex()]/ temperature); - * - * } - * - * temp3 = temp3 + (compArray[k].getq() * compArray[k].getx() * Math.exp(- - * intparam[this.getIndex()][compArray[k].getIndex()]/temperature)) / temp5; } - * - * gammaR = this.getq() * (1 - Math.log(temp1/temp2) - temp3); - * - * //System.out.println("gammaR: " + gammaR); - * - * gamma = Math.exp(gammaR + gammaC); - * - * //System.out.println("comp: " + this.getIndex() + " gamma NRTL : " +gamma); - * //System.out.println("gamma: " + gamma); - */ - return gamma; - } + /** + *

+ * Calculate, set and return fugacity coefficient. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object to get fugacity coefficient + * of. + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @return Fugacity coefficient + */ + public double fugcoef(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + fugacityCoefficient = (this.getGamma(phase, numberOfComponents, temperature, pressure, pt) + * this.getAntoineVaporPressure(temperature) / pressure); + return fugacityCoefficient; + } - /** - *

- * fugcoefDiffPres. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @return a double - */ - public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - dfugdp = (Math - .log(fugcoef(phase, numberOfComponents, temperature, pressure + 0.01, phasetype)) - - Math.log(fugcoef(phase, numberOfComponents, temperature, pressure - 0.01, - phasetype))) - / 0.02; - return dfugdp; - } + /** {@inheritDoc} */ + @Override + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double[][] HValpha, double[][] HVgij, double[][] intparam, + String[][] mixRule) { + return 0.0; + } - /** - *

- * fugcoefDiffTemp. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @return a double - */ - public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - dfugdt = (Math - .log(fugcoef(phase, numberOfComponents, temperature + 0.01, pressure, phasetype)) - - Math.log(fugcoef(phase, numberOfComponents, temperature - 0.01, pressure, - phasetype))) - / 0.02; - return dfugdt; - } + /** + *

+ * getGamma. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @return a double + */ + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { /* - * public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double - * temperature, double pressure, int phasetype){ // NumericalDerivative deriv = new - * NumericalDerivative(); // System.out.println("dfugdP : " + - * NumericalDerivative.fugcoefDiffPres(this, phase, numberOfComponents, temperature, pressure, - * phasetype)); return NumericalDerivative.fugcoefDiffPres(this, phase, numberOfComponents, - * temperature, pressure, phasetype); } - * - * public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double - * temperature, double pressure, int phasetype){ NumericalDerivative deriv = new - * NumericalDerivative(); // System.out.println("dfugdT : " + - * NumericalDerivative.fugcoefDiffTemp(this, phase, numberOfComponents, temperature, pressure, - * phasetype)); return NumericalDerivative.fugcoefDiffTemp(this, phase, numberOfComponents, - * temperature, pressure, phasetype); - * - * } - */ - - /** - *

- * Getter for the field r. - *

+ * double V = 0, F = 0, a, gammaC = 0, gammaR = 0, temp1 = 0, temp2 = 0, temp3=0, temp4 = 0, + * temp5=0, gamma; int j, k; * - * @return a double - */ - public double getr() { - return r; - } - - /** - *

- * Getter for the field q. - *

+ * ComponentGEInterface[] compArray = (ComponentGEInterface[]) phase.getcomponentArray(); + * + * for (j=0;j< numberOfComponents;j++){ + * + * temp1 = temp1 + compArray[j].getx()*((ComponentGEUniquac) compArray[j]).getr(); temp2 = temp2 + * + (((ComponentGEUniquac) compArray[j]).getq() * compArray[j].getx()); } + * + * V = V + this.getr() / temp1; //System.out.println("V: " + V); F = F + this.getq() / temp2; + * //System.out.println("F: " + F); + * + * gammaC = 1 - V + Math.log(V) - 5 * this.getq() * (1 - V/F + Math.log(V/F)); + * + * // System.out.println("gammaC: " + gammaC); + * + * temp1 = 0; temp2 = 0; temp3 = 0; + * + * for (k=0;k< numberOfComponents;k++){ temp4 = 0; temp4 = + * (intparam[compArray[k].getIndex()][this.getIndex()]/temperature); temp1 = temp1 + + * compArray[k].getq() * compArray[k].getx() * + * Math.exp(-intparam[compArray[k].getIndex()][this.getIndex()]/temperature); temp2 = temp2 + + * compArray[k].getq() * compArray[k].getx(); } + * + * for (k=0;k< numberOfComponents;k++){ temp5 = 0; for (j=0;j< numberOfComponents;j++){ temp5 = + * temp5 + compArray[j].getq() * compArray[j].getx() * + * Math.exp(-intparam[compArray[j].getIndex()][compArray[k].getIndex()]/ temperature); } + * + * temp3 = temp3 + (compArray[k].getq() * compArray[k].getx() * Math.exp(- + * intparam[this.getIndex()][compArray[k].getIndex()]/temperature)) / temp5; } * - * @return a double + * gammaR = this.getq() * (1 - Math.log(temp1/temp2) - temp3); + * + * //System.out.println("gammaR: " + gammaR); + * + * gamma = Math.exp(gammaR + gammaC); + * + * //System.out.println("comp: " + this.getIndex() + " gamma NRTL : " +gamma); + * //System.out.println("gamma: " + gamma); */ - public double getq() { - return q; - } + return gamma; + } - /** {@inheritDoc} */ - @Override - public double getlnGammadt() { - return dlngammadt; - } + /** + *

+ * fugcoefDiffPres. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @return a double + */ + public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + dfugdp = (Math.log(fugcoef(phase, numberOfComponents, temperature, pressure + 0.01, pt)) + - Math.log(fugcoef(phase, numberOfComponents, temperature, pressure - 0.01, pt))) / 0.02; + return dfugdp; + } - /** {@inheritDoc} */ - @Override - public double getlnGammadn(int k) { - return dlngammadn[k]; - } + /** + *

+ * fugcoefDiffTemp. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @return a double + */ + public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + dfugdt = (Math.log(fugcoef(phase, numberOfComponents, temperature + 0.01, pressure, pt)) + - Math.log(fugcoef(phase, numberOfComponents, temperature - 0.01, pressure, pt))) / 0.02; + return dfugdt; + } + /* + * public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double temperature, + * double pressure, PhaseType pt){ // NumericalDerivative deriv = new NumericalDerivative(); // + * System.out.println("dfugdP : " + NumericalDerivative.fugcoefDiffPres(this, phase, + * numberOfComponents, temperature, pressure, pt)); return + * NumericalDerivative.fugcoefDiffPres(this, phase, numberOfComponents, temperature, pressure, + * pt); } + * + * public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double temperature, + * double pressure, PhaseType pt){ NumericalDerivative deriv = new NumericalDerivative(); // + * System.out.println("dfugdT : " + NumericalDerivative.fugcoefDiffTemp(this, phase, + * numberOfComponents, temperature, pressure, pt)); return + * NumericalDerivative.fugcoefDiffTemp(this, phase, numberOfComponents, temperature, pressure, + * pt); } + */ + + /** + *

+ * Getter for the field r. + *

+ * + * @return a double + */ + public double getr() { + return r; + } + + /** + *

+ * Getter for the field q. + *

+ * + * @return a double + */ + public double getq() { + return q; + } + + /** {@inheritDoc} */ + @Override + public double getlnGammadt() { + return dlngammadt; + } + + /** {@inheritDoc} */ + @Override + public double getlnGammadn(int k) { + return dlngammadn[k]; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentGEUniquacmodifiedHV.java b/src/main/java/neqsim/thermo/component/ComponentGEUniquacmodifiedHV.java index 5f16c197a3..86d78508fa 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGEUniquacmodifiedHV.java +++ b/src/main/java/neqsim/thermo/component/ComponentGEUniquacmodifiedHV.java @@ -3,41 +3,42 @@ * * Created on 18. juli 2000, 20:24 */ + package neqsim.thermo.component; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** + * Abstract class ComponentGEUniquacmodifiedHV * * @author Even Solbraa */ abstract class ComponentGEUniquacmodifiedHV extends ComponentGEUniquac { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for ComponentGEUniquacmodifiedHV. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGEUniquacmodifiedHV(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } + private static final long serialVersionUID = 1000; - /** {@inheritDoc} */ - @Override - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { + /** + *

+ * Constructor for ComponentGEUniquacmodifiedHV. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGEUniquacmodifiedHV(String name, double moles, double molesInPhase, + int compIndex) { + super(name, moles, molesInPhase, compIndex); + } - // PhaseGEInterface phaseny = (PhaseGEInterface) phase.getPhase(); - // PhaseGEInterface GEPhase = phaseny.getGEphase(); + /** {@inheritDoc} */ + @Override + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + // PhaseGEInterface phaseny = (PhaseGEInterface) phase.getPhase(); + // PhaseGEInterface GEPhase = phaseny.getGEphase(); - return 1;// super.getGamma(GEPhase, numberOfComponents, temperature, pressure, - // phasetype); - } + return 1; // super.getGamma(GEPhase, numberOfComponents, temperature, pressure, pt); + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentGEWilson.java b/src/main/java/neqsim/thermo/component/ComponentGEWilson.java index 814cf2ec87..6d5aaf3455 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGEWilson.java +++ b/src/main/java/neqsim/thermo/component/ComponentGEWilson.java @@ -2,6 +2,7 @@ import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -12,181 +13,174 @@ * @version $Id: $Id */ public class ComponentGEWilson extends ComponentGE { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for ComponentGEWilson. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGEWilson(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for ComponentGEWilson. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGEWilson(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } + + /** + *

+ * Calculate, set and return fugacity coefficient. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object to get fugacity coefficient + * of. + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @return Fugacity coefficient + */ + public double fugcoef(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + fugacityCoefficient = (this.getGamma(phase, numberOfComponents, temperature, pressure, pt) + * this.getAntoineVaporPressure(temperature) / pressure); + return fugacityCoefficient; + } + + /** + *

+ * getGamma. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @return a double + */ + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + return getWilsonActivityCoefficient(phase); + } + + /** {@inheritDoc} */ + @Override + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double[][] HValpha, double[][] HVgij, double[][] intparam, + String[][] mixRule) { + return 0.0; + } + + /** + *

+ * getWilsonActivityCoefficient. + *

+ * + * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getWilsonActivityCoefficient(PhaseInterface phase1) { + double sum1 = 0.0; + double sum2 = 0.0; + double tempSum = 0.0; + for (int i = 0; i < phase1.getNumberOfComponents(); i++) { + sum1 += phase1.getComponent(i).getx() * ((ComponentGEWilson) phase1.getComponent(i)) + .getCharEnergyParamter(phase1, this.getComponentNumber(), i); + tempSum = 0.0; + for (int j = 0; j < phase1.getNumberOfComponents(); j++) { + tempSum += phase1.getComponent(j).getx() + * ((ComponentGEWilson) phase1.getComponent(j)).getCharEnergyParamter(phase1, i, j); + } + sum2 += phase1.getComponent(i).getx() * ((ComponentGEWilson) phase1.getComponent(i)) + .getCharEnergyParamter(phase1, i, this.getComponentNumber()) / tempSum; } - - /** - *

- * fugcoef. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @return a double - */ - public double fugcoef(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - fugacityCoefficient = - (this.getGamma(phase, numberOfComponents, temperature, pressure, phasetype) - * this.getAntoineVaporPressure(temperature) / pressure); - return fugacityCoefficient; - } - - /** - *

- * getGamma. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @return a double - */ - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype) { - return getWilsonActivityCoefficient(phase); - } - - /** {@inheritDoc} */ - @Override - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] HValpha, double[][] HVgij, - double[][] intparam, String[][] mixRule) { - return 0.0; + return Math.exp(1.0 - Math.log(sum1) - sum2); + } + + /** + *

+ * getCharEnergyParamter. + *

+ * + * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object + * @param comp1 a int + * @param comp2 a int + * @return a double + */ + public double getCharEnergyParamter(PhaseInterface phase1, int comp1, int comp2) { + double param1 = 0.0; + // ((ComponentWaxWilson) phase1.getComponent(comp1)).getWilsonInteractionEnergy(phase1); + double param2 = 0.0; + // ((ComponentWaxWilson) phase1.getComponent(comp2)).getWilsonInteractionEnergy(phase1); + if (comp1 == comp2) { + return 1.0; } - - /** - *

- * getWilsonActivityCoefficient. - *

- * - * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getWilsonActivityCoefficient(PhaseInterface phase1) { - double sum1 = 0.0; - double sum2 = 0.0; - double tempSum = 0.0; - for (int i = 0; i < phase1.getNumberOfComponents(); i++) { - sum1 += phase1.getComponent(i).getx() * ((ComponentGEWilson) phase1.getComponent(i)) - .getCharEnergyParamter(phase1, this.getComponentNumber(), i); - tempSum = 0.0; - for (int j = 0; j < phase1.getNumberOfComponents(); j++) { - tempSum += - phase1.getComponent(j).getx() * ((ComponentGEWilson) phase1.getComponent(j)) - .getCharEnergyParamter(phase1, i, j); - } - sum2 += phase1.getComponent(i).getx() * ((ComponentGEWilson) phase1.getComponent(i)) - .getCharEnergyParamter(phase1, i, this.getComponentNumber()) / tempSum; - } - return Math.exp(1.0 - Math.log(sum1) - sum2); - } - - /** - *

- * getCharEnergyParamter. - *

- * - * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object - * @param comp1 a int - * @param comp2 a int - * @return a double - */ - public double getCharEnergyParamter(PhaseInterface phase1, int comp1, int comp2) { - double param1 = 0.0; // ((ComponentWaxWilson) - // phase1.getComponent(comp1)).getWilsonInteractionEnergy(phase1); - double param2 = 0.0;// ((ComponentWaxWilson) - // phase1.getComponent(comp2)).getWilsonInteractionEnergy(phase1); - if (comp1 == comp2) { - return 1.0; - } - // this need to be corrected accordint to how to select energy of shortest - // carbon molecule ..... - if (phase1.getComponent(comp1).getMolarMass() > phase1.getComponent(comp2).getMolarMass()) { - param1 = ((ComponentGEWilson) phase1.getComponent(comp2)) - .getWilsonInteractionEnergy(phase1); - param2 = ((ComponentGEWilson) phase1.getComponent(comp2)) - .getWilsonInteractionEnergy(phase1); - // } else if (comp1 < comp2) { - // param1 = -2.0 / 6.0 * (154.9 * 1e3 - R * phase1.getTemperature()); - // param2 = -2.0 / 6.0 * (107.6 * 1e3 - R * phase1.getTemperature()); - // param1 = ((ComponentWaxWilson) - // phase1.getComponent(comp1)).getWilsonInteractionEnergy(phase1); - // param2 = ((ComponentWaxWilson) - // phase1.getComponent(comp2)).getWilsonInteractionEnergy(phase1); - } else { - param1 = ((ComponentGEWilson) phase1.getComponent(comp1)) - .getWilsonInteractionEnergy(phase1); - param2 = ((ComponentGEWilson) phase1.getComponent(comp2)) - .getWilsonInteractionEnergy(phase1); - } - double energyParameter = Math.exp( - -(param2 - param1) / (ThermodynamicConstantsInterface.R * phase1.getTemperature())); - // System.out.println("energyy parameter " +energyParameter); - return energyParameter; - } - - /** - *

- * getWilsonInteractionEnergy. - *

- * - * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getWilsonInteractionEnergy(PhaseInterface phase1) { - double coordinationNumber = 6.0; - - double carbonnumber = getMolarMass() / 0.014; - // calculating vaporization enthalpy - double x = 1.0 - phase1.getTemperature() / getTC(); - double deltaHvap0 = 5.2804 * Math.pow(x, 0.3333) + 12.865 * Math.pow(x, 0.8333) - + 1.171 * Math.pow(x, 1.2083) - 13.166 * x + 0.4858 * Math.pow(x, 2.0) - - 1.088 * Math.pow(x, 3.0); - double deltaHvap1 = 0.80022 * Math.pow(x, 0.3333) + 273.23 * Math.pow(x, 0.8333) - + 465.08 * Math.pow(x, 1.2083) - 638.51 * x - 145.12 * Math.pow(x, 2.0) - - 74.049 * Math.pow(x, 3.0); - double deltaHvap2 = 7.2543 * Math.pow(x, 0.3333) - 346.45 * Math.pow(x, 0.8333) - - 610.48 * Math.pow(x, 1.2083) + 839.89 * x + 160.05 * Math.pow(x, 2.0) - - 50.711 * Math.pow(x, 3.0); - - double omega = - 0.0520750 + 0.0448946 * carbonnumber - 0.000185397 * carbonnumber * carbonnumber; - - double deltaHvap = R * getTC() - * (deltaHvap0 + omega * deltaHvap1 + omega * omega * deltaHvap2) * 4.1868; - - // calculating transition enthalpy - - double deltaHtot = (3.7791 * carbonnumber - 12.654) * 1000; - // double Ttrans = 420.42 - 134.784 * Math.exp(-4.344 * Math.pow(carbonnumber + 6.592, - // 0.14627)); - - double Tf = 374.5 + 0.2617 * getMolarMass() - 20.172 / getMolarMass(); - double deltaHf = (0.1426 * getMolarMass() * Tf) * 4.1868; - double deltaHtrans = (deltaHtot - deltaHf); - - double deltaHsub = (deltaHvap + deltaHf + deltaHtrans); - - return -2.0 / coordinationNumber * (deltaHsub - R * phase1.getTemperature()); + // this need to be corrected according to how to select energy of shortest + // carbon molecule ..... + if (phase1.getComponent(comp1).getMolarMass() > phase1.getComponent(comp2).getMolarMass()) { + param1 = ((ComponentGEWilson) phase1.getComponent(comp2)).getWilsonInteractionEnergy(phase1); + param2 = ((ComponentGEWilson) phase1.getComponent(comp2)).getWilsonInteractionEnergy(phase1); + // } else if (comp1 < comp2) { + // param1 = -2.0 / 6.0 * (154.9 * 1e3 - R * phase1.getTemperature()); + // param2 = -2.0 / 6.0 * (107.6 * 1e3 - R * phase1.getTemperature()); + // param1 = ((ComponentWaxWilson) + // phase1.getComponent(comp1)).getWilsonInteractionEnergy(phase1); + // param2 = ((ComponentWaxWilson) + // phase1.getComponent(comp2)).getWilsonInteractionEnergy(phase1); + } else { + param1 = ((ComponentGEWilson) phase1.getComponent(comp1)).getWilsonInteractionEnergy(phase1); + param2 = ((ComponentGEWilson) phase1.getComponent(comp2)).getWilsonInteractionEnergy(phase1); } + double energyParameter = Math + .exp(-(param2 - param1) / (ThermodynamicConstantsInterface.R * phase1.getTemperature())); + // System.out.println("energyy parameter " +energyParameter); + return energyParameter; + } + + /** + *

+ * getWilsonInteractionEnergy. + *

+ * + * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getWilsonInteractionEnergy(PhaseInterface phase1) { + double coordinationNumber = 6.0; + + double carbonnumber = getMolarMass() / 0.014; + // calculating vaporization enthalpy + double x = 1.0 - phase1.getTemperature() / getTC(); + double deltaHvap0 = + 5.2804 * Math.pow(x, 0.3333) + 12.865 * Math.pow(x, 0.8333) + 1.171 * Math.pow(x, 1.2083) + - 13.166 * x + 0.4858 * Math.pow(x, 2.0) - 1.088 * Math.pow(x, 3.0); + double deltaHvap1 = + 0.80022 * Math.pow(x, 0.3333) + 273.23 * Math.pow(x, 0.8333) + 465.08 * Math.pow(x, 1.2083) + - 638.51 * x - 145.12 * Math.pow(x, 2.0) - 74.049 * Math.pow(x, 3.0); + double deltaHvap2 = + 7.2543 * Math.pow(x, 0.3333) - 346.45 * Math.pow(x, 0.8333) - 610.48 * Math.pow(x, 1.2083) + + 839.89 * x + 160.05 * Math.pow(x, 2.0) - 50.711 * Math.pow(x, 3.0); + + double omega = 0.0520750 + 0.0448946 * carbonnumber - 0.000185397 * carbonnumber * carbonnumber; + + double deltaHvap = + R * getTC() * (deltaHvap0 + omega * deltaHvap1 + omega * omega * deltaHvap2) * 4.1868; + + // calculating transition enthalpy + + double deltaHtot = (3.7791 * carbonnumber - 12.654) * 1000; + // double Ttrans = 420.42 - 134.784 * Math.exp(-4.344 * Math.pow(carbonnumber + 6.592, + // 0.14627)); + + double Tf = 374.5 + 0.2617 * getMolarMass() - 20.172 / getMolarMass(); + double deltaHf = (0.1426 * getMolarMass() * Tf) * 4.1868; + double deltaHtrans = (deltaHtot - deltaHf); + + double deltaHsub = (deltaHvap + deltaHf + deltaHtrans); + + return -2.0 / coordinationNumber * (deltaHsub - R * phase1.getTemperature()); + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentGeDuanSun.java b/src/main/java/neqsim/thermo/component/ComponentGeDuanSun.java index f83f9ce9f4..e163d5cfc2 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGeDuanSun.java +++ b/src/main/java/neqsim/thermo/component/ComponentGeDuanSun.java @@ -2,6 +2,7 @@ import neqsim.thermo.phase.PhaseGE; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -12,536 +13,547 @@ * @version $Id: $Id */ public class ComponentGeDuanSun extends ComponentGE { - private static final long serialVersionUID = 1000; - - double r = 0, q = 0; - - /** - *

- * Constructor for ComponentGeDuanSun. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGeDuanSun(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + private static final long serialVersionUID = 1000; + + double r = 0; + + double q = 0; + + /** + *

+ * Constructor for ComponentGeDuanSun. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGeDuanSun(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } + + /** + *

+ * getGamma. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @param HValpha an array of type double + * @param HVgij an array of type double + * @return a double + */ + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double[][] HValpha, double[][] HVgij) { + if (componentName.equals("CO2")) { + return 0.9; + } else if (componentName.equals("water")) { + return 1.0; + } else { + return 1.0; } - - /** {@inheritDoc} */ - @Override - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] HValpha, double[][] HVgij, - double[][] intparam, String[][] mixRule) { - return getGamma(phase, numberOfComponents, temperature, pressure, phasetype, HValpha, - HVgij); - } - - /** - *

- * getGammaNRTL. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @param HValpha an array of {@link double} objects - * @param HVgij an array of {@link double} objects - * @return a double - */ - public double getGammaNRTL(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] HValpha, double[][] HVgij) { - double type = phase.getInitType(); - // double ny = 0, Djj = 0, Dii = 0, gij = 0, gjj = 0, gji = 0, gii = 0, F2T = 0, tot2 = 0; - double A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, tau = 0, tau2 = 0, G = 0, G2 = 0, - alpha = 0, Dij = 0, Dji = 0; - // int i, k, delta = 0; - int j, l = 0; - - double dAdT = 0, dBdT = 0, dCdT = 0, dDdT = 0; - // double dEdT, dFdT = 0; - double dtaudt = 0, dtau2dt = 0, dGdt = 0, dG2dt = 0; - double[][] Gmatrix = new double[numberOfComponents][numberOfComponents]; - double[][] tauMatrix = new double[numberOfComponents][numberOfComponents]; - dlngammadn = new double[numberOfComponents]; - ComponentInterface[] comp_Array = phase.getcomponentArray(); - // double lngammaold = 0, dlngammadtold = 0; - double dA2dTetter = 0, dA3dTetter = 0, dA4dTetter = 0, dA5dTetter = 0, dA6dTetter = 0; - // for(int w=0;w<3;w++){ - F = 0; - dBdT = 0; - dAdT = 0; - dDdT = 0; - A = 0; - B = 0; - dlngammadt = 0.0; - dA2dTetter = 0; - dA3dTetter = 0; - dA4dTetter = 0; - dA5dTetter = 0; - dA6dTetter = 0; - double dA2dT = 0, dA3dT = 0, dA4dT = 0, dA5dT = 0, dA6dT = 0; - - // PhaseGEEosInterface phaseny = (PhaseGEEosInterface) phase.getPhase(); - // PhaseGEInterface GEPhase = phaseny.getGEphase(); - - // ComponentGeNRTLInterface[] compArray = (ComponentGeNRTLInterface[]) - // GEPhase.getcomponentArray(); - // PhaseGEInterface GEphase = new PhaseGEInterface(); - // PhaseGEInterface phaseny = (PhaseGEInterface) phase.getPhase(); - - for (j = 0; j < numberOfComponents; j++) { - Dij = HVgij[this.getComponentNumber()][j]; - Dji = HVgij[j][this.getComponentNumber()]; - // gji = HVgij[j][this.getComponentNumber()]; - // gjj = HVgii[j][j]; - alpha = HValpha[j][this.getComponentNumber()]; - tau = Dji / (temperature); - tau2 = Dij / (temperature); - dtaudt = -tau / temperature; - dtau2dt = -tau2 / temperature; - // System.out.println("method GE1" + tau); - - // System.out.println("error in NRTL here ......"); - G = Math.exp(-alpha * tau);// comp_Array[j].getb()*Math.exp(-alpha*tau); - dGdt = dtaudt * -alpha * G; - G2 = Math.exp(-alpha * tau2);// comp_Array[this.getComponentNumber()].getb()*Math.exp(-alpha*tau2); - dG2dt = dtau2dt * -alpha * G2; - - A += tau * G * comp_Array[j].getx(); - dAdT = dAdT + comp_Array[j].getx() * dGdt * tau + comp_Array[j].getx() * G * dtaudt; - dA2dT = comp_Array[j].getx() * dG2dt * tau2 + comp_Array[j].getx() * G2 * dtau2dt; - dA3dT = tau2 * G2 * comp_Array[j].getx(); - dA4dT = 2 * comp_Array[j].getx() * G2; - dA5dT = comp_Array[j].getx() * dG2dt; - dA6dT = comp_Array[j].getx() * G2; - B += G * comp_Array[j].getx(); - dBdT += dGdt * comp_Array[j].getx(); - E = G2 * comp_Array[j].getx(); - // dEdT = dG2dt * comp_Array[j].getx(); - - C = 0; - D = 0; - dCdT = 0; - dDdT = 0; - // System.out.println("hei"); - - for (l = 0; l < numberOfComponents; l++) { - Dij = HVgij[l][j]; - alpha = HValpha[l][j]; - tau = Dij / (temperature); - dtaudt = -tau / temperature; - - // System.out.println("error in NRTL comp here...."); - G = Math.exp(-alpha * tau);// comp_Array[l].getb()*Math.exp(-alpha*tau); - dGdt = dtaudt * -alpha * G; - Gmatrix[l][j] = G; - tauMatrix[l][j] = tau; - - C += G * comp_Array[l].getx(); - dCdT += dGdt * comp_Array[l].getx(); - D += G * tau * comp_Array[l].getx(); - dDdT += comp_Array[l].getx() * dGdt * tau + comp_Array[l].getx() * G * dtaudt; - } - dA2dTetter += dA2dT / C; - dA3dTetter += dA3dT * dCdT / (C * C); - - dA4dTetter += dA4dT * dCdT * D / (C * C * C); - dA5dTetter += dA5dT * D / (C * C); - dA6dTetter += dA6dT * dDdT / (C * C); - - tau2 = HVgij[this.getComponentNumber()][j] / (temperature); - dtau2dt = -tau2 / temperature; - - F += E / C * (tau2 - D / C); - // dFdT += (dEdT / C - E / (C * C) * dCdT) * (tau2 - D / C) + E / C * (dtau2dt - (dDdT / - // C - D / (C * C) * dCdT)); - // F2T = F2T - 2*2*A/Math.pow(C,2) + 2*2*E*D/Math.pow(C,3); // A til A2; - } - - lngamma = A / B + F; - // dlngammadt = dAdT/B - A/(B*B)*dBdT + dFdT; - dlngammadt = (dAdT / B - A / (B * B) * dBdT + dA2dTetter - dA3dTetter + dA4dTetter - - dA5dTetter - dA6dTetter); - /* - * if(w==0){ dlngammadtold = dlngammadt; temperature +=0.0001; } - * - * if(w==1){ lngammaold = lngamma; temperature -=0.0002; } } - */ - // System.out.println("deriv: " + lngammaold + " " + lngamma + " " + - // ((lngammaold-lngamma)/0.0002) + " " + dlngammadtold); - // System.out.println("deriv t : " +dlngammadt); - - // tot2 = -2*A/B/B + F2T; - // dlngammadt = (lngammaold-lngamma)/0.002; - - // phaseny.getExessGibbsEnergy(numberOfComponents, temperature, pressure, - // phasetype) - gamma = Math.exp(lngamma); - // System.out.println("gamma " +gamma); - // if derivates.... - if (type == 3) { - double dAdn = 0; - double dBdn = 0; - double Etemp = 0; - double dEdn = 0; - double Ctemp = 0; - double Dtemp = 0; - double Ftemp = 0; - double Gtemp = 0; - - for (int p = 0; p < numberOfComponents; p++) { - dAdn = tauMatrix[p][this.getComponentNumber()] - * Gmatrix[p][this.getComponentNumber()]; - dBdn = Gmatrix[p][this.getComponentNumber()]; - dEdn = Gmatrix[this.getComponentNumber()][p] - * tauMatrix[this.getComponentNumber()][p]; - // dFdn = Gmatrix[this.getComponentNumber()][p]; - Dtemp = 0; - Ctemp = 0; - Etemp = 0; - Ftemp = 0; - Gtemp = 0; - double nt = 0; - for (int f = 0; f < numberOfComponents; f++) { - nt += comp_Array[f].getNumberOfMolesInPhase(); - Ctemp += comp_Array[f].getx() * Gmatrix[f][p]; - Etemp += comp_Array[f].getx() * Gmatrix[f][p] * tauMatrix[f][p]; - double sum = 0.0; - double sum2 = 0.0; - for (int g = 0; g < numberOfComponents; g++) { - sum += comp_Array[g].getx() * Gmatrix[g][f]; - sum2 += comp_Array[g].getx() * Gmatrix[g][f] * tauMatrix[g][f]; - } - Dtemp += Gmatrix[p][f] * Gmatrix[this.getComponentNumber()][f] - * tauMatrix[this.getComponentNumber()][f] * comp_Array[f].getx() - / (sum * sum); - Ftemp += comp_Array[f].getx() * Gmatrix[p][f] * sum2 - * Gmatrix[this.getComponentNumber()][f] / (sum * sum * sum); - Gtemp += comp_Array[f].getx() * Gmatrix[p][f] * tauMatrix[p][f] - * Gmatrix[this.getComponentNumber()][f] / (sum * sum); - } - dlngammadn[p] = (dAdn / B - A / (B * B) * dBdn) + dEdn / Ctemp - Dtemp - - Etemp * Gmatrix[this.getComponentNumber()][p] / (Ctemp * Ctemp) - + 2.0 * Ftemp - Gtemp;// E/(C*C)*dCdn[p]*(tau2-D/C) - // + - // E/C*(-dDdn[p]/C - // + - // D/(C*C)*dCdn[p]); - dlngammadn[p] /= (nt); - } - // System.out.println("Dlngamdn: " + dlngammadn[p] + " x: " + - // comp_Array[p].getx()+ " length: "); - } - - return gamma; - } - - /** - *

- * getGamma. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @param HValpha an array of {@link double} objects - * @param HVgij an array of {@link double} objects - * @return a double - */ - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] HValpha, double[][] HVgij) { - if (componentName.equals("CO2")) { - return 0.9; - } else if (componentName.equals("water")) { - return 1.0; - } else { - return 1.0; - } + } + + /** {@inheritDoc} */ + @Override + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double[][] HValpha, double[][] HVgij, double[][] intparam, + String[][] mixRule) { + return getGamma(phase, numberOfComponents, temperature, pressure, pt, HValpha, HVgij); + } + + /** + *

+ * getGammaNRTL. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @param HValpha an array of type double + * @param HVgij an array of type double + * @return a double + */ + public double getGammaNRTL(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double[][] HValpha, double[][] HVgij) { + double type = phase.getInitType(); + // double ny = 0, Djj = 0, Dii = 0, gij = 0, gjj = 0, gji = 0, gii = 0, F2T = 0, tot2 = 0; + double A = 0; + double B = 0; + double C = 0; + double D = 0; + double E = 0; + double F = 0; + double tau = 0; + double tau2 = 0; + double G = 0; + double G2 = 0; + double alpha = 0; + double Dij = 0; + double Dji = 0; + // int i, k, delta = 0; + int j; + + int l = 0; + double dAdT = 0; + double dBdT = 0; + double dCdT = 0; + double dDdT = 0; + // double dEdT, dFdT = 0; + double dtaudt = 0; + double dtau2dt = 0; + double dGdt = 0; + double dG2dt = 0; + double[][] Gmatrix = new double[numberOfComponents][numberOfComponents]; + double[][] tauMatrix = new double[numberOfComponents][numberOfComponents]; + dlngammadn = new double[numberOfComponents]; + ComponentInterface[] comp_Array = phase.getcomponentArray(); + // double lngammaold = 0, dlngammadtold = 0; + double dA2dTetter = 0; + double dA3dTetter = 0; + double dA4dTetter = 0; + double dA5dTetter = 0; + double dA6dTetter = 0; + // for(int w=0;w<3;w++){ + F = 0; + dBdT = 0; + dAdT = 0; + dDdT = 0; + A = 0; + B = 0; + dlngammadt = 0.0; + dA2dTetter = 0; + dA3dTetter = 0; + dA4dTetter = 0; + dA5dTetter = 0; + dA6dTetter = 0; + double dA2dT = 0; + + // PhaseGEEosInterface phaseny = (PhaseGEEosInterface) phase.getPhase(); + // PhaseGEInterface GEPhase = phaseny.getGEphase(); + + // ComponentGeNRTLInterface[] compArray = (ComponentGeNRTLInterface[]) + // GEPhase.getcomponentArray(); + // PhaseGEInterface GEphase = new PhaseGEInterface(); + // PhaseGEInterface phaseny = (PhaseGEInterface) phase.getPhase(); + + double dA3dT = 0; + double dA4dT = 0; + double dA5dT = 0; + double dA6dT = 0; + for (j = 0; j < numberOfComponents; j++) { + Dij = HVgij[this.getComponentNumber()][j]; + Dji = HVgij[j][this.getComponentNumber()]; + // gji = HVgij[j][this.getComponentNumber()]; + // gjj = HVgii[j][j]; + alpha = HValpha[j][this.getComponentNumber()]; + tau = Dji / (temperature); + tau2 = Dij / (temperature); + dtaudt = -tau / temperature; + dtau2dt = -tau2 / temperature; + // System.out.println("method GE1" + tau); + + // System.out.println("error in NRTL here ......"); + G = Math.exp(-alpha * tau); // comp_Array[j].getb()*Math.exp(-alpha*tau); + dGdt = dtaudt * -alpha * G; + G2 = Math.exp(-alpha * tau2); // comp_Array[this.getComponentNumber()].getb()*Math.exp(-alpha*tau2); + dG2dt = dtau2dt * -alpha * G2; + + A += tau * G * comp_Array[j].getx(); + dAdT = dAdT + comp_Array[j].getx() * dGdt * tau + comp_Array[j].getx() * G * dtaudt; + dA2dT = comp_Array[j].getx() * dG2dt * tau2 + comp_Array[j].getx() * G2 * dtau2dt; + dA3dT = tau2 * G2 * comp_Array[j].getx(); + dA4dT = 2 * comp_Array[j].getx() * G2; + dA5dT = comp_Array[j].getx() * dG2dt; + dA6dT = comp_Array[j].getx() * G2; + B += G * comp_Array[j].getx(); + dBdT += dGdt * comp_Array[j].getx(); + E = G2 * comp_Array[j].getx(); + // dEdT = dG2dt * comp_Array[j].getx(); + + C = 0; + D = 0; + dCdT = 0; + dDdT = 0; + // System.out.println("hei"); + + for (l = 0; l < numberOfComponents; l++) { + Dij = HVgij[l][j]; + alpha = HValpha[l][j]; + tau = Dij / (temperature); + dtaudt = -tau / temperature; + + // System.out.println("error in NRTL comp here...."); + G = Math.exp(-alpha * tau); // comp_Array[l].getb()*Math.exp(-alpha*tau); + dGdt = dtaudt * -alpha * G; + Gmatrix[l][j] = G; + tauMatrix[l][j] = tau; + + C += G * comp_Array[l].getx(); + dCdT += dGdt * comp_Array[l].getx(); + D += G * tau * comp_Array[l].getx(); + dDdT += comp_Array[l].getx() * dGdt * tau + comp_Array[l].getx() * G * dtaudt; + } + dA2dTetter += dA2dT / C; + dA3dTetter += dA3dT * dCdT / (C * C); + + dA4dTetter += dA4dT * dCdT * D / (C * C * C); + dA5dTetter += dA5dT * D / (C * C); + dA6dTetter += dA6dT * dDdT / (C * C); + + tau2 = HVgij[this.getComponentNumber()][j] / (temperature); + dtau2dt = -tau2 / temperature; + + F += E / C * (tau2 - D / C); + // dFdT += (dEdT / C - E / (C * C) * dCdT) * (tau2 - D / C) + E / C * (dtau2dt - (dDdT / + // C - D / (C * C) * dCdT)); + // F2T = F2T - 2*2*A/Math.pow(C,2) + 2*2*E*D/Math.pow(C,3); // A til A2; } + lngamma = A / B + F; + // dlngammadt = dAdT/B - A/(B*B)*dBdT + dFdT; + dlngammadt = (dAdT / B - A / (B * B) * dBdT + dA2dTetter - dA3dTetter + dA4dTetter - dA5dTetter + - dA6dTetter); /* - * public double getHenryCoef(double temperature) { // System.out.println("henry " + // - * Math.exp(henryCoefParameter[0]+henryCoefParameter[1]/temperature+ - * henryCoefParameter[2]*Math.log(temperature)+henryCoefParameter[3]*temperature )*100*0.01802); - * if (componentName.equals("CO2")) { // return } return super.getHenryCoef(temperature); - * - * } - */ - - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - logger.info("fug coef " - + gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure()); - if (referenceStateType.equals("solvent")) { - fugacityCoefficient = - gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure(); - gammaRefCor = gamma; - } else { - double activinf = 1.0; - if (phase.hasComponent("water")) { - int waternumb = phase.getComponent("water").getComponentNumber(); - activinf = gamma / ((PhaseGE) phase) - .getActivityCoefficientInfDilWater(componentNumber, waternumb); - } else { - activinf = gamma / ((PhaseGE) phase).getActivityCoefficientInfDil(componentNumber); - } - // activinf = gamma / ((PhaseGE) phase).getActivityCoefficientInfDil(componentNumber); - - // Born function - double BORN = 0.0; - double EPS = 0.0; - double EPS1000 = 0.0; - double CB = 0.0; - double BB = 0.0; - EPS1000 = 3.4279 * Math.pow(10.0, 2.0) - * Math.exp((-5.0866 * Math.pow(10.0, -3.0) * phase.getTemperature() + 9.469 - * Math.pow(10.0, -7.0) * Math.pow(phase.getTemperature(), 2.0))); - CB = -2.0525 + 3.1159 * Math.pow(10.0, 3.0) - / (phase.getTemperature() - 1.8289 * Math.pow(10.0, 2.0)); - BB = -8.0325 * Math.pow(10.0, -3.0) - + 4.21452 * Math.pow(10.0, 6.0) / phase.getTemperature() - + 2.1417 * phase.getTemperature(); - EPS = EPS1000 + CB * Math.log((BB + phase.getPressure()) / BB + 1000.0); - BORN = (1.0 / EPS) * (CB / ((phase.getPressure() + BB) - * (CB * Math.log((phase.getPressure() + BB) / (BB + 1000.0)) + EPS))); - - // Average partial molar volume - double Vm[] = {0.0, 0.0, 0.0}; - Vm[0] = 41.84 - * (0.1 * 7.29 - + (100 * 0.92) / (2600 + phase.getPressure()) + 2.07 - / (phase.getTemperature() - 288.0) - - 1.23 * Math.pow(10.0, 4.0) / ((2600 + phase.getPressure()) - * (phase.getTemperature() - 288.0)) - + 1.6 * BORN); - Vm[1] = 41.84 * (0.1 * 7.0); - Vm[2] = 41.84 - * (0.1 * 5.7889 - + (100 * 6.3536) / (2600 + phase.getPressure()) + 3.2528 - / (phase.getTemperature() - 288.0) - - 3.0417 * Math.pow(10.0, 4.0) / ((2600 + phase.getPressure()) - * (phase.getTemperature() - 288.0)) - + 0.3943 * BORN); - - double Poynteff[] = {0.0, 0.0, 0.0}; - Poynteff[0] = Vm[0] * (phase.getPressure() - 1.0) - / (1000.0 * (R / 100.0) * phase.getTemperature()); - Poynteff[1] = Vm[1] * (phase.getPressure() - 1.0) - / (1000.0 * (R / 100.0) * phase.getTemperature()); - Poynteff[2] = Vm[2] * (phase.getPressure() - 1.0) - / (1000.0 * (R / 100.0) * phase.getTemperature()); - - double K[] = {0.0, 0.0, 0.0, 0.0}; - double a1 = 0.0; - double a2 = 0.0; - double a3 = 0.0; - double a4 = 0.0; - double a5 = 0.0; - double a6 = 0.0; - double a7 = 0.0; - double ACO20 = -10.52624; - double ACO21 = 2.3547 * Math.pow(10.0, -2.0); - double ACO22 = 3972.8; - double ACO23 = 0.0; - double ACO24 = -5.8746 * Math.pow(10.0, 5.0); - double ACO25 = -1.9194 * Math.pow(10.0, -5.0); - double AN20 = 58.453; - double AN21 = -1.818 * Math.pow(10.0, -3.0); - double AN22 = -3199.0; - double AN23 = -17.909; - double AN24 = 27460.0; - double AN25 = 0.0; - double AO20 = 7.5001; - double AO21 = -7.8981 * Math.pow(10.0, -3.0); - double AO22 = 0.0; - double AO23 = 0.0; - double AO24 = -2.0027 * Math.pow(10.0, 5.0); - double AO25 = 0.0; - - if (phase.getTemperature() <= 373.15) { - a1 = 9.31063597; - a2 = -1.892867005 * Math.pow(10.0, -1.0); - a3 = 1.307135652 * Math.pow(10.0, -3.0); - a4 = -3.800223763 * Math.pow(10.0, -6.0); - a5 = 4.0091369717 * Math.pow(10.0, -9.0); - a6 = 2.2769246863 * Math.pow(10.0, 1.0); - a7 = -1.1291330188 * Math.pow(10.0, -2.0); - } else { - a1 = -9.0283127 * Math.pow(10.0, -1.0); - a2 = 3.6492938 * Math.pow(10.0, -2.0); - a3 = 4.3610019 * Math.pow(10.0, -4.0); - a4 = -3.10936036 * Math.pow(10.0, -6.0); - a5 = 4.592053 * Math.pow(10.0, -9.0); - a6 = 1.62996873 * Math.pow(10.0, 1.0); - a7 = 2.81119409 * Math.pow(10.0, -2.0); - } - - K[0] = Math.pow(10.0, - (ACO20 + ACO21 * phase.getTemperature() + ACO22 / phase.getTemperature() - + ACO23 * Math.log10(phase.getTemperature()) - + ACO24 / (Math.pow(phase.getTemperature(), 2.0)) - + ACO25 * Math.pow(phase.getTemperature(), 2.0))) - * Math.exp(Poynteff[0]); - K[1] = Math.pow(10.0, - (AN20 + AN21 * phase.getTemperature() + AN22 / phase.getTemperature() - + AN23 * Math.log10(phase.getTemperature()) - + AN24 / (Math.pow(phase.getTemperature(), 2.0)) - + AN25 * Math.pow(phase.getTemperature(), 2.0))) - * Math.exp(Poynteff[1]); - K[2] = Math.pow(10.0, - (AO20 + AO21 * phase.getTemperature() + AO22 / phase.getTemperature() - + AO23 * Math.log10(phase.getTemperature()) - + AO24 / (Math.pow(phase.getTemperature(), 2.0)) - + AO25 * Math.pow(phase.getTemperature(), 2.0))) - * Math.exp(Poynteff[2]); - K[3] = (a1 + a2 * phase.getTemperature() + a3 * Math.pow(phase.getTemperature(), 2.0) - + a4 * Math.pow(phase.getTemperature(), 3.0) - + a5 * Math.pow(phase.getTemperature(), 4.0)) - * Math.exp((phase.getPressure() - 1.0) * (a6 + a7 * phase.getTemperature()) - / (1000.0 * (R / 100.0) * phase.getTemperature())); - - if (componentName.equals("CO2")) { - fugacityCoefficient = - activinf * K[0] * gamma * (1000 / 18.02) / phase.getPressure();// +25.689/(gamma*K[0]))/ - // phase.getPressure(); - } else if (componentName.equals("nitrogen")) { - fugacityCoefficient = - activinf * K[1] * gamma * (1000 / 18.02) / phase.getPressure();// +50.585/(gamma*K[1]))/ - // phase.getPressure(); - } else if (componentName.equals("oxygen")) { - fugacityCoefficient = - activinf * K[2] * gamma * (1000 / 18.02) / phase.getPressure();// +46.9157/(gamma*K[2]))/ - // phase.getPressure(); - } else if (componentName.contentEquals("water")) { - fugacityCoefficient = activinf * K[3] * (1000 / 18.02) / phase.getPressure(); - } else { - fugacityCoefficient = activinf * K[3] / phase.getPressure(); - } - // fugacityCoefficient = activinf * getHenryCoef(phase.getTemperature()) / - // phase.getPressure();//gamma* benyttes ikke - gammaRefCor = activinf; - } - logFugacityCoefficient = Math.log(fugacityCoefficient); - return fugacityCoefficient; - } - - ///////////////////////////////////////////////////// - /** - *

- * getGammaPitzer. - *

+ * if(w==0){ dlngammadtold = dlngammadt; temperature +=0.0001; } * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @param salinity a double - * @return a double + * if(w==1){ lngammaold = lngamma; temperature -=0.0002; } } */ - public double getGammaPitzer(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double salinity) { - double P = pressure; - double T = temperature; - double S = salinity; - // double salinity2=0; - - // if(isIsIon()) { - // salinity2=getNumberOfMolesInPhase()/(phase.getComponent("water").getNumberOfMolesInPhase()*phase.getComponent("water").getMolarMass()); - // } - - // double S=salinity; - double lamdaCO2Na = (-0.411370585 + 0.000607632 * T + 97.5347708 / T - 0.023762247 * P / T - + 0.017065624 * P / (630.0 - T) - + 1.41335834 * Math.pow(10.0, -5.0) * T * Math.log(P)); - double lamdaN2Na = -2.4434074 + 0.0036351795 * T + 447.47364 / T - 0.000013711527 * P - + 0.0000071037217 * Math.pow(P, 2.0) / T; - double lamdaO2Na = 0.19997; - double zetaN2NaCl = -0.58071053 * Math.pow(10.0, -2.0); - double zetaO2NaCl = -1.2793 * Math.pow(10.0, -2.0); - double zetaCO2NaCl = 0.00033639 - 1.9829898 * Math.pow(10.0, -5.0) * T + 0.002122208 * P / T - - 0.005248733 * P / (630. - T); - - if (componentName.equals("CO2")) { - gamma = Math.exp(2.0 * S * lamdaCO2Na + Math.pow(S, 2.0) * zetaCO2NaCl); - } else if (componentName.equals("nitrogen")) { - gamma = Math.exp(2.0 * S * lamdaN2Na + Math.pow(S, 2.0) * zetaN2NaCl); - } else if (componentName.equals("oxygen")) { - gamma = Math.exp(2.0 * S * lamdaO2Na + Math.pow(S, 2.0) * zetaO2NaCl); - } else { - gamma = 1.0; + // System.out.println("deriv: " + lngammaold + " " + lngamma + " " + + // ((lngammaold-lngamma)/0.0002) + " " + dlngammadtold); + // System.out.println("deriv t : " +dlngammadt); + + // tot2 = -2*A/B/B + F2T; + // dlngammadt = (lngammaold-lngamma)/0.002; + + // phaseny.getExcessGibbsEnergy(numberOfComponents, temperature, pressure, + // pt) + gamma = Math.exp(lngamma); + // System.out.println("gamma " +gamma); + // if derivates.... + if (type == 3) { + double dAdn = 0; + double dBdn = 0; + double Etemp = 0; + double dEdn = 0; + double Ctemp = 0; + double Dtemp = 0; + double Ftemp = 0; + double Gtemp = 0; + + for (int p = 0; p < numberOfComponents; p++) { + dAdn = tauMatrix[p][this.getComponentNumber()] * Gmatrix[p][this.getComponentNumber()]; + dBdn = Gmatrix[p][this.getComponentNumber()]; + dEdn = Gmatrix[this.getComponentNumber()][p] * tauMatrix[this.getComponentNumber()][p]; + // dFdn = Gmatrix[this.getComponentNumber()][p]; + Dtemp = 0; + Ctemp = 0; + Etemp = 0; + Ftemp = 0; + Gtemp = 0; + double nt = 0; + for (int f = 0; f < numberOfComponents; f++) { + nt += comp_Array[f].getNumberOfMolesInPhase(); + Ctemp += comp_Array[f].getx() * Gmatrix[f][p]; + Etemp += comp_Array[f].getx() * Gmatrix[f][p] * tauMatrix[f][p]; + double sum = 0.0; + double sum2 = 0.0; + for (int g = 0; g < numberOfComponents; g++) { + sum += comp_Array[g].getx() * Gmatrix[g][f]; + sum2 += comp_Array[g].getx() * Gmatrix[g][f] * tauMatrix[g][f]; + } + Dtemp += Gmatrix[p][f] * Gmatrix[this.getComponentNumber()][f] + * tauMatrix[this.getComponentNumber()][f] * comp_Array[f].getx() / (sum * sum); + Ftemp += comp_Array[f].getx() * Gmatrix[p][f] * sum2 + * Gmatrix[this.getComponentNumber()][f] / (sum * sum * sum); + Gtemp += comp_Array[f].getx() * Gmatrix[p][f] * tauMatrix[p][f] + * Gmatrix[this.getComponentNumber()][f] / (sum * sum); } - - // double gammaCO2=Math.exp(2.0*S*lamdaCO2Na+Math.pow(S,2.0)*zetaCO2NaCl); - // double gammaN2=Math.exp(2.0*S*lamdaN2Na+Math.pow(S,2.0)*zetaN2NaCl); - // double gammaO2=Math.exp(2.0*S*lamdaO2Na+Math.pow(S,2.0)*zetaO2NaCl); - // gamma=1.0; - - lngamma = Math.log(gamma); - - // System.out.println("gamma CO2 = " + gammaCO2); - // System.out.println("gamma N2 = " + gammaN2); - // System.out.println("gamma O2 = " + gammaO2); - - // if (componentName.equals("CO2")) { - // return gammaCO2; - // }else if (componentName.equals("nitrogen")) { - // return gammaN2; - // }else if (componentName.equals("oxygen")) { - // return gammaO2; - // }else - return gamma; + dlngammadn[p] = (dAdn / B - A / (B * B) * dBdn) + dEdn / Ctemp - Dtemp + - Etemp * Gmatrix[this.getComponentNumber()][p] / (Ctemp * Ctemp) + 2.0 * Ftemp - Gtemp; + // E/(C*C)*dCdn[p]*(tau2-D/C) + E/C*(-dDdn[p]/C + D/(C*C)*dCdn[p]); + dlngammadn[p] /= (nt); + } + // System.out.println("Dlngamdn: " + dlngammadn[p] + " x: " + + // comp_Array[p].getx()+ " length: "); } - ///////////////////////////////////////////////////// - /* - * public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double - * temperature, double pressure, int phasetype){ dfugdp = (Math.log(fugcoef(phase, - * numberOfComponents, temperature, pressure+0.01, phasetype))-Math.log(fugcoef(phase, - * numberOfComponents, temperature, pressure-0.01, phasetype)))/0.02; return dfugdp; } - * - * public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double - * temperature, double pressure, int phasetype){ dfugdt = (Math.log(fugcoef(phase, - * numberOfComponents, temperature+0.01, pressure, phasetype))-Math.log(fugcoef(phase, - * numberOfComponents, temperature-0.01, pressure, phasetype)))/0.02; return dfugdt; } - */ - /** - *

- * Getter for the field r. - *

- * - * @return a double - */ - public double getr() { - return r; + return gamma; + } + + /* + * public double getHenryCoef(double temperature) { // System.out.println("henry " + // + * Math.exp(henryCoefParameter[0]+henryCoefParameter[1]/temperature+ + * henryCoefParameter[2]*Math.log(temperature)+henryCoefParameter[3]*temperature )*100*0.01802); + * if (componentName.equals("CO2")) { // return } return super.getHenryCoef(temperature); } + */ + + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase) { + logger.info("fug coef " + + gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure()); + if (referenceStateType.equals("solvent")) { + fugacityCoefficient = + gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure(); + gammaRefCor = gamma; + } else { + double activinf = 1.0; + if (phase.hasComponent("water")) { + int waternumb = phase.getComponent("water").getComponentNumber(); + activinf = + gamma / ((PhaseGE) phase).getActivityCoefficientInfDilWater(componentNumber, waternumb); + } else { + activinf = gamma / ((PhaseGE) phase).getActivityCoefficientInfDil(componentNumber); + } + // activinf = gamma / ((PhaseGE) phase).getActivityCoefficientInfDil(componentNumber); + + // Born function + double BORN = 0.0; + double EPS = 0.0; + double EPS1000 = 0.0; + double CB = 0.0; + double BB = 0.0; + EPS1000 = 3.4279 * Math.pow(10.0, 2.0) + * Math.exp((-5.0866 * Math.pow(10.0, -3.0) * phase.getTemperature() + + 9.469 * Math.pow(10.0, -7.0) * Math.pow(phase.getTemperature(), 2.0))); + CB = -2.0525 + + 3.1159 * Math.pow(10.0, 3.0) / (phase.getTemperature() - 1.8289 * Math.pow(10.0, 2.0)); + BB = -8.0325 * Math.pow(10.0, -3.0) + 4.21452 * Math.pow(10.0, 6.0) / phase.getTemperature() + + 2.1417 * phase.getTemperature(); + EPS = EPS1000 + CB * Math.log((BB + phase.getPressure()) / BB + 1000.0); + BORN = (1.0 / EPS) * (CB / ((phase.getPressure() + BB) + * (CB * Math.log((phase.getPressure() + BB) / (BB + 1000.0)) + EPS))); + + // Average partial molar volume + double[] Vm = {0.0, 0.0, 0.0}; + Vm[0] = + 41.84 + * (0.1 * 7.29 + (100 * 0.92) / (2600 + phase.getPressure()) + + 2.07 / (phase.getTemperature() - 288.0) + - 1.23 * Math.pow(10.0, 4.0) + / ((2600 + phase.getPressure()) * (phase.getTemperature() - 288.0)) + + 1.6 * BORN); + Vm[1] = 41.84 * (0.1 * 7.0); + Vm[2] = + 41.84 * (0.1 * 5.7889 + (100 * 6.3536) / (2600 + phase.getPressure()) + + 3.2528 / (phase.getTemperature() - 288.0) + - 3.0417 * Math.pow(10.0, 4.0) + / ((2600 + phase.getPressure()) * (phase.getTemperature() - 288.0)) + + 0.3943 * BORN); + + double[] Poynteff = {0.0, 0.0, 0.0}; + Poynteff[0] = + Vm[0] * (phase.getPressure() - 1.0) / (1000.0 * (R / 100.0) * phase.getTemperature()); + Poynteff[1] = + Vm[1] * (phase.getPressure() - 1.0) / (1000.0 * (R / 100.0) * phase.getTemperature()); + Poynteff[2] = + Vm[2] * (phase.getPressure() - 1.0) / (1000.0 * (R / 100.0) * phase.getTemperature()); + + double[] K = {0.0, 0.0, 0.0, 0.0}; + double a1 = 0.0; + double a2 = 0.0; + double a3 = 0.0; + double a4 = 0.0; + double a5 = 0.0; + double a6 = 0.0; + double a7 = 0.0; + double ACO20 = -10.52624; + double ACO21 = 2.3547 * Math.pow(10.0, -2.0); + double ACO22 = 3972.8; + double ACO23 = 0.0; + double ACO24 = -5.8746 * Math.pow(10.0, 5.0); + double ACO25 = -1.9194 * Math.pow(10.0, -5.0); + double AN20 = 58.453; + double AN21 = -1.818 * Math.pow(10.0, -3.0); + double AN22 = -3199.0; + double AN23 = -17.909; + double AN24 = 27460.0; + double AN25 = 0.0; + double AO20 = 7.5001; + double AO21 = -7.8981 * Math.pow(10.0, -3.0); + double AO22 = 0.0; + double AO23 = 0.0; + double AO24 = -2.0027 * Math.pow(10.0, 5.0); + double AO25 = 0.0; + + if (phase.getTemperature() <= 373.15) { + a1 = 9.31063597; + a2 = -1.892867005 * Math.pow(10.0, -1.0); + a3 = 1.307135652 * Math.pow(10.0, -3.0); + a4 = -3.800223763 * Math.pow(10.0, -6.0); + a5 = 4.0091369717 * Math.pow(10.0, -9.0); + a6 = 2.2769246863 * Math.pow(10.0, 1.0); + a7 = -1.1291330188 * Math.pow(10.0, -2.0); + } else { + a1 = -9.0283127 * Math.pow(10.0, -1.0); + a2 = 3.6492938 * Math.pow(10.0, -2.0); + a3 = 4.3610019 * Math.pow(10.0, -4.0); + a4 = -3.10936036 * Math.pow(10.0, -6.0); + a5 = 4.592053 * Math.pow(10.0, -9.0); + a6 = 1.62996873 * Math.pow(10.0, 1.0); + a7 = 2.81119409 * Math.pow(10.0, -2.0); + } + + K[0] = Math.pow(10.0, + (ACO20 + ACO21 * phase.getTemperature() + ACO22 / phase.getTemperature() + + ACO23 * Math.log10(phase.getTemperature()) + + ACO24 / (Math.pow(phase.getTemperature(), 2.0)) + + ACO25 * Math.pow(phase.getTemperature(), 2.0))) + * Math.exp(Poynteff[0]); + K[1] = Math.pow(10.0, + (AN20 + AN21 * phase.getTemperature() + AN22 / phase.getTemperature() + + AN23 * Math.log10(phase.getTemperature()) + + AN24 / (Math.pow(phase.getTemperature(), 2.0)) + + AN25 * Math.pow(phase.getTemperature(), 2.0))) + * Math.exp(Poynteff[1]); + K[2] = Math.pow(10.0, + (AO20 + AO21 * phase.getTemperature() + AO22 / phase.getTemperature() + + AO23 * Math.log10(phase.getTemperature()) + + AO24 / (Math.pow(phase.getTemperature(), 2.0)) + + AO25 * Math.pow(phase.getTemperature(), 2.0))) + * Math.exp(Poynteff[2]); + K[3] = (a1 + a2 * phase.getTemperature() + a3 * Math.pow(phase.getTemperature(), 2.0) + + a4 * Math.pow(phase.getTemperature(), 3.0) + a5 * Math.pow(phase.getTemperature(), 4.0)) + * Math.exp((phase.getPressure() - 1.0) * (a6 + a7 * phase.getTemperature()) + / (1000.0 * (R / 100.0) * phase.getTemperature())); + + if (componentName.equals("CO2")) { + fugacityCoefficient = activinf * K[0] * gamma * (1000 / 18.02) / phase.getPressure(); + // +25.689/(gamma*K[0]))/ phase.getPressure(); + } else if (componentName.equals("nitrogen")) { + fugacityCoefficient = activinf * K[1] * gamma * (1000 / 18.02) / phase.getPressure(); + // +50.585/(gamma*K[1]))/ phase.getPressure(); + } else if (componentName.equals("oxygen")) { + fugacityCoefficient = activinf * K[2] * gamma * (1000 / 18.02) / phase.getPressure(); + // +46.9157/(gamma*K[2]))/ phase.getPressure(); + } else if (componentName.contentEquals("water")) { + fugacityCoefficient = activinf * K[3] * (1000 / 18.02) / phase.getPressure(); + } else { + fugacityCoefficient = activinf * K[3] / phase.getPressure(); + } + // fugacityCoefficient = activinf * getHenryCoef(phase.getTemperature()) / + // phase.getPressure(); //gamma* benyttes ikke + gammaRefCor = activinf; } - /** - *

- * Getter for the field q. - *

- * - * @return a double - */ - public double getq() { - return q; + return fugacityCoefficient; + } + + ///////////////////////////////////////////////////// + /** + *

+ * getGammaPitzer. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @param salinity a double + * @return a double + */ + public double getGammaPitzer(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double salinity) { + double P = pressure; + double T = temperature; + double S = salinity; + // double salinity2=0; + + // if(isIsIon()) { + // salinity2 = getNumberOfMolesInPhase() / + // (phase.getComponent("water").getNumberOfMolesInPhase()*phase.getComponent("water").getMolarMass()); + // } + + // double S=salinity; + double lamdaCO2Na = (-0.411370585 + 0.000607632 * T + 97.5347708 / T - 0.023762247 * P / T + + 0.017065624 * P / (630.0 - T) + 1.41335834 * Math.pow(10.0, -5.0) * T * Math.log(P)); + double lamdaN2Na = -2.4434074 + 0.0036351795 * T + 447.47364 / T - 0.000013711527 * P + + 0.0000071037217 * Math.pow(P, 2.0) / T; + double lamdaO2Na = 0.19997; + double zetaN2NaCl = -0.58071053 * Math.pow(10.0, -2.0); + double zetaO2NaCl = -1.2793 * Math.pow(10.0, -2.0); + double zetaCO2NaCl = 0.00033639 - 1.9829898 * Math.pow(10.0, -5.0) * T + 0.002122208 * P / T + - 0.005248733 * P / (630. - T); + + if (componentName.equals("CO2")) { + gamma = Math.exp(2.0 * S * lamdaCO2Na + Math.pow(S, 2.0) * zetaCO2NaCl); + } else if (componentName.equals("nitrogen")) { + gamma = Math.exp(2.0 * S * lamdaN2Na + Math.pow(S, 2.0) * zetaN2NaCl); + } else if (componentName.equals("oxygen")) { + gamma = Math.exp(2.0 * S * lamdaO2Na + Math.pow(S, 2.0) * zetaO2NaCl); + } else { + gamma = 1.0; } - /** - * Getter for property lngamma. - * - * @return Value of property lngamma. - */ - public double getLngamma() { - return lngamma; - } + // double gammaCO2=Math.exp(2.0*S*lamdaCO2Na+Math.pow(S,2.0)*zetaCO2NaCl); + // double gammaN2=Math.exp(2.0*S*lamdaN2Na+Math.pow(S,2.0)*zetaN2NaCl); + // double gammaO2=Math.exp(2.0*S*lamdaO2Na+Math.pow(S,2.0)*zetaO2NaCl); + // gamma=1.0; + + lngamma = Math.log(gamma); + + // System.out.println("gamma CO2 = " + gammaCO2); + // System.out.println("gamma N2 = " + gammaN2); + // System.out.println("gamma O2 = " + gammaO2); + + // if (componentName.equals("CO2")) { + // return gammaCO2; + // }else if (componentName.equals("nitrogen")) { + // return gammaN2; + // }else if (componentName.equals("oxygen")) { + // return gammaO2; + // }else + return gamma; + } + ///////////////////////////////////////////////////// + /* + * public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double temperature, + * double pressure, PhaseType pt){ dfugdp = (Math.log(fugcoef(phase, numberOfComponents, + * temperature, pressure+0.01, pt))-Math.log(fugcoef(phase, numberOfComponents, temperature, + * pressure-0.01, pt)))/0.02; return dfugdp; } + * + * public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double temperature, + * double pressure, PhaseType pt){ dfugdt = (Math.log(fugcoef(phase, numberOfComponents, + * temperature+0.01, pressure, pt))-Math.log(fugcoef(phase, numberOfComponents, temperature-0.01, + * pressure, pt)))/0.02; return dfugdt; } + */ + + /** + *

+ * Getter for the field r. + *

+ * + * @return a double + */ + public double getr() { + return r; + } + + /** + *

+ * Getter for the field q. + *

+ * + * @return a double + */ + public double getq() { + return q; + } + + /** + * Getter for property lngamma. + * + * @return Value of property lngamma. + */ + public double getLngamma() { + return lngamma; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentGeNRTL.java b/src/main/java/neqsim/thermo/component/ComponentGeNRTL.java index 5fc90541f8..0e64f3926d 100644 --- a/src/main/java/neqsim/thermo/component/ComponentGeNRTL.java +++ b/src/main/java/neqsim/thermo/component/ComponentGeNRTL.java @@ -1,6 +1,7 @@ package neqsim.thermo.component; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -11,255 +12,289 @@ * @version $Id: $Id */ public class ComponentGeNRTL extends ComponentGE { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double r = 0, q = 0; + double r = 0; - /** - *

- * Constructor for ComponentGeNRTL. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentGeNRTL(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } + double q = 0; - /** {@inheritDoc} */ - @Override - @SuppressWarnings("unused") - public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure, int phasetype, double[][] HValpha, double[][] HVgij, - double[][] intparam, String[][] mixRule) { - double type = phase.getInitType(); - double A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, ny = 0, tau = 0, tau2 = 0, G = 0, G2 = 0, - alpha = 0, Dij = 0, Djj = 0, Dji = 0, Dii = 0, gij = 0, gjj = 0, gji = 0, gii = 0, - F2T = 0, tot2 = 0; - int i, j, l, k, delta = 0; - double dAdT = 0, dBdT = 0, dEdT, dCdT = 0, dFdT = 0, dDdT = 0; - double dtaudt = 0, dtau2dt = 0, dGdt = 0, dG2dt = 0; - double[][] Gmatrix = new double[numberOfComponents][numberOfComponents]; - double[][] tauMatrix = new double[numberOfComponents][numberOfComponents]; - dlngammadn = new double[numberOfComponents]; - ComponentInterface[] comp_Array = phase.getcomponentArray(); - double lngammaold = 0, dlngammadtold = 0, dA2dTetter = 0, dA3dTetter = 0, dA4dTetter = 0, - dA5dTetter = 0, dA6dTetter = 0; - // for(int w=0;w<3;w++){ - F = 0; - dFdT = 0; - dBdT = 0; - dAdT = 0; - dDdT = 0; - A = 0; - B = 0; - dlngammadt = 0.0; - dA2dTetter = 0; - dA3dTetter = 0; - dA4dTetter = 0; - dA5dTetter = 0; - dA6dTetter = 0; - double dA2dT = 0, dA3dT = 0, dA4dT = 0, dA5dT = 0, dA6dT = 0; + /** + *

+ * Constructor for ComponentGeNRTL. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentGeNRTL(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } - // PhaseGEEosInterface phaseny = (PhaseGEEosInterface) phase.getPhase(); - // PhaseGEInterface GEPhase = phaseny.getGEphase(); + /** {@inheritDoc} */ + @Override + @SuppressWarnings("unused") + public double getGamma(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt, double[][] HValpha, double[][] HVgij, double[][] intparam, + String[][] mixRule) { + double type = phase.getInitType(); + double A = 0; + double B = 0; + double C = 0; + double D = 0; + double E = 0; + double F = 0; + double ny = 0; + double tau = 0; + double tau2 = 0; + double G = 0; + double G2 = 0; + double alpha = 0; + double Dij = 0; + double Djj = 0; + double Dji = 0; + double Dii = 0; + double gij = 0; + double gjj = 0; + double gji = 0; + double gii = 0; + double F2T = 0; + double tot2 = 0; + int i; + int j; + int l; + int k; + int delta = 0; + double dAdT = 0; + double dBdT = 0; + double dEdT; + double dCdT = 0; + double dFdT = 0; + double dDdT = 0; + double dtaudt = 0; + double dtau2dt = 0; + double dGdt = 0; + double dG2dt = 0; + double[][] Gmatrix = new double[numberOfComponents][numberOfComponents]; + double[][] tauMatrix = new double[numberOfComponents][numberOfComponents]; + dlngammadn = new double[numberOfComponents]; + ComponentInterface[] comp_Array = phase.getcomponentArray(); + double lngammaold = 0; + double dlngammadtold = 0; + double dA2dTetter = 0; + double dA3dTetter = 0; + double dA4dTetter = 0; + double dA5dTetter = 0; + double dA6dTetter = 0; + // for(int w=0;w<3;w++){ + F = 0; + dFdT = 0; + dBdT = 0; + dAdT = 0; + dDdT = 0; + A = 0; + B = 0; + dlngammadt = 0.0; + dA2dTetter = 0; + dA3dTetter = 0; + dA4dTetter = 0; + dA5dTetter = 0; + dA6dTetter = 0; + double dA2dT = 0; - // ComponentGeNRTLInterface[] compArray = (ComponentGeNRTLInterface[]) - // GEPhase.getcomponentArray(); - // PhaseGEInterface GEphase = new PhaseGEInterface(); - // PhaseGEInterface phaseny = (PhaseGEInterface) phase.getPhase(); + // PhaseGEEosInterface phaseny = (PhaseGEEosInterface) phase.getPhase(); + // PhaseGEInterface GEPhase = phaseny.getGEphase(); - for (j = 0; j < numberOfComponents; j++) { - Dij = HVgij[this.getComponentNumber()][j]; - Dji = HVgij[j][this.getComponentNumber()]; - // gji = HVgij[j][this.getComponentNumber()]; - // gjj = HVgii[j][j]; - alpha = HValpha[j][this.getComponentNumber()]; - tau = Dji / (temperature); - tau2 = Dij / (temperature); - dtaudt = -tau / temperature; - dtau2dt = -tau2 / temperature; - // System.out.println("method GE1" + tau); + // ComponentGeNRTLInterface[] compArray = (ComponentGeNRTLInterface[]) + // GEPhase.getcomponentArray(); + // PhaseGEInterface GEphase = new PhaseGEInterface(); + // PhaseGEInterface phaseny = (PhaseGEInterface) phase.getPhase(); - // System.out.println("error in NRTL here ......"); - G = Math.exp(-alpha * tau);// comp_Array[j].getb()*Math.exp(-alpha*tau); - dGdt = dtaudt * -alpha * G; - G2 = Math.exp(-alpha * tau2);// comp_Array[this.getComponentNumber()].getb()*Math.exp(-alpha*tau2); - dG2dt = dtau2dt * -alpha * G2; + double dA3dT = 0; + double dA4dT = 0; + double dA5dT = 0; + double dA6dT = 0; + for (j = 0; j < numberOfComponents; j++) { + Dij = HVgij[this.getComponentNumber()][j]; + Dji = HVgij[j][this.getComponentNumber()]; + // gji = HVgij[j][this.getComponentNumber()]; + // gjj = HVgii[j][j]; + alpha = HValpha[j][this.getComponentNumber()]; + tau = Dji / (temperature); + tau2 = Dij / (temperature); + dtaudt = -tau / temperature; + dtau2dt = -tau2 / temperature; + // System.out.println("method GE1" + tau); - A += tau * G * comp_Array[j].getx(); - dAdT = dAdT + comp_Array[j].getx() * dGdt * tau + comp_Array[j].getx() * G * dtaudt; - dA2dT = comp_Array[j].getx() * dG2dt * tau2 + comp_Array[j].getx() * G2 * dtau2dt; - dA3dT = tau2 * G2 * comp_Array[j].getx(); - dA4dT = 2 * comp_Array[j].getx() * G2; - dA5dT = comp_Array[j].getx() * dG2dt; - dA6dT = comp_Array[j].getx() * G2; - B += G * comp_Array[j].getx(); - dBdT += dGdt * comp_Array[j].getx(); - E = G2 * comp_Array[j].getx(); - dEdT = dG2dt * comp_Array[j].getx(); + // System.out.println("error in NRTL here ......"); + G = Math.exp(-alpha * tau); // comp_Array[j].getb()*Math.exp(-alpha*tau); + dGdt = dtaudt * -alpha * G; + G2 = Math.exp(-alpha * tau2); // comp_Array[this.getComponentNumber()].getb()*Math.exp(-alpha*tau2); + dG2dt = dtau2dt * -alpha * G2; - C = 0; - D = 0; - dCdT = 0; - dDdT = 0; - // System.out.println("hei"); + A += tau * G * comp_Array[j].getx(); + dAdT = dAdT + comp_Array[j].getx() * dGdt * tau + comp_Array[j].getx() * G * dtaudt; + dA2dT = comp_Array[j].getx() * dG2dt * tau2 + comp_Array[j].getx() * G2 * dtau2dt; + dA3dT = tau2 * G2 * comp_Array[j].getx(); + dA4dT = 2 * comp_Array[j].getx() * G2; + dA5dT = comp_Array[j].getx() * dG2dt; + dA6dT = comp_Array[j].getx() * G2; + B += G * comp_Array[j].getx(); + dBdT += dGdt * comp_Array[j].getx(); + E = G2 * comp_Array[j].getx(); + dEdT = dG2dt * comp_Array[j].getx(); - for (l = 0; l < numberOfComponents; l++) { - Dij = HVgij[l][j]; - alpha = HValpha[l][j]; - tau = Dij / (temperature); - dtaudt = -tau / temperature; + C = 0; + D = 0; + dCdT = 0; + dDdT = 0; + // System.out.println("hei"); - // System.out.println("error in NRTL comp here...."); - G = Math.exp(-alpha * tau);// comp_Array[l].getb()*Math.exp(-alpha*tau); - dGdt = dtaudt * -alpha * G; - Gmatrix[l][j] = G; - tauMatrix[l][j] = tau; + for (l = 0; l < numberOfComponents; l++) { + Dij = HVgij[l][j]; + alpha = HValpha[l][j]; + tau = Dij / (temperature); + dtaudt = -tau / temperature; - C += G * comp_Array[l].getx(); - dCdT += dGdt * comp_Array[l].getx(); - D += G * tau * comp_Array[l].getx(); - dDdT += comp_Array[l].getx() * dGdt * tau + comp_Array[l].getx() * G * dtaudt; - } - dA2dTetter += dA2dT / C; - dA3dTetter += dA3dT * dCdT / (C * C); + // System.out.println("error in NRTL comp here...."); + G = Math.exp(-alpha * tau); // comp_Array[l].getb()*Math.exp(-alpha*tau); + dGdt = dtaudt * -alpha * G; + Gmatrix[l][j] = G; + tauMatrix[l][j] = tau; - dA4dTetter += dA4dT * dCdT * D / (C * C * C); - dA5dTetter += dA5dT * D / (C * C); - dA6dTetter += dA6dT * dDdT / (C * C); + C += G * comp_Array[l].getx(); + dCdT += dGdt * comp_Array[l].getx(); + D += G * tau * comp_Array[l].getx(); + dDdT += comp_Array[l].getx() * dGdt * tau + comp_Array[l].getx() * G * dtaudt; + } + dA2dTetter += dA2dT / C; + dA3dTetter += dA3dT * dCdT / (C * C); - tau2 = HVgij[this.getComponentNumber()][j] / (temperature); - dtau2dt = -tau2 / temperature; + dA4dTetter += dA4dT * dCdT * D / (C * C * C); + dA5dTetter += dA5dT * D / (C * C); + dA6dTetter += dA6dT * dDdT / (C * C); - F += E / C * (tau2 - D / C); - dFdT += (dEdT / C - E / (C * C) * dCdT) * (tau2 - D / C) - + E / C * (dtau2dt - (dDdT / C - D / (C * C) * dCdT)); - // F2T = F2T - 2*2*A/Math.pow(C,2) + 2*2*E*D/Math.pow(C,3); // A til A2; - } + tau2 = HVgij[this.getComponentNumber()][j] / (temperature); + dtau2dt = -tau2 / temperature; - lngamma = A / B + F; - // dlngammadt = dAdT/B - A/(B*B)*dBdT + dFdT; - dlngammadt = (dAdT / B - A / (B * B) * dBdT + dA2dTetter - dA3dTetter + dA4dTetter - - dA5dTetter - dA6dTetter); - /* - * if(w==0){ dlngammadtold = dlngammadt; temperature +=0.0001; } - * - * if(w==1){ lngammaold = lngamma; temperature -=0.0002; } } - */ - // System.out.println("deriv: " + lngammaold + " " + lngamma + " " + - // ((lngammaold-lngamma)/0.0002) + " " + dlngammadtold); - // System.out.println("deriv t : " +dlngammadt); + F += E / C * (tau2 - D / C); + dFdT += (dEdT / C - E / (C * C) * dCdT) * (tau2 - D / C) + + E / C * (dtau2dt - (dDdT / C - D / (C * C) * dCdT)); + // F2T = F2T - 2*2*A/Math.pow(C,2) + 2*2*E*D/Math.pow(C,3); // A til A2; + } - // tot2 = -2*A/B/B + F2T; - // dlngammadt = (lngammaold-lngamma)/0.002; + lngamma = A / B + F; + // dlngammadt = dAdT/B - A/(B*B)*dBdT + dFdT; + dlngammadt = (dAdT / B - A / (B * B) * dBdT + dA2dTetter - dA3dTetter + dA4dTetter - dA5dTetter + - dA6dTetter); + /* + * if(w==0){ dlngammadtold = dlngammadt; temperature +=0.0001; } + * + * if(w==1){ lngammaold = lngamma; temperature -=0.0002; } } + */ + // System.out.println("deriv: " + lngammaold + " " + lngamma + " " + + // ((lngammaold-lngamma)/0.0002) + " " + dlngammadtold); + // System.out.println("deriv t : " +dlngammadt); - // phaseny.getExessGibbsEnergy(numberOfComponents, temperature, pressure, - // phasetype) - gamma = Math.exp(lngamma); - // System.out.println("gamma " +gamma); - // if derivates.... - if (type == 3) { - double dAdn = 0; - double dBdn = 0; - double Etemp = 0; - double dEdn = 0; - double Ctemp = 0; - double Dtemp = 0; - double Ftemp = 0; - double Gtemp = 0; + // tot2 = -2*A/B/B + F2T; + // dlngammadt = (lngammaold-lngamma)/0.002; - for (int p = 0; p < numberOfComponents; p++) { - dAdn = tauMatrix[p][this.getComponentNumber()] - * Gmatrix[p][this.getComponentNumber()]; - dBdn = Gmatrix[p][this.getComponentNumber()]; - dEdn = Gmatrix[this.getComponentNumber()][p] - * tauMatrix[this.getComponentNumber()][p]; - // dFdn = Gmatrix[this.getComponentNumber()][p]; - Dtemp = 0; - Ctemp = 0; - Etemp = 0; - Ftemp = 0; - Gtemp = 0; - double nt = 0; - for (int f = 0; f < numberOfComponents; f++) { - nt += comp_Array[f].getNumberOfMolesInPhase(); - Ctemp += comp_Array[f].getx() * Gmatrix[f][p]; - Etemp += comp_Array[f].getx() * Gmatrix[f][p] * tauMatrix[f][p]; - double sum = 0.0; - double sum2 = 0.0; - for (int g = 0; g < numberOfComponents; g++) { - sum += comp_Array[g].getx() * Gmatrix[g][f]; - sum2 += comp_Array[g].getx() * Gmatrix[g][f] * tauMatrix[g][f]; - } - Dtemp += Gmatrix[p][f] * Gmatrix[this.getComponentNumber()][f] - * tauMatrix[this.getComponentNumber()][f] * comp_Array[f].getx() - / (sum * sum); - Ftemp += comp_Array[f].getx() * Gmatrix[p][f] * sum2 - * Gmatrix[this.getComponentNumber()][f] / (sum * sum * sum); - Gtemp += comp_Array[f].getx() * Gmatrix[p][f] * tauMatrix[p][f] - * Gmatrix[this.getComponentNumber()][f] / (sum * sum); - } - dlngammadn[p] = (dAdn / B - A / (B * B) * dBdn) + dEdn / Ctemp - Dtemp - - Etemp * Gmatrix[this.getComponentNumber()][p] / (Ctemp * Ctemp) - + 2.0 * Ftemp - Gtemp;// E/(C*C)*dCdn[p]*(tau2-D/C) - // + - // E/C*(-dDdn[p]/C - // + - // D/(C*C)*dCdn[p]); - dlngammadn[p] /= (nt); - } - // System.out.println("Dlngamdn: " + dlngammadn[p] + " x: " + - // comp_Array[p].getx()+ " length: "); - } + // phaseny.getExcessGibbsEnergy(numberOfComponents, temperature, pressure, + // pt) + gamma = Math.exp(lngamma); + // System.out.println("gamma " +gamma); + // if derivates.... + if (type == 3) { + double dAdn = 0; + double dBdn = 0; + double Etemp = 0; + double dEdn = 0; + double Ctemp = 0; + double Dtemp = 0; + double Ftemp = 0; + double Gtemp = 0; - return gamma; + for (int p = 0; p < numberOfComponents; p++) { + dAdn = tauMatrix[p][this.getComponentNumber()] * Gmatrix[p][this.getComponentNumber()]; + dBdn = Gmatrix[p][this.getComponentNumber()]; + dEdn = Gmatrix[this.getComponentNumber()][p] * tauMatrix[this.getComponentNumber()][p]; + // dFdn = Gmatrix[this.getComponentNumber()][p]; + Dtemp = 0; + Ctemp = 0; + Etemp = 0; + Ftemp = 0; + Gtemp = 0; + double nt = 0; + for (int f = 0; f < numberOfComponents; f++) { + nt += comp_Array[f].getNumberOfMolesInPhase(); + Ctemp += comp_Array[f].getx() * Gmatrix[f][p]; + Etemp += comp_Array[f].getx() * Gmatrix[f][p] * tauMatrix[f][p]; + double sum = 0.0; + double sum2 = 0.0; + for (int g = 0; g < numberOfComponents; g++) { + sum += comp_Array[g].getx() * Gmatrix[g][f]; + sum2 += comp_Array[g].getx() * Gmatrix[g][f] * tauMatrix[g][f]; + } + Dtemp += Gmatrix[p][f] * Gmatrix[this.getComponentNumber()][f] + * tauMatrix[this.getComponentNumber()][f] * comp_Array[f].getx() / (sum * sum); + Ftemp += comp_Array[f].getx() * Gmatrix[p][f] * sum2 + * Gmatrix[this.getComponentNumber()][f] / (sum * sum * sum); + Gtemp += comp_Array[f].getx() * Gmatrix[p][f] * tauMatrix[p][f] + * Gmatrix[this.getComponentNumber()][f] / (sum * sum); + } + dlngammadn[p] = (dAdn / B - A / (B * B) * dBdn) + dEdn / Ctemp - Dtemp + - Etemp * Gmatrix[this.getComponentNumber()][p] / (Ctemp * Ctemp) + 2.0 * Ftemp - Gtemp; + // E/(C*C)*dCdn[p]*(tau2-D/C) + E/C*(-dDdn[p]/C + D/(C*C)*dCdn[p]); + dlngammadn[p] /= (nt); + } + // System.out.println("Dlngamdn: " + dlngammadn[p] + " x: " + + // comp_Array[p].getx()+ " length: "); } - /* - * public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double - * temperature, double pressure, int phasetype){ dfugdp = (Math.log(fugcoef(phase, - * numberOfComponents, temperature, pressure+0.01, phasetype))-Math.log(fugcoef(phase, - * numberOfComponents, temperature, pressure-0.01, phasetype)))/0.02; return dfugdp; } - * - * public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double - * temperature, double pressure, int phasetype){ dfugdt = (Math.log(fugcoef(phase, - * numberOfComponents, temperature+0.01, pressure, phasetype))-Math.log(fugcoef(phase, - * numberOfComponents, temperature-0.01, pressure, phasetype)))/0.02; return dfugdt; } - */ + return gamma; + } - /** - *

- * Getter for the field r. - *

- * - * @return a double - */ - public double getr() { - return r; - } + /* + * public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, double temperature, + * double pressure, PhaseType pt){ dfugdp = (Math.log(fugcoef(phase, numberOfComponents, + * temperature, pressure+0.01, pt))-Math.log(fugcoef(phase, numberOfComponents, temperature, + * pressure-0.01, pt)))/0.02; return dfugdp; } + * + * public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, double temperature, + * double pressure, PhaseType pt){ dfugdt = (Math.log(fugcoef(phase, numberOfComponents, + * temperature+0.01, pressure, pt))-Math.log(fugcoef(phase, numberOfComponents, temperature-0.01, + * pressure, pt)))/0.02; return dfugdt; } + */ - /** - *

- * Getter for the field q. - *

- * - * @return a double - */ - public double getq() { - return q; - } + /** + *

+ * Getter for the field r. + *

+ * + * @return a double + */ + public double getr() { + return r; + } - /** - * Getter for property lngamma. - * - * @return Value of property lngamma. - */ - public double getLngamma() { - return lngamma; - } + /** + *

+ * Getter for the field q. + *

+ * + * @return a double + */ + public double getq() { + return q; + } + + /** + * Getter for property lngamma. + * + * @return Value of property lngamma. + */ + public double getLngamma() { + return lngamma; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentHydrate.java b/src/main/java/neqsim/thermo/component/ComponentHydrate.java index c7e9d95dfd..d93bacf47d 100644 --- a/src/main/java/neqsim/thermo/component/ComponentHydrate.java +++ b/src/main/java/neqsim/thermo/component/ComponentHydrate.java @@ -2,7 +2,9 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.util.database.NeqSimDataBase; /** @@ -14,719 +16,724 @@ * @version $Id: $Id */ public class ComponentHydrate extends Component { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(ComponentHydrate.class); - - // double emptyHydrateVapourPressureConstant[][] = {{17.6025820786, - // -6056.0650578668},{17.332, -6017.6}}; //fitted - double emptyHydrateVapourPressureConstant[][] = {{17.44, -6003.9}, {17.332, -6017.6}}; // Sloan - // (1990) - // double emptyHydrateVapourPressureConstant[][] = {{ 17.5061457754, - // -6030.6886435166},{17.332, -6017.6}}; //fitted (1990) - int hydrateStructure = 0; - double coordNumb[][] = new double[2][2]; // [structure][cavitytype] - double cavRadius[][] = new double[2][2]; // [structure][cavitytype] - double cavNumb[][] = new double[2][2]; // [structure][cavitytype] - double cavprwat[][] = new double[2][2]; // [structure][cavitytype] - // double[] dGfHydrate = {-236539.2, -235614.0}; - // double[] dHfHydrate = {-292714.5, -292016.0}; - double[] dGfHydrate = {-235557, -235614}; - double[] dHfHydrate = {-291786, -292016}; - double reffug[] = - new double[neqsim.thermo.ThermodynamicConstantsInterface.MAX_NUMBER_OF_COMPONENTS]; - private double sphericalCoreRadiusHydrate = 0.0; - private double lennardJonesEnergyParameterHydrate = 0.0; - private double lennardJonesMolecularDiameterHydrate = 0.0; - PhaseInterface refPhase = null; - - /** - *

- * Constructor for ComponentHydrate. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentHydrate(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - coordNumb[0][0] = 20.0; - coordNumb[0][1] = 24.0; - cavRadius[0][0] = 3.95; - cavRadius[0][1] = 4.33; - cavNumb[0][0] = 2.0; - cavNumb[0][1] = 6.0; - cavprwat[0][0] = 1.0 / 23.0; - cavprwat[0][1] = 3.0 / 23.0; - - coordNumb[1][0] = 20.0; - coordNumb[1][1] = 28.0; - cavRadius[1][0] = 3.91; - cavRadius[1][1] = 4.73; - cavNumb[1][0] = 16.0; - cavNumb[1][1] = 8.0; - cavprwat[1][0] = 2.0 / 17.0; - cavprwat[1][1] = 1.0 / 17.0; - - reffug[0] = 10.0; - reffug[1] = 1.0; - - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentHydrate.class); + + // double[][] emptyHydrateVapourPressureConstant = {{17.6025820786, + // -6056.0650578668},{17.332, -6017.6}}; //fitted + // Sloan (1990) + double[][] emptyHydrateVapourPressureConstant = {{17.44, -6003.9}, {17.332, -6017.6}}; + // double[][] emptyHydrateVapourPressureConstant = {{ 17.5061457754, + // -6030.6886435166},{17.332, -6017.6}}; //fitted (1990) + int hydrateStructure = 0; + double[][] coordNumb = new double[2][2]; // [structure][cavitytype] + double[][] cavRadius = new double[2][2]; // [structure][cavitytype] + double[][] cavNumb = new double[2][2]; // [structure][cavitytype] + double[][] cavprwat = new double[2][2]; // [structure][cavitytype] + // double[] dGfHydrate = {-236539.2, -235614.0}; + // double[] dHfHydrate = {-292714.5, -292016.0}; + double[] dGfHydrate = {-235557, -235614}; + double[] dHfHydrate = {-291786, -292016}; + double[] reffug = new double[neqsim.thermo.ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + private double sphericalCoreRadiusHydrate = 0.0; + private double lennardJonesEnergyParameterHydrate = 0.0; + private double lennardJonesMolecularDiameterHydrate = 0.0; + PhaseInterface refPhase = null; + + /** + *

+ * Constructor for ComponentHydrate. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentHydrate(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + coordNumb[0][0] = 20.0; + coordNumb[0][1] = 24.0; + cavRadius[0][0] = 3.95; + cavRadius[0][1] = 4.33; + cavNumb[0][0] = 2.0; + cavNumb[0][1] = 6.0; + cavprwat[0][0] = 1.0 / 23.0; + cavprwat[0][1] = 3.0 / 23.0; + + coordNumb[1][0] = 20.0; + coordNumb[1][1] = 28.0; + cavRadius[1][0] = 3.91; + cavRadius[1][1] = 4.73; + cavNumb[1][0] = 16.0; + cavNumb[1][1] = 8.0; + cavprwat[1][0] = 2.0 / 17.0; + cavprwat[1][1] = 1.0 / 17.0; + + reffug[0] = 10.0; + reffug[1] = 1.0; + + if (!name.equals("default")) { + java.sql.ResultSet dataSet = null; + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { try { - if (!component_name.equals("default")) { - try { - if (NeqSimDataBase.createTemporaryTables()) { - dataSet = database.getResultSet( - ("SELECT * FROM comptemp WHERE name='" + component_name + "'")); - } else { - dataSet = database.getResultSet( - ("SELECT * FROM comp WHERE name='" + component_name + "'")); - } - dataSet.next(); - dataSet.getString("FORMULA"); - } catch (Exception e) { - dataSet.close(); - logger.info("no parameters in tempcomp -- trying comp.. " + component_name); - dataSet = database.getResultSet( - ("SELECT * FROM comp WHERE name='" + component_name + "'")); - dataSet.next(); - } - lennardJonesMolecularDiameterHydrate = - Double.parseDouble(dataSet.getString("LJdiameterHYDRATE")); // BF - lennardJonesEnergyParameterHydrate = - Double.parseDouble(dataSet.getString("LJepsHYDRATE")); - sphericalCoreRadiusHydrate = - Double.parseDouble(dataSet.getString("SphericalCoreRadiusHYDRATE")); - } - } catch (Exception e) { - logger.error("error in comp", e); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error closing database.....", e); - } - } - } - - /** - *

- * readHydrateParameters. - *

- */ - public void readHydrateParameters() {} - - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - return fugcoef(phase, phase.getNumberOfComponents(), phase.getTemperature(), - phase.getPressure()); - } - - /** - *

- * Setter for the field hydrateStructure. - *

- * - * @param structure a int - */ - public void setHydrateStructure(int structure) { - this.hydrateStructure = structure; - } - - /** - *

- * Getter for the field hydrateStructure. - *

- * - * @return a int - */ - public int getHydrateStructure() { - return this.hydrateStructure; - } - - /** - *

- * fugcoef. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComps a int - * @param temp a double - * @param pres a double - * @return a double - */ - public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { - if (componentName.equals("water")) { - fugacityCoefficient = -1e50; - double val = 1.0; - double tempy = 1.0; - double fugold = 0.0; - - do { - val = 0; - tempy = 0.0; - fugold = fugacityCoefficient; - if (hydrateStructure >= 0) { - for (int cavType = 0; cavType < 2; cavType++) { - tempy = 0.0; - for (int j = 0; j < phase.getNumberOfComponents(); j++) { - // System.out.println(phase.getComponent(j)); - tempy += ((ComponentHydrate) phase.getComponent(j)) - .calcYKI(hydrateStructure, cavType, phase); - // System.out.println("tempny " +tempy); - // System.out.println("temp ny " + this);//phase.getComponent(j)); - } - val += getCavprwat()[hydrateStructure][cavType] * Math.log(1.0 - tempy); - } - } - // System.out.println("val " +(val)); - // System.out.println("fugacityCoefficient bef " + fugacityCoefficient); - double solvol = 1.0 / 906.0 * getMolarMass(); - fugacityCoefficient = Math.exp(val) - * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) - * Math.exp(solvol / (R * temp) * ((pres - - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp))) - * 1e5) - / pres; - // System.out.println("struct " + hydrateStruct + " fug " + tempfugcoef + " val - // "+ val); - - // fugacityCoefficient = - // Math.exp(val)*getEmptyHydrateStructureVapourPressure(hydrateStructure,temp)*Math.exp(solvol/(R*temp)*((pres-getEmptyHydrateStructureVapourPressure(hydrateStructure,temp)))*1e5)/pres; - // fugacityCoefficient = getAntoineVaporPressure(temp)/pres; - // logFugacityCoefficient = Math.log(fugacityCoefficient); - // logFugacityCoefficient += val*boltzmannConstant/R; - // fugacityCoefficient = Math.exp(logFugacityCoefficient); - // System.out.println("fugacityCoefficient " + fugacityCoefficient); - } while (Math.abs((fugacityCoefficient - fugold) / fugold) > 1e-6); - } else { - fugacityCoefficient = 1e5; + if (NeqSimDataBase.createTemporaryTables()) { + dataSet = database.getResultSet(("SELECT * FROM comptemp WHERE name='" + name + "'")); + } else { + dataSet = database.getResultSet(("SELECT * FROM comp WHERE name='" + name + "'")); + } + dataSet.next(); + dataSet.getString("FORMULA"); + } catch (Exception ex) { + dataSet.close(); + logger.info("no parameters in tempcomp -- trying comp.. " + name); + dataSet = database.getResultSet(("SELECT * FROM comp WHERE name='" + name + "'")); + dataSet.next(); } - logFugacityCoefficient = Math.log(fugacityCoefficient); - // System.out.println("fug " + fugacityCoefficient); - return fugacityCoefficient; - } - - /** - *

- * getEmptyHydrateStructureVapourPressure. - *

- * - * @param type a int - * @param temperature a double - * @return a double - */ - public double getEmptyHydrateStructureVapourPressure(int type, double temperature) { - if (type == -1) { - return getSolidVaporPressure(temperature); - } else { - return Math - .exp(getEmptyHydrateVapourPressureConstant(type, 0) - + getEmptyHydrateVapourPressureConstant(type, 1) / temperature) - * 1.01325; - } - } - - /** - *

- * Setter for the field emptyHydrateVapourPressureConstant. - *

- * - * @param hydrateStructure a int - * @param parameterNumber a int - * @param value a double - */ - public void setEmptyHydrateVapourPressureConstant(int hydrateStructure, int parameterNumber, - double value) { - emptyHydrateVapourPressureConstant[hydrateStructure][parameterNumber] = value; - } - - /** - *

- * Getter for the field emptyHydrateVapourPressureConstant. - *

- * - * @param hydrateStructure a int - * @param parameterNumber a int - * @return a double - */ - public double getEmptyHydrateVapourPressureConstant(int hydrateStructure, int parameterNumber) { - return emptyHydrateVapourPressureConstant[hydrateStructure][parameterNumber]; - } - - /** - *

- * calcChemPotEmpty. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComps a int - * @param temp a double - * @param pres a double - * @param hydrateStruct a int - * @return a double - */ - public double calcChemPotEmpty(PhaseInterface phase, int numberOfComps, double temp, - double pres, int hydrateStruct) { - double dGf = 0.0, dHf = 0.0, Cpa = getCpA(), Cpb = getCpB(), Cpc = getCpC(), Cpd = getCpD(); - double deltaMolarVolume = 0.0; - if (hydrateStruct == 1) { - dGf = getDGfHydrate()[1]; - dHf = getDHfHydrate()[1]; - deltaMolarVolume = 5.0e-6; - } else { - dGf = getDGfHydrate()[0]; - dHf = getDHfHydrate()[0]; - deltaMolarVolume = 4.6e-6; - } - double T0 = 298.15; - - dHf += Cpa * (temp - T0) + Cpb * Math.log(temp / T0) - Cpc * (1.0 / temp - 1.0 / T0) - - 1.0 / 2.0 * Cpd * (1.0 / (temp * temp) - 1.0 / (T0 * T0)); - - return (dGf / R / T0 + 1.0 * dHf * (1.0 / R / temp - 1.0 / R / T0)) - + deltaMolarVolume / R / ((temp + T0) / 2.0) * (pres * 1e5 - 1e5); - } - - /** - *

- * calcChemPotIdealWater. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComps a int - * @param temp a double - * @param pres a double - * @param hydrateStruct a int - * @return a double - */ - public double calcChemPotIdealWater(PhaseInterface phase, int numberOfComps, double temp, - double pres, int hydrateStruct) { - double dGf = -228700.0, dHf = -242000.0, Cpa = getCpA(), Cpb = getCpB(), Cpc = getCpC(), - Cpd = getCpD(); - // Cpa = 0.7354; - // Cpb = 0.01418; - // Cpc = -1.727e-5; - double T0 = 298.15; - dHf += Cpa * (temp - T0) + Cpb * Math.log(temp / T0) - Cpc * (1.0 / temp - 1.0 / T0) - - 1.0 / 2.0 * Cpd * (1.0 / (temp * temp) - 1.0 / (T0 * T0)); - return (dGf / R / T0 + 1.0 * dHf * (1.0 / R / temp - 1.0 / R / T0)); - } - - /** - *

- * calcYKI. - *

- * - * @param stucture a int - * @param cavityType a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { - if (componentName.equals("water")) { - return 0.0; + lennardJonesMolecularDiameterHydrate = + Double.parseDouble(dataSet.getString("LJdiameterHYDRATE")); // BF + lennardJonesEnergyParameterHydrate = Double.parseDouble(dataSet.getString("LJepsHYDRATE")); + sphericalCoreRadiusHydrate = + Double.parseDouble(dataSet.getString("SphericalCoreRadiusHYDRATE")); + } catch (Exception ex) { + logger.error("error in comp", ex); + } finally { + try { + if (dataSet != null) { + dataSet.close(); + } + } catch (Exception ex) { + logger.error("error closing database.....", ex); } - // if(componentName.equals("methane")){ - double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber]; - double temp = 1.0; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - if (!phase.getComponent(i).getComponentName().equals("water")) { - if (phase.getComponent(i).isHydrateFormer()) { - temp += ((ComponentHydrate) phase.getComponent(i)).calcCKI(stucture, cavityType, - phase) * reffug[i]; - } + } + } + } + + /** + *

+ * readHydrateParameters. + *

+ */ + public void readHydrateParameters() {} + + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase) { + return fugcoef(phase, phase.getNumberOfComponents(), phase.getTemperature(), + phase.getPressure()); + } + + /** + *

+ * Calculate, set and return fugacity coefficient. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object to get fugacity coefficient + * of. + * @param numberOfComps a int + * @param temp a double + * @param pres a double + * @return Fugacity coefficient + */ + public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { + if (componentName.equals("water")) { + fugacityCoefficient = -1e50; + double val = 1.0; + double tempy = 1.0; + double fugold = 0.0; + + do { + val = 0; + tempy = 0.0; + fugold = fugacityCoefficient; + if (hydrateStructure >= 0) { + for (int cavType = 0; cavType < 2; cavType++) { + tempy = 0.0; + for (int j = 0; j < phase.getNumberOfComponents(); j++) { + // System.out.println(phase.getComponent(j)); + tempy += ((ComponentHydrate) phase.getComponent(j)).calcYKI(hydrateStructure, cavType, + phase); + // System.out.println("tempny " +tempy); + // System.out.println("temp ny " + this); //phase.getComponent(j)); } + val += getCavprwat()[hydrateStructure][cavType] * Math.log(1.0 - tempy); + } } - return yki / temp; - // } - // else return 0.0; - } - - /** - *

- * calcCKI. - *

- * - * @param stucture a int - * @param cavityType a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { - double cki = 4.0 * pi / (boltzmannConstant * phase.getTemperature()) - * potIntegral(stucture, cavityType, phase); - // System.out.println("cki " + cki); - return cki; - } - - /** - *

- * setRefFug. - *

- * - * @param compNumbm a int - * @param val a double - */ - public void setRefFug(int compNumbm, double val) { - // System.out.println("ref fug setting " + val); - reffug[compNumbm] = val; - } - - /** - *

- * potIntegral. - *

- * - * @param stucture a int - * @param cavityType a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double potIntegral(int stucture, int cavityType, PhaseInterface phase) { - double val = 0.0; - double endval = cavRadius[stucture][cavityType] - getSphericalCoreRadiusHydrate(); - double x = 0.0, step = endval / 100.0; - x = step; - for (int i = 1; i < 100; i++) { - // System.out.println("x" +x); - // System.out.println("pot " + getPot(x,stucture,cavityType,phase)); - val += step * ((getPot(x, stucture, cavityType, phase) - + 4 * getPot((x + 0.5 * step), stucture, cavityType, phase) - + getPot(x + step, stucture, cavityType, phase)) / 6.0); - x = i * step; + // System.out.println("val " +(val)); + // System.out.println("fugacityCoefficient bef " + fugacityCoefficient); + double solvol = 1.0 / 906.0 * getMolarMass(); + fugacityCoefficient = Math.exp(val) + * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) + * Math.exp(solvol / (R * temp) + * ((pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp))) * 1e5) + / pres; + // System.out.println("struct " + hydrateStruct + " fug " + tempfugcoef + " val + // "+ val); + + // fugacityCoefficient = + // Math.exp(val) * + // getEmptyHydrateStructureVapourPressure(hydrateStructure,temp) * + // Math.exp(solvol/(R*temp)*((pres-getEmptyHydrateStructureVapourPressure(hydrateStructure,temp)))*1e5)/pres; + // fugacityCoefficient = getAntoineVaporPressure(temp)/pres; + // fugacityCoefficient = Math.exp(Math.log(fugacityCoefficient) + val*boltzmannConstant/R); + // System.out.println("fugacityCoefficient " + fugacityCoefficient); + } while (Math.abs((fugacityCoefficient - fugold) / fugold) > 1e-6); + } else { + fugacityCoefficient = 1e5; + } + + // System.out.println("fug " + fugacityCoefficient); + return fugacityCoefficient; + } + + /** + *

+ * Setter for the field hydrateStructure. + *

+ * + * @param structure a int + */ + public void setHydrateStructure(int structure) { + this.hydrateStructure = structure; + } + + /** + *

+ * Getter for the field hydrateStructure. + *

+ * + * @return a int + */ + public int getHydrateStructure() { + return this.hydrateStructure; + } + + /** + *

+ * getEmptyHydrateStructureVapourPressure. + *

+ * + * @param type a int + * @param temperature a double + * @return a double + */ + public double getEmptyHydrateStructureVapourPressure(int type, double temperature) { + if (type == -1) { + return getSolidVaporPressure(temperature); + } else { + return Math + .exp(getEmptyHydrateVapourPressureConstant(type, 0) + + getEmptyHydrateVapourPressureConstant(type, 1) / temperature) + * ThermodynamicConstantsInterface.referencePressure; + } + } + + /** + *

+ * Setter for the field emptyHydrateVapourPressureConstant. + *

+ * + * @param hydrateStructure a int + * @param parameterNumber a int + * @param value a double + */ + public void setEmptyHydrateVapourPressureConstant(int hydrateStructure, int parameterNumber, + double value) { + emptyHydrateVapourPressureConstant[hydrateStructure][parameterNumber] = value; + } + + /** + *

+ * Getter for the field emptyHydrateVapourPressureConstant. + *

+ * + * @param hydrateStructure a int + * @param parameterNumber a int + * @return a double + */ + public double getEmptyHydrateVapourPressureConstant(int hydrateStructure, int parameterNumber) { + return emptyHydrateVapourPressureConstant[hydrateStructure][parameterNumber]; + } + + /** + *

+ * calcChemPotEmpty. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComps a int + * @param temp a double + * @param pres a double + * @param hydrateStruct a int + * @return a double + */ + public double calcChemPotEmpty(PhaseInterface phase, int numberOfComps, double temp, double pres, + int hydrateStruct) { + double dGf = 0.0; + double dHf = 0.0; + double Cpa = getCpA(); + double Cpb = getCpB(); + double Cpc = getCpC(); + double Cpd = getCpD(); + double deltaMolarVolume = 0.0; + if (hydrateStruct == 1) { + dGf = getDGfHydrate()[1]; + dHf = getDHfHydrate()[1]; + deltaMolarVolume = 5.0e-6; + } else { + dGf = getDGfHydrate()[0]; + dHf = getDHfHydrate()[0]; + deltaMolarVolume = 4.6e-6; + } + double T0 = 298.15; + + dHf += Cpa * (temp - T0) + Cpb * Math.log(temp / T0) - Cpc * (1.0 / temp - 1.0 / T0) + - 1.0 / 2.0 * Cpd * (1.0 / (temp * temp) - 1.0 / (T0 * T0)); + + return (dGf / R / T0 + 1.0 * dHf * (1.0 / R / temp - 1.0 / R / T0)) + + deltaMolarVolume / R / ((temp + T0) / 2.0) * (pres * 1e5 - 1e5); + } + + /** + *

+ * calcChemPotIdealWater. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComps a int + * @param temp a double + * @param pres a double + * @param hydrateStruct a int + * @return a double + */ + public double calcChemPotIdealWater(PhaseInterface phase, int numberOfComps, double temp, + double pres, int hydrateStruct) { + double dGf = -228700.0; + double dHf = -242000.0; + double Cpa = getCpA(); + double Cpb = getCpB(); + double Cpc = getCpC(); + double Cpd = getCpD(); + // Cpa = 0.7354; + // Cpb = 0.01418; + // Cpc = -1.727e-5; + double T0 = 298.15; + dHf += Cpa * (temp - T0) + Cpb * Math.log(temp / T0) - Cpc * (1.0 / temp - 1.0 / T0) + - 1.0 / 2.0 * Cpd * (1.0 / (temp * temp) - 1.0 / (T0 * T0)); + return (dGf / R / T0 + 1.0 * dHf * (1.0 / R / temp - 1.0 / R / T0)); + } + + /** + *

+ * calcYKI. + *

+ * + * @param stucture a int + * @param cavityType a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { + if (componentName.equals("water")) { + return 0.0; + } + // if(componentName.equals("methane")){ + double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber]; + double temp = 1.0; + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + if (!phase.getComponent(i).getComponentName().equals("water")) { + if (phase.getComponent(i).isHydrateFormer()) { + temp += ((ComponentHydrate) phase.getComponent(i)).calcCKI(stucture, cavityType, phase) + * reffug[i]; } - return val / 100000.0; - } - - /** - *

- * getPot. - *

- * - * @param radius a double - * @param struccture a int - * @param cavityType a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getPot(double radius, int struccture, int cavityType, PhaseInterface phase) { - double pot = 2.0 * coordNumb[struccture][cavityType] - * this.getLennardJonesEnergyParameterHydrate() - * ((Math.pow(this.getLennardJonesMolecularDiameterHydrate(), 12.0) - / (Math.pow(cavRadius[struccture][cavityType], 11.0) * radius) - * (delt(10.0, radius, struccture, cavityType, this) - + this.getSphericalCoreRadiusHydrate() - / cavRadius[struccture][cavityType] - * delt(11.0, radius, struccture, cavityType, this))) - - (Math.pow(this.getLennardJonesMolecularDiameterHydrate(), 6.0) - / (Math.pow(cavRadius[struccture][cavityType], 5.0) * radius) - * (delt(4.0, radius, struccture, cavityType, this) - + this.getSphericalCoreRadiusHydrate() - / cavRadius[struccture][cavityType] * delt(5.0, - radius, struccture, cavityType, this)))); - // System.out.println("lenjones " - // +this.getLennardJonesMolecularDiameterHydrate() ); - // System.out.println("pot bef " + pot); - pot = Math.exp(-pot / (phase.getTemperature())) * radius * radius / 1.0e20; - // System.out.println("pot " + pot); - return pot; - } - - /** - *

- * delt. - *

- * - * @param n a double - * @param radius a double - * @param struccture a int - * @param cavityType a int - * @param comp a {@link neqsim.thermo.component.ComponentInterface} object - * @return a double - */ - public double delt(double n, double radius, int struccture, int cavityType, - ComponentInterface comp) { - double delt = 1.0 / n * (Math - .pow(1.0 - radius / cavRadius[struccture][cavityType] - - ((ComponentHydrate) comp).getSphericalCoreRadiusHydrate() - / cavRadius[struccture][cavityType], - -n) - - Math.pow(1.0 + radius / cavRadius[struccture][cavityType] - - ((ComponentHydrate) comp).getSphericalCoreRadiusHydrate() - / cavRadius[struccture][cavityType], - -n)); - - // System.out.println("delt " + delt); - return delt; + } } - - /** - *

- * Getter for the field dGfHydrate. - *

- * - * @return an array of {@link double} objects - */ - public double[] getDGfHydrate() { - return dGfHydrate; - } - - /** - *

- * Setter for the field dGfHydrate. - *

- * - * @param dGfHydrate an array of {@link double} objects - */ - public void setDGfHydrate(double[] dGfHydrate) { - this.dGfHydrate = dGfHydrate; - } - - /** - *

- * Setter for the field dGfHydrate. - *

- * - * @param dGfHydrate a double - * @param i a int - */ - public void setDGfHydrate(double dGfHydrate, int i) { - this.dGfHydrate[i] = dGfHydrate; - } - - /** - *

- * Setter for the field dHfHydrate. - *

- * - * @param dHfHydrate a double - * @param i a int - */ - public void setDHfHydrate(double dHfHydrate, int i) { - this.dHfHydrate[i] = dHfHydrate; - } - - /** - *

- * Getter for the field dHfHydrate. - *

- * - * @return an array of {@link double} objects - */ - public double[] getDHfHydrate() { - return dHfHydrate; - } - - /** - *

- * Setter for the field dHfHydrate. - *

- * - * @param dHfHydrate an array of {@link double} objects - */ - public void setDHfHydrate(double[] dHfHydrate) { - this.dHfHydrate = dHfHydrate; - } - - /** - *

- * getMolarVolumeHydrate. - *

- * - * @param structure a int - * @param temperature a double - * @return a double - */ - public double getMolarVolumeHydrate(int structure, double temperature) { - // taken from chem.eng.sci Avlonitis 1994 - double TO = 273.15; - if (structure == 0) { - double v0 = 22.35, k1 = 3.1075e-4, k2 = 5.9537e-7, k3 = 1.3707e-10; - return v0 * (1.0 + k1 * (temperature - TO) + k2 * Math.pow(temperature - TO, 2.0) - + k3 * Math.pow(temperature - TO, 3.0)) / 1.0e6; - } else if (structure == 1) { - double v0 = 22.57, k1 = 1.9335e-4, k2 = 2.1768e-7, k3 = -1.4786e-10; - return v0 * (1.0 + k1 * (temperature - TO) + k2 * Math.pow(temperature - TO, 2.0) - + k3 * Math.pow(temperature - TO, 3.0)) / 1.0e6; - } else if (structure == -1) { - double v0 = 19.6522, k1 = 1.6070e-4, k2 = 3.4619e-7, k3 = -1.4786e-10; - return v0 * (1.0 + k1 * (temperature - TO) + k2 * Math.pow(temperature - TO, 2.0) - + k3 * Math.pow(temperature - TO, 3.0)) / 1.0e6; - } else { - return 0.0; - } - } - - /** - *

- * Getter for the field sphericalCoreRadiusHydrate. - *

- * - * @return a double - */ - public double getSphericalCoreRadiusHydrate() { - return sphericalCoreRadiusHydrate; - } - - /** - *

- * Setter for the field sphericalCoreRadiusHydrate. - *

- * - * @param sphericalCoreRadiusHydrate a double - */ - public void setSphericalCoreRadiusHydrate(double sphericalCoreRadiusHydrate) { - this.sphericalCoreRadiusHydrate = sphericalCoreRadiusHydrate; - } - - /** - *

- * Getter for the field lennardJonesEnergyParameterHydrate. - *

- * - * @return a double - */ - public double getLennardJonesEnergyParameterHydrate() { - return lennardJonesEnergyParameterHydrate; - } - - /** - *

- * Setter for the field lennardJonesEnergyParameterHydrate. - *

- * - * @param lennardJonesEnergyParameterHydrate a double - */ - public void setLennardJonesEnergyParameterHydrate(double lennardJonesEnergyParameterHydrate) { - this.lennardJonesEnergyParameterHydrate = lennardJonesEnergyParameterHydrate; - } - - /** - *

- * Getter for the field lennardJonesMolecularDiameterHydrate. - *

- * - * @return a double - */ - public double getLennardJonesMolecularDiameterHydrate() { - return lennardJonesMolecularDiameterHydrate; - } - - /** - *

- * Setter for the field lennardJonesMolecularDiameterHydrate. - *

- * - * @param lennardJonesMolecularDiameterHydrate a double - */ - public void setLennardJonesMolecularDiameterHydrate( - double lennardJonesMolecularDiameterHydrate) { - this.lennardJonesMolecularDiameterHydrate = lennardJonesMolecularDiameterHydrate; - } - - /** - *

- * setSolidRefFluidPhase. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void setSolidRefFluidPhase(PhaseInterface phase) { - try { - refPhase = phase.getClass().getDeclaredConstructor().newInstance(); - refPhase.setTemperature(273.0); - refPhase.setPressure(1.0); - refPhase.addcomponent("water", 10.0, 10.0, 0); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 0, 1, 1.0); - } catch (Exception e) { - logger.error("error occured", e); - } - } - // public double dfugdt(PhaseInterface phase, int numberOfComps, double temp, - // double pres){ - // if(componentName.equals("water")){ - // double solvol = - // 1.0/getPureComponentSolidDensity(getMeltingPointTemperature())*molarMass; - // dfugdt = - // Math.log((getEmptyHydrateStructureVapourPressuredT(hydrateStructure,temp))/pres); - // } else dfugdt=0; - // return dfugdt; - // } - - // public double getEmptyHydrateStructureVapourPressure2(int type, double - // temperature){ - // double par1_struc1=4.6477; - // double par2_struc1=-5242.979; - // double par3_struc1=2.7789; - // double par4_struc1=-8.7156e-3; - // if(type==0){ - // return - // Math.exp(par1_struc1*Math.log(temperature)+par2_struc1/temperature+par3_struc1+par4_struc1*temperature)/1.0e5; - // } - // if(type==1){ - // return Math.exp(par1_struc2+par2_struc2/temperature)*1.01325; - // } else return 0.0; - // } - - // public double getEmptyHydrateStructureVapourPressure(int type, double - // temperature){ - - // if(type==0){ - // return Math.exp(par1_struc1+par2_struc1/temperature)*1.01325; + return yki / temp; // } - // if(type==1){ - // return Math.exp(par1_struc2+par2_struc2/temperature)*1.01325; - // } else return 0.0; - // } - - // public double getEmptyHydrateStructureVapourPressuredT(int type, double - // temperature){ - - // if(type==0){ - // return - // -par2_struc1/(temperature*temperature)*Math.exp(par1_struc1+par2_struc1/temperature); - // } - // if(type==1){ - // return - // -par2_struc2/(temperature*temperature)*Math.exp(par1_struc2+par2_struc2/temperature); - // } else return 0.0; - // } - - /** - *

- * Getter for the field cavprwat. - *

- * - * @return the cavprwat - * @param structure a int - * @param cavityType a int - */ - public double getCavprwat(int structure, int cavityType) { - return getCavprwat()[structure][cavityType]; - } - - /** - *

- * Getter for the field cavprwat. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getCavprwat() { - return cavprwat; - } + // else return 0.0; + } + + /** + *

+ * calcCKI. + *

+ * + * @param stucture a int + * @param cavityType a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { + double cki = 4.0 * pi / (boltzmannConstant * phase.getTemperature()) + * potIntegral(stucture, cavityType, phase); + // System.out.println("cki " + cki); + return cki; + } + + /** + *

+ * setRefFug. + *

+ * + * @param compNumbm a int + * @param val a double + */ + public void setRefFug(int compNumbm, double val) { + // System.out.println("ref fug setting " + val); + reffug[compNumbm] = val; + } + + /** + *

+ * potIntegral. + *

+ * + * @param stucture a int + * @param cavityType a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double potIntegral(int stucture, int cavityType, PhaseInterface phase) { + double val = 0.0; + double endval = cavRadius[stucture][cavityType] - getSphericalCoreRadiusHydrate(); + double x = 0.0; + double step = endval / 100.0; + x = step; + for (int i = 1; i < 100; i++) { + // System.out.println("x" +x); + // System.out.println("pot " + getPot(x,stucture,cavityType,phase)); + val += step * ((getPot(x, stucture, cavityType, phase) + + 4 * getPot((x + 0.5 * step), stucture, cavityType, phase) + + getPot(x + step, stucture, cavityType, phase)) / 6.0); + x = i * step; + } + return val / 100000.0; + } + + /** + *

+ * getPot. + *

+ * + * @param radius a double + * @param struccture a int + * @param cavityType a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getPot(double radius, int struccture, int cavityType, PhaseInterface phase) { + double pot = + 2.0 * coordNumb[struccture][cavityType] * this.getLennardJonesEnergyParameterHydrate() + * ((Math.pow(this.getLennardJonesMolecularDiameterHydrate(), 12.0) + / (Math.pow(cavRadius[struccture][cavityType], 11.0) * radius) + * (delt(10.0, radius, struccture, cavityType, this) + + this.getSphericalCoreRadiusHydrate() / cavRadius[struccture][cavityType] + * delt(11.0, radius, struccture, cavityType, this))) + - (Math.pow(this.getLennardJonesMolecularDiameterHydrate(), 6.0) + / (Math.pow(cavRadius[struccture][cavityType], 5.0) * radius) + * (delt(4.0, radius, struccture, cavityType, this) + + this.getSphericalCoreRadiusHydrate() / cavRadius[struccture][cavityType] + * delt(5.0, radius, struccture, cavityType, this)))); + // System.out.println("lenjones " + // +this.getLennardJonesMolecularDiameterHydrate() ); + // System.out.println("pot bef " + pot); + pot = Math.exp(-pot / (phase.getTemperature())) * radius * radius / 1.0e20; + // System.out.println("pot " + pot); + return pot; + } + + /** + *

+ * delt. + *

+ * + * @param n a double + * @param radius a double + * @param struccture a int + * @param cavityType a int + * @param comp a {@link neqsim.thermo.component.ComponentInterface} object + * @return a double + */ + public double delt(double n, double radius, int struccture, int cavityType, + ComponentInterface comp) { + double delt = 1.0 / n + * (Math + .pow(1.0 - radius / cavRadius[struccture][cavityType] + - ((ComponentHydrate) comp).getSphericalCoreRadiusHydrate() + / cavRadius[struccture][cavityType], + -n) + - Math.pow(1.0 + radius / cavRadius[struccture][cavityType] + - ((ComponentHydrate) comp).getSphericalCoreRadiusHydrate() + / cavRadius[struccture][cavityType], + -n)); + + // System.out.println("delt " + delt); + return delt; + } + + /** + *

+ * Getter for the field dGfHydrate. + *

+ * + * @return an array of type double + */ + public double[] getDGfHydrate() { + return dGfHydrate; + } + + /** + *

+ * Setter for the field dGfHydrate. + *

+ * + * @param dGfHydrate an array of type double + */ + public void setDGfHydrate(double[] dGfHydrate) { + this.dGfHydrate = dGfHydrate; + } + + /** + *

+ * Setter for the field dGfHydrate. + *

+ * + * @param dGfHydrate a double + * @param i a int + */ + public void setDGfHydrate(double dGfHydrate, int i) { + this.dGfHydrate[i] = dGfHydrate; + } + + /** + *

+ * Getter for the field dHfHydrate. + *

+ * + * @return an array of type double + */ + public double[] getDHfHydrate() { + return dHfHydrate; + } + + /** + *

+ * Setter for the field dHfHydrate. + *

+ * + * @param dHfHydrate a double + * @param i a int + */ + public void setDHfHydrate(double dHfHydrate, int i) { + this.dHfHydrate[i] = dHfHydrate; + } + + /** + *

+ * Setter for the field dHfHydrate. + *

+ * + * @param dHfHydrate an array of type double + */ + public void setDHfHydrate(double[] dHfHydrate) { + this.dHfHydrate = dHfHydrate; + } + + /** + *

+ * getMolarVolumeHydrate. + *

+ * + * @param structure a int + * @param temperature a double + * @return a double + */ + public double getMolarVolumeHydrate(int structure, double temperature) { + // taken from chem.eng.sci Avlonitis 1994 + double TO = 273.15; + if (structure == 0) { + double v0 = 22.35; + double k1 = 3.1075e-4; + double k2 = 5.9537e-7; + double k3 = 1.3707e-10; + return v0 * (1.0 + k1 * (temperature - TO) + k2 * Math.pow(temperature - TO, 2.0) + + k3 * Math.pow(temperature - TO, 3.0)) / 1.0e6; + } else if (structure == 1) { + double v0 = 22.57; + double k1 = 1.9335e-4; + double k2 = 2.1768e-7; + double k3 = -1.4786e-10; + return v0 * (1.0 + k1 * (temperature - TO) + k2 * Math.pow(temperature - TO, 2.0) + + k3 * Math.pow(temperature - TO, 3.0)) / 1.0e6; + } else if (structure == -1) { + double v0 = 19.6522; + double k1 = 1.6070e-4; + double k2 = 3.4619e-7; + double k3 = -1.4786e-10; + return v0 * (1.0 + k1 * (temperature - TO) + k2 * Math.pow(temperature - TO, 2.0) + + k3 * Math.pow(temperature - TO, 3.0)) / 1.0e6; + } else { + return 0.0; + } + } + + /** + *

+ * Getter for the field sphericalCoreRadiusHydrate. + *

+ * + * @return a double + */ + public double getSphericalCoreRadiusHydrate() { + return sphericalCoreRadiusHydrate; + } + + /** + *

+ * Setter for the field sphericalCoreRadiusHydrate. + *

+ * + * @param sphericalCoreRadiusHydrate a double + */ + public void setSphericalCoreRadiusHydrate(double sphericalCoreRadiusHydrate) { + this.sphericalCoreRadiusHydrate = sphericalCoreRadiusHydrate; + } + + /** + *

+ * Getter for the field lennardJonesEnergyParameterHydrate. + *

+ * + * @return a double + */ + public double getLennardJonesEnergyParameterHydrate() { + return lennardJonesEnergyParameterHydrate; + } + + /** + *

+ * Setter for the field lennardJonesEnergyParameterHydrate. + *

+ * + * @param lennardJonesEnergyParameterHydrate a double + */ + public void setLennardJonesEnergyParameterHydrate(double lennardJonesEnergyParameterHydrate) { + this.lennardJonesEnergyParameterHydrate = lennardJonesEnergyParameterHydrate; + } + + /** + *

+ * Getter for the field lennardJonesMolecularDiameterHydrate. + *

+ * + * @return a double + */ + public double getLennardJonesMolecularDiameterHydrate() { + return lennardJonesMolecularDiameterHydrate; + } + + /** + *

+ * Setter for the field lennardJonesMolecularDiameterHydrate. + *

+ * + * @param lennardJonesMolecularDiameterHydrate a double + */ + public void setLennardJonesMolecularDiameterHydrate(double lennardJonesMolecularDiameterHydrate) { + this.lennardJonesMolecularDiameterHydrate = lennardJonesMolecularDiameterHydrate; + } + + /** + *

+ * setSolidRefFluidPhase. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void setSolidRefFluidPhase(PhaseInterface phase) { + try { + refPhase = phase.getClass().getDeclaredConstructor().newInstance(); + refPhase.setTemperature(273.0); + refPhase.setPressure(1.0); + refPhase.addComponent("water", 10.0, 10.0, 0); + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 0, PhaseType.byValue(1), 1.0); + } catch (Exception ex) { + logger.error("error occured", ex); + } + } + // public double dfugdt(PhaseInterface phase, int numberOfComps, double temp, + // double pres){ + // if(componentName.equals("water")){ + // double solvol = + // 1.0/getPureComponentSolidDensity(getMeltingPointTemperature())*molarMass; + // dfugdt = + // Math.log((getEmptyHydrateStructureVapourPressuredT(hydrateStructure,temp))/pres); + // } else dfugdt=0; + // return dfugdt; + // } + + // public double getEmptyHydrateStructureVapourPressure2(int type, double + // temperature){ + // double par1_struc1=4.6477; + // double par2_struc1=-5242.979; + // double par3_struc1=2.7789; + // double par4_struc1=-8.7156e-3; + // if(type==0){ + // return + // Math.exp(par1_struc1*Math.log(temperature)+par2_struc1/temperature+par3_struc1+par4_struc1*temperature)/1.0e5; + // } + // if(type==1){ + // return + // Math.exp(par1_struc2+par2_struc2/temperature)*ThermodynamicConstantsInterface.referencePressure; + // } else return 0.0; + // } + + // public double getEmptyHydrateStructureVapourPressure(int type, double + // temperature){ + // if(type==0){ + // return + // Math.exp(par1_struc1+par2_struc1/temperature)*ThermodynamicConstantsInterface.referencePressure; + // } + // if(type==1){ + // return + // Math.exp(par1_struc2+par2_struc2/temperature)*ThermodynamicConstantsInterface.referencePressure; + // } else return 0.0; + // } + + // public double getEmptyHydrateStructureVapourPressuredT(int type, double + // temperature){ + // if(type==0){ + // return + // -par2_struc1/(temperature*temperature)*Math.exp(par1_struc1+par2_struc1/temperature); + // } + // if(type==1){ + // return + // -par2_struc2/(temperature*temperature)*Math.exp(par1_struc2+par2_struc2/temperature); + // } else return 0.0; + // } + + /** + *

+ * Getter for the field cavprwat. + *

+ * + * @param structure a int + * @param cavityType a int + * @return the cavprwat + */ + public double getCavprwat(int structure, int cavityType) { + return getCavprwat()[structure][cavityType]; + } + + /** + *

+ * Getter for the field cavprwat. + *

+ * + * @return an array of type double + */ + public double[][] getCavprwat() { + return cavprwat; + } } - diff --git a/src/main/java/neqsim/thermo/component/ComponentHydrateBallard.java b/src/main/java/neqsim/thermo/component/ComponentHydrateBallard.java index 0d2fb12212..ccf6890e5d 100644 --- a/src/main/java/neqsim/thermo/component/ComponentHydrateBallard.java +++ b/src/main/java/neqsim/thermo/component/ComponentHydrateBallard.java @@ -3,6 +3,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -13,204 +14,196 @@ * @version $Id: $Id */ public class ComponentHydrateBallard extends ComponentHydrate { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(ComponentHydrateBallard.class); - - /** - *

- * Constructor for ComponentHydrateBallard. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentHydrateBallard(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - coordNumb[0][0] = 20.0; - coordNumb[0][1] = 24.0; - cavRadius[0][0] = 3.908; - cavRadius[0][1] = 4.326; - cavNumb[0][0] = 2.0; - cavNumb[0][1] = 6.0; - cavprwat[0][0] = 1.0 / 23.0; - cavprwat[0][1] = 3.0 / 23.0; - - coordNumb[1][0] = 20.0; - coordNumb[1][1] = 28.0; - cavRadius[1][0] = 3.902; - cavRadius[1][1] = 4.683; - cavNumb[1][0] = 16.0; - cavNumb[1][1] = 8.0; - cavprwat[1][0] = 2.0 / 17.0; - cavprwat[1][1] = 1.0 / 17.0; - } - - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - return fugcoef(phase, phase.getNumberOfComponents(), phase.getTemperature(), - phase.getPressure()); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentHydrateBallard.class); + + /** + *

+ * Constructor for ComponentHydrateBallard. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentHydrateBallard(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + coordNumb[0][0] = 20.0; + coordNumb[0][1] = 24.0; + cavRadius[0][0] = 3.908; + cavRadius[0][1] = 4.326; + cavNumb[0][0] = 2.0; + cavNumb[0][1] = 6.0; + cavprwat[0][0] = 1.0 / 23.0; + cavprwat[0][1] = 3.0 / 23.0; + + coordNumb[1][0] = 20.0; + coordNumb[1][1] = 28.0; + cavRadius[1][0] = 3.902; + cavRadius[1][1] = 4.683; + cavNumb[1][0] = 16.0; + cavNumb[1][1] = 8.0; + cavprwat[1][0] = 2.0 / 17.0; + cavprwat[1][1] = 1.0 / 17.0; + } + + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { + if (componentName.equals("water")) { + refPhase.setTemperature(temp); + refPhase.setPressure(pres); + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 3, PhaseType.byValue(0), 1.0); + double refWaterFugacity = refPhase.getComponent("water").fugcoef(refPhase) * pres; + double alphaWater = reffug[getComponentNumber()]; + double wateralphaRef = Math.log(refWaterFugacity / alphaWater); + + fugacityCoefficient = -1e50; + double val = 0.0; + double tempy = 1.0; + + for (int cavType = 0; cavType < 2; cavType++) { + tempy = 0.0; + for (int j = 0; j < phase.getNumberOfComponents(); j++) { + double tee = + ((ComponentHydrate) phase.getComponent(j)).calcYKI(hydrateStructure, cavType, phase); + tempy += tee; + } + val += getCavprwat()[hydrateStructure][cavType] * Math.log(1.0 - tempy); + } + logger.info("val " + val + " wateralphaRef " + wateralphaRef + + " calcChemPotEmpty(phase, numberOfComps, temp, pres, hydrateStructure) " + + calcChemPotEmpty(phase, numberOfComps, temp, pres, hydrateStructure) + " " + + calcChemPotIdealWater(phase, numberOfComps, temp, pres, hydrateStructure)); + fugacityCoefficient = + alphaWater + * Math.exp(wateralphaRef + val + + calcChemPotEmpty(phase, numberOfComps, temp, pres, hydrateStructure) + - calcChemPotIdealWater(phase, numberOfComps, temp, pres, hydrateStructure)) + / (pres); + // System.out.println("fugcoef " + tempfugcoef + "structure " + + // (hydrateStruct+1)); + + logger.info("structure " + (hydrateStructure + 1)); + } else { + fugacityCoefficient = 1e50; } - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { - if (componentName.equals("water")) { - refPhase.setTemperature(temp); - refPhase.setPressure(pres); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 3, 0, 1.0); - double refWaterFugacity = refPhase.getComponent("water").fugcoef(refPhase) * pres; - double alphaWater = reffug[getComponentNumber()]; - double wateralphaRef = Math.log(refWaterFugacity / alphaWater); - - fugacityCoefficient = -1e50; - double val = 0.0; - double tempy = 1.0; - - for (int cavType = 0; cavType < 2; cavType++) { - tempy = 0.0; - for (int j = 0; j < phase.getNumberOfComponents(); j++) { - double tee = ((ComponentHydrate) phase.getComponent(j)) - .calcYKI(hydrateStructure, cavType, phase); - tempy += tee; - } - val += getCavprwat()[hydrateStructure][cavType] * Math.log(1.0 - tempy); - } - logger.info("val " + val + " wateralphaRef " + wateralphaRef - + " calcChemPotEmpty(phase, numberOfComps, temp, pres, hydrateStructure) " - + calcChemPotEmpty(phase, numberOfComps, temp, pres, hydrateStructure) + " " - + calcChemPotIdealWater(phase, numberOfComps, temp, pres, hydrateStructure)); - fugacityCoefficient = alphaWater * Math.exp(wateralphaRef + val - + calcChemPotEmpty(phase, numberOfComps, temp, pres, hydrateStructure) - - calcChemPotIdealWater(phase, numberOfComps, temp, pres, hydrateStructure)) - / (pres); - // System.out.println("fugcoef " + tempfugcoef + "structure " + - // (hydrateStruct+1)); - - logger.info("structure " + (hydrateStructure + 1)); - } else { - fugacityCoefficient = 1e50; - } - logFugacityCoefficient = Math.log(fugacityCoefficient); + return fugacityCoefficient; + } - return fugacityCoefficient; + /** {@inheritDoc} */ + @Override + public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { + if (componentName.equals("water")) { + return 0.0; + } + double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber] * 1.0e5; + double temp = 1.0; + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + if (phase.getComponent(i).isHydrateFormer()) { + temp += ((ComponentHydrate) phase.getComponent(i)).calcCKI(stucture, cavityType, phase) + * 1.0e5 * reffug[i]; + } + // System.out.println("yk2 "+ + // ((ComponentHydrateBallard)phase.getComponent(i)).calcCKI(stucture, + // cavityType, phase)*reffug[i]); + // System.out.println("CYJI" +yki + " ref fug " +(1.0e5*reffug[i])); } - /** {@inheritDoc} */ - @Override - public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { - if (componentName.equals("water")) { - return 0.0; - } - double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber] * 1.0e5; - double temp = 1.0; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - if (phase.getComponent(i).isHydrateFormer()) { - temp += ((ComponentHydrate) phase.getComponent(i)).calcCKI(stucture, cavityType, - phase) * 1.0e5 * reffug[i]; - } - // System.out.println("yk2 "+ - // ((ComponentHydrateBallard)phase.getComponent(i)).calcCKI(stucture, - // cavityType, phase)*reffug[i]); - // System.out.println("CYJI" +yki + " ref fug " +(1.0e5*reffug[i])); - } + return yki / temp; + // } + // else return 0.0; + } - return yki / temp; - // } - // else return 0.0; + /** {@inheritDoc} */ + @Override + public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { + if (componentName.equals("water")) { + return 0.0; } - - /** {@inheritDoc} */ - @Override - public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { - if (componentName.equals("water")) { - return 0.0; - } - double cki = 4.0 * pi / (phase.getTemperature() * R) - * potIntegral(stucture, cavityType, phase) * avagadroNumber; - // System.out.println("cki " + cki + " " + componentName); - return cki / 1.0e30; + double cki = 4.0 * pi / (phase.getTemperature() * R) * potIntegral(stucture, cavityType, phase) + * avagadroNumber; + // System.out.println("cki " + cki + " " + componentName); + return cki / 1.0e30; + } + + /** {@inheritDoc} */ + @Override + public double potIntegral(int stucture, int cavityType, PhaseInterface phase) { + double val = 0.0; + double endval = cavRadius[stucture][cavityType] - getSphericalCoreRadius(); + double x = 0.0; + double step = endval / 100.0; + x = step; + for (int i = 1; i < 100; i++) { + val += step * ((getPot(x, stucture, cavityType, phase) + + 4.0 * getPot((x + 0.5 * step), stucture, cavityType, phase) + + getPot(x + step, stucture, cavityType, phase)) / 6.0); + x = i * step; + // System.out.println("step " + i + " " + + // (step*getPot(x,stucture,cavityType,phase))); } - - /** {@inheritDoc} */ - @Override - public double potIntegral(int stucture, int cavityType, PhaseInterface phase) { - double val = 0.0; - double endval = cavRadius[stucture][cavityType] - getSphericalCoreRadius(); - double x = 0.0, step = endval / 100.0; - x = step; - for (int i = 1; i < 100; i++) { - val += step * ((getPot(x, stucture, cavityType, phase) - + 4.0 * getPot((x + 0.5 * step), stucture, cavityType, phase) - + getPot(x + step, stucture, cavityType, phase)) / 6.0); - x = i * step; - // System.out.println("step " + i + " " + - // (step*getPot(x,stucture,cavityType,phase))); - } - // System.out.println("integral " + val); - if (Double.isNaN(val)) { - logger.error("val NaN ..."); - } - if (Double.isInfinite(val)) { - logger.error("val Infinite ..."); - } - return val; + // System.out.println("integral " + val); + if (Double.isNaN(val)) { + logger.error("val NaN ..."); } - - /** {@inheritDoc} */ - @Override - public double getPot(double radius, int struccture, int cavityType, PhaseInterface phase) { - double pot = 2.0 * coordNumb[struccture][cavityType] * this.getLennardJonesEnergyParameter() - * ((Math.pow(this.getLennardJonesMolecularDiameter(), 12.0) - / (Math.pow(cavRadius[struccture][cavityType], 11.0) * radius) - * (delt(10.0, radius, struccture, cavityType) - + getSphericalCoreRadius() / cavRadius[struccture][cavityType] - * delt(11.0, radius, struccture, cavityType))) - - (Math.pow(this.getLennardJonesMolecularDiameter(), 6.0) - / (Math.pow(cavRadius[struccture][cavityType], 5.0) * radius) - * (delt(4.0, radius, struccture, cavityType) - + getSphericalCoreRadius() - / cavRadius[struccture][cavityType] - * delt(5.0, radius, struccture, cavityType)))); - - pot = Math.exp(-pot / (phase.getTemperature())) * radius * radius; - - if (Double.isNaN(pot)) { - logger.error("pot NaN ..."); - } - if (Double.isInfinite(pot)) { - logger.error("pot Infinite ..."); - } - return pot; + if (Double.isInfinite(val)) { + logger.error("val Infinite ..."); } - - /** - *

- * delt. - *

- * - * @param n a double - * @param radius a double - * @param struccture a int - * @param cavityType a int - * @return a double - */ - public double delt(double n, double radius, int struccture, int cavityType) { - double diff1 = (radius + getSphericalCoreRadius()) / cavRadius[struccture][cavityType]; - double diff2 = (radius - getSphericalCoreRadius()) / cavRadius[struccture][cavityType]; - double delt = 1.0 / n * (Math.pow(1.0 - diff1, -n) - Math.pow(1.0 + diff2, -n)); - // System.out.println("diff1 " + diff1); - // System.out.println("diff2 " + diff2); - // System.out.println("delt " + delt); - if (Double.isNaN(delt)) { - logger.error("delt NaN ..."); - } - if (Double.isInfinite(delt)) { - logger.error("delt Infinite ..."); - } - return delt; + return val; + } + + /** {@inheritDoc} */ + @Override + public double getPot(double radius, int struccture, int cavityType, PhaseInterface phase) { + double pot = 2.0 * coordNumb[struccture][cavityType] * this.getLennardJonesEnergyParameter() + * ((Math.pow(this.getLennardJonesMolecularDiameter(), 12.0) + / (Math.pow(cavRadius[struccture][cavityType], 11.0) * radius) + * (delt(10.0, radius, struccture, cavityType) + getSphericalCoreRadius() + / cavRadius[struccture][cavityType] * delt(11.0, radius, struccture, cavityType))) + - (Math.pow(this.getLennardJonesMolecularDiameter(), 6.0) + / (Math.pow(cavRadius[struccture][cavityType], 5.0) * radius) + * (delt(4.0, radius, struccture, cavityType) + + getSphericalCoreRadius() / cavRadius[struccture][cavityType] + * delt(5.0, radius, struccture, cavityType)))); + + pot = Math.exp(-pot / (phase.getTemperature())) * radius * radius; + + if (Double.isNaN(pot)) { + logger.error("pot NaN ..."); + } + if (Double.isInfinite(pot)) { + logger.error("pot Infinite ..."); + } + return pot; + } + + /** + *

+ * delt. + *

+ * + * @param n a double + * @param radius a double + * @param struccture a int + * @param cavityType a int + * @return a double + */ + public double delt(double n, double radius, int struccture, int cavityType) { + double diff1 = (radius + getSphericalCoreRadius()) / cavRadius[struccture][cavityType]; + double diff2 = (radius - getSphericalCoreRadius()) / cavRadius[struccture][cavityType]; + double delt = 1.0 / n * (Math.pow(1.0 - diff1, -n) - Math.pow(1.0 + diff2, -n)); + // System.out.println("diff1 " + diff1); + // System.out.println("diff2 " + diff2); + // System.out.println("delt " + delt); + if (Double.isNaN(delt)) { + logger.error("delt NaN ..."); + } + if (Double.isInfinite(delt)) { + logger.error("delt Infinite ..."); } + return delt; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentHydrateGF.java b/src/main/java/neqsim/thermo/component/ComponentHydrateGF.java index f4cf5d003b..51732ea42b 100644 --- a/src/main/java/neqsim/thermo/component/ComponentHydrateGF.java +++ b/src/main/java/neqsim/thermo/component/ComponentHydrateGF.java @@ -3,6 +3,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -13,272 +14,251 @@ * @version $Id: $Id */ public class ComponentHydrateGF extends ComponentHydrate { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentHydrateGF.class); - double Ak[][] = new double[2][2]; // [structure][cavitytype] - double Bk[][] = new double[2][2]; // [structure][cavitytype] - static Logger logger = LogManager.getLogger(ComponentHydrateGF.class); + double[][] Ak = new double[2][2]; // [structure][cavitytype] + double[][] Bk = new double[2][2]; // [structure][cavitytype] - /** - *

- * Constructor for ComponentHydrateGF. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentHydrateGF(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + /** + *

+ * Constructor for ComponentHydrateGF. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentHydrateGF(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - if (!component_name.equals("default")) { - try { - // System.out.println("reading GF hydrate parameters .............."); - try { - dataSet = database.getResultSet( - ("SELECT * FROM comp WHERE name='" + component_name + "'")); - dataSet.next(); - dataSet.getString("ID"); - } catch (Exception e) { - logger.info("no parameters in tempcomp -- trying comp.. " + component_name); - dataSet = database.getResultSet( - ("SELECT * FROM comp WHERE name='" + component_name + "'")); - dataSet.next(); - } - Ak[0][0] = Double.parseDouble(dataSet.getString("A1_SmallGF")); - Bk[0][0] = Double.parseDouble(dataSet.getString("B1_SmallGF")); - Ak[0][1] = Double.parseDouble(dataSet.getString("A1_LargeGF")); - Bk[0][1] = Double.parseDouble(dataSet.getString("B1_LargeGF")); + java.sql.ResultSet dataSet = null; + if (!name.equals("default")) { + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { + // System.out.println("reading GF hydrate parameters .............."); + try { + dataSet = database.getResultSet(("SELECT * FROM comp WHERE name='" + name + "'")); + dataSet.next(); + dataSet.getString("ID"); + } catch (Exception ex) { + logger.info("no parameters in tempcomp -- trying comp.. " + name); + dataSet.close(); + dataSet = database.getResultSet(("SELECT * FROM comp WHERE name='" + name + "'")); + dataSet.next(); + } + Ak[0][0] = Double.parseDouble(dataSet.getString("A1_SmallGF")); + Bk[0][0] = Double.parseDouble(dataSet.getString("B1_SmallGF")); + Ak[0][1] = Double.parseDouble(dataSet.getString("A1_LargeGF")); + Bk[0][1] = Double.parseDouble(dataSet.getString("B1_LargeGF")); - Ak[1][0] = Double.parseDouble(dataSet.getString("A2_SmallGF")); - Bk[1][0] = Double.parseDouble(dataSet.getString("B2_SmallGF")); - Ak[1][1] = Double.parseDouble(dataSet.getString("A2_LargeGF")); - Bk[1][1] = Double.parseDouble(dataSet.getString("B2_LargeGF")); - dataSet.close(); - } catch (Exception e) { - logger.error("error in ComponentHydrateGF", e); - } finally { - try { - dataSet.close(); - database.getConnection().close(); - } catch (Exception e) { - logger.error("error closing database....."); - // e.printStackTrace(); - } - } + Ak[1][0] = Double.parseDouble(dataSet.getString("A2_SmallGF")); + Bk[1][0] = Double.parseDouble(dataSet.getString("B2_SmallGF")); + Ak[1][1] = Double.parseDouble(dataSet.getString("A2_LargeGF")); + Bk[1][1] = Double.parseDouble(dataSet.getString("B2_LargeGF")); + dataSet.close(); + } catch (Exception ex) { + logger.error("error in ComponentHydrateGF", ex); + } finally { + try { + dataSet.close(); + } catch (Exception ex) { + logger.error("error closing database.....", ex); } + } } + } - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - return fugcoef(phase, phase.getNumberOfComponents(), phase.getTemperature(), - phase.getPressure()); - } + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { + double maxFug = 1.0e100; + int stableStructure = 0; + if (hydrateStructure == -1) { + stableStructure = -1; + // fugacityCoefficient = 1.02 * + // getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) * + // Math.exp(getMolarVolumeHydrate(hydrateStructure, temp) / (R * temp) * (pres - + // getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5) / + // pres; - /** - *

- * fugcoef2. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComps a int - * @param temp a double - * @param pres a double - * @return a double - */ - public double fugcoef2(PhaseInterface phase, int numberOfComps, double temp, double pres) { - // this is empty hydrate latice fugacity coefficient equation 8.9 - if (componentName.equals("water")) { - // this is the empty hydrate fugacity devited by pressure (why??) - double solvol = getMolarVolumeHydrate(hydrateStructure, temp); - if (hydrateStructure == -1) { - fugacityCoefficient = getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) - * Math.exp(solvol / (R * temp) * (pres - - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) - * 1e5) - / pres; - } else { - double val = 0.0; - double tempy = 1.0; + refPhase.setTemperature(temp); + refPhase.setPressure(pres); + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 3, PhaseType.byValue(0), 1.0); + double refWaterFugacityCoef = Math.log(refPhase.getComponent("water").fugcoef(refPhase)); - for (int cavType = 0; cavType < 2; cavType++) { - tempy = 0.0; - for (int j = 0; j < phase.getNumberOfComponents(); j++) { - double tee = ((ComponentHydrate) phase.getComponent(j)) - .calcYKI(hydrateStructure, cavType, phase); - tempy += tee; - } - val += getCavprwat()[hydrateStructure][cavType] * Math.log(1.0 - tempy); - } - // System.out.println("val " + Math.exp(val)); - /* - * System.out.println("fugacity " + - * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) * Math.exp(solvol - * / (R * temp) * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, - * temp)) * 1e5) / pres)); System.out.println("temperature " + temp); - * System.out.println("pressure " + pres); System.out.println("vapor pressure " + - * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp))); - * System.out.println("fugacity folas " + - * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) * Math.exp(solvol - * / (R * temp) * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, - * temp)) * 1e5))); - */ + double dhf = 6010.0; - // System.out.println("pointing " - // +(Math.exp(solvol/(R*temp)*((pres-getEmptyHydrateStructureVapourPressure(hydrateStruct,temp))*1e5)))); - fugacityCoefficient = Math.exp(val) - * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) - * Math.exp(solvol / (R * temp) * (pres - - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) - * 1e5) - / pres; - // System.out.println("fugcoef " + tempfugcoef + "structure " + - // (hydrateStruct+1)); + double tmi = 273.15; + double dcp = 37.29; + double LNFUG_ICEREF = refWaterFugacityCoef - (dhf / (R * tmi)) * (tmi / temp - 1.0) + + (dcp / R) * ((tmi / temp) - 1.0 - Math.log(tmi / temp)); + double VM = 0.0; + double K1 = 1.6070E-4; + double K2 = 3.4619E-7; + double K3 = -0.2637E-10; + VM = 1E-6 * 19.6522 * (1 + K1 * (temp - tmi) + K2 * Math.pow((temp - tmi), 2) + + K3 * Math.pow((temp - tmi), 3)); - // System.out.println("structure " + (hydrateStructure+1)); - } - } else { - fugacityCoefficient = 1e50; - } + double LNFUG_ICE = LNFUG_ICEREF + (VM * 100000 * (pres - 1.0) / (R * temp)); + fugacityCoefficient = Math.exp(LNFUG_ICE); + } else { + for (int structure = 0; structure < 2; structure++) { + hydrateStructure = structure; + if (componentName.equals("water")) { + // this is the empty hydrate fugacity devited by pressure (why??) + double solvol = getMolarVolumeHydrate(hydrateStructure, temp); - logFugacityCoefficient = Math.log(fugacityCoefficient); + double val = 0.0; + double tempy = 1.0; - // System.out.println("reading fugacity coeffiicent calculation"); + for (int cavType = 0; cavType < 2; cavType++) { + tempy = 0.0; + for (int j = 0; j < phase.getNumberOfComponents(); j++) { + double tee = ((ComponentHydrate) phase.getComponent(j)).calcYKI(hydrateStructure, + cavType, phase); + tempy += tee; + } + val += getCavprwat()[hydrateStructure][cavType] * Math.log(1.0 - tempy); + } + // System.out.println("val " + Math.exp(val)); + /* + * System.out.println("fugacity " + + * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) * Math.exp(solvol / (R + * * temp) * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * + * 1e5) / pres)); System.out.println("temperature " + temp); + * System.out.println("pressure " + pres); System.out.println("vapor pressure " + + * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp))); + * System.out.println("fugacity folas " + + * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) * Math.exp(solvol / (R + * * temp) * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * + * 1e5))); + */ + // System.out.println("pointing " + // +(Math.exp(solvol/(R*temp)*((pres-getEmptyHydrateStructureVapourPressure(hydrateStruct,temp))*1e5)))); + fugacityCoefficient = Math.exp(val) + * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) + * Math.exp(solvol / (R * temp) + * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5) + / pres; + // System.out.println("fugcoef " + tempfugcoef + "structure " + + // (hydrateStruct+1)); - return fugacityCoefficient; + // System.out.println("structure " + (hydrateStructure+1)); + if (fugacityCoefficient < maxFug) { + maxFug = fugacityCoefficient; + stableStructure = hydrateStructure; + } + } else { + fugacityCoefficient = 1e50; + } + } + fugacityCoefficient = maxFug; } + hydrateStructure = stableStructure; + return fugacityCoefficient; + } - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { - double maxFug = 1.0e100; - int stableStructure = 0; - if (hydrateStructure == -1) { - stableStructure = -1; - // fugacityCoefficient = 1.02 * - // getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) * - // Math.exp(getMolarVolumeHydrate(hydrateStructure, temp) / (R * temp) * (pres - - // getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5) / - // pres; - - refPhase.setTemperature(temp); - refPhase.setPressure(pres); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 3, 0, 1.0); - double refWaterFugacityCoef = - Math.log(refPhase.getComponent("water").fugcoef(refPhase)); - - double dhf = 6010.0, tmi = 273.15, dcp = 37.29; - - double LNFUG_ICEREF = refWaterFugacityCoef - (dhf / (R * tmi)) * (tmi / temp - 1.0) - + (dcp / R) * ((tmi / temp) - 1.0 - Math.log(tmi / temp)); - double VM = 0.0; - double K1 = 1.6070E-4; - double K2 = 3.4619E-7; - double K3 = -0.2637E-10; - VM = 1E-6 * 19.6522 * (1 + K1 * (temp - tmi) + K2 * Math.pow((temp - tmi), 2) - + K3 * Math.pow((temp - tmi), 3)); + /** + *

+ * fugcoef2. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComps a int + * @param temp a double + * @param pres a double + * @return a double + */ + public double fugcoef2(PhaseInterface phase, int numberOfComps, double temp, double pres) { + // this is empty hydrate latice fugacity coefficient equation 8.9 + if (componentName.equals("water")) { + // this is the empty hydrate fugacity devited by pressure (why??) + double solvol = getMolarVolumeHydrate(hydrateStructure, temp); + if (hydrateStructure == -1) { + fugacityCoefficient = getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) + * Math.exp(solvol / (R * temp) + * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5) + / pres; + } else { + double val = 0.0; + double tempy = 1.0; - double LNFUG_ICE = LNFUG_ICEREF + (VM * 100000 * (pres - 1.0) / (R * temp)); - fugacityCoefficient = Math.exp(LNFUG_ICE); - } else { - for (int structure = 0; structure < 2; structure++) { - hydrateStructure = structure; - if (componentName.equals("water")) { - // this is the empty hydrate fugacity devited by pressure (why??) - double solvol = getMolarVolumeHydrate(hydrateStructure, temp); - - double val = 0.0; - double tempy = 1.0; + for (int cavType = 0; cavType < 2; cavType++) { + tempy = 0.0; + for (int j = 0; j < phase.getNumberOfComponents(); j++) { + double tee = ((ComponentHydrate) phase.getComponent(j)).calcYKI(hydrateStructure, + cavType, phase); + tempy += tee; + } + val += getCavprwat()[hydrateStructure][cavType] * Math.log(1.0 - tempy); + } + // System.out.println("val " + Math.exp(val)); + /* + * System.out.println("fugacity " + + * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) * Math.exp(solvol / (R * + * temp) * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5) / + * pres)); System.out.println("temperature " + temp); System.out.println("pressure " + + * pres); System.out.println("vapor pressure " + + * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp))); + * System.out.println("fugacity folas " + + * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) * Math.exp(solvol / (R * + * temp) * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5))); + */ - for (int cavType = 0; cavType < 2; cavType++) { - tempy = 0.0; - for (int j = 0; j < phase.getNumberOfComponents(); j++) { - double tee = ((ComponentHydrate) phase.getComponent(j)) - .calcYKI(hydrateStructure, cavType, phase); - tempy += tee; - } - val += getCavprwat()[hydrateStructure][cavType] * Math.log(1.0 - tempy); - } - // System.out.println("val " + Math.exp(val)); - /* - * System.out.println("fugacity " + - * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) * - * Math.exp(solvol / (R * temp) * (pres - - * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5) / - * pres)); System.out.println("temperature " + temp); - * System.out.println("pressure " + pres); System.out.println("vapor pressure " - * + (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp))); - * System.out.println("fugacity folas " + - * (getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) * - * Math.exp(solvol / (R * temp) * (pres - - * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5))); - * - */ - // System.out.println("pointing " - // +(Math.exp(solvol/(R*temp)*((pres-getEmptyHydrateStructureVapourPressure(hydrateStruct,temp))*1e5)))); - fugacityCoefficient = Math.exp(val) - * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) - * Math.exp(solvol / (R * temp) - * (pres - getEmptyHydrateStructureVapourPressure( - hydrateStructure, temp)) - * 1e5) - / pres; - // System.out.println("fugcoef " + tempfugcoef + "structure " + - // (hydrateStruct+1)); + // System.out.println("pointing " + // +(Math.exp(solvol/(R*temp)*((pres-getEmptyHydrateStructureVapourPressure(hydrateStruct,temp))*1e5)))); + fugacityCoefficient = + Math.exp(val) * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) + * Math.exp(solvol / (R * temp) + * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5) + / pres; + // System.out.println("fugcoef " + tempfugcoef + "structure " + + // (hydrateStruct+1)); - // System.out.println("structure " + (hydrateStructure+1)); - if (fugacityCoefficient < maxFug) { - maxFug = fugacityCoefficient; - stableStructure = hydrateStructure; - } - } else { - fugacityCoefficient = 1e50; - } - } - fugacityCoefficient = maxFug; - } - logFugacityCoefficient = Math.log(fugacityCoefficient); - hydrateStructure = stableStructure; - return fugacityCoefficient; + // System.out.println("structure " + (hydrateStructure+1)); + } + } else { + fugacityCoefficient = 1e50; } - /** {@inheritDoc} */ - @Override - public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { - if (componentName.equals("water")) { - return 0.0; - } - double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber]; - // * 1.0e5; - double temp = 1.0; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - if (phase.getComponent(i).isHydrateFormer()) { - temp += ((ComponentHydrate) phase.getComponent(i)).calcCKI(stucture, cavityType, - phase) * reffug[i]; - } + // System.out.println("reading fugacity coefficient calculation"); + return fugacityCoefficient; + } - // System.out.println("yk2 "+ - // ((ComponentHydrateBallard)phase.getComponent(i)).calcCKI(stucture, - // cavityType, phase)*reffug[i]); - // System.out.println("CYJI" +yki + " ref fug " +(1.0e5*reffug[i])); - } + /** {@inheritDoc} */ + @Override + public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { + if (componentName.equals("water")) { + return 0.0; + } + double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber]; + // * 1.0e5; + double temp = 1.0; + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + if (phase.getComponent(i).isHydrateFormer()) { + temp += ((ComponentHydrate) phase.getComponent(i)).calcCKI(stucture, cavityType, phase) + * reffug[i]; + } - return yki / temp; + // System.out.println("yk2 "+ + // ((ComponentHydrateBallard)phase.getComponent(i)).calcCKI(stucture, + // cavityType, phase)*reffug[i]); + // System.out.println("CYJI" +yki + " ref fug " +(1.0e5*reffug[i])); } - /** {@inheritDoc} */ - @Override - public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { - // this is equation 8.8 - if (componentName.equals("water")) { - return 0.0; - } - return Ak[stucture][cavityType] / (phase.getTemperature()) - * Math.exp(Bk[stucture][cavityType] / (phase.getTemperature())); + return yki / temp; + } + + /** {@inheritDoc} */ + @Override + public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { + // this is equation 8.8 + if (componentName.equals("water")) { + return 0.0; } + return Ak[stucture][cavityType] / (phase.getTemperature()) + * Math.exp(Bk[stucture][cavityType] / (phase.getTemperature())); + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentHydrateKluda.java b/src/main/java/neqsim/thermo/component/ComponentHydrateKluda.java index 5df4c67094..be9c652bd1 100644 --- a/src/main/java/neqsim/thermo/component/ComponentHydrateKluda.java +++ b/src/main/java/neqsim/thermo/component/ComponentHydrateKluda.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.phase.PhaseInterface; /** @@ -13,377 +14,373 @@ * @version $Id: $Id */ public class ComponentHydrateKluda extends Component { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentHydrateKluda.class); - double par1_struc1 = 17.44; - double par2_struc1 = -6003.9; - double par1_struc2 = 17.332; - double par2_struc2 = -6017.6; - int hydrateStructure = 0; - double coordNumb[][][] = new double[3][2][2]; // [structure][cavitytype] - double cavRadius[][][] = new double[3][2][2]; // [structure][cavitytype] - double cavNumb[][] = new double[2][2]; // [structure][cavitytype] - double cavprwat[][] = new double[2][2]; // [structure][cavitytype] - double reffug[] = new double[20]; - static Logger logger = LogManager.getLogger(ComponentHydrateKluda.class); + double par1_struc1 = 17.44; + double par2_struc1 = -6003.9; + double par1_struc2 = 17.332; + double par2_struc2 = -6017.6; + int hydrateStructure = 0; + double[][][] coordNumb = new double[3][2][2]; // [structure][cavitytype] + double[][][] cavRadius = new double[3][2][2]; // [structure][cavitytype] + double[][] cavNumb = new double[2][2]; // [structure][cavitytype] + double[][] cavprwat = new double[2][2]; // [structure][cavitytype] + double[] reffug = new double[20]; - /** - *

- * Constructor for ComponentHydrateKluda. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentHydrateKluda(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - coordNumb[0][0][0] = 20.0; - coordNumb[0][0][1] = 24.0; - cavRadius[0][0][0] = 3.906; - cavRadius[0][0][1] = 4.326; - coordNumb[1][0][0] = 20.0; - coordNumb[1][0][1] = 24.0; - cavRadius[1][0][0] = 6.593; - cavRadius[1][0][1] = 7.078; - coordNumb[2][0][0] = 50.0; - coordNumb[2][0][1] = 50.0; - cavRadius[2][0][0] = 8.086; - cavRadius[2][0][1] = 8.285; - cavNumb[0][0] = 2.0; - cavNumb[0][1] = 6.0; - cavprwat[0][0] = 1.0 / 23.0; - cavprwat[0][1] = 3.0 / 23.0; + /** + *

+ * Constructor for ComponentHydrateKluda. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentHydrateKluda(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + coordNumb[0][0][0] = 20.0; + coordNumb[0][0][1] = 24.0; + cavRadius[0][0][0] = 3.906; + cavRadius[0][0][1] = 4.326; + coordNumb[1][0][0] = 20.0; + coordNumb[1][0][1] = 24.0; + cavRadius[1][0][0] = 6.593; + cavRadius[1][0][1] = 7.078; + coordNumb[2][0][0] = 50.0; + coordNumb[2][0][1] = 50.0; + cavRadius[2][0][0] = 8.086; + cavRadius[2][0][1] = 8.285; + cavNumb[0][0] = 2.0; + cavNumb[0][1] = 6.0; + cavprwat[0][0] = 1.0 / 23.0; + cavprwat[0][1] = 3.0 / 23.0; - coordNumb[0][1][0] = 20.0; - coordNumb[0][1][1] = 28.0; - cavRadius[0][1][0] = 3.902; - cavRadius[0][1][1] = 4.683; - cavNumb[1][0] = 16.0; - cavNumb[1][1] = 8.0; - cavprwat[1][0] = 2.0 / 17.0; - cavprwat[1][1] = 1.0 / 17.0; - } + coordNumb[0][1][0] = 20.0; + coordNumb[0][1][1] = 28.0; + cavRadius[0][1][0] = 3.902; + cavRadius[0][1][1] = 4.683; + cavNumb[1][0] = 16.0; + cavNumb[1][1] = 8.0; + cavprwat[1][0] = 2.0 / 17.0; + cavprwat[1][1] = 1.0 / 17.0; + } - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - return fugcoef(phase, phase.getNumberOfComponents(), phase.getTemperature(), - phase.getPressure()); + /** + *

+ * Calculate, set and return fugacity coefficient. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object to get fugacity coefficient + * of. + * @param numberOfComps a int + * @param temp a double + * @param pres a double + * @return Fugacity coefficient + */ + public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { + if (componentName.equals("water")) { + double val = 1.0; + double tempy = 1.0; + double fugold = 0.0; + do { + val = 0.0; + tempy = 0.0; + fugold = fugacityCoefficient; + for (int cavType = 0; cavType < 2; cavType++) { + tempy = 0.0; + for (int j = 0; j < phase.getNumberOfComponents(); j++) { + // System.out.println(phase.getComponent(j)); + tempy += ((ComponentHydrateKluda) phase.getComponent(j)).calcYKI(hydrateStructure, + cavType, phase); + logger.info("tempny " + tempy); + // System.out.println("temp ny " + this); //phase.getComponent(j)); + } + val += cavprwat[hydrateStructure][cavType] * Math.log(1.0 - tempy); + } + logger.info("val " + (val)); + logger.info("fugacityCoefficient bef " + fugacityCoefficient); + double solvol = 1.0 / 906.0 * getMolarMass(); + fugacityCoefficient = Math.exp(val) + * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) + * Math.exp(solvol / (R * temp) + * ((pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp))) * 1e5) + / pres; + // fugacityCoefficient = getAntoineVaporPressure(temp)/pres; + // fugacityCoefficient = Math.exp(Math.log(fugacityCoefficient) + val*boltzmannConstant/R); + logger.info("fugacityCoefficient " + fugacityCoefficient); + } while (Math.abs((fugacityCoefficient - fugold) / fugold) > 1e-8); + } else { + fugacityCoefficient = 1e5; } - /** - *

- * setStructure. - *

- * - * @param structure a int - */ - public void setStructure(int structure) { - this.hydrateStructure = structure; + // System.out.println("fug " + fugacityCoefficient); + return fugacityCoefficient; + } + + /** + *

+ * dfugdt. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComps a int + * @param temp a double + * @param pres a double + * @return a double + */ + public double dfugdt(PhaseInterface phase, int numberOfComps, double temp, double pres) { + if (componentName.equals("water")) { + // double solvol =1.0 / getPureComponentSolidDensity(getMeltingPointTemperature()) * + // molarMass; + dfugdt = Math.log((getEmptyHydrateStructureVapourPressuredT(hydrateStructure, temp)) / pres); + } else { + dfugdt = 0; } + return dfugdt; + } - /** - *

- * fugcoef. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComps a int - * @param temp a double - * @param pres a double - * @return a double - */ - public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { - if (componentName.equals("water")) { - double val = 1.0; - double tempy = 1.0; - double fugold = 0.0; - do { - val = 0.0; - tempy = 0.0; - fugold = fugacityCoefficient; - for (int cavType = 0; cavType < 2; cavType++) { - tempy = 0.0; - for (int j = 0; j < phase.getNumberOfComponents(); j++) { - // System.out.println(phase.getComponent(j)); - tempy += ((ComponentHydrateKluda) phase.getComponent(j)) - .calcYKI(hydrateStructure, cavType, phase); - logger.info("tempny " + tempy); - // System.out.println("temp ny " + this);//phase.getComponent(j)); - } - val += cavprwat[hydrateStructure][cavType] * Math.log(1.0 - tempy); - } - logger.info("val " + (val)); - logger.info("fugacityCoefficient bef " + fugacityCoefficient); - double solvol = 1.0 / 906.0 * getMolarMass(); - fugacityCoefficient = Math.exp(val) - * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) - * Math.exp(solvol / (R * temp) * ((pres - - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp))) - * 1e5) - / pres; - // fugacityCoefficient = getAntoineVaporPressure(temp)/pres; - // logFugacityCoefficient = Math.log(fugacityCoefficient); - // logFugacityCoefficient += val*boltzmannConstant/R; + /** + *

+ * setStructure. + *

+ * + * @param structure a int + */ + public void setStructure(int structure) { + this.hydrateStructure = structure; + } - // fugacityCoefficient = Math.exp(logFugacityCoefficient); - logger.info("fugacityCoefficient " + fugacityCoefficient); - } while (Math.abs((fugacityCoefficient - fugold) / fugold) > 1e-8); - } else { - fugacityCoefficient = 1e5; - } - // System.out.println("fug " + fugacityCoefficient); - return fugacityCoefficient; + /** + *

+ * getEmptyHydrateStructureVapourPressure. + *

+ * + * @param type a int + * @param temperature a double + * @return a double + */ + public double getEmptyHydrateStructureVapourPressure(int type, double temperature) { + double par1_struc1 = 4.6477; + double par2_struc1 = -5242.979; + double par3_struc1 = 2.7789; + double par4_struc1 = -8.7156e-3; + if (type == 0) { + return Math.exp(par1_struc1 * Math.log(temperature) + par2_struc1 / temperature + par3_struc1 + + par4_struc1 * temperature) / 1.0e5; } - - /** - *

- * dfugdt. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComps a int - * @param temp a double - * @param pres a double - * @return a double - */ - public double dfugdt(PhaseInterface phase, int numberOfComps, double temp, double pres) { - if (componentName.equals("water")) { - // double solvol =1.0 / getPureComponentSolidDensity(getMeltingPointTemperature()) * - // molarMass; - dfugdt = Math - .log((getEmptyHydrateStructureVapourPressuredT(hydrateStructure, temp)) / pres); - } else { - dfugdt = 0; - } - return dfugdt; + if (type == 1) { + return Math.exp(par1_struc2 + par2_struc2 / temperature) + * ThermodynamicConstantsInterface.referencePressure; + } else { + return 0.0; } + } - /** - *

- * getEmptyHydrateStructureVapourPressure. - *

- * - * @param type a int - * @param temperature a double - * @return a double - */ - public double getEmptyHydrateStructureVapourPressure(int type, double temperature) { - double par1_struc1 = 4.6477; - double par2_struc1 = -5242.979; - double par3_struc1 = 2.7789; - double par4_struc1 = -8.7156e-3; - if (type == 0) { - return Math.exp(par1_struc1 * Math.log(temperature) + par2_struc1 / temperature - + par3_struc1 + par4_struc1 * temperature) / 1.0e5; - } - if (type == 1) { - return Math.exp(par1_struc2 + par2_struc2 / temperature) * 1.01325; - } else { - return 0.0; - } + /** + *

+ * getEmptyHydrateStructureVapourPressuredT. + *

+ * + * @param type a int + * @param temperature a double + * @return a double + */ + public double getEmptyHydrateStructureVapourPressuredT(int type, double temperature) { + if (type == 0) { + return -par2_struc1 / (temperature * temperature) + * Math.exp(par1_struc1 + par2_struc1 / temperature); } - - /** - *

- * getEmptyHydrateStructureVapourPressuredT. - *

- * - * @param type a int - * @param temperature a double - * @return a double - */ - public double getEmptyHydrateStructureVapourPressuredT(int type, double temperature) { - if (type == 0) { - return -par2_struc1 / (temperature * temperature) - * Math.exp(par1_struc1 + par2_struc1 / temperature); - } - if (type == 1) { - return -par2_struc2 / (temperature * temperature) - * Math.exp(par1_struc2 + par2_struc2 / temperature); - } else { - return 0.0; - } + if (type == 1) { + return -par2_struc2 / (temperature * temperature) + * Math.exp(par1_struc2 + par2_struc2 / temperature); + } else { + return 0.0; } + } - /** - *

- * calcYKI. - *

- * - * @param stucture a int - * @param cavityType a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { - if (componentName.equals("methane")) { - double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber]; - double temp = 1.0; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - if (phase.getComponent(i).isHydrateFormer()) { - temp += ((ComponentHydrateKluda) phase.getComponent(i)).calcCKI(stucture, - cavityType, phase) * reffug[i]; - } - } - return yki / temp; - } else { - return 0.0; + /** + *

+ * calcYKI. + *

+ * + * @param stucture a int + * @param cavityType a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { + if (componentName.equals("methane")) { + double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber]; + double temp = 1.0; + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + if (phase.getComponent(i).isHydrateFormer()) { + temp += + ((ComponentHydrateKluda) phase.getComponent(i)).calcCKI(stucture, cavityType, phase) + * reffug[i]; } + } + return yki / temp; + } else { + return 0.0; } + } - /** - *

- * calcCKI. - *

- * - * @param stucture a int - * @param cavityType a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { - double cki = 4.0 * pi / (boltzmannConstant * phase.getTemperature()) - * (potIntegral(0, stucture, cavityType, phase));// +0*potIntegral(1,stucture, - // cavityType,phase)+0*potIntegral(2,stucture, - // cavityType,phase)); - // System.out.println("cki " + cki); - return cki; - } + /** + *

+ * calcCKI. + *

+ * + * @param stucture a int + * @param cavityType a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { + double cki = 4.0 * pi / (boltzmannConstant * phase.getTemperature()) + * (potIntegral(0, stucture, cavityType, phase)); + // +0*potIntegral(1,stucture, cavityType,phase)+0*potIntegral(2,stucture, cavityType,phase)); + // System.out.println("cki " + cki); + return cki; + } - /** - *

- * setRefFug. - *

- * - * @param compNumbm a int - * @param val a double - */ - public void setRefFug(int compNumbm, double val) { - reffug[compNumbm] = val; - } + /** + *

+ * setRefFug. + *

+ * + * @param compNumbm a int + * @param val a double + */ + public void setRefFug(int compNumbm, double val) { + reffug[compNumbm] = val; + } - /** - *

- * potIntegral. - *

- * - * @param intnumb a int - * @param stucture a int - * @param cavityType a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double potIntegral(int intnumb, int stucture, int cavityType, PhaseInterface phase) { - double val = 0.0; - double endval = cavRadius[intnumb][stucture][cavityType] - getSphericalCoreRadius(); - double x = 0.0, step = endval / 100.0; - x = step; - for (int i = 1; i < 100; i++) { - // System.out.println("x" +x); - // System.out.println("pot " + getPot(x,stucture,cavityType,phase)); - val += step * ((getPot(intnumb, x, stucture, cavityType, phase) - + 4 * getPot(intnumb, (x + 0.5 * step), stucture, cavityType, phase) - + getPot(intnumb, x + step, stucture, cavityType, phase)) / 6.0); - x = i * step; - } - return val / 100000.0; + /** + *

+ * potIntegral. + *

+ * + * @param intnumb a int + * @param stucture a int + * @param cavityType a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double potIntegral(int intnumb, int stucture, int cavityType, PhaseInterface phase) { + double val = 0.0; + double endval = cavRadius[intnumb][stucture][cavityType] - getSphericalCoreRadius(); + double x = 0.0; + double step = endval / 100.0; + x = step; + for (int i = 1; i < 100; i++) { + // System.out.println("x" +x); + // System.out.println("pot " + getPot(x,stucture,cavityType,phase)); + val += step * ((getPot(intnumb, x, stucture, cavityType, phase) + + 4 * getPot(intnumb, (x + 0.5 * step), stucture, cavityType, phase) + + getPot(intnumb, x + step, stucture, cavityType, phase)) / 6.0); + x = i * step; } + return val / 100000.0; + } - /** - *

- * getPot. - *

- * - * @param intnumb a int - * @param radius a double - * @param struccture a int - * @param cavityType a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getPot(int intnumb, double radius, int struccture, int cavityType, - PhaseInterface phase) { - double lenjonsenergy = Math.sqrt(this.getLennardJonesEnergyParameter() - * phase.getComponent("water").getLennardJonesEnergyParameter()); - double diam = (this.getLennardJonesMolecularDiameter() - + phase.getComponent("water").getLennardJonesMolecularDiameter()) / 2.0; - double corerad = (this.getSphericalCoreRadius() - + phase.getComponent("water").getSphericalCoreRadius()) / 2.0; + /** + *

+ * getPot. + *

+ * + * @param intnumb a int + * @param radius a double + * @param struccture a int + * @param cavityType a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getPot(int intnumb, double radius, int struccture, int cavityType, + PhaseInterface phase) { + double lenjonsenergy = Math.sqrt(this.getLennardJonesEnergyParameter() + * phase.getComponent("water").getLennardJonesEnergyParameter()); + double diam = (this.getLennardJonesMolecularDiameter() + + phase.getComponent("water").getLennardJonesMolecularDiameter()) / 2.0; + double corerad = + (this.getSphericalCoreRadius() + phase.getComponent("water").getSphericalCoreRadius()) + / 2.0; - double pot = 2.0 * coordNumb[intnumb][struccture][cavityType] * lenjonsenergy * ((Math - .pow(diam, 12.0) - / (Math.pow(cavRadius[intnumb][struccture][cavityType], 11.0) * radius) - * (delt(intnumb, 10.0, radius, struccture, cavityType, phase) - + corerad / cavRadius[intnumb][struccture][cavityType] - * delt(intnumb, 11.0, radius, struccture, cavityType, phase))) - - (Math.pow(diam, 6.0) - / (Math.pow(cavRadius[intnumb][struccture][cavityType], 5.0) * radius) - * (delt(intnumb, 4.0, radius, struccture, cavityType, phase) + corerad - / cavRadius[intnumb][struccture][cavityType] - * delt(intnumb, 5.0, radius, struccture, cavityType, phase)))); + double pot = 2.0 * coordNumb[intnumb][struccture][cavityType] * lenjonsenergy + * ((Math.pow(diam, 12.0) + / (Math.pow(cavRadius[intnumb][struccture][cavityType], 11.0) * radius) + * (delt(intnumb, 10.0, radius, struccture, cavityType, phase) + + corerad / cavRadius[intnumb][struccture][cavityType] + * delt(intnumb, 11.0, radius, struccture, cavityType, phase))) + - (Math.pow(diam, 6.0) + / (Math.pow(cavRadius[intnumb][struccture][cavityType], 5.0) * radius) + * (delt(intnumb, 4.0, radius, struccture, cavityType, phase) + + corerad / cavRadius[intnumb][struccture][cavityType] + * delt(intnumb, 5.0, radius, struccture, cavityType, phase)))); - // intnumb++; - // pot += 2.0*coordNumb[intnumb][struccture][cavityType]*lenjonsenergy*( - // (Math.pow(diam,12.0)/(Math.pow(cavRadius[intnumb][struccture][cavityType],11.0)* - // radius)*(delt(intnumb,10.0,radius,struccture,cavityType,phase)+corerad/cavRadius[intnumb][struccture][cavityType]*delt(intnumb,11.0,radius,struccture,cavityType,phase))) - // - - // (Math.pow(diam,6.0)/(Math.pow(cavRadius[intnumb][struccture][cavityType],5.0)* - // radius)*(delt(intnumb, - // 4.0,radius,struccture,cavityType,phase)+corerad/cavRadius[intnumb][struccture][cavityType]*delt(intnumb,5.0,radius,struccture,cavityType,phase))) - // ); + // intnumb++; + // pot += 2.0*coordNumb[intnumb][struccture][cavityType]*lenjonsenergy*( + // (Math.pow(diam,12.0)/(Math.pow(cavRadius[intnumb][struccture][cavityType],11.0)* + // radius)*(delt(intnumb,10.0,radius,struccture,cavityType,phase) + + // corerad/cavRadius[intnumb][struccture][cavityType]*delt(intnumb,11.0,radius,struccture,cavityType,phase))) + // - + // (Math.pow(diam,6.0)/(Math.pow(cavRadius[intnumb][struccture][cavityType],5.0)* + // radius)*(delt(intnumb, + // 4.0,radius,struccture,cavityType,phase) + + // corerad/cavRadius[intnumb][struccture][cavityType]*delt(intnumb,5.0,radius,struccture,cavityType,phase))) + // ); - // intnumb++; - // pot += 2.0*coordNumb[intnumb][struccture][cavityType]*lenjonsenergy*( - // (Math.pow(diam,12.0)/(Math.pow(cavRadius[intnumb][struccture][cavityType],11.0)* - // radius)*(delt(intnumb,10.0,radius,struccture,cavityType,phase)+corerad/cavRadius[intnumb][struccture][cavityType]*delt(intnumb,11.0,radius,struccture,cavityType,phase))) - // - - // (Math.pow(diam,6.0)/(Math.pow(cavRadius[intnumb][struccture][cavityType],5.0)* - // radius)*(delt(intnumb, - // 4.0,radius,struccture,cavityType,phase)+corerad/cavRadius[intnumb][struccture][cavityType]*delt(intnumb,5.0,radius,struccture,cavityType,phase))) - // ); + // intnumb++; + // pot += 2.0*coordNumb[intnumb][struccture][cavityType]*lenjonsenergy*( + // (Math.pow(diam,12.0)/(Math.pow(cavRadius[intnumb][struccture][cavityType],11.0)* + // radius)*(delt(intnumb,10.0,radius,struccture,cavityType,phase) + + // corerad/cavRadius[intnumb][struccture][cavityType]*delt(intnumb,11.0,radius,struccture,cavityType,phase))) + // - + // (Math.pow(diam,6.0)/(Math.pow(cavRadius[intnumb][struccture][cavityType],5.0)* + // radius)*(delt(intnumb, + // 4.0,radius,struccture,cavityType,phase) + + // corerad/cavRadius[intnumb][struccture][cavityType]*delt(intnumb,5.0,radius,struccture,cavityType,phase))) + // ); - // System.out.println("lenjones " +this.getLennardJonesMolecularDiameter() ); - // System.out.println("pot bef " + pot); - pot = Math.exp(-pot / (phase.getTemperature())) * radius * radius / 1.0e20; - // System.out.println("pot " + pot); - return pot; - } + // System.out.println("lenjones " +this.getLennardJonesMolecularDiameter() ); + // System.out.println("pot bef " + pot); + pot = Math.exp(-pot / (phase.getTemperature())) * radius * radius / 1.0e20; + // System.out.println("pot " + pot); + return pot; + } - /** - *

- * delt. - *

- * - * @param intnumb a int - * @param n a double - * @param radius a double - * @param struccture a int - * @param cavityType a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double delt(int intnumb, double n, double radius, int struccture, int cavityType, - PhaseInterface phase) { - // double lenjonsenergy = Math.sqrt(this.getLennardJonesEnergyParameter() * - // phase.getComponent("water").getLennardJonesEnergyParameter()); - // double diam = (this.getLennardJonesMolecularDiameter() + - // phase.getComponent("water").getLennardJonesMolecularDiameter()) / 2.0; - double corerad = (this.getSphericalCoreRadius() - + phase.getComponent("water").getSphericalCoreRadius()) / 2.0; + /** + *

+ * delt. + *

+ * + * @param intnumb a int + * @param n a double + * @param radius a double + * @param struccture a int + * @param cavityType a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double delt(int intnumb, double n, double radius, int struccture, int cavityType, + PhaseInterface phase) { + // double lenjonsenergy = Math.sqrt(this.getLennardJonesEnergyParameter() * + // phase.getComponent("water").getLennardJonesEnergyParameter()); + // double diam = (this.getLennardJonesMolecularDiameter() + + // phase.getComponent("water").getLennardJonesMolecularDiameter()) / 2.0; + double corerad = + (this.getSphericalCoreRadius() + phase.getComponent("water").getSphericalCoreRadius()) + / 2.0; - double delt = 1.0 / n - * (Math.pow(1.0 - radius / cavRadius[intnumb][struccture][cavityType] - - corerad / cavRadius[intnumb][struccture][cavityType], -n) - - Math.pow( - 1.0 + radius / cavRadius[intnumb][struccture][cavityType] - - corerad / cavRadius[intnumb][struccture][cavityType], - -n)); + double delt = 1.0 / n + * (Math + .pow(1.0 - radius / cavRadius[intnumb][struccture][cavityType] + - corerad / cavRadius[intnumb][struccture][cavityType], -n) + - Math.pow(1.0 + radius / cavRadius[intnumb][struccture][cavityType] + - corerad / cavRadius[intnumb][struccture][cavityType], -n)); - // System.out.println("delt " + delt); - return delt; - } + // System.out.println("delt " + delt); + return delt; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentHydratePVTsim.java b/src/main/java/neqsim/thermo/component/ComponentHydratePVTsim.java index 144e6f27df..df26d9e1f8 100644 --- a/src/main/java/neqsim/thermo/component/ComponentHydratePVTsim.java +++ b/src/main/java/neqsim/thermo/component/ComponentHydratePVTsim.java @@ -3,6 +3,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.util.database.NeqSimDataBase; /** @@ -14,242 +15,229 @@ * @version $Id: $Id */ public class ComponentHydratePVTsim extends ComponentHydrate { - private static final long serialVersionUID = 1000; - - double Ak[][] = new double[2][2]; // [structure][cavitytype] - double Bk[][] = new double[2][2]; // [structure][cavitytype] - static Logger logger = LogManager.getLogger(ComponentHydratePVTsim.class); - - /** - *

- * Constructor for ComponentHydratePVTsim. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentHydratePVTsim(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - - if (!component_name.equals("default")) { - try { - logger.info("reading hydrate parameters .............."); - try { - if (NeqSimDataBase.createTemporaryTables()) { - dataSet = database.getResultSet( - ("SELECT * FROM comptemp WHERE name='" + component_name + "'")); - } else { - dataSet = database.getResultSet( - ("SELECT * FROM comp WHERE name='" + component_name + "'")); - } - dataSet.next(); - } catch (Exception e) { - dataSet.close(); - logger.info("no parameters in tempcomp -- trying comp.. " + component_name); - dataSet = database.getResultSet( - ("SELECT * FROM comp WHERE name='" + component_name + "'")); - dataSet.next(); - } - Ak[0][0] = Double.parseDouble(dataSet.getString("HydrateA1Small")); - Bk[0][0] = Double.parseDouble(dataSet.getString("HydrateB1Small")); - Ak[0][1] = Double.parseDouble(dataSet.getString("HydrateA1Large")); - Bk[0][1] = Double.parseDouble(dataSet.getString("HydrateB1Large")); - - Ak[1][0] = Double.parseDouble(dataSet.getString("HydrateA2Small")); - Bk[1][0] = Double.parseDouble(dataSet.getString("HydrateB2Small")); - Ak[1][1] = Double.parseDouble(dataSet.getString("HydrateA2Large")); - Bk[1][1] = Double.parseDouble(dataSet.getString("HydrateB2Large")); - } catch (Exception e) { - logger.error("error in ComponentHydratePVTsim", e); - } finally { - try { - dataSet.close(); - database.getConnection().close(); - } catch (Exception e) { - logger.error("error closing comp hydrate database....." + component_name); - // e.printStackTrace(); - } - } + private static final long serialVersionUID = 1000; + + double[][] Ak = new double[2][2]; // [structure][cavitytype] + double[][] Bk = new double[2][2]; // [structure][cavitytype] + static Logger logger = LogManager.getLogger(ComponentHydratePVTsim.class); + + /** + *

+ * Constructor for ComponentHydratePVTsim. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentHydratePVTsim(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + + java.sql.ResultSet dataSet = null; + + if (!name.equals("default")) { + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { + logger.info("reading hydrate parameters .............."); + try { + if (NeqSimDataBase.createTemporaryTables()) { + dataSet = database.getResultSet(("SELECT * FROM comptemp WHERE name='" + name + "'")); + } else { + dataSet = database.getResultSet(("SELECT * FROM comp WHERE name='" + name + "'")); + } + dataSet.next(); + } catch (Exception ex) { + dataSet.close(); + logger.info("no parameters in tempcomp -- trying comp.. " + name); + dataSet = database.getResultSet(("SELECT * FROM comp WHERE name='" + name + "'")); + dataSet.next(); + } + Ak[0][0] = Double.parseDouble(dataSet.getString("HydrateA1Small")); + Bk[0][0] = Double.parseDouble(dataSet.getString("HydrateB1Small")); + Ak[0][1] = Double.parseDouble(dataSet.getString("HydrateA1Large")); + Bk[0][1] = Double.parseDouble(dataSet.getString("HydrateB1Large")); + + Ak[1][0] = Double.parseDouble(dataSet.getString("HydrateA2Small")); + Bk[1][0] = Double.parseDouble(dataSet.getString("HydrateB2Small")); + Ak[1][1] = Double.parseDouble(dataSet.getString("HydrateA2Large")); + Bk[1][1] = Double.parseDouble(dataSet.getString("HydrateB2Large")); + } catch (Exception ex) { + logger.error("error in ComponentHydratePVTsim", ex); + } finally { + try { + dataSet.close(); + } catch (Exception ex2) { + logger.error("error closing comp hydrate database....." + name); } + } } + } - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - return fugcoef(phase, phase.getNumberOfComponents(), phase.getTemperature(), - phase.getPressure()); - } + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { + double maxFug = 1.0e100; - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { - double maxFug = 1.0e100; + int stableStructure = 0; - int stableStructure = 0; + if (hydrateStructure == -1) { + stableStructure = -1; + refPhase.setTemperature(temp); + refPhase.setPressure(pres); + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 3, PhaseType.byValue(0), 1.0); - if (hydrateStructure == -1) { - stableStructure = -1; - refPhase.setTemperature(temp); - refPhase.setPressure(pres); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 3, 0, 1.0); + double refWaterFugacityCoef = Math.log(refPhase.getComponent("water").fugcoef(refPhase)); - double refWaterFugacityCoef = - Math.log(refPhase.getComponent("water").fugcoef(refPhase)); + double dhf = 6010.0; - double dhf = 6010.0, tmi = 273.15, dcp = 37.29; + double tmi = 273.15; + double dcp = 37.29; + double LNFUG_ICEREF = refWaterFugacityCoef - (dhf / (R * tmi)) * (tmi / temp - 1.0) + + (dcp / R) * ((tmi / temp) - 1.0 - Math.log(tmi / temp)); - double LNFUG_ICEREF = refWaterFugacityCoef - (dhf / (R * tmi)) * (tmi / temp - 1.0) - + (dcp / R) * ((tmi / temp) - 1.0 - Math.log(tmi / temp)); + double VM = 0.0; - double VM = 0.0; + double K1 = 1.6070E-4; - double K1 = 1.6070E-4; + double K2 = 3.4619E-7; - double K2 = 3.4619E-7; + double K3 = -0.2637E-10; + VM = 1E-6 * 19.6522 * (1 + K1 * (temp - tmi) + K2 * Math.pow((temp - tmi), 2) + + K3 * Math.pow((temp - tmi), 3)); - double K3 = -0.2637E-10; - VM = 1E-6 * 19.6522 * (1 + K1 * (temp - tmi) + K2 * Math.pow((temp - tmi), 2) - + K3 * Math.pow((temp - tmi), 3)); + double LNFUG_ICE = LNFUG_ICEREF + (VM * 100000 * (pres - 1.0) / (R * temp)); + fugacityCoefficient = Math.exp(LNFUG_ICE); + } else { + for (int structure = 0; structure < 2; structure++) { + hydrateStructure = structure; - double LNFUG_ICE = LNFUG_ICEREF + (VM * 100000 * (pres - 1.0) / (R * temp)); - fugacityCoefficient = Math.exp(LNFUG_ICE); - } else { - for (int structure = 0; structure < 2; structure++) { - hydrateStructure = structure; - - if (componentName.equals("water")) { - refPhase.setTemperature(temp); - refPhase.setPressure(pres); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 3, 0, 1.0); - - double refWaterFugacity = - refPhase.getComponent("water").fugcoef(refPhase) * pres; - - double alphaWater = reffug[getComponentNumber()]; - - double wateralphaRef = Math.log(refWaterFugacity / alphaWater); - logger.info("wateralphaRef " + wateralphaRef + " refFUgalpha " + alphaWater - + " refFug " + refWaterFugacity); - - double val = 0.0; - - double tempy = 1.0; - - for (int cavType = 0; cavType < 2; cavType++) { - tempy = 0.0; - - for (int j = 0; j < phase.getNumberOfComponents(); j++) { - double tee = ((ComponentHydrate) phase.getComponent(j)) - .calcYKI(hydrateStructure, cavType, phase); - tempy += tee; - } - val += getCavprwat()[hydrateStructure][cavType] * Math.log(1.0 - tempy); - } - logger.info("val " + val + " structure " + hydrateStructure); - logger.info("emty " - + calcDeltaChemPot(phase, numberOfComps, temp, pres, hydrateStructure)); - // tempfugcoef = refWaterFugacity * Math.exp(val + calcDeltaChemPot(phase, - // numberOfComps, temp, pres, hydrateStruct) + wateralphaRef) / (pres); - fugacityCoefficient = alphaWater * Math.exp(val - + calcDeltaChemPot(phase, numberOfComps, temp, pres, hydrateStructure) - + wateralphaRef) / pres; - - if (fugacityCoefficient < maxFug) { - maxFug = fugacityCoefficient; - - stableStructure = hydrateStructure; - } - } else { - fugacityCoefficient = 1e50; - } - } - fugacityCoefficient = maxFug; - } - logFugacityCoefficient = Math.log(fugacityCoefficient); - hydrateStructure = stableStructure; + if (componentName.equals("water")) { + refPhase.setTemperature(temp); + refPhase.setPressure(pres); + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 3, PhaseType.byValue(0), 1.0); - return fugacityCoefficient; - } + double refWaterFugacity = refPhase.getComponent("water").fugcoef(refPhase) * pres; - /** {@inheritDoc} */ - @Override - public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { - if (componentName.equals("water")) { - return 0.0; - } - double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber]; + double alphaWater = reffug[getComponentNumber()]; + + double wateralphaRef = Math.log(refWaterFugacity / alphaWater); + logger.info("wateralphaRef " + wateralphaRef + " refFUgalpha " + alphaWater + " refFug " + + refWaterFugacity); - double temp = 1.0; + double val = 0.0; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - if (phase.getComponent(i).isHydrateFormer()) { - temp += ((ComponentHydrate) phase.getComponent(i)).calcCKI(stucture, cavityType, - phase) * reffug[i]; + double tempy = 1.0; + + for (int cavType = 0; cavType < 2; cavType++) { + tempy = 0.0; + + for (int j = 0; j < phase.getNumberOfComponents(); j++) { + double tee = ((ComponentHydrate) phase.getComponent(j)).calcYKI(hydrateStructure, + cavType, phase); + tempy += tee; } - // System.out.println("reffug " + reffug[i]); - // System.out.println("temp " + temp); + val += getCavprwat()[hydrateStructure][cavType] * Math.log(1.0 - tempy); + } + logger.info("val " + val + " structure " + hydrateStructure); + logger + .info("emty " + calcDeltaChemPot(phase, numberOfComps, temp, pres, hydrateStructure)); + // tempfugcoef = refWaterFugacity * Math.exp(val + calcDeltaChemPot(phase, + // numberOfComps, temp, pres, hydrateStruct) + wateralphaRef) / (pres); + fugacityCoefficient = alphaWater + * Math.exp(val + calcDeltaChemPot(phase, numberOfComps, temp, pres, hydrateStructure) + + wateralphaRef) + / pres; + + if (fugacityCoefficient < maxFug) { + maxFug = fugacityCoefficient; + + stableStructure = hydrateStructure; + } + } else { + fugacityCoefficient = 1e50; } - // System.out.println("YKI " + yki/temp); - // System.out.println("fug " + yki/temp); - return yki / temp; - // } - // else return 0.0; + } + fugacityCoefficient = maxFug; } - /** {@inheritDoc} */ - @Override - public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { - // this is equation 8.8 - if (componentName.equals("water")) { - return 0.0; - } - return Ak[stucture][cavityType] / (phase.getTemperature()) - * Math.exp(Bk[stucture][cavityType] / (phase.getTemperature())); + hydrateStructure = stableStructure; + return fugacityCoefficient; + } + + /** {@inheritDoc} */ + @Override + public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { + if (componentName.equals("water")) { + return 0.0; } + double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber]; - /** - *

- * calcDeltaChemPot. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComps a int - * @param temp a double - * @param pres a double - * @param hydrateStruct a int - * @return a double - */ - public double calcDeltaChemPot(PhaseInterface phase, int numberOfComps, double temp, - double pres, int hydrateStruct) { - double dGf = 0.0, dHf = 0.0; - - double Cp = 0; - - double deltaMolarVolume = 0.0; - - if (hydrateStruct == 0) { - dGf = 1264.0; - dHf = -4858.0; - Cp = -39.16; - deltaMolarVolume = 4.6e-6; - } else { - dGf = 883.0; - dHf = -5201.0; - Cp = -39.16; - deltaMolarVolume = 5.0e-6; - } - double T0 = 273.15; + double temp = 1.0; - // dHf -= Cp * (temp - T0); - return dGf / R / T0 - - (-1.0 * dHf * (1.0 / R / temp - 1.0 / R / T0) + Cp / R * Math.log(temp / T0) - + Cp * T0 / R * (1.0 / temp - 1.0 / T0)) - + deltaMolarVolume / R / (temp) * (pres * 1e5); + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + if (phase.getComponent(i).isHydrateFormer()) { + temp += ((ComponentHydrate) phase.getComponent(i)).calcCKI(stucture, cavityType, phase) + * reffug[i]; + } + // System.out.println("reffug " + reffug[i]); + // System.out.println("temp " + temp); + } + // System.out.println("YKI " + yki/temp); + // System.out.println("fug " + yki/temp); + return yki / temp; + // } + // else return 0.0; + } + + /** {@inheritDoc} */ + @Override + public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { + // this is equation 8.8 + if (componentName.equals("water")) { + return 0.0; } + return Ak[stucture][cavityType] / (phase.getTemperature()) + * Math.exp(Bk[stucture][cavityType] / (phase.getTemperature())); + } + + /** + *

+ * calcDeltaChemPot. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComps a int + * @param temp a double + * @param pres a double + * @param hydrateStruct a int + * @return a double + */ + public double calcDeltaChemPot(PhaseInterface phase, int numberOfComps, double temp, double pres, + int hydrateStruct) { + double dGf = 0.0; + + double dHf = 0.0; + double Cp = 0; + + double deltaMolarVolume = 0.0; + + if (hydrateStruct == 0) { + dGf = 1264.0; + dHf = -4858.0; + Cp = -39.16; + deltaMolarVolume = 4.6e-6; + } else { + dGf = 883.0; + dHf = -5201.0; + Cp = -39.16; + deltaMolarVolume = 5.0e-6; + } + double T0 = 273.15; + + // dHf -= Cp * (temp - T0); + return dGf / R / T0 - (-1.0 * dHf * (1.0 / R / temp - 1.0 / R / T0) + + Cp / R * Math.log(temp / T0) + Cp * T0 / R * (1.0 / temp - 1.0 / T0)) + + deltaMolarVolume / R / (temp) * (pres * 1e5); + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentHydrateStatoil.java b/src/main/java/neqsim/thermo/component/ComponentHydrateStatoil.java index 1d6bfbb0e8..3715194981 100644 --- a/src/main/java/neqsim/thermo/component/ComponentHydrateStatoil.java +++ b/src/main/java/neqsim/thermo/component/ComponentHydrateStatoil.java @@ -13,217 +13,201 @@ * @version $Id: $Id */ public class ComponentHydrateStatoil extends ComponentHydrate { - private static final long serialVersionUID = 1000; - - double coordNumb[][] = new double[2][2]; - double cavRadius[][] = new double[2][2]; - double cavNumb[][] = new double[2][2]; - double cavprwat[][] = new double[2][2]; - static Logger logger = LogManager.getLogger(ComponentHydrateStatoil.class); - - /** - *

- * Constructor for ComponentHydrateStatoil. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentHydrateStatoil(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - coordNumb[0][0] = 20.0; - coordNumb[0][1] = 24.0; - cavRadius[0][0] = 3.95; - cavRadius[0][1] = 4.33; - cavNumb[0][0] = 2.0; - cavNumb[0][1] = 6.0; - cavprwat[0][0] = 1.0 / 23.0; - cavprwat[0][1] = 3.0 / 23.0; - - coordNumb[1][0] = 20.0; - coordNumb[1][1] = 28.0; - cavRadius[1][0] = 3.91; - cavRadius[1][1] = 4.73; - cavNumb[1][0] = 16.0; - cavNumb[1][1] = 8.0; - cavprwat[1][0] = 2.0 / 17.0; - cavprwat[1][1] = 1.0 / 17.0; - } - - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - return fugcoef(phase, phase.getNumberOfComponents(), phase.getTemperature(), - phase.getPressure()); - } - - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { - if (componentName.equals("water")) { - double solvol = getMolarVolumeHydrate(hydrateStructure, temp); - if (hydrateStructure == -1) { - fugacityCoefficient = getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) - * Math.exp(solvol / (R * temp) * (pres - - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) - * 1e5) - / pres; - } else { - double val = 0.0; - double tempy = 1.0; - - for (int cavType = 0; cavType < 2; cavType++) { - tempy = 0.0; - for (int j = 0; j < phase.getNumberOfComponents(); j++) { - double tee = ((ComponentHydrate) phase.getComponent(j)) - .calcYKI(hydrateStructure, cavType, phase); - tempy += tee; - } - val += cavprwat[hydrateStructure][cavType] * Math.log(1.0 - tempy); - } - // System.out.println("val " + Math.exp(val)); - - // System.out.println("pointing " - // +(Math.exp(solvol/(R*temp)*((pres-getEmptyHydrateStructureVapourPressure(hydrateStruct,temp))*1e5)))); - fugacityCoefficient = Math.exp(val) - * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) - * Math.exp(solvol / (R * temp) * (pres - - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) - * 1e5) - / pres; - // System.out.println("fugcoef " + tempfugcoef + "structure " + - // (hydrateStruct+1)); - - // System.out.println("structure " + (hydrateStructure+1)); - } - } else { - fugacityCoefficient = 1e50; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentHydrateStatoil.class); + + double[][] coordNumb = new double[2][2]; + double[][] cavRadius = new double[2][2]; + double[][] cavNumb = new double[2][2]; + double[][] cavprwat = new double[2][2]; + + /** + *

+ * Constructor for ComponentHydrateStatoil. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentHydrateStatoil(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + coordNumb[0][0] = 20.0; + coordNumb[0][1] = 24.0; + cavRadius[0][0] = 3.95; + cavRadius[0][1] = 4.33; + cavNumb[0][0] = 2.0; + cavNumb[0][1] = 6.0; + cavprwat[0][0] = 1.0 / 23.0; + cavprwat[0][1] = 3.0 / 23.0; + + coordNumb[1][0] = 20.0; + coordNumb[1][1] = 28.0; + cavRadius[1][0] = 3.91; + cavRadius[1][1] = 4.73; + cavNumb[1][0] = 16.0; + cavNumb[1][1] = 8.0; + cavprwat[1][0] = 2.0 / 17.0; + cavprwat[1][1] = 1.0 / 17.0; + } + + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, double pres) { + if (componentName.equals("water")) { + double solvol = getMolarVolumeHydrate(hydrateStructure, temp); + if (hydrateStructure == -1) { + fugacityCoefficient = getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) + * Math.exp(solvol / (R * temp) + * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5) + / pres; + } else { + double val = 0.0; + double tempy = 1.0; + + for (int cavType = 0; cavType < 2; cavType++) { + tempy = 0.0; + for (int j = 0; j < phase.getNumberOfComponents(); j++) { + double tee = ((ComponentHydrate) phase.getComponent(j)).calcYKI(hydrateStructure, + cavType, phase); + tempy += tee; + } + val += cavprwat[hydrateStructure][cavType] * Math.log(1.0 - tempy); } + // System.out.println("val " + Math.exp(val)); + + // System.out.println("pointing " + // +(Math.exp(solvol/(R*temp)*((pres-getEmptyHydrateStructureVapourPressure(hydrateStruct,temp))*1e5)))); + fugacityCoefficient = + Math.exp(val) * getEmptyHydrateStructureVapourPressure(hydrateStructure, temp) + * Math.exp(solvol / (R * temp) + * (pres - getEmptyHydrateStructureVapourPressure(hydrateStructure, temp)) * 1e5) + / pres; + // System.out.println("fugcoef " + tempfugcoef + "structure " + + // (hydrateStruct+1)); + + // System.out.println("structure " + (hydrateStructure+1)); + } + } else { + fugacityCoefficient = 1e50; + } - logFugacityCoefficient = Math.log(fugacityCoefficient); + return fugacityCoefficient; + } - return fugacityCoefficient; + /** {@inheritDoc} */ + @Override + public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { + if (componentName.equals("water")) { + return 0.0; + } + double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber] * 1.0e5; + double temp = 1.0; + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + if (phase.getComponent(i).isHydrateFormer()) { + temp += ((ComponentHydrate) phase.getComponent(i)).calcCKI(stucture, cavityType, phase) + * 1.0e5 * reffug[i]; + // System.out.println("yk2 "+ + // ((ComponentHydrateBallard)phase.getComponent(i)).calcCKI(stucture, + // cavityType, phase)*reffug[i]); + // System.out.println("CYJI" +yki + " ref fug " +(1.0e5*reffug[i])); + } } - /** {@inheritDoc} */ - @Override - public double calcYKI(int stucture, int cavityType, PhaseInterface phase) { - if (componentName.equals("water")) { - return 0.0; - } - double yki = calcCKI(stucture, cavityType, phase) * reffug[componentNumber] * 1.0e5; - double temp = 1.0; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - if (phase.getComponent(i).isHydrateFormer()) { - temp += ((ComponentHydrate) phase.getComponent(i)).calcCKI(stucture, cavityType, - phase) * 1.0e5 * reffug[i]; - // System.out.println("yk2 "+ - // ((ComponentHydrateBallard)phase.getComponent(i)).calcCKI(stucture, - // cavityType, phase)*reffug[i]); - // System.out.println("CYJI" +yki + " ref fug " +(1.0e5*reffug[i])); - } - } + return yki / temp; + } - return yki / temp; + /** {@inheritDoc} */ + @Override + public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { + if (componentName.equals("water")) { + return 0.0; } - - /** {@inheritDoc} */ - @Override - public double calcCKI(int stucture, int cavityType, PhaseInterface phase) { - if (componentName.equals("water")) { - return 0.0; - } - double cki = 4.0 * pi / (phase.getTemperature() * R) - * potIntegral(stucture, cavityType, phase) * avagadroNumber; - // System.out.println("cki " + cki/1.0e30*1e5 + " " + componentName); - return cki / 1.0e30; + double cki = 4.0 * pi / (phase.getTemperature() * R) * potIntegral(stucture, cavityType, phase) + * avagadroNumber; + // System.out.println("cki " + cki/1.0e30*1e5 + " " + componentName); + return cki / 1.0e30; + } + + /** {@inheritDoc} */ + @Override + public double potIntegral(int stucture, int cavityType, PhaseInterface phase) { + double val = 0.0; + int numberOfSteps = 200; + double endval = cavRadius[stucture][cavityType] - getSphericalCoreRadiusHydrate(); + double x = 0.0; + double step = endval / numberOfSteps; + x = step; + for (int i = 1; i < numberOfSteps; i++) { + val += step * ((getPot(x, stucture, cavityType, phase) + + 4.0 * getPot((x + 0.5 * step), stucture, cavityType, phase) + + getPot(x + step, stucture, cavityType, phase)) / 6.0); + x = i * step; + // System.out.println("step " + i + " " + + // (step*getPot(x,stucture,cavityType,phase))); } - - /** {@inheritDoc} */ - @Override - public double potIntegral(int stucture, int cavityType, PhaseInterface phase) { - double val = 0.0; - int numberOfSteps = 200; - double endval = cavRadius[stucture][cavityType] - getSphericalCoreRadiusHydrate(); - double x = 0.0, step = endval / numberOfSteps; - x = step; - for (int i = 1; i < numberOfSteps; i++) { - val += step * ((getPot(x, stucture, cavityType, phase) - + 4.0 * getPot((x + 0.5 * step), stucture, cavityType, phase) - + getPot(x + step, stucture, cavityType, phase)) / 6.0); - x = i * step; - // System.out.println("step " + i + " " + - // (step*getPot(x,stucture,cavityType,phase))); - } - // System.out.println("integral " + val); - if (Double.isNaN(val)) { - logger.error("val NaN ..."); - } - if (Double.isInfinite(val)) { - logger.error("val Infinite ..."); - } - return val; + // System.out.println("integral " + val); + if (Double.isNaN(val)) { + logger.error("val NaN ..."); } - - /** {@inheritDoc} */ - @Override - public double getPot(double radius, int struccture, int cavityType, PhaseInterface phase) { - double pot = 2.0 * coordNumb[struccture][cavityType] - * this.getLennardJonesEnergyParameterHydrate() - * ((Math.pow(this.getLennardJonesMolecularDiameterHydrate(), 12.0) - / (Math.pow(cavRadius[struccture][cavityType], 11.0) * radius) - * (delt(10.0, radius, struccture, cavityType) - + getSphericalCoreRadiusHydrate() - / cavRadius[struccture][cavityType] - * delt(11.0, radius, struccture, cavityType))) - - (Math.pow(this.getLennardJonesMolecularDiameterHydrate(), 6.0) - / (Math.pow(cavRadius[struccture][cavityType], 5.0) * radius) - * (delt(4.0, radius, struccture, cavityType) - + getSphericalCoreRadiusHydrate() - / cavRadius[struccture][cavityType] - * delt(5.0, radius, struccture, cavityType)))); - - pot = Math.exp(-pot / (phase.getTemperature())) * radius * radius; - // System.out.println("pot " + pot); - if (Double.isNaN(pot)) { - logger.error("pot NaN ..."); - } - if (Double.isInfinite(pot)) { - logger.error("pot Infinite ..."); - } - // System.out.println("pot " +pot); - return pot; + if (Double.isInfinite(val)) { + logger.error("val Infinite ..."); } - - /** - *

- * delt. - *

- * - * @param n a double - * @param radius a double - * @param struccture a int - * @param cavityType a int - * @return a double - */ - public double delt(double n, double radius, int struccture, int cavityType) { - double diff1 = - (radius + getSphericalCoreRadiusHydrate()) / cavRadius[struccture][cavityType]; - double diff2 = - (radius - getSphericalCoreRadiusHydrate()) / cavRadius[struccture][cavityType]; - double delt = 1.0 / n * (Math.pow(1.0 - diff1, -n) - Math.pow(1.0 + diff2, -n)); - // System.out.println("diff1 " + diff1); - // System.out.println("diff2 " + diff2); - // System.out.println("delt " + delt); - if (Double.isNaN(delt)) { - logger.error("delt NaN ..."); - } - if (Double.isInfinite(delt)) { - logger.error("delt Infinite ..."); - } - return delt; + return val; + } + + /** {@inheritDoc} */ + @Override + public double getPot(double radius, int struccture, int cavityType, PhaseInterface phase) { + double pot = 2.0 * coordNumb[struccture][cavityType] + * this.getLennardJonesEnergyParameterHydrate() + * ((Math.pow(this.getLennardJonesMolecularDiameterHydrate(), 12.0) + / (Math.pow(cavRadius[struccture][cavityType], 11.0) * radius) + * (delt(10.0, radius, struccture, cavityType) + getSphericalCoreRadiusHydrate() + / cavRadius[struccture][cavityType] * delt(11.0, radius, struccture, cavityType))) + - (Math.pow(this.getLennardJonesMolecularDiameterHydrate(), 6.0) + / (Math.pow(cavRadius[struccture][cavityType], 5.0) * radius) + * (delt(4.0, radius, struccture, cavityType) + + getSphericalCoreRadiusHydrate() / cavRadius[struccture][cavityType] + * delt(5.0, radius, struccture, cavityType)))); + + pot = Math.exp(-pot / (phase.getTemperature())) * radius * radius; + // System.out.println("pot " + pot); + if (Double.isNaN(pot)) { + logger.error("pot NaN ..."); + } + if (Double.isInfinite(pot)) { + logger.error("pot Infinite ..."); + } + // System.out.println("pot " +pot); + return pot; + } + + /** + *

+ * delt. + *

+ * + * @param n a double + * @param radius a double + * @param struccture a int + * @param cavityType a int + * @return a double + */ + public double delt(double n, double radius, int struccture, int cavityType) { + double diff1 = (radius + getSphericalCoreRadiusHydrate()) / cavRadius[struccture][cavityType]; + double diff2 = (radius - getSphericalCoreRadiusHydrate()) / cavRadius[struccture][cavityType]; + double delt = 1.0 / n * (Math.pow(1.0 - diff1, -n) - Math.pow(1.0 + diff2, -n)); + // System.out.println("diff1 " + diff1); + // System.out.println("diff2 " + diff2); + // System.out.println("delt " + delt); + if (Double.isNaN(delt)) { + logger.error("delt NaN ..."); + } + if (Double.isInfinite(delt)) { + logger.error("delt Infinite ..."); } + return delt; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentInterface.java b/src/main/java/neqsim/thermo/component/ComponentInterface.java index dce07aa243..ded1f2c0da 100644 --- a/src/main/java/neqsim/thermo/component/ComponentInterface.java +++ b/src/main/java/neqsim/thermo/component/ComponentInterface.java @@ -3,6 +3,7 @@ * * Created on 8. april 2000, 23:15 */ + package neqsim.thermo.component; import java.util.LinkedHashMap; @@ -20,2195 +21,2307 @@ * @version $Id: $Id */ public interface ComponentInterface extends ThermodynamicConstantsInterface, Cloneable { - /** - *

- * isInert. - *

- * - * @return a boolean - */ - public boolean isInert(); - - /** - *

- * setIdealGasEnthalpyOfFormation. - *

- * - * @param idealGasEnthalpyOfFormation a double - */ - public void setIdealGasEnthalpyOfFormation(double idealGasEnthalpyOfFormation); - - /** - *

- * getFormulae. - *

- * - * @return a {@link java.lang.String} object - */ - public String getFormulae(); - - /** - *

- * getVolumeCorrectionT. - *

- * - * @return a double - */ - public double getVolumeCorrectionT(); - - /** - *

- * setVolumeCorrectionT. - *

- * - * @param volumeCorrectionT a double - */ - public void setVolumeCorrectionT(double volumeCorrectionT); - - /** - *

- * getVolumeCorrectionConst. - *

- * - * @return a double - */ - public double getVolumeCorrectionConst(); - - /** - *

- * getCASnumber. - *

- * - * @return a {@link java.lang.String} object - */ - public String getCASnumber(); - - /** - *

- * setVolumeCorrectionConst. - *

- * - * @param volumeCorrection a double - */ - public void setVolumeCorrectionConst(double volumeCorrection); - - /** - *

- * getPureComponentCpLiquid. - *

- * - * @param temperature a double - * @return a double - */ - public double getPureComponentCpLiquid(double temperature); - - /** - *

- * getPureComponentCpSolid. - *

- * - * @param temperature a double - * @return a double - */ - public double getPureComponentCpSolid(double temperature); - - /** - *

- * getdrhodN. - *

- * - * @return a double - */ - public double getdrhodN(); - - /** - *

- * getVolumeCorrectionT_CPA. - *

- * - * @return a double - */ - public double getVolumeCorrectionT_CPA(); - - /** - * method to return flow rate of a component - * - * @param flowunit Supported units are kg/sec, kg/min, m3/sec, m3/min, - * m3/hr, mole/sec, mole/min, mole/hr - * @return flow rate in specified unit - */ - public double getFlowRate(String flowunit); - - /** - * method to return total flow rate of a component - * - * @param flowunit Supported units are kg/sec, kg/min, mole/sec, mole/min, - * mole/hr - * @return flow rate in specified unit - */ - public double getTotalFlowRate(String flowunit); - - /** - *

- * setVolumeCorrectionT_CPA. - *

- * - * @param volumeCorrectionT_CPA a double - */ - public void setVolumeCorrectionT_CPA(double volumeCorrectionT_CPA); - - /** - *

- * setNumberOfAssociationSites. - *

- * - * @param numb a int - */ - public void setNumberOfAssociationSites(int numb); - - /** - *

- * setCASnumber. - *

- * - * @param CASnumber a {@link java.lang.String} object - */ - public void setCASnumber(String CASnumber); - - /** - *

- * setFormulae. - *

- * - * @param formulae a {@link java.lang.String} object - */ - public void setFormulae(String formulae); - - /** - *

- * insertComponentIntoDatabase. - *

- * - * @param databaseName a {@link java.lang.String} object - */ - public void insertComponentIntoDatabase(String databaseName); - - /** - *

- * getOrginalNumberOfAssociationSites. - *

- * - * @return a int - */ - public int getOrginalNumberOfAssociationSites(); - - /** - *

- * createComponent. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public void createComponent(String component_name, double moles, double molesInPhase, - int compnumber); - - /** - *

- * getRacketZCPA. - *

- * - * @return a double - */ - public double getRacketZCPA(); - - /** - *

- * setRacketZCPA. - *

- * - * @param racketZCPA a double - */ - public void setRacketZCPA(double racketZCPA); - - /** - *

- * isHydrocarbon. - *

- * - * @return a boolean - */ - public boolean isHydrocarbon(); - - /** - *

- * setComponentName. - *

- * - * @param componentName a {@link java.lang.String} object - */ - public void setComponentName(String componentName); - - /** - *

- * getChemicalPotentialdP. - *

- * - * @return a double - */ - public double getChemicalPotentialdP(); - - /** - *

- * setHeatOfFusion. - *

- * - * @param heatOfFusion a double - */ - public void setHeatOfFusion(double heatOfFusion); - - /** - *

- * getChemicalPotentialIdealReference. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getChemicalPotentialIdealReference(PhaseInterface phase); - - /** - *

- * getHeatOfFusion. - *

- * - * @return a double - */ - public double getHeatOfFusion(); - - /** - *

- * setSurfTensInfluenceParam. - *

- * - * @param factNum a int - * @param val a double - */ - public void setSurfTensInfluenceParam(int factNum, double val); - - /** - *

- * isWaxFormer. - *

- * - * @return a boolean - */ - public boolean isWaxFormer(); - - /** - *

- * setWaxFormer. - *

- * - * @param waxFormer a boolean - */ - public void setWaxFormer(boolean waxFormer); - - /** - *

- * getSurfTensInfluenceParam. - *

- * - * @param factNum a int - * @return a double - */ - public double getSurfTensInfluenceParam(int factNum); - - /** - *

- * getChemicalPotentialdN. - *

- * - * @param i a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getChemicalPotentialdN(int i, PhaseInterface phase); - - /** - *

- * getChemicalPotential. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getChemicalPotential(PhaseInterface phase); - - /** - *

- * getChemicalPotentialdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getChemicalPotentialdT(PhaseInterface phase); - - /** - *

- * getChemicalPotentialdNTV. - *

- * - * @param i a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getChemicalPotentialdNTV(int i, PhaseInterface phase); - - /** - *

- * setTriplePointTemperature. - *

- * - * @param triplePointTemperature a double - */ - public void setTriplePointTemperature(double triplePointTemperature); - - /** - *

- * setComponentType. - *

- * - * @param componentType a {@link java.lang.String} object - */ - public void setComponentType(String componentType); - - /** - *

- * seta. - *

- * - * @param a a double - */ - public void seta(double a); - - /** - *

- * getSphericalCoreRadius. - *

- * - * @return a double - */ - public double getSphericalCoreRadius(); - - /** - *

- * setb. - *

- * - * @param b a double - */ - public void setb(double b); - - /** - *

- * getNumberOfAssociationSites. - *

- * - * @return a int - */ - public int getNumberOfAssociationSites(); - - /** - *

- * getComponentType. - *

- * - * @return a {@link java.lang.String} object - */ - public java.lang.String getComponentType(); - - /** - *

- * getRate. - *

- * - * @param unitName a {@link java.lang.String} object - * @return a double - */ - public double getRate(String unitName); - - /** - *

- * fugcoef. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double fugcoef(PhaseInterface phase); - - /** - *

- * logfugcoefdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double logfugcoefdT(PhaseInterface phase); - - /** - *

- * logfugcoefdNi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param k a int - * @return a double - */ - public double logfugcoefdNi(PhaseInterface phase, int k); - - /** - *

- * setStokesCationicDiameter. - *

- * - * @param stokesCationicDiameter a double - */ - public void setStokesCationicDiameter(double stokesCationicDiameter); - - /** - *

- * logfugcoefdP. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double logfugcoefdP(PhaseInterface phase); - - /** - *

- * logfugcoefdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return an array of {@link double} objects - */ - public double[] logfugcoefdN(PhaseInterface phase); - - /** - *

- * setProperties. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentInterface} object - */ - public void setProperties(ComponentInterface component); - - /** - *

- * getTripplePointDensity. - *

- * - * @return a double - */ - public double getTripplePointDensity(); - - /** - *

- * setFugacityCoefficient. - *

- * - * @param val a double - */ - public void setFugacityCoefficient(double val); - - /** - *

- * getCriticalCompressibilityFactor. - *

- * - * @return a double - */ - public double getCriticalCompressibilityFactor(); - - /** - *

- * setCriticalCompressibilityFactor. - *

- * - * @param criticalCompressibilityFactor a double - */ - public void setCriticalCompressibilityFactor(double criticalCompressibilityFactor); - - /** - *

- * setMolarMass. - *

- * - * @param molarMass a double - */ - public void setMolarMass(double molarMass); - - /** - *

- * calcActivity. - *

- * - * @return a boolean - */ - public boolean calcActivity(); - - /** - *

- * getMolality. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getMolality(PhaseInterface phase); - - /** - *

- * setLennardJonesMolecularDiameter. - *

- * - * @param lennardJonesMolecularDiameter a double - */ - public void setLennardJonesMolecularDiameter(double lennardJonesMolecularDiameter); - - /** - *

- * setLennardJonesEnergyParameter. - *

- * - * @param lennardJonesEnergyParameter a double - */ - public void setLennardJonesEnergyParameter(double lennardJonesEnergyParameter); - - /** - *

- * setSphericalCoreRadius. - *

- * - * @param sphericalCoreRadius a double - */ - public void setSphericalCoreRadius(double sphericalCoreRadius); - - /** - *

- * getTriplePointPressure. - *

- * - * @return a double - */ - public double getTriplePointPressure(); - - /** - *

- * getTriplePointTemperature. - *

- * - * @return a double - */ - public double getTriplePointTemperature(); - - /** - *

- * getMeltingPointTemperature. - *

- * - * @return a double - */ - public double getMeltingPointTemperature(); - - /** - *

- * getIdealGasEnthalpyOfFormation. - *

- * - * @return a double - */ - public double getIdealGasEnthalpyOfFormation(); - - /** - *

- * addMolesChemReac. - *

- * - * @param dn Number of moles to add to phase and total - */ - public void addMolesChemReac(double dn); - - /** - *

- * addMolesChemReac. - *

- * - * @param dn Number of moles to add to phase - * @param totdn Number of moles to add total - */ - public void addMolesChemReac(double dn, double totdn); - - /** - *

- * getIdealGasGibsEnergyOfFormation. - *

- * - * @return a double - */ - public double getIdealGasGibsEnergyOfFormation(); - - /** - *

- * setTC. - *

- * - * @param val a double - */ - public void setTC(double val); - - /** - *

- * setPC. - *

- * - * @param val a double - */ - public void setPC(double val); - - /** - *

- * getDiElectricConstantdTdT. - *

- * - * @param temperature a double - * @return a double - */ - public double getDiElectricConstantdTdT(double temperature); - - /** - *

- * getIdealGasAbsoluteEntropy. - *

- * - * @return a double - */ - public double getIdealGasAbsoluteEntropy(); - - /** - *

- * getDiElectricConstantdT. - *

- * - * @param temperature a double - * @return a double - */ - public double getDiElectricConstantdT(double temperature); - - /** - *

- * Initialize component - *

- * - * @param temperature a double - * @param pressure a double - * @param totalNumberOfMoles a double - * @param beta a double - * @param type a int - */ - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type); - - /** - *

- * Finit. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param totalNumberOfMoles a double - * @param beta a double - * @param numberOfComponents a int - * @param type a int - */ - public void Finit(PhaseInterface phase, double temperature, double pressure, - double totalNumberOfMoles, double beta, int numberOfComponents, int type); - - /** - *

- * getx. - *

- * - * @return a double - */ - public double getx(); - - /** - *

- * getz. - *

- * - * @return a double - */ - public double getz(); - - /** - *

- * getK. - *

- * - * @return a double - */ - public double getK(); - - /** - *

- * getTC. - *

- * - * @return a double - */ - public double getTC(); - - /** - *

- * getNormalBoilingPoint. - *

- * - * @return a double - */ - public double getNormalBoilingPoint(); - - /** - *

- * setNormalBoilingPoint. - *

- * - * @param normalBoilingPoint a double - */ - public void setNormalBoilingPoint(double normalBoilingPoint); - - /** - *

- * getPC. - *

- * - * @return a double - */ - public double getPC(); - - /** - *

- * setComponentNumber. - *

- * - * @param numb a int - */ - public void setComponentNumber(int numb); - - /** - *

- * setViscosityAssociationFactor. - *

- * - * @param val a double - */ - public void setViscosityAssociationFactor(double val); - - /** - *

- * getIndex. - *

- * - * @return a int - */ - public int getIndex(); - - /** - *

- * getReferenceStateType. - *

- * - * @return a {@link java.lang.String} object - */ - public String getReferenceStateType(); - - /** - *

- * setLiquidConductivityParameter. - *

- * - * @param number a double - * @param i a int - */ - public void setLiquidConductivityParameter(double number, int i); - - /** - *

- * getLiquidConductivityParameter. - *

- * - * @param i a int - * @return a double - */ - public double getLiquidConductivityParameter(int i); - - /** - *

- * getNormalLiquidDensity. - *

- * - * @return a double - */ - public double getNormalLiquidDensity(); - - /** - *

- * getComponentName. - *

- * - * @return a {@link java.lang.String} object - */ - public String getComponentName(); - - /** - *

- * getComponentNumber. - *

- * - * @return a int - */ - public int getComponentNumber(); - - /** - *

- * getHeatOfVapourization. - *

- * - * @param temp a double - * @return a double - */ - public double getHeatOfVapourization(double temp); - - /** - *

- * getNumberOfmoles. - *

- * - * @return a double - */ - public double getNumberOfmoles(); - - /** - *

- * addMoles. - *

- * - * @param dn a double - */ - public void addMoles(double dn); - - /** - *

- * getGibbsEnergyOfFormation. - *

- * - * @return a double - */ - public double getGibbsEnergyOfFormation(); - - /** - *

- * getReferencePotential. - *

- * - * @return a double - */ - public double getReferencePotential(); - - /** - *

- * getLogFugacityCoefficient. - *

- * - * @return a double - */ - public double getLogFugacityCoefficient(); - - /** - *

- * setReferencePotential. - *

- * - * @param ref a double - */ - public void setReferencePotential(double ref); - - /** - *

- * getNumberOfMolesInPhase. - *

- * - * @return a double - */ - public double getNumberOfMolesInPhase(); - - /** - *

- * setNumberOfMolesInPhase. - *

- * - * @param moles a double - */ - public void setNumberOfMolesInPhase(double moles); - - /** - *

- * getIdEntropy. - *

- * - * @param temperature a double - * @return a double - */ - public double getIdEntropy(double temperature); - - /** - *

- * setx. - *

- * - * @param newx a double - */ - public void setx(double newx); - - /** - *

- * setz. - *

- * - * @param newz a double - */ - public void setz(double newz); - - /** - *

- * setK. - *

- * - * @param newK a double - */ - public void setK(double newK); - - /** - *

- * getDiElectricConstant. - *

- * - * @param temperature a double - * @return a double - */ - public double getDiElectricConstant(double temperature); - - /** - *

- * getIonicCharge. - *

- * - * @return a double - */ - public double getIonicCharge(); - - /** - *

- * getdfugdt. - *

- * - * @return a double - */ - public double getdfugdt(); - - /** - *

- * getdfugdp. - *

- * - * @return a double - */ - public double getdfugdp(); - - /** - *

- * getSolidVaporPressure. - *

- * - * @param temperature a double - * @return a double - */ - public double getSolidVaporPressure(double temperature); - - /** - *

- * getCp0. - *

- * - * @param temperature a double - * @return ideal gas Cp for the component in the specific phase [J/molK] - */ - public double getCp0(double temperature); - - /** - *

- * getCv0. - *

- * - * @param temperature a double - * @return ideal gas Cv for the component in the specific phase [J/molK] - */ - public double getCv0(double temperature); - - /** - *

- * getHID. - *

- * - * @param T a double - * @return a double - */ - public double getHID(double T); - - /** - *

- * getEnthalpy. - *

- * - * @param temperature a double - * @return a double - */ - public double getEnthalpy(double temperature); - - /** - *

- * getMolarMass. - *

- * - * @return a double - */ - public double getMolarMass(); - - /** - *

- * getLennardJonesMolecularDiameter. - *

- * - * @return a double - */ - public double getLennardJonesMolecularDiameter(); - - /** - *

- * getLennardJonesEnergyParameter. - *

- * - * @return a double - */ - public double getLennardJonesEnergyParameter(); - - /** - *

- * getEntropy. - *

- * - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double getEntropy(double temperature, double pressure); - - /** - *

- * getdfugdx. - *

- * - * @param i a int - * @return a double - */ - public double getdfugdx(int i); - - /** - *

- * getdfugdn. - *

- * - * @param i a int - * @return a double - */ - public double getdfugdn(int i); - - /** - *

- * getHresTP. - *

- * - * @param temperature a double - * @return a double - */ - public double getHresTP(double temperature); - - /** - *

- * getGresTP. - *

- * - * @param temperature a double - * @return a double - */ - public double getGresTP(double temperature); - - /** - *

- * getSresTP. - *

- * - * @param temperature a double - * @return a double - */ - public double getSresTP(double temperature); - - /** - *

- * getFugacityCoefficient. - *

- * - * @return a double - */ - public double getFugacityCoefficient(); - - /** - *

- * getAcentricFactor. - *

- * - * @return a double - */ - public double getAcentricFactor(); - - /** - *

- * setAttractiveTerm. - *

- * - * @param i a int - */ - public void setAttractiveTerm(int i); - - /** - *

- * getAttractiveTerm. - *

- * - * @return a {@link neqsim.thermo.component.attractiveEosTerm.AttractiveTermInterface} object - */ - public AttractiveTermInterface getAttractiveTerm(); - - /** - *

- * setNumberOfmoles. - *

- * - * @param newmoles a double - */ - public void setNumberOfmoles(double newmoles); - - /** - *

- * getAntoineVaporPressure. - *

- * - * @param temp a double - * @return a double - */ - public double getAntoineVaporPressure(double temp); - - /** - *

- * getAntoineVaporTemperature. - *

- * - * @param pres a double - * @return a double - */ - public double getAntoineVaporTemperature(double pres); - - /** - *

- * getSolidVaporPressuredT. - *

- * - * @param temperature a double - * @return a double - */ - public double getSolidVaporPressuredT(double temperature); - - /** - *

- * getChemicalPotential. - *

- * - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double getChemicalPotential(double temperature, double pressure); - // public double fugcoef(PhaseInterface phase, int numberOfComponents, double - // temperature, double pressure); - // public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, - // double temperature, double pressure); - // public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, - // double temperature, double pressure); - // public double[] fugcoefDiffN(PhaseInterface phase, int numberOfComponents, - // double temperature, double pressure); - - /** - *

- * getGibbsEnergy. - *

- * - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double getGibbsEnergy(double temperature, double pressure); - - /** - *

- * clone. - *

- * - * @return a {@link neqsim.thermo.component.ComponentInterface} object - */ - public ComponentInterface clone(); - - /** - *

- * getDebyeDipoleMoment. - *

- * - * @return a double - */ - public double getDebyeDipoleMoment(); - - /** - *

- * getViscosityCorrectionFactor. - *

- * - * @return a double - */ - public double getViscosityCorrectionFactor(); - - /** - *

- * getCriticalVolume. - *

- * - * @return a double - */ - public double getCriticalVolume(); - - /** - *

- * getRacketZ. - *

- * - * @return a double - */ - public double getRacketZ(); - - /** - *

- * getName. - *

- * - * @return a {@link java.lang.String} object - */ - public String getName(); - - /** - *

- * getLiquidViscosityParameter. - *

- * - * @param i a int - * @return a double - */ - public double getLiquidViscosityParameter(int i); - - /** - *

- * getLiquidViscosityModel. - *

- * - * @return a int - */ - public int getLiquidViscosityModel(); - - /** - *

- * setAcentricFactor. - *

- * - * @param val a double - */ - public void setAcentricFactor(double val); - - /** - *

- * getVolumeCorrection. - *

- * - * @return a double - */ - public double getVolumeCorrection(); - - /** - *

- * setRacketZ. - *

- * - * @param val a double - */ - public void setRacketZ(double val); - - /** - *

- * setLiquidViscosityModel. - *

- * - * @param modelNumber a int - */ - public void setLiquidViscosityModel(int modelNumber); - - /** - *

- * setLiquidViscosityParameter. - *

- * - * @param number a double - * @param i a int - */ - public void setLiquidViscosityParameter(double number, int i); - - /** - *

- * getElements. - *

- * - * @return a {@link neqsim.thermo.atomElement.Element} object - */ - public Element getElements(); - - /** - *

- * getSchwartzentruberParams. - *

- * - * @return an array of {@link double} objects - */ - public double[] getSchwartzentruberParams(); - - /** - *

- * setSchwartzentruberParams. - *

- * - * @param i a int - * @param param a double - */ - public void setSchwartzentruberParams(int i, double param); - - /** - *

- * getTwuCoonParams. - *

- * - * @return an array of {@link double} objects - */ - public double[] getTwuCoonParams(); - - /** - *

- * setTwuCoonParams. - *

- * - * @param i a int - * @param param a double - */ - public void setTwuCoonParams(int i, double param); - - /** - *

- * getParachorParameter. - *

- * - * @return a double - */ - public double getParachorParameter(); - - /** - *

- * setParachorParameter. - *

- * - * @param parachorParameter a double - */ - public void setParachorParameter(double parachorParameter); - - /** - *

- * getPureComponentSolidDensity. - *

- * - * @param temperature a double - * @return a double - */ - public double getPureComponentSolidDensity(double temperature); - - /** - *

- * getPureComponentLiquidDensity. - *

- * - * @param temperature a double - * @return a double - */ - public double getPureComponentLiquidDensity(double temperature); - - /** - *

- * getChemicalPotentialdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getChemicalPotentialdV(PhaseInterface phase); - - /** - *

- * getPureComponentHeatOfVaporization. - *

- * - * @param temperature a double - * @return a double - */ - public double getPureComponentHeatOfVaporization(double temperature); - - /** - *

- * fugcoefDiffPresNumeric. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double fugcoefDiffPresNumeric(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure); - - /** - *

- * fugcoefDiffTempNumeric. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double fugcoefDiffTempNumeric(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure); - - /** - *

- * setdfugdt. - *

- * - * @param val a double - */ - public void setdfugdt(double val); - - /** - *

- * setdfugdp. - *

- * - * @param val a double - */ - public void setdfugdp(double val); - - /** - *

- * setdfugdn. - *

- * - * @param i a int - * @param val a double - */ - public void setdfugdn(int i, double val); - - /** - *

- * setdfugdx. - *

- * - * @param i a int - * @param val a double - */ - public void setdfugdx(int i, double val); - - /** - *

- * getPaulingAnionicDiameter. - *

- * - * @return a double - */ - public double getPaulingAnionicDiameter(); - - /** - *

- * getStokesCationicDiameter. - *

- * - * @return a double - */ - public double getStokesCationicDiameter(); - - /** - *

- * getAttractiveTermNumber. - *

- * - * @return a int - */ - public int getAttractiveTermNumber(); - - /** - *

- * getVoli. - *

- * - * @return a double - */ - public double getVoli(); - - /** - *

- * getAntoineVaporPressuredT. - *

- * - * @param temp a double - * @return a double - */ - public double getAntoineVaporPressuredT(double temp); - - /** - *

- * getMatiascopemanParams. - *

- * - * @return an array of {@link double} objects - */ - public double[] getMatiascopemanParams(); - - /** - *

- * setMatiascopemanParams. - *

- * - * @param index a int - * @param matiascopemanParams a double - */ - public void setMatiascopemanParams(int index, double matiascopemanParams); - - /** - *

- * setMatiascopemanParams. - *

- * - * @param matiascopemanParams an array of {@link double} objects - */ - public void setMatiascopemanParams(double[] matiascopemanParams); - - /** - *

- * getAssociationVolume. - *

- * - * @return a double - */ - public double getAssociationVolume(); - - /** - *

- * setAssociationVolume. - *

- * - * @param associationVolume a double - */ - public void setAssociationVolume(double associationVolume); - - /** - *

- * getAssociationEnergy. - *

- * - * @return a double - */ - public double getAssociationEnergy(); - - /** - *

- * setAssociationEnergy. - *

- * - * @param associationEnergy a double - */ - public void setAssociationEnergy(double associationEnergy); - - /** - *

- * getAntoineASolid. - *

- * - * @return a double - */ - public double getAntoineASolid(); - - /** - *

- * setAntoineASolid. - *

- * - * @param AntoineASolid a double - */ - public void setAntoineASolid(double AntoineASolid); - - /** - *

- * getAntoineBSolid. - *

- * - * @return a double - */ - public double getAntoineBSolid(); - - /** - *

- * setAntoineBSolid. - *

- * - * @param AntoineBSolid a double - */ - public void setAntoineBSolid(double AntoineBSolid); - - /** - *

- * isIsTBPfraction. - *

- * - * @return a boolean - */ - public boolean isIsTBPfraction(); - - /** - *

- * setIsTBPfraction. - *

- * - * @param isTBPfraction a boolean - */ - public void setIsTBPfraction(boolean isTBPfraction); - - /** - *

- * isIsPlusFraction. - *

- * - * @return a boolean - */ - public boolean isIsPlusFraction(); - - /** - *

- * setIsPlusFraction. - *

- * - * @param isPlusFraction a boolean - */ - public void setIsPlusFraction(boolean isPlusFraction); - - /** - *

- * isIsNormalComponent. - *

- * - * @return a boolean - */ - public boolean isIsNormalComponent(); - - /** - *

- * setIsNormalComponent. - *

- * - * @param isNormalComponent a boolean - */ - public void setIsNormalComponent(boolean isNormalComponent); - - /** - *

- * isIsIon. - *

- * - * @return a boolean - */ - public boolean isIsIon(); - - /** - *

- * setIsIon. - *

- * - * @param isIon a boolean - */ - public void setIsIon(boolean isIon); - - /** - *

- * setNormalLiquidDensity. - *

- * - * @param normalLiquidDensity a double - */ - public void setNormalLiquidDensity(double normalLiquidDensity); - - /** - *

- * doSolidCheck. - *

- * - * @return a boolean - */ - public boolean doSolidCheck(); - - /** - *

- * setSolidCheck. - *

- * - * @param solidCheck a boolean - */ - public void setSolidCheck(boolean solidCheck); - - /** - *

- * getAssociationScheme. - *

- * - * @return a {@link java.lang.String} object - */ - public java.lang.String getAssociationScheme(); - - /** - *

- * setAssociationScheme. - *

- * - * @param associationScheme a {@link java.lang.String} object - */ - public void setAssociationScheme(java.lang.String associationScheme); - - /** - *

- * getAntoineCSolid. - *

- * - * @return a double - */ - public double getAntoineCSolid(); - - /** - *

- * setAntoineCSolid. - *

- * - * @param AntoineCSolid a double - */ - public void setAntoineCSolid(double AntoineCSolid); - - /** - *

- * getCCsolidVaporPressure. - *

- * - * @param temperature a double - * @return a double - */ - public double getCCsolidVaporPressure(double temperature); - - /** - *

- * getCCsolidVaporPressuredT. - *

- * - * @param temperature a double - * @return a double - */ - public double getCCsolidVaporPressuredT(double temperature); - - /** - *

- * getHsub. - *

- * - * @return a double - */ - public double getHsub(); - - /** - *

- * getHenryCoefParameter. - *

- * - * @return an array of {@link double} objects - */ - public double[] getHenryCoefParameter(); - - /** - *

- * setHenryCoefParameter. - *

- * - * @param henryCoefParameter an array of {@link double} objects - */ - public void setHenryCoefParameter(double[] henryCoefParameter); - - /** - *

- * getHenryCoef. - *

- * - * @param temperature a double - * @return a double - */ - public double getHenryCoef(double temperature); - - /** - *

- * getHenryCoefdT. - *

- * - * @param temperature a double - * @return a double - */ - public double getHenryCoefdT(double temperature); - - /** - *

- * getMatiascopemanSolidParams. - *

- * - * @return an array of {@link double} objects - */ - public double[] getMatiascopemanSolidParams(); - - /** - *

- * setCriticalVolume. - *

- * - * @param criticalVolume a double - */ - public void setCriticalVolume(double criticalVolume); - - /** - *

- * getCriticalViscosity. - *

- * - * @return a double - */ - public double getCriticalViscosity(); - - /** - *

- * setCriticalViscosity. - *

- * - * @param criticalViscosity a double - */ - public void setCriticalViscosity(double criticalViscosity); - - /** - *

- * getMolarity. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getMolarity(PhaseInterface phase); - - /** - *

- * isHydrateFormer. - *

- * - * @return a boolean - */ - public boolean isHydrateFormer(); - - /** - *

- * setIsHydrateFormer. - *

- * - * @param isHydrateFormer a boolean - */ - public void setIsHydrateFormer(boolean isHydrateFormer); - - /** - *

- * getmSAFTi. - *

- * - * @return a double - */ - public double getmSAFTi(); - - /** - *

- * setmSAFTi. - *

- * - * @param mSAFTi a double - */ - public void setmSAFTi(double mSAFTi); - - /** - *

- * getSigmaSAFTi. - *

- * - * @return a double - */ - public double getSigmaSAFTi(); - - /** - *

- * setSigmaSAFTi. - *

- * - * @param sigmaSAFTi a double - */ - public void setSigmaSAFTi(double sigmaSAFTi); - - /** - *

- * getEpsikSAFT. - *

- * - * @return a double - */ - public double getEpsikSAFT(); - - /** - *

- * setEpsikSAFT. - *

- * - * @param epsikSAFT a double - */ - public void setEpsikSAFT(double epsikSAFT); - - /** - *

- * getAssociationVolumeSAFT. - *

- * - * @return a double - */ - public double getAssociationVolumeSAFT(); - - /** - *

- * setAssociationVolumeSAFT. - *

- * - * @param associationVolumeSAFT a double - */ - public void setAssociationVolumeSAFT(double associationVolumeSAFT); - - /** - *

- * getAssociationEnergySAFT. - *

- * - * @return a double - */ - public double getAssociationEnergySAFT(); - - /** - *

- * setAssociationEnergySAFT. - *

- * - * @param associationEnergySAFT a double - */ - public void setAssociationEnergySAFT(double associationEnergySAFT); - - /** - *

- * getSurfaceTenisionInfluenceParameter. - *

- * - * @param temperature a double - * @return a double - */ - public double getSurfaceTenisionInfluenceParameter(double temperature); - - /** - *

- * getCpA. - *

- * - * @return a double - */ - public double getCpA(); - - /** - *

- * setCpA. - *

- * - * @param CpA a double - */ - public void setCpA(double CpA); - - /** - *

- * getCpB. - *

- * - * @return a double - */ - public double getCpB(); - - /** - *

- * setCpB. - *

- * - * @param CpB a double - */ - public void setCpB(double CpB); - - /** - *

- * getCpC. - *

- * - * @return a double - */ - public double getCpC(); - - /** - *

- * setCpC. - *

- * - * @param CpC a double - */ - public void setCpC(double CpC); - - /** - *

- * getCpD. - *

- * - * @return a double - */ - public double getCpD(); - - /** - *

- * setCpD. - *

- * - * @param CpD a double - */ - public void setCpD(double CpD); - - /** - *

- * getCpE. - *

- * - * @return a double - */ - public double getCpE(); - - /** - *

- * setCpE. - *

- * - * @param CpE a double - */ - public void setCpE(double CpE); - - static public String getComponentName(String name) { - LinkedHashMap c = getComponentMap(); - if (c.containsKey(name)) { - return c.get(name); - } else { - return name; - } - } - - static public LinkedHashMap getComponentMap() { - LinkedHashMap c = new LinkedHashMap<>(); - c.put("H2O", "water"); - c.put("N2", "nitrogen"); - c.put("C1", "methane"); - c.put("C2", "ethane"); - c.put("C3", "propane"); - c.put("iC4", "i-butane"); - c.put("nC4", "n-butane"); - c.put("iC5", "i-pentane"); - c.put("nC5", "n-pentane"); - c.put("C6", "n-hexane"); - c.put("O2", "oxygen"); - c.put("He", "helium"); - c.put("H2", "hydrogen"); - c.put("Ar", "argon"); - c.put("H2S", "H2S"); - c.put("nC7", "n-heptane"); - c.put("nC8", "n-octane"); - c.put("nC9", "n-nonane"); - c.put("O2", "oxygen"); - return c; + /** + *

+ * Helper function to create component. Typically called from constructors. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component in system. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public void createComponent(String name, double moles, double molesInPhase, int compIndex); + + /** + *

+ * isInert. + *

+ * + * @return a boolean + */ + public boolean isInert(); + + /** + *

+ * setIdealGasEnthalpyOfFormation. + *

+ * + * @param idealGasEnthalpyOfFormation a double + */ + public void setIdealGasEnthalpyOfFormation(double idealGasEnthalpyOfFormation); + + /** + *

+ * getFormulae. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getFormulae(); + + /** + *

+ * getVolumeCorrectionT. + *

+ * + * @return a double + */ + public double getVolumeCorrectionT(); + + /** + *

+ * setVolumeCorrectionT. + *

+ * + * @param volumeCorrectionT a double + */ + public void setVolumeCorrectionT(double volumeCorrectionT); + + /** + *

+ * getVolumeCorrectionConst. + *

+ * + * @return a double + */ + public double getVolumeCorrectionConst(); + + /** + *

+ * getCASnumber. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getCASnumber(); + + /** + *

+ * setVolumeCorrectionConst. + *

+ * + * @param volumeCorrection a double + */ + public void setVolumeCorrectionConst(double volumeCorrection); + + /** + *

+ * getPureComponentCpLiquid. + *

+ * + * @param temperature a double + * @return a double + */ + public double getPureComponentCpLiquid(double temperature); + + /** + *

+ * getPureComponentCpSolid. + *

+ * + * @param temperature a double + * @return a double + */ + public double getPureComponentCpSolid(double temperature); + + /** + *

+ * getdrhodN. + *

+ * + * @return a double + */ + public double getdrhodN(); + + /** + *

+ * getVolumeCorrectionT_CPA. + *

+ * + * @return a double + */ + public double getVolumeCorrectionT_CPA(); + + /** + * method to return flow rate of a component. + * + * @param flowunit Supported units are kg/sec, kg/min, kg/hr, tonnes/year, m3/sec, m3/min, m3/hr, + * mole/sec, mole/min, mole/hr + * @return flow rate in specified unit + */ + public double getFlowRate(String flowunit); + + /** + * method to return total flow rate of a component. + * + * @param flowunit Supported units are kg/sec, kg/min, kg/hr, mole/sec, mole/min, mole/hr + * @return total flow rate in specified unit + */ + public double getTotalFlowRate(String flowunit); + + /** + *

+ * setVolumeCorrectionT_CPA. + *

+ * + * @param volumeCorrectionT_CPA a double + */ + public void setVolumeCorrectionT_CPA(double volumeCorrectionT_CPA); + + /** + *

+ * setNumberOfAssociationSites. + *

+ * + * @param numb a int + */ + public void setNumberOfAssociationSites(int numb); + + /** + *

+ * setCASnumber. + *

+ * + * @param CASnumber a {@link java.lang.String} object + */ + public void setCASnumber(String CASnumber); + + /** + *

+ * setFormulae. + *

+ * + * @param formulae a {@link java.lang.String} object + */ + public void setFormulae(String formulae); + + /** + *

+ * Insert this component into NeqSim component database. + *

+ * + * @param databaseName Name of database. Not in use, overwritten as comptemp. + */ + public void insertComponentIntoDatabase(String databaseName); + + /** + *

+ * getOrginalNumberOfAssociationSites. + *

+ * + * @return a int + */ + public int getOrginalNumberOfAssociationSites(); + + /** + *

+ * getRacketZCPA. + *

+ * + * @return a double + */ + public double getRacketZCPA(); + + /** + *

+ * setRacketZCPA. + *

+ * + * @param racketZCPA a double + */ + public void setRacketZCPA(double racketZCPA); + + /** + *

+ * isHydrocarbon. + *

+ * + * @return a boolean + */ + public boolean isHydrocarbon(); + + /** + *

+ * getChemicalPotentialdP. + *

+ * + * @return a double + */ + public double getChemicalPotentialdP(); + + /** + *

+ * setHeatOfFusion. + *

+ * + * @param heatOfFusion a double + */ + public void setHeatOfFusion(double heatOfFusion); + + /** + *

+ * getChemicalPotentialIdealReference. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getChemicalPotentialIdealReference(PhaseInterface phase); + + /** + *

+ * getHeatOfFusion. + *

+ * + * @return a double + */ + public double getHeatOfFusion(); + + /** + *

+ * setSurfTensInfluenceParam. + *

+ * + * @param factNum a int + * @param val a double + */ + public void setSurfTensInfluenceParam(int factNum, double val); + + /** + *

+ * isWaxFormer. + *

+ * + * @return a boolean + */ + public boolean isWaxFormer(); + + /** + *

+ * setWaxFormer. + *

+ * + * @param waxFormer a boolean + */ + public void setWaxFormer(boolean waxFormer); + + /** + *

+ * getSurfTensInfluenceParam. + *

+ * + * @param factNum a int + * @return a double + */ + public double getSurfTensInfluenceParam(int factNum); + + /** + *

+ * getChemicalPotentialdN. + *

+ * + * @param i a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getChemicalPotentialdN(int i, PhaseInterface phase); + + /** + *

+ * getChemicalPotential. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getChemicalPotential(PhaseInterface phase); + + /** + *

+ * getChemicalPotential. + *

+ * + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double getChemicalPotential(double temperature, double pressure); + // public double fugcoef(PhaseInterface phase, int numberOfComponents, double + // temperature, double pressure); + // public double fugcoefDiffTemp(PhaseInterface phase, int numberOfComponents, + // double temperature, double pressure); + // public double fugcoefDiffPres(PhaseInterface phase, int numberOfComponents, + // double temperature, double pressure); + // public double[] fugcoefDiffN(PhaseInterface phase, int numberOfComponents, + // double temperature, double pressure); + + /** + *

+ * getChemicalPotentialdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getChemicalPotentialdT(PhaseInterface phase); + + /** + *

+ * getChemicalPotentialdNTV. + *

+ * + * @param i a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getChemicalPotentialdNTV(int i, PhaseInterface phase); + + /** + *

+ * setTriplePointTemperature. + *

+ * + * @param triplePointTemperature a double + */ + public void setTriplePointTemperature(double triplePointTemperature); + + /** + *

+ * setComponentType. + *

+ * + * @param componentType a {@link java.lang.String} object + */ + public void setComponentType(String componentType); + + /** + *

+ * seta. + *

+ * + * @param a a double + */ + public void seta(double a); + + /** + *

+ * getSphericalCoreRadius. + *

+ * + * @return a double + */ + public double getSphericalCoreRadius(); + + /** + *

+ * setb. + *

+ * + * @param b a double + */ + public void setb(double b); + + /** + *

+ * getNumberOfAssociationSites. + *

+ * + * @return a int + */ + public int getNumberOfAssociationSites(); + + /** + *

+ * getComponentType. + *

+ * + * @return a {@link java.lang.String} object + */ + public java.lang.String getComponentType(); + + /** + *

+ * getRate. + *

+ * + * @param unitName a {@link java.lang.String} object + * @return a double + */ + public double getRate(String unitName); + + /** + *

+ * Calculate, set and return fugacity coefficient. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object to get fugacity coefficient + * of. + * @return Fugacity coefficient + */ + public double fugcoef(PhaseInterface phase); + + /** + *

+ * setFugacityCoefficient. + *

+ * + * @param val a double + */ + public void setFugacityCoefficient(double val); + + /** + *

+ * fugcoefDiffPresNumeric. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double fugcoefDiffPresNumeric(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure); + + /** + *

+ * fugcoefDiffTempNumeric. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double fugcoefDiffTempNumeric(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure); + + /** + *

+ * logfugcoefdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double logfugcoefdT(PhaseInterface phase); + + /** + *

+ * logfugcoefdNi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param k a int + * @return a double + */ + public double logfugcoefdNi(PhaseInterface phase, int k); + + /** + *

+ * logfugcoefdP. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double logfugcoefdP(PhaseInterface phase); + + /** + *

+ * logfugcoefdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return an array of type double + */ + public double[] logfugcoefdN(PhaseInterface phase); + + /** + *

+ * setdfugdt. + *

+ * + * @param val a double + */ + public void setdfugdt(double val); + + /** + *

+ * setdfugdp. + *

+ * + * @param val a double + */ + public void setdfugdp(double val); + + /** + *

+ * setdfugdn. + *

+ * + * @param i a int + * @param val a double + */ + public void setdfugdn(int i, double val); + + /** + *

+ * setdfugdx. + *

+ * + * @param i a int + * @param val a double + */ + public void setdfugdx(int i, double val); + + /** + *

+ * setStokesCationicDiameter. + *

+ * + * @param stokesCationicDiameter a double + */ + public void setStokesCationicDiameter(double stokesCationicDiameter); + + /** + *

+ * setProperties. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentInterface} object + */ + public void setProperties(ComponentInterface component); + + /** + *

+ * getTriplePointDensity. + *

+ * + * @return a double + */ + public double getTriplePointDensity(); + + /** + *

+ * getCriticalCompressibilityFactor. + *

+ * + * @return a double + */ + public double getCriticalCompressibilityFactor(); + + /** + *

+ * setCriticalCompressibilityFactor. + *

+ * + * @param criticalCompressibilityFactor a double + */ + public void setCriticalCompressibilityFactor(double criticalCompressibilityFactor); + + /** + *

+ * setMolarMass. + *

+ * + * @param molarMass a double + */ + public void setMolarMass(double molarMass); + + /** + *

+ * setMolarMass. + *

+ * + * @param molarMass a double + * @param unit a String + */ + public void setMolarMass(double molarMass, String unit); + + /** + *

+ * calcActivity. + *

+ * + * @return a boolean + */ + public boolean calcActivity(); + + /** + *

+ * getMolality. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getMolality(PhaseInterface phase); + + /** + *

+ * setLennardJonesMolecularDiameter. + *

+ * + * @param lennardJonesMolecularDiameter a double + */ + public void setLennardJonesMolecularDiameter(double lennardJonesMolecularDiameter); + + /** + *

+ * setLennardJonesEnergyParameter. + *

+ * + * @param lennardJonesEnergyParameter a double + */ + public void setLennardJonesEnergyParameter(double lennardJonesEnergyParameter); + + /** + *

+ * setSphericalCoreRadius. + *

+ * + * @param sphericalCoreRadius a double + */ + public void setSphericalCoreRadius(double sphericalCoreRadius); + + /** + *

+ * getTriplePointPressure. + *

+ * + * @return a double + */ + public double getTriplePointPressure(); + + /** + *

+ * getTriplePointTemperature. + *

+ * + * @return a double + */ + public double getTriplePointTemperature(); + + /** + *

+ * getMeltingPointTemperature. + *

+ * + * @return a double + */ + public double getMeltingPointTemperature(); + + /** + *

+ * getIdealGasEnthalpyOfFormation. + *

+ * + * @return a double + */ + public double getIdealGasEnthalpyOfFormation(); + + /** + *

+ * Change the number of moles of component of phase,i.e., numberOfMolesInPhase but do + * not change the total number of moles of component in system. + *

+ * + * @param dn Number of moles of component added to phase + */ + public default void addMoles(double dn) { + addMolesChemReac(dn, 0); + } + + /** + *

+ * Change the number of moles of component of phase, i.e., numberOfMolesInPhase, and + * total number of moles of component in system, i.e., numberOfMoles with the same + * amount. + *

+ * + * @param dn Number of moles of component added to phase and system + */ + public default void addMolesChemReac(double dn) { + addMolesChemReac(dn, dn); + } + + /** + *

+ * Change the number of moles of component of phase, i.e., numberOfMolesInPhase, and + * total number of moles of component in system, i.e., numberOfMoles with separate + * amounts. + *

+ * + * @param dn Number of moles of component to add to phase + * @param totdn Number of moles of component to add to system + */ + public void addMolesChemReac(double dn, double totdn); + + /** + *

+ * getIdealGasGibbsEnergyOfFormation. + *

+ * + * @return a double + */ + public double getIdealGasGibbsEnergyOfFormation(); + + /** + *

+ * setTC. + *

+ * + * @param val a double + */ + public void setTC(double val); + + /** + *

+ * setTC. + *

+ * + * @param val a double + * @param unit a String + */ + public void setTC(double val, String unit); + + /** + *

+ * setPC. + *

+ * + * @param val a double + */ + public void setPC(double val); + + /** + *

+ * setPC. + *

+ * + * @param val a double + * @param unit a String + */ + public void setPC(double val, String unit); + + /** + *

+ * getDiElectricConstantdTdT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getDiElectricConstantdTdT(double temperature); + + /** + *

+ * getIdealGasAbsoluteEntropy. + *

+ * + * @return a double + */ + public double getIdealGasAbsoluteEntropy(); + + /** + *

+ * getDiElectricConstantdT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getDiElectricConstantdT(double temperature); + + /** + *

+ * Initialize component. + *

+ * + * @param temperature Temperature in unit ?. Used to calculate K. + * @param pressure Pressure in unit ?. Used to calculate K. + * @param totalNumberOfMoles Total number of moles of component. + * @param beta Beta value, i.e., + * @param initType Init type. Calculate K, z, x if type == + * 0. + */ + public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, + int initType); + + /** + *

+ * Finit. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param totalNumberOfMoles a double + * @param beta a double + * @param numberOfComponents a int + * @param initType a int + */ + public void Finit(PhaseInterface phase, double temperature, double pressure, + double totalNumberOfMoles, double beta, int numberOfComponents, int initType); + + /** + *

+ * Getter for property x, i.e., the mole fraction of a component in a specific phase. For the mole + * fraction for a specific phase see {@link getz} NB! init(0) must be called first from system. + *

+ * + * @return a double + */ + public double getx(); + + /** + *

+ * Getter for property z, i.e., the mole fraction of a component in the fluid. For the mole + * fraction for a specific phase see {@link getx} NB! init(0) must be called first from system. + *

+ * + * @return a double + */ + public double getz(); + + /** + *

+ * The distribution coefficient y/x between gas and liquid for a component. NB! init must be + * called first. + *

+ * + * @return a double + */ + public double getK(); + + /** + *

+ * Returns the critical temperature of the component. + *

+ * + * @return The critical temperature of the component + */ + public double getTC(); + + /** + *

+ * Returns the critical temperature of the component. + *

+ * + * @param unit Unit of return temperature + * @return The critical temperature of the component + */ + public double getTC(String unit); + + /** + *

+ * Getter for property NormalBoilingPoint. + *

+ * + * @return The normal boiling point of the component with unit Kelvin + */ + public double getNormalBoilingPoint(); + + /** + *

+ * Getter for property NormalBoilingPoint. + *

+ * + * @param unit Unit of return pressure + * + * @return The normal boiling point of the component + */ + public double getNormalBoilingPoint(String unit); + + /** + *

+ * setNormalBoilingPoint. + *

+ * + * @param normalBoilingPoint a double with unit Kelvin + */ + public void setNormalBoilingPoint(double normalBoilingPoint); + + /** + *

+ * Returns the critical pressure of the component. + *

+ * + * @return The critical pressure of the component + */ + public double getPC(); + + /** + *

+ * Returns the critical pressure of the component. + *

+ * + * @param unit Unit of return pressure + * @return The critical pressure of the component + */ + public double getPC(String unit); + + /** + *

+ * setViscosityAssociationFactor. + *

+ * + * @param val a double + */ + public void setViscosityAssociationFactor(double val); + + /** + *

+ * getIndex. + *

+ * + * @return a int + */ + public int getIndex(); + + /** + *

+ * getReferenceStateType. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getReferenceStateType(); + + /** + *

+ * setLiquidConductivityParameter. + *

+ * + * @param number a double + * @param i a int + */ + public void setLiquidConductivityParameter(double number, int i); + + /** + *

+ * getLiquidConductivityParameter. + *

+ * + * @param i a int + * @return a double + */ + public double getLiquidConductivityParameter(int i); + + /** + *

+ * getNormalLiquidDensity. + *

+ * + * @return a double + */ + public double getNormalLiquidDensity(); + + /** + *

+ * getNormalLiquidDensity. + *

+ * + * @param unit i String with unit of return return a double + * @return a double + */ + public double getNormalLiquidDensity(String unit); + + /** + *

+ * Getter for property componentName. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getComponentName(); + + /** + *

+ * Setter for property componentName. + *

+ * + * @param componentName a {@link java.lang.String} object + */ + public void setComponentName(String componentName); + + /** + *

+ * Getter for property componentNumber. + *

+ * + * @return Index number of component in phase object component array. + */ + public int getComponentNumber(); + + /** + *

+ * Setter for property componentNumber. + *

+ * + * @param numb Index number of component in phase object component array. + */ + public void setComponentNumber(int numb); + + /** + *

+ * getHeatOfVapourization. + *

+ * + * @param temp a double + * @return a double + */ + public double getHeatOfVapourization(double temp); + + /** + *

+ * getNumberOfmoles. + *

+ * + * @return a double + */ + public double getNumberOfmoles(); + + /** + *

+ * getGibbsEnergyOfFormation. + *

+ * + * @return a double + */ + public double getGibbsEnergyOfFormation(); + + /** + *

+ * getReferencePotential. + *

+ * + * @return a double + */ + public double getReferencePotential(); + + /** + *

+ * getLogFugacityCoefficient. + *

+ * + * @return a double + */ + public default double getLogFugacityCoefficient() { + return Math.log(getFugacityCoefficient()); + } + + /** + *

+ * setReferencePotential. + *

+ * + * @param ref a double + */ + public void setReferencePotential(double ref); + + /** + *

+ * getNumberOfMolesInPhase. + *

+ * + * @return a double + */ + public double getNumberOfMolesInPhase(); + + /** + *

+ * setNumberOfMolesInPhase. + *

+ * + * @param moles a double + */ + public void setNumberOfMolesInPhase(double moles); + + /** + *

+ * getIdEntropy. + *

+ * + * @param temperature a double + * @return a double + */ + public double getIdEntropy(double temperature); + + /** + *

+ * setx. + *

+ * + * @param newx a double + */ + public void setx(double newx); + + /** + *

+ * setz. + *

+ * + * @param newz a double + */ + public void setz(double newz); + + /** + *

+ * setK. + *

+ * + * @param newK a double + */ + public void setK(double newK); + + /** + *

+ * getDiElectricConstant. + *

+ * + * @param temperature a double + * @return a double + */ + public double getDiElectricConstant(double temperature); + + /** + *

+ * getIonicCharge. + *

+ * + * @return a double + */ + public double getIonicCharge(); + + /** + *

+ * getdfugdt. + *

+ * + * @return a double + */ + public double getdfugdt(); + + /** + *

+ * getdfugdp. + *

+ * + * @return a double + */ + public double getdfugdp(); + + /** + *

+ * getSolidVaporPressure. + *

+ * + * @param temperature a double + * @return a double + */ + public double getSolidVaporPressure(double temperature); + + /** + *

+ * Return the ideal-gas molar heat capacity of a chemical using polynomial regressed coefficients + * as described by Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: + * McGraw-Hill Professional, 2000. + *

+ * + * @param temperature a double + * @return ideal gas Cp for the component in the specific phase [J/molK] + */ + public double getCp0(double temperature); + + /** + *

+ * getCv0. + *

+ * + * @param temperature a double + * @return ideal gas Cv for the component in the specific phase [J/molK] + */ + public double getCv0(double temperature); + + /** + *

+ * getHID. + *

+ * + * @param T a double + * @return a double + */ + public double getHID(double T); + + /** + *

+ * getEnthalpy. + *

+ * + * @param temperature a double + * @return a double + */ + public double getEnthalpy(double temperature); + + /** + * Get molar mass of component. + * + * @return molar mass in unit kg/mol + */ + public double getMolarMass(); + + /** + * Get molar mass of component. + * + * @param unit a String + * @return molar mass in unit kg/mol + */ + public double getMolarMass(String unit); + + /** + *

+ * getLennardJonesMolecularDiameter. + *

+ * + * @return Units in m*e10 + */ + public double getLennardJonesMolecularDiameter(); + + /** + *

+ * getLennardJonesEnergyParameter. + *

+ * + * @return a double + */ + public double getLennardJonesEnergyParameter(); + + /** + *

+ * getEntropy. + *

+ * + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double getEntropy(double temperature, double pressure); + + /** + *

+ * getdfugdx. + *

+ * + * @param i a int + * @return a double + */ + public double getdfugdx(int i); + + /** + *

+ * getdfugdn. + *

+ * + * @param i a int + * @return a double + */ + public double getdfugdn(int i); + + /** + *

+ * getHresTP. + *

+ * + * @param temperature a double + * @return a double + */ + public double getHresTP(double temperature); + + /** + *

+ * getGresTP. + *

+ * + * @param temperature a double + * @return a double + */ + public double getGresTP(double temperature); + + /** + *

+ * getSresTP. + *

+ * + * @param temperature a double + * @return a double + */ + public double getSresTP(double temperature); + + /** + *

+ * getFugacityCoefficient. + *

+ * + * @return a double + */ + public double getFugacityCoefficient(); + + /** + *

+ * getAcentricFactor. + *

+ * + * @return a double + */ + public double getAcentricFactor(); + + /** + *

+ * setAttractiveTerm. + *

+ * + * @param i a int + */ + public void setAttractiveTerm(int i); + + /** + *

+ * getAttractiveTerm. + *

+ * + * @return a {@link neqsim.thermo.component.attractiveEosTerm.AttractiveTermInterface} object + */ + public AttractiveTermInterface getAttractiveTerm(); + + /** + *

+ * setNumberOfmoles. + *

+ * + * @param newmoles a double + */ + public void setNumberOfmoles(double newmoles); + + /** + *

+ * getAntoineVaporPressure. + *

+ * + * @param temp a double + * @return a double + */ + public double getAntoineVaporPressure(double temp); + + /** + *

+ * getAntoineVaporTemperature. + *

+ * + * @param pres a double + * @return a double + */ + public double getAntoineVaporTemperature(double pres); + + /** + *

+ * getSolidVaporPressuredT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getSolidVaporPressuredT(double temperature); + + /** + *

+ * getGibbsEnergy. + *

+ * + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double getGibbsEnergy(double temperature, double pressure); + + /** + *

+ * clone. + *

+ * + * @return a {@link neqsim.thermo.component.ComponentInterface} object + */ + public ComponentInterface clone(); + + /** + *

+ * This function handles the retrieval of a chemical’s dipole moment. Dipole moment, [debye] as a + * double + *

+ * + * @return a double + */ + public double getDebyeDipoleMoment(); + + /** + *

+ * getViscosityCorrectionFactor. + *

+ * + * @return a double + */ + public double getViscosityCorrectionFactor(); + + /** + *

+ * getCriticalVolume. + *

+ * + * @return a double + */ + public double getCriticalVolume(); + + /** + *

+ * getRacketZ. + *

+ * + * @return a double + */ + public double getRacketZ(); + + /** + *

+ * Getter for property componentName, i.e., normalized component name. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getName(); + + /** + *

+ * getLiquidViscosityParameter. + *

+ * + * @param i a int + * @return a double + */ + public double getLiquidViscosityParameter(int i); + + /** + *

+ * getLiquidViscosityModel. + *

+ * + * @return a int + */ + public int getLiquidViscosityModel(); + + /** + *

+ * setAcentricFactor. + *

+ * + * @param val a double + */ + public void setAcentricFactor(double val); + + /** + *

+ * getVolumeCorrection. + *

+ * + * @return a double + */ + public double getVolumeCorrection(); + + /** + *

+ * setRacketZ. + *

+ * + * @param val a double + */ + public void setRacketZ(double val); + + /** + *

+ * setLiquidViscosityModel. + *

+ * + * @param modelNumber a int + */ + public void setLiquidViscosityModel(int modelNumber); + + /** + *

+ * setLiquidViscosityParameter. + *

+ * + * @param number a double + * @param i a int + */ + public void setLiquidViscosityParameter(double number, int i); + + /** + *

+ * getElements. + *

+ * + * @return a {@link neqsim.thermo.atomElement.Element} object + */ + public Element getElements(); + + /** + *

+ * getSchwartzentruberParams. + *

+ * + * @return an array of type double + */ + public double[] getSchwartzentruberParams(); + + /** + *

+ * setSchwartzentruberParams. + *

+ * + * @param i a int + * @param param a double + */ + public void setSchwartzentruberParams(int i, double param); + + /** + *

+ * getTwuCoonParams. + *

+ * + * @return an array of type double + */ + public double[] getTwuCoonParams(); + + /** + *

+ * setTwuCoonParams. + *

+ * + * @param i a int + * @param param a double + */ + public void setTwuCoonParams(int i, double param); + + /** + *

+ * getParachorParameter. + *

+ * + * @return a double + */ + public double getParachorParameter(); + + /** + *

+ * setParachorParameter. + *

+ * + * @param parachorParameter a double + */ + public void setParachorParameter(double parachorParameter); + + /** + *

+ * getPureComponentSolidDensity. Calculates the pure component solid density in kg/liter Should + * only be used in the valid temperature range (specified in component database). + *

+ * + * @param temperature a double + * @return pure component solid density in kg/liter + */ + public double getPureComponentSolidDensity(double temperature); + + /** + *

+ * getPureComponentLiquidDensity. Calculates the pure component liquid density in kg/liter Should + * only be used in the valid temperature range (specified in component database). This method + * seems to give bad results at the moment + *

+ * + * @param temperature a double + * @return pure component liquid density in kg/liter + */ + public double getPureComponentLiquidDensity(double temperature); + + /** + *

+ * getChemicalPotentialdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getChemicalPotentialdV(PhaseInterface phase); + + /** + * Calculates the pure component heat of vaporization in J/mol. + * + * @param temperature a double + * @return a double + */ + public double getPureComponentHeatOfVaporization(double temperature); + + /** + *

+ * getPaulingAnionicDiameter. + *

+ * + * @return a double + */ + public double getPaulingAnionicDiameter(); + + /** + *

+ * getStokesCationicDiameter. + *

+ * + * @return a double + */ + public double getStokesCationicDiameter(); + + /** + *

+ * getAttractiveTermNumber. + *

+ * + * @return a int + */ + public int getAttractiveTermNumber(); + + /** + *

+ * getVoli. + *

+ * + * @return a double + */ + public double getVoli(); + + /** + *

+ * getAntoineVaporPressuredT. + *

+ * + * @param temp a double + * @return a double + */ + public double getAntoineVaporPressuredT(double temp); + + /** + *

+ * getMatiascopemanParams. + *

+ * + * @return an array of type double + */ + public double[] getMatiascopemanParams(); + + /** + *

+ * setMatiascopemanParams. + *

+ * + * @param index a int + * @param matiascopemanParams a double + */ + public void setMatiascopemanParams(int index, double matiascopemanParams); + + /** + *

+ * setMatiascopemanParams. + *

+ * + * @param matiascopemanParams an array of type double + */ + public void setMatiascopemanParams(double[] matiascopemanParams); + + /** + *

+ * getAssociationVolume. + *

+ * + * @return a double + */ + public double getAssociationVolume(); + + /** + *

+ * setAssociationVolume. + *

+ * + * @param associationVolume a double + */ + public void setAssociationVolume(double associationVolume); + + /** + *

+ * getAssociationEnergy. + *

+ * + * @return a double + */ + public double getAssociationEnergy(); + + /** + *

+ * setAssociationEnergy. + *

+ * + * @param associationEnergy a double + */ + public void setAssociationEnergy(double associationEnergy); + + /** + *

+ * getAntoineASolid. + *

+ * + * @return a double + */ + public double getAntoineASolid(); + + /** + *

+ * setAntoineASolid. + *

+ * + * @param AntoineASolid a double + */ + public void setAntoineASolid(double AntoineASolid); + + /** + *

+ * getAntoineBSolid. + *

+ * + * @return a double + */ + public double getAntoineBSolid(); + + /** + *

+ * setAntoineBSolid. + *

+ * + * @param AntoineBSolid a double + */ + public void setAntoineBSolid(double AntoineBSolid); + + /** + *

+ * isIsTBPfraction. + *

+ * + * @return a boolean + */ + public boolean isIsTBPfraction(); + + /** + *

+ * setIsTBPfraction. + *

+ * + * @param isTBPfraction a boolean + */ + public void setIsTBPfraction(boolean isTBPfraction); + + /** + *

+ * isIsPlusFraction. + *

+ * + * @return a boolean + */ + public boolean isIsPlusFraction(); + + /** + *

+ * setIsPlusFraction. + *

+ * + * @param isPlusFraction a boolean + */ + public void setIsPlusFraction(boolean isPlusFraction); + + /** + *

+ * isIsNormalComponent. + *

+ * + * @return a boolean + */ + public boolean isIsNormalComponent(); + + /** + *

+ * setIsNormalComponent. + *

+ * + * @param isNormalComponent a boolean + */ + public void setIsNormalComponent(boolean isNormalComponent); + + /** + *

+ * isIsIon. + *

+ * + * @return a boolean + */ + public boolean isIsIon(); + + /** + *

+ * setIsIon. + *

+ * + * @param isIon a boolean + */ + public void setIsIon(boolean isIon); + + /** + *

+ * setNormalLiquidDensity. + *

+ * + * @param normalLiquidDensity a double + */ + public void setNormalLiquidDensity(double normalLiquidDensity); + + /** + *

+ * Getter for field solidCheck. + *

+ * + * @return a boolean + */ + public boolean doSolidCheck(); + + /** + *

+ * Setter for field solidCheck. + *

+ * + * @param checkForSolids Set true to do solid phase check and calculations + */ + public void setSolidCheck(boolean checkForSolids); + + /** + *

+ * getAssociationScheme. + *

+ * + * @return a {@link java.lang.String} object + */ + public java.lang.String getAssociationScheme(); + + /** + *

+ * setAssociationScheme. + *

+ * + * @param associationScheme a {@link java.lang.String} object + */ + public void setAssociationScheme(java.lang.String associationScheme); + + /** + *

+ * getAntoineCSolid. + *

+ * + * @return a double + */ + public double getAntoineCSolid(); + + /** + *

+ * setAntoineCSolid. + *

+ * + * @param AntoineCSolid a double + */ + public void setAntoineCSolid(double AntoineCSolid); + + /** + *

+ * getCCsolidVaporPressure. Calculates the pure comonent solid vapor pressure (bar) with the C-C + * equation, based on Hsub Should only be used in the valid temperature range below the triple + * point (specified in component database). + *

+ * + * @param temperature a double + * @return Calculated solid vapor pressure in bar. + */ + public double getCCsolidVaporPressure(double temperature); + + /** + *

+ * getCCsolidVaporPressuredT. Calculates the DT of pure comonent solid vapor pressure (bar) with + * the C-C equation, based on Hsub Should only be used in the valid temperature range below the + * triple point (specified in component database). + *

+ * + * @param temperature a double + * @return Calculated solid vapor pressure in bar. + */ + public double getCCsolidVaporPressuredT(double temperature); + + /** + *

+ * getHsub. + *

+ * + * @return a double + */ + public double getHsub(); + + /** + *

+ * getHenryCoefParameter. + *

+ * + * @return an array of type double + */ + public double[] getHenryCoefParameter(); + + /** + *

+ * setHenryCoefParameter. + *

+ * + * @param henryCoefParameter an array of type double + */ + public void setHenryCoefParameter(double[] henryCoefParameter); + + /** + *

+ * getHenryCoef. Getter for property Henrys Coefficient. Unit is bar. ln H = C1 + C2/T + C3lnT + + * C4*T + *

+ * + * @param temperature a double + * @return Henrys Coefficient in bar + */ + public double getHenryCoef(double temperature); + + /** + *

+ * getHenryCoefdT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getHenryCoefdT(double temperature); + + /** + *

+ * getMatiascopemanSolidParams. + *

+ * + * @return an array of type double + */ + public double[] getMatiascopemanSolidParams(); + + /** + *

+ * setCriticalVolume. + *

+ * + * @param criticalVolume a double + */ + public void setCriticalVolume(double criticalVolume); + + /** + *

+ * getCriticalViscosity. + *

+ * + * @return a double + */ + public double getCriticalViscosity(); + + /** + *

+ * setCriticalViscosity. + *

+ * + * @param criticalViscosity a double + */ + public void setCriticalViscosity(double criticalViscosity); + + /** + *

+ * getMolarity. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getMolarity(PhaseInterface phase); + + /** + *

+ * isHydrateFormer. + *

+ * + * @return a boolean + */ + public boolean isHydrateFormer(); + + /** + *

+ * setIsHydrateFormer. + *

+ * + * @param isHydrateFormer a boolean + */ + public void setIsHydrateFormer(boolean isHydrateFormer); + + /** + *

+ * getmSAFTi. + *

+ * + * @return a double + */ + public double getmSAFTi(); + + /** + *

+ * setmSAFTi. + *

+ * + * @param mSAFTi a double + */ + public void setmSAFTi(double mSAFTi); + + /** + *

+ * getSigmaSAFTi. + *

+ * + * @return a double + */ + public double getSigmaSAFTi(); + + /** + *

+ * setSigmaSAFTi. + *

+ * + * @param sigmaSAFTi a double + */ + public void setSigmaSAFTi(double sigmaSAFTi); + + /** + *

+ * getEpsikSAFT. + *

+ * + * @return a double + */ + public double getEpsikSAFT(); + + /** + *

+ * setEpsikSAFT. + *

+ * + * @param epsikSAFT a double + */ + public void setEpsikSAFT(double epsikSAFT); + + /** + *

+ * getAssociationVolumeSAFT. + *

+ * + * @return a double + */ + public double getAssociationVolumeSAFT(); + + /** + *

+ * setAssociationVolumeSAFT. + *

+ * + * @param associationVolumeSAFT a double + */ + public void setAssociationVolumeSAFT(double associationVolumeSAFT); + + /** + *

+ * getAssociationEnergySAFT. + *

+ * + * @return a double + */ + public double getAssociationEnergySAFT(); + + /** + *

+ * setAssociationEnergySAFT. + *

+ * + * @param associationEnergySAFT a double + */ + public void setAssociationEnergySAFT(double associationEnergySAFT); + + /** + *

+ * getSurfaceTenisionInfluenceParameter. + *

+ * + * @param temperature a double + * @return a double + */ + public double getSurfaceTenisionInfluenceParameter(double temperature); + + /** + *

+ * getCpA. + *

+ * + * @return a double + */ + public double getCpA(); + + /** + *

+ * setCpA. + *

+ * + * @param CpA a double + */ + public void setCpA(double CpA); + + /** + *

+ * getCpB. + *

+ * + * @return a double + */ + public double getCpB(); + + /** + *

+ * setCpB. + *

+ * + * @param CpB a double + */ + public void setCpB(double CpB); + + /** + *

+ * getCpC. + *

+ * + * @return a double + */ + public double getCpC(); + + /** + *

+ * setCpC. + *

+ * + * @param CpC a double + */ + public void setCpC(double CpC); + + /** + *

+ * getCpD. + *

+ * + * @return a double + */ + public double getCpD(); + + /** + *

+ * setCpD. + *

+ * + * @param CpD a double + */ + public void setCpD(double CpD); + + /** + *

+ * getCpE. + *

+ * + * @return a double + */ + public double getCpE(); + + /** + *

+ * setCpE. + *

+ * + * @param CpE a double + */ + public void setCpE(double CpE); + + /** + * getComponentNameFromAlias. Used to look up normal component name aliases. + * + * @param name Component name or alias of component name. + * @return Component name as used in database. + */ + public static String getComponentNameFromAlias(String name) { + LinkedHashMap c = getComponentNameMap(); + if (c.containsKey(name)) { + return c.get(name); + } else { + return name; } + } + + /** + * Get lookup map for component name alias. + * + * @return a {@link java.util.LinkedHashMap} Map with component alias name as key and component + * name as value. + */ + public static LinkedHashMap getComponentNameMap() { + LinkedHashMap c = new LinkedHashMap<>(); + c.put("H2O", "water"); + c.put("N2", "nitrogen"); + c.put("C1", "methane"); + c.put("C2", "ethane"); + c.put("C3", "propane"); + c.put("iC4", "i-butane"); + c.put("nC4", "n-butane"); + c.put("iC5", "i-pentane"); + c.put("nC5", "n-pentane"); + c.put("C6", "n-hexane"); + c.put("O2", "oxygen"); + c.put("He", "helium"); + c.put("H2", "hydrogen"); + c.put("Ar", "argon"); + c.put("H2S", "H2S"); + c.put("nC7", "n-heptane"); + c.put("nC8", "n-octane"); + c.put("nC9", "n-nonane"); + c.put("O2", "oxygen"); + return c; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentKentEisenberg.java b/src/main/java/neqsim/thermo/component/ComponentKentEisenberg.java index 971262bc14..a80f5c84a0 100644 --- a/src/main/java/neqsim/thermo/component/ComponentKentEisenberg.java +++ b/src/main/java/neqsim/thermo/component/ComponentKentEisenberg.java @@ -11,43 +11,40 @@ * @version $Id: $Id */ public class ComponentKentEisenberg extends ComponentGeNRTL { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ComponentKentEisenberg. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentKentEisenberg(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } + /** + *

+ * Constructor for ComponentKentEisenberg. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentKentEisenberg(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase) { - double gamma = 1.0; - if (referenceStateType.equals("solvent")) { - fugacityCoefficient = - gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure(); - gammaRefCor = gamma; - } else { - double activinf = 1.0; - if (ionicCharge == 0) { - fugacityCoefficient = - activinf * getHenryCoef(phase.getTemperature()) / phase.getPressure(); - } else { - fugacityCoefficient = 1e8; - } - gammaRefCor = activinf; - } - logFugacityCoefficient = Math.log(fugacityCoefficient); - // System.out.println("gamma " + gamma); - return fugacityCoefficient; + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase) { + double gamma = 1.0; + if (referenceStateType.equals("solvent")) { + fugacityCoefficient = + gamma * getAntoineVaporPressure(phase.getTemperature()) / phase.getPressure(); + gammaRefCor = gamma; + } else { + double activinf = 1.0; + if (ionicCharge == 0) { + fugacityCoefficient = activinf * getHenryCoef(phase.getTemperature()) / phase.getPressure(); + } else { + fugacityCoefficient = 1e8; + } + gammaRefCor = activinf; } + + return fugacityCoefficient; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentModifiedFurstElectrolyteEos.java b/src/main/java/neqsim/thermo/component/ComponentModifiedFurstElectrolyteEos.java index d930f586ef..c78ab76363 100644 --- a/src/main/java/neqsim/thermo/component/ComponentModifiedFurstElectrolyteEos.java +++ b/src/main/java/neqsim/thermo/component/ComponentModifiedFurstElectrolyteEos.java @@ -3,6 +3,7 @@ * * Created on 26. februar 2001, 17:59 */ + package neqsim.thermo.component; import neqsim.thermo.phase.PhaseInterface; @@ -17,931 +18,949 @@ * @version $Id: $Id */ public class ComponentModifiedFurstElectrolyteEos extends ComponentSrk { - private static final long serialVersionUID = 1000; - - double Wi = 0, WiT = 0.0, epsi = 0, epsiV = 0, epsIonici = 0, epsIoniciV = 0, dEpsdNi = 0, - ionicCoVolume = 0, solventdiElectricdn = 0.0, solventdiElectricdndT = 0, - diElectricdn = 0, diElectricdndV = 0, diElectricdndT = 0, bornterm = 0, alphai = 0.0, - alphaiT = 0.0, alphaiV = 0.0, XLRi = 0.0, XBorni = 0.0; - double sr2On = 1.0, lrOn = 1.0, bornOn = 1.0; - - /** - *

- * Constructor for ComponentModifiedFurstElectrolyteEos. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentModifiedFurstElectrolyteEos(String component_name, double moles, - double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - ionicCoVolume = this.getIonicDiameter(); - if (ionicCharge != 0) { - setIsIon(true); - } - b = ionicCharge != 0 - ? (neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[0] - * Math.pow(getIonicDiameter(), 3.0) - + neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[1]) - * 1e5 - : b; - a = ionicCharge != 0 ? 1.0e-35 : a; - setAttractiveParameter( - new neqsim.thermo.component.attractiveEosTerm.AttractiveTermSchwartzentruber(this)); - lennardJonesMolecularDiameter = ionicCharge != 0 - ? Math.pow((6.0 * b / 1.0e5) / (pi * avagadroNumber), 1.0 / 3.0) * 1e10 - : lennardJonesMolecularDiameter; - - // if(ionicCharge>0) stokesCationicDiameter = stokesCationicDiameter/3.0; - } + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ComponentModifiedFurstElectrolyteEos. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentModifiedFurstElectrolyteEos(int number, double TC, double PC, double M, - double a, double moles) { - super(number, TC, PC, M, a, moles); - } + double Wi = 0; - /** - *

- * initFurstParam. - *

- */ - public void initFurstParam() { - b = ionicCharge != 0 - ? (neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[0] - * Math.pow(getIonicDiameter(), 3.0) - + neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[1]) - * 1e5 - : b; - lennardJonesMolecularDiameter = ionicCharge != 0 - ? Math.pow((6.0 * b / 1.0e5) / (pi * avagadroNumber), 1.0 / 3.0) * 1e10 - : lennardJonesMolecularDiameter; - } + double WiT = 0.0; - /** {@inheritDoc} */ - @Override - public ComponentModifiedFurstElectrolyteEos clone() { - ComponentModifiedFurstElectrolyteEos clonedComponent = null; - try { - clonedComponent = (ComponentModifiedFurstElectrolyteEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedComponent; - } + double epsi = 0; - /** {@inheritDoc} */ - @Override - public double calca() { - if (ionicCharge != 0) { - return a; - } else { - return super.calca(); - } - } + double epsiV = 0; - /** {@inheritDoc} */ - @Override - public double calcb() { - if (ionicCharge != 0) { - return b; - } else { - return super.calcb(); - } - } + double epsIonici = 0; - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } + double epsIoniciV = 0; - /** {@inheritDoc} */ - @Override - public void Finit(PhaseInterface phase, double temp, double pres, double totMoles, double beta, - int numberOfComponents, int type) { - Wi = ((PhaseModifiedFurstElectrolyteEos) phase).calcWi(componentNumber, phase, temp, pres, - numberOfComponents); - WiT = ((PhaseModifiedFurstElectrolyteEos) phase).calcWiT(componentNumber, phase, temp, pres, - numberOfComponents); - epsi = dEpsdNi(phase, numberOfComponents, temp, pres); - epsiV = dEpsdNidV(phase, numberOfComponents, temp, pres); - epsIonici = dEpsIonicdNi(phase, numberOfComponents, temp, pres); - epsIoniciV = dEpsIonicdNidV(phase, numberOfComponents, temp, pres); - solventdiElectricdn = calcSolventdiElectricdn(phase, numberOfComponents, temp, pres); - solventdiElectricdndT = calcSolventdiElectricdndT(phase, numberOfComponents, temp, pres); - diElectricdn = calcdiElectricdn(phase, numberOfComponents, temp, pres); - diElectricdndV = calcdiElectricdndV(phase, numberOfComponents, temp, pres); - diElectricdndT = calcdiElectricdndT(phase, numberOfComponents, temp, pres); - alphai = -(electronCharge * electronCharge * avagadroNumber) / (vacumPermittivity - * Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 2.0) - * R * temp) * diElectricdn; - alphaiT = -electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 2.0) * R - * temp) - * diElectricdndT - + electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), - 2.0) * R * temp * temp) - * diElectricdn - + 2.0 * electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), - 3.0) * R * temp) - * diElectricdn - * ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstantdT(); - alphaiV = -electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 2.0) * R - * temp) - * diElectricdndV - + 2.0 * electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), - 3.0) * R * temp) - * diElectricdn - * ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstantdV(); - XLRi = calcXLRdN(phase, numberOfComponents, temp, pres); - if (getLennardJonesMolecularDiameter() > 0) { - XBorni = ionicCharge * ionicCharge / (getLennardJonesMolecularDiameter() * 1e-10); - } - super.Finit(phase, temp, pres, totMoles, beta, numberOfComponents, type); - } + double dEpsdNi = 0; + + double ionicCoVolume = 0; + + double solventdiElectricdn = 0.0; + + double solventdiElectricdndT = 0; - /** - *

- * dAlphaLRdndn. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dAlphaLRdndn(int j, PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - double temp = 2.0 * electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 3.0) * R - * temperature) - * diElectricdn - * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getDiElectricConstantdn() - - electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), - 2.0) * R * temperature) - * calcdiElectricdndn(j, phase, numberOfComponents, temperature, pressure); - return temp; - } - - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double Fsup = 0, FSR2 = 0, FLR = 0, FBorn = 0; - Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); - FSR2 = dFSR2dN(phase, numberOfComponents, temperature, pressure); - FLR = dFLRdN(phase, numberOfComponents, temperature, pressure); - FBorn = dFBorndN(phase, numberOfComponents, temperature, pressure); - // System.out.println("phase " + phase.getPhaseType()); - // System.out.println("name " + componentName); - // System.out.println("Fsup: " + super.dFdN(phase, - // numberOfComponents,temperature, pressure)); - // if(componentName.equals("Na+")){ - // System.out.println("FnSR: " + dFSR2dN(phase, numberOfComponents, temperature, - // pressure)); - // System.out.println("FLRn: " + dFLRdN(phase, numberOfComponents,temperature, - // pressure)); - // } - return Fsup + sr2On * FSR2 + lrOn * FLR + bornOn * FBorn; - } + double diElectricdn = 0; - /** {@inheritDoc} */ - @Override - public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdT(phase, numberOfComponents, temperature, pressure) - + sr2On * dFSR2dNdT(phase, numberOfComponents, temperature, pressure) - + lrOn * dFLRdNdT(phase, numberOfComponents, temperature, pressure) - + bornOn * dFBorndNdT(phase, numberOfComponents, temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdV(phase, numberOfComponents, temperature, pressure) - + sr2On * dFSR2dNdV(phase, numberOfComponents, temperature, pressure) - + lrOn * dFLRdNdV(phase, numberOfComponents, temperature, pressure); - } + double diElectricdndV = 0; - /** {@inheritDoc} */ - @Override - public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure) - + sr2On * dFSR2dNdN(j, phase, numberOfComponents, temperature, pressure) - + lrOn * dFLRdNdN(j, phase, numberOfComponents, temperature, pressure) - + bornOn * dFBorndNdN(j, phase, numberOfComponents, temperature, pressure); - } - - // Long Range term equations and derivatives - /** - *

- * dFLRdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFLRdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEos) phase).FLRXLR() * XLRi - + ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLR() * alphai; - // + ((PhaseModifiedFurstElectrolyteEos) phase).FLRGammaLR()*gammaLRdn; - } - - /** - *

- * dFLRdNdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFLRdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLRdX() * XLRi - * ((PhaseModifiedFurstElectrolyteEos) phase).getAlphaLRT() - + ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLR() * alphaiT; - } - - /** - *

- * dFLRdNdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFLRdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return 1e-5 * (((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLRdX() * XLRi - * ((PhaseModifiedFurstElectrolyteEos) phase).getAlphaLRV() - + ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLR() * alphaiV); - } - - /** - *

- * dFLRdNdN. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFLRdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLRdX() * XLRi - * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getAlphai() - + ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLR() - * dAlphaLRdndn(j, phase, numberOfComponents, temperature, pressure) - + ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLRdX() * alphai - * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getXLRi(); - } - - /** - *

- * calcXLRdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcXLRdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return Math.pow(getIonicCharge(), 2.0) - * ((PhaseModifiedFurstElectrolyteEos) phase).getShieldingParameter() - / (1.0 + ((PhaseModifiedFurstElectrolyteEos) phase).getShieldingParameter() - * getLennardJonesMolecularDiameter() * 1e-10); - } - - /** - *

- * FLRN. - *

- * - * @return a double - */ - public double FLRN() { - return 0.0; - } - - /** - *

- * calcSolventdiElectricdn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcSolventdiElectricdn(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - if (getIonicCharge() != 0) { - return 0.0; - } - double ans2 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (phase.getComponent(i).getIonicCharge() == 0) { - ans2 += phase.getComponent(i).getNumberOfMolesInPhase(); - } - } - // return 0.0; - return getDiElectricConstant(temperature) / ans2 - - ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstant() / ans2; - } - - /** - *

- * calcSolventdiElectricdndn. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcSolventdiElectricdndn(int j, PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - if (getIonicCharge() != 0 || ((PhaseModifiedFurstElectrolyteEos) phase).getComponents()[j] - .getIonicCharge() != 0) { - return 0.0; - } - double ans2 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (phase.getComponent(i).getIonicCharge() == 0) { - ans2 += phase.getComponent(i).getNumberOfMolesInPhase(); - } - } - // return 0.0; - return -getDiElectricConstant(temperature) / (ans2 * ans2) - - ((PhaseModifiedFurstElectrolyteEos) phase).getComponents()[j] - .getDiElectricConstant(temperature) / (ans2 * ans2) - + 2.0 * ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstant() - / (ans2 * ans2); - } - - /** - *

- * calcSolventdiElectricdndT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcSolventdiElectricdndT(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - if (getIonicCharge() != 0) { - return 0.0; - } - double ans2 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (phase.getComponent(i).getIonicCharge() == 0) { - ans2 += phase.getComponent(i).getNumberOfMolesInPhase(); - } - } - // return 0.0; - return getDiElectricConstantdT(temperature) / ans2 - - ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstantdT() - / ans2; - } - - /** - *

- * calcdiElectricdn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcdiElectricdn(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double X = (1.0 - ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic()) - / (1.0 + ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0); - double Y = ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstant() - 1.0; - double dXdf = getEpsIonici() * -3.0 / 2.0 / Math - .pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); - double dYdf = getSolventDiElectricConstantdn(); - return dYdf * X + Y * dXdf; - } - - /** - *

- * calcdiElectricdndV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcdiElectricdndV(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - double dXdf = ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonicdV() * -3.0 / 2.0 / Math - .pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); - double dYdf = getSolventDiElectricConstantdn(); - double d1 = ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstant(); - double d2 = epsIoniciV * -3.0 / 2.0 / Math - .pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); - double d3 = ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonicdV() * epsIonici * 3.0 - / 2.0 / Math.pow( - ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 3.0); - return dYdf * dXdf + d1 * d2 + d1 * d3; - } - - /** - *

- * calcdiElectricdndn. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcdiElectricdndn(int j, PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - double dYdf = - ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getSolventDiElectricConstantdn(); - double dXdfdfj = getEpsIonici() * -3.0 / 2.0 / Math - .pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); - - double dXdf = - ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getEpsIonici() * getEpsIonici() * 3.0 / 2.0 - / Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 - + 1.0, 3.0); - double d1 = ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstant(); - - double d2 = - ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getEpsIonici() * -3.0 / 2.0 - / Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 - + 1.0, 2.0); - double d5 = getSolventDiElectricConstantdn(); - - double d3 = calcSolventdiElectricdndn(j, phase, numberOfComponents, temperature, pressure); - double d4 = (1.0 - ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic()) - / (1.0 + ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0); - - return dYdf * dXdfdfj + dXdf * d1 + d2 * d5 + d3 * d4; - } - - /** - *

- * calcdiElectricdndT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcdiElectricdndT(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - double X = (1.0 - ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic()) - / (1.0 + ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0); - double Y = ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstantdT(); - double dXdf = getEpsIonici() * -3.0 / 2.0 / Math - .pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); - double dYdf = solventdiElectricdndT; - return dYdf * X + Y * dXdf; - } + double diElectricdndT = 0; + + double bornterm = 0; + + double alphai = 0.0; + + double alphaiT = 0.0; - // a little simplified - /** - *

- * calcGammaLRdn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcGammaLRdn(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return 0.0; - // if(((PhaseModifiedFurstElectrolyteEos) phase).getPhaseType()==1) return 0.0; - // double temp = - // Math.pow(getIonicCharge()/(1.0+((PhaseModifiedFurstElectrolyteEos) - // phase).getShieldingParameter()*getLennardJonesMolecularDiameter()*1e-10),2.0); - // return 1.0/(8.0*((PhaseModifiedFurstElectrolyteEos) - // phase).getShieldingParameter() + 4.0 * - // Math.pow(((PhaseModifiedFurstElectrolyteEos) - // phase).calcShieldingParameter2(),2.0) * 2.0 * - // getLennardJonesMolecularDiameter()*1e-10) * - // ((temp * ((PhaseModifiedFurstElectrolyteEos) - // phase).getAlphaLR2()/(((PhaseModifiedFurstElectrolyteEos) - // phase).getMolarVolume()*1e-5*((PhaseModifiedFurstElectrolyteEos) - // phase).getNumberOfMolesInPhase()) * avagadroNumber) - // + 4.0 * Math.pow(((PhaseModifiedFurstElectrolyteEos) - // phase).getShieldingParameter(),2.0) / ((PhaseModifiedFurstElectrolyteEos) - // phase).getAlphaLR2() * alphai ); - // Math.pow(getIonicCharge()/(1.0+((PhaseModifiedFurstElectrolyteEos) - // phase).getShieldingParameter()*getLennardJonesMolecularDiameter()*1e-10),2.0) - // + alphai*temp) /(8.0*((PhaseModifiedFurstElectrolyteEos) - // phase).getShieldingParameter()); - // + 2.0*getLennardJonesMolecularDiameter()*1e-10 * 4.0 * - // Math.pow(((PhaseModifiedFurstElectrolyteEos) - // phase).calcShieldingParameter2(),2.0))* - } - - // Short Range term equations and derivatives - /** - *

- * dFSR2dN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFSR2dN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEos) phase).FSR2eps() * epsi - + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2W() * Wi; - } - - /** - *

- * dFSR2dNdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFSR2dNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEos) phase).FSR2W() * WiT - + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epsW() * epsi - * ((PhaseModifiedFurstElectrolyteEos) phase).getWT(); - } - - /** - *

- * dFSR2dNdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFSR2dNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return 1.0e-5 * (+((PhaseModifiedFurstElectrolyteEos) phase).FSR2epseps() * epsi - * ((PhaseModifiedFurstElectrolyteEos) phase).getEpsdV() - + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2eps() * epsiV - + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epsW() * Wi - * ((PhaseModifiedFurstElectrolyteEos) phase).getEpsdV() - + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epsV() * epsi - + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2VW() * Wi); - } - - /** - *

- * dFSR2dNdN. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFSR2dNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epseps() * epsi - * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getEpsi() - + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epsW() * Wi - * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getEpsi() - + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2W() - * ((PhaseModifiedFurstElectrolyteEos) phase).calcWij(componentNumber, j, - phase, temperature, pressure, numberOfComponents) - + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epsW() * epsi - * ((PhaseModifiedFurstElectrolyteEos) phase).calcWi(j, phase, temperature, - pressure, numberOfComponents); - } - - /** - *

- * dEpsdNi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dEpsdNi(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0) - * (1.0 / (phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase())); - } - - /** - *

- * dEpsdNidV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dEpsdNidV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return (-avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0) - * (1.0 / (Math.pow( - phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase(), 2.0)))); - } - - /** - *

- * dEpsIonicdNi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dEpsIonicdNi(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - if (ionicCharge == 0) { - return 0.0; - } else { - return pi / 6.0 - * (avagadroNumber * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0)) - * (1.0 / (phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase())); - } - } - - /** - *

- * dEpsIonicdNidV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dEpsIonicdNidV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - if (ionicCharge == 0) { - return 0.0; - } - return (-avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1e-10, 3.0) - / (Math.pow(phase.getMolarVolume() * 1e-5 * phase.getNumberOfMolesInPhase(), 2.0))); - } - - // Born term equations and derivatives - /** - *

- * dFBorndN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFBorndN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEos) phase).FBornX() * getXBorni() - + ((PhaseModifiedFurstElectrolyteEos) phase).FBornD() * solventdiElectricdn; - } - - /** - *

- * dFBorndNdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFBorndNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return (((PhaseModifiedFurstElectrolyteEos) phase).FBornTX() * XBorni - + ((PhaseModifiedFurstElectrolyteEos) phase).FBornDX() * XBorni - * ((PhaseModifiedFurstElectrolyteEos) phase) - .getSolventDiElectricConstantdT()) - + ((PhaseModifiedFurstElectrolyteEos) phase).FBornTD() - * getSolventDiElectricConstantdn() - + ((PhaseModifiedFurstElectrolyteEos) phase).FBornD() * solventdiElectricdndT - + ((PhaseModifiedFurstElectrolyteEos) phase).FBornDD() - * getSolventDiElectricConstantdn() - * ((PhaseModifiedFurstElectrolyteEos) phase) - .getSolventDiElectricConstantdT(); - } - - /** - *

- * dFBorndNdN. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFBorndNdN(int j, PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - return ((PhaseModifiedFurstElectrolyteEos) phase).FBornDD() * solventdiElectricdn - * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getSolventDiElectricConstantdn() - + ((PhaseModifiedFurstElectrolyteEos) phase).FBornDX() * XBorni - * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getSolventDiElectricConstantdn() - + ((PhaseModifiedFurstElectrolyteEos) phase).FBornDX() * solventdiElectricdn - * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) - .getComponents()[j]).getXBorni() - + ((PhaseModifiedFurstElectrolyteEos) phase).FBornD() * calcSolventdiElectricdndn(j, - phase, numberOfComponents, temperature, pressure); - } - - /** - *

- * Getter for the field ionicCoVolume. - *

- * - * @return a double - */ - public double getIonicCoVolume() { - return ionicCoVolume; - } - - /** - *

- * getDiElectricConstantdn. - *

- * - * @return a double - */ - public double getDiElectricConstantdn() { - return diElectricdn; - } - - /** - *

- * getSolventDiElectricConstantdn. - *

- * - * @return a double - */ - public double getSolventDiElectricConstantdn() { - return solventdiElectricdn; - } - - /** - *

- * getBornVal. - *

- * - * @return a double - */ - public double getBornVal() { - return bornterm; - } - - /** - *

- * Getter for the field epsi. - *

- * - * @return a double - */ - public double getEpsi() { - return epsi; - } - - /** - *

- * Getter for the field epsIonici. - *

- * - * @return a double - */ - public double getEpsIonici() { - return epsIonici; - } - - /** - *

- * Getter for the field alphai. - *

- * - * @return a double - */ - public double getAlphai() { - return alphai; - } - - /** - *

- * getXLRi. - *

- * - * @return a double - */ - public double getXLRi() { - return XLRi; - } - - /** - *

- * getXBorni. - *

- * - * @return a double - */ - public double getXBorni() { - return XBorni; - } + double alphaiV = 0.0; + + double XLRi = 0.0; + + double XBorni = 0.0; + + double sr2On = 1.0; + + double lrOn = 1.0; + + double bornOn = 1.0; + + /** + *

+ * Constructor for ComponentModifiedFurstElectrolyteEos. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentModifiedFurstElectrolyteEos(String name, double moles, double molesInPhase, + int compIndex) { + super(name, moles, molesInPhase, compIndex); + ionicCoVolume = this.getIonicDiameter(); + if (ionicCharge != 0) { + setIsIon(true); + } + b = ionicCharge != 0 + ? (neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[0] + * Math.pow(getIonicDiameter(), 3.0) + + neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[1]) * 1e5 + : b; + a = ionicCharge != 0 ? 1.0e-35 : a; + setAttractiveParameter( + new neqsim.thermo.component.attractiveEosTerm.AttractiveTermSchwartzentruber(this)); + lennardJonesMolecularDiameter = + ionicCharge != 0 ? Math.pow((6.0 * b / 1.0e5) / (pi * avagadroNumber), 1.0 / 3.0) * 1e10 + : lennardJonesMolecularDiameter; + + // if(ionicCharge>0) stokesCationicDiameter = stokesCationicDiameter/3.0; + } + + /** + *

+ * Constructor for ComponentModifiedFurstElectrolyteEos. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentModifiedFurstElectrolyteEos(int number, double TC, double PC, double M, double a, + double moles) { + super(number, TC, PC, M, a, moles); + } + + /** + *

+ * initFurstParam. + *

+ */ + public void initFurstParam() { + b = ionicCharge != 0 + ? (neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[0] + * Math.pow(getIonicDiameter(), 3.0) + + neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[1]) * 1e5 + : b; + lennardJonesMolecularDiameter = + ionicCharge != 0 ? Math.pow((6.0 * b / 1.0e5) / (pi * avagadroNumber), 1.0 / 3.0) * 1e10 + : lennardJonesMolecularDiameter; + } + + /** {@inheritDoc} */ + @Override + public ComponentModifiedFurstElectrolyteEos clone() { + ComponentModifiedFurstElectrolyteEos clonedComponent = null; + try { + clonedComponent = (ComponentModifiedFurstElectrolyteEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public double calca() { + if (ionicCharge != 0) { + return a; + } else { + return super.calca(); + } + } + + /** {@inheritDoc} */ + @Override + public double calcb() { + if (ionicCharge != 0) { + return b; + } else { + return super.calcb(); + } + } + + /** {@inheritDoc} */ + @Override + public void Finit(PhaseInterface phase, double temp, double pres, double totMoles, double beta, + int numberOfComponents, int initType) { + Wi = ((PhaseModifiedFurstElectrolyteEos) phase).calcWi(componentNumber, phase, temp, pres, + numberOfComponents); + WiT = ((PhaseModifiedFurstElectrolyteEos) phase).calcWiT(componentNumber, phase, temp, pres, + numberOfComponents); + epsi = dEpsdNi(phase, numberOfComponents, temp, pres); + epsiV = dEpsdNidV(phase, numberOfComponents, temp, pres); + epsIonici = dEpsIonicdNi(phase, numberOfComponents, temp, pres); + epsIoniciV = dEpsIonicdNidV(phase, numberOfComponents, temp, pres); + solventdiElectricdn = calcSolventdiElectricdn(phase, numberOfComponents, temp, pres); + solventdiElectricdndT = calcSolventdiElectricdndT(phase, numberOfComponents, temp, pres); + diElectricdn = calcdiElectricdn(phase, numberOfComponents, temp, pres); + diElectricdndV = calcdiElectricdndV(phase, numberOfComponents, temp, pres); + diElectricdndT = calcdiElectricdndT(phase, numberOfComponents, temp, pres); + alphai = -(electronCharge * electronCharge * avagadroNumber) / (vacumPermittivity + * Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 2.0) * R + * temp) * diElectricdn; + alphaiT = -electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 2.0) * R + * temp) + * diElectricdndT + + electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 2.0) + * R * temp * temp) + * diElectricdn + + 2.0 * electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 3.0) + * R * temp) + * diElectricdn * ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstantdT(); + alphaiV = -electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 2.0) * R + * temp) + * diElectricdndV + + 2.0 * electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 3.0) + * R * temp) + * diElectricdn * ((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstantdV(); + XLRi = calcXLRdN(phase, numberOfComponents, temp, pres); + if (getLennardJonesMolecularDiameter() > 0) { + XBorni = ionicCharge * ionicCharge / (getLennardJonesMolecularDiameter() * 1e-10); + } + super.Finit(phase, temp, pres, totMoles, beta, numberOfComponents, initType); + } + + /** + *

+ * dAlphaLRdndn. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dAlphaLRdndn(int j, PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + double temp = 2.0 * electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 3.0) * R + * temperature) + * diElectricdn + * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getDiElectricConstantdn() + - electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getDiElectricConstant(), 2.0) + * R * temperature) + * calcdiElectricdndn(j, phase, numberOfComponents, temperature, pressure); + return temp; + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double Fsup = 0; + double FSR2 = 0; + double FLR = 0; + double FBorn = 0; + Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); + FSR2 = dFSR2dN(phase, numberOfComponents, temperature, pressure); + FLR = dFLRdN(phase, numberOfComponents, temperature, pressure); + FBorn = dFBorndN(phase, numberOfComponents, temperature, pressure); + // System.out.println("phase " + phase.getType()); + // System.out.println("name " + componentName); + // System.out.println("Fsup: " + super.dFdN(phase, + // numberOfComponents,temperature, pressure)); + // if(componentName.equals("Na+")){ + // System.out.println("FnSR: " + dFSR2dN(phase, numberOfComponents, temperature, + // pressure)); + // System.out.println("FLRn: " + dFLRdN(phase, numberOfComponents,temperature, + // pressure)); + // } + return Fsup + sr2On * FSR2 + lrOn * FLR + bornOn * FBorn; + } + + /** {@inheritDoc} */ + @Override + public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdT(phase, numberOfComponents, temperature, pressure) + + sr2On * dFSR2dNdT(phase, numberOfComponents, temperature, pressure) + + lrOn * dFLRdNdT(phase, numberOfComponents, temperature, pressure) + + bornOn * dFBorndNdT(phase, numberOfComponents, temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdV(phase, numberOfComponents, temperature, pressure) + + sr2On * dFSR2dNdV(phase, numberOfComponents, temperature, pressure) + + lrOn * dFLRdNdV(phase, numberOfComponents, temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure) + + sr2On * dFSR2dNdN(j, phase, numberOfComponents, temperature, pressure) + + lrOn * dFLRdNdN(j, phase, numberOfComponents, temperature, pressure) + + bornOn * dFBorndNdN(j, phase, numberOfComponents, temperature, pressure); + } + + // Long Range term equations and derivatives + /** + *

+ * dFLRdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFLRdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEos) phase).FLRXLR() * XLRi + + ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLR() * alphai; + // + ((PhaseModifiedFurstElectrolyteEos) phase).FLRGammaLR()*gammaLRdn; + } + + /** + *

+ * dFLRdNdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFLRdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLRdX() * XLRi + * ((PhaseModifiedFurstElectrolyteEos) phase).getAlphaLRT() + + ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLR() * alphaiT; + } + + /** + *

+ * dFLRdNdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFLRdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return 1e-5 * (((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLRdX() * XLRi + * ((PhaseModifiedFurstElectrolyteEos) phase).getAlphaLRV() + + ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLR() * alphaiV); + } + + /** + *

+ * dFLRdNdN. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFLRdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLRdX() * XLRi + * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getAlphai() + + ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLR() + * dAlphaLRdndn(j, phase, numberOfComponents, temperature, pressure) + + ((PhaseModifiedFurstElectrolyteEos) phase).dFdAlphaLRdX() * alphai + * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getXLRi(); + } + + /** + *

+ * calcXLRdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcXLRdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return Math.pow(getIonicCharge(), 2.0) + * ((PhaseModifiedFurstElectrolyteEos) phase).getShieldingParameter() + / (1.0 + ((PhaseModifiedFurstElectrolyteEos) phase).getShieldingParameter() + * getLennardJonesMolecularDiameter() * 1e-10); + } + + /** + *

+ * FLRN. + *

+ * + * @return a double + */ + public double FLRN() { + return 0.0; + } + + /** + *

+ * calcSolventdiElectricdn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcSolventdiElectricdn(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + if (getIonicCharge() != 0) { + return 0.0; + } + double ans2 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (phase.getComponent(i).getIonicCharge() == 0) { + ans2 += phase.getComponent(i).getNumberOfMolesInPhase(); + } + } + // return 0.0; + return getDiElectricConstant(temperature) / ans2 + - ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstant() / ans2; + } + + /** + *

+ * calcSolventdiElectricdndn. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcSolventdiElectricdndn(int j, PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + if (getIonicCharge() != 0 + || ((PhaseModifiedFurstElectrolyteEos) phase).getComponents()[j].getIonicCharge() != 0) { + return 0.0; + } + double ans2 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (phase.getComponent(i).getIonicCharge() == 0) { + ans2 += phase.getComponent(i).getNumberOfMolesInPhase(); + } + } + // return 0.0; + return -getDiElectricConstant(temperature) / (ans2 * ans2) + - ((PhaseModifiedFurstElectrolyteEos) phase).getComponents()[j] + .getDiElectricConstant(temperature) / (ans2 * ans2) + + 2.0 * ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstant() + / (ans2 * ans2); + } + + /** + *

+ * calcSolventdiElectricdndT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcSolventdiElectricdndT(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + if (getIonicCharge() != 0) { + return 0.0; + } + double ans2 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (phase.getComponent(i).getIonicCharge() == 0) { + ans2 += phase.getComponent(i).getNumberOfMolesInPhase(); + } + } + // return 0.0; + return getDiElectricConstantdT(temperature) / ans2 + - ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstantdT() / ans2; + } + + /** + *

+ * calcdiElectricdn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcdiElectricdn(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double X = (1.0 - ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic()) + / (1.0 + ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0); + double Y = ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstant() - 1.0; + double dXdf = getEpsIonici() * -3.0 / 2.0 + / Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + double dYdf = getSolventDiElectricConstantdn(); + return dYdf * X + Y * dXdf; + } + + /** + *

+ * calcdiElectricdndV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcdiElectricdndV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double dXdf = ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonicdV() * -3.0 / 2.0 + / Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + double dYdf = getSolventDiElectricConstantdn(); + double d1 = ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstant(); + double d2 = epsIoniciV * -3.0 / 2.0 + / Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + double d3 = ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonicdV() * epsIonici * 3.0 / 2.0 + / Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 3.0); + return dYdf * dXdf + d1 * d2 + d1 * d3; + } + + /** + *

+ * calcdiElectricdndn. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcdiElectricdndn(int j, PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + double dYdf = ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getSolventDiElectricConstantdn(); + double dXdfdfj = getEpsIonici() * -3.0 / 2.0 + / Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + + double dXdf = ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getEpsIonici() * getEpsIonici() * 3.0 / 2.0 + / Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 3.0); + double d1 = ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstant(); + + double d2 = ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getEpsIonici() * -3.0 / 2.0 + / Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + double d5 = getSolventDiElectricConstantdn(); + + double d3 = calcSolventdiElectricdndn(j, phase, numberOfComponents, temperature, pressure); + double d4 = (1.0 - ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic()) + / (1.0 + ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0); + + return dYdf * dXdfdfj + dXdf * d1 + d2 * d5 + d3 * d4; + } + + /** + *

+ * calcdiElectricdndT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcdiElectricdndT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double X = (1.0 - ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic()) + / (1.0 + ((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0); + double Y = ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstantdT(); + double dXdf = getEpsIonici() * -3.0 / 2.0 + / Math.pow(((PhaseModifiedFurstElectrolyteEos) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + double dYdf = solventdiElectricdndT; + return dYdf * X + Y * dXdf; + } + + // a little simplified + /** + *

+ * calcGammaLRdn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcGammaLRdn(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return 0.0; + // if(((PhaseModifiedFurstElectrolyteEos) phase).getPhaseType()==1) return 0.0; + // double temp = + // Math.pow(getIonicCharge()/(1.0+((PhaseModifiedFurstElectrolyteEos) + // phase).getShieldingParameter()*getLennardJonesMolecularDiameter()*1e-10),2.0); + // return 1.0/(8.0*((PhaseModifiedFurstElectrolyteEos) + // phase).getShieldingParameter() + 4.0 * + // Math.pow(((PhaseModifiedFurstElectrolyteEos) + // phase).calcShieldingParameter2(),2.0) * 2.0 * + // getLennardJonesMolecularDiameter()*1e-10) * + // ((temp * ((PhaseModifiedFurstElectrolyteEos) + // phase).getAlphaLR2()/(((PhaseModifiedFurstElectrolyteEos) + // phase).getMolarVolume()*1e-5*((PhaseModifiedFurstElectrolyteEos) + // phase).getNumberOfMolesInPhase()) * avagadroNumber) + // + 4.0 * Math.pow(((PhaseModifiedFurstElectrolyteEos) + // phase).getShieldingParameter(),2.0) / ((PhaseModifiedFurstElectrolyteEos) + // phase).getAlphaLR2() * alphai ); + // Math.pow(getIonicCharge()/(1.0+((PhaseModifiedFurstElectrolyteEos) + // phase).getShieldingParameter()*getLennardJonesMolecularDiameter()*1e-10),2.0) + // + alphai*temp) /(8.0*((PhaseModifiedFurstElectrolyteEos) + // phase).getShieldingParameter()); + // + 2.0*getLennardJonesMolecularDiameter()*1e-10 * 4.0 * + // Math.pow(((PhaseModifiedFurstElectrolyteEos) + // phase).calcShieldingParameter2(),2.0))* + } + + // Short Range term equations and derivatives + /** + *

+ * dFSR2dN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFSR2dN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEos) phase).FSR2eps() * epsi + + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2W() * Wi; + } + + /** + *

+ * dFSR2dNdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFSR2dNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEos) phase).FSR2W() * WiT + + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epsW() * epsi + * ((PhaseModifiedFurstElectrolyteEos) phase).getWT(); + } + + /** + *

+ * dFSR2dNdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFSR2dNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return 1.0e-5 * (+((PhaseModifiedFurstElectrolyteEos) phase).FSR2epseps() * epsi + * ((PhaseModifiedFurstElectrolyteEos) phase).getEpsdV() + + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2eps() * epsiV + + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epsW() * Wi + * ((PhaseModifiedFurstElectrolyteEos) phase).getEpsdV() + + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epsV() * epsi + + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2VW() * Wi); + } + + /** + *

+ * dFSR2dNdN. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFSR2dNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epseps() * epsi + * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getEpsi() + + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epsW() * Wi + * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getEpsi() + + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2W() + * ((PhaseModifiedFurstElectrolyteEos) phase).calcWij(componentNumber, j, phase, + temperature, pressure, numberOfComponents) + + ((PhaseModifiedFurstElectrolyteEos) phase).FSR2epsW() * epsi + * ((PhaseModifiedFurstElectrolyteEos) phase).calcWi(j, phase, temperature, pressure, + numberOfComponents); + } + + /** + *

+ * dEpsdNi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dEpsdNi(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0) + * (1.0 / (phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase())); + } + + /** + *

+ * dEpsdNidV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dEpsdNidV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return (-avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0) + * (1.0 + / (Math.pow(phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase(), 2.0)))); + } + + /** + *

+ * dEpsIonicdNi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dEpsIonicdNi(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + if (ionicCharge == 0) { + return 0.0; + } else { + return pi / 6.0 * (avagadroNumber * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0)) + * (1.0 / (phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase())); + } + } + + /** + *

+ * dEpsIonicdNidV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dEpsIonicdNidV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + if (ionicCharge == 0) { + return 0.0; + } + return (-avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1e-10, 3.0) + / (Math.pow(phase.getMolarVolume() * 1e-5 * phase.getNumberOfMolesInPhase(), 2.0))); + } + + // Born term equations and derivatives + /** + *

+ * dFBorndN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFBorndN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEos) phase).FBornX() * getXBorni() + + ((PhaseModifiedFurstElectrolyteEos) phase).FBornD() * solventdiElectricdn; + } + + /** + *

+ * dFBorndNdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFBorndNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return (((PhaseModifiedFurstElectrolyteEos) phase).FBornTX() * XBorni + + ((PhaseModifiedFurstElectrolyteEos) phase).FBornDX() * XBorni + * ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstantdT()) + + ((PhaseModifiedFurstElectrolyteEos) phase).FBornTD() * getSolventDiElectricConstantdn() + + ((PhaseModifiedFurstElectrolyteEos) phase).FBornD() * solventdiElectricdndT + + ((PhaseModifiedFurstElectrolyteEos) phase).FBornDD() * getSolventDiElectricConstantdn() + * ((PhaseModifiedFurstElectrolyteEos) phase).getSolventDiElectricConstantdT(); + } + + /** + *

+ * dFBorndNdN. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFBorndNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEos) phase).FBornDD() * solventdiElectricdn + * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getSolventDiElectricConstantdn() + + ((PhaseModifiedFurstElectrolyteEos) phase).FBornDX() * XBorni + * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getSolventDiElectricConstantdn() + + ((PhaseModifiedFurstElectrolyteEos) phase).FBornDX() * solventdiElectricdn + * ((ComponentModifiedFurstElectrolyteEos) ((PhaseModifiedFurstElectrolyteEos) phase) + .getComponents()[j]).getXBorni() + + ((PhaseModifiedFurstElectrolyteEos) phase).FBornD() + * calcSolventdiElectricdndn(j, phase, numberOfComponents, temperature, pressure); + } + + /** + *

+ * Getter for the field ionicCoVolume. + *

+ * + * @return a double + */ + public double getIonicCoVolume() { + return ionicCoVolume; + } + + /** + *

+ * getDiElectricConstantdn. + *

+ * + * @return a double + */ + public double getDiElectricConstantdn() { + return diElectricdn; + } + + /** + *

+ * getSolventDiElectricConstantdn. + *

+ * + * @return a double + */ + public double getSolventDiElectricConstantdn() { + return solventdiElectricdn; + } + + /** + *

+ * getBornVal. + *

+ * + * @return a double + */ + public double getBornVal() { + return bornterm; + } + + /** + *

+ * Getter for the field epsi. + *

+ * + * @return a double + */ + public double getEpsi() { + return epsi; + } + + /** + *

+ * Getter for the field epsIonici. + *

+ * + * @return a double + */ + public double getEpsIonici() { + return epsIonici; + } + + /** + *

+ * Getter for the field alphai. + *

+ * + * @return a double + */ + public double getAlphai() { + return alphai; + } + + /** + *

+ * getXLRi. + *

+ * + * @return a double + */ + public double getXLRi() { + return XLRi; + } + + /** + *

+ * getXBorni. + *

+ * + * @return a double + */ + public double getXBorni() { + return XBorni; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentModifiedFurstElectrolyteEosMod2004.java b/src/main/java/neqsim/thermo/component/ComponentModifiedFurstElectrolyteEosMod2004.java index 5838bfb35d..077727cad0 100644 --- a/src/main/java/neqsim/thermo/component/ComponentModifiedFurstElectrolyteEosMod2004.java +++ b/src/main/java/neqsim/thermo/component/ComponentModifiedFurstElectrolyteEosMod2004.java @@ -3,6 +3,7 @@ * * Created on 26. februar 2001, 17:59 */ + package neqsim.thermo.component; import neqsim.thermo.phase.PhaseInterface; @@ -17,908 +18,938 @@ * @version $Id: $Id */ public class ComponentModifiedFurstElectrolyteEosMod2004 extends ComponentSrk { - private static final long serialVersionUID = 1000; - - double Wi = 0, WiT = 0.0, epsi = 0, epsiV = 0, epsIonici = 0, epsIoniciV = 0, dEpsdNi = 0, - ionicCoVolume = 0, solventdiElectricdn = 0.0, solventdiElectricdndT = 0, - diElectricdn = 0, diElectricdndV = 0, diElectricdndT = 0, bornterm = 0, alphai = 0.0, - alphaiT = 0.0, alphaiV = 0.0, XLRi = 0.0, XBorni = 0.0; - double sr2On = 1.0, lrOn = 1.0, bornOn = 1.0; - - /** - *

- * Constructor for ComponentModifiedFurstElectrolyteEosMod2004. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentModifiedFurstElectrolyteEosMod2004(String component_name, double moles, - double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - ionicCoVolume = this.getIonicDiameter(); - if (ionicCharge != 0) { - setIsIon(true); - } - b = ionicCharge != 0 - ? (neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[0] - * Math.pow(getIonicDiameter(), 3.0) - + neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[1]) - * 1e5 - : b; - a = ionicCharge != 0 ? 1.0e-35 : a; - setAttractiveParameter( - new neqsim.thermo.component.attractiveEosTerm.AttractiveTermSchwartzentruber(this)); - lennardJonesMolecularDiameter = ionicCharge != 0 - ? Math.pow((6.0 * b / 1.0e5) / (pi * avagadroNumber), 1.0 / 3.0) * 1e10 - : lennardJonesMolecularDiameter; - - // if(ionicCharge>0) stokesCationicDiameter = stokesCationicDiameter/3.0; - } + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ComponentModifiedFurstElectrolyteEosMod2004. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentModifiedFurstElectrolyteEosMod2004(int number, double TC, double PC, double M, - double a, double moles) { - super(number, TC, PC, M, a, moles); - } + double Wi = 0; - /** - *

- * initFurstParam. - *

- */ - public void initFurstParam() { - b = ionicCharge != 0 - ? (neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[0] - * Math.pow(getIonicDiameter(), 3.0) - + neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[1]) - * 1e5 - : b; - lennardJonesMolecularDiameter = ionicCharge != 0 - ? Math.pow((6.0 * b / 1.0e5) / (pi * avagadroNumber), 1.0 / 3.0) * 1e10 - : lennardJonesMolecularDiameter; - } + double WiT = 0.0; - /** {@inheritDoc} */ - @Override - public ComponentModifiedFurstElectrolyteEosMod2004 clone() { - ComponentModifiedFurstElectrolyteEosMod2004 clonedComponent = null; - try { - clonedComponent = (ComponentModifiedFurstElectrolyteEosMod2004) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedComponent; - } + double epsi = 0; - /** {@inheritDoc} */ - @Override - public double calca() { - return a; - } + double epsiV = 0; - /** {@inheritDoc} */ - @Override - public double calcb() { - return b; - } + double epsIonici = 0; - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } + double epsIoniciV = 0; - /** {@inheritDoc} */ - @Override - public void Finit(PhaseInterface phase, double temp, double pres, double totMoles, double beta, - int numberOfComponents, int type) { - Wi = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).calcWi(componentNumber, phase, temp, - pres, numberOfComponents); - WiT = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).calcWiT(componentNumber, phase, - temp, pres, numberOfComponents); - epsi = dEpsdNi(phase, numberOfComponents, temp, pres); - epsiV = dEpsdNidV(phase, numberOfComponents, temp, pres); - epsIonici = dEpsIonicdNi(phase, numberOfComponents, temp, pres); - epsIoniciV = dEpsIonicdNidV(phase, numberOfComponents, temp, pres); - solventdiElectricdn = calcSolventdiElectricdn(phase, numberOfComponents, temp, pres); - solventdiElectricdndT = calcSolventdiElectricdndT(phase, numberOfComponents, temp, pres); - diElectricdn = calcdiElectricdn(phase, numberOfComponents, temp, pres); - diElectricdndV = calcdiElectricdndV(phase, numberOfComponents, temp, pres); - diElectricdndT = calcdiElectricdndT(phase, numberOfComponents, temp, pres); - alphai = -(electronCharge * electronCharge * avagadroNumber) / (vacumPermittivity * Math - .pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), 2.0) - * R * temp) * diElectricdn; - alphaiT = -electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), - 2.0) * R * temp) - * diElectricdndT - + electronCharge * electronCharge * avagadroNumber / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), - 2.0) * R * temp * temp) * diElectricdn - + 2.0 * electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity - * Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getDiElectricConstant(), 3.0) - * R * temp) - * diElectricdn * ((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getDiElectricConstantdT(); - alphaiV = -electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), - 2.0) * R * temp) - * diElectricdndV - + 2.0 * electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity - * Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getDiElectricConstant(), 3.0) - * R * temp) - * diElectricdn * ((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getDiElectricConstantdV(); - XLRi = calcXLRdN(phase, numberOfComponents, temp, pres); - XBorni = ionicCharge * ionicCharge / (getLennardJonesMolecularDiameter() * 1e-10); - super.Finit(phase, temp, pres, totMoles, beta, numberOfComponents, type); - } + double dEpsdNi = 0; + + double ionicCoVolume = 0; + + double solventdiElectricdn = 0.0; + + double solventdiElectricdndT = 0; - /** - *

- * dAlphaLRdndn. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dAlphaLRdndn(int j, PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - double temp = 2.0 * electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), - 3.0) * R * temperature) - * diElectricdn - * ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getComponents()[j]).getDiElectricConstantdn() - - electronCharge * electronCharge * avagadroNumber / (vacumPermittivity * Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), - 2.0) * R * temperature) - * calcdiElectricdndn(j, phase, numberOfComponents, temperature, pressure); - return temp; - } + double diElectricdn = 0; - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double Fsup = 0, FSR2 = 0, FLR = 0, FBorn = 0; - Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); - FSR2 = dFSR2dN(phase, numberOfComponents, temperature, pressure); - FLR = dFLRdN(phase, numberOfComponents, temperature, pressure); - FBorn = dFBorndN(phase, numberOfComponents, temperature, pressure); - // System.out.println("phase " + phase.getPhaseType()); - // System.out.println("name " + componentName); - // System.out.println("Fsup: " + super.dFdN(phase, - // numberOfComponents,temperature, pressure)); - // if(componentName.equals("Na+")){ - // System.out.println("FnSR: " + dFSR2dN(phase, numberOfComponents, temperature, - // pressure)); - // System.out.println("FLRn: " + dFLRdN(phase, numberOfComponents,temperature, - // pressure)); - // } - return Fsup + sr2On * FSR2 + lrOn * FLR + bornOn * FBorn; - } + double diElectricdndV = 0; - /** {@inheritDoc} */ - @Override - public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdT(phase, numberOfComponents, temperature, pressure) - + sr2On * dFSR2dNdT(phase, numberOfComponents, temperature, pressure) - + lrOn * dFLRdNdT(phase, numberOfComponents, temperature, pressure) - + bornOn * dFBorndNdT(phase, numberOfComponents, temperature, pressure); - } + double diElectricdndT = 0; + + double bornterm = 0; - /** {@inheritDoc} */ - @Override - public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdV(phase, numberOfComponents, temperature, pressure) - + sr2On * dFSR2dNdV(phase, numberOfComponents, temperature, pressure) - + lrOn * dFLRdNdV(phase, numberOfComponents, temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure) - + sr2On * dFSR2dNdN(j, phase, numberOfComponents, temperature, pressure) - + lrOn * dFLRdNdN(j, phase, numberOfComponents, temperature, pressure) - + bornOn * dFBorndNdN(j, phase, numberOfComponents, temperature, pressure); - } - - // Long Range term equations and derivatives - /** - *

- * dFLRdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFLRdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FLRXLR() * XLRi - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLR() * alphai; - // + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FLRGammaLR()*gammaLRdn; - } - - /** - *

- * dFLRdNdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFLRdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLRdX() * XLRi - * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getAlphaLRT() - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLR() * alphaiT; - } - - /** - *

- * dFLRdNdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFLRdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return 1e-5 * (((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLRdX() * XLRi - * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getAlphaLRV() - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLR() * alphaiV); - } - - /** - *

- * dFLRdNdN. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFLRdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLRdX() * XLRi - * ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getComponents()[j]).getAlphai() - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLR() - * dAlphaLRdndn(j, phase, numberOfComponents, temperature, pressure) - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLRdX() * alphai - * ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getComponents()[j]).getXLRi(); - } - - /** - *

- * calcXLRdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcXLRdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return Math.pow(getIonicCharge(), 2.0) - * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getShieldingParameter() - / (1.0 + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getShieldingParameter() - * getLennardJonesMolecularDiameter() * 1e-10); - } - - /** - *

- * FLRN. - *

- * - * @return a double - */ - public double FLRN() { - return 0.0; - } - - /** - *

- * calcSolventdiElectricdn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcSolventdiElectricdn(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - if (getIonicCharge() != 0) { - return 0.0; - } - /* - * double ans2 = 0.0; for (int i = 0; i < numberOfComponents; i++) { if - * (phase.getComponent(i).getIonicCharge() == 0) { ans2 += - * phase.getComponent(i).getNumberOfMolesInPhase(); } } - */ - return 0.0; - // return getDiElectricConstant(temperature)/ans2 - - // ((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getSolventDiElectricConstant()/ans2; - } - - /** - *

- * calcSolventdiElectricdndn. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcSolventdiElectricdndn(int j, PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - if (getIonicCharge() != 0 - || ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getComponents()[j] - .getIonicCharge() != 0) { - return 0.0; - } - /* - * double ans2 = 0.0; for (int i = 0; i < numberOfComponents; i++) { if - * (phase.getComponent(i).getIonicCharge() == 0) { ans2 += - * phase.getComponent(i).getNumberOfMolesInPhase(); } } - */ - return 0.0; - // return -getDiElectricConstant(temperature)/(ans2*ans2) - - // ((ComponentModifiedFurstElectrolyteEosMod2004)((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getComponents()[j]).getDiElectricConstant(temperature)/(ans2*ans2) + - // 2.0*((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getSolventDiElectricConstant()/(ans2*ans2); - } - - /** - *

- * calcSolventdiElectricdndT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcSolventdiElectricdndT(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - if (getIonicCharge() != 0) { - return 0.0; - } - /* - * double ans2 = 0.0; for (int i = 0; i < numberOfComponents; i++) { if - * (phase.getComponent(i).getIonicCharge() == 0) { ans2 += - * phase.getComponent(i).getNumberOfMolesInPhase(); } } - */ - return 0.0; - // return getDiElectricConstantdT(temperature)/ans2 - - // ((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getSolventDiElectricConstantdT()/ans2; - } - - /** - *

- * calcdiElectricdn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcdiElectricdn(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double X = (1.0 - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic()) - / (1.0 + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0); - double Y = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getSolventDiElectricConstant() - - 1.0; - double dXdf = getEpsIonici() * -3.0 / 2.0 / Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, 2.0); - double dYdf = getSolventDiElectricConstantdn(); - return dYdf * X + Y * dXdf; - } - - /** - *

- * calcdiElectricdndV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcdiElectricdndV(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - double dXdf = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonicdV() * -3.0 / 2.0 - / Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, - 2.0); - double dYdf = getSolventDiElectricConstantdn(); - double d1 = - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getSolventDiElectricConstant(); - double d2 = epsIoniciV * -3.0 / 2.0 / Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, 2.0); - double d3 = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonicdV() * epsIonici - * 3.0 / 2.0 - / Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, - 3.0); - return dYdf * dXdf + d1 * d2 + d1 * d3; - } - - /** - *

- * calcdiElectricdndn. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcdiElectricdndn(int j, PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - double dYdf = - ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getComponents()[j]).getSolventDiElectricConstantdn(); - double dXdfdfj = getEpsIonici() * -3.0 / 2.0 / Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, 2.0); - - double dXdf = - ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getComponents()[j]).getEpsIonici() * getEpsIonici() * 3.0 / 2.0 - / Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() - / 2.0 + 1.0, 3.0); - double d1 = - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getSolventDiElectricConstant(); - - double d2 = - ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getComponents()[j]).getEpsIonici() * -3.0 / 2.0 - / Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() - / 2.0 + 1.0, 2.0); - double d5 = getSolventDiElectricConstantdn(); - - double d3 = calcSolventdiElectricdndn(j, phase, numberOfComponents, temperature, pressure); - double d4 = (1.0 - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic()) - / (1.0 + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0); - - return dYdf * dXdfdfj + dXdf * d1 + d2 * d5 + d3 * d4; - } - - /** - *

- * calcdiElectricdndT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcdiElectricdndT(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - double X = (1.0 - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic()) - / (1.0 + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0); - double Y = - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getSolventDiElectricConstantdT(); - double dXdf = getEpsIonici() * -3.0 / 2.0 / Math.pow( - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, 2.0); - double dYdf = solventdiElectricdndT; - return dYdf * X + Y * dXdf; - } - - // a little simplified - /** - *

- * calcGammaLRdn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcGammaLRdn(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return 0.0; - // if(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getPhaseType()==1) - // return 0.0; - // double temp = - // Math.pow(getIonicCharge()/(1.0+((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getShieldingParameter()*getLennardJonesMolecularDiameter()*1e-10),2.0); - // return 1.0/(8.0*((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getShieldingParameter() + 4.0 * - // Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).calcShieldingParameter2(),2.0) * 2.0 * - // getLennardJonesMolecularDiameter()*1e-10) * - // ((temp * ((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getAlphaLR2()/(((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getMolarVolume()*1e-5*((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getNumberOfMolesInPhase()) * avagadroNumber) - // + 4.0 * Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getShieldingParameter(),2.0) / - // ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getAlphaLR2() * alphai ); - // Math.pow(getIonicCharge()/(1.0+((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getShieldingParameter()*getLennardJonesMolecularDiameter()*1e-10),2.0) - // + alphai*temp) /(8.0*((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).getShieldingParameter()); - // + 2.0*getLennardJonesMolecularDiameter()*1e-10 * 4.0 * - // Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) - // phase).calcShieldingParameter2(),2.0))* - } - - // Short Range term equations and derivatives - /** - *

- * dFSR2dN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFSR2dN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2eps() * epsi - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2W() * Wi; - } - - /** - *

- * dFSR2dNdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFSR2dNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2W() * WiT - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epsW() * epsi - * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getWT(); - } - - /** - *

- * dFSR2dNdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFSR2dNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return 1.0e-5 * (+((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epseps() * epsi - * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsdV() - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2eps() * epsiV - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epsW() * Wi - * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsdV() - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epsV() * epsi - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2VW() * Wi); - } - - /** - *

- * dFSR2dNdN. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFSR2dNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epseps() * epsi - * ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getComponents()[j]).getEpsi() - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epsW() * Wi - * ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) - .getComponents()[j]).getEpsi() - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2W() - * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).calcWij(componentNumber, - j, phase, temperature, pressure, numberOfComponents) - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epsW() * epsi - * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).calcWi(j, phase, - temperature, pressure, numberOfComponents); - } - - /** - *

- * dEpsdNi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dEpsdNi(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0) - * (1.0 / (phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase())); - } - - /** - *

- * dEpsdNidV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dEpsdNidV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return (-avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0) - * (1.0 / (Math.pow( - phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase(), 2.0)))); - } - - /** - *

- * dEpsIonicdNi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dEpsIonicdNi(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - if (ionicCharge == 0) { - return 0.0; - } else { - return pi / 6.0 - * (avagadroNumber * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0)) - * (1.0 / (phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase())); - } - } - - /** - *

- * dEpsIonicdNidV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dEpsIonicdNidV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - if (ionicCharge == 0) { - return 0.0; - } - return (-avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1e-10, 3.0) - / (Math.pow(phase.getMolarVolume() * 1e-5 * phase.getNumberOfMolesInPhase(), 2.0))); - } - - // Born term equations and derivatives - /** - *

- * dFBorndN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFBorndN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FBornX() * getXBorni() - + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FBornD(); - } - - /** - *

- * dFBorndNdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFBorndNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FBornTX() * XBorni; - } - - /** - *

- * dFBorndNdN. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFBorndNdN(int j, PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - return 0.0; - } - - /** - *

- * Getter for the field ionicCoVolume. - *

- * - * @return a double - */ - public double getIonicCoVolume() { - return ionicCoVolume; - } - - /** - *

- * getDiElectricConstantdn. - *

- * - * @return a double - */ - public double getDiElectricConstantdn() { - return diElectricdn; - } - - /** - *

- * getSolventDiElectricConstantdn. - *

- * - * @return a double - */ - public double getSolventDiElectricConstantdn() { - return solventdiElectricdn; - } - - /** - *

- * getBornVal. - *

- * - * @return a double - */ - public double getBornVal() { - return bornterm; - } - - /** - *

- * Getter for the field epsi. - *

- * - * @return a double - */ - public double getEpsi() { - return epsi; - } - - /** - *

- * Getter for the field epsIonici. - *

- * - * @return a double - */ - public double getEpsIonici() { - return epsIonici; - } - - /** - *

- * Getter for the field alphai. - *

- * - * @return a double - */ - public double getAlphai() { - return alphai; - } - - /** - *

- * getXLRi. - *

- * - * @return a double - */ - public double getXLRi() { - return XLRi; - } - - /** - *

- * getXBorni. - *

- * - * @return a double - */ - public double getXBorni() { - return XBorni; - } + double alphai = 0.0; + + double alphaiT = 0.0; + + double alphaiV = 0.0; + + double XLRi = 0.0; + + double XBorni = 0.0; + + double sr2On = 1.0; + + double lrOn = 1.0; + + double bornOn = 1.0; + + /** + *

+ * Constructor for ComponentModifiedFurstElectrolyteEosMod2004. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentModifiedFurstElectrolyteEosMod2004(String name, double moles, double molesInPhase, + int compIndex) { + super(name, moles, molesInPhase, compIndex); + ionicCoVolume = this.getIonicDiameter(); + if (ionicCharge != 0) { + setIsIon(true); + } + b = ionicCharge != 0 + ? (neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[0] + * Math.pow(getIonicDiameter(), 3.0) + + neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[1]) * 1e5 + : b; + a = ionicCharge != 0 ? 1.0e-35 : a; + setAttractiveParameter( + new neqsim.thermo.component.attractiveEosTerm.AttractiveTermSchwartzentruber(this)); + lennardJonesMolecularDiameter = + ionicCharge != 0 ? Math.pow((6.0 * b / 1.0e5) / (pi * avagadroNumber), 1.0 / 3.0) * 1e10 + : lennardJonesMolecularDiameter; + + // if(ionicCharge>0) stokesCationicDiameter = stokesCationicDiameter/3.0; + } + + /** + *

+ * Constructor for ComponentModifiedFurstElectrolyteEosMod2004. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentModifiedFurstElectrolyteEosMod2004(int number, double TC, double PC, double M, + double a, double moles) { + super(number, TC, PC, M, a, moles); + } + + /** + *

+ * initFurstParam. + *

+ */ + public void initFurstParam() { + b = ionicCharge != 0 + ? (neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[0] + * Math.pow(getIonicDiameter(), 3.0) + + neqsim.thermo.util.constants.FurstElectrolyteConstants.furstParams[1]) * 1e5 + : b; + lennardJonesMolecularDiameter = + ionicCharge != 0 ? Math.pow((6.0 * b / 1.0e5) / (pi * avagadroNumber), 1.0 / 3.0) * 1e10 + : lennardJonesMolecularDiameter; + } + + /** {@inheritDoc} */ + @Override + public ComponentModifiedFurstElectrolyteEosMod2004 clone() { + ComponentModifiedFurstElectrolyteEosMod2004 clonedComponent = null; + try { + clonedComponent = (ComponentModifiedFurstElectrolyteEosMod2004) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public double calca() { + return a; + } + + /** {@inheritDoc} */ + @Override + public double calcb() { + return b; + } + + /** {@inheritDoc} */ + @Override + public void Finit(PhaseInterface phase, double temp, double pres, double totMoles, double beta, + int numberOfComponents, int initType) { + Wi = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).calcWi(componentNumber, phase, temp, + pres, numberOfComponents); + WiT = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).calcWiT(componentNumber, phase, temp, + pres, numberOfComponents); + epsi = dEpsdNi(phase, numberOfComponents, temp, pres); + epsiV = dEpsdNidV(phase, numberOfComponents, temp, pres); + epsIonici = dEpsIonicdNi(phase, numberOfComponents, temp, pres); + epsIoniciV = dEpsIonicdNidV(phase, numberOfComponents, temp, pres); + solventdiElectricdn = calcSolventdiElectricdn(phase, numberOfComponents, temp, pres); + solventdiElectricdndT = calcSolventdiElectricdndT(phase, numberOfComponents, temp, pres); + diElectricdn = calcdiElectricdn(phase, numberOfComponents, temp, pres); + diElectricdndV = calcdiElectricdndV(phase, numberOfComponents, temp, pres); + diElectricdndT = calcdiElectricdndT(phase, numberOfComponents, temp, pres); + alphai = -(electronCharge * electronCharge * avagadroNumber) / (vacumPermittivity + * Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), 2.0) + * R * temp) * diElectricdn; + alphaiT = -electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * Math + .pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), 2.0) * R + * temp) + * diElectricdndT + + electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow( + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), 2.0) + * R * temp * temp) + * diElectricdn + + 2.0 * electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow( + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), 3.0) + * R * temp) + * diElectricdn + * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstantdT(); + alphaiV = -electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * Math + .pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), 2.0) * R + * temp) + * diElectricdndV + + 2.0 * electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow( + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), 3.0) + * R * temp) + * diElectricdn + * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstantdV(); + XLRi = calcXLRdN(phase, numberOfComponents, temp, pres); + XBorni = ionicCharge * ionicCharge / (getLennardJonesMolecularDiameter() * 1e-10); + super.Finit(phase, temp, pres, totMoles, beta, numberOfComponents, initType); + } + + /** + *

+ * dAlphaLRdndn. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dAlphaLRdndn(int j, PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + double temp = 2.0 * electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * Math + .pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), 3.0) * R + * temperature) + * diElectricdn + * ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) + .getComponents()[j]).getDiElectricConstantdn() + - electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity + * Math.pow( + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getDiElectricConstant(), 2.0) + * R * temperature) + * calcdiElectricdndn(j, phase, numberOfComponents, temperature, pressure); + return temp; + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double Fsup = 0; + double FSR2 = 0; + double FLR = 0; + double FBorn = 0; + Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); + FSR2 = dFSR2dN(phase, numberOfComponents, temperature, pressure); + FLR = dFLRdN(phase, numberOfComponents, temperature, pressure); + FBorn = dFBorndN(phase, numberOfComponents, temperature, pressure); + // System.out.println("phase " + phase.getType()); + // System.out.println("name " + componentName); + // System.out.println("Fsup: " + super.dFdN(phase, + // numberOfComponents,temperature, pressure)); + // if(componentName.equals("Na+")){ + // System.out.println("FnSR: " + dFSR2dN(phase, numberOfComponents, temperature, + // pressure)); + // System.out.println("FLRn: " + dFLRdN(phase, numberOfComponents,temperature, + // pressure)); + // } + return Fsup + sr2On * FSR2 + lrOn * FLR + bornOn * FBorn; + } + + /** {@inheritDoc} */ + @Override + public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdT(phase, numberOfComponents, temperature, pressure) + + sr2On * dFSR2dNdT(phase, numberOfComponents, temperature, pressure) + + lrOn * dFLRdNdT(phase, numberOfComponents, temperature, pressure) + + bornOn * dFBorndNdT(phase, numberOfComponents, temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdV(phase, numberOfComponents, temperature, pressure) + + sr2On * dFSR2dNdV(phase, numberOfComponents, temperature, pressure) + + lrOn * dFLRdNdV(phase, numberOfComponents, temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure) + + sr2On * dFSR2dNdN(j, phase, numberOfComponents, temperature, pressure) + + lrOn * dFLRdNdN(j, phase, numberOfComponents, temperature, pressure) + + bornOn * dFBorndNdN(j, phase, numberOfComponents, temperature, pressure); + } + + // Long Range term equations and derivatives + /** + *

+ * dFLRdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFLRdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FLRXLR() * XLRi + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLR() * alphai; + // + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FLRGammaLR()*gammaLRdn; + } + + /** + *

+ * dFLRdNdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFLRdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLRdX() * XLRi + * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getAlphaLRT() + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLR() * alphaiT; + } + + /** + *

+ * dFLRdNdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFLRdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return 1e-5 * (((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLRdX() * XLRi + * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getAlphaLRV() + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLR() * alphaiV); + } + + /** + *

+ * dFLRdNdN. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFLRdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLRdX() * XLRi + * ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) + .getComponents()[j]).getAlphai() + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLR() + * dAlphaLRdndn(j, phase, numberOfComponents, temperature, pressure) + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).dFdAlphaLRdX() * alphai + * ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) + .getComponents()[j]).getXLRi(); + } + + /** + *

+ * calcXLRdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcXLRdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return Math.pow(getIonicCharge(), 2.0) + * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getShieldingParameter() + / (1.0 + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getShieldingParameter() + * getLennardJonesMolecularDiameter() * 1e-10); + } + + /** + *

+ * FLRN. + *

+ * + * @return a double + */ + public double FLRN() { + return 0.0; + } + + /** + *

+ * calcSolventdiElectricdn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcSolventdiElectricdn(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + if (getIonicCharge() != 0) { + return 0.0; + } + /* + * double ans2 = 0.0; for (int i = 0; i < numberOfComponents; i++) { if + * (phase.getComponent(i).getIonicCharge() == 0) { ans2 += + * phase.getComponent(i).getNumberOfMolesInPhase(); } } + */ + return 0.0; + // return getDiElectricConstant(temperature)/ans2 - + // ((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getSolventDiElectricConstant()/ans2; + } + + /** + *

+ * calcSolventdiElectricdndn. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcSolventdiElectricdndn(int j, PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + if (getIonicCharge() != 0 + || ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getComponents()[j] + .getIonicCharge() != 0) { + return 0.0; + } + /* + * double ans2 = 0.0; for (int i = 0; i < numberOfComponents; i++) { if + * (phase.getComponent(i).getIonicCharge() == 0) { ans2 += + * phase.getComponent(i).getNumberOfMolesInPhase(); } } + */ + return 0.0; + // return -getDiElectricConstant(temperature)/(ans2*ans2) - + // ((ComponentModifiedFurstElectrolyteEosMod2004)((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getComponents()[j]).getDiElectricConstant(temperature)/(ans2*ans2) + + // 2.0*((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getSolventDiElectricConstant()/(ans2*ans2); + } + + /** + *

+ * calcSolventdiElectricdndT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcSolventdiElectricdndT(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + if (getIonicCharge() != 0) { + return 0.0; + } + /* + * double ans2 = 0.0; for (int i = 0; i < numberOfComponents; i++) { if + * (phase.getComponent(i).getIonicCharge() == 0) { ans2 += + * phase.getComponent(i).getNumberOfMolesInPhase(); } } + */ + return 0.0; + // return getDiElectricConstantdT(temperature)/ans2 - + // ((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getSolventDiElectricConstantdT()/ans2; + } + + /** + *

+ * calcdiElectricdn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcdiElectricdn(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double X = (1.0 - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic()) + / (1.0 + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0); + double Y = + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getSolventDiElectricConstant() - 1.0; + double dXdf = getEpsIonici() * -3.0 / 2.0 / Math + .pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + double dYdf = getSolventDiElectricConstantdn(); + return dYdf * X + Y * dXdf; + } + + /** + *

+ * calcdiElectricdndV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcdiElectricdndV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double dXdf = + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonicdV() * -3.0 / 2.0 / Math + .pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + double dYdf = getSolventDiElectricConstantdn(); + double d1 = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getSolventDiElectricConstant(); + double d2 = epsIoniciV * -3.0 / 2.0 / Math + .pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + double d3 = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonicdV() * epsIonici * 3.0 + / 2.0 / Math + .pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, 3.0); + return dYdf * dXdf + d1 * d2 + d1 * d3; + } + + /** + *

+ * calcdiElectricdndn. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcdiElectricdndn(int j, PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + double dYdf = + ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) + .getComponents()[j]).getSolventDiElectricConstantdn(); + double dXdfdfj = getEpsIonici() * -3.0 / 2.0 / Math + .pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + + double dXdf = + ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) + .getComponents()[j]).getEpsIonici() * getEpsIonici() * 3.0 / 2.0 + / Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, + 3.0); + double d1 = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getSolventDiElectricConstant(); + + double d2 = + ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) + .getComponents()[j]).getEpsIonici() * -3.0 / 2.0 + / Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, + 2.0); + double d5 = getSolventDiElectricConstantdn(); + + double d3 = calcSolventdiElectricdndn(j, phase, numberOfComponents, temperature, pressure); + double d4 = (1.0 - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic()) + / (1.0 + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0); + + return dYdf * dXdfdfj + dXdf * d1 + d2 * d5 + d3 * d4; + } + + /** + *

+ * calcdiElectricdndT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcdiElectricdndT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double X = (1.0 - ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic()) + / (1.0 + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0); + double Y = ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getSolventDiElectricConstantdT(); + double dXdf = getEpsIonici() * -3.0 / 2.0 / Math + .pow(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsIonic() / 2.0 + 1.0, 2.0); + double dYdf = solventdiElectricdndT; + return dYdf * X + Y * dXdf; + } + + // a little simplified + /** + *

+ * calcGammaLRdn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcGammaLRdn(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return 0.0; + // if(((PhaseModifiedFurstElectrolyteEosMod2004) phase).getPhaseType()==1) + // return 0.0; + // double temp = + // Math.pow(getIonicCharge()/(1.0+((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getShieldingParameter()*getLennardJonesMolecularDiameter()*1e-10),2.0); + // return 1.0/(8.0*((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getShieldingParameter() + 4.0 * + // Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).calcShieldingParameter2(),2.0) * 2.0 * + // getLennardJonesMolecularDiameter()*1e-10) * + // ((temp * ((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getAlphaLR2()/(((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getMolarVolume()*1e-5*((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getNumberOfMolesInPhase()) * avagadroNumber) + // + 4.0 * Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getShieldingParameter(),2.0) / + // ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getAlphaLR2() * alphai ); + // Math.pow(getIonicCharge()/(1.0+((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getShieldingParameter()*getLennardJonesMolecularDiameter()*1e-10),2.0) + // + alphai*temp) /(8.0*((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).getShieldingParameter()); + // + 2.0*getLennardJonesMolecularDiameter()*1e-10 * 4.0 * + // Math.pow(((PhaseModifiedFurstElectrolyteEosMod2004) + // phase).calcShieldingParameter2(),2.0))* + } + + // Short Range term equations and derivatives + /** + *

+ * dFSR2dN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFSR2dN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2eps() * epsi + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2W() * Wi; + } + + /** + *

+ * dFSR2dNdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFSR2dNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2W() * WiT + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epsW() * epsi + * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getWT(); + } + + /** + *

+ * dFSR2dNdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFSR2dNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return 1.0e-5 * (+((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epseps() * epsi + * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsdV() + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2eps() * epsiV + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epsW() * Wi + * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).getEpsdV() + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epsV() * epsi + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2VW() * Wi); + } + + /** + *

+ * dFSR2dNdN. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFSR2dNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epseps() * epsi + * ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) + .getComponents()[j]).getEpsi() + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epsW() * Wi + * ((ComponentModifiedFurstElectrolyteEosMod2004) ((PhaseModifiedFurstElectrolyteEosMod2004) phase) + .getComponents()[j]).getEpsi() + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2W() + * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).calcWij(componentNumber, j, phase, + temperature, pressure, numberOfComponents) + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FSR2epsW() * epsi + * ((PhaseModifiedFurstElectrolyteEosMod2004) phase).calcWi(j, phase, temperature, + pressure, numberOfComponents); + } + + /** + *

+ * dEpsdNi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dEpsdNi(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0) + * (1.0 / (phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase())); + } + + /** + *

+ * dEpsdNidV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dEpsdNidV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return (-avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0) + * (1.0 + / (Math.pow(phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase(), 2.0)))); + } + + /** + *

+ * dEpsIonicdNi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dEpsIonicdNi(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + if (ionicCharge == 0) { + return 0.0; + } else { + return pi / 6.0 * (avagadroNumber * Math.pow(lennardJonesMolecularDiameter * 1.0e-10, 3.0)) + * (1.0 / (phase.getMolarVolume() * 1.0e-5 * phase.getNumberOfMolesInPhase())); + } + } + + /** + *

+ * dEpsIonicdNidV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dEpsIonicdNidV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + if (ionicCharge == 0) { + return 0.0; + } + return (-avagadroNumber * pi / 6.0 * Math.pow(lennardJonesMolecularDiameter * 1e-10, 3.0) + / (Math.pow(phase.getMolarVolume() * 1e-5 * phase.getNumberOfMolesInPhase(), 2.0))); + } + + // Born term equations and derivatives + /** + *

+ * dFBorndN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFBorndN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FBornX() * getXBorni() + + ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FBornD(); + } + + /** + *

+ * dFBorndNdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFBorndNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhaseModifiedFurstElectrolyteEosMod2004) phase).FBornTX() * XBorni; + } + + /** + *

+ * dFBorndNdN. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFBorndNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return 0.0; + } + + /** + *

+ * Getter for the field ionicCoVolume. + *

+ * + * @return a double + */ + public double getIonicCoVolume() { + return ionicCoVolume; + } + + /** + *

+ * getDiElectricConstantdn. + *

+ * + * @return a double + */ + public double getDiElectricConstantdn() { + return diElectricdn; + } + + /** + *

+ * getSolventDiElectricConstantdn. + *

+ * + * @return a double + */ + public double getSolventDiElectricConstantdn() { + return solventdiElectricdn; + } + + /** + *

+ * getBornVal. + *

+ * + * @return a double + */ + public double getBornVal() { + return bornterm; + } + + /** + *

+ * Getter for the field epsi. + *

+ * + * @return a double + */ + public double getEpsi() { + return epsi; + } + + /** + *

+ * Getter for the field epsIonici. + *

+ * + * @return a double + */ + public double getEpsIonici() { + return epsIonici; + } + + /** + *

+ * Getter for the field alphai. + *

+ * + * @return a double + */ + public double getAlphai() { + return alphai; + } + + /** + *

+ * getXLRi. + *

+ * + * @return a double + */ + public double getXLRi() { + return XLRi; + } + + /** + *

+ * getXBorni. + *

+ * + * @return a double + */ + public double getXBorni() { + return XBorni; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentPCSAFT.java b/src/main/java/neqsim/thermo/component/ComponentPCSAFT.java index bc826603e3..17fb6c4dc1 100644 --- a/src/main/java/neqsim/thermo/component/ComponentPCSAFT.java +++ b/src/main/java/neqsim/thermo/component/ComponentPCSAFT.java @@ -14,465 +14,466 @@ * @version $Id: $Id */ public class ComponentPCSAFT extends ComponentSrk { - private static final long serialVersionUID = 1000; - - private double dSAFTi = 1.0, dmSAFTdi = 1.0; - double dghsSAFTdi, dnSAFTdi = 1.0, dahsSAFTdi = 1.0, dlogghsSAFTdi = 1.0; - - private double F1dispVolTermdn = 1.0, F1dispSumTermdn = 1.0, F1dispI1dn = 1.0, F2dispI2dn = 1.0, - F2dispZHCdn = 1.0, F2dispVolTermdn = 1.0, F2dispSumTermdn = 1; - - int useHS = 1, useDISP1 = 1, useDISP2 = 1; - - /** - *

- * Constructor for ComponentPCSAFT. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentPCSAFT(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + private static final long serialVersionUID = 1000; + + private double dSAFTi = 1.0; + private double dmSAFTdi = 1.0; + double dghsSAFTdi; + double dnSAFTdi = 1.0; + double dahsSAFTdi = 1.0; + double dlogghsSAFTdi = 1.0; + private double F1dispVolTermdn = 1.0; + private double F1dispSumTermdn = 1.0; + private double F1dispI1dn = 1.0; + private double F2dispI2dn = 1.0; + private double F2dispZHCdn = 1.0; + private double F2dispVolTermdn = 1.0; + private double F2dispSumTermdn = 1; + int useHS = 1; + int useDISP1 = 1; + int useDISP2 = 1; + + /** + *

+ * Constructor for ComponentPCSAFT. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentPCSAFT(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } + + /** + *

+ * Constructor for ComponentPCSAFT. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentPCSAFT(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + } + + /** {@inheritDoc} */ + @Override + public ComponentPCSAFT clone() { + ComponentPCSAFT clonedComponent = null; + try { + clonedComponent = (ComponentPCSAFT) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * Constructor for ComponentPCSAFT. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentPCSAFT(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, + int initType) { + setdSAFTi(getSigmaSAFTi() * (1.0 - 0.12 * Math.exp(-3.0 * getEpsikSAFT() / temperature))); + super.init(temperature, pressure, totalNumberOfMoles, beta, initType); + } + + /** {@inheritDoc} */ + @Override + public void Finit(PhaseInterface phase, double temp, double pres, double totMoles, double beta, + int numberOfComponents, int initType) { + super.Finit(phase, temp, pres, totMoles, beta, numberOfComponents, initType); + setDnSAFTdi(calcdnSAFTdi(phase, numberOfComponents, temp, pres)); + setDghsSAFTdi(calcdghsSAFTdi(phase, numberOfComponents, temp, pres)); + setDlogghsSAFTdi(1.0 / ((PhasePCSAFT) phase).getGhsSAFT() * getDghsSAFTdi()); + setDmSAFTdi(calcdmSAFTdi(phase, numberOfComponents, temp, pres)); + setdahsSAFTdi(calcdahsSAFTdi(phase, numberOfComponents, temp, pres)); + + F1dispVolTermdn = 1.0 * ThermodynamicConstantsInterface.avagadroNumber + / ((PhasePCSAFT) phase).getVolumeSAFT(); + F2dispVolTermdn = F1dispVolTermdn; + F1dispSumTermdn = calcF1dispSumTermdn(phase, numberOfComponents, temp, pres); + F2dispSumTermdn = calcF2dispSumTermdn(phase, numberOfComponents, temp, pres); + F1dispI1dn = ((PhasePCSAFT) phase).calcF1dispI1dN() * getDnSAFTdi() + + ((PhasePCSAFT) phase).calcF1dispI1dm() * getDmSAFTdi(); + F2dispI2dn = ((PhasePCSAFT) phase).calcF2dispI2dN() * getDnSAFTdi() + + ((PhasePCSAFT) phase).calcF2dispI2dm() * getDmSAFTdi(); + + F2dispZHCdn = ((PhasePCSAFT) phase).getF2dispZHCdN() * getDnSAFTdi() + + ((PhasePCSAFT) phase).getF2dispZHCdm() * getDmSAFTdi(); + // System.out.println("fugacity " + getFugacityCoefficient()); + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + // System.out.println("term getF " + + // ((PhasePCSAFT)phase).getF()/phase.getNumberOfMolesInPhase()); + // System.out.println("term getF21 " + + // dF_HC_SAFTdN(phase,numberOfComponents,temperature,pressure)); + // System.out.println("term getF22 " + + // dF_DISP1_SAFTdN(phase,numberOfComponents,temperature,pressure)); + // System.out.println("term getF23 " + + // dF_DISP2_SAFTdN(phase,numberOfComponents,temperature,pressure)); + + // System.out.println("term furgacity coef " + getFugacityCoefficient()); + return useHS * dF_HC_SAFTdN(phase, numberOfComponents, temperature, pressure) + + useDISP1 * dF_DISP1_SAFTdN(phase, numberOfComponents, temperature, pressure) + + useDISP2 * dF_DISP2_SAFTdN(phase, numberOfComponents, temperature, pressure); + } + + /** + *

+ * dF_HC_SAFTdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dF_HC_SAFTdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhasePCSAFT) phase).F_HC_SAFT() / phase.getNumberOfMolesInPhase() + + phase.getNumberOfMolesInPhase() * (getDmSAFTdi() * ((PhasePCSAFT) phase).getAHSSAFT() + + ((PhasePCSAFT) phase).getmSAFT() * getdahsSAFTdi() + - (mSAFTi - 1.0) / phase.getNumberOfMolesInPhase() + * Math.log(((PhasePCSAFT) phase).getGhsSAFT()) + + ((PhasePCSAFT) phase).getMmin1SAFT() / phase.getNumberOfMolesInPhase() + * Math.log(((PhasePCSAFT) phase).getGhsSAFT()) + - ((PhasePCSAFT) phase).getMmin1SAFT() * getDlogghsSAFTdi()); + // (ThermodynamicConstantsInterface.R*temperature); + } + + /** + *

+ * dF_DISP1_SAFTdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dF_DISP1_SAFTdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhasePCSAFT) phase).F_DISP1_SAFT() / phase.getNumberOfMolesInPhase() + phase + .getNumberOfMolesInPhase() + * ((-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdn + * ((PhasePCSAFT) phase).getF1dispSumTerm() * ((PhasePCSAFT) phase).getF1dispI1() + - 2.0 * ThermodynamicConstantsInterface.pi * ((PhasePCSAFT) phase).getF1dispVolTerm() + * F1dispSumTermdn * ((PhasePCSAFT) phase).getF1dispI1() + - 2.0 * ThermodynamicConstantsInterface.pi * ((PhasePCSAFT) phase).getF1dispVolTerm() + * ((PhasePCSAFT) phase).getF1dispSumTerm() * F1dispI1dn)); + // (ThermodynamicConstantsInterface.R*temperature); + } + + /** + *

+ * calcdmSAFTdi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param nuberOfComponents a int + * @param temp a double + * @param pres a double + * @return a double + */ + public double calcdmSAFTdi(PhaseInterface phase, int nuberOfComponents, double temp, + double pres) { + return mSAFTi / phase.getNumberOfMolesInPhase() + - ((PhasePCSAFT) phase).getmSAFT() / phase.getNumberOfMolesInPhase(); + } + + /** + *

+ * dF_DISP2_SAFTdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dF_DISP2_SAFTdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return ((PhasePCSAFT) phase).F_DISP2_SAFT() / phase.getNumberOfMolesInPhase() + + phase.getNumberOfMolesInPhase() * ((-ThermodynamicConstantsInterface.pi * getDmSAFTdi() + * ((PhasePCSAFT) phase).getF1dispVolTerm() * ((PhasePCSAFT) phase).getF2dispSumTerm() + * ((PhasePCSAFT) phase).getF2dispI2() * ((PhasePCSAFT) phase).getF2dispZHC() + - ThermodynamicConstantsInterface.pi * ((PhasePCSAFT) phase).getmSAFT() + * F2dispVolTermdn * ((PhasePCSAFT) phase).getF2dispSumTerm() + * ((PhasePCSAFT) phase).getF2dispI2() * ((PhasePCSAFT) phase).getF2dispZHC() + - ThermodynamicConstantsInterface.pi * ((PhasePCSAFT) phase).getmSAFT() + * ((PhasePCSAFT) phase).getF1dispVolTerm() * F2dispSumTermdn + * ((PhasePCSAFT) phase).getF2dispI2() * ((PhasePCSAFT) phase).getF2dispZHC() + - ThermodynamicConstantsInterface.pi * ((PhasePCSAFT) phase).getmSAFT() + * ((PhasePCSAFT) phase).getF1dispVolTerm() + * ((PhasePCSAFT) phase).getF2dispSumTerm() * F2dispI2dn + * ((PhasePCSAFT) phase).getF2dispZHC() + - ThermodynamicConstantsInterface.pi * ((PhasePCSAFT) phase).getmSAFT() + * ((PhasePCSAFT) phase).getF1dispVolTerm() + * ((PhasePCSAFT) phase).getF2dispSumTerm() * ((PhasePCSAFT) phase).getF2dispI2() + * F2dispZHCdn)); // (ThermodynamicConstantsInterface.R*temperature); + } + + /** + *

+ * calcF1dispSumTermdn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcF1dispSumTermdn(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + double temp1 = 0.0; + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + temp1 += phase.getComponent(i).getNumberOfMolesInPhase() * phase.getComponent(i).getmSAFTi() + * getmSAFTi() + * Math.sqrt( + getEpsikSAFT() / temperature * phase.getComponent(i).getEpsikSAFT() / temperature) + * (1.0 - ((PhaseEosInterface) phase).getMixingRule() + .getBinaryInteractionParameter(componentNumber, i)) + * Math.pow(0.5 * (phase.getComponent(i).getSigmaSAFTi() + getSigmaSAFTi()), 3.0); } - - /** {@inheritDoc} */ - @Override - public ComponentPCSAFT clone() { - ComponentPCSAFT clonedComponent = null; - try { - clonedComponent = (ComponentPCSAFT) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedComponent; - } - - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - setdSAFTi(getSigmaSAFTi() * (1.0 - 0.12 * Math.exp(-3.0 * getEpsikSAFT() / temperature))); - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } - - /** {@inheritDoc} */ - @Override - public void Finit(PhaseInterface phase, double temp, double pres, double totMoles, double beta, - int numberOfComponents, int type) { - super.Finit(phase, temp, pres, totMoles, beta, numberOfComponents, type); - setDnSAFTdi(calcdnSAFTdi(phase, numberOfComponents, temp, pres)); - setDghsSAFTdi(calcdghsSAFTdi(phase, numberOfComponents, temp, pres)); - setDlogghsSAFTdi(1.0 / ((PhasePCSAFT) phase).getGhsSAFT() * getDghsSAFTdi()); - setDmSAFTdi(calcdmSAFTdi(phase, numberOfComponents, temp, pres)); - setdahsSAFTdi(calcdahsSAFTdi(phase, numberOfComponents, temp, pres)); - - F1dispVolTermdn = 1.0 * ThermodynamicConstantsInterface.avagadroNumber - / ((PhasePCSAFT) phase).getVolumeSAFT(); - F2dispVolTermdn = F1dispVolTermdn; - F1dispSumTermdn = calcF1dispSumTermdn(phase, numberOfComponents, temp, pres); - F2dispSumTermdn = calcF2dispSumTermdn(phase, numberOfComponents, temp, pres); - F1dispI1dn = ((PhasePCSAFT) phase).calcF1dispI1dN() * getDnSAFTdi() - + ((PhasePCSAFT) phase).calcF1dispI1dm() * getDmSAFTdi(); - F2dispI2dn = ((PhasePCSAFT) phase).calcF2dispI2dN() * getDnSAFTdi() - + ((PhasePCSAFT) phase).calcF2dispI2dm() * getDmSAFTdi(); - - F2dispZHCdn = ((PhasePCSAFT) phase).getF2dispZHCdN() * getDnSAFTdi() - + ((PhasePCSAFT) phase).getF2dispZHCdm() * getDmSAFTdi(); - // System.out.println("fugacity " + getFugacityCoefficient()); - } - - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - // System.out.println("term getF " + - // ((PhasePCSAFT)phase).getF()/phase.getNumberOfMolesInPhase()); - // System.out.println("term getF21 " + - // dF_HC_SAFTdN(phase,numberOfComponents,temperature,pressure)); - // System.out.println("term getF22 " + - // dF_DISP1_SAFTdN(phase,numberOfComponents,temperature,pressure)); - // System.out.println("term getF23 " + - // dF_DISP2_SAFTdN(phase,numberOfComponents,temperature,pressure)); - - // System.out.println("term furgacity coef " + getFugacityCoefficient()); - return useHS * dF_HC_SAFTdN(phase, numberOfComponents, temperature, pressure) - + useDISP1 * dF_DISP1_SAFTdN(phase, numberOfComponents, temperature, pressure) - + useDISP2 * dF_DISP2_SAFTdN(phase, numberOfComponents, temperature, pressure); - } - - /** - *

- * dF_HC_SAFTdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dF_HC_SAFTdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhasePCSAFT) phase).F_HC_SAFT() / phase.getNumberOfMolesInPhase() + phase - .getNumberOfMolesInPhase() - * (getDmSAFTdi() * ((PhasePCSAFT) phase).getAHSSAFT() - + ((PhasePCSAFT) phase).getmSAFT() * getdahsSAFTdi() - - (mSAFTi - 1.0) / phase.getNumberOfMolesInPhase() - * Math.log(((PhasePCSAFT) phase).getGhsSAFT()) - + ((PhasePCSAFT) phase).getMmin1SAFT() / phase.getNumberOfMolesInPhase() - * Math.log(((PhasePCSAFT) phase).getGhsSAFT()) - - ((PhasePCSAFT) phase).getMmin1SAFT() * getDlogghsSAFTdi());/// (ThermodynamicConstantsInterface.R*temperature); - } - - /** - *

- * dF_DISP1_SAFTdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dF_DISP1_SAFTdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhasePCSAFT) phase).F_DISP1_SAFT() / phase.getNumberOfMolesInPhase() - + phase.getNumberOfMolesInPhase() * ((-2.0 * ThermodynamicConstantsInterface.pi - * F1dispVolTermdn * ((PhasePCSAFT) phase).getF1dispSumTerm() - * ((PhasePCSAFT) phase).getF1dispI1() - - 2.0 * ThermodynamicConstantsInterface.pi - * ((PhasePCSAFT) phase).getF1dispVolTerm() * F1dispSumTermdn - * ((PhasePCSAFT) phase).getF1dispI1() - - 2.0 * ThermodynamicConstantsInterface.pi - * ((PhasePCSAFT) phase).getF1dispVolTerm() - * ((PhasePCSAFT) phase).getF1dispSumTerm() * F1dispI1dn));/// (ThermodynamicConstantsInterface.R*temperature); - } - - /** - *

- * calcdmSAFTdi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param nuberOfComponents a int - * @param temp a double - * @param pres a double - * @return a double - */ - public double calcdmSAFTdi(PhaseInterface phase, int nuberOfComponents, double temp, - double pres) { - return mSAFTi / phase.getNumberOfMolesInPhase() - - ((PhasePCSAFT) phase).getmSAFT() / phase.getNumberOfMolesInPhase(); - } - - /** - *

- * dF_DISP2_SAFTdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dF_DISP2_SAFTdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return ((PhasePCSAFT) phase).F_DISP2_SAFT() / phase.getNumberOfMolesInPhase() - + phase.getNumberOfMolesInPhase() * ((-ThermodynamicConstantsInterface.pi - * getDmSAFTdi() * ((PhasePCSAFT) phase).getF1dispVolTerm() - * ((PhasePCSAFT) phase).getF2dispSumTerm() - * ((PhasePCSAFT) phase).getF2dispI2() * ((PhasePCSAFT) phase).getF2dispZHC() - - ThermodynamicConstantsInterface.pi * ((PhasePCSAFT) phase).getmSAFT() - * F2dispVolTermdn * ((PhasePCSAFT) phase).getF2dispSumTerm() - * ((PhasePCSAFT) phase).getF2dispI2() - * ((PhasePCSAFT) phase).getF2dispZHC() - - ThermodynamicConstantsInterface.pi * ((PhasePCSAFT) phase).getmSAFT() - * ((PhasePCSAFT) phase).getF1dispVolTerm() * F2dispSumTermdn - * ((PhasePCSAFT) phase).getF2dispI2() - * ((PhasePCSAFT) phase).getF2dispZHC() - - ThermodynamicConstantsInterface.pi * ((PhasePCSAFT) phase).getmSAFT() - * ((PhasePCSAFT) phase).getF1dispVolTerm() - * ((PhasePCSAFT) phase).getF2dispSumTerm() * F2dispI2dn - * ((PhasePCSAFT) phase).getF2dispZHC() - - ThermodynamicConstantsInterface.pi * ((PhasePCSAFT) phase).getmSAFT() - * ((PhasePCSAFT) phase).getF1dispVolTerm() - * ((PhasePCSAFT) phase).getF2dispSumTerm() - * ((PhasePCSAFT) phase).getF2dispI2() * F2dispZHCdn));/// (ThermodynamicConstantsInterface.R*temperature); - } - - /** - *

- * calcF1dispSumTermdn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcF1dispSumTermdn(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - double temp1 = 0.0; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - temp1 += phase.getComponent(i).getNumberOfMolesInPhase() - * phase.getComponent(i).getmSAFTi() * getmSAFTi() - * Math.sqrt(getEpsikSAFT() / temperature * phase.getComponent(i).getEpsikSAFT() - / temperature) - * (1.0 - ((PhaseEosInterface) phase).getMixingRule() - .getBinaryInteractionParameter(componentNumber, i)) - * Math.pow(0.5 * (phase.getComponent(i).getSigmaSAFTi() + getSigmaSAFTi()), - 3.0); - } - return -2.0 / Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * ((PhasePCSAFT) phase).getF1dispSumTerm() - + 2.0 * temp1 / Math.pow(phase.getNumberOfMolesInPhase(), 2.0); - } - - /** - *

- * calcF2dispSumTermdn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double calcF2dispSumTermdn(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure) { - double temp1 = 0.0; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - temp1 += phase.getComponent(i).getNumberOfMolesInPhase() - * phase.getComponent(i).getmSAFTi() * getmSAFTi() * getEpsikSAFT() / temperature - * phase.getComponent(i).getEpsikSAFT() / temperature - * Math.pow((1.0 - ((PhaseEosInterface) phase).getMixingRule() - .getBinaryInteractionParameter(componentNumber, i)), 2.0) - * Math.pow(0.5 * (phase.getComponent(i).getSigmaSAFTi() + getSigmaSAFTi()), - 3.0); - // System.out.println("kij "+ - // ((PhaseEosInterface)phase).getMixingRule().getBinaryInteractionParameter(componentNumber, - // i)); - } - return -2.0 / Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * ((PhasePCSAFT) phase).getF2dispSumTerm() - + 2.0 * temp1 / Math.pow(phase.getNumberOfMolesInPhase(), 2.0); - } - - /** - *

- * calcdghsSAFTdi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param nuberOfComponents a int - * @param temp a double - * @param pres a double - * @return a double - */ - public double calcdghsSAFTdi(PhaseInterface phase, int nuberOfComponents, double temp, - double pres) { - double temp1 = ((PhasePCSAFT) phase).getDgHSSAFTdN(); - return temp1 * getDnSAFTdi(); - } - - /** - *

- * calcdahsSAFTdi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param nuberOfComponents a int - * @param temp a double - * @param pres a double - * @return a double - */ - public double calcdahsSAFTdi(PhaseInterface phase, int nuberOfComponents, double temp, - double pres) { - double temp1 = ((4.0 - 6.0 * ((PhasePCSAFT) phase).getNSAFT()) - * Math.pow(1.0 - ((PhasePCSAFT) phase).getNSAFT(), 2.0) - - (4.0 * ((PhasePCSAFT) phase).getNSAFT() - - 3.0 * Math.pow(((PhasePCSAFT) phase).getNSAFT(), 2.0)) * (-2.0) - * (1.0 - ((PhasePCSAFT) phase).getNSAFT())); - return temp1 / Math.pow(1.0 - ((PhasePCSAFT) phase).getNSAFT(), 4.0) * getDnSAFTdi(); - } - - /** - *

- * calcdnSAFTdi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param nuberOfComponents a int - * @param temp a double - * @param pres a double - * @return a double - */ - public double calcdnSAFTdi(PhaseInterface phase, int nuberOfComponents, double temp, - double pres) { - double temp1 = phase.getNumberOfMolesInPhase() / ((PhasePCSAFT) phase).getVolumeSAFT() - * getmSAFTi() * Math.pow(getdSAFTi(), 3.0) * 1.0 / phase.getNumberOfMolesInPhase() - + 1.0 / ((PhasePCSAFT) phase).getVolumeSAFT() * ((PhasePCSAFT) phase).getDSAFT() - - 1.0 / Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * phase.getNumberOfMolesInPhase() / ((PhasePCSAFT) phase).getVolumeSAFT() - * ((PhasePCSAFT) phase).getDSAFT(); - return ThermodynamicConstantsInterface.pi / 6.0 - * ThermodynamicConstantsInterface.avagadroNumber * (temp1); - } - - /** - *

- * Getter for the field dSAFTi. - *

- * - * @return a double - */ - public double getdSAFTi() { - return dSAFTi; - } - - /** - *

- * Setter for the field dSAFTi. - *

- * - * @param di a double - */ - public void setdSAFTi(double di) { - this.dSAFTi = di; - } - - /** - *

- * Getter for the field dghsSAFTdi. - *

- * - * @return a double - */ - public double getDghsSAFTdi() { - return dghsSAFTdi; - } - - /** - *

- * Setter for the field dghsSAFTdi. - *

- * - * @param dghsSAFTdi a double - */ - public void setDghsSAFTdi(double dghsSAFTdi) { - this.dghsSAFTdi = dghsSAFTdi; - } - - /** - *

- * Getter for the field dnSAFTdi. - *

- * - * @return a double - */ - public double getDnSAFTdi() { - return dnSAFTdi; - } - - /** - *

- * Setter for the field dnSAFTdi. - *

- * - * @param dnSAFTdi a double - */ - public void setDnSAFTdi(double dnSAFTdi) { - this.dnSAFTdi = dnSAFTdi; - } - - /** - *

- * Getter for the field dahsSAFTdi. - *

- * - * @return a double - */ - public double getdahsSAFTdi() { - return dahsSAFTdi; - } - - /** - *

- * Setter for the field dahsSAFTdi. - *

- * - * @param dahsSAFTdi a double - */ - public void setdahsSAFTdi(double dahsSAFTdi) { - this.dahsSAFTdi = dahsSAFTdi; - } - - /** - *

- * Getter for the field dmSAFTdi. - *

- * - * @return a double - */ - public double getDmSAFTdi() { - return dmSAFTdi; - } - - /** - *

- * Setter for the field dmSAFTdi. - *

- * - * @param dmSAFTdi a double - */ - public void setDmSAFTdi(double dmSAFTdi) { - this.dmSAFTdi = dmSAFTdi; - } - - /** - *

- * Getter for the field dlogghsSAFTdi. - *

- * - * @return a double - */ - public double getDlogghsSAFTdi() { - return dlogghsSAFTdi; - } - - /** - *

- * Setter for the field dlogghsSAFTdi. - *

- * - * @param dlogghsSAFTdi a double - */ - public void setDlogghsSAFTdi(double dlogghsSAFTdi) { - this.dlogghsSAFTdi = dlogghsSAFTdi; + return -2.0 / Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * ((PhasePCSAFT) phase).getF1dispSumTerm() + + 2.0 * temp1 / Math.pow(phase.getNumberOfMolesInPhase(), 2.0); + } + + /** + *

+ * calcF2dispSumTermdn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double calcF2dispSumTermdn(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure) { + double temp1 = 0.0; + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + temp1 += phase.getComponent(i).getNumberOfMolesInPhase() * phase.getComponent(i).getmSAFTi() + * getmSAFTi() * getEpsikSAFT() / temperature * phase.getComponent(i).getEpsikSAFT() + / temperature + * Math.pow((1.0 - ((PhaseEosInterface) phase).getMixingRule() + .getBinaryInteractionParameter(componentNumber, i)), 2.0) + * Math.pow(0.5 * (phase.getComponent(i).getSigmaSAFTi() + getSigmaSAFTi()), 3.0); + // System.out.println("kij "+ + // ((PhaseEosInterface)phase).getMixingRule().getBinaryInteractionParameter(componentNumber, + // i)); } + return -2.0 / Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * ((PhasePCSAFT) phase).getF2dispSumTerm() + + 2.0 * temp1 / Math.pow(phase.getNumberOfMolesInPhase(), 2.0); + } + + /** + *

+ * calcdghsSAFTdi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param nuberOfComponents a int + * @param temp a double + * @param pres a double + * @return a double + */ + public double calcdghsSAFTdi(PhaseInterface phase, int nuberOfComponents, double temp, + double pres) { + double temp1 = ((PhasePCSAFT) phase).getDgHSSAFTdN(); + return temp1 * getDnSAFTdi(); + } + + /** + *

+ * calcdahsSAFTdi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param nuberOfComponents a int + * @param temp a double + * @param pres a double + * @return a double + */ + public double calcdahsSAFTdi(PhaseInterface phase, int nuberOfComponents, double temp, + double pres) { + double temp1 = ((4.0 - 6.0 * ((PhasePCSAFT) phase).getNSAFT()) + * Math.pow(1.0 - ((PhasePCSAFT) phase).getNSAFT(), 2.0) + - (4.0 * ((PhasePCSAFT) phase).getNSAFT() + - 3.0 * Math.pow(((PhasePCSAFT) phase).getNSAFT(), 2.0)) * (-2.0) + * (1.0 - ((PhasePCSAFT) phase).getNSAFT())); + return temp1 / Math.pow(1.0 - ((PhasePCSAFT) phase).getNSAFT(), 4.0) * getDnSAFTdi(); + } + + /** + *

+ * calcdnSAFTdi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param nuberOfComponents a int + * @param temp a double + * @param pres a double + * @return a double + */ + public double calcdnSAFTdi(PhaseInterface phase, int nuberOfComponents, double temp, + double pres) { + double temp1 = phase.getNumberOfMolesInPhase() / ((PhasePCSAFT) phase).getVolumeSAFT() + * getmSAFTi() * Math.pow(getdSAFTi(), 3.0) * 1.0 / phase.getNumberOfMolesInPhase() + + 1.0 / ((PhasePCSAFT) phase).getVolumeSAFT() * ((PhasePCSAFT) phase).getDSAFT() + - 1.0 / Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * phase.getNumberOfMolesInPhase() + / ((PhasePCSAFT) phase).getVolumeSAFT() * ((PhasePCSAFT) phase).getDSAFT(); + return ThermodynamicConstantsInterface.pi / 6.0 * ThermodynamicConstantsInterface.avagadroNumber + * (temp1); + } + + /** + *

+ * Getter for the field dSAFTi. + *

+ * + * @return a double + */ + public double getdSAFTi() { + return dSAFTi; + } + + /** + *

+ * Setter for the field dSAFTi. + *

+ * + * @param di a double + */ + public void setdSAFTi(double di) { + this.dSAFTi = di; + } + + /** + *

+ * Getter for the field dghsSAFTdi. + *

+ * + * @return a double + */ + public double getDghsSAFTdi() { + return dghsSAFTdi; + } + + /** + *

+ * Setter for the field dghsSAFTdi. + *

+ * + * @param dghsSAFTdi a double + */ + public void setDghsSAFTdi(double dghsSAFTdi) { + this.dghsSAFTdi = dghsSAFTdi; + } + + /** + *

+ * Getter for the field dnSAFTdi. + *

+ * + * @return a double + */ + public double getDnSAFTdi() { + return dnSAFTdi; + } + + /** + *

+ * Setter for the field dnSAFTdi. + *

+ * + * @param dnSAFTdi a double + */ + public void setDnSAFTdi(double dnSAFTdi) { + this.dnSAFTdi = dnSAFTdi; + } + + /** + *

+ * Getter for the field dahsSAFTdi. + *

+ * + * @return a double + */ + public double getdahsSAFTdi() { + return dahsSAFTdi; + } + + /** + *

+ * Setter for the field dahsSAFTdi. + *

+ * + * @param dahsSAFTdi a double + */ + public void setdahsSAFTdi(double dahsSAFTdi) { + this.dahsSAFTdi = dahsSAFTdi; + } + + /** + *

+ * Getter for the field dmSAFTdi. + *

+ * + * @return a double + */ + public double getDmSAFTdi() { + return dmSAFTdi; + } + + /** + *

+ * Setter for the field dmSAFTdi. + *

+ * + * @param dmSAFTdi a double + */ + public void setDmSAFTdi(double dmSAFTdi) { + this.dmSAFTdi = dmSAFTdi; + } + + /** + *

+ * Getter for the field dlogghsSAFTdi. + *

+ * + * @return a double + */ + public double getDlogghsSAFTdi() { + return dlogghsSAFTdi; + } + + /** + *

+ * Setter for the field dlogghsSAFTdi. + *

+ * + * @param dlogghsSAFTdi a double + */ + public void setDlogghsSAFTdi(double dlogghsSAFTdi) { + this.dlogghsSAFTdi = dlogghsSAFTdi; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentPCSAFTa.java b/src/main/java/neqsim/thermo/component/ComponentPCSAFTa.java index a68cb4b9bf..370db747b4 100644 --- a/src/main/java/neqsim/thermo/component/ComponentPCSAFTa.java +++ b/src/main/java/neqsim/thermo/component/ComponentPCSAFTa.java @@ -12,319 +12,311 @@ * @version $Id: $Id */ public class ComponentPCSAFTa extends ComponentPCSAFT implements ComponentCPAInterface { - private static final long serialVersionUID = 1000; - - int cpaon = 1; - private double[][] xsitedni = new double[0][0]; - double[] xsite = new double[0]; - double[] xsiteOld = new double[0]; - double[] xsitedV = new double[0]; - double[] xsitedT = new double[0]; - - /** - *

- * Constructor for ComponentPCSAFTa. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentPCSAFTa(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - xsite = new double[numberOfAssociationSites]; - xsitedV = new double[numberOfAssociationSites]; - xsiteOld = new double[numberOfAssociationSites]; - xsitedT = new double[numberOfAssociationSites]; - - if (numberOfAssociationSites != 0 && cpaon == 1) { - for (int j = 0; j < getNumberOfAssociationSites(); j++) { - setXsite(j, 1.0); - setXsiteOld(j, 1.0); - setXsitedV(j, 0.0); - setXsitedT(j, 0.0); - } - } + private static final long serialVersionUID = 1000; + + int cpaon = 1; + private double[][] xsitedni = new double[0][0]; + double[] xsite = new double[0]; + double[] xsiteOld = new double[0]; + double[] xsitedV = new double[0]; + double[] xsitedT = new double[0]; + + /** + *

+ * Constructor for ComponentPCSAFTa. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentPCSAFTa(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + xsite = new double[numberOfAssociationSites]; + xsitedV = new double[numberOfAssociationSites]; + xsiteOld = new double[numberOfAssociationSites]; + xsitedT = new double[numberOfAssociationSites]; + + if (numberOfAssociationSites != 0 && cpaon == 1) { + for (int j = 0; j < getNumberOfAssociationSites(); j++) { + setXsite(j, 1.0); + setXsiteOld(j, 1.0); + setXsitedV(j, 0.0); + setXsitedT(j, 0.0); + } } - - /** - *

- * Constructor for ComponentPCSAFTa. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentPCSAFTa(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); - xsite = new double[numberOfAssociationSites]; - xsitedV = new double[numberOfAssociationSites]; - xsiteOld = new double[numberOfAssociationSites]; - xsitedT = new double[numberOfAssociationSites]; - - if (numberOfAssociationSites != 0 && cpaon == 1) { - for (int j = 0; j < getNumberOfAssociationSites(); j++) { - setXsite(j, 1.0); - setXsiteOld(j, 1.0); - setXsitedV(j, 0.0); - setXsitedT(j, 0.0); - } - } - } - - /** {@inheritDoc} */ - @Override - public ComponentPCSAFTa clone() { - ComponentPCSAFTa clonedComponent = null; - try { - clonedComponent = (ComponentPCSAFTa) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - clonedComponent.xsite = xsite.clone(); - System.arraycopy(this.xsite, 0, clonedComponent.xsite, 0, xsite.length); - clonedComponent.xsiteOld = xsiteOld.clone(); - System.arraycopy(this.xsiteOld, 0, clonedComponent.xsiteOld, 0, xsiteOld.length); - clonedComponent.xsitedV = xsitedV.clone(); - System.arraycopy(this.xsitedV, 0, clonedComponent.xsitedV, 0, xsitedV.length); - clonedComponent.xsitedT = xsitedT.clone(); - System.arraycopy(this.xsitedT, 0, clonedComponent.xsitedT, 0, xsitedT.length); - return clonedComponent; - } - - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } - - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); - double Fcpa = 0.0; - // if(phase.getPhaseType()==1) cpaon=0; - Fcpa = dFCPAdN(phase, numberOfComponents, temperature, pressure); - // System.out.println("Fsup " + Fsup + " fcpa " + Fcpa); - return Fsup + cpaon * Fcpa; + } + + /** + *

+ * Constructor for ComponentPCSAFTa. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentPCSAFTa(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + xsite = new double[numberOfAssociationSites]; + xsitedV = new double[numberOfAssociationSites]; + xsiteOld = new double[numberOfAssociationSites]; + xsitedT = new double[numberOfAssociationSites]; + + if (numberOfAssociationSites != 0 && cpaon == 1) { + for (int j = 0; j < getNumberOfAssociationSites(); j++) { + setXsite(j, 1.0); + setXsiteOld(j, 1.0); + setXsitedV(j, 0.0); + setXsitedT(j, 0.0); + } } - - /** {@inheritDoc} */ - @Override - public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdT(phase, numberOfComponents, temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdV(phase, numberOfComponents, temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure); - } - - /** - *

- * dFCPAdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - xi += Math.log(xsite[i]); - } - return (xi - ((PhaseCPAInterface) phase).getHcpatot() / 2.0 * dlogghsSAFTdi);// calc_lngi(phase)); - } - - /** - *

- * dFCPAdNdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = dFCPAdNdXidXdV(phase); - double xi2 = -((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngidV(phase); - return xi + xi2; - } - - /** - *

- * calc_lngidV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngidV(PhaseInterface phase) { - return 0; - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdVdXi(int site, PhaseInterface phase) { - return 1.0 / (2.0 * phase.getTotalVolume()) - * (1.0 - phase.getTotalVolume() * ((PhaseCPAInterface) phase).getGcpav()) - * getNumberOfMolesInPhase(); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdNdXi(int site, PhaseInterface phase) { - double xi = 1.0 / xsite[site]; - - // return xi - tempp; - return xi + getNumberOfMolesInPhase() / 2.0 * calc_lngi(phase); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdXidXj(int sitei, int sitej, int compj, PhaseInterface phase) { - return 0.0; - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdXi(int site, PhaseInterface phase) { - return 0.0; + } + + /** {@inheritDoc} */ + @Override + public ComponentPCSAFTa clone() { + ComponentPCSAFTa clonedComponent = null; + try { + clonedComponent = (ComponentPCSAFTa) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * calc_lngi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngi(PhaseInterface phase) { - return 0; + clonedComponent.xsite = xsite.clone(); + System.arraycopy(this.xsite, 0, clonedComponent.xsite, 0, xsite.length); + clonedComponent.xsiteOld = xsiteOld.clone(); + System.arraycopy(this.xsiteOld, 0, clonedComponent.xsiteOld, 0, xsiteOld.length); + clonedComponent.xsitedV = xsitedV.clone(); + System.arraycopy(this.xsitedV, 0, clonedComponent.xsitedV, 0, xsitedV.length); + clonedComponent.xsitedT = xsitedT.clone(); + System.arraycopy(this.xsitedT, 0, clonedComponent.xsitedT, 0, xsitedT.length); + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); + double Fcpa = 0.0; + // if(phase.getPhaseType()==1) cpaon=0; + Fcpa = dFCPAdN(phase, numberOfComponents, temperature, pressure); + // System.out.println("Fsup " + Fsup + " fcpa " + Fcpa); + return Fsup + cpaon * Fcpa; + } + + /** {@inheritDoc} */ + @Override + public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdT(phase, numberOfComponents, temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdV(phase, numberOfComponents, temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure); + } + + /** + *

+ * dFCPAdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + xi += Math.log(xsite[i]); } - - /** - *

- * dFCPAdNdXidXdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double dFCPAdNdXidXdV(PhaseInterface phase) { - double temp = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - temp += dFCPAdNdXi(i, phase) * getXsitedV()[i]; - } - return temp; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsite() { - return this.xsite; - } - - /** - * Setter for property xsite. - * - * @param xsite New value of property xsite. - */ - public void setXsite(double[] xsite) { - this.xsite = xsite; - } - - /** {@inheritDoc} */ - @Override - public void setXsite(int i, double xsite) { - this.xsite[i] = xsite; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedV() { - return this.xsitedV; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedV(int i, double xsitedV) { - this.xsitedV[i] = xsitedV; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsiteOld() { - return this.xsiteOld; - } - - /** - * Setter for property xsite. - * - * @param xsiteOld an array of {@link double} objects - */ - public void setXsiteOld(double[] xsiteOld) { - this.xsiteOld = xsiteOld; - } - - /** {@inheritDoc} */ - @Override - public void setXsiteOld(int i, double xsiteOld) { - this.xsiteOld[i] = xsiteOld; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedT() { - return this.xsitedT; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedT(int i, double xsitedT) { - this.xsitedT[i] = xsitedT; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedTdT() { - return null; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedTdT(int i, double xsitedT) {} - - /** {@inheritDoc} */ - @Override - public void setXsitedni(int xnumb, int compnumb, double val) { - xsitedni[xnumb][compnumb] = val; + return (xi - ((PhaseCPAInterface) phase).getHcpatot() / 2.0 * dlogghsSAFTdi); // calc_lngi(phase)); + } + + /** + *

+ * dFCPAdNdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = dFCPAdNdXidXdV(phase); + double xi2 = -((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngidV(phase); + return xi + xi2; + } + + /** + *

+ * calc_lngidV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngidV(PhaseInterface phase) { + return 0; + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdVdXi(int site, PhaseInterface phase) { + return 1.0 / (2.0 * phase.getTotalVolume()) + * (1.0 - phase.getTotalVolume() * ((PhaseCPAInterface) phase).getGcpav()) + * getNumberOfMolesInPhase(); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdNdXi(int site, PhaseInterface phase) { + double xi = 1.0 / xsite[site]; + + // return xi - tempp; + return xi + getNumberOfMolesInPhase() / 2.0 * calc_lngi(phase); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdXidXj(int sitei, int sitej, int compj, PhaseInterface phase) { + return 0.0; + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdXi(int site, PhaseInterface phase) { + return 0.0; + } + + /** + *

+ * calc_lngi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngi(PhaseInterface phase) { + return 0; + } + + /** + *

+ * dFCPAdNdXidXdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double dFCPAdNdXidXdV(PhaseInterface phase) { + double temp = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + temp += dFCPAdNdXi(i, phase) * getXsitedV()[i]; } + return temp; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsite() { + return this.xsite; + } + + /** + * Setter for property xsite. + * + * @param xsite New value of property xsite. + */ + public void setXsite(double[] xsite) { + this.xsite = xsite; + } + + /** {@inheritDoc} */ + @Override + public void setXsite(int i, double xsite) { + this.xsite[i] = xsite; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedV() { + return this.xsitedV; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedV(int i, double xsitedV) { + this.xsitedV[i] = xsitedV; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsiteOld() { + return this.xsiteOld; + } + + /** + * Setter for property xsite. + * + * @param xsiteOld an array of type double + */ + public void setXsiteOld(double[] xsiteOld) { + this.xsiteOld = xsiteOld; + } + + /** {@inheritDoc} */ + @Override + public void setXsiteOld(int i, double xsiteOld) { + this.xsiteOld[i] = xsiteOld; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedT() { + return this.xsitedT; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedT(int i, double xsitedT) { + this.xsitedT[i] = xsitedT; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedTdT() { + return null; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedTdT(int i, double xsitedT) {} + + /** {@inheritDoc} */ + @Override + public void setXsitedni(int xnumb, int compnumb, double val) { + xsitedni[xnumb][compnumb] = val; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentPR.java b/src/main/java/neqsim/thermo/component/ComponentPR.java index a188149006..239f4d2b2a 100644 --- a/src/main/java/neqsim/thermo/component/ComponentPR.java +++ b/src/main/java/neqsim/thermo/component/ComponentPR.java @@ -11,155 +11,148 @@ * @version $Id: $Id */ public class ComponentPR extends ComponentEos { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for ComponentPR. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentPR(String component_name, double moles, double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - - a = .45724333333 * R * R * criticalTemperature * criticalTemperature / criticalPressure; - b = .077803333 * R * criticalTemperature / criticalPressure; - // m = 0.37464 + 1.54226 * acentricFactor - 0.26992* acentricFactor * - // acentricFactor; - - delta1 = 1.0 + Math.sqrt(2.0); - delta2 = 1.0 - Math.sqrt(2.0); - setAttractiveParameter(new AttractiveTermPr(this)); - - double[] surfTensInfluenceParamtemp = {1.3192, 1.6606, 1.1173, 0.8443}; - this.surfTensInfluenceParam = surfTensInfluenceParamtemp; + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for ComponentPR. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentPR(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + + a = .45724333333 * R * R * criticalTemperature * criticalTemperature / criticalPressure; + b = .077803333 * R * criticalTemperature / criticalPressure; + // m = 0.37464 + 1.54226 * acentricFactor - 0.26992* acentricFactor * + // acentricFactor; + + delta1 = 1.0 + Math.sqrt(2.0); + delta2 = 1.0 - Math.sqrt(2.0); + setAttractiveParameter(new AttractiveTermPr(this)); + + double[] surfTensInfluenceParamtemp = {1.3192, 1.6606, 1.1173, 0.8443}; + this.surfTensInfluenceParam = surfTensInfluenceParamtemp; + } + + /** + *

+ * Constructor for ComponentPR. + *

+ * + * @param number a int + * @param TC Critical temperature + * @param PC Critical pressure + * @param M Molar mass + * @param a Acentric factor + * @param moles Number of moles + */ + public ComponentPR(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + } + + /** {@inheritDoc} */ + @Override + public ComponentPR clone() { + ComponentPR clonedComponent = null; + try { + clonedComponent = (ComponentPR) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * Constructor for ComponentPR. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentPR(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public double calca() { + return .45724333333 * R * R * criticalTemperature * criticalTemperature / criticalPressure; + } + + /** {@inheritDoc} */ + @Override + public double calcb() { + return .077803333 * R * criticalTemperature / criticalPressure; + } + + /** {@inheritDoc} */ + @Override + public double getVolumeCorrection() { + if (ionicCharge != 0) { + return 0.0; } - - /** {@inheritDoc} */ - @Override - public ComponentPR clone() { - ComponentPR clonedComponent = null; - try { - clonedComponent = (ComponentPR) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedComponent; - } - - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } - - /** {@inheritDoc} */ - @Override - public double calca() { - return .45724333333 * R * R * criticalTemperature * criticalTemperature / criticalPressure; - } - - /** {@inheritDoc} */ - @Override - public double calcb() { - return .077803333 * R * criticalTemperature / criticalPressure; + if (Math.abs(getVolumeCorrectionConst()) > 1.0e-10) { + return getVolumeCorrectionConst() * b; + } else if (Math.abs(this.getRacketZ()) < 1e-10) { + racketZ = 0.29056 - 0.08775 * getAcentricFactor(); } - - /** {@inheritDoc} */ - @Override - public double getVolumeCorrection() { - if (ionicCharge != 0) { - return 0.0; - } - if (Math.abs(getVolumeCorrectionConst()) > 1.0e-10) { - return getVolumeCorrectionConst() * b; - } else if (Math.abs(this.getRacketZ()) < 1e-10) { - racketZ = 0.29056 - 0.08775 * getAcentricFactor(); - } - return 0.50033 * (0.25969 - this.getRacketZ()) * R * criticalTemperature / criticalPressure; - } - - /** - *

- * getQpure. - *

- * - * @param temperature a double - * @return a double - */ - public double getQpure(double temperature) { - return this.getaT() / (this.getb() * R * temperature); + return 0.50033 * (0.25969 - this.getRacketZ()) * R * criticalTemperature / criticalPressure; + } + + /** + *

+ * getQpure. + *

+ * + * @param temperature a double + * @return a double + */ + public double getQpure(double temperature) { + return this.getaT() / (this.getb() * R * temperature); + } + + /** + *

+ * getdQpuredT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getdQpuredT(double temperature) { + return dqPuredT; + } + + /** + *

+ * getdQpuredTdT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getdQpuredTdT(double temperature) { + return dqPuredTdT; + } + + /** {@inheritDoc} */ + @Override + public double getSurfaceTenisionInfluenceParameter(double temperature) { + double TR = 1.0 - temperature / getTC(); + if (TR < 0) { + TR = 0.5; } - - /** - *

- * getdQpuredT. - *

- * - * @param temperature a double - * @return a double - */ - public double getdQpuredT(double temperature) { - return dqPuredT; + double AA = + -1.0e-16 / (surfTensInfluenceParam[0] + surfTensInfluenceParam[1] * getAcentricFactor()); + double BB = + 1.0e-16 / (surfTensInfluenceParam[2] + surfTensInfluenceParam[3] * getAcentricFactor()); + + // System.out.println("scale2 " + aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * + // (AA * TR + BB)); + if (componentName.equals("water")) { + AA = -6.99632E-17; + BB = 5.68347E-17; } - - /** - *

- * getdQpuredTdT. - *

- * - * @param temperature a double - * @return a double - */ - public double getdQpuredTdT(double temperature) { - return dqPuredTdT; - } - - /** {@inheritDoc} */ - @Override - public double getSurfaceTenisionInfluenceParameter(double temperature) { - double TR = 1.0 - temperature / getTC(); - if (TR < 0) { - TR = 0.5; - } - double AA = -1.0e-16 - / (surfTensInfluenceParam[0] + surfTensInfluenceParam[1] * getAcentricFactor()); - double BB = 1.0e-16 - / (surfTensInfluenceParam[2] + surfTensInfluenceParam[3] * getAcentricFactor()); - - // System.out.println("scale2 " + aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * - // (AA * TR + BB)); - if (componentName.equals("water")) { - AA = -6.99632E-17; - BB = 5.68347E-17; - } - // System.out.println("AA " + AA + " BB " + BB); - if (componentName.equals("MEG")) { - return 0.00000000000000000007101030813216131; - } - return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB);/// Math.pow(ThermodynamicConstantsInterface.avagadroNumber, - /// 2.0 / 3.0); + // System.out.println("AA " + AA + " BB " + BB); + if (componentName.equals("MEG")) { + return 0.00000000000000000007101030813216131; } + return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB); + // Math.pow(ThermodynamicConstantsInterface.avagadroNumber, 2.0 / 3.0); + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentPRvolcor.java b/src/main/java/neqsim/thermo/component/ComponentPRvolcor.java index 634ade1330..b4abaf4883 100644 --- a/src/main/java/neqsim/thermo/component/ComponentPRvolcor.java +++ b/src/main/java/neqsim/thermo/component/ComponentPRvolcor.java @@ -3,67 +3,123 @@ * * Created on 8. april 2000, 23:14 */ + package neqsim.thermo.component; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.phase.PhaseInterface; import neqsim.thermo.phase.PhasePrEosvolcor; /** + *

+ * ComponentPRvolcor class. + *

* * @author Even Solbraa - * + * @version $Id: $Id */ public class ComponentPRvolcor extends ComponentPR { - private static final long serialVersionUID = 1000; private double c; // private double calcc; - public double[] Cij = new double[MAX_NUMBER_OF_COMPONENTS]; + public double[] Cij = new double[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; public double Ci = 0; + + /** + *

+ * Constructor for ComponentPRvolcor. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ public ComponentPRvolcor(int number, double TC, double PC, double M, double a, double moles) { super(number, TC, PC, M, a, moles); } /// ** {@inheritDoc} */ // @Override + /** + *

+ * calcc. + *

+ * + * @return a double + */ public double calcc() { return (0.1154 - 0.4406 * (0.29056 - 0.08775 * getAcentricFactor())) * R * criticalTemperature / criticalPressure; } // derivative of translation with regards to temperature + /** + *

+ * calccT. + *

+ * + * @return a double + */ public double calccT() { return 0.; } // second derivative of translation with regards to temperature*temperature + /** + *

+ * calccTT. + *

+ * + * @return a double + */ public double calccTT() { return 0.; } - - public ComponentPRvolcor(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + /** + *

+ * Constructor for ComponentPRvolcor. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentPRvolcor(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); c = (0.1154 - 0.4406 * (0.29056 - 0.08775 * getAcentricFactor())) * R * criticalTemperature / criticalPressure; - } /** {@inheritDoc} */ @Override - public void init(double temp, double pres, double totMoles, double beta, int type) { - super.init(temp, pres, totMoles, beta, type); + public void init(double temp, double pres, double totMoles, double beta, int initType) { + super.init(temp, pres, totMoles, beta, initType); c = calcc(); } - - /** {@inheritDoc} */ - // @Override + /** + *

+ * getc. + *

+ * + * @return a double + */ public double getc() { return c; } + /** + *

+ * getcT. + *

+ * + * @return a double + */ public double getcT() { return 0; } @@ -72,16 +128,14 @@ public double getcT() { /** {@inheritDoc} */ @Override public void Finit(PhaseInterface phase, double temp, double pres, double totMoles, double beta, - int numberOfComponents, int type) - { - super.Finit(phase, temp, pres, totMoles, beta, numberOfComponents, type); - Ci = ((PhasePrEosvolcor) phase).calcCi(componentNumber, phase, temp, pres, numberOfComponents); - if (type >= 2) { - ((PhasePrEosvolcor) phase).calcCiT(componentNumber, phase, temp, pres, - numberOfComponents); + int numberOfComponents, int initType) { + super.Finit(phase, temp, pres, totMoles, beta, numberOfComponents, initType); + Ci = ((PhasePrEosvolcor) phase).calcCi(componentNumber, phase, temp, pres, numberOfComponents); + if (initType >= 2) { + ((PhasePrEosvolcor) phase).calcCiT(componentNumber, phase, temp, pres, numberOfComponents); } - if (type >= 3) { + if (initType >= 3) { for (int j = 0; j < numberOfComponents; j++) { Cij[j] = ((PhasePrEosvolcor) phase).calcCij(componentNumber, j, phase, temp, pres, numberOfComponents); @@ -89,12 +143,25 @@ public void Finit(PhaseInterface phase, double temp, double pres, double totMole } } - + /** + *

+ * getCi. + *

+ * + * @return a double + */ public double getCi() { return Ci; } - + /** + *

+ * getCij. + *

+ * + * @param j a int + * @return a double + */ public double getCij(int j) { return Cij[j]; } @@ -102,32 +169,53 @@ public double getCij(int j) { // depending on the type of the volume translation (T-dependent or not) these sould be properly // modified - // second derivative of C with regards to mole fraction and temperature + /** + *

+ * getCiT. + *

+ * + * @return a double + */ public double getCiT() { return 0; } + /** + *

+ * getcTT. + *

+ * + * @return a double + */ public double getcTT() { return 0; } - - - /// ** {@inheritDoc} */ do I need this inheritDoc thing? + /** {@inheritDoc} */ @Override public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) { return phase.Fn() + phase.FB() * getBi() + phase.FD() * getAi() - + ((PhasePrEosvolcor) phase).FC() * getCi(); + + ((PhasePrEosvolcor) phase).FC() * getCi(); } + /** + *

+ * getFC. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ public double getFC(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { + double pressure) { return ((PhasePrEosvolcor) phase).FC(); } - /** {@inheritDoc} */ @Override public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, @@ -173,7 +261,6 @@ public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double + phase.FD() * getAij(j); } - /** {@inheritDoc} */ @Override public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, @@ -182,10 +269,7 @@ public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temper return phase.FnV() + phase.FBV() * getBi() + phase.FDV() * getAi() + loc_FCV * getCi(); } - - // Remember this trick above that professor showed to you...you can call whichever new F // expression // you need by first specifying the type "PhasePrEosvolcor" - } diff --git a/src/main/java/neqsim/thermo/component/ComponentPrCPA.java b/src/main/java/neqsim/thermo/component/ComponentPrCPA.java index 827b886230..2f42683da4 100644 --- a/src/main/java/neqsim/thermo/component/ComponentPrCPA.java +++ b/src/main/java/neqsim/thermo/component/ComponentPrCPA.java @@ -4,222 +4,215 @@ import neqsim.thermo.phase.PhaseInterface; /** + * Abstract class ComponentPrCPA. * * @author Even Solbraa */ abstract class ComponentPrCPA extends ComponentPR implements ComponentCPAInterface { - private static final long serialVersionUID = 1000; - - int cpaon = 1; - double[] xsite; - - /** - *

- * Constructor for ComponentPrCPA. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentPrCPA(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - xsite = new double[numberOfAssociationSites]; - if ((numberOfAssociationSites != 0 || Math.abs(aCPA) > 1e-6) && cpaon == 1) { - // System.out.println("ass sites: " + numberOfAssociationSites); - // System.out.println("aSRK " + a + " aCPA " + aCPA); - // System.out.println("bSRK " + b + " bCPA " + bCPA); - for (int j = 0; j < getNumberOfAssociationSites(); j++) { - setXsite(j, 0.0); - } - a = aCPA; - b = bCPA; - setAttractiveTerm(1); - } - } - - /** - *

- * Constructor for ComponentPrCPA. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentPrCPA(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); - xsite = new double[numberOfAssociationSites]; - for (int j = 0; j < getNumberOfAssociationSites(); j++) { - setXsite(j, 1.0); - } - if ((numberOfAssociationSites != 0 || Math.abs(aCPA) > 1e-6) && cpaon == 1) { - a = aCPA; - b = bCPA; - } - setAttractiveTerm(1); - } - - /** {@inheritDoc} */ - @Override - public double getVolumeCorrection() { - if ((aCPA > 1.0e-10) && cpaon == 1) { - return 0.0; - } else { - return super.getVolumeCorrection(); - } - } - - /** {@inheritDoc} */ - @Override - public ComponentPrCPA clone() { - ComponentPrCPA clonedComponent = null; - try { - clonedComponent = (ComponentPrCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedComponent; - } - - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } - - /** {@inheritDoc} */ - @Override - public double calca() { - if ((numberOfAssociationSites != 0 || Math.abs(aCPA) > 1e-6) && cpaon == 1) { - return aCPA; - } - return a; - } - - /** {@inheritDoc} */ - @Override - public double calcb() { - if ((numberOfAssociationSites != 0 || Math.abs(aCPA) > 1e-6) && cpaon == 1) { - return bCPA; - } - return b; - } - - /** {@inheritDoc} */ - @Override - public void setAttractiveTerm(int i) { - super.setAttractiveTerm(i); - if ((getNumberOfAssociationSites() > 0 || Math.abs(aCPA) > 1e-6) && cpaon == 1) { - getAttractiveTerm().setm(mCPA); - } - } - - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); - double Fcpa = 0.0; - // if(phase.getPhaseType()==1) cpaon=0; - Fcpa = dFCPAdN(phase, numberOfComponents, temperature, pressure); - // System.out.println("Fsup " + Fsup + " fcpa " + Fcpa); - return Fsup + cpaon * Fcpa; - } - - /** {@inheritDoc} */ - @Override - public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdT(phase, numberOfComponents, temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdV(phase, numberOfComponents, temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure); - } - - /** - *

- * dFCPAdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - xi += Math.log(xsite[i]); - } - return (xi - ((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngi(phase)); - } - - /** - *

- * calc_lngi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngi(PhaseInterface phase) { - return 0.475 / (1.0 - 0.475 * phase.getB() / phase.getTotalVolume()) * getBi() - / phase.getTotalVolume(); - } - - /** - *

- * calc_lngi2. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngi2(PhaseInterface phase) { - return 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) - / ((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())); - } - - /** {@inheritDoc} */ - @Override - public double[] getXsite() { - return this.xsite; - } - - /** - * Setter for property xsite. - * - * @param xsite New value of property xsite. - */ - public void setXsite(double[] xsite) { - this.xsite = xsite; - } - - /** {@inheritDoc} */ - @Override - public void setXsite(int i, double xsite) { - this.xsite[i] = xsite; - } + private static final long serialVersionUID = 1000; + + int cpaon = 1; + double[] xsite; + + /** + *

+ * Constructor for ComponentPrCPA. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentPrCPA(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + xsite = new double[numberOfAssociationSites]; + if ((numberOfAssociationSites != 0 || Math.abs(aCPA) > 1e-6) && cpaon == 1) { + // System.out.println("ass sites: " + numberOfAssociationSites); + // System.out.println("aSRK " + a + " aCPA " + aCPA); + // System.out.println("bSRK " + b + " bCPA " + bCPA); + for (int j = 0; j < getNumberOfAssociationSites(); j++) { + setXsite(j, 0.0); + } + a = aCPA; + b = bCPA; + setAttractiveTerm(1); + } + } + + /** + *

+ * Constructor for ComponentPrCPA. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentPrCPA(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + xsite = new double[numberOfAssociationSites]; + for (int j = 0; j < getNumberOfAssociationSites(); j++) { + setXsite(j, 1.0); + } + if ((numberOfAssociationSites != 0 || Math.abs(aCPA) > 1e-6) && cpaon == 1) { + a = aCPA; + b = bCPA; + } + setAttractiveTerm(1); + } + + /** {@inheritDoc} */ + @Override + public double getVolumeCorrection() { + if ((aCPA > 1.0e-10) && cpaon == 1) { + return 0.0; + } else { + return super.getVolumeCorrection(); + } + } + + /** {@inheritDoc} */ + @Override + public ComponentPrCPA clone() { + ComponentPrCPA clonedComponent = null; + try { + clonedComponent = (ComponentPrCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public double calca() { + if ((numberOfAssociationSites != 0 || Math.abs(aCPA) > 1e-6) && cpaon == 1) { + return aCPA; + } + return a; + } + + /** {@inheritDoc} */ + @Override + public double calcb() { + if ((numberOfAssociationSites != 0 || Math.abs(aCPA) > 1e-6) && cpaon == 1) { + return bCPA; + } + return b; + } + + /** {@inheritDoc} */ + @Override + public void setAttractiveTerm(int i) { + super.setAttractiveTerm(i); + if ((getNumberOfAssociationSites() > 0 || Math.abs(aCPA) > 1e-6) && cpaon == 1) { + getAttractiveTerm().setm(mCPA); + } + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); + double Fcpa = 0.0; + // if(phase.getPhaseType()==1) cpaon=0; + Fcpa = dFCPAdN(phase, numberOfComponents, temperature, pressure); + // System.out.println("Fsup " + Fsup + " fcpa " + Fcpa); + return Fsup + cpaon * Fcpa; + } + + /** {@inheritDoc} */ + @Override + public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdT(phase, numberOfComponents, temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdV(phase, numberOfComponents, temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure); + } + + /** + *

+ * dFCPAdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + xi += Math.log(xsite[i]); + } + return (xi - ((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngi(phase)); + } + + /** + *

+ * calc_lngi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngi(PhaseInterface phase) { + return 0.475 / (1.0 - 0.475 * phase.getB() / phase.getTotalVolume()) * getBi() + / phase.getTotalVolume(); + } + + /** + *

+ * calc_lngi2. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngi2(PhaseInterface phase) { + return 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) + / ((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())); + } + + /** {@inheritDoc} */ + @Override + public double[] getXsite() { + return this.xsite; + } + + /** + * Setter for property xsite. + * + * @param xsite New value of property xsite. + */ + public void setXsite(double[] xsite) { + this.xsite = xsite; + } + + /** {@inheritDoc} */ + @Override + public void setXsite(int i, double xsite) { + this.xsite[i] = xsite; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentRK.java b/src/main/java/neqsim/thermo/component/ComponentRK.java index 081d61ea59..c6a1f46ac0 100644 --- a/src/main/java/neqsim/thermo/component/ComponentRK.java +++ b/src/main/java/neqsim/thermo/component/ComponentRK.java @@ -11,117 +11,110 @@ * @version $Id: $Id */ public class ComponentRK extends ComponentEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ComponentRK. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentRK(String component_name, double moles, double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + /** + *

+ * Constructor for ComponentRK. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentRK(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); - a = 1.0 / (9.0 * (Math.pow(2.0, 1.0 / 3.0) - 1.0)) * R * R * criticalTemperature - * criticalTemperature / criticalPressure; - b = (Math.pow(2.0, 1.0 / 3.0) - 1.0) / 3.0 * R * criticalTemperature / criticalPressure; - delta1 = 1.0; - delta2 = 0.0; - setAttractiveParameter(new AttractiveTermRk(this)); - } - - /** - *

- * Constructor for ComponentRK. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentRK(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); - } + a = 1.0 / (9.0 * (Math.pow(2.0, 1.0 / 3.0) - 1.0)) * R * R * criticalTemperature + * criticalTemperature / criticalPressure; + b = (Math.pow(2.0, 1.0 / 3.0) - 1.0) / 3.0 * R * criticalTemperature / criticalPressure; + delta1 = 1.0; + delta2 = 0.0; + setAttractiveParameter(new AttractiveTermRk(this)); + } - /** {@inheritDoc} */ - @Override - public ComponentRK clone() { - ComponentRK clonedComponent = null; - try { - clonedComponent = (ComponentRK) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for ComponentRK. + *

+ * + * @param number a int + * @param TC Critical temperature + * @param PC Critical pressure + * @param M Molar mass + * @param a Acentric factor + * @param moles Number of moles + */ + public ComponentRK(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + } - return clonedComponent; + /** {@inheritDoc} */ + @Override + public ComponentRK clone() { + ComponentRK clonedComponent = null; + try { + clonedComponent = (ComponentRK) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } + return clonedComponent; + } - /** {@inheritDoc} */ - @Override - public double calca() { - return 1.0 / (9.0 * (Math.pow(2.0, 1.0 / 3.0) - 1.0)) * R * R * criticalTemperature - * criticalTemperature / criticalPressure; - } + /** {@inheritDoc} */ + @Override + public double calca() { + return 1.0 / (9.0 * (Math.pow(2.0, 1.0 / 3.0) - 1.0)) * R * R * criticalTemperature + * criticalTemperature / criticalPressure; + } - /** {@inheritDoc} */ - @Override - public double calcb() { - return (Math.pow(2.0, 1.0 / 3.0) - 1.0) / 3.0 * R * criticalTemperature / criticalPressure; - } + /** {@inheritDoc} */ + @Override + public double calcb() { + return (Math.pow(2.0, 1.0 / 3.0) - 1.0) / 3.0 * R * criticalTemperature / criticalPressure; + } - /** {@inheritDoc} */ - @Override - public double getVolumeCorrection() { - return 0.0; - } + /** {@inheritDoc} */ + @Override + public double getVolumeCorrection() { + return 0.0; + } - /** - *

- * getQpure. - *

- * - * @param temperature a double - * @return a double - */ - public double getQpure(double temperature) { - return this.getaT() / (this.getb() * R * temperature); - } + /** + *

+ * getQpure. + *

+ * + * @param temperature a double + * @return a double + */ + public double getQpure(double temperature) { + return this.getaT() / (this.getb() * R * temperature); + } - /** - *

- * getdQpuredT. - *

- * - * @param temperature a double - * @return a double - */ - public double getdQpuredT(double temperature) { - return dqPuredT; - } + /** + *

+ * getdQpuredT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getdQpuredT(double temperature) { + return dqPuredT; + } - /** - *

- * getdQpuredTdT. - *

- * - * @param temperature a double - * @return a double - */ - public double getdQpuredTdT(double temperature) { - return dqPuredTdT; - } + /** + *

+ * getdQpuredTdT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getdQpuredTdT(double temperature) { + return dqPuredTdT; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentSolid.java b/src/main/java/neqsim/thermo/component/ComponentSolid.java index 705e287055..daf1c3d071 100644 --- a/src/main/java/neqsim/thermo/component/ComponentSolid.java +++ b/src/main/java/neqsim/thermo/component/ComponentSolid.java @@ -3,9 +3,12 @@ * * Created on 18. august 2001, 12:45 */ + package neqsim.thermo.component; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; +import neqsim.util.database.NeqSimDataBase; /** *

@@ -19,8 +22,11 @@ public class ComponentSolid extends ComponentSrk { private static final long serialVersionUID = 1000; double dpdt = 1.0; - double SolidFug = 0.0, PvapSolid = 0.0, PvapSoliddT = 0.0; - double solvol = 0.0, soldens = 0.0; + double SolidFug = 0.0; + double PvapSolid = 0.0; + double PvapSoliddT = 0.0; + double solvol = 0.0; + double soldens = 0.0; boolean CCequation = true; boolean AntoineSolidequation = true; PhaseInterface refPhase = null; @@ -31,19 +37,21 @@ public class ComponentSolid extends ComponentSrk { * Constructor for ComponentSolid. *

* - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. */ - public ComponentSolid(String component_name, double moles, double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + public ComponentSolid(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); } /** * {@inheritDoc} * + *

* Uses Claperyons equation to calculate the solid fugacity + *

*/ @Override public double fugcoef(PhaseInterface phase1) { @@ -51,82 +59,25 @@ public double fugcoef(PhaseInterface phase1) { // phase.getPressure()); // return fugcoef(phase, phase.getNumberOfComponents(), phase.getTemperature(), // phase.getPressure()); - if (!solidCheck) { + if (!doSolidCheck()) { // return 1.0e20; } if (componentName.equals("methane")) { return 1e30; } + return fugcoef2(phase1); // return fugcoef(phase1.getTemperature(), phase1.getPressure()); } /** *

- * fugcoef2. - *

- * - * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double fugcoef2(PhaseInterface phase1) { - refPhase.setTemperature(phase1.getTemperature()); - refPhase.setPressure(phase1.getPressure()); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 1, 0, 1.0); - refPhase.getComponent(0).fugcoef(refPhase); - - double liquidPhaseFugacity = - refPhase.getComponent(0).getFugacityCoefficient() * refPhase.getPressure(); - - // Calculates delta Cp solid-liquid - double deltaCpSL = -(getPureComponentCpSolid(getTriplePointTemperature()) - - getPureComponentCpLiquid(getTriplePointTemperature())); - if (componentName.equals("water")) { - deltaCpSL = 37.12; - } - - // System.out.println("deltaCp Sol-liq " + deltaCpSL); - // Calculates solid-liquid volume change - double liqMolVol = 0.0, solMolVol = 0.0; - double temp = getPureComponentLiquidDensity(getTriplePointTemperature()); - if (temp > 1e-20) { - liqMolVol = 1.0 / temp * getMolarMass(); - } else { - liqMolVol = 1.0 / refPhase.getDensity() * getMolarMass(); - } - temp = getPureComponentSolidDensity(getTriplePointTemperature()); - if (temp > 1e-20) { - solMolVol = 1.0 / temp * getMolarMass(); - } else { - solMolVol = liqMolVol; - } - double deltaSolVol = (solMolVol - liqMolVol); - - // System.out.println("liquid density " + 1.0/liqMolVol*getMolarMass() + " solid - // density " + 1.0/solMolVol*getMolarMass()); - - SolidFug = getx() * liquidPhaseFugacity - * Math.exp(-getHeatOfFusion() / (R * phase1.getTemperature()) - * (1.0 - phase1.getTemperature() / getTriplePointTemperature()) - + deltaCpSL / (R * phase1.getTemperature()) - * (getTriplePointTemperature() - phase1.getTemperature()) - - deltaCpSL / R * Math.log(getTriplePointTemperature() / phase1.getTemperature()) - - deltaSolVol * (1.0 - phase1.getPressure()) / (R * phase1.getTemperature())); - - // System.out.println("solidfug " + SolidFug); - fugacityCoefficient = SolidFug / (phase1.getPressure() * getx()); - logFugacityCoefficient = Math.log(fugacityCoefficient); - return fugacityCoefficient; - } - - /** - *

- * fugcoef. + * Calculate, set and return fugacity coefficient. *

* * @param temp a double * @param pres a double - * @return a double + * @return Fugacity coefficient */ public double fugcoef(double temp, double pres) { if (Math.abs(Hsub) < 0.000001) { @@ -159,7 +110,7 @@ public double fugcoef(double temp, double pres) { refPhase.setTemperature(temp); refPhase.setPressure(PvapSolid); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 1, 1, 1.0); + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 1, PhaseType.byValue(1), 1.0); refPhase.getComponent(0).fugcoef(refPhase); // System.out.println("ref co2 fugcoef " + @@ -173,7 +124,70 @@ public double fugcoef(double temp, double pres) { // fugacityCoefficient = 1e5; // dfugdt=0; // } - logFugacityCoefficient = Math.log(fugacityCoefficient); + + return fugacityCoefficient; + } + + /** + *

+ * Calculate, set and return fugacity coefficient. + *

+ * + * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object to get fugacity coefficient + * of. + * @return Fugacity coefficient + */ + public double fugcoef2(PhaseInterface phase1) { + refPhase.setTemperature(phase1.getTemperature()); + refPhase.setPressure(phase1.getPressure()); + try { + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 1, PhaseType.byValue(0), 1.0); + } catch (Exception ex) { + logger.error(ex.getMessage()); + } + refPhase.getComponent(0).fugcoef(refPhase); + + double liquidPhaseFugacity = + refPhase.getComponent(0).getFugacityCoefficient() * refPhase.getPressure(); + + // Calculates delta Cp solid-liquid + double deltaCpSL = -(getPureComponentCpSolid(getTriplePointTemperature()) + - getPureComponentCpLiquid(getTriplePointTemperature())); + if (componentName.equals("water")) { + deltaCpSL = 37.12; + } + + // System.out.println("deltaCp Sol-liq " + deltaCpSL); + // Calculates solid-liquid volume change + double liqMolVol = 0.0; + double solMolVol = 0.0; + double temp = getPureComponentLiquidDensity(getTriplePointTemperature()); + if (temp > 1e-20) { + liqMolVol = 1.0 / temp * getMolarMass(); + } else { + liqMolVol = 1.0 / refPhase.getDensity() * getMolarMass(); + } + temp = getPureComponentSolidDensity(getTriplePointTemperature()); + if (temp > 1e-20) { + solMolVol = 1.0 / temp * getMolarMass(); + } else { + solMolVol = liqMolVol; + } + double deltaSolVol = (solMolVol - liqMolVol); + + // System.out.println("liquid density " + 1.0/liqMolVol*getMolarMass() + " solid + // density " + 1.0/solMolVol*getMolarMass()); + + SolidFug = getx() * liquidPhaseFugacity + * Math.exp(-getHeatOfFusion() / (R * phase1.getTemperature()) + * (1.0 - phase1.getTemperature() / getTriplePointTemperature()) + + deltaCpSL / (R * phase1.getTemperature()) + * (getTriplePointTemperature() - phase1.getTemperature()) + - deltaCpSL / R * Math.log(getTriplePointTemperature() / phase1.getTemperature()) + - deltaSolVol * (1.0 - phase1.getPressure()) / (R * phase1.getTemperature())); + + // System.out.println("solidfug " + SolidFug); + fugacityCoefficient = SolidFug / (phase1.getPressure() * getx()); return fugacityCoefficient; } @@ -221,23 +235,30 @@ public double getMolarVolumeSolid() { */ public void setSolidRefFluidPhase(PhaseInterface phase) { try { - if ((!isTBPfraction && !isPlusFraction) || neqsim.util.database.NeqSimDataBase.createTemporaryTables()) { - refPhase = phase.getClass().getDeclaredConstructor().newInstance(); - refPhase.setTemperature(273.0); - refPhase.setPressure(1.0); - try { - refPhase.addcomponent(componentName, 10.0, 10.0, 0); - } catch (Exception e) { - logger.error("error occured in setSolidRefFluidPhase ", e); - refPhase.addcomponent("methane", 10.0, 10.0, 0); + // if ((!isTBPfraction && !isPlusFraction) + // || neqsim.util.database.NeqSimDataBase.createTemporaryTables()) { + refPhase = phase.getClass().getDeclaredConstructor().newInstance(); + refPhase.setTemperature(273.0); + refPhase.setPressure(1.0); + try { + if (NeqSimDataBase.hasComponent(componentName) + || NeqSimDataBase.hasTempComponent(componentName)) { + refPhase.addComponent(componentName, 10.0, 10.0, 0); + } else { + refPhase.addComponent("methane", 10.0, 10.0, 0); refPhase.getComponent("methane").setComponentName(componentName); } - refPhase.getComponent(componentName) - .setAttractiveTerm(phase.getComponent(componentName).getAttractiveTermNumber()); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 0, 1, 1.0); + } catch (Exception ex) { + logger.error("error occured in setSolidRefFluidPhase ", ex); + refPhase.addComponent("methane", 10.0, 10.0, 0); + refPhase.getComponent("methane").setComponentName(componentName); } - } catch (Exception e) { - logger.error("error occured", e); + refPhase.getComponent(componentName) + .setAttractiveTerm(phase.getComponent(componentName).getAttractiveTermNumber()); + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 0, PhaseType.byValue(1), 1.0); + // } + } catch (Exception ex) { + logger.error("error occured", ex); } } diff --git a/src/main/java/neqsim/thermo/component/ComponentSrk.java b/src/main/java/neqsim/thermo/component/ComponentSrk.java index b28de74afc..691123b0a6 100644 --- a/src/main/java/neqsim/thermo/component/ComponentSrk.java +++ b/src/main/java/neqsim/thermo/component/ComponentSrk.java @@ -12,168 +12,161 @@ * @version $Id: $Id */ public class ComponentSrk extends ComponentEos { - private static final long serialVersionUID = 1000; - - private double factTemp = Math.pow(2.0, 1.0 / 3.0); - - /** - *

- * Constructor for ComponentSrk. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentSrk(String component_name, double moles, double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - - a = 1.0 / (9.0 * (Math.pow(2.0, 1.0 / 3.0) - 1.0)) * R * R * criticalTemperature - * criticalTemperature / criticalPressure; - b = (Math.pow(2.0, 1.0 / 3.0) - 1.0) / 3.0 * R * criticalTemperature / criticalPressure; - delta1 = 1.0; - delta2 = 0.0; - // System.out.println("a " + a); - // attractiveParameter = new AttractiveTermSchwartzentruber(this); - setAttractiveParameter(new AttractiveTermSrk(this)); - - double[] surfTensInfluenceParamtemp = - {-0.7708158524, 0.4990571549, 0.8645478315, -0.3509810630, -0.1611763157}; - this.surfTensInfluenceParam = surfTensInfluenceParamtemp; + private static final long serialVersionUID = 1000; + + private double factTemp = Math.pow(2.0, 1.0 / 3.0); + + /** + *

+ * Constructor for ComponentSrk. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentSrk(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + + a = 1.0 / (9.0 * (Math.pow(2.0, 1.0 / 3.0) - 1.0)) * R * R * criticalTemperature + * criticalTemperature / criticalPressure; + b = (Math.pow(2.0, 1.0 / 3.0) - 1.0) / 3.0 * R * criticalTemperature / criticalPressure; + delta1 = 1.0; + delta2 = 0.0; + // System.out.println("a " + a); + // attractiveParameter = new AttractiveTermSchwartzentruber(this); + setAttractiveParameter(new AttractiveTermSrk(this)); + + double[] surfTensInfluenceParamtemp = + {-0.7708158524, 0.4990571549, 0.8645478315, -0.3509810630, -0.1611763157}; + this.surfTensInfluenceParam = surfTensInfluenceParamtemp; + } + + /** + *

+ * Constructor for ComponentSrk. + *

+ * + * @param number a int + * @param TC Critical temperature + * @param PC Critical pressure + * @param M Molar mass + * @param a Acentric factor + * @param moles Number of moles + */ + public ComponentSrk(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + } + + /** {@inheritDoc} */ + @Override + public ComponentSrk clone() { + ComponentSrk clonedComponent = null; + try { + clonedComponent = (ComponentSrk) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * Constructor for ComponentSrk. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentSrk(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); - } - - /** {@inheritDoc} */ - @Override - public ComponentSrk clone() { - ComponentSrk clonedComponent = null; - try { - clonedComponent = (ComponentSrk) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedComponent; - } - - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } + return clonedComponent; + } - /** {@inheritDoc} */ - @Override - public double getVolumeCorrection() { - if (ionicCharge != 0) { - return 0.0; - } - if (Math.abs(getVolumeCorrectionConst()) > 1.0e-10) { - return getVolumeCorrectionConst() * b; - } - if (Math.abs(this.getRacketZ()) < 1e-10) { - racketZ = 0.29056 - 0.08775 * getAcentricFactor(); - } - // System.out.println("racket Z " + racketZ + " vol correction " + - // (0.40768*(0.29441-this.getRacketZ())*R*criticalTemperature/criticalPressure)); - return 0.40768 * (0.29441 - this.getRacketZ()) * R * criticalTemperature / criticalPressure; + /** {@inheritDoc} */ + @Override + public double getVolumeCorrection() { + if (ionicCharge != 0) { + return 0.0; } - - /** {@inheritDoc} */ - @Override - public double calca() { - return 1.0 / (9.0 * (factTemp - 1.0)) * R * R * criticalTemperature * criticalTemperature - / criticalPressure; + if (Math.abs(getVolumeCorrectionConst()) > 1.0e-10) { + return getVolumeCorrectionConst() * b; } - - /** {@inheritDoc} */ - @Override - public double calcb() { - return (factTemp - 1.0) / 3.0 * R * criticalTemperature / criticalPressure; + if (Math.abs(this.getRacketZ()) < 1e-10) { + racketZ = 0.29056 - 0.08775 * getAcentricFactor(); } - - /** - *

- * getQpure. - *

- * - * @param temperature a double - * @return a double - */ - public double getQpure(double temperature) { - return this.getaT() / (this.getb() * R * temperature); + // System.out.println("racket Z " + racketZ + " vol correction " + + // (0.40768*(0.29441-this.getRacketZ())*R*criticalTemperature/criticalPressure)); + return 0.40768 * (0.29441 - this.getRacketZ()) * R * criticalTemperature / criticalPressure; + } + + /** {@inheritDoc} */ + @Override + public double calca() { + return 1.0 / (9.0 * (factTemp - 1.0)) * R * R * criticalTemperature * criticalTemperature + / criticalPressure; + } + + /** {@inheritDoc} */ + @Override + public double calcb() { + return (factTemp - 1.0) / 3.0 * R * criticalTemperature / criticalPressure; + } + + /** + *

+ * getQpure. + *

+ * + * @param temperature a double + * @return a double + */ + public double getQpure(double temperature) { + return this.getaT() / (this.getb() * R * temperature); + } + + /** + *

+ * getdQpuredT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getdQpuredT(double temperature) { + return dqPuredT; + } + + /** + *

+ * getdQpuredTdT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getdQpuredTdT(double temperature) { + return dqPuredTdT; + } + + /** {@inheritDoc} */ + @Override + public double getSurfaceTenisionInfluenceParameter(double temperature) { + double TR = 1.0 - temperature / getTC(); + if (TR < 0) { + if (componentName.equals("CO2")) { + TR = 1.0 - 0.9; + } else { + TR = 0.6; + } } + double AA = (surfTensInfluenceParam[0] + surfTensInfluenceParam[1] * getAcentricFactor()); + double BB = surfTensInfluenceParam[2] + surfTensInfluenceParam[3] * getAcentricFactor() + + surfTensInfluenceParam[4] * getAcentricFactor() * getAcentricFactor(); - /** - *

- * getdQpuredT. - *

- * - * @param temperature a double - * @return a double - */ - public double getdQpuredT(double temperature) { - return dqPuredT; + if (componentName.equals("water")) { + return 0.000000000000000000019939776242117276; } - - /** - *

- * getdQpuredTdT. - *

- * - * @param temperature a double - * @return a double - */ - public double getdQpuredTdT(double temperature) { - return dqPuredTdT; + if (componentName.equals("MEG")) { + return 0.00000000000000000009784248343727627; } - - /** {@inheritDoc} */ - @Override - public double getSurfaceTenisionInfluenceParameter(double temperature) { - double TR = 1.0 - temperature / getTC(); - if (TR < 0) { - if (componentName.equals("CO2")) { - TR = 1.0 - 0.9; - } else { - TR = 0.6; - } - } - double AA = (surfTensInfluenceParam[0] + surfTensInfluenceParam[1] * getAcentricFactor()); - double BB = surfTensInfluenceParam[2] + surfTensInfluenceParam[3] * getAcentricFactor() - + surfTensInfluenceParam[4] * getAcentricFactor() * getAcentricFactor(); - - if (componentName.equals("water")) { - return 0.000000000000000000019939776242117276; - } - if (componentName.equals("MEG")) { - return 0.00000000000000000009784248343727627; - } - if (componentName.equals("TEG")) { - return 0.000000000000000000901662233371129; - } - // System.out.println("scale2 " + aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * - // Math.pow(AA * TR, BB)/1.0e17); - // System.out.println("scale2 " + - // Math.pow(ThermodynamicConstantsInterface.avagadroNumber, 2.0 / 3.0)); - return (aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB)) - / Math.pow(ThermodynamicConstantsInterface.avagadroNumber, 2.0 / 3.0); + if (componentName.equals("TEG")) { + return 0.000000000000000000901662233371129; } + // System.out.println("scale2 " + aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * + // Math.pow(AA * TR, BB)/1.0e17); + // System.out.println("scale2 " + + // Math.pow(ThermodynamicConstantsInterface.avagadroNumber, 2.0 / 3.0)); + return (aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB)) + / Math.pow(ThermodynamicConstantsInterface.avagadroNumber, 2.0 / 3.0); + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentSrkCPA.java b/src/main/java/neqsim/thermo/component/ComponentSrkCPA.java index 1bc9bbbb4c..37649b61d7 100644 --- a/src/main/java/neqsim/thermo/component/ComponentSrkCPA.java +++ b/src/main/java/neqsim/thermo/component/ComponentSrkCPA.java @@ -28,13 +28,13 @@ public class ComponentSrkCPA extends ComponentSrk implements ComponentCPAInterfa * Constructor for ComponentSrkCPA. *

* - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. */ - public ComponentSrkCPA(String component_name, double moles, double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + public ComponentSrkCPA(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); xsite = new double[numberOfAssociationSites]; xsitedni = new double[numberOfAssociationSites][100]; xsitedV = new double[numberOfAssociationSites]; @@ -106,8 +106,8 @@ public ComponentSrkCPA clone() { ComponentSrkCPA clonedComponent = null; try { clonedComponent = (ComponentSrkCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } clonedComponent.xsite = xsite.clone(); @@ -137,13 +137,6 @@ public double getVolumeCorrection() { } } - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } - /** {@inheritDoc} */ @Override public void setAttractiveTerm(int i) { @@ -338,7 +331,7 @@ public double dFCPAdNdV(PhaseInterface phase, int numberOfComponents, double tem * phase.getComponent(k).getNumberOfMolesInPhase() * tot3; } */ // System.out.println("dFCPAdndV " + (xi - tot1 - tot4)); - return xi + tempar[0] * calc_lngi(phase) + tempar[1] * calc_lngidV(phase);// - tot1 - tot4; + return xi + tempar[0] * calc_lngi(phase) + tempar[1] * calc_lngidV(phase); // - tot1 - tot4; } /** @@ -359,7 +352,8 @@ public double dFCPAdNdT(PhaseInterface phase, int numberOfComponents, double tem xi += 1.0 / xsite[i] * xsitedT[i]; } - double tot1 = 0.0, tot2 = 0.0; + double tot1 = 0.0; + double tot2 = 0.0; for (int k = 0; k < phase.getNumberOfComponents(); k++) { tot2 = 0.0; for (int i = 0; i < phase.getComponent(k).getNumberOfAssociationSites(); i++) { @@ -511,7 +505,6 @@ public double calc_lngij(int j, PhaseInterface phase) { + ((ComponentEosInterface) phase.getComponent(j)).getBi() * temp3 * (temp1 + temp2)) / temp1 / temp1 / temp2 / temp2; return 2.0 * (getBij(j) * temp + getBi() * tempj); - } /** {@inheritDoc} */ @@ -580,7 +573,7 @@ public double[] getXsiteOld() { /** * Setter for property xsite. * - * @param xsiteOld an array of {@link double} objects + * @param xsiteOld an array of type double */ public void setXsiteOld(double[] xsiteOld) { this.xsiteOld = xsiteOld; @@ -636,7 +629,8 @@ public void setXsitedni(int xnumb, int compnumb, double val) { /** {@inheritDoc} */ @Override public double getSurfaceTenisionInfluenceParameter(double temperature) { - double AA = 0, BB = 0; + double AA = 0; + double BB = 0; if (componentName.equals("water")) { double TR = 1.0 - temperature / getTC(); AA = -2.2367E-16; @@ -647,8 +641,7 @@ public double getSurfaceTenisionInfluenceParameter(double temperature) { double AAW2 = -1.3646E-16; return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AAW1 + AAW2 * TR + 0.5113e-16 * TR * TR); - } // old - else if (componentName.equals("water2")) { /// THis is the old method from + } else if (componentName.equals("water2")) { // THis is the old method from double TR = 1.0 - temperature / getTC(); AA = -2.2367E-16; BB = 2.83732E-16; diff --git a/src/main/java/neqsim/thermo/component/ComponentSrkCPAs.java b/src/main/java/neqsim/thermo/component/ComponentSrkCPAs.java index f54d75ea59..7c4f380d00 100644 --- a/src/main/java/neqsim/thermo/component/ComponentSrkCPAs.java +++ b/src/main/java/neqsim/thermo/component/ComponentSrkCPAs.java @@ -18,14 +18,13 @@ public class ComponentSrkCPAs extends ComponentSrkCPA { * Constructor for ComponentSrkCPAs. *

* - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. */ - public ComponentSrkCPAs(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + public ComponentSrkCPAs(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); } /** @@ -50,8 +49,8 @@ public ComponentSrkCPAs clone() { ComponentSrkCPAs clonedComponent = null; try { clonedComponent = (ComponentSrkCPAs) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } return clonedComponent; @@ -92,7 +91,5 @@ public double calc_lngij(int j, PhaseInterface phase) { return (0.475 * getBij(j) * temp + 0.475 * ((ComponentEosInterface) phase.getComponent(j)).getBi() * 0.475 * getBi()) / (temp * temp); - - } } diff --git a/src/main/java/neqsim/thermo/component/ComponentSrkPeneloux.java b/src/main/java/neqsim/thermo/component/ComponentSrkPeneloux.java index da2eb637f6..7fb974526f 100644 --- a/src/main/java/neqsim/thermo/component/ComponentSrkPeneloux.java +++ b/src/main/java/neqsim/thermo/component/ComponentSrkPeneloux.java @@ -11,95 +11,86 @@ * @version $Id: $Id */ public class ComponentSrkPeneloux extends ComponentSrk { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - private double factTemp = Math.pow(2.0, 1.0 / 3.0); + private double factTemp = Math.pow(2.0, 1.0 / 3.0); - /** - *

- * Constructor for ComponentSrkPeneloux. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentSrkPeneloux(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + /** + *

+ * Constructor for ComponentSrkPeneloux. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentSrkPeneloux(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); - a = 1.0 / (9.0 * (Math.pow(2.0, 1.0 / 3.0) - 1.0)) * R * R * criticalTemperature - * criticalTemperature / criticalPressure; - b = (Math.pow(2.0, 1.0 / 3.0) - 1.0) / 3.0 * R * criticalTemperature / criticalPressure; - // double volCorr = getVolumeCorrection() / 1.0e5 * 0.0; - // b -= volCorr; - delta1 = 1.0; - delta2 = 0.0; - // System.out.println("a " + a); - // attractiveParameter = new AttractiveTermSchwartzentruber(this); - setAttractiveParameter(new AttractiveTermSrk(this)); + a = 1.0 / (9.0 * (Math.pow(2.0, 1.0 / 3.0) - 1.0)) * R * R * criticalTemperature + * criticalTemperature / criticalPressure; + b = (Math.pow(2.0, 1.0 / 3.0) - 1.0) / 3.0 * R * criticalTemperature / criticalPressure; + // double volCorr = getVolumeCorrection() / 1.0e5 * 0.0; + // b -= volCorr; + delta1 = 1.0; + delta2 = 0.0; + // System.out.println("a " + a); + // attractiveParameter = new AttractiveTermSchwartzentruber(this); + setAttractiveParameter(new AttractiveTermSrk(this)); - double[] surfTensInfluenceParamtemp = - {-0.7708158524, 0.4990571549, 0.8645478315, -0.3509810630, -0.1611763157}; - this.surfTensInfluenceParam = surfTensInfluenceParamtemp; - } - - /** - *

- * Constructor for ComponentSrkPeneloux. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentSrkPeneloux(int number, double TC, double PC, double M, double a, - double moles) { - super(number, TC, PC, M, a, moles); - } + double[] surfTensInfluenceParamtemp = + {-0.7708158524, 0.4990571549, 0.8645478315, -0.3509810630, -0.1611763157}; + this.surfTensInfluenceParam = surfTensInfluenceParamtemp; + } - /** {@inheritDoc} */ - @Override - public ComponentSrkPeneloux clone() { - ComponentSrkPeneloux clonedComponent = null; - try { - clonedComponent = (ComponentSrkPeneloux) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for ComponentSrkPeneloux. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentSrkPeneloux(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + } - return clonedComponent; + /** {@inheritDoc} */ + @Override + public ComponentSrkPeneloux clone() { + ComponentSrkPeneloux clonedComponent = null; + try { + clonedComponent = (ComponentSrkPeneloux) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } + return clonedComponent; + } - /** {@inheritDoc} */ - @Override - public double getVolumeCorrection() { - if (ionicCharge != 0) { - return 0.0; - } - if (Math.abs(this.getRacketZ()) < 1e-10) { - racketZ = 0.29056 - 0.08775 * getAcentricFactor(); - } - // System.out.println("racket Z " + racketZ + " vol correction " + - // (0.40768*(0.29441-this.getRacketZ())*R*criticalTemperature/criticalPressure)); - return 0.40768 * (0.29441 - this.getRacketZ()) * R * criticalTemperature / criticalPressure; + /** {@inheritDoc} */ + @Override + public double getVolumeCorrection() { + if (ionicCharge != 0) { + return 0.0; } - - /** {@inheritDoc} */ - @Override - public double calcb() { - double volCorr = getVolumeCorrection(); - return (factTemp - 1.0) / 3.0 * R * criticalTemperature / criticalPressure - volCorr; + if (Math.abs(this.getRacketZ()) < 1e-10) { + racketZ = 0.29056 - 0.08775 * getAcentricFactor(); } + // System.out.println("racket Z " + racketZ + " vol correction " + + // (0.40768*(0.29441-this.getRacketZ())*R*criticalTemperature/criticalPressure)); + return 0.40768 * (0.29441 - this.getRacketZ()) * R * criticalTemperature / criticalPressure; + } + + /** {@inheritDoc} */ + @Override + public double calcb() { + double volCorr = getVolumeCorrection(); + return (factTemp - 1.0) / 3.0 * R * criticalTemperature / criticalPressure - volCorr; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentTST.java b/src/main/java/neqsim/thermo/component/ComponentTST.java index a5238c33ac..769b5abc34 100644 --- a/src/main/java/neqsim/thermo/component/ComponentTST.java +++ b/src/main/java/neqsim/thermo/component/ComponentTST.java @@ -11,123 +11,115 @@ * @version $Id: $Id */ public class ComponentTST extends ComponentEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for ComponentTST. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentTST(String component_name, double moles, double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); + /** + *

+ * Constructor for ComponentTST. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentTST(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); - a = 0.427481 * R * R * criticalTemperature * criticalTemperature / criticalPressure; - b = .086641 * R * criticalTemperature / criticalPressure; - // m = 0.37464 + 1.54226 * acentricFactor - 0.26992* acentricFactor * - // acentricFactor; + a = 0.427481 * R * R * criticalTemperature * criticalTemperature / criticalPressure; + b = .086641 * R * criticalTemperature / criticalPressure; + // m = 0.37464 + 1.54226 * acentricFactor - 0.26992* acentricFactor * + // acentricFactor; - delta1 = 1.0 + Math.sqrt(2.0); - delta2 = 1.0 - Math.sqrt(2.0); - setAttractiveParameter(new AttractiveTermTwu(this)); - } - - /** - *

- * Constructor for ComponentTST. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentTST(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); - } + delta1 = 1.0 + Math.sqrt(2.0); + delta2 = 1.0 - Math.sqrt(2.0); + setAttractiveParameter(new AttractiveTermTwu(this)); + } - /** {@inheritDoc} */ - @Override - public ComponentTST clone() { - ComponentTST clonedComponent = null; - try { - clonedComponent = (ComponentTST) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for ComponentTST. + *

+ * + * @param number a int + * @param TC Critical temperature + * @param PC Critical pressure + * @param M Molar mass + * @param a Acentric factor + * @param moles Number of moles + */ + public ComponentTST(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + } - return clonedComponent; + /** {@inheritDoc} */ + @Override + public ComponentTST clone() { + ComponentTST clonedComponent = null; + try { + clonedComponent = (ComponentTST) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } + return clonedComponent; + } - /** {@inheritDoc} */ - @Override - public double calca() { - return .427481 * R * R * criticalTemperature * criticalTemperature / criticalPressure; - } + /** {@inheritDoc} */ + @Override + public double calca() { + return .427481 * R * R * criticalTemperature * criticalTemperature / criticalPressure; + } - /** {@inheritDoc} */ - @Override - public double calcb() { - return .086641 * R * criticalTemperature / criticalPressure; - } + /** {@inheritDoc} */ + @Override + public double calcb() { + return .086641 * R * criticalTemperature / criticalPressure; + } - /** {@inheritDoc} */ - @Override - public double getVolumeCorrection() { - if (this.getRacketZ() < 1e-10) { - return 0.0; - } else { - return 0.40768 * (0.29441 - this.getRacketZ()) * R * criticalTemperature - / criticalPressure; - } + /** {@inheritDoc} */ + @Override + public double getVolumeCorrection() { + if (this.getRacketZ() < 1e-10) { + return 0.0; + } else { + return 0.40768 * (0.29441 - this.getRacketZ()) * R * criticalTemperature / criticalPressure; } + } - /** - *

- * getQpure. - *

- * - * @param temperature a double - * @return a double - */ - public double getQpure(double temperature) { - return this.getaT() / (this.getb() * R * temperature); - } + /** + *

+ * getQpure. + *

+ * + * @param temperature a double + * @return a double + */ + public double getQpure(double temperature) { + return this.getaT() / (this.getb() * R * temperature); + } - /** - *

- * getdQpuredT. - *

- * - * @param temperature a double - * @return a double - */ - public double getdQpuredT(double temperature) { - return dqPuredT; - } + /** + *

+ * getdQpuredT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getdQpuredT(double temperature) { + return dqPuredT; + } - /** - *

- * getdQpuredTdT. - *

- * - * @param temperature a double - * @return a double - */ - public double getdQpuredTdT(double temperature) { - return dqPuredTdT; - } + /** + *

+ * getdQpuredTdT. + *

+ * + * @param temperature a double + * @return a double + */ + public double getdQpuredTdT(double temperature) { + return dqPuredTdT; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentUMRCPA.java b/src/main/java/neqsim/thermo/component/ComponentUMRCPA.java index 2528010acb..84c59ec625 100644 --- a/src/main/java/neqsim/thermo/component/ComponentUMRCPA.java +++ b/src/main/java/neqsim/thermo/component/ComponentUMRCPA.java @@ -13,660 +13,647 @@ * @version $Id: $Id */ public class ComponentUMRCPA extends ComponentPR implements ComponentCPAInterface { - private static final long serialVersionUID = 1000; - - int cpaon = 1; - double[] xsite = new double[0]; - private double[][] xsitedni = new double[0][0]; - double[] xsiteOld = new double[0]; - double[] xsitedV = new double[0]; - double[] xsitedT = new double[0]; - double[] xsitedTdT = new double[0]; - - /** - *

- * Constructor for ComponentSrkCPA. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int + private static final long serialVersionUID = 1000; + + int cpaon = 1; + double[] xsite = new double[0]; + private double[][] xsitedni = new double[0][0]; + double[] xsiteOld = new double[0]; + double[] xsitedV = new double[0]; + double[] xsitedT = new double[0]; + double[] xsitedTdT = new double[0]; + + /** + *

+ * Constructor for ComponentSrkCPA. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentUMRCPA(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + xsite = new double[numberOfAssociationSites]; + xsitedni = new double[numberOfAssociationSites][100]; + xsitedV = new double[numberOfAssociationSites]; + xsitedT = new double[numberOfAssociationSites]; + xsitedTdT = new double[numberOfAssociationSites]; + xsiteOld = new double[numberOfAssociationSites]; + if (numberOfAssociationSites != 0 && cpaon == 1) { + // System.out.println("ass sites: " + numberOfAssociationSites); + // System.out.println("aSRK " + a + " aCPA " + aCPA); + // System.out.println("bSRK " + b + " bCPA " + bCPA); + for (int j = 0; j < getNumberOfAssociationSites(); j++) { + setXsite(j, 1.0); + setXsiteOld(j, 1.0); + setXsitedV(j, 0.0); + setXsitedT(j, 0.0); + } + // if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + // a = aCPA; + // b = bCPA; + // } + setAttractiveTerm(0); + } + // double[] surfTensInfluenceParamtemp = {-0.0286407191587279700, + // -1.85760887578596, 0.520588, -0.1386439759, 1.1216308727071944}; + // this.surfTensInfluenceParam = surfTensInfluenceParamtemp; + } + + /** + *

+ * Constructor for ComponentSrkCPA. + *

+ * + * @param number a int + * @param TC a double + * @param PC a double + * @param M a double + * @param a a double + * @param moles a double + */ + public ComponentUMRCPA(int number, double TC, double PC, double M, double a, double moles) { + super(number, TC, PC, M, a, moles); + xsite = new double[numberOfAssociationSites]; + xsitedni = new double[numberOfAssociationSites][100]; + xsitedV = new double[numberOfAssociationSites]; + xsitedT = new double[numberOfAssociationSites]; + xsitedTdT = new double[numberOfAssociationSites]; + xsiteOld = new double[numberOfAssociationSites]; + if (numberOfAssociationSites != 0 && cpaon == 1) { + for (int j = 0; j < getNumberOfAssociationSites(); j++) { + setXsite(j, 1.0); + setXsiteOld(j, 1.0); + setXsitedV(j, 0.0); + setXsitedT(j, 0.0); + } + // if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + // a = aCPA; + // b = bCPA; + // } + setAttractiveTerm(0); + } + // double[] surfTensInfluenceParamtemp = {-0.0286407191587279700, + // -1.85760887578596, 0.520588, -0.1386439759, 1.1216308727071944}; + // this.surfTensInfluenceParam = surfTensInfluenceParamtemp; + } + + /** {@inheritDoc} */ + @Override + public void createComponent(String name, double moles, double molesInPhase, int compIndex) { + super.createComponent(name, moles, molesInPhase, compIndex); + // criticalTemperature = 305.4; + // criticalPressure = 135.62; + // acentricFactor = 0.1609; + criticalTemperature = 647; + criticalPressure = 220.64; + acentricFactor = 0.3443; + associationEnergy = 15059.15; + associationVolume = 0.109; + } + + /** {@inheritDoc} */ + @Override + public ComponentUMRCPA clone() { + ComponentUMRCPA clonedComponent = null; + try { + clonedComponent = (ComponentUMRCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + + clonedComponent.xsite = xsite.clone(); + System.arraycopy(this.xsite, 0, clonedComponent.xsite, 0, xsite.length); + clonedComponent.xsiteOld = xsiteOld.clone(); + System.arraycopy(this.xsiteOld, 0, clonedComponent.xsiteOld, 0, xsiteOld.length); + clonedComponent.xsitedV = xsitedV.clone(); + System.arraycopy(this.xsitedV, 0, clonedComponent.xsitedV, 0, xsitedV.length); + clonedComponent.xsitedT = xsitedT.clone(); + System.arraycopy(this.xsitedT, 0, clonedComponent.xsitedT, 0, xsitedT.length); + clonedComponent.xsitedTdT = xsitedTdT.clone(); + System.arraycopy(this.xsitedTdT, 0, clonedComponent.xsitedTdT, 0, xsitedTdT.length); + clonedComponent.xsitedni = xsitedni.clone(); + System.arraycopy(this.xsitedni, 0, clonedComponent.xsitedni, 0, xsitedni.length); + return clonedComponent; + } + + /** {@inheritDoc} */ + @Override + public double getVolumeCorrection() { + if ((getRacketZCPA() < 1.0e-10) && cpaon == 1) { + return 0.0; + } else { + setVolumeCorrectionT(getVolumeCorrectionT_CPA()); + setRacketZ(getRacketZCPA()); + return super.getVolumeCorrection(); + } + } + + /** {@inheritDoc} */ + @Override + public void setAttractiveTerm(int i) { + super.setAttractiveTerm(i); + // if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + // getAttractiveTerm().setm(mCPA); + // } + } + + /** {@inheritDoc} */ + @Override + public void seta(double a) { + aCPA = a; + } + + /** {@inheritDoc} */ + @Override + public void setb(double a) { + bCPA = a; + } + + /** {@inheritDoc} */ + @Override + public double calca() { + // if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + // return aCPA; + // } else { + return super.calca(); + // } + } + + /** {@inheritDoc} */ + @Override + public double calcb() { + // if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { + // return bCPA; + // } else { + return super.calcb(); + // } + } + + /** {@inheritDoc} */ + @Override + public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); + double Fcpa = 0.0; + // if(phase.getPhaseType()==1) cpaon=0; + if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { + Fcpa = dFCPAdN(phase, numberOfComponents, temperature, pressure); + } + // System.out.println("Fsup " + Fsup + " fcpa " + Fcpa); + // System.out.println("i " + componentNumber + " dFCPAdn " + Fcpa); + return Fsup + cpaon * Fcpa; + } + + /** {@inheritDoc} */ + @Override + public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { + return super.dFdNdT(phase, numberOfComponents, temperature, pressure) + + dFCPAdNdT(phase, numberOfComponents, temperature, pressure); + } else { + return super.dFdNdT(phase, numberOfComponents, temperature, pressure); + } + } + + /** {@inheritDoc} */ + @Override + public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + // System.out.println("dQdndV " + dFCPAdNdV(phase, numberOfComponents, + // temperature, pressure) + " dFdndV " + super.dFdNdV(phase, numberOfComponents, + // temperature, pressure)); + if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { + return super.dFdNdV(phase, numberOfComponents, temperature, pressure) + + dFCPAdNdV(phase, numberOfComponents, temperature, pressure); + } else { + return super.dFdNdV(phase, numberOfComponents, temperature, pressure); + } + } + + /** {@inheritDoc} */ + @Override + public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + // System.out.println("ij " + componentNumber + " " + j + " dQCPAdndn " + + // dFCPAdNdN(j, phase, numberOfComponents, temperature, pressure)+ " dQsrkdndn " + // + super.dFdNdN(j, phase, numberOfComponents, temperature, pressure)); + // System.out.println("dFdndn " +(super.dFdNdN(j, phase, numberOfComponents, + // temperature, pressure) + dFCPAdNdN(j, phase, numberOfComponents, temperature, + // pressure))); + if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { + return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure) + + dFCPAdNdN(j, phase, numberOfComponents, temperature, pressure); + } else { + return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure); + } + } + + /** + *

+ * dFCPAdNdN. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double temp1 = 0; + for (int i = 0; i < numberOfAssociationSites; i++) { + temp1 += 1.0 / getXsite()[i] * getXsitedni(i, j); + } + double tot2 = 0.0; + for (int i = 0; i < phase.getComponent(j).getNumberOfAssociationSites(); i++) { + tot2 += calc_lngi(phase) * (1.0 - ((ComponentUMRCPA) phase.getComponent(j)).getXsite()[i]); + } + double tot1 = 1.0 / 2.0 * tot2; + + double tot4 = 0.0; + tot4 = 0.5 * ((PhaseCPAInterface) phase).getHcpatot() * calc_lngij(j, phase); + double tot10 = 0.0; + for (int kk = 0; kk < phase.getNumberOfComponents(); kk++) { + for (int k = 0; k < phase.getComponent(kk).getNumberOfAssociationSites(); k++) { + tot10 += -phase.getComponent(kk).getNumberOfMolesInPhase() + * ((ComponentUMRCPA) phase.getComponent(kk)).getXsitedni(k, j); + } + } + double tot11 = tot10 / 2.0 * calc_lngi(phase); + + // System.out.println("dFCPAdndn " + (temp1 - tot1 - tot4 - tot11)); + return temp1 - tot1 - tot4 - tot11; + } + + /** + *

+ * dFCPAdN. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + xi += Math.log(xsite[i]); + } + // System.out.println("dFCPAdn " + ((xi - ((PhaseCPAInterface) + // phase).getHcpatot() / 2.0 * calc_lngi(phase)))+ " " + componentNumber); + return (xi - ((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngi(phase)); + } + + /** + *

+ * dFCPAdNdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdNdV(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + xi += (1.0 / xsite[i]) * xsitedV[i]; + } + + double[] tempar = ((PhaseUMRCPA) phase).getdFdNtemp(); + // double temp = calc_lngi(phase); + // double temp2 = calc_lngidV(phase); + /* + * double tot1 = 0.0, tot2 = 0.0, tot3 = 0.0, tot4 = 0.0, temp, temp2; for (int k = 0; k < + * phase.getNumberOfComponents(); k++) { tot2 = 0.0; tot3 = 0.0; temp = calc_lngi(phase); temp2 + * = calc_lngidV(phase); for (int i = 0; i < + * phase.getComponent(k).getNumberOfAssociationSites(); i++) { tot2 -= temp * ((ComponentSrkCPA) + * phase.getComponent(k)).getXsitedV()[i]; tot3 += (1.0 - ((ComponentSrkCPA) + * phase.getComponent(k)).getXsite()[i]) * temp2; } tot1 += 1.0 / 2.0 * tot2 * + * phase.getComponent(k).getNumberOfMolesInPhase(); tot4 += 0.5 * + * phase.getComponent(k).getNumberOfMolesInPhase() * tot3; } */ - public ComponentUMRCPA(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - xsite = new double[numberOfAssociationSites]; - xsitedni = new double[numberOfAssociationSites][100]; - xsitedV = new double[numberOfAssociationSites]; - xsitedT = new double[numberOfAssociationSites]; - xsitedTdT = new double[numberOfAssociationSites]; - xsiteOld = new double[numberOfAssociationSites]; - if (numberOfAssociationSites != 0 && cpaon == 1) { - // System.out.println("ass sites: " + numberOfAssociationSites); - // System.out.println("aSRK " + a + " aCPA " + aCPA); - // System.out.println("bSRK " + b + " bCPA " + bCPA); - for (int j = 0; j < getNumberOfAssociationSites(); j++) { - setXsite(j, 1.0); - setXsiteOld(j, 1.0); - setXsitedV(j, 0.0); - setXsitedT(j, 0.0); - } - //if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - // a = aCPA; - // b = bCPA; - //} - setAttractiveTerm(0); - } - // double[] surfTensInfluenceParamtemp = {-0.0286407191587279700, - // -1.85760887578596, 0.520588, -0.1386439759, 1.1216308727071944}; - // this.surfTensInfluenceParam = surfTensInfluenceParamtemp; - } - - /** - *

- * Constructor for ComponentSrkCPA. - *

- * - * @param number a int - * @param TC a double - * @param PC a double - * @param M a double - * @param a a double - * @param moles a double - */ - public ComponentUMRCPA(int number, double TC, double PC, double M, double a, double moles) { - super(number, TC, PC, M, a, moles); - xsite = new double[numberOfAssociationSites]; - xsitedni = new double[numberOfAssociationSites][100]; - xsitedV = new double[numberOfAssociationSites]; - xsitedT = new double[numberOfAssociationSites]; - xsitedTdT = new double[numberOfAssociationSites]; - xsiteOld = new double[numberOfAssociationSites]; - if (numberOfAssociationSites != 0 && cpaon == 1) { - for (int j = 0; j < getNumberOfAssociationSites(); j++) { - setXsite(j, 1.0); - setXsiteOld(j, 1.0); - setXsitedV(j, 0.0); - setXsitedT(j, 0.0); - } - //if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - // a = aCPA; - //b = bCPA; - // } - setAttractiveTerm(0); - } - // double[] surfTensInfluenceParamtemp = {-0.0286407191587279700, - // -1.85760887578596, 0.520588, -0.1386439759, 1.1216308727071944}; - // this.surfTensInfluenceParam = surfTensInfluenceParamtemp; - } - - /** {@inheritDoc} */ - @Override - public ComponentUMRCPA clone() { - ComponentUMRCPA clonedComponent = null; - try { - clonedComponent = (ComponentUMRCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - clonedComponent.xsite = xsite.clone(); - System.arraycopy(this.xsite, 0, clonedComponent.xsite, 0, xsite.length); - clonedComponent.xsiteOld = xsiteOld.clone(); - System.arraycopy(this.xsiteOld, 0, clonedComponent.xsiteOld, 0, xsiteOld.length); - clonedComponent.xsitedV = xsitedV.clone(); - System.arraycopy(this.xsitedV, 0, clonedComponent.xsitedV, 0, xsitedV.length); - clonedComponent.xsitedT = xsitedT.clone(); - System.arraycopy(this.xsitedT, 0, clonedComponent.xsitedT, 0, xsitedT.length); - clonedComponent.xsitedTdT = xsitedTdT.clone(); - System.arraycopy(this.xsitedTdT, 0, clonedComponent.xsitedTdT, 0, xsitedTdT.length); - clonedComponent.xsitedni = xsitedni.clone(); - System.arraycopy(this.xsitedni, 0, clonedComponent.xsitedni, 0, xsitedni.length); - return clonedComponent; - } - - /** {@inheritDoc} */ - @Override - public double getVolumeCorrection() { - if ((getRacketZCPA() < 1.0e-10) && cpaon == 1) { - return 0.0; - } else { - setVolumeCorrectionT(getVolumeCorrectionT_CPA()); - setRacketZ(getRacketZCPA()); - return super.getVolumeCorrection(); - } - } - - @Override - public void createComponent(String component_name, double moles, double molesInPhase, - int compnumber) { - super.createComponent(component_name, moles, molesInPhase, - compnumber); - //criticalTemperature = 305.4; - //criticalPressure = 135.62; - //acentricFactor = 0.1609; - criticalTemperature = 647; - criticalPressure = 220.64; - acentricFactor = 0.3443; - associationEnergy = 15059.15; - associationVolume= 0.109; - - } - - - - /** {@inheritDoc} */ - @Override - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int type) { - super.init(temperature, pressure, totalNumberOfMoles, beta, type); - } - - /** {@inheritDoc} */ - @Override - public void setAttractiveTerm(int i) { - super.setAttractiveTerm(i); - //if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - //getAttractiveTerm().setm(mCPA); - //} - } - - /** {@inheritDoc} */ - @Override - public void seta(double a) { - aCPA = a; - } - - /** {@inheritDoc} */ - @Override - public void setb(double a) { - bCPA = a; - } - - /** {@inheritDoc} */ - @Override - public double calca() { - //if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - //return aCPA; - //} else { - return super.calca(); - //} - } - - /** {@inheritDoc} */ - @Override - public double calcb() { - //if (Math.abs(aCPA) > 1e-6 && cpaon == 1) { - // return bCPA; - //} else { - return super.calcb(); - // } - } - - /** {@inheritDoc} */ - @Override - public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double Fsup = super.dFdN(phase, numberOfComponents, temperature, pressure); - double Fcpa = 0.0; - // if(phase.getPhaseType()==1) cpaon=0; - if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { - Fcpa = dFCPAdN(phase, numberOfComponents, temperature, pressure); - } - // System.out.println("Fsup " + Fsup + " fcpa " + Fcpa); - // System.out.println("i " + componentNumber + " dFCPAdn " + Fcpa); - return Fsup + cpaon * Fcpa; - } - - /** {@inheritDoc} */ - @Override - public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { - return super.dFdNdT(phase, numberOfComponents, temperature, pressure) - + dFCPAdNdT(phase, numberOfComponents, temperature, pressure); - } else { - return super.dFdNdT(phase, numberOfComponents, temperature, pressure); - } - } - - /** {@inheritDoc} */ - @Override - public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - // System.out.println("dQdndV " + dFCPAdNdV(phase, numberOfComponents, - // temperature, pressure) + " dFdndV " + super.dFdNdV(phase, numberOfComponents, - // temperature, pressure)); - if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { - return super.dFdNdV(phase, numberOfComponents, temperature, pressure) - + dFCPAdNdV(phase, numberOfComponents, temperature, pressure); - } else { - return super.dFdNdV(phase, numberOfComponents, temperature, pressure); - } - } - - /** {@inheritDoc} */ - @Override - public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - // System.out.println("ij " + componentNumber + " " + j + " dQCPAdndn " + - // dFCPAdNdN(j, phase, numberOfComponents, temperature, pressure)+ " dQsrkdndn " - // + super.dFdNdN(j, phase, numberOfComponents, temperature, pressure)); - // System.out.println("dFdndn " +(super.dFdNdN(j, phase, numberOfComponents, - // temperature, pressure) + dFCPAdNdN(j, phase, numberOfComponents, temperature, - // pressure))); - if (((PhaseCPAInterface) phase).getTotalNumberOfAccociationSites() > 0) { - return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure) - + dFCPAdNdN(j, phase, numberOfComponents, temperature, pressure); - } else { - return super.dFdNdN(j, phase, numberOfComponents, temperature, pressure); - } - } - - /** - *

- * dFCPAdNdN. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double temp1 = 0; - for (int i = 0; i < numberOfAssociationSites; i++) { - temp1 += 1.0 / getXsite()[i] * getXsitedni(i, j); - } - double tot2 = 0.0; - for (int i = 0; i < phase.getComponent(j).getNumberOfAssociationSites(); i++) { - tot2 += calc_lngi(phase) - * (1.0 - ((ComponentUMRCPA) phase.getComponent(j)).getXsite()[i]); - } - double tot1 = 1.0 / 2.0 * tot2; - - double tot4 = 0.0; - tot4 = 0.5 * ((PhaseCPAInterface) phase).getHcpatot() * calc_lngij(j, phase); - double tot10 = 0.0; - for (int kk = 0; kk < phase.getNumberOfComponents(); kk++) { - for (int k = 0; k < phase.getComponent(kk).getNumberOfAssociationSites(); k++) { - tot10 += -phase.getComponent(kk).getNumberOfMolesInPhase() - * ((ComponentUMRCPA) phase.getComponent(kk)).getXsitedni(k, j); - } - } - double tot11 = tot10 / 2.0 * calc_lngi(phase); - - // System.out.println("dFCPAdndn " + (temp1 - tot1 - tot4 - tot11)); - return temp1 - tot1 - tot4 - tot11; - } - - /** - *

- * dFCPAdN. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - xi += Math.log(xsite[i]); - } - // System.out.println("dFCPAdn " + ((xi - ((PhaseCPAInterface) - // phase).getHcpatot() / 2.0 * calc_lngi(phase)))+ " " + componentNumber); - return (xi - ((PhaseCPAInterface) phase).getHcpatot() / 2.0 * calc_lngi(phase)); - } - - /** - *

- * dFCPAdNdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdNdV(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - xi += (1.0 / xsite[i]) * xsitedV[i]; - } - - double[] tempar = ((PhaseUMRCPA) phase).getdFdNtemp(); - // double temp = calc_lngi(phase); - // double temp2 = calc_lngidV(phase); - /* - * double tot1 = 0.0, tot2 = 0.0, tot3 = 0.0, tot4 = 0.0, temp, temp2; for (int k = 0; k < - * phase.getNumberOfComponents(); k++) { tot2 = 0.0; tot3 = 0.0; temp = calc_lngi(phase); - * temp2 = calc_lngidV(phase); for (int i = 0; i < - * phase.getComponent(k).getNumberOfAssociationSites(); i++) { tot2 -= temp * - * ((ComponentSrkCPA) phase.getComponent(k)).getXsitedV()[i]; tot3 += (1.0 - - * ((ComponentSrkCPA) phase.getComponent(k)).getXsite()[i]) * temp2; } tot1 += 1.0 / 2.0 * - * tot2 * phase.getComponent(k).getNumberOfMolesInPhase(); tot4 += 0.5 * - * phase.getComponent(k).getNumberOfMolesInPhase() * tot3; } - */ - // System.out.println("dFCPAdndV " + (xi - tot1 - tot4)); - return xi + tempar[0] * calc_lngi(phase) + tempar[1] * calc_lngidV(phase);// - tot1 - tot4; - } - - /** - *

- * dFCPAdNdT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @return a double - */ - public double dFCPAdNdT(PhaseInterface phase, int numberOfComponents, double temperature, - double pressure) { - double xi = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - xi += 1.0 / xsite[i] * xsitedT[i]; - } - - double tot1 = 0.0, tot2 = 0.0; - for (int k = 0; k < phase.getNumberOfComponents(); k++) { - tot2 = 0.0; - for (int i = 0; i < phase.getComponent(k).getNumberOfAssociationSites(); i++) { - tot2 -= ((ComponentUMRCPA) phase.getComponent(k)).getXsitedT()[i]; - } - tot1 += tot2 * phase.getComponent(k).getNumberOfMolesInPhase(); - } - // System.out.println("dFCPAdndT " + (xi - 1.0 / 2.0 * calc_lngi(phase) * - // tot1)); - // System.out.println("dlngdni " + calc_lngi(phase)); - return xi - 1.0 / 2.0 * calc_lngi(phase) * tot1; - } - - /** - *

- * calc_hCPAdn. - *

- * - * @return a double - */ - public double calc_hCPAdn() { - double hdn = 0.0; - for (int i = 0; i < getNumberOfAssociationSites(); i++) { - hdn = 1.0 - getXsite()[i]; - } - return hdn; - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdXi(int site, PhaseInterface phase) { - return getNumberOfMolesInPhase() * (1.0 / xsite[site] - 1.0 / 2.0); - } - - /** - *

- * dFCPAdXidni. - *

- * - * @param site a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double dFCPAdXidni(int site, PhaseInterface phase) { - return (1.0 / xsite[site] - 1.0 / 2.0); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdXidXj(int sitei, int sitej, int compj, PhaseInterface phase) { - double fact = 0.0; - if (sitei == sitej && compj == componentNumber) { - fact = 1.0; - } - return -getNumberOfMolesInPhase() / Math.pow(xsite[sitei], 2.0) * fact - - getNumberOfMolesInPhase() * phase.getComponent(compj).getNumberOfMolesInPhase() - * ((PhaseCPAInterface) phase).getCpamix().calcDelta(sitei, sitej, - componentNumber, compj, phase, phase.getTemperature(), - phase.getPressure(), phase.getNumberOfComponents()); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdVdXi(int site, PhaseInterface phase) { - return -1.0 / (2.0 * phase.getTotalVolume()) - * (1.0 - phase.getTotalVolume() * ((PhaseCPAInterface) phase).getGcpav()) - * getNumberOfMolesInPhase(); - } - - /** {@inheritDoc} */ - @Override - public double dFCPAdNdXi(int site, PhaseInterface phase) { - double xi = 1.0 / xsite[site]; - - // return xi - tempp; - return xi + getNumberOfMolesInPhase() / 2.0 * calc_lngi(phase); - } - - /** - *

- * dFCPAdNdXidXdV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double dFCPAdNdXidXdV(PhaseInterface phase) { - double temp = 0.0; - for (int i = 0; i < numberOfAssociationSites; i++) { - temp += dFCPAdNdXi(i, phase) * getXsitedV()[i]; - } - return temp; - } - - /** - *

- * calc_lngi. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngi(PhaseInterface phase) { - return 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) - / ((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())); - } - - /** - *

- * calc_lngidV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngidV(PhaseInterface phase) { - return 2.0 * getBi() * (10.0) - / ((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())) - - 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) - * (2.0 * 32.0 * phase.getTotalVolume() - 12.0 * phase.getB()) - / Math.pow(((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())), 2.0); - } - - /** - *

- * calc_lngij. - *

- * - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double calc_lngij(int j, PhaseInterface phase) { - return 2.0 * getBij(j) * (10.0 * phase.getTotalVolume() - phase.getB()) - / ((8.0 * phase.getTotalVolume() - phase.getB()) - * (4.0 * phase.getTotalVolume() - phase.getB())); - } - - /** {@inheritDoc} */ - @Override - public double[] getXsite() { - return this.xsite; - } - - /** - * Setter for property xsite. - * - * @param xsite New value of property xsite. - */ - public void setXsite(double[] xsite) { - this.xsite = xsite; - } - - /** {@inheritDoc} */ - @Override - public void setXsite(int i, double xsite) { - this.xsite[i] = xsite; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedV() { - return this.xsitedV; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedV(int i, double xsitedV) { - this.xsitedV[i] = xsitedV; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedT() { - return this.xsitedT; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsitedTdT() { - return this.xsitedTdT; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedT(int i, double xsitedT) { - this.xsitedT[i] = xsitedT; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedTdT(int i, double xsitedTdT) { - this.xsitedTdT[i] = xsitedTdT; - } - - /** {@inheritDoc} */ - @Override - public double[] getXsiteOld() { - return this.xsiteOld; - } - - /** - * Setter for property xsite. - * - * @param xsiteOld an array of {@link double} objects - */ - public void setXsiteOld(double[] xsiteOld) { - this.xsiteOld = xsiteOld; - } - - /** {@inheritDoc} */ - @Override - public void setXsiteOld(int i, double xsiteOld) { - this.xsiteOld[i] = xsiteOld; - } - - /** - *

- * Getter for the field xsitedni. - *

- * - * @return the xsitedni - */ - public double[][] getXsitedni() { - return xsitedni; - } - - /** - *

- * Getter for the field xsitedni. - *

- * - * @param xNumb a int - * @param compNumbi a int - * @return a double - */ - public double getXsitedni(int xNumb, int compNumbi) { - return xsitedni[xNumb][compNumbi]; - } - - /** - *

- * Setter for the field xsitedni. - *

- * - * @param xsitedni the xsitedni to set - */ - public void setXsitedni(double[][] xsitedni) { - this.xsitedni = xsitedni; - } - - /** {@inheritDoc} */ - @Override - public void setXsitedni(int xnumb, int compnumb, double val) { - xsitedni[xnumb][compnumb] = val; - } - - /** {@inheritDoc} */ - @Override - public double getSurfaceTenisionInfluenceParameter(double temperature) { - double AA = 0, BB = 0; - if (componentName.equals("water")) { - double TR = 1.0 - temperature / getTC(); - AA = -2.2367E-16; - BB = 2.83732E-16; - // return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB); - - double AAW1 = 2.2505E-16; - double AAW2 = -1.3646E-16; - - return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) - * (AAW1 + AAW2 * TR + 0.5113e-16 * TR * TR); - } // old - else if (componentName.equals("water2")) { /// THis is the old method from - double TR = 1.0 - temperature / getTC(); - AA = -2.2367E-16; - BB = 2.83732E-16; - return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB); - } else if (componentName.equals("MEG")) { - return 1.04874809905393E-19; - } else if (componentName.equals("TEG")) { - return 7.46824658716429E-19; - } else { - return super.getSurfaceTenisionInfluenceParameter(temperature); - } - } + // System.out.println("dFCPAdndV " + (xi - tot1 - tot4)); + return xi + tempar[0] * calc_lngi(phase) + tempar[1] * calc_lngidV(phase); // - tot1 - tot4; + } + + /** + *

+ * dFCPAdNdT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @return a double + */ + public double dFCPAdNdT(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure) { + double xi = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + xi += 1.0 / xsite[i] * xsitedT[i]; + } + + double tot1 = 0.0; + double tot2 = 0.0; + for (int k = 0; k < phase.getNumberOfComponents(); k++) { + tot2 = 0.0; + for (int i = 0; i < phase.getComponent(k).getNumberOfAssociationSites(); i++) { + tot2 -= ((ComponentUMRCPA) phase.getComponent(k)).getXsitedT()[i]; + } + tot1 += tot2 * phase.getComponent(k).getNumberOfMolesInPhase(); + } + // System.out.println("dFCPAdndT " + (xi - 1.0 / 2.0 * calc_lngi(phase) * + // tot1)); + // System.out.println("dlngdni " + calc_lngi(phase)); + return xi - 1.0 / 2.0 * calc_lngi(phase) * tot1; + } + + /** + *

+ * calc_hCPAdn. + *

+ * + * @return a double + */ + public double calc_hCPAdn() { + double hdn = 0.0; + for (int i = 0; i < getNumberOfAssociationSites(); i++) { + hdn = 1.0 - getXsite()[i]; + } + return hdn; + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdXi(int site, PhaseInterface phase) { + return getNumberOfMolesInPhase() * (1.0 / xsite[site] - 1.0 / 2.0); + } + + /** + *

+ * dFCPAdXidni. + *

+ * + * @param site a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double dFCPAdXidni(int site, PhaseInterface phase) { + return (1.0 / xsite[site] - 1.0 / 2.0); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdXidXj(int sitei, int sitej, int compj, PhaseInterface phase) { + double fact = 0.0; + if (sitei == sitej && compj == componentNumber) { + fact = 1.0; + } + return -getNumberOfMolesInPhase() / Math.pow(xsite[sitei], 2.0) * fact + - getNumberOfMolesInPhase() * phase.getComponent(compj).getNumberOfMolesInPhase() + * ((PhaseCPAInterface) phase).getCpamix().calcDelta(sitei, sitej, componentNumber, + compj, phase, phase.getTemperature(), phase.getPressure(), + phase.getNumberOfComponents()); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdVdXi(int site, PhaseInterface phase) { + return -1.0 / (2.0 * phase.getTotalVolume()) + * (1.0 - phase.getTotalVolume() * ((PhaseCPAInterface) phase).getGcpav()) + * getNumberOfMolesInPhase(); + } + + /** {@inheritDoc} */ + @Override + public double dFCPAdNdXi(int site, PhaseInterface phase) { + double xi = 1.0 / xsite[site]; + + // return xi - tempp; + return xi + getNumberOfMolesInPhase() / 2.0 * calc_lngi(phase); + } + + /** + *

+ * dFCPAdNdXidXdV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double dFCPAdNdXidXdV(PhaseInterface phase) { + double temp = 0.0; + for (int i = 0; i < numberOfAssociationSites; i++) { + temp += dFCPAdNdXi(i, phase) * getXsitedV()[i]; + } + return temp; + } + + /** + *

+ * calc_lngi. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngi(PhaseInterface phase) { + return 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) + / ((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())); + } + + /** + *

+ * calc_lngidV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngidV(PhaseInterface phase) { + return 2.0 * getBi() * (10.0) + / ((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())) + - 2.0 * getBi() * (10.0 * phase.getTotalVolume() - phase.getB()) + * (2.0 * 32.0 * phase.getTotalVolume() - 12.0 * phase.getB()) + / Math.pow(((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())), 2.0); + } + + /** + *

+ * calc_lngij. + *

+ * + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double calc_lngij(int j, PhaseInterface phase) { + return 2.0 * getBij(j) * (10.0 * phase.getTotalVolume() - phase.getB()) + / ((8.0 * phase.getTotalVolume() - phase.getB()) + * (4.0 * phase.getTotalVolume() - phase.getB())); + } + + /** {@inheritDoc} */ + @Override + public double[] getXsite() { + return this.xsite; + } + + /** + * Setter for property xsite. + * + * @param xsite New value of property xsite. + */ + public void setXsite(double[] xsite) { + this.xsite = xsite; + } + + /** {@inheritDoc} */ + @Override + public void setXsite(int i, double xsite) { + this.xsite[i] = xsite; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedV() { + return this.xsitedV; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedV(int i, double xsitedV) { + this.xsitedV[i] = xsitedV; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedT() { + return this.xsitedT; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsitedTdT() { + return this.xsitedTdT; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedT(int i, double xsitedT) { + this.xsitedT[i] = xsitedT; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedTdT(int i, double xsitedTdT) { + this.xsitedTdT[i] = xsitedTdT; + } + + /** {@inheritDoc} */ + @Override + public double[] getXsiteOld() { + return this.xsiteOld; + } + + /** + * Setter for property xsite. + * + * @param xsiteOld an array of type double + */ + public void setXsiteOld(double[] xsiteOld) { + this.xsiteOld = xsiteOld; + } + + /** {@inheritDoc} */ + @Override + public void setXsiteOld(int i, double xsiteOld) { + this.xsiteOld[i] = xsiteOld; + } + + /** + *

+ * Getter for the field xsitedni. + *

+ * + * @return the xsitedni + */ + public double[][] getXsitedni() { + return xsitedni; + } + + /** + *

+ * Getter for the field xsitedni. + *

+ * + * @param xNumb a int + * @param compNumbi a int + * @return a double + */ + public double getXsitedni(int xNumb, int compNumbi) { + return xsitedni[xNumb][compNumbi]; + } + + /** + *

+ * Setter for the field xsitedni. + *

+ * + * @param xsitedni the xsitedni to set + */ + public void setXsitedni(double[][] xsitedni) { + this.xsitedni = xsitedni; + } + + /** {@inheritDoc} */ + @Override + public void setXsitedni(int xnumb, int compnumb, double val) { + xsitedni[xnumb][compnumb] = val; + } + + /** {@inheritDoc} */ + @Override + public double getSurfaceTenisionInfluenceParameter(double temperature) { + double AA = 0; + double BB = 0; + if (componentName.equals("water")) { + double TR = 1.0 - temperature / getTC(); + AA = -2.2367E-16; + BB = 2.83732E-16; + // return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB); + + double AAW1 = 2.2505E-16; + double AAW2 = -1.3646E-16; + + return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AAW1 + AAW2 * TR + 0.5113e-16 * TR * TR); + } else if (componentName.equals("water2")) { // THis is the old method from + double TR = 1.0 - temperature / getTC(); + AA = -2.2367E-16; + BB = 2.83732E-16; + return aT * 1e-5 * Math.pow(b * 1e-5, 2.0 / 3.0) * (AA * TR + BB); + } else if (componentName.equals("MEG")) { + return 1.04874809905393E-19; + } else if (componentName.equals("TEG")) { + return 7.46824658716429E-19; + } else { + return super.getSurfaceTenisionInfluenceParameter(temperature); + } + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentWax.java b/src/main/java/neqsim/thermo/component/ComponentWax.java index 851cfb910f..7f37d81e8b 100644 --- a/src/main/java/neqsim/thermo/component/ComponentWax.java +++ b/src/main/java/neqsim/thermo/component/ComponentWax.java @@ -1,11 +1,9 @@ -/* - * SolidComponent.java - * - * Created on 18. august 2001, 12:45 - */ package neqsim.thermo.component; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -16,75 +14,65 @@ * @version $Id: $Id */ public class ComponentWax extends ComponentSolid { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentWax.class); - /** - *

- * Constructor for ComponentWax. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentWax(String component_name, double moles, double molesInPhase, int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } + /** + *

+ * Constructor for ComponentWax. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentWax(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } - /** - * {@inheritDoc} - * - * Uses Claperyons equation to calculate the solid fugacity - */ - @Override - public double fugcoef(PhaseInterface phase1) { - if (!isWaxFormer()) { - fugacityCoefficient = 1.0e50; - logFugacityCoefficient = Math.log(fugacityCoefficient); - return 1.0e50; - } - return fugcoef2(phase1); + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase1) { + if (!isWaxFormer()) { + fugacityCoefficient = 1.0e50; + return fugacityCoefficient; } - /** {@inheritDoc} */ - @Override - public double fugcoef2(PhaseInterface phase1) { - try { - refPhase.setTemperature(phase1.getTemperature()); - } catch (Exception e) { - // System.out.println("compname " + componentName); - e.printStackTrace(); - } - refPhase.setPressure(phase1.getPressure()); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 1, 0, 1.0); - refPhase.getComponent(0).fugcoef(refPhase); + return fugcoef2(phase1); + } - double liquidPhaseFugacity = - refPhase.getComponent(0).getFugacityCoefficient() * refPhase.getPressure(); + /** {@inheritDoc} */ + @Override + public double fugcoef2(PhaseInterface phase1) { + try { + refPhase.setTemperature(phase1.getTemperature()); + } catch (Exception ex) { + // System.out.println("compname " + componentName); + logger.error(ex.getMessage(), ex); + } + refPhase.setPressure(phase1.getPressure()); + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 1, PhaseType.byValue(0), 1.0); + refPhase.getComponent(0).fugcoef(refPhase); - double liquidDenisty = refPhase.getMolarVolume(); - double solidDensity = liquidDenisty * 0.9; - double refPressure = 1.0; - double presTerm = -(liquidDenisty - solidDensity) * (phase1.getPressure() - refPressure) / R - / phase1.getTemperature(); - // System.out.println("heat of fusion" +getHeatOfFusion()); - SolidFug = - getx() * liquidPhaseFugacity - * Math.exp(-getHeatOfFusion() / (R * phase1.getTemperature()) - * (1.0 - phase1.getTemperature() / getTriplePointTemperature()) - + presTerm); + double liquidPhaseFugacity = + refPhase.getComponent(0).getFugacityCoefficient() * refPhase.getPressure(); - // double SolidFug2 = getx() * liquidPhaseFugacity * Math.exp(-getHeatOfFusion() / (R * - // phase1.getTemperature()) * (1.0 - phase1.getTemperature() / getTriplePointTemperature()) - // + presTerm); + double liquidDenisty = refPhase.getMolarVolume(); + double solidDensity = liquidDenisty * 0.9; + double refPressure = 1.0; + double presTerm = -(liquidDenisty - solidDensity) * (phase1.getPressure() - refPressure) / R + / phase1.getTemperature(); + // System.out.println("heat of fusion" +getHeatOfFusion()); + SolidFug = + getx() * liquidPhaseFugacity * Math.exp(-getHeatOfFusion() / (R * phase1.getTemperature()) + * (1.0 - phase1.getTemperature() / getTriplePointTemperature()) + presTerm); - fugacityCoefficient = SolidFug / (phase1.getPressure() * getx()); - logFugacityCoefficient = Math.log(fugacityCoefficient); - return fugacityCoefficient; + // double SolidFug2 = getx() * liquidPhaseFugacity * Math.exp(-getHeatOfFusion() / (R * + // phase1.getTemperature()) * (1.0 - phase1.getTemperature() / getTriplePointTemperature()) + // + presTerm); - // getS - } - // public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, - // double pres){ + fugacityCoefficient = SolidFug / (phase1.getPressure() * getx()); + return fugacityCoefficient; + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentWaxWilson.java b/src/main/java/neqsim/thermo/component/ComponentWaxWilson.java index 0d1475cf0b..a1b79e5702 100644 --- a/src/main/java/neqsim/thermo/component/ComponentWaxWilson.java +++ b/src/main/java/neqsim/thermo/component/ComponentWaxWilson.java @@ -1,12 +1,10 @@ -/* - * SolidComponent.java - * - * Created on 18. august 2001, 12:45 - */ package neqsim.thermo.component; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -17,193 +15,182 @@ * @version $Id: $Id */ public class ComponentWaxWilson extends ComponentSolid { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for ComponentWaxWilson. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentWaxWilson(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } - - /** - * {@inheritDoc} - * - * Uses Claperyons equation to calculate the solid fugacity - */ - @Override - public double fugcoef(PhaseInterface phase1) { - if (!isWaxFormer()) { - // fugacityCoefficient = 1.0e30; - // logFugacityCoefficient = Math.log(fugacityCoefficient); - return 1.0e30; - } - return fugcoef2(phase1); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentWaxWilson.class); + + /** + *

+ * Constructor for ComponentWaxWilson. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentWaxWilson(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } + + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase1) { + if (!isWaxFormer()) { + fugacityCoefficient = 1.0e30; + return fugacityCoefficient; } - /** {@inheritDoc} */ - @Override - public double fugcoef2(PhaseInterface phase1) { - refPhase.setTemperature(phase1.getTemperature()); - refPhase.setPressure(phase1.getPressure()); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 1, 0, 1.0); - refPhase.getComponent(0).fugcoef(refPhase); - - double liquidPhaseFugacity = - refPhase.getComponent(0).getFugacityCoefficient() * refPhase.getPressure(); - - // calculating and setting heat of fusion - double Tf = 374.5 + 0.2617 * getMolarMass() - 20.172 / getMolarMass(); - double Hf = (0.1426 * getMolarMass() * Tf) * 4.184 * 1000; - setHeatOfFusion(Hf); - - // calculating delta Cp - double deltaCpSL = - (0.3033 * getMolarMass() - 4.635e-4 * getMolarMass() * phase1.getTemperature()) - * 4.1868; - - // poynting corretion will be insignificant at low pressures ????? skipping that - // for now - double solMolVol = 0.0; - double liqMolVol = 0.0; - double deltaSolVol = (solMolVol - liqMolVol); - - // calculating activity coefficient according to Wilson - double solidActivityCoefficient = getWilsonActivityCoefficient(phase1); - // SolidFug = getx() * liquidPhaseFugacity * Math.exp((-getHeatOfFusion() / (R * - // phase1.getTemperature()) * (1.0 - phase1.getTemperature() / - // getTriplePointTemperature())) ); - - SolidFug = getx() * liquidPhaseFugacity - * Math.exp(-getHeatOfFusion() / (R * phase1.getTemperature()) - * (1.0 - phase1.getTemperature() / getTriplePointTemperature()) - + deltaCpSL / (R * phase1.getTemperature()) - * (getTriplePointTemperature() - phase1.getTemperature()) - - deltaCpSL / R - * Math.log(getTriplePointTemperature() / phase1.getTemperature()) - - deltaSolVol * (1.0 - phase1.getPressure()) - / (R * phase1.getTemperature())); - - fugacityCoefficient = solidActivityCoefficient * SolidFug / (phase1.getPressure() * getx()); - logFugacityCoefficient = Math.log(fugacityCoefficient); - return fugacityCoefficient; + return fugcoef2(phase1); + } + + /** {@inheritDoc} */ + @Override + public double fugcoef2(PhaseInterface phase1) { + refPhase.setTemperature(phase1.getTemperature()); + refPhase.setPressure(phase1.getPressure()); + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 1, PhaseType.byValue(0), 1.0); + refPhase.getComponent(0).fugcoef(refPhase); + + double liquidPhaseFugacity = + refPhase.getComponent(0).getFugacityCoefficient() * refPhase.getPressure(); + + // calculating and setting heat of fusion + double Tf = 374.5 + 0.2617 * getMolarMass() - 20.172 / getMolarMass(); + double Hf = (0.1426 * getMolarMass() * Tf) * 4.184 * 1000; + setHeatOfFusion(Hf); + + // calculating delta Cp + double deltaCpSL = + (0.3033 * getMolarMass() - 4.635e-4 * getMolarMass() * phase1.getTemperature()) * 4.1868; + + // poynting corretion will be insignificant at low pressures ????? skipping that + // for now + double solMolVol = 0.0; + double liqMolVol = 0.0; + double deltaSolVol = (solMolVol - liqMolVol); + + // calculating activity coefficient according to Wilson + double solidActivityCoefficient = getWilsonActivityCoefficient(phase1); + // SolidFug = getx() * liquidPhaseFugacity * Math.exp((-getHeatOfFusion() / (R * + // phase1.getTemperature()) * (1.0 - phase1.getTemperature() / + // getTriplePointTemperature())) ); + + SolidFug = getx() * liquidPhaseFugacity + * Math.exp(-getHeatOfFusion() / (R * phase1.getTemperature()) + * (1.0 - phase1.getTemperature() / getTriplePointTemperature()) + + deltaCpSL / (R * phase1.getTemperature()) + * (getTriplePointTemperature() - phase1.getTemperature()) + - deltaCpSL / R * Math.log(getTriplePointTemperature() / phase1.getTemperature()) + - deltaSolVol * (1.0 - phase1.getPressure()) / (R * phase1.getTemperature())); + + fugacityCoefficient = solidActivityCoefficient * SolidFug / (phase1.getPressure() * getx()); + return fugacityCoefficient; + } + + /** + *

+ * getWilsonActivityCoefficient. + *

+ * + * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getWilsonActivityCoefficient(PhaseInterface phase1) { + double sum1 = 0.0; + double sum2 = 0.0; + double tempSum = 0.0; + + for (int i = 0; i < phase1.getNumberOfComponents(); i++) { + sum1 += phase1.getComponent(i).getx() * ((ComponentWaxWilson) phase1.getComponent(i)) + .getCharEnergyParamter(phase1, this.getComponentNumber(), i); + tempSum = 0.0; + for (int j = 0; j < phase1.getNumberOfComponents(); j++) { + tempSum += phase1.getComponent(j).getx() + * ((ComponentWaxWilson) phase1.getComponent(j)).getCharEnergyParamter(phase1, i, j); + } + sum2 += phase1.getComponent(i).getx() * ((ComponentWaxWilson) phase1.getComponent(i)) + .getCharEnergyParamter(phase1, i, this.getComponentNumber()) / tempSum; } - /** - *

- * getWilsonActivityCoefficient. - *

- * - * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getWilsonActivityCoefficient(PhaseInterface phase1) { - double sum1 = 0.0; - double sum2 = 0.0; - double tempSum = 0.0; - - for (int i = 0; i < phase1.getNumberOfComponents(); i++) { - sum1 += phase1.getComponent(i).getx() * ((ComponentWaxWilson) phase1.getComponent(i)) - .getCharEnergyParamter(phase1, this.getComponentNumber(), i); - tempSum = 0.0; - for (int j = 0; j < phase1.getNumberOfComponents(); j++) { - tempSum += phase1.getComponent(j).getx() - * ((ComponentWaxWilson) phase1.getComponent(j)) - .getCharEnergyParamter(phase1, i, j); - } - sum2 += phase1.getComponent(i).getx() * ((ComponentWaxWilson) phase1.getComponent(i)) - .getCharEnergyParamter(phase1, i, this.getComponentNumber()) / tempSum; - } - - return Math.exp(1.0 - Math.log(sum1) - sum2); + return Math.exp(1.0 - Math.log(sum1) - sum2); + } + + /** + *

+ * getCharEnergyParamter. + *

+ * + * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object + * @param comp1 a int + * @param comp2 a int + * @return a double + */ + public double getCharEnergyParamter(PhaseInterface phase1, int comp1, int comp2) { + double param1 = 0.0; + // ((ComponentWaxWilson) phase1.getComponent(comp1)).getWilsonInteractionEnergy(phase1); + double param2 = 0.0; + // ((ComponentWaxWilson) phase1.getComponent(comp2)).getWilsonInteractionEnergy(phase1); + + // this need to be corrected according to how to select energy of shortest + // carbon molecule ..... + if ((phase1.getComponent(comp1).getMolarMass() - 1.0e-10) > phase1.getComponent(comp2) + .getMolarMass()) { + // enthalpy sublimation nC16 134.9kj/mol; nC14 117.6kj/mol + // param1 = -2/6*(117.6 * 1e3 - R*phase1.getTemperature()); + // param2 = -2/6*(134.9 * 1e3 - R*phase1.getTemperature()); + param1 = ((ComponentWaxWilson) phase1.getComponent(comp2)).getWilsonInteractionEnergy(phase1); + param2 = ((ComponentWaxWilson) phase1.getComponent(comp1)).getWilsonInteractionEnergy(phase1); + } else { + param1 = 1 - 0; + param2 = 1.0; } - /** - *

- * getCharEnergyParamter. - *

- * - * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object - * @param comp1 a int - * @param comp2 a int - * @return a double - */ - public double getCharEnergyParamter(PhaseInterface phase1, int comp1, int comp2) { - double param1 = 0.0; // ((ComponentWaxWilson) - // phase1.getComponent(comp1)).getWilsonInteractionEnergy(phase1); - double param2 = 0.0;// ((ComponentWaxWilson) - // phase1.getComponent(comp2)).getWilsonInteractionEnergy(phase1); - // this need to be corrected accordint to how to select energy of shortest - // carbon molecule ..... - if ((phase1.getComponent(comp1).getMolarMass() - 1.0e-10) > phase1.getComponent(comp2) - .getMolarMass()) { - // enthalpy sublimation nC16 134.9kj/mol; nC14 117.6kj/mol - // param1 = -2/6*(117.6 * 1e3 - R*phase1.getTemperature()); - // param2 = -2/6*(134.9 * 1e3 - R*phase1.getTemperature()); - param1 = ((ComponentWaxWilson) phase1.getComponent(comp2)) - .getWilsonInteractionEnergy(phase1); - param2 = ((ComponentWaxWilson) phase1.getComponent(comp1)) - .getWilsonInteractionEnergy(phase1); - } else { - param1 = 1 - 0; - param2 = 1.0; - } - - return Math.exp( - -(param2 - param1) / (ThermodynamicConstantsInterface.R * phase1.getTemperature())); - } - - /** - *

- * getWilsonInteractionEnergy. - *

- * - * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getWilsonInteractionEnergy(PhaseInterface phase1) { - double coordinationNumber = 6.0; - - double carbonnumber = getMolarMass() / 0.014; - // calculating vaporization enthalpy - double x = 1.0 - phase1.getTemperature() / getTC(); - double deltaHvap0 = 5.2804 * Math.pow(x, 0.3333) + 12.865 * Math.pow(x, 0.8333) - + 1.171 * Math.pow(x, 1.2083) - 13.166 * x + 0.4858 * Math.pow(x, 2.0) - - 1.088 * Math.pow(x, 3.0); - double deltaHvap1 = 0.80022 * Math.pow(x, 0.3333) + 273.23 * Math.pow(x, 0.8333) - + 465.08 * Math.pow(x, 1.2083) - 638.51 * x - 145.12 * Math.pow(x, 2.0) - + 74.049 * Math.pow(x, 3.0); - double deltaHvap2 = 7.2543 * Math.pow(x, 0.3333) - 346.45 * Math.pow(x, 0.8333) - - 610.48 * Math.pow(x, 1.2083) + 839.89 * x + 160.05 * Math.pow(x, 2.0) - - 50.711 * Math.pow(x, 3.0); - - double omega = - 0.0520750 + 0.0448946 * carbonnumber - 0.000185397 * carbonnumber * carbonnumber; - - double deltaHvap = R * getTC() - * ((deltaHvap0 + omega * deltaHvap1 + omega * omega * deltaHvap2) * 4.1868); - - // calculating transition enthalpy - double deltaHtot = (3.7791 * carbonnumber - 12.654) * 1000; - - /// should not be a cooma - cirrected Tosin 08.05.2013 - - // double Ttrans = 420.42 - 134784.0 * Math.exp(-4.344 * Math.pow(carbonnumber + 6.592, - /// 0.14627)); - double Tf = 374.5 + 0.2617 * getMolarMass() - 20.172 / getMolarMass(); - double deltaHf = (0.1426 * getMolarMass() * Tf) * 4.1868; - double deltaHtrans = (deltaHtot - deltaHf); - - double deltaHsub = (deltaHvap + deltaHf + deltaHtrans); - - return -2.0 / coordinationNumber * (deltaHsub - R * phase1.getTemperature()); - } + return Math + .exp(-(param2 - param1) / (ThermodynamicConstantsInterface.R * phase1.getTemperature())); + } + + /** + *

+ * getWilsonInteractionEnergy. + *

+ * + * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getWilsonInteractionEnergy(PhaseInterface phase1) { + double coordinationNumber = 6.0; + + double carbonnumber = getMolarMass() / 0.014; + // calculating vaporization enthalpy + double x = 1.0 - phase1.getTemperature() / getTC(); + double deltaHvap0 = + 5.2804 * Math.pow(x, 0.3333) + 12.865 * Math.pow(x, 0.8333) + 1.171 * Math.pow(x, 1.2083) + - 13.166 * x + 0.4858 * Math.pow(x, 2.0) - 1.088 * Math.pow(x, 3.0); + double deltaHvap1 = + 0.80022 * Math.pow(x, 0.3333) + 273.23 * Math.pow(x, 0.8333) + 465.08 * Math.pow(x, 1.2083) + - 638.51 * x - 145.12 * Math.pow(x, 2.0) + 74.049 * Math.pow(x, 3.0); + double deltaHvap2 = + 7.2543 * Math.pow(x, 0.3333) - 346.45 * Math.pow(x, 0.8333) - 610.48 * Math.pow(x, 1.2083) + + 839.89 * x + 160.05 * Math.pow(x, 2.0) - 50.711 * Math.pow(x, 3.0); + + double omega = 0.0520750 + 0.0448946 * carbonnumber - 0.000185397 * carbonnumber * carbonnumber; + + double deltaHvap = + R * getTC() * ((deltaHvap0 + omega * deltaHvap1 + omega * omega * deltaHvap2) * 4.1868); + + // calculating transition enthalpy + double deltaHtot = (3.7791 * carbonnumber - 12.654) * 1000; + + // should not be a cooma - cirrected Tosin 08.05.2013 + + // double Ttrans = 420.42 - 134784.0 * Math.exp(-4.344 * Math.pow(carbonnumber + 6.592, + // 0.14627)); + double Tf = 374.5 + 0.2617 * getMolarMass() - 20.172 / getMolarMass(); + double deltaHf = (0.1426 * getMolarMass() * Tf) * 4.1868; + double deltaHtrans = (deltaHtot - deltaHf); + + double deltaHsub = (deltaHvap + deltaHf + deltaHtrans); + + return -2.0 / coordinationNumber * (deltaHsub - R * phase1.getTemperature()); + } } diff --git a/src/main/java/neqsim/thermo/component/ComponentWonWax.java b/src/main/java/neqsim/thermo/component/ComponentWonWax.java index 14ed146938..0b46ae5c61 100644 --- a/src/main/java/neqsim/thermo/component/ComponentWonWax.java +++ b/src/main/java/neqsim/thermo/component/ComponentWonWax.java @@ -3,6 +3,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -13,129 +14,125 @@ * @version $Id: $Id */ public class ComponentWonWax extends ComponentSolid { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(ComponentWonWax.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ComponentWonWax.class); - /** - *

- * Constructor for ComponentWonWax. - *

- * - * @param component_name a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compnumber a int - */ - public ComponentWonWax(String component_name, double moles, double molesInPhase, - int compnumber) { - super(component_name, moles, molesInPhase, compnumber); - } + /** + *

+ * Constructor for ComponentWonWax. + *

+ * + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. + */ + public ComponentWonWax(String name, double moles, double molesInPhase, int compIndex) { + super(name, moles, molesInPhase, compIndex); + } - // Uses Claperyons equation to calculate the solid fugacity - /** {@inheritDoc} */ - @Override - public double fugcoef(PhaseInterface phase1) { - if (!isWaxFormer()) { - return 1.0e30; - } - return fugcoef2(phase1); + /** {@inheritDoc} */ + @Override + public double fugcoef(PhaseInterface phase1) { + if (!isWaxFormer()) { + fugacityCoefficient = 1.0e30; + return fugacityCoefficient; } - /** {@inheritDoc} */ - @Override - public double fugcoef2(PhaseInterface phase1) { - refPhase.setTemperature(phase1.getTemperature()); - refPhase.setPressure(phase1.getPressure()); - refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 1, 0, 1.0); - refPhase.getComponent(0).fugcoef(refPhase); + return fugcoef2(phase1); + } - double liquidPhaseFugacity = - refPhase.getComponent(0).getFugacityCoefficient() * refPhase.getPressure(); + /** {@inheritDoc} */ + @Override + public double fugcoef2(PhaseInterface phase1) { + refPhase.setTemperature(phase1.getTemperature()); + refPhase.setPressure(phase1.getPressure()); + refPhase.init(refPhase.getNumberOfMolesInPhase(), 1, 1, PhaseType.byValue(0), 1.0); + refPhase.getComponent(0).fugcoef(refPhase); - double solidActivityCoefficient = getWonActivityCoefficient(phase1); - logger.info("activity coef Won " + solidActivityCoefficient); - SolidFug = getx() * liquidPhaseFugacity - * Math.exp(-getHeatOfFusion() / (R * phase1.getTemperature()) - * (1.0 - phase1.getTemperature() / getTriplePointTemperature())); + double liquidPhaseFugacity = + refPhase.getComponent(0).getFugacityCoefficient() * refPhase.getPressure(); - fugacityCoefficient = solidActivityCoefficient * SolidFug / (phase1.getPressure() * getx()); - logFugacityCoefficient = Math.log(fugacityCoefficient); - return fugacityCoefficient; - } + double solidActivityCoefficient = getWonActivityCoefficient(phase1); + logger.info("activity coef Won " + solidActivityCoefficient); + SolidFug = + getx() * liquidPhaseFugacity * Math.exp(-getHeatOfFusion() / (R * phase1.getTemperature()) + * (1.0 - phase1.getTemperature() / getTriplePointTemperature())); - // public double fugcoef(PhaseInterface phase, int numberOfComps, double temp, - // double pres){ - /** - *

- * getWonActivityCoefficient. - *

- * - * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getWonActivityCoefficient(PhaseInterface phase1) { - double TetaAvg = 0.0; - double gamma = 0.0; - for (int i = 0; i < phase1.getNumberOfComponents(); i++) { - double tempSum = 0.0; - for (int j = 0; j < phase1.getNumberOfComponents(); j++) { - tempSum += phase1.getComponent(j).getx() - * (((ComponentWonWax) phase1.getComponent(j)).getWonVolume(phase1)); - } - TetaAvg += phase1.getComponent(i).getx() - * (((ComponentWonWax) phase1.getComponent(i)).getWonVolume(phase1)) / tempSum - * ((ComponentWonWax) phase1.getComponent(i)).getWonParam(phase1); - } - gamma = Math.exp(getWonVolume(phase1) * Math.pow((TetaAvg - getWonParam(phase1)), 2) - / (1.9858775 * phase1.getTemperature())); + fugacityCoefficient = solidActivityCoefficient * SolidFug / (phase1.getPressure() * getx()); + return fugacityCoefficient; + } - return gamma; + /** + *

+ * getWonActivityCoefficient. + *

+ * + * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getWonActivityCoefficient(PhaseInterface phase1) { + double TetaAvg = 0.0; + double gamma = 0.0; + for (int i = 0; i < phase1.getNumberOfComponents(); i++) { + double tempSum = 0.0; + for (int j = 0; j < phase1.getNumberOfComponents(); j++) { + tempSum += phase1.getComponent(j).getx() + * (((ComponentWonWax) phase1.getComponent(j)).getWonVolume(phase1)); + } + TetaAvg += phase1.getComponent(i).getx() + * (((ComponentWonWax) phase1.getComponent(i)).getWonVolume(phase1)) / tempSum + * ((ComponentWonWax) phase1.getComponent(i)).getWonParam(phase1); } + gamma = Math.exp(getWonVolume(phase1) * Math.pow((TetaAvg - getWonParam(phase1)), 2) + / (1.9858775 * phase1.getTemperature())); - /** - *

- * getWonVolume. - *

- * - * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getWonVolume(PhaseInterface phase1) { - double d25 = 0.8155 + 0.6273e-4 * getMolarMass() - 13.06 / getMolarMass(); + return gamma; + } - return getMolarMass() / d25; - } + /** + *

+ * getWonVolume. + *

+ * + * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getWonVolume(PhaseInterface phase1) { + double d25 = 0.8155 + 0.6273e-4 * getMolarMass() - 13.06 / getMolarMass(); - /** - *

- * getWonParam. - *

- * - * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getWonParam(PhaseInterface phase1) { - // calculation of Heat of fusion - double Tf = 374.5 * 0.02617 * getMolarMass() - 20172 / getMolarMass(); - double Hf = 0.1426 * getMolarMass() * Tf; + return getMolarMass() / d25; + } - // calculation of Enthalpy of evaporation - double x = 1.0 - phase1.getTemperature() / getTC(); - double deltaHvap0 = 5.2804 * Math.pow(x, 0.3333) + 12.865 * Math.pow(x, 0.8333) - + 1.171 * Math.pow(x, 1.2083) - 13.166 * x + 0.4858 * Math.pow(x, 2.0) - - 1.088 * Math.pow(x, 3.0); - double deltaHvap1 = 0.80022 * Math.pow(x, 0.3333) + 273.23 * Math.pow(x, 0.8333) - + 465.08 * Math.pow(x, 1.2083) - 638.51 * x - 145.12 * Math.pow(x, 2.0) - - 74.049 * Math.pow(x, 3.0); - double deltaHvap2 = 7.2543 * Math.pow(x, 0.3333) - 346.45 * Math.pow(x, 0.8333) - - 610.48 * Math.pow(x, 1.2083) + 839.89 * x + 160.05 * Math.pow(x, 2.0) - - 50.711 * Math.pow(x, 3.0); - double carbonnumber = getMolarMass() / 0.014; - double omega = - 0.0520750 + 0.0448946 * carbonnumber - 0.000185397 * carbonnumber * carbonnumber; - double Hvap = 1.9858775 * getTC() - * (deltaHvap0 + omega * deltaHvap1 + omega * omega * deltaHvap2); - return Math.sqrt((Hvap - Hf - 1.9858775 * phase1.getTemperature()) / (getMolarMass() - / (0.8155 + 0.6273e-4 * getMolarMass() - 13.06 / getMolarMass()))); - } + /** + *

+ * getWonParam. + *

+ * + * @param phase1 a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getWonParam(PhaseInterface phase1) { + // calculation of Heat of fusion + double Tf = 374.5 * 0.02617 * getMolarMass() - 20172 / getMolarMass(); + double Hf = 0.1426 * getMolarMass() * Tf; + + // calculation of Enthalpy of evaporation + double x = 1.0 - phase1.getTemperature() / getTC(); + double deltaHvap0 = + 5.2804 * Math.pow(x, 0.3333) + 12.865 * Math.pow(x, 0.8333) + 1.171 * Math.pow(x, 1.2083) + - 13.166 * x + 0.4858 * Math.pow(x, 2.0) - 1.088 * Math.pow(x, 3.0); + double deltaHvap1 = + 0.80022 * Math.pow(x, 0.3333) + 273.23 * Math.pow(x, 0.8333) + 465.08 * Math.pow(x, 1.2083) + - 638.51 * x - 145.12 * Math.pow(x, 2.0) - 74.049 * Math.pow(x, 3.0); + double deltaHvap2 = + 7.2543 * Math.pow(x, 0.3333) - 346.45 * Math.pow(x, 0.8333) - 610.48 * Math.pow(x, 1.2083) + + 839.89 * x + 160.05 * Math.pow(x, 2.0) - 50.711 * Math.pow(x, 3.0); + double carbonnumber = getMolarMass() / 0.014; + double omega = 0.0520750 + 0.0448946 * carbonnumber - 0.000185397 * carbonnumber * carbonnumber; + double Hvap = + 1.9858775 * getTC() * (deltaHvap0 + omega * deltaHvap1 + omega * omega * deltaHvap2); + return Math.sqrt((Hvap - Hf - 1.9858775 * phase1.getTemperature()) + / (getMolarMass() / (0.8155 + 0.6273e-4 * getMolarMass() - 13.06 / getMolarMass()))); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AtractiveTermMatCopPRUMRNew.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AtractiveTermMatCopPRUMRNew.java index a2d85c4a08..d2acf67d07 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AtractiveTermMatCopPRUMRNew.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AtractiveTermMatCopPRUMRNew.java @@ -3,16 +3,25 @@ import neqsim.thermo.component.ComponentEosInterface; /** + *

+ * AtractiveTermMatCopPRUMRNew class. + *

* * @author esol - * + * @version $Id: $Id */ public class AtractiveTermMatCopPRUMRNew extends AttractiveTermMatCopPRUMR { - private static final long serialVersionUID = 1000; double orgpar = 0.0; boolean useStandardAlphaForSupercritical = false; + /** + *

+ * Constructor for AtractiveTermMatCopPRUMRNew. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ public AtractiveTermMatCopPRUMRNew(ComponentEosInterface component) { super(component); m = (0.384401 + 1.52276 * component.getAcentricFactor() @@ -21,6 +30,14 @@ public AtractiveTermMatCopPRUMRNew(ComponentEosInterface component) { - 0.001976 * Math.pow(component.getAcentricFactor(), 4.0)); } + /** + *

+ * Constructor for AtractiveTermMatCopPRUMRNew. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param params an array of type double + */ public AtractiveTermMatCopPRUMRNew(ComponentEosInterface component, double[] params) { this(component); parameters = new double[params.length]; @@ -38,13 +55,13 @@ public AtractiveTermMatCopPRUMRNew(ComponentEosInterface component, double[] par parameters[3] = -0.057788; parameters[4] = 0.017702; } - //if (component.getName().equals("water")) { - //parameters[0] = 0.91256735118818810000000000; - // parameters[1] = -0.2872243639795234400000000; - //parameters[2] = 0.239526763058374250000000000; - //parameters[3] = 0.0; - //parameters[4] = 0.0; - //} + // if (component.getName().equals("water")) { + // parameters[0] = 0.91256735118818810000000000; + // parameters[1] = -0.2872243639795234400000000; + // parameters[2] = 0.239526763058374250000000000; + // parameters[3] = 0.0; + // parameters[4] = 0.0; + // } if (component.getName().equals("water")) { parameters[0] = 0.9130000000000; @@ -71,18 +88,20 @@ public AtractiveTermMatCopPRUMRNew(ComponentEosInterface component, double[] par } } + /** {@inheritDoc} */ @Override public AtractiveTermMatCopPRUMRNew clone() { AtractiveTermMatCopPRUMRNew atractiveTerm = null; try { atractiveTerm = (AtractiveTermMatCopPRUMRNew) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } return atractiveTerm; } + /** {@inheritDoc} */ @Override public double alpha(double temperature) { if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 @@ -98,6 +117,7 @@ public double alpha(double temperature) { } } + /** {@inheritDoc} */ @Override public double aT(double temperature) { if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 @@ -108,6 +128,7 @@ public double aT(double temperature) { } } + /** {@inheritDoc} */ @Override public double diffalphaT(double temperature) { if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 @@ -128,9 +149,9 @@ public double diffalphaT(double temperature) { - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) / tcrizatr - 2.0 * parameters[3] * Math.pow(1.0 - Math.sqrt(Tr), 3.0) / tcrizatr - 5.0 / 2.0 * parameters[4] * Math.pow(1.0 - Math.sqrt(Tr), 4.0) / tcrizatr); - } + /** {@inheritDoc} */ @Override public double diffdiffalphaT(double temperature) { if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 @@ -164,7 +185,7 @@ public double diffdiffalphaT(double temperature) { + 5.0 / 4.0 * parameters[4] * Math.pow(1.0 - Math.sqrt(Tr), 4.0) / Tc2Trpower32); } - + /** {@inheritDoc} */ @Override public double diffaT(double temperature) { if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 @@ -175,6 +196,7 @@ public double diffaT(double temperature) { } } + /** {@inheritDoc} */ @Override public double diffdiffaT(double temperature) { if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermBaseClass.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermBaseClass.java index ec0b61d49b..859ac50c09 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermBaseClass.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermBaseClass.java @@ -3,6 +3,7 @@ * * Created on 13. mai 2001, 21:58 */ + package neqsim.thermo.component.attractiveEosTerm; import org.apache.logging.log4j.LogManager; @@ -18,123 +19,123 @@ * @version $Id: $Id */ public class AttractiveTermBaseClass implements AttractiveTermInterface { - private static final long serialVersionUID = 1000; - - private ComponentEosInterface component = null; - protected double m; - protected double parameters[] = new double[3]; - protected double parametersSolid[] = new double[3]; - - static Logger logger = LogManager.getLogger(AttractiveTermBaseClass.class); - - /** - *

- * Constructor for AttractiveTermBaseClass. - *

- */ - public AttractiveTermBaseClass() {} - - /** - *

- * Constructor for AttractiveTermBaseClass. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermBaseClass(ComponentEosInterface component) { - this.setComponent(component); - } - - /** {@inheritDoc} */ - @Override - public void setm(double val) { - this.m = val; - logger.info("does not solve for accentric when new m is set... in AccentricBase class"); - } - - /** {@inheritDoc} */ - @Override - public AttractiveTermBaseClass clone() { - AttractiveTermBaseClass attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermBaseClass) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // atSystem.out.println("m " + m);ractiveTerm.parameters = (double[]) - // parameters.clone(); - // System.arraycopy(parameters,0, attractiveTerm.parameters, 0, - // parameters.length); - return attractiveTerm; - } - - /** {@inheritDoc} */ - @Override - public void init() {} - - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - return 0; - } - - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return 0; - } - - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta(); - } - - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - return 1.0; - } - - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return 0.0; - } - - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - return 0.0; - } - - /** {@inheritDoc} */ - @Override - public void setParameters(int i, double val) { - parameters[i] = val; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(AttractiveTermBaseClass.class); + + private ComponentEosInterface component = null; + protected double m; + protected double[] parameters = new double[3]; + protected double[] parametersSolid = new double[3]; + + /** + *

+ * Constructor for AttractiveTermBaseClass. + *

+ */ + public AttractiveTermBaseClass() {} + + /** + *

+ * Constructor for AttractiveTermBaseClass. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermBaseClass(ComponentEosInterface component) { + this.setComponent(component); + } + + /** {@inheritDoc} */ + @Override + public void setm(double val) { + this.m = val; + logger.info("does not solve for accentric when new m is set... in AccentricBase class"); + } + + /** {@inheritDoc} */ + @Override + public AttractiveTermBaseClass clone() { + AttractiveTermBaseClass attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermBaseClass) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double getParameters(int i) { - return parameters[i]; - } - - /** - * @return ComponentEosInterface - */ - ComponentEosInterface getComponent() { - return component; - } - - /** - * @param component input components - * - * - */ - - void setComponent(ComponentEosInterface component) { - this.component = component; - } + // atSystem.out.println("m " + m);ractiveTerm.parameters = (double[]) + // parameters.clone(); + // System.arraycopy(parameters,0, attractiveTerm.parameters, 0, + // parameters.length); + return attractiveTerm; + } + + /** {@inheritDoc} */ + @Override + public void init() {} + + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + return 0; + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return 0; + } + + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta(); + } + + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + return 1.0; + } + + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return 0.0; + } + + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + return 0.0; + } + + /** {@inheritDoc} */ + @Override + public void setParameters(int i, double val) { + parameters[i] = val; + } + + /** {@inheritDoc} */ + @Override + public double getParameters(int i) { + return parameters[i]; + } + + /** + * Get component. + * + * @return ComponentEosInterface. + */ + ComponentEosInterface getComponent() { + return component; + } + + /** + * Set Component. + * + * @param component input components. + */ + void setComponent(ComponentEosInterface component) { + this.component = component; + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermCPAstatoil.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermCPAstatoil.java index deb662094f..348dd9cd7e 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermCPAstatoil.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermCPAstatoil.java @@ -11,144 +11,142 @@ * @version $Id: $Id */ public class AttractiveTermCPAstatoil extends AttractiveTermSrk { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double orgpar = 0.0; + double orgpar = 0.0; - /** - *

- * Constructor for AttractiveTermCPAstatoil. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermCPAstatoil(ComponentEosInterface component) { - super(component); - m = (0.48 + 1.574 * component.getAcentricFactor() - - 0.176 * component.getAcentricFactor() * component.getAcentricFactor()); - if (component.getName().equals("waterG")) { - parameters[0] = 0.7892765953; - parameters[1] = -1.0606510837; - parameters[2] = 2.2071936510; - } else if (component.getName().equals("MEG2")) { - parameters[0] = 0.8581331725; - parameters[1] = -1.0053180150; - parameters[2] = 1.2736063639; - } else if (component.getName().equals("TEG2")) { - parameters[0] = 1.0008858863; - parameters[1] = 1.8649645470; - parameters[2] = -4.6720397496; - } else if (component.getName().equals("TEG")) { - parameters[0] = 0.903477158616734; - parameters[1] = 1.514853438; - parameters[2] = -1.86430399826; - } else { - parameters[0] = m; - parameters[1] = 0; - parameters[2] = 0; - } + /** + *

+ * Constructor for AttractiveTermCPAstatoil. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermCPAstatoil(ComponentEosInterface component) { + super(component); + m = (0.48 + 1.574 * component.getAcentricFactor() + - 0.176 * component.getAcentricFactor() * component.getAcentricFactor()); + if (component.getName().equals("waterG")) { + parameters[0] = 0.7892765953; + parameters[1] = -1.0606510837; + parameters[2] = 2.2071936510; + } else if (component.getName().equals("MEG2")) { + parameters[0] = 0.8581331725; + parameters[1] = -1.0053180150; + parameters[2] = 1.2736063639; + } else if (component.getName().equals("TEG2")) { + parameters[0] = 1.0008858863; + parameters[1] = 1.8649645470; + parameters[2] = -4.6720397496; + } else if (component.getName().equals("TEG")) { + parameters[0] = 0.903477158616734; + parameters[1] = 1.514853438; + parameters[2] = -1.86430399826; + } else { + parameters[0] = m; + parameters[1] = 0; + parameters[2] = 0; } + } - /** {@inheritDoc} */ - @Override - public AttractiveTermCPAstatoil clone() { - AttractiveTermCPAstatoil attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermCPAstatoil) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - // attractiveTerm.parameters = (double[]) parameters.clone(); - // System.arraycopy(parameters,0, attractiveTerm.parameters, 0, - // parameters.length); - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermCPAstatoil clone() { + AttractiveTermCPAstatoil attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermCPAstatoil) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + // attractiveTerm.parameters = (double[]) parameters.clone(); + // System.arraycopy(parameters,0, attractiveTerm.parameters, 0, + // parameters.length); + return attractiveTerm; + } - /** {@inheritDoc} */ - @Override - public void init() { - super.init(); - if (!getComponent().getName().equals("TEG")) { - parameters[0] = m; - } + /** {@inheritDoc} */ + @Override + public void init() { + super.init(); + if (!getComponent().getName().equals("TEG")) { + parameters[0] = m; } + } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - double Tr = temperature / getComponent().getTC(); - double temp1 = 1.0 - Math.sqrt(Tr); - double var = 1.0 + parameters[0] * temp1 + parameters[1] * temp1 * temp1 - + parameters[2] * temp1 * temp1 * temp1; - return var * var;// Math.pow(1.0+parameters[0]*(1.0-Math.sqrt(Tr))+parameters[1]*temp1*temp1+parameters[2]*temp1*temp1*temp1,2.0); - } + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + double Tr = temperature / getComponent().getTC(); + double temp1 = 1.0 - Math.sqrt(Tr); + double var = 1.0 + parameters[0] * temp1 + parameters[1] * temp1 * temp1 + + parameters[2] * temp1 * temp1 * temp1; + return var * var; + // Math.pow(1.0+parameters[0] * + // (1.0-Math.sqrt(Tr))+parameters[1]*temp1*temp1+parameters[2]*temp1*temp1*temp1,2.0); + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - if (temperature / getComponent().getTC() > 1.0) { - return super.aT(temperature); - } else { - return getComponent().geta() * alpha(temperature); - } + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + if (temperature / getComponent().getTC() > 1.0) { + return super.aT(temperature); + } else { + return getComponent().geta() * alpha(temperature); } + } - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - double Tr = temperature / getComponent().getTC(); - double TC = getComponent().getTC(); - return 2.0 - * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) - * (-parameters[0] / Math.sqrt(Tr) / TC / 2.0 - - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC - - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr) / TC); - } + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + double Tr = temperature / getComponent().getTC(); + double TC = getComponent().getTC(); + return 2.0 + * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) + * (-parameters[0] / Math.sqrt(Tr) / TC / 2.0 + - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC + - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) / Math.sqrt(Tr) / TC); + } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - double Tr = temperature / getComponent().getTC(); - double TC = getComponent().getTC(); - return 2.0 - * Math.pow(-parameters[0] / Math.sqrt(Tr) / TC / 2.0 - - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC - - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr) / TC, - 2.0) - + 2.0 * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) - * (parameters[0] / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 4.0 - + parameters[1] / temperature / TC / 2.0 - + parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr * Tr * Tr) - / (TC * TC) / 2.0 - + 3.0 / 2.0 * parameters[2] * (1.0 - Math.sqrt(Tr)) / temperature - / TC - + 3.0 / 4.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr * Tr * Tr) / (TC * TC)); - } + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + double Tr = temperature / getComponent().getTC(); + double TC = getComponent().getTC(); + return 2.0 * Math.pow(-parameters[0] / Math.sqrt(Tr) / TC / 2.0 + - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC + - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) / Math.sqrt(Tr) / TC, + 2.0) + + 2.0 + * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) + * (parameters[0] / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 4.0 + + parameters[1] / temperature / TC / 2.0 + + parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 2.0 + + 3.0 / 2.0 * parameters[2] * (1.0 - Math.sqrt(Tr)) / temperature / TC + + 3.0 / 4.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + / Math.sqrt(Tr * Tr * Tr) / (TC * TC)); + } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - if (temperature / getComponent().getTC() > 1.0) { - return super.diffaT(temperature); - } else { - return getComponent().geta() * diffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + if (temperature / getComponent().getTC() > 1.0) { + return super.diffaT(temperature); + } else { + return getComponent().geta() * diffalphaT(temperature); } + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - if (temperature / getComponent().getTC() > 1.0) { - return super.diffdiffaT(temperature); - } else { - return getComponent().geta() * diffdiffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + if (temperature / getComponent().getTC() > 1.0) { + return super.diffdiffaT(temperature); + } else { + return getComponent().geta() * diffdiffalphaT(temperature); } + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermGERG.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermGERG.java index bd5bbb30db..77974d57ec 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermGERG.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermGERG.java @@ -11,159 +11,152 @@ * @version $Id: $Id */ public class AttractiveTermGERG extends AttractiveTermPr { - private static final long serialVersionUID = 1000; - protected double parametersGERG[] = {0.905436, -0.213781, 0.26005}; - protected double parametersSolidGERG[] = {0.106025, 2.683845, -4.75638}; + private static final long serialVersionUID = 1000; + protected double[] parametersGERG = {0.905436, -0.213781, 0.26005}; + protected double[] parametersSolidGERG = {0.106025, 2.683845, -4.75638}; - /** - *

- * Constructor for AttractiveTermGERG. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermGERG(ComponentEosInterface component) { - super(component); - if (component.getName().equals("water")) { - System.arraycopy(component.getMatiascopemanParams(), 0, this.parameters, 0, - component.getMatiascopemanParams().length); - System.arraycopy(component.getMatiascopemanSolidParams(), 0, this.parametersSolid, 0, - component.getMatiascopemanSolidParams().length); - } + /** + *

+ * Constructor for AttractiveTermGERG. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermGERG(ComponentEosInterface component) { + super(component); + if (component.getName().equals("water")) { + System.arraycopy(component.getMatiascopemanParams(), 0, this.parameters, 0, + component.getMatiascopemanParams().length); + System.arraycopy(component.getMatiascopemanSolidParams(), 0, this.parametersSolid, 0, + component.getMatiascopemanSolidParams().length); } + } - /** - *

- * AttractiveTermGERG. - *

- * - * @return a {@link java.lang.Object} object - */ - public Object AttractiveTermGERG() { - AttractiveTermGERG attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermGERG) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return attractiveTerm; + /** + *

+ * AttractiveTermGERG. + *

+ * + * @return a {@link java.lang.Object} object + */ + public Object AttractiveTermGERG() { + AttractiveTermGERG attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermGERG) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - if (getComponent().getName().equals("water")) { - if (temperature < 273.15) { - System.arraycopy(parametersSolidGERG, 0, this.parameters, 0, - parametersSolidGERG.length); - } else { - System.arraycopy(parametersGERG, 0, this.parameters, 0, parametersGERG.length); - } - // System.out.println("alpha GERG"); - double Tr = temperature / getComponent().getTC(); - return Math.pow(1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 4.0), 2.0); - } else { - return super.alpha(temperature); - } - } + return attractiveTerm; + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - if (getComponent().getName().equals("water")) { - return getComponent().geta() * alpha(temperature); - } else { - return super.aT(temperature); - } + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + if (getComponent().getName().equals("water")) { + if (temperature < 273.15) { + System.arraycopy(parametersSolidGERG, 0, this.parameters, 0, parametersSolidGERG.length); + } else { + System.arraycopy(parametersGERG, 0, this.parameters, 0, parametersGERG.length); + } + // System.out.println("alpha GERG"); + double Tr = temperature / getComponent().getTC(); + return Math.pow(1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 4.0), 2.0); + } else { + return super.alpha(temperature); } + } - /** - *

- * diffalphaTGERG. - *

- * - * @param temperature a double - * @return a double - */ - public double diffalphaTGERG(double temperature) { - // ikke beregnet riktig - if (temperature < 273.15) { - System.arraycopy(parametersSolidGERG, 0, this.parameters, 0, - parametersSolidGERG.length); - } else { - System.arraycopy(parametersGERG, 0, this.parameters, 0, parametersGERG.length); - } + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + if (getComponent().getName().equals("water")) { + return getComponent().geta() * alpha(temperature); + } else { + return super.aT(temperature); + } + } - double Tr = temperature / getComponent().getTC(); - double TC = getComponent().getTC(); - return 2.0 - * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) - * (-parameters[0] / Math.sqrt(Tr) / TC / 2.0 - - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC - - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr) / TC); + /** + *

+ * diffalphaTGERG. + *

+ * + * @param temperature a double + * @return a double + */ + public double diffalphaTGERG(double temperature) { + // ikke beregnet riktig + if (temperature < 273.15) { + System.arraycopy(parametersSolidGERG, 0, this.parameters, 0, parametersSolidGERG.length); + } else { + System.arraycopy(parametersGERG, 0, this.parameters, 0, parametersGERG.length); } - /** - *

- * diffdiffalphaTGERG. - *

- * - * @param temperature a double - * @return a double - */ - public double diffdiffalphaTGERG(double temperature) { - // ikke beregnet riktig - if (temperature < 273.15) { - System.arraycopy(parametersSolidGERG, 0, this.parameters, 0, - parametersSolidGERG.length); - } else { - System.arraycopy(parametersGERG, 0, this.parameters, 0, parametersGERG.length); - } + double Tr = temperature / getComponent().getTC(); + double TC = getComponent().getTC(); + return 2.0 + * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) + * (-parameters[0] / Math.sqrt(Tr) / TC / 2.0 + - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC + - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) / Math.sqrt(Tr) / TC); + } - double Tr = temperature / getComponent().getTC(); - double TC = getComponent().getTC(); - return 2.0 - * Math.pow(-parameters[0] / Math.sqrt(Tr) / TC / 2.0 - - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC - - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr) / TC, - 2.0) - + 2.0 * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) - * (parameters[0] / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 4.0 - + parameters[1] / temperature / TC / 2.0 - + parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr * Tr * Tr) - / (TC * TC) / 2.0 - + 3.0 / 2.0 * parameters[2] * (1.0 - Math.sqrt(Tr)) / temperature - / TC - + 3.0 / 4.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr * Tr * Tr) / (TC * TC)); + /** + *

+ * diffdiffalphaTGERG. + *

+ * + * @param temperature a double + * @return a double + */ + public double diffdiffalphaTGERG(double temperature) { + // ikke beregnet riktig + if (temperature < 273.15) { + System.arraycopy(parametersSolidGERG, 0, this.parameters, 0, parametersSolidGERG.length); + } else { + System.arraycopy(parametersGERG, 0, this.parameters, 0, parametersGERG.length); } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - if (getComponent().getName().equals("water")) { - return getComponent().geta() * diffalphaTGERG(temperature); - } else { - return super.diffaT(temperature); - } + double Tr = temperature / getComponent().getTC(); + double TC = getComponent().getTC(); + return 2.0 * Math.pow(-parameters[0] / Math.sqrt(Tr) / TC / 2.0 + - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC + - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) / Math.sqrt(Tr) / TC, + 2.0) + + 2.0 + * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) + * (parameters[0] / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 4.0 + + parameters[1] / temperature / TC / 2.0 + + parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 2.0 + + 3.0 / 2.0 * parameters[2] * (1.0 - Math.sqrt(Tr)) / temperature / TC + + 3.0 / 4.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + / Math.sqrt(Tr * Tr * Tr) / (TC * TC)); + } + + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + if (getComponent().getName().equals("water")) { + return getComponent().geta() * diffalphaTGERG(temperature); + } else { + return super.diffaT(temperature); } + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - if (getComponent().getName().equals("water")) { - return getComponent().geta() * diffdiffalphaTGERG(temperature); - } else { - return super.diffdiffaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + if (getComponent().getName().equals("water")) { + return getComponent().geta() * diffdiffalphaTGERG(temperature); + } else { + return super.diffdiffaT(temperature); } + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermInterface.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermInterface.java index 94bee07b86..66b7861443 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermInterface.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermInterface.java @@ -3,6 +3,7 @@ * * Created on 13. mai 2001, 21:54 */ + package neqsim.thermo.component.attractiveEosTerm; /** @@ -14,108 +15,108 @@ * @version $Id: $Id */ public interface AttractiveTermInterface extends Cloneable, java.io.Serializable { - /** - *

- * init. - *

- */ - public void init(); + /** + *

+ * init. + *

+ */ + public void init(); - /** - *

- * alpha. - *

- * - * @param temperature a double - * @return a double - */ - public double alpha(double temperature); + /** + *

+ * alpha. + *

+ * + * @param temperature a double + * @return a double + */ + public double alpha(double temperature); - /** - *

- * aT. - *

- * - * @param temperature a double - * @return a double - */ - public double aT(double temperature); + /** + *

+ * aT. + *

+ * + * @param temperature a double + * @return a double + */ + public double aT(double temperature); - /** - *

- * diffalphaT. - *

- * - * @param temperature a double - * @return a double - */ - public double diffalphaT(double temperature); + /** + *

+ * diffalphaT. + *

+ * + * @param temperature a double + * @return a double + */ + public double diffalphaT(double temperature); - /** - *

- * diffdiffalphaT. - *

- * - * @param temperature a double - * @return a double - */ - public double diffdiffalphaT(double temperature); + /** + *

+ * diffdiffalphaT. + *

+ * + * @param temperature a double + * @return a double + */ + public double diffdiffalphaT(double temperature); - /** - *

- * diffaT. - *

- * - * @param temperature a double - * @return a double - */ - public double diffaT(double temperature); + /** + *

+ * diffaT. + *

+ * + * @param temperature a double + * @return a double + */ + public double diffaT(double temperature); - /** - *

- * diffdiffaT. - *

- * - * @param temperature a double - * @return a double - */ - public double diffdiffaT(double temperature); + /** + *

+ * diffdiffaT. + *

+ * + * @param temperature a double + * @return a double + */ + public double diffdiffaT(double temperature); - /** - *

- * getParameters. - *

- * - * @param i a int - * @return a double - */ - public double getParameters(int i); + /** + *

+ * getParameters. + *

+ * + * @param i a int + * @return a double + */ + public double getParameters(int i); - /** - *

- * setm. - *

- * - * @param val a double - */ - public void setm(double val); + /** + *

+ * setm. + *

+ * + * @param val a double + */ + public void setm(double val); - /** - *

- * setParameters. - *

- * - * @param i a int - * @param val a double - */ - public void setParameters(int i, double val); + /** + *

+ * setParameters. + *

+ * + * @param i a int + * @param val a double + */ + public void setParameters(int i, double val); - /** - *

- * clone. - *

- * - * @return a {@link neqsim.thermo.component.attractiveEosTerm.AttractiveTermInterface} object - */ - public AttractiveTermInterface clone(); + /** + *

+ * clone. + *

+ * + * @return a {@link neqsim.thermo.component.attractiveEosTerm.AttractiveTermInterface} object + */ + public AttractiveTermInterface clone(); } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCop.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCop.java index 6759c37c9f..c99ffc08b9 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCop.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCop.java @@ -11,135 +11,131 @@ * @version $Id: $Id */ public class AttractiveTermMatCop extends AttractiveTermSrk { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double orgpar = 0.0; + double orgpar = 0.0; - /** - *

- * Constructor for AttractiveTermMatCop. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermMatCop(ComponentEosInterface component) { - super(component); - m = (0.48 + 1.574 * component.getAcentricFactor() - - 0.175 * component.getAcentricFactor() * component.getAcentricFactor()); - } + /** + *

+ * Constructor for AttractiveTermMatCop. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermMatCop(ComponentEosInterface component) { + super(component); + m = (0.48 + 1.574 * component.getAcentricFactor() + - 0.175 * component.getAcentricFactor() * component.getAcentricFactor()); + } - /** - *

- * Constructor for AttractiveTermMatCop. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - * @param params an array of {@link double} objects - */ - public AttractiveTermMatCop(ComponentEosInterface component, double[] params) { - this(component); - System.arraycopy(params, 0, this.parameters, 0, params.length); - orgpar = parameters[0]; - if (Math.abs(parameters[0]) < 1e-12) { - parameters[0] = m; - } + /** + *

+ * Constructor for AttractiveTermMatCop. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param params an array of type double + */ + public AttractiveTermMatCop(ComponentEosInterface component, double[] params) { + this(component); + System.arraycopy(params, 0, this.parameters, 0, params.length); + orgpar = parameters[0]; + if (Math.abs(parameters[0]) < 1e-12) { + parameters[0] = m; } + } - /** {@inheritDoc} */ - @Override - public AttractiveTermMatCop clone() { - AttractiveTermMatCop attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermMatCop) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermMatCop clone() { + AttractiveTermMatCop attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermMatCop) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init() { - super.init(); - parameters[0] = m; - } + return attractiveTerm; + } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - double Tr = temperature / getComponent().getTC(); - return Math.pow(1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0), 2.0); - } + /** {@inheritDoc} */ + @Override + public void init() { + super.init(); + parameters[0] = m; + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - if (temperature / getComponent().getTC() > 10000.0) { - return super.aT(temperature); - } else { - return getComponent().geta() * alpha(temperature); - } - } + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + double Tr = temperature / getComponent().getTC(); + return Math.pow(1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0), 2.0); + } - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - double Tr = temperature / getComponent().getTC(); - double TC = getComponent().getTC(); - return 2.0 - * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) - * (-parameters[0] / Math.sqrt(Tr) / TC / 2.0 - - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC - - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr) / TC); + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + if (temperature / getComponent().getTC() > 10000.0) { + return super.aT(temperature); + } else { + return getComponent().geta() * alpha(temperature); } + } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - double Tr = temperature / getComponent().getTC(); - double TC = getComponent().getTC(); - return 2.0 - * Math.pow(-parameters[0] / Math.sqrt(Tr) / TC / 2.0 - - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC - - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr) / TC, - 2.0) - + 2.0 * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) - * (parameters[0] / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 4.0 - + parameters[1] / temperature / TC / 2.0 - + parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr * Tr * Tr) - / (TC * TC) / 2.0 - + 3.0 / 2.0 * parameters[2] * (1.0 - Math.sqrt(Tr)) / temperature - / TC - + 3.0 / 4.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr * Tr * Tr) / (TC * TC)); - } + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + double Tr = temperature / getComponent().getTC(); + double TC = getComponent().getTC(); + return 2.0 + * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) + * (-parameters[0] / Math.sqrt(Tr) / TC / 2.0 + - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC + - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) / Math.sqrt(Tr) / TC); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + double Tr = temperature / getComponent().getTC(); + double TC = getComponent().getTC(); + return 2.0 + * Math.pow(-parameters[0] / Math.sqrt(Tr) / TC / 2.0 + - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC + - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) / Math.sqrt(Tr) / TC, + 2.0) + + 2.0 * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) + * (parameters[0] / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 4.0 + + parameters[1] / temperature / TC / 2.0 + + parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 2.0 + + 3.0 / 2.0 * parameters[2] * (1.0 - Math.sqrt(Tr)) / temperature / TC + + 3.0 / 4.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + / Math.sqrt(Tr * Tr * Tr) / (TC * TC)); + } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - if (temperature / getComponent().getTC() > 10000.0) { - return super.diffaT(temperature); - } else { - return getComponent().geta() * diffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + if (temperature / getComponent().getTC() > 10000.0) { + return super.diffaT(temperature); + } else { + return getComponent().geta() * diffalphaT(temperature); } + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - if (temperature / getComponent().getTC() > 10000.0) { - return super.diffdiffaT(temperature); - } else { - return getComponent().geta() * diffdiffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + if (temperature / getComponent().getTC() > 10000.0) { + return super.diffdiffaT(temperature); + } else { + return getComponent().geta() * diffdiffalphaT(temperature); } + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCopPR.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCopPR.java index 658a1319dd..fbda40b094 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCopPR.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCopPR.java @@ -11,168 +11,165 @@ * @version $Id: $Id */ public class AttractiveTermMatCopPR extends AttractiveTermPr { - private static final long serialVersionUID = 1000; - - double orgpar = 0.0; - boolean useStandardAlphaForSupercritical = true; - - /** - *

- * Constructor for AttractiveTermMatCopPR. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermMatCopPR(ComponentEosInterface component) { - super(component); - m = (0.37464 + 1.54226 * component.getAcentricFactor() - - 0.26992 * component.getAcentricFactor() * component.getAcentricFactor()); - - if (component.getName().equals("water")) { - parameters[0] = 0.91256735118818810000000000; - parameters[1] = -0.2872243639795234400000000; - parameters[2] = 0.239526763058374250000000000; - } - if (component.getName().equals("TEG")) { - parameters[0] = 1.051E0; - parameters[1] = 2.945E0; - parameters[2] = -5.982E0; - } + private static final long serialVersionUID = 1000; + + double orgpar = 0.0; + boolean useStandardAlphaForSupercritical = true; + + /** + *

+ * Constructor for AttractiveTermMatCopPR. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermMatCopPR(ComponentEosInterface component) { + super(component); + m = (0.37464 + 1.54226 * component.getAcentricFactor() + - 0.26992 * component.getAcentricFactor() * component.getAcentricFactor()); + + if (component.getName().equals("water")) { + parameters[0] = 0.91256735118818810000000000; + parameters[1] = -0.2872243639795234400000000; + parameters[2] = 0.239526763058374250000000000; } - - /** - *

- * Constructor for AttractiveTermMatCopPR. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - * @param params an array of {@link double} objects - */ - public AttractiveTermMatCopPR(ComponentEosInterface component, double[] params) { - this(component); - System.arraycopy(params, 0, this.parameters, 0, params.length); - orgpar = parameters[0]; - if (Math.abs(parameters[0]) < 1e-12) { - parameters[0] = m; - } - - if (component.getName().equals("water")) { - parameters[0] = 0.91256735118818810000000000; - parameters[1] = -0.2872243639795234400000000; - parameters[2] = 0.239526763058374250000000000; - } - if (component.getName().equals("TEG")) { - parameters[0] = 1.05E+00; - parameters[1] = 2.95E+00; - parameters[2] = -5.98E+00; - } + if (component.getName().equals("TEG")) { + parameters[0] = 1.051E0; + parameters[1] = 2.945E0; + parameters[2] = -5.982E0; } - - /** {@inheritDoc} */ - @Override - public AttractiveTermMatCopPR clone() { - AttractiveTermMatCopPR attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermMatCopPR) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return attractiveTerm; + } + + /** + *

+ * Constructor for AttractiveTermMatCopPR. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param params an array of type double + */ + public AttractiveTermMatCopPR(ComponentEosInterface component, double[] params) { + this(component); + System.arraycopy(params, 0, this.parameters, 0, params.length); + orgpar = parameters[0]; + if (Math.abs(parameters[0]) < 1e-12) { + parameters[0] = m; } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) - || parameters[0] < 1e-20) { - return super.alpha(temperature); - } else { - double Tr = temperature / getComponent().getTC(); - double trRoot = 1.0 - Math.sqrt(Tr); - double temp = 1.0 + parameters[0] * trRoot + parameters[1] * trRoot * trRoot - + parameters[2] * trRoot * trRoot * trRoot; - return temp * temp; - } + if (component.getName().equals("water")) { + parameters[0] = 0.91256735118818810000000000; + parameters[1] = -0.2872243639795234400000000; + parameters[2] = 0.239526763058374250000000000; } - - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) - || parameters[0] < 1e-20) { - return super.aT(temperature); - } else { - return getComponent().geta() * alpha(temperature); - } + if (component.getName().equals("TEG")) { + parameters[0] = 1.05E+00; + parameters[1] = 2.95E+00; + parameters[2] = -5.98E+00; } - - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) - || parameters[0] < 1e-20) { - return super.diffalphaT(temperature); - } - - double Tr = temperature / getComponent().getTC(); - double TC = getComponent().getTC(); - double rootTR = 1.0 - Math.sqrt(Tr); - return 2.0 - * (1.0 + parameters[0] * rootTR + parameters[1] * rootTR * rootTR - + parameters[2] * rootTR * rootTR * rootTR) - * (-parameters[0] / Math.sqrt(Tr) / TC / 2.0 - - parameters[1] * rootTR / Math.sqrt(Tr) / TC - - 3.0 / 2.0 * parameters[2] * rootTR * rootTR / Math.sqrt(Tr) / TC); + } + + /** {@inheritDoc} */ + @Override + public AttractiveTermMatCopPR clone() { + AttractiveTermMatCopPR attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermMatCopPR) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) - || parameters[0] < 1e-20) { - return super.diffdiffalphaT(temperature); - } - - double Tr = temperature / getComponent().getTC(); - double TC = getComponent().getTC(); - double rootTR = 1.0 - Math.sqrt(Tr); - return 2.0 - * Math.pow( - -parameters[0] / Math.sqrt(Tr) / TC / 2.0 - - parameters[1] * rootTR / Math.sqrt(Tr) / TC - - 3.0 / 2.0 * parameters[2] * rootTR * rootTR / Math.sqrt(Tr) / TC, - 2.0) - + 2.0 * (1.0 + parameters[0] * rootTR - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * rootTR * rootTR * rootTR) - * (parameters[0] / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 4.0 - + parameters[1] / temperature / TC / 2.0 - + parameters[1] * rootTR / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 2.0 - + 3.0 / 2.0 * parameters[2] * rootTR / temperature / TC - + 3.0 / 4.0 * parameters[2] * rootTR * rootTR - / Math.sqrt(Tr * Tr * Tr) / (TC * TC)); + return attractiveTerm; + } + + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) + || parameters[0] < 1e-20) { + return super.alpha(temperature); + } else { + double Tr = temperature / getComponent().getTC(); + double trRoot = 1.0 - Math.sqrt(Tr); + double temp = 1.0 + parameters[0] * trRoot + parameters[1] * trRoot * trRoot + + parameters[2] * trRoot * trRoot * trRoot; + return temp * temp; + } + } + + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) + || parameters[0] < 1e-20) { + return super.aT(temperature); + } else { + return getComponent().geta() * alpha(temperature); + } + } + + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) + || parameters[0] < 1e-20) { + return super.diffalphaT(temperature); } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) - || parameters[0] < 1e-20) { - return super.diffaT(temperature); - } else { - return getComponent().geta() * diffalphaT(temperature); - } + double Tr = temperature / getComponent().getTC(); + double TC = getComponent().getTC(); + double rootTR = 1.0 - Math.sqrt(Tr); + return 2.0 + * (1.0 + parameters[0] * rootTR + parameters[1] * rootTR * rootTR + + parameters[2] * rootTR * rootTR * rootTR) + * (-parameters[0] / Math.sqrt(Tr) / TC / 2.0 - parameters[1] * rootTR / Math.sqrt(Tr) / TC + - 3.0 / 2.0 * parameters[2] * rootTR * rootTR / Math.sqrt(Tr) / TC); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) + || parameters[0] < 1e-20) { + return super.diffdiffalphaT(temperature); } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) - || parameters[0] < 1e-20) { - return super.diffdiffaT(temperature); - } else { - return getComponent().geta() * diffdiffalphaT(temperature); - } + double Tr = temperature / getComponent().getTC(); + double TC = getComponent().getTC(); + double rootTR = 1.0 - Math.sqrt(Tr); + return 2.0 + * Math.pow( + -parameters[0] / Math.sqrt(Tr) / TC / 2.0 - parameters[1] * rootTR / Math.sqrt(Tr) / TC + - 3.0 / 2.0 * parameters[2] * rootTR * rootTR / Math.sqrt(Tr) / TC, + 2.0) + + 2.0 + * (1.0 + parameters[0] * rootTR + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * rootTR * rootTR * rootTR) + * (parameters[0] / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 4.0 + + parameters[1] / temperature / TC / 2.0 + + parameters[1] * rootTR / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 2.0 + + 3.0 / 2.0 * parameters[2] * rootTR / temperature / TC + 3.0 / 4.0 * parameters[2] + * rootTR * rootTR / Math.sqrt(Tr * Tr * Tr) / (TC * TC)); + } + + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) + || parameters[0] < 1e-20) { + return super.diffaT(temperature); + } else { + return getComponent().geta() * diffalphaT(temperature); + } + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + if ((useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0) + || parameters[0] < 1e-20) { + return super.diffdiffaT(temperature); + } else { + return getComponent().geta() * diffdiffalphaT(temperature); } + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCopPRUMR.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCopPRUMR.java index 5d1ef575b7..dd48e4f4de 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCopPRUMR.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMatCopPRUMR.java @@ -11,170 +11,166 @@ * @version $Id: $Id */ public class AttractiveTermMatCopPRUMR extends AttractiveTermPr { - private static final long serialVersionUID = 1000; - double orgpar = 0.0; - boolean useStandardAlphaForSupercritical = false; - - /** - *

- * Constructor for AttractiveTermMatCopPRUMR. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermMatCopPRUMR(ComponentEosInterface component) { - super(component); - m = (0.384401 + 1.52276 * component.getAcentricFactor() - - 0.213808 * component.getAcentricFactor() * component.getAcentricFactor() - + 0.034616 * Math.pow(component.getAcentricFactor(), 3.0) - - 0.001976 * Math.pow(component.getAcentricFactor(), 4.0)); - - if (component.getName().equals("water")) { - parameters[0] = 0.91256735118818810000000000; - parameters[1] = -0.2872243639795234400000000; - parameters[2] = 0.239526763058374250000000000; - } - if (component.getName().equals("TEG")) { - parameters[0] = 1.051E0; - parameters[1] = 2.945E0; - parameters[2] = -5.982E0; - } + private static final long serialVersionUID = 1000; + double orgpar = 0.0; + boolean useStandardAlphaForSupercritical = false; + + /** + *

+ * Constructor for AttractiveTermMatCopPRUMR. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermMatCopPRUMR(ComponentEosInterface component) { + super(component); + m = (0.384401 + 1.52276 * component.getAcentricFactor() + - 0.213808 * component.getAcentricFactor() * component.getAcentricFactor() + + 0.034616 * Math.pow(component.getAcentricFactor(), 3.0) + - 0.001976 * Math.pow(component.getAcentricFactor(), 4.0)); + + if (component.getName().equals("water")) { + parameters[0] = 0.91256735118818810000000000; + parameters[1] = -0.2872243639795234400000000; + parameters[2] = 0.239526763058374250000000000; } - - /** - *

- * Constructor for AttractiveTermMatCopPRUMR. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - * @param params an array of {@link double} objects - */ - public AttractiveTermMatCopPRUMR(ComponentEosInterface component, double[] params) { - this(component); - System.arraycopy(params, 0, this.parameters, 0, params.length); - orgpar = parameters[0]; - if (Math.abs(parameters[0]) < 1e-12) { - parameters[0] = m; - } - - if (component.getName().equals("water")) { - parameters[0] = 0.91256735118818810000000000; - parameters[1] = -0.2872243639795234400000000; - parameters[2] = 0.239526763058374250000000000; - } - if (component.getName().equals("TEG")) { - parameters[0] = 1.05E+00; - parameters[1] = 2.95E+00; - parameters[2] = -5.98E+00; - } + if (component.getName().equals("TEG")) { + parameters[0] = 1.051E0; + parameters[1] = 2.945E0; + parameters[2] = -5.982E0; } - - /** {@inheritDoc} */ - @Override - public AttractiveTermMatCopPRUMR clone() { - AttractiveTermMatCopPRUMR attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermMatCopPRUMR) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return attractiveTerm; + } + + /** + *

+ * Constructor for AttractiveTermMatCopPRUMR. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param params an array of type double + */ + public AttractiveTermMatCopPRUMR(ComponentEosInterface component, double[] params) { + this(component); + System.arraycopy(params, 0, this.parameters, 0, params.length); + orgpar = parameters[0]; + if (Math.abs(parameters[0]) < 1e-12) { + parameters[0] = m; } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 - || parameters[0] < 1e-20) { - return super.alpha(temperature); - } else { - double Tr = temperature / getComponent().getTC(); - return Math.pow(1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0), 2.0); - } + if (component.getName().equals("water")) { + parameters[0] = 0.91256735118818810000000000; + parameters[1] = -0.2872243639795234400000000; + parameters[2] = 0.239526763058374250000000000; } - - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 - || parameters[0] < 1e-20) { - return super.aT(temperature); - } else { - return getComponent().geta() * alpha(temperature); - } + if (component.getName().equals("TEG")) { + parameters[0] = 1.05E+00; + parameters[1] = 2.95E+00; + parameters[2] = -5.98E+00; } - - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 - || parameters[0] < 1e-20) { - return super.diffalphaT(temperature); - } - - double Tr = temperature / getComponent().getTC(); - double TC = getComponent().getTC(); - return 2.0 - * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) - * (-parameters[0] / Math.sqrt(Tr) / TC / 2.0 - - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC - - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr) / TC); + } + + /** {@inheritDoc} */ + @Override + public AttractiveTermMatCopPRUMR clone() { + AttractiveTermMatCopPRUMR attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermMatCopPRUMR) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 - || parameters[0] < 1e-20) { - return super.diffdiffalphaT(temperature); - } - - double Tr = temperature / getComponent().getTC(); - double TC = getComponent().getTC(); - return 2.0 - * Math.pow(-parameters[0] / Math.sqrt(Tr) / TC / 2.0 - - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC - - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr) / TC, - 2.0) - + 2.0 * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) - + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) - * (parameters[0] / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 4.0 - + parameters[1] / temperature / TC / 2.0 - + parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr * Tr * Tr) - / (TC * TC) / 2.0 - + 3.0 / 2.0 * parameters[2] * (1.0 - Math.sqrt(Tr)) / temperature - / TC - + 3.0 / 4.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) - / Math.sqrt(Tr * Tr * Tr) / (TC * TC)); + return attractiveTerm; + } + + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 + || parameters[0] < 1e-20) { + return super.alpha(temperature); + } else { + double Tr = temperature / getComponent().getTC(); + return Math.pow(1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0), 2.0); + } + } + + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 + || parameters[0] < 1e-20) { + return super.aT(temperature); + } else { + return getComponent().geta() * alpha(temperature); + } + } + + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 + || parameters[0] < 1e-20) { + return super.diffalphaT(temperature); } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 - || parameters[0] < 1e-20) { - return super.diffaT(temperature); - } else { - return getComponent().geta() * diffalphaT(temperature); - } + double Tr = temperature / getComponent().getTC(); + double TC = getComponent().getTC(); + return 2.0 + * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) + * (-parameters[0] / Math.sqrt(Tr) / TC / 2.0 + - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC + - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) / Math.sqrt(Tr) / TC); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 + || parameters[0] < 1e-20) { + return super.diffdiffalphaT(temperature); } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 - || parameters[0] < 1e-20) { - return super.diffdiffaT(temperature); - } else { - return getComponent().geta() * diffdiffalphaT(temperature); - } + double Tr = temperature / getComponent().getTC(); + double TC = getComponent().getTC(); + return 2.0 + * Math.pow(-parameters[0] / Math.sqrt(Tr) / TC / 2.0 + - parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr) / TC + - 3.0 / 2.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) / Math.sqrt(Tr) / TC, + 2.0) + + 2.0 * (1.0 + parameters[0] * (1.0 - Math.sqrt(Tr)) + + parameters[1] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + + parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 3.0)) + * (parameters[0] / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 4.0 + + parameters[1] / temperature / TC / 2.0 + + parameters[1] * (1.0 - Math.sqrt(Tr)) / Math.sqrt(Tr * Tr * Tr) / (TC * TC) / 2.0 + + 3.0 / 2.0 * parameters[2] * (1.0 - Math.sqrt(Tr)) / temperature / TC + + 3.0 / 4.0 * parameters[2] * Math.pow(1.0 - Math.sqrt(Tr), 2.0) + / Math.sqrt(Tr * Tr * Tr) / (TC * TC)); + } + + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 + || parameters[0] < 1e-20) { + return super.diffaT(temperature); + } else { + return getComponent().geta() * diffalphaT(temperature); + } + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + if (useStandardAlphaForSupercritical && temperature / getComponent().getTC() > 1.0 + || parameters[0] < 1e-20) { + return super.diffdiffaT(temperature); + } else { + return getComponent().geta() * diffdiffalphaT(temperature); } + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMollerup.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMollerup.java index ce89ffdbfa..6b0d436642 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMollerup.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermMollerup.java @@ -11,85 +11,84 @@ * @version $Id: $Id */ public class AttractiveTermMollerup extends AttractiveTermBaseClass { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for AttractiveTermMollerup. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermMollerup(ComponentEosInterface component) { - super(component); - } - - /** - *

- * Constructor for AttractiveTermMollerup. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - * @param params an array of {@link double} objects - */ - public AttractiveTermMollerup(ComponentEosInterface component, double[] params) { - this(component); - System.arraycopy(params, 0, this.parameters, 0, params.length); - } + /** + *

+ * Constructor for AttractiveTermMollerup. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermMollerup(ComponentEosInterface component) { + super(component); + } - /** {@inheritDoc} */ - @Override - public AttractiveTermMollerup clone() { - AttractiveTermMollerup attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermMollerup) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for AttractiveTermMollerup. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param params an array of type double + */ + public AttractiveTermMollerup(ComponentEosInterface component, double[] params) { + this(component); + System.arraycopy(params, 0, this.parameters, 0, params.length); + } - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermMollerup clone() { + AttractiveTermMollerup attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermMollerup) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - return 1.0 + parameters[0] * (1 / temperature * getComponent().getTC() - 1.0) - + parameters[1] * temperature / getComponent().getTC() - * Math.log(temperature / getComponent().getTC()) - + parameters[2] * (temperature / getComponent().getTC() - 1.0); - } + return attractiveTerm; + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta() * alpha(temperature); - } + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + return 1.0 + parameters[0] * (1 / temperature * getComponent().getTC() - 1.0) + + parameters[1] * temperature / getComponent().getTC() + * Math.log(temperature / getComponent().getTC()) + + parameters[2] * (temperature / getComponent().getTC() - 1.0); + } - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - return -parameters[0] / (temperature * temperature) * getComponent().getTC() - + parameters[1] / getComponent().getTC() - * Math.log(temperature / getComponent().getTC()) - + parameters[1] / getComponent().getTC() + parameters[2] / getComponent().getTC(); - } + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta() * alpha(temperature); + } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - return 2.0 * parameters[0] / (temperature * temperature * temperature) - * getComponent().getTC() + parameters[1] / getComponent().getTC() / temperature; - } + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + return -parameters[0] / (temperature * temperature) * getComponent().getTC() + + parameters[1] / getComponent().getTC() * Math.log(temperature / getComponent().getTC()) + + parameters[1] / getComponent().getTC() + parameters[2] / getComponent().getTC(); + } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getComponent().geta() * diffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + return 2.0 * parameters[0] / (temperature * temperature * temperature) * getComponent().getTC() + + parameters[1] / getComponent().getTC() / temperature; + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getComponent().geta() * diffdiffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getComponent().geta() * diffalphaT(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getComponent().geta() * diffdiffalphaT(temperature); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr.java index b78e234982..e3c4f27748 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr.java @@ -11,91 +11,90 @@ * @version $Id: $Id */ public class AttractiveTermPr extends AttractiveTermBaseClass { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for AttractiveTermPr. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermPr(ComponentEosInterface component) { - super(component); - m = (0.37464 + 1.54226 * component.getAcentricFactor() - - 0.26992 * component.getAcentricFactor() * component.getAcentricFactor()); - } + /** + *

+ * Constructor for AttractiveTermPr. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermPr(ComponentEosInterface component) { + super(component); + m = (0.37464 + 1.54226 * component.getAcentricFactor() + - 0.26992 * component.getAcentricFactor() * component.getAcentricFactor()); + } - /** {@inheritDoc} */ - @Override - public AttractiveTermPr clone() { - AttractiveTermPr attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermPr) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermPr clone() { + AttractiveTermPr attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermPr) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + return attractiveTerm; + } - /** {@inheritDoc} */ - @Override - public void setm(double val) { - this.m = val; - neqsim.MathLib.nonLinearSolver.newtonRhapson solve = - new neqsim.MathLib.nonLinearSolver.newtonRhapson(); - solve.setOrder(2); - double[] acentricConstants = {-0.26992, 1.54226, (0.37464 - this.m)}; - solve.setConstants(acentricConstants); - getComponent().setAcentricFactor(solve.solve(0.2)); - // System.out.println("solve accen " + component.getAcentricFactor()); - } + /** {@inheritDoc} */ + @Override + public void setm(double val) { + this.m = val; + neqsim.MathLib.nonLinearSolver.newtonRhapson solve = + new neqsim.MathLib.nonLinearSolver.newtonRhapson(); + solve.setOrder(2); + double[] acentricConstants = {-0.26992, 1.54226, (0.37464 - this.m)}; + solve.setConstants(acentricConstants); + getComponent().setAcentricFactor(solve.solve(0.2)); + // System.out.println("solve accen " + component.getAcentricFactor()); + } - /** {@inheritDoc} */ - @Override - public void init() { - m = (0.37464 + 1.54226 * getComponent().getAcentricFactor() - 0.26992 - * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); - } + /** {@inheritDoc} */ + @Override + public void init() { + m = (0.37464 + 1.54226 * getComponent().getAcentricFactor() + - 0.26992 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); + } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - double temp = 1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())); - return temp * temp; - } + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + double temp = 1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())); + return temp * temp; + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta() * alpha(temperature); - } + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta() * alpha(temperature); + } - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - return -(1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m - / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC(); - } + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + return -(1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m + / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC(); + } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - double tr = temperature / getComponent().getTC(); - return m * m / temperature / getComponent().getTC() / 2.0 - + (1.0 + m * (1.0 - Math.sqrt(tr))) * m / Math.sqrt(tr * tr * tr) - / (getComponent().getTC() * getComponent().getTC()) / 2.0; - } + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + double tr = temperature / getComponent().getTC(); + return m * m / temperature / getComponent().getTC() / 2.0 + (1.0 + m * (1.0 - Math.sqrt(tr))) + * m / Math.sqrt(tr * tr * tr) / (getComponent().getTC() * getComponent().getTC()) / 2.0; + } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getComponent().geta() * diffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getComponent().geta() * diffalphaT(temperature); + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getComponent().geta() * diffdiffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getComponent().geta() * diffdiffalphaT(temperature); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr1978.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr1978.java index 5ccdcdba38..441bd62ce3 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr1978.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPr1978.java @@ -11,51 +11,66 @@ * @version $Id: $Id */ public class AttractiveTermPr1978 extends AttractiveTermPr { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for AttractiveTermPr1978. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermPr1978(ComponentEosInterface component) { - super(component); - if (component.getAcentricFactor() > 0.49) { - m = (0.379642 + 1.48503 * component.getAcentricFactor() - - 0.164423 * component.getAcentricFactor() * component.getAcentricFactor() - + 0.01666 * Math.pow(component.getAcentricFactor(), 3.0)); - } else { - m = (0.37464 + 1.54226 * component.getAcentricFactor() - - 0.26992 * component.getAcentricFactor() * component.getAcentricFactor()); - } + /** + *

+ * Constructor for AttractiveTermPr1978. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermPr1978(ComponentEosInterface component) { + super(component); + if (component.getAcentricFactor() > 0.49) { + m = (0.379642 + 1.48503 * component.getAcentricFactor() + - 0.164423 * component.getAcentricFactor() * component.getAcentricFactor() + + 0.01666 * Math.pow(component.getAcentricFactor(), 3.0)); + } else { + m = (0.37464 + 1.54226 * component.getAcentricFactor() + - 0.26992 * component.getAcentricFactor() * component.getAcentricFactor()); } + } - /** {@inheritDoc} */ - @Override - public AttractiveTermPr1978 clone() { - AttractiveTermPr1978 attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermPr1978) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** {@inheritDoc} */ + @Override + public void setm(double val) { + this.m = val; + neqsim.MathLib.nonLinearSolver.newtonRhapson solve = + new neqsim.MathLib.nonLinearSolver.newtonRhapson(); + solve.setOrder(2); + double[] acentricConstants = {-0.26992, 1.54226, (0.37464 - this.m)}; + if (this.m > 0.49) { + solve.setOrder(3); + acentricConstants = new double[] {0.01666, -0.164423, 1.48503, (0.379642 - this.m)}; + } + solve.setConstants(acentricConstants); + getComponent().setAcentricFactor(solve.solve(0.2)); + } - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermPr1978 clone() { + AttractiveTermPr1978 attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermPr1978) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init() { - if (getComponent().getAcentricFactor() > 0.49) { - m = (0.379642 + 1.48503 * getComponent().getAcentricFactor() - - 0.164423 * getComponent().getAcentricFactor() - * getComponent().getAcentricFactor() - + 0.01666 * Math.pow(getComponent().getAcentricFactor(), 3.0)); - } else { - m = (0.37464 + 1.54226 * getComponent().getAcentricFactor() - 0.26992 - * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); - } + return attractiveTerm; + } + + /** {@inheritDoc} */ + @Override + public void init() { + if (getComponent().getAcentricFactor() > 0.49) { + m = (0.379642 + 1.48503 * getComponent().getAcentricFactor() + - 0.164423 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor() + + 0.01666 * Math.pow(getComponent().getAcentricFactor(), 3.0)); + } else { + m = (0.37464 + 1.54226 * getComponent().getAcentricFactor() + - 0.26992 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); } + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrDanesh.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrDanesh.java index 6016a2c8fc..77c032c49a 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrDanesh.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrDanesh.java @@ -11,95 +11,95 @@ * @version $Id: $Id */ public class AttractiveTermPrDanesh extends AttractiveTermPr1978 { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double mMod = 0; + double mMod = 0; - /** - *

- * Constructor for AttractiveTermPrDanesh. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermPrDanesh(ComponentEosInterface component) { - super(component); + /** + *

+ * Constructor for AttractiveTermPrDanesh. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermPrDanesh(ComponentEosInterface component) { + super(component); + } + + /** {@inheritDoc} */ + @Override + public AttractiveTermPrDanesh clone() { + AttractiveTermPrDanesh attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermPrDanesh) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public AttractiveTermPrDanesh clone() { - AttractiveTermPrDanesh attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermPrDanesh) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + return attractiveTerm; + } - return attractiveTerm; - } + /** {@inheritDoc} */ + @Override + public void init() { + m = (0.37464 + 1.54226 * getComponent().getAcentricFactor() + - 0.26992 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); + } - /** {@inheritDoc} */ - @Override - public void init() { - m = (0.37464 + 1.54226 * getComponent().getAcentricFactor() - 0.26992 - * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + if (temperature > getComponent().getTC()) { + mMod = m * 1.21; + } else { + mMod = m; } + return Math.pow(1.0 + mMod * (1.0 - Math.sqrt(temperature / getComponent().getTC())), 2.0); + } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - if (temperature > getComponent().getTC()) { - mMod = m * 1.21; - } else { - mMod = m; - } - return Math.pow(1.0 + mMod * (1.0 - Math.sqrt(temperature / getComponent().getTC())), 2.0); - } + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta() * alpha(temperature); + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta() * alpha(temperature); + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + if (temperature > getComponent().getTC()) { + mMod = m * 1.21; + } else { + mMod = m; } + return -(1.0 + mMod * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * mMod + / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC(); + } - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - if (temperature > getComponent().getTC()) { - mMod = m * 1.21; - } else { - mMod = m; - } - return -(1.0 + mMod * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * mMod - / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC(); + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + if (temperature > getComponent().getTC()) { + mMod = m * 1.21; + } else { + mMod = m; } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - if (temperature > getComponent().getTC()) { - mMod = m * 1.21; - } else { - mMod = m; - } + return mMod * mMod / temperature / getComponent().getTC() / 2.0 + (1.0 + + mMod * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m + / Math.sqrt( + temperature * temperature * temperature / (Math.pow(getComponent().getTC(), 3.0))) + / (getComponent().getTC() * getComponent().getTC()) / 2.0; + } - return mMod * mMod / temperature / getComponent().getTC() / 2.0 - + (1.0 + mMod * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m - / Math.sqrt(temperature * temperature * temperature - / (Math.pow(getComponent().getTC(), 3.0))) - / (getComponent().getTC() * getComponent().getTC()) / 2.0; - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getComponent().geta() * diffalphaT(temperature); + } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getComponent().geta() * diffalphaT(temperature); - } - - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getComponent().geta() * diffdiffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getComponent().geta() * diffdiffalphaT(temperature); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrDelft1998.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrDelft1998.java index 217bf0f6a9..663a1fc616 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrDelft1998.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrDelft1998.java @@ -11,93 +11,92 @@ * @version $Id: $Id */ public class AttractiveTermPrDelft1998 extends AttractiveTermPr1978 { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - boolean isMethane = false; + boolean isMethane = false; - /** - *

- * Constructor for AttractiveTermPrDelft1998. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermPrDelft1998(ComponentEosInterface component) { - super(component); - if (component.getName().equals("methane")) { - isMethane = true; - } + /** + *

+ * Constructor for AttractiveTermPrDelft1998. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermPrDelft1998(ComponentEosInterface component) { + super(component); + if (component.getName().equals("methane")) { + isMethane = true; } + } - /** {@inheritDoc} */ - @Override - public AttractiveTermPrDelft1998 clone() { - AttractiveTermPrDelft1998 attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermPrDelft1998) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermPrDelft1998 clone() { + AttractiveTermPrDelft1998 attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermPrDelft1998) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - if (isMethane) { - return 0.969617 + 0.20089 * temperature / getComponent().getTC() - - 0.3256987 * Math.pow(temperature / getComponent().getTC(), 2.0) - + 0.06653 * Math.pow(temperature / getComponent().getTC(), 3.0); - } else { - return Math.pow(1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())), 2.0); - } - } + return attractiveTerm; + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta() * alpha(temperature); + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + if (isMethane) { + return 0.969617 + 0.20089 * temperature / getComponent().getTC() + - 0.3256987 * Math.pow(temperature / getComponent().getTC(), 2.0) + + 0.06653 * Math.pow(temperature / getComponent().getTC(), 3.0); + } else { + return Math.pow(1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())), 2.0); } + } - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - if (isMethane) { - return 0.20089 / getComponent().getTC() - - 2.0 * 0.3256987 * temperature / Math.pow(getComponent().getTC(), 2.0) - + 3.0 * 0.06653 * Math.pow(temperature, 2.0) - / Math.pow(getComponent().getTC(), 3.0); - } else { - return -(1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m - / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC(); - } - } + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta() * alpha(temperature); + } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - if (isMethane) { - return -2.0 * 0.3256987 / Math.pow(getComponent().getTC(), 2.0) - + 6.0 * 0.06653 * temperature / Math.pow(getComponent().getTC(), 3.0); - } else { - return m * m / temperature / getComponent().getTC() / 2.0 - + (1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m - / Math.sqrt(temperature * temperature * temperature - / (Math.pow(getComponent().getTC(), 3.0))) - / (getComponent().getTC() * getComponent().getTC()) / 2.0; - } + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + if (isMethane) { + return 0.20089 / getComponent().getTC() + - 2.0 * 0.3256987 * temperature / Math.pow(getComponent().getTC(), 2.0) + + 3.0 * 0.06653 * Math.pow(temperature, 2.0) / Math.pow(getComponent().getTC(), 3.0); + } else { + return -(1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m + / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC(); } + } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getComponent().geta() * diffalphaT(temperature); + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + if (isMethane) { + return -2.0 * 0.3256987 / Math.pow(getComponent().getTC(), 2.0) + + 6.0 * 0.06653 * temperature / Math.pow(getComponent().getTC(), 3.0); + } else { + return m * m / temperature / getComponent().getTC() / 2.0 + (1.0 + + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m + / Math.sqrt( + temperature * temperature * temperature / (Math.pow(getComponent().getTC(), 3.0))) + / (getComponent().getTC() * getComponent().getTC()) / 2.0; } + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getComponent().geta() * diffdiffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getComponent().geta() * diffalphaT(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getComponent().geta() * diffdiffalphaT(temperature); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrGassem2001.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrGassem2001.java index de2183c52e..5643992466 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrGassem2001.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermPrGassem2001.java @@ -11,98 +11,97 @@ * @version $Id: $Id */ public class AttractiveTermPrGassem2001 extends AttractiveTermPr { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - protected double A = 2.0, B = 0.836, C = 0.134, D = 0.508, E = -0.0467; + protected double A = 2.0; + protected double B = 0.836; + protected double C = 0.134; + protected double D = 0.508; + protected double E = -0.0467; - /** - *

- * Constructor for AttractiveTermPrGassem2001. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermPrGassem2001(ComponentEosInterface component) { - super(component); - } - - /** {@inheritDoc} */ - @Override - public AttractiveTermPrGassem2001 clone() { - AttractiveTermPrGassem2001 attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermPrGassem2001) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for AttractiveTermPrGassem2001. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermPrGassem2001(ComponentEosInterface component) { + super(component); + } - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermPrGassem2001 clone() { + AttractiveTermPrGassem2001 attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermPrGassem2001) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init() { - m = (0.37464 + 1.54226 * getComponent().getAcentricFactor() - 0.26992 - * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); - } + return attractiveTerm; + } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - // System.out.println("alpha gassem"); - return Math.exp((A + B * temperature / getComponent().getTC()) - * (1.0 - Math.pow(temperature / getComponent().getTC(), - C + D * getComponent().getAcentricFactor() - + E * getComponent().getAcentricFactor() - * getComponent().getAcentricFactor()))); - } + /** {@inheritDoc} */ + @Override + public void init() { + m = (0.37464 + 1.54226 * getComponent().getAcentricFactor() + - 0.26992 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta() * alpha(temperature); - } + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + // System.out.println("alpha gassem"); + return Math.exp((A + B * temperature / getComponent().getTC()) * (1.0 + - Math.pow(temperature / getComponent().getTC(), C + D * getComponent().getAcentricFactor() + + E * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()))); + } - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - return 1.0 / getComponent().getTC() * alpha(temperature) - * ((B * (1.0 - Math.pow(temperature / getComponent().getTC(), - C + D * getComponent().getAcentricFactor() - + E * getComponent().getAcentricFactor() - * getComponent().getAcentricFactor()))) - - (A + B * temperature / getComponent().getTC()) - * (C + D * getComponent().getAcentricFactor() - + E * getComponent().getAcentricFactor() - * getComponent().getAcentricFactor()) - * Math.pow(temperature / getComponent().getTC(), - C + D * getComponent().getAcentricFactor() - + E * getComponent().getAcentricFactor() - * getComponent().getAcentricFactor() - - 1.0)); - } + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta() * alpha(temperature); + } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - // not implemented dubble derivative + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + return 1.0 / getComponent().getTC() * alpha(temperature) + * ((B * (1.0 - Math.pow(temperature / getComponent().getTC(), C + + D * getComponent().getAcentricFactor() + + E * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()))) + - (A + B * temperature / getComponent().getTC()) * (C + + D * getComponent().getAcentricFactor() + + E * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()) + * Math.pow(temperature / getComponent().getTC(), + C + D * getComponent().getAcentricFactor() + E + * getComponent().getAcentricFactor() * getComponent().getAcentricFactor() + - 1.0)); + } - return m * m / temperature / getComponent().getTC() / 2.0 - + (1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m - / Math.sqrt(temperature * temperature * temperature - / (Math.pow(getComponent().getTC(), 3.0))) - / (getComponent().getTC() * getComponent().getTC()) / 2.0; - } + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + // not implemented dubble derivative - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getComponent().geta() * diffalphaT(temperature); - } + return m * m / temperature / getComponent().getTC() / 2.0 + (1.0 + + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m + / Math.sqrt( + temperature * temperature * temperature / (Math.pow(getComponent().getTC(), 3.0))) + / (getComponent().getTC() * getComponent().getTC()) / 2.0; + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getComponent().geta() * diffdiffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getComponent().geta() * diffalphaT(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getComponent().geta() * diffdiffalphaT(temperature); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermRk.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermRk.java index bcaa88a0f2..02f1b71cbf 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermRk.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermRk.java @@ -11,70 +11,69 @@ * @version $Id: $Id */ public class AttractiveTermRk extends AttractiveTermBaseClass { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for AttractiveTermRk. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermRk(ComponentEosInterface component) { - super(component); - } - - /** {@inheritDoc} */ - @Override - public AttractiveTermRk clone() { - AttractiveTermRk attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermRk) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for AttractiveTermRk. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermRk(ComponentEosInterface component) { + super(component); + } - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermRk clone() { + AttractiveTermRk attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermRk) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - return Math.sqrt(getComponent().getTC() / temperature); - } + return attractiveTerm; + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta() * alpha(temperature); - } + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + return Math.sqrt(getComponent().getTC() / temperature); + } - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - return -0.5 * getComponent().getTC() - / (Math.sqrt(getComponent().getTC() / temperature) * Math.pow(temperature, 2.0)); - } + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta() * alpha(temperature); + } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - return -0.25 * getComponent().getTC() * getComponent().getTC() - / (Math.pow(getComponent().getTC() / temperature, 3.0 / 2.0) - * Math.pow(temperature, 4.0)) - + getComponent().getTC() / (Math.sqrt(getComponent().getTC() / temperature) - * Math.pow(temperature, 3.0)); - } + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + return -0.5 * getComponent().getTC() + / (Math.sqrt(getComponent().getTC() / temperature) * Math.pow(temperature, 2.0)); + } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getComponent().geta() * diffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + return -0.25 * getComponent().getTC() * getComponent().getTC() + / (Math.pow(getComponent().getTC() / temperature, 3.0 / 2.0) * Math.pow(temperature, 4.0)) + + getComponent().getTC() + / (Math.sqrt(getComponent().getTC() / temperature) * Math.pow(temperature, 3.0)); + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getComponent().geta() * diffdiffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getComponent().geta() * diffalphaT(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getComponent().geta() * diffdiffalphaT(temperature); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermSchwartzentruber.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermSchwartzentruber.java index 84e5d30445..38cad498c5 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermSchwartzentruber.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermSchwartzentruber.java @@ -11,196 +11,191 @@ * @version $Id: $Id */ public class AttractiveTermSchwartzentruber extends AttractiveTermBaseClass { - private static final long serialVersionUID = 1000; - - private double c = 0.0, d = 0.0; - - /** - *

- * Constructor for AttractiveTermSchwartzentruber. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermSchwartzentruber(ComponentEosInterface component) { - super(component); - m = (0.48508 + 1.55191 * component.getAcentricFactor() - - 0.15613 * component.getAcentricFactor() * component.getAcentricFactor()); + private static final long serialVersionUID = 1000; + + private double c = 0.0; + private double d = 0.0; + + /** + *

+ * Constructor for AttractiveTermSchwartzentruber. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermSchwartzentruber(ComponentEosInterface component) { + super(component); + m = (0.48508 + 1.55191 * component.getAcentricFactor() + - 0.15613 * component.getAcentricFactor() * component.getAcentricFactor()); + } + + /** + *

+ * Constructor for AttractiveTermSchwartzentruber. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param params an array of type double + */ + public AttractiveTermSchwartzentruber(ComponentEosInterface component, double[] params) { + this(component); + System.arraycopy(params, 0, this.parameters, 0, params.length); + d = 1.0 + m / 2.0 - parameters[0] * (1.0 + parameters[1] + parameters[2]); + c = 1.0 - 1.0 / d; + } + + /** {@inheritDoc} */ + @Override + public AttractiveTermSchwartzentruber clone() { + AttractiveTermSchwartzentruber attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermSchwartzentruber) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * Constructor for AttractiveTermSchwartzentruber. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - * @param params an array of {@link double} objects - */ - public AttractiveTermSchwartzentruber(ComponentEosInterface component, double[] params) { - this(component); - System.arraycopy(params, 0, this.parameters, 0, params.length); - d = 1.0 + m / 2.0 - parameters[0] * (1.0 + parameters[1] + parameters[2]); - c = 1.0 - 1.0 / d; + return attractiveTerm; + } + + /** {@inheritDoc} */ + @Override + public void init() { + m = (0.48508 + 1.55191 * getComponent().getAcentricFactor() + - 0.15613 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); + } + + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + // System.out.println("alpha here " + Math.pow( 1.0 + + // m*(1.0-Math.sqrt(temperature/component.getTC())) - + // parameters[0]*(1.0-temperature/component.getTC()) * + // (1.0+parameters[1]*temperature/component.getTC()+parameters[2] * + // Math.pow(temperature/component.getTC(),2.0)),2.0)); + return Math + .pow( + 1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())) + - parameters[0] * (1.0 - temperature / getComponent().getTC()) + * (1.0 + parameters[1] * temperature / getComponent().getTC() + + parameters[2] * Math.pow(temperature / getComponent().getTC(), 2.0)), + 2.0); + } + + /** + * @param temperature temperature in Kelvin + * @return double returns the alphacrit + */ + private double alphaCrit(double temperature) { + d = 1.0 + m / 2.0 - parameters[0] * (1.0 + parameters[1] + parameters[2]); + c = 1.0 - 1.0 / d; + return Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / getComponent().getTC(), 1.0 * d))), + 2.0); + } + + /** + * @param temperature temperature in Kelvin + * @return double diff alpha crit with respecct to temperature + */ + private double diffalphaCritT(double temperature) { + d = 1.0 + m / 2.0 - parameters[0] * (1.0 + parameters[1] + parameters[2]); + c = 1.0 - 1.0 / d; + return -2.0 * Math + .pow(Math.exp(c * (1.0 - Math.pow(temperature / getComponent().getTC(), 1.0 * d))), 2.0) * c + * Math.pow(temperature / getComponent().getTC(), 1.0 * d) * d / temperature; + } + + /** + * @param temperature temperature in Kelvin + * @return double double diff alpha crit with respecct to temperature + */ + private double diffdiffalphaCritT(double temperature) { + d = 1.0 + m / 2.0 - parameters[0] * (1.0 + parameters[1] + parameters[2]); + c = 1.0 - 1.0 / d; + double TC = getComponent().getTC(); + return 4.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c * c + * Math.pow(Math.pow(temperature / TC, 1.0 * d), 2.0) * d * d / (temperature * temperature) + - 2.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c + * Math.pow(temperature / TC, 1.0 * d) * d * d / (temperature * temperature) + + 2.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c + * Math.pow(temperature / TC, 1.0 * d) * d / (temperature * temperature); + } + + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + if (temperature / getComponent().getTC() > 100.0) { + return getComponent().geta() * alphaCrit(temperature); + } else { + return getComponent().geta() * alpha(temperature); } - - /** {@inheritDoc} */ - @Override - public AttractiveTermSchwartzentruber clone() { - AttractiveTermSchwartzentruber attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermSchwartzentruber) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return attractiveTerm; - } - - /** {@inheritDoc} */ - @Override - public void init() { - m = (0.48508 + 1.55191 * getComponent().getAcentricFactor() - 0.15613 - * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); - } - - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - // System.out.println("alpha here " + Math.pow( 1.0 + - // m*(1.0-Math.sqrt(temperature/component.getTC()))-parameters[0]*(1.0-temperature/component.getTC())*(1.0+parameters[1]*temperature/component.getTC()+parameters[2]*Math.pow(temperature/component.getTC(),2.0)),2.0)); - return Math.pow( - 1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())) - parameters[0] - * (1.0 - temperature / getComponent().getTC()) - * (1.0 + parameters[1] * temperature / getComponent().getTC() - + parameters[2] - * Math.pow(temperature / getComponent().getTC(), 2.0)), - 2.0); - } - - /** - * @param temperature temperature in Kelvin - * @return double returns the alphacrit - */ - private double alphaCrit(double temperature) { - d = 1.0 + m / 2.0 - parameters[0] * (1.0 + parameters[1] + parameters[2]); - c = 1.0 - 1.0 / d; - return Math.pow( - Math.exp(c * (1.0 - Math.pow(temperature / getComponent().getTC(), 1.0 * d))), 2.0); - } - - /** - * @param temperature temperature in Kelvin - * @return double diff alpha crit with respecct to temperature - */ - private double diffalphaCritT(double temperature) { - d = 1.0 + m / 2.0 - parameters[0] * (1.0 + parameters[1] + parameters[2]); - c = 1.0 - 1.0 / d; - return -2.0 - * Math.pow( - Math.exp(c - * (1.0 - Math.pow(temperature / getComponent().getTC(), 1.0 * d))), - 2.0) - * c * Math.pow(temperature / getComponent().getTC(), 1.0 * d) * d / temperature; - } - - /** - * @param temperature temperature in Kelvin - * @return double double diff alpha crit with respecct to temperature - */ - private double diffdiffalphaCritT(double temperature) { - d = 1.0 + m / 2.0 - parameters[0] * (1.0 + parameters[1] + parameters[2]); - c = 1.0 - 1.0 / d; - double TC = getComponent().getTC(); - return 4.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c - * c * Math.pow(Math.pow(temperature / TC, 1.0 * d), 2.0) * d * d - / (temperature * temperature) - - 2.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c - * Math.pow(temperature / TC, 1.0 * d) * d * d / (temperature * temperature) - + 2.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c - * Math.pow(temperature / TC, 1.0 * d) * d / (temperature * temperature); - } - - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - if (temperature / getComponent().getTC() > 100.0) { - return getComponent().geta() * alphaCrit(temperature); - } else { - return getComponent().geta() * alpha(temperature); - } - } - - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - return 2.0 - * (1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())) - parameters[0] - * (1.0 - temperature / getComponent().getTC()) - * (1.0 + parameters[1] * temperature / getComponent().getTC() - + parameters[2] * temperature * temperature - / (getComponent().getTC() * getComponent().getTC()))) - * (-m / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC() - / 2.0 - + parameters[0] / getComponent().getTC() - * (1.0 + parameters[1] * temperature / getComponent().getTC() - + parameters[2] * temperature * temperature - / (getComponent().getTC() * getComponent().getTC())) - - parameters[0] * (1.0 - temperature / getComponent().getTC()) - * (parameters[1] / getComponent().getTC() + 2.0 * parameters[2] - * temperature - / (getComponent().getTC() * getComponent().getTC()))); - } - - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - return 2.0 * Math.pow( - -m / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC() / 2.0 - + parameters[0] - / getComponent().getTC() - * (1.0 + parameters[1] * temperature / getComponent().getTC() - + parameters[2] * temperature * temperature - / (getComponent().getTC() * getComponent().getTC())) - - parameters[0] * (1.0 - temperature / getComponent().getTC()) - * (parameters[1] / getComponent().getTC() + 2.0 * parameters[2] - * temperature - / (getComponent().getTC() * getComponent().getTC())), + } + + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + return 2.0 + * (1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())) + - parameters[0] * (1.0 - temperature / getComponent().getTC()) + * (1.0 + parameters[1] * temperature / getComponent().getTC() + + parameters[2] * temperature * temperature + / (getComponent().getTC() * getComponent().getTC()))) + * (-m / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC() / 2.0 + + parameters[0] / getComponent().getTC() + * (1.0 + parameters[1] * temperature / getComponent().getTC() + + parameters[2] * temperature * temperature + / (getComponent().getTC() * getComponent().getTC())) + - parameters[0] * (1.0 - temperature / getComponent().getTC()) + * (parameters[1] / getComponent().getTC() + 2.0 * parameters[2] * temperature + / (getComponent().getTC() * getComponent().getTC()))); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + return 2.0 + * Math + .pow(-m / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC() / 2.0 + + parameters[0] / getComponent().getTC() + * (1.0 + parameters[1] * temperature / getComponent().getTC() + + parameters[2] * temperature * temperature + / (getComponent().getTC() * getComponent().getTC())) + - parameters[0] * (1.0 - temperature / getComponent().getTC()) + * (parameters[1] / getComponent().getTC() + 2.0 * parameters[2] * temperature + / (getComponent().getTC() * getComponent().getTC())), 2.0) - + 2.0 * (1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())) - - parameters[0] * (1.0 - temperature / getComponent().getTC()) * (1.0 - + parameters[1] * temperature / getComponent().getTC() - + parameters[2] * temperature * temperature - / (getComponent().getTC() * getComponent().getTC()))) - * (m / Math.sqrt(temperature * temperature * temperature - / (getComponent().getTC() * getComponent().getTC() - * getComponent().getTC())) - / (getComponent().getTC() * getComponent().getTC()) / 4.0 - + 2.0 * parameters[0] / getComponent().getTC() - * (parameters[1] / getComponent().getTC() + 2.0 - * parameters[2] * temperature - / (getComponent().getTC() * getComponent().getTC())) - - 2.0 * parameters[0] * (1.0 - temperature / getComponent().getTC()) - * parameters[2] - / (getComponent().getTC() * getComponent().getTC())); + + 2.0 + * (1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())) - parameters[0] + * (1.0 - temperature / getComponent().getTC()) + * (1.0 + parameters[1] * temperature / getComponent().getTC() + + parameters[2] * temperature * temperature + / (getComponent().getTC() * getComponent().getTC()))) + * (m / Math.sqrt(temperature * temperature * temperature + / (getComponent().getTC() * getComponent().getTC() * getComponent().getTC())) + / (getComponent().getTC() * getComponent().getTC()) / 4.0 + + 2.0 * parameters[0] / getComponent().getTC() + * (parameters[1] / getComponent().getTC() + 2.0 * parameters[2] * temperature + / (getComponent().getTC() * getComponent().getTC())) + - 2.0 * parameters[0] * (1.0 - temperature / getComponent().getTC()) * parameters[2] + / (getComponent().getTC() * getComponent().getTC())); + } + + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + if (temperature / getComponent().getTC() > 100.0) { + return getComponent().geta() * diffalphaCritT(temperature); + } else { + return getComponent().geta() * diffalphaT(temperature); } - - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - if (temperature / getComponent().getTC() > 100.0) { - return getComponent().geta() * diffalphaCritT(temperature); - } else { - return getComponent().geta() * diffalphaT(temperature); - } - } - - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - if (temperature / getComponent().getTC() > 100.0) { - return getComponent().geta() * diffdiffalphaCritT(temperature); - } else { - return getComponent().geta() * diffdiffalphaT(temperature); - } + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + if (temperature / getComponent().getTC() > 100.0) { + return getComponent().geta() * diffdiffalphaCritT(temperature); + } else { + return getComponent().geta() * diffdiffalphaT(temperature); } + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermSrk.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermSrk.java index 169bc2a1b3..20d60fa963 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermSrk.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermSrk.java @@ -11,101 +11,100 @@ * @version $Id: $Id */ public class AttractiveTermSrk extends AttractiveTermBaseClass { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for AttractiveTermSrk. - *

- */ - public AttractiveTermSrk() {} + /** + *

+ * Constructor for AttractiveTermSrk. + *

+ */ + public AttractiveTermSrk() {} - /** - *

- * Constructor for AttractiveTermSrk. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermSrk(ComponentEosInterface component) { - super(component); - m = (0.48 + 1.574 * component.getAcentricFactor() - - 0.176 * component.getAcentricFactor() * component.getAcentricFactor()); - } + /** + *

+ * Constructor for AttractiveTermSrk. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermSrk(ComponentEosInterface component) { + super(component); + m = (0.48 + 1.574 * component.getAcentricFactor() + - 0.176 * component.getAcentricFactor() * component.getAcentricFactor()); + } - /** {@inheritDoc} */ - @Override - public AttractiveTermSrk clone() { - AttractiveTermSrk attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermSrk) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermSrk clone() { + AttractiveTermSrk attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermSrk) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + return attractiveTerm; + } - /** {@inheritDoc} */ - @Override - public void setm(double val) { - this.m = val; - neqsim.MathLib.nonLinearSolver.newtonRhapson solve = - new neqsim.MathLib.nonLinearSolver.newtonRhapson(); - solve.setOrder(2); - double[] acentricConstants = {-0.176, 1.574, (0.48 - this.m)}; - solve.setConstants(acentricConstants); - getComponent().setAcentricFactor(solve.solve(0.2)); - // System.out.println("solve accen " + component.getAcentricFactor()); - } + /** {@inheritDoc} */ + @Override + public void setm(double val) { + this.m = val; + neqsim.MathLib.nonLinearSolver.newtonRhapson solve = + new neqsim.MathLib.nonLinearSolver.newtonRhapson(); + solve.setOrder(2); + double[] acentricConstants = {-0.176, 1.574, (0.48 - this.m)}; + solve.setConstants(acentricConstants); + getComponent().setAcentricFactor(solve.solve(0.2)); + // System.out.println("solve accen " + component.getAcentricFactor()); + } - /** {@inheritDoc} */ - @Override - public void init() { - m = (0.48 + 1.574 * getComponent().getAcentricFactor() - - 0.176 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); - } + /** {@inheritDoc} */ + @Override + public void init() { + m = (0.48 + 1.574 * getComponent().getAcentricFactor() + - 0.176 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); + } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - // System.out.println("m " + m); - // System.out.println("TC " + component.getTC()); - double temp = 1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())); - return temp * temp; - } + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + // System.out.println("m " + m); + // System.out.println("TC " + component.getTC()); + double temp = 1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())); + return temp * temp; + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta() * alpha(temperature); - } + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta() * alpha(temperature); + } - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - // System.out.println("m " + m); - double temp = Math.sqrt(temperature / getComponent().getTC()); - return -(1.0 + m * (1.0 - temp)) * m / temp / getComponent().getTC(); - } + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + // System.out.println("m " + m); + double temp = Math.sqrt(temperature / getComponent().getTC()); + return -(1.0 + m * (1.0 - temp)) * m / temp / getComponent().getTC(); + } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - double tr = temperature / getComponent().getTC(); - return m * m / temperature / getComponent().getTC() / 2.0 - + (1.0 + m * (1.0 - Math.sqrt(tr))) * m / Math.sqrt(tr * tr * tr) - / (getComponent().getTC() * getComponent().getTC()) / 2.0; - } + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + double tr = temperature / getComponent().getTC(); + return m * m / temperature / getComponent().getTC() / 2.0 + (1.0 + m * (1.0 - Math.sqrt(tr))) + * m / Math.sqrt(tr * tr * tr) / (getComponent().getTC() * getComponent().getTC()) / 2.0; + } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getComponent().geta() * diffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getComponent().geta() * diffalphaT(temperature); + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getComponent().geta() * diffdiffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getComponent().geta() * diffdiffalphaT(temperature); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwu.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwu.java index c68ba56eaf..632ae2d778 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwu.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwu.java @@ -11,77 +11,77 @@ * @version $Id: $Id */ public class AttractiveTermTwu extends AttractiveTermSrk { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for AttractiveTermTwu. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermTwu(ComponentEosInterface component) { - super(component); - } - - /** {@inheritDoc} */ - @Override - public AttractiveTermTwu clone() { - AttractiveTermTwu attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermTwu) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for AttractiveTermTwu. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermTwu(ComponentEosInterface component) { + super(component); + } - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermTwu clone() { + AttractiveTermTwu attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermTwu) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init() { - m = (0.48 + 1.574 * getComponent().getAcentricFactor() - - 0.175 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); - } + return attractiveTerm; + } - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - return Math.pow(1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())), 2.0); - } + /** {@inheritDoc} */ + @Override + public void init() { + m = (0.48 + 1.574 * getComponent().getAcentricFactor() + - 0.175 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor()); + } - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta() * alpha(temperature); - } + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + return Math.pow(1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC())), 2.0); + } - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - return -(1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m - / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC(); - } + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta() * alpha(temperature); + } - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - return m * m / temperature / getComponent().getTC() / 2.0 - + (1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m - / Math.sqrt(temperature * temperature * temperature - / (Math.pow(getComponent().getTC(), 3.0))) - / (getComponent().getTC() * getComponent().getTC()) / 2.0; - } + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + return -(1.0 + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m + / Math.sqrt(temperature / getComponent().getTC()) / getComponent().getTC(); + } - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getComponent().geta() * diffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + return m * m / temperature / getComponent().getTC() / 2.0 + (1.0 + + m * (1.0 - Math.sqrt(temperature / getComponent().getTC()))) * m + / Math.sqrt( + temperature * temperature * temperature / (Math.pow(getComponent().getTC(), 3.0))) + / (getComponent().getTC() * getComponent().getTC()) / 2.0; + } - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getComponent().geta() * diffdiffalphaT(temperature); - } + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getComponent().geta() * diffalphaT(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getComponent().geta() * diffdiffalphaT(temperature); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoon.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoon.java index b2f980cecc..28c738633d 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoon.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoon.java @@ -11,189 +11,194 @@ * @version $Id: $Id */ public class AttractiveTermTwuCoon extends AttractiveTermBaseClass { - private static final long serialVersionUID = 1000; - - private double a = -0.201158, b = 0.141599, c = 2.29528, d = -0.660145, e = 0.500315, - f = 2.63165; - - /** - *

- * Constructor for AttractiveTermTwuCoon. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermTwuCoon(ComponentEosInterface component) { - super(component); - m = component.getAcentricFactor(); + private static final long serialVersionUID = 1000; + + private double a = -0.201158; + private double b = 0.141599; + private double c = 2.29528; + private double d = -0.660145; + private double e = 0.500315; + private double f = 2.63165; + + /** + *

+ * Constructor for AttractiveTermTwuCoon. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermTwuCoon(ComponentEosInterface component) { + super(component); + m = component.getAcentricFactor(); + } + + // public AttractiveTermTwuCoon(ComponentEosInterface component, double[] params) { + // this(component); + // System.arraycopy(params,0,this.parameters,0,params.length); + // // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); + // // d = 1-1.0/d; + // } + + /** {@inheritDoc} */ + @Override + public AttractiveTermTwuCoon clone() { + AttractiveTermTwuCoon attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermTwuCoon) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - // public AttractiveTermTwuCoon(ComponentEosInterface component, double[] params) { - // this(component); - // System.arraycopy(params,0,this.parameters,0,params.length); - // // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); - // // d = 1-1.0/d; - // } - - @Override - public AttractiveTermTwuCoon clone() { - AttractiveTermTwuCoon attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermTwuCoon) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return attractiveTerm; + return attractiveTerm; + } + + /** {@inheritDoc} */ + @Override + public void init() { + // m = (0.48508 + 1.55191 * component.getAcentricFactor() - 0.15613 * + // component.getAcentricFactor() * component.getAcentricFactor()); + } + + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + double Tr = (temperature / getComponent().getTC()); + // System.out.println("alpha here " + Math.pow( 1.0 + + // m*(1.0-Math.sqrt(temperature/component.getTC())) - + // parameters[0]*(1.0-temperature/component.getTC()) * + // (1.0+parameters[1]*temperature/component.getTC() + + // parameters[2]*Math.pow(temperature/component.getTC(),2.0)),2.0)); + return Math.pow(Tr, a) * Math.exp(b * (1 - Math.pow(Tr, c))) + + m * (Math.pow(Tr, d) * Math.exp(e * (1 - Math.pow(Tr, f))) + - Math.pow(Tr, a) * Math.exp(b * (1 - Math.pow(Tr, c)))); + } + + /** + * alphaCrit. + * + * @param temperature temperature in unit Kelvin + * @return double + */ + private double alphaCrit(double temperature) { + // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); + // d = 1.0-1.0/d; + return Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / getComponent().getTC(), 1.0 * d))), + 2.0); + } + + /** + * diffalphaCritT. + * + * @param temperature temperature in unit Kelvin + * @return double + */ + private double diffalphaCritT(double temperature) { + c = 1 + m / 2.0 - parameters[0] * (1.0 + parameters[1] + parameters[2]); + d = 1.0 - 1.0 / d; + return -2.0 * Math + .pow(Math.exp(c * (1.0 - Math.pow(temperature / getComponent().getTC(), 1.0 * d))), 2.0) * c + * Math.pow(temperature / getComponent().getTC(), 1.0 * d) * d / temperature; + } + + /** + * diffdiffalphaCritT. + * + * @param temperature temperature in unit Kelvin + * @return double + */ + private double diffdiffalphaCritT(double temperature) { + double TC = getComponent().getTC(); + // double Tr = (temperature / TC); + return 4.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c * c + * Math.pow(Math.pow(temperature / TC, 1.0 * d), 2.0) * d * d / (temperature * temperature) + - 2.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c + * Math.pow(temperature / TC, 1.0 * d) * d * d / (temperature * temperature) + + 2.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c + * Math.pow(temperature / TC, 1.0 * d) * d / (temperature * temperature); + } + + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + if (temperature / getComponent().getTC() > 100.0) { + return getComponent().geta() * alphaCrit(temperature); + } else { + return getComponent().geta() * alpha(temperature); } - - /** {@inheritDoc} */ - @Override - public void init() { - // m = (0.48508 + 1.55191 * component.getAcentricFactor() - 0.15613 * - // component.getAcentricFactor() * component.getAcentricFactor()); - } - - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - double Tr = (temperature / getComponent().getTC()); - // System.out.println("alpha here " + Math.pow( 1.0 + - // m*(1.0-Math.sqrt(temperature/component.getTC()))-parameters[0]*(1.0-temperature/component.getTC())*(1.0+parameters[1]*temperature/component.getTC()+parameters[2]*Math.pow(temperature/component.getTC(),2.0)),2.0)); - return Math.pow(Tr, a) * Math.exp(b * (1 - Math.pow(Tr, c))) - + m * (Math.pow(Tr, d) * Math.exp(e * (1 - Math.pow(Tr, f))) - - Math.pow(Tr, a) * Math.exp(b * (1 - Math.pow(Tr, c)))); - } - - /** - * @param temperature temperature in unit Kelvin - * @return double - */ - private double alphaCrit(double temperature) { - // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); - // d = 1.0-1.0/d; - return Math.pow( - Math.exp(c * (1.0 - Math.pow(temperature / getComponent().getTC(), 1.0 * d))), 2.0); - } - - /** - * @param temperature temperature in unit Kelvin - * @return double - */ - private double diffalphaCritT(double temperature) { - c = 1 + m / 2.0 - parameters[0] * (1.0 + parameters[1] + parameters[2]); - d = 1.0 - 1.0 / d; - return -2.0 - * Math.pow( - Math.exp(c - * (1.0 - Math.pow(temperature / getComponent().getTC(), 1.0 * d))), - 2.0) - * c * Math.pow(temperature / getComponent().getTC(), 1.0 * d) * d / temperature; - } - - /** - * @param temperature temperature in unit Kelvin - * @return double - */ - private double diffdiffalphaCritT(double temperature) { - double TC = getComponent().getTC(); - // double Tr = (temperature / TC); - return 4.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c - * c * Math.pow(Math.pow(temperature / TC, 1.0 * d), 2.0) * d * d - / (temperature * temperature) - - 2.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c - * Math.pow(temperature / TC, 1.0 * d) * d * d / (temperature * temperature) - + 2.0 * Math.pow(Math.exp(c * (1.0 - Math.pow(temperature / TC, 1.0 * d))), 2.0) * c - * Math.pow(temperature / TC, 1.0 * d) * d / (temperature * temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + double t = temperature; + double TC = getComponent().getTC(); + double Tr = (t / TC); + + return Math.pow((Tr), a) * a / t * Math.exp(b * (1 - Math.pow(Tr, c))) + - Math.pow((Tr), a) * b * Math.pow((Tr), c) * c / t * Math.exp(b * (1 - Math.pow((Tr), c))) + + m * (Math.pow((Tr), d) * d / t * Math.exp(e * (1 - Math.pow(Tr, f))) + - Math.pow(Tr, d) * e * Math.pow(Tr, f) * f / t * Math.exp(e * (1 - Math.pow(Tr, f))) + - Math.pow(Tr, a) * a / t * Math.exp(b * (1 - Math.pow(Tr, c))) + + Math.pow(Tr, a) * b * Math.pow(Tr, c) * c / t * Math.exp(b * (1 - Math.pow(Tr, c)))); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + double t = temperature; + double TC = getComponent().getTC(); + double Tr = (t / TC); + return Math.pow(Tr, a) * a * a / Math.pow(t, 2) * Math.exp(b * (1 - Math.pow(Tr, c))) + - Math.pow(Tr, a) * a / Math.pow(t, 2) * Math.exp(b * (1 - Math.pow(Tr, c))) + - 2 * Math.pow(Tr, a) * a / Math.pow(t, 2) * b * Math.pow(Tr, c) * c + * Math.exp(b * (1 - Math.pow(Tr, c))) + - Math.pow(Tr, a) * b * Math.pow(Tr, c) * Math.pow(c, 2) / Math.pow(t, 2) + * Math.exp(b * (1 - Math.pow(Tr, c))) + + Math.pow(Tr, a) * b * Math.pow(Tr, c) * c / Math.pow(t, 2) + * Math.exp(b * (1 - Math.pow(Tr, c))) + + Math.pow(Tr, a) * Math.pow(b, 2) * Math.pow(Math.pow(Tr, c), 2) * Math.pow(c, 2) + / Math.pow(t, 2) * Math.exp(b * (1 - Math.pow(Tr, c))) + + m * (Math.pow(Tr, d) * Math.pow(d, 2) / Math.pow(t, 2) + * Math.exp(e * (1 - Math.pow(Tr, f))) + - Math.pow(Tr, d) * d / Math.pow(t, 2) * Math.exp(e * (1 - Math.pow(Tr, f))) + - 2 * Math.pow(Tr, d) * d / Math.pow(t, 2) * e * Math.pow(Tr, f) * f + * Math.exp(e * (1 - Math.pow(Tr, f))) + - Math.pow(Tr, d) * e * Math.pow(Tr, f) * Math.pow(f, 2) / Math.pow(t, 2) + * Math.exp(e * (1 - Math.pow(Tr, f))) + + Math.pow(Tr, d) * e * Math.pow(Tr, f) * f / Math.pow(t, 2) + * Math.exp(e * (1 - Math.pow(Tr, f))) + + Math.pow(Tr, d) * Math.pow(e, 2) * Math.pow(Math.pow(Tr, f), 2) * Math.pow(f, 2) + / Math.pow(t, 2) * Math.exp(e * (1 - Math.pow(Tr, f))) + - Math.pow(Tr, a) * Math.pow(a, 2) / Math.pow(t, 2) + * Math.exp(b * (1 - Math.pow(Tr, c))) + + Math.pow(Tr, a) * a / Math.pow(t, 2) * Math.exp(b * (1 - Math.pow(Tr, c))) + + 2 * Math.pow(Tr, a) * a / Math.pow(t, 2) * b * Math.pow(Tr, c) * c + * Math.exp(b * (1 - Math.pow(Tr, c))) + + Math.pow(Tr, a) * b * Math.pow(Tr, c) * Math.pow(c, 2) / Math.pow(t, 2) + * Math.exp(b * (1 - Math.pow(Tr, c))) + - Math.pow(Tr, a) * b * Math.pow(Tr, c) * c / Math.pow(t, 2) + * Math.exp(b * (1 - Math.pow(Tr, c))) + - Math.pow(Tr, a) * Math.pow(b, 2) * Math.pow(Math.pow(Tr, c), 2) * Math.pow(c, 2) + / Math.pow(t, 2) * Math.exp(b * (1 - Math.pow(Tr, c)))); + } + + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + if (temperature / getComponent().getTC() > 100.0) { + return getComponent().geta() * diffalphaCritT(temperature); + } else { + return getComponent().geta() * diffalphaT(temperature); } - - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - if (temperature / getComponent().getTC() > 100.0) { - return getComponent().geta() * alphaCrit(temperature); - } else { - return getComponent().geta() * alpha(temperature); - } - } - - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - double t = temperature; - double TC = getComponent().getTC(); - double Tr = (t / TC); - - return Math.pow((Tr), a) * a / t * Math.exp(b * (1 - Math.pow(Tr, c))) - - Math.pow((Tr), a) * b * Math.pow((Tr), c) * c / t - * Math.exp(b * (1 - Math.pow((Tr), c))) - + m * (Math.pow((Tr), d) * d / t * Math.exp(e * (1 - Math.pow(Tr, f))) - - Math.pow(Tr, d) * e * Math.pow(Tr, f) * f / t - * Math.exp(e * (1 - Math.pow(Tr, f))) - - Math.pow(Tr, a) * a / t * Math.exp(b * (1 - Math.pow(Tr, c))) - + Math.pow(Tr, a) * b * Math.pow(Tr, c) * c / t - * Math.exp(b * (1 - Math.pow(Tr, c)))); - } - - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - double t = temperature; - double TC = getComponent().getTC(); - double Tr = (t / TC); - return Math.pow(Tr, a) * a * a / Math.pow(t, 2) * Math.exp(b * (1 - Math.pow(Tr, c))) - - Math.pow(Tr, a) * a / Math.pow(t, 2) * Math.exp(b * (1 - Math.pow(Tr, c))) - - 2 * Math.pow(Tr, a) * a / Math.pow(t, 2) * b * Math.pow(Tr, c) * c - * Math.exp(b * (1 - Math.pow(Tr, c))) - - Math.pow(Tr, a) * b * Math.pow(Tr, c) * Math.pow(c, 2) / Math.pow(t, 2) - * Math.exp(b * (1 - Math.pow(Tr, c))) - + Math.pow(Tr, a) * b * Math.pow(Tr, c) * c / Math.pow(t, 2) - * Math.exp(b * (1 - Math.pow(Tr, c))) - + Math.pow(Tr, a) * Math.pow(b, 2) * Math.pow(Math.pow(Tr, c), 2) * Math.pow(c, 2) - / Math.pow(t, 2) * Math.exp(b * (1 - Math.pow(Tr, c))) - + m * (Math.pow(Tr, d) * Math.pow(d, 2) / Math.pow(t, 2) - * Math.exp(e * (1 - Math.pow(Tr, f))) - - Math.pow(Tr, d) * d / Math.pow(t, 2) * Math.exp(e * (1 - Math.pow(Tr, f))) - - 2 * Math.pow(Tr, d) * d / Math.pow(t, 2) * e * Math.pow(Tr, f) * f - * Math.exp(e * (1 - Math.pow(Tr, f))) - - Math.pow(Tr, d) * e * Math.pow(Tr, f) * Math.pow(f, 2) / Math.pow(t, 2) - * Math.exp(e * (1 - Math.pow(Tr, f))) - + Math.pow(Tr, d) * e * Math.pow(Tr, f) * f / Math.pow(t, 2) - * Math.exp(e * (1 - Math.pow(Tr, f))) - + Math.pow(Tr, d) * Math.pow(e, 2) * Math.pow(Math.pow(Tr, f), 2) - * Math.pow(f, 2) / Math.pow(t, 2) - * Math.exp(e * (1 - Math.pow(Tr, f))) - - Math.pow(Tr, a) * Math.pow(a, 2) / Math.pow(t, 2) - * Math.exp(b * (1 - Math.pow(Tr, c))) - + Math.pow(Tr, a) * a / Math.pow(t, 2) * Math.exp(b * (1 - Math.pow(Tr, c))) - + 2 * Math.pow(Tr, a) * a / Math.pow(t, 2) * b * Math.pow(Tr, c) * c - * Math.exp(b * (1 - Math.pow(Tr, c))) - + Math.pow(Tr, a) * b * Math.pow(Tr, c) * Math.pow(c, 2) / Math.pow(t, 2) - * Math.exp(b * (1 - Math.pow(Tr, c))) - - Math.pow(Tr, a) * b * Math.pow(Tr, c) * c / Math.pow(t, 2) - * Math.exp(b * (1 - Math.pow(Tr, c))) - - Math.pow(Tr, a) * Math.pow(b, 2) * Math.pow(Math.pow(Tr, c), 2) - * Math.pow(c, 2) / Math.pow(t, 2) - * Math.exp(b * (1 - Math.pow(Tr, c)))); - } - - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - if (temperature / getComponent().getTC() > 100.0) { - return getComponent().geta() * diffalphaCritT(temperature); - } else { - return getComponent().geta() * diffalphaT(temperature); - } - } - - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - if (temperature / getComponent().getTC() > 100.0) { - return getComponent().geta() * diffdiffalphaCritT(temperature); - } else { - return getComponent().geta() * diffdiffalphaT(temperature); - } + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + if (temperature / getComponent().getTC() > 100.0) { + return getComponent().geta() * diffdiffalphaCritT(temperature); + } else { + return getComponent().geta() * diffdiffalphaT(temperature); } + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoonParam.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoonParam.java index 519c9fb410..264ebfbcd8 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoonParam.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoonParam.java @@ -11,151 +11,160 @@ * @version $Id: $Id */ public class AttractiveTermTwuCoonParam extends AttractiveTermBaseClass { - private static final long serialVersionUID = 1000; - - private double a = 0.0, b = 0.0, c = 0.0; - - /** - *

- * Constructor for AttractiveTermTwuCoonParam. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermTwuCoonParam(ComponentEosInterface component) { - super(component); - a = this.parameters[0]; - b = this.parameters[1]; - c = this.parameters[2]; + private static final long serialVersionUID = 1000; + + private double a = 0.0; + private double b = 0.0; + private double c = 0.0; + + /** + *

+ * Constructor for AttractiveTermTwuCoonParam. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermTwuCoonParam(ComponentEosInterface component) { + super(component); + a = this.parameters[0]; + b = this.parameters[1]; + c = this.parameters[2]; + } + + /** + *

+ * Constructor for AttractiveTermTwuCoonParam. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param params an array of type double + */ + public AttractiveTermTwuCoonParam(ComponentEosInterface component, double[] params) { + this(component); + // this.parameters [0] for aa benytte gitte input parametre + System.arraycopy(params, 0, this.parameters, 0, params.length); + } + + /** {@inheritDoc} */ + @Override + public AttractiveTermTwuCoonParam clone() { + AttractiveTermTwuCoonParam attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermTwuCoonParam) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * Constructor for AttractiveTermTwuCoonParam. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - * @param params an array of {@link double} objects - */ - public AttractiveTermTwuCoonParam(ComponentEosInterface component, double[] params) { - this(component); - // this.parameters [0] for aa benytte gitte input parametre - System.arraycopy(params, 0, this.parameters, 0, params.length); - } - - /** {@inheritDoc} */ - @Override - public AttractiveTermTwuCoonParam clone() { - AttractiveTermTwuCoonParam attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermTwuCoonParam) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return attractiveTerm; - } - - /** {@inheritDoc} */ - @Override - public void init() { - // m = (0.48508 + 1.55191 * component.getAcentricFactor() - 0.15613 * - // component.getAcentricFactor() * component.getAcentricFactor()); - } - - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - a = this.parameters[0]; - b = this.parameters[1]; - c = this.parameters[2]; - - double t = temperature; - double TC = getComponent().getTC(); - double Tr = (t / TC); - // System.out.println("alpha here " + Math.pow( 1.0 + - // m*(1.0-Math.sqrt(temperature/component.getTC()))-parameters[0]*(1.0-temperature/component.getTC())*(1.0+parameters[1]*temperature/component.getTC()+parameters[2]*Math.pow(temperature/component.getTC(),2.0)),2.0)); - return Math.pow((Tr), (c * (b - 1))) * Math.exp(a * (1 - Math.pow((Tr), (b * c)))); - } - - // private double alphaCrit(double temperature){ - // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); - // d = 1.0-1.0/d; - // return Math.pow(Math.exp(c*(1.0-Math.pow(temperature/component.getTC(),1.0*d))),2.0); - // } - - // private double diffalphaCritT(double temperature){ - // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); - // d = 1.0-1.0/d; - // return - // -2.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/component.getTC(),1.0*d))),2.0)*c*Math.pow(temperature/component.getTC(),1.0*d)*d/temperature; - // } - - // private double diffdiffalphaCritT(double temperature){ - // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); - // d = 1-1.0/d; - // double TC = component.getTC(); - // return - // 4.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0)*c*c*Math.pow(Math.pow(temperature/TC,1.0*d),2.0)*d*d/(temperature*temperature)-2.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0)*c*Math.pow(temperature/TC,1.0*d)*d*d/(temperature* - // temperature)+2.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0)*c*Math.pow( - // temperature/TC,1.0*d)*d/(temperature*temperature); - // } - - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta() * alpha(temperature); - } - - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - a = this.parameters[0]; - b = this.parameters[1]; - c = this.parameters[2]; - - double t = temperature; - double TC = getComponent().getTC(); - double Tr = (t / TC); - - return Math.pow((Tr), (c * (b - 1))) * c * (b - 1) / t - * Math.exp(a * (1 - Math.pow((Tr), (b * c)))) - - Math.pow((Tr), (c * (b - 1))) * a * Math.pow((Tr), (b * c)) * b * c / t - * Math.exp(a * (1 - Math.pow((Tr), (b * c)))); - } - - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - a = this.parameters[0]; - b = this.parameters[1]; - c = this.parameters[2]; - double t = temperature; - double TC = getComponent().getTC(); - double Tr = (t / TC); - return Math.pow(Tr, (c * (b - 1))) * (c * c) * (b - 1) * (b - 1) / (t * t) - * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) - - Math.pow(Tr, (c * (b - 1))) * c * (b - 1) / (t * t) - * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) - - 2 * Math.pow(Tr, (c * (b - 1))) * (c * c) * (b - 1) / (t * t) * a - * Math.pow(Tr, (b * c)) * b * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) - - Math.pow(Tr, (c * (b - 1))) * a * Math.pow(Tr, (b * c)) * (b * b) * (c * c) - / (t * t) * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) - + Math.pow(Tr, (c * (b - 1))) * a * Math.pow(Tr, (b * c)) * b * c / (t * t) - * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) - + Math.pow(Tr, (c * (b - 1))) * (a * a) * (Math.pow(Tr, (2 * b * c))) * (b * b) - * (c * c) / (t * t) * Math.exp(a * (1 - Math.pow(Tr, (b * c)))); - } - - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getComponent().geta() * diffalphaT(temperature); - } - - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getComponent().geta() * diffdiffalphaT(temperature); - } + return attractiveTerm; + } + + /** {@inheritDoc} */ + @Override + public void init() { + // m = (0.48508 + 1.55191 * component.getAcentricFactor() - 0.15613 * + // component.getAcentricFactor() * component.getAcentricFactor()); + } + + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + a = this.parameters[0]; + b = this.parameters[1]; + c = this.parameters[2]; + + double t = temperature; + double TC = getComponent().getTC(); + double Tr = (t / TC); + // System.out.println("alpha here " + Math.pow( 1.0 + + // m*(1.0-Math.sqrt(temperature/component.getTC())) - + // parameters[0]*(1.0-temperature/component.getTC()) * + // (1.0+parameters[1]*temperature/component.getTC()+parameters[2] * + // Math.pow(temperature/component.getTC(),2.0)),2.0)); + return Math.pow((Tr), (c * (b - 1))) * Math.exp(a * (1 - Math.pow((Tr), (b * c)))); + } + + // private double alphaCrit(double temperature){ + // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); + // d = 1.0-1.0/d; + // return Math.pow(Math.exp(c*(1.0-Math.pow(temperature/component.getTC(),1.0*d))),2.0); + // } + + // private double diffalphaCritT(double temperature){ + // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); + // d = 1.0-1.0/d; + // return + // -2.0*Math.pow(Math.exp(c*(1.0 - + // Math.pow(temperature/component.getTC(),1.0*d))),2.0)*c*Math.pow(temperature/component.getTC(),1.0*d)*d/temperature; + // } + + // private double diffdiffalphaCritT(double temperature){ + // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); + // d = 1-1.0/d; + // double TC = component.getTC(); + // return + // 4.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0) * + // c*c*Math.pow(Math.pow(temperature/TC,1.0*d),2.0) * + // d*d/(temperature*temperature)-2.0 * + // Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0)*c*Math.pow(temperature/TC,1.0*d)*d*d/(temperature* + // temperature)+2.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0)*c*Math.pow( + // temperature/TC,1.0*d)*d/(temperature*temperature); + // } + + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta() * alpha(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + a = this.parameters[0]; + b = this.parameters[1]; + c = this.parameters[2]; + + double t = temperature; + double TC = getComponent().getTC(); + double Tr = (t / TC); + + return Math.pow((Tr), (c * (b - 1))) * c * (b - 1) / t + * Math.exp(a * (1 - Math.pow((Tr), (b * c)))) + - Math.pow((Tr), (c * (b - 1))) * a * Math.pow((Tr), (b * c)) * b * c / t + * Math.exp(a * (1 - Math.pow((Tr), (b * c)))); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + a = this.parameters[0]; + b = this.parameters[1]; + c = this.parameters[2]; + double t = temperature; + double TC = getComponent().getTC(); + double Tr = (t / TC); + return Math.pow(Tr, (c * (b - 1))) * (c * c) * (b - 1) * (b - 1) / (t * t) + * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) + - Math.pow(Tr, (c * (b - 1))) * c * (b - 1) / (t * t) + * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) + - 2 * Math.pow(Tr, (c * (b - 1))) * (c * c) * (b - 1) / (t * t) * a * Math.pow(Tr, (b * c)) + * b * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) + - Math.pow(Tr, (c * (b - 1))) * a * Math.pow(Tr, (b * c)) * (b * b) * (c * c) / (t * t) + * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) + + Math.pow(Tr, (c * (b - 1))) * a * Math.pow(Tr, (b * c)) * b * c / (t * t) + * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) + + Math.pow(Tr, (c * (b - 1))) * (a * a) * (Math.pow(Tr, (2 * b * c))) * (b * b) * (c * c) + / (t * t) * Math.exp(a * (1 - Math.pow(Tr, (b * c)))); + } + + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getComponent().geta() * diffalphaT(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getComponent().geta() * diffdiffalphaT(temperature); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoonStatoil.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoonStatoil.java index 1a98a61be0..59a0567663 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoonStatoil.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermTwuCoonStatoil.java @@ -11,151 +11,160 @@ * @version $Id: $Id */ public class AttractiveTermTwuCoonStatoil extends AttractiveTermBaseClass { - private static final long serialVersionUID = 1000; - - private double a = 0.0, b = 0.0, c = 0.0; - - /** - *

- * Constructor for AttractiveTermTwuCoonStatoil. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermTwuCoonStatoil(ComponentEosInterface component) { - super(component); - a = this.parameters[0]; - b = this.parameters[1]; - c = this.parameters[2]; + private static final long serialVersionUID = 1000; + + private double a = 0.0; + private double b = 0.0; + private double c = 0.0; + + /** + *

+ * Constructor for AttractiveTermTwuCoonStatoil. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermTwuCoonStatoil(ComponentEosInterface component) { + super(component); + a = this.parameters[0]; + b = this.parameters[1]; + c = this.parameters[2]; + } + + /** + *

+ * Constructor for AttractiveTermTwuCoonStatoil. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param params an array of type double + */ + public AttractiveTermTwuCoonStatoil(ComponentEosInterface component, double[] params) { + this(component); + // this.parameters [0] for aa benytte gitte input parametre + System.arraycopy(params, 0, this.parameters, 0, params.length); + } + + /** {@inheritDoc} */ + @Override + public AttractiveTermTwuCoonStatoil clone() { + AttractiveTermTwuCoonStatoil attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermTwuCoonStatoil) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * Constructor for AttractiveTermTwuCoonStatoil. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - * @param params an array of {@link double} objects - */ - public AttractiveTermTwuCoonStatoil(ComponentEosInterface component, double[] params) { - this(component); - // this.parameters [0] for aa benytte gitte input parametre - System.arraycopy(params, 0, this.parameters, 0, params.length); - } - - /** {@inheritDoc} */ - @Override - public AttractiveTermTwuCoonStatoil clone() { - AttractiveTermTwuCoonStatoil attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermTwuCoonStatoil) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return attractiveTerm; - } - - /** {@inheritDoc} */ - @Override - public void init() { - // m = (0.48508 + 1.55191 * component.getAcentricFactor() - 0.15613 * - // component.getAcentricFactor() * component.getAcentricFactor()); - } - - /** {@inheritDoc} */ - @Override - public double alpha(double temperature) { - a = this.parameters[0]; - b = this.parameters[1]; - c = this.parameters[2]; - - double t = temperature; - double TC = getComponent().getTC(); - double Tr = (t / TC); - // System.out.println("alpha here " + Math.pow( 1.0 + - // m*(1.0-Math.sqrt(temperature/component.getTC()))-parameters[0]*(1.0-temperature/component.getTC())*(1.0+parameters[1]*temperature/component.getTC()+parameters[2]*Math.pow(temperature/component.getTC(),2.0)),2.0)); - return Math.pow((Tr), (c * (b - 1))) * Math.exp(a * (1 - Math.pow((Tr), (b * c)))); - } - - // private double alphaCrit(double temperature){ - // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); - // d = 1.0-1.0/d; - // return Math.pow(Math.exp(c*(1.0-Math.pow(temperature/component.getTC(),1.0*d))),2.0); - // } - - // private double diffalphaCritT(double temperature){ - // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); - // d = 1.0-1.0/d; - // return - // -2.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/component.getTC(),1.0*d))),2.0)*c*Math.pow(temperature/component.getTC(),1.0*d)*d/temperature; - // } - - // private double diffdiffalphaCritT(double temperature){ - // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); - // d = 1-1.0/d; - // double TC = component.getTC(); - // return - // 4.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0)*c*c*Math.pow(Math.pow(temperature/TC,1.0*d),2.0)*d*d/(temperature*temperature)-2.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0)*c*Math.pow(temperature/TC,1.0*d)*d*d/(temperature* - // temperature)+2.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0)*c*Math.pow( - // temperature/TC,1.0*d)*d/(temperature*temperature); - // } - - /** {@inheritDoc} */ - @Override - public double aT(double temperature) { - return getComponent().geta() * alpha(temperature); - } - - /** {@inheritDoc} */ - @Override - public double diffalphaT(double temperature) { - a = this.parameters[0]; - b = this.parameters[1]; - c = this.parameters[2]; - - double t = temperature; - double TC = getComponent().getTC(); - double Tr = (t / TC); - - return Math.pow((Tr), (c * (b - 1))) * c * (b - 1) / t - * Math.exp(a * (1 - Math.pow((Tr), (b * c)))) - - Math.pow((Tr), (c * (b - 1))) * a * Math.pow((Tr), (b * c)) * b * c / t - * Math.exp(a * (1 - Math.pow((Tr), (b * c)))); - } - - /** {@inheritDoc} */ - @Override - public double diffdiffalphaT(double temperature) { - a = this.parameters[0]; - b = this.parameters[1]; - c = this.parameters[2]; - double t = temperature; - double TC = getComponent().getTC(); - double Tr = (t / TC); - return Math.pow(Tr, (c * (b - 1))) * (c * c) * (b - 1) * (b - 1) / (t * t) - * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) - - Math.pow(Tr, (c * (b - 1))) * c * (b - 1) / (t * t) - * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) - - 2 * Math.pow(Tr, (c * (b - 1))) * (c * c) * (b - 1) / (t * t) * a - * Math.pow(Tr, (b * c)) * b * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) - - Math.pow(Tr, (c * (b - 1))) * a * Math.pow(Tr, (b * c)) * (b * b) * (c * c) - / (t * t) * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) - + Math.pow(Tr, (c * (b - 1))) * a * Math.pow(Tr, (b * c)) * b * c / (t * t) - * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) - + Math.pow(Tr, (c * (b - 1))) * (a * a) * (Math.pow(Tr, (2 * b * c))) * (b * b) - * (c * c) / (t * t) * Math.exp(a * (1 - Math.pow(Tr, (b * c)))); - } - - /** {@inheritDoc} */ - @Override - public double diffaT(double temperature) { - return getComponent().geta() * diffalphaT(temperature); - } - - /** {@inheritDoc} */ - @Override - public double diffdiffaT(double temperature) { - return getComponent().geta() * diffdiffalphaT(temperature); - } + return attractiveTerm; + } + + /** {@inheritDoc} */ + @Override + public void init() { + // m = (0.48508 + 1.55191 * component.getAcentricFactor() - 0.15613 * + // component.getAcentricFactor() * component.getAcentricFactor()); + } + + /** {@inheritDoc} */ + @Override + public double alpha(double temperature) { + a = this.parameters[0]; + b = this.parameters[1]; + c = this.parameters[2]; + + double t = temperature; + double TC = getComponent().getTC(); + double Tr = (t / TC); + // System.out.println("alpha here " + Math.pow( 1.0 + + // m*(1.0-Math.sqrt(temperature/component.getTC())) - + // parameters[0]*(1.0-temperature/component.getTC()) * + // (1.0+parameters[1]*temperature/component.getTC() + + // parameters[2]*Math.pow(temperature/component.getTC(),2.0)),2.0)); + return Math.pow((Tr), (c * (b - 1))) * Math.exp(a * (1 - Math.pow((Tr), (b * c)))); + } + + // private double alphaCrit(double temperature){ + // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); + // d = 1.0-1.0/d; + // return Math.pow(Math.exp(c*(1.0-Math.pow(temperature/component.getTC(),1.0*d))),2.0); + // } + + // private double diffalphaCritT(double temperature){ + // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); + // d = 1.0-1.0/d; + // return + // -2.0*Math.pow(Math.exp(c*(1.0 + // - + // Math.pow(temperature/component.getTC(),1.0*d))),2.0)*c*Math.pow(temperature/component.getTC(),1.0*d)*d/temperature; + // } + + // private double diffdiffalphaCritT(double temperature){ + // c = 1+m/2.0-parameters[0]*(1.0+parameters[1]+parameters[2]); + // d = 1-1.0/d; + // double TC = component.getTC(); + // return + // 4.0 * Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0) * + // c*c*Math.pow(Math.pow(temperature/TC,1.0*d),2.0)*d*d/(temperature*temperature)-2.0 * + // Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0)*c*Math.pow(temperature/TC,1.0*d)*d*d/(temperature* + // temperature)+2.0*Math.pow(Math.exp(c*(1.0-Math.pow(temperature/TC,1.0*d))),2.0)*c*Math.pow( + // temperature/TC,1.0*d)*d/(temperature*temperature); + // } + + /** {@inheritDoc} */ + @Override + public double aT(double temperature) { + return getComponent().geta() * alpha(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffalphaT(double temperature) { + a = this.parameters[0]; + b = this.parameters[1]; + c = this.parameters[2]; + + double t = temperature; + double TC = getComponent().getTC(); + double Tr = (t / TC); + + return Math.pow((Tr), (c * (b - 1))) * c * (b - 1) / t + * Math.exp(a * (1 - Math.pow((Tr), (b * c)))) + - Math.pow((Tr), (c * (b - 1))) * a * Math.pow((Tr), (b * c)) * b * c / t + * Math.exp(a * (1 - Math.pow((Tr), (b * c)))); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffalphaT(double temperature) { + a = this.parameters[0]; + b = this.parameters[1]; + c = this.parameters[2]; + double t = temperature; + double TC = getComponent().getTC(); + double Tr = (t / TC); + return Math.pow(Tr, (c * (b - 1))) * (c * c) * (b - 1) * (b - 1) / (t * t) + * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) + - Math.pow(Tr, (c * (b - 1))) * c * (b - 1) / (t * t) + * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) + - 2 * Math.pow(Tr, (c * (b - 1))) * (c * c) * (b - 1) / (t * t) * a * Math.pow(Tr, (b * c)) + * b * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) + - Math.pow(Tr, (c * (b - 1))) * a * Math.pow(Tr, (b * c)) * (b * b) * (c * c) / (t * t) + * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) + + Math.pow(Tr, (c * (b - 1))) * a * Math.pow(Tr, (b * c)) * b * c / (t * t) + * Math.exp(a * (1 - Math.pow(Tr, (b * c)))) + + Math.pow(Tr, (c * (b - 1))) * (a * a) * (Math.pow(Tr, (2 * b * c))) * (b * b) * (c * c) + / (t * t) * Math.exp(a * (1 - Math.pow(Tr, (b * c)))); + } + + /** {@inheritDoc} */ + @Override + public double diffaT(double temperature) { + return getComponent().geta() * diffalphaT(temperature); + } + + /** {@inheritDoc} */ + @Override + public double diffdiffaT(double temperature) { + return getComponent().geta() * diffdiffalphaT(temperature); + } } diff --git a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermUMRPRU.java b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermUMRPRU.java index f73694c649..39c2588861 100644 --- a/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermUMRPRU.java +++ b/src/main/java/neqsim/thermo/component/attractiveEosTerm/AttractiveTermUMRPRU.java @@ -11,42 +11,42 @@ * @version $Id: $Id */ public class AttractiveTermUMRPRU extends AttractiveTermPr { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for AttractiveTermUMRPRU. - *

- * - * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object - */ - public AttractiveTermUMRPRU(ComponentEosInterface component) { - super(component); - m = (0.384401 + 1.52276 * component.getAcentricFactor() - - 0.213808 * component.getAcentricFactor() * component.getAcentricFactor() - + 0.034616 * Math.pow(component.getAcentricFactor(), 3.0) - - 0.001976 * Math.pow(component.getAcentricFactor(), 4.0)); - } - - /** {@inheritDoc} */ - @Override - public AttractiveTermUMRPRU clone() { - AttractiveTermUMRPRU attractiveTerm = null; - try { - attractiveTerm = (AttractiveTermUMRPRU) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for AttractiveTermUMRPRU. + *

+ * + * @param component a {@link neqsim.thermo.component.ComponentEosInterface} object + */ + public AttractiveTermUMRPRU(ComponentEosInterface component) { + super(component); + m = (0.384401 + 1.52276 * component.getAcentricFactor() + - 0.213808 * component.getAcentricFactor() * component.getAcentricFactor() + + 0.034616 * Math.pow(component.getAcentricFactor(), 3.0) + - 0.001976 * Math.pow(component.getAcentricFactor(), 4.0)); + } - return attractiveTerm; + /** {@inheritDoc} */ + @Override + public AttractiveTermUMRPRU clone() { + AttractiveTermUMRPRU attractiveTerm = null; + try { + attractiveTerm = (AttractiveTermUMRPRU) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init() { - m = (0.384401 + 1.52276 * getComponent().getAcentricFactor() - - 0.213808 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor() - + 0.034616 * Math.pow(getComponent().getAcentricFactor(), 3.0) - - 0.001976 * Math.pow(getComponent().getAcentricFactor(), 4.0)); - } + return attractiveTerm; + } + + /** {@inheritDoc} */ + @Override + public void init() { + m = (0.384401 + 1.52276 * getComponent().getAcentricFactor() + - 0.213808 * getComponent().getAcentricFactor() * getComponent().getAcentricFactor() + + 0.034616 * Math.pow(getComponent().getAcentricFactor(), 3.0) + - 0.001976 * Math.pow(getComponent().getAcentricFactor(), 4.0)); + } } diff --git a/src/main/java/neqsim/thermo/mixingRule/CPAMixing.java b/src/main/java/neqsim/thermo/mixingRule/CPAMixing.java index 60daa21ee2..a1e9cac4b6 100644 --- a/src/main/java/neqsim/thermo/mixingRule/CPAMixing.java +++ b/src/main/java/neqsim/thermo/mixingRule/CPAMixing.java @@ -3,6 +3,7 @@ * * Created on 4. juni 2000, 12:38 */ + package neqsim.thermo.mixingRule; import org.apache.logging.log4j.LogManager; @@ -23,787 +24,746 @@ * @version $Id: $Id */ public class CPAMixing implements Cloneable, ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(CPAMixing.class); - - int[][] assosSchemeType = null; // 0- ER - 1 - CR1 - double[][] cpaBetaCross = null; - double[][] cpaEpsCross = null; - final int[] charge4C = {1, 1, -1, -1}; - final int[] charge1A = {-1}; - final int[] charge2A = {-1, -1}; - final int[] charge2B = {1, -1}; - - /** - *

- * Constructor for CPAMixing. - *

- */ - public CPAMixing() {} - - /** {@inheritDoc} */ - @Override - public CPAMixing clone() { - CPAMixing clonedSystem = null; - try { - clonedSystem = (CPAMixing) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedSystem; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(CPAMixing.class); + + int[][] assosSchemeType = null; // 0- ER - 1 - CR1 + double[][] cpaBetaCross = null; + double[][] cpaEpsCross = null; + final int[] charge4C = {1, 1, -1, -1}; + final int[] charge1A = {-1}; + final int[] charge2A = {-1, -1}; + final int[] charge2B = {1, -1}; + + /** + *

+ * Constructor for CPAMixing. + *

+ */ + public CPAMixing() {} + + /** {@inheritDoc} */ + @Override + public CPAMixing clone() { + CPAMixing clonedSystem = null; + try { + clonedSystem = (CPAMixing) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - public class CPA_Radoch_base implements CPAMixingInterface { - private static final long serialVersionUID = 1000; - - double eps = 12000.76; - double beta = 0.03; - protected double[][] epsab = - {{0, eps, eps, eps}, {eps, 0, eps, eps}, {eps, eps, 0, eps}, {eps, eps, eps, 0}}; - protected double[][] betamat = {{0, beta, beta, beta}, {beta, 0, beta, beta}, - {beta, beta, 0, beta}, {beta, beta, beta, 0}}; - - public double calcXi(int siteNumber, int compnumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - return 1.0; - } - - @Override - public double calcXi(int[][][] assosScheme, int[][][][] assosScheme2, int siteNumber, - int compnumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - return 1.0; - } - - @Override - public double calcDelta(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1.0; - } - - @Override - public double calcDeltaNog(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1.0; - } + return clonedSystem; + } - @Override - public double calcDeltadN(int derivativeComp, int siteNumber1, int siteNumber2, - int compnumb1, int compnumb2, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - return 1.0; - } + public class CPA_Radoch_base implements CPAMixingInterface { + private static final long serialVersionUID = 1000; - @Override - public double calcDeltadT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1.0; - } + double eps = 12000.76; + double beta = 0.03; + protected double[][] epsab = + {{0, eps, eps, eps}, {eps, 0, eps, eps}, {eps, eps, 0, eps}, {eps, eps, eps, 0}}; + protected double[][] betamat = {{0, beta, beta, beta}, {beta, 0, beta, beta}, + {beta, beta, 0, beta}, {beta, beta, beta, 0}}; - @Override - public double calcDeltadV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1.0; - } + public double calcXi(int siteNumber, int compnumb, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + return 1.0; + } - @Override - public double calcDeltadTdT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1.0; - } + @Override + public double calcXi(int[][][] assosScheme, int[][][][] assosScheme2, int siteNumber, + int compnumb, PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return 1.0; + } - @Override - public double calcDeltadTdV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1.0; - } + @Override + public double calcDelta(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return 1.0; } - public class CPA_Radoch extends CPA_Radoch_base { - private static final long serialVersionUID = 1000; + @Override + public double calcDeltaNog(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return 1.0; + } - public double getCrossAssociationEnergy(int compnumb1, int compnumb2, PhaseInterface phase, - double temperature, double pressure, int numbcomp) { - if (Math.abs(cpaEpsCross[compnumb1][compnumb2]) > 1e-10) { - // double ec = (phase.getComponent(compnumb1).getAssociationEnergy() + - // phase.getComponent(compnumb2).getAssociationEnergy()) / 2.0; + @Override + public double calcDeltadN(int derivativeComp, int siteNumber1, int siteNumber2, int compnumb1, + int compnumb2, PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return 1.0; + } - // System.out.println("epscross " + ec + " .. " + - // cpaEpsCross[compnumb1][compnumb2]); - return cpaEpsCross[compnumb1][compnumb2]; - } - return (phase.getComponent(compnumb1).getAssociationEnergy() - + phase.getComponent(compnumb2).getAssociationEnergy()) / 2.0; - } + @Override + public double calcDeltadT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return 1.0; + } - public double getCrossAssociationVolume(int compnumb1, int compnumb2, PhaseInterface phase, - double temperature, double pressure, int numbcomp) { - // System.out.println("ass vol " + - // Math.sqrt(phase.getComponent(compnumb1).getAssociationVolume()*phase.getComponent(compnumb2).getAssociationVolume())); - if (Math.abs(cpaBetaCross[compnumb1][compnumb2]) > 1e-10) { - // System.out.println("betacorss here " + cpaBetaCross[compnumb1][compnumb2] +" - // epscorss " + getCrossAssociationEnergy(siteNumber1, siteNumber2, compnumb1, - // compnumb2, phase, temperature, pressure, numbcomp)); - return cpaBetaCross[compnumb1][compnumb2]; - } - return Math.sqrt(phase.getComponent(compnumb1).getAssociationVolume() - * phase.getComponent(compnumb2).getAssociationVolume()); - } + @Override + public double calcDeltadV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return 1.0; + } - @Override - public double calcDelta(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - if (assosSchemeType[compnumb1][compnumb2] == 0) { - double temp2 = 0; - double temp1 = (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - if (compnumb1 == compnumb2) { - temp2 = temp1; - } else { - temp2 = (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)) - .getb()) - / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - } - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) * Math.sqrt(temp1 * temp2); - } - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) - * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - } + @Override + public double calcDeltadTdT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return 1.0; + } - @Override - public double calcDeltaNog(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - if (assosSchemeType[compnumb1][compnumb2] == 0) { - double temp2 = 0; - double temp1 = (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, - pressure, numbcomp); - if (compnumb1 == compnumb2) { - temp2 = temp1; - } else { - temp2 = (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)) - .getb()) - / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp); - } - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) * Math.sqrt(temp1 * temp2); - } - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) - * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp); - } + @Override + public double calcDeltadTdV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return 1.0; + } + } - public double calcDelta(int compnumb1, int compnumb2, PhaseInterface phase, - double temperature, double pressure, int numbcomp) { - if (assosSchemeType[compnumb1][compnumb2] == 0) { - double temp2 = 0; - double temp1 = (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - if (compnumb1 == compnumb2) { - temp2 = temp1; - } else { - temp2 = (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)) - .getb()) - / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - } - return Math.sqrt(temp1 * temp2); - } - return (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - } + public class CPA_Radoch extends CPA_Radoch_base { + private static final long serialVersionUID = 1000; - @Override - public double calcDeltadN(int derivativeComp, int siteNumber1, int siteNumber2, - int compnumb1, int compnumb2, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) - * calcDelta(compnumb1, compnumb2, phase, temperature, pressure, numbcomp) - * ((ComponentSrkCPA) phase.getComponent(derivativeComp)).calc_lngi(phase); - } + public double getCrossAssociationEnergy(int compnumb1, int compnumb2, PhaseInterface phase, + double temperature, double pressure, int numbcomp) { + if (Math.abs(cpaEpsCross[compnumb1][compnumb2]) > 1e-10) { + // double ec = (phase.getComponent(compnumb1).getAssociationEnergy() + + // phase.getComponent(compnumb2).getAssociationEnergy()) / 2.0; + + // System.out.println("epscross " + ec + " .. " + + // cpaEpsCross[compnumb1][compnumb2]); + return cpaEpsCross[compnumb1][compnumb2]; + } + return (phase.getComponent(compnumb1).getAssociationEnergy() + + phase.getComponent(compnumb2).getAssociationEnergy()) / 2.0; + } - @Override - public double calcDeltadT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - if (assosSchemeType[compnumb1][compnumb2] == 0) { - double derivative1 = -getCrossAssociationEnergy(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) - / (R * phase.getTemperature() * phase.getTemperature()) - * (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature()))) - * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - double temp1 = derivative1 - * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature())) - - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - - double derivative2 = -getCrossAssociationEnergy(compnumb1, compnumb1, phase, - temperature, pressure, numbcomp) - / (R * phase.getTemperature() * phase.getTemperature()) - * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature()))) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - double temp2 = derivative2 - * (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature())) - - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) * 0.5 - / calcDelta(siteNumber1, siteNumber2, compnumb1, compnumb2, phase, - temperature, pressure, numbcomp) - * (temp1 + temp2); - } - double derivative = -getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) / (R * phase.getTemperature() * phase.getTemperature()); - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) - * derivative - * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - } + public double getCrossAssociationVolume(int compnumb1, int compnumb2, PhaseInterface phase, + double temperature, double pressure, int numbcomp) { + // System.out.println("ass vol " + + // Math.sqrt(phase.getComponent(compnumb1).getAssociationVolume()*phase.getComponent(compnumb2).getAssociationVolume())); + if (Math.abs(cpaBetaCross[compnumb1][compnumb2]) > 1e-10) { + // System.out.println("betacorss here " + cpaBetaCross[compnumb1][compnumb2] +" + // epscorss " + getCrossAssociationEnergy(siteNumber1, siteNumber2, compnumb1, + // compnumb2, phase, temperature, pressure, numbcomp)); + return cpaBetaCross[compnumb1][compnumb2]; + } + return Math.sqrt(phase.getComponent(compnumb1).getAssociationVolume() + * phase.getComponent(compnumb2).getAssociationVolume()); + } - @Override - public double calcDeltadV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) - * calcDelta(compnumb1, compnumb2, phase, temperature, pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpav(); + @Override + public double calcDelta(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + if (assosSchemeType[compnumb1][compnumb2] == 0) { + double temp2 = 0; + double temp1 = (Math.exp( + getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, pressure, numbcomp) + / (R * phase.getTemperature())) + - 1.0) + * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, pressure, + numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); + if (compnumb1 == compnumb2) { + temp2 = temp1; + } else { + temp2 = (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) + * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, temperature, pressure, + numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); } + return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, + siteNumber1, siteNumber2) * Math.sqrt(temp1 * temp2); + } + return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, + siteNumber1, siteNumber2) + * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, pressure, + numbcomp) / (R * phase.getTemperature())) - 1.0) + * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) + / 2.0 + * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, pressure, numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); + } - @Override - public double calcDeltadTdV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - if (assosSchemeType[compnumb1][compnumb2] == 0) { - if (((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) == 1) { - double tempDelta = - calcDelta(compnumb2, compnumb2, phase, temperature, pressure, numbcomp); - // double temp2 = calcDelta(compnumb2, compnumb2, phase, temperature, pressure, - // numbcomp); - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, - compnumb2, siteNumber1, siteNumber2) * 0.5 * Math.pow(tempDelta, -1.0) - * 2.0 - * calcDeltadT(siteNumber1, siteNumber2, compnumb1, compnumb2, phase, - temperature, pressure, numbcomp) - * tempDelta * ((PhaseCPAInterface) phase).getGcpav(); - } else { - return 0.0; - } - } - double derivative = -getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) / (R * phase.getTemperature() * phase.getTemperature()); - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) - * derivative - * Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) / (R * phase.getTemperature())) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) - / 2.0 - * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, pressure, - numbcomp) - * ((PhaseCPAInterface) phase).getGcpa() - * ((PhaseCPAInterface) phase).getGcpav(); + @Override + public double calcDeltaNog(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + if (assosSchemeType[compnumb1][compnumb2] == 0) { + double temp2 = 0; + double temp1 = (Math.exp( + getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, pressure, numbcomp) + / (R * phase.getTemperature())) + - 1.0) + * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, pressure, + numbcomp); + if (compnumb1 == compnumb2) { + temp2 = temp1; + } else { + temp2 = (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) + * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, temperature, pressure, + numbcomp); } + return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, + siteNumber1, siteNumber2) * Math.sqrt(temp1 * temp2); + } + return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, + siteNumber1, siteNumber2) + * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, pressure, + numbcomp) / (R * phase.getTemperature())) - 1.0) + * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) + / 2.0 + * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, pressure, numbcomp); + } - @Override - public double calcDeltadTdT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp) { - if (assosSchemeType[compnumb1][compnumb2] == 0) { - double deltaj = 0; - double deltai = - calcDelta(compnumb1, compnumb1, phase, temperature, pressure, numbcomp); - if (compnumb1 == compnumb2) { - deltaj = deltai; - } else { - deltaj = calcDelta(compnumb2, compnumb2, phase, temperature, pressure, - numbcomp); - } - - double dDeltaidT = -getCrossAssociationEnergy(compnumb1, compnumb1, phase, - temperature, pressure, numbcomp) - / (R * phase.getTemperature() * phase.getTemperature()) - * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature()))) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - double dDeltajdT = -getCrossAssociationEnergy(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) - / (R * phase.getTemperature() * phase.getTemperature()) - * (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature()))) - * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - - double dDeltajdTdT = (2.0 - * getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, - pressure, numbcomp) - / (R * phase.getTemperature() * phase.getTemperature() - * phase.getTemperature()) - * (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature()))) - + Math.pow( - getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, - pressure, numbcomp) - / (R * phase.getTemperature() * phase.getTemperature()), - 2.0) - * Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, - temperature, pressure, numbcomp) - / (R * phase.getTemperature()))) - * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - double dDeltaidTdT = (2.0 - * getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, - pressure, numbcomp) - / (R * phase.getTemperature() * phase.getTemperature() - * phase.getTemperature()) - * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature()))) - + Math.pow( - getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, - pressure, numbcomp) - / (R * phase.getTemperature() * phase.getTemperature()), - 2.0) - * Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, - temperature, pressure, numbcomp) - / (R * phase.getTemperature()))) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, - pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); - - double deltajjdeltaii = Math.pow(calcDelta(siteNumber1, siteNumber2, compnumb1, - compnumb2, phase, temperature, pressure, numbcomp), 2.0); - - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) - * (-1.0 / 4.0 * Math.pow(deltajjdeltaii, -3.0 / 2.0) - * Math.pow(dDeltaidT * deltaj + dDeltajdT * deltai, 2.0) - + 0.5 * Math.pow(deltajjdeltaii, -1.0 / 2.0) * (dDeltaidTdT * deltaj - + 2.0 * dDeltaidT * dDeltajdT + dDeltajdTdT * deltai)); - } - - double derivative1 = - -getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, pressure, - numbcomp) / (R * phase.getTemperature() * phase.getTemperature()); - double derivative2 = 2.0 - * getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, pressure, - numbcomp) - / (R * phase.getTemperature() * phase.getTemperature() - * phase.getTemperature()); - - return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) - * derivative1 * derivative1 - * Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, - pressure, numbcomp) / (R * phase.getTemperature())) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) - / 2.0 - * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, pressure, - numbcomp) - * ((PhaseCPAInterface) phase).getGcpa() - + ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, - siteNumber1, siteNumber2) - * derivative2 - * Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, - temperature, pressure, numbcomp) / (R * phase.getTemperature())) - * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() - + ((ComponentEosInterface) phase.getComponent(compnumb2)) - .getb()) - / 2.0 * getCrossAssociationVolume(compnumb1, compnumb2, phase, - temperature, pressure, numbcomp) - * ((PhaseCPAInterface) phase).getGcpa(); + public double calcDelta(int compnumb1, int compnumb2, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + if (assosSchemeType[compnumb1][compnumb2] == 0) { + double temp2 = 0; + double temp1 = (Math.exp( + getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, pressure, numbcomp) + / (R * phase.getTemperature())) + - 1.0) + * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, pressure, + numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); + if (compnumb1 == compnumb2) { + temp2 = temp1; + } else { + temp2 = (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) + * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, temperature, pressure, + numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); } - // public double calcXi(int siteNumber, int compnumb, PhaseInterface phase, - // double temperature, double pressure, int numbcomp) { - // //System.out.println("scheme " + - // phase.getComponent(compnumb).getAssociationScheme()); - - // double Xi=0.0; - // double temp=0.0, temp2=0.0; - - // try{ - // for(int i=0;i - * getMixingRule. - *

- * - * @param i a int - * @return a {@link neqsim.thermo.mixingRule.CPAMixingInterface} object - */ - public CPAMixingInterface getMixingRule(int i) { - if (i == 1) { - return new CPA_Radoch(); - } else if (i == 2) { - return new CPA_Radoch(); - } else if (i == 3) { - return new PCSAFTa_Radoch(); + @Override + public double calcDeltadTdV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + if (assosSchemeType[compnumb1][compnumb2] == 0) { + if (((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, siteNumber1, + siteNumber2) == 1) { + double tempDelta = + calcDelta(compnumb2, compnumb2, phase, temperature, pressure, numbcomp); + // double temp2 = calcDelta(compnumb2, compnumb2, phase, temperature, pressure, + // numbcomp); + return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, + siteNumber1, siteNumber2) * 0.5 * Math.pow(tempDelta, -1.0) * 2.0 + * calcDeltadT(siteNumber1, siteNumber2, compnumb1, compnumb2, phase, temperature, + pressure, numbcomp) + * tempDelta * ((PhaseCPAInterface) phase).getGcpav(); } else { - return new CPA_Radoch(); + return 0.0; } + } + double derivative = + -getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, pressure, numbcomp) + / (R * phase.getTemperature() * phase.getTemperature()); + return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, + siteNumber1, siteNumber2) * derivative + * Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, pressure, + numbcomp) / (R * phase.getTemperature())) + * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) + / 2.0 + * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, pressure, numbcomp) + * ((PhaseCPAInterface) phase).getGcpa() * ((PhaseCPAInterface) phase).getGcpav(); } - /** - *

- * getMixingRule. - *

- * - * @param i a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a {@link neqsim.thermo.mixingRule.CPAMixingInterface} object - */ - public CPAMixingInterface getMixingRule(int i, PhaseInterface phase) { - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - assosSchemeType = new int[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - cpaBetaCross = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - cpaEpsCross = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - - for (int k = 0; k < phase.getNumberOfComponents(); k++) { - String component_name = phase.getComponents()[k].getComponentName(); - java.sql.ResultSet dataSet = null; - - for (int l = k; l < phase.getNumberOfComponents(); l++) { - if (k == l || phase.getComponent(l).getNumberOfAssociationSites() == 0 - || phase.getComponent(k).getNumberOfAssociationSites() == 0) { - } else { - try { - // database = new util.database.NeqSimDataBase(); - if (NeqSimDataBase.createTemporaryTables()) { - dataSet = database.getResultSet("SELECT * FROM intertemp WHERE (comp1='" - + component_name + "' AND comp2='" - + phase.getComponents()[l].getComponentName() + "') OR (comp1='" - + phase.getComponents()[l].getComponentName() + "' AND comp2='" - + component_name + "')"); - } else { - dataSet = database.getResultSet("SELECT * FROM inter WHERE (comp1='" - + component_name + "' AND comp2='" - + phase.getComponents()[l].getComponentName() + "') OR (comp1='" - + phase.getComponents()[l].getComponentName() + "' AND comp2='" - + component_name + "')"); - } - if (dataSet.next()) { - assosSchemeType[k][l] = Integer - .parseInt(dataSet.getString("cpaAssosiationType").trim()); - assosSchemeType[l][k] = assosSchemeType[k][l]; - - cpaBetaCross[k][l] = - Double.parseDouble(dataSet.getString("cpaBetaCross").trim()); - cpaBetaCross[l][k] = cpaBetaCross[k][l]; - - cpaEpsCross[k][l] = - Double.parseDouble(dataSet.getString("cpaEpsCross").trim()); - cpaEpsCross[l][k] = cpaEpsCross[k][l]; - } - // System.out.println("ass scheme " + assosSchemeType[l][k]); - // System.out.println("cpaEpsCross[k][l] " + cpaEpsCross[k][l]); - } catch (Exception e) { - logger.error("error", e); - } - } - } - } - try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error", e); - } - - if (i == 1) { - return new CPA_Radoch(); - } else if (i == 2) { - return new CPA_Radoch(); - } else if (i == 3) { - return new PCSAFTa_Radoch(); + @Override + public double calcDeltadTdT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + if (assosSchemeType[compnumb1][compnumb2] == 0) { + double deltaj = 0; + double deltai = calcDelta(compnumb1, compnumb1, phase, temperature, pressure, numbcomp); + if (compnumb1 == compnumb2) { + deltaj = deltai; } else { - return new CPA_Radoch(); + deltaj = calcDelta(compnumb2, compnumb2, phase, temperature, pressure, numbcomp); } + + double dDeltaidT = -getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature() * phase.getTemperature()) + * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature()))) + * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, + pressure, numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); + double dDeltajdT = -getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature() * phase.getTemperature()) + * (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature()))) + * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, temperature, + pressure, numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); + + double dDeltajdTdT = (2.0 + * getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, pressure, + numbcomp) + / (R * phase.getTemperature() * phase.getTemperature() * phase.getTemperature()) + * (Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature()))) + + Math + .pow(getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, pressure, + numbcomp) / (R * phase.getTemperature() * phase.getTemperature()), 2.0) + * Math.exp(getCrossAssociationEnergy(compnumb2, compnumb2, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature()))) + * (((ComponentEosInterface) phase.getComponent(compnumb2)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb2, compnumb2, phase, temperature, pressure, + numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); + double dDeltaidTdT = (2.0 + * getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, pressure, + numbcomp) + / (R * phase.getTemperature() * phase.getTemperature() * phase.getTemperature()) + * (Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature()))) + + Math + .pow(getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, pressure, + numbcomp) / (R * phase.getTemperature() * phase.getTemperature()), 2.0) + * Math.exp(getCrossAssociationEnergy(compnumb1, compnumb1, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature()))) + * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb1)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb1, compnumb1, phase, temperature, pressure, + numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); + + double deltajjdeltaii = Math.pow(calcDelta(siteNumber1, siteNumber2, compnumb1, compnumb2, + phase, temperature, pressure, numbcomp), 2.0); + + return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, + siteNumber1, siteNumber2) + * (-1.0 / 4.0 * Math.pow(deltajjdeltaii, -3.0 / 2.0) + * Math.pow(dDeltaidT * deltaj + dDeltajdT * deltai, 2.0) + + 0.5 * Math.pow(deltajjdeltaii, -1.0 / 2.0) + * (dDeltaidTdT * deltaj + 2.0 * dDeltaidT * dDeltajdT + dDeltajdTdT * deltai)); + } + + double derivative1 = + -getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, pressure, numbcomp) + / (R * phase.getTemperature() * phase.getTemperature()); + double derivative2 = 2.0 + * getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, pressure, numbcomp) + / (R * phase.getTemperature() * phase.getTemperature() * phase.getTemperature()); + + return ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, + siteNumber1, siteNumber2) * derivative1 * derivative1 + * Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, pressure, + numbcomp) / (R * phase.getTemperature())) + * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) + / 2.0 + * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, pressure, numbcomp) + * ((PhaseCPAInterface) phase).getGcpa() + + ((PhaseCPAInterface) phase).getCrossAssosiationScheme(compnumb1, compnumb2, siteNumber1, + siteNumber2) * derivative2 + * Math.exp(getCrossAssociationEnergy(compnumb1, compnumb2, phase, temperature, + pressure, numbcomp) / (R * phase.getTemperature())) + * (((ComponentEosInterface) phase.getComponent(compnumb1)).getb() + + ((ComponentEosInterface) phase.getComponent(compnumb2)).getb()) + / 2.0 * getCrossAssociationVolume(compnumb1, compnumb2, phase, temperature, pressure, + numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); } + // public double calcXi(int siteNumber, int compnumb, PhaseInterface phase, + // double temperature, double pressure, int numbcomp) { + // //System.out.println("scheme " + + // phase.getComponent(compnumb).getAssociationScheme()); + + // double Xi=0.0; + // double temp=0.0, temp2=0.0; + + // try{ + // for(int i=0;i - * resetMixingRule. - *

- * - * @param i a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a {@link neqsim.thermo.mixingRule.CPAMixingInterface} object - */ - public CPAMixingInterface resetMixingRule(int i, PhaseInterface phase) { - if (i == 1) { - return new CPA_Radoch(); - } else if (i == 2) { - return new CPA_Radoch(); - } else if (i == 3) { - return new PCSAFTa_Radoch(); - } else { - return new CPA_Radoch(); - } + public double getCrossAssociationEnergy(int siteNumber1, int siteNumber2, int compnumb1, + int compnumb2, PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return (phase.getComponent(compnumb1).getAssociationEnergySAFT() + + phase.getComponent(compnumb2).getAssociationEnergySAFT()) / 2.0; } - /** - *

- * setAssociationScheme. - *

- * - * @param compnumb a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return an array of {@link int} objects - */ - public int[][] setAssociationScheme(int compnumb, PhaseInterface phase) { - if (phase.getComponent(compnumb).getAssociationScheme().equals("4C")) { - return getInteractionMatrix(charge4C, charge4C); - } else if (phase.getComponent(compnumb).getAssociationScheme().equals("2B")) { - return getInteractionMatrix(charge2B, charge2B); - } else if (phase.getComponent(compnumb).getAssociationScheme().equals("1A")) { - return getInteractionMatrix(charge1A, charge1A); - } else if (phase.getComponent(compnumb).getAssociationScheme().equals("2A")) { - return getInteractionMatrix(charge2A, charge2A); - } else { - return new int[0][0]; - } + public double getCrossAssociationVolume(int siteNumber1, int siteNumber2, int compnumb1, + int compnumb2, PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double extrwterm = Math.pow(Math + .sqrt(((phase.getComponent(compnumb1).getSigmaSAFTi()) + * phase.getComponent(compnumb2).getSigmaSAFTi())) + / (0.5 * ((phase.getComponent(compnumb1).getSigmaSAFTi()) + + phase.getComponent(compnumb2).getSigmaSAFTi())), + 3.0); + // System.out.println("ass vol " + + // Math.sqrt(phase.getComponent(compnumb1).getAssociationVolume()*phase.getComponent(compnumb2).getAssociationVolume())); + return Math.sqrt(phase.getComponent(compnumb1).getAssociationVolumeSAFT() + * phase.getComponent(compnumb2).getAssociationVolumeSAFT()) * extrwterm; } - /** - *

- * setCrossAssociationScheme. - *

- * - * @param compnumb a int - * @param compnumb2 a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return an array of {@link int} objects - */ - public int[][] setCrossAssociationScheme(int compnumb, int compnumb2, PhaseInterface phase) { - int[] comp1Scheme = new int[0]; - int[] comp2Scheme = new int[0]; - if (phase.getComponent(compnumb).getOrginalNumberOfAssociationSites() - * phase.getComponent(compnumb2).getOrginalNumberOfAssociationSites() > 0) { - if (phase.getComponent(compnumb).getAssociationScheme().equals("4C")) { - comp1Scheme = charge4C; - } - if (phase.getComponent(compnumb).getAssociationScheme().equals("2A")) { - comp1Scheme = charge2A; - } - if (phase.getComponent(compnumb).getAssociationScheme().equals("2B")) { - comp1Scheme = charge2B; - } - if (phase.getComponent(compnumb).getAssociationScheme().equals("1A")) { - comp1Scheme = charge1A; + @Override + public double calcDelta(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp) { + // System.out.println("bsaft " + + // Math.pow((((ComponentEosInterface)phase.getComponent(compnumb1)).getSigmaSAFTi()+((ComponentEosInterface)phase.getComponent(compnumb2)).getSigmaSAFTi())/2.0,3.0)); + // System.out.println("bcpa " + + // (((ComponentEosInterface)phase.getComponent(compnumb1)).getb()+((ComponentEosInterface)phase.getComponent(compnumb2)).getb())/2.0); + + return (Math.exp(getCrossAssociationEnergy(siteNumber1, siteNumber2, compnumb1, compnumb2, + phase, temperature, pressure, numbcomp) / (R * phase.getTemperature())) - 1.0) + * Math.pow((phase.getComponent(compnumb1).getSigmaSAFTi() + + phase.getComponent(compnumb2).getSigmaSAFTi()) / 2.0, 3.0) + * 1.0e5 * ThermodynamicConstantsInterface.avagadroNumber + * getCrossAssociationVolume(siteNumber1, siteNumber2, compnumb1, compnumb2, phase, + temperature, pressure, numbcomp) + * ((PhaseCPAInterface) phase).getGcpa(); + } + } + + /** + *

+ * getMixingRule. + *

+ * + * @param i a int + * @return a {@link neqsim.thermo.mixingRule.CPAMixingInterface} object + */ + public CPAMixingInterface getMixingRule(int i) { + if (i == 1) { + return new CPA_Radoch(); + } else if (i == 2) { + return new CPA_Radoch(); + } else if (i == 3) { + return new PCSAFTa_Radoch(); + } else { + return new CPA_Radoch(); + } + } + + /** + *

+ * getMixingRule. + *

+ * + * @param i a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a {@link neqsim.thermo.mixingRule.CPAMixingInterface} object + */ + public CPAMixingInterface getMixingRule(int i, PhaseInterface phase) { + assosSchemeType = new int[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + cpaBetaCross = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + cpaEpsCross = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + + for (int k = 0; k < phase.getNumberOfComponents(); k++) { + String component_name = phase.getComponents()[k].getComponentName(); + java.sql.ResultSet dataSet = null; + + for (int l = k; l < phase.getNumberOfComponents(); l++) { + if (k == l || phase.getComponent(l).getNumberOfAssociationSites() == 0 + || phase.getComponent(k).getNumberOfAssociationSites() == 0) { + } else { + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { + // database = new util.database.NeqSimDataBase(); + if (NeqSimDataBase.createTemporaryTables()) { + dataSet = database.getResultSet("SELECT * FROM intertemp WHERE (comp1='" + + component_name + "' AND comp2='" + phase.getComponents()[l].getComponentName() + + "') OR (comp1='" + phase.getComponents()[l].getComponentName() + "' AND comp2='" + + component_name + "')"); + } else { + dataSet = database.getResultSet("SELECT * FROM inter WHERE (comp1='" + component_name + + "' AND comp2='" + phase.getComponents()[l].getComponentName() + "') OR (comp1='" + + phase.getComponents()[l].getComponentName() + "' AND comp2='" + component_name + + "')"); } + if (dataSet.next()) { + assosSchemeType[k][l] = + Integer.parseInt(dataSet.getString("cpaAssosiationType").trim()); + assosSchemeType[l][k] = assosSchemeType[k][l]; - if (phase.getComponent(compnumb2).getAssociationScheme().equals("4C")) { - comp2Scheme = charge4C; - } - if (phase.getComponent(compnumb2).getAssociationScheme().equals("2A")) { - comp2Scheme = charge2A; - } - if (phase.getComponent(compnumb2).getAssociationScheme().equals("2B")) { - comp2Scheme = charge2B; - } - if (phase.getComponent(compnumb2).getAssociationScheme().equals("1A")) { - comp2Scheme = charge1A; + cpaBetaCross[k][l] = Double.parseDouble(dataSet.getString("cpaBetaCross").trim()); + cpaBetaCross[l][k] = cpaBetaCross[k][l]; + + cpaEpsCross[k][l] = Double.parseDouble(dataSet.getString("cpaEpsCross").trim()); + cpaEpsCross[l][k] = cpaEpsCross[k][l]; } - } else { - return new int[0][0]; + // System.out.println("ass scheme " + assosSchemeType[l][k]); + // System.out.println("cpaEpsCross[k][l] " + cpaEpsCross[k][l]); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } - return getInteractionMatrix(comp1Scheme, comp2Scheme); + } } - /** - *

- * getInteractionMatrix. - *

- * - * @param comp1Scheme an array of {@link int} objects - * @param comp2Scheme an array of {@link int} objects - * @return an array of {@link int} objects - */ - public int[][] getInteractionMatrix(int[] comp1Scheme, int[] comp2Scheme) { - int[][] intMatrix = new int[comp1Scheme.length][comp2Scheme.length]; - for (int i = 0; i < comp1Scheme.length; i++) { - for (int j = 0; j < comp2Scheme.length; j++) { - if (comp1Scheme[i] * comp2Scheme[j] < 0) { - intMatrix[i][j] = 1; - } else { - intMatrix[i][j] = 0; - } - } + if (i == 1) { + return new CPA_Radoch(); + } else if (i == 2) { + return new CPA_Radoch(); + } else if (i == 3) { + return new PCSAFTa_Radoch(); + } else { + return new CPA_Radoch(); + } + } + + /** + *

+ * resetMixingRule. + *

+ * + * @param i a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a {@link neqsim.thermo.mixingRule.CPAMixingInterface} object + */ + public CPAMixingInterface resetMixingRule(int i, PhaseInterface phase) { + if (i == 1) { + return new CPA_Radoch(); + } else if (i == 2) { + return new CPA_Radoch(); + } else if (i == 3) { + return new PCSAFTa_Radoch(); + } else { + return new CPA_Radoch(); + } + } + + /** + *

+ * setAssociationScheme. + *

+ * + * @param compnumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return an array of {@link int} objects + */ + public int[][] setAssociationScheme(int compnumb, PhaseInterface phase) { + if (phase.getComponent(compnumb).getAssociationScheme().equals("4C")) { + return getInteractionMatrix(charge4C, charge4C); + } else if (phase.getComponent(compnumb).getAssociationScheme().equals("2B")) { + return getInteractionMatrix(charge2B, charge2B); + } else if (phase.getComponent(compnumb).getAssociationScheme().equals("1A")) { + return getInteractionMatrix(charge1A, charge1A); + } else if (phase.getComponent(compnumb).getAssociationScheme().equals("2A")) { + return getInteractionMatrix(charge2A, charge2A); + } else { + return new int[0][0]; + } + } + + /** + *

+ * setCrossAssociationScheme. + *

+ * + * @param compnumb a int + * @param compnumb2 a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return an array of {@link int} objects + */ + public int[][] setCrossAssociationScheme(int compnumb, int compnumb2, PhaseInterface phase) { + int[] comp1Scheme = new int[0]; + int[] comp2Scheme = new int[0]; + if (phase.getComponent(compnumb).getOrginalNumberOfAssociationSites() + * phase.getComponent(compnumb2).getOrginalNumberOfAssociationSites() > 0) { + if (phase.getComponent(compnumb).getAssociationScheme().equals("4C")) { + comp1Scheme = charge4C; + } + if (phase.getComponent(compnumb).getAssociationScheme().equals("2A")) { + comp1Scheme = charge2A; + } + if (phase.getComponent(compnumb).getAssociationScheme().equals("2B")) { + comp1Scheme = charge2B; + } + if (phase.getComponent(compnumb).getAssociationScheme().equals("1A")) { + comp1Scheme = charge1A; + } + + if (phase.getComponent(compnumb2).getAssociationScheme().equals("4C")) { + comp2Scheme = charge4C; + } + if (phase.getComponent(compnumb2).getAssociationScheme().equals("2A")) { + comp2Scheme = charge2A; + } + if (phase.getComponent(compnumb2).getAssociationScheme().equals("2B")) { + comp2Scheme = charge2B; + } + if (phase.getComponent(compnumb2).getAssociationScheme().equals("1A")) { + comp2Scheme = charge1A; + } + } else { + return new int[0][0]; + } + return getInteractionMatrix(comp1Scheme, comp2Scheme); + } + + /** + *

+ * getInteractionMatrix. + *

+ * + * @param comp1Scheme an array of {@link int} objects + * @param comp2Scheme an array of {@link int} objects + * @return an array of {@link int} objects + */ + public int[][] getInteractionMatrix(int[] comp1Scheme, int[] comp2Scheme) { + int[][] intMatrix = new int[comp1Scheme.length][comp2Scheme.length]; + for (int i = 0; i < comp1Scheme.length; i++) { + for (int j = 0; j < comp2Scheme.length; j++) { + if (comp1Scheme[i] * comp2Scheme[j] < 0) { + intMatrix[i][j] = 1; + } else { + intMatrix[i][j] = 0; } - return intMatrix; + } } + return intMatrix; + } } diff --git a/src/main/java/neqsim/thermo/mixingRule/CPAMixingInterface.java b/src/main/java/neqsim/thermo/mixingRule/CPAMixingInterface.java index 8a7441d115..2b751923f4 100644 --- a/src/main/java/neqsim/thermo/mixingRule/CPAMixingInterface.java +++ b/src/main/java/neqsim/thermo/mixingRule/CPAMixingInterface.java @@ -3,6 +3,7 @@ * * Created on 26. februar 2001, 19:38 */ + package neqsim.thermo.mixingRule; import neqsim.thermo.phase.PhaseInterface; @@ -16,151 +17,151 @@ * @version $Id: $Id */ public interface CPAMixingInterface extends java.io.Serializable { - // public double calcXi(int siteNumber, int compnumb, PhaseInterface phase, - // double temperature, double pressure, int numbcomp); + // public double calcXi(int siteNumber, int compnumb, PhaseInterface phase, + // double temperature, double pressure, int numbcomp); - /** - *

- * calcDeltadT. - *

- * - * @param siteNumber1 a int - * @param siteNumber2 a int - * @param compnumb1 a int - * @param compnumb2 a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcDeltadT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcDeltadT. + *

+ * + * @param siteNumber1 a int + * @param siteNumber2 a int + * @param compnumb1 a int + * @param compnumb2 a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcDeltadT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcDeltadTdV. - *

- * - * @param siteNumber1 a int - * @param siteNumber2 a int - * @param compnumb1 a int - * @param compnumb2 a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcDeltadTdV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcDeltadTdV. + *

+ * + * @param siteNumber1 a int + * @param siteNumber2 a int + * @param compnumb1 a int + * @param compnumb2 a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcDeltadTdV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcDeltadTdT. - *

- * - * @param siteNumber1 a int - * @param siteNumber2 a int - * @param compnumb1 a int - * @param compnumb2 a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcDeltadTdT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcDeltadTdT. + *

+ * + * @param siteNumber1 a int + * @param siteNumber2 a int + * @param compnumb1 a int + * @param compnumb2 a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcDeltadTdT(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcXi. - *

- * - * @param assosScheme an array of {@link int} objects - * @param assosScheme2 an array of {@link int} objects - * @param siteNumber a int - * @param compnumb a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcXi(int[][][] assosScheme, int[][][][] assosScheme2, int siteNumber, - int compnumb, PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcXi. + *

+ * + * @param assosScheme an array of {@link int} objects + * @param assosScheme2 an array of {@link int} objects + * @param siteNumber a int + * @param compnumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcXi(int[][][] assosScheme, int[][][][] assosScheme2, int siteNumber, + int compnumb, PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcDelta. - *

- * - * @param siteNumber1 a int - * @param siteNumber2 a int - * @param compnumb1 a int - * @param compnumb2 a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcDelta(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcDelta. + *

+ * + * @param siteNumber1 a int + * @param siteNumber2 a int + * @param compnumb1 a int + * @param compnumb2 a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcDelta(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcDeltadN. - *

- * - * @param derivativeComp a int - * @param siteNumber1 a int - * @param siteNumber2 a int - * @param compnumb1 a int - * @param compnumb2 a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcDeltadN(int derivativeComp, int siteNumber1, int siteNumber2, int compnumb1, - int compnumb2, PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcDeltadN. + *

+ * + * @param derivativeComp a int + * @param siteNumber1 a int + * @param siteNumber2 a int + * @param compnumb1 a int + * @param compnumb2 a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcDeltadN(int derivativeComp, int siteNumber1, int siteNumber2, int compnumb1, + int compnumb2, PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcDeltadV. - *

- * - * @param siteNumber1 a int - * @param siteNumber2 a int - * @param compnumb1 a int - * @param compnumb2 a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcDeltadV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcDeltadV. + *

+ * + * @param siteNumber1 a int + * @param siteNumber2 a int + * @param compnumb1 a int + * @param compnumb2 a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcDeltadV(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcDeltaNog. - *

- * - * @param siteNumber1 a int - * @param siteNumber2 a int - * @param compnumb1 a int - * @param compnumb2 a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcDeltaNog(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, - PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcDeltaNog. + *

+ * + * @param siteNumber1 a int + * @param siteNumber2 a int + * @param compnumb1 a int + * @param compnumb2 a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcDeltaNog(int siteNumber1, int siteNumber2, int compnumb1, int compnumb2, + PhaseInterface phase, double temperature, double pressure, int numbcomp); } diff --git a/src/main/java/neqsim/thermo/mixingRule/ElectrolyteMixingRulesInterface.java b/src/main/java/neqsim/thermo/mixingRule/ElectrolyteMixingRulesInterface.java index 171c07a803..bc7ed081f6 100644 --- a/src/main/java/neqsim/thermo/mixingRule/ElectrolyteMixingRulesInterface.java +++ b/src/main/java/neqsim/thermo/mixingRule/ElectrolyteMixingRulesInterface.java @@ -3,6 +3,7 @@ * * Created on 26. februar 2001, 19:38 */ + package neqsim.thermo.mixingRule; import neqsim.thermo.phase.PhaseInterface; @@ -16,199 +17,199 @@ * @version $Id: $Id */ public interface ElectrolyteMixingRulesInterface extends java.io.Serializable { - /** - *

- * calcWij. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void calcWij(PhaseInterface phase); - - /** - *

- * setWijParameter. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setWijParameter(int i, int j, double value); - - /** - *

- * getWijParameter. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getWijParameter(int i, int j); - - /** - *

- * setWijT1Parameter. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setWijT1Parameter(int i, int j, double value); - - /** - *

- * gettWijT1Parameter. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double gettWijT1Parameter(int i, int j); - - /** - *

- * setWijT2Parameter. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setWijT2Parameter(int i, int j, double value); - - /** - *

- * gettWijT2Parameter. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double gettWijT2Parameter(int i, int j); - - /** - *

- * getWij. - *

- * - * @param i a int - * @param j a int - * @param temperature a double - * @return a double - */ - public double getWij(int i, int j, double temperature); - - /** - *

- * getWijT. - *

- * - * @param i a int - * @param j a int - * @param temperature a double - * @return a double - */ - public double getWijT(int i, int j, double temperature); - - /** - *

- * getWijTT. - *

- * - * @param i a int - * @param j a int - * @param temperature a double - * @return a double - */ - public double getWijTT(int i, int j, double temperature); - - /** - *

- * calcW. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcW(PhaseInterface phase, double temperature, double pressure, int numbcomp); - - /** - *

- * calcWi. - *

- * - * @param compNumb a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcWi(int compNumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp); - - /** - *

- * calcWiT. - *

- * - * @param compNumb a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcWiT(int compNumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp); - - /** - *

- * calcWT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcWT(PhaseInterface phase, double temperature, double pressure, int numbcomp); - - /** - *

- * calcWTT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcWTT(PhaseInterface phase, double temperature, double pressure, int numbcomp); - - /** - *

- * calcWij. - *

- * - * @param compNumbi a int - * @param compNumj a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcWij(int compNumbi, int compNumj, PhaseInterface phase, double temperature, - double pressure, int numbcomp); + /** + *

+ * calcWij. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void calcWij(PhaseInterface phase); + + /** + *

+ * calcWij. + *

+ * + * @param compNumbi a int + * @param compNumj a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcWij(int compNumbi, int compNumj, PhaseInterface phase, double temperature, + double pressure, int numbcomp); + + /** + *

+ * setWijParameter. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setWijParameter(int i, int j, double value); + + /** + *

+ * getWijParameter. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getWijParameter(int i, int j); + + /** + *

+ * setWijT1Parameter. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setWijT1Parameter(int i, int j, double value); + + /** + *

+ * gettWijT1Parameter. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double gettWijT1Parameter(int i, int j); + + /** + *

+ * setWijT2Parameter. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setWijT2Parameter(int i, int j, double value); + + /** + *

+ * gettWijT2Parameter. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double gettWijT2Parameter(int i, int j); + + /** + *

+ * getWij. + *

+ * + * @param i a int + * @param j a int + * @param temperature a double + * @return a double + */ + public double getWij(int i, int j, double temperature); + + /** + *

+ * getWijT. + *

+ * + * @param i a int + * @param j a int + * @param temperature a double + * @return a double + */ + public double getWijT(int i, int j, double temperature); + + /** + *

+ * getWijTT. + *

+ * + * @param i a int + * @param j a int + * @param temperature a double + * @return a double + */ + public double getWijTT(int i, int j, double temperature); + + /** + *

+ * calcW. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcW(PhaseInterface phase, double temperature, double pressure, int numbcomp); + + /** + *

+ * calcWi. + *

+ * + * @param compNumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcWi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp); + + /** + *

+ * calcWiT. + *

+ * + * @param compNumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcWiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp); + + /** + *

+ * calcWT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcWT(PhaseInterface phase, double temperature, double pressure, int numbcomp); + + /** + *

+ * calcWTT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcWTT(PhaseInterface phase, double temperature, double pressure, int numbcomp); } diff --git a/src/main/java/neqsim/thermo/mixingRule/EosMixingRules.java b/src/main/java/neqsim/thermo/mixingRule/EosMixingRules.java index b55f2a7d86..7cd7faa3bf 100644 --- a/src/main/java/neqsim/thermo/mixingRule/EosMixingRules.java +++ b/src/main/java/neqsim/thermo/mixingRule/EosMixingRules.java @@ -3,6 +3,7 @@ * * Created on 4. juni 2000, 12:38 */ + package neqsim.thermo.mixingRule; import java.awt.BorderLayout; @@ -21,6 +22,7 @@ import neqsim.thermo.phase.PhaseGEUnifacPSRK; import neqsim.thermo.phase.PhaseGEUnifacUMRPRU; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.util.database.NeqSimDataBase; /** @@ -32,2673 +34,2707 @@ * @version $Id: $Id */ public class EosMixingRules implements Cloneable, ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(EosMixingRules.class); - public double Atot = 0, Btot = 0, Ai = 0, Bi = 0; - public double A, B; - public String mixingRuleGEModel = "NRTL"; - public String mixingRuleName = "no (kij=0)"; - public double intparam[][], intparamT[][], WSintparam[][], intparamij[][], intparamji[][]; - public int intparamTType[][]; - double[][] HVDij, HValpha, HVDijT; - double[][] NRTLDij, NRTLalpha, NRTLDijT; - double[][][] wij; - int[][] wijCalcOrFitted; - String[][] classicOrHV, classicOrWS; - public double nEOSkij = 3.0; - /** Constant calcEOSInteractionParameters=false */ - public static boolean calcEOSInteractionParameters = false; - private int bmixType = 0; - - static Logger logger = LogManager.getLogger(EosMixingRules.class); + public double Atot = 0; + public double Btot = 0; + public double Ai = 0; + public double Bi = 0; + public double A; + public double B; - /** - *

- * Constructor for EosMixingRules. - *

- */ - public EosMixingRules() {} + public String mixingRuleGEModel = "NRTL"; + public String mixingRuleName = "no (kij=0)"; - /** {@inheritDoc} */ - @Override - public EosMixingRules clone() { - EosMixingRules clonedSystem = null; - try { - clonedSystem = (EosMixingRules) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + public double[][] intparam; + public double[][] intparamT; + public double[][] WSintparam; + public double[][] intparamij; + public double[][] intparamji; + public int[][] intparamTType; - // clonedSystem.intparam = (double[][]) intparam.clone(); - // clonedSystem.wij = (double[][][]) wij.clone(); - // clonedSystem.WSintparam = (double[][]) WSintparam.clone() ; - // clonedSystem.HVDij = (double[][]) HVDij.clone(); - // clonedSystem.HValpha = (double[][]) HValpha.clone(); - // clonedSystem.HVDijT = (double[][]) HVDijT.clone(); - // clonedSystem.NRTLDij = (double[][]) NRTLDij.clone(); - // clonedSystem.NRTLalpha = (double[][]) NRTLalpha.clone(); - // clonedSystem.NRTLDijT = (double[][]) NRTLDijT.clone(); - // clonedSystem.classicOrHV = (String[][]) classicOrHV.clone(); - return clonedSystem; - } - - public class ClassicVdW implements EosMixingRulesInterface, java.io.Serializable { - private static final long serialVersionUID = 1000; - - @Override - public java.lang.String getMixingRuleName() { - return mixingRuleName; - } + double[][] HVDij; - @Override - public PhaseInterface getGEPhase() { - return null; - } + double[][] HValpha; - @Override - public void setMixingRuleGEModel(java.lang.String GEmodel) { - mixingRuleGEModel = GEmodel; - } + double[][] HVDijT; - @Override - public double getBinaryInteractionParameter(int i, int j) { - if (i == j) { - return 0.0; - } - return intparam[i][j]; - } + double[][] NRTLDij; - @Override - public double getBinaryInteractionParameterT1(int i, int j) { - if (i == j) { - return 0.0; - } - return intparamT[i][j]; - } + double[][] NRTLalpha; - /** - * @return the bmixType - */ - @Override - public int getBmixType() { - return bmixType; - } + double[][] NRTLDijT; - /** - * @param bmixType2 the bmixType to set - */ - @Override - public void setBmixType(int bmixType2) { - bmixType = bmixType2; - } + double[][][] wij; + int[][] wijCalcOrFitted; + String[][] classicOrHV; - public double getbij(ComponentEosInterface compi, ComponentEosInterface compj) { - switch (getBmixType()) { - case 0: - return (compi.getb() + compj.getb()) * 0.5; - case 1: - // return (compi.getb() + compj.getb()) * 0.5; - double temp = (Math.sqrt(compi.getb()) + Math.sqrt(compj.getb())) * 0.5; - return temp * temp; - // return Math.pow((Math.sqrt(compi.getb())+Math.sqrt(compj.getb()))/2.0, 2.0); - // return - // Math.pow(0.5*(Math.pow(compi.getb(),1.0/3.0)+Math.pow(compj.getb(),1.0/3.0)),3.0); - // return - // Math.sqrt(compi.getb()*compj.getb())*(1.0-intparam[compi.getComponentNumber()][compj.getComponentNumber()]); - // return - // Math.pow(0.5*(Math.pow(compi.getb(),3.0/4.0)+Math.pow(compj.getb(),3.0/4.0)),4.0/3.0); - default: - return (compi.getb() + compj.getb()) * 0.5; - } - } + String[][] classicOrWS; - @Override - public void setBinaryInteractionParameter(int i, int j, double value) { - // System.out.println("intparam: " + intparam[i][j] + " value " + value); - intparam[i][j] = value; - intparam[j][i] = value; - } + public double nEOSkij = 3.0; + /** Constant calcEOSInteractionParameters=false. */ + public static boolean calcEOSInteractionParameters = false; + private int bmixType = 0; - @Override - public void setBinaryInteractionParameterij(int i, int j, double value) { - intparamij[i][j] = value; - intparamji[j][i] = value; - } + /** + *

+ * Constructor for EosMixingRules. + *

+ */ + public EosMixingRules() {} - @Override - public void setBinaryInteractionParameterji(int i, int j, double value) { - // System.out.println("intparam: " + intparam[i][j] + " value " + value); - intparamji[i][j] = value; - intparamij[j][i] = value; - } + /** {@inheritDoc} */ + @Override + public EosMixingRules clone() { + EosMixingRules clonedSystem = null; + try { + clonedSystem = (EosMixingRules) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } - @Override - public void setBinaryInteractionParameterT1(int i, int j, double value) { - // System.out.println("intparam: " + intparam[i][j] + " value " + value); - intparamT[i][j] = value; - intparamT[j][i] = value; - } + // clonedSystem.intparam = (double[][]) intparam.clone(); + // clonedSystem.wij = (double[][][]) wij.clone(); + // clonedSystem.WSintparam = (double[][]) WSintparam.clone() ; + // clonedSystem.HVDij = (double[][]) HVDij.clone(); + // clonedSystem.HValpha = (double[][]) HValpha.clone(); + // clonedSystem.HVDijT = (double[][]) HVDijT.clone(); + // clonedSystem.NRTLDij = (double[][]) NRTLDij.clone(); + // clonedSystem.NRTLalpha = (double[][]) NRTLalpha.clone(); + // clonedSystem.NRTLDijT = (double[][]) NRTLDijT.clone(); + // clonedSystem.classicOrHV = (String[][]) classicOrHV.clone(); + return clonedSystem; + } + + public class ClassicVdW implements EosMixingRulesInterface, java.io.Serializable { + private static final long serialVersionUID = 1000; - /** - * Setter for property CalcEOSInteractionParameters. - * - * @param CalcEOSInteractionParameters2 New value of property CalcEOSInteractionParameters. - */ - @Override - public void setCalcEOSInteractionParameters(boolean CalcEOSInteractionParameters2) { - calcEOSInteractionParameters = CalcEOSInteractionParameters2; - } + @Override + public java.lang.String getMixingRuleName() { + return mixingRuleName; + } - @Override - public void setnEOSkij(double n) { - nEOSkij = n; - } + @Override + public PhaseInterface getGEPhase() { + return null; + } - public double getA() { - return Atot; - } + @Override + public void setMixingRuleGEModel(java.lang.String GEmodel) { + mixingRuleGEModel = GEmodel; + } - public double getB() { - return Btot; - } + @Override + public double getBinaryInteractionParameter(int i, int j) { + if (i == j) { + return 0.0; + } + return intparam[i][j]; + } - @Override - public double calcA(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double aij = 0.0, A = 0.0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - aij = Math.sqrt(compArray[i].getaT() * compArray[j].getaT()); - A += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() * aij; - } - } - Atot = A; - return A; - } + @Override + public double[][] getBinaryInteractionParameters() { + return intparam; + } - @Override - public double calcB(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - B = 0.0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - B += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() - * getbij(compArray[i], compArray[j]);// (compArray[i].getb()+compArray[j].getb())/2; - } - } - B /= phase.getNumberOfMolesInPhase(); - Btot = B; - return B; - } + public void prettyPrintKij() {} - @Override - public double calcAi(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double aij = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + @Override + public double getBinaryInteractionParameterT1(int i, int j) { + if (i == j) { + return 0.0; + } + return intparamT[i][j]; + } - Ai = 0.0; - for (int j = 0; j < numbcomp; j++) { - aij = Math.sqrt(compArray[compNumb].getaT() * compArray[j].getaT()); - Ai += compArray[j].getNumberOfMolesInPhase() * aij; - } + /** + * @return the bmixType + */ + @Override + public int getBmixType() { + return bmixType; + } - return 2.0 * Ai; - } + /** + * @param bmixType2 the bmixType to set + */ + @Override + public void setBmixType(int bmixType2) { + bmixType = bmixType2; + } - @Override - public double calcBi(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double Bi = 0.0; + public double getbij(ComponentEosInterface compi, ComponentEosInterface compj) { + switch (getBmixType()) { + case 0: + return (compi.getb() + compj.getb()) * 0.5; + case 1: + // return (compi.getb() + compj.getb()) * 0.5; + double temp = (Math.sqrt(compi.getb()) + Math.sqrt(compj.getb())) * 0.5; + return temp * temp; + // return Math.pow((Math.sqrt(compi.getb())+Math.sqrt(compj.getb()))/2.0, 2.0); + // return + // Math.pow(0.5*(Math.pow(compi.getb(),1.0/3.0)+Math.pow(compj.getb(),1.0/3.0)),3.0); + // return + // Math.sqrt(compi.getb()*compj.getb())*(1.0-intparam[compi.getComponentNumber()][compj.getComponentNumber()]); + // return + // Math.pow(0.5*(Math.pow(compi.getb(),3.0/4.0)+Math.pow(compj.getb(),3.0/4.0)),4.0/3.0); + default: + return (compi.getb() + compj.getb()) * 0.5; + } + } - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + @Override + public void setBinaryInteractionParameter(int i, int j, double value) { + // System.out.println("intparam: " + intparam[i][j] + " value " + value); + intparam[i][j] = value; + intparam[j][i] = value; + } - for (int j = 0; j < numbcomp; j++) { - Bi += compArray[j].getNumberOfMolesInPhase() - * getbij(compArray[compNumb], compArray[j]); - } + @Override + public void setBinaryInteractionParameterij(int i, int j, double value) { + intparamij[i][j] = value; + intparamji[j][i] = value; + } - Bi = (2.0 * Bi - getB()) / phase.getNumberOfMolesInPhase(); - return Bi; - } + @Override + public void setBinaryInteractionParameterji(int i, int j, double value) { + // System.out.println("intparam: " + intparam[i][j] + " value " + value); + intparamji[i][j] = value; + intparamij[j][i] = value; + } - public double calcBi2(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double Bi = 0.0; - - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - double sumk = 0; - for (int j = 0; j < numbcomp; j++) { - Bi += compArray[j].getNumberOfMolesInPhase() - * getbij(compArray[compNumb], compArray[j]); - for (int k = 0; k < numbcomp; k++) { - sumk += compArray[j].getNumberOfMolesInPhase() - * compArray[k].getNumberOfMolesInPhase() - * getbij(compArray[j], compArray[k]); - } - } - double ans1 = phase.getNumberOfMolesInPhase() * Bi - sumk; + @Override + public void setBinaryInteractionParameterT1(int i, int j, double value) { + // System.out.println("intparam: " + intparam[i][j] + " value " + value); + intparamT[i][j] = value; + intparamT[j][i] = value; + } - return ans1 / (phase.getNumberOfMolesInPhase() * phase.getNumberOfMolesInPhase()); - } + /** + * Setter for property CalcEOSInteractionParameters. + * + * @param CalcEOSInteractionParameters2 New value of property CalcEOSInteractionParameters. + */ + @Override + public void setCalcEOSInteractionParameters(boolean CalcEOSInteractionParameters2) { + calcEOSInteractionParameters = CalcEOSInteractionParameters2; + } - @Override - public double calcBij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double bij = 0.0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + @Override + public void setnEOSkij(double n) { + nEOSkij = n; + } - bij = getbij(compArray[compNumb], compArray[compNumbj]); - return (2.0 * bij - compArray[compNumb].getBi() - compArray[compNumbj].getBi()) - / phase.getNumberOfMolesInPhase(); - } + public double getA() { + return Atot; + } - @Override - public double calcAiT(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double A = 0.0; - double aij = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - for (int j = 0; j < numbcomp; j++) { - aij = 0.5 / Math.sqrt(compArray[compNumb].getaT() * compArray[j].getaT()) - * (compArray[compNumb].getaT() * compArray[j].getaDiffT() - + compArray[j].getaT() * compArray[compNumb].getaDiffT()); - A += compArray[j].getNumberOfMolesInPhase() * aij; - } + public double getB() { + return Btot; + } - return 2.0 * A; - } + @Override + public double calcA(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double aij = 0.0; + double A = 0.0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + for (int i = 0; i < numbcomp; i++) { + for (int j = 0; j < numbcomp; j++) { + aij = Math.sqrt(compArray[i].getaT() * compArray[j].getaT()); + A += compArray[i].getNumberOfMolesInPhase() * compArray[j].getNumberOfMolesInPhase() + * aij; + } + } + Atot = A; + return A; + } - @Override - public double calcAij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double aij = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + @Override + public double calcB(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + B = 0.0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + for (int i = 0; i < numbcomp; i++) { + for (int j = 0; j < numbcomp; j++) { + B += compArray[i].getNumberOfMolesInPhase() * compArray[j].getNumberOfMolesInPhase() + * getbij(compArray[i], compArray[j]); // (compArray[i].getb()+compArray[j].getb())/2; + } + } + B /= phase.getNumberOfMolesInPhase(); + Btot = B; + return B; + } - aij = Math.sqrt(compArray[compNumb].getaT() * compArray[compNumbj].getaT()); + @Override + public double calcAi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + double aij = 0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + Ai = 0.0; + for (int j = 0; j < numbcomp; j++) { + aij = Math.sqrt(compArray[compNumb].getaT() * compArray[j].getaT()); + Ai += compArray[j].getNumberOfMolesInPhase() * aij; + } + + return 2.0 * Ai; + } - return 2.0 * aij; - } + @Override + public double calcBi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + double Bi = 0.0; - @Override - public double calcAT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double A = 0.0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - for (int i = 0; i < numbcomp; i++) { - A += compArray[i].getNumberOfMolesInPhase() - * phase.calcAiT(i, phase, temperature, pressure, numbcomp); - } + for (int j = 0; j < numbcomp; j++) { + Bi += compArray[j].getNumberOfMolesInPhase() * getbij(compArray[compNumb], compArray[j]); + } - return 0.5 * A; - } + Bi = (2.0 * Bi - getB()) / phase.getNumberOfMolesInPhase(); + return Bi; + } - @Override - public double calcATT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double aij = 0, sqrtaij = 0, tempPow = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - A = 0.0; - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - sqrtaij = Math.sqrt(compArray[i].getaT() * compArray[j].getaT()); - tempPow = compArray[i].getaT() * compArray[j].getaDiffT() - + compArray[j].getaT() * compArray[i].getaDiffT(); - aij = 0.5 * ((2.0 * compArray[i].getaDiffT() * compArray[j].getaDiffT() - + compArray[i].getaT() * compArray[j].getaDiffDiffT() - + compArray[j].getaT() * compArray[i].getaDiffDiffT()) / sqrtaij - - tempPow * tempPow / (2.0 * sqrtaij * compArray[i].getaT() - * compArray[j].getaT())); - A += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() * aij; - } - } - return A; + public double calcBi2(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + double Bi = 0.0; + + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double sumk = 0; + for (int j = 0; j < numbcomp; j++) { + Bi += compArray[j].getNumberOfMolesInPhase() * getbij(compArray[compNumb], compArray[j]); + for (int k = 0; k < numbcomp; k++) { + sumk += compArray[j].getNumberOfMolesInPhase() * compArray[k].getNumberOfMolesInPhase() + * getbij(compArray[j], compArray[k]); } + } + double ans1 = phase.getNumberOfMolesInPhase() * Bi - sumk; - @Override - public ClassicVdW clone() { - ClassicVdW clonedSystem = null; - try { - clonedSystem = (ClassicVdW) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + return ans1 / (phase.getNumberOfMolesInPhase() * phase.getNumberOfMolesInPhase()); + } - return clonedSystem; - } + @Override + public double calcBij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + double bij = 0.0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + bij = getbij(compArray[compNumb], compArray[compNumbj]); + return (2.0 * bij - compArray[compNumb].getBi() - compArray[compNumbj].getBi()) + / phase.getNumberOfMolesInPhase(); } - public class ClassicSRK extends ClassicVdW { - private static final long serialVersionUID = 1000; + @Override + public double calcAiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + double A = 0.0; + double aij = 0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + for (int j = 0; j < numbcomp; j++) { + aij = 0.5 / Math.sqrt(compArray[compNumb].getaT() * compArray[j].getaT()) + * (compArray[compNumb].getaT() * compArray[j].getaDiffT() + + compArray[j].getaT() * compArray[compNumb].getaDiffT()); + A += compArray[j].getNumberOfMolesInPhase() * aij; + } + + return 2.0 * A; + } - public double getkij(double temp, int i, int j) { - // System.out.println("kij " +intparam[i][j] ); - return intparam[i][j]; - } + @Override + public double calcAij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + double aij = 0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - @Override - public double calcA(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double aij = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - A = 0.0; - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - aij = Math.sqrt(compArray[i].getaT() * compArray[j].getaT()) - * (1.0 - getkij(temperature, i, j)); - A += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() * aij; - } - } - Atot = A; - return A; - } + aij = Math.sqrt(compArray[compNumb].getaT() * compArray[compNumbj].getaT()); - // public double calcB(PhaseInterface phase, double temperature, double - // pressure, int numbcomp){ - // B = 0.0; - // ComponentEosInterface[] compArray = (ComponentEosInterface[]) - // phase.getcomponentArray(); - - // for (int i=0;i 1e-100) { - sqrtai[j] = Math.sqrt(compArray[j].getaT()); - } - } - A = 0.0; - for (int i = 0; i < numbcomp; i++) { - if (compArray[i].getNumberOfMolesInPhase() < 1e-100) { - continue; - } - for (int j = 0; j < numbcomp; j++) { - if (compArray[j].getNumberOfMolesInPhase() > 1e-100) { - aij = sqrtai[i] * sqrtai[j] * (1.0 - getkij(phase, temperature, i, j)); - A += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() * aij; - } - } - } - Atot = A; - return A; - } + public class ClassicSRKT2x extends ClassicSRKT2 { + private static final long serialVersionUID = 1000; - @Override - public double calcAi(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - // if(Math.abs(intparamT[compNumb][numbcomp])<1e-10 && - // Math.abs(intparamij[compNumb][numbcomp]-intparamij[numbcomp][compNumb])<1e-10){ - // return super.calcAi(compNumb, phase, temperature, pressure, numbcomp); - // } - double aij = 0.0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - double A1 = 0.0; - double[] sqrtai = new double[numbcomp]; - for (int j = 0; j < numbcomp; j++) { - if (compArray[j].getNumberOfMolesInPhase() > 1e-100) { - sqrtai[j] = Math.sqrt(compArray[j].getaT()); - } - } - for (int j = 0; j < numbcomp; j++) { - if (compArray[j].getNumberOfMolesInPhase() > 1e-100) { - aij = sqrtai[compNumb] * sqrtai[j] - * (1.0 - getkij(phase, temperature, compNumb, j)); - A1 += compArray[j].getNumberOfMolesInPhase() * aij; - } - } - double A2 = 0.0; - for (int i = 0; i < numbcomp; i++) { - if (compArray[i].getNumberOfMolesInPhase() < 1e-100) { - continue; - } - for (int j = 0; j < numbcomp; j++) { - if (compArray[j].getNumberOfMolesInPhase() > 1e-100 - && (compNumb == j || compNumb == i) && i != j) { - aij = -sqrtai[i] * sqrtai[j] * getkijdn(compNumb, phase, temperature, i, j); - A2 += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() * aij; - } - } - } - return 2.0 * A1 + A2; - } + public double getkij(PhaseInterface phase, double temperature, int i, int j) { + if (i == j) { + return 0.0; + } + double tot = phase.getComponent(i).getNumberOfMolesInPhase() + + phase.getComponent(j).getNumberOfMolesInPhase(); + if (tot < 1e-100) { + return 0.0; + } + double intkijMix = (phase.getComponent(i).getNumberOfMolesInPhase() * intparamij[i][j] + + phase.getComponent(j).getNumberOfMolesInPhase() * intparamji[i][j]) / tot; + // System.out.println("kij " + intkijMix + " kijT " +(intkijMix + + // intparamT[i][j] * temperature)); + + if (intparamTType[i][j] == 0) { + return intkijMix + intparamT[i][j] * temperature; + } else if (intparamTType[i][j] == 1) { + // System.out.println("kj mix " + (intkijMix +intparamT[i][j] / temperature)); + return intkijMix + intparamT[i][j] / temperature; + } else { + return intkijMix + intparamT[i][j] * temperature; + } + } - @Override - public double calcAij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double aij = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - double A1 = 0; - for (int j = 0; j < numbcomp; j++) { - aij = -Math.sqrt(compArray[compNumb].getaT() * compArray[j].getaT()) - * getkijdn(compNumbj, phase, temperature, compNumb, j); - A1 += compArray[j].getNumberOfMolesInPhase() * aij; - } - for (int j = 0; j < numbcomp; j++) { - aij = -Math.sqrt(compArray[compNumb].getaT() * compArray[j].getaT()) - * getkijdn(compNumbj, phase, temperature, j, compNumb); - A1 += compArray[j].getNumberOfMolesInPhase() * aij; - } + public double getkijdn(int k, PhaseInterface phase, double temperature, int i, int j) { + if (i == j || !((i == k) || (j == k)) + || Math.abs(intparamij[i][j] - intparamji[i][j]) < 1e-10) { + return 0.0; + } + double tot = phase.getComponent(i).getNumberOfMolesInPhase() + + phase.getComponent(j).getNumberOfMolesInPhase(); + if (tot < 1e-100) { + return 0.0; + } + double intkijMix = (phase.getComponent(i).getNumberOfMolesInPhase() * intparamij[i][j] + + phase.getComponent(j).getNumberOfMolesInPhase() * intparamji[i][j]) / tot; + + double temp = 0; + if (i == k) { + temp = intparamij[i][j]; + } else { + temp = intparamji[i][j]; + } + intkijMix = (temp - intkijMix) / tot; + + return intkijMix; + } - double A2 = 0; - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - aij = -Math.sqrt(compArray[i].getaT() * compArray[j].getaT()) - * getkijdndn(compNumb, compNumbj, phase, temperature, i, j); - A2 += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() * aij; - } - } + public double getkijdndn(int k, int l, PhaseInterface phase, double temperature, int i, int j) { + if (i == j) { + return 0.0; + } + double tot = phase.getComponent(i).getNumberOfMolesInPhase() + + phase.getComponent(j).getNumberOfMolesInPhase(); + if (tot < 1e-100) { + return 0.0; + } + double temp = 0; + if ((i == k || j == k) && (i == l || j == l)) { + if (k == i && l == i) { + temp = -2.0 * intparamij[i][j] / (tot * tot) + + 2.0 * phase.getComponent(i).getNumberOfMolesInPhase() / (tot * tot * tot) + * intparamij[i][j] + + 2.0 * phase.getComponent(j).getNumberOfMolesInPhase() / (tot * tot * tot) + * intparamji[i][j]; + } else if (k == i && l == j) { + temp = -intparamij[i][j] / (tot * tot) + + 2.0 * phase.getComponent(i).getNumberOfMolesInPhase() / (tot * tot * tot) + * intparamij[i][j] + - 1.0 / (tot * tot) * intparamji[i][j] + + 2.0 * phase.getComponent(j).getNumberOfMolesInPhase() / (tot * tot * tot) + * intparamji[i][j]; + } else if (k == j && l == i) { + temp = -intparamji[i][j] / (tot * tot) + + 2.0 * phase.getComponent(j).getNumberOfMolesInPhase() / (tot * tot * tot) + * intparamji[i][j] + - 1.0 / (tot * tot) * intparamij[i][j] + + 2.0 * phase.getComponent(i).getNumberOfMolesInPhase() / (tot * tot * tot) + * intparamij[i][j]; + } else if (k == j && l == j) { + temp = -2.0 * intparamji[i][j] / (tot * tot) + + 2.0 * phase.getComponent(j).getNumberOfMolesInPhase() / (tot * tot * tot) + * intparamji[i][j] + + 2.0 * phase.getComponent(i).getNumberOfMolesInPhase() / (tot * tot * tot) + * intparamij[i][j]; + } + } else { + temp = 0.0; + } + return temp; + } - double A4 = 0; + @Override + public double calcA(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double aij = 0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double[] sqrtai = new double[numbcomp]; + for (int j = 0; j < numbcomp; j++) { + if (compArray[j].getNumberOfMolesInPhase() > 1e-100) { + sqrtai[j] = Math.sqrt(compArray[j].getaT()); + } + } + A = 0.0; + for (int i = 0; i < numbcomp; i++) { + if (compArray[i].getNumberOfMolesInPhase() < 1e-100) { + continue; + } + for (int j = 0; j < numbcomp; j++) { + if (compArray[j].getNumberOfMolesInPhase() > 1e-100) { + aij = sqrtai[i] * sqrtai[j] * (1.0 - getkij(phase, temperature, i, j)); + A += compArray[i].getNumberOfMolesInPhase() * compArray[j].getNumberOfMolesInPhase() + * aij; + } + } + } + Atot = A; + return A; + } - A4 = 2.0 * Math.sqrt(compArray[compNumb].getaT() * compArray[compNumbj].getaT()) - * (1.0 - getkij(phase, temperature, compNumbj, compNumb)); + @Override + public double calcAi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + // if(Math.abs(intparamT[compNumb][numbcomp])<1e-10 && + // Math.abs(intparamij[compNumb][numbcomp]-intparamij[numbcomp][compNumb])<1e-10){ + // return super.calcAi(compNumb, phase, temperature, pressure, numbcomp); + // } + double aij = 0.0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double A1 = 0.0; + double[] sqrtai = new double[numbcomp]; + for (int j = 0; j < numbcomp; j++) { + if (compArray[j].getNumberOfMolesInPhase() > 1e-100) { + sqrtai[j] = Math.sqrt(compArray[j].getaT()); + } + } + for (int j = 0; j < numbcomp; j++) { + if (compArray[j].getNumberOfMolesInPhase() > 1e-100) { + aij = sqrtai[compNumb] * sqrtai[j] * (1.0 - getkij(phase, temperature, compNumb, j)); + A1 += compArray[j].getNumberOfMolesInPhase() * aij; + } + } + double A2 = 0.0; + for (int i = 0; i < numbcomp; i++) { + if (compArray[i].getNumberOfMolesInPhase() < 1e-100) { + continue; + } + for (int j = 0; j < numbcomp; j++) { + if (compArray[j].getNumberOfMolesInPhase() > 1e-100 && (compNumb == j || compNumb == i) + && i != j) { + aij = -sqrtai[i] * sqrtai[j] * getkijdn(compNumb, phase, temperature, i, j); + A2 += compArray[i].getNumberOfMolesInPhase() * compArray[j].getNumberOfMolesInPhase() + * aij; + } + } + } + return 2.0 * A1 + A2; + } - for (int i = 0; i < numbcomp; i++) { - A4 += -compArray[i].getNumberOfMolesInPhase() - * Math.sqrt(compArray[compNumbj].getaT() * compArray[i].getaT()) - * getkijdn(compNumb, phase, temperature, compNumbj, i); - } - for (int i = 0; i < numbcomp; i++) { - A4 += -compArray[i].getNumberOfMolesInPhase() - * Math.sqrt(compArray[compNumbj].getaT() * compArray[i].getaT()) - * getkijdn(compNumb, phase, temperature, i, compNumbj); - } + @Override + public double calcAij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + double aij = 0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + double A1 = 0; + for (int j = 0; j < numbcomp; j++) { + aij = -Math.sqrt(compArray[compNumb].getaT() * compArray[j].getaT()) + * getkijdn(compNumbj, phase, temperature, compNumb, j); + A1 += compArray[j].getNumberOfMolesInPhase() * aij; + } + for (int j = 0; j < numbcomp; j++) { + aij = -Math.sqrt(compArray[compNumb].getaT() * compArray[j].getaT()) + * getkijdn(compNumbj, phase, temperature, j, compNumb); + A1 += compArray[j].getNumberOfMolesInPhase() * aij; + } + + double A2 = 0; + for (int i = 0; i < numbcomp; i++) { + for (int j = 0; j < numbcomp; j++) { + aij = -Math.sqrt(compArray[i].getaT() * compArray[j].getaT()) + * getkijdndn(compNumb, compNumbj, phase, temperature, i, j); + A2 += + compArray[i].getNumberOfMolesInPhase() * compArray[j].getNumberOfMolesInPhase() * aij; + } + } + + double A4 = 0; + + A4 = 2.0 * Math.sqrt(compArray[compNumb].getaT() * compArray[compNumbj].getaT()) + * (1.0 - getkij(phase, temperature, compNumbj, compNumb)); + + for (int i = 0; i < numbcomp; i++) { + A4 += -compArray[i].getNumberOfMolesInPhase() + * Math.sqrt(compArray[compNumbj].getaT() * compArray[i].getaT()) + * getkijdn(compNumb, phase, temperature, compNumbj, i); + } + for (int i = 0; i < numbcomp; i++) { + A4 += -compArray[i].getNumberOfMolesInPhase() + * Math.sqrt(compArray[compNumbj].getaT() * compArray[i].getaT()) + * getkijdn(compNumb, phase, temperature, i, compNumbj); + } + + return A1 + A2 + A4; + } - return A1 + A2 + A4; - } + @Override + public double calcAiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + double A = 0.0; + double aij = 0.0; + double aij2 = 0.0; + double aij3 = 0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double[] asqrt = new double[numbcomp]; + for (int j = 0; j < numbcomp; j++) { + asqrt[j] = Math.sqrt(compArray[j].getaT()); + } + + for (int j = 0; j < numbcomp; j++) { + if (compArray[j].getNumberOfMolesInPhase() < 1e-100) { + continue; + } + aij = 0.5 / asqrt[compNumb] / asqrt[j] + * (compArray[compNumb].getaT() * compArray[j].getaDiffT() + + compArray[j].getaT() * compArray[compNumb].getaDiffT()) + * (1.0 - getkij(phase, temperature, compNumb, j)); + aij2 = asqrt[compNumb] * asqrt[j] * (-getkijdT(temperature, compNumb, j)); + A += compArray[j].getNumberOfMolesInPhase() * (aij + aij2); + } + + double A2 = 0; + for (int i = 0; i < numbcomp; i++) { + if (compArray[i].getNumberOfMolesInPhase() < 1e-100) { + continue; + } + for (int j = 0; j < numbcomp; j++) { + if (compArray[j].getNumberOfMolesInPhase() > 1e-100 && (compNumb == j || compNumb == i) + && i != j) { + aij3 = -0.5 / asqrt[compNumb] / asqrt[j] + * (compArray[compNumb].getaT() * compArray[j].getaDiffT() + + compArray[j].getaT() * compArray[compNumb].getaDiffT()) + * getkijdn(compNumb, phase, temperature, i, j); + A2 += compArray[i].getNumberOfMolesInPhase() * compArray[j].getNumberOfMolesInPhase() + * aij3; + } + } + } + + // System.out.println("Ait SRK : " + (2*A)); + return 2.0 * A + A2; + } + } - @Override - public double calcAiT(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double A = 0.0; - double aij = 0.0, aij2 = 0.0, aij3 = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - double[] asqrt = new double[numbcomp]; - for (int j = 0; j < numbcomp; j++) { - asqrt[j] = Math.sqrt(compArray[j].getaT()); - } + public class ClassicSRKT2 extends ClassicSRKT { + private static final long serialVersionUID = 1000; - for (int j = 0; j < numbcomp; j++) { - if (compArray[j].getNumberOfMolesInPhase() < 1e-100) { - continue; - } - aij = 0.5 / asqrt[compNumb] / asqrt[j] - * (compArray[compNumb].getaT() * compArray[j].getaDiffT() - + compArray[j].getaT() * compArray[compNumb].getaDiffT()) - * (1.0 - getkij(phase, temperature, compNumb, j)); - aij2 = asqrt[compNumb] * asqrt[j] * (-getkijdT(temperature, compNumb, j)); - A += compArray[j].getNumberOfMolesInPhase() * (aij + aij2); - } + @Override + public double getkij(double temperature, int i, int j) { + if (intparamTType[i][j] == 0) { + return intparam[i][j] + intparamT[i][j] * temperature; + } else if (intparamTType[i][j] == 1) { + return intparam[i][j] + intparamT[i][j] / temperature; + } else { + return intparam[i][j] + intparamT[i][j] * temperature; + } + } - double A2 = 0; - for (int i = 0; i < numbcomp; i++) { - if (compArray[i].getNumberOfMolesInPhase() < 1e-100) { - continue; - } - for (int j = 0; j < numbcomp; j++) { - if (compArray[j].getNumberOfMolesInPhase() > 1e-100 - && (compNumb == j || compNumb == i) && i != j) { - aij3 = -0.5 / asqrt[compNumb] / asqrt[j] - * (compArray[compNumb].getaT() * compArray[j].getaDiffT() - + compArray[j].getaT() * compArray[compNumb].getaDiffT()) - * getkijdn(compNumb, phase, temperature, i, j); - A2 += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() * aij3; - } - } - } + @Override + public double getkijdT(double temperature, int i, int j) { + if (intparamTType[i][j] == 0) { + return intparamT[i][j]; + } else if (intparamTType[i][j] == 1) { + return -intparamT[i][j] / (temperature * temperature); + } else { + return intparamT[i][j]; + } + } - // System.out.println("Ait SRK : " + (2*A)); - return 2.0 * A + A2; - } + @Override + public double getkijdTdT(double temperature, int i, int j) { + if (intparamTType[i][j] == 0) { + return 0; + } else if (intparamTType[i][j] == 1) { + return 2.0 * intparamT[i][j] / (temperature * temperature * temperature); + } else { + return 0; + } } - public class ClassicSRKT2 extends ClassicSRKT { - private static final long serialVersionUID = 1000; + @Override + public ClassicSRKT clone() { + ClassicSRKT clonedSystem = null; + try { + clonedSystem = super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + + return clonedSystem; + } + } - @Override - public double getkij(double temperature, int i, int j) { - if (intparamTType[i][j] == 0) { - return intparam[i][j] + intparamT[i][j] * temperature; - } else if (intparamTType[i][j] == 1) { - return intparam[i][j] + intparamT[i][j] / temperature; - } else { - return intparam[i][j] + intparamT[i][j] * temperature; - } - } + public class SRKHuronVidal extends ClassicSRK implements HVmixingRuleInterface { + private static final long serialVersionUID = 1000; - @Override - public double getkijdT(double temperature, int i, int j) { - if (intparamTType[i][j] == 0) { - return intparamT[i][j]; - } else if (intparamTType[i][j] == 1) { - return -intparamT[i][j] / (temperature * temperature); - } else { - return intparamT[i][j]; - } - } + PhaseInterface orgPhase; + PhaseGENRTLmodifiedHV gePhase; + double hwfc = 0; + // double[][] HValpha, HVgij; + + public SRKHuronVidal(PhaseInterface phase, double[][] HValpha, double[][] HVDij, + String[][] mixRule) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + this.orgPhase = phase; + hwfc = + 1.0 / (compArray[0].getDeltaEosParameters()[1] - compArray[0].getDeltaEosParameters()[0]) + * Math.log((1.0 + compArray[0].getDeltaEosParameters()[1]) + / (1.0 + compArray[0].getDeltaEosParameters()[0])); + gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, mixRule, intparam); + gePhase.getExcessGibbsEnergy(phase, phase.getNumberOfComponents(), phase.getTemperature(), + phase.getPressure(), PhaseType.byValue(1)); + gePhase.setProperties(phase); + } - @Override - public double getkijdTdT(double temperature, int i, int j) { - if (intparamTType[i][j] == 0) { - return 0; - } else if (intparamTType[i][j] == 1) { - return 2.0 * intparamT[i][j] / (temperature * temperature * temperature); - } else { - return 0; - } - } + public SRKHuronVidal(PhaseInterface phase, double[][] HValpha, double[][] HVDij, + double[][] HVDijT, String[][] mixRule) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + this.orgPhase = phase; + hwfc = + 1.0 / (compArray[0].getDeltaEosParameters()[1] - compArray[0].getDeltaEosParameters()[0]) + * Math.log((1.0 + compArray[0].getDeltaEosParameters()[1]) + / (1.0 + compArray[0].getDeltaEosParameters()[0])); + gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, HVDijT, mixRule, intparam); + gePhase.getExcessGibbsEnergy(phase, phase.getNumberOfComponents(), phase.getTemperature(), + phase.getPressure(), PhaseType.byValue(1)); + gePhase.setProperties(phase); + } - @Override - public ClassicSRKT clone() { - ClassicSRKT clonedSystem = null; - try { - clonedSystem = super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + @Override + public void setHVDijParameter(int i, int j, double value) { + HVDij[i][j] = value; + // System.out.println("hv " + value); + // HVDij[j][i] = value; + gePhase.setDij(HVDij); + } - return clonedSystem; - } + @Override + public double getHVDijParameter(int i, int j) { + return HVDij[i][j]; } - public class SRKHuronVidal extends ClassicSRK implements HVmixingRuleInterface { - private static final long serialVersionUID = 1000; - - PhaseInterface orgPhase; - PhaseGENRTLmodifiedHV gePhase; - double hwfc = 0; - // double[][] HValpha, HVgij; - - public SRKHuronVidal(PhaseInterface phase, double[][] HValpha, double[][] HVDij, - String[][] mixRule) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - this.orgPhase = phase; - hwfc = 1.0 - / (compArray[0].getDeltaEosParameters()[1] - - compArray[0].getDeltaEosParameters()[0]) - * Math.log((1.0 + compArray[0].getDeltaEosParameters()[1]) - / (1.0 + compArray[0].getDeltaEosParameters()[0])); - gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, mixRule, intparam); - gePhase.getExessGibbsEnergy(phase, phase.getNumberOfComponents(), - phase.getTemperature(), phase.getPressure(), 1); - gePhase.setProperties(phase); - } + @Override + public void setHVDijTParameter(int i, int j, double value) { + HVDijT[i][j] = value; + // HVDijT[j][i] = value; + gePhase.setDijT(HVDijT); + } - public SRKHuronVidal(PhaseInterface phase, double[][] HValpha, double[][] HVDij, - double[][] HVDijT, String[][] mixRule) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - this.orgPhase = phase; - hwfc = 1.0 - / (compArray[0].getDeltaEosParameters()[1] - - compArray[0].getDeltaEosParameters()[0]) - * Math.log((1.0 + compArray[0].getDeltaEosParameters()[1]) - / (1.0 + compArray[0].getDeltaEosParameters()[0])); - gePhase = - new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, HVDijT, mixRule, intparam); - gePhase.getExessGibbsEnergy(phase, phase.getNumberOfComponents(), - phase.getTemperature(), phase.getPressure(), 1); - gePhase.setProperties(phase); - } + @Override + public double getHVDijTParameter(int i, int j) { + return HVDijT[i][j]; + } - @Override - public void setHVDijParameter(int i, int j, double value) { - HVDij[i][j] = value; - // System.out.println("hv " + value); - // HVDij[j][i] = value; - gePhase.setDij(HVDij); - } + @Override + public void setHValphaParameter(int i, int j, double value) { + HValpha[i][j] = value; + HValpha[j][i] = value; + gePhase.setAlpha(HValpha); + } - @Override - public double getHVDijParameter(int i, int j) { - return HVDij[i][j]; - } + @Override + public double getHValphaParameter(int i, int j) { + return HValpha[i][j]; + } - @Override - public void setHVDijTParameter(int i, int j, double value) { - HVDijT[i][j] = value; - // HVDijT[j][i] = value; - gePhase.setDijT(HVDijT); - } + @Override + public double getKijWongSandler(int i, int j) { + return WSintparam[i][j]; + } - @Override - public double getHVDijTParameter(int i, int j) { - return HVDijT[i][j]; - } + @Override + public void setKijWongSandler(int i, int j, double value) { + WSintparam[i][j] = value; + WSintparam[j][i] = value; + } - @Override - public void setHValphaParameter(int i, int j, double value) { - HValpha[i][j] = value; - HValpha[j][i] = value; - gePhase.setAlpha(HValpha); - } + @Override + public double calcA(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double A = 0.0; + double aij = 0.0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + gePhase.setProperties(phase); + + for (int i = 0; i < numbcomp; i++) { + aij = compArray[i].getaT() / compArray[i].getb(); + A += compArray[i].getNumberOfMolesInPhase() * aij; + } + A = calcB(phase, temperature, pressure, numbcomp) * (A - phase.getNumberOfMolesInPhase() + * gePhase.getExcessGibbsEnergy(phase, phase.getNumberOfComponents(), + phase.getTemperature(), phase.getPressure(), PhaseType.byValue(0)) + / gePhase.getNumberOfMolesInPhase() / hwfc); + Atot = A; + return A; + } - @Override - public double getHValphaParameter(int i, int j) { - return HValpha[i][j]; - } + @Override + public double calcAi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + double A = 0.0; + double aij = 0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + aij = compArray[compNumb].getaT() / compArray[compNumb].getb(); + A = getB() * (aij - R * temperature + * Math.log(((ComponentGEInterface) gePhase.getComponents()[compNumb]).getGamma()) / hwfc); + + A += getA() * calcBi(compNumb, phase, temperature, pressure, numbcomp) / getB(); + // System.out.println("Ai HV : " + A); + return A; + } - @Override - public double getKijWongSandler(int i, int j) { - return WSintparam[i][j]; - } + @Override + public double calcAiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + double A = 0; + + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + A = getB() + * (compArray[compNumb].getaDiffT() / compArray[compNumb].getb() + - R * Math.log(((ComponentGEInterface) gePhase.getComponents()[compNumb]).getGamma()) + / hwfc + - R * temperature + * ((ComponentGEInterface) gePhase.getComponents()[compNumb]).getlnGammadt() + / hwfc) + + compArray[compNumb].getb() * calcAT(phase, temperature, pressure, numbcomp) / getB(); + // 0.5/Math.sqrt(compArray[compNumb].getaT()*compArray[j].getaT())*(compArray[compNumb].getaT() + // * compArray[j].getaDiffT() +compArray[j].getaT() * + // compArray[compNumb].getaDiffT())*(1-intparam[compNumb][j]); + + // System.out.println("Ait HV: " + A); + + return A; + } - @Override - public void setKijWongSandler(int i, int j, double value) { - WSintparam[i][j] = value; - WSintparam[j][i] = value; - } + @Override + public double calcAT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double A = 0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + for (int i = 0; i < numbcomp; i++) { + A += compArray[i].getNumberOfMolesInPhase() + * (compArray[i].getaDiffT() / compArray[i].getb() + - R * Math.log(((ComponentGEInterface) gePhase.getComponents()[i]).getGamma()) + / hwfc + - R * temperature + * ((ComponentGEInterface) gePhase.getComponents()[i]).getlnGammadt() + / Math.log(2.0)); + // ....); + // 0.5/Math.sqrt(compArray[compNumb].getaT()*compArray[j].getaT())*(compArray[compNumb].getaT() + // * compArray[j].getaDiffT() +compArray[j].getaT() * + // compArray[compNumb].getaDiffT())*(1-intparam[compNumb][j]); + } + + A *= getB(); + // System.out.println("AT HV: " + A); + return A; + } - @Override - public double calcA(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double A = 0.0; - double aij = 0.0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - gePhase.setProperties(phase); - - for (int i = 0; i < numbcomp; i++) { - aij = compArray[i].getaT() / compArray[i].getb(); - A += compArray[i].getNumberOfMolesInPhase() * aij; - } - A = calcB(phase, temperature, pressure, numbcomp) * (A - phase.getNumberOfMolesInPhase() - * gePhase.getExessGibbsEnergy(phase, phase.getNumberOfComponents(), - phase.getTemperature(), phase.getPressure(), 0) - / gePhase.getNumberOfMolesInPhase() / hwfc); - Atot = A; - return A; - } + @Override + public double calcAij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double aij = compArray[compNumbj].getb() + * (compArray[compNumb].getaT() / compArray[compNumb].getb() - R * temperature + * Math.log(((ComponentGEInterface) gePhase.getComponents()[compNumb]).getGamma()) + / hwfc) + - getB() * R * temperature / hwfc + * ((ComponentGEInterface) gePhase.getComponents()[compNumb]).getlnGammadn(compNumbj) + + compArray[compNumb].getb() + * (compArray[compNumbj].getaT() / compArray[compNumbj].getb() - R * temperature + * Math.log(((ComponentGEInterface) gePhase.getComponents()[compNumbj]).getGamma()) + / hwfc); + return aij; + } + } - @Override - public double calcAi(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double A = 0.0; - double aij = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - aij = compArray[compNumb].getaT() / compArray[compNumb].getb(); - A = getB() * (aij - R * temperature - * Math.log( - ((ComponentGEInterface) gePhase.getComponents()[compNumb]).getGamma()) - / hwfc); - - A += getA() * calcBi(compNumb, phase, temperature, pressure, numbcomp) / getB(); - // System.out.println("Ai HV : " + A); - return A; - } + public class SRKHuronVidal2 extends ClassicSRK implements HVmixingRuleInterface { + private static final long serialVersionUID = 1000; - @Override - public double calcAiT(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double A = 0; - - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - A = getB() - * (compArray[compNumb].getaDiffT() / compArray[compNumb].getb() - R * Math.log( - ((ComponentGEInterface) gePhase.getComponents()[compNumb]).getGamma()) - / hwfc - - R * temperature - * ((ComponentGEInterface) gePhase.getComponents()[compNumb]) - .getlnGammadt() - / hwfc) - + compArray[compNumb].getb() * calcAT(phase, temperature, pressure, numbcomp) - / getB();// ....); - // 0.5/Math.sqrt(compArray[compNumb].getaT()*compArray[j].getaT())*(compArray[compNumb].getaT() - // * - // compArray[j].getaDiffT() - // +compArray[j].getaT() - // * - // compArray[compNumb].getaDiffT())*(1-intparam[compNumb][j]); - // System.out.println("Ait HV: " + A); - - return A; - } + PhaseInterface orgPhase; + PhaseGE gePhase; + double Q = 0; - @Override - public double calcAT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double A = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - for (int i = 0; i < numbcomp; i++) { - A += compArray[i].getNumberOfMolesInPhase() - * (compArray[i].getaDiffT() / compArray[i].getb() - - R * Math.log(((ComponentGEInterface) gePhase.getComponents()[i]) - .getGamma()) / hwfc - - R * temperature - * ((ComponentGEInterface) gePhase.getComponents()[i]) - .getlnGammadt() - / Math.log(2.0));// ....); - // 0.5/Math.sqrt(compArray[compNumb].getaT()*compArray[j].getaT())*(compArray[compNumb].getaT() - // * compArray[j].getaDiffT() - // +compArray[j].getaT() * - // compArray[compNumb].getaDiffT())*(1-intparam[compNumb][j]); - } + double QT = 0; - A *= getB(); - // System.out.println("AT HV: " + A); - return A; - } + double DDE2; - @Override - public double calcAij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - double aij = - compArray[compNumbj].getb() - * (compArray[compNumb].getaT() / compArray[compNumb].getb() - - R * temperature - * Math.log(((ComponentGEInterface) gePhase - .getComponents()[compNumb]).getGamma()) - / hwfc) - - getB() * R * temperature / hwfc - * ((ComponentGEInterface) gePhase.getComponents()[compNumb]) - .getlnGammadn(compNumbj) - + compArray[compNumb].getb() - * (compArray[compNumbj].getaT() / compArray[compNumbj].getb() - - R * temperature - * Math.log(((ComponentGEInterface) gePhase - .getComponents()[compNumbj]).getGamma()) - / hwfc); - return aij; - } - } + double alpha_mix = 0; - public class SRKHuronVidal2 extends ClassicSRK implements HVmixingRuleInterface { - private static final long serialVersionUID = 1000; - - PhaseInterface orgPhase; - PhaseGE gePhase; - double Q = 0, QT = 0, DDE2; - double alpha_mix = 0, dadt = 0, b_mix = 0, dbdt = 0, bdert = 0, d2adt2 = 0, d2bdt2 = 0; - double[] ader, adert, qf1, d2qp; - double[] qPure, qPuredT, qPuredTdT; - double[][] ad2, qf2, qft, bd2; - double hwfc = 0, gex = 0; - double[] oneSubAlf, abf, bc, abft2, abft, QFTD, BDER, BDERT; - - public SRKHuronVidal2(PhaseInterface phase, double[][] HValpha, double[][] HVDij, - String[][] mixRule) { - super(); - this.orgPhase = phase; - - if (mixingRuleGEModel.equals("NRTL")) { - gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, mixRule, intparam); - } else if (mixingRuleGEModel.equals("NRTL_HV")) { - gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, mixRule, intparam); - } else if (mixingRuleGEModel.equals("UNIQUAQ")) { - gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, mixRule, intparam); - } else if (mixingRuleGEModel.equals("UNIFAC")) { - gePhase = new PhaseGEUnifac(orgPhase, HValpha, HVDij, mixRule, intparam); - } else if (mixingRuleGEModel.equals("UNIFAC_PSRK")) { - gePhase = new PhaseGEUnifacPSRK(orgPhase, HValpha, HVDij, mixRule, intparam); - } else if (mixingRuleGEModel.equals("UNIFAC_UMRPRU")) { - gePhase = new PhaseGEUnifacUMRPRU(orgPhase, HValpha, HVDij, mixRule, intparam); - } else { - gePhase = new PhaseGEUnifac(orgPhase, HValpha, HVDij, mixRule, intparam); - } - gePhase.init(phase.getNumberOfMolesInPhase(), phase.getNumberOfComponents(), 0, - phase.getPhaseType(), phase.getBeta()); - gePhase.setProperties(phase); - } + double dadt = 0; - public SRKHuronVidal2(PhaseInterface phase, double[][] HValpha, double[][] HVDij, - double[][] HVDijT, String[][] mixRule) { - super(); - this.orgPhase = phase; - - if (mixingRuleGEModel.equals("NRTL")) { - gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, HVDijT, mixRule, - intparam); - } else if (mixingRuleGEModel.equals("NRTL_HV")) { - gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, mixRule, intparam); - } else if (mixingRuleGEModel.equals("UNIQUAQ")) { - gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, HVDijT, mixRule, - intparam); - } else if (mixingRuleGEModel.equals("UNIFAC")) { - gePhase = new PhaseGEUnifac(orgPhase, HValpha, HVDij, mixRule, intparam); - } else if (mixingRuleGEModel.equals("UNIFAC_PSRK")) { - gePhase = new PhaseGEUnifacPSRK(orgPhase, HValpha, HVDij, mixRule, intparam); - } else if (mixingRuleGEModel.equals("UNIFAC_UMRPRU")) { - gePhase = new PhaseGEUnifacUMRPRU(orgPhase, HValpha, HVDij, mixRule, intparam); - } else { - gePhase = new PhaseGEUnifac(orgPhase, HValpha, HVDij, mixRule, intparam); - } - gePhase.setProperties(phase); - // gePhase.init(phase.getNumberOfMolesInPhase(),phase.getNumberOfComponents(),0,phase.getPhaseType(),phase.getBeta()); - } + double b_mix = 0; - public void init(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double dbdt = 0; - gePhase.setProperties(phase); - gePhase.setParams(phase, HValpha, HVDij, HVDijT, classicOrHV, intparam); + double bdert = 0; - if (mixingRuleGEModel.equals("NRTL")) { - // gePhase.init(phase.getNumberOfMolesInPhase(),phase.getNumberOfComponents(),3,phase.getPhaseType(),phase.getBeta()); - gePhase.getExessGibbsEnergy(phase, numbcomp, temperature, pressure, - phase.getPhaseType()); - } else { - gePhase.init((phase.getNumberOfMolesInPhase() / phase.getBeta()), - phase.getNumberOfComponents(), phase.getInitType(), phase.getPhaseType(), - phase.getBeta()); - } + double d2adt2 = 0; - hwfc = -1.0 / (1.0 - / (compArray[0].getDeltaEosParameters()[1] - - compArray[0].getDeltaEosParameters()[0]) - * Math.log((1.0 + compArray[0].getDeltaEosParameters()[1]) - / (1.0 + compArray[0].getDeltaEosParameters()[0]))); - if (mixingRuleGEModel.equals("UNIFAC_PSRK")) { - hwfc = -1.0 / 0.64663; - } - if (mixingRuleGEModel.equals("UNIFAC_UMRPRU")) { - // hwfc = -1.0 / 0.64663; - hwfc = -1.0 / 0.53; - } + double d2bdt2 = 0; - double term = 0.0; - double dubdert = 0.0; - if (qPure == null) { - qPure = new double[numbcomp]; - qPuredT = new double[numbcomp]; - qPuredTdT = new double[numbcomp]; - ader = new double[numbcomp]; - adert = new double[numbcomp]; - ad2 = new double[numbcomp][numbcomp]; - qf2 = new double[numbcomp][numbcomp]; - bd2 = new double[numbcomp][numbcomp]; - qft = new double[numbcomp][numbcomp]; - qf1 = new double[numbcomp]; - oneSubAlf = new double[numbcomp]; - abf = new double[numbcomp]; - bc = new double[numbcomp]; - QFTD = new double[numbcomp]; - } - for (int i = 0; i < numbcomp; i++) { - qPure[i] = compArray[i].getaT() / (compArray[i].getb() * R * temperature); - if (phase.getInitType() > 1) { - qPuredT[i] = -compArray[i].getaT() - / (compArray[i].getb() * R * temperature * temperature) - + compArray[i].diffaT(temperature) - / (compArray[i].getb() * R * temperature); - qPuredTdT[i] = 2.0 * compArray[i].getaT() - / (compArray[i].getb() * R * Math.pow(temperature, 3.0)) - - compArray[i].getaDiffT() - / (compArray[i].getb() * R * temperature * temperature) - + compArray[i].getaDiffDiffT() / (compArray[i].getb() * R * temperature) - - compArray[i].getaDiffT() - / (compArray[i].getb() * R * temperature * temperature); - } - } + double[] ader; - alpha_mix = 0.0; - dadt = 0.0; - for (int i = 0; i < numbcomp; i++) { - term = qPure[i] + hwfc - * Math.log(((ComponentGEInterface) gePhase.getComponents()[i]).getGamma()); - alpha_mix += phase.getComponents()[i].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase() * term; - ader[i] = term; - compArray[i].setAder(ader[i]); - - if (phase.getInitType() > 1) { - term = qPuredT[i] + hwfc - * ((ComponentGEInterface) gePhase.getComponents()[i]).getlnGammadt(); - dubdert += (qPuredTdT[i] + hwfc - * ((ComponentGEInterface) gePhase.getComponents()[i]).getlnGammadtdt()) - * phase.getComponents()[i].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase(); - dadt += term * phase.getComponents()[i].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase(); - adert[i] = term; - compArray[i].setdAdTdn(adert[i]); - } - } + double[] adert; - d2adt2 = dubdert; + double[] qf1; - if (phase.getInitType() > 2) { - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - ad2[i][j] = hwfc * ((ComponentGEInterface) gePhase.getComponents()[i]) - .getlnGammadn(j); - compArray[i].setdAdndn(j, ad2[i][j]); - } - } - } - } + double[] d2qp; - @Override - public PhaseInterface getGEPhase() { - return gePhase; - } + double[] qPure; - @Override - public void setHVDijParameter(int i, int j, double value) { - HVDij[i][j] = value; - gePhase.setDij(HVDij); - } + double[] qPuredT; - @Override - public double getHVDijParameter(int i, int j) { - return HVDij[i][j]; - } + double[] qPuredTdT; - @Override - public void setHVDijTParameter(int i, int j, double value) { - HVDijT[i][j] = value; - gePhase.setDijT(HVDijT); - } + double[][] ad2; - @Override - public double getHVDijTParameter(int i, int j) { - return HVDijT[i][j]; - } + double[][] qf2; - @Override - public void setHValphaParameter(int i, int j, double value) { - HValpha[i][j] = value; - HValpha[j][i] = value; - gePhase.setAlpha(HValpha); - } + double[][] qft; - @Override - public double getHValphaParameter(int i, int j) { - return HValpha[i][j]; - } + double[][] bd2; - @Override - public double getKijWongSandler(int i, int j) { - return WSintparam[i][j]; - } + double hwfc = 0; - @Override - public void setKijWongSandler(int i, int j, double value) { - WSintparam[i][j] = value; - WSintparam[j][i] = value; - } + double gex = 0; - @Override - public double calcA(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double A = 0.0; - this.init(phase, temperature, pressure, numbcomp); - // A = phase.getNumberOfMolesInPhase() * calcB(phase, temperature, pressure, - // numbcomp) * R * temperature * alpha_mix; - A = phase.getNumberOfMolesInPhase() * phase.getB() * R * temperature * alpha_mix; - - // System.out.println("A: " + A); - Atot = A; - return A; - } + double[] oneSubAlf; - @Override - public double calcAi(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double A = 0.0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - // A = getB() * R * temperature * compArray[compNumb].getAder() + - // phase.getNumberOfMolesInPhase() * calcBi(compNumb, phase, temperature, - // pressure, numbcomp) * R * temperature * alpha_mix; - A = getB() * R * temperature * compArray[compNumb].getAder() - + phase.getNumberOfMolesInPhase() * compArray[compNumb].getBi() * R - * temperature * alpha_mix;;// calcBi(compNumb, phase, temperature, - // pressure, numbcomp) * R * temperature * - // alpha_mix; - - // System.out.println("Ai: " + A); - return A; - } + double[] abf; - @Override - public double calcAij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double A = 0.0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - A = calcBi(compNumbj, phase, temperature, pressure, numbcomp) * R * temperature - * compArray[compNumb].getAder() - + getB() * R * temperature * compArray[compNumb].getdAdndn(compNumbj) - + calcBi(compNumb, phase, temperature, pressure, numbcomp) * R * temperature - * compArray[compNumbj].getAder() - + calcBij(compNumb, compNumbj, phase, temperature, pressure, numbcomp) - * phase.getNumberOfMolesInPhase() * R * temperature * alpha_mix; - - return A; - } + double[] bc; - @Override - public double calcAT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double A = 0.0; - // ComponentEosInterface[] compArray = (ComponentEosInterface[]) - // phase.getcomponentArray(); + double[] abft2; - A = phase.getNumberOfMolesInPhase() * getB() * R * temperature * dadt - + phase.getNumberOfMolesInPhase() * getB() * R * alpha_mix; + double[] abft; - return A; - } + double[] QFTD; - @Override - public double calcATT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double A = 0.0; - // A = Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * temperature - // * d2adt2 + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * dadt - // + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * dadt; - A = phase.getNumberOfMolesInPhase() * getB() * R * temperature * d2adt2 - + 2.0 * phase.getNumberOfMolesInPhase() * getB() * R * dadt; - return A; - } + double[] BDER; - @Override - public double calcAiT(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - double A = getB() * R * compArray[compNumb].getAder() - + getB() * R * temperature * compArray[compNumb].getdAdTdn() - + phase.getNumberOfMolesInPhase() - * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R - * temperature * dadt - + phase.getNumberOfMolesInPhase() - * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R - * alpha_mix; - - return A; - } + double[] BDERT; + + public SRKHuronVidal2(PhaseInterface phase, double[][] HValpha, double[][] HVDij, + String[][] mixRule) { + super(); + this.orgPhase = phase; + + if (mixingRuleGEModel.equals("NRTL")) { + gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, mixRule, intparam); + } else if (mixingRuleGEModel.equals("NRTL_HV")) { + gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, mixRule, intparam); + } else if (mixingRuleGEModel.equals("UNIQUAQ")) { + gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, mixRule, intparam); + } else if (mixingRuleGEModel.equals("UNIFAC")) { + gePhase = new PhaseGEUnifac(orgPhase, HValpha, HVDij, mixRule, intparam); + } else if (mixingRuleGEModel.equals("UNIFAC_PSRK")) { + gePhase = new PhaseGEUnifacPSRK(orgPhase, HValpha, HVDij, mixRule, intparam); + } else if (mixingRuleGEModel.equals("UNIFAC_UMRPRU")) { + gePhase = new PhaseGEUnifacUMRPRU(orgPhase, HValpha, HVDij, mixRule, intparam); + } else { + gePhase = new PhaseGEUnifac(orgPhase, HValpha, HVDij, mixRule, intparam); + } + gePhase.init(phase.getNumberOfMolesInPhase(), phase.getNumberOfComponents(), 0, + phase.getType(), phase.getBeta()); + gePhase.setProperties(phase); } - public class WongSandlerMixingRule extends SRKHuronVidal2 { - private static final long serialVersionUID = 1000; + public SRKHuronVidal2(PhaseInterface phase, double[][] HValpha, double[][] HVDij, + double[][] HVDijT, String[][] mixRule) { + super(); + this.orgPhase = phase; + + if (mixingRuleGEModel.equals("NRTL")) { + gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, HVDijT, mixRule, intparam); + } else if (mixingRuleGEModel.equals("NRTL_HV")) { + gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, mixRule, intparam); + } else if (mixingRuleGEModel.equals("UNIQUAQ")) { + gePhase = new PhaseGENRTLmodifiedHV(orgPhase, HValpha, HVDij, HVDijT, mixRule, intparam); + } else if (mixingRuleGEModel.equals("UNIFAC")) { + gePhase = new PhaseGEUnifac(orgPhase, HValpha, HVDij, mixRule, intparam); + } else if (mixingRuleGEModel.equals("UNIFAC_PSRK")) { + gePhase = new PhaseGEUnifacPSRK(orgPhase, HValpha, HVDij, mixRule, intparam); + } else if (mixingRuleGEModel.equals("UNIFAC_UMRPRU")) { + gePhase = new PhaseGEUnifacUMRPRU(orgPhase, HValpha, HVDij, mixRule, intparam); + } else { + gePhase = new PhaseGEUnifac(orgPhase, HValpha, HVDij, mixRule, intparam); + } + gePhase.setProperties(phase); + // gePhase.init(phase.getNumberOfMolesInPhase() , + // phase.getNumberOfComponents(),0,phase.getType(),phase.getBeta()); + } - double Q = 0, QT = 0, DDE2; - double alpha_mix = 0, dadt = 0, b_mix = 0, dbdt = 0, bdert = 0, d2adt2 = 0, d2bdt2 = 0; - double[] ader, adert, qf1, d2qp; - double[] qPure, qPuredT, qPuredTdT; - double[][] ad2, qf2, qft, bd2; - double hwfc = 0, gex = 0, hex = 0, cpex = 0; - double[] oneSubAlf, abf, bc, abft2, abft, QFTD, BDER, BDERT; + /** + * init. + * + * @param phase Phase to initialize for. + * @param temperature Temperature to initialize at. + * @param pressure Pressure to initialize at. + * @param numbcomp Number of components. + */ + public void init(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + gePhase.setProperties(phase); + gePhase.setParams(phase, HValpha, HVDij, HVDijT, classicOrHV, intparam); + + if (mixingRuleGEModel.equals("NRTL")) { + gePhase.getExcessGibbsEnergy(phase, numbcomp, temperature, pressure, phase.getType()); + } else { + gePhase.init((phase.getNumberOfMolesInPhase() / phase.getBeta()), + phase.getNumberOfComponents(), phase.getInitType(), phase.getType(), phase.getBeta()); + } + + hwfc = -1.0 / (1.0 + / (compArray[0].getDeltaEosParameters()[1] - compArray[0].getDeltaEosParameters()[0]) + * Math.log((1.0 + compArray[0].getDeltaEosParameters()[1]) + / (1.0 + compArray[0].getDeltaEosParameters()[0]))); + if (mixingRuleGEModel.equals("UNIFAC_PSRK")) { + hwfc = -1.0 / 0.64663; + } + if (mixingRuleGEModel.equals("UNIFAC_UMRPRU")) { + // hwfc = -1.0 / 0.64663; + hwfc = -1.0 / 0.53; + } + + double term = 0.0; + double dubdert = 0.0; + if (qPure == null) { + qPure = new double[numbcomp]; + qPuredT = new double[numbcomp]; + qPuredTdT = new double[numbcomp]; + ader = new double[numbcomp]; + adert = new double[numbcomp]; + ad2 = new double[numbcomp][numbcomp]; + qf2 = new double[numbcomp][numbcomp]; + bd2 = new double[numbcomp][numbcomp]; + qft = new double[numbcomp][numbcomp]; + qf1 = new double[numbcomp]; + oneSubAlf = new double[numbcomp]; + abf = new double[numbcomp]; + bc = new double[numbcomp]; + QFTD = new double[numbcomp]; + } + for (int i = 0; i < numbcomp; i++) { + qPure[i] = compArray[i].getaT() / (compArray[i].getb() * R * temperature); + if (phase.getInitType() > 1) { + qPuredT[i] = -compArray[i].getaT() / (compArray[i].getb() * R * temperature * temperature) + + compArray[i].diffaT(temperature) / (compArray[i].getb() * R * temperature); + qPuredTdT[i] = + 2.0 * compArray[i].getaT() / (compArray[i].getb() * R * Math.pow(temperature, 3.0)) + - compArray[i].getaDiffT() / (compArray[i].getb() * R * temperature * temperature) + + compArray[i].getaDiffDiffT() / (compArray[i].getb() * R * temperature) + - compArray[i].getaDiffT() + / (compArray[i].getb() * R * temperature * temperature); + } + } + + alpha_mix = 0.0; + dadt = 0.0; + for (int i = 0; i < numbcomp; i++) { + term = qPure[i] + + hwfc * Math.log(((ComponentGEInterface) gePhase.getComponents()[i]).getGamma()); + alpha_mix += phase.getComponents()[i].getNumberOfMolesInPhase() + / phase.getNumberOfMolesInPhase() * term; + ader[i] = term; + compArray[i].setAder(ader[i]); + + if (phase.getInitType() > 1) { + term = qPuredT[i] + + hwfc * ((ComponentGEInterface) gePhase.getComponents()[i]).getlnGammadt(); + dubdert += (qPuredTdT[i] + + hwfc * ((ComponentGEInterface) gePhase.getComponents()[i]).getlnGammadtdt()) + * phase.getComponents()[i].getNumberOfMolesInPhase() + / phase.getNumberOfMolesInPhase(); + dadt += term * phase.getComponents()[i].getNumberOfMolesInPhase() + / phase.getNumberOfMolesInPhase(); + adert[i] = term; + compArray[i].setdAdTdn(adert[i]); + } + } + + d2adt2 = dubdert; + + if (phase.getInitType() > 2) { + for (int i = 0; i < numbcomp; i++) { + for (int j = 0; j < numbcomp; j++) { + ad2[i][j] = hwfc * ((ComponentGEInterface) gePhase.getComponents()[i]).getlnGammadn(j); + compArray[i].setdAdndn(j, ad2[i][j]); + } + } + } + } - public WongSandlerMixingRule(PhaseInterface phase, double[][] WSalpha, double[][] WSDij, - String[][] mixRule) { - super(phase, WSalpha, WSDij, mixRule); - } + @Override + public PhaseInterface getGEPhase() { + return gePhase; + } - public WongSandlerMixingRule(PhaseInterface phase, double[][] WSalpha, double[][] WSDij, - double[][] WSDijT, String[][] mixRule) { - super(phase, WSalpha, WSDij, WSDijT, mixRule); - } + @Override + public void setHVDijParameter(int i, int j, double value) { + HVDij[i][j] = value; + gePhase.setDij(HVDij); + } - @Override - public void init(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - gePhase.setProperties(phase); - - if (mixingRuleGEModel.equals("NRTL")) { - // gePhase.init(phase.getNumberOfMolesInPhase(),phase.getNumberOfComponents(),3,phase.getPhaseType(),phase.getBeta()); - gePhase.getExessGibbsEnergy(phase, numbcomp, temperature, pressure, - phase.getPhaseType()); - } else { - gePhase.init(phase.getNumberOfMolesInPhase(), phase.getNumberOfComponents(), 3, - phase.getPhaseType(), phase.getBeta()); - } + @Override + public double getHVDijParameter(int i, int j) { + return HVDij[i][j]; + } - hwfc = -1.0 / (1.0 - / (compArray[0].getDeltaEosParameters()[1] - - compArray[0].getDeltaEosParameters()[0]) - * Math.log((1.0 + compArray[0].getDeltaEosParameters()[1]) - / (1.0 + compArray[0].getDeltaEosParameters()[0]))); - - double term = 0.0; - qPure = new double[numbcomp]; - qPuredT = new double[numbcomp]; - qPuredTdT = new double[numbcomp]; - ader = new double[numbcomp]; - adert = new double[numbcomp]; - ad2 = new double[numbcomp][numbcomp]; - qf2 = new double[numbcomp][numbcomp]; - bd2 = new double[numbcomp][numbcomp]; - qft = new double[numbcomp][numbcomp]; - qf1 = new double[numbcomp]; - oneSubAlf = new double[numbcomp]; - abf = new double[numbcomp]; - bc = new double[numbcomp]; - abft2 = new double[numbcomp]; - abft = new double[numbcomp]; - QFTD = new double[numbcomp]; - BDER = new double[numbcomp]; - BDERT = new double[numbcomp]; - // first part - hex = phase.getHresTP() / phase.getNumberOfMolesInPhase(); - cpex = phase.getCpres() / phase.getNumberOfMolesInPhase(); - - for (int i = 0; i < numbcomp; i++) { - qPure[i] = compArray[i].getaT() / (compArray[i].getb() * R * temperature); - qPuredT[i] = -compArray[i].getaT() - / (compArray[i].getb() * R * temperature * temperature) - + compArray[i].diffaT(temperature) - / (compArray[i].getb() * R * temperature); - qPuredTdT[i] = 2.0 * compArray[i].getaT() - / (compArray[i].getb() * R * Math.pow(temperature, 3.0)) - - compArray[i].getaDiffT() - / (compArray[i].getb() * R * Math.pow(temperature, 2.0)) - + compArray[i].getaDiffDiffT() / (compArray[i].getb() * R * temperature) - - compArray[i].getaDiffT() - / (compArray[i].getb() * R * Math.pow(temperature, 2.0)); - } + @Override + public void setHVDijTParameter(int i, int j, double value) { + HVDijT[i][j] = value; + gePhase.setDijT(HVDijT); + } - double sd2 = (2 * hex - cpex * temperature) / Math.pow(temperature, 3.0); - double cnt2 = 0.0; - for (int i = 0; i < numbcomp; i++) { - cnt2 += phase.getComponents()[i].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase() * qPuredTdT[i]; - // second part - } - alpha_mix = 0.0; - dadt = 0.0; - for (int i = 0; i < numbcomp; i++) { - term = qPure[i] + hwfc - * Math.log(((ComponentGEInterface) gePhase.getComponents()[i]).getGamma()); - alpha_mix += phase.getComponents()[i].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase() * term; - ader[i] = term; - compArray[i].setAder(ader[i]); - - term = qPuredT[i] - + hwfc * ((ComponentGEInterface) gePhase.getComponents()[i]).getlnGammadt(); - dadt += term * phase.getComponents()[i].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase(); - adert[i] = term; - compArray[i].setdAdTdn(adert[i]); - } - d2adt2 = cnt2 + hwfc * sd2; - // TODO implment hex and Cpex and set dAdTdT - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - ad2[i][j] = hwfc - * ((ComponentGEInterface) gePhase.getComponents()[i]).getlnGammadn(j); - compArray[i].setdAdndn(j, ad2[i][j]); - } - } + @Override + public double getHVDijTParameter(int i, int j) { + return HVDijT[i][j]; + } - // double rhs = 0.0; - for (int i = 0; i < numbcomp; i++) { - oneSubAlf[i] = 1.0 - qPure[i]; - abf[i] = compArray[i].getb() * oneSubAlf[i]; - abft[i] = -compArray[i].getb() * qPuredT[i]; - abft2[i] = -compArray[i].getb() * qPuredTdT[i]; - } + @Override + public void setHValphaParameter(int i, int j, double value) { + HValpha[i][j] = value; + HValpha[j][i] = value; + gePhase.setAlpha(HValpha); + } - double dd2 = 0.0; - for (int i = 0; i < numbcomp; i++) { - double ssi = 0.0; - for (int j = 0; j < numbcomp; j++) { - ssi += (1.0 - WSintparam[i][j]) * (abft2[i] + abft2[j]) - * phase.getComponents()[j].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase(); - } - dd2 += phase.getComponents()[i].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase() * ssi; - } - dd2 = 0.5 * dd2; + @Override + public double getHValphaParameter(int i, int j) { + return HValpha[i][j]; + } - for (int i = 0; i < numbcomp; i++) { - for (int j = i; j < numbcomp; j++) { - double ee = 1.0 - WSintparam[i][j]; - qf2[i][j] = ee * (abf[i] + abf[j]); - qf2[j][i] = qf2[i][j]; + @Override + public double getKijWongSandler(int i, int j) { + return WSintparam[i][j]; + } - qft[i][j] = ee * (abft[i] + abft[j]); - qft[j][i] = qft[i][j]; - } - } - Q = 0.0; - QT = 0.0; - - for (int i = 0; i < numbcomp; i++) { - double ss = 0.0; - for (int j = 0; j < numbcomp; j++) { - ss += qf2[j][i] * phase.getComponents()[j].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase(); - } - qf1[i] = ss; - Q += phase.getComponents()[i].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase() * ss; - double sst = 0.0; - for (int j = 0; j < numbcomp; j++) { - sst += qft[j][i] * phase.getComponents()[j].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase(); - } - QFTD[i] = sst; - QT += phase.getComponents()[i].getNumberOfMolesInPhase() - / phase.getNumberOfMolesInPhase() * sst; - } - double d_mix = 0.5 * Q; - double d_mixt = 0.5 * QT; - - double enum1 = 1.0 - alpha_mix; - double enumr = 1.0 / enum1; - b_mix = d_mix * enumr; - dbdt = (d_mixt + b_mix * dadt) * enumr; - - for (int i = 0; i < numbcomp; i++) { - BDER[i] = (qf1[i] - b_mix * (1.0 - ader[i])) * enumr; - compArray[i].setBder(BDER[i]); - double ss = QFTD[i] + b_mix * adert[i] + BDER[i] * dadt + dbdt * (ader[i] - 1.0); - BDERT[i] = ss * enumr; - compArray[i].setdBdndT(BDERT[i]); - } + @Override + public void setKijWongSandler(int i, int j, double value) { + WSintparam[i][j] = value; + WSintparam[j][i] = value; + } - double DD2E = dd2 + b_mix * d2adt2 + 2.0 * dbdt * dadt; - d2bdt2 = DD2E / (1.0 - alpha_mix); + @Override + public double calcA(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double A = 0.0; + this.init(phase, temperature, pressure, numbcomp); + // A = phase.getNumberOfMolesInPhase() * calcB(phase, temperature, pressure, + // numbcomp) * R * temperature * alpha_mix; + A = phase.getNumberOfMolesInPhase() * phase.getB() * R * temperature * alpha_mix; + + // System.out.println("A: " + A); + Atot = A; + return A; + } - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - bd2[i][j] = - (qf2[i][j] + b_mix * ad2[i][j] + BDER[j] * ader[i] + BDER[i] * ader[j]) - * enumr; - compArray[i].setdBdndn(j, ad2[i][j]); - } - } - } + @Override + public double calcAi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + double A = 0.0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + // A = getB() * R * temperature * compArray[compNumb].getAder() + + // phase.getNumberOfMolesInPhase() * calcBi(compNumb, phase, temperature, + // pressure, numbcomp) * R * temperature * alpha_mix; + A = getB() * R * temperature * compArray[compNumb].getAder() + phase.getNumberOfMolesInPhase() + * compArray[compNumb].getBi() * R * temperature * alpha_mix; + // calcBi(compNumb, phase, temperature, pressure, numbcomp) * R * temperature * alpha_mix; + + // System.out.println("Ai: " + A); + return A; + } - @Override - public double calcA(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double A = 0; - // super.calcA(phase, temperature, pressure, numbcomp); - this.init(phase, temperature, pressure, numbcomp); - A = Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * calcB(phase, temperature, pressure, numbcomp) * R * temperature * alpha_mix; - Atot = A; - return A; - } + @Override + public double calcAij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + double A = 0.0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + A = calcBi(compNumbj, phase, temperature, pressure, numbcomp) * R * temperature + * compArray[compNumb].getAder() + + getB() * R * temperature * compArray[compNumb].getdAdndn(compNumbj) + + calcBi(compNumb, phase, temperature, pressure, numbcomp) * R * temperature + * compArray[compNumbj].getAder() + + calcBij(compNumb, compNumbj, phase, temperature, pressure, numbcomp) + * phase.getNumberOfMolesInPhase() * R * temperature * alpha_mix; + + return A; + } - @Override - public double calcAi(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double A = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + @Override + public double calcAT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double A = 0.0; + // ComponentEosInterface[] compArray = (ComponentEosInterface[]) + // phase.getcomponentArray(); - A = getB() * R * temperature * compArray[compNumb].getAder() - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R - * temperature * alpha_mix; + A = phase.getNumberOfMolesInPhase() * getB() * R * temperature * dadt + + phase.getNumberOfMolesInPhase() * getB() * R * alpha_mix; - // System.out.println("Ai: " + A); - return A; - } + return A; + } - @Override - public double calcAT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double A = 0; - // ComponentEosInterface[] compArray = (ComponentEosInterface[]) - // phase.getcomponentArray(); + @Override + public double calcATT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double A = 0.0; + // A = Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * temperature + // * d2adt2 + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * dadt + // + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * dadt; + A = phase.getNumberOfMolesInPhase() * getB() * R * temperature * d2adt2 + + 2.0 * phase.getNumberOfMolesInPhase() * getB() * R * dadt; + return A; + } - A = Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * temperature * dadt - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * alpha_mix - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * calcBT(phase, temperature, pressure, numbcomp) * R * temperature - * alpha_mix; + @Override + public double calcAiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + double A = getB() * R * compArray[compNumb].getAder() + + getB() * R * temperature * compArray[compNumb].getdAdTdn() + + phase.getNumberOfMolesInPhase() + * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R * temperature * dadt + + phase.getNumberOfMolesInPhase() + * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R * alpha_mix; + + return A; + } + } - return A; - } + public class WongSandlerMixingRule extends SRKHuronVidal2 { + private static final long serialVersionUID = 1000; - @Override - public double calcATT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double A = 0; - - A = Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * temperature * d2adt2 - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * dadt - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * dadt - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * calcBTT(phase, temperature, pressure, numbcomp) * R * temperature - * alpha_mix - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * calcBT(phase, temperature, pressure, numbcomp) * R * alpha_mix - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * calcBT(phase, temperature, pressure, numbcomp) * R * temperature - * dadt; - - return A; - } + double Q = 0; - @Override - public double calcAiT(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - double A = getB() * R * compArray[compNumb].getAder() - + getB() * R * temperature * compArray[compNumb].getdAdTdn() - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R - * temperature * dadt - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R - * alpha_mix - + calcBT(phase, temperature, pressure, numbcomp) * R * temperature - * compArray[compNumb].getAder() - + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) - * calcBiT(compNumb, phase, temperature, pressure, numbcomp) * R - * temperature * alpha_mix; - - return A; - } + double QT = 0; - @Override - public double calcAij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - double A = 0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - - A = Math.pow(phase.getNumberOfMolesInPhase(), 0.0) - * calcBi(compNumbj, phase, temperature, pressure, numbcomp) * R * temperature - * compArray[compNumb].getAder() - + Math.pow(phase.getNumberOfMolesInPhase(), 0.0) - * calcB(phase, temperature, pressure, numbcomp) * R * temperature - * compArray[compNumb].getdAdndn(compNumbj) - + Math.pow(phase.getNumberOfMolesInPhase(), 0.0) - * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R - * temperature * compArray[compNumbj].getAder() - + Math.pow(phase.getNumberOfMolesInPhase(), 0.0) - * calcBij(compNumb, compNumbj, phase, temperature, pressure, numbcomp) - * R * temperature * alpha_mix; - - return A; - } + double DDE2; - @Override - public double calcB(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - double B = b_mix * phase.getNumberOfMolesInPhase(); - Btot = B; - return B; - } + double alpha_mix = 0; - @Override - public double calcBi(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - return compArray[compNumb].getBder(); - } + double dadt = 0; - public double calcBT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - return dbdt * phase.getNumberOfMolesInPhase(); - } + double b_mix = 0; - public double calcBTT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - return d2bdt2 * phase.getNumberOfMolesInPhase(); - } + double dbdt = 0; - public double calcBiT(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - double bit = compArray[compNumb].getdBdndT(); - return bit; - } + double bdert = 0; - @Override - public double calcBij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - return compArray[compNumb].getdBdndn(compNumbj); - } - } + double d2adt2 = 0; - public class ElectrolyteMixRule implements ElectrolyteMixingRulesInterface, Cloneable { - private static final long serialVersionUID = 1000; + double d2bdt2 = 0; - public ElectrolyteMixRule(PhaseInterface phase) { - calcWij(phase); - } + double[] ader; - @Override - public void calcWij(PhaseInterface phase) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - int numbcomp = phase.getNumberOfComponents(); - - // System.out.println("numb comp " + numbcomp); - for (int i = 0; i < numbcomp; i++) { - if (compArray[i].getIonicCharge() > 0) { - for (int j = 0; j < numbcomp; j++) { - if (wijCalcOrFitted[i][j] == 0) { - if (compArray[j].getComponentName().equals("water") - || compArray[j].getComponentName().equals("MDEA") - || compArray[j].getComponentName().equals("Piperazine")) {// compArray[j].getIonicCharge()==0){ - wij[0][i][j] = - neqsim.thermo.util.constants.FurstElectrolyteConstants - .getFurstParam(2) - * compArray[i].getStokesCationicDiameter() - + neqsim.thermo.util.constants.FurstElectrolyteConstants - .getFurstParam(3); - } - // if(compArray[j].getComponentName().equals("MDEA")){ - // wij[0][i][j] = - // (thermo.util.constants.FurstElectrolyteConstants.getFurstParamMDEA(2) - // * - // compArray[i].getStokesCationicDiameter() + - // thermo.util.constants.FurstElectrolyteConstants.getFurstParamMDEA(3)); - // } - if (compArray[j].getIonicCharge() < -0.01) { - wij[0][i][j] = - neqsim.thermo.util.constants.FurstElectrolyteConstants - .getFurstParam(4) - * Math.pow(compArray[i].getStokesCationicDiameter() - + compArray[j].getPaulingAnionicDiameter(), - 4.0) - + neqsim.thermo.util.constants.FurstElectrolyteConstants - .getFurstParam(5); - } - wij[0][j][i] = wij[0][i][j]; - } - } - } - } - } + double[] adert; - @Override - public void setWijParameter(int i, int j, double value) { - // System.out.println("intparam: " + value); - wij[0][i][j] = value; - wij[0][j][i] = value; - } + double[] qf1; - @Override - public double getWijParameter(int i, int j) { - return wij[0][i][j]; - } + double[] d2qp; - @Override - public void setWijT1Parameter(int i, int j, double value) { - wij[1][i][j] = value; - wij[1][j][i] = value; - } + double[] qPure; - @Override - public double gettWijT1Parameter(int i, int j) { - return wij[1][i][j]; - } + double[] qPuredT; - @Override - public void setWijT2Parameter(int i, int j, double value) { - wij[2][i][j] = value; - wij[2][j][i] = value; - } + double[] qPuredTdT; - @Override - public double gettWijT2Parameter(int i, int j) { - return wij[2][i][j]; - } + double[][] ad2; - @Override - public double getWij(int i, int j, double temperature) { - return wij[0][i][j] + wij[1][i][j] * (1.0 / temperature - 1.0 / 298.15) + wij[2][i][j] - * ((298.15 - temperature) / temperature + Math.log(temperature / 298.15)); - } + double[][] qf2; - @Override - public double getWijT(int i, int j, double temperature) { - return (-wij[1][i][j] / (temperature * temperature) - - wij[2][i][j] * (298.15 - temperature) / (temperature * temperature)); - } + double[][] qft; - @Override - public double getWijTT(int i, int j, double temperature) { - return (2.0 * wij[1][i][j] / (temperature * temperature * temperature) - + wij[2][i][j] / (temperature * temperature) + 2.0 * wij[2][i][j] - * (298.15 - temperature) / (temperature * temperature * temperature)); - } + double[][] bd2; - @Override - public double calcW(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - double W = 0.0; - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - W += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() * getWij(i, j, temperature);// wij[0][i][j]; - } - } - return -W; - } + double hwfc = 0; - @Override - public double calcWi(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double gex = 0; - double Wi = 0.0; - for (int j = 0; j < numbcomp; j++) { - Wi += compArray[j].getNumberOfMolesInPhase() * getWij(compNumb, j, temperature); - } - return -2.0 * Wi; - } + double hex = 0; - @Override - public double calcWiT(int compNumb, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - double WiT = 0; - for (int j = 0; j < numbcomp; j++) { - WiT += compArray[j].getNumberOfMolesInPhase() * getWijT(compNumb, j, temperature); - } - return -2.0 * WiT; - } + double cpex = 0; - @Override - public double calcWT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double[] oneSubAlf; - double WT = 0; - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - WT += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() * getWijT(i, j, temperature);// wij[0][i][j]; - } - } - return -WT; - } + double[] abf; - @Override - public double calcWTT(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double[] bc; - double WTT = 0; - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - WTT += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() * getWijTT(i, j, temperature);// wij[0][i][j]; - } - } - return -WTT; - } + double[] abft2; - @Override - public double calcWij(int compNumbi, int compNumj, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - return -2.0 * getWij(compNumbi, compNumj, temperature);// iwij[0][compNumbi][compNumj]; - } + double[] abft; + + double[] QFTD; + + double[] BDER; + + double[] BDERT; + + public WongSandlerMixingRule(PhaseInterface phase, double[][] WSalpha, double[][] WSDij, + String[][] mixRule) { + super(phase, WSalpha, WSDij, mixRule); } - /** - *

- * getMixingRule. - *

- * - * @param i a int - * @return a {@link neqsim.thermo.mixingRule.EosMixingRulesInterface} object - */ - public EosMixingRulesInterface getMixingRule(int i) { - if (i == 1) { - return new ClassicVdW(); - } else if (i == 2) { - return new ClassicSRK(); - } else if (i == 3) { - return new ClassicVdW(); - } else { - return new ClassicVdW(); - } + public WongSandlerMixingRule(PhaseInterface phase, double[][] WSalpha, double[][] WSDij, + double[][] WSDijT, String[][] mixRule) { + super(phase, WSalpha, WSDij, WSDijT, mixRule); } - /** - *

- * getMixingRule. - *

- * - * @param i a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a {@link neqsim.thermo.mixingRule.EosMixingRulesInterface} object - */ - public EosMixingRulesInterface getMixingRule(int i, PhaseInterface phase) { - this.wij = new double[3][phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + @Override + public void init(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + gePhase.setProperties(phase); + + if (mixingRuleGEModel.equals("NRTL")) { + gePhase.getExcessGibbsEnergy(phase, numbcomp, temperature, pressure, phase.getType()); + } else { + gePhase.init(phase.getNumberOfMolesInPhase(), phase.getNumberOfComponents(), 3, + phase.getType(), phase.getBeta()); + } + + hwfc = -1.0 / (1.0 + / (compArray[0].getDeltaEosParameters()[1] - compArray[0].getDeltaEosParameters()[0]) + * Math.log((1.0 + compArray[0].getDeltaEosParameters()[1]) + / (1.0 + compArray[0].getDeltaEosParameters()[0]))); + + double term = 0.0; + qPure = new double[numbcomp]; + qPuredT = new double[numbcomp]; + qPuredTdT = new double[numbcomp]; + ader = new double[numbcomp]; + adert = new double[numbcomp]; + ad2 = new double[numbcomp][numbcomp]; + qf2 = new double[numbcomp][numbcomp]; + bd2 = new double[numbcomp][numbcomp]; + qft = new double[numbcomp][numbcomp]; + qf1 = new double[numbcomp]; + oneSubAlf = new double[numbcomp]; + abf = new double[numbcomp]; + bc = new double[numbcomp]; + abft2 = new double[numbcomp]; + abft = new double[numbcomp]; + QFTD = new double[numbcomp]; + BDER = new double[numbcomp]; + BDERT = new double[numbcomp]; + // first part + hex = phase.getHresTP() / phase.getNumberOfMolesInPhase(); + cpex = phase.getCpres() / phase.getNumberOfMolesInPhase(); + + for (int i = 0; i < numbcomp; i++) { + qPure[i] = compArray[i].getaT() / (compArray[i].getb() * R * temperature); + qPuredT[i] = -compArray[i].getaT() / (compArray[i].getb() * R * temperature * temperature) + + compArray[i].diffaT(temperature) / (compArray[i].getb() * R * temperature); + qPuredTdT[i] = + 2.0 * compArray[i].getaT() / (compArray[i].getb() * R * Math.pow(temperature, 3.0)) + - compArray[i].getaDiffT() / (compArray[i].getb() * R * Math.pow(temperature, 2.0)) + + compArray[i].getaDiffDiffT() / (compArray[i].getb() * R * temperature) + - compArray[i].getaDiffT() / (compArray[i].getb() * R * Math.pow(temperature, 2.0)); + } + + double sd2 = (2 * hex - cpex * temperature) / Math.pow(temperature, 3.0); + double cnt2 = 0.0; + for (int i = 0; i < numbcomp; i++) { + cnt2 += phase.getComponents()[i].getNumberOfMolesInPhase() / phase.getNumberOfMolesInPhase() + * qPuredTdT[i]; + // second part + } + alpha_mix = 0.0; + dadt = 0.0; + for (int i = 0; i < numbcomp; i++) { + term = qPure[i] + + hwfc * Math.log(((ComponentGEInterface) gePhase.getComponents()[i]).getGamma()); + alpha_mix += phase.getComponents()[i].getNumberOfMolesInPhase() + / phase.getNumberOfMolesInPhase() * term; + ader[i] = term; + compArray[i].setAder(ader[i]); + + term = + qPuredT[i] + hwfc * ((ComponentGEInterface) gePhase.getComponents()[i]).getlnGammadt(); + dadt += term * phase.getComponents()[i].getNumberOfMolesInPhase() + / phase.getNumberOfMolesInPhase(); + adert[i] = term; + compArray[i].setdAdTdn(adert[i]); + } + d2adt2 = cnt2 + hwfc * sd2; + // TODO implment hex and Cpex and set dAdTdT + for (int i = 0; i < numbcomp; i++) { + for (int j = 0; j < numbcomp; j++) { + ad2[i][j] = hwfc * ((ComponentGEInterface) gePhase.getComponents()[i]).getlnGammadn(j); + compArray[i].setdAdndn(j, ad2[i][j]); + } + } + + // double rhs = 0.0; + for (int i = 0; i < numbcomp; i++) { + oneSubAlf[i] = 1.0 - qPure[i]; + abf[i] = compArray[i].getb() * oneSubAlf[i]; + abft[i] = -compArray[i].getb() * qPuredT[i]; + abft2[i] = -compArray[i].getb() * qPuredTdT[i]; + } + + double dd2 = 0.0; + for (int i = 0; i < numbcomp; i++) { + double ssi = 0.0; + for (int j = 0; j < numbcomp; j++) { + ssi += (1.0 - WSintparam[i][j]) * (abft2[i] + abft2[j]) + * phase.getComponents()[j].getNumberOfMolesInPhase() + / phase.getNumberOfMolesInPhase(); + } + dd2 += phase.getComponents()[i].getNumberOfMolesInPhase() / phase.getNumberOfMolesInPhase() + * ssi; + } + dd2 = 0.5 * dd2; + + for (int i = 0; i < numbcomp; i++) { + for (int j = i; j < numbcomp; j++) { + double ee = 1.0 - WSintparam[i][j]; + qf2[i][j] = ee * (abf[i] + abf[j]); + qf2[j][i] = qf2[i][j]; + + qft[i][j] = ee * (abft[i] + abft[j]); + qft[j][i] = qft[i][j]; + } + } + Q = 0.0; + QT = 0.0; + + for (int i = 0; i < numbcomp; i++) { + double ss = 0.0; + for (int j = 0; j < numbcomp; j++) { + ss += qf2[j][i] * phase.getComponents()[j].getNumberOfMolesInPhase() + / phase.getNumberOfMolesInPhase(); + } + qf1[i] = ss; + Q += phase.getComponents()[i].getNumberOfMolesInPhase() / phase.getNumberOfMolesInPhase() + * ss; + double sst = 0.0; + for (int j = 0; j < numbcomp; j++) { + sst += qft[j][i] * phase.getComponents()[j].getNumberOfMolesInPhase() + / phase.getNumberOfMolesInPhase(); + } + QFTD[i] = sst; + QT += phase.getComponents()[i].getNumberOfMolesInPhase() / phase.getNumberOfMolesInPhase() + * sst; + } + double d_mix = 0.5 * Q; + double d_mixt = 0.5 * QT; + + double enum1 = 1.0 - alpha_mix; + double enumr = 1.0 / enum1; + b_mix = d_mix * enumr; + dbdt = (d_mixt + b_mix * dadt) * enumr; + + for (int i = 0; i < numbcomp; i++) { + BDER[i] = (qf1[i] - b_mix * (1.0 - ader[i])) * enumr; + compArray[i].setBder(BDER[i]); + double ss = QFTD[i] + b_mix * adert[i] + BDER[i] * dadt + dbdt * (ader[i] - 1.0); + BDERT[i] = ss * enumr; + compArray[i].setdBdndT(BDERT[i]); + } + + double DD2E = dd2 + b_mix * d2adt2 + 2.0 * dbdt * dadt; + d2bdt2 = DD2E / (1.0 - alpha_mix); + + for (int i = 0; i < numbcomp; i++) { + for (int j = 0; j < numbcomp; j++) { + bd2[i][j] = + (qf2[i][j] + b_mix * ad2[i][j] + BDER[j] * ader[i] + BDER[i] * ader[j]) * enumr; + compArray[i].setdBdndn(j, ad2[i][j]); + } + } + } - if (i == 1) { - intparam = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - return new ClassicVdW(); - } - intparam = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - intparamji = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - intparamij = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - intparamT = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - intparamTType = new int[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - HVDij = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - HVDijT = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - NRTLDij = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - NRTLDijT = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - WSintparam = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - HValpha = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - NRTLalpha = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - classicOrHV = new String[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - classicOrWS = new String[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - wijCalcOrFitted = new int[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - - for (int k = 0; k < phase.getNumberOfComponents(); k++) { - String component_name = phase.getComponents()[k].getComponentName(); - - for (int l = k; l < phase.getNumberOfComponents(); l++) { - if (k == l) { - classicOrHV[k][l] = "Classic"; - classicOrWS[k][l] = "Classic"; - classicOrHV[l][k] = classicOrHV[k][l]; - classicOrWS[l][k] = classicOrWS[k][l]; - } else { - java.sql.ResultSet dataSet = null; - try { - if (phase.getComponent(k).isIsTBPfraction() - || phase.getComponent(l).isIsTBPfraction()) { - throw new Exception("no interaction coefficient for TBP fractions"); - } - int templ = l, tempk = k; - if (NeqSimDataBase.createTemporaryTables()) { - dataSet = database.getResultSet("SELECT * FROM intertemp WHERE (comp1='" - + component_name + "' AND comp2='" - + phase.getComponents()[l].getComponentName() + "') OR (comp1='" - + phase.getComponents()[l].getComponentName() + "' AND comp2='" - + component_name + "')"); - } else { - dataSet = database.getResultSet("SELECT * FROM inter WHERE (comp1='" - + component_name + "' AND comp2='" - + phase.getComponents()[l].getComponentName() + "') OR (comp1='" - + phase.getComponents()[l].getComponentName() + "' AND comp2='" - + component_name + "')"); - } - dataSet.next(); - if (dataSet.getString("comp1").trim() - .equals(phase.getComponents()[l].getComponentName())) { - templ = k; - tempk = l; - } - - classicOrHV[k][l] = dataSet.getString("HVTYPE").trim(); - classicOrHV[l][k] = classicOrHV[k][l]; - - if (isCalcEOSInteractionParameters()) { - intparam[k][l] = 1.0 - Math.pow((2.0 * Math.sqrt(Math - .pow(phase.getComponent(l).getCriticalVolume(), 1 / 3) - * Math.pow(phase.getComponent(k).getCriticalVolume(), 1 / 3)) - / (Math.pow(phase.getComponent(l).getCriticalVolume(), 1 / 3) - + Math.pow(phase.getComponent(k).getCriticalVolume(), - 1 / 3))), - nEOSkij); - intparamT[k][l] = 0.0; - // System.out.println("kij " + intparam[k][l]); - } else { - if (phase.getClass().getName() - .equals("neqsim.thermo.phase.PhasePrEos")) { - // System.out.println("using PR intparams"); - intparam[k][l] = Double.parseDouble(dataSet.getString("kijpr")); - intparamT[k][l] = Double.parseDouble(dataSet.getString("KIJTpr")); - } else { - intparam[k][l] = Double.parseDouble(dataSet.getString("kijsrk")); - intparamT[k][l] = Double.parseDouble(dataSet.getString("KIJTSRK")); - } - if (phase.getClass().getName() - .equals("neqsim.thermo.phase.PhasePrCPA")) { - intparam[k][l] = Double.parseDouble(dataSet.getString("cpakij_PR")); - intparamT[k][l] = 0.0; - } else if (phase.getClass().getName() - .equals("neqsim.thermo.phase.PhaseSrkCPA") - || phase.getClass().getName() - .equals("neqsim.thermo.phase.PhaseSrkCPAs") - || phase.getClass().getName().equals( - "neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { - intparam[k][l] = - Double.parseDouble(dataSet.getString("cpakij_SRK")); - intparamT[k][l] = - Double.parseDouble(dataSet.getString("cpakijT_SRK")); - - intparamij[tempk][templ] = - Double.parseDouble(dataSet.getString("cpakijx_SRK")); - intparamji[templ][tempk] = intparamij[tempk][templ]; - - intparamji[tempk][templ] = - Double.parseDouble(dataSet.getString("cpakjix_SRK")); - intparamij[templ][tempk] = intparamji[tempk][templ]; - } - if (phase.getClass().getName() - .equals("neqsim.thermo.phase.PhasePCSAFTRahmat") - || phase.getClass().getName() - .equals("neqsim.thermo.phase.PhasePCSAFT") - || phase.getClass().getName() - .equals("neqsim.thermo.phase.PhasePCSAFTa")) { - intparam[k][l] = Double.parseDouble(dataSet.getString("KIJPCSAFT")); - intparamT[k][l] = 0.0; - } - } - - java.sql.ResultSetMetaData dataSetMD = dataSet.getMetaData(); - int cols = dataSetMD.getColumnCount(); - boolean hasKIJTTypeCPAcol = false; - String colname = "KIJTTypeCPA"; - for (int x = 1; x <= cols; x++) { - if (colname.equals(dataSetMD.getColumnName(x))) { - hasKIJTTypeCPAcol = true; - } - } - - // System.out.println("class name " + phase.getClass().getName()); - if (!phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPAs") - || !hasKIJTTypeCPAcol) { - intparamTType[k][l] = Integer.parseInt(dataSet.getString("KIJTType")); - } else { - intparamTType[k][l] = - Integer.parseInt(dataSet.getString("KIJTTypeCPA")); // TODO: - // implement - // in all - // dbs - } - intparamTType[l][k] = intparamTType[k][l]; - - HValpha[k][l] = Double.parseDouble(dataSet.getString("HValpha")); - HValpha[l][k] = HValpha[k][l]; - - HVDij[tempk][templ] = Double.parseDouble(dataSet.getString("HVgij")); - HVDij[templ][tempk] = Double.parseDouble(dataSet.getString("HVgji")); - - wijCalcOrFitted[k][l] = Integer.parseInt(dataSet.getString("CalcWij")); - wijCalcOrFitted[l][k] = wijCalcOrFitted[k][l]; - - wij[0][k][l] = Double.parseDouble(dataSet.getString("w1")); - wij[0][l][k] = wij[0][k][l]; - wij[1][k][l] = Double.parseDouble(dataSet.getString("w2")); - wij[1][l][k] = wij[1][k][l]; - wij[2][k][l] = Double.parseDouble(dataSet.getString("w3")); - wij[2][l][k] = wij[2][k][l]; - - classicOrWS[k][l] = dataSet.getString("WSTYPE").trim(); - classicOrWS[l][k] = classicOrWS[k][l]; - - WSintparam[k][l] = Double.parseDouble(dataSet.getString("kijWS")); - WSintparam[k][l] = Double.parseDouble(dataSet.getString("KIJWSunifac")); - WSintparam[l][k] = WSintparam[k][l]; - - NRTLalpha[k][l] = Double.parseDouble(dataSet.getString("NRTLalpha")); - NRTLalpha[l][k] = NRTLalpha[k][l]; - - NRTLDij[tempk][templ] = Double.parseDouble(dataSet.getString("NRTLgij")); - NRTLDij[templ][tempk] = Double.parseDouble(dataSet.getString("NRTLgji")); - - HVDijT[tempk][templ] = Double.parseDouble(dataSet.getString("HVgijT")); - HVDijT[templ][tempk] = Double.parseDouble(dataSet.getString("HVgjiT")); - - NRTLDijT[tempk][templ] = Double.parseDouble(dataSet.getString("WSgijT")); - NRTLDijT[templ][tempk] = Double.parseDouble(dataSet.getString("WSgjiT")); - } catch (Exception e) { - // System.out.println("err in thermo mix....."); - // String err = e.toString(); - // System.out.println(err); - if (isCalcEOSInteractionParameters()) { - intparam[k][l] = 1.0 - Math.pow((2.0 - * Math.sqrt(Math.pow(phase.getComponent(l).getCriticalVolume(), - 1.0 / 3.0) - * Math.pow(phase.getComponent(k).getCriticalVolume(), - 1.0 / 3.0)) - / (Math.pow(phase.getComponent(l).getCriticalVolume(), - 1.0 / 3.0) - + Math.pow(phase.getComponent(k).getCriticalVolume(), - 1.0 / 3.0))), - nEOSkij); - // System.out.println("intparam not defined .... CALCULATING intparam - // between " - // +phase.getComponents()[l].getComponentName() + " and " + - // phase.getComponents()[k].getComponentName()+ " to " + - // intparam[k][l]); - } else if ((phase.getComponents()[k].getComponentName().equals("CO2") - && phase.getComponents()[l].isIsTBPfraction()) - || (phase.getComponents()[l].getComponentName().equals("CO2") - && phase.getComponents()[k].isIsTBPfraction())) { - intparam[k][l] = 0.1; - } else if ((phase.getComponents()[k].getComponentName().equals("nitrogen") - && phase.getComponents()[l].isIsTBPfraction()) - || (phase.getComponents()[l].getComponentName().equals("nitrogen") - && phase.getComponents()[k].isIsTBPfraction())) { - intparam[k][l] = 0.08; - } else if ((phase.getComponents()[k].getComponentName().equals("water") - && phase.getComponents()[l].isIsTBPfraction()) - || (phase.getComponents()[l].getComponentName().equals("water") - && phase.getComponents()[k].isIsTBPfraction())) { - intparam[k][l] = 0.2; - - if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") - || phase.getClass().getName() - .equals("neqsim.thermo.phase.PhaseSrkCPAs") - || phase.getClass().getName().equals( - "neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { - // intparam[k][l] = -0.0685; // taken from Riaz et a. 2012 - - double molmassPC = phase.getComponents()[l].getMolarMass(); - if (phase.getComponents()[k].isIsTBPfraction()) { - molmassPC = phase.getComponents()[k].getMolarMass(); - } - double intparamkPC = - -0.1533 * Math.log(1000.0 * molmassPC) + 0.7055; - intparam[k][l] = intparamkPC; - // System.out.println("kij water-HC " + intparam[k][l]); - - intparamT[k][l] = 0.0; - } - } else if ((phase.getComponents()[k].getComponentName().equals("MEG") - && phase.getComponents()[l].isIsTBPfraction()) - || (phase.getComponents()[l].getComponentName().equals("MEG") - && phase.getComponents()[k].isIsTBPfraction())) { - intparam[k][l] = 0.2; - if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") - || phase.getClass().getName() - .equals("neqsim.thermo.phase.PhaseSrkCPAs") - || phase.getClass().getName().equals( - "neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { - double molmassPC = phase.getComponents()[l].getMolarMass(); - if (phase.getComponents()[k].isIsTBPfraction()) { - molmassPC = phase.getComponents()[k].getMolarMass(); - } - double intparamkPC = - -0.0701 * Math.log(1000.0 * molmassPC) + 0.3521; - intparam[k][l] = intparamkPC; - // System.out.println("kij MEG-HC " + intparam[k][l]); - // intparam[k][l] = 0.01; - intparamT[k][l] = 0.0; - } - } else if ((phase.getComponents()[k].getComponentName().equals("ethanol") - && phase.getComponents()[l].isIsTBPfraction()) - || (phase.getComponents()[l].getComponentName().equals("ethanol") - && phase.getComponents()[k].isIsTBPfraction())) { - intparam[k][l] = 0.0; - if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") - || phase.getClass().getName() - .equals("neqsim.thermo.phase.PhaseSrkCPAs") - || phase.getClass().getName().equals( - "neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { - intparam[k][l] = -0.05; - intparamT[k][l] = 0.0; - if (phase.getComponents()[k].getMolarMass() > (200.0 / 1000.0) - || phase.getComponents()[l] - .getMolarMass() > (200.0 / 1000.0)) { - intparam[k][l] = -0.1; - } - } - } else if ((phase.getComponents()[k].getComponentName().equals("methanol") - && phase.getComponents()[l].isIsTBPfraction()) - || (phase.getComponents()[l].getComponentName().equals("methanol") - && phase.getComponents()[k].isIsTBPfraction())) { - intparam[k][l] = 0.0; - if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") - || phase.getClass().getName() - .equals("neqsim.thermo.phase.PhaseSrkCPAs") - || phase.getClass().getName().equals( - "neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { - intparam[k][l] = -0.1; - intparamT[k][l] = 0.0; - if (phase.getComponents()[k].getMolarMass() > (200.0 / 1000.0) - || phase.getComponents()[l] - .getMolarMass() > (200.0 / 1000.0)) { - intparam[k][l] = -0.2; - } - } - } else if ((phase.getComponents()[k].getComponentName().equals("TEG") - && phase.getComponents()[l].isIsTBPfraction()) - || (phase.getComponents()[l].getComponentName().equals("TEG") - && phase.getComponents()[k].isIsTBPfraction())) { - intparam[k][l] = 0.12; - if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") - || phase.getClass().getName() - .equals("neqsim.thermo.phase.PhaseSrkCPAs") - || phase.getClass().getName().equals( - "neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { - intparam[k][l] = 0.12; - intparamT[k][l] = 0.0; - } - } else if ((phase.getComponents()[k].getComponentName().equals("S8") - && phase.getComponents()[l].isIsTBPfraction()) - || (phase.getComponents()[l].getComponentName().equals("S8") - && phase.getComponents()[k].isIsTBPfraction())) { - intparam[k][l] = 0.05; - } else { - // if((phase.getComponents()[l].getComponentName().equals("CO2") || - // phase.getComponents()[k].getComponentName().equals("CO2")) && k!=l) - // intparam[k][l] = 0.1; - // else if((phase.getComponents()[l].getComponentName().equals("H2S") || - // phase.getComponents()[k].getComponentName().equals("H2S")) && k!=l) - // intparam[k][l] = 0.2; - // else if((phase.getComponents()[l].getComponentName().equals("water") - // || - // phase.getComponents()[k].getComponentName().equals("water")) && k!=l) - // intparam[k][l] = 0.5; - // else intparam[k][l] = 0.0; - // System.out.println("intparam not defined .... setting intparam - // between " + - // phase.getComponents()[l].getComponentName() + " and " + - // phase.getComponents()[k].getComponentName() + " to " + - // intparam[k][l]); - } - - // intparam[l][k] = intparam[k][l]; - // intparamT[l][k] = intparamT[k][l]; - intparamij[k][l] = intparam[k][l]; - intparamij[l][k] = intparam[k][l]; - intparamji[k][l] = intparam[k][l]; - intparamji[l][k] = intparam[k][l]; - // System.out.println("kij set to " + intparam[l][k] + " " + - // phase.getComponents()[l].getComponentName() + " " + - // phase.getComponents()[k].getComponentName()); - - classicOrHV[k][l] = "Classic"; - classicOrHV[l][k] = classicOrHV[k][l]; - - classicOrWS[k][l] = "Classic"; - classicOrWS[l][k] = classicOrWS[k][l]; - } finally { - intparam[l][k] = intparam[k][l]; - intparamT[l][k] = intparamT[k][l]; - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - logger.error("err closing dataSet IN MIX...", e); - } - } - } - } - } + @Override + public double calcA(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double A = 0; + // super.calcA(phase, temperature, pressure, numbcomp); + this.init(phase, temperature, pressure, numbcomp); + A = Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * calcB(phase, temperature, pressure, numbcomp) * R * temperature * alpha_mix; + Atot = A; + return A; + } - try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error closing database.....", e); - } + @Override + public double calcAi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + double A = 0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + A = getB() * R * temperature * compArray[compNumb].getAder() + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R * temperature + * alpha_mix; + + // System.out.println("Ai: " + A); + return A; + } - if (i == 2) { - mixingRuleName = "classic"; - return new ClassicSRK(); - } else if (i == 3) { - // Classic Huron-Vidal - mixingRuleName = "Huron-Vidal"; - return new SRKHuronVidal2(phase, HValpha, HVDij, classicOrHV); - } else if (i == 4) { - mixingRuleName = "Huron-Vidal"; - return new SRKHuronVidal2(phase, HValpha, HVDij, HVDijT, classicOrHV); - } else if (i == 5) { - mixingRuleName = "Wong-Sandler"; - return new WongSandlerMixingRule(phase, NRTLalpha, NRTLDij, NRTLDijT, classicOrWS); - } else if (i == 6) { - mixingRuleName = "Wong-Sandler"; - return new WongSandlerMixingRule(phase, NRTLalpha, NRTLDij, NRTLDijT, classicOrWS); - } else if (i == 7) { - mixingRuleName = "classic-CPA"; - return new ClassicSRK(); - } else if (i == 8) { - mixingRuleName = "classicdT"; - return new ClassicSRKT(); - } else if (i == 9) { - mixingRuleName = "classic-CPA_T"; - return new ClassicSRKT2(); - } else if (i == 10) { - org.ejml.simple.SimpleMatrix mat1 = new org.ejml.simple.SimpleMatrix(intparamij); - org.ejml.simple.SimpleMatrix mat2 = new org.ejml.simple.SimpleMatrix(intparamji); - org.ejml.simple.SimpleMatrix mat3 = new org.ejml.simple.SimpleMatrix(intparamT); - if (mat1.isIdentical(mat2, 1e-8)) { - if (mat3.elementMaxAbs() < 1e-8) { - mixingRuleName = "classic-CPA"; - return new ClassicSRK(); - } - mixingRuleName = "classic-CPA_T"; - return new ClassicSRKT2(); - } else { - mixingRuleName = "classic-CPA_Tx"; - return new ClassicSRKT2x(); - } - } // else if(i==10){ - // return new ElectrolyteMixRule(phase, HValpha, HVgij, HVgii, classicOrHV, - // wij);} - else { - return new ClassicVdW(); - } + @Override + public double calcAT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double A = 0; + // ComponentEosInterface[] compArray = (ComponentEosInterface[]) + // phase.getcomponentArray(); + + A = Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * temperature * dadt + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * alpha_mix + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * calcBT(phase, temperature, pressure, numbcomp) * R * temperature * alpha_mix; + + return A; } - /** - *

- * resetMixingRule. - *

- * - * @param i a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a {@link neqsim.thermo.mixingRule.EosMixingRulesInterface} object - */ - public EosMixingRulesInterface resetMixingRule(int i, PhaseInterface phase) { - if (i == 1) { - mixingRuleName = "no (kij=0)"; - return new ClassicVdW(); - } else if (i == 2) { - mixingRuleName = "classic"; - return new ClassicSRK(); - } else if (i == 3) { - // Classic Huron-Vidal - mixingRuleName = "Huron-Vidal"; - return new SRKHuronVidal2(phase, HValpha, HVDij, classicOrHV); - } else if (i == 4) { - mixingRuleName = "Huron-Vidal"; - return new SRKHuronVidal2(phase, HValpha, HVDij, HVDijT, classicOrHV); - } else if (i == 5) { - mixingRuleName = "Wong-Sandler"; - return new WongSandlerMixingRule(phase, NRTLalpha, NRTLDij, NRTLDijT, classicOrWS); - } else if (i == 6) { - mixingRuleName = "Wong-Sandler"; - return new WongSandlerMixingRule(phase, NRTLalpha, NRTLDij, NRTLDijT, classicOrWS); - } else if (i == 7) { - mixingRuleName = "classic-CPA"; - return new ClassicSRK(); - } else if (i == 8) { - mixingRuleName = "classic-T"; - return new ClassicSRKT(); - } else if (i == 9) { - mixingRuleName = "classic-CPA_T"; - return new ClassicSRKT2(); - } else if (i == 10) { - org.ejml.simple.SimpleMatrix mat1 = new org.ejml.simple.SimpleMatrix(intparamij); - org.ejml.simple.SimpleMatrix mat2 = new org.ejml.simple.SimpleMatrix(intparamji); - org.ejml.simple.SimpleMatrix mat3 = new org.ejml.simple.SimpleMatrix(intparamT); - if (mat1.isIdentical(mat2, 1e-8)) { - if (mat3.elementMaxAbs() < 1e-8) { - mixingRuleName = "classic-CPA"; - return new ClassicSRK(); - } - mixingRuleName = "classic-CPA_T"; - return new ClassicSRKT2(); - } else { - mixingRuleName = "classic-CPA_Tx"; - return new ClassicSRKT2x(); - } - } // else if(i==10){ - // return new ElectrolyteMixRule(phase, HValpha, HVgij, HVgii, classicOrHV, - // wij);} - else { - return new ClassicVdW(); - } + @Override + public double calcATT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double A = 0; + + A = Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * temperature * d2adt2 + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * dadt + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) * getB() * R * dadt + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * calcBTT(phase, temperature, pressure, numbcomp) * R * temperature * alpha_mix + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * calcBT(phase, temperature, pressure, numbcomp) * R * alpha_mix + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * calcBT(phase, temperature, pressure, numbcomp) * R * temperature * dadt; + + return A; } - /** - *

- * getElectrolyteMixingRule. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a {@link neqsim.thermo.mixingRule.ElectrolyteMixingRulesInterface} object - */ - public ElectrolyteMixingRulesInterface getElectrolyteMixingRule(PhaseInterface phase) { - return new ElectrolyteMixRule(phase); + @Override + public double calcAiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double A = getB() * R * compArray[compNumb].getAder() + + getB() * R * temperature * compArray[compNumb].getdAdTdn() + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R * temperature * dadt + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R * alpha_mix + + calcBT(phase, temperature, pressure, numbcomp) * R * temperature + * compArray[compNumb].getAder() + + Math.pow(phase.getNumberOfMolesInPhase(), 1.0) + * calcBiT(compNumb, phase, temperature, pressure, numbcomp) * R * temperature + * alpha_mix; + + return A; } - /** - * Getter for property CalcEOSInteractionParameters. - * - * @return Value of property CalcEOSInteractionParameters. - */ - public boolean isCalcEOSInteractionParameters() { - return calcEOSInteractionParameters; + @Override + public double calcAij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + double A = 0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + A = Math.pow(phase.getNumberOfMolesInPhase(), 0.0) + * calcBi(compNumbj, phase, temperature, pressure, numbcomp) * R * temperature + * compArray[compNumb].getAder() + + Math.pow(phase.getNumberOfMolesInPhase(), 0.0) + * calcB(phase, temperature, pressure, numbcomp) * R * temperature + * compArray[compNumb].getdAdndn(compNumbj) + + Math.pow(phase.getNumberOfMolesInPhase(), 0.0) + * calcBi(compNumb, phase, temperature, pressure, numbcomp) * R * temperature + * compArray[compNumbj].getAder() + + Math.pow(phase.getNumberOfMolesInPhase(), 0.0) + * calcBij(compNumb, compNumbj, phase, temperature, pressure, numbcomp) * R + * temperature * alpha_mix; + + return A; } - /** - *

- * Setter for the field calcEOSInteractionParameters. - *

- * - * @param CalcEOSInteractionParameters2 a boolean - */ - public void setCalcEOSInteractionParameters(boolean CalcEOSInteractionParameters2) { - calcEOSInteractionParameters = CalcEOSInteractionParameters2; + @Override + public double calcB(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + double B = b_mix * phase.getNumberOfMolesInPhase(); + Btot = B; + return B; } - /** - * Getter for property mixingRuleName. - * - * @return Value of property mixingRuleName. - */ - public java.lang.String getMixingRuleName() { - return mixingRuleName; + @Override + public double calcBi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + return compArray[compNumb].getBder(); } - /** - * Setter for property mixingRuleName. - * - * @param mixingRuleName New value of property mixingRuleName. - */ - public void setMixingRuleName(java.lang.String mixingRuleName) { - this.mixingRuleName = mixingRuleName; + public double calcBT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return dbdt * phase.getNumberOfMolesInPhase(); } - /** - *

- * Setter for the field mixingRuleGEModel. - *

- * - * @param GEmodel a {@link java.lang.String} object - */ - public void setMixingRuleGEModel(java.lang.String GEmodel) { - this.mixingRuleGEModel = GEmodel; + public double calcBTT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return d2bdt2 * phase.getNumberOfMolesInPhase(); } - /** - *

- * getSRKbinaryInteractionParameters. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getSRKbinaryInteractionParameters() { - return intparam; + public double calcBiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double bit = compArray[compNumb].getdBdndT(); + return bit; } - /** - * Getter for property HVDij. - * - * @return Value of property HVDij. - */ - public double[][] getHVDij() { - return this.HVDij; + @Override + public double calcBij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + return compArray[compNumb].getdBdndn(compNumbj); } + } - /** - * Getter for property HValpha. - * - * @return Value of property HValpha. - */ - public double[][] getHValpha() { - return this.HValpha; + public class ElectrolyteMixRule implements ElectrolyteMixingRulesInterface, Cloneable { + private static final long serialVersionUID = 1000; + + public ElectrolyteMixRule(PhaseInterface phase) { + calcWij(phase); } - /** - * Getter for property HVDijT. - * - * @return Value of property HVDijT. - */ - public double[][] getHVDijT() { - return this.HVDijT; + @Override + public void calcWij(PhaseInterface phase) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + int numbcomp = phase.getNumberOfComponents(); + + // System.out.println("numb comp " + numbcomp); + for (int i = 0; i < numbcomp; i++) { + if (compArray[i].getIonicCharge() > 0) { + for (int j = 0; j < numbcomp; j++) { + if (wijCalcOrFitted[i][j] == 0) { + if (compArray[j].getComponentName().equals("water") + || compArray[j].getComponentName().equals("MDEA") + || compArray[j].getComponentName().equals("Piperazine")) { // compArray[j].getIonicCharge()==0){ + wij[0][i][j] = + neqsim.thermo.util.constants.FurstElectrolyteConstants.getFurstParam(2) + * compArray[i].getStokesCationicDiameter() + + neqsim.thermo.util.constants.FurstElectrolyteConstants.getFurstParam(3); + } + // if(compArray[j].getComponentName().equals("MDEA")){ + // wij[0][i][j] = + // (thermo.util.constants.FurstElectrolyteConstants.getFurstParamMDEA(2) + // * + // compArray[i].getStokesCationicDiameter() + + // thermo.util.constants.FurstElectrolyteConstants.getFurstParamMDEA(3)); + // } + if (compArray[j].getIonicCharge() < -0.01) { + wij[0][i][j] = + neqsim.thermo.util.constants.FurstElectrolyteConstants.getFurstParam(4) + * Math.pow(compArray[i].getStokesCationicDiameter() + + compArray[j].getPaulingAnionicDiameter(), 4.0) + + neqsim.thermo.util.constants.FurstElectrolyteConstants.getFurstParam(5); + } + wij[0][j][i] = wij[0][i][j]; + } + } + } + } } - /** - * Getter for property NRTLDij. - * - * @return Value of property NRTLDij. - */ - public double[][] getNRTLDij() { - return this.NRTLDij; + @Override + public void setWijParameter(int i, int j, double value) { + // System.out.println("intparam: " + value); + wij[0][i][j] = value; + wij[0][j][i] = value; } - /** - * Getter for property NRTLalpha. - * - * @return Value of property NRTLalpha. - */ - public double[][] getNRTLalpha() { - return this.NRTLalpha; + @Override + public double getWijParameter(int i, int j) { + return wij[0][i][j]; } - /** - * Getter for property NRTLDijT. - * - * @return Value of property NRTLDijT. - */ - public double[][] getNRTLDijT() { - return this.NRTLDijT; + @Override + public void setWijT1Parameter(int i, int j, double value) { + wij[1][i][j] = value; + wij[1][j][i] = value; } - /** - * Getter for property WSintparam. - * - * @return Value of property WSintparam. - */ - public double[][] getWSintparam() { - return this.WSintparam; + @Override + public double gettWijT1Parameter(int i, int j) { + return wij[1][i][j]; } - /** - * Getter for property classicOrHV. - * - * @return Value of property classicOrHV. - */ - public java.lang.String[][] getClassicOrHV() { - return this.classicOrHV; + @Override + public void setWijT2Parameter(int i, int j, double value) { + wij[2][i][j] = value; + wij[2][j][i] = value; } - /** - * Getter for property classicOrWS. - * - * @return Value of property classicOrWS. - */ - public java.lang.String[][] getClassicOrWS() { - return this.classicOrWS; + @Override + public double gettWijT2Parameter(int i, int j) { + return wij[2][i][j]; } - /** - *

- * displayInteractionCoefficients. - *

- * - * @param intType a {@link java.lang.String} object - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void displayInteractionCoefficients(String intType, PhaseInterface phase) { - String[][] interactTable = - new String[phase.getNumberOfComponents() + 1][phase.getNumberOfComponents() + 1]; - - java.text.DecimalFormat nf = new java.text.DecimalFormat(); - - java.text.DecimalFormatSymbols symbols = new java.text.DecimalFormatSymbols(); - symbols.setDecimalSeparator('.'); - nf.setDecimalFormatSymbols(symbols); - - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.#####E0"); - - /// String[][] table = new String[getPhases()[0].getNumberOfComponents() + - /// 30][7]; - String[] names = new String[phase.getNumberOfComponents() + 1]; - names[0] = ""; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - interactTable[i + 1][0] = phase.getComponent(i).getComponentName(); - interactTable[0][i + 1] = phase.getComponent(i).getComponentName(); - names[i + 1] = ""; - for (int j = 0; j < phase.getNumberOfComponents(); j++) { - interactTable[i + 1][j + 1] = Double.toString(intparam[i][j]); - } + @Override + public double getWij(int i, int j, double temperature) { + return wij[0][i][j] + wij[1][i][j] * (1.0 / temperature - 1.0 / 298.15) + + wij[2][i][j] * ((298.15 - temperature) / temperature + Math.log(temperature / 298.15)); + } + + @Override + public double getWijT(int i, int j, double temperature) { + return (-wij[1][i][j] / (temperature * temperature) + - wij[2][i][j] * (298.15 - temperature) / (temperature * temperature)); + } + + @Override + public double getWijTT(int i, int j, double temperature) { + return (2.0 * wij[1][i][j] / (temperature * temperature * temperature) + + wij[2][i][j] / (temperature * temperature) + 2.0 * wij[2][i][j] * (298.15 - temperature) + / (temperature * temperature * temperature)); + } + + @Override + public double calcW(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double W = 0.0; + for (int i = 0; i < numbcomp; i++) { + for (int j = 0; j < numbcomp; j++) { + W += compArray[i].getNumberOfMolesInPhase() * compArray[j].getNumberOfMolesInPhase() + * getWij(i, j, temperature); // wij[0][i][j]; + } + } + return -W; + } + + @Override + public double calcWi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + double Wi = 0.0; + for (int j = 0; j < numbcomp; j++) { + Wi += compArray[j].getNumberOfMolesInPhase() * getWij(compNumb, j, temperature); + } + return -2.0 * Wi; + } + + @Override + public double calcWiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + double WiT = 0; + for (int j = 0; j < numbcomp; j++) { + WiT += compArray[j].getNumberOfMolesInPhase() * getWijT(compNumb, j, temperature); + } + return -2.0 * WiT; + } + + @Override + public double calcWT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + double WT = 0; + for (int i = 0; i < numbcomp; i++) { + for (int j = 0; j < numbcomp; j++) { + WT += compArray[i].getNumberOfMolesInPhase() * compArray[j].getNumberOfMolesInPhase() + * getWijT(i, j, temperature); // wij[0][i][j]; } + } + return -WT; + } - JFrame dialog = new JFrame("Interaction coefficients"); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new BorderLayout()); + @Override + public double calcWTT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + + double WTT = 0; + for (int i = 0; i < numbcomp; i++) { + for (int j = 0; j < numbcomp; j++) { + WTT += compArray[i].getNumberOfMolesInPhase() * compArray[j].getNumberOfMolesInPhase() + * getWijTT(i, j, temperature); // wij[0][i][j]; + } + } + return -WTT; + } - JTable Jtab = new JTable(interactTable, names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); - dialog.setSize(800, 600); // pack(); - // \\dialog.pack(); - dialog.setVisible(true); + @Override + public double calcWij(int compNumbi, int compNumj, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + return -2.0 * getWij(compNumbi, compNumj, temperature); // iwij[0][compNumbi][compNumj]; + } + } + + /** + *

+ * getMixingRule. + *

+ * + * @param i a int + * @return a {@link neqsim.thermo.mixingRule.EosMixingRulesInterface} object + */ + public EosMixingRulesInterface getMixingRule(int i) { + if (i == 1) { + return new ClassicVdW(); + } else if (i == 2) { + return new ClassicSRK(); + } else if (i == 3) { + return new ClassicVdW(); + } else { + return new ClassicVdW(); } + } + + /** + *

+ * getMixingRule. + *

+ * + * @param i a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a {@link neqsim.thermo.mixingRule.EosMixingRulesInterface} object + */ + public EosMixingRulesInterface getMixingRule(int i, PhaseInterface phase) { + this.wij = new double[3][phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + + if (i == 1) { + intparam = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + return new ClassicVdW(); + } + intparam = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + intparamji = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + intparamij = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + intparamT = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + intparamTType = new int[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + HVDij = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + HVDijT = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + NRTLDij = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + NRTLDijT = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + WSintparam = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + HValpha = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + NRTLalpha = new double[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + classicOrHV = new String[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + classicOrWS = new String[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + wijCalcOrFitted = new int[phase.getNumberOfComponents()][phase.getNumberOfComponents()]; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + for (int k = 0; k < phase.getNumberOfComponents(); k++) { + String component_name = phase.getComponents()[k].getComponentName(); + + for (int l = k; l < phase.getNumberOfComponents(); l++) { + if (k == l) { + classicOrHV[k][l] = "Classic"; + classicOrWS[k][l] = "Classic"; + classicOrHV[l][k] = classicOrHV[k][l]; + classicOrWS[l][k] = classicOrWS[k][l]; + } else { + java.sql.ResultSet dataSet = null; + try { + if (phase.getComponent(k).isIsTBPfraction() + || phase.getComponent(l).isIsTBPfraction()) { + throw new Exception("no interaction coefficient for TBP fractions"); + } + int templ = l; + int tempk = k; + if (NeqSimDataBase.createTemporaryTables()) { + dataSet = database.getResultSet("SELECT * FROM intertemp WHERE (comp1='" + + component_name + "' AND comp2='" + phase.getComponents()[l].getComponentName() + + "') OR (comp1='" + phase.getComponents()[l].getComponentName() + + "' AND comp2='" + component_name + "')"); + } else { + dataSet = database.getResultSet("SELECT * FROM inter WHERE (comp1='" + + component_name + "' AND comp2='" + phase.getComponents()[l].getComponentName() + + "') OR (comp1='" + phase.getComponents()[l].getComponentName() + + "' AND comp2='" + component_name + "')"); + } + dataSet.next(); + if (dataSet.getString("comp1").trim() + .equals(phase.getComponents()[l].getComponentName())) { + templ = k; + tempk = l; + } + + classicOrHV[k][l] = dataSet.getString("HVTYPE").trim(); + classicOrHV[l][k] = classicOrHV[k][l]; + + if (isCalcEOSInteractionParameters()) { + intparam[k][l] = + 1.0 - Math.pow( + (2.0 * Math.sqrt(Math.pow(phase.getComponent(l).getCriticalVolume(), 1 / 3) + * Math.pow(phase.getComponent(k).getCriticalVolume(), 1 / 3)) + / (Math.pow(phase.getComponent(l).getCriticalVolume(), 1 / 3) + + Math.pow(phase.getComponent(k).getCriticalVolume(), 1 / 3))), + nEOSkij); + intparamT[k][l] = 0.0; + // System.out.println("kij " + intparam[k][l]); + } else { + if (phase.getClass().getName().equals("neqsim.thermo.phase.PhasePrEos")) { + // System.out.println("using PR intparams"); + intparam[k][l] = Double.parseDouble(dataSet.getString("kijpr")); + intparamT[k][l] = Double.parseDouble(dataSet.getString("KIJTpr")); + } else { + intparam[k][l] = Double.parseDouble(dataSet.getString("kijsrk")); + intparamT[k][l] = Double.parseDouble(dataSet.getString("KIJTSRK")); + } + if (phase.getClass().getName().equals("neqsim.thermo.phase.PhasePrCPA")) { + intparam[k][l] = Double.parseDouble(dataSet.getString("cpakij_PR")); + intparamT[k][l] = 0.0; + } else if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") + || phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPAs") + || phase.getClass().getName() + .equals("neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { + intparam[k][l] = Double.parseDouble(dataSet.getString("cpakij_SRK")); + intparamT[k][l] = Double.parseDouble(dataSet.getString("cpakijT_SRK")); + + intparamij[tempk][templ] = Double.parseDouble(dataSet.getString("cpakijx_SRK")); + intparamji[templ][tempk] = intparamij[tempk][templ]; + + intparamji[tempk][templ] = Double.parseDouble(dataSet.getString("cpakjix_SRK")); + intparamij[templ][tempk] = intparamji[tempk][templ]; + } + if (phase.getClass().getName().equals("neqsim.thermo.phase.PhasePCSAFTRahmat") + || phase.getClass().getName().equals("neqsim.thermo.phase.PhasePCSAFT") + || phase.getClass().getName().equals("neqsim.thermo.phase.PhasePCSAFTa")) { + intparam[k][l] = Double.parseDouble(dataSet.getString("KIJPCSAFT")); + intparamT[k][l] = 0.0; + } + } + + java.sql.ResultSetMetaData dataSetMD = dataSet.getMetaData(); + int cols = dataSetMD.getColumnCount(); + boolean hasKIJTTypeCPAcol = false; + String colname = "KIJTTypeCPA"; + for (int x = 1; x <= cols; x++) { + if (colname.equals(dataSetMD.getColumnName(x))) { + hasKIJTTypeCPAcol = true; + } + } + + // System.out.println("class name " + phase.getClass().getName()); + if (!phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPAs") + || !hasKIJTTypeCPAcol) { + intparamTType[k][l] = Integer.parseInt(dataSet.getString("KIJTType")); + } else { + intparamTType[k][l] = Integer.parseInt(dataSet.getString("KIJTTypeCPA")); + // TODO: implement in all dbs + } + intparamTType[l][k] = intparamTType[k][l]; + + HValpha[k][l] = Double.parseDouble(dataSet.getString("HValpha")); + HValpha[l][k] = HValpha[k][l]; + + HVDij[tempk][templ] = Double.parseDouble(dataSet.getString("HVgij")); + HVDij[templ][tempk] = Double.parseDouble(dataSet.getString("HVgji")); + + wijCalcOrFitted[k][l] = Integer.parseInt(dataSet.getString("CalcWij")); + wijCalcOrFitted[l][k] = wijCalcOrFitted[k][l]; + + wij[0][k][l] = Double.parseDouble(dataSet.getString("w1")); + wij[0][l][k] = wij[0][k][l]; + wij[1][k][l] = Double.parseDouble(dataSet.getString("w2")); + wij[1][l][k] = wij[1][k][l]; + wij[2][k][l] = Double.parseDouble(dataSet.getString("w3")); + wij[2][l][k] = wij[2][k][l]; + + classicOrWS[k][l] = dataSet.getString("WSTYPE").trim(); + classicOrWS[l][k] = classicOrWS[k][l]; + + WSintparam[k][l] = Double.parseDouble(dataSet.getString("kijWS")); + WSintparam[k][l] = Double.parseDouble(dataSet.getString("KIJWSunifac")); + WSintparam[l][k] = WSintparam[k][l]; + + NRTLalpha[k][l] = Double.parseDouble(dataSet.getString("NRTLalpha")); + NRTLalpha[l][k] = NRTLalpha[k][l]; + + NRTLDij[tempk][templ] = Double.parseDouble(dataSet.getString("NRTLgij")); + NRTLDij[templ][tempk] = Double.parseDouble(dataSet.getString("NRTLgji")); + + HVDijT[tempk][templ] = Double.parseDouble(dataSet.getString("HVgijT")); + HVDijT[templ][tempk] = Double.parseDouble(dataSet.getString("HVgjiT")); + + NRTLDijT[tempk][templ] = Double.parseDouble(dataSet.getString("WSgijT")); + NRTLDijT[templ][tempk] = Double.parseDouble(dataSet.getString("WSgjiT")); + } catch (Exception ex) { + // System.out.println("err in thermo mix....."); + // System.out.println(ex.toString()); + if (isCalcEOSInteractionParameters()) { + intparam[k][l] = 1.0 - Math.pow( + (2.0 * Math.sqrt(Math.pow(phase.getComponent(l).getCriticalVolume(), 1.0 / 3.0) + * Math.pow(phase.getComponent(k).getCriticalVolume(), 1.0 / 3.0)) + / (Math.pow(phase.getComponent(l).getCriticalVolume(), 1.0 / 3.0) + + Math.pow(phase.getComponent(k).getCriticalVolume(), 1.0 / 3.0))), + nEOSkij); + // System.out.println("intparam not defined .... CALCULATING intparam + // between " + // +phase.getComponents()[l].getComponentName() + " and " + + // phase.getComponents()[k].getComponentName()+ " to " + + // intparam[k][l]); + } else if ((phase.getComponents()[k].getComponentName().equals("CO2") + && phase.getComponents()[l].isIsTBPfraction()) + || (phase.getComponents()[l].getComponentName().equals("CO2") + && phase.getComponents()[k].isIsTBPfraction())) { + intparam[k][l] = 0.1; + } else if ((phase.getComponents()[k].getComponentName().equals("nitrogen") + && phase.getComponents()[l].isIsTBPfraction()) + || (phase.getComponents()[l].getComponentName().equals("nitrogen") + && phase.getComponents()[k].isIsTBPfraction())) { + intparam[k][l] = 0.08; + } else if ((phase.getComponents()[k].getComponentName().equals("water") + && phase.getComponents()[l].isIsTBPfraction()) + || (phase.getComponents()[l].getComponentName().equals("water") + && phase.getComponents()[k].isIsTBPfraction())) { + intparam[k][l] = 0.2; + + if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") + || phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPAs") + || phase.getClass().getName() + .equals("neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { + // intparam[k][l] = -0.0685; // taken from Riaz et a. 2012 + + double molmassPC = phase.getComponents()[l].getMolarMass(); + if (phase.getComponents()[k].isIsTBPfraction()) { + molmassPC = phase.getComponents()[k].getMolarMass(); + } + double intparamkPC = -0.1533 * Math.log(1000.0 * molmassPC) + 0.7055; + intparam[k][l] = intparamkPC; + // System.out.println("kij water-HC " + intparam[k][l]); + + intparamT[k][l] = 0.0; + } + } else if ((phase.getComponents()[k].getComponentName().equals("MEG") + && phase.getComponents()[l].isIsTBPfraction()) + || (phase.getComponents()[l].getComponentName().equals("MEG") + && phase.getComponents()[k].isIsTBPfraction())) { + intparam[k][l] = 0.2; + if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") + || phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPAs") + || phase.getClass().getName() + .equals("neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { + double molmassPC = phase.getComponents()[l].getMolarMass(); + if (phase.getComponents()[k].isIsTBPfraction()) { + molmassPC = phase.getComponents()[k].getMolarMass(); + } + double intparamkPC = -0.0701 * Math.log(1000.0 * molmassPC) + 0.3521; + intparam[k][l] = intparamkPC; + // System.out.println("kij MEG-HC " + intparam[k][l]); + // intparam[k][l] = 0.01; + intparamT[k][l] = 0.0; + } + } else if ((phase.getComponents()[k].getComponentName().equals("ethanol") + && phase.getComponents()[l].isIsTBPfraction()) + || (phase.getComponents()[l].getComponentName().equals("ethanol") + && phase.getComponents()[k].isIsTBPfraction())) { + intparam[k][l] = 0.0; + if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") + || phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPAs") + || phase.getClass().getName() + .equals("neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { + intparam[k][l] = -0.05; + intparamT[k][l] = 0.0; + if (phase.getComponents()[k].getMolarMass() > (200.0 / 1000.0) + || phase.getComponents()[l].getMolarMass() > (200.0 / 1000.0)) { + intparam[k][l] = -0.1; + } + } + } else if ((phase.getComponents()[k].getComponentName().equals("methanol") + && phase.getComponents()[l].isIsTBPfraction()) + || (phase.getComponents()[l].getComponentName().equals("methanol") + && phase.getComponents()[k].isIsTBPfraction())) { + intparam[k][l] = 0.0; + if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") + || phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPAs") + || phase.getClass().getName() + .equals("neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { + intparam[k][l] = -0.1; + intparamT[k][l] = 0.0; + if (phase.getComponents()[k].getMolarMass() > (200.0 / 1000.0) + || phase.getComponents()[l].getMolarMass() > (200.0 / 1000.0)) { + intparam[k][l] = -0.2; + } + } + } else if ((phase.getComponents()[k].getComponentName().equals("TEG") + && phase.getComponents()[l].isIsTBPfraction()) + || (phase.getComponents()[l].getComponentName().equals("TEG") + && phase.getComponents()[k].isIsTBPfraction())) { + intparam[k][l] = 0.12; + if (phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPA") + || phase.getClass().getName().equals("neqsim.thermo.phase.PhaseSrkCPAs") + || phase.getClass().getName() + .equals("neqsim.thermo.phase.PhaseElectrolyteCPAstatoil")) { + intparam[k][l] = 0.12; + intparamT[k][l] = 0.0; + } + } else if ((phase.getComponents()[k].getComponentName().equals("S8") + && phase.getComponents()[l].isIsTBPfraction()) + || (phase.getComponents()[l].getComponentName().equals("S8") + && phase.getComponents()[k].isIsTBPfraction())) { + intparam[k][l] = 0.05; + } else { + // if((phase.getComponents()[l].getComponentName().equals("CO2") || + // phase.getComponents()[k].getComponentName().equals("CO2")) && k!=l) + // intparam[k][l] = 0.1; + // else if((phase.getComponents()[l].getComponentName().equals("H2S") || + // phase.getComponents()[k].getComponentName().equals("H2S")) && k!=l) + // intparam[k][l] = 0.2; + // else if((phase.getComponents()[l].getComponentName().equals("water") + // || + // phase.getComponents()[k].getComponentName().equals("water")) && k!=l) + // intparam[k][l] = 0.5; + // else intparam[k][l] = 0.0; + // System.out.println("intparam not defined .... setting intparam + // between " + + // phase.getComponents()[l].getComponentName() + " and " + + // phase.getComponents()[k].getComponentName() + " to " + + // intparam[k][l]); + } + + // intparam[l][k] = intparam[k][l]; + // intparamT[l][k] = intparamT[k][l]; + intparamij[k][l] = intparam[k][l]; + intparamij[l][k] = intparam[k][l]; + intparamji[k][l] = intparam[k][l]; + intparamji[l][k] = intparam[k][l]; + // System.out.println("kij set to " + intparam[l][k] + " " + + // phase.getComponents()[l].getComponentName() + " " + + // phase.getComponents()[k].getComponentName()); + + classicOrHV[k][l] = "Classic"; + classicOrHV[l][k] = classicOrHV[k][l]; + + classicOrWS[k][l] = "Classic"; + classicOrWS[l][k] = classicOrWS[k][l]; + } finally { + intparam[l][k] = intparam[k][l]; + intparamT[l][k] = intparamT[k][l]; + try { + if (dataSet != null) { + dataSet.close(); + } + } catch (Exception ex) { + logger.error("err closing dataSet IN MIX...", ex); + } + } + } + } + } + } catch (Exception ex) { + logger.error("error reading from database", ex); + } + + if (i == 2) { + mixingRuleName = "classic"; + return new ClassicSRK(); + } else if (i == 3) { + // Classic Huron-Vidal + mixingRuleName = "Huron-Vidal"; + return new SRKHuronVidal2(phase, HValpha, HVDij, classicOrHV); + } else if (i == 4) { + mixingRuleName = "Huron-Vidal"; + return new SRKHuronVidal2(phase, HValpha, HVDij, HVDijT, classicOrHV); + } else if (i == 5) { + mixingRuleName = "Wong-Sandler"; + return new WongSandlerMixingRule(phase, NRTLalpha, NRTLDij, NRTLDijT, classicOrWS); + } else if (i == 6) { + mixingRuleName = "Wong-Sandler"; + return new WongSandlerMixingRule(phase, NRTLalpha, NRTLDij, NRTLDijT, classicOrWS); + } else if (i == 7) { + mixingRuleName = "classic-CPA"; + return new ClassicSRK(); + } else if (i == 8) { + mixingRuleName = "classicdT"; + return new ClassicSRKT(); + } else if (i == 9) { + mixingRuleName = "classic-CPA_T"; + return new ClassicSRKT2(); + } else if (i == 10) { + // return new ElectrolyteMixRule(phase, HValpha, HVgij, HVgii, classicOrHV,wij);} + org.ejml.simple.SimpleMatrix mat1 = new org.ejml.simple.SimpleMatrix(intparamij); + org.ejml.simple.SimpleMatrix mat2 = new org.ejml.simple.SimpleMatrix(intparamji); + org.ejml.simple.SimpleMatrix mat3 = new org.ejml.simple.SimpleMatrix(intparamT); + if (mat1.isIdentical(mat2, 1e-8)) { + if (mat3.elementMaxAbs() < 1e-8) { + mixingRuleName = "classic-CPA"; + return new ClassicSRK(); + } + mixingRuleName = "classic-CPA_T"; + return new ClassicSRKT2(); + } else { + mixingRuleName = "classic-CPA_Tx"; + return new ClassicSRKT2x(); + } + } else { + return new ClassicVdW(); + } + } + + /** + *

+ * resetMixingRule. + *

+ * + * @param i a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a {@link neqsim.thermo.mixingRule.EosMixingRulesInterface} object + */ + public EosMixingRulesInterface resetMixingRule(int i, PhaseInterface phase) { + if (i == 1) { + mixingRuleName = "no (kij=0)"; + return new ClassicVdW(); + } else if (i == 2) { + mixingRuleName = "classic"; + return new ClassicSRK(); + } else if (i == 3) { + // Classic Huron-Vidal + mixingRuleName = "Huron-Vidal"; + return new SRKHuronVidal2(phase, HValpha, HVDij, classicOrHV); + } else if (i == 4) { + mixingRuleName = "Huron-Vidal"; + return new SRKHuronVidal2(phase, HValpha, HVDij, HVDijT, classicOrHV); + } else if (i == 5) { + mixingRuleName = "Wong-Sandler"; + return new WongSandlerMixingRule(phase, NRTLalpha, NRTLDij, NRTLDijT, classicOrWS); + } else if (i == 6) { + mixingRuleName = "Wong-Sandler"; + return new WongSandlerMixingRule(phase, NRTLalpha, NRTLDij, NRTLDijT, classicOrWS); + } else if (i == 7) { + mixingRuleName = "classic-CPA"; + return new ClassicSRK(); + } else if (i == 8) { + mixingRuleName = "classic-T"; + return new ClassicSRKT(); + } else if (i == 9) { + mixingRuleName = "classic-CPA_T"; + return new ClassicSRKT2(); + } else if (i == 10) { + // return new ElectrolyteMixRule(phase, HValpha, HVgij, HVgii, classicOrHV,wij);} + org.ejml.simple.SimpleMatrix mat1 = new org.ejml.simple.SimpleMatrix(intparamij); + org.ejml.simple.SimpleMatrix mat2 = new org.ejml.simple.SimpleMatrix(intparamji); + org.ejml.simple.SimpleMatrix mat3 = new org.ejml.simple.SimpleMatrix(intparamT); + if (mat1.isIdentical(mat2, 1e-8)) { + if (mat3.elementMaxAbs() < 1e-8) { + mixingRuleName = "classic-CPA"; + return new ClassicSRK(); + } + mixingRuleName = "classic-CPA_T"; + return new ClassicSRKT2(); + } else { + mixingRuleName = "classic-CPA_Tx"; + return new ClassicSRKT2x(); + } + } else { + return new ClassicVdW(); + } + } + + /** + *

+ * getElectrolyteMixingRule. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a {@link neqsim.thermo.mixingRule.ElectrolyteMixingRulesInterface} object + */ + public ElectrolyteMixingRulesInterface getElectrolyteMixingRule(PhaseInterface phase) { + return new ElectrolyteMixRule(phase); + } + + /** + * Getter for property CalcEOSInteractionParameters. + * + * @return Value of property CalcEOSInteractionParameters. + */ + public boolean isCalcEOSInteractionParameters() { + return calcEOSInteractionParameters; + } + + /** + *

+ * Setter for the field calcEOSInteractionParameters. + *

+ * + * @param CalcEOSInteractionParameters2 a boolean + */ + public void setCalcEOSInteractionParameters(boolean CalcEOSInteractionParameters2) { + calcEOSInteractionParameters = CalcEOSInteractionParameters2; + } + + /** + * Getter for property mixingRuleName. + * + * @return Value of property mixingRuleName. + */ + public java.lang.String getMixingRuleName() { + return mixingRuleName; + } + + /** + * Setter for property mixingRuleName. + * + * @param mixingRuleName New value of property mixingRuleName. + */ + public void setMixingRuleName(java.lang.String mixingRuleName) { + this.mixingRuleName = mixingRuleName; + } + + /** + *

+ * Setter for the field mixingRuleGEModel. + *

+ * + * @param GEmodel a {@link java.lang.String} object + */ + public void setMixingRuleGEModel(java.lang.String GEmodel) { + this.mixingRuleGEModel = GEmodel; + } + + /** + *

+ * getSRKbinaryInteractionParameters. + *

+ * + * @return an array of type double + */ + public double[][] getSRKbinaryInteractionParameters() { + return intparam; + } + + /** + * Getter for property HVDij. + * + * @return Value of property HVDij. + */ + public double[][] getHVDij() { + return this.HVDij; + } + + /** + * Getter for property HValpha. + * + * @return Value of property HValpha. + */ + public double[][] getHValpha() { + return this.HValpha; + } + + /** + * Getter for property HVDijT. + * + * @return Value of property HVDijT. + */ + public double[][] getHVDijT() { + return this.HVDijT; + } + + /** + * Getter for property NRTLDij. + * + * @return Value of property NRTLDij. + */ + public double[][] getNRTLDij() { + return this.NRTLDij; + } + + /** + * Getter for property NRTLalpha. + * + * @return Value of property NRTLalpha. + */ + public double[][] getNRTLalpha() { + return this.NRTLalpha; + } + + /** + * Getter for property NRTLDijT. + * + * @return Value of property NRTLDijT. + */ + public double[][] getNRTLDijT() { + return this.NRTLDijT; + } + + /** + * Getter for property WSintparam. + * + * @return Value of property WSintparam. + */ + public double[][] getWSintparam() { + return this.WSintparam; + } + + /** + * Getter for property classicOrHV. + * + * @return Value of property classicOrHV. + */ + public java.lang.String[][] getClassicOrHV() { + return this.classicOrHV; + } + + /** + * Getter for property classicOrWS. + * + * @return Value of property classicOrWS. + */ + public java.lang.String[][] getClassicOrWS() { + return this.classicOrWS; + } + + /** + *

+ * displayInteractionCoefficients. + *

+ * + * @param intType a {@link java.lang.String} object + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void displayInteractionCoefficients(String intType, PhaseInterface phase) { + String[][] interactTable = + new String[phase.getNumberOfComponents() + 1][phase.getNumberOfComponents() + 1]; + + java.text.DecimalFormat nf = new java.text.DecimalFormat(); + + java.text.DecimalFormatSymbols symbols = new java.text.DecimalFormatSymbols(); + symbols.setDecimalSeparator('.'); + nf.setDecimalFormatSymbols(symbols); + + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.#####E0"); + + // String[][] table = new String[getPhases()[0].getNumberOfComponents() + + // 30][7]; + String[] names = new String[phase.getNumberOfComponents() + 1]; + names[0] = ""; + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + interactTable[i + 1][0] = phase.getComponent(i).getComponentName(); + interactTable[0][i + 1] = phase.getComponent(i).getComponentName(); + names[i + 1] = ""; + for (int j = 0; j < phase.getNumberOfComponents(); j++) { + interactTable[i + 1][j + 1] = Double.toString(intparam[i][j]); + } + } + + JFrame dialog = new JFrame("Interaction coefficients"); + Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new BorderLayout()); + + JTable Jtab = new JTable(interactTable, names); + JScrollPane scrollpane = new JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + dialog.setSize(800, 600); // pack(); + // \\dialog.pack(); + dialog.setVisible(true); + } } diff --git a/src/main/java/neqsim/thermo/mixingRule/EosMixingRulesInterface.java b/src/main/java/neqsim/thermo/mixingRule/EosMixingRulesInterface.java index af46827335..6332ab9778 100644 --- a/src/main/java/neqsim/thermo/mixingRule/EosMixingRulesInterface.java +++ b/src/main/java/neqsim/thermo/mixingRule/EosMixingRulesInterface.java @@ -3,6 +3,7 @@ * * Created on 4. juni 2000, 12:38 */ + package neqsim.thermo.mixingRule; import neqsim.thermo.phase.PhaseInterface; @@ -16,270 +17,278 @@ * @version $Id: $Id */ public interface EosMixingRulesInterface extends Cloneable { - /** - *

- * calcA. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - double calcA(PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcA. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + double calcA(PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcB. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - double calcB(PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcB. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + double calcB(PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcAi. - *

- * - * @param compnumb a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - double calcAi(int compnumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp); + /** + *

+ * calcAi. + *

+ * + * @param compnumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + double calcAi(int compnumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp); - /** - *

- * calcBi. - *

- * - * @param compnumb a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - double calcBi(int compnumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp); + /** + *

+ * calcBi. + *

+ * + * @param compnumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + double calcBi(int compnumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp); - /** - *

- * calcBij. - *

- * - * @param compnumb a int - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - double calcBij(int compnumb, int j, PhaseInterface phase, double temperature, double pressure, - int numbcomp); + /** + *

+ * calcBij. + *

+ * + * @param compnumb a int + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + double calcBij(int compnumb, int j, PhaseInterface phase, double temperature, double pressure, + int numbcomp); - /** - *

- * calcAij. - *

- * - * @param compnumb a int - * @param j a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - double calcAij(int compnumb, int j, PhaseInterface phase, double temperature, double pressure, - int numbcomp); + /** + *

+ * calcAij. + *

+ * + * @param compnumb a int + * @param j a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + double calcAij(int compnumb, int j, PhaseInterface phase, double temperature, double pressure, + int numbcomp); - /** - *

- * setBinaryInteractionParameterji. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setBinaryInteractionParameterji(int i, int j, double value); + /** + *

+ * setBinaryInteractionParameterji. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setBinaryInteractionParameterji(int i, int j, double value); - /** - *

- * calcAT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcAT(PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcAT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcAT(PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcATT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcATT(PhaseInterface phase, double temperature, double pressure, int numbcomp); + /** + *

+ * calcATT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcATT(PhaseInterface phase, double temperature, double pressure, int numbcomp); - /** - *

- * calcAiT. - *

- * - * @param compNumb a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcAiT(int compNumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp); + /** + *

+ * calcAiT. + *

+ * + * @param compNumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcAiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp); - /** - *

- * setBinaryInteractionParameter. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setBinaryInteractionParameter(int i, int j, double value); + /** + *

+ * setBinaryInteractionParameter. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setBinaryInteractionParameter(int i, int j, double value); - /** - *

- * getBinaryInteractionParameter. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getBinaryInteractionParameter(int i, int j); + /** + *

+ * getBinaryInteractionParameter. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getBinaryInteractionParameter(int i, int j); - /** - *

- * setBinaryInteractionParameterT1. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setBinaryInteractionParameterT1(int i, int j, double value); + /** + *

+ * setBinaryInteractionParameterT1. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setBinaryInteractionParameterT1(int i, int j, double value); - /** - *

- * getBinaryInteractionParameterT1. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getBinaryInteractionParameterT1(int i, int j); + /** + *

+ * getBinaryInteractionParameterT1. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getBinaryInteractionParameterT1(int i, int j); - /** - *

- * setCalcEOSInteractionParameters. - *

- * - * @param CalcEOSInteractionParameters a boolean - */ - public void setCalcEOSInteractionParameters(boolean CalcEOSInteractionParameters); + /** + *

+ * setCalcEOSInteractionParameters. + *

+ * + * @param CalcEOSInteractionParameters a boolean + */ + public void setCalcEOSInteractionParameters(boolean CalcEOSInteractionParameters); - /** - *

- * setnEOSkij. - *

- * - * @param n a double - */ - public void setnEOSkij(double n); + /** + *

+ * setnEOSkij. + *

+ * + * @param n a double + */ + public void setnEOSkij(double n); - /** - *

- * getMixingRuleName. - *

- * - * @return a {@link java.lang.String} object - */ - public java.lang.String getMixingRuleName(); + /** + *

+ * getMixingRuleName. + *

+ * + * @return a {@link java.lang.String} object + */ + public java.lang.String getMixingRuleName(); - /** - *

- * setMixingRuleGEModel. - *

- * - * @param GEmodel a {@link java.lang.String} object - */ - public void setMixingRuleGEModel(java.lang.String GEmodel); + /** + *

+ * setMixingRuleGEModel. + *

+ * + * @param GEmodel a {@link java.lang.String} object + */ + public void setMixingRuleGEModel(java.lang.String GEmodel); - /** - *

- * setBinaryInteractionParameterij. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setBinaryInteractionParameterij(int i, int j, double value); + /** + *

+ * setBinaryInteractionParameterij. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setBinaryInteractionParameterij(int i, int j, double value); - /** - *

- * getBmixType. - *

- * - * @return a int - */ - public int getBmixType(); + /** + *

+ * getBmixType. + *

+ * + * @return a int + */ + public int getBmixType(); - /** - *

- * setBmixType. - *

- * - * @param bmixType2 a int - */ - public void setBmixType(int bmixType2); + /** + *

+ * setBmixType. + *

+ * + * @param bmixType2 a int + */ + public void setBmixType(int bmixType2); - /** - *

- * getGEPhase. - *

- * - * @return a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public PhaseInterface getGEPhase(); + /** + *

+ * getGEPhase. + *

+ * + * @return a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public PhaseInterface getGEPhase(); - // double calcA2(PhaseInterface phase, double temperature, double pressure, int - // numbcomp); - // double calcB2(PhaseInterface phase, double temperature, double pressure, int - // numbcomp); - // public double calcA(ComponentInterface[] te, double temperature, double - // pressure, int numberOfComponents); - // public double calcB(ComponentInterface[] te, double temperature, double - // pressure, int numberOfComponents); + /** + *

+ * getBinaryInteractionParameters. + *

+ * + * @return an array of type double + */ + public double[][] getBinaryInteractionParameters(); + // double calcA2(PhaseInterface phase, double temperature, double pressure, int + // numbcomp); + // double calcB2(PhaseInterface phase, double temperature, double pressure, int + // numbcomp); + // public double calcA(ComponentInterface[] te, double temperature, double + // pressure, int numberOfComponents); + // public double calcB(ComponentInterface[] te, double temperature, double + // pressure, int numberOfComponents); } diff --git a/src/main/java/neqsim/thermo/mixingRule/HVmixingRuleInterface.java b/src/main/java/neqsim/thermo/mixingRule/HVmixingRuleInterface.java index 3bc7f84537..9dd9f46791 100644 --- a/src/main/java/neqsim/thermo/mixingRule/HVmixingRuleInterface.java +++ b/src/main/java/neqsim/thermo/mixingRule/HVmixingRuleInterface.java @@ -3,6 +3,7 @@ * * Created on 5. mai 2001, 17:48 */ + package neqsim.thermo.mixingRule; /** @@ -14,91 +15,91 @@ * @version $Id: $Id */ public interface HVmixingRuleInterface extends EosMixingRulesInterface { - /** - *

- * setHVDijParameter. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setHVDijParameter(int i, int j, double value); + /** + *

+ * setHVDijParameter. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setHVDijParameter(int i, int j, double value); - /** - *

- * setHVDijTParameter. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setHVDijTParameter(int i, int j, double value); + /** + *

+ * setHVDijTParameter. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setHVDijTParameter(int i, int j, double value); - /** - *

- * getHVDijParameter. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getHVDijParameter(int i, int j); + /** + *

+ * getHVDijParameter. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getHVDijParameter(int i, int j); - /** - *

- * getHVDijTParameter. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getHVDijTParameter(int i, int j); + /** + *

+ * getHVDijTParameter. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getHVDijTParameter(int i, int j); - /** - *

- * getKijWongSandler. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getKijWongSandler(int i, int j); + /** + *

+ * getKijWongSandler. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getKijWongSandler(int i, int j); - /** - *

- * setKijWongSandler. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setKijWongSandler(int i, int j, double value); + /** + *

+ * setKijWongSandler. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setKijWongSandler(int i, int j, double value); - /** - *

- * setHValphaParameter. - *

- * - * @param i a int - * @param j a int - * @param value a double - */ - public void setHValphaParameter(int i, int j, double value); + /** + *

+ * setHValphaParameter. + *

+ * + * @param i a int + * @param j a int + * @param value a double + */ + public void setHValphaParameter(int i, int j, double value); - /** - *

- * getHValphaParameter. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getHValphaParameter(int i, int j); + /** + *

+ * getHValphaParameter. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getHValphaParameter(int i, int j); } diff --git a/src/main/java/neqsim/thermo/phase/Phase.java b/src/main/java/neqsim/thermo/phase/Phase.java index c69f3132a9..8a421f51a3 100644 --- a/src/main/java/neqsim/thermo/phase/Phase.java +++ b/src/main/java/neqsim/thermo/phase/Phase.java @@ -3,54 +3,70 @@ * * Created on 8. april 2000, 23:38 */ + package neqsim.thermo.phase; import java.util.ArrayList; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.physicalProperties.PhysicalPropertyHandler; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.component.ComponentInterface; import neqsim.thermo.system.SystemInterface; +import neqsim.util.exception.InvalidInputException; /** + * Phase class. + * * @author Even Solbraa */ - -abstract class Phase implements PhaseInterface { +public abstract class Phase implements PhaseInterface { + /** Serialization version UID. */ private static final long serialVersionUID = 1000; + /** Logger object for class. */ + static Logger logger = LogManager.getLogger(Phase.class); + public int numberOfComponents = 0; public ComponentInterface[] componentArray; public boolean mixingRuleDefined = false; public boolean calcMolarVolume = true; private boolean constantPhaseVolume = false; - public int numberOfComponents = 0; public int physicalPropertyType = 0; protected boolean useVolumeCorrection = true; public neqsim.physicalProperties.PhysicalPropertyHandler physicalPropertyHandler = null; - public double numberOfMolesInPhase = 0; protected double molarVolume = 1.0; - protected double phaseVolume = 1.0; public boolean chemSyst = false; protected double diElectricConstant = 0; double Z = 1; public String thermoPropertyModelName = null; + + /** + * Mole fraction of this phase of system. + * beta = numberOfMolesInPhase/numberOfMolesInSystem. NB! numberOfMolesInSystem is + * not known to the phase. + */ double beta = 1.0; + + /** + * Number of moles in phase. numberOfMolesInPhase = numberOfMolesInSystem*beta. NB! + * numberOfMolesInSystem is not known to the phase. + */ + public double numberOfMolesInPhase = 0; + private int initType = 0; int mixingRuleNumber = 0; double temperature = 0; - double pressure = 0; protected PhaseInterface[] refPhase = null; - int phaseType = 0; - protected String phaseTypeName = "gas"; - static Logger logger = LogManager.getLogger(Phase.class); + protected PhaseType pt = PhaseType.GAS; /** *

@@ -58,18 +74,9 @@ abstract class Phase implements PhaseInterface { *

*/ public Phase() { - componentArray = new ComponentInterface[MAX_NUMBER_OF_COMPONENTS]; + componentArray = new ComponentInterface[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; } - /** - *

- * Constructor for Phase. - *

- * - * @param phase a {@link neqsim.thermo.phase.Phase} object - */ - public Phase(Phase phase) {} - /** {@inheritDoc} */ @Override public Phase clone() { @@ -77,15 +84,15 @@ public Phase clone() { try { clonedPhase = (Phase) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } clonedPhase.componentArray = this.componentArray.clone(); for (int i = 0; i < numberOfComponents; i++) { clonedPhase.componentArray[i] = this.componentArray[i].clone(); } - // System.out.println("cloed length: " + componentArray.length); + // System.out.println("cloned length: " + componentArray.length); if (physicalPropertyHandler != null) { clonedPhase.physicalPropertyHandler = this.physicalPropertyHandler.clone(); } @@ -95,27 +102,64 @@ public Phase clone() { /** *

- * addcomponent. + * Increase number of components and add moles to phase. + * + * NB! Does not actually add component to componentarray. *

* - * @param moles a double + * @param name Name of component to add. + * @param moles Number of moles of component to add to phase. + * @param compNumber component number in fluid */ - public void addcomponent(double moles) { - numberOfMolesInPhase += moles; - numberOfComponents++; + public void addComponent(String name, double moles, int compNumber) { + if (name == null) { + // Will fail anyhow creating component with no name + throw new RuntimeException( + new InvalidInputException(this, "addcomponent", "name", "can not be null")); + } + + if (name.equals("")) { + throw new RuntimeException( + new InvalidInputException(this, "addcomponent", "name", "can not be empty.")); + } + + if (this.hasComponent(name)) { + // shall use addMoles/addMolesChemreac to adding/subtracting moles for + // component. + throw new RuntimeException(new InvalidInputException(this, "addComponent", "name", + "component with same name already exists in phase. Use addMoles or addMolesChemreac.")); + } + + if (moles < 0) { + throw new RuntimeException( + new InvalidInputException(this, "addComponent", "moles", "can not be negative")); + } + + if (compNumber < 0 || compNumber >= ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS) { + throw new RuntimeException(new InvalidInputException(this, "addComponent", "compNumber", + " must be valid index, i.e., between 0 and " + + ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS + ".")); + } + + if (componentArray[compNumber] != null) { + throw new RuntimeException(new InvalidInputException(this, "addComponent", "compNumber", + "number is already in use.")); + } + + this.numberOfMolesInPhase += moles; + this.numberOfComponents++; } /** {@inheritDoc} */ @Override - public void removeComponent(String componentName, double moles, double molesInPhase, - int compNumber) { - componentName = ComponentInterface.getComponentName(componentName); + public void removeComponent(String name, double moles, double molesInPhase) { + name = ComponentInterface.getComponentNameFromAlias(name); ArrayList temp = new ArrayList(); try { for (int i = 0; i < numberOfComponents; i++) { - if (!componentArray[i].getName().equals(componentName)) { + if (!componentArray[i].getName().equals(name)) { temp.add(this.componentArray[i]); } } @@ -124,8 +168,8 @@ public void removeComponent(String componentName, double moles, double molesInPh this.componentArray[i] = temp.get(i); this.getComponent(i).setComponentNumber(i); } - } catch (Exception e) { - logger.error("not able to remove " + componentName); + } catch (Exception ex) { + logger.error("not able to remove " + name, ex); } // componentArray = (ComponentInterface[])temp.toArray(); @@ -151,38 +195,23 @@ public void addMoles(int component, double dn) { componentArray[component].addMoles(dn); } - /** {@inheritDoc} */ - @Override - public void addMolesChemReac(int component, double dn) { - numberOfMolesInPhase += dn; - componentArray[component].addMolesChemReac(dn); - } - /** {@inheritDoc} */ @Override public void addMolesChemReac(int component, double dn, double totdn) { + if ((numberOfMolesInPhase + dn) / numberOfMolesInPhase < -1e-10) { + String msg = "will lead to negative number of moles in phase." + (numberOfMolesInPhase + dn); + neqsim.util.exception.InvalidInputException ex = + new neqsim.util.exception.InvalidInputException(this, "addMolesChemReac", "dn", msg); + throw new RuntimeException(ex); + } numberOfMolesInPhase += dn; componentArray[component].addMolesChemReac(dn, totdn); - if (numberOfMolesInPhase < 0.0 || getComponent(component).getNumberOfMolesInPhase() < 0.0) { - String msg = "Negative number of moles in phase."; - logger.error(msg); - neqsim.util.exception.InvalidInputException e = - new neqsim.util.exception.InvalidInputException(this, "addMolesChemReac", msg); - throw new RuntimeException(e); - } - if (getComponent(component).getNumberOfMolesInPhase() < 0.0) { - String msg = "Negative number of moles of component " + component; - logger.error(msg); - neqsim.util.exception.InvalidInputException e = - new neqsim.util.exception.InvalidInputException(this, "addMolesChemReac", msg); - throw new RuntimeException(e); - } } /** {@inheritDoc} */ @Override public void setProperties(PhaseInterface phase) { - this.phaseType = phase.getPhaseType(); + setType(phase.getType()); for (int i = 0; i < phase.getNumberOfComponents(); i++) { this.getComponent(i).setProperties(phase.getComponent(i)); } @@ -270,6 +299,14 @@ public double getTemperature() { return temperature; } + /** {@inheritDoc} */ + @Override + public double getTemperature(String unit) { + neqsim.util.unit.TemperatureUnit tempConversion = + new neqsim.util.unit.TemperatureUnit(getTemperature(), "K"); + return tempConversion.getValue(unit); + } + /** {@inheritDoc} */ @Override public double getPressure() { @@ -307,14 +344,18 @@ public double[] getComposition(String unit) { double[] comp = new double[getNumberOfComponents()]; for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { - if (unit.equals("molefraction")) + if (unit.equals("molefraction")) { comp[compNumb] = getComponent(compNumb).getx(); - if (unit.equals("wtfraction")) + } + if (unit.equals("wtfraction")) { comp[compNumb] = getWtFrac(compNumb); - if (unit.equals("molespersec")) + } + if (unit.equals("molespersec")) { comp[compNumb] = getWtFrac(compNumb); - if (unit.equals("volumefraction")) + } + if (unit.equals("volumefraction")) { comp[compNumb] = getComponent(compNumb).getVoli() / getVolume(); + } } return comp; } @@ -326,12 +367,13 @@ public double getMixGibbsEnergy() { for (int i = 0; i < numberOfComponents; i++) { gmix += getComponent(i).getx() * Math.log(getComponent(i).getx()); } - return getExessGibbsEnergy() + R * temperature * gmix * numberOfMolesInPhase; + // todo: is this correct? + return R * temperature * numberOfMolesInPhase * getExcessGibbsEnergy() * gmix; } /** {@inheritDoc} */ @Override - public double getExessGibbsEnergy() { + public double getExcessGibbsEnergy() { double GE = 0.0; if (refPhase == null) { initRefPhases(false); @@ -344,7 +386,7 @@ public double getExessGibbsEnergy() { /** {@inheritDoc} */ @Override - public double getExessGibbsEnergySymetric() { + public double getExcessGibbsEnergySymetric() { double GE = 0.0; if (refPhase == null) { initRefPhases(true); @@ -361,6 +403,13 @@ public double getZ() { return Z; } + /** {@inheritDoc} */ + @Override + public double getZvolcorr() { + return getPressure("Pa") * getMolarMass() / neqsim.thermo.ThermodynamicConstantsInterface.R + / temperature / getDensity("kg/m3"); + } + /** {@inheritDoc} */ @Override public void setPressure(double pres) { @@ -386,13 +435,7 @@ public neqsim.physicalProperties.physicalPropertySystem.PhysicalPropertiesInterf /** {@inheritDoc} */ @Override - public void init() { - init(numberOfMolesInPhase / beta, numberOfComponents, initType, phaseType, beta); - } - - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, double beta) { if (totalNumberOfMoles <= 0) { throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, "init", @@ -401,14 +444,14 @@ public void init(double totalNumberOfMoles, int numberOfComponents, int type, in this.beta = beta; numberOfMolesInPhase = beta * totalNumberOfMoles; - if (this.phaseType != phase) { - this.phaseType = phase; + if (this.pt != pt) { + setType(pt); // setPhysicalProperties(physicalPropertyType); } - this.setInitType(type); + this.setInitType(initType); this.numberOfComponents = numberOfComponents; for (int i = 0; i < numberOfComponents; i++) { - componentArray[i].init(temperature, pressure, totalNumberOfMoles, beta, type); + componentArray[i].init(temperature, pressure, totalNumberOfMoles, beta, initType); } } @@ -463,7 +506,7 @@ public void initPhysicalProperties(String type) { // if (physicalProperty == null || phaseTypeAtLastPhysPropUpdate != phaseType || // !phaseTypeNameAtLastPhysPropUpdate.equals(phaseTypeName)) { // this.setPhysicalProperties(); - //// } + // } // physicalProperty.init(this, type); getPhysicalProperties().init(this, type); } @@ -471,31 +514,13 @@ public void initPhysicalProperties(String type) { /** {@inheritDoc} */ @Override public double geta(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1; - } - - /** {@inheritDoc} */ - @Override - public double getb(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'geta'"); } /** {@inheritDoc} */ @Override public double calcA(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1; - } - - /** {@inheritDoc} */ - @Override - public double calcB(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1; - } - - /** {@inheritDoc} */ - @Override - public double getg() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'calcA'"); } /** @@ -512,49 +537,68 @@ public double getg() { */ public double calcA(int comp, PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'calcA'"); } /** {@inheritDoc} */ @Override public double calcAi(int comp, PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'calcAi'"); } /** {@inheritDoc} */ @Override public double calcAiT(int comp, PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'calcAiT'"); } /** {@inheritDoc} */ @Override public double calcAT(int comp, PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'calcAT'"); } /** {@inheritDoc} */ @Override public double calcAij(int compNumb, int j, PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 0; + throw new UnsupportedOperationException("Unimplemented method 'calcAij'"); + + } + + /** {@inheritDoc} */ + @Override + public double getb(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + throw new UnsupportedOperationException("Unimplemented method 'getb'"); + } + + /** {@inheritDoc} */ + @Override + public double calcB(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + throw new UnsupportedOperationException("Unimplemented method 'calcB'"); + } + + /** {@inheritDoc} */ + @Override + public double getg() { + throw new UnsupportedOperationException("Unimplemented method 'getg'"); } /** {@inheritDoc} */ @Override public double calcBij(int compNumb, int j, PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 0; + throw new UnsupportedOperationException("Unimplemented method 'calcBij'"); } /** {@inheritDoc} */ @Override public double calcBi(int comp, PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'calcBi'"); } /** {@inheritDoc} */ @@ -571,6 +615,29 @@ public double getMolarVolume() { return molarVolume; } + /** {@inheritDoc} */ + @Override + public double getMolarVolume(String unit) { + double conversionFactor = 1.0; + switch (unit) { + case "m3/mol": + conversionFactor = 1.0; + break; + case "cm3/mol": + conversionFactor = 1e6; + break; + case "litre/mol": + conversionFactor = 1000.0; + break; + case "ft3/lbmole": + conversionFactor = 16018.463373960138; + break; + default: + throw new RuntimeException("unit not supported " + unit); + } + return getMolarMass() / getDensity("kg/m3") * conversionFactor; + } + /** {@inheritDoc} */ @Override public int getNumberOfComponents() { @@ -580,13 +647,13 @@ public int getNumberOfComponents() { /** {@inheritDoc} */ @Override public double getA() { - return 0; + throw new UnsupportedOperationException("Unimplemented method 'calcAij'"); } /** {@inheritDoc} */ @Override public double getB() { - return 0; + throw new UnsupportedOperationException("Unimplemented method 'getB'"); } /** @@ -597,19 +664,19 @@ public double getB() { * @return a double */ public double getBi() { - return 0; + throw new UnsupportedOperationException("Unimplemented method 'getBi'"); } /** {@inheritDoc} */ @Override public double getAT() { - return 0; + throw new UnsupportedOperationException("Unimplemented method 'getAT'"); } /** {@inheritDoc} */ @Override public double getATT() { - return 0; + throw new UnsupportedOperationException("Unimplemented method 'getATT'"); } /** @@ -620,7 +687,7 @@ public double getATT() { * @return a double */ public double getAiT() { - return 0; + throw new UnsupportedOperationException("Unimplemented method 'getAiT'"); } /** {@inheritDoc} */ @@ -650,7 +717,7 @@ public void setComponentArray(ComponentInterface[] components) { /** {@inheritDoc} */ @Override public double calcR() { - double R = 8.314 / getMolarMass(); + double R = ThermodynamicConstantsInterface.R / getMolarMass(); return R; } @@ -658,193 +725,193 @@ public double calcR() { /** {@inheritDoc} */ @Override public double Fn() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'Fn'"); } /** {@inheritDoc} */ @Override public double FT() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FT'"); } /** {@inheritDoc} */ @Override public double FV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FV'"); } /** {@inheritDoc} */ @Override public double FD() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FD'"); } /** {@inheritDoc} */ @Override public double FB() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FB'"); } /** {@inheritDoc} */ @Override public double gb() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'gb'"); } /** {@inheritDoc} */ @Override public double fb() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'fb'"); } /** {@inheritDoc} */ @Override public double gV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'gV'"); } /** {@inheritDoc} */ @Override public double fv() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'fv'"); } /** {@inheritDoc} */ @Override public double FnV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FnV'"); } /** {@inheritDoc} */ @Override public double FnB() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FnB'"); } /** {@inheritDoc} */ @Override public double FTT() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FTT'"); } /** {@inheritDoc} */ @Override public double FBT() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FBT'"); } /** {@inheritDoc} */ @Override public double FDT() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FDT'"); } /** {@inheritDoc} */ @Override public double FBV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FBV'"); } /** {@inheritDoc} */ @Override public double FBB() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FBB'"); } /** {@inheritDoc} */ @Override public double FDV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FDV'"); } /** {@inheritDoc} */ @Override public double FBD() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FBD'"); } /** {@inheritDoc} */ @Override public double FTV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FTV'"); } /** {@inheritDoc} */ @Override public double FVV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'FVV'"); } /** {@inheritDoc} */ @Override public double gVV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'gVV'"); } /** {@inheritDoc} */ @Override public double gBV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'gBV'"); } /** {@inheritDoc} */ @Override public double gBB() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'gBB'"); } /** {@inheritDoc} */ @Override public double fVV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'fVV'"); } /** {@inheritDoc} */ @Override public double fBV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'fBV'"); } /** {@inheritDoc} */ @Override public double fBB() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'fBB'"); } /** {@inheritDoc} */ @Override public double dFdT() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'dFdT'"); } /** {@inheritDoc} */ @Override public double dFdV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'dFdV'"); } /** {@inheritDoc} */ @Override public double dFdTdV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'dFdTdV'"); } /** {@inheritDoc} */ @Override public double dFdVdV() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'dFdVdV'"); } /** {@inheritDoc} */ @Override public double dFdTdT() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'dFdTdT'"); } /** {@inheritDoc} */ @Override public double getCpres() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'getCpres'"); } /** @@ -855,14 +922,13 @@ public double getCpres() { * @return a double */ public double getCvres() { - return 1; + throw new UnsupportedOperationException("Unimplemented method 'getCvres'"); } /** {@inheritDoc} */ @Override public double getHresTP() { - logger.error("error Hres"); - return 0; + throw new UnsupportedOperationException("Unimplemented method 'getHresTP'"); } /** @@ -873,15 +939,13 @@ public double getHresTP() { * @return a double */ public double getHresdP() { - logger.error(" getHresdP error Hres - not implemented?"); - return 0; + throw new UnsupportedOperationException("Unimplemented method 'getHresdP'"); } /** {@inheritDoc} */ @Override public double getGresTP() { - logger.error("error Gres"); - return 0; + throw new UnsupportedOperationException("Unimplemented method 'getGresTP'"); } /** @@ -892,14 +956,13 @@ public double getGresTP() { * @return a double */ public double getSresTV() { - logger.error("error Hres"); - return 0; + throw new UnsupportedOperationException("Unimplemented method 'getSresTV'"); } /** {@inheritDoc} */ @Override public double getSresTP() { - return 0; + throw new UnsupportedOperationException("Unimplemented method 'getSresTP'"); } /** {@inheritDoc} */ @@ -953,6 +1016,11 @@ public double getCp(String unit) { case "kJ/kgK": conversionFactor = 1.0 / getNumberOfMolesInPhase() / getMolarMass() / 1000.0; break; + case "btu/lbmole-F": + conversionFactor = 1.0 / getNumberOfMolesInPhase() / getMolarMass() / 1000.0 * 0.2388; + break; + default: + throw new RuntimeException("unit not supported " + unit); } return refCp * conversionFactor; } @@ -981,6 +1049,12 @@ public double getCv(String unit) { case "kJ/kgK": conversionFactor = 1.0 / getNumberOfMolesInPhase() / getMolarMass() / 1000.0; break; + case "btu/lbmole-F": + conversionFactor = 1.0 / getNumberOfMolesInPhase() / getMolarMass() / 1000.0 * 0.2388; + break; + default: + throw new RuntimeException("unit not supported " + unit); + } return refCv * conversionFactor; } @@ -1012,6 +1086,7 @@ public double getEnthalpy(String unit) { case "J": conversionFactor = 1.0; break; + case "kJ/kmol": case "J/mol": conversionFactor = 1.0 / getNumberOfMolesInPhase(); break; @@ -1021,6 +1096,14 @@ public double getEnthalpy(String unit) { case "kJ/kg": conversionFactor = 1.0 / getNumberOfMolesInPhase() / getMolarMass() / 1000.0; break; + case "Btu/lbmol": + conversionFactor = 1.0 / getNumberOfMolesInPhase() * 0.429923; + break; + case "Btu": + conversionFactor = 0.00094781712; + break; + default: + throw new RuntimeException("unit not supported " + unit); } return refEnthalpy * conversionFactor; } @@ -1105,6 +1188,11 @@ public double getEntropy(String unit) { case "kJ/kgK": conversionFactor = 1.0 / getNumberOfMolesInPhase() / getMolarMass() / 1000.0; break; + case "btu/lb-F": + conversionFactor = 1.0 / getNumberOfMolesInPhase() / getMolarMass() / 1000.0 * 0.2388; + break; + default: + throw new RuntimeException("unit not supported " + unit); } return refEntropy * conversionFactor; } @@ -1133,6 +1221,7 @@ public double getViscosity(String unit) { double refViscosity = getViscosity(); // viscosity in kg/msec double conversionFactor = 1.0; switch (unit) { + case "Pas": case "kg/msec": conversionFactor = 1.0; break; @@ -1140,7 +1229,7 @@ public double getViscosity(String unit) { conversionFactor = 1.0e3; break; default: - throw new RuntimeException(); + throw new RuntimeException("unit not supported " + unit); } return refViscosity * conversionFactor; } @@ -1151,13 +1240,6 @@ public double getThermalConductivity() { return getPhysicalProperties().getConductivity(); } - /** {@inheritDoc} */ - @Override - @Deprecated - public double getConductivity() { - return getPhysicalProperties().getConductivity(); - } - /** {@inheritDoc} */ @Override public double getThermalConductivity(String unit) { @@ -1165,32 +1247,17 @@ public double getThermalConductivity(String unit) { double conversionFactor = 1.0; switch (unit) { case "W/mK": + case "J/sec-m-K": conversionFactor = 1.0; break; case "W/cmK": conversionFactor = 0.01; break; - default: - throw new RuntimeException(); - } - return refConductivity * conversionFactor; - } - - /** {@inheritDoc} */ - @Override - @Deprecated - public double getConductivity(String unit) { - double refConductivity = getConductivity(); // conductivity in W/m*K - double conversionFactor = 1.0; - switch (unit) { - case "W/mK": - conversionFactor = 1.0; - break; - case "W/cmK": - conversionFactor = 0.01; + case "Btu/hr-ft-F": + conversionFactor = 0.5781759824; break; default: - throw new RuntimeException(); + throw new RuntimeException("unit not supported " + unit); } return refConductivity * conversionFactor; } @@ -1216,14 +1283,14 @@ public void initRefPhases(boolean onlyPure, String name) { for (int i = 0; i < numberOfComponents; i++) { try { refPhase[i] = this.getClass().getDeclaredConstructor().newInstance(); - } catch (Exception e) { - logger.error("err " + e.toString()); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } refPhase[i].setTemperature(temperature); refPhase[i].setPressure(pressure); if (getComponent(i).getReferenceStateType().equals("solvent") || onlyPure) { if (getComponent(i).isIsTBPfraction() || getComponent(i).isIsPlusFraction()) { - refPhase[i].addcomponent("default", 10.0, 10.0, 0); + refPhase[i].addComponent("default", 10.0, 10.0, 0); refPhase[i].getComponent(0).setMolarMass(this.getComponent(i).getMolarMass()); refPhase[i].getComponent(0).setAcentricFactor(this.getComponent(i).getAcentricFactor()); refPhase[i].getComponent(0).setTC(this.getComponent(i).getTC()); @@ -1231,16 +1298,16 @@ public void initRefPhases(boolean onlyPure, String name) { refPhase[i].getComponent(0).setComponentType("TBPfraction"); refPhase[i].getComponent(0).setIsTBPfraction(true); } else { - refPhase[i].addcomponent(getComponent(i).getComponentName(), 10.0, 10.0, 0); + refPhase[i].addComponent(getComponent(i).getComponentName(), 10.0, 10.0, 0); } refPhase[i].setAttractiveTerm(this.getComponent(i).getAttractiveTermNumber()); refPhase[i].setMixingRule(this.getMixingRuleNumber()); - refPhase[i].setPhaseType(this.getPhaseType()); - refPhase[i].init(refPhase[i].getNumberOfMolesInPhase(), 1, 0, this.getPhaseType(), 1.0); + refPhase[i].setType(this.getType()); + refPhase[i].init(refPhase[i].getNumberOfMolesInPhase(), 1, 0, this.getType(), 1.0); } else { // System.out.println("ref " + name); if (getComponent(i).isIsTBPfraction() || getComponent(i).isIsPlusFraction()) { - refPhase[i].addcomponent("default", 10.0, 10.0, 0); + refPhase[i].addComponent("default", 10.0, 10.0, 0); refPhase[i].getComponent(0).setMolarMass(this.getComponent(i).getMolarMass()); refPhase[i].getComponent(0).setAcentricFactor(this.getComponent(i).getAcentricFactor()); refPhase[i].getComponent(0).setTC(this.getComponent(i).getTC()); @@ -1248,12 +1315,12 @@ public void initRefPhases(boolean onlyPure, String name) { refPhase[i].getComponent(0).setComponentType("TBPfraction"); refPhase[i].getComponent(0).setIsTBPfraction(true); } else { - refPhase[i].addcomponent(getComponent(i).getComponentName(), 1.0e-10, 1.0e-10, 0); + refPhase[i].addComponent(getComponent(i).getComponentName(), 1.0e-10, 1.0e-10, 0); } - refPhase[i].addcomponent(name, 10.0, 10.0, 1); + refPhase[i].addComponent(name, 10.0, 10.0, 1); refPhase[i].setAttractiveTerm(this.getComponent(i).getAttractiveTermNumber()); refPhase[i].setMixingRule(this.getMixingRuleNumber()); - refPhase[i].init(refPhase[i].getNumberOfMolesInPhase(), 2, 0, this.getPhaseType(), 1.0); + refPhase[i].init(refPhase[i].getNumberOfMolesInPhase(), 2, 0, this.getType(), 1.0); } } } @@ -1273,7 +1340,7 @@ public double getLogPureComponentFugacity(int k, boolean pure) { } refPhase[k].setTemperature(temperature); refPhase[k].setPressure(pressure); - refPhase[k].init(refPhase[k].getNumberOfMolesInPhase(), 1, 1, this.getPhaseType(), 1.0); + refPhase[k].init(refPhase[k].getNumberOfMolesInPhase(), 1, 1, this.getType(), 1.0); refPhase[k].getComponent(0).fugcoef(refPhase[k]); return refPhase[k].getComponent(0).getLogFugacityCoefficient(); } @@ -1304,7 +1371,7 @@ public double getLogInfiniteDiluteFugacity(int k, int p) { } refPhase[k].setTemperature(temperature); refPhase[k].setPressure(pressure); - refPhase[k].init(refPhase[k].getNumberOfMolesInPhase(), 2, 1, this.getPhaseType(), 1.0); + refPhase[k].init(refPhase[k].getNumberOfMolesInPhase(), 2, 1, this.getType(), 1.0); refPhase[k].getComponent(0).fugcoef(refPhase[k]); return refPhase[k].getComponent(0).getLogFugacityCoefficient(); } @@ -1312,11 +1379,11 @@ public double getLogInfiniteDiluteFugacity(int k, int p) { /** {@inheritDoc} */ @Override public double getLogInfiniteDiluteFugacity(int k) { - PhaseInterface dilphase = (PhaseInterface) this.clone(); + PhaseInterface dilphase = this.clone(); dilphase.addMoles(k, -(1.0 - 1e-10) * dilphase.getComponent(k).getNumberOfMolesInPhase()); dilphase.getComponent(k).setx(1e-10); dilphase.init(dilphase.getNumberOfMolesInPhase(), dilphase.getNumberOfComponents(), 1, - dilphase.getPhaseType(), 1.0); + dilphase.getType(), 1.0); dilphase.getComponent(k).fugcoef(dilphase); return dilphase.getComponent(k).getLogFugacityCoefficient(); } @@ -1369,7 +1436,6 @@ public double getActivityCoefficient(int k, int p) { @Override public double getActivityCoefficient(int k) { double fug = 0.0; - double oldFug = getComponent(k).getLogFugacityCoefficient(); if (getComponent(k).getReferenceStateType().equals("solvent")) { fug = getLogPureComponentFugacity(k); @@ -1451,8 +1517,8 @@ public double getOsmoticCoefficient(int watNumb) { ions += getComponent(j).getx(); } } - return -Math.log(oldFug * getComponent(watNumb).getx() / pureFug) - * getComponent(watNumb).getx() / ions; + return -Math.log(oldFug * getComponent(watNumb).getx() / pureFug) * getComponent(watNumb).getx() + / ions; } // public double getOsmoticCoefficient(int watNumb, String refState){ @@ -1462,7 +1528,9 @@ public double getOsmoticCoefficient(int watNumb) { // double ions=0.0; // for(int j=0;j components = new ArrayList(); + + for (int j = 0; j < componentArray.length; j++) { + if (componentArray[j] != null) { + components.add(componentArray[j].getComponentName()); + } + } + + String[] componentList = new String[components.size()]; + for (int j = 0; j < numberOfComponents; j++) { + componentList[j] = components.get(j); } - return componentArray[0]; + return componentList; } /** {@inheritDoc} */ @Override - public boolean hasComponent(String name) { + public boolean hasComponent(String name, boolean normalized) { for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getName().equals(name)) { - return true; + if (componentArray != null) { + if (normalized) { + if (componentArray[i].getComponentName() + .equals(ComponentInterface.getComponentNameFromAlias(name))) { + return true; + } + } else { + if (componentArray[i].getName().equals(name)) { + return true; + } + } } } return false; @@ -1846,13 +1961,13 @@ public double getFugacity(String compName) { * groupTBPfractions. *

* - * @return an array of {@link double} objects + * @return an array of type double */ public double[] groupTBPfractions() { double[] TPBfrac = new double[20]; for (int i = 0; i < getNumberOfComponents(); i++) { - double boilpoint = getComponent(i).getNormalBoilingPoint(); + double boilpoint = getComponent(i).getNormalBoilingPoint("C"); if (boilpoint >= 331.0) { TPBfrac[19] += getComponent(i).getx(); @@ -1882,7 +1997,6 @@ public double[] groupTBPfractions() { TPBfrac[7] += getComponent(i).getx(); } else if (boilpoint >= 69.2) { TPBfrac[6] += getComponent(i).getx(); - } else { } } return TPBfrac; @@ -1890,25 +2004,25 @@ public double[] groupTBPfractions() { /** {@inheritDoc} */ @Override - public final void setBeta(double beta) { - this.beta = beta; + public final double getBeta() { + return this.beta; } /** {@inheritDoc} */ @Override - public void setMixingRuleGEModel(String name) {} - - /** {@inheritDoc} */ - @Override - public java.lang.String getPhaseTypeName() { - return phaseTypeName; + public final void setBeta(double b) { + if (b < 0) { + b = neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; + } + if (b > 1) { + b = 1.0 - neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; + } + this.beta = b; } /** {@inheritDoc} */ @Override - public void setPhaseTypeName(java.lang.String phaseTypeName) { - this.phaseTypeName = phaseTypeName; - } + public void setMixingRuleGEModel(String name) {} /** {@inheritDoc} */ @Override @@ -1924,8 +2038,14 @@ public void setMixingRuleDefined(boolean mixingRuleDefined) { /** {@inheritDoc} */ @Override - public final void setPhaseType(int phaseType) { - this.phaseType = phaseType; + public final PhaseType getType() { + return this.pt; + } + + /** {@inheritDoc} */ + @Override + public final void setType(PhaseType pt) { + this.pt = pt; } /** {@inheritDoc} */ @@ -1972,6 +2092,9 @@ public double getVolume(String unit) { case "litre": conversionFactor = 1000.0; break; + default: + throw new RuntimeException("unit not supported " + unit); + } return conversionFactor * getVolume() / 1.0e5; } @@ -2024,8 +2147,28 @@ public double getMass() { /** {@inheritDoc} */ @Override - public double getSoundSpeed() { - return 0.0; + public abstract double getSoundSpeed(); + + /** {@inheritDoc} */ + @Override + public double getSoundSpeed(String unit) { + double refVel = getSoundSpeed(); + double conversionFactor = 1.0; + switch (unit) { + case "m/s": + case "m/sec": + conversionFactor = 1.0; + break; + case "km/hr": + conversionFactor = 3.6; + break; + case "ft/sec": + conversionFactor = 3.280839895; + break; + default: + throw new RuntimeException("unit not supported " + unit); + } + return refVel * conversionFactor; } /** {@inheritDoc} */ @@ -2101,18 +2244,46 @@ public double getFlowRate(String flowunit) { return numberOfMolesInPhase * getMolarMass() * 60.0; } else if (flowunit.equals("kg/hr")) { return numberOfMolesInPhase * getMolarMass() * 3600.0; - } else if (flowunit.equals("m3/hr")) { - return getVolume() / 1.0e5 * 3600.0; - } else if (flowunit.equals("m3/min")) { - return getVolume() / 1.0e5 * 60.0; } else if (flowunit.equals("m3/sec")) { - return getVolume() / 1.0e5; + initPhysicalProperties("density"); + return numberOfMolesInPhase * getMolarMass() / getDensity("kg/m3"); + } else if (flowunit.equals("m3/min")) { + initPhysicalProperties("density"); + return numberOfMolesInPhase * getMolarMass() / getDensity("kg/m3") * 60.0; + } else if (flowunit.equals("m3/hr")) { + initPhysicalProperties("density"); + return numberOfMolesInPhase * getMolarMass() / getDensity("kg/m3") * 3600.0; + } else if (flowunit.equals("ft3/sec")) { + initPhysicalProperties("density"); + return numberOfMolesInPhase * getMolarMass() / getDensity("kg/m3") * Math.pow(3.2808399, 3); } else if (flowunit.equals("mole/sec")) { return numberOfMolesInPhase; } else if (flowunit.equals("mole/min")) { return numberOfMolesInPhase * 60.0; } else if (flowunit.equals("mole/hr")) { return numberOfMolesInPhase * 3600.0; + } else if (flowunit.equals("Sm3/sec")) { + return numberOfMolesInPhase * ThermodynamicConstantsInterface.R + * ThermodynamicConstantsInterface.standardStateTemperature + / ThermodynamicConstantsInterface.atm; + } else if (flowunit.equals("Sm3/hr")) { + return numberOfMolesInPhase * 3600.0 * ThermodynamicConstantsInterface.R + * ThermodynamicConstantsInterface.standardStateTemperature + / ThermodynamicConstantsInterface.atm; + } else if (flowunit.equals("Sm3/day")) { + return numberOfMolesInPhase * 3600.0 * 24.0 * ThermodynamicConstantsInterface.R + * ThermodynamicConstantsInterface.standardStateTemperature + / ThermodynamicConstantsInterface.atm; + } else if (flowunit.equals("MSm3/day")) { + return numberOfMolesInPhase * 3600.0 * 24.0 * ThermodynamicConstantsInterface.R + * ThermodynamicConstantsInterface.standardStateTemperature + / ThermodynamicConstantsInterface.atm / 1.0e6; + } else if (flowunit.equals("lbmole/hr")) { + return numberOfMolesInPhase * 3600.0 / 1000.0 * 2.205; + } else if (flowunit.equals("lb/hr")) { + return numberOfMolesInPhase * getMolarMass() * 60.0 * 2.20462262; + } else if (flowunit.equals("barrel/day")) { + return numberOfMolesInPhase * getMolarMass() * 60.0 * 2.20462262 * 0.068; } else { throw new RuntimeException("failed.. unit: " + flowunit + " not supported"); } @@ -2128,4 +2299,34 @@ public double getFlowRate(String flowunit) { public String getThermoPropertyModelName() { return thermoPropertyModelName; } + + /** {@inheritDoc} */ + @Override + public double getCompressibilityX() { + return getTemperature() / getTotalVolume() * getdPdTVn() / getdPdVTn(); + } + + /** {@inheritDoc} */ + @Override + public double getCompressibilityY() { + return getPressure() / getTotalVolume() * 1.0 / getdPdVTn(); + } + + /** {@inheritDoc} */ + @Override + public double getIsothermalCompressibility() { + return -1.0 / getTotalVolume() * 1.0 / getdPdVTn(); + } + + /** {@inheritDoc} */ + @Override + public double getIsobaricThermalExpansivity() { + return getIsothermalCompressibility() * getdPdTVn(); + } + + /** {@inheritDoc} */ + @Override + public String getModelName() { + return thermoPropertyModelName; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseBWRSEos.java b/src/main/java/neqsim/thermo/phase/PhaseBWRSEos.java index 762ea1aed1..8d9c89ed7c 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseBWRSEos.java +++ b/src/main/java/neqsim/thermo/phase/PhaseBWRSEos.java @@ -13,568 +13,564 @@ * @version $Id: $Id */ public class PhaseBWRSEos extends PhaseSrkEos { - private static final long serialVersionUID = 1000; - - int OP = 9; - int OE = 6; - - static Logger logger = LogManager.getLogger(PhaseBWRSEos.class); - - /** - *

- * Constructor for PhaseBWRSEos. - *

- */ - public PhaseBWRSEos() { - super(); - } - - /** {@inheritDoc} */ - @Override - public PhaseBWRSEos clone() { - PhaseBWRSEos clonedPhase = null; - try { - clonedPhase = (PhaseBWRSEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedPhase; - } - - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - - componentArray[compNumber] = - new ComponentBWRS(componentName, moles, molesInPhase, compNumber); - ((ComponentBWRS) componentArray[compNumber]).setRefPhaseBWRS(this); - } - - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - double oldMolDens = 0; - if (type == 0) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - super.init(totalNumberOfMoles, numberOfComponents, 3, phase, beta); - return; - } - do { - oldMolDens = getMolarDensity(); - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } while (Math.abs((getMolarDensity() - oldMolDens) / oldMolDens) > 1e-10); - getF(); - // calcPVT(); - } - - /** - *

- * getMolarDensity. - *

- * - * @return a double - */ - public double getMolarDensity() { - return getNumberOfMolesInPhase() / getTotalVolume() * 1.0e2; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseBWRSEos.class); + + int OP = 9; + int OE = 6; + + /** + *

+ * Constructor for PhaseBWRSEos. + *

+ */ + public PhaseBWRSEos() { + super(); + } + + /** {@inheritDoc} */ + @Override + public PhaseBWRSEos clone() { + PhaseBWRSEos clonedPhase = null; + try { + clonedPhase = (PhaseBWRSEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * getdRhodV. - *

- * - * @return a double - */ - public double getdRhodV() { - return -getMolarDensity() / (getTotalVolume() * 1e-5); + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentBWRS(name, moles, molesInPhase, compNumber); + ((ComponentBWRS) componentArray[compNumber]).setRefPhaseBWRS(this); + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + double oldMolDens = 0; + if (initType == 0) { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + super.init(totalNumberOfMoles, numberOfComponents, 3, pt, beta); + return; } - - /** - *

- * getdRhodVdV. - *

- * - * @return a double - */ - public double getdRhodVdV() { - return 2.0 * getMolarDensity() / (Math.pow(getTotalVolume() * 1e-5, 2)); + do { + oldMolDens = getMolarDensity(); + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + } while (Math.abs((getMolarDensity() - oldMolDens) / oldMolDens) > 1e-10); + getF(); + // calcPVT(); + } + + /** + *

+ * getMolarDensity. + *

+ * + * @return a double + */ + public double getMolarDensity() { + return getNumberOfMolesInPhase() / getTotalVolume() * 1.0e2; + } + + /** + *

+ * getdRhodV. + *

+ * + * @return a double + */ + public double getdRhodV() { + return -getMolarDensity() / (getTotalVolume() * 1e-5); + } + + /** + *

+ * getdRhodVdV. + *

+ * + * @return a double + */ + public double getdRhodVdV() { + return 2.0 * getMolarDensity() / (Math.pow(getTotalVolume() * 1e-5, 2)); + } + + /** + *

+ * getdRhodVdVdV. + *

+ * + * @return a double + */ + public double getdRhodVdVdV() { + return -6.0 * getMolarDensity() / (Math.pow(getTotalVolume() * 1e-5, 3)); + } + + /** + *

+ * getGammadRho. + *

+ * + * @return a double + */ + public double getGammadRho() { + return 0.0; // -2.0/Math.pow(((ComponentBWRS)componentArray[0]).getRhoc(),3.0); + // //-1.0/(rhoc*rhoc); + } + + /** + *

+ * getFpol. + *

+ * + * @return a double + */ + public double getFpol() { + double temp = 0.0; + for (int i = 1; i < OP; i++) { + temp += + ((ComponentBWRS) componentArray[0]).getBP(i) / (i + 0.0) * Math.pow(getMolarDensity(), i); } - - /** - *

- * getdRhodVdVdV. - *

- * - * @return a double - */ - public double getdRhodVdVdV() { - return -6.0 * getMolarDensity() / (Math.pow(getTotalVolume() * 1e-5, 3)); + return numberOfMolesInPhase / (R * temperature) * temp; + } + + /** + *

+ * getFpoldV. + *

+ * + * @return a double + */ + public double getFpoldV() { + double temp = 0.0; + for (int i = 1; i < OP; i++) { + temp += (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) + * Math.pow(getMolarDensity(), i - 1.0) * getdRhodV(); } - - /** - *

- * getGammadRho. - *

- * - * @return a double - */ - public double getGammadRho() { - return 0.0;// -2.0/Math.pow(((ComponentBWRS)componentArray[0]).getRhoc(),3.0);//-1.0/(rhoc*rhoc); + return numberOfMolesInPhase / (R * temperature) * temp; + } + + /** + *

+ * getFpoldVdV. + *

+ * + * @return a double + */ + public double getFpoldVdV() { + double temp = 0.0; + double temp2 = 0.0; + for (int i = 1; i < OP; i++) { + temp += (i - 1) * (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) + * Math.pow(getMolarDensity(), i - 2.0); + temp2 += (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) + * Math.pow(getMolarDensity(), i - 1.0); } - - /** - *

- * getFpol. - *

- * - * @return a double - */ - public double getFpol() { - double temp = 0.0; - for (int i = 1; i < OP; i++) { - temp += ((ComponentBWRS) componentArray[0]).getBP(i) / (i + 0.0) - * Math.pow(getMolarDensity(), i); - } - return numberOfMolesInPhase / (R * temperature) * temp; + return numberOfMolesInPhase / (R * temperature) * temp * Math.pow(getdRhodV(), 2) + + numberOfMolesInPhase / (R * temperature) * temp2 * getdRhodVdV(); + } + + /** + *

+ * getFpoldVdVdV. + *

+ * + * @return a double + */ + public double getFpoldVdVdV() { + double temp = 0.0; + double temp2 = 0.0; + // double temp3 = 0.0, temp4 = 0.0; + for (int i = 1; i < OP; i++) { + temp += (i - 2) * (i - 1) * (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) + * Math.pow(getMolarDensity(), i - 3); + temp2 += (i - 1) * (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) + * Math.pow(getMolarDensity(), i - 2); + // temp3 += (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) * + // Math.pow(getMolarDensity(), i - 1); } - - /** - *

- * getFpoldV. - *

- * - * @return a double - */ - public double getFpoldV() { - double temp = 0.0; - for (int i = 1; i < OP; i++) { - temp += (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) - * Math.pow(getMolarDensity(), i - 1.0) * getdRhodV(); - } - return numberOfMolesInPhase / (R * temperature) * temp; + return numberOfMolesInPhase / (R * temperature) * temp * Math.pow(getdRhodV(), 3) + + 2 * numberOfMolesInPhase / (R * temperature) * temp2 * Math.pow(getdRhodV(), 1) + * getdRhodVdV() + + numberOfMolesInPhase / (R * temperature) * temp2 * Math.pow(getdRhodV(), 1) + * getdRhodVdV() + + numberOfMolesInPhase / (R * temperature) * temp2 * getdRhodVdVdV(); + } + + /** + *

+ * getFpoldT. + *

+ * + * @return a double + */ + public double getFpoldT() { + double temp = 0.0; + double temp2 = 0.0; + for (int i = 1; i < OP; i++) { + temp += + ((ComponentBWRS) componentArray[0]).getBP(i) / (i + 0.0) * Math.pow(getMolarDensity(), i); + temp2 += ((ComponentBWRS) componentArray[0]).getBPdT(i) / (i + 0.0) + * Math.pow(getMolarDensity(), i); } - - /** - *

- * getFpoldVdV. - *

- * - * @return a double - */ - public double getFpoldVdV() { - double temp = 0.0, temp2 = 0.0; - for (int i = 1; i < OP; i++) { - temp += (i - 1) * (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) - * Math.pow(getMolarDensity(), i - 2.0); - temp2 += (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) - * Math.pow(getMolarDensity(), i - 1.0); - } - return numberOfMolesInPhase / (R * temperature) * temp * Math.pow(getdRhodV(), 2) - + numberOfMolesInPhase / (R * temperature) * temp2 * getdRhodVdV(); + return -numberOfMolesInPhase / (R * temperature * temperature) * temp + + numberOfMolesInPhase / (R * temperature) * temp2; + } + + /** + *

+ * getEL. + *

+ * + * @return a double + */ + public double getEL() { + return Math.exp( + -((ComponentBWRS) componentArray[0]).getGammaBWRS() * Math.pow(getMolarDensity(), 2.0)); + } + + /** + *

+ * getELdRho. + *

+ * + * @return a double + */ + public double getELdRho() { + return -2.0 * getMolarDensity() * ((ComponentBWRS) componentArray[0]).getGammaBWRS() * Math.exp( + -((ComponentBWRS) componentArray[0]).getGammaBWRS() * Math.pow(getMolarDensity(), 2.0)); + } + + /** + *

+ * getFexp. + *

+ * + * @return a double + */ + public double getFexp() { + double oldTemp = 0.0; + double temp = 0.0; + oldTemp = -((ComponentBWRS) componentArray[0]).getBE(0) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * (getEL() - 1.0); + temp += oldTemp; + for (int i = 1; i < OE; i++) { + oldTemp = -((ComponentBWRS) componentArray[0]).getBE(i) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) + * (getEL() * Math.pow(getMolarDensity(), 2.0 * i) + - (2.0 * i) / ((ComponentBWRS) componentArray[0]).getBE(i - 1) * oldTemp); + temp += oldTemp; } - - /** - *

- * getFpoldVdVdV. - *

- * - * @return a double - */ - public double getFpoldVdVdV() { - double temp = 0.0, temp2 = 0.0; - // double temp3 = 0.0, temp4 = 0.0; - for (int i = 1; i < OP; i++) { - temp += (i - 2) * (i - 1) * (i) * ((ComponentBWRS) componentArray[0]).getBP(i) - / (i - 0.0) * Math.pow(getMolarDensity(), i - 3); - temp2 += (i - 1) * (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) - * Math.pow(getMolarDensity(), i - 2); - // temp3 += (i) * ((ComponentBWRS) componentArray[0]).getBP(i) / (i - 0.0) * - // Math.pow(getMolarDensity(), i - 1); - } - return numberOfMolesInPhase / (R * temperature) * temp * Math.pow(getdRhodV(), 3) - + 2 * numberOfMolesInPhase / (R * temperature) * temp2 * Math.pow(getdRhodV(), 1) - * getdRhodVdV() - + numberOfMolesInPhase / (R * temperature) * temp2 * Math.pow(getdRhodV(), 1) - * getdRhodVdV() - + numberOfMolesInPhase / (R * temperature) * temp2 * getdRhodVdVdV(); + return numberOfMolesInPhase / (R * temperature) * temp; + } + + /** + *

+ * getFexpdV. + *

+ * + * @return a double + */ + public double getFexpdV() { + double oldTemp = 0.0; + double temp = 0.0; + oldTemp = -((ComponentBWRS) componentArray[0]).getBE(0) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * getELdRho() * getdRhodV(); + + temp += oldTemp; + for (int i = 1; i < OE; i++) { + oldTemp = -((ComponentBWRS) componentArray[0]).getBE(i) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) + * Math.pow(getMolarDensity(), 2 * i) * getELdRho() * getdRhodV() + + - (2.0 * i) * ((ComponentBWRS) componentArray[0]).getBE(i) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * getEL() + * Math.pow(getMolarDensity(), 2 * i - 1) * getdRhodV() + + + ((ComponentBWRS) componentArray[0]).getBE(i) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * 2.0 * i + / ((ComponentBWRS) componentArray[0]).getBE(i - 1) * oldTemp; + + temp += oldTemp; } - /** - *

- * getFpoldT. - *

- * - * @return a double - */ - public double getFpoldT() { - double temp = 0.0, temp2 = 0.0; - for (int i = 1; i < OP; i++) { - temp += ((ComponentBWRS) componentArray[0]).getBP(i) / (i + 0.0) - * Math.pow(getMolarDensity(), i); - temp2 += ((ComponentBWRS) componentArray[0]).getBPdT(i) / (i + 0.0) - * Math.pow(getMolarDensity(), i); - } - return -numberOfMolesInPhase / (R * temperature * temperature) * temp - + numberOfMolesInPhase / (R * temperature) * temp2; + return numberOfMolesInPhase / (R * temperature) * temp; + } + + /** + *

+ * getFexpdVdV. + *

+ * + * @return a double + */ + public double getFexpdVdV() { + return 0.0; + } + + // public double getFexpdVdVdV(){ + // return 0.0;temp + // } + + /** + *

+ * getFexpdT. + *

+ * + * @return a double + */ + public double getFexpdT() { + double oldTemp = 0.0; + double temp = 0.0; + double oldTemp2 = 0; + oldTemp = -((ComponentBWRS) componentArray[0]).getBEdT(0) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * (getEL() - 1.0); + oldTemp2 = -((ComponentBWRS) componentArray[0]).getBE(0) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * (getEL() - 1.0); + temp += oldTemp; + for (int i = 1; i < OE; i++) { + oldTemp = -((ComponentBWRS) componentArray[0]).getBEdT(i) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) + * (getEL() * Math.pow(getMolarDensity(), 2.0 * i) + - (2.0 * i) / ((ComponentBWRS) componentArray[0]).getBE(i - 1) * oldTemp2) + + + + + -((ComponentBWRS) componentArray[0]).getBE(i) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) + * ((2.0 * i) / Math.pow(((ComponentBWRS) componentArray[0]).getBE(i - 1), 2.0) + * oldTemp2) + * ((ComponentBWRS) componentArray[0]).getBEdT(i - 1) + + + + + ((ComponentBWRS) componentArray[0]).getBE(i) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) + * ((2.0 * i) / ((ComponentBWRS) componentArray[0]).getBE(i - 1) * oldTemp); + + oldTemp2 = -((ComponentBWRS) componentArray[0]).getBE(i) + / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) + * (getEL() * Math.pow(getMolarDensity(), 2.0 * i) + - (2.0 * i) / ((ComponentBWRS) componentArray[0]).getBE(i - 1) * oldTemp2); + + temp += oldTemp; } - - /** - *

- * getEL. - *

- * - * @return a double - */ - public double getEL() { - return Math.exp(-((ComponentBWRS) componentArray[0]).getGammaBWRS() - * Math.pow(getMolarDensity(), 2.0)); + return -getFexp() / temperature + numberOfMolesInPhase / (R * temperature) * temp; + } + + /** + *

+ * calcPressure2. + *

+ * + * @return a double + */ + public double calcPressure2() { + // System.out.println("here............"); + double temp = 0.0; + logger.info("molar density " + getMolarDensity()); + for (int i = 0; i < OP; i++) { + temp += ((ComponentBWRS) componentArray[0]).getBP(i) * Math.pow(getMolarDensity(), 1.0 + i); } - - /** - *

- * getELdRho. - *

- * - * @return a double - */ - public double getELdRho() { - return -2.0 * getMolarDensity() * ((ComponentBWRS) componentArray[0]).getGammaBWRS() - * Math.exp(-((ComponentBWRS) componentArray[0]).getGammaBWRS() - * Math.pow(getMolarDensity(), 2.0)); + for (int i = 0; i < OE; i++) { + temp += getEL() * ((ComponentBWRS) componentArray[0]).getBE(i) + * Math.pow(getMolarDensity(), 3.0 + 2.0 * i); } - - /** - *

- * getFexp. - *

- * - * @return a double - */ - public double getFexp() { - double oldTemp = 0.0, temp = 0.0; - oldTemp = -((ComponentBWRS) componentArray[0]).getBE(0) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * (getEL() - 1.0); - temp += oldTemp; - for (int i = 1; i < OE; i++) { - oldTemp = -((ComponentBWRS) componentArray[0]).getBE(i) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) - * (getEL() * Math.pow(getMolarDensity(), 2.0 * i) - (2.0 * i) - / ((ComponentBWRS) componentArray[0]).getBE(i - 1) * oldTemp); - temp += oldTemp; - } - return numberOfMolesInPhase / (R * temperature) * temp; + calcPVT(); + return temp / 100.0; + } + + /** + *

+ * calcPVT. + *

+ */ + public void calcPVT() { + double[] moldens = new double[300]; + double[] pres = new double[300]; + for (int j = 0; j < 300; j++) { + moldens[j] = 30 - j * 0.1; + double temp = 0.0; + for (int i = 0; i < OP; i++) { + temp += ((ComponentBWRS) componentArray[0]).getBP(i) * Math.pow(moldens[j], 1.0 + i); + } + for (int i = 0; i < OE; i++) { + temp += Math + .exp(-((ComponentBWRS) componentArray[0]).getGammaBWRS() * Math.pow(moldens[j], 2.0)) + * ((ComponentBWRS) componentArray[0]).getBE(i) * Math.pow(moldens[j], 3.0 + 2.0 * i); + } + pres[j] = temp / 100.0; + logger.info("moldens " + moldens[j] * 16.01 + " pres " + pres[j]); } - - /** - *

- * getFexpdV. - *

- * - * @return a double - */ - public double getFexpdV() { - double oldTemp = 0.0, temp = 0.0; - oldTemp = -((ComponentBWRS) componentArray[0]).getBE(0) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * getELdRho() - * getdRhodV(); - - temp += oldTemp; - for (int i = 1; i < OE; i++) { - oldTemp = -((ComponentBWRS) componentArray[0]).getBE(i) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) - * Math.pow(getMolarDensity(), 2 * i) * getELdRho() * getdRhodV() - - - (2.0 * i) * ((ComponentBWRS) componentArray[0]).getBE(i) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * getEL() - * Math.pow(getMolarDensity(), 2 * i - 1) * getdRhodV() - - + ((ComponentBWRS) componentArray[0]).getBE(i) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * 2.0 * i - / ((ComponentBWRS) componentArray[0]).getBE(i - 1) * oldTemp; - - temp += oldTemp; - } - - return numberOfMolesInPhase / (R * temperature) * temp; + } + + /** {@inheritDoc} */ + @Override + public double getF() { + // System.out.println("F " + getFpol()*1e3+ " "+ getFexp()*1e3 + " super " + + // super.getF() + " pt " +getType()); + return (getFpol() + getFexp()) * 1e3; + } + + /** + *

+ * getdFdN. + *

+ * + * @return a double + */ + public double getdFdN() { + double dn = numberOfMolesInPhase / 100.0; + getComponent(0).addMoles(dn); + numberOfMolesInPhase += dn; + + init(numberOfMolesInPhase, numberOfComponents, 3, 1.0); + double fold = getF(); + numberOfMolesInPhase -= 2 * dn; + getComponent(0).addMoles(-2 * dn); + init(numberOfMolesInPhase, numberOfComponents, 3, 1.0); + double fnew = getF(); + numberOfMolesInPhase += dn; + getComponent(0).addMoles(dn); + init(numberOfMolesInPhase, numberOfComponents, 3, 1.0); + // System.out.println("F " + getFpol()*1e3+ " "+ getFexp()*1e3 + " super " + + // super.getF() + " pt " +getType()); + return (fold - fnew) / (2 * dn); + } + + /** {@inheritDoc} */ + @Override + public double dFdT() { + // double dv = temperature/1000.0; + // temperature = temperature + dv; + // init(numberOfMolesInPhase, numberOfComponents, 3, pt.getValue(), 1.0); + // double fold = getF(); + // temperature = temperature - 2*dv; + // init(numberOfMolesInPhase, numberOfComponents, 3, pt.getValue(), 1.0); + // double fnew = getF(); + // temperature = temperature + dv; + // init(numberOfMolesInPhase, numberOfComponents, 3, pt.getValue(), 1.0); + // System.out.println("dFdT " + ((fold-fnew)/(2*dv)) + " super " + + // (getFpoldT()+getFexpdT())*1e3+ " pt " +getType()); + return (getFpoldT() + getFexpdT()) * 1e3; // (fold-fnew)/(2*dv); + + // // System.out.println("FT " + getFpoldT()*1e3+ " "+ getFexpdT()*1e3 + " super + // " + super.dFdT() + " pt " +getType()); + // return (getFpoldT()+getFexpdT())*1e3; + } + + /** {@inheritDoc} */ + @Override + public double dFdTdT() { + double dv = temperature / 1000.0; + temperature += dv; + init(numberOfMolesInPhase, numberOfComponents, 3, 1.0); + double fold = dFdT(); + temperature -= 2 * dv; + init(numberOfMolesInPhase, numberOfComponents, 3, 1.0); + double fnew = dFdT(); + temperature += dv; + init(numberOfMolesInPhase, numberOfComponents, 3, 1.0); + return (fold - fnew) / (2 * dv); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdV() { + double dv = getMolarVolume() / 1000.0; + + setMolarVolume(getMolarVolume() + dv); + double fold = dFdT(); + setMolarVolume(getMolarVolume() - 2 * dv); + double fnew = dFdT(); + setMolarVolume(getMolarVolume() + dv); + + return (fold - fnew) / (2 * dv); + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + // double dv = molarVolume/1000.0; + + // molarVolume = molarVolume + dv; + // double fold = getF(); + // molarVolume = molarVolume - 2*dv; + // double fnew = getF(); + // molarVolume = molarVolume + dv; + + // System.out.println("dFdV " + ((fold-fnew)/(2*dv)) + " super " + super.dFdV()+ + // " pt " +getType()); + // // return (fold-fnew)/(2*dv); + // System.out.println("dFdV " + ((getFpoldV()+getFexpdV()))*1e3*1e-5 + " super " + // + super.dFdV()+ " pt " +getType()); + // System.out.println("dFdV " + getFpoldV()+getFexpdV()*1e3*1e-5); + return (getFpoldV() + getFexpdV()) * 1e3 * 1e-5; + } + + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + double dv = getMolarVolume() / 1000.0; + + setMolarVolume(getMolarVolume() + dv); + double fold = dFdV(); + setMolarVolume(getMolarVolume() - 2 * dv); + double fnew = dFdV(); + setMolarVolume(getMolarVolume() + dv); + + // System.out.println("dFdV " + ((fold-fnew)/(2*dv)) + " super " + super.dFdV()+ + // " pt " +getType()); + return (fold - fnew) / (2 * dv); + // return (getFpoldVdV()+getFexpdVdV())*1e3*1e-10; + } + + // public double dFdVdVdV(){ + // return getFpoldVdVdV(); + // } + + /** {@inheritDoc} */ + @Override + public double molarVolume2(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + double Btemp = getB(); + setMolarVolume(1.0 / BonV * Btemp); // numberOfMolesInPhase; + int iterations = 0; + int maxIterations = 10000; + double guesPres = pressure; + double guesPresdV = 0.0; + do { + iterations++; + guesPres = -R * temperature * dFdV() + R * temperature / getMolarVolume(); + guesPresdV = -R * temperature * dFdVdV() + - getNumberOfMolesInPhase() * R * temperature / Math.pow(getTotalVolume(), 2.0); + logger.info("gues pres " + guesPres); + setMolarVolume(getMolarVolume() + - 1.0 / (guesPresdV * getNumberOfMolesInPhase()) * (guesPres - pressure) / 50.0); + Z = pressure * getMolarVolume() / (R * temperature); + } while (Math.abs((guesPres - pressure) / pressure) > 1.0e-10 && iterations < maxIterations); + // System.out.println("gues pres " + guesPres); + if (iterations >= maxIterations) { + throw new neqsim.util.exception.TooManyIterationsException(this, "molarVolume2", + maxIterations); } - - /** - *

- * getFexpdVdV. - *

- * - * @return a double - */ - public double getFexpdVdV() { - return 0.0; + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume2", "Molar Volume"); } + // System.out.println("Z: " + Z + " "+" itert: " +iterations); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); - // public double getFexpdVdVdV(){ - // return 0.0;temp - // } - - /** - *

- * getFexpdT. - *

- * - * @return a double - */ - public double getFexpdT() { - double oldTemp = 0.0, temp = 0.0, oldTemp2 = 0; - oldTemp = -((ComponentBWRS) componentArray[0]).getBEdT(0) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * (getEL() - 1.0); - oldTemp2 = -((ComponentBWRS) componentArray[0]).getBE(0) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) * (getEL() - 1.0); - temp += oldTemp; - for (int i = 1; i < OE; i++) { - oldTemp = -((ComponentBWRS) componentArray[0]).getBEdT(i) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) - * (getEL() * Math.pow(getMolarDensity(), 2.0 * i) - (2.0 * i) - / ((ComponentBWRS) componentArray[0]).getBE(i - 1) * oldTemp2) - - + - - -((ComponentBWRS) componentArray[0]).getBE(i) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) - * ((2.0 * i) / Math - .pow(((ComponentBWRS) componentArray[0]).getBE(i - 1), 2.0) - * oldTemp2) - * ((ComponentBWRS) componentArray[0]).getBEdT(i - 1) - - + - - ((ComponentBWRS) componentArray[0]).getBE(i) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) - * ((2.0 * i) / ((ComponentBWRS) componentArray[0]).getBE(i - 1) - * oldTemp); - - oldTemp2 = -((ComponentBWRS) componentArray[0]).getBE(i) - / (2.0 * ((ComponentBWRS) componentArray[0]).getGammaBWRS()) - * (getEL() * Math.pow(getMolarDensity(), 2.0 * i) - (2.0 * i) - / ((ComponentBWRS) componentArray[0]).getBE(i - 1) * oldTemp2); - - temp += oldTemp; - } - return -getFexp() / temperature + numberOfMolesInPhase / (R * temperature) * temp; - } - - /** - *

- * calcPressure2. - *

- * - * @return a double - */ - public double calcPressure2() { - // System.out.println("here............"); - double temp = 0.0; - logger.info("molar density " + getMolarDensity()); - for (int i = 0; i < OP; i++) { - temp += ((ComponentBWRS) componentArray[0]).getBP(i) - * Math.pow(getMolarDensity(), 1.0 + i); - } - for (int i = 0; i < OE; i++) { - temp += getEL() * ((ComponentBWRS) componentArray[0]).getBE(i) - * Math.pow(getMolarDensity(), 3.0 + 2.0 * i); - } - calcPVT(); - return temp / 100.0; - } - - /** - *

- * calcPVT. - *

- */ - public void calcPVT() { - double moldens[] = new double[300]; - double pres[] = new double[300]; - for (int j = 0; j < 300; j++) { - moldens[j] = 30 - j * 0.1; - double temp = 0.0; - for (int i = 0; i < OP; i++) { - temp += ((ComponentBWRS) componentArray[0]).getBP(i) - * Math.pow(moldens[j], 1.0 + i); - } - for (int i = 0; i < OE; i++) { - temp += Math - .exp(-((ComponentBWRS) componentArray[0]).getGammaBWRS() - * Math.pow(moldens[j], 2.0)) - * ((ComponentBWRS) componentArray[0]).getBE(i) - * Math.pow(moldens[j], 3.0 + 2.0 * i); - } - pres[j] = temp / 100.0; - logger.info("moldens " + moldens[j] * 16.01 + " pres " + pres[j]); - } - } - - /** {@inheritDoc} */ - @Override - public double getF() { - // System.out.println("F " + getFpol()*1e3+ " "+ getFexp()*1e3 + " super " + - // super.getF() + " phasetype " +getPhaseTypeName()); - return (getFpol() + getFexp()) * 1e3; - } - - /** - *

- * getdFdN. - *

- * - * @return a double - */ - public double getdFdN() { - double dn = numberOfMolesInPhase / 100.0; - getComponent(0).addMoles(dn); - numberOfMolesInPhase += dn; - - init(numberOfMolesInPhase, numberOfComponents, 3, phaseType, 1.0); - double fold = getF(); - numberOfMolesInPhase -= 2 * dn; - getComponent(0).addMoles(-2 * dn); - init(numberOfMolesInPhase, numberOfComponents, 3, phaseType, 1.0); - double fnew = getF(); - numberOfMolesInPhase += dn; - getComponent(0).addMoles(dn); - init(numberOfMolesInPhase, numberOfComponents, 3, phaseType, 1.0); - // System.out.println("F " + getFpol()*1e3+ " "+ getFexp()*1e3 + " super " + - // super.getF() + " phasetype " +getPhaseTypeName()); - return (fold - fnew) / (2 * dn); - } - - /** {@inheritDoc} */ - @Override - public double dFdT() { - // double dv = temperature/1000.0; - // temperature = temperature + dv; - // init(numberOfMolesInPhase, numberOfComponents, 3, phaseType, 1.0); - // double fold = getF(); - // temperature = temperature - 2*dv; - // init(numberOfMolesInPhase, numberOfComponents, 3, phaseType, 1.0); - // double fnew = getF(); - // temperature = temperature + dv; - // init(numberOfMolesInPhase, numberOfComponents, 3, phaseType, 1.0); - // System.out.println("dFdT " + ((fold-fnew)/(2*dv)) + " super " + - // (getFpoldT()+getFexpdT())*1e3+ " phasetype " +getPhaseTypeName()); - return (getFpoldT() + getFexpdT()) * 1e3;// (fold-fnew)/(2*dv); - - // // System.out.println("FT " + getFpoldT()*1e3+ " "+ getFexpdT()*1e3 + " super - // " + super.dFdT() + " phasetype " +getPhaseTypeName()); - // return (getFpoldT()+getFexpdT())*1e3; - } - - /** {@inheritDoc} */ - @Override - public double dFdTdT() { - double dv = temperature / 1000.0; - temperature += dv; - init(numberOfMolesInPhase, numberOfComponents, 3, phaseType, 1.0); - double fold = dFdT(); - temperature -= 2 * dv; - init(numberOfMolesInPhase, numberOfComponents, 3, phaseType, 1.0); - double fnew = dFdT(); - temperature += dv; - init(numberOfMolesInPhase, numberOfComponents, 3, phaseType, 1.0); - return (fold - fnew) / (2 * dv); - } - - /** {@inheritDoc} */ - @Override - public double dFdTdV() { - double dv = getMolarVolume() / 1000.0; - - setMolarVolume(getMolarVolume() + dv); - double fold = dFdT(); - setMolarVolume(getMolarVolume() - 2 * dv); - double fnew = dFdT(); - setMolarVolume(getMolarVolume() + dv); - - return (fold - fnew) / (2 * dv); - } - - /** {@inheritDoc} */ - @Override - public double dFdV() { - // double dv = molarVolume/1000.0; - - // molarVolume = molarVolume + dv; - // double fold = getF(); - // molarVolume = molarVolume - 2*dv; - // double fnew = getF(); - // molarVolume = molarVolume + dv; - - // System.out.println("dFdV " + ((fold-fnew)/(2*dv)) + " super " + super.dFdV()+ - // " phasetype " +getPhaseTypeName()); - // // return (fold-fnew)/(2*dv); - // System.out.println("dFdV " + ((getFpoldV()+getFexpdV()))*1e3*1e-5 + " super " - // + super.dFdV()+ " phasetype " +getPhaseTypeName()); - // System.out.println("dFdV " + getFpoldV()+getFexpdV()*1e3*1e-5); - return (getFpoldV() + getFexpdV()) * 1e3 * 1e-5; - } - - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - double dv = getMolarVolume() / 1000.0; - - setMolarVolume(getMolarVolume() + dv); - double fold = dFdV(); - setMolarVolume(getMolarVolume() - 2 * dv); - double fnew = dFdV(); - setMolarVolume(getMolarVolume() + dv); - - // System.out.println("dFdV " + ((fold-fnew)/(2*dv)) + " super " + super.dFdV()+ - // " phasetype " +getPhaseTypeName()); - return (fold - fnew) / (2 * dv); - // return (getFpoldVdV()+getFexpdVdV())*1e3*1e-10; - } - - // public double dFdVdVdV(){ - // return getFpoldVdVdV(); - // } - - /** {@inheritDoc} */ - @Override - public double molarVolume2(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phase == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - double Btemp = getB(); - setMolarVolume(1.0 / BonV * Btemp);// numberOfMolesInPhase; - int iterations = 0; - int maxIterations = 10000; - double guesPres = pressure; - double guesPresdV = 0.0; - do { - iterations++; - guesPres = -R * temperature * dFdV() + R * temperature / getMolarVolume(); - guesPresdV = -R * temperature * dFdVdV() - - getNumberOfMolesInPhase() * R * temperature / Math.pow(getTotalVolume(), 2.0); - logger.info("gues pres " + guesPres); - setMolarVolume(getMolarVolume() - 1.0 / (guesPresdV * getNumberOfMolesInPhase()) - * (guesPres - pressure) / 50.0); - Z = pressure * getMolarVolume() / (R * temperature); - } while (Math.abs((guesPres - pressure) / pressure) > 1.0e-10 - && iterations < maxIterations); - // System.out.println("gues pres " + guesPres); - if (iterations >= maxIterations) { - throw new neqsim.util.exception.TooManyIterationsException(this, "molarVolume2", - maxIterations); - } - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume2", "Molar Volume"); - } - // System.out.println("Z: " + Z + " "+" itert: " +iterations); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); - - return getMolarVolume(); - } + return getMolarVolume(); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseCPAInterface.java b/src/main/java/neqsim/thermo/phase/PhaseCPAInterface.java index 33c80fa3bb..8db43c571e 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseCPAInterface.java +++ b/src/main/java/neqsim/thermo/phase/PhaseCPAInterface.java @@ -11,70 +11,70 @@ * @version $Id: $Id */ public interface PhaseCPAInterface extends PhaseEosInterface { - /** - *

- * Getter for property hcpatot. - *

- * - * @return a double - */ - double getHcpatot(); + /** + *

+ * Getter for property hcpatot. + *

+ * + * @return a double + */ + double getHcpatot(); - /** - *

- * getCrossAssosiationScheme. - *

- * - * @param comp1 a int - * @param comp2 a int - * @param site1 a int - * @param site2 a int - * @return a int - */ - int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2); + /** + *

+ * getCrossAssosiationScheme. + *

+ * + * @param comp1 a int + * @param comp2 a int + * @param site1 a int + * @param site2 a int + * @return a int + */ + int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2); - /** - *

- * getGcpa. - *

- * - * @return a double - */ - public double getGcpa(); + /** + *

+ * getGcpa. + *

+ * + * @return a double + */ + public double getGcpa(); - /** - *

- * getGcpav. - *

- * - * @return a double - */ - public double getGcpav(); + /** + *

+ * getGcpav. + *

+ * + * @return a double + */ + public double getGcpav(); - /** - *

- * getTotalNumberOfAccociationSites. - *

- * - * @return a int - */ - public int getTotalNumberOfAccociationSites(); + /** + *

+ * getTotalNumberOfAccociationSites. + *

+ * + * @return a int + */ + public int getTotalNumberOfAccociationSites(); - /** - *

- * setTotalNumberOfAccociationSites. - *

- * - * @param totalNumberOfAccociationSites a int - */ - public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites); + /** + *

+ * setTotalNumberOfAccociationSites. + *

+ * + * @param totalNumberOfAccociationSites a int + */ + public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites); - /** - *

- * getCpamix. - *

- * - * @return a {@link neqsim.thermo.mixingRule.CPAMixingInterface} object - */ - public CPAMixingInterface getCpamix(); + /** + *

+ * getCpamix. + *

+ * + * @return a {@link neqsim.thermo.mixingRule.CPAMixingInterface} object + */ + public CPAMixingInterface getCpamix(); } diff --git a/src/main/java/neqsim/thermo/phase/PhaseCSPsrkEos.java b/src/main/java/neqsim/thermo/phase/PhaseCSPsrkEos.java index 78e5feb34b..79d1d28e25 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseCSPsrkEos.java +++ b/src/main/java/neqsim/thermo/phase/PhaseCSPsrkEos.java @@ -12,290 +12,287 @@ * @version $Id: $Id */ public class PhaseCSPsrkEos extends PhaseSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double f_scale_mix = 0; - double h_scale_mix = 0; - PhaseSrkEos refBWRSPhase = null; - double brefBWRSPhase = 0; - double acrefBWRSPhase = 0; - double mrefBWRSPhase = 0; + double f_scale_mix = 0; + double h_scale_mix = 0; + PhaseSrkEos refBWRSPhase = null; + double brefBWRSPhase = 0; + double acrefBWRSPhase = 0; + double mrefBWRSPhase = 0; - /** - *

- * Constructor for PhaseCSPsrkEos. - *

- */ - public PhaseCSPsrkEos() { - super(); - refBWRSPhase = new PhaseBWRSEos(); - // refBWRSPhase = new PhaseSrkEos(); - refBWRSPhase.addcomponent("methane", 1.0, 1.0, 0); - refBWRSPhase.calcMolarVolume(false); - brefBWRSPhase = (Math.pow(2.0, 1.0 / 3.0) - 1.0) / 3.0 * R - * refBWRSPhase.getComponent(0).getTC() / refBWRSPhase.getComponent(0).getPC(); - mrefBWRSPhase = (0.48 + 1.574 * refBWRSPhase.getComponent(0).getAcentricFactor() - - 0.175 * refBWRSPhase.getComponent(0).getAcentricFactor() - * refBWRSPhase.getComponent(0).getAcentricFactor()); - acrefBWRSPhase = 1.0 / (9.0 * (Math.pow(2.0, 1.0 / 3.0) - 1.0)) * R * R - * refBWRSPhase.getComponent(0).getTC() * refBWRSPhase.getComponent(0).getTC() - / refBWRSPhase.getComponent(0).getPC(); - } - - /** {@inheritDoc} */ - @Override - public PhaseCSPsrkEos clone() { - PhaseCSPsrkEos clonedPhase = null; - try { - clonedPhase = (PhaseCSPsrkEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for PhaseCSPsrkEos. + *

+ */ + public PhaseCSPsrkEos() { + super(); + refBWRSPhase = new PhaseBWRSEos(); + // refBWRSPhase = new PhaseSrkEos(); + refBWRSPhase.addComponent("methane", 1.0, 1.0, 0); + refBWRSPhase.calcMolarVolume(false); + brefBWRSPhase = (Math.pow(2.0, 1.0 / 3.0) - 1.0) / 3.0 * R + * refBWRSPhase.getComponent(0).getTC() / refBWRSPhase.getComponent(0).getPC(); + mrefBWRSPhase = (0.48 + 1.574 * refBWRSPhase.getComponent(0).getAcentricFactor() + - 0.175 * refBWRSPhase.getComponent(0).getAcentricFactor() + * refBWRSPhase.getComponent(0).getAcentricFactor()); + acrefBWRSPhase = 1.0 / (9.0 * (Math.pow(2.0, 1.0 / 3.0) - 1.0)) * R * R + * refBWRSPhase.getComponent(0).getTC() * refBWRSPhase.getComponent(0).getTC() + / refBWRSPhase.getComponent(0).getPC(); + } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseCSPsrkEos clone() { + PhaseCSPsrkEos clonedPhase = null; + try { + clonedPhase = (PhaseCSPsrkEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentCSPsrk(componentName, moles, molesInPhase, compNumber); - ((ComponentCSPsrk) componentArray[compNumber]).setRefPhaseBWRS(this); - } + return clonedPhase; + } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - double oldtemp = temperature; - if (type == 0) { - refBWRSPhase.init(1.0, 1, 0, phase, 1.0); - refBWRSPhase.init(1.0, 1, 3, phase, 1.0); - } else { - refBWRSPhase.init(1.0, 1, 3, phase, 1.0); - } - do { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - oldtemp = refBWRSPhase.getTemperature(); - h_scale_mix = getNumberOfMolesInPhase() * getb() / brefBWRSPhase; - double term1 = getA() / ((ComponentEosInterface) refBWRSPhase.getComponent(0)).getaT(); - f_scale_mix = term1 / h_scale_mix; - refBWRSPhase.setTemperature(temperature * numberOfMolesInPhase / f_scale_mix); - refBWRSPhase.setMolarVolume(getTotalVolume() / h_scale_mix); - // refBWRSPhase.setPressure(refBWRSPhase.calcPressure()); - refBWRSPhase.setPressure(pressure * h_scale_mix / f_scale_mix); - refBWRSPhase.init(1.0, 1, type, phase, 1.0); - } while (Math.abs((oldtemp - refBWRSPhase.getTemperature()) / oldtemp) > 1e-8); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentCSPsrk(name, moles, molesInPhase, compNumber); + ((ComponentCSPsrk) componentArray[compNumber]).setRefPhaseBWRS(this); + } - /** {@inheritDoc} */ - @Override - public double getF() { - return f_scale_mix * refBWRSPhase.getF() / refBWRSPhase.getNumberOfMolesInPhase() - * refBWRSPhase.getTemperature() / getTemperature(); + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + double oldtemp = temperature; + if (initType == 0) { + refBWRSPhase.init(1.0, 1, 0, pt, 1.0); + refBWRSPhase.init(1.0, 1, 3, pt, 1.0); + } else { + refBWRSPhase.init(1.0, 1, 3, pt, 1.0); } + do { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + oldtemp = refBWRSPhase.getTemperature(); + h_scale_mix = getNumberOfMolesInPhase() * getb() / brefBWRSPhase; + double term1 = getA() / ((ComponentEosInterface) refBWRSPhase.getComponent(0)).getaT(); + f_scale_mix = term1 / h_scale_mix; + refBWRSPhase.setTemperature(temperature * numberOfMolesInPhase / f_scale_mix); + refBWRSPhase.setMolarVolume(getTotalVolume() / h_scale_mix); + // refBWRSPhase.setPressure(refBWRSPhase.calcPressure()); + refBWRSPhase.setPressure(pressure * h_scale_mix / f_scale_mix); + refBWRSPhase.init(1.0, 1, initType, pt, 1.0); + } while (Math.abs((oldtemp - refBWRSPhase.getTemperature()) / oldtemp) > 1e-8); + } - /** {@inheritDoc} */ - @Override - public double dFdV() { - return (f_scale_mix * refBWRSPhase.dFdV() / refBWRSPhase.getNumberOfMolesInPhase() - / h_scale_mix) * refBWRSPhase.getTemperature() / getTemperature(); - } + /** {@inheritDoc} */ + @Override + public double getF() { + return f_scale_mix * refBWRSPhase.getF() / refBWRSPhase.getNumberOfMolesInPhase() + * refBWRSPhase.getTemperature() / getTemperature(); + } - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return (f_scale_mix * refBWRSPhase.dFdVdV() / refBWRSPhase.getNumberOfMolesInPhase() - / h_scale_mix / h_scale_mix) * refBWRSPhase.getTemperature() / getTemperature(); - } + /** {@inheritDoc} */ + @Override + public double dFdV() { + return (f_scale_mix * refBWRSPhase.dFdV() / refBWRSPhase.getNumberOfMolesInPhase() + / h_scale_mix) * refBWRSPhase.getTemperature() / getTemperature(); + } - /** {@inheritDoc} */ - @Override - public double dFdVdVdV() { - return (f_scale_mix * refBWRSPhase.dFdVdVdV() / refBWRSPhase.getNumberOfMolesInPhase() - / h_scale_mix / h_scale_mix / h_scale_mix) * refBWRSPhase.getTemperature() - / getTemperature(); - } + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return (f_scale_mix * refBWRSPhase.dFdVdV() / refBWRSPhase.getNumberOfMolesInPhase() + / h_scale_mix / h_scale_mix) * refBWRSPhase.getTemperature() / getTemperature(); + } - /** - * Getter for property f_scale_mix. - * - * @return Value of property f_scale_mix. - */ - public double getF_scale_mix() { - return f_scale_mix; - } + /** {@inheritDoc} */ + @Override + public double dFdVdVdV() { + return (f_scale_mix * refBWRSPhase.dFdVdVdV() / refBWRSPhase.getNumberOfMolesInPhase() + / h_scale_mix / h_scale_mix / h_scale_mix) * refBWRSPhase.getTemperature() + / getTemperature(); + } - // 6-8 feb. + /** + * Getter for property f_scale_mix. + * + * @return Value of property f_scale_mix. + */ + public double getF_scale_mix() { + return f_scale_mix; + } - /** - * Setter for property f_scale_mix. - * - * @param f_scale_mix New value of property f_scale_mix. - */ - public void setF_scale_mix(double f_scale_mix) { - this.f_scale_mix = f_scale_mix; - } + // 6-8 feb. - /** - * Getter for property h_scale_mix. - * - * @return Value of property h_scale_mix. - */ - public double getH_scale_mix() { - return h_scale_mix; - } + /** + * Setter for property f_scale_mix. + * + * @param f_scale_mix New value of property f_scale_mix. + */ + public void setF_scale_mix(double f_scale_mix) { + this.f_scale_mix = f_scale_mix; + } - /** - * Setter for property h_scale_mix. - * - * @param h_scale_mix New value of property h_scale_mix. - */ - public void setH_scale_mix(double h_scale_mix) { - this.h_scale_mix = h_scale_mix; - } + /** + * Getter for property h_scale_mix. + * + * @return Value of property h_scale_mix. + */ + public double getH_scale_mix() { + return h_scale_mix; + } - /** - * Getter for property brefBWRSPhase. - * - * @return Value of property brefBWRSPhase. - */ - public double getBrefBWRSPhase() { - return brefBWRSPhase; - } + /** + * Setter for property h_scale_mix. + * + * @param h_scale_mix New value of property h_scale_mix. + */ + public void setH_scale_mix(double h_scale_mix) { + this.h_scale_mix = h_scale_mix; + } - /** - * Setter for property brefBWRSPhase. - * - * @param brefBWRSPhase New value of property brefBWRSPhase. - */ - public void setBrefBWRSPhase(double brefBWRSPhase) { - this.brefBWRSPhase = brefBWRSPhase; - } + /** + * Getter for property brefBWRSPhase. + * + * @return Value of property brefBWRSPhase. + */ + public double getBrefBWRSPhase() { + return brefBWRSPhase; + } - /** - * Getter for property acrefBWRSPhase. - * - * @return Value of property acrefBWRSPhase. - */ - public double getAcrefBWRSPhase() { - return acrefBWRSPhase; - } + /** + * Setter for property brefBWRSPhase. + * + * @param brefBWRSPhase New value of property brefBWRSPhase. + */ + public void setBrefBWRSPhase(double brefBWRSPhase) { + this.brefBWRSPhase = brefBWRSPhase; + } - /** - * Setter for property acrefBWRSPhase. - * - * @param acrefBWRSPhase New value of property acrefBWRSPhase. - */ - public void setAcrefBWRSPhase(double acrefBWRSPhase) { - this.acrefBWRSPhase = acrefBWRSPhase; - } + /** + * Getter for property acrefBWRSPhase. + * + * @return Value of property acrefBWRSPhase. + */ + public double getAcrefBWRSPhase() { + return acrefBWRSPhase; + } - /** - * Getter for property refBWRSPhase. - * - * @return Value of property refBWRSPhase. - */ - public neqsim.thermo.phase.PhaseSrkEos getRefBWRSPhase() { - return refBWRSPhase; - } + /** + * Setter for property acrefBWRSPhase. + * + * @param acrefBWRSPhase New value of property acrefBWRSPhase. + */ + public void setAcrefBWRSPhase(double acrefBWRSPhase) { + this.acrefBWRSPhase = acrefBWRSPhase; + } - /** - * Setter for property refBWRSPhase. - * - * @param refBWRSPhase New value of property refBWRSPhase. - */ - public void setRefBWRSPhase(neqsim.thermo.phase.PhaseBWRSEos refBWRSPhase) { - this.refBWRSPhase = refBWRSPhase; - } + /** + * Getter for property refBWRSPhase. + * + * @return Value of property refBWRSPhase. + */ + public neqsim.thermo.phase.PhaseSrkEos getRefBWRSPhase() { + return refBWRSPhase; + } - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phase == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - if (BonV < 0) { - BonV = 0.0; - } - if (BonV > 1.0) { - BonV = 1.0; - } - double BonVold = BonV; - double Btemp = 0, Dtemp = 0, h = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - Dtemp = getA(); + /** + * Setter for property refBWRSPhase. + * + * @param refBWRSPhase New value of property refBWRSPhase. + */ + public void setRefBWRSPhase(neqsim.thermo.phase.PhaseBWRSEos refBWRSPhase) { + this.refBWRSPhase = refBWRSPhase; + } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - int maxIterations = 1000; - do { - iterations++; - BonVold = BonV; - h = BonV + Btemp * gV() + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fv() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 - Btemp / (BonV * BonV) * (Btemp * gVV() - + Btemp * Dtemp * fVV() / (numberOfMolesInPhase * temperature)); - fvvv = 1.0 / (R * Btemp * (delta1 - delta2)) - * (2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume() + Btemp * delta1, 3.0) - - 2.0 / Math.pow( - numberOfMolesInPhase * getMolarVolume() + Btemp * delta2, 3.0)); - gvvv = 2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume() - Btemp, 3.0) - - 2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume(), 3.0); - dhh = 2.0 * Btemp / Math.pow(BonV, 3.0) - * (Btemp * gVV() + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fVV()) - + Btemp * Btemp / Math.pow(BonV, 4.0) * (Btemp * gvvv - + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fvvv); + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + if (BonV < 0) { + BonV = 0.0; + } + if (BonV > 1.0) { + BonV = 1.0; + } - d1 = -h / dh; - d2 = -dh / dhh; + double Btemp = getB(); + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += d1 * (1.0 + 0.5 * -1.0); - } else if (d1 / d2 > 1) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV += 0; - } - } + double Dtemp = getA(); + double BonVold = 0; + int iterations = 0; + int maxIterations = 1000; + do { + iterations++; + BonVold = BonV; + double h = BonV + Btemp * gV() + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fv() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + double dh = 1.0 - Btemp / (BonV * BonV) + * (Btemp * gVV() + Btemp * Dtemp * fVV() / (numberOfMolesInPhase * temperature)); + double fvvv = 1.0 / (R * Btemp * (delta1 - delta2)) + * (2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume() + Btemp * delta1, 3.0) + - 2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume() + Btemp * delta2, 3.0)); + double gvvv = 2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume() - Btemp, 3.0) + - 2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume(), 3.0); + double dhh = 2.0 * Btemp / Math.pow(BonV, 3.0) + * (Btemp * gVV() + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fVV()) + + Btemp * Btemp / Math.pow(BonV, 4.0) + * (Btemp * gvvv + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fvvv); - if (BonV > 1) { - BonV = 1.0 - 1.0e-16; - BonVold = 10; - } - if (BonV < 0) { - BonV = 1.0e-16; - BonVold = 10; - } + double d1 = -h / dh; + double d2 = -dh / dhh; - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - } while (Math.abs(BonV - BonVold) > 1.0e-10 && iterations < maxIterations); - // molarVolume = 1.0/BonV*Btemp/numberOfMolesInPhase; - // Z = pressure*molarVolume/(R*temperature); - // System.out.println("BonV: " + BonV + " " + h + " " +dh + " B " + Btemp + " D - // " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); - if (iterations >= maxIterations) { - throw new neqsim.util.exception.TooManyIterationsException(this, "molarVolume", - maxIterations); - } - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += d1 * (1.0 + 0.5 * -1.0); + } else if (d1 / d2 > 1) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV += 0; } - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); + } - return getMolarVolume(); + if (BonV > 1) { + BonV = 1.0 - 1.0e-16; + BonVold = 10; + } + if (BonV < 0) { + BonV = 1.0e-16; + BonVold = 10; + } + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while (Math.abs(BonV - BonVold) > 1.0e-10 && iterations < maxIterations); + // molarVolume = 1.0/BonV*Btemp/numberOfMolesInPhase; + // Z = pressure*molarVolume/(R*temperature); + // System.out.println("BonV: " + BonV + " " + h + " " +dh + " B " + Btemp + " D + // " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); + if (iterations >= maxIterations) { + throw new neqsim.util.exception.TooManyIterationsException(this, "molarVolume", + maxIterations); + } + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); } + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); + + return getMolarVolume(); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseDefault.java b/src/main/java/neqsim/thermo/phase/PhaseDefault.java index ec0ab30008..cd93312e95 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseDefault.java +++ b/src/main/java/neqsim/thermo/phase/PhaseDefault.java @@ -11,87 +11,84 @@ * @version $Id: $Id */ public class PhaseDefault extends Phase { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - protected ComponentInterface defComponent = null; + protected ComponentInterface defComponent = null; - /** - *

- * Constructor for PhaseDefault. - *

- */ - public PhaseDefault() {} + /** + *

+ * Constructor for PhaseDefault. + *

+ */ + public PhaseDefault() {} - /** - *

- * Constructor for PhaseDefault. - *

- * - * @param comp a {@link neqsim.thermo.component.ComponentInterface} object - */ - public PhaseDefault(ComponentInterface comp) { - super(); - defComponent = comp; - } + /** + *

+ * Constructor for PhaseDefault. + *

+ * + * @param comp a {@link neqsim.thermo.component.ComponentInterface} object + */ + public PhaseDefault(ComponentInterface comp) { + super(); + defComponent = comp; + } - /** - *

- * setComponentType. - *

- * - * @param comp a {@link neqsim.thermo.component.ComponentInterface} object - */ - public void setComponentType(ComponentInterface comp) { - defComponent = comp; - } + /** + *

+ * setComponentType. + *

+ * + * @param comp a {@link neqsim.thermo.component.ComponentInterface} object + */ + public void setComponentType(ComponentInterface comp) { + defComponent = comp; + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(moles); - try { - componentArray[compNumber] = - defComponent.getClass().getDeclaredConstructor().newInstance(); - } catch (Exception e) { - logger.error("err " + e.toString()); - } - componentArray[compNumber].createComponent(componentName, moles, molesInPhase, compNumber); + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, compNumber); + try { + componentArray[compNumber] = defComponent.getClass().getDeclaredConstructor().newInstance(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + componentArray[compNumber].createComponent(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + throw new UnsupportedOperationException("Unimplemented method 'molarVolume'"); + } - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - return 1.0; - } + /** {@inheritDoc} */ + @Override + public void resetMixingRule(int type) {} - /** {@inheritDoc} */ - @Override - public void resetMixingRule(int type) {} + /** {@inheritDoc} */ + @Override + public double getMolarVolume() { + throw new UnsupportedOperationException("Unimplemented method 'getMolarVolume'"); + } - /** {@inheritDoc} */ - @Override - public double getMolarVolume() { - return 1.0; + /** {@inheritDoc} */ + @Override + public double getGibbsEnergy() { + double val = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + val += + getComponent(i).getNumberOfMolesInPhase() * (getComponent(i).getLogFugacityCoefficient()); // +Math.log(getComponent(i).getx()*getComponent(i).getAntoineVaporPressure(temperature))); } + return R * temperature * ((val) + Math.log(pressure) * numberOfMolesInPhase); + } - /** {@inheritDoc} */ - @Override - public double getGibbsEnergy() { - double val = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - val += getComponent(i).getNumberOfMolesInPhase() - * (getComponent(i).getLogFugacityCoefficient());// +Math.log(getComponent(i).getx()*getComponent(i).getAntoineVaporPressure(temperature))); - } - return R * temperature * ((val) + Math.log(pressure) * numberOfMolesInPhase); - } + /** {@inheritDoc} */ + @Override + public double getSoundSpeed() { + return Double.NaN; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseDesmukhMather.java b/src/main/java/neqsim/thermo/phase/PhaseDesmukhMather.java index 4dbe031ddb..b40d6006e4 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseDesmukhMather.java +++ b/src/main/java/neqsim/thermo/phase/PhaseDesmukhMather.java @@ -4,6 +4,8 @@ import org.apache.logging.log4j.Logger; import neqsim.thermo.component.ComponentDesmukhMather; import neqsim.thermo.component.ComponentGEInterface; +import neqsim.util.exception.IsNaNException; +import neqsim.util.exception.TooManyIterationsException; /** *

@@ -14,261 +16,276 @@ * @version $Id: $Id */ public class PhaseDesmukhMather extends PhaseGE { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseDesmukhMather.class); - double GE = 0.0; - double[][] aij; - double[][] bij; + double GE = 0.0; + double[][] aij; + double[][] bij; - static Logger logger = LogManager.getLogger(PhaseDesmukhMather.class); + /** + *

+ * Constructor for PhaseDesmukhMather. + *

+ */ + public PhaseDesmukhMather() { + super(); + } - /** - *

- * Constructor for PhaseDesmukhMather. - *

- */ - public PhaseDesmukhMather() { - super(); - } - - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentDesmukhMather(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentDesmukhMather(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int initType, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, initType, phase, beta); - if (initType != 0) { - phaseTypeName = phase == 0 ? "liquid" : "gas"; - } - setMolarVolume(0.980e-3 * getMolarMass() * 1e5); - Z = pressure * getMolarVolume() / (R * temperature); + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + if (initType != 0) { + setType(pt); } + setMolarVolume(0.980e-3 * getMolarMass() * 1e5); + Z = pressure * getMolarVolume() / (R * temperature); + } - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - this.aij = new double[numberOfComponents][numberOfComponents]; - this.bij = new double[numberOfComponents][numberOfComponents]; - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - for (int k = 0; k < getNumberOfComponents(); k++) { - String component_name = getComponents()[k].getComponentName(); + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + this.aij = new double[numberOfComponents][numberOfComponents]; + this.bij = new double[numberOfComponents][numberOfComponents]; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + for (int k = 0; k < getNumberOfComponents(); k++) { + String component_name = getComponents()[k].getComponentName(); - for (int l = k; l < getNumberOfComponents(); l++) { - try { - if (k == l) { - if (getComponents()[l].getComponentName().equals("MDEA") - && getComponents()[k].getComponentName().equals("MDEA")) { - aij[k][l] = -0.0828487; - this.aij[l][k] = this.aij[k][l]; - } - } else { - // int templ = l, tempk = k; - // database = new util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = database - .getResultSet("SELECT * FROM inter WHERE (comp1='" + component_name - + "' AND comp2='" + getComponents()[l].getComponentName() - + "') OR (comp1='" + getComponents()[l].getComponentName() - + "' AND comp2='" + component_name + "')"); - dataSet.next(); - - if (dataSet.getString("comp1").trim() - .equals(getComponents()[l].getComponentName())) { - // templ = k; - // tempk = l; - } - this.aij[k][l] = Double.parseDouble(dataSet.getString("aijDesMath")); - this.bij[k][l] = Double.parseDouble(dataSet.getString("bijDesMath")); - this.aij[l][k] = this.aij[k][l]; - this.bij[l][k] = this.bij[k][l]; + for (int l = k; l < getNumberOfComponents(); l++) { + if (k == l) { + if (getComponents()[l].getComponentName().equals("MDEA") + && getComponents()[k].getComponentName().equals("MDEA")) { + aij[k][l] = -0.0828487; + this.aij[l][k] = this.aij[k][l]; + } + } else { + try (java.sql.ResultSet dataSet = + database.getResultSet("SELECT * FROM inter WHERE (comp1='" + component_name + + "' AND comp2='" + getComponents()[l].getComponentName() + "') OR (comp1='" + + getComponents()[l].getComponentName() + "' AND comp2='" + component_name + + "')");) { + dataSet.next(); - // System.out.println("aij " + this.aij[l][k]); - dataSet.close(); - // database.getConnection().close(); - } - } catch (Exception e) { - String err = e.toString(); - logger.info("comp names " + component_name); - logger.error(err); - } + // if + // (dataSet.getString("comp1").trim().equals(getComponents()[l].getComponentName())) { + // templ = k; + // tempk = l; + // } + this.aij[k][l] = Double.parseDouble(dataSet.getString("aijDesMath")); + this.bij[k][l] = Double.parseDouble(dataSet.getString("bijDesMath")); + this.aij[l][k] = this.aij[k][l]; + this.bij[l][k] = this.bij[k][l]; + } catch (Exception ex) { + logger.info("comp names " + component_name); + logger.error(ex.getMessage(), ex); } + } } + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } - /** - *

- * Setter for the field aij. - *

- * - * @param alpha an array of {@link double} objects - */ - public void setAij(double[][] alpha) { - for (int i = 0; i < alpha.length; i++) { - System.arraycopy(aij[i], 0, this.aij[i], 0, alpha[0].length); - } - } + /** {@inheritDoc} */ + @Override + public void setAlpha(double[][] alpha) { + throw new UnsupportedOperationException("Unimplemented method 'setAlpha'"); + } - /** - *

- * Setter for the field bij. - *

- * - * @param Dij an array of {@link double} objects - */ - public void setBij(double[][] Dij) { - for (int i = 0; i < Dij.length; i++) { - System.arraycopy(bij[i], 0, this.bij[i], 0, Dij[0].length); - } - } + /** + *

+ * Getter for the field aij. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getAij(int i, int j) { + return aij[i][j]; + } - /** - *

- * getBetaDesMatij. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getBetaDesMatij(int i, int j) { - return aij[i][j] + bij[i][j] * temperature; + /** + *

+ * Setter for the field aij. + *

+ * + * @param alpha an array of type double + */ + public void setAij(double[][] alpha) { + for (int i = 0; i < alpha.length; i++) { + System.arraycopy(aij[i], 0, this.aij[i], 0, alpha[0].length); } + } - /** - *

- * Getter for the field aij. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getAij(int i, int j) { - return aij[i][j]; + /** + *

+ * Setter for the field bij. + *

+ * + * @param Bij an array of type double + */ + public void setBij(double[][] Bij) { + for (int i = 0; i < Bij.length; i++) { + System.arraycopy(bij[i], 0, this.bij[i], 0, Bij[0].length); } + } - /** - *

- * Getter for the field bij. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getBij(int i, int j) { - return bij[i][j]; - } + /** {@inheritDoc} */ + @Override + public void setDij(double[][] Dij) { + throw new UnsupportedOperationException("Unimplemented method 'setDij'"); + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - GE = 0; - for (int i = 0; i < numberOfComponents; i++) { - GE += phase.getComponents()[i].getx() - * Math.log(((ComponentDesmukhMather) componentArray[i]).getGamma(phase, - numberOfComponents, temperature, pressure, phasetype)); - } - // System.out.println("ge " + GE); - return R * temperature * numberOfMolesInPhase * GE;// phase.getNumberOfMolesInPhase()* - } + /** {@inheritDoc} */ + @Override + public void setDijT(double[][] DijT) { + throw new UnsupportedOperationException("Unimplemented method 'setDijT'"); + } - /** {@inheritDoc} */ - @Override - public double getGibbsEnergy() { - return R * temperature * numberOfMolesInPhase * (GE + Math.log(pressure)); - } + /** + *

+ * getBetaDesMatij. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getBetaDesMatij(int i, int j) { + return aij[i][j] + bij[i][j] * temperature; + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy() { - // double GE = getExessGibbsEnergy(this, numberOfComponents, temperature, - // pressure, phaseType); - return GE; - } + /** + *

+ * Getter for the field bij. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getBij(int i, int j) { + return bij[i][j]; + } - /** {@inheritDoc} */ - @Override - public double getActivityCoefficient(int k, int p) { - return ((ComponentGEInterface) getComponent(k)).getGamma(); - } + /** {@inheritDoc} */ + @Override + public double getGibbsEnergy() { + return R * temperature * numberOfMolesInPhase * (GE + Math.log(pressure)); + } - /** {@inheritDoc} */ - @Override - public double getActivityCoefficient(int k) { - return ((ComponentGEInterface) getComponent(k)).getGamma(); - } + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy() { + // double GE = getExcessGibbsEnergy(this, numberOfComponents, temperature, + // pressure, pt); + return GE; + } - /** - *

- * getIonicStrength. - *

- * - * @return a double - */ - public double getIonicStrength() { - double ionStrength = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - ionStrength += getComponent(i).getMolality(this) - * Math.pow(getComponent(i).getIonicCharge(), 2.0); - // getComponent(i).getMolarity(this)*Math.pow(getComponent(i).getIonicCharge(),2.0); - } - return 0.5 * ionStrength; + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + GE = 0; + for (int i = 0; i < numberOfComponents; i++) { + GE += phase.getComponents()[i].getx() * Math.log(((ComponentDesmukhMather) componentArray[i]) + .getGamma(phase, numberOfComponents, temperature, pressure, pt)); } + return R * temperature * numberOfMolesInPhase * GE; + } - /** - *

- * getSolventWeight. - *

- * - * @return a double - */ - public double getSolventWeight() { - double moles = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (getComponent(i).getReferenceStateType().equals("solvent")) { - moles += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getMolarMass(); - } - } - return moles; + /** {@inheritDoc} */ + @Override + public double getActivityCoefficient(int k, int p) { + return ((ComponentGEInterface) getComponent(k)).getGamma(); + } + + /** {@inheritDoc} */ + @Override + public double getActivityCoefficient(int k) { + return ((ComponentGEInterface) getComponent(k)).getGamma(); + } + + /** + *

+ * getIonicStrength. + *

+ * + * @return a double + */ + public double getIonicStrength() { + double ionStrength = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + ionStrength += + getComponent(i).getMolality(this) * Math.pow(getComponent(i).getIonicCharge(), 2.0); + // getComponent(i).getMolarity(this)*Math.pow(getComponent(i).getIonicCharge(),2.0); } + return 0.5 * ionStrength; + } - /** - *

- * getSolventDensity. - *

- * - * @return a double - */ - public double getSolventDensity() { - return 1020.0; + /** + *

+ * getSolventWeight. + *

+ * + * @return a double + */ + public double getSolventWeight() { + double moles = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (getComponent(i).getReferenceStateType().equals("solvent")) { + moles += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getMolarMass(); + } } + return moles; + } - /** - *

- * getSolventMolarMass. - *

- * - * @return a double - */ - public double getSolventMolarMass() { - double molesMass = 0.0, moles = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (getComponent(i).getReferenceStateType().equals("solvent")) { - molesMass += - getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getMolarMass(); - moles = getComponent(i).getNumberOfMolesInPhase(); - } - } - return molesMass / moles; + /** + *

+ * getSolventDensity. + *

+ * + * @return a double + */ + public double getSolventDensity() { + return 1020.0; + } + + /** + *

+ * getSolventMolarMass. + *

+ * + * @return a double + */ + public double getSolventMolarMass() { + double molesMass = 0.0; + double moles = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (getComponent(i).getReferenceStateType().equals("solvent")) { + molesMass += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getMolarMass(); + moles = getComponent(i).getNumberOfMolesInPhase(); + } } + return molesMass / moles; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws IsNaNException, TooManyIterationsException { + throw new UnsupportedOperationException("Unimplemented method 'molarVolume'"); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseDuanSun.java b/src/main/java/neqsim/thermo/phase/PhaseDuanSun.java index 17e1412bb2..0af4f441e5 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseDuanSun.java +++ b/src/main/java/neqsim/thermo/phase/PhaseDuanSun.java @@ -1,6 +1,8 @@ package neqsim.thermo.phase; import neqsim.thermo.component.ComponentGeDuanSun; +import neqsim.util.exception.IsNaNException; +import neqsim.util.exception.TooManyIterationsException; /** *

@@ -11,107 +13,117 @@ * @version $Id: $Id */ public class PhaseDuanSun extends PhaseGE { - private static final long serialVersionUID = 1000; - - double[][] alpha; - String[][] mixRule; - double[][] intparam; - double[][] Dij; - double GE = 0.0; - - /** - *

- * Constructor for PhaseDuanSun. - *

- */ - public PhaseDuanSun() { - super(); - } + private static final long serialVersionUID = 1000; - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentGeDuanSun(componentName, moles, molesInPhase, compNumber); - } + double[][] alpha; + String[][] mixRule; + double[][] intparam; + double[][] Dij; + double GE = 0.0; - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - this.alpha = mixSelect.getNRTLalpha(); - this.Dij = mixSelect.getNRTLDij(); - } + /** + *

+ * Constructor for PhaseDuanSun. + *

+ */ + public PhaseDuanSun() { + super(); + } - /** {@inheritDoc} */ - @Override - public void setAlpha(double[][] alpha) { - for (int i = 0; i < alpha.length; i++) { - System.arraycopy(alpha[i], 0, this.alpha[i], 0, alpha[0].length); - } - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentGeDuanSun(name, moles, molesInPhase, compNumber); + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + this.alpha = mixSelect.getNRTLalpha(); + this.Dij = mixSelect.getNRTLDij(); + } - /** {@inheritDoc} */ - @Override - public void setDij(double[][] Dij) { - for (int i = 0; i < Dij.length; i++) { - System.arraycopy(Dij[i], 0, this.Dij[i], 0, Dij[0].length); - } + /** {@inheritDoc} */ + @Override + public void setAlpha(double[][] alpha) { + for (int i = 0; i < alpha.length; i++) { + System.arraycopy(alpha[i], 0, this.alpha[i], 0, alpha[0].length); } + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - GE = 0; - double salinity = 0.0; - // double k=0.0; - // salinity=salinity+phase.getComponent("Na+").getNumberOfMolesInPhase()/(phase.getComponent("water").getNumberOfmoles()*phase.getComponent("water").getMolarMass()); - - // for (int i=2;i - * Constructor for PhaseElectrolyteCPA. - *

- */ - public PhaseElectrolyteCPA() { - super(); + implements PhaseCPAInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseElectrolyteCPA.class); + + public CPAMixing cpaSelect = new CPAMixing(); + public CPAMixingInterface cpamix; + double gcpavv = 0.0; + double gcpavvv = 0.0; + double gcpa = 0.0; + double hcpatot = 1.0; + double FCPA = 0.0; + double dFCPAdTdV; + double dFCPAdTdT = 0.0; + double dFCPAdT = 0; + double dFCPAdV = 0; + double dFCPAdVdV = 0.0; + double dFCPAdVdVdV = 0.0; + private double gcpav = 0.0; + int cpaon = 1; + int oldTotalNumberOfAccociationSites = 0; + private int totalNumberOfAccociationSites = 0; + int[][][] selfAccociationScheme = null; + int[][][][] crossAccociationScheme = null; + int[] moleculeNumber = null; + int[] assSiteNumber = null; + private double[][] gvector = null; + private double[][] delta = null; + private double[][] deltaNog = null; + private double[][] deltadT = null; + private double[][] deltadTdT = null; + private double[][][] Klkni = null; + private SimpleMatrix KlkTVMatrix = null; + private SimpleMatrix KlkTTMatrix = null; + private SimpleMatrix KlkTMatrix = null; + private SimpleMatrix udotTimesmMatrix = null; + private SimpleMatrix mVector = null; + private SimpleMatrix udotMatrix = null; + private SimpleMatrix uMatrix = null; + private SimpleMatrix QMatksiksiksi = null; + private SimpleMatrix KlkVVVMatrix = null; + private SimpleMatrix KlkVVMatrix = null; + private SimpleMatrix udotTimesmiMatrix = null; + private SimpleMatrix ksiMatrix = null; + private SimpleMatrix KlkMatrix = null; + private SimpleMatrix hessianMatrix = null; + private SimpleMatrix hessianInvers = null; + private SimpleMatrix KlkVMatrix = null; + DMatrixRMaj corr2Matrix = null; + DMatrixRMaj corr3Matrix = null; + DMatrixRMaj corr4Matrix = null; + + /** + *

+ * Constructor for PhaseElectrolyteCPA. + *

+ */ + public PhaseElectrolyteCPA() { + super(); + } + + /** {@inheritDoc} */ + @Override + public PhaseElectrolyteCPA clone() { + PhaseElectrolyteCPA clonedPhase = null; + try { + clonedPhase = (PhaseElectrolyteCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - - /** {@inheritDoc} */ - @Override - public PhaseElectrolyteCPA clone() { - PhaseElectrolyteCPA clonedPhase = null; - try { - clonedPhase = (PhaseElectrolyteCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); + // clonedPhase.cpamix = (CPAMixingInterface) cpamix.clone(); + + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + cpamix = cpaSelect.getMixingRule(1, this); + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + if (initType == 0) { + setTotalNumberOfAccociationSites(0); + selfAccociationScheme = new int[numberOfComponents][0][0]; + crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; + for (int i = 0; i < numberOfComponents; i++) { + if (getComponent(i).getNumberOfmoles() < 1e-100) { + getComponent(i).setNumberOfAssociationSites(0); + } else { + getComponent(i) + .setNumberOfAssociationSites(getComponent(i).getOrginalNumberOfAssociationSites()); + setTotalNumberOfAccociationSites( + getTotalNumberOfAccociationSites() + getComponent(i).getNumberOfAssociationSites()); + selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); + for (int j = 0; j < numberOfComponents; j++) { + crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); + } } - // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); - // clonedPhase.cpamix = (CPAMixingInterface) cpamix.clone(); - - return clonedPhase; + } + + if (getTotalNumberOfAccociationSites() != oldTotalNumberOfAccociationSites) { + mVector = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + KlkMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + hessianMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + Klkni = + new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + ksiMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + uMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + udotMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + moleculeNumber = new int[getTotalNumberOfAccociationSites()]; + assSiteNumber = new int[getTotalNumberOfAccociationSites()]; + gvector = new double[getTotalNumberOfAccociationSites()][1]; + udotTimesmMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + udotTimesmiMatrix = + new SimpleMatrix(getNumberOfComponents(), getTotalNumberOfAccociationSites()); + delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltaNog = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadT = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadTdT = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + QMatksiksiksi = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + } + oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); + + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + moleculeNumber[temp + j] = i; + assSiteNumber[temp + j] = j; + } + temp += getComponent(i).getNumberOfAssociationSites(); + } } - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - cpamix = cpaSelect.getMixingRule(1, this); + if (cpamix == null) { + cpamix = cpaSelect.getMixingRule(1, this); } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - if (type == 0) { - setTotalNumberOfAccociationSites(0); - selfAccociationScheme = new int[numberOfComponents][0][0]; - crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; - for (int i = 0; i < numberOfComponents; i++) { - if (getComponent(i).getNumberOfmoles() < 1e-100) { - getComponent(i).setNumberOfAssociationSites(0); - } else { - getComponent(i).setNumberOfAssociationSites( - getComponent(i).getOrginalNumberOfAssociationSites()); - setTotalNumberOfAccociationSites(getTotalNumberOfAccociationSites() - + getComponent(i).getNumberOfAssociationSites()); - selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); - for (int j = 0; j < numberOfComponents; j++) { - crossAccociationScheme[i][j] = - cpaSelect.setCrossAssociationScheme(i, j, this); - } - } - } - - if (getTotalNumberOfAccociationSites() != oldTotalNumberOfAccociationSites) { - mVector = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - KlkMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - hessianMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - Klkni = new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - ksiMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - uMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - udotMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - moleculeNumber = new int[getTotalNumberOfAccociationSites()]; - assSiteNumber = new int[getTotalNumberOfAccociationSites()]; - gvector = new double[getTotalNumberOfAccociationSites()][1]; - udotTimesmMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - udotTimesmiMatrix = new SimpleMatrix(getNumberOfComponents(), - getTotalNumberOfAccociationSites()); - delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltaNog = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadTdT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - QMatksiksiksi = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - } - oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); - - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - moleculeNumber[temp + j] = i; - assSiteNumber[temp + j] = j; - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - } - - if (cpamix == null) { - cpamix = cpaSelect.getMixingRule(1, this); - } - - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - if (type > 0 && isConstantPhaseVolume()) { - volInit(); - calcDelta(); - solveX(); - super.init(totalNumberOfMoles, numberOfComponents, 1, phase, beta); - gcpa = calc_g(); - // lngcpa = Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - } - - if (type > 0) { - hcpatot = calc_hCPA(); - } + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + if (initType > 0 && isConstantPhaseVolume()) { + volInit(); + calcDelta(); + solveX(); + super.init(totalNumberOfMoles, numberOfComponents, 1, pt, beta); + gcpa = calc_g(); + // lngcpa = Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + } - if (type > 1) { - volInit(); - initCPAMatrix(type); - // hcpatotdT = calc_hCPAdT(); - // super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + if (initType > 0) { + hcpatot = calc_hCPA(); } - /** - *

- * calcDelta. - *

- */ - public void calcDelta() { - for (int i = 0; i < totalNumberOfAccociationSites; i++) { - for (int j = i; j < totalNumberOfAccociationSites; j++) { - deltaNog[i][j] = cpamix.calcDeltaNog(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), getPressure(), - numberOfComponents); - deltaNog[j][i] = delta[i][j]; - } - } + if (initType > 1) { + volInit(); + initCPAMatrix(initType); + // hcpatotdT = calc_hCPAdT(); + // super.init(totalNumberOfMoles, numberOfComponents, type, pt, beta); + } + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + } + + /** + *

+ * calcDelta. + *

+ */ + public void calcDelta() { + for (int i = 0; i < totalNumberOfAccociationSites; i++) { + for (int j = i; j < totalNumberOfAccociationSites; j++) { + deltaNog[i][j] = cpamix.calcDeltaNog(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltaNog[j][i] = delta[i][j]; + } + } + } + + /** + *

+ * initCPAMatrix. + *

+ * + * @param type a int + */ + public void initCPAMatrix(int type) { + if (getTotalNumberOfAccociationSites() == 0) { + FCPA = 0.0; + dFCPAdTdV = 0.0; + dFCPAdTdT = 0.0; + dFCPAdT = 0; + dFCPAdV = 0; + dFCPAdVdV = 0.0; + dFCPAdVdVdV = 0.0; + + return; } - /** - *

- * initCPAMatrix. - *

- * - * @param type a int - */ - public void initCPAMatrix(int type) { - if (getTotalNumberOfAccociationSites() == 0) { - FCPA = 0.0; - dFCPAdTdV = 0.0; - dFCPAdTdT = 0.0; - dFCPAdT = 0; - dFCPAdV = 0; - dFCPAdVdV = 0.0; - dFCPAdVdVdV = 0.0; - - return; + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + uMatrix.set(temp + j, 0, + Math.log(ksiMatrix.get(temp + j, 0)) - ksiMatrix.get(temp + j, 0) + 1.0); + gvector[temp + j][0] = mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0); + } + temp += getComponent(i).getNumberOfAssociationSites(); + } + for (int i = 0; i < getNumberOfComponents(); i++) { + for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { + if (moleculeNumber[j] == i) { + udotTimesmiMatrix.set(i, j, udotMatrix.get(j, 0)); + } else { + udotTimesmiMatrix.set(i, j, 0.0); } + } + } - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - uMatrix.set(temp + j, 0, - Math.log(ksiMatrix.get(temp + j, 0)) - ksiMatrix.get(temp + j, 0) + 1.0); - gvector[temp + j][0] = mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0); - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - for (int i = 0; i < getNumberOfComponents(); i++) { - for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { - if (moleculeNumber[j] == i) { - udotTimesmiMatrix.set(i, j, udotMatrix.get(j, 0)); - } else { - udotTimesmiMatrix.set(i, j, 0.0); - } - } + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + delta[i][j] = deltaNog[i][j] * getGcpa(); + delta[j][i] = delta[i][j]; + if (type > 1) { + deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadT[j][i] = deltadT[i][j]; + + deltadTdT[i][j] = + cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadTdT[j][i] = deltadTdT[i][j]; } + } + } - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - delta[i][j] = deltaNog[i][j] * getGcpa(); - delta[j][i] = delta[i][j]; - if (type > 1) { - deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadT[j][i] = deltadT[i][j]; - - deltadTdT[i][j] = cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadTdT[j][i] = deltadTdT[i][j]; - } - } - } + double gdv1 = getGcpav() - 1.0 / getTotalVolume(); + double gdv2 = gdv1 * gdv1; + double gdv3 = gdv2 * gdv1; + double totVol = getTotalVolume(); + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + KlkVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv1); + KlkVMatrix.set(j, i, KlkVMatrix.get(i, j)); + + KlkVVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv2 + + KlkMatrix.get(i, j) * (gcpavv + 1.0 / getTotalVolume() / getTotalVolume())); + KlkVVMatrix.set(j, i, KlkVVMatrix.get(i, j)); + + KlkVVVMatrix.set(i, j, + KlkMatrix.get(i, j) * gdv3 + + 3.0 * KlkMatrix.get(i, j) * (getGcpav() - 1.0 / getTotalVolume()) + * (gcpavv + 1.0 / (totVol * totVol)) + + KlkMatrix.get(i, j) * (gcpavvv - 2.0 / (totVol * totVol * totVol))); + KlkVVVMatrix.set(j, i, KlkVVVMatrix.get(i, j)); - double gdv1 = getGcpav() - 1.0 / getTotalVolume(); - double gdv2 = gdv1 * gdv1; - double gdv3 = gdv2 * gdv1; - double totVol = getTotalVolume(); - // double Klk = 0.0; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - KlkVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv1); - KlkVMatrix.set(j, i, KlkVMatrix.get(i, j)); - - KlkVVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv2 + KlkMatrix.get(i, j) - * (gcpavv + 1.0 / getTotalVolume() / getTotalVolume())); - KlkVVMatrix.set(j, i, KlkVVMatrix.get(i, j)); - - KlkVVVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv3 - + 3.0 * KlkMatrix.get(i, j) * (getGcpav() - 1.0 / getTotalVolume()) - * (gcpavv + 1.0 / (totVol * totVol)) - + KlkMatrix.get(i, j) * (gcpavvv - 2.0 / (totVol * totVol * totVol))); - KlkVVVMatrix.set(j, i, KlkVVVMatrix.get(i, j)); - - if (type > 1) { - double tempVar = deltadT[i][j] / delta[i][j]; - double tempVardT = deltadTdT[i][j] / delta[i][j] - - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - - if (!Double.isNaN(tempVar)) { - // KlkdT[i][j] = KlkMatrix.getMatrix().unsafe_get(i, j) * tempVar; - // KlkdT[j][i] = KlkdT[i][j]; - - KlkTMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar); - KlkTMatrix.set(j, i, KlkTMatrix.get(i, j)); - - KlkTVMatrix.set(i, j, - KlkMatrix.get(i, j) * tempVar * (gcpav - 1.0 / getTotalVolume())); - KlkTVMatrix.set(j, i, KlkTVMatrix.get(i, j)); - - KlkTTMatrix.set(i, j, - KlkMatrix.get(i, j) * (tempVar * tempVar + tempVardT)); - KlkTTMatrix.set(j, i, KlkTTMatrix.get(i, j)); - } - - if (type > 2) { - for (int p = 0; p < numberOfComponents; p++) { - double t1 = 0.0, t2 = 0.0; - if (moleculeNumber[i] == p) { - t1 = 1.0 / mVector.get(i, 0); - } - if (moleculeNumber[j] == p) { - t2 = 1.0 / mVector.get(j, 0); - } - Klkni[p][i][j] = KlkMatrix.get(i, j) * (t1 + t2 - + ((ComponentElectrolyteCPA) getComponent(p)).calc_lngi(this)); - Klkni[p][j][i] = Klkni[p][i][j]; - } - } - } + if (type > 1) { + double tempVar = deltadT[i][j] / delta[i][j]; + double tempVardT = deltadTdT[i][j] / delta[i][j] + - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); + + if (!Double.isNaN(tempVar)) { + // KlkdT[i][j] = KlkMatrix.getMatrix().unsafe_get(i, j) * tempVar; + // KlkdT[j][i] = KlkdT[i][j]; + + KlkTMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar); + KlkTMatrix.set(j, i, KlkTMatrix.get(i, j)); + + KlkTVMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar * (gcpav - 1.0 / getTotalVolume())); + KlkTVMatrix.set(j, i, KlkTVMatrix.get(i, j)); + + KlkTTMatrix.set(i, j, KlkMatrix.get(i, j) * (tempVar * tempVar + tempVardT)); + KlkTTMatrix.set(j, i, KlkTTMatrix.get(i, j)); + } + + if (type > 2) { + for (int p = 0; p < numberOfComponents; p++) { + double t1 = 0.0; + double t2 = 0.0; + if (moleculeNumber[i] == p) { + t1 = 1.0 / mVector.get(i, 0); + } + if (moleculeNumber[j] == p) { + t2 = 1.0 / mVector.get(j, 0); + } + Klkni[p][i][j] = KlkMatrix.get(i, j) + * (t1 + t2 + ((ComponentElectrolyteCPA) getComponent(p)).calc_lngi(this)); + Klkni[p][j][i] = Klkni[p][i][j]; } - QMatksiksiksi.set(i, 0, 2.0 * mVector.get(i, 0) - / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0))); + } } + } + QMatksiksiksi.set(i, 0, 2.0 * mVector.get(i, 0) + / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0))); + } - SimpleMatrix ksiMatrixTranspose = ksiMatrix.transpose(); + SimpleMatrix ksiMatrixTranspose = ksiMatrix.transpose(); - // dXdV - SimpleMatrix KlkVMatrixksi = KlkVMatrix.mult(ksiMatrix); - SimpleMatrix XV = hessianInvers.mult(KlkVMatrixksi); - SimpleMatrix XVtranspose = XV.transpose(); + // dXdV + SimpleMatrix KlkVMatrixksi = KlkVMatrix.mult(ksiMatrix); + SimpleMatrix XV = hessianInvers.mult(KlkVMatrixksi); + SimpleMatrix XVtranspose = XV.transpose(); - SimpleMatrix QCPA = mVector.transpose() - .mult(uMatrix.minus(ksiMatrix.elementMult(udotMatrix).scale(0.5))); - FCPA = QCPA.get(0, 0); + SimpleMatrix QCPA = + mVector.transpose().mult(uMatrix.minus(ksiMatrix.elementMult(udotMatrix).scale(0.5))); + FCPA = QCPA.get(0, 0); - SimpleMatrix tempMatrix = ksiMatrixTranspose.mult(KlkVMatrixksi).scale(-0.5); - dFCPAdV = tempMatrix.get(0, 0); - SimpleMatrix KlkVVMatrixTImesKsi = KlkVVMatrix.mult(ksiMatrix); - SimpleMatrix tempMatrixVV = ksiMatrixTranspose.mult(KlkVVMatrixTImesKsi).scale(-0.5) - .minus(KlkVMatrixksi.transpose().mult(XV)); - dFCPAdVdV = tempMatrixVV.get(0, 0); + SimpleMatrix tempMatrix = ksiMatrixTranspose.mult(KlkVMatrixksi).scale(-0.5); + dFCPAdV = tempMatrix.get(0, 0); + SimpleMatrix KlkVVMatrixTImesKsi = KlkVVMatrix.mult(ksiMatrix); + SimpleMatrix tempMatrixVV = ksiMatrixTranspose.mult(KlkVVMatrixTImesKsi).scale(-0.5) + .minus(KlkVMatrixksi.transpose().mult(XV)); + dFCPAdVdV = tempMatrixVV.get(0, 0); - SimpleMatrix QVVV = ksiMatrixTranspose.mult(KlkVVVMatrix.mult(ksiMatrix)).scale(-0.5); - SimpleMatrix QVVksi = KlkVVMatrixTImesKsi.scale(-1.0); - SimpleMatrix QksiVksi = KlkVMatrix.scale(-1.0); + SimpleMatrix QVVV = ksiMatrixTranspose.mult(KlkVVVMatrix.mult(ksiMatrix)).scale(-0.5); + SimpleMatrix QVVksi = KlkVVMatrixTImesKsi.scale(-1.0); + SimpleMatrix QksiVksi = KlkVMatrix.scale(-1.0); - SimpleMatrix mat1 = QVVksi.transpose().mult(XV).scale(3.0); - SimpleMatrix mat2 = XVtranspose.mult(QksiVksi.mult(XV)).scale(3.0); - SimpleMatrix mat4 = XVtranspose.mult(QMatksiksiksi.mult(XVtranspose)).mult(XV); + SimpleMatrix mat1 = QVVksi.transpose().mult(XV).scale(3.0); + SimpleMatrix mat2 = XVtranspose.mult(QksiVksi.mult(XV)).scale(3.0); + SimpleMatrix mat4 = XVtranspose.mult(QMatksiksiksi.mult(XVtranspose)).mult(XV); - SimpleMatrix dFCPAdVdVdVMatrix = QVVV.plus(mat1).plus(mat2).plus(mat2).plus(mat4); - dFCPAdVdVdV = dFCPAdVdVdVMatrix.get(0, 0); - temp = 0; + SimpleMatrix dFCPAdVdVdVMatrix = QVVV.plus(mat1).plus(mat2).plus(mat2).plus(mat4); + dFCPAdVdVdV = dFCPAdVdVdVMatrix.get(0, 0); + temp = 0; - if (type == 1) { - return; - } - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); - } - - // KlkTMatrix = new SimpleMatrix(KlkdT); - SimpleMatrix KlkTMatrixTImesKsi = KlkTMatrix.mult(ksiMatrix); - // dQdT - SimpleMatrix tempMatrix2 = ksiMatrixTranspose.mult(KlkTMatrixTImesKsi).scale(-0.5); - dFCPAdT = tempMatrix2.get(0, 0); - - // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); - // SimpleMatrix tempMatrixTV = - // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - // dFCPAdTdV = tempMatrixTV.get(0, 0); - // dXdT - SimpleMatrix XT = hessianInvers.mult(KlkTMatrixTImesKsi); - // dQdTdT - SimpleMatrix tempMatrixTT = ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5) - .minus(KlkTMatrixTImesKsi.transpose().mult(XT)); - dFCPAdTdT = tempMatrixTT.get(0, 0); - - SimpleMatrix tempMatrixTV = ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5) - .minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - dFCPAdTdV = tempMatrixTV.get(0, 0); - - temp = 0; - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); - } - - if (type == 2) { - return; - } - - // int assSites = 0; - // if(true) return; - for (int p = 0; p < numberOfComponents; p++) { - SimpleMatrix KiMatrix = new SimpleMatrix(Klkni[p]); - // KiMatrix.print(10,10); - // Matrix dQdniMatrix = - // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this - // methods misses one part of .... - // dQdniMatrix.print(10,10); - // KiMatrix.print(10, 10); - // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - - // 1).print(10, 10); - // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - - // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5));// - // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); - // System.out.println("dQdn "); - // tempMatrix20.print(10, 10); - SimpleMatrix tempMatrix4 = KiMatrix.mult(ksiMatrix); - // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - 1).print(10, 10); - SimpleMatrix tempMatrix5 = - udotTimesmiMatrix.extractVector(true, p).transpose().minus(tempMatrix4); - // tempMki[0] = mki[p]; - // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, - // udotMatrix.getArray())); - // System.out.println("aMatrix "); - // amatrix.transpose().print(10, 10); - // System.out.println("temp4 matrix"); - // tempMatrix4.print(10, 10); - // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); - SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5);// .scale(-1.0); - // System.out.println("dXdni"); - // tempMatrix4.print(10, 10); - // tempMatrix5.print(10, 10); - // System.out.println("dXdn "); - // tempMatrix6.print(10, 10); - int temp2 = 0; - for (int compp = 0; compp < numberOfComponents; compp++) { - for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, - -1.0 * tempMatrix6.get(temp2 + kk, 0)); - } - temp2 += getComponent(compp).getNumberOfAssociationSites(); - } - // assSites += getComponent(p).getNumberOfAssociationSites(); - } - } - - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentElectrolyteCPA(componentName, moles, molesInPhase, compNumber); - } - - /** {@inheritDoc} */ - @Override - public double getF() { - return super.getF() + cpaon * FCPA(); - } - - /** {@inheritDoc} */ - @Override - public double dFdT() { - return super.dFdT() + cpaon * dFCPAdT(); - } - - /** {@inheritDoc} */ - @Override - public double dFdTdV() { - return super.dFdTdV() + cpaon * dFCPAdTdV(); + if (type == 1) { + return; } - - /** {@inheritDoc} */ - @Override - public double dFdV() { - double dv2 = dFCPAdV(); - return super.dFdV() + cpaon * dv2; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return super.dFdVdV() + cpaon * dFCPAdVdV(); + // KlkTMatrix = new SimpleMatrix(KlkdT); + SimpleMatrix KlkTMatrixTImesKsi = KlkTMatrix.mult(ksiMatrix); + // dQdT + SimpleMatrix tempMatrix2 = ksiMatrixTranspose.mult(KlkTMatrixTImesKsi).scale(-0.5); + dFCPAdT = tempMatrix2.get(0, 0); + + // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); + // SimpleMatrix tempMatrixTV = + // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + // dFCPAdTdV = tempMatrixTV.get(0, 0); + // dXdT + SimpleMatrix XT = hessianInvers.mult(KlkTMatrixTImesKsi); + // dQdTdT + SimpleMatrix tempMatrixTT = ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5) + .minus(KlkTMatrixTImesKsi.transpose().mult(XT)); + dFCPAdTdT = tempMatrixTT.get(0, 0); + + SimpleMatrix tempMatrixTV = ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5) + .minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + dFCPAdTdV = tempMatrixTV.get(0, 0); + + temp = 0; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** {@inheritDoc} */ - @Override - public double dFdVdVdV() { - return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); + if (type == 2) { + return; } - /** {@inheritDoc} */ - @Override - public double dFdTdT() { - return super.dFdTdT() + cpaon * dFCPAdTdT(); + // if(true) return; + for (int p = 0; p < numberOfComponents; p++) { + SimpleMatrix KiMatrix = new SimpleMatrix(Klkni[p]); + // KiMatrix.print(10,10); + // Matrix dQdniMatrix = + // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this + // methods misses one part of .... + // dQdniMatrix.print(10,10); + // KiMatrix.print(10, 10); + // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - + // 1).print(10, 10); + // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - + // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); + // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); + // System.out.println("dQdn "); + // tempMatrix20.print(10, 10); + SimpleMatrix tempMatrix4 = KiMatrix.mult(ksiMatrix); + // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - 1).print(10, 10); + SimpleMatrix tempMatrix5 = + udotTimesmiMatrix.extractVector(true, p).transpose().minus(tempMatrix4); + // tempMki[0] = mki[p]; + // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, + // udotMatrix.getArray())); + // System.out.println("aMatrix "); + // amatrix.transpose().print(10, 10); + // System.out.println("temp4 matrix"); + // tempMatrix4.print(10, 10); + // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); + SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5); // .scale(-1.0); + // System.out.println("dXdni"); + // tempMatrix4.print(10, 10); + // tempMatrix5.print(10, 10); + // System.out.println("dXdn "); + // tempMatrix6.print(10, 10); + int temp2 = 0; + for (int compp = 0; compp < numberOfComponents; compp++) { + for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, + -1.0 * tempMatrix6.get(temp2 + kk, 0)); + } + temp2 += getComponent(compp).getNumberOfAssociationSites(); + } + // assSites += getComponent(p).getNumberOfAssociationSites(); } - - /** - *

- * FCPA. - *

- * - * @return a double + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentElectrolyteCPA(name, moles, molesInPhase, compNumber); + } + + /** {@inheritDoc} */ + @Override + public double getF() { + return super.getF() + cpaon * FCPA(); + } + + /** {@inheritDoc} */ + @Override + public double dFdT() { + return super.dFdT() + cpaon * dFCPAdT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdV() { + return super.dFdTdV() + cpaon * dFCPAdTdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + double dv2 = dFCPAdV(); + return super.dFdV() + cpaon * dv2; + } + + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return super.dFdVdV() + cpaon * dFCPAdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdVdVdV() { + return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdT() { + return super.dFdTdT() + cpaon * dFCPAdTdT(); + } + + /** + *

+ * FCPA. + *

+ * + * @return a double + */ + public double FCPA() { + /* + * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = 0.0; + * for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai = + * ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; tot += (Math.log(xai) - 1.0 / 2.0 * xai + + * 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } return ans; */ - public double FCPA() { - /* - * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = - * 0.0; for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai - * = ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; tot += (Math.log(xai) - 1.0 / 2.0 * - * xai + 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } return ans; - */ - return FCPA; - } - - /** - *

- * dFCPAdV. - *

- * - * @return a double + return FCPA; + } + + /** + *

+ * dFCPAdV. + *

+ * + * @return a double + */ + public double dFCPAdV() { + // return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) + // * hcpatot; + return dFCPAdV; + } + + /** + *

+ * dFCPAdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdV() { + // double sum1 = -1.0 / 2.0 * gcpavv * hcpatot; + // return -1.0 / getTotalVolume() * dFCPAdV() + sum1; + return dFCPAdVdV; + } + + /** + *

+ * dFCPAdVdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdVdV() { + return dFCPAdVdVdV; + // return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / + // Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - hcpatot / (2.0 * + // Math.pow(getTotalVolume(), 2.0)) * (-getGcpav() - getTotalVolume() * gcpavv) + // + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv + // - gcpavv); + } + + /** + *

+ * dFCPAdT. + *

+ * + * @return a double + */ + public double dFCPAdT() { + /* + * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = 0.0; + * for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai = + * ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; double xaidT = ((ComponentSrkCPA) + * getComponent(i)).getXsitedT()[j]; tot += 1.0 / xai * xaidT - 0.5 * xaidT; // - 1.0 / 2.0 * + * xai + 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } + * System.out.println("dFCPAdT1 " + ans + " dfcpa2 " +dFCPAdT); return ans; */ - public double dFCPAdV() { - // return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) - // * hcpatot; - return dFCPAdV; - } - - /** - *

- * dFCPAdVdV. - *

- * - * @return a double + return dFCPAdT; + } + + /** + *

+ * dFCPAdTdT. + *

+ * + * @return a double + */ + public double dFCPAdTdT() { + return dFCPAdTdT; + } + + /** + *

+ * dFCPAdTdV. + *

+ * + * @return a double + */ + public double dFCPAdTdV() { + // System.out.println("dFCPAdTdV1 " + dFCPAdTdV + " dFCPAdTdV " +( 1.0 / (2.0 * + // getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatotdT)); + return dFCPAdTdV; + /* + * if (totalNumberOfAccociationSites > 0) { return 1.0 / (2.0 * getTotalVolume()) * (1.0 - + * getTotalVolume() * getGcpav()) * hcpatotdT; } else { return 0; } */ - public double dFCPAdVdV() { - // double sum1 = -1.0 / 2.0 * gcpavv * hcpatot; - // return -1.0 / getTotalVolume() * dFCPAdV() + sum1; - return dFCPAdVdV; + } + + /** + *

+ * calc_hCPA. + *

+ * + * @return a double + */ + public double calc_hCPA() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + htot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + htot += (1.0 - ((ComponentCPAInterface) getComponent(i)).getXsite()[j]); + } + tot += getComponent(i).getNumberOfMolesInPhase() * htot; } - - /** - *

- * dFCPAdVdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdVdV() { - return dFCPAdVdVdV; - // return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / - // Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - hcpatot / (2.0 * - // Math.pow(getTotalVolume(), 2.0)) * (-getGcpav() - getTotalVolume() * gcpavv) - // + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv - // - gcpavv); + return tot; + } + + /** + *

+ * calcXsitedV. + *

+ */ + public void calcXsitedV() { + if (totalNumberOfAccociationSites > 0) { + initCPAMatrix(1); } - - /** - *

- * dFCPAdT. - *

- * - * @return a double - */ - public double dFCPAdT() { - /* - * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = - * 0.0; for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai - * = ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; double xaidT = ((ComponentSrkCPA) - * getComponent(i)).getXsitedT()[j]; tot += 1.0 / xai * xaidT - 0.5 * xaidT;// - 1.0 / 2.0 * - * xai + 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } - * System.out.println("dFCPAdT1 " + ans + " dfcpa2 " +dFCPAdT); return ans; - */ - return dFCPAdT; + } + + /** + *

+ * solveX. + *

+ * + * @return a boolean + */ + public boolean solveX() { + if (getTotalNumberOfAccociationSites() == 0) { + return true; } - /** - *

- * dFCPAdTdT. - *

- * - * @return a double - */ - public double dFCPAdTdT() { - return dFCPAdTdT; + boolean solvedX = solveX2(5); + if (solvedX) { + // return true; } - /** - *

- * dFCPAdTdV. - *

- * - * @return a double - */ - public double dFCPAdTdV() { - // System.out.println("dFCPAdTdV1 " + dFCPAdTdV + " dFCPAdTdV " +( 1.0 / (2.0 * - // getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatotdT)); - return dFCPAdTdV; - /* - * if (totalNumberOfAccociationSites > 0) { return 1.0 / (2.0 * getTotalVolume()) * (1.0 - - * getTotalVolume() * getGcpav()) * hcpatotdT; } else { return 0; } - */ + DMatrixRMaj mat1 = KlkMatrix.getMatrix(); + DMatrixRMaj mat2 = ksiMatrix.getMatrix(); + // second order method not working correctly and not used t the moment b ecause of numerical + // stability + int temp = 0; + int iter = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + mVector.set(temp + j, 0, getComponent(i).getNumberOfMolesInPhase()); + } + temp += getComponent(i).getNumberOfAssociationSites(); } - - /** - *

- * calc_hCPA. - *

- * - * @return a double - */ - public double calc_hCPA() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - htot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - htot += (1.0 - ((ComponentCPAInterface) getComponent(i)).getXsite()[j]); - } - tot += getComponent(i).getNumberOfMolesInPhase() * htot; - } - return tot; + double Klk = 0.0; + double totvolume = getTotalVolume(); + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + Klk = mVector.get(i, 0) * mVector.get(j, 0) / totvolume * delta[i][j]; + KlkMatrix.set(i, j, Klk); + KlkMatrix.set(j, i, Klk); + } } - - /** - *

- * calcXsitedV. - *

- */ - public void calcXsitedV() { - if (totalNumberOfAccociationSites > 0) { - initCPAMatrix(1); + boolean solved = true; + // SimpleMatrix corrMatrix = null; + do { + solved = true; + iter++; + temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + ksiMatrix.set(temp + j, 0, ((ComponentCPAInterface) getComponent(i)).getXsite()[j]); + // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, + // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); + udotMatrix.set(temp + j, 0, 1.0 / ksiMatrix.get(temp + j, 0) - 1.0); + udotTimesmMatrix.set(temp + j, 0, mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0)); } - } - - /** - *

- * solveX. - *

- * - * @return a boolean - */ - public boolean solveX() { - if (getTotalNumberOfAccociationSites() == 0) { - return true; + temp += getComponent(i).getNumberOfAssociationSites(); + } + + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + int krondelt = 0; + if (i == j) { + krondelt = 1; + } + hessianMatrix.set(i, j, + -mVector.get(i, 0) / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0)) * krondelt + - KlkMatrix.get(i, j)); + hessianMatrix.set(j, i, hessianMatrix.get(i, j)); } - - boolean solvedX = solveX2(5); - if (solvedX) { - // return true; + } + + // ksiMatrix = new SimpleMatrix(ksi); + // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); + try { + hessianInvers = hessianMatrix.invert(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return false; + } + + CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); + CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, corr3Matrix); + CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); + // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); + // corrMatrix = + // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix))); //.scale(-1.0); + temp = 0; + // System.out.println("print SimpleMatrix ..."); + // corrMatrix.print(10, 10); + // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); + // System.out.println("print CommonOps ..."); + // simp.print(10,10); + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + double newX = ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); + if (newX < 0) { + newX = 1e-10; + solved = false; + } + ((ComponentCPAInterface) getComponent(i)).setXsite(j, newX); } - - DMatrixRMaj mat1 = KlkMatrix.getMatrix(); - DMatrixRMaj mat2 = ksiMatrix.getMatrix(); - // second order method not working correctly and not used t the moment b ecause of numerical - // stability - int temp = 0, iter = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - mVector.set(temp + j, 0, getComponent(i).getNumberOfMolesInPhase()); - } - temp += getComponent(i).getNumberOfAssociationSites(); + temp += getComponent(i).getNumberOfAssociationSites(); + } + // System.out.println("corrmatrix error " ); + // System.out.println("error " + corrMatrix.norm1()); + } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); + + // System.out.println("iter " + iter + " error " + NormOps.normF(corr4Matrix)); + // // corrMatrix.print(10, 10); + // ksiMatrix.print(10, 10); + return true; + } + + /** + *

+ * solveX2. + *

+ * + * @param maxIter a int + * @return a boolean + */ + public boolean solveX2(int maxIter) { + double err = .0; + int iter = 0; + // if (delta == null) { + // initCPAMatrix(1); + double old = 0.0; + double neeval = 0.0; + // } + do { + iter++; + err = 0.0; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + old = + ((ComponentCPAInterface) getComponent(moleculeNumber[i])).getXsite()[assSiteNumber[i]]; + neeval = 0; + for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { + neeval += getComponent(moleculeNumber[j]).getNumberOfMolesInPhase() * delta[i][j] + * ((ComponentCPAInterface) getComponent(moleculeNumber[j])) + .getXsite()[assSiteNumber[j]]; } - double Klk = 0.0; - double totvolume = getTotalVolume(); - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - Klk = mVector.get(i, 0) * mVector.get(j, 0) / totvolume * delta[i][j]; - KlkMatrix.set(i, j, Klk); - KlkMatrix.set(j, i, Klk); - } + neeval = 1.0 / (1.0 + 1.0 / getTotalVolume() * neeval); + ((ComponentCPAInterface) getComponent(moleculeNumber[i])).setXsite(assSiteNumber[i], + neeval); + err += Math.abs((old - neeval) / neeval); + } + } while (Math.abs(err) > 1e-10 && iter < maxIter); + // System.out.println("iter " + iter); + // if (Math.abs(err) + // < 1e-12) { + // return true; + // } else { + // System.out.println("did not solve for Xi in iterations: " + iter); + // System.out.println("error: " + err); + return false; + } + + /** {@inheritDoc} */ + @Override + public double getHcpatot() { + return hcpatot; + } + + /** + * Setter for property hcpatot. + * + * @param hcpatot New value of property hcpatot. + */ + public void setHcpatot(double hcpatot) { + this.hcpatot = hcpatot; + } + + /** {@inheritDoc} */ + @Override + public double getGcpa() { + return gcpa; + } + + /** + *

+ * calcRootVolFinder. + *

+ * + * @param pt the PhaseType of the phase + * @return a double + */ + public double calcRootVolFinder(PhaseType pt) { + double solvedBonVHigh = 0.0; + double solvedBonVlow = 1.0; + double oldh = 1; + // double[][] matrix = new double[2][2000]; + double BonV = 1.0 - 1e-10; + try { + // molarVolume(pressure, temperature, A, B, pt); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + double BonVold = BonV; + double Btemp = 0; + double h = 1; + Btemp = getB(); + getA(); + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + for (int i = 0; i < 2000; i++) { + BonVold = BonV; + BonV = 1.0 - (i + 1e-6) * 1.0 / 2000.0; + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + gcpa = calc_g(); + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + volInit(); + do { + } while (!solveX()); + + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + + if (Math.signum(h) * Math.signum(oldh) < 0 && i > 2) { + if (solvedBonVlow < 1e-3) { + solvedBonVlow = (BonV + BonVold) / 2.0; + if (pt == PhaseType.GAS) { + break; + } + } else { + solvedBonVHigh = (BonV + BonVold) / 2.0; + if (pt == PhaseType.LIQUID) { + break; + } } - boolean solved = true; - // SimpleMatrix corrMatrix = null; - do { - solved = true; - iter++; - temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - ksiMatrix.set(temp + j, 0, - ((ComponentCPAInterface) getComponent(i)).getXsite()[j]); - // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, - // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); - udotMatrix.set(temp + j, 0, 1.0 / ksiMatrix.get(temp + j, 0) - 1.0); - udotTimesmMatrix.set(temp + j, 0, - mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0)); - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - int krondelt = 0; - if (i == j) { - krondelt = 1; - } - hessianMatrix.set(i, j, - -mVector.get(i, 0) / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0)) - * krondelt - KlkMatrix.get(i, j)); - hessianMatrix.set(j, i, hessianMatrix.get(i, j)); - } - } - - // ksiMatrix = new SimpleMatrix(ksi); - // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); - try { - hessianInvers = hessianMatrix.invert(); - } catch (Exception e) { - logger.error("error", e); - return false; - } - - CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); - CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, corr3Matrix); - CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); - // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); - // corrMatrix = - // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)));//.scale(-1.0); - temp = 0; - // System.out.println("print SimpleMatrix ..."); - // corrMatrix.print(10, 10); - // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); - // System.out.println("print CommonOps ..."); - // simp.print(10,10); - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - double newX = - ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); - if (newX < 0) { - newX = 1e-10; - solved = false; - } - ((ComponentCPAInterface) getComponent(i)).setXsite(j, newX); - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - // System.out.println("corrmatrix error " ); - // System.out.println("error " + corrMatrix.norm1()); - } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); - - // System.out.println("iter " + iter + " error " + NormOps.normF(corr4Matrix)); - // // corrMatrix.print(10, 10); - // ksiMatrix.print(10, 10); - return true; + } + solvedBonVHigh = (BonV + BonVold) / 2.0; + oldh = h; + // matrix[0][i] = BonV; + // matrix[1][i] = h; } - - /** - *

- * solveX2. - *

- * - * @param maxIter a int - * @return a boolean - */ - public boolean solveX2(int maxIter) { - double err = .0; - int iter = 0; - // if (delta == null) { - // initCPAMatrix(1); - double old = 0.0, neeval = 0.0; - // } - do { - iter++; - err = 0.0; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - old = ((ComponentCPAInterface) getComponent(moleculeNumber[i])) - .getXsite()[assSiteNumber[i]]; - neeval = 0; - for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { - neeval += - getComponent(moleculeNumber[j]).getNumberOfMolesInPhase() * delta[i][j] - * ((ComponentCPAInterface) getComponent(moleculeNumber[j])) - .getXsite()[assSiteNumber[j]]; - } - neeval = 1.0 / (1.0 + 1.0 / getTotalVolume() * neeval); - ((ComponentCPAInterface) getComponent(moleculeNumber[i])).setXsite(assSiteNumber[i], - neeval); - err += Math.abs((old - neeval) / neeval); - } - } while (Math.abs(err) > 1e-10 && iter < maxIter); - // System.out.println("iter " + iter); - // if (Math.abs(err) - // < 1e-12) { - // return true; - // } else { - // System.out.println("did not solve for Xi in iterations: " + iter); - // System.out.println("error: " + err); - return false; + if (solvedBonVlow < 1e-3) { + solvedBonVlow = solvedBonVHigh; } - - /** {@inheritDoc} */ - @Override - public double getHcpatot() { - return hcpatot; + // dataPresentation.fileHandeling.createTextFile.TextFile file = new + // dataPresentation.fileHandeling.createTextFile.TextFile(); + // file.setValues(matrix); + // file.setOutputFileName("D:/temp/temp2.txt"); + // file.createFile(); + if (pt == PhaseType.GAS) { + return solvedBonVlow; + } else { + return solvedBonVHigh; } - - /** - * Setter for property hcpatot. - * - * @param hcpatot New value of property hcpatot. - */ - public void setHcpatot(double hcpatot) { - this.hcpatot = hcpatot; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume2(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + if (BonV < 0) { + BonV = 1.0e-8; } - /** {@inheritDoc} */ - @Override - public double getGcpa() { - return gcpa; + if (BonV > 1.1) { + BonV = 1.1; } - - /** - *

- * calcRootVolFinder. - *

- * - * @param phase a int - * @return a double - */ - public double calcRootVolFinder(int phase) { - double solvedBonVHigh = 0.0; - double solvedBonVlow = 1.0; - double oldh = 1; - // double[][] matrix = new double[2][2000]; - double BonV = 1.0 - 1e-10; - try { - // molarVolume(pressure, temperature, A, B, phaseType); - } catch (Exception e) { - logger.error("error", e); - } - double BonVold = BonV; - double Btemp = 0, h = 1; - // double Dtemp = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0; - // double d1 = 0, d2 = 0; - Btemp = getB(); - // Dtemp = getA(); - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - for (int i = 0; i < 2000; i++) { - BonVold = BonV; - BonV = 1.0 - (i + 1e-6) * 1.0 / 2000.0; - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - gcpa = calc_g(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - volInit(); - do { - } while (!solveX()); - - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - - if (Math.signum(h) * Math.signum(oldh) < 0 && i > 2) { - if (solvedBonVlow < 1e-3) { - solvedBonVlow = (BonV + BonVold) / 2.0; - if (phase == 1) { - break; - } - } else { - solvedBonVHigh = (BonV + BonVold) / 2.0; - if (phase == 0) { - break; - } - } - } - solvedBonVHigh = (BonV + BonVold) / 2.0; - oldh = h; - // matrix[0][i] = BonV; - // matrix[1][i] = h; - } - if (solvedBonVlow < 1e-3) { - solvedBonVlow = solvedBonVHigh; - } - // dataPresentation.fileHandeling.createTextFile.TextFile file = new - // dataPresentation.fileHandeling.createTextFile.TextFile(); - // file.setValues(matrix); - // file.setOutputFileName("D:/temp/temp2.txt"); - // file.createFile(); - if (phase == 1) { - return solvedBonVlow; - } else { - return solvedBonVHigh; - } + double BonVold = BonV; + double Btemp = 0; + double h = 0; + double dh = 0; + double dhh = 0; + double d1 = 0; + double d2 = 0; + Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); } + calcDelta(); - /** {@inheritDoc} */ - @Override - public double molarVolume2(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - // double[][] calcRootVolFinder = calcRootVolFinder(); - // double BonVInit = BonV; - if (BonV < 0) { - BonV = 1.0e-8; - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - if (BonV > 1.1) { - BonV = 1.1; + do { + volInit(); + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } + + // double lngcpa = Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + solveX(); + + hcpatot = calc_hCPA(); + + initCPAMatrix(1); + volInit(); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0, dhh = 0; - // double gvvv = 0, fvvv = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 1.1) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; + } else { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - calcDelta(); - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - - do { - volInit(); - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } - - // double lngcpa = Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - solveX(); - - hcpatot = calc_hCPA(); - - initCPAMatrix(1); - volInit(); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } + } - if (BonV > 1.1) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - - // System.out.println("Z" + Z); - } while (Math.abs((BonV - BonVold) / BonV) > 1.0e-10 && iterations < 100); - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - - if (Double.isNaN(getMolarVolume())) { - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); - throw new neqsim.util.exception.IsNaNException(this, "molarVolume2", "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); + if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; + } else { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - - return getMolarVolume(); + } + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + + // System.out.println("Z" + Z); + } while (Math.abs((BonV - BonVold) / BonV) > 1.0e-10 && iterations < 100); + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + + if (Double.isNaN(getMolarVolume())) { + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); + throw new neqsim.util.exception.IsNaNException(this, "molarVolume2", "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - // if (pressure > 1000) { - // BonV = 0.9999; - // } - - // double calcRooBonVtVolFinder = calcRootVolFinder(phasetype); - // BonV = calcRooBonVtVolFinder; - // double BonVInit = BonV; - if (BonV <= 0) { - BonV = 1.0e-8; - } - else if (BonV >= 1.0) { - BonV = 0.9999; - } - double BonVold; - double h = 0, dh = 0, dhh = 0; - double d1 = 0, d2 = 0; - double Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); - } - calcDelta(); - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - - do { - iterations++; - volInit(); - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } - - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - if (getTotalNumberOfAccociationSites() > 0) { - solveX(); - } + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + // if (pressure > 1000) { + // BonV = 0.9999; + // } + + // double calcRooBonVtVolFinder = calcRootVolFinder(pt); + // BonV = calcRooBonVtVolFinder; + // double BonVInit = BonV; + if (BonV <= 0) { + BonV = 1.0e-8; + } else if (BonV >= 1.0) { + BonV = 0.9999; + } + double BonVold; + double h = 0; + double dh = 0; + double dhh = 0; + double d1 = 0; + double d2 = 0; + double Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); + } + calcDelta(); - initCPAMatrix(1); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 - // + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - if (BonV > 0.9999) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV = 0.9999; - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - } - } else if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - } - } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-9) - && iterations < 100); - - if (Math.abs(h) > 1e-9) { - // System.out.println("h failed " + "Z" + Z + " iterations " + iterations + " - // BonV " + BonV); - return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - } - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B - // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); - } - return getMolarVolume(); - } + do { + iterations++; + volInit(); + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } - /** - *

- * molarVolumeChangePhase. - *

- * - * @param pressure a double - * @param temperature a double - * @param A a double - * @param B a double - * @param phasetype a int - * @return a double - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. - */ - public double molarVolumeChangePhase(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - // double BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - double BonV = calcRootVolFinder(phasetype); - // double BonVInit = BonV; - if (BonV < 0) { - BonV = 1.0e-8; - } + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); - if (BonV >= 1.0) { - BonV = 0.9999; + if (getTotalNumberOfAccociationSites() > 0) { + solveX(); + } + + initCPAMatrix(1); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 + // + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0, dhh = 0; - // double gvvv = 0, fvvv = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 0.9999) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; + } else { + return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV = 0.9999; + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); } - calcDelta(); - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - - do { - volInit(); - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } - - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - solveX(); - - initCPAMatrix(1); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } - - if (BonV > 1.1) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - - // System.out.println("Z " + Z + "h " + h + " BONV " + (Math.abs((BonV - - // BonVold) / BonV))); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10) && iterations < 100); - - /* - * if (Math.abs(h) > 1e-8) { if (phasetype == 0) { molarVolume(pressure, temperature, A, B, - * 1); } else { molarVolume(pressure, temperature, A, B, 0); } return getMolarVolume(); } - */ - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B - // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolumeChangePhase", - "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); + } else if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; + } else { + return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); } - - return getMolarVolume(); + } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-9) + && iterations < 100); + + if (Math.abs(h) > 1e-9) { + // System.out.println("h failed " + "Z" + Z + " iterations " + iterations + " + // BonV " + BonV); + return molarVolumeChangePhase(pressure, temperature, A, B, pt); } - - /** {@inheritDoc} */ - @Override - public double getGcpav() { - return gcpav; + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B + // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } - - /** - *

- * Setter for the field gcpav. - *

- * - * @param gcpav a double - */ - public void setGcpav(double gcpav) { - this.gcpav = gcpav; + return getMolarVolume(); + } + + /** + *

+ * molarVolumeChangePhase. + *

+ * + * @param pressure a double + * @param temperature a double + * @param A a double + * @param B a double + * @param pt the PhaseType of the phase + * @return a double + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double molarVolumeChangePhase(double pressure, double temperature, double A, double B, + PhaseType pt) throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + // double BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); + double BonV = calcRootVolFinder(pt); + // double BonVInit = BonV; + if (BonV < 0) { + BonV = 1.0e-8; } - /** {@inheritDoc} */ - @Override - public CPAMixingInterface getCpamix() { - return cpamix; + if (BonV >= 1.0) { + BonV = 0.9999; } - - /** {@inheritDoc} */ - @Override - public double calcPressure() { - gcpa = calc_g(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - solveX(); - hcpatot = calc_hCPA(); - - initCPAMatrix(1); - return super.calcPressure(); + double BonVold = BonV; + double Btemp = 0; + double h = 0; + double dh = 0; + double dhh = 0; + double d1 = 0; + double d2 = 0; + Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); } + calcDelta(); + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - /** {@inheritDoc} */ - @Override - public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { - if (comp1 == comp2) { - return selfAccociationScheme[comp1][site1][site2]; + do { + volInit(); + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } + + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + solveX(); + + initCPAMatrix(1); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + } + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 1.1) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; } else { - return crossAccociationScheme[comp1][comp2][site1][site2]; + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - } + } - /** - *

- * croeneckerProduct. - *

- * - * @param a an array of {@link double} objects - * @param b an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[][] croeneckerProduct(double[][] a, double[][] b) { - int aLength = a.length; - int aCols = a[0].length; - int bLength = b.length; - int bCols = b[0].length; - double[][] result = new double[aLength * bLength][(aCols) * (bCols)]; - for (int z = 0; z < aLength; z++) { - for (int i = 0; i < aCols; i++) { - for (int j = 0; j < bLength; j++) { - for (int k = 0; k < bCols; k++) { - result[j + (z * bLength)][k + (i * bCols)] = a[z][i] * b[j][k]; - } - } - } + if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; + } else { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - return result; - } + } - /** {@inheritDoc} */ - @Override - public int getTotalNumberOfAccociationSites() { - return totalNumberOfAccociationSites; - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); - /** {@inheritDoc} */ - @Override - public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { - this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; - } + // System.out.println("Z " + Z + "h " + h + " BONV " + (Math.abs((BonV - + // BonVold) / BonV))); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10) && iterations < 100); - /** - *

- * calc_g. - *

- * - * @return a double + /* + * if (Math.abs(h) > 1e-8) { if (pt == 0) { molarVolume(pressure, temperature, A, B, 1); } else + * { molarVolume(pressure, temperature, A, B, 0); } return getMolarVolume(); } */ - public double calc_g() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double g = 1.0 / (1.0 - x); - // System.out.println("g " + g); - return g; + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B + // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolumeChangePhase", + "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } - /** - *

- * calc_lngV. - *

- * - * @return a double - */ - public double calc_lngV() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double gv = (x / getTotalVolume()) / (1.0 - x); - return -gv; + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double getGcpav() { + return gcpav; + } + + /** + *

+ * Setter for the field gcpav. + *

+ * + * @param gcpav a double + */ + public void setGcpav(double gcpav) { + this.gcpav = gcpav; + } + + /** {@inheritDoc} */ + @Override + public CPAMixingInterface getCpamix() { + return cpamix; + } + + /** {@inheritDoc} */ + @Override + public double calcPressure() { + gcpa = calc_g(); + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + solveX(); + hcpatot = calc_hCPA(); + + initCPAMatrix(1); + return super.calcPressure(); + } + + /** {@inheritDoc} */ + @Override + public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { + if (comp1 == comp2) { + return selfAccociationScheme[comp1][site1][site2]; + } else { + return crossAccociationScheme[comp1][comp2][site1][site2]; } - - /** - *

- * calc_lngVV. - *

- * - * @return a double - */ - public double calc_lngVV() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double xV = -1.9 / 4.0 * getB() / (getTotalVolume() * getTotalVolume()); - double u = 1.0 - x; - - double val = -x / (getTotalVolume() * getTotalVolume() * u) + xV / (getTotalVolume() * u) - - x / (getTotalVolume() * u * u) * (-1.0) * xV; - return -val; - - // double gvv - // =0.225625/Math.pow(1.0-0.475*getB()/getTotalVolume(),2.0)*Math.pow(getB(),2.0)/(Math.pow(getTotalVolume(),4.0))+0.95/(1.0-0.475*getB()/getTotalVolume())*getB()/(Math.pow(getTotalVolume(),3.0)); - // System.out.println("val2 " + gvv); - // return gvv; - } - - /** - *

- * calc_lngVVV. - *

- * - * @return a double - */ - public double calc_lngVVV() { - double totVol = getTotalVolume(); - double totVol4 = totVol * totVol * totVol * totVol; - double totVol5 = totVol4 * totVol; - - double temp1 = 1.0 - 0.475 * getB() / getTotalVolume(); - double gvv = -0.21434375 / (temp1 * temp1 * temp1) * getB() * getB() * getB() - / (totVol5 * totVol) - 0.135375E1 / (temp1 * temp1) * getB() * getB() / (totVol5) - - 0.285E1 / (temp1) * getB() / (totVol4); - return gvv; + } + + /** + *

+ * croeneckerProduct. + *

+ * + * @param a an array of type double + * @param b an array of type double + * @return an array of type double + */ + public double[][] croeneckerProduct(double[][] a, double[][] b) { + int aLength = a.length; + int aCols = a[0].length; + int bLength = b.length; + int bCols = b[0].length; + double[][] result = new double[aLength * bLength][(aCols) * (bCols)]; + for (int z = 0; z < aLength; z++) { + for (int i = 0; i < aCols; i++) { + for (int j = 0; j < bLength; j++) { + for (int k = 0; k < bCols; k++) { + result[j + (z * bLength)][k + (i * bCols)] = a[z][i] * b[j][k]; + } + } + } } + return result; + } + + /** {@inheritDoc} */ + @Override + public int getTotalNumberOfAccociationSites() { + return totalNumberOfAccociationSites; + } + + /** {@inheritDoc} */ + @Override + public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { + this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; + } + + /** + *

+ * calc_g. + *

+ * + * @return a double + */ + public double calc_g() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double g = 1.0 / (1.0 - x); + // System.out.println("g " + g); + return g; + } + + /** + *

+ * calc_lngV. + *

+ * + * @return a double + */ + public double calc_lngV() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double gv = (x / getTotalVolume()) / (1.0 - x); + return -gv; + } + + /** + *

+ * calc_lngVV. + *

+ * + * @return a double + */ + public double calc_lngVV() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double xV = -1.9 / 4.0 * getB() / (getTotalVolume() * getTotalVolume()); + double u = 1.0 - x; + + double val = -x / (getTotalVolume() * getTotalVolume() * u) + xV / (getTotalVolume() * u) + - x / (getTotalVolume() * u * u) * (-1.0) * xV; + return -val; + + // double gvv + // =0.225625/Math.pow(1.0-0.475*getB()/getTotalVolume(),2.0)*Math.pow(getB(),2.0)/(Math.pow(getTotalVolume(),4.0))+0.95/(1.0-0.475*getB()/getTotalVolume())*getB()/(Math.pow(getTotalVolume(),3.0)); + // System.out.println("val2 " + gvv); + // return gvv; + } + + /** + *

+ * calc_lngVVV. + *

+ * + * @return a double + */ + public double calc_lngVVV() { + double totVol = getTotalVolume(); + double totVol4 = totVol * totVol * totVol * totVol; + double totVol5 = totVol4 * totVol; + + double temp1 = 1.0 - 0.475 * getB() / getTotalVolume(); + double gvv = + -0.21434375 / (temp1 * temp1 * temp1) * getB() * getB() * getB() / (totVol5 * totVol) + - 0.135375E1 / (temp1 * temp1) * getB() * getB() / (totVol5) + - 0.285E1 / (temp1) * getB() / (totVol4); + return gvv; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseElectrolyteCPAOld.java b/src/main/java/neqsim/thermo/phase/PhaseElectrolyteCPAOld.java index e8378dc829..1658ef37ee 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseElectrolyteCPAOld.java +++ b/src/main/java/neqsim/thermo/phase/PhaseElectrolyteCPAOld.java @@ -17,804 +17,813 @@ * @version $Id: $Id */ public class PhaseElectrolyteCPAOld extends PhaseModifiedFurstElectrolyteEos - implements PhaseCPAInterface { - private static final long serialVersionUID = 1000; - - public CPAMixing cpaSelect = new CPAMixing(); - - int totalNumberOfAccociationSites = 0; - public CPAMixingInterface cpamix; - double hcpatot = 1.0, hcpatotdT = 0.0, hcpatotdTdT = 0.0, gcpav = 0.0, lngcpa = 0.0, - lngcpav = 0.0, gcpavv = 1.0, gcpavvv = 0.0, gcpa = 0.0; - int cpaon = 1; - int[][][] selfAccociationScheme = null; - int[][][][] crossAccociationScheme = null; - double dFdVdXdXdVtotal = 0.0; - double dFCPAdXdXdTtotal = 0.0, dFCPAdTdT = 0.0; - - static Logger logger = LogManager.getLogger(PhaseElectrolyteCPAOld.class); - - /** - *

- * Constructor for PhaseElectrolyteCPAOld. - *

- */ - public PhaseElectrolyteCPAOld() { - super(); - } - - /** {@inheritDoc} */ - @Override - public PhaseElectrolyteCPAOld clone() { - PhaseElectrolyteCPAOld clonedPhase = null; - try { - clonedPhase = (PhaseElectrolyteCPAOld) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + implements PhaseCPAInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseElectrolyteCPAOld.class); + + public CPAMixing cpaSelect = new CPAMixing(); + + int totalNumberOfAccociationSites = 0; + public CPAMixingInterface cpamix; + double hcpatot = 1.0; + double hcpatotdT = 0.0; + double hcpatotdTdT = 0.0; + double gcpav = 0.0; + double lngcpa = 0.0; + double lngcpav = 0.0; + double gcpavv = 1.0; + double gcpavvv = 0.0; + double gcpa = 0.0; + + int cpaon = 1; + int[][][] selfAccociationScheme = null; + int[][][][] crossAccociationScheme = null; + double dFdVdXdXdVtotal = 0.0; + double dFCPAdXdXdTtotal = 0.0; + double dFCPAdTdT = 0.0; + + /** + *

+ * Constructor for PhaseElectrolyteCPAOld. + *

+ */ + public PhaseElectrolyteCPAOld() { + super(); + } + + /** {@inheritDoc} */ + @Override + public PhaseElectrolyteCPAOld clone() { + PhaseElectrolyteCPAOld clonedPhase = null; + try { + clonedPhase = (PhaseElectrolyteCPAOld) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); + + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + if (initType == 0) { + selfAccociationScheme = new int[numberOfComponents][0][0]; + crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; + for (int i = 0; i < numberOfComponents; i++) { + selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); + for (int j = 0; j < numberOfComponents; j++) { + crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); } - // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); - - return clonedPhase; - } - - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - if (type == 0) { - selfAccociationScheme = new int[numberOfComponents][0][0]; - crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; - for (int i = 0; i < numberOfComponents; i++) { - selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); - for (int j = 0; j < numberOfComponents; j++) { - crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); - } - } - } - do { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } while (!solveX()); - - // System.out.println("test1 " + dFCPAdT()); - if (type > 1) { - // calcXsitedT(); - // System.out.println("test2 " + dFCPAdT()); - hcpatotdT = calc_hCPAdT(); - hcpatotdTdT = calc_hCPAdTdT(); + } + } + do { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + } while (!solveX()); + + // System.out.println("test1 " + dFCPAdT()); + if (initType > 1) { + // calcXsitedT(); + // System.out.println("test2 " + dFCPAdT()); + hcpatotdT = calc_hCPAdT(); + hcpatotdTdT = calc_hCPAdTdT(); + } + + // System.out.println("tot iter " + totiter); + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + cpamix = cpaSelect.getMixingRule(1, this); + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentElectrolyteCPA(name, moles, molesInPhase, compNumber); + } + + /** {@inheritDoc} */ + @Override + public double getF() { + return super.getF() + cpaon * FCPA(); + } + + /** {@inheritDoc} */ + @Override + public double dFdT() { + return super.dFdT() + cpaon * dFCPAdT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdV() { + return super.dFdTdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + // double dv = super.dFdV(); + double dv2 = dFCPAdV(); + // System.out.println("dv " + dv + " dvcpa " + dv2); + return super.dFdV() + cpaon * dv2; + } + + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return super.dFdVdV() + cpaon * dFCPAdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdVdVdV() { + return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdT() { + return super.dFdTdT() + cpaon * dFCPAdTdT(); + } + + /** + *

+ * FCPA. + *

+ * + * @return a double + */ + public double FCPA() { + double tot = 0.0; + double ans = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + tot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + double xai = ((ComponentElectrolyteCPA) getComponent(i)).getXsite()[j]; + tot += (Math.log(xai) - 1.0 / 2.0 * xai + 1.0 / 2.0); + } + ans += getComponent(i).getNumberOfMolesInPhase() * tot; + } + return ans; + } + + /** + *

+ * dFCPAdV. + *

+ * + * @return a double + */ + public double dFCPAdV() { + return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatot; + } + + /** + *

+ * dFCPAdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdV() { + return -1.0 / getTotalVolume() * dFCPAdV() + + hcpatot / (2.0 * getTotalVolume()) * (-getGcpav() - getTotalVolume() * gcpavv) + + getdFdVdXdXdVtotal(); + } + + /** + *

+ * dFCPAdVdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdVdV() { + return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / Math.pow(getTotalVolume(), 2.0) * dFCPAdV() + - hcpatot / (2.0 * Math.pow(getTotalVolume(), 2.0)) + * (-getGcpav() - getTotalVolume() * gcpavv) + + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv - gcpavv); + } + + /** + *

+ * dFCPAdT. + *

+ * + * @return a double + */ + public double dFCPAdT() { + // System.out.println("dFCPAdXdXdTtotal " + dFCPAdXdXdTtotal); + return dFCPAdXdXdTtotal; + // -1.0 / 2.0 * hcpatotdT; + } + + /** + *

+ * dFCPAdTdT. + *

+ * + * @return a double + */ + public double dFCPAdTdT() { + return dFCPAdTdT; // -1.0 / 2.0 * hcpatotdTdT; + } + + /** + *

+ * calc_hCPA. + *

+ * + * @return a double + */ + public double calc_hCPA() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + htot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + htot += (1.0 - ((ComponentElectrolyteCPA) getComponent(i)).getXsite()[j]); + } + tot += getComponent(i).getNumberOfMolesInPhase() * htot; + } + // System.out.println("tot " +tot ); + return tot; + } + + /** + *

+ * calc_hCPAdT. + *

+ * + * @return a double + */ + public double calc_hCPAdT() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int k = 0; k < numberOfComponents; k++) { + htot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + for (int l = 0; l < getComponent(k).getNumberOfAssociationSites(); l++) { + htot += ((ComponentElectrolyteCPA) getComponent(i)).getXsite()[j] + * ((ComponentElectrolyteCPA) getComponent(k)).getXsite()[l] + * cpamix.calcDeltadT(j, l, i, k, this, temperature, pressure, numberOfComponents); + } } - // System.out.println("tot iter " + totiter); - } - - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - cpamix = cpaSelect.getMixingRule(1, this); - } - - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentElectrolyteCPA(componentName, moles, molesInPhase, compNumber); - } - - /** {@inheritDoc} */ - @Override - public double getF() { - return super.getF() + cpaon * FCPA(); - } - - /** {@inheritDoc} */ - @Override - public double dFdT() { - return super.dFdT() + cpaon * dFCPAdT(); - } - - /** {@inheritDoc} */ - @Override - public double dFdTdV() { - return super.dFdTdV(); - } - - /** {@inheritDoc} */ - @Override - public double dFdV() { - // double dv = super.dFdV(); - double dv2 = dFCPAdV(); - // System.out.println("dv " + dv + " dvcpa " + dv2); - return super.dFdV() + cpaon * dv2; - } - - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return super.dFdVdV() + cpaon * dFCPAdVdV(); - } - - /** {@inheritDoc} */ - @Override - public double dFdVdVdV() { - return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); - } - - /** {@inheritDoc} */ - @Override - public double dFdTdT() { - return super.dFdTdT() + cpaon * dFCPAdTdT(); - } - - /** - *

- * FCPA. - *

- * - * @return a double - */ - public double FCPA() { - double tot = 0.0; - double ans = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - tot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - double xai = ((ComponentElectrolyteCPA) getComponent(i)).getXsite()[j]; - tot += (Math.log(xai) - 1.0 / 2.0 * xai + 1.0 / 2.0); - } - ans += getComponent(i).getNumberOfMolesInPhase() * tot; + tot += getComponent(i).getNumberOfMolesInPhase() * getComponent(k).getNumberOfMolesInPhase() + * htot; + } + } + // System.out.println("tot " +tot ); + return tot / getTotalVolume(); + } + + /** + *

+ * calc_hCPAdTdT. + *

+ * + * @return a double + */ + public double calc_hCPAdTdT() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int k = 0; k < numberOfComponents; k++) { + htot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + for (int l = 0; l < getComponent(k).getNumberOfAssociationSites(); l++) { + htot += ((ComponentElectrolyteCPA) getComponent(i)).getXsite()[j] + * ((ComponentElectrolyteCPA) getComponent(k)).getXsite()[l] + * cpamix.calcDeltadTdT(j, l, i, k, this, temperature, pressure, numberOfComponents); + } } - return ans; - } - - /** - *

- * dFCPAdV. - *

- * - * @return a double - */ - public double dFCPAdV() { - return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatot; - } - /** - *

- * dFCPAdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdV() { - return -1.0 / getTotalVolume() * dFCPAdV() - + hcpatot / (2.0 * getTotalVolume()) * (-getGcpav() - getTotalVolume() * gcpavv) - + getdFdVdXdXdVtotal(); - } - - /** - *

- * dFCPAdVdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdVdV() { - return -1.0 / getTotalVolume() * dFCPAdVdV() - + 1.0 / Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - - hcpatot / (2.0 * Math.pow(getTotalVolume(), 2.0)) - * (-getGcpav() - getTotalVolume() * gcpavv) - + hcpatot / (2.0 * getTotalVolume()) - * (-gcpavv - getTotalVolume() * gcpavvv - gcpavv); - } - - /** - *

- * dFCPAdT. - *

- * - * @return a double - */ - public double dFCPAdT() { - // System.out.println("dFCPAdXdXdTtotal " + dFCPAdXdXdTtotal); - return dFCPAdXdXdTtotal; - // -1.0 / 2.0 * hcpatotdT; - } - - /** - *

- * dFCPAdTdT. - *

- * - * @return a double - */ - public double dFCPAdTdT() { - return dFCPAdTdT;// -1.0 / 2.0 * hcpatotdTdT; - } - - /** - *

- * calc_hCPA. - *

- * - * @return a double - */ - public double calc_hCPA() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - htot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - htot += (1.0 - ((ComponentElectrolyteCPA) getComponent(i)).getXsite()[j]); - } - tot += getComponent(i).getNumberOfMolesInPhase() * htot; + tot += getComponent(i).getNumberOfMolesInPhase() * getComponent(k).getNumberOfMolesInPhase() + * htot; + } + } + // System.out.println("tot " +tot ); + return tot / getTotalVolume(); + } + + /** + *

+ * calc_g. + *

+ * + * @return a double + */ + public double calc_g() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double g = 1.0 / (1.0 - x); + // System.out.println("ratio " + getMolarVolume()/getb()); + return g; + } + + /** + *

+ * calc_lngni. + *

+ * + * @param comp a int + * @return a double + */ + public double calc_lngni(int comp) { + double nbet = getb() / 4.0 / getMolarVolume(); + double dlngdb = 1.9 / (1.0 - 1.9 * nbet); + double nbeti = nbet / getb() * ((ComponentEosInterface) getComponent(comp)).getBi(); + return dlngdb * nbeti; + } + + /** + *

+ * calc_lngV. + *

+ * + * @return a double + */ + public double calc_lngV() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double gv = (x / getTotalVolume()) / (1.0 - x); + return -gv; + } + + /** + *

+ * calc_lngVV. + *

+ * + * @return a double + */ + public double calc_lngVV() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double xV = -1.9 / 4.0 * getB() / Math.pow(getTotalVolume(), 2.0); + double u = 1.0 - x; + + double val = -x / (Math.pow(getTotalVolume(), 2.0) * u) + xV / (getTotalVolume() * u) + - x / (getTotalVolume() * u * u) * (-1.0) * xV; + return -val; + + // double gvv + // =0.225625/Math.pow(1.0-0.475*getB()/getTotalVolume(),2.0)*Math.pow(getB(),2.0)/(Math.pow(getTotalVolume(),4.0))+0.95/(1.0-0.475*getB()/getTotalVolume())*getB()/(Math.pow(getTotalVolume(),3.0)); + // System.out.println("val2 " + gvv); + // return gvv; + } + + /** + *

+ * calc_lngVVV. + *

+ * + * @return a double + */ + public double calc_lngVVV() { + double gvv = -0.21434375 / Math.pow(1.0 - 0.475 * getB() / getTotalVolume(), 3.0) + * Math.pow(getB(), 3.0) / (Math.pow(getTotalVolume(), 6.0)) + - 0.135375E1 / Math.pow(1.0 - 0.475 * getB() / getTotalVolume(), 2.0) + * Math.pow(getB(), 2.0) / (Math.pow(getTotalVolume(), 5.0)) + - 0.285E1 / (1.0 - 0.475 * getB() / getTotalVolume()) * getB() + / (Math.pow(getTotalVolume(), 4.0)); + return gvv; + } + + /** + *

+ * setXsiteOld. + *

+ */ + public void setXsiteOld() { + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + ((ComponentCPAInterface) getComponent(i)).setXsiteOld(j, + ((ComponentCPAInterface) getComponent(i)).getXsite()[j]); + } + } + } + + /** + *

+ * setXsitedV. + *

+ * + * @param dV a double + */ + public void setXsitedV(double dV) { + dFdVdXdXdVtotal = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + double XdV = (((ComponentCPAInterface) getComponent(i)).getXsite()[j] + - ((ComponentCPAInterface) getComponent(i)).getXsiteOld()[j]) / dV; + ((ComponentCPAInterface) getComponent(i)).setXsitedV(j, XdV); + dFdVdXdXdVtotal += XdV * ((ComponentCPAInterface) getComponent(i)).dFCPAdVdXi(j, this); + // System.out.println("xidv " + XdV); + } + } + } + + /** + *

+ * calcXsitedT. + *

+ */ + public void calcXsitedT() { + double dt = 0.01; + double XdT = 0.0; + setXsiteOld(); + setTemperature(temperature + dt); + solveX(); + dFCPAdXdXdTtotal = 0.0; + dFCPAdTdT = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + XdT = (((ComponentCPAInterface) getComponent(i)).getXsite()[j] + - ((ComponentCPAInterface) getComponent(i)).getXsiteOld()[j]) / dt; + ((ComponentCPAInterface) getComponent(i)).setXsitedT(j, XdT); + dFCPAdXdXdTtotal += XdT * ((ComponentCPAInterface) getComponent(i)).dFCPAdXi(j, this); + } + } + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + for (int k = 0; k < numberOfComponents; k++) { + for (int j2 = 0; j2 < getComponent(k).getNumberOfAssociationSites(); j2++) { + dFCPAdTdT += ((ComponentCPAInterface) getComponent(i)).dFCPAdXidXj(j, j2, k, this) + * ((ComponentCPAInterface) getComponent(i)).getXsitedT()[j] + * ((ComponentCPAInterface) getComponent(k)).getXsitedT()[j2]; + } } - // System.out.println("tot " +tot ); - return tot; - } - - /** - *

- * calc_hCPAdT. - *

- * - * @return a double - */ - public double calc_hCPAdT() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int k = 0; k < numberOfComponents; k++) { - htot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - for (int l = 0; l < getComponent(k).getNumberOfAssociationSites(); l++) { - htot += ((ComponentElectrolyteCPA) getComponent(i)).getXsite()[j] - * ((ComponentElectrolyteCPA) getComponent(k)).getXsite()[l] - * cpamix.calcDeltadT(j, l, i, k, this, temperature, pressure, - numberOfComponents); - } - } - - tot += getComponent(i).getNumberOfMolesInPhase() - * getComponent(k).getNumberOfMolesInPhase() * htot; - } + } + } + setTemperature(temperature - dt); + solveX(); + } + + /** + *

+ * Getter for the field dFdVdXdXdVtotal. + *

+ * + * @return a double + */ + public double getdFdVdXdXdVtotal() { + return dFdVdXdXdVtotal; + } + + /** + *

+ * solveX. + *

+ * + * @return a boolean + */ + public boolean solveX() { + double err = .0; + int iter = 0; + + do { + iter++; + err = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + double old = ((ComponentElectrolyteCPA) getComponent(i)).getXsite()[j]; + double neeval = getCpamix().calcXi(selfAccociationScheme, crossAccociationScheme, j, i, + this, temperature, pressure, numberOfComponents); + ((ComponentCPAInterface) getComponent(i)).setXsite(j, neeval); + err += Math.abs((old - neeval) / neeval); } - // System.out.println("tot " +tot ); - return tot / getTotalVolume(); - } - - /** - *

- * calc_hCPAdTdT. - *

- * - * @return a double - */ - public double calc_hCPAdTdT() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int k = 0; k < numberOfComponents; k++) { - htot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - for (int l = 0; l < getComponent(k).getNumberOfAssociationSites(); l++) { - htot += ((ComponentElectrolyteCPA) getComponent(i)).getXsite()[j] - * ((ComponentElectrolyteCPA) getComponent(k)).getXsite()[l] - * cpamix.calcDeltadTdT(j, l, i, k, this, temperature, pressure, - numberOfComponents); - } - } - - tot += getComponent(i).getNumberOfMolesInPhase() - * getComponent(k).getNumberOfMolesInPhase() * htot; - } + } + // System.out.println("err " + err); + } while (Math.abs(err) > 1e-10 && iter < 100); + // System.out.println("iter " +iter); + return Math.abs(err) < 1e-10; + } + + /** {@inheritDoc} */ + @Override + public double getHcpatot() { + return hcpatot; + } + + /** + * Setter for property hcpatot. + * + * @param hcpatot New value of property hcpatot. + */ + public void setHcpatot(double hcpatot) { + this.hcpatot = hcpatot; + } + + /** {@inheritDoc} */ + @Override + public double getGcpa() { + return gcpa; + } + + /** + *

+ * molarVolume3. + *

+ * + * @param pressure a double + * @param temperature a double + * @param A a double + * @param B a double + * @param pt the PhaseType of the phase + * @return a double + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double molarVolume3(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + + if (BonV < 0) { + BonV = 1.0e-8; + } + if (BonV > 1.0) { + BonV = 1.0 - 1.0e-8; + } + double BonVold = BonV; + double Btemp = 0; + double h = 0; + double dh = 0; + double dhh = 0; + // double Dtemp = 0, gvvv = 0, fvvv = 0; + double d1 = 0; + double d2 = 0; + Btemp = getB(); + // Dtemp = getA(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); + } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; + int maxIterations = 101; + do { + this.volInit(); + gcpa = calc_g(); + lngcpa = Math.log(gcpa); + gcpav = calc_lngV(); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + solveX(); + hcpatot = calc_hCPA(); + + iterations++; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / Math.pow(BonV, 2.0) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / Math.pow(BonV, 3.0) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - Math.pow(Btemp, 2.0) / Math.pow(BonV, 4.0) + * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += d1 * (1.0 + 0.5 * -1.0); + } else if (d1 / d2 > 1) { + BonV += d2; + double hnew = h + d2 * -h / d1; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - // System.out.println("tot " +tot ); - return tot / getTotalVolume(); - } - - /** - *

- * calc_g. - *

- * - * @return a double - */ - public double calc_g() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double g = 1.0 / (1.0 - x); - // System.out.println("ratio " + getMolarVolume()/getb()); - return g; - } - - /** - *

- * calc_lngni. - *

- * - * @param comp a int - * @return a double - */ - public double calc_lngni(int comp) { - double nbet = getb() / 4.0 / getMolarVolume(); - double dlngdb = 1.9 / (1.0 - 1.9 * nbet); - double nbeti = nbet / getb() * ((ComponentEosInterface) getComponent(comp)).getBi(); - return dlngdb * nbeti; - } - - /** - *

- * calc_lngV. - *

- * - * @return a double - */ - public double calc_lngV() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double gv = (x / getTotalVolume()) / (1.0 - x); - return -gv; - } - - /** - *

- * calc_lngVV. - *

- * - * @return a double - */ - public double calc_lngVV() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double xV = -1.9 / 4.0 * getB() / Math.pow(getTotalVolume(), 2.0); - double u = 1.0 - x; - - double val = -x / (Math.pow(getTotalVolume(), 2.0) * u) + xV / (getTotalVolume() * u) - - x / (getTotalVolume() * u * u) * (-1.0) * xV; - return -val; - - // double gvv - // =0.225625/Math.pow(1.0-0.475*getB()/getTotalVolume(),2.0)*Math.pow(getB(),2.0)/(Math.pow(getTotalVolume(),4.0))+0.95/(1.0-0.475*getB()/getTotalVolume())*getB()/(Math.pow(getTotalVolume(),3.0)); - // System.out.println("val2 " + gvv); - // return gvv; - } - - /** - *

- * calc_lngVVV. - *

- * - * @return a double - */ - public double calc_lngVVV() { - double gvv = -0.21434375 / Math.pow(1.0 - 0.475 * getB() / getTotalVolume(), 3.0) - * Math.pow(getB(), 3.0) / (Math.pow(getTotalVolume(), 6.0)) - - 0.135375E1 / Math.pow(1.0 - 0.475 * getB() / getTotalVolume(), 2.0) - * Math.pow(getB(), 2.0) / (Math.pow(getTotalVolume(), 5.0)) - - 0.285E1 / (1.0 - 0.475 * getB() / getTotalVolume()) * getB() - / (Math.pow(getTotalVolume(), 4.0)); - return gvv; - } - - /** - *

- * setXsiteOld. - *

- */ - public void setXsiteOld() { - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - ((ComponentCPAInterface) getComponent(i)).setXsiteOld(j, - ((ComponentCPAInterface) getComponent(i)).getXsite()[j]); - } - } - } - - /** - *

- * setXsitedV. - *

- * - * @param dV a double - */ - public void setXsitedV(double dV) { - dFdVdXdXdVtotal = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - double XdV = (((ComponentCPAInterface) getComponent(i)).getXsite()[j] - - ((ComponentCPAInterface) getComponent(i)).getXsiteOld()[j]) / dV; - ((ComponentCPAInterface) getComponent(i)).setXsitedV(j, XdV); - dFdVdXdXdVtotal += - XdV * ((ComponentCPAInterface) getComponent(i)).dFCPAdVdXi(j, this); - // System.out.println("xidv " + XdV); - } - } - } - - /** - *

- * calcXsitedT. - *

- */ - public void calcXsitedT() { - double dt = 0.01, XdT = 0.0; - setXsiteOld(); - setTemperature(temperature + dt); - solveX(); - dFCPAdXdXdTtotal = 0.0; - dFCPAdTdT = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - XdT = (((ComponentCPAInterface) getComponent(i)).getXsite()[j] - - ((ComponentCPAInterface) getComponent(i)).getXsiteOld()[j]) / dt; - ((ComponentCPAInterface) getComponent(i)).setXsitedT(j, XdT); - dFCPAdXdXdTtotal += - XdT * ((ComponentCPAInterface) getComponent(i)).dFCPAdXi(j, this); - } - } - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - for (int k = 0; k < numberOfComponents; k++) { - for (int j2 = 0; j2 < getComponent(k).getNumberOfAssociationSites(); j2++) { - dFCPAdTdT += ((ComponentCPAInterface) getComponent(i)).dFCPAdXidXj(j, j2, k, - this) * ((ComponentCPAInterface) getComponent(i)).getXsitedT()[j] - * ((ComponentCPAInterface) getComponent(k)).getXsitedT()[j2]; - } - } - } - } - setTemperature(temperature - dt); - solveX(); - } - - /** - *

- * Getter for the field dFdVdXdXdVtotal. - *

- * - * @return a double - */ - public double getdFdVdXdXdVtotal() { - return dFdVdXdXdVtotal; - } - - /** - *

- * solveX. - *

- * - * @return a boolean - */ - public boolean solveX() { - double err = .0; - int iter = 0; - - do { - iter++; - err = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - double old = ((ComponentElectrolyteCPA) getComponent(i)).getXsite()[j]; - double neeval = - getCpamix().calcXi(selfAccociationScheme, crossAccociationScheme, j, i, - this, temperature, pressure, numberOfComponents); - ((ComponentCPAInterface) getComponent(i)).setXsite(j, neeval); - err += Math.abs((old - neeval) / neeval); - } - } - // System.out.println("err " + err); - } while (Math.abs(err) > 1e-10 && iter < 100); - // System.out.println("iter " +iter); - return Math.abs(err) < 1e-10; - } - - /** {@inheritDoc} */ - @Override - public double getHcpatot() { - return hcpatot; - } - - /** - * Setter for property hcpatot. - * - * @param hcpatot New value of property hcpatot. - */ - public void setHcpatot(double hcpatot) { - this.hcpatot = hcpatot; - } - - /** {@inheritDoc} */ - @Override - public double getGcpa() { - return gcpa; - } - - /** - *

- * molarVolume3. - *

- * - * @param pressure a double - * @param temperature a double - * @param A a double - * @param B a double - * @param phasetype a int - * @return a double - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. - */ - public double molarVolume3(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - - if (BonV < 0) { - BonV = 1.0e-8; - } - if (BonV > 1.0) { - BonV = 1.0 - 1.0e-8; - } - double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0, dhh = 0; - // double Dtemp = 0, gvvv = 0, fvvv = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - // Dtemp = getA(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); + } + + if (BonV > 1) { + BonV = 1.0 - 1.0e-8; + BonVold = 10; + } + if (BonV < 0) { + BonV = 1.0e-8; + BonVold = 10; + } + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + // System.out.println("Z" + Z); + } while (Math.abs((BonV - BonVold) / BonV) > 1.0e-10 && iterations < maxIterations); + // System.out.println("Z" + Z + " iterations " + iterations); + // System.out.println("pressure " + Z*R*temperature/molarVolume); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/molarVolume-R*temperature*dFdV()) + " firstterm " + + // (R*temperature/molarVolume) + " second " + R*temperature*dFdV()); + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume3", "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); + } + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + + if (BonV < 0) { + BonV = 1.0e-8; + } + if (BonV > 1.0) { + BonV = 1.0 - 1.0e-8; + } + double BonVold = BonV; + double Btemp = 0; + double h = 0; + double dh = 0; + double dhh = 0; + // double Dtemp = 0, fvvv = 0, gvvv = 0; + double d1 = 0; + double d2 = 0; + Btemp = getB(); + // Dtemp = getA(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); + } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; + int maxIterations = 1000; + double oldVolume = getVolume(); + do { + this.volInit(); + gcpa = calc_g(); + lngcpa = Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + solveX(); + hcpatot = calc_hCPA(); + + double dV = getVolume() - oldVolume; + if (iterations > 0) { + setXsitedV(dV); + } + oldVolume = getVolume(); + setXsiteOld(); + + iterations++; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / Math.pow(BonV, 2.0) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / Math.pow(BonV, 3.0) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - Math.pow(Btemp, 2.0) / Math.pow(BonV, 4.0) + * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += d1 * (1.0 + 0.5 * -1.0); + } else if (d1 / d2 > 1) { + BonV += d2; + double hnew = h + d2 * -h / d1; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - - do { - this.volInit(); - gcpa = calc_g(); - lngcpa = Math.log(gcpa); - gcpav = calc_lngV(); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - solveX(); - hcpatot = calc_hCPA(); - - iterations++; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / Math.pow(BonV, 2.0) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / Math.pow(BonV, 3.0) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - Math.pow(Btemp, 2.0) / Math.pow(BonV, 4.0) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += d1 * (1.0 + 0.5 * -1.0); - } else if (d1 / d2 > 1) { - BonV += d2; - double hnew = h + d2 * -h / d1; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - if (BonV > 1) { - BonV = 1.0 - 1.0e-8; - BonVold = 10; - } - if (BonV < 0) { - BonV = 1.0e-8; - BonVold = 10; - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - // System.out.println("Z" + Z); - } while (Math.abs((BonV - BonVold) / BonV) > 1.0e-10 && iterations < 101); - // System.out.println("Z" + Z + " iterations " + iterations); - // System.out.println("pressure " + Z*R*temperature/molarVolume); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/molarVolume-R*temperature*dFdV()) + " firstterm " + - // (R*temperature/molarVolume) + " second " + R*temperature*dFdV()); - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume3", "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); - } - return getMolarVolume(); - } - - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - - if (BonV < 0) { - BonV = 1.0e-8; - } - if (BonV > 1.0) { - BonV = 1.0 - 1.0e-8; - } - double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0, dhh = 0; - // double Dtemp = 0, fvvv = 0, gvvv = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - // Dtemp = getA(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); - } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - int maxIterations = 1000; - double oldVolume = getVolume(); - do { - this.volInit(); - gcpa = calc_g(); - lngcpa = Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - solveX(); - hcpatot = calc_hCPA(); - - double dV = getVolume() - oldVolume; - if (iterations > 0) { - setXsitedV(dV); - } - oldVolume = getVolume(); - setXsiteOld(); - - iterations++; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / Math.pow(BonV, 2.0) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / Math.pow(BonV, 3.0) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - Math.pow(Btemp, 2.0) / Math.pow(BonV, 4.0) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += d1 * (1.0 + 0.5 * -1.0); - } else if (d1 / d2 > 1) { - BonV += d2; - double hnew = h + d2 * -h / d1; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - if (BonV > 1) { - BonV = 1.0 - 1.0e-8; - BonVold = 10; - } - if (BonV < 0) { - BonV = 1.0e-8; - BonVold = 10; - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - - // System.out.println("Z" + Z); - } while (Math.abs((BonV - BonVold) / BonV) > 1.0e-10 && iterations < maxIterations); - // System.out.println("Z" + Z + " iterations " + iterations + " h " + h); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); - } - return getMolarVolume(); - } - - /** {@inheritDoc} */ - @Override - public double molarVolume2(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - Z = phase == 0 ? 1.0 : 1.0e-5; + } + + if (BonV > 1) { + BonV = 1.0 - 1.0e-8; + BonVold = 10; + } + if (BonV < 0) { + BonV = 1.0e-8; + BonVold = 10; + } + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + + // System.out.println("Z" + Z); + } while (Math.abs((BonV - BonVold) / BonV) > 1.0e-10 && iterations < maxIterations); + // System.out.println("Z" + Z + " iterations " + iterations + " h " + h); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); + } + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double molarVolume2(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + Z = pt == PhaseType.LIQUID ? 1.0 : 1.0e-5; + setMolarVolume(Z * R * temperature / pressure); + // super.molarVolume(pressure,temperature, A, B, phase); + int iterations = 0; + double err = 0.0; + double dErrdV = 0.0; + double deltaV = 0; + + do { + A = calcA(this, temperature, pressure, numberOfComponents); + B = calcB(this, temperature, pressure, numberOfComponents); + double dFdV = dFdV(); + double dFdVdV = dFdVdV(); + // double dFdVdVdV = dFdVdVdV(); + // double factor1 = 1.0e0, factor2 = 1.0e0; + err = -R * temperature * dFdV + R * temperature / getMolarVolume() - pressure; + + logger.info("pressure " + -R * temperature * dFdV + " " + R * temperature / getMolarVolume()); + // -pressure; + dErrdV = -R * temperature * dFdVdV + - R * temperature * numberOfMolesInPhase / Math.pow(getVolume(), 2.0); + + logger.info("errdV " + dErrdV); + logger.info("err " + err); + + deltaV = -err / dErrdV; + + setMolarVolume(getMolarVolume() + deltaV / numberOfMolesInPhase); + + Z = pressure * getMolarVolume() / (R * temperature); + if (Z < 0) { + Z = 1e-6; setMolarVolume(Z * R * temperature / pressure); - // super.molarVolume(pressure,temperature, A, B, phase); - int iterations = 0; - double err = 0.0, dErrdV = 0.0; - double deltaV = 0; - - do { - A = calcA(this, temperature, pressure, numberOfComponents); - B = calcB(this, temperature, pressure, numberOfComponents); - double dFdV = dFdV(), dFdVdV = dFdVdV(); - // double dFdVdVdV = dFdVdVdV(); - // double factor1 = 1.0e0, factor2 = 1.0e0; - err = -R * temperature * dFdV + R * temperature / getMolarVolume() - pressure; - - logger.info("pressure " + -R * temperature * dFdV + " " - + R * temperature / getMolarVolume()); - // -pressure; - dErrdV = -R * temperature * dFdVdV - - R * temperature * numberOfMolesInPhase / Math.pow(getVolume(), 2.0); - - logger.info("errdV " + dErrdV); - logger.info("err " + err); - - deltaV = -err / dErrdV; - - setMolarVolume(getMolarVolume() + deltaV / numberOfMolesInPhase); - - Z = pressure * getMolarVolume() / (R * temperature); - if (Z < 0) { - Z = 1e-6; - setMolarVolume(Z * R * temperature / pressure); - } - // System.out.println("Z " + Z); - } while (Math.abs(err) > 1.0e-8 || iterations < 100); - // System.out.println("Z " + Z); - return getMolarVolume(); - } - - /** {@inheritDoc} */ - @Override - public double getGcpav() { - return gcpav; - } - - /** - *

- * Setter for the field gcpav. - *

- * - * @param gcpav a double - */ - public void setGcpav(double gcpav) { - this.gcpav = gcpav; - } - - /** {@inheritDoc} */ - @Override - public CPAMixingInterface getCpamix() { - return cpamix; - } - - /** {@inheritDoc} */ - @Override - public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { - if (comp1 == comp2) { - return selfAccociationScheme[comp1][site1][site2]; - } - return crossAccociationScheme[comp1][comp2][site1][site2]; - } - - /** {@inheritDoc} */ - @Override - public int getTotalNumberOfAccociationSites() { - return totalNumberOfAccociationSites; - } - - /** {@inheritDoc} */ - @Override - public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { - this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; - } + } + // System.out.println("Z " + Z); + } while (Math.abs(err) > 1.0e-8 || iterations < 100); + // System.out.println("Z " + Z); + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double getGcpav() { + return gcpav; + } + + /** + *

+ * Setter for the field gcpav. + *

+ * + * @param gcpav a double + */ + public void setGcpav(double gcpav) { + this.gcpav = gcpav; + } + + /** {@inheritDoc} */ + @Override + public CPAMixingInterface getCpamix() { + return cpamix; + } + + /** {@inheritDoc} */ + @Override + public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { + if (comp1 == comp2) { + return selfAccociationScheme[comp1][site1][site2]; + } + return crossAccociationScheme[comp1][comp2][site1][site2]; + } + + /** {@inheritDoc} */ + @Override + public int getTotalNumberOfAccociationSites() { + return totalNumberOfAccociationSites; + } + + /** {@inheritDoc} */ + @Override + public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { + this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseElectrolyteCPAstatoil.java b/src/main/java/neqsim/thermo/phase/PhaseElectrolyteCPAstatoil.java index e0499efe71..778de98fe3 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseElectrolyteCPAstatoil.java +++ b/src/main/java/neqsim/thermo/phase/PhaseElectrolyteCPAstatoil.java @@ -3,6 +3,7 @@ * * Created on 3. juni 2000, 14:38 */ + package neqsim.thermo.phase; import neqsim.thermo.component.ComponentElectrolyteCPAstatoil; @@ -16,81 +17,80 @@ * @version $Id: $Id */ public class PhaseElectrolyteCPAstatoil extends PhaseElectrolyteCPA { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseElectrolyteCPAstatoil. - *

- */ - public PhaseElectrolyteCPAstatoil() { - super(); - } + /** + *

+ * Constructor for PhaseElectrolyteCPAstatoil. + *

+ */ + public PhaseElectrolyteCPAstatoil() { + super(); + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentElectrolyteCPAstatoil(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = + new ComponentElectrolyteCPAstatoil(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public PhaseElectrolyteCPAstatoil clone() { - PhaseElectrolyteCPAstatoil clonedPhase = null; - try { - clonedPhase = (PhaseElectrolyteCPAstatoil) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseElectrolyteCPAstatoil clone() { + PhaseElectrolyteCPAstatoil clonedPhase = null; + try { + clonedPhase = (PhaseElectrolyteCPAstatoil) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + return clonedPhase; + } - /** {@inheritDoc} */ - @Override - public double calc_g() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double g = 1.0 / (1.0 - x); - // System.out.println("g " + g); - return g; - } + /** {@inheritDoc} */ + @Override + public double calc_g() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double g = 1.0 / (1.0 - x); + // System.out.println("g " + g); + return g; + } - /** {@inheritDoc} */ - @Override - public double calc_lngV() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double gv = (x / getTotalVolume()) / (1.0 - x); - return -gv; - } + /** {@inheritDoc} */ + @Override + public double calc_lngV() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double gv = (x / getTotalVolume()) / (1.0 - x); + return -gv; + } - /** {@inheritDoc} */ - @Override - public double calc_lngVV() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double xV = -1.9 / 4.0 * getB() / Math.pow(getTotalVolume(), 2.0); - double u = 1.0 - x; + /** {@inheritDoc} */ + @Override + public double calc_lngVV() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double xV = -1.9 / 4.0 * getB() / Math.pow(getTotalVolume(), 2.0); + double u = 1.0 - x; - double val = -x / (Math.pow(getTotalVolume(), 2.0) * u) + xV / (getTotalVolume() * u) - - x / (getTotalVolume() * u * u) * (-1.0) * xV; - return -val; + double val = -x / (Math.pow(getTotalVolume(), 2.0) * u) + xV / (getTotalVolume() * u) + - x / (getTotalVolume() * u * u) * (-1.0) * xV; + return -val; - // double gvv - // =0.225625/Math.pow(1.0-0.475*getB()/getTotalVolume(),2.0)*Math.pow(getB(),2.0)/(Math.pow(getTotalVolume(),4.0))+0.95/(1.0-0.475*getB()/getTotalVolume())*getB()/(Math.pow(getTotalVolume(),3.0)); - // System.out.println("val2 " + gvv); - // return gvv; - } + // double gvv + // =0.225625/Math.pow(1.0-0.475*getB()/getTotalVolume(),2.0)*Math.pow(getB(),2.0)/(Math.pow(getTotalVolume(),4.0))+0.95/(1.0-0.475*getB()/getTotalVolume())*getB()/(Math.pow(getTotalVolume(),3.0)); + // System.out.println("val2 " + gvv); + // return gvv; + } - /** {@inheritDoc} */ - @Override - public double calc_lngVVV() { - double gvv = -0.21434375 / Math.pow(1.0 - 0.475 * getB() / getTotalVolume(), 3.0) - * Math.pow(getB(), 3.0) / (Math.pow(getTotalVolume(), 6.0)) - - 0.135375E1 / Math.pow(1.0 - 0.475 * getB() / getTotalVolume(), 2.0) - * Math.pow(getB(), 2.0) / (Math.pow(getTotalVolume(), 5.0)) - - 0.285E1 / (1.0 - 0.475 * getB() / getTotalVolume()) * getB() - / (Math.pow(getTotalVolume(), 4.0)); - return gvv; - } + /** {@inheritDoc} */ + @Override + public double calc_lngVVV() { + double gvv = -0.21434375 / Math.pow(1.0 - 0.475 * getB() / getTotalVolume(), 3.0) + * Math.pow(getB(), 3.0) / (Math.pow(getTotalVolume(), 6.0)) + - 0.135375E1 / Math.pow(1.0 - 0.475 * getB() / getTotalVolume(), 2.0) + * Math.pow(getB(), 2.0) / (Math.pow(getTotalVolume(), 5.0)) + - 0.285E1 / (1.0 - 0.475 * getB() / getTotalVolume()) * getB() + / (Math.pow(getTotalVolume(), 4.0)); + return gvv; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseEos.java b/src/main/java/neqsim/thermo/phase/PhaseEos.java index b0a228cf7b..30c87c5d6b 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseEos.java +++ b/src/main/java/neqsim/thermo/phase/PhaseEos.java @@ -3,1249 +3,1271 @@ * * Created on 3. juni 2000, 14:38 */ + package neqsim.thermo.phase; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.component.ComponentEosInterface; import neqsim.thermo.mixingRule.EosMixingRules; import neqsim.thermo.mixingRule.EosMixingRulesInterface; /** + * Abstract class PhaseEos. * * @author Even Solbraa */ -abstract class PhaseEos extends Phase implements PhaseEosInterface { - private static final long serialVersionUID = 1000; - - private double loc_A, loc_AT, loc_ATT, loc_B, f_loc = 0, g = 0; - public double delta1 = 0, delta2 = 0; - protected EosMixingRules mixSelect = null; - protected EosMixingRulesInterface mixRule = null; - double uEOS = 0, wEOS = 0; - static Logger logger = LogManager.getLogger(PhaseEos.class); - // Class methods - - /** {@inheritDoc} */ - @Override - public PhaseEos clone() { - PhaseEos clonedPhase = null; - try { - clonedPhase = (PhaseEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); +public abstract class PhaseEos extends Phase implements PhaseEosInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseEos.class); + + private double loc_A; + private double loc_AT; + private double loc_ATT; + private double loc_B; + private double f_loc = 0; + private double g = 0; + public double delta1 = 0; + public double delta2 = 0; + protected EosMixingRules mixSelect = null; + protected EosMixingRulesInterface mixRule = null; + double uEOS = 0; + double wEOS = 0; + // Class methods + + /** {@inheritDoc} */ + @Override + public PhaseEos clone() { + PhaseEos clonedPhase = null; + try { + clonedPhase = (PhaseEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + + // clonedPhase.mixSelect = (EosMixingRules) mixSelect.clone(); + // clonedPhase.mixRule = (EosMixingRulesInterface) mixRule.clone(); + return clonedPhase; + } + + /** + *

+ * Constructor for PhaseEos. + *

+ */ + public PhaseEos() { + super(); + mixSelect = new EosMixingRules(); + componentArray = new ComponentEosInterface[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + mixRule = mixSelect.getMixingRule(1); + // solver = new newtonRhapson(); + } + + /** {@inheritDoc} */ + @Override + public EosMixingRulesInterface getMixingRule() { + return mixRule; + } + + /** {@inheritDoc} */ + @Override + public void displayInteractionCoefficients(String intType) { + mixSelect.displayInteractionCoefficients(intType, this); + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + if (pt != PhaseType.GAS) { + pt = PhaseType.LIQUID; + } + if (!mixingRuleDefined) { + setMixingRule(1); + } + + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + + if (initType != 0) { + loc_B = calcB(this, temperature, pressure, numberOfComponents); + loc_A = calcA(this, temperature, pressure, numberOfComponents); + } + + if (isConstantPhaseVolume()) { + setMolarVolume(getTotalVolume() / getNumberOfMolesInPhase()); + pressure = calcPressure(); + } + + if (initType != 0) { + try { + if (calcMolarVolume) { + molarVolume = molarVolume(pressure, temperature, + getA() / numberOfMolesInPhase / numberOfMolesInPhase, getB() / numberOfMolesInPhase, + pt); } - - // clonedPhase.mixSelect = (EosMixingRules) mixSelect.clone(); - // clonedPhase.mixRule = (EosMixingRulesInterface) mixRule.clone(); - return clonedPhase; - } - - /** - *

- * Constructor for PhaseEos. - *

- */ - public PhaseEos() { - super(); - mixSelect = new EosMixingRules(); - componentArray = new ComponentEosInterface[MAX_NUMBER_OF_COMPONENTS]; - mixRule = mixSelect.getMixingRule(1); - // solver = new newtonRhapson(); - } - - /** {@inheritDoc} */ - @Override - public EosMixingRulesInterface getMixingRule() { - return mixRule; - } - - /** {@inheritDoc} */ - @Override - public void displayInteractionCoefficients(String intType) { - mixSelect.displayInteractionCoefficients(intType, this); - } - - /** {@inheritDoc} */ - @Override - public void addcomponent(double moles) { - super.addcomponent(moles); - } - - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - if (!mixingRuleDefined) { - setMixingRule(1); - } - - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - - if (type != 0) { - loc_B = calcB(this, temperature, pressure, numberOfComponents); - loc_A = calcA(this, temperature, pressure, numberOfComponents); + } catch (Exception ex) { + logger.warn("Failed to solve for molarVolume within the iteration limit."); + logger.error(ex.getMessage()); + throw new RuntimeException(ex); + // logger.error("too many iterations in volume calc!", ex); + // logger.info("moles " + numberOfMolesInPhase); + // logger.info("molarVolume " + getMolarVolume()); + // logger.info("setting molar volume to ideal gas molar volume............."); + // setMolarVolume((R * temperature) / pressure); + // System.exit(0); + } + + Z = pressure * getMolarVolume() / (R * temperature); + for (int i = 0; i < numberOfComponents; i++) { + componentArray[i].Finit(this, temperature, pressure, totalNumberOfMoles, beta, + numberOfComponents, initType); + } + + f_loc = calcf(); + g = calcg(); + + if (initType >= 2) { + loc_AT = calcAT(this, temperature, pressure, numberOfComponents); + loc_ATT = calcATT(this, temperature, pressure, numberOfComponents); + } + + double sumHydrocarbons = 0.0; + double sumAqueous = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (getComponent(i).isHydrocarbon() || getComponent(i).isInert() + || getComponent(i).isIsTBPfraction()) { + sumHydrocarbons += getComponent(i).getx(); + } else { + sumAqueous += getComponent(i).getx(); } - - if (isConstantPhaseVolume()) { - setMolarVolume(getTotalVolume() / getNumberOfMolesInPhase()); - pressure = calcPressure(); + } + + if (getVolume() / getB() > 1.75) { + setType(PhaseType.GAS); + } else if (sumHydrocarbons > sumAqueous) { + setType(PhaseType.OIL); + } else { + setType(PhaseType.AQUEOUS); + } + + // if ((hasComponent("water") && getVolume() / getB() < 1.75 && + // getComponent("water").getx() > 0.1) || (hasComponent("MEG") && getVolume() / + // getB() < 1.75 && getComponent("MEG").getx() > 0.1) || (hasComponent("TEG") && + // getComponent("TEG").getx() > 0.1) || (hasComponent("DEG") && + // getComponent("DEG").getx() > 0.1) || (hasComponent("methanol") && + // getComponent("methanol").getx() > 0.5 || (hasComponent("ethanol") && + // getComponent("ethanol").getx() > 0.5))) { + // setType(PhaseType.AQUEOUS); + // } + } + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + mixingRuleDefined = true; + super.setMixingRule(type); + mixRule = mixSelect.getMixingRule(type, this); + } + + /** {@inheritDoc} */ + @Override + public void setMixingRuleGEModel(String name) { + mixRule.setMixingRuleGEModel(name); + mixSelect.setMixingRuleGEModel(name); + } + + /** {@inheritDoc} */ + @Override + public void resetMixingRule(int type) { + mixingRuleDefined = true; + super.setMixingRule(type); + mixRule = mixSelect.resetMixingRule(type, this); + } + + /** + *

+ * molarVolume2. + *

+ * + * @param pressure a double + * @param temperature a double + * @param A a double + * @param B a double + * @param pt the PhaseType of the phase + * @return a double + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double molarVolume2(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + if (BonV < 0) { + BonV = 0.0; + } + if (BonV > 1.0) { + BonV = 1.0; + } + double BonVold = BonV; + double Btemp = getB(); + double Dtemp = getA(); + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; + int maxIterations = 1000; + do { + iterations++; + BonVold = BonV; + double h = BonV + Btemp * gV() + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fv() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + double dh = 1.0 - Btemp / (BonV * BonV) + * (Btemp * gVV() + Btemp * Dtemp * fVV() / (numberOfMolesInPhase * temperature)); + double fvvv = 1.0 / (R * Btemp * (delta1 - delta2)) + * (2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume() + Btemp * delta1, 3.0) + - 2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume() + Btemp * delta2, 3.0)); + double gvvv = 2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume() - Btemp, 3.0) + - 2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume(), 3.0); + double dhh = 2.0 * Btemp / Math.pow(BonV, 3.0) + * (Btemp * gVV() + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fVV()) + + Btemp * Btemp / Math.pow(BonV, 4.0) + * (Btemp * gvvv + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fvvv); + + double d1 = -h / dh; + double d2 = -dh / dhh; + + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += d1 * (1.0 + 0.5 * -1.0); + } else if (d1 / d2 > 1) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV += 0; } - - if (type != 0) { - phaseTypeName = phase == 0 ? "liquid" : "gas"; - try { - if (calcMolarVolume) { - molarVolume = molarVolume(pressure, temperature, - getA() / numberOfMolesInPhase / numberOfMolesInPhase, - getB() / numberOfMolesInPhase, phase); - } - } catch (Exception e) { - logger.error("Failed to solve for molarVolume within the iteration limit."); - throw new RuntimeException(e); - // logger.error("too many iterations in volume calc!", e); - // logger.info("moles " + numberOfMolesInPhase); - // logger.info("molarVolume " + getMolarVolume()); - // logger.info("setting molar volume to ideal gas molar volume............."); - // setMolarVolume((R * temperature) / pressure); - // System.exit(0); - } - - Z = pressure * getMolarVolume() / (R * temperature); - for (int i = 0; i < numberOfComponents; i++) { - componentArray[i].Finit(this, temperature, pressure, totalNumberOfMoles, beta, - numberOfComponents, type); - } - - f_loc = calcf(); - g = calcg(); - - if (type >= 2) { - loc_AT = calcAT(this, temperature, pressure, numberOfComponents); - loc_ATT = calcATT(this, temperature, pressure, numberOfComponents); - } - - // logger.info("V/b" + (getVolume()/getB()) + " Z " + getZ()); - double sumHydrocarbons = 0.0, sumAqueous = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (getComponent(i).isHydrocarbon() || getComponent(i).isInert() - || getComponent(i).isIsTBPfraction()) { - sumHydrocarbons += getComponent(i).getx(); - } else { - sumAqueous += getComponent(i).getx(); - } - } - - if (getVolume() / getB() > 1.75) { - phaseTypeName = "gas"; - } else if (sumHydrocarbons > sumAqueous) { - phaseTypeName = "oil"; - } else { - phaseTypeName = "aqueous"; - } - - // if ((hasComponent("water") && getVolume() / getB() < 1.75 && - // getComponent("water").getx() > 0.1) || (hasComponent("MEG") && getVolume() / - // getB() < 1.75 && getComponent("MEG").getx() > 0.1) || (hasComponent("TEG") && - // getComponent("TEG").getx() > 0.1) || (hasComponent("DEG") && - // getComponent("DEG").getx() > 0.1) || (hasComponent("methanol") && - // getComponent("methanol").getx() > 0.5 || (hasComponent("ethanol") && - // getComponent("ethanol").getx() > 0.5))) { - // phaseTypeName = "aqueous"; - // } - } - } - - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - mixingRuleDefined = true; - super.setMixingRule(type); - mixRule = mixSelect.getMixingRule(type, this); - } - - /** {@inheritDoc} */ - @Override - public void setMixingRuleGEModel(String name) { - mixRule.setMixingRuleGEModel(name); - mixSelect.setMixingRuleGEModel(name); - } - - /** {@inheritDoc} */ - @Override - public void resetMixingRule(int type) { - mixingRuleDefined = true; - super.setMixingRule(type); - mixRule = mixSelect.resetMixingRule(type, this); - } - - /** - *

- * molarVolume2. - *

- * - * @param pressure a double - * @param temperature a double - * @param A a double - * @param B a double - * @param phase a int - * @return a double - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. - */ - public double molarVolume2(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phase == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - if (BonV < 0) { - BonV = 0.0; - } - if (BonV > 1.0) { - BonV = 1.0; - } - double BonVold = BonV; - double Btemp = 0, Dtemp = 0, h = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - Dtemp = getA(); - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - int maxIterations = 1000; - - do { - iterations++; - BonVold = BonV; - h = BonV + Btemp * gV() + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fv() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 - Btemp / (BonV * BonV) * (Btemp * gVV() - + Btemp * Dtemp * fVV() / (numberOfMolesInPhase * temperature)); - fvvv = 1.0 / (R * Btemp * (delta1 - delta2)) - * (2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume() + Btemp * delta1, 3.0) - - 2.0 / Math.pow( - numberOfMolesInPhase * getMolarVolume() + Btemp * delta2, 3.0)); - gvvv = 2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume() - Btemp, 3.0) - - 2.0 / Math.pow(numberOfMolesInPhase * getMolarVolume(), 3.0); - dhh = 2.0 * Btemp / Math.pow(BonV, 3.0) - * (Btemp * gVV() + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fVV()) - + Btemp * Btemp / Math.pow(BonV, 4.0) * (Btemp * gvvv - + Btemp * Dtemp / (numberOfMolesInPhase * temperature) * fvvv); - - d1 = -h / dh; - d2 = -dh / dhh; - - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += d1 * (1.0 + 0.5 * -1.0); - } else if (d1 / d2 > 1) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV += 0; - } - } - - if (BonV > 1) { - BonV = 1.0 - 1.0e-16; - BonVold = 10; - } - if (BonV < 0) { - BonV = 1.0e-16; - BonVold = 10; - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - } while (Math.abs(BonV - BonVold) > 1.0e-9 && iterations < maxIterations); - // molarVolume = 1.0/BonV*Btemp/numberOfMolesInPhase; - // Z = pressure*molarVolume/(R*temperature); - // logger.info("BonV: " + BonV + " " + h + " " +dh + " B " + Btemp + " D " + - // Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - // logger.info("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + - // " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + - // fVV()); - if (iterations >= maxIterations) { - throw new neqsim.util.exception.TooManyIterationsException(this, "molarVolume2", - maxIterations); - } - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume2", "Molar volume"); - // logger.info("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + - // " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + - // fVV()); - } - return getMolarVolume(); - } - - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phase == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - - if (BonV < 0) { - BonV = 1.0e-4; + } + + if (BonV > 1) { + BonV = 1.0 - 1.0e-16; + BonVold = 10; + } + if (BonV < 0) { + BonV = 1.0e-16; + BonVold = 10; + } + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while (Math.abs(BonV - BonVold) > 1.0e-9 && iterations < maxIterations); + // molarVolume = 1.0/BonV*Btemp/numberOfMolesInPhase; + // Z = pressure*molarVolume/(R*temperature); + // logger.info("BonV: " + BonV + " " + h + " " +dh + " B " + Btemp + " D " + + // Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + // logger.info("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + + // " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + + // fVV()); + if (iterations >= maxIterations) { + throw new neqsim.util.exception.TooManyIterationsException(this, "molarVolume2", + maxIterations); + } + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume2", "Molar volume"); + // logger.info("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + + // " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + + // fVV()); + } + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + + if (BonV < 0) { + BonV = 1.0e-4; + } + if (BonV > 1.0) { + BonV = 1.0 - 1.0e-4; + } + + double BonVold = BonV; + + double Btemp = getB(); + double h; + double dh; + double dhh; + double d1; + double d2; + double BonV2; + if (Btemp < 0) { + logger.info("b negative in volume calc"); + } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + boolean changeFase = false; + double error = 1.0; + double errorOld = 1.0e10; + int iterations = 0; + int maxIterations = 300; + do { + errorOld = error; + iterations++; + BonVold = BonV; + BonV2 = BonV * BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - Btemp * Btemp / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += d1 * (1.0 + 0.5 * -1.0); + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - if (BonV > 1.0) { - BonV = 1.0 - 1.0e-4; - } - - double BonVold = BonV, Btemp = getB(), h, dh, dhh, d1, d2, BonV2; - - if (Btemp < 0) { - logger.info("b negative in volume calc"); - } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - boolean changeFase = false; - double error = 1.0, errorOld = 1.0e10; - int iterations = 0; - int maxIterations = 300; - do { - errorOld = error; - iterations++; - BonVold = BonV; - BonV2 = BonV * BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - Btemp * Btemp / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += d1 * (1.0 + 0.5 * -1.0); - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phase == 1 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += d1 * (0.1); - } - - if (BonV > 1) { - BonV = 1.0 - 1.0e-6; - BonVold = 100; - } - if (BonV < 0) { - // BonV = Math.abs(BonV); - BonV = 1.0e-10; - BonVold = 10; - } - - error = Math.abs((BonV - BonVold) / BonVold); - // logger.info("error " + error); - - if (iterations > 150 && error > errorOld && !changeFase) { - changeFase = true; - BonVold = 10.0; - BonV = phase == 1 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - // logger.info("Math.abs((BonV - BonVold)) " + Math.abs((BonV - BonVold))); - } while (Math.abs((BonV - BonVold) / BonVold) > 1.0e-10 && iterations < maxIterations); - // logger.info("pressure " + Z*R*temperature/molarVolume); - // logger.info("error in volume " + - // (-pressure+R*temperature/molarVolume-R*temperature*dFdV()) + " firstterm " + - // (R*temperature/molarVolume) + " second " + R*temperature*dFdV()); - if (iterations >= maxIterations) { - throw new neqsim.util.exception.TooManyIterationsException(this, "molarVolume", - maxIterations); - } - if (Double.isNaN(getMolarVolume())) { - // A = calcA(this, temperature, pressure, numberOfComponents); - // molarVolume(pressure, temperature, A, B, phase); - throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); - // logger.info("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + - // " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + - // fVV()); - } - return getMolarVolume(); - } - - /** {@inheritDoc} */ - @Override - public double getPressureRepulsive() { - double presrep = R * temperature / (getMolarVolume() - getb()); - return presrep; - } - - /** {@inheritDoc} */ - @Override - public double getPressureAttractive() { - double presrep = R * temperature / (getMolarVolume() - getb()); - double presatr = pressure - presrep; - // presatr = getaT()/((molarVolume+delta1)*(molarVolume+delta2)); - // double prestot = Z*R*temperature/molarVolume; - return presatr; - } - - /** {@inheritDoc} */ - @Override - public java.lang.String getMixingRuleName() { - return mixRule.getMixingRuleName(); - } - - /** {@inheritDoc} */ - @Override - public double calcA(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - loc_A = mixRule.calcA(phase, temperature, pressure, numbcomp); - return loc_A; - } - - /** {@inheritDoc} */ - @Override - public double calcB(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - loc_B = mixRule.calcB(phase, temperature, pressure, numbcomp); - return loc_B; - } - - /** {@inheritDoc} */ - @Override - public double calcAi(int compNumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - return mixRule.calcAi(compNumb, phase, temperature, pressure, numbcomp); - } - - /** - *

- * calcAT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcAT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - loc_AT = mixRule.calcAT(phase, temperature, pressure, numbcomp); - return loc_AT; - } - - /** - *

- * calcATT. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcATT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - loc_ATT = mixRule.calcATT(phase, temperature, pressure, numbcomp); - return loc_ATT; - } - - /** {@inheritDoc} */ - @Override - public double calcAiT(int compNumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - return mixRule.calcAiT(compNumb, phase, temperature, pressure, numbcomp); - } - - /** {@inheritDoc} */ - @Override - public double calcAij(int compNumb, int j, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - return mixRule.calcAij(compNumb, j, phase, temperature, pressure, numbcomp); - } - - /** {@inheritDoc} */ - @Override - public double calcBij(int compNumb, int j, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - return mixRule.calcBij(compNumb, j, phase, temperature, pressure, numbcomp); - } - - /** {@inheritDoc} */ - @Override - public double calcBi(int compNumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - return mixRule.calcBi(compNumb, phase, temperature, pressure, numbcomp); - } - - /** {@inheritDoc} */ - @Override - public double geta(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return calcA(phase, temperature, pressure, numbcomp) / numberOfMolesInPhase - / numberOfMolesInPhase; - } - - /** {@inheritDoc} */ - @Override - public double getb(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - return calcB(phase, temperature, pressure, numbcomp) / numberOfMolesInPhase; - } - - /** - * @return double - */ - double geta() { - return loc_A / numberOfMolesInPhase / numberOfMolesInPhase; - } - - /** - * @return double - */ - double getb() { - return loc_B / numberOfMolesInPhase; - } - - /** {@inheritDoc} */ - @Override - public double getA() { - return loc_A; - } - - /** {@inheritDoc} */ - @Override - public double getB() { - return loc_B; - } - - /** {@inheritDoc} */ - @Override - public double getAT() { - return loc_AT; - } - - /** {@inheritDoc} */ - @Override - public double getATT() { - return loc_ATT; - } - - /** {@inheritDoc} */ - @Override - public double getAresTV() { - return getF() * R * temperature; - } - - /** {@inheritDoc} */ - @Override - public double getGresTP() { - return getAresTV() + pressure * numberOfMolesInPhase * getMolarVolume() - - numberOfMolesInPhase * R * temperature * (1.0 + Math.log(Z)); - } - - /** {@inheritDoc} */ - @Override - public double getSresTV() { - return (-temperature * dFdT() - getF()) * R; - } - - /** {@inheritDoc} */ - @Override - public double getSresTP() { - return getSresTV() + numberOfMolesInPhase * R * Math.log(Z); - } - - /** {@inheritDoc} */ - @Override - public double getHresTP() { - return getAresTV() + temperature * getSresTV() - + pressure * numberOfMolesInPhase * getMolarVolume() - - numberOfMolesInPhase * R * temperature; - } - - /** {@inheritDoc} */ - @Override - public double getHresdP() { - return getVolume() + temperature * getdPdTVn() / getdPdVTn(); - } - - /** {@inheritDoc} */ - @Override - public double getCvres() { - return (-temperature * temperature * dFdTdT() - 2.0 * temperature * dFdT()) * R; - } - - /** {@inheritDoc} */ - @Override - public double getCpres() { - return getCvres() + R * (-temperature / R * Math.pow(getdPdTVn(), 2.0) / getdPdVTn() - - numberOfMolesInPhase); - } - - /** - * {@inheritDoc} - * - * method to return real gas isentropic exponent (kappa = - Cp/Cv*(v/p)*dp/dv - */ - @Override - public double getKappa() { - return -getCp() / getCv() * getVolume() / pressure * getdPdVTn(); - } - - /** - * {@inheritDoc} - * - * method to get the Joule Thomson Coefficient of a phase - */ - @Override - public double getJouleThomsonCoefficient() { - return -1.0 / getCp() * (getMolarVolume() * numberOfMolesInPhase - + temperature * getdPdTVn() / getdPdVTn()); - } - - /** {@inheritDoc} */ - @Override - public double getdPdTVn() { - return -R * temperature * dFdTdV() + pressure / temperature; - } - - /** {@inheritDoc} */ - @Override - public double getdPdVTn() { - return -R * temperature * dFdVdV() - numberOfMolesInPhase * R * temperature - / Math.pow(numberOfMolesInPhase * getMolarVolume(), 2.0); - } - - /** {@inheritDoc} */ - @Override - public double getdPdrho() { - return getdPdVTn() * getdVdrho() * 1e5; - } - - /** {@inheritDoc} */ - @Override - public double getdrhodP() { - return 1.0 / getdPdrho(); - } - - /** {@inheritDoc} */ - @Override - public double getdrhodT() { - return -getdPdTVn() / getdPdrho(); - } - - /** {@inheritDoc} */ - @Override - public double getdrhodN() { - return this.getMolarMass(); - } - - /** - *

- * getdVdrho. - *

- * - * @return a double - */ - public double getdVdrho() { - return -1.0 * numberOfMolesInPhase * this.getMolarMass() / Math.pow(this.getDensity(), 2.0); - } - - /** {@inheritDoc} */ - @Override - public double getg() { - return g; - } - - /** - *

- * Getter for the field f_loc. - *

- * - * @return a double - */ - public double getf_loc() { - return f_loc; - } - - /** - *

- * calcg. - *

- * - * @return a double - */ - public double calcg() { - return Math.log(1.0 - getb() / molarVolume); - } - - /** - *

- * calcf. - *

- * - * @return a double - */ - public double calcf() { - return (1.0 / (R * loc_B * (delta1 - delta2)) * Math.log( - (1.0 + delta1 * getb() / molarVolume) / (1.0 + delta2 * getb() / (molarVolume)))); - } - - /** - *

- * getF. - *

- * - * @return a double - */ - public double getF() { - return -numberOfMolesInPhase * getg() - getA() / temperature * getf_loc(); - } - - /** {@inheritDoc} */ - @Override - public double F() { - return getF(); - } - - /** {@inheritDoc} */ - @Override - public double Fn() { - return -getg(); - } - - /** {@inheritDoc} */ - @Override - public double FT() { - return getA() * getf_loc() / (temperature * temperature); - } - - /** {@inheritDoc} */ - @Override - public double FV() { - return -numberOfMolesInPhase * gV() - getA() / temperature * fv(); - } - - /** {@inheritDoc} */ - @Override - public double FD() { - return -getf_loc() / temperature; - } - - /** {@inheritDoc} */ - @Override - public double FB() { - return -numberOfMolesInPhase * gb() - getA() / temperature * fb(); - } - - /** {@inheritDoc} */ - @Override - public double gb() { - return -1.0 / (numberOfMolesInPhase * molarVolume - loc_B); - } - - /** {@inheritDoc} */ - @Override - public double fb() { - return -(f_loc + numberOfMolesInPhase * molarVolume * fv()) / loc_B; - } - - /** {@inheritDoc} */ - @Override - public double gV() { - return getb() / (molarVolume * (numberOfMolesInPhase * molarVolume - loc_B)); - // 1/(numberOfMolesInPhase*getMolarVolume()-getB())-1/(numberOfMolesInPhase*getMolarVolume()); - } - - /** {@inheritDoc} */ - @Override - public double fv() { - return -1.0 / (R * (numberOfMolesInPhase * molarVolume + delta1 * loc_B) - * (numberOfMolesInPhase * molarVolume + delta2 * loc_B)); - } - - ////// NYE metoder fredag 25.08.public double dFdN(PhaseInterface phase, int - ////// numberOfComponents, double temperature, double pressure, int phasetype){ - /** {@inheritDoc} */ - @Override - public double FnV() { - return -gV(); - } - - /** {@inheritDoc} */ - @Override - public double FnB() { - return -gb(); - } - - /** {@inheritDoc} */ - @Override - public double FTT() { - return -2.0 / temperature * FT(); - } - - /** {@inheritDoc} */ - @Override - public double FBT() { - return getA() * fb() / temperature / temperature; - } - - /** {@inheritDoc} */ - @Override - public double FDT() { - return getf_loc() / temperature / temperature; - } - - /** {@inheritDoc} */ - @Override - public double FBV() { - return -numberOfMolesInPhase * gBV() - getA() * fBV() / temperature; - } - - /** {@inheritDoc} */ - @Override - public double FBB() { - return -numberOfMolesInPhase * gBB() - getA() * fBB() / temperature; - } - - /** {@inheritDoc} */ - @Override - public double FDV() { - return -fv() / temperature; - } - - /** {@inheritDoc} */ - @Override - public double FBD() { - return -fb() / temperature; - } - - /** {@inheritDoc} */ - @Override - public double FTV() { - return getA() * fv() / temperature / temperature; - } - - /** {@inheritDoc} */ - @Override - public double FVV() { - return -numberOfMolesInPhase * gVV() - getA() * fVV() / temperature; - } - - /** - *

- * FVVV. - *

- * - * @return a double - */ - public double FVVV() { - return -numberOfMolesInPhase * gVVV() - getA() * fVVV() / temperature; - } - - /** {@inheritDoc} */ - @Override - public double gVV() { - double val1 = numberOfMolesInPhase * getMolarVolume(); - double val2 = val1 - getB(); - return -1.0 / (val2 * val2) + 1.0 / (val1 * val1); - } - - /** - *

- * gVVV. - *

- * - * @return a double - */ - public double gVVV() { - double val1 = numberOfMolesInPhase * getMolarVolume(); - double val2 = val1 - getB(); - return 2.0 / (val2 * val2 * val2) - 2.0 / (val1 * val1 * val1); - } - - /** {@inheritDoc} */ - @Override - public double gBV() { - double val = numberOfMolesInPhase * getMolarVolume() - getB(); - return 1.0 / (val * val); - } - - /** {@inheritDoc} */ - @Override - public double gBB() { - double val = numberOfMolesInPhase * getMolarVolume() - getB(); - return -1.0 / (val * val); - } - - /** {@inheritDoc} */ - @Override - public double fVV() { - double val1 = (numberOfMolesInPhase * molarVolume + delta1 * loc_B); - double val2 = (numberOfMolesInPhase * molarVolume + delta2 * loc_B); - return 1.0 / (R * loc_B * (delta1 - delta2)) * (-1.0 / (val1 * val1) + 1.0 / (val2 * val2)); - } - - /** - *

- * fVVV. - *

- * - * @return a double - */ - public double fVVV() { - double val1 = numberOfMolesInPhase * molarVolume + getB() * delta1; - double val2 = numberOfMolesInPhase * molarVolume + getB() * delta2; - return 1.0 / (R * getB() * (delta1 - delta2)) - * (2.0 / (val1 * val1 * val1) - 2.0 / (val2 * val2 * val2)); - } - - /** {@inheritDoc} */ - @Override - public double fBV() { - return -(2.0 * fv() + numberOfMolesInPhase * molarVolume * fVV()) / getB(); - } - - /** {@inheritDoc} */ - @Override - public double fBB() { - return -(2.0 * fb() + numberOfMolesInPhase * molarVolume * fBV()) / getB(); - } - - /** {@inheritDoc} */ - @Override - public double dFdT() { - return FT() + FD() * getAT(); - } - - /** {@inheritDoc} */ - @Override - public double dFdV() { - return FV(); - } - - /** {@inheritDoc} */ - @Override - public double dFdTdV() { - return FTV() + FDV() * getAT(); - } - - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return FVV(); - } - - /** - *

- * dFdVdVdV. - *

- * - * @return a double - */ - public double dFdVdVdV() { - return FVVV(); - } - - /** {@inheritDoc} */ - @Override - public double dFdTdT() { - return FTT() + 2.0 * FDT() * getAT() + FD() * getATT(); - } - - /** {@inheritDoc} */ - @Override - public double calcPressure() { - return -R * temperature * dFdV() - + getNumberOfMolesInPhase() * R * temperature / getTotalVolume(); - } - - /** {@inheritDoc} */ - @Override - public double calcPressuredV() { - return -R * temperature * dFdVdV() - - getNumberOfMolesInPhase() * R * temperature / Math.pow(getTotalVolume(), 2.0); - } - - /** - * {@inheritDoc} - * - * method to get the speed of sound of a phase - */ - @Override - public double getSoundSpeed() { - double bs = -1.0 / getVolume() * getCv() / getCp() / getdPdVTn(); - double Mw = getNumberOfMolesInPhase() * getMolarMass(); - return Math.sqrt(getVolume() / Mw / bs); - } - - /** - *

- * getdUdSVn. - *

- * - * @return a double - */ - public double getdUdSVn() { - return getTemperature(); - } - - /** - *

- * getdUdVSn. - *

- * - * @return a double - */ - public double getdUdVSn() { - return -getPressure(); - } - - /** - *

- * getdUdSdSVn. - *

- * - * @return a double - */ - public double getdUdSdSVn() { - return 1.0 / (FTT() * R * getTemperature());// noe feil her - } - - /** - *

- * getdUdVdVSn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getdUdVdVSn(PhaseInterface phase) { - return -FVV() * 1.0 / FTT(); - } - - /** - *

- * getdUdSdVn. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getdUdSdVn(PhaseInterface phase) { - return -1.0 / FTT() * FTV(); - } - - // getdTVndSVn() needs to be implemented - /** - *

- * getdTVndSVnJaobiMatrix. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getdTVndSVnJaobiMatrix() { - double[][] jacobiMatrix = new double[2 + numberOfComponents][2 + numberOfComponents]; - - jacobiMatrix[0][0] = FTT(); - jacobiMatrix[1][0] = FTT(); + } else { + BonV += d1 * (0.1); + } + + if (BonV > 1) { + BonV = 1.0 - 1.0e-6; + BonVold = 100; + } + if (BonV < 0) { + // BonV = Math.abs(BonV); + BonV = 1.0e-10; + BonVold = 10; + } + + error = Math.abs((BonV - BonVold) / BonVold); + // logger.info("error " + error); + + if (iterations > 150 && error > errorOld && !changeFase) { + changeFase = true; + BonVold = 10.0; + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + } + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + // logger.info("Math.abs((BonV - BonVold)) " + Math.abs((BonV - BonVold))); + } while (Math.abs((BonV - BonVold) / BonVold) > 1.0e-10 && iterations < maxIterations); + // logger.info("pressure " + Z*R*temperature/molarVolume); + // logger.info("error in volume " + + // (-pressure+R*temperature/molarVolume-R*temperature*dFdV()) + " firstterm " + + // (R*temperature/molarVolume) + " second " + R*temperature*dFdV()); + if (iterations >= maxIterations) { + throw new neqsim.util.exception.TooManyIterationsException(this, "molarVolume", + maxIterations); + } + if (Double.isNaN(getMolarVolume())) { + // A = calcA(this, temperature, pressure, numberOfComponents); + // molarVolume(pressure, temperature, A, B, phase); + throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); + // logger.info("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + + // " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + + // fVV()); + } + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double getPressureRepulsive() { + double presrep = R * temperature / (getMolarVolume() - getb()); + return presrep; + } + + /** {@inheritDoc} */ + @Override + public double getPressureAttractive() { + double presrep = R * temperature / (getMolarVolume() - getb()); + double presatr = pressure - presrep; + // presatr = getaT()/((molarVolume+delta1)*(molarVolume+delta2)); + // double prestot = Z*R*temperature/molarVolume; + return presatr; + } + + /** {@inheritDoc} */ + @Override + public String getMixingRuleName() { + return mixRule.getMixingRuleName(); + } + + /** {@inheritDoc} */ + @Override + public double calcA(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + loc_A = mixRule.calcA(phase, temperature, pressure, numbcomp); + return loc_A; + } + + /** {@inheritDoc} */ + @Override + public double calcB(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + loc_B = mixRule.calcB(phase, temperature, pressure, numbcomp); + return loc_B; + } + + /** {@inheritDoc} */ + @Override + public double calcAi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + return mixRule.calcAi(compNumb, phase, temperature, pressure, numbcomp); + } + + /** + *

+ * calcAT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcAT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + loc_AT = mixRule.calcAT(phase, temperature, pressure, numbcomp); + return loc_AT; + } + + /** + *

+ * calcATT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcATT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + loc_ATT = mixRule.calcATT(phase, temperature, pressure, numbcomp); + return loc_ATT; + } + + /** {@inheritDoc} */ + @Override + public double calcAiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + return mixRule.calcAiT(compNumb, phase, temperature, pressure, numbcomp); + } + + /** {@inheritDoc} */ + @Override + public double calcAij(int compNumb, int j, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + return mixRule.calcAij(compNumb, j, phase, temperature, pressure, numbcomp); + } + + /** {@inheritDoc} */ + @Override + public double calcBij(int compNumb, int j, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + return mixRule.calcBij(compNumb, j, phase, temperature, pressure, numbcomp); + } + + /** {@inheritDoc} */ + @Override + public double calcBi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + return mixRule.calcBi(compNumb, phase, temperature, pressure, numbcomp); + } + + /** {@inheritDoc} */ + @Override + public double geta(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return calcA(phase, temperature, pressure, numbcomp) / numberOfMolesInPhase + / numberOfMolesInPhase; + } + + /** + * Get a. + * + * @return double + */ + double geta() { + return loc_A / numberOfMolesInPhase / numberOfMolesInPhase; + } + + /** {@inheritDoc} */ + @Override + public double getA() { + return loc_A; + } + + /** + * getb. + * + * @return double + */ + double getb() { + return loc_B / numberOfMolesInPhase; + } + + /** {@inheritDoc} */ + @Override + public double getb(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + return calcB(phase, temperature, pressure, numbcomp) / numberOfMolesInPhase; + } + + /** {@inheritDoc} */ + @Override + public double getB() { + return loc_B; + } + + /** {@inheritDoc} */ + @Override + public double getAT() { + return loc_AT; + } + + /** {@inheritDoc} */ + @Override + public double getATT() { + return loc_ATT; + } + + /** {@inheritDoc} */ + @Override + public double getAresTV() { + return getF() * R * temperature; + } + + /** {@inheritDoc} */ + @Override + public double getGresTP() { + return getAresTV() + pressure * numberOfMolesInPhase * getMolarVolume() + - numberOfMolesInPhase * R * temperature * (1.0 + Math.log(Z)); + } + + /** {@inheritDoc} */ + @Override + public double getSresTV() { + return (-temperature * dFdT() - getF()) * R; + } + + /** {@inheritDoc} */ + @Override + public double getSresTP() { + return getSresTV() + numberOfMolesInPhase * R * Math.log(Z); + } + + /** {@inheritDoc} */ + @Override + public double getHresTP() { + return getAresTV() + temperature * getSresTV() + + pressure * numberOfMolesInPhase * getMolarVolume() + - numberOfMolesInPhase * R * temperature; + } + + /** {@inheritDoc} */ + @Override + public double getHresdP() { + return getVolume() + temperature * getdPdTVn() / getdPdVTn(); + } + + /** {@inheritDoc} */ + @Override + public double getCvres() { + return (-temperature * temperature * dFdTdT() - 2.0 * temperature * dFdT()) * R; + } + + /** {@inheritDoc} */ + @Override + public double getCpres() { + return getCvres() + + R * (-temperature / R * Math.pow(getdPdTVn(), 2.0) / getdPdVTn() - numberOfMolesInPhase); + } + + /** + * {@inheritDoc} + * + *

+ * method to return real gas isentropic exponent (kappa = - Cp/Cv*(v/p)*dp/dv + *

+ */ + @Override + public double getKappa() { + return -getCp() / getCv() * getVolume() / pressure * getdPdVTn(); + } + + /** {@inheritDoc} */ + @Override + public double getJouleThomsonCoefficient() { + return -1.0 / getCp() + * (getMolarVolume() * numberOfMolesInPhase + temperature * getdPdTVn() / getdPdVTn()); + } + + /** {@inheritDoc} */ + @Override + public double getdPdTVn() { + return -R * temperature * dFdTdV() + pressure / temperature; + } + + /** {@inheritDoc} */ + @Override + public double getdPdVTn() { + return -R * temperature * dFdVdV() - numberOfMolesInPhase * R * temperature + / Math.pow(numberOfMolesInPhase * getMolarVolume(), 2.0); + } + + /** {@inheritDoc} */ + @Override + public double getdPdrho() { + return getdPdVTn() * getdVdrho() * 1e5; + } + + /** {@inheritDoc} */ + @Override + public double getdrhodP() { + return 1.0 / getdPdrho(); + } + + /** {@inheritDoc} */ + @Override + public double getdrhodT() { + return -getdPdTVn() / getdPdrho(); + } + + /** {@inheritDoc} */ + @Override + public double getdrhodN() { + return this.getMolarMass(); + } + + /** + *

+ * getdVdrho. + *

+ * + * @return a double + */ + public double getdVdrho() { + return -1.0 * numberOfMolesInPhase * this.getMolarMass() / Math.pow(this.getDensity(), 2.0); + } + + /** {@inheritDoc} */ + @Override + public double getg() { + return g; + } + + /** + *

+ * Getter for the field f_loc. + *

+ * + * @return a double + */ + public double getf_loc() { + return f_loc; + } + + /** + *

+ * calcg. + *

+ * + * @return a double + */ + public double calcg() { + return Math.log(1.0 - getb() / molarVolume); + } + + /** + *

+ * calcf. + *

+ * + * @return a double + */ + public double calcf() { + return (1.0 / (R * loc_B * (delta1 - delta2)) * Math + .log((1.0 + delta1 * getb() / molarVolume) / (1.0 + delta2 * getb() / (molarVolume)))); + } + + /** + *

+ * getF. + *

+ * + * @return a double + */ + public double getF() { + return -numberOfMolesInPhase * getg() - getA() / temperature * getf_loc(); + } + + /** {@inheritDoc} */ + @Override + public double F() { + return getF(); + } + + /** {@inheritDoc} */ + @Override + public double Fn() { + return -getg(); + } + + /** {@inheritDoc} */ + @Override + public double FT() { + return getA() * getf_loc() / (temperature * temperature); + } + + /** {@inheritDoc} */ + @Override + public double FV() { + return -numberOfMolesInPhase * gV() - getA() / temperature * fv(); + } + + /** {@inheritDoc} */ + @Override + public double FD() { + return -getf_loc() / temperature; + } + + /** {@inheritDoc} */ + @Override + public double FB() { + return -numberOfMolesInPhase * gb() - getA() / temperature * fb(); + } + + /** {@inheritDoc} */ + @Override + public double gb() { + return -1.0 / (numberOfMolesInPhase * molarVolume - loc_B); + } + + /** {@inheritDoc} */ + @Override + public double fb() { + return -(f_loc + numberOfMolesInPhase * molarVolume * fv()) / loc_B; + } + + /** {@inheritDoc} */ + @Override + public double gV() { + return getb() / (molarVolume * (numberOfMolesInPhase * molarVolume - loc_B)); + // 1/(numberOfMolesInPhase*getMolarVolume()-getB())-1/(numberOfMolesInPhase*getMolarVolume()); + } + + /** {@inheritDoc} */ + @Override + public double fv() { + return -1.0 / (R * (numberOfMolesInPhase * molarVolume + delta1 * loc_B) + * (numberOfMolesInPhase * molarVolume + delta2 * loc_B)); + } + + // NYE metoder fredag 25.08.public double dFdN(PhaseInterface phase, int + // numberOfComponents, double temperature, double pressure, PhaseType pt){ + /** {@inheritDoc} */ + @Override + public double FnV() { + return -gV(); + } + + /** {@inheritDoc} */ + @Override + public double FnB() { + return -gb(); + } + + /** {@inheritDoc} */ + @Override + public double FTT() { + return -2.0 / temperature * FT(); + } + + /** {@inheritDoc} */ + @Override + public double FBT() { + return getA() * fb() / temperature / temperature; + } + + /** {@inheritDoc} */ + @Override + public double FDT() { + return getf_loc() / temperature / temperature; + } + + /** {@inheritDoc} */ + @Override + public double FBV() { + return -numberOfMolesInPhase * gBV() - getA() * fBV() / temperature; + } + + /** {@inheritDoc} */ + @Override + public double FBB() { + return -numberOfMolesInPhase * gBB() - getA() * fBB() / temperature; + } + + /** {@inheritDoc} */ + @Override + public double FDV() { + return -fv() / temperature; + } + + /** {@inheritDoc} */ + @Override + public double FBD() { + return -fb() / temperature; + } + + /** {@inheritDoc} */ + @Override + public double FTV() { + return getA() * fv() / temperature / temperature; + } + + /** {@inheritDoc} */ + @Override + public double FVV() { + return -numberOfMolesInPhase * gVV() - getA() * fVV() / temperature; + } + + /** + *

+ * FVVV. + *

+ * + * @return a double + */ + public double FVVV() { + return -numberOfMolesInPhase * gVVV() - getA() * fVVV() / temperature; + } + + /** {@inheritDoc} */ + @Override + public double gVV() { + double val1 = numberOfMolesInPhase * getMolarVolume(); + double val2 = val1 - getB(); + return -1.0 / (val2 * val2) + 1.0 / (val1 * val1); + } + + /** + *

+ * gVVV. + *

+ * + * @return a double + */ + public double gVVV() { + double val1 = numberOfMolesInPhase * getMolarVolume(); + double val2 = val1 - getB(); + return 2.0 / (val2 * val2 * val2) - 2.0 / (val1 * val1 * val1); + } + + /** {@inheritDoc} */ + @Override + public double gBV() { + double val = numberOfMolesInPhase * getMolarVolume() - getB(); + return 1.0 / (val * val); + } + + /** {@inheritDoc} */ + @Override + public double gBB() { + double val = numberOfMolesInPhase * getMolarVolume() - getB(); + return -1.0 / (val * val); + } + + /** {@inheritDoc} */ + @Override + public double fVV() { + double val1 = (numberOfMolesInPhase * molarVolume + delta1 * loc_B); + double val2 = (numberOfMolesInPhase * molarVolume + delta2 * loc_B); + return 1.0 / (R * loc_B * (delta1 - delta2)) * (-1.0 / (val1 * val1) + 1.0 / (val2 * val2)); + } + + /** + *

+ * fVVV. + *

+ * + * @return a double + */ + public double fVVV() { + double val1 = numberOfMolesInPhase * molarVolume + getB() * delta1; + double val2 = numberOfMolesInPhase * molarVolume + getB() * delta2; + return 1.0 / (R * getB() * (delta1 - delta2)) + * (2.0 / (val1 * val1 * val1) - 2.0 / (val2 * val2 * val2)); + } + + /** {@inheritDoc} */ + @Override + public double fBV() { + return -(2.0 * fv() + numberOfMolesInPhase * molarVolume * fVV()) / getB(); + } + + /** {@inheritDoc} */ + @Override + public double fBB() { + return -(2.0 * fb() + numberOfMolesInPhase * molarVolume * fBV()) / getB(); + } + + /** {@inheritDoc} */ + @Override + public double dFdT() { + return FT() + FD() * getAT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + return FV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdV() { + return FTV() + FDV() * getAT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return FVV(); + } + + /** + *

+ * dFdVdVdV. + *

+ * + * @return a double + */ + public double dFdVdVdV() { + return FVVV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdT() { + return FTT() + 2.0 * FDT() * getAT() + FD() * getATT(); + } + + /** {@inheritDoc} */ + @Override + public double calcPressure() { + return -R * temperature * dFdV() + + getNumberOfMolesInPhase() * R * temperature / getTotalVolume(); + } + + /** {@inheritDoc} */ + @Override + public double calcPressuredV() { + return -R * temperature * dFdVdV() + - getNumberOfMolesInPhase() * R * temperature / Math.pow(getTotalVolume(), 2.0); + } + + /** {@inheritDoc} */ + @Override + public double getSoundSpeed() { + double bs = -1.0 / getVolume() * getCv() / getCp() / getdPdVTn(); + double Mw = getNumberOfMolesInPhase() * getMolarMass(); + return Math.sqrt(getVolume() / Mw / bs); + } + + /** + *

+ * getdUdSVn. + *

+ * + * @return a double + */ + public double getdUdSVn() { + return getTemperature(); + } + + /** + *

+ * getdUdVSn. + *

+ * + * @return a double + */ + public double getdUdVSn() { + return -getPressure(); + } + + /** + *

+ * getdUdSdSVn. + *

+ * + * @return a double + */ + public double getdUdSdSVn() { + return 1.0 / (FTT() * R * getTemperature()); // noe feil her + } + + /** + *

+ * getdUdVdVSn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getdUdVdVSn(PhaseInterface phase) { + return -FVV() * 1.0 / FTT(); + } + + /** + *

+ * getdUdSdVn. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getdUdSdVn(PhaseInterface phase) { + return -1.0 / FTT() * FTV(); + } + + // getdTVndSVn() needs to be implemented + /** + *

+ * getdTVndSVnJaobiMatrix. + *

+ * + * @return an array of type double + */ + public double[][] getdTVndSVnJaobiMatrix() { + double[][] jacobiMatrix = new double[2 + numberOfComponents][2 + numberOfComponents]; + + jacobiMatrix[0][0] = FTT(); + jacobiMatrix[1][0] = FTT(); + jacobiMatrix[2][0] = FTT(); + + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { jacobiMatrix[2][0] = FTT(); - - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - jacobiMatrix[2][0] = FTT(); - } - } - - return jacobiMatrix; - } - - /** - *

- * getGradientVector. - *

- * - * @return an array of {@link double} objects - */ - public double[] getGradientVector() { - double[] gradientVector = new double[2 + numberOfComponents]; - return gradientVector; - } - - // getdTVndSVn() needs to be implemented - // symetrisk matrise - /** - *

- * getUSVHessianMatrix. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getUSVHessianMatrix() { - double[][] jacobiMatrix = new double[2 + numberOfComponents][2 + numberOfComponents]; - - jacobiMatrix[0][0] = FTT(); - jacobiMatrix[1][0] = FTT(); + } + } + + return jacobiMatrix; + } + + /** + *

+ * getGradientVector. + *

+ * + * @return an array of type double + */ + public double[] getGradientVector() { + double[] gradientVector = new double[2 + numberOfComponents]; + return gradientVector; + } + + // getdTVndSVn() needs to be implemented + // symetrisk matrise + /** + *

+ * getUSVHessianMatrix. + *

+ * + * @return an array of type double + */ + public double[][] getUSVHessianMatrix() { + double[][] jacobiMatrix = new double[2 + numberOfComponents][2 + numberOfComponents]; + + jacobiMatrix[0][0] = FTT(); + jacobiMatrix[1][0] = FTT(); + jacobiMatrix[2][0] = FTT(); + + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { jacobiMatrix[2][0] = FTT(); - - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - jacobiMatrix[2][0] = FTT(); - } - } - - return jacobiMatrix; - } - - /** - *

- * dFdxMatrixSimple. - *

- * - * @return an array of {@link double} objects - */ - public double[] dFdxMatrixSimple() { - double[] matrix = new double[numberOfComponents + 2]; - double Fn = Fn(), FB = FB(), FD = FD(); - double[] Bi = new double[numberOfComponents]; - double[] Ai = new double[numberOfComponents]; - ComponentEosInterface[] componentArray = (ComponentEosInterface[]) this.componentArray; - - for (int i = 0; i < numberOfComponents; i++) { - Bi[i] = componentArray[i].getBi(); - Ai[i] = componentArray[i].getAi(); - } - - for (int i = 0; i < numberOfComponents; i++) { - matrix[i] = Fn + FB * Bi[i] + FD * Ai[i]; - } - - matrix[numberOfComponents] = dFdT(); - matrix[numberOfComponents + 1] = dFdV(); - - return matrix; - } - - /** - *

- * dFdxMatrix. - *

- * - * @return an array of {@link double} objects - */ - public double[] dFdxMatrix() { - double[] matrix = new double[numberOfComponents + 2]; - - matrix[0] = dFdT(); - matrix[1] = dFdV(); - - for (int i = 0; i < numberOfComponents; i++) { - matrix[i + 2] = dFdN(i); - } - return matrix; - } - - /** - *

- * dFdxdxMatrixSimple. - *

- * - * @return an array of {@link double} objects - */ - public double[][] dFdxdxMatrixSimple() { - double[][] matrix = new double[numberOfComponents + 2][numberOfComponents + 2]; - - double FDV = FDV(), FBV = FBV(), FnV = FnV(), FnB = FnB(), FBD = FBD(), FB = FB(), - FBB = FBB(), FD = FD(), FBT = FBT(), AT = getAT(), FDT = FDT(); - ComponentEosInterface[] componentArray = (ComponentEosInterface[]) this.componentArray; - - double[] Bi = new double[numberOfComponents]; - double[] Ai = new double[numberOfComponents]; - for (int i = 0; i < numberOfComponents; i++) { - Bi[i] = componentArray[i].getBi(); - Ai[i] = componentArray[i].getAi(); - } - - for (int i = 0; i < numberOfComponents; i++) { - for (int j = i; j < numberOfComponents; j++) { - matrix[i][j] = FnB * (Bi[i] + Bi[j]) + FBD * (Bi[i] * Ai[j] + Bi[j] * Ai[i]) - + FB * componentArray[i].getBij(j) + FBB * Bi[i] * Bi[j] - + FD * componentArray[i].getAij(j); - matrix[j][i] = matrix[i][j]; - } - } - - for (int i = 0; i < numberOfComponents; i++) { - matrix[i][numberOfComponents] = - (FBT + FBD * AT) * Bi[i] + FDT * Ai[i] + FD * componentArray[i].getAiT(); // dFdndT - matrix[numberOfComponents][i] = matrix[i][numberOfComponents]; - - matrix[i][numberOfComponents + 1] = FnV + FBV * Bi[i] + FDV * Ai[i]; // dFdndV - matrix[numberOfComponents + 1][i] = matrix[i][numberOfComponents + 1]; - } - return matrix; - } - - /** - *

- * dFdxdxMatrix. - *

- * - * @return an array of {@link double} objects - */ - public double[][] dFdxdxMatrix() { - double[][] matrix = new double[numberOfComponents + 2][numberOfComponents + 2]; - - matrix[0][0] = dFdTdT(); - matrix[1][0] = dFdTdV(); - matrix[0][1] = matrix[1][0]; - matrix[1][1] = dFdVdV(); - - for (int i = 0; i < numberOfComponents; i++) { - matrix[i + 2][0] = dFdNdT(i); - matrix[0][i + 2] = matrix[i + 2][0]; - } - - for (int i = 0; i < numberOfComponents; i++) { - matrix[i + 2][1] = dFdNdV(i); - matrix[1][i + 2] = matrix[i + 2][1]; - } - - for (int i = 0; i < numberOfComponents; i++) { - for (int j = i; j < numberOfComponents; j++) { - matrix[i + 2][j + 2] = dFdNdN(i, j); - matrix[j + 2][i + 2] = matrix[i + 2][j + 2]; - } - } - return matrix; - } - - /** {@inheritDoc} */ - @Override - public double dFdN(int i) { - return ((ComponentEosInterface) getComponent(i)).dFdN(this, this.getNumberOfComponents(), - temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdN(int i, int j) { - return ((ComponentEosInterface) getComponent(i)).dFdNdN(j, this, - this.getNumberOfComponents(), temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdV(int i) { - return ((ComponentEosInterface) getComponent(i)).dFdNdV(this, this.getNumberOfComponents(), - temperature, pressure); - } - - /** {@inheritDoc} */ - @Override - public double dFdNdT(int i) { - return ((ComponentEosInterface) getComponent(i)).dFdNdT(this, this.getNumberOfComponents(), - temperature, pressure); - } + } + } + + return jacobiMatrix; + } + + /** + *

+ * dFdxMatrixSimple. + *

+ * + * @return an array of type double + */ + public double[] dFdxMatrixSimple() { + double[] matrix = new double[numberOfComponents + 2]; + double Fn = Fn(); + double FB = FB(); + double FD = FD(); + double[] Bi = new double[numberOfComponents]; + double[] Ai = new double[numberOfComponents]; + ComponentEosInterface[] componentArray = (ComponentEosInterface[]) this.componentArray; + + for (int i = 0; i < numberOfComponents; i++) { + Bi[i] = componentArray[i].getBi(); + Ai[i] = componentArray[i].getAi(); + } + + for (int i = 0; i < numberOfComponents; i++) { + matrix[i] = Fn + FB * Bi[i] + FD * Ai[i]; + } + + matrix[numberOfComponents] = dFdT(); + matrix[numberOfComponents + 1] = dFdV(); + + return matrix; + } + + /** + *

+ * dFdxMatrix. + *

+ * + * @return an array of type double + */ + public double[] dFdxMatrix() { + double[] matrix = new double[numberOfComponents + 2]; + + matrix[0] = dFdT(); + matrix[1] = dFdV(); + + for (int i = 0; i < numberOfComponents; i++) { + matrix[i + 2] = dFdN(i); + } + return matrix; + } + + /** + *

+ * dFdxdxMatrixSimple. + *

+ * + * @return an array of type double + */ + public double[][] dFdxdxMatrixSimple() { + double[][] matrix = new double[numberOfComponents + 2][numberOfComponents + 2]; + + double FDV = FDV(); + double FBV = FBV(); + double FnV = FnV(); + double FnB = FnB(); + double FBD = FBD(); + double FB = FB(); + double FBB = FBB(); + double FD = FD(); + double FBT = FBT(); + double AT = getAT(); + double FDT = FDT(); + ComponentEosInterface[] componentArray = (ComponentEosInterface[]) this.componentArray; + + double[] Bi = new double[numberOfComponents]; + double[] Ai = new double[numberOfComponents]; + for (int i = 0; i < numberOfComponents; i++) { + Bi[i] = componentArray[i].getBi(); + Ai[i] = componentArray[i].getAi(); + } + + for (int i = 0; i < numberOfComponents; i++) { + for (int j = i; j < numberOfComponents; j++) { + matrix[i][j] = FnB * (Bi[i] + Bi[j]) + FBD * (Bi[i] * Ai[j] + Bi[j] * Ai[i]) + + FB * componentArray[i].getBij(j) + FBB * Bi[i] * Bi[j] + + FD * componentArray[i].getAij(j); + matrix[j][i] = matrix[i][j]; + } + } + + for (int i = 0; i < numberOfComponents; i++) { + matrix[i][numberOfComponents] = + (FBT + FBD * AT) * Bi[i] + FDT * Ai[i] + FD * componentArray[i].getAiT(); // dFdndT + matrix[numberOfComponents][i] = matrix[i][numberOfComponents]; + + matrix[i][numberOfComponents + 1] = FnV + FBV * Bi[i] + FDV * Ai[i]; // dFdndV + matrix[numberOfComponents + 1][i] = matrix[i][numberOfComponents + 1]; + } + return matrix; + } + + /** + *

+ * dFdxdxMatrix. + *

+ * + * @return an array of type double + */ + public double[][] dFdxdxMatrix() { + double[][] matrix = new double[numberOfComponents + 2][numberOfComponents + 2]; + + matrix[0][0] = dFdTdT(); + matrix[1][0] = dFdTdV(); + matrix[0][1] = matrix[1][0]; + matrix[1][1] = dFdVdV(); + + for (int i = 0; i < numberOfComponents; i++) { + matrix[i + 2][0] = dFdNdT(i); + matrix[0][i + 2] = matrix[i + 2][0]; + } + + for (int i = 0; i < numberOfComponents; i++) { + matrix[i + 2][1] = dFdNdV(i); + matrix[1][i + 2] = matrix[i + 2][1]; + } + + for (int i = 0; i < numberOfComponents; i++) { + for (int j = i; j < numberOfComponents; j++) { + matrix[i + 2][j + 2] = dFdNdN(i, j); + matrix[j + 2][i + 2] = matrix[i + 2][j + 2]; + } + } + return matrix; + } + + /** {@inheritDoc} */ + @Override + public double dFdN(int i) { + return ((ComponentEosInterface) getComponent(i)).dFdN(this, this.getNumberOfComponents(), + temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdN(int i, int j) { + return ((ComponentEosInterface) getComponent(i)).dFdNdN(j, this, this.getNumberOfComponents(), + temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdV(int i) { + return ((ComponentEosInterface) getComponent(i)).dFdNdV(this, this.getNumberOfComponents(), + temperature, pressure); + } + + /** {@inheritDoc} */ + @Override + public double dFdNdT(int i) { + return ((ComponentEosInterface) getComponent(i)).dFdNdT(this, this.getNumberOfComponents(), + temperature, pressure); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseEosInterface.java b/src/main/java/neqsim/thermo/phase/PhaseEosInterface.java index 3639c5bd19..0fbab32499 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseEosInterface.java +++ b/src/main/java/neqsim/thermo/phase/PhaseEosInterface.java @@ -3,6 +3,7 @@ * * Created on 5. juni 2000, 19:20 */ + package neqsim.thermo.phase; import neqsim.thermo.mixingRule.EosMixingRulesInterface; @@ -16,148 +17,148 @@ * @version $Id: $Id */ public interface PhaseEosInterface extends PhaseInterface { - /** {@inheritDoc} */ - @Override - double getMolarVolume(); - - /** - *

- * getMixingRule. - *

- * - * @return a {@link neqsim.thermo.mixingRule.EosMixingRulesInterface} object - */ - public EosMixingRulesInterface getMixingRule(); - - /** - *

- * getMixingRuleName. - *

- * - * @return a {@link java.lang.String} object - */ - public java.lang.String getMixingRuleName(); - - /** - *

- * calcPressure. - *

- * - * @return a double - */ - public double calcPressure(); - - /** - *

- * calcPressuredV. - *

- * - * @return a double - */ - public double calcPressuredV(); - - /** - *

- * getPressureRepulsive. - *

- * - * @return a double - */ - public double getPressureRepulsive(); - - /** - *

- * getPressureAttractive. - *

- * - * @return a double - */ - public double getPressureAttractive(); - - /** - *

- * displayInteractionCoefficients. - *

- * - * @param intType a {@link java.lang.String} object - */ - public void displayInteractionCoefficients(String intType); - // public double getA(); - // public double getB(); - // double calcA(ComponentEosInterface[] compArray, double temperature, double - // pressure, int numbcomp); - // double calcB(ComponentEosInterface[] compArray, double temperature, double - // pressure, int numbcomp); - // double calcA(ComponentEosInterface[] compArray, double temperature, double - // pressure, int numbcomp); - // double calcB(ComponentEosInterface[] compArray, double temperature, double - // pressure, int numbcomp); - - /** - *

- * F. - *

- * - * @return a double - */ - public double F(); - - /** - *

- * dFdN. - *

- * - * @param i a int - * @return a double - */ - public double dFdN(int i); - - /** - *

- * dFdNdN. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double dFdNdN(int i, int j); - - /** - *

- * dFdNdV. - *

- * - * @param i a int - * @return a double - */ - public double dFdNdV(int i); - - /** - *

- * dFdNdT. - *

- * - * @param i a int - * @return a double - */ - public double dFdNdT(int i); - - /** - *

- * getAresTV. - *

- * - * @return a double - */ - public double getAresTV(); - - /** - *

- * getSresTV. - *

- * - * @return a double - */ - public double getSresTV(); + /** {@inheritDoc} */ + @Override + double getMolarVolume(); + + /** + *

+ * getMixingRule. + *

+ * + * @return a {@link neqsim.thermo.mixingRule.EosMixingRulesInterface} object + */ + public EosMixingRulesInterface getMixingRule(); + + /** + *

+ * getMixingRuleName. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getMixingRuleName(); + + /** + *

+ * calcPressure. + *

+ * + * @return a double + */ + public double calcPressure(); + + /** + *

+ * calcPressuredV. + *

+ * + * @return a double + */ + public double calcPressuredV(); + + /** + *

+ * getPressureRepulsive. + *

+ * + * @return a double + */ + public double getPressureRepulsive(); + + /** + *

+ * getPressureAttractive. + *

+ * + * @return a double + */ + public double getPressureAttractive(); + + /** + *

+ * displayInteractionCoefficients. + *

+ * + * @param intType a {@link java.lang.String} object + */ + public void displayInteractionCoefficients(String intType); + // public double getA(); + // public double getB(); + // double calcA(ComponentEosInterface[] compArray, double temperature, double + // pressure, int numbcomp); + // double calcB(ComponentEosInterface[] compArray, double temperature, double + // pressure, int numbcomp); + // double calcA(ComponentEosInterface[] compArray, double temperature, double + // pressure, int numbcomp); + // double calcB(ComponentEosInterface[] compArray, double temperature, double + // pressure, int numbcomp); + + /** + *

+ * F. + *

+ * + * @return a double + */ + public double F(); + + /** + *

+ * dFdN. + *

+ * + * @param i a int + * @return a double + */ + public double dFdN(int i); + + /** + *

+ * dFdNdN. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double dFdNdN(int i, int j); + + /** + *

+ * dFdNdV. + *

+ * + * @param i a int + * @return a double + */ + public double dFdNdV(int i); + + /** + *

+ * dFdNdT. + *

+ * + * @param i a int + * @return a double + */ + public double dFdNdT(int i); + + /** + *

+ * getAresTV. + *

+ * + * @return a double + */ + public double getAresTV(); + + /** + *

+ * getSresTV. + *

+ * + * @return a double + */ + public double getSresTV(); } diff --git a/src/main/java/neqsim/thermo/phase/PhaseEosInterface_1.java b/src/main/java/neqsim/thermo/phase/PhaseEosInterface_1.java deleted file mode 100644 index 5609f91d54..0000000000 --- a/src/main/java/neqsim/thermo/phase/PhaseEosInterface_1.java +++ /dev/null @@ -1,72 +0,0 @@ -package neqsim.thermo.phase; - -import neqsim.thermo.mixingRule.EosMixingRulesInterface; - -/** - *

- * PhaseEosInterface_1 interface. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public interface PhaseEosInterface_1 extends PhaseInterface { - /** {@inheritDoc} */ - @Override - double getMolarVolume(); - - /** - *

- * getMixingRule. - *

- * - * @return a {@link neqsim.thermo.mixingRule.EosMixingRulesInterface} object - */ - public EosMixingRulesInterface getMixingRule(); - - /** - *

- * getMixingRuleName. - *

- * - * @return a {@link java.lang.String} object - */ - public java.lang.String getMixingRuleName(); - - /** - *

- * calcPressure. - *

- * - * @return a double - */ - public double calcPressure(); - - /** - *

- * getPressureRepulsive. - *

- * - * @return a double - */ - public double getPressureRepulsive(); - - /** - *

- * getPressureAttractive. - *

- * - * @return a double - */ - public double getPressureAttractive(); - // public double getA(); - // public double getB(); - // double calcA(ComponentEosInterface[] compArray, double temperature, double - // pressure, int numbcomp); - // double calcB(ComponentEosInterface[] compArray, double temperature, double - // pressure, int numbcomp); - // double calcA(ComponentEosInterface[] compArray, double temperature, double - // pressure, int numbcomp); - // double calcB(ComponentEosInterface[] compArray, double temperature, double - // pressure, int numbcomp); -} diff --git a/src/main/java/neqsim/thermo/phase/PhaseGE.java b/src/main/java/neqsim/thermo/phase/PhaseGE.java index 6fe67dca43..974adffbe6 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGE.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGE.java @@ -3,11 +3,13 @@ * * Created on 11. juli 2000, 21:00 */ + package neqsim.thermo.phase; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.component.ComponentGEInterface; import neqsim.thermo.mixingRule.EosMixingRules; import neqsim.thermo.mixingRule.EosMixingRulesInterface; @@ -20,313 +22,240 @@ * @author Even Solbraa * @version $Id: $Id */ -public class PhaseGE extends Phase implements PhaseGEInterface { - private static final long serialVersionUID = 1000; - - EosMixingRules mixSelect = new EosMixingRules(); - EosMixingRulesInterface mixRuleEos; - - static Logger logger = LogManager.getLogger(PhaseGE.class); - - /** - *

- * Constructor for PhaseGE. - *

- */ - public PhaseGE() { - super(); - phaseTypeName = "liquid"; - componentArray = new ComponentGEInterface[MAX_NUMBER_OF_COMPONENTS]; - useVolumeCorrection = false; - } - - /** - *

- * init. - *

- * - * @param temperature a double - * @param pressure a double - * @param totalNumberOfMoles a double - * @param beta a double - * @param numberOfComponents a int - * @param type a int - * @param phase a int - */ - public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, - int numberOfComponents, int type, int phase) { - if (totalNumberOfMoles <= 0) { - new neqsim.util.exception.InvalidInputException(this, "init", "totalNumberOfMoles", - "must be larger than zero."); - } - for (int i = 0; i < numberOfComponents; i++) { - componentArray[i].init(temperature, pressure, totalNumberOfMoles, beta, type); - } - this.getExessGibbsEnergy(this, numberOfComponents, temperature, pressure, type); - - double sumHydrocarbons = 0.0, sumAqueous = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (getComponent(i).isHydrocarbon() || getComponent(i).isInert() - || getComponent(i).isIsTBPfraction()) { - sumHydrocarbons += getComponent(i).getx(); - } else { - sumAqueous += getComponent(i).getx(); - } - } - - if (sumHydrocarbons > sumAqueous) { - phaseTypeName = "oil"; - } else { - phaseTypeName = "aqueous"; - } - } - - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int initType, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, initType, phase, beta); - if (initType != 0) { - getExessGibbsEnergy(this, numberOfComponents, temperature, pressure, phase); - } - - double sumHydrocarbons = 0.0, sumAqueous = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (getComponent(i).isHydrocarbon() || getComponent(i).isInert() - || getComponent(i).isIsTBPfraction()) { - sumHydrocarbons += getComponent(i).getx(); - } else { - sumAqueous += getComponent(i).getx(); - } - } - - if (sumHydrocarbons > sumAqueous) { - phaseTypeName = "oil"; - } else { - phaseTypeName = "aqueous"; - } - - // calc liquid density - - if (initType > 1) { - // Calc Cp /Cv - // Calc enthalpy/entropys - } - } - - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - mixingRuleDefined = true; - super.setMixingRule(2); - mixRuleEos = mixSelect.getMixingRule(2, this); - } - - /** {@inheritDoc} */ - @Override - public void resetMixingRule(int type) { - mixingRuleDefined = true; - super.setMixingRule(2); - mixRuleEos = mixSelect.resetMixingRule(2, this); - } - - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) { - return 1; - } - - /** - *

- * molarVolumeAnalytic. - *

- * - * @param pressure a double - * @param temperature a double - * @param A a double - * @param B a double - * @param phase a int - * @return a double - */ - public double molarVolumeAnalytic(double pressure, double temperature, double A, double B, - int phase) { - return 1; - } - - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - } - - /** - *

- * setAlpha. - *

- * - * @param alpha an array of {@link double} objects - */ - public void setAlpha(double[][] alpha) {} - - /** - *

- * setDij. - *

- * - * @param Dij an array of {@link double} objects - */ - public void setDij(double[][] Dij) {} - - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - logger.error("this getExxess should never be used......."); - return 0; - } - - /** {@inheritDoc} */ - @Override - public double getGibbsEnergy() { - return 0; +public abstract class PhaseGE extends Phase implements PhaseGEInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseGE.class); + + EosMixingRules mixSelect = new EosMixingRules(); + EosMixingRulesInterface mixRuleEos; + + /** + *

+ * Constructor for PhaseGE. + *

+ */ + public PhaseGE() { + super(); + setType(PhaseType.LIQUID); + componentArray = new ComponentGEInterface[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + useVolumeCorrection = false; + } + + /** + *

+ * init. + *

+ * + * @param temperature a double + * @param pressure a double + * @param totalNumberOfMoles a double + * @param beta a double + * @param numberOfComponents a int + * @param pt the PhaseType of the phase + * @param phase a int + */ + public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, + int numberOfComponents, PhaseType pt, int phase) { + if (totalNumberOfMoles <= 0) { + new neqsim.util.exception.InvalidInputException(this, "init", "totalNumberOfMoles", + "must be larger than zero."); } - - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy() { - logger.error("this getExxess should never be used......."); - return 0; + for (int i = 0; i < numberOfComponents; i++) { + // todo: Conflating init type and phase type? + componentArray[i].init(temperature, pressure, totalNumberOfMoles, beta, pt.getValue()); } - - /** - *

- * setDijT. - *

- * - * @param DijT an array of {@link double} objects - */ - public void setDijT(double[][] DijT) {} - - /** {@inheritDoc} */ - @Override - public double getActivityCoefficientSymetric(int k) { - return ((ComponentGEInterface) getComponent(k)).getGamma(); + this.getExcessGibbsEnergy(this, numberOfComponents, temperature, pressure, pt); + + double sumHydrocarbons = 0.0; + double sumAqueous = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (getComponent(i).isHydrocarbon() || getComponent(i).isInert() + || getComponent(i).isIsTBPfraction()) { + sumHydrocarbons += getComponent(i).getx(); + } else { + sumAqueous += getComponent(i).getx(); + } } - /** {@inheritDoc} */ - @Override - public double getActivityCoefficient(int k) { - return ((ComponentGEInterface) getComponent(k)).getGamma(); + if (sumHydrocarbons > sumAqueous) { + setType(PhaseType.OIL); + } else { + setType(PhaseType.AQUEOUS); } - - /** - *

- * getActivityCoefficientInfDilWater. - *

- * - * @param k a int - * @param p a int - * @return a double - */ - public double getActivityCoefficientInfDilWater(int k, int p) { - if (refPhase == null) { - initRefPhases(false, getComponent(p).getName()); - } - refPhase[k].setTemperature(temperature); - refPhase[k].setPressure(pressure); - refPhase[k].init(refPhase[k].getNumberOfMolesInPhase(), 2, 1, this.getPhaseType(), 1.0); - ((PhaseGEInterface) refPhase[k]).getExessGibbsEnergy(refPhase[k], 2, - refPhase[k].getTemperature(), refPhase[k].getPressure(), - refPhase[k].getPhaseType()); - return ((ComponentGEInterface) refPhase[k].getComponent(0)).getGamma(); + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + if (initType != 0) { + getExcessGibbsEnergy(this, numberOfComponents, temperature, pressure, pt); } - /** - *

- * getActivityCoefficientInfDil. - *

- * - * @param k a int - * @return a double - */ - public double getActivityCoefficientInfDil(int k) { - PhaseInterface dilphase = (PhaseInterface) this.clone(); - dilphase.addMoles(k, -(1.0 - 1e-10) * dilphase.getComponent(k).getNumberOfMolesInPhase()); - dilphase.getComponent(k).setx(1e-10); - dilphase.init(dilphase.getNumberOfMolesInPhase(), dilphase.getNumberOfComponents(), 1, - dilphase.getPhaseType(), 1.0); - ((PhaseGEInterface) dilphase).getExessGibbsEnergy(dilphase, 2, dilphase.getTemperature(), - dilphase.getPressure(), dilphase.getPhaseType()); - return ((ComponentGEInterface) dilphase.getComponent(0)).getGamma(); + double sumHydrocarbons = 0.0; + double sumAqueous = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (getComponent(i).isHydrocarbon() || getComponent(i).isInert() + || getComponent(i).isIsTBPfraction()) { + sumHydrocarbons += getComponent(i).getx(); + } else { + sumAqueous += getComponent(i).getx(); + } } - /** {@inheritDoc} */ - @Override - public double getEnthalpy() { - return getCp() * temperature * numberOfMolesInPhase; + if (sumHydrocarbons > sumAqueous) { + setType(PhaseType.OIL); + } else { + setType(PhaseType.AQUEOUS); } - /** {@inheritDoc} */ - @Override - public double getEntropy() { - return getCp() - * Math.log(temperature / ThermodynamicConstantsInterface.referenceTemperature); + // calc liquid density + if (initType > 1) { + // Calc Cp /Cv + // Calc enthalpy/entropys } - - /** {@inheritDoc} */ - @Override - public double getCp() { - double tempVar = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - tempVar += componentArray[i].getx() - * componentArray[i].getPureComponentCpLiquid(temperature); - } - return tempVar; + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + mixingRuleDefined = true; + super.setMixingRule(2); + mixRuleEos = mixSelect.getMixingRule(2, this); + } + + /** {@inheritDoc} */ + @Override + public void resetMixingRule(int type) { + mixingRuleDefined = true; + super.setMixingRule(2); + mixRuleEos = mixSelect.resetMixingRule(2, this); + } + + /** {@inheritDoc} */ + @Override + public double getActivityCoefficientSymetric(int k) { + return ((ComponentGEInterface) getComponent(k)).getGamma(); + } + + /** {@inheritDoc} */ + @Override + public double getActivityCoefficient(int k) { + return ((ComponentGEInterface) getComponent(k)).getGamma(); + } + + /** + *

+ * getActivityCoefficientInfDilWater. + *

+ * + * @param k a int + * @param p a int + * @return a double + */ + public double getActivityCoefficientInfDilWater(int k, int p) { + if (refPhase == null) { + initRefPhases(false, getComponent(p).getName()); } - - /** {@inheritDoc} */ - @Override - public double getCv() { - // Cv is assumed equal to Cp - return getCp(); - } - - // return speed of sound in water constant 1470.0 m/sec - /** {@inheritDoc} */ - @Override - public double getZ() { - double densityIdealGas = pressure * 1e5 / 8.314 / temperature * getMolarMass(); - return densityIdealGas / getDensity("kg/m3"); - } - - // return speed of sound in water constant 1470.0 m/sec - /** {@inheritDoc} */ - @Override - public double getSoundSpeed() { - return 1470.0; - } - - // return speed of JT coefficient of water at K/bar (assumed constant) - /** {@inheritDoc} */ - @Override - public double getJouleThomsonCoefficient() { - return -0.125 / 10.0; - } - - /** - * {@inheritDoc} - * - * note: at the moment return density of water (997 kg/m3) - */ - @Override - public double getDensity() { - return 997.0; - } - - /** {@inheritDoc} */ - @Override - public double getMolarVolume() { - return 1.0 / (getDensity() / getMolarMass()) * 1.0e5; + refPhase[k].setTemperature(temperature); + refPhase[k].setPressure(pressure); + refPhase[k].init(refPhase[k].getNumberOfMolesInPhase(), 2, 1, this.getType(), 1.0); + ((PhaseGEInterface) refPhase[k]).getExcessGibbsEnergy(refPhase[k], 2, + refPhase[k].getTemperature(), refPhase[k].getPressure(), refPhase[k].getType()); + return ((ComponentGEInterface) refPhase[k].getComponent(0)).getGamma(); + } + + /** + *

+ * getActivityCoefficientInfDil. + *

+ * + * @param k a int + * @return a double + */ + public double getActivityCoefficientInfDil(int k) { + PhaseInterface dilphase = this.clone(); + dilphase.addMoles(k, -(1.0 - 1e-10) * dilphase.getComponent(k).getNumberOfMolesInPhase()); + dilphase.getComponent(k).setx(1e-10); + dilphase.init(dilphase.getNumberOfMolesInPhase(), dilphase.getNumberOfComponents(), 1, + dilphase.getType(), 1.0); + ((PhaseGEInterface) dilphase).getExcessGibbsEnergy(dilphase, 2, dilphase.getTemperature(), + dilphase.getPressure(), dilphase.getType()); + return ((ComponentGEInterface) dilphase.getComponent(0)).getGamma(); + } + + /** {@inheritDoc} */ + @Override + public double getEnthalpy() { + return getCp() * temperature * numberOfMolesInPhase; + } + + /** {@inheritDoc} */ + @Override + public double getEntropy() { + return getCp() * Math.log(temperature / ThermodynamicConstantsInterface.referenceTemperature); + } + + /** {@inheritDoc} */ + @Override + public double getCp() { + double tempVar = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + tempVar += componentArray[i].getx() * componentArray[i].getPureComponentCpLiquid(temperature); } + return tempVar; + } + + /** {@inheritDoc} */ + @Override + public double getCv() { + // Cv is assumed equal to Cp + return getCp(); + } + + /** {@inheritDoc} */ + @Override + public double getZ() { + double densityIdealGas = + pressure * 1e5 / ThermodynamicConstantsInterface.R / temperature * getMolarMass(); + return densityIdealGas / getDensity("kg/m3"); + } + + // return speed of sound in water constant 1470.0 m/sec + /** {@inheritDoc} */ + @Override + public double getSoundSpeed() { + return 1470.0; + } + + /** + * {@inheritDoc} + * + *

+ * Return speed of JT coefficient of water at K/bar (assumed constant) -0.0125 + *

+ */ + @Override + public double getJouleThomsonCoefficient() { + return -0.125 / 10.0; + } + + /** + * {@inheritDoc} + * + *

+ * note: at the moment return density of water (997 kg/m3) + *

+ */ + @Override + public double getDensity() { + return 997.0; + } + + /** {@inheritDoc} */ + @Override + public double getMolarVolume() { + return 1.0 / (getDensity() / getMolarMass()) * 1.0e5; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGEInterface.java b/src/main/java/neqsim/thermo/phase/PhaseGEInterface.java index fccd1510e9..ccb91d60c9 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGEInterface.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGEInterface.java @@ -3,6 +3,7 @@ * * Created on 12. juli 2000, 00:26 */ + package neqsim.thermo.phase; /** @@ -14,18 +15,45 @@ * @version $Id: $Id */ public interface PhaseGEInterface { - /** - *

- * getExessGibbsEnergy. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numberOfComponents a int - * @param temperature a double - * @param pressure a double - * @param phasetype a int - * @return a double - */ - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype); + /** + *

+ * getExcessGibbsEnergy. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + * @return a double + */ + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt); + + /** + *

+ * setAlpha. + *

+ * + * @param alpha an array of type double + */ + public void setAlpha(double[][] alpha); + + /** + *

+ * setDij. + *

+ * + * @param Dij an array of type double + */ + public void setDij(double[][] Dij); + + /** + *

+ * setDijT. + *

+ * + * @param DijT an array of type double + */ + public void setDijT(double[][] DijT); } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGENRTL.java b/src/main/java/neqsim/thermo/phase/PhaseGENRTL.java index 9ff8080d03..8bd014d5f7 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGENRTL.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGENRTL.java @@ -3,10 +3,13 @@ * * Created on 17. juli 2000, 20:51 */ + package neqsim.thermo.phase; import neqsim.thermo.component.ComponentGEInterface; import neqsim.thermo.component.ComponentGeNRTL; +import neqsim.util.exception.IsNaNException; +import neqsim.util.exception.TooManyIterationsException; /** *

@@ -17,112 +20,123 @@ * @version $Id: $Id */ public class PhaseGENRTL extends PhaseGE { - private static final long serialVersionUID = 1000; - - double[][] alpha; - String[][] mixRule; - double[][] intparam; - double[][] Dij; - double GE = 0.0; - - /** - *

- * Constructor for PhaseGENRTL. - *

- */ - public PhaseGENRTL() { - super(); - } + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseGENRTL. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects - */ - public PhaseGENRTL(PhaseInterface phase, double[][] alpha, double[][] Dij, String[][] mixRule, - double[][] intparam) { - super(); - componentArray = new ComponentGeNRTL[alpha[0].length]; - this.mixRule = mixRule; - this.alpha = alpha; - this.Dij = Dij; - this.intparam = intparam; - for (int i = 0; i < alpha[0].length; i++) { - numberOfComponents++; - componentArray[i] = new ComponentGeNRTL(phase.getComponents()[i].getName(), - phase.getComponents()[i].getNumberOfmoles(), - phase.getComponents()[i].getNumberOfMolesInPhase(), - phase.getComponents()[i].getComponentNumber()); - } - setMixingRule(2); - } + double[][] alpha; + String[][] mixRule; + double[][] intparam; + double[][] Dij; + double GE = 0.0; - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentGeNRTL(componentName, moles, molesInPhase, compNumber); - } + /** + *

+ * Constructor for PhaseGENRTL. + *

+ */ + public PhaseGENRTL() { + super(); + } - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - this.intparam = mixSelect.getSRKbinaryInteractionParameters(); - this.alpha = mixSelect.getNRTLalpha(); - this.mixRule = mixSelect.getClassicOrHV(); - this.Dij = mixSelect.getNRTLDij(); + /** + *

+ * Constructor for PhaseGENRTL. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param alpha an array of type double + * @param Dij an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @param intparam an array of type double + */ + public PhaseGENRTL(PhaseInterface phase, double[][] alpha, double[][] Dij, String[][] mixRule, + double[][] intparam) { + super(); + componentArray = new ComponentGeNRTL[alpha[0].length]; + this.mixRule = mixRule; + this.alpha = alpha; + this.Dij = Dij; + this.intparam = intparam; + for (int i = 0; i < alpha[0].length; i++) { + numberOfComponents++; + componentArray[i] = new ComponentGeNRTL(phase.getComponents()[i].getName(), + phase.getComponents()[i].getNumberOfmoles(), + phase.getComponents()[i].getNumberOfMolesInPhase(), + phase.getComponents()[i].getComponentNumber()); } + setMixingRule(2); + } - /** {@inheritDoc} */ - @Override - public void setAlpha(double[][] alpha) { - for (int i = 0; i < alpha.length; i++) { - System.arraycopy(alpha[i], 0, this.alpha[i], 0, alpha[0].length); - } - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentGeNRTL(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public void setDij(double[][] Dij) { - for (int i = 0; i < Dij.length; i++) { - System.arraycopy(Dij[i], 0, this.Dij[i], 0, Dij[0].length); - } - } + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + this.intparam = mixSelect.getSRKbinaryInteractionParameters(); + this.alpha = mixSelect.getNRTLalpha(); + this.mixRule = mixSelect.getClassicOrHV(); + this.Dij = mixSelect.getNRTLDij(); + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - GE = 0; - for (int i = 0; i < numberOfComponents; i++) { - GE += phase.getComponents()[i].getx() * Math.log( - ((ComponentGEInterface) componentArray[i]).getGamma(phase, numberOfComponents, - temperature, pressure, phasetype, alpha, Dij, intparam, mixRule)); - } - - return R * temperature * numberOfMolesInPhase * GE;// phase.getNumberOfMolesInPhase()* + /** {@inheritDoc} */ + @Override + public void setAlpha(double[][] alpha) { + for (int i = 0; i < alpha.length; i++) { + System.arraycopy(alpha[i], 0, this.alpha[i], 0, alpha[0].length); } + } - /** {@inheritDoc} */ - @Override - public double getGibbsEnergy() { - return R * temperature * numberOfMolesInPhase * (GE + Math.log(pressure)); + /** {@inheritDoc} */ + @Override + public void setDij(double[][] Dij) { + for (int i = 0; i < Dij.length; i++) { + System.arraycopy(Dij[i], 0, this.Dij[i], 0, Dij[0].length); } + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy() { - // double GE = getExessGibbsEnergy(this, numberOfComponents, temperature, - // pressure, phaseType); - return GE; + /** {@inheritDoc} */ + @Override + public void setDijT(double[][] DijT) { + throw new UnsupportedOperationException("Unimplemented method 'setDijT'"); + } + + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy() { + // double GE = getExcessGibbsEnergy(this, numberOfComponents, temperature, + // pressure, pt); + return GE; + } + + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + GE = 0; + for (int i = 0; i < numberOfComponents; i++) { + GE += phase.getComponents()[i].getx() + * Math.log(((ComponentGEInterface) componentArray[i]).getGamma(phase, numberOfComponents, + temperature, pressure, pt, alpha, Dij, intparam, mixRule)); } + + return R * temperature * numberOfMolesInPhase * GE; + } + + /** {@inheritDoc} */ + @Override + public double getGibbsEnergy() { + return R * temperature * numberOfMolesInPhase * (GE + Math.log(pressure)); + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws IsNaNException, TooManyIterationsException { + throw new UnsupportedOperationException("Unimplemented method 'molarVolume'"); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGENRTLmodifiedHV.java b/src/main/java/neqsim/thermo/phase/PhaseGENRTLmodifiedHV.java index 4a569caa12..6ddb386f36 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGENRTLmodifiedHV.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGENRTLmodifiedHV.java @@ -3,6 +3,7 @@ * * Created on 18. juli 2000, 18:32 */ + package neqsim.thermo.phase; import neqsim.thermo.component.ComponentGEInterface; @@ -17,150 +18,147 @@ * @version $Id: $Id */ public class PhaseGENRTLmodifiedHV extends PhaseGENRTL { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double[][] DijT; - int type = 0; + double[][] DijT; + int type = 0; - /** - *

- * Constructor for PhaseGENRTLmodifiedHV. - *

- */ - public PhaseGENRTLmodifiedHV() { - super(); - mixRuleEos = mixSelect.getMixingRule(1); - } + /** + *

+ * Constructor for PhaseGENRTLmodifiedHV. + *

+ */ + public PhaseGENRTLmodifiedHV() { + super(); + mixRuleEos = mixSelect.getMixingRule(1); + } - /** - *

- * Constructor for PhaseGENRTLmodifiedHV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects - */ - public PhaseGENRTLmodifiedHV(PhaseInterface phase, double[][] alpha, double[][] Dij, - String[][] mixRule, double[][] intparam) { - super(phase, alpha, Dij, mixRule, intparam); - componentArray = new ComponentGENRTLmodifiedHV[alpha[0].length]; - type = 0; - for (int i = 0; i < alpha[0].length; i++) { - componentArray[i] = new ComponentGENRTLmodifiedHV(phase.getComponents()[i].getName(), - phase.getComponents()[i].getNumberOfmoles(), - phase.getComponents()[i].getNumberOfMolesInPhase(), - phase.getComponents()[i].getComponentNumber()); - } + /** + *

+ * Constructor for PhaseGENRTLmodifiedHV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param alpha an array of type double + * @param Dij an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @param intparam an array of type double + */ + public PhaseGENRTLmodifiedHV(PhaseInterface phase, double[][] alpha, double[][] Dij, + String[][] mixRule, double[][] intparam) { + super(phase, alpha, Dij, mixRule, intparam); + componentArray = new ComponentGENRTLmodifiedHV[alpha[0].length]; + type = 0; + for (int i = 0; i < alpha[0].length; i++) { + componentArray[i] = new ComponentGENRTLmodifiedHV(phase.getComponents()[i].getName(), + phase.getComponents()[i].getNumberOfmoles(), + phase.getComponents()[i].getNumberOfMolesInPhase(), + phase.getComponents()[i].getComponentNumber()); } + } - /** - *

- * Constructor for PhaseGENRTLmodifiedHV. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param DijT an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects - */ - public PhaseGENRTLmodifiedHV(PhaseInterface phase, double[][] alpha, double[][] Dij, - double[][] DijT, String[][] mixRule, double[][] intparam) { - super(phase, alpha, Dij, mixRule, intparam); - componentArray = new ComponentGENRTLmodifiedHV[alpha[0].length]; - type = 1; - this.DijT = DijT; - for (int i = 0; i < alpha[0].length; i++) { - componentArray[i] = new ComponentGENRTLmodifiedHV(phase.getComponents()[i].getName(), - phase.getComponents()[i].getNumberOfmoles(), - phase.getComponents()[i].getNumberOfMolesInPhase(), - phase.getComponents()[i].getComponentNumber()); - } + /** + *

+ * Constructor for PhaseGENRTLmodifiedHV. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param alpha an array of type double + * @param Dij an array of type double + * @param DijT an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @param intparam an array of type double + */ + public PhaseGENRTLmodifiedHV(PhaseInterface phase, double[][] alpha, double[][] Dij, + double[][] DijT, String[][] mixRule, double[][] intparam) { + super(phase, alpha, Dij, mixRule, intparam); + componentArray = new ComponentGENRTLmodifiedHV[alpha[0].length]; + type = 1; + this.DijT = DijT; + for (int i = 0; i < alpha[0].length; i++) { + componentArray[i] = new ComponentGENRTLmodifiedHV(phase.getComponents()[i].getName(), + phase.getComponents()[i].getNumberOfmoles(), + phase.getComponents()[i].getNumberOfMolesInPhase(), + phase.getComponents()[i].getComponentNumber()); } + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentGENRTLmodifiedHV(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = + new ComponentGENRTLmodifiedHV(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - this.DijT = mixSelect.getHVDijT(); - this.intparam = mixSelect.getSRKbinaryInteractionParameters(); - this.alpha = mixSelect.getHValpha(); - this.mixRule = mixSelect.getClassicOrHV(); - this.Dij = mixSelect.getHVDij(); - } + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + this.DijT = mixSelect.getHVDijT(); + this.intparam = mixSelect.getSRKbinaryInteractionParameters(); + this.alpha = mixSelect.getHValpha(); + this.mixRule = mixSelect.getClassicOrHV(); + this.Dij = mixSelect.getHVDij(); + } - /** {@inheritDoc} */ - @Override - public void setParams(PhaseInterface phase, double[][] alpha, double[][] Dij, double[][] DijT, - String[][] mixRule, double[][] intparam) { - this.mixRule = mixRule; - this.alpha = alpha; - this.Dij = Dij; - type = 1; - this.DijT = DijT; - this.intparam = intparam; - } + /** {@inheritDoc} */ + @Override + public void setParams(PhaseInterface phase, double[][] alpha, double[][] Dij, double[][] DijT, + String[][] mixRule, double[][] intparam) { + this.mixRule = mixRule; + this.alpha = alpha; + this.Dij = Dij; + type = 1; + this.DijT = DijT; + this.intparam = intparam; + } - /** {@inheritDoc} */ - @Override - public void setDijT(double[][] DijT) { - for (int i = 0; i < DijT.length; i++) { - System.arraycopy(DijT[i], 0, this.DijT[i], 0, DijT[0].length); - } + /** {@inheritDoc} */ + @Override + public void setDijT(double[][] DijT) { + for (int i = 0; i < DijT.length; i++) { + System.arraycopy(DijT[i], 0, this.DijT[i], 0, DijT[0].length); } + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - GE = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (type == 0) { - GE += phase.getComponents()[i].getx() - * Math.log(((ComponentGEInterface) componentArray[i]).getGamma(phase, - numberOfComponents, temperature, pressure, phasetype, alpha, Dij, - intparam, mixRule)); - } else if (type == 1) { - GE += phase.getComponents()[i].getx() - * Math.log(((ComponentGENRTLmodifiedHV) componentArray[i]).getGamma(phase, - numberOfComponents, temperature, pressure, phasetype, alpha, Dij, - DijT, intparam, mixRule)); - } - } - return (R * phase.getTemperature() * GE) * phase.getNumberOfMolesInPhase(); + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + GE = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (type == 0) { + GE += phase.getComponents()[i].getx() + * Math.log(((ComponentGEInterface) componentArray[i]).getGamma(phase, + numberOfComponents, temperature, pressure, pt, alpha, Dij, intparam, mixRule)); + } else if (type == 1) { + GE += phase.getComponents()[i].getx() * Math + .log(((ComponentGENRTLmodifiedHV) componentArray[i]).getGamma(phase, numberOfComponents, + temperature, pressure, pt, alpha, Dij, DijT, intparam, mixRule)); + } } + return R * phase.getTemperature() * phase.getNumberOfMolesInPhase() * GE; + } - /** {@inheritDoc} */ - @Override - public double getGibbsEnergy() { - double val = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - val += getComponent(i).getNumberOfMolesInPhase() - * (getComponent(i).getLogFugacityCoefficient());// +Math.log(getComponent(i).getx()*getComponent(i).getAntoineVaporPressure(temperature))); - } - return R * temperature * ((val) + Math.log(pressure) * numberOfMolesInPhase); + /** {@inheritDoc} */ + @Override + public double getGibbsEnergy() { + double val = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + val += + getComponent(i).getNumberOfMolesInPhase() * (getComponent(i).getLogFugacityCoefficient()); // +Math.log(getComponent(i).getx()*getComponent(i).getAntoineVaporPressure(temperature))); } + return R * temperature * numberOfMolesInPhase * (val + Math.log(pressure)); + } - /** {@inheritDoc} */ - @Override - public double getHresTP() { - double val = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - val -= getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getdfugdt(); - } - return R * temperature * temperature * val; + /** {@inheritDoc} */ + @Override + public double getHresTP() { + double val = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + val -= getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getdfugdt(); } + return R * temperature * temperature * val; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGENRTLmodifiedWS.java b/src/main/java/neqsim/thermo/phase/PhaseGENRTLmodifiedWS.java index d21d09403e..5d0704d8bb 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGENRTLmodifiedWS.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGENRTLmodifiedWS.java @@ -12,110 +12,100 @@ * @version $Id: $Id */ public class PhaseGENRTLmodifiedWS extends PhaseGENRTLmodifiedHV { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseGENRTLmodifiedWS. - *

- */ - public PhaseGENRTLmodifiedWS() { - super(); - } + /** + *

+ * Constructor for PhaseGENRTLmodifiedWS. + *

+ */ + public PhaseGENRTLmodifiedWS() { + super(); + } - /** - *

- * Constructor for PhaseGENRTLmodifiedWS. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects - */ - public PhaseGENRTLmodifiedWS(PhaseInterface phase, double[][] alpha, double[][] Dij, - String[][] mixRule, double[][] intparam) { - super(phase, alpha, Dij, mixRule, intparam); - componentArray = new ComponentGENRTLmodifiedWS[alpha[0].length]; - for (int i = 0; i < alpha[0].length; i++) { - numberOfComponents++; - componentArray[i] = new ComponentGENRTLmodifiedWS(phase.getComponents()[i].getName(), - phase.getComponents()[i].getNumberOfmoles(), - phase.getComponents()[i].getNumberOfMolesInPhase(), - phase.getComponents()[i].getComponentNumber()); - } + /** + *

+ * Constructor for PhaseGENRTLmodifiedWS. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param alpha an array of type double + * @param Dij an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @param intparam an array of type double + */ + public PhaseGENRTLmodifiedWS(PhaseInterface phase, double[][] alpha, double[][] Dij, + String[][] mixRule, double[][] intparam) { + super(phase, alpha, Dij, mixRule, intparam); + componentArray = new ComponentGENRTLmodifiedWS[alpha[0].length]; + for (int i = 0; i < alpha[0].length; i++) { + numberOfComponents++; + componentArray[i] = new ComponentGENRTLmodifiedWS(phase.getComponents()[i].getName(), + phase.getComponents()[i].getNumberOfmoles(), + phase.getComponents()[i].getNumberOfMolesInPhase(), + phase.getComponents()[i].getComponentNumber()); } + } - /** - *

- * Constructor for PhaseGENRTLmodifiedWS. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param DijT an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects - */ - public PhaseGENRTLmodifiedWS(PhaseInterface phase, double[][] alpha, double[][] Dij, - double[][] DijT, String[][] mixRule, double[][] intparam) { - super(phase, alpha, Dij, DijT, mixRule, intparam); - componentArray = new ComponentGENRTLmodifiedWS[alpha[0].length]; - for (int i = 0; i < alpha[0].length; i++) { - componentArray[i] = new ComponentGENRTLmodifiedWS(phase.getComponents()[i].getName(), - phase.getComponents()[i].getNumberOfmoles(), - phase.getComponents()[i].getNumberOfMolesInPhase(), - phase.getComponents()[i].getComponentNumber()); - } + /** + *

+ * Constructor for PhaseGENRTLmodifiedWS. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param alpha an array of type double + * @param Dij an array of type double + * @param DijT an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @param intparam an array of type double + */ + public PhaseGENRTLmodifiedWS(PhaseInterface phase, double[][] alpha, double[][] Dij, + double[][] DijT, String[][] mixRule, double[][] intparam) { + super(phase, alpha, Dij, DijT, mixRule, intparam); + componentArray = new ComponentGENRTLmodifiedWS[alpha[0].length]; + for (int i = 0; i < alpha[0].length; i++) { + componentArray[i] = new ComponentGENRTLmodifiedWS(phase.getComponents()[i].getName(), + phase.getComponents()[i].getNumberOfmoles(), + phase.getComponents()[i].getNumberOfMolesInPhase(), + phase.getComponents()[i].getComponentNumber()); } + } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + this.intparam = mixSelect.getWSintparam(); + this.alpha = mixSelect.getNRTLalpha(); + this.mixRule = mixSelect.getClassicOrHV(); + this.Dij = mixSelect.getNRTLDij(); + } - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - this.intparam = mixSelect.getWSintparam(); - this.alpha = mixSelect.getNRTLalpha(); - this.mixRule = mixSelect.getClassicOrHV(); - this.Dij = mixSelect.getNRTLDij(); - } - - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentGENRTLmodifiedWS(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = + new ComponentGENRTLmodifiedWS(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - double GE = 0; - for (int i = 0; i < numberOfComponents; i++) { - if (type == 0) { - GE += phase.getComponents()[i].getx() - * Math.log(((ComponentGEInterface) componentArray[i]).getGamma(phase, - numberOfComponents, temperature, pressure, phasetype, alpha, Dij, - intparam, mixRule)); - } - if (type == 1) { - GE += phase.getComponents()[i].getx() - * Math.log(((ComponentGENRTLmodifiedWS) componentArray[i]).getGamma(phase, - numberOfComponents, temperature, pressure, phasetype, alpha, Dij, - DijT, intparam, mixRule)); - } - } - return R * temperature * GE * numberOfMolesInPhase; + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + // TODO: why is GE a local variable? + double GE = 0; + for (int i = 0; i < numberOfComponents; i++) { + if (type == 0) { + GE += phase.getComponents()[i].getx() + * Math.log(((ComponentGEInterface) componentArray[i]).getGamma(phase, + numberOfComponents, temperature, pressure, pt, alpha, Dij, intparam, mixRule)); + } else if (type == 1) { + GE += phase.getComponents()[i].getx() * Math + .log(((ComponentGENRTLmodifiedWS) componentArray[i]).getGamma(phase, numberOfComponents, + temperature, pressure, pt, alpha, Dij, DijT, intparam, mixRule)); + } } + return R * temperature * numberOfMolesInPhase * GE; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGERG2004Eos.java b/src/main/java/neqsim/thermo/phase/PhaseGERG2004Eos.java index f45e308022..40a998a4e8 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGERG2004Eos.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGERG2004Eos.java @@ -1,5 +1,6 @@ package neqsim.thermo.phase; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.component.ComponentGERG2004; import neqsim.thermo.util.JNI.GERG2004EOS; @@ -12,188 +13,193 @@ * @version $Id: $Id */ public class PhaseGERG2004Eos extends PhaseEos { - private static final long serialVersionUID = 1000; - - private GERG2004EOS gergEOS = new GERG2004EOS(); - double[] xFracGERG = new double[18]; - - ; - int IPHASE = 0; - boolean okVolume = true; - double enthalpy = 0.0, entropy = 0.0, gibbsEnergy = 0.0, CpGERG = 0.0, CvGERG = 0.0, - internalEnery = 0.0, JTcoef = 0.0; - - /** - *

- * Constructor for PhaseGERG2004Eos. - *

- */ - public PhaseGERG2004Eos() { - super(); - thermoPropertyModelName = "GERG-EoS 2008"; - } + private static final long serialVersionUID = 1000; - /** {@inheritDoc} */ - @Override - public PhaseGERG2004Eos clone() { - PhaseGERG2004Eos clonedPhase = null; - try { - clonedPhase = (PhaseGERG2004Eos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + private GERG2004EOS gergEOS = new GERG2004EOS(); + double[] xFracGERG = new double[18]; - return clonedPhase; - } + int IPHASE = 0; + boolean okVolume = true; + double enthalpy = 0.0; - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentGERG2004(componentName, moles, molesInPhase, compNumber); - } + double entropy = 0.0; - /** - *

- * Setter for the field xFracGERG. - *

- */ - public void setxFracGERG() { - for (int j = 0; j < gergEOS.getNameList().length; j++) { - if (hasComponent(gergEOS.getNameList()[j])) { - xFracGERG[j] = getComponent(gergEOS.getNameList()[j]).getx(); - } else { - xFracGERG[j] = 0.0; - } - } - } + double gibbsEnergy = 0.0; - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - IPHASE = phase == 0 ? -1 : -2; - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - setxFracGERG(); - - if (!okVolume) { - IPHASE = phase == 0 ? -2 : -1; - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } - if (type >= 1) { - double[] temp = new double[18]; - temp = GERG2004EOS.SPHIOTPX(temperature, pressure / 10.0, xFracGERG[0], xFracGERG[1], - xFracGERG[2], xFracGERG[3], xFracGERG[4], xFracGERG[5], xFracGERG[6], - xFracGERG[7], xFracGERG[8], xFracGERG[9], xFracGERG[10], xFracGERG[11], - xFracGERG[12], xFracGERG[13], xFracGERG[14], xFracGERG[15], xFracGERG[16], - xFracGERG[17], IPHASE); - - for (int j = 0; j < gergEOS.getNameList().length; j++) { - if (hasComponent(gergEOS.getNameList()[j])) { - if (temp[j] == -1111) { - IPHASE = -2; - } - if (temp[j] == -2222) { - IPHASE = -1; - } - } - } - temp = GERG2004EOS.SPHIOTPX(temperature, pressure / 10.0, xFracGERG[0], xFracGERG[1], - xFracGERG[2], xFracGERG[3], xFracGERG[4], xFracGERG[5], xFracGERG[6], - xFracGERG[7], xFracGERG[8], xFracGERG[9], xFracGERG[10], xFracGERG[11], - xFracGERG[12], xFracGERG[13], xFracGERG[14], xFracGERG[15], xFracGERG[16], - xFracGERG[17], IPHASE); - - for (int j = 0; j < gergEOS.getNameList().length; j++) { - if (hasComponent(gergEOS.getNameList()[j])) { - getComponent(gergEOS.getNameList()[j]).setFugacityCoefficient(temp[j]); - } - } - - double[] alloTPX = new double[17]; - alloTPX = GERG2004EOS.SALLOTPX(temperature, pressure / 10.0, xFracGERG[0], xFracGERG[1], - xFracGERG[2], xFracGERG[3], xFracGERG[4], xFracGERG[5], xFracGERG[6], - xFracGERG[7], xFracGERG[8], xFracGERG[9], xFracGERG[10], xFracGERG[11], - xFracGERG[12], xFracGERG[13], xFracGERG[14], xFracGERG[15], xFracGERG[16], - xFracGERG[17], IPHASE); - - gibbsEnergy = alloTPX[10]; // gergEOS.GOTPX(temperature,pressure/10.0, - // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); - internalEnery = alloTPX[9]; // .UOTPX(temperature,pressure/10.0, - // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); - enthalpy = alloTPX[2]; // gergEOS.HOTPX(temperature,pressure/10.0, - // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); - entropy = alloTPX[3]; // gergEOS.SOTPX(temperature,pressure/10.0, - // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); - CpGERG = alloTPX[4]; // gergEOS.CPOTPX(temperature,pressure/10.0, - // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); - CvGERG = alloTPX[5]; // gergEOS.CPOTPX(temperature,pressure/10.0, - // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } - } + double CpGERG = 0.0; - /** {@inheritDoc} */ - @Override - public double getGibbsEnergy() { - return gibbsEnergy; - } + double CvGERG = 0.0; - /** {@inheritDoc} */ - @Override - public double getJouleThomsonCoefficient() { - return JTcoef; - } + double internalEnery = 0.0; - /** {@inheritDoc} */ - @Override - public double getEnthalpy() { - return enthalpy; - } + double JTcoef = 0.0; - /** {@inheritDoc} */ - @Override - public double getEntropy() { - return entropy; - } + /** + *

+ * Constructor for PhaseGERG2004Eos. + *

+ */ + public PhaseGERG2004Eos() { + super(); + thermoPropertyModelName = "GERG-EoS 2008"; + } - /** {@inheritDoc} */ - @Override - public double getInternalEnergy() { - return internalEnery; + /** {@inheritDoc} */ + @Override + public PhaseGERG2004Eos clone() { + PhaseGERG2004Eos clonedPhase = null; + try { + clonedPhase = (PhaseGERG2004Eos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double getCp() { - return CpGERG; + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentGERG2004(name, moles, molesInPhase, compNumber); + } + + /** + *

+ * Setter for the field xFracGERG. + *

+ */ + public void setxFracGERG() { + for (int j = 0; j < gergEOS.getNameList().length; j++) { + if (hasComponent(gergEOS.getNameList()[j])) { + xFracGERG[j] = getComponent(gergEOS.getNameList()[j]).getx(); + } else { + xFracGERG[j] = 0.0; + } } - - /** {@inheritDoc} */ - @Override - public double getCv() { - return CvGERG; + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + IPHASE = pt == PhaseType.LIQUID ? -1 : -2; + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + setxFracGERG(); + + if (!okVolume) { + IPHASE = pt == PhaseType.LIQUID ? -2 : -1; + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); } + if (initType >= 1) { + double[] temp = new double[18]; + temp = GERG2004EOS.SPHIOTPX(temperature, pressure / 10.0, xFracGERG[0], xFracGERG[1], + xFracGERG[2], xFracGERG[3], xFracGERG[4], xFracGERG[5], xFracGERG[6], xFracGERG[7], + xFracGERG[8], xFracGERG[9], xFracGERG[10], xFracGERG[11], xFracGERG[12], xFracGERG[13], + xFracGERG[14], xFracGERG[15], xFracGERG[16], xFracGERG[17], IPHASE); + + for (int j = 0; j < gergEOS.getNameList().length; j++) { + if (hasComponent(gergEOS.getNameList()[j])) { + if (temp[j] == -1111) { + IPHASE = -2; + } + if (temp[j] == -2222) { + IPHASE = -1; + } + } + } + temp = GERG2004EOS.SPHIOTPX(temperature, pressure / 10.0, xFracGERG[0], xFracGERG[1], + xFracGERG[2], xFracGERG[3], xFracGERG[4], xFracGERG[5], xFracGERG[6], xFracGERG[7], + xFracGERG[8], xFracGERG[9], xFracGERG[10], xFracGERG[11], xFracGERG[12], xFracGERG[13], + xFracGERG[14], xFracGERG[15], xFracGERG[16], xFracGERG[17], IPHASE); + + for (int j = 0; j < gergEOS.getNameList().length; j++) { + if (hasComponent(gergEOS.getNameList()[j])) { + getComponent(gergEOS.getNameList()[j]).setFugacityCoefficient(temp[j]); + } + } + + double[] alloTPX = new double[17]; + alloTPX = GERG2004EOS.SALLOTPX(temperature, pressure / 10.0, xFracGERG[0], xFracGERG[1], + xFracGERG[2], xFracGERG[3], xFracGERG[4], xFracGERG[5], xFracGERG[6], xFracGERG[7], + xFracGERG[8], xFracGERG[9], xFracGERG[10], xFracGERG[11], xFracGERG[12], xFracGERG[13], + xFracGERG[14], xFracGERG[15], xFracGERG[16], xFracGERG[17], IPHASE); - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double temp = GERG2004EOS.ZOTPX(temperature, pressure / 10.0, xFracGERG[0], xFracGERG[1], - xFracGERG[2], xFracGERG[3], xFracGERG[4], xFracGERG[5], xFracGERG[6], xFracGERG[7], - xFracGERG[8], xFracGERG[9], xFracGERG[10], xFracGERG[11], xFracGERG[12], - xFracGERG[13], xFracGERG[14], xFracGERG[15], xFracGERG[16], xFracGERG[17], IPHASE) - * 8.314 * temperature / (pressure); - - temp = GERG2004EOS.ZOTPX(temperature, pressure / 10.0, xFracGERG[0], xFracGERG[1], - xFracGERG[2], xFracGERG[3], xFracGERG[4], xFracGERG[5], xFracGERG[6], xFracGERG[7], - xFracGERG[8], xFracGERG[9], xFracGERG[10], xFracGERG[11], xFracGERG[12], - xFracGERG[13], xFracGERG[14], xFracGERG[15], xFracGERG[16], xFracGERG[17], IPHASE) - * 8.314 * temperature / (pressure); - okVolume = !(Math.abs(2222 + temp) < 0.1 || Math.abs(1111 + temp) < 0.1); - return temp; + gibbsEnergy = alloTPX[10]; // gergEOS.GOTPX(temperature,pressure/10.0, + // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); + internalEnery = alloTPX[9]; // .UOTPX(temperature,pressure/10.0, + // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); + enthalpy = alloTPX[2]; // gergEOS.HOTPX(temperature,pressure/10.0, + // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); + entropy = alloTPX[3]; // gergEOS.SOTPX(temperature,pressure/10.0, + // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); + CpGERG = alloTPX[4]; // gergEOS.CPOTPX(temperature,pressure/10.0, + // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); + CvGERG = alloTPX[5]; // gergEOS.CPOTPX(temperature,pressure/10.0, + // xFracGERG[0],xFracGERG[1],xFracGERG[2],xFracGERG[3],xFracGERG[4],xFracGERG[5],xFracGERG[6],xFracGERG[7],xFracGERG[8],xFracGERG[9],xFracGERG[10],xFracGERG[11],xFracGERG[12],xFracGERG[13],xFracGERG[14],xFracGERG[15],xFracGERG[16],xFracGERG[17],IPHASE); + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); } + } + + /** {@inheritDoc} */ + @Override + public double getGibbsEnergy() { + return gibbsEnergy; + } + + /** {@inheritDoc} */ + @Override + public double getJouleThomsonCoefficient() { + return JTcoef; + } + + /** {@inheritDoc} */ + @Override + public double getEnthalpy() { + return enthalpy; + } + + /** {@inheritDoc} */ + @Override + public double getEntropy() { + return entropy; + } + + /** {@inheritDoc} */ + @Override + public double getInternalEnergy() { + return internalEnery; + } + + /** {@inheritDoc} */ + @Override + public double getCp() { + return CpGERG; + } + + /** {@inheritDoc} */ + @Override + public double getCv() { + return CvGERG; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double temp = GERG2004EOS.ZOTPX(temperature, pressure / 10.0, xFracGERG[0], xFracGERG[1], + xFracGERG[2], xFracGERG[3], xFracGERG[4], xFracGERG[5], xFracGERG[6], xFracGERG[7], + xFracGERG[8], xFracGERG[9], xFracGERG[10], xFracGERG[11], xFracGERG[12], xFracGERG[13], + xFracGERG[14], xFracGERG[15], xFracGERG[16], xFracGERG[17], IPHASE) + * ThermodynamicConstantsInterface.R * temperature / (pressure); + + temp = GERG2004EOS.ZOTPX(temperature, pressure / 10.0, xFracGERG[0], xFracGERG[1], xFracGERG[2], + xFracGERG[3], xFracGERG[4], xFracGERG[5], xFracGERG[6], xFracGERG[7], xFracGERG[8], + xFracGERG[9], xFracGERG[10], xFracGERG[11], xFracGERG[12], xFracGERG[13], xFracGERG[14], + xFracGERG[15], xFracGERG[16], xFracGERG[17], IPHASE) * ThermodynamicConstantsInterface.R + * temperature / (pressure); + okVolume = !(Math.abs(2222 + temp) < 0.1 || Math.abs(1111 + temp) < 0.1); + return temp; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGEUnifac.java b/src/main/java/neqsim/thermo/phase/PhaseGEUnifac.java index 10f2458b65..8275d73433 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGEUnifac.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGEUnifac.java @@ -4,6 +4,7 @@ import java.util.Arrays; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.atomElement.UNIFACgroup; import neqsim.thermo.component.ComponentGEUnifac; import neqsim.thermo.component.ComponentGEUniquac; @@ -17,290 +18,270 @@ * @version $Id: $Id */ public class PhaseGEUnifac extends PhaseGEUniquac { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double[][] aij = new double[1][1]; - double[][] bij = new double[1][1]; - double[][] cij = new double[1][1]; - boolean checkedGroups = false; - static Logger logger = LogManager.getLogger(PhaseGEUnifac.class); + double[][] aij = new double[1][1]; + double[][] bij = new double[1][1]; + double[][] cij = new double[1][1]; + boolean checkedGroups = false; + static Logger logger = LogManager.getLogger(PhaseGEUnifac.class); - /** - *

- * Constructor for PhaseGEUnifac. - *

- */ - public PhaseGEUnifac() { - super(); - componentArray = new ComponentGEUnifac[MAX_NUMBER_OF_COMPONENTS]; - } + /** + *

+ * Constructor for PhaseGEUnifac. + *

+ */ + public PhaseGEUnifac() { + super(); + componentArray = new ComponentGEUnifac[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + } - /** - *

- * Constructor for PhaseGEUnifac. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects - */ - public PhaseGEUnifac(PhaseInterface phase, double[][] alpha, double[][] Dij, String[][] mixRule, - double[][] intparam) { - super(phase, alpha, Dij, mixRule, intparam); - componentArray = new ComponentGEUnifac[alpha[0].length]; - for (int i = 0; i < alpha[0].length; i++) { - componentArray[i] = new ComponentGEUnifac(phase.getComponents()[i].getName(), - phase.getComponents()[i].getNumberOfmoles(), - phase.getComponents()[i].getNumberOfMolesInPhase(), - phase.getComponents()[i].getComponentNumber()); - } + /** + *

+ * Constructor for PhaseGEUnifac. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param alpha an array of type double + * @param Dij an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @param intparam an array of type double + */ + public PhaseGEUnifac(PhaseInterface phase, double[][] alpha, double[][] Dij, String[][] mixRule, + double[][] intparam) { + super(phase, alpha, Dij, mixRule, intparam); + componentArray = new ComponentGEUnifac[alpha[0].length]; + for (int i = 0; i < alpha[0].length; i++) { + componentArray[i] = new ComponentGEUnifac(phase.getComponents()[i].getName(), + phase.getComponents()[i].getNumberOfmoles(), + phase.getComponents()[i].getNumberOfMolesInPhase(), + phase.getComponents()[i].getComponentNumber()); } + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentGEUnifac(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentGEUnifac(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - if (!checkedGroups) { - checkGroups(); - } - logger.info("checking unifac groups..."); - calcaij(); + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + if (!checkedGroups) { + checkGroups(); } + logger.info("checking unifac groups..."); + calcaij(); + } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - // if(type==0) calcaij(); - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - if (type == 0) { - super.init(totalNumberOfMoles, numberOfComponents, 1, phase, beta); - } + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + // if(type==0) calcaij(); + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + if (initType == 0) { + super.init(totalNumberOfMoles, numberOfComponents, 1, pt, beta); } + } - /** - *

- * calcaij. - *

- */ - public void calcaij() { - aij = new double[((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()]; - for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { - for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups(); j++) { - try { - neqsim.util.database.NeqSimDataBase database = - new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparam WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - dataSet.next(); - dataSet.getClob("MainGroup"); - } catch (Exception e) { - dataSet.close(); - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparam WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - dataSet.next(); - } + /** + *

+ * calcaij. + *

+ */ + public void calcaij() { + aij = new double[((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()]; + for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { + for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); j++) { + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { + java.sql.ResultSet dataSet = null; + try { + dataSet = database.getResultSet(("SELECT * FROM unifacinterparam WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); + dataSet.next(); + dataSet.getClob("MainGroup"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + dataSet.close(); + dataSet = database.getResultSet(("SELECT * FROM unifacinterparam WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); + dataSet.next(); + } - aij[i][j] = Double.parseDouble(dataSet.getString("n" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() - + "")); - if (Math.abs(aij[i][j]) < 1e-6) { - logger.info(" i " - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + " j " + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j) - .getMainGroup() - + " aij " + aij[i][j]); - } - dataSet.close(); - database.getConnection().close(); - } catch (Exception e) { - logger.error("error", e); - String err = e.toString(); - logger.error(err); - } - } + aij[i][j] = Double.parseDouble(dataSet.getString( + "n" + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() + "")); + if (Math.abs(aij[i][j]) < 1e-6) { + logger + .info(" i " + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + + " j " + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() + + " aij " + aij[i][j]); + } + dataSet.close(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - logger.info("finished finding interaction coefficient...A"); + } } + logger.info("finished finding interaction coefficient...A"); + } - /** - *

- * checkGroups. - *

- */ - public void checkGroups() { - ArrayList unifacGroups = - new ArrayList(); - - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < ((ComponentGEUnifac) getComponent(i)) - .getNumberOfUNIFACgroups(); j++) { - if (!unifacGroups - .contains(((ComponentGEUnifac) getComponent(i)).getUnifacGroup(j))) { - unifacGroups.add(((ComponentGEUnifac) getComponent(i)).getUnifacGroup(j)); - } else - ;// System.out.println("no"); - } - } - - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < unifacGroups.size(); j++) { - if (!((ComponentGEUnifac) getComponent(i)).getUnifacGroups2() - .contains(unifacGroups.get(j))) { - ((ComponentGEUnifac) getComponent(i)) - .addUNIFACgroup(unifacGroups.get(j).getSubGroup(), 0); - } - } - } - - for (int i = 0; i < numberOfComponents; i++) { - neqsim.thermo.atomElement.UNIFACgroup[] array = - ((ComponentGEUnifac) getComponent(i)).getUnifacGroups(); - java.util.Arrays.sort(array); - ArrayList phaseList = new ArrayList(0); - phaseList.addAll(Arrays.asList(array)); - ((ComponentGEUnifac) getComponent(i)).setUnifacGroups(phaseList); - } + /** + *

+ * checkGroups. + *

+ */ + public void checkGroups() { + ArrayList unifacGroups = new ArrayList(); - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < ((ComponentGEUnifac) getComponent(i)) - .getNumberOfUNIFACgroups(); j++) { - ((ComponentGEUnifac) getComponent(i)).getUnifacGroup(j).setGroupIndex(j); - // System.out.println("i " + i + " " + - // ((ComponentGEUnifac)getComponent(i)).getUnifacGroup(j).getSubGroup()); - } - } - checkedGroups = true; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < ((ComponentGEUnifac) getComponent(i)).getNumberOfUNIFACgroups(); j++) { + if (!unifacGroups.contains(((ComponentGEUnifac) getComponent(i)).getUnifacGroup(j))) { + unifacGroups.add(((ComponentGEUnifac) getComponent(i)).getUnifacGroup(j)); + } else + ; // System.out.println("no"); + } } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - double GE = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - GE += phase.getComponents()[i].getx() - * Math.log(((ComponentGEUniquac) componentArray[i]).getGamma(phase, - numberOfComponents, temperature, pressure, phasetype)); + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < unifacGroups.size(); j++) { + if (!((ComponentGEUnifac) getComponent(i)).getUnifacGroups2() + .contains(unifacGroups.get(j))) { + ((ComponentGEUnifac) getComponent(i)).addUNIFACgroup(unifacGroups.get(j).getSubGroup(), + 0); } - return R * phase.getTemperature() * GE * phase.getNumberOfMolesInPhase(); + } } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy() { - return getExessGibbsEnergy(this, numberOfComponents, temperature, pressure, phaseType); + for (int i = 0; i < numberOfComponents; i++) { + neqsim.thermo.atomElement.UNIFACgroup[] array = + ((ComponentGEUnifac) getComponent(i)).getUnifacGroups(); + java.util.Arrays.sort(array); + ArrayList phaseList = new ArrayList(0); + phaseList.addAll(Arrays.asList(array)); + ((ComponentGEUnifac) getComponent(i)).setUnifacGroups(phaseList); } - /** {@inheritDoc} */ - @Override - public double getGibbsEnergy() { - double val = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - val += getComponent(i).getNumberOfMolesInPhase() - * (getComponent(i).getLogFugacityCoefficient()); - } - return R * temperature * ((val) + Math.log(pressure) * numberOfMolesInPhase); + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < ((ComponentGEUnifac) getComponent(i)).getNumberOfUNIFACgroups(); j++) { + ((ComponentGEUnifac) getComponent(i)).getUnifacGroup(j).setGroupIndex(j); + // System.out.println("i " + i + " " + + // ((ComponentGEUnifac)getComponent(i)).getUnifacGroup(j).getSubGroup()); + } } + checkedGroups = true; + } - /** - *

- * Getter for the field aij. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getAij(int i, int j) { - return aij[i][j]; - } + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy() { + return getExcessGibbsEnergy(this, numberOfComponents, temperature, pressure, pt); + } - /** - *

- * Setter for the field aij. - *

- * - * @param i a int - * @param j a int - * @param val a double - */ - public void setAij(int i, int j, double val) { - aij[i][j] = val; + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + double GE = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + GE += phase.getComponents()[i].getx() * Math.log(((ComponentGEUniquac) componentArray[i]) + .getGamma(phase, numberOfComponents, temperature, pressure, pt)); } + return R * phase.getTemperature() * phase.getNumberOfMolesInPhase() * GE; + } - /** - *

- * Getter for the field bij. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getBij(int i, int j) { - return bij[i][j]; + /** {@inheritDoc} */ + @Override + public double getGibbsEnergy() { + double val = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + val += + getComponent(i).getNumberOfMolesInPhase() * (getComponent(i).getLogFugacityCoefficient()); } + return R * temperature * numberOfMolesInPhase * (val + Math.log(pressure)); + } - /** - *

- * Setter for the field bij. - *

- * - * @param i a int - * @param j a int - * @param val a double - */ - public void setBij(int i, int j, double val) { - bij[i][j] = val; - } + /** + *

+ * Getter for the field aij. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getAij(int i, int j) { + return aij[i][j]; + } - /** - *

- * Getter for the field cij. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double getCij(int i, int j) { - return cij[i][j]; - } + /** + *

+ * Setter for the field aij. + *

+ * + * @param i a int + * @param j a int + * @param val a double + */ + public void setAij(int i, int j, double val) { + aij[i][j] = val; + } - /** - *

- * Setter for the field cij. - *

- * - * @param i a int - * @param j a int - * @param val a double - */ - public void setCij(int i, int j, double val) { - cij[i][j] = val; - } + /** + *

+ * Getter for the field bij. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getBij(int i, int j) { + return bij[i][j]; + } + + /** + *

+ * Setter for the field bij. + *

+ * + * @param i a int + * @param j a int + * @param val a double + */ + public void setBij(int i, int j, double val) { + bij[i][j] = val; + } + + /** + *

+ * Getter for the field cij. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double getCij(int i, int j) { + return cij[i][j]; + } + + /** + *

+ * Setter for the field cij. + *

+ * + * @param i a int + * @param j a int + * @param val a double + */ + public void setCij(int i, int j, double val) { + cij[i][j] = val; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGEUnifacPSRK.java b/src/main/java/neqsim/thermo/phase/PhaseGEUnifacPSRK.java index 218dbce1eb..9629aa678e 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGEUnifacPSRK.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGEUnifacPSRK.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.component.ComponentGEUnifac; import neqsim.thermo.component.ComponentGEUnifacPSRK; import neqsim.thermo.component.ComponentGEUniquac; @@ -15,182 +16,148 @@ * @version $Id: $Id */ public class PhaseGEUnifacPSRK extends PhaseGEUnifac { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(PhaseGEUnifacPSRK.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseGEUnifacPSRK.class); - /** - *

- * Constructor for PhaseGEUnifacPSRK. - *

- */ - public PhaseGEUnifacPSRK() { - super(); - componentArray = new ComponentGEUnifacPSRK[MAX_NUMBER_OF_COMPONENTS]; - } + /** + *

+ * Constructor for PhaseGEUnifacPSRK. + *

+ */ + public PhaseGEUnifacPSRK() { + super(); + componentArray = new ComponentGEUnifacPSRK[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + } - /** - *

- * Constructor for PhaseGEUnifacPSRK. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects - */ - public PhaseGEUnifacPSRK(PhaseInterface phase, double[][] alpha, double[][] Dij, - String[][] mixRule, double[][] intparam) { - super(phase, alpha, Dij, mixRule, intparam); - componentArray = new ComponentGEUnifac[alpha[0].length]; - for (int i = 0; i < alpha[0].length; i++) { - componentArray[i] = new ComponentGEUnifacPSRK(phase.getComponents()[i].getName(), - phase.getComponents()[i].getNumberOfmoles(), - phase.getComponents()[i].getNumberOfMolesInPhase(), - phase.getComponents()[i].getComponentNumber()); - } - this.setMixingRule(2); + /** + *

+ * Constructor for PhaseGEUnifacPSRK. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param alpha an array of type double + * @param Dij an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @param intparam an array of type double + */ + public PhaseGEUnifacPSRK(PhaseInterface phase, double[][] alpha, double[][] Dij, + String[][] mixRule, double[][] intparam) { + super(phase, alpha, Dij, mixRule, intparam); + componentArray = new ComponentGEUnifac[alpha[0].length]; + for (int i = 0; i < alpha[0].length; i++) { + componentArray[i] = new ComponentGEUnifacPSRK(phase.getComponents()[i].getName(), + phase.getComponents()[i].getNumberOfmoles(), + phase.getComponents()[i].getNumberOfMolesInPhase(), + phase.getComponents()[i].getComponentNumber()); } + this.setMixingRule(2); + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentGEUnifacPSRK(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentGEUnifacPSRK(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - if (!checkedGroups) { - checkGroups(); - } - calcbij(); - calccij(); + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + if (!checkedGroups) { + checkGroups(); } + calcbij(); + calccij(); + } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + double GE = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + GE += phase.getComponents()[i].getx() * Math.log(((ComponentGEUniquac) componentArray[i]) + .getGamma(phase, numberOfComponents, temperature, pressure, pt)); } + return R * phase.getTemperature() * phase.getNumberOfMolesInPhase() * GE; + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - double GE = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - GE += phase.getComponents()[i].getx() - * Math.log(((ComponentGEUniquac) componentArray[i]).getGamma(phase, - numberOfComponents, temperature, pressure, phasetype)); - } - return R * phase.getTemperature() * GE * phase.getNumberOfMolesInPhase();// phase.getNumberOfMolesInPhase()* - } - - /** - *

- * calcbij. - *

- */ - public void calcbij() { - bij = new double[((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()]; - for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { - for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups(); j++) { - try { - neqsim.util.database.NeqSimDataBase database = - new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparamb WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - dataSet.next(); - dataSet.getClob("MainGroup"); - } catch (Exception e) { - dataSet.close(); - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparamb WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - dataSet.next(); - } + /** + *

+ * calcbij. + *

+ */ + public void calcbij() { + bij = new double[((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()]; + for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { + for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); j++) { + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { + java.sql.ResultSet dataSet = null; + try { + dataSet = database.getResultSet(("SELECT * FROM unifacinterparamb WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); + dataSet.next(); + dataSet.getClob("MainGroup"); + } catch (Exception ex) { + dataSet.close(); + logger.error(ex.getMessage(), ex); + dataSet = database.getResultSet(("SELECT * FROM unifacinterparamb WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); + dataSet.next(); + } - bij[i][j] = Double.parseDouble(dataSet.getString("n" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() - + "")); - // System.out.println("aij " + aij[i][j]); - dataSet.close(); - database.getConnection().close(); - } - - catch (Exception e) { - String err = e.toString(); - logger.error(err, e); - } - } + bij[i][j] = Double.parseDouble(dataSet.getString( + "n" + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() + "")); + // System.out.println("aij " + aij[i][j]); + dataSet.close(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - logger.info("finished finding interaction coefficient...B"); + } } + logger.info("finished finding interaction coefficient...B"); + } - /** - *

- * calccij. - *

- */ - public void calccij() { - cij = new double[((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()]; - for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { - for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups(); j++) { - try { - neqsim.util.database.NeqSimDataBase database = - new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparamc WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - dataSet.next(); - dataSet.getClob("MainGroup"); - } catch (Exception e) { - dataSet.close(); - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparamc WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - dataSet.next(); - } - - cij[i][j] = Double.parseDouble(dataSet.getString("n" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() - + "")); - // System.out.println("aij " + aij[i][j]); - dataSet.close(); - database.getConnection().close(); - } + /** + *

+ * calccij. + *

+ */ + public void calccij() { + cij = new double[((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()]; + for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { + for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); j++) { + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { + java.sql.ResultSet dataSet = null; + try { + dataSet = database.getResultSet(("SELECT * FROM unifacinterparamc WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); + dataSet.next(); + dataSet.getClob("MainGroup"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + dataSet.close(); + dataSet = database.getResultSet(("SELECT * FROM unifacinterparamc WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); + dataSet.next(); + } - catch (Exception e) { - String err = e.toString(); - logger.error(err, e); - } - } + cij[i][j] = Double.parseDouble(dataSet.getString( + "n" + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() + "")); + // System.out.println("aij " + aij[i][j]); + dataSet.close(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - logger.info("finished finding interaction coefficient...C"); + } } + logger.info("finished finding interaction coefficient...C"); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRU.java b/src/main/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRU.java index cc7864a303..1c99290b90 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRU.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRU.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.component.ComponentGEUnifac; import neqsim.thermo.component.ComponentGEUnifacUMRPRU; import neqsim.thermo.component.ComponentGEUniquac; @@ -15,342 +16,304 @@ * @version $Id: $Id */ public class PhaseGEUnifacUMRPRU extends PhaseGEUnifac { - private static final long serialVersionUID = 1000; - double[] Qmix = null; - double[][] QmixdN = null; - String[] gropuNames = null; - static Logger logger = LogManager.getLogger(PhaseGEUnifacUMRPRU.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseGEUnifacUMRPRU.class); - /** - *

- * Constructor for PhaseGEUnifacUMRPRU. - *

- */ - public PhaseGEUnifacUMRPRU() { - super(); - componentArray = new ComponentGEUnifacUMRPRU[MAX_NUMBER_OF_COMPONENTS]; - } + double[] Qmix = null; + double[][] QmixdN = null; + String[] gropuNames = null; + double VCommontemp = 0.0; + double FCommontemp = 0.0; - /** - *

- * Constructor for PhaseGEUnifacUMRPRU. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects - */ - public PhaseGEUnifacUMRPRU(PhaseInterface phase, double[][] alpha, double[][] Dij, - String[][] mixRule, double[][] intparam) { - super(phase, alpha, Dij, mixRule, intparam); - componentArray = new ComponentGEUnifac[alpha[0].length]; - for (int i = 0; i < alpha[0].length; i++) { - componentArray[i] = new ComponentGEUnifacUMRPRU(phase.getComponents()[i].getName(), - phase.getComponents()[i].getNumberOfmoles(), - phase.getComponents()[i].getNumberOfMolesInPhase(), - phase.getComponents()[i].getComponentNumber()); - componentArray[i].setAttractiveTerm(phase.getComponents()[i].getAttractiveTermNumber()); - } - this.setMixingRule(2); - } + /** + *

+ * Constructor for PhaseGEUnifacUMRPRU. + *

+ */ + public PhaseGEUnifacUMRPRU() { + super(); + componentArray = + new ComponentGEUnifacUMRPRU[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentGEUnifacUMRPRU(componentName, moles, molesInPhase, compNumber); + /** + *

+ * Constructor for PhaseGEUnifacUMRPRU. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param alpha an array of type double + * @param Dij an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @param intparam an array of type double + */ + public PhaseGEUnifacUMRPRU(PhaseInterface phase, double[][] alpha, double[][] Dij, + String[][] mixRule, double[][] intparam) { + super(phase, alpha, Dij, mixRule, intparam); + componentArray = new ComponentGEUnifac[alpha[0].length]; + for (int i = 0; i < alpha[0].length; i++) { + componentArray[i] = new ComponentGEUnifacUMRPRU(phase.getComponents()[i].getName(), + phase.getComponents()[i].getNumberOfmoles(), + phase.getComponents()[i].getNumberOfMolesInPhase(), + phase.getComponents()[i].getComponentNumber()); + componentArray[i].setAttractiveTerm(phase.getComponents()[i].getAttractiveTermNumber()); } + this.setMixingRule(2); + } - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - if (!checkedGroups) { - checkGroups(); - } - calcbij(); - calccij(); + /** + * Calculate common temp. + * + * @param phase a PhaseInterface + * @param numberOfComponents a int + * @param temperature a double + * @param pressure a double + * @param pt the PhaseType of the phase + */ + public void calcCommontemp(PhaseInterface phase, int numberOfComponents, double temperature, + double pressure, PhaseType pt) { + FCommontemp = 0; + VCommontemp = 0; + ComponentGEUnifac[] compArray = (ComponentGEUnifac[]) phase.getcomponentArray(); + + for (int j = 0; j < numberOfComponents; j++) { + FCommontemp += (compArray[j].getQ() * compArray[j].getx()); + VCommontemp += compArray[j].getx() * compArray[j].getR(); } + } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + /** + *

getVCommontemp.

+ * + * @return a double + */ + public double getVCommontemp() { + return VCommontemp; + } + + /** + *

getFCommontemp.

+ * + * @return a double + */ + public double getFCommontemp() { + return FCommontemp; + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentGEUnifacUMRPRU(name, moles, molesInPhase, compNumber); + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + if (!checkedGroups) { + checkGroups(); } + calcbij(); + calccij(); + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - double GE = 0.0; - ((ComponentGEUnifacUMRPRU) phase.getComponents()[0]).commonInit(phase, numberOfComponents, - temperature, pressure, phasetype); + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + double GE = 0.0; + calcCommontemp(phase, numberOfComponents, temperature, pressure, pt); + // ((ComponentGEUnifacUMRPRU) phase.getComponents()[0]).commonInit(phase, numberOfComponents, + // temperature, pressure, pt); - initQmix(); - if (getInitType() > 2) - initQmixdN(); - for (int i = 0; i < numberOfComponents; i++) { - GE += phase.getComponents()[i].getx() - * Math.log(((ComponentGEUniquac) componentArray[i]).getGamma(phase, - numberOfComponents, temperature, pressure, phasetype)); - } - return R * phase.getTemperature() * GE * phase.getNumberOfMolesInPhase(); + initQmix(); + if (getInitType() > 2) { + initQmixdN(); } + for (int i = 0; i < numberOfComponents; i++) { + GE += phase.getComponents()[i].getx() * Math.log(((ComponentGEUniquac) componentArray[i]) + .getGamma(phase, numberOfComponents, temperature, pressure, pt)); + } + return R * phase.getTemperature() * phase.getNumberOfMolesInPhase() * GE; + } - /** - *

- * initQmix. - *

- */ - public void initQmix() { - int numberOfGroups = ((ComponentGEUnifac) componentArray[0]).getUnifacGroups().length; - Qmix = new double[numberOfGroups]; - gropuNames = new String[numberOfGroups]; - for (int i = 0; i < numberOfGroups; i++) { - gropuNames[i] = - ((ComponentGEUnifac) componentArray[0]).getUnifacGroup(i).getGroupName(); - Qmix[i] = ((ComponentGEUnifac) componentArray[0]).getUnifacGroup(i).calcQMix(this); - } + /** + *

+ * initQmix. + *

+ */ + public void initQmix() { + int numberOfGroups = ((ComponentGEUnifac) componentArray[0]).getUnifacGroups().length; + Qmix = new double[numberOfGroups]; + gropuNames = new String[numberOfGroups]; + for (int i = 0; i < numberOfGroups; i++) { + gropuNames[i] = ((ComponentGEUnifac) componentArray[0]).getUnifacGroup(i).getGroupName(); + Qmix[i] = ((ComponentGEUnifac) componentArray[0]).getUnifacGroup(i).calcQMix(this); } + } - /** - *

- * initQmixdN. - *

- */ - public void initQmixdN() { - int numberOfGroups = ((ComponentGEUnifac) componentArray[0]).getUnifacGroups().length; - QmixdN = new double[numberOfGroups][componentArray.length]; - gropuNames = new String[numberOfGroups]; - for (int i = 0; i < numberOfGroups; i++) { - gropuNames[i] = - ((ComponentGEUnifac) componentArray[0]).getUnifacGroup(i).getGroupName(); - QmixdN[i] = ((ComponentGEUnifac) componentArray[0]).getUnifacGroup(i).calcQMixdN(this); - } + /** + *

+ * initQmixdN. + *

+ */ + public void initQmixdN() { + int numberOfGroups = ((ComponentGEUnifac) componentArray[0]).getUnifacGroups().length; + QmixdN = new double[numberOfGroups][componentArray.length]; + gropuNames = new String[numberOfGroups]; + for (int i = 0; i < numberOfGroups; i++) { + gropuNames[i] = ((ComponentGEUnifac) componentArray[0]).getUnifacGroup(i).getGroupName(); + QmixdN[i] = ((ComponentGEUnifac) componentArray[0]).getUnifacGroup(i).calcQMixdN(this); } + } - /** - *

- * getQmix. - *

- * - * @param name a {@link java.lang.String} object - * @return a double - */ - public double getQmix(String name) { - // int test = ((ComponentGEUnifac) componentArray[0]).getUnifacGroups().length; - for (int i = 0; i < gropuNames.length; i++) { - if (name.equals(gropuNames[i])) - return Qmix[i]; - } - return 0.0; + /** + *

+ * getQmix. + *

+ * + * @param name a {@link java.lang.String} object + * @return a double + */ + public double getQmix(String name) { + // int test = ((ComponentGEUnifac) componentArray[0]).getUnifacGroups().length; + for (int i = 0; i < gropuNames.length; i++) { + if (name.equals(gropuNames[i])) { + return Qmix[i]; + } } + return 0.0; + } - /** - *

- * getQmixdN. - *

- * - * @param name a {@link java.lang.String} object - * @return an array of {@link double} objects - */ - public double[] getQmixdN(String name) { - // int test = ((ComponentGEUnifac) componentArray[0]).getUnifacGroups().length; - for (int i = 0; i < gropuNames.length; i++) { - if (name.equals(gropuNames[i])) - return QmixdN[i]; - } - return QmixdN[0]; + /** + *

+ * getQmixdN. + *

+ * + * @param name a {@link java.lang.String} object + * @return an array of type double + */ + public double[] getQmixdN(String name) { + // int test = ((ComponentGEUnifac) componentArray[0]).getUnifacGroups().length; + for (int i = 0; i < gropuNames.length; i++) { + if (name.equals(gropuNames[i])) { + return QmixdN[i]; + } } + return QmixdN[0]; + } - /** {@inheritDoc} */ - @Override - public void calcaij() { - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; + /** {@inheritDoc} */ + @Override + public void calcaij() { + java.sql.ResultSet dataSet = null; - aij = new double[((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()]; + aij = new double[((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()]; - for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { - try { - if (getPhase().getComponent(0).getAttractiveTermNumber() == 13) { - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparama_umrmc WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - } else { - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparama_umr WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - } - dataSet.next(); - // dataSet.getClob("MainGroup"); - for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups(); j++) { - aij[i][j] = Double.parseDouble(dataSet.getString("n" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() - + "")); - // System.out.println("aij " + aij[i][j]); - } - } catch (Exception e) { - String err = e.toString(); - logger.error(err, e); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - logger.error("err closing dataSet...", e); - } - } + for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { + if (getPhase().getComponent(0).getAttractiveTermNumber() == 13) { + dataSet = database.getResultSet(("SELECT * FROM unifacinterparama_umrmc WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); + } else { + dataSet = database.getResultSet(("SELECT * FROM unifacinterparama_umr WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); + } + dataSet.next(); + // dataSet.getClob("MainGroup"); + for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); j++) { + aij[i][j] = Double.parseDouble(dataSet.getString( + "n" + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() + "")); + // System.out.println("aij " + aij[i][j]); } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } finally { try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error closing database.....", e); + if (dataSet != null) { + dataSet.close(); + } + } catch (Exception ex) { + logger.error("err closing dataSet...", ex); } - // System.out.println("finished finding interaction coefficient...C_UMR"); + } } + // System.out.println("finished finding interaction coefficient...C_UMR"); + } - /** - *

- * calcbij. - *

- */ - public void calcbij() { - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; + /** + *

+ * calcbij. + *

+ */ + public void calcbij() { + java.sql.ResultSet dataSet = null; - bij = new double[((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()]; + bij = new double[((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()]; - for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { - try { - if (getPhase().getComponent(0).getAttractiveTermNumber() == 13) { - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparamb_umrmc WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - } else { - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparamb_umr WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - } - dataSet.next(); - // dataSet.getClob("MainGroup"); - for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups(); j++) { - bij[i][j] = Double.parseDouble(dataSet.getString("n" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() - + "")); - // System.out.println("aij " + aij[i][j]); - } - } catch (Exception e) { - String err = e.toString(); - logger.error(err, e); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - logger.error("err closing dataSet...", e); - } - } + for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { + if (getPhase().getComponent(0).getAttractiveTermNumber() == 13) { + dataSet = database.getResultSet(("SELECT * FROM unifacinterparamb_umrmc WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); + } else { + dataSet = database.getResultSet(("SELECT * FROM unifacinterparamb_umr WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); } - try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error closing database.....", e); + dataSet.next(); + // dataSet.getClob("MainGroup"); + for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); j++) { + bij[i][j] = Double.parseDouble(dataSet.getString( + "n" + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() + "")); + // System.out.println("aij " + aij[i][j]); } - // System.out.println("finished finding interaction coefficient...C_UMR"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } + // System.out.println("finished finding interaction coefficient...C_UMR"); + } - /** - *

- * calccij. - *

- */ - public void calccij() { - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; + /** + *

+ * calccij. + *

+ */ + public void calccij() { + java.sql.ResultSet dataSet = null; - cij = new double[((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups()]; + cij = new double[((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()][((ComponentGEUnifac) getComponent(0)) + .getNumberOfUNIFACgroups()]; - for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { - try { - if (getPhase().getComponent(0).getAttractiveTermNumber() == 13) { - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparamc_umrmc WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - } else { - dataSet = database - .getResultSet(("SELECT * FROM unifacinterparamc_umr WHERE MainGroup=" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i) - .getMainGroup() - + "")); - } - dataSet.next(); - // dataSet.getClob("MainGroup"); - for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)) - .getNumberOfUNIFACgroups(); j++) { - cij[i][j] = Double.parseDouble(dataSet.getString("n" - + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() - + "")); - // System.out.println("aij " + aij[i][j]); - } - } catch (Exception e) { - String err = e.toString(); - logger.error(err, e); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - } catch (Exception e) { - logger.error("err closing dataSet...", e); - } - } + for (int i = 0; i < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); i++) { + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { + if (getPhase().getComponent(0).getAttractiveTermNumber() == 13) { + dataSet = database.getResultSet(("SELECT * FROM unifacinterparamc_umrmc WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); + } else { + dataSet = database.getResultSet(("SELECT * FROM unifacinterparamc_umr WHERE MainGroup=" + + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(i).getMainGroup() + "")); } - try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error closing database.....", e); + dataSet.next(); + // dataSet.getClob("MainGroup"); + for (int j = 0; j < ((ComponentGEUnifac) getComponent(0)).getNumberOfUNIFACgroups(); j++) { + cij[i][j] = Double.parseDouble(dataSet.getString( + "n" + ((ComponentGEUnifac) getComponent(0)).getUnifacGroup(j).getMainGroup() + "")); + // System.out.println("aij " + aij[i][j]); } - // System.out.println("finished finding interaction coefficient...C_UMR"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } + // System.out.println("finished finding interaction coefficient...C_UMR"); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGEUniquac.java b/src/main/java/neqsim/thermo/phase/PhaseGEUniquac.java index 7ebe1e6520..ce2b236542 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGEUniquac.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGEUniquac.java @@ -3,10 +3,14 @@ * * Created on 11. juli 2000, 21:01 */ + package neqsim.thermo.phase; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.component.ComponentGEInterface; import neqsim.thermo.component.ComponentGEUniquac; +import neqsim.util.exception.IsNaNException; +import neqsim.util.exception.TooManyIterationsException; /** *

@@ -17,99 +21,109 @@ * @version $Id: $Id */ public class PhaseGEUniquac extends PhaseGE { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double[][] alpha; - String[][] mixRule; - double[][] intparam; - double[][] Dij; - double GE = 0.0; + double[][] alpha; + String[][] mixRule; + double[][] intparam; + double[][] Dij; + double GE = 0.0; - /** - *

- * Constructor for PhaseGEUniquac. - *

- */ - public PhaseGEUniquac() { - super(); - componentArray = new ComponentGEInterface[MAX_NUMBER_OF_COMPONENTS]; - } + /** + *

+ * Constructor for PhaseGEUniquac. + *

+ */ + public PhaseGEUniquac() { + super(); + componentArray = new ComponentGEInterface[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + } - /** - *

- * Constructor for PhaseGEUniquac. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects - */ - public PhaseGEUniquac(PhaseInterface phase, double[][] alpha, double[][] Dij, - String[][] mixRule, double[][] intparam) { - super(); - componentArray = new ComponentGEUniquac[alpha[0].length]; - this.mixRule = mixRule; - this.alpha = alpha; - this.Dij = Dij; - this.intparam = intparam; - for (int i = 0; i < alpha[0].length; i++) { - numberOfComponents++; - componentArray[i] = new ComponentGEUniquac(phase.getComponents()[i].getName(), - phase.getComponents()[i].getNumberOfmoles(), - phase.getComponents()[i].getNumberOfMolesInPhase(), - phase.getComponents()[i].getComponentNumber()); - } + /** + *

+ * Constructor for PhaseGEUniquac. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param alpha an array of type double + * @param Dij an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @param intparam an array of type double + */ + public PhaseGEUniquac(PhaseInterface phase, double[][] alpha, double[][] Dij, String[][] mixRule, + double[][] intparam) { + super(); + componentArray = new ComponentGEUniquac[alpha[0].length]; + this.mixRule = mixRule; + this.alpha = alpha; + this.Dij = Dij; + this.intparam = intparam; + for (int i = 0; i < alpha[0].length; i++) { + numberOfComponents++; + componentArray[i] = new ComponentGEUniquac(phase.getComponents()[i].getName(), + phase.getComponents()[i].getNumberOfmoles(), + phase.getComponents()[i].getNumberOfMolesInPhase(), + phase.getComponents()[i].getComponentNumber()); } + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentGEUniquac(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void setAlpha(double[][] alpha) { + throw new UnsupportedOperationException("Unimplemented method 'setAlpha'"); + } - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - } + /** {@inheritDoc} */ + @Override + public void setDij(double[][] Dij) { + throw new UnsupportedOperationException("Unimplemented method 'setDij'"); + } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } + /** {@inheritDoc} */ + @Override + public void setDijT(double[][] DijT) { + throw new UnsupportedOperationException("Unimplemented method 'setDijT'"); + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - GE = 0; - for (int i = 0; i < numberOfComponents; i++) { - GE += phase.getComponents()[i].getx() * Math.log( - ((ComponentGEInterface) componentArray[i]).getGamma(phase, numberOfComponents, - temperature, pressure, phasetype, alpha, Dij, intparam, mixRule)); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentGEUniquac(name, moles, molesInPhase, compNumber); + } - return R * temperature * numberOfMolesInPhase * GE; - } + /** {@inheritDoc} */ + @Override + public double getGibbsEnergy() { + return R * temperature * numberOfMolesInPhase * (GE + Math.log(pressure)); + } - /** {@inheritDoc} */ - @Override - public double getGibbsEnergy() { - return R * temperature * numberOfMolesInPhase * (GE + Math.log(pressure)); - } + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy() { + // GE = getExcessGibbsEnergy(this, numberOfComponents, temperature, pressure, + // pt); + return GE; + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy() { - // GE = getExessGibbsEnergy(this, numberOfComponents, temperature, pressure, - // phaseType); - return GE; + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + GE = 0; + for (int i = 0; i < numberOfComponents; i++) { + GE += phase.getComponents()[i].getx() + * Math.log(((ComponentGEInterface) componentArray[i]).getGamma(phase, numberOfComponents, + temperature, pressure, pt, alpha, Dij, intparam, mixRule)); } + + return R * temperature * numberOfMolesInPhase * GE; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws IsNaNException, TooManyIterationsException { + throw new UnsupportedOperationException("Unimplemented method 'molarVolume'"); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGEUniquacmodifiedHV.java b/src/main/java/neqsim/thermo/phase/PhaseGEUniquacmodifiedHV.java index 4134151f82..7a9b713151 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGEUniquacmodifiedHV.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGEUniquacmodifiedHV.java @@ -3,6 +3,7 @@ * * Created on 18. juli 2000, 20:30 */ + package neqsim.thermo.phase; /** @@ -14,40 +15,40 @@ * @version $Id: $Id */ public class PhaseGEUniquacmodifiedHV extends PhaseGEUniquac { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseGEUniquacmodifiedHV. - *

- */ - public PhaseGEUniquacmodifiedHV() { - super(); - } + /** + *

+ * Constructor for PhaseGEUniquacmodifiedHV. + *

+ */ + public PhaseGEUniquacmodifiedHV() { + super(); + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - // componentArray[compNumber] = new ComponentGEUniquacmodifiedHV(componentName, - // moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + // todo: does not work? does not add component. + // componentArray[compNumber] = new ComponentGEUniquacmodifiedHV(name, moles, molesInPhase, + // compNumber); + // creates PhaseGEUniquac type component + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - double GE = 0; + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + double GE = 0; - /* - * ComponentGEInterface[] comp_Array = (ComponentGEInterface[]) this.getcomponentArray(); - * - * for (int i = 0; i < numberOfComponents; i++) { GE = GE + comp_Array[i].getx() * - * Math.log(comp_Array[i].getGamma(phase, numberOfComponents, temperature, pressure, - * phasetype)); } - */ + /* + * ComponentGEInterface[] comp_Array = (ComponentGEInterface[]) this.getcomponentArray(); + * + * for (int i = 0; i < numberOfComponents; i++) { GE = GE + comp_Array[i].getx() * + * Math.log(comp_Array[i].getGamma(phase, numberOfComponents, temperature, pressure, pt)); } + */ - return R * temperature * GE * numberOfMolesInPhase; - } + return R * temperature * GE * numberOfMolesInPhase; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseGEWilson.java b/src/main/java/neqsim/thermo/phase/PhaseGEWilson.java index c3152091d7..d79b79a1ea 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseGEWilson.java +++ b/src/main/java/neqsim/thermo/phase/PhaseGEWilson.java @@ -1,6 +1,9 @@ package neqsim.thermo.phase; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.component.ComponentGEWilson; +import neqsim.util.exception.IsNaNException; +import neqsim.util.exception.TooManyIterationsException; /** *

@@ -11,90 +14,106 @@ * @version $Id: $Id */ public class PhaseGEWilson extends PhaseGE { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double GE = 0; + double GE = 0; - /** - *

- * Constructor for PhaseGEWilson. - *

- */ - public PhaseGEWilson() { - super(); - componentArray = new ComponentGEWilson[MAX_NUMBER_OF_COMPONENTS]; - } + /** + *

+ * Constructor for PhaseGEWilson. + *

+ */ + public PhaseGEWilson() { + super(); + componentArray = new ComponentGEWilson[ThermodynamicModelSettings.MAX_NUMBER_OF_COMPONENTS]; + } - /** - *

- * Constructor for PhaseGEWilson. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects - */ - public PhaseGEWilson(PhaseInterface phase, double[][] alpha, double[][] Dij, String[][] mixRule, - double[][] intparam) { - super(); - componentArray = new ComponentGEWilson[alpha[0].length]; - for (int i = 0; i < alpha[0].length; i++) { - numberOfComponents++; - componentArray[i] = new ComponentGEWilson(phase.getComponents()[i].getName(), - phase.getComponents()[i].getNumberOfmoles(), - phase.getComponents()[i].getNumberOfMolesInPhase(), - phase.getComponents()[i].getComponentNumber()); - } + /** + *

+ * Constructor for PhaseGEWilson. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param alpha an array of type double + * @param Dij an array of type double + * @param mixRule an array of {@link java.lang.String} objects + * @param intparam an array of type double + */ + public PhaseGEWilson(PhaseInterface phase, double[][] alpha, double[][] Dij, String[][] mixRule, + double[][] intparam) { + super(); + componentArray = new ComponentGEWilson[alpha[0].length]; + for (int i = 0; i < alpha[0].length; i++) { + numberOfComponents++; + componentArray[i] = new ComponentGEWilson(phase.getComponents()[i].getName(), + phase.getComponents()[i].getNumberOfmoles(), + phase.getComponents()[i].getNumberOfMolesInPhase(), + phase.getComponents()[i].getComponentNumber()); } + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentGEWilson(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void setAlpha(double[][] alpha) { + throw new UnsupportedOperationException("Unimplemented method 'setAlpha'"); + } - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - } + /** {@inheritDoc} */ + @Override + public void setDij(double[][] Dij) { + throw new UnsupportedOperationException("Unimplemented method 'setDij'"); + } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } + /** {@inheritDoc} */ + @Override + public void setDijT(double[][] DijT) { + throw new UnsupportedOperationException("Unimplemented method 'setDijT'"); + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy(PhaseInterface phase, int numberOfComponents, - double temperature, double pressure, int phasetype) { - GE = 0; - for (int i = 0; i < numberOfComponents; i++) { - GE += phase.getComponents()[i].getx() * Math.log( - ((ComponentGEWilson) componentArray[i]).getWilsonActivityCoefficient(phase)); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentGEWilson(name, moles, molesInPhase, compNumber); + } - return R * temperature * numberOfMolesInPhase * GE; - } + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + } - /** {@inheritDoc} */ - @Override - public double getGibbsEnergy() { - return R * temperature * numberOfMolesInPhase * (GE + Math.log(pressure)); - } + /** {@inheritDoc} */ + @Override + public double getGibbsEnergy() { + return R * temperature * numberOfMolesInPhase * (GE + Math.log(pressure)); + } + + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy() { + // GE = getExcessGibbsEnergy(this, numberOfComponents, temperature, pressure, + // pt); + return GE; + } - /** {@inheritDoc} */ - @Override - public double getExessGibbsEnergy() { - // GE = getExessGibbsEnergy(this, numberOfComponents, temperature, pressure, - // phaseType); - return GE; + /** {@inheritDoc} */ + @Override + public double getExcessGibbsEnergy(PhaseInterface phase, int numberOfComponents, + double temperature, double pressure, PhaseType pt) { + GE = 0; + for (int i = 0; i < numberOfComponents; i++) { + GE += phase.getComponents()[i].getx() + * Math.log(((ComponentGEWilson) componentArray[i]).getWilsonActivityCoefficient(phase)); } + + return R * temperature * numberOfMolesInPhase * GE; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws IsNaNException, TooManyIterationsException { + throw new UnsupportedOperationException("Unimplemented method 'molarVolume'"); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseHydrate.java b/src/main/java/neqsim/thermo/phase/PhaseHydrate.java index a7bf23f065..e49a1ddefd 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseHydrate.java +++ b/src/main/java/neqsim/thermo/phase/PhaseHydrate.java @@ -3,6 +3,7 @@ * * Created on 18. august 2001, 12:50 */ + package neqsim.thermo.phase; import neqsim.thermo.component.ComponentHydrate; @@ -18,112 +19,117 @@ * @version $Id: $Id */ public class PhaseHydrate extends Phase { - private static final long serialVersionUID = 1000; - String hydrateModel = "PVTsimHydrateModel"; + private static final long serialVersionUID = 1000; + String hydrateModel = "PVTsimHydrateModel"; - /** - *

- * Constructor for PhaseHydrate. - *

- */ - public PhaseHydrate() { - phaseTypeName = "hydrate"; - } + /** + *

+ * Constructor for PhaseHydrate. + *

+ */ + public PhaseHydrate() { + setType(PhaseType.HYDRATE); + } - /** - *

- * Constructor for PhaseHydrate. - *

- * - * @param fluidModel a {@link java.lang.String} object - */ - public PhaseHydrate(String fluidModel) { - if (fluidModel.isEmpty()) { - hydrateModel = "PVTsimHydrateModel"; - } else if (fluidModel.equals("CPAs-SRK-EOS-statoil") || fluidModel.equals("CPAs-SRK-EOS") - || fluidModel.equals("CPA-SRK-EOS")) { - hydrateModel = "CPAHydrateModel"; - } else { - hydrateModel = "PVTsimHydrateModel"; - } + /** + *

+ * Constructor for PhaseHydrate. + *

+ * + * @param fluidModel a {@link java.lang.String} object + */ + public PhaseHydrate(String fluidModel) { + if (fluidModel.isEmpty()) { + hydrateModel = "PVTsimHydrateModel"; + } else if (fluidModel.equals("CPAs-SRK-EOS-statoil") || fluidModel.equals("CPAs-SRK-EOS") + || fluidModel.equals("CPA-SRK-EOS")) { + hydrateModel = "CPAHydrateModel"; + } else { + hydrateModel = "PVTsimHydrateModel"; } + } - /** {@inheritDoc} */ - @Override - public PhaseHydrate clone() { - PhaseHydrate clonedPhase = null; - try { - clonedPhase = (PhaseHydrate) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseHydrate clone() { + PhaseHydrate clonedPhase = null; + try { + clonedPhase = (PhaseHydrate) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double sum = 1.0; - int hydrateStructure = ((ComponentHydrate) getComponent(0)).getHydrateStructure(); - for (int j = 0; j < 2; j++) { - for (int i = 0; i < numberOfComponents; i++) { - sum += ((ComponentHydrate) getComponent(i)).getCavprwat(hydrateStructure, j) - * ((ComponentHydrate) getComponent(i)).calcYKI(hydrateStructure, j, this); - } - } - return sum / (((ComponentHydrate) getComponent(0)).getMolarVolumeHydrate(hydrateStructure, - temperature)); - // return 1.0; - } + return clonedPhase; + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double molesInPhase, double moles, - int compNumber) { - super.addcomponent(molesInPhase); - // componentArray[compNumber] = new ComponentHydrateStatoil(componentName, - // moles, molesInPhase, compNumber); - if (hydrateModel.equals("CPAHydrateModel")) { - componentArray[compNumber] = - new ComponentHydrateGF(componentName, moles, molesInPhase, compNumber); - // System.out.println("hydrate model: CPA-EoS hydrate model selected"); - } else { - componentArray[compNumber] = - new ComponentHydratePVTsim(componentName, moles, molesInPhase, compNumber); - // System.out.println("hydrate model: standard PVTsim hydrate model selected"); - } - // componentArray[compNumber] = new ComponentHydrateBallard(componentName, - // moles, molesInPhase, compNumber); - // componentArray[compNumber] = new ComponentHydratePVTsim(componentName, moles, - // molesInPhase, compNumber); + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double sum = 1.0; + int hydrateStructure = ((ComponentHydrate) getComponent(0)).getHydrateStructure(); + for (int j = 0; j < 2; j++) { + for (int i = 0; i < numberOfComponents; i++) { + sum += ((ComponentHydrate) getComponent(i)).getCavprwat(hydrateStructure, j) + * ((ComponentHydrate) getComponent(i)).calcYKI(hydrateStructure, j, this); + } } + return sum / (((ComponentHydrate) getComponent(0)).getMolarVolumeHydrate(hydrateStructure, + temperature)); + // return 1.0; + } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + // componentArray[compNumber] = new ComponentHydrateStatoil(name, moles, molesInPhase, + // compNumber); + if (hydrateModel.equals("CPAHydrateModel")) { + componentArray[compNumber] = new ComponentHydrateGF(name, moles, molesInPhase, compNumber); + // System.out.println("hydrate model: CPA-EoS hydrate model selected"); + } else { + componentArray[compNumber] = + new ComponentHydratePVTsim(name, moles, molesInPhase, compNumber); + // System.out.println("hydrate model: standard PVTsim hydrate model selected"); } + // componentArray[compNumber] = new ComponentHydrateBallard(name, moles, molesInPhase, + // compNumber); + // componentArray[compNumber] = new ComponentHydratePVTsim(name, moles, molesInPhase, + // compNumber); + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + setType(PhaseType.HYDRATE); + } - /** {@inheritDoc} */ - @Override - public void resetMixingRule(int type) {} + /** {@inheritDoc} */ + @Override + public void resetMixingRule(int type) {} - /** - *

- * setSolidRefFluidPhase. - *

- * - * @param refPhase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void setSolidRefFluidPhase(PhaseInterface refPhase) { - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getName().equals("water")) { - ((ComponentHydrate) componentArray[i]).setSolidRefFluidPhase(refPhase); - } - } + /** + *

+ * setSolidRefFluidPhase. + *

+ * + * @param refPhase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void setSolidRefFluidPhase(PhaseInterface refPhase) { + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getName().equals("water")) { + ((ComponentHydrate) componentArray[i]).setSolidRefFluidPhase(refPhase); + } } + } + + /** {@inheritDoc} */ + @Override + public double getSoundSpeed() { + return Double.NaN; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseInterface.java b/src/main/java/neqsim/thermo/phase/PhaseInterface.java index 15a4317548..c2861712b0 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseInterface.java +++ b/src/main/java/neqsim/thermo/phase/PhaseInterface.java @@ -3,6 +3,7 @@ * * Created on 3. juni 2000, 14:45 */ + package neqsim.thermo.phase; import neqsim.thermo.ThermodynamicConstantsInterface; @@ -20,22 +21,22 @@ public interface PhaseInterface extends ThermodynamicConstantsInterface, Cloneable { /** *

- * addcomponent. + * Add component to component array and update moles variables. *

* - * @param componentName a {@link java.lang.String} object - * @param molesInPhase a double - * @param moles a double - * @param compNumber a int + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. + * @param compIndex Index number of component in phase object component array. */ - public void addcomponent(String componentName, double molesInPhase, double moles, int compNumber); + public void addComponent(String name, double moles, double molesInPhase, int compIndex); /** *

* setMoleFractions. *

* - * @param x an array of {@link double} objects + * @param x an array of type double */ public void setMoleFractions(double[] x); @@ -75,7 +76,14 @@ public interface PhaseInterface extends ThermodynamicConstantsInterface, Cloneab public double getDensity_AGA8(); /** - * method to get the Joule Thomson Coefficient of a phase note: implemented in phaseEos. + * method to get the Joule Thomson Coefficient of a phase. + * + * @return Joule Thomson coefficient in K/bar + */ + public double getJouleThomsonCoefficient(); + + /** + * method to get the Joule Thomson Coefficient of a phase. * * @param unit Supported units are K/bar, C/bar * @return Joule Thomson coefficient in specified unit @@ -85,7 +93,7 @@ public interface PhaseInterface extends ThermodynamicConstantsInterface, Cloneab /** * Returns the mole composition vector in unit mole fraction. * - * @return an array of {@link double} objects + * @return an array of type double */ public double[] getMolarComposition(); @@ -96,6 +104,13 @@ public interface PhaseInterface extends ThermodynamicConstantsInterface, Cloneab */ public void resetPhysicalProperties(); + /** + * method to return phase volume note: without Peneloux volume correction. + * + * @return volume in unit m3*1e5 + */ + public double getVolume(); + /** * method to return fluid volume. * @@ -142,10 +157,39 @@ public default double getGamma2() { /** *

- * init. + * getCompressibilityX. *

+ * + * @return a double */ - public void init(); + public double getCompressibilityX(); + + /** + *

+ * getCompressibilityY. + *

+ * + * @return a double + */ + public double getCompressibilityY(); + + /** + *

+ * getIsothermalCompressibility. + *

+ * + * @return a double + */ + public double getIsothermalCompressibility(); + + /** + *

+ * getIsobaricThermalExpansivity. + *

+ * + * @return a double + */ + public double getIsobaricThermalExpansivity(); /** *

@@ -156,6 +200,61 @@ public default double getGamma2() { */ public double getdrhodN(); + /** + *

+ * setInitType. + *

+ * + * @param initType a int + */ + public void setInitType(int initType); + + /** + *

+ * Init using current phase properties. + *

+ */ + public default void init() { + init(getNumberOfMolesInPhase() / getBeta(), getNumberOfComponents(), getInitType(), getType(), + getBeta()); + } + + /** + *

+ * init. Uses existing phase type. + *

+ * + * @param totalNumberOfMoles Total number of moles in all phases of Stream. + * @param numberOfComponents Number of components in system. + * @param initType a int. Use 0 to init, and 1 to reset. + * @param beta Mole fraction of this phase in system. + */ + public default void init(double totalNumberOfMoles, int numberOfComponents, int initType, + double beta) { + init(totalNumberOfMoles, numberOfComponents, initType, getType(), beta); + } + + /** + *

+ * init. + *

+ * + * @param totalNumberOfMoles Total number of moles in all phases of Stream. + * @param numberOfComponents Number of components in system. + * @param initType a int. Use 0 to init, and 1 to reset. + * @param pt Type of phase. + * @param beta Mole fraction of this phase in system. + */ + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta); + + /** + *

+ * initPhysicalProperties. + *

+ */ + public void initPhysicalProperties(); + /** *

* initPhysicalProperties. @@ -230,42 +329,19 @@ public default double getGamma2() { /** *

- * init. - *

- * - * @param totalNumberOfMoles a double - * @param numberOfComponents a int - * @param type a int. Use 0 to init, and 1 to reset. - * @param phase a int - * @param beta a double - */ - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta); - - /** - *

- * initPhysicalProperties. - *

- */ - public void initPhysicalProperties(); - - /** - *

- * setInitType. + * Get component array of Phase. *

* - * @param initType a int + * @return an array of {@link neqsim.thermo.component.ComponentInterface} objects */ - public void setInitType(int initType); + public ComponentInterface[] getcomponentArray(); /** - *

- * getcomponentArray. - *

+ * Get normalized names of components in phase. * - * @return an array of {@link neqsim.thermo.component.ComponentInterface} objects + * @return Array of names of components in phase. */ - public ComponentInterface[] getcomponentArray(); + public String[] getComponentNames(); /** *

@@ -293,11 +369,19 @@ public void init(double totalNumberOfMoles, int numberOfComponents, int type, in */ public double getMolarVolume(); + /** + * method to return molar volume of the fluid: eventual volume correction included. + * + * @param unit Supported units are m3/mol, litre/mol + * @return molar volume volume in unit + */ + public double getMolarVolume(String unit); + /** * method to return flow rate of a phase. * - * @param flowunit Supported units are kg/sec, kg/min, m3/sec, m3/min, m3/hr, mole/sec, mole/min, - * mole/hr + * @param flowunit Supported units are kg/sec, kg/min, kg/hr, m3/sec, m3/min, m3/hr, ft3/sec, + * mole/sec, mole/min, mole/hr * @return flow rate in specified unit */ public double getFlowRate(String flowunit); @@ -323,7 +407,7 @@ public void init(double totalNumberOfMoles, int numberOfComponents, int type, in * method to get GERG properties of a phase using the GERG-2008 EoS. *

* - * @return an array of {@link double} objects + * @return an array of type double */ public double[] getProperties_GERG2008(); @@ -344,16 +428,14 @@ public void init(double totalNumberOfMoles, int numberOfComponents, int type, in /** *

- * removeComponent. + * Remove component from Phase. *

* - * @param componentName a {@link java.lang.String} object - * @param moles a double - * @param molesInPhase a double - * @param compNumber a int + * @param name Name of component. + * @param moles Total number of moles of component. + * @param molesInPhase Number of moles in phase. */ - public void removeComponent(String componentName, double moles, double molesInPhase, - int compNumber); + public void removeComponent(String name, double moles, double molesInPhase); /** *

@@ -365,6 +447,16 @@ public void removeComponent(String componentName, double moles, double molesInPh */ public double getFugacity(int compNumb); + /** + *

+ * getFugacity. + *

+ * + * @param compName a {@link java.lang.String} object + * @return a double + */ + public double getFugacity(String compName); + /** * method to return phase volume note: without Peneloux volume correction. * @@ -402,68 +494,61 @@ public void removeComponent(String componentName, double moles, double molesInPh /** *

- * getMixGibbsEnergy. + * getGibbsEnergy. *

* * @return a double */ - public double getMixGibbsEnergy(); + public double getGibbsEnergy(); /** *

- * hasPlusFraction. + * getMixGibbsEnergy. *

* - * @return a boolean + * @return a double */ - public boolean hasPlusFraction(); + public double getMixGibbsEnergy(); /** *

- * getExessGibbsEnergy. + * getExcessGibbsEnergy. *

* * @return a double */ - public double getExessGibbsEnergy(); + public double getExcessGibbsEnergy(); /** *

- * getSresTP. + * getExcessGibbsEnergySymetric. *

* * @return a double */ - public double getSresTP(); + public double getExcessGibbsEnergySymetric(); /** *

- * Setter for property phaseType. + * hasPlusFraction. *

* - * @param phaseType a int + * @return a boolean */ - public void setPhaseType(int phaseType); + public boolean hasPlusFraction(); /** *

- * Setter for property beta. + * getSresTP. *

* - * @param beta a double - */ - public void setBeta(double beta); - - /** - * method to return phase volume note: without Peneloux volume correction. - * - * @return volume in unit m3*1e5 + * @return a double */ - public double getVolume(); + public double getSresTP(); /** *

- * setProperties. + * setProperties. Transfer properties from another phase object. *

* * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object @@ -490,13 +575,24 @@ public void removeComponent(String componentName, double moles, double molesInPh /** *

- * getBeta. + * Getter for property beta. Beta is the mole fraction of a phase of all the moles of + * a system. *

* - * @return a double + * @return Beta value */ public double getBeta(); + /** + *

+ * Setter for property beta. Beta is the mole fraction of a phase of all the moles of + * a system. + *

+ * + * @param b Beta value to set. + */ + public void setBeta(double b); + /** *

* getWtFrac. @@ -528,14 +624,34 @@ public void removeComponent(String componentName, double moles, double molesInPh /** *

- * getComponent. + * Get Component by name. *

* - * @param i a int + * @param name Name of component + * @return a {@link neqsim.thermo.component.ComponentInterface} object + */ + public ComponentInterface getComponent(String name); + + /** + *

+ * Get Component by index. + *

+ * + * @param i Component index * @return a {@link neqsim.thermo.component.ComponentInterface} object */ public ComponentInterface getComponent(int i); + /** + *

+ * getActivityCoefficient. + *

+ * + * @param k a int + * @return a double + */ + public double getActivityCoefficient(int k); + /** *

* getActivityCoefficient. @@ -582,6 +698,16 @@ public void removeComponent(String componentName, double moles, double molesInPh */ public double getLogPureComponentFugacity(int k); + /** + *

+ * getPureComponentFugacity. + *

+ * + * @param k a int + * @return a double + */ + public double getPureComponentFugacity(int k); + /** *

* getPureComponentFugacity. @@ -595,18 +721,57 @@ public void removeComponent(String componentName, double moles, double molesInPh /** *

- * addMolesChemReac. + * Change the number of moles of component of phase,i.e., numberOfMolesInPhase but do + * not change the total number of moles of component in system. + * + * NB! Phase fraction beta is not updated by this method. Must be done separately to + * keep consistency between phase and component calculation of total number of moles in system. *

* - * @param component Component number - * @param dn a double - * @param totdn a double + * @param component Component number to change + * @param dn Number of moles of component added to phase + */ + public default void addMoles(int component, double dn) { + addMolesChemReac(component, dn, 0); + } + + /** + *

+ * Change the number of moles of component of phase, i.e., numberOfMolesInPhase, and + * total number of moles of component in system, i.e., numberOfMoles with the same + * amount. + * + * NB! Phase fraction beta is not updated by this method. Must be done separately to + * keep consistency between phase and component calculation of total number of moles in system. + *

+ * + * @param component Component number to change + * @param dn Number of moles of component added to phase and system + */ + public default void addMolesChemReac(int component, double dn) { + addMolesChemReac(component, dn, dn); + } + + /** + *

+ * Change the number of moles of component of phase, i.e., numberOfMolesInPhase and + * Component properties for the number of moles of component of phase, i.e., + * numberOfMolesInPhase, and total number of moles of component in system, i.e., + * numberOfMoles with separate amounts. + * + * NB! Phase fraction beta is not updated by this method. Must be done separately to + * keep consistency between phase and component calculation of total number of moles in system. + *

+ * + * @param component Component number to change + * @param dn Number of moles of component to add to phase + * @param totdn Number of moles of component to add to system */ public void addMolesChemReac(int component, double dn, double totdn); /** *

- * setEmptyFluid. + * Set the flow rate (moles) of all components to zero. *

*/ public void setEmptyFluid(); @@ -620,13 +785,12 @@ public void removeComponent(String componentName, double moles, double molesInPh /** *

- * getComponent. + * specify the type model for the physical properties you want to use. *

* - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.thermo.component.ComponentInterface} object + * @param type 0 Orginal/default 1 Water 2 Glycol 3 Amine 4 CO2Water 6 Basic */ - public ComponentInterface getComponent(String name); + public void setPhysicalProperties(int type); /** *

@@ -662,16 +826,6 @@ public void removeComponent(String componentName, double moles, double molesInPh */ public void setTemperature(double temperature); - /** - *

- * addMolesChemReac. - *

- * - * @param component a int - * @param dn a double - */ - public void addMolesChemReac(int component, double dn); - /** *

* getPhysicalProperties. @@ -691,12 +845,12 @@ public void removeComponent(String componentName, double moles, double molesInPh * @param temperature a double * @param A a double * @param B a double - * @param phase a int + * @param pt the PhaseType of the phase * @return a double * @throws neqsim.util.exception.IsNaNException if any. * @throws neqsim.util.exception.TooManyIterationsException if any. */ - double molarVolume(double pressure, double temperature, double A, double B, int phase) + double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) throws neqsim.util.exception.IsNaNException, neqsim.util.exception.TooManyIterationsException; /** @@ -873,16 +1027,6 @@ public void removeComponent(String componentName, double moles, double molesInPh */ double getg(); - /** - *

- * addMoles. - *

- * - * @param component a int - * @param dn a double - */ - public void addMoles(int component, double dn); - /** * method to return enthalpy of a phase in unit Joule. * @@ -893,7 +1037,7 @@ public void removeComponent(String componentName, double moles, double molesInPh /** * method to return phase enthalpy in a specified unit. * - * @param unit Supported units are J, J/mol, J/kg and kJ/kg + * @param unit Supported units are J, J/mol, kJ/kmol, J/kg and kJ/kg * @return enthalpy in specified unit */ public double getEnthalpy(String unit); @@ -921,34 +1065,13 @@ public void removeComponent(String componentName, double moles, double molesInPh public double getViscosity(); /** - * method to return viscosity og the phase in a specified unit. + * method to return viscosity of the phase in a specified unit. * - * @param unit Supported units are kg/msec, cP (centipoise) + * @param unit Supported units are kg/msec, Pas, cP (centipoise) * @return viscosity in specified unit */ public double getViscosity(String unit); - /** - * method to return conductivity of a phase. - * - * @return conductivity in unit W/m*K - * @deprecated use {@link #getThermalConductivity()} instead. - */ - @Deprecated - public double getConductivity(); - - /** - * method to return conductivity in a specified unit. - * - * - * @param unit Supported units are W/mK, W/cmK - * @return conductivity in specified unit - * - * @deprecated use {@link #getThermalConductivity(String unit)} instead. - */ - @Deprecated - public double getConductivity(String unit); - /** * method to return conductivity of a phase. * @@ -1038,16 +1161,6 @@ public void removeComponent(String componentName, double moles, double molesInPh */ public double getZ(); - /** - *

- * specify the type model for the physical properties you want to use. Type: 0 Orginal/default 1 - * Water 2 Glycol 3 Amine - *

- * - * @param type a int - */ - public void setPhysicalProperties(int type); - /** *

* getPseudoCriticalPressure. @@ -1093,13 +1206,6 @@ public void removeComponent(String componentName, double moles, double molesInPh */ public void setNumberOfComponents(int k); - /** - * method to get the Joule Thomson Coefficient of a phase note: implemented in phaseEos. - * - * @return Joule Thomson coefficient in K/bar - */ - public double getJouleThomsonCoefficient(); - /** *

* setMixingRule. @@ -1127,15 +1233,6 @@ public void removeComponent(String componentName, double moles, double molesInPh */ public double getNumberOfMolesInPhase(); - /** - *

- * getPhaseType. - *

- * - * @return a int - */ - public int getPhaseType(); - /** *

* calcMolarVolume. @@ -1163,15 +1260,6 @@ public void removeComponent(String componentName, double moles, double molesInPh */ public void setMolarVolume(double molarVolume); - /** - *

- * getPureComponentFugacity. - *

- * - * @param k a int - * @return a double - */ - public double getPureComponentFugacity(int k); // public double getInfiniteDiluteFugacity(int k); /** @@ -1212,15 +1300,6 @@ public void removeComponent(String componentName, double moles, double molesInPh */ public int getNumberOfIonicComponents(); - /** - *

- * getFugacity. - *

- * - * @param compName a {@link java.lang.String} object - * @return a double - */ - public double getFugacity(String compName); // double calcA2(PhaseInterface phase, double temperature, double pressure, int // numbcomp); // double calcB2(PhaseInterface phase, double temperature, double pressure, int @@ -1264,15 +1343,6 @@ public void removeComponent(String componentName, double moles, double molesInPh public double getATT(); // public double getAiT(); - /** - *

- * getGibbsEnergy. - *

- * - * @return a double - */ - public double getGibbsEnergy(); - /** *

* clone. @@ -1289,6 +1359,14 @@ public void removeComponent(String componentName, double moles, double molesInPh */ public double getTemperature(); + /** + * method to return temperature in a specified unit. + * + * @param unit Supported units are K, C, R + * @return temperature in specified unit + */ + public double getTemperature(String unit); + /** * Get pressure of phase. * @@ -1299,18 +1377,26 @@ public void removeComponent(String componentName, double moles, double molesInPh /** * Get pressure of phase in a specified unit. * - * @param unit Supported units are bara, barg, Pa and MPa + * @param unit Supported units are bara, barg, Pa, MPa, psi, psia, psig * @return pressure in specified unit */ public double getPressure(String unit); /** - * method to get molar mass of a fluid phase. + * Get molar mass of phase. * * @return molar mass in unit kg/mol */ public double getMolarMass(); + /** + * method to get molar mass of a fluid phase. + * + * @param unit Supported units are kg/mol, gr/mol + * @return molar mass in specified unit + */ + public double getMolarMass(String unit); + /** *

* getInternalEnergy. @@ -1677,16 +1763,6 @@ public void removeComponent(String componentName, double moles, double molesInPh */ public double getLogInfiniteDiluteFugacity(int k); - /** - *

- * getActivityCoefficient. - *

- * - * @param k a int - * @return a double - */ - public double getActivityCoefficient(int k); - /** *

* Getter for property mixingRuleNumber. @@ -1767,15 +1843,29 @@ public void removeComponent(String componentName, double moles, double molesInPh *

* * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param alpha an array of {@link double} objects - * @param Dij an array of {@link double} objects - * @param DijT an array of {@link double} objects + * @param alpha an array of type double + * @param Dij an array of type double + * @param DijT an array of type double * @param mixRule an array of {@link java.lang.String} objects - * @param intparam an array of {@link double} objects + * @param intparam an array of type double */ public void setParams(PhaseInterface phase, double[][] alpha, double[][] Dij, double[][] DijT, String[][] mixRule, double[][] intparam); + /** + * Getter for property pt. + * + * @return PhaseType enum object. + */ + public PhaseType getType(); + + /** + * Setter for property pt. + * + * @param pt PhaseType to set. + */ + public void setType(PhaseType pt); + /** *

* Getter for property phaseTypeName. @@ -1783,7 +1873,9 @@ public void setParams(PhaseInterface phase, double[][] alpha, double[][] Dij, do * * @return a {@link java.lang.String} object */ - public java.lang.String getPhaseTypeName(); + public default String getPhaseTypeName() { + return getType().getDesc(); + } /** *

@@ -1792,7 +1884,9 @@ public void setParams(PhaseInterface phase, double[][] alpha, double[][] Dij, do * * @param phaseTypeName a {@link java.lang.String} object */ - public void setPhaseTypeName(java.lang.String phaseTypeName); + public default void setPhaseTypeName(String phaseTypeName) { + setType(PhaseType.byDesc(phaseTypeName)); + } /** *

@@ -1833,23 +1927,23 @@ public void setParams(PhaseInterface phase, double[][] alpha, double[][] Dij, do public double getActivityCoefficientUnSymetric(int k); /** - *

- * getExessGibbsEnergySymetric. - *

+ * Verify if phase has a component. * - * @return a double + * @param name Name of component to look for. NB! Converts name to normalized name. + * @return True if component is found. */ - public double getExessGibbsEnergySymetric(); + public default boolean hasComponent(String name) { + return hasComponent(name, true); + } /** - *

- * hasComponent. - *

+ * Verify if phase has a component. * - * @param name a {@link java.lang.String} object - * @return a boolean + * @param name Name of component to look for. + * @param normalized Set true to convert input name to normalized component name. + * @return True if component is found. */ - public boolean hasComponent(String name); + public boolean hasComponent(String name, boolean normalized); /** *

@@ -1886,4 +1980,27 @@ public void setParams(PhaseInterface phase, double[][] alpha, double[][] Dij, do * @return speed of sound in m/s */ public double getSoundSpeed(); + + /** + * method to get the speed of sound of a system. The sound speed is implemented based on a molar + * average over the phases + * + * @param unit Supported units are m/s, km/h + * @return speed of sound in m/s + */ + public double getSoundSpeed(String unit); + + /** + * method to return name of thermodynamic model + * + * @return String model name + */ + public String getModelName(); + + /** + * method to return Z volume corrected gas compressibility + * + * @return double Z volume corrected + */ + public double getZvolcorr(); } diff --git a/src/main/java/neqsim/thermo/phase/PhaseKentEisenberg.java b/src/main/java/neqsim/thermo/phase/PhaseKentEisenberg.java index 3c635be85f..dce22ef66f 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseKentEisenberg.java +++ b/src/main/java/neqsim/thermo/phase/PhaseKentEisenberg.java @@ -11,29 +11,27 @@ * @version $Id: $Id */ public class PhaseKentEisenberg extends PhaseGENRTL { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseKentEisenberg. - *

- */ - public PhaseKentEisenberg() { - super(); - } + /** + *

+ * Constructor for PhaseKentEisenberg. + *

+ */ + public PhaseKentEisenberg() { + super(); + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentKentEisenberg(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentKentEisenberg(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public double getActivityCoefficient(int k, int p) { - return 1.0; - } + /** {@inheritDoc} */ + @Override + public double getActivityCoefficient(int k, int p) { + return 1.0; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEos.java b/src/main/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEos.java index a64e76b0c7..6a5c9f3752 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEos.java +++ b/src/main/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEos.java @@ -3,6 +3,7 @@ * * Created on 26. februar 2001, 17:54 */ + package neqsim.thermo.phase; import org.apache.logging.log4j.LogManager; @@ -18,1708 +19,1718 @@ * @version $Id: $Id */ public class PhaseModifiedFurstElectrolyteEos extends PhaseSrkEos { - private static final long serialVersionUID = 1000; - double gammaold = 0, alphaLRdTdV = 0; - double W = 0, WT = 0, WTT = 0, eps = 0, epsdV = 0, epsdVdV = 0, epsIonic = 0, bornX = 0, - epsIonicdV = 0, epsIonicdVdV = 0, alphaLR2 = 0, alphaLRdT = 0.0, alphaLRdTdT = 0.0, - alphaLRdV = 0.0, XLR = 0, solventDiElectricConstant = 0, - solventDiElectricConstantdT = 0.0, solventDiElectricConstantdTdT = 0, - shieldingParameter = 0; - double gamma = 0, diElectricConstantdV = 0, diElectricConstantdVdV = 0, alphaLRdVdV = 0, - diElectricConstantdT = 0, diElectricConstantdTdT = 0.0, diElectricConstantdTdV = 0; - neqsim.thermo.mixingRule.ElectrolyteMixingRulesInterface electrolyteMixingRule; - double sr2On = 1.0, lrOn = 1.0, bornOn = 1.0; - - static Logger logger = LogManager.getLogger(PhaseModifiedFurstElectrolyteEos.class); - // double gammLRdV=0.0; - // PhaseInterface[] refPhase;// = new PhaseInterface[10]; - - /** - *

- * Constructor for PhaseModifiedFurstElectrolyteEos. - *

- */ - public PhaseModifiedFurstElectrolyteEos() { - super(); - electrolyteMixingRule = mixSelect.getElectrolyteMixingRule(this); - } - - /** - *

- * Getter for the field electrolyteMixingRule. - *

- * - * @return a {@link neqsim.thermo.mixingRule.ElectrolyteMixingRulesInterface} object - */ - public neqsim.thermo.mixingRule.ElectrolyteMixingRulesInterface getElectrolyteMixingRule() { - return electrolyteMixingRule; - } - - /** - *

- * reInitFurstParam. - *

- */ - public void reInitFurstParam() { - for (int k = 0; k < numberOfComponents; k++) { - ((ComponentModifiedFurstElectrolyteEos) componentArray[k]).initFurstParam(); - } - electrolyteMixingRule = mixSelect.getElectrolyteMixingRule(this); - } - - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - if (type == 0) { - electrolyteMixingRule = mixSelect.getElectrolyteMixingRule(this); - } - } - - /** {@inheritDoc} */ - @Override - public PhaseModifiedFurstElectrolyteEos clone() { - PhaseModifiedFurstElectrolyteEos clonedPhase = null; - try { - clonedPhase = (PhaseModifiedFurstElectrolyteEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - // clonedPhase.electrolyteMixingRule = - // (thermo.mixingRule.ElectrolyteMixingRulesInterface) - // electrolyteMixingRule.clone(); - - return clonedPhase; - } - - /** - *

- * volInit. - *

- */ - public void volInit() { - W = electrolyteMixingRule.calcW(this, temperature, pressure, numberOfComponents); - WT = electrolyteMixingRule.calcWT(this, temperature, pressure, numberOfComponents); - WTT = electrolyteMixingRule.calcWTT(this, temperature, pressure, numberOfComponents); - eps = calcEps(); - epsdV = calcEpsV(); - epsdVdV = calcEpsVV(); - epsIonic = calcEpsIonic(); - epsIonicdV = calcEpsIonicdV(); - epsIonicdVdV = calcEpsIonicdVdV(); - solventDiElectricConstant = calcSolventDiElectricConstant(temperature); - solventDiElectricConstantdT = calcSolventDiElectricConstantdT(temperature); - solventDiElectricConstantdTdT = calcSolventDiElectricConstantdTdT(temperature); - diElectricConstant = calcDiElectricConstant(temperature); - diElectricConstantdT = calcDiElectricConstantdT(temperature); - diElectricConstantdTdT = calcDiElectricConstantdTdT(temperature); - diElectricConstantdV = calcDiElectricConstantdV(temperature); - diElectricConstantdVdV = calcDiElectricConstantdVdV(temperature); - diElectricConstantdTdV = calcDiElectricConstantdTdV(temperature); - alphaLR2 = electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * diElectricConstant * R * temperature); - alphaLRdT = - -electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * diElectricConstant * R * temperature * temperature) - - electronCharge - * electronCharge * avagadroNumber / (vacumPermittivity - * diElectricConstant * diElectricConstant * R * temperature) - * diElectricConstantdT; - alphaLRdV = -electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * diElectricConstant * diElectricConstant * R * temperature) - * diElectricConstantdV; - alphaLRdTdT = 2.0 * electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * diElectricConstant * R * Math.pow(temperature, 3.0)) - + electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * diElectricConstant * diElectricConstant * R - * temperature * temperature) - * diElectricConstantdT - - electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * diElectricConstant * diElectricConstant * R - * temperature) - * diElectricConstantdTdT - + electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * diElectricConstant * diElectricConstant * R - * temperature * temperature) - * diElectricConstantdT - + 2.0 * electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow(diElectricConstant, 3.0) * R * temperature) - * Math.pow(diElectricConstantdT, 2.0); - alphaLRdTdV = - electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * diElectricConstant * diElectricConstant * R - * temperature * temperature) - * diElectricConstantdV - + 2.0 * electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * diElectricConstant * diElectricConstant - * diElectricConstant * R * temperature) - * diElectricConstantdT * diElectricConstantdV - - electronCharge - * electronCharge * avagadroNumber / (vacumPermittivity - * diElectricConstant * diElectricConstant * R * temperature) - * diElectricConstantdTdV; - alphaLRdVdV = -electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * diElectricConstant * diElectricConstant * R * temperature) - * diElectricConstantdVdV - + 2.0 * electronCharge * electronCharge * avagadroNumber - / (vacumPermittivity * Math.pow(diElectricConstant, 3.0) * R * temperature) - * diElectricConstantdV * diElectricConstantdV; - shieldingParameter = calcShieldingParameter(); - // gammLRdV = calcGammaLRdV(); - XLR = calcXLR(); - bornX = calcBornX(); - } - - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new neqsim.thermo.component.ComponentModifiedFurstElectrolyteEos(componentName, - moles, molesInPhase, compNumber); - } - - /** - *

- * calcSolventDiElectricConstant. - *

- * - * @param temperature a double - * @return a double - */ - public double calcSolventDiElectricConstant(double temperature) { - double ans1 = 0.0, ans2 = 1e-50; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getIonicCharge() == 0) { - ans1 += componentArray[i].getNumberOfMolesInPhase() - * componentArray[i].getDiElectricConstant(temperature); - ans2 += componentArray[i].getNumberOfMolesInPhase(); - } - } - return ans1 / ans2; - } - - /** - *

- * calcSolventDiElectricConstantdT. - *

- * - * @param temperature a double - * @return a double - */ - public double calcSolventDiElectricConstantdT(double temperature) { - double ans1 = 0.0, ans2 = 1e-50; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getIonicCharge() == 0) { - ans1 += componentArray[i].getNumberOfMolesInPhase() - * componentArray[i].getDiElectricConstantdT(temperature); - ans2 += componentArray[i].getNumberOfMolesInPhase(); - } - } - return ans1 / ans2; - } - - /** - *

- * calcSolventDiElectricConstantdTdT. - *

- * - * @param temperature a double - * @return a double - */ - public double calcSolventDiElectricConstantdTdT(double temperature) { - double ans1 = 0.0, ans2 = 1e-50; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getIonicCharge() == 0) { - ans1 += componentArray[i].getNumberOfMolesInPhase() - * componentArray[i].getDiElectricConstantdTdT(temperature); - ans2 += componentArray[i].getNumberOfMolesInPhase(); - } - } - return ans1 / ans2; - } - - /** - *

- * calcEps. - *

- * - * @return a double - */ - public double calcEps() { - double eps = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - eps += avagadroNumber * pi / 6.0 * componentArray[i].getNumberOfMolesInPhase() - * Math.pow(componentArray[i].getLennardJonesMolecularDiameter() * 1e-10, 3.0) - * 1.0 / (numberOfMolesInPhase * getMolarVolume() * 1e-5); - } - return eps; - } - - /** - *

- * calcEpsV. - *

- * - * @return a double - */ - public double calcEpsV() { - return -getEps() / (getMolarVolume() * 1e-5 * numberOfMolesInPhase); - } - - /** - *

- * calcEpsVV. - *

- * - * @return a double - */ - public double calcEpsVV() { - return 2.0 * getEps() / Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0); - } - - /** - *

- * calcEpsIonic. - *

- * - * @return a double - */ - public double calcEpsIonic() { - double epsIonicLoc = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getIonicCharge() != 0) { - epsIonicLoc += - avagadroNumber * pi / 6.0 * componentArray[i].getNumberOfMolesInPhase() - * Math.pow(componentArray[i].getLennardJonesMolecularDiameter() - * 1e-10, 3.0) - / (numberOfMolesInPhase * getMolarVolume() * 1e-5); - } - } - return epsIonicLoc; - } - - /** - *

- * calcEpsIonicdV. - *

- * - * @return a double - */ - public double calcEpsIonicdV() { - return -getEpsIonic() / (getMolarVolume() * 1e-5 * numberOfMolesInPhase); - } - - /** - *

- * calcEpsIonicdVdV. - *

- * - * @return a double - */ - public double calcEpsIonicdVdV() { - return 2.0 * getEpsIonic() / Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0); - } - - /** {@inheritDoc} */ - @Override - public double getF() { - return super.getF() + FSR2() * sr2On + FLR() * lrOn + FBorn() * bornOn; - } - - /** {@inheritDoc} */ - @Override - public double dFdT() { - return super.dFdT() + dFSR2dT() * sr2On + dFLRdT() * lrOn + dFBorndT() * bornOn; - } - - /** {@inheritDoc} */ - @Override - public double dFdTdV() { - return super.dFdTdV() + dFSR2dTdV() * sr2On + dFLRdTdV() * lrOn; - } - - /** {@inheritDoc} */ - @Override - public double dFdV() { - return super.dFdV() + dFSR2dV() * sr2On + dFLRdV() * lrOn; - } - - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return super.dFdVdV() + dFSR2dVdV() * sr2On + dFLRdVdV() * lrOn; - } - - /** {@inheritDoc} */ - @Override - public double dFdVdVdV() { - return super.dFdVdVdV() + dFSR2dVdVdV() * sr2On + dFLRdVdVdV() * lrOn; - } - - /** {@inheritDoc} */ - @Override - public double dFdTdT() { - return super.dFdTdT() + dFSR2dTdT() * sr2On + dFLRdTdT() * lrOn + dFBorndTdT() * bornOn; - } - - /** - *

- * calcXLR. - *

- * - * @return a double - */ - public double calcXLR() { - double ans = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getIonicCharge() != 0) { - ans += componentArray[i].getNumberOfMolesInPhase() - * Math.pow(componentArray[i].getIonicCharge(), 2.0) - * getShieldingParameter() / (1.0 + getShieldingParameter() - * componentArray[i].getLennardJonesMolecularDiameter() * 1e-10); - } - } - return ans; - } - - /** - *

- * calcGammaLRdV. - *

- * - * @return a double - */ - public double calcGammaLRdV() { - if (phaseType == 1) { - return 0.0; - } - // return 0.0; // problem ved ren komponent - return 1.0 / (8.0 * getShieldingParameter()) - * (4.0 * Math.pow(getShieldingParameter(), 2.0) / getAlphaLR2() * alphaLRdV - + 4.0 * Math.pow(getShieldingParameter(), 2.0) - / (numberOfMolesInPhase * getMolarVolume() * 1e-5)); - // // Math.pow(getIonicCharge()/(1.0+((PhaseModifiedFurstElectrolyteEos) - // phase).getShieldingParameter()*getLennardJonesMolecularDiameter()*1e-10),2.0) - // + alphai*temp) /(8.0*((PhaseModifiedFurstElectrolyteEos) - // phase).getShieldingParameter()); - } - - /** - *

- * calcShieldingParameter. - *

- * - * @return a double - */ - public double calcShieldingParameter() { - // if(phaseType==1) return 0.0; - double df = 0, f = 0; - int ions = 0; - int iterations = 0; - gamma = 1e10; - do { - iterations++; - gammaold = gamma; - ions = 0; - f = 4.0 * Math.pow(gamma, 2) / avagadroNumber; - df = 8.0 * gamma / avagadroNumber; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getIonicCharge() != 0) { - ions++; - f += -getAlphaLR2() * componentArray[i].getNumberOfMolesInPhase() - / (getMolarVolume() * numberOfMolesInPhase * 1e-5) - * Math.pow(componentArray[i].getIonicCharge() / (1.0 + gamma - * componentArray[i].getLennardJonesMolecularDiameter() * 1e-10), - 2.0); - df += 2.0 * getAlphaLR2() * componentArray[i].getNumberOfMolesInPhase() - / (getMolarVolume() * numberOfMolesInPhase * 1e-5) - * Math.pow(componentArray[i].getIonicCharge(), 2.0) - * (componentArray[i].getLennardJonesMolecularDiameter() * 1e-10) - / (Math.pow(1.0 + gamma - * componentArray[i].getLennardJonesMolecularDiameter() * 1e-10, - 3.0)); - } - } - gamma = ions > 0 ? gammaold - 0.8 * f / df : 0; - } while ((Math.abs(f) > 1e-10 && iterations < 1000) || iterations < 3); - // gamma = 1e9; - // System.out.println("gamma " +gamma + " iterations " + iterations); - return gamma; - } - - // public double calcShieldingParameter2(){ - // if(phaseType==1) return 0.0; - - // double df=0, f=0; - // int ions=0; - // int iterations=0; - // gamma=1e10; - // do{ - // iterations++; - // gammaold = gamma; - // ions=0; - // f = 4.0*Math.pow(gamma,2)/avagadroNumber; - // df = 8.0*gamma/avagadroNumber; - // for(int i=0;i0 ? gammaold - 0.8*f/df : 0; - // } - // while((Math.abs(f)>1e-10 && iterations<1000) || iterations<5); - // //System.out.println("gama " + gamma*1e-10); - // return gamma; - // } - - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - // double BonV = phase== 0 ? - // 2.0/(2.0+temperature/getPseudoCriticalTemperature()):0.1*pressure*getB()/(numberOfMolesInPhase*temperature*R); - double BonV = phase == 0 ? 0.99 : 1e-5; - - if (BonV < 0) { - BonV = 1.0e-6; - } - if (BonV > 1.0) { - BonV = 1.0 - 1.0e-6; - } - double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0, dhh = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - if (Btemp <= 0) { - logger.info("b negative in volume calc"); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseModifiedFurstElectrolyteEos.class); + + double gammaold = 0; + double alphaLRdTdV = 0; + double W = 0; + double WT = 0; + double WTT = 0; + double eps = 0; + double epsdV = 0; + double epsdVdV = 0; + double epsIonic = 0; + double bornX = 0; + double epsIonicdV = 0; + double epsIonicdVdV = 0; + double alphaLR2 = 0; + double alphaLRdT = 0.0; + double alphaLRdTdT = 0.0; + double alphaLRdV = 0.0; + double XLR = 0; + double solventDiElectricConstant = 0; + double solventDiElectricConstantdT = 0.0; + double solventDiElectricConstantdTdT = 0; + double shieldingParameter = 0; + double gamma = 0; + double diElectricConstantdV = 0; + double diElectricConstantdVdV = 0; + double alphaLRdVdV = 0; + double diElectricConstantdT = 0; + double diElectricConstantdTdT = 0.0; + double diElectricConstantdTdV = 0; + neqsim.thermo.mixingRule.ElectrolyteMixingRulesInterface electrolyteMixingRule; + double sr2On = 1.0; + double lrOn = 1.0; + double bornOn = 1.0; + // double gammLRdV=0.0; + // PhaseInterface[] refPhase; // = new PhaseInterface[10]; + + /** + *

+ * Constructor for PhaseModifiedFurstElectrolyteEos. + *

+ */ + public PhaseModifiedFurstElectrolyteEos() { + super(); + electrolyteMixingRule = mixSelect.getElectrolyteMixingRule(this); + } + + /** + *

+ * Getter for the field electrolyteMixingRule. + *

+ * + * @return a {@link neqsim.thermo.mixingRule.ElectrolyteMixingRulesInterface} object + */ + public neqsim.thermo.mixingRule.ElectrolyteMixingRulesInterface getElectrolyteMixingRule() { + return electrolyteMixingRule; + } + + /** + *

+ * reInitFurstParam. + *

+ */ + public void reInitFurstParam() { + for (int k = 0; k < numberOfComponents; k++) { + ((ComponentModifiedFurstElectrolyteEos) componentArray[k]).initFurstParam(); + } + electrolyteMixingRule = mixSelect.getElectrolyteMixingRule(this); + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + if (initType == 0) { + electrolyteMixingRule = mixSelect.getElectrolyteMixingRule(this); + } + } + + /** {@inheritDoc} */ + @Override + public PhaseModifiedFurstElectrolyteEos clone() { + PhaseModifiedFurstElectrolyteEos clonedPhase = null; + try { + clonedPhase = (PhaseModifiedFurstElectrolyteEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + // clonedPhase.electrolyteMixingRule = + // (thermo.mixingRule.ElectrolyteMixingRulesInterface) + // electrolyteMixingRule.clone(); + + return clonedPhase; + } + + /** + *

+ * volInit. + *

+ */ + public void volInit() { + W = electrolyteMixingRule.calcW(this, temperature, pressure, numberOfComponents); + WT = electrolyteMixingRule.calcWT(this, temperature, pressure, numberOfComponents); + WTT = electrolyteMixingRule.calcWTT(this, temperature, pressure, numberOfComponents); + eps = calcEps(); + epsdV = calcEpsV(); + epsdVdV = calcEpsVV(); + epsIonic = calcEpsIonic(); + epsIonicdV = calcEpsIonicdV(); + epsIonicdVdV = calcEpsIonicdVdV(); + solventDiElectricConstant = calcSolventDiElectricConstant(temperature); + solventDiElectricConstantdT = calcSolventDiElectricConstantdT(temperature); + solventDiElectricConstantdTdT = calcSolventDiElectricConstantdTdT(temperature); + diElectricConstant = calcDiElectricConstant(temperature); + diElectricConstantdT = calcDiElectricConstantdT(temperature); + diElectricConstantdTdT = calcDiElectricConstantdTdT(temperature); + diElectricConstantdV = calcDiElectricConstantdV(temperature); + diElectricConstantdVdV = calcDiElectricConstantdVdV(temperature); + diElectricConstantdTdV = calcDiElectricConstantdTdV(temperature); + alphaLR2 = electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * R * temperature); + alphaLRdT = -electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * R * temperature * temperature) + - electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * diElectricConstant * R * temperature) + * diElectricConstantdT; + alphaLRdV = -electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * diElectricConstant * R * temperature) + * diElectricConstantdV; + alphaLRdTdT = 2.0 * electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * R * Math.pow(temperature, 3.0)) + + electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * diElectricConstant * R * temperature + * temperature) + * diElectricConstantdT + - electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * diElectricConstant * R * temperature) + * diElectricConstantdTdT + + electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * diElectricConstant * R * temperature + * temperature) + * diElectricConstantdT + + 2.0 * electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * Math.pow(diElectricConstant, 3.0) * R * temperature) + * Math.pow(diElectricConstantdT, 2.0); + alphaLRdTdV = electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * diElectricConstant * R * temperature + * temperature) + * diElectricConstantdV + + 2.0 * electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * diElectricConstant * diElectricConstant * R + * temperature) + * diElectricConstantdT * diElectricConstantdV + - electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * diElectricConstant * R * temperature) + * diElectricConstantdTdV; + alphaLRdVdV = -electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * diElectricConstant * diElectricConstant * R * temperature) + * diElectricConstantdVdV + + 2.0 * electronCharge * electronCharge * avagadroNumber + / (vacumPermittivity * Math.pow(diElectricConstant, 3.0) * R * temperature) + * diElectricConstantdV * diElectricConstantdV; + shieldingParameter = calcShieldingParameter(); + // gammLRdV = calcGammaLRdV(); + XLR = calcXLR(); + bornX = calcBornX(); + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = + new ComponentModifiedFurstElectrolyteEos(name, moles, molesInPhase, compNumber); + } + + /** + *

+ * calcSolventDiElectricConstant. + *

+ * + * @param temperature a double + * @return a double + */ + public double calcSolventDiElectricConstant(double temperature) { + double ans1 = 0.0; + double ans2 = 1e-50; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getIonicCharge() == 0) { + ans1 += componentArray[i].getNumberOfMolesInPhase() + * componentArray[i].getDiElectricConstant(temperature); + ans2 += componentArray[i].getNumberOfMolesInPhase(); + } + } + return ans1 / ans2; + } + + /** + *

+ * calcSolventDiElectricConstantdT. + *

+ * + * @param temperature a double + * @return a double + */ + public double calcSolventDiElectricConstantdT(double temperature) { + double ans1 = 0.0; + double ans2 = 1e-50; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getIonicCharge() == 0) { + ans1 += componentArray[i].getNumberOfMolesInPhase() + * componentArray[i].getDiElectricConstantdT(temperature); + ans2 += componentArray[i].getNumberOfMolesInPhase(); + } + } + return ans1 / ans2; + } + + /** + *

+ * calcSolventDiElectricConstantdTdT. + *

+ * + * @param temperature a double + * @return a double + */ + public double calcSolventDiElectricConstantdTdT(double temperature) { + double ans1 = 0.0; + double ans2 = 1e-50; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getIonicCharge() == 0) { + ans1 += componentArray[i].getNumberOfMolesInPhase() + * componentArray[i].getDiElectricConstantdTdT(temperature); + ans2 += componentArray[i].getNumberOfMolesInPhase(); + } + } + return ans1 / ans2; + } + + /** + *

+ * calcEps. + *

+ * + * @return a double + */ + public double calcEps() { + double eps = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + eps += avagadroNumber * pi / 6.0 * componentArray[i].getNumberOfMolesInPhase() + * Math.pow(componentArray[i].getLennardJonesMolecularDiameter() * 1e-10, 3.0) * 1.0 + / (numberOfMolesInPhase * getMolarVolume() * 1e-5); + } + return eps; + } + + /** + *

+ * calcEpsV. + *

+ * + * @return a double + */ + public double calcEpsV() { + return -getEps() / (getMolarVolume() * 1e-5 * numberOfMolesInPhase); + } + + /** + *

+ * calcEpsVV. + *

+ * + * @return a double + */ + public double calcEpsVV() { + return 2.0 * getEps() / Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0); + } + + /** + *

+ * calcEpsIonic. + *

+ * + * @return a double + */ + public double calcEpsIonic() { + double epsIonicLoc = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getIonicCharge() != 0) { + epsIonicLoc += avagadroNumber * pi / 6.0 * componentArray[i].getNumberOfMolesInPhase() + * Math.pow(componentArray[i].getLennardJonesMolecularDiameter() * 1e-10, 3.0) + / (numberOfMolesInPhase * getMolarVolume() * 1e-5); + } + } + return epsIonicLoc; + } + + /** + *

+ * calcEpsIonicdV. + *

+ * + * @return a double + */ + public double calcEpsIonicdV() { + return -getEpsIonic() / (getMolarVolume() * 1e-5 * numberOfMolesInPhase); + } + + /** + *

+ * calcEpsIonicdVdV. + *

+ * + * @return a double + */ + public double calcEpsIonicdVdV() { + return 2.0 * getEpsIonic() / Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0); + } + + /** {@inheritDoc} */ + @Override + public double getF() { + return super.getF() + FSR2() * sr2On + FLR() * lrOn + FBorn() * bornOn; + } + + /** {@inheritDoc} */ + @Override + public double dFdT() { + return super.dFdT() + dFSR2dT() * sr2On + dFLRdT() * lrOn + dFBorndT() * bornOn; + } + + /** {@inheritDoc} */ + @Override + public double dFdTdV() { + return super.dFdTdV() + dFSR2dTdV() * sr2On + dFLRdTdV() * lrOn; + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + return super.dFdV() + dFSR2dV() * sr2On + dFLRdV() * lrOn; + } + + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return super.dFdVdV() + dFSR2dVdV() * sr2On + dFLRdVdV() * lrOn; + } + + /** {@inheritDoc} */ + @Override + public double dFdVdVdV() { + return super.dFdVdVdV() + dFSR2dVdVdV() * sr2On + dFLRdVdVdV() * lrOn; + } + + /** {@inheritDoc} */ + @Override + public double dFdTdT() { + return super.dFdTdT() + dFSR2dTdT() * sr2On + dFLRdTdT() * lrOn + dFBorndTdT() * bornOn; + } + + /** + *

+ * calcXLR. + *

+ * + * @return a double + */ + public double calcXLR() { + double ans = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getIonicCharge() != 0) { + ans += componentArray[i].getNumberOfMolesInPhase() + * Math.pow(componentArray[i].getIonicCharge(), 2.0) * getShieldingParameter() + / (1.0 + getShieldingParameter() * componentArray[i].getLennardJonesMolecularDiameter() + * 1e-10); + } + } + return ans; + } + + /** + *

+ * calcGammaLRdV. + *

+ * + * @return a double + */ + public double calcGammaLRdV() { + if (pt == PhaseType.GAS) { + return 0.0; + } + // return 0.0; // problem ved ren komponent + return 1.0 / (8.0 * getShieldingParameter()) + * (4.0 * Math.pow(getShieldingParameter(), 2.0) / getAlphaLR2() * alphaLRdV + + 4.0 * Math.pow(getShieldingParameter(), 2.0) + / (numberOfMolesInPhase * getMolarVolume() * 1e-5)); + // // Math.pow(getIonicCharge()/(1.0+((PhaseModifiedFurstElectrolyteEos) + // phase).getShieldingParameter()*getLennardJonesMolecularDiameter()*1e-10),2.0) + // + alphai*temp) /(8.0*((PhaseModifiedFurstElectrolyteEos) + // phase).getShieldingParameter()); + } + + /** + *

+ * calcShieldingParameter. + *

+ * + * @return a double + */ + public double calcShieldingParameter() { + // if(pt==1) return 0.0; + double df = 0; + double f = 0; + int ions = 0; + int iterations = 0; + gamma = 1e10; + do { + iterations++; + gammaold = gamma; + ions = 0; + f = 4.0 * Math.pow(gamma, 2) / avagadroNumber; + df = 8.0 * gamma / avagadroNumber; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getIonicCharge() != 0) { + ions++; + f += -getAlphaLR2() * componentArray[i].getNumberOfMolesInPhase() + / (getMolarVolume() * numberOfMolesInPhase * 1e-5) + * Math.pow(componentArray[i].getIonicCharge() + / (1.0 + gamma * componentArray[i].getLennardJonesMolecularDiameter() * 1e-10), + 2.0); + df += 2.0 * getAlphaLR2() * componentArray[i].getNumberOfMolesInPhase() + / (getMolarVolume() * numberOfMolesInPhase * 1e-5) + * Math.pow(componentArray[i].getIonicCharge(), 2.0) + * (componentArray[i].getLennardJonesMolecularDiameter() * 1e-10) / (Math.pow( + 1.0 + gamma * componentArray[i].getLennardJonesMolecularDiameter() * 1e-10, 3.0)); } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - int maxIterations = 1000; - do { - iterations++; - this.volInit(); - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / Math.pow(BonV, 2.0) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / Math.pow(BonV, 3.0) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - Math.pow(Btemp, 2.0) / Math.pow(BonV, 4.0) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += d1 * (1.0 + 0.5 * -1.0); - } else if (d1 / d2 > 1) { - BonV += d2; - double hnew = h + d2 * -h / d1; - if (Math.abs(hnew) > Math.abs(h)) { - logger.info("volume correction needed...."); - BonV = phase == 1 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - if (BonV > 1) { - BonV = 1.0 - 1.0e-6; - BonVold = 10; - } - if (BonV < 0) { - BonV = 1.0e-6; - BonVold = 10; - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - } while (Math.abs((BonV - BonVold) / BonV) > 1.0e-10 && iterations < maxIterations); - this.volInit(); - if (iterations >= maxIterations) { - throw new neqsim.util.exception.TooManyIterationsException(this, "molarVolume", - maxIterations); + } + gamma = ions > 0 ? gammaold - 0.8 * f / df : 0; + } while ((Math.abs(f) > 1e-10 && iterations < 1000) || iterations < 3); + // gamma = 1e9; + // System.out.println("gamma " +gamma + " iterations " + iterations); + return gamma; + } + + // public double calcShieldingParameter2(){ + // if(pt==1) return 0.0; + + // double df=0, f=0; + // int ions=0; + // int iterations=0; + // gamma=1e10; + // do{ + // iterations++; + // gammaold = gamma; + // ions=0; + // f = 4.0*Math.pow(gamma,2)/avagadroNumber; + // df = 8.0*gamma/avagadroNumber; + // for(int i=0;i0 ? gammaold - 0.8*f/df : 0; + // } + // while((Math.abs(f)>1e-10 && iterations<1000) || iterations<5); + // //System.out.println("gama " + gamma*1e-10); + // return gamma; + // } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + // double BonV = phase== 0 ? + // 2.0/(2.0+temperature/getPseudoCriticalTemperature()):0.1*pressure*getB()/(numberOfMolesInPhase*temperature*R); + double BonV = pt == PhaseType.LIQUID ? 0.99 : 1e-5; + + if (BonV < 0) { + BonV = 1.0e-6; + } + if (BonV > 1.0) { + BonV = 1.0 - 1.0e-6; + } + double BonVold = BonV; + double Btemp = 0; + double h = 0; + double dh = 0; + double dhh = 0; + double d1 = 0; + double d2 = 0; + Btemp = getB(); + if (Btemp <= 0) { + logger.info("b negative in volume calc"); + } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; + int maxIterations = 1000; + do { + iterations++; + this.volInit(); + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / Math.pow(BonV, 2.0) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / Math.pow(BonV, 3.0) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - Math.pow(Btemp, 2.0) / Math.pow(BonV, 4.0) + * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += d1 * (1.0 + 0.5 * -1.0); + } else if (d1 / d2 > 1) { + BonV += d2; + double hnew = h + d2 * -h / d1; + if (Math.abs(hnew) > Math.abs(h)) { + logger.info("volume correction needed...."); + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); - } - - // if(phaseType==0) System.out.println("density " + getDensity());//"BonV: " + - // BonV + " "+" itert: " + iterations +" " + " phase " + phaseType+ " " + h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); - - return getMolarVolume(); - } - - /** - *

- * calcW. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcW(PhaseInterface phase, double temperature, double pressure, int numbcomp) { - W = electrolyteMixingRule.calcW(phase, temperature, pressure, numbcomp); - return W; - } - - /** - *

- * calcWi. - *

- * - * @param compNumb a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcWi(int compNumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - return electrolyteMixingRule.calcWi(compNumb, phase, temperature, pressure, numbcomp); - } - - /** - *

- * calcWiT. - *

- * - * @param compNumb a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcWiT(int compNumb, PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - return electrolyteMixingRule.calcWiT(compNumb, phase, temperature, pressure, numbcomp); - } - - /** - *

- * calcWij. - *

- * - * @param compNumb a int - * @param compNumbj a int - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param temperature a double - * @param pressure a double - * @param numbcomp a int - * @return a double - */ - public double calcWij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, - double pressure, int numbcomp) { - return electrolyteMixingRule.calcWij(compNumb, compNumbj, phase, temperature, pressure, - numbcomp); - } - - /** {@inheritDoc} */ - @Override - public double calcDiElectricConstant(double temperature) { - return 1.0 + (getSolventDiElectricConstant() - 1.0) * (1.0 - getEpsIonic()) - / (1.0 + getEpsIonic() / 2.0); - } - - /** - *

- * calcDiElectricConstantdV. - *

- * - * @param temperature a double - * @return a double - */ - public double calcDiElectricConstantdV(double temperature) { - double X = (1.0 - getEpsIonic()) / (1.0 + getEpsIonic() / 2.0); - // double Y= getSolventDiElectricConstant(); 10-2002 - double Y = getSolventDiElectricConstant() - 1.0; - double dXdf = getEpsIonicdV() * -3.0 / 2.0 / Math.pow(getEpsIonic() / 2.0 + 1.0, 2.0); - double dYdf = 0; - return dYdf * X + Y * dXdf; - } - - /** - *

- * calcDiElectricConstantdVdV. - *

- * - * @param temperature a double - * @return a double - */ - public double calcDiElectricConstantdVdV(double temperature) { - double Y = getSolventDiElectricConstant() - 1.0; - double dXdf = getEpsIonicdVdV() * -3.0 / 2.0 / Math.pow(getEpsIonic() / 2.0 + 1.0, 2.0) - + getEpsIonicdV() * getEpsIonicdV() * 3.0 / 2.0 - / Math.pow(getEpsIonic() / 2.0 + 1.0, 3.0); - return Y * dXdf;// + Y*dXdf; - } - - /** {@inheritDoc} */ - @Override - public double calcDiElectricConstantdT(double temperature) { - double X = (1.0 - getEpsIonic()) / (1.0 + getEpsIonic() / 2.0); - double Y = getSolventDiElectricConstant() - 1.0; - double dXdf = 0; - double dYdf = getSolventDiElectricConstantdT(); - return dYdf * X + Y * dXdf; - } - - /** {@inheritDoc} */ - @Override - public double calcDiElectricConstantdTdT(double temperature) { - return getSolventDiElectricConstantdTdT() * (1.0 - epsIonic) / (1.0 + epsIonic / 2.0); - } - - /** - *

- * calcDiElectricConstantdTdV. - *

- * - * @param temperature a double - * @return a double - */ - public double calcDiElectricConstantdTdV(double temperature) { - double Y = getSolventDiElectricConstantdT(); - double dXdf = getEpsIonicdV() * -3.0 / 2.0 / Math.pow(getEpsIonic() / 2.0 + 1.0, 2.0); - return Y * dXdf; - } - - /** - *

- * calcBornX. - *

- * - * @return a double - */ - public double calcBornX() { - double ans = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getLennardJonesMolecularDiameter() > 0) { - ans += componentArray[i].getNumberOfMolesInPhase() - * Math.pow(componentArray[i].getIonicCharge(), 2.0) - / (componentArray[i].getLennardJonesMolecularDiameter() * 1e-10); - } - } - return ans; - } - - // Long Range term equations and derivatives - - /** - *

- * FLR. - *

- * - * @return a double - */ - public double FLR() { - double ans = 0.0; - ans -= (1.0 / (4.0 * pi) * getAlphaLR2() * getXLR()); - return ans + (numberOfMolesInPhase * getMolarVolume() * 1e-5 - * Math.pow(getShieldingParameter(), 3.0)) / (3.0 * pi * avagadroNumber); - } - - /** - *

- * dFLRdT. - *

- * - * @return a double - */ - public double dFLRdT() { - return dFdAlphaLR() * alphaLRdT; - } - - /** - *

- * dFLRdTdV. - *

- * - * @return a double - */ - public double dFLRdTdV() { - return (dFdAlphaLR() * alphaLRdTdV) * 1e-5; - } - - /** - *

- * dFLRdTdT. - *

- * - * @return a double - */ - public double dFLRdTdT() { - return dFdAlphaLR() * alphaLRdTdT; - } - - /** - *

- * dFLRdV. - *

- * - * @return a double - */ - public double dFLRdV() { - return (FLRV() + dFdAlphaLR() * alphaLRdV) * 1e-5;// + FLRGammaLR()*gammLRdV + - // 0*FLRXLR()*XLRdGammaLR()*gammLRdV)*1e-5; - } - - /** - *

- * dFLRdVdV. - *

- * - * @return a double - */ - public double dFLRdVdV() { - return (dFdAlphaLR() * alphaLRdVdV) * 1e-10; - } - - /** - *

- * dFLRdVdVdV. - *

- * - * @return a double - */ - public double dFLRdVdVdV() { - return 0.0; - } - - // first order derivatives - - /** - *

- * FLRXLR. - *

- * - * @return a double - */ - public double FLRXLR() { - return -getAlphaLR2() / (4.0 * pi); - } - - /** - *

- * FLRGammaLR. - *

- * - * @return a double - */ - public double FLRGammaLR() { - return 3.0 * numberOfMolesInPhase * getMolarVolume() * 1e-5 - * Math.pow(getShieldingParameter(), 2.0) / (3.0 * pi * avagadroNumber); - } - - /** - *

- * dFdAlphaLR. - *

- * - * @return a double - */ - public double dFdAlphaLR() { - return -1.0 / (4.0 * pi) * XLR; - } - - /** - *

- * dFdAlphaLRdV. - *

- * - * @return a double - */ - public double dFdAlphaLRdV() { - return 0.0; - } - - /** - *

- * dFdAlphaLRdX. - *

- * - * @return a double - */ - public double dFdAlphaLRdX() { - return -1.0 / (4.0 * pi); - } - - /** - *

- * dFdAlphaLRdGamma. - *

- * - * @return a double - */ - public double dFdAlphaLRdGamma() { - return 0; - } - - /** - *

- * FLRV. - *

- * - * @return a double - */ - public double FLRV() { - return Math.pow(getShieldingParameter(), 3.0) / (3.0 * pi * avagadroNumber); - } - - /** - *

- * FLRVV. - *

- * - * @return a double - */ - public double FLRVV() { - return 0.0; - } - - // second order derivatives - - /** - *

- * dFdAlphaLRdAlphaLR. - *

- * - * @return a double - */ - public double dFdAlphaLRdAlphaLR() { - return 0.0; - } - - /** - *

- * XLRdndn. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double XLRdndn(int i, int j) { - return 0.0; - } - - /** - *

- * XLRdGammaLR. - *

- * - * @return a double - */ - public double XLRdGammaLR() { - // if(phaseType==1) return 0.0; - double ans = 0.0; - double ans2 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - ans -= componentArray[i].getLennardJonesMolecularDiameter() * 1e-10 - * componentArray[i].getNumberOfMolesInPhase() - * Math.pow(componentArray[i].getIonicCharge(), 2.0) * getShieldingParameter() - / Math.pow( - 1.0 + getShieldingParameter() - * componentArray[i].getLennardJonesMolecularDiameter() * 1e-10, - 2.0); - ans2 += componentArray[i].getNumberOfMolesInPhase() - * Math.pow(componentArray[i].getIonicCharge(), 2.0) - / (1.0 + getShieldingParameter() - * componentArray[i].getLennardJonesMolecularDiameter() * 1e-10); - } - return ans2 + ans; - } - - /** - *

- * XBorndndn. - *

- * - * @param i a int - * @param j a int - * @return a double - */ - public double XBorndndn(int i, int j) { - return 0.0; - } - - // Short Range term equations and derivatives - /** - *

- * FSR2. - *

- * - * @return a double - */ - public double FSR2() { - return getW() / (getMolarVolume() * 1e-5 * numberOfMolesInPhase * (1.0 - eps)); - } - - /** - *

- * dFSR2dT. - *

- * - * @return a double - */ - public double dFSR2dT() { - return FSR2W() * WT; - } - - /** - *

- * dFSR2dTdT. - *

- * - * @return a double - */ - public double dFSR2dTdT() { - return FSR2W() * WTT; - } - - /** - *

- * dFSR2dV. - *

- * - * @return a double - */ - public double dFSR2dV() { - return (FSR2V() + FSR2eps() * getEpsdV()) * 1e-5; - } - - /** - *

- * dFSR2dTdV. - *

- * - * @return a double - */ - public double dFSR2dTdV() { - return (FSR2VW() * WT + FSR2epsW() * epsdV * WT) * 1e-5; - } - - /** - *

- * dFSR2dVdV. - *

- * - * @return a double - */ - public double dFSR2dVdV() { - return (FSR2VV() + 2.0 * FSR2epsV() * getEpsdV() + FSR2epseps() * Math.pow(getEpsdV(), 2.0) - + FSR2eps() * getEpsdVdV()) * 1e-10; - } - - /** - *

- * dFSR2dVdVdV. - *

- * - * @return a double - */ - public double dFSR2dVdVdV() { - return (FSR2VVV() + 3 * FSR2epsepsV() * Math.pow(getEpsdV(), 2.0) - + 3 * FSR2VVeps() * getEpsdV() + FSR2epsepseps() * Math.pow(getEpsdV(), 3.0)) - * 1e-15; - } - - // first order derivatives - /** - *

- * FSR2W. - *

- * - * @return a double - */ - public double FSR2W() { - return 1.0 / (getMolarVolume() * 1e-5 * numberOfMolesInPhase * (1.0 - eps)); - } - - /** - *

- * FSR2V. - *

- * - * @return a double - */ - public double FSR2V() { - return -W / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0) * (1.0 - eps)); - } - - /** - *

- * FSR2T. - *

- * - * @return a double - */ - public double FSR2T() { - return 0.0; - } - - /** - *

- * FSR2n. - *

- * - * @return a double - */ - public double FSR2n() { - return 0; - } - - /** - *

- * FSR2eps. - *

- * - * @return a double - */ - public double FSR2eps() { - return W / ((getMolarVolume() * 1e-5 * numberOfMolesInPhase) * Math.pow(1.0 - eps, 2.0)); - } - - // second order derivatives - - /** - *

- * FSR2nn. - *

- * - * @return a double - */ - public double FSR2nn() { - return 0; - } - - /** - *

- * FSR2nT. - *

- * - * @return a double - */ - public double FSR2nT() { - return 0; - } - - /** - *

- * FSR2nV. - *

- * - * @return a double - */ - public double FSR2nV() { - return 0; - } - - /** - *

- * FSR2neps. - *

- * - * @return a double - */ - public double FSR2neps() { - return 0; - } - - /** - *

- * FSR2nW. - *

- * - * @return a double - */ - public double FSR2nW() { - return 0; - } - - /** - *

- * FSR2Tn. - *

- * - * @return a double - */ - public double FSR2Tn() { - return 0; - } - - /** - *

- * FSR2TT. - *

- * - * @return a double - */ - public double FSR2TT() { - return 0; - } - - /** - *

- * FSR2TV. - *

- * - * @return a double - */ - public double FSR2TV() { - return 0; - } - - /** - *

- * FSR2Teps. - *

- * - * @return a double - */ - public double FSR2Teps() { - return 0; - } - - /** - *

- * FSR2TW. - *

- * - * @return a double - */ - public double FSR2TW() { - return 0; - } - - /** - *

- * FSR2VV. - *

- * - * @return a double - */ - public double FSR2VV() { - return 2.0 * W - / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 3.0) * (1.0 - eps)); - } - - /** - *

- * FSR2epsV. - *

- * - * @return a double - */ - public double FSR2epsV() { - return -W / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0) - * Math.pow((1.0 - eps), 2.0)); - } - - /** - *

- * FSR2epsW. - *

- * - * @return a double - */ - public double FSR2epsW() { - return 1.0 / (getMolarVolume() * 1e-5 * numberOfMolesInPhase * Math.pow(1.0 - eps, 2.0)); - } - - /** - *

- * FSR2WW. - *

- * - * @return a double - */ - public double FSR2WW() { - return 0.0; - } - - /** - *

- * FSR2VW. - *

- * - * @return a double - */ - public double FSR2VW() { - return -1.0 / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0) * (1.0 - eps)); - } - - /** - *

- * FSR2epseps. - *

- * - * @return a double - */ - public double FSR2epseps() { - return 2.0 * W - / ((getMolarVolume() * 1e-5 * numberOfMolesInPhase) * Math.pow(1.0 - eps, 3.0)); - } - - /** - *

- * FSR2VVV. - *

- * - * @return a double - */ - public double FSR2VVV() { - return -6.0 * W - / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 4.0) * (1.0 - eps)); - } - - // third order derivatives - /** - *

- * FSR2epsepsV. - *

- * - * @return a double - */ - public double FSR2epsepsV() { - return -2.0 * W / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0) - * Math.pow((1 - eps), 3.0)); - } - - /** - *

- * FSR2VVeps. - *

- * - * @return a double - */ - public double FSR2VVeps() { - return 2.0 * W / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 3.0) - * Math.pow((1 - eps), 2.0)); - } - - /** - *

- * FSR2epsepseps. - *

- * - * @return a double - */ - public double FSR2epsepseps() { - return 6.0 * W - / ((getMolarVolume() * 1e-5 * numberOfMolesInPhase) * Math.pow(1.0 - eps, 4.0)); - } - - // Born term equations and derivatives - /** - *

- * FBorn. - *

- * - * @return a double - */ - public double FBorn() { - return (avagadroNumber * electronCharge * electronCharge - / (4.0 * pi * vacumPermittivity * R * temperature)) - * (1.0 / getSolventDiElectricConstant() - 1.0) * bornX; - } - - /** - *

- * dFBorndT. - *

- * - * @return a double - */ - public double dFBorndT() { - return FBornT() + FBornD() * solventDiElectricConstantdT; - } - - /** - *

- * dFBorndTdT. - *

- * - * @return a double - */ - public double dFBorndTdT() { - return FBornTT() + FBornTD() * solventDiElectricConstantdT; - } - - // first order derivatives - /** - *

- * FBornT. - *

- * - * @return a double - */ - public double FBornT() { - return -(avagadroNumber * electronCharge * electronCharge - / (4.0 * pi * vacumPermittivity * R * temperature * temperature)) - * (1.0 / getSolventDiElectricConstant() - 1.0) * bornX; - } - - /** - *

- * FBornX. - *

- * - * @return a double - */ - public double FBornX() { - return (avagadroNumber * electronCharge * electronCharge - / (4.0 * pi * vacumPermittivity * R * temperature)) - * (1.0 / getSolventDiElectricConstant() - 1.0); - } - - /** - *

- * FBornD. - *

- * - * @return a double - */ - public double FBornD() { - return -(avagadroNumber * electronCharge * electronCharge - / (4.0 * pi * vacumPermittivity * R * temperature)) * 1.0 - / Math.pow(getSolventDiElectricConstant(), 2.0) * bornX; - } - - // second order derivatives - - /** - *

- * FBornTT. - *

- * - * @return a double - */ - public double FBornTT() { - return 2.0 - * (avagadroNumber * electronCharge * electronCharge - / (4.0 * pi * vacumPermittivity * R * temperature * temperature - * temperature)) - * (1.0 / getSolventDiElectricConstant() - 1.0) * bornX; - } - - /** - *

- * FBornTD. - *

- * - * @return a double - */ - public double FBornTD() { - return (avagadroNumber * electronCharge * electronCharge - / (4.0 * pi * vacumPermittivity * R * temperature * temperature)) * 1.0 - / Math.pow(getSolventDiElectricConstant(), 2.0) * bornX; - } - - /** - *

- * FBornTX. - *

- * - * @return a double - */ - public double FBornTX() { - return -(avagadroNumber * electronCharge * electronCharge - / (4.0 * pi * vacumPermittivity * R * temperature * temperature)) - * (1.0 / getSolventDiElectricConstant() - 1.0); - } - - /** - *

- * FBornDD. - *

- * - * @return a double - */ - public double FBornDD() { - return 2.0 - * (avagadroNumber * electronCharge * electronCharge - / (4.0 * pi * vacumPermittivity * R * temperature)) - * 1.0 / Math.pow(getSolventDiElectricConstant(), 3.0) * bornX; - } - - /** - *

- * FBornDX. - *

- * - * @return a double - */ - public double FBornDX() { - return -(avagadroNumber * electronCharge * electronCharge - / (4.0 * pi * vacumPermittivity * R * temperature)) * 1.0 - / Math.pow(getSolventDiElectricConstant(), 2.0); - } - - /** - *

- * FBornXX. - *

- * - * @return a double - */ - public double FBornXX() { - return 0.0; - } - - /** - *

- * Getter for the field eps. - *

- * - * @return a double - */ - public double getEps() { - return eps; - } - - /** - *

- * Getter for the field epsIonic. - *

- * - * @return a double - */ - public double getEpsIonic() { - return epsIonic; - } - - /** - *

- * Getter for the field epsIonicdV. - *

- * - * @return a double - */ - public double getEpsIonicdV() { - return epsIonicdV; - } - - /** - *

- * Getter for the field epsdV. - *

- * - * @return a double - */ - public double getEpsdV() { - return epsdV; - } - - /** - *

- * Getter for the field epsdVdV. - *

- * - * @return a double - */ - public double getEpsdVdV() { - return epsdVdV; - } - - /** - *

- * Getter for the field solventDiElectricConstant. - *

- * - * @return a double - */ - public double getSolventDiElectricConstant() { - return solventDiElectricConstant; - } - - /** - *

- * Getter for the field solventDiElectricConstantdT. - *

- * - * @return a double - */ - public double getSolventDiElectricConstantdT() { - return solventDiElectricConstantdT; - } - - /** - *

- * Getter for the field solventDiElectricConstantdTdT. - *

- * - * @return a double - */ - public double getSolventDiElectricConstantdTdT() { - return solventDiElectricConstantdTdT; - } - - /** - *

- * Getter for the field alphaLR2. - *

- * - * @return a double - */ - public double getAlphaLR2() { - return alphaLR2; - } - - /** - *

- * getW. - *

- * - * @return a double - */ - public double getW() { - return W; - } - - /** - *

- * getWT. - *

- * - * @return a double - */ - public double getWT() { - return WT; - } - - /** - *

- * Getter for the field diElectricConstantdT. - *

- * - * @return a double - */ - public double getDiElectricConstantdT() { - return diElectricConstantdT; - } - - /** - *

- * Getter for the field diElectricConstantdV. - *

- * - * @return a double - */ - public double getDiElectricConstantdV() { - return diElectricConstantdV; - } - - /** - *

- * getXLR. - *

- * - * @return a double - */ - public double getXLR() { - return XLR; - } - - /** - *

- * Getter for the field shieldingParameter. - *

- * - * @return a double - */ - public double getShieldingParameter() { - return shieldingParameter; - } - - /** - *

- * getAlphaLRT. - *

- * - * @return a double - */ - public double getAlphaLRT() { - return alphaLRdT; - } - - /** - *

- * getAlphaLRV. - *

- * - * @return a double - */ - public double getAlphaLRV() { - return alphaLRdV; - } - - /** - *

- * getDielectricT. - *

- * - * @return a double - */ - public double getDielectricT() { - return diElectricConstantdT; - } - - /** - *

- * getDielectricV. - *

- * - * @return a double - */ - public double getDielectricV() { - return diElectricConstantdV; - } - - /** - *

- * getDielectricConstant. - *

- * - * @return a double - */ - public double getDielectricConstant() { - return diElectricConstant; - } - - /** - *

- * setFurstIonicCoefficient. - *

- * - * @param params an array of {@link double} objects - */ - public void setFurstIonicCoefficient(double[] params) {} - - /** - *

- * Getter for the field epsIonicdVdV. - *

- * - * @return a double - */ - public double getEpsIonicdVdV() { - return epsIonicdVdV; - } + } + + if (BonV > 1) { + BonV = 1.0 - 1.0e-6; + BonVold = 10; + } + if (BonV < 0) { + BonV = 1.0e-6; + BonVold = 10; + } + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while (Math.abs((BonV - BonVold) / BonV) > 1.0e-10 && iterations < maxIterations); + this.volInit(); + if (iterations >= maxIterations) { + throw new neqsim.util.exception.TooManyIterationsException(this, "molarVolume", + maxIterations); + } + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); + } + + // if(pt==0) System.out.println("density " + getDensity()); //"BonV: " + + // BonV + " "+" itert: " + iterations +" " + " phase " + pt+ " " + h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); + + return getMolarVolume(); + } + + /** + *

+ * calcW. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcW(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + W = electrolyteMixingRule.calcW(phase, temperature, pressure, numbcomp); + return W; + } + + /** + *

+ * calcWi. + *

+ * + * @param compNumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcWi(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + return electrolyteMixingRule.calcWi(compNumb, phase, temperature, pressure, numbcomp); + } + + /** + *

+ * calcWiT. + *

+ * + * @param compNumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcWiT(int compNumb, PhaseInterface phase, double temperature, double pressure, + int numbcomp) { + return electrolyteMixingRule.calcWiT(compNumb, phase, temperature, pressure, numbcomp); + } + + /** + *

+ * calcWij. + *

+ * + * @param compNumb a int + * @param compNumbj a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcWij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, + double pressure, int numbcomp) { + return electrolyteMixingRule.calcWij(compNumb, compNumbj, phase, temperature, pressure, + numbcomp); + } + + /** {@inheritDoc} */ + @Override + public double calcDiElectricConstant(double temperature) { + return 1.0 + (getSolventDiElectricConstant() - 1.0) * (1.0 - getEpsIonic()) + / (1.0 + getEpsIonic() / 2.0); + } + + /** + *

+ * calcDiElectricConstantdV. + *

+ * + * @param temperature a double + * @return a double + */ + public double calcDiElectricConstantdV(double temperature) { + double X = (1.0 - getEpsIonic()) / (1.0 + getEpsIonic() / 2.0); + // double Y= getSolventDiElectricConstant(); 10-2002 + double Y = getSolventDiElectricConstant() - 1.0; + double dXdf = getEpsIonicdV() * -3.0 / 2.0 / Math.pow(getEpsIonic() / 2.0 + 1.0, 2.0); + double dYdf = 0; + return dYdf * X + Y * dXdf; + } + + /** + *

+ * calcDiElectricConstantdVdV. + *

+ * + * @param temperature a double + * @return a double + */ + public double calcDiElectricConstantdVdV(double temperature) { + double Y = getSolventDiElectricConstant() - 1.0; + double dXdf = getEpsIonicdVdV() * -3.0 / 2.0 / Math.pow(getEpsIonic() / 2.0 + 1.0, 2.0) + + getEpsIonicdV() * getEpsIonicdV() * 3.0 / 2.0 / Math.pow(getEpsIonic() / 2.0 + 1.0, 3.0); + return Y * dXdf; // + Y*dXdf; + } + + /** {@inheritDoc} */ + @Override + public double calcDiElectricConstantdT(double temperature) { + double X = (1.0 - getEpsIonic()) / (1.0 + getEpsIonic() / 2.0); + double Y = getSolventDiElectricConstant() - 1.0; + double dXdf = 0; + double dYdf = getSolventDiElectricConstantdT(); + return dYdf * X + Y * dXdf; + } + + /** {@inheritDoc} */ + @Override + public double calcDiElectricConstantdTdT(double temperature) { + return getSolventDiElectricConstantdTdT() * (1.0 - epsIonic) / (1.0 + epsIonic / 2.0); + } + + /** + *

+ * calcDiElectricConstantdTdV. + *

+ * + * @param temperature a double + * @return a double + */ + public double calcDiElectricConstantdTdV(double temperature) { + double Y = getSolventDiElectricConstantdT(); + double dXdf = getEpsIonicdV() * -3.0 / 2.0 / Math.pow(getEpsIonic() / 2.0 + 1.0, 2.0); + return Y * dXdf; + } + + /** + *

+ * calcBornX. + *

+ * + * @return a double + */ + public double calcBornX() { + double ans = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getLennardJonesMolecularDiameter() > 0) { + ans += componentArray[i].getNumberOfMolesInPhase() + * Math.pow(componentArray[i].getIonicCharge(), 2.0) + / (componentArray[i].getLennardJonesMolecularDiameter() * 1e-10); + } + } + return ans; + } + + // Long Range term equations and derivatives + + /** + *

+ * FLR. + *

+ * + * @return a double + */ + public double FLR() { + double ans = 0.0; + ans -= (1.0 / (4.0 * pi) * getAlphaLR2() * getXLR()); + return ans + + (numberOfMolesInPhase * getMolarVolume() * 1e-5 * Math.pow(getShieldingParameter(), 3.0)) + / (3.0 * pi * avagadroNumber); + } + + /** + *

+ * dFLRdT. + *

+ * + * @return a double + */ + public double dFLRdT() { + return dFdAlphaLR() * alphaLRdT; + } + + /** + *

+ * dFLRdTdV. + *

+ * + * @return a double + */ + public double dFLRdTdV() { + return (dFdAlphaLR() * alphaLRdTdV) * 1e-5; + } + + /** + *

+ * dFLRdTdT. + *

+ * + * @return a double + */ + public double dFLRdTdT() { + return dFdAlphaLR() * alphaLRdTdT; + } + + /** + *

+ * dFLRdV. + *

+ * + * @return a double + */ + public double dFLRdV() { + return (FLRV() + dFdAlphaLR() * alphaLRdV) * 1e-5; // + FLRGammaLR()*gammLRdV + + // 0*FLRXLR()*XLRdGammaLR()*gammLRdV)*1e-5; + } + + /** + *

+ * dFLRdVdV. + *

+ * + * @return a double + */ + public double dFLRdVdV() { + return (dFdAlphaLR() * alphaLRdVdV) * 1e-10; + } + + /** + *

+ * dFLRdVdVdV. + *

+ * + * @return a double + */ + public double dFLRdVdVdV() { + return 0.0; + } + + // first order derivatives + + /** + *

+ * FLRXLR. + *

+ * + * @return a double + */ + public double FLRXLR() { + return -getAlphaLR2() / (4.0 * pi); + } + + /** + *

+ * FLRGammaLR. + *

+ * + * @return a double + */ + public double FLRGammaLR() { + return 3.0 * numberOfMolesInPhase * getMolarVolume() * 1e-5 + * Math.pow(getShieldingParameter(), 2.0) / (3.0 * pi * avagadroNumber); + } + + /** + *

+ * dFdAlphaLR. + *

+ * + * @return a double + */ + public double dFdAlphaLR() { + return -1.0 / (4.0 * pi) * XLR; + } + + /** + *

+ * dFdAlphaLRdV. + *

+ * + * @return a double + */ + public double dFdAlphaLRdV() { + return 0.0; + } + + /** + *

+ * dFdAlphaLRdX. + *

+ * + * @return a double + */ + public double dFdAlphaLRdX() { + return -1.0 / (4.0 * pi); + } + + /** + *

+ * dFdAlphaLRdGamma. + *

+ * + * @return a double + */ + public double dFdAlphaLRdGamma() { + return 0; + } + + /** + *

+ * FLRV. + *

+ * + * @return a double + */ + public double FLRV() { + return Math.pow(getShieldingParameter(), 3.0) / (3.0 * pi * avagadroNumber); + } + + /** + *

+ * FLRVV. + *

+ * + * @return a double + */ + public double FLRVV() { + return 0.0; + } + + // second order derivatives + + /** + *

+ * dFdAlphaLRdAlphaLR. + *

+ * + * @return a double + */ + public double dFdAlphaLRdAlphaLR() { + return 0.0; + } + + /** + *

+ * XLRdndn. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double XLRdndn(int i, int j) { + return 0.0; + } + + /** + *

+ * XLRdGammaLR. + *

+ * + * @return a double + */ + public double XLRdGammaLR() { + // if(pt==1) return 0.0; + double ans = 0.0; + double ans2 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + ans -= componentArray[i].getLennardJonesMolecularDiameter() * 1e-10 + * componentArray[i].getNumberOfMolesInPhase() + * Math.pow(componentArray[i].getIonicCharge(), 2.0) * getShieldingParameter() + / Math.pow(1.0 + getShieldingParameter() + * componentArray[i].getLennardJonesMolecularDiameter() * 1e-10, 2.0); + ans2 += componentArray[i].getNumberOfMolesInPhase() + * Math.pow(componentArray[i].getIonicCharge(), 2.0) / (1.0 + getShieldingParameter() + * componentArray[i].getLennardJonesMolecularDiameter() * 1e-10); + } + return ans2 + ans; + } + + /** + *

+ * XBorndndn. + *

+ * + * @param i a int + * @param j a int + * @return a double + */ + public double XBorndndn(int i, int j) { + return 0.0; + } + + // Short Range term equations and derivatives + /** + *

+ * FSR2. + *

+ * + * @return a double + */ + public double FSR2() { + return getW() / (getMolarVolume() * 1e-5 * numberOfMolesInPhase * (1.0 - eps)); + } + + /** + *

+ * dFSR2dT. + *

+ * + * @return a double + */ + public double dFSR2dT() { + return FSR2W() * WT; + } + + /** + *

+ * dFSR2dTdT. + *

+ * + * @return a double + */ + public double dFSR2dTdT() { + return FSR2W() * WTT; + } + + /** + *

+ * dFSR2dV. + *

+ * + * @return a double + */ + public double dFSR2dV() { + return (FSR2V() + FSR2eps() * getEpsdV()) * 1e-5; + } + + /** + *

+ * dFSR2dTdV. + *

+ * + * @return a double + */ + public double dFSR2dTdV() { + return (FSR2VW() * WT + FSR2epsW() * epsdV * WT) * 1e-5; + } + + /** + *

+ * dFSR2dVdV. + *

+ * + * @return a double + */ + public double dFSR2dVdV() { + return (FSR2VV() + 2.0 * FSR2epsV() * getEpsdV() + FSR2epseps() * Math.pow(getEpsdV(), 2.0) + + FSR2eps() * getEpsdVdV()) * 1e-10; + } + + /** + *

+ * dFSR2dVdVdV. + *

+ * + * @return a double + */ + public double dFSR2dVdVdV() { + return (FSR2VVV() + 3 * FSR2epsepsV() * Math.pow(getEpsdV(), 2.0) + 3 * FSR2VVeps() * getEpsdV() + + FSR2epsepseps() * Math.pow(getEpsdV(), 3.0)) * 1e-15; + } + + // first order derivatives + /** + *

+ * FSR2W. + *

+ * + * @return a double + */ + public double FSR2W() { + return 1.0 / (getMolarVolume() * 1e-5 * numberOfMolesInPhase * (1.0 - eps)); + } + + /** + *

+ * FSR2V. + *

+ * + * @return a double + */ + public double FSR2V() { + return -W / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0) * (1.0 - eps)); + } + + /** + *

+ * FSR2T. + *

+ * + * @return a double + */ + public double FSR2T() { + return 0.0; + } + + /** + *

+ * FSR2n. + *

+ * + * @return a double + */ + public double FSR2n() { + return 0; + } + + /** + *

+ * FSR2eps. + *

+ * + * @return a double + */ + public double FSR2eps() { + return W / ((getMolarVolume() * 1e-5 * numberOfMolesInPhase) * Math.pow(1.0 - eps, 2.0)); + } + + // second order derivatives + + /** + *

+ * FSR2nn. + *

+ * + * @return a double + */ + public double FSR2nn() { + return 0; + } + + /** + *

+ * FSR2nT. + *

+ * + * @return a double + */ + public double FSR2nT() { + return 0; + } + + /** + *

+ * FSR2nV. + *

+ * + * @return a double + */ + public double FSR2nV() { + return 0; + } + + /** + *

+ * FSR2neps. + *

+ * + * @return a double + */ + public double FSR2neps() { + return 0; + } + + /** + *

+ * FSR2nW. + *

+ * + * @return a double + */ + public double FSR2nW() { + return 0; + } + + /** + *

+ * FSR2Tn. + *

+ * + * @return a double + */ + public double FSR2Tn() { + return 0; + } + + /** + *

+ * FSR2TT. + *

+ * + * @return a double + */ + public double FSR2TT() { + return 0; + } + + /** + *

+ * FSR2TV. + *

+ * + * @return a double + */ + public double FSR2TV() { + return 0; + } + + /** + *

+ * FSR2Teps. + *

+ * + * @return a double + */ + public double FSR2Teps() { + return 0; + } + + /** + *

+ * FSR2TW. + *

+ * + * @return a double + */ + public double FSR2TW() { + return 0; + } + + /** + *

+ * FSR2VV. + *

+ * + * @return a double + */ + public double FSR2VV() { + return 2.0 * W / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 3.0) * (1.0 - eps)); + } + + /** + *

+ * FSR2epsV. + *

+ * + * @return a double + */ + public double FSR2epsV() { + return -W / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0) + * Math.pow((1.0 - eps), 2.0)); + } + + /** + *

+ * FSR2epsW. + *

+ * + * @return a double + */ + public double FSR2epsW() { + return 1.0 / (getMolarVolume() * 1e-5 * numberOfMolesInPhase * Math.pow(1.0 - eps, 2.0)); + } + + /** + *

+ * FSR2WW. + *

+ * + * @return a double + */ + public double FSR2WW() { + return 0.0; + } + + /** + *

+ * FSR2VW. + *

+ * + * @return a double + */ + public double FSR2VW() { + return -1.0 / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0) * (1.0 - eps)); + } + + /** + *

+ * FSR2epseps. + *

+ * + * @return a double + */ + public double FSR2epseps() { + return 2.0 * W / ((getMolarVolume() * 1e-5 * numberOfMolesInPhase) * Math.pow(1.0 - eps, 3.0)); + } + + /** + *

+ * FSR2VVV. + *

+ * + * @return a double + */ + public double FSR2VVV() { + return -6.0 * W / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 4.0) * (1.0 - eps)); + } + + // third order derivatives + /** + *

+ * FSR2epsepsV. + *

+ * + * @return a double + */ + public double FSR2epsepsV() { + return -2.0 * W / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 2.0) + * Math.pow((1 - eps), 3.0)); + } + + /** + *

+ * FSR2VVeps. + *

+ * + * @return a double + */ + public double FSR2VVeps() { + return 2.0 * W / (Math.pow(getMolarVolume() * 1e-5 * numberOfMolesInPhase, 3.0) + * Math.pow((1 - eps), 2.0)); + } + + /** + *

+ * FSR2epsepseps. + *

+ * + * @return a double + */ + public double FSR2epsepseps() { + return 6.0 * W / ((getMolarVolume() * 1e-5 * numberOfMolesInPhase) * Math.pow(1.0 - eps, 4.0)); + } + + // Born term equations and derivatives + /** + *

+ * FBorn. + *

+ * + * @return a double + */ + public double FBorn() { + return (avagadroNumber * electronCharge * electronCharge + / (4.0 * pi * vacumPermittivity * R * temperature)) + * (1.0 / getSolventDiElectricConstant() - 1.0) * bornX; + } + + /** + *

+ * dFBorndT. + *

+ * + * @return a double + */ + public double dFBorndT() { + return FBornT() + FBornD() * solventDiElectricConstantdT; + } + + /** + *

+ * dFBorndTdT. + *

+ * + * @return a double + */ + public double dFBorndTdT() { + return FBornTT() + FBornTD() * solventDiElectricConstantdT; + } + + // first order derivatives + /** + *

+ * FBornT. + *

+ * + * @return a double + */ + public double FBornT() { + return -(avagadroNumber * electronCharge * electronCharge + / (4.0 * pi * vacumPermittivity * R * temperature * temperature)) + * (1.0 / getSolventDiElectricConstant() - 1.0) * bornX; + } + + /** + *

+ * FBornX. + *

+ * + * @return a double + */ + public double FBornX() { + return (avagadroNumber * electronCharge * electronCharge + / (4.0 * pi * vacumPermittivity * R * temperature)) + * (1.0 / getSolventDiElectricConstant() - 1.0); + } + + /** + *

+ * FBornD. + *

+ * + * @return a double + */ + public double FBornD() { + return -(avagadroNumber * electronCharge * electronCharge + / (4.0 * pi * vacumPermittivity * R * temperature)) * 1.0 + / Math.pow(getSolventDiElectricConstant(), 2.0) * bornX; + } + + // second order derivatives + + /** + *

+ * FBornTT. + *

+ * + * @return a double + */ + public double FBornTT() { + return 2.0 + * (avagadroNumber * electronCharge * electronCharge + / (4.0 * pi * vacumPermittivity * R * temperature * temperature * temperature)) + * (1.0 / getSolventDiElectricConstant() - 1.0) * bornX; + } + + /** + *

+ * FBornTD. + *

+ * + * @return a double + */ + public double FBornTD() { + return (avagadroNumber * electronCharge * electronCharge + / (4.0 * pi * vacumPermittivity * R * temperature * temperature)) * 1.0 + / Math.pow(getSolventDiElectricConstant(), 2.0) * bornX; + } + + /** + *

+ * FBornTX. + *

+ * + * @return a double + */ + public double FBornTX() { + return -(avagadroNumber * electronCharge * electronCharge + / (4.0 * pi * vacumPermittivity * R * temperature * temperature)) + * (1.0 / getSolventDiElectricConstant() - 1.0); + } + + /** + *

+ * FBornDD. + *

+ * + * @return a double + */ + public double FBornDD() { + return 2.0 + * (avagadroNumber * electronCharge * electronCharge + / (4.0 * pi * vacumPermittivity * R * temperature)) + * 1.0 / Math.pow(getSolventDiElectricConstant(), 3.0) * bornX; + } + + /** + *

+ * FBornDX. + *

+ * + * @return a double + */ + public double FBornDX() { + return -(avagadroNumber * electronCharge * electronCharge + / (4.0 * pi * vacumPermittivity * R * temperature)) * 1.0 + / Math.pow(getSolventDiElectricConstant(), 2.0); + } + + /** + *

+ * FBornXX. + *

+ * + * @return a double + */ + public double FBornXX() { + return 0.0; + } + + /** + *

+ * Getter for the field eps. + *

+ * + * @return a double + */ + public double getEps() { + return eps; + } + + /** + *

+ * Getter for the field epsIonic. + *

+ * + * @return a double + */ + public double getEpsIonic() { + return epsIonic; + } + + /** + *

+ * Getter for the field epsIonicdV. + *

+ * + * @return a double + */ + public double getEpsIonicdV() { + return epsIonicdV; + } + + /** + *

+ * Getter for the field epsdV. + *

+ * + * @return a double + */ + public double getEpsdV() { + return epsdV; + } + + /** + *

+ * Getter for the field epsdVdV. + *

+ * + * @return a double + */ + public double getEpsdVdV() { + return epsdVdV; + } + + /** + *

+ * Getter for the field solventDiElectricConstant. + *

+ * + * @return a double + */ + public double getSolventDiElectricConstant() { + return solventDiElectricConstant; + } + + /** + *

+ * Getter for the field solventDiElectricConstantdT. + *

+ * + * @return a double + */ + public double getSolventDiElectricConstantdT() { + return solventDiElectricConstantdT; + } + + /** + *

+ * Getter for the field solventDiElectricConstantdTdT. + *

+ * + * @return a double + */ + public double getSolventDiElectricConstantdTdT() { + return solventDiElectricConstantdTdT; + } + + /** + *

+ * Getter for the field alphaLR2. + *

+ * + * @return a double + */ + public double getAlphaLR2() { + return alphaLR2; + } + + /** + *

+ * getW. + *

+ * + * @return a double + */ + public double getW() { + return W; + } + + /** + *

+ * getWT. + *

+ * + * @return a double + */ + public double getWT() { + return WT; + } + + /** + *

+ * Getter for the field diElectricConstantdT. + *

+ * + * @return a double + */ + public double getDiElectricConstantdT() { + return diElectricConstantdT; + } + + /** + *

+ * Getter for the field diElectricConstantdV. + *

+ * + * @return a double + */ + public double getDiElectricConstantdV() { + return diElectricConstantdV; + } + + /** + *

+ * getXLR. + *

+ * + * @return a double + */ + public double getXLR() { + return XLR; + } + + /** + *

+ * Getter for the field shieldingParameter. + *

+ * + * @return a double + */ + public double getShieldingParameter() { + return shieldingParameter; + } + + /** + *

+ * getAlphaLRT. + *

+ * + * @return a double + */ + public double getAlphaLRT() { + return alphaLRdT; + } + + /** + *

+ * getAlphaLRV. + *

+ * + * @return a double + */ + public double getAlphaLRV() { + return alphaLRdV; + } + + /** + *

+ * getDielectricT. + *

+ * + * @return a double + */ + public double getDielectricT() { + return diElectricConstantdT; + } + + /** + *

+ * getDielectricV. + *

+ * + * @return a double + */ + public double getDielectricV() { + return diElectricConstantdV; + } + + /** + *

+ * getDielectricConstant. + *

+ * + * @return a double + */ + public double getDielectricConstant() { + return diElectricConstant; + } + + /** + *

+ * setFurstIonicCoefficient. + *

+ * + * @param params an array of type double + */ + public void setFurstIonicCoefficient(double[] params) {} + + /** + *

+ * Getter for the field epsIonicdVdV. + *

+ * + * @return a double + */ + public double getEpsIonicdVdV() { + return epsIonicdVdV; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosMod2004.java b/src/main/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosMod2004.java index 5cdd4741bd..de1b666e99 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosMod2004.java +++ b/src/main/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosMod2004.java @@ -3,6 +3,7 @@ * * Created on 26. februar 2001, 17:54 */ + package neqsim.thermo.phase; import org.apache.logging.log4j.LogManager; @@ -19,18 +20,42 @@ */ public class PhaseModifiedFurstElectrolyteEosMod2004 extends PhaseSrkEos { private static final long serialVersionUID = 1000; - double gammaold = 0, alphaLRdTdV = 0; - double W = 0, WT = 0, WTT = 0, eps = 0, epsdV = 0, epsdVdV = 0, epsIonic = 0, bornX = 0, - epsIonicdV = 0, epsIonicdVdV = 0, alphaLR2 = 0, alphaLRdT = 0.0, alphaLRdTdT = 0.0, - alphaLRdV = 0.0, XLR = 0, solventDiElectricConstant = 0, solventDiElectricConstantdT = 0.0, - solventDiElectricConstantdTdT = 0, shieldingParameter = 0; - double gamma = 0, diElectricConstantdV = 0, diElectricConstantdVdV = 0, alphaLRdVdV = 0, - diElectricConstantdT = 0, diElectricConstantdTdT = 0.0, diElectricConstantdTdV = 0; + static Logger logger = LogManager.getLogger(PhaseModifiedFurstElectrolyteEos.class); + + double gammaold = 0; + double alphaLRdTdV = 0; + double W = 0; + double WT = 0; + double WTT = 0; + double eps = 0; + double epsdV = 0; + double epsdVdV = 0; + double epsIonic = 0; + double bornX = 0; + double epsIonicdV = 0; + double epsIonicdVdV = 0; + double alphaLR2 = 0; + double alphaLRdT = 0.0; + double alphaLRdTdT = 0.0; + double alphaLRdV = 0.0; + double XLR = 0; + double solventDiElectricConstant = 0; + double solventDiElectricConstantdT = 0.0; + double solventDiElectricConstantdTdT = 0; + double shieldingParameter = 0; + double gamma = 0; + double diElectricConstantdV = 0; + double diElectricConstantdVdV = 0; + double alphaLRdVdV = 0; + double diElectricConstantdT = 0; + double diElectricConstantdTdT = 0.0; + double diElectricConstantdTdV = 0; neqsim.thermo.mixingRule.ElectrolyteMixingRulesInterface electrolyteMixingRule; - double sr2On = 1.0, lrOn = 1.0, bornOn = 1.0; - static Logger logger = LogManager.getLogger(PhaseModifiedFurstElectrolyteEosMod2004.class); + double sr2On = 1.0; + double lrOn = 1.0; + double bornOn = 1.0; // double gammLRdV=0.0; - // PhaseInterface[] refPhase;// = new PhaseInterface[10]; + // PhaseInterface[] refPhase; // = new PhaseInterface[10]; /** *

@@ -71,8 +96,8 @@ public PhaseModifiedFurstElectrolyteEosMod2004 clone() { PhaseModifiedFurstElectrolyteEosMod2004 clonedPhase = null; try { clonedPhase = (PhaseModifiedFurstElectrolyteEosMod2004) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } // clonedPhase.electrolyteMixingRule = // (thermo.mixingRule.ElectrolyteMixingRulesInterface) @@ -83,10 +108,10 @@ public PhaseModifiedFurstElectrolyteEosMod2004 clone() { /** {@inheritDoc} */ @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - if (type == 0) { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + if (initType == 0) { electrolyteMixingRule = mixSelect.getElectrolyteMixingRule(this); } } @@ -166,12 +191,11 @@ public void volInit() { /** {@inheritDoc} */ @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); componentArray[compNumber] = - new neqsim.thermo.component.ComponentModifiedFurstElectrolyteEosMod2004(componentName, - moles, molesInPhase, compNumber); + new neqsim.thermo.component.ComponentModifiedFurstElectrolyteEosMod2004(name, moles, + molesInPhase, compNumber); } /** @@ -183,7 +207,8 @@ public void addcomponent(String componentName, double moles, double molesInPhase * @return a double */ public double calcSolventDiElectricConstant(double temperature) { - double ans1 = 0.0, ans2 = 1e-50; + double ans1 = 0.0; + double ans2 = 1e-50; for (int i = 0; i < numberOfComponents; i++) { if (componentArray[i].getIonicCharge() == 0) { ans1 += componentArray[i].getNumberOfMolesInPhase() @@ -203,7 +228,8 @@ public double calcSolventDiElectricConstant(double temperature) { * @return a double */ public double calcSolventDiElectricConstantdT(double temperature) { - double ans1 = 0.0, ans2 = 1e-50; + double ans1 = 0.0; + double ans2 = 1e-50; for (int i = 0; i < numberOfComponents; i++) { if (componentArray[i].getIonicCharge() == 0) { ans1 += componentArray[i].getNumberOfMolesInPhase() @@ -223,7 +249,8 @@ public double calcSolventDiElectricConstantdT(double temperature) { * @return a double */ public double calcSolventDiElectricConstantdTdT(double temperature) { - double ans1 = 0.0, ans2 = 1e-50; + double ans1 = 0.0; + double ans2 = 1e-50; for (int i = 0; i < numberOfComponents; i++) { if (componentArray[i].getIonicCharge() == 0) { ans1 += componentArray[i].getNumberOfMolesInPhase() @@ -384,7 +411,7 @@ public double calcXLR() { * @return a double */ public double calcGammaLRdV() { - if (phaseType == 1) { + if (pt == PhaseType.GAS) { return 0.0; } // return 0.0; // problem ved ren komponent @@ -406,8 +433,9 @@ public double calcGammaLRdV() { * @return a double */ public double calcShieldingParameter() { - // if(phaseType==1) return 0.0; - double df = 0, f = 0; + // if(pt==1) return 0.0; + double df = 0; + double f = 0; int ions = 0; int iterations = 0; gamma = 1e10; @@ -440,7 +468,7 @@ public double calcShieldingParameter() { } // public double calcShieldingParameter2(){ - // if(phaseType==1) return 0.0; + // if(pt==1) return 0.0; // double df=0, f=0; // int ions=0; @@ -456,9 +484,14 @@ public double calcShieldingParameter() { // if(componentArray[i].getIonicCharge()!=0){ // ions++; // f += - - // getAlphaLR2()*componentArray[i].getNumberOfMolesInPhase()/(molarVolume*numberOfMolesInPhase*1e-5)*Math.pow(componentArray[i].getIonicCharge(),2.0)/Math.pow((1.0+gamma*componentArray[i].getLennardJonesMolecularDiameter()*1e-10),3.0); + // getAlphaLR2()*componentArray[i].getNumberOfMolesInPhase() / + // (molarVolume*numberOfMolesInPhase*1e-5) * Math.pow(componentArray[i].getIonicCharge(),2.0) / + // Math.pow((1.0+gamma*componentArray[i].getLennardJonesMolecularDiameter()*1e-10),3.0); // df += - // getAlphaLR2()*componentArray[i].getNumberOfMolesInPhase()/(molarVolume*numberOfMolesInPhase*1e-5)*Math.pow(componentArray[i].getIonicCharge(),2.0)*(componentArray[i].getLennardJonesMolecularDiameter()*1e-10)/Math.pow(1.0+gamma*componentArray[i].getLennardJonesMolecularDiameter()*1e-10,4.0); + // getAlphaLR2()*componentArray[i].getNumberOfMolesInPhase() / + // (molarVolume*numberOfMolesInPhase*1e-5)*Math.pow(componentArray[i].getIonicCharge(),2.0) * + // (componentArray[i].getLennardJonesMolecularDiameter()*1e-10) / + // Math.pow(1.0+gamma*componentArray[i].getLennardJonesMolecularDiameter()*1e-10,4.0); // } // } // gamma = ions>0 ? gammaold - 0.8*f/df : 0; @@ -470,12 +503,12 @@ public double calcShieldingParameter() { /** {@inheritDoc} */ @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) throws neqsim.util.exception.IsNaNException, neqsim.util.exception.TooManyIterationsException { // double BonV = phase== 0 ? // 2.0/(2.0+temperature/getPseudoCriticalTemperature()):0.1*pressure*getB()/(numberOfMolesInPhase*temperature*R); - double BonV = phase == 0 ? 0.99 : 1e-5; + double BonV = pt == PhaseType.LIQUID ? 0.99 : 1e-5; if (BonV < 0) { BonV = 1.0e-6; @@ -484,8 +517,12 @@ public double molarVolume(double pressure, double temperature, double A, double BonV = 1.0 - 1.0e-6; } double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0, dhh = 0; - double d1 = 0, d2 = 0; + double Btemp = 0; + double h = 0; + double dh = 0; + double dhh = 0; + double d1 = 0; + double d2 = 0; Btemp = getB(); if (Btemp <= 0) { logger.info("b negative in volume calc"); @@ -516,7 +553,7 @@ public double molarVolume(double pressure, double temperature, double A, double double hnew = h + d2 * -h / d1; if (Math.abs(hnew) > Math.abs(h)) { logger.info("volume correction needed...."); - BonV = phase == 1 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * temperature * R); } } @@ -542,8 +579,8 @@ public double molarVolume(double pressure, double temperature, double A, double throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); } - // if(phaseType==0) System.out.println("density " + getDensity());//"BonV: " + - // BonV + " "+" itert: " + iterations +" " + " phase " + phaseType+ " " + h + " + // if(pt==0) System.out.println("density " + getDensity()); //"BonV: " + + // BonV + " "+" itert: " + iterations +" " + " phase " + pt+ " " + h + " // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" // + fVV()); @@ -655,7 +692,7 @@ public double calcDiElectricConstantdVdV(double temperature) { double Y = getSolventDiElectricConstant() - 1.0; double dXdf = getEpsIonicdVdV() * -3.0 / 2.0 / Math.pow(getEpsIonic() / 2.0 + 1.0, 2.0) + getEpsIonicdV() * getEpsIonicdV() * 3.0 / 2.0 / Math.pow(getEpsIonic() / 2.0 + 1.0, 3.0); - return Y * dXdf;// + Y*dXdf; + return Y * dXdf; // + Y*dXdf; } /** {@inheritDoc} */ @@ -763,8 +800,8 @@ public double dFLRdTdT() { * @return a double */ public double dFLRdV() { - return (FLRV() + dFdAlphaLR() * alphaLRdV) * 1e-5;// + FLRGammaLR()*gammLRdV + - // 0*FLRXLR()*XLRdGammaLR()*gammLRdV)*1e-5; + return (FLRV() + dFdAlphaLR() * alphaLRdV) * 1e-5; + // + FLRGammaLR()*gammLRdV + 0*FLRXLR()*XLRdGammaLR()*gammLRdV)*1e-5; } /** @@ -914,7 +951,7 @@ public double XLRdndn(int i, int j) { * @return a double */ public double XLRdGammaLR() { - // if(phaseType==1) return 0.0; + // if(pt==1) return 0.0; double ans = 0.0; double ans2 = 0.0; for (int i = 0; i < numberOfComponents; i++) { @@ -1686,7 +1723,7 @@ public double getDielectricConstant() { * setFurstIonicCoefficient. *

* - * @param params an array of {@link double} objects + * @param params an array of type double */ public void setFurstIonicCoefficient(double[] params) {} diff --git a/src/main/java/neqsim/thermo/phase/PhasePCSAFT.java b/src/main/java/neqsim/thermo/phase/PhasePCSAFT.java index d47d7ec1fd..6952f1c3a1 100644 --- a/src/main/java/neqsim/thermo/phase/PhasePCSAFT.java +++ b/src/main/java/neqsim/thermo/phase/PhasePCSAFT.java @@ -15,9 +15,12 @@ */ public class PhasePCSAFT extends PhaseSrkEos { private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhasePCSAFT.class); double nSAFT = 1.0; - double dnSAFTdV = 1.0, dnSAFTdVdV = 1.0; + double dnSAFTdV = 1.0; + double dnSAFTdVdV = 1.0; + double dmeanSAFT = 0.0; double dSAFT = 1.0; double mSAFT = 1.0; @@ -28,30 +31,52 @@ public class PhasePCSAFT extends PhaseSrkEos { double aHSSAFT = 1.0; double volumeSAFT = 1.0; double daHCSAFTdN = 1.0; - double daHSSAFTdN = 1.0, dgHSSAFTdN = 1.0; - double daHSSAFTdNdN = 1.0, dgHSSAFTdNdN = 1.0; - int useHS = 1, useDISP1 = 1, useDISP2 = 1; - private double[][] aConstSAFT = { + double daHSSAFTdN = 1.0; + double dgHSSAFTdN = 1.0; + double daHSSAFTdNdN = 1.0; + double dgHSSAFTdNdN = 1.0; + + int useHS = 1; + int useDISP1 = 1; + int useDISP2 = 1; + + protected double[][] aConstSAFT = { {0.9105631445, 0.6361281449, 2.6861347891, -26.547362491, 97.759208784, -159.59154087, 91.297774084}, {-0.3084016918, 0.1860531159, -2.5030047259, 21.419793629, -65.255885330, 83.318680481, -33.746922930}, {-0.0906148351, 0.4527842806, 0.5962700728, -1.7241829131, -4.1302112531, 13.776631870, -8.6728470368}}; - private double[][] bConstSAFT = { + protected double[][] bConstSAFT = { {0.7240946941, 2.2382791861, -4.0025849485, -21.003576815, 26.855641363, 206.55133841, -355.60235612}, {-0.5755498075, 0.6995095521, 3.8925673390, -17.215471648, 192.67226447, -161.82646165, -165.20769346}, {0.0976883116, -0.2557574982, -9.1558561530, 20.642075974, -38.804430052, 93.626774077, -29.666905585}}; - private double F1dispVolTerm = 1.0, F1dispSumTerm = 1.0, F1dispI1 = 1.0, F2dispI2 = 1.0, - F2dispZHC = 1.0, F2dispZHCdN = 1.0, F2dispZHCdm = 1.0, F2dispZHCdV = 1.0, F2dispI2dVdV = 0.0, - F2dispZHCdVdV = 0.0, F1dispI1dNdN = 1.0; - private double F1dispVolTermdV = 1.0, F1dispVolTermdVdV = 1.0, F1dispI1dN = 1.0, F1dispI1dm = 1.0, - F1dispI1dV = 1.0, F2dispI2dV = 1.0, F2dispI2dN = 1.0, F2dispI2dm = 1.0, F2dispSumTerm = 0.0, - F2dispZHCdNdN = 1.0, F2dispI2dNdN = 1.0, F1dispI1dVdV = 0.0; - static Logger logger = LogManager.getLogger(PhasePCSAFT.class); + protected double F1dispVolTerm = 1.0; + protected double F1dispSumTerm = 1.0; + protected double F1dispI1 = 1.0; + protected double F2dispI2 = 1.0; + protected double F2dispZHC = 1.0; + protected double F2dispZHCdN = 1.0; + protected double F2dispZHCdm = 1.0; + protected double F2dispZHCdV = 1.0; + protected double F2dispI2dVdV = 0.0; + protected double F2dispZHCdVdV = 0.0; + protected double F1dispI1dNdN = 1.0; + protected double F1dispVolTermdV = 1.0; + protected double F1dispVolTermdVdV = 1.0; + protected double F1dispI1dN = 1.0; + protected double F1dispI1dm = 1.0; + protected double F1dispI1dV = 1.0; + protected double F2dispI2dV = 1.0; + protected double F2dispI2dN = 1.0; + protected double F2dispI2dm = 1.0; + protected double F2dispSumTerm = 0.0; + protected double F2dispZHCdNdN = 1.0; + protected double F2dispI2dNdN = 1.0; + protected double F1dispI1dVdV = 0.0; /** *

@@ -68,8 +93,8 @@ public PhasePCSAFT clone() { PhasePCSAFT clonedPhase = null; try { clonedPhase = (PhasePCSAFT) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } return clonedPhase; @@ -77,24 +102,22 @@ public PhasePCSAFT clone() { /** {@inheritDoc} */ @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentPCSAFT(componentName, moles, molesInPhase, compNumber); + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentPCSAFT(name, moles, molesInPhase, compNumber); } /** {@inheritDoc} */ @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, double beta) { - if (type > 0) { + if (initType > 0) { for (int i = 0; i < numberOfComponents; i++) { componentArray[i].Finit(this, temperature, pressure, totalNumberOfMoles, beta, - numberOfComponents, type); + numberOfComponents, initType); } } - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); } /** @@ -160,14 +183,15 @@ public void volInit() { F2dispI2dNdN = calcF2dispI2dNdN(); F2dispI2dm = calcF2dispI2dm(); F2dispI2dV = F2dispI2dN * getDnSAFTdV(); - F2dispI2dVdV = F2dispI2dNdN * getDnSAFTdV() * getDnSAFTdV() + F2dispI2dN * dnSAFTdVdV;// F2dispI2dNdN*dnSAFTdVdV;; + F2dispI2dVdV = F2dispI2dNdN * getDnSAFTdV() * getDnSAFTdV() + F2dispI2dN * dnSAFTdVdV; // F2dispI2dNdN*dnSAFTdVdV; F2dispZHC = calcF2dispZHC(); F2dispZHCdN = calcF2dispZHCdN(); F2dispZHCdNdN = calcF2dispZHCdNdN(); setF2dispZHCdm(calcF2dispZHCdm()); F2dispZHCdV = F2dispZHCdN * getDnSAFTdV(); - F2dispZHCdVdV = F2dispZHCdNdN * getDnSAFTdV() * getDnSAFTdV() + F2dispZHCdN * dnSAFTdVdV; // F2dispZHCdNdN*dnSAFTdVdV*0; + F2dispZHCdVdV = F2dispZHCdNdN * getDnSAFTdV() * getDnSAFTdV() + F2dispZHCdN * dnSAFTdVdV; + // F2dispZHCdNdN*dnSAFTdVdV*0; } /** @@ -310,7 +334,6 @@ public double calcmSAFT() { */ public double calcF1dispSumTerm() { double temp1 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { for (int j = 0; j < numberOfComponents; j++) { temp1 += @@ -334,7 +357,6 @@ public double calcF1dispSumTerm() { */ public double calcF2dispSumTerm() { double temp1 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { for (int j = 0; j < numberOfComponents; j++) { temp1 += getComponent(i).getNumberOfMolesInPhase() @@ -475,10 +497,10 @@ public double calcF2dispI2() { * * @param i a int * @param m a double - * @param ab an array of {@link double} objects + * @param ab an array of type double * @return a double */ - public double getaSAFT(int i, double m, double ab[][]) { + public double getaSAFT(int i, double m, double[][] ab) { return ab[0][i] + (m - 1.0) / m * ab[1][i] + (m - 1.0) / m * (m - 2.0) / m * ab[2][i]; } @@ -489,10 +511,10 @@ public double getaSAFT(int i, double m, double ab[][]) { * * @param i a int * @param m a double - * @param ab an array of {@link double} objects + * @param ab an array of type double * @return a double */ - public double getaSAFTdm(int i, double m, double ab[][]) { + public double getaSAFTdm(int i, double m, double[][] ab) { return (m - (m - 1.0)) / (m * m) * ab[1][i] + ((2.0 * m - 3.0) * m * m - 2 * m * (m * m - 3 * m + 2)) / Math.pow(m, 4.0) * ab[2][i]; } @@ -540,7 +562,8 @@ public double calcmmin1SAFT() { * @return a double */ public double calcdmeanSAFT() { - double temp = 0.0, temp2 = 0.0; + double temp = 0.0; + double temp2 = 0.0; for (int i = 0; i < numberOfComponents; i++) { temp += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() * Math.pow(((ComponentPCSAFT) getComponent(i)).getdSAFTi(), 3.0); @@ -641,7 +664,8 @@ public void setGhsSAFT(double ghsSAFT) { */ public double F_HC_SAFT() { return getNumberOfMolesInPhase() - * (getmSAFT() * getAHSSAFT() - getMmin1SAFT() * Math.log(getGhsSAFT()));/// (ThermodynamicConstantsInterface.R*temperature); + * (getmSAFT() * getAHSSAFT() - getMmin1SAFT() * Math.log(getGhsSAFT())); + // (ThermodynamicConstantsInterface.R*temperature); } /** @@ -653,7 +677,8 @@ public double F_HC_SAFT() { */ public double dF_HC_SAFTdV() { return getNumberOfMolesInPhase() * (getmSAFT() * daHSSAFTdN * getDnSAFTdV() - - getMmin1SAFT() * 1.0 / getGhsSAFT() * getDgHSSAFTdN() * getDnSAFTdV());/// (ThermodynamicConstantsInterface.R*temperature); + - getMmin1SAFT() * 1.0 / getGhsSAFT() * getDgHSSAFTdN() * getDnSAFTdV()); + // (ThermodynamicConstantsInterface.R*temperature); } /** @@ -669,7 +694,8 @@ public double dF_HC_SAFTdVdV() { + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) * Math.pow(getDgHSSAFTdN(), 2.0) * getDnSAFTdV() - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * dgHSSAFTdNdN * dnSAFTdV * dnSAFTdV - - getMmin1SAFT() * 1.0 / getGhsSAFT() * getDgHSSAFTdN() * dnSAFTdVdV); // (ThermodynamicConstantsInterface.R*temperature); + - getMmin1SAFT() * 1.0 / getGhsSAFT() * getDgHSSAFTdN() * dnSAFTdVdV); + // (ThermodynamicConstantsInterface.R*temperature); } /** @@ -692,7 +718,7 @@ public double dF_HC_SAFTdVdVdV() { */ public double F_DISP1_SAFT() { return getNumberOfMolesInPhase() * (-2.0 * ThermodynamicConstantsInterface.pi - * getF1dispVolTerm() * getF1dispSumTerm() * getF1dispI1());/// (ThermodynamicConstantsInterface.R*temperature); + * getF1dispVolTerm() * getF1dispSumTerm() * getF1dispI1()); // (ThermodynamicConstantsInterface.R*temperature); } /** @@ -706,7 +732,7 @@ public double dF_DISP1_SAFTdV() { return getNumberOfMolesInPhase() * (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() * getF1dispI1() - 2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTerm * getF1dispSumTerm() - * F1dispI1dV);/// (ThermodynamicConstantsInterface.R*temperature); + * F1dispI1dV); // (ThermodynamicConstantsInterface.R*temperature); } /** @@ -736,7 +762,8 @@ public double dF_DISP1_SAFTdVdV() { */ public double F_DISP2_SAFT() { return getNumberOfMolesInPhase() * (-ThermodynamicConstantsInterface.pi * getmSAFT() - * getF1dispVolTerm() * getF2dispSumTerm() * getF2dispI2() * getF2dispZHC());/// (ThermodynamicConstantsInterface.R*temperature); + * getF1dispVolTerm() * getF2dispSumTerm() * getF2dispI2() * getF2dispZHC()); + // (ThermodynamicConstantsInterface.R*temperature); } /** @@ -752,7 +779,7 @@ public double dF_DISP2_SAFTdV() { - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() * F2dispI2dV * getF2dispZHC() - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() - * getF2dispI2() * F2dispZHCdV);/// (ThermodynamicConstantsInterface.R*temperature); + * getF2dispI2() * F2dispZHCdV); // (ThermodynamicConstantsInterface.R*temperature); } /** @@ -1101,7 +1128,9 @@ public double molarVolume22(double pressure, double temperature, double A, doubl setMolarVolume(volume / numberOfMolesInPhase); double oldMolarVolume = 0; int iterations = 0; - double h = 0, dh = 0.0, d1 = 0.0; + double h = 0; + double dh = 0.0; + double d1 = 0.0; do { iterations++; this.volInit(); @@ -1124,11 +1153,12 @@ public double molarVolume22(double pressure, double temperature, double A, doubl /** {@inheritDoc} */ @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) throws neqsim.util.exception.IsNaNException, neqsim.util.exception.TooManyIterationsException { - double BonV = phase == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); // double BonV = phase== 0 ? 0.99:1e-5; if (BonV < 0) { BonV = 1.0e-6; @@ -1137,7 +1167,9 @@ public double molarVolume(double pressure, double temperature, double A, double BonV = 1.0 - 1.0e-6; } double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0; + double Btemp = 0; + double h = 0; + double dh = 0; // double gvvv = 0, fvvv = 0, dhh = 0, d2 = 0; double d1 = 0; Btemp = getB(); @@ -1183,8 +1215,8 @@ public double molarVolume(double pressure, double temperature, double A, double throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); } - // if(phaseType==0) System.out.println("density " + getDensity());//"BonV: " + - // BonV + " "+" itert: " + iterations +" " + " phase " + phaseType+ " " + h + " + // if(pt==0) System.out.println("density " + getDensity()); //"BonV: " + + // BonV + " "+" itert: " + iterations +" " + " phase " + pt+ " " + h + " // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" // + fVV()); diff --git a/src/main/java/neqsim/thermo/phase/PhasePCSAFTRahmat.java b/src/main/java/neqsim/thermo/phase/PhasePCSAFTRahmat.java index f93f359f73..505e7005ec 100644 --- a/src/main/java/neqsim/thermo/phase/PhasePCSAFTRahmat.java +++ b/src/main/java/neqsim/thermo/phase/PhasePCSAFTRahmat.java @@ -14,1504 +14,1188 @@ * @version $Id: $Id */ public class PhasePCSAFTRahmat extends PhasePCSAFT { - private static final long serialVersionUID = 1000; - - double nSAFT = 1.0; - double dnSAFTdV = 1.0, dnSAFTdVdV = 1.0, dnSAFTdVdVdV = 1.0; - double dmeanSAFT = 0.0; - double dSAFT = 1.0; - double mSAFT = 1.0; - double mdSAFT = 1.0; - double nmSAFT = 1.0; - double mmin1SAFT = 1.0; - double ghsSAFT = 1.0; - double aHSSAFT = 1.0; - double volumeSAFT = 1.0; - double daHCSAFTdN = 1.0; - double daHSSAFTdN = 1.0, dgHSSAFTdN = 1.0; - double daHSSAFTdNdN = 1.0, dgHSSAFTdNdN = 1.0; - double daHSSAFTdNdNdN = 1.0, dgHSSAFTdNdNdN = 1.0; - // by Rahmat - double dNSAFTdT = 1.0; - double dF1dispVolTermdT = 0.0; - double dF1dispI1dT = 1.0, dF2dispI2dT = 1.0; - double dF2dispZHCdT = 1.0; - double dF1dispSumTermdT = 1.0, dF2dispSumTermdT = 1.0; - int useHS = 1, useDISP1 = 1, useDISP2 = 1; - private double[][] aConstSAFT = { - {0.9105631445, 0.6361281449, 2.6861347891, -26.547362491, 97.759208784, -159.59154087, - 91.297774084}, - {-0.3084016918, 0.1860531159, -2.5030047259, 21.419793629, -65.255885330, 83.318680481, - -33.746922930}, - {-0.0906148351, 0.4527842806, 0.5962700728, -1.7241829131, -4.1302112531, 13.776631870, - -8.6728470368}}; - private double[][] bConstSAFT = { - {0.7240946941, 2.2382791861, -4.0025849485, -21.003576815, 26.855641363, 206.55133841, - -355.60235612}, - {-0.5755498075, 0.6995095521, 3.8925673390, -17.215471648, 192.67226447, -161.82646165, - -165.20769346}, - {0.0976883116, -0.2557574982, -9.1558561530, 20.642075974, -38.804430052, 93.626774077, - -29.666905585}}; - private double F1dispVolTerm = 1.0, F1dispSumTerm = 1.0, F1dispI1 = 1.0, F2dispI2 = 1.0, - F2dispZHC = 1.0, F2dispZHCdN = 1.0, F2dispZHCdm = 1.0, F2dispZHCdV = 1.0, F2dispI2dVdV, - F2dispI2dVdVdV = 0.0, F2dispZHCdVdV = 1.0, F2dispZHCdVdVdV = 1.0, F1dispI1dNdN = 1.0, - F1dispI1dNdNdN = 1.0; - private double F1dispVolTermdV = 1.0, F1dispVolTermdVdV = 1.0, F1dispI1dN = 1.0, - F1dispI1dm = 1.0, F1dispI1dV = 1.0, F2dispI2dV = 1.0, F2dispI2dN = 1.0, - F2dispI2dm = 1.0, F2dispSumTerm = 0.0, F2dispZHCdNdN = 1.0, F2dispZHCdNdNdN = 1.0, - F2dispI2dNdN = 1.0, F2dispI2dNdNdN = 1.0, F1dispI1dVdV = 1.0, F1dispI1dVdVdV = 1.0; - private double F1dispVolTermdVdVdV = 1.0; - static Logger logger = LogManager.getLogger(PhasePCSAFTRahmat.class); - - /** - *

- * Constructor for PhasePCSAFTRahmat. - *

- */ - public PhasePCSAFTRahmat() { - super(); - } - - /** {@inheritDoc} */ - @Override - public PhasePCSAFTRahmat clone() { - PhasePCSAFTRahmat clonedPhase = null; - try { - clonedPhase = (PhasePCSAFTRahmat) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedPhase; - } - - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentPCSAFT(componentName, moles, molesInPhase, compNumber); - } - - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - for (int i = 0; i < numberOfComponents; i++) { - componentArray[i].Finit(this, temperature, pressure, totalNumberOfMoles, beta, - numberOfComponents, type); - } - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } - - /** {@inheritDoc} */ - @Override - public void volInit() { - volumeSAFT = getVolume() * 1.0e-5; - setDmeanSAFT(calcdmeanSAFT()); - setDSAFT(calcdSAFT()); - // System.out.println("saft volume " + getVolumeSAFT()); - // System.out.println("dsaft " + getDSAFT()); - setNSAFT(1.0 * ThermodynamicConstantsInterface.pi / 6.0 - * ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() - / volumeSAFT * getDSAFT()); - dnSAFTdV = -1.0 * ThermodynamicConstantsInterface.pi / 6.0 - * ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() - / Math.pow(volumeSAFT, 2.0) * getDSAFT(); - dnSAFTdVdV = 2.0 * ThermodynamicConstantsInterface.pi / 6.0 - * ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() - / Math.pow(volumeSAFT, 3.0) * getDSAFT(); - // System.out.println("N SAFT " + getNSAFT()); - dnSAFTdVdVdV = -6.0 * ThermodynamicConstantsInterface.pi / 6.0 - * ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() - / Math.pow(volumeSAFT, 4.0) * getDSAFT(); - - // added by rahmat - dNSAFTdT = 1.0 * ThermodynamicConstantsInterface.pi / 6.0 - * ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() - / volumeSAFT * getdDSAFTdT(); - - setGhsSAFT((1.0 - nSAFT / 2.0) / Math.pow(1.0 - nSAFT, 3.0)); - setmSAFT(calcmSAFT()); - setMmin1SAFT(calcmmin1SAFT()); - setmdSAFT(calcmdSAFT()); - setAHSSAFT((4.0 * getNSAFT() - 3.0 * Math.pow(getNSAFT(), 2.0)) - / Math.pow(1.0 - getNSAFT(), 2.0)); - daHSSAFTdN = ((4.0 - 6.0 * getNSAFT()) * Math.pow(1.0 - getNSAFT(), 2.0) - - (4.0 * getNSAFT() - 3 * Math.pow(getNSAFT(), 2.0)) * 2.0 * (1.0 - getNSAFT()) - * (-1.0)) - / Math.pow(1.0 - getNSAFT(), 4.0); - daHSSAFTdNdN = (-6.0 * Math.pow(1.0 - getNSAFT(), 2.0) - + 2.0 * (1.0 - getNSAFT()) * (4.0 - 6 * getNSAFT())) - / Math.pow(1.0 - getNSAFT(), 4.0) - + ((8.0 - 12.0 * getNSAFT()) * Math.pow(1.0 - getNSAFT(), 3.0) - + (8.0 - 6.0 * Math.pow(getNSAFT(), 2.0)) * 3.0 - * Math.pow(1.0 - getNSAFT(), 2.0)) - / Math.pow(1.0 - getNSAFT(), 6.0); - daHSSAFTdNdNdN = -36 / Math.pow((1 - getNSAFT()), 3) - + (18.0 * (4.0 - 6.0 * getNSAFT())) / Math.pow((1 - getNSAFT()), 4.0) - + (24.0 * (4.0 * getNSAFT() - 3.0 * Math.pow(getNSAFT(), 2.0))) - / Math.pow((1 - getNSAFT()), 5.0); - - dgHSSAFTdN = (-0.5 * Math.pow(1.0 - getNSAFT(), 3.0) - - (1.0 - getNSAFT() / 2.0) * 3.0 * Math.pow(1.0 - nSAFT, 2.0) * (-1.0)) - / Math.pow(1.0 - getNSAFT(), 6.0); - dgHSSAFTdNdN = -3.0 / 2.0 * Math.pow(1.0 - getNSAFT(), 2.0) - / Math.pow(1.0 - getNSAFT(), 6.0) - + (-3.0 / 2.0 * Math.pow(1.0 - getNSAFT(), 4.0) - + 4.0 * Math.pow(1.0 - getNSAFT(), 3.0) * (3.0 - 3.0 / 2.0 * getNSAFT())) - / Math.pow(1.0 - getNSAFT(), 8.0); - dgHSSAFTdNdNdN = -6.0 / Math.pow(1.0 - getNSAFT(), 5.0) - - (12.0 * (3.0 - 1.5 * getNSAFT())) / Math.pow(1.0 - getNSAFT(), 6.0) - + (8 * (-1.5 * Math.pow(1.0 - getNSAFT(), 4) - + 4.0 * Math.pow(1.0 - getNSAFT(), 3) * (3.0 - 1.5 * getNSAFT()))) - / Math.pow(1.0 - getNSAFT(), 9); - - setF1dispVolTerm(ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() - / getVolumeSAFT()); - F1dispSumTerm = calcF1dispSumTerm(); - F1dispI1 = calcF1dispI1(); - F1dispVolTermdV = -ThermodynamicConstantsInterface.avagadroNumber - * getNumberOfMolesInPhase() / Math.pow(getVolumeSAFT(), 2.0); - F1dispVolTermdVdV = 2.0 * ThermodynamicConstantsInterface.avagadroNumber - * getNumberOfMolesInPhase() / Math.pow(getVolumeSAFT(), 3.0); - F1dispVolTermdVdVdV = -6.0 * ThermodynamicConstantsInterface.avagadroNumber - * getNumberOfMolesInPhase() / Math.pow(getVolumeSAFT(), 4.0); - - // added by rahmat - dF1dispI1dT = calcdF1dispI1dT(); - dF2dispI2dT = calcdF2dispI2dT(); - dF1dispSumTermdT = calcdF1dispSumTermdT(); - dF2dispSumTermdT = calcdF2dispSumTermdT(); - dF2dispZHCdT = calcdF2dispZHCdT(); - - F1dispI1dN = calcF1dispI1dN(); - F1dispI1dNdN = calcF1dispI1dNdN(); - F1dispI1dNdNdN = calcF1dispI1dNdNdN(); - - F1dispI1dm = calcF1dispI1dm(); - F1dispI1dV = F1dispI1dN * getDnSAFTdV(); - F1dispI1dVdV = F1dispI1dNdN * getDnSAFTdV() * getDnSAFTdV() + F1dispI1dN * dnSAFTdVdV; // F1dispI1dNdN*dnSAFTdVdV; - - // added by Rahmat - F1dispI1dVdVdV = F1dispI1dNdNdN * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() - + F1dispI1dN * 2.0 * getDnSAFTdV() * dnSAFTdVdV + F1dispI1dNdN * dnSAFTdVdV - + F1dispI1dN * dnSAFTdVdVdV; // F1dispI1dNdN*dnSAFTdVdV; - - setF2dispSumTerm(calcF2dispSumTerm()); - setF2dispI2(calcF2dispI2()); - F2dispI2dN = calcF2dispI2dN(); - F2dispI2dNdN = calcF2dispI2dNdN(); - // added by Rahmat - F2dispI2dNdNdN = calcF2dispI2dNdNdN(); - - F2dispI2dm = calcF2dispI2dm(); - - F2dispI2dV = F2dispI2dN * getDnSAFTdV(); - F2dispI2dVdV = F2dispI2dNdN * getDnSAFTdV() * getDnSAFTdV() + F2dispI2dN * dnSAFTdVdV;// F2dispI2dNdN*dnSAFTdVdV;; - - // added by Rahmat - F2dispI2dVdVdV = F2dispI2dNdNdN * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() - + F2dispI2dN * 2.0 * getDnSAFTdV() * dnSAFTdVdV + F2dispI2dNdN * dnSAFTdVdV - + F2dispI2dN * dnSAFTdVdVdV; - - F2dispZHC = calcF2dispZHC(); - F2dispZHCdN = calcF2dispZHCdN(); - F2dispZHCdNdN = calcF2dispZHCdNdN(); - F2dispZHCdNdNdN = calcF2dispZHCdNdNdN(); - - setF2dispZHCdm(calcF2dispZHCdm()); - F2dispZHCdV = F2dispZHCdN * getDnSAFTdV(); - F2dispZHCdVdV = F2dispZHCdNdN * getDnSAFTdV() * getDnSAFTdV() + F2dispZHCdN * dnSAFTdVdV; // F2dispZHCdNdN*dnSAFTdVdV*0; - F2dispZHCdVdVdV = F2dispZHCdNdNdN * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() - + F2dispZHCdNdN * 2.0 * getDnSAFTdV() * dnSAFTdVdV + F2dispZHCdNdN * dnSAFTdVdV - + F2dispZHCdN * dnSAFTdVdVdV; - } - - /** {@inheritDoc} */ - @Override - public double calcF2dispZHC() { - double temp = 1.0 - + getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2.0)) - / Math.pow(1.0 - getNSAFT(), 4.0) - + (1.0 - getmSAFT()) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2.0) - + 12 * Math.pow(getNSAFT(), 3.0) - 2 * Math.pow(getNSAFT(), 4.0)) - / Math.pow((1.0 - getNSAFT()) * (2.0 - getNSAFT()), 2.0); - return 1.0 / temp; - } - - /** {@inheritDoc} */ - @Override - public double calcF2dispZHCdm() { - double temp = -Math.pow(F2dispZHC, 2.0); - return temp * ((8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2.0)) - / Math.pow(1.0 - getNSAFT(), 4.0) - - (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2.0) + 12 * Math.pow(getNSAFT(), 3.0) - - 2 * Math.pow(getNSAFT(), 4.0)) - / Math.pow((1.0 - getNSAFT()) * (2.0 - getNSAFT()), 2.0)); - } - - /** {@inheritDoc} */ - @Override - public double calcF2dispZHCdN() { - double temp0 = -Math.pow(F2dispZHC, 2.0); - double temp1 = Math.pow((1.0 - getNSAFT()) * (2.0 - getNSAFT()), 2.0); - double temp2 = 20.0 * getNSAFT() - 27.0 * Math.pow(getNSAFT(), 2.0) - + 12.0 * Math.pow(getNSAFT(), 3.0) - 2.0 * Math.pow(getNSAFT(), 4.0); - // ikke rett implementert - return temp0 * (getmSAFT() - * ((8.0 - 4.0 * getNSAFT()) * Math.pow(1.0 - getNSAFT(), 4.0) - - 4.0 * Math.pow(1.0 - getNSAFT(), 3.0) * (-1.0) - * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2.0))) - / Math.pow(1.0 - getNSAFT(), 8.0) - + (1.0 - getmSAFT()) - * ((20.0 - (2.0 * 27.0) * getNSAFT() - + (12.0 * 3.0) * Math.pow(getNSAFT(), 2.0) - - 8.0 * Math.pow(getNSAFT(), 3.0)) * temp1 - - (2.0 * (2.0 - 3.0 * getNSAFT() + Math.pow(getNSAFT(), 2.0)) - * (-3.0 + 2.0 * getNSAFT())) * temp2) - / Math.pow(temp1, 2.0)); - } - - /** {@inheritDoc} */ - @Override - public double calcF2dispZHCdNdN() { - double temp0 = 2.0 * Math.pow(F2dispZHC, 3.0); - double temp1 = Math.pow((1.0 - getNSAFT()) * (2.0 - getNSAFT()), 2.0); - double temp11 = Math.pow((1.0 - getNSAFT()) * (2.0 - getNSAFT()), 3.0); - double temp2 = 20.0 * getNSAFT() - 27.0 * Math.pow(getNSAFT(), 2.0) - + 12.0 * Math.pow(getNSAFT(), 3.0) - 2.0 * Math.pow(getNSAFT(), 4.0); - - double temp1der = 2.0 * (2.0 - 3.0 * getNSAFT() + Math.pow(getNSAFT(), 2.0)) - * (-3.0 + 2.0 * getNSAFT()); - double temp11der = 3.0 * Math.pow(2.0 - 3.0 * getNSAFT() + Math.pow(getNSAFT(), 2.0), 2.0) - * (-3.0 + 2.0 * getNSAFT()); - // ikke rett implementert - double temp3 = (getmSAFT() - * ((8.0 - 4.0 * getNSAFT()) * Math.pow(1.0 - getNSAFT(), 4.0) - - 4.0 * Math.pow(1.0 - getNSAFT(), 3.0) * (-1.0) - * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2.0))) - / Math.pow(1.0 - getNSAFT(), 8.0) - + (1.0 - getmSAFT()) - * ((20.0 - (2.0 * 27.0) * getNSAFT() - + (12.0 * 3.0) * Math.pow(getNSAFT(), 2.0) - - 8.0 * Math.pow(getNSAFT(), 3.0)) * temp1 - - (2.0 * (2.0 - 3.0 * getNSAFT() + Math.pow(getNSAFT(), 2.0)) - * (-3.0 + 2.0 * getNSAFT())) * temp2) - / Math.pow(temp1, 2.0)); - - double temp4 = -Math.pow(F2dispZHC, 2.0); - double dZdndn = - getmSAFT() - * ((-4.0 * Math.pow(1.0 - getNSAFT(), 4.0) - 4.0 - * Math.pow(1.0 - getNSAFT(), 3.0) * (-1.0) - * (8.0 - 4.0 * getNSAFT())) / Math.pow(1.0 - getNSAFT(), 8.0) - + ((32.0 - 16.0 * getNSAFT()) * Math.pow(1.0 - getNSAFT(), 5.0) - - 5.0 * Math.pow(1.0 - getNSAFT(), 4.0) * (-1.0) - * (32.0 * getNSAFT() - - 8.0 * Math.pow(getNSAFT(), 2.0))) - / Math.pow(1.0 - getNSAFT(), 10.0)) - + (1.0 - getmSAFT()) - * (((-54.0 + 72.0 * getNSAFT() - 24.0 * Math.pow(getNSAFT(), 2.0)) - * temp1 - - temp1der * (20.0 - 54.0 * getNSAFT() - + 36.0 * Math.pow(getNSAFT(), 2.0) - - 8.0 * Math.pow(getNSAFT(), 3.0))) - / Math.pow(temp1, 2.0) - - ((-40.0 * Math.pow(getNSAFT(), 4.0) - + 240.0 * Math.pow(getNSAFT(), 3.0) - - 3.0 * 180.0 * Math.pow(getNSAFT(), 2.0) - + 242.0 * 2.0 * getNSAFT() - 120.0) * temp11 - - temp11der * (-8.0 * Math.pow(getNSAFT(), 5.0) - + 60.0 * Math.pow(getNSAFT(), 4.0) - - 180.0 * Math.pow(getNSAFT(), 3.0) - + 242.0 * Math.pow(getNSAFT(), 2.0) - - 120.0 * getNSAFT())) - / Math.pow(temp11, 2.0)); - - return temp0 * Math.pow(temp3, 2.0) + temp4 * dZdndn; - } - - /** - *

- * calcF2dispZHCdNdNdN. - *

- * - * @return a double - */ - public double calcF2dispZHCdNdNdN() { - double temp = -6 - * Math.pow( - (getmSAFT() * (8.0 - - 4.0 * getNSAFT()) / Math.pow((1.0 - getNSAFT()), - 4) - + 4 * getmSAFT() * (8.0 * getNSAFT() - - 2.0 * Math.pow(getNSAFT(), 2) - / Math.pow((1.0 - getNSAFT()), 5) - + (1.0 - getmSAFT()) - * (20 - 54 * getNSAFT() - + 36 * Math.pow(getNSAFT(), 2) - - 8 * Math.pow(getNSAFT(), 3)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 2)) - + (2 * (1.0 - getmSAFT())) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 3) - * Math.pow((2.0 - getNSAFT()), 2)) - + (2 * (1.0 - getmSAFT())) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 3)))), - 3) - / Math.pow((1.0 - + getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2)) - / Math.pow((1.0 - getNSAFT()), 4) - + (1.0 - getmSAFT()) * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 2))), - 4) - + (6 * (getmSAFT() * (8.0 - 4.0 * getNSAFT()) / Math.pow((1.0 - getNSAFT()), 4) - + 4 * getmSAFT() * (8.0 * getNSAFT() - Math.pow(2.0 * getNSAFT(), 2)) - / Math.pow((1.0 - getNSAFT()), 5) - + (1.0 - getmSAFT()) - * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) - - 8 * Math.pow(getNSAFT(), 3)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 2)) - + (2 * (1.0 - getmSAFT())) * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 3) - * Math.pow((2.0 - getNSAFT()), 2)) - + (2 * (1.0 - getmSAFT())) * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 3)))) - * (-4.0 * getmSAFT() / Math.pow((1.0 - getNSAFT()), 4) - + 8 * getmSAFT() * (8.0 - 4.0 * getNSAFT()) - / Math.pow((1.0 - getNSAFT()), 5) - + 20 * getmSAFT() - * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2)) - / Math.pow((1.0 - getNSAFT()), 6) - + (1.0 - getmSAFT()) - * (-54 + 72 * getNSAFT() - 24 * Math.pow(getNSAFT(), 2)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 2)) - + (4 * (1.0 - getmSAFT())) - * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) - - 8 * Math.pow(getNSAFT(), 3)) - / (Math.pow((1.0 - getNSAFT()), 3) - * Math.pow((2.0 - getNSAFT()), 2)) - + (4 * (1.0 - getmSAFT())) - * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) - - 8 * Math.pow(getNSAFT(), 3)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 3)) - + (6 * (1.0 - getmSAFT())) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 4) - * Math.pow((2.0 - getNSAFT()), 2)) - + (8 * (1.0 - getmSAFT())) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 3) - * Math.pow((2.0 - getNSAFT()), 3)) - + (6 * (1.0 - getmSAFT())) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 4))) - / Math.pow(1.0 - + getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2)) - / Math.pow((1.0 - getNSAFT()), 4) - + ((1.0 - getmSAFT()) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 2))), - 3) - - (-48.0 * getmSAFT() / Math.pow((1.0 - getNSAFT()), 5) - + 60 * getmSAFT() * (8.0 - 4.0 * getNSAFT()) - / Math.pow((1.0 - getNSAFT()), 6) - + 120 * getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2)) - / Math.pow((1.0 - getNSAFT()), 7) - + (1.0 - getmSAFT()) * (72 - 48 * getNSAFT()) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 2)) - + (6 * (1.0 - getmSAFT())) - * (-54 + 72 * getNSAFT() - 24 * Math.pow(getNSAFT(), 2)) - / (Math.pow((1.0 - getNSAFT()), 3) - * Math.pow((2.0 - getNSAFT()), 2)) - + (6 * (1.0 - getmSAFT())) - * (-54 + 72 * getNSAFT() - 24 * Math.pow(getNSAFT(), 2)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 3)) - + (18 * (1.0 - getmSAFT())) - * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) - - 8 * Math.pow(getNSAFT(), 3)) - / (Math.pow((1.0 - getNSAFT()), 4) - * Math.pow((2.0 - getNSAFT()), 2)) - + (24 * (1.0 - getmSAFT())) - * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) - - 8 * Math.pow(getNSAFT(), 3)) - / (Math.pow((1.0 - getNSAFT()), 3) - * Math.pow((2.0 - getNSAFT()), 3)) - + (18 * (1.0 - getmSAFT())) - * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) - - 8 * Math.pow(getNSAFT(), 3)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 4)) - + (24 * (1.0 - getmSAFT())) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 5) - * Math.pow((2.0 - getNSAFT()), 2)) - + (36 * (1.0 - getmSAFT())) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 4) - * Math.pow((2.0 - getNSAFT()), 3)) - + (36 * (1.0 - getmSAFT())) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 3) - * Math.pow((2.0 - getNSAFT()), 4)) - + (24 * (1.0 - getmSAFT())) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 5))) - / Math.pow((1.0 - + getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2)) - / Math.pow((1.0 - getNSAFT()), 4) - + (1.0 - getmSAFT()) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) - + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)) - / (Math.pow((1.0 - getNSAFT()), 2) - * Math.pow((2.0 - getNSAFT()), 2))), - 2); - - return temp; - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhasePCSAFTRahmat.class); + + double dnSAFTdVdVdV = 1.0; + + double daHSSAFTdNdNdN = 1.0; + double dgHSSAFTdNdNdN = 1.0; + + // by Rahmat + double dNSAFTdT = 1.0; + double dF1dispVolTermdT = 0.0; + double dF1dispI1dT = 1.0; + double dF2dispI2dT = 1.0; + double dF2dispZHCdT = 1.0; + double dF1dispSumTermdT = 1.0; + double dF2dispSumTermdT = 1.0; + protected double F2dispI2dVdV; + protected double F2dispI2dVdVdV = 0.0; + protected double F2dispZHCdVdV = 1.0; + protected double F2dispZHCdVdVdV = 1.0; + protected double F1dispI1dNdNdN = 1.0; + protected double F2dispZHCdNdNdN = 1.0; + protected double F2dispI2dNdNdN = 1.0; + protected double F1dispI1dVdV = 1.0; + protected double F1dispI1dVdVdV = 1.0; + protected double F1dispVolTermdVdVdV = 1.0; + + /** + *

+ * Constructor for PhasePCSAFTRahmat. + *

+ */ + public PhasePCSAFTRahmat() { + super(); + } + + /** {@inheritDoc} */ + @Override + public PhasePCSAFTRahmat clone() { + PhasePCSAFTRahmat clonedPhase = null; + try { + clonedPhase = (PhasePCSAFTRahmat) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentPCSAFT(name, moles, molesInPhase, compNumber); + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + // missing? + // if (initType > 0) { + for (int i = 0; i < numberOfComponents; i++) { + componentArray[i].Finit(this, temperature, pressure, totalNumberOfMoles, beta, + numberOfComponents, initType); + } + // } + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + } + + /** {@inheritDoc} */ + @Override + public void volInit() { + volumeSAFT = getVolume() * 1.0e-5; + setDmeanSAFT(calcdmeanSAFT()); + setDSAFT(calcdSAFT()); + // System.out.println("saft volume " + getVolumeSAFT()); + // System.out.println("dsaft " + getDSAFT()); + setNSAFT(1.0 * ThermodynamicConstantsInterface.pi / 6.0 + * ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() / volumeSAFT + * getDSAFT()); + dnSAFTdV = -1.0 * ThermodynamicConstantsInterface.pi / 6.0 + * ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() + / Math.pow(volumeSAFT, 2.0) * getDSAFT(); + dnSAFTdVdV = 2.0 * ThermodynamicConstantsInterface.pi / 6.0 + * ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() + / Math.pow(volumeSAFT, 3.0) * getDSAFT(); + // System.out.println("N SAFT " + getNSAFT()); + dnSAFTdVdVdV = -6.0 * ThermodynamicConstantsInterface.pi / 6.0 + * ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() + / Math.pow(volumeSAFT, 4.0) * getDSAFT(); // added by rahmat - /** - *

- * calcdF2dispZHCdT. - *

- * - * @return a double - */ - public double calcdF2dispZHCdT() { - double temp0 = -Math.pow(F2dispZHC, 2.0); - double temp1 = getmSAFT() - * ((8 - 4 * getNSAFT()) * dNSAFTdT * Math.pow(1 - getNSAFT(), 4) - + 4 * Math.pow(1 - getNSAFT(), 3) * dNSAFTdT - * (8 * getNSAFT() - 2 * Math.pow(getNSAFT(), 2))) - / Math.pow(1 - getNSAFT(), 8); - double temp2a = (1 - getmSAFT()) - * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) - + 8 * Math.pow(getNSAFT(), 3)) - * dNSAFTdT * Math.pow((1 - getNSAFT()) * (2 - getNSAFT()), 2); - double temp2b = (1 - getmSAFT()) * 2 * ((1 - getNSAFT()) * (2 - getNSAFT())) - * (-1 * dNSAFTdT * (2 - getNSAFT()) + (-1) * dNSAFTdT * (1 - getNSAFT())) - * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) - - 2 * Math.pow(getNSAFT(), 4)); - double temp2 = (temp2a - temp2b) / Math.pow((1 - getNSAFT()) * (2 - getNSAFT()), 4); - return temp0 * (temp1 + temp2); - } - - /** {@inheritDoc} */ - @Override - public double calcmSAFT() { - double temp2 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - temp2 += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() - / getNumberOfMolesInPhase(); - } - - return temp2; - } - - /** {@inheritDoc} */ - @Override - public double calcF1dispSumTerm() { - double temp1 = 0.0; - - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - temp1 += getComponent(i).getNumberOfMolesInPhase() - * getComponent(j).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() - * getComponent(j).getmSAFTi() - * Math.sqrt(getComponent(i).getEpsikSAFT() / temperature - * getComponent(j).getEpsikSAFT() / temperature) - * (1.0 - mixRule.getBinaryInteractionParameter(i, j)) - * Math.pow(0.5 * (getComponent(i).getSigmaSAFTi() - + getComponent(j).getSigmaSAFTi()), 3.0); - } - } - return temp1 / Math.pow(getNumberOfMolesInPhase(), 2.0); - } + dNSAFTdT = 1.0 * ThermodynamicConstantsInterface.pi / 6.0 + * ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() / volumeSAFT + * getdDSAFTdT(); + + setGhsSAFT((1.0 - nSAFT / 2.0) / Math.pow(1.0 - nSAFT, 3.0)); + setmSAFT(calcmSAFT()); + setMmin1SAFT(calcmmin1SAFT()); + setmdSAFT(calcmdSAFT()); + setAHSSAFT( + (4.0 * getNSAFT() - 3.0 * Math.pow(getNSAFT(), 2.0)) / Math.pow(1.0 - getNSAFT(), 2.0)); + daHSSAFTdN = ((4.0 - 6.0 * getNSAFT()) * Math.pow(1.0 - getNSAFT(), 2.0) + - (4.0 * getNSAFT() - 3 * Math.pow(getNSAFT(), 2.0)) * 2.0 * (1.0 - getNSAFT()) * (-1.0)) + / Math.pow(1.0 - getNSAFT(), 4.0); + daHSSAFTdNdN = + (-6.0 * Math.pow(1.0 - getNSAFT(), 2.0) + 2.0 * (1.0 - getNSAFT()) * (4.0 - 6 * getNSAFT())) + / Math.pow(1.0 - getNSAFT(), 4.0) + + ((8.0 - 12.0 * getNSAFT()) * Math.pow(1.0 - getNSAFT(), 3.0) + + (8.0 - 6.0 * Math.pow(getNSAFT(), 2.0)) * 3.0 * Math.pow(1.0 - getNSAFT(), 2.0)) + / Math.pow(1.0 - getNSAFT(), 6.0); + daHSSAFTdNdNdN = -36 / Math.pow((1 - getNSAFT()), 3) + + (18.0 * (4.0 - 6.0 * getNSAFT())) / Math.pow((1 - getNSAFT()), 4.0) + + (24.0 * (4.0 * getNSAFT() - 3.0 * Math.pow(getNSAFT(), 2.0))) + / Math.pow((1 - getNSAFT()), 5.0); + + dgHSSAFTdN = (-0.5 * Math.pow(1.0 - getNSAFT(), 3.0) + - (1.0 - getNSAFT() / 2.0) * 3.0 * Math.pow(1.0 - nSAFT, 2.0) * (-1.0)) + / Math.pow(1.0 - getNSAFT(), 6.0); + dgHSSAFTdNdN = -3.0 / 2.0 * Math.pow(1.0 - getNSAFT(), 2.0) / Math.pow(1.0 - getNSAFT(), 6.0) + + (-3.0 / 2.0 * Math.pow(1.0 - getNSAFT(), 4.0) + + 4.0 * Math.pow(1.0 - getNSAFT(), 3.0) * (3.0 - 3.0 / 2.0 * getNSAFT())) + / Math.pow(1.0 - getNSAFT(), 8.0); + dgHSSAFTdNdNdN = -6.0 / Math.pow(1.0 - getNSAFT(), 5.0) + - (12.0 * (3.0 - 1.5 * getNSAFT())) / Math.pow(1.0 - getNSAFT(), 6.0) + + (8 * (-1.5 * Math.pow(1.0 - getNSAFT(), 4) + + 4.0 * Math.pow(1.0 - getNSAFT(), 3) * (3.0 - 1.5 * getNSAFT()))) + / Math.pow(1.0 - getNSAFT(), 9); + + setF1dispVolTerm(ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() + / getVolumeSAFT()); + F1dispSumTerm = calcF1dispSumTerm(); + F1dispI1 = calcF1dispI1(); + F1dispVolTermdV = -ThermodynamicConstantsInterface.avagadroNumber * getNumberOfMolesInPhase() + / Math.pow(getVolumeSAFT(), 2.0); + F1dispVolTermdVdV = 2.0 * ThermodynamicConstantsInterface.avagadroNumber + * getNumberOfMolesInPhase() / Math.pow(getVolumeSAFT(), 3.0); + F1dispVolTermdVdVdV = -6.0 * ThermodynamicConstantsInterface.avagadroNumber + * getNumberOfMolesInPhase() / Math.pow(getVolumeSAFT(), 4.0); // added by rahmat - /** - *

- * calcdF1dispSumTermdT. - *

- * - * @return a double - */ - public double calcdF1dispSumTermdT() { - double temp1 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - temp1 += getComponent(i).getNumberOfMolesInPhase() - * getComponent(j).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() - * getComponent(j).getmSAFTi() - * Math.sqrt(getComponent(i).getEpsikSAFT() / temperature - * getComponent(j).getEpsikSAFT() / temperature) - * (1.0 - mixRule.getBinaryInteractionParameter(i, j)) - * Math.pow(0.5 * (getComponent(i).getSigmaSAFTi() - + getComponent(j).getSigmaSAFTi()), 3.0) - * (-1 / temperature); - } - } - return temp1 / Math.pow(getNumberOfMolesInPhase(), 2.0); - } + dF1dispI1dT = calcdF1dispI1dT(); + dF2dispI2dT = calcdF2dispI2dT(); + dF1dispSumTermdT = calcdF1dispSumTermdT(); + dF2dispSumTermdT = calcdF2dispSumTermdT(); + dF2dispZHCdT = calcdF2dispZHCdT(); - /** - *

- * calcdF2dispSumTermdT. - *

- * - * @return a double - */ - public double calcdF2dispSumTermdT() { - double temp1 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - temp1 += getComponent(i).getNumberOfMolesInPhase() - * getComponent(j).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() - * getComponent(j).getmSAFTi() - * (getComponent(i).getEpsikSAFT() / temperature - * getComponent(j).getEpsikSAFT() / temperature) - * Math.pow(1.0 - mixRule.getBinaryInteractionParameter(i, j), 2) - * Math.pow(0.5 * (getComponent(i).getSigmaSAFTi() - + getComponent(j).getSigmaSAFTi()), 3.0) - * (-2 / temperature); - } - } - return temp1 / Math.pow(getNumberOfMolesInPhase(), 2.0); - } - - /** {@inheritDoc} */ - @Override - public double calcF2dispSumTerm() { - double temp1 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - temp1 += getComponent(i).getNumberOfMolesInPhase() - * getComponent(j).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() - * getComponent(j).getmSAFTi() * getComponent(i).getEpsikSAFT() / temperature - * getComponent(j).getEpsikSAFT() / temperature - * Math.pow((1.0 - mixRule.getBinaryInteractionParameter(i, j)), 2.0) - * Math.pow(0.5 * (getComponent(i).getSigmaSAFTi() - + getComponent(j).getSigmaSAFTi()), 3.0); - } - } - return temp1 / Math.pow(getNumberOfMolesInPhase(), 2.0); - } - - /** {@inheritDoc} */ - @Override - public double calcF1dispI1dN() { - double temp1 = 0.0; - for (int i = 1; i < 7; i++) { - temp1 += i * getaSAFT(i, getmSAFT(), aConstSAFT) * Math.pow(getNSAFT(), i - 1.0); - } - return temp1; - } + F1dispI1dN = calcF1dispI1dN(); + F1dispI1dNdN = calcF1dispI1dNdN(); + F1dispI1dNdNdN = calcF1dispI1dNdNdN(); - /** {@inheritDoc} */ - @Override - public double calcF1dispI1dNdN() { - double temp1 = 0.0; - for (int i = 2; i < 7; i++) { - temp1 += (i - 1.0) * i * getaSAFT(i, getmSAFT(), aConstSAFT) - * Math.pow(getNSAFT(), i - 2.0); - } - return temp1; - } + F1dispI1dm = calcF1dispI1dm(); + F1dispI1dV = F1dispI1dN * getDnSAFTdV(); + F1dispI1dVdV = F1dispI1dNdN * getDnSAFTdV() * getDnSAFTdV() + F1dispI1dN * dnSAFTdVdV; // F1dispI1dNdN*dnSAFTdVdV; // added by Rahmat - /** - *

- * calcF1dispI1dNdNdN. - *

- * - * @return a double - */ - public double calcF1dispI1dNdNdN() { - double temp1 = 0.0; - for (int i = 2; i < 7; i++) { - temp1 += (i - 1.0) * (i - 2.0) * i * getaSAFT(i, getmSAFT(), aConstSAFT) - * Math.pow(getNSAFT(), i - 3.0); - } - return temp1; - } - - /** {@inheritDoc} */ - @Override - public double calcF1dispI1dm() { - double temp1 = 0.0; - for (int i = 0; i < 7; i++) { - temp1 += getaSAFTdm(i, getmSAFT(), aConstSAFT) * Math.pow(getNSAFT(), i); - } - return temp1; - } - - /** {@inheritDoc} */ - @Override - public double calcF2dispI2dN() { - double temp1 = 0.0; - for (int i = 1; i < 7; i++) { - temp1 += i * getaSAFT(i, getmSAFT(), bConstSAFT) * Math.pow(getNSAFT(), i - 1.0); - } - return temp1; - } - - /** {@inheritDoc} */ - @Override - public double calcF2dispI2dNdN() { - double temp1 = 0.0; - for (int i = 2; i < 7; i++) { - temp1 += (i - 1.0) * i * getaSAFT(i, getmSAFT(), bConstSAFT) - * Math.pow(getNSAFT(), i - 2.0); - } - return temp1; - } - - /** - *

- * calcF2dispI2dNdNdN. - *

- * - * @return a double - */ - public double calcF2dispI2dNdNdN() { - double temp1 = 0.0; - for (int i = 2; i < 7; i++) { - temp1 += (i - 1.0) * (i - 2.0) * i * getaSAFT(i, getmSAFT(), bConstSAFT) - * Math.pow(getNSAFT(), i - 3.0); - } - return temp1; - } - - /** {@inheritDoc} */ - @Override - public double calcF2dispI2dm() { - double temp1 = 0.0; - for (int i = 0; i < 7; i++) { - temp1 += getaSAFTdm(i, getmSAFT(), bConstSAFT) * Math.pow(getNSAFT(), i); - } - return temp1; - } - - /** {@inheritDoc} */ - @Override - public double calcF1dispI1() { - double temp1 = 0.0; - for (int i = 0; i < 7; i++) { - temp1 += getaSAFT(i, getmSAFT(), aConstSAFT) * Math.pow(getNSAFT(), i); - } - return temp1; - } - - // added by rahmat - /** - *

- * calcdF1dispI1dT. - *

- * - * @return a double - */ - public double calcdF1dispI1dT() { - double temp1 = 0.0; - for (int i = 0; i < 7; i++) { - temp1 += getaSAFT(i, getmSAFT(), aConstSAFT) * i * Math.pow(getNSAFT(), i - 1) - * dNSAFTdT; - } - return temp1; - } - - /** - *

- * calcdF2dispI2dT. - *

- * - * @return a double - */ - public double calcdF2dispI2dT() { - double temp1 = 0.0; - for (int i = 0; i < 7; i++) { - temp1 += getaSAFT(i, getmSAFT(), bConstSAFT) * i * Math.pow(getNSAFT(), i - 1) - * dNSAFTdT; - } - return temp1; - } - - /** {@inheritDoc} */ - @Override - public double calcF2dispI2() { - double temp1 = 0.0; - for (int i = 0; i < 7; i++) { - temp1 += getaSAFT(i, getmSAFT(), bConstSAFT) * Math.pow(getNSAFT(), i); - } - return temp1; - } - - /** {@inheritDoc} */ - @Override - public double getaSAFT(int i, double m, double ab[][]) { - return ab[0][i] + (m - 1.0) / m * ab[1][i] + (m - 1.0) / m * (m - 2.0) / m * ab[2][i]; - } - - /** {@inheritDoc} */ - @Override - public double getaSAFTdm(int i, double m, double ab[][]) { - return (m - (m - 1.0)) / (m * m) * ab[1][i] - + ((2.0 * m - 3.0) * m * m - 2 * m * (m * m - 3 * m + 2)) / Math.pow(m, 4.0) - * ab[2][i]; - } - - /** {@inheritDoc} */ - @Override - public double calcmdSAFT() { - double temp2 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - temp2 += getComponent(i).getNumberOfMolesInPhase() / getNumberOfMolesInPhase() - * getComponent(i).getmSAFTi() - * Math.pow(((ComponentPCSAFT) getComponent(i)).getdSAFTi(), 3.0); - } - - return temp2; - } - - /** {@inheritDoc} */ - @Override - public double calcmmin1SAFT() { - double temp2 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - temp2 += getComponent(i).getNumberOfMolesInPhase() / getNumberOfMolesInPhase() - * (getComponent(i).getmSAFTi() - 1.0); - } - - return temp2; - } - - /** {@inheritDoc} */ - @Override - public double calcdmeanSAFT() { - double temp = 0.0, temp2 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - temp += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() - * Math.pow(((ComponentPCSAFT) getComponent(i)).getdSAFTi(), 3.0); - temp2 += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi(); - } - return Math.pow(temp / temp2, 1.0 / 3.0); - } - - // need to check (modified by rahmat) - /** {@inheritDoc} */ - @Override - public double calcdSAFT() { - double temp1 = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - temp1 += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() - * Math.pow(((ComponentPCSAFT) getComponent(i)).getdSAFTi(), 3.0); - } - // System.out.println("d saft calc " + temp/getNumberOfMolesInPhase()); - return temp1 / getNumberOfMolesInPhase(); - } - - /** {@inheritDoc} */ - @Override - public double getNSAFT() { - return nSAFT; - } - - /** {@inheritDoc} */ - @Override - public void setNSAFT(double nSAFT) { - this.nSAFT = nSAFT; - } - - /** {@inheritDoc} */ - @Override - public double getDSAFT() { - return dSAFT; - } - - /** {@inheritDoc} */ - @Override - public void setDSAFT(double dSAFT) { - this.dSAFT = dSAFT; - } - - /** {@inheritDoc} */ - @Override - public double getGhsSAFT() { - return ghsSAFT; - } - - /** {@inheritDoc} */ - @Override - public void setGhsSAFT(double ghsSAFT) { - this.ghsSAFT = ghsSAFT; - } - - /** {@inheritDoc} */ - @Override - public double F_HC_SAFT() { - return getNumberOfMolesInPhase() - * (getmSAFT() * getAHSSAFT() - getMmin1SAFT() * Math.log(getGhsSAFT()));/// (ThermodynamicConstantsInterface.R*temperature); - } - - /** {@inheritDoc} */ - @Override - public double dF_HC_SAFTdV() { - return getNumberOfMolesInPhase() * (getmSAFT() * daHSSAFTdN * getDnSAFTdV() - - getMmin1SAFT() * 1.0 / getGhsSAFT() * getDgHSSAFTdN() * getDnSAFTdV());/// (ThermodynamicConstantsInterface.R*temperature); - } - - // edited by Rahmat - /** {@inheritDoc} */ - @Override - public double dFdT() { - return useHS * dF_HC_SAFTdT() + useDISP1 * dF_DISP1_SAFTdT() + useDISP2 * dF_DISP2_SAFTdT(); - } - - /** - *

- * dF_HC_SAFTdT. - *

- * - * @return a double - */ - public double dF_HC_SAFTdT() { - return getNumberOfMolesInPhase() * (getmSAFT() * daHSSAFTdN * dNSAFTdT - - getMmin1SAFT() * 1.0 / getGhsSAFT() * getDgHSSAFTdN() * dNSAFTdT);/// (ThermodynamicConstantsInterface.R*temperature); - } - - /** {@inheritDoc} */ - @Override - public double dF_HC_SAFTdVdV() { - return getNumberOfMolesInPhase() - * (getmSAFT() * daHSSAFTdNdN * getDnSAFTdV() * getDnSAFTdV() - + getmSAFT() * daHSSAFTdN * dnSAFTdVdV - + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) - * Math.pow(getDgHSSAFTdN(), 2.0) * getDnSAFTdV() * getDnSAFTdV() - - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * dgHSSAFTdNdN * dnSAFTdV - * dnSAFTdV - - getMmin1SAFT() * 1.0 / getGhsSAFT() * getDgHSSAFTdN() * dnSAFTdVdV); // (ThermodynamicConstantsInterface.R*temperature); - } - // additonal dF_HC_SAFTdVdVdV (by Rahmat) - - /** {@inheritDoc} */ - @Override - public double dF_HC_SAFTdVdVdV() { - return getNumberOfMolesInPhase() - * (getmSAFT() * daHSSAFTdNdNdN * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() - + getmSAFT() * daHSSAFTdNdN * 2.0 * dnSAFTdV * dnSAFTdVdV - + getmSAFT() * daHSSAFTdNdN * dnSAFTdV * dnSAFTdVdV - + getmSAFT() * daHSSAFTdN * dnSAFTdVdVdV - - 2.0 * getMmin1SAFT() * Math.pow(getGhsSAFT(), -3.0) - * Math.pow(getDgHSSAFTdN(), 3.0) * getDnSAFTdV() * getDnSAFTdV() - * getDnSAFTdV() - + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) * 2.0 * getDgHSSAFTdN() - * dgHSSAFTdNdN * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() - + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) - * Math.pow(getDgHSSAFTdN(), 2.0) * 2.0 * getDnSAFTdV() * dnSAFTdVdV - + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) * getDgHSSAFTdN() - * dgHSSAFTdNdN * dnSAFTdV * dnSAFTdV * dnSAFTdV - - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * dgHSSAFTdNdNdN * dnSAFTdV - * dnSAFTdV * dnSAFTdV - - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * dgHSSAFTdNdN * 2.0 - * dnSAFTdV * dnSAFTdVdV - + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) - * Math.pow(getDgHSSAFTdN(), 2) * dnSAFTdV * dnSAFTdVdV - - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * dgHSSAFTdNdN * dnSAFTdV - * dnSAFTdVdV - - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * getDgHSSAFTdN() - * dnSAFTdVdVdV); - } - - /** {@inheritDoc} */ - @Override - public double F_DISP1_SAFT() { - return getNumberOfMolesInPhase() * (-2.0 * ThermodynamicConstantsInterface.pi - * getF1dispVolTerm() * getF1dispSumTerm() * getF1dispI1());/// (ThermodynamicConstantsInterface.R*temperature); - } - - /** {@inheritDoc} */ - @Override - public double dF_DISP1_SAFTdV() { - return getNumberOfMolesInPhase() * (-2.0 * ThermodynamicConstantsInterface.pi - * F1dispVolTermdV * getF1dispSumTerm() * getF1dispI1() - - 2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTerm * getF1dispSumTerm() - * F1dispI1dV);/// (ThermodynamicConstantsInterface.R*temperature); - } - - /** {@inheritDoc} */ - @Override - public double dF_DISP1_SAFTdVdV() { - return getNumberOfMolesInPhase() * ((-2.0 * ThermodynamicConstantsInterface.pi - * F1dispVolTermdVdV * getF1dispSumTerm() * getF1dispI1()) - + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() - * F1dispI1dV) - + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() - * F1dispI1dV) - + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTerm * getF1dispSumTerm() - * F1dispI1dVdV)); - } - - // added by Rahmat - /** - *

- * dF_DISP1_SAFTdVdVdV. - *

- * - * @return a double - */ - public double dF_DISP1_SAFTdVdVdV() { - return getNumberOfMolesInPhase() * ((-2.0 * ThermodynamicConstantsInterface.pi - * F1dispVolTermdVdVdV * getF1dispSumTerm() * getF1dispI1()) - + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdVdV - * getF1dispSumTerm() * F1dispI1dV) - + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdVdV - * getF1dispSumTerm() * F1dispI1dV) - + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() - * F1dispI1dVdV) - + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdVdV - * getF1dispSumTerm() * F1dispI1dV) - + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() - * F1dispI1dVdV) - + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() - * F1dispI1dVdV) - + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTerm * getF1dispSumTerm() - * F1dispI1dVdVdV)); - } - + F1dispI1dVdVdV = F1dispI1dNdNdN * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() + + F1dispI1dN * 2.0 * getDnSAFTdV() * dnSAFTdVdV + F1dispI1dNdN * dnSAFTdVdV + + F1dispI1dN * dnSAFTdVdVdV; // F1dispI1dNdN*dnSAFTdVdV; + + setF2dispSumTerm(calcF2dispSumTerm()); + setF2dispI2(calcF2dispI2()); + F2dispI2dN = calcF2dispI2dN(); + F2dispI2dNdN = calcF2dispI2dNdN(); // added by Rahmat - /** - *

- * dF_DISP1_SAFTdT. - *

- * - * @return a double - */ - public double dF_DISP1_SAFTdT() { - return getNumberOfMolesInPhase() * (-2.0 * ThermodynamicConstantsInterface.pi - * (dF1dispVolTermdT * getF1dispSumTerm() * getF1dispI1() - + dF1dispSumTermdT * getF1dispVolTerm() * getF1dispI1() - + dF1dispI1dT * getF1dispVolTerm() * getF1dispSumTerm())); - } - - /** - *

- * dF_DISP2_SAFTdT. - *

- * - * @return a double - */ - public double dF_DISP2_SAFTdT() { - return getNumberOfMolesInPhase() * (-1 * ThermodynamicConstantsInterface.pi * getmSAFT()) - * getF1dispVolTerm() - * (dF2dispSumTermdT * getF2dispI2() * getF2dispZHC() - + dF2dispI2dT * getF2dispSumTerm() * getF2dispZHC() - + dF2dispZHCdT * getF2dispSumTerm() * getF2dispI2()); - } - - /** {@inheritDoc} */ - @Override - public double F_DISP2_SAFT() { - return getNumberOfMolesInPhase() * (-ThermodynamicConstantsInterface.pi * getmSAFT() - * getF1dispVolTerm() * getF2dispSumTerm() * getF2dispI2() * getF2dispZHC());/// (ThermodynamicConstantsInterface.R*temperature); - } - - /** {@inheritDoc} */ - @Override - public double dF_DISP2_SAFTdV() { - return getNumberOfMolesInPhase() * (-ThermodynamicConstantsInterface.pi * getmSAFT() - * F1dispVolTermdV * getF2dispSumTerm() * getF2dispI2() * getF2dispZHC() - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dV * getF2dispZHC() - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdV);/// (ThermodynamicConstantsInterface.R*temperature); - } - - /** {@inheritDoc} */ - @Override - public double dF_DISP2_SAFTdVdV() { - return getNumberOfMolesInPhase() * ((-ThermodynamicConstantsInterface.pi * getmSAFT() - * F1dispVolTermdVdV * getF2dispSumTerm() * getF2dispI2() * getF2dispZHC()) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * getF2dispZHC() * F2dispI2dV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdV) - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispI2dV * getF2dispZHC() - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dVdV * getF2dispZHC() - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdV - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdVdV)); - } - - /** - *

- * dF_DISP2_SAFTdVdVdV. - *

- * - * @return a double - */ - public double dF_DISP2_SAFTdVdVdV() { - return getNumberOfMolesInPhase() * ((-ThermodynamicConstantsInterface.pi * getmSAFT() - * F1dispVolTermdVdVdV * getF2dispSumTerm() * getF2dispI2() * getF2dispZHC()) - + (-ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV - * getF2dispSumTerm() * F2dispI2dV * getF2dispZHC()) - + (-ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdV) - + -(ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV - * getF2dispSumTerm() * getF2dispZHC() * F2dispI2dV) - + -(ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispZHCdV * F2dispI2dV) - + -(ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * getF2dispZHC() * F2dispI2dVdV) - + -(ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdVdV) - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV - * getF2dispSumTerm() * F2dispI2dV * getF2dispZHC() - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispI2dVdV * getF2dispZHC() - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdV - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispI2dVdV * getF2dispZHC() - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dVdVdV * getF2dispZHC() - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dVdV * F2dispZHCdV - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdV - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dVdV * F2dispZHCdV - - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdVdV - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdVdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dVdV * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdVdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdVdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdVdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdVdVdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdVdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dVdV * F2dispZHCdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdVdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdVdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * F2dispI2dV * F2dispZHCdVdV) - - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm - * getF2dispSumTerm() * getF2dispI2() * F2dispZHCdVdVdV)); - } - - /** {@inheritDoc} */ - @Override - public double getF() { - // System.out.println("F-HC " + useHS*F_HC_SAFT()); - - // System.out.println("F-DISP1 " + useDISP1*F_DISP1_SAFT()); - - // System.out.println("F-DISP2 " + useDISP2*F_DISP2_SAFT()); - return useHS * F_HC_SAFT() + useDISP1 * F_DISP1_SAFT() + useDISP2 * F_DISP2_SAFT(); - } + F2dispI2dNdNdN = calcF2dispI2dNdNdN(); - /** {@inheritDoc} */ - @Override - public double dFdV() { - // System.out.println("N-saft " + getNSAFT()); - // System.out.println("F-HC " + useHS*F_HC_SAFT()); - // System.out.println("F-DISP1 " + useDISP1*F_DISP1_SAFT()); + F2dispI2dm = calcF2dispI2dm(); - // System.out.println("F-DISP2 " + useDISP2*F_DISP2_SAFT()); - - return (useHS * dF_HC_SAFTdV() + useDISP1 * dF_DISP1_SAFTdV() - + useDISP2 * dF_DISP2_SAFTdV()) * 1.0e-5; - } - - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return (useHS * dF_HC_SAFTdVdV() + useDISP1 * dF_DISP1_SAFTdVdV() - + useDISP2 * dF_DISP2_SAFTdVdV()) * 1.0e-10; - } - - /** {@inheritDoc} */ - @Override - public double dFdVdVdV() { - return (useHS * dF_HC_SAFTdVdVdV() + useDISP1 * dF_DISP1_SAFTdVdVdV() - + useDISP2 * dF_DISP2_SAFTdVdVdV()) * 1.0e-20; - } - - /** {@inheritDoc} */ - @Override - public double getmdSAFT() { - return mdSAFT; - } - - /** {@inheritDoc} */ - @Override - public void setmdSAFT(double mdSAFT) { - this.mdSAFT = mdSAFT; - } - - /** {@inheritDoc} */ - @Override - public double getmSAFT() { - return mSAFT; - } - - /** {@inheritDoc} */ - @Override - public void setmSAFT(double mSAFT) { - this.mSAFT = mSAFT; - } - - /** {@inheritDoc} */ - @Override - public double getAHSSAFT() { - return aHSSAFT; - } - - /** {@inheritDoc} */ - @Override - public void setAHSSAFT(double aHSSAFT) { - this.aHSSAFT = aHSSAFT; - } - - /** {@inheritDoc} */ - @Override - public double getMmin1SAFT() { - return mmin1SAFT; - } - - /** {@inheritDoc} */ - @Override - public void setMmin1SAFT(double mmin1SAFT) { - this.mmin1SAFT = mmin1SAFT; - } - - /** {@inheritDoc} */ - @Override - public double getVolumeSAFT() { - return volumeSAFT; - } - - /** {@inheritDoc} */ - @Override - public void setVolumeSAFT(double volumeSAFT) { - this.volumeSAFT = volumeSAFT; - } - - /** {@inheritDoc} */ - @Override - public double getDgHSSAFTdN() { - return dgHSSAFTdN; - } - - /** {@inheritDoc} */ - @Override - public void setDgHSSAFTdN(double dgHSSAFTdN) { - this.dgHSSAFTdN = dgHSSAFTdN; - } + F2dispI2dV = F2dispI2dN * getDnSAFTdV(); + F2dispI2dVdV = F2dispI2dNdN * getDnSAFTdV() * getDnSAFTdV() + F2dispI2dN * dnSAFTdVdV; // F2dispI2dNdN*dnSAFTdVdV; - /** {@inheritDoc} */ - @Override - public double getDnSAFTdV() { - return dnSAFTdV; - } - - // added by rahmat - /** - *

- * getdDSAFTdT. - *

+ // added by Rahmat + F2dispI2dVdVdV = F2dispI2dNdNdN * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() + + F2dispI2dN * 2.0 * getDnSAFTdV() * dnSAFTdVdV + F2dispI2dNdN * dnSAFTdVdV + + F2dispI2dN * dnSAFTdVdVdV; + + F2dispZHC = calcF2dispZHC(); + F2dispZHCdN = calcF2dispZHCdN(); + F2dispZHCdNdN = calcF2dispZHCdNdN(); + F2dispZHCdNdNdN = calcF2dispZHCdNdNdN(); + + setF2dispZHCdm(calcF2dispZHCdm()); + F2dispZHCdV = F2dispZHCdN * getDnSAFTdV(); + F2dispZHCdVdV = F2dispZHCdNdN * getDnSAFTdV() * getDnSAFTdV() + F2dispZHCdN * dnSAFTdVdV; + // F2dispZHCdNdN*dnSAFTdVdV*0; + F2dispZHCdVdVdV = F2dispZHCdNdNdN * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() + + F2dispZHCdNdN * 2.0 * getDnSAFTdV() * dnSAFTdVdV + F2dispZHCdNdN * dnSAFTdVdV + + F2dispZHCdN * dnSAFTdVdVdV; + } + + /** {@inheritDoc} */ + @Override + public double calcF2dispZHC() { + double temp = 1.0 + + getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2.0)) + / Math.pow(1.0 - getNSAFT(), 4.0) + + (1.0 - getmSAFT()) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2.0) + 12 * Math.pow(getNSAFT(), 3.0) + - 2 * Math.pow(getNSAFT(), 4.0)) + / Math.pow((1.0 - getNSAFT()) * (2.0 - getNSAFT()), 2.0); + return 1.0 / temp; + } + + /** {@inheritDoc} */ + @Override + public double calcF2dispZHCdm() { + double temp = -Math.pow(F2dispZHC, 2.0); + return temp + * ((8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2.0)) / Math.pow(1.0 - getNSAFT(), 4.0) + - (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2.0) + 12 * Math.pow(getNSAFT(), 3.0) + - 2 * Math.pow(getNSAFT(), 4.0)) + / Math.pow((1.0 - getNSAFT()) * (2.0 - getNSAFT()), 2.0)); + } + + /** {@inheritDoc} */ + @Override + public double calcF2dispZHCdN() { + double temp0 = -Math.pow(F2dispZHC, 2.0); + double temp1 = Math.pow((1.0 - getNSAFT()) * (2.0 - getNSAFT()), 2.0); + double temp2 = 20.0 * getNSAFT() - 27.0 * Math.pow(getNSAFT(), 2.0) + + 12.0 * Math.pow(getNSAFT(), 3.0) - 2.0 * Math.pow(getNSAFT(), 4.0); + // ikke rett implementert + return temp0 * (getmSAFT() + * ((8.0 - 4.0 * getNSAFT()) * Math.pow(1.0 - getNSAFT(), 4.0) + - 4.0 * Math.pow(1.0 - getNSAFT(), 3.0) * (-1.0) + * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2.0))) + / Math.pow(1.0 - getNSAFT(), 8.0) + + (1.0 - getmSAFT()) * ((20.0 - (2.0 * 27.0) * getNSAFT() + + (12.0 * 3.0) * Math.pow(getNSAFT(), 2.0) - 8.0 * Math.pow(getNSAFT(), 3.0)) * temp1 + - (2.0 * (2.0 - 3.0 * getNSAFT() + Math.pow(getNSAFT(), 2.0)) + * (-3.0 + 2.0 * getNSAFT())) * temp2) + / Math.pow(temp1, 2.0)); + } + + /** {@inheritDoc} */ + @Override + public double calcF2dispZHCdNdN() { + double temp0 = 2.0 * Math.pow(F2dispZHC, 3.0); + double temp1 = Math.pow((1.0 - getNSAFT()) * (2.0 - getNSAFT()), 2.0); + double temp11 = Math.pow((1.0 - getNSAFT()) * (2.0 - getNSAFT()), 3.0); + double temp2 = 20.0 * getNSAFT() - 27.0 * Math.pow(getNSAFT(), 2.0) + + 12.0 * Math.pow(getNSAFT(), 3.0) - 2.0 * Math.pow(getNSAFT(), 4.0); + + double temp1der = + 2.0 * (2.0 - 3.0 * getNSAFT() + Math.pow(getNSAFT(), 2.0)) * (-3.0 + 2.0 * getNSAFT()); + double temp11der = 3.0 * Math.pow(2.0 - 3.0 * getNSAFT() + Math.pow(getNSAFT(), 2.0), 2.0) + * (-3.0 + 2.0 * getNSAFT()); + // ikke rett implementert + double temp3 = (getmSAFT() + * ((8.0 - 4.0 * getNSAFT()) * Math.pow(1.0 - getNSAFT(), 4.0) + - 4.0 * Math.pow(1.0 - getNSAFT(), 3.0) * (-1.0) + * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2.0))) + / Math.pow(1.0 - getNSAFT(), 8.0) + + (1.0 - getmSAFT()) * ((20.0 - (2.0 * 27.0) * getNSAFT() + + (12.0 * 3.0) * Math.pow(getNSAFT(), 2.0) - 8.0 * Math.pow(getNSAFT(), 3.0)) * temp1 + - (2.0 * (2.0 - 3.0 * getNSAFT() + Math.pow(getNSAFT(), 2.0)) + * (-3.0 + 2.0 * getNSAFT())) * temp2) + / Math.pow(temp1, 2.0)); + + double temp4 = -Math.pow(F2dispZHC, 2.0); + double dZdndn = getmSAFT() + * ((-4.0 * Math.pow(1.0 - getNSAFT(), 4.0) + - 4.0 * Math.pow(1.0 - getNSAFT(), 3.0) * (-1.0) * (8.0 - 4.0 * getNSAFT())) + / Math.pow(1.0 - getNSAFT(), 8.0) + + ((32.0 - 16.0 * getNSAFT()) * Math.pow(1.0 - getNSAFT(), 5.0) + - 5.0 * Math.pow(1.0 - getNSAFT(), 4.0) * (-1.0) + * (32.0 * getNSAFT() - 8.0 * Math.pow(getNSAFT(), 2.0))) + / Math.pow(1.0 - getNSAFT(), 10.0)) + + (1.0 - getmSAFT()) + * (((-54.0 + 72.0 * getNSAFT() - 24.0 * Math.pow(getNSAFT(), 2.0)) * temp1 + - temp1der * (20.0 - 54.0 * getNSAFT() + 36.0 * Math.pow(getNSAFT(), 2.0) + - 8.0 * Math.pow(getNSAFT(), 3.0))) + / Math.pow(temp1, 2.0) + - ((-40.0 * Math.pow(getNSAFT(), 4.0) + 240.0 * Math.pow(getNSAFT(), 3.0) + - 3.0 * 180.0 * Math.pow(getNSAFT(), 2.0) + 242.0 * 2.0 * getNSAFT() - 120.0) + * temp11 + - temp11der * (-8.0 * Math.pow(getNSAFT(), 5.0) + + 60.0 * Math.pow(getNSAFT(), 4.0) - 180.0 * Math.pow(getNSAFT(), 3.0) + + 242.0 * Math.pow(getNSAFT(), 2.0) - 120.0 * getNSAFT())) + / Math.pow(temp11, 2.0)); + + return temp0 * Math.pow(temp3, 2.0) + temp4 * dZdndn; + } + + /** + *

+ * calcF2dispZHCdNdNdN. + *

+ * + * @return a double + */ + public double calcF2dispZHCdNdNdN() { + double temp = -6 * Math.pow( + (getmSAFT() * (8.0 - 4.0 * getNSAFT()) / Math.pow((1.0 - getNSAFT()), 4) + 4 * getmSAFT() + * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2) / Math.pow((1.0 - getNSAFT()), 5) + + (1.0 - getmSAFT()) + * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) + - 8 * Math.pow(getNSAFT(), 3)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 2)) + + (2 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 3) * Math.pow((2.0 - getNSAFT()), 2)) + + (2 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 3)))), + 3) + / Math.pow((1.0 + + getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2)) + / Math.pow((1.0 - getNSAFT()), 4) + + (1.0 - getmSAFT()) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 2))), + 4) + + (6 * (getmSAFT() * (8.0 - 4.0 * getNSAFT()) / Math.pow((1.0 - getNSAFT()), 4) + + 4 * getmSAFT() * (8.0 * getNSAFT() - Math.pow(2.0 * getNSAFT(), 2)) + / Math.pow((1.0 - getNSAFT()), 5) + + (1.0 - getmSAFT()) + * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) + - 8 * Math.pow(getNSAFT(), 3)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 2)) + + (2 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 3) * Math.pow((2.0 - getNSAFT()), 2)) + + (2 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 3)))) + * (-4.0 * getmSAFT() / Math.pow((1.0 - getNSAFT()), 4) + + 8 * getmSAFT() * (8.0 - 4.0 * getNSAFT()) / Math.pow((1.0 - getNSAFT()), 5) + + 20 * getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2)) + / Math.pow((1.0 - getNSAFT()), 6) + + (1.0 - getmSAFT()) * (-54 + 72 * getNSAFT() - 24 * Math.pow(getNSAFT(), 2)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 2)) + + (4 * (1.0 - getmSAFT())) + * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) + - 8 * Math.pow(getNSAFT(), 3)) + / (Math.pow((1.0 - getNSAFT()), 3) * Math.pow((2.0 - getNSAFT()), 2)) + + (4 * (1.0 - getmSAFT())) + * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) + - 8 * Math.pow(getNSAFT(), 3)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 3)) + + (6 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 4) * Math.pow((2.0 - getNSAFT()), 2)) + + (8 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 3) * Math.pow((2.0 - getNSAFT()), 3)) + + (6 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 4))) + / Math + .pow( + 1.0 + getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2)) + / Math.pow((1.0 - getNSAFT()), 4) + + ((1.0 - getmSAFT()) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + + 12 * Math.pow(getNSAFT(), 3) - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 2))), + 3) + - (-48.0 * getmSAFT() / Math.pow((1.0 - getNSAFT()), 5) + + 60 * getmSAFT() * (8.0 - 4.0 * getNSAFT()) / Math.pow((1.0 - getNSAFT()), 6) + + 120 * getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2)) + / Math.pow((1.0 - getNSAFT()), 7) + + (1.0 - getmSAFT()) * (72 - 48 * getNSAFT()) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 2)) + + (6 * (1.0 - getmSAFT())) * (-54 + 72 * getNSAFT() - 24 * Math.pow(getNSAFT(), 2)) + / (Math.pow((1.0 - getNSAFT()), 3) * Math.pow((2.0 - getNSAFT()), 2)) + + (6 * (1.0 - getmSAFT())) * (-54 + 72 * getNSAFT() - 24 * Math.pow(getNSAFT(), 2)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 3)) + + (18 * (1.0 - getmSAFT())) + * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) + - 8 * Math.pow(getNSAFT(), 3)) + / (Math.pow((1.0 - getNSAFT()), 4) * Math.pow((2.0 - getNSAFT()), 2)) + + (24 * (1.0 - getmSAFT())) + * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) + - 8 * Math.pow(getNSAFT(), 3)) + / (Math.pow((1.0 - getNSAFT()), 3) * Math.pow((2.0 - getNSAFT()), 3)) + + (18 * (1.0 - getmSAFT())) + * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) + - 8 * Math.pow(getNSAFT(), 3)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 4)) + + (24 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 5) * Math.pow((2.0 - getNSAFT()), 2)) + + (36 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 4) * Math.pow((2.0 - getNSAFT()), 3)) + + (36 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 3) * Math.pow((2.0 - getNSAFT()), 4)) + + (24 * (1.0 - getmSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 5))) + / Math + .pow( + (1.0 + getmSAFT() * (8.0 * getNSAFT() - 2.0 * Math.pow(getNSAFT(), 2)) + / Math.pow((1.0 - getNSAFT()), 4) + + (1.0 - getmSAFT()) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + + 12 * Math.pow(getNSAFT(), 3) - 2 * Math.pow(getNSAFT(), 4)) + / (Math.pow((1.0 - getNSAFT()), 2) * Math.pow((2.0 - getNSAFT()), 2))), + 2); + + return temp; + } + + // added by rahmat + /** + *

+ * calcdF2dispZHCdT. + *

+ * + * @return a double + */ + public double calcdF2dispZHCdT() { + double temp0 = -Math.pow(F2dispZHC, 2.0); + double temp1 = getmSAFT() * ((8 - 4 * getNSAFT()) * dNSAFTdT * Math.pow(1 - getNSAFT(), 4) + 4 + * Math.pow(1 - getNSAFT(), 3) * dNSAFTdT * (8 * getNSAFT() - 2 * Math.pow(getNSAFT(), 2))) + / Math.pow(1 - getNSAFT(), 8); + double temp2a = (1 - getmSAFT()) + * (20 - 54 * getNSAFT() + 36 * Math.pow(getNSAFT(), 2) + 8 * Math.pow(getNSAFT(), 3)) + * dNSAFTdT * Math.pow((1 - getNSAFT()) * (2 - getNSAFT()), 2); + double temp2b = (1 - getmSAFT()) * 2 * ((1 - getNSAFT()) * (2 - getNSAFT())) + * (-1 * dNSAFTdT * (2 - getNSAFT()) + (-1) * dNSAFTdT * (1 - getNSAFT())) + * (20 * getNSAFT() - 27 * Math.pow(getNSAFT(), 2) + 12 * Math.pow(getNSAFT(), 3) + - 2 * Math.pow(getNSAFT(), 4)); + double temp2 = (temp2a - temp2b) / Math.pow((1 - getNSAFT()) * (2 - getNSAFT()), 4); + return temp0 * (temp1 + temp2); + } + + /** {@inheritDoc} */ + @Override + public double calcmSAFT() { + double temp2 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + temp2 += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() + / getNumberOfMolesInPhase(); + } + + return temp2; + } + + /** {@inheritDoc} */ + @Override + public double calcF1dispSumTerm() { + double temp1 = 0.0; + + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + temp1 += + getComponent(i).getNumberOfMolesInPhase() * getComponent(j).getNumberOfMolesInPhase() + * getComponent(i).getmSAFTi() * getComponent(j).getmSAFTi() + * Math.sqrt(getComponent(i).getEpsikSAFT() / temperature + * getComponent(j).getEpsikSAFT() / temperature) + * (1.0 - mixRule.getBinaryInteractionParameter(i, j)) * Math.pow( + 0.5 * (getComponent(i).getSigmaSAFTi() + getComponent(j).getSigmaSAFTi()), 3.0); + } + } + return temp1 / Math.pow(getNumberOfMolesInPhase(), 2.0); + } + + // added by rahmat + /** + *

+ * calcdF1dispSumTermdT. + *

+ * + * @return a double + */ + public double calcdF1dispSumTermdT() { + double temp1 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + temp1 += + getComponent(i).getNumberOfMolesInPhase() * getComponent(j).getNumberOfMolesInPhase() + * getComponent(i).getmSAFTi() * getComponent(j).getmSAFTi() + * Math.sqrt(getComponent(i).getEpsikSAFT() / temperature + * getComponent(j).getEpsikSAFT() / temperature) + * (1.0 - mixRule.getBinaryInteractionParameter(i, j)) + * Math.pow( + 0.5 * (getComponent(i).getSigmaSAFTi() + getComponent(j).getSigmaSAFTi()), 3.0) + * (-1 / temperature); + } + } + return temp1 / Math.pow(getNumberOfMolesInPhase(), 2.0); + } + + /** + *

+ * calcdF2dispSumTermdT. + *

+ * + * @return a double + */ + public double calcdF2dispSumTermdT() { + double temp1 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + temp1 += + getComponent(i).getNumberOfMolesInPhase() * getComponent(j).getNumberOfMolesInPhase() + * getComponent(i).getmSAFTi() * getComponent(j).getmSAFTi() + * (getComponent(i).getEpsikSAFT() + / temperature * getComponent(j).getEpsikSAFT() / temperature) + * Math.pow(1.0 - mixRule.getBinaryInteractionParameter(i, j), 2) + * Math.pow( + 0.5 * (getComponent(i).getSigmaSAFTi() + getComponent(j).getSigmaSAFTi()), 3.0) + * (-2 / temperature); + } + } + return temp1 / Math.pow(getNumberOfMolesInPhase(), 2.0); + } + + /** {@inheritDoc} */ + @Override + public double calcF2dispSumTerm() { + double temp1 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + temp1 += getComponent(i).getNumberOfMolesInPhase() + * getComponent(j).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() + * getComponent(j).getmSAFTi() * getComponent(i).getEpsikSAFT() / temperature + * getComponent(j).getEpsikSAFT() / temperature + * Math.pow((1.0 - mixRule.getBinaryInteractionParameter(i, j)), 2.0) * Math.pow( + 0.5 * (getComponent(i).getSigmaSAFTi() + getComponent(j).getSigmaSAFTi()), 3.0); + } + } + return temp1 / Math.pow(getNumberOfMolesInPhase(), 2.0); + } + + /** {@inheritDoc} */ + @Override + public double calcF1dispI1dN() { + double temp1 = 0.0; + for (int i = 1; i < 7; i++) { + temp1 += i * getaSAFT(i, getmSAFT(), aConstSAFT) * Math.pow(getNSAFT(), i - 1.0); + } + return temp1; + } + + /** {@inheritDoc} */ + @Override + public double calcF1dispI1dNdN() { + double temp1 = 0.0; + for (int i = 2; i < 7; i++) { + temp1 += (i - 1.0) * i * getaSAFT(i, getmSAFT(), aConstSAFT) * Math.pow(getNSAFT(), i - 2.0); + } + return temp1; + } + + // added by Rahmat + /** + *

+ * calcF1dispI1dNdNdN. + *

+ * + * @return a double + */ + public double calcF1dispI1dNdNdN() { + double temp1 = 0.0; + for (int i = 2; i < 7; i++) { + temp1 += (i - 1.0) * (i - 2.0) * i * getaSAFT(i, getmSAFT(), aConstSAFT) + * Math.pow(getNSAFT(), i - 3.0); + } + return temp1; + } + + /** {@inheritDoc} */ + @Override + public double calcF1dispI1dm() { + double temp1 = 0.0; + for (int i = 0; i < 7; i++) { + temp1 += getaSAFTdm(i, getmSAFT(), aConstSAFT) * Math.pow(getNSAFT(), i); + } + return temp1; + } + + /** {@inheritDoc} */ + @Override + public double calcF2dispI2dN() { + double temp1 = 0.0; + for (int i = 1; i < 7; i++) { + temp1 += i * getaSAFT(i, getmSAFT(), bConstSAFT) * Math.pow(getNSAFT(), i - 1.0); + } + return temp1; + } + + /** {@inheritDoc} */ + @Override + public double calcF2dispI2dNdN() { + double temp1 = 0.0; + for (int i = 2; i < 7; i++) { + temp1 += (i - 1.0) * i * getaSAFT(i, getmSAFT(), bConstSAFT) * Math.pow(getNSAFT(), i - 2.0); + } + return temp1; + } + + /** + *

+ * calcF2dispI2dNdNdN. + *

+ * + * @return a double + */ + public double calcF2dispI2dNdNdN() { + double temp1 = 0.0; + for (int i = 2; i < 7; i++) { + temp1 += (i - 1.0) * (i - 2.0) * i * getaSAFT(i, getmSAFT(), bConstSAFT) + * Math.pow(getNSAFT(), i - 3.0); + } + return temp1; + } + + /** {@inheritDoc} */ + @Override + public double calcF2dispI2dm() { + double temp1 = 0.0; + for (int i = 0; i < 7; i++) { + temp1 += getaSAFTdm(i, getmSAFT(), bConstSAFT) * Math.pow(getNSAFT(), i); + } + return temp1; + } + + /** {@inheritDoc} */ + @Override + public double calcF1dispI1() { + double temp1 = 0.0; + for (int i = 0; i < 7; i++) { + temp1 += getaSAFT(i, getmSAFT(), aConstSAFT) * Math.pow(getNSAFT(), i); + } + return temp1; + } + + // added by rahmat + /** + *

+ * calcdF1dispI1dT. + *

+ * + * @return a double + */ + public double calcdF1dispI1dT() { + double temp1 = 0.0; + for (int i = 0; i < 7; i++) { + temp1 += getaSAFT(i, getmSAFT(), aConstSAFT) * i * Math.pow(getNSAFT(), i - 1) * dNSAFTdT; + } + return temp1; + } + + /** + *

+ * calcdF2dispI2dT. + *

+ * + * @return a double + */ + public double calcdF2dispI2dT() { + double temp1 = 0.0; + for (int i = 0; i < 7; i++) { + temp1 += getaSAFT(i, getmSAFT(), bConstSAFT) * i * Math.pow(getNSAFT(), i - 1) * dNSAFTdT; + } + return temp1; + } + + /** {@inheritDoc} */ + @Override + public double calcF2dispI2() { + double temp1 = 0.0; + for (int i = 0; i < 7; i++) { + temp1 += getaSAFT(i, getmSAFT(), bConstSAFT) * Math.pow(getNSAFT(), i); + } + return temp1; + } + + /** {@inheritDoc} */ + @Override + public double getaSAFT(int i, double m, double[][] ab) { + return ab[0][i] + (m - 1.0) / m * ab[1][i] + (m - 1.0) / m * (m - 2.0) / m * ab[2][i]; + } + + /** {@inheritDoc} */ + @Override + public double getaSAFTdm(int i, double m, double[][] ab) { + return (m - (m - 1.0)) / (m * m) * ab[1][i] + + ((2.0 * m - 3.0) * m * m - 2 * m * (m * m - 3 * m + 2)) / Math.pow(m, 4.0) * ab[2][i]; + } + + /** {@inheritDoc} */ + @Override + public double calcmdSAFT() { + double temp2 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + temp2 += getComponent(i).getNumberOfMolesInPhase() / getNumberOfMolesInPhase() + * getComponent(i).getmSAFTi() + * Math.pow(((ComponentPCSAFT) getComponent(i)).getdSAFTi(), 3.0); + } + + return temp2; + } + + /** {@inheritDoc} */ + @Override + public double calcmmin1SAFT() { + double temp2 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + temp2 += getComponent(i).getNumberOfMolesInPhase() / getNumberOfMolesInPhase() + * (getComponent(i).getmSAFTi() - 1.0); + } + + return temp2; + } + + /** {@inheritDoc} */ + @Override + public double calcdmeanSAFT() { + double temp = 0.0; + double temp2 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + temp += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() + * Math.pow(((ComponentPCSAFT) getComponent(i)).getdSAFTi(), 3.0); + temp2 += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi(); + } + return Math.pow(temp / temp2, 1.0 / 3.0); + } + + // need to check (modified by rahmat) + /** {@inheritDoc} */ + @Override + public double calcdSAFT() { + double temp1 = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + temp1 += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() + * Math.pow(((ComponentPCSAFT) getComponent(i)).getdSAFTi(), 3.0); + } + // System.out.println("d saft calc " + temp/getNumberOfMolesInPhase()); + return temp1 / getNumberOfMolesInPhase(); + } + + /** {@inheritDoc} */ + @Override + public double F_HC_SAFT() { + return getNumberOfMolesInPhase() + * (getmSAFT() * getAHSSAFT() - getMmin1SAFT() * Math.log(getGhsSAFT())); + // (ThermodynamicConstantsInterface.R*temperature); + } + + /** {@inheritDoc} */ + @Override + public double dF_HC_SAFTdV() { + return getNumberOfMolesInPhase() * (getmSAFT() * daHSSAFTdN * getDnSAFTdV() + - getMmin1SAFT() * 1.0 / getGhsSAFT() * getDgHSSAFTdN() * getDnSAFTdV()); + // (ThermodynamicConstantsInterface.R*temperature); + } + + // edited by Rahmat + /** {@inheritDoc} */ + @Override + public double dFdT() { + return useHS * dF_HC_SAFTdT() + useDISP1 * dF_DISP1_SAFTdT() + useDISP2 * dF_DISP2_SAFTdT(); + } + + /** + *

+ * dF_HC_SAFTdT. + *

+ * + * @return a double + */ + public double dF_HC_SAFTdT() { + return getNumberOfMolesInPhase() * (getmSAFT() * daHSSAFTdN * dNSAFTdT + - getMmin1SAFT() * 1.0 / getGhsSAFT() * getDgHSSAFTdN() * dNSAFTdT); + // (ThermodynamicConstantsInterface.R*temperature); + } + + /** {@inheritDoc} */ + @Override + public double dF_HC_SAFTdVdV() { + return getNumberOfMolesInPhase() * (getmSAFT() * daHSSAFTdNdN * getDnSAFTdV() * getDnSAFTdV() + + getmSAFT() * daHSSAFTdN * dnSAFTdVdV + + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) * Math.pow(getDgHSSAFTdN(), 2.0) + * getDnSAFTdV() * getDnSAFTdV() + - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * dgHSSAFTdNdN * dnSAFTdV * dnSAFTdV + - getMmin1SAFT() * 1.0 / getGhsSAFT() * getDgHSSAFTdN() * dnSAFTdVdV); + // (ThermodynamicConstantsInterface.R*temperature); + } + // additonal dF_HC_SAFTdVdVdV (by Rahmat) + + /** {@inheritDoc} */ + @Override + public double dF_HC_SAFTdVdVdV() { + return getNumberOfMolesInPhase() + * (getmSAFT() * daHSSAFTdNdNdN * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() + + getmSAFT() * daHSSAFTdNdN * 2.0 * dnSAFTdV * dnSAFTdVdV + + getmSAFT() * daHSSAFTdNdN * dnSAFTdV * dnSAFTdVdV + + getmSAFT() * daHSSAFTdN * dnSAFTdVdVdV + - 2.0 * getMmin1SAFT() * Math.pow(getGhsSAFT(), -3.0) * Math.pow(getDgHSSAFTdN(), 3.0) + * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() + + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) * 2.0 * getDgHSSAFTdN() * dgHSSAFTdNdN + * getDnSAFTdV() * getDnSAFTdV() * getDnSAFTdV() + + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) * Math.pow(getDgHSSAFTdN(), 2.0) * 2.0 + * getDnSAFTdV() * dnSAFTdVdV + + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) * getDgHSSAFTdN() * dgHSSAFTdNdN + * dnSAFTdV * dnSAFTdV * dnSAFTdV + - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * dgHSSAFTdNdNdN * dnSAFTdV * dnSAFTdV + * dnSAFTdV + - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * dgHSSAFTdNdN * 2.0 * dnSAFTdV + * dnSAFTdVdV + + getMmin1SAFT() * Math.pow(getGhsSAFT(), -2.0) * Math.pow(getDgHSSAFTdN(), 2) + * dnSAFTdV * dnSAFTdVdV + - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * dgHSSAFTdNdN * dnSAFTdV * dnSAFTdVdV + - getMmin1SAFT() * Math.pow(getGhsSAFT(), -1.0) * getDgHSSAFTdN() * dnSAFTdVdVdV); + } + + /** {@inheritDoc} */ + @Override + public double F_DISP1_SAFT() { + return getNumberOfMolesInPhase() * (-2.0 * ThermodynamicConstantsInterface.pi + * getF1dispVolTerm() * getF1dispSumTerm() * getF1dispI1()); // (ThermodynamicConstantsInterface.R*temperature); + } + + /** {@inheritDoc} */ + @Override + public double dF_DISP1_SAFTdV() { + return getNumberOfMolesInPhase() * (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV + * getF1dispSumTerm() * getF1dispI1() + - 2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTerm * getF1dispSumTerm() + * F1dispI1dV); // (ThermodynamicConstantsInterface.R*temperature); + } + + /** {@inheritDoc} */ + @Override + public double dF_DISP1_SAFTdVdV() { + return getNumberOfMolesInPhase() * ((-2.0 * ThermodynamicConstantsInterface.pi + * F1dispVolTermdVdV * getF1dispSumTerm() * getF1dispI1()) + + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() + * F1dispI1dV) + + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() + * F1dispI1dV) + + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTerm * getF1dispSumTerm() + * F1dispI1dVdV)); + } + + // added by Rahmat + /** + *

+ * dF_DISP1_SAFTdVdVdV. + *

+ * + * @return a double + */ + public double dF_DISP1_SAFTdVdVdV() { + return getNumberOfMolesInPhase() * ((-2.0 * ThermodynamicConstantsInterface.pi + * F1dispVolTermdVdVdV * getF1dispSumTerm() * getF1dispI1()) + + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdVdV * getF1dispSumTerm() + * F1dispI1dV) + + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdVdV * getF1dispSumTerm() + * F1dispI1dV) + + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() + * F1dispI1dVdV) + + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdVdV * getF1dispSumTerm() + * F1dispI1dV) + + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() + * F1dispI1dVdV) + + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTermdV * getF1dispSumTerm() + * F1dispI1dVdV) + + (-2.0 * ThermodynamicConstantsInterface.pi * F1dispVolTerm * getF1dispSumTerm() + * F1dispI1dVdVdV)); + } + + // added by Rahmat + /** + *

+ * dF_DISP1_SAFTdT. + *

+ * + * @return a double + */ + public double dF_DISP1_SAFTdT() { + return getNumberOfMolesInPhase() * (-2.0 * ThermodynamicConstantsInterface.pi + * (dF1dispVolTermdT * getF1dispSumTerm() * getF1dispI1() + + dF1dispSumTermdT * getF1dispVolTerm() * getF1dispI1() + + dF1dispI1dT * getF1dispVolTerm() * getF1dispSumTerm())); + } + + /** + *

+ * dF_DISP2_SAFTdT. + *

+ * + * @return a double + */ + public double dF_DISP2_SAFTdT() { + return getNumberOfMolesInPhase() * (-1 * ThermodynamicConstantsInterface.pi * getmSAFT()) + * getF1dispVolTerm() + * (dF2dispSumTermdT * getF2dispI2() * getF2dispZHC() + + dF2dispI2dT * getF2dispSumTerm() * getF2dispZHC() + + dF2dispZHCdT * getF2dispSumTerm() * getF2dispI2()); + } + + /** {@inheritDoc} */ + @Override + public double F_DISP2_SAFT() { + return getNumberOfMolesInPhase() * (-ThermodynamicConstantsInterface.pi * getmSAFT() + * getF1dispVolTerm() * getF2dispSumTerm() * getF2dispI2() * getF2dispZHC()); + // (ThermodynamicConstantsInterface.R*temperature); + } + + /** {@inheritDoc} */ + @Override + public double dF_DISP2_SAFTdV() { + return getNumberOfMolesInPhase() * (-ThermodynamicConstantsInterface.pi * getmSAFT() + * F1dispVolTermdV * getF2dispSumTerm() * getF2dispI2() * getF2dispZHC() + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dV * getF2dispZHC() + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdV); // (ThermodynamicConstantsInterface.R*temperature); + } + + /** {@inheritDoc} */ + @Override + public double dF_DISP2_SAFTdVdV() { + return getNumberOfMolesInPhase() * ((-ThermodynamicConstantsInterface.pi * getmSAFT() + * F1dispVolTermdVdV * getF2dispSumTerm() * getF2dispI2() * getF2dispZHC()) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * getF2dispZHC() * F2dispI2dV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdV) + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispI2dV * getF2dispZHC() + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dVdV * getF2dispZHC() + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdV + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdVdV)); + } + + /** + *

+ * dF_DISP2_SAFTdVdVdV. + *

+ * + * @return a double + */ + public double dF_DISP2_SAFTdVdVdV() { + return getNumberOfMolesInPhase() * ((-ThermodynamicConstantsInterface.pi * getmSAFT() + * F1dispVolTermdVdVdV * getF2dispSumTerm() * getF2dispI2() * getF2dispZHC()) + + (-ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV * getF2dispSumTerm() + * F2dispI2dV * getF2dispZHC()) + + (-ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdV) + + -(ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV * getF2dispSumTerm() + * getF2dispZHC() * F2dispI2dV) + + -(ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispZHCdV * F2dispI2dV) + + -(ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * getF2dispZHC() * F2dispI2dVdV) + + -(ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdVdV) + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV * getF2dispSumTerm() + * F2dispI2dV * getF2dispZHC() + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispI2dVdV * getF2dispZHC() + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdV + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispI2dVdV * getF2dispZHC() + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dVdVdV * getF2dispZHC() + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dVdV * F2dispZHCdV + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdV + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dVdV * F2dispZHCdV + - ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdVdV + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdVdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dVdV * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdVdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdVdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdVdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdVdVdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdVdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdVdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dVdV * F2dispZHCdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdVdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTermdV * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdVdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * F2dispI2dV * F2dispZHCdVdV) + - (ThermodynamicConstantsInterface.pi * getmSAFT() * F1dispVolTerm * getF2dispSumTerm() + * getF2dispI2() * F2dispZHCdVdVdV)); + } + + /** {@inheritDoc} */ + @Override + public double getF() { + // System.out.println("F-HC " + useHS*F_HC_SAFT()); + + // System.out.println("F-DISP1 " + useDISP1*F_DISP1_SAFT()); + + // System.out.println("F-DISP2 " + useDISP2*F_DISP2_SAFT()); + return useHS * F_HC_SAFT() + useDISP1 * F_DISP1_SAFT() + useDISP2 * F_DISP2_SAFT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + // System.out.println("N-saft " + getNSAFT()); + // System.out.println("F-HC " + useHS*F_HC_SAFT()); + // System.out.println("F-DISP1 " + useDISP1*F_DISP1_SAFT()); + + // System.out.println("F-DISP2 " + useDISP2*F_DISP2_SAFT()); + + return (useHS * dF_HC_SAFTdV() + useDISP1 * dF_DISP1_SAFTdV() + useDISP2 * dF_DISP2_SAFTdV()) + * 1.0e-5; + } + + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return (useHS * dF_HC_SAFTdVdV() + useDISP1 * dF_DISP1_SAFTdVdV() + + useDISP2 * dF_DISP2_SAFTdVdV()) * 1.0e-10; + } + + /** {@inheritDoc} */ + @Override + public double dFdVdVdV() { + return (useHS * dF_HC_SAFTdVdVdV() + useDISP1 * dF_DISP1_SAFTdVdVdV() + + useDISP2 * dF_DISP2_SAFTdVdVdV()) * 1.0e-20; + } + + // added by rahmat + /** + *

+ * getdDSAFTdT. + *

+ * + * @return a double + */ + public double getdDSAFTdT() { + double temp = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + temp += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() + / getNumberOfMolesInPhase() * 3 + * Math.pow(((ComponentPCSAFT) getComponent(i)).getdSAFTi(), 2.0) + * (-1.08 / Math.pow(temperature, 2)) * Math.pow(getComponent(i).getSigmaSAFTi(), 3) + * Math.pow(1 - 0.12 * Math.exp(-3 * getComponent(i).getEpsikSAFT() / temperature), 2) + * getComponent(i).getEpsikSAFT() + * Math.exp(-3 * getComponent(i).getEpsikSAFT() / temperature); + } + return temp; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + // double BonV = phase== 0 ? 0.99:1e-5; + if (BonV < 0) { + BonV = 1.0e-6; + } + if (BonV > 1.0) { + BonV = 1.0 - 1.0e-6; + } + // double BonVold = BonV; + double Btemp = 0; + double dh = 0; + double h = 0; + // double Dtemp = 0, hOld = 0, dhOld = 0, gvvv = 0, fvvv = 0, d2 = 0, dhh = 1; + double d1 = 0; + Btemp = getB(); + // Dtemp = getA(); + if (Btemp <= 0) { + logger.info("b negative in volume calc"); + } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; + double oldMolarVolume = 0.0; + // System.out.println("volume " + getVolume()); + do { + iterations++; + this.volInit(); + oldMolarVolume = getMolarVolume(); + h = pressure - calcPressure(); + dh = -calcPressuredV(); + d1 = -h / dh; + double newVolume = getMolarVolume() + 0.9 * d1 / numberOfMolesInPhase; + if (newVolume > 1e-100) { + setMolarVolume(newVolume); + } else { + setMolarVolume(oldMolarVolume / 10.0); + } + + /* + * BonVold = BonV; //BonV = BonVold; h = BonVold - + * Btemp/numberOfMolesInPhase*dFdV()-pressure*Btemp/(numberOfMolesInPhase*R* temperature); dh + * = 1.0 + Btemp/Math.pow(BonVold,2.0)*(Btemp/numberOfMolesInPhase*dFdVdV()); //dhh = + * -2.0*Btemp/Math.pow(BonV,3.0)*(Btemp/numberOfMolesInPhase*dFdVdV())-Math.pow( + * Btemp,2.0)/Math.pow(BonV,4.0)*(Btemp/numberOfMolesInPhase*dFdVdVdV()); + * + * //made by Rahmat + * + * BonV = BonVold - 0.5* (2* h * dh / ((2* Math.pow(dh,2) - h * dhh))); + * + * double dBonV = BonV - BonVold; dhh = (dh - dhOld)/ dBonV; dhOld = dh; + * + * hOld = h; + * + * //d1 = - h/dh; //d2 = - dh/dhh; //BonV += d1; //*(1.0+0.5*-1.0); /* + * if(Math.abs(d1/d2)<=1.0){ BonV += d1*(1.0+0.5*d1/d2); } else if(d1/d2<-1){ BonV += + * d1*(1.0+0.5*-1.0); } else if(d1/d2>1){ BonV += d2; double hnew = h +d2*-h/d1; + * if(Math.abs(hnew)>Math.abs(h)){ System.out.println("volume correction needed...."); BonV = + * phase== 1 ? 2.0/(2.0+temperature/getPseudoCriticalTemperature()):pressure*getB()/( + * numberOfMolesInPhase*temperature*R); } } + * + * if(BonV>1){ BonV=1.0-1.0e-6; BonVold=10; } if (BonV < 0) { BonV = 1.0e-16; BonVold = 10; } + */ + // setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while (Math.abs((oldMolarVolume - getMolarVolume()) / oldMolarVolume) > 1.0e-10 + && iterations < 100); + // while(Math.abs((BonV-BonVold)/BonV)>1.0e-10 && iterations<500); + + // while(Math.abs((h-hOld)/h)>1.0e-10 && iterations<6000); + // System.out.println("error BonV " + Math.abs((BonV-BonVold)/BonV)); + // System.out.println("iterations " + iterations); + /* + * if(BonV<0){ BonV = pressure*getB()/(numberOfMolesInPhase*temperature*R); setMolarVolume(1.0 / + * BonV * Btemp / numberOfMolesInPhase); Z = pressure*getMolarVolume()/(R*temperature); } + * if(iterations>=6000) throw new util.exception.TooManyIterationsException(); + * if(Double.isNaN(getMolarVolume())) throw new util.exception.IsNaNException(); * - * @return a double + * // if(pt==0) System.out.println("density " + getDensity()); //"BonV: " + BonV + + * " "+" itert: " + iterations +" " + " phase " + pt+ " " + h + " " +dh + " B " + Btemp + + * " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); */ - public double getdDSAFTdT() { - double temp = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - temp += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getmSAFTi() - / getNumberOfMolesInPhase() * 3 - * Math.pow(((ComponentPCSAFT) getComponent(i)).getdSAFTi(), 2.0) - * (-1.08 / Math.pow(temperature, 2)) - * Math.pow(getComponent(i).getSigmaSAFTi(), 3) - * Math.pow( - 1 - 0.12 * Math.exp(-3 * getComponent(i).getEpsikSAFT() / temperature), - 2) - * getComponent(i).getEpsikSAFT() - * Math.exp(-3 * getComponent(i).getEpsikSAFT() / temperature); - } - return temp; - } - - /** {@inheritDoc} */ - @Override - public void setDnSAFTdV(double dnSAFTdV) { - this.dnSAFTdV = dnSAFTdV; - } - - /** {@inheritDoc} */ - @Override - public double getF1dispVolTerm() { - return F1dispVolTerm; - } - - /** {@inheritDoc} */ - @Override - public void setF1dispVolTerm(double F1dispVolTerm) { - this.F1dispVolTerm = F1dispVolTerm; - } - - /** {@inheritDoc} */ - @Override - public double getF1dispSumTerm() { - return F1dispSumTerm; - } - - /** {@inheritDoc} */ - @Override - public double getF1dispI1() { - return F1dispI1; - } - - /** {@inheritDoc} */ - @Override - public double getF2dispI2() { - return F2dispI2; - } - - /** {@inheritDoc} */ - @Override - public void setF2dispI2(double F2dispI2) { - this.F2dispI2 = F2dispI2; - } - - /** {@inheritDoc} */ - @Override - public double getF2dispZHC() { - return F2dispZHC; - } - - /** {@inheritDoc} */ - @Override - public void setF2dispZHC(double F2dispZHC) { - this.F2dispZHC = F2dispZHC; - } - - /** {@inheritDoc} */ - @Override - public double getF2dispZHCdN() { - return F2dispZHCdN; - } - - /** {@inheritDoc} */ - @Override - public double getF2dispZHCdm() { - return F2dispZHCdm; - } - - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phase == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - // double BonV = phase== 0 ? 0.99:1e-5; - - if (BonV < 0) { - BonV = 1.0e-6; - } - if (BonV > 1.0) { - BonV = 1.0 - 1.0e-6; - } - // double BonVold = BonV; - double Btemp = 0, dh = 0, h = 0; - // double Dtemp = 0, hOld = 0, dhOld = 0, gvvv = 0, fvvv = 0, d2 = 0, dhh = 1; - double d1 = 0; - Btemp = getB(); - // Dtemp = getA(); - if (Btemp <= 0) { - logger.info("b negative in volume calc"); - } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - double oldMolarVolume = 0.0; - // System.out.println("volume " + getVolume()); - do { - iterations++; - this.volInit(); - oldMolarVolume = getMolarVolume(); - h = pressure - calcPressure(); - dh = -calcPressuredV(); - d1 = -h / dh; - double newVolume = getMolarVolume() + 0.9 * d1 / numberOfMolesInPhase; - if (newVolume > 1e-100) { - setMolarVolume(newVolume); - } else { - setMolarVolume(oldMolarVolume / 10.0); - } - - /* - * BonVold = BonV; //BonV = BonVold; h = BonVold - - * Btemp/numberOfMolesInPhase*dFdV()-pressure*Btemp/(numberOfMolesInPhase*R* - * temperature); dh = 1.0 + - * Btemp/Math.pow(BonVold,2.0)*(Btemp/numberOfMolesInPhase*dFdVdV()); //dhh = - * -2.0*Btemp/Math.pow(BonV,3.0)*(Btemp/numberOfMolesInPhase*dFdVdV())-Math.pow( - * Btemp,2.0)/Math.pow(BonV,4.0)*(Btemp/numberOfMolesInPhase*dFdVdVdV()); - * - * //made by Rahmat - * - * BonV = BonVold - 0.5* (2* h * dh / ((2* Math.pow(dh,2) - h * dhh))); - * - * double dBonV = BonV - BonVold; dhh = (dh - dhOld)/ dBonV; dhOld = dh; - * - * hOld = h; - * - * - * //d1 = - h/dh; //d2 = - dh/dhh; //BonV += d1;//*(1.0+0.5*-1.0); /* - * if(Math.abs(d1/d2)<=1.0){ BonV += d1*(1.0+0.5*d1/d2); } else if(d1/d2<-1){ BonV += - * d1*(1.0+0.5*-1.0); } else if(d1/d2>1){ BonV += d2; double hnew = h +d2*-h/d1; - * if(Math.abs(hnew)>Math.abs(h)){ System.out.println("volume correction needed...."); - * BonV = phase== 1 ? - * 2.0/(2.0+temperature/getPseudoCriticalTemperature()):pressure*getB()/( - * numberOfMolesInPhase*temperature*R); } } - * - * if(BonV>1){ BonV=1.0-1.0e-6; BonVold=10; } if (BonV < 0) { BonV = 1.0e-16; BonVold = - * 10; } - */ - // setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - // System.out.println("BonV " + BonV); - } while (Math.abs((oldMolarVolume - getMolarVolume()) / oldMolarVolume) > 1.0e-10 - && iterations < 100); - // while(Math.abs((BonV-BonVold)/BonV)>1.0e-10 && iterations<500); - - // while(Math.abs((h-hOld)/h)>1.0e-10 && iterations<6000); - // System.out.println("error BonV " + Math.abs((BonV-BonVold)/BonV)); - // System.out.println("iterations " + iterations); - /* - * if(BonV<0){ BonV = pressure*getB()/(numberOfMolesInPhase*temperature*R); - * setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); Z = - * pressure*getMolarVolume()/(R*temperature); - * - * } if(iterations>=6000) throw new util.exception.TooManyIterationsException(); - * if(Double.isNaN(getMolarVolume())) throw new util.exception.IsNaNException(); - * - * // if(phaseType==0) System.out.println("density " + getDensity());//"BonV: " + BonV + - * " "+" itert: " + iterations +" " + " phase " + phaseType+ " " + h + " " +dh + " B " + - * Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - */ - return getMolarVolume(); - } - - /** {@inheritDoc} */ - @Override - public double getDmeanSAFT() { - return dmeanSAFT; - } - - /** {@inheritDoc} */ - @Override - public void setDmeanSAFT(double dmeanSAFT) { - this.dmeanSAFT = dmeanSAFT; - } - - /** {@inheritDoc} */ - @Override - public double getNmSAFT() { - return nmSAFT; - } - - /** {@inheritDoc} */ - @Override - public void setNmSAFT(double nmSAFT) { - this.nmSAFT = nmSAFT; - } - - /** {@inheritDoc} */ - @Override - public double getF2dispSumTerm() { - return F2dispSumTerm; - } - - /** {@inheritDoc} */ - @Override - public void setF2dispSumTerm(double F2dispSumTerm) { - this.F2dispSumTerm = F2dispSumTerm; - } - - /** {@inheritDoc} */ - @Override - public void setF2dispZHCdm(double F2dispZHCdm) { - this.F2dispZHCdm = F2dispZHCdm; - } + return getMolarVolume(); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhasePCSAFTa.java b/src/main/java/neqsim/thermo/phase/PhasePCSAFTa.java index 98faf3e100..c9e56ab833 100644 --- a/src/main/java/neqsim/thermo/phase/PhasePCSAFTa.java +++ b/src/main/java/neqsim/thermo/phase/PhasePCSAFTa.java @@ -20,11 +20,17 @@ public class PhasePCSAFTa extends PhasePCSAFT implements PhaseCPAInterface { public CPAMixing cpaSelect = new CPAMixing(); public CPAMixingInterface cpamix; - double hcpatot = 1.0, hcpatotdT = 0.0, hcpatotdTdT = 0.0; + double hcpatot = 1.0; + double hcpatotdT = 0.0; + double hcpatotdTdT = 0.0; int cpaon = 1; - int totalNumberOfAccociationSites = 0; - double gcpav = 0.0, lngcpa = 0.0, gcpavv = 1.0, gcpavvv = 0.0, gcpa = 0.0; + double gcpav = 0.0; + double lngcpa = 0.0; + double gcpavv = 1.0; + double gcpavvv = 0.0; + double gcpa = 0.0; + int[][][] selfAccociationScheme = null; int[][][][] crossAccociationScheme = null; static Logger logger = LogManager.getLogger(PhasePCSAFTa.class); @@ -44,8 +50,8 @@ public PhasePCSAFTa clone() { PhasePCSAFTa clonedPhase = null; try { clonedPhase = (PhasePCSAFTa) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); @@ -75,9 +81,9 @@ public void volInit() { /** {@inheritDoc} */ @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, double beta) { - if (type == 0) { + if (initType == 0) { selfAccociationScheme = new int[numberOfComponents][0][0]; crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; for (int i = 0; i < numberOfComponents; i++) { @@ -88,17 +94,15 @@ public void init(double totalNumberOfMoles, int numberOfComponents, int type, in } } do { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); } while (!solveX()); } /** {@inheritDoc} */ @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentPCSAFTa(componentName, moles, molesInPhase, compNumber); + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentPCSAFTa(name, moles, molesInPhase, compNumber); } /** {@inheritDoc} */ @@ -369,11 +373,12 @@ public double calc_lngni(int comp) { /** {@inheritDoc} */ @Override - public double molarVolume(double pressure, double temperature, double A, double B, int phase) + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) throws neqsim.util.exception.IsNaNException, neqsim.util.exception.TooManyIterationsException { - double BonV = phase == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); // double BonV = phase== 0 ? 0.99:1e-5; if (BonV < 0) { @@ -383,7 +388,9 @@ public double molarVolume(double pressure, double temperature, double A, double BonV = 1.0 - 1.0e-6; } double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0; + double Btemp = 0; + double h = 0; + double dh = 0; // double gvvv = 0, fvvv = 0, dhh = 0, d2 = 0; double d1 = 0; Btemp = getB(); @@ -410,7 +417,7 @@ public double molarVolume(double pressure, double temperature, double A, double d1 = -h / dh; // d2 = -dh / dhh; - BonV += d1;// (1.0+0.5*-1.0); + BonV += d1; // (1.0+0.5*-1.0); // if(Math.abs(d1/d2)<=1.0){ // BonV += d1*(1.0+0.5*d1/d2); // } else if(d1/d2<-1){ @@ -447,12 +454,12 @@ public double molarVolume(double pressure, double temperature, double A, double } if (Double.isNaN(getMolarVolume())) { throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); - // if(phaseType==0) + // if(pt==0) // System.out.println("density " + - // getDensity());//"BonV: " + BonV + " + // getDensity()); //"BonV: " + BonV + " // "+" itert: " + // iterations +" " + " phase " + - // phaseType+ " " + h + + // pt+ " " + h + // " +dh + " B " + Btemp + " D " + // Dtemp + " gv" + gV() // + " fv " + fv() + " fvv" + fVV()); diff --git a/src/main/java/neqsim/thermo/phase/PhasePrCPA.java b/src/main/java/neqsim/thermo/phase/PhasePrCPA.java index 3b4344ef0b..8a1bd7e72a 100644 --- a/src/main/java/neqsim/thermo/phase/PhasePrCPA.java +++ b/src/main/java/neqsim/thermo/phase/PhasePrCPA.java @@ -14,468 +14,470 @@ * @version $Id: $Id */ public class PhasePrCPA extends PhasePrEos implements PhaseCPAInterface { - private static final long serialVersionUID = 1000; - - int totalNumberOfAccociationSites = 0; - public CPAMixing cpaSelect = new CPAMixing(); - public CPAMixingInterface cpamix; - double hcpatot = 1.0, hcpatotdT = 0.0, hcpatotdTdT = 0.0, gcpav = 1.0, lngcpa = 0.0, - lngcpav = 1.0, gcpavv = 1.0, gcpavvv = 1.0, gcpa = 1.0; - int cpaon = 1; - int[][][] selfAccociationScheme = null; - int[][][][] crossAccociationScheme = null; - - /** - *

- * Constructor for PhasePrCPA. - *

- */ - public PhasePrCPA() { - super(); - cpamix = cpaSelect.getMixingRule(1); - } - - /** {@inheritDoc} */ - @Override - public PhasePrCPA clone() { - PhasePrCPA clonedPhase = null; - try { - clonedPhase = (PhasePrCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return clonedPhase; - } - - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - boolean Xsolved = true; - int totiter = 0; - do { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - // if(getPhaseType()==1) cpaon=0; - totiter++; - if (cpaon == 1) { - Xsolved = solveX(); - hcpatot = calc_hCPA(); - gcpa = calc_g(); - lngcpa = Math.log(gcpa); - - gcpav = calc_lngV(); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - } - } while (Xsolved != true && totiter < 5); - - if (type > 1) { - hcpatotdT = calc_hCPAdT(); - hcpatotdTdT = calc_hCPAdTdT(); - } - // System.out.println("tot iter " + totiter); - if (type == 0) { - selfAccociationScheme = new int[numberOfComponents][0][0]; - crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; - for (int i = 0; i < numberOfComponents; i++) { - selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); - for (int j = 0; j < numberOfComponents; j++) { - crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); - } - } - } - } - - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentSrkCPA(componentName, moles, molesInPhase, compNumber); - } - - /** {@inheritDoc} */ - @Override - public double getF() { - return super.getF() + cpaon * FCPA(); - } - - /** {@inheritDoc} */ - @Override - public double dFdT() { - return super.dFdT() + cpaon * dFCPAdT(); - } - - /** {@inheritDoc} */ - @Override - public double dFdTdV() { - return super.dFdTdV(); - } - - /** {@inheritDoc} */ - @Override - public double dFdV() { - // double dv = super.dFdV(); - double dv2 = dFCPAdV(); - // System.out.println("dv " + dv + " dvcpa " + dv2); - return super.dFdV() + cpaon * dv2; - } - - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return super.dFdVdV() + cpaon * dFCPAdVdV(); - } - - /** {@inheritDoc} */ - @Override - public double dFdVdVdV() { - return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); - } - - /** {@inheritDoc} */ - @Override - public double dFdTdT() { - return super.dFdTdT() + cpaon * dFCPAdTdT(); - } - - /** - *

- * FCPA. - *

- * - * @return a double - */ - public double FCPA() { - double tot = 0.0; - double ans = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - tot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - double xai = ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; - tot += (Math.log(xai) - 1.0 / 2.0 * xai + 1.0 / 2.0); - } - ans += getComponent(i).getNumberOfMolesInPhase() * tot; - } - return ans; - } - - /** - *

- * dFCPAdV. - *

- * - * @return a double - */ - public double dFCPAdV() { - return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * gcpav) * hcpatot; - } - - /** - *

- * dFCPAdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdV() { - return -1.0 / getTotalVolume() * dFCPAdV() - + hcpatot / (2.0 * getTotalVolume()) * (-gcpav - getTotalVolume() * gcpavv); - } - - /** - *

- * dFCPAdVdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdVdV() { - return -1.0 / getTotalVolume() * dFCPAdVdV() - + 1.0 / Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - - hcpatot / (2.0 * Math.pow(getTotalVolume(), 2.0)) - * (-gcpav - getTotalVolume() * gcpavv) - + hcpatot / (2.0 * getTotalVolume()) * (-2.0 * gcpavv - getTotalVolume() * gcpavvv); - } - - /** - *

- * dFCPAdT. - *

- * - * @return a double - */ - public double dFCPAdT() { - return -1.0 / 2.0 * hcpatotdT; - } - - /** - *

- * dFCPAdTdT. - *

- * - * @return a double - */ - public double dFCPAdTdT() { - return -1.0 / 2.0 * hcpatotdTdT; - } - - /** - *

- * calc_hCPA. - *

- * - * @return a double - */ - public double calc_hCPA() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - htot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - htot += (1.0 - ((ComponentSrkCPA) getComponent(i)).getXsite()[j]); - } - tot += getComponent(i).getNumberOfMolesInPhase() * htot; + private static final long serialVersionUID = 1000; + + int totalNumberOfAccociationSites = 0; + public CPAMixing cpaSelect = new CPAMixing(); + public CPAMixingInterface cpamix; + double hcpatot = 1.0; + double hcpatotdT = 0.0; + double hcpatotdTdT = 0.0; + double gcpav = 1.0; + double lngcpa = 0.0; + double lngcpav = 1.0; + double gcpavv = 1.0; + double gcpavvv = 1.0; + double gcpa = 1.0; + + int cpaon = 1; + int[][][] selfAccociationScheme = null; + int[][][][] crossAccociationScheme = null; + + /** + *

+ * Constructor for PhasePrCPA. + *

+ */ + public PhasePrCPA() { + super(); + cpamix = cpaSelect.getMixingRule(1); + } + + /** {@inheritDoc} */ + @Override + public PhasePrCPA clone() { + PhasePrCPA clonedPhase = null; + try { + clonedPhase = (PhasePrCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + boolean Xsolved = true; + int totiter = 0; + do { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + // if(getPhaseType()==1) cpaon=0; + totiter++; + if (cpaon == 1) { + Xsolved = solveX(); + hcpatot = calc_hCPA(); + gcpa = calc_g(); + lngcpa = Math.log(gcpa); + + gcpav = calc_lngV(); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + } + } while (!Xsolved && totiter < 5); + + if (initType > 1) { + hcpatotdT = calc_hCPAdT(); + hcpatotdTdT = calc_hCPAdTdT(); + } + // System.out.println("tot iter " + totiter); + if (initType == 0) { + selfAccociationScheme = new int[numberOfComponents][0][0]; + crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; + for (int i = 0; i < numberOfComponents; i++) { + selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); + for (int j = 0; j < numberOfComponents; j++) { + crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); } - // System.out.println("tot " +tot ); - return tot; - } - - /** - *

- * calc_hCPAdT. - *

- * - * @return a double - */ - public double calc_hCPAdT() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int k = 0; k < numberOfComponents; k++) { - htot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - for (int l = 0; l < getComponent(k).getNumberOfAssociationSites(); l++) { - htot += ((ComponentSrkCPA) getComponent(i)).getXsite()[j] - * ((ComponentSrkCPA) getComponent(k)).getXsite()[l] - * cpamix.calcDeltadT(j, l, i, k, this, temperature, pressure, - numberOfComponents); - } - } - - tot += getComponent(i).getNumberOfMolesInPhase() - * getComponent(k).getNumberOfMolesInPhase() * htot; - } + } + } + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentSrkCPA(name, moles, molesInPhase, compNumber); + } + + /** {@inheritDoc} */ + @Override + public double getF() { + return super.getF() + cpaon * FCPA(); + } + + /** {@inheritDoc} */ + @Override + public double dFdT() { + return super.dFdT() + cpaon * dFCPAdT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdV() { + return super.dFdTdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + // double dv = super.dFdV(); + double dv2 = dFCPAdV(); + // System.out.println("dv " + dv + " dvcpa " + dv2); + return super.dFdV() + cpaon * dv2; + } + + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return super.dFdVdV() + cpaon * dFCPAdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdVdVdV() { + return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdT() { + return super.dFdTdT() + cpaon * dFCPAdTdT(); + } + + /** + *

+ * FCPA. + *

+ * + * @return a double + */ + public double FCPA() { + double tot = 0.0; + double ans = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + tot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + double xai = ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; + tot += (Math.log(xai) - 1.0 / 2.0 * xai + 1.0 / 2.0); + } + ans += getComponent(i).getNumberOfMolesInPhase() * tot; + } + return ans; + } + + /** + *

+ * dFCPAdV. + *

+ * + * @return a double + */ + public double dFCPAdV() { + return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * gcpav) * hcpatot; + } + + /** + *

+ * dFCPAdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdV() { + return -1.0 / getTotalVolume() * dFCPAdV() + + hcpatot / (2.0 * getTotalVolume()) * (-gcpav - getTotalVolume() * gcpavv); + } + + /** + *

+ * dFCPAdVdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdVdV() { + return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / Math.pow(getTotalVolume(), 2.0) * dFCPAdV() + - hcpatot / (2.0 * Math.pow(getTotalVolume(), 2.0)) * (-gcpav - getTotalVolume() * gcpavv) + + hcpatot / (2.0 * getTotalVolume()) * (-2.0 * gcpavv - getTotalVolume() * gcpavvv); + } + + /** + *

+ * dFCPAdT. + *

+ * + * @return a double + */ + public double dFCPAdT() { + return -1.0 / 2.0 * hcpatotdT; + } + + /** + *

+ * dFCPAdTdT. + *

+ * + * @return a double + */ + public double dFCPAdTdT() { + return -1.0 / 2.0 * hcpatotdTdT; + } + + /** + *

+ * calc_hCPA. + *

+ * + * @return a double + */ + public double calc_hCPA() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + htot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + htot += (1.0 - ((ComponentSrkCPA) getComponent(i)).getXsite()[j]); + } + tot += getComponent(i).getNumberOfMolesInPhase() * htot; + } + // System.out.println("tot " +tot ); + return tot; + } + + /** + *

+ * calc_hCPAdT. + *

+ * + * @return a double + */ + public double calc_hCPAdT() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int k = 0; k < numberOfComponents; k++) { + htot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + for (int l = 0; l < getComponent(k).getNumberOfAssociationSites(); l++) { + htot += ((ComponentSrkCPA) getComponent(i)).getXsite()[j] + * ((ComponentSrkCPA) getComponent(k)).getXsite()[l] + * cpamix.calcDeltadT(j, l, i, k, this, temperature, pressure, numberOfComponents); + } } - // System.out.println("tot " +tot ); - return tot / getTotalVolume(); - } - /** - *

- * calc_hCPAdTdT. - *

- * - * @return a double - */ - public double calc_hCPAdTdT() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int k = 0; k < numberOfComponents; k++) { - htot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - for (int l = 0; l < getComponent(k).getNumberOfAssociationSites(); l++) { - htot += ((ComponentSrkCPA) getComponent(i)).getXsite()[j] - * ((ComponentSrkCPA) getComponent(k)).getXsite()[l] - * cpamix.calcDeltadTdT(j, l, i, k, this, temperature, pressure, - numberOfComponents); - } - } - - tot += getComponent(i).getNumberOfMolesInPhase() - * getComponent(k).getNumberOfMolesInPhase() * htot; - } + tot += getComponent(i).getNumberOfMolesInPhase() * getComponent(k).getNumberOfMolesInPhase() + * htot; + } + } + // System.out.println("tot " +tot ); + return tot / getTotalVolume(); + } + + /** + *

+ * calc_hCPAdTdT. + *

+ * + * @return a double + */ + public double calc_hCPAdTdT() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int k = 0; k < numberOfComponents; k++) { + htot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + for (int l = 0; l < getComponent(k).getNumberOfAssociationSites(); l++) { + htot += ((ComponentSrkCPA) getComponent(i)).getXsite()[j] + * ((ComponentSrkCPA) getComponent(k)).getXsite()[l] + * cpamix.calcDeltadTdT(j, l, i, k, this, temperature, pressure, numberOfComponents); + } } - // System.out.println("tot " +tot ); - return tot / getTotalVolume(); - } - - /** - *

- * calc_g. - *

- * - * @return a double - */ - public double calc_g() { - double g = (2.0 - getb() / 4.0 / getMolarVolume()) - / (2.0 * Math.pow(1.0 - getb() / 4.0 / getMolarVolume(), 3.0)); - return g; - } - /** - *

- * calc_lngni. - *

- * - * @param comp a int - * @return a double - */ - public double calc_lngni(int comp) { - return 0; - } - - /** - *

- * calc_lngV. - *

- * - * @return a double - */ - public double calc_lngV() { - double gv = 0.0; - gv = -2.0 * getB() * (10.0 * getTotalVolume() - getB()) / getTotalVolume() - / ((8.0 * getTotalVolume() - getB()) * (4.0 * getTotalVolume() - getB())); - - // double gv2 = - // 1.0/(2.0-getB()/(4.0*getTotalVolume()))*getB()/(4.0*Math.pow(getTotalVolume() - // ,2.0)) - // - 3.0/(1.0-getB()/(4.0*getTotalVolume()))*getB()/(4.0*Math.pow(getTotalVolume() ,2.0)); - - // System.out.println("err gv " + (100.0-gv/gv2*100)); - // -2.0*getB()*(10.0*getTotalVolume()-getB())/getTotalVolume()/((8.0*getTotalVolume()-getB())*(4.0*getTotalVolume()-getB())); - // System.out.println("gv " + gv); - - return gv; - } - - /** - *

- * calc_lngVV. - *

- * - * @return a double - */ - public double calc_lngVV() { - double gvv = 0.0; - gvv = 2.0 - * (640.0 * Math.pow(getTotalVolume(), 3.0) - - 216.0 * getB() * getTotalVolume() * getTotalVolume() - + 24.0 * Math.pow(getB(), 2.0) * getTotalVolume() - Math.pow(getB(), 3.0)) - * getB() / (getTotalVolume() * getTotalVolume()) - / Math.pow(8.0 * getTotalVolume() - getB(), 2.0) - / Math.pow(4.0 * getTotalVolume() - getB(), 2.0); - return gvv; - } - - /** - *

- * calc_lngVVV. - *

- * - * @return a double - */ - public double calc_lngVVV() { - double gvvv = 0.0; - gvvv = 4.0 - * (Math.pow(getB(), 5.0) + 17664.0 * Math.pow(getTotalVolume(), 4.0) * getB() - - 4192.0 * Math.pow(getTotalVolume(), 3.0) * Math.pow(getB(), 2.0) - + 528.0 * Math.pow(getB(), 3.0) * getTotalVolume() * getTotalVolume() - - 36.0 * getTotalVolume() * Math.pow(getB(), 4.0) - - 30720.0 * Math.pow(getTotalVolume(), 5.0)) - * getB() / (Math.pow(getTotalVolume(), 3.0)) - / Math.pow(-8.0 * getTotalVolume() + getB(), 3.0) - / Math.pow(-4.0 * getTotalVolume() + getB(), 3.0); - return gvvv; - } - - /** - *

- * solveX. - *

- * - * @return a boolean - */ - public boolean solveX() { - double err = .0; - int iter = 0; - try { - molarVolume(pressure, temperature, getA(), getB(), phaseType); - } catch (Exception e) { - logger.error("error", e); + tot += getComponent(i).getNumberOfMolesInPhase() * getComponent(k).getNumberOfMolesInPhase() + * htot; + } + } + // System.out.println("tot " +tot ); + return tot / getTotalVolume(); + } + + /** + *

+ * calc_g. + *

+ * + * @return a double + */ + public double calc_g() { + double g = (2.0 - getb() / 4.0 / getMolarVolume()) + / (2.0 * Math.pow(1.0 - getb() / 4.0 / getMolarVolume(), 3.0)); + return g; + } + + /** + *

+ * calc_lngni. + *

+ * + * @param comp a int + * @return a double + */ + public double calc_lngni(int comp) { + return 0; + } + + /** + *

+ * calc_lngV. + *

+ * + * @return a double + */ + public double calc_lngV() { + double gv = 0.0; + gv = -2.0 * getB() * (10.0 * getTotalVolume() - getB()) / getTotalVolume() + / ((8.0 * getTotalVolume() - getB()) * (4.0 * getTotalVolume() - getB())); + + // double gv2 = + // 1.0/(2.0-getB()/(4.0*getTotalVolume()))*getB()/(4.0*Math.pow(getTotalVolume() + // ,2.0)) + // - 3.0/(1.0-getB()/(4.0*getTotalVolume()))*getB()/(4.0*Math.pow(getTotalVolume() ,2.0)); + + // System.out.println("err gv " + (100.0-gv/gv2*100)); + // -2.0*getB()*(10.0*getTotalVolume()-getB())/getTotalVolume()/((8.0*getTotalVolume()-getB())*(4.0*getTotalVolume()-getB())); + // System.out.println("gv " + gv); + + return gv; + } + + /** + *

+ * calc_lngVV. + *

+ * + * @return a double + */ + public double calc_lngVV() { + double gvv = 0.0; + gvv = 2.0 + * (640.0 * Math.pow(getTotalVolume(), 3.0) + - 216.0 * getB() * getTotalVolume() * getTotalVolume() + + 24.0 * Math.pow(getB(), 2.0) * getTotalVolume() - Math.pow(getB(), 3.0)) + * getB() / (getTotalVolume() * getTotalVolume()) + / Math.pow(8.0 * getTotalVolume() - getB(), 2.0) + / Math.pow(4.0 * getTotalVolume() - getB(), 2.0); + return gvv; + } + + /** + *

+ * calc_lngVVV. + *

+ * + * @return a double + */ + public double calc_lngVVV() { + double gvvv = 0.0; + gvvv = 4.0 + * (Math.pow(getB(), 5.0) + 17664.0 * Math.pow(getTotalVolume(), 4.0) * getB() + - 4192.0 * Math.pow(getTotalVolume(), 3.0) * Math.pow(getB(), 2.0) + + 528.0 * Math.pow(getB(), 3.0) * getTotalVolume() * getTotalVolume() + - 36.0 * getTotalVolume() * Math.pow(getB(), 4.0) + - 30720.0 * Math.pow(getTotalVolume(), 5.0)) + * getB() / (Math.pow(getTotalVolume(), 3.0)) + / Math.pow(-8.0 * getTotalVolume() + getB(), 3.0) + / Math.pow(-4.0 * getTotalVolume() + getB(), 3.0); + return gvvv; + } + + /** + *

+ * solveX. + *

+ * + * @return a boolean + */ + public boolean solveX() { + double err = .0; + int iter = 0; + try { + molarVolume(pressure, temperature, getA(), getB(), pt); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + do { + iter++; + err = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + double old = ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; + double neeval = cpamix.calcXi(selfAccociationScheme, crossAccociationScheme, j, i, this, + temperature, pressure, numberOfComponents); + + ((ComponentCPAInterface) getComponent(i)).setXsite(j, neeval); + err += Math.abs((old - neeval) / neeval); } - do { - iter++; - err = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - double old = ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; - double neeval = cpamix.calcXi(selfAccociationScheme, crossAccociationScheme, j, - i, this, temperature, pressure, numberOfComponents); - - ((ComponentCPAInterface) getComponent(i)).setXsite(j, neeval); - err += Math.abs((old - neeval) / neeval); - } - } - // System.out.println("err " + err); - } while (Math.abs(err) > 1e-10 && iter < 100); - // System.out.println("iter " +iter); - return iter < 3; - } - - /** {@inheritDoc} */ - @Override - public double getHcpatot() { - return hcpatot; - } - - /** - * Setter for property hcpatot. - * - * @param hcpatot New value of property hcpatot. - */ - public void setHcpatot(double hcpatot) { - this.hcpatot = hcpatot; - } - - /** {@inheritDoc} */ - @Override - public double getGcpa() { - return gcpa; - } - - /** {@inheritDoc} */ - @Override - public double getGcpav() { - return gcpav; - } - - /** {@inheritDoc} */ - @Override - public CPAMixingInterface getCpamix() { - return cpamix; - } - - /** {@inheritDoc} */ - @Override - public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { - if (comp1 == comp2) { - return selfAccociationScheme[comp1][site1][site2]; - } - return crossAccociationScheme[comp1][comp2][site1][site2]; - } - - /** {@inheritDoc} */ - @Override - public int getTotalNumberOfAccociationSites() { - return totalNumberOfAccociationSites; - } - - /** {@inheritDoc} */ - @Override - public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { - this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; - } + } + // System.out.println("err " + err); + } while (Math.abs(err) > 1e-10 && iter < 100); + // System.out.println("iter " +iter); + return iter < 3; + } + + /** {@inheritDoc} */ + @Override + public double getHcpatot() { + return hcpatot; + } + + /** + * Setter for property hcpatot. + * + * @param hcpatot New value of property hcpatot. + */ + public void setHcpatot(double hcpatot) { + this.hcpatot = hcpatot; + } + + /** {@inheritDoc} */ + @Override + public double getGcpa() { + return gcpa; + } + + /** {@inheritDoc} */ + @Override + public double getGcpav() { + return gcpav; + } + + /** {@inheritDoc} */ + @Override + public CPAMixingInterface getCpamix() { + return cpamix; + } + + /** {@inheritDoc} */ + @Override + public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { + if (comp1 == comp2) { + return selfAccociationScheme[comp1][site1][site2]; + } + return crossAccociationScheme[comp1][comp2][site1][site2]; + } + + /** {@inheritDoc} */ + @Override + public int getTotalNumberOfAccociationSites() { + return totalNumberOfAccociationSites; + } + + /** {@inheritDoc} */ + @Override + public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { + this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhasePrEos.java b/src/main/java/neqsim/thermo/phase/PhasePrEos.java index a235a2c983..714f24e7fd 100644 --- a/src/main/java/neqsim/thermo/phase/PhasePrEos.java +++ b/src/main/java/neqsim/thermo/phase/PhasePrEos.java @@ -11,41 +11,39 @@ * @version $Id: $Id */ public class PhasePrEos extends PhaseEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhasePrEos. - *

- */ - public PhasePrEos() { - super(); - thermoPropertyModelName = "PR-EoS"; - uEOS = 2; - wEOS = -1; - delta1 = 1.0 + Math.sqrt(2.0); - delta2 = 1.0 - Math.sqrt(2.0); - } - - /** {@inheritDoc} */ - @Override - public PhasePrEos clone() { - PhasePrEos clonedPhase = null; - try { - clonedPhase = (PhasePrEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for PhasePrEos. + *

+ */ + public PhasePrEos() { + super(); + thermoPropertyModelName = "PR-EoS"; + uEOS = 2; + wEOS = -1; + delta1 = 1.0 + Math.sqrt(2.0); + delta2 = 1.0 - Math.sqrt(2.0); + } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhasePrEos clone() { + PhasePrEos clonedPhase = null; + try { + clonedPhase = (PhasePrEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentPR(componentName, moles, molesInPhase, compNumber); - } + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentPR(name, moles, molesInPhase, compNumber); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhasePrEosvolcor.java b/src/main/java/neqsim/thermo/phase/PhasePrEosvolcor.java index bdd6f15222..02641bde54 100644 --- a/src/main/java/neqsim/thermo/phase/PhasePrEosvolcor.java +++ b/src/main/java/neqsim/thermo/phase/PhasePrEosvolcor.java @@ -10,19 +10,23 @@ import neqsim.thermo.component.ComponentPRvolcor; /** + *

+ * PhasePrEosvolcor class. + *

* * @author Even Solbraa - * + * @version $Id: $Id */ public class PhasePrEosvolcor extends PhasePrEos { - private static final long serialVersionUID = 1000; - double loc_C=0; + double loc_C = 0; private double CT; public double C; public double Ctot = 0; - /** Creates new PhaseSrkEos */ + /** + * Creates new PhaseSrkEos. + */ public PhasePrEosvolcor() { super(); thermoPropertyModelName = "PR-EoS-volcorr"; @@ -30,28 +34,42 @@ public PhasePrEosvolcor() { /** {@inheritDoc} */ @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); loc_C = calcC(this, temperature, pressure, numberOfComponents); CT = calcCT(this, temperature, pressure, numberOfComponents); - } - + /** + *

+ * getCT. + *

+ * + * @return a double + */ public double getCT() { return CT; } - + /** + *

+ * getCTT. + *

+ * + * @return a double + */ public double getCTT() { return 0; } + /** {@inheritDoc} */ @Override public double calcg() { return Math.log(1.0 - (getb() - getc()) / molarVolume); } + + /** {@inheritDoc} */ @Override public double calcf() { return (1.0 / (R * getB() * (delta1 - delta2)) @@ -59,38 +77,74 @@ public double calcf() { / (1.0 + (delta2 * getb() + getc()) / (molarVolume)))); } + /** {@inheritDoc} */ @Override public double dFdV() { // return super.dFdV(); return -numberOfMolesInPhase * gV() - getA() / temperature * fv(); - } // note that in future the next thre lines should be modified to handle various mixing rules for // the translation - - + /** + *

+ * getcij. + *

+ * + * @param compArray a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param compArray2 a {@link neqsim.thermo.component.ComponentEosInterface} object + * @return a double + */ public double getcij(ComponentEosInterface compArray, ComponentEosInterface compArray2) { return ((((ComponentPRvolcor) compArray).getc()) + (((ComponentPRvolcor) compArray2).getc())) * 0.5; } + /** + *

+ * getcijT. + *

+ * + * @param compArray a {@link neqsim.thermo.component.ComponentEosInterface} object + * @param compArray2 a {@link neqsim.thermo.component.ComponentEosInterface} object + * @return a double + */ public double getcijT(ComponentEosInterface compArray, ComponentEosInterface compArray2) { return (((ComponentPRvolcor) compArray).getcT() + ((ComponentPRvolcor) compArray2).getcT()) * 0.5; } + /** + *

+ * getcijTT. + *

+ * + * @param compi a {@link neqsim.thermo.component.ComponentPRvolcor} object + * @param compj a {@link neqsim.thermo.component.ComponentPRvolcor} object + * @return a double + */ public double getcijTT(ComponentPRvolcor compi, ComponentPRvolcor compj) { // return (compi.getcTT() + compj.getcTT()) * 0.5; return 0; } - // @Override + /** + *

+ * calcCi. + *

+ * + * @param compNumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ public double calcCi(int compNumb, PhaseInterface phase, double temperature, double pressure, int numbcomp) { - double Ci = 0.0; + double Ci = 0.0; ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); @@ -102,7 +156,19 @@ public double calcCi(int compNumb, PhaseInterface phase, double temperature, dou return Ci; } - + /** + *

+ * calcCij. + *

+ * + * @param compNumb a int + * @param compNumbj a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ public double calcCij(int compNumb, int compNumbj, PhaseInterface phase, double temperature, double pressure, int numbcomp) { double cij = 0.0; @@ -113,8 +179,18 @@ public double calcCij(int compNumb, int compNumbj, PhaseInterface phase, double - ((ComponentPRvolcor) compArray[compNumbj]).getCi()) / phase.getNumberOfMolesInPhase(); } - - + /** + *

+ * calcCiT. + *

+ * + * @param compNumb a int + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ public double calcCiT(int compNumb, PhaseInterface phase, double temperature, double pressure, int numbcomp) { double CiT = 0.0; @@ -129,45 +205,74 @@ public double calcCiT(int compNumb, PhaseInterface phase, double temperature, do return CiT; } - - + /** + *

+ * calcCT. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ public double calcCT(PhaseInterface phase, double temperature, double pressure, int numbcomp) { return 0.0; } - public double calcC(PhaseInterface phase, double temperature, double pressure, - int numbcomp) { - C = 0.0; - ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); + /** + *

+ * calcC. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param temperature a double + * @param pressure a double + * @param numbcomp a int + * @return a double + */ + public double calcC(PhaseInterface phase, double temperature, double pressure, int numbcomp) { + C = 0.0; + ComponentEosInterface[] compArray = (ComponentEosInterface[]) phase.getcomponentArray(); - for (int i = 0; i < numbcomp; i++) { - for (int j = 0; j < numbcomp; j++) { - C += compArray[i].getNumberOfMolesInPhase() - * compArray[j].getNumberOfMolesInPhase() - * getcij(compArray[i], compArray[j]);// (compArray[i].getb()+compArray[j].getb())/2; + for (int i = 0; i < numbcomp; i++) { + for (int j = 0; j < numbcomp; j++) { + C += compArray[i].getNumberOfMolesInPhase() * compArray[j].getNumberOfMolesInPhase() + * getcij(compArray[i], compArray[j]); // (compArray[i].getb()+compArray[j].getb())/2; + } } - } - C /= phase.getNumberOfMolesInPhase(); - Ctot = C; - return C; + C /= phase.getNumberOfMolesInPhase(); + Ctot = C; + return C; } - - private double loc_C() { - return calcC(this, temperature, pressure, numberOfComponents) ; + return calcC(this, temperature, pressure, numberOfComponents); } + /** + *

+ * getc. + *

+ * + * @return a double + */ public double getc() { return loc_C() / numberOfMolesInPhase; } + /** + *

+ * getC. + *

+ * + * @return a double + */ public double getC() { return loc_C(); } - - + /** {@inheritDoc} */ @Override public double gV() { return (getb() - getc()) @@ -179,6 +284,7 @@ public double gV() { // of the units of molarvolume?) } + /** {@inheritDoc} */ @Override public double gVV() { double val1 = numberOfMolesInPhase * getMolarVolume(); @@ -190,12 +296,15 @@ public double gVV() { // return -1.0 / (val2 * val2) + 1.0 / (val1 * val1); } + /** {@inheritDoc} */ + @Override public double gVVV() { double val1 = numberOfMolesInPhase * getMolarVolume(); double val2 = val1 + getC() - getB(); return 2.0 / (val2 * val2 * val2) - 2.0 / (val1 * val1 * val1); } + /** {@inheritDoc} */ @Override public double fv() { return -1.0 / (R * (numberOfMolesInPhase * molarVolume + delta1 * getB() + loc_C()) @@ -205,6 +314,7 @@ public double fv() { // * (numberOfMolesInPhase * molarVolume + delta2 * loc_B)); } + /** {@inheritDoc} */ @Override public double fVV() { double val1 = (numberOfMolesInPhase * molarVolume + delta1 * getB() + loc_C()); @@ -216,6 +326,8 @@ public double fVV() { // return 1.0 / (R * loc_B * (delta1 - delta2)) * (-1.0 / (val1 * val1) + 1.0 / (val2 * val2)); } + /** {@inheritDoc} */ + @Override public double fVVV() { double val1 = numberOfMolesInPhase * molarVolume + getB() * delta1 + getC(); double val2 = numberOfMolesInPhase * molarVolume + getB() * delta2 + getC(); @@ -228,98 +340,158 @@ public double fVVV() { // val2 * val2)); } - - // derivative of small g with regards to b // problem with the loc_b in gb(),gc()-->it says that it is not visible and I think this is // because loc_B is marked as private // in PhaseEoS...so for now I switch it to getb and we will see + /** {@inheritDoc} */ @Override public double gb() { // return -1.0 / (numberOfMolesInPhase * molarVolume - loc_B + loc_C); return -1.0 / (numberOfMolesInPhase * molarVolume - getB() + getC()); } - //// derivative of small g with regards to c + // derivative of small g with regards to c + /** + *

+ * gc. + *

+ * + * @return a double + */ public double gc() { // return 1.0 / (numberOfMolesInPhase * molarVolume - loc_B + loc_C); return 1.0 / (numberOfMolesInPhase * molarVolume - getB() + getC()); } - //// derivative of small f with regards to c-->equal to fv + // derivative of small f with regards to c-->equal to fv + /** + *

+ * fc. + *

+ * + * @return a double + */ public double fc() { return -1.0 / (R * (numberOfMolesInPhase * molarVolume + delta1 * getB() + loc_C()) - * (numberOfMolesInPhase * molarVolume + delta2 * getB() + loc_C())); + * (numberOfMolesInPhase * molarVolume + delta2 * getB() + loc_C())); } + /** {@inheritDoc} */ @Override public double fb() { - return -(calcf() + (numberOfMolesInPhase * molarVolume + getC())* fv()) / getB(); -} + return -(calcf() + (numberOfMolesInPhase * molarVolume + getC()) * fv()) / getB(); + } - //// second derivative of small f with regards to cc-->equal to fvv + // second derivative of small f with regards to cc-->equal to fvv + /** + *

+ * fcc. + *

+ * + * @return a double + */ public double fcc() { return fVV(); } - //// second derivative of small f with regards to bc-->equal to fvv + // second derivative of small f with regards to bc-->equal to fvv + /** + *

+ * fbc. + *

+ * + * @return a double + */ public double fbc() { return fBV(); } - //// second derivative of small f with regards to cv-->equal to fvv + // second derivative of small f with regards to cv-->equal to fvv + /** + *

+ * fcv. + *

+ * + * @return a double + */ public double fcv() { return fVV(); } - //// second derivative of small f with regards to bv--> + // second derivative of small f with regards to bv--> + /** {@inheritDoc} */ @Override public double fBV() { return -(2.0 * fv() + (numberOfMolesInPhase * molarVolume + getC()) * fVV()) / getB(); } - //// second derivative of small f with regards to bb--> + // second derivative of small f with regards to bb--> + /** {@inheritDoc} */ @Override public double fBB() { return -(2.0 * fb() + (numberOfMolesInPhase * molarVolume + getC()) * fBV()) / getB(); } - //// second derivative of small g with regards to bv--> + // second derivative of small g with regards to bv--> + /** {@inheritDoc} */ @Override public double gBV() { double val = numberOfMolesInPhase * getMolarVolume() - getB() + getC(); return 1.0 / (val * val); } - //// second derivative of small g with regards to bb--> + // second derivative of small g with regards to bb--> + /** {@inheritDoc} */ @Override public double gBB() { double val = numberOfMolesInPhase * getMolarVolume() - getB() + getC(); return -1.0 / (val * val); } - //// second derivative of small g with regards to bc--> + // second derivative of small g with regards to bc--> + /** + *

+ * gBC. + *

+ * + * @return a double + */ public double gBC() { double val = numberOfMolesInPhase * getMolarVolume() - getB() + getC(); return 1.0 / (val * val); } - //// second derivative of small g with regards to cv--> + // second derivative of small g with regards to cv--> + /** + *

+ * gCV. + *

+ * + * @return a double + */ public double gCV() { double val = numberOfMolesInPhase * getMolarVolume() - getB() + getC(); return -1.0 / (val * val); } - //// second derivative of small g with regards to cc--> + // second derivative of small g with regards to cc--> + /** + *

+ * gCC. + *

+ * + * @return a double + */ public double gCC() { double val = numberOfMolesInPhase * getMolarVolume() - getB() + getC(); return -1.0 / (val * val); } - // Below are the partial derivatives of F with regards to model parameters + /** {@inheritDoc} */ @Override public double F() { return super.F(); @@ -327,39 +499,90 @@ public double F() { // derivative of big F with regards to C // @Override + /** + *

+ * FC. + *

+ * + * @return a double + */ public double FC() { return -numberOfMolesInPhase * gc() - getA() / temperature * fc(); } + /** + *

+ * FnC. + *

+ * + * @return a double + */ public double FnC() { return -gc(); } + /** + *

+ * FTC. + *

+ * + * @return a double + */ public double FTC() { return getA() * fc() / temperature / temperature; } + /** + *

+ * FBC. + *

+ * + * @return a double + */ public double FBC() { return -numberOfMolesInPhase * gBC() - getA() * fbc() / temperature; } + /** + *

+ * FCV. + *

+ * + * @return a double + */ public double FCV() { return -numberOfMolesInPhase * gCV() - getA() * fcv() / temperature; } + /** + *

+ * FCC. + *

+ * + * @return a double + */ public double FCC() { return -numberOfMolesInPhase * gCC() - getA() * fcc() / temperature; } + /** + *

+ * FCD. + *

+ * + * @return a double + */ public double FCD() { return -fc() / temperature; } + /** {@inheritDoc} */ @Override public double dFdVdV() { return -numberOfMolesInPhase * gVV() - getA() * fVV() / temperature; } + /** {@inheritDoc} */ @Override public double dFdVdVdV() { return -numberOfMolesInPhase * gVVV() - getA() * fVVV() / temperature; @@ -377,31 +600,30 @@ public double dFdT() { return FT() + FD() * getAT() + FC() * getCT(); } + /** {@inheritDoc} */ @Override public double dFdTdT() { return FTT() + 2.0 * FDT() * getAT() + FD() * getATT() + 2 * FTC() * getCT() + FCC() * getCT() * getCT() + FC() * getCTT() + 2 * FCD() * getCT() * getAT(); } - + /** {@inheritDoc} */ @Override public PhasePrEosvolcor clone() { PhasePrEosvolcor clonedPhase = null; try { clonedPhase = (PhasePrEosvolcor) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } return clonedPhase; } + /** {@inheritDoc} */ @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentPRvolcor(componentName, moles, molesInPhase, compNumber); + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentPRvolcor(name, moles, molesInPhase, compNumber); } - } diff --git a/src/main/java/neqsim/thermo/phase/PhasePureComponentSolid.java b/src/main/java/neqsim/thermo/phase/PhasePureComponentSolid.java index 42992f0a38..16ca81896e 100644 --- a/src/main/java/neqsim/thermo/phase/PhasePureComponentSolid.java +++ b/src/main/java/neqsim/thermo/phase/PhasePureComponentSolid.java @@ -3,6 +3,7 @@ * * Created on 18. august 2001, 12:39 */ + package neqsim.thermo.phase; /** @@ -14,35 +15,27 @@ * @version $Id: $Id */ public class PhasePureComponentSolid extends PhaseSolid { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for PhasePureComponentSolid. - *

- */ - public PhasePureComponentSolid() { - super(); - } + private static final long serialVersionUID = 1000; - /** {@inheritDoc} */ - @Override - public PhasePureComponentSolid clone() { - PhasePureComponentSolid clonedPhase = null; - try { - clonedPhase = (PhasePureComponentSolid) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for PhasePureComponentSolid. + *

+ */ + public PhasePureComponentSolid() { + super(); + } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhasePureComponentSolid clone() { + PhasePureComponentSolid clonedPhase = null; + try { + clonedPhase = (PhasePureComponentSolid) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - phaseTypeName = "solid"; - } + return clonedPhase; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseRK.java b/src/main/java/neqsim/thermo/phase/PhaseRK.java index edd058546f..76d8d82af9 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseRK.java +++ b/src/main/java/neqsim/thermo/phase/PhaseRK.java @@ -11,41 +11,39 @@ * @version $Id: $Id */ public class PhaseRK extends PhaseEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseRK. - *

- */ - public PhaseRK() { - super(); - // mixRule = mixSelect.getMixingRule(2); - uEOS = 1; - wEOS = 0; - delta1 = 1; - delta2 = 0; - } - - /** {@inheritDoc} */ - @Override - public PhaseRK clone() { - PhaseRK clonedPhase = null; - try { - clonedPhase = (PhaseRK) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for PhaseRK. + *

+ */ + public PhaseRK() { + super(); + // mixRule = mixSelect.getMixingRule(2); + uEOS = 1; + wEOS = 0; + delta1 = 1; + delta2 = 0; + } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseRK clone() { + PhaseRK clonedPhase = null; + try { + clonedPhase = (PhaseRK) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentRK(componentName, moles, molesInPhase, compNumber); - } + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentRK(name, moles, molesInPhase, compNumber); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseSolid.java b/src/main/java/neqsim/thermo/phase/PhaseSolid.java index a2700e8d75..a82c2299ba 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseSolid.java +++ b/src/main/java/neqsim/thermo/phase/PhaseSolid.java @@ -3,6 +3,7 @@ * * Created on 18. august 2001, 12:38 */ + package neqsim.thermo.phase; import neqsim.thermo.component.ComponentSolid; @@ -16,83 +17,88 @@ * @version $Id: $Id */ public abstract class PhaseSolid extends PhaseSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseSolid. - *

- */ - public PhaseSolid() { - super(); - phaseTypeName = "solid"; - } + /** + *

+ * Constructor for PhaseSolid. + *

+ */ + public PhaseSolid() { + super(); + setType(PhaseType.SOLID); + calcMolarVolume = false; + } - /** {@inheritDoc} */ - @Override - public PhaseSolid clone() { - PhaseSolid clonedPhase = null; - try { - clonedPhase = (PhaseSolid) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseSolid clone() { + PhaseSolid clonedPhase = null; + try { + clonedPhase = (PhaseSolid) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - phaseTypeName = "solid"; - } + return clonedPhase; + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double molesInPhase, double moles, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentSolid(componentName, moles, molesInPhase, compNumber); + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + try { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + getDensityTemp(); + } catch (Exception ex) { + logger.error(ex.getMessage()); } + setType(PhaseType.SOLID); + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentSolid(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public double getEnthalpy() { - double fusionHeat = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - fusionHeat += - getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getHeatOfFusion(); - } - return super.getEnthalpy() - fusionHeat; + /** {@inheritDoc} */ + @Override + public double getEnthalpy() { + double fusionHeat = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + fusionHeat += getComponent(i).getNumberOfMolesInPhase() * getComponent(i).getHeatOfFusion(); } + return super.getEnthalpy() - fusionHeat; + } - /** - *

- * setSolidRefFluidPhase. - *

- * - * @param refPhase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void setSolidRefFluidPhase(PhaseInterface refPhase) { - for (int i = 0; i < numberOfComponents; i++) { - ((ComponentSolid) componentArray[i]).setSolidRefFluidPhase(refPhase); - } + /** + *

+ * setSolidRefFluidPhase. + *

+ * + * @param refPhase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void setSolidRefFluidPhase(PhaseInterface refPhase) { + for (int i = 0; i < numberOfComponents; i++) { + ((ComponentSolid) componentArray[i]).setSolidRefFluidPhase(refPhase); } + } - /** - * method to get density of a phase note: at the moment return density of water (997 kg/m3) - * - * @return density with unit kg/m3 - */ - public double getDensityTemp() { - double density = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - density += getWtFrac(i) * ((ComponentSolid) componentArray[i]) - .getPureComponentSolidDensity(getTemperature()) * 1000.0; - } - molarVolume = density / getMolarMass() * 1e-5; - return density; + /** + * method to get density of a phase note: at the moment return density of water (997 kg/m3). + * + * @return density with unit kg/m3 + */ + public double getDensityTemp() { + double density = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + density += getWtFrac(i) + * ((ComponentSolid) componentArray[i]).getPureComponentSolidDensity(getTemperature()) + * 1000.0; } + molarVolume = density / getMolarMass() * 1e-5; + return density; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseSolidComplex.java b/src/main/java/neqsim/thermo/phase/PhaseSolidComplex.java index 57cb31ae2f..855527c27f 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseSolidComplex.java +++ b/src/main/java/neqsim/thermo/phase/PhaseSolidComplex.java @@ -9,35 +9,36 @@ * @version $Id: $Id */ public class PhaseSolidComplex extends PhaseSolid { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseSolidComplex. - *

- */ - public PhaseSolidComplex() { - super(); - } - - /** {@inheritDoc} */ - @Override - public PhaseSolidComplex clone() { - PhaseSolidComplex clonedPhase = null; - try { - clonedPhase = (PhaseSolidComplex) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for PhaseSolidComplex. + *

+ */ + public PhaseSolidComplex() { + super(); + setType(PhaseType.SOLIDCOMPLEX); + } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseSolidComplex clone() { + PhaseSolidComplex clonedPhase = null; + try { + clonedPhase = (PhaseSolidComplex) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - phaseTypeName = "solidComplex"; - } + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + setType(PhaseType.SOLIDCOMPLEX); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseSrkCPA.java b/src/main/java/neqsim/thermo/phase/PhaseSrkCPA.java index 36eb5fead5..cdeca294d1 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseSrkCPA.java +++ b/src/main/java/neqsim/thermo/phase/PhaseSrkCPA.java @@ -21,2100 +21,2127 @@ * @version $Id: $Id */ public class PhaseSrkCPA extends PhaseSrkEos implements PhaseCPAInterface { - /** - *

- * Getter for the field dFdNtemp. - *

- * - * @return the dFdNtemp - */ - public double[] getdFdNtemp() { - return dFdNtemp; - } - - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(PhaseSrkCPA.class); - - public CPAMixing cpaSelect = new CPAMixing(); - public CPAMixingInterface cpamix; - double gcpavv = 0.0, gcpavvv = 0.0, gcpa = 0.0, hcpatot = 1.0, FCPA = 0.0, dFCPAdTdV, - dFCPAdTdT = 0.0, dFCPAdT = 0, dFCPAdV = 0, dFCPAdVdV = 0.0, dFCPAdVdVdV = 0.0; - double gcpav = 0.0, tempTotVol = 0; - private double[] dFdNtemp = {0, 0}; - int cpaon = 1, oldTotalNumberOfAccociationSites = 0; - int totalNumberOfAccociationSites = 0; - int[][][] selfAccociationScheme = null; - int[][][][] crossAccociationScheme = null; - int[] activeAccosComp = null;// new int[100]; - private double[] lngi; - int[] moleculeNumber = null, assSiteNumber = null; - private double[][] gvector = null, delta = null, deltaNog = null, deltadT = null, - deltadTdT = null; - double[][][] Klkni = null; - private SimpleMatrix KlkTVMatrix = null, KlkTTMatrix = null, KlkTMatrix = null, - udotTimesmMatrix = null, mVector = null, udotMatrix = null, uMatrix = null, - QMatksiksiksi = null, KlkVVVMatrix = null, KlkVVMatrix = null, udotTimesmiMatrix = null, - ksiMatrix = null, KlkMatrix = null, hessianMatrix = null, hessianInvers = null, - KlkVMatrix = null; - private DMatrixRMaj corr2Matrix = null, corr3Matrix = null, corr4Matrix = null;// new - // DenseMatrix64F(getTotalNumberOfAccociationSites(), - // 1); - - /** - *

- * Constructor for PhaseSrkCPA. - *

- */ - public PhaseSrkCPA() { - super(); - thermoPropertyModelName = "SRK-CPA-EoS"; - } - - /** {@inheritDoc} */ - @Override - public PhaseSrkCPA clone() { - PhaseSrkCPA clonedPhase = null; - try { - clonedPhase = (PhaseSrkCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - if (activeAccosComp != null) { - clonedPhase.activeAccosComp = activeAccosComp.clone(); - System.arraycopy(this.activeAccosComp, 0, clonedPhase.activeAccosComp, 0, - activeAccosComp.length); + /** + *

+ * Getter for the field dFdNtemp. + *

+ * + * @return the dFdNtemp + */ + public double[] getdFdNtemp() { + return dFdNtemp; + } + + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseSrkCPA.class); + + public CPAMixing cpaSelect = new CPAMixing(); + public CPAMixingInterface cpamix; + double gcpavv = 0.0; + double gcpavvv = 0.0; + double gcpa = 0.0; + double hcpatot = 1.0; + double FCPA = 0.0; + double dFCPAdTdV; + double dFCPAdTdT = 0.0; + double dFCPAdT = 0; + double dFCPAdV = 0; + double dFCPAdVdV = 0.0; + double dFCPAdVdVdV = 0.0; + double gcpav = 0.0; + double tempTotVol = 0; + private double[] dFdNtemp = {0, 0}; + int cpaon = 1; + int oldTotalNumberOfAccociationSites = 0; + int totalNumberOfAccociationSites = 0; + int[][][] selfAccociationScheme = null; + int[][][][] crossAccociationScheme = null; + int[] activeAccosComp = null; // new int[100]; + private double[] lngi; + int[] moleculeNumber = null; + int[] assSiteNumber = null; + private double[][] gvector = null; + private double[][] delta = null; + private double[][] deltaNog = null; + private double[][] deltadT = null; + private double[][] deltadTdT = null; + double[][][] Klkni = null; + private SimpleMatrix KlkTVMatrix = null; + private SimpleMatrix KlkTTMatrix = null; + private SimpleMatrix KlkTMatrix = null; + private SimpleMatrix udotTimesmMatrix = null; + private SimpleMatrix mVector = null; + private SimpleMatrix udotMatrix = null; + private SimpleMatrix uMatrix = null; + private SimpleMatrix QMatksiksiksi = null; + private SimpleMatrix KlkVVVMatrix = null; + private SimpleMatrix KlkVVMatrix = null; + private SimpleMatrix udotTimesmiMatrix = null; + private SimpleMatrix ksiMatrix = null; + private SimpleMatrix KlkMatrix = null; + private SimpleMatrix hessianMatrix = null; + private SimpleMatrix hessianInvers = null; + private SimpleMatrix KlkVMatrix = null; + private DMatrixRMaj corr2Matrix = null; + private DMatrixRMaj corr3Matrix = null; + private DMatrixRMaj corr4Matrix = null; + + /** + *

+ * Constructor for PhaseSrkCPA. + *

+ */ + public PhaseSrkCPA() { + super(); + thermoPropertyModelName = "SRK-CPA-EoS"; + } + + /** {@inheritDoc} */ + @Override + public PhaseSrkCPA clone() { + PhaseSrkCPA clonedPhase = null; + try { + clonedPhase = (PhaseSrkCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + if (activeAccosComp != null) { + clonedPhase.activeAccosComp = activeAccosComp.clone(); + System.arraycopy(this.activeAccosComp, 0, clonedPhase.activeAccosComp, 0, + activeAccosComp.length); + } + // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); + // clonedPhase.cpamix = (CPAMixingInterface) cpamix.clone(); + // clonedPhase.cpamix = cpaSelect.getMixingRule(1, this); + + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + boolean changedAssosiationStatus = false; + + if (initType == 0) { + activeAccosComp = new int[numberOfComponents]; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getNumberOfmoles() < 1e-50) { + componentArray[i].setNumberOfAssociationSites(0); + if (activeAccosComp[i] == 1) { + activeAccosComp[i] = 0; + changedAssosiationStatus = true; + } + } else { + if (activeAccosComp[i] == 0) { + changedAssosiationStatus = true; + activeAccosComp[i] = 1; + } } - // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); - // clonedPhase.cpamix = (CPAMixingInterface) cpamix.clone(); - // clonedPhase.cpamix = cpaSelect.getMixingRule(1, this); - - return clonedPhase; - } - - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - boolean changedAssosiationStatus = false; - - if (type == 0) { - activeAccosComp = new int[numberOfComponents]; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getNumberOfmoles() < 1e-50) { - componentArray[i].setNumberOfAssociationSites(0); - if (activeAccosComp[i] == 1) { - activeAccosComp[i] = 0; - changedAssosiationStatus = true; - } - } else { - if (activeAccosComp[i] == 0) { - changedAssosiationStatus = true; - activeAccosComp[i] = 1; - } - } - } - - if (changedAssosiationStatus || lngi == null) { - setTotalNumberOfAccociationSites(0); - selfAccociationScheme = new int[numberOfComponents][0][0]; - crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getNumberOfmoles() < 1e-50) { - componentArray[i].setNumberOfAssociationSites(0); - } else { - componentArray[i].setNumberOfAssociationSites( - componentArray[i].getOrginalNumberOfAssociationSites()); - setTotalNumberOfAccociationSites(getTotalNumberOfAccociationSites() - + componentArray[i].getNumberOfAssociationSites()); - selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); - for (int j = 0; j < numberOfComponents; j++) { - crossAccociationScheme[i][j] = - cpaSelect.setCrossAssociationScheme(i, j, this); - } - } - } - } + } - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - ((ComponentSrkCPA) componentArray[i]).setXsite(j, 1.0); - ((ComponentSrkCPA) componentArray[i]).setXsitedV(j, 0.0); - ((ComponentSrkCPA) componentArray[i]).setXsitedT(j, 0.0); - } - } - - if (changedAssosiationStatus || lngi == null || mVector == null) { - lngi = new double[numberOfComponents]; - mVector = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - KlkMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - hessianMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - Klkni = new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - ksiMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - uMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - udotMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - moleculeNumber = new int[getTotalNumberOfAccociationSites()]; - assSiteNumber = new int[getTotalNumberOfAccociationSites()]; - gvector = new double[getTotalNumberOfAccociationSites()][1]; - udotTimesmMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltaNog = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadTdT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - QMatksiksiksi = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - udotTimesmiMatrix = - new SimpleMatrix(numberOfComponents, getTotalNumberOfAccociationSites()); - - oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); - - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - moleculeNumber[temp + j] = i; - assSiteNumber[temp + j] = j; - } - temp += componentArray[i].getNumberOfAssociationSites(); - } + if (changedAssosiationStatus || lngi == null) { + setTotalNumberOfAccociationSites(0); + selfAccociationScheme = new int[numberOfComponents][0][0]; + crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getNumberOfmoles() < 1e-50) { + componentArray[i].setNumberOfAssociationSites(0); + } else { + componentArray[i].setNumberOfAssociationSites( + componentArray[i].getOrginalNumberOfAssociationSites()); + setTotalNumberOfAccociationSites(getTotalNumberOfAccociationSites() + + componentArray[i].getNumberOfAssociationSites()); + selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); + for (int j = 0; j < numberOfComponents; j++) { + crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); } - } + } + } + } + + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + ((ComponentSrkCPA) componentArray[i]).setXsite(j, 1.0); + ((ComponentSrkCPA) componentArray[i]).setXsitedV(j, 0.0); + ((ComponentSrkCPA) componentArray[i]).setXsitedT(j, 0.0); + } + } + + if (changedAssosiationStatus || lngi == null || mVector == null) { + lngi = new double[numberOfComponents]; + mVector = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + KlkMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + hessianMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + Klkni = + new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + ksiMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + uMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + udotMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + moleculeNumber = new int[getTotalNumberOfAccociationSites()]; + assSiteNumber = new int[getTotalNumberOfAccociationSites()]; + gvector = new double[getTotalNumberOfAccociationSites()][1]; + udotTimesmMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltaNog = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadT = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadTdT = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + QMatksiksiksi = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + udotTimesmiMatrix = + new SimpleMatrix(numberOfComponents, getTotalNumberOfAccociationSites()); + + oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); - if (cpamix == null) { - cpamix = cpaSelect.getMixingRule(1, this); - } - if (type > 0) { - calcDelta(); + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + moleculeNumber[temp + j] = i; + assSiteNumber[temp + j] = j; + } + temp += componentArray[i].getNumberOfAssociationSites(); } + } + } - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + if (cpamix == null) { + cpamix = cpaSelect.getMixingRule(1, this); + } + if (initType > 0) { + calcDelta(); + } - if (type > 0 && isConstantPhaseVolume()) { - solveX(); - super.init(totalNumberOfMoles, numberOfComponents, 1, phase, beta); - gcpa = calc_g(); - gcpav = calc_lngV(); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - } + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); - if (type > 0) { - hcpatot = calc_hCPA(); - } + if (initType > 0 && isConstantPhaseVolume()) { + solveX(); + super.init(totalNumberOfMoles, numberOfComponents, 1, pt, beta); + gcpa = calc_g(); + gcpav = calc_lngV(); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + } - if (type > 1) { - initCPAMatrix(type); - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } + if (initType > 0) { + hcpatot = calc_hCPA(); } - /** - *

- * initCPAMatrix. - *

- * - * @param type a int - */ - public void initCPAMatrix(int type) { - if (totalNumberOfAccociationSites == 0) { - FCPA = 0.0; - dFCPAdTdV = 0.0; - dFCPAdTdT = 0.0; - dFCPAdT = 0; - dFCPAdV = 0; - dFCPAdVdV = 0.0; - dFCPAdVdVdV = 0.0; - return; - } + if (initType > 1) { + initCPAMatrix(initType); + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + } + } + + /** + *

+ * initCPAMatrix. + *

+ * + * @param type a int + */ + public void initCPAMatrix(int type) { + if (totalNumberOfAccociationSites == 0) { + FCPA = 0.0; + dFCPAdTdV = 0.0; + dFCPAdTdT = 0.0; + dFCPAdT = 0; + dFCPAdV = 0; + dFCPAdVdV = 0.0; + dFCPAdVdVdV = 0.0; + return; + } - int temp = 0; - double tempVar1, tempVar2; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - tempVar1 = ksiMatrix.get(temp + j, 0); - tempVar2 = udotMatrix.get(temp + j, 0); - uMatrix.set(temp + j, 0, Math.log(tempVar1) - tempVar1 + 1.0); - gvector[temp + j][0] = mVector.get(temp + j, 0) * tempVar2; - - if (moleculeNumber[temp + j] == i) { - udotTimesmiMatrix.set(i, temp + j, tempVar2); - } else { - udotTimesmiMatrix.set(i, temp + j, 0.0); - } - } - temp += componentArray[i].getNumberOfAssociationSites(); + int temp = 0; + double tempVar1; + double tempVar2; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + tempVar1 = ksiMatrix.get(temp + j, 0); + tempVar2 = udotMatrix.get(temp + j, 0); + uMatrix.set(temp + j, 0, Math.log(tempVar1) - tempVar1 + 1.0); + gvector[temp + j][0] = mVector.get(temp + j, 0) * tempVar2; + + if (moleculeNumber[temp + j] == i) { + udotTimesmiMatrix.set(i, temp + j, tempVar2); + } else { + udotTimesmiMatrix.set(i, temp + j, 0.0); } + } + temp += componentArray[i].getNumberOfAssociationSites(); + } - if (type > 2) { - for (int p = 0; p < numberOfComponents; p++) { - lngi[p] = ((ComponentSrkCPA) componentArray[p]).calc_lngi(this); - } - } + if (type > 2) { + for (int p = 0; p < numberOfComponents; p++) { + lngi[p] = ((ComponentSrkCPA) componentArray[p]).calc_lngi(this); + } + } - for (int i = 0; i < totalNumberOfAccociationSites; i++) { - for (int j = i; j < totalNumberOfAccociationSites; j++) { - delta[i][j] = deltaNog[i][j] * gcpa; - delta[j][i] = delta[i][j]; - if (type > 1) { - deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadT[j][i] = deltadT[i][j]; - - deltadTdT[i][j] = cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadTdT[j][i] = deltadTdT[i][j]; - } - } - } + for (int i = 0; i < totalNumberOfAccociationSites; i++) { + for (int j = i; j < totalNumberOfAccociationSites; j++) { + delta[i][j] = deltaNog[i][j] * gcpa; + delta[j][i] = delta[i][j]; + if (type > 1) { + deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadT[j][i] = deltadT[i][j]; - double totalVolume = getTotalVolume(); - double totalVolume2 = totalVolume * totalVolume, totalVolume3 = totalVolume2 * totalVolume; - double gdv1 = getGcpav() - 1.0 / totalVolume; - double gdv2 = gdv1 * gdv1; - double gdv3 = gdv2 * gdv1; - double Klk = 0.0; - double tempVar; - double tempKsiRead = 0.0; - for (int i = 0; i < totalNumberOfAccociationSites; i++) { - for (int j = i; j < totalNumberOfAccociationSites; j++) { - Klk = KlkMatrix.get(i, j); - tempVar = Klk * gdv1; - KlkVMatrix.set(i, j, tempVar); - KlkVMatrix.set(j, i, tempVar); - - tempVar = Klk * gdv2 + Klk * (gcpavv + 1.0 / totalVolume2); - KlkVVMatrix.set(i, j, tempVar); - KlkVVMatrix.set(j, i, tempVar); - - tempVar = Klk * gdv3 - + 3.0 * Klk * (gcpav - 1.0 / totalVolume) * (gcpavv + 1.0 / (totalVolume2)) - + Klk * (gcpavvv - 2.0 / (totalVolume3)); - KlkVVVMatrix.set(i, j, tempVar); - KlkVVVMatrix.set(j, i, tempVar); - - if (type > 1) { - tempVar = deltadT[i][j] / delta[i][j]; - - if (Math.abs(tempVar) > 1e-50) { - double tempVardT = deltadTdT[i][j] / delta[i][j] - - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - - tempVar2 = Klk * tempVar; - KlkTMatrix.set(i, j, tempVar2); - KlkTMatrix.set(j, i, tempVar2); - - tempVar2 = Klk * tempVar * (gcpav - 1.0 / totalVolume); - KlkTVMatrix.set(i, j, tempVar2); - KlkTVMatrix.set(j, i, tempVar2); - - tempVar2 = Klk * (tempVar * tempVar + tempVardT); - KlkTTMatrix.set(i, j, tempVar2); - KlkTTMatrix.set(j, i, tempVar2); - } - - if (type > 2) { - for (int p = 0; p < numberOfComponents; p++) { - double t1 = 0.0, t2 = 0.0; - if (moleculeNumber[i] == p) { - t1 = 1.0 / mVector.get(i, 0); - } - if (moleculeNumber[j] == p) { - t2 = 1.0 / mVector.get(j, 0); - } - Klkni[p][i][j] = Klk * (t1 + t2 + lngi[p]);// ((ComponentSrkCPA) - // getComponent(p)).calc_lngi(this)); - Klkni[p][j][i] = Klkni[p][i][j]; - } - } - } - } - tempKsiRead = ksiMatrix.get(i, 0); - QMatksiksiksi.set(i, 0, - 2.0 * mVector.get(i, 0) / (tempKsiRead * tempKsiRead * tempKsiRead)); + deltadTdT[i][j] = + cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadTdT[j][i] = deltadTdT[i][j]; } + } + } - SimpleMatrix ksiMatrixTranspose = ksiMatrix.transpose(); - - // dXdV - SimpleMatrix KlkVMatrixksi = KlkVMatrix.mult(ksiMatrix); - SimpleMatrix XV = hessianInvers.mult(KlkVMatrixksi); - SimpleMatrix XVtranspose = XV.transpose(); + double totalVolume = getTotalVolume(); + double totalVolume2 = totalVolume * totalVolume; + double totalVolume3 = totalVolume2 * totalVolume; + double gdv1 = getGcpav() - 1.0 / totalVolume; + double gdv2 = gdv1 * gdv1; + double gdv3 = gdv2 * gdv1; + double Klk = 0.0; + double tempVar; + double tempKsiRead = 0.0; + for (int i = 0; i < totalNumberOfAccociationSites; i++) { + for (int j = i; j < totalNumberOfAccociationSites; j++) { + Klk = KlkMatrix.get(i, j); + tempVar = Klk * gdv1; + KlkVMatrix.set(i, j, tempVar); + KlkVMatrix.set(j, i, tempVar); + + tempVar = Klk * gdv2 + Klk * (gcpavv + 1.0 / totalVolume2); + KlkVVMatrix.set(i, j, tempVar); + KlkVVMatrix.set(j, i, tempVar); + + tempVar = + Klk * gdv3 + 3.0 * Klk * (gcpav - 1.0 / totalVolume) * (gcpavv + 1.0 / (totalVolume2)) + + Klk * (gcpavvv - 2.0 / (totalVolume3)); + KlkVVVMatrix.set(i, j, tempVar); + KlkVVVMatrix.set(j, i, tempVar); - FCPA = mVector.transpose().mult(uMatrix.minus(ksiMatrix.elementMult(udotMatrix).scale(0.5))) - .get(0, 0);// QCPA.get(0, - // 0);//*0.5; + if (type > 1) { + tempVar = deltadT[i][j] / delta[i][j]; - dFCPAdV = ksiMatrixTranspose.mult(KlkVMatrixksi).get(0, 0) * (-0.5); - SimpleMatrix KlkVVMatrixTImesKsi = KlkVVMatrix.mult(ksiMatrix); - dFCPAdVdV = ksiMatrixTranspose.mult(KlkVVMatrixTImesKsi).scale(-0.5) - .minus(KlkVMatrixksi.transpose().mult(XV)).get(0, 0); + if (Math.abs(tempVar) > 1e-50) { + double tempVardT = deltadTdT[i][j] / delta[i][j] + - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - SimpleMatrix QVVV = ksiMatrixTranspose.mult(KlkVVVMatrix.mult(ksiMatrix));// .scale(-0.5); - SimpleMatrix QVVksi = KlkVVMatrixTImesKsi.scale(-1.0); - SimpleMatrix QksiVksi = KlkVMatrix.scale(-1.0); + tempVar2 = Klk * tempVar; + KlkTMatrix.set(i, j, tempVar2); + KlkTMatrix.set(j, i, tempVar2); - dFCPAdVdVdV = -0.5 * QVVV.get(0, 0) + QVVksi.transpose().mult(XV).get(0, 0) * 3.0 - + XVtranspose.mult(QksiVksi.mult(XV)).get(0, 0) * 3.0 - + XVtranspose.mult(QMatksiksiksi.mult(XVtranspose)).mult(XV).get(0, 0); + tempVar2 = Klk * tempVar * (gcpav - 1.0 / totalVolume); + KlkTVMatrix.set(i, j, tempVar2); + KlkTVMatrix.set(j, i, tempVar2); - if (type == 1) { - return; - } + tempVar2 = Klk * (tempVar * tempVar + tempVardT); + KlkTTMatrix.set(i, j, tempVar2); + KlkTTMatrix.set(j, i, tempVar2); + } - temp = 0; - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); + if (type > 2) { + for (int p = 0; p < numberOfComponents; p++) { + double t1 = 0.0; + double t2 = 0.0; + if (moleculeNumber[i] == p) { + t1 = 1.0 / mVector.get(i, 0); + } + if (moleculeNumber[j] == p) { + t2 = 1.0 / mVector.get(j, 0); + } + Klkni[p][i][j] = Klk * (t1 + t2 + lngi[p]); // ((ComponentSrkCPA) + // getComponent(p)).calc_lngi(this)); + Klkni[p][j][i] = Klkni[p][i][j]; } - temp += getComponent(p).getNumberOfAssociationSites(); + } } + } + tempKsiRead = ksiMatrix.get(i, 0); + QMatksiksiksi.set(i, 0, 2.0 * mVector.get(i, 0) / (tempKsiRead * tempKsiRead * tempKsiRead)); + } - // KlkTMatrix = new SimpleMatrix(KlkdT); - SimpleMatrix KlkTMatrixTImesKsi = KlkTMatrix.mult(ksiMatrix); - // dQdT - SimpleMatrix tempMatrix2 = ksiMatrixTranspose.mult(KlkTMatrixTImesKsi);// .scale(-0.5); - dFCPAdT = tempMatrix2.get(0, 0) * (-0.5); - - // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); - // SimpleMatrix tempMatrixTV = - // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - // dFCPAdTdV = tempMatrixTV.get(0, 0); - // dXdT - SimpleMatrix XT = hessianInvers.mult(KlkTMatrixTImesKsi); - // dQdTdT - SimpleMatrix tempMatrixTT = ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5) - .minus(KlkTMatrixTImesKsi.transpose().mult(XT)); - dFCPAdTdT = tempMatrixTT.get(0, 0); - - SimpleMatrix tempMatrixTV = ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5) - .minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - dFCPAdTdV = tempMatrixTV.get(0, 0); - - temp = 0; - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); - } + SimpleMatrix ksiMatrixTranspose = ksiMatrix.transpose(); - if (type == 2) { - return; - } + // dXdV + SimpleMatrix KlkVMatrixksi = KlkVMatrix.mult(ksiMatrix); + SimpleMatrix XV = hessianInvers.mult(KlkVMatrixksi); + SimpleMatrix XVtranspose = XV.transpose(); - // int assSites = 0; - // if(true) return; - for (int p = 0; p < numberOfComponents; p++) { - SimpleMatrix KiMatrix = new SimpleMatrix(Klkni[p]); - // KiMatrix.print(10,10); - // Matrix dQdniMatrix = - // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this - // methods misses one part of .... - // dQdniMatrix.print(10,10); - // KiMatrix.print(10, 10); - // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - - // 1).print(10, 10); - // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - - // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5));// - // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); - // System.out.println("dQdn "); - // tempMatrix20.print(10, 10); - SimpleMatrix tempMatrix4 = KiMatrix.mult(ksiMatrix); - // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - 1).print(10, 10); - SimpleMatrix tempMatrix5 = - udotTimesmiMatrix.extractVector(true, p).transpose().minus(tempMatrix4); - // tempMki[0] = mki[p]; - // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, - // udotMatrix.getArray())); - // System.out.println("aMatrix "); - // amatrix.transpose().print(10, 10); - // System.out.println("temp4 matrix"); - // tempMatrix4.print(10, 10); - // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); - SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5);// .scale(-1.0); - // System.out.println("dXdni"); - // tempMatrix4.print(10, 10); - // tempMatrix5.print(10, 10); - // System.out.println("dXdn "); - // tempMatrix6.print(10, 10); - int temp2 = 0; - for (int compp = 0; compp < numberOfComponents; compp++) { - for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, - -1.0 * tempMatrix6.get(temp2 + kk, 0)); - } - temp2 += getComponent(compp).getNumberOfAssociationSites(); - } - // assSites += getComponent(p).getNumberOfAssociationSites(); - } - } - - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - cpamix = cpaSelect.getMixingRule(1, this); - } + FCPA = mVector.transpose().mult(uMatrix.minus(ksiMatrix.elementMult(udotMatrix).scale(0.5))) + .get(0, 0); // QCPA.get(0, + // 0); //*0.5; - /** - *

- * calcDelta. - *

- */ - public void calcDelta() { - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - deltaNog[i][j] = cpamix.calcDeltaNog(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), getPressure(), - numberOfComponents); - deltaNog[j][i] = deltaNog[i][j]; - } - } - } + dFCPAdV = ksiMatrixTranspose.mult(KlkVMatrixksi).get(0, 0) * (-0.5); + SimpleMatrix KlkVVMatrixTImesKsi = KlkVVMatrix.mult(ksiMatrix); + dFCPAdVdV = ksiMatrixTranspose.mult(KlkVVMatrixTImesKsi).scale(-0.5) + .minus(KlkVMatrixksi.transpose().mult(XV)).get(0, 0); - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentSrkCPA(componentName, moles, molesInPhase, compNumber); - } + SimpleMatrix QVVV = ksiMatrixTranspose.mult(KlkVVVMatrix.mult(ksiMatrix)); // .scale(-0.5); + SimpleMatrix QVVksi = KlkVVMatrixTImesKsi.scale(-1.0); + SimpleMatrix QksiVksi = KlkVMatrix.scale(-1.0); - /** {@inheritDoc} */ - @Override - public double getF() { - return super.getF() + cpaon * FCPA(); - } + dFCPAdVdVdV = -0.5 * QVVV.get(0, 0) + QVVksi.transpose().mult(XV).get(0, 0) * 3.0 + + XVtranspose.mult(QksiVksi.mult(XV)).get(0, 0) * 3.0 + + XVtranspose.mult(QMatksiksiksi.mult(XVtranspose)).mult(XV).get(0, 0); - /** {@inheritDoc} */ - @Override - public double dFdT() { - return super.dFdT() + cpaon * dFCPAdT(); + if (type == 1) { + return; } - /** {@inheritDoc} */ - @Override - public double dFdTdV() { - return super.dFdTdV() + cpaon * dFCPAdTdV(); + temp = 0; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** {@inheritDoc} */ - @Override - public double dFdV() { - double dv2 = dFCPAdV(); - return super.dFdV() + cpaon * dv2; + // KlkTMatrix = new SimpleMatrix(KlkdT); + SimpleMatrix KlkTMatrixTImesKsi = KlkTMatrix.mult(ksiMatrix); + // dQdT + SimpleMatrix tempMatrix2 = ksiMatrixTranspose.mult(KlkTMatrixTImesKsi); // .scale(-0.5); + dFCPAdT = tempMatrix2.get(0, 0) * (-0.5); + + // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); + // SimpleMatrix tempMatrixTV = + // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + // dFCPAdTdV = tempMatrixTV.get(0, 0); + // dXdT + SimpleMatrix XT = hessianInvers.mult(KlkTMatrixTImesKsi); + // dQdTdT + SimpleMatrix tempMatrixTT = ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5) + .minus(KlkTMatrixTImesKsi.transpose().mult(XT)); + dFCPAdTdT = tempMatrixTT.get(0, 0); + + SimpleMatrix tempMatrixTV = ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5) + .minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + dFCPAdTdV = tempMatrixTV.get(0, 0); + + temp = 0; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - // @Override - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return super.dFdVdV() + cpaon * dFCPAdVdV(); + if (type == 2) { + return; } - /** {@inheritDoc} */ - @Override - public double dFdVdVdV() { - return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); + // int assSites = 0; + // if(true) return; + for (int p = 0; p < numberOfComponents; p++) { + SimpleMatrix KiMatrix = new SimpleMatrix(Klkni[p]); + // KiMatrix.print(10,10); + // Matrix dQdniMatrix = + // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this + // methods misses one part of .... + // dQdniMatrix.print(10,10); + // KiMatrix.print(10, 10); + // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - + // 1).print(10, 10); + // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - + // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); + // // + // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); + // System.out.println("dQdn "); + // tempMatrix20.print(10, 10); + SimpleMatrix tempMatrix4 = KiMatrix.mult(ksiMatrix); + // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - 1).print(10, 10); + SimpleMatrix tempMatrix5 = + udotTimesmiMatrix.extractVector(true, p).transpose().minus(tempMatrix4); + // tempMki[0] = mki[p]; + // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, + // udotMatrix.getArray())); + // System.out.println("aMatrix "); + // amatrix.transpose().print(10, 10); + // System.out.println("temp4 matrix"); + // tempMatrix4.print(10, 10); + // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); + SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5); // .scale(-1.0); + // System.out.println("dXdni"); + // tempMatrix4.print(10, 10); + // tempMatrix5.print(10, 10); + // System.out.println("dXdn "); + // tempMatrix6.print(10, 10); + int temp2 = 0; + for (int compp = 0; compp < numberOfComponents; compp++) { + for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, + -1.0 * tempMatrix6.get(temp2 + kk, 0)); + } + temp2 += getComponent(compp).getNumberOfAssociationSites(); + } + // assSites += getComponent(p).getNumberOfAssociationSites(); } - - /** {@inheritDoc} */ - @Override - public double dFdTdT() { - return super.dFdTdT() + cpaon * dFCPAdTdT(); + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + cpamix = cpaSelect.getMixingRule(1, this); + } + + /** + *

+ * calcDelta. + *

+ */ + public void calcDelta() { + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + deltaNog[i][j] = cpamix.calcDeltaNog(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltaNog[j][i] = deltaNog[i][j]; + } } - - /** - *

- * FCPA. - *

- * - * @return a double - */ - public double FCPA() { - /* - * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = - * 0.0; for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { double - * xai = ((ComponentSrkCPA) componentArray[i]).getXsite()[j]; tot += (Math.log(xai) - 1.0 / - * 2.0 * xai + 1.0 / 2.0); } ans += componentArray[i].getNumberOfMolesInPhase() * tot; } - * return ans; - */ - return FCPA; - } - - /** - *

- * dFCPAdV. - *

- * - * @return a double - */ - public double dFCPAdV() { - // return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) - // * hcpatot; - return dFCPAdV; - } - - /** - *

- * dFCPAdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdV() { - // double sum1 = -1.0 / 2.0 * gcpavv * hcpatot; - // return -1.0 / getTotalVolume() * dFCPAdV() + sum1; - return dFCPAdVdV; - } - - /** - *

- * dFCPAdVdVdV. - *

- * - * @return a double + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentSrkCPA(name, moles, molesInPhase, compNumber); + } + + /** {@inheritDoc} */ + @Override + public double getF() { + return super.getF() + cpaon * FCPA(); + } + + /** {@inheritDoc} */ + @Override + public double dFdT() { + return super.dFdT() + cpaon * dFCPAdT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdV() { + return super.dFdTdV() + cpaon * dFCPAdTdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + double dv2 = dFCPAdV(); + return super.dFdV() + cpaon * dv2; + } + + // @Override + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return super.dFdVdV() + cpaon * dFCPAdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdVdVdV() { + return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdT() { + return super.dFdTdT() + cpaon * dFCPAdTdT(); + } + + /** + *

+ * FCPA. + *

+ * + * @return a double + */ + public double FCPA() { + /* + * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = 0.0; + * for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { double xai = + * ((ComponentSrkCPA) componentArray[i]).getXsite()[j]; tot += (Math.log(xai) - 1.0 / 2.0 * xai + * + 1.0 / 2.0); } ans += componentArray[i].getNumberOfMolesInPhase() * tot; } return ans; */ - public double dFCPAdVdVdV() { - return dFCPAdVdVdV; - // return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / - // Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - hcpatot / (2.0 * - // Math.pow(getTotalVolume(), 2.0)) * (-getGcpav() - getTotalVolume() * gcpavv) - // + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv - // - gcpavv); - } - - /** - *

- * dFCPAdT. - *

- * - * @return a double + return FCPA; + } + + /** + *

+ * dFCPAdV. + *

+ * + * @return a double + */ + public double dFCPAdV() { + // return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) + // * hcpatot; + return dFCPAdV; + } + + /** + *

+ * dFCPAdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdV() { + // double sum1 = -1.0 / 2.0 * gcpavv * hcpatot; + // return -1.0 / getTotalVolume() * dFCPAdV() + sum1; + return dFCPAdVdV; + } + + /** + *

+ * dFCPAdVdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdVdV() { + return dFCPAdVdVdV; + // return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / + // Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - hcpatot / (2.0 * + // Math.pow(getTotalVolume(), 2.0)) * (-getGcpav() - getTotalVolume() * gcpavv) + // + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv + // - gcpavv); + } + + /** + *

+ * dFCPAdT. + *

+ * + * @return a double + */ + public double dFCPAdT() { + /* + * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = 0.0; + * for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { double xai = + * ((ComponentSrkCPA) componentArray[i]).getXsite()[j]; double xaidT = ((ComponentSrkCPA) + * componentArray[i]).getXsitedT()[j]; tot += 1.0 / xai * xaidT - 0.5 * xaidT; // - 1.0 / 2.0 * + * xai + 1.0 / 2.0); } ans += componentArray[i].getNumberOfMolesInPhase() * tot; } + * System.out.println("dFCPAdT1 " + ans + " dfcpa2 " +dFCPAdT); return ans; */ - public double dFCPAdT() { - /* - * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = - * 0.0; for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { double - * xai = ((ComponentSrkCPA) componentArray[i]).getXsite()[j]; double xaidT = - * ((ComponentSrkCPA) componentArray[i]).getXsitedT()[j]; tot += 1.0 / xai * xaidT - 0.5 * - * xaidT;// - 1.0 / 2.0 * xai + 1.0 / 2.0); } ans += - * componentArray[i].getNumberOfMolesInPhase() * tot; } System.out.println("dFCPAdT1 " + - * ans + " dfcpa2 " +dFCPAdT); return ans; - */ - return dFCPAdT; - } - - /** - *

- * dFCPAdTdT. - *

- * - * @return a double + return dFCPAdT; + } + + /** + *

+ * dFCPAdTdT. + *

+ * + * @return a double + */ + public double dFCPAdTdT() { + return dFCPAdTdT; + } + + /** + *

+ * dFCPAdTdV. + *

+ * + * @return a double + */ + public double dFCPAdTdV() { + // System.out.println("dFCPAdTdV1 " + dFCPAdTdV + " dFCPAdTdV " +( 1.0 / (2.0 * + // getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatotdT)); + return dFCPAdTdV; + /* + * if (totalNumberOfAccociationSites > 0) { return 1.0 / (2.0 * getTotalVolume()) * (1.0 - + * getTotalVolume() * getGcpav()) * hcpatotdT; } else { return 0; } */ - public double dFCPAdTdT() { - return dFCPAdTdT; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + + if (BonV < 0) { + BonV = 1.0e-8; } - /** - *

- * dFCPAdTdV. - *

- * - * @return a double - */ - public double dFCPAdTdV() { - // System.out.println("dFCPAdTdV1 " + dFCPAdTdV + " dFCPAdTdV " +( 1.0 / (2.0 * - // getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatotdT)); - return dFCPAdTdV; - /* - * if (totalNumberOfAccociationSites > 0) { return 1.0 / (2.0 * getTotalVolume()) * (1.0 - - * getTotalVolume() * getGcpav()) * hcpatotdT; } else { return 0; } - */ - } - - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - - if (BonV < 0) { - BonV = 1.0e-8; - } - - if (BonV >= 1.0) { - BonV = 0.9999; - } - double BonVold; - double BonV2; - double h = 0, dh = 0, dhh = 0; - double d1 = 0, d2 = 0; - double Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - int maxIterations = 300; - do { - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } - - // lngcpa = - // Math.log(gcpa); - gcpav = calc_lngV(); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); + if (BonV >= 1.0) { + BonV = 0.9999; + } + double BonVold; + double BonV2; + double h = 0; + double dh = 0; + double dhh = 0; + double d1 = 0; + double d2 = 0; + double Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); + } - if (totalNumberOfAccociationSites > 0) { - solveX(); - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; + int maxIterations = 300; + do { + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } - initCPAMatrix(1); - - BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 - // + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV += d2; - // double hnew = h + d2 * dh; - // if (Math.abs(hnew) > Math.abs(h)) { - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - // } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonV) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } - if (BonV < 0) { - if (iterations < 10) { - // System.out.println(iterations + " BonV " + BonV); - BonV = (BonVold + BonV) / 2.0; - } else { - return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - } - } + // lngcpa = + // Math.log(gcpa); + gcpav = calc_lngV(); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); - if (BonV >= 1.0) { - if (iterations < 10) { - BonV = (BonVold + BonV) / 2.0; - } else { - return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - } - } - /* - * if (BonV > 0.9999) { if (iterations < 10) { BonV = (BonVold + BonV) / 2.0; } else { - * // BonV = calcRootVolFinder(phasetype); // BonV = molarVolumeChangePhase(pressure, - * temperature, A, B, phasetype); // BonV = 0.9999; // BonV = phasetype == 1 ? 2.0 / - * (2.0 + temperature / getPseudoCriticalTemperature()) : pressure * getB() / - * (numberOfMolesInPhase * temperature * R); } - * - * } else if (BonV < 0) { if (iterations < 10) { BonV = Math.abs(BonVold + BonV) / 2.0; - * } else { // BonV = calcRootVolFinder(phasetype); // return - * molarVolumeChangePhase(pressure, temperature, A, B, phasetype); // BonV = phasetype - * == 1 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) : pressure * getB() - * / (numberOfMolesInPhase * temperature * R); } } - */ - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) - && iterations < maxIterations); - - // System.out.println("h failed " + h + " Z" + Z + " iterations " + iterations + - // " BonV " + BonV); - // if (Math.abs(h) > 1e-12) { - // System.out.println("h failed " + h + " Z" + Z + " iterations " + iterations + - // " BonV " + BonV); - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); + if (totalNumberOfAccociationSites > 0) { + solveX(); + } + + initCPAMatrix(1); + + BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 + // + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV += d2; + // double hnew = h + d2 * dh; + // if (Math.abs(hnew) > Math.abs(h)) { + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); // } - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonV) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + if (BonV < 0) { + if (iterations < 10) { + // System.out.println(iterations + " BonV " + BonV); + BonV = (BonVold + BonV) / 2.0; + } else { + return molarVolumeChangePhase(pressure, temperature, A, B, pt); } - dFdNtemp = calcdFdNtemp(); - return getMolarVolume(); - } + } - /** - * @return double[] - */ - double[] calcdFdNtemp() { - double tot1 = 0.0, tot2 = 0.0, tot3 = 0.0, tot4 = 0.0; - // double temp, temp2; - for (int k = 0; k < getNumberOfComponents(); k++) { - tot2 = 0.0; - tot3 = 0.0; - // temp = ((ComponentSrkCPA) getComponent(k)).calc_lngi(this); - // temp2 = ((ComponentSrkCPA) getComponent(k)).calc_lngidV(this); - for (int i = 0; i < getComponent(k).getNumberOfAssociationSites(); i++) { - tot2 -= 1.0 * ((ComponentSrkCPA) getComponent(k)).getXsitedV()[i]; - tot3 += (1.0 - ((ComponentSrkCPA) getComponent(k)).getXsite()[i]) * 1.0; - } - tot1 += 1.0 / 2.0 * tot2 * getComponent(k).getNumberOfMolesInPhase(); - tot4 += 0.5 * getComponent(k).getNumberOfMolesInPhase() * tot3; - } - return new double[] {-tot1, -tot4}; + if (BonV >= 1.0) { + if (iterations < 10) { + BonV = (BonVold + BonV) / 2.0; + } else { + return molarVolumeChangePhase(pressure, temperature, A, B, pt); + } + } + /* + * if (BonV > 0.9999) { if (iterations < 10) { BonV = (BonVold + BonV) / 2.0; } else { // BonV + * = calcRootVolFinder(pt); // BonV = molarVolumeChangePhase(pressure, temperature, A, B, pt); + * // BonV = 0.9999; // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + * getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * temperature * + * R); } } else if (BonV < 0) { if (iterations < 10) { BonV = Math.abs(BonVold + BonV) / 2.0; + * } else { // BonV = calcRootVolFinder(pt); // return molarVolumeChangePhase(pressure, + * temperature, A, B, pt); // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + * getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * temperature * + * R); } } + */ + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) + && iterations < maxIterations); + + // System.out.println("h failed " + h + " Z" + Z + " iterations " + iterations + + // " BonV " + BonV); + // if (Math.abs(h) > 1e-12) { + // System.out.println("h failed " + h + " Z" + Z + " iterations " + iterations + + // " BonV " + BonV); + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // } + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } - - /** - *

- * calc_hCPA. - *

- * - * @return a double - */ - public double calc_hCPA() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - htot = 0.0; - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - htot += (1.0 - ((ComponentSrkCPA) componentArray[i]).getXsite()[j]); - } - tot += componentArray[i].getNumberOfMolesInPhase() * htot; - } - return tot; + dFdNtemp = calcdFdNtemp(); + return getMolarVolume(); + } + + /** + * calcdFdNtemp. + * + * @return double[] + */ + double[] calcdFdNtemp() { + double tot1 = 0.0; + double tot2 = 0.0; + double tot3 = 0.0; + double tot4 = 0.0; + // double temp, temp2; + for (int k = 0; k < getNumberOfComponents(); k++) { + tot2 = 0.0; + tot3 = 0.0; + // temp = ((ComponentSrkCPA) getComponent(k)).calc_lngi(this); + // temp2 = ((ComponentSrkCPA) getComponent(k)).calc_lngidV(this); + for (int i = 0; i < getComponent(k).getNumberOfAssociationSites(); i++) { + tot2 -= 1.0 * ((ComponentSrkCPA) getComponent(k)).getXsitedV()[i]; + tot3 += (1.0 - ((ComponentSrkCPA) getComponent(k)).getXsite()[i]) * 1.0; + } + tot1 += 1.0 / 2.0 * tot2 * getComponent(k).getNumberOfMolesInPhase(); + tot4 += 0.5 * getComponent(k).getNumberOfMolesInPhase() * tot3; } - - /** - *

- * calc_g. - *

- * - * @return a double - */ - public double calc_g() { - tempTotVol = getMolarVolume(); - double temp = 1.0 - getb() / 4.0 / tempTotVol; - return (2.0 - getb() / 4.0 / tempTotVol) / (2.0 * temp * temp * temp); - } - - /** - *

- * calc_lngV. - *

- * - * @return a double - */ - public double calc_lngV() { - tempTotVol = getTotalVolume(); - // gv = -2.0 * getB() * (10.0 * getTotalVolume() - getB()) / getTotalVolume() / - // ((8.0 * getTotalVolume() - getB()) * (4.0 * getTotalVolume() - getB())); - return 1.0 / (2.0 - getB() / (4.0 * tempTotVol)) * getB() / (4.0 * tempTotVol * tempTotVol) - - 3.0 / (1.0 - getB() / (4.0 * tempTotVol)) * getB() - / (4.0 * tempTotVol * tempTotVol); - } - - /** - *

- * calc_lngVV. - *

- * - * @return a double - */ - public double calc_lngVV() { - tempTotVol = getTotalVolume(); - return 2.0 - * (640.0 * Math.pow(tempTotVol, 3.0) - 216.0 * getB() * tempTotVol * tempTotVol - + 24.0 * Math.pow(getB(), 2.0) * tempTotVol - Math.pow(getB(), 3.0)) - * getB() / (tempTotVol * tempTotVol) / Math.pow(8.0 * tempTotVol - getB(), 2.0) - / Math.pow(4.0 * tempTotVol - getB(), 2.0); - } - - /** - *

- * calc_lngVVV. - *

- * - * @return a double - */ - public double calc_lngVVV() { - tempTotVol = getTotalVolume(); - return 4.0 - * (Math.pow(getB(), 5.0) + 17664.0 * Math.pow(tempTotVol, 4.0) * getB() - - 4192.0 * Math.pow(tempTotVol, 3.0) * Math.pow(getB(), 2.0) - + 528.0 * Math.pow(getB(), 3.0) * tempTotVol * tempTotVol - - 36.0 * tempTotVol * Math.pow(getB(), 4.0) - - 30720.0 * Math.pow(tempTotVol, 5.0)) - * getB() / (Math.pow(tempTotVol, 3.0)) / Math.pow(-8.0 * tempTotVol + getB(), 3.0) - / Math.pow(-4.0 * tempTotVol + getB(), 3.0); - } - - /** - *

- * calcXsitedV. - *

- */ - public void calcXsitedV() { - if (getTotalNumberOfAccociationSites() > 0) { - initCPAMatrix(1); - } + return new double[] {-tot1, -tot4}; + } + + /** + *

+ * calc_hCPA. + *

+ * + * @return a double + */ + public double calc_hCPA() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + htot = 0.0; + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + htot += (1.0 - ((ComponentSrkCPA) componentArray[i]).getXsite()[j]); + } + tot += componentArray[i].getNumberOfMolesInPhase() * htot; + } + return tot; + } + + /** + *

+ * calc_g. + *

+ * + * @return a double + */ + public double calc_g() { + tempTotVol = getMolarVolume(); + double temp = 1.0 - getb() / 4.0 / tempTotVol; + return (2.0 - getb() / 4.0 / tempTotVol) / (2.0 * temp * temp * temp); + } + + /** + *

+ * calc_lngV. + *

+ * + * @return a double + */ + public double calc_lngV() { + tempTotVol = getTotalVolume(); + // gv = -2.0 * getB() * (10.0 * getTotalVolume() - getB()) / getTotalVolume() / + // ((8.0 * getTotalVolume() - getB()) * (4.0 * getTotalVolume() - getB())); + return 1.0 / (2.0 - getB() / (4.0 * tempTotVol)) * getB() / (4.0 * tempTotVol * tempTotVol) + - 3.0 / (1.0 - getB() / (4.0 * tempTotVol)) * getB() / (4.0 * tempTotVol * tempTotVol); + } + + /** + *

+ * calc_lngVV. + *

+ * + * @return a double + */ + public double calc_lngVV() { + tempTotVol = getTotalVolume(); + return 2.0 + * (640.0 * Math.pow(tempTotVol, 3.0) - 216.0 * getB() * tempTotVol * tempTotVol + + 24.0 * Math.pow(getB(), 2.0) * tempTotVol - Math.pow(getB(), 3.0)) + * getB() / (tempTotVol * tempTotVol) / Math.pow(8.0 * tempTotVol - getB(), 2.0) + / Math.pow(4.0 * tempTotVol - getB(), 2.0); + } + + /** + *

+ * calc_lngVVV. + *

+ * + * @return a double + */ + public double calc_lngVVV() { + tempTotVol = getTotalVolume(); + return 4.0 + * (Math.pow(getB(), 5.0) + 17664.0 * Math.pow(tempTotVol, 4.0) * getB() + - 4192.0 * Math.pow(tempTotVol, 3.0) * Math.pow(getB(), 2.0) + + 528.0 * Math.pow(getB(), 3.0) * tempTotVol * tempTotVol + - 36.0 * tempTotVol * Math.pow(getB(), 4.0) - 30720.0 * Math.pow(tempTotVol, 5.0)) + * getB() / (Math.pow(tempTotVol, 3.0)) / Math.pow(-8.0 * tempTotVol + getB(), 3.0) + / Math.pow(-4.0 * tempTotVol + getB(), 3.0); + } + + /** + *

+ * calcXsitedV. + *

+ */ + public void calcXsitedV() { + if (getTotalNumberOfAccociationSites() > 0) { + initCPAMatrix(1); + } + } + + /** + *

+ * solveX. + *

+ * + * @return a boolean + */ + public boolean solveX() { + if (totalNumberOfAccociationSites == 0) { + return true; } - /** - *

- * solveX. - *

- * - * @return a boolean - */ - public boolean solveX() { - if (totalNumberOfAccociationSites == 0) { - return true; - } - - boolean solvedX = solveX2(15); - - DMatrixRMaj mVectorMat = mVector.getMatrix(); - DMatrixRMaj ksiMatrixMat = ksiMatrix.getMatrix(); - - // ksiMatrix.print(); - // second order method not working correctly and not used t the moment b ecause of numerical - // stability - int temp = 0, iter = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - mVectorMat.unsafe_set(temp + j, 0, componentArray[i].getNumberOfMolesInPhase()); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - - DMatrixRMaj mat1 = KlkMatrix.getMatrix(); - double Klk = 0.0; - double totvolume = getTotalVolume(); - double tempVari, tempVarj; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - tempVari = mVectorMat.unsafe_get(i, 0); - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - tempVarj = mVectorMat.unsafe_get(j, 0); - Klk = tempVari * tempVarj / totvolume * delta[i][j]; - mat1.unsafe_set(i, j, Klk); - mat1.unsafe_set(j, i, Klk); - } - } - boolean solved = true; - // SimpleMatrix corrMatrix = null; - do { - solved = true; - iter++; - temp = 0; - double ksi = 0; - - double temp1, temp2; - for (int i = 0; i < numberOfComponents; i++) { - temp1 = componentArray[i].getNumberOfMolesInPhase(); - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - ksi = ((ComponentSrkCPA) componentArray[i]).getXsite()[j]; - ksiMatrixMat.unsafe_set(temp + j, 0, ksi); - // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, - // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); - tempVari = 1.0 / ksi - 1.0; - udotMatrix.set(temp + j, 0, tempVari); - udotTimesmMatrix.set(temp + j, 0, temp1 * tempVari); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - - int krondelt; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - temp1 = mVectorMat.unsafe_get(i, 0); - temp2 = ksiMatrix.get(i, 0); - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - krondelt = 0; - if (i == j) { - krondelt = 1; - } - tempVari = -temp1 / (temp2 * temp2) * krondelt - mat1.unsafe_get(i, j); - hessianMatrix.set(i, j, tempVari); - hessianMatrix.set(j, i, tempVari); - } - } - - // ksiMatrix = new SimpleMatrix(ksi); - // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); - try { - hessianInvers = hessianMatrix.invert(); - } catch (Exception e) { - logger.error("error", e); - return false; - } - if (solvedX) { - // System.out.println("solvedX "); - return true; - } - - DMatrixRMaj mat2 = ksiMatrix.getMatrix(); - CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); - CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, corr3Matrix); - CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); - // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); - // corrMatrix = - // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)));//.scale(-1.0); - temp = 0; - // System.out.println("print SimpleMatrix ..."); - // corrMatrix.print(10, 10); - // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); - // System.out.println("print CommonOps ..."); - // simp.print(10,10); - double newX; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - newX = ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); - if (newX < 0) { - newX = 1e-10; - solved = false; - } - ((ComponentCPAInterface) componentArray[i]).setXsite(j, newX); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - // System.out.println("corrmatrix error " ); - // System.out.println("error " + NormOps_DDRM.normF(corr4Matrix)); - } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); + boolean solvedX = solveX2(15); + + DMatrixRMaj mVectorMat = mVector.getMatrix(); + DMatrixRMaj ksiMatrixMat = ksiMatrix.getMatrix(); + + // ksiMatrix.print(); + // second order method not working correctly and not used t the moment b ecause of numerical + // stability + int temp = 0; + int iter = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + mVectorMat.unsafe_set(temp + j, 0, componentArray[i].getNumberOfMolesInPhase()); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } - // System.out.println("iter " + iter + " error " + - // NormOps_DDRM.normF(corr4Matrix)); // corrMatrix.print(10, 10); - // ksiMatrix.print(10, 10); + DMatrixRMaj mat1 = KlkMatrix.getMatrix(); + double Klk = 0.0; + double totvolume = getTotalVolume(); + double tempVari; + double tempVarj; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + tempVari = mVectorMat.unsafe_get(i, 0); + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + tempVarj = mVectorMat.unsafe_get(j, 0); + Klk = tempVari * tempVarj / totvolume * delta[i][j]; + mat1.unsafe_set(i, j, Klk); + mat1.unsafe_set(j, i, Klk); + } + } + boolean solved = true; + // SimpleMatrix corrMatrix = null; + do { + solved = true; + iter++; + temp = 0; + double ksi = 0; + + double temp1; + double temp2; + for (int i = 0; i < numberOfComponents; i++) { + temp1 = componentArray[i].getNumberOfMolesInPhase(); + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + ksi = ((ComponentSrkCPA) componentArray[i]).getXsite()[j]; + ksiMatrixMat.unsafe_set(temp + j, 0, ksi); + // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, + // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); + tempVari = 1.0 / ksi - 1.0; + udotMatrix.set(temp + j, 0, tempVari); + udotTimesmMatrix.set(temp + j, 0, temp1 * tempVari); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + + int krondelt; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + temp1 = mVectorMat.unsafe_get(i, 0); + temp2 = ksiMatrix.get(i, 0); + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + krondelt = 0; + if (i == j) { + krondelt = 1; + } + tempVari = -temp1 / (temp2 * temp2) * krondelt - mat1.unsafe_get(i, j); + hessianMatrix.set(i, j, tempVari); + hessianMatrix.set(j, i, tempVari); + } + } + + // ksiMatrix = new SimpleMatrix(ksi); + // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); + try { + hessianInvers = hessianMatrix.invert(); + } catch (Exception ex) { + // logger.error(ex.getMessage(), ex); + return false; + } + if (solvedX) { + // System.out.println("solvedX "); return true; + } + + DMatrixRMaj mat2 = ksiMatrix.getMatrix(); + CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); + CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, corr3Matrix); + CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); + // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); + // corrMatrix = + // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix))); + // //.scale(-1.0); + temp = 0; + // System.out.println("print SimpleMatrix ..."); + // corrMatrix.print(10, 10); + // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); + // System.out.println("print CommonOps ..."); + // simp.print(10,10); + double newX; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + newX = ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); + if (newX < 0) { + newX = 1e-10; + solved = false; + } + ((ComponentCPAInterface) componentArray[i]).setXsite(j, newX); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + // System.out.println("corrmatrix error " ); + // System.out.println("error " + NormOps_DDRM.normF(corr4Matrix)); + } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); + + // System.out.println("iter " + iter + " error " + + // NormOps_DDRM.normF(corr4Matrix)); // corrMatrix.print(10, 10); + // ksiMatrix.print(10, 10); + return true; + } + + /** + *

+ * solveX2. + *

+ * + * @param maxIter a int + * @return a boolean + */ + public boolean solveX2(int maxIter) { + double err = .0; + double totalVolume = getTotalVolume(); + int iter = 0; + // if (delta == null) { + // initCPAMatrix(1); + double old = 0.0; + double neeval = 0.0; + // } + do { + iter++; + err = 0.0; + for (int i = 0; i < totalNumberOfAccociationSites; i++) { + old = ((ComponentSrkCPA) componentArray[moleculeNumber[i]]).getXsite()[assSiteNumber[i]]; + neeval = 0.0; + for (int j = 0; j < totalNumberOfAccociationSites; j++) { + neeval += componentArray[moleculeNumber[j]].getNumberOfMolesInPhase() * delta[i][j] + * ((ComponentSrkCPA) componentArray[moleculeNumber[j]]).getXsite()[assSiteNumber[j]]; + } + neeval = 1.0 / (1.0 + 1.0 / totalVolume * neeval); + ((ComponentSrkCPA) componentArray[moleculeNumber[i]]).setXsite(assSiteNumber[i], neeval); + err += Math.abs((old - neeval) / neeval); + } + } while (Math.abs(err) > 1e-12 && iter < maxIter); + // System.out.println("iter " + iter); + if (Math.abs(err) < 1e-12) { + return true; + } else { + // System.out.println("did not solve for Xi in iterations: " + iter); + // System.out.println("error: " + err); + return false; } - - /** - *

- * solveX2. - *

- * - * @param maxIter a int - * @return a boolean - */ - public boolean solveX2(int maxIter) { - double err = .0, totalVolume = getTotalVolume(); - int iter = 0; - // if (delta == null) { - // initCPAMatrix(1); - double old = 0.0, neeval = 0.0; - // } - do { - iter++; - err = 0.0; - for (int i = 0; i < totalNumberOfAccociationSites; i++) { - old = ((ComponentSrkCPA) componentArray[moleculeNumber[i]]) - .getXsite()[assSiteNumber[i]]; - neeval = 0.0; - for (int j = 0; j < totalNumberOfAccociationSites; j++) { - neeval += componentArray[moleculeNumber[j]].getNumberOfMolesInPhase() - * delta[i][j] * ((ComponentSrkCPA) componentArray[moleculeNumber[j]]) - .getXsite()[assSiteNumber[j]]; - } - neeval = 1.0 / (1.0 + 1.0 / totalVolume * neeval); - ((ComponentSrkCPA) componentArray[moleculeNumber[i]]).setXsite(assSiteNumber[i], - neeval); - err += Math.abs((old - neeval) / neeval); - } - } while (Math.abs(err) > 1e-12 && iter < maxIter); - // System.out.println("iter " + iter); - if (Math.abs(err) < 1e-12) { - return true; + } + + /** {@inheritDoc} */ + @Override + public double getHcpatot() { + return hcpatot; + } + + /** + * Setter for property hcpatot. + * + * @param hcpatot New value of property hcpatot. + */ + public void setHcpatot(double hcpatot) { + this.hcpatot = hcpatot; + } + + /** {@inheritDoc} */ + @Override + public double getGcpa() { + return gcpa; + } + + /** + *

+ * calcRootVolFinder. + *

+ * + * @param pt the PhaseType of the phase + * @return a double + */ + public double calcRootVolFinder(PhaseType pt) { + double solvedBonVHigh = 0.0; + double solvedBonVlow = 1.0; + double oldh = 1; + // double[][] matrix = new double[2][2000]; + double BonV = 1.0 - 1e-10; + try { + // molarVolume(pressure, temperature, A, B, pt); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + double BonVold = BonV; + double Btemp = 0; + double h = 1; + // double Dtemp = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0; + // double d1 = 0, d2 = 0; + Btemp = getB(); + // Dtemp = getA(); + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + for (int i = 0; i < 2000; i++) { + BonVold = BonV; + BonV = 1.0 - (i + 1e-6) * 1.0 / 2000.0; + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + gcpa = calc_g(); + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + do { + } while (!solveX()); + + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + + if (Math.signum(h) * Math.signum(oldh) < 0 && i > 2) { + if (solvedBonVlow < 1e-3) { + solvedBonVlow = (BonV + BonVold) / 2.0; + if (pt == PhaseType.GAS) { + break; + } } else { - // System.out.println("did not solve for Xi in iterations: " + iter); - // System.out.println("error: " + err); - return false; - } + solvedBonVHigh = (BonV + BonVold) / 2.0; + if (pt == PhaseType.LIQUID) { + break; + } + } + } + solvedBonVHigh = (BonV + BonVold) / 2.0; + oldh = h; + // matrix[0][i] = BonV; + // matrix[1][i] = h; } - - /** {@inheritDoc} */ - @Override - public double getHcpatot() { - return hcpatot; + if (solvedBonVlow < 1e-3) { + solvedBonVlow = solvedBonVHigh; } - - /** - * Setter for property hcpatot. - * - * @param hcpatot New value of property hcpatot. - */ - public void setHcpatot(double hcpatot) { - this.hcpatot = hcpatot; + // dataPresentation.fileHandeling.createTextFile.TextFile file = new + // dataPresentation.fileHandeling.createTextFile.TextFile(); + // file.setValues(matrix); + // file.setOutputFileName("D:/temp/temp2.txt"); + // file.createFile(); + if (pt == PhaseType.GAS) { + return solvedBonVlow; + } else { + return solvedBonVHigh; } - - /** {@inheritDoc} */ - @Override - public double getGcpa() { - return gcpa; + } + + /** + *

+ * molarVolumeChangePhase. + *

+ * + * @param pressure a double + * @param temperature a double + * @param A a double + * @param B a double + * @param pt the PhaseType of the phase + * @return a double + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double molarVolumeChangePhase(double pressure, double temperature, double A, double B, + PhaseType pt) throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + // double BonV = calcRootVolFinder(pt); + // double BonVInit = BonV; + if (BonV < 0) { + BonV = 1.0e-8; } - /** - *

- * calcRootVolFinder. - *

- * - * @param phase a int - * @return a double - */ - public double calcRootVolFinder(int phase) { - double solvedBonVHigh = 0.0; - double solvedBonVlow = 1.0; - double oldh = 1; - // double[][] matrix = new double[2][2000]; - double BonV = 1.0 - 1e-10; - try { - // molarVolume(pressure, temperature, A, B, phaseType); - } catch (Exception e) { - logger.error("error", e); - } - double BonVold = BonV; - double Btemp = 0, h = 1; - // double Dtemp = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0; - // double d1 = 0, d2 = 0; - Btemp = getB(); - // Dtemp = getA(); - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - for (int i = 0; i < 2000; i++) { - BonVold = BonV; - BonV = 1.0 - (i + 1e-6) * 1.0 / 2000.0; - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - gcpa = calc_g(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - do { - } while (!solveX()); - - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - - if (Math.signum(h) * Math.signum(oldh) < 0 && i > 2) { - if (solvedBonVlow < 1e-3) { - solvedBonVlow = (BonV + BonVold) / 2.0; - if (phase == 1) { - break; - } - } else { - solvedBonVHigh = (BonV + BonVold) / 2.0; - if (phase == 0) { - break; - } - } - } - solvedBonVHigh = (BonV + BonVold) / 2.0; - oldh = h; - // matrix[0][i] = BonV; - // matrix[1][i] = h; - } - if (solvedBonVlow < 1e-3) { - solvedBonVlow = solvedBonVHigh; - } - // dataPresentation.fileHandeling.createTextFile.TextFile file = new - // dataPresentation.fileHandeling.createTextFile.TextFile(); - // file.setValues(matrix); - // file.setOutputFileName("D:/temp/temp2.txt"); - // file.createFile(); - if (phase == 1) { - return solvedBonVlow; - } else { - return solvedBonVHigh; - } + if (BonV >= 1.0) { + BonV = 0.9999; + } + double BonVold = BonV; + double Btemp = 0; + double h = 0; + double dh = 0; + double dhh = 0; + // double gvvv = 0, fvvv = 0; + double d1 = 0; + double d2 = 0; + Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); } + calcDelta(); - /** - *

- * molarVolumeChangePhase. - *

- * - * @param pressure a double - * @param temperature a double - * @param A a double - * @param B a double - * @param phasetype a int - * @return a double - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. - */ - public double molarVolumeChangePhase(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - // double BonV = calcRootVolFinder(phasetype); - // double BonVInit = BonV; - if (BonV < 0) { - BonV = 1.0e-8; - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - if (BonV >= 1.0) { - BonV = 0.9999; - } - double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0, dhh = 0; - // double gvvv = 0, fvvv = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); + do { + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } + + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + solveX(); + + initCPAMatrix(1); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + } + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 1.1) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; + } else { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - calcDelta(); - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - - do { - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } - - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - solveX(); - - initCPAMatrix(1); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } - - if (BonV > 1.1) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } + } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - - // System.out.println("Z " + Z + "h " + h + " BONV " + (Math.abs((BonV - - // BonVold) / BonV))); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10) && iterations < 100); - - /* - * if (Math.abs(h) > 1e-8) { if (phasetype == 0) { molarVolume(pressure, temperature, A, B, - * 1); } else { molarVolume(pressure, temperature, A, B, 0); } return getMolarVolume(); } - */ - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B - // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolumeChangePhase", - "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); + if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; + } else { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } + } - return getMolarVolume(); - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); - /** {@inheritDoc} */ - @Override - public double getGcpav() { - return gcpav; - } + // System.out.println("Z " + Z + "h " + h + " BONV " + (Math.abs((BonV - + // BonVold) / BonV))); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10) && iterations < 100); - /** - *

- * Setter for the field gcpav. - *

- * - * @param gcpav a double + /* + * if (Math.abs(h) > 1e-8) { if (pt == 0) { molarVolume(pressure, temperature, A, B, 1); } else + * { molarVolume(pressure, temperature, A, B, 0); } return getMolarVolume(); } */ - public void setGcpav(double gcpav) { - this.gcpav = gcpav; + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B + // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolumeChangePhase", + "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } - /** {@inheritDoc} */ - @Override - public CPAMixingInterface getCpamix() { - return cpamix; + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double getGcpav() { + return gcpav; + } + + /** + *

+ * Setter for the field gcpav. + *

+ * + * @param gcpav a double + */ + public void setGcpav(double gcpav) { + this.gcpav = gcpav; + } + + /** {@inheritDoc} */ + @Override + public CPAMixingInterface getCpamix() { + return cpamix; + } + + /** {@inheritDoc} */ + @Override + public double calcPressure() { + gcpa = calc_g(); + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + solveX(); + hcpatot = calc_hCPA(); + + initCPAMatrix(1); + return super.calcPressure(); + } + + /** {@inheritDoc} */ + @Override + public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { + if (comp1 == comp2) { + return selfAccociationScheme[comp1][site1][site2]; + } else { + return crossAccociationScheme[comp1][comp2][site1][site2]; } - - /** {@inheritDoc} */ - @Override - public double calcPressure() { - gcpa = calc_g(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - solveX(); - hcpatot = calc_hCPA(); - - initCPAMatrix(1); - return super.calcPressure(); + } + + /** + *

+ * croeneckerProduct. + *

+ * + * @param a an array of type double + * @param b an array of type double + * @return an array of type double + */ + public double[][] croeneckerProduct(double[][] a, double[][] b) { + int aLength = a.length; + int aCols = a[0].length; + int bLength = b.length; + int bCols = b[0].length; + double[][] result = new double[aLength * bLength][(aCols) * (bCols)]; + for (int z = 0; z < aLength; z++) { + for (int i = 0; i < aCols; i++) { + for (int j = 0; j < bLength; j++) { + for (int k = 0; k < bCols; k++) { + result[j + (z * bLength)][k + (i * bCols)] = a[z][i] * b[j][k]; + } + } + } } - - /** {@inheritDoc} */ - @Override - public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { - if (comp1 == comp2) { - return selfAccociationScheme[comp1][site1][site2]; + return result; + } + + /** {@inheritDoc} */ + @Override + public int getTotalNumberOfAccociationSites() { + return totalNumberOfAccociationSites; + } + + /** {@inheritDoc} */ + @Override + public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { + this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; + } + + /** + *

+ * initOld2. + *

+ * + * @param totalNumberOfMoles a double + * @param numberOfComponents a int + * @param type a int + * @param pt the PhaseType of the phase + * @param beta a double + */ + public void initOld2(double totalNumberOfMoles, int numberOfComponents, int type, PhaseType pt, + double beta) { + // type = 0 start init, type = 1 gi nye betingelser + if (type == 0) { + setTotalNumberOfAccociationSites(0); + selfAccociationScheme = new int[numberOfComponents][0][0]; + crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getNumberOfmoles() < 1e-50) { + componentArray[i].setNumberOfAssociationSites(0); } else { - return crossAccociationScheme[comp1][comp2][site1][site2]; - } + componentArray[i] + .setNumberOfAssociationSites(componentArray[i].getOrginalNumberOfAssociationSites()); + setTotalNumberOfAccociationSites( + getTotalNumberOfAccociationSites() + componentArray[i].getNumberOfAssociationSites()); + selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); + for (int j = 0; j < numberOfComponents; j++) { + crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); + } + } + } + + // had to remove if below - dont understand why.. Even + // if (getTotalNumberOfAccociationSites() != oldTotalNumberOfAccociationSites) { + mVector = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + KlkMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkVMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkVVMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkVVVMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + hessianMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkTMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkTTMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkTVMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + Klkni = + new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + ksiMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + uMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + udotMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + moleculeNumber = new int[getTotalNumberOfAccociationSites()]; + assSiteNumber = new int[getTotalNumberOfAccociationSites()]; + gvector = new double[getTotalNumberOfAccociationSites()][1]; + udotTimesmMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltaNog = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadT = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadTdT = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + QMatksiksiksi = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + // } + udotTimesmiMatrix = + new SimpleMatrix(getNumberOfComponents(), getTotalNumberOfAccociationSites()); + + oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); + + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + moleculeNumber[temp + j] = i; + assSiteNumber[temp + j] = j; + } + temp += componentArray[i].getNumberOfAssociationSites(); + } } - - /** - *

- * croeneckerProduct. - *

- * - * @param a an array of {@link double} objects - * @param b an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[][] croeneckerProduct(double[][] a, double[][] b) { - int aLength = a.length; - int aCols = a[0].length; - int bLength = b.length; - int bCols = b[0].length; - double[][] result = new double[aLength * bLength][(aCols) * (bCols)]; - for (int z = 0; z < aLength; z++) { - for (int i = 0; i < aCols; i++) { - for (int j = 0; j < bLength; j++) { - for (int k = 0; k < bCols; k++) { - result[j + (z * bLength)][k + (i * bCols)] = a[z][i] * b[j][k]; - } - } - } - } - return result; + if (cpamix == null) { + cpamix = cpaSelect.getMixingRule(1, this); } - /** {@inheritDoc} */ - @Override - public int getTotalNumberOfAccociationSites() { - return totalNumberOfAccociationSites; + super.init(totalNumberOfMoles, numberOfComponents, type, pt, beta); + if (type > 0 && isConstantPhaseVolume()) { + calcDelta(); + solveX(); + super.init(totalNumberOfMoles, numberOfComponents, 1, pt, beta); + gcpa = calc_g(); + // lngcpa = Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); } - /** {@inheritDoc} */ - @Override - public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { - this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; + if (type > 0) { + hcpatot = calc_hCPA(); } - /** - *

- * initOld2. - *

- * - * @param totalNumberOfMoles a double - * @param numberOfComponents a int - * @param type a int - * @param phase a int - * @param beta a double - */ - public void initOld2(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { // type - // = 0 - // start - // init - // type - // =1 gi - // nye - // betingelser - if (type == 0) { - setTotalNumberOfAccociationSites(0); - selfAccociationScheme = new int[numberOfComponents][0][0]; - crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getNumberOfmoles() < 1e-50) { - componentArray[i].setNumberOfAssociationSites(0); - } else { - componentArray[i].setNumberOfAssociationSites( - componentArray[i].getOrginalNumberOfAssociationSites()); - setTotalNumberOfAccociationSites(getTotalNumberOfAccociationSites() - + componentArray[i].getNumberOfAssociationSites()); - selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); - for (int j = 0; j < numberOfComponents; j++) { - crossAccociationScheme[i][j] = - cpaSelect.setCrossAssociationScheme(i, j, this); - } - } - } - - // had to remove if below - dont understand why.. Even - // if (getTotalNumberOfAccociationSites() != oldTotalNumberOfAccociationSites) { - mVector = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - KlkMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - hessianMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - Klkni = new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - ksiMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - uMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - udotMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - moleculeNumber = new int[getTotalNumberOfAccociationSites()]; - assSiteNumber = new int[getTotalNumberOfAccociationSites()]; - gvector = new double[getTotalNumberOfAccociationSites()][1]; - udotTimesmMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltaNog = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadTdT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - QMatksiksiksi = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - // } - udotTimesmiMatrix = - new SimpleMatrix(getNumberOfComponents(), getTotalNumberOfAccociationSites()); - - oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); - - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - moleculeNumber[temp + j] = i; - assSiteNumber[temp + j] = j; - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - } - if (cpamix == null) { - cpamix = cpaSelect.getMixingRule(1, this); - } - - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - if (type > 0 && isConstantPhaseVolume()) { - calcDelta(); - solveX(); - super.init(totalNumberOfMoles, numberOfComponents, 1, phase, beta); - gcpa = calc_g(); - // lngcpa = Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - } - - if (type > 0) { - hcpatot = calc_hCPA(); - } - - if (type > 1) { - initCPAMatrix(type); - // hcpatotdT = calc_hCPAdT(); - // super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } + if (type > 1) { + initCPAMatrix(type); + // hcpatotdT = calc_hCPAdT(); + // super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); } - - /** {@inheritDoc} */ - @Override - public double molarVolume2(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - Z = phase == 0 ? 1.0 : 1.0e-5; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume2(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + Z = pt == PhaseType.LIQUID ? 1.0 : 1.0e-5; + setMolarVolume(Z * R * temperature / pressure); + // super.molarVolume(pressure,temperature, A, B, phase); + int iterations = 0; + double err = 0.0; + double dErrdV = 0.0; + double deltaV = 0; + + do { + A = calcA(this, temperature, pressure, numberOfComponents); + B = calcB(this, temperature, pressure, numberOfComponents); + + double dFdV = dFdV(); + double dFdVdV = dFdVdV(); + // double dFdVdVdV = dFdVdVdV(); + // double factor1 = 1.0e0, factor2 = 1.0e0; + err = -R * temperature * dFdV + R * temperature / getMolarVolume() - pressure; + + // System.out.println("pressure " + -R * temperature * dFdV + " " + R * + // temperature / getMolarVolume()); + // -pressure; + dErrdV = -R * temperature * dFdVdV + - R * temperature * numberOfMolesInPhase / Math.pow(getVolume(), 2.0); + + // System.out.println("errdV " + dErrdV); + // System.out.println("err " + err); + deltaV = -err / dErrdV; + + setMolarVolume(getMolarVolume() + deltaV / numberOfMolesInPhase); + + Z = pressure * getMolarVolume() / (R * temperature); + if (Z < 0) { + Z = 1e-6; setMolarVolume(Z * R * temperature / pressure); - // super.molarVolume(pressure,temperature, A, B, phase); - int iterations = 0; - double err = 0.0, dErrdV = 0.0; - double deltaV = 0; - - do { - A = calcA(this, temperature, pressure, numberOfComponents); - B = calcB(this, temperature, pressure, numberOfComponents); - - double dFdV = dFdV(), dFdVdV = dFdVdV(); - // double dFdVdVdV = dFdVdVdV(); - // double factor1 = 1.0e0, factor2 = 1.0e0; - err = -R * temperature * dFdV + R * temperature / getMolarVolume() - pressure; - - // System.out.println("pressure " + -R * temperature * dFdV + " " + R * - // temperature / getMolarVolume()); - // -pressure; - dErrdV = -R * temperature * dFdVdV - - R * temperature * numberOfMolesInPhase / Math.pow(getVolume(), 2.0); - - // System.out.println("errdV " + dErrdV); - // System.out.println("err " + err); - deltaV = -err / dErrdV; - - setMolarVolume(getMolarVolume() + deltaV / numberOfMolesInPhase); - - Z = pressure * getMolarVolume() / (R * temperature); - if (Z < 0) { - Z = 1e-6; - setMolarVolume(Z * R * temperature / pressure); - } - - // System.out.println("Z " + Z); - } while (Math.abs(err) > 1.0e-8 || iterations < 100); - // System.out.println("Z " + Z); - return getMolarVolume(); + } + + // System.out.println("Z " + Z); + } while (Math.abs(err) > 1.0e-8 || iterations < 100); + // System.out.println("Z " + Z); + return getMolarVolume(); + } + + /** + *

+ * initCPAMatrixOld. + *

+ * + * @param type a int + */ + public void initCPAMatrixOld(int type) { + if (getTotalNumberOfAccociationSites() == 0) { + FCPA = 0.0; + dFCPAdTdV = 0.0; + dFCPAdTdT = 0.0; + dFCPAdT = 0; + dFCPAdV = 0; + dFCPAdVdV = 0.0; + dFCPAdVdVdV = 0.0; + + return; } - /** - *

- * initCPAMatrixOld. - *

- * - * @param type a int - */ - public void initCPAMatrixOld(int type) { - if (getTotalNumberOfAccociationSites() == 0) { - FCPA = 0.0; - dFCPAdTdV = 0.0; - dFCPAdTdT = 0.0; - dFCPAdT = 0; - dFCPAdV = 0; - dFCPAdVdV = 0.0; - dFCPAdVdVdV = 0.0; - - return; - } - - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - uMatrix.set(temp + j, 0, - Math.log(ksiMatrix.get(temp + j, 0)) - ksiMatrix.get(temp + j, 0) + 1.0); - gvector[temp + j][0] = mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - for (int i = 0; i < getNumberOfComponents(); i++) { - for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { - if (moleculeNumber[j] == i) { - udotTimesmiMatrix.set(i, j, udotMatrix.get(j, 0)); - } else { - udotTimesmiMatrix.set(i, j, 0.0); - } - } + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + uMatrix.set(temp + j, 0, + Math.log(ksiMatrix.get(temp + j, 0)) - ksiMatrix.get(temp + j, 0) + 1.0); + gvector[temp + j][0] = mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + for (int i = 0; i < getNumberOfComponents(); i++) { + for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { + if (moleculeNumber[j] == i) { + udotTimesmiMatrix.set(i, j, udotMatrix.get(j, 0)); + } else { + udotTimesmiMatrix.set(i, j, 0.0); } + } + } - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - delta[i][j] = deltaNog[i][j] * getGcpa(); - delta[j][i] = delta[i][j]; - if (type > 1) { - deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadT[j][i] = deltadT[i][j]; - - deltadTdT[i][j] = cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadTdT[j][i] = deltadTdT[i][j]; - } - } - } + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + delta[i][j] = deltaNog[i][j] * getGcpa(); + delta[j][i] = delta[i][j]; + if (type > 1) { + deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadT[j][i] = deltadT[i][j]; - double totalVolume = getTotalVolume(); - double totalVolume2 = totalVolume * totalVolume, totalVolume3 = totalVolume2 * totalVolume; - double gdv1 = getGcpav() - 1.0 / totalVolume; - double gdv2 = gdv1 * gdv1; - double gdv3 = gdv2 * gdv1; - // double Klk = 0.0; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - KlkVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv1); - KlkVMatrix.set(j, i, KlkVMatrix.get(i, j)); - - KlkVVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv2 - + KlkMatrix.get(i, j) * (gcpavv + 1.0 / totalVolume / totalVolume)); - KlkVVMatrix.set(j, i, KlkVVMatrix.get(i, j)); - - KlkVVVMatrix.set(i, j, - KlkMatrix.get(i, j) * gdv3 - + 3.0 * KlkMatrix.get(i, j) * (getGcpav() - 1.0 / totalVolume) - * (gcpavv + 1.0 / (totalVolume2)) - + KlkMatrix.get(i, j) * (gcpavvv - 2.0 / (totalVolume3))); - KlkVVVMatrix.set(j, i, KlkVVVMatrix.get(i, j)); - - if (type > 1) { - double tempVar = deltadT[i][j] / delta[i][j]; - double tempVardT = deltadTdT[i][j] / delta[i][j] - - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - - if (!Double.isNaN(tempVar)) { - // KlkdT[i][j] = KlkMatrix.getMatrix().unsafe_get(i, j) * tempVar; - // KlkdT[j][i] = KlkdT[i][j]; - - KlkTMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar); - KlkTMatrix.set(j, i, KlkTMatrix.get(i, j)); - - KlkTVMatrix.set(i, j, - KlkMatrix.get(i, j) * tempVar * (gcpav - 1.0 / totalVolume)); - KlkTVMatrix.set(j, i, KlkTVMatrix.get(i, j)); - - KlkTTMatrix.set(i, j, - KlkMatrix.get(i, j) * (tempVar * tempVar + tempVardT)); - KlkTTMatrix.set(j, i, KlkTTMatrix.get(i, j)); - } - - if (type > 2) { - for (int p = 0; p < numberOfComponents; p++) { - double t1 = 0.0, t2 = 0.0; - if (moleculeNumber[i] == p) { - t1 = 1.0 / mVector.get(i, 0); - } - if (moleculeNumber[j] == p) { - t2 = 1.0 / mVector.get(j, 0); - } - Klkni[p][i][j] = KlkMatrix.get(i, j) * (t1 + t2 - + ((ComponentSrkCPA) getComponent(p)).calc_lngi(this)); - Klkni[p][j][i] = Klkni[p][i][j]; - } - } - } - } - QMatksiksiksi.set(i, 0, 2.0 * mVector.get(i, 0) - / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0))); + deltadTdT[i][j] = + cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadTdT[j][i] = deltadTdT[i][j]; } + } + } - SimpleMatrix ksiMatrixTranspose = ksiMatrix.transpose(); - - // dXdV - SimpleMatrix KlkVMatrixksi = KlkVMatrix.mult(ksiMatrix); - SimpleMatrix XV = hessianInvers.mult(KlkVMatrixksi); - SimpleMatrix XVtranspose = XV.transpose(); - - SimpleMatrix QCPA = mVector.transpose() - .mult(uMatrix.minus(ksiMatrix.elementMult(udotMatrix).scale(0.5))); - FCPA = QCPA.get(0, 0); - - SimpleMatrix tempMatrix = ksiMatrixTranspose.mult(KlkVMatrixksi).scale(-0.5); - dFCPAdV = tempMatrix.get(0, 0); - SimpleMatrix KlkVVMatrixTImesKsi = KlkVVMatrix.mult(ksiMatrix); - SimpleMatrix tempMatrixVV = ksiMatrixTranspose.mult(KlkVVMatrixTImesKsi).scale(-0.5) - .minus(KlkVMatrixksi.transpose().mult(XV)); - dFCPAdVdV = tempMatrixVV.get(0, 0); + double totalVolume = getTotalVolume(); + double totalVolume2 = totalVolume * totalVolume; + double totalVolume3 = totalVolume2 * totalVolume; + double gdv1 = getGcpav() - 1.0 / totalVolume; + double gdv2 = gdv1 * gdv1; + double gdv3 = gdv2 * gdv1; + // double Klk = 0.0; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + KlkVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv1); + KlkVMatrix.set(j, i, KlkVMatrix.get(i, j)); + + KlkVVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv2 + + KlkMatrix.get(i, j) * (gcpavv + 1.0 / totalVolume / totalVolume)); + KlkVVMatrix.set(j, i, KlkVVMatrix.get(i, j)); + + KlkVVVMatrix.set(i, j, + KlkMatrix.get(i, j) * gdv3 + + 3.0 * KlkMatrix.get(i, j) * (getGcpav() - 1.0 / totalVolume) + * (gcpavv + 1.0 / (totalVolume2)) + + KlkMatrix.get(i, j) * (gcpavvv - 2.0 / (totalVolume3))); + KlkVVVMatrix.set(j, i, KlkVVVMatrix.get(i, j)); - SimpleMatrix QVVV = ksiMatrixTranspose.mult(KlkVVVMatrix.mult(ksiMatrix)).scale(-0.5); - SimpleMatrix QVVksi = KlkVVMatrixTImesKsi.scale(-1.0); - SimpleMatrix QksiVksi = KlkVMatrix.scale(-1.0); + if (type > 1) { + double tempVar = deltadT[i][j] / delta[i][j]; + double tempVardT = deltadTdT[i][j] / delta[i][j] + - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - SimpleMatrix mat1 = QVVksi.transpose().mult(XV).scale(3.0); - SimpleMatrix mat2 = XVtranspose.mult(QksiVksi.mult(XV)).scale(3.0); - SimpleMatrix mat4 = XVtranspose.mult(QMatksiksiksi.mult(XVtranspose)).mult(XV); + if (!Double.isNaN(tempVar)) { + // KlkdT[i][j] = KlkMatrix.getMatrix().unsafe_get(i, j) * tempVar; + // KlkdT[j][i] = KlkdT[i][j]; - SimpleMatrix dFCPAdVdVdVMatrix = QVVV.plus(mat1).plus(mat2).plus(mat2).plus(mat4); - dFCPAdVdVdV = dFCPAdVdVdVMatrix.get(0, 0); - temp = 0; + KlkTMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar); + KlkTMatrix.set(j, i, KlkTMatrix.get(i, j)); - if (type == 1) { - return; - } - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); - } + KlkTVMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar * (gcpav - 1.0 / totalVolume)); + KlkTVMatrix.set(j, i, KlkTVMatrix.get(i, j)); - // KlkTMatrix = new SimpleMatrix(KlkdT); - SimpleMatrix KlkTMatrixTImesKsi = KlkTMatrix.mult(ksiMatrix); - // dQdT - SimpleMatrix tempMatrix2 = ksiMatrixTranspose.mult(KlkTMatrixTImesKsi).scale(-0.5); - dFCPAdT = tempMatrix2.get(0, 0); - - // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); - // SimpleMatrix tempMatrixTV = - // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - // dFCPAdTdV = tempMatrixTV.get(0, 0); - // dXdT - SimpleMatrix XT = hessianInvers.mult(KlkTMatrixTImesKsi); - // dQdTdT - SimpleMatrix tempMatrixTT = ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5) - .minus(KlkTMatrixTImesKsi.transpose().mult(XT)); - dFCPAdTdT = tempMatrixTT.get(0, 0); - - SimpleMatrix tempMatrixTV = ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5) - .minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - dFCPAdTdV = tempMatrixTV.get(0, 0); - - temp = 0; - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); - } + KlkTTMatrix.set(i, j, KlkMatrix.get(i, j) * (tempVar * tempVar + tempVardT)); + KlkTTMatrix.set(j, i, KlkTTMatrix.get(i, j)); + } - if (type == 2) { - return; - } - - // int assSites = 0; - // if(true) return; - for (int p = 0; p < numberOfComponents; p++) { - SimpleMatrix KiMatrix = new SimpleMatrix(Klkni[p]); - // KiMatrix.print(10,10); - // Matrix dQdniMatrix = - // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this - // methods misses one part of .... - // dQdniMatrix.print(10,10); - // KiMatrix.print(10, 10); - // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - - // 1).print(10, 10); - // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - - // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5));// - // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); - // System.out.println("dQdn "); - // tempMatrix20.print(10, 10); - SimpleMatrix tempMatrix4 = KiMatrix.mult(ksiMatrix); - // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - 1).print(10, 10); - SimpleMatrix tempMatrix5 = - udotTimesmiMatrix.extractVector(true, p).transpose().minus(tempMatrix4); - // tempMki[0] = mki[p]; - // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, - // udotMatrix.getArray())); - // System.out.println("aMatrix "); - // amatrix.transpose().print(10, 10); - // System.out.println("temp4 matrix"); - // tempMatrix4.print(10, 10); - // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); - SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5);// .scale(-1.0); - // System.out.println("dXdni"); - // tempMatrix4.print(10, 10); - // tempMatrix5.print(10, 10); - // System.out.println("dXdn "); - // tempMatrix6.print(10, 10); - int temp2 = 0; - for (int compp = 0; compp < numberOfComponents; compp++) { - for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, - -1.0 * tempMatrix6.get(temp2 + kk, 0)); - } - temp2 += getComponent(compp).getNumberOfAssociationSites(); + if (type > 2) { + for (int p = 0; p < numberOfComponents; p++) { + double t1 = 0.0; + double t2 = 0.0; + if (moleculeNumber[i] == p) { + t1 = 1.0 / mVector.get(i, 0); + } + if (moleculeNumber[j] == p) { + t2 = 1.0 / mVector.get(j, 0); + } + Klkni[p][i][j] = KlkMatrix.get(i, j) + * (t1 + t2 + ((ComponentSrkCPA) getComponent(p)).calc_lngi(this)); + Klkni[p][j][i] = Klkni[p][i][j]; } - // assSites += getComponent(p).getNumberOfAssociationSites(); + } } + } + QMatksiksiksi.set(i, 0, 2.0 * mVector.get(i, 0) + / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0))); } - /** - *

- * solveXOld. - *

- * - * @return a boolean - */ - public boolean solveXOld() { - if (getTotalNumberOfAccociationSites() == 0) { - return true; - } + SimpleMatrix ksiMatrixTranspose = ksiMatrix.transpose(); - boolean solvedX = solveX2(5); - if (solvedX) { - // return true; - } + // dXdV + SimpleMatrix KlkVMatrixksi = KlkVMatrix.mult(ksiMatrix); + SimpleMatrix XV = hessianInvers.mult(KlkVMatrixksi); + SimpleMatrix XVtranspose = XV.transpose(); - DMatrixRMaj mat1 = KlkMatrix.getMatrix(); - DMatrixRMaj mat2 = ksiMatrix.getMatrix(); - // second order method not working correctly and not used t the moment b ecause of numerical - // stability - int temp = 0, iter = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - mVector.set(temp + j, 0, componentArray[i].getNumberOfMolesInPhase()); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - double Klk = 0.0; - double totalVolume = getTotalVolume(); - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - Klk = mVector.get(i, 0) * mVector.get(j, 0) / totalVolume * delta[i][j]; - KlkMatrix.set(i, j, Klk); - KlkMatrix.set(j, i, Klk); - } - } - boolean solved = true; - // SimpleMatrix corrMatrix = null; - do { - solved = true; - iter++; - temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - ksiMatrix.set(temp + j, 0, ((ComponentSrkCPA) componentArray[i]).getXsite()[j]); - // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, - // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); - udotMatrix.set(temp + j, 0, 1.0 / ksiMatrix.get(temp + j, 0) - 1.0); - udotTimesmMatrix.set(temp + j, 0, - mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0)); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } + SimpleMatrix QCPA = + mVector.transpose().mult(uMatrix.minus(ksiMatrix.elementMult(udotMatrix).scale(0.5))); + FCPA = QCPA.get(0, 0); - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - int krondelt = 0; - if (i == j) { - krondelt = 1; - } - hessianMatrix.set(i, j, - -mVector.get(i, 0) / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0)) - * krondelt - KlkMatrix.get(i, j)); - hessianMatrix.set(j, i, hessianMatrix.get(i, j)); - } - } + SimpleMatrix tempMatrix = ksiMatrixTranspose.mult(KlkVMatrixksi).scale(-0.5); + dFCPAdV = tempMatrix.get(0, 0); + SimpleMatrix KlkVVMatrixTImesKsi = KlkVVMatrix.mult(ksiMatrix); + SimpleMatrix tempMatrixVV = ksiMatrixTranspose.mult(KlkVVMatrixTImesKsi).scale(-0.5) + .minus(KlkVMatrixksi.transpose().mult(XV)); + dFCPAdVdV = tempMatrixVV.get(0, 0); - // ksiMatrix = new SimpleMatrix(ksi); - // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); - try { - hessianInvers = hessianMatrix.invert(); - } catch (Exception e) { - logger.error("error", e); - return false; - } + SimpleMatrix QVVV = ksiMatrixTranspose.mult(KlkVVVMatrix.mult(ksiMatrix)).scale(-0.5); + SimpleMatrix QVVksi = KlkVVMatrixTImesKsi.scale(-1.0); + SimpleMatrix QksiVksi = KlkVMatrix.scale(-1.0); - CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); - CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, corr3Matrix); - CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); - // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); - // corrMatrix = - // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)));//.scale(-1.0); - temp = 0; - // System.out.println("print SimpleMatrix ..."); - // corrMatrix.print(10, 10); - // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); - // System.out.println("print CommonOps ..."); - // simp.print(10,10); - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - double newX = - ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); - if (newX < 0) { - newX = 1e-10; - solved = false; - } - ((ComponentCPAInterface) componentArray[i]).setXsite(j, newX); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - // System.out.println("corrmatrix error " ); - // System.out.println("error " + corrMatrix.norm1()); - } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); + SimpleMatrix mat1 = QVVksi.transpose().mult(XV).scale(3.0); + SimpleMatrix mat2 = XVtranspose.mult(QksiVksi.mult(XV)).scale(3.0); + SimpleMatrix mat4 = XVtranspose.mult(QMatksiksiksi.mult(XVtranspose)).mult(XV); - // System.out.println("iter " + iter + " error " + NormOps.normF(corr4Matrix)); - // // corrMatrix.print(10, 10); - // ksiMatrix.print(10, 10); - return true; + SimpleMatrix dFCPAdVdVdVMatrix = QVVV.plus(mat1).plus(mat2).plus(mat2).plus(mat4); + dFCPAdVdVdV = dFCPAdVdVdVMatrix.get(0, 0); + temp = 0; + + if (type == 1) { + return; + } + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** - *

- * solveX2Old. - *

- * - * @param maxIter a int - * @return a boolean - */ - public boolean solveX2Old(int maxIter) { - double err = .0; - int iter = 0; - // if (delta == null) { - // initCPAMatrix(1); - double old = 0.0, neeval = 0.0, totalVolume = getTotalVolume(); - // } - do { - iter++; - err = 0.0; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - old = ((ComponentSrkCPA) getComponent(moleculeNumber[i])) - .getXsite()[assSiteNumber[i]]; - neeval = 0; - for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { - neeval += getComponent(moleculeNumber[j]).getNumberOfMolesInPhase() - * delta[i][j] * ((ComponentSrkCPA) getComponent(moleculeNumber[j])) - .getXsite()[assSiteNumber[j]]; - } - neeval = 1.0 / (1.0 + 1.0 / totalVolume * neeval); - ((ComponentCPAInterface) getComponent(moleculeNumber[i])).setXsite(assSiteNumber[i], - neeval); - err += Math.abs((old - neeval) / neeval); - } - } while (Math.abs(err) > 1e-10 && iter < maxIter); - // System.out.println("iter " + iter); - // if (Math.abs(err) - // < 1e-12) { - // return true; - // } else { - // System.out.println("did not solve for Xi in iterations: " + iter); - // System.out.println("error: " + err); - return false; + // KlkTMatrix = new SimpleMatrix(KlkdT); + SimpleMatrix KlkTMatrixTImesKsi = KlkTMatrix.mult(ksiMatrix); + // dQdT + SimpleMatrix tempMatrix2 = ksiMatrixTranspose.mult(KlkTMatrixTImesKsi).scale(-0.5); + dFCPAdT = tempMatrix2.get(0, 0); + + // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); + // SimpleMatrix tempMatrixTV = + // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + // dFCPAdTdV = tempMatrixTV.get(0, 0); + // dXdT + SimpleMatrix XT = hessianInvers.mult(KlkTMatrixTImesKsi); + // dQdTdT + SimpleMatrix tempMatrixTT = ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5) + .minus(KlkTMatrixTImesKsi.transpose().mult(XT)); + dFCPAdTdT = tempMatrixTT.get(0, 0); + + SimpleMatrix tempMatrixTV = ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5) + .minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + dFCPAdTdV = tempMatrixTV.get(0, 0); + + temp = 0; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** - *

- * molarVolumeOld. - *

- * - * @param pressure a double - * @param temperature a double - * @param A a double - * @param B a double - * @param phasetype a int - * @return a double - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. - */ - public double molarVolumeOld(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - // if (pressure > 1000) { - // BonV = 0.9999; - // } + if (type == 2) { + return; + } - // double calcRooBonVtVolFinder = calcRootVolFinder(phasetype); - // BonV = calcRooBonVtVolFinder; - // double BonVInit = BonV; - if (BonV < 0) { - BonV = 1.0e-8; - } + // int assSites = 0; + // if(true) return; + for (int p = 0; p < numberOfComponents; p++) { + SimpleMatrix KiMatrix = new SimpleMatrix(Klkni[p]); + // KiMatrix.print(10,10); + // Matrix dQdniMatrix = + // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this + // methods misses one part of .... + // dQdniMatrix.print(10,10); + // KiMatrix.print(10, 10); + // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - + // 1).print(10, 10); + // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - + // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); + // // + // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); + // System.out.println("dQdn "); + // tempMatrix20.print(10, 10); + SimpleMatrix tempMatrix4 = KiMatrix.mult(ksiMatrix); + // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - 1).print(10, 10); + SimpleMatrix tempMatrix5 = + udotTimesmiMatrix.extractVector(true, p).transpose().minus(tempMatrix4); + // tempMki[0] = mki[p]; + // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, + // udotMatrix.getArray())); + // System.out.println("aMatrix "); + // amatrix.transpose().print(10, 10); + // System.out.println("temp4 matrix"); + // tempMatrix4.print(10, 10); + // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); + SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5); // .scale(-1.0); + // System.out.println("dXdni"); + // tempMatrix4.print(10, 10); + // tempMatrix5.print(10, 10); + // System.out.println("dXdn "); + // tempMatrix6.print(10, 10); + int temp2 = 0; + for (int compp = 0; compp < numberOfComponents; compp++) { + for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, + -1.0 * tempMatrix6.get(temp2 + kk, 0)); + } + temp2 += getComponent(compp).getNumberOfAssociationSites(); + } + // assSites += getComponent(p).getNumberOfAssociationSites(); + } + } + + /** + *

+ * solveXOld. + *

+ * + * @return a boolean + */ + public boolean solveXOld() { + if (getTotalNumberOfAccociationSites() == 0) { + return true; + } - if (BonV >= 1.0) { - BonV = 0.9999; - } - double BonVold; - double h = 0, dh = 0, dhh = 0; - double d1 = 0, d2 = 0; - double Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); - } - calcDelta(); + boolean solvedX = solveX2(5); + if (solvedX) { + // return true; + } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; + DMatrixRMaj mat1 = KlkMatrix.getMatrix(); + DMatrixRMaj mat2 = ksiMatrix.getMatrix(); + // second order method not working correctly and not used t the moment b ecause of numerical + // stability + int temp = 0; + int iter = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + mVector.set(temp + j, 0, componentArray[i].getNumberOfMolesInPhase()); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + double Klk = 0.0; + double totalVolume = getTotalVolume(); + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + Klk = mVector.get(i, 0) * mVector.get(j, 0) / totalVolume * delta[i][j]; + KlkMatrix.set(i, j, Klk); + KlkMatrix.set(j, i, Klk); + } + } + boolean solved = true; + // SimpleMatrix corrMatrix = null; + do { + solved = true; + iter++; + temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + ksiMatrix.set(temp + j, 0, ((ComponentSrkCPA) componentArray[i]).getXsite()[j]); + // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, + // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); + udotMatrix.set(temp + j, 0, 1.0 / ksiMatrix.get(temp + j, 0) - 1.0); + udotTimesmMatrix.set(temp + j, 0, mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0)); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + int krondelt = 0; + if (i == j) { + krondelt = 1; + } + hessianMatrix.set(i, j, + -mVector.get(i, 0) / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0)) * krondelt + - KlkMatrix.get(i, j)); + hessianMatrix.set(j, i, hessianMatrix.get(i, j)); + } + } + + // ksiMatrix = new SimpleMatrix(ksi); + // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); + try { + hessianInvers = hessianMatrix.invert(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return false; + } + + CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); + CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, corr3Matrix); + CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); + // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); + // corrMatrix = + // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix))); + // //.scale(-1.0); + temp = 0; + // System.out.println("print SimpleMatrix ..."); + // corrMatrix.print(10, 10); + // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); + // System.out.println("print CommonOps ..."); + // simp.print(10,10); + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + double newX = ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); + if (newX < 0) { + newX = 1e-10; + solved = false; + } + ((ComponentCPAInterface) componentArray[i]).setXsite(j, newX); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + // System.out.println("corrmatrix error " ); + // System.out.println("error " + corrMatrix.norm1()); + } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); + + // System.out.println("iter " + iter + " error " + NormOps.normF(corr4Matrix)); + // // corrMatrix.print(10, 10); + // ksiMatrix.print(10, 10); + return true; + } + + /** + *

+ * solveX2Old. + *

+ * + * @param maxIter a int + * @return a boolean + */ + public boolean solveX2Old(int maxIter) { + double err = .0; + int iter = 0; + // if (delta == null) { + // initCPAMatrix(1); + double old = 0.0; + double neeval = 0.0; + double totalVolume = getTotalVolume(); + // } + do { + iter++; + err = 0.0; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + old = ((ComponentSrkCPA) getComponent(moleculeNumber[i])).getXsite()[assSiteNumber[i]]; + neeval = 0; + for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { + neeval += getComponent(moleculeNumber[j]).getNumberOfMolesInPhase() * delta[i][j] + * ((ComponentSrkCPA) getComponent(moleculeNumber[j])).getXsite()[assSiteNumber[j]]; + } + neeval = 1.0 / (1.0 + 1.0 / totalVolume * neeval); + ((ComponentCPAInterface) getComponent(moleculeNumber[i])).setXsite(assSiteNumber[i], + neeval); + err += Math.abs((old - neeval) / neeval); + } + } while (Math.abs(err) > 1e-10 && iter < maxIter); + // System.out.println("iter " + iter); + // if (Math.abs(err) + // < 1e-12) { + // return true; + // } else { + // System.out.println("did not solve for Xi in iterations: " + iter); + // System.out.println("error: " + err); + return false; + } + + /** + *

+ * molarVolumeOld. + *

+ * + * @param pressure a double + * @param temperature a double + * @param A a double + * @param B a double + * @param pt the PhaseType of the phase + * @return a double + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double molarVolumeOld(double pressure, double temperature, double A, double B, + PhaseType pt) throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + // if (pressure > 1000) { + // BonV = 0.9999; + // } + + // double calcRooBonVtVolFinder = calcRootVolFinder(pt); + // BonV = calcRooBonVtVolFinder; + // double BonVInit = BonV; + if (BonV < 0) { + BonV = 1.0e-8; + } - do { - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } + if (BonV >= 1.0) { + BonV = 0.9999; + } + double BonVold; + double h = 0; + double dh = 0; + double dhh = 0; + double d1 = 0; + double d2 = 0; + double Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); + } + calcDelta(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - if (getTotalNumberOfAccociationSites() > 0) { - solveX(); - } + do { + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } - initCPAMatrix(1); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 - // + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); - if (BonV > 0.9999) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV = 0.9999; - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - } - } else if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - } - } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) - && iterations < 100); - - if (Math.abs(h) > 1e-12) { - // System.out.println("h failed " + "Z" + Z + " iterations " + iterations + " - // BonV " + BonV); - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - } - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + totalVolume + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B - // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolumeOld", "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); - } - return getMolarVolume(); + if (getTotalNumberOfAccociationSites() > 0) { + solveX(); + } + + initCPAMatrix(1); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 + // + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + } + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 0.9999) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; + } else { + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV = 0.9999; + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); + } + } else if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; + } else { + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); + } + } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) + && iterations < 100); + + if (Math.abs(h) > 1e-12) { + // System.out.println("h failed " + "Z" + Z + " iterations " + iterations + " + // BonV " + BonV); + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + } + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + totalVolume + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B + // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolumeOld", "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } + return getMolarVolume(); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseSrkCPA_proceduralMatrices.java b/src/main/java/neqsim/thermo/phase/PhaseSrkCPA_proceduralMatrices.java index a1d4f1670c..eed767d7d3 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseSrkCPA_proceduralMatrices.java +++ b/src/main/java/neqsim/thermo/phase/PhaseSrkCPA_proceduralMatrices.java @@ -21,1437 +21,1498 @@ * @version Modified to use procedural oriented ejml matrices by Marlene Lund */ public class PhaseSrkCPA_proceduralMatrices extends PhaseSrkEos implements PhaseCPAInterface { - private static final long serialVersionUID = 1000; - - public CPAMixing cpaSelect = new CPAMixing(); - public CPAMixingInterface cpamix; - double gcpavv = 0.0, gcpavvv = 0.0, gcpa = 0.0, hcpatot = 1.0, FCPA = 0.0, dFCPAdTdV, - dFCPAdTdT = 0.0, dFCPAdT = 0, dFCPAdV = 0, dFCPAdVdV = 0.0, dFCPAdVdVdV = 0.0; - private double gcpav = 0.0; - int cpaon = 1, oldTotalNumberOfAccociationSites = 0; - private int totalNumberOfAccociationSites = 0; - int[][][] selfAccociationScheme = null; - int[][][][] crossAccociationScheme = null; - int[] moleculeNumber = null, assSiteNumber = null; - private double[][] gvector = null, delta = null, deltaNog = null, deltadT = null, - deltadTdT = null; - private double[][][] Klkni = null; - private DMatrixRMaj KlkTVMatrix = null, KlkTTMatrix = null, KlkTMatrix = null, - udotTimesmMatrix = null, mVector = null, udotMatrix = null, uMatrix = null, - QMatksiksiksi = null, KlkVVVMatrix = null, KlkVVMatrix = null, udotTimesmiMatrix = null, - ksiMatrix = null, KlkMatrix = null, hessianMatrix = null, hessianInvers = null, - KlkVMatrix = null; - DMatrixRMaj corr2Matrix = null, corr3Matrix = null, corr4Matrix = null;// new - // DenseMatrix64F(getTotalNumberOfAccociationSites(), - // 1); - static Logger logger = LogManager.getLogger(PhaseSrkCPA_proceduralMatrices.class); - - /** - *

- * Constructor for PhaseSrkCPA_proceduralMatrices. - *

- */ - public PhaseSrkCPA_proceduralMatrices() { - super(); - } + private static final long serialVersionUID = 1000; - /** {@inheritDoc} */ - @Override - public PhaseSrkCPA clone() { - PhaseSrkCPA clonedPhase = null; - try { - clonedPhase = (PhaseSrkCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); - // clonedPhase.cpamix = (CPAMixingInterface) cpamix.clone(); - // clonedPhase.cpamix = cpaSelect.getMixingRule(1, this); + public CPAMixing cpaSelect = new CPAMixing(); + public CPAMixingInterface cpamix; + double gcpavv = 0.0; - return clonedPhase; - } + double gcpavvv = 0.0; - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - cpamix = cpaSelect.getMixingRule(1, this); - } + double gcpa = 0.0; - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - if (type == 0) { - setTotalNumberOfAccociationSites(0); - selfAccociationScheme = new int[numberOfComponents][0][0]; - crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; - for (int i = 0; i < numberOfComponents; i++) { - if (getComponent(i).getNumberOfmoles() < 1e-50) { - getComponent(i).setNumberOfAssociationSites(0); - } else { - getComponent(i).setNumberOfAssociationSites( - getComponent(i).getOrginalNumberOfAssociationSites()); - setTotalNumberOfAccociationSites(getTotalNumberOfAccociationSites() - + getComponent(i).getNumberOfAssociationSites()); - selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); - for (int j = 0; j < numberOfComponents; j++) { - crossAccociationScheme[i][j] = - cpaSelect.setCrossAssociationScheme(i, j, this); - } - } - } + double hcpatot = 1.0; - // had to remove if below - dont understand why.. Even - // if (getTotalNumberOfAccociationSites() != oldTotalNumberOfAccociationSites) { - mVector = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - KlkMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVVMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - hessianMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTTMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTVMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - Klkni = new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - ksiMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - uMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - udotMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - moleculeNumber = new int[getTotalNumberOfAccociationSites()]; - assSiteNumber = new int[getTotalNumberOfAccociationSites()]; - gvector = new double[getTotalNumberOfAccociationSites()][1]; - udotTimesmMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltaNog = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadTdT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - QMatksiksiksi = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - // } - udotTimesmiMatrix = - new DMatrixRMaj(getNumberOfComponents(), getTotalNumberOfAccociationSites()); - - oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); - - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - moleculeNumber[temp + j] = i; - assSiteNumber[temp + j] = j; - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - } - if (cpamix == null) { - cpamix = cpaSelect.getMixingRule(1, this); - } + double FCPA = 0.0; - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - if (type > 0 && isConstantPhaseVolume()) { - calcDelta(); - solveX(); - super.init(totalNumberOfMoles, numberOfComponents, 1, phase, beta); - gcpa = calc_g(); - // lngcpa = Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - } + double dFCPAdTdV; - if (type > 0) { - hcpatot = calc_hCPA(); - } + double dFCPAdTdT = 0.0; - if (type > 1) { - initCPAMatrix(type); - // hcpatotdT = calc_hCPAdT(); - // super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } - } + double dFCPAdT = 0; - /** - *

- * calcDelta. - *

- */ - public void calcDelta() { - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - deltaNog[i][j] = cpamix.calcDeltaNog(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), getPressure(), - numberOfComponents); - deltaNog[j][i] = deltaNog[i][j]; - } - } - } + double dFCPAdV = 0; - /** - *

- * initCPAMatrix. - *

- * - * @param type a int - */ - public void initCPAMatrix(int type) { - if (getTotalNumberOfAccociationSites() == 0) { - FCPA = 0.0; - dFCPAdTdV = 0.0; - dFCPAdTdT = 0.0; - dFCPAdT = 0; - dFCPAdV = 0; - dFCPAdVdV = 0.0; - dFCPAdVdVdV = 0.0; - - return; - } + double dFCPAdVdV = 0.0; - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - uMatrix.set(temp + j, 0, - Math.log(ksiMatrix.get(temp + j, 0)) - ksiMatrix.get(temp + j, 0) + 1.0); - gvector[temp + j][0] = mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0); - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - for (int i = 0; i < getNumberOfComponents(); i++) { - for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { - if (moleculeNumber[j] == i) { - udotTimesmiMatrix.set(i, j, udotMatrix.get(j, 0)); - } else { - udotTimesmiMatrix.set(i, j, 0.0); - } - } - } + double dFCPAdVdVdV = 0.0; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - delta[i][j] = deltaNog[i][j] * getGcpa(); - delta[j][i] = delta[i][j]; - if (type > 1) { - deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadT[j][i] = deltadT[i][j]; - - deltadTdT[i][j] = cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadTdT[j][i] = deltadTdT[i][j]; - } - } - } + private double gcpav = 0.0; + int cpaon = 1; - double gdv1 = getGcpav() - 1.0 / getTotalVolume(); - double gdv2 = gdv1 * gdv1; - double gdv3 = gdv2 * gdv1; - double totVol = getTotalVolume(); - // double Klk = 0.0; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - KlkVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv1); - KlkVMatrix.set(j, i, KlkVMatrix.get(i, j)); - - KlkVVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv2 + KlkMatrix.get(i, j) - * (gcpavv + 1.0 / getTotalVolume() / getTotalVolume())); - KlkVVMatrix.set(j, i, KlkVVMatrix.get(i, j)); - - KlkVVVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv3 - + 3.0 * KlkMatrix.get(i, j) * (getGcpav() - 1.0 / getTotalVolume()) - * (gcpavv + 1.0 / (totVol * totVol)) - + KlkMatrix.get(i, j) * (gcpavvv - 2.0 / (totVol * totVol * totVol))); - KlkVVVMatrix.set(j, i, KlkVVVMatrix.get(i, j)); - - if (type > 1) { - double tempVar = deltadT[i][j] / delta[i][j]; - double tempVardT = deltadTdT[i][j] / delta[i][j] - - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - - if (!Double.isNaN(tempVar)) { - // KlkdT[i][j] = KlkMatrix.getMatrix().unsafe_get(i, j) * tempVar; - // KlkdT[j][i] = KlkdT[i][j]; - - KlkTMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar); - KlkTMatrix.set(j, i, KlkTMatrix.get(i, j)); - - KlkTVMatrix.set(i, j, - KlkMatrix.get(i, j) * tempVar * (gcpav - 1.0 / getTotalVolume())); - KlkTVMatrix.set(j, i, KlkTVMatrix.get(i, j)); - - KlkTTMatrix.set(i, j, - KlkMatrix.get(i, j) * (tempVar * tempVar + tempVardT)); - KlkTTMatrix.set(j, i, KlkTTMatrix.get(i, j)); - } - - if (type > 2) { - for (int p = 0; p < numberOfComponents; p++) { - double t1 = 0.0, t2 = 0.0; - if (moleculeNumber[i] == p) { - t1 = 1.0 / mVector.get(i, 0); - } - if (moleculeNumber[j] == p) { - t2 = 1.0 / mVector.get(j, 0); - } - Klkni[p][i][j] = KlkMatrix.get(i, j) * (t1 + t2 - + ((ComponentSrkCPA) getComponent(p)).calc_lngi(this)); - Klkni[p][j][i] = Klkni[p][i][j]; - } - } - } - } - QMatksiksiksi.set(i, 0, 2.0 * mVector.get(i, 0) - / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0))); - } + int oldTotalNumberOfAccociationSites = 0; - DMatrixRMaj ksiMatrixTranspose = new DMatrixRMaj(); - CommonOps_DDRM.transpose(ksiMatrix, ksiMatrixTranspose); - - // dXdV - DMatrixRMaj KlkVMatrixksi = new DMatrixRMaj(); - CommonOps_DDRM.mult(KlkVMatrix, ksiMatrix, KlkVMatrixksi); - - DMatrixRMaj XV = new DMatrixRMaj(); - DMatrixRMaj XVtranspose = new DMatrixRMaj(); - CommonOps_DDRM.mult(hessianInvers, KlkVMatrixksi, XV); - CommonOps_DDRM.transpose(XV, XVtranspose); - - DMatrixRMaj QCPA = new DMatrixRMaj(); - DMatrixRMaj mVectorTranspose = new DMatrixRMaj(); - DMatrixRMaj ksiMatrixudotMatrix = new DMatrixRMaj(); - DMatrixRMaj ksiMatrixudotMatrixScaled = new DMatrixRMaj(); - DMatrixRMaj uMatrixMinusksiMatrixudotMatrixScaled = new DMatrixRMaj(); - DMatrixRMaj ksiMatrixudotMatrixScaledNegative = new DMatrixRMaj(); - CommonOps_DDRM.transpose(mVector, mVectorTranspose); - CommonOps_DDRM.elementMult(ksiMatrix, udotMatrix, ksiMatrixudotMatrix); - CommonOps_DDRM.scale(0.5, ksiMatrixudotMatrix, ksiMatrixudotMatrixScaled); - CommonOps_DDRM.scale(-1.0, ksiMatrixudotMatrixScaled, ksiMatrixudotMatrixScaledNegative); - CommonOps_DDRM.add(uMatrix, ksiMatrixudotMatrixScaledNegative, - uMatrixMinusksiMatrixudotMatrixScaled); - CommonOps_DDRM.mult(mVectorTranspose, uMatrixMinusksiMatrixudotMatrixScaled, QCPA); - FCPA = QCPA.get(0, 0); - - DMatrixRMaj tempMatrix = new DMatrixRMaj(); - CommonOps_DDRM.mult(ksiMatrixTranspose, KlkVMatrixksi, tempMatrix); - CommonOps_DDRM.scale(-0.5, tempMatrix); - dFCPAdV = tempMatrix.get(0, 0); - - DMatrixRMaj KlkVVMatrixTimesKsi = new DMatrixRMaj(); - DMatrixRMaj KlkVMatrixksiTranspose = new DMatrixRMaj(); - DMatrixRMaj KlkVMatrixksiXV = new DMatrixRMaj(); - DMatrixRMaj ksiKlkVVksi = new DMatrixRMaj(); - DMatrixRMaj tempMatrixVV = new DMatrixRMaj(); - CommonOps_DDRM.mult(KlkVVMatrix, ksiMatrix, KlkVVMatrixTimesKsi); - CommonOps_DDRM.transpose(KlkVMatrixksi, KlkVMatrixksiTranspose); - CommonOps_DDRM.mult(KlkVMatrixksiTranspose, XV, KlkVMatrixksiXV); - CommonOps_DDRM.mult(ksiMatrixTranspose, KlkVVMatrixTimesKsi, ksiKlkVVksi); - CommonOps_DDRM.scale(-0.5, ksiKlkVVksi); - CommonOps_DDRM.scale(-1.0, KlkVMatrixksiXV); - CommonOps_DDRM.add(ksiKlkVVksi, KlkVMatrixksiXV, tempMatrixVV); - dFCPAdVdV = tempMatrixVV.get(0, 0); - - DMatrixRMaj QVVV = new DMatrixRMaj(); - DMatrixRMaj QVVksi = new DMatrixRMaj(); - DMatrixRMaj QksiVksi = new DMatrixRMaj(); - DMatrixRMaj KlkVVVMatrixksi = new DMatrixRMaj(); - CommonOps_DDRM.mult(KlkVVVMatrix, ksiMatrix, KlkVVVMatrixksi); - CommonOps_DDRM.mult(ksiMatrixTranspose, KlkVVVMatrixksi, QVVV); - CommonOps_DDRM.scale(-0.5, QVVV); - CommonOps_DDRM.scale(-1.0, KlkVVMatrixTimesKsi, QVVksi); - CommonOps_DDRM.scale(-1.0, KlkVMatrix, QksiVksi); - - DMatrixRMaj mat1 = new DMatrixRMaj(); - DMatrixRMaj mat2 = new DMatrixRMaj(); - DMatrixRMaj mat4 = new DMatrixRMaj(); - DMatrixRMaj QVVksiTranspose = new DMatrixRMaj(); - DMatrixRMaj QksiVksiXV = new DMatrixRMaj(); - DMatrixRMaj XVtransposeQMatksiksiksiXVtranspose = new DMatrixRMaj(); - DMatrixRMaj QMatksiksiksiXVtranspose = new DMatrixRMaj(); - - CommonOps_DDRM.transpose(QVVksi, QVVksiTranspose); - CommonOps_DDRM.mult(QVVksiTranspose, XV, mat1); - CommonOps_DDRM.scale(3.0, mat1); - CommonOps_DDRM.mult(QksiVksi, XV, QksiVksiXV); - CommonOps_DDRM.mult(XVtranspose, QksiVksiXV, mat2); - CommonOps_DDRM.scale(3.0, mat2); - CommonOps_DDRM.mult(QMatksiksiksi, XVtranspose, QMatksiksiksiXVtranspose); - CommonOps_DDRM.mult(XVtranspose, QMatksiksiksiXVtranspose, - XVtransposeQMatksiksiksiXVtranspose); - CommonOps_DDRM.mult(XVtransposeQMatksiksiksiXVtranspose, XV, mat4); - - DMatrixRMaj dFCPAdVdVdVMatrix = new DMatrixRMaj(); - dFCPAdVdVdVMatrix.setTo(QVVV); - CommonOps_DDRM.addEquals(dFCPAdVdVdVMatrix, mat1); - CommonOps_DDRM.addEquals(dFCPAdVdVdVMatrix, mat2); - CommonOps_DDRM.addEquals(dFCPAdVdVdVMatrix, mat2); - CommonOps_DDRM.addEquals(dFCPAdVdVdVMatrix, mat4); - dFCPAdVdVdV = dFCPAdVdVdVMatrix.get(0, 0); - temp = 0; - - if (type == 1) { - return; - } - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); - } + private int totalNumberOfAccociationSites = 0; + int[][][] selfAccociationScheme = null; + int[][][][] crossAccociationScheme = null; + int[] moleculeNumber = null; - // KlkTMatrix = new SimpleMatrix(KlkdT); - DMatrixRMaj KlkTMatrixTimesKsi = new DMatrixRMaj(); - CommonOps_DDRM.mult(KlkTMatrix, ksiMatrix, KlkTMatrixTimesKsi); - - // dQdT - DMatrixRMaj tempMatrix2 = new DMatrixRMaj(); - CommonOps_DDRM.mult(ksiMatrixTranspose, KlkTMatrixTimesKsi, tempMatrix2); - CommonOps_DDRM.scale(-0.5, tempMatrix2); - dFCPAdT = tempMatrix2.get(0, 0); - - // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); - // SimpleMatrix tempMatrixTV = - // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - // dFCPAdTdV = tempMatrixTV.get(0, 0); - // dXdT - DMatrixRMaj XT = new DMatrixRMaj(); - CommonOps_DDRM.mult(hessianInvers, KlkTMatrixTimesKsi, XT); - - // dQdTdT - DMatrixRMaj tempMatrixTT = new DMatrixRMaj(); - DMatrixRMaj KlkTMatrixTimesKsiTranspose = new DMatrixRMaj(); - DMatrixRMaj KlkTMatrixTimesKsiTransposeXT = new DMatrixRMaj(); - DMatrixRMaj KlkTTMatrixksi = new DMatrixRMaj(); - DMatrixRMaj ksiMatrixTransposeKlkTTMatrixksi = new DMatrixRMaj(); - CommonOps_DDRM.transpose(KlkTMatrixTimesKsi, KlkTMatrixTimesKsiTranspose); - CommonOps_DDRM.mult(KlkTMatrixTimesKsiTranspose, XT, KlkTMatrixTimesKsiTransposeXT); - CommonOps_DDRM.mult(KlkTTMatrix, ksiMatrix, KlkTTMatrixksi); - CommonOps_DDRM.mult(ksiMatrixTranspose, KlkTTMatrixksi, ksiMatrixTransposeKlkTTMatrixksi); - CommonOps_DDRM.scale(-0.5, ksiMatrixTransposeKlkTTMatrixksi); - CommonOps_DDRM.scale(-1.0, KlkTMatrixTimesKsiTransposeXT); - CommonOps_DDRM.add(ksiMatrixTransposeKlkTTMatrixksi, KlkTMatrixTimesKsiTransposeXT, - tempMatrixTT); - // SimpleMatrix tempMatrixTT = - // ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XT)); - dFCPAdTdT = tempMatrixTT.get(0, 0); - - DMatrixRMaj tempMatrixTV = new DMatrixRMaj(); - DMatrixRMaj KlkTMatrixTimesKsiTransposeXV = new DMatrixRMaj(); - DMatrixRMaj KlkTVMatrixksi = new DMatrixRMaj(); - DMatrixRMaj ksiMatrixTransposeKlkTVMatrixksi = new DMatrixRMaj(); - CommonOps_DDRM.transpose(KlkTMatrixTimesKsi, KlkTMatrixTimesKsiTranspose); - CommonOps_DDRM.mult(KlkTMatrixTimesKsiTranspose, XV, KlkTMatrixTimesKsiTransposeXV); - CommonOps_DDRM.mult(KlkTVMatrix, ksiMatrix, KlkTVMatrixksi); - CommonOps_DDRM.mult(ksiMatrixTranspose, KlkTVMatrixksi, ksiMatrixTransposeKlkTTMatrixksi); - CommonOps_DDRM.scale(-0.5, ksiMatrixTransposeKlkTVMatrixksi); - CommonOps_DDRM.scale(-1.0, KlkTMatrixTimesKsiTransposeXV); - CommonOps_DDRM.add(ksiMatrixTransposeKlkTVMatrixksi, KlkTMatrixTimesKsiTransposeXV, - tempMatrixTV); - // SimpleMatrix tempMatrixTV = - // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - dFCPAdTdV = tempMatrixTV.get(0, 0); - - temp = 0; - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); - } + int[] assSiteNumber = null; - if (type == 2) { - return; - } + private double[][] gvector = null; - // int assSites = 0; - // if(true) return; - for (int p = 0; p < numberOfComponents; p++) { - DMatrixRMaj KiMatrix = new DMatrixRMaj(Klkni[p]); - // KiMatrix.print(10,10); - // Matrix dQdniMatrix = - // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this - // methods misses one part of .... - // dQdniMatrix.print(10,10); - // KiMatrix.print(10, 10); - // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - - // 1).print(10, 10); - // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - - // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5));// - // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); - // System.out.println("dQdn "); - // tempMatrix20.print(10, 10); - DMatrixRMaj tempMatrix4 = new DMatrixRMaj(); - CommonOps_DDRM.mult(KiMatrix, ksiMatrix, tempMatrix4); - // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - 1).print(10, 10); - DMatrixRMaj tempMatrix5 = new DMatrixRMaj(); - DMatrixRMaj extractedVector = new DMatrixRMaj(); - DMatrixRMaj extractedVectorTranspose = new DMatrixRMaj(); - CommonOps_DDRM.extractRow(udotTimesmiMatrix, p, extractedVector); - CommonOps_DDRM.transpose(extractedVector, extractedVectorTranspose); - CommonOps_DDRM.changeSign(tempMatrix4); - CommonOps_DDRM.add(extractedVectorTranspose, tempMatrix4, tempMatrix5); - - // tempMki[0] = mki[p]; - // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, - // udotMatrix.getArray())); - // System.out.println("aMatrix "); - // amatrix.transpose().print(10, 10); - // System.out.println("temp4 matrix"); - // tempMatrix4.print(10, 10); - // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); - - DMatrixRMaj tempMatrix6 = new DMatrixRMaj(); - CommonOps_DDRM.mult(hessianInvers, tempMatrix5, tempMatrix6);// .scale(-1.0); - // System.out.println("dXdni"); - // tempMatrix4.print(10, 10); - // tempMatrix5.print(10, 10); - // System.out.println("dXdn "); - // tempMatrix6.print(10, 10); - int temp2 = 0; - for (int compp = 0; compp < numberOfComponents; compp++) { - for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, - -1.0 * tempMatrix6.get(temp2 + kk, 0)); - } - temp2 += getComponent(compp).getNumberOfAssociationSites(); - } - // assSites += getComponent(p).getNumberOfAssociationSites(); - } - } + private double[][] delta = null; - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentSrkCPA(componentName, moles, molesInPhase, compNumber); - } + private double[][] deltaNog = null; - /** {@inheritDoc} */ - @Override - public double getF() { - return super.getF() + cpaon * FCPA(); - } + private double[][] deltadT = null; - /** {@inheritDoc} */ - @Override - public double dFdT() { - return super.dFdT() + cpaon * dFCPAdT(); - } + private double[][] deltadTdT = null; - /** {@inheritDoc} */ - @Override - public double dFdTdV() { - return super.dFdTdV() + cpaon * dFCPAdTdV(); - } + private double[][][] Klkni = null; + private DMatrixRMaj KlkTVMatrix = null; - /** {@inheritDoc} */ - @Override - public double dFdV() { - double dv2 = dFCPAdV(); - return super.dFdV() + cpaon * dv2; - } + private DMatrixRMaj KlkTTMatrix = null; - // @Override - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return super.dFdVdV() + cpaon * dFCPAdVdV(); - } + private DMatrixRMaj KlkTMatrix = null; - /** {@inheritDoc} */ - @Override - public double dFdVdVdV() { - return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); - } + private DMatrixRMaj udotTimesmMatrix = null; - /** {@inheritDoc} */ - @Override - public double dFdTdT() { - return super.dFdTdT() + cpaon * dFCPAdTdT(); - } + private DMatrixRMaj mVector = null; - /** - *

- * FCPA. - *

- * - * @return a double - */ - public double FCPA() { - /* - * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = - * 0.0; for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai - * = ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; tot += (Math.log(xai) - 1.0 / 2.0 * - * xai + 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } return ans; - */ - return FCPA; - } + private DMatrixRMaj udotMatrix = null; - /** - *

- * dFCPAdV. - *

- * - * @return a double - */ - public double dFCPAdV() { - // return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) - // * hcpatot; - return dFCPAdV; - } + private DMatrixRMaj uMatrix = null; - /** - *

- * dFCPAdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdV() { - // double sum1 = -1.0 / 2.0 * gcpavv * hcpatot; - // return -1.0 / getTotalVolume() * dFCPAdV() + sum1; - return dFCPAdVdV; - } + private DMatrixRMaj QMatksiksiksi = null; - /** - *

- * dFCPAdVdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdVdV() { - return dFCPAdVdVdV; - // return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / - // Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - hcpatot / (2.0 * - // Math.pow(getTotalVolume(), 2.0)) * (-getGcpav() - getTotalVolume() * gcpavv) - // + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv - // - gcpavv); - } + private DMatrixRMaj KlkVVVMatrix = null; - /** - *

- * dFCPAdT. - *

- * - * @return a double - */ - public double dFCPAdT() { - /* - * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = - * 0.0; for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai - * = ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; double xaidT = ((ComponentSrkCPA) - * getComponent(i)).getXsitedT()[j]; tot += 1.0 / xai * xaidT - 0.5 * xaidT;// - 1.0 / 2.0 * - * xai + 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } - * System.out.println("dFCPAdT1 " + ans + " dfcpa2 " +dFCPAdT); return ans; - */ - return dFCPAdT; - } + private DMatrixRMaj KlkVVMatrix = null; - /** - *

- * dFCPAdTdT. - *

- * - * @return a double - */ - public double dFCPAdTdT() { - return dFCPAdTdT; - } + private DMatrixRMaj udotTimesmiMatrix = null; - /** - *

- * dFCPAdTdV. - *

- * - * @return a double - */ - public double dFCPAdTdV() { - // System.out.println("dFCPAdTdV1 " + dFCPAdTdV + " dFCPAdTdV " +( 1.0 / (2.0 * - // getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatotdT)); - return dFCPAdTdV; - /* - * if (totalNumberOfAccociationSites > 0) { return 1.0 / (2.0 * getTotalVolume()) * (1.0 - - * getTotalVolume() * getGcpav()) * hcpatotdT; } else { return 0; } - */ - } + private DMatrixRMaj ksiMatrix = null; - /** - *

- * calc_hCPA. - *

- * - * @return a double - */ - public double calc_hCPA() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - htot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - htot += (1.0 - ((ComponentSrkCPA) getComponent(i)).getXsite()[j]); - } - tot += getComponent(i).getNumberOfMolesInPhase() * htot; + private DMatrixRMaj KlkMatrix = null; + + private DMatrixRMaj hessianMatrix = null; + + private DMatrixRMaj hessianInvers = null; + + private DMatrixRMaj KlkVMatrix = null; + + DMatrixRMaj corr2Matrix = null; + + DMatrixRMaj corr3Matrix = null; + + DMatrixRMaj corr4Matrix = null; + + // DenseMatrix64F(getTotalNumberOfAccociationSites(), + // 1); + static Logger logger = LogManager.getLogger(PhaseSrkCPA_proceduralMatrices.class); + + /** + *

+ * Constructor for PhaseSrkCPA_proceduralMatrices. + *

+ */ + public PhaseSrkCPA_proceduralMatrices() { + super(); + } + + /** {@inheritDoc} */ + @Override + public PhaseSrkCPA clone() { + PhaseSrkCPA clonedPhase = null; + try { + clonedPhase = (PhaseSrkCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); + // clonedPhase.cpamix = (CPAMixingInterface) cpamix.clone(); + // clonedPhase.cpamix = cpaSelect.getMixingRule(1, this); + + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + cpamix = cpaSelect.getMixingRule(1, this); + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + if (initType == 0) { + setTotalNumberOfAccociationSites(0); + selfAccociationScheme = new int[numberOfComponents][0][0]; + crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; + for (int i = 0; i < numberOfComponents; i++) { + if (getComponent(i).getNumberOfmoles() < 1e-50) { + getComponent(i).setNumberOfAssociationSites(0); + } else { + getComponent(i) + .setNumberOfAssociationSites(getComponent(i).getOrginalNumberOfAssociationSites()); + setTotalNumberOfAccociationSites( + getTotalNumberOfAccociationSites() + getComponent(i).getNumberOfAssociationSites()); + selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); + for (int j = 0; j < numberOfComponents; j++) { + crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); + } } - return tot; + } + + // had to remove if below - dont understand why.. Even + // if (getTotalNumberOfAccociationSites() != oldTotalNumberOfAccociationSites) { + mVector = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + KlkMatrix = + new DMatrixRMaj(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkVMatrix = + new DMatrixRMaj(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkVVMatrix = + new DMatrixRMaj(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkVVVMatrix = + new DMatrixRMaj(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + hessianMatrix = + new DMatrixRMaj(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkTMatrix = + new DMatrixRMaj(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkTTMatrix = + new DMatrixRMaj(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkTVMatrix = + new DMatrixRMaj(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + Klkni = + new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + ksiMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + uMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + udotMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + moleculeNumber = new int[getTotalNumberOfAccociationSites()]; + assSiteNumber = new int[getTotalNumberOfAccociationSites()]; + gvector = new double[getTotalNumberOfAccociationSites()][1]; + udotTimesmMatrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltaNog = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadT = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadTdT = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + QMatksiksiksi = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + // } + udotTimesmiMatrix = + new DMatrixRMaj(getNumberOfComponents(), getTotalNumberOfAccociationSites()); + + oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); + + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + moleculeNumber[temp + j] = i; + assSiteNumber[temp + j] = j; + } + temp += getComponent(i).getNumberOfAssociationSites(); + } } - - /** - *

- * calc_g. - *

- * - * @return a double - */ - public double calc_g() { - double temp = 1.0 - getb() / 4.0 / getMolarVolume(); - double g = (2.0 - getb() / 4.0 / getMolarVolume()) / (2.0 * temp * temp * temp); - return g; + if (cpamix == null) { + cpamix = cpaSelect.getMixingRule(1, this); } - /** - *

- * calc_lngV. - *

- * - * @return a double - */ - public double calc_lngV() { - double gv2 = 0.0; - // gv = -2.0 * getB() * (10.0 * getTotalVolume() - getB()) / getTotalVolume() / - // ((8.0 * getTotalVolume() - getB()) * (4.0 * getTotalVolume() - getB())); - - gv2 = 1.0 / (2.0 - getB() / (4.0 * getTotalVolume())) * getB() - / (4.0 * getTotalVolume() * getTotalVolume()) - - 3.0 / (1.0 - getB() / (4.0 * getTotalVolume())) * getB() - / (4.0 * getTotalVolume() * getTotalVolume()); - return gv2; + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + if (initType > 0 && isConstantPhaseVolume()) { + calcDelta(); + solveX(); + super.init(totalNumberOfMoles, numberOfComponents, 1, pt, beta); + gcpa = calc_g(); + // lngcpa = Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); } - /** - *

- * calc_lngVV. - *

- * - * @return a double - */ - public double calc_lngVV() { - double gvv = 2.0 - * (640.0 * Math.pow(getTotalVolume(), 3.0) - - 216.0 * getB() * getTotalVolume() * getTotalVolume() - + 24.0 * Math.pow(getB(), 2.0) * getTotalVolume() - Math.pow(getB(), 3.0)) - * getB() / (getTotalVolume() * getTotalVolume()) - / Math.pow(8.0 * getTotalVolume() - getB(), 2.0) - / Math.pow(4.0 * getTotalVolume() - getB(), 2.0); - return gvv; + if (initType > 0) { + hcpatot = calc_hCPA(); } - /** - *

- * calc_lngVVV. - *

- * - * @return a double - */ - public double calc_lngVVV() { - double gvvv = 4.0 - * (Math.pow(getB(), 5.0) + 17664.0 * Math.pow(getTotalVolume(), 4.0) * getB() - - 4192.0 * Math.pow(getTotalVolume(), 3.0) * Math.pow(getB(), 2.0) - + 528.0 * Math.pow(getB(), 3.0) * getTotalVolume() * getTotalVolume() - - 36.0 * getTotalVolume() * Math.pow(getB(), 4.0) - - 30720.0 * Math.pow(getTotalVolume(), 5.0)) - * getB() / (Math.pow(getTotalVolume(), 3.0)) - / Math.pow(-8.0 * getTotalVolume() + getB(), 3.0) - / Math.pow(-4.0 * getTotalVolume() + getB(), 3.0); - return gvvv; + if (initType > 1) { + initCPAMatrix(initType); + // hcpatotdT = calc_hCPAdT(); + // super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + } + } + + /** + *

+ * calcDelta. + *

+ */ + public void calcDelta() { + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + deltaNog[i][j] = cpamix.calcDeltaNog(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltaNog[j][i] = deltaNog[i][j]; + } + } + } + + /** + *

+ * initCPAMatrix. + *

+ * + * @param type a int + */ + public void initCPAMatrix(int type) { + if (getTotalNumberOfAccociationSites() == 0) { + FCPA = 0.0; + dFCPAdTdV = 0.0; + dFCPAdTdT = 0.0; + dFCPAdT = 0; + dFCPAdV = 0; + dFCPAdVdV = 0.0; + dFCPAdVdVdV = 0.0; + + return; } - /** - *

- * calcXsitedV. - *

- */ - public void calcXsitedV() { - if (getTotalNumberOfAccociationSites() > 0) { - initCPAMatrix(1); + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + uMatrix.set(temp + j, 0, + Math.log(ksiMatrix.get(temp + j, 0)) - ksiMatrix.get(temp + j, 0) + 1.0); + gvector[temp + j][0] = mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0); + } + temp += getComponent(i).getNumberOfAssociationSites(); + } + for (int i = 0; i < getNumberOfComponents(); i++) { + for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { + if (moleculeNumber[j] == i) { + udotTimesmiMatrix.set(i, j, udotMatrix.get(j, 0)); + } else { + udotTimesmiMatrix.set(i, j, 0.0); } + } } - /** - *

- * solveX. - *

- * - * @return a boolean - */ - public boolean solveX() { - if (getTotalNumberOfAccociationSites() == 0) { - return true; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + delta[i][j] = deltaNog[i][j] * getGcpa(); + delta[j][i] = delta[i][j]; + if (type > 1) { + deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadT[j][i] = deltadT[i][j]; + + deltadTdT[i][j] = + cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadTdT[j][i] = deltadTdT[i][j]; } + } + } - boolean solvedX = solveX2(5); - if (solvedX) { - // return true; - } + double gdv1 = getGcpav() - 1.0 / getTotalVolume(); + double gdv2 = gdv1 * gdv1; + double gdv3 = gdv2 * gdv1; + double totVol = getTotalVolume(); + // double Klk = 0.0; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + KlkVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv1); + KlkVMatrix.set(j, i, KlkVMatrix.get(i, j)); + + KlkVVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv2 + + KlkMatrix.get(i, j) * (gcpavv + 1.0 / getTotalVolume() / getTotalVolume())); + KlkVVMatrix.set(j, i, KlkVVMatrix.get(i, j)); + + KlkVVVMatrix.set(i, j, + KlkMatrix.get(i, j) * gdv3 + + 3.0 * KlkMatrix.get(i, j) * (getGcpav() - 1.0 / getTotalVolume()) + * (gcpavv + 1.0 / (totVol * totVol)) + + KlkMatrix.get(i, j) * (gcpavvv - 2.0 / (totVol * totVol * totVol))); + KlkVVVMatrix.set(j, i, KlkVVVMatrix.get(i, j)); - DMatrixRMaj mat1 = KlkMatrix; - DMatrixRMaj mat2 = ksiMatrix; - // second order method not working correctly and not used t the moment b ecause of numerical - // stability - int temp = 0, iter = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - mVector.set(temp + j, 0, getComponent(i).getNumberOfMolesInPhase()); - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - double Klk = 0.0; - double totvolume = getTotalVolume(); - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - Klk = mVector.get(i, 0) * mVector.get(j, 0) / totvolume * delta[i][j]; - KlkMatrix.set(i, j, Klk); - KlkMatrix.set(j, i, Klk); + if (type > 1) { + double tempVar = deltadT[i][j] / delta[i][j]; + double tempVardT = deltadTdT[i][j] / delta[i][j] + - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); + + if (!Double.isNaN(tempVar)) { + // KlkdT[i][j] = KlkMatrix.getMatrix().unsafe_get(i, j) * tempVar; + // KlkdT[j][i] = KlkdT[i][j]; + + KlkTMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar); + KlkTMatrix.set(j, i, KlkTMatrix.get(i, j)); + + KlkTVMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar * (gcpav - 1.0 / getTotalVolume())); + KlkTVMatrix.set(j, i, KlkTVMatrix.get(i, j)); + + KlkTTMatrix.set(i, j, KlkMatrix.get(i, j) * (tempVar * tempVar + tempVardT)); + KlkTTMatrix.set(j, i, KlkTTMatrix.get(i, j)); + } + + if (type > 2) { + for (int p = 0; p < numberOfComponents; p++) { + double t1 = 0.0; + double t2 = 0.0; + if (moleculeNumber[i] == p) { + t1 = 1.0 / mVector.get(i, 0); + } + if (moleculeNumber[j] == p) { + t2 = 1.0 / mVector.get(j, 0); + } + Klkni[p][i][j] = KlkMatrix.get(i, j) + * (t1 + t2 + ((ComponentSrkCPA) getComponent(p)).calc_lngi(this)); + Klkni[p][j][i] = Klkni[p][i][j]; } + } } - boolean solved = true; - // SimpleMatrix corrMatrix = null; - do { - solved = true; - iter++; - temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - ksiMatrix.set(temp + j, 0, ((ComponentSrkCPA) getComponent(i)).getXsite()[j]); - // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, - // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); - udotMatrix.set(temp + j, 0, 1.0 / ksiMatrix.get(temp + j, 0) - 1.0); - udotTimesmMatrix.set(temp + j, 0, - mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0)); - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - int krondelt = 0; - if (i == j) { - krondelt = 1; - } - hessianMatrix.set(i, j, - -mVector.get(i, 0) / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0)) - * krondelt - KlkMatrix.get(i, j)); - hessianMatrix.set(j, i, hessianMatrix.get(i, j)); - } - } - - // ksiMatrix = new SimpleMatrix(ksi); - // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); - try { - CommonOps_DDRM.invert(hessianMatrix, hessianInvers); - } catch (Exception e) { - logger.error("error", e); - return false; - } + } + QMatksiksiksi.set(i, 0, 2.0 * mVector.get(i, 0) + / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0))); + } - CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); - CommonOps_DDRM.subtract(udotTimesmMatrix, corr2Matrix, corr3Matrix); - CommonOps_DDRM.mult(hessianInvers, corr3Matrix, corr4Matrix); - // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); - // corrMatrix = - // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)));//.scale(-1.0); - temp = 0; - // System.out.println("print SimpleMatrix ..."); - // corrMatrix.print(10, 10); - // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); - // System.out.println("print CommonOps ..."); - // simp.print(10,10); - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - double newX = - ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); - if (newX < 0) { - newX = 1e-10; - solved = false; - } - ((ComponentCPAInterface) getComponent(i)).setXsite(j, newX); - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - // System.out.println("corrmatrix error " ); - // System.out.println("error " + corrMatrix.norm1()); - } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); - - // System.out.println("iter " + iter + " error " + NormOps.normF(corr4Matrix)); - // // corrMatrix.print(10, 10); - // ksiMatrix.print(10, 10); - return true; + DMatrixRMaj ksiMatrixTranspose = new DMatrixRMaj(); + CommonOps_DDRM.transpose(ksiMatrix, ksiMatrixTranspose); + + // dXdV + DMatrixRMaj KlkVMatrixksi = new DMatrixRMaj(); + CommonOps_DDRM.mult(KlkVMatrix, ksiMatrix, KlkVMatrixksi); + + DMatrixRMaj XV = new DMatrixRMaj(); + DMatrixRMaj XVtranspose = new DMatrixRMaj(); + CommonOps_DDRM.mult(hessianInvers, KlkVMatrixksi, XV); + CommonOps_DDRM.transpose(XV, XVtranspose); + + DMatrixRMaj QCPA = new DMatrixRMaj(); + DMatrixRMaj mVectorTranspose = new DMatrixRMaj(); + DMatrixRMaj ksiMatrixudotMatrix = new DMatrixRMaj(); + DMatrixRMaj ksiMatrixudotMatrixScaled = new DMatrixRMaj(); + DMatrixRMaj uMatrixMinusksiMatrixudotMatrixScaled = new DMatrixRMaj(); + DMatrixRMaj ksiMatrixudotMatrixScaledNegative = new DMatrixRMaj(); + CommonOps_DDRM.transpose(mVector, mVectorTranspose); + CommonOps_DDRM.elementMult(ksiMatrix, udotMatrix, ksiMatrixudotMatrix); + CommonOps_DDRM.scale(0.5, ksiMatrixudotMatrix, ksiMatrixudotMatrixScaled); + CommonOps_DDRM.scale(-1.0, ksiMatrixudotMatrixScaled, ksiMatrixudotMatrixScaledNegative); + CommonOps_DDRM.add(uMatrix, ksiMatrixudotMatrixScaledNegative, + uMatrixMinusksiMatrixudotMatrixScaled); + CommonOps_DDRM.mult(mVectorTranspose, uMatrixMinusksiMatrixudotMatrixScaled, QCPA); + FCPA = QCPA.get(0, 0); + + DMatrixRMaj tempMatrix = new DMatrixRMaj(); + CommonOps_DDRM.mult(ksiMatrixTranspose, KlkVMatrixksi, tempMatrix); + CommonOps_DDRM.scale(-0.5, tempMatrix); + dFCPAdV = tempMatrix.get(0, 0); + + DMatrixRMaj KlkVVMatrixTimesKsi = new DMatrixRMaj(); + DMatrixRMaj KlkVMatrixksiTranspose = new DMatrixRMaj(); + DMatrixRMaj KlkVMatrixksiXV = new DMatrixRMaj(); + DMatrixRMaj ksiKlkVVksi = new DMatrixRMaj(); + DMatrixRMaj tempMatrixVV = new DMatrixRMaj(); + CommonOps_DDRM.mult(KlkVVMatrix, ksiMatrix, KlkVVMatrixTimesKsi); + CommonOps_DDRM.transpose(KlkVMatrixksi, KlkVMatrixksiTranspose); + CommonOps_DDRM.mult(KlkVMatrixksiTranspose, XV, KlkVMatrixksiXV); + CommonOps_DDRM.mult(ksiMatrixTranspose, KlkVVMatrixTimesKsi, ksiKlkVVksi); + CommonOps_DDRM.scale(-0.5, ksiKlkVVksi); + CommonOps_DDRM.scale(-1.0, KlkVMatrixksiXV); + CommonOps_DDRM.add(ksiKlkVVksi, KlkVMatrixksiXV, tempMatrixVV); + dFCPAdVdV = tempMatrixVV.get(0, 0); + + DMatrixRMaj QVVV = new DMatrixRMaj(); + DMatrixRMaj QVVksi = new DMatrixRMaj(); + DMatrixRMaj QksiVksi = new DMatrixRMaj(); + DMatrixRMaj KlkVVVMatrixksi = new DMatrixRMaj(); + CommonOps_DDRM.mult(KlkVVVMatrix, ksiMatrix, KlkVVVMatrixksi); + CommonOps_DDRM.mult(ksiMatrixTranspose, KlkVVVMatrixksi, QVVV); + CommonOps_DDRM.scale(-0.5, QVVV); + CommonOps_DDRM.scale(-1.0, KlkVVMatrixTimesKsi, QVVksi); + CommonOps_DDRM.scale(-1.0, KlkVMatrix, QksiVksi); + + DMatrixRMaj mat1 = new DMatrixRMaj(); + DMatrixRMaj mat2 = new DMatrixRMaj(); + DMatrixRMaj mat4 = new DMatrixRMaj(); + DMatrixRMaj QVVksiTranspose = new DMatrixRMaj(); + DMatrixRMaj QksiVksiXV = new DMatrixRMaj(); + DMatrixRMaj XVtransposeQMatksiksiksiXVtranspose = new DMatrixRMaj(); + DMatrixRMaj QMatksiksiksiXVtranspose = new DMatrixRMaj(); + + CommonOps_DDRM.transpose(QVVksi, QVVksiTranspose); + CommonOps_DDRM.mult(QVVksiTranspose, XV, mat1); + CommonOps_DDRM.scale(3.0, mat1); + CommonOps_DDRM.mult(QksiVksi, XV, QksiVksiXV); + CommonOps_DDRM.mult(XVtranspose, QksiVksiXV, mat2); + CommonOps_DDRM.scale(3.0, mat2); + CommonOps_DDRM.mult(QMatksiksiksi, XVtranspose, QMatksiksiksiXVtranspose); + CommonOps_DDRM.mult(XVtranspose, QMatksiksiksiXVtranspose, XVtransposeQMatksiksiksiXVtranspose); + CommonOps_DDRM.mult(XVtransposeQMatksiksiksiXVtranspose, XV, mat4); + + DMatrixRMaj dFCPAdVdVdVMatrix = new DMatrixRMaj(); + dFCPAdVdVdVMatrix.setTo(QVVV); + CommonOps_DDRM.addEquals(dFCPAdVdVdVMatrix, mat1); + CommonOps_DDRM.addEquals(dFCPAdVdVdVMatrix, mat2); + CommonOps_DDRM.addEquals(dFCPAdVdVdVMatrix, mat2); + CommonOps_DDRM.addEquals(dFCPAdVdVdVMatrix, mat4); + dFCPAdVdVdV = dFCPAdVdVdVMatrix.get(0, 0); + temp = 0; + + if (type == 1) { + return; + } + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** - *

- * solveX2. - *

- * - * @param maxIter a int - * @return a boolean - */ - public boolean solveX2(int maxIter) { - double err = .0; - int iter = 0; - // if (delta == null) { - // initCPAMatrix(1); - double old = 0.0, neeval = 0.0; - // } - do { - iter++; - err = 0.0; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - old = ((ComponentSrkCPA) getComponent(moleculeNumber[i])) - .getXsite()[assSiteNumber[i]]; - neeval = 0; - for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { - neeval += getComponent(moleculeNumber[j]).getNumberOfMolesInPhase() - * delta[i][j] * ((ComponentSrkCPA) getComponent(moleculeNumber[j])) - .getXsite()[assSiteNumber[j]]; - } - neeval = 1.0 / (1.0 + 1.0 / getTotalVolume() * neeval); - ((ComponentCPAInterface) getComponent(moleculeNumber[i])).setXsite(assSiteNumber[i], - neeval); - err += Math.abs((old - neeval) / neeval); - } - } while (Math.abs(err) > 1e-10 && iter < maxIter); - // System.out.println("iter " + iter); - // if (Math.abs(err) - // < 1e-12) { - // return true; - // } else { - // System.out.println("did not solve for Xi in iterations: " + iter); - // System.out.println("error: " + err); - return false; + // KlkTMatrix = new SimpleMatrix(KlkdT); + DMatrixRMaj KlkTMatrixTimesKsi = new DMatrixRMaj(); + CommonOps_DDRM.mult(KlkTMatrix, ksiMatrix, KlkTMatrixTimesKsi); + + // dQdT + DMatrixRMaj tempMatrix2 = new DMatrixRMaj(); + CommonOps_DDRM.mult(ksiMatrixTranspose, KlkTMatrixTimesKsi, tempMatrix2); + CommonOps_DDRM.scale(-0.5, tempMatrix2); + dFCPAdT = tempMatrix2.get(0, 0); + + // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); + // SimpleMatrix tempMatrixTV = + // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + // dFCPAdTdV = tempMatrixTV.get(0, 0); + // dXdT + DMatrixRMaj XT = new DMatrixRMaj(); + CommonOps_DDRM.mult(hessianInvers, KlkTMatrixTimesKsi, XT); + + // dQdTdT + DMatrixRMaj tempMatrixTT = new DMatrixRMaj(); + DMatrixRMaj KlkTMatrixTimesKsiTranspose = new DMatrixRMaj(); + DMatrixRMaj KlkTMatrixTimesKsiTransposeXT = new DMatrixRMaj(); + DMatrixRMaj KlkTTMatrixksi = new DMatrixRMaj(); + DMatrixRMaj ksiMatrixTransposeKlkTTMatrixksi = new DMatrixRMaj(); + CommonOps_DDRM.transpose(KlkTMatrixTimesKsi, KlkTMatrixTimesKsiTranspose); + CommonOps_DDRM.mult(KlkTMatrixTimesKsiTranspose, XT, KlkTMatrixTimesKsiTransposeXT); + CommonOps_DDRM.mult(KlkTTMatrix, ksiMatrix, KlkTTMatrixksi); + CommonOps_DDRM.mult(ksiMatrixTranspose, KlkTTMatrixksi, ksiMatrixTransposeKlkTTMatrixksi); + CommonOps_DDRM.scale(-0.5, ksiMatrixTransposeKlkTTMatrixksi); + CommonOps_DDRM.scale(-1.0, KlkTMatrixTimesKsiTransposeXT); + CommonOps_DDRM.add(ksiMatrixTransposeKlkTTMatrixksi, KlkTMatrixTimesKsiTransposeXT, + tempMatrixTT); + // SimpleMatrix tempMatrixTT = + // ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XT)); + dFCPAdTdT = tempMatrixTT.get(0, 0); + + DMatrixRMaj tempMatrixTV = new DMatrixRMaj(); + DMatrixRMaj KlkTMatrixTimesKsiTransposeXV = new DMatrixRMaj(); + DMatrixRMaj KlkTVMatrixksi = new DMatrixRMaj(); + DMatrixRMaj ksiMatrixTransposeKlkTVMatrixksi = new DMatrixRMaj(); + CommonOps_DDRM.transpose(KlkTMatrixTimesKsi, KlkTMatrixTimesKsiTranspose); + CommonOps_DDRM.mult(KlkTMatrixTimesKsiTranspose, XV, KlkTMatrixTimesKsiTransposeXV); + CommonOps_DDRM.mult(KlkTVMatrix, ksiMatrix, KlkTVMatrixksi); + CommonOps_DDRM.mult(ksiMatrixTranspose, KlkTVMatrixksi, ksiMatrixTransposeKlkTTMatrixksi); + CommonOps_DDRM.scale(-0.5, ksiMatrixTransposeKlkTVMatrixksi); + CommonOps_DDRM.scale(-1.0, KlkTMatrixTimesKsiTransposeXV); + CommonOps_DDRM.add(ksiMatrixTransposeKlkTVMatrixksi, KlkTMatrixTimesKsiTransposeXV, + tempMatrixTV); + // SimpleMatrix tempMatrixTV = + // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + dFCPAdTdV = tempMatrixTV.get(0, 0); + + temp = 0; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** {@inheritDoc} */ - @Override - public double getHcpatot() { - return hcpatot; + if (type == 2) { + return; } - /** - * Setter for property hcpatot. - * - * @param hcpatot New value of property hcpatot. + // int assSites = 0; + // if(true) return; + for (int p = 0; p < numberOfComponents; p++) { + DMatrixRMaj KiMatrix = new DMatrixRMaj(Klkni[p]); + // KiMatrix.print(10,10); + // Matrix dQdniMatrix = + // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this + // methods misses one part of .... + // dQdniMatrix.print(10,10); + // KiMatrix.print(10, 10); + // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - + // 1).print(10, 10); + // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - + // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); + // // + // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); + // System.out.println("dQdn "); + // tempMatrix20.print(10, 10); + DMatrixRMaj tempMatrix4 = new DMatrixRMaj(); + CommonOps_DDRM.mult(KiMatrix, ksiMatrix, tempMatrix4); + // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - 1).print(10, 10); + DMatrixRMaj tempMatrix5 = new DMatrixRMaj(); + DMatrixRMaj extractedVector = new DMatrixRMaj(); + DMatrixRMaj extractedVectorTranspose = new DMatrixRMaj(); + CommonOps_DDRM.extractRow(udotTimesmiMatrix, p, extractedVector); + CommonOps_DDRM.transpose(extractedVector, extractedVectorTranspose); + CommonOps_DDRM.changeSign(tempMatrix4); + CommonOps_DDRM.add(extractedVectorTranspose, tempMatrix4, tempMatrix5); + + // tempMki[0] = mki[p]; + // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, + // udotMatrix.getArray())); + // System.out.println("aMatrix "); + // amatrix.transpose().print(10, 10); + // System.out.println("temp4 matrix"); + // tempMatrix4.print(10, 10); + // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); + + DMatrixRMaj tempMatrix6 = new DMatrixRMaj(); + CommonOps_DDRM.mult(hessianInvers, tempMatrix5, tempMatrix6); // .scale(-1.0); + // System.out.println("dXdni"); + // tempMatrix4.print(10, 10); + // tempMatrix5.print(10, 10); + // System.out.println("dXdn "); + // tempMatrix6.print(10, 10); + int temp2 = 0; + for (int compp = 0; compp < numberOfComponents; compp++) { + for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, + -1.0 * tempMatrix6.get(temp2 + kk, 0)); + } + temp2 += getComponent(compp).getNumberOfAssociationSites(); + } + // assSites += getComponent(p).getNumberOfAssociationSites(); + } + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentSrkCPA(name, moles, molesInPhase, compNumber); + } + + /** {@inheritDoc} */ + @Override + public double getF() { + return super.getF() + cpaon * FCPA(); + } + + /** {@inheritDoc} */ + @Override + public double dFdT() { + return super.dFdT() + cpaon * dFCPAdT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdV() { + return super.dFdTdV() + cpaon * dFCPAdTdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + double dv2 = dFCPAdV(); + return super.dFdV() + cpaon * dv2; + } + + // @Override + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return super.dFdVdV() + cpaon * dFCPAdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdVdVdV() { + return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdT() { + return super.dFdTdT() + cpaon * dFCPAdTdT(); + } + + /** + *

+ * FCPA. + *

+ * + * @return a double + */ + public double FCPA() { + /* + * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = 0.0; + * for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai = + * ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; tot += (Math.log(xai) - 1.0 / 2.0 * xai + + * 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } return ans; + */ + return FCPA; + } + + /** + *

+ * dFCPAdV. + *

+ * + * @return a double + */ + public double dFCPAdV() { + // return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) + // * hcpatot; + return dFCPAdV; + } + + /** + *

+ * dFCPAdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdV() { + // double sum1 = -1.0 / 2.0 * gcpavv * hcpatot; + // return -1.0 / getTotalVolume() * dFCPAdV() + sum1; + return dFCPAdVdV; + } + + /** + *

+ * dFCPAdVdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdVdV() { + return dFCPAdVdVdV; + // return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / + // Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - hcpatot / (2.0 * + // Math.pow(getTotalVolume(), 2.0)) * (-getGcpav() - getTotalVolume() * gcpavv) + // + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv + // - gcpavv); + } + + /** + *

+ * dFCPAdT. + *

+ * + * @return a double + */ + public double dFCPAdT() { + /* + * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = 0.0; + * for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai = + * ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; double xaidT = ((ComponentSrkCPA) + * getComponent(i)).getXsitedT()[j]; tot += 1.0 / xai * xaidT - 0.5 * xaidT; // - 1.0 / 2.0 * + * xai + 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } + * System.out.println("dFCPAdT1 " + ans + " dfcpa2 " +dFCPAdT); return ans; + */ + return dFCPAdT; + } + + /** + *

+ * dFCPAdTdT. + *

+ * + * @return a double + */ + public double dFCPAdTdT() { + return dFCPAdTdT; + } + + /** + *

+ * dFCPAdTdV. + *

+ * + * @return a double + */ + public double dFCPAdTdV() { + // System.out.println("dFCPAdTdV1 " + dFCPAdTdV + " dFCPAdTdV " +( 1.0 / (2.0 * + // getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatotdT)); + return dFCPAdTdV; + /* + * if (totalNumberOfAccociationSites > 0) { return 1.0 / (2.0 * getTotalVolume()) * (1.0 - + * getTotalVolume() * getGcpav()) * hcpatotdT; } else { return 0; } */ - public void setHcpatot(double hcpatot) { - this.hcpatot = hcpatot; + } + + /** + *

+ * calc_hCPA. + *

+ * + * @return a double + */ + public double calc_hCPA() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + htot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + htot += (1.0 - ((ComponentSrkCPA) getComponent(i)).getXsite()[j]); + } + tot += getComponent(i).getNumberOfMolesInPhase() * htot; + } + return tot; + } + + /** + *

+ * calc_g. + *

+ * + * @return a double + */ + public double calc_g() { + double temp = 1.0 - getb() / 4.0 / getMolarVolume(); + double g = (2.0 - getb() / 4.0 / getMolarVolume()) / (2.0 * temp * temp * temp); + return g; + } + + /** + *

+ * calc_lngV. + *

+ * + * @return a double + */ + public double calc_lngV() { + double gv2 = 0.0; + // gv = -2.0 * getB() * (10.0 * getTotalVolume() - getB()) / getTotalVolume() / + // ((8.0 * getTotalVolume() - getB()) * (4.0 * getTotalVolume() - getB())); + + gv2 = 1.0 / (2.0 - getB() / (4.0 * getTotalVolume())) * getB() + / (4.0 * getTotalVolume() * getTotalVolume()) + - 3.0 / (1.0 - getB() / (4.0 * getTotalVolume())) * getB() + / (4.0 * getTotalVolume() * getTotalVolume()); + return gv2; + } + + /** + *

+ * calc_lngVV. + *

+ * + * @return a double + */ + public double calc_lngVV() { + double gvv = 2.0 + * (640.0 * Math.pow(getTotalVolume(), 3.0) + - 216.0 * getB() * getTotalVolume() * getTotalVolume() + + 24.0 * Math.pow(getB(), 2.0) * getTotalVolume() - Math.pow(getB(), 3.0)) + * getB() / (getTotalVolume() * getTotalVolume()) + / Math.pow(8.0 * getTotalVolume() - getB(), 2.0) + / Math.pow(4.0 * getTotalVolume() - getB(), 2.0); + return gvv; + } + + /** + *

+ * calc_lngVVV. + *

+ * + * @return a double + */ + public double calc_lngVVV() { + double gvvv = 4.0 + * (Math.pow(getB(), 5.0) + 17664.0 * Math.pow(getTotalVolume(), 4.0) * getB() + - 4192.0 * Math.pow(getTotalVolume(), 3.0) * Math.pow(getB(), 2.0) + + 528.0 * Math.pow(getB(), 3.0) * getTotalVolume() * getTotalVolume() + - 36.0 * getTotalVolume() * Math.pow(getB(), 4.0) + - 30720.0 * Math.pow(getTotalVolume(), 5.0)) + * getB() / (Math.pow(getTotalVolume(), 3.0)) + / Math.pow(-8.0 * getTotalVolume() + getB(), 3.0) + / Math.pow(-4.0 * getTotalVolume() + getB(), 3.0); + return gvvv; + } + + /** + *

+ * calcXsitedV. + *

+ */ + public void calcXsitedV() { + if (getTotalNumberOfAccociationSites() > 0) { + initCPAMatrix(1); + } + } + + /** + *

+ * solveX. + *

+ * + * @return a boolean + */ + public boolean solveX() { + if (getTotalNumberOfAccociationSites() == 0) { + return true; } - /** {@inheritDoc} */ - @Override - public double getGcpa() { - return gcpa; + boolean solvedX = solveX2(5); + if (solvedX) { + // return true; } - /** - *

- * calcRootVolFinder. - *

- * - * @param phase a int - * @return a double - */ - public double calcRootVolFinder(int phase) { - double solvedBonVHigh = 0.0; - double solvedBonVlow = 1.0; - double oldh = 1; - // double[][] matrix = new double[2][2000]; - double BonV = 1.0 - 1e-10; - try { - // molarVolume(pressure, temperature, A, B, phaseType); - } catch (Exception e) { - logger.error("error", e); + DMatrixRMaj mat1 = KlkMatrix; + DMatrixRMaj mat2 = ksiMatrix; + // second order method not working correctly and not used t the moment b ecause of numerical + // stability + int temp = 0; + int iter = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + mVector.set(temp + j, 0, getComponent(i).getNumberOfMolesInPhase()); + } + temp += getComponent(i).getNumberOfAssociationSites(); + } + double Klk = 0.0; + double totvolume = getTotalVolume(); + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + Klk = mVector.get(i, 0) * mVector.get(j, 0) / totvolume * delta[i][j]; + KlkMatrix.set(i, j, Klk); + KlkMatrix.set(j, i, Klk); + } + } + boolean solved = true; + // SimpleMatrix corrMatrix = null; + do { + solved = true; + iter++; + temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + ksiMatrix.set(temp + j, 0, ((ComponentSrkCPA) getComponent(i)).getXsite()[j]); + // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, + // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); + udotMatrix.set(temp + j, 0, 1.0 / ksiMatrix.get(temp + j, 0) - 1.0); + udotTimesmMatrix.set(temp + j, 0, mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0)); } - double BonVold = BonV; - double Btemp = 0, h = 1; - // double Dtemp = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0; - // double d1 = 0, d2 = 0; - Btemp = getB(); - // Dtemp = getA(); - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - for (int i = 0; i < 2000; i++) { - BonVold = BonV; - BonV = 1.0 - (i + 1e-6) * 1.0 / 2000.0; - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - gcpa = calc_g(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - do { - } while (!solveX()); - - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - - if (Math.signum(h) * Math.signum(oldh) < 0 && i > 2) { - if (solvedBonVlow < 1e-3) { - solvedBonVlow = (BonV + BonVold) / 2.0; - if (phase == 1) { - break; - } - } else { - solvedBonVHigh = (BonV + BonVold) / 2.0; - if (phase == 0) { - break; - } - } - } - solvedBonVHigh = (BonV + BonVold) / 2.0; - oldh = h; - // matrix[0][i] = BonV; - // matrix[1][i] = h; + temp += getComponent(i).getNumberOfAssociationSites(); + } + + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + int krondelt = 0; + if (i == j) { + krondelt = 1; + } + hessianMatrix.set(i, j, + -mVector.get(i, 0) / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0)) * krondelt + - KlkMatrix.get(i, j)); + hessianMatrix.set(j, i, hessianMatrix.get(i, j)); } - if (solvedBonVlow < 1e-3) { - solvedBonVlow = solvedBonVHigh; + } + + // ksiMatrix = new SimpleMatrix(ksi); + // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); + try { + CommonOps_DDRM.invert(hessianMatrix, hessianInvers); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return false; + } + + CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); + CommonOps_DDRM.subtract(udotTimesmMatrix, corr2Matrix, corr3Matrix); + CommonOps_DDRM.mult(hessianInvers, corr3Matrix, corr4Matrix); + // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); + // corrMatrix = + // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix))); + // //.scale(-1.0); + temp = 0; + // System.out.println("print SimpleMatrix ..."); + // corrMatrix.print(10, 10); + // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); + // System.out.println("print CommonOps ..."); + // simp.print(10,10); + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + double newX = ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); + if (newX < 0) { + newX = 1e-10; + solved = false; + } + ((ComponentCPAInterface) getComponent(i)).setXsite(j, newX); } - // dataPresentation.fileHandeling.createTextFile.TextFile file = new - // dataPresentation.fileHandeling.createTextFile.TextFile(); - // file.setValues(matrix); - // file.setOutputFileName("D:/temp/temp2.txt"); - // file.createFile(); - if (phase == 1) { - return solvedBonVlow; - } else { - return solvedBonVHigh; + temp += getComponent(i).getNumberOfAssociationSites(); + } + // System.out.println("corrmatrix error " ); + // System.out.println("error " + corrMatrix.norm1()); + } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); + + // System.out.println("iter " + iter + " error " + NormOps.normF(corr4Matrix)); + // // corrMatrix.print(10, 10); + // ksiMatrix.print(10, 10); + return true; + } + + /** + *

+ * solveX2. + *

+ * + * @param maxIter a int + * @return a boolean + */ + public boolean solveX2(int maxIter) { + double err = .0; + int iter = 0; + // if (delta == null) { + // initCPAMatrix(1); + double old = 0.0; + double neeval = 0.0; + // } + do { + iter++; + err = 0.0; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + old = ((ComponentSrkCPA) getComponent(moleculeNumber[i])).getXsite()[assSiteNumber[i]]; + neeval = 0; + for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { + neeval += getComponent(moleculeNumber[j]).getNumberOfMolesInPhase() * delta[i][j] + * ((ComponentSrkCPA) getComponent(moleculeNumber[j])).getXsite()[assSiteNumber[j]]; } + neeval = 1.0 / (1.0 + 1.0 / getTotalVolume() * neeval); + ((ComponentCPAInterface) getComponent(moleculeNumber[i])).setXsite(assSiteNumber[i], + neeval); + err += Math.abs((old - neeval) / neeval); + } + } while (Math.abs(err) > 1e-10 && iter < maxIter); + // System.out.println("iter " + iter); + // if (Math.abs(err) + // < 1e-12) { + // return true; + // } else { + // System.out.println("did not solve for Xi in iterations: " + iter); + // System.out.println("error: " + err); + return false; + } + + /** {@inheritDoc} */ + @Override + public double getHcpatot() { + return hcpatot; + } + + /** + * Setter for property hcpatot. + * + * @param hcpatot New value of property hcpatot. + */ + public void setHcpatot(double hcpatot) { + this.hcpatot = hcpatot; + } + + /** {@inheritDoc} */ + @Override + public double getGcpa() { + return gcpa; + } + + /** + *

+ * calcRootVolFinder. + *

+ * + * @param pt the PhaseType of the phase + * @return a double + */ + public double calcRootVolFinder(PhaseType pt) { + double solvedBonVHigh = 0.0; + double solvedBonVlow = 1.0; + double oldh = 1; + // double[][] matrix = new double[2][2000]; + double BonV = 1.0 - 1e-10; + try { + // molarVolume(pressure, temperature, A, B, pt); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - // if (pressure > 1000) { - // BonV = 0.9999; - // } - - // double calcRooBonVtVolFinder = calcRootVolFinder(phasetype); - // BonV = calcRooBonVtVolFinder; - // double BonVInit = BonV; - if (BonV < 0) { - BonV = 1.0e-8; - } - - if (BonV >= 1.0) { - BonV = 0.9999; - } - double BonVold; - double h = 0, dh = 0, dhh = 0; - double d1 = 0, d2 = 0; - double Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); + double BonVold = BonV; + double Btemp = 0; + double h = 1; + // double Dtemp = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0; + // double d1 = 0, d2 = 0; + Btemp = getB(); + // Dtemp = getA(); + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + for (int i = 0; i < 2000; i++) { + BonVold = BonV; + BonV = 1.0 - (i + 1e-6) * 1.0 / 2000.0; + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + gcpa = calc_g(); + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + do { + } while (!solveX()); + + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + + if (Math.signum(h) * Math.signum(oldh) < 0 && i > 2) { + if (solvedBonVlow < 1e-3) { + solvedBonVlow = (BonV + BonVold) / 2.0; + if (pt == PhaseType.GAS) { + break; + } + } else { + solvedBonVHigh = (BonV + BonVold) / 2.0; + if (pt == PhaseType.LIQUID) { + break; + } } - calcDelta(); - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - - do { - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } + } + solvedBonVHigh = (BonV + BonVold) / 2.0; + oldh = h; + // matrix[0][i] = BonV; + // matrix[1][i] = h; + } + if (solvedBonVlow < 1e-3) { + solvedBonVlow = solvedBonVHigh; + } + // dataPresentation.fileHandeling.createTextFile.TextFile file = new + // dataPresentation.fileHandeling.createTextFile.TextFile(); + // file.setValues(matrix); + // file.setOutputFileName("D:/temp/temp2.txt"); + // file.createFile(); + if (pt == PhaseType.GAS) { + return solvedBonVlow; + } else { + return solvedBonVHigh; + } + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + // if (pressure > 1000) { + // BonV = 0.9999; + // } + + // double calcRooBonVtVolFinder = calcRootVolFinder(pt); + // BonV = calcRooBonVtVolFinder; + // double BonVInit = BonV; + if (BonV < 0) { + BonV = 1.0e-8; + } - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); + if (BonV >= 1.0) { + BonV = 0.9999; + } - if (getTotalNumberOfAccociationSites() > 0) { - solveX(); - } + double h; + double BonVold; + double Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); + } + calcDelta(); - initCPAMatrix(1); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 - // + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - if (BonV > 0.9999) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV = 0.9999; - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - } - } else if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - } - } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) - && iterations < 100); - - if (Math.abs(h) > 1e-12) { - // System.out.println("h failed " + "Z" + Z + " iterations " + iterations + " - // BonV " + BonV); - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - } - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B - // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); - } - return getMolarVolume(); - } + do { + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } - /** - *

- * molarVolumeChangePhase. - *

- * - * @param pressure a double - * @param temperature a double - * @param A a double - * @param B a double - * @param phasetype a int - * @return a double - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. - */ - public double molarVolumeChangePhase(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - // double BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - double BonV = calcRootVolFinder(phasetype); - // double BonVInit = BonV; - if (BonV < 0) { - BonV = 1.0e-8; - } + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); - if (BonV >= 1.0) { - BonV = 0.9999; + if (getTotalNumberOfAccociationSites() > 0) { + solveX(); + } + + initCPAMatrix(1); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + double dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + double dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + double d1 = -h / dh; + double d2 = -dh / dhh; + // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 + // + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0, dhh = 0; - // double fvvv = 0, gvvv = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 0.9999) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; + } else { + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV = 0.9999; + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); } - calcDelta(); - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - - do { - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } - - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - solveX(); - - initCPAMatrix(1); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } - - if (BonV > 1.1) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - - // System.out.println("Z " + Z + "h " + h + " BONV " + (Math.abs((BonV - - // BonVold) / BonV))); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10) && iterations < 100); - - /* - * if (Math.abs(h) > 1e-8) { if (phasetype == 0) { molarVolume(pressure, temperature, A, B, - * 1); } else { molarVolume(pressure, temperature, A, B, 0); } return getMolarVolume(); } - */ - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B - // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolumeChangePhase", - "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); + } else if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; + } else { + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); } - - return getMolarVolume(); + } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) + && iterations < 100); + + if (Math.abs(h) > 1e-12) { + // System.out.println("h failed " + "Z" + Z + " iterations " + iterations + " + // BonV " + BonV); + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); } - - /** {@inheritDoc} */ - @Override - public double molarVolume2(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - Z = phase == 0 ? 1.0 : 1.0e-5; - setMolarVolume(Z * R * temperature / pressure); - // super.molarVolume(pressure,temperature, A, B, phase); - int iterations = 0; - double err = 0.0, dErrdV = 0.0; - double deltaV = 0; - - do { - A = calcA(this, temperature, pressure, numberOfComponents); - B = calcB(this, temperature, pressure, numberOfComponents); - - double dFdV = dFdV(), dFdVdV = dFdVdV(); - // double dFdVdVdV = dFdVdVdV(); - // double factor1 = 1.0e0, factor2 = 1.0e0; - err = -R * temperature * dFdV + R * temperature / getMolarVolume() - pressure; - - // System.out.println("pressure " + -R * temperature * dFdV + " " + R * - // temperature / getMolarVolume()); - // -pressure; - dErrdV = -R * temperature * dFdVdV - - R * temperature * numberOfMolesInPhase / Math.pow(getVolume(), 2.0); - - // System.out.println("errdV " + dErrdV); - // System.out.println("err " + err); - deltaV = -err / dErrdV; - - setMolarVolume(getMolarVolume() + deltaV / numberOfMolesInPhase); - - Z = pressure * getMolarVolume() / (R * temperature); - if (Z < 0) { - Z = 1e-6; - setMolarVolume(Z * R * temperature / pressure); - } - - // System.out.println("Z " + Z); - } while (Math.abs(err) > 1.0e-8 || iterations < 100); - // System.out.println("Z " + Z); - return getMolarVolume(); + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B + // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } - - /** {@inheritDoc} */ - @Override - public double getGcpav() { - return gcpav; + return getMolarVolume(); + } + + /** + *

+ * molarVolumeChangePhase. + *

+ * + * @param pressure a double + * @param temperature a double + * @param A a double + * @param B a double + * @param pt the PhaseType of the phase + * @return a double + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double molarVolumeChangePhase(double pressure, double temperature, double A, double B, + PhaseType pt) throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + // double BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); + double BonV = calcRootVolFinder(pt); + // double BonVInit = BonV; + if (BonV < 0) { + BonV = 1.0e-8; } - /** - *

- * Setter for the field gcpav. - *

- * - * @param gcpav a double - */ - public void setGcpav(double gcpav) { - this.gcpav = gcpav; + if (BonV >= 1.0) { + BonV = 0.9999; } - - /** {@inheritDoc} */ - @Override - public CPAMixingInterface getCpamix() { - return cpamix; + double BonVold = BonV; + double Btemp = 0; + double h = 0; + double dh = 0; + double dhh = 0; + // double fvvv = 0, gvvv = 0; + double d1 = 0; + double d2 = 0; + Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); } + calcDelta(); - /** {@inheritDoc} */ - @Override - public double calcPressure() { - gcpa = calc_g(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - solveX(); - hcpatot = calc_hCPA(); + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - initCPAMatrix(1); - return super.calcPressure(); - } + do { + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } + + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + solveX(); + + initCPAMatrix(1); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + } + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 1.1) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; + } else { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + } + } - /** {@inheritDoc} */ - @Override - public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { - if (comp1 == comp2) { - return selfAccociationScheme[comp1][site1][site2]; + if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; } else { - return crossAccociationScheme[comp1][comp2][site1][site2]; + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - } + } + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + + // System.out.println("Z " + Z + "h " + h + " BONV " + (Math.abs((BonV - + // BonVold) / BonV))); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10) && iterations < 100); - /** - *

- * croeneckerProduct. - *

- * - * @param a an array of {@link double} objects - * @param b an array of {@link double} objects - * @return an array of {@link double} objects + /* + * if (Math.abs(h) > 1e-8) { if (pt == 0) { molarVolume(pressure, temperature, A, B, 1); } else + * { molarVolume(pressure, temperature, A, B, 0); } return getMolarVolume(); } */ - public double[][] croeneckerProduct(double[][] a, double[][] b) { - int aLength = a.length; - int aCols = a[0].length; - int bLength = b.length; - int bCols = b[0].length; - double[][] result = new double[aLength * bLength][(aCols) * (bCols)]; - for (int z = 0; z < aLength; z++) { - for (int i = 0; i < aCols; i++) { - for (int j = 0; j < bLength; j++) { - for (int k = 0; k < bCols; k++) { - result[j + (z * bLength)][k + (i * bCols)] = a[z][i] * b[j][k]; - } - } - } - } - return result; + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B + // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolumeChangePhase", + "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } - /** {@inheritDoc} */ - @Override - public int getTotalNumberOfAccociationSites() { - return totalNumberOfAccociationSites; + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double molarVolume2(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + Z = pt == PhaseType.LIQUID ? 1.0 : 1.0e-5; + setMolarVolume(Z * R * temperature / pressure); + // super.molarVolume(pressure,temperature, A, B, phase); + int iterations = 0; + double err = 0.0; + double dErrdV = 0.0; + double deltaV = 0; + + do { + A = calcA(this, temperature, pressure, numberOfComponents); + B = calcB(this, temperature, pressure, numberOfComponents); + + double dFdV = dFdV(); + double dFdVdV = dFdVdV(); + // double dFdVdVdV = dFdVdVdV(); + // double factor1 = 1.0e0, factor2 = 1.0e0; + err = -R * temperature * dFdV + R * temperature / getMolarVolume() - pressure; + + // System.out.println("pressure " + -R * temperature * dFdV + " " + R * + // temperature / getMolarVolume()); + // -pressure; + dErrdV = -R * temperature * dFdVdV + - R * temperature * numberOfMolesInPhase / Math.pow(getVolume(), 2.0); + + // System.out.println("errdV " + dErrdV); + // System.out.println("err " + err); + deltaV = -err / dErrdV; + + setMolarVolume(getMolarVolume() + deltaV / numberOfMolesInPhase); + + Z = pressure * getMolarVolume() / (R * temperature); + if (Z < 0) { + Z = 1e-6; + setMolarVolume(Z * R * temperature / pressure); + } + + // System.out.println("Z " + Z); + } while (Math.abs(err) > 1.0e-8 || iterations < 100); + // System.out.println("Z " + Z); + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double getGcpav() { + return gcpav; + } + + /** + *

+ * Setter for the field gcpav. + *

+ * + * @param gcpav a double + */ + public void setGcpav(double gcpav) { + this.gcpav = gcpav; + } + + /** {@inheritDoc} */ + @Override + public CPAMixingInterface getCpamix() { + return cpamix; + } + + /** {@inheritDoc} */ + @Override + public double calcPressure() { + gcpa = calc_g(); + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + solveX(); + hcpatot = calc_hCPA(); + + initCPAMatrix(1); + return super.calcPressure(); + } + + /** {@inheritDoc} */ + @Override + public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { + if (comp1 == comp2) { + return selfAccociationScheme[comp1][site1][site2]; + } else { + return crossAccociationScheme[comp1][comp2][site1][site2]; } - - /** {@inheritDoc} */ - @Override - public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { - this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; + } + + /** + *

+ * croeneckerProduct. + *

+ * + * @param a an array of type double + * @param b an array of type double + * @return an array of type double + */ + public double[][] croeneckerProduct(double[][] a, double[][] b) { + int aLength = a.length; + int aCols = a[0].length; + int bLength = b.length; + int bCols = b[0].length; + double[][] result = new double[aLength * bLength][(aCols) * (bCols)]; + for (int z = 0; z < aLength; z++) { + for (int i = 0; i < aCols; i++) { + for (int j = 0; j < bLength; j++) { + for (int k = 0; k < bCols; k++) { + result[j + (z * bLength)][k + (i * bCols)] = a[z][i] * b[j][k]; + } + } + } } + return result; + } + + /** {@inheritDoc} */ + @Override + public int getTotalNumberOfAccociationSites() { + return totalNumberOfAccociationSites; + } + + /** {@inheritDoc} */ + @Override + public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { + this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseSrkCPAojAlgo.java b/src/main/java/neqsim/thermo/phase/PhaseSrkCPAojAlgo.java index 9a1df4731c..e1aec5200b 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseSrkCPAojAlgo.java +++ b/src/main/java/neqsim/thermo/phase/PhaseSrkCPAojAlgo.java @@ -3,6 +3,7 @@ * * Created on 3. juni 2000, 14:38 */ + package neqsim.thermo.phase; import org.apache.logging.log4j.LogManager; @@ -25,1369 +26,1393 @@ * @version $Id: $Id */ public class PhaseSrkCPAojAlgo extends PhaseSrkEos implements PhaseCPAInterface { - private static final long serialVersionUID = 1000; - - public CPAMixing cpaSelect = new CPAMixing(); - public CPAMixingInterface cpamix; - double gcpavv = 0.0, gcpavvv = 0.0, gcpa = 0.0, hcpatot = 1.0, FCPA = 0.0, dFCPAdTdV, - dFCPAdTdT = 0.0, dFCPAdT = 0, dFCPAdV = 0, dFCPAdVdV = 0.0, dFCPAdVdVdV = 0.0; - private double gcpav = 0.0; - int cpaon = 1, oldTotalNumberOfAccociationSites = 0; - private int totalNumberOfAccociationSites = 0; - int[][][] selfAccociationScheme = null; - int[][][][] crossAccociationScheme = null; - int[] moleculeNumber = null, assSiteNumber = null; - private double[][] gvector = null, delta = null, deltaNog = null, deltadT = null, - deltadTdT = null; - private double[][][] Klkni = null; - - // final PrimitiveDenseStore tmpBody = PrimitiveDenseStore.FACTORY.rows(new - // double[][] { { 4, 2, 3 }, { 3, -5, 2 }, { -2, 3, 8 } }); - private SparseStore KlkTVMatrix2 = null, KlkTTMatrix2 = null, KlkTMatrix2 = null, - udotTimesmMatrix2 = null, mVector2 = null, udotMatrix2 = null, uMatrix2 = null, - QMatksiksiksi2 = null, KlkVVVMatrix2 = null, KlkVVMatrix2 = null, - udotTimesmiMatrix2 = null, ksiMatrix2 = null, KlkMatrix2 = null, hessianMatrix2 = null, - KlkVMatrix2 = null; - SparseStore corr2Matrix2 = null, corr3Matrix2 = null, corr4Matrix2 = null;// new - // DenseMatrix64F(getTotalNumberOfAccociationSites(), - // 1); - MatrixStore hessianInvers2 = null; - final Factory mtrxFactory = Primitive64Matrix.FACTORY; - - static Logger logger = LogManager.getLogger(PhaseSrkCPAojAlgo.class); - - // private transient SimpleMatrix KlkTVMatrix = null, KlkTTMatrix = null, - // KlkTMatrix = null, udotTimesmMatrix = null, mVector = null, udotMatrix = - // null, uMatrix = null, QMatksiksiksi = null, KlkVVVMatrix = null, KlkVVMatrix - // = null, udotTimesmiMatrix = null, ksiMatrix = null, KlkMatrix = null, - // hessianMatrix = null, hessianInvers = null, KlkVMatrix = null; - // DMatrixRMaj corr2Matrix = null, corr3Matrix = null, corr4Matrix = null;//new - // DenseMatrix64F(getTotalNumberOfAccociationSites(), 1); - - /** - *

- * Constructor for PhaseSrkCPAojAlgo. - *

- */ - public PhaseSrkCPAojAlgo() { - super(); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseSrkCPAojAlgo.class); + + public CPAMixing cpaSelect = new CPAMixing(); + public CPAMixingInterface cpamix; + double gcpavv = 0.0; + double gcpavvv = 0.; + double gcpa = 0.0; + double hcpatot = 1.0; + double FCPA = 0.0; + double dFCPAdTdV; + double dFCPAdTdT = 0.0; + double dFCPAdT = 0; + double dFCPAdV = 0; + double dFCPAdVdV = 0.0; + double dFCPAdVdVdV = 0.0; + private double gcpav = 0.0; + int cpaon = 1; + int oldTotalNumberOfAccociationSites = 0; + private int totalNumberOfAccociationSites = 0; + int[][][] selfAccociationScheme = null; + int[][][][] crossAccociationScheme = null; + int[] moleculeNumber = null; + int[] assSiteNumber = null; + private double[][] gvector = null; + private double[][] delta = null; + private double[][] deltaNog = null; + private double[][] deltadT = null; + private double[][] deltadTdT = null; + private double[][][] Klkni = null; + private SparseStore KlkTVMatrix2 = null; + private SparseStore KlkTTMatrix2 = null; + private SparseStore KlkTMatrix2 = null; + private SparseStore udotTimesmMatrix2 = null; + private SparseStore mVector2 = null; + private SparseStore udotMatrix2 = null; + private SparseStore uMatrix2 = null; + private SparseStore QMatksiksiksi2 = null; + private SparseStore KlkVVVMatrix2 = null; + private SparseStore KlkVVMatrix2 = null; + private SparseStore udotTimesmiMatrix2 = null; + private SparseStore ksiMatrix2 = null; + private SparseStore KlkMatrix2 = null; + private SparseStore hessianMatrix2 = null; + private SparseStore KlkVMatrix2 = null; + SparseStore corr2Matrix2 = null; + SparseStore corr3Matrix2 = null; + SparseStore corr4Matrix2 = null; + + // DenseMatrix64F(getTotalNumberOfAccociationSites(), + // 1); + MatrixStore hessianInvers2 = null; + final Factory mtrxFactory = Primitive64Matrix.FACTORY; + + // private transient SimpleMatrix KlkTVMatrix = null, KlkTTMatrix = null, + // KlkTMatrix = null, udotTimesmMatrix = null, mVector = null, udotMatrix = + // null, uMatrix = null, QMatksiksiksi = null, KlkVVVMatrix = null, KlkVVMatrix + // = null, udotTimesmiMatrix = null, ksiMatrix = null, KlkMatrix = null, + // hessianMatrix = null, hessianInvers = null, KlkVMatrix = null; + // DMatrixRMaj corr2Matrix = null, corr3Matrix = null, corr4Matrix = null; //new + // DenseMatrix64F(getTotalNumberOfAccociationSites(), 1); + + /** + *

+ * Constructor for PhaseSrkCPAojAlgo. + *

+ */ + public PhaseSrkCPAojAlgo() { + super(); + } + + /** {@inheritDoc} */ + @Override + public PhaseSrkCPAojAlgo clone() { + PhaseSrkCPAojAlgo clonedPhase = null; + try { + clonedPhase = (PhaseSrkCPAojAlgo) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - - /** {@inheritDoc} */ - @Override - public PhaseSrkCPAojAlgo clone() { - PhaseSrkCPAojAlgo clonedPhase = null; - try { - clonedPhase = (PhaseSrkCPAojAlgo) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); + // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); + // clonedPhase.cpamix = (CPAMixingInterface) cpamix.clone(); + // clonedPhase.cpamix = cpaSelect.getMixingRule(1, this); + + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + cpamix = cpaSelect.getMixingRule(1, this); + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + if (initType == 0) { + setTotalNumberOfAccociationSites(0); + selfAccociationScheme = new int[numberOfComponents][0][0]; + crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; + for (int i = 0; i < numberOfComponents; i++) { + if (getComponent(i).getNumberOfmoles() < 1e-50) { + getComponent(i).setNumberOfAssociationSites(0); + } else { + getComponent(i) + .setNumberOfAssociationSites(getComponent(i).getOrginalNumberOfAssociationSites()); + setTotalNumberOfAccociationSites( + getTotalNumberOfAccociationSites() + getComponent(i).getNumberOfAssociationSites()); + selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); + for (int j = 0; j < numberOfComponents; j++) { + crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); + } } - // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); - // clonedPhase.cpamix = (CPAMixingInterface) cpamix.clone(); - // clonedPhase.cpamix = cpaSelect.getMixingRule(1, this); - - return clonedPhase; + } + + // had to remove if below - dont understand why.. Even + // if (getTotalNumberOfAccociationSites() != oldTotalNumberOfAccociationSites) { + mVector2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); + KlkMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVVMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVVVMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + hessianMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTTMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTVMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + corr2Matrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); + corr3Matrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); + corr4Matrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); + Klkni = + new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + ksiMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); + uMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); + udotMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); + moleculeNumber = new int[getTotalNumberOfAccociationSites()]; + assSiteNumber = new int[getTotalNumberOfAccociationSites()]; + gvector = new double[getTotalNumberOfAccociationSites()][1]; + udotTimesmMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); + delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltaNog = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadT = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadTdT = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + QMatksiksiksi2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); + // } + udotTimesmiMatrix2 = + SparseStore.PRIMITIVE64.make(getNumberOfComponents(), getTotalNumberOfAccociationSites()); + + oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); + + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + moleculeNumber[temp + j] = i; + assSiteNumber[temp + j] = j; + } + temp += getComponent(i).getNumberOfAssociationSites(); + } } - - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - cpamix = cpaSelect.getMixingRule(1, this); + if (cpamix == null) { + cpamix = cpaSelect.getMixingRule(1, this); } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - if (type == 0) { - setTotalNumberOfAccociationSites(0); - selfAccociationScheme = new int[numberOfComponents][0][0]; - crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; - for (int i = 0; i < numberOfComponents; i++) { - if (getComponent(i).getNumberOfmoles() < 1e-50) { - getComponent(i).setNumberOfAssociationSites(0); - } else { - getComponent(i).setNumberOfAssociationSites( - getComponent(i).getOrginalNumberOfAssociationSites()); - setTotalNumberOfAccociationSites(getTotalNumberOfAccociationSites() - + getComponent(i).getNumberOfAssociationSites()); - selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); - for (int j = 0; j < numberOfComponents; j++) { - crossAccociationScheme[i][j] = - cpaSelect.setCrossAssociationScheme(i, j, this); - } - } - } - - // had to remove if below - dont understand why.. Even - // if (getTotalNumberOfAccociationSites() != oldTotalNumberOfAccociationSites) { - mVector2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); - KlkMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVVMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - hessianMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTTMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTVMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - corr2Matrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); - corr3Matrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); - corr4Matrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); - Klkni = new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - ksiMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); - uMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); - udotMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); - moleculeNumber = new int[getTotalNumberOfAccociationSites()]; - assSiteNumber = new int[getTotalNumberOfAccociationSites()]; - gvector = new double[getTotalNumberOfAccociationSites()][1]; - udotTimesmMatrix2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); - delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltaNog = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadTdT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - QMatksiksiksi2 = SparseStore.PRIMITIVE64.make(getTotalNumberOfAccociationSites(), 1); - // } - udotTimesmiMatrix2 = SparseStore.PRIMITIVE64.make(getNumberOfComponents(), - getTotalNumberOfAccociationSites()); - - oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); - - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - moleculeNumber[temp + j] = i; - assSiteNumber[temp + j] = j; - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - } - if (cpamix == null) { - cpamix = cpaSelect.getMixingRule(1, this); - } - - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - if (type > 0 && isConstantPhaseVolume()) { - calcDelta(); - solveX(); - super.init(totalNumberOfMoles, numberOfComponents, 1, phase, beta); - gcpa = calc_g(); - // lngcpa = Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - } - - if (type > 0) { - hcpatot = calc_hCPA(); - } - - if (type > 1) { - initCPAMatrix(type); - // hcpatotdT = calc_hCPAdT(); - // super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + if (initType > 0 && isConstantPhaseVolume()) { + calcDelta(); + solveX(); + super.init(totalNumberOfMoles, numberOfComponents, 1, pt, beta); + gcpa = calc_g(); + // lngcpa = Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); } - /** - *

- * calcDelta. - *

- */ - public void calcDelta() { - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - deltaNog[i][j] = cpamix.calcDeltaNog(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), getPressure(), - numberOfComponents); - deltaNog[j][i] = deltaNog[i][j]; - } - } + if (initType > 0) { + hcpatot = calc_hCPA(); } - /** - *

- * initCPAMatrix. - *

- * - * @param type a int - */ - public void initCPAMatrix(int type) { - if (getTotalNumberOfAccociationSites() == 0) { - FCPA = 0.0; - dFCPAdTdV = 0.0; - dFCPAdTdT = 0.0; - dFCPAdT = 0; - dFCPAdV = 0; - dFCPAdVdV = 0.0; - dFCPAdVdVdV = 0.0; - - return; - } - - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - uMatrix2.set(temp + j, 0, - Math.log(ksiMatrix2.get(temp + j, 0)) - ksiMatrix2.get(temp + j, 0) + 1.0); - gvector[temp + j][0] = mVector2.get(temp + j, 0) * udotMatrix2.get(temp + j, 0); - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - for (int i = 0; i < getNumberOfComponents(); i++) { - for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { - if (moleculeNumber[j] == i) { - udotTimesmiMatrix2.set(i, j, udotMatrix2.get(j, 0)); - } else { - udotTimesmiMatrix2.set(i, j, 0.0); - } - } - } - - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - delta[i][j] = deltaNog[i][j] * getGcpa(); - delta[j][i] = delta[i][j]; - if (type > 1) { - deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadT[j][i] = deltadT[i][j]; - - deltadTdT[i][j] = cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadTdT[j][i] = deltadTdT[i][j]; - } - } - } - - double gdv1 = getGcpav() - 1.0 / getTotalVolume(); - double gdv2 = gdv1 * gdv1; - double gdv3 = gdv2 * gdv1; - double totVol = getTotalVolume(); - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - KlkVMatrix2.set(i, j, KlkMatrix2.get(i, j) * gdv1); - KlkVMatrix2.set(j, i, KlkVMatrix2.get(i, j)); - - KlkVVMatrix2.set(i, j, KlkMatrix2.get(i, j) * gdv2 + KlkMatrix2.get(i, j) - * (gcpavv + 1.0 / getTotalVolume() / getTotalVolume())); - KlkVVMatrix2.set(j, i, KlkVVMatrix2.get(i, j)); - - KlkVVVMatrix2.set(i, j, KlkMatrix2.get(i, j) * gdv3 - + 3.0 * KlkMatrix2.get(i, j) * (getGcpav() - 1.0 / getTotalVolume()) - * (gcpavv + 1.0 / (totVol * totVol)) - + KlkMatrix2.get(i, j) * (gcpavvv - 2.0 / (totVol * totVol * totVol))); - KlkVVVMatrix2.set(j, i, KlkVVVMatrix2.get(i, j)); - - if (type > 1) { - double tempVar = deltadT[i][j] / delta[i][j]; - double tempVardT = deltadTdT[i][j] / delta[i][j] - - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - - if (!Double.isNaN(tempVar)) { - // KlkdT[i][j] = KlkMatrix.getMatrix().unsafe_get(i, j) * tempVar; - // KlkdT[j][i] = KlkdT[i][j]; - - KlkTMatrix2.set(i, j, KlkMatrix2.get(i, j) * tempVar); - KlkTMatrix2.set(j, i, KlkTMatrix2.get(i, j)); - - KlkTVMatrix2.set(i, j, - KlkMatrix2.get(i, j) * tempVar * (gcpav - 1.0 / getTotalVolume())); - KlkTVMatrix2.set(j, i, KlkTVMatrix2.get(i, j)); - - KlkTTMatrix2.set(i, j, - KlkMatrix2.get(i, j) * (tempVar * tempVar + tempVardT)); - KlkTTMatrix2.set(j, i, KlkTTMatrix2.get(i, j)); - } - - if (type > 2) { - for (int p = 0; p < numberOfComponents; p++) { - double t1 = 0.0, t2 = 0.0; - if (moleculeNumber[i] == p) { - t1 = 1.0 / mVector2.get(i, 0); - } - if (moleculeNumber[j] == p) { - t2 = 1.0 / mVector2.get(j, 0); - } - Klkni[p][i][j] = KlkMatrix2.get(i, j) * (t1 + t2 - + ((ComponentSrkCPA) getComponent(p)).calc_lngi(this)); - Klkni[p][j][i] = Klkni[p][i][j]; - } - } - } - } - QMatksiksiksi2.set(i, 0, 2.0 * mVector2.get(i, 0) - / (ksiMatrix2.get(i, 0) * ksiMatrix2.get(i, 0) * ksiMatrix2.get(i, 0))); - } - - MatrixStore ksiMatrixTranspose2 = ksiMatrix2.transpose(); - - // dXdV - MatrixStore KlkVMatrixksi = KlkVMatrix2.multiply(ksiMatrix2); - MatrixStore XV = hessianInvers2.multiply(KlkVMatrixksi); - MatrixStore XVtranspose = XV.transpose(); - - MatrixStore QCPA = mVector2.transpose() - .multiply(uMatrix2.subtract(ksiMatrix2.multiply(udotMatrix2).multiply(0.5))); - FCPA = QCPA.get(0, 0); - - MatrixStore tempMatrix = ksiMatrixTranspose2.multiply(KlkVMatrixksi).multiply(-0.5); - dFCPAdV = tempMatrix.get(0, 0); - MatrixStore KlkVVMatrixTImesKsi = KlkVVMatrix2.multiply(ksiMatrix2); - MatrixStore tempMatrixVV = ksiMatrixTranspose2.multiply(KlkVVMatrixTImesKsi) - .multiply(-0.5).subtract(KlkVMatrixksi.transpose().multiply(XV)); - dFCPAdVdV = tempMatrixVV.get(0, 0); - - MatrixStore QVVV = - ksiMatrixTranspose2.multiply(KlkVVVMatrix2.multiply(ksiMatrix2)).multiply(-0.5); - MatrixStore QVVksi = KlkVVMatrixTImesKsi.multiply(-1.0); - MatrixStore QksiVksi = KlkVMatrix2.multiply(-1.0); - - MatrixStore mat1 = QVVksi.transpose().multiply(XV).multiply(3.0); - MatrixStore mat2 = XVtranspose.multiply(QksiVksi.multiply(XV)).multiply(3.0); - MatrixStore mat4 = - XVtranspose.multiply(QMatksiksiksi2.multiply(XVtranspose)).multiply(XV); - - MatrixStore dFCPAdVdVdVMatrix = QVVV.add(mat1).add(mat2).add(mat2).add(mat4); - dFCPAdVdVdV = dFCPAdVdVdVMatrix.get(0, 0); - temp = 0; + if (initType > 1) { + initCPAMatrix(initType); + // hcpatotdT = calc_hCPAdT(); + // super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + } + } + + /** + *

+ * calcDelta. + *

+ */ + public void calcDelta() { + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + deltaNog[i][j] = cpamix.calcDeltaNog(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltaNog[j][i] = deltaNog[i][j]; + } + } + } + + /** + *

+ * initCPAMatrix. + *

+ * + * @param type a int + */ + public void initCPAMatrix(int type) { + if (getTotalNumberOfAccociationSites() == 0) { + FCPA = 0.0; + dFCPAdTdV = 0.0; + dFCPAdTdT = 0.0; + dFCPAdT = 0; + dFCPAdV = 0; + dFCPAdVdV = 0.0; + dFCPAdVdVdV = 0.0; + + return; + } - if (type == 1) { - return; - } - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + uMatrix2.set(temp + j, 0, + Math.log(ksiMatrix2.get(temp + j, 0)) - ksiMatrix2.get(temp + j, 0) + 1.0); + gvector[temp + j][0] = mVector2.get(temp + j, 0) * udotMatrix2.get(temp + j, 0); + } + temp += getComponent(i).getNumberOfAssociationSites(); + } + for (int i = 0; i < getNumberOfComponents(); i++) { + for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { + if (moleculeNumber[j] == i) { + udotTimesmiMatrix2.set(i, j, udotMatrix2.get(j, 0)); + } else { + udotTimesmiMatrix2.set(i, j, 0.0); } + } + } - // KlkTMatrix = new SimpleMatrix(KlkdT); - MatrixStore KlkTMatrixTImesKsi = KlkTMatrix2.multiply(ksiMatrix2); - // dQdT - MatrixStore tempMatrix2 = - ksiMatrixTranspose2.multiply(KlkTMatrixTImesKsi).multiply(-0.5); - dFCPAdT = tempMatrix2.get(0, 0); - - // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); - // SimpleMatrix tempMatrixTV = - // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - // dFCPAdTdV = tempMatrixTV.get(0, 0); - // dXdT - MatrixStore XT = hessianInvers2.multiply(KlkTMatrixTImesKsi); - // dQdTdT - MatrixStore tempMatrixTT = - ksiMatrixTranspose2.multiply(KlkTTMatrix2.multiply(ksiMatrix2)).multiply(-0.5) - .subtract(KlkTMatrixTImesKsi.transpose().multiply(XT)); - dFCPAdTdT = tempMatrixTT.get(0, 0); - - MatrixStore tempMatrixTV = - ksiMatrixTranspose2.multiply(KlkTVMatrix2.multiply(ksiMatrix2)).multiply(-0.5) - .subtract(KlkTMatrixTImesKsi.transpose().multiply(XV)); - dFCPAdTdV = tempMatrixTV.get(0, 0); - - temp = 0; - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + delta[i][j] = deltaNog[i][j] * getGcpa(); + delta[j][i] = delta[i][j]; + if (type > 1) { + deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadT[j][i] = deltadT[i][j]; + + deltadTdT[i][j] = + cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadTdT[j][i] = deltadTdT[i][j]; } + } + } - if (type == 2) { - return; - } + double gdv1 = getGcpav() - 1.0 / getTotalVolume(); + double gdv2 = gdv1 * gdv1; + double gdv3 = gdv2 * gdv1; + double totVol = getTotalVolume(); + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + KlkVMatrix2.set(i, j, KlkMatrix2.get(i, j) * gdv1); + KlkVMatrix2.set(j, i, KlkVMatrix2.get(i, j)); + + KlkVVMatrix2.set(i, j, KlkMatrix2.get(i, j) * gdv2 + + KlkMatrix2.get(i, j) * (gcpavv + 1.0 / getTotalVolume() / getTotalVolume())); + KlkVVMatrix2.set(j, i, KlkVVMatrix2.get(i, j)); + + KlkVVVMatrix2.set(i, j, + KlkMatrix2.get(i, j) * gdv3 + + 3.0 * KlkMatrix2.get(i, j) * (getGcpav() - 1.0 / getTotalVolume()) + * (gcpavv + 1.0 / (totVol * totVol)) + + KlkMatrix2.get(i, j) * (gcpavvv - 2.0 / (totVol * totVol * totVol))); + KlkVVVMatrix2.set(j, i, KlkVVVMatrix2.get(i, j)); - // int assSites = 0; - // if(true) return; - for (int p = 0; p < numberOfComponents; p++) { - // MatrixStore KiMatrix = PrimitiveDenseStore.FACTORY.rows(Klkni[p]); - // MatrixStore KiMatrix = new SimpleMatrix(Klkni[p]); - // KiMatrix.print(10,10); - - // Matrix dQdniMatrix = - // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this - // methods misses one part of .... - // dQdniMatrix.print(10,10); - // KiMatrix.print(10, 10); - // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - - // 1).print(10, 10); - // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - - // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5));// - // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); - // System.out.println("dQdn "); - // tempMatrix20.print(10, 10); - // SimpleMatrix tempMatrix4 = KiMatrix.multiply(ksiMatrix); - // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - 1).print(10, 10); - // SimpleMatrix tempMatrix5 = udotTimesmiMatrix2.extractVector(true, - // p).transpose().minus(tempMatrix4); - // tempMki[0] = mki[p]; - // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, - // udotMatrix.getArray())); - // System.out.println("aMatrix "); - // amatrix.transpose().print(10, 10); - // System.out.println("temp4 matrix"); - // tempMatrix4.print(10, 10); - // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); - // SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5);//.scale(-1.0); - // System.out.println("dXdni"); - // tempMatrix4.print(10, 10); - // tempMatrix5.print(10, 10); - // System.out.println("dXdn "); - // tempMatrix6.print(10, 10); - // int temp2 = 0; - for (int compp = 0; compp < numberOfComponents; compp++) { - for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { - // ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, -1.0 * - // tempMatrix6.get(temp2 + kk, 0)); - } - // temp2 += getComponent(compp).getNumberOfAssociationSites(); + if (type > 1) { + double tempVar = deltadT[i][j] / delta[i][j]; + double tempVardT = deltadTdT[i][j] / delta[i][j] + - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); + + if (!Double.isNaN(tempVar)) { + // KlkdT[i][j] = KlkMatrix.getMatrix().unsafe_get(i, j) * tempVar; + // KlkdT[j][i] = KlkdT[i][j]; + + KlkTMatrix2.set(i, j, KlkMatrix2.get(i, j) * tempVar); + KlkTMatrix2.set(j, i, KlkTMatrix2.get(i, j)); + + KlkTVMatrix2.set(i, j, + KlkMatrix2.get(i, j) * tempVar * (gcpav - 1.0 / getTotalVolume())); + KlkTVMatrix2.set(j, i, KlkTVMatrix2.get(i, j)); + + KlkTTMatrix2.set(i, j, KlkMatrix2.get(i, j) * (tempVar * tempVar + tempVardT)); + KlkTTMatrix2.set(j, i, KlkTTMatrix2.get(i, j)); + } + + if (type > 2) { + for (int p = 0; p < numberOfComponents; p++) { + double t1 = 0.0; + double t2 = 0.0; + if (moleculeNumber[i] == p) { + t1 = 1.0 / mVector2.get(i, 0); + } + if (moleculeNumber[j] == p) { + t2 = 1.0 / mVector2.get(j, 0); + } + Klkni[p][i][j] = KlkMatrix2.get(i, j) + * (t1 + t2 + ((ComponentSrkCPA) getComponent(p)).calc_lngi(this)); + Klkni[p][j][i] = Klkni[p][i][j]; } - // assSites += getComponent(p).getNumberOfAssociationSites(); + } } + } + QMatksiksiksi2.set(i, 0, 2.0 * mVector2.get(i, 0) + / (ksiMatrix2.get(i, 0) * ksiMatrix2.get(i, 0) * ksiMatrix2.get(i, 0))); } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentSrkCPA(componentName, moles, molesInPhase, compNumber); - } + MatrixStore ksiMatrixTranspose2 = ksiMatrix2.transpose(); - /** {@inheritDoc} */ - @Override - public double getF() { - return super.getF() + cpaon * FCPA(); - } + // dXdV + MatrixStore KlkVMatrixksi = KlkVMatrix2.multiply(ksiMatrix2); + MatrixStore XV = hessianInvers2.multiply(KlkVMatrixksi); + MatrixStore XVtranspose = XV.transpose(); - /** {@inheritDoc} */ - @Override - public double dFdT() { - return super.dFdT() + cpaon * dFCPAdT(); - } + MatrixStore QCPA = mVector2.transpose() + .multiply(uMatrix2.subtract(ksiMatrix2.multiply(udotMatrix2).multiply(0.5))); + FCPA = QCPA.get(0, 0); - /** {@inheritDoc} */ - @Override - public double dFdTdV() { - return super.dFdTdV() + cpaon * dFCPAdTdV(); - } + MatrixStore tempMatrix = ksiMatrixTranspose2.multiply(KlkVMatrixksi).multiply(-0.5); + dFCPAdV = tempMatrix.get(0, 0); + MatrixStore KlkVVMatrixTImesKsi = KlkVVMatrix2.multiply(ksiMatrix2); + MatrixStore tempMatrixVV = ksiMatrixTranspose2.multiply(KlkVVMatrixTImesKsi) + .multiply(-0.5).subtract(KlkVMatrixksi.transpose().multiply(XV)); + dFCPAdVdV = tempMatrixVV.get(0, 0); - /** {@inheritDoc} */ - @Override - public double dFdV() { - double dv2 = dFCPAdV(); - return super.dFdV() + cpaon * dv2; - } + MatrixStore QVVV = + ksiMatrixTranspose2.multiply(KlkVVVMatrix2.multiply(ksiMatrix2)).multiply(-0.5); + MatrixStore QVVksi = KlkVVMatrixTImesKsi.multiply(-1.0); + MatrixStore QksiVksi = KlkVMatrix2.multiply(-1.0); - // @Override - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return super.dFdVdV() + cpaon * dFCPAdVdV(); - } + MatrixStore mat1 = QVVksi.transpose().multiply(XV).multiply(3.0); + MatrixStore mat2 = XVtranspose.multiply(QksiVksi.multiply(XV)).multiply(3.0); + MatrixStore mat4 = + XVtranspose.multiply(QMatksiksiksi2.multiply(XVtranspose)).multiply(XV); - /** {@inheritDoc} */ - @Override - public double dFdVdVdV() { - return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); - } + MatrixStore dFCPAdVdVdVMatrix = QVVV.add(mat1).add(mat2).add(mat2).add(mat4); + dFCPAdVdVdV = dFCPAdVdVdVMatrix.get(0, 0); + temp = 0; - /** {@inheritDoc} */ - @Override - public double dFdTdT() { - return super.dFdTdT() + cpaon * dFCPAdTdT(); + if (type == 1) { + return; } - - /** - *

- * FCPA. - *

- * - * @return a double - */ - public double FCPA() { - /* - * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = - * 0.0; for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai - * = ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; tot += (Math.log(xai) - 1.0 / 2.0 * - * xai + 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } return ans; - */ - return FCPA; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** - *

- * dFCPAdV. - *

- * - * @return a double - */ - public double dFCPAdV() { - // return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) - // * hcpatot; - return dFCPAdV; + // KlkTMatrix = new SimpleMatrix(KlkdT); + MatrixStore KlkTMatrixTImesKsi = KlkTMatrix2.multiply(ksiMatrix2); + // dQdT + MatrixStore tempMatrix2 = + ksiMatrixTranspose2.multiply(KlkTMatrixTImesKsi).multiply(-0.5); + dFCPAdT = tempMatrix2.get(0, 0); + + // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); + // SimpleMatrix tempMatrixTV = + // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + // dFCPAdTdV = tempMatrixTV.get(0, 0); + // dXdT + MatrixStore XT = hessianInvers2.multiply(KlkTMatrixTImesKsi); + // dQdTdT + MatrixStore tempMatrixTT = + ksiMatrixTranspose2.multiply(KlkTTMatrix2.multiply(ksiMatrix2)).multiply(-0.5) + .subtract(KlkTMatrixTImesKsi.transpose().multiply(XT)); + dFCPAdTdT = tempMatrixTT.get(0, 0); + + MatrixStore tempMatrixTV = + ksiMatrixTranspose2.multiply(KlkTVMatrix2.multiply(ksiMatrix2)).multiply(-0.5) + .subtract(KlkTMatrixTImesKsi.transpose().multiply(XV)); + dFCPAdTdV = tempMatrixTV.get(0, 0); + + temp = 0; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** - *

- * dFCPAdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdV() { - // double sum1 = -1.0 / 2.0 * gcpavv * hcpatot; - // return -1.0 / getTotalVolume() * dFCPAdV() + sum1; - return dFCPAdVdV; + if (type == 2) { + return; } - /** - *

- * dFCPAdVdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdVdV() { - return dFCPAdVdVdV; - // return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / - // Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - hcpatot / (2.0 * - // Math.pow(getTotalVolume(), 2.0)) * (-getGcpav() - getTotalVolume() * gcpavv) - // + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv - // - gcpavv); + // int assSites = 0; + // if(true) return; + for (int p = 0; p < numberOfComponents; p++) { + // MatrixStore KiMatrix = PrimitiveDenseStore.FACTORY.rows(Klkni[p]); + // MatrixStore KiMatrix = new SimpleMatrix(Klkni[p]); + // KiMatrix.print(10,10); + + // Matrix dQdniMatrix = + // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this + // methods misses one part of .... + // dQdniMatrix.print(10,10); + // KiMatrix.print(10, 10); + // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - + // 1).print(10, 10); + // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - + // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); + // // + // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); + // System.out.println("dQdn "); + // tempMatrix20.print(10, 10); + // SimpleMatrix tempMatrix4 = KiMatrix.multiply(ksiMatrix); + // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - 1).print(10, 10); + // SimpleMatrix tempMatrix5 = udotTimesmiMatrix2.extractVector(true, + // p).transpose().minus(tempMatrix4); + // tempMki[0] = mki[p]; + // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, + // udotMatrix.getArray())); + // System.out.println("aMatrix "); + // amatrix.transpose().print(10, 10); + // System.out.println("temp4 matrix"); + // tempMatrix4.print(10, 10); + // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); + // SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5); //.scale(-1.0); + // System.out.println("dXdni"); + // tempMatrix4.print(10, 10); + // tempMatrix5.print(10, 10); + // System.out.println("dXdn "); + // tempMatrix6.print(10, 10); + // int temp2 = 0; + for (int compp = 0; compp < numberOfComponents; compp++) { + for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { + // ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, -1.0 * + // tempMatrix6.get(temp2 + kk, 0)); + } + // temp2 += getComponent(compp).getNumberOfAssociationSites(); + } + // assSites += getComponent(p).getNumberOfAssociationSites(); } - - /** - *

- * dFCPAdT. - *

- * - * @return a double + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentSrkCPA(name, moles, molesInPhase, compNumber); + } + + /** {@inheritDoc} */ + @Override + public double getF() { + return super.getF() + cpaon * FCPA(); + } + + /** {@inheritDoc} */ + @Override + public double dFdT() { + return super.dFdT() + cpaon * dFCPAdT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdV() { + return super.dFdTdV() + cpaon * dFCPAdTdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + double dv2 = dFCPAdV(); + return super.dFdV() + cpaon * dv2; + } + + // @Override + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return super.dFdVdV() + cpaon * dFCPAdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdVdVdV() { + return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdT() { + return super.dFdTdT() + cpaon * dFCPAdTdT(); + } + + /** + *

+ * FCPA. + *

+ * + * @return a double + */ + public double FCPA() { + /* + * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = 0.0; + * for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai = + * ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; tot += (Math.log(xai) - 1.0 / 2.0 * xai + + * 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } return ans; */ - public double dFCPAdT() { - /* - * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = - * 0.0; for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai - * = ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; double xaidT = ((ComponentSrkCPA) - * getComponent(i)).getXsitedT()[j]; tot += 1.0 / xai * xaidT - 0.5 * xaidT;// - 1.0 / 2.0 * - * xai + 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } - * System.out.println("dFCPAdT1 " + ans + " dfcpa2 " +dFCPAdT); return ans; - */ - return dFCPAdT; - } - - /** - *

- * dFCPAdTdT. - *

- * - * @return a double + return FCPA; + } + + /** + *

+ * dFCPAdV. + *

+ * + * @return a double + */ + public double dFCPAdV() { + // return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) + // * hcpatot; + return dFCPAdV; + } + + /** + *

+ * dFCPAdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdV() { + // double sum1 = -1.0 / 2.0 * gcpavv * hcpatot; + // return -1.0 / getTotalVolume() * dFCPAdV() + sum1; + return dFCPAdVdV; + } + + /** + *

+ * dFCPAdVdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdVdV() { + return dFCPAdVdVdV; + // return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / + // Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - hcpatot / (2.0 * + // Math.pow(getTotalVolume(), 2.0)) * (-getGcpav() - getTotalVolume() * gcpavv) + // + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv + // - gcpavv); + } + + /** + *

+ * dFCPAdT. + *

+ * + * @return a double + */ + public double dFCPAdT() { + /* + * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = 0.0; + * for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { double xai = + * ((ComponentSrkCPA) getComponent(i)).getXsite()[j]; double xaidT = ((ComponentSrkCPA) + * getComponent(i)).getXsitedT()[j]; tot += 1.0 / xai * xaidT - 0.5 * xaidT; // - 1.0 / 2.0 * + * xai + 1.0 / 2.0); } ans += getComponent(i).getNumberOfMolesInPhase() * tot; } + * System.out.println("dFCPAdT1 " + ans + " dfcpa2 " +dFCPAdT); return ans; */ - public double dFCPAdTdT() { - return dFCPAdTdT; - } - - /** - *

- * dFCPAdTdV. - *

- * - * @return a double + return dFCPAdT; + } + + /** + *

+ * dFCPAdTdT. + *

+ * + * @return a double + */ + public double dFCPAdTdT() { + return dFCPAdTdT; + } + + /** + *

+ * dFCPAdTdV. + *

+ * + * @return a double + */ + public double dFCPAdTdV() { + // System.out.println("dFCPAdTdV1 " + dFCPAdTdV + " dFCPAdTdV " +( 1.0 / (2.0 * + // getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatotdT)); + return dFCPAdTdV; + /* + * if (totalNumberOfAccociationSites > 0) { return 1.0 / (2.0 * getTotalVolume()) * (1.0 - + * getTotalVolume() * getGcpav()) * hcpatotdT; } else { return 0; } */ - public double dFCPAdTdV() { - // System.out.println("dFCPAdTdV1 " + dFCPAdTdV + " dFCPAdTdV " +( 1.0 / (2.0 * - // getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatotdT)); - return dFCPAdTdV; - /* - * if (totalNumberOfAccociationSites > 0) { return 1.0 / (2.0 * getTotalVolume()) * (1.0 - - * getTotalVolume() * getGcpav()) * hcpatotdT; } else { return 0; } - */ + } + + /** + *

+ * calc_hCPA. + *

+ * + * @return a double + */ + public double calc_hCPA() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + htot = 0.0; + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + htot += (1.0 - ((ComponentSrkCPA) getComponent(i)).getXsite()[j]); + } + tot += getComponent(i).getNumberOfMolesInPhase() * htot; } - - /** - *

- * calc_hCPA. - *

- * - * @return a double - */ - public double calc_hCPA() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - htot = 0.0; - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - htot += (1.0 - ((ComponentSrkCPA) getComponent(i)).getXsite()[j]); - } - tot += getComponent(i).getNumberOfMolesInPhase() * htot; - } - return tot; + return tot; + } + + /** + *

+ * calc_g. + *

+ * + * @return a double + */ + public double calc_g() { + double temp = 1.0 - getb() / 4.0 / getMolarVolume(); + double g = (2.0 - getb() / 4.0 / getMolarVolume()) / (2.0 * temp * temp * temp); + return g; + } + + /** + *

+ * calc_lngV. + *

+ * + * @return a double + */ + public double calc_lngV() { + double gv2 = 0.0; + // gv = -2.0 * getB() * (10.0 * getTotalVolume() - getB()) / getTotalVolume() / + // ((8.0 * getTotalVolume() - getB()) * (4.0 * getTotalVolume() - getB())); + + gv2 = 1.0 / (2.0 - getB() / (4.0 * getTotalVolume())) * getB() + / (4.0 * getTotalVolume() * getTotalVolume()) + - 3.0 / (1.0 - getB() / (4.0 * getTotalVolume())) * getB() + / (4.0 * getTotalVolume() * getTotalVolume()); + return gv2; + } + + /** + *

+ * calc_lngVV. + *

+ * + * @return a double + */ + public double calc_lngVV() { + double gvv = 2.0 + * (640.0 * Math.pow(getTotalVolume(), 3.0) + - 216.0 * getB() * getTotalVolume() * getTotalVolume() + + 24.0 * Math.pow(getB(), 2.0) * getTotalVolume() - Math.pow(getB(), 3.0)) + * getB() / (getTotalVolume() * getTotalVolume()) + / Math.pow(8.0 * getTotalVolume() - getB(), 2.0) + / Math.pow(4.0 * getTotalVolume() - getB(), 2.0); + return gvv; + } + + /** + *

+ * calc_lngVVV. + *

+ * + * @return a double + */ + public double calc_lngVVV() { + double gvvv = 4.0 + * (Math.pow(getB(), 5.0) + 17664.0 * Math.pow(getTotalVolume(), 4.0) * getB() + - 4192.0 * Math.pow(getTotalVolume(), 3.0) * Math.pow(getB(), 2.0) + + 528.0 * Math.pow(getB(), 3.0) * getTotalVolume() * getTotalVolume() + - 36.0 * getTotalVolume() * Math.pow(getB(), 4.0) + - 30720.0 * Math.pow(getTotalVolume(), 5.0)) + * getB() / (Math.pow(getTotalVolume(), 3.0)) + / Math.pow(-8.0 * getTotalVolume() + getB(), 3.0) + / Math.pow(-4.0 * getTotalVolume() + getB(), 3.0); + return gvvv; + } + + /** + *

+ * calcXsitedV. + *

+ */ + public void calcXsitedV() { + if (getTotalNumberOfAccociationSites() > 0) { + initCPAMatrix(1); } - - /** - *

- * calc_g. - *

- * - * @return a double - */ - public double calc_g() { - double temp = 1.0 - getb() / 4.0 / getMolarVolume(); - double g = (2.0 - getb() / 4.0 / getMolarVolume()) / (2.0 * temp * temp * temp); - return g; + } + + /** + *

+ * solveX. + *

+ * + * @return a boolean + */ + public boolean solveX() { + if (getTotalNumberOfAccociationSites() == 0) { + return true; } - /** - *

- * calc_lngV. - *

- * - * @return a double - */ - public double calc_lngV() { - double gv2 = 0.0; - // gv = -2.0 * getB() * (10.0 * getTotalVolume() - getB()) / getTotalVolume() / - // ((8.0 * getTotalVolume() - getB()) * (4.0 * getTotalVolume() - getB())); - - gv2 = 1.0 / (2.0 - getB() / (4.0 * getTotalVolume())) * getB() - / (4.0 * getTotalVolume() * getTotalVolume()) - - 3.0 / (1.0 - getB() / (4.0 * getTotalVolume())) * getB() - / (4.0 * getTotalVolume() * getTotalVolume()); - return gv2; + boolean solvedX = solveX2(5); + if (solvedX) { + // return true; } - /** - *

- * calc_lngVV. - *

- * - * @return a double - */ - public double calc_lngVV() { - double gvv = 2.0 - * (640.0 * Math.pow(getTotalVolume(), 3.0) - - 216.0 * getB() * getTotalVolume() * getTotalVolume() - + 24.0 * Math.pow(getB(), 2.0) * getTotalVolume() - Math.pow(getB(), 3.0)) - * getB() / (getTotalVolume() * getTotalVolume()) - / Math.pow(8.0 * getTotalVolume() - getB(), 2.0) - / Math.pow(4.0 * getTotalVolume() - getB(), 2.0); - return gvv; + // SparseStore mat1 = KlkMatrix2; + // SparseStore mat2 = ksiMatrix2; + // second order method not working correctly and not used t the moment b ecause + // of numerical stability + int temp = 0; + int iter = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + mVector2.set(temp + j, 0, getComponent(i).getNumberOfMolesInPhase()); + } + temp += getComponent(i).getNumberOfAssociationSites(); } - - /** - *

- * calc_lngVVV. - *

- * - * @return a double - */ - public double calc_lngVVV() { - double gvvv = 4.0 - * (Math.pow(getB(), 5.0) + 17664.0 * Math.pow(getTotalVolume(), 4.0) * getB() - - 4192.0 * Math.pow(getTotalVolume(), 3.0) * Math.pow(getB(), 2.0) - + 528.0 * Math.pow(getB(), 3.0) * getTotalVolume() * getTotalVolume() - - 36.0 * getTotalVolume() * Math.pow(getB(), 4.0) - - 30720.0 * Math.pow(getTotalVolume(), 5.0)) - * getB() / (Math.pow(getTotalVolume(), 3.0)) - / Math.pow(-8.0 * getTotalVolume() + getB(), 3.0) - / Math.pow(-4.0 * getTotalVolume() + getB(), 3.0); - return gvvv; + double Klk = 0.0; + double totvolume = getTotalVolume(); + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + Klk = mVector2.get(i, 0) * mVector2.get(j, 0) / totvolume * delta[i][j]; + KlkMatrix2.set(i, j, Klk); + KlkMatrix2.set(j, i, Klk); + } } - - /** - *

- * calcXsitedV. - *

- */ - public void calcXsitedV() { - if (getTotalNumberOfAccociationSites() > 0) { - initCPAMatrix(1); + boolean solved = true; + // SimpleMatrix corrMatrix = null; + do { + solved = true; + iter++; + temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + ksiMatrix2.set(temp + j, 0, ((ComponentSrkCPA) getComponent(i)).getXsite()[j]); + // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, + // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); + udotMatrix2.set(temp + j, 0, 1.0 / ksiMatrix2.get(temp + j, 0) - 1.0); + udotTimesmMatrix2.set(temp + j, 0, + mVector2.get(temp + j, 0) * udotMatrix2.get(temp + j, 0)); } - } - - /** - *

- * solveX. - *

- * - * @return a boolean - */ - public boolean solveX() { - if (getTotalNumberOfAccociationSites() == 0) { - return true; + temp += getComponent(i).getNumberOfAssociationSites(); + } + + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + int krondelt = 0; + if (i == j) { + krondelt = 1; + } + hessianMatrix2.set(i, j, + -mVector2.get(i, 0) / (ksiMatrix2.get(i, 0) * ksiMatrix2.get(i, 0)) * krondelt + - KlkMatrix2.get(i, j)); + hessianMatrix2.set(j, i, hessianMatrix2.get(i, j)); } - - boolean solvedX = solveX2(5); - if (solvedX) { - // return true; + } + + // ksiMatrix = new SimpleMatrix(ksi); + // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); + // PrimitiveMatrix input = PrimitiveMatrix.FACTORY.rows(hessianMatrix2); + // PrimitiveMatrix hessianInvers2; + try { + // hessianInvers2 = input.invert(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return false; + } + + // MatrixStore corr2Matrix2 = mat1.multiply(mat2); + // corr2Matrix2 = mat1.multiply(mat2); //gcpa)CommonOps_DDRM.mult(mat1, mat2, + // corr2Matrix); + // MatrixStore corr3Matrix = udotTimesmMatrix2.subtract(corr2Matrix2); + // PrimitiveMatrix corr4Matrix = hessianInvers2.multiply(corr3Matrix); + // CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, + // corr3Matrix); + // CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); + // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); + // corrMatrix = + // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix))); //.scale(-1.0); + temp = 0; + // System.out.println("print SimpleMatrix ..."); + // corrMatrix.print(10, 10); + // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); + // System.out.println("print CommonOps ..."); + // simp.print(10,10); + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { + double newX = ksiMatrix2.get(temp + j, 0) - corr4Matrix2.get((temp + j), 0); + if (newX < 0) { + newX = 1e-10; + solved = false; + } + ((ComponentCPAInterface) getComponent(i)).setXsite(j, newX); } - - // SparseStore mat1 = KlkMatrix2; - // SparseStore mat2 = ksiMatrix2; - // second order method not working correctly and not used t the moment b ecause - // of numerical stability - int temp = 0, iter = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - mVector2.set(temp + j, 0, getComponent(i).getNumberOfMolesInPhase()); - } - temp += getComponent(i).getNumberOfAssociationSites(); + temp += getComponent(i).getNumberOfAssociationSites(); + } + // System.out.println("corrmatrix error " ); + // System.out.println("error " + corrMatrix.norm1()); + } while ((corr4Matrix2.norm() > 1e-12 || !solved) && iter < 100); + + // System.out.println("iter " + iter + " error " + NormOps.normF(corr4Matrix)); + // // corrMatrix.print(10, 10); + // ksiMatrix.print(10, 10); + return true; + } + + /** + *

+ * solveX2. + *

+ * + * @param maxIter a int + * @return a boolean + */ + public boolean solveX2(int maxIter) { + double err = .0; + int iter = 0; + // if (delta == null) { + // initCPAMatrix(1); + double old = 0.0; + double neeval = 0.0; + // } + do { + iter++; + err = 0.0; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + old = ((ComponentSrkCPA) getComponent(moleculeNumber[i])).getXsite()[assSiteNumber[i]]; + neeval = 0; + for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { + neeval += getComponent(moleculeNumber[j]).getNumberOfMolesInPhase() * delta[i][j] + * ((ComponentSrkCPA) getComponent(moleculeNumber[j])).getXsite()[assSiteNumber[j]]; } - double Klk = 0.0; - double totvolume = getTotalVolume(); - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - Klk = mVector2.get(i, 0) * mVector2.get(j, 0) / totvolume * delta[i][j]; - KlkMatrix2.set(i, j, Klk); - KlkMatrix2.set(j, i, Klk); - } + neeval = 1.0 / (1.0 + 1.0 / getTotalVolume() * neeval); + ((ComponentCPAInterface) getComponent(moleculeNumber[i])).setXsite(assSiteNumber[i], + neeval); + err += Math.abs((old - neeval) / neeval); + } + } while (Math.abs(err) > 1e-10 && iter < maxIter); + // System.out.println("iter " + iter); + // if (Math.abs(err) + // < 1e-12) { + // return true; + // } else { + // System.out.println("did not solve for Xi in iterations: " + iter); + // System.out.println("error: " + err); + return false; + } + + /** {@inheritDoc} */ + @Override + public double getHcpatot() { + return hcpatot; + } + + /** + * Setter for property hcpatot. + * + * @param hcpatot New value of property hcpatot. + */ + public void setHcpatot(double hcpatot) { + this.hcpatot = hcpatot; + } + + /** {@inheritDoc} */ + @Override + public double getGcpa() { + return gcpa; + } + + /** + *

+ * calcRootVolFinder. + *

+ * + * @param pt the PhaseType of the phase + * @return a double + */ + public double calcRootVolFinder(PhaseType pt) { + double solvedBonVHigh = 0.0; + double solvedBonVlow = 1.0; + double oldh = 1; + // double[][] matrix = new double[2][2000]; + double BonV = 1.0 - 1e-10; + try { + // molarVolume(pressure, temperature, A, B, pt); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + double BonVold = BonV; + double Btemp = 0; + double h = 1; + // double Dtemp = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0, d1 = 0, d2 = 0; + Btemp = getB(); + // Dtemp = getA(); + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + for (int i = 0; i < 2000; i++) { + BonVold = BonV; + BonV = 1.0 - (i + 1e-6) * 1.0 / 2000.0; + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + gcpa = calc_g(); + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + do { + } while (!solveX()); + + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + + if (Math.signum(h) * Math.signum(oldh) < 0 && i > 2) { + if (solvedBonVlow < 1e-3) { + solvedBonVlow = (BonV + BonVold) / 2.0; + if (pt == PhaseType.GAS) { + break; + } + } else { + solvedBonVHigh = (BonV + BonVold) / 2.0; + if (pt == PhaseType.LIQUID) { + break; + } } - boolean solved = true; - // SimpleMatrix corrMatrix = null; - do { - solved = true; - iter++; - temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - ksiMatrix2.set(temp + j, 0, ((ComponentSrkCPA) getComponent(i)).getXsite()[j]); - // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, - // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); - udotMatrix2.set(temp + j, 0, 1.0 / ksiMatrix2.get(temp + j, 0) - 1.0); - udotTimesmMatrix2.set(temp + j, 0, - mVector2.get(temp + j, 0) * udotMatrix2.get(temp + j, 0)); - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - int krondelt = 0; - if (i == j) { - krondelt = 1; - } - hessianMatrix2.set(i, j, - -mVector2.get(i, 0) / (ksiMatrix2.get(i, 0) * ksiMatrix2.get(i, 0)) - * krondelt - KlkMatrix2.get(i, j)); - hessianMatrix2.set(j, i, hessianMatrix2.get(i, j)); - } - } - - // ksiMatrix = new SimpleMatrix(ksi); - // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); - // PrimitiveMatrix input = PrimitiveMatrix.FACTORY.rows(hessianMatrix2); - // PrimitiveMatrix hessianInvers2; - try { - // hessianInvers2 = input.invert(); - } catch (Exception e) { - logger.error("error", e); - return false; - } - - // MatrixStore corr2Matrix2 = mat1.multiply(mat2); - // corr2Matrix2 = mat1.multiply(mat2);//gcpa)CommonOps_DDRM.mult(mat1, mat2, - // corr2Matrix); - // MatrixStore corr3Matrix = udotTimesmMatrix2.subtract(corr2Matrix2); - // PrimitiveMatrix corr4Matrix = hessianInvers2.multiply(corr3Matrix); - // CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, - // corr3Matrix); - // CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); - // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); - // corrMatrix = - // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)));//.scale(-1.0); - temp = 0; - // System.out.println("print SimpleMatrix ..."); - // corrMatrix.print(10, 10); - // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); - // System.out.println("print CommonOps ..."); - // simp.print(10,10); - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < getComponent(i).getNumberOfAssociationSites(); j++) { - double newX = ksiMatrix2.get(temp + j, 0) - corr4Matrix2.get((temp + j), 0); - if (newX < 0) { - newX = 1e-10; - solved = false; - } - ((ComponentCPAInterface) getComponent(i)).setXsite(j, newX); - } - temp += getComponent(i).getNumberOfAssociationSites(); - } - // System.out.println("corrmatrix error " ); - // System.out.println("error " + corrMatrix.norm1()); - } while ((corr4Matrix2.norm() > 1e-12 || !solved) && iter < 100); - - // System.out.println("iter " + iter + " error " + NormOps.normF(corr4Matrix)); - // // corrMatrix.print(10, 10); - // ksiMatrix.print(10, 10); - return true; + } + solvedBonVHigh = (BonV + BonVold) / 2.0; + oldh = h; + // matrix[0][i] = BonV; + // matrix[1][i] = h; } - - /** - *

- * solveX2. - *

- * - * @param maxIter a int - * @return a boolean - */ - public boolean solveX2(int maxIter) { - double err = .0; - int iter = 0; - // if (delta == null) { - // initCPAMatrix(1); - double old = 0.0, neeval = 0.0; - // } - do { - iter++; - err = 0.0; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - old = ((ComponentSrkCPA) getComponent(moleculeNumber[i])) - .getXsite()[assSiteNumber[i]]; - neeval = 0; - for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { - neeval += getComponent(moleculeNumber[j]).getNumberOfMolesInPhase() - * delta[i][j] * ((ComponentSrkCPA) getComponent(moleculeNumber[j])) - .getXsite()[assSiteNumber[j]]; - } - neeval = 1.0 / (1.0 + 1.0 / getTotalVolume() * neeval); - ((ComponentCPAInterface) getComponent(moleculeNumber[i])).setXsite(assSiteNumber[i], - neeval); - err += Math.abs((old - neeval) / neeval); - } - } while (Math.abs(err) > 1e-10 && iter < maxIter); - // System.out.println("iter " + iter); - // if (Math.abs(err) - // < 1e-12) { - // return true; - // } else { - // System.out.println("did not solve for Xi in iterations: " + iter); - // System.out.println("error: " + err); - return false; + if (solvedBonVlow < 1e-3) { + solvedBonVlow = solvedBonVHigh; } - - /** {@inheritDoc} */ - @Override - public double getHcpatot() { - return hcpatot; + // dataPresentation.fileHandeling.createTextFile.TextFile file = new + // dataPresentation.fileHandeling.createTextFile.TextFile(); + // file.setValues(matrix); + // file.setOutputFileName("D:/temp/temp2.txt"); + // file.createFile(); + if (pt == PhaseType.GAS) { + return solvedBonVlow; + } else { + return solvedBonVHigh; } - - /** - * Setter for property hcpatot. - * - * @param hcpatot New value of property hcpatot. - */ - public void setHcpatot(double hcpatot) { - this.hcpatot = hcpatot; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + // if (pressure > 1000) { + // BonV = 0.9999; + // } + + // double calcRooBonVtVolFinder = calcRootVolFinder(pt); + // BonV = calcRooBonVtVolFinder; + // double BonVInit = BonV; + if (BonV < 0) { + BonV = 1.0e-8; } - /** {@inheritDoc} */ - @Override - public double getGcpa() { - return gcpa; + if (BonV >= 1.0) { + BonV = 0.9999; } - - /** - *

- * calcRootVolFinder. - *

- * - * @param phase a int - * @return a double - */ - public double calcRootVolFinder(int phase) { - double solvedBonVHigh = 0.0; - double solvedBonVlow = 1.0; - double oldh = 1; - // double[][] matrix = new double[2][2000]; - double BonV = 1.0 - 1e-10; - try { - // molarVolume(pressure, temperature, A, B, phaseType); - } catch (Exception e) { - logger.error("error", e); - } - double BonVold = BonV; - double Btemp = 0, h = 1; - // double Dtemp = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0, d1 = 0, d2 = 0; - Btemp = getB(); - // Dtemp = getA(); - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - for (int i = 0; i < 2000; i++) { - BonVold = BonV; - BonV = 1.0 - (i + 1e-6) * 1.0 / 2000.0; - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - gcpa = calc_g(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - do { - } while (!solveX()); - - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - - if (Math.signum(h) * Math.signum(oldh) < 0 && i > 2) { - if (solvedBonVlow < 1e-3) { - solvedBonVlow = (BonV + BonVold) / 2.0; - if (phase == 1) { - break; - } - } else { - solvedBonVHigh = (BonV + BonVold) / 2.0; - if (phase == 0) { - break; - } - } - } - solvedBonVHigh = (BonV + BonVold) / 2.0; - oldh = h; - // matrix[0][i] = BonV; - // matrix[1][i] = h; - } - if (solvedBonVlow < 1e-3) { - solvedBonVlow = solvedBonVHigh; - } - // dataPresentation.fileHandeling.createTextFile.TextFile file = new - // dataPresentation.fileHandeling.createTextFile.TextFile(); - // file.setValues(matrix); - // file.setOutputFileName("D:/temp/temp2.txt"); - // file.createFile(); - if (phase == 1) { - return solvedBonVlow; - } else { - return solvedBonVHigh; - } + double BonVold; + double h = 0; + double dh = 0; + double dhh = 0; + double d1 = 0; + double d2 = 0; + double Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); } + calcDelta(); - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - // if (pressure > 1000) { - // BonV = 0.9999; - // } - - // double calcRooBonVtVolFinder = calcRootVolFinder(phasetype); - // BonV = calcRooBonVtVolFinder; - // double BonVInit = BonV; - if (BonV < 0) { - BonV = 1.0e-8; - } - - if (BonV >= 1.0) { - BonV = 0.9999; - } - double BonVold; - double h = 0, dh = 0, dhh = 0; - double d1 = 0, d2 = 0; - double Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); - } - calcDelta(); - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - - do { - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); + do { + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } - if (getTotalNumberOfAccociationSites() > 0) { - solveX(); - } + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); - initCPAMatrix(1); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 - // + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } - - if (BonV > 0.9999) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV = 0.9999; - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - } - } else if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - } - } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) - && iterations < 100); - - if (Math.abs(h) > 1e-12) { - // System.out.println("h failed " + "Z" + Z + " iterations " + iterations + " - // BonV " + BonV); - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); + if (getTotalNumberOfAccociationSites() > 0) { + solveX(); + } + + initCPAMatrix(1); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 + // + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 0.9999) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; + } else { + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV = 0.9999; + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); } - return getMolarVolume(); + } else if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; + } else { + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); + } + } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) + && iterations < 100); + + if (Math.abs(h) > 1e-12) { + // System.out.println("h failed " + "Z" + Z + " iterations " + iterations + " + // BonV " + BonV); + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + } + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); + } + return getMolarVolume(); + } + + /** + *

+ * molarVolumeChangePhase. + *

+ * + * @param pressure a double + * @param temperature a double + * @param A a double + * @param B a double + * @param pt the PhaseType of the phase + * @return a double + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double molarVolumeChangePhase(double pressure, double temperature, double A, double B, + PhaseType pt) throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + // double BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); + double BonV = calcRootVolFinder(pt); + // double BonVInit = BonV; + if (BonV < 0) { + BonV = 1.0e-8; } - /** - *

- * molarVolumeChangePhase. - *

- * - * @param pressure a double - * @param temperature a double - * @param A a double - * @param B a double - * @param phasetype a int - * @return a double - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. - */ - public double molarVolumeChangePhase(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - // double BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - double BonV = calcRootVolFinder(phasetype); - // double BonVInit = BonV; - if (BonV < 0) { - BonV = 1.0e-8; - } + if (BonV >= 1.0) { + BonV = 0.9999; + } + double BonVold = BonV; + double Btemp = 0; + double h = 0; + double dh = 0; + double dhh = 0; + // double gvvv = 0, fvvv = 0; + double d1 = 0; + double d2 = 0; + Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); + } + calcDelta(); + + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - if (BonV >= 1.0) { - BonV = 0.9999; + do { + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } + + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + solveX(); + + initCPAMatrix(1); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0, dhh = 0; - // double gvvv = 0, fvvv = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 1.1) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; + } else { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - calcDelta(); + } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - - do { - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } - - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - solveX(); - - initCPAMatrix(1); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } - - if (BonV > 1.1) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - - // System.out.println("Z " + Z + "h " + h + " BONV " + (Math.abs((BonV - - // BonVold) / BonV))); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10) && iterations < 100); - - /* - * if (Math.abs(h) > 1e-8) { if (phasetype == 0) { molarVolume(pressure, temperature, A, B, - * 1); } else { molarVolume(pressure, temperature, A, B, 0); } return getMolarVolume(); } - */ - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolumeChangePhase", - "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); + if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; + } else { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } + } - return getMolarVolume(); - } - - /** {@inheritDoc} */ - @Override - public double molarVolume2(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - Z = phase == 0 ? 1.0 : 1.0e-5; - setMolarVolume(Z * R * temperature / pressure); - // super.molarVolume(pressure,temperature, A, B, phase); - int iterations = 0; - double err = 0.0, dErrdV = 0.0; - double deltaV = 0; - - do { - A = calcA(this, temperature, pressure, numberOfComponents); - B = calcB(this, temperature, pressure, numberOfComponents); - - double dFdV = dFdV(), dFdVdV = dFdVdV(); - // double dFdVdVdV = dFdVdVdV(); - // double factor1 = 1.0e0, factor2 = 1.0e0; - err = -R * temperature * dFdV + R * temperature / getMolarVolume() - pressure; - - // System.out.println("pressure " + -R * temperature * dFdV + " " + R * - // temperature / getMolarVolume()); - // -pressure; - dErrdV = -R * temperature * dFdVdV - - R * temperature * numberOfMolesInPhase / Math.pow(getVolume(), 2.0); - - // System.out.println("errdV " + dErrdV); - // System.out.println("err " + err); - deltaV = -err / dErrdV; - - setMolarVolume(getMolarVolume() + deltaV / numberOfMolesInPhase); - - Z = pressure * getMolarVolume() / (R * temperature); - if (Z < 0) { - Z = 1e-6; - setMolarVolume(Z * R * temperature / pressure); - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); - // System.out.println("Z " + Z); - } while (Math.abs(err) > 1.0e-8 || iterations < 100); - // System.out.println("Z " + Z); - return getMolarVolume(); - } + // System.out.println("Z " + Z + "h " + h + " BONV " + (Math.abs((BonV - + // BonVold) / BonV))); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10) && iterations < 100); - /** {@inheritDoc} */ - @Override - public double getGcpav() { - return gcpav; - } - - /** - *

- * Setter for the field gcpav. - *

- * - * @param gcpav a double + /* + * if (Math.abs(h) > 1e-8) { if (pt == 0) { molarVolume(pressure, temperature, A, B, 1); } else + * { molarVolume(pressure, temperature, A, B, 0); } return getMolarVolume(); } */ - public void setGcpav(double gcpav) { - this.gcpav = gcpav; - } - - /** {@inheritDoc} */ - @Override - public CPAMixingInterface getCpamix() { - return cpamix; + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolumeChangePhase", + "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } - /** {@inheritDoc} */ - @Override - public double calcPressure() { - gcpa = calc_g(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - solveX(); - hcpatot = calc_hCPA(); - - initCPAMatrix(1); - return super.calcPressure(); + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double molarVolume2(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + Z = pt == PhaseType.LIQUID ? 1.0 : 1.0e-5; + setMolarVolume(Z * R * temperature / pressure); + // super.molarVolume(pressure,temperature, A, B, phase); + int iterations = 0; + double err = 0.0; + double dErrdV = 0.0; + double deltaV = 0; + + do { + A = calcA(this, temperature, pressure, numberOfComponents); + B = calcB(this, temperature, pressure, numberOfComponents); + + double dFdV = dFdV(); + double dFdVdV = dFdVdV(); + // double dFdVdVdV = dFdVdVdV(); + // double factor1 = 1.0e0, factor2 = 1.0e0; + err = -R * temperature * dFdV + R * temperature / getMolarVolume() - pressure; + + // System.out.println("pressure " + -R * temperature * dFdV + " " + R * + // temperature / getMolarVolume()); + // -pressure; + dErrdV = -R * temperature * dFdVdV + - R * temperature * numberOfMolesInPhase / Math.pow(getVolume(), 2.0); + + // System.out.println("errdV " + dErrdV); + // System.out.println("err " + err); + deltaV = -err / dErrdV; + + setMolarVolume(getMolarVolume() + deltaV / numberOfMolesInPhase); + + Z = pressure * getMolarVolume() / (R * temperature); + if (Z < 0) { + Z = 1e-6; + setMolarVolume(Z * R * temperature / pressure); + } + + // System.out.println("Z " + Z); + } while (Math.abs(err) > 1.0e-8 || iterations < 100); + // System.out.println("Z " + Z); + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double getGcpav() { + return gcpav; + } + + /** + *

+ * Setter for the field gcpav. + *

+ * + * @param gcpav a double + */ + public void setGcpav(double gcpav) { + this.gcpav = gcpav; + } + + /** {@inheritDoc} */ + @Override + public CPAMixingInterface getCpamix() { + return cpamix; + } + + /** {@inheritDoc} */ + @Override + public double calcPressure() { + gcpa = calc_g(); + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + solveX(); + hcpatot = calc_hCPA(); + + initCPAMatrix(1); + return super.calcPressure(); + } + + /** {@inheritDoc} */ + @Override + public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { + if (comp1 == comp2) { + return selfAccociationScheme[comp1][site1][site2]; + } else { + return crossAccociationScheme[comp1][comp2][site1][site2]; } - - /** {@inheritDoc} */ - @Override - public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { - if (comp1 == comp2) { - return selfAccociationScheme[comp1][site1][site2]; - } else { - return crossAccociationScheme[comp1][comp2][site1][site2]; + } + + /** + *

+ * croeneckerProduct. + *

+ * + * @param a an array of type double + * @param b an array of type double + * @return an array of type double + */ + public double[][] croeneckerProduct(double[][] a, double[][] b) { + int aLength = a.length; + int aCols = a[0].length; + int bLength = b.length; + int bCols = b[0].length; + double[][] result = new double[aLength * bLength][(aCols) * (bCols)]; + for (int z = 0; z < aLength; z++) { + for (int i = 0; i < aCols; i++) { + for (int j = 0; j < bLength; j++) { + for (int k = 0; k < bCols; k++) { + result[j + (z * bLength)][k + (i * bCols)] = a[z][i] * b[j][k]; + } } + } } - /** - *

- * croeneckerProduct. - *

- * - * @param a an array of {@link double} objects - * @param b an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[][] croeneckerProduct(double[][] a, double[][] b) { - int aLength = a.length; - int aCols = a[0].length; - int bLength = b.length; - int bCols = b[0].length; - double[][] result = new double[aLength * bLength][(aCols) * (bCols)]; - for (int z = 0; z < aLength; z++) { - for (int i = 0; i < aCols; i++) { - for (int j = 0; j < bLength; j++) { - for (int k = 0; k < bCols; k++) { - result[j + (z * bLength)][k + (i * bCols)] = a[z][i] * b[j][k]; - } - } - } - } + return result; + } - return result; - } + /** {@inheritDoc} */ + @Override + public int getTotalNumberOfAccociationSites() { + return totalNumberOfAccociationSites; + } - /** {@inheritDoc} */ - @Override - public int getTotalNumberOfAccociationSites() { - return totalNumberOfAccociationSites; - } - - /** {@inheritDoc} */ - @Override - public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { - this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; - } + /** {@inheritDoc} */ + @Override + public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { + this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseSrkCPAs.java b/src/main/java/neqsim/thermo/phase/PhaseSrkCPAs.java index fad2788724..ad925d9155 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseSrkCPAs.java +++ b/src/main/java/neqsim/thermo/phase/PhaseSrkCPAs.java @@ -13,83 +13,82 @@ * @version $Id: $Id */ public class PhaseSrkCPAs extends PhaseSrkCPA { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseSrkCPAs. - *

- */ - public PhaseSrkCPAs() { - super(); - } + /** + *

+ * Constructor for PhaseSrkCPAs. + *

+ */ + public PhaseSrkCPAs() { + super(); + } - /** {@inheritDoc} */ - @Override - public PhaseSrkCPAs clone() { - PhaseSrkCPAs clonedPhase = null; - try { - clonedPhase = (PhaseSrkCPAs) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseSrkCPAs clone() { + PhaseSrkCPAs clonedPhase = null; + try { + clonedPhase = (PhaseSrkCPAs) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + return clonedPhase; + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentSrkCPAs(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentSrkCPAs(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public double calc_g() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double g = 1.0 / (1.0 - x); - // System.out.println("g " + g); - return g; - } + /** {@inheritDoc} */ + @Override + public double calc_g() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double g = 1.0 / (1.0 - x); + // System.out.println("g " + g); + return g; + } - /** {@inheritDoc} */ - @Override - public double calc_lngV() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double gv = (x / getTotalVolume()) / (1.0 - x); - return -gv; - } + /** {@inheritDoc} */ + @Override + public double calc_lngV() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double gv = (x / getTotalVolume()) / (1.0 - x); + return -gv; + } - /** {@inheritDoc} */ - @Override - public double calc_lngVV() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double xV = -1.9 / 4.0 * getB() / (getTotalVolume() * getTotalVolume()); - double u = 1.0 - x; + /** {@inheritDoc} */ + @Override + public double calc_lngVV() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double xV = -1.9 / 4.0 * getB() / (getTotalVolume() * getTotalVolume()); + double u = 1.0 - x; - double val = -x / (getTotalVolume() * getTotalVolume() * u) + xV / (getTotalVolume() * u) - - x / (getTotalVolume() * u * u) * (-1.0) * xV; - return -val; + double val = -x / (getTotalVolume() * getTotalVolume() * u) + xV / (getTotalVolume() * u) + - x / (getTotalVolume() * u * u) * (-1.0) * xV; + return -val; - // double gvv - // =0.225625/Math.pow(1.0-0.475*getB()/getTotalVolume(),2.0)*Math.pow(getB(),2.0)/(Math.pow(getTotalVolume(),4.0))+0.95/(1.0-0.475*getB()/getTotalVolume())*getB()/(Math.pow(getTotalVolume(),3.0)); - // System.out.println("val2 " + gvv); - // return gvv; - } + // double gvv + // =0.225625/Math.pow(1.0-0.475*getB()/getTotalVolume(),2.0)*Math.pow(getB(),2.0)/(Math.pow(getTotalVolume(),4.0))+0.95/(1.0-0.475*getB()/getTotalVolume())*getB()/(Math.pow(getTotalVolume(),3.0)); + // System.out.println("val2 " + gvv); + // return gvv; + } - /** {@inheritDoc} */ - @Override - public double calc_lngVVV() { - double totVol = getTotalVolume(); - double totVol4 = totVol * totVol * totVol * totVol; - double totVol5 = totVol4 * totVol; + /** {@inheritDoc} */ + @Override + public double calc_lngVVV() { + double totVol = getTotalVolume(); + double totVol4 = totVol * totVol * totVol * totVol; + double totVol5 = totVol4 * totVol; - double temp1 = 1.0 - 0.475 * getB() / getTotalVolume(); - double gvv = -0.21434375 / (temp1 * temp1 * temp1) * getB() * getB() * getB() - / (totVol5 * totVol) - 0.135375E1 / (temp1 * temp1) * getB() * getB() / (totVol5) - - 0.285E1 / (temp1) * getB() / (totVol4); - return gvv; - } + double temp1 = 1.0 - 0.475 * getB() / getTotalVolume(); + double gvv = + -0.21434375 / (temp1 * temp1 * temp1) * getB() * getB() * getB() / (totVol5 * totVol) + - 0.135375E1 / (temp1 * temp1) * getB() * getB() / (totVol5) + - 0.285E1 / (temp1) * getB() / (totVol4); + return gvv; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseSrkCPAsOld.java b/src/main/java/neqsim/thermo/phase/PhaseSrkCPAsOld.java index 2f805c9f76..dfe7a9fdd4 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseSrkCPAsOld.java +++ b/src/main/java/neqsim/thermo/phase/PhaseSrkCPAsOld.java @@ -11,83 +11,82 @@ * @version $Id: $Id */ public class PhaseSrkCPAsOld extends PhaseSrkCPAs { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseSrkCPAsOld. - *

- */ - public PhaseSrkCPAsOld() { - super(); - } + /** + *

+ * Constructor for PhaseSrkCPAsOld. + *

+ */ + public PhaseSrkCPAsOld() { + super(); + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentSrkCPAs(componentName, moles, molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentSrkCPAs(name, moles, molesInPhase, compNumber); + } - /** {@inheritDoc} */ - @Override - public PhaseSrkCPAsOld clone() { - PhaseSrkCPAsOld clonedPhase = null; - try { - clonedPhase = (PhaseSrkCPAsOld) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseSrkCPAsOld clone() { + PhaseSrkCPAsOld clonedPhase = null; + try { + clonedPhase = (PhaseSrkCPAsOld) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + return clonedPhase; + } - /** {@inheritDoc} */ - @Override - public double calc_g() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double g = 1.0 / (1.0 - x); - // System.out.println("g " + g); - return g; - } + /** {@inheritDoc} */ + @Override + public double calc_g() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double g = 1.0 / (1.0 - x); + // System.out.println("g " + g); + return g; + } - /** {@inheritDoc} */ - @Override - public double calc_lngV() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double gv = (x / getTotalVolume()) / (1.0 - x); - return -gv; - } + /** {@inheritDoc} */ + @Override + public double calc_lngV() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double gv = (x / getTotalVolume()) / (1.0 - x); + return -gv; + } - /** {@inheritDoc} */ - @Override - public double calc_lngVV() { - double x = 1.9 / 4.0 * getB() / getTotalVolume(); - double xV = -1.9 / 4.0 * getB() / (getTotalVolume() * getTotalVolume()); - double u = 1.0 - x; + /** {@inheritDoc} */ + @Override + public double calc_lngVV() { + double x = 1.9 / 4.0 * getB() / getTotalVolume(); + double xV = -1.9 / 4.0 * getB() / (getTotalVolume() * getTotalVolume()); + double u = 1.0 - x; - double val = -x / (getTotalVolume() * getTotalVolume() * u) + xV / (getTotalVolume() * u) - - x / (getTotalVolume() * u * u) * (-1.0) * xV; - return -val; + double val = -x / (getTotalVolume() * getTotalVolume() * u) + xV / (getTotalVolume() * u) + - x / (getTotalVolume() * u * u) * (-1.0) * xV; + return -val; - // double gvv - // =0.225625/Math.pow(1.0-0.475*getB()/getTotalVolume(),2.0)*Math.pow(getB(),2.0)/(Math.pow(getTotalVolume(),4.0))+0.95/(1.0-0.475*getB()/getTotalVolume())*getB()/(Math.pow(getTotalVolume(),3.0)); - // System.out.println("val2 " + gvv); - // return gvv; - } + // double gvv + // =0.225625/Math.pow(1.0-0.475*getB()/getTotalVolume(),2.0)*Math.pow(getB(),2.0)/(Math.pow(getTotalVolume(),4.0))+0.95/(1.0-0.475*getB()/getTotalVolume())*getB()/(Math.pow(getTotalVolume(),3.0)); + // System.out.println("val2 " + gvv); + // return gvv; + } - /** {@inheritDoc} */ - @Override - public double calc_lngVVV() { - double totVol = getTotalVolume(); - double totVol4 = totVol * totVol * totVol * totVol; - double totVol5 = totVol4 * totVol; + /** {@inheritDoc} */ + @Override + public double calc_lngVVV() { + double totVol = getTotalVolume(); + double totVol4 = totVol * totVol * totVol * totVol; + double totVol5 = totVol4 * totVol; - double temp1 = 1.0 - 0.475 * getB() / getTotalVolume(); - double gvv = -0.21434375 / (temp1 * temp1 * temp1) * getB() * getB() * getB() - / (totVol5 * totVol) - 0.135375E1 / (temp1 * temp1) * getB() * getB() / (totVol5) - - 0.285E1 / (temp1) * getB() / (totVol4); - return gvv; - } + double temp1 = 1.0 - 0.475 * getB() / getTotalVolume(); + double gvv = + -0.21434375 / (temp1 * temp1 * temp1) * getB() * getB() * getB() / (totVol5 * totVol) + - 0.135375E1 / (temp1 * temp1) * getB() * getB() / (totVol5) + - 0.285E1 / (temp1) * getB() / (totVol4); + return gvv; + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseSrkEos.java b/src/main/java/neqsim/thermo/phase/PhaseSrkEos.java index 794a457562..a6aa1e5b8a 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseSrkEos.java +++ b/src/main/java/neqsim/thermo/phase/PhaseSrkEos.java @@ -3,6 +3,7 @@ * * Created on 3. juni 2000, 14:38 */ + package neqsim.thermo.phase; import neqsim.thermo.component.ComponentSrk; @@ -16,43 +17,40 @@ * @version $Id: $Id */ public class PhaseSrkEos extends PhaseEos { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for PhaseSrkEos. - *

- */ - public PhaseSrkEos() { - super(); - // mixRule = mixSelect.getMixingRule(2); - thermoPropertyModelName = "SRK-EoS"; - uEOS = 1; - wEOS = 0; - delta1 = 1; - delta2 = 0; - } + private static final long serialVersionUID = 1000; - /** {@inheritDoc} */ - @Override - public PhaseSrkEos clone() { - PhaseSrkEos clonedPhase = null; - try { - clonedPhase = (PhaseSrkEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for PhaseSrkEos. + *

+ */ + public PhaseSrkEos() { + super(); + // mixRule = mixSelect.getMixingRule(2); + thermoPropertyModelName = "SRK-EoS"; + uEOS = 1; + wEOS = 0; + delta1 = 1; + delta2 = 0; + } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseSrkEos clone() { + PhaseSrkEos clonedPhase = null; + try { + clonedPhase = (PhaseSrkEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentSrk(componentName, moles, molesInPhase, compNumber); - } -} + return clonedPhase; + } + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentSrk(name, moles, molesInPhase, compNumber); + } +} diff --git a/src/main/java/neqsim/thermo/phase/PhaseSrkPenelouxEos.java b/src/main/java/neqsim/thermo/phase/PhaseSrkPenelouxEos.java index 2bca595ddc..5221925e54 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseSrkPenelouxEos.java +++ b/src/main/java/neqsim/thermo/phase/PhaseSrkPenelouxEos.java @@ -11,36 +11,34 @@ * @version $Id: $Id */ public class PhaseSrkPenelouxEos extends PhaseSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseSrkPenelouxEos. - *

- */ - public PhaseSrkPenelouxEos() { - super(); - } - - /** {@inheritDoc} */ - @Override - public PhaseSrkPenelouxEos clone() { - PhaseSrkPenelouxEos clonedPhase = null; - try { - clonedPhase = (PhaseSrkPenelouxEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for PhaseSrkPenelouxEos. + *

+ */ + public PhaseSrkPenelouxEos() { + super(); + } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseSrkPenelouxEos clone() { + PhaseSrkPenelouxEos clonedPhase = null; + try { + clonedPhase = (PhaseSrkPenelouxEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentSrkPeneloux(componentName, moles, molesInPhase, compNumber); - } + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentSrkPeneloux(name, moles, molesInPhase, compNumber); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseTSTEos.java b/src/main/java/neqsim/thermo/phase/PhaseTSTEos.java index 2c06060f74..16b0fd8a7c 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseTSTEos.java +++ b/src/main/java/neqsim/thermo/phase/PhaseTSTEos.java @@ -11,40 +11,38 @@ * @version $Id: $Id */ public class PhaseTSTEos extends PhaseEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseTSTEos. - *

- */ - public PhaseTSTEos() { - super(); - uEOS = 2.5; - wEOS = -1.5; - delta1 = 1.0 + Math.sqrt(2.0); - delta2 = 1.0 - Math.sqrt(2.0); - } - - /** {@inheritDoc} */ - @Override - public PhaseTSTEos clone() { - PhaseTSTEos clonedPhase = null; - try { - clonedPhase = (PhaseTSTEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for PhaseTSTEos. + *

+ */ + public PhaseTSTEos() { + super(); + uEOS = 2.5; + wEOS = -1.5; + delta1 = 1.0 + Math.sqrt(2.0); + delta2 = 1.0 - Math.sqrt(2.0); + } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseTSTEos clone() { + PhaseTSTEos clonedPhase = null; + try { + clonedPhase = (PhaseTSTEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentTST(componentName, moles, molesInPhase, compNumber); - } + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentTST(name, moles, molesInPhase, compNumber); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseType.java b/src/main/java/neqsim/thermo/phase/PhaseType.java new file mode 100644 index 0000000000..d3dce468d7 --- /dev/null +++ b/src/main/java/neqsim/thermo/phase/PhaseType.java @@ -0,0 +1,100 @@ +package neqsim.thermo.phase; + +import neqsim.util.exception.InvalidInputException; + +/** + * Types of phases. + * + * @author ASMF + */ +public enum PhaseType { + LIQUID("liquid", 0), GAS("gas", 1), OIL("oil", 2), AQUEOUS("aqueous", 3), HYDRATE("hydrate", + 4), WAX("wax", 5), SOLID("solid", 6), SOLIDCOMPLEX("solidComplex", 7); + + /** Holder for old style integer pt. */ + private final int value; + /** Holder for old style string phasetypename. */ + private final String desc; + + // We know we'll never mutate this, so we can keep + // a local copy for fast lookup in forName + private static final PhaseType[] copyOfValues = values(); + + /** + * Constructor for PhaseType enum. + * + * @param desc Single word descriptor of phase type + * @param value Numeric value index for phase type + */ + private PhaseType(String desc, int value) { + this.desc = desc; + this.value = value; + } + + /** + * Getter for property value. + * + * @return Numeric index of phase type + */ + @Deprecated + public int getValue() { + return this.value; + } + + /** + * Getter for property desc. + * + * @return Single word descriptor for phase type. + */ + public String getDesc() { + return this.desc; + } + + /** + * Get PhaseType by name. + * + * @param name Name to get PhaseType for. + * @return PhaseType object + */ + public static PhaseType byName(String name) { + for (PhaseType pt : copyOfValues) { + if (pt.name().equals(name)) { + return pt; + } + } + throw new RuntimeException( + new InvalidInputException("PhaseType", "byName", "name", "is not valid.")); + } + + /** + * Get PhaseType by desc. + * + * @param desc Description to get PhaseType for. + * @return PhaseType object. + */ + public static PhaseType byDesc(String desc) { + for (PhaseType pt : copyOfValues) { + if (pt.getDesc().equals(desc)) { + return pt; + } + } + throw new RuntimeException( + new InvalidInputException("PhaseType", "byDesc", "desc", "is not valid.")); + } + + /** + * Get PhaseType by value. + * + * @param value Value to get PhaseType for. + * @return PhaseType object + */ + public static PhaseType byValue(int value) { + for (PhaseType pt : copyOfValues) { + if (pt.getValue() == (value)) { + return pt; + } + } + throw new RuntimeException( + new InvalidInputException("PhaseType", "byValue", "value", "is not valid.")); + } +} diff --git a/src/main/java/neqsim/thermo/phase/PhaseUMRCPA.java b/src/main/java/neqsim/thermo/phase/PhaseUMRCPA.java index 558effcbf7..f96a292ea4 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseUMRCPA.java +++ b/src/main/java/neqsim/thermo/phase/PhaseUMRCPA.java @@ -21,2100 +21,2127 @@ * @version $Id: $Id */ public class PhaseUMRCPA extends PhasePrEos implements PhaseCPAInterface { - /** - *

- * Getter for the field dFdNtemp. - *

- * - * @return the dFdNtemp - */ - public double[] getdFdNtemp() { - return dFdNtemp; - } - - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(PhaseUMRCPA.class); - - public CPAMixing cpaSelect = new CPAMixing(); - public CPAMixingInterface cpamix; - double gcpavv = 0.0, gcpavvv = 0.0, gcpa = 0.0, hcpatot = 1.0, FCPA = 0.0, dFCPAdTdV, - dFCPAdTdT = 0.0, dFCPAdT = 0, dFCPAdV = 0, dFCPAdVdV = 0.0, dFCPAdVdVdV = 0.0; - double gcpav = 0.0, tempTotVol = 0; - private double[] dFdNtemp = {0, 0}; - int cpaon = 1, oldTotalNumberOfAccociationSites = 0; - int totalNumberOfAccociationSites = 0; - int[][][] selfAccociationScheme = null; - int[][][][] crossAccociationScheme = null; - int[] activeAccosComp = null;// new int[100]; - private double[] lngi; - int[] moleculeNumber = null, assSiteNumber = null; - private double[][] gvector = null, delta = null, deltaNog = null, deltadT = null, - deltadTdT = null; - double[][][] Klkni = null; - private SimpleMatrix KlkTVMatrix = null, KlkTTMatrix = null, KlkTMatrix = null, - udotTimesmMatrix = null, mVector = null, udotMatrix = null, uMatrix = null, - QMatksiksiksi = null, KlkVVVMatrix = null, KlkVVMatrix = null, udotTimesmiMatrix = null, - ksiMatrix = null, KlkMatrix = null, hessianMatrix = null, hessianInvers = null, - KlkVMatrix = null; - private DMatrixRMaj corr2Matrix = null, corr3Matrix = null, corr4Matrix = null;// new - // DenseMatrix64F(getTotalNumberOfAccociationSites(), - // 1); - - /** - *

- * Constructor for PhaseUMRCPA. - *

- */ - public PhaseUMRCPA() { - super(); - thermoPropertyModelName = "UMR-CPA-EoS"; - } - - /** {@inheritDoc} */ - @Override - public PhaseUMRCPA clone() { - PhaseUMRCPA clonedPhase = null; - try { - clonedPhase = (PhaseUMRCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - if (activeAccosComp != null) { - clonedPhase.activeAccosComp = activeAccosComp.clone(); - System.arraycopy(this.activeAccosComp, 0, clonedPhase.activeAccosComp, 0, - activeAccosComp.length); + /** + *

+ * Getter for the field dFdNtemp. + *

+ * + * @return the dFdNtemp + */ + public double[] getdFdNtemp() { + return dFdNtemp; + } + + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PhaseUMRCPA.class); + + public CPAMixing cpaSelect = new CPAMixing(); + public CPAMixingInterface cpamix; + double gcpavv = 0.0; + double gcpavvv = 0.0; + double gcpa = 0.0; + double hcpatot = 1.0; + double FCPA = 0.0; + double dFCPAdTdV; + double dFCPAdTdT = 0.0; + double dFCPAdT = 0; + double dFCPAdV = 0; + double dFCPAdVdV = 0.0; + double dFCPAdVdVdV = 0.0; + double gcpav = 0.0; + double tempTotVol = 0; + private double[] dFdNtemp = {0, 0}; + int cpaon = 1; + int oldTotalNumberOfAccociationSites = 0; + int totalNumberOfAccociationSites = 0; + int[][][] selfAccociationScheme = null; + int[][][][] crossAccociationScheme = null; + int[] activeAccosComp = null; // new int[100]; + private double[] lngi; + int[] moleculeNumber = null; + int[] assSiteNumber = null; + private double[][] gvector = null; + private double[][] delta = null; + private double[][] deltaNog = null; + private double[][] deltadT = null; + private double[][] deltadTdT = null; + double[][][] Klkni = null; + private SimpleMatrix KlkTVMatrix = null; + private SimpleMatrix KlkTTMatrix = null; + private SimpleMatrix KlkTMatrix = null; + private SimpleMatrix udotTimesmMatrix = null; + private SimpleMatrix mVector = null; + private SimpleMatrix udotMatrix = null; + private SimpleMatrix uMatrix = null; + private SimpleMatrix QMatksiksiksi = null; + private SimpleMatrix KlkVVVMatrix = null; + private SimpleMatrix KlkVVMatrix = null; + private SimpleMatrix udotTimesmiMatrix = null; + private SimpleMatrix ksiMatrix = null; + private SimpleMatrix KlkMatrix = null; + private SimpleMatrix hessianMatrix = null; + private SimpleMatrix hessianInvers = null; + private SimpleMatrix KlkVMatrix = null; + private DMatrixRMaj corr2Matrix = null; + private DMatrixRMaj corr3Matrix = null; + private DMatrixRMaj corr4Matrix = null; + + /** + *

+ * Constructor for PhaseUMRCPA. + *

+ */ + public PhaseUMRCPA() { + super(); + thermoPropertyModelName = "UMR-CPA-EoS"; + } + + /** {@inheritDoc} */ + @Override + public PhaseUMRCPA clone() { + PhaseUMRCPA clonedPhase = null; + try { + clonedPhase = (PhaseUMRCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); + } + if (activeAccosComp != null) { + clonedPhase.activeAccosComp = activeAccosComp.clone(); + System.arraycopy(this.activeAccosComp, 0, clonedPhase.activeAccosComp, 0, + activeAccosComp.length); + } + // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); + // clonedPhase.cpamix = (CPAMixingInterface) cpamix.clone(); + // clonedPhase.cpamix = cpaSelect.getMixingRule(1, this); + + return clonedPhase; + } + + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + boolean changedAssosiationStatus = false; + + if (initType == 0) { + activeAccosComp = new int[numberOfComponents]; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getNumberOfmoles() < 1e-50) { + componentArray[i].setNumberOfAssociationSites(0); + if (activeAccosComp[i] == 1) { + activeAccosComp[i] = 0; + changedAssosiationStatus = true; + } + } else { + if (activeAccosComp[i] == 0) { + changedAssosiationStatus = true; + activeAccosComp[i] = 1; + } } - // clonedPhase.cpaSelect = (CPAMixing) cpaSelect.clone(); - // clonedPhase.cpamix = (CPAMixingInterface) cpamix.clone(); - // clonedPhase.cpamix = cpaSelect.getMixingRule(1, this); - - return clonedPhase; - } - - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - boolean changedAssosiationStatus = false; - - if (type == 0) { - activeAccosComp = new int[numberOfComponents]; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getNumberOfmoles() < 1e-50) { - componentArray[i].setNumberOfAssociationSites(0); - if (activeAccosComp[i] == 1) { - activeAccosComp[i] = 0; - changedAssosiationStatus = true; - } - } else { - if (activeAccosComp[i] == 0) { - changedAssosiationStatus = true; - activeAccosComp[i] = 1; - } - } - } - - if (changedAssosiationStatus || lngi == null) { - setTotalNumberOfAccociationSites(0); - selfAccociationScheme = new int[numberOfComponents][0][0]; - crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getNumberOfmoles() < 1e-50) { - componentArray[i].setNumberOfAssociationSites(0); - } else { - componentArray[i].setNumberOfAssociationSites( - componentArray[i].getOrginalNumberOfAssociationSites()); - setTotalNumberOfAccociationSites(getTotalNumberOfAccociationSites() - + componentArray[i].getNumberOfAssociationSites()); - selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); - for (int j = 0; j < numberOfComponents; j++) { - crossAccociationScheme[i][j] = - cpaSelect.setCrossAssociationScheme(i, j, this); - } - } - } - } + } - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - ((ComponentUMRCPA) componentArray[i]).setXsite(j, 1.0); - ((ComponentUMRCPA) componentArray[i]).setXsitedV(j, 0.0); - ((ComponentUMRCPA) componentArray[i]).setXsitedT(j, 0.0); - } - } - - if (changedAssosiationStatus || lngi == null || mVector == null) { - lngi = new double[numberOfComponents]; - mVector = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - KlkMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - hessianMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - Klkni = new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - ksiMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - uMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - udotMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - moleculeNumber = new int[getTotalNumberOfAccociationSites()]; - assSiteNumber = new int[getTotalNumberOfAccociationSites()]; - gvector = new double[getTotalNumberOfAccociationSites()][1]; - udotTimesmMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltaNog = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadTdT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - QMatksiksiksi = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - udotTimesmiMatrix = - new SimpleMatrix(numberOfComponents, getTotalNumberOfAccociationSites()); - - oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); - - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - moleculeNumber[temp + j] = i; - assSiteNumber[temp + j] = j; - } - temp += componentArray[i].getNumberOfAssociationSites(); - } + if (changedAssosiationStatus || lngi == null) { + setTotalNumberOfAccociationSites(0); + selfAccociationScheme = new int[numberOfComponents][0][0]; + crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getNumberOfmoles() < 1e-50) { + componentArray[i].setNumberOfAssociationSites(0); + } else { + componentArray[i].setNumberOfAssociationSites( + componentArray[i].getOrginalNumberOfAssociationSites()); + setTotalNumberOfAccociationSites(getTotalNumberOfAccociationSites() + + componentArray[i].getNumberOfAssociationSites()); + selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); + for (int j = 0; j < numberOfComponents; j++) { + crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); } - } + } + } + } + + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + ((ComponentUMRCPA) componentArray[i]).setXsite(j, 1.0); + ((ComponentUMRCPA) componentArray[i]).setXsitedV(j, 0.0); + ((ComponentUMRCPA) componentArray[i]).setXsitedT(j, 0.0); + } + } + + if (changedAssosiationStatus || lngi == null || mVector == null) { + lngi = new double[numberOfComponents]; + mVector = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + KlkMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkVVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + hessianMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + KlkTVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), + getTotalNumberOfAccociationSites()); + corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + Klkni = + new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + ksiMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + uMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + udotMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + moleculeNumber = new int[getTotalNumberOfAccociationSites()]; + assSiteNumber = new int[getTotalNumberOfAccociationSites()]; + gvector = new double[getTotalNumberOfAccociationSites()][1]; + udotTimesmMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltaNog = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadT = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadTdT = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + QMatksiksiksi = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + udotTimesmiMatrix = + new SimpleMatrix(numberOfComponents, getTotalNumberOfAccociationSites()); + + oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); - if (cpamix == null) { - cpamix = cpaSelect.getMixingRule(1, this); - } - if (type > 0) { - calcDelta(); + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + moleculeNumber[temp + j] = i; + assSiteNumber[temp + j] = j; + } + temp += componentArray[i].getNumberOfAssociationSites(); } + } + } - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); + if (cpamix == null) { + cpamix = cpaSelect.getMixingRule(1, this); + } + if (initType > 0) { + calcDelta(); + } - if (type > 0 && isConstantPhaseVolume()) { - solveX(); - super.init(totalNumberOfMoles, numberOfComponents, 1, phase, beta); - gcpa = calc_g(); - gcpav = calc_lngV(); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - } + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); - if (type > 0) { - hcpatot = calc_hCPA(); - } + if (initType > 0 && isConstantPhaseVolume()) { + solveX(); + super.init(totalNumberOfMoles, numberOfComponents, 1, pt, beta); + gcpa = calc_g(); + gcpav = calc_lngV(); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + } - if (type > 1) { - initCPAMatrix(type); - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } + if (initType > 0) { + hcpatot = calc_hCPA(); } - /** - *

- * initCPAMatrix. - *

- * - * @param type a int - */ - public void initCPAMatrix(int type) { - if (totalNumberOfAccociationSites == 0) { - FCPA = 0.0; - dFCPAdTdV = 0.0; - dFCPAdTdT = 0.0; - dFCPAdT = 0; - dFCPAdV = 0; - dFCPAdVdV = 0.0; - dFCPAdVdVdV = 0.0; - return; - } + if (initType > 1) { + initCPAMatrix(initType); + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + } + } + + /** + *

+ * initCPAMatrix. + *

+ * + * @param type a int + */ + public void initCPAMatrix(int type) { + if (totalNumberOfAccociationSites == 0) { + FCPA = 0.0; + dFCPAdTdV = 0.0; + dFCPAdTdT = 0.0; + dFCPAdT = 0; + dFCPAdV = 0; + dFCPAdVdV = 0.0; + dFCPAdVdVdV = 0.0; + return; + } - int temp = 0; - double tempVar1, tempVar2; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - tempVar1 = ksiMatrix.get(temp + j, 0); - tempVar2 = udotMatrix.get(temp + j, 0); - uMatrix.set(temp + j, 0, Math.log(tempVar1) - tempVar1 + 1.0); - gvector[temp + j][0] = mVector.get(temp + j, 0) * tempVar2; - - if (moleculeNumber[temp + j] == i) { - udotTimesmiMatrix.set(i, temp + j, tempVar2); - } else { - udotTimesmiMatrix.set(i, temp + j, 0.0); - } - } - temp += componentArray[i].getNumberOfAssociationSites(); + int temp = 0; + double tempVar1; + double tempVar2; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + tempVar1 = ksiMatrix.get(temp + j, 0); + tempVar2 = udotMatrix.get(temp + j, 0); + uMatrix.set(temp + j, 0, Math.log(tempVar1) - tempVar1 + 1.0); + gvector[temp + j][0] = mVector.get(temp + j, 0) * tempVar2; + + if (moleculeNumber[temp + j] == i) { + udotTimesmiMatrix.set(i, temp + j, tempVar2); + } else { + udotTimesmiMatrix.set(i, temp + j, 0.0); } + } + temp += componentArray[i].getNumberOfAssociationSites(); + } - if (type > 2) { - for (int p = 0; p < numberOfComponents; p++) { - lngi[p] = ((ComponentUMRCPA) componentArray[p]).calc_lngi(this); - } - } + if (type > 2) { + for (int p = 0; p < numberOfComponents; p++) { + lngi[p] = ((ComponentUMRCPA) componentArray[p]).calc_lngi(this); + } + } - for (int i = 0; i < totalNumberOfAccociationSites; i++) { - for (int j = i; j < totalNumberOfAccociationSites; j++) { - delta[i][j] = deltaNog[i][j] * gcpa; - delta[j][i] = delta[i][j]; - if (type > 1) { - deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadT[j][i] = deltadT[i][j]; - - deltadTdT[i][j] = cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadTdT[j][i] = deltadTdT[i][j]; - } - } - } + for (int i = 0; i < totalNumberOfAccociationSites; i++) { + for (int j = i; j < totalNumberOfAccociationSites; j++) { + delta[i][j] = deltaNog[i][j] * gcpa; + delta[j][i] = delta[i][j]; + if (type > 1) { + deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadT[j][i] = deltadT[i][j]; - double totalVolume = getTotalVolume(); - double totalVolume2 = totalVolume * totalVolume, totalVolume3 = totalVolume2 * totalVolume; - double gdv1 = getGcpav() - 1.0 / totalVolume; - double gdv2 = gdv1 * gdv1; - double gdv3 = gdv2 * gdv1; - double Klk = 0.0; - double tempVar; - double tempKsiRead = 0.0; - for (int i = 0; i < totalNumberOfAccociationSites; i++) { - for (int j = i; j < totalNumberOfAccociationSites; j++) { - Klk = KlkMatrix.get(i, j); - tempVar = Klk * gdv1; - KlkVMatrix.set(i, j, tempVar); - KlkVMatrix.set(j, i, tempVar); - - tempVar = Klk * gdv2 + Klk * (gcpavv + 1.0 / totalVolume2); - KlkVVMatrix.set(i, j, tempVar); - KlkVVMatrix.set(j, i, tempVar); - - tempVar = Klk * gdv3 - + 3.0 * Klk * (gcpav - 1.0 / totalVolume) * (gcpavv + 1.0 / (totalVolume2)) - + Klk * (gcpavvv - 2.0 / (totalVolume3)); - KlkVVVMatrix.set(i, j, tempVar); - KlkVVVMatrix.set(j, i, tempVar); - - if (type > 1) { - tempVar = deltadT[i][j] / delta[i][j]; - - if (Math.abs(tempVar) > 1e-50) { - double tempVardT = deltadTdT[i][j] / delta[i][j] - - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - - tempVar2 = Klk * tempVar; - KlkTMatrix.set(i, j, tempVar2); - KlkTMatrix.set(j, i, tempVar2); - - tempVar2 = Klk * tempVar * (gcpav - 1.0 / totalVolume); - KlkTVMatrix.set(i, j, tempVar2); - KlkTVMatrix.set(j, i, tempVar2); - - tempVar2 = Klk * (tempVar * tempVar + tempVardT); - KlkTTMatrix.set(i, j, tempVar2); - KlkTTMatrix.set(j, i, tempVar2); - } - - if (type > 2) { - for (int p = 0; p < numberOfComponents; p++) { - double t1 = 0.0, t2 = 0.0; - if (moleculeNumber[i] == p) { - t1 = 1.0 / mVector.get(i, 0); - } - if (moleculeNumber[j] == p) { - t2 = 1.0 / mVector.get(j, 0); - } - Klkni[p][i][j] = Klk * (t1 + t2 + lngi[p]);// ((ComponentSrkCPA) - // getComponent(p)).calc_lngi(this)); - Klkni[p][j][i] = Klkni[p][i][j]; - } - } - } - } - tempKsiRead = ksiMatrix.get(i, 0); - QMatksiksiksi.set(i, 0, - 2.0 * mVector.get(i, 0) / (tempKsiRead * tempKsiRead * tempKsiRead)); + deltadTdT[i][j] = + cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadTdT[j][i] = deltadTdT[i][j]; } + } + } - SimpleMatrix ksiMatrixTranspose = ksiMatrix.transpose(); - - // dXdV - SimpleMatrix KlkVMatrixksi = KlkVMatrix.mult(ksiMatrix); - SimpleMatrix XV = hessianInvers.mult(KlkVMatrixksi); - SimpleMatrix XVtranspose = XV.transpose(); + double totalVolume = getTotalVolume(); + double totalVolume2 = totalVolume * totalVolume; + double totalVolume3 = totalVolume2 * totalVolume; + double gdv1 = getGcpav() - 1.0 / totalVolume; + double gdv2 = gdv1 * gdv1; + double gdv3 = gdv2 * gdv1; + double Klk = 0.0; + double tempVar; + double tempKsiRead = 0.0; + for (int i = 0; i < totalNumberOfAccociationSites; i++) { + for (int j = i; j < totalNumberOfAccociationSites; j++) { + Klk = KlkMatrix.get(i, j); + tempVar = Klk * gdv1; + KlkVMatrix.set(i, j, tempVar); + KlkVMatrix.set(j, i, tempVar); + + tempVar = Klk * gdv2 + Klk * (gcpavv + 1.0 / totalVolume2); + KlkVVMatrix.set(i, j, tempVar); + KlkVVMatrix.set(j, i, tempVar); + + tempVar = + Klk * gdv3 + 3.0 * Klk * (gcpav - 1.0 / totalVolume) * (gcpavv + 1.0 / (totalVolume2)) + + Klk * (gcpavvv - 2.0 / (totalVolume3)); + KlkVVVMatrix.set(i, j, tempVar); + KlkVVVMatrix.set(j, i, tempVar); - FCPA = mVector.transpose().mult(uMatrix.minus(ksiMatrix.elementMult(udotMatrix).scale(0.5))) - .get(0, 0);// QCPA.get(0, - // 0);//*0.5; + if (type > 1) { + tempVar = deltadT[i][j] / delta[i][j]; - dFCPAdV = ksiMatrixTranspose.mult(KlkVMatrixksi).get(0, 0) * (-0.5); - SimpleMatrix KlkVVMatrixTImesKsi = KlkVVMatrix.mult(ksiMatrix); - dFCPAdVdV = ksiMatrixTranspose.mult(KlkVVMatrixTImesKsi).scale(-0.5) - .minus(KlkVMatrixksi.transpose().mult(XV)).get(0, 0); + if (Math.abs(tempVar) > 1e-50) { + double tempVardT = deltadTdT[i][j] / delta[i][j] + - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - SimpleMatrix QVVV = ksiMatrixTranspose.mult(KlkVVVMatrix.mult(ksiMatrix));// .scale(-0.5); - SimpleMatrix QVVksi = KlkVVMatrixTImesKsi.scale(-1.0); - SimpleMatrix QksiVksi = KlkVMatrix.scale(-1.0); + tempVar2 = Klk * tempVar; + KlkTMatrix.set(i, j, tempVar2); + KlkTMatrix.set(j, i, tempVar2); - dFCPAdVdVdV = -0.5 * QVVV.get(0, 0) + QVVksi.transpose().mult(XV).get(0, 0) * 3.0 - + XVtranspose.mult(QksiVksi.mult(XV)).get(0, 0) * 3.0 - + XVtranspose.mult(QMatksiksiksi.mult(XVtranspose)).mult(XV).get(0, 0); + tempVar2 = Klk * tempVar * (gcpav - 1.0 / totalVolume); + KlkTVMatrix.set(i, j, tempVar2); + KlkTVMatrix.set(j, i, tempVar2); - if (type == 1) { - return; - } + tempVar2 = Klk * (tempVar * tempVar + tempVardT); + KlkTTMatrix.set(i, j, tempVar2); + KlkTTMatrix.set(j, i, tempVar2); + } - temp = 0; - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); + if (type > 2) { + for (int p = 0; p < numberOfComponents; p++) { + double t1 = 0.0; + double t2 = 0.0; + if (moleculeNumber[i] == p) { + t1 = 1.0 / mVector.get(i, 0); + } + if (moleculeNumber[j] == p) { + t2 = 1.0 / mVector.get(j, 0); + } + Klkni[p][i][j] = Klk * (t1 + t2 + lngi[p]); // ((ComponentSrkCPA) + // getComponent(p)).calc_lngi(this)); + Klkni[p][j][i] = Klkni[p][i][j]; } - temp += getComponent(p).getNumberOfAssociationSites(); + } } + } + tempKsiRead = ksiMatrix.get(i, 0); + QMatksiksiksi.set(i, 0, 2.0 * mVector.get(i, 0) / (tempKsiRead * tempKsiRead * tempKsiRead)); + } - // KlkTMatrix = new SimpleMatrix(KlkdT); - SimpleMatrix KlkTMatrixTImesKsi = KlkTMatrix.mult(ksiMatrix); - // dQdT - SimpleMatrix tempMatrix2 = ksiMatrixTranspose.mult(KlkTMatrixTImesKsi);// .scale(-0.5); - dFCPAdT = tempMatrix2.get(0, 0) * (-0.5); - - // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); - // SimpleMatrix tempMatrixTV = - // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - // dFCPAdTdV = tempMatrixTV.get(0, 0); - // dXdT - SimpleMatrix XT = hessianInvers.mult(KlkTMatrixTImesKsi); - // dQdTdT - SimpleMatrix tempMatrixTT = ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5) - .minus(KlkTMatrixTImesKsi.transpose().mult(XT)); - dFCPAdTdT = tempMatrixTT.get(0, 0); - - SimpleMatrix tempMatrixTV = ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5) - .minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - dFCPAdTdV = tempMatrixTV.get(0, 0); - - temp = 0; - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); - } + SimpleMatrix ksiMatrixTranspose = ksiMatrix.transpose(); - if (type == 2) { - return; - } + // dXdV + SimpleMatrix KlkVMatrixksi = KlkVMatrix.mult(ksiMatrix); + SimpleMatrix XV = hessianInvers.mult(KlkVMatrixksi); + SimpleMatrix XVtranspose = XV.transpose(); - // int assSites = 0; - // if(true) return; - for (int p = 0; p < numberOfComponents; p++) { - SimpleMatrix KiMatrix = new SimpleMatrix(Klkni[p]); - // KiMatrix.print(10,10); - // Matrix dQdniMatrix = - // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this - // methods misses one part of .... - // dQdniMatrix.print(10,10); - // KiMatrix.print(10, 10); - // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - - // 1).print(10, 10); - // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - - // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5));// - // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); - // System.out.println("dQdn "); - // tempMatrix20.print(10, 10); - SimpleMatrix tempMatrix4 = KiMatrix.mult(ksiMatrix); - // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - 1).print(10, 10); - SimpleMatrix tempMatrix5 = - udotTimesmiMatrix.extractVector(true, p).transpose().minus(tempMatrix4); - // tempMki[0] = mki[p]; - // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, - // udotMatrix.getArray())); - // System.out.println("aMatrix "); - // amatrix.transpose().print(10, 10); - // System.out.println("temp4 matrix"); - // tempMatrix4.print(10, 10); - // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); - SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5);// .scale(-1.0); - // System.out.println("dXdni"); - // tempMatrix4.print(10, 10); - // tempMatrix5.print(10, 10); - // System.out.println("dXdn "); - // tempMatrix6.print(10, 10); - int temp2 = 0; - for (int compp = 0; compp < numberOfComponents; compp++) { - for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, - -1.0 * tempMatrix6.get(temp2 + kk, 0)); - } - temp2 += getComponent(compp).getNumberOfAssociationSites(); - } - // assSites += getComponent(p).getNumberOfAssociationSites(); - } - } - - /** {@inheritDoc} */ - @Override - public void setMixingRule(int type) { - super.setMixingRule(type); - cpamix = cpaSelect.getMixingRule(1, this); - } + FCPA = mVector.transpose().mult(uMatrix.minus(ksiMatrix.elementMult(udotMatrix).scale(0.5))) + .get(0, 0); // QCPA.get(0, + // 0); //*0.5; - /** - *

- * calcDelta. - *

- */ - public void calcDelta() { - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - deltaNog[i][j] = cpamix.calcDeltaNog(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), getPressure(), - numberOfComponents); - deltaNog[j][i] = deltaNog[i][j]; - } - } - } + dFCPAdV = ksiMatrixTranspose.mult(KlkVMatrixksi).get(0, 0) * (-0.5); + SimpleMatrix KlkVVMatrixTImesKsi = KlkVVMatrix.mult(ksiMatrix); + dFCPAdVdV = ksiMatrixTranspose.mult(KlkVVMatrixTImesKsi).scale(-0.5) + .minus(KlkVMatrixksi.transpose().mult(XV)).get(0, 0); - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double moles, double molesInPhase, - int compNumber) { - super.addcomponent(componentName, moles, molesInPhase, compNumber); - componentArray[compNumber] = - new ComponentUMRCPA(componentName, moles, molesInPhase, compNumber); - } + SimpleMatrix QVVV = ksiMatrixTranspose.mult(KlkVVVMatrix.mult(ksiMatrix)); // .scale(-0.5); + SimpleMatrix QVVksi = KlkVVMatrixTImesKsi.scale(-1.0); + SimpleMatrix QksiVksi = KlkVMatrix.scale(-1.0); - /** {@inheritDoc} */ - @Override - public double getF() { - return super.getF() + cpaon * FCPA(); - } + dFCPAdVdVdV = -0.5 * QVVV.get(0, 0) + QVVksi.transpose().mult(XV).get(0, 0) * 3.0 + + XVtranspose.mult(QksiVksi.mult(XV)).get(0, 0) * 3.0 + + XVtranspose.mult(QMatksiksiksi.mult(XVtranspose)).mult(XV).get(0, 0); - /** {@inheritDoc} */ - @Override - public double dFdT() { - return super.dFdT() + cpaon * dFCPAdT(); + if (type == 1) { + return; } - /** {@inheritDoc} */ - @Override - public double dFdTdV() { - return super.dFdTdV() + cpaon * dFCPAdTdV(); + temp = 0; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** {@inheritDoc} */ - @Override - public double dFdV() { - double dv2 = dFCPAdV(); - return super.dFdV() + cpaon * dv2; + // KlkTMatrix = new SimpleMatrix(KlkdT); + SimpleMatrix KlkTMatrixTImesKsi = KlkTMatrix.mult(ksiMatrix); + // dQdT + SimpleMatrix tempMatrix2 = ksiMatrixTranspose.mult(KlkTMatrixTImesKsi); // .scale(-0.5); + dFCPAdT = tempMatrix2.get(0, 0) * (-0.5); + + // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); + // SimpleMatrix tempMatrixTV = + // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + // dFCPAdTdV = tempMatrixTV.get(0, 0); + // dXdT + SimpleMatrix XT = hessianInvers.mult(KlkTMatrixTImesKsi); + // dQdTdT + SimpleMatrix tempMatrixTT = ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5) + .minus(KlkTMatrixTImesKsi.transpose().mult(XT)); + dFCPAdTdT = tempMatrixTT.get(0, 0); + + SimpleMatrix tempMatrixTV = ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5) + .minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + dFCPAdTdV = tempMatrixTV.get(0, 0); + + temp = 0; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - // @Override - /** {@inheritDoc} */ - @Override - public double dFdVdV() { - return super.dFdVdV() + cpaon * dFCPAdVdV(); + if (type == 2) { + return; } - /** {@inheritDoc} */ - @Override - public double dFdVdVdV() { - return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); + // int assSites = 0; + // if(true) return; + for (int p = 0; p < numberOfComponents; p++) { + SimpleMatrix KiMatrix = new SimpleMatrix(Klkni[p]); + // KiMatrix.print(10,10); + // Matrix dQdniMatrix = + // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this + // methods misses one part of .... + // dQdniMatrix.print(10,10); + // KiMatrix.print(10, 10); + // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - + // 1).print(10, 10); + // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - + // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); + // // + // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); + // System.out.println("dQdn "); + // tempMatrix20.print(10, 10); + SimpleMatrix tempMatrix4 = KiMatrix.mult(ksiMatrix); + // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - 1).print(10, 10); + SimpleMatrix tempMatrix5 = + udotTimesmiMatrix.extractVector(true, p).transpose().minus(tempMatrix4); + // tempMki[0] = mki[p]; + // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, + // udotMatrix.getArray())); + // System.out.println("aMatrix "); + // amatrix.transpose().print(10, 10); + // System.out.println("temp4 matrix"); + // tempMatrix4.print(10, 10); + // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); + SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5); // .scale(-1.0); + // System.out.println("dXdni"); + // tempMatrix4.print(10, 10); + // tempMatrix5.print(10, 10); + // System.out.println("dXdn "); + // tempMatrix6.print(10, 10); + int temp2 = 0; + for (int compp = 0; compp < numberOfComponents; compp++) { + for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, + -1.0 * tempMatrix6.get(temp2 + kk, 0)); + } + temp2 += getComponent(compp).getNumberOfAssociationSites(); + } + // assSites += getComponent(p).getNumberOfAssociationSites(); } - - /** {@inheritDoc} */ - @Override - public double dFdTdT() { - return super.dFdTdT() + cpaon * dFCPAdTdT(); + } + + /** {@inheritDoc} */ + @Override + public void setMixingRule(int type) { + super.setMixingRule(type); + cpamix = cpaSelect.getMixingRule(1, this); + } + + /** + *

+ * calcDelta. + *

+ */ + public void calcDelta() { + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + deltaNog[i][j] = cpamix.calcDeltaNog(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltaNog[j][i] = deltaNog[i][j]; + } } - - /** - *

- * FCPA. - *

- * - * @return a double - */ - public double FCPA() { - /* - * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = - * 0.0; for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { double - * xai = ((ComponentSrkCPA) componentArray[i]).getXsite()[j]; tot += (Math.log(xai) - 1.0 / - * 2.0 * xai + 1.0 / 2.0); } ans += componentArray[i].getNumberOfMolesInPhase() * tot; } - * return ans; - */ - return FCPA; - } - - /** - *

- * dFCPAdV. - *

- * - * @return a double - */ - public double dFCPAdV() { - // return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) - // * hcpatot; - return dFCPAdV; - } - - /** - *

- * dFCPAdVdV. - *

- * - * @return a double - */ - public double dFCPAdVdV() { - // double sum1 = -1.0 / 2.0 * gcpavv * hcpatot; - // return -1.0 / getTotalVolume() * dFCPAdV() + sum1; - return dFCPAdVdV; - } - - /** - *

- * dFCPAdVdVdV. - *

- * - * @return a double + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, moles, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentUMRCPA(name, moles, molesInPhase, compNumber); + } + + /** {@inheritDoc} */ + @Override + public double getF() { + return super.getF() + cpaon * FCPA(); + } + + /** {@inheritDoc} */ + @Override + public double dFdT() { + return super.dFdT() + cpaon * dFCPAdT(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdV() { + return super.dFdTdV() + cpaon * dFCPAdTdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdV() { + double dv2 = dFCPAdV(); + return super.dFdV() + cpaon * dv2; + } + + // @Override + /** {@inheritDoc} */ + @Override + public double dFdVdV() { + return super.dFdVdV() + cpaon * dFCPAdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdVdVdV() { + return super.dFdVdVdV() + cpaon * dFCPAdVdVdV(); + } + + /** {@inheritDoc} */ + @Override + public double dFdTdT() { + return super.dFdTdT() + cpaon * dFCPAdTdT(); + } + + /** + *

+ * FCPA. + *

+ * + * @return a double + */ + public double FCPA() { + /* + * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = 0.0; + * for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { double xai = + * ((ComponentSrkCPA) componentArray[i]).getXsite()[j]; tot += (Math.log(xai) - 1.0 / 2.0 * xai + * + 1.0 / 2.0); } ans += componentArray[i].getNumberOfMolesInPhase() * tot; } return ans; */ - public double dFCPAdVdVdV() { - return dFCPAdVdVdV; - // return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / - // Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - hcpatot / (2.0 * - // Math.pow(getTotalVolume(), 2.0)) * (-getGcpav() - getTotalVolume() * gcpavv) - // + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv - // - gcpavv); - } - - /** - *

- * dFCPAdT. - *

- * - * @return a double + return FCPA; + } + + /** + *

+ * dFCPAdV. + *

+ * + * @return a double + */ + public double dFCPAdV() { + // return 1.0 / (2.0 * getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) + // * hcpatot; + return dFCPAdV; + } + + /** + *

+ * dFCPAdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdV() { + // double sum1 = -1.0 / 2.0 * gcpavv * hcpatot; + // return -1.0 / getTotalVolume() * dFCPAdV() + sum1; + return dFCPAdVdV; + } + + /** + *

+ * dFCPAdVdVdV. + *

+ * + * @return a double + */ + public double dFCPAdVdVdV() { + return dFCPAdVdVdV; + // return -1.0 / getTotalVolume() * dFCPAdVdV() + 1.0 / + // Math.pow(getTotalVolume(), 2.0) * dFCPAdV() - hcpatot / (2.0 * + // Math.pow(getTotalVolume(), 2.0)) * (-getGcpav() - getTotalVolume() * gcpavv) + // + hcpatot / (2.0 * getTotalVolume()) * (-gcpavv - getTotalVolume() * gcpavvv + // - gcpavv); + } + + /** + *

+ * dFCPAdT. + *

+ * + * @return a double + */ + public double dFCPAdT() { + /* + * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = 0.0; + * for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { double xai = + * ((ComponentSrkCPA) componentArray[i]).getXsite()[j]; double xaidT = ((ComponentSrkCPA) + * componentArray[i]).getXsitedT()[j]; tot += 1.0 / xai * xaidT - 0.5 * xaidT; // - 1.0 / 2.0 * + * xai + 1.0 / 2.0); } ans += componentArray[i].getNumberOfMolesInPhase() * tot; } + * System.out.println("dFCPAdT1 " + ans + " dfcpa2 " +dFCPAdT); return ans; */ - public double dFCPAdT() { - /* - * double tot = 0.0; double ans = 0.0; for (int i = 0; i < numberOfComponents; i++) { tot = - * 0.0; for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { double - * xai = ((ComponentSrkCPA) componentArray[i]).getXsite()[j]; double xaidT = - * ((ComponentSrkCPA) componentArray[i]).getXsitedT()[j]; tot += 1.0 / xai * xaidT - 0.5 * - * xaidT;// - 1.0 / 2.0 * xai + 1.0 / 2.0); } ans += - * componentArray[i].getNumberOfMolesInPhase() * tot; } System.out.println("dFCPAdT1 " + - * ans + " dfcpa2 " +dFCPAdT); return ans; - */ - return dFCPAdT; - } - - /** - *

- * dFCPAdTdT. - *

- * - * @return a double + return dFCPAdT; + } + + /** + *

+ * dFCPAdTdT. + *

+ * + * @return a double + */ + public double dFCPAdTdT() { + return dFCPAdTdT; + } + + /** + *

+ * dFCPAdTdV. + *

+ * + * @return a double + */ + public double dFCPAdTdV() { + // System.out.println("dFCPAdTdV1 " + dFCPAdTdV + " dFCPAdTdV " +( 1.0 / (2.0 * + // getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatotdT)); + return dFCPAdTdV; + /* + * if (totalNumberOfAccociationSites > 0) { return 1.0 / (2.0 * getTotalVolume()) * (1.0 - + * getTotalVolume() * getGcpav()) * hcpatotdT; } else { return 0; } */ - public double dFCPAdTdT() { - return dFCPAdTdT; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + + if (BonV < 0) { + BonV = 1.0e-8; } - /** - *

- * dFCPAdTdV. - *

- * - * @return a double - */ - public double dFCPAdTdV() { - // System.out.println("dFCPAdTdV1 " + dFCPAdTdV + " dFCPAdTdV " +( 1.0 / (2.0 * - // getTotalVolume()) * (1.0 - getTotalVolume() * getGcpav()) * hcpatotdT)); - return dFCPAdTdV; - /* - * if (totalNumberOfAccociationSites > 0) { return 1.0 / (2.0 * getTotalVolume()) * (1.0 - - * getTotalVolume() * getGcpav()) * hcpatotdT; } else { return 0; } - */ - } - - /** {@inheritDoc} */ - @Override - public double molarVolume(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - - if (BonV < 0) { - BonV = 1.0e-8; - } - - if (BonV >= 1.0) { - BonV = 0.9999; - } - double BonVold; - double BonV2; - double h = 0, dh = 0, dhh = 0; - double d1 = 0, d2 = 0; - double Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); - } - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - int maxIterations = 300; - do { - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } - - // lngcpa = - // Math.log(gcpa); - gcpav = calc_lngV(); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); + if (BonV >= 1.0) { + BonV = 0.9999; + } + double BonVold; + double BonV2; + double h = 0; + double dh = 0; + double dhh = 0; + double d1 = 0; + double d2 = 0; + double Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); + } - if (totalNumberOfAccociationSites > 0) { - solveX(); - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; + int maxIterations = 300; + do { + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } - initCPAMatrix(1); - - BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 - // + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV += d2; - // double hnew = h + d2 * dh; - // if (Math.abs(hnew) > Math.abs(h)) { - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - // } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonV) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } - if (BonV < 0) { - if (iterations < 10) { - // System.out.println(iterations + " BonV " + BonV); - BonV = (BonVold + BonV) / 2.0; - } else { - return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - } - } + // lngcpa = + // Math.log(gcpa); + gcpav = calc_lngV(); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); - if (BonV >= 1.0) { - if (iterations < 10) { - BonV = (BonVold + BonV) / 2.0; - } else { - return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - } - } - /* - * if (BonV > 0.9999) { if (iterations < 10) { BonV = (BonVold + BonV) / 2.0; } else { - * // BonV = calcRootVolFinder(phasetype); // BonV = molarVolumeChangePhase(pressure, - * temperature, A, B, phasetype); // BonV = 0.9999; // BonV = phasetype == 1 ? 2.0 / - * (2.0 + temperature / getPseudoCriticalTemperature()) : pressure * getB() / - * (numberOfMolesInPhase * temperature * R); } - * - * } else if (BonV < 0) { if (iterations < 10) { BonV = Math.abs(BonVold + BonV) / 2.0; - * } else { // BonV = calcRootVolFinder(phasetype); // return - * molarVolumeChangePhase(pressure, temperature, A, B, phasetype); // BonV = phasetype - * == 1 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) : pressure * getB() - * / (numberOfMolesInPhase * temperature * R); } } - */ - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) - && iterations < maxIterations); - - // System.out.println("h failed " + h + " Z" + Z + " iterations " + iterations + - // " BonV " + BonV); - // if (Math.abs(h) > 1e-12) { - // System.out.println("h failed " + h + " Z" + Z + " iterations " + iterations + - // " BonV " + BonV); - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); + if (totalNumberOfAccociationSites > 0) { + solveX(); + } + + initCPAMatrix(1); + + BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 + // + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV += d2; + // double hnew = h + d2 * dh; + // if (Math.abs(hnew) > Math.abs(h)) { + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); // } - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonV) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + if (BonV < 0) { + if (iterations < 10) { + // System.out.println(iterations + " BonV " + BonV); + BonV = (BonVold + BonV) / 2.0; + } else { + return molarVolumeChangePhase(pressure, temperature, A, B, pt); } - dFdNtemp = calcdFdNtemp(); - return getMolarVolume(); - } + } - /** - * @return double[] - */ - double[] calcdFdNtemp() { - double tot1 = 0.0, tot2 = 0.0, tot3 = 0.0, tot4 = 0.0; - // double temp, temp2; - for (int k = 0; k < getNumberOfComponents(); k++) { - tot2 = 0.0; - tot3 = 0.0; - // temp = ((ComponentSrkCPA) getComponent(k)).calc_lngi(this); - // temp2 = ((ComponentSrkCPA) getComponent(k)).calc_lngidV(this); - for (int i = 0; i < getComponent(k).getNumberOfAssociationSites(); i++) { - tot2 -= 1.0 * ((ComponentUMRCPA) getComponent(k)).getXsitedV()[i]; - tot3 += (1.0 - ((ComponentUMRCPA) getComponent(k)).getXsite()[i]) * 1.0; - } - tot1 += 1.0 / 2.0 * tot2 * getComponent(k).getNumberOfMolesInPhase(); - tot4 += 0.5 * getComponent(k).getNumberOfMolesInPhase() * tot3; - } - return new double[] {-tot1, -tot4}; + if (BonV >= 1.0) { + if (iterations < 10) { + BonV = (BonVold + BonV) / 2.0; + } else { + return molarVolumeChangePhase(pressure, temperature, A, B, pt); + } + } + /* + * if (BonV > 0.9999) { if (iterations < 10) { BonV = (BonVold + BonV) / 2.0; } else { // BonV + * = calcRootVolFinder(pt); // BonV = molarVolumeChangePhase(pressure, temperature, A, B, pt); + * // BonV = 0.9999; // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + * getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * temperature * + * R); } } else if (BonV < 0) { if (iterations < 10) { BonV = Math.abs(BonVold + BonV) / 2.0; + * } else { // BonV = calcRootVolFinder(pt); // return molarVolumeChangePhase(pressure, + * temperature, A, B, pt); // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + * getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * temperature * + * R); } } + */ + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) + && iterations < maxIterations); + + // System.out.println("h failed " + h + " Z" + Z + " iterations " + iterations + + // " BonV " + BonV); + // if (Math.abs(h) > 1e-12) { + // System.out.println("h failed " + h + " Z" + Z + " iterations " + iterations + + // " BonV " + BonV); + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // } + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolume", "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } - - /** - *

- * calc_hCPA. - *

- * - * @return a double - */ - public double calc_hCPA() { - double htot = 0.0; - double tot = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - htot = 0.0; - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - htot += (1.0 - ((ComponentUMRCPA) componentArray[i]).getXsite()[j]); - } - tot += componentArray[i].getNumberOfMolesInPhase() * htot; - } - return tot; + dFdNtemp = calcdFdNtemp(); + return getMolarVolume(); + } + + /** + * calcdFdNtemp. + * + * @return double[] + */ + double[] calcdFdNtemp() { + double tot1 = 0.0; + double tot2 = 0.0; + double tot3 = 0.0; + double tot4 = 0.0; + // double temp, temp2; + for (int k = 0; k < getNumberOfComponents(); k++) { + tot2 = 0.0; + tot3 = 0.0; + // temp = ((ComponentSrkCPA) getComponent(k)).calc_lngi(this); + // temp2 = ((ComponentSrkCPA) getComponent(k)).calc_lngidV(this); + for (int i = 0; i < getComponent(k).getNumberOfAssociationSites(); i++) { + tot2 -= 1.0 * ((ComponentUMRCPA) getComponent(k)).getXsitedV()[i]; + tot3 += (1.0 - ((ComponentUMRCPA) getComponent(k)).getXsite()[i]) * 1.0; + } + tot1 += 1.0 / 2.0 * tot2 * getComponent(k).getNumberOfMolesInPhase(); + tot4 += 0.5 * getComponent(k).getNumberOfMolesInPhase() * tot3; } - - /** - *

- * calc_g. - *

- * - * @return a double - */ - public double calc_g() { - tempTotVol = getMolarVolume(); - double temp = 1.0 - getb() / 4.0 / tempTotVol; - return (2.0 - getb() / 4.0 / tempTotVol) / (2.0 * temp * temp * temp); - } - - /** - *

- * calc_lngV. - *

- * - * @return a double - */ - public double calc_lngV() { - tempTotVol = getMolarVolume(); - // gv = -2.0 * getB() * (10.0 * getTotalVolume() - getB()) / getTotalVolume() / - // ((8.0 * getTotalVolume() - getB()) * (4.0 * getTotalVolume() - getB())); - return 1.0 / (2.0 - getB() / (4.0 * tempTotVol)) * getB() / (4.0 * tempTotVol * tempTotVol) - - 3.0 / (1.0 - getB() / (4.0 * tempTotVol)) * getB() - / (4.0 * tempTotVol * tempTotVol); - } - - /** - *

- * calc_lngVV. - *

- * - * @return a double - */ - public double calc_lngVV() { - tempTotVol = getMolarVolume(); - return 2.0 - * (640.0 * Math.pow(tempTotVol, 3.0) - 216.0 * getB() * tempTotVol * tempTotVol - + 24.0 * Math.pow(getB(), 2.0) * tempTotVol - Math.pow(getB(), 3.0)) - * getB() / (tempTotVol * tempTotVol) / Math.pow(8.0 * tempTotVol - getB(), 2.0) - / Math.pow(4.0 * tempTotVol - getB(), 2.0); - } - - /** - *

- * calc_lngVVV. - *

- * - * @return a double - */ - public double calc_lngVVV() { - tempTotVol = getMolarVolume(); - return 4.0 - * (Math.pow(getB(), 5.0) + 17664.0 * Math.pow(tempTotVol, 4.0) * getB() - - 4192.0 * Math.pow(tempTotVol, 3.0) * Math.pow(getB(), 2.0) - + 528.0 * Math.pow(getB(), 3.0) * tempTotVol * tempTotVol - - 36.0 * tempTotVol * Math.pow(getB(), 4.0) - - 30720.0 * Math.pow(tempTotVol, 5.0)) - * getB() / (Math.pow(tempTotVol, 3.0)) / Math.pow(-8.0 * tempTotVol + getB(), 3.0) - / Math.pow(-4.0 * tempTotVol + getB(), 3.0); - } - - /** - *

- * calcXsitedV. - *

- */ - public void calcXsitedV() { - if (getTotalNumberOfAccociationSites() > 0) { - initCPAMatrix(1); - } + return new double[] {-tot1, -tot4}; + } + + /** + *

+ * calc_hCPA. + *

+ * + * @return a double + */ + public double calc_hCPA() { + double htot = 0.0; + double tot = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + htot = 0.0; + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + htot += (1.0 - ((ComponentUMRCPA) componentArray[i]).getXsite()[j]); + } + tot += componentArray[i].getNumberOfMolesInPhase() * htot; + } + return tot; + } + + /** + *

+ * calc_g. + *

+ * + * @return a double + */ + public double calc_g() { + tempTotVol = getMolarVolume(); + double temp = 1.0 - getb() / 4.0 / tempTotVol; + return (2.0 - getb() / 4.0 / tempTotVol) / (2.0 * temp * temp * temp); + } + + /** + *

+ * calc_lngV. + *

+ * + * @return a double + */ + public double calc_lngV() { + tempTotVol = getMolarVolume(); + // gv = -2.0 * getB() * (10.0 * getTotalVolume() - getB()) / getTotalVolume() / + // ((8.0 * getTotalVolume() - getB()) * (4.0 * getTotalVolume() - getB())); + return 1.0 / (2.0 - getB() / (4.0 * tempTotVol)) * getB() / (4.0 * tempTotVol * tempTotVol) + - 3.0 / (1.0 - getB() / (4.0 * tempTotVol)) * getB() / (4.0 * tempTotVol * tempTotVol); + } + + /** + *

+ * calc_lngVV. + *

+ * + * @return a double + */ + public double calc_lngVV() { + tempTotVol = getMolarVolume(); + return 2.0 + * (640.0 * Math.pow(tempTotVol, 3.0) - 216.0 * getB() * tempTotVol * tempTotVol + + 24.0 * Math.pow(getB(), 2.0) * tempTotVol - Math.pow(getB(), 3.0)) + * getB() / (tempTotVol * tempTotVol) / Math.pow(8.0 * tempTotVol - getB(), 2.0) + / Math.pow(4.0 * tempTotVol - getB(), 2.0); + } + + /** + *

+ * calc_lngVVV. + *

+ * + * @return a double + */ + public double calc_lngVVV() { + tempTotVol = getMolarVolume(); + return 4.0 + * (Math.pow(getB(), 5.0) + 17664.0 * Math.pow(tempTotVol, 4.0) * getB() + - 4192.0 * Math.pow(tempTotVol, 3.0) * Math.pow(getB(), 2.0) + + 528.0 * Math.pow(getB(), 3.0) * tempTotVol * tempTotVol + - 36.0 * tempTotVol * Math.pow(getB(), 4.0) - 30720.0 * Math.pow(tempTotVol, 5.0)) + * getB() / (Math.pow(tempTotVol, 3.0)) / Math.pow(-8.0 * tempTotVol + getB(), 3.0) + / Math.pow(-4.0 * tempTotVol + getB(), 3.0); + } + + /** + *

+ * calcXsitedV. + *

+ */ + public void calcXsitedV() { + if (getTotalNumberOfAccociationSites() > 0) { + initCPAMatrix(1); + } + } + + /** + *

+ * solveX. + *

+ * + * @return a boolean + */ + public boolean solveX() { + if (totalNumberOfAccociationSites == 0) { + return true; } - /** - *

- * solveX. - *

- * - * @return a boolean - */ - public boolean solveX() { - if (totalNumberOfAccociationSites == 0) { - return true; - } - - boolean solvedX = solveX2(15); - - DMatrixRMaj mVectorMat = mVector.getMatrix(); - DMatrixRMaj ksiMatrixMat = ksiMatrix.getMatrix(); - - // ksiMatrix.print(); - // second order method not working correctly and not used t the moment b ecause of numerical - // stability - int temp = 0, iter = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - mVectorMat.unsafe_set(temp + j, 0, componentArray[i].getNumberOfMolesInPhase()); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - - DMatrixRMaj mat1 = KlkMatrix.getMatrix(); - double Klk = 0.0; - double totvolume = getTotalVolume(); - double tempVari, tempVarj; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - tempVari = mVectorMat.unsafe_get(i, 0); - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - tempVarj = mVectorMat.unsafe_get(j, 0); - Klk = tempVari * tempVarj / totvolume * delta[i][j]; - mat1.unsafe_set(i, j, Klk); - mat1.unsafe_set(j, i, Klk); - } - } - boolean solved = true; - // SimpleMatrix corrMatrix = null; - do { - solved = true; - iter++; - temp = 0; - double ksi = 0; - - double temp1, temp2; - for (int i = 0; i < numberOfComponents; i++) { - temp1 = componentArray[i].getNumberOfMolesInPhase(); - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - ksi = ((ComponentUMRCPA) componentArray[i]).getXsite()[j]; - ksiMatrixMat.unsafe_set(temp + j, 0, ksi); - // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, - // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); - tempVari = 1.0 / ksi - 1.0; - udotMatrix.set(temp + j, 0, tempVari); - udotTimesmMatrix.set(temp + j, 0, temp1 * tempVari); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - - int krondelt; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - temp1 = mVectorMat.unsafe_get(i, 0); - temp2 = ksiMatrix.get(i, 0); - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - krondelt = 0; - if (i == j) { - krondelt = 1; - } - tempVari = -temp1 / (temp2 * temp2) * krondelt - mat1.unsafe_get(i, j); - hessianMatrix.set(i, j, tempVari); - hessianMatrix.set(j, i, tempVari); - } - } - - // ksiMatrix = new SimpleMatrix(ksi); - // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); - try { - hessianInvers = hessianMatrix.invert(); - } catch (Exception e) { - logger.error("error", e); - return false; - } - if (solvedX) { - // System.out.println("solvedX "); - return true; - } - - DMatrixRMaj mat2 = ksiMatrix.getMatrix(); - CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); - CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, corr3Matrix); - CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); - // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); - // corrMatrix = - // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)));//.scale(-1.0); - temp = 0; - // System.out.println("print SimpleMatrix ..."); - // corrMatrix.print(10, 10); - // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); - // System.out.println("print CommonOps ..."); - // simp.print(10,10); - double newX; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - newX = ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); - if (newX < 0) { - newX = 1e-10; - solved = false; - } - ((ComponentCPAInterface) componentArray[i]).setXsite(j, newX); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - // System.out.println("corrmatrix error " ); - // System.out.println("error " + NormOps_DDRM.normF(corr4Matrix)); - } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); + boolean solvedX = solveX2(15); + + DMatrixRMaj mVectorMat = mVector.getMatrix(); + DMatrixRMaj ksiMatrixMat = ksiMatrix.getMatrix(); + + // ksiMatrix.print(); + // second order method not working correctly and not used t the moment b ecause of numerical + // stability + int temp = 0; + int iter = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + mVectorMat.unsafe_set(temp + j, 0, componentArray[i].getNumberOfMolesInPhase()); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } - // System.out.println("iter " + iter + " error " + - // NormOps_DDRM.normF(corr4Matrix)); // corrMatrix.print(10, 10); - // ksiMatrix.print(10, 10); + DMatrixRMaj mat1 = KlkMatrix.getMatrix(); + double Klk = 0.0; + double totvolume = getTotalVolume(); + double tempVari; + double tempVarj; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + tempVari = mVectorMat.unsafe_get(i, 0); + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + tempVarj = mVectorMat.unsafe_get(j, 0); + Klk = tempVari * tempVarj / totvolume * delta[i][j]; + mat1.unsafe_set(i, j, Klk); + mat1.unsafe_set(j, i, Klk); + } + } + boolean solved = true; + // SimpleMatrix corrMatrix = null; + do { + solved = true; + iter++; + temp = 0; + double ksi = 0; + + double temp1; + double temp2; + for (int i = 0; i < numberOfComponents; i++) { + temp1 = componentArray[i].getNumberOfMolesInPhase(); + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + ksi = ((ComponentUMRCPA) componentArray[i]).getXsite()[j]; + ksiMatrixMat.unsafe_set(temp + j, 0, ksi); + // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, + // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); + tempVari = 1.0 / ksi - 1.0; + udotMatrix.set(temp + j, 0, tempVari); + udotTimesmMatrix.set(temp + j, 0, temp1 * tempVari); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + + int krondelt; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + temp1 = mVectorMat.unsafe_get(i, 0); + temp2 = ksiMatrix.get(i, 0); + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + krondelt = 0; + if (i == j) { + krondelt = 1; + } + tempVari = -temp1 / (temp2 * temp2) * krondelt - mat1.unsafe_get(i, j); + hessianMatrix.set(i, j, tempVari); + hessianMatrix.set(j, i, tempVari); + } + } + + // ksiMatrix = new SimpleMatrix(ksi); + // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); + try { + hessianInvers = hessianMatrix.invert(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return false; + } + if (solvedX) { + // System.out.println("solvedX "); return true; + } + + DMatrixRMaj mat2 = ksiMatrix.getMatrix(); + CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); + CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, corr3Matrix); + CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); + // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); + // corrMatrix = + // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix))); + // //.scale(-1.0); + temp = 0; + // System.out.println("print SimpleMatrix ..."); + // corrMatrix.print(10, 10); + // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); + // System.out.println("print CommonOps ..."); + // simp.print(10,10); + double newX; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + newX = ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); + if (newX < 0) { + newX = 1e-10; + solved = false; + } + ((ComponentCPAInterface) componentArray[i]).setXsite(j, newX); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + // System.out.println("corrmatrix error " ); + // System.out.println("error " + NormOps_DDRM.normF(corr4Matrix)); + } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); + + // System.out.println("iter " + iter + " error " + + // NormOps_DDRM.normF(corr4Matrix)); // corrMatrix.print(10, 10); + // ksiMatrix.print(10, 10); + return true; + } + + /** + *

+ * solveX2. + *

+ * + * @param maxIter a int + * @return a boolean + */ + public boolean solveX2(int maxIter) { + double err = .0; + double totalVolume = getTotalVolume(); + int iter = 0; + // if (delta == null) { + // initCPAMatrix(1); + double old = 0.0; + double neeval = 0.0; + // } + do { + iter++; + err = 0.0; + for (int i = 0; i < totalNumberOfAccociationSites; i++) { + old = ((ComponentUMRCPA) componentArray[moleculeNumber[i]]).getXsite()[assSiteNumber[i]]; + neeval = 0.0; + for (int j = 0; j < totalNumberOfAccociationSites; j++) { + neeval += componentArray[moleculeNumber[j]].getNumberOfMolesInPhase() * delta[i][j] + * ((ComponentUMRCPA) componentArray[moleculeNumber[j]]).getXsite()[assSiteNumber[j]]; + } + neeval = 1.0 / (1.0 + 1.0 / totalVolume * neeval); + ((ComponentUMRCPA) componentArray[moleculeNumber[i]]).setXsite(assSiteNumber[i], neeval); + err += Math.abs((old - neeval) / neeval); + } + } while (Math.abs(err) > 1e-12 && iter < maxIter); + // System.out.println("iter " + iter); + if (Math.abs(err) < 1e-12) { + return true; + } else { + // System.out.println("did not solve for Xi in iterations: " + iter); + // System.out.println("error: " + err); + return false; } - - /** - *

- * solveX2. - *

- * - * @param maxIter a int - * @return a boolean - */ - public boolean solveX2(int maxIter) { - double err = .0, totalVolume = getTotalVolume(); - int iter = 0; - // if (delta == null) { - // initCPAMatrix(1); - double old = 0.0, neeval = 0.0; - // } - do { - iter++; - err = 0.0; - for (int i = 0; i < totalNumberOfAccociationSites; i++) { - old = ((ComponentUMRCPA) componentArray[moleculeNumber[i]]) - .getXsite()[assSiteNumber[i]]; - neeval = 0.0; - for (int j = 0; j < totalNumberOfAccociationSites; j++) { - neeval += componentArray[moleculeNumber[j]].getNumberOfMolesInPhase() - * delta[i][j] * ((ComponentUMRCPA) componentArray[moleculeNumber[j]]) - .getXsite()[assSiteNumber[j]]; - } - neeval = 1.0 / (1.0 + 1.0 / totalVolume * neeval); - ((ComponentUMRCPA) componentArray[moleculeNumber[i]]).setXsite(assSiteNumber[i], - neeval); - err += Math.abs((old - neeval) / neeval); - } - } while (Math.abs(err) > 1e-12 && iter < maxIter); - // System.out.println("iter " + iter); - if (Math.abs(err) < 1e-12) { - return true; + } + + /** {@inheritDoc} */ + @Override + public double getHcpatot() { + return hcpatot; + } + + /** + * Setter for property hcpatot. + * + * @param hcpatot New value of property hcpatot. + */ + public void setHcpatot(double hcpatot) { + this.hcpatot = hcpatot; + } + + /** {@inheritDoc} */ + @Override + public double getGcpa() { + return gcpa; + } + + /** + *

+ * calcRootVolFinder. + *

+ * + * @param pt the PhaseType of the phase + * @return a double + */ + public double calcRootVolFinder(PhaseType pt) { + double solvedBonVHigh = 0.0; + double solvedBonVlow = 1.0; + double oldh = 1; + // double[][] matrix = new double[2][2000]; + double BonV = 1.0 - 1e-10; + try { + // molarVolume(pressure, temperature, A, B, pt); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + double BonVold = BonV; + double Btemp = 0; + double h = 1; + // double Dtemp = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0; + // double d1 = 0, d2 = 0; + Btemp = getB(); + // Dtemp = getA(); + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + for (int i = 0; i < 2000; i++) { + BonVold = BonV; + BonV = 1.0 - (i + 1e-6) * 1.0 / 2000.0; + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + gcpa = calc_g(); + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + do { + } while (!solveX()); + + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + + if (Math.signum(h) * Math.signum(oldh) < 0 && i > 2) { + if (solvedBonVlow < 1e-3) { + solvedBonVlow = (BonV + BonVold) / 2.0; + if (pt == PhaseType.GAS) { + break; + } } else { - // System.out.println("did not solve for Xi in iterations: " + iter); - // System.out.println("error: " + err); - return false; - } + solvedBonVHigh = (BonV + BonVold) / 2.0; + if (pt == PhaseType.LIQUID) { + break; + } + } + } + solvedBonVHigh = (BonV + BonVold) / 2.0; + oldh = h; + // matrix[0][i] = BonV; + // matrix[1][i] = h; } - - /** {@inheritDoc} */ - @Override - public double getHcpatot() { - return hcpatot; + if (solvedBonVlow < 1e-3) { + solvedBonVlow = solvedBonVHigh; } - - /** - * Setter for property hcpatot. - * - * @param hcpatot New value of property hcpatot. - */ - public void setHcpatot(double hcpatot) { - this.hcpatot = hcpatot; + // dataPresentation.fileHandeling.createTextFile.TextFile file = new + // dataPresentation.fileHandeling.createTextFile.TextFile(); + // file.setValues(matrix); + // file.setOutputFileName("D:/temp/temp2.txt"); + // file.createFile(); + if (pt == PhaseType.GAS) { + return solvedBonVlow; + } else { + return solvedBonVHigh; } - - /** {@inheritDoc} */ - @Override - public double getGcpa() { - return gcpa; + } + + /** + *

+ * molarVolumeChangePhase. + *

+ * + * @param pressure a double + * @param temperature a double + * @param A a double + * @param B a double + * @param pt the PhaseType of the phase + * @return a double + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double molarVolumeChangePhase(double pressure, double temperature, double A, double B, + PhaseType pt) throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + // double BonV = calcRootVolFinder(pt); + // double BonVInit = BonV; + if (BonV < 0) { + BonV = 1.0e-8; } - /** - *

- * calcRootVolFinder. - *

- * - * @param phase a int - * @return a double - */ - public double calcRootVolFinder(int phase) { - double solvedBonVHigh = 0.0; - double solvedBonVlow = 1.0; - double oldh = 1; - // double[][] matrix = new double[2][2000]; - double BonV = 1.0 - 1e-10; - try { - // molarVolume(pressure, temperature, A, B, phaseType); - } catch (Exception e) { - logger.error("error", e); - } - double BonVold = BonV; - double Btemp = 0, h = 1; - // double Dtemp = 0, dh = 0, gvvv = 0, fvvv = 0, dhh = 0; - // double d1 = 0, d2 = 0; - Btemp = getB(); - // Dtemp = getA(); - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - for (int i = 0; i < 2000; i++) { - BonVold = BonV; - BonV = 1.0 - (i + 1e-6) * 1.0 / 2000.0; - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - gcpa = calc_g(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - do { - } while (!solveX()); - - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - - if (Math.signum(h) * Math.signum(oldh) < 0 && i > 2) { - if (solvedBonVlow < 1e-3) { - solvedBonVlow = (BonV + BonVold) / 2.0; - if (phase == 1) { - break; - } - } else { - solvedBonVHigh = (BonV + BonVold) / 2.0; - if (phase == 0) { - break; - } - } - } - solvedBonVHigh = (BonV + BonVold) / 2.0; - oldh = h; - // matrix[0][i] = BonV; - // matrix[1][i] = h; - } - if (solvedBonVlow < 1e-3) { - solvedBonVlow = solvedBonVHigh; - } - // dataPresentation.fileHandeling.createTextFile.TextFile file = new - // dataPresentation.fileHandeling.createTextFile.TextFile(); - // file.setValues(matrix); - // file.setOutputFileName("D:/temp/temp2.txt"); - // file.createFile(); - if (phase == 1) { - return solvedBonVlow; - } else { - return solvedBonVHigh; - } + if (BonV >= 1.0) { + BonV = 0.9999; + } + double BonVold = BonV; + double Btemp = 0; + double h = 0; + double dh = 0; + double dhh = 0; + // double gvvv = 0, fvvv = 0; + double d1 = 0; + double d2 = 0; + Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); } + calcDelta(); - /** - *

- * molarVolumeChangePhase. - *

- * - * @param pressure a double - * @param temperature a double - * @param A a double - * @param B a double - * @param phasetype a int - * @return a double - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. - */ - public double molarVolumeChangePhase(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - // double BonV = calcRootVolFinder(phasetype); - // double BonVInit = BonV; - if (BonV < 0) { - BonV = 1.0e-8; - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - if (BonV >= 1.0) { - BonV = 0.9999; - } - double BonVold = BonV; - double Btemp = 0, h = 0, dh = 0, dhh = 0; - // double gvvv = 0, fvvv = 0; - double d1 = 0, d2 = 0; - Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); + do { + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } + + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + + solveX(); + + initCPAMatrix(1); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + } + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 1.1) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; + } else { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } - calcDelta(); - - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; - - do { - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } - - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - - solveX(); - - initCPAMatrix(1); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("d1" + d1 + " d2 " + d2 + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } - - if (BonV > 1.1) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } - - if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } + } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - - // System.out.println("Z " + Z + "h " + h + " BONV " + (Math.abs((BonV - - // BonVold) / BonV))); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10) && iterations < 100); - - /* - * if (Math.abs(h) > 1e-8) { if (phasetype == 0) { molarVolume(pressure, temperature, A, B, - * 1); } else { molarVolume(pressure, temperature, A, B, 0); } return getMolarVolume(); } - */ - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + getTotalVolume() + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B - // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolumeChangePhase", - "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); + if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; + } else { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); } + } - return getMolarVolume(); - } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); - /** {@inheritDoc} */ - @Override - public double getGcpav() { - return gcpav; - } + // System.out.println("Z " + Z + "h " + h + " BONV " + (Math.abs((BonV - + // BonVold) / BonV))); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10) && iterations < 100); - /** - *

- * Setter for the field gcpav. - *

- * - * @param gcpav a double + /* + * if (Math.abs(h) > 1e-8) { if (pt == 0) { molarVolume(pressure, temperature, A, B, 1); } else + * { molarVolume(pressure, temperature, A, B, 0); } return getMolarVolume(); } */ - public void setGcpav(double gcpav) { - this.gcpav = gcpav; + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + getTotalVolume() + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B + // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolumeChangePhase", + "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } - /** {@inheritDoc} */ - @Override - public CPAMixingInterface getCpamix() { - return cpamix; + return getMolarVolume(); + } + + /** {@inheritDoc} */ + @Override + public double getGcpav() { + return gcpav; + } + + /** + *

+ * Setter for the field gcpav. + *

+ * + * @param gcpav a double + */ + public void setGcpav(double gcpav) { + this.gcpav = gcpav; + } + + /** {@inheritDoc} */ + @Override + public CPAMixingInterface getCpamix() { + return cpamix; + } + + /** {@inheritDoc} */ + @Override + public double calcPressure() { + gcpa = calc_g(); + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); + solveX(); + hcpatot = calc_hCPA(); + + initCPAMatrix(1); + return super.calcPressure(); + } + + /** {@inheritDoc} */ + @Override + public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { + if (comp1 == comp2) { + return selfAccociationScheme[comp1][site1][site2]; + } else { + return crossAccociationScheme[comp1][comp2][site1][site2]; } - - /** {@inheritDoc} */ - @Override - public double calcPressure() { - gcpa = calc_g(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - solveX(); - hcpatot = calc_hCPA(); - - initCPAMatrix(1); - return super.calcPressure(); + } + + /** + *

+ * croeneckerProduct. + *

+ * + * @param a an array of type double + * @param b an array of type double + * @return an array of type double + */ + public double[][] croeneckerProduct(double[][] a, double[][] b) { + int aLength = a.length; + int aCols = a[0].length; + int bLength = b.length; + int bCols = b[0].length; + double[][] result = new double[aLength * bLength][(aCols) * (bCols)]; + for (int z = 0; z < aLength; z++) { + for (int i = 0; i < aCols; i++) { + for (int j = 0; j < bLength; j++) { + for (int k = 0; k < bCols; k++) { + result[j + (z * bLength)][k + (i * bCols)] = a[z][i] * b[j][k]; + } + } + } } - - /** {@inheritDoc} */ - @Override - public int getCrossAssosiationScheme(int comp1, int comp2, int site1, int site2) { - if (comp1 == comp2) { - return selfAccociationScheme[comp1][site1][site2]; + return result; + } + + /** {@inheritDoc} */ + @Override + public int getTotalNumberOfAccociationSites() { + return totalNumberOfAccociationSites; + } + + /** {@inheritDoc} */ + @Override + public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { + this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; + } + + /** + *

+ * initOld2. + *

+ * + * @param totalNumberOfMoles a double + * @param numberOfComponents a int + * @param type a int + * @param pt a int + * @param beta a double + */ + public void initOld2(double totalNumberOfMoles, int numberOfComponents, int type, PhaseType pt, + double beta) { + // type = 0 start init, type = 1 gi ny betingelser + if (type == 0) { + setTotalNumberOfAccociationSites(0); + selfAccociationScheme = new int[numberOfComponents][0][0]; + crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; + for (int i = 0; i < numberOfComponents; i++) { + if (componentArray[i].getNumberOfmoles() < 1e-50) { + componentArray[i].setNumberOfAssociationSites(0); } else { - return crossAccociationScheme[comp1][comp2][site1][site2]; - } + componentArray[i] + .setNumberOfAssociationSites(componentArray[i].getOrginalNumberOfAssociationSites()); + setTotalNumberOfAccociationSites( + getTotalNumberOfAccociationSites() + componentArray[i].getNumberOfAssociationSites()); + selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); + for (int j = 0; j < numberOfComponents; j++) { + crossAccociationScheme[i][j] = cpaSelect.setCrossAssociationScheme(i, j, this); + } + } + } + + // had to remove if below - dont understand why.. Even + // if (getTotalNumberOfAccociationSites() != oldTotalNumberOfAccociationSites) { + mVector = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + KlkMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkVMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkVVMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkVVVMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + hessianMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkTMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkTTMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + KlkTVMatrix = + new SimpleMatrix(getTotalNumberOfAccociationSites(), getTotalNumberOfAccociationSites()); + corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); + Klkni = + new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + ksiMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + uMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + udotMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + moleculeNumber = new int[getTotalNumberOfAccociationSites()]; + assSiteNumber = new int[getTotalNumberOfAccociationSites()]; + gvector = new double[getTotalNumberOfAccociationSites()][1]; + udotTimesmMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltaNog = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadT = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + deltadTdT = + new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; + QMatksiksiksi = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); + // } + udotTimesmiMatrix = + new SimpleMatrix(getNumberOfComponents(), getTotalNumberOfAccociationSites()); + + oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); + + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + moleculeNumber[temp + j] = i; + assSiteNumber[temp + j] = j; + } + temp += componentArray[i].getNumberOfAssociationSites(); + } } - - /** - *

- * croeneckerProduct. - *

- * - * @param a an array of {@link double} objects - * @param b an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[][] croeneckerProduct(double[][] a, double[][] b) { - int aLength = a.length; - int aCols = a[0].length; - int bLength = b.length; - int bCols = b[0].length; - double[][] result = new double[aLength * bLength][(aCols) * (bCols)]; - for (int z = 0; z < aLength; z++) { - for (int i = 0; i < aCols; i++) { - for (int j = 0; j < bLength; j++) { - for (int k = 0; k < bCols; k++) { - result[j + (z * bLength)][k + (i * bCols)] = a[z][i] * b[j][k]; - } - } - } - } - return result; + if (cpamix == null) { + cpamix = cpaSelect.getMixingRule(1, this); } - /** {@inheritDoc} */ - @Override - public int getTotalNumberOfAccociationSites() { - return totalNumberOfAccociationSites; + super.init(totalNumberOfMoles, numberOfComponents, type, pt, beta); + if (type > 0 && isConstantPhaseVolume()) { + calcDelta(); + solveX(); + super.init(totalNumberOfMoles, numberOfComponents, 1, pt, beta); + gcpa = calc_g(); + // lngcpa = Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); } - /** {@inheritDoc} */ - @Override - public void setTotalNumberOfAccociationSites(int totalNumberOfAccociationSites) { - this.totalNumberOfAccociationSites = totalNumberOfAccociationSites; + if (type > 0) { + hcpatot = calc_hCPA(); } - /** - *

- * initOld2. - *

- * - * @param totalNumberOfMoles a double - * @param numberOfComponents a int - * @param type a int - * @param phase a int - * @param beta a double - */ - public void initOld2(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { // type - // = 0 - // start - // init - // type - // =1 gi - // nye - // betingelser - if (type == 0) { - setTotalNumberOfAccociationSites(0); - selfAccociationScheme = new int[numberOfComponents][0][0]; - crossAccociationScheme = new int[numberOfComponents][numberOfComponents][0][0]; - for (int i = 0; i < numberOfComponents; i++) { - if (componentArray[i].getNumberOfmoles() < 1e-50) { - componentArray[i].setNumberOfAssociationSites(0); - } else { - componentArray[i].setNumberOfAssociationSites( - componentArray[i].getOrginalNumberOfAssociationSites()); - setTotalNumberOfAccociationSites(getTotalNumberOfAccociationSites() - + componentArray[i].getNumberOfAssociationSites()); - selfAccociationScheme[i] = cpaSelect.setAssociationScheme(i, this); - for (int j = 0; j < numberOfComponents; j++) { - crossAccociationScheme[i][j] = - cpaSelect.setCrossAssociationScheme(i, j, this); - } - } - } - - // had to remove if below - dont understand why.. Even - // if (getTotalNumberOfAccociationSites() != oldTotalNumberOfAccociationSites) { - mVector = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - KlkMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkVVVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - hessianMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTTMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - KlkTVMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), - getTotalNumberOfAccociationSites()); - corr2Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr3Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - corr4Matrix = new DMatrixRMaj(getTotalNumberOfAccociationSites(), 1); - Klkni = new double[numberOfComponents][getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - ksiMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - uMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - udotMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - moleculeNumber = new int[getTotalNumberOfAccociationSites()]; - assSiteNumber = new int[getTotalNumberOfAccociationSites()]; - gvector = new double[getTotalNumberOfAccociationSites()][1]; - udotTimesmMatrix = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - delta = new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltaNog = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - deltadTdT = - new double[getTotalNumberOfAccociationSites()][getTotalNumberOfAccociationSites()]; - QMatksiksiksi = new SimpleMatrix(getTotalNumberOfAccociationSites(), 1); - // } - udotTimesmiMatrix = - new SimpleMatrix(getNumberOfComponents(), getTotalNumberOfAccociationSites()); - - oldTotalNumberOfAccociationSites = getTotalNumberOfAccociationSites(); - - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - moleculeNumber[temp + j] = i; - assSiteNumber[temp + j] = j; - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - } - if (cpamix == null) { - cpamix = cpaSelect.getMixingRule(1, this); - } - - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - if (type > 0 && isConstantPhaseVolume()) { - calcDelta(); - solveX(); - super.init(totalNumberOfMoles, numberOfComponents, 1, phase, beta); - gcpa = calc_g(); - // lngcpa = Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); - } - - if (type > 0) { - hcpatot = calc_hCPA(); - } - - if (type > 1) { - initCPAMatrix(type); - // hcpatotdT = calc_hCPAdT(); - // super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - } + if (type > 1) { + initCPAMatrix(type); + // hcpatotdT = calc_hCPAdT(); + // super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); } - - /** {@inheritDoc} */ - @Override - public double molarVolume2(double pressure, double temperature, double A, double B, int phase) - throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - Z = phase == 0 ? 1.0 : 1.0e-5; + } + + /** {@inheritDoc} */ + @Override + public double molarVolume2(double pressure, double temperature, double A, double B, PhaseType pt) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + Z = pt == PhaseType.LIQUID ? 1.0 : 1.0e-5; + setMolarVolume(Z * R * temperature / pressure); + // super.molarVolume(pressure,temperature, A, B, phase); + int iterations = 0; + double err = 0.0; + double dErrdV = 0.0; + double deltaV = 0; + + do { + A = calcA(this, temperature, pressure, numberOfComponents); + B = calcB(this, temperature, pressure, numberOfComponents); + + double dFdV = dFdV(); + double dFdVdV = dFdVdV(); + // double dFdVdVdV = dFdVdVdV(); + // double factor1 = 1.0e0, factor2 = 1.0e0; + err = -R * temperature * dFdV + R * temperature / getMolarVolume() - pressure; + + // System.out.println("pressure " + -R * temperature * dFdV + " " + R * + // temperature / getMolarVolume()); + // -pressure; + dErrdV = -R * temperature * dFdVdV + - R * temperature * numberOfMolesInPhase / Math.pow(getVolume(), 2.0); + + // System.out.println("errdV " + dErrdV); + // System.out.println("err " + err); + deltaV = -err / dErrdV; + + setMolarVolume(getMolarVolume() + deltaV / numberOfMolesInPhase); + + Z = pressure * getMolarVolume() / (R * temperature); + if (Z < 0) { + Z = 1e-6; setMolarVolume(Z * R * temperature / pressure); - // super.molarVolume(pressure,temperature, A, B, phase); - int iterations = 0; - double err = 0.0, dErrdV = 0.0; - double deltaV = 0; - - do { - A = calcA(this, temperature, pressure, numberOfComponents); - B = calcB(this, temperature, pressure, numberOfComponents); - - double dFdV = dFdV(), dFdVdV = dFdVdV(); - // double dFdVdVdV = dFdVdVdV(); - // double factor1 = 1.0e0, factor2 = 1.0e0; - err = -R * temperature * dFdV + R * temperature / getMolarVolume() - pressure; - - // System.out.println("pressure " + -R * temperature * dFdV + " " + R * - // temperature / getMolarVolume()); - // -pressure; - dErrdV = -R * temperature * dFdVdV - - R * temperature * numberOfMolesInPhase / Math.pow(getVolume(), 2.0); - - // System.out.println("errdV " + dErrdV); - // System.out.println("err " + err); - deltaV = -err / dErrdV; - - setMolarVolume(getMolarVolume() + deltaV / numberOfMolesInPhase); - - Z = pressure * getMolarVolume() / (R * temperature); - if (Z < 0) { - Z = 1e-6; - setMolarVolume(Z * R * temperature / pressure); - } - - // System.out.println("Z " + Z); - } while (Math.abs(err) > 1.0e-8 || iterations < 100); - // System.out.println("Z " + Z); - return getMolarVolume(); + } + + // System.out.println("Z " + Z); + } while (Math.abs(err) > 1.0e-8 || iterations < 100); + // System.out.println("Z " + Z); + return getMolarVolume(); + } + + /** + *

+ * initCPAMatrixOld. + *

+ * + * @param type a int + */ + public void initCPAMatrixOld(int type) { + if (getTotalNumberOfAccociationSites() == 0) { + FCPA = 0.0; + dFCPAdTdV = 0.0; + dFCPAdTdT = 0.0; + dFCPAdT = 0; + dFCPAdV = 0; + dFCPAdVdV = 0.0; + dFCPAdVdVdV = 0.0; + + return; } - /** - *

- * initCPAMatrixOld. - *

- * - * @param type a int - */ - public void initCPAMatrixOld(int type) { - if (getTotalNumberOfAccociationSites() == 0) { - FCPA = 0.0; - dFCPAdTdV = 0.0; - dFCPAdTdT = 0.0; - dFCPAdT = 0; - dFCPAdV = 0; - dFCPAdVdV = 0.0; - dFCPAdVdVdV = 0.0; - - return; - } - - int temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - uMatrix.set(temp + j, 0, - Math.log(ksiMatrix.get(temp + j, 0)) - ksiMatrix.get(temp + j, 0) + 1.0); - gvector[temp + j][0] = mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - for (int i = 0; i < getNumberOfComponents(); i++) { - for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { - if (moleculeNumber[j] == i) { - udotTimesmiMatrix.set(i, j, udotMatrix.get(j, 0)); - } else { - udotTimesmiMatrix.set(i, j, 0.0); - } - } + int temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + uMatrix.set(temp + j, 0, + Math.log(ksiMatrix.get(temp + j, 0)) - ksiMatrix.get(temp + j, 0) + 1.0); + gvector[temp + j][0] = mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + for (int i = 0; i < getNumberOfComponents(); i++) { + for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { + if (moleculeNumber[j] == i) { + udotTimesmiMatrix.set(i, j, udotMatrix.get(j, 0)); + } else { + udotTimesmiMatrix.set(i, j, 0.0); } + } + } - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - delta[i][j] = deltaNog[i][j] * getGcpa(); - delta[j][i] = delta[i][j]; - if (type > 1) { - deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadT[j][i] = deltadT[i][j]; - - deltadTdT[i][j] = cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], - moleculeNumber[i], moleculeNumber[j], this, getTemperature(), - getPressure(), numberOfComponents); - deltadTdT[j][i] = deltadTdT[i][j]; - } - } - } + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + delta[i][j] = deltaNog[i][j] * getGcpa(); + delta[j][i] = delta[i][j]; + if (type > 1) { + deltadT[i][j] = cpamix.calcDeltadT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadT[j][i] = deltadT[i][j]; - double totalVolume = getTotalVolume(); - double totalVolume2 = totalVolume * totalVolume, totalVolume3 = totalVolume2 * totalVolume; - double gdv1 = getGcpav() - 1.0 / totalVolume; - double gdv2 = gdv1 * gdv1; - double gdv3 = gdv2 * gdv1; - // double Klk = 0.0; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - KlkVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv1); - KlkVMatrix.set(j, i, KlkVMatrix.get(i, j)); - - KlkVVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv2 - + KlkMatrix.get(i, j) * (gcpavv + 1.0 / totalVolume / totalVolume)); - KlkVVMatrix.set(j, i, KlkVVMatrix.get(i, j)); - - KlkVVVMatrix.set(i, j, - KlkMatrix.get(i, j) * gdv3 - + 3.0 * KlkMatrix.get(i, j) * (getGcpav() - 1.0 / totalVolume) - * (gcpavv + 1.0 / (totalVolume2)) - + KlkMatrix.get(i, j) * (gcpavvv - 2.0 / (totalVolume3))); - KlkVVVMatrix.set(j, i, KlkVVVMatrix.get(i, j)); - - if (type > 1) { - double tempVar = deltadT[i][j] / delta[i][j]; - double tempVardT = deltadTdT[i][j] / delta[i][j] - - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - - if (!Double.isNaN(tempVar)) { - // KlkdT[i][j] = KlkMatrix.getMatrix().unsafe_get(i, j) * tempVar; - // KlkdT[j][i] = KlkdT[i][j]; - - KlkTMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar); - KlkTMatrix.set(j, i, KlkTMatrix.get(i, j)); - - KlkTVMatrix.set(i, j, - KlkMatrix.get(i, j) * tempVar * (gcpav - 1.0 / totalVolume)); - KlkTVMatrix.set(j, i, KlkTVMatrix.get(i, j)); - - KlkTTMatrix.set(i, j, - KlkMatrix.get(i, j) * (tempVar * tempVar + tempVardT)); - KlkTTMatrix.set(j, i, KlkTTMatrix.get(i, j)); - } - - if (type > 2) { - for (int p = 0; p < numberOfComponents; p++) { - double t1 = 0.0, t2 = 0.0; - if (moleculeNumber[i] == p) { - t1 = 1.0 / mVector.get(i, 0); - } - if (moleculeNumber[j] == p) { - t2 = 1.0 / mVector.get(j, 0); - } - Klkni[p][i][j] = KlkMatrix.get(i, j) * (t1 + t2 - + ((ComponentUMRCPA) getComponent(p)).calc_lngi(this)); - Klkni[p][j][i] = Klkni[p][i][j]; - } - } - } - } - QMatksiksiksi.set(i, 0, 2.0 * mVector.get(i, 0) - / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0))); + deltadTdT[i][j] = + cpamix.calcDeltadTdT(assSiteNumber[i], assSiteNumber[j], moleculeNumber[i], + moleculeNumber[j], this, getTemperature(), getPressure(), numberOfComponents); + deltadTdT[j][i] = deltadTdT[i][j]; } + } + } - SimpleMatrix ksiMatrixTranspose = ksiMatrix.transpose(); - - // dXdV - SimpleMatrix KlkVMatrixksi = KlkVMatrix.mult(ksiMatrix); - SimpleMatrix XV = hessianInvers.mult(KlkVMatrixksi); - SimpleMatrix XVtranspose = XV.transpose(); - - SimpleMatrix QCPA = mVector.transpose() - .mult(uMatrix.minus(ksiMatrix.elementMult(udotMatrix).scale(0.5))); - FCPA = QCPA.get(0, 0); - - SimpleMatrix tempMatrix = ksiMatrixTranspose.mult(KlkVMatrixksi).scale(-0.5); - dFCPAdV = tempMatrix.get(0, 0); - SimpleMatrix KlkVVMatrixTImesKsi = KlkVVMatrix.mult(ksiMatrix); - SimpleMatrix tempMatrixVV = ksiMatrixTranspose.mult(KlkVVMatrixTImesKsi).scale(-0.5) - .minus(KlkVMatrixksi.transpose().mult(XV)); - dFCPAdVdV = tempMatrixVV.get(0, 0); + double totalVolume = getTotalVolume(); + double totalVolume2 = totalVolume * totalVolume; + double totalVolume3 = totalVolume2 * totalVolume; + double gdv1 = getGcpav() - 1.0 / totalVolume; + double gdv2 = gdv1 * gdv1; + double gdv3 = gdv2 * gdv1; + // double Klk = 0.0; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + KlkVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv1); + KlkVMatrix.set(j, i, KlkVMatrix.get(i, j)); + + KlkVVMatrix.set(i, j, KlkMatrix.get(i, j) * gdv2 + + KlkMatrix.get(i, j) * (gcpavv + 1.0 / totalVolume / totalVolume)); + KlkVVMatrix.set(j, i, KlkVVMatrix.get(i, j)); + + KlkVVVMatrix.set(i, j, + KlkMatrix.get(i, j) * gdv3 + + 3.0 * KlkMatrix.get(i, j) * (getGcpav() - 1.0 / totalVolume) + * (gcpavv + 1.0 / (totalVolume2)) + + KlkMatrix.get(i, j) * (gcpavvv - 2.0 / (totalVolume3))); + KlkVVVMatrix.set(j, i, KlkVVVMatrix.get(i, j)); - SimpleMatrix QVVV = ksiMatrixTranspose.mult(KlkVVVMatrix.mult(ksiMatrix)).scale(-0.5); - SimpleMatrix QVVksi = KlkVVMatrixTImesKsi.scale(-1.0); - SimpleMatrix QksiVksi = KlkVMatrix.scale(-1.0); + if (type > 1) { + double tempVar = deltadT[i][j] / delta[i][j]; + double tempVardT = deltadTdT[i][j] / delta[i][j] + - (deltadT[i][j] * deltadT[i][j]) / (delta[i][j] * delta[i][j]); - SimpleMatrix mat1 = QVVksi.transpose().mult(XV).scale(3.0); - SimpleMatrix mat2 = XVtranspose.mult(QksiVksi.mult(XV)).scale(3.0); - SimpleMatrix mat4 = XVtranspose.mult(QMatksiksiksi.mult(XVtranspose)).mult(XV); + if (!Double.isNaN(tempVar)) { + // KlkdT[i][j] = KlkMatrix.getMatrix().unsafe_get(i, j) * tempVar; + // KlkdT[j][i] = KlkdT[i][j]; - SimpleMatrix dFCPAdVdVdVMatrix = QVVV.plus(mat1).plus(mat2).plus(mat2).plus(mat4); - dFCPAdVdVdV = dFCPAdVdVdVMatrix.get(0, 0); - temp = 0; + KlkTMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar); + KlkTMatrix.set(j, i, KlkTMatrix.get(i, j)); - if (type == 1) { - return; - } - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); - } + KlkTVMatrix.set(i, j, KlkMatrix.get(i, j) * tempVar * (gcpav - 1.0 / totalVolume)); + KlkTVMatrix.set(j, i, KlkTVMatrix.get(i, j)); - // KlkTMatrix = new SimpleMatrix(KlkdT); - SimpleMatrix KlkTMatrixTImesKsi = KlkTMatrix.mult(ksiMatrix); - // dQdT - SimpleMatrix tempMatrix2 = ksiMatrixTranspose.mult(KlkTMatrixTImesKsi).scale(-0.5); - dFCPAdT = tempMatrix2.get(0, 0); - - // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); - // SimpleMatrix tempMatrixTV = - // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - // dFCPAdTdV = tempMatrixTV.get(0, 0); - // dXdT - SimpleMatrix XT = hessianInvers.mult(KlkTMatrixTImesKsi); - // dQdTdT - SimpleMatrix tempMatrixTT = ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5) - .minus(KlkTMatrixTImesKsi.transpose().mult(XT)); - dFCPAdTdT = tempMatrixTT.get(0, 0); - - SimpleMatrix tempMatrixTV = ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5) - .minus(KlkTMatrixTImesKsi.transpose().mult(XV)); - dFCPAdTdV = tempMatrixTV.get(0, 0); - - temp = 0; - for (int p = 0; p < numberOfComponents; p++) { - for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); - } - temp += getComponent(p).getNumberOfAssociationSites(); - } + KlkTTMatrix.set(i, j, KlkMatrix.get(i, j) * (tempVar * tempVar + tempVardT)); + KlkTTMatrix.set(j, i, KlkTTMatrix.get(i, j)); + } - if (type == 2) { - return; - } - - // int assSites = 0; - // if(true) return; - for (int p = 0; p < numberOfComponents; p++) { - SimpleMatrix KiMatrix = new SimpleMatrix(Klkni[p]); - // KiMatrix.print(10,10); - // Matrix dQdniMatrix = - // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this - // methods misses one part of .... - // dQdniMatrix.print(10,10); - // KiMatrix.print(10, 10); - // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - - // 1).print(10, 10); - // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - - // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5));// - // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); - // System.out.println("dQdn "); - // tempMatrix20.print(10, 10); - SimpleMatrix tempMatrix4 = KiMatrix.mult(ksiMatrix); - // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, - // totalNumberOfAccociationSites - 1).print(10, 10); - SimpleMatrix tempMatrix5 = - udotTimesmiMatrix.extractVector(true, p).transpose().minus(tempMatrix4); - // tempMki[0] = mki[p]; - // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, - // udotMatrix.getArray())); - // System.out.println("aMatrix "); - // amatrix.transpose().print(10, 10); - // System.out.println("temp4 matrix"); - // tempMatrix4.print(10, 10); - // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); - SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5);// .scale(-1.0); - // System.out.println("dXdni"); - // tempMatrix4.print(10, 10); - // tempMatrix5.print(10, 10); - // System.out.println("dXdn "); - // tempMatrix6.print(10, 10); - int temp2 = 0; - for (int compp = 0; compp < numberOfComponents; compp++) { - for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { - ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, - -1.0 * tempMatrix6.get(temp2 + kk, 0)); - } - temp2 += getComponent(compp).getNumberOfAssociationSites(); + if (type > 2) { + for (int p = 0; p < numberOfComponents; p++) { + double t1 = 0.0; + double t2 = 0.0; + if (moleculeNumber[i] == p) { + t1 = 1.0 / mVector.get(i, 0); + } + if (moleculeNumber[j] == p) { + t2 = 1.0 / mVector.get(j, 0); + } + Klkni[p][i][j] = KlkMatrix.get(i, j) + * (t1 + t2 + ((ComponentUMRCPA) getComponent(p)).calc_lngi(this)); + Klkni[p][j][i] = Klkni[p][i][j]; } - // assSites += getComponent(p).getNumberOfAssociationSites(); + } } + } + QMatksiksiksi.set(i, 0, 2.0 * mVector.get(i, 0) + / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0))); } - /** - *

- * solveXOld. - *

- * - * @return a boolean - */ - public boolean solveXOld() { - if (getTotalNumberOfAccociationSites() == 0) { - return true; - } + SimpleMatrix ksiMatrixTranspose = ksiMatrix.transpose(); - boolean solvedX = solveX2(5); - if (solvedX) { - // return true; - } + // dXdV + SimpleMatrix KlkVMatrixksi = KlkVMatrix.mult(ksiMatrix); + SimpleMatrix XV = hessianInvers.mult(KlkVMatrixksi); + SimpleMatrix XVtranspose = XV.transpose(); - DMatrixRMaj mat1 = KlkMatrix.getMatrix(); - DMatrixRMaj mat2 = ksiMatrix.getMatrix(); - // second order method not working correctly and not used t the moment b ecause of numerical - // stability - int temp = 0, iter = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - mVector.set(temp + j, 0, componentArray[i].getNumberOfMolesInPhase()); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - double Klk = 0.0; - double totalVolume = getTotalVolume(); - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - Klk = mVector.get(i, 0) * mVector.get(j, 0) / totalVolume * delta[i][j]; - KlkMatrix.set(i, j, Klk); - KlkMatrix.set(j, i, Klk); - } - } - boolean solved = true; - // SimpleMatrix corrMatrix = null; - do { - solved = true; - iter++; - temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - ksiMatrix.set(temp + j, 0, ((ComponentUMRCPA) componentArray[i]).getXsite()[j]); - // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, - // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); - udotMatrix.set(temp + j, 0, 1.0 / ksiMatrix.get(temp + j, 0) - 1.0); - udotTimesmMatrix.set(temp + j, 0, - mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0)); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } + SimpleMatrix QCPA = + mVector.transpose().mult(uMatrix.minus(ksiMatrix.elementMult(udotMatrix).scale(0.5))); + FCPA = QCPA.get(0, 0); - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { - int krondelt = 0; - if (i == j) { - krondelt = 1; - } - hessianMatrix.set(i, j, - -mVector.get(i, 0) / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0)) - * krondelt - KlkMatrix.get(i, j)); - hessianMatrix.set(j, i, hessianMatrix.get(i, j)); - } - } + SimpleMatrix tempMatrix = ksiMatrixTranspose.mult(KlkVMatrixksi).scale(-0.5); + dFCPAdV = tempMatrix.get(0, 0); + SimpleMatrix KlkVVMatrixTImesKsi = KlkVVMatrix.mult(ksiMatrix); + SimpleMatrix tempMatrixVV = ksiMatrixTranspose.mult(KlkVVMatrixTImesKsi).scale(-0.5) + .minus(KlkVMatrixksi.transpose().mult(XV)); + dFCPAdVdV = tempMatrixVV.get(0, 0); - // ksiMatrix = new SimpleMatrix(ksi); - // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); - try { - hessianInvers = hessianMatrix.invert(); - } catch (Exception e) { - logger.error("error", e); - return false; - } + SimpleMatrix QVVV = ksiMatrixTranspose.mult(KlkVVVMatrix.mult(ksiMatrix)).scale(-0.5); + SimpleMatrix QVVksi = KlkVVMatrixTImesKsi.scale(-1.0); + SimpleMatrix QksiVksi = KlkVMatrix.scale(-1.0); - CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); - CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, corr3Matrix); - CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); - // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); - // corrMatrix = - // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)));//.scale(-1.0); - temp = 0; - // System.out.println("print SimpleMatrix ..."); - // corrMatrix.print(10, 10); - // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); - // System.out.println("print CommonOps ..."); - // simp.print(10,10); - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { - double newX = - ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); - if (newX < 0) { - newX = 1e-10; - solved = false; - } - ((ComponentCPAInterface) componentArray[i]).setXsite(j, newX); - } - temp += componentArray[i].getNumberOfAssociationSites(); - } - // System.out.println("corrmatrix error " ); - // System.out.println("error " + corrMatrix.norm1()); - } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); + SimpleMatrix mat1 = QVVksi.transpose().mult(XV).scale(3.0); + SimpleMatrix mat2 = XVtranspose.mult(QksiVksi.mult(XV)).scale(3.0); + SimpleMatrix mat4 = XVtranspose.mult(QMatksiksiksi.mult(XVtranspose)).mult(XV); - // System.out.println("iter " + iter + " error " + NormOps.normF(corr4Matrix)); - // // corrMatrix.print(10, 10); - // ksiMatrix.print(10, 10); - return true; + SimpleMatrix dFCPAdVdVdVMatrix = QVVV.plus(mat1).plus(mat2).plus(mat2).plus(mat4); + dFCPAdVdVdV = dFCPAdVdVdVMatrix.get(0, 0); + temp = 0; + + if (type == 1) { + return; + } + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedV(kk, XV.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** - *

- * solveX2Old. - *

- * - * @param maxIter a int - * @return a boolean - */ - public boolean solveX2Old(int maxIter) { - double err = .0; - int iter = 0; - // if (delta == null) { - // initCPAMatrix(1); - double old = 0.0, neeval = 0.0, totalVolume = getTotalVolume(); - // } - do { - iter++; - err = 0.0; - for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { - old = ((ComponentUMRCPA) getComponent(moleculeNumber[i])) - .getXsite()[assSiteNumber[i]]; - neeval = 0; - for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { - neeval += getComponent(moleculeNumber[j]).getNumberOfMolesInPhase() - * delta[i][j] * ((ComponentUMRCPA) getComponent(moleculeNumber[j])) - .getXsite()[assSiteNumber[j]]; - } - neeval = 1.0 / (1.0 + 1.0 / totalVolume * neeval); - ((ComponentCPAInterface) getComponent(moleculeNumber[i])).setXsite(assSiteNumber[i], - neeval); - err += Math.abs((old - neeval) / neeval); - } - } while (Math.abs(err) > 1e-10 && iter < maxIter); - // System.out.println("iter " + iter); - // if (Math.abs(err) - // < 1e-12) { - // return true; - // } else { - // System.out.println("did not solve for Xi in iterations: " + iter); - // System.out.println("error: " + err); - return false; + // KlkTMatrix = new SimpleMatrix(KlkdT); + SimpleMatrix KlkTMatrixTImesKsi = KlkTMatrix.mult(ksiMatrix); + // dQdT + SimpleMatrix tempMatrix2 = ksiMatrixTranspose.mult(KlkTMatrixTImesKsi).scale(-0.5); + dFCPAdT = tempMatrix2.get(0, 0); + + // SimpleMatrix KlkTVMatrix = new SimpleMatrix(KlkdTdV); + // SimpleMatrix tempMatrixTV = + // ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5).minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + // dFCPAdTdV = tempMatrixTV.get(0, 0); + // dXdT + SimpleMatrix XT = hessianInvers.mult(KlkTMatrixTImesKsi); + // dQdTdT + SimpleMatrix tempMatrixTT = ksiMatrixTranspose.mult(KlkTTMatrix.mult(ksiMatrix)).scale(-0.5) + .minus(KlkTMatrixTImesKsi.transpose().mult(XT)); + dFCPAdTdT = tempMatrixTT.get(0, 0); + + SimpleMatrix tempMatrixTV = ksiMatrixTranspose.mult(KlkTVMatrix.mult(ksiMatrix)).scale(-0.5) + .minus(KlkTMatrixTImesKsi.transpose().mult(XV)); + dFCPAdTdV = tempMatrixTV.get(0, 0); + + temp = 0; + for (int p = 0; p < numberOfComponents; p++) { + for (int kk = 0; kk < getComponent(p).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(p)).setXsitedT(kk, XT.get(temp + kk, 0)); + } + temp += getComponent(p).getNumberOfAssociationSites(); } - /** - *

- * molarVolumeOld. - *

- * - * @param pressure a double - * @param temperature a double - * @param A a double - * @param B a double - * @param phasetype a int - * @return a double - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. - */ - public double molarVolumeOld(double pressure, double temperature, double A, double B, - int phasetype) throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double BonV = phasetype == 0 ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - // if (pressure > 1000) { - // BonV = 0.9999; - // } + if (type == 2) { + return; + } - // double calcRooBonVtVolFinder = calcRootVolFinder(phasetype); - // BonV = calcRooBonVtVolFinder; - // double BonVInit = BonV; - if (BonV < 0) { - BonV = 1.0e-8; - } + // int assSites = 0; + // if(true) return; + for (int p = 0; p < numberOfComponents; p++) { + SimpleMatrix KiMatrix = new SimpleMatrix(Klkni[p]); + // KiMatrix.print(10,10); + // Matrix dQdniMatrix = + // (ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); // this + // methods misses one part of .... + // dQdniMatrix.print(10,10); + // KiMatrix.print(10, 10); + // miMatrix.getMatrix(assSites, assSites, 0, totalNumberOfAccociationSites - + // 1).print(10, 10); + // Matrix tempMatrix20 = miMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - + // 1).times(uMatrix).minus(ksiMatrix.transpose().times(KiMatrix.times(ksiMatrix)).times(-0.5)); + // // + // ksiMatrix.transpose().times(KlkTMatrix.times(ksiMatrix)).times(-0.5); + // System.out.println("dQdn "); + // tempMatrix20.print(10, 10); + SimpleMatrix tempMatrix4 = KiMatrix.mult(ksiMatrix); + // udotTimesmiMatrix.getMatrix(assSites, assSites, 0, + // totalNumberOfAccociationSites - 1).print(10, 10); + SimpleMatrix tempMatrix5 = + udotTimesmiMatrix.extractVector(true, p).transpose().minus(tempMatrix4); + // tempMki[0] = mki[p]; + // Matrix amatrix = new Matrix(croeneckerProduct(tempMki, + // udotMatrix.getArray())); + // System.out.println("aMatrix "); + // amatrix.transpose().print(10, 10); + // System.out.println("temp4 matrix"); + // tempMatrix4.print(10, 10); + // Matrix tempMatrix5 = amatrix.minus(tempMatrix4); + SimpleMatrix tempMatrix6 = hessianInvers.mult(tempMatrix5); // .scale(-1.0); + // System.out.println("dXdni"); + // tempMatrix4.print(10, 10); + // tempMatrix5.print(10, 10); + // System.out.println("dXdn "); + // tempMatrix6.print(10, 10); + int temp2 = 0; + for (int compp = 0; compp < numberOfComponents; compp++) { + for (int kk = 0; kk < getComponent(compp).getNumberOfAssociationSites(); kk++) { + ((ComponentCPAInterface) getComponent(compp)).setXsitedni(kk, p, + -1.0 * tempMatrix6.get(temp2 + kk, 0)); + } + temp2 += getComponent(compp).getNumberOfAssociationSites(); + } + // assSites += getComponent(p).getNumberOfAssociationSites(); + } + } + + /** + *

+ * solveXOld. + *

+ * + * @return a boolean + */ + public boolean solveXOld() { + if (getTotalNumberOfAccociationSites() == 0) { + return true; + } - if (BonV >= 1.0) { - BonV = 0.9999; - } - double BonVold; - double h = 0, dh = 0, dhh = 0; - double d1 = 0, d2 = 0; - double Btemp = getB(); - if (Btemp < 0) { - logger.info("b negative in volume calc"); - } - calcDelta(); + boolean solvedX = solveX2(5); + if (solvedX) { + // return true; + } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - int iterations = 0; + DMatrixRMaj mat1 = KlkMatrix.getMatrix(); + DMatrixRMaj mat2 = ksiMatrix.getMatrix(); + // second order method not working correctly and not used t the moment b ecause of numerical + // stability + int temp = 0; + int iter = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + mVector.set(temp + j, 0, componentArray[i].getNumberOfMolesInPhase()); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + double Klk = 0.0; + double totalVolume = getTotalVolume(); + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + Klk = mVector.get(i, 0) * mVector.get(j, 0) / totalVolume * delta[i][j]; + KlkMatrix.set(i, j, Klk); + KlkMatrix.set(j, i, Klk); + } + } + boolean solved = true; + // SimpleMatrix corrMatrix = null; + do { + solved = true; + iter++; + temp = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + ksiMatrix.set(temp + j, 0, ((ComponentUMRCPA) componentArray[i]).getXsite()[j]); + // ksiMatrix.getMatrix().unsafe_set(temp + j, 0, + // ksiMatrix.getMatrix().unsafe_get(temp + j, 0)); + udotMatrix.set(temp + j, 0, 1.0 / ksiMatrix.get(temp + j, 0) - 1.0); + udotTimesmMatrix.set(temp + j, 0, mVector.get(temp + j, 0) * udotMatrix.get(temp + j, 0)); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + for (int j = i; j < getTotalNumberOfAccociationSites(); j++) { + int krondelt = 0; + if (i == j) { + krondelt = 1; + } + hessianMatrix.set(i, j, + -mVector.get(i, 0) / (ksiMatrix.get(i, 0) * ksiMatrix.get(i, 0)) * krondelt + - KlkMatrix.get(i, j)); + hessianMatrix.set(j, i, hessianMatrix.get(i, j)); + } + } + + // ksiMatrix = new SimpleMatrix(ksi); + // SimpleMatrix hessianMatrix = new SimpleMatrix(hessian); + try { + hessianInvers = hessianMatrix.invert(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + return false; + } + + CommonOps_DDRM.mult(mat1, mat2, corr2Matrix); + CommonOps_DDRM.subtract(udotTimesmMatrix.getDDRM(), corr2Matrix, corr3Matrix); + CommonOps_DDRM.mult(hessianInvers.getDDRM(), corr3Matrix, corr4Matrix); + // SimpleMatrix gMatrix = udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix)); + // corrMatrix = + // hessianInvers.mult(udotTimesmMatrix.minus(KlkMatrix.mult(ksiMatrix))); + // //.scale(-1.0); + temp = 0; + // System.out.println("print SimpleMatrix ..."); + // corrMatrix.print(10, 10); + // SimpleMatrix simp = new SimpleMatrix(corr4Matrix); + // System.out.println("print CommonOps ..."); + // simp.print(10,10); + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < componentArray[i].getNumberOfAssociationSites(); j++) { + double newX = ksiMatrix.get(temp + j, 0) - corr4Matrix.unsafe_get((temp + j), 0); + if (newX < 0) { + newX = 1e-10; + solved = false; + } + ((ComponentCPAInterface) componentArray[i]).setXsite(j, newX); + } + temp += componentArray[i].getNumberOfAssociationSites(); + } + // System.out.println("corrmatrix error " ); + // System.out.println("error " + corrMatrix.norm1()); + } while ((NormOps_DDRM.normF(corr4Matrix) > 1e-12 || !solved) && iter < 100); + + // System.out.println("iter " + iter + " error " + NormOps.normF(corr4Matrix)); + // // corrMatrix.print(10, 10); + // ksiMatrix.print(10, 10); + return true; + } + + /** + *

+ * solveX2Old. + *

+ * + * @param maxIter a int + * @return a boolean + */ + public boolean solveX2Old(int maxIter) { + double err = .0; + int iter = 0; + // if (delta == null) { + // initCPAMatrix(1); + double old = 0.0; + double neeval = 0.0; + double totalVolume = getTotalVolume(); + // } + do { + iter++; + err = 0.0; + for (int i = 0; i < getTotalNumberOfAccociationSites(); i++) { + old = ((ComponentUMRCPA) getComponent(moleculeNumber[i])).getXsite()[assSiteNumber[i]]; + neeval = 0; + for (int j = 0; j < getTotalNumberOfAccociationSites(); j++) { + neeval += getComponent(moleculeNumber[j]).getNumberOfMolesInPhase() * delta[i][j] + * ((ComponentUMRCPA) getComponent(moleculeNumber[j])).getXsite()[assSiteNumber[j]]; + } + neeval = 1.0 / (1.0 + 1.0 / totalVolume * neeval); + ((ComponentCPAInterface) getComponent(moleculeNumber[i])).setXsite(assSiteNumber[i], + neeval); + err += Math.abs((old - neeval) / neeval); + } + } while (Math.abs(err) > 1e-10 && iter < maxIter); + // System.out.println("iter " + iter); + // if (Math.abs(err) + // < 1e-12) { + // return true; + // } else { + // System.out.println("did not solve for Xi in iterations: " + iter); + // System.out.println("error: " + err); + return false; + } + + /** + *

+ * molarVolumeOld. + *

+ * + * @param pressure a double + * @param temperature a double + * @param A a double + * @param B a double + * @param pt the PhaseType of the phase + * @return a double + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double molarVolumeOld(double pressure, double temperature, double A, double B, + PhaseType pt) throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double BonV = + pt == PhaseType.LIQUID ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + // if (pressure > 1000) { + // BonV = 0.9999; + // } + + // double calcRooBonVtVolFinder = calcRootVolFinder(pt); + // BonV = calcRooBonVtVolFinder; + // double BonVInit = BonV; + if (BonV < 0) { + BonV = 1.0e-8; + } - do { - iterations++; - gcpa = calc_g(); - if (gcpa < 0) { - setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); - gcpa = calc_g(); - } + if (BonV >= 1.0) { + BonV = 0.9999; + } + double BonVold; + double h = 0; + double dh = 0; + double dhh = 0; + double d1 = 0; + double d2 = 0; + double Btemp = getB(); + if (Btemp < 0) { + logger.info("b negative in volume calc"); + } + calcDelta(); - // lngcpa = - // Math.log(gcpa); - setGcpav(calc_lngV()); - gcpavv = calc_lngVV(); - gcpavvv = calc_lngVVV(); + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + int iterations = 0; - if (getTotalNumberOfAccociationSites() > 0) { - solveX(); - } + do { + iterations++; + gcpa = calc_g(); + if (gcpa < 0) { + setMolarVolume(1.0 / Btemp / numberOfMolesInPhase); + gcpa = calc_g(); + } - initCPAMatrix(1); - double BonV2 = BonV * BonV; - BonVold = BonV; - h = BonV - Btemp / numberOfMolesInPhase * dFdV() - - pressure * Btemp / (numberOfMolesInPhase * R * temperature); - dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); - dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) - - (Btemp * Btemp) / (BonV2 * BonV2) - * (Btemp / numberOfMolesInPhase * dFdVdVdV()); - - d1 = -h / dh; - d2 = -dh / dhh; - // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 - // + " d1 / d2 " + (d1 / d2)); - if (Math.abs(d1 / d2) <= 1.0) { - BonV += d1 * (1.0 + 0.5 * d1 / d2); - } else if (d1 / d2 < -1) { - BonV += 0.5 * d1; - } else if (d1 > d2) { - BonV += d2; - double hnew = h + d2 * dh; - if (Math.abs(hnew) > Math.abs(h)) { - BonV = phasetype == 1 - ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) - : pressure * getB() / (numberOfMolesInPhase * temperature * R); - } - } else { - BonV += 0.5 * d1; - } - if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { - BonV = BonVold + 0.1 * (BonV - BonVold); - } + // lngcpa = + // Math.log(gcpa); + setGcpav(calc_lngV()); + gcpavv = calc_lngVV(); + gcpavvv = calc_lngVVV(); - if (BonV > 0.9999) { - if (iterations < 3) { - BonV = (BonVold + BonV) / 2.0; - } else { - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV = 0.9999; - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - } - } else if (BonV < 0) { - if (iterations < 3) { - BonV = Math.abs(BonVold + BonV) / 2.0; - } else { - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - // BonV = phasetype == 1 ? 2.0 / (2.0 + temperature / - // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * - // temperature * R); - } - } - setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); - Z = pressure * getMolarVolume() / (R * temperature); - } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) - && iterations < 100); - - if (Math.abs(h) > 1e-12) { - // System.out.println("h failed " + "Z" + Z + " iterations " + iterations + " - // BonV " + BonV); - // return molarVolumeChangePhase(pressure, temperature, A, B, phasetype); - } - // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); - // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); - // System.out.println("volume " + totalVolume + " molar volume " + - // getMolarVolume()); - // if(iterations>=100) throw new util.exception.TooManyIterationsException(); - // System.out.println("error in volume " + - // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV()));// + " - // firstterm " + (R*temperature/molarVolume) + " second " + - // R*temperature*dFdV()); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B - // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); - - if (Double.isNaN(getMolarVolume())) { - throw new neqsim.util.exception.IsNaNException(this, "molarVolumeOld", "Molar volume"); - // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " - // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" - // + fVV()); - } - return getMolarVolume(); + if (getTotalNumberOfAccociationSites() > 0) { + solveX(); + } + + initCPAMatrix(1); + double BonV2 = BonV * BonV; + BonVold = BonV; + h = BonV - Btemp / numberOfMolesInPhase * dFdV() + - pressure * Btemp / (numberOfMolesInPhase * R * temperature); + dh = 1.0 + Btemp / (BonV2) * (Btemp / numberOfMolesInPhase * dFdVdV()); + dhh = -2.0 * Btemp / (BonV2 * BonV) * (Btemp / numberOfMolesInPhase * dFdVdV()) + - (Btemp * Btemp) / (BonV2 * BonV2) * (Btemp / numberOfMolesInPhase * dFdVdVdV()); + + d1 = -h / dh; + d2 = -dh / dhh; + // System.out.println("h " + h + " iter " + iterations + " " + d1 + " d2 " + d2 + // + " d1 / d2 " + (d1 / d2)); + if (Math.abs(d1 / d2) <= 1.0) { + BonV += d1 * (1.0 + 0.5 * d1 / d2); + } else if (d1 / d2 < -1) { + BonV += 0.5 * d1; + } else if (d1 > d2) { + BonV += d2; + double hnew = h + d2 * dh; + if (Math.abs(hnew) > Math.abs(h)) { + BonV = pt == PhaseType.GAS ? 2.0 / (2.0 + temperature / getPseudoCriticalTemperature()) + : pressure * getB() / (numberOfMolesInPhase * temperature * R); + } + } else { + BonV += 0.5 * d1; + } + if (Math.abs((BonV - BonVold) / BonVold) > 0.1) { + BonV = BonVold + 0.1 * (BonV - BonVold); + } + + if (BonV > 0.9999) { + if (iterations < 3) { + BonV = (BonVold + BonV) / 2.0; + } else { + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV = 0.9999; + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); + } + } else if (BonV < 0) { + if (iterations < 3) { + BonV = Math.abs(BonVold + BonV) / 2.0; + } else { + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + // BonV = pt == 1 ? 2.0 / (2.0 + temperature / + // getPseudoCriticalTemperature()) : pressure * getB() / (numberOfMolesInPhase * + // temperature * R); + } + } + setMolarVolume(1.0 / BonV * Btemp / numberOfMolesInPhase); + Z = pressure * getMolarVolume() / (R * temperature); + } while ((Math.abs((BonV - BonVold) / BonV) > 1.0e-10 || Math.abs(h) > 1e-12) + && iterations < 100); + + if (Math.abs(h) > 1e-12) { + // System.out.println("h failed " + "Z" + Z + " iterations " + iterations + " + // BonV " + BonV); + // return molarVolumeChangePhase(pressure, temperature, A, B, pt); + } + // System.out.println("Z" + Z + " iterations " + iterations + " BonV " + BonV); + // System.out.println("pressure " + Z*R*temperature/getMolarVolume()); + // System.out.println("volume " + totalVolume + " molar volume " + + // getMolarVolume()); + // if(iterations>=100) throw new util.exception.TooManyIterationsException(); + // System.out.println("error in volume " + + // (-pressure+R*temperature/getMolarVolume()-R*temperature*dFdV())); // + " + // firstterm " + (R*temperature/molarVolume) + " second " + + // R*temperature*dFdV()); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " " +dh + " B + // " + Btemp + " gv" + gV() + " fv " + fv() + " fvv" + fVV()); + + if (Double.isNaN(getMolarVolume())) { + throw new neqsim.util.exception.IsNaNException(this, "molarVolumeOld", "Molar volume"); + // System.out.println("BonV: " + BonV + " "+" itert: " + iterations +" " +h + " + // " +dh + " B " + Btemp + " D " + Dtemp + " gv" + gV() + " fv " + fv() + " fvv" + // + fVV()); } + return getMolarVolume(); + } } diff --git a/src/main/java/neqsim/thermo/phase/PhaseWax.java b/src/main/java/neqsim/thermo/phase/PhaseWax.java index 59f703c1f7..1b900a059c 100644 --- a/src/main/java/neqsim/thermo/phase/PhaseWax.java +++ b/src/main/java/neqsim/thermo/phase/PhaseWax.java @@ -11,49 +11,47 @@ * @version $Id: $Id */ public class PhaseWax extends PhaseSolid { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PhaseWax. - *

- */ - public PhaseWax() { - super(); - phaseTypeName = "wax"; - } - - /** {@inheritDoc} */ - @Override - public PhaseWax clone() { - PhaseWax clonedPhase = null; - try { - clonedPhase = (PhaseWax) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for PhaseWax. + *

+ */ + public PhaseWax() { + super(); + setType(PhaseType.WAX); + } - return clonedPhase; + /** {@inheritDoc} */ + @Override + public PhaseWax clone() { + PhaseWax clonedPhase = null; + try { + clonedPhase = (PhaseWax) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public void init(double totalNumberOfMoles, int numberOfComponents, int type, int phase, - double beta) { - super.init(totalNumberOfMoles, numberOfComponents, type, phase, beta); - phaseTypeName = "wax"; - } + return clonedPhase; + } - /** {@inheritDoc} */ - @Override - public void addcomponent(String componentName, double molesInPhase, double moles, - int compNumber) { - super.addcomponent(molesInPhase); - componentArray[compNumber] = - new ComponentWax(componentName, moles, molesInPhase, compNumber); - // componentArray[compNumber] = new ComponentWaxWilson(componentName, moles, - // molesInPhase, compNumber); - //// componentArray[compNumber] = new ComponentWonWax(componentName, moles, - // molesInPhase, compNumber); - } + /** {@inheritDoc} */ + @Override + public void init(double totalNumberOfMoles, int numberOfComponents, int initType, PhaseType pt, + double beta) { + super.init(totalNumberOfMoles, numberOfComponents, initType, pt, beta); + setType(PhaseType.WAX); + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String name, double moles, double molesInPhase, int compNumber) { + super.addComponent(name, molesInPhase, compNumber); + componentArray[compNumber] = new ComponentWax(name, moles, molesInPhase, compNumber); + // componentArray[compNumber] = new ComponentWaxWilson(componentName, moles, + // molesInPhase, compNumber); + // componentArray[compNumber] = new ComponentWonWax(componentName, moles, + // molesInPhase, compNumber); + } } diff --git a/src/main/java/neqsim/thermo/phase/StateOfMatter.java b/src/main/java/neqsim/thermo/phase/StateOfMatter.java new file mode 100644 index 0000000000..8ce4150c92 --- /dev/null +++ b/src/main/java/neqsim/thermo/phase/StateOfMatter.java @@ -0,0 +1,66 @@ +package neqsim.thermo.phase; + +/** + * States of matter, a way of relating the PhaseTypes to classical states of matter. + * + * @author ASMF + */ +public enum StateOfMatter { + GAS, LIQUID, SOLID; + + /** + * Get StateOfMatter value from Phasetype object. + * + * @param pt PhaseType object + * @return StateOfMatter object + */ + public static StateOfMatter fromPhaseType(PhaseType pt) { + switch (pt) { + case GAS: + return StateOfMatter.GAS; + case LIQUID: + case OIL: + case AQUEOUS: + return StateOfMatter.LIQUID; + case SOLID: + case SOLIDCOMPLEX: + case WAX: + case HYDRATE: + return StateOfMatter.SOLID; + default: + new RuntimeException(new neqsim.util.exception.InvalidInputException(StateOfMatter.class, + "fromPhaseType", "pt", "Conversion not configured for")); + } + return null; + } + + /** + * Check if PhaseType object is a gas state of matter. + * + * @param pt PhaseType object to check. + * @return True if pt converts to StateOfMatter.GAS + */ + public static boolean isGas(PhaseType pt) { + return StateOfMatter.fromPhaseType(pt) == StateOfMatter.GAS; + } + + /** + * Check if PhaseType object is a liquid state of matter. + * + * @param pt PhaseType object to check. + * @return True if pt converts to StateOfMatter.LIQUID + */ + public static boolean isLiquid(PhaseType pt) { + return StateOfMatter.fromPhaseType(pt) == StateOfMatter.LIQUID; + } + + /** + * Check if PhaseType object is a solid state of matter. + * + * @param pt PhaseType object to check. + * @return True if pt converts to StateOfMatter.SOLID + */ + public static boolean isSolid(PhaseType pt) { + return StateOfMatter.fromPhaseType(pt) == StateOfMatter.SOLID; + } +} diff --git a/src/main/java/neqsim/thermo/system/SystemBWRSEos.java b/src/main/java/neqsim/thermo/system/SystemBWRSEos.java index c568b7a80a..49ab6bb1de 100644 --- a/src/main/java/neqsim/thermo/system/SystemBWRSEos.java +++ b/src/main/java/neqsim/thermo/system/SystemBWRSEos.java @@ -5,104 +5,83 @@ import neqsim.thermo.phase.PhasePureComponentSolid; /** - * This class defines a thermodynamic system using the BWRS equation of state + * This class defines a thermodynamic system using the BWRS equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemBWRSEos extends SystemEos { - private static final long serialVersionUID = 1000; - double[][] TBPfractionCoefs = {{163.12, 86.052, 0.43475, -1877.4, 0.0}, - {-0.13408, 2.5019, 208.46, -3987.2, 1.0}, {0.7431, 0.004812, 0.009671, -3.7e-6, 0.0}}; + private static final long serialVersionUID = 1000; + double[][] TBPfractionCoefs = {{163.12, 86.052, 0.43475, -1877.4, 0.0}, + {-0.13408, 2.5019, 208.46, -3987.2, 1.0}, {0.7431, 0.004812, 0.009671, -3.7e-6, 0.0}}; - /** - *

- * Constructor for SystemBWRSEos. - *

- */ - public SystemBWRSEos() { - super(); - modelName = "BWRS-EOS"; - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseBWRSEos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - *

- * Constructor for SystemBWRSEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemBWRSEos(double T, double P) { - super(T, P); - modelName = "BWRS-EOS"; - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseBWRSEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } - - /** - *

- * Constructor for SystemBWRSEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemBWRSEos(double T, double P, boolean solidCheck) { - this(T, P); - modelName = "BWRS-EOS"; - attractiveTermNumber = 0; - setNumberOfPhases(5); - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemBWRSEos. + *

+ */ + public SystemBWRSEos() { + this(298.15, 1.0, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseBWRSEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemBWRSEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemBWRSEos(double T, double P) { + this(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemBWRSEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemBWRSEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "BWRS-EOS"; + attractiveTermNumber = 0; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseBWRSEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemBWRSEos clone() { - SystemBWRSEos clonedSystem = null; - try { - clonedSystem = (SystemBWRSEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemBWRSEos clone() { + SystemBWRSEos clonedSystem = null; + try { + clonedSystem = (SystemBWRSEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemCSPsrkEos.java b/src/main/java/neqsim/thermo/system/SystemCSPsrkEos.java index bd880ab8d6..446deb6ad3 100644 --- a/src/main/java/neqsim/thermo/system/SystemCSPsrkEos.java +++ b/src/main/java/neqsim/thermo/system/SystemCSPsrkEos.java @@ -5,97 +5,82 @@ import neqsim.thermo.phase.PhasePureComponentSolid; /** - * This class defines a thermodynamic system using the CSP SRK equation of state + * This class defines a thermodynamic system using the CSP SRK equation of state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemCSPsrkEos extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemCSPsrkEos. - *

- */ - public SystemCSPsrkEos() { - super(); - modelName = "CSPsrk-EOS"; - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseCSPsrkEos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - *

- * Constructor for SystemCSPsrkEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemCSPsrkEos(double T, double P) { - super(T, P); - modelName = "CSPsrk-EOS"; - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseCSPsrkEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + *

+ * Constructor for SystemCSPsrkEos. + *

+ */ + public SystemCSPsrkEos() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemCSPsrkEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemCSPsrkEos(double T, double P, boolean solidCheck) { - this(T, P); - modelName = "CSPsrk-EOS"; - attractiveTermNumber = 0; - setNumberOfPhases(5); - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemCSPsrkEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemCSPsrkEos(double T, double P) { + this(T, P, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseCSPsrkEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemCSPsrkEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemCSPsrkEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "CSPsrk-EOS"; + attractiveTermNumber = 0; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + // Recreates phases created in super constructor SystemSrkEos + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseCSPsrkEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); + } - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); } - /** {@inheritDoc} */ - @Override - public SystemCSPsrkEos clone() { - SystemCSPsrkEos clonedSystem = null; - try { - clonedSystem = (SystemCSPsrkEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemCSPsrkEos clone() { + SystemCSPsrkEos clonedSystem = null; + try { + clonedSystem = (SystemCSPsrkEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemDesmukhMather.java b/src/main/java/neqsim/thermo/system/SystemDesmukhMather.java index 8d143a01d9..492ac3ba15 100644 --- a/src/main/java/neqsim/thermo/system/SystemDesmukhMather.java +++ b/src/main/java/neqsim/thermo/system/SystemDesmukhMather.java @@ -5,89 +5,77 @@ import neqsim.thermo.phase.PhaseSrkEos; /** - * This class defines a thermodynamic system using the Desmukh Mather thermodyanmic model - * + * This class defines a thermodynamic system using the Desmukh Mather thermodynamic model. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemDesmukhMather extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemDesmukhMather() { - super(); - modelName = "Desmukh-Mather-model"; - attractiveTermNumber = 0; - phaseArray[0] = new PhaseSrkEos(); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseDesmukhMather();// modifiedWS(); - } - } - - /** - *

- * Constructor for SystemDesmukhMather. - *

- * - * @param T a double - * @param P a double - */ - public SystemDesmukhMather(double T, double P) { - super(T, P); - attractiveTermNumber = 0; - modelName = "Desmukh-Mather-model"; - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseDesmukhMather();// new PhaseGENRTLmodifiedWS(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + *

+ * Constructor for SystemDesmukhMather. + *

+ */ + public SystemDesmukhMather() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemDesmukhMather. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemDesmukhMather(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 0; - setNumberOfPhases(4); - modelName = "Desmukh-Mather-model"; - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemDesmukhMather. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemDesmukhMather(double T, double P) { + this(T, P, false); + } - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseDesmukhMather();// new PhaseGENRTLmodifiedWS(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemDesmukhMather. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemDesmukhMather(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 0; + modelName = "Desmukh-Mather-model"; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + phaseArray[0] = new PhaseSrkEos(); + phaseArray[0].setTemperature(T); + phaseArray[0].setPressure(P); + for (int i = 1; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseDesmukhMather(); // new PhaseGENRTLmodifiedWS(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemDesmukhMather clone() { - SystemDesmukhMather clonedSystem = null; - try { - clonedSystem = (SystemDesmukhMather) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + setNumberOfPhases(4); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemDesmukhMather clone() { + SystemDesmukhMather clonedSystem = null; + try { + clonedSystem = (SystemDesmukhMather) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemDuanSun.java b/src/main/java/neqsim/thermo/system/SystemDuanSun.java index 041a8096d2..1b2c883733 100644 --- a/src/main/java/neqsim/thermo/system/SystemDuanSun.java +++ b/src/main/java/neqsim/thermo/system/SystemDuanSun.java @@ -3,125 +3,82 @@ import neqsim.thermo.phase.PhaseDuanSun; import neqsim.thermo.phase.PhasePureComponentSolid; import neqsim.thermo.phase.PhaseSrkEos; -import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - * This class defines a thermodynamic system using the Duan Sun method used for CO2 - * + * This class defines a thermodynamic system using the Duan Sun method used for CO2. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemDuanSun extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - protected String[] CapeOpenProperties11 = - {"molecularWeight", "fugacityCoefficient", "logFugacityCoefficient"}; + protected String[] CapeOpenProperties11 = + {"molecularWeight", "fugacityCoefficient", "logFugacityCoefficient"}; - /** - *

- * Constructor for SystemDuanSun. - *

- */ - public SystemDuanSun() { - super(); - modelName = "Duan-Sun-model"; - attractiveTermNumber = 0; - phaseArray[0] = new PhaseSrkEos(); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseDuanSun(); - } - } - - /** - *

- * Constructor for SystemDuanSun. - *

- * - * @param T a double - * @param P a double - */ - public SystemDuanSun(double T, double P) { - super(T, P); - attractiveTermNumber = 0; - modelName = "Duan-Sun-model"; - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseDuanSun();// new PhaseGENRTLmodifiedWS(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + *

+ * Constructor for SystemDuanSun. + *

+ */ + public SystemDuanSun() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemDuanSun. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemDuanSun(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 0; - setNumberOfPhases(4); - modelName = "Duan-Sun-model"; - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemDuanSun. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemDuanSun(double T, double P) { + this(T, P, false); + } - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseDuanSun();// new PhaseGENRTLmodifiedWS(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemDuanSun. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemDuanSun(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 0; + modelName = "Duan-Sun-model"; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + phaseArray[0] = new PhaseSrkEos(); + phaseArray[0].setTemperature(T); + phaseArray[0].setPressure(P); + for (int i = 1; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseDuanSun(); // new PhaseGENRTLmodifiedWS(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemDuanSun clone() { - SystemDuanSun clonedSystem = null; - try { - clonedSystem = (SystemDuanSun) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedSystem; + if (solidPhaseCheck) { + setNumberOfPhases(4); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); } + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface fluid1 = new SystemSrkCPA(298.15, 10.0); - - fluid1.addComponent("CO2", 1.0); - fluid1.addComponent("nitrogen", 1.0); - fluid1.addComponent("water", 1.0); - fluid1.addComponent("NaCl", 1.0); - fluid1.setMixingRule(2); - - try { - ThermodynamicOperations testOps = new ThermodynamicOperations(fluid1); - testOps.TPflash(); - } catch (Exception e) { - logger.error(e.toString()); - } - fluid1.display(); + /** {@inheritDoc} */ + @Override + public SystemDuanSun clone() { + SystemDuanSun clonedSystem = null; + try { + clonedSystem = (SystemDuanSun) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemElectrolyteCPA.java b/src/main/java/neqsim/thermo/system/SystemElectrolyteCPA.java index 966e6f25fe..04512328a9 100644 --- a/src/main/java/neqsim/thermo/system/SystemElectrolyteCPA.java +++ b/src/main/java/neqsim/thermo/system/SystemElectrolyteCPA.java @@ -4,64 +4,54 @@ import neqsim.thermo.util.constants.FurstElectrolyteConstants; /** - * This class defines a thermodynamic system using the Electrolyte CPA EoS of Equinor - * + * This class defines a thermodynamic system using the Electrolyte CPA EoS of Equinor. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemElectrolyteCPA extends SystemFurstElectrolyteEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemElectrolyteCPA. - *

- */ - public SystemElectrolyteCPA() { - super(); - modelName = "Electrolyte-CPA-EOS"; - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseElectrolyteCPA(); - } - FurstElectrolyteConstants.setFurstParams("electrolyteCPA"); - this.useVolumeCorrection(false); - } + /** + *

+ * Constructor for SystemElectrolyteCPA. + *

+ */ + public SystemElectrolyteCPA() { + this(298.15, 1.0); + } - /** - *

- * Constructor for SystemElectrolyteCPA. - *

- * - * @param T a double - * @param P a double - */ - public SystemElectrolyteCPA(double T, double P) { - super(T, P); - attractiveTermNumber = 0; - modelName = "Electrolyte-CPA-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseElectrolyteCPA(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - FurstElectrolyteConstants.setFurstParams("electrolyteCPA"); - this.useVolumeCorrection(false); + /** + *

+ * Constructor for SystemElectrolyteCPA. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemElectrolyteCPA(double T, double P) { + super(T, P); + attractiveTermNumber = 0; + modelName = "Electrolyte-CPA-EOS"; + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseElectrolyteCPA(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } + FurstElectrolyteConstants.setFurstParams("electrolyteCPA"); + this.useVolumeCorrection(false); + } - /** {@inheritDoc} */ - @Override - public SystemElectrolyteCPA clone() { - SystemElectrolyteCPA clonedSystem = null; - try { - clonedSystem = (SystemElectrolyteCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] =(PhaseElectrolyteCPA) phaseArray[i].clone(); - // } - - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemElectrolyteCPA clone() { + SystemElectrolyteCPA clonedSystem = null; + try { + clonedSystem = (SystemElectrolyteCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemElectrolyteCPAstatoil.java b/src/main/java/neqsim/thermo/system/SystemElectrolyteCPAstatoil.java index 32bf40aef9..28e77b58e4 100644 --- a/src/main/java/neqsim/thermo/system/SystemElectrolyteCPAstatoil.java +++ b/src/main/java/neqsim/thermo/system/SystemElectrolyteCPAstatoil.java @@ -4,64 +4,54 @@ import neqsim.thermo.util.constants.FurstElectrolyteConstants; /** - * This class defines a thermodynamic system using the electrolyte CPA EoS Statoil model - * + * This class defines a thermodynamic system using the electrolyte CPA EoS Statoil model. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemElectrolyteCPAstatoil extends SystemFurstElectrolyteEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemElectrolyteCPAstatoil. - *

- */ - public SystemElectrolyteCPAstatoil() { - super(); - modelName = "Electrolyte-CPA-EOS-statoil"; - attractiveTermNumber = 15; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseElectrolyteCPAstatoil(); - } - FurstElectrolyteConstants.setFurstParams("electrolyteCPA"); - this.useVolumeCorrection(true); - } + /** + *

+ * Constructor for SystemElectrolyteCPAstatoil. + *

+ */ + public SystemElectrolyteCPAstatoil() { + this(298.15, 1.0); + } - /** - *

- * Constructor for SystemElectrolyteCPAstatoil. - *

- * - * @param T a double - * @param P a double - */ - public SystemElectrolyteCPAstatoil(double T, double P) { - super(T, P); - attractiveTermNumber = 15; - modelName = "Electrolyte-CPA-EOS-statoil"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseElectrolyteCPAstatoil(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - FurstElectrolyteConstants.setFurstParams("electrolyteCPA"); - this.useVolumeCorrection(true); + /** + *

+ * Constructor for SystemElectrolyteCPAstatoil. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemElectrolyteCPAstatoil(double T, double P) { + super(T, P); + attractiveTermNumber = 15; + modelName = "Electrolyte-CPA-EOS-statoil"; + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseElectrolyteCPAstatoil(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } + FurstElectrolyteConstants.setFurstParams("electrolyteCPA"); + this.useVolumeCorrection(true); + } - /** {@inheritDoc} */ - @Override - public SystemElectrolyteCPAstatoil clone() { - SystemElectrolyteCPAstatoil clonedSystem = null; - try { - clonedSystem = (SystemElectrolyteCPAstatoil) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] =(PhaseElectrolyteCPA) phaseArray[i].clone(); - // } - - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemElectrolyteCPAstatoil clone() { + SystemElectrolyteCPAstatoil clonedSystem = null; + try { + clonedSystem = (SystemElectrolyteCPAstatoil) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemEos.java b/src/main/java/neqsim/thermo/system/SystemEos.java index dc69e4bd11..8eca58b132 100644 --- a/src/main/java/neqsim/thermo/system/SystemEos.java +++ b/src/main/java/neqsim/thermo/system/SystemEos.java @@ -1,30 +1,32 @@ package neqsim.thermo.system; /** + * Base class for system with EOS. * * @author Even Solbraa */ -abstract class SystemEos extends neqsim.thermo.system.SystemThermo { - private static final long serialVersionUID = 1000; +public abstract class SystemEos extends neqsim.thermo.system.SystemThermo { + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemEos. - *

- */ - public SystemEos() { - super(); - } + /** + *

+ * Constructor for SystemEos. + *

+ */ + public SystemEos() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemEos(double T, double P) { - super(T, P); - } + /** + *

+ * Constructor for SystemEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + } } diff --git a/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEos.java b/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEos.java index b503b9ffde..49d898963c 100644 --- a/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEos.java +++ b/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEos.java @@ -3,64 +3,52 @@ import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; /** - * * This class defines a thermodynamic system using the electrolyte the Furst Electrolyte Eos. * * @author Even Solbraa * @version $Id: $Id */ public class SystemFurstElectrolyteEos extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemFurstElectrolyteEos. - *

- */ - public SystemFurstElectrolyteEos() { - super(); - modelName = "Electrolyte-ScRK-EOS"; - attractiveTermNumber = 2; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseModifiedFurstElectrolyteEos(); - } - } + /** + *

+ * Constructor for SystemFurstElectrolyteEos. + *

+ */ + public SystemFurstElectrolyteEos() { + this(298.15, 1.0); + } - /** - *

- * Constructor for SystemFurstElectrolyteEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemFurstElectrolyteEos(double T, double P) { - super(T, P); - attractiveTermNumber = 2; - modelName = "Electrolyte-ScRK-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseModifiedFurstElectrolyteEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemFurstElectrolyteEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemFurstElectrolyteEos(double T, double P) { + super(T, P); + attractiveTermNumber = 2; + modelName = "Electrolyte-ScRK-EOS"; + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseModifiedFurstElectrolyteEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } + } - /** {@inheritDoc} */ - @Override - public SystemFurstElectrolyteEos clone() { - SystemFurstElectrolyteEos clonedSystem = null; - try { - clonedSystem = (SystemFurstElectrolyteEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseModifiedFurstElectrolyteEos) - // phaseArray[i].clone(); - // } - - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemFurstElectrolyteEos clone() { + SystemFurstElectrolyteEos clonedSystem = null; + try { + clonedSystem = (SystemFurstElectrolyteEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEosMod2004.java b/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEosMod2004.java index 390c212af4..dd452464d3 100644 --- a/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEosMod2004.java +++ b/src/main/java/neqsim/thermo/system/SystemFurstElectrolyteEosMod2004.java @@ -10,57 +10,46 @@ * @version $Id: $Id */ public class SystemFurstElectrolyteEosMod2004 extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemFurstElectrolyteEosMod2004. - *

- */ - public SystemFurstElectrolyteEosMod2004() { - super(); - modelName = "Electrolyte-ScRK-EOS"; - attractiveTermNumber = 2; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseModifiedFurstElectrolyteEosMod2004(); - } - } + /** + *

+ * Constructor for SystemFurstElectrolyteEosMod2004. + *

+ */ + public SystemFurstElectrolyteEosMod2004() { + this(298.15, 1.0); + } - /** - *

- * Constructor for SystemFurstElectrolyteEosMod2004. - *

- * - * @param T a double - * @param P a double - */ - public SystemFurstElectrolyteEosMod2004(double T, double P) { - super(T, P); - attractiveTermNumber = 2; - modelName = "Electrolyte-ScRK-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseModifiedFurstElectrolyteEosMod2004(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemFurstElectrolyteEosMod2004. + *

+ * + * @param T a double + * @param P a double + */ + public SystemFurstElectrolyteEosMod2004(double T, double P) { + super(T, P); + attractiveTermNumber = 2; + modelName = "Electrolyte-ScRK-EOS"; + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseModifiedFurstElectrolyteEosMod2004(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } + } - /** {@inheritDoc} */ - @Override - public SystemFurstElectrolyteEosMod2004 clone() { - SystemFurstElectrolyteEosMod2004 clonedSystem = null; - try { - clonedSystem = (SystemFurstElectrolyteEosMod2004) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseModifiedFurstElectrolyteEos) - // phaseArray[i].clone(); - // } - - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemFurstElectrolyteEosMod2004 clone() { + SystemFurstElectrolyteEosMod2004 clonedSystem = null; + try { + clonedSystem = (SystemFurstElectrolyteEosMod2004) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemGERG2004Eos.java b/src/main/java/neqsim/thermo/system/SystemGERG2004Eos.java index e17a4cc7e7..e803e4e095 100644 --- a/src/main/java/neqsim/thermo/system/SystemGERG2004Eos.java +++ b/src/main/java/neqsim/thermo/system/SystemGERG2004Eos.java @@ -5,111 +5,94 @@ import neqsim.thermo.phase.PhasePureComponentSolid; /** - * This class defines a thermodynamic system using the GERG2004 equation of state - * + * This class defines a thermodynamic system using the GERG2004 equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemGERG2004Eos extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemGERG2004Eos. - *

- */ - public SystemGERG2004Eos() { - super(); - modelName = "GERG2004-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGERG2004Eos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - this.useVolumeCorrection(false); - commonInitialization(); - } - - /** - *

- * Constructor for SystemGERG2004Eos. - *

- * - * @param T a double - * @param P a double - */ - public SystemGERG2004Eos(double T, double P) { - super(T, P); - modelName = "GERG2004-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGERG2004Eos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(false); - commonInitialization(); - } - - /** - *

- * Constructor for SystemGERG2004Eos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemGERG2004Eos(double T, double P, boolean solidCheck) { - this(T, P); - modelName = "GERG2004-EOS"; + /** + *

+ * Constructor for SystemGERG2004Eos. + *

+ */ + public SystemGERG2004Eos() { + this(298.15, 1.0, false); + } - setNumberOfPhases(5); - solidPhaseCheck = solidCheck; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGERG2004Eos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemGERG2004Eos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemGERG2004Eos(double T, double P) { + this(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemGERG2004Eos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemGERG2004Eos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "GERG2004-EOS"; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } - this.useVolumeCorrection(false); - commonInitialization(); + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseGERG2004Eos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemGERG2004Eos clone() { - SystemGERG2004Eos clonedSystem = null; - try { - clonedSystem = (SystemGERG2004Eos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - return clonedSystem; + // What could set hydratecheck? Will never be true + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); } + this.useVolumeCorrection(false); + commonInitialization(); + } - /** - *

- * commonInitialization. - *

- */ - public void commonInitialization() { - setImplementedCompositionDeriativesofFugacity(false); - setImplementedPressureDeriativesofFugacity(false); - setImplementedTemperatureDeriativesofFugacity(false); + /** {@inheritDoc} */ + @Override + public SystemGERG2004Eos clone() { + SystemGERG2004Eos clonedSystem = null; + try { + clonedSystem = (SystemGERG2004Eos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } + + /** + *

+ * commonInitialization. + *

+ */ + public void commonInitialization() { + setImplementedCompositionDeriativesofFugacity(false); + setImplementedPressureDeriativesofFugacity(false); + setImplementedTemperatureDeriativesofFugacity(false); + } } diff --git a/src/main/java/neqsim/thermo/system/SystemGERGwaterEos.java b/src/main/java/neqsim/thermo/system/SystemGERGwaterEos.java index 417af8bf5d..e648660800 100644 --- a/src/main/java/neqsim/thermo/system/SystemGERGwaterEos.java +++ b/src/main/java/neqsim/thermo/system/SystemGERGwaterEos.java @@ -5,102 +5,82 @@ import neqsim.thermo.phase.PhasePureComponentSolid; /** - * This class defines a thermodynamic system using the GERG water equation of state - * + * This class defines a thermodynamic system using the GERG water equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemGERGwaterEos extends SystemPrEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemGERGwaterEos. - *

- */ - public SystemGERGwaterEos() { - super(); - modelName = "GERG-water-EOS"; - attractiveTermNumber = 10; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - *

- * Constructor for SystemGERGwaterEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemGERGwaterEos(double T, double P) { - super(T, P); - modelName = "GERG-water-EOS"; - attractiveTermNumber = 10; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } - - /** - *

- * Constructor for SystemGERGwaterEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemGERGwaterEos(double T, double P, boolean solidCheck) { - this(T, P); - modelName = "GERG-water-EOS"; - attractiveTermNumber = 10; - setNumberOfPhases(5); - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemGERGwaterEos. + *

+ */ + public SystemGERGwaterEos() { + this(298.15, 1.0, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemGERGwaterEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemGERGwaterEos(double T, double P) { + this(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemGERGwaterEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemGERGwaterEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "GERG-water-EOS"; + attractiveTermNumber = 10; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + // Recreates phases created in super constructor SystemPrEos + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhasePrEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemGERGwaterEos clone() { - SystemGERGwaterEos clonedSystem = null; - try { - clonedSystem = (SystemGERGwaterEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemGERGwaterEos clone() { + SystemGERGwaterEos clonedSystem = null; + try { + clonedSystem = (SystemGERGwaterEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemGEWilson.java b/src/main/java/neqsim/thermo/system/SystemGEWilson.java index c0644afac0..0ed121ac99 100644 --- a/src/main/java/neqsim/thermo/system/SystemGEWilson.java +++ b/src/main/java/neqsim/thermo/system/SystemGEWilson.java @@ -5,93 +5,77 @@ import neqsim.thermo.phase.PhaseSrkEos; /** - * This class defines a thermodynamic system using the Wilson GE model - * + * This class defines a thermodynamic system using the Wilson GE model. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemGEWilson extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemGEWilson() { - super(); - modelName = "UNIFAC-GE-model"; - attractiveTermNumber = 0; - phaseArray[0] = new PhaseSrkEos(); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGEWilson(); - } - } - - /** - *

- * Constructor for SystemGEWilson. - *

- * - * @param T a double - * @param P a double - */ - public SystemGEWilson(double T, double P) { - super(T, P); - attractiveTermNumber = 0; - modelName = "UNIFAC-GE-model"; - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGEWilson(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + *

+ * Constructor for SystemGEWilson. + *

+ */ + public SystemGEWilson() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemGEWilson. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemGEWilson(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 0; - setNumberOfPhases(4); - modelName = "UNIFAC-GE-model"; - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemGEWilson. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemGEWilson(double T, double P) { + this(T, P, false); + } - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGEWilson(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemGEWilson. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemGEWilson(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 0; + modelName = "UNIFAC-GE-model"; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + phaseArray[0] = new PhaseSrkEos(); + phaseArray[0].setTemperature(T); + phaseArray[0].setPressure(P); + for (int i = 1; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseGEWilson(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemGEWilson clone() { - SystemGEWilson clonedSystem = null; - try { - clonedSystem = (SystemGEWilson) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (solidPhaseCheck) { + setNumberOfPhases(4); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemGEWilson clone() { + SystemGEWilson clonedSystem = null; + try { + clonedSystem = (SystemGEWilson) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemInterface.java b/src/main/java/neqsim/thermo/system/SystemInterface.java index 866f701dba..5f34696c82 100644 --- a/src/main/java/neqsim/thermo/system/SystemInterface.java +++ b/src/main/java/neqsim/thermo/system/SystemInterface.java @@ -6,6 +6,7 @@ import neqsim.thermo.characterization.WaxModelInterface; import neqsim.thermo.component.ComponentInterface; import neqsim.thermo.phase.PhaseInterface; +import neqsim.thermo.phase.PhaseType; /** *

@@ -17,77 +18,130 @@ */ public interface SystemInterface extends Cloneable, java.io.Serializable { /** - *

- * saveFluid. - *

+ * return two fluid added as a new fluid. * - * @param id a int + * @param addFluid1 first fluid to add + * @param addFluid2 second fluid o add + * @return new fluid */ - public void saveFluid(int id); + public static SystemInterface addFluids(SystemInterface addFluid1, SystemInterface addFluid2) { + SystemInterface newFluid = addFluid1.clone(); + newFluid.addFluid(addFluid2); + return newFluid; + } /** *

- * getComponentNameTag. + * addCapeOpenProperty. *

* - * @return a {@link java.lang.String} object + * @param propertyName a {@link java.lang.String} object */ - public String getComponentNameTag(); + public void addCapeOpenProperty(String propertyName); /** *

- * setComponentNameTagOnNormalComponents. + * addCharacterized. *

* - * @param nameTag a {@link java.lang.String} object + * @param charNames an array of {@link java.lang.String} objects + * @param charFlowrate an array of type double + * @param molarMass an array of type double + * @param relativedensity an array of type double */ - public void setComponentNameTagOnNormalComponents(String nameTag); + public void addCharacterized(String[] charNames, double[] charFlowrate, double[] molarMass, + double[] relativedensity); /** - *

- * addPhaseFractionToPhase. - *

+ * add a component to a fluid. If component already exists, the moles will be added to the + * existing component. * - * @param fraction a double - * @param specification a {@link java.lang.String} object - * @param fromPhaseName a {@link java.lang.String} object - * @param toPhaseName a {@link java.lang.String} object + * @param inComponent Component object to add. */ - public void addPhaseFractionToPhase(double fraction, String specification, String fromPhaseName, - String toPhaseName); + public void addComponent(ComponentInterface inComponent); /** *

- * addPhaseFractionToPhase. + * addComponent. *

* - * @param fraction a double - * @param specification a {@link java.lang.String} object - * @param specifiedStream a {@link java.lang.String} object - * @param fromPhaseName a {@link java.lang.String} object - * @param toPhaseName a {@link java.lang.String} object + * @param index Component number to add + * @param moles number of moles (per second) of the component to be added to the fluid */ - public void addPhaseFractionToPhase(double fraction, String specification, String specifiedStream, - String fromPhaseName, String toPhaseName); + public void addComponent(int index, double moles); /** *

- * renameComponent. + * addComponent. *

* - * @param oldName a {@link java.lang.String} object - * @param newName a {@link java.lang.String} object + * @param index Component number to add + * @param moles number of moles (per second) of the component to be added to the fluid + * @param phaseNumber Number of the phase to add the component to */ - public void renameComponent(String oldName, String newName); + public void addComponent(int index, double moles, int phaseNumber); + + /** + * add a component to a fluid with no moles. + * + * @param name Name of the component to add. See NeqSim database for component in the database. + */ + public default void addComponent(String name) { + addComponent(name, 0); + } + + /** + * add a component to a fluid. If component already exists, the moles will be added to the + * existing component. + * + * @param name Name of the component to add. See NeqSim database for component in the database. + * @param moles number of moles (per second) of the component to be added to the fluid + */ + public void addComponent(String name, double moles); /** *

- * setComponentNameTag. + * addComponent. *

* - * @param nameTag a {@link java.lang.String} object + * @param name Name of the component to add. See NeqSim database for component in the database. + * @param moles number of moles (per second) of the component to be added to the fluid + * @param TC Critical temperature + * @param PC Critical pressure + * @param acs a double */ - public void setComponentNameTag(String nameTag); + public void addComponent(String name, double moles, double TC, double PC, double acs); + + /** + * add a component to a fluid. If component already exists, the moles will be added to the + * existing component. + * + * @param name Name of the component to add. See NeqSim database for component in the database. + * @param moles number of moles (per second) of the component to be added to the fluid + * @param phaseNumber Number of the phase to add the component to + */ + public void addComponent(String name, double moles, int phaseNumber); + + /** + * add a component to a fluid. If component already exists, the amount will be added to the + * existing component. + * + * @param name Name of the component to add. See NeqSim database for component in the database. + * @param value The amount. + * @param unitName the unit of rate (sported units are kg/sec, mol/sec, Nlitre/min, kg/hr, + * Sm^3/hr, Sm^3/day, MSm^3/day .. + */ + public void addComponent(String name, double value, String unitName); + + /** + * add a component to a fluid. I component already exists, it will be added to the component + * + * @param name Name of the component to add. See NeqSim database for component in the database. + * @param value rate of the component to add to the fluid + * @param unitName the unit of the flow rate (eg. mol/sec, kg/sec, etc.) + * @param phaseNumber Number of the phase to add the component to + */ + public void addComponent(String name, double value, String unitName, int phaseNumber); /** * Add named components to a System. Does nothing if components already exist in System. @@ -101,7 +155,6 @@ public default void addComponents(String[] names) { } } - /** * Add named components to a System with a number of moles. If component already exists, the moles * will be added to the component. @@ -118,841 +171,903 @@ public default void addComponents(String[] names, double[] moles) { /** *

- * calcResultTable. + * addFluid. *

* - * @return an array of {@link java.lang.String} objects + * @param addSystem a {@link neqsim.thermo.system.SystemInterface} object + * @return SystemInterface */ - public default String[][] calcResultTable() { - return createTable(""); - } + public SystemInterface addFluid(SystemInterface addSystem); /** - * method to return kinematic viscosity in a specified unit. + *

+ * addFluid. + *

* - * @param unit Supported units are m2/sec - * @return kinematic viscosity in specified unit + * @param addSystem a {@link neqsim.thermo.system.SystemInterface} object + * @param phase phase number of phase to add fluid to + * @return SystemInterface */ - public double getKinematicViscosity(String unit); + public SystemInterface addFluid(SystemInterface addSystem, int phase); /** *

- * Get number of components added to System. + * addGasToLiquid. *

* - * @return the number of components in System. + * @param fraction a double */ - public int getNumberOfComponents(); + public void addGasToLiquid(double fraction); /** - * method to get molar mass of a fluid phase. + *

+ * addLiquidToGas. + *

* - * @param unit Supported units are kg/mol, gr/mol - * @return molar mass in specified unit + * @param fraction a double */ - public double getMolarMass(String unit); + public void addLiquidToGas(double fraction); /** - * This method is used to set the total molar composition of a plus fluid. The total flow rate - * will be kept constant. The input mole fractions will be normalized. + *

+ * addCharacterized. + *

* - * @param molefractions is a double array taking the molar fraction of the components in the - * fluid. THe last molfraction is the mole fraction of the plus component + * @param charNames an array of {@link java.lang.String} objects + * @param charFlowrate an array of type double + * @param molarMass an array of type double + * @param relativedensity an array of type double + * @param lastIsPlusFraction True if last fraction is a Plus fraction */ - public void setMolarCompositionPlus(double[] molefractions); + public void addOilFractions(String[] charNames, double[] charFlowrate, double[] molarMass, + double[] relativedensity, boolean lastIsPlusFraction); /** *

- * saveFluid. + * addCharacterized. *

* - * @param id a int - * @param text a {@link java.lang.String} object + * @param charNames an array of {@link java.lang.String} objects + * @param charFlowrate an array of type double + * @param molarMass an array of type double + * @param relativedensity an array of type double + * @param lastIsPlusFraction True if last fraction is a Plus fraction + * @param lumpComponents True if component should be lumped + * @param numberOfPseudoComponents number of pseudo components */ - public void saveFluid(int id, String text); + public void addOilFractions(String[] charNames, double[] charFlowrate, double[] molarMass, + double[] relativedensity, boolean lastIsPlusFraction, boolean lumpComponents, + int numberOfPseudoComponents); /** - * This method is used to set the total molar composition of a characterized fluid. The total flow - * rate will be kept constant. The input mole fractions will be normalized. + * Add phase to SystemInterface object. + */ + public void addPhase(); + + /** + *

+ * addPhaseFractionToPhase. + *

* - * @param molefractions is a double array taking the molar fraction of the components in the - * fluid. THe last fraction in the array is the total molefraction of the characterized - * components. + * @param fraction a double + * @param specification a {@link java.lang.String} object + * @param fromPhaseName a {@link java.lang.String} object + * @param toPhaseName a {@link java.lang.String} object */ - public void setMolarCompositionOfPlusFluid(double[] molefractions); + public void addPhaseFractionToPhase(double fraction, String specification, String fromPhaseName, + String toPhaseName); /** - * method to get the Joule Thomson Coefficient of a system. Based on a phase mole fraction basis - * average. + *

+ * addPhaseFractionToPhase. + *

* - * @param unit Supported units are K/bar, C/bar - * @return Joule Thomson coefficient in specified unit + * @param fraction a double + * @param specification a {@link java.lang.String} object + * @param specifiedStream a {@link java.lang.String} object + * @param fromPhaseName a {@link java.lang.String} object + * @param toPhaseName a {@link java.lang.String} object */ - public double getJouleThomsonCoefficient(String unit); + public void addPhaseFractionToPhase(double fraction, String specification, String specifiedStream, + String fromPhaseName, String toPhaseName); /** - * method to return exergy in a specified unit. + *

+ * addPlusFraction. + *

* - * @param temperatureOfSurroundings in Kelvin - * @return exergy in specified unit - * @param exergyUnit a {@link java.lang.String} object + * @param componentName a {@link java.lang.String} object + * @param numberOfMoles a double + * @param molarMass a double + * @param density a double */ - public double getExergy(double temperatureOfSurroundings, String exergyUnit); + public void addPlusFraction(String componentName, double numberOfMoles, double molarMass, + double density); /** - * method to return exergy defined as (h1-T0*s1) in a unit Joule. + *

+ * addSalt. + *

* - * @param temperatureOfSurroundings in Kelvin - * @return a double + * @param componentName a {@link java.lang.String} object + * @param value a double */ - public double getExergy(double temperatureOfSurroundings); + public void addSalt(String componentName, double value); /** - * method to get the Joule Thomson Coefficient of a system. Based on a phase mole fraction basis - * average + *

+ * addSolidComplexPhase. + *

* - * @return Joule Thomson coefficient in K/bar + * @param type a {@link java.lang.String} object */ - public double getJouleThomsonCoefficient(); + public void addSolidComplexPhase(String type); /** - * method to return mass of fluid. + * method to add true boiling point fraction. * - * @param unit Supported units are kg, gr, tons - * @return mass in specified unit + * @param componentName selected name of the component to be added + * @param numberOfMoles number of moles to be added + * @param molarMass molar mass of the component in kg/mol + * @param density density of the component in g/cm3 */ - public double getMass(String unit); + public void addTBPfraction(String componentName, double numberOfMoles, double molarMass, + double density); /** *

- * getMoleFractionsSum. + * addTBPfraction. *

* - * @return a double + * @param componentName a {@link java.lang.String} object + * @param numberOfMoles a double + * @param molarMass a double + * @param density a double + * @param criticalTemperature a double + * @param criticalPressure a double + * @param acentricFactor a double */ - public double getMoleFractionsSum(); + public void addTBPfraction(String componentName, double numberOfMoles, double molarMass, + double density, double criticalTemperature, double criticalPressure, double acentricFactor); /** - * method to get the speed of sound of a system. THe sound speed is implemented based on a molar - * average over the phases + * Add to component names. * - * @param unit Supported units are m/s, km/h - * @return speed of sound in m/s + * @param name Component name to add */ - public double getSoundSpeed(String unit); + public void addToComponentNames(String name); /** - * method to get the speed of sound of a system. THe sound speed is implemented based on a molar - * average over the phases + *

+ * Getter for property allowPhaseShift. + *

* - * @return speed of sound in m/s + * @return a boolean */ - public double getSoundSpeed(); + public boolean allowPhaseShift(); /** *

- * removePhaseKeepTotalComposition. + * Setter for property allowPhaseShift. *

* - * @param specPhase a int + * @param allowPhaseShift a boolean */ - public void removePhaseKeepTotalComposition(int specPhase); + public void allowPhaseShift(boolean allowPhaseShift); /** - * Calculates thermodynamic and physical properties of a fluid using initThermoProperties() and - * initPhysicalProperties(). + *

+ * autoSelectMixingRule. + *

*/ - public void initProperties(); + public void autoSelectMixingRule(); /** - * return two fluid added as a new fluid. + *

+ * autoSelectModel. + *

* - * @param addFluid1 first fluid to add - * @param addFluid2 second fluid o add - * @return new fluid + * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public static SystemInterface addFluids(SystemInterface addFluid1, SystemInterface addFluid2) { - SystemInterface newFluid = addFluid1.clone(); - newFluid.addFluid(addFluid2); - return newFluid; - } + public SystemInterface autoSelectModel(); /** *

- * getInterfacialTension. + * calc_x_y. + *

+ */ + public void calc_x_y(); + + /** + *

+ * calc_x_y_nonorm. + *

+ */ + public void calc_x_y_nonorm(); + + /** + *

+ * calcHenrysConstant. *

* - * @param phase1 a int - * @param phase2 a int - * @param unit a {@link java.lang.String} object + * @param component a {@link java.lang.String} object * @return a double */ - public double getInterfacialTension(int phase1, int phase2, String unit); + public double calcHenrysConstant(String component); /** - * Calculates physical properties of type propertyName. + *

+ * calcInterfaceProperties. + *

+ */ + public void calcInterfaceProperties(); + + /** + *

+ * calcKIJ. + *

* - * @param propertyName a {@link java.lang.String} object + * @param ok a boolean */ - public void initPhysicalProperties(String propertyName); + public void calcKIJ(boolean ok); /** - * method to return heat capacity ratio calculated as Cp/(Cp-R). + *

+ * calcResultTable. + *

* - * @return kappa + * @return an array of {@link java.lang.String} objects */ - public default double getGamma2() { - return getCp() / (getCp() - ThermodynamicConstantsInterface.R * getTotalNumberOfMoles()); + public default String[][] calcResultTable() { + return createTable(""); } /** - * method to return heat capacity ratio/adiabatic index/Poisson constant. + *

+ * changeComponentName. + *

* - * @return kappa + * @param name a {@link java.lang.String} object + * @param newName a {@link java.lang.String} object */ - public double getGamma(); + public void changeComponentName(String name, String newName); /** - * method to return fluid volume. + *

+ * checkStability. + *

* - * @param unit Supported units are m3, litre, m3/kg, m3/mol - * @return volume in specified unit + * @return a boolean */ - public double getVolume(String unit); + public boolean checkStability(); /** - * method to return flow rate of fluid. + *

+ * checkStability. + *

* - * @param flowunit Supported units are kg/sec, kg/min, kg/hr m3/sec, m3/min, m3/hr, mole/sec, - * mole/min, mole/hr, Sm3/hr, Sm3/day - * @return flow rate in specified unit + * @param val a boolean */ - public double getFlowRate(String flowunit); + public void checkStability(boolean val); /** - * method to set the pressure of a fluid (same pressure for all phases). - * - * @param newPressure in specified unit - * @param unit unit can be bar, bara, barg or atm + *

+ * chemicalReactionInit. + *

*/ - public void setPressure(double newPressure, String unit); + public void chemicalReactionInit(); /** - * method to set the temperature of a fluid (same temperature for all phases). - * - * @param newTemperature in specified unit - * @param unit unit can be C or K (Celcius of Kelvin) + *

+ * clearAll. + *

*/ - public void setTemperature(double newTemperature, String unit); + public void clearAll(); /** - * method to return the volume fraction of a phase note: without Peneloux volume correction. + *

+ * clone. + *

* - * @param phaseNumber number of the phase to get volume fraction for - * @return volume fraction + * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public double getVolumeFraction(int phaseNumber); + public SystemInterface clone(); /** - * method to return the volume fraction of a phase note: with Peneloux volume correction. + * method to read pure component and interaction parameters from the NeqSim database and create + * temporary tables with parameters for active fluid. * - * @param phaseNumber number of the phase to get volume fraction for - * @return volume fraction + * @param reset If reset is set to true, new temporary tables with parameters for the added + * components will be created. When parameters are needed (eg. when adding components or + * when setting a mixing rule) it will try to find them in the temporary tables first eg. + * COMPTEMP (for pure component parameters) and INTERTEMP (for interaction parameters). If + * reset is set to false it will not create new temporary tables. If a fluid is created + * with the same components many times, performance improvements will be obtained, if + * temporary tables are created the first time (reset=true), and then the same tables is + * used when creating new fluids with the same temporary tables (reset=false) */ - public double getCorrectedVolumeFraction(int phaseNumber); + public void createDatabase(boolean reset); /** *

- * getHeatOfVaporization. + * createTable. *

* - * @return a double + * @param name a {@link java.lang.String} object + * @return an array of {@link java.lang.String} objects */ - public double getHeatOfVaporization(); + public String[][] createTable(String name); /** - * method to return total enthalpy in a specified unit. + *

+ * deleteFluidPhase. + *

* - * @param unit Supported units are 'J', 'J/mol', 'J/kg' and 'kJ/kg' - * @return enthalpy in specified unit + * @param phase a int */ - public double getEnthalpy(String unit); + public void deleteFluidPhase(int phase); /** - * method to return internal energy (U) in a specified unit. - * - * @param unit Supported units are 'J', 'J/mol', 'J/kg' and 'kJ/kg' - * @return enthalpy in specified unit + *

+ * display. + *

*/ - public double getInternalEnergy(String unit); + public default void display() { + display(this.getFluidName()); + } /** *

- * isForcePhaseTypes. + * display. *

* - * @return a boolean + * @param name a {@link java.lang.String} object */ - public boolean isForcePhaseTypes(); + public void display(String name); /** *

- * setForcePhaseTypes. + * Getter for property multiPhaseCheck. *

* - * @param forcePhaseTypes a boolean + * @return a boolean */ - public void setForcePhaseTypes(boolean forcePhaseTypes); + public boolean doMultiPhaseCheck(); /** - * Set the flow rate of all components to zero. + *

+ * doSolidPhaseCheck. + *

* - * @deprecated use {@link #setEmptyFluid()} instead. + * @return a boolean */ - @Deprecated - public default void removeMoles() { - setEmptyFluid(); - } + public boolean doSolidPhaseCheck(); - /** - * Set the flow rate of all components to zero. - */ - public void setEmptyFluid(); + /** {@inheritDoc} */ + @Override + public boolean equals(Object o); /** *

- * setMolarFlowRates. + * Getter for property beta. + * + * Gets value for heaviest phase. *

* - * @param moles an array of {@link double} objects + * @return Beta value */ - public void setMolarFlowRates(double[] moles); + public double getBeta(); /** *

- * setComponentNames. + * Getter for property beta for a specific phase. *

* - * @param componentNames an array of {@link java.lang.String} objects + * @param phase Number of phase to get beta for. + * @return Beta value for */ - public void setComponentNames(String[] componentNames); + public double getBeta(int phase); /** *

- * calc_x_y_nonorm. + * getCapeOpenProperties10. *

+ * + * @return an array of {@link java.lang.String} objects */ - public void calc_x_y_nonorm(); + public String[] getCapeOpenProperties10(); /** *

- * saveObjectToFile. + * getCapeOpenProperties11. *

* - * @param filePath a {@link java.lang.String} object - * @param fluidName a {@link java.lang.String} object + * @return an array of {@link java.lang.String} objects */ - public void saveObjectToFile(String filePath, String fluidName); + public String[] getCapeOpenProperties11(); /** *

- * readObjectFromFile. + * getCASNumbers. *

* - * @param filePath a {@link java.lang.String} object - * @param fluidName a {@link java.lang.String} object - * @return a {@link neqsim.thermo.system.SystemInterface} object + * @return an array of {@link java.lang.String} objects */ - public SystemInterface readObjectFromFile(String filePath, String fluidName); + public String[] getCASNumbers(); /** *

- * getLiquidVolume. + * Getter for property characterization. *

* - * @return a double + * @return a {@link neqsim.thermo.characterization.Characterise} object */ - public double getLiquidVolume(); + public neqsim.thermo.characterization.Characterise getCharacterization(); /** *

- * resetPhysicalProperties. + * getChemicalReactionOperations. *

+ * + * @return a {@link neqsim.chemicalReactions.ChemicalReactionOperations} object */ - public void resetPhysicalProperties(); + public ChemicalReactionOperations getChemicalReactionOperations(); /** *

- * phaseToSystem. + * getCompFormulaes. *

* - * @param phaseNumber1 a int - * @param phaseNumber2 a int - * @return a {@link neqsim.thermo.system.SystemInterface} object + * @return an array of {@link java.lang.String} objects */ - public SystemInterface phaseToSystem(int phaseNumber1, int phaseNumber2); + public String[] getCompFormulaes(); /** *

- * changeComponentName. + * getCompIDs. *

* - * @param name a {@link java.lang.String} object - * @param newName a {@link java.lang.String} object + * @return an array of {@link java.lang.String} objects */ - public void changeComponentName(String name, String newName); + public String[] getCompIDs(); + + /** + * Get normalized names of all components in System. + * + * @return Array of names of components in System. + */ + public String[] getCompNames(); /** *

- * getWaxModel. + * Get component by index. *

* - * @return a {@link neqsim.thermo.characterization.WaxModelInterface} object + * @param i Component index + * @return a {@link neqsim.thermo.component.ComponentInterface} object */ - public WaxModelInterface getWaxModel(); + public default ComponentInterface getComponent(int i) { + return getPhase(0).getComponent(i); + } /** *

- * getWaxCharacterisation. + * Get component by name. *

* - * @return a {@link neqsim.thermo.characterization.WaxCharacterise} object + * @param name Name of component + * @return a {@link neqsim.thermo.component.ComponentInterface} object */ - public neqsim.thermo.characterization.WaxCharacterise getWaxCharacterisation(); + public default ComponentInterface getComponent(String name) { + return getPhase(0).getComponent(name); + } + + /** + * Get normalized names of components in System. + * + * @return Array of names of components in system. + */ + public default String[] getComponentNames() { + return getPhase(0).getComponentNames(); + } /** *

- * phaseToSystem. + * getComponentNameTag. *

* - * @param phaseName a {@link java.lang.String} object - * @return a {@link neqsim.thermo.system.SystemInterface} object + * @return a {@link java.lang.String} object */ - public SystemInterface phaseToSystem(String phaseName); + public String getComponentNameTag(); /** - * method to get the total molar flow rate of individual components in a fluid. + * method to return fluid volume with Peneloux volume correction. * - * @return molar flow of individual components in unit mol/sec + * @return volume in unit m3 */ - public double[] getMolarRate(); - + public double getCorrectedVolume(); /** - * Returns true if phase exists and is not null. + * method to return the volume fraction of a phase note: with Peneloux volume correction. * - * @param i Phase number - * @return True if phase exists, false if not. + * @param phaseNumber number of the phase to get volume fraction for + * @return volume fraction */ - public boolean IsPhase(int i); - + public double getCorrectedVolumeFraction(int phaseNumber); /** - *

- * getPhase. - *

+ * method to return specific heat capacity (Cp). * - * @param phaseTypeName a {@link java.lang.String} object - * @return a {@link neqsim.thermo.phase.PhaseInterface} object + * @return Cp in unit J/K */ - public PhaseInterface getPhase(String phaseTypeName); + public double getCp(); /** - *

- * getPhaseIndexOfPhase. - *

+ * method to return specific heat capacity (Cp) in a specified unit. * - * @param phaseTypeName a {@link java.lang.String} object - * @return a int + * @param unit Supported units are J/K, J/molK, J/kgK and kJ/kgK + * @return Cp in specified unit */ - public int getPhaseIndexOfPhase(String phaseTypeName); + public double getCp(String unit); /** - *

- * setTotalFlowRate. - *

+ * method to return specific heat capacity (Cv). * - * @param flowRate a double - * @param flowunit a {@link java.lang.String} object + * @return Cv in unit J/K */ - public void setTotalFlowRate(double flowRate, String flowunit); + public double getCv(); /** - *

- * Returns the overall mole composition vector in unit mole fraction. - *

+ * method to return specific heat capacity (Cp) in a specified unit. * - * @return an array of {@link double} objects + * @param unit Supported units are J/K, J/molK, J/kgK and kJ/kgK + * @return Cp in specified unit */ - public double[] getMolarComposition(); + public double getCv(String unit); /** - *

- * getNumberOfOilFractionComponents. - *

+ * method to get density of a fluid note: without Peneloux volume correction. * - * @return a int + * @return density with unit kg/m3 */ - public int getNumberOfOilFractionComponents(); + public double getDensity(); /** - *

- * setHeavyTBPfractionAsPlusFraction. - *

+ * method to get density of a fluid note: with Peneloux volume correction. * - * @return a boolean + * @param unit Supported units are kg/m3, mol/m3 + * @return density in specified unit */ - public boolean setHeavyTBPfractionAsPlusFraction(); + public double getDensity(String unit); /** *

- * getCapeOpenProperties11. + * getdVdPtn. *

* - * @return an array of {@link java.lang.String} objects + * @return a double */ - public String[] getCapeOpenProperties11(); + public double getdVdPtn(); /** *

- * getCapeOpenProperties10. + * getdVdTpn. *

* - * @return an array of {@link java.lang.String} objects + * @return a double */ - public String[] getCapeOpenProperties10(); + public double getdVdTpn(); /** *

- * getLowestGibbsEnergyPhase. + * getEmptySystemClone. *

* - * @return a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public PhaseInterface getLowestGibbsEnergyPhase(); + public SystemInterface getEmptySystemClone(); /** - *

- * getOilFractionNormalBoilingPoints. - *

+ * method to get the total enthalpy of a fluid. * - * @return an array of {@link double} objects + * @return molar mass in unit J (Joule) */ - public double[] getOilFractionNormalBoilingPoints(); + public double getEnthalpy(); /** - *

- * getOilFractionLiquidDensityAt25C. - *

+ * method to return total enthalpy in a specified unit. * - * @return an array of {@link double} objects + * @param unit Supported units are 'J', 'J/mol', 'kJ/kmol', 'J/kg' and 'kJ/kg' + * @return enthalpy in specified unit */ - public double[] getOilFractionLiquidDensityAt25C(); + public double getEnthalpy(String unit); /** - *

- * getOilFractionMolecularMass. - *

+ * method to return total entropy of the fluid. * - * @return an array of {@link double} objects + * @return entropy in unit J/K (Joule/Kelvin) */ - public double[] getOilFractionMolecularMass(); + public double getEntropy(); /** - *

- * getOilFractionIDs. - *

+ * method to return total entropy of the fluid. * - * @return an array of {@link int} objects + * @param unit unit supported units are J/K, J/molK, J/kgK and kJ/kgK + * @return entropy in specified unit */ - public int[] getOilFractionIDs(); + public double getEntropy(String unit); /** - *

- * getMoleFraction. - *

+ * method to return exergy defined as (h1-T0*s1) in a unit Joule. * - * @param phaseNumber a int + * @param temperatureOfSurroundings in Kelvin * @return a double */ - public double getMoleFraction(int phaseNumber); + public double getExergy(double temperatureOfSurroundings); /** - * method to return specific heat capacity (Cv). + * method to return exergy in a specified unit. * - * @return Cv in unit J/K + * @param temperatureOfSurroundings in Kelvin + * @param exergyUnit a {@link java.lang.String} object + * @return exergy in specified unit */ - public double getCv(); + public double getExergy(double temperatureOfSurroundings, String exergyUnit); /** - * method to return specific heat capacity (Cp) in a specified unit. + * method to return flow rate of fluid. * - * @param unit Supported units are J/K, J/molK, J/kgK and kJ/kgK - * @return Cp in specified unit + * @param flowunit Supported units are kg/sec, kg/min, kg/hr, kg/day, m3/sec, m3/min, m3/hr, + * idSm3/hr, Sm3/sec, Sm3/hr, Sm3/day, MSm3/day, mole/sec, mole/min, mole/hr + * @return flow rate in specified unit */ - public double getCv(String unit); + public double getFlowRate(String flowunit); /** *

- * Getter for property characterization. + * Getter for property info. *

* - * @return a {@link neqsim.thermo.characterization.Characterise} object + * @return a {@link java.lang.String} object */ - public neqsim.thermo.characterization.Characterise getCharacterization(); + public String getFluidInfo(); /** *

- * readObject. + * getFluidName. *

* - * @param ID a int - * @return a {@link neqsim.thermo.system.SystemInterface} object + * @return a {@link java.lang.String} object */ - public SystemInterface readObject(int ID); + public String getFluidName(); /** - *

- * getCompIDs. - *

+ * method to return heat capacity ratio/adiabatic index/Poisson constant. * - * @return an array of {@link java.lang.String} objects + * @return kappa */ - public String[] getCompIDs(); + public double getGamma(); /** - *

- * isImplementedCompositionDeriativesofFugacity. - *

+ * method to return heat capacity ratio calculated as Cp/(Cp-R). * - * @param isImpl a boolean + * @return kappa */ - public void isImplementedCompositionDeriativesofFugacity(boolean isImpl); + public default double getGamma2() { + return getCp() / (getCp() - ThermodynamicConstantsInterface.R * getTotalNumberOfMoles()); + } /** *

- * saveObject. + * getGasPhase. *

* - * @param ID a int - * @param text a {@link java.lang.String} object + * @return a {@link neqsim.thermo.phase.PhaseInterface} object */ - public void saveObject(int ID, String text); + public PhaseInterface getGasPhase(); /** - * Set mole fractions of all components to 0. + *

+ * getGibbsEnergy. + *

+ * + * @return a double */ - public void reset(); + public double getGibbsEnergy(); /** *

- * getCASNumbers. + * getHeatOfVaporization. *

* - * @return an array of {@link java.lang.String} objects + * @return a double */ - public String[] getCASNumbers(); + public double getHeatOfVaporization(); /** *

- * getMolecularWeights. + * getHelmholtzEnergy. *

* - * @return an array of {@link double} objects + * @return a double */ - public double[] getMolecularWeights(); + public double getHelmholtzEnergy(); /** *

- * getNormalBoilingPointTemperatures. + * Getter for property hydrateCheck. *

* - * @return an array of {@link double} objects + * @return a boolean */ - public double[] getNormalBoilingPointTemperatures(); + public boolean getHydrateCheck(); /** - * Get names of all components in System. + * Get ideal liquid density of fluid in given unit. * - * @return an array of {@link java.lang.String} objects + * @param unit {@link java.lang.String} Supported units are kg/m3 and gr/cm3 + * @return a double */ - public String[] getCompNames(); + public double getIdealLiquidDensity(String unit); /** *

- * getCompFormulaes. + * Getter for property initType. *

* - * @return an array of {@link java.lang.String} objects + * @return a int */ - public String[] getCompFormulaes(); + public int getInitType(); /** - *

- * getWtFraction. - *

+ * method to return interfacial tension between two phases. * - * @param phaseNumber a int - * @return a double + * @param phase1 phase number of phase1 + * @param phase2 phase number of phase2 + * @return interfacial tension with unit N/m */ - public double getWtFraction(int phaseNumber); + public double getInterfacialTension(int phase1, int phase2); /** *

- * isMultiphaseWaxCheck. + * getInterfacialTension. *

* - * @return a boolean + * @param phase1 phase number of phase1 + * @param phase2 phase number of phase2 + * @param unit a {@link java.lang.String} object + * @return interfacial tension with specified unit */ - public boolean isMultiphaseWaxCheck(); + public double getInterfacialTension(int phase1, int phase2, String unit); /** - *

- * setMultiphaseWaxCheck. - *

+ * method to return interfacial tension between two phases. * - * @param multiphaseWaxCheck a boolean + * @param phase1 phase type of phase1 as string (valid phases are gas, oil, aqueous) + * @param phase2 phase type of phase2 as string (valid phases are gas, oil, aqueous) + * @return interfacial tension with unit N/m. If one or both phases does not exist - the method + * will return NaN */ - public void setMultiphaseWaxCheck(boolean multiphaseWaxCheck); + public double getInterfacialTension(String phase1, String phase2); /** - *

- * This method is used to set the total molar composition of a fluid. The total flow rate will be - * kept constant. The input mole fractions will be normalized. - *

+ * method to return internal energy (U) in unit J. * - * @param moles an array of {@link double} objects + * @return internal energy in unit Joule (J) */ - public void setMolarComposition(double[] moles); + public double getInternalEnergy(); /** - * return the phase of to specified type if the phase does not exist, the method will return null. + * method to return internal energy (U) in a specified unit. * - * @param phaseTypeName the phase type to be returned (gas, oil, aqueous, wax, hydrate are - * supported) - * @return a {@link neqsim.thermo.phase.PhaseInterface} object + * @param unit Supported units are 'J', 'J/mol', 'J/kg' and 'kJ/kg' + * @return enthalpy in specified unit */ - public PhaseInterface getPhaseOfType(String phaseTypeName); + public double getInternalEnergy(String unit); /** *

- * setUseTVasIndependentVariables. + * getInterphaseProperties. *

* - * @param useTVasIndependentVariables a boolean + * @return a {@link neqsim.physicalProperties.interfaceProperties.InterphasePropertiesInterface} + * object */ - public void setUseTVasIndependentVariables(boolean useTVasIndependentVariables); + public InterphasePropertiesInterface getInterphaseProperties(); /** - * method to add true boiling point fraction. + * method to get the Joule Thomson Coefficient of a system. Based on a phase mole fraction basis + * average * - * @param componentName selected name of the component to be added - * @param numberOfMoles number of moles to be added - * @param molarMass molar mass of the component in kg/mol - * @param density density of the component in g/cm3 + * @return Joule Thomson coefficient in K/bar */ - public void addTBPfraction(String componentName, double numberOfMoles, double molarMass, - double density); + public double getJouleThomsonCoefficient(); /** - *

- * addTBPfraction. - *

+ * method to get the Joule Thomson Coefficient of a system. Based on a phase mole fraction basis + * average. * - * @param componentName a {@link java.lang.String} object - * @param numberOfMoles a double - * @param molarMass a double - * @param density a double - * @param criticalTemperature a double - * @param criticalPressure a double - * @param acentricFactor a double + * @param unit Supported units are K/bar, C/bar + * @return Joule Thomson coefficient in specified unit */ - public void addTBPfraction(String componentName, double numberOfMoles, double molarMass, - double density, double criticalTemperature, double criticalPressure, double acentricFactor); + public double getJouleThomsonCoefficient(String unit); /** - *

- * addPlusFraction. - *

+ * method to return heat capacity ratio/adiabatic index/Poisson constant. * - * @param componentName a {@link java.lang.String} object - * @param numberOfMoles a double - * @param molarMass a double - * @param density a double + * @return kappa */ - public void addPlusFraction(String componentName, double numberOfMoles, double molarMass, - double density); + public double getKappa(); /** *

- * addSalt. + * getKinematicViscosity. *

* - * @param componentName a {@link java.lang.String} object - * @param value a double + * @return a double */ - public void addSalt(String componentName, double value); + public double getKinematicViscosity(); /** - *

- * deleteFluidPhase. - *

+ * method to return kinematic viscosity in a specified unit. * - * @param phase a int + * @param unit Supported units are m2/sec + * @return kinematic viscosity in specified unit */ - public void deleteFluidPhase(int phase); + public double getKinematicViscosity(String unit); /** *

- * setBmixType. + * getLiquidPhase. *

* - * @param bmixType a int + * @return a {@link neqsim.thermo.phase.PhaseInterface} object */ - public void setBmixType(int bmixType); + public PhaseInterface getLiquidPhase(); /** *

- * hasSolidPhase. + * getLiquidVolume. *

* - * @return a boolean + * @return a double */ - public boolean hasSolidPhase(); + public double getLiquidVolume(); /** *

- * addSolidComplexPhase. + * getLowestGibbsEnergyPhase. *

* - * @param type a {@link java.lang.String} object + * @return a {@link neqsim.thermo.phase.PhaseInterface} object */ - public void addSolidComplexPhase(String type); + public PhaseInterface getLowestGibbsEnergyPhase(); /** - *

- * resetCharacterisation. - *

+ * method to return mass of fluid. + * + * @param unit Supported units are kg, gr, tons + * @return mass in specified unit */ - public void resetCharacterisation(); + public double getMass(String unit); /** *

- * getMaxNumberOfPhases. + * Getter for property maxNumberOfPhases. *

* - * @return a int + * @return Gets the maximum allowed number of phases to use. */ public int getMaxNumberOfPhases(); /** *

- * setMaxNumberOfPhases. + * getMixingRule. *

* - * @param maxNumberOfPhases a int + * @return a int */ - public void setMaxNumberOfPhases(int maxNumberOfPhases); + public int getMixingRule(); /** *

@@ -961,1514 +1076,1540 @@ public void addPlusFraction(String componentName, double numberOfMoles, double m * * @return a {@link java.lang.String} object */ - public java.lang.String getMixingRuleName(); + public String getMixingRuleName(); /** *

- * Getter for property modelName. + * Getter for property modelName. *

* * @return a {@link java.lang.String} object */ - public java.lang.String getModelName(); + public String getModelName(); /** *

- * tuneModel. + * Returns the overall mole composition vector in unit mole fraction. *

* - * @param model a {@link java.lang.String} object - * @param val a double - * @param phase a int + * @return an array of type double */ - public void tuneModel(String model, double val, int phase); + public double[] getMolarComposition(); /** - * add a component to a fluid. If component name already exists, it will be added to the component + * Get molar mass of system. * - * @param inComponent a {@link neqsim.thermo.component.ComponentInterface} object + * @return molar mass in unit kg/mol */ - public void addComponent(ComponentInterface inComponent); + public double getMolarMass(); /** - * add a component to a fluid. If component already exists, it will be added to the component + * method to get molar mass of a fluid phase. * - * @param name a {@link java.lang.String} object + * @param unit Supported units are kg/mol, gr/mol + * @return molar mass in specified unit + */ + public double getMolarMass(String unit); + + /** + * method to get the total molar flow rate of individual components in a fluid. + * + * @return molar flow of individual components in unit mol/sec */ - public void addComponent(String name); + public double[] getMolarRate(); /** - * add a component to a fluid. If component already exists, it will be added to the component + * method to return molar volume of the fluid note: without Peneloux volume correction. * - * @param moles number of moles (per second) of the component to be added to the fluid - * @param name a {@link java.lang.String} object + * @return molar volume volume in unit m3/mol*1e5 */ - public void addComponent(String name, double moles); + public double getMolarVolume(); /** - * add a component to a fluid. If component already exists, it will be added to the component + * method to return molar volume of the fluid: eventual volume correction included. * - * @param name Name of the component to be added. See NeqSim database for component in the - * database. - * @param unitName the unit of rate (sported units are kg/sec, mol/sec, Nlitre/min, kg/hr, - * Sm^3/hr, Sm^3/day, MSm^3/day .. - * @param value a double + * @param unit Supported units are m3/mol, litre/mol + * @return molar volume volume in unit */ - public void addComponent(String name, double value, String unitName); + public double getMolarVolume(String unit); /** *

- * addComponent. + * getMolecularWeights. *

* - * @param name a {@link java.lang.String} object - * @param moles a double - * @param TC a double - * @param PC a double - * @param acs a double + * @return an array of type double */ - public void addComponent(String name, double moles, double TC, double PC, double acs); + public double[] getMolecularWeights(); /** - * add a component to a fluid. I component already exists, it will be added to the component + *

+ * getMoleFraction. + *

* - * @param name Name of the component to be added. See NeqSim database for component in the - * database. - * @param moles number of moles (per second) of the component to be added to the fluid - * @param phaseNumber the phase number of the phase to add the component to + * @param phaseNumber a int + * @return a double */ - public void addComponent(String name, double moles, int phaseNumber); + public double getMoleFraction(int phaseNumber); /** - * add a component to a fluid. I component already exists, it will be added to the component + *

+ * Get sum of mole fractions for all components. NB! init(0) must be called first. + *

* - * @param name Name of the component to be added. See NeqSim database for component in the - * database. - * @param value rate of the component to be added to the fluid - * @param unitName the unit of the flow rate (eg. mol/sec, kg/sec, etc.) - * @param phaseNumber the phase number of the phase to add the component to + * @return a double */ - public void addComponent(String name, double value, String unitName, int phaseNumber); + public double getMoleFractionsSum(); /** *

- * addComponent. + * getNormalBoilingPointTemperatures. *

* - * @param index a int - * @param moles a double + * @return an array of type double */ - public void addComponent(int index, double moles); + public double[] getNormalBoilingPointTemperatures(); /** *

- * addComponent. + * Get number of components added to System. *

* - * @param index a int - * @param moles a double - * @param phaseNumber a int + * @return the number of components in System. */ - public void addComponent(int index, double moles, int phaseNumber); + public int getNumberOfComponents(); /** *

- * getBeta. + * Getter for property numberOfMoles. *

* - * @param phase a int * @return a double + * @deprecated Replaced by {@link getTotalNumberOfMoles} */ - public double getBeta(int phase); + @Deprecated + public default double getNumberOfMoles() { + return getTotalNumberOfMoles(); + } /** *

- * save. + * getNumberOfOilFractionComponents. *

* - * @param name a {@link java.lang.String} object + * @return a int */ - public void save(String name); + public int getNumberOfOilFractionComponents(); /** *

- * setModel. + * Getter for property numberOfPhases. *

* - * @param model a {@link java.lang.String} object - * @return a {@link neqsim.thermo.system.SystemInterface} object + * @return Number of phases used */ - public SystemInterface setModel(String model); + public int getNumberOfPhases(); /** *

- * removeComponent. + * getOilFractionIDs. *

* - * @param name a {@link java.lang.String} object + * @return an array of {@link int} objects */ - public void removeComponent(String name); + public int[] getOilFractionIDs(); /** *

- * setMixingRule. + * getOilFractionLiquidDensityAt25C. *

* - * @param typename a {@link java.lang.String} object - * @param GEmodel a {@link java.lang.String} object + * @return an array of type double */ - public void setMixingRule(String typename, String GEmodel); + public double[] getOilFractionLiquidDensityAt25C(); /** *

- * normalizeBeta. + * getOilFractionMolecularMass. *

+ * + * @return an array of type double */ - public void normalizeBeta(); + public double[] getOilFractionMolecularMass(); /** *

- * Indexed getter for property phaseIndex. + * getOilFractionNormalBoilingPoints. *

* - * @param index a int - * @return a int + * @return an array of type double */ - public int getPhaseIndex(int index); + public double[] getOilFractionNormalBoilingPoints(); /** *

- * Setter for property initType. + * Getter for property PC. *

* - * @param initType a int + * @return Critical pressure */ - public void setInitType(int initType); + public double getPC(); + + /** + * Get phase number i from SystemInterface object. + * + * @param i Phase number + * @return a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public PhaseInterface getPhase(int i); /** *

- * checkStability. + * getPhase. *

* - * @param val a boolean + * @param pt a {@link neqsim.thermo.phase.PhaseType} object + * @return a {@link neqsim.thermo.phase.PhaseInterface} object */ - public void checkStability(boolean val); + public PhaseInterface getPhase(PhaseType pt); + + /** + *

+ * getPhase. + *

+ * + * @param phaseTypeName a {@link java.lang.String} object + * @return a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public PhaseInterface getPhase(String phaseTypeName); + + /** + * method to return phase fraction of selected phase. + * + * @param phaseTypeName gas/oil/aqueous + * @param unit mole/volume/weight + * @return phase: fraction in specified unit + */ + public double getPhaseFraction(String phaseTypeName, String unit); /** *

- * hasPlusFraction. + * Indexed getter for property phaseIndex. *

* - * @return a boolean + * @param i Phase number + * @return PhaseIndex to index into phaseArray. + */ + public int getPhaseIndex(int i); + + /** + * Get property phaseIndex corresponding to a phase. + * + * @param phase Phase object to search for. + * @return PhaseIndex to index into phaseArray. */ - public boolean hasPlusFraction(); + public int getPhaseIndex(PhaseInterface phase); /** *

- * checkStability. + * Get property phaseIndex corresponding to a phase. *

* - * @return a boolean + * @param phaseTypeName a {@link java.lang.String} object + * @return PhaseIndex to index into phaseArray. */ - public boolean checkStability(); + public int getPhaseIndex(String phaseTypeName); /** *

- * Getter for property initType. + * Get phase number of phase of specific type. *

* - * @return a int + * @param pt Phase type to look for. + * @return Phase number */ - public int getInitType(); + public int getPhaseNumberOfPhase(PhaseType pt); /** *

- * invertPhaseTypes. + * Get phase number of phase of specific type. * *

+ * + * @param phaseTypeName Name of phase type to look for + * @return Phase number */ - public void invertPhaseTypes(); + public default int getPhaseNumberOfPhase(String phaseTypeName) { + return getPhaseNumberOfPhase(PhaseType.byDesc(phaseTypeName)); + } /** - * method to return fluid volume with Peneloux volume correction. + * return the phase of to specified type if the phase does not exist, the method will return null. * - * @return volume in unit m3 + * @param phaseTypeName the phase type to be returned (gas, oil, aqueous, wax, hydrate are + * supported) + * @return a {@link neqsim.thermo.phase.PhaseInterface} object */ - public double getCorrectedVolume(); + public PhaseInterface getPhaseOfType(String phaseTypeName); /** *

- * readFluid. + * getPhases. *

* - * @param fluidName a {@link java.lang.String} object + * @return an array of {@link neqsim.thermo.phase.PhaseInterface} objects */ - public void readFluid(String fluidName); + public PhaseInterface[] getPhases(); /** - *

- * calcKIJ. - *

+ * method to return pressure. * - * @param ok a boolean + * @return pressure in unit bara */ - public void calcKIJ(boolean ok); + public double getPressure(); /** *

- * write. + * method to return pressure of phase. *

* - * @param name a {@link java.lang.String} object - * @param filename a {@link java.lang.String} object - * @param newfile a boolean + * @param phaseNumber Number of the phase to get pressure for + * @return pressure in unit bara */ - public void write(String name, String filename, boolean newfile); + public double getPressure(int phaseNumber); /** - *

- * useVolumeCorrection. - *

+ * method to return pressure in a specified unit. * - * @param volcor a boolean + * @param unit Supported units are bara, barg, Pa, MPa, psi, psia, psig + * @return pressure in specified unit */ - public void useVolumeCorrection(boolean volcor); + public double getPressure(String unit); /** - * method to set the mixing rule for the fluid. + * Get physical properties of System. * - * @param typename a {@link java.lang.String} object + * @return System properties */ - public void setMixingRule(String typename); + public SystemProperties getProperties(); /** *

- * Getter for property numericDerivatives. + * getProperty. *

* - * @return a boolean + * @param prop a {@link java.lang.String} object + * @return a double */ - public boolean isNumericDerivatives(); + public double getProperty(String prop); /** *

- * Setter for property numericDerivatives. + * getProperty. *

* - * @param numericDerivatives a boolean + * @param prop a {@link java.lang.String} object + * @param phase a int + * @return a double */ - public void setNumericDerivatives(boolean numericDerivatives); + public double getProperty(String prop, int phase); /** *

- * Getter for property info. + * getProperty. *

* - * @return a {@link java.lang.String} object + * @param prop a {@link java.lang.String} object + * @param compName a {@link java.lang.String} object + * @param phase a int + * @return a double */ - public java.lang.String getFluidInfo(); + public double getProperty(String prop, String compName, int phase); /** *

- * Setter for property info. . + * getResultTable. *

* - * @param info a {@link java.lang.String} object + * @return an array of {@link java.lang.String} objects */ - public void setFluidInfo(java.lang.String info); + public String[][] getResultTable(); /** - *

- * setPhaseIndex. - *

+ * method to get the speed of sound of a system. The sound speed is implemented based on a molar + * average over the phases * - * @param index a int - * @param phaseIndex a int + * @return speed of sound in m/s */ - public void setPhaseIndex(int index, int phaseIndex); + public double getSoundSpeed(); /** - *

- * Indexed setter for property phaseIndex. - *

+ * method to get the speed of sound of a system. The sound speed is implemented based on a molar + * average over the phases * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param numb a int + * @param unit Supported units are m/s, km/h + * @return speed of sound in m/s */ - public void setPhase(PhaseInterface phase, int numb); + public double getSoundSpeed(String unit); /** - * method to read pure component and interaction parameters from the NeqSim database and create - * temporary tables with parameters for active fluid. + *

+ * Getter for property standard. + *

* - * @param reset If reset is set to true, new temporary tables with parameters for the added - * components will be created. When parameters are needed (eg. when adding components or - * when setting a mixing rule) it will try to find them in the temporary tables first eg. - * COMPTEMP (for pure component parameters) and INTERTEMP (for interaction parameters). If - * reset is set to false it will not create new temporary tables. If a fluid is created - * with the same components many times, performance improvements will be obtained, if - * temporary tables are created the first time (reset=true), and then the same tables is - * used when creating new fluids with the same temporary tables (reset=false) + * @return a {@link neqsim.standards.StandardInterface} object */ - public void createDatabase(boolean reset); + public neqsim.standards.StandardInterface getStandard(); /** *

- * resetDatabase. + * Getter for property standard. *

+ * + * @param standardName a {@link java.lang.String} object + * @return a {@link neqsim.standards.StandardInterface} object */ - public void resetDatabase(); + public neqsim.standards.StandardInterface getStandard(String standardName); /** *

- * Setter for property solidPhaseCheck. + * Getter for property TC. *

* - * @param test a boolean + * @return Critical temperature */ - public void setSolidPhaseCheck(boolean test); + public double getTC(); /** - *

- * doSolidPhaseCheck. - *

+ * method to return temperature. * - * @return a boolean + * @return temperature in unit Kelvin */ - public boolean doSolidPhaseCheck(); + public double getTemperature(); /** *

- * Getter for property multiPhaseCheck. + * method to return temperature. *

* - * @return a boolean + * @param phaseNumber phase to get temperature of + * @return temperature in unit Kelvin */ - public boolean doMultiPhaseCheck(); + public double getTemperature(int phaseNumber); /** - * method to specify if calculations should check for more than two fluid phases. + * method to return temperature in a specified unit. * - * @param doMultiPhaseCheck Specify if the calculations should check for more than two fluid - * phases. Default is two fluid phases (gas and liquid). If set to true the program will - * check for gas and multiple liquid phases (eg. gas-oil-aqueous). + * @param unit Supported units are K, C, R + * @return temperature in specified unit */ - public void setMultiPhaseCheck(boolean doMultiPhaseCheck); + public double getTemperature(String unit); /** - * Calculate thermodynamic properties of the fluid using the init type set in fluid. + * method to return conductivity of a fluid. * - * @see getInitType + * @return conductivity in unit W/mK */ - public default void init() { - this.init(this.getInitType()); - } + public double getThermalConductivity(); /** - * method to calculate thermodynamic properties of the fluid. The temperature, pressure, number of - * phases and composition of the phases will be used as basis for calculation. - * + * method to return thermal conductivity in a specified unit. * - * @param number - The number can be 0, 1, 2 or 3. 0: Set feed composition for all phases. 1: - * Calculation of density, fugacities and Z-factor 2: 1 + calculation of enthalpy, entropy, - * Cp, Cv, and most other thermodynamic properties 3: 1+2 + Calculation of composition - * derivatives of fugacity coefficients. + * @param unit Supported units are W/mK, W/cmK + * @return conductivity in specified unit */ - public void init(int number); + public double getThermalConductivity(String unit); /** - * method to calculate thermodynamic properties of the selected phase. The temperature, pressure, - * number of phases and composition of the phase will be used as basis for calculation. + * Getter for property totalNumberOfMoles. * - * @param number - The number can be 0, 1, 2 or 3. 0: Set feed composition. 1: Calculation of - * density, fugacities and Z-factor 2: 1 + calculation of enthalpy, entropy, Cp, Cv, and - * most other thermodynamic properties 3: 1+2 + Calculation of composition derivatives of - * fugacity coefficients. - * @param phase a int + * @return Total molar flow rate of fluid in unit mol/sec */ - public void init(int number, int phase); - + public double getTotalNumberOfMoles(); /** - * Calculates thermodynamic properties of a fluid using the init(2) method. + * method to return viscosity of a fluid. + * + * @return viscosity in unit kg/msec */ - public default void initThermoProperties() { - init(2); - } + public double getViscosity(); /** - * initNumeric. + * method to return viscosity in a specified unit. + * + * @param unit Supported units are kg/msec, cP (centipoise), Pas (Pascal*second) + * @return viscosity in specified unit */ - public void initNumeric(); + public double getViscosity(String unit); /** - *

- * display. - *

+ * method to return fluid volume. + * + * @return volume in unit m3*1e5 */ - public void display(); + public double getVolume(); /** - *

- * addFluid. - *

+ * method to return fluid volume. * - * @param addSystem a {@link neqsim.thermo.system.SystemInterface} object - * @return SystemInterface + * @param unit Supported units are m3, litre, m3/kg, m3/mol + * @return volume in specified unit */ - public SystemInterface addFluid(SystemInterface addSystem); + public double getVolume(String unit); /** - *

- * display. - *

+ * method to return the volume fraction of a phase note: without Peneloux volume correction. * - * @param name a {@link java.lang.String} object + * @param phaseNumber number of the phase to get volume fraction for + * @return volume fraction */ - public void display(String name); + public double getVolumeFraction(int phaseNumber); /** *

- * Getter for property hydrateCheck. + * getWaxCharacterisation. *

* - * @return a boolean + * @return a {@link neqsim.thermo.characterization.WaxCharacterise} object */ - @Deprecated - public boolean doHydrateCheck(); + public neqsim.thermo.characterization.WaxCharacterise getWaxCharacterisation(); /** *

- * Getter for property hydrateCheck. + * getWaxModel. *

* - * @return a boolean + * @return a {@link neqsim.thermo.characterization.WaxModelInterface} object */ - public boolean getHydrateCheck(); + public WaxModelInterface getWaxModel(); /** *

- * createTable. + * getWtFraction. *

* - * @param name a {@link java.lang.String} object - * @return an array of {@link java.lang.String} objects + * @param phaseNumber a int + * @return a double */ - public String[][] createTable(String name); + public double getWtFraction(int phaseNumber); /** - *

- * setHydrateCheck. - *

+ * method to return compressibility factor of a fluid compressibility factor is defined in EoS + * from PV=ZnRT where V is total volume of fluid. * - * @param hydrateCheck a boolean + * @return compressibility factor Z */ - public void setHydrateCheck(boolean hydrateCheck); + public double getZ(); /** - *

- * calcBeta. - *

+ * method to return Z volume corrected gas compressibility * - * @return a double - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. + * @return double Z volume corrected */ - public double calcBeta() - throws neqsim.util.exception.IsNaNException, neqsim.util.exception.TooManyIterationsException; + public double getZvolcorr(); /** - *

- * setAllComponentsInPhase. - *

+ * Verify if system has a component. * - * @param phase a int + * @param name Name of component to look for. NB! Converts name to normalized name. + * @return True if component is found. */ - public void setAllComponentsInPhase(int phase); + public default boolean hasComponent(String name) { + return hasComponent(name, true); + } /** - *

- * initTotalNumberOfMoles. - *

+ * Verify if system has a component. * - * @param change a double + * @param name Name of component to look for. + * @param normalized Set true to convert input name to normalized component name. + * @return True if component is found. */ - public void initTotalNumberOfMoles(double change); + public default boolean hasComponent(String name, boolean normalized) { + return getPhase(0).hasComponent(name, normalized); + } + + /** {@inheritDoc} */ + @Override + public int hashCode(); /** - *

- * calc_x_y. - *

+ * Verify if system has a phase of a specific type. + * + * @param pt PhaseType to look for + * @return True if system contains a phase of requested type */ - public void calc_x_y(); + public boolean hasPhaseType(PhaseType pt); /** - * Get phase number i from SystemInterface object. + * Verify if system has a phase of a specific type. * - * @param i a int - * @return a {@link neqsim.thermo.phase.PhaseInterface} object + * @param phaseTypeName PhaseType to look for + * @return True if system contains a phase of requested type */ - public PhaseInterface getPhase(int i); + public default boolean hasPhaseType(String phaseTypeName) { + return hasPhaseType(PhaseType.byDesc(phaseTypeName)); + } /** *

- * reset_x_y. + * Getter for property hasPlusFraction. *

+ * + * @return a boolean */ - public void reset_x_y(); + public boolean hasPlusFraction(); /** *

- * isChemicalSystem. + * hasSolidPhase. *

* - * @param temp a boolean + * @return True if system contains a solid phase */ - public void isChemicalSystem(boolean temp); + public default boolean hasSolidPhase() { + return hasPhaseType(PhaseType.SOLID); // || hasPhaseType(PhaseType.SOLIDCOMPLEX); + } /** - * Add phase to SystemInterface object. + * Calculate thermodynamic properties of the fluid using the init type set in fluid. + * + * @see getInitType */ - public void addPhase(); + public default void init() { + this.init(this.getInitType()); + } /** - *

- * setAttractiveTerm. - *

+ * method to calculate thermodynamic properties of the fluid. The temperature, pressure, number of + * phases and composition of the phases will be used as basis for calculation. * - * @param i a int + * @param number - The number can be 0, 1, 2 or 3. 0: Set feed composition for all phases. 1: + * Calculation of density, fugacities and Z-factor 2: 1 + calculation of enthalpy, entropy, + * Cp, Cv, and most other thermodynamic properties 3: 1+2 + Calculation of composition + * derivatives of fugacity coefficients. */ - public void setAttractiveTerm(int i); + public void init(int number); + + // public void setPressure(double newPressure, int phaseNumber); /** - *

- * setBeta. - *

+ * method to calculate thermodynamic properties of the selected phase. The temperature, pressure, + * number of phases and composition of the phase will be used as basis for calculation. * + * @param number - The number can be 0, 1, 2 or 3. 0: Set feed composition. 1: Calculation of + * density, fugacities and Z-factor 2: 1 + calculation of enthalpy, entropy, Cp, Cv, and + * most other thermodynamic properties 3: 1+2 + Calculation of composition derivatives of + * fugacity coefficients. * @param phase a int - * @param b a double */ - public void setBeta(int phase, double b); + public void init(int number, int phase); /** *

- * removePhase. + * init_x_y. *

- * - * @param specPhase a int */ - public void removePhase(int specPhase); + public void init_x_y(); /** *

- * phaseToSystem. + * Calculate system beta values using Phase.getNumberOfMolesInPhase and getTotalNumberOfMoles. *

- * - * @param newPhase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public SystemInterface phaseToSystem(PhaseInterface newPhase); + public void initBeta(); /** - *

- * method to set the temperature of a fluid (same temperature for all phases). - *

- * - * @param temp a double + * initNumeric. */ - public void setTemperature(double temp); + public void initNumeric(); /** - *

- * setTemperature. - *

- * - * @param newTemperature a double - * @param phaseNumber a int + * Init physical properties for all phases and interfaces. */ - public void setTemperature(double newTemperature, int phaseNumber); - // public void setPressure(double newPressure, int phaseNumber); + public void initPhysicalProperties(); /** - * method to set the pressure of a fluid (same pressure for all phases). + * Calculates physical properties of type propertyName. * - * @param pres pressure in unit bara (absolute pressure in bar) + * @param propertyName a {@link java.lang.String} object */ - public void setPressure(double pres); + public void initPhysicalProperties(String propertyName); /** - * method to return pressure. - * - * @return pressure in unit bara + * Calculates thermodynamic and physical properties of a fluid using initThermoProperties() and + * initPhysicalProperties(). */ - public double getPressure(); + public void initProperties(); /** - * method to return pressure in a specified unit. - * - * @param unit Supported units are bara, barg, Pa and MPa - * @return pressure in specified unit + *

+ * initRefPhases. + *

*/ - public double getPressure(String unit); + public void initRefPhases(); + + /** + * Calculates thermodynamic properties of a fluid using the init(2) method. + */ + public default void initThermoProperties() { + init(2); + } /** *

- * reInitPhaseType. + * initTotalNumberOfMoles. *

+ * + * @param change a double */ - public void reInitPhaseType(); + public void initTotalNumberOfMoles(double change); /** - * specify the type for the physical properties you want to use. Type 0 Orginal/default 1 Water 2 - * Glycol 3 Amine. - * - * @param type a int + *

+ * invertPhaseTypes. + *

*/ - public void setPhysicalPropertyModel(int type); + public void invertPhaseTypes(); /** *

- * clearAll. + * isChemicalSystem. *

+ * + * @return a boolean */ - public void clearAll(); + public boolean isChemicalSystem(); /** *

- * method to return pressure of phase. + * isChemicalSystem. *

* - * @param phaseNumber a int - * @return a double + * @param temp a boolean */ - public double getPressure(int phaseNumber); + public void isChemicalSystem(boolean temp); /** - * method to get density of a fluid note: without Peneloux volume correction. + *

+ * isForcePhaseTypes. + *

* - * @return density with unit kg/m3 + * @return a boolean */ - public double getDensity(); + public boolean isForcePhaseTypes(); /** - * method to get density of a fluid note: with Peneloux volume correction. + *

+ * isImplementedCompositionDeriativesofFugacity. + *

* - * @param unit Supported units are kg/m3, mol/m3 - * @return density in specified unit + * @return a boolean */ - public double getDensity(String unit); + public boolean isImplementedCompositionDeriativesofFugacity(); /** - * method to return fluid volume. + *

+ * isImplementedCompositionDeriativesofFugacity. + *

* - * @return volume in unit m3*1e5 + * @param isImpl a boolean */ - public double getVolume(); + public void isImplementedCompositionDeriativesofFugacity(boolean isImpl); /** *

- * getChemicalReactionOperations. + * isImplementedPressureDeriativesofFugacity. *

* - * @return a {@link neqsim.chemicalReactions.ChemicalReactionOperations} object + * @return a boolean */ - public ChemicalReactionOperations getChemicalReactionOperations(); + public boolean isImplementedPressureDeriativesofFugacity(); /** *

- * isChemicalSystem. + * isImplementedTemperatureDeriativesofFugacity. *

* * @return a boolean */ - public boolean isChemicalSystem(); + public boolean isImplementedTemperatureDeriativesofFugacity(); /** - * method to return molar volume of the fluid note: without Peneloux volume correction. + *

+ * isMultiphaseWaxCheck. + *

* - * @return molar volume volume in unit m3/mol*1e5 + * @return a boolean */ - public double getMolarVolume(); + public boolean isMultiphaseWaxCheck(); /** - * method to get the total molar mass of a fluid. + *

+ * Getter for property numericDerivatives. + *

* - * @return molar mass in unit kg/mol + * @return a boolean */ - public double getMolarMass(); + public boolean isNumericDerivatives(); /** - * method to get the total enthalpy of a fluid. + * Returns true if phase exists and is not null. * - * @return molar mass in unit J (Joule) + * @param i Phase number + * @return True if phase exists, false if not. */ - public double getEnthalpy(); + public boolean isPhase(int i); /** *

- * calcInterfaceProperties. + * normalizeBeta. *

*/ - public void calcInterfaceProperties(); + public void normalizeBeta(); /** - *

- * getInterphaseProperties. - *

- * - * @return a {@link neqsim.physicalProperties.interfaceProperties.InterphasePropertiesInterface} - * object + * Order phases by density. */ - public InterphasePropertiesInterface getInterphaseProperties(); + public void orderByDensity(); /** *

- * initBeta. + * phaseToSystem. *

* - * @return a double + * @param phaseNumber a int + * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public double initBeta(); + public SystemInterface phaseToSystem(int phaseNumber); /** *

- * init_x_y. + * phaseToSystem. *

- */ - public void init_x_y(); - - /** - * method to return total entropy of the fluid. * - * @return entropy in unit J/K (Joule/Kelvin) + * @param phaseNumber1 a int + * @param phaseNumber2 a int + * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public double getEntropy(); + public SystemInterface phaseToSystem(int phaseNumber1, int phaseNumber2); /** - * method to return total entropy of the fluid. + *

+ * phaseToSystem. + *

* - * @param unit unit supported units are J/K, J/molK, J/kgK and kJ/kgK - * @return entropy in specified unit + * @param newPhase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public double getEntropy(String unit); + public SystemInterface phaseToSystem(PhaseInterface newPhase); /** - * method to return temperature. + *

+ * phaseToSystem. + *

* - * @return temperature in unit Kelvin + * @param phaseName a {@link java.lang.String} object + * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public double getTemperature(); + public SystemInterface phaseToSystem(String phaseName); /** - * method to return temperature in a specified unit. - * - * @param unit Supported units are K, C, R - * @return temperature in specified unit + * Prints the fluid in a visually appealing way. */ - public double getTemperature(String unit); + public default void prettyPrint() { + neqsim.thermo.util.readwrite.TablePrinter.printTable(createTable(getFluidName())); + } /** *

- * getTemperature. + * readFluid. *

* - * @param phaseNumber a int - * @return a double + * @param fluidName a {@link java.lang.String} object */ - public double getTemperature(int phaseNumber); + public void readFluid(String fluidName); /** *

- * getBeta. + * readObject. *

* - * @return a double + * @param ID a int + * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public double getBeta(); + public SystemInterface readObject(int ID); /** *

- * chemicalReactionInit. + * readObjectFromFile. *

+ * + * @param filePath a {@link java.lang.String} object + * @param fluidName a {@link java.lang.String} object + * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public void chemicalReactionInit(); + public SystemInterface readObjectFromFile(String filePath, String fluidName); /** - * Init physical properties for all phases and interfaces. + *

+ * reInitPhaseType. + *

*/ - public void initPhysicalProperties(); + public void reInitPhaseType(); /** *

- * setBeta. + * removeComponent. *

* - * @param b a double + * @param name Name of the component to remove. See NeqSim database for component in the database. */ - public void setBeta(double b); - // public double getdfugdt(int i, int j); + public void removeComponent(String name); /** *

- * method to set the phase type of a given phase. + * removePhase. *

* - * @param phaseToChange a int - * @param newPhaseType a int + * @param specPhase a int */ - public void setPhaseType(int phaseToChange, int newPhaseType); + public void removePhase(int specPhase); /** *

- * setNumberOfPhases. + * removePhaseKeepTotalComposition. *

* - * @param number a int + * @param specPhase a int */ - public void setNumberOfPhases(int number); + public void removePhaseKeepTotalComposition(int specPhase); /** *

- * getTC. + * renameComponent. *

* - * @return a double + * @param oldName a {@link java.lang.String} object + * @param newName a {@link java.lang.String} object */ - public double getTC(); + public void renameComponent(String oldName, String newName); /** *

- * getPC. + * replacePhase. *

* - * @return a double + * @param repPhase a int + * @param newPhase a {@link neqsim.thermo.phase.PhaseInterface} object */ - public double getPC(); + public void replacePhase(int repPhase, PhaseInterface newPhase); + + /** + * Set mole fractions of all components to 0. + */ + public void reset(); /** *

- * setTC. + * reset_x_y. *

- * - * @param TC a double */ - public void setTC(double TC); + public void reset_x_y(); /** *

- * setPC. + * resetCharacterisation. *

- * - * @param PC a double */ - public void setPC(double PC); + public void resetCharacterisation(); /** *

- * getPhases. + * resetDatabase. *

- * - * @return an array of {@link neqsim.thermo.phase.PhaseInterface} objects */ - public PhaseInterface[] getPhases(); + public void resetDatabase(); /** *

- * getNumberOfPhases. + * resetPhysicalProperties. *

- * - * @return a int */ - public int getNumberOfPhases(); + public void resetPhysicalProperties(); /** *

- * getGibbsEnergy. + * Save System object to file. *

* - * @return a double + * @param name File path to save to. */ - public double getGibbsEnergy(); + public void save(String name); /** - * method to return internal energy (U) in unit J. + *

+ * saveFluid. + *

* - * @return internal energy in unit Joule (J) + * @param id a int */ - public double getInternalEnergy(); + public void saveFluid(int id); /** *

- * getHelmholtzEnergy. + * saveFluid. *

* - * @return a double + * @param id a int + * @param text a {@link java.lang.String} object */ - public double getHelmholtzEnergy(); + public void saveFluid(int id, String text); /** *

- * getComponent. + * saveObject. *

* - * @param name a {@link java.lang.String} object - * @return a {@link neqsim.thermo.component.ComponentInterface} object + * @param ID a int + * @param text a {@link java.lang.String} object */ - public ComponentInterface getComponent(String name); + public void saveObject(int ID, String text); /** *

- * getComponent. + * saveObjectToFile. *

* - * @param number a int - * @return a {@link neqsim.thermo.component.ComponentInterface} object + * @param filePath a {@link java.lang.String} object + * @param fluidName a {@link java.lang.String} object */ - public ComponentInterface getComponent(int number); + public void saveObjectToFile(String filePath, String fluidName); /** *

- * getNumberOfMoles. + * saveToDataBase. *

- * - * @return a double */ - public double getNumberOfMoles(); + public void saveToDataBase(); /** *

- * clone. + * setAllComponentsInPhase. *

* - * @return a {@link neqsim.thermo.system.SystemInterface} object + * @param phase a int */ - public SystemInterface clone(); + public void setAllComponentsInPhase(int phase); /** - * method to set mixing rule used for the fluid. + * Set phase type of all phases. * - * @param type The type of mixing rule to be used for the fluid. 1 - classic mixing rule with all - * kij set to zero 2 -classic mixing rule with kij from NeqSim database 3- classic mixing - * rule with temperature dependent kij 4- Huron Vidal mixing rule with parameters from - * NeqSim database 7 -classic mixing rule with kij of CPA from NeqSim Database 9 - * -classicmixing rule with temperature dependent kij of CPA from NeqSim database - * 10-classic mixing rule with temperature and composition dependent kij of CPA from NeqSim - * database + * @param pt PhaseType to set phases as. */ - public void setMixingRule(int type); + public void setAllPhaseType(PhaseType pt); /** *

- * getComponentNames. + * setAttractiveTerm. *

* - * @return an array of {@link java.lang.String} objects + * @param i a int */ - public String[] getComponentNames(); + public void setAttractiveTerm(int i); /** *

- * getdVdPtn. + * Setter for property beta. NB! Sets beta = b for first phase and 1-b for second + * phase, not for multiphase systems. *

* - * @return a double + * @param b Beta value to set. */ - public double getdVdPtn(); + public void setBeta(double b); /** *

- * getdVdTpn. + * Setter for property beta for a given phase. *

* - * @return a double - */ - public double getdVdTpn(); - - /** - * method to return specific heat capacity (Cp). - * - * @return Cp in unit J/K + * @param phase Phase number to set beta for. + * @param b Beta value to set. */ - public double getCp(); + public void setBeta(int phase, double b); /** - * method to return specific heat capacity (Cp) in a specified unit. + *

+ * setBmixType. + *

* - * @param unit Supported units are J/K, J/molK, J/kgK and kJ/kgK - * @return Cp in specified unit + * @param bmixType a int */ - public double getCp(String unit); - - /** - * method to return heat capacity ratio/adiabatic index/Poisson constant. - * - * @return kappa */ - - public double getKappa(); + public void setBmixType(int bmixType); /** *

- * replacePhase. + * setComponentNames. *

* - * @param repPhase a int - * @param newPhase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param componentNames an array of {@link java.lang.String} objects */ - public void replacePhase(int repPhase, PhaseInterface newPhase); + public void setComponentNames(String[] componentNames); /** *

- * getGasPhase. + * setComponentNameTag. *

* - * @return a {@link neqsim.thermo.phase.PhaseInterface} object + * @param nameTag a {@link java.lang.String} object */ - public PhaseInterface getGasPhase(); + public void setComponentNameTag(String nameTag); /** *

- * getLiquidPhase. + * setComponentNameTagOnNormalComponents. *

* - * @return a {@link neqsim.thermo.phase.PhaseInterface} object + * @param nameTag a {@link java.lang.String} object */ - public PhaseInterface getLiquidPhase(); + public void setComponentNameTagOnNormalComponents(String nameTag); /** - * method to return compressibility factor of a fluid compressibility factor is defined in EoS - * from PV=ZnRT where V is total volume of fluid. - * - * @return compressibility factor Z + * Set the flow rate (moles) of all components to zero. */ - public double getZ(); + public void setEmptyFluid(); /** - * method to return viscosity of a fluid. + *

+ * Setter for property info. . + *

* - * @return viscosity in unit kg/msec + * @param info a {@link java.lang.String} object */ - public double getViscosity(); + public void setFluidInfo(String info); /** - * method to return viscosity in a specified unit. + *

+ * setFluidName. + *

* - * @param unit Supported units are kg/msec, cP (centipoise) - * @return viscosity in specified unit + * @param fluidName a {@link java.lang.String} object */ - public double getViscosity(String unit); + public void setFluidName(String fluidName); /** - * method to return thermal conductivity. + *

+ * setForcePhaseTypes. + *

* - * @return conductivity in unit W/mK - * @deprecated use {@link #getThermalConductivity()} instead. + * @param forcePhaseTypes a boolean */ - @Deprecated - public double getConductivity(); + public void setForcePhaseTypes(boolean forcePhaseTypes); /** - * method to return thermal conductivity in a specified unit. + *

+ * setHeavyTBPfractionAsPlusFraction. + *

* - * @param unit Supported units are W/mK, W/cmK - * @return conductivity in specified unit - * @deprecated use {@link #getThermalConductivity(String unit)} instead. + * @return a boolean */ - @Deprecated - public double getConductivity(String unit); + public boolean setHeavyTBPfractionAsPlusFraction(); /** - * method to return conductivity of a fluid. + *

+ * setHydrateCheck. + *

* - * @return conductivity in unit W/mK + * @param hydrateCheck a boolean */ - public double getThermalConductivity(); + public void setHydrateCheck(boolean hydrateCheck); /** - * method to return thermal conductivity in a specified unit. + *

+ * setImplementedCompositionDeriativesofFugacity. + *

* - * @param unit Supported units are W/mK, W/cmK - * @return conductivity in specified unit + * @param implementedCompositionDeriativesofFugacity a boolean */ - public double getThermalConductivity(String unit); + public void setImplementedCompositionDeriativesofFugacity( + boolean implementedCompositionDeriativesofFugacity); /** - * method to return interfacial tension between two phases. + *

+ * setImplementedPressureDeriativesofFugacity. + *

* - * @param phase1 phase type of phase1 as string (valid phases are gas, oil, aqueous) - * @param phase2 phase type of phase2 as string (valid phases are gas, oil, aqueous) - * @return interfacial tension with unit N/m. If one or both phases does not exist - the method - * will return NaN + * @param implementedPressureDeriativesofFugacity a boolean */ - public double getInterfacialTension(String phase1, String phase2); + public void setImplementedPressureDeriativesofFugacity( + boolean implementedPressureDeriativesofFugacity); /** - * method to return interfacial tension between two phases. + *

+ * setImplementedTemperatureDeriativesofFugacity. + *

* - * @param phase1 phase number of phase1 - * @param phase2 phase number of phase2 - * @return interfacial tension with unit N/m + * @param implementedTemperatureDeriativesofFugacity a boolean */ - public double getInterfacialTension(int phase1, int phase2); + public void setImplementedTemperatureDeriativesofFugacity( + boolean implementedTemperatureDeriativesofFugacity); /** *

- * getKinematicViscosity. + * Setter for property initType. *

* - * @return a double + * @param initType a int */ - public double getKinematicViscosity(); + public void setInitType(int initType); /** *

- * initRefPhases. + * Setter for property maxNumberOfPhases. *

+ * + * @param maxNumberOfPhases The maximum allowed number of phases to use. */ - public void initRefPhases(); + public void setMaxNumberOfPhases(int maxNumberOfPhases); /** - *

- * getFluidName. - *

+ * method to set mixing rule used for the fluid. * - * @return a {@link java.lang.String} object + * @param type The type of mixing rule to be used for the fluid. 1 - classic mixing rule with all + * kij set to zero 2 -classic mixing rule with kij from NeqSim database 3- classic mixing + * rule with temperature dependent kij 4- Huron Vidal mixing rule with parameters from + * NeqSim database 7 -classic mixing rule with kij of CPA from NeqSim Database 9 + * -classicmixing rule with temperature dependent kij of CPA from NeqSim database + * 10-classic mixing rule with temperature and composition dependent kij of CPA from NeqSim + * database */ - public java.lang.String getFluidName(); + public void setMixingRule(int type); /** - *

- * setFluidName. - *

+ * method to set the mixing rule for the fluid. * - * @param fluidName a {@link java.lang.String} object + * @param typename a {@link java.lang.String} object */ - public void setFluidName(java.lang.String fluidName); + public void setMixingRule(String typename); /** *

- * setSolidPhaseCheck. + * setMixingRule. *

* - * @param solidComponent a {@link java.lang.String} object + * @param typename a {@link java.lang.String} object + * @param GEmodel a {@link java.lang.String} object */ - public void setSolidPhaseCheck(String solidComponent); + public void setMixingRule(String typename, String GEmodel); /** *

- * Getter for property allowPhaseShift. + * setModel. *

* - * @return a boolean + * @param model a {@link java.lang.String} object + * @return a {@link neqsim.thermo.system.SystemInterface} object */ - public boolean allowPhaseShift(); + public SystemInterface setModel(String model); /** *

- * Setter for property allowPhaseShift. + * This method is used to set the total molar composition of a fluid. The total flow rate will be + * kept constant. The input mole fractions will be normalized. *

* - * @param allowPhaseShift a boolean + * @param moles an array of type double */ - public void allowPhaseShift(boolean allowPhaseShift); + public void setMolarComposition(double[] moles); /** - * method to return phase fraction of selected phase. + * This method is used to set the total molar composition of a characterized fluid. The total flow + * rate will be kept constant. The input mole fractions will be normalized. * - * @param phaseTypeName gas/oil/aqueous - * @param unit mole/volume/weight - * @return phase: fraction in specified unit + * @param molefractions is a double array taking the molar fraction of the components in the + * fluid. THe last fraction in the array is the total molefraction of the characterized + * components. */ - public double getPhaseFraction(String phaseTypeName, String unit); + public void setMolarCompositionOfPlusFluid(double[] molefractions); /** - *

- * setPhaseType. - *

+ * This method is used to set the total molar composition of a plus fluid. The total flow rate + * will be kept constant. The input mole fractions will be normalized. * - * @param phases a {@link java.lang.String} object - * @param newPhaseType a int + * @param molefractions is a double array taking the molar fraction of the components in the + * fluid. THe last molfraction is the mole fraction of the plus component */ - public void setPhaseType(String phases, int newPhaseType); + public void setMolarCompositionPlus(double[] molefractions); /** - * method to set the phase type of a given phase. + *

+ * setMolarFlowRates. + *

* - * @param phaseToChange the phase number of the phase to set phase type - * @param phaseTypeName the phase type name (valid names are gas or liquid) + * @param moles an array of type double */ - public void setPhaseType(int phaseToChange, String phaseTypeName); - + public void setMolarFlowRates(double[] moles); /** - *

- * getProperty. - *

+ * method to specify if calculations should check for more than two fluid phases. * - * @param prop a {@link java.lang.String} object - * @param compName a {@link java.lang.String} object - * @param phase a int - * @return a double + * @param doMultiPhaseCheck Specify if the calculations should check for more than two fluid + * phases. Default is two fluid phases (gas and liquid). If set to true the program will + * check for gas and multiple liquid phases (eg. gas-oil-aqueous). */ - public double getProperty(String prop, String compName, int phase); + public void setMultiPhaseCheck(boolean doMultiPhaseCheck); /** *

- * getProperty. + * setMultiphaseWaxCheck. *

* - * @param prop a {@link java.lang.String} object - * @param phase a int - * @return a double + * @param multiphaseWaxCheck a boolean */ - public double getProperty(String prop, int phase); + public void setMultiphaseWaxCheck(boolean multiphaseWaxCheck); /** *

- * getProperty. + * Setter for property numberOfPhases. *

* - * @param prop a {@link java.lang.String} object - * @return a double + * @param number Number of phases to use. */ - public double getProperty(String prop); + public void setNumberOfPhases(int number); /** *

- * Getter for property standard. + * Setter for property numericDerivatives. *

* - * @return a {@link neqsim.standards.StandardInterface} object + * @param numericDerivatives a boolean */ - public neqsim.standards.StandardInterface getStandard(); + public void setNumericDerivatives(boolean numericDerivatives); /** *

- * Getter for property standard. + * Getter for property PC. *

* - * @param standardName a {@link java.lang.String} object - * @return a {@link neqsim.standards.StandardInterface} object + * @param PC Critical pressure to set */ - public neqsim.standards.StandardInterface getStandard(String standardName); + public void setPC(double PC); /** *

- * Setter for property standard. + * Set phaseArray[phaseIndex] = phase. NB! Transfers the pressure and temperature + * from the currently existing phase object at index numb *

* - * @param standardName a {@link java.lang.String} object + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param index Phase index to insert object at */ - public void setStandard(String standardName); + public void setPhase(PhaseInterface phase, int index); /** *

- * saveToDataBase. + * Indexed setter for property phaseIndex. + * this.phaseIndex[index] = phaseIndex; *

+ * + * @param index a int + * @param phaseIndex a int */ - public void saveToDataBase(); + public void setPhaseIndex(int index, int phaseIndex); /** - *

- * getMixingRule. - *

+ * Change the phase type of a given phase. * - * @return a int + * @param phaseToChange the phase number of the phase to set phase type + * @param pt PhaseType to set */ - public int getMixingRule(); + public void setPhaseType(int phaseToChange, PhaseType pt); /** - *

- * getResultTable. - *

+ * Change the phase type of a given phase. * - * @return an array of {@link java.lang.String} objects + * @param phaseToChange the phase number of the phase to set phase type + * @param phaseName String to set */ - public String[][] getResultTable(); + public void setPhaseType(int phaseToChange, String phaseName); /** - *

- * autoSelectModel. - *

+ * Set the physical property model type for each phase of the System. * - * @return a {@link neqsim.thermo.system.SystemInterface} object + * @param type 0 Orginal/default 1 Water 2 Glycol 3 Amine 4 CO2Water 6 Basic */ - public SystemInterface autoSelectModel(); + public void setPhysicalPropertyModel(int type); /** - *

- * autoSelectMixingRule. - *

+ * method to set the pressure of a fluid (same pressure for all phases). + * + * @param pres pressure in unit bara (absolute pressure in bar) */ - public void autoSelectMixingRule(); + public void setPressure(double pres); /** - * Order phases by density. + * method to set the pressure of a fluid (same pressure for all phases). + * + * @param newPressure in specified unit + * @param unit unit can be bar, bara, barg or atm */ - public void orderByDensity(); + public void setPressure(double newPressure, String unit); /** *

- * addLiquidToGas. + * Setter for property solidPhaseCheck. *

* - * @param fraction a double + * @param test a boolean */ - public void addLiquidToGas(double fraction); + public void setSolidPhaseCheck(boolean test); /** *

- * addGasToLiquid. + * setSolidPhaseCheck. *

* - * @param fraction a double + * @param solidComponent a {@link java.lang.String} object */ - public void addGasToLiquid(double fraction); + public void setSolidPhaseCheck(String solidComponent); /** - * method to get the total molar flow rate of a fluid. + *

+ * Setter for property standard. + *

* - * @return molar flow in unit mol/sec + * @param standardName a {@link java.lang.String} object */ - public double getTotalNumberOfMoles(); + public void setStandard(String standardName); /** *

- * setTotalNumberOfMoles. + * Getter for property TC. *

* - * @param totalNumberOfMoles a double + * @param TC Critical temperature to set */ - public void setTotalNumberOfMoles(double totalNumberOfMoles); + public void setTC(double TC); /** *

- * phaseToSystem. + * method to set the temperature of a fluid (same temperature for all phases). *

* - * @param phaseNumber a int - * @return a {@link neqsim.thermo.system.SystemInterface} object + * @param temp a double */ - public SystemInterface phaseToSystem(int phaseNumber); + public void setTemperature(double temp); /** *

- * hasPhaseType. + * setTemperature. *

* - * @param phaseTypeName a {@link java.lang.String} object - * @return a boolean + * @param newTemperature a double + * @param phaseNumber a int */ - public boolean hasPhaseType(String phaseTypeName); + public void setTemperature(double newTemperature, int phaseNumber); /** - *

- * getPhaseNumberOfPhase. - *

+ * method to set the temperature of a fluid (same temperature for all phases). * - * @param phaseTypeName a {@link java.lang.String} object - * @return a int + * @param newTemperature in specified unit + * @param unit unit can be C or K (Celsius or Kelvin) */ - public int getPhaseNumberOfPhase(String phaseTypeName); + public void setTemperature(double newTemperature, String unit); /** *

- * getEmptySystemClone. + * setTotalFlowRate. *

* - * @return a {@link neqsim.thermo.system.SystemInterface} object + * @param flowRate a double + * @param flowunit a {@link java.lang.String} object. flow units are: kg/sec, kg/min, kg/hr + * m3/sec, m3/min, m3/hr, mole/sec, mole/min, mole/hr, Sm3/hr, Sm3/day, idSm3/hr, idSm3/day */ - public SystemInterface getEmptySystemClone(); + public void setTotalFlowRate(double flowRate, String flowunit); /** *

- * calcHenrysConstant. + * Setter for property totalNumberOfMoles. *

* - * @param component a {@link java.lang.String} object - * @return a double + * @param totalNumberOfMoles Total molar flow rate of fluid in unit mol/sec */ - public double calcHenrysConstant(String component); + public void setTotalNumberOfMoles(double totalNumberOfMoles); /** *

- * isImplementedTemperatureDeriativesofFugacity. + * setUseTVasIndependentVariables. *

* - * @return a boolean + * @param useTVasIndependentVariables a boolean */ - public boolean isImplementedTemperatureDeriativesofFugacity(); + public void setUseTVasIndependentVariables(boolean useTVasIndependentVariables); /** *

- * setImplementedTemperatureDeriativesofFugacity. + * tuneModel. *

* - * @param implementedTemperatureDeriativesofFugacity a boolean + * @param model a {@link java.lang.String} object + * @param val a double + * @param phase a int */ - public void setImplementedTemperatureDeriativesofFugacity( - boolean implementedTemperatureDeriativesofFugacity); + public void tuneModel(String model, double val, int phase); /** *

- * isImplementedPressureDeriativesofFugacity. + * useVolumeCorrection. *

* - * @return a boolean + * @param volcor a boolean */ - public boolean isImplementedPressureDeriativesofFugacity(); + public void useVolumeCorrection(boolean volcor); /** *

- * setImplementedPressureDeriativesofFugacity. + * write. *

* - * @param implementedPressureDeriativesofFugacity a boolean + * @param name a {@link java.lang.String} object + * @param filename a {@link java.lang.String} object + * @param newfile a boolean */ - public void setImplementedPressureDeriativesofFugacity( - boolean implementedPressureDeriativesofFugacity); + public void write(String name, String filename, boolean newfile); /** *

- * isImplementedCompositionDeriativesofFugacity. + * getKvector - return vector of equilibrium constants. *

* - * @return a boolean + * @return an array of type double */ - public boolean isImplementedCompositionDeriativesofFugacity(); + public double[] getKvector(); /** *

- * setImplementedCompositionDeriativesofFugacity. + * getzvector - return vector of total molar composition. *

* - * @param implementedCompositionDeriativesofFugacity a boolean + * @return an array of type double */ - public void setImplementedCompositionDeriativesofFugacity( - boolean implementedCompositionDeriativesofFugacity); + public double[] getzvector(); /** *

- * addCapeOpenProperty. + * toJson - return String with json inormation of fluid. *

* - * @param propertyName a {@link java.lang.String} object + * @return a {@link java.lang.String} object */ - public void addCapeOpenProperty(String propertyName); + public String toJson(); /** - * Get physical properties of System. + *

+ * toCompJson - return String with json inormation of pure component properties of fluid. + *

* - * @return System properties + * @return a {@link java.lang.String} object */ - public SystemProperties getProperties(); - - /** {@inheritDoc} */ - @Override - public boolean equals(Object o); - - /** {@inheritDoc} */ - @Override - public int hashCode(); - - /** {@inheritDoc} */ - public void addToComponentNames(java.lang.String name); + public String toCompJson(); } diff --git a/src/main/java/neqsim/thermo/system/SystemKentEisenberg.java b/src/main/java/neqsim/thermo/system/SystemKentEisenberg.java index 666c244305..220cba6746 100644 --- a/src/main/java/neqsim/thermo/system/SystemKentEisenberg.java +++ b/src/main/java/neqsim/thermo/system/SystemKentEisenberg.java @@ -5,93 +5,77 @@ import neqsim.thermo.phase.PhaseSrkEos; /** - * This class defines a thermodynamic system using the Kent Eisenberg model - * + * This class defines a thermodynamic system using the Kent Eisenberg model. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemKentEisenberg extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemKentEisenberg() { - super(); - modelName = "Kent Eisenberg-model"; - attractiveTermNumber = 0; - phaseArray[0] = new PhaseSrkEos(); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseKentEisenberg(); - } - } - - /** - *

- * Constructor for SystemKentEisenberg. - *

- * - * @param T a double - * @param P a double - */ - public SystemKentEisenberg(double T, double P) { - super(T, P); - attractiveTermNumber = 0; - modelName = "Kent Eisenberg-model"; - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseKentEisenberg();// new PhaseGENRTLmodifiedWS(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + *

+ * Constructor for SystemKentEisenberg. + *

+ */ + public SystemKentEisenberg() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemKentEisenberg. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemKentEisenberg(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 0; - setNumberOfPhases(4); - modelName = "Kent Eisenberg-model"; - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemKentEisenberg. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemKentEisenberg(double T, double P) { + this(T, P, false); + } - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseKentEisenberg();// new PhaseGENRTLmodifiedWS(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemKentEisenberg. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemKentEisenberg(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 0; + modelName = "Kent Eisenberg-model"; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + phaseArray[0] = new PhaseSrkEos(); + phaseArray[0].setTemperature(T); + phaseArray[0].setPressure(P); + for (int i = 1; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseKentEisenberg(); // new PhaseGENRTLmodifiedWS(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemKentEisenberg clone() { - SystemKentEisenberg clonedSystem = null; - try { - clonedSystem = (SystemKentEisenberg) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (solidPhaseCheck) { + setNumberOfPhases(4); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemKentEisenberg clone() { + SystemKentEisenberg clonedSystem = null; + try { + clonedSystem = (SystemKentEisenberg) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemNRTL.java b/src/main/java/neqsim/thermo/system/SystemNRTL.java index 24d173a004..fa201b69dc 100644 --- a/src/main/java/neqsim/thermo/system/SystemNRTL.java +++ b/src/main/java/neqsim/thermo/system/SystemNRTL.java @@ -5,93 +5,77 @@ import neqsim.thermo.phase.PhaseSrkEos; /** - * This class defines a thermodynamic system using the SRK EoS for gas and NRTL for liquids - * + * This class defines a thermodynamic system using the SRK EoS for gas and NRTL for liquids. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemNRTL extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemNRTL() { - super(); - modelName = "NRTL-GE-model"; - attractiveTermNumber = 0; - phaseArray[0] = new PhaseSrkEos(); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGENRTL();// modifiedWS(); - } - } - - /** - *

- * Constructor for SystemNRTL. - *

- * - * @param T a double - * @param P a double - */ - public SystemNRTL(double T, double P) { - super(T, P); - attractiveTermNumber = 0; - modelName = "NRTL-GE-model"; - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGENRTL();// new PhaseGENRTLmodifiedWS(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + *

+ * Constructor for SystemNRTL. + *

+ */ + public SystemNRTL() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemNRTL. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemNRTL(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 0; - setNumberOfPhases(4); - modelName = "NRTL-GE-model"; - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemNRTL. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemNRTL(double T, double P) { + this(T, P, false); + } - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGENRTL();// new PhaseGENRTLmodifiedWS(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemNRTL. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemNRTL(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 0; + modelName = "NRTL-GE-model"; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + phaseArray[0] = new PhaseSrkEos(); + phaseArray[0].setTemperature(T); + phaseArray[0].setPressure(P); + for (int i = 1; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseGENRTL(); // new PhaseGENRTLmodifiedWS(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemNRTL clone() { - SystemNRTL clonedSystem = null; - try { - clonedSystem = (SystemNRTL) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (solidPhaseCheck) { + setNumberOfPhases(4); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemNRTL clone() { + SystemNRTL clonedSystem = null; + try { + clonedSystem = (SystemNRTL) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemPCSAFT.java b/src/main/java/neqsim/thermo/system/SystemPCSAFT.java index 2e97e076c2..83fecbbf86 100644 --- a/src/main/java/neqsim/thermo/system/SystemPCSAFT.java +++ b/src/main/java/neqsim/thermo/system/SystemPCSAFT.java @@ -7,143 +7,121 @@ import neqsim.thermo.phase.PhasePureComponentSolid; /** - * This class defines a thermodynamic system using the PC-SAFT EoS equation of state - * + * This class defines a thermodynamic system using the PC-SAFT EoS equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPCSAFT extends SystemSrkEos { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(SystemPCSAFT.class); + static Logger logger = LogManager.getLogger(SystemPCSAFT.class); + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemPCSAFT. - *

- */ - public SystemPCSAFT() { - super(); - modelName = "PCSAFT-EOS"; - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePCSAFTRahmat(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - this.useVolumeCorrection(false); - commonInitialization(); - } + /** + *

+ * Constructor for SystemPCSAFT. + *

+ */ + public SystemPCSAFT() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemPCSAFT. - *

- * - * @param T a double - * @param P a double - */ - public SystemPCSAFT(double T, double P) { - super(T, P); - modelName = "PCSAFT-EOS"; - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePCSAFTRahmat(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(false); - commonInitialization(); - } + /** + *

+ * Constructor for SystemPCSAFT. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemPCSAFT(double T, double P) { + this(T, P, false); + } - /** - *

- * Constructor for SystemPCSAFT. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemPCSAFT(double T, double P, boolean solidCheck) { - this(T, P); - modelName = "PCSAFT-EOS"; - attractiveTermNumber = 0; - setNumberOfPhases(5); - solidPhaseCheck = solidCheck; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePCSAFTRahmat(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - commonInitialization(); - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemPCSAFT. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemPCSAFT(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "PCSAFT-EOS"; + attractiveTermNumber = 0; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } - this.useVolumeCorrection(false); + // Recreates phases created in super constructor SystemSrkEos + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhasePCSAFTRahmat(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } + commonInitialization(); - /** {@inheritDoc} */ - @Override - public SystemPCSAFT clone() { - SystemPCSAFT clonedSystem = null; - try { - clonedSystem = (SystemPCSAFT) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - return clonedSystem; + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); } + this.useVolumeCorrection(false); + } - /** {@inheritDoc} */ - @Override - public void addTBPfraction(String componentName2, double numberOfMoles, double molarMass, - double density) { - // componentName = (componentName + "_" + getFluidName()); - super.addTBPfraction(componentName2, numberOfMoles, molarMass, density); - // addComponent(componentName2, numberOfMoles, 290.0, 30.0, 0.11); - String componentName = getPhase(0).getComponent(getPhase(0).getNumberOfComponents() - 1) - .getComponentName(); - for (int i = 0; i < numberOfPhases; i++) { - // getPhase(phaseIndex[i]).getComponent(componentName).setMolarMass(molarMass); - // getPhase(phaseIndex[i]).getComponent(componentName).setIsTBPfraction(true); + /** {@inheritDoc} */ + @Override + public void addTBPfraction(String componentName2, double numberOfMoles, double molarMass, + double density) { + // componentName = (componentName + "_" + getFluidName()); + super.addTBPfraction(componentName2, numberOfMoles, molarMass, density); + // addComponent(componentName2, numberOfMoles, 290.0, 30.0, 0.11); + String componentName = + getPhase(0).getComponent(getPhase(0).getNumberOfComponents() - 1).getComponentName(); + for (int i = 0; i < numberOfPhases; i++) { + // getPhase(phaseIndex[i]).getComponent(componentName).setMolarMass(molarMass); + // getPhase(phaseIndex[i]).getComponent(componentName).setIsTBPfraction(true); - double mSaft = 0.0249 * molarMass * 1e3 + 0.9711; - double epskSaftm = 6.5446 * molarMass * 1e3 + 177.92; - double msigm = 1.6947 * molarMass * 1e3 + 23.27; - getPhase(phaseIndex[i]).getComponent(componentName).setmSAFTi(mSaft); - getPhase(phaseIndex[i]).getComponent(componentName).setEpsikSAFT(epskSaftm / mSaft); - getPhase(phaseIndex[i]).getComponent(componentName) - .setSigmaSAFTi(Math.pow(msigm / mSaft, 1.0 / 3.0) / 1.0e10); - logger.info("Saft parameters: m " + mSaft + " epsk " + epskSaftm / mSaft + " sigma " - + Math.pow(msigm / mSaft, 1.0 / 3.0)); - } + double mSaft = 0.0249 * molarMass * 1e3 + 0.9711; + double epskSaftm = 6.5446 * molarMass * 1e3 + 177.92; + double msigm = 1.6947 * molarMass * 1e3 + 23.27; + getPhase(phaseIndex[i]).getComponent(componentName).setmSAFTi(mSaft); + getPhase(phaseIndex[i]).getComponent(componentName).setEpsikSAFT(epskSaftm / mSaft); + getPhase(phaseIndex[i]).getComponent(componentName) + .setSigmaSAFTi(Math.pow(msigm / mSaft, 1.0 / 3.0) / 1.0e10); + logger.info("Saft parameters: m " + mSaft + " epsk " + epskSaftm / mSaft + " sigma " + + Math.pow(msigm / mSaft, 1.0 / 3.0)); } + } - /** - *

- * commonInitialization. - *

- */ - public void commonInitialization() { - setImplementedCompositionDeriativesofFugacity(false); - setImplementedPressureDeriativesofFugacity(false); - setImplementedTemperatureDeriativesofFugacity(false); + /** {@inheritDoc} */ + @Override + public SystemPCSAFT clone() { + SystemPCSAFT clonedSystem = null; + try { + clonedSystem = (SystemPCSAFT) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } + + /** + *

+ * commonInitialization. + *

+ */ + public void commonInitialization() { + setImplementedCompositionDeriativesofFugacity(false); + setImplementedPressureDeriativesofFugacity(false); + setImplementedTemperatureDeriativesofFugacity(false); + } } diff --git a/src/main/java/neqsim/thermo/system/SystemPCSAFTa.java b/src/main/java/neqsim/thermo/system/SystemPCSAFTa.java index f7fa775131..ef03b2f1e0 100644 --- a/src/main/java/neqsim/thermo/system/SystemPCSAFTa.java +++ b/src/main/java/neqsim/thermo/system/SystemPCSAFTa.java @@ -5,104 +5,83 @@ import neqsim.thermo.phase.PhasePureComponentSolid; /** - * This class defines a thermodynamic system using the PC-SAFT with association equation of state - * + * This class defines a thermodynamic system using the PC-SAFT with association equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPCSAFTa extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemPCSAFTa. - *

- */ - public SystemPCSAFTa() { - super(); - modelName = "PCSAFTa-EOS"; - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePCSAFTa(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - this.useVolumeCorrection(false); - } - - /** - *

- * Constructor for SystemPCSAFTa. - *

- * - * @param T a double - * @param P a double - */ - public SystemPCSAFTa(double T, double P) { - super(T, P); - modelName = "PCSAFTa-EOS"; - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePCSAFTa(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(false); - } + /** + *

+ * Constructor for SystemPCSAFTa. + *

+ */ + public SystemPCSAFTa() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemPCSAFTa. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemPCSAFTa(double T, double P, boolean solidCheck) { - this(T, P); - modelName = "PCSAFTa-EOS"; - attractiveTermNumber = 0; - setNumberOfPhases(5); - solidPhaseCheck = solidCheck; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePCSAFTa(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemPCSAFTa. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemPCSAFTa(double T, double P) { + this(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemPCSAFTa. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemPCSAFTa(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "PCSAFTa-EOS"; + attractiveTermNumber = 0; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } - this.useVolumeCorrection(false); + // Recreates phases created in super constructor SystemSrkEos + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhasePCSAFTa(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemPCSAFTa clone() { - SystemPCSAFTa clonedSystem = null; - try { - clonedSystem = (SystemPCSAFTa) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + this.useVolumeCorrection(false); + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemPCSAFTa clone() { + SystemPCSAFTa clonedSystem = null; + try { + clonedSystem = (SystemPCSAFTa) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemPrCPA.java b/src/main/java/neqsim/thermo/system/SystemPrCPA.java index 3d8a7b9865..1d2d2ab100 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrCPA.java +++ b/src/main/java/neqsim/thermo/system/SystemPrCPA.java @@ -5,91 +5,81 @@ import neqsim.thermo.phase.PhasePureComponentSolid; /** - * This class defines a thermodynamic system using the PR-CPA equation of state - * + * This class defines a thermodynamic system using the PR-CPA equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrCPA extends SystemPrEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; -public SystemPrCPA() { - super(); - modelName = "CPA-PR-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrCPA(); - } - this.useVolumeCorrection(true); - } - - /** - *

- * Constructor for SystemPrCPA. - *

- * - * @param T a double - * @param P a double - */ - public SystemPrCPA(double T, double P) { - super(T, P); - modelName = "CPA-PR-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrCPA(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(true); - } + /** + *

+ * Constructor for SystemPrCPA. + *

+ */ + public SystemPrCPA() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemPrCPA. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemPrCPA(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - modelName = "CPA-PR-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrCPA(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(true); + /** + *

+ * Constructor for SystemPrCPA. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemPrCPA(double T, double P) { + this(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemPrCPA. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemPrCPA(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "CPA-PR-EOS"; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + // Recreates phases created in super constructor SystemPrEos + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhasePrCPA(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } + this.useVolumeCorrection(true); - /** {@inheritDoc} */ - @Override - public SystemPrCPA clone() { - SystemPrCPA clonedSystem = null; - try { - clonedSystem = (SystemPrCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemPrCPA clone() { + SystemPrCPA clonedSystem = null; + try { + clonedSystem = (SystemPrCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemPrDanesh.java b/src/main/java/neqsim/thermo/system/SystemPrDanesh.java index 8c4a498320..c42a3d7419 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrDanesh.java +++ b/src/main/java/neqsim/thermo/system/SystemPrDanesh.java @@ -5,102 +5,82 @@ import neqsim.thermo.phase.PhasePureComponentSolid; /** - * This class defines a thermodynamic system using the PR Danesh equation of state - * + * This class defines a thermodynamic system using the PR Danesh equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrDanesh extends SystemPrEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemPrDanesh. - *

- */ - public SystemPrDanesh() { - super(); - modelName = "PR-Danesh-EOS"; - attractiveTermNumber = 9; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - *

- * Constructor for SystemPrDanesh. - *

- * - * @param T a double - * @param P a double - */ - public SystemPrDanesh(double T, double P) { - super(T, P); - modelName = "PR-Danesh-EOS"; - attractiveTermNumber = 9; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } - - /** - *

- * Constructor for SystemPrDanesh. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemPrDanesh(double T, double P, boolean solidCheck) { - this(T, P); - modelName = "PR-Danesh-EOS"; - attractiveTermNumber = 9; - setNumberOfPhases(5); - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemPrDanesh. + *

+ */ + public SystemPrDanesh() { + this(298.15, 1.0, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemPrDanesh. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemPrDanesh(double T, double P) { + this(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemPrDanesh. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemPrDanesh(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "PR-Danesh-EOS"; + attractiveTermNumber = 9; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + // Recreates phases created in super constructor SystemPrEos + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhasePrEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemPrDanesh clone() { - SystemPrDanesh clonedSystem = null; - try { - clonedSystem = (SystemPrDanesh) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemPrDanesh clone() { + SystemPrDanesh clonedSystem = null; + try { + clonedSystem = (SystemPrDanesh) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemPrEos.java b/src/main/java/neqsim/thermo/system/SystemPrEos.java index 4a40b5627a..ff5827532a 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrEos.java +++ b/src/main/java/neqsim/thermo/system/SystemPrEos.java @@ -5,99 +5,76 @@ import neqsim.thermo.phase.PhasePureComponentSolid; /** - * This class defines a thermodynamic system using the Peng Robinson equation of state - * + * This class defines a thermodynamic system using the Peng Robinson equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrEos extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - * Constructor of a fluid object using the SRK equation of state. - */ - public SystemPrEos() { - super(); - modelName = "PR-EOS"; - getCharacterization().setTBPModel("PedersenPR");// (RiaziDaubert PedersenPR PedersenSRK - attractiveTermNumber = 1; + /** + * Constructor of a fluid object using the SRK equation of state. + */ + public SystemPrEos() { + this(298.15, 1.0, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - * Constructor of a fluid object using the PR-EoS (Peng Robinson) - * - * @param T The temperature in unit Kelvin - * @param P The pressure in unit bara (absolute pressure) - */ - public SystemPrEos(double T, double P) { - super(T, P); - modelName = "PR-EOS"; - getCharacterization().setTBPModel("PedersenPR"); - attractiveTermNumber = 1; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } - - /** - * Constructor of a fluid object using the PR-EoS (Peng Robinson) - * - * @param T The temperature in unit Kelvin - * @param P The pressure in unit bara (absolute pressure) - * @param solidCheck a boolean variable specifying if solid phase check and calculation should - * be done - */ - public SystemPrEos(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 1; - setNumberOfPhases(5); - modelName = "PR-EOS"; - solidPhaseCheck = solidCheck; + /** + * Constructor of a fluid object using the PR-EoS (Peng Robinson). + * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemPrEos(double T, double P) { + this(T, P, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + * Constructor of a fluid object using the PR-EoS (Peng Robinson). + * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemPrEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 1; + modelName = "PR-EOS"; + getCharacterization().setTBPModel("PedersenPR"); - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhasePrEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); + } - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); } - /** {@inheritDoc} */ - @Override - public SystemPrEos clone() { - SystemPrEos clonedSystem = null; - try { - clonedSystem = (SystemPrEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemPrEos clone() { + SystemPrEos clonedSystem = null; + try { + clonedSystem = (SystemPrEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemPrEos1978.java b/src/main/java/neqsim/thermo/system/SystemPrEos1978.java index d3b43618cf..5c987bcc33 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrEos1978.java +++ b/src/main/java/neqsim/thermo/system/SystemPrEos1978.java @@ -1,103 +1,60 @@ package neqsim.thermo.system; -import neqsim.thermo.phase.PhaseHydrate; -import neqsim.thermo.phase.PhasePrEos; -import neqsim.thermo.phase.PhasePureComponentSolid; - /** * This class defines a thermodynamic system using the Peng Robinson v. 1978 equation of state - * + * * @author Even Solbraa + * @version $Id: $Id */ -public class SystemPrEos1978 extends SystemEos { - private static final long serialVersionUID = 1000; - - public SystemPrEos1978() { - super(); - modelName = "PR1978-EOS"; - getCharacterization().setTBPModel("PedersenPR"); - attractiveTermNumber = 13; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - *

- * Constructor for SystemPrEos1978. - *

- * - * @param T a double - * @param P a double - */ - public SystemPrEos1978(double T, double P) { - super(T, P); - modelName = "PR1978-EOS"; - getCharacterization().setTBPModel("PedersenPR"); - attractiveTermNumber = 13; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } - - /** - *

- * Constructor for SystemPrEos1978. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemPrEos1978(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 13; - setNumberOfPhases(5); - modelName = "PR1978-EOS"; - solidPhaseCheck = solidCheck; - - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } - - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } +public class SystemPrEos1978 extends SystemPrEos { + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for SystemPrEos1978. + *

+ */ + public SystemPrEos1978() { + this(298.15, 1.0, false); + } + + /** + *

+ * Constructor for SystemPrEos1978. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemPrEos1978(double T, double P) { + this(T, P, false); + } + + /** + *

+ * Constructor for SystemPrEos1978. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemPrEos1978(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 6; + modelName = "PR78-EoS"; + } + + /** {@inheritDoc} */ + @Override + public SystemPrEos1978 clone() { + SystemPrEos1978 clonedSystem = null; + try { + clonedSystem = (SystemPrEos1978) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** {@inheritDoc} */ - @Override - public SystemPrEos1978 clone() { - SystemPrEos1978 clonedSystem = null; - try { - clonedSystem = (SystemPrEos1978) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } - - return clonedSystem; - } + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemPrEosDelft1998.java b/src/main/java/neqsim/thermo/system/SystemPrEosDelft1998.java index ce73a05c02..f33eee0feb 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrEosDelft1998.java +++ b/src/main/java/neqsim/thermo/system/SystemPrEosDelft1998.java @@ -6,85 +6,81 @@ /** * This class defines a thermodynamic system using the PR EoS version of Delft (1998) equation of - * state + * state. * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrEosDelft1998 extends SystemPrEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemPrEosDelft1998() { - super(); - modelName = "PR Delft1998 EOS"; - attractiveTermNumber = 7; - } - - /** - *

- * Constructor for SystemPrEosDelft1998. - *

- * - * @param T a double - * @param P a double - */ - public SystemPrEosDelft1998(double T, double P) { - super(T, P); - modelName = "PR Delft1998 EOS"; - attractiveTermNumber = 7; - } - - /** - *

- * Constructor for SystemPrEosDelft1998. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemPrEosDelft1998(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 7; - modelName = "PR Delft1998 EOS"; + /** + *

+ * Constructor for SystemPrEosDelft1998. + *

+ */ + public SystemPrEosDelft1998() { + this(298.15, 1.0, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemPrEosDelft1998. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemPrEosDelft1998(double T, double P) { + super(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemPrEosDelft1998. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemPrEosDelft1998(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "PR Delft1998 EOS"; + attractiveTermNumber = 7; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + // Recreates phases created in super constructor SystemPrEos + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhasePrEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemPrEosDelft1998 clone() { - SystemPrEosDelft1998 clonedSystem = null; - try { - clonedSystem = (SystemPrEosDelft1998) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemPrEosDelft1998 clone() { + SystemPrEosDelft1998 clonedSystem = null; + try { + clonedSystem = (SystemPrEosDelft1998) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemPrGassemEos.java b/src/main/java/neqsim/thermo/system/SystemPrGassemEos.java index 71b8d462b9..1f83e2167d 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrGassemEos.java +++ b/src/main/java/neqsim/thermo/system/SystemPrGassemEos.java @@ -5,102 +5,82 @@ import neqsim.thermo.phase.PhasePureComponentSolid; /** - * This class defines a thermodynamic system using the PR Gassem equation of state - * + * This class defines a thermodynamic system using the PR Gassem equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrGassemEos extends SystemPrEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for SystemPrGassemEos. - *

- */ - public SystemPrGassemEos() { - super(); - modelName = "PR-Gassem-EOS"; - attractiveTermNumber = 8; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - *

- * Constructor for SystemPrGassemEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemPrGassemEos(double T, double P) { - super(T, P); - modelName = "PR-Gassem-EOS"; - attractiveTermNumber = 8; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } - - /** - *

- * Constructor for SystemPrGassemEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemPrGassemEos(double T, double P, boolean solidCheck) { - this(T, P); - modelName = "PR-Gassem-EOS"; - attractiveTermNumber = 8; - setNumberOfPhases(5); - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemPrGassemEos. + *

+ */ + public SystemPrGassemEos() { + this(298.15, 1.0, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemPrGassemEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemPrGassemEos(double T, double P) { + this(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemPrGassemEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemPrGassemEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "PR-Gassem-EOS"; + attractiveTermNumber = 8; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + // Recreates phases created in super constructor SystemPrEos + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhasePrEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemPrGassemEos clone() { - SystemPrGassemEos clonedSystem = null; - try { - clonedSystem = (SystemPrGassemEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemPrGassemEos clone() { + SystemPrGassemEos clonedSystem = null; + try { + clonedSystem = (SystemPrGassemEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemPrMathiasCopeman.java b/src/main/java/neqsim/thermo/system/SystemPrMathiasCopeman.java index e3ff1d3d43..19ba254b87 100644 --- a/src/main/java/neqsim/thermo/system/SystemPrMathiasCopeman.java +++ b/src/main/java/neqsim/thermo/system/SystemPrMathiasCopeman.java @@ -1,62 +1,60 @@ package neqsim.thermo.system; /** - * This class defines a thermodynamic system using the PR Mathias Copeman equation of state - * + * This class defines a thermodynamic system using the PR Mathias Copeman equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPrMathiasCopeman extends SystemPrEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemPrMathiasCopeman() { - super(); - modelName = "Mathias-Copeman-PR-EOS"; - attractiveTermNumber = 13; - } - - /** - *

- * Constructor for SystemPrMathiasCopeman. - *

- * - * @param T a double - * @param P a double - */ - public SystemPrMathiasCopeman(double T, double P) { - super(T, P); - modelName = "Mathias-Copeman-PR-EOS"; - attractiveTermNumber = 13; - } + /** + *

+ * Constructor for SystemPrMathiasCopeman. + *

+ */ + public SystemPrMathiasCopeman() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemPrMathiasCopeman. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemPrMathiasCopeman(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - attractiveTermNumber = 13; - modelName = "Mathias-Copeman-PR-EOS"; - } - - /** {@inheritDoc} */ - @Override - public SystemPrMathiasCopeman clone() { - SystemPrMathiasCopeman clonedSystem = null; - try { - clonedSystem = (SystemPrMathiasCopeman) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for SystemPrMathiasCopeman. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemPrMathiasCopeman(double T, double P) { + this(T, P, false); + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + /** + *

+ * Constructor for SystemPrMathiasCopeman. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemPrMathiasCopeman(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 13; + modelName = "Mathias-Copeman-PR-EOS"; + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemPrMathiasCopeman clone() { + SystemPrMathiasCopeman clonedSystem = null; + try { + clonedSystem = (SystemPrMathiasCopeman) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemProperties.java b/src/main/java/neqsim/thermo/system/SystemProperties.java index 820c477d52..d1f8b06a6a 100644 --- a/src/main/java/neqsim/thermo/system/SystemProperties.java +++ b/src/main/java/neqsim/thermo/system/SystemProperties.java @@ -4,209 +4,214 @@ import java.util.Objects; import neqsim.thermo.phase.PhaseInterface; +/** + * Class to get physical properties of system and its phases. + * + * @author ASMF + * @version $Id: $Id + */ public class SystemProperties { - private Double[] values; - private String[] names; - public static final int nCols = (16 * 4) + 6; - - /** - * Constructur for SystemProperties. - * - * @param fluid input fluid - */ - public SystemProperties(SystemInterface fluid) { - final String[] phaseName = {"gas", "oil", "aqueous"}; - - values = new Double[nCols]; - names = new String[nCols]; - int k = 0; - - names[k] = "Mix Number of Phases"; - values[k] = (double) fluid.getNumberOfPhases(); - names[++k] = "Mix Pressure [Pa]"; - values[k] = fluid.getPressure("Pa"); - names[++k] = "Mix Temperature [K]"; - values[k] = fluid.getTemperature("K"); - - names[++k] = "Mix Mole Percent"; - values[k] = fluid.getNumberOfMoles() * 100; - names[++k] = "Mix Weight Percent"; - values[k] = 100.0; - names[++k] = "Mix Molar Volume [m3/mol]"; - values[k] = 1.0 / fluid.getDensity("mol/m3"); - names[++k] = "Mix Volume Percent"; - values[k] = 100.0; - names[++k] = "Mix Density [kg/m3]"; - values[k] = fluid.getDensity("kg/m3"); - names[++k] = "Mix Z Factor"; - values[k] = fluid.getZ(); - names[++k] = "Mix Molecular Weight [g/mol]"; - values[k] = fluid.getMolarMass() * 1000; - names[++k] = "Mix Enthalpy [J/mol]"; - values[k] = fluid.getEnthalpy("J/mol"); - names[++k] = "Mix Entropy [J/molK]"; - values[k] = fluid.getEntropy("J/molK"); - names[++k] = "Mix Heat Capacity-Cp [J/molK]"; - values[k] = fluid.getCp("J/molK"); - names[++k] = "Mix Heat Capacity-Cv [J/molK]"; - values[k] = fluid.getCv("J/molK"); - names[++k] = "Mix Kappa (Cp/Cv)"; - values[k] = fluid.getGamma(); // getCp()/getCv(); - names[++k] = "Mix JT Coefficient [K/Pa]"; - values[k] = Double.NaN; - names[++k] = "Mix Velocity of Sound [m/s]"; - values[k] = Double.NaN; - names[++k] = "Mix Viscosity [Pa s] or [kg/(m*s)]"; - values[k] = fluid.getViscosity("kg/msec"); - names[++k] = "Mix Thermal Conductivity [W/mK]"; - values[k] = fluid.getThermalConductivity("W/mK"); - - // Phase properties (phase: gas=0, liquid=1, Aqueous=2) - for (int j = 0; j < 3; j++) { - String currPhaseName = phaseName[j]; - - if (fluid.hasPhaseType(phaseName[j])) { - int phaseNumber = fluid.getPhaseNumberOfPhase(phaseName[j]); - PhaseInterface currPhase = fluid.getPhase(phaseNumber); - names[++k] = currPhaseName + " Mole Percent"; - values[k] = fluid.getMoleFraction(phaseNumber) * 100; - names[++k] = currPhaseName + " Weight Percent"; - values[k] = fluid.getWtFraction(phaseNumber) * 100; - names[++k] = currPhaseName + " Molar Volume [m3/mol]"; - values[k] = 1.0 / currPhase.getDensity("mol/m3"); - names[++k] = currPhaseName + " Volume Percent"; - values[k] = fluid.getCorrectedVolumeFraction(phaseNumber) * 100; - names[++k] = currPhaseName + " Density [kg/m3]"; - values[k] = currPhase.getDensity("kg/m3"); - names[++k] = currPhaseName + " Z Factor"; - if (Objects.equals(phaseName[j], "oil") - || Objects.equals(phaseName[j], "aqueous")) { - // Phase doesn't calculate correct result for these properties. See specs - values[k] = Double.NaN; - } else { - values[k] = currPhase.getZ(); - } - - names[++k] = currPhaseName + "Molecular Weight [g/mol]"; - values[k] = currPhase.getMolarMass() * 1000; - names[++k] = currPhaseName + "Enthalpy [J/mol]"; - values[k] = currPhase.getEnthalpy("J/mol"); // currPhase.getEnthalpy() / - // currPhase.getNumberOfMolesInPhase(); - names[++k] = currPhaseName + "Entropy [J/molK]"; - values[k] = currPhase.getEntropy("J/molK"); // currPhase.getEntropy() / - // currPhase.getNumberOfMolesInPhase(); - names[++k] = currPhaseName + "Heat Capacity-Cp [J/molK]"; - values[k] = currPhase.getCp("J/molK"); // currPhase.getCp() / - // currPhase.getNumberOfMolesInPhase(); - names[++k] = currPhaseName + " Heat Capacity-Cv [J/molK]"; - values[k] = currPhase.getCv("J/molK"); // currPhase.getCv() / - // currPhase.getNumberOfMolesInPhase(); - names[++k] = currPhaseName + " Kappa (Cp/Cv)"; - values[k] = currPhase.getGamma(); // currPhase.getCp() / currPhase.getCv(); - names[++k] = currPhaseName + " JT Coefficient [K/Pa]"; - if (Objects.equals(phaseName[j], "oil") - || Objects.equals(phaseName[j], "aqueous")) { - // Phase doesn't calculate correct result for these properties. See specs - values[k] = Double.NaN; - names[++k] = currPhaseName + " Velocity of Sound [m/s]"; - values[k] = Double.NaN; - } else { - values[k] = currPhase.getJouleThomsonCoefficient() / 1e5; - names[++k] = currPhaseName + " Velocity of Sound [m/s]"; - values[k] = currPhase.getSoundSpeed(); - } - - names[++k] = currPhaseName + " Viscosity [Pa s] or [kg/msec]"; - values[k] = currPhase.getViscosity("kg/msec"); - names[++k] = currPhaseName + " Thermal Conductivity [W/mK]"; - values[k] = currPhase.getThermalConductivity("W/mK"); - } else { - names[++k] = currPhaseName + " Mole Percent"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Weight Percent"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Molar Volume [m3/mol]"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Volume Percent"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Density [kg/m3]"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Z Factor"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Molecular Weight [g/mol]"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Enthalpy [J/mol]"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Entropy [J/molK]"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Heat Capacity-Cp [J/molK]"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Heat Capacity-Cv [J/molK]"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Kappa (Cp/Cv)"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " JT Coefficient [K/Pa]"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Velocity of Sound [m/s]"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Viscosity [Pa s] or [kg/msec]"; - values[k] = Double.NaN; - names[++k] = currPhaseName + " Thermal Conductivity [W/mK]"; - values[k] = Double.NaN; - } - } - - names[++k] = "Interfacial Tension Gas/Oil [N/m]"; - if (fluid.hasPhaseType("gas") && fluid.hasPhaseType("oil")) { - values[k] = fluid.getInterfacialTension("gas", "oil"); + /** Constant nCols=(16 * 4) + 6. */ + public static final int nCols = (16 * 4) + 6; + /** + * Get names of properties. + * + * @return Array of names of properties + */ + public static String[] getPropertyNames() { + SystemProperties p = new SystemProperties(new SystemSrkEos()); + return p.names; + } + private String[] names; + + private Double[] values; + + /** + * Constructur for SystemProperties. + * + * @param fluid input fluid + */ + public SystemProperties(SystemInterface fluid) { + final String[] phaseName = {"gas", "oil", "aqueous"}; + + values = new Double[nCols]; + names = new String[nCols]; + int k = 0; + + names[k] = "Mix Number of Phases"; + values[k] = (double) fluid.getNumberOfPhases(); + names[++k] = "Mix Pressure [Pa]"; + values[k] = fluid.getPressure("Pa"); + names[++k] = "Mix Temperature [K]"; + values[k] = fluid.getTemperature("K"); + + names[++k] = "Mix Mole Percent"; + values[k] = 100.0; + names[++k] = "Mix Weight Percent"; + values[k] = 100.0; + names[++k] = "Mix Molar Volume [m3/mol]"; + values[k] = 1.0 / fluid.getDensity("mol/m3"); + names[++k] = "Mix Volume Percent"; + values[k] = 100.0; + names[++k] = "Mix Density [kg/m3]"; + values[k] = fluid.getDensity("kg/m3"); + names[++k] = "Mix Z Factor"; + values[k] = fluid.getZ(); + names[++k] = "Mix Molecular Weight [g/mol]"; + values[k] = fluid.getMolarMass() * 1000; + names[++k] = "Mix Enthalpy [J/mol]"; + values[k] = fluid.getEnthalpy("J/mol"); + names[++k] = "Mix Entropy [J/molK]"; + values[k] = fluid.getEntropy("J/molK"); + names[++k] = "Mix Heat Capacity-Cp [J/molK]"; + values[k] = fluid.getCp("J/molK"); + names[++k] = "Mix Heat Capacity-Cv [J/molK]"; + values[k] = fluid.getCv("J/molK"); + names[++k] = "Mix Kappa (Cp/Cv)"; + values[k] = fluid.getGamma(); // getCp()/getCv(); + names[++k] = "Mix JT Coefficient [K/Pa]"; + values[k] = Double.NaN; + names[++k] = "Mix Velocity of Sound [m/s]"; + values[k] = Double.NaN; + names[++k] = "Mix Viscosity [Pa s] or [kg/(m*s)]"; + values[k] = fluid.getViscosity("kg/msec"); + names[++k] = "Mix Thermal Conductivity [W/mK]"; + values[k] = fluid.getThermalConductivity("W/mK"); + + // Phase properties (phase: gas=0, liquid=1, Aqueous=2) + for (int j = 0; j < 3; j++) { + String currPhaseName = phaseName[j]; + + if (fluid.hasPhaseType(phaseName[j])) { + int phaseNumber = fluid.getPhaseNumberOfPhase(phaseName[j]); + PhaseInterface currPhase = fluid.getPhase(phaseNumber); + names[++k] = currPhaseName + " Mole Percent"; + values[k] = fluid.getMoleFraction(phaseNumber) * 100; + names[++k] = currPhaseName + " Weight Percent"; + values[k] = fluid.getWtFraction(phaseNumber) * 100; + names[++k] = currPhaseName + " Molar Volume [m3/mol]"; + values[k] = 1.0 / currPhase.getDensity("mol/m3"); + names[++k] = currPhaseName + " Volume Percent"; + values[k] = fluid.getCorrectedVolumeFraction(phaseNumber) * 100; + names[++k] = currPhaseName + " Density [kg/m3]"; + values[k] = currPhase.getDensity("kg/m3"); + names[++k] = currPhaseName + " Z Factor"; + if (Objects.equals(phaseName[j], "oil") || Objects.equals(phaseName[j], "aqueous")) { + // Phase doesn't calculate correct result for these properties. See specs + values[k] = Double.NaN; } else { - values[k] = Double.NaN; + values[k] = currPhase.getZ(); } - names[++k] = "Interfacial Tension Gas/Aqueous [N/m]"; - if (fluid.hasPhaseType("gas") && fluid.hasPhaseType("aqueous")) { - values[k] = fluid.getInterfacialTension("gas", "aqueous"); + names[++k] = currPhaseName + "Molecular Weight [g/mol]"; + values[k] = currPhase.getMolarMass() * 1000; + names[++k] = currPhaseName + "Enthalpy [J/mol]"; + values[k] = currPhase.getEnthalpy("J/mol"); + // currPhase.getEnthalpy() / currPhase.getNumberOfMolesInPhase(); + names[++k] = currPhaseName + "Entropy [J/molK]"; + values[k] = currPhase.getEntropy("J/molK"); + // currPhase.getEntropy() / currPhase.getNumberOfMolesInPhase(); + names[++k] = currPhaseName + "Heat Capacity-Cp [J/molK]"; + values[k] = currPhase.getCp("J/molK"); + // currPhase.getCp() / currPhase.getNumberOfMolesInPhase(); + names[++k] = currPhaseName + " Heat Capacity-Cv [J/molK]"; + values[k] = currPhase.getCv("J/molK"); + // currPhase.getCv() / currPhase.getNumberOfMolesInPhase(); + names[++k] = currPhaseName + " Kappa (Cp/Cv)"; + values[k] = currPhase.getGamma(); // currPhase.getCp() / currPhase.getCv(); + names[++k] = currPhaseName + " JT Coefficient [K/Pa]"; + if (Objects.equals(phaseName[j], "oil") || Objects.equals(phaseName[j], "aqueous")) { + // Phase doesn't calculate correct result for these properties. See specs + values[k] = Double.NaN; + names[++k] = currPhaseName + " Velocity of Sound [m/s]"; + values[k] = Double.NaN; } else { - values[k] = Double.NaN; + values[k] = currPhase.getJouleThomsonCoefficient() / 1e5; + names[++k] = currPhaseName + " Velocity of Sound [m/s]"; + values[k] = currPhase.getSoundSpeed(); } - names[++k] = "Interfacial Tension Oil/Aqueous [N/m]"; - if (fluid.hasPhaseType("oil") && fluid.hasPhaseType("aqueous")) { - values[k] = fluid.getInterfacialTension("oil", "aqueous"); - } else { - values[k] = Double.NaN; - } + names[++k] = currPhaseName + " Viscosity [Pa s] or [kg/msec]"; + values[k] = currPhase.getViscosity("kg/msec"); + names[++k] = currPhaseName + " Thermal Conductivity [W/mK]"; + values[k] = currPhase.getThermalConductivity("W/mK"); + } else { + names[++k] = currPhaseName + " Mole Percent"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Weight Percent"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Molar Volume [m3/mol]"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Volume Percent"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Density [kg/m3]"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Z Factor"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Molecular Weight [g/mol]"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Enthalpy [J/mol]"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Entropy [J/molK]"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Heat Capacity-Cp [J/molK]"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Heat Capacity-Cv [J/molK]"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Kappa (Cp/Cv)"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " JT Coefficient [K/Pa]"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Velocity of Sound [m/s]"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Viscosity [Pa s] or [kg/msec]"; + values[k] = Double.NaN; + names[++k] = currPhaseName + " Thermal Conductivity [W/mK]"; + values[k] = Double.NaN; + } } - /** - * Get property names and values as a map - * - * @return map of property name and values - */ - public HashMap getProperties() { - HashMap propMap = new HashMap(); - for (int i = 0; i < names.length; i++) { - propMap.put(this.names[i], this.values[i]); - } - return propMap; + names[++k] = "Interfacial Tension Gas/Oil [N/m]"; + if (fluid.hasPhaseType("gas") && fluid.hasPhaseType("oil")) { + values[k] = fluid.getInterfacialTension("gas", "oil"); + } else { + values[k] = Double.NaN; } - /** - * Getter for property values - * - * @return Systemproperty values - */ - public Double[] getValues() { - return this.values; + names[++k] = "Interfacial Tension Gas/Aqueous [N/m]"; + if (fluid.hasPhaseType("gas") && fluid.hasPhaseType("aqueous")) { + values[k] = fluid.getInterfacialTension("gas", "aqueous"); + } else { + values[k] = Double.NaN; } - /** - * Get names of properties - * - * @return Array of names of properties - */ - public static String[] getPropertyNames() { - SystemProperties p = new SystemProperties(new SystemSrkEos()); - return p.names; + names[++k] = "Interfacial Tension Oil/Aqueous [N/m]"; + if (fluid.hasPhaseType("oil") && fluid.hasPhaseType("aqueous")) { + values[k] = fluid.getInterfacialTension("oil", "aqueous"); + } else { + values[k] = Double.NaN; + } + } + + /** + * Get property names and values as a map. + * + * @return map of property name and values + */ + public HashMap getProperties() { + HashMap propMap = new HashMap(); + for (int i = 0; i < names.length; i++) { + propMap.put(this.names[i], this.values[i]); } + return propMap; + } + + /** + * Getter for property values. + * + * @return Systemproperty values + */ + public Double[] getValues() { + return this.values; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemPsrkEos.java b/src/main/java/neqsim/thermo/system/SystemPsrkEos.java index 0a355f7920..9716498992 100644 --- a/src/main/java/neqsim/thermo/system/SystemPsrkEos.java +++ b/src/main/java/neqsim/thermo/system/SystemPsrkEos.java @@ -1,62 +1,60 @@ package neqsim.thermo.system; /** - * This class defines a thermodynamic system using the Predictive SRK-EoS equation of state - * + * This class defines a thermodynamic system using the Predictive SRK-EoS equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemPsrkEos extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemPsrkEos() { - super(); - modelName = "Predictive-SRK-EOS"; - attractiveTermNumber = 4; - } - - /** - *

- * Constructor for SystemPsrkEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemPsrkEos(double T, double P) { - super(T, P); - modelName = "Predictive-SRK-EOS"; - attractiveTermNumber = 4; - } + /** + *

+ * Constructor for SystemPsrkEos. + *

+ */ + public SystemPsrkEos() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemPsrkEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemPsrkEos(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - attractiveTermNumber = 4; - modelName = "Predictive-SRK-EOS"; - } - - /** {@inheritDoc} */ - @Override - public SystemPsrkEos clone() { - SystemPsrkEos clonedSystem = null; - try { - clonedSystem = (SystemPsrkEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for SystemPsrkEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemPsrkEos(double T, double P) { + this(T, P, false); + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + /** + *

+ * Constructor for SystemPsrkEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemPsrkEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 4; + modelName = "Predictive-SRK-EOS"; + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemPsrkEos clone() { + SystemPsrkEos clonedSystem = null; + try { + clonedSystem = (SystemPsrkEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemRKEos.java b/src/main/java/neqsim/thermo/system/SystemRKEos.java index 123e6d7eaf..148b755387 100644 --- a/src/main/java/neqsim/thermo/system/SystemRKEos.java +++ b/src/main/java/neqsim/thermo/system/SystemRKEos.java @@ -4,84 +4,74 @@ import neqsim.thermo.phase.PhaseRK; /** - * This class defines a thermodynamic system using the RK equation of state - * + * This class defines a thermodynamic system using the RK equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemRKEos extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemRKEos() { - super(); - modelName = "RK-EOS"; - attractiveTermNumber = 5; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseRK(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - *

- * Constructor for SystemRKEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemRKEos(double T, double P) { - super(T, P); - attractiveTermNumber = 5; - modelName = "RK-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseRK(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + *

+ * Constructor for SystemRKEos. + *

+ */ + public SystemRKEos() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemRKEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemRKEos(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 5; - setNumberOfPhases(4); - modelName = "RK-EOS"; - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemRKEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemRKEos(double T, double P) { + this(T, P, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseRK(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemRKEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemRKEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 5; + modelName = "RK-EOS"; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseRK(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemRKEos clone() { - SystemRKEos clonedSystem = null; - try { - clonedSystem = (SystemRKEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + setNumberOfPhases(4); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemRKEos clone() { + SystemRKEos clonedSystem = null; + try { + clonedSystem = (SystemRKEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemSrkCPA.java b/src/main/java/neqsim/thermo/system/SystemSrkCPA.java index 074f262237..acf5c117cf 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkCPA.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkCPA.java @@ -5,115 +5,102 @@ import neqsim.thermo.phase.PhaseSrkCPA; /** - * This class defines a thermodynamic system using the CPA EoS equation of state - * + * This class defines a thermodynamic system using the CPA EoS equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ - public class SystemSrkCPA extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; -public SystemSrkCPA() { - super(); - modelName = "CPA-SRK-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkCPA(); - } - this.useVolumeCorrection(true); - commonInitialization(); - } + /** + *

+ * Constructor for SystemSrkCPA. + *

+ */ + public SystemSrkCPA() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemSrkCPA. - *

- * - * @param T a double - * @param P a double - */ - public SystemSrkCPA(double T, double P) { - super(T, P); - modelName = "CPA-SRK-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkCPA(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(true); - commonInitialization(); - } + /** + *

+ * Constructor for SystemSrkCPA. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemSrkCPA(double T, double P) { + this(T, P, false); + } - /** - *

- * Constructor for SystemSrkCPA. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemSrkCPA(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkCPA(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(true); - commonInitialization(); + /** + *

+ * Constructor for SystemSrkCPA. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemSrkCPA(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + // Recreates phases created in super constructor SystemSrkEos + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseSrkCPA(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); + } + this.useVolumeCorrection(true); + commonInitialization(); - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + if (solidPhaseCheck) { + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); } - /** {@inheritDoc} */ - @Override - public SystemSrkCPA clone() { - SystemSrkCPA clonedSystem = null; - try { - clonedSystem = (SystemSrkCPA) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + /** {@inheritDoc} */ + @Override + public void addComponent(String componentName, double moles) { + // if (componentName.equals("Ca++") || componentName.equals("Na+") || + // componentName.equals("Cl-")) { + // componentName = "NaCl"; + // } + super.addComponent(componentName, moles); + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemSrkCPA clone() { + SystemSrkCPA clonedSystem = null; + try { + clonedSystem = (SystemSrkCPA) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * commonInitialization. - *

- */ - public void commonInitialization() { - setImplementedCompositionDeriativesofFugacity(true); - setImplementedPressureDeriativesofFugacity(true); - setImplementedTemperatureDeriativesofFugacity(true); - } + return clonedSystem; + } - /** {@inheritDoc} */ - @Override - public void addComponent(String componentName, double moles) { - // if (componentName.equals("Ca++") || componentName.equals("Na+") || - // componentName.equals("Cl-")) { - // componentName = "NaCl"; - // } - super.addComponent(componentName, moles); - } + /** + *

+ * commonInitialization. + *

+ */ + public void commonInitialization() { + setImplementedCompositionDeriativesofFugacity(true); + setImplementedPressureDeriativesofFugacity(true); + setImplementedTemperatureDeriativesofFugacity(true); + } } diff --git a/src/main/java/neqsim/thermo/system/SystemSrkCPAs.java b/src/main/java/neqsim/thermo/system/SystemSrkCPAs.java index af2efbb523..6f86bc584d 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkCPAs.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkCPAs.java @@ -5,88 +5,81 @@ import neqsim.thermo.phase.PhaseSrkCPAsOld; /** - * This class defines a thermodynamic system using the sCPA-EOS equation of state - * + * This class defines a thermodynamic system using the sCPA-EOS equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkCPAs extends SystemSrkCPA { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; -public SystemSrkCPAs() { - super(); - this.useVolumeCorrection(true); - modelName = "CPAs-SRK-EOS"; - } - - /** - *

- * Constructor for SystemSrkCPAs. - *

- * - * @param T a double - * @param P a double - */ - public SystemSrkCPAs(double T, double P) { - super(T, P); - modelName = "CPAs-SRK-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkCPAsOld(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(true); - } + /** + *

+ * Constructor for SystemSrkCPAs. + *

+ */ + public SystemSrkCPAs() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemSrkCPAs. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemSrkCPAs(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - modelName = "CPAs-SRK-EOS"; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkCPAsOld(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(true); + /** + *

+ * Constructor for SystemSrkCPAs. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemSrkCPAs(double T, double P) { + this(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemSrkCPAs. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemSrkCPAs(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "CPAs-SRK-EOS"; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + // Recreates phases created in super constructor SystemSrkCPA + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseSrkCPAsOld(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } + this.useVolumeCorrection(true); - /** {@inheritDoc} */ - @Override - public SystemSrkCPAs clone() { - SystemSrkCPAs clonedSystem = null; - try { - clonedSystem = (SystemSrkCPAs) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemSrkCPAs clone() { + SystemSrkCPAs clonedSystem = null; + try { + clonedSystem = (SystemSrkCPAs) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemSrkCPAstatoil.java b/src/main/java/neqsim/thermo/system/SystemSrkCPAstatoil.java index 7edb30841a..61b653fcb8 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkCPAstatoil.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkCPAstatoil.java @@ -5,90 +5,76 @@ import neqsim.thermo.phase.PhaseSrkCPAs; /** - * This class defines a thermodynamic system using the CPA-EOS of Equinor equation of state - * + * This class defines a thermodynamic system using the CPA-EOS of Equinor equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkCPAstatoil extends SystemSrkCPAs { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - * Constructor of a fluid object using the CPA-EoS version of Equinor - */ - public SystemSrkCPAstatoil() { - super(); - attractiveTermNumber = 15; - modelName = "CPAs-SRK-EOS-statoil"; - } - - /** - * Constructor of a fluid object using the CPA-EoS version of Equinor - * - * @param T The temperature in unit Kelvin - * @param P The pressure in unit bara (absolute pressure) - */ - public SystemSrkCPAstatoil(double T, double P) { - super(T, P); - modelName = "CPAs-SRK-EOS-statoil"; - attractiveTermNumber = 15; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkCPAs(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(true); - } + /** + * Constructor of a fluid object using the CPA-EoS version of Equinor. + */ + public SystemSrkCPAstatoil() { + this(298.15, 1.0, false); + } - /** - * Constructor of a fluid object using the CPA-EoS version of Equinor - * - * @param T The temperature in unit Kelvin - * @param P The pressure in unit bara (absolute pressure) - * @param solidCheck a boolean variable specifying if solid phase check and calculation should - * be done - */ - public SystemSrkCPAstatoil(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - modelName = "CPAs-SRK-EOS-statoil"; - attractiveTermNumber = 15; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkCPAs(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - this.useVolumeCorrection(true); + /** + * Constructor of a fluid object using the CPA-EoS version of Equinor. + * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemSrkCPAstatoil(double T, double P) { + this(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + * Constructor of a fluid object using the CPA-EoS version of Equinor. + * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemSrkCPAstatoil(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "CPAs-SRK-EOS-statoil"; + attractiveTermNumber = 15; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + // Recreates phases created in super constructor SystemSrkCPAs + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseSrkCPAs(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } + this.useVolumeCorrection(true); - /** {@inheritDoc} */ - @Override - public SystemSrkCPAstatoil clone() { - SystemSrkCPAstatoil clonedSystem = null; - try { - clonedSystem = (SystemSrkCPAstatoil) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemSrkCPAstatoil clone() { + SystemSrkCPAstatoil clonedSystem = null; + try { + clonedSystem = (SystemSrkCPAstatoil) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemSrkEos.java b/src/main/java/neqsim/thermo/system/SystemSrkEos.java index bd85091f56..aed2de75d6 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkEos.java @@ -5,98 +5,76 @@ import neqsim.thermo.phase.PhaseSrkEos; /** - * This class defines a thermodynamic system using the SRK equation of state - * + * This class defines a thermodynamic system using the SRK equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkEos extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - * Constructor of a fluid object using the SRK-EoS - */ - public SystemSrkEos() { - super(); - modelName = "SRK-EOS"; - getCharacterization().setTBPModel("PedersenSRK");// (RiaziDaubert PedersenPR PedersenSRK - attractiveTermNumber = 0; + /** + * Constructor of a fluid object using the SRK-EoS. + */ + public SystemSrkEos() { + this(298.15, 1.0, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkEos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - * Constructor of a fluid object using the SRK-EoS - * - * @param T The temperature in unit Kelvin - * @param P The pressure in unit bara (absolute pressure) - */ - public SystemSrkEos(double T, double P) { - super(T, P); - modelName = "SRK-EOS"; - getCharacterization().setTBPModel("PedersenSRK"); - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + * Constructor of a fluid object using the SRK-EoS. + * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemSrkEos(double T, double P) { + this(T, P, false); + } - /** - * Constructor of a fluid object using the SRK-EoS - * - * @param T The temperature in unit Kelvin - * @param P The pressure in unit bara (absolute pressure) - * @param solidCheck a boolean variable specifying if solid phase check and calculation should - * be done - */ - public SystemSrkEos(double T, double P, boolean solidCheck) { - this(T, P); - modelName = "SRK-EOS"; - attractiveTermNumber = 0; - setNumberOfPhases(5); - solidPhaseCheck = solidCheck; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + * Constructor of a fluid object using the SRK-EoS. + * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemSrkEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "SRK-EOS"; + getCharacterization().setTBPModel("PedersenSRK"); + attractiveTermNumber = 0; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseSrkEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); + } - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); } - /** {@inheritDoc} */ - @Override - public SystemSrkEos clone() { - SystemSrkEos clonedSystem = null; - try { - clonedSystem = (SystemSrkEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemSrkEos clone() { + SystemSrkEos clonedSystem = null; + try { + clonedSystem = (SystemSrkEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemSrkMathiasCopeman.java b/src/main/java/neqsim/thermo/system/SystemSrkMathiasCopeman.java index a1145f791f..a2ee47539b 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkMathiasCopeman.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkMathiasCopeman.java @@ -1,62 +1,60 @@ package neqsim.thermo.system; /** - * This class defines a thermodynamic system using the SRK with Mathias Copeman equation of state - * + * This class defines a thermodynamic system using the SRK with Mathias Copeman equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkMathiasCopeman extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemSrkMathiasCopeman() { - super(); - modelName = "Mathias-Copeman-SRK-EOS"; - attractiveTermNumber = 4; - } - - /** - *

- * Constructor for SystemSrkMathiasCopeman. - *

- * - * @param T a double - * @param P a double - */ - public SystemSrkMathiasCopeman(double T, double P) { - super(T, P); - modelName = "Mathias-Copeman-SRK-EOS"; - attractiveTermNumber = 4; - } + /** + *

+ * Constructor for SystemSrkMathiasCopeman. + *

+ */ + public SystemSrkMathiasCopeman() { + this(289.15, 1.0, false); + } - /** - *

- * Constructor for SystemSrkMathiasCopeman. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemSrkMathiasCopeman(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - attractiveTermNumber = 4; - modelName = "Mathias-Copeman-SRK-EOS"; - } - - /** {@inheritDoc} */ - @Override - public SystemSrkMathiasCopeman clone() { - SystemSrkMathiasCopeman clonedSystem = null; - try { - clonedSystem = (SystemSrkMathiasCopeman) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for SystemSrkMathiasCopeman. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemSrkMathiasCopeman(double T, double P) { + this(T, P, false); + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + /** + *

+ * Constructor for SystemSrkMathiasCopeman. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemSrkMathiasCopeman(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 4; + modelName = "Mathias-Copeman-SRK-EOS"; + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemSrkMathiasCopeman clone() { + SystemSrkMathiasCopeman clonedSystem = null; + try { + clonedSystem = (SystemSrkMathiasCopeman) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemSrkPenelouxEos.java b/src/main/java/neqsim/thermo/system/SystemSrkPenelouxEos.java index 510cfd1cb4..701f961890 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkPenelouxEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkPenelouxEos.java @@ -5,98 +5,77 @@ import neqsim.thermo.phase.PhaseSrkPenelouxEos; /** - * This class defines a thermodynamic system using the SRK Peneloux equation of state - * + * This class defines a thermodynamic system using the SRK Peneloux equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkPenelouxEos extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - * Constructor of a fluid object using the SRK-EoS - */ - public SystemSrkPenelouxEos() { - super(); - modelName = "SRK-Peneloux-EOS"; - getCharacterization().setTBPModel("PedersenSRK");// (RiaziDaubert PedersenPR PedersenSRK - attractiveTermNumber = 0; + /** + * Constructor of a fluid object using the SRK-EoS. + */ + public SystemSrkPenelouxEos() { + this(298.15, 1.0, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkPenelouxEos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - * Constructor of a fluid object using the SRK-EoS - * - * @param T The temperature in unit Kelvin - * @param P The pressure in unit bara (absolute pressure) - */ - public SystemSrkPenelouxEos(double T, double P) { - super(T, P); - modelName = "SRK-Peneloux-EOS"; - getCharacterization().setTBPModel("PedersenSRK"); - attractiveTermNumber = 0; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkPenelouxEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + * Constructor of a fluid object using the SRK-EoS. + * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemSrkPenelouxEos(double T, double P) { + this(T, P, false); + } - /** - * Constructor of a fluid object using the SRK-EoS - * - * @param T The temperature in unit Kelvin - * @param P The pressure in unit bara (absolute pressure) - * @param solidCheck a boolean variable specifying if solid phase check and calculation should - * be done - */ - public SystemSrkPenelouxEos(double T, double P, boolean solidCheck) { - this(T, P); - modelName = "SRK-Peneloux-EOS"; - attractiveTermNumber = 0; - setNumberOfPhases(5); - solidPhaseCheck = solidCheck; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseSrkPenelouxEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + * Constructor of a fluid object using the SRK-EoS. + * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemSrkPenelouxEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "SRK-Peneloux-EOS"; + getCharacterization().setTBPModel("PedersenSRK"); + attractiveTermNumber = 0; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + // Recreates phases created in super constructor SystemSrkEos + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseSrkPenelouxEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); + } - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); } - /** {@inheritDoc} */ - @Override - public SystemSrkPenelouxEos clone() { - SystemSrkPenelouxEos clonedSystem = null; - try { - clonedSystem = (SystemSrkPenelouxEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemSrkPenelouxEos clone() { + SystemSrkPenelouxEos clonedSystem = null; + try { + clonedSystem = (SystemSrkPenelouxEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemSrkSchwartzentruberEos.java b/src/main/java/neqsim/thermo/system/SystemSrkSchwartzentruberEos.java index 1251b54ac8..8372590e29 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkSchwartzentruberEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkSchwartzentruberEos.java @@ -1,62 +1,60 @@ package neqsim.thermo.system; /** - * This class defines a thermodynamic system using the SRK Schwartzentruber equation of state - * + * This class defines a thermodynamic system using the SRK Schwartzentruber equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkSchwartzentruberEos extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemSrkSchwartzentruberEos() { - super(); - modelName = "ScRK-EOS"; - attractiveTermNumber = 2; - } - - /** - *

- * Constructor for SystemSrkSchwartzentruberEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemSrkSchwartzentruberEos(double T, double P) { - super(T, P); - modelName = "ScRK-EOS"; - attractiveTermNumber = 2; - } + /** + *

+ * Constructor for SystemSrkSchwartzentruberEos. + *

+ */ + public SystemSrkSchwartzentruberEos() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemSrkSchwartzentruberEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemSrkSchwartzentruberEos(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - modelName = "ScRK-EOS"; - attractiveTermNumber = 2; - } - - /** {@inheritDoc} */ - @Override - public SystemSrkSchwartzentruberEos clone() { - SystemSrkSchwartzentruberEos clonedSystem = null; - try { - clonedSystem = (SystemSrkSchwartzentruberEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for SystemSrkSchwartzentruberEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemSrkSchwartzentruberEos(double T, double P) { + this(T, P, false); + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + /** + *

+ * Constructor for SystemSrkSchwartzentruberEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemSrkSchwartzentruberEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "ScRK-EOS"; + attractiveTermNumber = 2; + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemSrkSchwartzentruberEos clone() { + SystemSrkSchwartzentruberEos clonedSystem = null; + try { + clonedSystem = (SystemSrkSchwartzentruberEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonEos.java b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonEos.java index 492d9f4839..12d851c3a5 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonEos.java @@ -1,62 +1,60 @@ package neqsim.thermo.system; /** - * This class defines a thermodynamic system using the SRK Two Coon equation of state - * + * This class defines a thermodynamic system using the SRK Two Coon equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkTwuCoonEos extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemSrkTwuCoonEos() { - super(); - modelName = "TwuCoonRK-EOS"; - attractiveTermNumber = 11; - } - - /** - *

- * Constructor for SystemSrkTwuCoonEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemSrkTwuCoonEos(double T, double P) { - super(T, P); - modelName = "TwuCoonRK-EOS"; - attractiveTermNumber = 11; - } + /** + *

+ * Constructor for SystemSrkTwuCoonEos. + *

+ */ + public SystemSrkTwuCoonEos() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemSrkTwuCoonEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemSrkTwuCoonEos(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - modelName = "TwuCoonRK-EOS"; - attractiveTermNumber = 11; - } - - /** {@inheritDoc} */ - @Override - public SystemSrkTwuCoonEos clone() { - SystemSrkTwuCoonEos clonedSystem = null; - try { - clonedSystem = (SystemSrkTwuCoonEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for SystemSrkTwuCoonEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemSrkTwuCoonEos(double T, double P) { + this(T, P, false); + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + /** + *

+ * Constructor for SystemSrkTwuCoonEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemSrkTwuCoonEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "TwuCoonRK-EOS"; + attractiveTermNumber = 11; + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemSrkTwuCoonEos clone() { + SystemSrkTwuCoonEos clonedSystem = null; + try { + clonedSystem = (SystemSrkTwuCoonEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonParamEos.java b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonParamEos.java index 765daae2a3..8b3cfd4aa2 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonParamEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonParamEos.java @@ -1,62 +1,60 @@ package neqsim.thermo.system; /** - * This class defines a thermodynamic system using the SRK Two Coon Param equation of state - * + * This class defines a thermodynamic system using the SRK Two Coon Param equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemSrkTwuCoonParamEos extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemSrkTwuCoonParamEos() { - super(); - modelName = "TwuCoonRKparam-EOS"; - attractiveTermNumber = 12; - } - - /** - *

- * Constructor for SystemSrkTwuCoonParamEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemSrkTwuCoonParamEos(double T, double P) { - super(T, P); - modelName = "TwuCoonRKparam-EOS"; - attractiveTermNumber = 12; - } + /** + *

+ * Constructor for SystemSrkTwuCoonParamEos. + *

+ */ + public SystemSrkTwuCoonParamEos() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemSrkTwuCoonParamEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemSrkTwuCoonParamEos(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - modelName = "TwuCoonRKparam-EOS"; - attractiveTermNumber = 12; - } - - /** {@inheritDoc} */ - @Override - public SystemSrkTwuCoonParamEos clone() { - SystemSrkTwuCoonParamEos clonedSystem = null; - try { - clonedSystem = (SystemSrkTwuCoonParamEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for SystemSrkTwuCoonParamEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemSrkTwuCoonParamEos(double T, double P) { + this(T, P, false); + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + /** + *

+ * Constructor for SystemSrkTwuCoonParamEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemSrkTwuCoonParamEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "TwuCoonRKparam-EOS"; + attractiveTermNumber = 12; + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemSrkTwuCoonParamEos clone() { + SystemSrkTwuCoonParamEos clonedSystem = null; + try { + clonedSystem = (SystemSrkTwuCoonParamEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonStatoilEos.java b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonStatoilEos.java index 2cb91cfe86..92c7283735 100644 --- a/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonStatoilEos.java +++ b/src/main/java/neqsim/thermo/system/SystemSrkTwuCoonStatoilEos.java @@ -2,63 +2,60 @@ /** * This class defines a thermodynamic system using the SRK Two Coon model of Statoil equation of - * state + * state. * * @author asmund * @version $Id: $Id */ public class SystemSrkTwuCoonStatoilEos extends SystemSrkEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemSrkTwuCoonStatoilEos() { - super(); - modelName = "TwuCoonStatoil-EOS"; - attractiveTermNumber = 18; - } - - /** - *

- * Constructor for SystemSrkTwuCoonStatoilEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemSrkTwuCoonStatoilEos(double T, double P) { - super(T, P); - modelName = "TwuCoonStatoil-EOS"; - attractiveTermNumber = 18; - } + /** + *

+ * Constructor for SystemSrkTwuCoonStatoilEos. + *

+ */ + public SystemSrkTwuCoonStatoilEos() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemSrkTwuCoonStatoilEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemSrkTwuCoonStatoilEos(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - modelName = "TwuCoonStatoil-EOS"; - attractiveTermNumber = 18; - } - - /** {@inheritDoc} */ - @Override - public SystemSrkTwuCoonStatoilEos clone() { - SystemSrkTwuCoonStatoilEos clonedSystem = null; - try { - clonedSystem = (SystemSrkTwuCoonStatoilEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for SystemSrkTwuCoonStatoilEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemSrkTwuCoonStatoilEos(double T, double P) { + this(T, P, false); + } - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + /** + *

+ * Constructor for SystemSrkTwuCoonStatoilEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemSrkTwuCoonStatoilEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "TwuCoonStatoil-EOS"; + attractiveTermNumber = 18; + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemSrkTwuCoonStatoilEos clone() { + SystemSrkTwuCoonStatoilEos clonedSystem = null; + try { + clonedSystem = (SystemSrkTwuCoonStatoilEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemTSTEos.java b/src/main/java/neqsim/thermo/system/SystemTSTEos.java index 15be830516..2def778082 100644 --- a/src/main/java/neqsim/thermo/system/SystemTSTEos.java +++ b/src/main/java/neqsim/thermo/system/SystemTSTEos.java @@ -5,105 +5,83 @@ import neqsim.thermo.phase.PhaseTSTEos; /** - * This class defines a thermodynamic system using the TST equation of state - * + * This class defines a thermodynamic system using the TST equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemTSTEos extends SystemEos { - private static final long serialVersionUID = 1000; - double[][] TBPfractionCoefs = {{73.404, 97.356, 0.61874, -2059.3, 0.0}, - {0.072846, 2.1881, 163.91, -4043.4, 1.0 / 3.0}, - {0.37377, 0.005493, 0.011793, -4.9e-6, 0.0}}; + private static final long serialVersionUID = 1000; + double[][] TBPfractionCoefs = {{73.404, 97.356, 0.61874, -2059.3, 0.0}, + {0.072846, 2.1881, 163.91, -4043.4, 1.0 / 3.0}, {0.37377, 0.005493, 0.011793, -4.9e-6, 0.0}}; - /** - *

- * Constructor for SystemTSTEos. - *

- */ - public SystemTSTEos() { - super(); - modelName = "TST-EOS"; - attractiveTermNumber = 14; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseTSTEos(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - } - } - - /** - *

- * Constructor for SystemTSTEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemTSTEos(double T, double P) { - super(T, P); - modelName = "TST-EOS"; - attractiveTermNumber = 14; - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseTSTEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } - - /** - *

- * Constructor for SystemTSTEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemTSTEos(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 14; - setNumberOfPhases(5); - modelName = "TST-EOS"; - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemTSTEos. + *

+ */ + public SystemTSTEos() { + this(298.15, 1.0, false); + } - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseTSTEos(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemTSTEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemTSTEos(double T, double P) { + this(T, P, false); + } - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + /** + *

+ * Constructor for SystemTSTEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemTSTEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 14; + modelName = "TST-EOS"; - if (hydrateCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhaseHydrate(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + for (int i = 0; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseTSTEos(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemTSTEos clone() { - SystemTSTEos clonedSystem = null; - try { - clonedSystem = (SystemTSTEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + if (solidPhaseCheck) { + setNumberOfPhases(5); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } - // clonedSystem.phaseArray = (PhaseInterface[]) phaseArray.clone(); - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (hydrateCheck) { + phaseArray[numberOfPhases - 1] = new PhaseHydrate(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemTSTEos clone() { + SystemTSTEos clonedSystem = null; + try { + clonedSystem = (SystemTSTEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemThermo.java b/src/main/java/neqsim/thermo/system/SystemThermo.java index f1e1ab2292..4848ced670 100644 --- a/src/main/java/neqsim/thermo/system/SystemThermo.java +++ b/src/main/java/neqsim/thermo/system/SystemThermo.java @@ -1,29 +1,20 @@ package neqsim.thermo.system; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.Toolkit; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; -import java.sql.ResultSet; -import java.text.FieldPosition; import java.util.ArrayList; -import javax.swing.JFrame; -import javax.swing.JScrollPane; -import javax.swing.JTable; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import com.google.gson.GsonBuilder; import neqsim.chemicalReactions.ChemicalReactionOperations; import neqsim.physicalProperties.interfaceProperties.InterfaceProperties; import neqsim.physicalProperties.interfaceProperties.InterphasePropertiesInterface; import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.ThermodynamicModelSettings; import neqsim.thermo.characterization.Characterise; import neqsim.thermo.characterization.WaxCharacterise; import neqsim.thermo.characterization.WaxModelInterface; @@ -34,94 +25,117 @@ import neqsim.thermo.phase.PhasePureComponentSolid; import neqsim.thermo.phase.PhaseSolid; import neqsim.thermo.phase.PhaseSolidComplex; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.phase.PhaseWax; import neqsim.util.database.NeqSimDataBase; +import neqsim.util.exception.InvalidInputException; +import neqsim.util.unit.Units; -/* - * This is the base class of the System classes. The purpose of this class is to give common - * variables and methods to sub classes. The methods and variables in this class are: Date Method - * Purpose 7/3-00 System_Thermo(double, double) Constructor 7/3-00 addcomponent(String, double) - * addding components from text-file: "Component_Data.txt" 7/3-00 init() initializing +/** + * This is the base class of the System classes. + * + * @author Even Solbraa */ - -abstract class SystemThermo implements SystemInterface { - private static final long serialVersionUID = 1000; +public abstract class SystemThermo implements SystemInterface { + /** Logger object for class. */ + static Logger logger = LogManager.getLogger(SystemThermo.class); // Class variables + private static final int MAX_PHASES = 6; - private boolean implementedTemperatureDeriativesofFugacity = true; - private boolean implementedPressureDeriativesofFugacity = true; - private boolean implementedCompositionDeriativesofFugacity = true; - protected double criticalTemperature = 0; - protected String[][] resultTable = null; - boolean isInitialized = false; - protected String fluidInfo = "No Information Available"; - protected String fluidName = "DefaultName"; - - protected String modelName = "Default"; - - protected boolean numericDerivatives = false; - - protected boolean allowPhaseShift = true; + /** Serialization version UID. */ + private static final long serialVersionUID = 1000; - private boolean useTVasIndependentVariables = false; - protected double criticalPressure = 0; - private double totalNumberOfMoles = 0; - public String componentNameTag = ""; - protected neqsim.thermo.characterization.WaxCharacterise waxCharacterisation = null; // new - // WaxCharacterise(this); - protected double[] beta = new double[6]; protected int a; + protected boolean allowPhaseShift = true; + protected int attractiveTermNumber = 0; - protected int initType = 3; - - private ArrayList componentNames = new ArrayList(); - // protected ArrayList resultArray1 = new ArrayList(); - protected String[] CapeOpenProperties11 = {"molecularWeight", "speedOfSound", - "jouleThomsonCoefficient", "internalEnergy", "internalEnergy.Dtemperature", "gibbsEnergy", - "helmholtzEnergy", "fugacityCoefficient", "logFugacityCoefficient", + // Fraction of moles_in_phase / moles_in_system. + protected double[] beta = new double[MAX_PHASES]; + protected String[] CapeOpenProperties10 = {"molecularWeight", "speedOfSound", + "jouleThomsonCoefficient", "energy", "energy.Dtemperature", "gibbsFreeEnergy", + "helmholtzFreeEnergy", "fugacityCoefficient", "logFugacityCoefficient", "logFugacityCoefficient.Dtemperature", "logFugacityCoefficient.Dpressure", "logFugacityCoefficient.Dmoles", "enthalpy", "enthalpy.Dmoles", "enthalpy.Dtemperature", "enthalpy.Dpressure", "entropy", "entropy.Dtemperature", "entropy.Dpressure", - "entropy.Dmoles", "heatCapacityCp", "heatCapacityCv", "density", "density.Dtemperature", + "entropy.Dmoles", "heatCapacity", "heatCapacityCv", "density", "density.Dtemperature", "density.Dpressure", "density.Dmoles", "volume", "volume.Dpressure", "volume.Dtemperature", "molecularWeight.Dtemperature", "molecularWeight.Dpressure", "molecularWeight.Dmoles", "compressibilityFactor"}; - protected String[] CapeOpenProperties10 = {"molecularWeight", "speedOfSound", - "jouleThomsonCoefficient", "energy", "energy.Dtemperature", "gibbsFreeEnergy", - "helmholtzFreeEnergy", "fugacityCoefficient", "logFugacityCoefficient", + // protected ArrayList resultArray1 = new ArrayList(); + protected String[] CapeOpenProperties11 = {"molecularWeight", "speedOfSound", + "jouleThomsonCoefficient", "internalEnergy", "internalEnergy.Dtemperature", "gibbsEnergy", + "helmholtzEnergy", "fugacityCoefficient", "logFugacityCoefficient", "logFugacityCoefficient.Dtemperature", "logFugacityCoefficient.Dpressure", "logFugacityCoefficient.Dmoles", "enthalpy", "enthalpy.Dmoles", "enthalpy.Dtemperature", "enthalpy.Dpressure", "entropy", "entropy.Dtemperature", "entropy.Dpressure", - "entropy.Dmoles", "heatCapacity", "heatCapacityCv", "density", "density.Dtemperature", + "entropy.Dmoles", "heatCapacityCp", "heatCapacityCv", "density", "density.Dtemperature", "density.Dpressure", "density.Dmoles", "volume", "volume.Dpressure", "volume.Dtemperature", "molecularWeight.Dtemperature", "molecularWeight.Dpressure", "molecularWeight.Dmoles", "compressibilityFactor"}; - protected int numberOfComponents = 0; - protected int numberOfPhases = 2; - public int maxNumberOfPhases = 2; - protected int attractiveTermNumber = 0; - protected int phase = 2; - protected int onePhaseType = 1; // 0 - liquid 1 - gas - protected int[] phaseType = {1, 0, 0, 0, 0, 0}; - protected int[] phaseIndex = {0, 1, 2, 3, 4, 5}; + + public neqsim.thermo.characterization.Characterise characterization = null; + protected boolean checkStability = true; protected ChemicalReactionOperations chemicalReactionOperations = null; - private int mixingRule = 1; protected boolean chemicalSystem = false; + private ArrayList componentNames = new ArrayList(); - protected boolean solidPhaseCheck = false; + // TODO: componentNameTag is not working yet, a kind of alias-postfix for + // Components from this + // system that will be passed on to other systems. used to find originator of + // specific components + // or + public String componentNameTag = ""; - protected boolean multiPhaseCheck = false; + protected double criticalPressure = 0; + protected double criticalTemperature = 0; + // Object metadata + protected String fluidInfo = "No Information Available"; + protected String fluidName = "DefaultName"; + private boolean forcePhaseTypes = false; protected boolean hydrateCheck = false; - protected boolean checkStability = true; - protected PhaseInterface[] phaseArray; - public neqsim.thermo.characterization.Characterise characterization = null; - protected neqsim.standards.StandardInterface standard = null; + private boolean implementedCompositionDeriativesofFugacity = true; + private boolean implementedPressureDeriativesofFugacity = true; + + private boolean implementedTemperatureDeriativesofFugacity = true; + protected int initType = 3; protected InterphasePropertiesInterface interfaceProp = null; + + // Initialization + boolean isInitialized = false; + /** Maximum allowed number of phases . */ + public int maxNumberOfPhases = 2; + private int mixingRule = 1; + protected String modelName = "Default"; + protected boolean multiPhaseCheck = false; private boolean multiphaseWaxCheck = false; - private boolean forcePhaseTypes = false; - static Logger logger = LogManager.getLogger(SystemThermo.class); + + // todo: replace numberOfComponents with length of componentNames. + protected int numberOfComponents = 0; + /** Number of phases in use/existing. */ + protected int numberOfPhases = 2; + protected boolean numericDerivatives = false; + + /** + * Array containing all phases of System. NB! Phases are reorered according to density, use + * phaseIndex to keep track of the creation order. + */ + protected PhaseInterface[] phaseArray = new PhaseInterface[MAX_PHASES]; + /** + * Array of indexes to phaseArray keeping track of the creation order of the phases where 0 is the + * first created phase and the lowest number is the phase created last. + */ + protected int[] phaseIndex; + // PhaseType of phases belonging to system. + protected PhaseType[] phaseType = new PhaseType[MAX_PHASES]; + + protected String[][] resultTable = null; + protected boolean solidPhaseCheck = false; + protected neqsim.standards.StandardInterface standard = null; + private double totalNumberOfMoles = 0; + private boolean useTVasIndependentVariables = false; + protected neqsim.thermo.characterization.WaxCharacterise waxCharacterisation = null; /** *

@@ -129,9 +143,10 @@ abstract class SystemThermo implements SystemInterface { *

*/ public SystemThermo() { - phaseArray = new PhaseInterface[6]; characterization = new Characterise(this); interfaceProp = new InterfaceProperties(this); + + reInitPhaseInformation(); } /** @@ -139,269 +154,372 @@ public SystemThermo() { * Constructor for SystemThermo. *

* - * @param T a double - * @param P a double + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations */ - public SystemThermo(double T, double P) { + public SystemThermo(double T, double P, boolean checkForSolids) { this(); if (T < 0.0) { - String msg = "Negative input temperature"; - logger.error(msg); - neqsim.util.exception.InvalidInputException e = + neqsim.util.exception.InvalidInputException ex = new neqsim.util.exception.InvalidInputException(this.getClass().getSimpleName(), "SystemThermo", "T", "is negative"); - throw new RuntimeException(e); + throw new RuntimeException(ex); } if (P < 0.0) { - String msg = "Negative input pressure"; - logger.error(msg); - neqsim.util.exception.InvalidInputException e = + neqsim.util.exception.InvalidInputException ex = new neqsim.util.exception.InvalidInputException(this.getClass().getSimpleName(), "SystemThermo", "P", "is negative"); - throw new RuntimeException(e); + throw new RuntimeException(ex); } - beta[0] = 1.0; - beta[1] = 1.0; - beta[2] = 1.0; - beta[3] = 1.0; - beta[4] = 1.0; - beta[5] = 1.0; + + this.solidPhaseCheck = checkForSolids; } /** {@inheritDoc} */ @Override - public int getNumberOfComponents() { - return getComponentNames().length; + public void addCapeOpenProperty(String propertyName) { + String[] tempString = new String[CapeOpenProperties11.length + 1]; + System.arraycopy(CapeOpenProperties11, 0, tempString, 0, CapeOpenProperties11.length); + tempString[CapeOpenProperties11.length] = propertyName; + CapeOpenProperties11 = tempString; + + tempString = new String[CapeOpenProperties10.length + 1]; + System.arraycopy(CapeOpenProperties10, 0, tempString, 0, CapeOpenProperties10.length); + tempString[CapeOpenProperties10.length] = propertyName; + CapeOpenProperties10 = tempString; } /** {@inheritDoc} */ @Override - public void clearAll() { - setTotalNumberOfMoles(0); - phaseType[0] = 1; - phaseType[1] = 0; - numberOfComponents = 0; - setNumberOfPhases(2); - phase = 2; - onePhaseType = 1; - beta[0] = 1.0; - beta[1] = 1.0; - beta[2] = 1.0; - beta[3] = 1.0; - beta[4] = 1.0; - beta[5] = 1.0; - chemicalSystem = false; - - double oldTemp = phaseArray[0].getTemperature(); - double oldPres = phaseArray[0].getPressure(); - - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - try { - phaseArray[i] = phaseArray[i].getClass().getDeclaredConstructor().newInstance(); - } catch (Exception e) { - logger.error("err " + e.toString()); - } - phaseArray[i].setTemperature(oldTemp); - phaseArray[i].setPressure(oldPres); + public void addCharacterized(String[] charNames, double[] charFlowrate, double[] molarMass, + double[] relativedensity) { + if (charNames.length != charFlowrate.length) { + logger.error("component names and mole fractions need to be same length..."); + } + for (int i = 0; i < charNames.length; i++) { + addTBPfraction(charNames[i], charFlowrate[i], molarMass[i], relativedensity[i]); } } /** {@inheritDoc} */ @Override - public void resetCharacterisation() { - int numberOfLumpedComps = characterization.getLumpingModel().getNumberOfLumpedComponents(); - characterization = new Characterise(this); - characterization.getLumpingModel().setNumberOfLumpedComponents(numberOfLumpedComps); + public void addComponent(ComponentInterface inComponent) { + if (inComponent.isIsTBPfraction()) { + addTBPfraction(inComponent.getComponentName(), inComponent.getNumberOfmoles(), + inComponent.getMolarMass(), inComponent.getNormalLiquidDensity()); + String componentName = inComponent.getComponentName(); + changeComponentName(componentName + "_PC", componentName.replaceFirst("_PC", "")); + for (int i = 0; i < numberOfPhases; i++) { + getPhase(i).getComponent(componentName) + .setAttractiveTerm(inComponent.getAttractiveTermNumber()); + getPhase(i).getComponent(componentName).setTC(inComponent.getTC()); + getPhase(i).getComponent(componentName).setPC(inComponent.getPC()); + getPhase(i).getComponent(componentName).setMolarMass(inComponent.getMolarMass()); + getPhase(i).getComponent(componentName).setComponentType("TBPfraction"); + getPhase(i).getComponent(componentName) + .setNormalLiquidDensity(inComponent.getNormalLiquidDensity()); + getPhase(i).getComponent(componentName) + .setNormalBoilingPoint(inComponent.getNormalBoilingPoint()); + getPhase(i).getComponent(componentName).setAcentricFactor(inComponent.getAcentricFactor()); + getPhase(i).getComponent(componentName).setCriticalVolume(inComponent.getCriticalVolume()); + getPhase(i).getComponent(componentName).setRacketZ(inComponent.getRacketZ()); + getPhase(i).getComponent(componentName).setRacketZCPA(inComponent.getRacketZCPA()); + getPhase(i).getComponent(componentName).setIsTBPfraction(true); + getPhase(i).getComponent(componentName) + .setParachorParameter(inComponent.getParachorParameter()); + getPhase(i).getComponent(componentName) + .setTriplePointTemperature(inComponent.getTriplePointTemperature()); + getPhase(i).getComponent(componentName) + .setIdealGasEnthalpyOfFormation(inComponent.getIdealGasEnthalpyOfFormation()); + getPhase(i).getComponent(componentName).setCpA(inComponent.getCpA()); + getPhase(i).getComponent(componentName).setCpB(inComponent.getCpB()); + getPhase(i).getComponent(componentName).setCpC(inComponent.getCpC()); + getPhase(i).getComponent(componentName).setCpD(inComponent.getCpD()); + } + } else { + addComponent(inComponent.getComponentName(), inComponent.getNumberOfmoles()); + } } /** {@inheritDoc} */ @Override - public SystemThermo clone() { - SystemThermo clonedSystem = null; - try { - clonedSystem = (SystemThermo) super.clone(); - // clonedSystem.chemicalReactionOperations = (ChemicalReactionOperations) - // chemicalReactionOperations.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - clonedSystem.beta = beta.clone(); - clonedSystem.attractiveTermNumber = attractiveTermNumber; - clonedSystem.phaseType = phaseType.clone(); - clonedSystem.phaseIndex = phaseIndex.clone(); - - clonedSystem.componentNames = new ArrayList(componentNames); - if (interfaceProp != null) { - // clonedSystem.interfaceProp = (InterphasePropertiesInterface) - // interfaceProp.clone(); - } - clonedSystem.characterization = characterization.clone(); - if (clonedSystem.waxCharacterisation != null) { - clonedSystem.waxCharacterisation = waxCharacterisation.clone(); + public void addComponent(int index, double moles) { + if (index >= getPhase(0).getNumberOfComponents()) { + logger.error("componentIndex higher than number of components in system"); + return; } - System.arraycopy(this.beta, 0, clonedSystem.beta, 0, beta.length); - System.arraycopy(this.phaseType, 0, clonedSystem.phaseType, 0, phaseType.length); - System.arraycopy(this.phaseIndex, 0, clonedSystem.phaseIndex, 0, phaseIndex.length); - - clonedSystem.phaseArray = phaseArray.clone(); - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - clonedSystem.phaseArray[i] = phaseArray[i].clone(); + for (PhaseInterface tmpPhase : phaseArray) { + // TODO: adding moles to all phases, not just the active ones. + if (tmpPhase != null) { + tmpPhase.addMolesChemReac(index, moles, moles); + } } - return clonedSystem; + setTotalNumberOfMoles(getTotalNumberOfMoles() + moles); } /** {@inheritDoc} */ @Override - public SystemInterface addFluid(SystemInterface addSystem) { - boolean addedNewComponent = false; - int index = -1; - for (int i = 0; i < addSystem.getPhase(0).getNumberOfComponents(); i++) { - if (!getPhase(0).hasComponent(addSystem.getPhase(0).getComponent(i).getComponentName())) { - index = -1; - addedNewComponent = true; - } else { - index = getPhase(0).getComponent(addSystem.getPhase(0).getComponent(i).getComponentName()) - .getComponentNumber(); - } + public void addComponent(int index, double moles, int phaseNumber) { + if (index >= getPhase(0).getNumberOfComponents()) { + logger.error("componentIndex higher than number of components in system"); + return; + } + double k = 1.0; - if (index != -1) { - addComponent(index, addSystem.getPhase(0).getComponent(i).getNumberOfmoles()); + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + if (phaseNumber == i) { + k = 1.0; } else { - /* - * if(addSystem.getPhase(0).getComponent(i).isIsTBPfraction()) { - * addTBPfraction(addSystem.getPhase(0).getComponent(i).getComponentName(), - * addSystem.getPhase(0).getComponent(i).getNumberOfmoles(), - * addSystem.getPhase(0).getComponent(i).getMolarMass(), - * addSystem.getPhase(0).getComponent(i).getNormalLiquidDensity()); - * changeComponentName(addSystem.getPhase(0).getComponent(i).getComponentName()+ "_PC", - * addSystem.getPhase(0).getComponent(i).getComponentName().replaceFirst("_PC", "")); } - * addComponent(addSystem.getPhase(0).getComponent(i).getComponentName(), - * addSystem.getPhase(0).getComponent(i).getNumberOfmoles()); - */ - addComponent(addSystem.getComponent(i)); + k = 0.0; } + phaseArray[phaseIndex[i]].addMolesChemReac(index, moles * k, moles); } - if (addedNewComponent) { - createDatabase(true); - setMixingRule(getMixingRule()); - init(0); - } - return this; + + setTotalNumberOfMoles(getTotalNumberOfMoles() + moles); } /** {@inheritDoc} */ @Override - public void addPhase() { - /* - * if (maxNumberOfPhases < 6 && !hydrateCheck) { ArrayList phaseList = new ArrayList(0); for - * (int i = 0; i < numberOfPhases; i++) { phaseList.add(phaseArray[i]); } // add the new phase - * phaseList.add(phaseArray[0].clone()); beta[phaseList.size() - 1] = 1.0e-8; // beta[1] -= - * beta[1]/1.0e5; - * - * PhaseInterface[] phaseArray2 = new PhaseInterface[numberOfPhases + 1]; - * - * for (int i = 0; i < numberOfPhases + 1; i++) { phaseArray2[i] = (PhaseInterface) - * phaseList.get(i); } - * - * phaseArray = phaseArray2; - * - * System.out.println("number of phases " + numberOfPhases); if (maxNumberOfPhases < - * numberOfPhases) { maxNumberOfPhases = numberOfPhases; } } - */ - numberOfPhases++; - } + public void addComponent(String componentName, double moles) { + componentName = ComponentInterface.getComponentNameFromAlias(componentName); - /** - *

- * addSolidPhase. - *

- */ - public void addSolidPhase() { - if (!multiPhaseCheck) { - setMultiPhaseCheck(true); + int index = 0; + + boolean addForFirstTime = true; + for (int p = 0; p < componentNames.size(); p++) { + if (componentNames.get(p).equals(componentName)) { + addForFirstTime = false; + index = p; + break; + } } - phaseArray[3] = new PhasePureComponentSolid(); - phaseArray[3].setTemperature(phaseArray[0].getTemperature()); - phaseArray[3].setPressure(phaseArray[0].getPressure()); - for (int i = 0; i < phaseArray[0].getNumberOfComponents(); i++) { - if (getPhase(0).getComponent(i).isIsTBPfraction()) { - phaseArray[3].addcomponent("default", getPhase(0).getComponent(i).getNumberOfmoles(), - getPhase(0).getComponent(i).getNumberOfmoles(), i); - phaseArray[3].getComponent(i).setComponentName(getPhase(0).getComponent(i).getName()); - phaseArray[3].getComponent(i).setIsPlusFraction(true); - } else { - phaseArray[3].addcomponent(getPhase(0).getComponent(i).getName(), - getPhase(0).getComponent(i).getNumberOfmoles(), - getPhase(0).getComponent(i).getNumberOfmoles(), i); + + if (addForFirstTime) { + if (!neqsim.util.database.NeqSimDataBase.hasComponent(componentName)) { + throw new RuntimeException( + new neqsim.util.exception.InvalidInputException(this, "addComponent", "componentName", + "with value " + componentName + " not found in database.")); + } + if (moles < 0.0) { + String msg = "is negative input for component: " + componentName; + throw new RuntimeException( + new neqsim.util.exception.InvalidInputException(this, "addComponent", "moles", msg)); + } + // System.out.println("adding " + componentName); + componentNames.add(componentName); + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + getPhase(i).addComponent(componentName, moles, moles, numberOfComponents); + getPhase(i).setAttractiveTerm(attractiveTermNumber); + } + numberOfComponents++; + } else { + for (PhaseInterface tmpPhase : phaseArray) { + if (tmpPhase != null + && (tmpPhase.getComponent(componentName).getNumberOfMolesInPhase() + moles) < 0.0) { + init(0); + break; + } + } + + // System.out.println("adding chem reac " + componentName); + for (PhaseInterface tmpPhase : phaseArray) { + // TODO: adding moles to all phases, not just the active ones. + if (tmpPhase != null) { + tmpPhase.addMolesChemReac(index, moles, moles); + } } } - ((PhaseSolid) phaseArray[3]).setSolidRefFluidPhase(phaseArray[0]); + setTotalNumberOfMoles(getTotalNumberOfMoles() + moles); + } - if (getMaxNumberOfPhases() < 4) { - setMaxNumberOfPhases(4); + /** {@inheritDoc} */ + @Override + public void addComponent(String componentName, double moles, double TC, double PC, double acs) { + componentName = ComponentInterface.getComponentNameFromAlias(componentName); + + String comNam = componentName; + if (getPhase(0).hasComponent(componentName)) { + addComponent(componentName, moles); + } else { + addComponent("default", moles); + comNam = "default"; + // componentNames.set(componentNames.indexOf("default"), componentName); + } + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + getPhase(i).getComponent(comNam).setComponentName(componentName); + getPhase(i).getComponent(componentName).setTC(TC); + getPhase(i).getComponent(componentName).setPC(PC); + getPhase(i).getComponent(componentName).setAcentricFactor(acs); + } + if (comNam.equals("default")) { + componentNames.remove("default"); + componentNames.add(componentName); } } - /** - *

- * addHydratePhase2. - *

- */ - public void addHydratePhase2() { - if (!multiPhaseCheck) { - setMultiPhaseCheck(true); + /** {@inheritDoc} */ + @Override + public void addComponent(String componentName, double moles, int phaseNumber) { + componentName = ComponentInterface.getComponentNameFromAlias(componentName); + + if (!neqsim.util.database.NeqSimDataBase.hasComponent(componentName)) { + throw new RuntimeException("No component with name: " + componentName + " in database"); } - phaseArray[3] = new PhaseHydrate(); - phaseArray[3].setTemperature(phaseArray[0].getTemperature()); - phaseArray[3].setPressure(phaseArray[0].getPressure()); - for (int i = 0; i < phaseArray[0].getNumberOfComponents(); i++) { - if (getPhase(0).getComponent(i).isIsTBPfraction()) { - phaseArray[3].addcomponent("default", getPhase(0).getComponent(i).getNumberOfmoles(), - getPhase(0).getComponent(i).getNumberOfmoles(), i); - phaseArray[3].getComponent("default") - .setComponentName(getPhase(0).getComponent(i).getName()); + + for (int p = 0; p < componentNames.size(); p++) { + if (componentNames.get(p).equals(componentName)) { + addComponent(p, moles, phaseNumber); + return; + } + } + + // Add new component + if (moles < 0.0) { + String msg = "Negative input number of moles."; + neqsim.util.exception.InvalidInputException ex = + new neqsim.util.exception.InvalidInputException(this, "addComponent", "moles", msg); + throw new RuntimeException(ex); + } + + componentNames.add(componentName); + double k = 1.0; + setTotalNumberOfMoles(getTotalNumberOfMoles() + moles); + + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + if (phaseNumber == i) { + k = 1.0; } else { - phaseArray[3].addcomponent(getPhase(0).getComponent(i).getName(), - getPhase(0).getComponent(i).getNumberOfmoles(), - getPhase(0).getComponent(i).getNumberOfmoles(), i); + k = 1.0e-30; } + getPhase(i).addComponent(componentName, moles, moles * k, numberOfComponents); + getPhase(i).setAttractiveTerm(attractiveTermNumber); } - setNumberOfPhases(4); + numberOfComponents++; } /** {@inheritDoc} */ @Override - public void addSolidComplexPhase(String type) { - if (!multiPhaseCheck) { - setMultiPhaseCheck(true); + public void addComponent(String componentName, double value, String unitName) { + componentName = ComponentInterface.getComponentNameFromAlias(componentName); + + if (!neqsim.util.database.NeqSimDataBase.hasComponent(componentName)) { + throw new RuntimeException("No component with name: " + componentName + " in database"); } - addHydratePhase(); - if (type.equals("wax")) { - phaseArray[5] = new PhaseWax(); - } else { - phaseArray[5] = new PhaseSolidComplex(); + + double molarmass = 0.0; + double stddens = 0.0; + double boilp = 0.0; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet(("SELECT * FROM comp WHERE name='" + componentName + "'"))) { + dataSet.next(); + molarmass = Double.parseDouble(dataSet.getString("molarmass")) / 1000.0; + stddens = Double.parseDouble(dataSet.getString("stddens")); + boilp = Double.parseDouble(dataSet.getString("normboil")); + } catch (Exception ex) { + // todo: mole amount may be not set. should not be caught? + logger.error("failed ", ex); + } + neqsim.util.unit.Unit unit = + new neqsim.util.unit.RateUnit(value, unitName, molarmass, stddens, boilp); + double SIval = unit.getSIvalue(); + // System.out.println("number of moles " + SIval); + this.addComponent(componentName, SIval); + } + + /** {@inheritDoc} */ + @Override + public void addComponent(String componentName, double value, String name, int phase) { + componentName = ComponentInterface.getComponentNameFromAlias(componentName); + + if (!neqsim.util.database.NeqSimDataBase.hasComponent(componentName)) { + throw new RuntimeException("No component with name: " + componentName + " in database"); } - phaseArray[5].setTemperature(phaseArray[0].getTemperature()); - phaseArray[5].setPressure(phaseArray[0].getPressure()); - phaseArray[5].setPhaseTypeName("wax"); - for (int i = 0; i < phaseArray[0].getNumberOfComponents(); i++) { - if (getPhase(0).getComponent(i).isIsTBPfraction()) { - phaseArray[5].addcomponent(getPhase(0).getComponent(i).getName(), - getPhase(0).getComponent(i).getNumberOfmoles(), - getPhase(0).getComponent(i).getNumberOfmoles(), i); - phaseArray[5].getComponent(i).setIsPlusFraction(true); + double molarmass = 0.0; + double stddens = 0.0; + double boilp = 0.0; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet(("SELECT * FROM comp WHERE name='" + componentName + "'"))) { + dataSet.next(); + molarmass = Double.parseDouble(dataSet.getString("molarmass")) / 1000.0; + stddens = Double.parseDouble(dataSet.getString("stddens")); + boilp = Double.parseDouble(dataSet.getString("normboil")); + } catch (Exception ex) { + logger.error("failed ", ex); + throw new RuntimeException(ex); + } + neqsim.util.unit.Unit unit = + new neqsim.util.unit.RateUnit(value, name, molarmass, stddens, boilp); + double SIval = unit.getSIvalue(); + // System.out.println("number of moles " + SIval); + this.addComponent(componentName, SIval, phase); + } + + /** {@inheritDoc} */ + @Override + public SystemInterface addFluid(SystemInterface addSystem) { + boolean addedNewComponent = false; + int index = -1; + for (int i = 0; i < addSystem.getPhase(0).getNumberOfComponents(); i++) { + if (!getPhase(0).hasComponent(addSystem.getPhase(0).getComponent(i).getComponentName())) { + index = -1; + addedNewComponent = true; } else { - phaseArray[5].addcomponent(getPhase(0).getComponent(i).getName(), - getPhase(0).getComponent(i).getNumberOfmoles(), - getPhase(0).getComponent(i).getNumberOfmoles(), i); + index = getPhase(0).getComponent(addSystem.getPhase(0).getComponent(i).getComponentName()) + .getComponentNumber(); + } + + if (index != -1) { + addComponent(index, addSystem.getPhase(0).getComponent(i).getNumberOfmoles()); + } else if (addSystem.getPhase(0).getComponent(i).isIsTBPfraction()) { + addTBPfraction( + addSystem.getPhase(0).getComponent(i).getComponentName().replaceFirst("_PC", ""), + addSystem.getPhase(0).getComponent(i).getNumberOfmoles(), + addSystem.getPhase(0).getComponent(i).getMolarMass(), + addSystem.getPhase(0).getComponent(i).getNormalLiquidDensity()); + } else { + if (addSystem.getPhase(0).getComponent(i).isIsTBPfraction()) { + addTBPfraction( + addSystem.getPhase(0).getComponent(i).getComponentName().replaceFirst("_PC", ""), + addSystem.getPhase(0).getComponent(i).getNumberOfmoles(), + addSystem.getPhase(0).getComponent(i).getMolarMass(), + addSystem.getPhase(0).getComponent(i).getNormalLiquidDensity()); + } else { + addComponent(addSystem.getComponent(i)); + } } } - ((PhaseSolid) phaseArray[5]).setSolidRefFluidPhase(phaseArray[0]); - setNumberOfPhases(6); + if (addedNewComponent) { + createDatabase(true); + setMixingRule(getMixingRule()); + init(0); + } + return this; + } + + /** {@inheritDoc} */ + @Override + public SystemInterface addFluid(SystemInterface addSystem, int phase) { + for (int i = 0; i < addSystem.getPhase(0).getNumberOfComponents(); i++) { + addComponent(addSystem.getPhase(0).getComponent(i).getComponentName(), + addSystem.getPhase(0).getComponent(i).getNumberOfmoles(), phase); + } + return this; + } + + /** {@inheritDoc} */ + @Override + public void addGasToLiquid(double fraction) { + for (int i = 0; i < getPhase(0).getNumberOfComponents(); i++) { + double change = getPhase(0).getComponent(i).getNumberOfMolesInPhase() * fraction; + addComponent(i, -change, 0); + addComponent(i, change, 1); + } } /** @@ -418,15 +536,15 @@ public void addHydratePhase() { phaseArray[3] = new PhasePureComponentSolid(); phaseArray[3].setTemperature(phaseArray[0].getTemperature()); phaseArray[3].setPressure(phaseArray[0].getPressure()); - phaseArray[3].setPhaseTypeName("solid"); + phaseArray[3].setType(PhaseType.SOLID); for (int i = 0; i < phaseArray[0].getNumberOfComponents(); i++) { if (getPhase(0).getComponent(i).isIsTBPfraction()) { - phaseArray[3].addcomponent("default", getPhase(0).getComponent(i).getNumberOfmoles(), + phaseArray[3].addComponent("default", getPhase(0).getComponent(i).getNumberOfmoles(), getPhase(0).getComponent(i).getNumberOfmoles(), i); phaseArray[3].getComponent(i).setComponentName(getPhase(0).getComponent(i).getName()); phaseArray[3].getComponent(i).setIsTBPfraction(true); } else { - phaseArray[3].addcomponent(getPhase(0).getComponent(i).getName(), + phaseArray[3].addComponent(getPhase(0).getComponent(i).getName(), getPhase(0).getComponent(i).getNumberOfmoles(), getPhase(0).getComponent(i).getNumberOfmoles(), i); } @@ -437,15 +555,15 @@ public void addHydratePhase() { phaseArray[4] = new PhaseHydrate(getModelName()); phaseArray[4].setTemperature(phaseArray[0].getTemperature()); phaseArray[4].setPressure(phaseArray[0].getPressure()); - phaseArray[4].setPhaseTypeName("hydrate"); + phaseArray[4].setType(PhaseType.HYDRATE); for (int i = 0; i < phaseArray[0].getNumberOfComponents(); i++) { if (getPhase(0).getComponent(i).isIsTBPfraction()) { - phaseArray[4].addcomponent("default", getPhase(0).getComponent(i).getNumberOfmoles(), + phaseArray[4].addComponent("default", getPhase(0).getComponent(i).getNumberOfmoles(), getPhase(0).getComponent(i).getNumberOfmoles(), i); phaseArray[4].getComponent(i).setComponentName(getPhase(0).getComponent(i).getName()); phaseArray[4].getComponent(i).setIsTBPfraction(true); } else { - phaseArray[4].addcomponent(getPhase(0).getComponent(i).getName(), + phaseArray[4].addComponent(getPhase(0).getComponent(i).getName(), getPhase(0).getComponent(i).getNumberOfmoles(), getPhase(0).getComponent(i).getNumberOfmoles(), i); } @@ -455,311 +573,265 @@ public void addHydratePhase() { setNumberOfPhases(5); } - /** {@inheritDoc} */ - @Override - public void setAllComponentsInPhase(int phase) { - for (int k = 0; k < numberOfPhases; k++) { - for (int i = 0; i < numberOfComponents; i++) { - if (phase != k) { - // System.out.println("moles of comp: " + i + " " + - // phaseArray[k].getComponents()[i].getNumberOfMolesInPhase()); - phaseArray[phase].addMoles(i, - (phaseArray[k].getComponents()[i].getNumberOfMolesInPhase() * (1.0 - 0.01))); - phaseArray[k].addMoles(i, - -(phaseArray[k].getComponents()[i].getNumberOfMolesInPhase() * (1.0 - 0.01))); - phaseArray[k].getComponents()[i] - .setx(phaseArray[k].getComponents()[i].getNumberOfMolesInPhase() - / phaseArray[k].getNumberOfMolesInPhase()); - // System.out.println("moles of comp after: " + i + " " + - // phaseArray[k].getComponents()[i].getNumberOfMolesInPhase()); - } - } - } - initBeta(); - init(1); + /** + *

+ * addHydratePhase2. + *

+ */ + public void addHydratePhase2() { + if (!multiPhaseCheck) { + setMultiPhaseCheck(true); + } + phaseArray[3] = new PhaseHydrate(); + phaseArray[3].setTemperature(phaseArray[0].getTemperature()); + phaseArray[3].setPressure(phaseArray[0].getPressure()); + for (int i = 0; i < phaseArray[0].getNumberOfComponents(); i++) { + if (getPhase(0).getComponent(i).isIsTBPfraction()) { + phaseArray[3].addComponent("default", getPhase(0).getComponent(i).getNumberOfmoles(), + getPhase(0).getComponent(i).getNumberOfmoles(), i); + phaseArray[3].getComponent("default") + .setComponentName(getPhase(0).getComponent(i).getName()); + } else { + phaseArray[3].addComponent(getPhase(0).getComponent(i).getName(), + getPhase(0).getComponent(i).getNumberOfmoles(), + getPhase(0).getComponent(i).getNumberOfmoles(), i); + } + } + setNumberOfPhases(4); } /** {@inheritDoc} */ @Override - public void removePhase(int specPhase) { - setTotalNumberOfMoles(getTotalNumberOfMoles() - getPhase(specPhase).getNumberOfMolesInPhase()); - - for (int j = 0; j < numberOfPhases; j++) { - for (int i = 0; i < numberOfComponents; i++) { - getPhase(j).getComponents()[i] - .setNumberOfmoles(getPhase(j).getComponents()[i].getNumberOfmoles() - - getPhase(specPhase).getComponents()[i].getNumberOfMolesInPhase()); - } - } - - ArrayList phaseList = new ArrayList(0); - for (int i = 0; i < numberOfPhases; i++) { - if (specPhase != i) { - phaseList.add(phaseArray[phaseIndex[i]]); - } + public void addLiquidToGas(double fraction) { + for (int i = 0; i < getPhase(0).getNumberOfComponents(); i++) { + double change = getPhase(1).getComponent(i).getNumberOfMolesInPhase() * fraction; + addComponent(i, change, 0); + addComponent(i, -change, 1); } + } - // phaseArray = new PhaseInterface[numberOfPhases - 1]; - for (int i = 0; i < numberOfPhases - 1; i++) { - // phaseArray[i] = (PhaseInterface) phaseList.get(i); - if (i >= specPhase) { - phaseIndex[i] = phaseIndex[i + 1]; - phaseType[i] = phaseType[i + 1]; - } - } - numberOfPhases--; + /** {@inheritDoc} */ + @Override + public void addOilFractions(String[] charNames, double[] charFlowrate, double[] molarMass, + double[] relativedensity, boolean lastIsPlusFraction) { + addOilFractions(charNames, charFlowrate, molarMass, relativedensity, lastIsPlusFraction, true, + 12); } /** {@inheritDoc} */ @Override - public void removePhaseKeepTotalComposition(int specPhase) { - ArrayList phaseList = new ArrayList(0); - for (int i = 0; i < numberOfPhases; i++) { - if (specPhase != i) { - phaseList.add(phaseArray[phaseIndex[i]]); - } + public void addOilFractions(String[] charNames, double[] charFlowrate, double[] molarMass, + double[] relativedensity, boolean lastIsPlusFraction, boolean lumpComponents, + int numberOfPseudoComponents) { + if (charNames.length != charFlowrate.length) { + logger.error("component names and mole fractions need to be same length..."); } - // phaseArray = new PhaseInterface[numberOfPhases - 1]; - for (int i = 0; i < numberOfPhases - 1; i++) { - // phaseArray[i] = (PhaseInterface) phaseList.get(i); - if (i >= specPhase) { - phaseIndex[i] = phaseIndex[i + 1]; - phaseType[i] = phaseType[i + 1]; + for (int i = 0; i < charNames.length - 1; i++) { + addTBPfraction(charNames[i], charFlowrate[i], molarMass[i], relativedensity[i]); + } + int i = charNames.length - 1; + if (lastIsPlusFraction) { + addPlusFraction(charNames[i], charFlowrate[i], molarMass[i], relativedensity[i]); + } else { + addTBPfraction(charNames[i], charFlowrate[i], molarMass[i], relativedensity[i]); + } + createDatabase(true); + if (lastIsPlusFraction) { + getCharacterization().getLumpingModel().setNumberOfPseudoComponents(numberOfPseudoComponents); + if (lumpComponents) { + getCharacterization().setLumpingModel("PVTlumpingModel"); + } else { + getCharacterization().setLumpingModel("no lumping"); } + getCharacterization().characterisePlusFraction(); } - numberOfPhases--; + setMixingRule(getMixingRule()); + setMultiPhaseCheck(true); + init(0); } /** {@inheritDoc} */ @Override - public void replacePhase(int repPhase, PhaseInterface newPhase) { - for (int i = 0; i < 2; i++) { - phaseArray[i] = newPhase.clone(); - } - setTotalNumberOfMoles(newPhase.getNumberOfMolesInPhase()); + public void addPhase() { + /* + * if (maxNumberOfPhases < 6 && !hydrateCheck) { ArrayList phaseList = new ArrayList(0); for + * (int i = 0; i < numberOfPhases; i++) { phaseList.add(phaseArray[i]); } // add the new phase + * phaseList.add(phaseArray[0].clone()); beta[phaseList.size() - 1] = 1.0e-8; // beta[1] -= + * beta[1]/1.0e5; + * + * PhaseInterface[] phaseArray2 = new PhaseInterface[numberOfPhases + 1]; + * + * for (int i = 0; i < numberOfPhases + 1; i++) { phaseArray2[i] = (PhaseInterface) + * phaseList.get(i); } + * + * phaseArray = phaseArray2; + * + * System.out.println("number of phases " + numberOfPhases); if (maxNumberOfPhases < + * numberOfPhases) { maxNumberOfPhases = numberOfPhases; } } + */ + numberOfPhases++; } /** {@inheritDoc} */ @Override - public SystemInterface phaseToSystem(PhaseInterface newPhase) { - for (int i = 0; i < newPhase.getNumberOfComponents(); i++) { - newPhase.getComponents()[i] - .setNumberOfmoles(newPhase.getComponents()[i].getNumberOfMolesInPhase()); + public void addPhaseFractionToPhase(double fraction, String specification, String fromPhaseName, + String toPhaseName) { + if (!(hasPhaseType(fromPhaseName) && hasPhaseType(toPhaseName) || fraction < 1e-30)) { + return; } - - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - phaseArray[i] = newPhase.clone(); + int phaseNumbFrom = getPhaseNumberOfPhase(fromPhaseName); + int phaseNumbTo = getPhaseNumberOfPhase(toPhaseName); + for (int i = 0; i < getPhase(0).getNumberOfComponents(); i++) { + double change = getPhase(phaseNumbFrom).getComponent(i).getNumberOfMolesInPhase() * fraction; + addComponent(i, change, phaseNumbTo); + addComponent(i, -change, phaseNumbFrom); } - - setTotalNumberOfMoles(newPhase.getNumberOfMolesInPhase()); - this.init(0); - setNumberOfPhases(1); - setPhaseType(0, newPhase.getPhaseType()); - initBeta(); init_x_y(); - this.init(1); - return this; } /** {@inheritDoc} */ @Override - public SystemInterface getEmptySystemClone() { - int phaseNumber = 0; + public void addPhaseFractionToPhase(double fraction, String specification, String specifiedStream, + String fromPhaseName, String toPhaseName) { + double moleFraction = fraction; + if (!hasPhaseType(fromPhaseName) || !hasPhaseType(toPhaseName) || fraction < 1e-30) { + return; + } + int phaseNumbFrom = getPhaseNumberOfPhase(fromPhaseName); + int phaseNumbTo = getPhaseNumberOfPhase(toPhaseName); - SystemInterface newSystem = this.clone(); + if (specifiedStream.equals("feed")) { + moleFraction = fraction; + } else if (specifiedStream.equals("product")) { + // double specFractionFrom = getPhaseFraction(specification, fromPhaseName); + double specFractionTo = getPhaseFraction(specification, toPhaseName); - for (int j = 0; j < getMaxNumberOfPhases(); j++) { - phaseNumber = j; - for (int i = 0; i < getPhase(j).getNumberOfComponents(); i++) { - newSystem.getPhase(j).getComponents()[i].setNumberOfmoles( - getPhase(phaseNumber).getComponents()[i].getNumberOfMolesInPhase() / 1.0e30); - newSystem.getPhase(j).getComponents()[i].setNumberOfMolesInPhase( - getPhase(phaseNumber).getComponents()[i].getNumberOfMolesInPhase() / 1.0e30); + double moleFractionFrom = getMoleFraction(phaseNumbFrom); + double moleFractionTo = getMoleFraction(phaseNumbTo); + + if (specification.equals("volume") || specification.equals("mass")) { + double test = fraction * specFractionTo / (fraction * specFractionTo + specFractionTo); + moleFraction = test * moleFractionTo / specFractionTo; + } else if (specification.equals("mole")) { + double test = fraction * moleFractionTo / (fraction * moleFractionTo + moleFractionTo); + moleFraction = test; } - } - newSystem.setTotalNumberOfMoles(getPhase(phaseNumber).getNumberOfMolesInPhase() / 1.0e30); + moleFraction = moleFraction * moleFractionTo / moleFractionFrom; + if (moleFraction > moleFractionFrom) { + logger.debug("error in addPhaseFractionToPhase()...to low fraction in from phase"); + moleFraction = moleFractionFrom; + } + } - newSystem.init(0); - // newSystem.init(1); - return newSystem; + for (int i = 0; i < getPhase(0).getNumberOfComponents(); i++) { + double change = 0.0; + change = getPhase(phaseNumbFrom).getComponent(i).getNumberOfMolesInPhase() * moleFraction; + addComponent(i, change, phaseNumbTo); + addComponent(i, -change, phaseNumbFrom); + } + init_x_y(); } /** {@inheritDoc} */ @Override - public SystemInterface phaseToSystem(String phaseName) { - try { - for (int j = 0; j < getMaxNumberOfPhases(); j++) { - if (this.getPhase(j).getPhaseTypeName().equals(phaseName)) { - return phaseToSystem(j); - } - } - } catch (Exception e) { - logger.error("error....." + fluidName + " has no phase .... " + phaseName - + " ..... returning phase number 0"); + public void addPlusFraction(String componentName, double numberOfMoles, double molarMass, + double density) { + addTBPfraction(componentName, numberOfMoles, molarMass, density); + componentName = (componentName + "_" + "PC"); // getFluidName()); + for (int i = 0; i < numberOfPhases; i++) { + // System.out.println("comp " + componentName); + getPhase(i).getComponent(componentName).setIsPlusFraction(true); + getPhase(i).getComponent(componentName).setCriticalViscosity( + 7.94830 * Math.sqrt(1e3 * getPhase(i).getComponent(componentName).getMolarMass()) + * Math.pow(getPhase(i).getComponent(componentName).getPC(), 2.0 / 3.0) + / Math.pow(getPhase(i).getComponent(componentName).getTC(), 1.0 / 6.0) * 1e-7); } - return phaseToSystem(0); } /** {@inheritDoc} */ @Override - public SystemInterface phaseToSystem(int phaseNumber) { - SystemInterface newSystem = this.clone(); + public void addSalt(String componentName, double value) { + double val1 = 1e-20; + double val2 = 1e-20; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = database + .getResultSet("SELECT * FROM compsalt WHERE SaltName='" + componentName + "'")) { + dataSet.next(); + String name1 = dataSet.getString("ion1").trim(); + val1 = Double.parseDouble(dataSet.getString("stoc1")) * value; + this.addComponent(name1, val1); - for (int j = 0; j < getMaxNumberOfPhases(); j++) { - for (int i = 0; i < getPhase(j).getNumberOfComponents(); i++) { - newSystem.getPhase(j).getComponent(i) - .setNumberOfmoles(getPhase(phaseNumber).getComponent(i).getNumberOfMolesInPhase()); - newSystem.getPhase(j).getComponent(i).setNumberOfMolesInPhase( - getPhase(phaseNumber).getComponent(i).getNumberOfMolesInPhase()); - } + String name2 = dataSet.getString("ion2").trim(); + val2 = Double.parseDouble(dataSet.getString("stoc2")) * value; + this.addComponent(name2, val2); + logger.info("ok adding salts. Ions: " + name1 + ", " + name2); + } catch (Exception ex) { + logger.error("failed ", ex); } - - newSystem.setTotalNumberOfMoles(getPhase(phaseNumber).getNumberOfMolesInPhase()); - - newSystem.init(0); - newSystem.setNumberOfPhases(1); - newSystem.setPhaseType(0, getPhase(phaseNumber).getPhaseType()); // phaseType[phaseNumber]); - newSystem.init(1); - return newSystem; } /** {@inheritDoc} */ @Override - public SystemInterface phaseToSystem(int phaseNumber1, int phaseNumber2) { - SystemInterface newSystem = this.clone(); + public void addSolidComplexPhase(String type) { + if (!multiPhaseCheck) { + setMultiPhaseCheck(true); + } + addHydratePhase(); + if (type.equalsIgnoreCase("wax")) { + phaseArray[5] = new PhaseWax(); + } else { + phaseArray[5] = new PhaseSolidComplex(); + } - for (int j = 0; j < getMaxNumberOfPhases(); j++) { - for (int i = 0; i < getPhase(j).getNumberOfComponents(); i++) { - newSystem.getPhases()[j].getComponents()[i] - .setNumberOfmoles(getPhase(phaseNumber1).getComponents()[i].getNumberOfMolesInPhase() - + getPhase(phaseNumber2).getComponents()[i].getNumberOfMolesInPhase()); - newSystem.getPhases()[j].getComponents()[i].setNumberOfMolesInPhase( - getPhase(phaseNumber1).getComponents()[i].getNumberOfMolesInPhase() - + getPhase(phaseNumber2).getComponents()[i].getNumberOfMolesInPhase()); + phaseArray[5].setTemperature(phaseArray[0].getTemperature()); + phaseArray[5].setPressure(phaseArray[0].getPressure()); + phaseArray[5].setType(PhaseType.WAX); + for (int i = 0; i < phaseArray[0].getNumberOfComponents(); i++) { + if (getPhase(0).getComponent(i).isIsTBPfraction()) { + phaseArray[5].addComponent(getPhase(0).getComponent(i).getName(), + getPhase(0).getComponent(i).getNumberOfmoles(), + getPhase(0).getComponent(i).getNumberOfmoles(), i); + phaseArray[5].getComponent(i).setIsPlusFraction(true); + } else { + phaseArray[5].addComponent(getPhase(0).getComponent(i).getName(), + getPhase(0).getComponent(i).getNumberOfmoles(), + getPhase(0).getComponent(i).getNumberOfmoles(), i); } } + ((PhaseSolid) phaseArray[5]).setSolidRefFluidPhase(phaseArray[0]); + setNumberOfPhases(6); + } - newSystem.setTotalNumberOfMoles(getPhase(phaseNumber1).getNumberOfMolesInPhase() - + getPhase(phaseNumber2).getNumberOfMolesInPhase()); - - newSystem.init(0); - - newSystem.setNumberOfPhases(1); - // newSystem.setPhaseType(0, - // getPhase(phaseNumber1).getPhaseType());//phaseType[phaseNumber]); - newSystem.init(1); - return newSystem; - } - - /** {@inheritDoc} */ - @Override - public void setTotalFlowRate(double flowRate, String flowunit) { - init(0); - init(1); - double density = 0.0; - if (flowunit.equals("Am3/hr") || flowunit.equals("Am3/min") || flowunit.equals("Am3/sec")) { - initPhysicalProperties("density"); + /** + *

+ * addSolidPhase. + *

+ */ + public void addSolidPhase() { + if (!multiPhaseCheck) { + setMultiPhaseCheck(true); } - density = getPhase(0).getDensity("kg/m3"); - neqsim.util.unit.Unit unit = - new neqsim.util.unit.RateUnit(flowRate, flowunit, getMolarMass(), density, 0); - double SIval = unit.getSIvalue(); - double totalNumberOfMolesLocal = totalNumberOfMoles; - for (int i = 0; i < numberOfComponents; i++) { - if (flowRate < 1e-100) { - setEmptyFluid(); - } else if (totalNumberOfMolesLocal > 1e-100) { - addComponent(i, - SIval / totalNumberOfMolesLocal * getPhase(0).getComponent(i).getNumberOfmoles() - - getPhase(0).getComponent(i).getNumberOfmoles()); + phaseArray[3] = new PhasePureComponentSolid(); + phaseArray[3].setTemperature(phaseArray[0].getTemperature()); + phaseArray[3].setPressure(phaseArray[0].getPressure()); + for (int i = 0; i < phaseArray[0].getNumberOfComponents(); i++) { + if (getPhase(0).getComponent(i).isIsTBPfraction()) { + phaseArray[3].addComponent("default", getPhase(0).getComponent(i).getNumberOfmoles(), + getPhase(0).getComponent(i).getNumberOfmoles(), i); + phaseArray[3].getComponent(i).setComponentName(getPhase(0).getComponent(i).getName()); + phaseArray[3].getComponent(i).setIsPlusFraction(true); } else { - addComponent(i, SIval); - } - } - } - - /** {@inheritDoc} */ - @Override - public double getFlowRate(String flowunit) { - if (flowunit.equals("kg/sec")) { - return totalNumberOfMoles * getMolarMass(); - } else if (flowunit.equals("kg/min")) { - return totalNumberOfMoles * getMolarMass() * 60.0; - } else if (flowunit.equals("Sm3/sec")) { - return totalNumberOfMoles * ThermodynamicConstantsInterface.R - * ThermodynamicConstantsInterface.standardStateTemperature / 101325.0; - } else if (flowunit.equals("Sm3/hr")) { - return totalNumberOfMoles * 3600.0 * ThermodynamicConstantsInterface.R - * ThermodynamicConstantsInterface.standardStateTemperature / 101325.0; - } else if (flowunit.equals("Sm3/day")) { - return totalNumberOfMoles * 3600.0 * 24.0 * ThermodynamicConstantsInterface.R - * ThermodynamicConstantsInterface.standardStateTemperature / 101325.0; - } else if (flowunit.equals("MSm3/day")) { - return totalNumberOfMoles * 3600.0 * 24.0 * ThermodynamicConstantsInterface.R - * ThermodynamicConstantsInterface.standardStateTemperature / 101325.0 / 1.0e6; - } else if (flowunit.equals("kg/hr")) { - return totalNumberOfMoles * getMolarMass() * 3600.0; - } else if (flowunit.equals("kg/day")) { - return totalNumberOfMoles * getMolarMass() * 3600.0 * 24.0; - } else if (flowunit.equals("m3/hr")) { - // return getVolume() / 1.0e5 * 3600.0; - initPhysicalProperties("density"); - return totalNumberOfMoles * getMolarMass() * 3600.0 / getDensity("kg/m3"); - } else if (flowunit.equals("m3/min")) { - initPhysicalProperties("density"); - return totalNumberOfMoles * getMolarMass() * 60.0 / getDensity("kg/m3"); - // return getVolume() / 1.0e5 * 60.0; - } else if (flowunit.equals("m3/sec")) { - initPhysicalProperties("density"); - return totalNumberOfMoles * getMolarMass() / getDensity("kg/m3"); - // return getVolume() / 1.0e5; - } else if (flowunit.equals("mole/sec")) { - return totalNumberOfMoles; - } else if (flowunit.equals("mole/min")) { - return totalNumberOfMoles * 60.0; - } else if (flowunit.equals("mole/hr")) { - return totalNumberOfMoles * 3600.0; - } else { - throw new RuntimeException("failed.. unit: " + flowunit + " not supported"); - } - } - - /** {@inheritDoc} */ - @Override - public void changeComponentName(String name, String newName) { - for (int i = 0; i < numberOfComponents; i++) { - if (componentNames.get(i).equals(name)) { - componentNames.set(i, newName); + phaseArray[3].addComponent(getPhase(0).getComponent(i).getName(), + getPhase(0).getComponent(i).getNumberOfmoles(), + getPhase(0).getComponent(i).getNumberOfmoles(), i); } } + ((PhaseSolid) phaseArray[3]).setSolidRefFluidPhase(phaseArray[0]); - for (int i = 0; i < maxNumberOfPhases; i++) { - getPhase(i).getComponent(name).setComponentName(newName); - } - } - - /** {@inheritDoc} */ - @Override - public void addSalt(String componentName, double value) { - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = - database.getResultSet("SELECT * FROM compsalt WHERE SaltName='" + componentName + "'"); - double val1 = 1e-20; - double val2 = 1e-20; - try { - dataSet.next(); - String name1 = dataSet.getString("ion1").trim(); - val1 = Double.parseDouble(dataSet.getString("stoc1")) * value; - this.addComponent(name1, val1); - - String name2 = dataSet.getString("ion2").trim(); - val2 = Double.parseDouble(dataSet.getString("stoc2")) * value; - this.addComponent(name2, val2); - logger.info("ok adding salts. Ions: " + name1 + ", " + name2); - } catch (Exception e) { - logger.error("failed " + e.toString()); + if (getMaxNumberOfPhases() < 4) { + setMaxNumberOfPhases(4); } } @@ -768,14 +840,10 @@ public void addSalt(String componentName, double value) { public void addTBPfraction(String componentName, double numberOfMoles, double molarMass, double density) { if (density < 0.0) { - String msg = "Negative input density."; - logger.error(msg); throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, "addTBPfraction", "density", "is negative.")); } if (molarMass < 0.0) { - String msg = "Negative input molar mass."; - logger.error(msg); throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, "addTBPfraction", "molarMass", "is negative.")); } @@ -793,22 +861,24 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo try { refSystem = this.getClass().getDeclaredConstructor().newInstance(); refSystem.setTemperature(273.15 + 15.0); - refSystem.setPressure(1.01325); + refSystem.setPressure(ThermodynamicConstantsInterface.referencePressure); refSystem.addComponent("default", 1.0, 273.15, 50.0, 0.1); refSystem.init(0); refSystem.setNumberOfPhases(1); - refSystem.setPhaseType(0, "liquid"); + refSystem.setPhaseType(0, PhaseType.LIQUID); molarMass = 1000 * molarMass; TC = characterization.getTBPModel().calcTC(molarMass, density); PC = characterization.getTBPModel().calcPC(molarMass, density); - m = characterization.getTBPModel().calcm(molarMass, density); + if (characterization.getTBPModel().isCalcm()) { + m = characterization.getTBPModel().calcm(molarMass, density); + } acs = characterization.getTBPModel().calcAcentricFactor(molarMass, density); // TBPfractionCoefs[2][0]+TBPfractionCoefs[2][1]*molarMass+TBPfractionCoefs[2][2]*density+TBPfractionCoefs[2][3]*Math.pow(molarMass,2.0); TB = characterization.getTBPModel().calcTB(molarMass, density); // Math.pow((molarMass/5.805e-5*Math.pow(density,0.9371)), 1.0/2.3776); // acs = TBPfractionModel.calcAcentricFactor(molarMass, density); // System.out.println("acentric " + acs); - // 3.0/7.0*Math.log10(PC/1.01325)/(TC/TB-1.0)-1.0; + // 3.0/7.0*Math.log10(PC/ThermodynamicConstantsInterface.referencePressure)/(TC/TB-1.0)-1.0; molarMass /= 1000.0; for (int i = 0; i < refSystem.getNumberOfPhases(); i++) { @@ -826,7 +896,7 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo } refSystem.setTemperature(273.15 + 15.0); - refSystem.setPressure(1.01325); + refSystem.setPressure(ThermodynamicConstantsInterface.referencePressure); refSystem.init(1); // refSystem.display(); racketZ = characterization.getTBPModel().calcRacketZ(refSystem, molarMass * 1000.0, density); @@ -844,23 +914,23 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo // refSystem.getPhase(1).getComponent(0).setRacketZ(racketZ); // // refSystem.setTemperature(273.15+80.0); - // // refSystem.setPressure(1.01325); + // // refSystem.setPressure(ThermodynamicConstantsInterface.referencePressure); // // refSystem.init(1); // //refSystem.initPhysicalProperties(); - // // APIdens - refSystem.getPhase(1).getPhysicalProperties().getDensity();; + // // APIdens - refSystem.getPhase(1).getPhysicalProperties().getDensity(); // sammenligne med API-standard for tetthet - og sette Penloux dt - } catch (Exception e) { - logger.error("error", e); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - double critVol = characterization.getTBPModel().calcCriticalVolume(molarMass * 1000, density); // 0.2918-0.0928* - // acs)*8.314*TC/PC*10.0; + double critVol = characterization.getTBPModel().calcCriticalVolume(molarMass * 1000, density); + // 0.2918-0.0928*acs)*ThermodynamicConstantsInterface.R*TC/PC*10.0; addComponent(componentName, numberOfMoles, TC, PC, acs); double Kwatson = Math.pow(TB * 1.8, 1.0 / 3.0) / density; // System.out.println("watson " + Kwatson); double CF = Math.pow((12.8 - Kwatson) * (10.0 - Kwatson) / (10.0 * acs), 2.0); - double acsKeslerLee = acs;// characterization.getTBPModel().calcAcentricFactorKeslerLee(molarMass*1000.0, - // density); + double acsKeslerLee = acs; // characterization.getTBPModel().calcAcentricFactorKeslerLee(molarMass*1000.0, + // density); double cpa = (-0.33886 + 0.02827 * Kwatson - 0.26105 * CF + 0.59332 * acsKeslerLee * CF) * 4.18682 * molarMass * 1e3; double cpb = (-(0.9291 - 1.1543 * Kwatson + 0.0368 * Kwatson * Kwatson) * 1e-4 @@ -874,7 +944,7 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo getPhase(i).getComponent(componentName).setMolarMass(molarMass); getPhase(i).getComponent(componentName).setComponentType("TBPfraction"); getPhase(i).getComponent(componentName).setNormalLiquidDensity(density); - getPhase(i).getComponent(componentName).setNormalBoilingPoint(TB - 273.15); + getPhase(i).getComponent(componentName).setNormalBoilingPoint(TB); getPhase(i).getComponent(componentName) .setAcentricFactor(refSystem.getPhase(0).getComponent(0).getAcentricFactor()); getPhase(i).getComponent(componentName).setCriticalVolume(critVol); @@ -882,10 +952,11 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo getPhase(i).getComponent(componentName).setRacketZCPA(racketZ); getPhase(i).getComponent(componentName).setIsTBPfraction(true); getPhase(i).getComponent(componentName).setParachorParameter( - characterization.getTBPModel().calcParachorParameter(molarMass, density));// 59.3+2.34*molarMass*1000.0);//0.5003*thermo.ThermodynamicConstantsInterface.R*TC/PC*(0.25969-racketZ)); + characterization.getTBPModel().calcParachorParameter(molarMass, density)); // 59.3+2.34*molarMass*1000.0); + // 0.5003*thermo.ThermodynamicConstantsInterface.R*TC/PC*(0.25969-racketZ)); getPhase(i).getComponent(componentName).setCriticalViscosity( - characterization.getTBPModel().calcCriticalViscosity(molarMass * 1000.0, density));// 7.94830*Math.sqrt(1e3*molarMass)*Math.pow(PC,2.0/3.0)/Math.pow(TC, - // 1.0/6.0)*1e-7); + characterization.getTBPModel().calcCriticalViscosity(molarMass * 1000.0, density)); // 7.94830*Math.sqrt(1e3*molarMass)*Math.pow(PC,2.0/3.0)/Math.pow(TC, + // 1.0/6.0)*1e-7); getPhase(i).getComponent(componentName).setTriplePointTemperature( 374.5 + 0.02617 * getPhase(i).getComponent(componentName).getMolarMass() * 1000.0 - 20172.0 / (getPhase(i).getComponent(componentName).getMolarMass() * 1000.0)); @@ -912,15 +983,11 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo public void addTBPfraction(String componentName, double numberOfMoles, double molarMass, double density, double criticalTemperature, double criticalPressure, double acentricFactor) { if (density < 0.0 || molarMass < 0.0) { - String msg = "Negative input density."; - logger.error(msg); throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, "addTBPfraction", "density", "is negative.")); } if (density < 0.0 || molarMass < 0.0) { - String msg = "Negative input molar mass."; - logger.error(msg); throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, "addTBPfraction", "molarMass", "is negative.")); } @@ -933,22 +1000,25 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo double acs = 0.0; // double penelouxC = 0.0; double racketZ = 0.0; - componentName = (componentName.split("_PC")[0]) + "_PC";// + getFluidName()); + componentName = (componentName.split("_PC")[0]) + "_PC"; // + getFluidName()); try { refSystem = this.getClass().getDeclaredConstructor().newInstance(); refSystem.setTemperature(273.15 + 15.0); - refSystem.setPressure(1.01325); + refSystem.setPressure(ThermodynamicConstantsInterface.referencePressure); refSystem.addComponent("default", 1.0, 273.15, 50.0, 0.1); refSystem.init(0); refSystem.setNumberOfPhases(1); - refSystem.setPhaseType(0, "liquid"); + refSystem.setPhaseType(0, PhaseType.LIQUID); molarMass = 1000 * molarMass; - TC = criticalTemperature;// characterization.getTBPModel().calcTC(molarMass, density); - PC = criticalPressure;// characterization.getTBPModel().calcPC(molarMass, density); + // characterization.getTBPModel().calcTC(molarMass, density); + TC = criticalTemperature; + // characterization.getTBPModel().calcPC(molarMass, density); + PC = criticalPressure; m = characterization.getTBPModel().calcm(molarMass, density); - acs = acentricFactor;// acentracentrcharacterization.getTBPModel().calcAcentricFactor(molarMass, - // density); + // acentracentrcharacterization.getTBPModel().calcAcentricFactor(molarMass, + // density); + acs = acentricFactor; TB = characterization.getTBPModel().calcTB(molarMass, density); molarMass /= 1000.0; @@ -967,7 +1037,7 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo } refSystem.setTemperature(273.15 + 15.0); - refSystem.setPressure(1.01325); + refSystem.setPressure(ThermodynamicConstantsInterface.referencePressure); refSystem.init(1); // refSystem.display(); racketZ = characterization.getTBPModel().calcRacketZ(refSystem, molarMass * 1000.0, density); @@ -985,23 +1055,24 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo // refSystem.getPhase(1).getComponent(0).setRacketZ(racketZ); // // refSystem.setTemperature(273.15+80.0); - // // refSystem.setPressure(1.01325); + // // refSystem.setPressure(ThermodynamicConstantsInterface.referencePressure); // // refSystem.init(1); // // refSystem.initPhysicalProperties(); - // // APIdens - refSystem.getPhase(1).getPhysicalProperties().getDensity();; + // // APIdens - refSystem.getPhase(1).getPhysicalProperties().getDensity(); // // sammenligne med API-standard for tetthet - og sette Penloux dt - } catch (Exception e) { - logger.error("error", e); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - double critVol = characterization.getTBPModel().calcCriticalVolume(molarMass * 1000, density);// 0.2918-0.0928* - // acs)*8.314*TC/PC*10.0; + double critVol = characterization.getTBPModel().calcCriticalVolume(molarMass * 1000, density); // 0.2918-0.0928* + // acs)*ThermodynamicConstantsInterface.R*TC/PC*10.0; addComponent(componentName, numberOfMoles, TC, PC, acs); double Kwatson = Math.pow(TB * 1.8, 1.0 / 3.0) / density; // System.out.println("watson " + Kwatson); double CF = Math.pow((12.8 - Kwatson) * (10.0 - Kwatson) / (10.0 * acs), 2.0); - double acsKeslerLee = acs;// characterization.getTBPModel().calcAcentricFactorKeslerLee(molarMass*1000.0, - // density); + // characterization.getTBPModel().calcAcentricFactorKeslerLee(molarMass*1000.0, + // density); + double acsKeslerLee = acs; double cpa = (-0.33886 + 0.02827 * Kwatson - 0.26105 * CF + 0.59332 * acsKeslerLee * CF) * 4.18682 * molarMass * 1e3; double cpb = (-(0.9291 - 1.1543 * Kwatson + 0.0368 * Kwatson * Kwatson) * 1e-4 @@ -1015,7 +1086,7 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo getPhase(i).getComponent(componentName).setMolarMass(molarMass); getPhase(i).getComponent(componentName).setComponentType("TBPfraction"); getPhase(i).getComponent(componentName).setNormalLiquidDensity(density); - getPhase(i).getComponent(componentName).setNormalBoilingPoint(TB - 273.15); + getPhase(i).getComponent(componentName).setNormalBoilingPoint(TB); getPhase(i).getComponent(componentName) .setAcentricFactor(refSystem.getPhase(0).getComponent(0).getAcentricFactor()); getPhase(i).getComponent(componentName).setCriticalVolume(critVol); @@ -1023,10 +1094,11 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo getPhase(i).getComponent(componentName).setRacketZCPA(racketZ); getPhase(i).getComponent(componentName).setIsTBPfraction(true); getPhase(i).getComponent(componentName).setParachorParameter( - characterization.getTBPModel().calcParachorParameter(molarMass, density));// 59.3+2.34*molarMass*1000.0);//0.5003*thermo.ThermodynamicConstantsInterface.R*TC/PC*(0.25969-racketZ)); + characterization.getTBPModel().calcParachorParameter(molarMass, density)); // 59.3+2.34*molarMass*1000.0); + // //0.5003*thermo.ThermodynamicConstantsInterface.R*TC/PC*(0.25969-racketZ)); getPhase(i).getComponent(componentName).setCriticalViscosity( - characterization.getTBPModel().calcCriticalViscosity(molarMass * 1000.0, density));// 7.94830*Math.sqrt(1e3*molarMass)*Math.pow(PC,2.0/3.0)/Math.pow(TC, - // 1.0/6.0)*1e-7); + characterization.getTBPModel().calcCriticalViscosity(molarMass * 1000.0, density)); // 7.94830*Math.sqrt(1e3*molarMass)*Math.pow(PC,2.0/3.0)/Math.pow(TC, + // 1.0/6.0)*1e-7); getPhase(i).getComponent(componentName).setTriplePointTemperature( 374.5 + 0.02617 * getPhase(i).getComponent(componentName).getMolarMass() * 1000.0 - 20172.0 / (getPhase(i).getComponent(componentName).getMolarMass() * 1000.0)); @@ -1050,1377 +1122,1168 @@ public void addTBPfraction(String componentName, double numberOfMoles, double mo /** {@inheritDoc} */ @Override - public void addPlusFraction(String componentName, double numberOfMoles, double molarMass, - double density) { - addTBPfraction(componentName, numberOfMoles, molarMass, density); - componentName = (componentName + "_" + "PC");// getFluidName()); - for (int i = 0; i < numberOfPhases; i++) { - // System.out.println("comp " + componentName); - getPhase(i).getComponent(componentName).setIsPlusFraction(true); - getPhase(i).getComponent(componentName).setCriticalViscosity( - 7.94830 * Math.sqrt(1e3 * getPhase(i).getComponent(componentName).getMolarMass()) - * Math.pow(getPhase(i).getComponent(componentName).getPC(), 2.0 / 3.0) - / Math.pow(getPhase(i).getComponent(componentName).getTC(), 1.0 / 6.0) * 1e-7); + public void addToComponentNames(String postfix) { + for (int j = 0; j < componentNames.size(); j++) { + componentNames.set(j, componentNames.get(j) + postfix); + } + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + for (int j = 0; j < componentNames.size(); j++) { + getPhase(i).getComponent(j) + .setComponentName(getPhase(i).getComponent(j).getComponentName() + postfix); + } } } /** {@inheritDoc} */ @Override - public void addComponent(ComponentInterface inComponent) { - if (inComponent.isIsTBPfraction()) { - addTBPfraction(inComponent.getComponentName(), inComponent.getNumberOfmoles(), - inComponent.getMolarMass(), inComponent.getNormalLiquidDensity()); - String componentName = inComponent.getComponentName(); - changeComponentName(componentName + "_PC", componentName.replaceFirst("_PC", "")); - for (int i = 0; i < numberOfPhases; i++) { - getPhase(i).getComponent(componentName) - .setAttractiveTerm(inComponent.getAttractiveTermNumber()); - getPhase(i).getComponent(componentName).setTC(inComponent.getTC()); - getPhase(i).getComponent(componentName).setPC(inComponent.getPC()); - getPhase(i).getComponent(componentName).setMolarMass(inComponent.getMolarMass()); - getPhase(i).getComponent(componentName).setComponentType("TBPfraction"); - getPhase(i).getComponent(componentName) - .setNormalLiquidDensity(inComponent.getNormalLiquidDensity()); - getPhase(i).getComponent(componentName) - .setNormalBoilingPoint(inComponent.getNormalBoilingPoint()); - getPhase(i).getComponent(componentName).setAcentricFactor(inComponent.getAcentricFactor()); - getPhase(i).getComponent(componentName).setCriticalVolume(inComponent.getCriticalVolume()); - getPhase(i).getComponent(componentName).setRacketZ(inComponent.getRacketZ()); - getPhase(i).getComponent(componentName).setRacketZCPA(inComponent.getRacketZCPA()); - getPhase(i).getComponent(componentName).setIsTBPfraction(true); - getPhase(i).getComponent(componentName) - .setParachorParameter(inComponent.getParachorParameter()); - getPhase(i).getComponent(componentName) - .setTriplePointTemperature(inComponent.getTriplePointTemperature()); - getPhase(i).getComponent(componentName) - .setIdealGasEnthalpyOfFormation(inComponent.getIdealGasEnthalpyOfFormation()); - getPhase(i).getComponent(componentName).setCpA(inComponent.getCpA()); - getPhase(i).getComponent(componentName).setCpB(inComponent.getCpB()); - getPhase(i).getComponent(componentName).setCpC(inComponent.getCpC()); - getPhase(i).getComponent(componentName).setCpD(inComponent.getCpD()); - } - } else { - addComponent(inComponent.getComponentName(), inComponent.getNumberOfmoles()); - } + public boolean allowPhaseShift() { + return allowPhaseShift; } /** {@inheritDoc} */ @Override - public void addComponent(String name) { - addComponent(name, 0.0); + public void allowPhaseShift(boolean allowPhaseShift) { + this.allowPhaseShift = allowPhaseShift; } - /** {@inheritDoc} */ @Override - public void addComponent(String componentName, double moles) { - componentName = ComponentInterface.getComponentName(componentName); - - int index = 0; - - boolean addForFirstTime = true; - for (int p = 0; p < componentNames.size(); p++) { - if (componentNames.get(p).equals(componentName)) { - addForFirstTime = false; - index = p; - break; - } - } - - if (addForFirstTime) { - if (!neqsim.util.database.NeqSimDataBase.hasComponent(componentName)) { - logger.error("No component with name: " + componentName + " in database"); - return; - } - if (moles < 0.0) { - String msg = "Negative input number of moles of component: " + componentName; - logger.error(msg); - throw new RuntimeException( - new neqsim.util.exception.InvalidInputException(this, "addComponent", "moles", msg)); - } - setTotalNumberOfMoles(getTotalNumberOfMoles() + moles); - // System.out.println("adding " + componentName); - componentNames.add(componentName); - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - getPhase(i).addcomponent(componentName, moles, moles, numberOfComponents); - getPhase(i).setAttractiveTerm(attractiveTermNumber); - } - numberOfComponents++; + public void autoSelectMixingRule() { + logger.info("setting mixing rule"); + if (modelName.equals("CPAs-SRK-EOS") || modelName.equals("CPA-SRK-EOS") + || modelName.equals("Electrolyte-CPA-EOS-statoil") + || modelName.equals("CPAs-SRK-EOS-statoil") || modelName.equals("Electrolyte-CPA-EOS")) { + this.setMixingRule(10); + // System.out.println("mix rule 10"); + } else if ((modelName.equals("ScRK-EOS-HV") || modelName.equals("SRK-EOS") + || modelName.equals("ScRK-EOS")) && this.getPhase(0).hasComponent("water")) { + this.setMixingRule(4); + } else if (modelName.equals("PR-EOS")) { + this.setMixingRule(2); + } else if (modelName.equals("Electrolyte-ScRK-EOS")) { + this.setMixingRule(4); + } else if (modelName.equals("UMR-PRU-EoS") || modelName.equals("UMR-PRU-MC-EoS")) { + this.setMixingRule("HV", "UNIFAC_UMRPRU"); + } else if (modelName.equals("GERG-water-EOS")) { + this.setMixingRule(8); + } else if (modelName.equals("GERG-2008-EOS")) { + this.setMixingRule(2); + } else if (modelName.equals("PC-SAFT")) { + this.setMixingRule(8); } else { - for (PhaseInterface tmpPhase : phaseArray) { - if (tmpPhase != null - && (tmpPhase.getComponent(componentName).getNumberOfMolesInPhase() + moles) < 0.0) { - init(0); - break; - } - } - - setTotalNumberOfMoles(getTotalNumberOfMoles() + moles); - // System.out.println("adding chem reac " + componentName); - for (PhaseInterface tmpPhase : phaseArray) { - if (tmpPhase != null) { - tmpPhase.addMolesChemReac(index, moles, moles); - } - } + this.setMixingRule(2); } } /** {@inheritDoc} */ @Override - public void addComponent(String componentName, double value, String unitName) { - componentName = ComponentInterface.getComponentName(componentName); - - if (!neqsim.util.database.NeqSimDataBase.hasComponent(componentName)) { - logger.error("No component with name: " + componentName + " in database"); - return; - } - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = - database.getResultSet(("SELECT * FROM comp WHERE name='" + componentName + "'")); - double molarmass = 0.0; - double stddens = 0.0; - double boilp = 0.0; - try { - dataSet.next(); - molarmass = Double.parseDouble(dataSet.getString("molarmass")) / 1000.0; - stddens = Double.parseDouble(dataSet.getString("stddens")); - boilp = Double.parseDouble(dataSet.getString("normboil")); - } catch (Exception e) { - logger.error("failed " + e.toString()); - } finally { - try { - dataSet.close(); - } catch (Exception e) { - logger.error("error", e); + public SystemInterface autoSelectModel() { + if (this.getPhase(0).hasComponent("MDEA") && this.getPhase(0).hasComponent("water") + && this.getPhase(0).hasComponent("CO2")) { + return setModel("Electrolyte-ScRK-EOS"); + } else if (this.getPhase(0).hasComponent("water") || this.getPhase(0).hasComponent("methanol") + || this.getPhase(0).hasComponent("MEG") || this.getPhase(0).hasComponent("TEG") + || this.getPhase(0).hasComponent("ethanol") || this.getPhase(0).hasComponent("DEG")) { + if (this.getPhase(0).hasComponent("Na+") || this.getPhase(0).hasComponent("K+") + || this.getPhase(0).hasComponent("Br-") || this.getPhase(0).hasComponent("Mg++") + || this.getPhase(0).hasComponent("Cl-") || this.getPhase(0).hasComponent("Ca++") + || this.getPhase(0).hasComponent("Fe++") || this.getPhase(0).hasComponent("SO4--")) { + logger.info("model elect"); + return setModel("Electrolyte-CPA-EOS-statoil"); + } else { + return setModel("CPAs-SRK-EOS-statoil"); } - } - neqsim.util.unit.Unit unit = - new neqsim.util.unit.RateUnit(value, unitName, molarmass, stddens, boilp); - double SIval = unit.getSIvalue(); - // System.out.println("number of moles " + SIval); - this.addComponent(componentName, SIval); - } - - /** {@inheritDoc} */ - @Override - public void addComponent(String componentName, double moles, double TC, double PC, double acs) { - componentName = ComponentInterface.getComponentName(componentName); - - String comNam = componentName; - if (getPhase(0).hasComponent(componentName)) { - addComponent(componentName, moles); + } else if (this.getPhase(0).hasComponent("water")) { + return setModel("ScRK-EOS"); + } else if (this.getPhase(0).hasComponent("mercury")) { + return setModel("SRK-TwuCoon-Statoil-EOS"); } else { - addComponent("default", moles); - comNam = "default"; - // componentNames.set(componentNames.indexOf("default"), componentName); - } - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - getPhase(i).getComponent(comNam).setComponentName(componentName); - getPhase(i).getComponent(componentName).setTC(TC); - getPhase(i).getComponent(componentName).setPC(PC); - getPhase(i).getComponent(componentName).setAcentricFactor(acs); - } - if (comNam.equals("default")) { - componentNames.remove("default"); - componentNames.add(componentName); + logger.info("no model"); + return setModel("SRK-EOS"); } } /** {@inheritDoc} */ @Override - public void addComponent(String componentName, double moles, int phaseNumber) { - componentName = ComponentInterface.getComponentName(componentName); - - if (!neqsim.util.database.NeqSimDataBase.hasComponent(componentName)) { - logger.error("No component with name: " + componentName + " in database"); - return; - } - - for (int p = 0; p < componentNames.size(); p++) { - if (componentNames.get(p).equals(componentName)) { - addComponent(p, moles, phaseNumber); - return; - } - } - - // Add new component - if (moles < 0.0) { - String msg = "Negative input number of moles."; - logger.error(msg); - neqsim.util.exception.InvalidInputException e = - new neqsim.util.exception.InvalidInputException(this, "addComponent", "moles", msg); - throw new RuntimeException(e); - } - - componentNames.add(componentName); - double k = 1.0; - setTotalNumberOfMoles(getTotalNumberOfMoles() + moles); - - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - if (phaseNumber == i) { - k = 1.0; - } else { - k = 1.0e-30; + public final void calc_x_y() { + for (int j = 0; j < numberOfPhases; j++) { + for (int i = 0; i < numberOfComponents; i++) { + if (j == 0) { + getPhase(j).getComponent(i) + .setx(getPhase(0).getComponent(i).getK() * getPhase(j).getComponents()[i].getz() + / (1 - beta[phaseIndex[0]] + + beta[phaseIndex[0]] * getPhase(0).getComponent(i).getK())); + } else if (j == 1) { + getPhase(j).getComponent(i).setx(getPhase(0).getComponent(i).getz() / (1.0 + - beta[phaseIndex[0]] + beta[phaseIndex[0]] * getPhase(0).getComponent(i).getK())); + } + // phaseArray[j].getComponents()[i].setx(phaseArray[0].getComponents()[i].getx() + // / phaseArray[0].getComponents()[i].getK()); + // System.out.println("comp: " + j + i + " " + c[j][i].getx()); } - getPhase(i).addcomponent(componentName, moles, moles * k, numberOfComponents); - getPhase(i).setAttractiveTerm(attractiveTermNumber); + getPhase(j).normalize(); } - numberOfComponents++; } - /** {@inheritDoc} */ @Override - public void addComponent(String componentName, double value, String name, int phase) { - componentName = ComponentInterface.getComponentName(componentName); - - if (!neqsim.util.database.NeqSimDataBase.hasComponent(componentName)) { - logger.error("No component with name: " + componentName + " in database"); - return; - } - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = - database.getResultSet(("SELECT * FROM comp WHERE name='" + componentName + "'")); - double molarmass = 0.0; - double stddens = 0.0; - double boilp = 0.0; - try { - dataSet.next(); - molarmass = Double.parseDouble(dataSet.getString("molarmass")) / 1000.0; - stddens = Double.parseDouble(dataSet.getString("stddens")); - boilp = Double.parseDouble(dataSet.getString("normboil")); - } catch (Exception e) { - logger.error("failed " + e.toString()); - throw new RuntimeException(e); - } finally { - try { - dataSet.close(); - if (database.getStatement() != null) { - database.getStatement().close(); + public final void calc_x_y_nonorm() { + for (int j = 0; j < numberOfPhases; j++) { + for (int i = 0; i < numberOfComponents; i++) { + if (j == 0) { + getPhase(j).getComponents()[i].setx(getPhase(j).getComponents()[i].getK() + * getPhase(j).getComponents()[i].getz() / (1 - beta[phaseIndex[0]] + + beta[phaseIndex[0]] * getPhase(0).getComponents()[i].getK())); } - if (database.getConnection() != null) { - database.getConnection().close(); + if (j == 1) { + getPhase(j).getComponents()[i].setx(getPhase(0).getComponents()[i].getz() / (1.0 + - beta[phaseIndex[0]] + beta[phaseIndex[0]] * getPhase(0).getComponents()[i].getK())); } - } catch (Exception e) { - logger.error("error", e); + // phaseArray[j].getComponents()[i].setx(phaseArray[0].getComponents()[i].getx() + // / phaseArray[0].getComponents()[i].getK()); + // System.out.println("comp: " + j + i + " " + c[j][i].getx()); } + // getPhase(j).normalize(); } - neqsim.util.unit.Unit unit = - new neqsim.util.unit.RateUnit(value, name, molarmass, stddens, boilp); - double SIval = unit.getSIvalue(); - // System.out.println("number of moles " + SIval); - this.addComponent(componentName, SIval, phase); } /** {@inheritDoc} */ @Override - public void addComponent(int index, double moles) { - if (index >= getPhase(0).getNumberOfComponents()) { - logger.error("componentIndex higher than number of components in database"); - return; - } - setTotalNumberOfMoles(getTotalNumberOfMoles() + moles); - for (PhaseInterface tmpPhase : phaseArray) { - if (tmpPhase != null) { - tmpPhase.addMolesChemReac(index, moles, moles); - } + public double calcHenrysConstant(String component) { + if (numberOfPhases != 2) { + logger.error("Can't calculate Henrys constant - two phases must be present."); + return 0; + } else { + int compNumb = getPhase(getPhaseIndex(0)).getComponent(component).getComponentNumber(); + double hc = getPhase(getPhaseIndex(0)).getFugacity(compNumb) + / getPhase(getPhaseIndex(1)).getComponent(component).getx(); + return hc; } } /** {@inheritDoc} */ @Override - public void addComponent(int index, double moles, int phaseNumber) { - if (index >= getPhase(0).getNumberOfComponents()) { - logger.error("componentIndex higher than number of components in database"); - return; - } - double k = 1.0; + public void calcInterfaceProperties() { + interfaceProp.init(); + } - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - if (phaseNumber == i) { - k = 1.0; - } else { - k = 1e-30; - } - phaseArray[phaseIndex[i]].addMolesChemReac(index, moles * k, moles); + /** {@inheritDoc} */ + @Override + public void calcKIJ(boolean ok) { + neqsim.thermo.mixingRule.EosMixingRules.calcEOSInteractionParameters = ok; + for (int i = 0; i < numberOfPhases; i++) { + ((PhaseEosInterface) getPhase(i)).getMixingRule().setCalcEOSInteractionParameters(ok); } - setTotalNumberOfMoles(getTotalNumberOfMoles() + moles); } /** {@inheritDoc} */ @Override - public void removeComponent(String name) { - name = ComponentInterface.getComponentName(name); + public void changeComponentName(String name, String newName) { + for (int i = 0; i < numberOfComponents; i++) { + if (componentNames.get(i).equals(name)) { + componentNames.set(i, newName); + } + } - setTotalNumberOfMoles( - getTotalNumberOfMoles() - phaseArray[0].getComponent(name).getNumberOfmoles()); - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - getPhase(i).removeComponent(name, getTotalNumberOfMoles(), - phaseArray[phaseIndex[i]].getComponent(name).getNumberOfMolesInPhase(), - phaseArray[phaseIndex[i]].getComponent(name).getComponentNumber()); + for (int i = 0; i < maxNumberOfPhases; i++) { + getPhase(i).getComponent(name).setComponentName(newName); } + } - componentNames.remove(name); - // System.out.println("removing " + componentNames.toString()); - numberOfComponents--; + /** {@inheritDoc} */ + @Override + public boolean checkStability() { + return checkStability; } /** {@inheritDoc} */ @Override - public void setEmptyFluid() { - for (PhaseInterface tmpPhase : phaseArray) { - if (tmpPhase != null) { - tmpPhase.setEmptyFluid(); - } - } - totalNumberOfMoles = 0.0; + public void checkStability(boolean val) { + checkStability = val; } /** {@inheritDoc} */ @Override - public final double calcBeta() throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - ComponentInterface[] compArray = getPhase(0).getComponents(); + public void chemicalReactionInit() { + chemicalReactionOperations = new ChemicalReactionOperations(this); + chemicalSystem = chemicalReactionOperations.hasReactions(); + } - int i; - double tolerance = neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; - double deriv = 0.0; - double gbeta = 0.0; - double betal = 0; - double nybeta = 0; + /** {@inheritDoc} */ + @Override + public void clearAll() { + setTotalNumberOfMoles(0); + phaseType[0] = PhaseType.byValue(1); + phaseType[1] = PhaseType.byValue(0); + numberOfComponents = 0; + setNumberOfPhases(2); + beta[0] = 1.0; + beta[1] = 1.0; + beta[2] = 1.0; + beta[3] = 1.0; + beta[4] = 1.0; + beta[5] = 1.0; + chemicalSystem = false; - double midler = 0; - double minBeta = tolerance; - double maxBeta = 1.0 - tolerance; - double g0 = -1.0; - double g1 = 1.0; - nybeta = beta[0]; - betal = 1.0 - nybeta; + double oldTemp = phaseArray[0].getTemperature(); + double oldPres = phaseArray[0].getPressure(); - for (i = 0; i < numberOfComponents; i++) { - midler = (compArray[i].getK() * compArray[i].getz() - 1.0) / (compArray[i].getK() - 1.0); - if ((midler > minBeta) && (compArray[i].getK() > 1.0)) { - minBeta = midler; - } - midler = (1.0 - compArray[i].getz()) / (1.0 - compArray[i].getK()); - if ((midler < maxBeta) && (compArray[i].getK() < 1.0)) { - maxBeta = midler; + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + try { + phaseArray[i] = phaseArray[i].getClass().getDeclaredConstructor().newInstance(); + } catch (Exception ex) { + logger.error("err ", ex); } - g0 += compArray[i].getz() * compArray[i].getK(); - g1 += -compArray[i].getz() / compArray[i].getK(); + phaseArray[i].setTemperature(oldTemp); + phaseArray[i].setPressure(oldPres); } + } - if (g0 < 0) { - beta[1] = 1.0 - tolerance; - beta[0] = tolerance; - return beta[0]; - } - if (g1 > 0) { - beta[1] = tolerance; - beta[0] = 1.0 - tolerance; - return beta[0]; + /** {@inheritDoc} */ + @Override + public SystemThermo clone() { + SystemThermo clonedSystem = null; + try { + clonedSystem = (SystemThermo) super.clone(); + // clonedSystem.chemicalReactionOperations = (ChemicalReactionOperations) + // chemicalReactionOperations.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - nybeta = (minBeta + maxBeta) / 2.0; - // System.out.println("guessed beta: " + nybeta + " maxbeta: " +maxBeta + " - // minbeta: " +minBeta ); - betal = 1.0 - nybeta; - - // ' *l = 1.0-nybeta; - double gtest = 0.0; - for (i = 0; i < numberOfComponents; i++) { - gtest += compArray[i].getz() * (compArray[i].getK() - 1.0) - / (1.0 - nybeta + nybeta * compArray[i].getK()); // beta - // = - // nybeta - } + clonedSystem.beta = beta.clone(); + clonedSystem.attractiveTermNumber = attractiveTermNumber; + clonedSystem.phaseType = phaseType.clone(); + clonedSystem.phaseIndex = phaseIndex.clone(); - if (gtest >= 0) { - minBeta = nybeta; - } else { - maxBeta = nybeta; + clonedSystem.componentNames = new ArrayList(componentNames); + if (interfaceProp != null) { + // clonedSystem.interfaceProp = (InterphasePropertiesInterface) + // interfaceProp.clone(); } - - if (gtest < 0) { - double minold = minBeta; - minBeta = 1.0 - maxBeta; - maxBeta = 1.0 - minold; + clonedSystem.characterization = characterization.clone(); + if (clonedSystem.waxCharacterisation != null) { + clonedSystem.waxCharacterisation = waxCharacterisation.clone(); } - int iterations = 0; - int maxIterations = 300; - // System.out.println("gtest: " + gtest); - double step = 1.0; - do { - iterations++; - if (gtest >= 0) { - // oldbeta = nybeta; - deriv = 0.0; - gbeta = 0.0; - - for (i = 0; i < numberOfComponents; i++) { - double temp1 = (compArray[i].getK() - 1.0); - double temp2 = 1.0 + temp1 * nybeta; - deriv += -(compArray[i].getz() * temp1 * temp1) / (temp2 * temp2); - gbeta += compArray[i].getz() * (compArray[i].getK() - 1.0) - / (1.0 + (compArray[i].getK() - 1.0) * nybeta); - } - - if (gbeta >= 0) { - minBeta = nybeta; - } else { - maxBeta = nybeta; - } - nybeta -= (gbeta / deriv); + System.arraycopy(this.beta, 0, clonedSystem.beta, 0, beta.length); + System.arraycopy(this.phaseType, 0, clonedSystem.phaseType, 0, phaseType.length); + System.arraycopy(this.phaseIndex, 0, clonedSystem.phaseIndex, 0, phaseIndex.length); - // System.out.println("beta: " + maxBeta); - if (nybeta > maxBeta) { - nybeta = maxBeta; - } - if (nybeta < minBeta) { - nybeta = minBeta; - } + clonedSystem.phaseArray = phaseArray.clone(); + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + clonedSystem.phaseArray[i] = phaseArray[i].clone(); + } - /* - * if ((nybeta > maxBeta) || (nybeta < minBeta)) { // nybeta = 0.5 * (maxBeta + minBeta); - * gbeta = 1.0; } - */ - } else { - // oldbeta = betal; - deriv = 0.0; - gbeta = 0.0; - - for (i = 0; i < numberOfComponents; i++) { - deriv -= (compArray[i].getz() * (compArray[i].getK() - 1.0) * (1.0 - compArray[i].getK())) - / Math.pow((betal + (1 - betal) * compArray[i].getK()), 2); - gbeta += compArray[i].getz() * (compArray[i].getK() - 1.0) - / (betal + (-betal + 1.0) * compArray[i].getK()); - } + return clonedSystem; + } - if (gbeta < 0) { - minBeta = betal; - } else { - maxBeta = betal; - } + /** {@inheritDoc} */ + @Override + public void createDatabase(boolean reset) { + if (reset) { + resetDatabase(); + } - betal -= (gbeta / deriv); + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + String names = new String(); - if (betal > maxBeta) { - betal = maxBeta; - } - if (betal < minBeta) { - betal = minBeta; - } + for (int k = 0; k < getPhase(0).getNumberOfComponents() - 1; k++) { + names += "'" + this.getComponentNames()[k] + "', "; + } + names += "'" + this.getComponentNames()[getPhase(0).getNumberOfComponents() - 1] + "'"; - /* - * if ((betal > maxBeta) || (betal < minBeta)) { gbeta = 1.0; { betal = 0.5 * (maxBeta + - * minBeta); } } - */ - nybeta = 1.0 - betal; + if (NeqSimDataBase.createTemporaryTables()) { + database.execute("insert into comptemp SELECT * FROM comp WHERE name IN (" + names + ")"); + database.execute("insert into intertemp SELECT DISTINCT * FROM inter WHERE comp1 IN (" + + names + ") AND comp2 IN (" + names + ")"); + database.execute("delete FROM intertemp WHERE comp1=comp2"); } - step = gbeta / deriv; - // System.out.println("step : " + step); - } while (((Math.abs(step)) >= 1.0e-10 && iterations < maxIterations));// && - // (Math.abs(nybeta)-Math.abs(maxBeta))>0.1); - - // System.out.println("beta: " + nybeta + " iterations: " + iterations); - if (nybeta <= tolerance) { - phase = 1; - nybeta = tolerance; - } else if (nybeta >= 1.0 - tolerance) { - phase = 0; - nybeta = 1.0 - tolerance; - // superheated vapour - } else { - phase = 2; - } // two-phase liquid-gas + // System.out.println("ok " + names); - beta[0] = nybeta; - beta[1] = 1.0 - nybeta; + for (int phase = 0; phase < maxNumberOfPhases; phase++) { + getPhase(phase).setMixingRuleDefined(false); + } - if (iterations >= maxIterations) { - throw new neqsim.util.exception.TooManyIterationsException(this, "calcBeta", maxIterations); - } - if (Double.isNaN(beta[1])) { - /* - * for (i = 0; i < numberOfComponents; i++) { System.out.println("K " + compArray[i].getK()); - * System.out.println("z " + compArray[i].getz()); } - */ - throw new neqsim.util.exception.IsNaNException(this, "calcBeta", "beta"); + for (int i = 0; i < numberOfComponents; i++) { + if (getPhase(0).getComponent(i).isIsTBPfraction() + || getPhase(0).getComponent(i).isIsPlusFraction()) { + getPhase(0).getComponent(i).insertComponentIntoDatabase(""); + } + } + } catch (Exception ex) { + logger.error("error in SystemThermo Class...createDatabase() method", ex); } - return beta[0]; } /** {@inheritDoc} */ @Override - public final double initBeta() { + public String[][] createTable(String name) { + initProperties(); + java.text.DecimalFormat nf = new java.text.DecimalFormat(); + + java.text.DecimalFormatSymbols symbols = new java.text.DecimalFormatSymbols(); + symbols.setDecimalSeparator('.'); + nf.setDecimalFormatSymbols(symbols); + + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.#####E0"); + + // String[][] table = new String[getPhases()[0].getNumberOfComponents() + + // 30][7]; + // String[] names = {"", "Feed", "Phase 1", "Phase 2", "Phase 3", "Phase 4", + // "Unit"}; + String[][] table = new String[getPhases()[0].getNumberOfComponents() + 30][7]; + table[0][0] = ""; // getPhases()[0].getType(); //""; + + for (int i = 0; i < getPhases()[0].getNumberOfComponents() + 30; i++) { + for (int j = 0; j < 7; j++) { + table[i][j] = ""; + } + } + table[0][1] = "total"; for (int i = 0; i < numberOfPhases; i++) { - beta[phaseIndex[i]] = getPhase(i).getNumberOfMolesInPhase() / getTotalNumberOfMoles(); - // System.out.println("beta " + beta[i]); + table[0][i + 2] = getPhase(i).getType().toString(); } - return beta[phaseIndex[0]]; - } - /** {@inheritDoc} */ - @Override - public double getJouleThomsonCoefficient(String unit) { - double JTcoef = getJouleThomsonCoefficient(); - double conversionFactor = 1.0; - switch (unit) { - case "K/bar": - conversionFactor = 1.0; - break; - case "C/bar": - conversionFactor = 1.0; - break; - default: - break; + StringBuffer buf = new StringBuffer(); + java.text.FieldPosition test = new java.text.FieldPosition(0); + for (int j = 0; j < getPhases()[0].getNumberOfComponents(); j++) { + buf = new StringBuffer(); + table[j + 1][1] = nf.format(getPhase(0).getComponents()[j].getz(), buf, test).toString(); } - return JTcoef * conversionFactor; - } + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 4][1] = + nf.format(getMolarMass(Units.getSymbol("Molar Mass")), buf, test).toString(); + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 9][1] = + nf.format(getEnthalpy(Units.getSymbol("enthalpy")), buf, test).toString(); + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 10][1] = + nf.format(getEntropy(Units.getSymbol("entropy")), buf, test).toString(); - /** {@inheritDoc} */ - @Override - public double getJouleThomsonCoefficient() { - double JTcoef = 0; for (int i = 0; i < numberOfPhases; i++) { - JTcoef += getBeta(i) * getPhase(i).getJouleThomsonCoefficient(); + for (int j = 0; j < getPhases()[0].getNumberOfComponents(); j++) { + table[j + 1][0] = getPhases()[0].getComponents()[j].getName(); + buf = new StringBuffer(); + table[j + 1][i + 2] = + nf.format(getPhase(i).getComponents()[j].getx(), buf, test).toString(); + table[j + 1][6] = "[mole fraction]"; + } + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 2][0] = "Density"; + table[getPhases()[0].getNumberOfComponents() + 2][i + 2] = + nf.format(getPhase(i).getDensity(Units.activeUnits.get("density").symbol), buf, test) + .toString(); + table[getPhases()[0].getNumberOfComponents() + 2][6] = + Units.activeUnits.get("density").symbol; + + // Double.longValue(system.getPhase(i).getBeta()); + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 3][0] = "Phase Fraction"; + table[getPhases()[0].getNumberOfComponents() + 3][i + 2] = + nf.format(getPhase(i).getBeta(), buf, test).toString(); + table[getPhases()[0].getNumberOfComponents() + 3][6] = "[mole fraction]"; + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 4][0] = "Molar Mass"; + table[getPhases()[0].getNumberOfComponents() + 4][i + 2] = + nf.format(getPhase(i).getMolarMass(Units.activeUnits.get("Molar Mass").symbol), buf, test) + .toString(); + table[getPhases()[0].getNumberOfComponents() + 4][6] = + Units.activeUnits.get("Molar Mass").symbol; + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 5][0] = "Z factor"; + table[getPhases()[0].getNumberOfComponents() + 5][i + 2] = + nf.format(getPhase(i).getZvolcorr(), buf, test).toString(); + table[getPhases()[0].getNumberOfComponents() + 5][6] = "[-]"; + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 6][0] = "Heat Capacity (Cp)"; + table[getPhases()[0].getNumberOfComponents() + 6][i + 2] = + nf.format((getPhase(i).getCp(Units.activeUnits.get("Heat Capacity (Cp)").symbol)), buf, + test).toString(); + table[getPhases()[0].getNumberOfComponents() + 6][6] = + Units.activeUnits.get("Heat Capacity (Cp)").symbol; + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 7][0] = "Heat Capacity (Cv)"; + table[getPhases()[0].getNumberOfComponents() + 7][i + 2] = + nf.format((getPhase(i).getCv(Units.activeUnits.get("Heat Capacity (Cv)").symbol)), buf, + test).toString(); + table[getPhases()[0].getNumberOfComponents() + 7][6] = + Units.activeUnits.get("Heat Capacity (Cv)").symbol; + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 8][0] = "Speed of Sound"; + table[getPhases()[0].getNumberOfComponents() + 8][i + 2] = + nf.format((getPhase(i).getSoundSpeed(Units.getSymbol("speed of sound"))), buf, test) + .toString(); + table[getPhases()[0].getNumberOfComponents() + 8][6] = Units.getSymbol("speed of sound"); + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 9][0] = "Enthalpy"; + table[getPhases()[0].getNumberOfComponents() + 9][i + 2] = + nf.format((getPhase(i).getEnthalpy(Units.getSymbol("enthalpy"))), buf, test).toString(); + table[getPhases()[0].getNumberOfComponents() + 9][6] = Units.getSymbol("enthalpy"); + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 10][0] = "Entropy"; + table[getPhases()[0].getNumberOfComponents() + 10][i + 2] = + nf.format((getPhase(i).getEntropy(Units.getSymbol("entropy"))), buf, test).toString(); + table[getPhases()[0].getNumberOfComponents() + 10][6] = Units.getSymbol("entropy"); + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 11][0] = "JT coefficient"; + table[getPhases()[0].getNumberOfComponents() + 11][i + 2] = + nf.format((getPhase(i).getJouleThomsonCoefficient(Units.getSymbol("JT coefficient"))), + buf, test).toString(); + table[getPhases()[0].getNumberOfComponents() + 11][6] = Units.getSymbol("JT coefficient"); + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 13][0] = "Viscosity"; + table[getPhases()[0].getNumberOfComponents() + 13][i + 2] = + nf.format((getPhase(i).getViscosity(Units.getSymbol("viscosity"))), buf, test).toString(); + table[getPhases()[0].getNumberOfComponents() + 13][6] = Units.getSymbol("viscosity"); + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 14][0] = "Thermal Conductivity"; + table[getPhases()[0].getNumberOfComponents() + 14][i + 2] = + nf.format(getPhase(i).getThermalConductivity(Units.getSymbol("thermal conductivity")), + buf, test).toString(); + table[getPhases()[0].getNumberOfComponents() + 14][6] = + Units.getSymbol("thermal conductivity"); + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 15][0] = "Surface Tension"; + try { + if (i < numberOfPhases - 1) { + table[getPhases()[0].getNumberOfComponents() + 15][2] = + nf.format(getInterphaseProperties().getSurfaceTension(0, 1), buf, test).toString(); + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 15][3] = + nf.format(getInterphaseProperties().getSurfaceTension(0, 1), buf, test).toString(); + buf = new StringBuffer(); + if (i == 1) { + table[getPhases()[0].getNumberOfComponents() + 17][2] = + nf.format(getInterphaseProperties().getSurfaceTension(0, 2), buf, test).toString(); + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 17][4] = + nf.format(getInterphaseProperties().getSurfaceTension(0, 2), buf, test).toString(); + table[getPhases()[0].getNumberOfComponents() + 17][6] = "[N/m]"; + } + if (i == 1) { + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 16][3] = + nf.format(getInterphaseProperties().getSurfaceTension(1, 2), buf, test).toString(); + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 16][4] = + nf.format(getInterphaseProperties().getSurfaceTension(1, 2), buf, test).toString(); + table[getPhases()[0].getNumberOfComponents() + 16][6] = "[N/m]"; + } + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + table[getPhases()[0].getNumberOfComponents() + 15][6] = "[N/m]"; + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 19][0] = "Pressure"; + table[getPhases()[0].getNumberOfComponents() + 19][i + 2] = + Double.toString(getPhase(i).getPressure(Units.getSymbol("pressure"))); + table[getPhases()[0].getNumberOfComponents() + 19][6] = Units.getSymbol("pressure"); + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 20][0] = "Temperature"; + table[getPhases()[0].getNumberOfComponents() + 20][i + 2] = + Double.toString(getPhase(i).getTemperature(Units.getSymbol("temperature"))); + table[getPhases()[0].getNumberOfComponents() + 20][6] = Units.getSymbol("temperature"); + Double.toString(getPhase(i).getTemperature()); + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 22][0] = "Model"; + table[getPhases()[0].getNumberOfComponents() + 22][i + 2] = getModelName(); + table[getPhases()[0].getNumberOfComponents() + 22][6] = "-"; + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 23][0] = "Mixing Rule"; + try { + table[getPhases()[0].getNumberOfComponents() + 23][i + 2] = + ((PhaseEosInterface) getPhase(i)).getMixingRuleName(); + } catch (Exception ex) { + table[getPhases()[0].getNumberOfComponents() + 23][i + 2] = "?"; + // logger.error(ex.getMessage(),e); + } + table[getPhases()[0].getNumberOfComponents() + 23][6] = "-"; + + buf = new StringBuffer(); + table[getPhases()[0].getNumberOfComponents() + 25][0] = "Stream"; + table[getPhases()[0].getNumberOfComponents() + 25][i + 2] = name; + table[getPhases()[0].getNumberOfComponents() + 25][6] = "-"; } - return JTcoef; + + resultTable = table; + return table; } /** {@inheritDoc} */ @Override - public double getSoundSpeed(String unit) { - double refVel = getSoundSpeed(); - double conversionFactor = 1.0; - switch (unit) { - case "m/s": - conversionFactor = 1.0; - break; - case "km/hr": - conversionFactor = 3.6; - break; - default: - break; + public void deleteFluidPhase(int phase) { + for (int i = phase; i < numberOfPhases; i++) { + phaseIndex[i] = phaseIndex[i + 1]; } - return refVel * conversionFactor; + numberOfPhases--; } /** {@inheritDoc} */ @Override - public double getSoundSpeed() { - double soundspeed = 0; - for (int i = 0; i < numberOfPhases; i++) { - soundspeed += getBeta(i) * getPhase(i).getSoundSpeed(); + public void display(String name) { + if (this.getNumberOfComponents() == 0) { + return; } - return soundspeed; + javax.swing.JFrame dialog = new javax.swing.JFrame("System-Report"); + java.awt.Dimension screenDimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + java.awt.Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new java.awt.BorderLayout()); + + String[] names = {"", "Feed", "Phase 1", "Phase 2", "Phase 3", "Phase 4", "Unit"}; + String[][] table = createTable(name); + javax.swing.JTable Jtab = new javax.swing.JTable(table, names); + javax.swing.JScrollPane scrollpane = new javax.swing.JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + + // setting the size of the frame and text size + dialog.setSize(screenDimension.width / 2, screenDimension.height / 2); // pack(); + Jtab.setRowHeight(dialog.getHeight() / table.length); + Jtab.setFont(new java.awt.Font("Serif", java.awt.Font.PLAIN, + dialog.getHeight() / table.length - dialog.getHeight() / table.length / 10)); + + // dialog.pack(); + dialog.setVisible(true); } /** {@inheritDoc} */ @Override - public final void initTotalNumberOfMoles(double change) { - setTotalNumberOfMoles(getTotalNumberOfMoles() + change); - // System.out.println("total moles: " + totalNumberOfMoles); - for (int j = 0; j < numberOfPhases; j++) { - for (int i = 0; i < numberOfComponents; i++) { - getPhase(j).getComponents()[i] - .setNumberOfmoles(phaseArray[phaseIndex[0]].getComponents()[i].getNumberOfmoles()); - } - } + public boolean doMultiPhaseCheck() { + return multiPhaseCheck; } /** {@inheritDoc} */ @Override - public final void init_x_y() { - // double x, z; - for (int j = 0; j < numberOfPhases; j++) { - // x = 0; - // z = 0; - for (int i = 0; i < numberOfComponents; i++) { - getPhase(j).getComponents()[i] - .setz(getPhase(j).getComponents()[i].getNumberOfmoles() / getTotalNumberOfMoles()); - getPhase(j).getComponents()[i].setx(getPhase(j).getComponents()[i].getNumberOfMolesInPhase() - / getPhase(j).getNumberOfMolesInPhase()); - // x += getPhase(j).getComponents()[i].getx(); - // z += getPhase(j).getComponents()[i].getz(); - } - getPhase(j).normalize(); - } + public final boolean doSolidPhaseCheck() { + return solidPhaseCheck; + } + + /** + *

+ * getAntoineVaporPressure. + *

+ * + * @param temp a double + * @return a double + */ + public double getAntoineVaporPressure(double temp) { + return phaseArray[0].getAntoineVaporPressure(temp); } /** {@inheritDoc} */ @Override - public final void calc_x_y() { - for (int j = 0; j < numberOfPhases; j++) { - for (int i = 0; i < numberOfComponents; i++) { - if (j == 0) { - getPhase(j).getComponent(i) - .setx(getPhase(0).getComponent(i).getK() * getPhase(j).getComponents()[i].getz() - / (1 - beta[phaseIndex[0]] - + beta[phaseIndex[0]] * getPhase(0).getComponent(i).getK())); - } else if (j == 1) { - getPhase(j).getComponent(i).setx(getPhase(0).getComponent(i).getz() / (1.0 - - beta[phaseIndex[0]] + beta[phaseIndex[0]] * getPhase(0).getComponent(i).getK())); - } - // phaseArray[j].getComponents()[i].setx(phaseArray[0].getComponents()[i].getx() - // / phaseArray[0].getComponents()[i].getK()); - // System.out.println("comp: " + j + i + " " + c[j][i].getx()); - } - getPhase(j).normalize(); - } + public final double getBeta() { + return beta[0]; } /** {@inheritDoc} */ @Override - public final void calc_x_y_nonorm() { - for (int j = 0; j < numberOfPhases; j++) { - for (int i = 0; i < numberOfComponents; i++) { - if (j == 0) { - getPhase(j).getComponents()[i].setx(getPhase(j).getComponents()[i].getK() - * getPhase(j).getComponents()[i].getz() / (1 - beta[phaseIndex[0]] - + beta[phaseIndex[0]] * getPhase(0).getComponents()[i].getK())); - } - if (j == 1) { - getPhase(j).getComponents()[i].setx(getPhase(0).getComponents()[i].getz() / (1.0 - - beta[phaseIndex[0]] + beta[phaseIndex[0]] * getPhase(0).getComponents()[i].getK())); - } - // phaseArray[j].getComponents()[i].setx(phaseArray[0].getComponents()[i].getx() - // / phaseArray[0].getComponents()[i].getK()); - // System.out.println("comp: " + j + i + " " + c[j][i].getx()); - } - // getPhase(j).normalize(); - } + public final double getBeta(int phase) { + return beta[phaseIndex[phase]]; } /** {@inheritDoc} */ @Override - public void reset_x_y() { - for (int j = 0; j < numberOfPhases; j++) { - for (int i = 0; i < numberOfComponents; i++) { - getPhase(j).getComponents()[i].setx(phaseArray[phaseIndex[0]].getComponents()[i].getz()); - } - } + public String[] getCapeOpenProperties10() { + return CapeOpenProperties10; } /** {@inheritDoc} */ @Override - public void reset() { - for (int i = 0; i < numberOfComponents; i++) { - addComponent(getPhase(0).getComponent(i).getComponentName(), - -getPhase(0).getComponent(i).getNumberOfmoles()); - } + public String[] getCapeOpenProperties11() { + return CapeOpenProperties11; } /** {@inheritDoc} */ @Override - public boolean hasSolidPhase() { - for (int i = 0; i < numberOfPhases; i++) { - if (getPhase(i).getPhaseTypeName().equals("solid")) { - return true; - } + public String[] getCASNumbers() { + String[] names = new String[numberOfComponents]; + + for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { + names[compNumb] = getPhase(0).getComponent(compNumb).getCASnumber(); } - return false; + return names; } /** {@inheritDoc} */ @Override - public void init(int type) { - isInitialized = true; - if (numericDerivatives) { - initNumeric(type); - } else { - initAnalytic(type); - } + public neqsim.thermo.characterization.Characterise getCharacterization() { + return characterization; } /** {@inheritDoc} */ @Override - public void initProperties() { - if (!isInitialized) { - init(0); - setNumberOfPhases(1); - } - initThermoProperties(); - initPhysicalProperties(); + public ChemicalReactionOperations getChemicalReactionOperations() { + return chemicalReactionOperations; } /** {@inheritDoc} */ @Override - public void init(int type, int phase) { - isInitialized = true; - if (numericDerivatives) { - initNumeric(type, phase); - } else { - initAnalytic(type, phase); + public String[] getCompFormulaes() { + String[] formula = new String[numberOfComponents]; + + for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { + formula[compNumb] = getPhase(0).getComponent(compNumb).getFormulae(); } + return formula; } - /** - *

- * initAnalytic. - *

- * - * @param type a int. 0 to initialize and 1 to reset, 2 to calculate T and P derivatives, 3 to - * calculate all derivatives and 4 to calculate all derivatives numerically - */ - public void initAnalytic(int type) { - if (type == 0) { - setNumberOfPhases(getMaxNumberOfPhases()); - for (int i = 0; i < numberOfPhases; i++) { - phaseType[i] = 0; - beta[i] = 1.0; - phaseIndex[i] = i; - } - phaseType[0] = 1; - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - getPhase(i).init(getTotalNumberOfMoles(), numberOfComponents, type, - phaseType[phaseIndex[i]], beta[phaseIndex[i]]); - } - } - numberOfPhases = 2; - } else if (type == 1) { - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - getPhase(i).init(getTotalNumberOfMoles(), numberOfComponents, 1, phaseType[phaseIndex[i]], - beta[phaseIndex[i]]); - } - } - - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - for (int j = 0; j < numberOfComponents; j++) { - getPhase(i).getComponents()[j].fugcoef(getPhase(i)); - } - } - } - } else if (type == 2) {// calculate T and P derivatives - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - getPhase(i).init(getTotalNumberOfMoles(), numberOfComponents, 2, phaseType[phaseIndex[i]], - beta[phaseIndex[i]]); - } - } + /** {@inheritDoc} */ + @Override + public String[] getCompIDs() { + String[] ids = new String[numberOfComponents]; - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - for (int j = 0; j < numberOfComponents; j++) { - getPhase(i).getComponents()[j].fugcoef(getPhase(i)); - getPhase(i).getComponents()[j].logfugcoefdT(getPhase(i)); - getPhase(i).getComponents()[j].logfugcoefdP(getPhase(i)); - } - } - } - } else if (type == 3) {// calculate all derivatives - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - getPhase(i).init(getTotalNumberOfMoles(), numberOfComponents, 3, phaseType[phaseIndex[i]], - beta[phaseIndex[i]]); - } - } + for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { + ids[compNumb] = Integer.toString(getPhase(0).getComponent(compNumb).getIndex()); + } + return ids; + } - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - for (int j = 0; j < numberOfComponents; j++) { - getPhase(i).getComponents()[j].fugcoef(getPhase(i)); - getPhase(i).getComponents()[j].logfugcoefdT(getPhase(i)); - getPhase(i).getComponents()[j].logfugcoefdP(getPhase(i)); - getPhase(i).getComponents()[j].logfugcoefdN(getPhase(i)); - } - } - } - } else if (type == 4) { // calculate all derivatives numerically - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { + /** {@inheritDoc} */ + @Override + public String[] getCompNames() { + String[] names = new String[numberOfComponents]; - getPhase(i).init(getTotalNumberOfMoles(), numberOfComponents, 3, phaseType[phaseIndex[i]], - beta[phaseIndex[i]]); - } - } - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - for (int j = 0; j < numberOfComponents; j++) { - getPhase(i).getComponents()[j].fugcoef(getPhase(i)); - getPhase(i).getComponents()[j].fugcoefDiffTempNumeric(getPhase(i), numberOfComponents, - getPhase(i).getTemperature(), getPhase(i).getPressure()); - getPhase(i).getComponents()[j].fugcoefDiffPresNumeric(getPhase(i), numberOfComponents, - getPhase(i).getTemperature(), getPhase(i).getPressure()); - } - } - } + for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { + names[compNumb] = getPhase(0).getComponent(compNumb).getComponentName(); } + return names; + } - for (int i = 1; i < numberOfPhases; i++) { - if (IsPhase(i)) { - if (getPhase(i).getPhaseTypeName().equals("gas")) { - getPhase(i).setPhaseTypeName("oil"); - } - } - } + /** {@inheritDoc} */ + @Override + public String getComponentNameTag() { + return componentNameTag; } /** + * {@inheritDoc} + * *

- * initAnalytic. + * need to call initPhysicalProperties() before this method is called *

- * - * @param type a int - * @param phase a int */ - public void initAnalytic(int type, int phase) { - if (type == 0) { - beta[0] = 1.0; - phaseIndex[phase] = phase; - } - - if (IsPhase(phase)) { - if (type == 0) { - getPhase(phase).init(getTotalNumberOfMoles(), numberOfComponents, 0, - phaseType[phaseIndex[phase]], beta[phaseIndex[phase]]); - } else if (type == 1) { - getPhase(phase).init(getTotalNumberOfMoles(), numberOfComponents, 1, - phaseType[phaseIndex[phase]], beta[phaseIndex[phase]]); - - for (int j = 0; j < numberOfComponents; j++) { - getPhase(phase).getComponents()[j].fugcoef(getPhase(phase)); - } - } else if (type == 2) { - getPhase(phase).init(getTotalNumberOfMoles(), numberOfComponents, 2, - phaseType[phaseIndex[phase]], beta[phaseIndex[phase]]); - - for (int j = 0; j < numberOfComponents; j++) { - getPhase(phase).getComponents()[j].fugcoef(getPhase(phase)); - getPhase(phase).getComponents()[j].logfugcoefdT(getPhase(phase)); - getPhase(phase).getComponents()[j].logfugcoefdP(getPhase(phase)); - } - } else if (type == 3) { - getPhase(phase).init(getTotalNumberOfMoles(), numberOfComponents, 3, - phaseType[phaseIndex[phase]], beta[phaseIndex[phase]]); - - for (int j = 0; j < numberOfComponents; j++) { - getPhase(phase).getComponents()[j].fugcoef(getPhase(phase)); - getPhase(phase).getComponents()[j].logfugcoefdT(getPhase(phase)); - getPhase(phase).getComponents()[j].logfugcoefdP(getPhase(phase)); - getPhase(phase).getComponents()[j].logfugcoefdN(getPhase(phase)); - } - } + @Override + public double getCorrectedVolume() { + double volume = 0; + for (int i = 0; i < numberOfPhases; i++) { + volume += getPhase(i).getMolarMass() / getPhase(i).getPhysicalProperties().getDensity() + * getPhase(i).getNumberOfMolesInPhase(); } + return volume; + } - for (PhaseInterface tmpPhase : phaseArray) { - if (tmpPhase != null && tmpPhase.getPhaseTypeName().equals("gas")) { - tmpPhase.setPhaseTypeName("oil"); - } - } + /** {@inheritDoc} */ + @Override + public double getCorrectedVolumeFraction(int phaseNumber) { + return getPhase(phaseNumber).getCorrectedVolume() / getCorrectedVolume(); } - /** - *

- * initNumeric. - *

- * - * @param type a int - */ - public void initNumeric(int type) { - initNumeric(type, 1); + /** {@inheritDoc} */ + @Override + public double getCp() { + double cP = 0.0; + for (int i = 0; i < numberOfPhases; i++) { + cP += getPhase(i).getCp(); + } + return cP; } - /** - *

- * initNumeric. - *

- * - * @param type a int - * @param phasen a int - */ - public void initNumeric(int type, int phasen) { - if (type < 2) { - initAnalytic(type); - } else if (type >= 2) { - double[][] gasfug = new double[2][getPhases()[0].getNumberOfComponents()]; - double[][] liqfug = new double[2][getPhases()[0].getNumberOfComponents()]; - - double dt = getTemperature() / 1.0e6; - setTemperature(getTemperature() + dt); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - gasfug[0][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); - liqfug[0][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); - } - - setTemperature(getTemperature() - 2 * dt); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - gasfug[1][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); - liqfug[1][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); - } - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - getPhase(0).getComponent(i).setdfugdt((gasfug[0][i] - gasfug[1][i]) / (2 * dt)); - getPhase(1).getComponent(i).setdfugdt((liqfug[0][i] - liqfug[1][i]) / (2 * dt)); - } - - setTemperature(getTemperature() + dt); - - double dp = getPressure() / 1.0e6; - setPressure(getPressure() + dp); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - gasfug[0][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); - liqfug[0][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); - } - - setPressure(getPressure() - 2 * dp); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - gasfug[1][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); - liqfug[1][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); - } - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - getPhase(0).getComponent(i).setdfugdp((gasfug[0][i] - gasfug[1][i]) / (2 * dp)); - getPhase(1).getComponent(i).setdfugdp((liqfug[0][i] - liqfug[1][i]) / (2 * dp)); - } - - setPressure(getPressure() + dp); - init(1); - - if (type == 3) { - for (int phase = 0; phase < 2; phase++) { - for (int k = 0; k < getPhases()[0].getNumberOfComponents(); k++) { - double dn = getPhases()[phase].getComponents()[k].getNumberOfMolesInPhase() / 1.0e6; - - addComponent(k, dn, phase); - // initBeta(); - init_x_y(); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - liqfug[0][i] = - Math.log(getPhases()[phase].getComponents()[i].getFugacityCoefficient()); - } - - addComponent(k, -2.0 * dn, phase); - // initBeta(); - init_x_y(); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - // gasfug[1][i] = - // Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); - liqfug[1][i] = - Math.log(getPhases()[phase].getComponents()[i].getFugacityCoefficient()); - } - addComponent(k, dn, phase); - init_x_y(); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - getPhase(phase).getComponent(k).setdfugdn(i, - (liqfug[0][i] - liqfug[1][i]) / (2 * dn)); - getPhase(phase).getComponent(k).setdfugdx(i, (liqfug[0][i] - liqfug[1][i]) / (2 * dn) - * getPhase(phase).getNumberOfMolesInPhase()); - } - // initBeta(); - } - } - } + /** {@inheritDoc} */ + @Override + public double getCp(String unit) { + double refCp = getCp(); // Cp in J/K + double conversionFactor = 1.0; + switch (unit) { + case "J/K": + conversionFactor = 1.0; + break; + case "J/molK": + conversionFactor = 1.0 / getTotalNumberOfMoles(); + break; + case "J/kgK": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass(); + break; + case "kJ/kgK": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; + break; + case "btu/lbmole-F": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0 * 0.2388; + break; + default: + throw new RuntimeException("unit not supported " + unit); } + return refCp * conversionFactor; } /** {@inheritDoc} */ @Override - public void initNumeric() { - double[][] gasfug = new double[2][getPhases()[0].getNumberOfComponents()]; - double[][] liqfug = new double[2][getPhases()[0].getNumberOfComponents()]; - double[][] gasnumericDfugdt = new double[2][getPhases()[0].getNumberOfComponents()]; - double[][] liqnumericDfugdt = new double[2][getPhases()[0].getNumberOfComponents()]; - double[][] gasnumericDfugdp = new double[2][getPhases()[0].getNumberOfComponents()]; - double[][] liqnumericDfugdp = new double[2][getPhases()[0].getNumberOfComponents()]; - double[][][] gasnumericDfugdn = new double[2][getPhases()[0] - .getNumberOfComponents()][getPhases()[0].getNumberOfComponents()]; - double[][][] liqnumericDfugdn = new double[2][getPhases()[0] - .getNumberOfComponents()][getPhases()[0].getNumberOfComponents()]; - - double dt = getTemperature() / 1e5; - setTemperature(getTemperature() + dt); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - gasfug[0][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); - liqfug[0][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); + public double getCv() { + double cv = 0.0; + for (int i = 0; i < numberOfPhases; i++) { + cv += getPhase(i).getCv(); } + return cv; + } - setTemperature(getTemperature() - 2 * dt); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - gasfug[1][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); - liqfug[1][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); - gasnumericDfugdt[0][i] = (gasfug[0][i] - gasfug[1][i]) / (2 * dt); - liqnumericDfugdt[0][i] = (liqfug[0][i] - liqfug[1][i]) / (2 * dt); - phaseArray[0].getComponents()[i].setdfugdt(gasnumericDfugdt[0][i]); - phaseArray[1].getComponents()[i].setdfugdt(liqnumericDfugdt[0][i]); + /** {@inheritDoc} */ + @Override + public double getCv(String unit) { + double refCv = getCv(); // enthalpy in J + double conversionFactor = 1.0; + switch (unit) { + case "J/K": + conversionFactor = 1.0; + break; + case "J/molK": + conversionFactor = 1.0 / getTotalNumberOfMoles(); + break; + case "J/kgK": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass(); + break; + case "kJ/kgK": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; + break; + case "btu/lbmole-F": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0 * 0.2388; + break; + default: + throw new RuntimeException("unit not supported " + unit); } + return refCv * conversionFactor; + } - setTemperature(getTemperature() + dt); - - double dp = getPressure() / 1e5; - setPressure(getPressure() + dp); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - gasfug[0][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); - liqfug[0][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); + /** {@inheritDoc} */ + @Override + public double getDensity() { + double density = 0; + for (int i = 0; i < numberOfPhases; i++) { + density += + 1.0e5 * (getPhase(i).getMolarMass() * beta[phaseIndex[i]] / getPhase(i).getMolarVolume()); } + return density; + } - setPressure(getPressure() - 2 * dp); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - gasfug[1][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); - liqfug[1][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); - gasnumericDfugdp[0][i] = (gasfug[0][i] - gasfug[1][i]) / (2 * dp); - liqnumericDfugdp[0][i] = (liqfug[0][i] - liqfug[1][i]) / (2 * dp); - phaseArray[0].getComponents()[i].setdfugdp(gasnumericDfugdp[0][i]); - phaseArray[1].getComponents()[i].setdfugdp(liqnumericDfugdp[0][i]); + /** {@inheritDoc} */ + @Override + public double getDensity(String unit) { + double density = 0; + for (int i = 0; i < getNumberOfPhases(); i++) { + density += + getPhase(i).getVolume() / getVolume() * getPhase(i).getPhysicalProperties().getDensity(); } - - setPressure(getPressure() + dp); - init(1); - - for (int phase = 0; phase < 2; phase++) { - for (int k = 0; k < getPhases()[0].getNumberOfComponents(); k++) { - double dn = getPhases()[phase].getComponents()[k].getNumberOfMolesInPhase() / 1.0e6; - if (dn < 1e-12) { - dn = 1e-12; - } - - addComponent(k, dn, phase); - // initBeta(); - init_x_y(); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - liqfug[0][i] = Math.log(getPhases()[phase].getComponents()[i].getFugacityCoefficient()); - } - - addComponent(k, -2.0 * dn, phase); - // initBeta(); - init_x_y(); - init(1); - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - // gasfug[1][i] = - // Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); - liqfug[1][i] = Math.log(getPhases()[phase].getComponents()[i].getFugacityCoefficient()); - } - - for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { - if (phase == 0) { - gasnumericDfugdn[0][k][i] = (liqfug[0][i] - liqfug[1][i]) / (2 * dn); - phaseArray[0].getComponents()[i].setdfugdn(k, gasnumericDfugdn[0][k][i]); - phaseArray[0].getComponents()[i].setdfugdx(k, - gasnumericDfugdn[0][k][i] * phaseArray[0].getNumberOfMolesInPhase()); - } - - if (phase == 1) { - liqnumericDfugdn[0][k][i] = (liqfug[0][i] - liqfug[1][i]) / (2 * dn); - phaseArray[1].getComponents()[i].setdfugdn(k, liqnumericDfugdn[0][k][i]); - phaseArray[1].getComponents()[i].setdfugdx(k, - liqnumericDfugdn[0][k][i] * phaseArray[1].getNumberOfMolesInPhase()); - } - } - - addComponent(k, dn, phase); - // initBeta(); - init_x_y(); - init(1); - } + double refDensity = density; // density in kg/m3 + double conversionFactor = 1.0; + switch (unit) { + case "kg/m3": + conversionFactor = 1.0; + break; + case "lb/ft3": + conversionFactor = 0.0624279606; + break; + case "kg/Sm3": + return getMolarMass() * ThermodynamicConstantsInterface.atm + / ThermodynamicConstantsInterface.R + / ThermodynamicConstantsInterface.standardStateTemperature; + case "mol/m3": + conversionFactor = 1.0 / getMolarMass(); + break; + default: + throw new RuntimeException("unit not supported " + unit); } + return refDensity * conversionFactor; } - /** {@inheritDoc} */ - @Override - public void initPhysicalProperties() { + /** + * getPdVtn. + * + * @return dpdv + */ + public double getdPdVtn() { + double dPdV = 0.0; for (int i = 0; i < numberOfPhases; i++) { - getPhase(i).initPhysicalProperties(); + if (isPhase(i)) { + dPdV += getPhase(i).getdPdVTn() * getPhase(i).getVolume() / getVolume(); + } } - calcInterfaceProperties(); + return dPdV; } /** {@inheritDoc} */ @Override - public void initPhysicalProperties(String propertyName) { + public double getdVdPtn() { + double dVdP = 0.0; for (int i = 0; i < numberOfPhases; i++) { - getPhase(i).initPhysicalProperties(propertyName); + if (isPhase(i)) { + dVdP += 1.0 / getPhase(i).getdPdVTn(); + } } + return dVdP; } /** {@inheritDoc} */ @Override - public void resetPhysicalProperties() { - for (PhaseInterface tmpPhase : phaseArray) { - if (tmpPhase != null) { - tmpPhase.resetPhysicalProperties(); + public double getdVdTpn() { + double dVdT = 0.0; + for (int i = 0; i < numberOfPhases; i++) { + if (isPhase(i)) { + dVdT += -getPhase(i).getdPdTVn() / getPhase(i).getdPdVTn(); } } + return dVdT; } /** {@inheritDoc} */ @Override - public void initRefPhases() { - for (int i = 0; i < numberOfPhases; i++) { - getPhase(i).initRefPhases(false); + public SystemInterface getEmptySystemClone() { + int phaseNumber = 0; + + SystemInterface newSystem = this.clone(); + + for (int j = 0; j < getMaxNumberOfPhases(); j++) { + phaseNumber = j; + for (int i = 0; i < getPhase(j).getNumberOfComponents(); i++) { + newSystem.getPhase(j).getComponents()[i].setNumberOfmoles( + getPhase(phaseNumber).getComponents()[i].getNumberOfMolesInPhase() / 1.0e30); + newSystem.getPhase(j).getComponents()[i].setNumberOfMolesInPhase( + getPhase(phaseNumber).getComponents()[i].getNumberOfMolesInPhase() / 1.0e30); + } } + + newSystem.setTotalNumberOfMoles(getPhase(phaseNumber).getNumberOfMolesInPhase() / 1.0e30); + + newSystem.init(0); + // newSystem.init(1); + return newSystem; } /** {@inheritDoc} */ @Override - public void setPhysicalPropertyModel(int type) { + public double getEnthalpy() { + double enthalpy = 0; for (int i = 0; i < numberOfPhases; i++) { - getPhase(i).setPhysicalProperties(type); + enthalpy += getPhase(i).getEnthalpy(); } + return enthalpy; } /** {@inheritDoc} */ @Override - public void chemicalReactionInit() { - chemicalReactionOperations = new ChemicalReactionOperations(this); - chemicalSystem = chemicalReactionOperations.hasRections(); + public double getEnthalpy(String unit) { + double refEnthalpy = getEnthalpy(); // enthalpy in J + double conversionFactor = 1.0; + switch (unit) { + case "J": + conversionFactor = 1.0; + break; + case "Btu": + conversionFactor = 0.00094781712; + break; + case "kJ/kmol": + case "J/mol": + conversionFactor = 1.0 / getTotalNumberOfMoles(); + break; + case "J/kg": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass(); + break; + case "kJ/kg": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; + break; + case "Btu/lbmol": + conversionFactor = 1.0 / getTotalNumberOfMoles() * 0.429923; + break; + default: + throw new RuntimeException("unit not supported " + unit); + } + return refEnthalpy * conversionFactor; } /** {@inheritDoc} */ @Override - public ChemicalReactionOperations getChemicalReactionOperations() { - return chemicalReactionOperations; + public double getEntropy() { + double entropy = 0; + for (int i = 0; i < numberOfPhases; i++) { + entropy += getPhase(i).getEntropy(); + } + return entropy; } /** {@inheritDoc} */ @Override - public final PhaseInterface getGasPhase() { - for (int phase = 0; phase < numberOfPhases; phase++) { - if (phaseArray[phaseIndex[phase]].getPhaseType() == 1) { - return phaseArray[phase]; - } + public double getEntropy(String unit) { + double refEntropy = getEntropy(); // entropy in J/K + double conversionFactor = 1.0; + switch (unit) { + case "J/K": + conversionFactor = 1.0; + break; + case "J/molK": + conversionFactor = 1.0 / getTotalNumberOfMoles(); + break; + case "J/kgK": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass(); + break; + case "kJ/kgK": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; + break; + case "btu/lb-F": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0 * 0.2388; + break; + default: + throw new RuntimeException("unit not supported " + unit); } - logger.info("No gas phase at current state."); - return null; + return refEntropy * conversionFactor; } /** {@inheritDoc} */ @Override - public final PhaseInterface getLiquidPhase() { - for (int phase = 0; phase < numberOfPhases; phase++) { - if (phaseArray[phaseIndex[phase]].getPhaseType() == 0) { - return phaseArray[phase]; - } - } - logger.info("No liquid phase at current state."); - return null; + public double getExergy(double temperatureOfSurroundings) { + double getExergy = getEnthalpy() - temperatureOfSurroundings * getEntropy(); + return getExergy; } - - /** @{inheritdoc} */ - /** - * @return IsPhase true or false - */ + /** {@inheritDoc} */ @Override - public boolean IsPhase(int i) { - if (i > phaseArray.length) { - return false; + public double getExergy(double temperatureOfSurroundings, String exergyUnit) { + double refExergy = getExergy(temperatureOfSurroundings); // exergy in J + double conversionFactor = 1.0; + switch (exergyUnit) { + case "J": + conversionFactor = 1.0; + break; + case "J/mol": + conversionFactor = 1.0 / getTotalNumberOfMoles(); + break; + case "J/kg": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass(); + break; + case "kJ/kg": + conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; + break; + default: + break; } - - // getPhase(i) without try/catch - return phaseArray[phaseIndex[i]] != null; + return refExergy * conversionFactor; } /** {@inheritDoc} */ @Override - public final PhaseInterface getPhase(int i) { - if (i >= getNumberOfPhases() && phaseArray[phaseIndex[i]] == null) { - throw new RuntimeException("Can not return phase number " + i - + ". Current number of phases are " + getNumberOfPhases()); + public double getFlowRate(String flowunit) { + if (flowunit.equals("kg/sec")) { + return totalNumberOfMoles * getMolarMass(); + } else if (flowunit.equals("kg/min")) { + return totalNumberOfMoles * getMolarMass() * 60.0; + } else if (flowunit.equals("kg/hr")) { + return totalNumberOfMoles * getMolarMass() * 3600.0; + } else if (flowunit.equals("kg/day")) { + return totalNumberOfMoles * getMolarMass() * 3600.0 * 24.0; + } else if (flowunit.equals("m3/sec")) { + initPhysicalProperties("density"); + return totalNumberOfMoles * getMolarMass() / getDensity("kg/m3"); + // return getVolume() / 1.0e5; + } else if (flowunit.equals("m3/min")) { + initPhysicalProperties("density"); + return totalNumberOfMoles * getMolarMass() * 60.0 / getDensity("kg/m3"); + // return getVolume() / 1.0e5 * 60.0; + } else if (flowunit.equals("m3/hr")) { + // return getVolume() / 1.0e5 * 3600.0; + initPhysicalProperties("density"); + return totalNumberOfMoles * getMolarMass() * 3600.0 / getDensity("kg/m3"); + } else if (flowunit.equals("idSm3/hr")) { + return totalNumberOfMoles * getMolarMass() * 3600.0 / getIdealLiquidDensity("kg/m3"); + } else if (flowunit.equals("gallons/min")) { + initPhysicalProperties("density"); + return totalNumberOfMoles * getMolarMass() * 60.0 / getDensity("kg/m3") * 1000 / 3.78541178; + } else if (flowunit.equals("Sm3/sec")) { + return totalNumberOfMoles * ThermodynamicConstantsInterface.R + * ThermodynamicConstantsInterface.standardStateTemperature + / ThermodynamicConstantsInterface.atm; + } else if (flowunit.equals("Sm3/hr")) { + return totalNumberOfMoles * 3600.0 * ThermodynamicConstantsInterface.R + * ThermodynamicConstantsInterface.standardStateTemperature + / ThermodynamicConstantsInterface.atm; + } else if (flowunit.equals("Sm3/day")) { + return totalNumberOfMoles * 3600.0 * 24.0 * ThermodynamicConstantsInterface.R + * ThermodynamicConstantsInterface.standardStateTemperature + / ThermodynamicConstantsInterface.atm; + } else if (flowunit.equals("MSm3/day")) { + return totalNumberOfMoles * 3600.0 * 24.0 * ThermodynamicConstantsInterface.R + * ThermodynamicConstantsInterface.standardStateTemperature + / ThermodynamicConstantsInterface.atm / 1.0e6; + } else if (flowunit.equals("MSm3/hr")) { + return totalNumberOfMoles * 3600.0 * ThermodynamicConstantsInterface.R + * ThermodynamicConstantsInterface.standardStateTemperature + / ThermodynamicConstantsInterface.atm / 1.0e6; + } else if (flowunit.equals("mole/sec")) { + return totalNumberOfMoles; + } else if (flowunit.equals("mole/min")) { + return totalNumberOfMoles * 60.0; + } else if (flowunit.equals("mole/hr")) { + return totalNumberOfMoles * 3600.0; + } else if (flowunit.equals("lbmole/hr")) { + return totalNumberOfMoles * 3600.0 / 1000.0 * 2.205; + } else if (flowunit.equals("lb/hr")) { + return totalNumberOfMoles * getMolarMass() * 60.0 * 2.20462262; + } else if (flowunit.equals("barrel/day")) { + return totalNumberOfMoles * getMolarMass() * 60.0 * 2.20462262 * 0.068; + } else { + throw new RuntimeException("failed.. unit: " + flowunit + " not supported"); } - return phaseArray[phaseIndex[i]]; } /** {@inheritDoc} */ @Override - public final boolean isChemicalSystem() { - return chemicalSystem; + public String getFluidInfo() { + return fluidInfo; } /** {@inheritDoc} */ @Override - public final void isChemicalSystem(boolean temp) { - chemicalSystem = temp; - } - - /** - *

- * getAntoineVaporPressure. - *

- * - * @param temp a double - * @return a double - */ - public double getAntoineVaporPressure(double temp) { - return phaseArray[0].getAntoineVaporPressure(temp); + public String getFluidName() { + return fluidName; } /** {@inheritDoc} */ @Override - public final double getTC() { - return criticalTemperature; + public double getGamma() { + return getCp() / getCv(); } /** {@inheritDoc} */ @Override - public final double getPC() { - return criticalPressure; + public final PhaseInterface getGasPhase() { + for (int phase = 0; phase < numberOfPhases; phase++) { + if (phaseArray[phaseIndex[phase]].getType() == PhaseType.GAS) { + return phaseArray[phase]; + } + } + logger.info("No gas phase at current state."); + return null; } /** {@inheritDoc} */ @Override - public final void setTC(double TC) { - criticalTemperature = TC; + public double getGibbsEnergy() { + double gibbsEnergy = 0; + for (int i = 0; i < numberOfPhases; i++) { + gibbsEnergy += getPhase(i).getGibbsEnergy(); + } + return gibbsEnergy; } /** {@inheritDoc} */ @Override - public final void setPC(double PC) { - criticalPressure = PC; + public double getHeatOfVaporization() { + if (numberOfPhases < 2) { + return 0; + } else { + return getPhase(0).getEnthalpy() / getPhase(0).getNumberOfMolesInPhase() + - getPhase(1).getEnthalpy() / getPhase(1).getNumberOfMolesInPhase(); + } } /** {@inheritDoc} */ @Override - public final void setMixingRule(int type) { - mixingRule = type; - if (numberOfPhases < 4) { - resetPhysicalProperties();// initPhysicalProperties(); - } - for (int i = 0; i < maxNumberOfPhases; i++) { - if (IsPhase(i)) { - getPhase(i).setMixingRule(type); - getPhase(i).initPhysicalProperties(); - // getPhase(i).getPhysicalProperties().getMixingRule().initMixingRules(getPhase(i)); - } - } - } - - /** - *

- * setMixingRuleGEmodel. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setMixingRuleGEmodel(String name) { - for (PhaseInterface tmpPhase : phaseArray) { - if (tmpPhase != null) { - tmpPhase.setMixingRuleGEModel(name); - } + public double getHelmholtzEnergy() { + double helmholtzEnergy = 0; + for (int i = 0; i < numberOfPhases; i++) { + helmholtzEnergy += getPhase(i).getHelmholtzEnergy(); } + return helmholtzEnergy; } /** {@inheritDoc} */ @Override - public void setMixingRule(String typename, String GEmodel) { - setMixingRuleGEmodel(GEmodel); - setMixingRule(typename); + public boolean getHydrateCheck() { + return hydrateCheck; } /** {@inheritDoc} */ @Override - public void setMixingRule(String typename) { - int var = 0; - if (typename.equals("no")) { - var = 1; - } else if (typename.equals("classic")) { - var = 2; - } else if (typename.equals("HV")) { - var = 4; - } else if (typename.equals("WS")) { - var = 5; - } else if (typename.equals("CPA-Mix")) { - var = 7; - } else if (typename.equals("classic-T")) { - var = 8; - } else if (typename.equals("classic-T-cpa")) { - var = 9; - } else if (typename.equals("classic-Tx-cpa")) { - var = 10; - } else { - var = 1; + public double getIdealLiquidDensity(String unit) { + double normalLiquidDensity = 0.0; + double molarMass = getMolarMass(); + for (int i = 0; i < getNumberOfComponents(); i++) { + normalLiquidDensity += getComponent(i).getNormalLiquidDensity() * getComponent(i).getz() + * getComponent(i).getMolarMass() / molarMass; + } + switch (unit) { + case "gr/cm3": + return normalLiquidDensity; + case "kg/m3": + return normalLiquidDensity * 1000.0; + default: + throw new RuntimeException("unit not supported " + unit); } - this.setMixingRule(var); } /** {@inheritDoc} */ @Override - public String[] getComponentNames() { - ArrayList components = new ArrayList(); - - for (int j = 0; j < numberOfComponents; j++) { - components.add(phaseArray[0].getComponents()[j].getName()); - } - String[] componentList = new String[components.size()]; - for (int j = 0; j < numberOfComponents; j++) { - componentList[j] = components.get(j); - } - return componentList; + public int getInitType() { + return initType; } /** {@inheritDoc} */ @Override - public void setNumberOfPhases(int number) { - this.numberOfPhases = number; - if (getMaxNumberOfPhases() < numberOfPhases) { - setMaxNumberOfPhases(number); - } + public double getInterfacialTension(int phase1, int phase2) { + return interfaceProp.getSurfaceTension(phase1, phase2); } /** {@inheritDoc} */ @Override - public void useVolumeCorrection(boolean volcor) { - for (PhaseInterface tmpPhase : phaseArray) { - if (tmpPhase != null) { - tmpPhase.useVolumeCorrection(volcor); - } - } + public double getInterfacialTension(int phase1, int phase2, String unit) { + return interfaceProp.getSurfaceTension(phase1, phase2, unit); } /** {@inheritDoc} */ @Override - public final PhaseInterface[] getPhases() { - return phaseArray; + public double getInterfacialTension(String phase1, String phase2) { + if (hasPhaseType(phase1) && hasPhaseType(phase2)) { + return interfaceProp.getSurfaceTension(getPhaseNumberOfPhase(phase1), + getPhaseNumberOfPhase(phase2)); + } else { + return Double.NaN; + } } /** {@inheritDoc} */ @Override - public double getGibbsEnergy() { - double gibbsEnergy = 0; + public double getInternalEnergy() { + double internalEnergy = 0; for (int i = 0; i < numberOfPhases; i++) { - gibbsEnergy += getPhase(i).getGibbsEnergy(); + internalEnergy += getPhase(i).getInternalEnergy(); } - return gibbsEnergy; + return internalEnergy; } /** {@inheritDoc} */ @Override - public double getExergy(double temperatureOfSurroundings, String exergyUnit) { - double refExergy = getExergy(temperatureOfSurroundings); // exergy in J + public double getInternalEnergy(String unit) { + double refEnthalpy = getInternalEnergy(); // enthalpy in J double conversionFactor = 1.0; - switch (exergyUnit) { + switch (unit) { case "J": conversionFactor = 1.0; break; - case "J/mol": + case "J/mole": conversionFactor = 1.0 / getTotalNumberOfMoles(); break; case "J/kg": @@ -2430,78 +2293,61 @@ public double getExergy(double temperatureOfSurroundings, String exergyUnit) { conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; break; default: - break; + throw new RuntimeException("unit not supported " + unit); } - return refExergy * conversionFactor; + return refEnthalpy * conversionFactor; } /** {@inheritDoc} */ @Override - public double getExergy(double temperatureOfSurroundings) { - double getExergy = getEnthalpy() - temperatureOfSurroundings * getEntropy(); - return getExergy; + public InterphasePropertiesInterface getInterphaseProperties() { + return interfaceProp; } /** {@inheritDoc} */ @Override - public double getEnthalpy() { - double enthalpy = 0; + public double getJouleThomsonCoefficient() { + double JTcoef = 0; for (int i = 0; i < numberOfPhases; i++) { - enthalpy += getPhase(i).getEnthalpy(); + JTcoef += getBeta(i) * getPhase(i).getJouleThomsonCoefficient(); } - return enthalpy; + return JTcoef; } /** {@inheritDoc} */ @Override - public double getEnthalpy(String unit) { - double refEnthalpy = getEnthalpy(); // enthalpy in J + public double getJouleThomsonCoefficient(String unit) { + double JTcoef = getJouleThomsonCoefficient(); double conversionFactor = 1.0; switch (unit) { - case "J": + case "K/bar": conversionFactor = 1.0; break; - case "J/mol": - conversionFactor = 1.0 / getTotalNumberOfMoles(); + case "C/bar": + conversionFactor = 1.0; break; - case "J/kg": - conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass(); + case "K/Pa": + conversionFactor = 1.0e-5; break; - case "kJ/kg": - conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; + case "F/psi": + conversionFactor = 1.8 * 1.0 / 14.503773773; break; default: - break; + throw new RuntimeException("unit not supported " + unit); } - return refEnthalpy * conversionFactor; + return JTcoef * conversionFactor; } /** {@inheritDoc} */ @Override - public double getViscosity() { - double visc = 0; - for (int i = 0; i < numberOfPhases; i++) { - visc += beta[phaseIndex[i]] * getPhase(i).getPhysicalProperties().getViscosity(); - } - return visc; + public double getKappa() { + return -getCp() / getCv() * getVolume() / getPressure() * getdPdVtn(); } /** {@inheritDoc} */ @Override - public double getViscosity(String unit) { - double refViscosity = getViscosity(); // viscosity in kg/msec - double conversionFactor = 1.0; - switch (unit) { - case "kg/msec": - conversionFactor = 1.0; - break; - case "cP": - conversionFactor = 1.0e3; - break; - default: - throw new RuntimeException(); - } - return refViscosity * conversionFactor; + public double getKinematicViscosity() { + return getViscosity() / getDensity(); } /** {@inheritDoc} */ @@ -2514,151 +2360,143 @@ public double getKinematicViscosity(String unit) { conversionFactor = 1.0; break; default: - throw new RuntimeException(); + throw new RuntimeException("unit not supported " + unit); } return refViscosity * conversionFactor; } /** {@inheritDoc} */ @Override - public double getKinematicViscosity() { - return getViscosity() / getDensity(); + public final PhaseInterface getLiquidPhase() { + for (int phase = 0; phase < numberOfPhases; phase++) { + if (phaseArray[phaseIndex[phase]].getType() == PhaseType.LIQUID) { + return phaseArray[phase]; + } + } + logger.info("No liquid phase at current state."); + return null; } /** {@inheritDoc} */ - @Deprecated @Override - public double getConductivity() { - double cond = 0; - for (int i = 0; i < numberOfPhases; i++) { - cond += beta[phaseIndex[i]] * getPhase(i).getPhysicalProperties().getConductivity(); + public double getLiquidVolume() { + double totFlow = 0; + + for (int kj = 0; kj < numberOfPhases; kj++) { + if (getPhase(kj).getType() != PhaseType.GAS) { + totFlow += getPhase(kj).getVolume(); + } + } + return totFlow; + } + + /** {@inheritDoc} */ + @Override + public PhaseInterface getLowestGibbsEnergyPhase() { + if (getPhase(0).getGibbsEnergy() < getPhase(1).getGibbsEnergy()) { + return getPhase(0); + } else { + return getPhase(1); } - return cond; } /** {@inheritDoc} */ - @Deprecated @Override - public double getConductivity(String unit) { - double refConductivity = getConductivity(); // conductivity in W/m*K + public double getMass(String unit) { double conversionFactor = 1.0; switch (unit) { - case "W/mK": + case "kg": conversionFactor = 1.0; break; - case "W/cmK": - conversionFactor = 0.01; + case "gr": + conversionFactor = 1000.0; + break; + case "tons": + conversionFactor = 1.0e-3; break; default: - throw new RuntimeException(); + throw new RuntimeException("unit not supported " + unit); } - return refConductivity * conversionFactor; + return conversionFactor * getTotalNumberOfMoles() * getMolarMass(); } /** {@inheritDoc} */ @Override - public double getThermalConductivity() { - double cond = 0; - for (int i = 0; i < numberOfPhases; i++) { - cond += beta[phaseIndex[i]] * getPhase(i).getPhysicalProperties().getConductivity(); - } - return cond; + public int getMaxNumberOfPhases() { + return maxNumberOfPhases; } /** {@inheritDoc} */ @Override - public double getThermalConductivity(String unit) { - double refConductivity = getConductivity(); // conductivity in W/m*K - double conversionFactor = 1.0; - switch (unit) { - case "W/mK": - conversionFactor = 1.0; - break; - case "W/cmK": - conversionFactor = 0.01; - break; - default: - throw new RuntimeException(); - } - return refConductivity * conversionFactor; + public int getMixingRule() { + return mixingRule; } /** {@inheritDoc} */ @Override - public double getInternalEnergy() { - double internalEnergy = 0; - for (int i = 0; i < numberOfPhases; i++) { - internalEnergy += getPhase(i).getInternalEnergy(); - } - return internalEnergy; + public String getMixingRuleName() { + return ((PhaseEosInterface) getPhase(0)).getMixingRule().getMixingRuleName(); } /** {@inheritDoc} */ @Override - public double getInternalEnergy(String unit) { - double refEnthalpy = getInternalEnergy(); // enthalpy in J - double conversionFactor = 1.0; - switch (unit) { - case "J": - conversionFactor = 1.0; - break; - case "J/mole": - conversionFactor = 1.0 / getTotalNumberOfMoles(); - break; - case "J/kg": - conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass(); - break; - case "kJ/kg": - conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; - break; - default: - break; - } - return refEnthalpy * conversionFactor; + public String getModelName() { + return modelName; } /** {@inheritDoc} */ @Override - public double getHelmholtzEnergy() { - double helmholtzEnergy = 0; - for (int i = 0; i < numberOfPhases; i++) { - helmholtzEnergy += getPhase(i).getHelmholtzEnergy(); + public double[] getMolarComposition() { + PhaseInterface phase = this.getPhase(0); + double[] comp = new double[phase.getNumberOfComponents()]; + + for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { + comp[compNumb] = phase.getComponent(compNumb).getz(); } - return helmholtzEnergy; + return comp; } /** {@inheritDoc} */ @Override - public double getEntropy() { - double entropy = 0; - for (int i = 0; i < numberOfPhases; i++) { - entropy += getPhase(i).getEntropy(); + public double getMolarMass() { + double tempVar = 0; + for (int i = 0; i < phaseArray[0].getNumberOfComponents(); i++) { + tempVar += + phaseArray[0].getComponents()[i].getz() * phaseArray[0].getComponents()[i].getMolarMass(); } - return entropy; + return tempVar; } /** {@inheritDoc} */ @Override - public double getEntropy(String unit) { - double refEntropy = getEntropy(); // entropy in J/K + public double getMolarMass(String unit) { + double refMolarMass = getMolarMass(); double conversionFactor = 1.0; switch (unit) { - case "J/K": + case "kg/mol": conversionFactor = 1.0; break; - case "J/molK": - conversionFactor = 1.0 / getTotalNumberOfMoles(); - break; - case "J/kgK": - conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass(); + case "gr/mol": + conversionFactor = 1000.0; break; - case "kJ/kgK": - conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; + case "lbm/lbmol": + conversionFactor = 1000.0; break; default: - break; + throw new RuntimeException("unit not supported " + unit); } - return refEntropy * conversionFactor; + return refMolarMass * conversionFactor; + } + + /** {@inheritDoc} */ + @Override + public double[] getMolarRate() { + double[] comp = new double[getPhase(0).getNumberOfComponents()]; + + for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { + comp[compNumb] = getPhase(0).getComponent(compNumb).getNumberOfmoles(); + } + return comp; } /** {@inheritDoc} */ @@ -2673,49 +2511,29 @@ public double getMolarVolume() { /** {@inheritDoc} */ @Override - public double getDensity() { - double density = 0; + public double getMolarVolume(String unit) { + double volume = 0; for (int i = 0; i < numberOfPhases; i++) { - density += - 1.0e5 * (getPhase(i).getMolarMass() * beta[phaseIndex[i]] / getPhase(i).getMolarVolume()); + volume += beta[phaseIndex[i]] * getPhase(i).getMolarVolume(unit); } - return density; + return volume; } /** {@inheritDoc} */ @Override - public double getDensity(String unit) { - double density = 0; - for (int i = 0; i < getNumberOfPhases(); i++) { - density += - getPhase(i).getVolume() / getVolume() * getPhase(i).getPhysicalProperties().getDensity(); - } - double refDensity = density; // density in kg/m3 - double conversionFactor = 1.0; - switch (unit) { - case "kg/m3": - conversionFactor = 1.0; - break; - case "kg/Sm3": - return getMolarMass() * 101325.0 / ThermodynamicConstantsInterface.R - / ThermodynamicConstantsInterface.standardStateTemperature; - case "mol/m3": - conversionFactor = 1.0 / getMolarMass(); - break; - default: - throw new RuntimeException(); + public double[] getMolecularWeights() { + double[] mm = new double[numberOfComponents]; + + for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { + mm[compNumb] = getPhase(0).getComponent(compNumb).getMolarMass() * 1e3; } - return refDensity * conversionFactor; + return mm; } /** {@inheritDoc} */ @Override - public double getZ() { - double Z = 0; - for (int i = 0; i < numberOfPhases; i++) { - Z += beta[phaseIndex[i]] * getPhase(i).getZ(); - } - return Z; + public double getMoleFraction(int phaseNumber) { + return getPhase(phaseNumber).getBeta(); } /** {@inheritDoc} */ @@ -2730,187 +2548,209 @@ public double getMoleFractionsSum() { /** {@inheritDoc} */ @Override - public double getMolarMass() { - double tempVar = 0; - for (int i = 0; i < phaseArray[0].getNumberOfComponents(); i++) { - tempVar += - phaseArray[0].getComponents()[i].getz() * phaseArray[0].getComponents()[i].getMolarMass(); + public double[] getNormalBoilingPointTemperatures() { + double[] bt = new double[numberOfComponents]; + + for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { + bt[compNumb] = getPhase(0).getComponent(compNumb).getNormalBoilingPoint(); } - return tempVar; + return bt; } /** {@inheritDoc} */ @Override - public double getMolarMass(String unit) { - double refMolarMass = getMolarMass(); - double conversionFactor = 1.0; - switch (unit) { - case "kg/mol": - conversionFactor = 1.0; - break; - case "gr/mol": - conversionFactor = 1000.0; - break; - default: - throw new RuntimeException(); - } - return refMolarMass * conversionFactor; + public int getNumberOfComponents() { + return getComponentNames().length; } /** {@inheritDoc} */ @Override - public void setTemperature(double newTemperature) { - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - getPhases()[i].setTemperature(newTemperature); + public int getNumberOfOilFractionComponents() { + int number = 0; + for (int i = 0; i < getPhase(0).getNumberOfComponents(); i++) { + if (getPhase(0).getComponent(i).isIsTBPfraction() + || getPhase(0).getComponent(i).isIsPlusFraction()) { + number++; + } } + return number; } /** {@inheritDoc} */ @Override - public void setTemperature(double newTemperature, String unit) { - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - if (unit.equals("K")) { - getPhases()[i].setTemperature(newTemperature); - } else if (unit.equals("C")) { - getPhases()[i].setTemperature(newTemperature + 273.15); - } else { - throw new RuntimeException(); + public final int getNumberOfPhases() { + return numberOfPhases; + } + + /** {@inheritDoc} */ + @Override + public int[] getOilFractionIDs() { + int numb = getNumberOfOilFractionComponents(); + int[] IDs = new int[numb]; + // int number = 0; + for (int i = 0; i < numb; i++) { + if (getPhase(0).getComponent(i).isIsTBPfraction() + || getPhase(0).getComponent(i).isIsPlusFraction()) { + IDs[i] = getPhase(0).getComponent(i).getIndex(); + // number++; } } + return IDs; } /** {@inheritDoc} */ @Override - public double getNumberOfMoles() { - return getTotalNumberOfMoles(); + public double[] getOilFractionLiquidDensityAt25C() { + int numb = getNumberOfOilFractionComponents(); + int[] indexes = getOilFractionIDs(); + double[] temp = new double[numb]; + for (int i = 0; i < numb; i++) { + temp[i] = getPhase(0).getComponentWithIndex(indexes[i]).getNormalLiquidDensity(); + } + return temp; } /** {@inheritDoc} */ @Override - public void setPhaseType(int phaseToChange, int newPhaseType) { - // System.out.println("new phase type: cha " + newPhaseType); - if (allowPhaseShift) { - phaseType[phaseIndex[phaseToChange]] = newPhaseType; + public double[] getOilFractionMolecularMass() { + int numb = getNumberOfOilFractionComponents(); + int[] indexes = getOilFractionIDs(); + double[] temp = new double[numb]; + for (int i = 0; i < numb; i++) { + temp[i] = getPhase(0).getComponentWithIndex(indexes[i]).getMolarMass(); } + return temp; } /** {@inheritDoc} */ @Override - public void setPhaseType(int phaseToChange, String phaseTypeName) { - // System.out.println("new phase type: cha " + newPhaseType); - int newPhaseType = 1; - if (allowPhaseShift) { - if (phaseTypeName.equals("gas") || phaseTypeName.equals("vapour")) { - newPhaseType = 1; - } else if (phaseTypeName.equals("liquid") || phaseTypeName.equals("oil") - || phaseTypeName.equals("aqueous")) { - newPhaseType = 0; - } else { - newPhaseType = 0; - } - phaseType[phaseIndex[phaseToChange]] = newPhaseType; + public double[] getOilFractionNormalBoilingPoints() { + int numb = getNumberOfOilFractionComponents(); + int[] indexes = getOilFractionIDs(); + double[] temp = new double[numb]; + for (int i = 0; i < numb; i++) { + temp[i] = getPhase(0).getComponentWithIndex(indexes[i]).getNormalBoilingPoint(); } + return temp; } /** {@inheritDoc} */ @Override - public void setPhaseType(String phases, int newPhaseType) { - // System.out.println("new phase type: cha " + newPhaseType); - if (allowPhaseShift) { - if (phases.equals("all")) { - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - phaseType[i] = newPhaseType; - } - } + public final double getPC() { + return criticalPressure; + } + + /** {@inheritDoc} */ + @Override + public final PhaseInterface getPhase(int i) { + if (i < 0) { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, "getPhase", + "i", i + " is not valid, must be in the range 0-" + this.getNumberOfPhases())); + } else if (i >= getNumberOfPhases() && phaseArray[phaseIndex[i]] == null) { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException( + this.getClass() + ":getPhase - Can not return phase number " + i + + ". Current number of phases are " + getNumberOfPhases())); } + return phaseArray[phaseIndex[i]]; } /** {@inheritDoc} */ @Override - public void invertPhaseTypes() { - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - if (phaseType[i] == 0) { - phaseType[i] = 1; - } else { - phaseType[i] = 0; - } + public PhaseInterface getPhase(PhaseType pt) { + if (!this.hasPhaseType(pt)) { + throw new RuntimeException("Phase with phase type " + pt + " not found."); + } + + int phaseNum = getPhaseNumberOfPhase(pt); + if (phaseNum >= 0) { + return getPhase(phaseNum); } + + return null; } /** {@inheritDoc} */ @Override - public void setPhase(PhaseInterface phase, int numb) { - double temp = phaseArray[numb].getTemperature(); - double pres = phaseArray[numb].getPressure(); - this.phaseArray[numb] = phase; - this.phaseArray[numb].setTemperature(temp); - this.phaseArray[numb].setPressure(pres); + public PhaseInterface getPhase(String phaseTypeName) { + PhaseType pt = PhaseType.byDesc(phaseTypeName); + return getPhase(pt); } /** {@inheritDoc} */ @Override - public void reInitPhaseType() { - phaseType[0] = 1; - phaseType[1] = 0; - phaseType[2] = 0; - phaseType[3] = 0; + public final double getPhaseFraction(String phaseTypeName, String unit) { + int phaseNumber = getPhaseNumberOfPhase(phaseTypeName); + switch (unit) { + case "mole": + return getBeta(phaseNumber); + case "volume": + return getVolumeFraction(phaseNumber); + case "mass": + initPhysicalProperties("density"); + return getVolumeFraction(phaseNumber) * getPhase(phaseNumber).getDensity("kg/m3") + / getDensity("kg/m3"); + default: + throw new RuntimeException("unit not supported " + unit); + } } /** {@inheritDoc} */ @Override - public final boolean doSolidPhaseCheck() { - return solidPhaseCheck; + public final int getPhaseIndex(int index) { + return phaseIndex[index]; } /** {@inheritDoc} */ @Override - public final void setPressure(double newPressure) { - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - phaseArray[i].setPressure(newPressure); + public int getPhaseIndex(PhaseInterface phase) { + for (int i = 0; i < numberOfPhases; i++) { + if (getPhase(i) == phase) { + return phaseIndex[i]; + } } + throw new RuntimeException( + new InvalidInputException(this, "getPhaseIndex", "phase", "is not found in phaseArray.")); } /** {@inheritDoc} */ @Override - public final void setPressure(double newPressure, String unit) { - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - if (unit.equals("bar") || unit.equals("bara")) { - phaseArray[i].setPressure(newPressure); - } else if (unit.equals("atm")) { - phaseArray[i].setPressure(newPressure + 0.01325); - } else if (unit.equals("barg")) { - phaseArray[i].setPressure(newPressure + 1.01325); - } else { - throw new RuntimeException( - "setting new pressure could not be done. Specified unit might not be supported"); + public int getPhaseIndex(String phaseTypeName) { + // TODO: returning first if not found, not same as the others. + for (int i = 0; i < numberOfPhases; i++) { + if (getPhase(i).getPhaseTypeName().equals(phaseTypeName)) { + return phaseIndex[i]; } } + return phaseIndex[0]; } /** {@inheritDoc} */ @Override - public final void setTemperature(double newPressure, int phase) { - getPhase(phaseIndex[phase]).setTemperature(newPressure); - } - - /** {@inheritDoc} */ - @Override - public final double getTemperature() { - return phaseArray[0].getTemperature(); + public int getPhaseNumberOfPhase(PhaseType pt) { + // TODO: returning first if not found, not same as the others. + for (int i = 0; i < numberOfPhases; i++) { + if (getPhase(i).getType() == pt) { + return i; + } + } + return 0; } /** {@inheritDoc} */ @Override - public final double getTemperature(String unit) { - neqsim.util.unit.TemperatureUnit tempConversion = - new neqsim.util.unit.TemperatureUnit(getTemperature(), "K"); - return tempConversion.getValue(unit); + public PhaseInterface getPhaseOfType(String phaseTypeName) { + for (int i = 0; i < numberOfPhases; i++) { + if (getPhase(i).getPhaseTypeName().equals(phaseTypeName)) { + return getPhase(i); + } + } + return null; } /** {@inheritDoc} */ @Override - public double getTemperature(int phaseNumber) { - return getPhase(phaseIndex[phaseNumber]).getTemperature(); + public final PhaseInterface[] getPhases() { + return phaseArray; } /** {@inheritDoc} */ @@ -2919,14 +2759,6 @@ public final double getPressure() { return phaseArray[0].getPressure(); } - /** {@inheritDoc} */ - @Override - public final double getPressure(String unit) { - neqsim.util.unit.PressureUnit presConversion = - new neqsim.util.unit.PressureUnit(getPressure(), "bara"); - return presConversion.getValue(unit); - } - /** {@inheritDoc} */ @Override public final double getPressure(int phaseNumber) { @@ -2935,1155 +2767,1115 @@ public final double getPressure(int phaseNumber) { /** {@inheritDoc} */ @Override - public final double getBeta() { - return beta[0]; + public final double getPressure(String unit) { + neqsim.util.unit.PressureUnit presConversion = + new neqsim.util.unit.PressureUnit(getPressure(), "bara"); + return presConversion.getValue(unit); } /** {@inheritDoc} */ @Override - public final double getBeta(int phase) { - return beta[phaseIndex[phase]]; + public SystemProperties getProperties() { + return new SystemProperties(this); } /** {@inheritDoc} */ @Override - public void setAttractiveTerm(int i) { - for (int k = 0; k < getMaxNumberOfPhases(); k++) { - phaseArray[k].setAttractiveTerm(i); + public double getProperty(String prop) { + if (prop.equals("numberOfPhases")) { + return numberOfPhases; + } else if (prop.equals("numberOfComponents")) { + return numberOfComponents; + } else if (prop.equals("enthalpy")) { + return getEnthalpy(); + } else if (prop.equals("entropy")) { + return getEntropy(); + } else if (prop.equals("temperature")) { + return getTemperature(); + } else if (prop.equals("pressure")) { + return getPressure(); + } else { + return 1.0; } } /** {@inheritDoc} */ @Override - public final int getNumberOfPhases() { - return numberOfPhases; + public double getProperty(String prop, int phase) { + initPhysicalProperties(); + if (prop.equals("temperature")) { + return getPhase(phase).getTemperature(); + } else if (prop.equals("pressure")) { + return getPhase(phase).getPressure(); + } else if (prop.equals("compressibility")) { + return getPhase(phase).getZ(); + } else if (prop.equals("density")) { + return getPhase(phase).getPhysicalProperties().getDensity(); + } else if (prop.equals("beta")) { + return getPhase(phase).getBeta(); + } else if (prop.equals("enthalpy")) { + return getPhase(phase).getEnthalpy(); + } else if (prop.equals("entropy")) { + return getPhase(phase).getEntropy(); + } else if (prop.equals("viscosity")) { + return getPhase(phase).getPhysicalProperties().getViscosity(); + } else if (prop.equals("conductivity")) { + return getPhase(phase).getPhysicalProperties().getConductivity(); + } else { + return 1.0; + } } /** {@inheritDoc} */ @Override - public final void setBeta(double b) { - if (b < 0) { - b = neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; - } - if (b > 1) { - b = 1.0 - neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; + public double getProperty(String prop, String compName, int phase) { + if (prop.equals("molefraction")) { + return getPhase(phase).getComponent(compName).getx(); + } else if (prop.equals("fugacitycoefficient")) { + return getPhase(phase).getComponent(compName).getFugacityCoefficient(); + } else if (prop.equals("logfugdT")) { + return getPhase(phase).getComponent(compName).getdfugdt(); + } else if (prop.equals("logfugdP")) { + return getPhase(phase).getComponent(compName).getdfugdp(); + } else { + return 1.0; } - beta[0] = b; - beta[1] = 1.0 - b; } /** {@inheritDoc} */ @Override - public final void setBeta(int phase, double b) { - if (b < 0) { - b = neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; - } - if (b > 1) { - b = 1.0 - neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; - } - beta[phaseIndex[phase]] = b; + public String[][] getResultTable() { + return resultTable; } /** {@inheritDoc} */ @Override - public final double getVolume() { - double volume = 0.0; + public double getSoundSpeed() { + double soundspeed = 0; for (int i = 0; i < numberOfPhases; i++) { - volume += getPhase(i).getMolarVolume() * getPhase(i).getNumberOfMolesInPhase(); + soundspeed += getBeta(i) * getPhase(i).getSoundSpeed(); } - return volume; + return soundspeed; } /** {@inheritDoc} */ @Override - public double getVolume(String unit) { + public double getSoundSpeed(String unit) { + double refVel = getSoundSpeed(); double conversionFactor = 1.0; switch (unit) { - case "m3": + case "m/s": conversionFactor = 1.0; break; - case "m3/kg": - conversionFactor = 1.0 / getMass("kg"); - break; - case "litre": - conversionFactor = 1000.0; + case "km/hr": + conversionFactor = 3.6; break; - case "m3/mol": - conversionFactor = 1.0 / getTotalNumberOfMoles(); + case "ft/sec": + conversionFactor = 3.280839895; break; default: - break; + throw new RuntimeException("unit not supported " + unit); + } - return conversionFactor * getVolume() / 1.0e5; + return refVel * conversionFactor; } /** {@inheritDoc} */ @Override - public double getMass(String unit) { - double conversionFactor = 1.0; - switch (unit) { - case "kg": - conversionFactor = 1.0; - break; + public neqsim.standards.StandardInterface getStandard() { + return standard; + } - case "gr": - conversionFactor = 1000.0; - break; - case "tons": - conversionFactor = 1.0e-3; - break; - default: - break; - } - return conversionFactor * getTotalNumberOfMoles() * getMolarMass(); + /** {@inheritDoc} */ + @Override + public neqsim.standards.StandardInterface getStandard(String standardName) { + this.setStandard(standardName); + return standard; } /** - * {@inheritDoc} + * Get sum of phase beta values. * - * need to call initPhysicalProperties() before this method is called + * @return Sum of beta beta values */ - @Override - public double getCorrectedVolume() { - double volume = 0; - for (int i = 0; i < numberOfPhases; i++) { - volume += getPhase(i).getMolarMass() / getPhase(i).getPhysicalProperties().getDensity() - * getPhase(i).getNumberOfMolesInPhase(); + public final double getSumBeta() { + double sum = 0; + for (int k = 0; k < numberOfPhases; k++) { + sum += getBeta(k); } - return volume; + return sum; } /** {@inheritDoc} */ - public double getdPdVtn() { - double dPdV = 0.0; - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - dPdV += getPhase(i).getdPdVTn() * getPhase(i).getVolume() / getVolume(); - } - } - return dPdV; + @Override + public final double getTC() { + return criticalTemperature; } /** {@inheritDoc} */ @Override - public double getdVdPtn() { - double dVdP = 0.0; + public final double getTemperature() { + return phaseArray[0].getTemperature(); + } + + /** {@inheritDoc} */ + @Override + public double getTemperature(int phaseNumber) { + return getPhase(phaseIndex[phaseNumber]).getTemperature(); + } + + /** {@inheritDoc} */ + @Override + public final double getTemperature(String unit) { + neqsim.util.unit.TemperatureUnit tempConversion = + new neqsim.util.unit.TemperatureUnit(getTemperature(), "K"); + return tempConversion.getValue(unit); + } + + /** {@inheritDoc} */ + @Override + public double getThermalConductivity() { + double cond = 0; for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - dVdP += 1.0 / getPhase(i).getdPdVTn(); - } + cond += beta[phaseIndex[i]] * getPhase(i).getPhysicalProperties().getConductivity(); } - return dVdP; + return cond; } /** {@inheritDoc} */ @Override - public double getdVdTpn() { - double dVdT = 0.0; - for (int i = 0; i < numberOfPhases; i++) { - if (IsPhase(i)) { - dVdT += -getPhase(i).getdPdTVn() / getPhase(i).getdPdVTn(); - } + public double getThermalConductivity(String unit) { + double refConductivity = getThermalConductivity(); // conductivity in W/m*K + double conversionFactor = 1.0; + switch (unit) { + case "W/mK": + case "J/sec-m-K": + conversionFactor = 1.0; + break; + case "W/cmK": + conversionFactor = 0.01; + break; + case "Btu/hr-ft-F": + conversionFactor = 0.5781759824; + break; + default: + throw new RuntimeException("unit not supported " + unit); } - return dVdT; + return refConductivity * conversionFactor; } + /** {@inheritDoc} */ + @Override + public double getTotalNumberOfMoles() { + return this.totalNumberOfMoles; + } /** {@inheritDoc} */ @Override - public double getCp() { - double cP = 0.0; + public double getViscosity() { + double visc = 0; for (int i = 0; i < numberOfPhases; i++) { - cP += getPhase(i).getCp(); + visc += beta[phaseIndex[i]] * getPhase(i).getPhysicalProperties().getViscosity(); } - return cP; + return visc; } /** {@inheritDoc} */ @Override - public double getCp(String unit) { - double refCp = getCp(); // Cp in J/K + public double getViscosity(String unit) { + double refViscosity = getViscosity(); // viscosity in kg/msec double conversionFactor = 1.0; switch (unit) { - case "J/K": + case "kg/msec": conversionFactor = 1.0; break; - case "J/molK": - conversionFactor = 1.0 / getTotalNumberOfMoles(); - break; - case "J/kgK": - conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass(); + case "cP": + conversionFactor = 1.0e3; break; - case "kJ/kgK": - conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; + case "Pas": + conversionFactor = 1.0; break; default: - break; + throw new RuntimeException("unit not supported " + unit); } - return refCp * conversionFactor; + return refViscosity * conversionFactor; } /** {@inheritDoc} */ @Override - public double getCv() { - double cv = 0.0; + public final double getVolume() { + double volume = 0.0; for (int i = 0; i < numberOfPhases; i++) { - cv += getPhase(i).getCv(); + volume += getPhase(i).getMolarVolume() * getPhase(i).getNumberOfMolesInPhase(); } - return cv; + return volume; } /** {@inheritDoc} */ @Override - public double getCv(String unit) { - double refCv = getCv(); // enthalpy in J + public double getVolume(String unit) { double conversionFactor = 1.0; switch (unit) { - case "J/K": + case "m3": conversionFactor = 1.0; break; - case "J/molK": - conversionFactor = 1.0 / getTotalNumberOfMoles(); + case "m3/kg": + conversionFactor = 1.0 / getMass("kg"); break; - case "J/kgK": - conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass(); + case "litre": + conversionFactor = 1000.0; break; - case "kJ/kgK": - conversionFactor = 1.0 / getTotalNumberOfMoles() / getMolarMass() / 1000.0; + case "m3/mol": + conversionFactor = 1.0 / getTotalNumberOfMoles(); break; default: - break; + throw new RuntimeException("unit not supported " + unit); } - return refCv * conversionFactor; + return conversionFactor * getVolume() / 1.0e5; } - /** - * {@inheritDoc} - * - * @return kappa real gas kappa - * - * method to return real gas isentropic exponent (kappa = - Cp/Cv*(v/p)*dp/dv - */ - public double getKappa() { - return -getCp() / getCv() * getVolume() / getPressure() * getdPdVtn(); + /** {@inheritDoc} */ + @Override + public double getVolumeFraction(int phaseNumber) { + return getPhase(phaseNumber).getVolume() / getVolume(); } /** {@inheritDoc} */ @Override - public double getGamma() { - return getCp() / getCv(); + public neqsim.thermo.characterization.WaxCharacterise getWaxCharacterisation() { + return waxCharacterisation; } /** {@inheritDoc} */ @Override - public void calcInterfaceProperties() { - interfaceProp.init(); + public WaxModelInterface getWaxModel() { + if (waxCharacterisation == null) { + waxCharacterisation = new WaxCharacterise(this); + } + return waxCharacterisation.getModel(); } /** {@inheritDoc} */ @Override - public InterphasePropertiesInterface getInterphaseProperties() { - return interfaceProp; + public double getWtFraction(int phaseNumber) { + return getPhase(phaseNumber).getWtFraction(this); } /** {@inheritDoc} */ @Override - public double getInterfacialTension(int phase1, int phase2) { - return interfaceProp.getSurfaceTension(phase1, phase2); + public double getZ() { + double Z = 0; + for (int i = 0; i < numberOfPhases; i++) { + Z += beta[phaseIndex[i]] * getPhase(i).getZ(); + } + return Z; } /** {@inheritDoc} */ @Override - public double getInterfacialTension(int phase1, int phase2, String unit) { - return interfaceProp.getSurfaceTension(phase1, phase2, unit); + public double getZvolcorr() { + return getPressure("Pa") * getMolarMass() / neqsim.thermo.ThermodynamicConstantsInterface.R + / getTemperature() / getDensity("kg/m3"); } /** {@inheritDoc} */ @Override - public double getInterfacialTension(String phase1, String phase2) { - if (hasPhaseType(phase1) && hasPhaseType(phase2)) { - return interfaceProp.getSurfaceTension(getPhaseNumberOfPhase(phase1), - getPhaseNumberOfPhase(phase2)); - } else { - return Double.NaN; + public boolean hasPhaseType(PhaseType pt) { + for (int i = 0; i < numberOfPhases; i++) { + if (getPhase(i) == null) { + continue; + } + if (getPhase(i).getType() == pt) { + return true; + } + if (getPhase(i).getPhaseTypeName().equals(pt.getDesc())) { + logger.error( + "Bug in setting phasetype somewhere. Phasetype and phasetypename should be the same."); + return true; + } + } + return false; + } + + /** {@inheritDoc} */ + @Override + public boolean hasPlusFraction() { + for (int i = 0; i < numberOfComponents; i++) { + if (getPhase(0).getComponent(i).isIsPlusFraction()) { + return true; + } } + return false; } /** *

- * write. + * hasTBPFraction. *

* - * @return a {@link java.lang.String} object + * @return a boolean */ - public String write() { - // create a String description of the system - return ""; + public boolean hasTBPFraction() { + for (int i = 0; i < numberOfComponents; i++) { + if (getPhase(0).getComponent(i).isIsTBPfraction()) { + return true; + } + } + return false; } /** {@inheritDoc} */ @Override - public void normalizeBeta() { - double tot = 0.0; - for (int i = 0; i < numberOfPhases; i++) { - tot += beta[phaseIndex[i]]; + public void init(int type) { + if (!this.isInitialized) { + initBeta(); + init_x_y(); } - for (int i = 0; i < numberOfPhases; i++) { - beta[phaseIndex[i]] /= tot; + if (this.numericDerivatives) { + initNumeric(type); + } else { + initAnalytic(type); } + this.isInitialized = true; } /** {@inheritDoc} */ @Override - public void display() { - display(this.getFluidName()); + public void init(int type, int phase) { + if (this.numericDerivatives) { + initNumeric(type, phase); + } else { + initAnalytic(type, phase); + } } /** {@inheritDoc} */ @Override - public String[][] createTable(String name) { - // System.out.println("number of comps : " + numberOfComponents + " number of - // phases " + numberOfPhases); - String[][] table = new String[getPhases()[0].getNumberOfComponents() + 30][7]; - - if (isInitialized) { - initProperties(); - } else { - init(0); - setNumberOfPhases(1); - initProperties(); - } - - java.text.DecimalFormat nf = new java.text.DecimalFormat(); - - java.text.DecimalFormatSymbols symbols = new java.text.DecimalFormatSymbols(); - symbols.setDecimalSeparator('.'); - nf.setDecimalFormatSymbols(symbols); - - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.#####E0"); - - /// String[][] table = new String[getPhases()[0].getNumberOfComponents() + - /// 30][7]; - // String[] names = {"", "Feed", "Phase 1", "Phase 2", "Phase 3", "Phase 4", - /// "Unit"}; - table[0][0] = "";// getPhases()[0].getPhaseTypeName();//""; - - for (int i = 0; i < getPhases()[0].getNumberOfComponents() + 30; i++) { - for (int j = 0; j < 7; j++) { - table[i][j] = ""; + public final void init_x_y() { + // double x, z; + for (int j = 0; j < numberOfPhases; j++) { + // x = 0; + // z = 0; + for (int i = 0; i < numberOfComponents; i++) { + getPhase(j).getComponents()[i] + .setz(getPhase(j).getComponents()[i].getNumberOfmoles() / getTotalNumberOfMoles()); + getPhase(j).getComponents()[i].setx(getPhase(j).getComponents()[i].getNumberOfMolesInPhase() + / getPhase(j).getNumberOfMolesInPhase()); } + getPhase(j).normalize(); } - table[0][1] = "total"; - for (int i = 0; i < numberOfPhases; i++) { - table[0][i + 2] = getPhase(i).getPhaseTypeName(); - } - - StringBuffer buf = new StringBuffer(); - FieldPosition test = new FieldPosition(0); - for (int j = 0; j < getPhases()[0].getNumberOfComponents(); j++) { - buf = new StringBuffer(); - table[j + 1][1] = nf.format(getPhase(0).getComponents()[j].getz(), buf, test).toString(); - } - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 4][1] = - nf.format(getMolarMass() * 1000, buf, test).toString(); - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 9][1] = - nf.format(getEnthalpy() / (getTotalNumberOfMoles() * getMolarMass() * 1000), buf, test) - .toString(); - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 10][1] = - nf.format(getEntropy() / (getTotalNumberOfMoles() * getMolarMass() * 1000), buf, test) - .toString(); + } - for (int i = 0; i < numberOfPhases; i++) { - for (int j = 0; j < getPhases()[0].getNumberOfComponents(); j++) { - table[j + 1][0] = getPhases()[0].getComponents()[j].getName(); - buf = new StringBuffer(); - table[j + 1][i + 2] = - nf.format(getPhase(i).getComponents()[j].getx(), buf, test).toString(); - table[j + 1][6] = "[mole fraction]"; + /** + *

+ * initAnalytic. + *

+ * + * @param type a int. 0 to initialize and 1 to reset, 2 to calculate T and P derivatives, 3 to + * calculate all derivatives and 4 to calculate all derivatives numerically + */ + public void initAnalytic(int type) { + if (type == 0) { + reInitPhaseInformation(); + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + if (isPhase(i)) { + getPhase(i).init(getTotalNumberOfMoles(), numberOfComponents, type, + phaseType[phaseIndex[i]], beta[phaseIndex[i]]); + } } + setNumberOfPhases(2); + } - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 2][0] = "Density"; - table[getPhases()[0].getNumberOfComponents() + 2][i + 2] = - nf.format(getPhase(i).getPhysicalProperties().getDensity(), buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 2][6] = "[kg/m^3]"; - - // Double.longValue(system.getPhase(i).getBeta()); - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 3][0] = "PhaseFraction"; - table[getPhases()[0].getNumberOfComponents() + 3][i + 2] = - nf.format(getPhase(i).getBeta(), buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 3][6] = "[mole fraction]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 4][0] = "MolarMass"; - table[getPhases()[0].getNumberOfComponents() + 4][i + 2] = - nf.format(getPhase(i).getMolarMass() * 1000, buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 4][6] = "[kg/kmol]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 5][0] = "Z factor"; - table[getPhases()[0].getNumberOfComponents() + 5][i + 2] = - nf.format(getPhase(i).getZ(), buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 5][6] = "[-]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 6][0] = "Heat Capacity (Cp)"; - table[getPhases()[0].getNumberOfComponents() + 6][i + 2] = nf.format( - (getPhase(i).getCp() - / (getPhase(i).getNumberOfMolesInPhase() * getPhase(i).getMolarMass() * 1000)), - buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 6][6] = "[kJ/kg*K]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 7][0] = "Heat Capacity (Cv)"; - table[getPhases()[0].getNumberOfComponents() + 7][i + 2] = nf.format( - (getPhase(i).getCv() - / (getPhase(i).getNumberOfMolesInPhase() * getPhase(i).getMolarMass() * 1000)), - buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 7][6] = "[kJ/kg*K]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 8][0] = "Speed of Sound"; - table[getPhases()[0].getNumberOfComponents() + 8][i + 2] = - nf.format((getPhase(i).getSoundSpeed()), buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 8][6] = "[m/sec]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 9][0] = "Enthalpy"; - table[getPhases()[0].getNumberOfComponents() + 9][i + 2] = nf.format( - (getPhase(i).getEnthalpy() - / (getPhase(i).getNumberOfMolesInPhase() * getPhase(i).getMolarMass() * 1000)), - buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 9][6] = "[kJ/kg]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 10][0] = "Entropy"; - table[getPhases()[0].getNumberOfComponents() + 10][i + 2] = nf.format( - (getPhase(i).getEntropy() - / (getPhase(i).getNumberOfMolesInPhase() * getPhase(i).getMolarMass() * 1000)), - buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 10][6] = "[kJ/kg*K]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 11][0] = "JT coefficient"; - table[getPhases()[0].getNumberOfComponents() + 11][i + 2] = - nf.format((getPhase(i).getJouleThomsonCoefficient()), buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 11][6] = "[K/bar]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 13][0] = "Viscosity"; - table[getPhases()[0].getNumberOfComponents() + 13][i + 2] = - nf.format((getPhase(i).getPhysicalProperties().getViscosity()), buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 13][6] = "[kg/m*sec]"; + if (type > 0) { + for (int i = 0; i < numberOfPhases; i++) { + if (isPhase(i)) { + // todo: possible bug here, some components check for initType >= 3 + getPhase(i).init(getTotalNumberOfMoles(), numberOfComponents, Math.min(3, type), + phaseType[phaseIndex[i]], beta[phaseIndex[i]]); + } + } - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 14][0] = "Conductivity"; - table[getPhases()[0].getNumberOfComponents() + 14][i + 2] = - nf.format(getPhase(i).getPhysicalProperties().getConductivity(), buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 14][6] = "[W/m*K]"; + for (int i = 0; i < numberOfPhases; i++) { + if (isPhase(i)) { + for (int j = 0; j < numberOfComponents; j++) { + getPhase(i).getComponents()[j].fugcoef(getPhase(i)); + } + } + } + } - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 15][0] = "SurfaceTension"; - try { - if (i < numberOfPhases - 1) { - table[getPhases()[0].getNumberOfComponents() + 15][2] = - nf.format(getInterphaseProperties().getSurfaceTension(0, 1), buf, test).toString(); - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 15][3] = - nf.format(getInterphaseProperties().getSurfaceTension(0, 1), buf, test).toString(); - buf = new StringBuffer(); - if (i == 1) { - table[getPhases()[0].getNumberOfComponents() + 17][2] = - nf.format(getInterphaseProperties().getSurfaceTension(0, 2), buf, test).toString(); - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 17][4] = - nf.format(getInterphaseProperties().getSurfaceTension(0, 2), buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 17][6] = "[N/m]"; + if (type == 4) { // special case, calculate all derivatives numerically + for (int i = 0; i < numberOfPhases; i++) { + if (isPhase(i)) { + for (int j = 0; j < numberOfComponents; j++) { + // TODO: only runs two calculations init == 3 runs three + getPhase(i).getComponents()[j].fugcoefDiffTempNumeric(getPhase(i), numberOfComponents, + getPhase(i).getTemperature(), getPhase(i).getPressure()); + getPhase(i).getComponents()[j].fugcoefDiffPresNumeric(getPhase(i), numberOfComponents, + getPhase(i).getTemperature(), getPhase(i).getPressure()); } - if (i == 1) { - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 16][3] = - nf.format(getInterphaseProperties().getSurfaceTension(1, 2), buf, test).toString(); - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 16][4] = - nf.format(getInterphaseProperties().getSurfaceTension(1, 2), buf, test).toString(); - table[getPhases()[0].getNumberOfComponents() + 16][6] = "[N/m]"; + } + } + } else { + if (type > 1) { // calculate T and P derivatives + for (int i = 0; i < numberOfPhases; i++) { + if (isPhase(i)) { + for (int j = 0; j < numberOfComponents; j++) { + getPhase(i).getComponents()[j].logfugcoefdT(getPhase(i)); + getPhase(i).getComponents()[j].logfugcoefdP(getPhase(i)); + } } } - } catch (Exception e) { - logger.error("error", e); } - table[getPhases()[0].getNumberOfComponents() + 15][6] = "[N/m]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 19][0] = "Pressure"; - table[getPhases()[0].getNumberOfComponents() + 19][i + 2] = - Double.toString(getPhase(i).getPressure()); - table[getPhases()[0].getNumberOfComponents() + 19][6] = "[bar]"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 20][0] = "Temperature"; - table[getPhases()[0].getNumberOfComponents() + 20][i + 2] = - Double.toString(getPhase(i).getTemperature()); - table[getPhases()[0].getNumberOfComponents() + 20][6] = "[K]"; - Double.toString(getPhase(i).getTemperature()); - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 22][0] = "Model"; - table[getPhases()[0].getNumberOfComponents() + 22][i + 2] = getModelName(); - table[getPhases()[0].getNumberOfComponents() + 22][6] = "-"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 23][0] = "Mixing Rule"; - try { - table[getPhases()[0].getNumberOfComponents() + 23][i + 2] = - ((PhaseEosInterface) getPhase(i)).getMixingRuleName(); - } catch (Exception e) { - table[getPhases()[0].getNumberOfComponents() + 23][i + 2] = "?"; - // logger.error("error",e); + if (type == 3) { // calculate all derivatives + for (int i = 0; i < numberOfPhases; i++) { + if (isPhase(i)) { + for (int j = 0; j < numberOfComponents; j++) { + getPhase(i).getComponents()[j].logfugcoefdN(getPhase(i)); + } + } + } } - table[getPhases()[0].getNumberOfComponents() + 23][6] = "-"; - - buf = new StringBuffer(); - table[getPhases()[0].getNumberOfComponents() + 25][0] = "Stream"; - table[getPhases()[0].getNumberOfComponents() + 25][i + 2] = name; - table[getPhases()[0].getNumberOfComponents() + 25][6] = "-"; } - resultTable = table; - return table; + for (int i = 1; i < numberOfPhases; i++) { + if (isPhase(i)) { + if (getPhase(i).getType() == PhaseType.GAS) { + getPhase(i).setType(PhaseType.OIL); + } + } + } + this.isInitialized = true; } - /** {@inheritDoc} */ - @Override - public void display(String name) { - JFrame dialog = new JFrame("System-Report"); - Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new BorderLayout()); + /** + *

+ * initAnalytic. + *

+ * + * @param type a int + * @param phase a int + */ + public void initAnalytic(int type, int phase) { + if (type == 0) { + beta[0] = 1.0; + phaseIndex[phase] = phase; + } - String[] names = {"", "Feed", "Phase 1", "Phase 2", "Phase 3", "Phase 4", "Unit"}; - String[][] table = createTable(name); - JTable Jtab = new JTable(table, names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); + if (isPhase(phase)) { + getPhase(phase).init(getTotalNumberOfMoles(), numberOfComponents, type, + phaseType[phaseIndex[phase]], beta[phaseIndex[phase]]); + if (type > 0) { + for (int j = 0; j < numberOfComponents; j++) { + getPhase(phase).getComponents()[j].fugcoef(getPhase(phase)); + } + } + if (type > 1) { + for (int j = 0; j < numberOfComponents; j++) { + getPhase(phase).getComponents()[j].logfugcoefdT(getPhase(phase)); + getPhase(phase).getComponents()[j].logfugcoefdP(getPhase(phase)); + } + } + if (type > 2) { + for (int j = 0; j < numberOfComponents; j++) { + getPhase(phase).getComponents()[j].logfugcoefdT(getPhase(phase)); + getPhase(phase).getComponents()[j].logfugcoefdP(getPhase(phase)); + getPhase(phase).getComponents()[j].logfugcoefdN(getPhase(phase)); + } + } + } - // setting the size of the frame and text size - dialog.setSize(screenDimension.width / 2, screenDimension.height / 2); // pack(); - Jtab.setRowHeight(dialog.getHeight() / table.length); - Jtab.setFont(new Font("Serif", Font.PLAIN, - dialog.getHeight() / table.length - dialog.getHeight() / table.length / 10)); + for (PhaseInterface tmpPhase : phaseArray) { + if (tmpPhase != null && tmpPhase.getType() == PhaseType.GAS) { + tmpPhase.setType(PhaseType.OIL); + } + } - // dialog.pack(); - dialog.setVisible(true); + this.isInitialized = true; } /** {@inheritDoc} */ @Override - public void write(String name, String filename, boolean newfile) { - String[][] table = createTable(name); - neqsim.dataPresentation.fileHandeling.createTextFile.TextFile file = - new neqsim.dataPresentation.fileHandeling.createTextFile.TextFile(); - if (newfile) { - file.newFile(filename); + public final void initBeta() { + for (int i = 0; i < numberOfPhases; i++) { + this.beta[phaseIndex[i]] = getPhase(i).getNumberOfMolesInPhase() / getTotalNumberOfMoles(); + } + if (this.getSumBeta() < 1.0 - ThermodynamicModelSettings.phaseFractionMinimumLimit + || this.getSumBeta() > 1.0 + ThermodynamicModelSettings.phaseFractionMinimumLimit) { + logger.warn("SystemThermo:initBeta - Sum of beta does not equal 1.0"); } - file.setOutputFileName(filename); - file.setValues(table); - file.createFile(); } /** {@inheritDoc} */ @Override - public void resetDatabase() { - neqsim.util.database.NeqSimDataBase database = null; - try { - database = new neqsim.util.database.NeqSimDataBase(); - if (NeqSimDataBase.createTemporaryTables()) { - database.execute("delete FROM comptemp"); - database.execute("delete FROM intertemp"); - } - } catch (Exception e) { - logger.error("error in SystemThermo Class...resetDatabase() method"); - logger.error("error in comp"); - logger.error("error", e); - } finally { - try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error closing database.....", e); - } + public void initNumeric() { + double[][] gasfug = new double[2][getPhases()[0].getNumberOfComponents()]; + double[][] liqfug = new double[2][getPhases()[0].getNumberOfComponents()]; + double[][] gasnumericDfugdt = new double[2][getPhases()[0].getNumberOfComponents()]; + double[][] liqnumericDfugdt = new double[2][getPhases()[0].getNumberOfComponents()]; + double[][] gasnumericDfugdp = new double[2][getPhases()[0].getNumberOfComponents()]; + double[][] liqnumericDfugdp = new double[2][getPhases()[0].getNumberOfComponents()]; + double[][][] gasnumericDfugdn = new double[2][getPhases()[0] + .getNumberOfComponents()][getPhases()[0].getNumberOfComponents()]; + double[][][] liqnumericDfugdn = new double[2][getPhases()[0] + .getNumberOfComponents()][getPhases()[0].getNumberOfComponents()]; + + double dt = getTemperature() / 1e5; + setTemperature(getTemperature() + dt); + init(1); + + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + gasfug[0][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); + liqfug[0][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); } - } - /** {@inheritDoc} */ - @Override - public void createDatabase(boolean reset) { - neqsim.util.database.NeqSimDataBase database = null; - try { - if (reset) { - resetDatabase(); - } - database = new neqsim.util.database.NeqSimDataBase(); - String names = new String(); + setTemperature(getTemperature() - 2 * dt); + init(1); - for (int k = 0; k < getPhase(0).getNumberOfComponents() - 1; k++) { - names += "'" + this.getComponentNames()[k] + "', "; - } - names += "'" + this.getComponentNames()[getPhase(0).getNumberOfComponents() - 1] + "'"; + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + gasfug[1][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); + liqfug[1][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); + gasnumericDfugdt[0][i] = (gasfug[0][i] - gasfug[1][i]) / (2 * dt); + liqnumericDfugdt[0][i] = (liqfug[0][i] - liqfug[1][i]) / (2 * dt); + phaseArray[0].getComponents()[i].setdfugdt(gasnumericDfugdt[0][i]); + phaseArray[1].getComponents()[i].setdfugdt(liqnumericDfugdt[0][i]); + } - if (NeqSimDataBase.createTemporaryTables()) { - database.execute("insert into comptemp SELECT * FROM comp WHERE name IN (" + names + ")"); - database.execute("insert into intertemp SELECT DISTINCT * FROM inter WHERE comp1 IN (" - + names + ") AND comp2 IN (" + names + ")"); - database.execute("delete FROM intertemp WHERE comp1=comp2"); - } - // System.out.println("ok " + names); + setTemperature(getTemperature() + dt); + + double dp = getPressure() / 1e5; + setPressure(getPressure() + dp); + init(1); + + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + gasfug[0][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); + liqfug[0][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); + } + + setPressure(getPressure() - 2 * dp); + init(1); + + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + gasfug[1][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); + liqfug[1][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); + gasnumericDfugdp[0][i] = (gasfug[0][i] - gasfug[1][i]) / (2 * dp); + liqnumericDfugdp[0][i] = (liqfug[0][i] - liqfug[1][i]) / (2 * dp); + phaseArray[0].getComponents()[i].setdfugdp(gasnumericDfugdp[0][i]); + phaseArray[1].getComponents()[i].setdfugdp(liqnumericDfugdp[0][i]); + } + + setPressure(getPressure() + dp); + init(1); + + for (int phase = 0; phase < 2; phase++) { + for (int k = 0; k < getPhases()[0].getNumberOfComponents(); k++) { + double dn = getPhases()[phase].getComponents()[k].getNumberOfMolesInPhase() / 1.0e6; + if (dn < 1e-12) { + dn = 1e-12; + } + + addComponent(k, dn, phase); + // initBeta(); + init_x_y(); + init(1); + + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + liqfug[0][i] = Math.log(getPhases()[phase].getComponents()[i].getFugacityCoefficient()); + } + + addComponent(k, -2.0 * dn, phase); + // initBeta(); + init_x_y(); + init(1); + + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + // gasfug[1][i] = + // Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); + liqfug[1][i] = Math.log(getPhases()[phase].getComponents()[i].getFugacityCoefficient()); + } - for (int phase = 0; phase < maxNumberOfPhases; phase++) { - getPhase(phase).setMixingRuleDefined(false); - } + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + if (phase == 0) { + gasnumericDfugdn[0][k][i] = (liqfug[0][i] - liqfug[1][i]) / (2 * dn); + phaseArray[0].getComponents()[i].setdfugdn(k, gasnumericDfugdn[0][k][i]); + phaseArray[0].getComponents()[i].setdfugdx(k, + gasnumericDfugdn[0][k][i] * phaseArray[0].getNumberOfMolesInPhase()); + } - for (int i = 0; i < numberOfComponents; i++) { - if (getPhase(0).getComponent(i).isIsTBPfraction() - || getPhase(0).getComponent(i).isIsPlusFraction()) { - getPhase(0).getComponent(i).insertComponentIntoDatabase(""); - } - } - } catch (Exception e) { - logger.error("error in SystemThermo Class...createDatabase() method", e); - } finally { - try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); + if (phase == 1) { + liqnumericDfugdn[0][k][i] = (liqfug[0][i] - liqfug[1][i]) / (2 * dn); + phaseArray[1].getComponents()[i].setdfugdn(k, liqnumericDfugdn[0][k][i]); + phaseArray[1].getComponents()[i].setdfugdx(k, + liqnumericDfugdn[0][k][i] * phaseArray[1].getNumberOfMolesInPhase()); + } } - } catch (Exception e) { - logger.error("error closing database.....", e); + + addComponent(k, dn, phase); + // initBeta(); + init_x_y(); + init(1); } } } - /** {@inheritDoc} */ - @Override - public final int getPhaseIndex(int index) { - return phaseIndex[index]; + /** + *

+ * initNumeric. + *

+ * + * @param type a int + */ + public void initNumeric(int type) { + initNumeric(type, 1); } - /** {@inheritDoc} */ - @Override - public final void setPhaseIndex(int index, int phaseIndex) { - this.phaseIndex[index] = phaseIndex; - } + /** + *

+ * initNumeric. + *

+ * + * @param type a int + * @param phasen a int + */ + public void initNumeric(int type, int phasen) { + if (type < 2) { + initAnalytic(type); + } else if (type >= 2) { + double[][] gasfug = new double[2][getPhases()[0].getNumberOfComponents()]; + double[][] liqfug = new double[2][getPhases()[0].getNumberOfComponents()]; - /** {@inheritDoc} */ - @Override - public void setSolidPhaseCheck(boolean solidPhaseCheck) { - // init(0); - int oldphase = numberOfPhases; - if (!this.solidPhaseCheck) { - addSolidPhase(); - } - this.solidPhaseCheck = solidPhaseCheck; - // init(0); + double dt = getTemperature() / 1.0e6; + setTemperature(getTemperature() + dt); + init(1); - for (int phase = 0; phase < numberOfPhases; phase++) { - for (int k = 0; k < getPhases()[0].getNumberOfComponents(); k++) { - getPhase(phase).getComponent(k).setSolidCheck(solidPhaseCheck); - getPhase(3).getComponent(k).setSolidCheck(solidPhaseCheck); + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + gasfug[0][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); + liqfug[0][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); } - } - setNumberOfPhases(oldphase); - } - /** {@inheritDoc} */ - @Override - public void setSolidPhaseCheck(String solidComponent) { - init(0); - int oldphase = numberOfPhases; - if (!solidPhaseCheck) { - addSolidPhase(); - } - this.solidPhaseCheck = true; - init(0); + setTemperature(getTemperature() - 2 * dt); + init(1); - for (int phase = 0; phase < getMaxNumberOfPhases(); phase++) { - try { - getPhase(phase).getComponent(solidComponent).setSolidCheck(true); - getPhase(3).getComponent(solidComponent).setSolidCheck(true); - } catch (Exception e) { - logger.error("error", e); + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + gasfug[1][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); + liqfug[1][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); } - } - setNumberOfPhases(oldphase); - } - - /** {@inheritDoc} */ - @Override - public void setHydrateCheck(boolean hydrateCheck) { - init(0); - if (hydrateCheck) { - addHydratePhase(); - } - this.hydrateCheck = hydrateCheck; - init(0); - } - - /** {@inheritDoc} */ - @Override - public boolean doMultiPhaseCheck() { - return multiPhaseCheck; - } - /** {@inheritDoc} */ - @Override - public void setMultiPhaseCheck(boolean multiPhaseCheck) { - if (getMaxNumberOfPhases() < 3) { - if (multiPhaseCheck) { - setMaxNumberOfPhases(3); - phaseArray[2] = phaseArray[1].clone(); - phaseArray[2].resetMixingRule(phaseArray[0].getMixingRuleNumber()); - phaseArray[2].resetPhysicalProperties(); - phaseArray[2].initPhysicalProperties(); - } else { - setMaxNumberOfPhases(2); + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + getPhase(0).getComponent(i).setdfugdt((gasfug[0][i] - gasfug[1][i]) / (2 * dt)); + getPhase(1).getComponent(i).setdfugdt((liqfug[0][i] - liqfug[1][i]) / (2 * dt)); } - } - this.multiPhaseCheck = multiPhaseCheck; - } - /** {@inheritDoc} */ - @Override - public int getInitType() { - return initType; - } + setTemperature(getTemperature() + dt); - /** {@inheritDoc} */ - @Override - public void setInitType(int initType) { - this.initType = initType; - } + double dp = getPressure() / 1.0e6; + setPressure(getPressure() + dp); + init(1); - /** {@inheritDoc} */ - @Override - public boolean isNumericDerivatives() { - return numericDerivatives; - } + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + gasfug[0][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); + liqfug[0][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); + } - /** {@inheritDoc} */ - @Override - public void setNumericDerivatives(boolean numericDerivatives) { - this.numericDerivatives = numericDerivatives; - } + setPressure(getPressure() - 2 * dp); + init(1); - /** {@inheritDoc} */ - @Override - public void checkStability(boolean val) { - checkStability = val; - } + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + gasfug[1][i] = Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); + liqfug[1][i] = Math.log(getPhases()[1].getComponents()[i].getFugacityCoefficient()); + } - /** {@inheritDoc} */ - @Override - public boolean checkStability() { - return checkStability; - } + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + getPhase(0).getComponent(i).setdfugdp((gasfug[0][i] - gasfug[1][i]) / (2 * dp)); + getPhase(1).getComponent(i).setdfugdp((liqfug[0][i] - liqfug[1][i]) / (2 * dp)); + } - /** {@inheritDoc} */ - @Override - public boolean doHydrateCheck() { - return hydrateCheck; - } + setPressure(getPressure() + dp); + init(1); - /** {@inheritDoc} */ - @Override - public boolean getHydrateCheck() { - return hydrateCheck; - } + if (type == 3) { + for (int phase = 0; phase < 2; phase++) { + for (int k = 0; k < getPhases()[0].getNumberOfComponents(); k++) { + double dn = getPhases()[phase].getComponents()[k].getNumberOfMolesInPhase() / 1.0e6; - /** {@inheritDoc} */ - @Override - public void save(String name) { - try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(name))) { - out.writeObject(this); - } catch (Exception e) { - logger.error(e.toString()); - } - } + addComponent(k, dn, phase); + // initBeta(); + init_x_y(); + init(1); - /** {@inheritDoc} */ - @Override - public SystemInterface readObject(int ID) { - ResultSet rs = null; - SystemThermo tempSystem = null; - neqsim.util.database.NeqSimBlobDatabase database = - new neqsim.util.database.NeqSimBlobDatabase(); - try { - java.sql.Connection con = database.openConnection(); - String sqlStr = "SELECT FLUID FROM fluid_blobdb WHERE ID=" + Integer.toString(ID); - java.sql.PreparedStatement ps = con.prepareStatement(sqlStr); - rs = ps.executeQuery(); + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + liqfug[0][i] = + Math.log(getPhases()[phase].getComponents()[i].getFugacityCoefficient()); + } - if (rs.next()) { - try (ObjectInputStream ins = - new ObjectInputStream(new ByteArrayInputStream(rs.getBytes("FLUID")))) { - tempSystem = (SystemThermo) ins.readObject(); - } - } - } catch (Exception e) { - logger.error("error", e); - } finally { - try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); + addComponent(k, -2.0 * dn, phase); + // initBeta(); + init_x_y(); + init(1); + + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + // gasfug[1][i] = + // Math.log(getPhases()[0].getComponents()[i].getFugacityCoefficient()); + liqfug[1][i] = + Math.log(getPhases()[phase].getComponents()[i].getFugacityCoefficient()); + } + addComponent(k, dn, phase); + init_x_y(); + init(1); + + for (int i = 0; i < getPhases()[0].getNumberOfComponents(); i++) { + getPhase(phase).getComponent(k).setdfugdn(i, + (liqfug[0][i] - liqfug[1][i]) / (2 * dn)); + getPhase(phase).getComponent(k).setdfugdx(i, (liqfug[0][i] - liqfug[1][i]) / (2 * dn) + * getPhase(phase).getNumberOfMolesInPhase()); + } + // initBeta(); + } } - } catch (Exception e) { - logger.error("err closing database IN MIX..., e"); - logger.error("error", e); } } + this.isInitialized = true; + } - return tempSystem; + /** {@inheritDoc} */ + @Override + public void initPhysicalProperties() { + for (int i = 0; i < numberOfPhases; i++) { + getPhase(i).initPhysicalProperties(); + } + calcInterfaceProperties(); } /** {@inheritDoc} */ @Override - public void saveFluid(int ID) { - saveObject(ID, ""); + public void initPhysicalProperties(String propertyName) { + for (int i = 0; i < numberOfPhases; i++) { + getPhase(i).initPhysicalProperties(propertyName); + } } /** {@inheritDoc} */ @Override - public void saveFluid(int ID, String text) { - saveObject(ID, text); + public void initProperties() { + initThermoProperties(); + initPhysicalProperties(); } /** {@inheritDoc} */ @Override - public void saveObject(int ID, String text) { - ByteArrayOutputStream fout = new ByteArrayOutputStream(); - try (ObjectOutputStream out = new ObjectOutputStream(fout)) { - out.writeObject(this); - } catch (Exception e) { - logger.error(e.toString()); + public void initRefPhases() { + for (int i = 0; i < numberOfPhases; i++) { + getPhase(i).initRefPhases(false); } - byte[] byteObject = fout.toByteArray(); - ByteArrayInputStream inpStream = new ByteArrayInputStream(byteObject); + } - neqsim.util.database.NeqSimBlobDatabase database = - new neqsim.util.database.NeqSimBlobDatabase(); + /** {@inheritDoc} */ + @Override + public final void initTotalNumberOfMoles(double change) { + setTotalNumberOfMoles(getTotalNumberOfMoles() + change); + // System.out.println("total moles: " + totalNumberOfMoles); + for (int j = 0; j < numberOfPhases; j++) { + for (int i = 0; i < numberOfComponents; i++) { + getPhase(j).getComponents()[i] + .setNumberOfmoles(phaseArray[phaseIndex[0]].getComponents()[i].getNumberOfmoles()); + } + } + } - try { - java.sql.Connection con = database.openConnection(); + /** {@inheritDoc} */ + @Override + public void setPhaseType(int phaseToChange, String phaseName) { + // System.out.println("new phase type: cha " + pt); + if (allowPhaseShift) { + phaseType[phaseIndex[phaseToChange]] = PhaseType.byName(phaseName); + } + } - java.sql.PreparedStatement ps = - con.prepareStatement("REPLACE INTO fluid_blobdb (ID, FLUID) VALUES (?,?)"); - ps.setInt(1, ID); - ps.setBlob(2, inpStream); + /** {@inheritDoc} */ + @Override + public void invertPhaseTypes() { + // Following code was from public void setPhaseType(int phaseToChange, String + // phaseTypeName) { + /* + * int newPhaseType = 0; if (phaseTypeName.equals("gas")) { newPhaseType = 1; } else if + * (StateOfMatter.isLiquid(PhaseType.byDesc(phaseTypeName))) { newPhaseType = 0; } else { + * newPhaseType = 0; } + */ - ps.executeUpdate(); - /* - * if (!text.isEmpty()) { ps = con.prepareStatement( - * "REPLACE INTO fluidinfo (ID, TEXT) VALUES (?,?)"); ps.setInt(1, ID); ps.setString(2, text); - * } - * - * ps.executeUpdate(); - * - */ - } catch (Exception e) { - logger.error("error", e); - } finally { - try { - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("err closing database IN MIX...", e); + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + if (phaseType[i] == PhaseType.byValue(0)) { + phaseType[i] = PhaseType.byValue(1); + } else { + phaseType[i] = PhaseType.byValue(0); } } - // database.execute("INSERT INTO fluid_blobdb VALUES ('1'," + sqlString + ")"); } /** {@inheritDoc} */ @Override - public void saveObjectToFile(String filePath, String fluidName) { - try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath, false))) { - out.writeObject(this); - } catch (Exception e) { - logger.error(e.toString()); - } + public final boolean isChemicalSystem() { + return chemicalSystem; } /** {@inheritDoc} */ @Override - public SystemInterface readObjectFromFile(String filePath, String fluidName) { - SystemThermo tempSystem = null; - try (ObjectInputStream objectinputstream = - new ObjectInputStream(new FileInputStream(filePath))) { - tempSystem = (SystemThermo) objectinputstream.readObject(); - } catch (Exception e) { - logger.error(e.toString()); - } - return tempSystem; + public final void isChemicalSystem(boolean temp) { + chemicalSystem = temp; } /** {@inheritDoc} */ @Override - public String getMixingRuleName() { - return ((PhaseEosInterface) getPhase(0)).getMixingRule().getMixingRuleName(); + public boolean isForcePhaseTypes() { + return forcePhaseTypes; } /** {@inheritDoc} */ @Override - public String getFluidInfo() { - return fluidInfo; + public boolean isImplementedCompositionDeriativesofFugacity() { + return implementedCompositionDeriativesofFugacity; } /** {@inheritDoc} */ @Override - public void setFluidInfo(String info) { - this.fluidInfo = info; + public void isImplementedCompositionDeriativesofFugacity(boolean isImpl) { + this.implementedCompositionDeriativesofFugacity = isImpl; } /** {@inheritDoc} */ @Override - public java.lang.String getFluidName() { - return fluidName; + public boolean isImplementedPressureDeriativesofFugacity() { + return implementedPressureDeriativesofFugacity; } /** {@inheritDoc} */ @Override - public void setFluidName(java.lang.String fluidName) { - this.fluidName = fluidName; + public boolean isImplementedTemperatureDeriativesofFugacity() { + return implementedTemperatureDeriativesofFugacity; } - public void addToComponentNames(java.lang.String name) { - for (int j = 0; j < componentNames.size(); j++) { - componentNames.set(j, componentNames.get(j) + name); - } - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - for (int j = 0; j < componentNames.size(); j++) { - getPhase(i).getComponent(j) - .setComponentName(getPhase(i).getComponent(j).getComponentName() + name); - } - } + /** {@inheritDoc} */ + @Override + public boolean isMultiphaseWaxCheck() { + return multiphaseWaxCheck; } - /** - *

- * setLastTBPasPlus. - *

- * - * @return a boolean - */ - public boolean setLastTBPasPlus() { - neqsim.thermo.characterization.PlusCharacterize temp = - new neqsim.thermo.characterization.PlusCharacterize(this); - if (temp.hasPlusFraction()) { - return false; - } else { - temp.setHeavyTBPtoPlus(); - } - return true; + /** {@inheritDoc} */ + @Override + public boolean isNumericDerivatives() { + return numericDerivatives; } /** {@inheritDoc} */ @Override - public neqsim.thermo.characterization.Characterise getCharacterization() { - return characterization; + public boolean isPhase(int i) { + // TODO: what if i > numberofphases? + if (i > phaseArray.length) { + return false; + } + + // getPhase(i) without try/catch + return phaseArray[phaseIndex[i]] != null; } /** {@inheritDoc} */ @Override - public void calcKIJ(boolean ok) { - neqsim.thermo.mixingRule.EosMixingRules.calcEOSInteractionParameters = ok; + public void normalizeBeta() { + double tot = 0.0; for (int i = 0; i < numberOfPhases; i++) { - ((PhaseEosInterface) getPhase(i)).getMixingRule().setCalcEOSInteractionParameters(ok); + tot += beta[phaseIndex[i]]; + } + for (int i = 0; i < numberOfPhases; i++) { + beta[phaseIndex[i]] /= tot; } } /** {@inheritDoc} */ @Override - public java.lang.String getModelName() { - return modelName; - } + public void orderByDensity() { + boolean change = false; + // int count = 0; - /** - * Setter for property modelName. - * - * @param modelName New value of property modelName. - */ - public void setModelName(java.lang.String modelName) { - this.modelName = modelName; + for (int i = 0; i < getNumberOfPhases(); i++) { + if (getPhase(i).getPhysicalProperties() == null) { + getPhase(i).initPhysicalProperties("density"); + } + getPhase(i).getPhysicalProperties().setPhase(getPhase(i)); + } + + do { + change = false; + // count++; + for (int i = 1; i < getNumberOfPhases(); i++) { + if (i == 4) { + break; + } + + try { + if (change || getPhase(i).getPhysicalProperties() == null) { + getPhase(i).initPhysicalProperties("density"); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + if (getPhase(i).getPhysicalProperties().calcDensity() < getPhase(i - 1) + .getPhysicalProperties().calcDensity()) { + int tempIndex1 = getPhaseIndex(i - 1); + int tempIndex2 = getPhaseIndex(i); + setPhaseIndex(i, tempIndex1); + setPhaseIndex(i - 1, tempIndex2); + change = true; + } + } + } while (change); } /** {@inheritDoc} */ @Override - public boolean allowPhaseShift() { - return allowPhaseShift; + public SystemInterface phaseToSystem(int phaseNumber) { + SystemInterface newSystem = this.clone(); + + for (int j = 0; j < getMaxNumberOfPhases(); j++) { + for (int i = 0; i < getPhase(j).getNumberOfComponents(); i++) { + newSystem.getPhase(j).getComponent(i) + .setNumberOfmoles(getPhase(phaseNumber).getComponent(i).getNumberOfMolesInPhase()); + newSystem.getPhase(j).getComponent(i).setNumberOfMolesInPhase( + getPhase(phaseNumber).getComponent(i).getNumberOfMolesInPhase()); + } + } + + newSystem.setTotalNumberOfMoles(getPhase(phaseNumber).getNumberOfMolesInPhase()); + + newSystem.init(0); + newSystem.setNumberOfPhases(1); + newSystem.setPhaseType(0, getPhase(phaseNumber).getType()); // phaseType[phaseNumber]); + newSystem.init(1); + return newSystem; } /** {@inheritDoc} */ @Override - public void allowPhaseShift(boolean allowPhaseShift) { - this.allowPhaseShift = allowPhaseShift; + public SystemInterface phaseToSystem(int phaseNumber1, int phaseNumber2) { + SystemInterface newSystem = this.clone(); + + for (int j = 0; j < getMaxNumberOfPhases(); j++) { + for (int i = 0; i < getPhase(j).getNumberOfComponents(); i++) { + newSystem.getPhases()[j].getComponents()[i] + .setNumberOfmoles(getPhase(phaseNumber1).getComponents()[i].getNumberOfMolesInPhase() + + getPhase(phaseNumber2).getComponents()[i].getNumberOfMolesInPhase()); + newSystem.getPhases()[j].getComponents()[i].setNumberOfMolesInPhase( + getPhase(phaseNumber1).getComponents()[i].getNumberOfMolesInPhase() + + getPhase(phaseNumber2).getComponents()[i].getNumberOfMolesInPhase()); + } + } + + newSystem.setTotalNumberOfMoles(getPhase(phaseNumber1).getNumberOfMolesInPhase() + + getPhase(phaseNumber2).getNumberOfMolesInPhase()); + + newSystem.init(0); + + newSystem.setNumberOfPhases(1); + // newSystem.setPhaseType(0, + // getPhase(phaseNumber1).getType()); //phaseType[phaseNumber]); + newSystem.init(1); + return newSystem; } /** {@inheritDoc} */ @Override - public double getProperty(String prop, String compName, int phase) { - if (prop.equals("molefraction")) { - return getPhase(phase).getComponent(compName).getx(); - } else if (prop.equals("fugacitycoefficient")) { - return getPhase(phase).getComponent(compName).getFugacityCoefficient(); - } else if (prop.equals("logfugdT")) { - return getPhase(phase).getComponent(compName).getdfugdt(); - } else if (prop.equals("logfugdP")) { - return getPhase(phase).getComponent(compName).getdfugdp(); - } else { - return 1.0; + public SystemInterface phaseToSystem(PhaseInterface newPhase) { + // TODO: other phaseToSystem functions returns clones. + for (int i = 0; i < newPhase.getNumberOfComponents(); i++) { + newPhase.getComponents()[i] + .setNumberOfmoles(newPhase.getComponents()[i].getNumberOfMolesInPhase()); } - } - /** {@inheritDoc} */ - @Override - public double getProperty(String prop, int phase) { - initPhysicalProperties(); - if (prop.equals("temperature")) { - return getPhase(phase).getTemperature(); - } else if (prop.equals("pressure")) { - return getPhase(phase).getPressure(); - } else if (prop.equals("compressibility")) { - return getPhase(phase).getZ(); - } else if (prop.equals("density")) { - return getPhase(phase).getPhysicalProperties().getDensity(); - } else if (prop.equals("beta")) { - return getPhase(phase).getBeta(); - } else if (prop.equals("enthalpy")) { - return getPhase(phase).getEnthalpy(); - } else if (prop.equals("entropy")) { - return getPhase(phase).getEntropy(); - } else if (prop.equals("viscosity")) { - return getPhase(phase).getPhysicalProperties().getViscosity(); - } else if (prop.equals("conductivity")) { - return getPhase(phase).getPhysicalProperties().getConductivity(); - } else { - return 1.0; + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + phaseArray[i] = newPhase.clone(); } + + setTotalNumberOfMoles(newPhase.getNumberOfMolesInPhase()); + this.init(0); + setNumberOfPhases(1); + setPhaseType(0, newPhase.getType()); + initBeta(); + init_x_y(); + this.init(1); + return this; } /** {@inheritDoc} */ @Override - public double getProperty(String prop) { - if (prop.equals("numberOfPhases")) { - return numberOfPhases; - } else if (prop.equals("numberOfComponents")) { - return numberOfComponents; - } else if (prop.equals("enthalpy")) { - return getEnthalpy(); - } else if (prop.equals("entropy")) { - return getEntropy(); - } else if (prop.equals("temperature")) { - return getTemperature(); - } else if (prop.equals("pressure")) { - return getPressure(); - } else { - return 1.0; + public SystemInterface phaseToSystem(String phaseName) { + try { + for (int j = 0; j < getMaxNumberOfPhases(); j++) { + if (this.getPhase(j).getPhaseTypeName().equals(phaseName)) { + return phaseToSystem(j); + } + } + } catch (Exception ex) { + logger.error("error....." + fluidName + " has no phase .... " + phaseName + + " ..... returning phase number 0"); } + return phaseToSystem(0); } /** {@inheritDoc} */ @Override - public void saveToDataBase() { - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - // java.sql.ResultSet dataSet = database.getResultSet(("SELECT * FROM - // SYSTEMREPORT")); - // double molarmass = 0.0, stddens = 0.0, boilp = 0.0; + public void readFluid(String fluidName) { + this.fluidName = fluidName; try { - database.execute("delete FROM systemreport"); - int i = 0; - for (; i < numberOfComponents; i++) { - String sqlString = - "'" + Integer.toString(i + 1) + "', '" + getPhase(0).getComponent(i).getName() + "', " - + "'molfrac[-] ', '" + Double.toString(getPhase(0).getComponent(i).getz()) + "'"; + neqsim.util.database.NeqSimFluidDataBase database = + new neqsim.util.database.NeqSimFluidDataBase(); + java.sql.ResultSet dataSet = null; + dataSet = database.getResultSet("SELECT * FROM " + fluidName); - int j = 0; - for (; j < numberOfPhases; j++) { - sqlString += ", '" + Double.toString(getPhase(j).getComponent(i).getx()) + "'"; - } + while (dataSet.next()) { + String componentType = dataSet.getString("ComponentType"); - while (j < 3) { - j++; - sqlString += ", '0'"; + if (componentType.equalsIgnoreCase("normal")) { + addComponent(dataSet.getString("ComponentName"), + Double.parseDouble(dataSet.getString("Rate"))); + } else if (componentType.equalsIgnoreCase("TBP")) { + addTBPfraction(dataSet.getString("ComponentName"), + Double.parseDouble(dataSet.getString("Rate")), + Double.parseDouble(dataSet.getString("MolarMass")) / 1000.0, + Double.parseDouble(dataSet.getString("Density"))); + } else if (componentType.equalsIgnoreCase("plus")) { + addPlusFraction(dataSet.getString("ComponentName"), + Double.parseDouble(dataSet.getString("Rate")), + Double.parseDouble(dataSet.getString("MolarMass")) / 1000.0, + Double.parseDouble(dataSet.getString("Density"))); + } else { + logger.error( + "component type need to be specified for ... " + dataSet.getString("ComponentName")); } - - logger.error(sqlString); - - database.execute("INSERT INTO systemreport VALUES (" + sqlString + ")"); - } - - // beta - i++; - - String sqlString = "'" + Integer.toString(i + 1) + "', 'PhaseFraction', " + "'[-]', '1'"; - - int j = 0; - for (; j < numberOfPhases; j++) { - sqlString += ", '" + Double.toString(getPhase(j).getBeta()) + "'"; - } - - while (j < 3) { - j++; - sqlString += ", '0'"; } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } - logger.error(sqlString); - - database.execute("INSERT INTO systemreport VALUES (" + sqlString + ")"); - - // molarmass - i++; - - sqlString = "'" + Integer.toString(i + 1) + "', 'MolarMass', " + "'kg/mol ', '" - + Double.toString(getMolarMass()) + "'"; + /** {@inheritDoc} */ + @Override + public SystemInterface readObject(int ID) { + java.sql.ResultSet rs = null; + SystemThermo tempSystem = null; + neqsim.util.database.NeqSimBlobDatabase database = + new neqsim.util.database.NeqSimBlobDatabase(); + try { + java.sql.Connection con = database.openConnection(); + String sqlStr = "SELECT FLUID FROM fluid_blobdb WHERE ID=" + Integer.toString(ID); + java.sql.PreparedStatement ps = con.prepareStatement(sqlStr); + rs = ps.executeQuery(); - j = 0; - for (; j < numberOfPhases; j++) { - sqlString += ", '" + Double.toString(getPhase(j).getMolarMass()) + "'"; - } - while (j < 3) { - j++; - sqlString += ", '0'"; + if (rs.next()) { + try (ObjectInputStream ins = + new ObjectInputStream(new ByteArrayInputStream(rs.getBytes("FLUID")))) { + tempSystem = (SystemThermo) ins.readObject(); + } } - - // System.out.println(sqlString); - database.execute("INSERT INTO systemreport VALUES (" + sqlString + ")"); - - // dataSet.next(); - // dataSet.updateString("SPECIFICATION", "dette"); - // double test = dataSet.getDouble("Phase1"); - // System.out.println(test); - // dataSet.next(); - // dataSet.updateString(1,"tesst"); - database.getConnection().close(); - } catch (Exception e) { - logger.error("failed " + e.toString()); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } finally { try { if (database.getStatement() != null) { @@ -4092,440 +3884,439 @@ public void saveToDataBase() { if (database.getConnection() != null) { database.getConnection().close(); } - } catch (Exception e) { - logger.error("err closing database IN MIX...", e); + } catch (Exception ex) { + logger.error("err closing database IN MIX...", ex); } } + + return tempSystem; } /** {@inheritDoc} */ @Override - public neqsim.standards.StandardInterface getStandard() { - return standard; + public SystemInterface readObjectFromFile(String filePath, String fluidName) { + SystemThermo tempSystem = null; + try (ObjectInputStream objectinputstream = + new ObjectInputStream(new FileInputStream(filePath))) { + tempSystem = (SystemThermo) objectinputstream.readObject(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + return tempSystem; + } + + /** + * Re-initialize phasetype, beta and phaseindex arrays, same initialization which is used in + * constructor. + */ + public void reInitPhaseInformation() { + reInitPhaseType(); + phaseType[4] = phaseType[3]; + phaseType[5] = phaseType[3]; + + for (int i = 0; i < MAX_PHASES; i++) { + beta[i] = 1.0; + } + + phaseIndex = new int[] {0, 1, 2, 3, 4, 5}; } /** {@inheritDoc} */ @Override - public neqsim.standards.StandardInterface getStandard(String standardName) { - this.setStandard(standardName); - return standard; + public void reInitPhaseType() { + phaseType[0] = PhaseType.byValue(1); + phaseType[1] = PhaseType.byValue(0); + phaseType[2] = PhaseType.byValue(0); + phaseType[3] = PhaseType.byValue(0); + // TODO: why stop at 3 and not iterate through MAX_PHASES elements? } - /** - * {@inheritDoc} - * - * Setter for property standard. - */ + /** {@inheritDoc} */ @Override - public void setStandard(String standardName) { - if (standardName.equals("ISO1992")) { - this.standard = new neqsim.standards.gasQuality.Standard_ISO6976(this); - } else if (standardName.equals("Draft_ISO18453")) { - this.standard = new neqsim.standards.gasQuality.Draft_ISO18453(this); - } else { - this.standard = new neqsim.standards.gasQuality.Standard_ISO6976(this); + public void removeComponent(String name) { + name = ComponentInterface.getComponentNameFromAlias(name); + + setTotalNumberOfMoles( + getTotalNumberOfMoles() - phaseArray[0].getComponent(name).getNumberOfmoles()); + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + getPhase(i).removeComponent(name, getTotalNumberOfMoles(), + getPhase(i).getComponent(name).getNumberOfMolesInPhase()); } + + componentNames.remove(name); + numberOfComponents--; } - /** - * {@inheritDoc} - * - * Getter for property hasPlusFraction. - */ + /** {@inheritDoc} */ @Override - public boolean hasPlusFraction() { - for (int i = 0; i < numberOfComponents; i++) { - if (getPhase(0).getComponent(i).isIsPlusFraction()) { - return true; + public void removePhase(int specPhase) { + setTotalNumberOfMoles(getTotalNumberOfMoles() - getPhase(specPhase).getNumberOfMolesInPhase()); + + for (int j = 0; j < numberOfPhases; j++) { + for (int i = 0; i < numberOfComponents; i++) { + getPhase(j).getComponents()[i] + .setNumberOfmoles(getPhase(j).getComponents()[i].getNumberOfmoles() + - getPhase(specPhase).getComponents()[i].getNumberOfMolesInPhase()); + } + } + + ArrayList phaseList = new ArrayList(0); + for (int i = 0; i < numberOfPhases; i++) { + if (specPhase != i) { + phaseList.add(phaseArray[phaseIndex[i]]); + } + } + + // phaseArray = new PhaseInterface[numberOfPhases - 1]; + for (int i = 0; i < numberOfPhases - 1; i++) { + // phaseArray[i] = (PhaseInterface) phaseList.get(i); + if (i >= specPhase) { + phaseIndex[i] = phaseIndex[i + 1]; + phaseType[i] = phaseType[i + 1]; } } - return false; + numberOfPhases--; } - /** - *

- * hasTBPFraction. - *

- * - * @return a boolean - */ - public boolean hasTBPFraction() { - for (int i = 0; i < numberOfComponents; i++) { - if (getPhase(0).getComponent(i).isIsTBPfraction()) { - return true; + /** {@inheritDoc} */ + @Override + public void removePhaseKeepTotalComposition(int specPhase) { + ArrayList phaseList = new ArrayList(0); + for (int i = 0; i < numberOfPhases; i++) { + if (specPhase != i) { + phaseList.add(phaseArray[phaseIndex[i]]); } } - return false; - } - /** {@inheritDoc} */ - @Override - public void tuneModel(String model, double val, int phase) { - if (model.equals("viscosity")) { - getPhase(phase).getPhysicalProperties().getViscosityModel().tuneModel(val, - getPhase(phase).getTemperature(), getPhase(phase).getPressure()); - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - for (int j = 0; j < numberOfPhases; j++) { - getPhase(i).getComponent(j) - .setCriticalViscosity(getPhase(phase).getComponent(j).getCriticalViscosity()); - } + // phaseArray = new PhaseInterface[numberOfPhases - 1]; + for (int i = 0; i < numberOfPhases - 1; i++) { + // phaseArray[i] = (PhaseInterface) phaseList.get(i); + if (i >= specPhase) { + phaseIndex[i] = phaseIndex[i + 1]; + phaseType[i] = phaseType[i + 1]; } } - initPhysicalProperties(); + numberOfPhases--; } /** {@inheritDoc} */ @Override - public double getHeatOfVaporization() { - if (numberOfPhases < 2) { - return 0; - } else { - return getPhase(0).getEnthalpy() / getPhase(0).getNumberOfMolesInPhase() - - getPhase(1).getEnthalpy() / getPhase(1).getNumberOfMolesInPhase(); + public void renameComponent(String oldName, String newName) { + componentNames.set(getPhase(0).getComponent(oldName).getComponentNumber(), newName); + for (int i = 0; i < maxNumberOfPhases; i++) { + getPhase(i).getComponent(oldName).setComponentName(newName); } } /** {@inheritDoc} */ @Override - public void readFluid(String fluidName) { - this.fluidName = fluidName; - try { - neqsim.util.database.NeqSimFluidDataBase database = - new neqsim.util.database.NeqSimFluidDataBase(); - java.sql.ResultSet dataSet = null; - dataSet = database.getResultSet("SELECT * FROM " + fluidName); - - while (dataSet.next()) { - String componentType = dataSet.getString("ComponentType"); - - if (componentType.equals("normal")) { - addComponent(dataSet.getString("ComponentName"), - Double.parseDouble(dataSet.getString("Rate"))); - } else if (componentType.equals("TBP")) { - addTBPfraction(dataSet.getString("ComponentName"), - Double.parseDouble(dataSet.getString("Rate")), - Double.parseDouble(dataSet.getString("MolarMass")) / 1000.0, - Double.parseDouble(dataSet.getString("Density"))); - } else if (componentType.equals("Plus")) { - addPlusFraction(dataSet.getString("ComponentName"), - Double.parseDouble(dataSet.getString("Rate")), - Double.parseDouble(dataSet.getString("MolarMass")) / 1000.0, - Double.parseDouble(dataSet.getString("Density"))); - } else { - logger.error( - "component type need to be specified for ... " + dataSet.getString("ComponentName")); - } - } - } catch (Exception e) { - String err = e.toString(); - logger.error(err); + public void replacePhase(int repPhase, PhaseInterface newPhase) { + for (int i = 0; i < 2; i++) { + phaseArray[i] = newPhase.clone(); } + setTotalNumberOfMoles(newPhase.getNumberOfMolesInPhase()); } /** {@inheritDoc} */ @Override - public String[][] getResultTable() { - return resultTable; + public void reset() { + for (int i = 0; i < numberOfComponents; i++) { + // TODO: numeric issue, nearly zero + addComponent(getPhase(0).getComponent(i).getComponentName(), + -getPhase(0).getComponent(i).getNumberOfmoles()); + } } - // public String[] getResultArray1(){ - // ArrayList list = new ArrayList(); - // for(int i=0;i moleFractionFrom) { - logger.debug("error in addPhaseFractionToPhase()...to low fraction in from phase"); - moleFraction = moleFractionFrom; - } + /** {@inheritDoc} */ + @Override + public void setAttractiveTerm(int i) { + for (int k = 0; k < getMaxNumberOfPhases(); k++) { + phaseArray[k].setAttractiveTerm(i); } + } - for (int i = 0; i < getPhase(0).getNumberOfComponents(); i++) { - double change = 0.0; - change = getPhase(phaseNumbFrom).getComponent(i).getNumberOfMolesInPhase() * moleFraction; - addComponent(i, change, phaseNumbTo); - addComponent(i, -change, phaseNumbFrom); + /** {@inheritDoc} */ + @Override + public final void setBeta(double b) { + if (b < 0) { + b = neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; + } + if (b > 1) { + b = 1.0 - neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; + } + beta[0] = b; + beta[1] = 1.0 - b; + } + + /** {@inheritDoc} */ + @Override + public final void setBeta(int phase, double b) { + if (b < 0) { + b = neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; + } + if (b > 1) { + b = 1.0 - neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; } - init_x_y(); + beta[phaseIndex[phase]] = b; } /** {@inheritDoc} */ @Override - public void renameComponent(String oldName, String newName) { - componentNames.set(getPhase(0).getComponent(oldName).getComponentNumber(), newName); - for (int i = 0; i < maxNumberOfPhases; i++) { - getPhase(i).getComponent(oldName).setComponentName(newName); + public void setBmixType(int bmixType) { + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + ((PhaseEosInterface) getPhase(i)).getMixingRule().setBmixType(bmixType); + } + } + + /** {@inheritDoc} */ + @Override + public void setComponentNames(String[] componentNames) { + for (int i = 0; i < componentNames.length; i++) { + this.componentNames.set(i, componentNames[i]); } } @@ -4552,207 +4343,301 @@ public void setComponentNameTagOnNormalComponents(String nameTag) { /** {@inheritDoc} */ @Override - public String getComponentNameTag() { - return componentNameTag; + public void setEmptyFluid() { + for (PhaseInterface tmpPhase : phaseArray) { + if (tmpPhase != null) { + tmpPhase.setEmptyFluid(); + } + } + totalNumberOfMoles = 0.0; } /** {@inheritDoc} */ @Override - public void addGasToLiquid(double fraction) { - for (int i = 0; i < getPhase(0).getNumberOfComponents(); i++) { - double change = getPhase(0).getComponent(i).getNumberOfMolesInPhase() * fraction; - addComponent(i, -change, 0); - addComponent(i, change, 1); - } + public void setFluidInfo(String info) { + this.fluidInfo = info; } /** {@inheritDoc} */ @Override - public double getTotalNumberOfMoles() { - return this.totalNumberOfMoles; + public void setFluidName(String fluidName) { + this.fluidName = fluidName; } /** {@inheritDoc} */ @Override - public void setTotalNumberOfMoles(double totalNumberOfMoles) { - this.totalNumberOfMoles = totalNumberOfMoles; + public void setForcePhaseTypes(boolean forcePhaseTypes) { + this.forcePhaseTypes = forcePhaseTypes; } /** {@inheritDoc} */ @Override - public boolean hasPhaseType(String phaseTypeName) { - for (int i = 0; i < numberOfPhases; i++) { - if (getPhase(i).getPhaseTypeName().equals(phaseTypeName)) { - return true; + public boolean setHeavyTBPfractionAsPlusFraction() { + int compNumber = 0; + double molarMass = 0; + boolean foundTBP = false; + + for (int i = 0; i < numberOfComponents; i++) { + if (getPhase(0).getComponent(i).isIsTBPfraction() + || getPhase(0).getComponent(i).isIsPlusFraction()) { + if (getPhase(0).getComponent(i).getMolarMass() > molarMass) { + molarMass = getPhase(0).getComponent(i).getMolarMass(); + compNumber = i; + foundTBP = true; + } } } - return false; + if (foundTBP) { + for (int i = 0; i < maxNumberOfPhases; i++) { + getPhase(0).getComponent(compNumber).setIsPlusFraction(true); + } + } + return foundTBP; } /** {@inheritDoc} */ @Override - public PhaseInterface getPhase(String phaseTypeName) { - for (int i = 0; i < numberOfPhases; i++) { - if (getPhase(i).getPhaseTypeName().equals(phaseTypeName)) { - return getPhase(i); - } + public void setHydrateCheck(boolean hydrateCheck) { + init(0); + if (hydrateCheck) { + addHydratePhase(); } - throw new RuntimeException(); + this.hydrateCheck = hydrateCheck; + init(0); } /** {@inheritDoc} */ @Override - public int getPhaseNumberOfPhase(String phaseTypeName) { - for (int i = 0; i < numberOfPhases; i++) { - if (getPhase(i).getPhaseTypeName().equals(phaseTypeName)) { - return i; - } - } - return 0; + public void setImplementedCompositionDeriativesofFugacity( + boolean implementedCompositionDeriativesofFugacity) { + this.implementedCompositionDeriativesofFugacity = implementedCompositionDeriativesofFugacity; } /** {@inheritDoc} */ @Override - public int getPhaseIndexOfPhase(String phaseTypeName) { - for (int i = 0; i < numberOfPhases; i++) { - if (getPhase(i).getPhaseTypeName().equals(phaseTypeName)) { - return phaseIndex[i]; - } - } - return phaseIndex[0]; + public void setImplementedPressureDeriativesofFugacity( + boolean implementedPressureDeriativesofFugacity) { + this.implementedPressureDeriativesofFugacity = implementedPressureDeriativesofFugacity; } /** {@inheritDoc} */ @Override - public PhaseInterface getPhaseOfType(String phaseName) { - for (int i = 0; i < numberOfPhases; i++) { - if (getPhase(i).getPhaseTypeName().equals(phaseName)) { - return getPhase(i); - } - } - return null; + public void setImplementedTemperatureDeriativesofFugacity( + boolean implementedTemperatureDeriativesofFugacity) { + this.implementedTemperatureDeriativesofFugacity = implementedTemperatureDeriativesofFugacity; } /** {@inheritDoc} */ @Override - public double calcHenrysConstant(String component) { - if (numberOfPhases != 2) { - logger.error("Can't calculate Henrys constant - two phases must be present."); - return 0; - } else { - int compNumb = getPhase(getPhaseIndex(0)).getComponent(component).getComponentNumber(); - double hc = getPhase(getPhaseIndex(0)).getFugacity(compNumb) - / getPhase(getPhaseIndex(1)).getComponent(component).getx(); - return hc; - } + public void setInitType(int initType) { + this.initType = initType; } /** *

- * useTVasIndependentVariables. + * setLastTBPasPlus. *

* * @return a boolean */ - public boolean useTVasIndependentVariables() { - return useTVasIndependentVariables; - } - - /** {@inheritDoc} */ - @Override - public void setUseTVasIndependentVariables(boolean useTVasIndependentVariables) { - for (int i = 0; i < numberOfPhases; i++) { - getPhase(i).setTotalVolume(getPhase(i).getVolume()); - getPhase(i).setConstantPhaseVolume(useTVasIndependentVariables); - getPhase(i).calcMolarVolume(!useTVasIndependentVariables); + public boolean setLastTBPasPlus() { + neqsim.thermo.characterization.PlusCharacterize temp = + new neqsim.thermo.characterization.PlusCharacterize(this); + if (temp.hasPlusFraction()) { + return false; + } else { + temp.setHeavyTBPtoPlus(); } - this.useTVasIndependentVariables = useTVasIndependentVariables; + return true; } /** {@inheritDoc} */ @Override - public void setBmixType(int bmixType) { - for (int i = 0; i < getMaxNumberOfPhases(); i++) { - ((PhaseEosInterface) getPhase(i)).getMixingRule().setBmixType(bmixType); - } + public void setMaxNumberOfPhases(int maxNumberOfPhases) { + this.maxNumberOfPhases = maxNumberOfPhases; } /** {@inheritDoc} */ @Override - public boolean isImplementedTemperatureDeriativesofFugacity() { - return implementedTemperatureDeriativesofFugacity; + public final void setMixingRule(int type) { + mixingRule = type; + if (numberOfPhases < 4) { + resetPhysicalProperties(); + } + for (int i = 0; i < maxNumberOfPhases; i++) { + if (isPhase(i)) { + getPhase(i).setMixingRule(type); + getPhase(i).initPhysicalProperties(); + } + } } /** {@inheritDoc} */ @Override - public void setImplementedTemperatureDeriativesofFugacity( - boolean implementedTemperatureDeriativesofFugacity) { - this.implementedTemperatureDeriativesofFugacity = implementedTemperatureDeriativesofFugacity; + public void setMixingRule(String typename) { + int var = 0; + if (typename.equals("no")) { + var = 1; + } else if (typename.equals("classic")) { + var = 2; + } else if (typename.equals("HV")) { + var = 4; + } else if (typename.equals("WS")) { + var = 5; + } else if (typename.equals("CPA-Mix")) { + var = 7; + } else if (typename.equals("classic-T")) { + var = 8; + } else if (typename.equals("classic-T-cpa")) { + var = 9; + } else if (typename.equals("classic-Tx-cpa")) { + var = 10; + } else { + var = 1; + } + this.setMixingRule(var); } /** {@inheritDoc} */ @Override - public boolean isImplementedPressureDeriativesofFugacity() { - return implementedPressureDeriativesofFugacity; + public void setMixingRule(String typename, String GEmodel) { + setMixingRuleGEmodel(GEmodel); + setMixingRule(typename); } - /** {@inheritDoc} */ - @Override - public void setImplementedPressureDeriativesofFugacity( - boolean implementedPressureDeriativesofFugacity) { - this.implementedPressureDeriativesofFugacity = implementedPressureDeriativesofFugacity; + /** + *

+ * setMixingRuleGEmodel. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setMixingRuleGEmodel(String name) { + for (PhaseInterface tmpPhase : phaseArray) { + if (tmpPhase != null) { + tmpPhase.setMixingRuleGEModel(name); + } + } } /** {@inheritDoc} */ @Override - public boolean isImplementedCompositionDeriativesofFugacity() { - return implementedCompositionDeriativesofFugacity; - } + public SystemInterface setModel(String model) { + SystemInterface tempModel = null; + try { + if (model.equals("SRK-EOS")) { + tempModel = new SystemSrkEos(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("GERG2004-EOS")) { + tempModel = new SystemGERG2004Eos(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("PrEos") || model.equals("PR-EOS")) { + tempModel = new SystemPrEos(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("ScRK-EOS") || model.equals("ScRK-EOS-HV")) { + tempModel = new SystemSrkSchwartzentruberEos(getPhase(0).getTemperature(), + getPhase(0).getPressure()); + } else if (model.equals("Electrolyte-ScRK-EOS")) { + tempModel = + new SystemFurstElectrolyteEos(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("GERG-water-EOS")) { + tempModel = new SystemGERGwaterEos(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("CPAs-SRK-EOS")) { + tempModel = new SystemSrkCPAs(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("CPAs-SRK-EOS-statoil")) { + tempModel = + new SystemSrkCPAstatoil(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("Electrolyte-CPA-EOS-statoil") + || model.equals("Electrolyte-CPA-EOS")) { + tempModel = new SystemElectrolyteCPAstatoil(getPhase(0).getTemperature(), + getPhase(0).getPressure()); + } else if (model.equals("UMR-PRU-EoS")) { + tempModel = new SystemUMRPRUMCEos(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("PC-SAFT")) { + tempModel = new SystemPCSAFT(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("GERG-2008-EoS")) { + tempModel = new SystemGERG2004Eos(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("SRK-TwuCoon-Statoil-EOS") || model.equals("SRK-TwuCoon-EOS")) { + tempModel = + new SystemSrkTwuCoonStatoilEos(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("SRK-TwuCoon-Param-EOS")) { + tempModel = + new SystemSrkTwuCoonParamEos(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else if (model.equals("Duan-Sun")) { + tempModel = new SystemDuanSun(getPhase(0).getTemperature(), getPhase(0).getPressure()); + } else { + logger.error("model : " + model + " not defined....."); + } + // tempModel.getCharacterization().setTBPModel("RiaziDaubert"); + tempModel.useVolumeCorrection(true); - /** {@inheritDoc} */ - @Override - public void setImplementedCompositionDeriativesofFugacity( - boolean implementedCompositionDeriativesofFugacity) { - this.implementedCompositionDeriativesofFugacity = implementedCompositionDeriativesofFugacity; - } + logger.info("created class " + tempModel); + for (int i = 0; i < getPhase(0).getNumberOfComponents(); i++) { + logger.info("adding " + getPhase(0).getComponent(i).getName() + " moles " + + getPhase(0).getComponent(i).getNumberOfmoles() + " isPlus " + + getPhase(0).getComponent(i).isIsPlusFraction() + " isTBP " + + getPhase(0).getComponent(i).isIsTBPfraction()); + if (getPhase(0).getComponent(i).isIsTBPfraction()) { + tempModel.addTBPfraction(getPhase(0).getComponent(i).getName(), + getPhase(0).getComponent(i).getNumberOfmoles(), + getPhase(0).getComponent(i).getMolarMass(), + getPhase(0).getComponent(i).getNormalLiquidDensity()); + } else if (getPhase(0).getComponent(i).isIsPlusFraction()) { + tempModel.addPlusFraction(getPhase(0).getComponent(i).getName(), + getPhase(0).getComponent(i).getNumberOfmoles(), + getPhase(0).getComponent(i).getMolarMass(), + getPhase(0).getComponent(i).getNormalLiquidDensity()); + } else { + tempModel.addComponent(getPhase(0).getComponent(i).getName(), + getPhase(0).getComponent(i).getNumberOfmoles()); + } + } - /** {@inheritDoc} */ - @Override - public void deleteFluidPhase(int phase) { - for (int i = phase; i < numberOfPhases; i++) { - phaseIndex[i] = phaseIndex[i + 1]; + // if (tempModel.getCharacterization().characterize()) { + // tempModel.addPlusFraction(6, 100); + // } + if (NeqSimDataBase.createTemporaryTables()) { + logger.info("done ... create database ......"); + tempModel.createDatabase(true); + } + logger.info("done ... set mixing rule ......"); + tempModel.autoSelectMixingRule(); + if (model.equals("Electrolyte-ScRK-EOS")) { // || + // model.equals("Electrolyte-CPA-EOS-statoil" + logger.info("chemical reaction init......"); + tempModel.setMultiPhaseCheck(false); + tempModel.chemicalReactionInit(); + } else { + tempModel.setMultiPhaseCheck(true); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - numberOfPhases--; - } - - /** {@inheritDoc} */ - @Override - public int getMaxNumberOfPhases() { - return maxNumberOfPhases; + return tempModel; } - /** {@inheritDoc} */ - @Override - public void setMaxNumberOfPhases(int maxNumberOfPhases) { - this.maxNumberOfPhases = maxNumberOfPhases; + /** + * Setter for property modelName. + * + * @param modelName New value of property modelName. + */ + public void setModelName(String modelName) { + this.modelName = modelName; } /** {@inheritDoc} */ @Override public void setMolarComposition(double[] molefractions) { - setMolarComposition(molefractions, ""); + setMolarFractions(molefractions, ""); } /** {@inheritDoc} */ @Override - public void setMolarCompositionPlus(double[] molefractions) { - setMolarComposition(molefractions, "Plus"); + public void setMolarCompositionOfPlusFluid(double[] molefractions) { + setMolarFractions(molefractions, "PlusFluid"); } /** {@inheritDoc} */ @Override - public void setMolarCompositionOfPlusFluid(double[] molefractions) { - setMolarComposition(molefractions, "PlusFluid"); + public void setMolarCompositionPlus(double[] molefractions) { + setMolarFractions(molefractions, "Plus"); } /** {@inheritDoc} */ @@ -4767,32 +4652,85 @@ public void setMolarFlowRates(double[] moles) { } } - /** {@inheritDoc} */ - @Override - public double[] getMolarRate() { - double[] comp = new double[getPhase(0).getNumberOfComponents()]; - - for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { - comp[compNumb] = getPhase(0).getComponent(compNumb).getNumberOfmoles(); + /** + * Wrapper function for addComponent to set fluid type and specify mole fractions. + * + * @param molefractions Component mole fraction of each component. + * @param type Type of fluid. Supports "PlusFluid", "Plus" and default. + */ + private void setMolarFractions(double[] molefractions, String type) { + double totalFlow = getTotalNumberOfMoles(); + if (totalFlow < 1e-100) { + String msg = "must be larger than 0 (1e-100) when setting molar composition"; + throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + "setMolarComposition", "totalFlow", msg)); } - return comp; - } + double sum = 0; + for (double value : molefractions) { + sum += value; + } + setEmptyFluid(); - /** {@inheritDoc} */ - @Override - public double[] getMolarComposition() { - double[] comp = new double[getPhase(0).getNumberOfComponents()]; + switch (type) { + case "PlusFluid": + // TODO: really skip last component of molefraction? + for (int compNumb = 0; compNumb < molefractions.length - 1; compNumb++) { + addComponent(compNumb, totalFlow * molefractions[compNumb] / sum); + } + for (int j = 0; j < getCharacterization().getLumpingModel().getNumberOfLumpedComponents() + - 1; j++) { + // addComponent(compNumb, totalFlow * molefractions[molefractions.length - 1] + // * getCharacterization().getLumpingModel().getFractionOfHeavyEnd(j) / sum); + } + break; + case "Plus": + // TODO: compNumb can be negative + for (int compNumb = 0; compNumb < this.numberOfComponents + - getCharacterization().getLumpingModel().getNumberOfLumpedComponents(); compNumb++) { + addComponent(compNumb, totalFlow * molefractions[compNumb] / sum); + } + int ii = 0; + for (int compNumb = this.numberOfComponents - getCharacterization().getLumpingModel() + .getNumberOfLumpedComponents(); compNumb < this.numberOfComponents; compNumb++) { + addComponent(compNumb, + totalFlow * getCharacterization().getLumpingModel().getFractionOfHeavyEnd(ii++) + * molefractions[this.numberOfComponents + - getCharacterization().getLumpingModel().getNumberOfLumpedComponents()] + / sum); + } + break; + default: + // NB! It will allow setting composition for only the first items. + // for (int compNumb = 0; compNumb <= molefractions.length - 1; compNumb++) { + // NB! Can fail because len(molefractions) < this.numberOfComponents + for (int compNumb = 0; compNumb <= this.numberOfComponents - 1; compNumb++) { + addComponent(compNumb, totalFlow * molefractions[compNumb] / sum); + } + break; + } - for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { - comp[compNumb] = getPhase(0).getComponent(compNumb).getz(); + for (int i = 0; i < getNumberOfPhases(); i++) { + init(0, i); } - return comp; } /** {@inheritDoc} */ @Override - public boolean isMultiphaseWaxCheck() { - return multiphaseWaxCheck; + public void setMultiPhaseCheck(boolean multiPhaseCheck) { + if (getMaxNumberOfPhases() < 3) { + if (multiPhaseCheck) { + setMaxNumberOfPhases(3); + if (phaseArray[1] != null) { + phaseArray[2] = phaseArray[1].clone(); + phaseArray[2].resetMixingRule(phaseArray[0].getMixingRuleNumber()); + phaseArray[2].resetPhysicalProperties(); + phaseArray[2].initPhysicalProperties(); + } + } else { + setMaxNumberOfPhases(2); + } + } + this.multiPhaseCheck = multiPhaseCheck; } /** {@inheritDoc} */ @@ -4803,351 +4741,329 @@ public void setMultiphaseWaxCheck(boolean multiphaseWaxCheck) { /** {@inheritDoc} */ @Override - public String[] getCompIDs() { - String[] ids = new String[numberOfComponents]; - - for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { - ids[compNumb] = Integer.toString(getPhase(0).getComponent(compNumb).getIndex()); - } - return ids; - } - - /** {@inheritDoc} */ - @Override - public String[] getCompFormulaes() { - String[] formula = new String[numberOfComponents]; - - for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { - formula[compNumb] = getPhase(0).getComponent(compNumb).getFormulae(); + public void setNumberOfPhases(int number) { + this.numberOfPhases = number; + if (numberOfPhases > getMaxNumberOfPhases()) { + setMaxNumberOfPhases(number); } - return formula; } /** {@inheritDoc} */ @Override - public String[] getCompNames() { - String[] names = new String[numberOfComponents]; - - for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { - names[compNumb] = getPhase(0).getComponent(compNumb).getComponentName(); - } - return names; + public void setNumericDerivatives(boolean numericDerivatives) { + this.numericDerivatives = numericDerivatives; } /** {@inheritDoc} */ @Override - public double[] getNormalBoilingPointTemperatures() { - double[] bt = new double[numberOfComponents]; - - for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { - bt[compNumb] = getPhase(0).getComponent(compNumb).getNormalBoilingPoint() + 273.15; - } - return bt; + public final void setPC(double PC) { + criticalPressure = PC; } /** {@inheritDoc} */ @Override - public String[] getCapeOpenProperties11() { - return CapeOpenProperties11; + public void setPhase(PhaseInterface phase, int index) { + double temp = phaseArray[index].getTemperature(); + double pres = phaseArray[index].getPressure(); + this.phaseArray[index] = phase; + this.phaseArray[index].setTemperature(temp); + this.phaseArray[index].setPressure(pres); } /** {@inheritDoc} */ @Override - public String[] getCapeOpenProperties10() { - return CapeOpenProperties10; + public final void setPhaseIndex(int index, int phaseIndex) { + this.phaseIndex[index] = phaseIndex; } /** {@inheritDoc} */ @Override - public double[] getMolecularWeights() { - double[] mm = new double[numberOfComponents]; - - for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { - mm[compNumb] = getPhase(0).getComponent(compNumb).getMolarMass() * 1e3; + public void setPhaseType(int phaseToChange, PhaseType pt) { + // System.out.println("new phase type: cha " + pt); + if (allowPhaseShift) { + phaseType[phaseIndex[phaseToChange]] = pt; } - return mm; } /** {@inheritDoc} */ @Override - public String[] getCASNumbers() { - String[] names = new String[numberOfComponents]; - - for (int compNumb = 0; compNumb < numberOfComponents; compNumb++) { - names[compNumb] = getPhase(0).getComponent(compNumb).getCASnumber(); + public void setPhysicalPropertyModel(int type) { + for (int i = 0; i < numberOfPhases; i++) { + getPhase(i).setPhysicalProperties(type); } - return names; } /** {@inheritDoc} */ @Override - public int getNumberOfOilFractionComponents() { - int number = 0; - for (int i = 0; i < getPhase(0).getNumberOfComponents(); i++) { - if (getPhase(0).getComponent(i).isIsTBPfraction() - || getPhase(0).getComponent(i).isIsPlusFraction()) { - number++; - } + public final void setPressure(double newPressure) { + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + phaseArray[i].setPressure(newPressure); } - return number; } /** {@inheritDoc} */ @Override - public int[] getOilFractionIDs() { - int numb = getNumberOfOilFractionComponents(); - int[] IDs = new int[numb]; - // int number = 0; - for (int i = 0; i < numb; i++) { - if (getPhase(0).getComponent(i).isIsTBPfraction() - || getPhase(0).getComponent(i).isIsPlusFraction()) { - IDs[i] = getPhase(0).getComponent(i).getIndex(); - // number++; - } - } - return IDs; + public final void setPressure(double newPressure, String unit) { + neqsim.util.unit.PressureUnit presConversion = + new neqsim.util.unit.PressureUnit(newPressure, unit); + setPressure(presConversion.getValue("bara")); } /** {@inheritDoc} */ @Override - public boolean setHeavyTBPfractionAsPlusFraction() { - int compNumber = 0; - double molarMass = 0; - boolean foundTBP = false; + public void setSolidPhaseCheck(boolean solidPhaseCheck) { + this.solidPhaseCheck = solidPhaseCheck; - for (int i = 0; i < numberOfComponents; i++) { - if (getPhase(0).getComponent(i).isIsTBPfraction() - || getPhase(0).getComponent(i).isIsPlusFraction()) { - if (getPhase(0).getComponent(i).getMolarMass() > molarMass) { - molarMass = getPhase(0).getComponent(i).getMolarMass(); - compNumber = i; - foundTBP = true; - } - } - } - if (foundTBP) { - for (int i = 0; i < maxNumberOfPhases; i++) { - getPhase(0).getComponent(compNumber).setIsPlusFraction(true); - } + final int oldphase = numberOfPhases; + if (solidPhaseCheck && !this.hasSolidPhase()) { + addSolidPhase(); } - return foundTBP; - } + // init(0); - /** {@inheritDoc} */ - @Override - public double[] getOilFractionNormalBoilingPoints() { - int numb = getNumberOfOilFractionComponents(); - int[] indexes = getOilFractionIDs(); - double[] temp = new double[numb]; - for (int i = 0; i < numb; i++) { - temp[i] = getPhase(0).getComponentWithIndex(indexes[i]).getNormalBoilingPoint(); + for (int phase = 0; phase < numberOfPhases; phase++) { + for (int k = 0; k < getPhases()[0].getNumberOfComponents(); k++) { + getPhase(phase).getComponent(k).setSolidCheck(solidPhaseCheck); + getPhase(3).getComponent(k).setSolidCheck(solidPhaseCheck); + } } - return temp; + setNumberOfPhases(oldphase); } /** {@inheritDoc} */ @Override - public double[] getOilFractionLiquidDensityAt25C() { - int numb = getNumberOfOilFractionComponents(); - int[] indexes = getOilFractionIDs(); - double[] temp = new double[numb]; - for (int i = 0; i < numb; i++) { - temp[i] = getPhase(0).getComponentWithIndex(indexes[i]).getNormalLiquidDensity(); + public void setSolidPhaseCheck(String solidComponent) { + init(0); + final int oldphase = numberOfPhases; + if (!solidPhaseCheck) { + addSolidPhase(); } - return temp; - } + this.solidPhaseCheck = true; + init(0); - /** {@inheritDoc} */ - @Override - public double[] getOilFractionMolecularMass() { - int numb = getNumberOfOilFractionComponents(); - int[] indexes = getOilFractionIDs(); - double[] temp = new double[numb]; - for (int i = 0; i < numb; i++) { - temp[i] = getPhase(0).getComponentWithIndex(indexes[i]).getMolarMass(); + for (int phase = 0; phase < getMaxNumberOfPhases(); phase++) { + try { + getPhase(phase).getComponent(solidComponent).setSolidCheck(true); + getPhase(3).getComponent(solidComponent).setSolidCheck(true); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } - return temp; + setNumberOfPhases(oldphase); } /** {@inheritDoc} */ @Override - public PhaseInterface getLowestGibbsEnergyPhase() { - if (getPhase(0).getGibbsEnergy() < getPhase(1).getGibbsEnergy()) { - return getPhase(0); + public void setStandard(String standardName) { + if (standardName.equals("ISO1992")) { + this.standard = new neqsim.standards.gasQuality.Standard_ISO6976(this); + } else if (standardName.equals("Draft_ISO18453")) { + this.standard = new neqsim.standards.gasQuality.Draft_ISO18453(this); } else { - return getPhase(1); + this.standard = new neqsim.standards.gasQuality.Standard_ISO6976(this); } } /** {@inheritDoc} */ @Override - public double getWtFraction(int phaseNumber) { - return getPhase(phaseNumber).getWtFraction(this); + public final void setTC(double TC) { + criticalTemperature = TC; } /** {@inheritDoc} */ @Override - public double getVolumeFraction(int phaseNumber) { - return getPhase(phaseNumber).getVolume() / getVolume(); + public void setTemperature(double newTemperature) { + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + getPhases()[i].setTemperature(newTemperature); + } } /** {@inheritDoc} */ @Override - public final double getPhaseFraction(String phaseTypeName, String unit) { - int phaseNumber = getPhaseNumberOfPhase(phaseTypeName); - switch (unit) { - case "mole": - return getBeta(phaseNumber); - case "volume": - return getVolumeFraction(phaseNumber); - case "mass": - initPhysicalProperties("density"); - return getVolumeFraction(phaseNumber) * getPhase(phaseNumber).getDensity("kg/m3") - / getDensity("kg/m3"); - default: - return getBeta(phaseNumber); - } + public final void setTemperature(double newTemperature, int phase) { + getPhase(phaseIndex[phase]).setTemperature(newTemperature); } /** {@inheritDoc} */ @Override - public double getCorrectedVolumeFraction(int phaseNumber) { - return getPhase(phaseNumber).getCorrectedVolume() / getCorrectedVolume(); + public void setTemperature(double newTemperature, String unit) { + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + if (unit.equals("K")) { + // Direct setting as Kelvin + getPhases()[i].setTemperature(newTemperature); + } else if (unit.equals("C")) { + // Convert Celsius to Kelvin + getPhases()[i].setTemperature(newTemperature + 273.15); + } else if (unit.equals("F")) { + // Convert Fahrenheit to Kelvin + getPhases()[i].setTemperature((newTemperature - 32) * 5.0 / 9.0 + 273.15); + } else if (unit.equals("R")) { + // Convert Rankine to Kelvin + getPhases()[i].setTemperature(newTemperature * 5.0 / 9.0); + } else { + // Exception for unsupported units + throw new RuntimeException("Unit not supported: " + unit); + } + } } /** {@inheritDoc} */ @Override - public double getMoleFraction(int phaseNumber) { - return getPhase(phaseNumber).getBeta(); + public void setTotalFlowRate(double flowRate, String flowunit) { + init(0); + try { + init(1); + } catch (Exception e) { + logger.error(e.getMessage()); + } + double density = 0.0; + if (flowunit.equals("Am3/hr") || flowunit.equals("Am3/min") || flowunit.equals("gallons/min") + || flowunit.equals("Am3/sec")) { + initPhysicalProperties("density"); + } + + density = getPhase(0).getDensity("kg/m3"); + if (flowunit.equals("idSm3/hr")) { + density = getIdealLiquidDensity("kg/m3"); + } + neqsim.util.unit.Unit unit = + new neqsim.util.unit.RateUnit(flowRate, flowunit, getMolarMass(), density, 0); + double SIval = unit.getSIvalue(); + double totalNumberOfMolesLocal = totalNumberOfMoles; + for (int i = 0; i < numberOfComponents; i++) { + if (flowRate < 1e-100) { + setEmptyFluid(); + } else if (totalNumberOfMolesLocal > 1e-100) { + // (SIval / totalNumberOfMolesLocal - 1) * ... + double change = + SIval / totalNumberOfMolesLocal * getPhase(0).getComponent(i).getNumberOfmoles() + - getPhase(0).getComponent(i).getNumberOfmoles(); + if (Math.abs(change) > 1e-12) { + addComponent(i, change); + } + } else { + addComponent(i, SIval); + } + } } /** {@inheritDoc} */ @Override - public void isImplementedCompositionDeriativesofFugacity(boolean isImpl) { - implementedCompositionDeriativesofFugacity = isImpl; + public void setTotalNumberOfMoles(double totalNumberOfMoles) { + if (totalNumberOfMoles < 0) { + /* + * throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, + * "setTotalNumberOfMoles", "totalNumberOfMoles", "can not be less than 0.")); + */ + totalNumberOfMoles = 0; + } + this.totalNumberOfMoles = totalNumberOfMoles; } /** {@inheritDoc} */ @Override - public void addCapeOpenProperty(String propertyName) { - String[] tempString = new String[CapeOpenProperties11.length + 1]; - System.arraycopy(CapeOpenProperties11, 0, tempString, 0, CapeOpenProperties11.length); - tempString[CapeOpenProperties11.length] = propertyName; - CapeOpenProperties11 = tempString; - - tempString = new String[CapeOpenProperties10.length + 1]; - System.arraycopy(CapeOpenProperties10, 0, tempString, 0, CapeOpenProperties10.length); - tempString[CapeOpenProperties10.length] = propertyName; - CapeOpenProperties10 = tempString; + public void setUseTVasIndependentVariables(boolean useTVasIndependentVariables) { + for (int i = 0; i < numberOfPhases; i++) { + getPhase(i).setTotalVolume(getPhase(i).getVolume()); + getPhase(i).setConstantPhaseVolume(useTVasIndependentVariables); + getPhase(i).calcMolarVolume(!useTVasIndependentVariables); + } + this.useTVasIndependentVariables = useTVasIndependentVariables; } /** {@inheritDoc} */ @Override - public neqsim.thermo.characterization.WaxCharacterise getWaxCharacterisation() { - return waxCharacterisation; + public void tuneModel(String model, double val, int phase) { + if (model.equals("viscosity")) { + getPhase(phase).getPhysicalProperties().getViscosityModel().tuneModel(val, + getPhase(phase).getTemperature(), getPhase(phase).getPressure()); + for (int i = 0; i < getMaxNumberOfPhases(); i++) { + for (int j = 0; j < numberOfPhases; j++) { + getPhase(i).getComponent(j) + .setCriticalViscosity(getPhase(phase).getComponent(j).getCriticalViscosity()); + } + } + } + initPhysicalProperties(); + } + + /** + *

+ * useTVasIndependentVariables. + *

+ * + * @return a boolean + */ + public boolean useTVasIndependentVariables() { + return useTVasIndependentVariables; } /** {@inheritDoc} */ @Override - public WaxModelInterface getWaxModel() { - if (waxCharacterisation == null) { - waxCharacterisation = new WaxCharacterise(this); + public void useVolumeCorrection(boolean volcor) { + for (PhaseInterface tmpPhase : phaseArray) { + if (tmpPhase != null) { + tmpPhase.useVolumeCorrection(volcor); + } } - return waxCharacterisation.getModel(); + } + + /** + *

+ * write. + *

+ * + * @return a {@link java.lang.String} object + */ + public String write() { + // create a String description of the system + return ""; } /** {@inheritDoc} */ @Override - public void setComponentNames(String[] componentNames) { - for (int i = 0; i < componentNames.length; i++) { - this.componentNames.set(i, componentNames[i]); + public void write(String name, String filename, boolean newfile) { + String[][] table = createTable(name); + neqsim.dataPresentation.fileHandeling.createTextFile.TextFile file = + new neqsim.dataPresentation.fileHandeling.createTextFile.TextFile(); + if (newfile) { + file.newFile(filename); } + file.setOutputFileName(filename); + file.setValues(table); + file.createFile(); } /** {@inheritDoc} */ @Override - public double getLiquidVolume() { - double totFlow = 0; - - for (int kj = 0; kj < numberOfPhases; kj++) { - if (!getPhase(kj).getPhaseTypeName().equals("gas")) { - totFlow += getPhase(kj).getVolume(); - } + public double[] getKvector() { + double[] K = new double[this.getNumberOfComponents()]; + for (int i = 0; i < this.getNumberOfComponents(); i++) { + K[i] = this.getPhase(0).getComponent(i).getK(); } - return totFlow; + return K; } /** {@inheritDoc} */ @Override - public boolean isForcePhaseTypes() { - return forcePhaseTypes; + public double[] getzvector() { + double[] z = new double[this.getNumberOfComponents()]; + for (int i = 0; i < this.getNumberOfComponents(); i++) { + z[i] = this.getPhase(0).getComponent(i).getz(); + } + return z; } /** {@inheritDoc} */ @Override - public void setForcePhaseTypes(boolean forcePhaseTypes) { - this.forcePhaseTypes = forcePhaseTypes; + public String toJson() { + return new GsonBuilder().create() + .toJson(new neqsim.processSimulation.util.monitor.FluidResponse(this)); } + /** {@inheritDoc} */ @Override - public SystemProperties getProperties() { - return new SystemProperties(this); - } - - private void setMolarComposition(double[] molefractions, String type) { - double totalFlow = getTotalNumberOfMoles(); - if (totalFlow < 1e-100) { - String msg = "must be larger than 0 (1e-100) when setting molar composition"; - logger.error(msg); - throw new RuntimeException(new neqsim.util.exception.InvalidInputException(this, - "setMolarComposition", "totalFlow", msg)); - } - double sum = 0; - for (double value : molefractions) { - sum += value; - } - setEmptyFluid(); - - switch (type) { - case "PlusFluid": - // todo: really skip last component of molefraction? - for (int compNumb = 0; compNumb < molefractions.length - 1; compNumb++) { - addComponent(compNumb, totalFlow * molefractions[compNumb] / sum); - } - for (int j = 0; j < getCharacterization().getLumpingModel().getNumberOfLumpedComponents() - - 1; j++) { - // addComponent(compNumb, totalFlow * molefractions[molefractions.length - 1] - // * getCharacterization().getLumpingModel().getFractionOfHeavyEnd(j) / sum); - } - break; - case "Plus": - // todo: compNumb can be negative - for (int compNumb = 0; compNumb < this.numberOfComponents - - getCharacterization().getLumpingModel().getNumberOfLumpedComponents(); compNumb++) { - addComponent(compNumb, totalFlow * molefractions[compNumb] / sum); - } - int ii = 0; - for (int compNumb = this.numberOfComponents - getCharacterization().getLumpingModel() - .getNumberOfLumpedComponents(); compNumb < this.numberOfComponents; compNumb++) { - addComponent(compNumb, - totalFlow * getCharacterization().getLumpingModel().getFractionOfHeavyEnd(ii++) - * molefractions[this.numberOfComponents - - getCharacterization().getLumpingModel().getNumberOfLumpedComponents()] - / sum); - } - break; - default: - // NB! It will allow setting composition for only the first items. - // for (int compNumb = 0; compNumb <= molefractions.length - 1; compNumb++) { - // NB! Can fail because len(molefractions) < this.numberOfComponents - for (int compNumb = 0; compNumb <= this.numberOfComponents - 1; compNumb++) { - addComponent(compNumb, totalFlow * molefractions[compNumb] / sum); - } - break; - } - - for (int i = 0; i < getNumberOfPhases(); i++) { - init(0, i); - } + public String toCompJson() { + return new GsonBuilder().create() + .toJson(new neqsim.processSimulation.util.monitor.FluidComponentResponse(this)); } } diff --git a/src/main/java/neqsim/thermo/system/SystemUMRCPAEoS.java b/src/main/java/neqsim/thermo/system/SystemUMRCPAEoS.java index 6698fdf7da..6c76a3951d 100644 --- a/src/main/java/neqsim/thermo/system/SystemUMRCPAEoS.java +++ b/src/main/java/neqsim/thermo/system/SystemUMRCPAEoS.java @@ -1,38 +1,32 @@ -/* - * System_SRK_EOS.java - * - * Created on 8. april 2000, 23:05 - */ - package neqsim.thermo.system; -/** - * This class defines a thermodynamic system using the UMR CPA equation of state - * - * @author Even Solbraa - * @version - */ import neqsim.thermo.phase.PhaseUMRCPA; /** - * This class defines a thermodynamic system using the UMR-PRU with MC paramters equation of state + * This class defines a thermodynamic system using the UMR CPA equation of state. + * + * @author Even Solbraa */ public class SystemUMRCPAEoS extends SystemPrEos { + private static final long serialVersionUID = 1L; - + /** + *

+ * Constructor for SystemUMRCPAEoS. + *

+ */ public SystemUMRCPAEoS() { - super(); - modelName = "UMR-CPA"; - attractiveTermNumber = 19; - useVolumeCorrection(false); - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseUMRCPA(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - phaseArray[i].useVolumeCorrection(false); - } + this(298.15, 1.0); } + /** + *

+ * Constructor for SystemUMRCPAEoS. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ public SystemUMRCPAEoS(double T, double P) { super(T, P); modelName = "UMR-CPA"; @@ -45,5 +39,4 @@ public SystemUMRCPAEoS(double T, double P) { phaseArray[i].useVolumeCorrection(false); } } - } diff --git a/src/main/java/neqsim/thermo/system/SystemUMRPRUEos.java b/src/main/java/neqsim/thermo/system/SystemUMRPRUEos.java index 0bc4d19427..27d9a1973e 100644 --- a/src/main/java/neqsim/thermo/system/SystemUMRPRUEos.java +++ b/src/main/java/neqsim/thermo/system/SystemUMRPRUEos.java @@ -1,78 +1,78 @@ package neqsim.thermo.system; /** - * This class defines a thermodynamic system using the UMR-PRU equation of state - * + * This class defines a thermodynamic system using the UMR-PRU equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemUMRPRUEos extends SystemPrEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemUMRPRUEos() { - super(); - setBmixType(1); - modelName = "UMR-PRU-EoS"; - attractiveTermNumber = 1; - } - - /** - *

- * Constructor for SystemUMRPRUEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemUMRPRUEos(double T, double P) { - super(T, P); - setBmixType(1); - modelName = "UMR-PRU-EoS"; - attractiveTermNumber = 1; - CapeOpenProperties11 = new String[] {"speedOfSound", "jouleThomsonCoefficient", - "internalEnergy", "internalEnergy.Dtemperature", "gibbsEnergy", "helmholtzEnergy", - "fugacityCoefficient", "logFugacityCoefficient", - "logFugacityCoefficient.Dtemperature", "logFugacityCoefficient.Dpressure", - "logFugacityCoefficient.Dmoles", "enthalpy", "enthalpy.Dtemperature", "entropy", - "heatCapacityCp", "heatCapacityCv", "density", "volume"}; - } + /** + *

+ * Constructor for SystemUMRPRUEos. + *

+ */ + public SystemUMRPRUEos() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemUMRPRUEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemUMRPRUEos(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - setBmixType(1); - attractiveTermNumber = 1; - modelName = "UMR-PRU-EoS"; - } + /** + *

+ * Constructor for SystemUMRPRUEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemUMRPRUEos(double T, double P) { + super(T, P, false); + } - /** {@inheritDoc} */ - @Override - public SystemUMRPRUEos clone() { - SystemUMRPRUEos clonedSystem = null; - try { - clonedSystem = (SystemUMRPRUEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } + /** + *

+ * Constructor for SystemUMRPRUEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemUMRPRUEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + setBmixType(1); + modelName = "UMR-PRU-EoS"; + attractiveTermNumber = 1; + CapeOpenProperties11 = new String[] {"speedOfSound", "jouleThomsonCoefficient", + "internalEnergy", "internalEnergy.Dtemperature", "gibbsEnergy", "helmholtzEnergy", + "fugacityCoefficient", "logFugacityCoefficient", "logFugacityCoefficient.Dtemperature", + "logFugacityCoefficient.Dpressure", "logFugacityCoefficient.Dmoles", "enthalpy", + "enthalpy.Dtemperature", "entropy", "heatCapacityCp", "heatCapacityCv", "density", + "volume"}; + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemUMRPRUEos clone() { + SystemUMRPRUEos clonedSystem = null; + try { + clonedSystem = (SystemUMRPRUEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } - /** - *

- * commonInitialization. - *

- */ - public void commonInitialization() { - setImplementedCompositionDeriativesofFugacity(true); - setImplementedPressureDeriativesofFugacity(true); - setImplementedTemperatureDeriativesofFugacity(true); - } + return clonedSystem; + } + + /** + *

+ * commonInitialization. + *

+ */ + public void commonInitialization() { + setImplementedCompositionDeriativesofFugacity(true); + setImplementedPressureDeriativesofFugacity(true); + setImplementedTemperatureDeriativesofFugacity(true); + } } diff --git a/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEos.java b/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEos.java index 82d6cdad29..0a5f2bd4d2 100644 --- a/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEos.java +++ b/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEos.java @@ -1,67 +1,60 @@ package neqsim.thermo.system; /** - * This class defines a thermodynamic system using the UMR-PRU with MC paramters equation of state - * + * This class defines a thermodynamic system using the UMR-PRU with MC paramters equation of state. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemUMRPRUMCEos extends SystemUMRPRUEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemUMRPRUMCEos() { - super(); - setBmixType(1); - modelName = "UMR-PRU-MC-EoS"; - attractiveTermNumber = 13; - } + /** + *

+ * Constructor for SystemUMRPRUMCEos. + *

+ */ + public SystemUMRPRUMCEos() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemUMRPRUMCEos. - *

- * - * @param T a double - * @param P a double - */ - public SystemUMRPRUMCEos(double T, double P) { - super(T, P); - setBmixType(1); - modelName = "UMR-PRU-MC-EoS"; - attractiveTermNumber = 13; - CapeOpenProperties11 = new String[] {"speedOfSound", "jouleThomsonCoefficient", - "internalEnergy", "internalEnergy.Dtemperature", "gibbsEnergy", "helmholtzEnergy", - "fugacityCoefficient", "logFugacityCoefficient", - "logFugacityCoefficient.Dtemperature", "logFugacityCoefficient.Dpressure", - "logFugacityCoefficient.Dmoles", "enthalpy", "enthalpy.Dtemperature", "entropy", - "heatCapacityCp", "heatCapacityCv", "density", "volume"}; - } + /** + *

+ * Constructor for SystemUMRPRUMCEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemUMRPRUMCEos(double T, double P) { + this(T, P, false); + } - /** - *

- * Constructor for SystemUMRPRUMCEos. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemUMRPRUMCEos(double T, double P, boolean solidCheck) { - super(T, P, solidCheck); - setBmixType(1); - attractiveTermNumber = 13; - modelName = "UMR-PRU-MC-EoS"; - } + /** + *

+ * Constructor for SystemUMRPRUMCEos. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemUMRPRUMCEos(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + modelName = "UMR-PRU-MC-EoS"; + attractiveTermNumber = 13; + } - /** {@inheritDoc} */ - @Override - public SystemUMRPRUMCEos clone() { - SystemUMRPRUMCEos clonedSystem = null; - try { - clonedSystem = (SystemUMRPRUMCEos) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemUMRPRUMCEos clone() { + SystemUMRPRUMCEos clonedSystem = null; + try { + clonedSystem = (SystemUMRPRUMCEos) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEosNew.java b/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEosNew.java index 837bd691ee..6a13cb035a 100644 --- a/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEosNew.java +++ b/src/main/java/neqsim/thermo/system/SystemUMRPRUMCEosNew.java @@ -1,38 +1,32 @@ -/* - * System_SRK_EOS.java - * - * Created on 8. april 2000, 23:05 - */ - package neqsim.thermo.system; -/** - * This class defines a thermodynamic system using the UMR-PRU with MC paramters equation of state - * - * @author Even Solbraa - * @version - */ import neqsim.thermo.phase.PhasePrEosvolcor; /** - * This class defines a thermodynamic system using the UMR-PRU with MC paramters equation of state + * This class defines a thermodynamic system using the UMR-PRU with MC paramters equation of state. + * + * @author Even Solbraa */ public class SystemUMRPRUMCEosNew extends SystemUMRPRUMCEos { + private static final long serialVersionUID = 1L; - + /** + *

+ * Constructor for SystemUMRPRUMCEosNew. + *

+ */ public SystemUMRPRUMCEosNew() { - super(); - modelName = "UMR-PRU-MC-EoS-New"; - attractiveTermNumber = 19; - useVolumeCorrection(false); - for (int i = 0; i < numberOfPhases; i++) { - phaseArray[i] = new PhasePrEosvolcor(); - phaseArray[i].setTemperature(298.15); - phaseArray[i].setPressure(1.0); - phaseArray[i].useVolumeCorrection(false); - } + this(298.15, 1.0); } + /** + *

+ * Constructor for SystemUMRPRUMCEosNew. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ public SystemUMRPRUMCEosNew(double T, double P) { super(T, P); modelName = "UMR-PRU-MC-EoS-New"; @@ -45,5 +39,4 @@ public SystemUMRPRUMCEosNew(double T, double P) { phaseArray[i].useVolumeCorrection(false); } } - } diff --git a/src/main/java/neqsim/thermo/system/SystemUNIFAC.java b/src/main/java/neqsim/thermo/system/SystemUNIFAC.java index 7a290e2825..e728b386b0 100644 --- a/src/main/java/neqsim/thermo/system/SystemUNIFAC.java +++ b/src/main/java/neqsim/thermo/system/SystemUNIFAC.java @@ -6,93 +6,78 @@ /** * This class defines a thermodynamic system using the Unifac for liquids with SRK equation of state - * for gas - * + * for gas. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemUNIFAC extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemUNIFAC() { - super(); - modelName = "UNIFAC-GE-model"; - attractiveTermNumber = 0; - phaseArray[0] = new PhaseSrkEos(); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGEUnifac(); - } - } - - /** - *

- * Constructor for SystemUNIFAC. - *

- * - * @param T a double - * @param P a double - */ - public SystemUNIFAC(double T, double P) { - super(T, P); - attractiveTermNumber = 0; - modelName = "UNIFAC-GE-model"; - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGEUnifac(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + *

+ * Constructor for SystemUNIFAC. + *

+ */ + public SystemUNIFAC() { + this(273.15, 0); + } - /** - *

- * Constructor for SystemUNIFAC. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemUNIFAC(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 0; - setNumberOfPhases(4); - modelName = "UNIFAC-GE-model"; - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemUNIFAC. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemUNIFAC(double T, double P) { + this(T, P, false); + } - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGEUnifac(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemUNIFAC. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemUNIFAC(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 0; + modelName = "UNIFAC-GE-model"; + solidPhaseCheck = checkForSolids; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + phaseArray[0] = new PhaseSrkEos(); + phaseArray[0].setTemperature(T); + phaseArray[0].setPressure(P); + for (int i = 1; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseGEUnifac(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemUNIFAC clone() { - SystemUNIFAC clonedSystem = null; - try { - clonedSystem = (SystemUNIFAC) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (solidPhaseCheck) { + setNumberOfPhases(4); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemUNIFAC clone() { + SystemUNIFAC clonedSystem = null; + try { + clonedSystem = (SystemUNIFAC) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/system/SystemUNIFACpsrk.java b/src/main/java/neqsim/thermo/system/SystemUNIFACpsrk.java index f41a78ca7f..c742b8cd66 100644 --- a/src/main/java/neqsim/thermo/system/SystemUNIFACpsrk.java +++ b/src/main/java/neqsim/thermo/system/SystemUNIFACpsrk.java @@ -5,93 +5,78 @@ import neqsim.thermo.phase.PhaseSrkEos; /** - * This class defines a thermodynamic system using the UNIFAC for liquid and PSRK EoS for gas - * + * This class defines a thermodynamic system using the UNIFAC for liquid and PSRK EoS for gas. + * * @author Even Solbraa + * @version $Id: $Id */ public class SystemUNIFACpsrk extends SystemEos { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - public SystemUNIFACpsrk() { - super(); - modelName = "UNIFAC-GE-model"; - attractiveTermNumber = 0; - phaseArray[0] = new PhaseSrkEos(); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGEUnifacPSRK(); - } - } - - /** - *

- * Constructor for SystemUNIFACpsrk. - *

- * - * @param T a double - * @param P a double - */ - public SystemUNIFACpsrk(double T, double P) { - super(T, P); - attractiveTermNumber = 0; - modelName = "UNIFAC-GE-model"; - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGEUnifacPSRK(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } - } + /** + *

+ * Constructor for SystemUNIFACpsrk. + *

+ */ + public SystemUNIFACpsrk() { + this(298.15, 1.0, false); + } - /** - *

- * Constructor for SystemUNIFACpsrk. - *

- * - * @param T a double - * @param P a double - * @param solidCheck a boolean - */ - public SystemUNIFACpsrk(double T, double P, boolean solidCheck) { - this(T, P); - attractiveTermNumber = 0; - setNumberOfPhases(4); - modelName = "UNIFAC-GE-model"; - solidPhaseCheck = solidCheck; + /** + *

+ * Constructor for SystemUNIFACpsrk. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + */ + public SystemUNIFACpsrk(double T, double P) { + this(T, P, false); + } - phaseArray[0] = new PhaseSrkEos(); - phaseArray[0].setTemperature(T); - phaseArray[0].setPressure(P); - for (int i = 1; i < numberOfPhases; i++) { - phaseArray[i] = new PhaseGEUnifacPSRK(); - phaseArray[i].setTemperature(T); - phaseArray[i].setPressure(P); - } + /** + *

+ * Constructor for SystemUNIFACpsrk. + *

+ * + * @param T The temperature in unit Kelvin + * @param P The pressure in unit bara (absolute pressure) + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SystemUNIFACpsrk(double T, double P, boolean checkForSolids) { + super(T, P, checkForSolids); + attractiveTermNumber = 0; + modelName = "UNIFAC-GE-model"; + solidPhaseCheck = checkForSolids; - if (solidPhaseCheck) { - // System.out.println("here first"); - phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); - phaseArray[numberOfPhases - 1].setTemperature(T); - phaseArray[numberOfPhases - 1].setPressure(P); - phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); - } + phaseArray[0] = new PhaseSrkEos(); + phaseArray[0].setTemperature(T); + phaseArray[0].setPressure(P); + for (int i = 1; i < numberOfPhases; i++) { + phaseArray[i] = new PhaseGEUnifacPSRK(); + phaseArray[i].setTemperature(T); + phaseArray[i].setPressure(P); } - /** {@inheritDoc} */ - @Override - public SystemUNIFACpsrk clone() { - SystemUNIFACpsrk clonedSystem = null; - try { - clonedSystem = (SystemUNIFACpsrk) super.clone(); - } catch (Exception e) { - logger.error("Cloning failed.", e); - } - - // for(int i = 0; i < numberOfPhases; i++) { - // clonedSystem.phaseArray[i] = (PhaseInterface) phaseArray[i].clone(); - // } + if (solidPhaseCheck) { + setNumberOfPhases(4); + phaseArray[numberOfPhases - 1] = new PhasePureComponentSolid(); + phaseArray[numberOfPhases - 1].setTemperature(T); + phaseArray[numberOfPhases - 1].setPressure(P); + phaseArray[numberOfPhases - 1].setRefPhase(phaseArray[1].getRefPhase()); + } + } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public SystemUNIFACpsrk clone() { + SystemUNIFACpsrk clonedSystem = null; + try { + clonedSystem = (SystemUNIFACpsrk) super.clone(); + } catch (Exception ex) { + logger.error("Cloning failed.", ex); } + + return clonedSystem; + } } diff --git a/src/main/java/neqsim/thermo/util/GERG/DETAIL.java b/src/main/java/neqsim/thermo/util/GERG/DETAIL.java index e792dfb9ac..9478f8cadb 100644 --- a/src/main/java/neqsim/thermo/util/GERG/DETAIL.java +++ b/src/main/java/neqsim/thermo/util/GERG/DETAIL.java @@ -13,1545 +13,1539 @@ * @version $Id: $Id */ public class DETAIL { - // The compositions in the x() array use the following order and must be sent as - // mole fractions: - // 0 - PLACEHOLDER - // 1 - Methane - // 2 - Nitrogen - // 3 - Carbon dioxide - // 4 - Ethane - // 5 - Propane - // 6 - Isobutane - // 7 - n-Butane - // 8 - Isopentane - // 9 - n-Pentane - // 10 - n-Hexane - // 11 - n-Heptane - // 12 - n-Octane - // 13 - n-Nonane - // 14 - n-Decane - // 15 - Hydrogen - // 16 - Oxygen - // 17 - Carbon monoxide - // 18 - Water - // 19 - Hydrogen sulfide - // 20 - Helium - // 21 - Argon - // - // For example, a mixture (in moles) of 94% methane, 5% CO2, and 1% helium would - // be (in mole fractions): - // x(1)=0.94, x(3)=0.05, x(20)=0.01 - - // Variables containing the common parameters in the DETAIL equations - static double RDetail; - static int NcDetail = 21, MaxFlds = 21, NTerms = 58; - static double epsilon = 1e-15; - static int[] fn = new int[NTerms + 1]; - static int[] gn = new int[NTerms + 1]; - static int[] qn = new int[NTerms + 1]; - static double[] an = new double[NTerms + 1]; - static double[] un = new double[NTerms + 1]; - static int[] bn = new int[NTerms + 1]; - static int[] kn = new int[NTerms + 1]; - - static double[][][] Bsnij2 = new double[MaxFlds + 1][MaxFlds + 1][18 + 1]; - static double[] Bs = new double[18 + 1]; - static double[] Csn = new double[NTerms + 1]; - - static double[] Fi = new double[MaxFlds + 1]; - static double[] Gi = new double[MaxFlds + 1]; - static double[] Qi = new double[MaxFlds + 1]; - - static double[] Ki25 = new double[MaxFlds + 1]; - static double[] Ei25 = new double[MaxFlds + 1]; - - static double[][] Kij5 = new double[MaxFlds + 1][MaxFlds + 1]; - static double[][] Uij5 = new double[MaxFlds + 1][MaxFlds + 1]; - static double[][] Gij5 = new double[MaxFlds + 1][MaxFlds + 1]; - - static double[] Tun = new double[NTerms + 1]; - static double Told; - static double[][] n0i = new double[MaxFlds + 1][7 + 1]; - static double[][] th0i = new double[MaxFlds + 1][7 + 1]; - - static double[] MMiDetail = new double[MaxFlds + 1]; - static double[] xold = new double[MaxFlds + 1]; - static double K3; - static double dPdDsave; - - /** - *

- * sq. - *

- * - * @param x a double - * @return a double - */ - static public double sq(double x) { - return x * x; + // The compositions in the x() array use the following order and must be sent as + // mole fractions: + // 0 - PLACEHOLDER + // 1 - Methane + // 2 - Nitrogen + // 3 - Carbon dioxide + // 4 - Ethane + // 5 - Propane + // 6 - Isobutane + // 7 - n-Butane + // 8 - Isopentane + // 9 - n-Pentane + // 10 - n-Hexane + // 11 - n-Heptane + // 12 - n-Octane + // 13 - n-Nonane + // 14 - n-Decane + // 15 - Hydrogen + // 16 - Oxygen + // 17 - Carbon monoxide + // 18 - Water + // 19 - Hydrogen sulfide + // 20 - Helium + // 21 - Argon + // + // For example, a mixture (in moles) of 94% methane, 5% CO2, and 1% helium would + // be (in mole fractions): + // x(1)=0.94, x(3)=0.05, x(20)=0.01 + + // Variables containing the common parameters in the DETAIL equations + double RDetail; + int NcDetail = 21, MaxFlds = 21, NTerms = 58; + double epsilon = 1e-15; + int[] fn = new int[NTerms + 1]; + int[] gn = new int[NTerms + 1]; + int[] qn = new int[NTerms + 1]; + double[] an = new double[NTerms + 1]; + double[] un = new double[NTerms + 1]; + int[] bn = new int[NTerms + 1]; + int[] kn = new int[NTerms + 1]; + + double[][][] Bsnij2 = new double[MaxFlds + 1][MaxFlds + 1][18 + 1]; + double[] Bs = new double[18 + 1]; + double[] Csn = new double[NTerms + 1]; + + double[] Fi = new double[MaxFlds + 1]; + double[] Gi = new double[MaxFlds + 1]; + double[] Qi = new double[MaxFlds + 1]; + + double[] Ki25 = new double[MaxFlds + 1]; + double[] Ei25 = new double[MaxFlds + 1]; + + double[][] Kij5 = new double[MaxFlds + 1][MaxFlds + 1]; + double[][] Uij5 = new double[MaxFlds + 1][MaxFlds + 1]; + double[][] Gij5 = new double[MaxFlds + 1][MaxFlds + 1]; + + double[] Tun = new double[NTerms + 1]; + double Told; + double[][] n0i = new double[MaxFlds + 1][7 + 1]; + double[][] th0i = new double[MaxFlds + 1][7 + 1]; + + double[] MMiDetail = new double[MaxFlds + 1]; + double[] xold = new double[MaxFlds + 1]; + double K3; + double dPdDsave; + + /** + *

+ * sq. + *

+ * + * @param x a double + * @return a double + */ + public double sq(double x) { + return x * x; + } + + /** + *

+ * MolarMassDetail. + *

+ * + * @param x an array of type double + * @param Mm a {@link org.netlib.util.doubleW} object + */ + public void MolarMassDetail(double[] x, doubleW Mm) { + // Calculate molar mass of the mixture with the compositions contained in the + // x() input array + + // Inputs: + // x() - Composition (mole fraction) + // Do not send mole percents or mass fractions in the x() array, otherwise the + // output will be incorrect. + // The sum of the compositions in the x() array must be equal to one. + // The order of the fluids in this array is given at the top of this code. + + // Outputs: + // Mm - Molar mass (g/mol) + + Mm.val = 0; + for (int i = 1; i <= NcDetail; ++i) { + Mm.val += x[i] * MMiDetail[i]; } - - /** - *

- * MolarMassDetail. - *

- * - * @param x an array of {@link double} objects - * @param Mm a {@link org.netlib.util.doubleW} object - */ - public static void MolarMassDetail(double[] x, doubleW Mm) { - // Calculate molar mass of the mixture with the compositions contained in the - // x() input array - - // Inputs: - // x() - Composition (mole fraction) - // Do not send mole percents or mass fractions in the x() array, otherwise the - // output will be incorrect. - // The sum of the compositions in the x() array must be equal to one. - // The order of the fluids in this array is given at the top of this code. - - // Outputs: - // Mm - Molar mass (g/mol) - - Mm.val = 0; - for (int i = 1; i <= NcDetail; ++i) { - Mm.val += x[i] * MMiDetail[i]; - } + } + + /** + *

+ * PressureDetail. + *

+ * + * @param T a double + * @param D a double + * @param x an array of type double + * @param P a {@link org.netlib.util.doubleW} object + * @param Z a {@link org.netlib.util.doubleW} object + */ + public void PressureDetail(double T, double D, double[] x, doubleW P, doubleW Z) { + // Sub Pressure(T, D, x, P, Z) + + // Calculate pressure as a function of temperature and density. The derivative + // d(P)/d(D) is also calculated + // for use in the iterative DensityDetail subroutine (and is only returned as a + // common variable). + + // Inputs: + // T - Temperature (K) + // D - Density (mol/l) + // x() - Composition (mole fraction) + // Do not send mole percents or mass fractions in the x() array, otherwise the + // output will be incorrect. + // The sum of the compositions in the x() array must be equal to one. + + // Outputs: + // P - Pressure (kPa) + // Z - Compressibility factor + // dPdDsave - d(P)/d(D) [kPa/(mol/l)] (at constant temperature) + // - This variable is cached in the common variables for use in the iterative + // density solver, but not returned as an argument. + + doubleW[][] ar = new doubleW[3 + 1][3 + 1]; + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + ar[i][j] = new doubleW(0.0d); + } } - - /** - *

- * PressureDetail. - *

- * - * @param T a double - * @param D a double - * @param x an array of {@link double} objects - * @param P a {@link org.netlib.util.doubleW} object - * @param Z a {@link org.netlib.util.doubleW} object - */ - public static void PressureDetail(double T, double D, double[] x, doubleW P, doubleW Z) { - // Sub Pressure(T, D, x, P, Z) - - // Calculate pressure as a function of temperature and density. The derivative - // d(P)/d(D) is also calculated - // for use in the iterative DensityDetail subroutine (and is only returned as a - // common variable). - - // Inputs: - // T - Temperature (K) - // D - Density (mol/l) - // x() - Composition (mole fraction) - // Do not send mole percents or mass fractions in the x() array, otherwise the - // output will be incorrect. - // The sum of the compositions in the x() array must be equal to one. - - // Outputs: - // P - Pressure (kPa) - // Z - Compressibility factor - // dPdDsave - d(P)/d(D) [kPa/(mol/l)] (at constant temperature) - // - This variable is cached in the common variables for use in the iterative - // density solver, but not returned as an argument. - - doubleW[][] ar = new doubleW[3 + 1][3 + 1]; - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - ar[i][j] = new doubleW(0.0d); - } - } - xTermsDetail(x); - AlpharDetail(0, 2, T, D, ar); - Z.val = 1 + ar[0][1].val / RDetail / T; // ar(0,1) is the first derivative of alpha(r) with - // respect to density - P.val = D * RDetail * T * Z.val; - dPdDsave = RDetail * T + 2 * ar[0][1].val + ar[0][2].val; // d(P)/d(D) for use in density - // iteration + xTermsDetail(x); + AlpharDetail(0, 2, T, D, ar); + Z.val = 1 + ar[0][1].val / RDetail / T; // ar(0,1) is the first derivative of alpha(r) with + // respect to density + P.val = D * RDetail * T * Z.val; + dPdDsave = RDetail * T + 2 * ar[0][1].val + ar[0][2].val; // d(P)/d(D) for use in density + // iteration + } + + /** + *

+ * DensityDetail. + *

+ * + * @param T a double + * @param P a double + * @param x an array of type double + * @param D a {@link org.netlib.util.doubleW} object + * @param ierr a {@link org.netlib.util.intW} object + * @param herr a {@link org.netlib.util.StringW} object + */ + public void DensityDetail(double T, double P, double[] x, doubleW D, intW ierr, StringW herr) { + // Sub DensityDetail(T, P, x, D, ierr, herr) + + // Calculate density as a function of temperature and pressure. This is an + // iterative routine that calls PressureDetail + // to find the correct state point. Generally only 6 iterations at most are + // required. + // If the iteration fails to converge, the ideal gas density and an error + // message are returned. + // No checks are made to determine the phase boundary, which would have + // guaranteed that the output is in the gas phase. + // It is up to the user to locate the phase boundary, and thus identify the + // phase of the T and P inputs. + // If the state point is 2-phase, the output density will represent a metastable + // state. + + // Inputs: + // T - Temperature (K) + // P - Pressure (kPa) + // x() - Composition (mole fraction) + + // Outputs: + // D - Density (mol/l) (make D negative and send as an input to use as an + // initial guess) + // ierr - Error number (0 indicates no error) + // herr - Error message if ierr is not equal to zero + + double plog, vlog, dpdlv, vdiff, tolr; + doubleW P2 = new doubleW(0.0d); + doubleW Z = new doubleW(0.0d); + ierr.val = 0; + herr.val = ""; + if (Math.abs(P) < epsilon) { + D.val = 0.0; + return; } - - /** - *

- * DensityDetail. - *

- * - * @param T a double - * @param P a double - * @param x an array of {@link double} objects - * @param D a {@link org.netlib.util.doubleW} object - * @param ierr a {@link org.netlib.util.intW} object - * @param herr a {@link org.netlib.util.StringW} object - */ - public static void DensityDetail(double T, double P, double[] x, doubleW D, intW ierr, - StringW herr) { - // Sub DensityDetail(T, P, x, D, ierr, herr) - - // Calculate density as a function of temperature and pressure. This is an - // iterative routine that calls PressureDetail - // to find the correct state point. Generally only 6 iterations at most are - // required. - // If the iteration fails to converge, the ideal gas density and an error - // message are returned. - // No checks are made to determine the phase boundary, which would have - // guaranteed that the output is in the gas phase. - // It is up to the user to locate the phase boundary, and thus identify the - // phase of the T and P inputs. - // If the state point is 2-phase, the output density will represent a metastable - // state. - - // Inputs: - // T - Temperature (K) - // P - Pressure (kPa) - // x() - Composition (mole fraction) - - // Outputs: - // D - Density (mol/l) (make D negative and send as an input to use as an - // initial guess) - // ierr - Error number (0 indicates no error) - // herr - Error message if ierr is not equal to zero - - double plog, vlog, dpdlv, vdiff, tolr; - doubleW P2 = new doubleW(0.0d); - doubleW Z = new doubleW(0.0d); - ierr.val = 0; - herr.val = ""; - if (Math.abs(P) < epsilon) { - D.val = 0.0; - return; - } - tolr = 0.0000001; - if (D.val > -epsilon) { - D.val = P / RDetail / T; // Ideal gas estimate - } else { - D.val = Math.abs(D.val); // If D<0, then use as initial estimate - } - plog = Math.log(P); - vlog = -Math.log(D.val); - for (int it = 1; it <= 20; ++it) { - if (vlog < -7 || vlog > 100) { - ierr.val = 1; - herr.val = - "Calculation failed to converge in DETAIL method, ideal gas density returned."; - D.val = P / RDetail / T; - return; - } - D.val = Math.exp(-vlog); - PressureDetail(T, D.val, x, P2, Z); - if (dPdDsave < epsilon || P2.val < epsilon) { - vlog += 0.1; - } else { - // Find the next density with a first order Newton's type iterative scheme, with - // log(P) as the known variable and log(v) as the unknown property. - // See AGA 8 publication for further information. - dpdlv = -D.val * dPdDsave; // d(p)/d[log(v)] - vdiff = (Math.log(P2.val) - plog) * P2.val / dpdlv; - vlog = vlog - vdiff; - if (Math.abs(vdiff) < tolr) { - D.val = Math.exp(-vlog); - return; // Iteration converged - } - } - } + tolr = 0.0000001; + if (D.val > -epsilon) { + D.val = P / RDetail / T; // Ideal gas estimate + } else { + D.val = Math.abs(D.val); // If D<0, then use as initial estimate + } + plog = Math.log(P); + vlog = -Math.log(D.val); + for (int it = 1; it <= 20; ++it) { + if (vlog < -7 || vlog > 100) { ierr.val = 1; herr.val = "Calculation failed to converge in DETAIL method, ideal gas density returned."; D.val = P / RDetail / T; return; - } - - /** - *

- * PropertiesDetail. - *

- * - * @param T a double - * @param D a double - * @param x an array of {@link double} objects - * @param P a {@link org.netlib.util.doubleW} object - * @param Z a {@link org.netlib.util.doubleW} object - * @param dPdD a {@link org.netlib.util.doubleW} object - * @param d2PdD2 a {@link org.netlib.util.doubleW} object - * @param d2PdTD a {@link org.netlib.util.doubleW} object - * @param dPdT a {@link org.netlib.util.doubleW} object - * @param U a {@link org.netlib.util.doubleW} object - * @param H a {@link org.netlib.util.doubleW} object - * @param S a {@link org.netlib.util.doubleW} object - * @param Cv a {@link org.netlib.util.doubleW} object - * @param Cp a {@link org.netlib.util.doubleW} object - * @param W a {@link org.netlib.util.doubleW} object - * @param G a {@link org.netlib.util.doubleW} object - * @param JT a {@link org.netlib.util.doubleW} object - * @param Kappa a {@link org.netlib.util.doubleW} object - */ - public static void PropertiesDetail(double T, double D, double[] x, doubleW P, doubleW Z, - doubleW dPdD, doubleW d2PdD2, doubleW d2PdTD, doubleW dPdT, doubleW U, doubleW H, - doubleW S, doubleW Cv, doubleW Cp, doubleW W, doubleW G, doubleW JT, doubleW Kappa) { - // Sub Properties(T, D, x, P, Z, dPdD, d2PdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, W, - // G, JT, Kappa) - - // Calculate thermodynamic properties as a function of temperature and density. - // Calls are made to the subroutines - // Molarmass, Alpha0Detail, and AlpharDetail. If the density is not known, call - // subroutine DensityDetail first - // with the known values of pressure and temperature. - - // Inputs: - // T - Temperature (K) - // D - Density (mol/l) - // x() - Composition (mole fraction) - - // Outputs: - // P - Pressure (kPa) - // Z - Compressibility factor - // dPdD - First derivative of pressure with respect to density at constant - // temperature [kPa/(mol/l)] - // d2PdD2 - Second derivative of pressure with respect to density at constant - // temperature [kPa/(mol/l)^2] - // d2PdTD - Second derivative of pressure with respect to temperature and - // density [kPa/(mol/l)/K] (currently not calculated) - // dPdT - First derivative of pressure with respect to temperature at constant - // density (kPa/K) - // U - Internal energy (J/mol) - // H - Enthalpy (J/mol) - // S - Entropy [J/(mol-K)] - // Cv - Isochoric heat capacity [J/(mol-K)] - // Cp - Isobaric heat capacity [J/(mol-K)] - // W - Speed of sound (m/s) - // G - Gibbs energy (J/mol) - // JT - Joule-Thomson coefficient (K/kPa) - // Kappa - Isentropic Exponent - doubleW A = new doubleW(0.0d); - doubleW[] a0 = new doubleW[2 + 1]; - for (int i = 0; i < 3; i++) { - a0[i] = new doubleW(0.0d); + } + D.val = Math.exp(-vlog); + PressureDetail(T, D.val, x, P2, Z); + if (dPdDsave < epsilon || P2.val < epsilon) { + vlog += 0.1; + } else { + // Find the next density with a first order Newton's type iterative scheme, with + // log(P) as the known variable and log(v) as the unknown property. + // See AGA 8 publication for further information. + dpdlv = -D.val * dPdDsave; // d(p)/d[log(v)] + vdiff = (Math.log(P2.val) - plog) * P2.val / dpdlv; + vlog = vlog - vdiff; + if (Math.abs(vdiff) < tolr) { + D.val = Math.exp(-vlog); + return; // Iteration converged } - doubleW[][] ar = new doubleW[3 + 1][3 + 1]; + } + } + ierr.val = 1; + herr.val = "Calculation failed to converge in DETAIL method, ideal gas density returned."; + D.val = P / RDetail / T; + } + + /** + *

+ * PropertiesDetail. + *

+ * + * @param T a double + * @param D a double + * @param x an array of type double + * @param P a {@link org.netlib.util.doubleW} object + * @param Z a {@link org.netlib.util.doubleW} object + * @param dPdD a {@link org.netlib.util.doubleW} object + * @param d2PdD2 a {@link org.netlib.util.doubleW} object + * @param d2PdTD a {@link org.netlib.util.doubleW} object + * @param dPdT a {@link org.netlib.util.doubleW} object + * @param U a {@link org.netlib.util.doubleW} object + * @param H a {@link org.netlib.util.doubleW} object + * @param S a {@link org.netlib.util.doubleW} object + * @param Cv a {@link org.netlib.util.doubleW} object + * @param Cp a {@link org.netlib.util.doubleW} object + * @param W a {@link org.netlib.util.doubleW} object + * @param G a {@link org.netlib.util.doubleW} object + * @param JT a {@link org.netlib.util.doubleW} object + * @param Kappa a {@link org.netlib.util.doubleW} object + */ + public void PropertiesDetail(double T, double D, double[] x, doubleW P, doubleW Z, doubleW dPdD, + doubleW d2PdD2, doubleW d2PdTD, doubleW dPdT, doubleW U, doubleW H, doubleW S, doubleW Cv, + doubleW Cp, doubleW W, doubleW G, doubleW JT, doubleW Kappa) { + // Sub Properties(T, D, x, P, Z, dPdD, d2PdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, W, + // G, JT, Kappa) + + // Calculate thermodynamic properties as a function of temperature and density. + // Calls are made to the subroutines + // Molarmass, Alpha0Detail, and AlpharDetail. If the density is not known, call + // subroutine DensityDetail first + // with the known values of pressure and temperature. + + // Inputs: + // T - Temperature (K) + // D - Density (mol/l) + // x() - Composition (mole fraction) + + // Outputs: + // P - Pressure (kPa) + // Z - Compressibility factor + // dPdD - First derivative of pressure with respect to density at constant + // temperature [kPa/(mol/l)] + // d2PdD2 - Second derivative of pressure with respect to density at constant + // temperature [kPa/(mol/l)^2] + // d2PdTD - Second derivative of pressure with respect to temperature and + // density [kPa/(mol/l)/K] (currently not calculated) + // dPdT - First derivative of pressure with respect to temperature at constant + // density (kPa/K) + // U - Internal energy (J/mol) + // H - Enthalpy (J/mol) + // S - Entropy [J/(mol-K)] + // Cv - Isochoric heat capacity [J/(mol-K)] + // Cp - Isobaric heat capacity [J/(mol-K)] + // W - Speed of sound (m/s) + // G - Gibbs energy (J/mol) + // JT - Joule-Thomson coefficient (K/kPa) + // Kappa - Isentropic Exponent + doubleW A = new doubleW(0.0d); + doubleW[] a0 = new doubleW[2 + 1]; + for (int i = 0; i < 3; i++) { + a0[i] = new doubleW(0.0d); + } + doubleW[][] ar = new doubleW[3 + 1][3 + 1]; - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - ar[i][j] = new doubleW(0.0d); - } - } - doubleW Mm = new doubleW(0.0d); - MolarMassDetail(x, Mm); - xTermsDetail(x); - - // Calculate the ideal gas Helmholtz energy, and its first and second - // derivatives with respect to temperature. - Alpha0Detail(T, D, x, a0); - - // Calculate the real gas Helmholtz energy, and its derivatives with respect to - // temperature and/or density. - AlpharDetail(2, 3, T, D, ar); - - double R = RDetail; - double RT = R * T; - Z.val = 1 + ar[0][1].val / RT; - P.val = D * RT * Z.val; - dPdD.val = RT + 2 * ar[0][1].val + ar[0][2].val; - dPdT.val = D * R + D * ar[1][1].val; - A.val = a0[0].val + ar[0][0].val; - S.val = -a0[1].val - ar[1][0].val; - U.val = A.val + T * S.val; - Cv.val = -(a0[2].val + ar[2][0].val); - if (D > epsilon) { - H.val = U.val + P.val / D; - G.val = A.val + P.val / D; - Cp.val = Cv.val + T * sq(dPdT.val / D) / dPdD.val; - d2PdD2.val = (2 * ar[0][1].val + 4 * ar[0][2].val + ar[0][3].val) / D; - JT.val = (T / D * dPdT.val / dPdD.val - 1) / Cp.val / D; - } else { - H.val = U.val + RT; - G.val = A.val + RT; - Cp.val = Cv.val + R; - d2PdD2.val = 0; - JT.val = 1E+20; // =(dB/dT*T-B)/Cp for an ideal gas, but dB/dT is not calculated here - } - W.val = 1000 * Cp.val / Cv.val * dPdD.val / Mm.val; - if (W.val < 0) { - W.val = 0; - } - W.val = Math.sqrt(W.val); - Kappa.val = W.val * W.val * Mm.val / (RT * 1000 * Z.val); - d2PdTD.val = 0; + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + ar[i][j] = new doubleW(0.0d); + } + } + doubleW Mm = new doubleW(0.0d); + MolarMassDetail(x, Mm); + xTermsDetail(x); + + // Calculate the ideal gas Helmholtz energy, and its first and second + // derivatives with respect to temperature. + Alpha0Detail(T, D, x, a0); + + // Calculate the real gas Helmholtz energy, and its derivatives with respect to + // temperature and/or density. + AlpharDetail(2, 3, T, D, ar); + + double R = RDetail; + double RT = R * T; + Z.val = 1 + ar[0][1].val / RT; + P.val = D * RT * Z.val; + dPdD.val = RT + 2 * ar[0][1].val + ar[0][2].val; + dPdT.val = D * R + D * ar[1][1].val; + A.val = a0[0].val + ar[0][0].val; + S.val = -a0[1].val - ar[1][0].val; + U.val = A.val + T * S.val; + Cv.val = -(a0[2].val + ar[2][0].val); + if (D > epsilon) { + H.val = U.val + P.val / D; + G.val = A.val + P.val / D; + Cp.val = Cv.val + T * sq(dPdT.val / D) / dPdD.val; + d2PdD2.val = (2 * ar[0][1].val + 4 * ar[0][2].val + ar[0][3].val) / D; + JT.val = (T / D * dPdT.val / dPdD.val - 1) / Cp.val / D; + } else { + H.val = U.val + RT; + G.val = A.val + RT; + Cp.val = Cv.val + R; + d2PdD2.val = 0; + JT.val = 1E+20; // =(dB/dT*T-B)/Cp for an ideal gas, but dB/dT is not calculated here + } + W.val = 1000 * Cp.val / Cv.val * dPdD.val / Mm.val; + if (W.val < 0) { + W.val = 0; + } + W.val = Math.sqrt(W.val); + Kappa.val = W.val * W.val * Mm.val / (RT * 1000 * Z.val); + d2PdTD.val = 0; + } + + /** + * // Calculate terms dependent only on composition + * + * @param x Composition (mole fraction) + */ + // The following routines are low-level routines that should not be called outside of this code. + void xTermsDetail(double[] x) { + double G, Q, F, U, Q2, xij, xi2; + int icheck; + + // Check to see if a component fraction has changed. If x is the same as the + // previous call, then exit. + icheck = 0; + for (int i = 1; i <= NcDetail; ++i) { + if (Math.abs(x[i] - xold[i]) > 0.0000001) { + icheck = 1; + } + xold[i] = x[i]; + } + if (icheck == 0) { + return; } - /** - * // Calculate terms dependent only on composition - * - * @param x Composition (mole fraction) - */ - // The following routines are low-level routines that should not be called outside of this code. - static void xTermsDetail(double[] x) { - double G, Q, F, U, Q2, xij, xi2; - int icheck; - - // Check to see if a component fraction has changed. If x is the same as the - // previous call, then exit. - icheck = 0; - for (int i = 1; i <= NcDetail; ++i) { - if (Math.abs(x[i] - xold[i]) > 0.0000001) { - icheck = 1; - } - xold[i] = x[i]; - } - if (icheck == 0) { - return; - } + K3 = 0; + U = 0; + G = 0; + Q = 0; + F = 0; + for (int n = 1; n <= 18; ++n) { + Bs[n] = 0; + } - K3 = 0; - U = 0; - G = 0; - Q = 0; - F = 0; + // Calculate pure fluid contributions + for (int i = 1; i <= NcDetail; ++i) { + if (x[i] > 0) { + xi2 = sq(x[i]); + K3 += x[i] * Ki25[i]; // K, U, and G are the sums of a pure fluid contribution and a + U += x[i] * Ei25[i]; // binary pair contribution + G += x[i] * Gi[i]; + Q += x[i] * Qi[i]; // Q and F depend only on the pure fluid parts + F += xi2 * Fi[i]; for (int n = 1; n <= 18; ++n) { - Bs[n] = 0; - } - - // Calculate pure fluid contributions - for (int i = 1; i <= NcDetail; ++i) { - if (x[i] > 0) { - xi2 = sq(x[i]); - K3 += x[i] * Ki25[i]; // K, U, and G are the sums of a pure fluid contribution and a - U += x[i] * Ei25[i]; // binary pair contribution - G += x[i] * Gi[i]; - Q += x[i] * Qi[i]; // Q and F depend only on the pure fluid parts - F += xi2 * Fi[i]; - for (int n = 1; n <= 18; ++n) { - Bs[n] = Bs[n] + xi2 * Bsnij2[i][i][n]; // Pure fluid contributions to second - // virial coefficient - } - } - } - K3 = sq(K3); - U = sq(U); - - // Binary pair contributions - for (int i = 1; i <= NcDetail - 1; ++i) { - if (x[i] > 0) { - for (int j = i + 1; j <= NcDetail; ++j) { - if (x[j] > 0) { - xij = 2 * x[i] * x[j]; - K3 = K3 + xij * Kij5[i][j]; - U = U + xij * Uij5[i][j]; - G = G + xij * Gij5[i][j]; - for (int n = 1; n <= 18; ++n) { - Bs[n] = Bs[n] + xij * Bsnij2[i][j][n]; // Second virial coefficients of - // mixture - } - } - } - } - } - K3 = Math.pow(K3, 0.6); - U = Math.pow(U, 0.2); - - // Third virial and higher coefficients - Q2 = sq(Q); - for (int n = 13; n <= 58; ++n) { - Csn[n] = an[n] * Math.pow(U, un[n]); - if (gn[n] == 1) { - Csn[n] = Csn[n] * G; - } - if (qn[n] == 1) { - Csn[n] = Csn[n] * Q2; - } - if (fn[n] == 1) { - Csn[n] = Csn[n] * F; - } + Bs[n] = Bs[n] + xi2 * Bsnij2[i][i][n]; // Pure fluid contributions to second + // virial coefficient } + } } - - /** - * @param T ... - * @param D ... - * @param x ... - * @param a0 ... - */ - static void Alpha0Detail(double T, double D, double[] x, doubleW[] a0) { - // Private Sub Alpha0Detail(T, D, x, a0) - - // Calculate the ideal gas Helmholtz energy and its derivatives with respect to - // T and D. - // This routine is not needed when only P (or Z) is calculated. - - // Inputs: - // T - Temperature (K) - // D - Density (mol/l) - // x() - Composition (mole fraction) - - // Outputs: - // a0(0) - Ideal gas Helmholtz energy (J/mol) - // a0(1) - partial (a0)/partial(T) [J/(mol-K)] - // a0(2) - T*partial^2(a0)/partial(T)^2 [J/(mol-K)] - - double LogT, LogD, LogHyp, th0T, LogxD; - double SumHyp0, SumHyp1, SumHyp2; - double em, ep, hcn, hsn; - - a0[0].val = 0; - a0[1].val = 0; - a0[2].val = 0; - - if (D > epsilon) { - LogD = Math.log(D); - } else { - LogD = Math.log(epsilon); - } - LogT = Math.log(T); - for (int i = 1; i <= NcDetail; ++i) { - if (x[i] > 0) { - LogxD = LogD + Math.log(x[i]); - SumHyp0 = 0; - SumHyp1 = 0; - SumHyp2 = 0; - for (int j = 4; j <= 7; ++j) { - if (th0i[i][j] > 0) { - th0T = th0i[i][j] / T; - ep = Math.exp(th0T); - em = 1 / ep; - hsn = (ep - em) / 2; - hcn = (ep + em) / 2; - if (j == 4 || j == 6) { - LogHyp = Math.log(Math.abs(hsn)); - SumHyp0 += n0i[i][j] * LogHyp; - SumHyp1 += n0i[i][j] * (LogHyp - th0T * hcn / hsn); - SumHyp2 += n0i[i][j] * sq(th0T / hsn); - } else { - LogHyp = Math.log(Math.abs(hcn)); - SumHyp0 += -n0i[i][j] * LogHyp; - SumHyp1 += -n0i[i][j] * (LogHyp - th0T * hsn / hcn); - SumHyp2 += +n0i[i][j] * sq(th0T / hcn); - } - } - } - a0[0].val += - x[i] * (LogxD + n0i[i][1] + n0i[i][2] / T - n0i[i][3] * LogT + SumHyp0); - a0[1].val += x[i] * (LogxD + n0i[i][1] - n0i[i][3] * (1 + LogT) + SumHyp1); - a0[2].val += -x[i] * (n0i[i][3] + SumHyp2); + K3 = sq(K3); + U = sq(U); + + // Binary pair contributions + for (int i = 1; i <= NcDetail - 1; ++i) { + if (x[i] > 0) { + for (int j = i + 1; j <= NcDetail; ++j) { + if (x[j] > 0) { + xij = 2 * x[i] * x[j]; + K3 = K3 + xij * Kij5[i][j]; + U = U + xij * Uij5[i][j]; + G = G + xij * Gij5[i][j]; + for (int n = 1; n <= 18; ++n) { + Bs[n] = Bs[n] + xij * Bsnij2[i][j][n]; // Second virial coefficients of + // mixture } + } } - a0[0].val = a0[0].val * RDetail * T; - a0[1].val = a0[1].val * RDetail; - a0[2].val = a0[2].val * RDetail; + } } - - /** - * @param itau .... - * @param idel ... - * @param T ... - * @param D ... - * @param ar ... - */ - static void AlpharDetail(int itau, int idel, double T, double D, doubleW[][] ar) { - // Private Sub AlpharDetail(itau, idel, T, D, ar) - - // Calculate the derivatives of the residual Helmholtz energy (ar) with respect - // to T and D. - // itau and idel are inputs that contain the highest derivatives needed. - // Outputs are returned in the array ar. - // Subroutine xTerms must be called before this routine if x has changed - - // Inputs: - // itau - Set this to 1 to calculate "ar" derivatives with respect to T [i.e., - // ar(1,0), ar(1,1), and ar(2,0)], otherwise set it to 0. - // idel - Currently not used, but kept as an input for future use in specifing - // the highest density derivative needed. - // T - Temperature (K) - // D - Density (mol/l) - - // Outputs: - // ar(0,0) - Residual Helmholtz energy (J/mol) - // ar(0,1) - D*partial (ar)/partial(D) (J/mol) - // ar(0,2) - D^2*partial^2(ar)/partial(D)^2 (J/mol) - // ar(0,3) - D^3*partial^3(ar)/partial(D)^3 (J/mol) - // ar(1,0) - partial (ar)/partial(T) [J/(mol-K)] - // ar(1,1) - D*partial^2(ar)/partial(D)/partial(T) [J/(mol-K)] - // ar(2,0) - T*partial^2(ar)/partial(T)^2 [J/(mol-K)] - - double ckd, bkd, Dred; - double Sum, s0, s1, s2, s3, RT; - double[] Sum0 = new double[NTerms + 1]; - double[] SumB = new double[NTerms + 1]; - double[] Dknn = new double[9 + 1]; - double[] Expn = new double[4 + 1]; - - double[] CoefD1 = new double[NTerms + 1]; - double[] CoefD2 = new double[NTerms + 1]; - double[] CoefD3 = new double[NTerms + 1]; - - double[] CoefT1 = new double[NTerms + 1]; - double[] CoefT2 = new double[NTerms + 1]; - - for (int i = 0; i < 3; ++i) { - for (int j = 0; j < 3; ++j) { - ar[i][j].val = 0; - } - } - if (Math.abs(T - Told) > 0.0000001) { - for (int n = 1; n <= 58; ++n) { - Tun[n] = Math.pow(T, -un[n]); - } - } - Told = T; - - // Precalculation of common powers and exponents of density - Dred = K3 * D; - Dknn[0] = 1; - for (int n = 1; n <= 9; ++n) { - Dknn[n] = Dred * Dknn[n - 1]; - } - Expn[0] = 1; - for (int n = 1; n <= 4; ++n) { - Expn[n] = Math.exp(-Dknn[n]); - } - RT = RDetail * T; - - for (int n = 1; n <= 58; ++n) { - // Contributions to the Helmholtz energy and its derivatives with respect to - // temperature - CoefT1[n] = RDetail * (un[n] - 1); - CoefT2[n] = CoefT1[n] * un[n]; - // Contributions to the virial coefficients - SumB[n] = 0; - Sum0[n] = 0; - if (n <= 18) { - Sum = Bs[n] * D; - if (n >= 13) { - Sum += -Csn[n] * Dred; - } - SumB[n] = Sum * Tun[n]; - } - if (n >= 13) { - // Contributions to the residual part of the Helmholtz energy - Sum0[n] = Csn[n] * Dknn[bn[n]] * Tun[n] * Expn[kn[n]]; - // Contributions to the derivatives of the Helmholtz energy with respect to - // density - bkd = bn[n] - kn[n] * Dknn[kn[n]]; - ckd = kn[n] * kn[n] * Dknn[kn[n]]; - CoefD1[n] = bkd; - CoefD2[n] = bkd * (bkd - 1) - ckd; - CoefD3[n] = (bkd - 2) * CoefD2[n] + ckd * (1 - kn[n] - 2 * bkd); + K3 = Math.pow(K3, 0.6); + U = Math.pow(U, 0.2); + + // Third virial and higher coefficients + Q2 = sq(Q); + for (int n = 13; n <= 58; ++n) { + Csn[n] = an[n] * Math.pow(U, un[n]); + if (gn[n] == 1) { + Csn[n] = Csn[n] * G; + } + if (qn[n] == 1) { + Csn[n] = Csn[n] * Q2; + } + if (fn[n] == 1) { + Csn[n] = Csn[n] * F; + } + } + } + + /** + * @param T ... + * @param D ... + * @param x ... + * @param a0 ... + */ + void Alpha0Detail(double T, double D, double[] x, doubleW[] a0) { + // Private Sub Alpha0Detail(T, D, x, a0) + + // Calculate the ideal gas Helmholtz energy and its derivatives with respect to + // T and D. + // This routine is not needed when only P (or Z) is calculated. + + // Inputs: + // T - Temperature (K) + // D - Density (mol/l) + // x() - Composition (mole fraction) + + // Outputs: + // a0(0) - Ideal gas Helmholtz energy (J/mol) + // a0(1) - partial (a0)/partial(T) [J/(mol-K)] + // a0(2) - T*partial^2(a0)/partial(T)^2 [J/(mol-K)] + + double LogT, LogD, LogHyp, th0T, LogxD; + double SumHyp0, SumHyp1, SumHyp2; + double em, ep, hcn, hsn; + + a0[0].val = 0; + a0[1].val = 0; + a0[2].val = 0; + + if (D > epsilon) { + LogD = Math.log(D); + } else { + LogD = Math.log(epsilon); + } + LogT = Math.log(T); + for (int i = 1; i <= NcDetail; ++i) { + if (x[i] > 0) { + LogxD = LogD + Math.log(x[i]); + SumHyp0 = 0; + SumHyp1 = 0; + SumHyp2 = 0; + for (int j = 4; j <= 7; ++j) { + if (th0i[i][j] > 0) { + th0T = th0i[i][j] / T; + ep = Math.exp(th0T); + em = 1 / ep; + hsn = (ep - em) / 2; + hcn = (ep + em) / 2; + if (j == 4 || j == 6) { + LogHyp = Math.log(Math.abs(hsn)); + SumHyp0 += n0i[i][j] * LogHyp; + SumHyp1 += n0i[i][j] * (LogHyp - th0T * hcn / hsn); + SumHyp2 += n0i[i][j] * sq(th0T / hsn); } else { - CoefD1[n] = 0; - CoefD2[n] = 0; - CoefD3[n] = 0; + LogHyp = Math.log(Math.abs(hcn)); + SumHyp0 += -n0i[i][j] * LogHyp; + SumHyp1 += -n0i[i][j] * (LogHyp - th0T * hsn / hcn); + SumHyp2 += +n0i[i][j] * sq(th0T / hcn); } + } } + a0[0].val += x[i] * (LogxD + n0i[i][1] + n0i[i][2] / T - n0i[i][3] * LogT + SumHyp0); + a0[1].val += x[i] * (LogxD + n0i[i][1] - n0i[i][3] * (1 + LogT) + SumHyp1); + a0[2].val += -x[i] * (n0i[i][3] + SumHyp2); + } + } + a0[0].val = a0[0].val * RDetail * T; + a0[1].val = a0[1].val * RDetail; + a0[2].val = a0[2].val * RDetail; + } + + /** + * @param itau .... + * @param idel ... + * @param T ... + * @param D ... + * @param ar ... + */ + void AlpharDetail(int itau, int idel, double T, double D, doubleW[][] ar) { + // Private Sub AlpharDetail(itau, idel, T, D, ar) + + // Calculate the derivatives of the residual Helmholtz energy (ar) with respect + // to T and D. + // itau and idel are inputs that contain the highest derivatives needed. + // Outputs are returned in the array ar. + // Subroutine xTerms must be called before this routine if x has changed + + // Inputs: + // itau - Set this to 1 to calculate "ar" derivatives with respect to T [i.e., + // ar(1,0), ar(1,1), and ar(2,0)], otherwise set it to 0. + // idel - Currently not used, but kept as an input for future use in specifing + // the highest density derivative needed. + // T - Temperature (K) + // D - Density (mol/l) + + // Outputs: + // ar(0,0) - Residual Helmholtz energy (J/mol) + // ar(0,1) - D*partial (ar)/partial(D) (J/mol) + // ar(0,2) - D^2*partial^2(ar)/partial(D)^2 (J/mol) + // ar(0,3) - D^3*partial^3(ar)/partial(D)^3 (J/mol) + // ar(1,0) - partial (ar)/partial(T) [J/(mol-K)] + // ar(1,1) - D*partial^2(ar)/partial(D)/partial(T) [J/(mol-K)] + // ar(2,0) - T*partial^2(ar)/partial(T)^2 [J/(mol-K)] + + double ckd, bkd, Dred; + double Sum, s0, s1, s2, s3, RT; + double[] Sum0 = new double[NTerms + 1]; + double[] SumB = new double[NTerms + 1]; + double[] Dknn = new double[9 + 1]; + double[] Expn = new double[4 + 1]; + + double[] CoefD1 = new double[NTerms + 1]; + double[] CoefD2 = new double[NTerms + 1]; + double[] CoefD3 = new double[NTerms + 1]; + + double[] CoefT1 = new double[NTerms + 1]; + double[] CoefT2 = new double[NTerms + 1]; + + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + ar[i][j].val = 0; + } + } + if (Math.abs(T - Told) > 0.0000001) { + for (int n = 1; n <= 58; ++n) { + Tun[n] = Math.pow(T, -un[n]); + } + } + Told = T; - for (int n = 1; n <= 58; ++n) { - // Density derivatives - s0 = Sum0[n] + SumB[n]; - s1 = Sum0[n] * CoefD1[n] + SumB[n]; - s2 = Sum0[n] * CoefD2[n]; - s3 = Sum0[n] * CoefD3[n]; - ar[0][0].val = ar[0][0].val + RT * s0; - ar[0][1].val = ar[0][1].val + RT * s1; - ar[0][2].val = ar[0][2].val + RT * s2; - ar[0][3].val = ar[0][3].val + RT * s3; - // Temperature derivatives - if (itau > 0) { - ar[1][0].val = ar[1][0].val - CoefT1[n] * s0; - ar[1][1].val = ar[1][1].val - CoefT1[n] * s1; - ar[2][0].val = ar[2][0].val + CoefT2[n] * s0; - // The following are not used, but fully functional - // ar(1, 2) = ar(1, 2) - CoefT1(n) * s2; - // ar(1, 3) = ar(1, 3) - CoefT1(n) * s3; - // ar(2, 1) = ar(2, 1) + CoefT2(n) * s1; - // ar(2, 2) = ar(2, 2) + CoefT2(n) * s2; - // ar(2, 3) = ar(2, 3) + CoefT2(n) * s3; - } + // Precalculation of common powers and exponents of density + Dred = K3 * D; + Dknn[0] = 1; + for (int n = 1; n <= 9; ++n) { + Dknn[n] = Dred * Dknn[n - 1]; + } + Expn[0] = 1; + for (int n = 1; n <= 4; ++n) { + Expn[n] = Math.exp(-Dknn[n]); + } + RT = RDetail * T; + + for (int n = 1; n <= 58; ++n) { + // Contributions to the Helmholtz energy and its derivatives with respect to + // temperature + CoefT1[n] = RDetail * (un[n] - 1); + CoefT2[n] = CoefT1[n] * un[n]; + // Contributions to the virial coefficients + SumB[n] = 0; + Sum0[n] = 0; + if (n <= 18) { + Sum = Bs[n] * D; + if (n >= 13) { + Sum += -Csn[n] * Dred; } + SumB[n] = Sum * Tun[n]; + } + if (n >= 13) { + // Contributions to the residual part of the Helmholtz energy + Sum0[n] = Csn[n] * Dknn[bn[n]] * Tun[n] * Expn[kn[n]]; + // Contributions to the derivatives of the Helmholtz energy with respect to + // density + bkd = bn[n] - kn[n] * Dknn[kn[n]]; + ckd = kn[n] * kn[n] * Dknn[kn[n]]; + CoefD1[n] = bkd; + CoefD2[n] = bkd * (bkd - 1) - ckd; + CoefD3[n] = (bkd - 2) * CoefD2[n] + ckd * (1 - kn[n] - 2 * bkd); + } else { + CoefD1[n] = 0; + CoefD2[n] = 0; + CoefD3[n] = 0; + } } - /// The following routine must be called once before any other routine. - /** - *

- * SetupDetail. - *

- */ - public static void SetupDetail() { - // Initialize all the constants and parameters in the DETAIL model. - // Some values are modified for calculations that do not depend on T, D, and x - // in order to speed up the program. - - int[] sn = new int[NTerms + 1]; - int[] wn = new int[NTerms + 1]; - - double[] Ei = new double[MaxFlds + 1]; - double[] Ki = new double[MaxFlds + 1]; - double[] Si = new double[MaxFlds + 1]; - double[] Wi = new double[MaxFlds + 1]; - double Bsnij; - double[][] Kij = new double[MaxFlds + 1][MaxFlds + 1]; - double[][] Gij = new double[MaxFlds + 1][MaxFlds + 1]; - double[][] Eij = new double[MaxFlds + 1][MaxFlds + 1]; - double[][] Uij = new double[MaxFlds + 1][MaxFlds + 1]; - - double d0; - - RDetail = 8.31451; - - // Molar masses (g/mol) - MMiDetail[1] = 16.043; // Methane - MMiDetail[2] = 28.0135; // Nitrogen - MMiDetail[3] = 44.01; // Carbon dioxide - MMiDetail[4] = 30.07; // Ethane - MMiDetail[5] = 44.097; // Propane - MMiDetail[6] = 58.123; // Isobutane - MMiDetail[7] = 58.123; // n-Butane - MMiDetail[8] = 72.15; // Isopentane - MMiDetail[9] = 72.15; // n-Pentane - MMiDetail[10] = 86.177; // Hexane - MMiDetail[11] = 100.204; // Heptane - MMiDetail[12] = 114.231; // Octane - MMiDetail[13] = 128.258; // Nonane - MMiDetail[14] = 142.285; // Decane - MMiDetail[15] = 2.0159; // Hydrogen - MMiDetail[16] = 31.9988; // Oxygen - MMiDetail[17] = 28.01; // Carbon monoxide - MMiDetail[18] = 18.0153; // Water - MMiDetail[19] = 34.082; // Hydrogen sulfide - MMiDetail[20] = 4.0026; // Helium - MMiDetail[21] = 39.948; // Argon - - // Initialize constants - Told = 0; - for (int i = 1; i <= NTerms; ++i) { - an[i] = 0; - bn[i] = 0; - gn[i] = 0; - fn[i] = 0; - kn[i] = 0; - qn[i] = 0; - sn[i] = 0; - un[i] = 0; - wn[i] = 0; - } + for (int n = 1; n <= 58; ++n) { + // Density derivatives + s0 = Sum0[n] + SumB[n]; + s1 = Sum0[n] * CoefD1[n] + SumB[n]; + s2 = Sum0[n] * CoefD2[n]; + s3 = Sum0[n] * CoefD3[n]; + ar[0][0].val = ar[0][0].val + RT * s0; + ar[0][1].val = ar[0][1].val + RT * s1; + ar[0][2].val = ar[0][2].val + RT * s2; + ar[0][3].val = ar[0][3].val + RT * s3; + // Temperature derivatives + if (itau > 0) { + ar[1][0].val = ar[1][0].val - CoefT1[n] * s0; + ar[1][1].val = ar[1][1].val - CoefT1[n] * s1; + ar[2][0].val = ar[2][0].val + CoefT2[n] * s0; + // The following are not used, but fully functional + // ar(1, 2) = ar(1, 2) - CoefT1(n) * s2; + // ar(1, 3) = ar(1, 3) - CoefT1(n) * s3; + // ar(2, 1) = ar(2, 1) + CoefT2(n) * s1; + // ar(2, 2) = ar(2, 2) + CoefT2(n) * s2; + // ar(2, 3) = ar(2, 3) + CoefT2(n) * s3; + } + } + } + + // The following routine must be called once before any other routine. + /** + *

+ * SetupDetail. + *

+ */ + public void SetupDetail() { + // Initialize all the constants and parameters in the DETAIL model. + // Some values are modified for calculations that do not depend on T, D, and x + // in order to speed up the program. + + int[] sn = new int[NTerms + 1]; + int[] wn = new int[NTerms + 1]; + + double[] Ei = new double[MaxFlds + 1]; + double[] Ki = new double[MaxFlds + 1]; + double[] Si = new double[MaxFlds + 1]; + double[] Wi = new double[MaxFlds + 1]; + double Bsnij; + double[][] Kij = new double[MaxFlds + 1][MaxFlds + 1]; + double[][] Gij = new double[MaxFlds + 1][MaxFlds + 1]; + double[][] Eij = new double[MaxFlds + 1][MaxFlds + 1]; + double[][] Uij = new double[MaxFlds + 1][MaxFlds + 1]; + + double d0; + + RDetail = 8.31451; + + // Molar masses (g/mol) + MMiDetail[1] = 16.043; // Methane + MMiDetail[2] = 28.0135; // Nitrogen + MMiDetail[3] = 44.01; // Carbon dioxide + MMiDetail[4] = 30.07; // Ethane + MMiDetail[5] = 44.097; // Propane + MMiDetail[6] = 58.123; // Isobutane + MMiDetail[7] = 58.123; // n-Butane + MMiDetail[8] = 72.15; // Isopentane + MMiDetail[9] = 72.15; // n-Pentane + MMiDetail[10] = 86.177; // Hexane + MMiDetail[11] = 100.204; // Heptane + MMiDetail[12] = 114.231; // Octane + MMiDetail[13] = 128.258; // Nonane + MMiDetail[14] = 142.285; // Decane + MMiDetail[15] = 2.0159; // Hydrogen + MMiDetail[16] = 31.9988; // Oxygen + MMiDetail[17] = 28.01; // Carbon monoxide + MMiDetail[18] = 18.0153; // Water + MMiDetail[19] = 34.082; // Hydrogen sulfide + MMiDetail[20] = 4.0026; // Helium + MMiDetail[21] = 39.948; // Argon + + // Initialize constants + Told = 0; + for (int i = 1; i <= NTerms; ++i) { + an[i] = 0; + bn[i] = 0; + gn[i] = 0; + fn[i] = 0; + kn[i] = 0; + qn[i] = 0; + sn[i] = 0; + un[i] = 0; + wn[i] = 0; + } - for (int i = 1; i <= MaxFlds; ++i) { - Ei[i] = 0; - Fi[i] = 0; - Gi[i] = 0; - Ki[i] = 0; - Qi[i] = 0; - Si[i] = 0; - Wi[i] = 0; - xold[i] = 0; - for (int j = 1; j <= MaxFlds; ++j) { - Eij[i][j] = 1; - Gij[i][j] = 1; - Kij[i][j] = 1; - Uij[i][j] = 1; - } - } + for (int i = 1; i <= MaxFlds; ++i) { + Ei[i] = 0; + Fi[i] = 0; + Gi[i] = 0; + Ki[i] = 0; + Qi[i] = 0; + Si[i] = 0; + Wi[i] = 0; + xold[i] = 0; + for (int j = 1; j <= MaxFlds; ++j) { + Eij[i][j] = 1; + Gij[i][j] = 1; + Kij[i][j] = 1; + Uij[i][j] = 1; + } + } - // Coefficients of the equation of state - an[1] = 0.1538326; - an[2] = 1.341953; - an[3] = -2.998583; - an[4] = -0.04831228; - an[5] = 0.3757965; - an[6] = -1.589575; - an[7] = -0.05358847; - an[8] = 0.88659463; - an[9] = -0.71023704; - an[10] = -1.471722; - an[11] = 1.32185035; - an[12] = -0.78665925; - an[13] = 0.00000000229129; - an[14] = 0.1576724; - an[15] = -0.4363864; - an[16] = -0.04408159; - an[17] = -0.003433888; - an[18] = 0.03205905; - an[19] = 0.02487355; - an[20] = 0.07332279; - an[21] = -0.001600573; - an[22] = 0.6424706; - an[23] = -0.4162601; - an[24] = -0.06689957; - an[25] = 0.2791795; - an[26] = -0.6966051; - an[27] = -0.002860589; - an[28] = -0.008098836; - an[29] = 3.150547; - an[30] = 0.007224479; - an[31] = -0.7057529; - an[32] = 0.5349792; - an[33] = -0.07931491; - an[34] = -1.418465; - an[35] = -5.99905E-17; - an[36] = 0.1058402; - an[37] = 0.03431729; - an[38] = -0.007022847; - an[39] = 0.02495587; - an[40] = 0.04296818; - an[41] = 0.7465453; - an[42] = -0.2919613; - an[43] = 7.294616; - an[44] = -9.936757; - an[45] = -0.005399808; - an[46] = -0.2432567; - an[47] = 0.04987016; - an[48] = 0.003733797; - an[49] = 1.874951; - an[50] = 0.002168144; - an[51] = -0.6587164; - an[52] = 0.000205518; - an[53] = 0.009776195; - an[54] = -0.02048708; - an[55] = 0.01557322; - an[56] = 0.006862415; - an[57] = -0.001226752; - an[58] = 0.002850908; - - // Density exponents - bn[1] = 1; - bn[2] = 1; - bn[3] = 1; - bn[4] = 1; - bn[5] = 1; - bn[6] = 1; - bn[7] = 1; - bn[8] = 1; - bn[9] = 1; - bn[10] = 1; - bn[11] = 1; - bn[12] = 1; - bn[13] = 1; - bn[14] = 1; - bn[15] = 1; - bn[16] = 1; - bn[17] = 1; - bn[18] = 1; - bn[19] = 2; - bn[20] = 2; - bn[21] = 2; - bn[22] = 2; - bn[23] = 2; - bn[24] = 2; - bn[25] = 2; - bn[26] = 2; - bn[27] = 2; - bn[28] = 3; - bn[29] = 3; - bn[30] = 3; - bn[31] = 3; - bn[32] = 3; - bn[33] = 3; - bn[34] = 3; - bn[35] = 3; - bn[36] = 3; - bn[37] = 3; - bn[38] = 4; - bn[39] = 4; - bn[40] = 4; - bn[41] = 4; - bn[42] = 4; - bn[43] = 4; - bn[44] = 4; - bn[45] = 5; - bn[46] = 5; - bn[47] = 5; - bn[48] = 5; - bn[49] = 5; - bn[50] = 6; - bn[51] = 6; - bn[52] = 7; - bn[53] = 7; - bn[54] = 8; - bn[55] = 8; - bn[56] = 8; - bn[57] = 9; - bn[58] = 9; - - // Exponents on density in EXP[-cn*D^kn] part - // The cn part in this term is not included in this program since it is 1 when - // kn<>0][and 0 otherwise - kn[13] = 3; - kn[14] = 2; - kn[15] = 2; - kn[16] = 2; - kn[17] = 4; - kn[18] = 4; - kn[21] = 2; - kn[22] = 2; - kn[23] = 2; - kn[24] = 4; - kn[25] = 4; - kn[26] = 4; - kn[27] = 4; - kn[29] = 1; - kn[30] = 1; - kn[31] = 2; - kn[32] = 2; - kn[33] = 3; - kn[34] = 3; - kn[35] = 4; - kn[36] = 4; - kn[37] = 4; - kn[40] = 2; - kn[41] = 2; - kn[42] = 2; - kn[43] = 4; - kn[44] = 4; - kn[46] = 2; - kn[47] = 2; - kn[48] = 4; - kn[49] = 4; - kn[51] = 2; - kn[53] = 2; - kn[54] = 1; - kn[55] = 2; - kn[56] = 2; - kn[57] = 2; - kn[58] = 2; - - // Temperature exponents - un[1] = 0; - un[2] = 0.5; - un[3] = 1; - un[4] = 3.5; - un[5] = -0.5; - un[6] = 4.5; - un[7] = 0.5; - un[8] = 7.5; - un[9] = 9.5; - un[10] = 6; - un[11] = 12; - un[12] = 12.5; - un[13] = -6; - un[14] = 2; - un[15] = 3; - un[16] = 2; - un[17] = 2; - un[18] = 11; - un[19] = -0.5; - un[20] = 0.5; - un[21] = 0; - un[22] = 4; - un[23] = 6; - un[24] = 21; - un[25] = 23; - un[26] = 22; - un[27] = -1; - un[28] = -0.5; - un[29] = 7; - un[30] = -1; - un[31] = 6; - un[32] = 4; - un[33] = 1; - un[34] = 9; - un[35] = -13; - un[36] = 21; - un[37] = 8; - un[38] = -0.5; - un[39] = 0; - un[40] = 2; - un[41] = 7; - un[42] = 9; - un[43] = 22; - un[44] = 23; - un[45] = 1; - un[46] = 9; - un[47] = 3; - un[48] = 8; - un[49] = 23; - un[50] = 1.5; - un[51] = 5; - un[52] = -0.5; - un[53] = 4; - un[54] = 7; - un[55] = 3; - un[56] = 0; - un[57] = 1; - un[58] = 0; - - // Flags - fn[13] = 1; - fn[27] = 1; - fn[30] = 1; - fn[35] = 1; - gn[5] = 1; - gn[6] = 1; - gn[25] = 1; - gn[29] = 1; - gn[32] = 1; - gn[33] = 1; - gn[34] = 1; - gn[51] = 1; - gn[54] = 1; - gn[56] = 1; - qn[7] = 1; - qn[16] = 1; - qn[26] = 1; - qn[28] = 1; - qn[37] = 1; - qn[42] = 1; - qn[47] = 1; - qn[49] = 1; - qn[52] = 1; - qn[58] = 1; - sn[8] = 1; - sn[9] = 1; - wn[10] = 1; - wn[11] = 1; - wn[12] = 1; - - // Energy parameters - Ei[1] = 151.3183; - Ei[2] = 99.73778; - Ei[3] = 241.9606; - Ei[4] = 244.1667; - Ei[5] = 298.1183; - Ei[6] = 324.0689; - Ei[7] = 337.6389; - Ei[8] = 365.5999; - Ei[9] = 370.6823; - Ei[10] = 402.636293; - Ei[11] = 427.72263; - Ei[12] = 450.325022; - Ei[13] = 470.840891; - Ei[14] = 489.558373; - Ei[15] = 26.95794; - Ei[16] = 122.7667; - Ei[17] = 105.5348; - Ei[18] = 514.0156; - Ei[19] = 296.355; - Ei[20] = 2.610111; - Ei[21] = 119.6299; - - // Size parameters - Ki[1] = 0.4619255; - Ki[2] = 0.4479153; - Ki[3] = 0.4557489; - Ki[4] = 0.5279209; - Ki[5] = 0.583749; - Ki[6] = 0.6406937; - Ki[7] = 0.6341423; - Ki[8] = 0.6738577; - Ki[9] = 0.6798307; - Ki[10] = 0.7175118; - Ki[11] = 0.7525189; - Ki[12] = 0.784955; - Ki[13] = 0.8152731; - Ki[14] = 0.8437826; - Ki[15] = 0.3514916; - Ki[16] = 0.4186954; - Ki[17] = 0.4533894; - Ki[18] = 0.3825868; - Ki[19] = 0.4618263; - Ki[20] = 0.3589888; - Ki[21] = 0.4216551; - - // Orientation parameters - Gi[2] = 0.027815; - Gi[3] = 0.189065; - Gi[4] = 0.0793; - Gi[5] = 0.141239; - Gi[6] = 0.256692; - Gi[7] = 0.281835; - Gi[8] = 0.332267; - Gi[9] = 0.366911; - Gi[10] = 0.289731; - Gi[11] = 0.337542; - Gi[12] = 0.383381; - Gi[13] = 0.427354; - Gi[14] = 0.469659; - Gi[15] = 0.034369; - Gi[16] = 0.021; - Gi[17] = 0.038953; - Gi[18] = 0.3325; - Gi[19] = 0.0885; - - // Quadrupole parameters - Qi[3] = 0.69; - Qi[18] = 1.06775; - Qi[19] = 0.633276; - Fi[15] = 1; // High temperature parameter - Si[18] = 1.5822; // Dipole parameter - Si[19] = 0.39; // Dipole parameter - Wi[18] = 1; // Association parameter - - // Energy parameters - Eij[1][2] = 0.97164; - Eij[1][3] = 0.960644; - Eij[1][5] = 0.994635; - Eij[1][6] = 1.01953; - Eij[1][7] = 0.989844; - Eij[1][8] = 1.00235; - Eij[1][9] = 0.999268; - Eij[1][10] = 1.107274; - Eij[1][11] = 0.88088; - Eij[1][12] = 0.880973; - Eij[1][13] = 0.881067; - Eij[1][14] = 0.881161; - Eij[1][15] = 1.17052; - Eij[1][17] = 0.990126; - Eij[1][18] = 0.708218; - Eij[1][19] = 0.931484; - Eij[2][3] = 1.02274; - Eij[2][4] = 0.97012; - Eij[2][5] = 0.945939; - Eij[2][6] = 0.946914; - Eij[2][7] = 0.973384; - Eij[2][8] = 0.95934; - Eij[2][9] = 0.94552; - Eij[2][15] = 1.08632; - Eij[2][16] = 1.021; - Eij[2][17] = 1.00571; - Eij[2][18] = 0.746954; - Eij[2][19] = 0.902271; - Eij[3][4] = 0.925053; - Eij[3][5] = 0.960237; - Eij[3][6] = 0.906849; - Eij[3][7] = 0.897362; - Eij[3][8] = 0.726255; - Eij[3][9] = 0.859764; - Eij[3][10] = 0.855134; - Eij[3][11] = 0.831229; - Eij[3][12] = 0.80831; - Eij[3][13] = 0.786323; - Eij[3][14] = 0.765171; - Eij[3][15] = 1.28179; - Eij[3][17] = 1.5; - Eij[3][18] = 0.849408; - Eij[3][19] = 0.955052; - Eij[4][5] = 1.02256; - Eij[4][7] = 1.01306; - Eij[4][9] = 1.00532; - Eij[4][15] = 1.16446; - Eij[4][18] = 0.693168; - Eij[4][19] = 0.946871; - Eij[5][7] = 1.0049; - Eij[5][15] = 1.034787; - Eij[6][15] = 1.3; - Eij[7][15] = 1.3; - Eij[10][19] = 1.008692; - Eij[11][19] = 1.010126; - Eij[12][19] = 1.011501; - Eij[13][19] = 1.012821; - Eij[14][19] = 1.014089; - Eij[15][17] = 1.1; - - // Conformal energy parameters - Uij[1][2] = 0.886106; - Uij[1][3] = 0.963827; - Uij[1][5] = 0.990877; - Uij[1][7] = 0.992291; - Uij[1][9] = 1.00367; - Uij[1][10] = 1.302576; - Uij[1][11] = 1.191904; - Uij[1][12] = 1.205769; - Uij[1][13] = 1.219634; - Uij[1][14] = 1.233498; - Uij[1][15] = 1.15639; - Uij[1][19] = 0.736833; - Uij[2][3] = 0.835058; - Uij[2][4] = 0.816431; - Uij[2][5] = 0.915502; - Uij[2][7] = 0.993556; - Uij[2][15] = 0.408838; - Uij[2][19] = 0.993476; - Uij[3][4] = 0.96987; - Uij[3][10] = 1.066638; - Uij[3][11] = 1.077634; - Uij[3][12] = 1.088178; - Uij[3][13] = 1.098291; - Uij[3][14] = 1.108021; - Uij[3][17] = 0.9; - Uij[3][19] = 1.04529; - Uij[4][5] = 1.065173; - Uij[4][6] = 1.25; - Uij[4][7] = 1.25; - Uij[4][8] = 1.25; - Uij[4][9] = 1.25; - Uij[4][15] = 1.61666; - Uij[4][19] = 0.971926; - Uij[10][19] = 1.028973; - Uij[11][19] = 1.033754; - Uij[12][19] = 1.038338; - Uij[13][19] = 1.042735; - Uij[14][19] = 1.046966; - - // Size parameters - Kij[1][2] = 1.00363; - Kij[1][3] = 0.995933; - Kij[1][5] = 1.007619; - Kij[1][7] = 0.997596; - Kij[1][9] = 1.002529; - Kij[1][10] = 0.982962; - Kij[1][11] = 0.983565; - Kij[1][12] = 0.982707; - Kij[1][13] = 0.981849; - Kij[1][14] = 0.980991; - Kij[1][15] = 1.02326; - Kij[1][19] = 1.00008; - Kij[2][3] = 0.982361; - Kij[2][4] = 1.00796; - Kij[2][15] = 1.03227; - Kij[2][19] = 0.942596; - Kij[3][4] = 1.00851; - Kij[3][10] = 0.910183; - Kij[3][11] = 0.895362; - Kij[3][12] = 0.881152; - Kij[3][13] = 0.86752; - Kij[3][14] = 0.854406; - Kij[3][19] = 1.00779; - Kij[4][5] = 0.986893; - Kij[4][15] = 1.02034; - Kij[4][19] = 0.999969; - Kij[10][19] = 0.96813; - Kij[11][19] = 0.96287; - Kij[12][19] = 0.957828; - Kij[13][19] = 0.952441; - Kij[14][19] = 0.948338; - - // Orientation parameters - Gij[1][3] = 0.807653; - Gij[1][15] = 1.95731; - Gij[2][3] = 0.982746; - Gij[3][4] = 0.370296; - Gij[3][18] = 1.67309; - - // Ideal gas parameters - n0i[1][3] = 4.00088; - n0i[1][4] = 0.76315; - n0i[1][5] = 0.0046; - n0i[1][6] = 8.74432; - n0i[1][7] = -4.46921; - n0i[1][1] = 29.83843397; - n0i[1][2] = -15999.69151; - n0i[2][3] = 3.50031; - n0i[2][4] = 0.13732; - n0i[2][5] = -0.1466; - n0i[2][6] = 0.90066; - n0i[2][7] = 0; - n0i[2][1] = 17.56770785; - n0i[2][2] = -2801.729072; - n0i[3][3] = 3.50002; - n0i[3][4] = 2.04452; - n0i[3][5] = -1.06044; - n0i[3][6] = 2.03366; - n0i[3][7] = 0.01393; - n0i[3][1] = 20.65844696; - n0i[3][2] = -4902.171516; - n0i[4][3] = 4.00263; - n0i[4][4] = 4.33939; - n0i[4][5] = 1.23722; - n0i[4][6] = 13.1974; - n0i[4][7] = -6.01989; - n0i[4][1] = 36.73005938; - n0i[4][2] = -23639.65301; - n0i[5][3] = 4.02939; - n0i[5][4] = 6.60569; - n0i[5][5] = 3.197; - n0i[5][6] = 19.1921; - n0i[5][7] = -8.37267; - n0i[5][1] = 44.70909619; - n0i[5][2] = -31236.63551; - n0i[6][3] = 4.06714; - n0i[6][4] = 8.97575; - n0i[6][5] = 5.25156; - n0i[6][6] = 25.1423; - n0i[6][7] = 16.1388; - n0i[6][1] = 34.30180349; - n0i[6][2] = -38525.50276; - n0i[7][3] = 4.33944; - n0i[7][4] = 9.44893; - n0i[7][5] = 6.89406; - n0i[7][6] = 24.4618; - n0i[7][7] = 14.7824; - n0i[7][1] = 36.53237783; - n0i[7][2] = -38957.80933; - n0i[8][3] = 4; - n0i[8][4] = 11.7618; - n0i[8][5] = 20.1101; - n0i[8][6] = 33.1688; - n0i[8][7] = 0; - n0i[8][1] = 43.17218626; - n0i[8][2] = -51198.30946; - n0i[9][3] = 4; - n0i[9][4] = 8.95043; - n0i[9][5] = 21.836; - n0i[9][6] = 33.4032; - n0i[9][7] = 0; - n0i[9][1] = 42.67837089; - n0i[9][2] = -45215.83; - n0i[10][3] = 4; - n0i[10][4] = 11.6977; - n0i[10][5] = 26.8142; - n0i[10][6] = 38.6164; - n0i[10][7] = 0; - n0i[10][1] = 46.99717188; - n0i[10][2] = -52746.83318; - n0i[11][3] = 4; - n0i[11][4] = 13.7266; - n0i[11][5] = 30.4707; - n0i[11][6] = 43.5561; - n0i[11][7] = 0; - n0i[11][1] = 52.07631631; - n0i[11][2] = -57104.81056; - n0i[12][3] = 4; - n0i[12][4] = 15.6865; - n0i[12][5] = 33.8029; - n0i[12][6] = 48.1731; - n0i[12][7] = 0; - n0i[12][1] = 57.25830934; - n0i[12][2] = -60546.76385; - n0i[13][3] = 4; - n0i[13][4] = 18.0241; - n0i[13][5] = 38.1235; - n0i[13][6] = 53.3415; - n0i[13][7] = 0; - n0i[13][1] = 62.09646901; - n0i[13][2] = -66600.12837; - n0i[14][3] = 4; - n0i[14][4] = 21.0069; - n0i[14][5] = 43.4931; - n0i[14][6] = 58.3657; - n0i[14][7] = 0; - n0i[14][1] = 65.93909154; - n0i[14][2] = -74131.45483; - n0i[15][3] = 2.47906; - n0i[15][4] = 0.95806; - n0i[15][5] = 0.45444; - n0i[15][6] = 1.56039; - n0i[15][7] = -1.3756; - n0i[15][1] = 13.07520288; - n0i[15][2] = -5836.943696; - n0i[16][3] = 3.50146; - n0i[16][4] = 1.07558; - n0i[16][5] = 1.01334; - n0i[16][6] = 0; - n0i[16][7] = 0; - n0i[16][1] = 16.8017173; - n0i[16][2] = -2318.32269; - n0i[17][3] = 3.50055; - n0i[17][4] = 1.02865; - n0i[17][5] = 0.00493; - n0i[17][6] = 0; - n0i[17][7] = 0; - n0i[17][1] = 17.45786899; - n0i[17][2] = -2635.244116; - n0i[18][3] = 4.00392; - n0i[18][4] = 0.01059; - n0i[18][5] = 0.98763; - n0i[18][6] = 3.06904; - n0i[18][7] = 0; - n0i[18][1] = 21.57882705; - n0i[18][2] = -7766.733078; - n0i[19][3] = 4; - n0i[19][4] = 3.11942; - n0i[19][5] = 1.00243; - n0i[19][6] = 0; - n0i[19][7] = 0; - n0i[19][1] = 21.5830944; - n0i[19][2] = -6069.035869; - n0i[20][3] = 2.5; - n0i[20][4] = 0; - n0i[20][5] = 0; - n0i[20][6] = 0; - n0i[20][7] = 0; - n0i[20][1] = 10.04639507; - n0i[20][2] = -745.375; - n0i[21][3] = 2.5; - n0i[21][4] = 0; - n0i[21][5] = 0; - n0i[21][6] = 0; - n0i[21][7] = 0; - n0i[21][1] = 10.04639507; - n0i[21][2] = -745.375; - th0i[1][4] = 820.659; - th0i[1][5] = 178.41; - th0i[1][6] = 1062.82; - th0i[1][7] = 1090.53; - th0i[2][4] = 662.738; - th0i[2][5] = 680.562; - th0i[2][6] = 1740.06; - th0i[2][7] = 0; - th0i[3][4] = 919.306; - th0i[3][5] = 865.07; - th0i[3][6] = 483.553; - th0i[3][7] = 341.109; - th0i[4][4] = 559.314; - th0i[4][5] = 223.284; - th0i[4][6] = 1031.38; - th0i[4][7] = 1071.29; - th0i[5][4] = 479.856; - th0i[5][5] = 200.893; - th0i[5][6] = 955.312; - th0i[5][7] = 1027.29; - th0i[6][4] = 438.27; - th0i[6][5] = 198.018; - th0i[6][6] = 1905.02; - th0i[6][7] = 893.765; - th0i[7][4] = 468.27; - th0i[7][5] = 183.636; - th0i[7][6] = 1914.1; - th0i[7][7] = 903.185; - th0i[8][4] = 292.503; - th0i[8][5] = 910.237; - th0i[8][6] = 1919.37; - th0i[8][7] = 0; - th0i[9][4] = 178.67; - th0i[9][5] = 840.538; - th0i[9][6] = 1774.25; - th0i[9][7] = 0; - th0i[10][4] = 182.326; - th0i[10][5] = 859.207; - th0i[10][6] = 1826.59; - th0i[10][7] = 0; - th0i[11][4] = 169.789; - th0i[11][5] = 836.195; - th0i[11][6] = 1760.46; - th0i[11][7] = 0; - th0i[12][4] = 158.922; - th0i[12][5] = 815.064; - th0i[12][6] = 1693.07; - th0i[12][7] = 0; - th0i[13][4] = 156.854; - th0i[13][5] = 814.882; - th0i[13][6] = 1693.79; - th0i[13][7] = 0; - th0i[14][4] = 164.947; - th0i[14][5] = 836.264; - th0i[14][6] = 1750.24; - th0i[14][7] = 0; - th0i[15][4] = 228.734; - th0i[15][5] = 326.843; - th0i[15][6] = 1651.71; - th0i[15][7] = 1671.69; - th0i[16][4] = 2235.71; - th0i[16][5] = 1116.69; - th0i[16][6] = 0; - th0i[16][7] = 0; - th0i[17][4] = 1550.45; - th0i[17][5] = 704.525; - th0i[17][6] = 0; - th0i[17][7] = 0; - th0i[18][4] = 268.795; - th0i[18][5] = 1141.41; - th0i[18][6] = 2507.37; - th0i[18][7] = 0; - th0i[19][4] = 1833.63; - th0i[19][5] = 847.181; - th0i[19][6] = 0; - th0i[19][7] = 0; - th0i[20][4] = 0; - th0i[20][5] = 0; - th0i[20][6] = 0; - th0i[20][7] = 0; - th0i[21][4] = 0; - th0i[21][5] = 0; - th0i[21][6] = 0; - th0i[21][7] = 0; - - // Precalculations of constants - for (int i = 1; i <= MaxFlds; ++i) { - Ki25[i] = Math.pow(Ki[i], 2.5); - Ei25[i] = Math.pow(Ei[i], 2.5); - } - for (int i = 1; i <= MaxFlds; ++i) { - for (int j = i; j <= MaxFlds; ++j) { - for (int n = 1; n <= 18; ++n) { - Bsnij = 1; - if (gn[n] == 1) { - Bsnij = Gij[i][j] * (Gi[i] + Gi[j]) / 2; - } - if (qn[n] == 1) { - Bsnij = Bsnij * Qi[i] * Qi[j]; - } - if (fn[n] == 1) { - Bsnij = Bsnij * Fi[i] * Fi[j]; - } - if (sn[n] == 1) { - Bsnij = Bsnij * Si[i] * Si[j]; - } - if (wn[n] == 1) { - Bsnij = Bsnij * Wi[i] * Wi[j]; - } - Bsnij2[i][j][n] = an[n] * Math.pow(Eij[i][j] * Math.sqrt(Ei[i] * Ei[j]), un[n]) - * Math.pow(Ki[i] * Ki[j], 1.5) * Bsnij; - } - Kij5[i][j] = (Math.pow(Kij[i][j], 5) - 1) * Ki25[i] * Ki25[j]; - Uij5[i][j] = (Math.pow(Uij[i][j], 5) - 1) * Ei25[i] * Ei25[j]; - Gij5[i][j] = (Gij[i][j] - 1) * (Gi[i] + Gi[j]) / 2; - } - } - // Ideal gas terms - d0 = 101.325 / RDetail / 298.15; - for (int i = 1; i <= MaxFlds; ++i) { - n0i[i][3] = n0i[i][3] - 1; - n0i[i][1] = n0i[i][1] - Math.log(d0); + // Coefficients of the equation of state + an[1] = 0.1538326; + an[2] = 1.341953; + an[3] = -2.998583; + an[4] = -0.04831228; + an[5] = 0.3757965; + an[6] = -1.589575; + an[7] = -0.05358847; + an[8] = 0.88659463; + an[9] = -0.71023704; + an[10] = -1.471722; + an[11] = 1.32185035; + an[12] = -0.78665925; + an[13] = 0.00000000229129; + an[14] = 0.1576724; + an[15] = -0.4363864; + an[16] = -0.04408159; + an[17] = -0.003433888; + an[18] = 0.03205905; + an[19] = 0.02487355; + an[20] = 0.07332279; + an[21] = -0.001600573; + an[22] = 0.6424706; + an[23] = -0.4162601; + an[24] = -0.06689957; + an[25] = 0.2791795; + an[26] = -0.6966051; + an[27] = -0.002860589; + an[28] = -0.008098836; + an[29] = 3.150547; + an[30] = 0.007224479; + an[31] = -0.7057529; + an[32] = 0.5349792; + an[33] = -0.07931491; + an[34] = -1.418465; + an[35] = -5.99905E-17; + an[36] = 0.1058402; + an[37] = 0.03431729; + an[38] = -0.007022847; + an[39] = 0.02495587; + an[40] = 0.04296818; + an[41] = 0.7465453; + an[42] = -0.2919613; + an[43] = 7.294616; + an[44] = -9.936757; + an[45] = -0.005399808; + an[46] = -0.2432567; + an[47] = 0.04987016; + an[48] = 0.003733797; + an[49] = 1.874951; + an[50] = 0.002168144; + an[51] = -0.6587164; + an[52] = 0.000205518; + an[53] = 0.009776195; + an[54] = -0.02048708; + an[55] = 0.01557322; + an[56] = 0.006862415; + an[57] = -0.001226752; + an[58] = 0.002850908; + + // Density exponents + bn[1] = 1; + bn[2] = 1; + bn[3] = 1; + bn[4] = 1; + bn[5] = 1; + bn[6] = 1; + bn[7] = 1; + bn[8] = 1; + bn[9] = 1; + bn[10] = 1; + bn[11] = 1; + bn[12] = 1; + bn[13] = 1; + bn[14] = 1; + bn[15] = 1; + bn[16] = 1; + bn[17] = 1; + bn[18] = 1; + bn[19] = 2; + bn[20] = 2; + bn[21] = 2; + bn[22] = 2; + bn[23] = 2; + bn[24] = 2; + bn[25] = 2; + bn[26] = 2; + bn[27] = 2; + bn[28] = 3; + bn[29] = 3; + bn[30] = 3; + bn[31] = 3; + bn[32] = 3; + bn[33] = 3; + bn[34] = 3; + bn[35] = 3; + bn[36] = 3; + bn[37] = 3; + bn[38] = 4; + bn[39] = 4; + bn[40] = 4; + bn[41] = 4; + bn[42] = 4; + bn[43] = 4; + bn[44] = 4; + bn[45] = 5; + bn[46] = 5; + bn[47] = 5; + bn[48] = 5; + bn[49] = 5; + bn[50] = 6; + bn[51] = 6; + bn[52] = 7; + bn[53] = 7; + bn[54] = 8; + bn[55] = 8; + bn[56] = 8; + bn[57] = 9; + bn[58] = 9; + + // Exponents on density in EXP[-cn*D^kn] part + // The cn part in this term is not included in this program since it is 1 when + // kn<>0][and 0 otherwise + kn[13] = 3; + kn[14] = 2; + kn[15] = 2; + kn[16] = 2; + kn[17] = 4; + kn[18] = 4; + kn[21] = 2; + kn[22] = 2; + kn[23] = 2; + kn[24] = 4; + kn[25] = 4; + kn[26] = 4; + kn[27] = 4; + kn[29] = 1; + kn[30] = 1; + kn[31] = 2; + kn[32] = 2; + kn[33] = 3; + kn[34] = 3; + kn[35] = 4; + kn[36] = 4; + kn[37] = 4; + kn[40] = 2; + kn[41] = 2; + kn[42] = 2; + kn[43] = 4; + kn[44] = 4; + kn[46] = 2; + kn[47] = 2; + kn[48] = 4; + kn[49] = 4; + kn[51] = 2; + kn[53] = 2; + kn[54] = 1; + kn[55] = 2; + kn[56] = 2; + kn[57] = 2; + kn[58] = 2; + + // Temperature exponents + un[1] = 0; + un[2] = 0.5; + un[3] = 1; + un[4] = 3.5; + un[5] = -0.5; + un[6] = 4.5; + un[7] = 0.5; + un[8] = 7.5; + un[9] = 9.5; + un[10] = 6; + un[11] = 12; + un[12] = 12.5; + un[13] = -6; + un[14] = 2; + un[15] = 3; + un[16] = 2; + un[17] = 2; + un[18] = 11; + un[19] = -0.5; + un[20] = 0.5; + un[21] = 0; + un[22] = 4; + un[23] = 6; + un[24] = 21; + un[25] = 23; + un[26] = 22; + un[27] = -1; + un[28] = -0.5; + un[29] = 7; + un[30] = -1; + un[31] = 6; + un[32] = 4; + un[33] = 1; + un[34] = 9; + un[35] = -13; + un[36] = 21; + un[37] = 8; + un[38] = -0.5; + un[39] = 0; + un[40] = 2; + un[41] = 7; + un[42] = 9; + un[43] = 22; + un[44] = 23; + un[45] = 1; + un[46] = 9; + un[47] = 3; + un[48] = 8; + un[49] = 23; + un[50] = 1.5; + un[51] = 5; + un[52] = -0.5; + un[53] = 4; + un[54] = 7; + un[55] = 3; + un[56] = 0; + un[57] = 1; + un[58] = 0; + + // Flags + fn[13] = 1; + fn[27] = 1; + fn[30] = 1; + fn[35] = 1; + gn[5] = 1; + gn[6] = 1; + gn[25] = 1; + gn[29] = 1; + gn[32] = 1; + gn[33] = 1; + gn[34] = 1; + gn[51] = 1; + gn[54] = 1; + gn[56] = 1; + qn[7] = 1; + qn[16] = 1; + qn[26] = 1; + qn[28] = 1; + qn[37] = 1; + qn[42] = 1; + qn[47] = 1; + qn[49] = 1; + qn[52] = 1; + qn[58] = 1; + sn[8] = 1; + sn[9] = 1; + wn[10] = 1; + wn[11] = 1; + wn[12] = 1; + + // Energy parameters + Ei[1] = 151.3183; + Ei[2] = 99.73778; + Ei[3] = 241.9606; + Ei[4] = 244.1667; + Ei[5] = 298.1183; + Ei[6] = 324.0689; + Ei[7] = 337.6389; + Ei[8] = 365.5999; + Ei[9] = 370.6823; + Ei[10] = 402.636293; + Ei[11] = 427.72263; + Ei[12] = 450.325022; + Ei[13] = 470.840891; + Ei[14] = 489.558373; + Ei[15] = 26.95794; + Ei[16] = 122.7667; + Ei[17] = 105.5348; + Ei[18] = 514.0156; + Ei[19] = 296.355; + Ei[20] = 2.610111; + Ei[21] = 119.6299; + + // Size parameters + Ki[1] = 0.4619255; + Ki[2] = 0.4479153; + Ki[3] = 0.4557489; + Ki[4] = 0.5279209; + Ki[5] = 0.583749; + Ki[6] = 0.6406937; + Ki[7] = 0.6341423; + Ki[8] = 0.6738577; + Ki[9] = 0.6798307; + Ki[10] = 0.7175118; + Ki[11] = 0.7525189; + Ki[12] = 0.784955; + Ki[13] = 0.8152731; + Ki[14] = 0.8437826; + Ki[15] = 0.3514916; + Ki[16] = 0.4186954; + Ki[17] = 0.4533894; + Ki[18] = 0.3825868; + Ki[19] = 0.4618263; + Ki[20] = 0.3589888; + Ki[21] = 0.4216551; + + // Orientation parameters + Gi[2] = 0.027815; + Gi[3] = 0.189065; + Gi[4] = 0.0793; + Gi[5] = 0.141239; + Gi[6] = 0.256692; + Gi[7] = 0.281835; + Gi[8] = 0.332267; + Gi[9] = 0.366911; + Gi[10] = 0.289731; + Gi[11] = 0.337542; + Gi[12] = 0.383381; + Gi[13] = 0.427354; + Gi[14] = 0.469659; + Gi[15] = 0.034369; + Gi[16] = 0.021; + Gi[17] = 0.038953; + Gi[18] = 0.3325; + Gi[19] = 0.0885; + + // Quadrupole parameters + Qi[3] = 0.69; + Qi[18] = 1.06775; + Qi[19] = 0.633276; + Fi[15] = 1; // High temperature parameter + Si[18] = 1.5822; // Dipole parameter + Si[19] = 0.39; // Dipole parameter + Wi[18] = 1; // Association parameter + + // Energy parameters + Eij[1][2] = 0.97164; + Eij[1][3] = 0.960644; + Eij[1][5] = 0.994635; + Eij[1][6] = 1.01953; + Eij[1][7] = 0.989844; + Eij[1][8] = 1.00235; + Eij[1][9] = 0.999268; + Eij[1][10] = 1.107274; + Eij[1][11] = 0.88088; + Eij[1][12] = 0.880973; + Eij[1][13] = 0.881067; + Eij[1][14] = 0.881161; + Eij[1][15] = 1.17052; + Eij[1][17] = 0.990126; + Eij[1][18] = 0.708218; + Eij[1][19] = 0.931484; + Eij[2][3] = 1.02274; + Eij[2][4] = 0.97012; + Eij[2][5] = 0.945939; + Eij[2][6] = 0.946914; + Eij[2][7] = 0.973384; + Eij[2][8] = 0.95934; + Eij[2][9] = 0.94552; + Eij[2][15] = 1.08632; + Eij[2][16] = 1.021; + Eij[2][17] = 1.00571; + Eij[2][18] = 0.746954; + Eij[2][19] = 0.902271; + Eij[3][4] = 0.925053; + Eij[3][5] = 0.960237; + Eij[3][6] = 0.906849; + Eij[3][7] = 0.897362; + Eij[3][8] = 0.726255; + Eij[3][9] = 0.859764; + Eij[3][10] = 0.855134; + Eij[3][11] = 0.831229; + Eij[3][12] = 0.80831; + Eij[3][13] = 0.786323; + Eij[3][14] = 0.765171; + Eij[3][15] = 1.28179; + Eij[3][17] = 1.5; + Eij[3][18] = 0.849408; + Eij[3][19] = 0.955052; + Eij[4][5] = 1.02256; + Eij[4][7] = 1.01306; + Eij[4][9] = 1.00532; + Eij[4][15] = 1.16446; + Eij[4][18] = 0.693168; + Eij[4][19] = 0.946871; + Eij[5][7] = 1.0049; + Eij[5][15] = 1.034787; + Eij[6][15] = 1.3; + Eij[7][15] = 1.3; + Eij[10][19] = 1.008692; + Eij[11][19] = 1.010126; + Eij[12][19] = 1.011501; + Eij[13][19] = 1.012821; + Eij[14][19] = 1.014089; + Eij[15][17] = 1.1; + + // Conformal energy parameters + Uij[1][2] = 0.886106; + Uij[1][3] = 0.963827; + Uij[1][5] = 0.990877; + Uij[1][7] = 0.992291; + Uij[1][9] = 1.00367; + Uij[1][10] = 1.302576; + Uij[1][11] = 1.191904; + Uij[1][12] = 1.205769; + Uij[1][13] = 1.219634; + Uij[1][14] = 1.233498; + Uij[1][15] = 1.15639; + Uij[1][19] = 0.736833; + Uij[2][3] = 0.835058; + Uij[2][4] = 0.816431; + Uij[2][5] = 0.915502; + Uij[2][7] = 0.993556; + Uij[2][15] = 0.408838; + Uij[2][19] = 0.993476; + Uij[3][4] = 0.96987; + Uij[3][10] = 1.066638; + Uij[3][11] = 1.077634; + Uij[3][12] = 1.088178; + Uij[3][13] = 1.098291; + Uij[3][14] = 1.108021; + Uij[3][17] = 0.9; + Uij[3][19] = 1.04529; + Uij[4][5] = 1.065173; + Uij[4][6] = 1.25; + Uij[4][7] = 1.25; + Uij[4][8] = 1.25; + Uij[4][9] = 1.25; + Uij[4][15] = 1.61666; + Uij[4][19] = 0.971926; + Uij[10][19] = 1.028973; + Uij[11][19] = 1.033754; + Uij[12][19] = 1.038338; + Uij[13][19] = 1.042735; + Uij[14][19] = 1.046966; + + // Size parameters + Kij[1][2] = 1.00363; + Kij[1][3] = 0.995933; + Kij[1][5] = 1.007619; + Kij[1][7] = 0.997596; + Kij[1][9] = 1.002529; + Kij[1][10] = 0.982962; + Kij[1][11] = 0.983565; + Kij[1][12] = 0.982707; + Kij[1][13] = 0.981849; + Kij[1][14] = 0.980991; + Kij[1][15] = 1.02326; + Kij[1][19] = 1.00008; + Kij[2][3] = 0.982361; + Kij[2][4] = 1.00796; + Kij[2][15] = 1.03227; + Kij[2][19] = 0.942596; + Kij[3][4] = 1.00851; + Kij[3][10] = 0.910183; + Kij[3][11] = 0.895362; + Kij[3][12] = 0.881152; + Kij[3][13] = 0.86752; + Kij[3][14] = 0.854406; + Kij[3][19] = 1.00779; + Kij[4][5] = 0.986893; + Kij[4][15] = 1.02034; + Kij[4][19] = 0.999969; + Kij[10][19] = 0.96813; + Kij[11][19] = 0.96287; + Kij[12][19] = 0.957828; + Kij[13][19] = 0.952441; + Kij[14][19] = 0.948338; + + // Orientation parameters + Gij[1][3] = 0.807653; + Gij[1][15] = 1.95731; + Gij[2][3] = 0.982746; + Gij[3][4] = 0.370296; + Gij[3][18] = 1.67309; + + // Ideal gas parameters + n0i[1][3] = 4.00088; + n0i[1][4] = 0.76315; + n0i[1][5] = 0.0046; + n0i[1][6] = 8.74432; + n0i[1][7] = -4.46921; + n0i[1][1] = 29.83843397; + n0i[1][2] = -15999.69151; + n0i[2][3] = 3.50031; + n0i[2][4] = 0.13732; + n0i[2][5] = -0.1466; + n0i[2][6] = 0.90066; + n0i[2][7] = 0; + n0i[2][1] = 17.56770785; + n0i[2][2] = -2801.729072; + n0i[3][3] = 3.50002; + n0i[3][4] = 2.04452; + n0i[3][5] = -1.06044; + n0i[3][6] = 2.03366; + n0i[3][7] = 0.01393; + n0i[3][1] = 20.65844696; + n0i[3][2] = -4902.171516; + n0i[4][3] = 4.00263; + n0i[4][4] = 4.33939; + n0i[4][5] = 1.23722; + n0i[4][6] = 13.1974; + n0i[4][7] = -6.01989; + n0i[4][1] = 36.73005938; + n0i[4][2] = -23639.65301; + n0i[5][3] = 4.02939; + n0i[5][4] = 6.60569; + n0i[5][5] = 3.197; + n0i[5][6] = 19.1921; + n0i[5][7] = -8.37267; + n0i[5][1] = 44.70909619; + n0i[5][2] = -31236.63551; + n0i[6][3] = 4.06714; + n0i[6][4] = 8.97575; + n0i[6][5] = 5.25156; + n0i[6][6] = 25.1423; + n0i[6][7] = 16.1388; + n0i[6][1] = 34.30180349; + n0i[6][2] = -38525.50276; + n0i[7][3] = 4.33944; + n0i[7][4] = 9.44893; + n0i[7][5] = 6.89406; + n0i[7][6] = 24.4618; + n0i[7][7] = 14.7824; + n0i[7][1] = 36.53237783; + n0i[7][2] = -38957.80933; + n0i[8][3] = 4; + n0i[8][4] = 11.7618; + n0i[8][5] = 20.1101; + n0i[8][6] = 33.1688; + n0i[8][7] = 0; + n0i[8][1] = 43.17218626; + n0i[8][2] = -51198.30946; + n0i[9][3] = 4; + n0i[9][4] = 8.95043; + n0i[9][5] = 21.836; + n0i[9][6] = 33.4032; + n0i[9][7] = 0; + n0i[9][1] = 42.67837089; + n0i[9][2] = -45215.83; + n0i[10][3] = 4; + n0i[10][4] = 11.6977; + n0i[10][5] = 26.8142; + n0i[10][6] = 38.6164; + n0i[10][7] = 0; + n0i[10][1] = 46.99717188; + n0i[10][2] = -52746.83318; + n0i[11][3] = 4; + n0i[11][4] = 13.7266; + n0i[11][5] = 30.4707; + n0i[11][6] = 43.5561; + n0i[11][7] = 0; + n0i[11][1] = 52.07631631; + n0i[11][2] = -57104.81056; + n0i[12][3] = 4; + n0i[12][4] = 15.6865; + n0i[12][5] = 33.8029; + n0i[12][6] = 48.1731; + n0i[12][7] = 0; + n0i[12][1] = 57.25830934; + n0i[12][2] = -60546.76385; + n0i[13][3] = 4; + n0i[13][4] = 18.0241; + n0i[13][5] = 38.1235; + n0i[13][6] = 53.3415; + n0i[13][7] = 0; + n0i[13][1] = 62.09646901; + n0i[13][2] = -66600.12837; + n0i[14][3] = 4; + n0i[14][4] = 21.0069; + n0i[14][5] = 43.4931; + n0i[14][6] = 58.3657; + n0i[14][7] = 0; + n0i[14][1] = 65.93909154; + n0i[14][2] = -74131.45483; + n0i[15][3] = 2.47906; + n0i[15][4] = 0.95806; + n0i[15][5] = 0.45444; + n0i[15][6] = 1.56039; + n0i[15][7] = -1.3756; + n0i[15][1] = 13.07520288; + n0i[15][2] = -5836.943696; + n0i[16][3] = 3.50146; + n0i[16][4] = 1.07558; + n0i[16][5] = 1.01334; + n0i[16][6] = 0; + n0i[16][7] = 0; + n0i[16][1] = 16.8017173; + n0i[16][2] = -2318.32269; + n0i[17][3] = 3.50055; + n0i[17][4] = 1.02865; + n0i[17][5] = 0.00493; + n0i[17][6] = 0; + n0i[17][7] = 0; + n0i[17][1] = 17.45786899; + n0i[17][2] = -2635.244116; + n0i[18][3] = 4.00392; + n0i[18][4] = 0.01059; + n0i[18][5] = 0.98763; + n0i[18][6] = 3.06904; + n0i[18][7] = 0; + n0i[18][1] = 21.57882705; + n0i[18][2] = -7766.733078; + n0i[19][3] = 4; + n0i[19][4] = 3.11942; + n0i[19][5] = 1.00243; + n0i[19][6] = 0; + n0i[19][7] = 0; + n0i[19][1] = 21.5830944; + n0i[19][2] = -6069.035869; + n0i[20][3] = 2.5; + n0i[20][4] = 0; + n0i[20][5] = 0; + n0i[20][6] = 0; + n0i[20][7] = 0; + n0i[20][1] = 10.04639507; + n0i[20][2] = -745.375; + n0i[21][3] = 2.5; + n0i[21][4] = 0; + n0i[21][5] = 0; + n0i[21][6] = 0; + n0i[21][7] = 0; + n0i[21][1] = 10.04639507; + n0i[21][2] = -745.375; + th0i[1][4] = 820.659; + th0i[1][5] = 178.41; + th0i[1][6] = 1062.82; + th0i[1][7] = 1090.53; + th0i[2][4] = 662.738; + th0i[2][5] = 680.562; + th0i[2][6] = 1740.06; + th0i[2][7] = 0; + th0i[3][4] = 919.306; + th0i[3][5] = 865.07; + th0i[3][6] = 483.553; + th0i[3][7] = 341.109; + th0i[4][4] = 559.314; + th0i[4][5] = 223.284; + th0i[4][6] = 1031.38; + th0i[4][7] = 1071.29; + th0i[5][4] = 479.856; + th0i[5][5] = 200.893; + th0i[5][6] = 955.312; + th0i[5][7] = 1027.29; + th0i[6][4] = 438.27; + th0i[6][5] = 198.018; + th0i[6][6] = 1905.02; + th0i[6][7] = 893.765; + th0i[7][4] = 468.27; + th0i[7][5] = 183.636; + th0i[7][6] = 1914.1; + th0i[7][7] = 903.185; + th0i[8][4] = 292.503; + th0i[8][5] = 910.237; + th0i[8][6] = 1919.37; + th0i[8][7] = 0; + th0i[9][4] = 178.67; + th0i[9][5] = 840.538; + th0i[9][6] = 1774.25; + th0i[9][7] = 0; + th0i[10][4] = 182.326; + th0i[10][5] = 859.207; + th0i[10][6] = 1826.59; + th0i[10][7] = 0; + th0i[11][4] = 169.789; + th0i[11][5] = 836.195; + th0i[11][6] = 1760.46; + th0i[11][7] = 0; + th0i[12][4] = 158.922; + th0i[12][5] = 815.064; + th0i[12][6] = 1693.07; + th0i[12][7] = 0; + th0i[13][4] = 156.854; + th0i[13][5] = 814.882; + th0i[13][6] = 1693.79; + th0i[13][7] = 0; + th0i[14][4] = 164.947; + th0i[14][5] = 836.264; + th0i[14][6] = 1750.24; + th0i[14][7] = 0; + th0i[15][4] = 228.734; + th0i[15][5] = 326.843; + th0i[15][6] = 1651.71; + th0i[15][7] = 1671.69; + th0i[16][4] = 2235.71; + th0i[16][5] = 1116.69; + th0i[16][6] = 0; + th0i[16][7] = 0; + th0i[17][4] = 1550.45; + th0i[17][5] = 704.525; + th0i[17][6] = 0; + th0i[17][7] = 0; + th0i[18][4] = 268.795; + th0i[18][5] = 1141.41; + th0i[18][6] = 2507.37; + th0i[18][7] = 0; + th0i[19][4] = 1833.63; + th0i[19][5] = 847.181; + th0i[19][6] = 0; + th0i[19][7] = 0; + th0i[20][4] = 0; + th0i[20][5] = 0; + th0i[20][6] = 0; + th0i[20][7] = 0; + th0i[21][4] = 0; + th0i[21][5] = 0; + th0i[21][6] = 0; + th0i[21][7] = 0; + + // Precalculations of constants + for (int i = 1; i <= MaxFlds; ++i) { + Ki25[i] = Math.pow(Ki[i], 2.5); + Ei25[i] = Math.pow(Ei[i], 2.5); + } + for (int i = 1; i <= MaxFlds; ++i) { + for (int j = i; j <= MaxFlds; ++j) { + for (int n = 1; n <= 18; ++n) { + Bsnij = 1; + if (gn[n] == 1) { + Bsnij = Gij[i][j] * (Gi[i] + Gi[j]) / 2; + } + if (qn[n] == 1) { + Bsnij = Bsnij * Qi[i] * Qi[j]; + } + if (fn[n] == 1) { + Bsnij = Bsnij * Fi[i] * Fi[j]; + } + if (sn[n] == 1) { + Bsnij = Bsnij * Si[i] * Si[j]; + } + if (wn[n] == 1) { + Bsnij = Bsnij * Wi[i] * Wi[j]; + } + Bsnij2[i][j][n] = an[n] * Math.pow(Eij[i][j] * Math.sqrt(Ei[i] * Ei[j]), un[n]) + * Math.pow(Ki[i] * Ki[j], 1.5) * Bsnij; } - return; - - // Code to produce nearly exact values for n0[1] and n0[2] - // This is not called in the current code, but included below to show how the - // values were calculated. The return above can be removed to call this code. - // T0 = 298.15; - // d0 = 101.325 / RDetail / T0; - // for (int i=1; i <= MaxFlds; ++i){ - // n1 = 0; n2 = 0; - // if (th0i[i][4] > 0) {n2 = n2 - n0i[i][4] * th0i[i][4] / tanh(th0i[i][4] / - // T0); n1 = n1 - n0i[i][4] * log(sinh(th0i[i][4] / T0));} - // if (th0i[i][5] > 0) {n2 = n2 + n0i[i][5] * th0i[i][5] * tanh(th0i[i][5] / - // T0); n1 = n1 + n0i[i][5] * log(cosh(th0i[i][5] / T0));} - // if (th0i[i][6] > 0) {n2 = n2 - n0i[i][6] * th0i[i][6] / tanh(th0i[i][6] / - // T0); n1 = n1 - n0i[i][6] * log(sinh(th0i[i][6] / T0));} - // if (th0i[i][7] > 0) {n2 = n2 + n0i[i][7] * th0i[i][7] * tanh(th0i[i][7] / - // T0); n1 = n1 + n0i[i][7] * log(cosh(th0i[i][7] / T0));} - // n0i[i][2] = n2 - n0i[i][3] * T0; - // n0i[i][3] = n0i[i][3] - 1; - // n0i[i][1] = n1 - n2 / T0 + n0i[i][3] * (1 + log(T0)) - log(d0); - // } + Kij5[i][j] = (Math.pow(Kij[i][j], 5) - 1) * Ki25[i] * Ki25[j]; + Uij5[i][j] = (Math.pow(Uij[i][j], 5) - 1) * Ei25[i] * Ei25[j]; + Gij5[i][j] = (Gij[i][j] - 1) * (Gi[i] + Gi[j]) / 2; + } } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - DETAIL test = new DETAIL(); - DETAIL.SetupDetail(); - - double T = 400; - doubleW D = new doubleW(0.0); - doubleW P = new doubleW(50000.0d); - intW ierr = new intW(0); - doubleW Mm = new doubleW(0.0d); - doubleW Z = new doubleW(0.0d); - int iFlag = 0; - StringW herr = new StringW(""); - - double x[] = {0.0, 0.77824, 0.02, 0.06, 0.08, 0.03, 0.0015, 0.003, 0.0005, 0.00165, 0.00215, - 0.00088, 0.00024, 0.00015, 0.00009, 0.004, 0.005, 0.002, 0.0001, 0.0025, 0.007, - 0.001}; - - DETAIL.MolarMassDetail(x, Mm); - - System.out.println("mol mass " + Mm.val); - - DETAIL.DensityDetail(T, P.val, x, D, ierr, herr); - System.out.println("density " + D.val); - DETAIL.PressureDetail(T, D.val, x, P, Z); - System.out.println("pressure " + P.val); - System.out.println("Z " + Z.val); - - doubleW dPdD = new doubleW(0.0d), d2PdD2 = new doubleW(0.0d), d2PdTD = new doubleW(0.0d), - dPdT = new doubleW(0.0d), U = new doubleW(0.0d), H = new doubleW(0.0d), - S = new doubleW(0.0d), A = new doubleW(0.0d), P2 = new doubleW(0.0d); - doubleW Cv = new doubleW(0.0d), Cp = new doubleW(0.0d), W = new doubleW(0.0d), - G = new doubleW(0.0d), JT = new doubleW(0.0d), Kappa = new doubleW(0.0d), - PP = new doubleW(0.0d); - - DETAIL.PropertiesDetail(T, D.val, x, P, Z, dPdD, d2PdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, W, - G, JT, Kappa); - - System.out.println("JT " + JT.val); - System.out.println("Kappa " + Kappa.val); + // Ideal gas terms + d0 = 101.325 / RDetail / 298.15; + for (int i = 1; i <= MaxFlds; ++i) { + n0i[i][3] = n0i[i][3] - 1; + n0i[i][1] = n0i[i][1] - Math.log(d0); } + + // Code to produce nearly exact values for n0[1] and n0[2] + // This is not called in the current code, but included below to show how the + // values were calculated. The return above can be removed to call this code. + // T0 = 298.15; + // d0 = 101.325 / RDetail / T0; + // for (int i=1; i <= MaxFlds; ++i){ + // n1 = 0; n2 = 0; + // if (th0i[i][4] > 0) {n2 = n2 - n0i[i][4] * th0i[i][4] / tanh(th0i[i][4] / + // T0); n1 = n1 - n0i[i][4] * log(sinh(th0i[i][4] / T0));} + // if (th0i[i][5] > 0) {n2 = n2 + n0i[i][5] * th0i[i][5] * tanh(th0i[i][5] / + // T0); n1 = n1 + n0i[i][5] * log(cosh(th0i[i][5] / T0));} + // if (th0i[i][6] > 0) {n2 = n2 - n0i[i][6] * th0i[i][6] / tanh(th0i[i][6] / + // T0); n1 = n1 - n0i[i][6] * log(sinh(th0i[i][6] / T0));} + // if (th0i[i][7] > 0) {n2 = n2 + n0i[i][7] * th0i[i][7] * tanh(th0i[i][7] / + // T0); n1 = n1 + n0i[i][7] * log(cosh(th0i[i][7] / T0));} + // n0i[i][2] = n2 - n0i[i][3] * T0; + // n0i[i][3] = n0i[i][3] - 1; + // n0i[i][1] = n1 - n2 / T0 + n0i[i][3] * (1 + log(T0)) - log(d0); + // } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + DETAIL test = new DETAIL(); + test.SetupDetail(); + + double T = 400; + doubleW D = new doubleW(0.0); + doubleW P = new doubleW(50000.0d); + intW ierr = new intW(0); + doubleW Mm = new doubleW(0.0d); + doubleW Z = new doubleW(0.0d); + int iFlag = 0; + StringW herr = new StringW(""); + + double x[] = {0.0, 0.77824, 0.02, 0.06, 0.08, 0.03, 0.0015, 0.003, 0.0005, 0.00165, 0.00215, + 0.00088, 0.00024, 0.00015, 0.00009, 0.004, 0.005, 0.002, 0.0001, 0.0025, 0.007, 0.001}; + + test.MolarMassDetail(x, Mm); + + System.out.println("mol mass " + Mm.val); + + test.DensityDetail(T, P.val, x, D, ierr, herr); + System.out.println("density " + D.val); + test.PressureDetail(T, D.val, x, P, Z); + System.out.println("pressure " + P.val); + System.out.println("Z " + Z.val); + + doubleW dPdD = new doubleW(0.0d), d2PdD2 = new doubleW(0.0d), d2PdTD = new doubleW(0.0d), + dPdT = new doubleW(0.0d), U = new doubleW(0.0d), H = new doubleW(0.0d), + S = new doubleW(0.0d), A = new doubleW(0.0d), P2 = new doubleW(0.0d); + doubleW Cv = new doubleW(0.0d), Cp = new doubleW(0.0d), W = new doubleW(0.0d), + G = new doubleW(0.0d), JT = new doubleW(0.0d), Kappa = new doubleW(0.0d), + PP = new doubleW(0.0d); + + test.PropertiesDetail(T, D.val, x, P, Z, dPdD, d2PdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, W, G, JT, + Kappa); + + System.out.println("JT " + JT.val); + System.out.println("Kappa " + Kappa.val); + } } diff --git a/src/main/java/neqsim/thermo/util/GERG/GERG2008.java b/src/main/java/neqsim/thermo/util/GERG/GERG2008.java index 165928b8d1..2422c71b86 100644 --- a/src/main/java/neqsim/thermo/util/GERG/GERG2008.java +++ b/src/main/java/neqsim/thermo/util/GERG/GERG2008.java @@ -13,3263 +13,3312 @@ * @version $Id: $Id */ public class GERG2008 { - // Variables containing the common parameters in the GERG-2008 equations - static double RGERG; - static int NcGERG = 21, MaxFlds = 21, MaxMdl = 10, MaxTrmM = 12, MaxTrmP = 24; - static double epsilon = 1e-15; - static int[][] intcoik = new int[MaxFlds + 1][MaxTrmP + 1]; - static int[][] coik = new int[MaxFlds + 1][MaxTrmP + 1]; - static int[][] doik = new int[MaxFlds + 1][MaxTrmP + 1]; - static int[][] dijk = new int[MaxMdl + 1][MaxTrmM + 1]; - - static double Drold, Trold, Told, Trold2; - static double[] xold = new double[MaxFlds + 1]; - static int[][] mNumb = new int[MaxFlds + 1][MaxFlds + 1]; - static int[] kpol = new int[MaxFlds + 1]; - static int[] kexp = new int[MaxFlds + 1]; - static int[] kpolij = new int[MaxMdl + 1]; - static int[] kexpij = new int[MaxMdl + 1]; - - static double[] Dc = new double[MaxFlds + 1]; - static double[] Tc = new double[MaxFlds + 1]; - static double[] MMiGERG = new double[MaxFlds + 1]; - static double[] Vc3 = new double[MaxFlds + 1]; - static double[] Tc2 = new double[MaxFlds + 1]; - - static double[][] noik = new double[MaxFlds + 1][MaxTrmP + 1]; - static double[][] toik = new double[MaxFlds + 1][MaxTrmP + 1]; - - static double[][] cijk = new double[MaxMdl + 1][MaxTrmM + 1]; - - static double[][] eijk = new double[MaxMdl + 1][MaxTrmM + 1]; - static double[][] gijk = new double[MaxMdl + 1][MaxTrmM + 1]; - static double[][] nijk = new double[MaxMdl + 1][MaxTrmM + 1]; - static double[][] tijk = new double[MaxMdl + 1][MaxTrmM + 1]; - - static double[][] btij = new double[MaxFlds + 1][MaxFlds + 1]; - static double[][] bvij = new double[MaxFlds + 1][MaxFlds + 1]; - static double[][] gtij = new double[MaxFlds + 1][MaxFlds + 1]; - static double[][] gvij = new double[MaxFlds + 1][MaxFlds + 1]; - - static double[][] fij = new double[MaxFlds + 1][MaxFlds + 1]; - static double[][] th0i = new double[MaxFlds + 1][7 + 1]; - static double[][] n0i = new double[MaxFlds + 1][7 + 1]; - - static double[][] taup = new double[MaxFlds + 1][MaxTrmP + 1]; - static double[][] taupijk = new double[MaxFlds + 1][MaxTrmM + 1]; - static double dPdDsave; - - /** - *

- * MolarMassGERG. - *

- * - * @param x an array of {@link double} objects - * @param Mm a {@link org.netlib.util.doubleW} object - */ - public static void MolarMassGERG(double[] x, doubleW Mm) { - // Sub MolarMassGERG(x, Mm) - - // Calculate molar mass of the mixture with the compositions contained in the - // x() input array - - // Inputs: - // x() - Composition (mole fraction) - // Do not send mole percents or mass fractions in the x() array, otherwise the - // output will be incorrect. - // The sum of the compositions in the x() array must be equal to one. - // The order of the fluids in this array is given at the top of this module. - - // Outputs: - // Mm - Molar mass (g/mol) - - Mm.val = 0; - for (int i = 1; i <= NcGERG; ++i) { - Mm.val += x[i] * MMiGERG[i]; - } + // Variables containing the common parameters in the GERG-2008 equations + double RGERG; + int NcGERG = 21; + int MaxFlds = 21; + int MaxMdl = 10; + int MaxTrmM = 12; + int MaxTrmP = 24; + double epsilon = 1e-15; + int[][] intcoik = new int[MaxFlds + 1][MaxTrmP + 1]; + int[][] coik = new int[MaxFlds + 1][MaxTrmP + 1]; + int[][] doik = new int[MaxFlds + 1][MaxTrmP + 1]; + int[][] dijk = new int[MaxMdl + 1][MaxTrmM + 1]; + + double Drold; + double Trold; + double Told; + double Trold2; + double[] xold = new double[MaxFlds + 1]; + int[][] mNumb = new int[MaxFlds + 1][MaxFlds + 1]; + int[] kpol = new int[MaxFlds + 1]; + int[] kexp = new int[MaxFlds + 1]; + int[] kpolij = new int[MaxMdl + 1]; + int[] kexpij = new int[MaxMdl + 1]; + + double[] Dc = new double[MaxFlds + 1]; + double[] Tc = new double[MaxFlds + 1]; + double[] MMiGERG = new double[MaxFlds + 1]; + double[] Vc3 = new double[MaxFlds + 1]; + double[] Tc2 = new double[MaxFlds + 1]; + + double[][] noik = new double[MaxFlds + 1][MaxTrmP + 1]; + double[][] toik = new double[MaxFlds + 1][MaxTrmP + 1]; + + double[][] cijk = new double[MaxMdl + 1][MaxTrmM + 1]; + + double[][] eijk = new double[MaxMdl + 1][MaxTrmM + 1]; + double[][] gijk = new double[MaxMdl + 1][MaxTrmM + 1]; + double[][] nijk = new double[MaxMdl + 1][MaxTrmM + 1]; + double[][] tijk = new double[MaxMdl + 1][MaxTrmM + 1]; + + double[][] btij = new double[MaxFlds + 1][MaxFlds + 1]; + double[][] bvij = new double[MaxFlds + 1][MaxFlds + 1]; + double[][] gtij = new double[MaxFlds + 1][MaxFlds + 1]; + double[][] gvij = new double[MaxFlds + 1][MaxFlds + 1]; + + double[][] fij = new double[MaxFlds + 1][MaxFlds + 1]; + double[][] th0i = new double[MaxFlds + 1][7 + 1]; + double[][] n0i = new double[MaxFlds + 1][7 + 1]; + + double[][] taup = new double[MaxFlds + 1][MaxTrmP + 1]; + double[][] taupijk = new double[MaxFlds + 1][MaxTrmM + 1]; + double dPdDsave; + + /** + *

+ * MolarMassGERG. + *

+ * + * @param x an array of type double + * @param Mm a {@link org.netlib.util.doubleW} object + */ + public void MolarMassGERG(double[] x, doubleW Mm) { + // Sub MolarMassGERG(x, Mm) + + // Calculate molar mass of the mixture with the compositions contained in the + // x() input array + + // Inputs: + // x() - Composition (mole fraction) + // Do not send mole percents or mass fractions in the x() array, otherwise the + // output will be incorrect. + // The sum of the compositions in the x() array must be equal to one. + // The order of the fluids in this array is given at the top of this module. + + // Outputs: + // Mm - Molar mass (g/mol) + + Mm.val = 0; + for (int i = 1; i <= NcGERG; ++i) { + Mm.val += x[i] * MMiGERG[i]; } - - /** - *

- * PressureGERG. - *

- * - * @param T a double - * @param D a double - * @param x an array of {@link double} objects - * @param P a {@link org.netlib.util.doubleW} object - * @param Z a {@link org.netlib.util.doubleW} object - */ - public static void PressureGERG(double T, double D, double[] x, doubleW P, doubleW Z) { - // Sub PressureGERG(T, D, x, P, Z) - - // Calculate pressure as a function of temperature and density. The derivative - // d(P)/d(D) is also calculated - // for use in the iterative DensityGERG subroutine (and is only returned as a - // common variable). - - // Inputs: - // T - Temperature (K) - // D - Density (mol/l) - // x() - Composition (mole fraction) - // Do not send mole percents or mass fractions in the x() array, otherwise the - // output will be incorrect. - // The sum of the compositions in the x() array must be equal to one. - - // Outputs: - // P - Pressure (kPa) - // Z - Compressibility factor - // dPdDsave - d(P)/d(D) [kPa/(mol/l)] (at constant temperature) - // - This variable is cached in the common variables for use in the iterative - // density solver, but not returned as an argument. - - doubleW[][] ar = new doubleW[4][4]; - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - ar[i][j] = new doubleW(0.0d); - } - } - AlpharGERG(0, 0, T, D, x, ar); - - Z.val = 1 + ar[0][1].val; - P.val = D * RGERG * T * Z.val; - dPdDsave = RGERG * T * (1 + 2 * ar[0][1].val + ar[0][2].val); + } + + /** + *

+ * PressureGERG. + *

+ * + * @param T a double + * @param D a double + * @param x an array of type double + * @param P a {@link org.netlib.util.doubleW} object + * @param Z a {@link org.netlib.util.doubleW} object + */ + public void PressureGERG(double T, double D, double[] x, doubleW P, doubleW Z) { + // Sub PressureGERG(T, D, x, P, Z) + + // Calculate pressure as a function of temperature and density. The derivative + // d(P)/d(D) is also calculated + // for use in the iterative DensityGERG subroutine (and is only returned as a + // common variable). + + // Inputs: + // T - Temperature (K) + // D - Density (mol/l) + // x() - Composition (mole fraction) + // Do not send mole percents or mass fractions in the x() array, otherwise the + // output will be incorrect. + // The sum of the compositions in the x() array must be equal to one. + + // Outputs: + // P - Pressure (kPa) + // Z - Compressibility factor + // dPdDsave - d(P)/d(D) [kPa/(mol/l)] (at constant temperature) + // - This variable is cached in the common variables for use in the iterative + // density solver, but not returned as an argument. + + doubleW[][] ar = new doubleW[4][4]; + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + ar[i][j] = new doubleW(0.0d); + } + } + AlpharGERG(0, 0, T, D, x, ar); + + Z.val = 1 + ar[0][1].val; + P.val = D * RGERG * T * Z.val; + dPdDsave = RGERG * T * (1 + 2 * ar[0][1].val + ar[0][2].val); + } + + /** + *

+ * DensityGERG. + *

+ * + * @param iFlag a int + * @param T a double + * @param P a double + * @param x an array of type double + * @param D a {@link org.netlib.util.doubleW} object + * @param ierr a {@link org.netlib.util.intW} object + * @param herr a {@link org.netlib.util.StringW} object + */ + public void DensityGERG(int iFlag, double T, double P, double[] x, doubleW D, intW ierr, + StringW herr) { + // Sub DensityGERG(iFlag, T, P, x, D, ierr, herr) + + // Calculate density as a function of temperature and pressure. This is an + // iterative routine that calls PressureGERG + // to find the correct state point. Generally only 6 iterations at most are + // required. + // If the iteration fails to converge, the ideal gas density and an error + // message are returned. + // No checks are made to determine the phase boundary, which would have + // guaranteed that the output is in the gas phase (or liquid phase when + // iFlag=2). + // It is up to the user to locate the phase boundary, and thus identify the + // phase of the T and P inputs. + // If the state point is 2-phase, the output density will represent a metastable + // state. + + // Inputs: + // iFlag - Set to 0 for strict pressure solver in the gas phase without checks + // (fastest mode, but output state may not be stable single phase) + // Set to 1 to make checks for possible 2-phase states (result may still not be + // stable single phase, but many unstable states will be identified) + // Set to 2 to search for liquid phase (and make the same checks when iFlag=1) + // T - Temperature (K) + // P - Pressure (kPa) + // x() - Composition (mole fraction) + // (An initial guess for the density can be sent in D as the negative of the + // guess for roots that are in the liquid phase instead of using iFlag=2) + + // Outputs: + // D - Density (mol/l) + // For the liquid phase, an initial value can be sent to the routine to avoid + // a solution in the metastable or gas phases. + // The initial value should be sent as a negative number. + // ierr - Error number (0 indicates no error) + // herr - Error message if ierr is not equal to zero + + int nFail; + int iFail; + double plog; + double vlog; + double dpdlv; + double vdiff; + double tolr; + double vinc; + doubleW Tcx = new doubleW(0.0d); + + doubleW Dcx = new doubleW(0.0d); + doubleW dPdD = new doubleW(0.0d); + doubleW d2PdD2 = new doubleW(0.0d); + doubleW d2PdTD = new doubleW(0.0d); + doubleW dPdT = new doubleW(0.0d); + doubleW U = new doubleW(0.0d); + doubleW H = new doubleW(0.0d); + doubleW S = new doubleW(0.0d); + doubleW A = new doubleW(0.0d); + doubleW P2 = new doubleW(0.0d); + doubleW Z = new doubleW(0.0d); + doubleW Cv = new doubleW(0.0d); + + doubleW Cp = new doubleW(0.0d); + doubleW W = new doubleW(0.0d); + doubleW G = new doubleW(0.0d); + doubleW JT = new doubleW(0.0d); + doubleW Kappa = new doubleW(0.0d); + doubleW PP = new doubleW(0.0d); + ierr.val = 0; + herr.val = ""; + nFail = 0; + iFail = 0; + if (P < epsilon) { + D.val = 0; + return; + } + tolr = 0.0000001; + PseudoCriticalPointGERG(x, Tcx, Dcx); + + if (D.val > -epsilon) { + D.val = P / RGERG / T; // Ideal gas estimate for vapor phase + if (iFlag == 2) { + D.val = Dcx.val * 3; + } // Initial estimate for liquid phase + } else { + D.val = Math.abs(D.val); // If D<0, then use as initial estimate } - /** - *

- * DensityGERG. - *

- * - * @param iFlag a int - * @param T a double - * @param P a double - * @param x an array of {@link double} objects - * @param D a {@link org.netlib.util.doubleW} object - * @param ierr a {@link org.netlib.util.intW} object - * @param herr a {@link org.netlib.util.StringW} object - */ - public static void DensityGERG(int iFlag, double T, double P, double[] x, doubleW D, intW ierr, - StringW herr) { - // Sub DensityGERG(iFlag, T, P, x, D, ierr, herr) - - // Calculate density as a function of temperature and pressure. This is an - // iterative routine that calls PressureGERG - // to find the correct state point. Generally only 6 iterations at most are - // required. - // If the iteration fails to converge, the ideal gas density and an error - // message are returned. - // No checks are made to determine the phase boundary, which would have - // guaranteed that the output is in the gas phase (or liquid phase when - // iFlag=2). - // It is up to the user to locate the phase boundary, and thus identify the - // phase of the T and P inputs. - // If the state point is 2-phase, the output density will represent a metastable - // state. - - // Inputs: - // iFlag - Set to 0 for strict pressure solver in the gas phase without checks - // (fastest mode, but output state may not be stable single phase) - // Set to 1 to make checks for possible 2-phase states (result may still not be - // stable single phase, but many unstable states will be identified) - // Set to 2 to search for liquid phase (and make the same checks when iFlag=1) - // T - Temperature (K) - // P - Pressure (kPa) - // x() - Composition (mole fraction) - // (An initial guess for the density can be sent in D as the negative of the - // guess for roots that are in the liquid phase instead of using iFlag=2) - - // Outputs: - // D - Density (mol/l) - // For the liquid phase, an initial value can be sent to the routine to avoid - // a solution in the metastable or gas phases. - // The initial value should be sent as a negative number. - // ierr - Error number (0 indicates no error) - // herr - Error message if ierr is not equal to zero - - int nFail, iFail; - double plog, vlog, dpdlv, vdiff, tolr, vinc; - doubleW Tcx = new doubleW(0.0d), Dcx = new doubleW(0.0d); - - doubleW dPdD = new doubleW(0.0d), d2PdD2 = new doubleW(0.0d), d2PdTD = new doubleW(0.0d), - dPdT = new doubleW(0.0d), U = new doubleW(0.0d), H = new doubleW(0.0d), - S = new doubleW(0.0d), A = new doubleW(0.0d), P2 = new doubleW(0.0d), - Z = new doubleW(0.0d); - doubleW Cv = new doubleW(0.0d), Cp = new doubleW(0.0d), W = new doubleW(0.0d), - G = new doubleW(0.0d), JT = new doubleW(0.0d), Kappa = new doubleW(0.0d), - PP = new doubleW(0.0d); - - ierr.val = 0; - herr.val = ""; - nFail = 0; + plog = Math.log(P); + vlog = -Math.log(D.val); + for (int it = 1; it <= 50; ++it) { + if (vlog < -7 || vlog > 100 || it == 20 || it == 30 || it == 40 || iFail == 1) { + // Current state is bad or iteration is taking too long. Restart with completely + // different initial state iFail = 0; - if (P < epsilon) { - D.val = 0; - return; + if (nFail > 2) { + // Iteration failed (above loop did not find a solution or checks made below + // indicate possible 2-phase state) + ierr.val = 1; + herr.val = "Calculation failed to converge in GERG method, ideal gas density returned."; + D.val = P / RGERG / T; } - tolr = 0.0000001; - PseudoCriticalPointGERG(x, Tcx, Dcx); - - if (D.val > -epsilon) { - D.val = P / RGERG / T; // Ideal gas estimate for vapor phase - if (iFlag == 2) { - D.val = Dcx.val * 3; - } // Initial estimate for liquid phase - } else { - D.val = Math.abs(D.val); // If D<0, then use as initial estimate + nFail++; + if (nFail == 1) { + D.val = Dcx.val * 3; // If vapor phase search fails, look for root in liquid + // region + } else if (nFail == 2) { + D.val = Dcx.val * 2.5; // If liquid phase search fails, look for root between + // liquid and critical + // regions + } else if (nFail == 3) { + D.val = Dcx.val * 2; // If search fails, look for root in critical region } - - plog = Math.log(P); vlog = -Math.log(D.val); - for (int it = 1; it <= 50; ++it) { - if (vlog < -7 || vlog > 100 || it == 20 || it == 30 || it == 40 || iFail == 1) { - // Current state is bad or iteration is taking too long. Restart with completely - // different initial state - iFail = 0; - if (nFail > 2) { - // Iteration failed (above loop did not find a solution or checks made below - // indicate possible 2-phase state) - ierr.val = 1; - herr.val = - "Calculation failed to converge in GERG method, ideal gas density returned."; - D.val = P / RGERG / T; - } - nFail++; - if (nFail == 1) { - D.val = Dcx.val * 3; // If vapor phase search fails, look for root in liquid - // region - } else if (nFail == 2) { - D.val = Dcx.val * 2.5; // If liquid phase search fails, look for root between - // liquid and critical - // regions - } else if (nFail == 3) { - D.val = Dcx.val * 2; // If search fails, look for root in critical region - } - vlog = -Math.log(D.val); - } - D.val = Math.exp(-vlog); - PressureGERG(T, D.val, x, P2, Z); - if (dPdDsave < epsilon || P2.val < epsilon) { - // Current state is 2-phase, try locating a different state that is single phase - vinc = 0.1; - if (D.val > Dcx.val) { - vinc = -0.1; - } - if (it > 5) { - vinc = vinc / 2; - } - if (it > 10 && it < 20) { - vinc = vinc / 5; - } - vlog += vinc; - } else { - // Find the next density with a first order Newton's type iterative scheme, with - // log(P) as the known variable and log(v) as the unknown property. - // See AGA 8 publication for further information. - dpdlv = -D.val * dPdDsave; // d(p)/d[log(v)] - vdiff = (Math.log(P2.val) - plog) * P2.val / dpdlv; - vlog += -vdiff; - if (Math.abs(vdiff) < tolr) { - // Check to see if state is possibly 2-phase, and if so restart - if (dPdDsave < 0) { - iFail = 1; - } else { - D.val = Math.exp(-vlog); - - // If requested, check to see if point is possibly 2-phase - if (iFlag > 0) { - PropertiesGERG(T, D.val, x, PP, Z, dPdD, d2PdD2, d2PdTD, dPdT, U, H, S, - Cv, Cp, W, G, JT, Kappa, A); - if ((PP.val <= 0 || dPdD.val <= 0 || d2PdTD.val <= 0) - || (Cv.val <= 0 || Cp.val <= 0 || W.val <= 0)) { - // Iteration failed (above loop did find a solution or checks made - // below - // indicate possible 2-phase state) - ierr.val = 1; - herr.val = - "Calculation failed to converge in GERG method, ideal gas density returned."; - D.val = P / RGERG / T; - } - return; - } - return; // Iteration converged - } - } - } + } + D.val = Math.exp(-vlog); + PressureGERG(T, D.val, x, P2, Z); + if (dPdDsave < epsilon || P2.val < epsilon) { + // Current state is 2-phase, try locating a different state that is single phase + vinc = 0.1; + if (D.val > Dcx.val) { + vinc = -0.1; } - // Iteration failed (above loop did not find a solution or checks made below - // indicate possible 2-phase state) - ierr.val = 1; - herr.val = "Calculation failed to converge in GERG method, ideal gas density returned."; - D.val = P / RGERG / T; - } - - /** - *

- * PropertiesGERG. - *

- * - * @param T a double - * @param D a double - * @param x an array of {@link double} objects - * @param P a {@link org.netlib.util.doubleW} object - * @param Z a {@link org.netlib.util.doubleW} object - * @param dPdD a {@link org.netlib.util.doubleW} object - * @param d2PdD2 a {@link org.netlib.util.doubleW} object - * @param d2PdTD a {@link org.netlib.util.doubleW} object - * @param dPdT a {@link org.netlib.util.doubleW} object - * @param U a {@link org.netlib.util.doubleW} object - * @param H a {@link org.netlib.util.doubleW} object - * @param S a {@link org.netlib.util.doubleW} object - * @param Cv a {@link org.netlib.util.doubleW} object - * @param Cp a {@link org.netlib.util.doubleW} object - * @param W a {@link org.netlib.util.doubleW} object - * @param G a {@link org.netlib.util.doubleW} object - * @param JT a {@link org.netlib.util.doubleW} object - * @param Kappa a {@link org.netlib.util.doubleW} object - * @param A a {@link org.netlib.util.doubleW} object - */ - public static void PropertiesGERG(double T, double D, double[] x, doubleW P, doubleW Z, - doubleW dPdD, doubleW d2PdD2, doubleW d2PdTD, doubleW dPdT, doubleW U, doubleW H, - doubleW S, doubleW Cv, doubleW Cp, doubleW W, doubleW G, doubleW JT, doubleW Kappa, - doubleW A) { - // Sub PropertiesGERG(T, D, x, P, Z, dPdD, d2PdD2, d2PdTD, dPdT, U, H, S, Cv, - // Cp, W, G, JT, Kappa, A) - - // Calculate thermodynamic properties as a function of temperature and density. - // Calls are made to the subroutines - // ReducingParametersGERG, IdealGERG, and ResidualGERG. If the density is not - // known, call subroutine DENSITY first - // with the known values of pressure and temperature. - - // Inputs: - // T - Temperature (K) - // D - Density (mol/l) - // x() - Composition (mole fraction) - - // Outputs: - // P - Pressure (kPa) - // Z - Compressibility factor - // dPdD - First derivative of pressure with respect to density at constant - // temperature [kPa/(mol/l)] - // d2PdD2 - Second derivative of pressure with respect to density at constant - // temperature [kPa/(mol/l)^2] - // d2PdTD - Second derivative of pressure with respect to temperature and - // density [kPa/(mol/l)/K] - // dPdT - First derivative of pressure with respect to temperature at constant - // density (kPa/K) - // U - Internal energy (J/mol) - // H - Enthalpy (J/mol) - // S - Entropy [J/(mol-K)] - // Cv - Isochoric heat capacity [J/(mol-K)] - // Cp - Isobaric heat capacity [J/(mol-K)] - // W - Speed of sound (m/s) - // G - Gibbs energy (J/mol) - // JT - Joule-Thomson coefficient (K/kPa) - // Kappa - Isentropic Exponent - // A - Helmholtz energy (J/mol) - - doubleW[] a0 = new doubleW[2 + 1]; - for (int i = 0; i < 3; i++) { - a0[i] = new doubleW(0.0d); + if (it > 5) { + vinc = vinc / 2; } - doubleW[][] ar = new doubleW[3 + 1][3 + 1]; - - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - ar[i][j] = new doubleW(0.0d); - } + if (it > 10 && it < 20) { + vinc = vinc / 5; } + vlog += vinc; + } else { + // Find the next density with a first order Newton's type iterative scheme, with + // log(P) as the known variable and log(v) as the unknown property. + // See AGA 8 publication for further information. + dpdlv = -D.val * dPdDsave; // d(p)/d[log(v)] + vdiff = (Math.log(P2.val) - plog) * P2.val / dpdlv; + vlog += -vdiff; + if (Math.abs(vdiff) < tolr) { + // Check to see if state is possibly 2-phase, and if so restart + if (dPdDsave < 0) { + iFail = 1; + } else { + D.val = Math.exp(-vlog); - doubleW Mm = new doubleW(0.0d);// , R, RT; - double R, RT; - // Calculate molar mass - MolarMassGERG(x, Mm); - - // Calculate the ideal gas Helmholtz energy, and its first and second - // derivatives with respect to temperature. - Alpha0GERG(T, D, x, a0); - - // Calculate the real gas Helmholtz energy, and its derivatives with respect to - // temperature and/or density. - AlpharGERG(1, 0, T, D, x, ar); - - R = RGERG; - RT = R * T; - Z.val = 1 + ar[0][1].val; - P.val = D * RT * Z.val; - dPdD.val = RT * (1 + 2 * ar[0][1].val + ar[0][2].val); - dPdT.val = D * R * (1 + ar[0][1].val - ar[1][1].val); - - d2PdTD.val = R * (1 + 2 * ar[0][1].val + ar[0][2].val - 2 * ar[1][1].val - ar[1][2].val); - A.val = RT * (a0[0].val + ar[0][0].val); - G.val = RT * (1 + ar[0][1].val + a0[0].val + ar[0][0].val); - U.val = RT * (a0[1].val + ar[1][0].val); - H.val = RT * (1 + ar[0][1].val + a0[1].val + ar[1][0].val); - S.val = R * (a0[1].val + ar[1][0].val - a0[0].val - ar[0][0].val); - Cv.val = -R * (a0[2].val + ar[2][0].val); - if (D > epsilon) { - Cp.val = Cv.val + T * (dPdT.val / D) * (dPdT.val / D) / dPdD.val; - d2PdD2.val = RT * (2 * ar[0][1].val + 4 * ar[0][2].val + ar[0][3].val) / D; - JT.val = (T / D * dPdT.val / dPdD.val - 1) / Cp.val / D; // '=(dB/dT*T-B)/Cp for an - // ideal gas, but dB/dT is - // not known - } else { - Cp.val = Cv.val + R; - d2PdD2.val = 0; - JT.val = 1E+20; - } - W.val = 1000 * Cp.val / Cv.val * dPdD.val / Mm.val; - if (W.val < 0) { - W.val = 0; + // If requested, check to see if point is possibly 2-phase + if (iFlag > 0) { + PropertiesGERG(T, D.val, x, PP, Z, dPdD, d2PdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, W, G, + JT, Kappa, A); + if ((PP.val <= 0 || dPdD.val <= 0 || d2PdTD.val <= 0) + || (Cv.val <= 0 || Cp.val <= 0 || W.val <= 0)) { + // Iteration failed (above loop did find a solution or checks made + // below + // indicate possible 2-phase state) + ierr.val = 1; + herr.val = + "Calculation failed to converge in GERG method, ideal gas density returned."; + D.val = P / RGERG / T; + } + return; + } + return; // Iteration converged + } } - W.val = Math.sqrt(W.val); - Kappa.val = Math.pow(W.val, 2) * Mm.val / (RT * 1000 * Z.val); + } } + // Iteration failed (above loop did not find a solution or checks made below + // indicate possible 2-phase state) + ierr.val = 1; + herr.val = "Calculation failed to converge in GERG method, ideal gas density returned."; + D.val = P / RGERG / T; + } + + /** + *

+ * PropertiesGERG. + *

+ * + * @param T a double + * @param D a double + * @param x an array of type double + * @param P a {@link org.netlib.util.doubleW} object + * @param Z a {@link org.netlib.util.doubleW} object + * @param dPdD a {@link org.netlib.util.doubleW} object + * @param d2PdD2 a {@link org.netlib.util.doubleW} object + * @param d2PdTD a {@link org.netlib.util.doubleW} object + * @param dPdT a {@link org.netlib.util.doubleW} object + * @param U a {@link org.netlib.util.doubleW} object + * @param H a {@link org.netlib.util.doubleW} object + * @param S a {@link org.netlib.util.doubleW} object + * @param Cv a {@link org.netlib.util.doubleW} object + * @param Cp a {@link org.netlib.util.doubleW} object + * @param W a {@link org.netlib.util.doubleW} object + * @param G a {@link org.netlib.util.doubleW} object + * @param JT a {@link org.netlib.util.doubleW} object + * @param Kappa a {@link org.netlib.util.doubleW} object + * @param A a {@link org.netlib.util.doubleW} object + */ + public void PropertiesGERG(double T, double D, double[] x, doubleW P, doubleW Z, doubleW dPdD, + doubleW d2PdD2, doubleW d2PdTD, doubleW dPdT, doubleW U, doubleW H, doubleW S, doubleW Cv, + doubleW Cp, doubleW W, doubleW G, doubleW JT, doubleW Kappa, doubleW A) { + // Sub PropertiesGERG(T, D, x, P, Z, dPdD, d2PdD2, d2PdTD, dPdT, U, H, S, Cv, + // Cp, W, G, JT, Kappa, A) + + // Calculate thermodynamic properties as a function of temperature and density. + // Calls are made to the subroutines + // ReducingParametersGERG, IdealGERG, and ResidualGERG. If the density is not + // known, call subroutine DENSITY first + // with the known values of pressure and temperature. + + // Inputs: + // T - Temperature (K) + // D - Density (mol/l) + // x() - Composition (mole fraction) + + // Outputs: + // P - Pressure (kPa) + // Z - Compressibility factor + // dPdD - First derivative of pressure with respect to density at constant + // temperature [kPa/(mol/l)] + // d2PdD2 - Second derivative of pressure with respect to density at constant + // temperature [kPa/(mol/l)^2] + // d2PdTD - Second derivative of pressure with respect to temperature and + // density [kPa/(mol/l)/K] + // dPdT - First derivative of pressure with respect to temperature at constant + // density (kPa/K) + // U - Internal energy (J/mol) + // H - Enthalpy (J/mol) + // S - Entropy [J/(mol-K)] + // Cv - Isochoric heat capacity [J/(mol-K)] + // Cp - Isobaric heat capacity [J/(mol-K)] + // W - Speed of sound (m/s) + // G - Gibbs energy (J/mol) + // JT - Joule-Thomson coefficient (K/kPa) + // Kappa - Isentropic Exponent + // A - Helmholtz energy (J/mol) + + doubleW[] a0 = new doubleW[2 + 1]; + for (int i = 0; i < 3; i++) { + a0[i] = new doubleW(0.0d); + } + doubleW[][] ar = new doubleW[3 + 1][3 + 1]; - /** - * @param x ... - * @param Tr ... - * @param Dr ... - */ - // The following routines are low-level routines that should not be called outside of this code. - static void ReducingParametersGERG(double[] x, doubleW Tr, doubleW Dr) { - // Private Sub ReducingParametersGERG(x, Tr, Dr) - - // Calculate reducing variables. Only need to call this if the composition has - // changed. - - // Inputs: - // x() - Composition (mole fraction) - - // Outputs: - // Tr - Reducing temperature (K) - // Dr - Reducing density (mol/l) - - double Vr, xij, F; - int icheck; + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + ar[i][j] = new doubleW(0.0d); + } + } - // Check to see if a component fraction has changed. If x is the same as the previous call, - // then exit. - icheck = 0; - for (int i = 1; i <= NcGERG; ++i) { - if (Math.abs(x[i] - xold[i]) > 0.0000001) { - icheck = 1; - } - xold[i] = x[i]; - } - if (icheck == 0) { - Dr.val = Drold; - Tr.val = Trold; - return; + doubleW Mm = new doubleW(0.0d); // , R, RT; + double R; + double RT; + // Calculate molar mass + MolarMassGERG(x, Mm); + + // Calculate the ideal gas Helmholtz energy, and its first and second + // derivatives with respect to temperature. + Alpha0GERG(T, D, x, a0); + + // Calculate the real gas Helmholtz energy, and its derivatives with respect to + // temperature and/or density. + AlpharGERG(1, 0, T, D, x, ar); + + R = RGERG; + RT = R * T; + Z.val = 1 + ar[0][1].val; + P.val = D * RT * Z.val; + dPdD.val = RT * (1 + 2 * ar[0][1].val + ar[0][2].val); + dPdT.val = D * R * (1 + ar[0][1].val - ar[1][1].val); + + d2PdTD.val = R * (1 + 2 * ar[0][1].val + ar[0][2].val - 2 * ar[1][1].val - ar[1][2].val); + A.val = RT * (a0[0].val + ar[0][0].val); + G.val = RT * (1 + ar[0][1].val + a0[0].val + ar[0][0].val); + U.val = RT * (a0[1].val + ar[1][0].val); + H.val = RT * (1 + ar[0][1].val + a0[1].val + ar[1][0].val); + S.val = R * (a0[1].val + ar[1][0].val - a0[0].val - ar[0][0].val); + Cv.val = -R * (a0[2].val + ar[2][0].val); + if (D > epsilon) { + Cp.val = Cv.val + T * (dPdT.val / D) * (dPdT.val / D) / dPdD.val; + d2PdD2.val = RT * (2 * ar[0][1].val + 4 * ar[0][2].val + ar[0][3].val) / D; + JT.val = (T / D * dPdT.val / dPdD.val - 1) / Cp.val / D; // '=(dB/dT*T-B)/Cp for an + // ideal gas, but dB/dT is + // not known + } else { + Cp.val = Cv.val + R; + d2PdD2.val = 0; + JT.val = 1E+20; + } + W.val = 1000 * Cp.val / Cv.val * dPdD.val / Mm.val; + if (W.val < 0) { + W.val = 0; + } + W.val = Math.sqrt(W.val); + Kappa.val = Math.pow(W.val, 2) * Mm.val / (RT * 1000 * Z.val); + } + + /** + * @param x ... + * @param Tr ... + * @param Dr ... + */ + // The following routines are low-level routines that should not be called outside of this code. + void ReducingParametersGERG(double[] x, doubleW Tr, doubleW Dr) { + // Private Sub ReducingParametersGERG(x, Tr, Dr) + + // Calculate reducing variables. Only need to call this if the composition has + // changed. + + // Inputs: + // x() - Composition (mole fraction) + + // Outputs: + // Tr - Reducing temperature (K) + // Dr - Reducing density (mol/l) + + double Vr; + double xij; + double F; + int icheck; + + // Check to see if a component fraction has changed. If x is the same as the previous call, + // then exit. + icheck = 0; + for (int i = 1; i <= NcGERG; ++i) { + if (Math.abs(x[i] - xold[i]) > 0.0000001) { + icheck = 1; + } + xold[i] = x[i]; + } + if (icheck == 0) { + Dr.val = Drold; + Tr.val = Trold; + return; + } + Told = 0; + Trold2 = 0; + + // Calculate reducing variables for T and D + Dr.val = 0; + Vr = 0; + Tr.val = 0; + for (int i = 1; i <= NcGERG; ++i) { + if (x[i] > epsilon) { + F = 1; + for (int j = i; j <= NcGERG; ++j) { + if (x[j] > epsilon) { + xij = F * (x[i] * x[j]) * (x[i] + x[j]); + Vr = Vr + xij * gvij[i][j] / (bvij[i][j] * x[i] + x[j]); + Tr.val = Tr.val + xij * gtij[i][j] / (btij[i][j] * x[i] + x[j]); + F = 2; + } } - Told = 0; - Trold2 = 0; - - // Calculate reducing variables for T and D - Dr.val = 0; - Vr = 0; - Tr.val = 0; - for (int i = 1; i <= NcGERG; ++i) { - if (x[i] > epsilon) { - F = 1; - for (int j = i; j <= NcGERG; ++j) { - if (x[j] > epsilon) { - xij = F * (x[i] * x[j]) * (x[i] + x[j]); - Vr = Vr + xij * gvij[i][j] / (bvij[i][j] * x[i] + x[j]); - Tr.val = Tr.val + xij * gtij[i][j] / (btij[i][j] * x[i] + x[j]); - F = 2; - } - } + } + } + if (Vr > epsilon) { + Dr.val = 1 / Vr; + } + Drold = Dr.val; + Trold = Tr.val; + } + + /** + * @param T ... + * @param D ... + * @param x ... + * @param a0 ... + */ + void Alpha0GERG(double T, double D, double[] x, doubleW[] a0) { + // Private Sub Alpha0GERG(T, D, x, a0) + + // Calculate the ideal gas Helmholtz energy and its derivatives with respect to + // tau and delta. + // This routine is not needed when only P (or Z) is calculated. + + // Inputs: + // T - Temperature (K) + // D - Density (mol/l) + // x() - Composition (mole fraction) + + // Outputs: + // a0(0) - Ideal gas Helmholtz energy (all dimensionless [i.e., divided by RT]) + // a0(1) - tau*partial(a0)/partial(tau) + // a0(2) - tau^2*partial^2(a0)/partial(tau)^2 + + double LogT; + double LogD; + double LogHyp; + double th0T; + double LogxD; + double SumHyp0; + double SumHyp1; + double SumHyp2; + double em; + + double ep; + double hcn; + double hsn; + a0[0].val = 0; + a0[1].val = 0; + a0[2].val = 0; + if (D > epsilon) { + LogD = Math.log(D); + } else { + LogD = Math.log(epsilon); + } + LogT = Math.log(T); + for (int i = 1; i <= NcGERG; ++i) { + if (x[i] > epsilon) { + LogxD = LogD + Math.log(x[i]); + SumHyp0 = 0; + SumHyp1 = 0; + SumHyp2 = 0; + for (int j = 4; j <= 7; ++j) { + if (th0i[i][j] > epsilon) { + th0T = th0i[i][j] / T; + ep = Math.exp(th0T); + em = 1 / ep; + hsn = (ep - em) / 2; + hcn = (ep + em) / 2; + if (j == 4 || j == 6) { + LogHyp = Math.log(Math.abs(hsn)); + SumHyp0 = SumHyp0 + n0i[i][j] * LogHyp; + SumHyp1 = SumHyp1 + n0i[i][j] * th0T * hcn / hsn; + SumHyp2 = SumHyp2 + n0i[i][j] * (th0T / hsn) * (th0T / hsn); + } else { + LogHyp = Math.log(Math.abs(hcn)); + SumHyp0 = SumHyp0 - n0i[i][j] * LogHyp; + SumHyp1 = SumHyp1 - n0i[i][j] * th0T * hsn / hcn; + SumHyp2 = SumHyp2 + n0i[i][j] * (th0T / hcn) * (th0T / hcn); } + } } - if (Vr > epsilon) { - Dr.val = 1 / Vr; - } - Drold = Dr.val; - Trold = Tr.val; + a0[0].val += +x[i] * (LogxD + n0i[i][1] + n0i[i][2] / T - n0i[i][3] * LogT + SumHyp0); + a0[1].val += +x[i] * (n0i[i][3] + n0i[i][2] / T + SumHyp1); + a0[2].val += -x[i] * (n0i[i][3] + SumHyp2); + } + } + } + + /** + * @param itau ... + * @param idelta ... + * @param T ... + * @param D .... + * @param x .... + * @param ar ... + */ + void AlpharGERG(int itau, int idelta, double T, double D, double[] x, doubleW[][] ar) { + // Private Sub AlpharGERG(itau, idelta, T, D, x, ar) + + // Calculate dimensionless residual Helmholtz energy and its derivatives with + // respect to tau and delta. + + // Inputs: + // itau - Set this to 1 to calculate "ar" derivatives with respect to tau [i.e., + // ar(1,0), ar(1,1), and ar(2,0)], otherwise set it to 0. + // idelta - Currently not used, but kept as an input for future use in specifing + // the highest density derivative needed. + // T - Temperature (K) + // D - Density (mol/l) + // x() - Composition (mole fraction) + + // Outputs: + // ar(0,0) - Residual Helmholtz energy (dimensionless, =a/RT) + // ar(0,1) - delta*partial (ar)/partial(delta) + // ar(0,2) - delta^2*partial^2(ar)/partial(delta)^2 + // ar(0,3) - delta^3*partial^3(ar)/partial(delta)^3 + // ar(1,0) - tau*partial (ar)/partial(tau) + // ar(1,1) - tau*delta*partial^2(ar)/partial(tau)/partial(delta) + // ar(2,0) - tau^2*partial^2(ar)/partial(tau)^2 + + int mn; + doubleW Tr = new doubleW(0.0d); + doubleW Dr = new doubleW(0.0d); + double del; + double tau; + double lntau; + double ex; + double ex2; + double ex3; + double cij0; + double eij0; + double ndt; + double ndtd; + double ndtt; + double xijf; + double[] delp = new double[7 + 1]; + double[] Expd = new double[7 + 1]; + + for (int i = 0; i <= 3; ++i) { + for (int j = 0; j <= 3; ++j) { + ar[i][j].val = 0; + } } - /** - * @param T ... - * @param D ... - * @param x ... - * @param a0 ... - */ - static void Alpha0GERG(double T, double D, double[] x, doubleW[] a0) { - // Private Sub Alpha0GERG(T, D, x, a0) - - // Calculate the ideal gas Helmholtz energy and its derivatives with respect to - // tau and delta. - // This routine is not needed when only P (or Z) is calculated. - - // Inputs: - // T - Temperature (K) - // D - Density (mol/l) - // x() - Composition (mole fraction) - - // Outputs: - // a0(0) - Ideal gas Helmholtz energy (all dimensionless [i.e., divided by RT]) - // a0(1) - tau*partial(a0)/partial(tau) - // a0(2) - tau^2*partial^2(a0)/partial(tau)^2 - - double LogT, LogD, LogHyp, th0T, LogxD; - double SumHyp0, SumHyp1, SumHyp2; - double em, ep, hcn, hsn; - - a0[0].val = 0; - a0[1].val = 0; - a0[2].val = 0; - if (D > epsilon) { - LogD = Math.log(D); - } else { - LogD = Math.log(epsilon); - } - LogT = Math.log(T); - for (int i = 1; i <= NcGERG; ++i) { - if (x[i] > epsilon) { - LogxD = LogD + Math.log(x[i]); - SumHyp0 = 0; - SumHyp1 = 0; - SumHyp2 = 0; - for (int j = 4; j <= 7; ++j) { - if (th0i[i][j] > epsilon) { - th0T = th0i[i][j] / T; - ep = Math.exp(th0T); - em = 1 / ep; - hsn = (ep - em) / 2; - hcn = (ep + em) / 2; - if (j == 4 || j == 6) { - LogHyp = Math.log(Math.abs(hsn)); - SumHyp0 = SumHyp0 + n0i[i][j] * LogHyp; - SumHyp1 = SumHyp1 + n0i[i][j] * th0T * hcn / hsn; - SumHyp2 = SumHyp2 + n0i[i][j] * (th0T / hsn) * (th0T / hsn); - } else { - LogHyp = Math.log(Math.abs(hcn)); - SumHyp0 = SumHyp0 - n0i[i][j] * LogHyp; - SumHyp1 = SumHyp1 - n0i[i][j] * th0T * hsn / hcn; - SumHyp2 = SumHyp2 + n0i[i][j] * (th0T / hcn) * (th0T / hcn); - } - } - } - a0[0].val += - +x[i] * (LogxD + n0i[i][1] + n0i[i][2] / T - n0i[i][3] * LogT + SumHyp0); - a0[1].val += +x[i] * (n0i[i][3] + n0i[i][2] / T + SumHyp1); - a0[2].val += -x[i] * (n0i[i][3] + SumHyp2); - } - } + // Set up del, tau, log(tau), and the first 7 calculations for del^i + ReducingParametersGERG(x, Tr, Dr); + del = D / Dr.val; + tau = Tr.val / T; + lntau = Math.log(tau); + delp[1] = del; + Expd[1] = Math.exp(-delp[1]); + for (int i = 2; i <= 7; ++i) { + delp[i] = delp[i - 1] * del; + Expd[i] = Math.exp(-delp[i]); } - /** - * @param itau ... - * @param idelta ... - * @param T ... - * @param D .... - * @param x .... - * @param ar ... - */ - static void AlpharGERG(int itau, int idelta, double T, double D, double[] x, doubleW[][] ar) { - // Private Sub AlpharGERG(itau, idelta, T, D, x, ar) - - // Calculate dimensionless residual Helmholtz energy and its derivatives with - // respect to tau and delta. - - // Inputs: - // itau - Set this to 1 to calculate "ar" derivatives with respect to tau [i.e., - // ar(1,0), ar(1,1), and ar(2,0)], otherwise set it to 0. - // idelta - Currently not used, but kept as an input for future use in specifing - // the highest density derivative needed. - // T - Temperature (K) - // D - Density (mol/l) - // x() - Composition (mole fraction) - - // Outputs: - // ar(0,0) - Residual Helmholtz energy (dimensionless, =a/RT) - // ar(0,1) - delta*partial (ar)/partial(delta) - // ar(0,2) - delta^2*partial^2(ar)/partial(delta)^2 - // ar(0,3) - delta^3*partial^3(ar)/partial(delta)^3 - // ar(1,0) - tau*partial (ar)/partial(tau) - // ar(1,1) - tau*delta*partial^2(ar)/partial(tau)/partial(delta) - // ar(2,0) - tau^2*partial^2(ar)/partial(tau)^2 - - int mn; - doubleW Tr = new doubleW(0.0d), Dr = new doubleW(0.0d); - double del, tau; - double lntau, ex, ex2, ex3, cij0, eij0; - double ndt, ndtd, ndtt, xijf; - double[] delp = new double[7 + 1]; - double[] Expd = new double[7 + 1]; - - for (int i = 0; i <= 3; ++i) { - for (int j = 0; j <= 3; ++j) { - ar[i][j].val = 0; - } + // If temperature has changed, calculate temperature dependent parts + if (Math.abs(T - Told) > 0.0000001 || Math.abs(Tr.val - Trold2) > 0.0000001) { + tTermsGERG(lntau, x); + } + Told = T; + Trold2 = Tr.val; + + // Calculate pure fluid contributions + for (int i = 1; i <= NcGERG; ++i) { + if (x[i] > epsilon) { + for (int k = 1; k <= kpol[i]; ++k) { + ndt = x[i] * delp[doik[i][k]] * taup[i][k]; + ndtd = ndt * doik[i][k]; + ar[0][1].val += ndtd; + ar[0][2].val += ndtd * (doik[i][k] - 1); + if (itau > 0) { + ndtt = ndt * toik[i][k]; + ar[0][0].val += ndt; + ar[1][0].val += ndtt; + ar[2][0].val += ndtt * (toik[i][k] - 1); + ar[1][1].val += ndtt * doik[i][k]; + ar[1][2].val += ndtt * doik[i][k] * (doik[i][k] - 1); + ar[0][3].val += ndtd * (doik[i][k] - 1) * (doik[i][k] - 2); + } } - - // Set up del, tau, log(tau), and the first 7 calculations for del^i - ReducingParametersGERG(x, Tr, Dr); - del = D / Dr.val; - tau = Tr.val / T; - lntau = Math.log(tau); - delp[1] = del; - Expd[1] = Math.exp(-delp[1]); - for (int i = 2; i <= 7; ++i) { - delp[i] = delp[i - 1] * del; - Expd[i] = Math.exp(-delp[i]); + for (int k = 1 + kpol[i]; k <= kpol[i] + kexp[i]; ++k) { + ndt = x[i] * delp[doik[i][k]] * taup[i][k] * Expd[coik[i][k]]; + ex = coik[i][k] * delp[coik[i][k]]; + ex2 = doik[i][k] - ex; + ex3 = ex2 * (ex2 - 1); + ar[0][1].val += ndt * ex2; + ar[0][2].val += ndt * (ex3 - coik[i][k] * ex); + if (itau > 0) { + ndtt = ndt * toik[i][k]; + ar[0][0].val += ndt; + ar[1][0].val += ndtt; + ar[2][0].val += ndtt * (toik[i][k] - 1); + ar[1][1].val += ndtt * ex2; + ar[1][2].val += ndtt * (ex3 - coik[i][k] * ex); + ar[0][3].val += ndt * (ex3 * (ex2 - 2) - ex * (3 * ex2 - 3 + coik[i][k]) * coik[i][k]); + } } + } + } - // If temperature has changed, calculate temperature dependent parts - if (Math.abs(T - Told) > 0.0000001 || Math.abs(Tr.val - Trold2) > 0.0000001) { - tTermsGERG(lntau, x); - } - Told = T; - Trold2 = Tr.val; - - // Calculate pure fluid contributions - for (int i = 1; i <= NcGERG; ++i) { - if (x[i] > epsilon) { - for (int k = 1; k <= kpol[i]; ++k) { - ndt = x[i] * delp[doik[i][k]] * taup[i][k]; - ndtd = ndt * doik[i][k]; - ar[0][1].val += ndtd; - ar[0][2].val += ndtd * (doik[i][k] - 1); - if (itau > 0) { - ndtt = ndt * toik[i][k]; - ar[0][0].val += ndt; - ar[1][0].val += ndtt; - ar[2][0].val += ndtt * (toik[i][k] - 1); - ar[1][1].val += ndtt * doik[i][k]; - ar[1][2].val += ndtt * doik[i][k] * (doik[i][k] - 1); - ar[0][3].val += ndtd * (doik[i][k] - 1) * (doik[i][k] - 2); - } + // Calculate mixture contributions + for (int i = 1; i <= NcGERG - 1; ++i) { + if (x[i] > epsilon) { + for (int j = i + 1; j <= NcGERG; ++j) { + if (x[j] > epsilon) { + mn = mNumb[i][j]; + if (mn >= 0) { + xijf = x[i] * x[j] * fij[i][j]; + for (int k = 1; k <= kpolij[mn]; ++k) { + ndt = xijf * delp[dijk[mn][k]] * taupijk[mn][k]; + ndtd = ndt * dijk[mn][k]; + ar[0][1].val += ndtd; + ar[0][2].val += ndtd * (dijk[mn][k] - 1); + if (itau > 0) { + ndtt = ndt * tijk[mn][k]; + ar[0][0].val += ndt; + ar[1][0].val += ndtt; + ar[2][0].val += ndtt * (tijk[mn][k] - 1); + ar[1][1].val += ndtt * dijk[mn][k]; + ar[1][2].val += ndtt * dijk[mn][k] * (dijk[mn][k] - 1); + ar[0][3].val += ndtd * (dijk[mn][k] - 1) * (dijk[mn][k] - 2); } - for (int k = 1 + kpol[i]; k <= kpol[i] + kexp[i]; ++k) { - ndt = x[i] * delp[doik[i][k]] * taup[i][k] * Expd[coik[i][k]]; - ex = coik[i][k] * delp[coik[i][k]]; - ex2 = doik[i][k] - ex; - ex3 = ex2 * (ex2 - 1); - ar[0][1].val += ndt * ex2; - ar[0][2].val += ndt * (ex3 - coik[i][k] * ex); - if (itau > 0) { - ndtt = ndt * toik[i][k]; - ar[0][0].val += ndt; - ar[1][0].val += ndtt; - ar[2][0].val += ndtt * (toik[i][k] - 1); - ar[1][1].val += ndtt * ex2; - ar[1][2].val += ndtt * (ex3 - coik[i][k] * ex); - ar[0][3].val += ndt - * (ex3 * (ex2 - 2) - ex * (3 * ex2 - 3 + coik[i][k]) * coik[i][k]); - } - } - } - } - - // Calculate mixture contributions - for (int i = 1; i <= NcGERG - 1; ++i) { - if (x[i] > epsilon) { - for (int j = i + 1; j <= NcGERG; ++j) { - if (x[j] > epsilon) { - mn = mNumb[i][j]; - if (mn >= 0) { - xijf = x[i] * x[j] * fij[i][j]; - for (int k = 1; k <= kpolij[mn]; ++k) { - ndt = xijf * delp[dijk[mn][k]] * taupijk[mn][k]; - ndtd = ndt * dijk[mn][k]; - ar[0][1].val += ndtd; - ar[0][2].val += ndtd * (dijk[mn][k] - 1); - if (itau > 0) { - ndtt = ndt * tijk[mn][k]; - ar[0][0].val += ndt; - ar[1][0].val += ndtt; - ar[2][0].val += ndtt * (tijk[mn][k] - 1); - ar[1][1].val += ndtt * dijk[mn][k]; - ar[1][2].val += ndtt * dijk[mn][k] * (dijk[mn][k] - 1); - ar[0][3].val += ndtd * (dijk[mn][k] - 1) * (dijk[mn][k] - 2); - } - } - for (int k = 1 + kpolij[mn]; k <= kpolij[mn] + kexpij[mn]; ++k) { - cij0 = cijk[mn][k] * delp[2]; - eij0 = eijk[mn][k] * del; - ndt = xijf * nijk[mn][k] * delp[dijk[mn][k]] - * Math.exp(cij0 + eij0 + gijk[mn][k] + tijk[mn][k] * lntau); - ex = dijk[mn][k] + 2 * cij0 + eij0; - ex2 = (ex * ex - dijk[mn][k] + 2 * cij0); - ar[0][1].val += ndt * ex; - ar[0][2].val += ndt * ex2; - if (itau > 0) { - ndtt = ndt * tijk[mn][k]; - ar[0][0].val += ndt; - ar[1][0].val += ndtt; - ar[2][0].val += ndtt * (tijk[mn][k] - 1); - ar[1][1].val += ndtt * ex; - ar[1][2].val += ndtt * ex2; - ar[0][3].val += ndt * (ex * (ex2 - 2 * (dijk[mn][k] - 2 * cij0)) - + 2 * dijk[mn][k]); - } - } - } - } + } + for (int k = 1 + kpolij[mn]; k <= kpolij[mn] + kexpij[mn]; ++k) { + cij0 = cijk[mn][k] * delp[2]; + eij0 = eijk[mn][k] * del; + ndt = xijf * nijk[mn][k] * delp[dijk[mn][k]] + * Math.exp(cij0 + eij0 + gijk[mn][k] + tijk[mn][k] * lntau); + ex = dijk[mn][k] + 2 * cij0 + eij0; + ex2 = (ex * ex - dijk[mn][k] + 2 * cij0); + ar[0][1].val += ndt * ex; + ar[0][2].val += ndt * ex2; + if (itau > 0) { + ndtt = ndt * tijk[mn][k]; + ar[0][0].val += ndt; + ar[1][0].val += ndtt; + ar[2][0].val += ndtt * (tijk[mn][k] - 1); + ar[1][1].val += ndtt * ex; + ar[1][2].val += ndtt * ex2; + ar[0][3].val += + ndt * (ex * (ex2 - 2 * (dijk[mn][k] - 2 * cij0)) + 2 * dijk[mn][k]); } + } } + } } + } } + } - /** - * @param lntau ... - * @param x .... - */ - static void tTermsGERG(double lntau, double[] x) { - // Private Sub tTermsGERG(lntau, x) - - // Calculate temperature dependent parts of the GERG-2008 equation of state + /** + * @param lntau ... + * @param x .... + */ + void tTermsGERG(double lntau, double[] x) { + // Private Sub tTermsGERG(lntau, x) - int i, mn; - double[] taup0 = new double[12 + 1]; + // Calculate temperature dependent parts of the GERG-2008 equation of state - i = 5; // Use propane to get exponents for short form of EOS - for (int k = 1; k <= kpol[i] + kexp[i]; ++k) { - taup0[k] = Math.exp(toik[i][k] * lntau); - } - for (i = 1; i <= NcGERG; ++i) { - if (x[i] > epsilon) { - if (i > 4 && i != 15 && i != 18 && i != 20) { - for (int k = 1; k <= kpol[i] + kexp[i]; ++k) { - taup[i][k] = noik[i][k] * taup0[k]; - } - } else { - for (int k = 1; k <= kpol[i] + kexp[i]; ++k) { - taup[i][k] = noik[i][k] * Math.exp(toik[i][k] * lntau); - } - } - } - } + int i; + int mn; + double[] taup0 = new double[12 + 1]; - for (i = 1; i <= NcGERG - 1; ++i) { - if (x[i] > epsilon) { - for (int j = i + 1; j <= NcGERG; ++j) { - if (x[j] > epsilon) { - mn = mNumb[i][j]; - if (mn >= 0) { - for (int k = 1; k <= kpolij[mn]; ++k) { - taupijk[mn][k] = nijk[mn][k] * Math.exp(tijk[mn][k] * lntau); - } - } - } - } - } - } + i = 5; // Use propane to get exponents for short form of EOS + for (int k = 1; k <= kpol[i] + kexp[i]; ++k) { + taup0[k] = Math.exp(toik[i][k] * lntau); } - - /** - * @param x composition - * @param Tcx temperature in Kelvin - * @param Dcx density - */ - static void PseudoCriticalPointGERG(double[] x, doubleW Tcx, doubleW Dcx) { - // PseudoCriticalPointGERG(x, Tcx, Dcx) - - // Calculate a pseudo critical point as the mole fraction average of the - // critical temperatures and critical volumes - - double Vcx; - Tcx.val = 0; - Vcx = 0; - Dcx.val = 0; - for (int i = 1; i <= NcGERG; ++i) { - Tcx.val = Tcx.val + x[i] * Tc[i]; - Vcx = Vcx + x[i] / Dc[i]; - } - if (Vcx > epsilon) { - Dcx.val = 1 / Vcx; + for (i = 1; i <= NcGERG; ++i) { + if (x[i] > epsilon) { + if (i > 4 && i != 15 && i != 18 && i != 20) { + for (int k = 1; k <= kpol[i] + kexp[i]; ++k) { + taup[i][k] = noik[i][k] * taup0[k]; + } + } else { + for (int k = 1; k <= kpol[i] + kexp[i]; ++k) { + taup[i][k] = noik[i][k] * Math.exp(toik[i][k] * lntau); + } } + } } - // The following routine must be called once before any other routine. - /** - *

- * SetupGERG. - *

- */ - public static void SetupGERG() { - // Initialize all the constants and parameters in the GERG-2008 model. - // Some values are modified for calculations that do not depend on T, D, and x in order to - // speed up the program. - - double o13, Rs, Rsr; - double[][] bijk = new double[MaxMdl + 1][MaxTrmM + 1]; - double T0, d0; - - RGERG = 8.314472; - Rs = 8.31451; - Rsr = Rs / RGERG; - o13 = 1.0 / 3.0; - - for (int i = 1; i <= MaxFlds; ++i) { - xold[i] = 0; - } - Told = 0; - - // Molar masses [g/mol] - MMiGERG[1] = 16.04246; // Methane - MMiGERG[2] = 28.0134; // Nitrogen - MMiGERG[3] = 44.0095; // Carbon dioxide - MMiGERG[4] = 30.06904; // Ethane - MMiGERG[5] = 44.09562; // Propane - MMiGERG[6] = 58.1222; // Isobutane - MMiGERG[7] = 58.1222; // n-Butane - MMiGERG[8] = 72.14878; // Isopentane - MMiGERG[9] = 72.14878; // n-Pentane - MMiGERG[10] = 86.17536; // Hexane - MMiGERG[11] = 100.20194; // Heptane - MMiGERG[12] = 114.22852; // Octane - MMiGERG[13] = 128.2551; // Nonane - MMiGERG[14] = 142.28168; // Decane - MMiGERG[15] = 2.01588; // Hydrogen - MMiGERG[16] = 31.9988; // Oxygen - MMiGERG[17] = 28.0101; // Carbon monoxide - MMiGERG[18] = 18.01528; // Water - MMiGERG[19] = 34.08088; // Hydrogen sulfide - MMiGERG[20] = 4.002602; // Helium - MMiGERG[21] = 39.948; // Argon - - // Number of polynomial and exponential terms - for (int i = 1; i <= MaxFlds; ++i) { - kpol[i] = 6; - kexp[i] = 6; - } - kexp[1] = 18; - kexp[2] = 18; - kexp[4] = 18; - kpol[3] = 4; - kexp[3] = 18; - kpol[15] = 5; - kexp[15] = 9; - kpol[18] = 7; - kexp[18] = 9; - kpol[20] = 4; - kexp[20] = 8; - kpolij[1] = 2; - kexpij[1] = 10; - kpolij[2] = 5; - kexpij[2] = 4; - kpolij[3] = 2; - kexpij[3] = 7; - kpolij[4] = 3; - kexpij[4] = 3; - kpolij[5] = 2; - kexpij[5] = 4; - kpolij[6] = 3; - kexpij[6] = 3; - kpolij[7] = 4; - kexpij[7] = 0; - kpolij[10] = 10; - kexpij[10] = 0; - - // Critical densities [mol/l] - Dc[1] = 10.139342719; - Dc[2] = 11.1839; - Dc[3] = 10.624978698; - Dc[4] = 6.87085454; - Dc[5] = 5.000043088; - Dc[6] = 3.86014294; - Dc[7] = 3.920016792; - Dc[8] = 3.271; - Dc[9] = 3.215577588; - Dc[10] = 2.705877875; - Dc[11] = 2.315324434; - Dc[12] = 2.056404127; - Dc[13] = 1.81; - Dc[14] = 1.64; - Dc[15] = 14.94; - Dc[16] = 13.63; - Dc[17] = 10.85; - Dc[18] = 17.87371609; - Dc[19] = 10.19; - Dc[20] = 17.399; - Dc[21] = 13.407429659; - - // Critical temperatures [K] - Tc[1] = 190.564; - Tc[2] = 126.192; - Tc[3] = 304.1282; - Tc[4] = 305.322; - Tc[5] = 369.825; - Tc[6] = 407.817; - Tc[7] = 425.125; - Tc[8] = 460.35; - Tc[9] = 469.7; - Tc[10] = 507.82; - Tc[11] = 540.13; - Tc[12] = 569.32; - Tc[13] = 594.55; - Tc[14] = 617.7; - Tc[15] = 33.19; - Tc[16] = 154.595; - Tc[17] = 132.86; - Tc[18] = 647.096; - Tc[19] = 373.1; - Tc[20] = 5.1953; - Tc[21] = 150.687; - - // Exponents in pure fluid equations - for (int i = 1; i <= MaxFlds; ++i) { - Vc3[i] = 1 / Math.pow(Dc[i], o13) / 2; - Tc2[i] = Math.sqrt(Tc[i]); - coik[i][1] = 0; - doik[i][1] = 1; - toik[i][1] = 0.25; - coik[i][2] = 0; - doik[i][2] = 1; - toik[i][2] = 1.125; - coik[i][3] = 0; - doik[i][3] = 1; - toik[i][3] = 1.5; - coik[i][4] = 0; - doik[i][4] = 2; - toik[i][4] = 1.375; - coik[i][5] = 0; - doik[i][5] = 3; - toik[i][5] = 0.25; - coik[i][6] = 0; - doik[i][6] = 7; - toik[i][6] = 0.875; - coik[i][7] = 1; - doik[i][7] = 2; - toik[i][7] = 0.625; - coik[i][8] = 1; - doik[i][8] = 5; - toik[i][8] = 1.75; - coik[i][9] = 2; - doik[i][9] = 1; - toik[i][9] = 3.625; - coik[i][10] = 2; - doik[i][10] = 4; - toik[i][10] = 3.625; - coik[i][11] = 3; - doik[i][11] = 3; - toik[i][11] = 14.5; - coik[i][12] = 3; - doik[i][12] = 4; - toik[i][12] = 12; - } - for (int i = 1; i <= 4; ++i) { - if (i != 3) { - coik[i][1] = 0; - doik[i][1] = 1; - toik[i][1] = 0.125; - coik[i][2] = 0; - doik[i][2] = 1; - toik[i][2] = 1.125; - coik[i][3] = 0; - doik[i][3] = 2; - toik[i][3] = 0.375; - coik[i][4] = 0; - doik[i][4] = 2; - toik[i][4] = 1.125; - coik[i][5] = 0; - doik[i][5] = 4; - toik[i][5] = 0.625; - coik[i][6] = 0; - doik[i][6] = 4; - toik[i][6] = 1.5; - coik[i][7] = 1; - doik[i][7] = 1; - toik[i][7] = 0.625; - coik[i][8] = 1; - doik[i][8] = 1; - toik[i][8] = 2.625; - coik[i][9] = 1; - doik[i][9] = 1; - toik[i][9] = 2.75; - coik[i][10] = 1; - doik[i][10] = 2; - toik[i][10] = 2.125; - coik[i][11] = 1; - doik[i][11] = 3; - toik[i][11] = 2; - coik[i][12] = 1; - doik[i][12] = 6; - toik[i][12] = 1.75; - coik[i][13] = 2; - doik[i][13] = 2; - toik[i][13] = 4.5; - coik[i][14] = 2; - doik[i][14] = 3; - toik[i][14] = 4.75; - coik[i][15] = 2; - doik[i][15] = 3; - toik[i][15] = 5; - coik[i][16] = 2; - doik[i][16] = 4; - toik[i][16] = 4; - coik[i][17] = 2; - doik[i][17] = 4; - toik[i][17] = 4.5; - coik[i][18] = 3; - doik[i][18] = 2; - toik[i][18] = 7.5; - coik[i][19] = 3; - doik[i][19] = 3; - toik[i][19] = 14; - coik[i][20] = 3; - doik[i][20] = 4; - toik[i][20] = 11.5; - coik[i][21] = 6; - doik[i][21] = 5; - toik[i][21] = 26; - coik[i][22] = 6; - doik[i][22] = 6; - toik[i][22] = 28; - coik[i][23] = 6; - doik[i][23] = 6; - toik[i][23] = 30; - coik[i][24] = 6; - doik[i][24] = 7; - toik[i][24] = 16; + for (i = 1; i <= NcGERG - 1; ++i) { + if (x[i] > epsilon) { + for (int j = i + 1; j <= NcGERG; ++j) { + if (x[j] > epsilon) { + mn = mNumb[i][j]; + if (mn >= 0) { + for (int k = 1; k <= kpolij[mn]; ++k) { + taupijk[mn][k] = nijk[mn][k] * Math.exp(tijk[mn][k] * lntau); + } } + } } + } + } + } + + /** + * @param x composition + * @param Tcx temperature in Kelvin + * @param Dcx density + */ + void PseudoCriticalPointGERG(double[] x, doubleW Tcx, doubleW Dcx) { + // PseudoCriticalPointGERG(x, Tcx, Dcx) + + // Calculate a pseudo critical point as the mole fraction average of the + // critical temperatures and critical volumes + + double Vcx; + Tcx.val = 0; + Vcx = 0; + Dcx.val = 0; + for (int i = 1; i <= NcGERG; ++i) { + Tcx.val = Tcx.val + x[i] * Tc[i]; + Vcx = Vcx + x[i] / Dc[i]; + } + if (Vcx > epsilon) { + Dcx.val = 1 / Vcx; + } + } + + // The following routine must be called once before any other routine. + /** + *

+ * SetupGERG. + *

+ */ + public void SetupGERG() { + // Initialize all the constants and parameters in the GERG-2008 model. + // Some values are modified for calculations that do not depend on T, D, and x in order to + // speed up the program. + + double o13; + double Rs; + double Rsr; + double[][] bijk = new double[MaxMdl + 1][MaxTrmM + 1]; + double T0; + + double d0; + // ThermodynamicConstantsInterface.R + RGERG = 8.314472; + Rs = 8.31451; + Rsr = Rs / RGERG; + o13 = 1.0 / 3.0; + + for (int i = 1; i <= MaxFlds; ++i) { + xold[i] = 0; + } + Told = 0; + + // Molar masses [g/mol] + MMiGERG[1] = 16.04246; // Methane + MMiGERG[2] = 28.0134; // Nitrogen + MMiGERG[3] = 44.0095; // Carbon dioxide + MMiGERG[4] = 30.06904; // Ethane + MMiGERG[5] = 44.09562; // Propane + MMiGERG[6] = 58.1222; // Isobutane + MMiGERG[7] = 58.1222; // n-Butane + MMiGERG[8] = 72.14878; // Isopentane + MMiGERG[9] = 72.14878; // n-Pentane + MMiGERG[10] = 86.17536; // Hexane + MMiGERG[11] = 100.20194; // Heptane + MMiGERG[12] = 114.22852; // Octane + MMiGERG[13] = 128.2551; // Nonane + MMiGERG[14] = 142.28168; // Decane + MMiGERG[15] = 2.01588; // Hydrogen + MMiGERG[16] = 31.9988; // Oxygen + MMiGERG[17] = 28.0101; // Carbon monoxide + MMiGERG[18] = 18.01528; // Water + MMiGERG[19] = 34.08088; // Hydrogen sulfide + MMiGERG[20] = 4.002602; // Helium + MMiGERG[21] = 39.948; // Argon + + // Number of polynomial and exponential terms + for (int i = 1; i <= MaxFlds; ++i) { + kpol[i] = 6; + kexp[i] = 6; + } + kexp[1] = 18; + kexp[2] = 18; + kexp[4] = 18; + kpol[3] = 4; + kexp[3] = 18; + kpol[15] = 5; + kexp[15] = 9; + kpol[18] = 7; + kexp[18] = 9; + kpol[20] = 4; + kexp[20] = 8; + kpolij[1] = 2; + kexpij[1] = 10; + kpolij[2] = 5; + kexpij[2] = 4; + kpolij[3] = 2; + kexpij[3] = 7; + kpolij[4] = 3; + kexpij[4] = 3; + kpolij[5] = 2; + kexpij[5] = 4; + kpolij[6] = 3; + kexpij[6] = 3; + kpolij[7] = 4; + kexpij[7] = 0; + kpolij[10] = 10; + kexpij[10] = 0; + + // Critical densities [mol/l] + Dc[1] = 10.139342719; + Dc[2] = 11.1839; + Dc[3] = 10.624978698; + Dc[4] = 6.87085454; + Dc[5] = 5.000043088; + Dc[6] = 3.86014294; + Dc[7] = 3.920016792; + Dc[8] = 3.271; + Dc[9] = 3.215577588; + Dc[10] = 2.705877875; + Dc[11] = 2.315324434; + Dc[12] = 2.056404127; + Dc[13] = 1.81; + Dc[14] = 1.64; + Dc[15] = 14.94; + Dc[16] = 13.63; + Dc[17] = 10.85; + Dc[18] = 17.87371609; + Dc[19] = 10.19; + Dc[20] = 17.399; + Dc[21] = 13.407429659; + + // Critical temperatures [K] + Tc[1] = 190.564; + Tc[2] = 126.192; + Tc[3] = 304.1282; + Tc[4] = 305.322; + Tc[5] = 369.825; + Tc[6] = 407.817; + Tc[7] = 425.125; + Tc[8] = 460.35; + Tc[9] = 469.7; + Tc[10] = 507.82; + Tc[11] = 540.13; + Tc[12] = 569.32; + Tc[13] = 594.55; + Tc[14] = 617.7; + Tc[15] = 33.19; + Tc[16] = 154.595; + Tc[17] = 132.86; + Tc[18] = 647.096; + Tc[19] = 373.1; + Tc[20] = 5.1953; + Tc[21] = 150.687; + + // Exponents in pure fluid equations + for (int i = 1; i <= MaxFlds; ++i) { + Vc3[i] = 1 / Math.pow(Dc[i], o13) / 2; + Tc2[i] = Math.sqrt(Tc[i]); + coik[i][1] = 0; + doik[i][1] = 1; + toik[i][1] = 0.25; + coik[i][2] = 0; + doik[i][2] = 1; + toik[i][2] = 1.125; + coik[i][3] = 0; + doik[i][3] = 1; + toik[i][3] = 1.5; + coik[i][4] = 0; + doik[i][4] = 2; + toik[i][4] = 1.375; + coik[i][5] = 0; + doik[i][5] = 3; + toik[i][5] = 0.25; + coik[i][6] = 0; + doik[i][6] = 7; + toik[i][6] = 0.875; + coik[i][7] = 1; + doik[i][7] = 2; + toik[i][7] = 0.625; + coik[i][8] = 1; + doik[i][8] = 5; + toik[i][8] = 1.75; + coik[i][9] = 2; + doik[i][9] = 1; + toik[i][9] = 3.625; + coik[i][10] = 2; + doik[i][10] = 4; + toik[i][10] = 3.625; + coik[i][11] = 3; + doik[i][11] = 3; + toik[i][11] = 14.5; + coik[i][12] = 3; + doik[i][12] = 4; + toik[i][12] = 12; + } + for (int i = 1; i <= 4; ++i) { + if (i != 3) { + coik[i][1] = 0; + doik[i][1] = 1; + toik[i][1] = 0.125; + coik[i][2] = 0; + doik[i][2] = 1; + toik[i][2] = 1.125; + coik[i][3] = 0; + doik[i][3] = 2; + toik[i][3] = 0.375; + coik[i][4] = 0; + doik[i][4] = 2; + toik[i][4] = 1.125; + coik[i][5] = 0; + doik[i][5] = 4; + toik[i][5] = 0.625; + coik[i][6] = 0; + doik[i][6] = 4; + toik[i][6] = 1.5; + coik[i][7] = 1; + doik[i][7] = 1; + toik[i][7] = 0.625; + coik[i][8] = 1; + doik[i][8] = 1; + toik[i][8] = 2.625; + coik[i][9] = 1; + doik[i][9] = 1; + toik[i][9] = 2.75; + coik[i][10] = 1; + doik[i][10] = 2; + toik[i][10] = 2.125; + coik[i][11] = 1; + doik[i][11] = 3; + toik[i][11] = 2; + coik[i][12] = 1; + doik[i][12] = 6; + toik[i][12] = 1.75; + coik[i][13] = 2; + doik[i][13] = 2; + toik[i][13] = 4.5; + coik[i][14] = 2; + doik[i][14] = 3; + toik[i][14] = 4.75; + coik[i][15] = 2; + doik[i][15] = 3; + toik[i][15] = 5; + coik[i][16] = 2; + doik[i][16] = 4; + toik[i][16] = 4; + coik[i][17] = 2; + doik[i][17] = 4; + toik[i][17] = 4.5; + coik[i][18] = 3; + doik[i][18] = 2; + toik[i][18] = 7.5; + coik[i][19] = 3; + doik[i][19] = 3; + toik[i][19] = 14; + coik[i][20] = 3; + doik[i][20] = 4; + toik[i][20] = 11.5; + coik[i][21] = 6; + doik[i][21] = 5; + toik[i][21] = 26; + coik[i][22] = 6; + doik[i][22] = 6; + toik[i][22] = 28; + coik[i][23] = 6; + doik[i][23] = 6; + toik[i][23] = 30; + coik[i][24] = 6; + doik[i][24] = 7; + toik[i][24] = 16; + } + } - // Coefficients of pure fluid equations - // Methane - noik[1][1] = 0.57335704239162; - noik[1][2] = -1.676068752373; - noik[1][3] = 0.23405291834916; - noik[1][4] = -0.21947376343441; - noik[1][5] = 0.016369201404128; - noik[1][6] = 0.01500440638928; - noik[1][7] = 0.098990489492918; - noik[1][8] = 0.58382770929055; - noik[1][9] = -0.7478686756039; - noik[1][10] = 0.30033302857974; - noik[1][11] = 0.20985543806568; - noik[1][12] = -0.018590151133061; - noik[1][13] = -0.15782558339049; - noik[1][14] = 0.12716735220791; - noik[1][15] = -0.032019743894346; - noik[1][16] = -0.068049729364536; - noik[1][17] = 0.024291412853736; - noik[1][18] = 5.1440451639444E-03; - noik[1][19] = -0.019084949733532; - noik[1][20] = 5.5229677241291E-03; - noik[1][21] = -4.4197392976085E-03; - noik[1][22] = 0.040061416708429; - noik[1][23] = -0.033752085907575; - noik[1][24] = -2.5127658213357E-03; - // Nitrogen - noik[2][1] = 0.59889711801201; - noik[2][2] = -1.6941557480731; - noik[2][3] = 0.24579736191718; - noik[2][4] = -0.23722456755175; - noik[2][5] = 0.017954918715141; - noik[2][6] = 0.014592875720215; - noik[2][7] = 0.10008065936206; - noik[2][8] = 0.73157115385532; - noik[2][9] = -0.88372272336366; - noik[2][10] = 0.31887660246708; - noik[2][11] = 0.20766491728799; - noik[2][12] = -0.019379315454158; - noik[2][13] = -0.16936641554983; - noik[2][14] = 0.13546846041701; - noik[2][15] = -0.033066712095307; - noik[2][16] = -0.060690817018557; - noik[2][17] = 0.012797548292871; - noik[2][18] = 5.8743664107299E-03; - noik[2][19] = -0.018451951971969; - noik[2][20] = 4.7226622042472E-03; - noik[2][21] = -5.2024079680599E-03; - noik[2][22] = 0.043563505956635; - noik[2][23] = -0.036251690750939; - noik[2][24] = -2.8974026866543E-03; - // Ethane - noik[4][1] = 0.63596780450714; - noik[4][2] = -1.7377981785459; - noik[4][3] = 0.28914060926272; - noik[4][4] = -0.33714276845694; - noik[4][5] = 0.022405964699561; - noik[4][6] = 0.015715424886913; - noik[4][7] = 0.11450634253745; - noik[4][8] = 1.0612049379745; - noik[4][9] = -1.2855224439423; - noik[4][10] = 0.39414630777652; - noik[4][11] = 0.31390924682041; - noik[4][12] = -0.021592277117247; - noik[4][13] = -0.21723666564905; - noik[4][14] = -0.28999574439489; - noik[4][15] = 0.42321173025732; - noik[4][16] = 0.04643410025926; - noik[4][17] = -0.13138398329741; - noik[4][18] = 0.011492850364368; - noik[4][19] = -0.033387688429909; - noik[4][20] = 0.015183171583644; - noik[4][21] = -4.7610805647657E-03; - noik[4][22] = 0.046917166277885; - noik[4][23] = -0.039401755804649; - noik[4][24] = -3.2569956247611E-03; - // Propane - noik[5][1] = 1.0403973107358; - noik[5][2] = -2.8318404081403; - noik[5][3] = 0.84393809606294; - noik[5][4] = -0.076559591850023; - noik[5][5] = 0.09469737305728; - noik[5][6] = 2.4796475497006E-04; - noik[5][7] = 0.2774376042287; - noik[5][8] = -0.043846000648377; - noik[5][9] = -0.2699106478435; - noik[5][10] = -0.06931341308986; - noik[5][11] = -0.029632145981653; - noik[5][12] = 0.01404012675138; - // Isobutane - noik[6][1] = 1.04293315891; - noik[6][2] = -2.8184272548892; - noik[6][3] = 0.8617623239785; - noik[6][4] = -0.10613619452487; - noik[6][5] = 0.098615749302134; - noik[6][6] = 2.3948208682322E-04; - noik[6][7] = 0.3033000485695; - noik[6][8] = -0.041598156135099; - noik[6][9] = -0.29991937470058; - noik[6][10] = -0.080369342764109; - noik[6][11] = -0.029761373251151; - noik[6][12] = 0.01305963030314; - // n-Butane - noik[7][1] = 1.0626277411455; - noik[7][2] = -2.862095182835; - noik[7][3] = 0.88738233403777; - noik[7][4] = -0.12570581155345; - noik[7][5] = 0.10286308708106; - noik[7][6] = 2.5358040602654E-04; - noik[7][7] = 0.32325200233982; - noik[7][8] = -0.037950761057432; - noik[7][9] = -0.32534802014452; - noik[7][10] = -0.079050969051011; - noik[7][11] = -0.020636720547775; - noik[7][12] = 0.005705380933475; - // Isopentane - noik[8][1] = 1.0963; - noik[8][2] = -3.0402; - noik[8][3] = 1.0317; - noik[8][4] = -0.1541; - noik[8][5] = 0.11535; - noik[8][6] = 0.00029809; - noik[8][7] = 0.39571; - noik[8][8] = -0.045881; - noik[8][9] = -0.35804; - noik[8][10] = -0.10107; - noik[8][11] = -0.035484; - noik[8][12] = 0.018156; - // n-Pentane - noik[9][1] = 1.0968643098001; - noik[9][2] = -2.9988888298061; - noik[9][3] = 0.99516886799212; - noik[9][4] = -0.16170708558539; - noik[9][5] = 0.11334460072775; - noik[9][6] = 2.6760595150748E-04; - noik[9][7] = 0.40979881986931; - noik[9][8] = -0.040876423083075; - noik[9][9] = -0.38169482469447; - noik[9][10] = -0.10931956843993; - noik[9][11] = -0.03207322332799; - noik[9][12] = 0.016877016216975; - // Hexane - noik[10][1] = 1.0553238013661; - noik[10][2] = -2.6120615890629; - noik[10][3] = 0.7661388296726; - noik[10][4] = -0.29770320622459; - noik[10][5] = 0.11879907733358; - noik[10][6] = 2.7922861062617E-04; - noik[10][7] = 0.46347589844105; - noik[10][8] = 0.011433196980297; - noik[10][9] = -0.48256968738131; - noik[10][10] = -0.093750558924659; - noik[10][11] = -6.7273247155994E-03; - noik[10][12] = -5.1141583585428E-03; - // Heptane - noik[11][1] = 1.0543747645262; - noik[11][2] = -2.6500681506144; - noik[11][3] = 0.81730047827543; - noik[11][4] = -0.30451391253428; - noik[11][5] = 0.122538687108; - noik[11][6] = 2.7266472743928E-04; - noik[11][7] = 0.4986582568167; - noik[11][8] = -7.1432815084176E-04; - noik[11][9] = -0.5423689552545; - noik[11][10] = -0.13801821610756; - noik[11][11] = -6.1595287380011E-03; - noik[11][12] = 4.8602510393022E-04; - // Octane - noik[12][1] = 1.0722544875633; - noik[12][2] = -2.4632951172003; - noik[12][3] = 0.65386674054928; - noik[12][4] = -0.36324974085628; - noik[12][5] = 0.12713269626764; - noik[12][6] = 3.071357277793E-04; - noik[12][7] = 0.5265685698754; - noik[12][8] = 0.019362862857653; - noik[12][9] = -0.58939426849155; - noik[12][10] = -0.14069963991934; - noik[12][11] = -7.8966330500036E-03; - noik[12][12] = 3.3036597968109E-03; - // Nonane - noik[13][1] = 1.1151; - noik[13][2] = -2.702; - noik[13][3] = 0.83416; - noik[13][4] = -0.38828; - noik[13][5] = 0.1376; - noik[13][6] = 0.00028185; - noik[13][7] = 0.62037; - noik[13][8] = 0.015847; - noik[13][9] = -0.61726; - noik[13][10] = -0.15043; - noik[13][11] = -0.012982; - noik[13][12] = 0.0044325; - // Decane - noik[14][1] = 1.0461; - noik[14][2] = -2.4807; - noik[14][3] = 0.74372; - noik[14][4] = -0.52579; - noik[14][5] = 0.15315; - noik[14][6] = 0.00032865; - noik[14][7] = 0.84178; - noik[14][8] = 0.055424; - noik[14][9] = -0.73555; - noik[14][10] = -0.18507; - noik[14][11] = -0.020775; - noik[14][12] = 0.012335; - // Oxygen - noik[16][1] = 0.88878286369701; - noik[16][2] = -2.4879433312148; - noik[16][3] = 0.59750190775886; - noik[16][4] = 9.6501817061881E-03; - noik[16][5] = 0.07197042871277; - noik[16][6] = 2.2337443000195E-04; - noik[16][7] = 0.18558686391474; - noik[16][8] = -0.03812936803576; - noik[16][9] = -0.15352245383006; - noik[16][10] = -0.026726814910919; - noik[16][11] = -0.025675298677127; - noik[16][12] = 9.5714302123668E-03; - // Carbon monoxide - noik[17][1] = 0.90554; - noik[17][2] = -2.4515; - noik[17][3] = 0.53149; - noik[17][4] = 0.024173; - noik[17][5] = 0.072156; - noik[17][6] = 0.00018818; - noik[17][7] = 0.19405; - noik[17][8] = -0.043268; - noik[17][9] = -0.12778; - noik[17][10] = -0.027896; - noik[17][11] = -0.034154; - noik[17][12] = 0.016329; - // Hydrogen sulfide - noik[19][1] = 0.87641; - noik[19][2] = -2.0367; - noik[19][3] = 0.21634; - noik[19][4] = -0.050199; - noik[19][5] = 0.066994; - noik[19][6] = 0.00019076; - noik[19][7] = 0.20227; - noik[19][8] = -0.0045348; - noik[19][9] = -0.2223; - noik[19][10] = -0.034714; - noik[19][11] = -0.014885; - noik[19][12] = 0.0074154; - // Argon - noik[21][1] = 0.85095714803969; - noik[21][2] = -2.400322294348; - noik[21][3] = 0.54127841476466; - noik[21][4] = 0.016919770692538; - noik[21][5] = 0.068825965019035; - noik[21][6] = 2.1428032815338E-04; - noik[21][7] = 0.17429895321992; - noik[21][8] = -0.033654495604194; - noik[21][9] = -0.13526799857691; - noik[21][10] = -0.016387350791552; - noik[21][11] = -0.024987666851475; - noik[21][12] = 8.8769204815709E-03; - // Carbon dioxide - coik[3][1] = 0; - doik[3][1] = 1; - toik[3][1] = 0; - noik[3][1] = 0.52646564804653; - coik[3][2] = 0; - doik[3][2] = 1; - toik[3][2] = 1.25; - noik[3][2] = -1.4995725042592; - coik[3][3] = 0; - doik[3][3] = 2; - toik[3][3] = 1.625; - noik[3][3] = 0.27329786733782; - coik[3][4] = 0; - doik[3][4] = 3; - toik[3][4] = 0.375; - noik[3][4] = 0.12949500022786; - coik[3][5] = 1; - doik[3][5] = 3; - toik[3][5] = 0.375; - noik[3][5] = 0.15404088341841; - coik[3][6] = 1; - doik[3][6] = 3; - toik[3][6] = 1.375; - noik[3][6] = -0.58186950946814; - coik[3][7] = 1; - doik[3][7] = 4; - toik[3][7] = 1.125; - noik[3][7] = -0.18022494838296; - coik[3][8] = 1; - doik[3][8] = 5; - toik[3][8] = 1.375; - noik[3][8] = -0.095389904072812; - coik[3][9] = 1; - doik[3][9] = 6; - toik[3][9] = 0.125; - noik[3][9] = -8.0486819317679E-03; - coik[3][10] = 1; - doik[3][10] = 6; - toik[3][10] = 1.625; - noik[3][10] = -0.03554775127309; - coik[3][11] = 2; - doik[3][11] = 1; - toik[3][11] = 3.75; - noik[3][11] = -0.28079014882405; - coik[3][12] = 2; - doik[3][12] = 4; - toik[3][12] = 3.5; - noik[3][12] = -0.082435890081677; - coik[3][13] = 3; - doik[3][13] = 1; - toik[3][13] = 7.5; - noik[3][13] = 0.010832427979006; - coik[3][14] = 3; - doik[3][14] = 1; - toik[3][14] = 8; - noik[3][14] = -6.7073993161097E-03; - coik[3][15] = 3; - doik[3][15] = 3; - toik[3][15] = 6; - noik[3][15] = -4.6827907600524E-03; - coik[3][16] = 3; - doik[3][16] = 3; - toik[3][16] = 16; - noik[3][16] = -0.028359911832177; - coik[3][17] = 3; - doik[3][17] = 4; - toik[3][17] = 11; - noik[3][17] = 0.019500174744098; - coik[3][18] = 5; - doik[3][18] = 5; - toik[3][18] = 24; - noik[3][18] = -0.21609137507166; - coik[3][19] = 5; - doik[3][19] = 5; - toik[3][19] = 26; - noik[3][19] = 0.43772794926972; - coik[3][20] = 5; - doik[3][20] = 5; - toik[3][20] = 28; - noik[3][20] = -0.22130790113593; - coik[3][21] = 6; - doik[3][21] = 5; - toik[3][21] = 24; - noik[3][21] = 0.015190189957331; - coik[3][22] = 6; - doik[3][22] = 5; - toik[3][22] = 26; - noik[3][22] = -0.0153809489533; - // Hydrogen - coik[15][1] = 0; - doik[15][1] = 1; - toik[15][1] = 0.5; - noik[15][1] = 5.3579928451252; - coik[15][2] = 0; - doik[15][2] = 1; - toik[15][2] = 0.625; - noik[15][2] = -6.2050252530595; - coik[15][3] = 0; - doik[15][3] = 2; - toik[15][3] = 0.375; - noik[15][3] = 0.13830241327086; - coik[15][4] = 0; - doik[15][4] = 2; - toik[15][4] = 0.625; - noik[15][4] = -0.071397954896129; - coik[15][5] = 0; - doik[15][5] = 4; - toik[15][5] = 1.125; - noik[15][5] = 0.015474053959733; - coik[15][6] = 1; - doik[15][6] = 1; - toik[15][6] = 2.625; - noik[15][6] = -0.14976806405771; - coik[15][7] = 1; - doik[15][7] = 5; - toik[15][7] = 0; - noik[15][7] = -0.026368723988451; - coik[15][8] = 1; - doik[15][8] = 5; - toik[15][8] = 0.25; - noik[15][8] = 0.056681303156066; - coik[15][9] = 1; - doik[15][9] = 5; - toik[15][9] = 1.375; - noik[15][9] = -0.060063958030436; - coik[15][10] = 2; - doik[15][10] = 1; - toik[15][10] = 4; - noik[15][10] = -0.45043942027132; - coik[15][11] = 2; - doik[15][11] = 1; - toik[15][11] = 4.25; - noik[15][11] = 0.424788402445; - coik[15][12] = 3; - doik[15][12] = 2; - toik[15][12] = 5; - noik[15][12] = -0.021997640827139; - coik[15][13] = 3; - doik[15][13] = 5; - toik[15][13] = 8; - noik[15][13] = -0.01049952137453; - coik[15][14] = 5; - doik[15][14] = 1; - toik[15][14] = 8; - noik[15][14] = -2.8955902866816E-03; - // Water - coik[18][1] = 0; - doik[18][1] = 1; - toik[18][1] = 0.5; - noik[18][1] = 0.82728408749586; - coik[18][2] = 0; - doik[18][2] = 1; - toik[18][2] = 1.25; - noik[18][2] = -1.8602220416584; - coik[18][3] = 0; - doik[18][3] = 1; - toik[18][3] = 1.875; - noik[18][3] = -1.1199009613744; - coik[18][4] = 0; - doik[18][4] = 2; - toik[18][4] = 0.125; - noik[18][4] = 0.15635753976056; - coik[18][5] = 0; - doik[18][5] = 2; - toik[18][5] = 1.5; - noik[18][5] = 0.87375844859025; - coik[18][6] = 0; - doik[18][6] = 3; - toik[18][6] = 1; - noik[18][6] = -0.36674403715731; - coik[18][7] = 0; - doik[18][7] = 4; - toik[18][7] = 0.75; - noik[18][7] = 0.053987893432436; - coik[18][8] = 1; - doik[18][8] = 1; - toik[18][8] = 1.5; - noik[18][8] = 1.0957690214499; - coik[18][9] = 1; - doik[18][9] = 5; - toik[18][9] = 0.625; - noik[18][9] = 0.053213037828563; - coik[18][10] = 1; - doik[18][10] = 5; - toik[18][10] = 2.625; - noik[18][10] = 0.013050533930825; - coik[18][11] = 2; - doik[18][11] = 1; - toik[18][11] = 5; - noik[18][11] = -0.41079520434476; - coik[18][12] = 2; - doik[18][12] = 2; - toik[18][12] = 4; - noik[18][12] = 0.1463744334412; - coik[18][13] = 2; - doik[18][13] = 4; - toik[18][13] = 4.5; - noik[18][13] = -0.055726838623719; - coik[18][14] = 3; - doik[18][14] = 4; - toik[18][14] = 3; - noik[18][14] = -0.0112017741438; - coik[18][15] = 5; - doik[18][15] = 1; - toik[18][15] = 4; - noik[18][15] = -6.6062758068099E-03; - coik[18][16] = 5; - doik[18][16] = 1; - toik[18][16] = 6; - noik[18][16] = 4.6918522004538E-03; - // Helium - coik[20][1] = 0; - doik[20][1] = 1; - toik[20][1] = 0; - noik[20][1] = -0.45579024006737; - coik[20][2] = 0; - doik[20][2] = 1; - toik[20][2] = 0.125; - noik[20][2] = 1.2516390754925; - coik[20][3] = 0; - doik[20][3] = 1; - toik[20][3] = 0.75; - noik[20][3] = -1.5438231650621; - coik[20][4] = 0; - doik[20][4] = 4; - toik[20][4] = 1; - noik[20][4] = 0.020467489707221; - coik[20][5] = 1; - doik[20][5] = 1; - toik[20][5] = 0.75; - noik[20][5] = -0.34476212380781; - coik[20][6] = 1; - doik[20][6] = 3; - toik[20][6] = 2.625; - noik[20][6] = -0.020858459512787; - coik[20][7] = 1; - doik[20][7] = 5; - toik[20][7] = 0.125; - noik[20][7] = 0.016227414711778; - coik[20][8] = 1; - doik[20][8] = 5; - toik[20][8] = 1.25; - noik[20][8] = -0.057471818200892; - coik[20][9] = 1; - doik[20][9] = 5; - toik[20][9] = 2; - noik[20][9] = 0.019462416430715; - coik[20][10] = 2; - doik[20][10] = 2; - toik[20][10] = 1; - noik[20][10] = -0.03329568012302; - coik[20][11] = 3; - doik[20][11] = 1; - toik[20][11] = 4.5; - noik[20][11] = -0.010863577372367; - coik[20][12] = 3; - doik[20][12] = 2; - toik[20][12] = 5; - noik[20][12] = -0.022173365245954; - - // Exponents in mixture equations - // Methane-Nitrogen - dijk[3][1] = 1; - tijk[3][1] = 0; - cijk[3][1] = 0; - eijk[3][1] = 0; - bijk[3][1] = 0; - gijk[3][1] = 0; - nijk[3][1] = -9.8038985517335E-03; - dijk[3][2] = 4; - tijk[3][2] = 1.85; - cijk[3][2] = 0; - eijk[3][2] = 0; - bijk[3][2] = 0; - gijk[3][2] = 0; - nijk[3][2] = 4.2487270143005E-04; - dijk[3][3] = 1; - tijk[3][3] = 7.85; - cijk[3][3] = 1; - eijk[3][3] = 0.5; - bijk[3][3] = 1; - gijk[3][3] = 0.5; - nijk[3][3] = -0.034800214576142; - dijk[3][4] = 2; - tijk[3][4] = 5.4; - cijk[3][4] = 1; - eijk[3][4] = 0.5; - bijk[3][4] = 1; - gijk[3][4] = 0.5; - nijk[3][4] = -0.13333813013896; - dijk[3][5] = 2; - tijk[3][5] = 0; - cijk[3][5] = 0.25; - eijk[3][5] = 0.5; - bijk[3][5] = 2.5; - gijk[3][5] = 0.5; - nijk[3][5] = -0.011993694974627; - dijk[3][6] = 2; - tijk[3][6] = 0.75; - cijk[3][6] = 0; - eijk[3][6] = 0.5; - bijk[3][6] = 3; - gijk[3][6] = 0.5; - nijk[3][6] = 0.069243379775168; - dijk[3][7] = 2; - tijk[3][7] = 2.8; - cijk[3][7] = 0; - eijk[3][7] = 0.5; - bijk[3][7] = 3; - gijk[3][7] = 0.5; - nijk[3][7] = -0.31022508148249; - dijk[3][8] = 2; - tijk[3][8] = 4.45; - cijk[3][8] = 0; - eijk[3][8] = 0.5; - bijk[3][8] = 3; - gijk[3][8] = 0.5; - nijk[3][8] = 0.24495491753226; - dijk[3][9] = 3; - tijk[3][9] = 4.25; - cijk[3][9] = 0; - eijk[3][9] = 0.5; - bijk[3][9] = 3; - gijk[3][9] = 0.5; - nijk[3][9] = 0.22369816716981; - // Methane-Carbon dioxide - dijk[4][1] = 1; - tijk[4][1] = 2.6; - cijk[4][1] = 0; - eijk[4][1] = 0; - bijk[4][1] = 0; - gijk[4][1] = 0; - nijk[4][1] = -0.10859387354942; - dijk[4][2] = 2; - tijk[4][2] = 1.95; - cijk[4][2] = 0; - eijk[4][2] = 0; - bijk[4][2] = 0; - gijk[4][2] = 0; - nijk[4][2] = 0.080228576727389; - dijk[4][3] = 3; - tijk[4][3] = 0; - cijk[4][3] = 0; - eijk[4][3] = 0; - bijk[4][3] = 0; - gijk[4][3] = 0; - nijk[4][3] = -9.3303985115717E-03; - dijk[4][4] = 1; - tijk[4][4] = 3.95; - cijk[4][4] = 1; - eijk[4][4] = 0.5; - bijk[4][4] = 1; - gijk[4][4] = 0.5; - nijk[4][4] = 0.040989274005848; - dijk[4][5] = 2; - tijk[4][5] = 7.95; - cijk[4][5] = 0.5; - eijk[4][5] = 0.5; - bijk[4][5] = 2; - gijk[4][5] = 0.5; - nijk[4][5] = -0.24338019772494; - dijk[4][6] = 3; - tijk[4][6] = 8; - cijk[4][6] = 0; - eijk[4][6] = 0.5; - bijk[4][6] = 3; - gijk[4][6] = 0.5; - nijk[4][6] = 0.23855347281124; - // Methane-Ethane - dijk[1][1] = 3; - tijk[1][1] = 0.65; - cijk[1][1] = 0; - eijk[1][1] = 0; - bijk[1][1] = 0; - gijk[1][1] = 0; - nijk[1][1] = -8.0926050298746E-04; - dijk[1][2] = 4; - tijk[1][2] = 1.55; - cijk[1][2] = 0; - eijk[1][2] = 0; - bijk[1][2] = 0; - gijk[1][2] = 0; - nijk[1][2] = -7.5381925080059E-04; - dijk[1][3] = 1; - tijk[1][3] = 3.1; - cijk[1][3] = 1; - eijk[1][3] = 0.5; - bijk[1][3] = 1; - gijk[1][3] = 0.5; - nijk[1][3] = -0.041618768891219; - dijk[1][4] = 2; - tijk[1][4] = 5.9; - cijk[1][4] = 1; - eijk[1][4] = 0.5; - bijk[1][4] = 1; - gijk[1][4] = 0.5; - nijk[1][4] = -0.23452173681569; - dijk[1][5] = 2; - tijk[1][5] = 7.05; - cijk[1][5] = 1; - eijk[1][5] = 0.5; - bijk[1][5] = 1; - gijk[1][5] = 0.5; - nijk[1][5] = 0.14003840584586; - dijk[1][6] = 2; - tijk[1][6] = 3.35; - cijk[1][6] = 0.875; - eijk[1][6] = 0.5; - bijk[1][6] = 1.25; - gijk[1][6] = 0.5; - nijk[1][6] = 0.063281744807738; - dijk[1][7] = 2; - tijk[1][7] = 1.2; - cijk[1][7] = 0.75; - eijk[1][7] = 0.5; - bijk[1][7] = 1.5; - gijk[1][7] = 0.5; - nijk[1][7] = -0.034660425848809; - dijk[1][8] = 2; - tijk[1][8] = 5.8; - cijk[1][8] = 0.5; - eijk[1][8] = 0.5; - bijk[1][8] = 2; - gijk[1][8] = 0.5; - nijk[1][8] = -0.23918747334251; - dijk[1][9] = 2; - tijk[1][9] = 2.7; - cijk[1][9] = 0; - eijk[1][9] = 0.5; - bijk[1][9] = 3; - gijk[1][9] = 0.5; - nijk[1][9] = 1.9855255066891E-03; - dijk[1][10] = 3; - tijk[1][10] = 0.45; - cijk[1][10] = 0; - eijk[1][10] = 0.5; - bijk[1][10] = 3; - gijk[1][10] = 0.5; - nijk[1][10] = 6.1777746171555; - dijk[1][11] = 3; - tijk[1][11] = 0.55; - cijk[1][11] = 0; - eijk[1][11] = 0.5; - bijk[1][11] = 3; - gijk[1][11] = 0.5; - nijk[1][11] = -6.9575358271105; - dijk[1][12] = 3; - tijk[1][12] = 1.95; - cijk[1][12] = 0; - eijk[1][12] = 0.5; - bijk[1][12] = 3; - gijk[1][12] = 0.5; - nijk[1][12] = 1.0630185306388; - // Methane-Propane - dijk[2][1] = 3; - tijk[2][1] = 1.85; - cijk[2][1] = 0; - eijk[2][1] = 0; - bijk[2][1] = 0; - gijk[2][1] = 0; - nijk[2][1] = 0.013746429958576; - dijk[2][2] = 3; - tijk[2][2] = 3.95; - cijk[2][2] = 0; - eijk[2][2] = 0; - bijk[2][2] = 0; - gijk[2][2] = 0; - nijk[2][2] = -7.4425012129552E-03; - dijk[2][3] = 4; - tijk[2][3] = 0; - cijk[2][3] = 0; - eijk[2][3] = 0; - bijk[2][3] = 0; - gijk[2][3] = 0; - nijk[2][3] = -4.5516600213685E-03; - dijk[2][4] = 4; - tijk[2][4] = 1.85; - cijk[2][4] = 0; - eijk[2][4] = 0; - bijk[2][4] = 0; - gijk[2][4] = 0; - nijk[2][4] = -5.4546603350237E-03; - dijk[2][5] = 4; - tijk[2][5] = 3.85; - cijk[2][5] = 0; - eijk[2][5] = 0; - bijk[2][5] = 0; - gijk[2][5] = 0; - nijk[2][5] = 2.3682016824471E-03; - dijk[2][6] = 1; - tijk[2][6] = 5.25; - cijk[2][6] = 0.25; - eijk[2][6] = 0.5; - bijk[2][6] = 0.75; - gijk[2][6] = 0.5; - nijk[2][6] = 0.18007763721438; - dijk[2][7] = 1; - tijk[2][7] = 3.85; - cijk[2][7] = 0.25; - eijk[2][7] = 0.5; - bijk[2][7] = 1; - gijk[2][7] = 0.5; - nijk[2][7] = -0.44773942932486; - dijk[2][8] = 1; - tijk[2][8] = 0.2; - cijk[2][8] = 0; - eijk[2][8] = 0.5; - bijk[2][8] = 2; - gijk[2][8] = 0.5; - nijk[2][8] = 0.0193273748882; - dijk[2][9] = 2; - tijk[2][9] = 6.5; - cijk[2][9] = 0; - eijk[2][9] = 0.5; - bijk[2][9] = 3; - gijk[2][9] = 0.5; - nijk[2][9] = -0.30632197804624; - // Nitrogen-Carbon dioxide - dijk[5][1] = 2; - tijk[5][1] = 1.85; - cijk[5][1] = 0; - eijk[5][1] = 0; - bijk[5][1] = 0; - gijk[5][1] = 0; - nijk[5][1] = 0.28661625028399; - dijk[5][2] = 3; - tijk[5][2] = 1.4; - cijk[5][2] = 0; - eijk[5][2] = 0; - bijk[5][2] = 0; - gijk[5][2] = 0; - nijk[5][2] = -0.10919833861247; - dijk[5][3] = 1; - tijk[5][3] = 3.2; - cijk[5][3] = 0.25; - eijk[5][3] = 0.5; - bijk[5][3] = 0.75; - gijk[5][3] = 0.5; - nijk[5][3] = -1.137403208227; - dijk[5][4] = 1; - tijk[5][4] = 2.5; - cijk[5][4] = 0.25; - eijk[5][4] = 0.5; - bijk[5][4] = 1; - gijk[5][4] = 0.5; - nijk[5][4] = 0.76580544237358; - dijk[5][5] = 1; - tijk[5][5] = 8; - cijk[5][5] = 0; - eijk[5][5] = 0.5; - bijk[5][5] = 2; - gijk[5][5] = 0.5; - nijk[5][5] = 4.2638000926819E-03; - dijk[5][6] = 2; - tijk[5][6] = 3.75; - cijk[5][6] = 0; - eijk[5][6] = 0.5; - bijk[5][6] = 3; - gijk[5][6] = 0.5; - nijk[5][6] = 0.17673538204534; - // Nitrogen-Ethane - dijk[6][1] = 2; - tijk[6][1] = 0; - cijk[6][1] = 0; - eijk[6][1] = 0; - bijk[6][1] = 0; - gijk[6][1] = 0; - nijk[6][1] = -0.47376518126608; - dijk[6][2] = 2; - tijk[6][2] = 0.05; - cijk[6][2] = 0; - eijk[6][2] = 0; - bijk[6][2] = 0; - gijk[6][2] = 0; - nijk[6][2] = 0.48961193461001; - dijk[6][3] = 3; - tijk[6][3] = 0; - cijk[6][3] = 0; - eijk[6][3] = 0; - bijk[6][3] = 0; - gijk[6][3] = 0; - nijk[6][3] = -5.7011062090535E-03; - dijk[6][4] = 1; - tijk[6][4] = 3.65; - cijk[6][4] = 1; - eijk[6][4] = 0.5; - bijk[6][4] = 1; - gijk[6][4] = 0.5; - nijk[6][4] = -0.1996682004132; - dijk[6][5] = 2; - tijk[6][5] = 4.9; - cijk[6][5] = 1; - eijk[6][5] = 0.5; - bijk[6][5] = 1; - gijk[6][5] = 0.5; - nijk[6][5] = -0.69411103101723; - dijk[6][6] = 2; - tijk[6][6] = 4.45; - cijk[6][6] = 0.875; - eijk[6][6] = 0.5; - bijk[6][6] = 1.25; - gijk[6][6] = 0.5; - nijk[6][6] = 0.69226192739021; - // Methane-Hydrogen - dijk[7][1] = 1; - tijk[7][1] = 2; - cijk[7][1] = 0; - eijk[7][1] = 0; - bijk[7][1] = 0; - gijk[7][1] = 0; - nijk[7][1] = -0.25157134971934; - dijk[7][2] = 3; - tijk[7][2] = -1; - cijk[7][2] = 0; - eijk[7][2] = 0; - bijk[7][2] = 0; - gijk[7][2] = 0; - nijk[7][2] = -6.2203841111983E-03; - dijk[7][3] = 3; - tijk[7][3] = 1.75; - cijk[7][3] = 0; - eijk[7][3] = 0; - bijk[7][3] = 0; - gijk[7][3] = 0; - nijk[7][3] = 0.088850315184396; - dijk[7][4] = 4; - tijk[7][4] = 1.4; - cijk[7][4] = 0; - eijk[7][4] = 0; - bijk[7][4] = 0; - gijk[7][4] = 0; - nijk[7][4] = -0.035592212573239; - // Methane-n-Butane, Methane-Isobutane, Ethane-Propane, Ethane-n-Butane, - // Ethane-Isobutane, Propane-n-Butane, Propane-Isobutane, and n-Butane-Isobutane - dijk[10][1] = 1; - tijk[10][1] = 1; - cijk[10][1] = 0; - eijk[10][1] = 0; - bijk[10][1] = 0; - gijk[10][1] = 0; - nijk[10][1] = 2.5574776844118; - dijk[10][2] = 1; - tijk[10][2] = 1.55; - cijk[10][2] = 0; - eijk[10][2] = 0; - bijk[10][2] = 0; - gijk[10][2] = 0; - nijk[10][2] = -7.9846357136353; - dijk[10][3] = 1; - tijk[10][3] = 1.7; - cijk[10][3] = 0; - eijk[10][3] = 0; - bijk[10][3] = 0; - gijk[10][3] = 0; - nijk[10][3] = 4.7859131465806; - dijk[10][4] = 2; - tijk[10][4] = 0.25; - cijk[10][4] = 0; - eijk[10][4] = 0; - bijk[10][4] = 0; - gijk[10][4] = 0; - nijk[10][4] = -0.73265392369587; - dijk[10][5] = 2; - tijk[10][5] = 1.35; - cijk[10][5] = 0; - eijk[10][5] = 0; - bijk[10][5] = 0; - gijk[10][5] = 0; - nijk[10][5] = 1.3805471345312; - dijk[10][6] = 3; - tijk[10][6] = 0; - cijk[10][6] = 0; - eijk[10][6] = 0; - bijk[10][6] = 0; - gijk[10][6] = 0; - nijk[10][6] = 0.28349603476365; - dijk[10][7] = 3; - tijk[10][7] = 1.25; - cijk[10][7] = 0; - eijk[10][7] = 0; - bijk[10][7] = 0; - gijk[10][7] = 0; - nijk[10][7] = -0.49087385940425; - dijk[10][8] = 4; - tijk[10][8] = 0; - cijk[10][8] = 0; - eijk[10][8] = 0; - bijk[10][8] = 0; - gijk[10][8] = 0; - nijk[10][8] = -0.10291888921447; - dijk[10][9] = 4; - tijk[10][9] = 0.7; - cijk[10][9] = 0; - eijk[10][9] = 0; - bijk[10][9] = 0; - gijk[10][9] = 0; - nijk[10][9] = 0.11836314681968; - dijk[10][10] = 4; - tijk[10][10] = 5.4; - cijk[10][10] = 0; - eijk[10][10] = 0; - bijk[10][10] = 0; - gijk[10][10] = 0; - nijk[10][10] = 5.5527385721943E-05; - - // Generalized parameters - fij[1][2] = 1; // Methane-Nitrogen - fij[1][3] = 1; // Methane-CO2 - fij[1][4] = 1; // Methane-Ethane - fij[1][5] = 1; // Methane-Propane - fij[2][3] = 1; // Nitrogen-CO2 - fij[2][4] = 1; // Nitrogen-Ethane - fij[1][15] = 1; // Methane-Hydrogen - fij[1][6] = 0.771035405688; // Methane-Isobutane - fij[1][7] = 1; // Methane-n-Butane - fij[4][5] = 0.13042476515; // Ethane-Propane - fij[4][6] = 0.260632376098; // Ethane-Isobutane - fij[4][7] = 0.281570073085; // Ethane-n-Butane - fij[5][6] = -0.0551609771024; // Propane-Isobutane - fij[5][7] = 0.0312572600489; // Propane-n-Butane - fij[6][7] = -0.0551240293009; // Isobutane-n-Butane - - // Model numbers for binary mixtures with no excess functions (mn=-1) - for (int i = 1; i <= MaxFlds; ++i) { - mNumb[i][i] = -1; - for (int j = i + 1; j <= MaxFlds; ++j) { - fij[j][i] = fij[i][j]; - mNumb[i][j] = -1; - mNumb[j][i] = -1; - } - } + // Coefficients of pure fluid equations + // Methane + noik[1][1] = 0.57335704239162; + noik[1][2] = -1.676068752373; + noik[1][3] = 0.23405291834916; + noik[1][4] = -0.21947376343441; + noik[1][5] = 0.016369201404128; + noik[1][6] = 0.01500440638928; + noik[1][7] = 0.098990489492918; + noik[1][8] = 0.58382770929055; + noik[1][9] = -0.7478686756039; + noik[1][10] = 0.30033302857974; + noik[1][11] = 0.20985543806568; + noik[1][12] = -0.018590151133061; + noik[1][13] = -0.15782558339049; + noik[1][14] = 0.12716735220791; + noik[1][15] = -0.032019743894346; + noik[1][16] = -0.068049729364536; + noik[1][17] = 0.024291412853736; + noik[1][18] = 5.1440451639444E-03; + noik[1][19] = -0.019084949733532; + noik[1][20] = 5.5229677241291E-03; + noik[1][21] = -4.4197392976085E-03; + noik[1][22] = 0.040061416708429; + noik[1][23] = -0.033752085907575; + noik[1][24] = -2.5127658213357E-03; + // Nitrogen + noik[2][1] = 0.59889711801201; + noik[2][2] = -1.6941557480731; + noik[2][3] = 0.24579736191718; + noik[2][4] = -0.23722456755175; + noik[2][5] = 0.017954918715141; + noik[2][6] = 0.014592875720215; + noik[2][7] = 0.10008065936206; + noik[2][8] = 0.73157115385532; + noik[2][9] = -0.88372272336366; + noik[2][10] = 0.31887660246708; + noik[2][11] = 0.20766491728799; + noik[2][12] = -0.019379315454158; + noik[2][13] = -0.16936641554983; + noik[2][14] = 0.13546846041701; + noik[2][15] = -0.033066712095307; + noik[2][16] = -0.060690817018557; + noik[2][17] = 0.012797548292871; + noik[2][18] = 5.8743664107299E-03; + noik[2][19] = -0.018451951971969; + noik[2][20] = 4.7226622042472E-03; + noik[2][21] = -5.2024079680599E-03; + noik[2][22] = 0.043563505956635; + noik[2][23] = -0.036251690750939; + noik[2][24] = -2.8974026866543E-03; + // Ethane + noik[4][1] = 0.63596780450714; + noik[4][2] = -1.7377981785459; + noik[4][3] = 0.28914060926272; + noik[4][4] = -0.33714276845694; + noik[4][5] = 0.022405964699561; + noik[4][6] = 0.015715424886913; + noik[4][7] = 0.11450634253745; + noik[4][8] = 1.0612049379745; + noik[4][9] = -1.2855224439423; + noik[4][10] = 0.39414630777652; + noik[4][11] = 0.31390924682041; + noik[4][12] = -0.021592277117247; + noik[4][13] = -0.21723666564905; + noik[4][14] = -0.28999574439489; + noik[4][15] = 0.42321173025732; + noik[4][16] = 0.04643410025926; + noik[4][17] = -0.13138398329741; + noik[4][18] = 0.011492850364368; + noik[4][19] = -0.033387688429909; + noik[4][20] = 0.015183171583644; + noik[4][21] = -4.7610805647657E-03; + noik[4][22] = 0.046917166277885; + noik[4][23] = -0.039401755804649; + noik[4][24] = -3.2569956247611E-03; + // Propane + noik[5][1] = 1.0403973107358; + noik[5][2] = -2.8318404081403; + noik[5][3] = 0.84393809606294; + noik[5][4] = -0.076559591850023; + noik[5][5] = 0.09469737305728; + noik[5][6] = 2.4796475497006E-04; + noik[5][7] = 0.2774376042287; + noik[5][8] = -0.043846000648377; + noik[5][9] = -0.2699106478435; + noik[5][10] = -0.06931341308986; + noik[5][11] = -0.029632145981653; + noik[5][12] = 0.01404012675138; + // Isobutane + noik[6][1] = 1.04293315891; + noik[6][2] = -2.8184272548892; + noik[6][3] = 0.8617623239785; + noik[6][4] = -0.10613619452487; + noik[6][5] = 0.098615749302134; + noik[6][6] = 2.3948208682322E-04; + noik[6][7] = 0.3033000485695; + noik[6][8] = -0.041598156135099; + noik[6][9] = -0.29991937470058; + noik[6][10] = -0.080369342764109; + noik[6][11] = -0.029761373251151; + noik[6][12] = 0.01305963030314; + // n-Butane + noik[7][1] = 1.0626277411455; + noik[7][2] = -2.862095182835; + noik[7][3] = 0.88738233403777; + noik[7][4] = -0.12570581155345; + noik[7][5] = 0.10286308708106; + noik[7][6] = 2.5358040602654E-04; + noik[7][7] = 0.32325200233982; + noik[7][8] = -0.037950761057432; + noik[7][9] = -0.32534802014452; + noik[7][10] = -0.079050969051011; + noik[7][11] = -0.020636720547775; + noik[7][12] = 0.005705380933475; + // Isopentane + noik[8][1] = 1.0963; + noik[8][2] = -3.0402; + noik[8][3] = 1.0317; + noik[8][4] = -0.1541; + noik[8][5] = 0.11535; + noik[8][6] = 0.00029809; + noik[8][7] = 0.39571; + noik[8][8] = -0.045881; + noik[8][9] = -0.35804; + noik[8][10] = -0.10107; + noik[8][11] = -0.035484; + noik[8][12] = 0.018156; + // n-Pentane + noik[9][1] = 1.0968643098001; + noik[9][2] = -2.9988888298061; + noik[9][3] = 0.99516886799212; + noik[9][4] = -0.16170708558539; + noik[9][5] = 0.11334460072775; + noik[9][6] = 2.6760595150748E-04; + noik[9][7] = 0.40979881986931; + noik[9][8] = -0.040876423083075; + noik[9][9] = -0.38169482469447; + noik[9][10] = -0.10931956843993; + noik[9][11] = -0.03207322332799; + noik[9][12] = 0.016877016216975; + // Hexane + noik[10][1] = 1.0553238013661; + noik[10][2] = -2.6120615890629; + noik[10][3] = 0.7661388296726; + noik[10][4] = -0.29770320622459; + noik[10][5] = 0.11879907733358; + noik[10][6] = 2.7922861062617E-04; + noik[10][7] = 0.46347589844105; + noik[10][8] = 0.011433196980297; + noik[10][9] = -0.48256968738131; + noik[10][10] = -0.093750558924659; + noik[10][11] = -6.7273247155994E-03; + noik[10][12] = -5.1141583585428E-03; + // Heptane + noik[11][1] = 1.0543747645262; + noik[11][2] = -2.6500681506144; + noik[11][3] = 0.81730047827543; + noik[11][4] = -0.30451391253428; + noik[11][5] = 0.122538687108; + noik[11][6] = 2.7266472743928E-04; + noik[11][7] = 0.4986582568167; + noik[11][8] = -7.1432815084176E-04; + noik[11][9] = -0.5423689552545; + noik[11][10] = -0.13801821610756; + noik[11][11] = -6.1595287380011E-03; + noik[11][12] = 4.8602510393022E-04; + // Octane + noik[12][1] = 1.0722544875633; + noik[12][2] = -2.4632951172003; + noik[12][3] = 0.65386674054928; + noik[12][4] = -0.36324974085628; + noik[12][5] = 0.12713269626764; + noik[12][6] = 3.071357277793E-04; + noik[12][7] = 0.5265685698754; + noik[12][8] = 0.019362862857653; + noik[12][9] = -0.58939426849155; + noik[12][10] = -0.14069963991934; + noik[12][11] = -7.8966330500036E-03; + noik[12][12] = 3.3036597968109E-03; + // Nonane + noik[13][1] = 1.1151; + noik[13][2] = -2.702; + noik[13][3] = 0.83416; + noik[13][4] = -0.38828; + noik[13][5] = 0.1376; + noik[13][6] = 0.00028185; + noik[13][7] = 0.62037; + noik[13][8] = 0.015847; + noik[13][9] = -0.61726; + noik[13][10] = -0.15043; + noik[13][11] = -0.012982; + noik[13][12] = 0.0044325; + // Decane + noik[14][1] = 1.0461; + noik[14][2] = -2.4807; + noik[14][3] = 0.74372; + noik[14][4] = -0.52579; + noik[14][5] = 0.15315; + noik[14][6] = 0.00032865; + noik[14][7] = 0.84178; + noik[14][8] = 0.055424; + noik[14][9] = -0.73555; + noik[14][10] = -0.18507; + noik[14][11] = -0.020775; + noik[14][12] = 0.012335; + // Oxygen + noik[16][1] = 0.88878286369701; + noik[16][2] = -2.4879433312148; + noik[16][3] = 0.59750190775886; + noik[16][4] = 9.6501817061881E-03; + noik[16][5] = 0.07197042871277; + noik[16][6] = 2.2337443000195E-04; + noik[16][7] = 0.18558686391474; + noik[16][8] = -0.03812936803576; + noik[16][9] = -0.15352245383006; + noik[16][10] = -0.026726814910919; + noik[16][11] = -0.025675298677127; + noik[16][12] = 9.5714302123668E-03; + // Carbon monoxide + noik[17][1] = 0.90554; + noik[17][2] = -2.4515; + noik[17][3] = 0.53149; + noik[17][4] = 0.024173; + noik[17][5] = 0.072156; + noik[17][6] = 0.00018818; + noik[17][7] = 0.19405; + noik[17][8] = -0.043268; + noik[17][9] = -0.12778; + noik[17][10] = -0.027896; + noik[17][11] = -0.034154; + noik[17][12] = 0.016329; + // Hydrogen sulfide + noik[19][1] = 0.87641; + noik[19][2] = -2.0367; + noik[19][3] = 0.21634; + noik[19][4] = -0.050199; + noik[19][5] = 0.066994; + noik[19][6] = 0.00019076; + noik[19][7] = 0.20227; + noik[19][8] = -0.0045348; + noik[19][9] = -0.2223; + noik[19][10] = -0.034714; + noik[19][11] = -0.014885; + noik[19][12] = 0.0074154; + // Argon + noik[21][1] = 0.85095714803969; + noik[21][2] = -2.400322294348; + noik[21][3] = 0.54127841476466; + noik[21][4] = 0.016919770692538; + noik[21][5] = 0.068825965019035; + noik[21][6] = 2.1428032815338E-04; + noik[21][7] = 0.17429895321992; + noik[21][8] = -0.033654495604194; + noik[21][9] = -0.13526799857691; + noik[21][10] = -0.016387350791552; + noik[21][11] = -0.024987666851475; + noik[21][12] = 8.8769204815709E-03; + // Carbon dioxide + coik[3][1] = 0; + doik[3][1] = 1; + toik[3][1] = 0; + noik[3][1] = 0.52646564804653; + coik[3][2] = 0; + doik[3][2] = 1; + toik[3][2] = 1.25; + noik[3][2] = -1.4995725042592; + coik[3][3] = 0; + doik[3][3] = 2; + toik[3][3] = 1.625; + noik[3][3] = 0.27329786733782; + coik[3][4] = 0; + doik[3][4] = 3; + toik[3][4] = 0.375; + noik[3][4] = 0.12949500022786; + coik[3][5] = 1; + doik[3][5] = 3; + toik[3][5] = 0.375; + noik[3][5] = 0.15404088341841; + coik[3][6] = 1; + doik[3][6] = 3; + toik[3][6] = 1.375; + noik[3][6] = -0.58186950946814; + coik[3][7] = 1; + doik[3][7] = 4; + toik[3][7] = 1.125; + noik[3][7] = -0.18022494838296; + coik[3][8] = 1; + doik[3][8] = 5; + toik[3][8] = 1.375; + noik[3][8] = -0.095389904072812; + coik[3][9] = 1; + doik[3][9] = 6; + toik[3][9] = 0.125; + noik[3][9] = -8.0486819317679E-03; + coik[3][10] = 1; + doik[3][10] = 6; + toik[3][10] = 1.625; + noik[3][10] = -0.03554775127309; + coik[3][11] = 2; + doik[3][11] = 1; + toik[3][11] = 3.75; + noik[3][11] = -0.28079014882405; + coik[3][12] = 2; + doik[3][12] = 4; + toik[3][12] = 3.5; + noik[3][12] = -0.082435890081677; + coik[3][13] = 3; + doik[3][13] = 1; + toik[3][13] = 7.5; + noik[3][13] = 0.010832427979006; + coik[3][14] = 3; + doik[3][14] = 1; + toik[3][14] = 8; + noik[3][14] = -6.7073993161097E-03; + coik[3][15] = 3; + doik[3][15] = 3; + toik[3][15] = 6; + noik[3][15] = -4.6827907600524E-03; + coik[3][16] = 3; + doik[3][16] = 3; + toik[3][16] = 16; + noik[3][16] = -0.028359911832177; + coik[3][17] = 3; + doik[3][17] = 4; + toik[3][17] = 11; + noik[3][17] = 0.019500174744098; + coik[3][18] = 5; + doik[3][18] = 5; + toik[3][18] = 24; + noik[3][18] = -0.21609137507166; + coik[3][19] = 5; + doik[3][19] = 5; + toik[3][19] = 26; + noik[3][19] = 0.43772794926972; + coik[3][20] = 5; + doik[3][20] = 5; + toik[3][20] = 28; + noik[3][20] = -0.22130790113593; + coik[3][21] = 6; + doik[3][21] = 5; + toik[3][21] = 24; + noik[3][21] = 0.015190189957331; + coik[3][22] = 6; + doik[3][22] = 5; + toik[3][22] = 26; + noik[3][22] = -0.0153809489533; + // Hydrogen + coik[15][1] = 0; + doik[15][1] = 1; + toik[15][1] = 0.5; + noik[15][1] = 5.3579928451252; + coik[15][2] = 0; + doik[15][2] = 1; + toik[15][2] = 0.625; + noik[15][2] = -6.2050252530595; + coik[15][3] = 0; + doik[15][3] = 2; + toik[15][3] = 0.375; + noik[15][3] = 0.13830241327086; + coik[15][4] = 0; + doik[15][4] = 2; + toik[15][4] = 0.625; + noik[15][4] = -0.071397954896129; + coik[15][5] = 0; + doik[15][5] = 4; + toik[15][5] = 1.125; + noik[15][5] = 0.015474053959733; + coik[15][6] = 1; + doik[15][6] = 1; + toik[15][6] = 2.625; + noik[15][6] = -0.14976806405771; + coik[15][7] = 1; + doik[15][7] = 5; + toik[15][7] = 0; + noik[15][7] = -0.026368723988451; + coik[15][8] = 1; + doik[15][8] = 5; + toik[15][8] = 0.25; + noik[15][8] = 0.056681303156066; + coik[15][9] = 1; + doik[15][9] = 5; + toik[15][9] = 1.375; + noik[15][9] = -0.060063958030436; + coik[15][10] = 2; + doik[15][10] = 1; + toik[15][10] = 4; + noik[15][10] = -0.45043942027132; + coik[15][11] = 2; + doik[15][11] = 1; + toik[15][11] = 4.25; + noik[15][11] = 0.424788402445; + coik[15][12] = 3; + doik[15][12] = 2; + toik[15][12] = 5; + noik[15][12] = -0.021997640827139; + coik[15][13] = 3; + doik[15][13] = 5; + toik[15][13] = 8; + noik[15][13] = -0.01049952137453; + coik[15][14] = 5; + doik[15][14] = 1; + toik[15][14] = 8; + noik[15][14] = -2.8955902866816E-03; + // Water + coik[18][1] = 0; + doik[18][1] = 1; + toik[18][1] = 0.5; + noik[18][1] = 0.82728408749586; + coik[18][2] = 0; + doik[18][2] = 1; + toik[18][2] = 1.25; + noik[18][2] = -1.8602220416584; + coik[18][3] = 0; + doik[18][3] = 1; + toik[18][3] = 1.875; + noik[18][3] = -1.1199009613744; + coik[18][4] = 0; + doik[18][4] = 2; + toik[18][4] = 0.125; + noik[18][4] = 0.15635753976056; + coik[18][5] = 0; + doik[18][5] = 2; + toik[18][5] = 1.5; + noik[18][5] = 0.87375844859025; + coik[18][6] = 0; + doik[18][6] = 3; + toik[18][6] = 1; + noik[18][6] = -0.36674403715731; + coik[18][7] = 0; + doik[18][7] = 4; + toik[18][7] = 0.75; + noik[18][7] = 0.053987893432436; + coik[18][8] = 1; + doik[18][8] = 1; + toik[18][8] = 1.5; + noik[18][8] = 1.0957690214499; + coik[18][9] = 1; + doik[18][9] = 5; + toik[18][9] = 0.625; + noik[18][9] = 0.053213037828563; + coik[18][10] = 1; + doik[18][10] = 5; + toik[18][10] = 2.625; + noik[18][10] = 0.013050533930825; + coik[18][11] = 2; + doik[18][11] = 1; + toik[18][11] = 5; + noik[18][11] = -0.41079520434476; + coik[18][12] = 2; + doik[18][12] = 2; + toik[18][12] = 4; + noik[18][12] = 0.1463744334412; + coik[18][13] = 2; + doik[18][13] = 4; + toik[18][13] = 4.5; + noik[18][13] = -0.055726838623719; + coik[18][14] = 3; + doik[18][14] = 4; + toik[18][14] = 3; + noik[18][14] = -0.0112017741438; + coik[18][15] = 5; + doik[18][15] = 1; + toik[18][15] = 4; + noik[18][15] = -6.6062758068099E-03; + coik[18][16] = 5; + doik[18][16] = 1; + toik[18][16] = 6; + noik[18][16] = 4.6918522004538E-03; + // Helium + coik[20][1] = 0; + doik[20][1] = 1; + toik[20][1] = 0; + noik[20][1] = -0.45579024006737; + coik[20][2] = 0; + doik[20][2] = 1; + toik[20][2] = 0.125; + noik[20][2] = 1.2516390754925; + coik[20][3] = 0; + doik[20][3] = 1; + toik[20][3] = 0.75; + noik[20][3] = -1.5438231650621; + coik[20][4] = 0; + doik[20][4] = 4; + toik[20][4] = 1; + noik[20][4] = 0.020467489707221; + coik[20][5] = 1; + doik[20][5] = 1; + toik[20][5] = 0.75; + noik[20][5] = -0.34476212380781; + coik[20][6] = 1; + doik[20][6] = 3; + toik[20][6] = 2.625; + noik[20][6] = -0.020858459512787; + coik[20][7] = 1; + doik[20][7] = 5; + toik[20][7] = 0.125; + noik[20][7] = 0.016227414711778; + coik[20][8] = 1; + doik[20][8] = 5; + toik[20][8] = 1.25; + noik[20][8] = -0.057471818200892; + coik[20][9] = 1; + doik[20][9] = 5; + toik[20][9] = 2; + noik[20][9] = 0.019462416430715; + coik[20][10] = 2; + doik[20][10] = 2; + toik[20][10] = 1; + noik[20][10] = -0.03329568012302; + coik[20][11] = 3; + doik[20][11] = 1; + toik[20][11] = 4.5; + noik[20][11] = -0.010863577372367; + coik[20][12] = 3; + doik[20][12] = 2; + toik[20][12] = 5; + noik[20][12] = -0.022173365245954; + + // Exponents in mixture equations + // Methane-Nitrogen + dijk[3][1] = 1; + tijk[3][1] = 0; + cijk[3][1] = 0; + eijk[3][1] = 0; + bijk[3][1] = 0; + gijk[3][1] = 0; + nijk[3][1] = -9.8038985517335E-03; + dijk[3][2] = 4; + tijk[3][2] = 1.85; + cijk[3][2] = 0; + eijk[3][2] = 0; + bijk[3][2] = 0; + gijk[3][2] = 0; + nijk[3][2] = 4.2487270143005E-04; + dijk[3][3] = 1; + tijk[3][3] = 7.85; + cijk[3][3] = 1; + eijk[3][3] = 0.5; + bijk[3][3] = 1; + gijk[3][3] = 0.5; + nijk[3][3] = -0.034800214576142; + dijk[3][4] = 2; + tijk[3][4] = 5.4; + cijk[3][4] = 1; + eijk[3][4] = 0.5; + bijk[3][4] = 1; + gijk[3][4] = 0.5; + nijk[3][4] = -0.13333813013896; + dijk[3][5] = 2; + tijk[3][5] = 0; + cijk[3][5] = 0.25; + eijk[3][5] = 0.5; + bijk[3][5] = 2.5; + gijk[3][5] = 0.5; + nijk[3][5] = -0.011993694974627; + dijk[3][6] = 2; + tijk[3][6] = 0.75; + cijk[3][6] = 0; + eijk[3][6] = 0.5; + bijk[3][6] = 3; + gijk[3][6] = 0.5; + nijk[3][6] = 0.069243379775168; + dijk[3][7] = 2; + tijk[3][7] = 2.8; + cijk[3][7] = 0; + eijk[3][7] = 0.5; + bijk[3][7] = 3; + gijk[3][7] = 0.5; + nijk[3][7] = -0.31022508148249; + dijk[3][8] = 2; + tijk[3][8] = 4.45; + cijk[3][8] = 0; + eijk[3][8] = 0.5; + bijk[3][8] = 3; + gijk[3][8] = 0.5; + nijk[3][8] = 0.24495491753226; + dijk[3][9] = 3; + tijk[3][9] = 4.25; + cijk[3][9] = 0; + eijk[3][9] = 0.5; + bijk[3][9] = 3; + gijk[3][9] = 0.5; + nijk[3][9] = 0.22369816716981; + // Methane-Carbon dioxide + dijk[4][1] = 1; + tijk[4][1] = 2.6; + cijk[4][1] = 0; + eijk[4][1] = 0; + bijk[4][1] = 0; + gijk[4][1] = 0; + nijk[4][1] = -0.10859387354942; + dijk[4][2] = 2; + tijk[4][2] = 1.95; + cijk[4][2] = 0; + eijk[4][2] = 0; + bijk[4][2] = 0; + gijk[4][2] = 0; + nijk[4][2] = 0.080228576727389; + dijk[4][3] = 3; + tijk[4][3] = 0; + cijk[4][3] = 0; + eijk[4][3] = 0; + bijk[4][3] = 0; + gijk[4][3] = 0; + nijk[4][3] = -9.3303985115717E-03; + dijk[4][4] = 1; + tijk[4][4] = 3.95; + cijk[4][4] = 1; + eijk[4][4] = 0.5; + bijk[4][4] = 1; + gijk[4][4] = 0.5; + nijk[4][4] = 0.040989274005848; + dijk[4][5] = 2; + tijk[4][5] = 7.95; + cijk[4][5] = 0.5; + eijk[4][5] = 0.5; + bijk[4][5] = 2; + gijk[4][5] = 0.5; + nijk[4][5] = -0.24338019772494; + dijk[4][6] = 3; + tijk[4][6] = 8; + cijk[4][6] = 0; + eijk[4][6] = 0.5; + bijk[4][6] = 3; + gijk[4][6] = 0.5; + nijk[4][6] = 0.23855347281124; + // Methane-Ethane + dijk[1][1] = 3; + tijk[1][1] = 0.65; + cijk[1][1] = 0; + eijk[1][1] = 0; + bijk[1][1] = 0; + gijk[1][1] = 0; + nijk[1][1] = -8.0926050298746E-04; + dijk[1][2] = 4; + tijk[1][2] = 1.55; + cijk[1][2] = 0; + eijk[1][2] = 0; + bijk[1][2] = 0; + gijk[1][2] = 0; + nijk[1][2] = -7.5381925080059E-04; + dijk[1][3] = 1; + tijk[1][3] = 3.1; + cijk[1][3] = 1; + eijk[1][3] = 0.5; + bijk[1][3] = 1; + gijk[1][3] = 0.5; + nijk[1][3] = -0.041618768891219; + dijk[1][4] = 2; + tijk[1][4] = 5.9; + cijk[1][4] = 1; + eijk[1][4] = 0.5; + bijk[1][4] = 1; + gijk[1][4] = 0.5; + nijk[1][4] = -0.23452173681569; + dijk[1][5] = 2; + tijk[1][5] = 7.05; + cijk[1][5] = 1; + eijk[1][5] = 0.5; + bijk[1][5] = 1; + gijk[1][5] = 0.5; + nijk[1][5] = 0.14003840584586; + dijk[1][6] = 2; + tijk[1][6] = 3.35; + cijk[1][6] = 0.875; + eijk[1][6] = 0.5; + bijk[1][6] = 1.25; + gijk[1][6] = 0.5; + nijk[1][6] = 0.063281744807738; + dijk[1][7] = 2; + tijk[1][7] = 1.2; + cijk[1][7] = 0.75; + eijk[1][7] = 0.5; + bijk[1][7] = 1.5; + gijk[1][7] = 0.5; + nijk[1][7] = -0.034660425848809; + dijk[1][8] = 2; + tijk[1][8] = 5.8; + cijk[1][8] = 0.5; + eijk[1][8] = 0.5; + bijk[1][8] = 2; + gijk[1][8] = 0.5; + nijk[1][8] = -0.23918747334251; + dijk[1][9] = 2; + tijk[1][9] = 2.7; + cijk[1][9] = 0; + eijk[1][9] = 0.5; + bijk[1][9] = 3; + gijk[1][9] = 0.5; + nijk[1][9] = 1.9855255066891E-03; + dijk[1][10] = 3; + tijk[1][10] = 0.45; + cijk[1][10] = 0; + eijk[1][10] = 0.5; + bijk[1][10] = 3; + gijk[1][10] = 0.5; + nijk[1][10] = 6.1777746171555; + dijk[1][11] = 3; + tijk[1][11] = 0.55; + cijk[1][11] = 0; + eijk[1][11] = 0.5; + bijk[1][11] = 3; + gijk[1][11] = 0.5; + nijk[1][11] = -6.9575358271105; + dijk[1][12] = 3; + tijk[1][12] = 1.95; + cijk[1][12] = 0; + eijk[1][12] = 0.5; + bijk[1][12] = 3; + gijk[1][12] = 0.5; + nijk[1][12] = 1.0630185306388; + // Methane-Propane + dijk[2][1] = 3; + tijk[2][1] = 1.85; + cijk[2][1] = 0; + eijk[2][1] = 0; + bijk[2][1] = 0; + gijk[2][1] = 0; + nijk[2][1] = 0.013746429958576; + dijk[2][2] = 3; + tijk[2][2] = 3.95; + cijk[2][2] = 0; + eijk[2][2] = 0; + bijk[2][2] = 0; + gijk[2][2] = 0; + nijk[2][2] = -7.4425012129552E-03; + dijk[2][3] = 4; + tijk[2][3] = 0; + cijk[2][3] = 0; + eijk[2][3] = 0; + bijk[2][3] = 0; + gijk[2][3] = 0; + nijk[2][3] = -4.5516600213685E-03; + dijk[2][4] = 4; + tijk[2][4] = 1.85; + cijk[2][4] = 0; + eijk[2][4] = 0; + bijk[2][4] = 0; + gijk[2][4] = 0; + nijk[2][4] = -5.4546603350237E-03; + dijk[2][5] = 4; + tijk[2][5] = 3.85; + cijk[2][5] = 0; + eijk[2][5] = 0; + bijk[2][5] = 0; + gijk[2][5] = 0; + nijk[2][5] = 2.3682016824471E-03; + dijk[2][6] = 1; + tijk[2][6] = 5.25; + cijk[2][6] = 0.25; + eijk[2][6] = 0.5; + bijk[2][6] = 0.75; + gijk[2][6] = 0.5; + nijk[2][6] = 0.18007763721438; + dijk[2][7] = 1; + tijk[2][7] = 3.85; + cijk[2][7] = 0.25; + eijk[2][7] = 0.5; + bijk[2][7] = 1; + gijk[2][7] = 0.5; + nijk[2][7] = -0.44773942932486; + dijk[2][8] = 1; + tijk[2][8] = 0.2; + cijk[2][8] = 0; + eijk[2][8] = 0.5; + bijk[2][8] = 2; + gijk[2][8] = 0.5; + nijk[2][8] = 0.0193273748882; + dijk[2][9] = 2; + tijk[2][9] = 6.5; + cijk[2][9] = 0; + eijk[2][9] = 0.5; + bijk[2][9] = 3; + gijk[2][9] = 0.5; + nijk[2][9] = -0.30632197804624; + // Nitrogen-Carbon dioxide + dijk[5][1] = 2; + tijk[5][1] = 1.85; + cijk[5][1] = 0; + eijk[5][1] = 0; + bijk[5][1] = 0; + gijk[5][1] = 0; + nijk[5][1] = 0.28661625028399; + dijk[5][2] = 3; + tijk[5][2] = 1.4; + cijk[5][2] = 0; + eijk[5][2] = 0; + bijk[5][2] = 0; + gijk[5][2] = 0; + nijk[5][2] = -0.10919833861247; + dijk[5][3] = 1; + tijk[5][3] = 3.2; + cijk[5][3] = 0.25; + eijk[5][3] = 0.5; + bijk[5][3] = 0.75; + gijk[5][3] = 0.5; + nijk[5][3] = -1.137403208227; + dijk[5][4] = 1; + tijk[5][4] = 2.5; + cijk[5][4] = 0.25; + eijk[5][4] = 0.5; + bijk[5][4] = 1; + gijk[5][4] = 0.5; + nijk[5][4] = 0.76580544237358; + dijk[5][5] = 1; + tijk[5][5] = 8; + cijk[5][5] = 0; + eijk[5][5] = 0.5; + bijk[5][5] = 2; + gijk[5][5] = 0.5; + nijk[5][5] = 4.2638000926819E-03; + dijk[5][6] = 2; + tijk[5][6] = 3.75; + cijk[5][6] = 0; + eijk[5][6] = 0.5; + bijk[5][6] = 3; + gijk[5][6] = 0.5; + nijk[5][6] = 0.17673538204534; + // Nitrogen-Ethane + dijk[6][1] = 2; + tijk[6][1] = 0; + cijk[6][1] = 0; + eijk[6][1] = 0; + bijk[6][1] = 0; + gijk[6][1] = 0; + nijk[6][1] = -0.47376518126608; + dijk[6][2] = 2; + tijk[6][2] = 0.05; + cijk[6][2] = 0; + eijk[6][2] = 0; + bijk[6][2] = 0; + gijk[6][2] = 0; + nijk[6][2] = 0.48961193461001; + dijk[6][3] = 3; + tijk[6][3] = 0; + cijk[6][3] = 0; + eijk[6][3] = 0; + bijk[6][3] = 0; + gijk[6][3] = 0; + nijk[6][3] = -5.7011062090535E-03; + dijk[6][4] = 1; + tijk[6][4] = 3.65; + cijk[6][4] = 1; + eijk[6][4] = 0.5; + bijk[6][4] = 1; + gijk[6][4] = 0.5; + nijk[6][4] = -0.1996682004132; + dijk[6][5] = 2; + tijk[6][5] = 4.9; + cijk[6][5] = 1; + eijk[6][5] = 0.5; + bijk[6][5] = 1; + gijk[6][5] = 0.5; + nijk[6][5] = -0.69411103101723; + dijk[6][6] = 2; + tijk[6][6] = 4.45; + cijk[6][6] = 0.875; + eijk[6][6] = 0.5; + bijk[6][6] = 1.25; + gijk[6][6] = 0.5; + nijk[6][6] = 0.69226192739021; + // Methane-Hydrogen + dijk[7][1] = 1; + tijk[7][1] = 2; + cijk[7][1] = 0; + eijk[7][1] = 0; + bijk[7][1] = 0; + gijk[7][1] = 0; + nijk[7][1] = -0.25157134971934; + dijk[7][2] = 3; + tijk[7][2] = -1; + cijk[7][2] = 0; + eijk[7][2] = 0; + bijk[7][2] = 0; + gijk[7][2] = 0; + nijk[7][2] = -6.2203841111983E-03; + dijk[7][3] = 3; + tijk[7][3] = 1.75; + cijk[7][3] = 0; + eijk[7][3] = 0; + bijk[7][3] = 0; + gijk[7][3] = 0; + nijk[7][3] = 0.088850315184396; + dijk[7][4] = 4; + tijk[7][4] = 1.4; + cijk[7][4] = 0; + eijk[7][4] = 0; + bijk[7][4] = 0; + gijk[7][4] = 0; + nijk[7][4] = -0.035592212573239; + // Methane-n-Butane, Methane-Isobutane, Ethane-Propane, Ethane-n-Butane, + // Ethane-Isobutane, Propane-n-Butane, Propane-Isobutane, and n-Butane-Isobutane + dijk[10][1] = 1; + tijk[10][1] = 1; + cijk[10][1] = 0; + eijk[10][1] = 0; + bijk[10][1] = 0; + gijk[10][1] = 0; + nijk[10][1] = 2.5574776844118; + dijk[10][2] = 1; + tijk[10][2] = 1.55; + cijk[10][2] = 0; + eijk[10][2] = 0; + bijk[10][2] = 0; + gijk[10][2] = 0; + nijk[10][2] = -7.9846357136353; + dijk[10][3] = 1; + tijk[10][3] = 1.7; + cijk[10][3] = 0; + eijk[10][3] = 0; + bijk[10][3] = 0; + gijk[10][3] = 0; + nijk[10][3] = 4.7859131465806; + dijk[10][4] = 2; + tijk[10][4] = 0.25; + cijk[10][4] = 0; + eijk[10][4] = 0; + bijk[10][4] = 0; + gijk[10][4] = 0; + nijk[10][4] = -0.73265392369587; + dijk[10][5] = 2; + tijk[10][5] = 1.35; + cijk[10][5] = 0; + eijk[10][5] = 0; + bijk[10][5] = 0; + gijk[10][5] = 0; + nijk[10][5] = 1.3805471345312; + dijk[10][6] = 3; + tijk[10][6] = 0; + cijk[10][6] = 0; + eijk[10][6] = 0; + bijk[10][6] = 0; + gijk[10][6] = 0; + nijk[10][6] = 0.28349603476365; + dijk[10][7] = 3; + tijk[10][7] = 1.25; + cijk[10][7] = 0; + eijk[10][7] = 0; + bijk[10][7] = 0; + gijk[10][7] = 0; + nijk[10][7] = -0.49087385940425; + dijk[10][8] = 4; + tijk[10][8] = 0; + cijk[10][8] = 0; + eijk[10][8] = 0; + bijk[10][8] = 0; + gijk[10][8] = 0; + nijk[10][8] = -0.10291888921447; + dijk[10][9] = 4; + tijk[10][9] = 0.7; + cijk[10][9] = 0; + eijk[10][9] = 0; + bijk[10][9] = 0; + gijk[10][9] = 0; + nijk[10][9] = 0.11836314681968; + dijk[10][10] = 4; + tijk[10][10] = 5.4; + cijk[10][10] = 0; + eijk[10][10] = 0; + bijk[10][10] = 0; + gijk[10][10] = 0; + nijk[10][10] = 5.5527385721943E-05; + + // Generalized parameters + fij[1][2] = 1; // Methane-Nitrogen + fij[1][3] = 1; // Methane-CO2 + fij[1][4] = 1; // Methane-Ethane + fij[1][5] = 1; // Methane-Propane + fij[2][3] = 1; // Nitrogen-CO2 + fij[2][4] = 1; // Nitrogen-Ethane + fij[1][15] = 1; // Methane-Hydrogen + fij[1][6] = 0.771035405688; // Methane-Isobutane + fij[1][7] = 1; // Methane-n-Butane + fij[4][5] = 0.13042476515; // Ethane-Propane + fij[4][6] = 0.260632376098; // Ethane-Isobutane + fij[4][7] = 0.281570073085; // Ethane-n-Butane + fij[5][6] = -0.0551609771024; // Propane-Isobutane + fij[5][7] = 0.0312572600489; // Propane-n-Butane + fij[6][7] = -0.0551240293009; // Isobutane-n-Butane + + // Model numbers for binary mixtures with no excess functions (mn=-1) + for (int i = 1; i <= MaxFlds; ++i) { + mNumb[i][i] = -1; + for (int j = i + 1; j <= MaxFlds; ++j) { + fij[j][i] = fij[i][j]; + mNumb[i][j] = -1; + mNumb[j][i] = -1; + } + } - // Model numbers for excess functions, 10 is for generalized equation - mNumb[1][2] = 3; - mNumb[1][3] = 4; - mNumb[1][4] = 1; - mNumb[1][5] = 2; - mNumb[1][6] = 10; - mNumb[1][7] = 10; - mNumb[1][15] = 7; - mNumb[2][3] = 5; - mNumb[2][4] = 6; - mNumb[4][5] = 10; - mNumb[4][6] = 10; - mNumb[4][7] = 10; - mNumb[5][6] = 10; - mNumb[5][7] = 10; - mNumb[6][7] = 10; - - // Ideal gas parameters - n0i[1][3] = 4.00088; - n0i[1][4] = 0.76315; - n0i[1][5] = 0.0046; - n0i[1][6] = 8.74432; - n0i[1][7] = -4.46921; - n0i[1][1] = 29.83843397; - n0i[1][2] = -15999.69151; - n0i[2][3] = 3.50031; - n0i[2][4] = 0.13732; - n0i[2][5] = -0.1466; - n0i[2][6] = 0.90066; - n0i[2][7] = 0; - n0i[2][1] = 17.56770785; - n0i[2][2] = -2801.729072; - n0i[3][3] = 3.50002; - n0i[3][4] = 2.04452; - n0i[3][5] = -1.06044; - n0i[3][6] = 2.03366; - n0i[3][7] = 0.01393; - n0i[3][1] = 20.65844696; - n0i[3][2] = -4902.171516; - n0i[4][3] = 4.00263; - n0i[4][4] = 4.33939; - n0i[4][5] = 1.23722; - n0i[4][6] = 13.1974; - n0i[4][7] = -6.01989; - n0i[4][1] = 36.73005938; - n0i[4][2] = -23639.65301; - n0i[5][3] = 4.02939; - n0i[5][4] = 6.60569; - n0i[5][5] = 3.197; - n0i[5][6] = 19.1921; - n0i[5][7] = -8.37267; - n0i[5][1] = 44.70909619; - n0i[5][2] = -31236.63551; - n0i[6][3] = 4.06714; - n0i[6][4] = 8.97575; - n0i[6][5] = 5.25156; - n0i[6][6] = 25.1423; - n0i[6][7] = 16.1388; - n0i[6][1] = 34.30180349; - n0i[6][2] = -38525.50276; - n0i[7][3] = 4.33944; - n0i[7][4] = 9.44893; - n0i[7][5] = 6.89406; - n0i[7][6] = 24.4618; - n0i[7][7] = 14.7824; - n0i[7][1] = 36.53237783; - n0i[7][2] = -38957.80933; - n0i[8][3] = 4; - n0i[8][4] = 11.7618; - n0i[8][5] = 20.1101; - n0i[8][6] = 33.1688; - n0i[8][7] = 0; - n0i[8][1] = 43.17218626; - n0i[8][2] = -51198.30946; - n0i[9][3] = 4; - n0i[9][4] = 8.95043; - n0i[9][5] = 21.836; - n0i[9][6] = 33.4032; - n0i[9][7] = 0; - n0i[9][1] = 42.67837089; - n0i[9][2] = -45215.83; - n0i[10][3] = 4; - n0i[10][4] = 11.6977; - n0i[10][5] = 26.8142; - n0i[10][6] = 38.6164; - n0i[10][7] = 0; - n0i[10][1] = 46.99717188; - n0i[10][2] = -52746.83318; - n0i[11][3] = 4; - n0i[11][4] = 13.7266; - n0i[11][5] = 30.4707; - n0i[11][6] = 43.5561; - n0i[11][7] = 0; - n0i[11][1] = 52.07631631; - n0i[11][2] = -57104.81056; - n0i[12][3] = 4; - n0i[12][4] = 15.6865; - n0i[12][5] = 33.8029; - n0i[12][6] = 48.1731; - n0i[12][7] = 0; - n0i[12][1] = 57.25830934; - n0i[12][2] = -60546.76385; - n0i[13][3] = 4; - n0i[13][4] = 18.0241; - n0i[13][5] = 38.1235; - n0i[13][6] = 53.3415; - n0i[13][7] = 0; - n0i[13][1] = 62.09646901; - n0i[13][2] = -66600.12837; - n0i[14][3] = 4; - n0i[14][4] = 21.0069; - n0i[14][5] = 43.4931; - n0i[14][6] = 58.3657; - n0i[14][7] = 0; - n0i[14][1] = 65.93909154; - n0i[14][2] = -74131.45483; - n0i[15][3] = 2.47906; - n0i[15][4] = 0.95806; - n0i[15][5] = 0.45444; - n0i[15][6] = 1.56039; - n0i[15][7] = -1.3756; - n0i[15][1] = 13.07520288; - n0i[15][2] = -5836.943696; - n0i[16][3] = 3.50146; - n0i[16][4] = 1.07558; - n0i[16][5] = 1.01334; - n0i[16][6] = 0; - n0i[16][7] = 0; - n0i[16][1] = 16.8017173; - n0i[16][2] = -2318.32269; - n0i[17][3] = 3.50055; - n0i[17][4] = 1.02865; - n0i[17][5] = 0.00493; - n0i[17][6] = 0; - n0i[17][7] = 0; - n0i[17][1] = 17.45786899; - n0i[17][2] = -2635.244116; - n0i[18][3] = 4.00392; - n0i[18][4] = 0.01059; - n0i[18][5] = 0.98763; - n0i[18][6] = 3.06904; - n0i[18][7] = 0; - n0i[18][1] = 21.57882705; - n0i[18][2] = -7766.733078; - n0i[19][3] = 4; - n0i[19][4] = 3.11942; - n0i[19][5] = 1.00243; - n0i[19][6] = 0; - n0i[19][7] = 0; - n0i[19][1] = 21.5830944; - n0i[19][2] = -6069.035869; - n0i[20][3] = 2.5; - n0i[20][4] = 0; - n0i[20][5] = 0; - n0i[20][6] = 0; - n0i[20][7] = 0; - n0i[20][1] = 10.04639507; - n0i[20][2] = -745.375; - n0i[21][3] = 2.5; - n0i[21][4] = 0; - n0i[21][5] = 0; - n0i[21][6] = 0; - n0i[21][7] = 0; - n0i[21][1] = 10.04639507; - n0i[21][2] = -745.375; - th0i[1][4] = 820.659; - th0i[1][5] = 178.41; - th0i[1][6] = 1062.82; - th0i[1][7] = 1090.53; - th0i[2][4] = 662.738; - th0i[2][5] = 680.562; - th0i[2][6] = 1740.06; - th0i[2][7] = 0; - th0i[3][4] = 919.306; - th0i[3][5] = 865.07; - th0i[3][6] = 483.553; - th0i[3][7] = 341.109; - th0i[4][4] = 559.314; - th0i[4][5] = 223.284; - th0i[4][6] = 1031.38; - th0i[4][7] = 1071.29; - th0i[5][4] = 479.856; - th0i[5][5] = 200.893; - th0i[5][6] = 955.312; - th0i[5][7] = 1027.29; - th0i[6][4] = 438.27; - th0i[6][5] = 198.018; - th0i[6][6] = 1905.02; - th0i[6][7] = 893.765; - th0i[7][4] = 468.27; - th0i[7][5] = 183.636; - th0i[7][6] = 1914.1; - th0i[7][7] = 903.185; - th0i[8][4] = 292.503; - th0i[8][5] = 910.237; - th0i[8][6] = 1919.37; - th0i[8][7] = 0; - th0i[9][4] = 178.67; - th0i[9][5] = 840.538; - th0i[9][6] = 1774.25; - th0i[9][7] = 0; - th0i[10][4] = 182.326; - th0i[10][5] = 859.207; - th0i[10][6] = 1826.59; - th0i[10][7] = 0; - th0i[11][4] = 169.789; - th0i[11][5] = 836.195; - th0i[11][6] = 1760.46; - th0i[11][7] = 0; - th0i[12][4] = 158.922; - th0i[12][5] = 815.064; - th0i[12][6] = 1693.07; - th0i[12][7] = 0; - th0i[13][4] = 156.854; - th0i[13][5] = 814.882; - th0i[13][6] = 1693.79; - th0i[13][7] = 0; - th0i[14][4] = 164.947; - th0i[14][5] = 836.264; - th0i[14][6] = 1750.24; - th0i[14][7] = 0; - th0i[15][4] = 228.734; - th0i[15][5] = 326.843; - th0i[15][6] = 1651.71; - th0i[15][7] = 1671.69; - th0i[16][4] = 2235.71; - th0i[16][5] = 1116.69; - th0i[16][6] = 0; - th0i[16][7] = 0; - th0i[17][4] = 1550.45; - th0i[17][5] = 704.525; - th0i[17][6] = 0; - th0i[17][7] = 0; - th0i[18][4] = 268.795; - th0i[18][5] = 1141.41; - th0i[18][6] = 2507.37; - th0i[18][7] = 0; - th0i[19][4] = 1833.63; - th0i[19][5] = 847.181; - th0i[19][6] = 0; - th0i[19][7] = 0; - th0i[20][4] = 0; - th0i[20][5] = 0; - th0i[20][6] = 0; - th0i[20][7] = 0; - th0i[21][4] = 0; - th0i[21][5] = 0; - th0i[21][6] = 0; - th0i[21][7] = 0; - - // Mixture parameters for reducing variables - bvij[1][2] = 0.998721377; - gvij[1][2] = 1.013950311; - btij[1][2] = 0.99809883; - gtij[1][2] = 0.979273013; // CH4-N2 - bvij[1][3] = 0.999518072; - gvij[1][3] = 1.002806594; - btij[1][3] = 1.02262449; - gtij[1][3] = 0.975665369; // CH4-CO2 - bvij[1][4] = 0.997547866; - gvij[1][4] = 1.006617867; - btij[1][4] = 0.996336508; - gtij[1][4] = 1.049707697; // CH4-C2H6 - bvij[1][5] = 1.00482707; - gvij[1][5] = 1.038470657; - btij[1][5] = 0.989680305; - gtij[1][5] = 1.098655531; // CH4-C3H8 - bvij[1][6] = 1.011240388; - gvij[1][6] = 1.054319053; - btij[1][6] = 0.980315756; - gtij[1][6] = 1.161117729; // CH4-i-C4H10 - bvij[1][7] = 0.979105972; - gvij[1][7] = 1.045375122; - btij[1][7] = 0.99417491; - gtij[1][7] = 1.171607691; // CH4-C4H10 - bvij[1][8] = 1; - gvij[1][8] = 1.343685343; - btij[1][8] = 1; - gtij[1][8] = 1.188899743; // CH4-i-C5H12 - bvij[1][9] = 0.94833012; - gvij[1][9] = 1.124508039; - btij[1][9] = 0.992127525; - gtij[1][9] = 1.249173968; // CH4-C5H12 - bvij[1][10] = 0.958015294; - gvij[1][10] = 1.052643846; - btij[1][10] = 0.981844797; - gtij[1][10] = 1.330570181; // CH4-C6H14 - bvij[1][11] = 0.962050831; - gvij[1][11] = 1.156655935; - btij[1][11] = 0.977431529; - gtij[1][11] = 1.379850328; // CH4-C7H16 - bvij[1][12] = 0.994740603; - gvij[1][12] = 1.116549372; - btij[1][12] = 0.957473785; - gtij[1][12] = 1.449245409; // CH4-C8H18 - bvij[1][13] = 1.002852287; - gvij[1][13] = 1.141895355; - btij[1][13] = 0.947716769; - gtij[1][13] = 1.528532478; // CH4-C9H20 - bvij[1][14] = 1.033086292; - gvij[1][14] = 1.146089637; - btij[1][14] = 0.937777823; - gtij[1][14] = 1.568231489; // CH4-C10H22 - bvij[1][15] = 1; - gvij[1][15] = 1.018702573; - btij[1][15] = 1; - gtij[1][15] = 1.352643115; // CH4-H2 - bvij[1][16] = 1; - gvij[1][16] = 1; - btij[1][16] = 1; - gtij[1][16] = 0.95; // CH4-O2 - bvij[1][17] = 0.997340772; - gvij[1][17] = 1.006102927; - btij[1][17] = 0.987411732; - gtij[1][17] = 0.987473033; // CH4-CO - bvij[1][18] = 1.012783169; - gvij[1][18] = 1.585018334; - btij[1][18] = 1.063333913; - gtij[1][18] = 0.775810513; // CH4-H2O - bvij[1][19] = 1.012599087; - gvij[1][19] = 1.040161207; - btij[1][19] = 1.011090031; - gtij[1][19] = 0.961155729; // CH4-H2S - bvij[1][20] = 1; - gvij[1][20] = 0.881405683; - btij[1][20] = 1; - gtij[1][20] = 3.159776855; // CH4-He - bvij[1][21] = 1.034630259; - gvij[1][21] = 1.014678542; - btij[1][21] = 0.990954281; - gtij[1][21] = 0.989843388; // CH4-Ar - bvij[2][3] = 0.977794634; - gvij[2][3] = 1.047578256; - btij[2][3] = 1.005894529; - gtij[2][3] = 1.107654104; // N2-CO2 - bvij[2][4] = 0.978880168; - gvij[2][4] = 1.042352891; - btij[2][4] = 1.007671428; - gtij[2][4] = 1.098650964; // N2-C2H6 - bvij[2][5] = 0.974424681; - gvij[2][5] = 1.081025408; - btij[2][5] = 1.002677329; - gtij[2][5] = 1.201264026; // N2-C3H8 - bvij[2][6] = 0.98641583; - gvij[2][6] = 1.100576129; - btij[2][6] = 0.99286813; - gtij[2][6] = 1.284462634; // N2-i-C4H10 - bvij[2][7] = 0.99608261; - gvij[2][7] = 1.146949309; - btij[2][7] = 0.994515234; - gtij[2][7] = 1.304886838; // N2-C4H10 - bvij[2][8] = 1; - gvij[2][8] = 1.154135439; - btij[2][8] = 1; - gtij[2][8] = 1.38177077; // N2-i-C5H12 - bvij[2][9] = 1; - gvij[2][9] = 1.078877166; - btij[2][9] = 1; - gtij[2][9] = 1.419029041; // N2-C5H12 - bvij[2][10] = 1; - gvij[2][10] = 1.195952177; - btij[2][10] = 1; - gtij[2][10] = 1.472607971; // N2-C6H14 - bvij[2][11] = 1; - gvij[2][11] = 1.40455409; - btij[2][11] = 1; - gtij[2][11] = 1.520975334; // N2-C7H16 - bvij[2][12] = 1; - gvij[2][12] = 1.186067025; - btij[2][12] = 1; - gtij[2][12] = 1.733280051; // N2-C8H18 - bvij[2][13] = 1; - gvij[2][13] = 1.100405929; - btij[2][13] = 0.95637945; - gtij[2][13] = 1.749119996; // N2-C9H20 - bvij[2][14] = 1; - gvij[2][14] = 1; - btij[2][14] = 0.957934447; - gtij[2][14] = 1.822157123; // N2-C10H22 - bvij[2][15] = 0.972532065; - gvij[2][15] = 0.970115357; - btij[2][15] = 0.946134337; - gtij[2][15] = 1.175696583; // N2-H2 - bvij[2][16] = 0.99952177; - gvij[2][16] = 0.997082328; - btij[2][16] = 0.997190589; - gtij[2][16] = 0.995157044; // N2-O2 - bvij[2][17] = 1; - gvij[2][17] = 1.008690943; - btij[2][17] = 1; - gtij[2][17] = 0.993425388; // N2-CO - bvij[2][18] = 1; - gvij[2][18] = 1.094749685; - btij[2][18] = 1; - gtij[2][18] = 0.968808467; // N2-H2O - bvij[2][19] = 0.910394249; - gvij[2][19] = 1.256844157; - btij[2][19] = 1.004692366; - gtij[2][19] = 0.9601742; // N2-H2S - bvij[2][20] = 0.969501055; - gvij[2][20] = 0.932629867; - btij[2][20] = 0.692868765; - gtij[2][20] = 1.47183158; // N2-He - bvij[2][21] = 1.004166412; - gvij[2][21] = 1.002212182; - btij[2][21] = 0.999069843; - gtij[2][21] = 0.990034831; // N2-Ar - bvij[3][4] = 1.002525718; - gvij[3][4] = 1.032876701; - btij[3][4] = 1.013871147; - gtij[3][4] = 0.90094953; // CO2-C2H6 - bvij[3][5] = 0.996898004; - gvij[3][5] = 1.047596298; - btij[3][5] = 1.033620538; - gtij[3][5] = 0.908772477; // CO2-C3H8 - bvij[3][6] = 1.076551882; - gvij[3][6] = 1.081909003; - btij[3][6] = 1.023339824; - gtij[3][6] = 0.929982936; // CO2-i-C4H10 - bvij[3][7] = 1.174760923; - gvij[3][7] = 1.222437324; - btij[3][7] = 1.018171004; - gtij[3][7] = 0.911498231; // CO2-C4H10 - bvij[3][8] = 1.060793104; - gvij[3][8] = 1.116793198; - btij[3][8] = 1.019180957; - gtij[3][8] = 0.961218039; // CO2-i-C5H12 - bvij[3][9] = 1.024311498; - gvij[3][9] = 1.068406078; - btij[3][9] = 1.027000795; - gtij[3][9] = 0.979217302; // CO2-C5H12 - bvij[3][10] = 1; - gvij[3][10] = 0.851343711; - btij[3][10] = 1; - gtij[3][10] = 1.038675574; // CO2-C6H14 - bvij[3][11] = 1.205469976; - gvij[3][11] = 1.164585914; - btij[3][11] = 1.011806317; - gtij[3][11] = 1.046169823; // CO2-C7H16 - bvij[3][12] = 1.026169373; - gvij[3][12] = 1.104043935; - btij[3][12] = 1.02969078; - gtij[3][12] = 1.074455386; // CO2-C8H18 - bvij[3][13] = 1; - gvij[3][13] = 0.973386152; - btij[3][13] = 1.00768862; - gtij[3][13] = 1.140671202; // CO2-C9H20 - bvij[3][14] = 1.000151132; - gvij[3][14] = 1.183394668; - btij[3][14] = 1.02002879; - gtij[3][14] = 1.145512213; // CO2-C10H22 - bvij[3][15] = 0.904142159; - gvij[3][15] = 1.15279255; - btij[3][15] = 0.942320195; - gtij[3][15] = 1.782924792; // CO2-H2 - bvij[3][16] = 1; - gvij[3][16] = 1; - btij[3][16] = 1; - gtij[3][16] = 1; // CO2-O2 - bvij[3][17] = 1; - gvij[3][17] = 1; - btij[3][17] = 1; - gtij[3][17] = 1; // CO2-CO - bvij[3][18] = 0.949055959; - gvij[3][18] = 1.542328793; - btij[3][18] = 0.997372205; - gtij[3][18] = 0.775453996; // CO2-H2O - bvij[3][19] = 0.906630564; - gvij[3][19] = 1.024085837; - btij[3][19] = 1.016034583; - gtij[3][19] = 0.92601888; // CO2-H2S - bvij[3][20] = 0.846647561; - gvij[3][20] = 0.864141549; - btij[3][20] = 0.76837763; - gtij[3][20] = 3.207456948; // CO2-He - bvij[3][21] = 1.008392428; - gvij[3][21] = 1.029205465; - btij[3][21] = 0.996512863; - gtij[3][21] = 1.050971635; // CO2-Ar - bvij[4][5] = 0.997607277; - gvij[4][5] = 1.00303472; - btij[4][5] = 0.996199694; - gtij[4][5] = 1.01473019; // C2H6-C3H8 - bvij[4][6] = 1; - gvij[4][6] = 1.006616886; - btij[4][6] = 1; - gtij[4][6] = 1.033283811; // C2H6-i-C4H10 - bvij[4][7] = 0.999157205; - gvij[4][7] = 1.006179146; - btij[4][7] = 0.999130554; - gtij[4][7] = 1.034832749; // C2H6-C4H10 - bvij[4][8] = 1; - gvij[4][8] = 1.045439935; - btij[4][8] = 1; - gtij[4][8] = 1.021150247; // C2H6-i-C5H12 - bvij[4][9] = 0.993851009; - gvij[4][9] = 1.026085655; - btij[4][9] = 0.998688946; - gtij[4][9] = 1.066665676; // C2H6-C5H12 - bvij[4][10] = 1; - gvij[4][10] = 1.169701102; - btij[4][10] = 1; - gtij[4][10] = 1.092177796; // C2H6-C6H14 - bvij[4][11] = 1; - gvij[4][11] = 1.057666085; - btij[4][11] = 1; - gtij[4][11] = 1.134532014; // C2H6-C7H16 - bvij[4][12] = 1.007469726; - gvij[4][12] = 1.071917985; - btij[4][12] = 0.984068272; - gtij[4][12] = 1.168636194; // C2H6-C8H18 - bvij[4][13] = 1; - gvij[4][13] = 1.14353473; - btij[4][13] = 1; - gtij[4][13] = 1.05603303; // C2H6-C9H20 - bvij[4][14] = 0.995676258; - gvij[4][14] = 1.098361281; - btij[4][14] = 0.970918061; - gtij[4][14] = 1.237191558; // C2H6-C10H22 - bvij[4][15] = 0.925367171; - gvij[4][15] = 1.10607204; - btij[4][15] = 0.932969831; - gtij[4][15] = 1.902008495; // C2H6-H2 - bvij[4][16] = 1; - gvij[4][16] = 1; - btij[4][16] = 1; - gtij[4][16] = 1; // C2H6-O2 - bvij[4][17] = 1; - gvij[4][17] = 1.201417898; - btij[4][17] = 1; - gtij[4][17] = 1.069224728; // C2H6-CO - bvij[4][18] = 1; - gvij[4][18] = 1; - btij[4][18] = 1; - gtij[4][18] = 1; // C2H6-H2O - bvij[4][19] = 1.010817909; - gvij[4][19] = 1.030988277; - btij[4][19] = 0.990197354; - gtij[4][19] = 0.90273666; // C2H6-H2S - bvij[4][20] = 1; - gvij[4][20] = 1; - btij[4][20] = 1; - gtij[4][20] = 1; // C2H6-He - bvij[4][21] = 1; - gvij[4][21] = 1; - btij[4][21] = 1; - gtij[4][21] = 1; // C2H6-Ar - bvij[5][6] = 0.999243146; - gvij[5][6] = 1.001156119; - btij[5][6] = 0.998012298; - gtij[5][6] = 1.005250774; // C3H8-i-C4H10 - bvij[5][7] = 0.999795868; - gvij[5][7] = 1.003264179; - btij[5][7] = 1.000310289; - gtij[5][7] = 1.007392782; // C3H8-C4H10 - bvij[5][8] = 1.040459289; - gvij[5][8] = 0.999432118; - btij[5][8] = 0.994364425; - gtij[5][8] = 1.0032695; // C3H8-i-C5H12 - bvij[5][9] = 1.044919431; - gvij[5][9] = 1.019921513; - btij[5][9] = 0.996484021; - gtij[5][9] = 1.008344412; // C3H8-C5H12 - bvij[5][10] = 1; - gvij[5][10] = 1.057872566; - btij[5][10] = 1; - gtij[5][10] = 1.025657518; // C3H8-C6H14 - bvij[5][11] = 1; - gvij[5][11] = 1.079648053; - btij[5][11] = 1; - gtij[5][11] = 1.050044169; // C3H8-C7H16 - bvij[5][12] = 1; - gvij[5][12] = 1.102764612; - btij[5][12] = 1; - gtij[5][12] = 1.063694129; // C3H8-C8H18 - bvij[5][13] = 1; - gvij[5][13] = 1.199769134; - btij[5][13] = 1; - gtij[5][13] = 1.109973833; // C3H8-C9H20 - bvij[5][14] = 0.984104227; - gvij[5][14] = 1.053040574; - btij[5][14] = 0.985331233; - gtij[5][14] = 1.140905252; // C3H8-C10H22 - bvij[5][15] = 1; - gvij[5][15] = 1.07400611; - btij[5][15] = 1; - gtij[5][15] = 2.308215191; // C3H8-H2 - bvij[5][16] = 1; - gvij[5][16] = 1; - btij[5][16] = 1; - gtij[5][16] = 1; // C3H8-O2 - bvij[5][17] = 1; - gvij[5][17] = 1.108143673; - btij[5][17] = 1; - gtij[5][17] = 1.197564208; // C3H8-CO - bvij[5][18] = 1; - gvij[5][18] = 1.011759763; - btij[5][18] = 1; - gtij[5][18] = 0.600340961; // C3H8-H2O - bvij[5][19] = 0.936811219; - gvij[5][19] = 1.010593999; - btij[5][19] = 0.992573556; - gtij[5][19] = 0.905829247; // C3H8-H2S - bvij[5][20] = 1; - gvij[5][20] = 1; - btij[5][20] = 1; - gtij[5][20] = 1; // C3H8-He - bvij[5][21] = 1; - gvij[5][21] = 1; - btij[5][21] = 1; - gtij[5][21] = 1; // C3H8-Ar - - // The beta values for isobutane+butane are the reciprocal values of those in the GERG-2008 - // publication because the order was reversed in this work. - bvij[6][7] = 0.999120311; - gvij[6][7] = 1.00041444; - btij[6][7] = 0.999922459; - gtij[6][7] = 1.001432824; // C4H10-i-C4H10 - - bvij[6][8] = 1; - gvij[6][8] = 1.002284353; - btij[6][8] = 1; - gtij[6][8] = 1.001835788; // i-C4H10-i-C5H1 - bvij[6][9] = 1; - gvij[6][9] = 1.002779804; - btij[6][9] = 1; - gtij[6][9] = 1.002495889; // i-C4H10-C5H12 - bvij[6][10] = 1; - gvij[6][10] = 1.010493989; - btij[6][10] = 1; - gtij[6][10] = 1.006018054; // i-C4H10-C6H14 - bvij[6][11] = 1; - gvij[6][11] = 1.021668316; - btij[6][11] = 1; - gtij[6][11] = 1.00988576; // i-C4H10-C7H16 - bvij[6][12] = 1; - gvij[6][12] = 1.032807063; - btij[6][12] = 1; - gtij[6][12] = 1.013945424; // i-C4H10-C8H18 - bvij[6][13] = 1; - gvij[6][13] = 1.047298475; - btij[6][13] = 1; - gtij[6][13] = 1.017817492; // i-C4H10-C9H20 - bvij[6][14] = 1; - gvij[6][14] = 1.060243344; - btij[6][14] = 1; - gtij[6][14] = 1.021624748; // i-C4H10-C10H22 - bvij[6][15] = 1; - gvij[6][15] = 1.147595688; - btij[6][15] = 1; - gtij[6][15] = 1.895305393; // i-C4H10-H2 - bvij[6][16] = 1; - gvij[6][16] = 1; - btij[6][16] = 1; - gtij[6][16] = 1; // i-C4H10-O2 - bvij[6][17] = 1; - gvij[6][17] = 1.087272232; - btij[6][17] = 1; - gtij[6][17] = 1.161390082; // i-C4H10-CO - bvij[6][18] = 1; - gvij[6][18] = 1; - btij[6][18] = 1; - gtij[6][18] = 1; // i-C4H10-H2O - bvij[6][19] = 1.012994431; - gvij[6][19] = 0.988591117; - btij[6][19] = 0.974550548; - gtij[6][19] = 0.937130844; // i-C4H10-H2S - bvij[6][20] = 1; - gvij[6][20] = 1; - btij[6][20] = 1; - gtij[6][20] = 1; // i-C4H10-He - bvij[6][21] = 1; - gvij[6][21] = 1; - btij[6][21] = 1; - gtij[6][21] = 1; // i-C4H10-Ar - bvij[7][8] = 1; - gvij[7][8] = 1.002728434; - btij[7][8] = 1; - gtij[7][8] = 1.000792201; // C4H10-i-C5H12 - bvij[7][9] = 1; - gvij[7][9] = 1.01815965; - btij[7][9] = 1; - gtij[7][9] = 1.00214364; // C4H10-C5H12 - bvij[7][10] = 1; - gvij[7][10] = 1.034995284; - btij[7][10] = 1; - gtij[7][10] = 1.00915706; // C4H10-C6H14 - bvij[7][11] = 1; - gvij[7][11] = 1.019174227; - btij[7][11] = 1; - gtij[7][11] = 1.021283378; // C4H10-C7H16 - bvij[7][12] = 1; - gvij[7][12] = 1.046905515; - btij[7][12] = 1; - gtij[7][12] = 1.033180106; // C4H10-C8H18 - bvij[7][13] = 1; - gvij[7][13] = 1.049219137; - btij[7][13] = 1; - gtij[7][13] = 1.014096448; // C4H10-C9H20 - bvij[7][14] = 0.976951968; - gvij[7][14] = 1.027845529; - btij[7][14] = 0.993688386; - gtij[7][14] = 1.076466918; // C4H10-C10H22 - bvij[7][15] = 1; - gvij[7][15] = 1.232939523; - btij[7][15] = 1; - gtij[7][15] = 2.509259945; // C4H10-H2 - bvij[7][16] = 1; - gvij[7][16] = 1; - btij[7][16] = 1; - gtij[7][16] = 1; // C4H10-O2 - bvij[7][17] = 1; - gvij[7][17] = 1.084740904; - btij[7][17] = 1; - gtij[7][17] = 1.173916162; // C4H10-CO - bvij[7][18] = 1; - gvij[7][18] = 1.223638763; - btij[7][18] = 1; - gtij[7][18] = 0.615512682; // C4H10-H2O - bvij[7][19] = 0.908113163; - gvij[7][19] = 1.033366041; - btij[7][19] = 0.985962886; - gtij[7][19] = 0.926156602; // C4H10-H2S - bvij[7][20] = 1; - gvij[7][20] = 1; - btij[7][20] = 1; - gtij[7][20] = 1; // C4H10-He - bvij[7][21] = 1; - gvij[7][21] = 1.214638734; - btij[7][21] = 1; - gtij[7][21] = 1.245039498; // C4H10-Ar - bvij[8][9] = 1; - gvij[8][9] = 1.000024335; - btij[8][9] = 1; - gtij[8][9] = 1.000050537; // C5H12-i-C5H12 - bvij[8][10] = 1; - gvij[8][10] = 1.002995876; - btij[8][10] = 1; - gtij[8][10] = 1.001204174; // i-C5H12-C6H14 - bvij[8][11] = 1; - gvij[8][11] = 1.009928206; - btij[8][11] = 1; - gtij[8][11] = 1.003194615; // i-C5H12-C7H16 - bvij[8][12] = 1; - gvij[8][12] = 1.017880545; - btij[8][12] = 1; - gtij[8][12] = 1.00564748; // i-C5H12-C8H18 - bvij[8][13] = 1; - gvij[8][13] = 1.028994325; - btij[8][13] = 1; - gtij[8][13] = 1.008191499; // i-C5H12-C9H20 - bvij[8][14] = 1; - gvij[8][14] = 1.039372957; - btij[8][14] = 1; - gtij[8][14] = 1.010825138; // i-C5H12-C10H22 - bvij[8][15] = 1; - gvij[8][15] = 1.184340443; - btij[8][15] = 1; - gtij[8][15] = 1.996386669; // i-C5H12-H2 - bvij[8][16] = 1; - gvij[8][16] = 1; - btij[8][16] = 1; - gtij[8][16] = 1; // i-C5H12-O2 - bvij[8][17] = 1; - gvij[8][17] = 1.116694577; - btij[8][17] = 1; - gtij[8][17] = 1.199326059; // i-C5H12-CO - bvij[8][18] = 1; - gvij[8][18] = 1; - btij[8][18] = 1; - gtij[8][18] = 1; // i-C5H12-H2O - bvij[8][19] = 1; - gvij[8][19] = 0.835763343; - btij[8][19] = 1; - gtij[8][19] = 0.982651529; // i-C5H12-H2S - bvij[8][20] = 1; - gvij[8][20] = 1; - btij[8][20] = 1; - gtij[8][20] = 1; // i-C5H12-He - bvij[8][21] = 1; - gvij[8][21] = 1; - btij[8][21] = 1; - gtij[8][21] = 1; // i-C5H12-Ar - bvij[9][10] = 1; - gvij[9][10] = 1.002480637; - btij[9][10] = 1; - gtij[9][10] = 1.000761237; // C5H12-C6H14 - bvij[9][11] = 1; - gvij[9][11] = 1.008972412; - btij[9][11] = 1; - gtij[9][11] = 1.002441051; // C5H12-C7H16 - bvij[9][12] = 1; - gvij[9][12] = 1.069223964; - btij[9][12] = 1; - gtij[9][12] = 1.016422347; // C5H12-C8H18 - bvij[9][13] = 1; - gvij[9][13] = 1.034910633; - btij[9][13] = 1; - gtij[9][13] = 1.103421755; // C5H12-C9H20 - bvij[9][14] = 1; - gvij[9][14] = 1.016370338; - btij[9][14] = 1; - gtij[9][14] = 1.049035838; // C5H12-C10H22 - bvij[9][15] = 1; - gvij[9][15] = 1.188334783; - btij[9][15] = 1; - gtij[9][15] = 2.013859174; // C5H12-H2 - bvij[9][16] = 1; - gvij[9][16] = 1; - btij[9][16] = 1; - gtij[9][16] = 1; // C5H12-O2 - bvij[9][17] = 1; - gvij[9][17] = 1.119954454; - btij[9][17] = 1; - gtij[9][17] = 1.206043295; // C5H12-CO - bvij[9][18] = 1; - gvij[9][18] = 0.95667731; - btij[9][18] = 1; - gtij[9][18] = 0.447666011; // C5H12-H2O - bvij[9][19] = 0.984613203; - gvij[9][19] = 1.076539234; - btij[9][19] = 0.962006651; - gtij[9][19] = 0.959065662; // C5H12-H2S - bvij[9][20] = 1; - gvij[9][20] = 1; - btij[9][20] = 1; - gtij[9][20] = 1; // C5H12-He - bvij[9][21] = 1; - gvij[9][21] = 1; - btij[9][21] = 1; - gtij[9][21] = 1; // C5H12-Ar - bvij[10][11] = 1; - gvij[10][11] = 1.001508227; - btij[10][11] = 1; - gtij[10][11] = 0.999762786; // C6H14-C7H16 - bvij[10][12] = 1; - gvij[10][12] = 1.006268954; - btij[10][12] = 1; - gtij[10][12] = 1.001633952; // C6H14-C8H18 - bvij[10][13] = 1; - gvij[10][13] = 1.02076168; - btij[10][13] = 1; - gtij[10][13] = 1.055369591; // C6H14-C9H20 - bvij[10][14] = 1.001516371; - gvij[10][14] = 1.013511439; - btij[10][14] = 0.99764101; - gtij[10][14] = 1.028939539; // C6H14-C10H22 - bvij[10][15] = 1; - gvij[10][15] = 1.243461678; - btij[10][15] = 1; - gtij[10][15] = 3.021197546; // C6H14-H2 - bvij[10][16] = 1; - gvij[10][16] = 1; - btij[10][16] = 1; - gtij[10][16] = 1; // C6H14-O2 - bvij[10][17] = 1; - gvij[10][17] = 1.155145836; - btij[10][17] = 1; - gtij[10][17] = 1.233272781; // C6H14-CO - bvij[10][18] = 1; - gvij[10][18] = 1.170217596; - btij[10][18] = 1; - gtij[10][18] = 0.569681333; // C6H14-H2O - bvij[10][19] = 0.754473958; - gvij[10][19] = 1.339283552; - btij[10][19] = 0.985891113; - gtij[10][19] = 0.956075596; // C6H14-H2S - bvij[10][20] = 1; - gvij[10][20] = 1; - btij[10][20] = 1; - gtij[10][20] = 1; // C6H14-He - bvij[10][21] = 1; - gvij[10][21] = 1; - btij[10][21] = 1; - gtij[10][21] = 1; // C6H14-Ar - bvij[11][12] = 1; - gvij[11][12] = 1.006767176; - btij[11][12] = 1; - gtij[11][12] = 0.998793111; // C7H16-C8H18 - bvij[11][13] = 1; - gvij[11][13] = 1.001370076; - btij[11][13] = 1; - gtij[11][13] = 1.001150096; // C7H16-C9H20 - bvij[11][14] = 1; - gvij[11][14] = 1.002972346; - btij[11][14] = 1; - gtij[11][14] = 1.002229938; // C7H16-C10H22 - bvij[11][15] = 1; - gvij[11][15] = 1.159131722; - btij[11][15] = 1; - gtij[11][15] = 3.169143057; // C7H16-H2 - bvij[11][16] = 1; - gvij[11][16] = 1; - btij[11][16] = 1; - gtij[11][16] = 1; // C7H16-O2 - bvij[11][17] = 1; - gvij[11][17] = 1.190354273; - btij[11][17] = 1; - gtij[11][17] = 1.256123503; // C7H16-CO - bvij[11][18] = 1; - gvij[11][18] = 1; - btij[11][18] = 1; - gtij[11][18] = 1; // C7H16-H2O - bvij[11][19] = 0.828967164; - gvij[11][19] = 1.087956749; - btij[11][19] = 0.988937417; - gtij[11][19] = 1.013453092; // C7H16-H2S - bvij[11][20] = 1; - gvij[11][20] = 1; - btij[11][20] = 1; - gtij[11][20] = 1; // C7H16-He - bvij[11][21] = 1; - gvij[11][21] = 1; - btij[11][21] = 1; - gtij[11][21] = 1; // C7H16-Ar - bvij[12][13] = 1; - gvij[12][13] = 1.001357085; - btij[12][13] = 1; - gtij[12][13] = 1.000235044; // C8H18-C9H20 - bvij[12][14] = 1; - gvij[12][14] = 1.002553544; - btij[12][14] = 1; - gtij[12][14] = 1.007186267; // C8H18-C10H22 - bvij[12][15] = 1; - gvij[12][15] = 1.305249405; - btij[12][15] = 1; - gtij[12][15] = 2.191555216; // C8H18-H2 - bvij[12][16] = 1; - gvij[12][16] = 1; - btij[12][16] = 1; - gtij[12][16] = 1; // C8H18-O2 - bvij[12][17] = 1; - gvij[12][17] = 1.219206702; - btij[12][17] = 1; - gtij[12][17] = 1.276565536; // C8H18-CO - bvij[12][18] = 1; - gvij[12][18] = 0.599484191; - btij[12][18] = 1; - gtij[12][18] = 0.662072469; // C8H18-H2O - bvij[12][19] = 1; - gvij[12][19] = 1; - btij[12][19] = 1; - gtij[12][19] = 1; // C8H18-H2S - bvij[12][20] = 1; - gvij[12][20] = 1; - btij[12][20] = 1; - gtij[12][20] = 1; // C8H18-He - bvij[12][21] = 1; - gvij[12][21] = 1; - btij[12][21] = 1; - gtij[12][21] = 1; // C8H18-Ar - bvij[13][14] = 1; - gvij[13][14] = 1.00081052; - btij[13][14] = 1; - gtij[13][14] = 1.000182392; // C9H20-C10H22 - bvij[13][15] = 1; - gvij[13][15] = 1.342647661; - btij[13][15] = 1; - gtij[13][15] = 2.23435404; // C9H20-H2 - bvij[13][16] = 1; - gvij[13][16] = 1; - btij[13][16] = 1; - gtij[13][16] = 1; // C9H20-O2 - bvij[13][17] = 1; - gvij[13][17] = 1.252151449; - btij[13][17] = 1; - gtij[13][17] = 1.294070556; // C9H20-CO - bvij[13][18] = 1; - gvij[13][18] = 1; - btij[13][18] = 1; - gtij[13][18] = 1; // C9H20-H2O - bvij[13][19] = 1; - gvij[13][19] = 1.082905109; - btij[13][19] = 1; - gtij[13][19] = 1.086557826; // C9H20-H2S - bvij[13][20] = 1; - gvij[13][20] = 1; - btij[13][20] = 1; - gtij[13][20] = 1; // C9H20-He - bvij[13][21] = 1; - gvij[13][21] = 1; - btij[13][21] = 1; - gtij[13][21] = 1; // C9H20-Ar - bvij[14][15] = 1.695358382; - gvij[14][15] = 1.120233729; - btij[14][15] = 1.064818089; - gtij[14][15] = 3.786003724; // C10H22-H2 - bvij[14][16] = 1; - gvij[14][16] = 1; - btij[14][16] = 1; - gtij[14][16] = 1; // C10H22-O2 - bvij[14][17] = 1; - gvij[14][17] = 0.87018496; - btij[14][17] = 1.049594632; - gtij[14][17] = 1.803567587; // C10H22-CO - bvij[14][18] = 1; - gvij[14][18] = 0.551405318; - btij[14][18] = 0.897162268; - gtij[14][18] = 0.740416402; // C10H22-H2O - bvij[14][19] = 0.975187766; - gvij[14][19] = 1.171714677; - btij[14][19] = 0.973091413; - gtij[14][19] = 1.103693489; // C10H22-H2S - bvij[14][20] = 1; - gvij[14][20] = 1; - btij[14][20] = 1; - gtij[14][20] = 1; // C10H22-He - bvij[14][21] = 1; - gvij[14][21] = 1; - btij[14][21] = 1; - gtij[14][21] = 1; // C10H22-Ar - bvij[15][16] = 1; - gvij[15][16] = 1; - btij[15][16] = 1; - gtij[15][16] = 1; // H2-O2 - bvij[15][17] = 1; - gvij[15][17] = 1.121416201; - btij[15][17] = 1; - gtij[15][17] = 1.377504607; // H2-CO - bvij[15][18] = 1; - gvij[15][18] = 1; - btij[15][18] = 1; - gtij[15][18] = 1; // H2-H2O - bvij[15][19] = 1; - gvij[15][19] = 1; - btij[15][19] = 1; - gtij[15][19] = 1; // H2-H2S - bvij[15][20] = 1; - gvij[15][20] = 1; - btij[15][20] = 1; - gtij[15][20] = 1; // H2-He - bvij[15][21] = 1; - gvij[15][21] = 1; - btij[15][21] = 1; - gtij[15][21] = 1; // H2-Ar - bvij[16][17] = 1; - gvij[16][17] = 1; - btij[16][17] = 1; - gtij[16][17] = 1; // O2-CO - bvij[16][18] = 1; - gvij[16][18] = 1.143174289; - btij[16][18] = 1; - gtij[16][18] = 0.964767932; // O2-H2O - bvij[16][19] = 1; - gvij[16][19] = 1; - btij[16][19] = 1; - gtij[16][19] = 1; // O2-H2S - bvij[16][20] = 1; - gvij[16][20] = 1; - btij[16][20] = 1; - gtij[16][20] = 1; // O2-He - bvij[16][21] = 0.999746847; - gvij[16][21] = 0.993907223; - btij[16][21] = 1.000023103; - gtij[16][21] = 0.990430423; // O2-Ar - bvij[17][18] = 1; - gvij[17][18] = 1; - btij[17][18] = 1; - gtij[17][18] = 1; // CO-H2O - bvij[17][19] = 0.795660392; - gvij[17][19] = 1.101731308; - btij[17][19] = 1.025536736; - gtij[17][19] = 1.022749748; // CO-H2S - bvij[17][20] = 1; - gvij[17][20] = 1; - btij[17][20] = 1; - gtij[17][20] = 1; // CO-He - bvij[17][21] = 1; - gvij[17][21] = 1.159720623; - btij[17][21] = 1; - gtij[17][21] = 0.954215746; // CO-Ar - bvij[18][19] = 1; - gvij[18][19] = 1.014832832; - btij[18][19] = 1; - gtij[18][19] = 0.940587083; // H2O-H2S - bvij[18][20] = 1; - gvij[18][20] = 1; - btij[18][20] = 1; - gtij[18][20] = 1; // H2O-He - bvij[18][21] = 1; - gvij[18][21] = 1.038993495; - btij[18][21] = 1; - gtij[18][21] = 1.070941866; // H2O-Ar - bvij[19][20] = 1; - gvij[19][20] = 1; - btij[19][20] = 1; - gtij[19][20] = 1; // H2S-He - bvij[19][21] = 1; - gvij[19][21] = 1; - btij[19][21] = 1; - gtij[19][21] = 1; // H2S-Ar - bvij[20][21] = 1; - gvij[20][21] = 1; - btij[20][21] = 1; - gtij[20][21] = 1; // He-Ar - - for (int i = 1; i <= MaxFlds; ++i) { - bvij[i][i] = 1; - btij[i][i] = 1; - gvij[i][i] = 1 / Dc[i]; - gtij[i][i] = Tc[i]; - for (int j = i + 1; j <= MaxFlds; ++j) { - gvij[i][j] = gvij[i][j] * bvij[i][j] * Math.pow(Vc3[i] + Vc3[j], 3); - gtij[i][j] = gtij[i][j] * btij[i][j] * Tc2[i] * Tc2[j]; - bvij[i][j] = Math.pow(bvij[i][j], 2); - btij[i][j] = Math.pow(btij[i][j], 2); - } - } + // Model numbers for excess functions, 10 is for generalized equation + mNumb[1][2] = 3; + mNumb[1][3] = 4; + mNumb[1][4] = 1; + mNumb[1][5] = 2; + mNumb[1][6] = 10; + mNumb[1][7] = 10; + mNumb[1][15] = 7; + mNumb[2][3] = 5; + mNumb[2][4] = 6; + mNumb[4][5] = 10; + mNumb[4][6] = 10; + mNumb[4][7] = 10; + mNumb[5][6] = 10; + mNumb[5][7] = 10; + mNumb[6][7] = 10; + + // Ideal gas parameters + n0i[1][3] = 4.00088; + n0i[1][4] = 0.76315; + n0i[1][5] = 0.0046; + n0i[1][6] = 8.74432; + n0i[1][7] = -4.46921; + n0i[1][1] = 29.83843397; + n0i[1][2] = -15999.69151; + n0i[2][3] = 3.50031; + n0i[2][4] = 0.13732; + n0i[2][5] = -0.1466; + n0i[2][6] = 0.90066; + n0i[2][7] = 0; + n0i[2][1] = 17.56770785; + n0i[2][2] = -2801.729072; + n0i[3][3] = 3.50002; + n0i[3][4] = 2.04452; + n0i[3][5] = -1.06044; + n0i[3][6] = 2.03366; + n0i[3][7] = 0.01393; + n0i[3][1] = 20.65844696; + n0i[3][2] = -4902.171516; + n0i[4][3] = 4.00263; + n0i[4][4] = 4.33939; + n0i[4][5] = 1.23722; + n0i[4][6] = 13.1974; + n0i[4][7] = -6.01989; + n0i[4][1] = 36.73005938; + n0i[4][2] = -23639.65301; + n0i[5][3] = 4.02939; + n0i[5][4] = 6.60569; + n0i[5][5] = 3.197; + n0i[5][6] = 19.1921; + n0i[5][7] = -8.37267; + n0i[5][1] = 44.70909619; + n0i[5][2] = -31236.63551; + n0i[6][3] = 4.06714; + n0i[6][4] = 8.97575; + n0i[6][5] = 5.25156; + n0i[6][6] = 25.1423; + n0i[6][7] = 16.1388; + n0i[6][1] = 34.30180349; + n0i[6][2] = -38525.50276; + n0i[7][3] = 4.33944; + n0i[7][4] = 9.44893; + n0i[7][5] = 6.89406; + n0i[7][6] = 24.4618; + n0i[7][7] = 14.7824; + n0i[7][1] = 36.53237783; + n0i[7][2] = -38957.80933; + n0i[8][3] = 4; + n0i[8][4] = 11.7618; + n0i[8][5] = 20.1101; + n0i[8][6] = 33.1688; + n0i[8][7] = 0; + n0i[8][1] = 43.17218626; + n0i[8][2] = -51198.30946; + n0i[9][3] = 4; + n0i[9][4] = 8.95043; + n0i[9][5] = 21.836; + n0i[9][6] = 33.4032; + n0i[9][7] = 0; + n0i[9][1] = 42.67837089; + n0i[9][2] = -45215.83; + n0i[10][3] = 4; + n0i[10][4] = 11.6977; + n0i[10][5] = 26.8142; + n0i[10][6] = 38.6164; + n0i[10][7] = 0; + n0i[10][1] = 46.99717188; + n0i[10][2] = -52746.83318; + n0i[11][3] = 4; + n0i[11][4] = 13.7266; + n0i[11][5] = 30.4707; + n0i[11][6] = 43.5561; + n0i[11][7] = 0; + n0i[11][1] = 52.07631631; + n0i[11][2] = -57104.81056; + n0i[12][3] = 4; + n0i[12][4] = 15.6865; + n0i[12][5] = 33.8029; + n0i[12][6] = 48.1731; + n0i[12][7] = 0; + n0i[12][1] = 57.25830934; + n0i[12][2] = -60546.76385; + n0i[13][3] = 4; + n0i[13][4] = 18.0241; + n0i[13][5] = 38.1235; + n0i[13][6] = 53.3415; + n0i[13][7] = 0; + n0i[13][1] = 62.09646901; + n0i[13][2] = -66600.12837; + n0i[14][3] = 4; + n0i[14][4] = 21.0069; + n0i[14][5] = 43.4931; + n0i[14][6] = 58.3657; + n0i[14][7] = 0; + n0i[14][1] = 65.93909154; + n0i[14][2] = -74131.45483; + n0i[15][3] = 2.47906; + n0i[15][4] = 0.95806; + n0i[15][5] = 0.45444; + n0i[15][6] = 1.56039; + n0i[15][7] = -1.3756; + n0i[15][1] = 13.07520288; + n0i[15][2] = -5836.943696; + n0i[16][3] = 3.50146; + n0i[16][4] = 1.07558; + n0i[16][5] = 1.01334; + n0i[16][6] = 0; + n0i[16][7] = 0; + n0i[16][1] = 16.8017173; + n0i[16][2] = -2318.32269; + n0i[17][3] = 3.50055; + n0i[17][4] = 1.02865; + n0i[17][5] = 0.00493; + n0i[17][6] = 0; + n0i[17][7] = 0; + n0i[17][1] = 17.45786899; + n0i[17][2] = -2635.244116; + n0i[18][3] = 4.00392; + n0i[18][4] = 0.01059; + n0i[18][5] = 0.98763; + n0i[18][6] = 3.06904; + n0i[18][7] = 0; + n0i[18][1] = 21.57882705; + n0i[18][2] = -7766.733078; + n0i[19][3] = 4; + n0i[19][4] = 3.11942; + n0i[19][5] = 1.00243; + n0i[19][6] = 0; + n0i[19][7] = 0; + n0i[19][1] = 21.5830944; + n0i[19][2] = -6069.035869; + n0i[20][3] = 2.5; + n0i[20][4] = 0; + n0i[20][5] = 0; + n0i[20][6] = 0; + n0i[20][7] = 0; + n0i[20][1] = 10.04639507; + n0i[20][2] = -745.375; + n0i[21][3] = 2.5; + n0i[21][4] = 0; + n0i[21][5] = 0; + n0i[21][6] = 0; + n0i[21][7] = 0; + n0i[21][1] = 10.04639507; + n0i[21][2] = -745.375; + th0i[1][4] = 820.659; + th0i[1][5] = 178.41; + th0i[1][6] = 1062.82; + th0i[1][7] = 1090.53; + th0i[2][4] = 662.738; + th0i[2][5] = 680.562; + th0i[2][6] = 1740.06; + th0i[2][7] = 0; + th0i[3][4] = 919.306; + th0i[3][5] = 865.07; + th0i[3][6] = 483.553; + th0i[3][7] = 341.109; + th0i[4][4] = 559.314; + th0i[4][5] = 223.284; + th0i[4][6] = 1031.38; + th0i[4][7] = 1071.29; + th0i[5][4] = 479.856; + th0i[5][5] = 200.893; + th0i[5][6] = 955.312; + th0i[5][7] = 1027.29; + th0i[6][4] = 438.27; + th0i[6][5] = 198.018; + th0i[6][6] = 1905.02; + th0i[6][7] = 893.765; + th0i[7][4] = 468.27; + th0i[7][5] = 183.636; + th0i[7][6] = 1914.1; + th0i[7][7] = 903.185; + th0i[8][4] = 292.503; + th0i[8][5] = 910.237; + th0i[8][6] = 1919.37; + th0i[8][7] = 0; + th0i[9][4] = 178.67; + th0i[9][5] = 840.538; + th0i[9][6] = 1774.25; + th0i[9][7] = 0; + th0i[10][4] = 182.326; + th0i[10][5] = 859.207; + th0i[10][6] = 1826.59; + th0i[10][7] = 0; + th0i[11][4] = 169.789; + th0i[11][5] = 836.195; + th0i[11][6] = 1760.46; + th0i[11][7] = 0; + th0i[12][4] = 158.922; + th0i[12][5] = 815.064; + th0i[12][6] = 1693.07; + th0i[12][7] = 0; + th0i[13][4] = 156.854; + th0i[13][5] = 814.882; + th0i[13][6] = 1693.79; + th0i[13][7] = 0; + th0i[14][4] = 164.947; + th0i[14][5] = 836.264; + th0i[14][6] = 1750.24; + th0i[14][7] = 0; + th0i[15][4] = 228.734; + th0i[15][5] = 326.843; + th0i[15][6] = 1651.71; + th0i[15][7] = 1671.69; + th0i[16][4] = 2235.71; + th0i[16][5] = 1116.69; + th0i[16][6] = 0; + th0i[16][7] = 0; + th0i[17][4] = 1550.45; + th0i[17][5] = 704.525; + th0i[17][6] = 0; + th0i[17][7] = 0; + th0i[18][4] = 268.795; + th0i[18][5] = 1141.41; + th0i[18][6] = 2507.37; + th0i[18][7] = 0; + th0i[19][4] = 1833.63; + th0i[19][5] = 847.181; + th0i[19][6] = 0; + th0i[19][7] = 0; + th0i[20][4] = 0; + th0i[20][5] = 0; + th0i[20][6] = 0; + th0i[20][7] = 0; + th0i[21][4] = 0; + th0i[21][5] = 0; + th0i[21][6] = 0; + th0i[21][7] = 0; + + // Mixture parameters for reducing variables + bvij[1][2] = 0.998721377; + gvij[1][2] = 1.013950311; + btij[1][2] = 0.99809883; + gtij[1][2] = 0.979273013; // CH4-N2 + bvij[1][3] = 0.999518072; + gvij[1][3] = 1.002806594; + btij[1][3] = 1.02262449; + gtij[1][3] = 0.975665369; // CH4-CO2 + bvij[1][4] = 0.997547866; + gvij[1][4] = 1.006617867; + btij[1][4] = 0.996336508; + gtij[1][4] = 1.049707697; // CH4-C2H6 + bvij[1][5] = 1.00482707; + gvij[1][5] = 1.038470657; + btij[1][5] = 0.989680305; + gtij[1][5] = 1.098655531; // CH4-C3H8 + bvij[1][6] = 1.011240388; + gvij[1][6] = 1.054319053; + btij[1][6] = 0.980315756; + gtij[1][6] = 1.161117729; // CH4-i-C4H10 + bvij[1][7] = 0.979105972; + gvij[1][7] = 1.045375122; + btij[1][7] = 0.99417491; + gtij[1][7] = 1.171607691; // CH4-C4H10 + bvij[1][8] = 1; + gvij[1][8] = 1.343685343; + btij[1][8] = 1; + gtij[1][8] = 1.188899743; // CH4-i-C5H12 + bvij[1][9] = 0.94833012; + gvij[1][9] = 1.124508039; + btij[1][9] = 0.992127525; + gtij[1][9] = 1.249173968; // CH4-C5H12 + bvij[1][10] = 0.958015294; + gvij[1][10] = 1.052643846; + btij[1][10] = 0.981844797; + gtij[1][10] = 1.330570181; // CH4-C6H14 + bvij[1][11] = 0.962050831; + gvij[1][11] = 1.156655935; + btij[1][11] = 0.977431529; + gtij[1][11] = 1.379850328; // CH4-C7H16 + bvij[1][12] = 0.994740603; + gvij[1][12] = 1.116549372; + btij[1][12] = 0.957473785; + gtij[1][12] = 1.449245409; // CH4-C8H18 + bvij[1][13] = 1.002852287; + gvij[1][13] = 1.141895355; + btij[1][13] = 0.947716769; + gtij[1][13] = 1.528532478; // CH4-C9H20 + bvij[1][14] = 1.033086292; + gvij[1][14] = 1.146089637; + btij[1][14] = 0.937777823; + gtij[1][14] = 1.568231489; // CH4-C10H22 + bvij[1][15] = 1; + gvij[1][15] = 1.018702573; + btij[1][15] = 1; + gtij[1][15] = 1.352643115; // CH4-H2 + bvij[1][16] = 1; + gvij[1][16] = 1; + btij[1][16] = 1; + gtij[1][16] = 0.95; // CH4-O2 + bvij[1][17] = 0.997340772; + gvij[1][17] = 1.006102927; + btij[1][17] = 0.987411732; + gtij[1][17] = 0.987473033; // CH4-CO + bvij[1][18] = 1.012783169; + gvij[1][18] = 1.585018334; + btij[1][18] = 1.063333913; + gtij[1][18] = 0.775810513; // CH4-H2O + bvij[1][19] = 1.012599087; + gvij[1][19] = 1.040161207; + btij[1][19] = 1.011090031; + gtij[1][19] = 0.961155729; // CH4-H2S + bvij[1][20] = 1; + gvij[1][20] = 0.881405683; + btij[1][20] = 1; + gtij[1][20] = 3.159776855; // CH4-He + bvij[1][21] = 1.034630259; + gvij[1][21] = 1.014678542; + btij[1][21] = 0.990954281; + gtij[1][21] = 0.989843388; // CH4-Ar + bvij[2][3] = 0.977794634; + gvij[2][3] = 1.047578256; + btij[2][3] = 1.005894529; + gtij[2][3] = 1.107654104; // N2-CO2 + bvij[2][4] = 0.978880168; + gvij[2][4] = 1.042352891; + btij[2][4] = 1.007671428; + gtij[2][4] = 1.098650964; // N2-C2H6 + bvij[2][5] = 0.974424681; + gvij[2][5] = 1.081025408; + btij[2][5] = 1.002677329; + gtij[2][5] = 1.201264026; // N2-C3H8 + bvij[2][6] = 0.98641583; + gvij[2][6] = 1.100576129; + btij[2][6] = 0.99286813; + gtij[2][6] = 1.284462634; // N2-i-C4H10 + bvij[2][7] = 0.99608261; + gvij[2][7] = 1.146949309; + btij[2][7] = 0.994515234; + gtij[2][7] = 1.304886838; // N2-C4H10 + bvij[2][8] = 1; + gvij[2][8] = 1.154135439; + btij[2][8] = 1; + gtij[2][8] = 1.38177077; // N2-i-C5H12 + bvij[2][9] = 1; + gvij[2][9] = 1.078877166; + btij[2][9] = 1; + gtij[2][9] = 1.419029041; // N2-C5H12 + bvij[2][10] = 1; + gvij[2][10] = 1.195952177; + btij[2][10] = 1; + gtij[2][10] = 1.472607971; // N2-C6H14 + bvij[2][11] = 1; + gvij[2][11] = 1.40455409; + btij[2][11] = 1; + gtij[2][11] = 1.520975334; // N2-C7H16 + bvij[2][12] = 1; + gvij[2][12] = 1.186067025; + btij[2][12] = 1; + gtij[2][12] = 1.733280051; // N2-C8H18 + bvij[2][13] = 1; + gvij[2][13] = 1.100405929; + btij[2][13] = 0.95637945; + gtij[2][13] = 1.749119996; // N2-C9H20 + bvij[2][14] = 1; + gvij[2][14] = 1; + btij[2][14] = 0.957934447; + gtij[2][14] = 1.822157123; // N2-C10H22 + bvij[2][15] = 0.972532065; + gvij[2][15] = 0.970115357; + btij[2][15] = 0.946134337; + gtij[2][15] = 1.175696583; // N2-H2 + bvij[2][16] = 0.99952177; + gvij[2][16] = 0.997082328; + btij[2][16] = 0.997190589; + gtij[2][16] = 0.995157044; // N2-O2 + bvij[2][17] = 1; + gvij[2][17] = 1.008690943; + btij[2][17] = 1; + gtij[2][17] = 0.993425388; // N2-CO + bvij[2][18] = 1; + gvij[2][18] = 1.094749685; + btij[2][18] = 1; + gtij[2][18] = 0.968808467; // N2-H2O + bvij[2][19] = 0.910394249; + gvij[2][19] = 1.256844157; + btij[2][19] = 1.004692366; + gtij[2][19] = 0.9601742; // N2-H2S + bvij[2][20] = 0.969501055; + gvij[2][20] = 0.932629867; + btij[2][20] = 0.692868765; + gtij[2][20] = 1.47183158; // N2-He + bvij[2][21] = 1.004166412; + gvij[2][21] = 1.002212182; + btij[2][21] = 0.999069843; + gtij[2][21] = 0.990034831; // N2-Ar + bvij[3][4] = 1.002525718; + gvij[3][4] = 1.032876701; + btij[3][4] = 1.013871147; + gtij[3][4] = 0.90094953; // CO2-C2H6 + bvij[3][5] = 0.996898004; + gvij[3][5] = 1.047596298; + btij[3][5] = 1.033620538; + gtij[3][5] = 0.908772477; // CO2-C3H8 + bvij[3][6] = 1.076551882; + gvij[3][6] = 1.081909003; + btij[3][6] = 1.023339824; + gtij[3][6] = 0.929982936; // CO2-i-C4H10 + bvij[3][7] = 1.174760923; + gvij[3][7] = 1.222437324; + btij[3][7] = 1.018171004; + gtij[3][7] = 0.911498231; // CO2-C4H10 + bvij[3][8] = 1.060793104; + gvij[3][8] = 1.116793198; + btij[3][8] = 1.019180957; + gtij[3][8] = 0.961218039; // CO2-i-C5H12 + bvij[3][9] = 1.024311498; + gvij[3][9] = 1.068406078; + btij[3][9] = 1.027000795; + gtij[3][9] = 0.979217302; // CO2-C5H12 + bvij[3][10] = 1; + gvij[3][10] = 0.851343711; + btij[3][10] = 1; + gtij[3][10] = 1.038675574; // CO2-C6H14 + bvij[3][11] = 1.205469976; + gvij[3][11] = 1.164585914; + btij[3][11] = 1.011806317; + gtij[3][11] = 1.046169823; // CO2-C7H16 + bvij[3][12] = 1.026169373; + gvij[3][12] = 1.104043935; + btij[3][12] = 1.02969078; + gtij[3][12] = 1.074455386; // CO2-C8H18 + bvij[3][13] = 1; + gvij[3][13] = 0.973386152; + btij[3][13] = 1.00768862; + gtij[3][13] = 1.140671202; // CO2-C9H20 + bvij[3][14] = 1.000151132; + gvij[3][14] = 1.183394668; + btij[3][14] = 1.02002879; + gtij[3][14] = 1.145512213; // CO2-C10H22 + bvij[3][15] = 0.904142159; + gvij[3][15] = 1.15279255; + btij[3][15] = 0.942320195; + gtij[3][15] = 1.782924792; // CO2-H2 + bvij[3][16] = 1; + gvij[3][16] = 1; + btij[3][16] = 1; + gtij[3][16] = 1; // CO2-O2 + bvij[3][17] = 1; + gvij[3][17] = 1; + btij[3][17] = 1; + gtij[3][17] = 1; // CO2-CO + bvij[3][18] = 0.949055959; + gvij[3][18] = 1.542328793; + btij[3][18] = 0.997372205; + gtij[3][18] = 0.775453996; // CO2-H2O + bvij[3][19] = 0.906630564; + gvij[3][19] = 1.024085837; + btij[3][19] = 1.016034583; + gtij[3][19] = 0.92601888; // CO2-H2S + bvij[3][20] = 0.846647561; + gvij[3][20] = 0.864141549; + btij[3][20] = 0.76837763; + gtij[3][20] = 3.207456948; // CO2-He + bvij[3][21] = 1.008392428; + gvij[3][21] = 1.029205465; + btij[3][21] = 0.996512863; + gtij[3][21] = 1.050971635; // CO2-Ar + bvij[4][5] = 0.997607277; + gvij[4][5] = 1.00303472; + btij[4][5] = 0.996199694; + gtij[4][5] = 1.01473019; // C2H6-C3H8 + bvij[4][6] = 1; + gvij[4][6] = 1.006616886; + btij[4][6] = 1; + gtij[4][6] = 1.033283811; // C2H6-i-C4H10 + bvij[4][7] = 0.999157205; + gvij[4][7] = 1.006179146; + btij[4][7] = 0.999130554; + gtij[4][7] = 1.034832749; // C2H6-C4H10 + bvij[4][8] = 1; + gvij[4][8] = 1.045439935; + btij[4][8] = 1; + gtij[4][8] = 1.021150247; // C2H6-i-C5H12 + bvij[4][9] = 0.993851009; + gvij[4][9] = 1.026085655; + btij[4][9] = 0.998688946; + gtij[4][9] = 1.066665676; // C2H6-C5H12 + bvij[4][10] = 1; + gvij[4][10] = 1.169701102; + btij[4][10] = 1; + gtij[4][10] = 1.092177796; // C2H6-C6H14 + bvij[4][11] = 1; + gvij[4][11] = 1.057666085; + btij[4][11] = 1; + gtij[4][11] = 1.134532014; // C2H6-C7H16 + bvij[4][12] = 1.007469726; + gvij[4][12] = 1.071917985; + btij[4][12] = 0.984068272; + gtij[4][12] = 1.168636194; // C2H6-C8H18 + bvij[4][13] = 1; + gvij[4][13] = 1.14353473; + btij[4][13] = 1; + gtij[4][13] = 1.05603303; // C2H6-C9H20 + bvij[4][14] = 0.995676258; + gvij[4][14] = 1.098361281; + btij[4][14] = 0.970918061; + gtij[4][14] = 1.237191558; // C2H6-C10H22 + bvij[4][15] = 0.925367171; + gvij[4][15] = 1.10607204; + btij[4][15] = 0.932969831; + gtij[4][15] = 1.902008495; // C2H6-H2 + bvij[4][16] = 1; + gvij[4][16] = 1; + btij[4][16] = 1; + gtij[4][16] = 1; // C2H6-O2 + bvij[4][17] = 1; + gvij[4][17] = 1.201417898; + btij[4][17] = 1; + gtij[4][17] = 1.069224728; // C2H6-CO + bvij[4][18] = 1; + gvij[4][18] = 1; + btij[4][18] = 1; + gtij[4][18] = 1; // C2H6-H2O + bvij[4][19] = 1.010817909; + gvij[4][19] = 1.030988277; + btij[4][19] = 0.990197354; + gtij[4][19] = 0.90273666; // C2H6-H2S + bvij[4][20] = 1; + gvij[4][20] = 1; + btij[4][20] = 1; + gtij[4][20] = 1; // C2H6-He + bvij[4][21] = 1; + gvij[4][21] = 1; + btij[4][21] = 1; + gtij[4][21] = 1; // C2H6-Ar + bvij[5][6] = 0.999243146; + gvij[5][6] = 1.001156119; + btij[5][6] = 0.998012298; + gtij[5][6] = 1.005250774; // C3H8-i-C4H10 + bvij[5][7] = 0.999795868; + gvij[5][7] = 1.003264179; + btij[5][7] = 1.000310289; + gtij[5][7] = 1.007392782; // C3H8-C4H10 + bvij[5][8] = 1.040459289; + gvij[5][8] = 0.999432118; + btij[5][8] = 0.994364425; + gtij[5][8] = 1.0032695; // C3H8-i-C5H12 + bvij[5][9] = 1.044919431; + gvij[5][9] = 1.019921513; + btij[5][9] = 0.996484021; + gtij[5][9] = 1.008344412; // C3H8-C5H12 + bvij[5][10] = 1; + gvij[5][10] = 1.057872566; + btij[5][10] = 1; + gtij[5][10] = 1.025657518; // C3H8-C6H14 + bvij[5][11] = 1; + gvij[5][11] = 1.079648053; + btij[5][11] = 1; + gtij[5][11] = 1.050044169; // C3H8-C7H16 + bvij[5][12] = 1; + gvij[5][12] = 1.102764612; + btij[5][12] = 1; + gtij[5][12] = 1.063694129; // C3H8-C8H18 + bvij[5][13] = 1; + gvij[5][13] = 1.199769134; + btij[5][13] = 1; + gtij[5][13] = 1.109973833; // C3H8-C9H20 + bvij[5][14] = 0.984104227; + gvij[5][14] = 1.053040574; + btij[5][14] = 0.985331233; + gtij[5][14] = 1.140905252; // C3H8-C10H22 + bvij[5][15] = 1; + gvij[5][15] = 1.07400611; + btij[5][15] = 1; + gtij[5][15] = 2.308215191; // C3H8-H2 + bvij[5][16] = 1; + gvij[5][16] = 1; + btij[5][16] = 1; + gtij[5][16] = 1; // C3H8-O2 + bvij[5][17] = 1; + gvij[5][17] = 1.108143673; + btij[5][17] = 1; + gtij[5][17] = 1.197564208; // C3H8-CO + bvij[5][18] = 1; + gvij[5][18] = 1.011759763; + btij[5][18] = 1; + gtij[5][18] = 0.600340961; // C3H8-H2O + bvij[5][19] = 0.936811219; + gvij[5][19] = 1.010593999; + btij[5][19] = 0.992573556; + gtij[5][19] = 0.905829247; // C3H8-H2S + bvij[5][20] = 1; + gvij[5][20] = 1; + btij[5][20] = 1; + gtij[5][20] = 1; // C3H8-He + bvij[5][21] = 1; + gvij[5][21] = 1; + btij[5][21] = 1; + gtij[5][21] = 1; // C3H8-Ar + + // The beta values for isobutane+butane are the reciprocal values of those in the GERG-2008 + // publication because the order was reversed in this work. + bvij[6][7] = 0.999120311; + gvij[6][7] = 1.00041444; + btij[6][7] = 0.999922459; + gtij[6][7] = 1.001432824; // C4H10-i-C4H10 + + bvij[6][8] = 1; + gvij[6][8] = 1.002284353; + btij[6][8] = 1; + gtij[6][8] = 1.001835788; // i-C4H10-i-C5H1 + bvij[6][9] = 1; + gvij[6][9] = 1.002779804; + btij[6][9] = 1; + gtij[6][9] = 1.002495889; // i-C4H10-C5H12 + bvij[6][10] = 1; + gvij[6][10] = 1.010493989; + btij[6][10] = 1; + gtij[6][10] = 1.006018054; // i-C4H10-C6H14 + bvij[6][11] = 1; + gvij[6][11] = 1.021668316; + btij[6][11] = 1; + gtij[6][11] = 1.00988576; // i-C4H10-C7H16 + bvij[6][12] = 1; + gvij[6][12] = 1.032807063; + btij[6][12] = 1; + gtij[6][12] = 1.013945424; // i-C4H10-C8H18 + bvij[6][13] = 1; + gvij[6][13] = 1.047298475; + btij[6][13] = 1; + gtij[6][13] = 1.017817492; // i-C4H10-C9H20 + bvij[6][14] = 1; + gvij[6][14] = 1.060243344; + btij[6][14] = 1; + gtij[6][14] = 1.021624748; // i-C4H10-C10H22 + bvij[6][15] = 1; + gvij[6][15] = 1.147595688; + btij[6][15] = 1; + gtij[6][15] = 1.895305393; // i-C4H10-H2 + bvij[6][16] = 1; + gvij[6][16] = 1; + btij[6][16] = 1; + gtij[6][16] = 1; // i-C4H10-O2 + bvij[6][17] = 1; + gvij[6][17] = 1.087272232; + btij[6][17] = 1; + gtij[6][17] = 1.161390082; // i-C4H10-CO + bvij[6][18] = 1; + gvij[6][18] = 1; + btij[6][18] = 1; + gtij[6][18] = 1; // i-C4H10-H2O + bvij[6][19] = 1.012994431; + gvij[6][19] = 0.988591117; + btij[6][19] = 0.974550548; + gtij[6][19] = 0.937130844; // i-C4H10-H2S + bvij[6][20] = 1; + gvij[6][20] = 1; + btij[6][20] = 1; + gtij[6][20] = 1; // i-C4H10-He + bvij[6][21] = 1; + gvij[6][21] = 1; + btij[6][21] = 1; + gtij[6][21] = 1; // i-C4H10-Ar + bvij[7][8] = 1; + gvij[7][8] = 1.002728434; + btij[7][8] = 1; + gtij[7][8] = 1.000792201; // C4H10-i-C5H12 + bvij[7][9] = 1; + gvij[7][9] = 1.01815965; + btij[7][9] = 1; + gtij[7][9] = 1.00214364; // C4H10-C5H12 + bvij[7][10] = 1; + gvij[7][10] = 1.034995284; + btij[7][10] = 1; + gtij[7][10] = 1.00915706; // C4H10-C6H14 + bvij[7][11] = 1; + gvij[7][11] = 1.019174227; + btij[7][11] = 1; + gtij[7][11] = 1.021283378; // C4H10-C7H16 + bvij[7][12] = 1; + gvij[7][12] = 1.046905515; + btij[7][12] = 1; + gtij[7][12] = 1.033180106; // C4H10-C8H18 + bvij[7][13] = 1; + gvij[7][13] = 1.049219137; + btij[7][13] = 1; + gtij[7][13] = 1.014096448; // C4H10-C9H20 + bvij[7][14] = 0.976951968; + gvij[7][14] = 1.027845529; + btij[7][14] = 0.993688386; + gtij[7][14] = 1.076466918; // C4H10-C10H22 + bvij[7][15] = 1; + gvij[7][15] = 1.232939523; + btij[7][15] = 1; + gtij[7][15] = 2.509259945; // C4H10-H2 + bvij[7][16] = 1; + gvij[7][16] = 1; + btij[7][16] = 1; + gtij[7][16] = 1; // C4H10-O2 + bvij[7][17] = 1; + gvij[7][17] = 1.084740904; + btij[7][17] = 1; + gtij[7][17] = 1.173916162; // C4H10-CO + bvij[7][18] = 1; + gvij[7][18] = 1.223638763; + btij[7][18] = 1; + gtij[7][18] = 0.615512682; // C4H10-H2O + bvij[7][19] = 0.908113163; + gvij[7][19] = 1.033366041; + btij[7][19] = 0.985962886; + gtij[7][19] = 0.926156602; // C4H10-H2S + bvij[7][20] = 1; + gvij[7][20] = 1; + btij[7][20] = 1; + gtij[7][20] = 1; // C4H10-He + bvij[7][21] = 1; + gvij[7][21] = 1.214638734; + btij[7][21] = 1; + gtij[7][21] = 1.245039498; // C4H10-Ar + bvij[8][9] = 1; + gvij[8][9] = 1.000024335; + btij[8][9] = 1; + gtij[8][9] = 1.000050537; // C5H12-i-C5H12 + bvij[8][10] = 1; + gvij[8][10] = 1.002995876; + btij[8][10] = 1; + gtij[8][10] = 1.001204174; // i-C5H12-C6H14 + bvij[8][11] = 1; + gvij[8][11] = 1.009928206; + btij[8][11] = 1; + gtij[8][11] = 1.003194615; // i-C5H12-C7H16 + bvij[8][12] = 1; + gvij[8][12] = 1.017880545; + btij[8][12] = 1; + gtij[8][12] = 1.00564748; // i-C5H12-C8H18 + bvij[8][13] = 1; + gvij[8][13] = 1.028994325; + btij[8][13] = 1; + gtij[8][13] = 1.008191499; // i-C5H12-C9H20 + bvij[8][14] = 1; + gvij[8][14] = 1.039372957; + btij[8][14] = 1; + gtij[8][14] = 1.010825138; // i-C5H12-C10H22 + bvij[8][15] = 1; + gvij[8][15] = 1.184340443; + btij[8][15] = 1; + gtij[8][15] = 1.996386669; // i-C5H12-H2 + bvij[8][16] = 1; + gvij[8][16] = 1; + btij[8][16] = 1; + gtij[8][16] = 1; // i-C5H12-O2 + bvij[8][17] = 1; + gvij[8][17] = 1.116694577; + btij[8][17] = 1; + gtij[8][17] = 1.199326059; // i-C5H12-CO + bvij[8][18] = 1; + gvij[8][18] = 1; + btij[8][18] = 1; + gtij[8][18] = 1; // i-C5H12-H2O + bvij[8][19] = 1; + gvij[8][19] = 0.835763343; + btij[8][19] = 1; + gtij[8][19] = 0.982651529; // i-C5H12-H2S + bvij[8][20] = 1; + gvij[8][20] = 1; + btij[8][20] = 1; + gtij[8][20] = 1; // i-C5H12-He + bvij[8][21] = 1; + gvij[8][21] = 1; + btij[8][21] = 1; + gtij[8][21] = 1; // i-C5H12-Ar + bvij[9][10] = 1; + gvij[9][10] = 1.002480637; + btij[9][10] = 1; + gtij[9][10] = 1.000761237; // C5H12-C6H14 + bvij[9][11] = 1; + gvij[9][11] = 1.008972412; + btij[9][11] = 1; + gtij[9][11] = 1.002441051; // C5H12-C7H16 + bvij[9][12] = 1; + gvij[9][12] = 1.069223964; + btij[9][12] = 1; + gtij[9][12] = 1.016422347; // C5H12-C8H18 + bvij[9][13] = 1; + gvij[9][13] = 1.034910633; + btij[9][13] = 1; + gtij[9][13] = 1.103421755; // C5H12-C9H20 + bvij[9][14] = 1; + gvij[9][14] = 1.016370338; + btij[9][14] = 1; + gtij[9][14] = 1.049035838; // C5H12-C10H22 + bvij[9][15] = 1; + gvij[9][15] = 1.188334783; + btij[9][15] = 1; + gtij[9][15] = 2.013859174; // C5H12-H2 + bvij[9][16] = 1; + gvij[9][16] = 1; + btij[9][16] = 1; + gtij[9][16] = 1; // C5H12-O2 + bvij[9][17] = 1; + gvij[9][17] = 1.119954454; + btij[9][17] = 1; + gtij[9][17] = 1.206043295; // C5H12-CO + bvij[9][18] = 1; + gvij[9][18] = 0.95667731; + btij[9][18] = 1; + gtij[9][18] = 0.447666011; // C5H12-H2O + bvij[9][19] = 0.984613203; + gvij[9][19] = 1.076539234; + btij[9][19] = 0.962006651; + gtij[9][19] = 0.959065662; // C5H12-H2S + bvij[9][20] = 1; + gvij[9][20] = 1; + btij[9][20] = 1; + gtij[9][20] = 1; // C5H12-He + bvij[9][21] = 1; + gvij[9][21] = 1; + btij[9][21] = 1; + gtij[9][21] = 1; // C5H12-Ar + bvij[10][11] = 1; + gvij[10][11] = 1.001508227; + btij[10][11] = 1; + gtij[10][11] = 0.999762786; // C6H14-C7H16 + bvij[10][12] = 1; + gvij[10][12] = 1.006268954; + btij[10][12] = 1; + gtij[10][12] = 1.001633952; // C6H14-C8H18 + bvij[10][13] = 1; + gvij[10][13] = 1.02076168; + btij[10][13] = 1; + gtij[10][13] = 1.055369591; // C6H14-C9H20 + bvij[10][14] = 1.001516371; + gvij[10][14] = 1.013511439; + btij[10][14] = 0.99764101; + gtij[10][14] = 1.028939539; // C6H14-C10H22 + bvij[10][15] = 1; + gvij[10][15] = 1.243461678; + btij[10][15] = 1; + gtij[10][15] = 3.021197546; // C6H14-H2 + bvij[10][16] = 1; + gvij[10][16] = 1; + btij[10][16] = 1; + gtij[10][16] = 1; // C6H14-O2 + bvij[10][17] = 1; + gvij[10][17] = 1.155145836; + btij[10][17] = 1; + gtij[10][17] = 1.233272781; // C6H14-CO + bvij[10][18] = 1; + gvij[10][18] = 1.170217596; + btij[10][18] = 1; + gtij[10][18] = 0.569681333; // C6H14-H2O + bvij[10][19] = 0.754473958; + gvij[10][19] = 1.339283552; + btij[10][19] = 0.985891113; + gtij[10][19] = 0.956075596; // C6H14-H2S + bvij[10][20] = 1; + gvij[10][20] = 1; + btij[10][20] = 1; + gtij[10][20] = 1; // C6H14-He + bvij[10][21] = 1; + gvij[10][21] = 1; + btij[10][21] = 1; + gtij[10][21] = 1; // C6H14-Ar + bvij[11][12] = 1; + gvij[11][12] = 1.006767176; + btij[11][12] = 1; + gtij[11][12] = 0.998793111; // C7H16-C8H18 + bvij[11][13] = 1; + gvij[11][13] = 1.001370076; + btij[11][13] = 1; + gtij[11][13] = 1.001150096; // C7H16-C9H20 + bvij[11][14] = 1; + gvij[11][14] = 1.002972346; + btij[11][14] = 1; + gtij[11][14] = 1.002229938; // C7H16-C10H22 + bvij[11][15] = 1; + gvij[11][15] = 1.159131722; + btij[11][15] = 1; + gtij[11][15] = 3.169143057; // C7H16-H2 + bvij[11][16] = 1; + gvij[11][16] = 1; + btij[11][16] = 1; + gtij[11][16] = 1; // C7H16-O2 + bvij[11][17] = 1; + gvij[11][17] = 1.190354273; + btij[11][17] = 1; + gtij[11][17] = 1.256123503; // C7H16-CO + bvij[11][18] = 1; + gvij[11][18] = 1; + btij[11][18] = 1; + gtij[11][18] = 1; // C7H16-H2O + bvij[11][19] = 0.828967164; + gvij[11][19] = 1.087956749; + btij[11][19] = 0.988937417; + gtij[11][19] = 1.013453092; // C7H16-H2S + bvij[11][20] = 1; + gvij[11][20] = 1; + btij[11][20] = 1; + gtij[11][20] = 1; // C7H16-He + bvij[11][21] = 1; + gvij[11][21] = 1; + btij[11][21] = 1; + gtij[11][21] = 1; // C7H16-Ar + bvij[12][13] = 1; + gvij[12][13] = 1.001357085; + btij[12][13] = 1; + gtij[12][13] = 1.000235044; // C8H18-C9H20 + bvij[12][14] = 1; + gvij[12][14] = 1.002553544; + btij[12][14] = 1; + gtij[12][14] = 1.007186267; // C8H18-C10H22 + bvij[12][15] = 1; + gvij[12][15] = 1.305249405; + btij[12][15] = 1; + gtij[12][15] = 2.191555216; // C8H18-H2 + bvij[12][16] = 1; + gvij[12][16] = 1; + btij[12][16] = 1; + gtij[12][16] = 1; // C8H18-O2 + bvij[12][17] = 1; + gvij[12][17] = 1.219206702; + btij[12][17] = 1; + gtij[12][17] = 1.276565536; // C8H18-CO + bvij[12][18] = 1; + gvij[12][18] = 0.599484191; + btij[12][18] = 1; + gtij[12][18] = 0.662072469; // C8H18-H2O + bvij[12][19] = 1; + gvij[12][19] = 1; + btij[12][19] = 1; + gtij[12][19] = 1; // C8H18-H2S + bvij[12][20] = 1; + gvij[12][20] = 1; + btij[12][20] = 1; + gtij[12][20] = 1; // C8H18-He + bvij[12][21] = 1; + gvij[12][21] = 1; + btij[12][21] = 1; + gtij[12][21] = 1; // C8H18-Ar + bvij[13][14] = 1; + gvij[13][14] = 1.00081052; + btij[13][14] = 1; + gtij[13][14] = 1.000182392; // C9H20-C10H22 + bvij[13][15] = 1; + gvij[13][15] = 1.342647661; + btij[13][15] = 1; + gtij[13][15] = 2.23435404; // C9H20-H2 + bvij[13][16] = 1; + gvij[13][16] = 1; + btij[13][16] = 1; + gtij[13][16] = 1; // C9H20-O2 + bvij[13][17] = 1; + gvij[13][17] = 1.252151449; + btij[13][17] = 1; + gtij[13][17] = 1.294070556; // C9H20-CO + bvij[13][18] = 1; + gvij[13][18] = 1; + btij[13][18] = 1; + gtij[13][18] = 1; // C9H20-H2O + bvij[13][19] = 1; + gvij[13][19] = 1.082905109; + btij[13][19] = 1; + gtij[13][19] = 1.086557826; // C9H20-H2S + bvij[13][20] = 1; + gvij[13][20] = 1; + btij[13][20] = 1; + gtij[13][20] = 1; // C9H20-He + bvij[13][21] = 1; + gvij[13][21] = 1; + btij[13][21] = 1; + gtij[13][21] = 1; // C9H20-Ar + bvij[14][15] = 1.695358382; + gvij[14][15] = 1.120233729; + btij[14][15] = 1.064818089; + gtij[14][15] = 3.786003724; // C10H22-H2 + bvij[14][16] = 1; + gvij[14][16] = 1; + btij[14][16] = 1; + gtij[14][16] = 1; // C10H22-O2 + bvij[14][17] = 1; + gvij[14][17] = 0.87018496; + btij[14][17] = 1.049594632; + gtij[14][17] = 1.803567587; // C10H22-CO + bvij[14][18] = 1; + gvij[14][18] = 0.551405318; + btij[14][18] = 0.897162268; + gtij[14][18] = 0.740416402; // C10H22-H2O + bvij[14][19] = 0.975187766; + gvij[14][19] = 1.171714677; + btij[14][19] = 0.973091413; + gtij[14][19] = 1.103693489; // C10H22-H2S + bvij[14][20] = 1; + gvij[14][20] = 1; + btij[14][20] = 1; + gtij[14][20] = 1; // C10H22-He + bvij[14][21] = 1; + gvij[14][21] = 1; + btij[14][21] = 1; + gtij[14][21] = 1; // C10H22-Ar + bvij[15][16] = 1; + gvij[15][16] = 1; + btij[15][16] = 1; + gtij[15][16] = 1; // H2-O2 + bvij[15][17] = 1; + gvij[15][17] = 1.121416201; + btij[15][17] = 1; + gtij[15][17] = 1.377504607; // H2-CO + bvij[15][18] = 1; + gvij[15][18] = 1; + btij[15][18] = 1; + gtij[15][18] = 1; // H2-H2O + bvij[15][19] = 1; + gvij[15][19] = 1; + btij[15][19] = 1; + gtij[15][19] = 1; // H2-H2S + bvij[15][20] = 1; + gvij[15][20] = 1; + btij[15][20] = 1; + gtij[15][20] = 1; // H2-He + bvij[15][21] = 1; + gvij[15][21] = 1; + btij[15][21] = 1; + gtij[15][21] = 1; // H2-Ar + bvij[16][17] = 1; + gvij[16][17] = 1; + btij[16][17] = 1; + gtij[16][17] = 1; // O2-CO + bvij[16][18] = 1; + gvij[16][18] = 1.143174289; + btij[16][18] = 1; + gtij[16][18] = 0.964767932; // O2-H2O + bvij[16][19] = 1; + gvij[16][19] = 1; + btij[16][19] = 1; + gtij[16][19] = 1; // O2-H2S + bvij[16][20] = 1; + gvij[16][20] = 1; + btij[16][20] = 1; + gtij[16][20] = 1; // O2-He + bvij[16][21] = 0.999746847; + gvij[16][21] = 0.993907223; + btij[16][21] = 1.000023103; + gtij[16][21] = 0.990430423; // O2-Ar + bvij[17][18] = 1; + gvij[17][18] = 1; + btij[17][18] = 1; + gtij[17][18] = 1; // CO-H2O + bvij[17][19] = 0.795660392; + gvij[17][19] = 1.101731308; + btij[17][19] = 1.025536736; + gtij[17][19] = 1.022749748; // CO-H2S + bvij[17][20] = 1; + gvij[17][20] = 1; + btij[17][20] = 1; + gtij[17][20] = 1; // CO-He + bvij[17][21] = 1; + gvij[17][21] = 1.159720623; + btij[17][21] = 1; + gtij[17][21] = 0.954215746; // CO-Ar + bvij[18][19] = 1; + gvij[18][19] = 1.014832832; + btij[18][19] = 1; + gtij[18][19] = 0.940587083; // H2O-H2S + bvij[18][20] = 1; + gvij[18][20] = 1; + btij[18][20] = 1; + gtij[18][20] = 1; // H2O-He + bvij[18][21] = 1; + gvij[18][21] = 1.038993495; + btij[18][21] = 1; + gtij[18][21] = 1.070941866; // H2O-Ar + bvij[19][20] = 1; + gvij[19][20] = 1; + btij[19][20] = 1; + gtij[19][20] = 1; // H2S-He + bvij[19][21] = 1; + gvij[19][21] = 1; + btij[19][21] = 1; + gtij[19][21] = 1; // H2S-Ar + bvij[20][21] = 1; + gvij[20][21] = 1; + btij[20][21] = 1; + gtij[20][21] = 1; // He-Ar + + for (int i = 1; i <= MaxFlds; ++i) { + bvij[i][i] = 1; + btij[i][i] = 1; + gvij[i][i] = 1 / Dc[i]; + gtij[i][i] = Tc[i]; + for (int j = i + 1; j <= MaxFlds; ++j) { + gvij[i][j] = gvij[i][j] * bvij[i][j] * Math.pow(Vc3[i] + Vc3[j], 3); + gtij[i][j] = gtij[i][j] * btij[i][j] * Tc2[i] * Tc2[j]; + bvij[i][j] = Math.pow(bvij[i][j], 2); + btij[i][j] = Math.pow(btij[i][j], 2); + } + } - for (int i = 1; i <= MaxMdl; ++i) { - for (int j = 1; j <= MaxTrmM; ++j) { - gijk[i][j] = -cijk[i][j] * Math.pow(eijk[i][j], 2) + bijk[i][j] * gijk[i][j]; - eijk[i][j] = 2 * cijk[i][j] * eijk[i][j] - bijk[i][j]; - cijk[i][j] = -cijk[i][j]; - } - } + for (int i = 1; i <= MaxMdl; ++i) { + for (int j = 1; j <= MaxTrmM; ++j) { + gijk[i][j] = -cijk[i][j] * Math.pow(eijk[i][j], 2) + bijk[i][j] * gijk[i][j]; + eijk[i][j] = 2 * cijk[i][j] * eijk[i][j] - bijk[i][j]; + cijk[i][j] = -cijk[i][j]; + } + } - // Ideal gas terms - T0 = 298.15; - d0 = 101.325 / RGERG / T0; - for (int i = 1; i <= MaxFlds; ++i) { - n0i[i][3] = n0i[i][3] - 1; - n0i[i][2] = n0i[i][2] + T0; - for (int j = 1; j <= 7; ++j) { - n0i[i][j] = Rsr * n0i[i][j]; - } - n0i[i][2] = n0i[i][2] - T0; - n0i[i][1] = n0i[i][1] - Math.log(d0); - } - return; - - // Code to produce nearly exact values for n0(1) and n0(2) - // This is not called in the current code, but included below to show how the values were - // calculated. The return above can be removed to call this code. - // T0 = 298.15; - // d0 = 101.325 / RGERG / T0; - // for (int i = 1; i <= MaxFlds; ++i){ - // n1 = 0; n2 = 0; - // if (th0i[i][4] > epsilon) { n2 += - n0i[i][4] * th0i[i][4] / Tanh(th0i[i][4] / T0); n1 += - // - n0i[i][4] * log(Sinh(th0i[i][4] / T0)); } - // if (th0i[i][5] > epsilon) { n2 += + n0i[i][5] * th0i[i][5] * Tanh(th0i[i][5] / T0); n1 += - // + n0i[i][5] * log(Cosh(th0i[i][5] / T0)); } - // if (th0i[i][6] > epsilon) { n2 += - n0i[i][6] * th0i[i][6] / Tanh(th0i[i][6] / T0); n1 += - // - n0i[i][6] * log(Sinh(th0i[i][6] / T0)); } - // if (th0i[i][7] > epsilon) { n2 += + n0i[i][7] * th0i[i][7] * Tanh(th0i[i][7] / T0); n1 += - // + n0i[i][7] * log(Cosh(th0i[i][7] / T0)); } - // n0i[i][3] = n0i[i][3] - 1; - // n0i[i][1] = n1 - n2 / T0 + n0i[i][3] * (1 + log(T0)); - // n0i[i][2] = n2 - n0i[i][3] * T0; - // for (int j = 1; j <= 7; ++j){ - // n0i[i][j] = Rsr * n0i[i][j]; - // } - // n0i[i][2] = n0i[i][2] - T0; - // n0i[i][1] = n0i[i][1] - log(d0); - // } + // Ideal gas terms + T0 = 298.15; + d0 = 101.325 / RGERG / T0; + for (int i = 1; i <= MaxFlds; ++i) { + n0i[i][3] = n0i[i][3] - 1; + n0i[i][2] = n0i[i][2] + T0; + for (int j = 1; j <= 7; ++j) { + n0i[i][j] = Rsr * n0i[i][j]; + } + n0i[i][2] = n0i[i][2] - T0; + n0i[i][1] = n0i[i][1] - Math.log(d0); } - /** - *

- * main. - *

+ // Code to produce nearly exact values for n0(1) and n0(2) + // This is not called in the current code, but included below to show how the values were + // calculated. The return above can be removed to call this code. + // T0 = 298.15; + // d0 = 101.325 / RGERG / T0; + // for (int i = 1; i <= MaxFlds; ++i){ + // n1 = 0; n2 = 0; + // if (th0i[i][4] > epsilon) { n2 += - n0i[i][4] * th0i[i][4] / Tanh(th0i[i][4] / T0); n1 += + // - n0i[i][4] * log(Sinh(th0i[i][4] / T0)); } + // if (th0i[i][5] > epsilon) { n2 += + n0i[i][5] * th0i[i][5] * Tanh(th0i[i][5] / T0); n1 += + // + n0i[i][5] * log(Cosh(th0i[i][5] / T0)); } + // if (th0i[i][6] > epsilon) { n2 += - n0i[i][6] * th0i[i][6] / Tanh(th0i[i][6] / T0); n1 += + // - n0i[i][6] * log(Sinh(th0i[i][6] / T0)); } + // if (th0i[i][7] > epsilon) { n2 += + n0i[i][7] * th0i[i][7] * Tanh(th0i[i][7] / T0); n1 += + // + n0i[i][7] * log(Cosh(th0i[i][7] / T0)); } + // n0i[i][3] = n0i[i][3] - 1; + // n0i[i][1] = n1 - n2 / T0 + n0i[i][3] * (1 + log(T0)); + // n0i[i][2] = n2 - n0i[i][3] * T0; + // for (int j = 1; j <= 7; ++j){ + // n0i[i][j] = Rsr * n0i[i][j]; + // } + // n0i[i][2] = n0i[i][2] - T0; + // n0i[i][1] = n0i[i][1] - log(d0); + // } + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + GERG2008 test = new GERG2008(); + test.SetupGERG(); + + double T = 400; + doubleW D = new doubleW(12.79828626082062); + doubleW P = new doubleW(50000.0d); + intW ierr = new intW(0); + doubleW Mm = new doubleW(0.0d); + doubleW Z = new doubleW(0.0d); + int iFlag = 0; + StringW herr = new StringW(""); + + double[] x = {0.0, 0.77824, 0.02, 0.06, 0.08, 0.03, 0.0015, 0.003, 0.0005, 0.00165, 0.00215, + 0.00088, 0.00024, 0.00015, 0.00009, 0.004, 0.005, 0.002, 0.0001, 0.0025, 0.007, 0.001}; + + test.MolarMassGERG(x, Mm); + + // System.out.println("mol mass " + Mm.val); + + test.PressureGERG(T, D.val, x, P, Z); + + System.out.println("pressure " + P.val); + System.out.println("Z " + Z.val); + + test.DensityGERG(iFlag, T, P.val, x, D, ierr, herr); + System.out.println("density " + D.val); + + doubleW dPdD = new doubleW(0.0d); + doubleW d2PdD2 = new doubleW(0.0d); + doubleW d2PdTD = new doubleW(0.0d); + doubleW dPdT = new doubleW(0.0d); + doubleW U = new doubleW(0.0d); + doubleW H = new doubleW(0.0d); + doubleW S = new doubleW(0.0d); + doubleW A = new doubleW(0.0d); + doubleW P2 = new doubleW(0.0d); + doubleW Cv = new doubleW(0.0d); + + doubleW Cp = new doubleW(0.0d); + doubleW W = new doubleW(0.0d); + doubleW G = new doubleW(0.0d); + doubleW JT = new doubleW(0.0d); + doubleW Kappa = new doubleW(0.0d); + doubleW PP = new doubleW(0.0d); + test.PropertiesGERG(T, D.val, x, P, Z, dPdD, d2PdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, W, G, JT, + Kappa, A); + + /* + * // test.PressureGERG(400, 12.798286, x); String herr = ""; test.DensityGERG(0, T, P, x, ierr, + * herr); double pres = test.P; double molarmass = test.Mm; * - * @param args an array of {@link java.lang.String} objects + * // double dPdD=0.0, dPdD2=0.0, d2PdTD=0.0, dPdT=0.0, U=0.0, H=0.0, S=0.0, // Cv=0.0, Cp=0.0, + * W=0.0, G=0.0, JT=0.0, Kappa=0.0, A=0.0; + * + * // void DensityGERG(const int iFlag, const double T, const double P, const // + * std::vector &x, double &D, int &ierr, std::string &herr) // test.DensityGERG(0, T, P, + * x, ierr, herr); + * + * // Sub PropertiesGERG(T, D, x, P, Z, dPdD, dPdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, // W, G, JT, + * Kappa) // test.PropertiesGERG(T, test.D, x); */ - @SuppressWarnings("unused") - public static void main(String[] args) { - GERG2008 test = new GERG2008(); - GERG2008.SetupGERG(); - - double T = 400; - doubleW D = new doubleW(12.79828626082062); - doubleW P = new doubleW(50000.0d); - intW ierr = new intW(0); - doubleW Mm = new doubleW(0.0d); - doubleW Z = new doubleW(0.0d); - int iFlag = 0; - StringW herr = new StringW(""); - - double x[] = {0.0, 0.77824, 0.02, 0.06, 0.08, 0.03, 0.0015, 0.003, 0.0005, 0.00165, 0.00215, - 0.00088, 0.00024, 0.00015, 0.00009, 0.004, 0.005, 0.002, 0.0001, 0.0025, 0.007, - 0.001}; - - GERG2008.MolarMassGERG(x, Mm); - - System.out.println("mol mass " + Mm.val); - - GERG2008.PressureGERG(T, D.val, x, P, Z); - - System.out.println("pressure " + P.val); - System.out.println("Z " + Z.val); - - GERG2008.DensityGERG(iFlag, T, P.val, x, D, ierr, herr); - System.out.println("density " + D.val); - - doubleW dPdD = new doubleW(0.0d), d2PdD2 = new doubleW(0.0d), d2PdTD = new doubleW(0.0d), - dPdT = new doubleW(0.0d), U = new doubleW(0.0d), H = new doubleW(0.0d), - S = new doubleW(0.0d), A = new doubleW(0.0d), P2 = new doubleW(0.0d); - doubleW Cv = new doubleW(0.0d), Cp = new doubleW(0.0d), W = new doubleW(0.0d), - G = new doubleW(0.0d), JT = new doubleW(0.0d), Kappa = new doubleW(0.0d), - PP = new doubleW(0.0d); - - GERG2008.PropertiesGERG(T, D.val, x, P, Z, dPdD, d2PdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, W, - G, JT, Kappa, A); - - /* - * // test.PressureGERG(400, 12.798286, x); String herr = ""; test.DensityGERG(0, T, P, x, - * ierr, herr); double pres = test.P; double molarmass = test.Mm; - * - * // double dPdD=0.0, dPdD2=0.0, d2PdTD=0.0, dPdT=0.0, U=0.0, H=0.0, S=0.0, // Cv=0.0, - * Cp=0.0, W=0.0, G=0.0, JT=0.0, Kappa=0.0, A=0.0; - * - * // void DensityGERG(const int iFlag, const double T, const double P, const // - * std::vector &x, double &D, int &ierr, std::string &herr) // test.DensityGERG(0, - * T, P, x, ierr, herr); - * - * // Sub PropertiesGERG(T, D, x, P, Z, dPdD, dPdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, // W, G, - * JT, Kappa) // test.PropertiesGERG(T, test.D, x); - */ - System.out.println("Outputs-----\n"); - System.out.println( - "Molar mass [g/mol]: 20.54274450160000 != %0.16g\n" + Mm.val); - System.out.println( - "Molar density [mol/l]: 12.79828626082062 != %0.16g\n" + D.val); - System.out.println( - "Pressure [kPa]: 50000.00000000001 != %0.16g\n" + P.val); - System.out.println( - "Compressibility factor: 1.174690666383717 != %0.16g\n" + Z.val); - System.out.println( - "d(P)/d(rho) [kPa/(mol/l)]: 7000.694030193327 != %0.16g\n" + dPdD.val); - System.out.println( - "d^2(P)/d(rho)^2 [kPa/(mol/l)^2]: 1130.481239114938 != %0.16g\n" + d2PdD2.val); - System.out.println( - "d(P)/d(T) [kPa/K]: 235.9832292593096 != %0.16g\n" + dPdT.val); - System.out.println( - "Energy [J/mol]: -2746.492901212530 != %0.16g\n" + U.val); - System.out.println( - "Enthalpy [J/mol]: 1160.280160510973 != %0.16g\n" + H.val); - System.out.println( - "Entropy [J/mol-K]: -38.57590392409089 != %0.16g\n" + S.val); - System.out.println( - "Isochoric heat capacity [J/mol-K]: 39.02948218156372 != %0.16g\n" + Cv.val); - System.out.println( - "Isobaric heat capacity [J/mol-K]: 58.45522051000366 != %0.16g\n" + Cp.val); - System.out.println( - "Speed of sound [m/s]: 714.4248840596024 != %0.16g\n" + W.val); - System.out.println( - "Gibbs energy [J/mol]: 16590.64173014733 != %0.16g\n" + G.val); - System.out.println( - "Joule-Thomson coefficient [K/kPa]: 7.155629581480913E-05 != %0.16g\n" + JT.val); - System.out.println( - "Isentropic exponent: 2.683820255058032 != %0.16g\n" + Kappa.val);; - } + System.out.println("Outputs-----\n"); + System.out + .println("Molar mass [g/mol]: 20.54274450160000 != %0.16g\n" + Mm.val); + System.out.println("Molar density [mol/l]: 12.79828626082062 != %0.16g\n" + D.val); + System.out.println("Pressure [kPa]: 50000.00000000001 != %0.16g\n" + P.val); + System.out.println("Compressibility factor: 1.174690666383717 != %0.16g\n" + Z.val); + System.out + .println("d(P)/d(rho) [kPa/(mol/l)]: 7000.694030193327 != %0.16g\n" + dPdD.val); + System.out + .println("d^2(P)/d(rho)^2 [kPa/(mol/l)^2]: 1130.481239114938 != %0.16g\n" + d2PdD2.val); + System.out + .println("d(P)/d(T) [kPa/K]: 235.9832292593096 != %0.16g\n" + dPdT.val); + System.out + .println("Energy [J/mol]: -2746.492901212530 != %0.16g\n" + U.val); + System.out.println("Enthalpy [J/mol]: 1160.280160510973 != %0.16g\n" + H.val); + System.out + .println("Entropy [J/mol-K]: -38.57590392409089 != %0.16g\n" + S.val); + System.out + .println("Isochoric heat capacity [J/mol-K]: 39.02948218156372 != %0.16g\n" + Cv.val); + System.out + .println("Isobaric heat capacity [J/mol-K]: 58.45522051000366 != %0.16g\n" + Cp.val); + System.out.println("Speed of sound [m/s]: 714.4248840596024 != %0.16g\n" + W.val); + System.out.println("Gibbs energy [J/mol]: 16590.64173014733 != %0.16g\n" + G.val); + System.out + .println("Joule-Thomson coefficient [K/kPa]: 7.155629581480913E-05 != %0.16g\n" + JT.val); + System.out + .println("Isentropic exponent: 2.683820255058032 != %0.16g\n" + Kappa.val); + } } diff --git a/src/main/java/neqsim/thermo/util/GERG/NeqSimAGA8Detail.java b/src/main/java/neqsim/thermo/util/GERG/NeqSimAGA8Detail.java index 440e364c5c..d880a5f9df 100644 --- a/src/main/java/neqsim/thermo/util/GERG/NeqSimAGA8Detail.java +++ b/src/main/java/neqsim/thermo/util/GERG/NeqSimAGA8Detail.java @@ -20,6 +20,7 @@ public class NeqSimAGA8Detail { double[] normalizedGERGComposition = new double[21 + 1]; double[] notNormalizedGERGComposition = new double[21 + 1]; PhaseInterface phase = null; + DETAIL DETAIL = new DETAIL(); /** *

@@ -105,7 +106,7 @@ public double getPressure() { */ public double getMolarMass() { doubleW mm = new doubleW(0.0); - neqsim.thermo.util.GERG.DETAIL.MolarMassDetail(normalizedGERGComposition, mm); + DETAIL.MolarMassDetail(normalizedGERGComposition, mm); return mm.val / 1.0e3; } @@ -121,8 +122,8 @@ public double getMolarDensity() { StringW herr = new StringW(""); doubleW D = new doubleW(0.0); double pressure = phase.getPressure() * 100.0; - neqsim.thermo.util.GERG.DETAIL.DensityDetail(phase.getTemperature(), pressure, - normalizedGERGComposition, D, ierr, herr); + DETAIL.DensityDetail(phase.getTemperature(), pressure, normalizedGERGComposition, D, ierr, + herr); return D.val; } @@ -132,7 +133,7 @@ public double getMolarDensity() { *

* * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return an array of {@link double} objects + * @return an array of type double */ public double[] propertiesDetail(PhaseInterface phase) { this.setPhase(phase); @@ -146,7 +147,7 @@ public double[] propertiesDetail(PhaseInterface phase) { * * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object * @param properties an array of {@link java.lang.String} objects - * @return an array of {@link double} objects + * @return an array of type double */ public double[] getProperties(PhaseInterface phase, String[] properties) { // double molarDens = getMolarDensity(phase); @@ -177,7 +178,7 @@ public double[] getProperties(PhaseInterface phase, String[] properties) { * propertiesDetail. *

* - * @return an array of {@link double} objects + * @return an array of type double */ public double[] propertiesDetail() { // int _x_offset = 0; @@ -301,7 +302,7 @@ public void setPhase(PhaseInterface phase) { if (molarMass > 121.0 / 1000.0) notNormalizedGERGComposition[14] += phase.getComponent(i).getx(); break; - }; + } } normalizeComposition(); } diff --git a/src/main/java/neqsim/thermo/util/GERG/NeqSimGERG2008.java b/src/main/java/neqsim/thermo/util/GERG/NeqSimGERG2008.java index 3596b90214..5066df0bed 100644 --- a/src/main/java/neqsim/thermo/util/GERG/NeqSimGERG2008.java +++ b/src/main/java/neqsim/thermo/util/GERG/NeqSimGERG2008.java @@ -17,364 +17,373 @@ * @version $Id: $Id */ public class NeqSimGERG2008 { - double[] normalizedGERGComposition = new double[21 + 1]; - double[] notNormalizedGERGComposition = new double[21 + 1]; - PhaseInterface phase = null; + double[] normalizedGERGComposition = new double[21 + 1]; + double[] notNormalizedGERGComposition = new double[21 + 1]; + PhaseInterface phase = null; + GERG2008 GERG2008 = new GERG2008(); - /** - *

- * Constructor for NeqSimGERG2008. - *

- */ - public NeqSimGERG2008() {} + /** + *

+ * Constructor for NeqSimGERG2008. + *

+ */ + public NeqSimGERG2008() {} - /** - *

- * Constructor for NeqSimGERG2008. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public NeqSimGERG2008(PhaseInterface phase) { - this.setPhase(phase); - if (Double.isNaN(GERG2008.RGERG) || GERG2008.RGERG == 0) { - GERG2008.SetupGERG(); - } + /** + *

+ * Constructor for NeqSimGERG2008. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public NeqSimGERG2008(PhaseInterface phase) { + this.setPhase(phase); + if (Double.isNaN(GERG2008.RGERG) || GERG2008.RGERG == 0) { + GERG2008.SetupGERG(); } + } - /** - *

- * getMolarDensity. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getMolarDensity(PhaseInterface phase) { - this.setPhase(phase); - return getMolarDensity(); - } + /** + *

+ * getMolarDensity. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getMolarDensity(PhaseInterface phase) { + this.setPhase(phase); + return getMolarDensity(); + } - /** - *

- * getDensity. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return a double - */ - public double getDensity(PhaseInterface phase) { - this.setPhase(phase); - // return getMolarDensity() * getMolarMass() * 1000.0; - return getMolarDensity() * phase.getMolarMass() * 1000.0; - } + /** + *

+ * getDensity. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return a double + */ + public double getDensity(PhaseInterface phase) { + this.setPhase(phase); + // return getMolarDensity() * getMolarMass() * 1000.0; + return getMolarDensity() * phase.getMolarMass() * 1000.0; + } - /** - *

- * getDensity. - *

- * - * @return a double - */ - public double getDensity() { - return getMolarDensity() * phase.getMolarMass() * 1000.0; - // return getMolarDensity() * getMolarMass()* 1000.0; - } + /** + *

+ * getDensity. + *

+ * + * @return a double + */ + public double getDensity() { + return getMolarDensity() * phase.getMolarMass() * 1000.0; + // return getMolarDensity() * getMolarMass()* 1000.0; + } - /** - *

- * getPressure. - *

- * - * @return a double - */ - public double getPressure() { - double moldens = getMolarDensity(); - doubleW P = new doubleW(0.0); - doubleW Z = new doubleW(0.0); - GERG2008.PressureGERG(phase.getTemperature(), moldens, normalizedGERGComposition, P, Z); - return P.val; - } + /** + *

+ * getPressure. + *

+ * + * @return a double + */ + public double getPressure() { + double moldens = getMolarDensity(); + doubleW P = new doubleW(0.0); + doubleW Z = new doubleW(0.0); + GERG2008.PressureGERG(phase.getTemperature(), moldens, normalizedGERGComposition, P, Z); + return P.val; + } - /** - *

- * getMolarMass. - *

- * - * @return a double - */ - public double getMolarMass() { - doubleW mm = new doubleW(0.0); - neqsim.thermo.util.GERG.GERG2008.MolarMassGERG(normalizedGERGComposition, mm); - return mm.val / 1.0e3; - } + /** + *

+ * getMolarMass. + *

+ * + * @return a double + */ + public double getMolarMass() { + doubleW mm = new doubleW(0.0); + GERG2008.MolarMassGERG(normalizedGERGComposition, mm); + return mm.val / 1.0e3; + } - /** - *

- * getMolarDensity. - *

- * - * @return a double - */ - public double getMolarDensity() { - int flag = 0; - intW ierr = new intW(0); - StringW herr = new StringW(""); - doubleW D = new doubleW(0.0); - double pressure = phase.getPressure() * 100.0; - neqsim.thermo.util.GERG.GERG2008.DensityGERG(flag, phase.getTemperature(), pressure, - normalizedGERGComposition, D, ierr, herr); - return D.val; - } + /** + *

+ * getMolarDensity. + *

+ * + * @return a double + */ + public double getMolarDensity() { + int flag = 0; + intW ierr = new intW(0); + StringW herr = new StringW(""); + doubleW D = new doubleW(0.0); + double pressure = phase.getPressure() * 100.0; + GERG2008.DensityGERG(flag, phase.getTemperature(), pressure, normalizedGERGComposition, D, ierr, + herr); + return D.val; + } - /** - *

- * propertiesGERG. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @return an array of {@link double} objects - */ - public double[] propertiesGERG(PhaseInterface phase) { - this.setPhase(phase); - return propertiesGERG(); - } + /** + *

+ * propertiesGERG. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @return an array of type double + */ + public double[] propertiesGERG(PhaseInterface phase) { + this.setPhase(phase); + return propertiesGERG(); + } - /** - *

- * getProperties. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - * @param properties an array of {@link java.lang.String} objects - * @return an array of {@link double} objects - */ - public double[] getProperties(PhaseInterface phase, String[] properties) { - double[] allProperties = propertiesGERG(); - double[] returnProperties = new double[properties.length]; + /** + *

+ * getProperties. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + * @param properties an array of {@link java.lang.String} objects + * @return an array of type double + */ + public double[] getProperties(PhaseInterface phase, String[] properties) { + double[] allProperties = propertiesGERG(); + double[] returnProperties = new double[properties.length]; - for (int i = 0; i < properties.length; i++) { - switch (properties[i]) { - case "density": - returnProperties[i] = allProperties[0]; - break; - case "Cp": - returnProperties[i] = allProperties[1]; - break; - case "Cv": - returnProperties[i] = allProperties[2]; - break; - case "soundSpeed": - returnProperties[i] = allProperties[3]; - break; - } - } - return returnProperties; + for (int i = 0; i < properties.length; i++) { + switch (properties[i]) { + case "density": + returnProperties[i] = allProperties[0]; + break; + case "Cp": + returnProperties[i] = allProperties[1]; + break; + case "Cv": + returnProperties[i] = allProperties[2]; + break; + case "soundSpeed": + returnProperties[i] = allProperties[3]; + break; + default: + break; + } } + return returnProperties; + } - /** - *

- * propertiesGERG. - *

- * - * @return an array of {@link double} objects - */ - public double[] propertiesGERG() { - doubleW p = new doubleW(0.0); - doubleW z = new doubleW(0.0); - doubleW dpdd = new doubleW(0.0); - doubleW d2pdd2 = new doubleW(0.0); - doubleW d2pdtd = new doubleW(0.0); - doubleW dpdt = new doubleW(0.0); - doubleW u = new doubleW(0.0); - doubleW h = new doubleW(0.0); - doubleW s = new doubleW(0.0); - doubleW cv = new doubleW(0.0); - doubleW cp = new doubleW(0.0); - doubleW w = new doubleW(0.0); - doubleW g = new doubleW(0.0); - doubleW jt = new doubleW(0.0); - doubleW kappa = new doubleW(0.0); - doubleW A = new doubleW(0.0); - double dens = getMolarDensity(); - // neqsim.thermo.GERG.Densitygerg.densitygerg(0, 0, 0, arg3, 0, arg5, arg6, - // arg7); - GERG2008.PropertiesGERG(phase.getTemperature(), dens, normalizedGERGComposition, p, z, dpdd, - d2pdd2, d2pdtd, dpdt, u, h, s, cv, cp, w, g, jt, kappa, A); - double[] properties = new double[] {p.val, z.val, dpdd.val, d2pdd2.val, d2pdtd.val, - dpdt.val, u.val, h.val, s.val, cv.val, cp.val, w.val, g.val, jt.val, kappa.val}; - return properties; - } + /** + *

+ * propertiesGERG. + *

+ * + * @return an array of type double + */ + public double[] propertiesGERG() { + doubleW p = new doubleW(0.0); + doubleW z = new doubleW(0.0); + doubleW dpdd = new doubleW(0.0); + doubleW d2pdd2 = new doubleW(0.0); + doubleW d2pdtd = new doubleW(0.0); + doubleW dpdt = new doubleW(0.0); + doubleW u = new doubleW(0.0); + doubleW h = new doubleW(0.0); + doubleW s = new doubleW(0.0); + doubleW cv = new doubleW(0.0); + doubleW cp = new doubleW(0.0); + doubleW w = new doubleW(0.0); + doubleW g = new doubleW(0.0); + doubleW jt = new doubleW(0.0); + doubleW kappa = new doubleW(0.0); + doubleW A = new doubleW(0.0); + double dens = getMolarDensity(); + // neqsim.thermo.GERG.Densitygerg.densitygerg(0, 0, 0, arg3, 0, arg5, arg6, + // arg7); + GERG2008.PropertiesGERG(phase.getTemperature(), dens, normalizedGERGComposition, p, z, dpdd, + d2pdd2, d2pdtd, dpdt, u, h, s, cv, cp, w, g, jt, kappa, A); + double[] properties = new double[] {p.val, z.val, dpdd.val, d2pdd2.val, d2pdtd.val, dpdt.val, + u.val, h.val, s.val, cv.val, cp.val, w.val, g.val, jt.val, kappa.val}; + return properties; + } - /** - *

- * Setter for the field phase. - *

- * - * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object - */ - public void setPhase(PhaseInterface phase) { - this.phase = phase; - for (int i = 0; i < phase.getNumberOfComponents(); i++) { - String componentName = phase.getComponent(i).getComponentName(); + /** + *

+ * Setter for the field phase. + *

+ * + * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object + */ + public void setPhase(PhaseInterface phase) { + this.phase = phase; + for (int i = 0; i < phase.getNumberOfComponents(); i++) { + String componentName = phase.getComponent(i).getComponentName(); - switch (componentName) { - case "methane": - notNormalizedGERGComposition[1] = phase.getComponent(i).getx(); - break; - case "nitrogen": - notNormalizedGERGComposition[2] = phase.getComponent(i).getx(); - break; - case "CO2": - notNormalizedGERGComposition[3] = phase.getComponent(i).getx(); - break; - case "ethane": - notNormalizedGERGComposition[4] = phase.getComponent(i).getx(); - break; - case "propane": - notNormalizedGERGComposition[5] = phase.getComponent(i).getx(); - break; - case "i-butane": - notNormalizedGERGComposition[6] = phase.getComponent(i).getx(); - break; - case "n-butane": - notNormalizedGERGComposition[7] = phase.getComponent(i).getx(); - break; - case "i-pentane": - notNormalizedGERGComposition[8] = phase.getComponent(i).getx(); - break; - case "n-pentane": - notNormalizedGERGComposition[9] = phase.getComponent(i).getx(); - break; - case "n-hexane": - notNormalizedGERGComposition[10] = phase.getComponent(i).getx(); - break; - case "n-heptane": - notNormalizedGERGComposition[11] = phase.getComponent(i).getx(); - break; - case "n-octane": - notNormalizedGERGComposition[12] = phase.getComponent(i).getx(); - break; - case "n-nonane": - notNormalizedGERGComposition[13] = phase.getComponent(i).getx(); - break; - case "nC10": - notNormalizedGERGComposition[14] = phase.getComponent(i).getx(); - break; - case "hydrogen": - notNormalizedGERGComposition[15] = phase.getComponent(i).getx(); - break; - case "oxygen": - notNormalizedGERGComposition[16] = phase.getComponent(i).getx(); - break; - case "CO": - notNormalizedGERGComposition[17] = phase.getComponent(i).getx(); - break; - case "water": - notNormalizedGERGComposition[18] = phase.getComponent(i).getx(); - break; - case "H2S": - notNormalizedGERGComposition[19] = phase.getComponent(i).getx(); - break; - case "helium": - notNormalizedGERGComposition[20] = phase.getComponent(i).getx(); - break; - case "argon": - notNormalizedGERGComposition[21] = phase.getComponent(i).getx(); - break; + switch (componentName) { + case "methane": + notNormalizedGERGComposition[1] = phase.getComponent(i).getx(); + break; + case "nitrogen": + notNormalizedGERGComposition[2] = phase.getComponent(i).getx(); + break; + case "CO2": + notNormalizedGERGComposition[3] = phase.getComponent(i).getx(); + break; + case "ethane": + notNormalizedGERGComposition[4] = phase.getComponent(i).getx(); + break; + case "propane": + notNormalizedGERGComposition[5] = phase.getComponent(i).getx(); + break; + case "i-butane": + notNormalizedGERGComposition[6] = phase.getComponent(i).getx(); + break; + case "n-butane": + notNormalizedGERGComposition[7] = phase.getComponent(i).getx(); + break; + case "i-pentane": + notNormalizedGERGComposition[8] = phase.getComponent(i).getx(); + break; + case "n-pentane": + notNormalizedGERGComposition[9] = phase.getComponent(i).getx(); + break; + case "n-hexane": + notNormalizedGERGComposition[10] = phase.getComponent(i).getx(); + break; + case "n-heptane": + notNormalizedGERGComposition[11] = phase.getComponent(i).getx(); + break; + case "n-octane": + notNormalizedGERGComposition[12] = phase.getComponent(i).getx(); + break; + case "n-nonane": + notNormalizedGERGComposition[13] = phase.getComponent(i).getx(); + break; + case "nC10": + notNormalizedGERGComposition[14] = phase.getComponent(i).getx(); + break; + case "hydrogen": + notNormalizedGERGComposition[15] = phase.getComponent(i).getx(); + break; + case "oxygen": + notNormalizedGERGComposition[16] = phase.getComponent(i).getx(); + break; + case "CO": + notNormalizedGERGComposition[17] = phase.getComponent(i).getx(); + break; + case "water": + notNormalizedGERGComposition[18] = phase.getComponent(i).getx(); + break; + case "H2S": + notNormalizedGERGComposition[19] = phase.getComponent(i).getx(); + break; + case "helium": + notNormalizedGERGComposition[20] = phase.getComponent(i).getx(); + break; + case "argon": + notNormalizedGERGComposition[21] = phase.getComponent(i).getx(); + break; - default: - double molarMass = phase.getComponent(i).getMolarMass(); - if (molarMass > 44.096759796142 / 1000.0 - && molarMass < 58.1236991882324 / 1000.0) - notNormalizedGERGComposition[7] += phase.getComponent(i).getx(); - if (molarMass > 58.1236991882324 / 1000.0 && molarMass < 72.15064 / 1000.0) - notNormalizedGERGComposition[8] += phase.getComponent(i).getx(); - if (molarMass > 72.15064 / 1000.0 && molarMass < 86.2 / 1000.0) - notNormalizedGERGComposition[10] += phase.getComponent(i).getx(); - if (molarMass > 86.2 / 1000.0 && molarMass < 100.204498291016 / 1000.0) - notNormalizedGERGComposition[11] += phase.getComponent(i).getx(); - if (molarMass > 100.204498291016 / 1000.0 && molarMass < 107.0 / 1000.0) - notNormalizedGERGComposition[12] += phase.getComponent(i).getx(); - if (molarMass > 107.0 / 1000.0 && molarMass < 121.0 / 1000.0) - notNormalizedGERGComposition[13] += phase.getComponent(i).getx(); - if (molarMass > 121.0 / 1000.0) - notNormalizedGERGComposition[14] += phase.getComponent(i).getx(); - break; - }; - } - normalizeComposition(); + default: + double molarMass = phase.getComponent(i).getMolarMass(); + if (molarMass > 44.096759796142 / 1000.0 && molarMass < 58.1236991882324 / 1000.0) { + notNormalizedGERGComposition[7] += phase.getComponent(i).getx(); + } + if (molarMass > 58.1236991882324 / 1000.0 && molarMass < 72.15064 / 1000.0) { + notNormalizedGERGComposition[8] += phase.getComponent(i).getx(); + } + if (molarMass > 72.15064 / 1000.0 && molarMass < 86.2 / 1000.0) { + notNormalizedGERGComposition[10] += phase.getComponent(i).getx(); + } + if (molarMass > 86.2 / 1000.0 && molarMass < 100.204498291016 / 1000.0) { + notNormalizedGERGComposition[11] += phase.getComponent(i).getx(); + } + if (molarMass > 100.204498291016 / 1000.0 && molarMass < 107.0 / 1000.0) { + notNormalizedGERGComposition[12] += phase.getComponent(i).getx(); + } + if (molarMass > 107.0 / 1000.0 && molarMass < 121.0 / 1000.0) { + notNormalizedGERGComposition[13] += phase.getComponent(i).getx(); + } + if (molarMass > 121.0 / 1000.0) { + notNormalizedGERGComposition[14] += phase.getComponent(i).getx(); + } + break; + } } + normalizeComposition(); + } - /** - *

- * normalizeComposition. - *

- */ - public void normalizeComposition() { - double result = 0; - for (double value : notNormalizedGERGComposition) { - result += value; - } - for (int k = 0; k < normalizedGERGComposition.length; k++) { - normalizedGERGComposition[k] = notNormalizedGERGComposition[k] / result; - } + /** + *

+ * normalizeComposition. + *

+ */ + public void normalizeComposition() { + double result = 0; + for (double value : notNormalizedGERGComposition) { + result += value; } + for (int k = 0; k < normalizedGERGComposition.length; k++) { + normalizedGERGComposition[k] = notNormalizedGERGComposition[k] / result; + } + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // test HitHub + SystemInterface fluid1 = new SystemSrkEos(); + fluid1.addComponent("methane", 10.0); + fluid1.addComponent("hydrogen", 90.0); + // fluid1.addComponent("CO2", 1.0); + // fluid1.addComponent("ethane", 10.0); + // fluid1.addComponent("propane", 3.0); + // fluid1.addComponent("n-butane", 1.0); + // fluid1.addComponent("oxygen", 1.0); + /* + * fluid1.addComponent("n-butane", 0.006304); fluid1.addComponent("i-butane", 0.003364); + * fluid1.addComponent("n-pentane", 0.001005); fluid1.addComponent("i-pentane", 0.000994); + * fluid1.addComponent("n-hexane", 0.000369); fluid1.addComponent("n-heptane", 0.000068); + * fluid1.addComponent("n-octane", 0.000008); */ - public static void main(String[] args) { - // test HitHub - SystemInterface fluid1 = new SystemSrkEos(); - fluid1.addComponent("methane", 10.0); - fluid1.addComponent("hydrogen", 90.0); - // fluid1.addComponent("CO2", 1.0); - // fluid1.addComponent("ethane", 10.0); - // fluid1.addComponent("propane", 3.0); - // fluid1.addComponent("n-butane", 1.0); - // fluid1.addComponent("oxygen", 1.0); - /* - * fluid1.addComponent("n-butane", 0.006304); fluid1.addComponent("i-butane", 0.003364); - * fluid1.addComponent("n-pentane", 0.001005); fluid1.addComponent("i-pentane", 0.000994); - * fluid1.addComponent("n-hexane", 0.000369); fluid1.addComponent("n-heptane", 0.000068); - * fluid1.addComponent("n-octane", 0.000008); - */ - // fluid//1.addComponent("ethane", 5.0); - // fluid1.addComponent("propane", 5.0); - // fluid1.addTBPfraction("C8", 0.01, 211.0/1000.0, 0.82); - fluid1.setTemperature(273.15 + 20); - fluid1.setPressure(150.0); - fluid1.init(0); - ThermodynamicOperations ops = new ThermodynamicOperations(fluid1); - ops.TPflash(); - // fluid1.display(); - System.out.println("density GERG " + fluid1.getPhase(0).getDensity_GERG2008()); + // fluid//1.addComponent("ethane", 5.0); + // fluid1.addComponent("propane", 5.0); + // fluid1.addTBPfraction("C8", 0.01, 211.0/1000.0, 0.82); + fluid1.setTemperature(273.15 + 20); + fluid1.setPressure(150.0); + fluid1.init(0); + ThermodynamicOperations ops = new ThermodynamicOperations(fluid1); + ops.TPflash(); + // fluid1.display(); + System.out.println("density GERG " + fluid1.getPhase(0).getDensity_GERG2008()); - NeqSimGERG2008 test = new NeqSimGERG2008(fluid1.getPhase("gas")); - // fluid1.getPhase("gas").getProperties_GERG2008(); - System.out.println("density " + test.getDensity()); - System.out.println("pressure " + test.getPressure()); - // System.out.println("properties " + test.propertiesGERG()); - double[] properties = test.propertiesGERG(); - System.out.println("Pressure [kPa]: " + properties[0]); - System.out.println("Compressibility factor: " + properties[1]); - System.out.println("d(P)/d(rho) [kPa/(mol/l)] " + properties[2]); - System.out.println("d^2(P)/d(rho)^2 [kPa/(mol/l)^2]: " + properties[3]); - System.out.println("d2(P)/d2(T) [kPa/K]: " + properties[4]); - System.out.println("d(P)/d(T) [kPa/K]: " + properties[5]); - System.out.println("Energy [J/mol]: " + properties[6]); - System.out.println("Enthalpy [J/mol]: " + properties[7]); - System.out.println("Entropy [J/mol-K]: " + properties[8]); - System.out.println("Isochoric heat capacity [J/mol-K]: " + properties[9]); - System.out.println("Isobaric heat capacity [J/mol-K]: " + properties[10]); - System.out.println("Speed of sound [m/s]: " + properties[11]); - System.out.println("Gibbs energy [J/mol]: " + properties[12]); - System.out.println("Joule-Thomson coefficient [K/kPa]: " + properties[13]); - System.out.println("Isentropic exponent: " + properties[14]); - } + NeqSimGERG2008 test = new NeqSimGERG2008(fluid1.getPhase("gas")); + // fluid1.getPhase("gas").getProperties_GERG2008(); + System.out.println("density " + test.getDensity()); + System.out.println("pressure " + test.getPressure()); + // System.out.println("properties " + test.propertiesGERG()); + double[] properties = test.propertiesGERG(); + System.out.println("Pressure [kPa]: " + properties[0]); + System.out.println("Compressibility factor: " + properties[1]); + System.out.println("d(P)/d(rho) [kPa/(mol/l)] " + properties[2]); + System.out.println("d^2(P)/d(rho)^2 [kPa/(mol/l)^2]: " + properties[3]); + System.out.println("d2(P)/d2(T) [kPa/K]: " + properties[4]); + System.out.println("d(P)/d(T) [kPa/K]: " + properties[5]); + System.out.println("Energy [J/mol]: " + properties[6]); + System.out.println("Enthalpy [J/mol]: " + properties[7]); + System.out.println("Entropy [J/mol-K]: " + properties[8]); + System.out.println("Isochoric heat capacity [J/mol-K]: " + properties[9]); + System.out.println("Isobaric heat capacity [J/mol-K]: " + properties[10]); + System.out.println("Speed of sound [m/s]: " + properties[11]); + System.out.println("Gibbs energy [J/mol]: " + properties[12]); + System.out.println("Joule-Thomson coefficient [K/kPa]: " + properties[13]); + System.out.println("Isentropic exponent: " + properties[14]); + } } diff --git a/src/main/java/neqsim/thermo/util/JNI/GERG2004EOS.java b/src/main/java/neqsim/thermo/util/JNI/GERG2004EOS.java index 1222958b0e..d058b7cf09 100644 --- a/src/main/java/neqsim/thermo/util/JNI/GERG2004EOS.java +++ b/src/main/java/neqsim/thermo/util/JNI/GERG2004EOS.java @@ -3,6 +3,7 @@ * * Created on 19. september 2006, 12:18 */ + package neqsim.thermo.util.JNI; /** @@ -14,516 +15,515 @@ * @version $Id: $Id */ public class GERG2004EOS { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * POTDX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @return a double - */ - public static native double POTDX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20); + /** + *

+ * POTDX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @return a double + */ + public static native double POTDX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20); - /** - *

- * ZOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return a double - */ - public static native double ZOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * ZOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return a double + */ + public static native double ZOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * HOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return a double - */ - public static native double HOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * HOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return a double + */ + public static native double HOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * SOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return a double - */ - public static native double SOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * SOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return a double + */ + public static native double SOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * CPOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return a double - */ - public static native double CPOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * CPOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return a double + */ + public static native double CPOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * WOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return a double - */ - public static native double WOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * WOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return a double + */ + public static native double WOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * RJTOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return a double - */ - public static native double RJTOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * RJTOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return a double + */ + public static native double RJTOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * GOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return a double - */ - public static native double GOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * GOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return a double + */ + public static native double GOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * UOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return a double - */ - public static native double UOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * UOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return a double + */ + public static native double UOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * AOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return a double - */ - public static native double AOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * AOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return a double + */ + public static native double AOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * SFUGOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return an array of {@link double} objects - */ - public static native double[] SFUGOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * SFUGOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return an array of type double + */ + public static native double[] SFUGOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * SPHIOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return an array of {@link double} objects - */ - public static native double[] SPHIOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * SPHIOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return an array of type double + */ + public static native double[] SPHIOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * CVOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return a double - */ - public static native double CVOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * CVOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return a double + */ + public static native double CVOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - /** - *

- * SALLOTPX. - *

- * - * @param c1 a double - * @param c2 a double - * @param c3 a double - * @param c4 a double - * @param c5 a double - * @param c6 a double - * @param c7 a double - * @param c8 a double - * @param c9 a double - * @param c10 a double - * @param c11 a double - * @param c12 a double - * @param c13 a double - * @param c14 a double - * @param c15 a double - * @param c16 a double - * @param c17 a double - * @param c18 a double - * @param c19 a double - * @param c20 a double - * @param IPHASE a int - * @return an array of {@link double} objects - */ - public static native double[] SALLOTPX(double c1, double c2, double c3, double c4, double c5, - double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double c13, double c14, double c15, double c16, double c17, double c18, double c19, - double c20, int IPHASE); + /** + *

+ * SALLOTPX. + *

+ * + * @param c1 a double + * @param c2 a double + * @param c3 a double + * @param c4 a double + * @param c5 a double + * @param c6 a double + * @param c7 a double + * @param c8 a double + * @param c9 a double + * @param c10 a double + * @param c11 a double + * @param c12 a double + * @param c13 a double + * @param c14 a double + * @param c15 a double + * @param c16 a double + * @param c17 a double + * @param c18 a double + * @param c19 a double + * @param c20 a double + * @param IPHASE a int + * @return an array of type double + */ + public static native double[] SALLOTPX(double c1, double c2, double c3, double c4, double c5, + double c6, double c7, double c8, double c9, double c10, double c11, double c12, double c13, + double c14, double c15, double c16, double c17, double c18, double c19, double c20, + int IPHASE); - public String[] nameList = {"methane", "nitrogen", "CO2", "ethane", "propane", "n-butane", - "i-butane", "n-pentane", "i-pentane", "n-hexane", "n-heptane", "n-octane", "hydrogen", - "oxygen", "CO", "water", "helium", "argon"}; + public String[] nameList = {"methane", "nitrogen", "CO2", "ethane", "propane", "n-butane", + "i-butane", "n-pentane", "i-pentane", "n-hexane", "n-heptane", "n-octane", "hydrogen", + "oxygen", "CO", "water", "helium", "argon"}; - /** - *

- * Constructor for GERG2004EOS. - *

- */ - public GERG2004EOS() { - // todo: does not work - System.loadLibrary("test2"); - } + /** + *

+ * Constructor for GERG2004EOS. + *

+ */ + public GERG2004EOS() { + // TODO: does not work + System.loadLibrary("test2"); + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - GERG2004EOS gergEOS = new GERG2004EOS(); - double c1 = 298.0, c2 = 0.1, c3 = 0.90, c4 = 0.1, c5 = 0, c6 = 0, c7 = 0, c8 = 0, c9 = 0, - c10 = 0, c11 = 0, c12 = 0, c13 = 0, c14 = 0, c15 = 0, c16 = 0, c17 = 0, c18 = 0, - c19 = 0, c20 = 0; - // double a2 = gergEOS.POTDX (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, - // c13, c14, c15, c16, c17, c18, c19, c20); - double a4 = GERG2004EOS.SALLOTPX(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, - c14, c15, c16, c17, c18, c19, c20, 2)[3]; - double a2 = GERG2004EOS.ZOTPX(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, - c15, c16, c17, c18, c19, c20, 2); - double[] a3 = new double[18]; - // a3 = gergEOS.SPHIOTPX(c1, c2, - // c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,-2); - // System.out.println("potdx " + a); - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + GERG2004EOS gergEOS = new GERG2004EOS(); + double c1 = 298.0, c2 = 0.1, c3 = 0.90, c4 = 0.1, c5 = 0, c6 = 0, c7 = 0, c8 = 0, c9 = 0, + c10 = 0, c11 = 0, c12 = 0, c13 = 0, c14 = 0, c15 = 0, c16 = 0, c17 = 0, c18 = 0, c19 = 0, + c20 = 0; + // double a2 = gergEOS.POTDX (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, + // c13, c14, c15, c16, c17, c18, c19, c20); + double a4 = GERG2004EOS.SALLOTPX(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, + c15, c16, c17, c18, c19, c20, 2)[3]; + double a2 = GERG2004EOS.ZOTPX(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, + c16, c17, c18, c19, c20, 2); + double[] a3 = new double[18]; + // a3 = gergEOS.SPHIOTPX(c1, c2, + // c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,-2); + // System.out.println("potdx " + a); + } - /** - *

- * Getter for the field nameList. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[] getNameList() { - return nameList; - } + /** + *

+ * Getter for the field nameList. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getNameList() { + return nameList; + } } diff --git a/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark.java b/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark.java index 1789421a26..f269fdd783 100644 --- a/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark.java +++ b/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark.java @@ -23,12 +23,11 @@ public class TPflash_benchmark { * @param args an array of {@link java.lang.String} objects */ public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(303.15, 35.01325); // SystemInterface testSystem = new SystemSrkCPAstatoil(303.15, 10.0); // SystemInterface testSystem = new SystemUMRPRUMCEos(303.0, 10.0); // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(298.15, - // 1.01325); + // ThermodynamicConstantsInterface.referencePressure); ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); testSystem.addComponent("nitrogen", 0.0028941); @@ -68,7 +67,7 @@ public static void main(String args[]) { // testSystem.display(); // SystemInterface testSystem2 = // testSystem.readObjectFromFile("c:/temp/test2.neqsim", "test2.neqsim"); - /// testSystem2.init(3); + // testSystem2.init(3); // testSystem2.display(); // testSystem2.init(0); // testSystem2.init(3); diff --git a/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark_UMR.java b/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark_UMR.java index 5aaba70e78..a02ff75df2 100644 --- a/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark_UMR.java +++ b/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark_UMR.java @@ -7,60 +7,62 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TPflash_benchmark_UMR class.

+ *

+ * TPflash_benchmark_UMR class. + *

* * @author asmund * @version $Id: $Id */ public class TPflash_benchmark_UMR { - static Logger logger = LogManager.getLogger(TPflash_benchmark_UMR.class); + static Logger logger = LogManager.getLogger(TPflash_benchmark_UMR.class); - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - double[][] points; + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + double[][] points; - SystemInterface testSystem = new SystemUMRPRUMCEos(273.15 - 5.0, 10.0); + SystemInterface testSystem = new SystemUMRPRUMCEos(273.15 - 5.0, 10.0); - testSystem.addComponent("CO2", 2.1); - testSystem.addComponent("nitrogen", 1.16); - testSystem.addComponent("methane", 26.19); - testSystem.addComponent("propane", 8.27); + testSystem.addComponent("CO2", 2.1); + testSystem.addComponent("nitrogen", 1.16); + testSystem.addComponent("methane", 26.19); + testSystem.addComponent("propane", 8.27); - testSystem.addComponent("propane", 7.5); - testSystem.addComponent("i-butane", 1.83); - testSystem.addComponent("n-butane", 4.05); - testSystem.addComponent("i-pentane", 1.85); - testSystem.addComponent("n-pentane", 2.45); - testSystem.addComponent("n-hexane", 40.6); - testSystem.addComponent("water", 40.6); - testSystem.createDatabase(true); - testSystem.setMultiPhaseCheck(true); - long time = System.currentTimeMillis(); - testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - logger.info("Time taken for reading parameters = " + (System.currentTimeMillis() - time)); + testSystem.addComponent("propane", 7.5); + testSystem.addComponent("i-butane", 1.83); + testSystem.addComponent("n-butane", 4.05); + testSystem.addComponent("i-pentane", 1.85); + testSystem.addComponent("n-pentane", 2.45); + testSystem.addComponent("n-hexane", 40.6); + testSystem.addComponent("water", 40.6); + testSystem.createDatabase(true); + testSystem.setMultiPhaseCheck(true); + long time = System.currentTimeMillis(); + testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); + logger.info("Time taken for reading parameters = " + (System.currentTimeMillis() - time)); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - time = System.currentTimeMillis(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + time = System.currentTimeMillis(); - for (int i = 0; i < 1000; i++) { - testOps.TPflash(); - // testSystem.init(3); - try { - // testOps.hydrateFormationTemperature(); - // testOps.calcTOLHydrateFormationTemperature(); - } catch (Exception e) { - logger.error("error", e); - } - } - logger.info("Time taken for benchmark flash = " + (System.currentTimeMillis() - time)); - testSystem.display(); - - // base case - 31/8-2013 8:37 reading parameters 19312 flash 702 - running on AC - // base case - 1/9-2013 8:37 reading parameters 19298 flash 452 - running on AC + for (int i = 0; i < 1000; i++) { + testOps.TPflash(); + // testSystem.init(3); + try { + // testOps.hydrateFormationTemperature(); + // testOps.calcTOLHydrateFormationTemperature(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } + logger.info("Time taken for benchmark flash = " + (System.currentTimeMillis() - time)); + testSystem.display(); + + // base case - 31/8-2013 8:37 reading parameters 19312 flash 702 - running on AC + // base case - 1/9-2013 8:37 reading parameters 19298 flash 452 - running on AC + } } diff --git a/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark_fullcomp.java b/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark_fullcomp.java index 34072ae629..a9f32f244a 100644 --- a/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark_fullcomp.java +++ b/src/main/java/neqsim/thermo/util/benchmark/TPflash_benchmark_fullcomp.java @@ -7,80 +7,82 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TPflash_benchmark_fullcomp class.

+ *

+ * TPflash_benchmark_fullcomp class. + *

* * @author asmund * @version $Id: $Id */ public class TPflash_benchmark_fullcomp { - static Logger logger = LogManager.getLogger(TPflash_benchmark_fullcomp.class); + static Logger logger = LogManager.getLogger(TPflash_benchmark_fullcomp.class); - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - double[][] points; + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + double[][] points; - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 - 5.0, 10.0); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(298.15, - // 1.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 - 5.0, 10.0); + // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(298.15, + // ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("CO2", 2.1); - // testSystem.addComponent("nitrogen", 1.16); - testSystem.addComponent("methane", 26.19); - testSystem.addComponent("propane", 8.27); + // testSystem.addComponent("CO2", 2.1); + // testSystem.addComponent("nitrogen", 1.16); + testSystem.addComponent("methane", 26.19); + testSystem.addComponent("propane", 8.27); - testSystem.addComponent("propane", 7.5); - testSystem.addComponent("i-butane", 1.83); - testSystem.addComponent("n-butane", 4.05); - testSystem.addComponent("iC5", 1.85); - testSystem.addComponent("n-pentane", 2.45); - testSystem.addComponent("n-hexane", 40.6); + testSystem.addComponent("propane", 7.5); + testSystem.addComponent("i-butane", 1.83); + testSystem.addComponent("n-butane", 4.05); + testSystem.addComponent("iC5", 1.85); + testSystem.addComponent("n-pentane", 2.45); + testSystem.addComponent("n-hexane", 40.6); - testSystem.addTBPfraction("C6", 1.49985, 86.3 / 1000.0, 0.7232); - testSystem.addTBPfraction("C7", 0.0359864, 96.0 / 1000.0, 0.738); - testSystem.addTBPfraction("C8", 0.939906, 107.0 / 1000.0, 0.765); - testSystem.addTBPfraction("C9", 0.879912, 121.0 / 1000.0, 0.781); - testSystem.addTBPfraction("C10", 0.45, 134.0 / 1000.0, 0.792); + testSystem.addTBPfraction("C6", 1.49985, 86.3 / 1000.0, 0.7232); + testSystem.addTBPfraction("C7", 0.0359864, 96.0 / 1000.0, 0.738); + testSystem.addTBPfraction("C8", 0.939906, 107.0 / 1000.0, 0.765); + testSystem.addTBPfraction("C9", 0.879912, 121.0 / 1000.0, 0.781); + testSystem.addTBPfraction("C10", 0.45, 134.0 / 1000.0, 0.792); - // testSystem.addComponent("methanol", 1.0); - // testSystem.addComponent("MEG", 11.0); - // testSystem.addComponent("water", 84.35); - // testSystem.addComponent("methanol", 15.65); - testSystem.setMultiPhaseCheck(true); - testSystem.setHydrateCheck(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(9); - logger.info("start benchmark TPflash......"); - long time = System.currentTimeMillis(); - for (int i = 0; i < 1000000; i++) { - testOps.TPflash(); - try { - // testOps.hydrateFormationTemperature(); - // testOps.calcTOLHydrateFormationTemperature(); - } catch (Exception e) { - logger.error("error", e); - } - } - logger.info("Time taken for benchmark flash = " + (System.currentTimeMillis() - time)); - testOps.displayResult(); + // testSystem.addComponent("methanol", 1.0); + // testSystem.addComponent("MEG", 11.0); + // testSystem.addComponent("water", 84.35); + // testSystem.addComponent("methanol", 15.65); + testSystem.setMultiPhaseCheck(true); + testSystem.setHydrateCheck(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(9); + logger.info("start benchmark TPflash......"); + long time = System.currentTimeMillis(); + for (int i = 0; i < 1000000; i++) { + testOps.TPflash(); + try { + // testOps.hydrateFormationTemperature(); + // testOps.calcTOLHydrateFormationTemperature(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + logger.info("Time taken for benchmark flash = " + (System.currentTimeMillis() - time)); + testOps.displayResult(); - // time for 5000 flash calculations - // Results Dell Portable PIII 750 MHz - JDK 1.3.1: - // mixrule 1 (Classic - no interaction): 6.719 sec - // mixrule 2 (Classic): 6.029 sec ny PC 1.498 sec - // mixrule 4 (Huron-Vidal2): 17.545 sec - // mixrule 6 (Wong-Sandler): 12.859 sec + // time for 5000 flash calculations + // Results Dell Portable PIII 750 MHz - JDK 1.3.1: + // mixrule 1 (Classic - no interaction): 6.719 sec + // mixrule 2 (Classic): 6.029 sec ny PC 1.498 sec + // mixrule 4 (Huron-Vidal2): 17.545 sec + // mixrule 6 (Wong-Sandler): 12.859 sec - // // system: - // SystemSrkEos testSystem = new SystemSrkEos(303.15, 10.01325); - // ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("methane", 100.0); - // testSystem.addComponent("water", 100.0); - // testSystem.setMixingRule(1); - } + // // system: + // SystemSrkEos testSystem = new SystemSrkEos(303.15, 10.01325); + // ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("methane", 100.0); + // testSystem.addComponent("water", 100.0); + // testSystem.setMixingRule(1); + } } diff --git a/src/main/java/neqsim/thermo/util/constants/FurstElectrolyteConstants.java b/src/main/java/neqsim/thermo/util/constants/FurstElectrolyteConstants.java index 739c5c811d..0a960a4ae9 100644 --- a/src/main/java/neqsim/thermo/util/constants/FurstElectrolyteConstants.java +++ b/src/main/java/neqsim/thermo/util/constants/FurstElectrolyteConstants.java @@ -3,6 +3,7 @@ * * Created on 29. oktober 2001, 14:08 */ + package neqsim.thermo.util.constants; /** @@ -13,95 +14,94 @@ * @author esol * @version $Id: $Id */ -public class FurstElectrolyteConstants implements java.io.Serializable { - private static final long serialVersionUID = 1000; +public final class FurstElectrolyteConstants implements java.io.Serializable { + private static final long serialVersionUID = 1000; - // public static double[] furstParams = {0.0982e-6, 7.003e-6, 77.22e-6, - // -25.314e-6, -0.05813e-6, -44.383e-6}; - /** Constant furstParams */ - public static double[] furstParams = - {0.0000001117, 0.0000053771, 0.0000699219, 0.0000043984, -0.0000000606, -0.0000217950}; - // public static double[] furstParams = {0.0000001018, 0.0000064366, - // 0.0001103447, -0.0001631115, -0.0000000565, -0.0000565052}; - // public static double[] furstParams = {0.10688e-6, 6.5665e-6, 35.09e-6, - // 6.004e-6, -0.04304e-6, -27.510e-6}; - // public static double[] furstParams = {8.806E-8, 6.905E-6, 2.064E-5, 2.285E-4, - // -5.531E-8, -4.321E-5}; - // public static double[] furstParams = {8.806E-8, 6.905E-6, 35.09e-6, 6.004e-6, - // -5.531E-8, -4.321E-5}; - //// public static double[] furstParams = {8.717E-8, 8.309E-6, 2.435E-5, - // 2.024E-4, -5.757E-8, -5.693E-5}; - // public static double[] furstParams = {9.8647e-8, 6.9638e-6, 7.713e-5, - // -2.501e-5, -5.813E-8, -4.447E-5};;//{9.8647e-8, 6.9638e-6, 7.713E-5, - // -2.501E-5, -5.813E-8, -4.447E-5}; - // public static double[] furstParams = {9.463E-8, 6.694E-6, -1.021E-5, - // 4.137E-4, -5.172E-8, -5.832E-5}; - // public static double[] furstParamsCPA = {0.0000000752, 0.0000037242, - // 0.0000250998, 0.0000198635, -0.0000000311, -0.0000006630}; // before fitting - // 2015 - /** Constant furstParamsCPA */ - public static double[] furstParamsCPA = - {0.00000014880379801585537, 0.000005016259143319152, 0.00004614450758742748, - -0.00006428039395924042, -0.000000039695971380410286, -0.000021035816766450363}; - /** Constant furstParamsCPA_MDEA */ - public static double[] furstParamsCPA_MDEA = - {0.0000000752, 0.0000037242, -0.0004725836, 0.0026038239, -0.0000002479, -0.0000082501}; + // public static double[] furstParams = {0.0982e-6, 7.003e-6, 77.22e-6, + // -25.314e-6, -0.05813e-6, -44.383e-6}; + /** Constant furstParams. */ + public static double[] furstParams = + {0.0000001117, 0.0000053771, 0.0000699219, 0.0000043984, -0.0000000606, -0.0000217950}; + // public static double[] furstParams = {0.0000001018, 0.0000064366, + // 0.0001103447, -0.0001631115, -0.0000000565, -0.0000565052}; + // public static double[] furstParams = {0.10688e-6, 6.5665e-6, 35.09e-6, + // 6.004e-6, -0.04304e-6, -27.510e-6}; + // public static double[] furstParams = {8.806E-8, 6.905E-6, 2.064E-5, 2.285E-4, + // -5.531E-8, -4.321E-5}; + // public static double[] furstParams = {8.806E-8, 6.905E-6, 35.09e-6, 6.004e-6, + // -5.531E-8, -4.321E-5}; + // public static double[] furstParams = {8.717E-8, 8.309E-6, 2.435E-5, + // 2.024E-4, -5.757E-8, -5.693E-5}; + // public static double[] furstParams = {9.8647e-8, 6.9638e-6, 7.713e-5, + // -2.501e-5, -5.813E-8, -4.447E-5}; //{9.8647e-8, 6.9638e-6, 7.713E-5, + // -2.501E-5, -5.813E-8, -4.447E-5}; + // public static double[] furstParams = {9.463E-8, 6.694E-6, -1.021E-5, + // 4.137E-4, -5.172E-8, -5.832E-5}; + // public static double[] furstParamsCPA = {0.0000000752, 0.0000037242, + // 0.0000250998, 0.0000198635, -0.0000000311, -0.0000006630}; // before fitting + // 2015 + /** Constant furstParamsCPA. */ + public static double[] furstParamsCPA = + {0.00000014880379801585537, 0.000005016259143319152, 0.00004614450758742748, + -0.00006428039395924042, -0.000000039695971380410286, -0.000021035816766450363}; + /** Constant furstParamsCPA_MDEA. */ + public static double[] furstParamsCPA_MDEA = + {0.0000000752, 0.0000037242, -0.0004725836, 0.0026038239, -0.0000002479, -0.0000082501}; - // 0.0000001880, 0.0000014139, 0.0000284666, 0.0000389043, -0.0000000451, - // 0.0000088136 - /** - *

- * Constructor for FurstElectrolyteConstants. - *

- */ - public FurstElectrolyteConstants() {} + // 0.0000001880, 0.0000014139, 0.0000284666, 0.0000389043, -0.0000000451, + // 0.0000088136 - /** - *

- * setFurstParam. - *

- * - * @param i a int - * @param value a double - */ - public static void setFurstParam(int i, double value) { - furstParams[i] = value; - } + /** + * Dummy constructor, not for use. Class is to be considered static. + */ + private FurstElectrolyteConstants() {} - /** - *

- * getFurstParam. - *

- * - * @param i a int - * @return a double - */ - public static double getFurstParam(int i) { - return furstParams[i]; - } + /** + *

+ * setFurstParam. + *

+ * + * @param i a int + * @param value a double + */ + public static void setFurstParam(int i, double value) { + furstParams[i] = value; + } - /** - *

- * getFurstParamMDEA. - *

- * - * @param i a int - * @return a double - */ - public static double getFurstParamMDEA(int i) { - return furstParamsCPA_MDEA[i]; - } + /** + *

+ * getFurstParam. + *

+ * + * @param i a int + * @return a double + */ + public static double getFurstParam(int i) { + return furstParams[i]; + } + + /** + *

+ * getFurstParamMDEA. + *

+ * + * @param i a int + * @return a double + */ + public static double getFurstParamMDEA(int i) { + return furstParamsCPA_MDEA[i]; + } - /** - *

- * Setter for the field furstParams. - *

- * - * @param type a {@link java.lang.String} object - */ - public static void setFurstParams(String type) { - if (type.equals("electrolyteCPA")) { - furstParams = furstParamsCPA; - } + /** + *

+ * Setter for the field furstParams. + *

+ * + * @param type a {@link java.lang.String} object + */ + public static void setFurstParams(String type) { + if (type.equalsIgnoreCase("electrolyteCPA")) { + furstParams = furstParamsCPA; } + } } diff --git a/src/main/java/neqsim/thermo/util/empiric/BukacekWaterInGas.java b/src/main/java/neqsim/thermo/util/empiric/BukacekWaterInGas.java index e2d25a1580..0695911184 100644 --- a/src/main/java/neqsim/thermo/util/empiric/BukacekWaterInGas.java +++ b/src/main/java/neqsim/thermo/util/empiric/BukacekWaterInGas.java @@ -1,70 +1,85 @@ package neqsim.thermo.util.empiric; +import neqsim.thermo.ThermodynamicConstantsInterface; + /** - *

BukacekWaterInGas class.

+ *

+ * BukacekWaterInGas class. + *

* * @author asmund * @version $Id: $Id */ public class BukacekWaterInGas { - /* - * Calculates the ppm(mol) water content of a gas at its water dew point - */ - /** - *

getWaterInGas.

- * - * @param temperature a double - * @param pressure a double - * @return a double - */ - public static double getWaterInGas(double temperature, double pressure) { - double TCwater = 393.99+273.15, PCwater = 220.64; - double tau = (TCwater-temperature)/TCwater; - - double temp = (-7.85823*tau + 1.83991*Math.pow(tau, 1.5) - 11.7811*Math.pow(tau, 3.0) - + 22.67*Math.pow(tau, 3.5) - 15.9393*Math.pow(tau, 4.0) + 1.77516*Math.pow(tau, 7.5))/(1.0-tau); - double psw = PCwater*Math.exp(temp); - - double mgwaterSm3 = 761900.42*psw/pressure + 16.016*Math.pow(10.0, -1716.26/(temperature) + 6.69449); - - double molarMassGas = 0.6*28.0*1000.0; // mgr/mol - - double ans = mgwaterSm3/molarMassGas; // mol water /Sm3 gas - - double molgasSm3 = 101325.0/(8.314*288.15); // mol gas/ Sm3 - - return ans / molgasSm3; - } - - /** - *

waterDewPointTemperature.

- * - * @param moleFractionWaterInGas a double - * @param pressure a double - * @return a double - */ - public static double waterDewPointTemperature(double moleFractionWaterInGas, double pressure) { - int iter = 0; - double newppm, newTemp = 273.15; - do { - iter++; + /* + * Calculates the ppm(mol) water content of a gas at its water dew point + */ + /** + *

+ * getWaterInGas. + *

+ * + * @param temperature a double + * @param pressure a double + * @return a double + */ + public static double getWaterInGas(double temperature, double pressure) { + double TCwater = 393.99 + 273.15, PCwater = 220.64; + double tau = (TCwater - temperature) / TCwater; + + double temp = (-7.85823 * tau + 1.83991 * Math.pow(tau, 1.5) - 11.7811 * Math.pow(tau, 3.0) + + 22.67 * Math.pow(tau, 3.5) - 15.9393 * Math.pow(tau, 4.0) + 1.77516 * Math.pow(tau, 7.5)) + / (1.0 - tau); + double psw = PCwater * Math.exp(temp); + + double mgwaterSm3 = + 761900.42 * psw / pressure + 16.016 * Math.pow(10.0, -1716.26 / (temperature) + 6.69449); + + double molarMassGas = 0.6 * 28.0 * 1000.0; // mgr/mol + + double ans = mgwaterSm3 / molarMassGas; // mol water /Sm3 gas + + double molgasSm3 = + ThermodynamicConstantsInterface.atm / (ThermodynamicConstantsInterface.R * 288.15); // mol + // gas/ + // Sm3 + + return ans / molgasSm3; + } + + /** + *

+ * waterDewPointTemperature. + *

+ * + * @param moleFractionWaterInGas a double + * @param pressure a double + * @return a double + */ + public static double waterDewPointTemperature(double moleFractionWaterInGas, double pressure) { + int iter = 0; + double newppm, newTemp = 273.15; + do { + iter++; - newppm = getWaterInGas(newTemp, pressure); - newTemp -= (newppm - moleFractionWaterInGas) * 1e5; - } while (Math.abs((newppm - moleFractionWaterInGas) / moleFractionWaterInGas) > 1e-8 - && iter < 1000); - return newTemp; - } + newppm = getWaterInGas(newTemp, pressure); + newTemp -= (newppm - moleFractionWaterInGas) * 1e5; + } while (Math.abs((newppm - moleFractionWaterInGas) / moleFractionWaterInGas) > 1e-8 + && iter < 1000); + return newTemp; + } - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - System.out.println("water in gas " + BukacekWaterInGas.getWaterInGas(273.15 - 18.0, 70.0)); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + System.out.println("water in gas " + BukacekWaterInGas.getWaterInGas(273.15 - 18.0, 70.0)); - System.out.println("water dew point temperature " - + (BukacekWaterInGas.waterDewPointTemperature(20.0e-6, 70.0) - 273.15)); - } + System.out.println("water dew point temperature " + + (BukacekWaterInGas.waterDewPointTemperature(20.0e-6, 70.0) - 273.15)); + } } diff --git a/src/main/java/neqsim/thermo/util/empiric/DuanSun.java b/src/main/java/neqsim/thermo/util/empiric/DuanSun.java index 075e1ee12f..9484f333ed 100644 --- a/src/main/java/neqsim/thermo/util/empiric/DuanSun.java +++ b/src/main/java/neqsim/thermo/util/empiric/DuanSun.java @@ -1,5 +1,8 @@ package neqsim.thermo.util.empiric; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemElectrolyteCPAstatoil; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -13,673 +16,673 @@ * @version $Id: $Id */ public class DuanSun { - double[] c = new double[] {0.1, 0.2, 0.3, 0.4, 0.5}; - double[] d = new double[] {0.1, 0.2, 0.3, 0.4, 0.5}; - - /** - *

- * Constructor for DuanSun. - *

- */ - public DuanSun() {} - - /** - *

- * bublePointPressure. - *

- * - * @param temperature a double - * @param x_CO2 a double - * @param salinity a double - * @return a double - */ - public double bublePointPressure(double temperature, double x_CO2, double salinity) { - // Type manually the pressure limits according to the expected pressure - double P = 9.0, Pold = 9.0, Poldold = 9.0; - double y[] = {0.9, 0.1}; - double[] x = {x_CO2, 1.0 - x_CO2}; - double error = 1e10, errorOld = 1e10; - int iter = 1; - do { - // while (P < 15.0) { - iter++; - double Tc[] = {304.2, 647.3}; - double Pc[] = {72.8, 217.6}; - double w[] = {0.225, 0.344}; - double K12[][] = {{0.0, 0.2}, {0.2, 0.0}}; - double T = temperature; - double S = salinity; - // double[] x = {0.000554093, 1.0-0.000554093}; - - // Normalize Y - double SUMY = 0.0; - for (int i = 0; i < 2; i++) { - SUMY = SUMY + y[i]; - } - for (int i = 0; i < 2; i++) { - y[i] = y[i] / SUMY; - } - // System.out.println(SUMY); - // System.out.println(y[0]); - - double R = 8.314 * Math.pow(10.0, -2.0); - - // Calculate A and B of pure compound - double Tr[] = {0.0, 0.0}; - double ac = 0.45724; - double bc = 0.07780; - double d[] = {0.384401, 1.52276, -0.213808, 0.034616, -0.001976}; - double dm[] = {0.0, 0.0}; - double ag[] = {0.0, 0.0}; - double asmal[] = {0.0, 0.0}; - double bsmal[] = {0.0, 0.0}; - double a[] = {0.0, 0.0}; - double b[] = {0.0, 0.0}; - - for (int i = 0; i < 2; i++) { - Tr[i] = T / Tc[i]; - dm[i] = d[0] + w[i] * (d[1] + w[i] * (d[2] + w[i] * (d[3] + w[i] * d[4]))); - ag[i] = Math.pow((1.0 + dm[i] * (1.0 - Math.pow(Tr[i], 0.5))), 2.0); - asmal[i] = ag[i] * ac * ((Math.pow(R * Tc[i], 2.0)) / Pc[i]); - bsmal[i] = bc * (R * Tc[i]) / Pc[i]; - a[i] = asmal[i] * P / (Math.pow(R * T, 2.0)); - b[i] = bsmal[i] * P / (R * T); - } - - // System.out.println("asmal0 = " + asmal[0]); - // System.out.println("asmal1 = " +asmal[1]); - // System.out.println("bsmal0 = " +bsmal[0]); - // System.out.println("bsmal1 = " +bsmal[1]); - // System.out.println("a0 = " +a[0]); - // System.out.println("a1 = " +a[1]); - // System.out.println("b0 = " +b[0]); - // System.out.println("b1 = " +b[1]); - - // Calculate A and B of mixture - - double av = 0.0; - double bv = 0.0; - double sumav[] = {0.0, 0.0}; - double aij = 0.0; - - for (int i = 0; i < 2; i++) { - sumav[i] = 0.0; - for (int j = 0; j < 2; j++) { - aij = Math.sqrt(a[i] * a[j]) * (1.0 - K12[i][j]); - av = av + y[i] * y[j] * aij; - sumav[i] = sumav[i] + y[j] * aij; - } - bv = bv + y[i] * b[i]; - } - // System.out.println("av = " + av); - // System.out.println("bv = " + bv); - - // ZCUBIC - double c0 = 0.0; - double c1 = 0.0; - double c2 = 0.0; - double c3 = 0.0; - - c0 = -(av * bv - Math.pow(bv, 2.0) - Math.pow(bv, 3.0)); - c1 = av - 3.0 * Math.pow(bv, 2.0) - 2.0 * bv; - c2 = -(1.0 - bv); - c3 = 1.0; - - // for(int i=0;i<1;i++) { - // c0=-(a[i]*b[i]-Math.pow(b[i],2)-Math.pow(b[i],3)); - // c1=a[i]-3.0*Math.pow(b[i],2)-2.0*b[i]; - // c2=-(1.0-b[i]); - // c3=1.0; - // } - - // System.out.println("c0 = " +c0); - // System.out.println("c1 = " +c1); - // System.out.println("c2 = " +c2); - // System.out.println("c3 = " +c3); - - // PZEROS - double OMEGA = 0.0; - double ROOT[] = {0.0, 0.0, 0.0}; - double W[] = {0.0, 0.0, 0.0}; - double k = 0.0; - double NRR = 0.0; - double PHI = 0.0; - double A0 = c0 / c3; - double A1 = c1 / c3; - double A2 = c2 / c3; - double p = (3 * A1 - Math.pow(A2, 2)) / 3.0; - double Q = (27.0 * A0 - 9.0 * A1 * A2 + 2.0 * Math.pow(A2, 3.0)) / 27.0; - double D = (Math.pow(Q, 2)) / 4.0 + (Math.pow(p, 3.0) / 27.0); - double r = Math.sqrt(Math.pow(Math.abs(p), 3) / 27.0); - double PI = Math.acos(-1.0); - - if (D < Math.pow(10.0, -16.0)) { - NRR = 3.0; - PHI = Math.acos(-Q / (2.0 * r)); - for (int i = 0; i < 3; i++) { - k = i - 1.0; - W[i] = 2.0 * Math.pow(r, (1.0 / 3.0)) * Math.cos((PHI + 2.0 * PI * k) / 3.0); - ROOT[i] = W[i] - A2 / 3.0; - } - } else { - NRR = 1.0; - if (p < 0.0) { - OMEGA = Math.asin(2.0 * r / Q); - PHI = Math.atan(Math.pow((Math.tan(Math.abs(OMEGA) / 2.0)), 1.0 / 3.0)); - if (OMEGA < 0.0) { - PHI = -PHI; - W[0] = -2.0 * Math.sqrt(-p / 3.0) / Math.sin(2.0 * PHI); - } - } else { - OMEGA = Math.atan(2.0 * r / Q); - PHI = Math.atan(Math.pow((Math.tan(Math.abs(OMEGA) / 2.0)), 1.0 / 3.0)); - if (OMEGA < 0.0) { - PHI = -PHI; - } - W[0] = -2.0 * Math.sqrt(p / 3.0) / Math.tan(2.0 * PHI); - } - ROOT[0] = W[0] - A2 / 3.0; - ROOT[1] = 0.0; - ROOT[2] = 0.0; - } - - double zv = 0.0; - // double IERR = 0.0; - - if (NRR == 1.0) { - zv = ROOT[0]; - } else { - zv = Math.max(Math.max(ROOT[0], ROOT[1]), ROOT[2]); - } - - if (zv < Math.pow(10.0, -19.0)) { - // IERR = 1; - // System.out.println(IERR); - } - - // System.out.println("zv = " + zv); - - double VV = 0.0; - - VV = zv * R * T / P; - // System.out.println("VV = " + VV); - - // Correction of volume - double trans[] = {0.0, 0.0}; - double bh[] = {0.0, 0.0}; - double t0[] = {0.0, 0.0}; - double ti[] = {0.0, 0.0}; - double zc[] = {0.0, 0.0}; - double TEV = 0.0; - double zceos = 0.3074; - double dk0 = -0.014471; - double dk1 = 0.067498; - double dk2 = -0.084852; - double dk3 = 0.067298; - double dk4 = -0.017366; - double dl0 = -10.24470; - double dl1 = -28.63120; - double dl2 = 0.0; - for (int i = 0; i < 2; i++) { - zc[i] = 0.2890 + w[i] * (-0.0701 - 0.0207 * w[i]); - ti[i] = (R * Tc[i] / Pc[i]) * (zceos - zc[i]); - t0[i] = (R * Tc[i] / Pc[i]) - * (dk0 + w[i] * (dk1 + w[i] * (dk2 + w[i] * (dk3 + w[i] * dk4)))); - bh[i] = dl0 + w[i] * (dl1 + w[i] * dl2); - trans[i] = t0[i] + (ti[i] - t0[i]) * Math.exp(bh[i] * Math.abs(1.0 - Tr[i])); - TEV = TEV + y[i] * trans[i]; - } - VV = VV - TEV; - // System.out.println("VV = " + VV); - // System.out.println("TEV = " + TEV); - - // Calculate fugacity coefficient (FC) for all components and phases - - double dlnfc[] = {0.0, 0.0}; - double fcv[] = {0.0, 0.0}; - - for (int i = 0; i < 2; i++) { - dlnfc[i] = (b[i] / bv) * (zv - 1.0) - Math.log(zv - bv) - - (av / (2.0 * Math.sqrt(2.0) * bv)) * (2.0 * sumav[i] / av - b[i] / bv) - * Math.log((zv + 2.414 * bv) / (zv - 0.414 * bv)); - fcv[i] = Math.exp(dlnfc[i]); - } - - // System.out.println("fcv0 = " + fcv[0]); - // System.out.println("fcv1 = " + fcv[1]); - - double fv[] = {0.0, 0.0}; - - for (int i = 0; i < 2; i++) { - fv[i] = fcv[i] * y[i] * P; - } - - // System.out.println("fv0 = " + fv[0]); - // System.out.println("fv1 = " + fv[1]); - - // VCO2INF - - double VCO2INF = 0.0; - - VCO2INF = (-159751499.972988 * Math.pow(10.0, -10.0)) - + (101831855.926854 * Math.pow(10.0, -10)) * S - + (18075168.978622 * Math.pow(10.0, -11.0)) * T - - (787538191.939352 * Math.pow(10.0, -13.0)) * S * T - - (192886808.345857 * Math.pow(10.0, -11.0)) * (Math.pow(S, 2.0)) - + 142830810.095592 * Math.pow(10.0, -15.0) * S * (Math.pow(T, 2.0)) - + (123450785.102997 * Math.pow(10.0, -13.0)) * T * (Math.pow(S, 2.0)) - - (220053285.910771 * Math.pow(10.0, -16.0)) * (Math.pow(S, 2.0)) - * (Math.pow(T, 2.0)) - - 35351000.350961 * Math.pow(10.0, -17.0) * (Math.pow(T, 3.0)); - - // System.out.println("VCO2INF = " + VCO2INF); - - double HCO2AST = 0.0; - - HCO2AST = (547703618.010975 * Math.pow(10.0, -3.0)) - - (237824440.424155 * Math.pow(10.0, -4.0)) * T - - (108668654.561957 * Math.pow(10.0, -7.0)) * (Math.pow(T, 2.0)) - + (10492428.477532 * Math.pow(10.0, -8.0)) * S * (Math.pow(T, 2.0)) - + (426241410.644264 * Math.pow(10.0, -11.0)) * Math.pow(T, 3.0) - - (124268021.223715 * Math.pow(10.0, -12.0)) * S * (Math.pow(T, 3.0)) - + (435491737.902085 * Math.pow(10.0, -5.0)) * T * Math.log(T) - + (19224323.617885 * Math.pow(10.0, -8.0)) * Math.pow(S, 3.0) * T - - (486711042.327079 * Math.pow(10.0, -9.0)) * T * Math.exp(S) - + (593013871.824553 * Math.pow(10.0, -10.0)) * S * T * Math.exp(S) - - (186057141.990893 * Math.pow(10.0, -7.0)) * S * T - + (13867353.798785 * Math.pow(10.0, -7.0)) * Math.exp(S) * Math.log(T); - - // System.out.println("HCO2AST = " + HCO2AST); - - double HCO2 = 0.0; - - HCO2 = Math.exp(Math.log(HCO2AST) + (VCO2INF * P) / (R * T)); - - // System.out.println("HCO2 = " + HCO2); - - double fl[] = {0.0, 0.0}; - fl[0] = x[0] * HCO2; - - // System.out.println("fl0 = " + fl[0]); - - // PHIWSAT - - double PHIWSAT = 0.0; - if (((9.0 / 5.0) * T - 459.67) > 90.0) { - PHIWSAT = 0.9958 + 9.68330 * Math.pow(10.0, -5.0) * ((9.0 / 5.0) * T - 459.67) - - 6.17050 * Math.pow(10.0, -7.0) * Math.pow((9.0 / 5.0) * T - 459.67, 2.0) - - 3.08333 * Math.pow(10.0, -10.0) * Math.pow((9.0 / 5.0) * T - 459.67, 3.0); - } else { - PHIWSAT = 1.0; - } - - // VWATER - - double Densliq = 0.0; - double VW = 0.0; - Densliq = 4.6137 / (Math.pow(0.26214, 1.0 + Math.pow(1.0 - T / 647.29, 0.23072))); - VW = 1.0 / Densliq; - - // PWSAT - - double PWSAT = 0.0; - PWSAT = Math.exp( - 73.649 - 7258.2 / T - 7.3037 * Math.log(T) + 0.0000041653 * Math.pow(T, 2.0)) - / Math.pow(10.0, 5.0); - - // Calculation of H2O fugacity in the aqueous phase - - double Poyntef = 0.0; - Poyntef = Math.exp(VW * (P - PWSAT) / (R * T)); - fl[1] = x[1] * PHIWSAT * PWSAT * Poyntef; - - // System.out.println("fl1 = " + fl[1]); - - double SUMY1 = 0.0; - for (int i = 0; i < 2; i++) { - y[i] = y[i] * fl[i] / fv[i]; - SUMY1 = SUMY1 + y[i]; - } - - double G = 0.0; - G = SUMY1 - 1.0; - - if (Math.abs((fl[0] - fv[0])) < Math.pow(10.0, -5.0) - && Math.abs((fl[1] - fv[1])) < Math.pow(10.0, -5.0) - && Math.abs(G) < Math.pow(10.0, -5.0)) { - System.out.println("fl0 = " + fl[0]); - System.out.println("fl1 = " + fl[1]); - System.out.println("fv0 = " + fv[0]); - System.out.println("fv1 = " + fv[1]); - System.out.println("y0 = " + y[0]); - System.out.println("y1 = " + y[1]); - System.out.println("P = " + P + " bar "); - break; - } - errorOld = error; - error = Math.abs((fl[0] - fv[0])) + Math.abs((fl[1] - fv[1])) + Math.abs(G); - Poldold = Pold; - Pold = P; - - if (iter < 5) - P = P + Math.pow(10.0, -7.0) * P; - else - P = P - 0.1 * (error - errorOld) / (Pold - Poldold); - System.out.println("P = " + P + " bar " + " error " + error); - } while (Math.abs(error) > 1e-6); - return P; - } - - /** - *

- * calcCO2solubility. - *

- * - * @param temperature a double - * @param pressure a double - * @param salinity a double - * @return a double - */ - public double calcCO2solubility(double temperature, double pressure, double salinity) { - double T = temperature; - double P = pressure; - double S = salinity; - // double Tc1 = 304.2; - double Tc2 = 647.29; - // double Pc1 = 73.825; - double Pc2 = 220.85; - double c1 = 0; - double c2 = 0; - double c3 = 0; - double c4 = 0; - double c5 = 0; - double c6 = 0; - double c7 = 0; - double c8 = 0; - double c9 = 0; - double c10 = 0; - double c11 = 0; - double c12 = 0; - double c13 = 0; - double c14 = 0; - double c15 = 0; - // double c[]= {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; - double parcdpsat[] = {85.530, -3481.3, -11.336, 0.021505, 1.0}; - // for (int i=0;i= 273.0 && T < 305.0 && P <= PCO2sat) { - c1 = 1.0; - c2 = 4.7586835 * Math.pow(10.0, -3.0); - c3 = -3.3569963 * Math.pow(10.0, -6.0); - c4 = 0.0; - c5 = -1.3179396; - c6 = -3.8389101 * Math.pow(10.0, -6.0); - c7 = 0.0; - c8 = 2.2815104 * Math.pow(10.0, -3.0); - c9 = 0.0; - c10 = 0.0; - c11 = 0.0; - c12 = 0.0; - c13 = 0.0; - c14 = 0.0; - c15 = 0.0; - } else if ((T >= 305.0 && T <= 405.0 && P <= (75.0 + (T - 305.0) * 1.25))) { - c1 = 1.0; - c2 = 4.7586835 * Math.pow(10.0, -3.0); - c3 = -3.3569963 * Math.pow(10.0, -6.0); - c4 = 0.0; - c5 = -1.3179396; - c6 = -3.8389101 * Math.pow(10.0, -6.0); - c7 = 0.0; - c8 = 2.2815104 * Math.pow(10.0, -3.0); - c9 = 0.0; - c10 = 0.0; - c11 = 0.0; - c12 = 0.0; - c13 = 0.0; - c14 = 0.0; - c15 = 0.0; - } else if (T > 405.0 && P <= 200.0) { - c1 = 1.0; - c2 = 4.7586835 * Math.pow(10.0, -3.0); - c3 = -3.3569963 * Math.pow(10.0, -6.0); - c4 = 0.0; - c5 = -1.3179396; - c6 = -3.8389101 * Math.pow(10.0, -6.0); - c7 = 0.0; - c8 = 2.2815104 * Math.pow(10.0, -3.0); - c9 = 0.0; - c10 = 0.0; - c11 = 0.0; - c12 = 0.0; - c13 = 0.0; - c14 = 0.0; - c15 = 0.0; - } else if (T >= 273.0 && T < 305.0 && P <= 1000 && P > PCO2sat) { - c1 = -7.1734882 * Math.pow(10.0, -1.0); - c2 = 1.5985379 * Math.pow(10.0, -4.0); - c3 = -4.9286471 * Math.pow(10.0, -7.0); - c4 = 0.0; - c5 = 0.0; - c6 = -2.7855285 * Math.pow(10.0, -7.0); - c7 = 1.1877015 * Math.pow(10.0, -9.0); - c8 = 0.0; - c9 = 0.0; - c10 = 0.0; - c11 = 0.0; - c12 = -96.539512; - c13 = 4.4774938 * Math.pow(10.0, -1.0); - c14 = 101.81078; - c15 = 5.3783879 * Math.pow(10, -6.0); - } else if (T >= 305.0 && T <= 340.0 && P <= 1000.0 && P > (75.0 + (T - 305.0)) * 1.25) { - c1 = -7.1734882 * Math.pow(10.0, -1.0); - c2 = 1.5985379 * Math.pow(10.0, -4.0); - c3 = -4.9286471 * Math.pow(10.0, -7.0); - c4 = 0.0; - c5 = 0.0; - c6 = -2.7855285 * Math.pow(10.0, -7.0); - c7 = 1.1877015 * Math.pow(10.0, -9.0); - c8 = 0.0; - c9 = 0.0; - c10 = 0.0; - c11 = 0.0; - c12 = -96.539512; - c13 = 4.4774938 * Math.pow(10.0, -1.0); - c14 = 101.81078; - c15 = 5.3783879 * Math.pow(10, -6.0); - } else if (T >= 273.0 && T <= 340.0 && P > 1000.0) { - c1 = -6.5129019 * Math.pow(10.0, -2.0); - c2 = -2.1429977 * Math.pow(10.0, -4.0); - c3 = -1.144493 * Math.pow(10.0, -6.0); - c4 = 0.0; - c5 = 0.0; - c6 = -1.1558081 * Math.pow(10.0, -7.0); - c7 = 1.195237 * Math.pow(10.0, -9.0); - c8 = 0.0; - c9 = 0.0; - c10 = 0.0; - c11 = 0.0; - c12 = -221.34306; - c13 = 0.0; - c14 = 71.820393; - c15 = 6.6089246 * Math.pow(10, -6.0); - } else if (T > 340 && T < 405 && P <= 1000.0 && P > (75.0 + (T - 305.0) * 1.25)) { - c1 = 5.0383896; - c2 = -4.4257744 * Math.pow(10.0, -3); - c3 = 0.0; - c4 = 1.9572733; - c5 = 0.0; - c6 = 2.4223436 * Math.pow(10.0, -6.0); - c7 = 0.0; - c8 = -9.3796135 * Math.pow(10.0, -4.0); - c9 = -1.5026030; - c10 = 3.027224 * Math.pow(10.0, -3.0); - c11 = -31.377342; - c12 = -12.847063; - c13 = 0.0; - c14 = 0.0; - c15 = -1.5056648 * Math.pow(10, -5.0); - } else if (T >= 405.0 && T <= 435.0 && P <= 1000.0 && P > 200.0) { - c1 = 5.0383896; - c2 = -4.4257744 * Math.pow(10.0, -3); - c3 = 0.0; - c4 = 1.9572733; - c5 = 0.0; - c6 = 2.4223436 * Math.pow(10.0, -6.0); - c7 = 0.0; - c8 = -9.3796135 * Math.pow(10.0, -4.0); - c9 = -1.5026030; - c10 = 3.027224 * Math.pow(10.0, -3.0); - c11 = -31.377342; - c12 = -12.847063; - c13 = 0.0; - c14 = 0.0; - c15 = -1.5056648 * Math.pow(10, -5.0); - } else if (T > 340 && T <= 435.0 && P > 1000.0) { - c1 = -16.063152; - c2 = -2.705799 * Math.pow(10.0, -3); - c3 = 0.0; - c4 = 1.4119239 * Math.pow(10.0, -1.0); - c5 = 0.0; - c6 = 8.1132965 * Math.pow(10.0, -7.0); - c7 = 0.0; - c8 = -1.1453082 * Math.pow(10.0, -4.0); - c9 = 2.3895671; - c10 = 5.0527457 * Math.pow(10.0, -4.0); - c11 = -17.76346; - c12 = 985.92232; - c13 = 0.0; - c14 = 0.0; - c15 = -5.4965256 * Math.pow(10, -7.0); - } else if (T > 435.0 && P > 200.0) { - c1 = -1.569349 * Math.pow(10.0, -1.0); - c2 = 4.4621407 * Math.pow(10.0, -4); - c3 = -9.1080591 * Math.pow(10.0, -7.0); - c4 = 0.0; - c5 = 0.0; - c6 = 1.0647399 * Math.pow(10.0, -7.0); - c7 = 2.4273357 * Math.pow(10.0, -10.0); - c8 = 0.0; - c9 = 3.5874255 * Math.pow(10.0, -1.0); - c10 = 6.331971 * Math.pow(10.0, -5.0); - c11 = -249.89661; - c12 = 0.0; - c13 = 0.0; - c14 = 888.768; - c15 = -6.6348003 * Math.pow(10, -7.0); + static Logger logger = LogManager.getLogger(DuanSun.class); + + double[] c = new double[] {0.1, 0.2, 0.3, 0.4, 0.5}; + double[] d = new double[] {0.1, 0.2, 0.3, 0.4, 0.5}; + + /** + *

+ * Constructor for DuanSun. + *

+ */ + public DuanSun() {} + + /** + *

+ * bublePointPressure. + *

+ * + * @param temperature a double + * @param x_CO2 a double + * @param salinity a double + * @return a double + */ + public double bublePointPressure(double temperature, double x_CO2, double salinity) { + // Type manually the pressure limits according to the expected pressure + double P = 9.0; + double Pold = 9.0; + double Poldold = 9.0; + double[] y = {0.9, 0.1}; + double[] x = {x_CO2, 1.0 - x_CO2}; + double error = 1e10; + double errorOld = 1e10; + int iter = 1; + do { + // while (P < 15.0) { + iter++; + double[] Tc = {304.2, 647.3}; + double[] Pc = {72.8, 217.6}; + double[] w = {0.225, 0.344}; + double[][] K12 = {{0.0, 0.2}, {0.2, 0.0}}; + double T = temperature; + double S = salinity; + // double[] x = {0.000554093, 1.0-0.000554093}; + + // Normalize Y + double SUMY = 0.0; + for (int i = 0; i < 2; i++) { + SUMY = SUMY + y[i]; + } + for (int i = 0; i < 2; i++) { + y[i] = y[i] / SUMY; + } + // System.out.println(SUMY); + // System.out.println(y[0]); + + double R = ThermodynamicConstantsInterface.R * Math.pow(10.0, -2.0); + + // Calculate A and B of pure compound + double[] Tr = {0.0, 0.0}; + double ac = 0.45724; + double bc = 0.07780; + double[] d = {0.384401, 1.52276, -0.213808, 0.034616, -0.001976}; + double[] dm = {0.0, 0.0}; + double[] ag = {0.0, 0.0}; + double[] asmal = {0.0, 0.0}; + double[] bsmal = {0.0, 0.0}; + double[] a = {0.0, 0.0}; + double[] b = {0.0, 0.0}; + + for (int i = 0; i < 2; i++) { + Tr[i] = T / Tc[i]; + dm[i] = d[0] + w[i] * (d[1] + w[i] * (d[2] + w[i] * (d[3] + w[i] * d[4]))); + ag[i] = Math.pow((1.0 + dm[i] * (1.0 - Math.pow(Tr[i], 0.5))), 2.0); + asmal[i] = ag[i] * ac * ((Math.pow(R * Tc[i], 2.0)) / Pc[i]); + bsmal[i] = bc * (R * Tc[i]) / Pc[i]; + a[i] = asmal[i] * P / (Math.pow(R * T, 2.0)); + b[i] = bsmal[i] * P / (R * T); + } + + // System.out.println("asmal0 = " + asmal[0]); + // System.out.println("asmal1 = " +asmal[1]); + // System.out.println("bsmal0 = " +bsmal[0]); + // System.out.println("bsmal1 = " +bsmal[1]); + // System.out.println("a0 = " +a[0]); + // System.out.println("a1 = " +a[1]); + // System.out.println("b0 = " +b[0]); + // System.out.println("b1 = " +b[1]); + + // Calculate A and B of mixture + + double av = 0.0; + double bv = 0.0; + double[] sumav = {0.0, 0.0}; + double aij = 0.0; + + for (int i = 0; i < 2; i++) { + sumav[i] = 0.0; + for (int j = 0; j < 2; j++) { + aij = Math.sqrt(a[i] * a[j]) * (1.0 - K12[i][j]); + av = av + y[i] * y[j] * aij; + sumav[i] = sumav[i] + y[j] * aij; } - - // System.out.println(c1); - // System.out.println("PCO2sat = " + PCO2sat); - - double fCO2 = 0.0; - fCO2 = c1 + (c2 + c3 * T + c4 / T + c5 / (T - 150.0)) * P - + (c6 + c7 * T + c8 / T) * Math.pow(P, 2) + (c9 + c10 * T + c11 / T) * Math.log(P) - + (c12 + c13 * T) / P + c14 / T + c15 * Math.pow(T, 2); - // System.out.println("fCO2 = " + fCO2); - - double chempotliqCO2RT = 0.0; - chempotliqCO2RT = 28.9447706 - 0.0354581768 * T - 4770.67077 / T - + 1.02782768 * Math.pow(10.0, -5.0) * Math.pow(T, 2.0) + 33.8126098 / (630.0 - T) - + 0.009040371 * P - 0.00114934 * P * Math.log(T) - 0.307405726 * P / T - - 0.090730149 * P / (630.0 - T) - + 0.000932713 * Math.pow(P, 2) / (Math.pow((630.0 - T), 2)); - // System.out.println("chempotliqCO2RT = " + chempotliqCO2RT); - - double lamdaCO2Na = 0.0; - lamdaCO2Na = -0.411370585 + 0.000607632 * T + 97.5347708 / T - 0.023762247 * P / T - + 0.017065624 * P / (630.0 - T) - + 1.41335834 * Math.pow(10.0, -5.0) * T * Math.log(P); - // System.out.println("lamdaCO2Na = " + lamdaCO2Na); - - double zetaCO2NaCl = 0.0; - zetaCO2NaCl = 0.00033639 - 1.9829898 * Math.pow(10.0, -5.0) * T + 0.002122208 * P / T - - 0.005248733 * P / (630. - T); - // System.out.println("zetaCO2NaCl = " + zetaCO2NaCl); - - double tH2O = 0.0; - tH2O = (T - Tc2) / Tc2; - - double PH2O = 0.0; - PH2O = (Pc2 * T / Tc2) * (1.0 - 38.640844 * Math.pow(-tH2O, 1.9) + 5.8948420 * tH2O - + 59.876516 * Math.pow(tH2O, 2.0) + 26.654627 * Math.pow(tH2O, 3.0) - + 10.637097 * Math.pow(tH2O, 4.0)); - - double yCO2 = 0.0; - yCO2 = (P - PH2O) / P; - - double mCO2 = 0.0; - mCO2 = (yCO2 * P) / Math.exp((-Math.log(fCO2) + chempotliqCO2RT + (2.0) * lamdaCO2Na * S - + zetaCO2NaCl * Math.pow(S, 2.0))); - // System.out.println("mCO2 = " + mCO2 + "b mol/kg solvent "); - - double xCO2 = 0.0; - xCO2 = mCO2 / (1000. / 18. + mCO2); - // System.out.println("xCO2 = " + xCO2 + " mole fraction "); - - return xCO2; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - DuanSun testDuanSun = new DuanSun(); - - double CO2solubility = testDuanSun.calcCO2solubility(273.15 + 30.0, 100.0, 3.00); - - System.out.println("CO2solubility " + CO2solubility / 0.01802 + " mol/kg"); - - // double CO2solubility2 = testDuanSun.bublePointPressure(298.15, CO2solubility, - // 2.0); - - // System.out.println("Total pressure " + CO2solubility2 + " bara"); - - SystemInterface fluid1 = new SystemElectrolyteCPAstatoil(298.15, 10.0); - fluid1.addComponent("CO2", 0.05, "kg/sec"); - // fluid1.addComponent("oxygen", 1.0, "mol/sec"); - // fluid1.addComponent("methane", 1.0, "mol/sec"); - fluid1.addComponent("water", 0.5, "kg/sec"); - fluid1.addComponent("Na+", 0.1, "mol/sec"); - fluid1.addComponent("Cl-", 0.1, "mol/sec"); - fluid1.setMixingRule(10); - ThermodynamicOperations thermoOPs = new ThermodynamicOperations(fluid1); - try { - thermoOPs.TPflash(); - // fluid1.init(0); - fluid1.display(); - } catch (Exception e) { - e.printStackTrace(); + bv = bv + y[i] * b[i]; + } + // System.out.println("av = " + av); + // System.out.println("bv = " + bv); + + // ZCUBIC + double c0 = 0.0; + double c1 = 0.0; + double c2 = 0.0; + double c3 = 0.0; + + c0 = -(av * bv - Math.pow(bv, 2.0) - Math.pow(bv, 3.0)); + c1 = av - 3.0 * Math.pow(bv, 2.0) - 2.0 * bv; + c2 = -(1.0 - bv); + c3 = 1.0; + + // for(int i=0;i<1;i++) { + // c0=-(a[i]*b[i]-Math.pow(b[i],2)-Math.pow(b[i],3)); + // c1=a[i]-3.0*Math.pow(b[i],2)-2.0*b[i]; + // c2=-(1.0-b[i]); + // c3=1.0; + // } + + // System.out.println("c0 = " +c0); + // System.out.println("c1 = " +c1); + // System.out.println("c2 = " +c2); + // System.out.println("c3 = " +c3); + + // PZEROS + double OMEGA = 0.0; + double[] ROOT = {0.0, 0.0, 0.0}; + double[] W = {0.0, 0.0, 0.0}; + double k = 0.0; + double NRR = 0.0; + double PHI = 0.0; + double A0 = c0 / c3; + double A1 = c1 / c3; + double A2 = c2 / c3; + double p = (3 * A1 - Math.pow(A2, 2)) / 3.0; + double Q = (27.0 * A0 - 9.0 * A1 * A2 + 2.0 * Math.pow(A2, 3.0)) / 27.0; + double D = (Math.pow(Q, 2)) / 4.0 + (Math.pow(p, 3.0) / 27.0); + double r = Math.sqrt(Math.pow(Math.abs(p), 3) / 27.0); + double PI = Math.acos(-1.0); + + if (D < Math.pow(10.0, -16.0)) { + NRR = 3.0; + PHI = Math.acos(-Q / (2.0 * r)); + for (int i = 0; i < 3; i++) { + k = i - 1.0; + W[i] = 2.0 * Math.pow(r, (1.0 / 3.0)) * Math.cos((PHI + 2.0 * PI * k) / 3.0); + ROOT[i] = W[i] - A2 / 3.0; } - // fluid1.setMolarComposition(new double[] {0.5, 0.5, 0.0, 0.0}); - fluid1.init(1); - try { - thermoOPs.TPflash(); - // fluid1.init(0); - fluid1.display(); - } catch (Exception e) { - e.printStackTrace(); + } else { + NRR = 1.0; + if (p < 0.0) { + OMEGA = Math.asin(2.0 * r / Q); + PHI = Math.atan(Math.pow((Math.tan(Math.abs(OMEGA) / 2.0)), 1.0 / 3.0)); + if (OMEGA < 0.0) { + PHI = -PHI; + W[0] = -2.0 * Math.sqrt(-p / 3.0) / Math.sin(2.0 * PHI); + } + } else { + OMEGA = Math.atan(2.0 * r / Q); + PHI = Math.atan(Math.pow((Math.tan(Math.abs(OMEGA) / 2.0)), 1.0 / 3.0)); + if (OMEGA < 0.0) { + PHI = -PHI; + } + W[0] = -2.0 * Math.sqrt(p / 3.0) / Math.tan(2.0 * PHI); } - String fluidname = "" + ""; - fluid1.saveObjectToFile(fluidname, fluidname); - - fluid1.setPhaseIndex(0, 1); - // fluid1.save - System.out.println( - "CO2 in liquid " + fluid1.getPhase(0).getComponent(0).getLogFugacityCoefficient()); - System.out.println( - "CO2 in liquid " + fluid1.getPhase(0).getComponent(0).getFugacityCoefficient()); - System.out - .println("CO2 in liquid " + fluid1.getPhase("aqueous").getComponent("CO2").getx()); + ROOT[0] = W[0] - A2 / 3.0; + ROOT[1] = 0.0; + ROOT[2] = 0.0; + } + + double zv = 0.0; + // double IERR = 0.0; + + if (NRR == 1.0) { + zv = ROOT[0]; + } else { + zv = Math.max(Math.max(ROOT[0], ROOT[1]), ROOT[2]); + } + + if (zv < Math.pow(10.0, -19.0)) { + // IERR = 1; + // System.out.println(IERR); + } + + // System.out.println("zv = " + zv); + + double VV = 0.0; + + VV = zv * R * T / P; + // System.out.println("VV = " + VV); + + // Correction of volume + double[] trans = {0.0, 0.0}; + double[] bh = {0.0, 0.0}; + double[] t0 = {0.0, 0.0}; + double[] ti = {0.0, 0.0}; + double[] zc = {0.0, 0.0}; + double TEV = 0.0; + double zceos = 0.3074; + double dk0 = -0.014471; + double dk1 = 0.067498; + double dk2 = -0.084852; + double dk3 = 0.067298; + double dk4 = -0.017366; + double dl0 = -10.24470; + double dl1 = -28.63120; + double dl2 = 0.0; + for (int i = 0; i < 2; i++) { + zc[i] = 0.2890 + w[i] * (-0.0701 - 0.0207 * w[i]); + ti[i] = (R * Tc[i] / Pc[i]) * (zceos - zc[i]); + t0[i] = + (R * Tc[i] / Pc[i]) * (dk0 + w[i] * (dk1 + w[i] * (dk2 + w[i] * (dk3 + w[i] * dk4)))); + bh[i] = dl0 + w[i] * (dl1 + w[i] * dl2); + trans[i] = t0[i] + (ti[i] - t0[i]) * Math.exp(bh[i] * Math.abs(1.0 - Tr[i])); + TEV = TEV + y[i] * trans[i]; + } + VV = VV - TEV; + // System.out.println("VV = " + VV); + // System.out.println("TEV = " + TEV); + + // Calculate fugacity coefficient (FC) for all components and phases + + double[] dlnfc = {0.0, 0.0}; + double[] fcv = {0.0, 0.0}; + + for (int i = 0; i < 2; i++) { + dlnfc[i] = (b[i] / bv) * (zv - 1.0) - Math.log(zv - bv) - (av / (2.0 * Math.sqrt(2.0) * bv)) + * (2.0 * sumav[i] / av - b[i] / bv) * Math.log((zv + 2.414 * bv) / (zv - 0.414 * bv)); + fcv[i] = Math.exp(dlnfc[i]); + } + + // System.out.println("fcv0 = " + fcv[0]); + // System.out.println("fcv1 = " + fcv[1]); + + double[] fv = {0.0, 0.0}; + + for (int i = 0; i < 2; i++) { + fv[i] = fcv[i] * y[i] * P; + } + + // System.out.println("fv0 = " + fv[0]); + // System.out.println("fv1 = " + fv[1]); + + // VCO2INF + + double VCO2INF = 0.0; + + VCO2INF = + (-159751499.972988 * Math.pow(10.0, -10.0)) + (101831855.926854 * Math.pow(10.0, -10)) * S + + (18075168.978622 * Math.pow(10.0, -11.0)) * T + - (787538191.939352 * Math.pow(10.0, -13.0)) * S * T + - (192886808.345857 * Math.pow(10.0, -11.0)) * (Math.pow(S, 2.0)) + + 142830810.095592 * Math.pow(10.0, -15.0) * S * (Math.pow(T, 2.0)) + + (123450785.102997 * Math.pow(10.0, -13.0)) * T * (Math.pow(S, 2.0)) + - (220053285.910771 * Math.pow(10.0, -16.0)) * (Math.pow(S, 2.0)) * (Math.pow(T, 2.0)) + - 35351000.350961 * Math.pow(10.0, -17.0) * (Math.pow(T, 3.0)); + + // System.out.println("VCO2INF = " + VCO2INF); + + double HCO2AST = 0.0; + + HCO2AST = + (547703618.010975 * Math.pow(10.0, -3.0)) - (237824440.424155 * Math.pow(10.0, -4.0)) * T + - (108668654.561957 * Math.pow(10.0, -7.0)) * (Math.pow(T, 2.0)) + + (10492428.477532 * Math.pow(10.0, -8.0)) * S * (Math.pow(T, 2.0)) + + (426241410.644264 * Math.pow(10.0, -11.0)) * Math.pow(T, 3.0) + - (124268021.223715 * Math.pow(10.0, -12.0)) * S * (Math.pow(T, 3.0)) + + (435491737.902085 * Math.pow(10.0, -5.0)) * T * Math.log(T) + + (19224323.617885 * Math.pow(10.0, -8.0)) * Math.pow(S, 3.0) * T + - (486711042.327079 * Math.pow(10.0, -9.0)) * T * Math.exp(S) + + (593013871.824553 * Math.pow(10.0, -10.0)) * S * T * Math.exp(S) + - (186057141.990893 * Math.pow(10.0, -7.0)) * S * T + + (13867353.798785 * Math.pow(10.0, -7.0)) * Math.exp(S) * Math.log(T); + + // System.out.println("HCO2AST = " + HCO2AST); + + double HCO2 = 0.0; + + HCO2 = Math.exp(Math.log(HCO2AST) + (VCO2INF * P) / (R * T)); + + // System.out.println("HCO2 = " + HCO2); + + double[] fl = {0.0, 0.0}; + fl[0] = x[0] * HCO2; + + // System.out.println("fl0 = " + fl[0]); + + // PHIWSAT + + double PHIWSAT = 0.0; + if (((9.0 / 5.0) * T - 459.67) > 90.0) { + PHIWSAT = 0.9958 + 9.68330 * Math.pow(10.0, -5.0) * ((9.0 / 5.0) * T - 459.67) + - 6.17050 * Math.pow(10.0, -7.0) * Math.pow((9.0 / 5.0) * T - 459.67, 2.0) + - 3.08333 * Math.pow(10.0, -10.0) * Math.pow((9.0 / 5.0) * T - 459.67, 3.0); + } else { + PHIWSAT = 1.0; + } + + // VWATER + + double Densliq = 0.0; + double VW = 0.0; + Densliq = 4.6137 / (Math.pow(0.26214, 1.0 + Math.pow(1.0 - T / 647.29, 0.23072))); + VW = 1.0 / Densliq; + + // PWSAT + + double PWSAT = 0.0; + PWSAT = Math.exp(73.649 - 7258.2 / T - 7.3037 * Math.log(T) + 0.0000041653 * Math.pow(T, 2.0)) + / Math.pow(10.0, 5.0); + + // Calculation of H2O fugacity in the aqueous phase + + double Poyntef = 0.0; + Poyntef = Math.exp(VW * (P - PWSAT) / (R * T)); + fl[1] = x[1] * PHIWSAT * PWSAT * Poyntef; + + // System.out.println("fl1 = " + fl[1]); + + double SUMY1 = 0.0; + for (int i = 0; i < 2; i++) { + y[i] = y[i] * fl[i] / fv[i]; + SUMY1 = SUMY1 + y[i]; + } + + double G = 0.0; + G = SUMY1 - 1.0; + + if (Math.abs((fl[0] - fv[0])) < Math.pow(10.0, -5.0) + && Math.abs((fl[1] - fv[1])) < Math.pow(10.0, -5.0) + && Math.abs(G) < Math.pow(10.0, -5.0)) { + System.out.println("fl0 = " + fl[0]); + System.out.println("fl1 = " + fl[1]); + System.out.println("fv0 = " + fv[0]); + System.out.println("fv1 = " + fv[1]); + System.out.println("y0 = " + y[0]); + System.out.println("y1 = " + y[1]); + System.out.println("P = " + P + " bar "); + break; + } + errorOld = error; + error = Math.abs((fl[0] - fv[0])) + Math.abs((fl[1] - fv[1])) + Math.abs(G); + Poldold = Pold; + Pold = P; + + if (iter < 5) { + P = P + Math.pow(10.0, -7.0) * P; + } else { + P = P - 0.1 * (error - errorOld) / (Pold - Poldold); + } + System.out.println("P = " + P + " bar " + " error " + error); + } while (Math.abs(error) > 1e-6); + return P; + } + + /** + *

+ * calcCO2solubility. + *

+ * + * @param temperature a double + * @param pressure a double + * @param salinity a double + * @return a double + */ + public double calcCO2solubility(double temperature, double pressure, double salinity) { + double T = temperature; + double P = pressure; + double S = salinity; + // double Tc1 = 304.2; + double Tc2 = 647.29; + // double Pc1 = 73.825; + double Pc2 = 220.85; + double c1 = 0; + double c2 = 0; + double c3 = 0; + double c4 = 0; + double c5 = 0; + double c6 = 0; + double c7 = 0; + double c8 = 0; + double c9 = 0; + double c10 = 0; + double c11 = 0; + double c12 = 0; + double c13 = 0; + double c14 = 0; + double c15 = 0; + // double c[]= {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double[] parcdpsat = {85.530, -3481.3, -11.336, 0.021505, 1.0}; + // for (int i=0;i= 273.0 && T < 305.0 && P <= PCO2sat) { + c1 = 1.0; + c2 = 4.7586835 * Math.pow(10.0, -3.0); + c3 = -3.3569963 * Math.pow(10.0, -6.0); + c4 = 0.0; + c5 = -1.3179396; + c6 = -3.8389101 * Math.pow(10.0, -6.0); + c7 = 0.0; + c8 = 2.2815104 * Math.pow(10.0, -3.0); + c9 = 0.0; + c10 = 0.0; + c11 = 0.0; + c12 = 0.0; + c13 = 0.0; + c14 = 0.0; + c15 = 0.0; + } else if ((T >= 305.0 && T <= 405.0 && P <= (75.0 + (T - 305.0) * 1.25))) { + c1 = 1.0; + c2 = 4.7586835 * Math.pow(10.0, -3.0); + c3 = -3.3569963 * Math.pow(10.0, -6.0); + c4 = 0.0; + c5 = -1.3179396; + c6 = -3.8389101 * Math.pow(10.0, -6.0); + c7 = 0.0; + c8 = 2.2815104 * Math.pow(10.0, -3.0); + c9 = 0.0; + c10 = 0.0; + c11 = 0.0; + c12 = 0.0; + c13 = 0.0; + c14 = 0.0; + c15 = 0.0; + } else if (T > 405.0 && P <= 200.0) { + c1 = 1.0; + c2 = 4.7586835 * Math.pow(10.0, -3.0); + c3 = -3.3569963 * Math.pow(10.0, -6.0); + c4 = 0.0; + c5 = -1.3179396; + c6 = -3.8389101 * Math.pow(10.0, -6.0); + c7 = 0.0; + c8 = 2.2815104 * Math.pow(10.0, -3.0); + c9 = 0.0; + c10 = 0.0; + c11 = 0.0; + c12 = 0.0; + c13 = 0.0; + c14 = 0.0; + c15 = 0.0; + } else if (T >= 273.0 && T < 305.0 && P <= 1000 && P > PCO2sat) { + c1 = -7.1734882 * Math.pow(10.0, -1.0); + c2 = 1.5985379 * Math.pow(10.0, -4.0); + c3 = -4.9286471 * Math.pow(10.0, -7.0); + c4 = 0.0; + c5 = 0.0; + c6 = -2.7855285 * Math.pow(10.0, -7.0); + c7 = 1.1877015 * Math.pow(10.0, -9.0); + c8 = 0.0; + c9 = 0.0; + c10 = 0.0; + c11 = 0.0; + c12 = -96.539512; + c13 = 4.4774938 * Math.pow(10.0, -1.0); + c14 = 101.81078; + c15 = 5.3783879 * Math.pow(10, -6.0); + } else if (T >= 305.0 && T <= 340.0 && P <= 1000.0 && P > (75.0 + (T - 305.0)) * 1.25) { + c1 = -7.1734882 * Math.pow(10.0, -1.0); + c2 = 1.5985379 * Math.pow(10.0, -4.0); + c3 = -4.9286471 * Math.pow(10.0, -7.0); + c4 = 0.0; + c5 = 0.0; + c6 = -2.7855285 * Math.pow(10.0, -7.0); + c7 = 1.1877015 * Math.pow(10.0, -9.0); + c8 = 0.0; + c9 = 0.0; + c10 = 0.0; + c11 = 0.0; + c12 = -96.539512; + c13 = 4.4774938 * Math.pow(10.0, -1.0); + c14 = 101.81078; + c15 = 5.3783879 * Math.pow(10, -6.0); + } else if (T >= 273.0 && T <= 340.0 && P > 1000.0) { + c1 = -6.5129019 * Math.pow(10.0, -2.0); + c2 = -2.1429977 * Math.pow(10.0, -4.0); + c3 = -1.144493 * Math.pow(10.0, -6.0); + c4 = 0.0; + c5 = 0.0; + c6 = -1.1558081 * Math.pow(10.0, -7.0); + c7 = 1.195237 * Math.pow(10.0, -9.0); + c8 = 0.0; + c9 = 0.0; + c10 = 0.0; + c11 = 0.0; + c12 = -221.34306; + c13 = 0.0; + c14 = 71.820393; + c15 = 6.6089246 * Math.pow(10, -6.0); + } else if (T > 340 && T < 405 && P <= 1000.0 && P > (75.0 + (T - 305.0) * 1.25)) { + c1 = 5.0383896; + c2 = -4.4257744 * Math.pow(10.0, -3); + c3 = 0.0; + c4 = 1.9572733; + c5 = 0.0; + c6 = 2.4223436 * Math.pow(10.0, -6.0); + c7 = 0.0; + c8 = -9.3796135 * Math.pow(10.0, -4.0); + c9 = -1.5026030; + c10 = 3.027224 * Math.pow(10.0, -3.0); + c11 = -31.377342; + c12 = -12.847063; + c13 = 0.0; + c14 = 0.0; + c15 = -1.5056648 * Math.pow(10, -5.0); + } else if (T >= 405.0 && T <= 435.0 && P <= 1000.0 && P > 200.0) { + c1 = 5.0383896; + c2 = -4.4257744 * Math.pow(10.0, -3); + c3 = 0.0; + c4 = 1.9572733; + c5 = 0.0; + c6 = 2.4223436 * Math.pow(10.0, -6.0); + c7 = 0.0; + c8 = -9.3796135 * Math.pow(10.0, -4.0); + c9 = -1.5026030; + c10 = 3.027224 * Math.pow(10.0, -3.0); + c11 = -31.377342; + c12 = -12.847063; + c13 = 0.0; + c14 = 0.0; + c15 = -1.5056648 * Math.pow(10, -5.0); + } else if (T > 340 && T <= 435.0 && P > 1000.0) { + c1 = -16.063152; + c2 = -2.705799 * Math.pow(10.0, -3); + c3 = 0.0; + c4 = 1.4119239 * Math.pow(10.0, -1.0); + c5 = 0.0; + c6 = 8.1132965 * Math.pow(10.0, -7.0); + c7 = 0.0; + c8 = -1.1453082 * Math.pow(10.0, -4.0); + c9 = 2.3895671; + c10 = 5.0527457 * Math.pow(10.0, -4.0); + c11 = -17.76346; + c12 = 985.92232; + c13 = 0.0; + c14 = 0.0; + c15 = -5.4965256 * Math.pow(10, -7.0); + } else if (T > 435.0 && P > 200.0) { + c1 = -1.569349 * Math.pow(10.0, -1.0); + c2 = 4.4621407 * Math.pow(10.0, -4); + c3 = -9.1080591 * Math.pow(10.0, -7.0); + c4 = 0.0; + c5 = 0.0; + c6 = 1.0647399 * Math.pow(10.0, -7.0); + c7 = 2.4273357 * Math.pow(10.0, -10.0); + c8 = 0.0; + c9 = 3.5874255 * Math.pow(10.0, -1.0); + c10 = 6.331971 * Math.pow(10.0, -5.0); + c11 = -249.89661; + c12 = 0.0; + c13 = 0.0; + c14 = 888.768; + c15 = -6.6348003 * Math.pow(10, -7.0); + } + + // System.out.println(c1); + // System.out.println("PCO2sat = " + PCO2sat); + + double fCO2 = 0.0; + fCO2 = c1 + (c2 + c3 * T + c4 / T + c5 / (T - 150.0)) * P + + (c6 + c7 * T + c8 / T) * Math.pow(P, 2) + (c9 + c10 * T + c11 / T) * Math.log(P) + + (c12 + c13 * T) / P + c14 / T + c15 * Math.pow(T, 2); + // System.out.println("fCO2 = " + fCO2); + + double chempotliqCO2RT = 0.0; + chempotliqCO2RT = 28.9447706 - 0.0354581768 * T - 4770.67077 / T + + 1.02782768 * Math.pow(10.0, -5.0) * Math.pow(T, 2.0) + 33.8126098 / (630.0 - T) + + 0.009040371 * P - 0.00114934 * P * Math.log(T) - 0.307405726 * P / T + - 0.090730149 * P / (630.0 - T) + 0.000932713 * Math.pow(P, 2) / (Math.pow((630.0 - T), 2)); + // System.out.println("chempotliqCO2RT = " + chempotliqCO2RT); + + double lamdaCO2Na = 0.0; + lamdaCO2Na = -0.411370585 + 0.000607632 * T + 97.5347708 / T - 0.023762247 * P / T + + 0.017065624 * P / (630.0 - T) + 1.41335834 * Math.pow(10.0, -5.0) * T * Math.log(P); + // System.out.println("lamdaCO2Na = " + lamdaCO2Na); + + double zetaCO2NaCl = 0.0; + zetaCO2NaCl = 0.00033639 - 1.9829898 * Math.pow(10.0, -5.0) * T + 0.002122208 * P / T + - 0.005248733 * P / (630. - T); + // System.out.println("zetaCO2NaCl = " + zetaCO2NaCl); + + double tH2O = 0.0; + tH2O = (T - Tc2) / Tc2; + + double PH2O = 0.0; + PH2O = (Pc2 * T / Tc2) * (1.0 - 38.640844 * Math.pow(-tH2O, 1.9) + 5.8948420 * tH2O + + 59.876516 * Math.pow(tH2O, 2.0) + 26.654627 * Math.pow(tH2O, 3.0) + + 10.637097 * Math.pow(tH2O, 4.0)); + + double yCO2 = 0.0; + yCO2 = (P - PH2O) / P; + + double mCO2 = 0.0; + mCO2 = (yCO2 * P) / Math.exp((-Math.log(fCO2) + chempotliqCO2RT + (2.0) * lamdaCO2Na * S + + zetaCO2NaCl * Math.pow(S, 2.0))); + // System.out.println("mCO2 = " + mCO2 + "b mol/kg solvent "); + + double xCO2 = 0.0; + xCO2 = mCO2 / (1000. / 18. + mCO2); + // System.out.println("xCO2 = " + xCO2 + " mole fraction "); + + return xCO2; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + DuanSun testDuanSun = new DuanSun(); + + double CO2solubility = testDuanSun.calcCO2solubility(273.15 + 30.0, 100.0, 3.00); + + System.out.println("CO2solubility " + CO2solubility / 0.01802 + " mol/kg"); + + // double CO2solubility2 = testDuanSun.bublePointPressure(298.15, CO2solubility, + // 2.0); + + // System.out.println("Total pressure " + CO2solubility2 + " bara"); + + SystemInterface fluid1 = new SystemElectrolyteCPAstatoil(298.15, 10.0); + fluid1.addComponent("CO2", 0.05, "kg/sec"); + // fluid1.addComponent("oxygen", 1.0, "mol/sec"); + // fluid1.addComponent("methane", 1.0, "mol/sec"); + fluid1.addComponent("water", 0.5, "kg/sec"); + fluid1.addComponent("Na+", 0.1, "mol/sec"); + fluid1.addComponent("Cl-", 0.1, "mol/sec"); + fluid1.setMixingRule(10); + ThermodynamicOperations thermoOPs = new ThermodynamicOperations(fluid1); + try { + thermoOPs.TPflash(); + // fluid1.init(0); + fluid1.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + // fluid1.setMolarComposition(new double[] {0.5, 0.5, 0.0, 0.0}); + fluid1.init(1); + try { + thermoOPs.TPflash(); + // fluid1.init(0); + fluid1.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + String fluidname = "" + ""; + fluid1.saveObjectToFile(fluidname, fluidname); + + fluid1.setPhaseIndex(0, 1); + // fluid1.save + System.out + .println("CO2 in liquid " + fluid1.getPhase(0).getComponent(0).getLogFugacityCoefficient()); + System.out + .println("CO2 in liquid " + fluid1.getPhase(0).getComponent(0).getFugacityCoefficient()); + System.out.println("CO2 in liquid " + fluid1.getPhase("aqueous").getComponent("CO2").getx()); + } } diff --git a/src/main/java/neqsim/thermo/util/empiric/Water.java b/src/main/java/neqsim/thermo/util/empiric/Water.java index b6fc4c2389..9d4c17ec06 100644 --- a/src/main/java/neqsim/thermo/util/empiric/Water.java +++ b/src/main/java/neqsim/thermo/util/empiric/Water.java @@ -9,45 +9,45 @@ * @version $Id: $Id */ public class Water { - /** - *

- * waterDensity. Correlation of Kell (1975) for density of air free water at 1 atmosphere - * - *

- * - * @param temperature a double - * @return a double - */ - public static double waterDensity(double temperature) { - double Tcelcius = temperature - 273.15; - return (999.83952 + 16.945176 * Tcelcius - 7.9870401e-3 * Tcelcius * Tcelcius - - 46.170461e-6 * Tcelcius * Tcelcius * Tcelcius - + 105.56302e-9 * Tcelcius * Tcelcius * Tcelcius * Tcelcius - - 280.54253e-12 * Tcelcius * Tcelcius * Tcelcius * Tcelcius * Tcelcius) - / (1.0 + 16.897850e-3 * Tcelcius); - } + /** + *

+ * waterDensity. Correlation of Kell (1975) for density of air free water at 1 atmosphere + * + *

+ * + * @param temperature a double + * @return a double + */ + public static double waterDensity(double temperature) { + double tempCelsius = temperature - 273.15; + return (999.83952 + 16.945176 * tempCelsius - 7.9870401e-3 * tempCelsius * tempCelsius + - 46.170461e-6 * tempCelsius * tempCelsius * tempCelsius + + 105.56302e-9 * tempCelsius * tempCelsius * tempCelsius * tempCelsius + - 280.54253e-12 * tempCelsius * tempCelsius * tempCelsius * tempCelsius * tempCelsius) + / (1.0 + 16.897850e-3 * tempCelsius); + } - /** - *

- * density. - *

- * - * @return a double - */ - public double density() { - return 1000.0; - } + /** + *

+ * density. + *

+ * + * @return a double + */ + public double density() { + return 1000.0; + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - Water testWater = new Water(); - System.out.println("water density " + Water.waterDensity(273.15 + 4)); - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + Water testWater = new Water(); + System.out.println("water density " + Water.waterDensity(273.15 + 4)); + } } diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/CO2_MDEA_methane.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/CO2_MDEA_methane.java deleted file mode 100644 index 6c4dc2d594..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/CO2_MDEA_methane.java +++ /dev/null @@ -1,209 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CH4CO2WaterMDEA; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; -import java.sql.ResultSet; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermodynamicOperations.ThermodynamicOperations; -import neqsim.util.database.NeqSimDataBase; - -/** - *

CO2_MDEA_methane class.

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class CO2_MDEA_methane { - static Logger logger = LogManager.getLogger(CO2_MDEA_methane.class); - - /** - *

Constructor for CO2_MDEA_methane.

- */ - public CO2_MDEA_methane() {} - - /** - *

main.

- * - * @param args the command line arguments - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - int i = 0, j, CH4Numb = 0, CO2Numb = 0, WaterNumb = 0, MDEANumb = 0, HCO3Numb = 0, - MDEAHpNumb = 0; - int iter = 0; - double error, newValue, oldValue, guess, dx, dP, Pold, Pnew; - /* - * double pressure, n1,n2,n3; double MDEAwt = 35; double loading = 0.4; double temperature = - * 313.0; - */ - - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM PatrickCO2"); - - try { - while (dataSet.next()) { - i += 1; - logger.info("Adding.... " + i); - - double ID = Double.parseDouble(dataSet.getString("ID")); - double pressureCO2 = Double.parseDouble(dataSet.getString("PressureCO2")); - double pressure = Double.parseDouble(dataSet.getString("Pressure")); - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double n1 = Double.parseDouble(dataSet.getString("x1")); - double n2 = Double.parseDouble(dataSet.getString("x2")); - double n3 = Double.parseDouble(dataSet.getString("x3")); - - guess = n1 / 20; - SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, pressure); - - testSystem.addComponent("CO2", n1); - testSystem.addComponent("water", n2); - testSystem.addComponent("methane", guess); - testSystem.addComponent("MDEA", n3); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - j = 0; - do { - CO2Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("CO2")); - - j = 0; - do { - CH4Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("methane")); - - j = 0; - do { - MDEANumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("MDEA")); - - j = 0; - do { - WaterNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("water")); - - j = 0; - do { - HCO3Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("HCO3-")); - - j = 0; - do { - MDEAHpNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("MDEA+")); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - error = 1e10; - dx = 1e-6; - iter = 0; - newValue = guess; - oldValue = guess; - - do { - // System.out.println("iteration..." + iter); - iter += 1; - oldValue = newValue; - - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - Pold = testSystem.getPressure(); - // System.out.println("Pold "+Pold); - - testSystem.addComponent("methane", - -testSystem.getPhase(1).getComponent(CH4Numb).getNumberOfmoles()); - testSystem.addComponent("methane", oldValue + dx); - - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - Pnew = testSystem.getPressure(); - dP = (Pnew - Pold) / dx; - newValue = oldValue - (Pold - pressure) / (dP); - error = newValue - oldValue; - - testSystem.addComponent("methane", - -testSystem.getPhase(1).getComponent(CH4Numb).getNumberOfmoles()); - testSystem.addComponent("methane", newValue); - } while (Math.abs(error) > 1e-9 && iter < 50); - - j = 0; - do { - CO2Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("CO2")); - - double aad = (pressureCO2 - testSystem.getPressure() - * testSystem.getPhase(0).getComponent(CO2Numb).getx()) / pressureCO2 * 100; - logger.info(ID + " " - + testSystem.getPressure() - * testSystem.getPhase(0).getComponent(CO2Numb).getx() - + " " + pressureCO2 + " " + aad); - /* - * //System.out.println(testSystem.getPhase(1).getComponent(CO2Numb).getx()/ - * testSystem.getPhase(1).getComponent(MDEANumb).getx()); - * System.out.println("HCO3 "+testSystem.getPhase(1).getComponent(HCO3Numb).getx - * ()+" "+testSystem.getPhase(0).getComponent(HCO3Numb).getx()); - * System.out.println("CO2 "+testSystem.getPhase(1).getComponent(CO2Numb).getx() - * +" "+testSystem.getPhase(0).getComponent(CO2Numb).getx()); - * System.out.println("H2O "+testSystem.getPhase(1).getComponent(WaterNumb).getx - * ()+" "+testSystem.getPhase(0).getComponent(WaterNumb).getx()); - * System.out.println("MDEA "+testSystem.getPhase(1).getComponent(MDEANumb).getx - * ()+" "+testSystem.getPhase(0).getComponent(MDEANumb).getx()); - * //System.out.println("CH4 "+testSystem.getPhase(1).getComponent(CH4Numb).getx - * ()+" "+testSystem.getPhase(0).getComponent(CH4Numb).getx()); - */ - // System.out.println(testSystem.getPressure()+" "+pressure+" - // "+testSystem.getTemperature()); - - // System.out.println("Bias dev. "+aad); - - try (PrintStream p = new PrintStream(new FileOutputStream("C:/java/NeqSimSource/Patrick.txt", true))) { - // p.println(ID+" "+pressure+" "+pressureCO2+" "+" "+testSystem.getPressure()+" - // "+testSystem.getPressure()*testSystem.getPhase(0).getComponent(CO2Numb).getx()+" - // "+testSystem.getPhase(1).getComponent(CH4Numb).getx()+" "+iter); - p.println(ID + " " + pressure + " " + pressureCO2 + " " - + testSystem.getPressure() + " " + testSystem.getPressure() - * testSystem.getPhase(0).getComponent(CO2Numb).getx()); - // p.println(ID+" "+pressure+" "+" "+testSystem.getPressure()+" - // "+testSystem.getPressure()*testSystem.getPhase(0).getComponent(CO2Numb).getx()); - } catch (FileNotFoundException e) { - logger.error("Could not find file" + e.getMessage()); - logger.error("Could not read from Patrick.txt" + e.getMessage()); - } - } - } catch (Exception e) { - logger.error("database error " + e); - } - logger.info("Finished"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/IonicInteractionParameterFittingFunctionCH4.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/IonicInteractionParameterFittingFunctionCH4.java deleted file mode 100644 index fbd5dcf4ec..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/IonicInteractionParameterFittingFunctionCH4.java +++ /dev/null @@ -1,182 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CH4CO2WaterMDEA; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseEosInterface; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * IonicInteractionParameterFittingFunctionCH4 class. - *

- * - * @author Neeraj - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunctionCH4 extends LevenbergMarquardtFunction { - int type = 0; - int phase = 0; - static Logger logger = LogManager.getLogger(IonicInteractionParameterFittingFunctionCH4.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunctionCH4. - *

- */ - public IonicInteractionParameterFittingFunctionCH4() {} - - /** - *

- * Constructor for IonicInteractionParameterFittingFunctionCH4. - *

- * - * @param phase a int - * @param type a int - */ - public IonicInteractionParameterFittingFunctionCH4(int phase, int type) { - this.phase = phase; - this.type = type; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - if (type == 0) { - // System.out.println("Pressure "+system.getPressure()); - return system.getPressure(); - } else { - return (system.getPressure() * system.getPhases()[0].getComponent(1).getx() - / (system.getPhases()[0].getComponent(0).getx() - + system.getPhases()[0].getComponent(1).getx())); - } - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return (val); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0, CO3numb = 0, - OHnumb = 0, CH4Numb = 0; - - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("MDEA+")); - - j = 0; - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("MDEA")); - - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("CO2")); - - if (CO2Numb != 1) { - logger.error("-------------ERROR in CO2 number------------"); - } - - j = 0; - do { - CH4Numb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("methane")); - - j = 0; - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("HCO3-")); - - j = 0; - do { - CO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO3--")); - - j = 0; - do { - OHnumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("OH-")); - - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("water")); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, Waternumb, 0.0004092282); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, Waternumb, 0.0004092282); - - if (((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule() != null) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(0, 1, 0.0004092282); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(1, 0, 0.0004092282); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(0, 1, 0.0004092282); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(1, 0, 0.0004092282); - } - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, HCO3numb, -0.0001293147); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, HCO3numb, -0.0001293147); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, MDEANumb, 0.0019465801); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, MDEANumb, 0.0019465801); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, 0.0002481365); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, 0.0002481365); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO3numb, -0.0003581646); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO3numb, -0.0003581646); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, OHnumb, 1e-10); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, OHnumb, 1e-10); - - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CH4Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CH4Numb, value); - } - - if (i == 1) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameter(CO2Numb, CH4Numb, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameter(CO2Numb, CH4Numb, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/TestIonicInteractionParameterFittingCH4.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/TestIonicInteractionParameterFittingCH4.java deleted file mode 100644 index 6365a16361..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4CO2WaterMDEA/TestIonicInteractionParameterFittingCH4.java +++ /dev/null @@ -1,114 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CH4CO2WaterMDEA; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

TestIonicInteractionParameterFittingCH4 class.

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestIonicInteractionParameterFittingCH4 { - static Logger logger = LogManager.getLogger(TestIonicInteractionParameterFittingCH4.class); - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM CO2CH4MDEA"); - - double ID, x1, x2, x3, x4, y1, y2, y3, y4, temperature, pressure, loading; - - // double guess[] = {0.0005447481}; //Case I - // double guess[] = {0.0004929757}; //Case II - double guess[] = {0.0004929757, 1e-10}; // Case II and CO2-CH4 parameter also regressed - - try { - int i = 0; - logger.info("adding...."); - while (dataSet.next()) { - i++; - IonicInteractionParameterFittingFunctionCH4 function = - new IonicInteractionParameterFittingFunctionCH4(); - IonicInteractionParameterFittingFunctionCH4 function1 = - new IonicInteractionParameterFittingFunctionCH4(1, 1); - - ID = Integer.parseInt(dataSet.getString("ID")); - pressure = Double.parseDouble(dataSet.getString("Pressure")); - temperature = Double.parseDouble(dataSet.getString("Temperature")); - x1 = Double.parseDouble(dataSet.getString("x1")); - x2 = Double.parseDouble(dataSet.getString("x2")); - x3 = Double.parseDouble(dataSet.getString("x3")); - x4 = Double.parseDouble(dataSet.getString("x4")); - y1 = Double.parseDouble(dataSet.getString("y1")); - y2 = Double.parseDouble(dataSet.getString("y2")); - y3 = Double.parseDouble(dataSet.getString("y3")); - y4 = Double.parseDouble(dataSet.getString("y4")); - - loading = x2 / x4; - - SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, pressure); - testSystem.addComponent("methane", x1); - testSystem.addComponent("CO2", x2); - testSystem.addComponent("MDEA", x4); - testSystem.addComponent("water", x3); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {loading}; - double standardDeviation1[] = {0.01}; - SampleValue sample = - new SampleValue(pressure, pressure / 100.0, sample1, standardDeviation1); - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setReference("addicks"); - sample.setDescription(Double.toString(ID)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - - double sample2[] = {loading}; - double standardDeviation2[] = {0.01}; - SampleValue sample3 = new SampleValue(pressure * y2, y2 * pressure / 100.0, sample2, - standardDeviation2); - function1.setInitialGuess(guess); - sample3.setFunction(function1); - sample3.setReference("addicks"); - sample3.setDescription(Double.toString(ID)); - sample3.setThermodynamicSystem(testSystem); - sampleList.add(sample3); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - - optim.solve(); - optim.displayCurveFit(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4MDEA/BinaryHVParameterFittingFunction_CH4.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4MDEA/BinaryHVParameterFittingFunction_CH4.java deleted file mode 100644 index 49dbd73dd9..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4MDEA/BinaryHVParameterFittingFunction_CH4.java +++ /dev/null @@ -1,106 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CH4MDEA; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * BinaryHVParameterFittingFunction_CH4 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryHVParameterFittingFunction_CH4 extends LevenbergMarquardtFunction { - int type = 0; - int phase = 0; - static Logger logger = LogManager.getLogger(BinaryHVParameterFittingFunction_CH4.class); - - /** - *

- * Constructor for BinaryHVParameterFittingFunction_CH4. - *

- */ - public BinaryHVParameterFittingFunction_CH4() {} - - /** - *

- * Constructor for BinaryHVParameterFittingFunction_CH4. - *

- * - * @param phase a int - * @param type a int - */ - public BinaryHVParameterFittingFunction_CH4(int phase, int type) { - this.phase = phase; - this.type = type; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getPressure(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - - if (i == 0) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(0, 2, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(0, 2, value); - } - if (i == 1) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(2, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(2, 0, value); - } - - if (i == 4) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHValphaParameter(0, 2, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHValphaParameter(0, 2, value); - } - - if (i == 2) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(0, 2, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(0, 2, value); - } - if (i == 3) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(2, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(2, 0, value); - } - - // if (i==0){ - /* - * ((PhaseEosInterface)system.getPhases()[0]).getMixingRule(). - * setBinaryInteractionParameter(0,2, value); - * ((PhaseEosInterface)system.getPhases()[1]).getMixingRule(). - * setBinaryInteractionParameter(0,2, value); - */ - // } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4MDEA/TestBinaryHVParameterFittingToEquilibriumData_CH4.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4MDEA/TestBinaryHVParameterFittingToEquilibriumData_CH4.java deleted file mode 100644 index 4a279f3143..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CH4MDEA/TestBinaryHVParameterFittingToEquilibriumData_CH4.java +++ /dev/null @@ -1,92 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CH4MDEA; - -// To find HV parameters for CO2 - MDEA systempackage -// neqsim.thermo.util.parameterFitting.Procede.CH4MDEA; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryHVParameterFittingToEquilibriumData_CH4 class. - *

- * - * @author Neeraj Agrawal - * @version $Id: $Id - */ -public class TestBinaryHVParameterFittingToEquilibriumData_CH4 { - static Logger logger = - LogManager.getLogger(TestBinaryHVParameterFittingToEquilibriumData_CH4.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM CH4MDEA"); - double guess[] = {500, -500, 1e-10, 1e-10, 0.3}; - try { - while (dataSet.next()) { - BinaryHVParameterFittingFunction_CH4 function = - new BinaryHVParameterFittingFunction_CH4(); - - function.setInitialGuess(guess); - - int ID = dataSet.getInt("ID"); - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("Pressure")); - double x1 = Double.parseDouble(dataSet.getString("x1")); - double x2 = Double.parseDouble(dataSet.getString("x2")); - double x3 = Double.parseDouble(dataSet.getString("x3")); - - SystemInterface testSystem = - new SystemSrkSchwartzentruberEos(temperature, pressure); - - testSystem.addComponent("methane", x1); - testSystem.addComponent("water", x2); - testSystem.addComponent("MDEA", x3); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {temperature}; - double standardDeviation1[] = {temperature / 100.0}; - - SampleValue sample = - new SampleValue(pressure, pressure / 100.0, sample1, standardDeviation1); - - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(ID)); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - optim.displayCurveFit(); - // optim.displayResult(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/BinaryHVParameterFittingFunction_N2O.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/BinaryHVParameterFittingFunction_N2O.java deleted file mode 100644 index f89395cb12..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/BinaryHVParameterFittingFunction_N2O.java +++ /dev/null @@ -1,105 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CO2MDEA; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * BinaryHVParameterFittingFunction_N2O class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryHVParameterFittingFunction_N2O extends LevenbergMarquardtFunction { - int type = 0; - int phase = 0; - static Logger logger = LogManager.getLogger(BinaryHVParameterFittingFunction_N2O.class); - - /** - *

- * Constructor for BinaryHVParameterFittingFunction_N2O. - *

- */ - public BinaryHVParameterFittingFunction_N2O() {} - - /** - *

- * Constructor for BinaryHVParameterFittingFunction_N2O. - *

- * - * @param phase a int - * @param type a int - */ - public BinaryHVParameterFittingFunction_N2O(int phase, int type) { - this.phase = phase; - this.type = type; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - return (system.getPressure() * system.getPhases()[0].getComponent(0).getx() - * system.getPhase(0).getComponent(0).getFugacityCoefficient()); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return (val); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - - if (i == 0) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(0, 2, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(0, 2, value); - } - if (i == 1) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(2, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(2, 0, value); - } - - if (i == 4) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHValphaParameter(0, 2, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHValphaParameter(0, 2, value); - } - - if (i == 2) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(0, 2, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(0, 2, value); - } - if (i == 3) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(2, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(2, 0, value); - } - - /* - * ((PhaseEosInterface)system.getPhases()[0]).getMixingRule(). - * setBinaryInteractionParameter(0,2, value); - * ((PhaseEosInterface)system.getPhases()[1]).getMixingRule(). - * setBinaryInteractionParameter(0,2, value); - */ - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/N2O.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/N2O.java deleted file mode 100644 index 9321551090..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/N2O.java +++ /dev/null @@ -1,75 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CO2MDEA; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.thermodynamicOperations.ThermodynamicOperations; - -/** - *

N2O class.

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class N2O { - static Logger logger = LogManager.getLogger(N2O.class); - - /** - *

Constructor for N2O.

- */ - public N2O() { - } - - /** - *

main.

- * - * @param args the command line arguments - */ - public static void main(String[] args) { - double temperature = 313; - double wt, x; - wt = 0.4; - - for (temperature = 283; temperature <= 363; temperature += 10) { - x = (wt / 119.16) / (wt / 119.16 + (1 - wt) / 18.02); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(temperature, 1.0); - testSystem.addComponent("CO2", 1e-3 * x); - testSystem.addComponent("water", 1 - x); - testSystem.addComponent("MDEA", x); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - testSystem.init(1); - - // System.out.println(x); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - double aCO2 = testSystem.getPhase(1).getActivityCoefficient(0, 1); - double aMDEA = testSystem.getPhase(1).getActivityCoefficient(2); - double awater = testSystem.getPhase(1).getActivityCoefficient(1); - logger.info(aCO2); - - try (PrintStream p = new PrintStream(new FileOutputStream("C:/java/NeqSimSource/Patrick.txt", true))) { - p.println(temperature + " " + testSystem.getPressure() * testSystem.getPhase(0).getComponent(0).getx() - + " " + aCO2 + " " + aMDEA + " " + awater); - } catch (FileNotFoundException e) { - logger.error("Could not find file" + e.getMessage()); - logger.error("Could not read from Patrick.txt" + e.getMessage()); - } - } - logger.info("Finished"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/TestBinaryHVParameterFittingToEquilibriumData_N2O.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/TestBinaryHVParameterFittingToEquilibriumData_N2O.java deleted file mode 100644 index c61fa8f2e1..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2MDEA/TestBinaryHVParameterFittingToEquilibriumData_N2O.java +++ /dev/null @@ -1,109 +0,0 @@ -// To find HV parameters for CO2 - MDEA system -package neqsim.thermo.util.parameterFitting.Procede.CO2MDEA; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryHVParameterFittingToEquilibriumData_N2O class. - *

- * - * @author Neeraj Agrawal - * @version $Id: $Id - */ -public class TestBinaryHVParameterFittingToEquilibriumData_N2O { - static Logger logger = - LogManager.getLogger(TestBinaryHVParameterFittingToEquilibriumData_N2O.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - double error = 5; - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - // Reference = 'Versteeg' OR Reference='Al-Ghawas' OR Reference = 'Pawlak' OR - // Reference ='Haimour' Reference='Al-Ghawas' OR - ResultSet dataSet = database.getResultSet( - "SELECT * FROM CO2MDEA WHERE Reference='Jou' OR Reference = 'Pawlak' OR Reference = 'Versteeg' OR Reference ='Haimour'"); - - // double guess[] = {493.2862980752, 265.1993459038, -0.4817235596, - // -0.6827900771, -0.7855706585}; //First one - double guess[] = - {-387.8913684529, -2028.8216959926, 6.1851396710, 3.4677644464, -0.2029288678}; // Second - // one - - try { - while (dataSet.next()) { - BinaryHVParameterFittingFunction_N2O function = - new BinaryHVParameterFittingFunction_N2O(); - - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 1); - - int ID = dataSet.getInt("ID"); - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("Pressure")); - double x1 = Double.parseDouble(dataSet.getString("x1")); - double x2 = Double.parseDouble(dataSet.getString("x2")); - double x3 = Double.parseDouble(dataSet.getString("x3")); - - if (ID == 96 || ID == 115 || ID == 124) { - continue; // Data points of Versteeg corresponding to high MDEA wt % - } - if (ID == 132) { - continue; - } - - testSystem.setTemperature(temperature); - testSystem.setPressure(pressure); - - testSystem.addComponent("CO2", x1); - testSystem.addComponent("Water", x2); - testSystem.addComponent("MDEA", x3); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {x3, temperature}; - double standardDeviation1[] = {x3 / 100, temperature / 100.0}; - - SampleValue sample = new SampleValue(pressure, error * pressure / 100.0, sample1, - standardDeviation1); - - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(ID)); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - optim.displayCurveFit(); - // optim.displayResult(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2Water/Diamond.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2Water/Diamond.java deleted file mode 100644 index ba8ea92e2e..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2Water/Diamond.java +++ /dev/null @@ -1,80 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CO2Water; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; -import java.sql.ResultSet; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.thermodynamicOperations.ThermodynamicOperations; -import neqsim.util.database.NeqSimDataBase; - -/** - *

Diamond class.

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class Diamond { - static Logger logger = LogManager.getLogger(Diamond.class); - - /** - *

Constructor for Diamond.

- */ - public Diamond() { - } - - /** - *

main.

- * - * @param args the command line arguments - */ - public static void main(String[] args) { - double temperature, x, pressure, ID; - - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM Diamond"); - - try { - while (dataSet.next()) { - ID = Double.parseDouble(dataSet.getString("ID")); - temperature = Double.parseDouble(dataSet.getString("Temperature")); - pressure = Double.parseDouble(dataSet.getString("Pressure")); - x = Double.parseDouble(dataSet.getString("x")); - - SystemInterface testSystem = - new SystemSrkSchwartzentruberEos(temperature, 0.9 * pressure); - testSystem.addComponent("CO2", x); - testSystem.addComponent("water", 1 - x); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - testSystem.init(1); - - logger.info(ID); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - // System.out.println(testSystem.getPressure()*testSystem.getPhase(0).getComponent(0).getx()); - try (PrintStream p = new PrintStream(new FileOutputStream("C:/java/NeqSimSource/Patrick.txt", true))) { - p.println(ID + " " + x + " " + pressure + " " + testSystem.getPressure()); - } catch (FileNotFoundException e) { - logger.error("Could not find file"); - logger.error("Could not read from Patrick.txt" + e.getMessage()); - } - } - } catch (Exception e) { - logger.error("database error" + e); - } - logger.info("Finished"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2Water/Jamal.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2Water/Jamal.java deleted file mode 100644 index be5f4e7639..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2Water/Jamal.java +++ /dev/null @@ -1,68 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CO2Water; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.thermodynamicOperations.ThermodynamicOperations; - -/** - *

Jamal class.

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class Jamal { - static Logger logger = LogManager.getLogger(Jamal.class); - - /** - *

Constructor for Jamal.

- */ - public Jamal() { - } - - /** - *

main.

- * - * @param args the command line arguments - */ - public static void main(String[] args) { - double temperature, x; - - for (temperature = 278; temperature <= 500; temperature += 5) { - x = 1e-4; - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(temperature, 1); - testSystem.addComponent("CO2", x); - testSystem.addComponent("water", 1 - x); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - testSystem.init(1); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - // System.out.println(testSystem.getPressure()*testSystem.getPhase(0).getComponent(0).getx()); - - try (PrintStream p = new PrintStream(new FileOutputStream("C:/java/NeqSimSource/Patrick.txt", true))) { - p.println(temperature + " " - + testSystem.getPressure() * testSystem.getPhase(0).getComponent(0).getx() / x); - } catch (FileNotFoundException e) { - logger.error("Could not find file"); - logger.error("Could not read from Patrick.txt" + e.getMessage()); - } - - logger.info("Finished"); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/CO2_MDEA.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/CO2_MDEA.java deleted file mode 100644 index af448fcf1f..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/CO2_MDEA.java +++ /dev/null @@ -1,136 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CO2WaterMDEA; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; -import java.sql.ResultSet; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermodynamicOperations.ThermodynamicOperations; -import neqsim.util.database.NeqSimDataBase; - -/** - *

CO2_MDEA class.

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class CO2_MDEA { - static Logger logger = LogManager.getLogger(CO2_MDEA.class); - - /** - *

Constructor for CO2_MDEA.

- */ - public CO2_MDEA() {} - - /** - *

main.

- * - * @param args the command line arguments - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - int i = 0, j, CO2Numb = 0, WaterNumb = 0, MDEANumb = 0, HCO3Numb = 0, MDEAHpNumb = 0; - double ID, pressure, temperature, x1, x2, x3, bias; - - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = - database.getResultSet("SELECT * FROM CO2WaterMDEA WHERE ID>196 AND ID<231"); - - try { - while (dataSet.next()) { - i += 1; - logger.info("Adding.... " + i); - - ID = Double.parseDouble(dataSet.getString("ID")); - pressure = Double.parseDouble(dataSet.getString("PressureCO2")); - temperature = Double.parseDouble(dataSet.getString("Temperature")); - x1 = Double.parseDouble(dataSet.getString("x1")); - x2 = Double.parseDouble(dataSet.getString("x2")); - x3 = Double.parseDouble(dataSet.getString("x3")); - - /* - * if((ID>56 && ID<64) || (ID>92 && ID<101) || (ID>123 && ID<131)) //75 wt% amine - * continue; - */ - logger.info("................ID............ " + ID); - SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, pressure); - - testSystem.addComponent("CO2", x1); - testSystem.addComponent("MDEA", x3); - testSystem.addComponent("water", x2); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - j = 0; - do { - CO2Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("CO2")); - - j = 0; - do { - MDEANumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("MDEA")); - - j = 0; - do { - WaterNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("water")); - - j = 0; - do { - HCO3Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("HCO3-")); - - j = 0; - do { - MDEAHpNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("MDEA+")); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - bias = (pressure - testSystem.getPressure() - * testSystem.getPhase(0).getComponent(CO2Numb).getx()) / pressure * 100; - // bias = (pressure-testSystem.getPressure())/pressure*100; - - // logger.info("Bias "+bias); - // logger.info("Act "+testSystem.getPhase(1).getActivityCoefficient(MDEAHpNumb, - // WaterNumb)); - // logger.info("Pressure CO2 - // "+testSystem.getPressure()*testSystem.getPhase(0).getComponent(CO2Numb).getx()); - try (PrintStream p = new PrintStream(new FileOutputStream("C:/java/NeqSimSource/Patrick.txt", true))) { - p.println(ID + " " + pressure + " " + testSystem.getPressure() - * testSystem.getPhase(0).getComponent(CO2Numb).getx()); - } catch (FileNotFoundException e) { - logger.error("Could not find file" + e.getMessage()); - } - } - } catch (Exception e) { - logger.error("database error " + e); - } - - logger.info("Finished"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/CO2_MDEA_speciation.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/CO2_MDEA_speciation.java deleted file mode 100644 index eb16e4cdad..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/CO2_MDEA_speciation.java +++ /dev/null @@ -1,167 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CO2WaterMDEA; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermodynamicOperations.ThermodynamicOperations; - -/** - *

CO2_MDEA_speciation class.

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class CO2_MDEA_speciation { - static Logger logger = LogManager.getLogger(CO2_MDEA_speciation.class); - - /** - *

Constructor for CO2_MDEA_speciation.

- */ - public CO2_MDEA_speciation() {} - - /** - *

main.

- * - * @param args the command line arguments - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - int i = 0, j, CO2Numb = 0, WaterNumb = 0, MDEANumb = 0, HCO3Numb = 0, MDEAHpNumb = 0, - CO3Numb = 0, OHNumb = 0; - double nCO2, nMDEA, nHCO3, nCO3, nMDEAp, nOH; - double aCO2, aMDEA, aHCO3, awater, aMDEAp, aOH, aCO3; - double x1, x2, x3, total, n1, n2, n3, mass; - - double MDEAwt = 42.313781; - double loading = 0.43194; - double temperature = 273.16 + 65; - double pressure = 0.01; - - // for (loading = 5e-4; loading<=0.1;) { - n3 = MDEAwt / 119.16; - n2 = (100 - MDEAwt) / 18.015; - n1 = n3 * loading; - total = n1 + n2 + n3; - x1 = n1 / total; - x2 = n2 / total; - x3 = n3 / total; - mass = x1 * 44.01 + x2 * 18.015 + x3 * 119.1632; - - SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, pressure); - - testSystem.addComponent("CO2", x1); - testSystem.addComponent("MDEA", x3); - testSystem.addComponent("water", x2); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - j = 0; - do { - CO2Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("CO2")); - - j = 0; - do { - MDEANumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("MDEA")); - - j = 0; - do { - WaterNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("water")); - - j = 0; - do { - HCO3Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("HCO3-")); - - j = 0; - do { - CO3Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("CO3--")); - - j = 0; - do { - OHNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("OH-")); - - j = 0; - do { - MDEAHpNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("MDEA+")); - - logger.info("CO2 number " + CO2Numb); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - logger.info("Pressure " + testSystem.getPressure()); - - nCO2 = testSystem.getPhase(1).getComponent(CO2Numb).getx(); - nMDEA = testSystem.getPhase(1).getComponent(MDEANumb).getx(); - nHCO3 = testSystem.getPhase(1).getComponent(HCO3Numb).getx(); - nCO3 = testSystem.getPhase(1).getComponent(CO3Numb).getx(); - nMDEAp = testSystem.getPhase(1).getComponent(MDEAHpNumb).getx(); - nOH = testSystem.getPhase(1).getComponent(OHNumb).getx(); - - aMDEA = testSystem.getPhase(1).getActivityCoefficient(MDEANumb, WaterNumb); - awater = testSystem.getPhase(1).getActivityCoefficient(WaterNumb); - aCO2 = testSystem.getPhase(1).getActivityCoefficient(CO2Numb, WaterNumb); - aMDEAp = testSystem.getPhase(1).getActivityCoefficient(MDEAHpNumb, WaterNumb); - aHCO3 = testSystem.getPhase(1).getActivityCoefficient(HCO3Numb, WaterNumb); - aOH = testSystem.getPhase(1).getActivityCoefficient(OHNumb, WaterNumb); - aCO3 = testSystem.getPhase(1).getActivityCoefficient(CO3Numb, WaterNumb); - - try (PrintStream p = new PrintStream(new FileOutputStream("C:/java/NeqSimSource/Patrick.txt", true))) { - p.println(loading + " " + testSystem.getPressure() + " " - + testSystem.getPressure() * testSystem.getPhase(0).getComponent(CO2Numb).getx() - + " " + nCO2 + " " + nMDEA + " " + nHCO3 + " " + nMDEAp + " " + nCO3 + " " - + nOH); - // p.println(loading+" "+testSystem.getPressure()+" - // "+testSystem.getPressure()*testSystem.getPhase(0).getComponent(CO2Numb).getx()); - } catch (FileNotFoundException e) { - logger.error("Could not find file"); - logger.error("Could not read from Patrick.txt" + e.getMessage()); - } - try (PrintStream p = new PrintStream(new FileOutputStream("C:/java/NeqSimSource/activity.txt", true))) { - p.println(loading + " " + awater + " " + aCO2 + " " + aMDEA + " " + aHCO3 + " " - + aMDEAp + " " + aCO3 + " " + aOH); - } catch (FileNotFoundException e) { - logger.error("Could not find file"); - logger.error("Could not read from Patrick.txt" + e.getMessage()); - } - - if (loading < 0.1) { - loading *= 10; - } else { - loading += 0.1; - } - logger.info("Finished"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/IonicInteractionParameterFittingFunction_CO2.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/IonicInteractionParameterFittingFunction_CO2.java deleted file mode 100644 index 2f5cd9a5cd..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/IonicInteractionParameterFittingFunction_CO2.java +++ /dev/null @@ -1,170 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CO2WaterMDEA; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * IonicInteractionParameterFittingFunction_CO2 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunction_CO2 extends LevenbergMarquardtFunction { - int type = 0; - int phase = 0; - static Logger logger = LogManager.getLogger(IonicInteractionParameterFittingFunction_CO2.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunction_CO2. - *

- */ - public IonicInteractionParameterFittingFunction_CO2() {} - - /** - *

- * Constructor for IonicInteractionParameterFittingFunction_CO2. - *

- * - * @param phase a int - * @param type a int - */ - public IonicInteractionParameterFittingFunction_CO2(int phase, int type) { - this.phase = phase; - this.type = type; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - if (type == 0) { - return (system.getPressure() * system.getPhases()[0].getComponent(0).getx() - * system.getPhase(0).getComponent(0).getFugacityCoefficient()); - } else { - return (system.getPressure()); - } - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return (val); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0, CO3numb = 0, - OHnumb = 0; - - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("MDEA+")); - j = 0; - - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("MDEA")); - - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("CO2")); - - if (CO2Numb != 0) { - logger.error("-------------ERROR in CO2 number------------"); - } - - j = 0; - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("HCO3-")); - - j = 0; - do { - CO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO3--")); - - j = 0; - do { - OHnumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("OH-")); - - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("water")); - - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, Waternumb, value); - - if (((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule() != null) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(0, 1, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(1, 0, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(0, 1, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(1, 0, value); - } - } - - if (i == 1) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, HCO3numb, value); - } - - if (i == 2) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, MDEANumb, value); - } - - if (i == 3) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - } - - if (i == 4) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO3numb, value); - } - - // if(i==0){ - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, OHnumb, 1e-10); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, OHnumb, 1e-10); - // } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/TestIonicInteractionParameterFitting_CO2.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/TestIonicInteractionParameterFitting_CO2.java deleted file mode 100644 index a1cd227e47..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/CO2WaterMDEA/TestIonicInteractionParameterFitting_CO2.java +++ /dev/null @@ -1,259 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.CO2WaterMDEA; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

TestIonicInteractionParameterFitting_CO2 class.

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestIonicInteractionParameterFitting_CO2 { - static Logger logger = LogManager.getLogger(TestIonicInteractionParameterFitting_CO2.class); - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - double ID, pressure, temperature, x1, x2, x3, loading; - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM CO2WaterMDEA WHERE ID<231"); - - // Water, HCO3-, MDEA, CO2, Co3-- - - // double guess[] = {0.0004463876, -0.0001475081, 0.0021294606, 0.0002761438, - // -0.0003450177}; //Detailed reactions, no data for 75 wt% MDEA or temp > 400K, - // more iterations - double guess[] = {-0.0001660156, -0.0006035675, -0.0000068587, -0.0002164970};// ,0.0005}; - // //Detailed - // reactions, - // no data for - // 75 wt% - // MDEA or - // temp > 400K - // or - // loading < - // 0.1 and - // bias = -4% - // and AAD = - // 18% for - // loading - // >0.1 - // double guess[] = {0.0004164151, 0.0002034767, 0.0018993447, 0.0022461592, - // -0.0008412103}; //Detailed reactions, no data for 75 wt% MDEA or temp > 400K - // or loading > 0.1 bias of -7% and AAD= 27% for loading<0.1 - // double guess[] = {1e-10}; //Assuming values for all other species, except - // OH-. Regression done only for data loading<0.1. {0.0004463876, -0.0001475081, - // 0.0021294606, 0.0002761438, -0.0003450177} - // double guess[] = {0.0004480870, -0.0001871372, 0.0021482035, 0.0002770425, - // -0.0003886375}; //Detailed reactions, no data for 75 wt% MDEA or temp > 400K, - // more iterations diff. Water - MDEA HV parameter - // double guess[] = {1e-10, 1e-10, 1e-10, 1e-10, 1e-10}; //Debye - Huckle type - // equation - try { - int i = 0; - logger.info("adding...."); - while (dataSet.next()) { - i++; - IonicInteractionParameterFittingFunction_CO2 function = - new IonicInteractionParameterFittingFunction_CO2(); - function.setInitialGuess(guess); - - ID = Integer.parseInt(dataSet.getString("ID")); - pressure = Double.parseDouble(dataSet.getString("PressureCO2")); - temperature = Double.parseDouble(dataSet.getString("Temperature")); - x1 = Double.parseDouble(dataSet.getString("x1")); - x2 = Double.parseDouble(dataSet.getString("x2")); - x3 = Double.parseDouble(dataSet.getString("x3")); - - loading = x1 / x3; - - // if(loading <= 0.1) continue; - - if ((ID > 56 && ID < 64) || (ID > 92 && ID < 101) || (ID > 123 && ID < 131)) { // 75 - // wt% - // amine - continue; - } - if (ID == 155) { - continue; // AAD >100 - } - if (ID == 29 || ID == 28 || ID == 258) { - continue; // large values of Pexp/Pcalc - } - if (temperature > 400) { // Since Wij are assumed to be temp. independent, higher - // temp. are neglected - continue; - } - - SystemInterface testSystem = - new SystemFurstElectrolyteEos(temperature, 1.5 * pressure); - testSystem.addComponent("CO2", x1); - testSystem.addComponent("MDEA", x3); - testSystem.addComponent("water", x2); - - logger.info("...........ID............." + ID); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {loading}; - double standardDeviation1[] = {0.1}; - double stddev = (pressure / 100.0); - SampleValue sample = - new SampleValue((pressure), stddev, sample1, standardDeviation1); - - sample.setFunction(function); - sample.setReference(Double.toString(ID)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet("SELECT * FROM CO2WaterMDEA WHERE ID>230"); - - try { - int i = 0; - - logger.info("adding...."); - while (dataSet.next()) { - i++; - - IonicInteractionParameterFittingFunction_CO2 function = - new IonicInteractionParameterFittingFunction_CO2(1, 1); - function.setInitialGuess(guess); - - ID = Integer.parseInt(dataSet.getString("ID")); - pressure = Double.parseDouble(dataSet.getString("Pressure")); - temperature = Double.parseDouble(dataSet.getString("Temperature")); - x1 = Double.parseDouble(dataSet.getString("x1")); - x2 = Double.parseDouble(dataSet.getString("x2")); - x3 = Double.parseDouble(dataSet.getString("x3")); - - loading = x1 / x3; - // if(loading <= 0.1) continue; - - SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, pressure); - testSystem.addComponent("CO2", x1); - testSystem.addComponent("water", x2); - testSystem.addComponent("MDEA", x3); - logger.info("...........ID............." + ID); - - if (ID == 294 || ID == 295) { - continue; // convergence problem - } - if (ID > 235 && ID < 244) { - continue; // large error - } - if (ID > 246 && ID < 252) { - continue; // large error - } - if (ID == 258 || ID == 322) { - continue; - } - if (ID == 328 || ID == 329 || (ID > 332 && ID < 339)) { - continue; - } - if (temperature > 400) { // Since Wij are assumed to be temp. independent, higher - // temp. are neglected - continue; - } - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {loading}; - double standardDeviation1[] = {0.1}; - double stddev = (pressure / 100.0); - SampleValue sample = - new SampleValue((pressure), stddev, sample1, standardDeviation1); - - sample.setFunction(function); - sample.setReference(Double.toString(ID)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet("SELECT * FROM CO2WaterMDEAtest"); - - try { - int i = 0; - logger.info("adding...."); - while (dataSet.next()) { - i++; - IonicInteractionParameterFittingFunction_CO2 function = - new IonicInteractionParameterFittingFunction_CO2(); - function.setInitialGuess(guess); - - ID = Integer.parseInt(dataSet.getString("ID")); - pressure = Double.parseDouble(dataSet.getString("PressureCO2")); - temperature = Double.parseDouble(dataSet.getString("Temperature")); - x1 = Double.parseDouble(dataSet.getString("x1")); - x2 = Double.parseDouble(dataSet.getString("x2")); - x3 = Double.parseDouble(dataSet.getString("x3")); - - loading = x1 / x3; - // if(loading <= 0.1) continue; - - SystemInterface testSystem = - new SystemFurstElectrolyteEos(temperature, 1.5 * pressure); - testSystem.addComponent("CO2", x1); - testSystem.addComponent("MDEA", x3); - testSystem.addComponent("water", x2); - - logger.info("...........ID............." + ID); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {loading}; - double standardDeviation1[] = {0.1}; - double stddev = (pressure / 100.0); - SampleValue sample = - new SampleValue((pressure), stddev, sample1, standardDeviation1); - - sample.setFunction(function); - sample.setReference(Double.toString(ID)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.displayGraph(); - optim.displayCurveFit(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/RackettZ.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/RackettZ.java deleted file mode 100644 index 153ad1957d..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/RackettZ.java +++ /dev/null @@ -1,45 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.Density; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * RackettZ class. To find the Rackett constant for Water and MDEA. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class RackettZ extends LevenbergMarquardtFunction { - /** - *

- * Constructor for RackettZ. - *

- */ - public RackettZ() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.initPhysicalProperties(); - return system.getPhase(1).getPhysicalProperties().getDensity(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i == 0) { - system.getPhases()[0].getComponents()[0].setRacketZ(value); - system.getPhases()[1].getComponents()[0].setRacketZ(value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/TestRackettZ.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/TestRackettZ.java deleted file mode 100644 index 58b300ff7c..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/TestRackettZ.java +++ /dev/null @@ -1,82 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.Density; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestRackettZ class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestRackettZ { - static Logger logger = LogManager.getLogger(TestRackettZ.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database - .getResultSet("SELECT * FROM PureComponentDensity WHERE ComponentName = 'Water'"); - - try { - logger.info("adding...."); - while (dataSet.next()) { - RackettZ function = new RackettZ(); - // double guess[] = {0.2603556815}; //MDEA - double guess[] = {0.2356623744}; // Water - function.setInitialGuess(guess); - - double T = Double.parseDouble(dataSet.getString("Temperature")); - double P = Double.parseDouble(dataSet.getString("Pressure")); - double density = Double.parseDouble(dataSet.getString("Density")); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(T, P); - testSystem.addComponent("water", 1.0); - - testSystem.createDatabase(true); - testSystem.useVolumeCorrection(true); - testSystem.setMixingRule(4); - testSystem.init(0); - testSystem.init(1); - - double sample1[] = {T}; - double standardDeviation1[] = {T / 100}; - - SampleValue sample = - new SampleValue(density, density / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - optim.displayCurveFit(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/density.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/density.java deleted file mode 100644 index f3e4698eea..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/Density/density.java +++ /dev/null @@ -1,75 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.Density; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; - -/** - *

- * density class. - *

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class density { - static Logger logger = LogManager.getLogger(density.class); - - /** - *

Constructor for density.

- */ - public density() {} - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - double n1, n2, n3, x1, x2, x3, total; - double MDEAwt = 0.44; - double loading = 0.0; - double temperature = 273.16 + 20; - double pressure = 0.01; - - for (loading = 0.0; loading <= 1.0; loading += 0.1) { - n3 = MDEAwt / 119.16; - n2 = (1 - MDEAwt) / 18.015; - n1 = n3 * loading; - total = n1 + n2 + n3; - x1 = n1 / total; - x2 = n2 / total; - x3 = n3 / total; - - SystemInterface testSystem = new SystemFurstElectrolyteEos(298, 1); - - testSystem.addComponent("CO2", x1); - testSystem.addComponent("MDEA", x3); - testSystem.addComponent("water", x2); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.useVolumeCorrection(true); - testSystem.setMixingRule(4); - testSystem.init(0); - testSystem.init(1); - testSystem.initPhysicalProperties(); - - try (PrintStream p = new PrintStream( - new FileOutputStream("C:/java/NeqSimSource/Patrick.txt", true))) { - p.println(loading + " " - + testSystem.getPhase(1).getPhysicalProperties().getDensity() / 1000); - } catch (FileNotFoundException e) { - logger.error("Could not find file"); - logger.error("Could not write to Patrick.txt" + e.getMessage()); - } - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/H2S_Water.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/H2S_Water.java deleted file mode 100644 index d9a08586e8..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/H2S_Water.java +++ /dev/null @@ -1,79 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede; - -import java.sql.ResultSet; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.thermodynamicOperations.ThermodynamicOperations; -import neqsim.util.database.NeqSimDataBase; - -/** - *

H2S_Water class.

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class H2S_Water { - static Logger logger = LogManager.getLogger(H2S_Water.class); - - /** - *

Constructor for H2S_Water.

- */ - public H2S_Water() {} - - /** - *

main.

- * - * @param args the command line arguments - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - int i = 0; - double aad; - - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM H2SWater"); - - try { - while (dataSet.next()) { - i++; - logger.info("Adding.... " + i); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(300, 1); - - double ID = Double.parseDouble(dataSet.getString("ID")); - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("Pressure")); - double x = Double.parseDouble(dataSet.getString("x")); - double y = Double.parseDouble(dataSet.getString("y")); - - testSystem.setTemperature(temperature); - testSystem.setPressure(pressure); - testSystem.addComponent("H2S", x); - testSystem.addComponent("water", 1.0 - x); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - aad = (pressure - testSystem.getPressure()) / pressure * 100; - logger.info(ID + " " + pressure + " " + testSystem.getPressure() + " " + aad); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - logger.info("Finished"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/BinaryHVParameterFittingFunction_MDEA.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/BinaryHVParameterFittingFunction_MDEA.java deleted file mode 100644 index bd430fb8ca..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/BinaryHVParameterFittingFunction_MDEA.java +++ /dev/null @@ -1,147 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.WaterMDEA; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * BinaryHVParameterFittingFunction_MDEA class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryHVParameterFittingFunction_MDEA extends LevenbergMarquardtFunction { - int type = 0; - int phase = 0; - static Logger logger = LogManager.getLogger(BinaryHVParameterFittingFunction_MDEA.class); - - /** - *

- * Constructor for BinaryHVParameterFittingFunction_MDEA. - *

- */ - public BinaryHVParameterFittingFunction_MDEA() {} - - /** - *

- * Constructor for BinaryHVParameterFittingFunction_MDEA. - *

- * - * @param phase a int - * @param type a int - */ - public BinaryHVParameterFittingFunction_MDEA(int phase, int type) { - this.phase = phase; - this.type = type; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - double aMDEAold, aWaterold, aMDEAnew, aWaternew, daMDEAdT, daWaterdT, H; - - if (type == 0) { - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - return (system.getPressure());// *system.getPhases()[0].getComponent(0).getx()); - } - - if (type == 1) { - system.init(0); - system.init(1); - return system.getPhases()[1].getActivityCoefficient(0); - } - - if (type == 2) { - system.init(0); - system.init(1); - aMDEAold = system.getPhase(1).getActivityCoefficient(1); - aWaterold = system.getPhase(1).getActivityCoefficient(0); - system.setTemperature(system.getTemperature() + 0.00001); - system.init(0); - system.init(1); - aMDEAnew = system.getPhase(1).getActivityCoefficient(1); - aWaternew = system.getPhase(1).getActivityCoefficient(0); - daMDEAdT = (Math.log(aMDEAnew) - Math.log(aMDEAold)) / 0.00001; - daWaterdT = (Math.log(aWaternew) - Math.log(aWaterold)) / 0.00001; - system.setTemperature(system.getTemperature() - 0.00001); - H = -8.314 * system.getTemperature() * system.getTemperature() - * (system.getPhase(1).getComponent(0).getx() * daWaterdT - + system.getPhase(1).getComponent(1).getx() * daMDEAdT); - return H; - } - - if (type == 3) { - system.init(0); - system.init(1); - return system.getPhase(1).getActivityCoefficient(0);// system.getPhase(0).getComponent(0).getFugacityCoefficient(); - } - - if (type == 4) { - system.init(0); - system.init(1); - return system.getPhase(1).getActivityCoefficient(1);// system.getPhase(0).getComponent(0).getFugacityCoefficient(); - } - - return (0); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return (val); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - - /* - * ((PhaseEosInterface)system.getPhases()[0]).getMixingRule(). - * setBinaryInteractionParameter(0,1, value); - * ((PhaseEosInterface)system.getPhases()[1]).getMixingRule(). - * setBinaryInteractionParameter(0,1, value); - */ - - if (i == 0) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(0, 1, value); - } - if (i == 1) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(1, 0, value); - } - - if (i == 4) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHValphaParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHValphaParameter(0, 1, value); - } - - if (i == 2) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - } - if (i == 3) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/TestBinaryHVParameterFitting_MDEA.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/TestBinaryHVParameterFitting_MDEA.java deleted file mode 100644 index 7dc939f320..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/TestBinaryHVParameterFitting_MDEA.java +++ /dev/null @@ -1,224 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.WaterMDEA; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryHVParameterFitting_MDEA class. This program calculated Water - MDEA HV interaction - * parameters. Two types of data is available. VLE data and freezing point depression data - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVParameterFitting_MDEA { - static Logger logger = LogManager.getLogger(TestBinaryHVParameterFitting_MDEA.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - double ID, pressure, temperature, x1, x2, x3, gamma1, Hm, act1, act2; - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - - // double guess[] = {1201, -1461, -7.24, 5.89, 0.21}; //Even Solbraa - // double guess[] = {733.1497651631, -1100.3362377120, -6.0060055689, - // 5.0938556111, 0.2082636701}; // Ans 2 using Heat of mixing as well - double guess[] = - {-5596.6518968945, 3995.5032952165, 10.9677849623, -8.0407258862, 0.2703018372}; - - ResultSet dataSet = database.getResultSet("SELECT * FROM WaterMDEA WHERE ID<62"); - /* - * try{ int i=0; logger.info("adding...."); while(dataSet.next()){ - * BinaryHVParameterFittingFunction_MDEA function = new - * BinaryHVParameterFittingFunction_MDEA(); function.setInitialGuess(guess); - * - * ID = Double.parseDouble(dataSet.getString("ID")); pressure = - * Double.parseDouble(dataSet.getString("Pressure")); temperature = - * Double.parseDouble(dataSet.getString("Temperature")); x1 = - * Double.parseDouble(dataSet.getString("x1")); x2 = - * Double.parseDouble(dataSet.getString("x2")); - * - * //if(ID<35) // continue; - * - * SystemInterface testSystem = new SystemSrkSchwartzentruberEos(temperature, 1.5*pressure); - * testSystem.addComponent("water",x1); testSystem.addComponent("MDEA", x2); - * - * logger.info("...........ID............."+ ID); - * - * testSystem.createDatabase(true); testSystem.setMixingRule(4); testSystem.init(0); - * - * double sample1[] = {temperature}; double standardDeviation1[] = {0.1}; double stddev = - * pressure/100.0; SampleValue sample = new SampleValue((pressure), stddev, sample1, - * standardDeviation1); - * - * sample.setFunction(function); sample.setReference(Double.toString(ID)); - * sample.setThermodynamicSystem(testSystem); sampleList.add(sample); } } catch(Exception - * e){ logger.info("database error" + e); } - * - * - * dataSet = database.getResultSet( "SELECT * FROM WaterMDEA WHERE ID>61 AND ID<87"); - * - * try{ int i=0; - * - * logger.info("adding...."); while(dataSet.next()){ i++; - * - * BinaryHVParameterFittingFunction_MDEA function = new - * BinaryHVParameterFittingFunction_MDEA(1,1); function.setInitialGuess(guess); - * - * ID = Double.parseDouble(dataSet.getString("ID")); temperature = - * Double.parseDouble(dataSet.getString("Temperature")); gamma1 = - * Double.parseDouble(dataSet.getString("gamma1")); x1 = - * Double.parseDouble(dataSet.getString("x1")); x2 = - * Double.parseDouble(dataSet.getString("x2")); - * - * - * SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, 1.0); - * testSystem.addComponent("water",x1); testSystem.addComponent("MDEA", x2); - * logger.info("...........ID............."+ ID); - * - * testSystem.createDatabase(true); testSystem.setMixingRule(4); testSystem.init(0); - * - * double sample1[] = {temperature}; double standardDeviation1[] = {0.1}; double stddev = - * gamma1/100.0; SampleValue sample = new SampleValue(gamma1, stddev, sample1, - * standardDeviation1); - * - * sample.setFunction(function); sample.setReference(Double.toString(ID)); - * sample.setThermodynamicSystem(testSystem); sampleList.add(sample); } } catch(Exception - * e){ logger.info("database error" + e); } - */ - - /* - * dataSet = database.getResultSet( "SELECT * FROM WaterMDEA WHERE ID>86"); - * - * try{ int i=0; - * - * logger.info("adding...."); while(dataSet.next()){ i++; - * - * BinaryHVParameterFittingFunction_MDEA function = new - * BinaryHVParameterFittingFunction_MDEA(1,2); function.setInitialGuess(guess); - * - * ID = Double.parseDouble(dataSet.getString("ID")); temperature = - * Double.parseDouble(dataSet.getString("Temperature")); Hm = - * Double.parseDouble(dataSet.getString("HeatOfMixing")); x1 = - * Double.parseDouble(dataSet.getString("x1")); x2 = - * Double.parseDouble(dataSet.getString("x2")); - * - * - * SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, 1.0); - * testSystem.addComponent("water",x1); testSystem.addComponent("MDEA", x2); - * logger.info("...........ID............."+ ID); - * - * testSystem.createDatabase(true); testSystem.setMixingRule(4); testSystem.init(0); - * - * double sample1[] = {temperature}; double standardDeviation1[] = {0.1}; double stddev = - * Hm/100.0; SampleValue sample = new SampleValue(Hm, stddev, sample1, standardDeviation1); - * - * sample.setFunction(function); sample.setReference(Double.toString(ID)); - * sample.setThermodynamicSystem(testSystem); sampleList.add(sample); } } catch(Exception - * e){ logger.info("database error" + e); } - */ - - dataSet = database.getResultSet("SELECT * FROM WaterMDEAactivity WHERE ID<20"); - try { - int i = 0; - logger.info("adding...."); - while (dataSet.next()) { - BinaryHVParameterFittingFunction_MDEA function = - new BinaryHVParameterFittingFunction_MDEA(1, 3); - function.setInitialGuess(guess); - - ID = Double.parseDouble(dataSet.getString("ID")); - act1 = Double.parseDouble(dataSet.getString("act1")); - temperature = Double.parseDouble(dataSet.getString("Temperature")); - x1 = Double.parseDouble(dataSet.getString("x1")); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(temperature, 1); - testSystem.addComponent("water", x1); - testSystem.addComponent("MDEA", 1 - x1); - - logger.info("...........ID............." + ID); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {x1}; - double standardDeviation1[] = {0.1}; - double stddev = act1 / 100.0; - SampleValue sample = new SampleValue(act1, stddev, sample1, standardDeviation1); - - sample.setFunction(function); - sample.setReference(Double.toString(ID)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.info("database error" + e); - } - - dataSet = database.getResultSet("SELECT * FROM WaterMDEAactivity WHERE ID>19"); - try { - int i = 0; - logger.info("adding...."); - while (dataSet.next()) { - BinaryHVParameterFittingFunction_MDEA function = - new BinaryHVParameterFittingFunction_MDEA(1, 4); - function.setInitialGuess(guess); - - ID = Double.parseDouble(dataSet.getString("ID")); - act2 = Double.parseDouble(dataSet.getString("act2")); - temperature = Double.parseDouble(dataSet.getString("Temperature")); - x1 = Double.parseDouble(dataSet.getString("x1")); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(temperature, 1); - testSystem.addComponent("water", x1); - testSystem.addComponent("MDEA", 1 - x1); - - logger.info("...........ID............." + ID); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {x1}; - double standardDeviation1[] = {0.1}; - double stddev = act2 / 100.0; - SampleValue sample = new SampleValue(act2, stddev, sample1, standardDeviation1); - - sample.setFunction(function); - sample.setReference(Double.toString(ID)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.displayGraph(); - optim.displayCurveFit(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/Water_MDEA.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/Water_MDEA.java deleted file mode 100644 index 6e703f094f..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/Water_MDEA.java +++ /dev/null @@ -1,84 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.WaterMDEA; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; -import java.sql.ResultSet; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.thermodynamicOperations.ThermodynamicOperations; -import neqsim.util.database.NeqSimDataBase; - -/** - *

Water_MDEA class.

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class Water_MDEA { - static Logger logger = LogManager.getLogger(Water_MDEA.class); - - /** - *

Constructor for Water_MDEA.

- */ - public Water_MDEA() {} - - /** - *

main.

- * - * @param args the command line arguments - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - double pressure = 1; - double temperature = 25 + 273.16; - double x1, x2; - - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM WaterMDEA"); - - try { - while (dataSet.next()) { - double ID = Double.parseDouble(dataSet.getString("ID")); - pressure = Double.parseDouble(dataSet.getString("Pressure")); - temperature = Double.parseDouble(dataSet.getString("Temperature")); - x1 = Double.parseDouble(dataSet.getString("x1")); - x2 = Double.parseDouble(dataSet.getString("x2")); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(298, pressure); - - testSystem.addComponent("water", x1); - testSystem.addComponent("MDEA", x2); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - double hm = testSystem.getPhase(1).getEnthalpy(); - logger.info(hm); - - try (PrintStream p = new PrintStream( - new FileOutputStream("C:/java/NeqSimSource/water_MDEA.txt", true))) { - p.println(ID + " " + pressure + " " + testSystem.getPressure()); - } catch (FileNotFoundException e) { - logger.error("Could not find file", e); - } - } - } catch (Exception e) { - logger.error("database error" + e); - } - logger.info("Finished"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/Water_MDEA1.java b/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/Water_MDEA1.java deleted file mode 100644 index b9683cfcee..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Procede/WaterMDEA/Water_MDEA1.java +++ /dev/null @@ -1,87 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Procede.WaterMDEA; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.thermodynamicOperations.ThermodynamicOperations; - -/** - *

- * Water_MDEA1 class. - *

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class Water_MDEA1 { - static Logger logger = LogManager.getLogger(Water_MDEA1.class); - - /** - *

- * Constructor for Water_MDEA1. - *

- */ - public Water_MDEA1() {} - - /** - *

- * main. - *

- * - * @param args the command line arguments - */ - public static void main(String[] args) { - double temperature = 40 + 273.16; - double pressure = 1.0; - double x = 0; - - for (x = 0.85; x <= 1; x += 0.010) { - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(temperature, pressure); - testSystem.addComponent("water", x); - testSystem.addComponent("MDEA", 1 - x); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - testSystem.init(1); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - // double aMDEA = testSystem.getPhase(1).getActivityCoefficient(1); - // double awater = testSystem.getPhase(1).getActivityCoefficient(0); - // double yMDEA = testSystem.getPhase(0).getComponent(1).getx(); - // double Hm = testSystem.getPhase(1).getHresTP(); - // logger.info("Activity MDEA "+aMDEA+" "+yMDEA); - logger.info("pressure " + testSystem.getPressure()); - - /* - * logger.info("Excess Heat kJ "+Hm/1000); - * logger.info("Excess Heat kJ "+testSystem.getPhase(1).getComponent(0). - * getHresTP(temperature)/1000); - * logger.info("Excess Heat kJ "+testSystem.getPhase(1).getComponent(1). - * getHresTP(temperature)/1000); - */ - try (PrintStream p = new PrintStream( - new FileOutputStream("C:/java/NeqSimSource/Patrick.txt", true))) { - // p.println(x+" "+testSystem.getPhase(0).getComponent(0).getx()+" - // "+testSystem.getPhase(0).getComponent(1).getx()); - p.println(x + " " + testSystem.getPhase(0).getComponent(1).getx() + " " - + testSystem.getPressure() + " " - + testSystem.getPhase(0).getComponent(1).getFugacityCoefficient()); - // p.println(x+" "+aMDEA+" "+awater); - } catch (FileNotFoundException e) { - logger.error("Could not find file" + e.getMessage()); - } - } - logger.info("Finished"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/Acids.java b/src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/Acids.java deleted file mode 100644 index a81e7f4d6e..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/Acids.java +++ /dev/null @@ -1,186 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Statoil.Acids; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermodynamicOperations.ThermodynamicOperations; - -/** - *

Acids class.

- * - * @author agrawalnj - * @version $Id: $Id - */ -public class Acids { - static Logger logger = LogManager.getLogger(Acids.class); - - /** - *

Constructor for Acids.

- */ - public Acids() {} - - /** - *

main.

- * - * @param args the command line arguments - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - int j; - int AcidNumb = 0, AcnNumb = 0, CO2Numb = 0, WaterNumb = 0, MDEANumb = 0, HCO3Numb = 0, - MDEAHpNumb = 0, CO3Numb = 0, OHNumb; - double nCO2, nMDEA, nHCO3, nCO3, nMDEAp, nOH, nHAc, nAcn; - double aCO2, aMDEA, aHCO3, awater, aMDEAp, aOH, aCO3, aHAc, aAcn; - double error, newValue, oldValue, guess, dx, dP, Pold, Pnew; - double PressureCO2, n1, n2, n3, n4; - double MDEAwt = 39.43955905; - double Acidwt = 2.0; - double loading = 0.2; - double temperature = 273.16 + 65; - PressureCO2 = 1; - - for (loading = 1e-5; loading <= 1.0;) { - // For acid systems - n4 = MDEAwt / 119.16; - n3 = Acidwt / 60.05; - n2 = (100 - MDEAwt - Acidwt) / 18.015; - n1 = loading * n4; - - SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, PressureCO2); - - testSystem.addComponent("CO2", n1); - testSystem.addComponent("AceticAcid", n3); - testSystem.addComponent("MDEA", n4); - testSystem.addComponent("water", n2); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - j = 0; - do { - CO2Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("CO2")); - - j = 0; - do { - MDEANumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("MDEA")); - - j = 0; - do { - WaterNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("water")); - - j = 0; - do { - HCO3Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("HCO3-")); - - j = 0; - do { - CO3Numb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("CO3--")); - - j = 0; - do { - OHNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("OH-")); - - j = 0; - do { - MDEAHpNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("MDEA+")); - - j = 0; - do { - AcidNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("AceticAcid")); - - j = 0; - do { - AcnNumb = j; - j++; - } while (!testSystem.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("Ac-")); - - logger.info("CO2 number " + CO2Numb); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - nCO2 = testSystem.getPhase(1).getComponent(CO2Numb).getx(); - nMDEA = testSystem.getPhase(1).getComponent(MDEANumb).getx(); - nHCO3 = testSystem.getPhase(1).getComponent(HCO3Numb).getx(); - nCO3 = testSystem.getPhase(1).getComponent(CO3Numb).getx(); - nMDEAp = testSystem.getPhase(1).getComponent(MDEAHpNumb).getx(); - nOH = testSystem.getPhase(1).getComponent(OHNumb).getx(); - nHAc = testSystem.getPhase(1).getComponent(AcidNumb).getx(); - nAcn = testSystem.getPhase(1).getComponent(AcnNumb).getx(); - - aMDEA = testSystem.getPhase(1).getActivityCoefficient(MDEANumb, WaterNumb); - awater = testSystem.getPhase(1).getActivityCoefficient(WaterNumb); - aCO2 = testSystem.getPhase(1).getActivityCoefficient(CO2Numb, WaterNumb); - aMDEAp = testSystem.getPhase(1).getActivityCoefficient(MDEAHpNumb, WaterNumb); - aHCO3 = testSystem.getPhase(1).getActivityCoefficient(HCO3Numb, WaterNumb); - aOH = testSystem.getPhase(1).getActivityCoefficient(OHNumb, WaterNumb); - aCO3 = testSystem.getPhase(1).getActivityCoefficient(CO3Numb, WaterNumb); - aHAc = testSystem.getPhase(1).getActivityCoefficient(AcidNumb, WaterNumb); - aAcn = testSystem.getPhase(1).getActivityCoefficient(AcnNumb, WaterNumb); - - try (PrintStream p = new PrintStream( - new FileOutputStream("C:/Documents and Settings/agrawalnj/Desktop/Statoil/Statoil.txt", true))) { - p.println(loading + " " - + testSystem.getPressure() - * testSystem.getPhase(0).getComponent(CO2Numb).getx() - + " " + nCO2 + " " + nMDEA + " " + nHCO3 + " " + nMDEAp + " " + nCO3 + " " - + nOH + " " + nHAc + " " + nAcn); - } catch (FileNotFoundException e) { - logger.error("Could not find file " + e.getMessage()); - } - - try (PrintStream p = new PrintStream( - new FileOutputStream("C:/Documents and Settings/agrawalnj/Desktop/Statoil/activity.txt", true))) { - p.println(loading + " " + awater + " " + aCO2 + " " + aMDEA + " " + aHCO3 + " " - + aMDEAp + " " + aCO3 + " " + aOH + " " + aHAc + " " + aAcn); - } catch (FileNotFoundException e) { - logger.error("Could not find file" + e.getMessage()); - } - - if (loading < 0.1) { - loading *= 10; - } else { - loading += 0.1; - } - } - - logger.info("Finished"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/IonicInteractionParameterFittingFunctionAcid.java b/src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/IonicInteractionParameterFittingFunctionAcid.java deleted file mode 100644 index 965c94bd43..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/IonicInteractionParameterFittingFunctionAcid.java +++ /dev/null @@ -1,172 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Statoil.Acids; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * IonicInteractionParameterFittingFunctionAcid class. - *

- * - * @author Neeraj - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunctionAcid extends LevenbergMarquardtFunction { - int type = 0; - int phase = 0; - static Logger logger = LogManager.getLogger(IonicInteractionParameterFittingFunctionAcid.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunctionAcid. - *

- */ - public IonicInteractionParameterFittingFunctionAcid() {} - - /** - *

- * Constructor for IonicInteractionParameterFittingFunctionAcid. - *

- * - * @param phase a int - * @param type a int - */ - public IonicInteractionParameterFittingFunctionAcid(int phase, int type) { - this.phase = phase; - this.type = type; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - return system.getPressure(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - @SuppressWarnings("unused") - public void setFittingParams(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0, CO3numb = 0, - OHnumb = 0, AcidNumb = 0, AcnegNumb = 0; - - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("MDEA+")); - - j = 0; - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("MDEA")); - - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("CO2")); - - j = 0; - do { - AcidNumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("AceticAcid")); - - j = 0; - do { - AcnegNumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("Ac-")); - - j = 0; - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("HCO3-")); - - j = 0; - do { - CO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO3--")); - - j = 0; - do { - OHnumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("OH-")); - - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("water")); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, Waternumb, 0.0004092282); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, Waternumb, 0.0004092282); - - if (((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule() != null) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(0, 1, 0.0004092282); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(1, 0, 0.0004092282); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(0, 1, 0.0004092282); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(1, 0, 0.0004092282); - } - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, HCO3numb, -0.0001293147); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, HCO3numb, -0.0001293147); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, MDEANumb, 0.0019465801); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, MDEANumb, 0.0019465801); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, 0.0002481365); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, 0.0002481365); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO3numb, -0.0003581646); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO3numb, -0.0003581646); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, OHnumb, 1e-10); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, OHnumb, 1e-10); - - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, AcnegNumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, AcnegNumb, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/TestIonicInteractionParameterFittingAcid.java b/src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/TestIonicInteractionParameterFittingAcid.java deleted file mode 100644 index ab798c50b3..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/Statoil/Acids/TestIonicInteractionParameterFittingAcid.java +++ /dev/null @@ -1,96 +0,0 @@ -package neqsim.thermo.util.parameterFitting.Statoil.Acids; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

TestIonicInteractionParameterFittingAcid class.

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestIonicInteractionParameterFittingAcid { - static Logger logger = LogManager.getLogger(TestIonicInteractionParameterFittingAcid.class); - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM Sleipner"); - int error = 1; - double ID, x1, x2, x3, x4, temperature, pressure; - - double guess[] = {0.0000708122}; - - try { - int i = 0; - logger.info("adding...."); - while (dataSet.next()) { - i++; - IonicInteractionParameterFittingFunctionAcid function = - new IonicInteractionParameterFittingFunctionAcid(); - - ID = Integer.parseInt(dataSet.getString("ID")); - pressure = Double.parseDouble(dataSet.getString("Pressure")); - temperature = Double.parseDouble(dataSet.getString("Temperature")); - x1 = Double.parseDouble(dataSet.getString("x1")); - x2 = Double.parseDouble(dataSet.getString("x2")); - x3 = Double.parseDouble(dataSet.getString("x3")); - x4 = Double.parseDouble(dataSet.getString("x4")); - - SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, pressure); - testSystem.addComponent("CO2", x1); - testSystem.addComponent("AceticAcid", x3); - testSystem.addComponent("MDEA", x4); - testSystem.addComponent("water", x2); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {x1 / x4}; - double standardDeviation1[] = {0.01}; - - if (ID == 162) { - error = 5; - } else { - error = 1; - } - - SampleValue sample = new SampleValue(pressure, error * pressure / 100.0, sample1, - standardDeviation1); - - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setDescription(Double.toString(ID)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - optim.solve(); - optim.displayCurveFit(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/BinaryEosFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/BinaryEosFunction.java deleted file mode 100644 index 42b734708a..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/BinaryEosFunction.java +++ /dev/null @@ -1,75 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * BinaryEosFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryEosFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for BinaryEosFunction. - *

- */ - public BinaryEosFunction() { - params = new double[1]; - params[0] = -0.34; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.setPressure(dependentValues[1]); - thermoOps.TPflash(); - // System.out.println("pres CO2: " + - // system.getPressure()*system.getPhases()[0].getComponents()[0].getx()); - return system.getPressure() * system.getPhases()[0].getComponents()[0].getx(); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule().setBinaryInteractionParameter(0, - 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule().setBinaryInteractionParameter(0, - 1, value); - } - - /** {@inheritDoc} */ - @Override - public double getFittingParams(int i) { - return params[i]; - } - - /** {@inheritDoc} */ - @Override - public double[] getFittingParams() { - return params; - } - - /** {@inheritDoc} */ - @Override - public int getNumberOfFittingParams() { - return params.length; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(double[] value) { - for (int i = 0; i < value.length; i++) { - params[i] = value[i]; - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value[i]); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value[i]); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/BinaryCPAparameterFitToActivityCoefficientFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/BinaryCPAparameterFitToActivityCoefficientFunction.java deleted file mode 100644 index 7b93ee3049..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/BinaryCPAparameterFitToActivityCoefficientFunction.java +++ /dev/null @@ -1,73 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * BinaryCPAparameterFitToActivityCoefficientFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryCPAparameterFitToActivityCoefficientFunction - extends EosInteractionParameterFittingFunction { - /** - *

- * Constructor for BinaryCPAparameterFitToActivityCoefficientFunction. - *

- */ - public BinaryCPAparameterFitToActivityCoefficientFunction() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(0); - system.init(1); - - // double fug = - // system.getPhases()[1].getComponents()[0].getFugacityCoefficient(); - // double pureFug = system.getPhases()[1].getPureComponentFugacity(0); - double val = system.getPhases()[1].getActivityCoefficient(1); - // System.out.println("activity: " + val); - return val; - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i == 10) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value); - } - if (i == 2) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameterT1(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameterT1(0, 1, value); - } - - if (i == 0) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameterij(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameterij(0, 1, value); - } - - if (i == 1) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameterji(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameterji(0, 1, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToDewPointData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToDewPointData.java deleted file mode 100644 index e382de792c..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToDewPointData.java +++ /dev/null @@ -1,116 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * CPAParameterFittingToDewPointData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class CPAParameterFittingToDewPointData extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(CPAParameterFittingToDewPointData.class); - - /** - *

- * Constructor for CPAParameterFittingToDewPointData. - *

- */ - public CPAParameterFittingToDewPointData() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.waterPrecipitationTemperature(); - } catch (Exception e) { - logger.error("error", e); - } - // System.out.println("x " + system.getPhases()[1].getComponents()[0].getx()); - return system.getTemperature(); // lucia data - // return system.getPhases()[1].getComponents()[0].getx(); // for MEG - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i == 0) { - // ((PhaseEosInterface)system.getPhases()[0]).getMixingRule().setBinaryInteractionParameter(0,1, - // value); - // ((PhaseEosInterface)system.getPhases()[1]).getMixingRule().setBinaryInteractionParameter(0,1, - // value); - } - if (i == 2) { - system.getPhases()[0].getComponents()[1].seta(value * 1e4); - system.getPhases()[1].getComponents()[1].seta(value * 1e4); - } - if (i == 1) { - system.getPhases()[0].getComponents()[1].setb(value); - system.getPhases()[1].getComponents()[1].setb(value); - } - if (i == 3) { - system.getPhase(0).getComponent(1).getAttractiveTerm().setm(value); - system.getPhases()[1].getComponents()[1].getAttractiveTerm().setm(value); - } - if (i == 5) { - system.getPhase(0).getComponent(1).setAssociationEnergy(value); - system.getPhase(1).getComponent(1).setAssociationEnergy(value); - } - if (i == 4) { - system.getPhase(0).getComponent(1).setAssociationVolume(value); - system.getPhase(1).getComponent(1).setAssociationVolume(value); - } - } - - /** - *

- * setFittingParams2. - *

- * - * @param i a int - * @param value a double - */ - public void setFittingParams2(int i, double value) { - params[i] = value; - - if (i == 0) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(0, 1, value); - } - if (i == 1) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(1, 0, value); - } - if (i == 2) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - } - if (i == 3) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - } - if (i == 4) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHValphaParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHValphaParameter(1, 0, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToSolubilityData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToSolubilityData.java deleted file mode 100644 index 033c5c927b..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToSolubilityData.java +++ /dev/null @@ -1,181 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * CPAParameterFittingToSolubilityData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class CPAParameterFittingToSolubilityData extends LevenbergMarquardtFunction { - int phase = 1; - int component = 0; - - /** - *

- * Constructor for CPAParameterFittingToSolubilityData. - *

- */ - public CPAParameterFittingToSolubilityData() { - params = new double[1]; - } - - /** - *

- * Constructor for CPAParameterFittingToSolubilityData. - *

- * - * @param phase a int - * @param component a int - */ - public CPAParameterFittingToSolubilityData(int phase, int component) { - this.phase = phase; - this.component = component; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - thermoOps.TPflash(); - // system.display(); - - // System.out.println("x " + system.getPhases()[1].getComponents()[0].getx()); - return system.getPhase(phase).getComponent(component).getx(); // for lucia data - // return system.getPhases()[0].getComponents()[1].getx(); // for MEG - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i == 0) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value); - - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameterij(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameterij(0, 1, value); - } - if (i == 0) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value); - } - if (i == 1) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameterT1(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameterT1(0, 1, value); - } - - if (i == 20) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameterij(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameterij(0, 1, value); - } - - if (i == 11) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameterji(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameterji(0, 1, value); - } - } - - /** - *

- * setFittingParams3. - *

- * - * @param i a int - * @param value a double - */ - public void setFittingParams3(int i, double value) { - params[i] = value; - if (i == 0) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value); - } - if (i == 2) { - system.getPhases()[0].getComponents()[1].seta(value * 1e4); - system.getPhases()[1].getComponents()[1].seta(value * 1e4); - } - if (i == 1) { - system.getPhases()[0].getComponents()[1].setb(value); - system.getPhases()[1].getComponents()[1].setb(value); - } - if (i == 3) { - system.getPhase(0).getComponent(1).getAttractiveTerm().setm(value); - system.getPhases()[1].getComponents()[1].getAttractiveTerm().setm(value); - } - if (i == 5) { - system.getPhase(0).getComponent(1).setAssociationEnergy(value); - system.getPhase(1).getComponent(1).setAssociationEnergy(value); - } - if (i == 4) { - system.getPhase(0).getComponent(1).setAssociationVolume(value); - system.getPhase(1).getComponent(1).setAssociationVolume(value); - } - } - - /** - *

- * setFittingParams2. - *

- * - * @param i a int - * @param value a double - */ - public void setFittingParams2(int i, double value) { - params[i] = value; - - if (i == 0) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(0, 1, value); - } - if (i == 1) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(1, 0, value); - } - if (i == 2) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - } - if (i == 3) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - } - if (i == 4) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHValphaParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHValphaParameter(1, 0, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToSolubilityData_Vap.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToSolubilityData_Vap.java deleted file mode 100644 index 79eaddc37f..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/CPAParameterFittingToSolubilityData_Vap.java +++ /dev/null @@ -1,108 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * CPAParameterFittingToSolubilityData_Vap class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class CPAParameterFittingToSolubilityData_Vap extends LevenbergMarquardtFunction { - /** - *

- * Constructor for CPAParameterFittingToSolubilityData_Vap. - *

- */ - public CPAParameterFittingToSolubilityData_Vap() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - thermoOps.TPflash(); - // System.out.println("x " + system.getPhases()[1].getComponents()[0].getx()); - return system.getPhase(0).getComponent("water").getx() * 1.0e6; // lucia data - // return system.getPhases()[1].getComponents()[0].getx(); // for MEG - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i == 0) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameter(0, 1, value); - } - if (i == 2) { - system.getPhases()[0].getComponents()[1].seta(value * 1e4); - system.getPhases()[1].getComponents()[1].seta(value * 1e4); - } - if (i == 1) { - system.getPhases()[0].getComponents()[1].setb(value); - system.getPhases()[1].getComponents()[1].setb(value); - } - if (i == 3) { - system.getPhase(0).getComponent(1).getAttractiveTerm().setm(value); - system.getPhases()[1].getComponents()[1].getAttractiveTerm().setm(value); - } - if (i == 5) { - system.getPhase(0).getComponent(1).setAssociationEnergy(value); - system.getPhase(1).getComponent(1).setAssociationEnergy(value); - } - if (i == 4) { - system.getPhase(0).getComponent(1).setAssociationVolume(value); - system.getPhase(1).getComponent(1).setAssociationVolume(value); - } - } - - /** - *

- * setFittingParams2. - *

- * - * @param i a int - * @param value a double - */ - public void setFittingParams2(int i, double value) { - params[i] = value; - - if (i == 0) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(0, 1, value); - } - if (i == 1) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(1, 0, value); - } - if (i == 2) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - } - if (i == 3) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - } - if (i == 4) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHValphaParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHValphaParameter(1, 0, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/EosInteractionParameterFittingFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/EosInteractionParameterFittingFunction.java deleted file mode 100644 index d87ccb51f7..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/EosInteractionParameterFittingFunction.java +++ /dev/null @@ -1,59 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * EosInteractionParameterFittingFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class EosInteractionParameterFittingFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for EosInteractionParameterFittingFunction. - *

- */ - public EosInteractionParameterFittingFunction() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - double calcK = 0; - double expK = 0; - expK = dependentValues[1] / dependentValues[0]; - - system.init(0); - system.getPhases()[1].getComponents()[0].setx(dependentValues[0]); - system.getPhases()[1].getComponents()[1].setx(1.0 - dependentValues[0]); - system.getPhases()[0].getComponents()[0].setx(dependentValues[1]); - system.getPhases()[0].getComponents()[1].setx(1.0 - dependentValues[1]); - system.init(1); - system.getPhases()[0].getComponents()[0].setK(Math.exp( - Math.log(system.getPhases()[1].getComponents()[0].getFugacityCoefficient()) - Math - .log(system.getPhases()[0].getComponents()[0].getFugacityCoefficient()))); - system.getPhases()[1].getComponents()[0].setK(Math.exp( - Math.log(system.getPhases()[1].getComponents()[0].getFugacityCoefficient()) - Math - .log(system.getPhases()[0].getComponents()[0].getFugacityCoefficient()))); - calcK = system.getPhases()[0].getComponents()[0].getK(); - - double diff = expK - calcK; - // System.out.println("diff: " + diff); - return diff; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule().setBinaryInteractionParameter(0, - 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule().setBinaryInteractionParameter(0, - 1, value); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestBinaryCPAfitToActivityCoefficientDB.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestBinaryCPAfitToActivityCoefficientDB.java deleted file mode 100644 index c20ad1cc2c..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestBinaryCPAfitToActivityCoefficientDB.java +++ /dev/null @@ -1,86 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPAstatoil; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryCPAfitToActivityCoefficientDB class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryCPAfitToActivityCoefficientDB implements Cloneable { - static Logger logger = LogManager.getLogger(TestBinaryCPAfitToActivityCoefficientDB.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM activitycoefficienttable WHERE ((Component1='TEG' AND Component2='water') OR (Component1='water' AND Component2='TEG')) AND ReferenceID<>'shell data'"); - - try { - while (dataSet.next()) { - BinaryCPAparameterFitToActivityCoefficientFunction function = - new BinaryCPAparameterFitToActivityCoefficientFunction(); - - double x1 = Double.parseDouble(dataSet.getString("x1")) * 100; - double x2 = Double.parseDouble(dataSet.getString("x2")) * 100; - SystemInterface testSystem = new SystemSrkCPAstatoil( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.addComponent(dataSet.getString("Component1"), x1); - testSystem.addComponent(dataSet.getString("Component2"), x2); - // testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.init(0); - - double sample1[] = {x2, testSystem.getTemperature()}; - double standardDeviation1[] = {x2 / 100.0}; - double val = Double.parseDouble(dataSet.getString("gamma2")); - SampleValue sample = new SampleValue(val, val / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // function.setDatabaseParameters(); - // double guess[] = {-1466.3924707953, 1197.4327552750, 5.9188456398, - // -7.2410712156, 0.2127650110}; - double guess[] = {-0.241488376, -0.344136439, 0.0004315217};// ,0.02};//, - // -55};//,-30}; - - function.setInitialGuess(guess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToDewPointData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToDewPointData.java deleted file mode 100644 index 8cd2e9c5e8..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToDewPointData.java +++ /dev/null @@ -1,99 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemGERGwaterEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestCPAParameterFittingToDewPointData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCPAParameterFittingToDewPointData { - static Logger logger = LogManager.getLogger(TestCPAParameterFittingToDewPointData.class); - - /** - *

- * Constructor for TestCPAParameterFittingToDewPointData. - *

- */ - public TestCPAParameterFittingToDewPointData() {} - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM waterdewpointpaper WHERE gascomponent='nitrogen' AND reference='Gil'"); - - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 500) { - p++; - CPAParameterFittingToDewPointData function = - new CPAParameterFittingToDewPointData(); - - // SystemInterface testSystem = new - // SystemSrkCPAstatoil(Double.parseDouble(dataSet.getString("temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))*10.0); - SystemInterface testSystem = - new SystemGERGwaterEos(Double.parseDouble(dataSet.getString("temperature")), - Double.parseDouble(dataSet.getString("Pressure")) * 10.0); - // SystemInterface testSystem = new SystemSrkEos(290, 1.0); - double valueppm = Double.parseDouble(dataSet.getString("ywater")) * 1.0e3; - testSystem.addComponent(dataSet.getString("gascomponent"), 1.0 - valueppm / 1.0e6); - testSystem.addComponent("water", valueppm / 1.0e6); - - // testSystem.setSolidPhaseCheck(true); - // testSystem.setHydrateCheck(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(8); - - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - - double standardDeviation1[] = {0.13}; - SampleValue sample = new SampleValue(testSystem.getTemperature(), 1.0, sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setDescription(Double.toString(valueppm)); - sample.setReference(dataSet.getString("reference")); - - double parameterGuess[] = {0.001}; // cpa - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityData.java deleted file mode 100644 index 0626c45c04..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityData.java +++ /dev/null @@ -1,117 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPAstatoil; -import neqsim.util.database.NeqSimExperimentDatabase; - -/** - *

- * TestCPAParameterFittingToSolubilityData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCPAParameterFittingToSolubilityData { - static Logger logger = LogManager.getLogger(TestCPAParameterFittingToSolubilityData.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimExperimentDatabase database = new NeqSimExperimentDatabase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM binarySolubilityData WHERE ComponentSolute='CO2' AND ComponentSolvent='water' AND Reference='Houghton1957' AND Reference<>'Nighswander1989' AND Temperature>283.15 AND Temperature<373.15 AND Pressure<60.01325 ORDER BY Temperature"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // binarysolubilitydata WHERE ComponentSolute='methane' AND - // ComponentSolvent='water' AND Temperature>278.0 AND Temperature<350.0"); - double parameterGuess[] = {-0.27686, 0.001121};// , 0.000117974}; //cpa - - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 200) { - p++; - CPAParameterFittingToSolubilityData function = - new CPAParameterFittingToSolubilityData(1, 0); - - SystemInterface testSystem = new SystemSrkCPAstatoil(290, 1.0); - // SystemInterface testSystem = new SystemSrkEos(290, 1.0); - testSystem.addComponent("CO2", 1.0); - testSystem.addComponent("water", 10.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.setMultiPhaseCheck(true); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.13, 0.12}; - double expVal = Double.parseDouble(dataSet.getString("x1")); - SampleValue sample = new SampleValue(expVal, - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - function.setInitialGuess(parameterGuess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // double parameterGuess[] = {-0.130}; //srk - // double parameterGuess[] = {-0.0668706940}; //cpa - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - /* - * - * dataSet = database.getResultSet( - * "SELECT * FROM BinaryEquilibriumData WHERE Component1='methane' AND Component2='MEG'" ); - * try { int p = 0; logger.info("adding...."); while (!dataSet.next() && p < 0) { p++; - * CPAParameterFittingToSolubilityData function = new - * CPAParameterFittingToSolubilityData(0,1); - * - * SystemInterface testSystem = new SystemSrkCPAstatoil(290, 1.0); //SystemInterface - * testSystem = new SystemSrkEos(290, 1.0); testSystem.addComponent("methane", 1.0); - * testSystem.addComponent("MEG", 1.0); //testSystem.createDatabase(true); - * testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature") )); - * testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - * testSystem.setMixingRule(10); testSystem.init(0); double sample1[] = - * {testSystem.getPressure(), testSystem.getTemperature()}; double standardDeviation1[] = - * {0.13}; pressure double value = Double.parseDouble(dataSet.getString("y2")); SampleValue - * sample = new SampleValue(value, value/100.0, sample1, standardDeviation1); - * sample.setFunction(function); sample.setThermodynamicSystem(testSystem); - * sample.setReference(Double.toString(testSystem.getTemperature())); //double - * parameterGuess[] = {-0.130}; //srk // double parameterGuess[] = {-0.0668706940}; //cpa - * function.setInitialGuess(parameterGuess); sampleList.add(sample); } } catch (Exception e) - * { logger.error("database error" + e); } - */ - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.calcDeviation(); - optim.displayResult(); - optim.displayCurveFit(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityData_Lucia.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityData_Lucia.java deleted file mode 100644 index 6c6af6ab9f..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityData_Lucia.java +++ /dev/null @@ -1,191 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPA; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestCPAParameterFittingToSolubilityData_Lucia class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCPAParameterFittingToSolubilityData_Lucia { - static Logger logger = - LogManager.getLogger(TestCPAParameterFittingToSolubilityData_Lucia.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM luciadata8 WHERE Component='methane' AND Temperature>410.15 AND Pressure<100000000 AND L2<>NULL AND L2>0.00000001 ORDER BY Temperature,Pressure");// AND - // Reference='Houghton1957' - // AND - // Reference<>'Nighswander1989' - // AND - // Temperature>278.15 - // AND - // Temperature<383.15 - // AND - // Pressure<60.01325"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='nitrogen' AND Temperature<390 AND L2<>NULL AND L2>0.0000000001 - // ORDER BY Temperature,Pressure"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='CO2' AND Temperature<390 AND L2<>NULL AND L2>0.0000000001 ORDER BY - // Temperature,Pressure"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='ethane' AND Temperature<390 AND Pressure<10000000 AND L2<>NULL AND - // L2>0.0000000001 ORDER BY Temperature,Pressure"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='propane' AND Temperature<390 AND Pressure<15000000 AND L2<>NULL - // AND L2>0.0000000001 AND ID>2204 AND ID<2410 ORDER BY Temperature,Pressure"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // binarySolubilityData WHERE ComponentSolute='methane' AND - // ComponentSolvent='water'"); - - try { - int p = 0; - logger.info("adding...."); - while (!dataSet.next() && p < 50) { - p++; - CPAParameterFittingToSolubilityData function = - new CPAParameterFittingToSolubilityData(); - - SystemInterface testSystem = - new SystemSrkCPA(Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure")) / 1.0e5); - // SystemInterface testSystem = new - // SystemSrkEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1.0e5); - testSystem.addComponent("methane", 1.0); - // testSystem.addComponent("propane", 1.0); - testSystem.addComponent("water", 10.0); - // testSystem.createDatabase(true); - testSystem.setMixingRule(7); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = Double.parseDouble(dataSet.getString("L2")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem);// 34.7 - sample.setReference(Double.toString(testSystem.getTemperature())); - // double parameterGuess[] = {0.05155112588}; //srk - double parameterGuess[] = {0.0459393339}; // cpa-srk- metan 23.658199 abs dev bias - // -6.267% - // double parameterGuess[] = {0.1592294845}; //cpa-pr - metan 21.9 - // double parameterGuess[] = {-0.059201934}; //cpa-srk - nitrogen - // double parameterGuess[] = {0.1}; - // double parameterGuess[] = {-0.059201934}; //cpa-pr - nitrogen 29.20534 abs - // bias 23.93392 - // double parameterGuess[] = {-0.0586254634}; //cpa-srk - CO2 abs 18.5043 bias - // -11.3665 - // double parameterGuess[] = {0.0160496243}; //cpa-pr - CO2 - // double parameterGuess[] = {0.13287685}; //srk - - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error", e); - } - - // dataSet = database.getResultSet( "SELECT * FROM LuciaData WHERE - // Component='methane' AND ID<3000 AND Temperature<380 AND Pressure<100000000 - // AND Y<>NULL AND Y>0.00000001 ORDER BY Temperature,Pressure");// AND - // Reference='Houghton1957' AND Reference<>'Nighswander1989' AND - // Temperature>278.15 AND Temperature<383.15 AND Pressure<60.01325"); - dataSet = database.getResultSet( - "SELECT * FROM LuciaData8 WHERE Component='methane' AND Temperature>273.15 AND Pressure<153000000 AND Y<>NULL AND Y>0.000000001 ORDER BY Temperature,Pressure"); - // dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='nitrogen' AND Temperature<390 AND Y<>NULL AND Y>0.000000001 ORDER - // BY Temperature,Pressure"); - // dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='CO2' AND Temperature>310 AND Y<>NULL AND Y>0.000000001 ORDER BY - // Temperature,Pressure"); - // dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='ethane' AND Temperature<390 AND Pressure<10000000 AND Y<>NULL AND - // Y>0.000000001 ORDER BY Temperature,Pressure"); - // dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='propane' AND Temperature<390 AND Pressure<15000000 AND Y<>NULL AND - // Y>0.000000001 AND ID>2204 AND ID<2410 ORDER BY Temperature,Pressure"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // binarySolubilityData WHERE ComponentSolute='methane' AND - // ComponentSolvent='water'"); - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 150) { - p++; - CPAParameterFittingToSolubilityData_Vap function = - new CPAParameterFittingToSolubilityData_Vap(); - - SystemInterface testSystem = - new SystemSrkCPA(Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure")) / 1.0e5); - // SystemInterface testSystem = new - // SystemSrkEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1.0e5); - testSystem.addComponent("methane", 1.0); - // testSystem.addComponent("propane", 1.0); - testSystem.addComponent("water", 10.0); - // testSystem.createDatabase(true); - testSystem.init(0); - testSystem.setMixingRule(7); - - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = 1.0 - Double.parseDouble(dataSet.getString("Y")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // double parameterGuess[] = {0.0459393339}; //cpa-srk- metan 23.658199 abs dev - // bias -6.267% - double parameterGuess[] = {0.0459393339}; // cpa-pr - metan - // double parameterGuess[] = {-0.059201934}; //cpa-srk - nitrogen - // double parameterGuess[] = {0.1}; - // double parameterGuess[] = {0.2413992410}; //cpa-pr - nitrogen - // double parameterGuess[] = {-0.0586254634}; //cpa-srk - CO2 12.0 - // double parameterGuess[] = {0.0160496243}; //cpa-pr - CO2 - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error", e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityGlycolHC.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityGlycolHC.java deleted file mode 100644 index 9f5ec66852..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestCPAParameterFittingToSolubilityGlycolHC.java +++ /dev/null @@ -1,139 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestCPAParameterFittingToSolubilityGlycolHC class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCPAParameterFittingToSolubilityGlycolHC { - static Logger logger = LogManager.getLogger(TestCPAParameterFittingToSolubilityGlycolHC.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase();// AND reference<>'Lindboe2002' - ResultSet dataSet = database.getResultSet( - "SELECT * FROM hcglycollldata WHERE comp1='n-heptane' AND comp2='MEG' AND reference='Lindboe2002' ORDER BY Temperature,Pressure");// AND - // Reference='Houghton1957' - // AND - // Reference<>'Nighswander1989' - // AND - // Temperature>278.15 - // AND - // Temperature<383.15 - // AND - // Pressure<60.01325"); - // double parameterGuess[] = {0.0471326591, 5.14, 10.819, 0.6744, 0.0141}; - // double parameterGuess[] = {0.0602997387, 5.2137117933, 10.3039876875, - // 0.6714377099, 0.0178639622}; // fitted to all data - double parameterGuess[] = {1924, 4938};// , -1.11, 1.24}; - // double parameterGuess[] = {0.0471326591}; - - try { - int p = 0; - logger.info("adding...."); - while (!dataSet.next() && p < 50) { - p++; - CPAParameterFittingToSolubilityData function = - new CPAParameterFittingToSolubilityData(); - - // SystemInterface testSystem = new - // SystemSrkCPAs(Double.parseDouble(dataSet.getString("temperature"))+273.15, - // Double.parseDouble(dataSet.getString("pressure"))); - SystemInterface testSystem = new SystemSrkEos( - Double.parseDouble(dataSet.getString("temperature")) + 273.15, - Double.parseDouble(dataSet.getString("pressure"))); - - testSystem.addComponent("n-heptane", 1.0); - testSystem.addComponent("MEG", 10.0); - // testSystem.createDatabase(true); - // testSystem.setMixingRule(7); - testSystem.setMixingRule(4); - testSystem.init(0); - double sample1[] = {testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = Double.parseDouble(dataSet.getString("x-glyinhc")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem);// 34.7 - sample.setReference(Double.toString(testSystem.getTemperature())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM HCGlycolLLdata WHERE comp1='n-heptane' AND comp2='MEG' AND reference='Lindboe2002' ORDER BY Temperature,Pressure"); - - try { - int p = 0; - logger.info("adding...."); - while (!dataSet.next() && p < 50) { - p++; - CPAParameterFittingToSolubilityData_Vap function = - new CPAParameterFittingToSolubilityData_Vap(); - - // SystemInterface testSystem = new - // SystemSrkCPAs(Double.parseDouble(dataSet.getString("temperature"))+273.15, - // Double.parseDouble(dataSet.getString("pressure"))); - SystemInterface testSystem = new SystemSrkEos( - Double.parseDouble(dataSet.getString("temperature")) + 273.15, - Double.parseDouble(dataSet.getString("pressure"))); - - testSystem.addComponent("n-heptane", 1.00); - testSystem.addComponent("MEG", 10.0); - testSystem.init(0); - testSystem.setMixingRule(4); - double sample1[] = {testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = Double.parseDouble(dataSet.getString("x-hcinglyc")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestEosInteractionParameterFitting.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestEosInteractionParameterFitting.java deleted file mode 100644 index acb14c6ac0..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestEosInteractionParameterFitting.java +++ /dev/null @@ -1,85 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestEosInteractionParameterFitting class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestEosInteractionParameterFitting { - static Logger logger = LogManager.getLogger(TestEosInteractionParameterFitting.class); - - /** - *

- * Constructor for TestEosInteractionParameterFitting. - *

- */ - public TestEosInteractionParameterFitting() {} - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM binaryequilibriumdata WHERE Component1='methane' AND Component2='ethane'"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - - try { - logger.info("adding...."); - while (dataSet.next()) { - EosInteractionParameterFittingFunction function = - new EosInteractionParameterFittingFunction(); - double guess[] = {0.01}; - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkEos(280, 0.01); - testSystem.addComponent(dataSet.getString("Component1"), 1.0); - testSystem.addComponent(dataSet.getString("Component2"), 1.0); - testSystem.setMixingRule(2); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - double sample1[] = {Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("y1"))}; - double standardDeviation1[] = {0.01, 0.01}; - SampleValue sample = new SampleValue(0.0, 0.01, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - optim.displayCurveFit(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestEosParameterFittingToMercurySolubility.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestEosParameterFittingToMercurySolubility.java deleted file mode 100644 index 189adba078..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestEosParameterFittingToMercurySolubility.java +++ /dev/null @@ -1,91 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimExperimentDatabase; - -/** - *

- * TestEosParameterFittingToMercurySolubility class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestEosParameterFittingToMercurySolubility { - static Logger logger = LogManager.getLogger(TestEosParameterFittingToMercurySolubility.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimExperimentDatabase database = new NeqSimExperimentDatabase(); - - ResultSet dataSet = database.getResultSet( - "SELECT * FROM binarysolubilitydata WHERE ComponentSolute='mercury' AND ComponentSolvent='n-hexane'"); - // double parameterGuess[] = {0.13}; // mercury-methane - // double parameterGuess[] = {0.0496811275399517}; // mercury-methane - // double parameterGuess[] = {0.0704}; // mercury-ethane - double parameterGuess[] = {-0.03310000498911416}; // mercury-ibutane - // double parameterGuess[] = {0.0674064646735}; // mercury-propane - // double parameterGuess[] = { 0.3674008071}; // mercury-CO2 - // double parameterGuess[] = { 0.016529772608}; // mercury-nitrogen - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 40) { - p++; - CPAParameterFittingToSolubilityData function = - new CPAParameterFittingToSolubilityData(0, 0); - - SystemInterface testSystem = new SystemSrkEos(290, 1.0); - testSystem.addComponent("mercury", 10.0); - testSystem.addComponent("n-hexane", 10.0); - testSystem.getPhase(0).getComponent("mercury").setAttractiveTerm(12); - testSystem.getPhase(1).getComponent("mercury").setAttractiveTerm(12); - testSystem.createDatabase(true); - testSystem.setMultiPhaseCheck(true); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure")) + 2); - testSystem.setMixingRule(2); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.13}; - double x1 = Double.parseDouble(dataSet.getString("x1")); - SampleValue sample = new SampleValue(x1, x1 / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - optim.displayCurveFit(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestParameterFittingToSolubilityDataEinar.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestParameterFittingToSolubilityDataEinar.java deleted file mode 100644 index 373f9b843f..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/EosInteractionParameterFitting/TestParameterFittingToSolubilityDataEinar.java +++ /dev/null @@ -1,86 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.EosInteractionParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemPrEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestParameterFittingToSolubilityDataEinar class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestParameterFittingToSolubilityDataEinar { - static Logger logger = LogManager.getLogger(TestParameterFittingToSolubilityDataEinar.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM binarysolubilitydataeinar WHERE ComponentSolute='methane' AND ComponentSolvent='Water'"); - - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 4000) { - p++; - CPAParameterFittingToSolubilityData function = - new CPAParameterFittingToSolubilityData(); - - SystemInterface testSystem = new SystemPrEos(290, 1.0); - testSystem.addComponent("methane", 1.0); - testSystem.addComponent("water", 10.0); - testSystem.createDatabase(true); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure")) / 1.0e5); - testSystem.setMixingRule(2); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = - {testSystem.getPressure() / 100.0, testSystem.getTemperature() / 100.0}; - SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // double parameterGuess[] = {-0.130}; //srk - double parameterGuess[] = {0.0000001}; - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToDewPointData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToDewPointData.java deleted file mode 100644 index eaabdb5e0a..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToDewPointData.java +++ /dev/null @@ -1,71 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * BinaryHVParameterFittingToDewPointData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryHVParameterFittingToDewPointData extends HuronVidalFunction { - static Logger logger = LogManager.getLogger(BinaryHVParameterFittingToDewPointData.class); - - int phase = 1; - int type = 1; - - /** - *

- * Constructor for BinaryHVParameterFittingToDewPointData. - *

- */ - public BinaryHVParameterFittingToDewPointData() {} - - /** - *

- * Constructor for BinaryHVParameterFittingToDewPointData. - *

- * - * @param phase a int - * @param type a int - */ - public BinaryHVParameterFittingToDewPointData(int phase, int type) { - this.phase = phase; - this.type = type; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - if (system.getTemperature() > 3.0) { - thermoOps.dewPointTemperatureFlash(); - } else { - thermoOps.freezingPointTemperatureFlash(); - } - } catch (Exception e) { - logger.error("err dew pont"); - } - return system.getTemperature(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule().setBinaryInteractionParameter(0, - 1, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule().setBinaryInteractionParameter(0, - 1, value); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToEquilibriumData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToEquilibriumData.java deleted file mode 100644 index 2c7904dcd7..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToEquilibriumData.java +++ /dev/null @@ -1,65 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - *

- * BinaryHVParameterFittingToEquilibriumData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryHVParameterFittingToEquilibriumData extends HuronVidalFunction { - /** - *

- * Constructor for BinaryHVParameterFittingToEquilibriumData. - *

- */ - public BinaryHVParameterFittingToEquilibriumData() { - params = new double[2]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - double calcK = 0; - double expK = 0; - expK = dependentValues[1] / dependentValues[0]; - - system.init(0); - system.getPhases()[1].getComponents()[0].setx(dependentValues[0]); - system.getPhases()[1].getComponents()[1].setx(1.0 - dependentValues[0]); - system.getPhases()[0].getComponents()[0].setx(dependentValues[1]); - system.getPhases()[0].getComponents()[1].setx(1.0 - dependentValues[1]); - system.init(1); - system.getPhases()[0].getComponents()[0].setK(Math.exp( - Math.log(system.getPhases()[1].getComponents()[0].getFugacityCoefficient()) - Math - .log(system.getPhases()[0].getComponents()[0].getFugacityCoefficient()))); - calcK = system.getPhases()[0].getComponents()[0].getK(); - - double diff = expK - calcK; - // System.out.println("diff: " + diff); - return diff; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - - if (i == 0) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(0, 1, value); - } - if (i == 1) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(1, 0, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToSolubilityData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToSolubilityData.java deleted file mode 100644 index 20a0118f64..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToSolubilityData.java +++ /dev/null @@ -1,67 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -/** - *

- * BinaryHVParameterFittingToSolubilityData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryHVParameterFittingToSolubilityData extends HuronVidalFunction { - static Logger logger = LogManager.getLogger(BinaryHVParameterFittingToSolubilityData.class); - - int phase = 1; - int type = 1; - - /** - *

- * Constructor for BinaryHVParameterFittingToSolubilityData. - *

- */ - public BinaryHVParameterFittingToSolubilityData() {} - - /** - *

- * Constructor for BinaryHVParameterFittingToSolubilityData. - *

- * - * @param phase a int - * @param type a int - */ - public BinaryHVParameterFittingToSolubilityData(int phase, int type) { - this.phase = phase; - this.type = type; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - if (type == 1) { - thermoOps.TPflash(); - // system.display(); - // System.out.println("x " + system.getPhases()[1].getComponents()[0].getx()); - return system.getPhases()[phase].getComponents()[0].getx(); - } else if (type == 10) { - try { - thermoOps.bubblePointPressureFlash(true); - } catch (Exception e) { - logger.error("error", e); - return system.getPressure() * system.getPhase(0).getComponents()[0].getx(); - } - return system.getPressure() * system.getPhase(0).getComponents()[0].getx(); - } else { - thermoOps.TPflash(); - return system.getPhases()[phase].getComponents()[1].getx(); - } - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToSolubilityData2.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToSolubilityData2.java deleted file mode 100644 index 48d1054024..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVParameterFittingToSolubilityData2.java +++ /dev/null @@ -1,45 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -/** - *

- * BinaryHVParameterFittingToSolubilityData2 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryHVParameterFittingToSolubilityData2 extends HuronVidalFunction { - int phase = 1; - - /** - *

- * Constructor for BinaryHVParameterFittingToSolubilityData2. - *

- */ - public BinaryHVParameterFittingToSolubilityData2() {} - - /** - *

- * Constructor for BinaryHVParameterFittingToSolubilityData2. - *

- * - * @param phase a int - */ - public BinaryHVParameterFittingToSolubilityData2(int phase) { - this.phase = phase; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - thermoOps.TPflash(); - // System.out.println("x " + system.getPhases()[1].getComponents()[0].getx()); - return system.getPhases()[phase].getComponents()[0].getx(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVparameterFitToActivityCoefficientFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVparameterFitToActivityCoefficientFunction.java deleted file mode 100644 index 73d9f0c111..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryHVparameterFitToActivityCoefficientFunction.java +++ /dev/null @@ -1,37 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -/** - *

- * BinaryHVparameterFitToActivityCoefficientFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryHVparameterFitToActivityCoefficientFunction extends HuronVidalFunction { - /** - *

- * Constructor for BinaryHVparameterFitToActivityCoefficientFunction. - *

- */ - public BinaryHVparameterFitToActivityCoefficientFunction() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(0); - system.init(1); - - // double fug = system.getPhases()[1].getComponents()[0].getFugacityCoefficient(); - // double pureFug = system.getPhases()[1].getPureComponentFugacity(0); - double val = system.getPhase(1).getActivityCoefficient(0); - // System.out.println("activity: " + val); - return val; - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryWSParameterFittingToSolubilityData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryWSParameterFittingToSolubilityData.java deleted file mode 100644 index 8e746d5602..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/BinaryWSParameterFittingToSolubilityData.java +++ /dev/null @@ -1,52 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -/** - *

- * BinaryWSParameterFittingToSolubilityData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class BinaryWSParameterFittingToSolubilityData extends WongSandlerFunction { - int phase = 1; - int type = 1; - - /** - *

- * Constructor for BinaryWSParameterFittingToSolubilityData. - *

- */ - public BinaryWSParameterFittingToSolubilityData() {} - - /** - *

- * Constructor for BinaryWSParameterFittingToSolubilityData. - *

- * - * @param phase a int - * @param type a int - */ - public BinaryWSParameterFittingToSolubilityData(int phase, int type) { - this.phase = phase; - this.type = type; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - thermoOps.TPflash(); - if (type == 1) { - // System.out.println("x " + system.getPhases()[1].getComponents()[0].getx()); - return system.getPhases()[phase].getComponents()[0].getx(); - } else { - return system.getPhases()[phase].getComponents()[1].getx(); - } - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/FreezeSolidFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/FreezeSolidFunction.java deleted file mode 100644 index 9065d50dc2..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/FreezeSolidFunction.java +++ /dev/null @@ -1,35 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -/** - *

- * FreezeSolidFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class FreezeSolidFunction extends HuronVidalFunction { - static Logger logger = LogManager.getLogger(FreezeSolidFunction.class); - - /** - *

- * Constructor for FreezeSolidFunction. - *

- */ - public FreezeSolidFunction() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(0); - try { - thermoOps.freezingPointTemperatureFlash(); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getTemperature(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/HuronVidalFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/HuronVidalFunction.java deleted file mode 100644 index 6b68ab3ee7..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/HuronVidalFunction.java +++ /dev/null @@ -1,69 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - * - * @author Even Solbraa - */ -abstract class HuronVidalFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for HuronVidalFunction. - *

- */ - public HuronVidalFunction() {} - - /** {@inheritDoc} */ - @Override - public void setDatabaseParameters() { - params = new double[4]; - params[0] = ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule()).getHVDijParameter(0, 1); - params[1] = ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule()).getHVDijParameter(1, 0); - params[2] = ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule()).getHVDijTParameter(0, 1); - params[3] = ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule()).getHVDijTParameter(1, 0); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - - if (i == 0) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(0, 1, value); - } - if (i == 1) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(1, 0, value); - } - if (i == 2) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - } - if (i == 3) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - } - if (i == 4) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHValphaParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHValphaParameter(1, 0, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToDewPointData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToDewPointData.java deleted file mode 100644 index 296b0f320b..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToDewPointData.java +++ /dev/null @@ -1,117 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemPrEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryHVParameterFittingToDewPointData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVParameterFittingToDewPointData { - static Logger logger = LogManager.getLogger(TestBinaryHVParameterFittingToDewPointData.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM dewpointquaternary WHERE temperature>173.1 AND x4>0.0000021 ORDER BY x4,pressure"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - // testSystem.addComponent(dataSet.getString("ComponentSolute"), 1.0); - // testSystem.addComponent(dataSet.getString("ComponentSolvent"), 1.0); - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 300) { - p++; - BinaryHVParameterFittingToDewPointData function = - new BinaryHVParameterFittingToDewPointData(); - - // SystemInterface testSystem = new SystemFurstElectrolyteEos(280, 1.0); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(290, 1.0); - SystemInterface testSystem = new SystemPrEos(290, 1.0); - testSystem.addComponent(dataSet.getString("comp1"), - Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent(dataSet.getString("comp2"), - Double.parseDouble(dataSet.getString("x2"))); - testSystem.addComponent("ethane", Double.parseDouble(dataSet.getString("x3"))); - testSystem.addComponent(dataSet.getString("comp4"), - Double.parseDouble(dataSet.getString("x4"))); - // testSystem.setSolidPhaseCheck(true); - // testSystem.addComponent("CO2", 1.0); - // testSystem.addComponent("water", 1.0); - // testSystem.addComponent("MDEA", 1.000001); - // testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(4); - - // testSystem.getChemicalReactionOperations().solveChemEq(0); - // testSystem.getChemicalReactionOperations().solveChemEq(1); - - // testSystem.isChemicalSystem(false); - - // testSystem.addComponent("NaPlus", 1.0e-10); - // testSystem.addComponent("methane", 1.1); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("pressure"))); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - SampleValue sample = new SampleValue(testSystem.getTemperature(), - testSystem.getTemperature() / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - double parameterGuess[] = {0.01}; - // double parameterGuess[] = {4799.35, -2772.29, 0.6381, -1.68096}; - // double parameterGuess[] = {3932.0, -4127.0, -5.89, 8.9}; // HV CO2 - // double parameterGuess[] = {5023.6600682957, -136.4306560594, -3.9812435921, - // 1.4579901393}; // HV methane - // double parameterGuess[] = {3204.3057406886, -2753.7379912645, -12.4728330162 - // , 13.0150379323}; // HV - // double parameterGuess[] = {8.992E3, -3.244E3, -8.424E0, -1.824E0}; // HV - // double parameterGuess[] = {-7.132E2, -3.933E2};//, 3.96E0, 9.602E-1}; //, - // 1.239}; //WS - sample.setReference(Double.toString(testSystem.getPressure())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - optim.displayCurveFit(); - optim.displayResult(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToEquilibriumData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToEquilibriumData.java deleted file mode 100644 index be6c719234..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToEquilibriumData.java +++ /dev/null @@ -1,78 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryHVParameterFittingToEquilibriumData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVParameterFittingToEquilibriumData { - static Logger logger = - LogManager.getLogger(TestBinaryHVParameterFittingToEquilibriumData.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM BinaryEquilibriumData WHERE Component1='methane' AND Component2='ethane'"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - - try { - logger.info("adding...."); - while (dataSet.next()) { - BinaryHVParameterFittingToEquilibriumData function = - new BinaryHVParameterFittingToEquilibriumData(); - double guess[] = {1000, 1000}; - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkEos(280, 0.01); - testSystem.addComponent(dataSet.getString("Component1"), 1.0); - testSystem.addComponent(dataSet.getString("Component2"), 1.0); - testSystem.setMixingRule(3); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - double sample1[] = {Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("y1"))}; - double standardDeviation1[] = {0.01, 0.01}; - SampleValue sample = new SampleValue(0.0, 0.01, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayResult(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData.java deleted file mode 100644 index 5cc95c17e2..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData.java +++ /dev/null @@ -1,123 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimExperimentDatabase; - -/** - *

- * TestBinaryHVParameterFittingToSolubilityData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVParameterFittingToSolubilityData { - static Logger logger = LogManager.getLogger(TestBinaryHVParameterFittingToSolubilityData.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimExperimentDatabase database = new NeqSimExperimentDatabase(); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // binarySolubilityData WHERE ComponentSolute='CO2' AND ComponentSolvent='water' - // AND Reference='Houghton1957' AND Reference<>'Nighswander1989' AND - // Temperature>278.15 AND Temperature<363.15 AND Pressure<60.01325 ORDER BY - // Temperature,Pressure"); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM binarySolubilityData WHERE ComponentSolute='oxygen' AND ComponentSolvent='water' ORDER BY Temperature,Pressure"); - - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - // testSystem.addComponent(dataSet.getString("ComponentSolute"), 1.0); - // testSystem.addComponent(dataSet.getString("ComponentSolvent"), 1.0); - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 22) { - p++; - BinaryHVParameterFittingToSolubilityData function = - new BinaryHVParameterFittingToSolubilityData(); - // SystemInterface testSystem = new SystemSrkEos(280,1); - // SystemInterface testSystem = new SystemFurstElectrolyteEos(280, 1.0); - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(290, 1.0); - // SystemInterface testSystem = new SystemSrkMathiasCopeman(290, 1.0); - testSystem.addComponent(dataSet.getString("ComponentSolute"), 1.0); - testSystem.addComponent(dataSet.getString("ComponentSolvent"), 100.0); - - // testSystem.addComponent("CO2", 1.0); - // testSystem.addComponent("water", 1.0); - // testSystem.addComponent("MDEA", 1.000001); - // testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - - // testSystem.getChemicalReactionOperations().solveChemEq(0); - // testSystem.getChemicalReactionOperations().solveChemEq(1); - - // testSystem.isChemicalSystem(false); - - // testSystem.addComponent("NaPlus", 1.0e-10); - // testSystem.addComponent("methane", 1.1); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - logger.error("pressure " + testSystem.getPressure()); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // double parameterGuess[] = {4799.35, -2772.29, 0.6381, -1.68096}; - // double parameterGuess[] = {5640.38, -3793.1, -4.42, 2.82}; // HV CO2 - // double parameterGuess[] = {7263.5285887088, -3712.3594920781, -7.1458168635, - // 1.2714576276};//CO2-SRK-MC - // double parameterGuess[] = {5251.7374371982, -3121.2788585048, -0.8420253536, - // -0.5123316046}; // HV CO2 -PVT-sim - double parameterGuess[] = - {2423.6600682957, -2136.4306560594, 1.9812435921, 1.4579901393}; // HV - // methane - // double parameterGuess[] = {3204.3057406886, -2753.7379912645, -12.4728330162 - // , 13.0150379323}; // HV - // double parameterGuess[] = {8.992E3, -3.244E3, -8.424E0, -1.824E0}; // HV - // double parameterGuess[] = {-7.132E2, -3.933E2};//, 3.96E0, 9.602E-1}; //, - // 1.239}; //WS - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - optim.displayCurveFit(); - // optim.displayResult(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityDataCO2AcOH.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityDataCO2AcOH.java deleted file mode 100644 index 7cb9447567..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityDataCO2AcOH.java +++ /dev/null @@ -1,85 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

TestBinaryHVParameterFittingToSolubilityDataCO2AcOH class.

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVParameterFittingToSolubilityDataCO2AcOH { - static Logger logger = - LogManager.getLogger(TestBinaryHVParameterFittingToSolubilityDataCO2AcOH.class); - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM CO2AcOHdata WHERE X>0 AND y>0"); - - try { - logger.info("adding...."); - while (dataSet.next()) { - BinaryHVParameterFittingToSolubilityData function = - new BinaryHVParameterFittingToSolubilityData(); - double parameterGuess[] = {2500, -1500, -0.1, -0.1, 0.03}; - function.setInitialGuess(parameterGuess); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 1); - testSystem.addComponent("CO2", 10.0); - testSystem.addComponent("AceticAcid", 1.0); - - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("Pressure")); - double x = Double.parseDouble(dataSet.getString("x")); - double y = Double.parseDouble(dataSet.getString("y")); - - if (x == 0) { - continue; - } - - testSystem.setTemperature(temperature); - testSystem.setPressure(pressure); - testSystem.init(0); - - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01, 0.01}; - - SampleValue sample = new SampleValue(x, x / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - optim.solve(); - optim.displayCurveFit(); - optim.displayResult(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData_Lucia.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData_Lucia.java deleted file mode 100644 index bb49b345bb..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData_Lucia.java +++ /dev/null @@ -1,255 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPAstatoil; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryHVParameterFittingToSolubilityData_Lucia class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVParameterFittingToSolubilityData_Lucia { - static Logger logger = - LogManager.getLogger(TestBinaryHVParameterFittingToSolubilityData_Lucia.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM LuciaData8 WHERE Component='methane' AND Temperature<520 AND L2<>NULL AND L2>0.0000000001 ORDER BY Temperature,Pressure");// AND - // Reference='Houghton1957' - // AND - // Reference<>'Nighswander1989' - // AND - // Temperature>278.15 - // AND - // Temperature<383.15 - // AND - // Pressure<60.01325"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='CO2' AND Temperature>250 AND Temperature<420 AND - // Pressure<700000000 AND L2 IS NOT NULL AND L2>0.000000001 ORDER BY - // Temperature,Pressure");// AND Reference='Houghton1957' AND - // Reference<>'Nighswander1989' AND Temperature>278.15 AND Temperature<383.15 - // AND Pressure<60.01325"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='propane' AND Temperature>250 AND Temperature<420 AND - // Pressure<700000000 AND L2<>NULL AND L2>0.000000001 ORDER BY - // Temperature,Pressure");// AND Reference='Houghton1957' AND - // Reference<>'Nighswander1989' AND Temperature>278.15 AND Temperature<383.15 - // AND Pressure<60.01325"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='methane' AND ID1>662 AND ID1<760 AND Temperature<520 AND L2<>NULL - // AND L2>0.0000000001 ORDER BY Temperature,Pressure");// AND - // Reference='Houghton1957' AND Reference<>'Nighswander1989' AND - // Temperature>278.15 AND Temperature<383.15 AND Pressure<60.01325"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='H2S' AND Temperature>250 AND Temperature<420 AND Pressure<10000000 - // AND L2<>NULL AND L2>0.000000001 ORDER BY Temperature,Pressure"); - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 150) { - p++; - BinaryHVParameterFittingToSolubilityData function = - new BinaryHVParameterFittingToSolubilityData(1, 1); - - // SystemInterface testSystem = new SystemFurstElectrolyteEos(280, 1.0); - // SystemInterface testSystem = new - // SystemPrEos1978(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1e5); - // SystemInterface testSystem = new - // SystemSrkEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1e5); - // SystemInterface testSystem = new - // SystemSrkEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure")) / 1e5); - SystemInterface testSystem = new SystemSrkCPAstatoil( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure")) / 1e5); - // testSystem.addComponent("propane", 10.0); - testSystem.addComponent("methane", 10.0); - testSystem.addComponent("water", 100.0); - - // testSystem.addComponent("CO2", 1.0); - // testSystem.addComponent("water", 1.0); - // testSystem.addComponent("MDEA", 1.000001); - // testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(4); - // testSystem.getChemicalReactionOperations().solveChemEq(0); - // testSystem.getChemicalReactionOperations().solveChemEq(1); - - // testSystem.isChemicalSystem(false); - - // testSystem.addComponent("NaPlus", 1.0e-10); - // testSystem.addComponent("methane", 1.1); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = Double.parseDouble(dataSet.getString("L2")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // double parameterGuess[] = {4239.63, -232.924, -5.01417, 2.3761}; - // double parameterGuess[] = {3932.0, -4127.0, -5.89, 8.9}; // HV CO2 - // double parameterGuess[] = {1859.4161214985, -1025.4679064974, -1.5607986741, - // 2.1430069589}; // HV H2S - - // double parameterGuess[] = {1193.8840735911, 69.2494254233, -7.8323508140, - // 4.5299137720}; // H2S MDEA - // double parameterGuess[] ={5251.7374371982, -3121.2788585048, -0.8420253536, - // -0.5123316046};//;//,0.03};//co2 scsrk-ny - // double parameterGuess[] ={-1584, 3517, 3.9121943388, -0.44,-0.1};//propane - // double parameterGuess[] = { 5607, 0.897598343, -123.6011438188, - // -6.5496550381, 2.1378539395}; // HV methan570 - double parameterGuess[] = - {6114.2013874102, -188.264597921, -10.7239107857559, 2.310651690177652}; // HV - // methan570 - // double parameterGuess[] = {3204.3057406886, -2753.7379912645, -12.4728330162 - // , 13.0150379323}; // HV - // double parameterGuess[] = {8.992E3, -3.244E3, -8.424E0, -1.824E0}; // HV - // double parameterGuess[] = {-7.132E2, -3.933E2};//, 3.96E0, 9.602E-1}; //, - // 1.239}; //WS - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - logger.info("liq points " + p); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM LuciaData8 WHERE Component='methane' AND ID<3000 AND Temperature<520 AND Y<>NULL AND Y>0.0000000001 ORDER BY Temperature,Pressure");// AND - // Reference='Houghton1957' - // AND - // Reference<>'Nighswander1989' - // AND - // Temperature>278.15 - // AND - // Temperature<383.15 - // AND - // Pressure<60.01325"); - // dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='CO2' AND ID<3000 AND Temperature>250 AND Pressure<700000000 AND - // Temperature<420 AND Y IS NOT NULL AND Y>0.0000000001 ORDER BY - // Temperature,Pressure");// AND Reference='Houghton1957' AND - // Reference<>'Nighswander1989' AND Temperature>278.15 AND Temperature<383.15 - // AND Pressure<60.01325"); - // dataSet = database.getResultSet( "SELECT * FROM LuciaData8 WHERE - // Component='methane' AND Temperature>273.15 AND Pressure<153000000 AND Y<>NULL - // AND Y>0.000000001 ORDER BY Temperature,Pressure"); - - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - // testSystem.addComponent(dataSet.getString("ComponentSolute"), 1.0); - // testSystem.addComponent(dataSet.getString("ComponentSolvent"), 1.0); - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 150) { - p++; - BinaryHVParameterFittingToSolubilityData function = - new BinaryHVParameterFittingToSolubilityData(0, 0); - - // SystemInterface testSystem = new - // SystemFurstElectrolyteEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1e5); - // SystemInterface testSystem = new - // SystemPrEos1978(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1e5); - // SystemInterface testSystem = new - // SystemSrkEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1e5); - // SystemInterface testSystem = new - // SystemSrkEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure")) / 1e5); - // testSystem.addComponent("CO2", 1.0); - SystemInterface testSystem = new SystemSrkCPAstatoil( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure")) / 1e5); - - testSystem.addComponent("methane", 10.0); - testSystem.addComponent("water", 10.0); - - // testSystem.addComponent("CO2", 1.0); - // testSystem.addComponent("water", 1.0); - // testSystem.addComponent("MDEA", 1.000001); - // testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(4); - - // testSystem.getChemicalReactionOperations().solveChemEq(0); - // testSystem.getChemicalReactionOperations().solveChemEq(1); - - // testSystem.isChemicalSystem(false); - - // testSystem.addComponent("NaPlus", 1.0e-10); - // testSystem.addComponent("methane", 1.1); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = 1.0 - Double.parseDouble(dataSet.getString("Y")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // double parameterGuess[] = {4239.63, -232.924, -5.01417, 2.3761}; - // double parameterGuess[] ={3209.3031222305, -2016.3262143626, 4.2211091944, - // -3.3157456878}; - // double parameterGuess[] = {5640.0, -3793.0, -5.89, 8.9}; // HV CO2 - // double parameterGuess[] ={5251.7374371982, -3121.2788585048, -0.8420253536, - // -0.5123316046};//;//,0.03};//co2 scsrk-ny - double parameterGuess[] = - {6114.2013874102, -188.264597921, -10.7239107857559, 2.310651690177652}; // HV - // methane - // double parameterGuess[] = {3204.3057406886, -2753.7379912645, -12.4728330162 - // , 13.0150379323}; // HV - // double parameterGuess[] = {8.992E3, -3.244E3, -8.424E0, -1.824E0}; // HV - // double parameterGuess[] = {-7.132E2, -3.933E2};//, 3.96E0, 9.602E-1}; //, - // 1.239}; //WS - function.setInitialGuess(parameterGuess); - sample.setDescription(Double.toString(testSystem.getTemperature())); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - optim.displayCurveFit(); - optim.displayResult(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData_LuciaPropane.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData_LuciaPropane.java deleted file mode 100644 index 4ba0a3b572..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityData_LuciaPropane.java +++ /dev/null @@ -1,194 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimExperimentDatabase; - -/** - *

- * TestBinaryHVParameterFittingToSolubilityData_LuciaPropane class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVParameterFittingToSolubilityData_LuciaPropane { - static Logger logger = - LogManager.getLogger(TestBinaryHVParameterFittingToSolubilityData_LuciaPropane.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimExperimentDatabase database = new NeqSimExperimentDatabase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM LuciaData8 WHERE Component='nitrogen' AND Temperature>270.0 AND L2>0.000000001");// AND - // Temperature<600 - // AND - // Pressure<7000000000 - // AND - // L2<>NULL - // AND - // L2>0.000000001 - // ORDER - // BY - // Temperature,Pressure");// - // AND - // Reference='Houghton1957' - // AND - // Reference<>'Nighswander1989' - // AND - // Temperature>278.15 - // AND - // Temperature<383.15 - // AND - // Pressure<60.01325"); - - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 80) { - p++; - BinaryHVParameterFittingToSolubilityData function = - new BinaryHVParameterFittingToSolubilityData(); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure")) / 1e5); - - testSystem.addComponent("nitrogen", 10.0); - testSystem.addComponent("water", 10.0); - - testSystem.createDatabase(true); - testSystem.setMixingRule("HV"); - - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = Double.parseDouble(dataSet.getString("L2")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - double parameterGuess[] = {4898.64, -111.76};// , -0.1, -0.44};//, 0.07};//propane - - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM LuciaData8 WHERE Component='nitrogen' AND ID>=1014 AND ID<=1045 AND Temperature<373.0");// AND - // ID<3000 - // AND - // Temperature>250 - // AND - // Pressure<7000000000 - // AND - // Temperature<600 - // AND - // Y<>NULL - // AND - // Y>0.0000000001 - // ORDER - // BY - // Temperature,Pressure");// - // AND - // Reference='Houghton1957' - // AND - // Reference<>'Nighswander1989' - // AND - // Temperature>278.15 - // AND - // Temperature<383.15 - // AND - // Pressure<60.01325"); - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 100) { - p++; - BinaryHVParameterFittingToSolubilityData function = - new BinaryHVParameterFittingToSolubilityData(0, 0); - SystemInterface testSystem = new SystemSrkSchwartzentruberEos( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure")) / 1e5); - testSystem.addComponent("nitrogen", 10.0); - testSystem.addComponent("water", 1000.0); - testSystem.setMixingRule("HV"); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = 1.0 - Double.parseDouble(dataSet.getString("Y")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - double parameterGuess[] = {4898.64, -111.76};// , -0.1, -0.44};//, 0.07};//propane - function.setInitialGuess(parameterGuess); - sample.setDescription(Double.toString(testSystem.getTemperature())); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - /* - * dataSet = database.getResultSet( - * "SELECT * FROM LuciaData8 WHERE Component='propane');// AND Temperature>270 AND Temperature<400 AND Pressure<700000000 AND L1<>NULL ORDER BY Temperature,Pressure" - * );// AND Reference='Houghton1957' AND Reference<>'Nighswander1989' AND Temperature>278.15 - * AND Temperature<383.15 AND Pressure<60.01325"); - * - * try{ int p=0; logger.info("adding...."); while(!dataSet.next() && p<10){ p++; - * BinaryHVParameterFittingToSolubilityData function = new - * BinaryHVParameterFittingToSolubilityData(0,0); - * - * SystemInterface testSystem = new - * SystemSrkSchwartzentruberEos(Double.parseDouble(dataSet.getString( "Temperature")), - * Double.parseDouble(dataSet.getString("Pressure"))/1e5); - * - * testSystem.addComponent("propane", 10.0); testSystem.addComponent("water", 10.0); - * - * //testSystem.createDatabase(true); testSystem.setMixingRule("HV"); - * - * testSystem.init(0); double sample1[] = {testSystem.getPressure(), - * testSystem.getTemperature()}; double standardDeviation1[] = {0.01}; // std.dev - * temperature double val = 1.0-Double.parseDouble(dataSet.getString("L1")); double sdev = - * val/100.0; SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - * sample.setFunction(function); sample.setThermodynamicSystem(testSystem); - * sample.setReference(Double.toString(testSystem.getTemperature())); double - * parameterGuess[] ={3517,-1584, -0.1, -0.44, 0.07};//propane - * function.setInitialGuess(parameterGuess); sampleList.add(sample); } } catch(Exception e){ - * logger.error("database error" + e); } - */ - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - // optim.displayCurveFit(); - optim.displayResult(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityDatawaterCO2.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityDatawaterCO2.java deleted file mode 100644 index 0e001e4dff..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVParameterFittingToSolubilityDatawaterCO2.java +++ /dev/null @@ -1,140 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryHVParameterFittingToSolubilityDatawaterCO2 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVParameterFittingToSolubilityDatawaterCO2 { - static Logger logger = - LogManager.getLogger(TestBinaryHVParameterFittingToSolubilityDatawaterCO2.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM CO2watersolubility - // WHERE pressureMPA<6 AND reference IN ('[18]', '[35]', '[36]', '[37]', '[38]', - // '[39]', '[40]', '[41]','[42]')"); - - ResultSet dataSet = database.getResultSet( - "SELECT * FROM CO2watersolubility WHERE pressureMPA<5 AND reference IN ('[18]', '[35]', '[36]', '[37]', '[38]', '[39]', '[40]', '[41]','[42]', '[32]', '[33]', '[34]')"); - - try { - int p = 0; - while (dataSet.next() && p < 550) { - p++; - BinaryHVParameterFittingToSolubilityData function = - new BinaryHVParameterFittingToSolubilityData(1, 10); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos( - (Double.parseDouble(dataSet.getString("temperatureC")) + 273.15), - 10.0 * Double.parseDouble(dataSet.getString("pressureMPA"))); - // SystemInterface testSystem = new - // SystemSrkEos((Double.parseDouble(dataSet.getString("temperatureC"))+273.15), - // Double.parseDouble(dataSet.getString("pressurebar"))); - double valCO2 = Double.parseDouble(dataSet.getString("xCO2")); - testSystem.addComponent("CO2", valCO2); - testSystem.addComponent("water", 100.0 - valCO2); - - testSystem.createDatabase(true); - testSystem.setMixingRule("HV"); - - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = testSystem.getPressure(); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - sample.setDescription(dataSet.getString("reference")); - // double parameterGuess[] = {5601.2391787479, -3170.8329162571, -1.7069851770, - // -0.5058509407}; // HV CO2 - double parameterGuess[] = - {5251.7374371982, -3121.2788585048, -0.8420253536, -0.5123316046}; - // double parameterGuess[] ={13694.7303713825, -807.1129937507, -10.4589547972, - // -10.9746096153}; - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - logger.info("liq points " + p); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM LuciaData8 WHERE Component='CO2' AND ID<3000 AND Temperature>250 AND Pressure<700000000 AND Temperature<420 AND Y<>NULL AND Y>0.0000000001 ORDER BY Temperature,Pressure"); - - try { - int p = 0; - while (!dataSet.next() && p < 100) { - p++; - BinaryHVParameterFittingToSolubilityData function = - new BinaryHVParameterFittingToSolubilityData(0, 0); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure")) / 1e5); - testSystem.addComponent("CO2", 1.0); - testSystem.addComponent("water", 10.0); - testSystem.setMixingRule("HV"); - - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = 1.0 - Double.parseDouble(dataSet.getString("Y")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // double parameterGuess[] = {5601.2391787479, -3170.8329162571, -1.7069851770, - // -0.5058509407}; // HV CO2 - double parameterGuess[] = {3626.0, -2241.0, 3.91, -3.16};// ; // HV CO2 - function.setInitialGuess(parameterGuess); - sample.setDescription(Double.toString(testSystem.getTemperature())); - sampleList.add(sample); - logger.info("gas points " + p); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - optim.displayCurveFit(); - // optim.displayResult(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivity.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivity.java deleted file mode 100644 index 8209b0326c..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivity.java +++ /dev/null @@ -1,63 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.util.ArrayList; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; - -/** - *

- * TestBinaryHVfitToActivity class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVfitToActivity implements Cloneable { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - int numb = 0; - while (numb < 20) { - numb++; - BinaryHVparameterFitToActivityCoefficientFunction function = - new BinaryHVparameterFitToActivityCoefficientFunction(); - SystemInterface testSystem = new SystemSrkEos(253.0 + numb * 50.0, 1.01); - // testSystem.addComponent("CO2", numb/100.0); - testSystem.addComponent("MDEA", 1.0); - testSystem.addComponent("water", 10.0); - // testSystem.createDatabase(true); - // testSystem.chemicalReactionInit(); - testSystem.setMixingRule(4); - testSystem.init(0); - double parameterGuess[] = {320.0, -40.0, -5.89, 8.9, 0.3475}; // HV - function.setInitialGuess(parameterGuess); - double sample1[] = {numb / 1000.0, testSystem.getTemperature()}; - double standardDeviation1[] = {1.0}; - SampleValue sample = new SampleValue(0.001, 1.0 / 1000.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityCPA.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityCPA.java deleted file mode 100644 index 138814d68b..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityCPA.java +++ /dev/null @@ -1,169 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemPrEos; -import neqsim.thermo.system.SystemSrkCPAs; -import neqsim.thermo.system.SystemSrkEos; - -/** - *

- * TestBinaryHVfitToActivityCPA class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVfitToActivityCPA implements Cloneable { - static Logger logger = LogManager.getLogger(TestBinaryHVfitToActivityCPA.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // double parameterGuess[] ={2012.8210952954, -1074.4698351045, 5.5675858688, - // -1.0503110172, - // -0.0082939895};//, 1.3505557460};//, 0.1169806819}; /SRK-EOS - // double parameterGuess[] ={1506.3, -863.3, 4.11, -0.603, -0.0145};//, - // 1.3505557460};//, 0.1169806819}; /PR-EOS - double parameterGuess[] = {-359.2, 351.7, -1.31, 2.44, 0.25}; // PVTsim SRK - // double parameterGuess[] ={ -446.3717107738, 523.8799876586, -1.2101168104, - // 1.1754366244, 0.1726026869}; // fitted MeOH - - // inserting samples from database - int numb = 0; - for (int i = 0; i < 1; i++) { - numb++; - for (int j = 0; j < 10; j++) { - BinaryHVparameterFitToActivityCoefficientFunction function = - new BinaryHVparameterFitToActivityCoefficientFunction(); - SystemInterface testSystem = new SystemSrkEos(268.15 + 10.0 * i, 1.0); - testSystem.addComponent("water", 100.0 - j * j); - // testSystem.addComponent("MEG", 1.0+j*j); - testSystem.addComponent("methanolPVTsim", 1.0 + j * j); - testSystem.createDatabase(true); - // testSystem.chemicalReactionInit(); - testSystem.setMixingRule(4); - testSystem.init(0); - - SystemInterface testSystem2 = new SystemSrkCPAs(268.15 + 10.0 * i, 1.0); - testSystem2.addComponent("water", 100.0 - j * j); - // testSystem2.addComponent("MEG",1.0+j*j); - testSystem2.addComponent("methanol", 1.0 + j * j); - - testSystem2.createDatabase(true); - testSystem2.setMixingRule(9); - testSystem2.init(0); - testSystem2.init(2); - double activ = testSystem2.getPhase(1).getActivityCoefficient(0); - logger.info("activity " + activ + " molfraction MEG " - + testSystem2.getPhase(1).getComponent("methanol").getx()); - - function.setInitialGuess(parameterGuess); - double sample1[] = {testSystem2.getPhase(1).getComponent("methanol").getx(), - testSystem.getTemperature()}; - double standardDeviation1[] = {1.0}; - SampleValue sample = - new SampleValue(activ, activ / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } - - for (int i = 0; i < 0; i++) { - numb++; - for (int j = 0; j < 10; j++) { - BinaryHVparameterFitToActivityCoefficientFunction function = - new BinaryHVparameterFitToActivityCoefficientFunction(); - SystemInterface testSystem = new SystemPrEos(300.0 + 20.0 * i, 1.0); - testSystem.addComponent("water", 100.0 - j * j); - // testSystem.addComponent("MEG", 1.0+j*j); - testSystem.addComponent("methanolPVTsim", 1.0 + j * j); - testSystem.createDatabase(true); - // testSystem.chemicalReactionInit(); - testSystem.setMixingRule(4); - testSystem.init(0); - - SystemInterface testSystem2 = new SystemSrkCPAs(300.0 + 20.0 * i, 1.0); - testSystem2.addComponent("water", 100.0 - j * j); - // testSystem2.addComponent("MEG",1.0+j*j); - testSystem.addComponent("methanolPVTsim", 1.0 + j * j); - - // testSystem2.createDatabase(true); - testSystem2.setMixingRule(7); - testSystem2.init(0); - testSystem2.init(2); - double activ = testSystem2.getPhase(1).getActivityCoefficient(0); - logger.info("activity " + activ + " molfraction MEG " - + testSystem2.getPhase(1).getComponent("MEG").getx()); - - function.setInitialGuess(parameterGuess); - double sample1[] = {numb / 1000.0, testSystem.getTemperature()}; - double standardDeviation1[] = {1.0}; - SampleValue sample = - new SampleValue(activ, activ / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } - - for (int i = 0; i < 0; i++) { - numb++; - for (int j = 0; j < 0; j++) { - BinaryHVparameterFitToActivityCoefficientFunction function = - new BinaryHVparameterFitToActivityCoefficientFunction(); - SystemInterface testSystem = new SystemPrEos(253.0 + 20.0 * i, 1.0); - // testSystem.addComponent("MEG", 1.0+j*10); - testSystem.addComponent("methanolPVTsim", 1.0 + j * j); - testSystem.addComponent("water", 100.0 - j * 10); - testSystem.createDatabase(true); - // testSystem.chemicalReactionInit(); - testSystem.setMixingRule(4); - testSystem.init(0); - - SystemInterface testSystem2 = new SystemSrkCPAs(253.0 + 20.0 * i, 1.0); - // testSystem2.addComponent("MEG",1.0+j*10); - testSystem.addComponent("methanolPVTsim", 1.0 + j * j); - testSystem2.addComponent("water", 100.0 - j * 10); - // testSystem2.createDatabase(true); - testSystem2.setMixingRule(7); - testSystem2.init(0); - testSystem2.init(2); - double activ = testSystem2.getPhase(1).getActivityCoefficient(0); - logger.info("activity " + activ + " molfraction MEG " - + testSystem2.getPhase(1).getComponent("MEG").getx()); - function.setInitialGuess(parameterGuess); - double sample1[] = {numb / 1000.0, testSystem.getTemperature()}; - double standardDeviation1[] = {1.0}; - SampleValue sample = - new SampleValue(activ, activ / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityCoefficientDB.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityCoefficientDB.java deleted file mode 100644 index b6a86ef222..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityCoefficientDB.java +++ /dev/null @@ -1,125 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryHVfitToActivityCoefficientDB class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVfitToActivityCoefficientDB implements Cloneable { - static Logger logger = LogManager.getLogger(TestBinaryHVfitToActivityCoefficientDB.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM activitycoefficienttable WHERE Component1='MDEA' AND Component2='water' AND Temperature>293.15 AND x1<=1.0 ORDER BY Temperature,x1"); - - try { - while (dataSet.next()) { - BinaryHVparameterFitToActivityCoefficientFunction function = - new BinaryHVparameterFitToActivityCoefficientFunction(); - - double x1 = Double.parseDouble(dataSet.getString("x1")) * 100; - SystemInterface testSystem = new SystemSrkSchwartzentruberEos( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.addComponent(dataSet.getString("Component1"), x1); - testSystem.addComponent(dataSet.getString("Component2"), - Double.parseDouble(dataSet.getString("x2")) * 100); - // testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {x1, testSystem.getTemperature()}; - double standardDeviation1[] = {x1 / 100.0}; - double val = Double.parseDouble(dataSet.getString("gamma1")); - SampleValue sample = new SampleValue(val, val / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // function.setDatabaseParameters(); - // double guess[] = {-1466.3924707953, 1197.4327552750, - // 5.9188456398, - // -7.2410712156, 0.2127650110}; - double guess[] = {-1460.6790723030, 1200.6447170870, 5.8929954883, -7.2400706727, - 0.2131035181}; - - function.setInitialGuess(guess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM BinaryFreezingPointData WHERE ComponentSolvent1='MDEA' ORDER BY FreezingTemperature"); - - try { - while (!dataSet.next()) { - FreezeSolidFunction function = new FreezeSolidFunction(); - // double guess[] = {-1466.3924707953, 1197.4327552750, - // 5.9188456398, - // -7.2410712156, 0.2127650110}; - double guess[] = {-1460.6790723030, 1200.6447170870, 5.8929954883, -7.2400706727, - 0.2131035181}; - - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 1.101); - testSystem.addComponent(dataSet.getString("ComponentSolvent1"), - Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent(dataSet.getString("ComponentSolvent2"), - Double.parseDouble(dataSet.getString("x2"))); - // testSystem.createDatabase(true); - testSystem.setSolidPhaseCheck(true); - testSystem.setMixingRule(4); - testSystem.init(0); - double sample1[] = {testSystem.getPhase(0).getComponent(0).getz()}; - double standardDeviation1[] = {0.1, 0.1, 0.1}; - double val = Double.parseDouble(dataSet.getString("FreezingTemperature")); - testSystem.setTemperature(val); - SampleValue sample = new SampleValue(val, val / 700, sample1, standardDeviation1); - sample.setFunction(function); - sample.setReference(dataSet.getString("Reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityUNIFAC.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityUNIFAC.java deleted file mode 100644 index a96d568cf2..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryHVfitToActivityUNIFAC.java +++ /dev/null @@ -1,79 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.util.ArrayList; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.thermo.system.SystemUNIFACpsrk; - -/** - *

- * TestBinaryHVfitToActivityUNIFAC class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryHVfitToActivityUNIFAC implements Cloneable { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - int numb = 0; - for (int i = 0; i < 20; i++) { - numb++; - BinaryHVparameterFitToActivityCoefficientFunction function = - new BinaryHVparameterFitToActivityCoefficientFunction(); - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(273.0 + i * 5, 1.01); - testSystem.addComponent("Piperazine", 1.0); - testSystem.addComponent("AceticAcid", 1000.0); - testSystem.createDatabase(true); - // testSystem.chemicalReactionInit(); - testSystem.setMixingRule(4); - testSystem.init(0); - - SystemInterface testSystem2 = new SystemUNIFACpsrk(273.0 + i * 5, 1.01); - testSystem2.addComponent("Piperazine", 1.0); - testSystem2.addComponent("AceticAcid", 1000.0); - - testSystem2.createDatabase(true); - testSystem2.setMixingRule(2); - testSystem2.init(0); - testSystem2.init(1); - double activ = testSystem2.getPhase(1).getActivityCoefficient(0); - // System.out.println("activity " + activ); - - // double parameterGuess[] ={4600.679072303, -1200.64471708, -3.89, - // 1.9};//Piperazine - water - double parameterGuess[] = {-460.679072303, 120.64471708, -3.89, 1.9};// Piuperazine - // -AceticAcid - function.setInitialGuess(parameterGuess); - double sample1[] = {numb / 1000.0, testSystem.getTemperature()}; - double standardDeviation1[] = {1.0}; - SampleValue sample = - new SampleValue(activ, activ / 1000.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryUMRPRUFittingToSolubilityData.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryUMRPRUFittingToSolubilityData.java deleted file mode 100644 index 1d24765025..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryUMRPRUFittingToSolubilityData.java +++ /dev/null @@ -1,303 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemUMRPRUMCEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryUMRPRUFittingToSolubilityData class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryUMRPRUFittingToSolubilityData { - static Logger logger = LogManager.getLogger(TestBinaryUMRPRUFittingToSolubilityData.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM binarySolubilityData WHERE ComponentSolute='Hg' AND ComponentSolvent='n-decane'"); - - double parameterGuess[] = {188.385052774267, -0.84022345};// , 2630.871733876947}; - - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 31) { - p++; - UMRPRUFunction function = new UMRPRUFunction(); - SystemInterface testSystem = new SystemUMRPRUMCEos(290, 1.0); - testSystem.addComponent("nC10", 10.0); - testSystem.addComponent("mercury", 1.0); - - testSystem.createDatabase(true); - testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - logger.info("pressure " + testSystem.getPressure()); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - - SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM binarySolubilityData WHERE ComponentSolute='Hg' AND ComponentSolvent='n-heptane'"); - - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 60) { - p++; - UMRPRUFunction function = new UMRPRUFunction(); - SystemInterface testSystem = new SystemUMRPRUMCEos(290, 1.0); - testSystem.addComponent("n-heptane", 10.0); - testSystem.addComponent("mercury", 1.0); - - testSystem.createDatabase(true); - testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - logger.info("pressure " + testSystem.getPressure()); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - - SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM binarySolubilityData WHERE ComponentSolute='Hg' AND ComponentSolvent='n-octane'"); - - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 50) { - p++; - UMRPRUFunction function = new UMRPRUFunction(); - SystemInterface testSystem = new SystemUMRPRUMCEos(290, 1.0); - testSystem.addComponent("n-octane", 10.0); - testSystem.addComponent("mercury", 1.0); - - testSystem.createDatabase(true); - testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - logger.info("pressure " + testSystem.getPressure()); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - - SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.info("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM binarySolubilityData WHERE ComponentSolute='Hg' AND ComponentSolvent='n-hexane'"); - - try { - int p = 0; - logger.error("adding...."); - while (dataSet.next() && p < 30) { - p++; - UMRPRUFunction function = new UMRPRUFunction(); - SystemInterface testSystem = new SystemUMRPRUMCEos(290, 1.0); - testSystem.addComponent("n-hexane", 10.0); - testSystem.addComponent("mercury", 1.0); - - testSystem.createDatabase(true); - testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - logger.info("pressure " + testSystem.getPressure()); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - - SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM binarySolubilityData WHERE ComponentSolute='Hg' AND ComponentSolvent='n-pentane'"); - - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 30) { - p++; - UMRPRUFunction function = new UMRPRUFunction(); - SystemInterface testSystem = new SystemUMRPRUMCEos(290, 1.0); - testSystem.addComponent("n-pentane", 10.0); - testSystem.addComponent("mercury", 1.0); - - testSystem.createDatabase(true); - testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - logger.info("pressure " + testSystem.getPressure()); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - - SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM binarySolubilityData WHERE ComponentSolute='Hg' AND ComponentSolvent='butane'"); - - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 30) { - p++; - UMRPRUFunction function = new UMRPRUFunction(); - SystemInterface testSystem = new SystemUMRPRUMCEos(290, 1.0); - testSystem.addComponent("n-butane", 10.0); - testSystem.addComponent("mercury", 1.0); - - testSystem.createDatabase(true); - testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - logger.info("pressure " + testSystem.getPressure()); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - - SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM binarySolubilityData WHERE ComponentSolute='Hg' AND ComponentSolvent='propane'"); - - try { - int p = 0; - logger.info("adding...."); - while (dataSet.next() && p < 30) { - p++; - UMRPRUFunction function = new UMRPRUFunction(); - SystemInterface testSystem = new SystemUMRPRUMCEos(290, 1.0); - testSystem.addComponent("propane", 10.0); - testSystem.addComponent("mercury", 1.0); - - testSystem.createDatabase(true); - testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - logger.info("pressure " + testSystem.getPressure()); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - - SampleValue sample = new SampleValue(Double.parseDouble(dataSet.getString("x1")), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - optim.displayCurveFit(); - optim.displayResult(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryWSParameterFittingToSolubilityData_Lucia.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryWSParameterFittingToSolubilityData_Lucia.java deleted file mode 100644 index 9dd76cf3be..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestBinaryWSParameterFittingToSolubilityData_Lucia.java +++ /dev/null @@ -1,210 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestBinaryWSParameterFittingToSolubilityData_Lucia class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryWSParameterFittingToSolubilityData_Lucia { - static Logger logger = - LogManager.getLogger(TestBinaryWSParameterFittingToSolubilityData_Lucia.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM LuciaData WHERE Component='methane' AND Temperature<520 AND L2<>NULL AND L2>0.00000001 ORDER BY Temperature,Pressure");// AND - // Reference='Houghton1957' - // AND - // Reference<>'Nighswander1989' - // AND - // Temperature>278.15 - // AND - // Temperature<383.15 - // AND - // Pressure<60.01325"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM LuciaData WHERE - // Component='CO2' AND Temperature>250 AND Temperature<420 AND L2<>NULL AND - // L2>0.00000001 ORDER BY Temperature,Pressure");// AND Reference='Houghton1957' - // AND Reference<>'Nighswander1989' AND Temperature>278.15 AND - // Temperature<383.15 AND Pressure<60.01325"); - - try { - int p = 0; - while (dataSet.next() && p < 100) { - p++; - BinaryWSParameterFittingToSolubilityData function = - new BinaryWSParameterFittingToSolubilityData(); - - // SystemInterface testSystem = new SystemFurstElectrolyteEos(280, 1.0); - SystemInterface testSystem = new SystemSrkSchwartzentruberEos( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure")) / 1e5); - // SystemInterface testSystem = new - // SystemSrkEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1e5); - // SystemInterface testSystem = new - // SystemPrEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1e5); - - // testSystem.addComponent("CO2", 10.0); - testSystem.addComponent("methane", 10.0); - testSystem.addComponent("water", 10.0); - - // testSystem.addComponent("CO2", 1.0); - // testSystem.addComponent("water", 1.0); - // testSystem.addComponent("MDEA", 1.000001); - // testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(5); - - // testSystem.getChemicalReactionOperations().solveChemEq(0); - // testSystem.getChemicalReactionOperations().solveChemEq(1); - - // testSystem.isChemicalSystem(false); - - // testSystem.addComponent("NaPlus", 1.0e-10); - // testSystem.addComponent("methane", 1.1); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = Double.parseDouble(dataSet.getString("L2")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // double parameterGuess[] = {3932.0, -4127.0, -5.89, 8.9}; // HV CO2 - double parameterGuess[] = {4802.7795779589, -440.6638711230, -7.6109236981, - 4.8742002317, 0.1, -0.0420817811}; // HV methan570 - // double parameterGuess[] = {3204.3057406886, -2753.7379912645, -12.4728330162 - // , 13.0150379323}; // HV - // double parameterGuess[] = {8.992E3, -3.244E3, -8.424E0, -1.824E0}; // HV - // double parameterGuess[] = {-7.132E2, -3.933E2};//, 3.96E0, 9.602E-1}; //, - // 1.239}; //WS - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM LuciaData WHERE Component='methane' AND ID<3000 AND Temperature<520 AND Y<>NULL AND Y>0.00000001 ORDER BY Temperature,Pressure");// AND - // Reference='Houghton1957' - // AND - // Reference<>'Nighswander1989' - // AND - // Temperature>278.15 - // AND - // Temperature<383.15 - // AND - // Pressure<60.01325"); - // dataSet = database.getResultSet( "SELECT * FROM LuciaData WHERE - // Component='CO2' AND ID<3000 AND Temperature>250 AND Temperature<420 AND - // Y<>NULL AND Y>0.00000001 ORDER BY Temperature,Pressure");// AND - // Reference='Houghton1957' AND Reference<>'Nighswander1989' AND - // Temperature>278.15 AND Temperature<383.15 AND Pressure<60.01325"); - - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - // testSystem.addComponent(dataSet.getString("ComponentSolute"), 1.0); - // testSystem.addComponent(dataSet.getString("ComponentSolvent"), 1.0); - try { - int p = 0; - while (dataSet.next() && p < 100) { - p++; - BinaryWSParameterFittingToSolubilityData function = - new BinaryWSParameterFittingToSolubilityData(0, 0); - - // SystemInterface testSystem = new - // SystemFurstElectrolyteEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1e5); - SystemInterface testSystem = new SystemSrkSchwartzentruberEos( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure")) / 1e5); - // SystemInterface testSystem = new - // SystemSrkEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1e5); - // SystemInterface testSystem = new - // SystemPrEos(Double.parseDouble(dataSet.getString("Temperature")), - // Double.parseDouble(dataSet.getString("Pressure"))/1e5); - // testSystem.addComponent("CO2", 10.0); - testSystem.addComponent("methane", 10.0); - testSystem.addComponent("water", 10.0); - - // testSystem.addComponent("CO2", 1.0); - // testSystem.addComponent("water", 1.0); - // testSystem.addComponent("MDEA", 1.000001); - // testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(5); - - // testSystem.getChemicalReactionOperations().solveChemEq(0); - // testSystem.getChemicalReactionOperations().solveChemEq(1); - - // testSystem.isChemicalSystem(false); - - // testSystem.addComponent("NaPlus", 1.0e-10); - // testSystem.addComponent("methane", 1.1); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.01}; - double val = 1.0 - Double.parseDouble(dataSet.getString("Y")); - double sdev = val / 100.0; - SampleValue sample = new SampleValue(val, sdev, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - // double parameterGuess[] = {3932.0, -4127.0, -5.89, 8.9}; // HV CO2 - double parameterGuess[] = {4802.7795779589, -440.6638711230, -7.6109236981, - 4.8742002317, 0.1, -0.0420817811}; // HV methan570 - // double parameterGuess[] = {3204.3057406886, -2753.7379912645, -12.4728330162 - // , 13.0150379323}; // HV - // double parameterGuess[] = {8.992E3, -3.244E3, -8.424E0, -1.824E0}; // HV - // double parameterGuess[] = {-7.132E2, -3.933E2};//, 3.96E0, 9.602E-1}; //, - // 1.239}; //WS - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayResult(); - optim.displayCurveFit(); - optim.displayResult(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestSolidAntoine.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestSolidAntoine.java deleted file mode 100644 index 4cb5d76cf0..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/TestSolidAntoine.java +++ /dev/null @@ -1,81 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestSolidAntoine class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestSolidAntoine { - static Logger logger = LogManager.getLogger(TestSolidAntoine.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - - ResultSet dataSet = database.getResultSet( - "SELECT * FROM BinaryFreezingPointData WHERE ComponentSolvent1='MEG' ORDER BY FreezingTemperature"); - - try { - while (dataSet.next()) { - FreezeSolidFunction function = new FreezeSolidFunction(); - double guess[] = {-7566.84658558, 17.38710706}; // MEG - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 1.101); - testSystem.addComponent(dataSet.getString("ComponentSolvent1"), - Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent(dataSet.getString("ComponentSolvent2"), - Double.parseDouble(dataSet.getString("x2"))); - // testSystem.createDatabase(true); - testSystem.setSolidPhaseCheck(true); - testSystem.setMixingRule(4); - testSystem.init(0); - double sample1[] = {testSystem.getPhase(0).getComponent(0).getz()}; - double standardDeviation1[] = {0.1, 0.1, 0.1}; - double val = Double.parseDouble(dataSet.getString("FreezingTemperature")); - testSystem.setTemperature(val); - SampleValue sample = new SampleValue(val, val / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setReference(dataSet.getString("Reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/UMRPRUFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/UMRPRUFunction.java deleted file mode 100644 index 61eebf966e..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/UMRPRUFunction.java +++ /dev/null @@ -1,73 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseEosInterface; -import neqsim.thermo.phase.PhaseGEUnifac; - -/** - *

- * UMRPRUFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class UMRPRUFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for UMRPRUFunction. - *

- */ - public UMRPRUFunction() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - thermoOps.TPflash(); - // system.display(); - return system.getPhases()[0].getComponents()[1].getx(); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - - if (i == 0) { - PhaseGEUnifac unifacp = (PhaseGEUnifac) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule().getGEPhase(); - unifacp.setAij(0, 2, value); - unifacp.setAij(1, 2, value); - - PhaseGEUnifac unifacp2 = (PhaseGEUnifac) ((PhaseEosInterface) system.getPhases()[1]) - .getMixingRule().getGEPhase(); - unifacp2.setAij(0, 2, value); - unifacp2.setAij(1, 2, value); - } - - if (i == 1) { - PhaseGEUnifac unifacp = (PhaseGEUnifac) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule().getGEPhase(); - unifacp.setBij(0, 2, value); - unifacp.setBij(1, 2, value); - - PhaseGEUnifac unifacp2 = (PhaseGEUnifac) ((PhaseEosInterface) system.getPhases()[1]) - .getMixingRule().getGEPhase(); - unifacp2.setBij(0, 2, value); - unifacp2.setBij(1, 2, value); - } - - if (i == 2) { - PhaseGEUnifac unifacp = (PhaseGEUnifac) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule().getGEPhase(); - // double aa = unifacp.getAij(0, 2); - unifacp.setAij(2, 0, value); - unifacp.setAij(2, 1, value); - - PhaseGEUnifac unifacp2 = (PhaseGEUnifac) ((PhaseEosInterface) system.getPhases()[1]) - .getMixingRule().getGEPhase(); - unifacp2.setAij(2, 0, value); - unifacp2.setAij(2, 1, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/WongSandlerFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/WongSandlerFunction.java deleted file mode 100644 index 2b175d7880..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/HuronVidalParameterFitting/WongSandlerFunction.java +++ /dev/null @@ -1,77 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.HuronVidalParameterFitting; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; - -/** - * - * @author Even Solbraa - */ -abstract class WongSandlerFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for WongSandlerFunction. - *

- */ - public WongSandlerFunction() {} - - /** {@inheritDoc} */ - @Override - public void setDatabaseParameters() { - params = new double[5]; - params[0] = ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule()).getHVDijParameter(0, 1); - params[1] = ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule()).getHVDijParameter(1, 0); - params[2] = ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule()).getHVDijTParameter(0, 1); - params[3] = ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule()).getHVDijTParameter(1, 0); - params[4] = ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]) - .getMixingRule()).getKijWongSandler(1, 0); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - - if (i == 0) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(0, 1, value); - } - if (i == 1) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(1, 0, value); - } - if (i == 2) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(0, 1, value); - } - if (i == 3) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(1, 0, value); - } - if (i == 4) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHValphaParameter(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHValphaParameter(1, 0, value); - } - if (i == 5) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setKijWongSandler(1, 0, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setKijWongSandler(1, 0, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/freezingFit/SolidComplexFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/freezingFit/SolidComplexFunction.java deleted file mode 100644 index d5e826f3cb..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/freezingFit/SolidComplexFunction.java +++ /dev/null @@ -1,53 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.freezingFit; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermodynamicOperations.flashOps.saturationOps.SolidComplexTemperatureCalc; - -/** - *

- * SolidComplexFunction class. - *

- * - * @author ESOL - * @version $Id: $Id - */ -public class SolidComplexFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(SolidComplexFunction.class); - - /** - *

- * Constructor for SolidComplexFunction. - *

- */ - public SolidComplexFunction() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.calcSolidComlexTemperature("TEG", "water"); - } catch (Exception e) { - logger.error("error", e); - } - // System.out.println("x " + system.getPhases()[1].getComponents()[0].getx()); - return system.getTemperature(); // for lucia data - // return system.getPhases()[0].getComponents()[1].getx(); // for MEG - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i == 1) { - SolidComplexTemperatureCalc.HrefComplex = value; - } - if (i == 0) { - SolidComplexTemperatureCalc.Kcomplex = value; - } - if (i == 2) { - SolidComplexTemperatureCalc.TrefComplex = value * 100.0; - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/freezingFit/TestSolidComplexFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/freezingFit/TestSolidComplexFunction.java deleted file mode 100644 index 3878c7228c..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/freezingFit/TestSolidComplexFunction.java +++ /dev/null @@ -1,77 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.freezingFit; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPAstatoil; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestSolidComplexFunction class. - *

- * - * @author ESOL - * @version $Id: $Id - */ -public class TestSolidComplexFunction { - static Logger logger = LogManager.getLogger(TestSolidComplexFunction.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - NeqSimDataBase database = new NeqSimDataBase(); - - ResultSet dataSet = database.getResultSet( - "SELECT * FROM comlexsolidfreezingdata WHERE Component1='TEG' AND Component2='water'"); - // double parameterGuess[] = {0.1640550024};//, 7578.080};//, 245.0}; - double parameterGuess[] = {0.119803125, 4482.0}; - - try { - while (dataSet.next()) { - SolidComplexFunction function = new SolidComplexFunction(); - - double x1 = Double.parseDouble(dataSet.getString("x1")) * 100; - double x2 = Double.parseDouble(dataSet.getString("x2")) * 100; - double val = Double.parseDouble(dataSet.getString("temperature")); - - SystemInterface testSystem = new SystemSrkCPAstatoil(val, - Double.parseDouble(dataSet.getString("pressure"))); - testSystem.addComponent(dataSet.getString("Component1"), x1); - testSystem.addComponent(dataSet.getString("Component2"), x2); - // testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.init(0); - double sample1[] = {testSystem.getPressure(), testSystem.getTemperature()}; - double standardDeviation1[] = {0.13, 0.1}; - - SampleValue sample = new SampleValue(val, - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(Double.toString(testSystem.getTemperature())); - function.setInitialGuess(parameterGuess); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("error", e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - optim.solve(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction.java deleted file mode 100644 index 56c8078971..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction.java +++ /dev/null @@ -1,382 +0,0 @@ -/* - * IonicInteractionParameterFittingFunction.java - * - * Created on 22. januar 2001, 22:59 - */ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * IonicInteractionParameterFittingFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(IonicInteractionParameterFittingFunction.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunction. - *

- */ - public IonicInteractionParameterFittingFunction() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - // logger.info("pres " + - // system.getPressure()*system.getPhases()[0].getComponent(0).getx()); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getPressure() * system.getPhases()[0].getComponent(0).getx(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0, - H3OplusNumb = 0; - int j = 0; - // do{ - // H3OplusNumb = j; - // j++; - // } - // while(!system.getPhases()[0].getComponents()[j-1].getComponentName().equals("H3O+")); - - j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA+")); - j = 0; - - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA")); - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("HCO3-")); - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("water")); - // logger.info("water numb " + Waternumb); - // logger.info("co2 numb " + CO2Numb); - // logger.info("MDEA numb " + MDEANumb); - // logger.info("HCO3numb numb " + HCO3numb); - // logger.info("MDEAplusNumb numb " + MDEAplusNumb); - - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 1) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 2) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, Waternumb, value); - - if (((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule() != null) { - // ((ElectrolyteMixingRulesInterface)((PhaseModifiedFurstElectrolyteEos)((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getRefPhase(MDEAplusNumb)).getElectrolyteMixingRule()).setWijParameter(0, - // 1, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1].getRefPhase(MDEAplusNumb)) - .getElectrolyteMixingRule().setWijParameter(0, 1, value); - } - } - if (i == 3) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 42) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(H3OplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(H3OplusNumb, MDEANumb, value); - } - - if (i == 4) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameter(CO2Numb, MDEANumb, value * 1e3); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameter(CO2Numb, MDEANumb, value * 1e3); - } - - if (i == 20) { - system.getPhase(0).getComponent(MDEAplusNumb).setStokesCationicDiameter(value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).reInitFurstParam(); - system.getPhase(1).getComponent(MDEAplusNumb).setStokesCationicDiameter(value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).reInitFurstParam(); - } - if (i == 40) { - system.getChemicalReactionOperations().getReactionList().getReaction(0).setK(0, value); - } - if (i == 50) { - system.getChemicalReactionOperations().getReactionList().getReaction(0).setK(1, value); - } - if (i == 60) { - system.getChemicalReactionOperations().getReactionList().getReaction(0).setK(2, value); - } - - if (i == 10) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(CO2Numb, MDEANumb, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(CO2Numb, MDEANumb, value); - } - if (i == 40) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(MDEANumb, CO2Numb, value * 1e8); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(MDEANumb, CO2Numb, value * 1e8); - } - if (i == 10) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(CO2Numb, MDEANumb, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(CO2Numb, MDEANumb, value); - } - if (i == 50) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(MDEANumb, CO2Numb, value * 1e8); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(MDEANumb, CO2Numb, value * 1e8); - } - - // Temp der 1 - if (i == 50) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 40) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 60) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 7) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, Waternumb, value); - } - - // Temp der 2 - if (i == 66) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 20) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 76) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 86) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, Waternumb, value); - } - } - - /** - *

- * setFittingParams5. - *

- * - * @param i a int - * @param value a double - */ - public void setFittingParams5(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0; - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("MDEAplus")); - j = 0; - - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA")); - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("HCO3minus")); - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("water")); - - // Temp der 1 - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 1) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 10) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 2) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, Waternumb, value); - } - - // Temp der 2 - if (i == 23) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 20) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 4) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 5) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, Waternumb, value); - } - } - - /** - *

- * setFittingParams3. - *

- * - * @param i a int - * @param value a double - */ - @SuppressWarnings("unused") - public void setFittingParams3(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0; - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("MDEAplus")); - j = 0; - - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA")); - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("HCO3minus")); - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("water")); - - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCH4.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCH4.java deleted file mode 100644 index 202ed841a8..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCH4.java +++ /dev/null @@ -1,144 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * IonicInteractionParameterFittingFunctionCH4 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunctionCH4 extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(IonicInteractionParameterFittingFunctionCH4.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunctionCH4. - *

- */ - public IonicInteractionParameterFittingFunctionCH4() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - // logger.info("pres " + - // system.getPressure()*system.getPhases()[0].getComponent(0).getx()); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getPressure(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - @SuppressWarnings("unused") - public void setFittingParams(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, methanenumb = 0, CO2Numb = 0, HCO3numb = 0, - Waternumb = 0, methane = 0; - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA+")); - j = 0; - - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA")); - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("HCO3-")); - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("water")); - j = 0; - do { - methanenumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("methane")); - if (i == 10) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameter(methane, CO2Numb, value); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameter(methane, CO2Numb, value); - } - if (i == 1) { - ((PhaseEosInterface) system.getPhases()[0]).getMixingRule() - .setBinaryInteractionParameter(methane, MDEANumb, value * 1e3); - ((PhaseEosInterface) system.getPhases()[1]).getMixingRule() - .setBinaryInteractionParameter(methane, MDEANumb, value * 1e3); - } - if (i == 2) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, methane, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, methane, value); - } - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, methane, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, methane, value); - } - if (i == 11) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(methane, MDEANumb, value * 1e4); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(methane, MDEANumb, value * 1e4); - } - if (i == 21) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(MDEANumb, methane, value * 1e4); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(MDEANumb, methane, value * 1e4); - } - - if (i == 61) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 22) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(CO2Numb, MDEANumb, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(CO2Numb, MDEANumb, value); - } - if (i == 32) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(MDEANumb, CO2Numb, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(MDEANumb, CO2Numb, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCH4_1.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCH4_1.java deleted file mode 100644 index 7b10e07b7d..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCH4_1.java +++ /dev/null @@ -1,32 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -/** - *

- * IonicInteractionParameterFittingFunctionCH4_1 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunctionCH4_1 - extends IonicInteractionParameterFittingFunctionCH4 { - /** - *

- * Constructor for IonicInteractionParameterFittingFunctionCH4_1. - *

- */ - public IonicInteractionParameterFittingFunctionCH4_1() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - // System.out.println("pres " + - // system.getPressure()*system.getPhases()[0].getComponent(0).getx()); - } catch (Exception e) { - // System.out.println(e.toString()); - } - return system.getPressure() * system.getPhase(0).getComponent(1).getx(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCo2nacl.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCo2nacl.java deleted file mode 100644 index e6dee3940d..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionCo2nacl.java +++ /dev/null @@ -1,78 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * IonicInteractionParameterFittingFunctionCo2nacl class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunctionCo2nacl extends LevenbergMarquardtFunction { - static Logger logger = - LogManager.getLogger(IonicInteractionParameterFittingFunctionCo2nacl.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunctionCo2nacl. - *

- */ - public IonicInteractionParameterFittingFunctionCo2nacl() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.TPflash(); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getPhase(1).getComponent(0).getx() - / (1.0 - system.getPhase(1).getComponent(2).getx() - - system.getPhase(1).getComponent(3).getx()); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - int CO2Numb = 0, Naplusnumb = 0; - int j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - Naplusnumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals(system.getPhases()[0].getComponents()[2].getComponentName())); - - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(Naplusnumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(Naplusnumb, CO2Numb, value); - } - - if (i == 1) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(Naplusnumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(Naplusnumb, CO2Numb, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionPiperazine.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionPiperazine.java deleted file mode 100644 index 8f4d7db245..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunctionPiperazine.java +++ /dev/null @@ -1,401 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * IonicInteractionParameterFittingFunctionPiperazine class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunctionPiperazine extends LevenbergMarquardtFunction { - static Logger logger = - LogManager.getLogger(IonicInteractionParameterFittingFunctionPiperazine.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunctionPiperazine. - *

- */ - public IonicInteractionParameterFittingFunctionPiperazine() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - // System.out.println("pres " + - // system.getPressure()*system.getPhases()[0].getComponent(0).getx()); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getPressure() * system.getPhases()[0].getComponent(0).getx(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - @SuppressWarnings("unused") - public void setFittingParams(int i, double value) { - params[i] = value; - int PiperazineplusNumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0, PiperazineNumb = 0; - int j = 0; - do { - PiperazineNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("Piperazine")); - - j = 0; - do { - PiperazineplusNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("Piperazine+")); - - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("HCO3-")); - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("water")); - // System.out.println("water numb " + Waternumb); - // System.out.println("co2 numb " + CO2Numb); - // System.out.println("MDEA numb " + MDEANumb); - // System.out.println("HCO3numb numb " + HCO3numb); - // System.out.println("MDEAplusNumb numb " + MDEAplusNumb); - - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(PiperazineplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(PiperazineplusNumb, CO2Numb, value); - } - if (i == 1) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(PiperazineplusNumb, PiperazineNumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(PiperazineplusNumb, PiperazineNumb, value); - } - // if(i==1){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijParameter(PiperazineplusNumb, - // Waternumb, value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijParameter(PiperazineplusNumb, - // Waternumb, value); - - // if((ElectrolyteMixingRulesInterface)((PhaseModifiedFurstElectrolyteEos)((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getRefPhase(PiperazineplusNumb)).getElectrolyteMixingRule()!=null){ - // //((ElectrolyteMixingRulesInterface)((PhaseModifiedFurstElectrolyteEos)((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getRefPhase(PiperazineplusNumb)).getElectrolyteMixingRule()).setWijParameter(0, - // 1, value); - // ((ElectrolyteMixingRulesInterface)((PhaseModifiedFurstElectrolyteEos)((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getRefPhase(PiperazineplusNumb)).getElectrolyteMixingRule()).setWijParameter(0, - // 1, value); - // } - // } - // if(i==2){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijParameter(PiperazineplusNumb,HCO3numb, - // value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijParameter(PiperazineplusNumb,HCO3numb, - // value); - // } - // if(i==42){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijParameter(H3OplusNumb, - // MDEANumb, value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijParameter(H3OplusNumb, - // MDEANumb, value); - // } - - // if(i==4){ - // ((PhaseEosInterface)system.getPhases()[0]).getMixingRule().setBinaryInteractionParameter(CO2Numb,MDEANumb, - // value*1e3); - // ((PhaseEosInterface)system.getPhases()[1]).getMixingRule().setBinaryInteractionParameter(CO2Numb,MDEANumb, - // value*1e3); - // } - - // if(i==20){ - // system.getPhase(0).getComponent(MDEAplusNumb).setStokesCationicDiameter(value); - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).reInitFurstParam(); - // system.getPhase(1).getComponent(MDEAplusNumb).setStokesCationicDiameter(value); - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).reInitFurstParam(); - // } - // if(i==40){ - // system.getChemicalReactionOperations().getReactionList().getReaction(0).setK(0,value); - // } - // if(i==50){ - // system.getChemicalReactionOperations().getReactionList().getReaction(0).setK(1,value); - // } - // if(i==60){ - // system.getChemicalReactionOperations().getReactionList().getReaction(0).setK(2,value); - // } - - // if(i==10){ - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()).setHVDijParameter(CO2Numb,MDEANumb, - // value); - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()).setHVDijParameter(CO2Numb,MDEANumb, - // value); - // } - // if(i==40){ - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()).setHVDijParameter(MDEANumb, - // CO2Numb, value*1e8); - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()).setHVDijParameter(MDEANumb, - // CO2Numb, value*1e8); - // } - // if(i==10){ - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()).setHVDijTParameter(CO2Numb,MDEANumb, - // value); - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()).setHVDijTParameter(CO2Numb,MDEANumb, - // value); - // } - // if(i==50){ - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()).setHVDijTParameter(MDEANumb, - // CO2Numb, value*1e8); - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()).setHVDijTParameter(MDEANumb, - // CO2Numb, value*1e8); - // } - - // // Temp der 1 - // if(i==50){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijT1Parameter(MDEAplusNumb,MDEANumb, - // value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijT1Parameter(MDEAplusNumb,MDEANumb, - // value); - // } - // if(i==40){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijT1Parameter(MDEAplusNumb,CO2Numb, - // value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijT1Parameter(MDEAplusNumb,CO2Numb, - // value); - // } - // if(i==60){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijT1Parameter(MDEAplusNumb,HCO3numb, - // value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijT1Parameter(MDEAplusNumb,HCO3numb, - // value); - // } - // if(i==7){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijT1Parameter(MDEAplusNumb, - // Waternumb, value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijT1Parameter(MDEAplusNumb, - // Waternumb, value); - // } - - // // Temp der 2 - // if(i==66){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijT2Parameter(MDEAplusNumb,MDEANumb, - // value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijT2Parameter(MDEAplusNumb,MDEANumb, - // value); - // } - // if(i==20){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijT2Parameter(MDEAplusNumb,CO2Numb, - // value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijT2Parameter(MDEAplusNumb,CO2Numb, - // value); - // } - // if(i==76){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijT2Parameter(MDEAplusNumb,HCO3numb, - // value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijT2Parameter(MDEAplusNumb,HCO3numb, - // value); - // } - // if(i==86){ - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijT2Parameter(MDEAplusNumb, - // Waternumb, value); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijT2Parameter(MDEAplusNumb, - // Waternumb, value); - // } - } - - /** - *

- * setFittingParams5. - *

- * - * @param i a int - * @param value a double - */ - public void setFittingParams5(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0; - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("MDEAplus")); - j = 0; - - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA")); - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("HCO3minus")); - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("water")); - - // Temp der 1 - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 1) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 10) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 2) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, Waternumb, value); - } - - // Temp der 2 - if (i == 23) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 20) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 4) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 5) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, Waternumb, value); - } - } - - /** - *

- * setFittingParams3. - *

- * - * @param i a int - * @param value a double - */ - @SuppressWarnings("unused") - public void setFittingParams3(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0; - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("MDEAplus")); - j = 0; - - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA")); - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("HCO3minus")); - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("water")); - - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_1.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_1.java deleted file mode 100644 index 28274c47f3..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_1.java +++ /dev/null @@ -1,37 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -/** - *

- * IonicInteractionParameterFittingFunction_1 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunction_1 - extends IonicInteractionParameterFittingFunction { - static Logger logger = LogManager.getLogger(IonicInteractionParameterFittingFunction_1.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunction_1. - *

- */ - public IonicInteractionParameterFittingFunction_1() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - // System.out.println("pres " + - // system.getPressure()*system.getPhases()[0].getComponent(0).getx()); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getPressure(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_CO2.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_CO2.java deleted file mode 100644 index 50f335744f..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_CO2.java +++ /dev/null @@ -1,352 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * IonicInteractionParameterFittingFunction_CO2 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunction_CO2 extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(IonicInteractionParameterFittingFunction_CO2.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunction_CO2. - *

- */ - public IonicInteractionParameterFittingFunction_CO2() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getPressure() * system.getPhases()[0].getComponent(0).getx(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0; - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA+")); - j = 0; - - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA")); - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("HCO3-")); - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("water")); - - if (i == 1) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(CO2Numb, MDEANumb, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(CO2Numb, MDEANumb, value); - } - if (i == 0) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(MDEANumb, CO2Numb, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(MDEANumb, CO2Numb, value); - } - if (i == 2) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(CO2Numb, MDEANumb, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(CO2Numb, MDEANumb, value); - } - if (i == 3) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(MDEANumb, CO2Numb, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(MDEANumb, CO2Numb, value); - } - if (i == 4) { - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHValphaParameter(CO2Numb, MDEANumb, value); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHValphaParameter(CO2Numb, MDEANumb, value); - } - if (i == 5) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - } - // if(i==2){ - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()).setHVDijTParameter(CO2Numb,MDEANumb, - // value); - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()).setHVDijTParameter(CO2Numb,MDEANumb, - // value); - // } - // if(i==3){ - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()).setHVDijTParameter(MDEANumb, - // CO2Numb, value); - // ((HVmixingRuleInterface) - // ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()).setHVDijTParameter(MDEANumb, - // CO2Numb, value); - // } - - if (i == 30) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 20) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 66) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 56) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, Waternumb, value); - } - - // Temp der 1 - if (i == 30) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 20) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 40) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 50) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, Waternumb, value); - } - - // Temp der 2 - if (i == 60) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 20) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 7) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 8) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, Waternumb, value); - } - } - - /** - *

- * setFittingParams5. - *

- * - * @param i a int - * @param value a double - */ - public void setFittingParams5(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3numb = 0, Waternumb = 0; - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("MDEAplus")); - j = 0; - - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA")); - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - HCO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("HCO3minus")); - j = 0; - do { - Waternumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("water")); - - // Temp der 1 - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 3) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 1) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 2) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT1Parameter(MDEAplusNumb, Waternumb, value); - } - - // Temp der 2 - if (i == 23) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, MDEANumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, MDEANumb, value); - } - if (i == 20) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, CO2Numb, value); - } - if (i == 4) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, HCO3numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, HCO3numb, value); - } - if (i == 5) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, Waternumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijT2Parameter(MDEAplusNumb, Waternumb, value); - } - } - - /** - *

- * setFittingParams3. - *

- * - * @param i a int - * @param value a double - */ - public void setFittingParams3(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, CO2Numb = 0; - // double MDEANumb = 0, HCO3numb = 0, Waternumb = 0; - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("MDEAplus")); - j = 0; - - do { - // MDEANumb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("MDEA")); - j = 0; - do { - CO2Numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName().equals("CO2")); - j = 0; - - do { - // HCO3numb = j; - j++; - } while (!system.getPhases()[0].getComponents()[j - 1].getComponentName() - .equals("HCO3minus")); - - /* - * j = 0; do { Waternumb = j; j++; } while (!system.getPhases()[0].getComponents()[j - - * 1].getComponentName().equals("water")); - */ - - if (i == 0) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, CO2Numb, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_Sleipner.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_Sleipner.java deleted file mode 100644 index cb804b1ac5..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_Sleipner.java +++ /dev/null @@ -1,195 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.ThermodynamicConstantsInterface; -import neqsim.thermo.component.ComponentEosInterface; -import neqsim.thermo.mixingRule.HVmixingRuleInterface; -import neqsim.thermo.phase.PhaseEosInterface; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * IonicInteractionParameterFittingFunction_Sleipner class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunction_Sleipner extends LevenbergMarquardtFunction - implements ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - static Logger logger = - LogManager.getLogger(IonicInteractionParameterFittingFunction_Sleipner.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunction_Sleipner. - *

- */ - public IonicInteractionParameterFittingFunction_Sleipner() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - // logger.info("pres " + - // system.getPressure()*system.getPhases()[0].getComponent(0).getx()); - } catch (Exception e) { - logger.error(e.toString()); - } - - // logger.info("pressure "+system.getPressure()); - return system.getPressure(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - int MDEAplusNumb = 0, MDEANumb = 0, AcidNumb = 0, AcidnegNumb = 0; - // int CO2Numb = 0, HCO3Numb = 0, WaterNumb = 0; - int j = 0; - do { - MDEAplusNumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("MDEA+")); - - j = 0; - do { - MDEANumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("MDEA")); - - /* - * j = 0; do { CO2Numb = j; j++; } while (!system.getPhases()[1].getComponents()[j - - * 1].getComponentName().equals("CO2")); - */ - - /* - * j = 0; do { HCO3Numb = j; j++; } while (!system.getPhases()[1].getComponents()[j - - * 1].getComponentName().equals("HCO3-")); - */ - - /* - * j = 0; do { WaterNumb = j; j++; } while (!system.getPhases()[1].getComponents()[j - - * 1].getComponentName().equals("water")); - */ - - j = 0; - do { - AcidNumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName() - .equals("AceticAcid")); - - j = 0; - do { - AcidnegNumb = j; - j++; - } while (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("Ac-")); - // logger.info("Acetate - // "+system.getPhase(1).getComponent(AcidnegNumb).getNumberOfmoles()); - // logger.info("HCO3- " + system.getPhase(1).getComponent(HCO3Numb).getx()); - // logger.info("Ac- " + system.getPhase(1).getComponent(AcidnegNumb).getx()); - // logger.info("HAc " + system.getPhase(1).getComponent(AcidNumb).getx()); - - if (i == 1) { - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(AcidnegNumb, MDEAplusNumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(AcidnegNumb, MDEAplusNumb, value); - } - if (i == 0) { - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]).getElectrolyteMixingRule()).setWijParameter(AcidnegNumb, - // MDEAplusNumb,-3.12174e-4); - // ((ElectrolyteMixingRulesInterface) - // ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]).getElectrolyteMixingRule()).setWijParameter(AcidnegNumb, - // MDEAplusNumb,-3.12174e-4); - - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[0]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, AcidNumb, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhases()[1]).getElectrolyteMixingRule() - .setWijParameter(MDEAplusNumb, AcidNumb, value); - - /* - * double a1 = ((ComponentEosInterface)system.getPhases()[1].getComponent(AcidNumb)). - * geta(); double a2 = - * ((ComponentEosInterface)system.getPhases()[1].getComponent(MDEANumb)). geta(); double - * b1 = ((ComponentEosInterface)system.getPhases()[1].getComponent(AcidNumb)). getb(); - * double b2 = ((ComponentEosInterface)system.getPhases()[1].getComponent(MDEANumb)). - * getb(); double g11 = -a1/b1*Math.log(2); double g22 = -a2/b2*Math.log(2); double g12 - * = -2*Math.sqrt(b1*b2)/(b1+b2)*Math.sqrt(g11*g22)*(1-(0.2)); double para0 = - * (g12-g22)/R; double para1 = (g12-g11)/R; - * - * ((HVmixingRuleInterface) ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()). - * setHValphaParameter(AcidNumb,MDEANumb,0); ((HVmixingRuleInterface) - * ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()). - * setHValphaParameter(AcidNumb,MDEANumb,0); ((HVmixingRuleInterface) - * ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()). setHVDijParameter - * (AcidNumb,MDEANumb,para0); ((HVmixingRuleInterface) - * ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()). setHVDijParameter - * (AcidNumb,MDEANumb,para0); ((HVmixingRuleInterface) - * ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()). setHVDijParameter - * (MDEANumb,AcidNumb,para1); ((HVmixingRuleInterface) - * ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()). setHVDijParameter - * (MDEANumb,AcidNumb,para1); ((HVmixingRuleInterface) - * ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()). - * setHVDijTParameter(AcidNumb,MDEANumb,0); ((HVmixingRuleInterface) - * ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()). - * setHVDijTParameter(AcidNumb,MDEANumb,0); ((HVmixingRuleInterface) - * ((PhaseEosInterface)system.getPhases()[0]).getMixingRule()). - * setHVDijTParameter(MDEANumb,AcidNumb,0); ((HVmixingRuleInterface) - * ((PhaseEosInterface)system.getPhases()[1]).getMixingRule()). - * setHVDijTParameter(MDEANumb,AcidNumb,0); - */} - if (i == 2) { - double a1 = - ((ComponentEosInterface) system.getPhases()[1].getComponent(AcidNumb)).geta(); - double a2 = - ((ComponentEosInterface) system.getPhases()[1].getComponent(MDEANumb)).geta(); - double b1 = - ((ComponentEosInterface) system.getPhases()[1].getComponent(AcidNumb)).getb(); - double b2 = - ((ComponentEosInterface) system.getPhases()[1].getComponent(MDEANumb)).getb(); - double g11 = -a1 / b1 * Math.log(2); - double g22 = -a2 / b2 * Math.log(2); - double g12 = -2 * Math.sqrt(b1 * b2) / (b1 + b2) * Math.sqrt(g11 * g22) * (1 - value); - double para0 = (g12 - g22) / R; - double para1 = (g12 - g11) / R; - - // logger.info("para0 "+ para0); - // logger.info("para1 "+ para1); - - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHValphaParameter(AcidNumb, MDEANumb, 0.0); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHValphaParameter(AcidNumb, MDEANumb, 0.0); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(AcidNumb, MDEANumb, para0); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(AcidNumb, MDEANumb, para0); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijParameter(MDEANumb, AcidNumb, para1); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijParameter(MDEANumb, AcidNumb, para1); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(AcidNumb, MDEANumb, 0.0); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(AcidNumb, MDEANumb, 0.0); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[0]).getMixingRule()) - .setHVDijTParameter(MDEANumb, AcidNumb, 0.0); - ((HVmixingRuleInterface) ((PhaseEosInterface) system.getPhases()[1]).getMixingRule()) - .setHVDijTParameter(MDEANumb, AcidNumb, 0.0); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_Sleipnernoacid.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_Sleipnernoacid.java deleted file mode 100644 index ef831242bb..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/IonicInteractionParameterFittingFunction_Sleipnernoacid.java +++ /dev/null @@ -1,117 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.ThermodynamicConstantsInterface; - -/** - *

- * IonicInteractionParameterFittingFunction_Sleipnernoacid class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class IonicInteractionParameterFittingFunction_Sleipnernoacid - extends LevenbergMarquardtFunction implements ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - static Logger logger = - LogManager.getLogger(IonicInteractionParameterFittingFunction_Sleipnernoacid.class); - - /** - *

- * Constructor for IonicInteractionParameterFittingFunction_Sleipnernoacid. - *

- */ - public IonicInteractionParameterFittingFunction_Sleipnernoacid() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.bubblePointPressureFlash(false); - // System.out.println("pressure: " + system.getPressure()); - } catch (Exception e) { - logger.error(e.toString()); - } - - return system.getPressure(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - /* - * int MDEAplusNumb = 0, MDEANumb = 0, CO2Numb = 0, HCO3Numb = 0, WaterNumb = 0, AcidnegNumb - * = 0; int j = 0; do { MDEAplusNumb = j; j++; } while - * (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("MDEA+")); j = - * 0; - * - * do { MDEANumb = j; j++; } while (!system.getPhases()[1].getComponents()[j - - * 1].getComponentName().equals("MDEA")); j = 0; - * - * do { CO2Numb = j; j++; } while (!system.getPhases()[1].getComponents()[j - - * 1].getComponentName().equals("CO2")); - * - * // System.out.println("CO2 " + CO2Numb ); j = 0; do { HCO3Numb = j; j++; } while - * (!system.getPhases()[1].getComponents()[j - 1].getComponentName().equals("HCO3-")); - * - * j = 0; do { WaterNumb = j; j++; } while (!system.getPhases()[1].getComponents()[j - - * 1].getComponentName().equals("water")); - * - * j = 0; do { AcidnegNumb = j; j++; } while (!system.getPhases()[1].getComponents()[j - - * 1].getComponentName().equals("Ac-")); - */ - // System.out.println("HCO3- " + - // system.getPhase(1).getComponent(HCO3Numb).getx()); - - /* - * System.out.println("Ac- " + system.getPhase(1).getComponent(AcidnegNumb).getx()); - * System.out.println("HAc " + system.getPhase(1).getComponent(AcidNumb).getx()); - */ - - /* - * if(i==0){ ((ElectrolyteMixingRulesInterface) - * ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]). - * getElectrolyteMixingRule()).setWijParameter(MDEAplusNumb,WaterNumb, value); - * ((ElectrolyteMixingRulesInterface) - * ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]). - * getElectrolyteMixingRule()).setWijParameter(MDEAplusNumb,WaterNumb, value); } if(i==1){ - * ((ElectrolyteMixingRulesInterface) - * ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]). - * getElectrolyteMixingRule()).setWijParameter(MDEAplusNumb, CO2Numb,value); - * ((ElectrolyteMixingRulesInterface) - * ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]). - * getElectrolyteMixingRule()).setWijParameter(MDEAplusNumb, CO2Numb,value); } if(i==2){ - * ((ElectrolyteMixingRulesInterface) - * ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]). - * getElectrolyteMixingRule()).setWijParameter(MDEAplusNumb, MDEANumb, value); - * ((ElectrolyteMixingRulesInterface) - * ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]). - * getElectrolyteMixingRule()).setWijParameter(MDEAplusNumb, MDEANumb, value); } if(i==3){ - * ((ElectrolyteMixingRulesInterface) - * ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]). - * getElectrolyteMixingRule()).setWijParameter(MDEAplusNumb,HCO3Numb, value); - * ((ElectrolyteMixingRulesInterface) - * ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]). - * getElectrolyteMixingRule()).setWijParameter(MDEAplusNumb,HCO3Numb, value); } - */ - - /* - * if(i==0){ ((ElectrolyteMixingRulesInterface) - * ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[0]). - * getElectrolyteMixingRule()).setWijParameter(MDEAplusNumb, AcidnegNumb, value); - * ((ElectrolyteMixingRulesInterface) - * ((PhaseModifiedFurstElectrolyteEos)system.getPhases()[1]). - * getElectrolyteMixingRule()).setWijParameter(MDEAplusNumb, AcidnegNumb, value); } - */ - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting.java deleted file mode 100644 index 6ec81f20eb..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting.java +++ /dev/null @@ -1,284 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestIonicInteractionParameterFitting class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestIonicInteractionParameterFitting { - static Logger logger = LogManager.getLogger(TestIonicInteractionParameterFitting.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM CO2KurCor WHERE - // Reference<>'Bahiri1984' AND Temperature<373.15 ORDER BY - // wtMDEA,Temperature,Reference,loading"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM CO2KurCor WHERE - // Reference<>'Bahiri1984' AND Temperature<393.15 AND loading>0.05 AND loading<1.2 AND - // VapourPressure1<15.0 AND wtMDEA>40 AND wtMDEA<60 ORDER BY - // wtMDEA,Temperature,Reference,loading"); - - // //ResultSet dataSet = database.getResultSet( "SELECT * FROM CO2KurCor WHERE - // Reference<>'Bahiri1984' AND wtMDEA>40.0 AND Temperature>=280.15 AND Temperature<=470.15 - // AND loading>0.00002 AND VapourPressure1<25.0 ORDER BY wtMDEA,Temperature,Reference"); - // // ResultSet dataSet = database.getResultSet( "SELECT * FROM activityCoefficientTable - // WHERE Component1='MDEA' AND Component2='water'");AND Reference='Lemoine2000' - // //ResultSet dataSet = database.getResultSet( "SELECT * FROM CO2KurCor WHERE - // Reference='Austgen1991' AND loading>0.01"); - - // try{ - // int i=0; - // while(dataSet.next() && i<450){ - // i++; - // IonicInteractionParameterFittingFunction function = new - // IonicInteractionParameterFittingFunction(); - // //IonicInteractionParameterFittingFunction_CO2 function = new - // IonicInteractionParameterFittingFunction_CO2(); - // //double guess[] = {-0.0005842392, 0.0003621714, 0.0481887797, - // 239.2501170265};//{-0.0000629, 0.00001255, 0.05, 240.8165};//, - // 0.311975E-4};//,0.0001439};//, 0.00000001439};//, -0.0000745697};//, 263.73, - // 466.41,0.1,0.1};//, 1.0,1.0};//;{-2.9222e-6, -7.991E-6, 3.924E-6};//,1.0,1.0};//, - // -7.223e-4}; - // //double bounds[][] = - // {{-0.0055,0.0055}};//,{-0.0055,0.0055},{-10.001,10.001},{-1.0015,1.0015},{-320.0015,320.0015},{-320.901,320.900195},{-1.0,1000},{-0.800001,0.8},{-80000.01,20000.8},{-0.01,10.6},{-0.01,0.0015},{-0.01,0.0015}}; - // //double guess[] = {0.0000231069, 0.0001092540, 0.00001046762};//, -0.0001190554};//, - // 1e-3,1e-3,1e-3,1e-3};//, 1110.0e-8};//, 0.0001052339, -0.0001046940};//,-2753.0e-8, - // 13.01e-8};//, 242.6021196937,-7858.0,-36.7816};//, -2753.0e-4, 13.01e-4};//, - // -0.00002653966};//, -0.000000745697};//,-2753.0e-4, 13.01e-4};//, - // 0.0000152542010};//,4.5};//, -2753.0e-4, 13.01e-4};//, 240.2701596331};// - // -2753.7379912645, 13.0150379323};//, -2.5254669805767994E-6};//,0.78000000000};// - // 241.2701596331, 0.8000000000};//, 3.162827E-4, -2.5254669805767994E-4};//, - // 239.2501170265};//, 3.11975E-5}; - // double guess[] = {0.0000260019, -0.0001172396, 0.0000615323, -0.0001285810};//, - // -0.0004677550, -0.0000389863};//, 2.88281314E-4};// detailed reactions - // // -0,0000186524 -0,0000470206 0,0000816440 -0,0001147055 -0,1422977509 -0,0351820850 - // 0,1531978514 -0,0062978601 - // //double guess[] = {0,0041639953 0,0009961457};, - // //double guess[] = {-2753.0e-4, 13.01e-4};// 263.73, -5.717, 8.6}; - // //SystemInterface testSystem = new SystemElectrolyteCPA((273.15+25.0), 1.0); - // SystemInterface testSystem = new SystemFurstElectrolyteEos((273.15+25.0), 1.0); - // testSystem.addComponent("CO2", Double.parseDouble(dataSet.getString("x1"))); - // testSystem.addComponent("MDEA", Double.parseDouble(dataSet.getString("x2"))); - // testSystem.addComponent("water", Double.parseDouble(dataSet.getString("x3"))); - // double temperature = Double.parseDouble(dataSet.getString("Temperature")); - // double pressure = Double.parseDouble(dataSet.getString("VapourPressure1")); - // testSystem.setTemperature(temperature); - // testSystem.setPressure(pressure+1.0); - // testSystem.chemicalReactionInit(); - // // testSystem.createDatabase(true); - // testSystem.setMixingRule(4); - // testSystem.init(0); - // double sample1[] = - // {testSystem.getPhase(0).getComponent(0).getNumberOfmoles()/testSystem.getPhase(0).getComponent(1).getNumberOfmoles()}; - // - // double standardDeviation1[] = {0.01}; - // double stddev = pressure;//Double.parseDouble(dataSet.getString("StandardDeviation")) - // SampleValue sample = new SampleValue(pressure, stddev, sample1, standardDeviation1); - // function.setInitialGuess(guess); - // //function.setBounds(bounds); - // sample.setFunction(function); - // double wtpr = Double.parseDouble(dataSet.getString("wtMDEA")); - // sample.setReference(dataSet.getString("Reference") + " " + temperature); - // sample.setDescription(Double.toString(wtpr)); - // sample.setThermodynamicSystem(testSystem); - // sampleList.add(sample); - // } - // } - // catch(Exception e){ - // logger.error("database error" + e); - // } - - double guess[] = {-0.0001868490, -0.0006868943, -0.0000210224, -0.0002324934, 0.0005}; - ResultSet dataSet = database.getResultSet( - "SELECT * FROM CO2waterMDEA2 WHERE Temperature<'393.15' AND PressureCO2<'20' AND Reference<>'GPA'"); - - try { - int i = 0; - while (dataSet.next() && i < 25) { - int ID = Integer.parseInt(dataSet.getString("ID")); - if ((ID > 56 && ID < 64) || (ID > 92 && ID < 101) || (ID > 123 && ID < 131)) { // 75 - // wt% - // amine - continue; - } - if (ID == 155) { - continue; // AAD >100 - } - if (ID == 29 || ID == 28 || ID == 258) { - continue; // large values of Pexp/Pcalc - } - - i++; - IonicInteractionParameterFittingFunction function = - new IonicInteractionParameterFittingFunction(); - // IonicInteractionParameterFittingFunction_CO2 function = new - // IonicInteractionParameterFittingFunction_CO2(); - // double guess[] = {-0.0005842392, 0.0003621714, 0.0481887797, - // 239.2501170265};//{-0.0000629, 0.00001255, 0.05, 240.8165};//, - // 0.311975E-4};//,0.0001439};//, 0.00000001439};//, -0.0000745697};//, 263.73, - // 466.41,0.1,0.1};//, 1.0,1.0};//;{-2.9222e-6, -7.991E-6, - // 3.924E-6};//,1.0,1.0};//, -7.223e-4}; - // double bounds[][] = - // {{-0.0055,0.0055}};//,{-0.0055,0.0055},{-10.001,10.001},{-1.0015,1.0015},{-320.0015,320.0015},{-320.901,320.900195},{-1.0,1000},{-0.800001,0.8},{-80000.01,20000.8},{-0.01,10.6},{-0.01,0.0015},{-0.01,0.0015}}; - // double guess[] = {0.0000231069, 0.0001092540, 0.00001046762};//, - // -0.0001190554};//, 1e-3,1e-3,1e-3,1e-3};//, 1110.0e-8};//, 0.0001052339, - // -0.0001046940};//,-2753.0e-8, 13.01e-8};//, - // 242.6021196937,-7858.0,-36.7816};//, -2753.0e-4, 13.01e-4};//, - // -0.00002653966};//, -0.000000745697};//,-2753.0e-4, 13.01e-4};//, - // 0.0000152542010};//,4.5};//, -2753.0e-4, 13.01e-4};//, 240.2701596331};// - // -2753.7379912645, 13.0150379323};//, - // -2.5254669805767994E-6};//,0.78000000000};// 241.2701596331, - // 0.8000000000};//, 3.162827E-4, -2.5254669805767994E-4};//, - // 239.2501170265};//, 3.11975E-5}; - // double guess[] = {0.0000260019, -0.0001172396, 0.0000615323, - // -0.0001285810};//, -0.0004677550, -0.0000389863};//, 2.88281314E-4};// - // detailed reactions - // -0,0000186524 -0,0000470206 0,0000816440 -0,0001147055 -0,1422977509 - // -0,0351820850 0,1531978514 -0,0062978601 - // double guess[] = {0,0041639953 0,0009961457};, - // double guess[] = {-2753.0e-4, 13.01e-4};// 263.73, -5.717, 8.6}; - // SystemInterface testSystem = new SystemElectrolyteCPA((273.15+25.0), 1.0); - SystemInterface testSystem = new SystemFurstElectrolyteEos((273.15 + 25.0), 1.0); - testSystem.addComponent("CO2", Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent("MDEA", Double.parseDouble(dataSet.getString("x3"))); - testSystem.addComponent("water", Double.parseDouble(dataSet.getString("x2"))); - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("PressureCO2")); - testSystem.setTemperature(temperature); - testSystem.setPressure(pressure + 1.0); - testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - double sample1[] = {testSystem.getPhase(0).getComponent(0).getNumberOfmoles() - / testSystem.getPhase(0).getComponent(1).getNumberOfmoles()}; - double standardDeviation1[] = {0.01}; - double stddev = pressure;// Double.parseDouble(dataSet.getString("StandardDeviation")) - SampleValue sample = new SampleValue(pressure, stddev, sample1, standardDeviation1); - function.setInitialGuess(guess); - // function.setBounds(bounds); - sample.setFunction(function); - sample.setReference(dataSet.getString("Reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM CO2waterMDEA2 WHERE Temperature<'393.15' AND Pressure<'20' AND Reference<>'GPA'"); - - try { - int i = 0; - while (dataSet.next() && i < 2) { - int ID = Integer.parseInt(dataSet.getString("ID")); - if ((ID > 56 && ID < 64) || (ID > 92 && ID < 101) || (ID > 123 && ID < 131)) { // 75 - // wt% - // amine - continue; - } - if (ID == 155) { - continue; // AAD >100 - } - if (ID == 29 || ID == 28 || ID == 258) { - continue; // large values of Pexp/Pcalc - } - - i++; - IonicInteractionParameterFittingFunction_1 function = - new IonicInteractionParameterFittingFunction_1(); - // IonicInteractionParameterFittingFunction_CO2 function = new - // IonicInteractionParameterFittingFunction_CO2(); - // double guess[] = {-0.0005842392, 0.0003621714, 0.0481887797, - // 239.2501170265};//{-0.0000629, 0.00001255, 0.05, 240.8165};//, - // 0.311975E-4};//,0.0001439};//, 0.00000001439};//, -0.0000745697};//, 263.73, - // 466.41,0.1,0.1};//, 1.0,1.0};//;{-2.9222e-6, -7.991E-6, - // 3.924E-6};//,1.0,1.0};//, -7.223e-4}; - // double bounds[][] = - // {{-0.0055,0.0055}};//,{-0.0055,0.0055},{-10.001,10.001},{-1.0015,1.0015},{-320.0015,320.0015},{-320.901,320.900195},{-1.0,1000},{-0.800001,0.8},{-80000.01,20000.8},{-0.01,10.6},{-0.01,0.0015},{-0.01,0.0015}}; - // double guess[] = {0.0000231069, 0.0001092540, 0.00001046762};//, - // -0.0001190554};//, 1e-3,1e-3,1e-3,1e-3};//, 1110.0e-8};//, 0.0001052339, - // -0.0001046940};//,-2753.0e-8, 13.01e-8};//, - // 242.6021196937,-7858.0,-36.7816};//, -2753.0e-4, 13.01e-4};//, - // -0.00002653966};//, -0.000000745697};//,-2753.0e-4, 13.01e-4};//, - // 0.0000152542010};//,4.5};//, -2753.0e-4, 13.01e-4};//, 240.2701596331};// - // -2753.7379912645, 13.0150379323};//, - // -2.5254669805767994E-6};//,0.78000000000};// 241.2701596331, - // 0.8000000000};//, 3.162827E-4, -2.5254669805767994E-4};//, - // 239.2501170265};//, 3.11975E-5}; - // double guess[] = {0.0000260019, -0.0001172396, 0.0000615323, - // -0.0001285810};//, -0.0004677550, -0.0000389863};//, 2.88281314E-4};// - // detailed reactions - // -0,0000186524 -0,0000470206 0,0000816440 -0,0001147055 -0,1422977509 - // -0,0351820850 0,1531978514 -0,0062978601 - // double guess[] = {0,0041639953 0,0009961457};, - // double guess[] = {-2753.0e-4, 13.01e-4};// 263.73, -5.717, 8.6}; - // SystemInterface testSystem = new SystemElectrolyteCPA((273.15+25.0), 1.0); - SystemInterface testSystem = new SystemFurstElectrolyteEos((273.15 + 25.0), 1.0); - testSystem.addComponent("CO2", Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent("MDEA", Double.parseDouble(dataSet.getString("x3"))); - testSystem.addComponent("water", Double.parseDouble(dataSet.getString("x2"))); - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("Pressure")); - testSystem.setTemperature(temperature); - testSystem.setPressure(pressure); - testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - double sample1[] = {testSystem.getPhase(0).getComponent(0).getNumberOfmoles() - / testSystem.getPhase(0).getComponent(1).getNumberOfmoles()}; - double standardDeviation1[] = {0.01}; - double stddev = pressure;// Double.parseDouble(dataSet.getString("StandardDeviation")) - SampleValue sample = new SampleValue(pressure, stddev, sample1, standardDeviation1); - function.setInitialGuess(guess); - // function.setBounds(bounds); - sample.setFunction(function); - sample.setReference(dataSet.getString("Reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayCurveFit(); - // optim.displayGraph(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingCH4.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingCH4.java deleted file mode 100644 index 1c40cf4dd9..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingCH4.java +++ /dev/null @@ -1,160 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestIonicInteractionParameterFittingCH4 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestIonicInteractionParameterFittingCH4 { - static Logger logger = LogManager.getLogger(TestIonicInteractionParameterFittingCH4.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM Co2Ch4MDEA WHERE loading<1.9");// AND - // temperature=313.15 - // AND - // pressure<210 - // AND - // wt=30"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'");AND - // Reference='Lemoine2000' - double guess[] = {-0.0001617266, 0.5 * 1e-3};// , -0.0932324951};//, 0.6465043774,}; - // -0,0001550096 0,0007612383 - - // double guess[] = {-0.0000309356,-0.1469925592,-0.0272808384}; - - try { - int i = 0; - while (dataSet.next() && i < 100) { - i++; - IonicInteractionParameterFittingFunctionCH4 function = - new IonicInteractionParameterFittingFunctionCH4(); - - SystemInterface testSystem = new SystemFurstElectrolyteEos((273.15 + 25.0), 100.0); - testSystem.addComponent(dataSet.getString("gass2"), - Double.parseDouble(dataSet.getString("molCH4"))); - testSystem.addComponent(dataSet.getString("gass1"), - Double.parseDouble(dataSet.getString("molCO2"))); - testSystem.addComponent(dataSet.getString("liquid1"), - Double.parseDouble(dataSet.getString("molMDEA"))); - testSystem.addComponent(dataSet.getString("liquid2"), - Double.parseDouble(dataSet.getString("molWater"))); - - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("Pressure")); - testSystem.setPressure(pressure); - testSystem.setTemperature(temperature); - testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - double sample1[] = {testSystem.getPhases()[0].getComponents()[0] - .getNumberOfMolesInPhase() - / testSystem.getPhases()[0].getComponents()[2].getNumberOfMolesInPhase()}; - double standardDeviation1[] = {0.01}; - - SampleValue sample = - new SampleValue(pressure, pressure / 100.0, sample1, standardDeviation1); - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setReference("addicks"); - sample.setDescription(Double.toString(pressure)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - // dataSet = database.getResultSet( "SELECT * FROM Co2Ch4MDEA WHERE loading<1.9 - // AND temperature<453.15 AND pressure<210 AND wt<70"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'");AND - // Reference='Lemoine2000' - dataSet = database.getResultSet("SELECT * FROM Co2Ch4MDEA WHERE loading<1.9");// AND - // temperature=313.15 - // AND - // pressure<210 - // AND - // wt=50"); - try { - int i = 0; - while (!dataSet.next() && i < 100) { - i++; - IonicInteractionParameterFittingFunctionCH4_1 function = - new IonicInteractionParameterFittingFunctionCH4_1(); - - SystemInterface testSystem = new SystemFurstElectrolyteEos((273.15 + 25.0), 100.0); - testSystem.addComponent(dataSet.getString("gass2"), - Double.parseDouble(dataSet.getString("molCH4"))); - testSystem.addComponent(dataSet.getString("gass1"), - Double.parseDouble(dataSet.getString("molCO2"))); - testSystem.addComponent(dataSet.getString("liquid1"), - Double.parseDouble(dataSet.getString("molMDEA"))); - testSystem.addComponent(dataSet.getString("liquid2"), - Double.parseDouble(dataSet.getString("molWater"))); - - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("Pressure")); - testSystem.setPressure(pressure); - testSystem.setTemperature(temperature); - testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - double sample1[] = {testSystem.getPhases()[0].getComponents()[1] - .getNumberOfMolesInPhase() - / testSystem.getPhases()[0].getComponents()[2].getNumberOfMolesInPhase()}; - double standardDeviation1[] = {0.01}; - double y1 = Double.parseDouble(dataSet.getString("y1")); - SampleValue sample = new SampleValue(pressure * y1, y1 * pressure / 100.0, sample1, - standardDeviation1); - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setReference("addicks"); - sample.setDescription(Double.toString(pressure)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayCurveFit(); - // optim.displayGraph(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingCo2nacl.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingCo2nacl.java deleted file mode 100644 index 0e64b4c7b5..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingCo2nacl.java +++ /dev/null @@ -1,99 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestIonicInteractionParameterFittingCo2nacl class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestIonicInteractionParameterFittingCo2nacl { - static Logger logger = LogManager.getLogger(TestIonicInteractionParameterFittingCo2nacl.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM co2wation WHERE comp3='K+' AND temperature>340 AND pressure<190"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'");AND - // Reference='Lemoine2000' - // double guess[] = {-0.0000110329, -0.1238487876};//Na+ - // double guess[] = {0.0000258505};//Na+ all temp - // double guess[] = {0.0000080642};//Na+ 40 - // double guess[] = {0.0000542456};//Na+ 80 - // double guess[] = { -0.0000442947, -0.1933846606};//k+ - // double guess[] = {-0.00000650867};//k+ 40 - double guess[] = {0.0000267226};// k+ 80 - - try { - int i = 0; - while (dataSet.next() && i < 403) { - i++; - IonicInteractionParameterFittingFunctionCo2nacl function = - new IonicInteractionParameterFittingFunctionCo2nacl(); - double temperature = Double.parseDouble(dataSet.getString("temperature")); - double pressure = Double.parseDouble(dataSet.getString("pressure")); - SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, pressure); - testSystem.addComponent("CO2", 10.1); - testSystem.addComponent("water", 1.0, "kg/sec"); - testSystem.addComponent(dataSet.getString("comp3"), - Double.parseDouble(dataSet.getString("x3-molal"))); - testSystem.addComponent(dataSet.getString("comp4"), - Double.parseDouble(dataSet.getString("x4-molal"))); - // testSystem.createDatabase(true); - testSystem.setPressure(pressure); - testSystem.setTemperature(temperature); - testSystem.setMixingRule(4); - testSystem.init(0); - double sample1[] = {pressure}; - double standardDeviation1[] = {0.01}; - double value = Double.parseDouble(dataSet.getString("x1-molfrac")); - SampleValue sample = - new SampleValue(value, value / 100.0, sample1, standardDeviation1); - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setDescription(Double.toString(pressure)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayCurveFit(); - // optim.displayGraph(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingMDEAPiperazine.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingMDEAPiperazine.java deleted file mode 100644 index 7cdc44652e..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingMDEAPiperazine.java +++ /dev/null @@ -1,94 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestIonicInteractionParameterFittingMDEAPiperazine class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestIonicInteractionParameterFittingMDEAPiperazine { - static Logger logger = - LogManager.getLogger(TestIonicInteractionParameterFittingMDEAPiperazine.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - - double guess[] = {0.0007757516};// , -0.00013534324};//, -0.000210224};//, -0.0002324934, - // 0.0005}; - ResultSet dataSet = database.getResultSet("SELECT * FROM CO2waterPZ");// WHERE - // Temperature<393.15 - // AND - // PressureCO2<4"); - - try { - int i = 0; - while (dataSet.next() && i < 25) { - i++; - IonicInteractionParameterFittingFunctionPiperazine function = - new IonicInteractionParameterFittingFunctionPiperazine(); - SystemInterface testSystem = new SystemFurstElectrolyteEos((273.15 + 25.0), 1.0); - testSystem.addComponent("CO2", Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent("Piperazine", Double.parseDouble(dataSet.getString("x3"))); - testSystem.addComponent("water", Double.parseDouble(dataSet.getString("x2"))); - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("PressureCO2")); - testSystem.setTemperature(temperature); - testSystem.setPressure(pressure + 1.0); - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - double sample1[] = {testSystem.getPhase(0).getComponent(0).getNumberOfmoles() - / testSystem.getPhase(0).getComponent(1).getNumberOfmoles()}; - double standardDeviation1[] = {0.01}; - double stddev = pressure;// Double.parseDouble(dataSet.getString("StandardDeviation")) - SampleValue sample = new SampleValue(pressure, stddev, sample1, standardDeviation1); - function.setInitialGuess(guess); - // function.setBounds(bounds); - sample.setFunction(function); - sample.setReference(dataSet.getString("Reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - - optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayCurveFit(); - // optim.displayGraph(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingPiperazine.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingPiperazine.java deleted file mode 100644 index d8cacfb957..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFittingPiperazine.java +++ /dev/null @@ -1,94 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestIonicInteractionParameterFittingPiperazine class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestIonicInteractionParameterFittingPiperazine { - static Logger logger = - LogManager.getLogger(TestIonicInteractionParameterFittingPiperazine.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - - double guess[] = {-0.0001868490, -0.0006868943, -0.0000210224, -0.0002324934, 0.0005}; - ResultSet dataSet = database.getResultSet("SELECT * FROM CO2waterMDEAPiperazine");// WHERE - // Temperature<393.15 - // AND - // PressureCO2<4"); - - try { - int i = 0; - while (dataSet.next() && i < 16) { - i++; - IonicInteractionParameterFittingFunction function = - new IonicInteractionParameterFittingFunction(); - SystemInterface testSystem = new SystemFurstElectrolyteEos((273.15 + 25.0), 1.0); - testSystem.addComponent("CO2", Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent("MDEA", Double.parseDouble(dataSet.getString("x3"))); - testSystem.addComponent("piperazine", Double.parseDouble(dataSet.getString("x4"))); - testSystem.addComponent("water", Double.parseDouble(dataSet.getString("x2"))); - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("PressureCO2")); - testSystem.setTemperature(temperature); - testSystem.setPressure(pressure + 1.0); - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - double sample1[] = {testSystem.getPhase(0).getComponent(0).getNumberOfmoles() - / testSystem.getPhase(0).getComponent(1).getNumberOfmoles()}; - double standardDeviation1[] = {0.01}; - double stddev = pressure;// Double.parseDouble(dataSet.getString("StandardDeviation")) - SampleValue sample = new SampleValue(pressure, stddev, sample1, standardDeviation1); - function.setInitialGuess(guess); - // function.setBounds(bounds); - sample.setFunction(function); - sample.setReference(dataSet.getString("Reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - - // optim.solve(); - // optim.runMonteCarloSimulation(); - // optim.displayCurveFit(); - // optim.displayGraph(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting_Sleipner.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting_Sleipner.java deleted file mode 100644 index 22a50a8c35..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting_Sleipner.java +++ /dev/null @@ -1,93 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

TestIonicInteractionParameterFitting_Sleipner class.

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestIonicInteractionParameterFitting_Sleipner { - static Logger logger = - LogManager.getLogger(TestIonicInteractionParameterFitting_Sleipner.class); - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet("SELECT * FROM Sleipner"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM Sleipneracid"); - - try { - int i = 0; - while (dataSet.next()) { - i++; - IonicInteractionParameterFittingFunction_Sleipner function = - new IonicInteractionParameterFittingFunction_Sleipner(); - // double guess[] = {3.19e-4,-3.12174e-4,-0.2}; - // double guess[]={0.0013916772,-3.951608e-4,-1.8265457361}; //AAD 10.31 % - // double guess[]={0.0014020738,-3.053262}; //AAD 11.44% - // double guess[]={0.0011258675,-9.282787e-4,-1.5524349158}; //AAD 10.74 % - double guess[] = {1.3053127e-3, -2.546896e-4, -0.975168}; // AAD 4.02 % - double bounds[][] = {{-1e-2, 1e-2}, {-1e-3, 0}, {-1, 1}}; - - double ID = Double.parseDouble(dataSet.getString("ID")); - double pressure = Double.parseDouble(dataSet.getString("Pressure")); - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double x1 = Double.parseDouble(dataSet.getString("x1")); - double x2 = Double.parseDouble(dataSet.getString("x2")); - double x3 = Double.parseDouble(dataSet.getString("x3")); - double x4 = Double.parseDouble(dataSet.getString("x4")); - - SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, pressure); - testSystem.addComponent("CO2", x1); - testSystem.addComponent("AceticAcid", x3); - testSystem.addComponent("MDEA", x4); - testSystem.addComponent("water", x2); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {x1 / x4}; - double standardDeviation1[] = {0.1, 0.01}; - double stddev = 0.01; - SampleValue sample = new SampleValue(pressure, stddev, sample1, standardDeviation1); - function.setInitialGuess(guess); - // function.setBounds(bounds); - sample.setFunction(function); - sample.setDescription(Double.toString(ID)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - optim.solve(); - - // optim.displayGraph(); - optim.displayCurveFit(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting_Sleipnernoacid.java b/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting_Sleipnernoacid.java deleted file mode 100644 index 1392d3bbab..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/binaryInteractionParameterFitting/ionicInteractionCoefficientFitting/TestIonicInteractionParameterFitting_Sleipnernoacid.java +++ /dev/null @@ -1,93 +0,0 @@ -package neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.ionicInteractionCoefficientFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemFurstElectrolyteEos; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

TestIonicInteractionParameterFitting_Sleipnernoacid class.

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestIonicInteractionParameterFitting_Sleipnernoacid { - static Logger logger = - LogManager.getLogger(TestIonicInteractionParameterFitting_Sleipnernoacid.class); - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - NeqSimDataBase database = new NeqSimDataBase(); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM CO2KurCor WHERE - // Reference = 'Rho1997' AND Temperature = 323.15 "); - ResultSet dataSet = database.getResultSet("SELECT * FROM Sleipner"); - try { - int i = 0; - while (dataSet.next()) { - i++; - - IonicInteractionParameterFittingFunction_Sleipnernoacid function = - new IonicInteractionParameterFittingFunction_Sleipnernoacid(); - - // double guess[] = {1.046762e-4,0.231069e-4,1.09254e-4,-1.190554e-4}; - double guess[] = {-2.2e-5}; - // double guess[] = {-2.181442e-4}; - // double guess[] = {1.04e-4,0.23e-4,1.0e-4,-1.1e-4}; - double ID = Double.parseDouble(dataSet.getString("ID")); - double x1 = Double.parseDouble(dataSet.getString("x1")); - double x2 = Double.parseDouble(dataSet.getString("x2")); - double x3 = Double.parseDouble(dataSet.getString("x3")); - double x4 = Double.parseDouble(dataSet.getString("x4")); - double temperature = Double.parseDouble(dataSet.getString("Temperature")); - double pressure = Double.parseDouble(dataSet.getString("Pressure")); - - SystemInterface testSystem = new SystemFurstElectrolyteEos(temperature, pressure); - testSystem.addComponent("CO2", x1); - testSystem.addComponent("water", x2); - testSystem.addComponent("MDEA", x4 - x3); - // testSystem.addComponent("MDEA",x4); - testSystem.addComponent("Ac-", x3); - testSystem.addComponent("MDEA+", x3); - - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - - double sample1[] = {temperature, x1 / (x4 - x3)}; - double standardDeviation1[] = {0.01}; - double stddev = 0.01; - SampleValue sample = new SampleValue(pressure, stddev, sample1, standardDeviation1); - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setDescription(Double.toString(ID)); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // optim.solve(); - - // optim.displayGraph(); - optim.displayCurveFit(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/AntoineSolidFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/AntoineSolidFunction.java deleted file mode 100644 index 6952112ccf..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/AntoineSolidFunction.java +++ /dev/null @@ -1,56 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.AntoineParameter; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * AntoineSolidFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class AntoineSolidFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(AntoineSolidFunction.class); - - /** - *

- * Constructor for AntoineSolidFunction. - *

- */ - public AntoineSolidFunction() { - params = new double[2]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(0); - try { - thermoOps.freezingPointTemperatureFlash(); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getTemperature(); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i == 1) { - system.getPhases()[0].getComponents()[0].setAntoineASolid(value); - system.getPhases()[1].getComponents()[0].setAntoineASolid(value); - system.getPhases()[2].getComponents()[0].setAntoineASolid(value); - system.getPhases()[3].getComponents()[0].setAntoineASolid(value); - } - if (i == 0) { - system.getPhases()[0].getComponents()[0].setAntoineBSolid(value); - system.getPhases()[1].getComponents()[0].setAntoineBSolid(value); - system.getPhases()[2].getComponents()[0].setAntoineBSolid(value); - system.getPhases()[3].getComponents()[0].setAntoineBSolid(value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/AntoineSolidFunctionS8.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/AntoineSolidFunctionS8.java deleted file mode 100644 index 9fe7ad8784..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/AntoineSolidFunctionS8.java +++ /dev/null @@ -1,53 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.AntoineParameter; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * AntoineSolidFunctionS8 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class AntoineSolidFunctionS8 extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(AntoineSolidFunctionS8.class); - - /** - *

- * Constructor for AntoineSolidFunctionS8. - *

- */ - public AntoineSolidFunctionS8() { - params = new double[2]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(0); - try { - system.getPhase(0).getComponent(0).getSolidVaporPressure(dependentValues[0]); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getPhase(0).getComponent(0).getSolidVaporPressure(dependentValues[0]); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i == 0) { - system.getPhases()[0].getComponents()[0].setAntoineASolid(value); - } - if (i == 1) { - system.getPhases()[0].getComponents()[0].setAntoineBSolid(value); - } - if (i == 2) { - system.getPhases()[0].getComponents()[0].setAntoineCSolid(value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/TestSolidAntoine.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/TestSolidAntoine.java deleted file mode 100644 index 34d5798660..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/TestSolidAntoine.java +++ /dev/null @@ -1,86 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.AntoineParameter; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPAstatoil; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestSolidAntoine class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestSolidAntoine { - static Logger logger = LogManager.getLogger(TestSolidAntoine.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // BinaryFreezingPointData WHERE ComponentSolvent1='MEG' ORDER BY - // FreezingTemperature"); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM BinaryFreezingPointData WHERE ComponentSolvent1='MEG' ORDER BY FreezingTemperature"); - int i = 0; - try { - while (dataSet.next() && i < 4) { - i++; - AntoineSolidFunction function = new AntoineSolidFunction(); - double guess[] = {-7800.0, 10.09}; // MEG - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkCPAstatoil(280, 1.101); - testSystem.addComponent(dataSet.getString("ComponentSolvent1"), - Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent(dataSet.getString("ComponentSolvent2"), - Double.parseDouble(dataSet.getString("x2"))); - testSystem.createDatabase(true); - testSystem.setMixingRule(7); - - testSystem.setSolidPhaseCheck("MEG"); - testSystem.init(0); - double sample1[] = {testSystem.getPhase(0).getComponent(0).getz()}; - double standardDeviation1[] = {0.1, 0.1, 0.1}; - double val = Double.parseDouble(dataSet.getString("FreezingTemperature")); - testSystem.setTemperature(val); - SampleValue sample = new SampleValue(val, val / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setReference(dataSet.getString("Reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - //optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/TestSolidAntoine_S8.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/TestSolidAntoine_S8.java deleted file mode 100644 index abf8f636f9..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/AntoineParameter/TestSolidAntoine_S8.java +++ /dev/null @@ -1,78 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.AntoineParameter; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestSolidAntoine_S8 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestSolidAntoine_S8 { - static Logger logger = LogManager.getLogger(TestSolidAntoine_S8.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - - ResultSet dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='S8' AND VapourPressure<100"); - - try { - while (dataSet.next()) { - AntoineSolidFunctionS8 function = new AntoineSolidFunctionS8(); - // double guess[] = {8.046, -4600.0, -144.0}; // S8 - double guess[] = {1.181E1, -8.356E3}; // S8 - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double vappres = Double.parseDouble(dataSet.getString("VapourPressure")); - double standardDeviation1[] = {0.15}; - SampleValue sample = new SampleValue(vappres, - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - - function.setInitialGuess(guess); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - //optim.writeToCdfFile("c:/testFit.nc"); - //optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/CharacterisationParameters/CharacterisationFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/CharacterisationParameters/CharacterisationFunction.java deleted file mode 100644 index 7723a78c69..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/CharacterisationParameters/CharacterisationFunction.java +++ /dev/null @@ -1,50 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.CharacterisationParameters; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * CharacterisationFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class CharacterisationFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(CharacterisationFunction.class); - - /** - *

- * Constructor for CharacterisationFunction. - *

- */ - public CharacterisationFunction() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.init(0); - system.init(1); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - return Math.log(system.getPressure()); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - - // system.getCharacterization().getTBPModel(); - system.getPhases()[0].getComponents()[i].setAcentricFactor(value); - system.getPhases()[1].getComponents()[i].setAcentricFactor(value); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/CharacterisationParameters/TestCharacterisation.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/CharacterisationParameters/TestCharacterisation.java deleted file mode 100644 index 4e99720b0b..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/CharacterisationParameters/TestCharacterisation.java +++ /dev/null @@ -1,58 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.CharacterisationParameters; - -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemPrEos; - -/** - *

- * TestCharacterisation class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCharacterisation { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - - CharacterisationFunction function = new CharacterisationFunction(); - double guess[] = {0.001}; - function.setInitialGuess(guess); - - SystemInterface testSystem1 = new SystemPrEos(140, 2.0); - testSystem1.addComponent("methane", 78.81102); - testSystem1.init(0); - testSystem1.init(1); - - SampleValue[] sample = new SampleValue[2]; - - double sample1[] = {120}; - double standardDeviation1[] = {0.001}; - sample[0] = new SampleValue(1.916, 0.01, sample1, standardDeviation1); - sample[0].setFunction(function); - sample[0].setThermodynamicSystem(testSystem1); - - // creating the sampleset - double sample2[] = {130}; - double standardDeviation2[] = {0.001}; - sample[1] = new SampleValue(3.676, 0.01, sample2, standardDeviation2); - sample[1].setFunction(function); - sample[1].setThermodynamicSystem(testSystem1); - - SampleSet sampleSet = new SampleSet(sample); - optim.setSampleSet(sampleSet); - - optim.solve(); - optim.displayResult(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/TestBinaryEosParameterFit.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/TestBinaryEosParameterFit.java deleted file mode 100644 index bd0d0f5ca5..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/TestBinaryEosParameterFit.java +++ /dev/null @@ -1,74 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting; - -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.thermo.util.parameterFitting.binaryInteractionParameterFitting.BinaryEosFunction; - -/** - *

- * TestBinaryEosParameterFit class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestBinaryEosParameterFit { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - BinaryEosFunction function = new BinaryEosFunction(); - - SystemSrkEos system = new SystemSrkEos(140, 5.0); - system.addComponent("methane", 100); - system.addComponent("water", 100); - system.setMixingRule(2); - system.init(0); - system.init(1); - - SampleValue[] sample = new SampleValue[5]; - - double sample1[] = {280.0, 1.01325}; - double standardDeviation1[] = {1.0e-3, 0.53e-2}; - sample[0] = new SampleValue((1.01325 * 0.9931724), 0.5e-1, sample1, standardDeviation1); - sample[0].setFunction(function); - sample[0].setThermodynamicSystem(system); - - double sample2[] = {290.0, 1.01325}; - double standardDeviation2[] = {1.0e-3, 0.53e-2}; - sample[1] = new SampleValue((1.01325 * 0.9861), 0.5e-2, sample2, standardDeviation2); - sample[1].setFunction(function); - sample[1].setThermodynamicSystem(system); - - double sample3[] = {330.0, 1.01325}; - double standardDeviation3[] = {1.0e-3, 0.53e-2}; - sample[2] = new SampleValue((1.01325 * 0.9434), 0.5e-2, sample3, standardDeviation3); - sample[2].setFunction(function); - sample[2].setThermodynamicSystem(system); - - double sample4[] = {312.0, 1.0}; - double standardDeviation4[] = {1.0e-3, 0.53e-2}; - sample[3] = new SampleValue((1.001325 * 0.9456), 0.5e-2, sample4, standardDeviation4); - sample[3].setFunction(function); - sample[3].setThermodynamicSystem(system); - - double sample5[] = {321.0, 1.0}; - double standardDeviation5[] = {1.0e-3, 0.53e-1}; - sample[4] = new SampleValue((3.1001325 * 0.9082), 0.5e-2, sample5, standardDeviation5); - sample[4].setFunction(function); - sample[4].setThermodynamicSystem(system); - - SampleSet sampleSet = new SampleSet(sample); - optim.setSampleSet(sampleSet); - - optim.solve(); - // optim.runMonteCarloSimulation(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/AcentricFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/AcentricFunction.java deleted file mode 100644 index 67fc8cd1bd..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/AcentricFunction.java +++ /dev/null @@ -1,48 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * AcentricFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class AcentricFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(AcentricFunction.class); - - /** - *

- * Constructor for AcentricFunction. - *

- */ - public AcentricFunction() { - params = new double[1]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.init(0); - system.init(1); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - return Math.log(system.getPressure()); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponents()[i].setAcentricFactor(value); - system.getPhases()[1].getComponents()[i].setAcentricFactor(value); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/AcentricFunctionScwartzentruber.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/AcentricFunctionScwartzentruber.java deleted file mode 100644 index e507089c53..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/AcentricFunctionScwartzentruber.java +++ /dev/null @@ -1,61 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * AcentricFunctionScwartzentruber class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class AcentricFunctionScwartzentruber extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(AcentricFunctionScwartzentruber.class); - - /** - *

- * Constructor for AcentricFunctionScwartzentruber. - *

- */ - public AcentricFunctionScwartzentruber() { - params = new double[3]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - // System.out.println("dep " + dependentValues[0]); - system.setTemperature(dependentValues[0]); - system.setPressure(system.getPhases()[0].getComponents()[0] - .getAntoineVaporPressure(dependentValues[0])); - // System.out.println("antoine pres: " + system.getPressure()); - system.init(0); - system.init(1); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - // System.out.println("pres: " + system.getPressure()); - return Math.log(system.getPressure()); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return Math.exp(val); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponents()[0].setSchwartzentruberParams(i, value); - system.getPhases()[1].getComponents()[0].setSchwartzentruberParams(i, value); - system.getPhases()[0].getComponents()[0].getAttractiveTerm().setParameters(i, value); - system.getPhases()[1].getComponents()[0].getAttractiveTerm().setParameters(i, value); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/ClassicAcentricDens.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/ClassicAcentricDens.java deleted file mode 100644 index 29e9a9c3f8..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/ClassicAcentricDens.java +++ /dev/null @@ -1,69 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -/** - *

- * ClassicAcentricDens class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class ClassicAcentricDens extends ClassicAcentricFunction { - static Logger logger = LogManager.getLogger(ClassicAcentricDens.class); - - int phasetype = 1; - - /** - *

- * Constructor for ClassicAcentricDens. - *

- */ - public ClassicAcentricDens() {} - - /** - *

- * Constructor for ClassicAcentricDens. - *

- * - * @param phase a int - */ - public ClassicAcentricDens(int phase) { - phasetype = phase; - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - // public double calcValue(double[] dependentValues){ - // system.setTemperature(dependentValues[0]); - // system.init(0); - // system.init(1); - // system.initPhysicalProperties(); - // return system.getPhase(phasetype).getPhysicalProperties().getDensity(); - // } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.setPressure(system.getPhases()[0].getComponents()[0] - .getAntoineVaporPressure(dependentValues[0])); - // System.out.println("pres from antoine: " + system.getPressure()); - system.init(0); - system.init(1); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - // System.out.println("pres: " + system.getPressure()); - system.initPhysicalProperties(); - return system.getPhase(phasetype).getPhysicalProperties().getDensity(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/ClassicAcentricFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/ClassicAcentricFunction.java deleted file mode 100644 index 76418bfb38..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/ClassicAcentricFunction.java +++ /dev/null @@ -1,57 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * ClassicAcentricFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class ClassicAcentricFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(ClassicAcentricFunction.class); - - /** - *

- * Constructor for ClassicAcentricFunction. - *

- */ - public ClassicAcentricFunction() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.setPressure(system.getPhases()[0].getComponents()[0] - .getAntoineVaporPressure(dependentValues[0])); - // System.out.println("dep val " + dependentValues[0]); - // System.out.println("pres from antoine: " + system.getPressure()); - system.init(0); - system.init(1); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - // System.out.println("pres: " + system.getPressure()); - return Math.log(system.getPressure()); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return Math.exp(val); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponents()[i].setAcentricFactor(value); - system.getPhases()[1].getComponents()[i].setAcentricFactor(value); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/MathiasCopeman.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/MathiasCopeman.java deleted file mode 100644 index ec5641a350..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/MathiasCopeman.java +++ /dev/null @@ -1,60 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * MathiasCopeman class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class MathiasCopeman extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(MathiasCopeman.class); - - /** - *

- * Constructor for MathiasCopeman. - *

- */ - public MathiasCopeman() { - params = new double[3]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - // System.out.println("dep " + dependentValues[0]); - system.setTemperature(dependentValues[0]); - // system.setPressure(system.getPhases()[0].getComponents()[0].getAntoineVaporPressure(dependentValues[0])); - // System.out.println("antoine pres: " + system.getPressure()); - system.init(0); - system.init(1); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - // System.out.println("pres: " + system.getPressure()); - return Math.log(system.getPressure()); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return Math.exp(val); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponents()[0].setMatiascopemanParams(i, value); - system.getPhases()[1].getComponents()[0].setMatiascopemanParams(i, value); - system.getPhases()[0].getComponents()[0].getAttractiveTerm().setParameters(i, value); - system.getPhases()[1].getComponents()[0].getAttractiveTerm().setParameters(i, value); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/MathiasCopemanToDewPoint.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/MathiasCopemanToDewPoint.java deleted file mode 100644 index de464d745a..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/MathiasCopemanToDewPoint.java +++ /dev/null @@ -1,176 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * MathiasCopemanToDewPoint class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class MathiasCopemanToDewPoint extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(MathiasCopemanToDewPoint.class); - - /** - *

- * Constructor for MathiasCopemanToDewPoint. - *

- */ - public MathiasCopemanToDewPoint() { - params = new double[3]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - // System.out.println("dep " + dependentValues[0]); - system.setPressure(dependentValues[0]); - - // System.out.println("antoine pres: " + system.getPressure()); - system.init(0); - system.init(1); - try { - thermoOps.dewPointTemperatureFlash(); - } catch (Exception e) { - logger.error(e.toString()); - } - // System.out.println("pres: " + system.getPressure()); - return system.getTemperature(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - - if (system.getPhases()[0].getNumberOfComponents() == 1) { - if (i < 3) - ; - else if (i < 6) { - i -= 3; - } else if (i < 9) { - i -= 6; - } else if (i < 12) { - i -= 9; - } else if (i < 15) { - i -= 12; - } else if (i < 18) { - i -= 15; - } else if (i < 21) { - i -= 18; - } else if (i < 24) { - i -= 21; - } else if (i < 27) { - i -= 24; - } else if (i < 30) { - i -= 27; - } else if (i < 33) { - i -= 30; - } - - system.getPhases()[1].getComponent(0).setMatiascopemanParams(i, value); - system.getPhases()[0].getComponent(0).getAttractiveTerm().setParameters(i, value); - system.getPhases()[1].getComponent(0).getAttractiveTerm().setParameters(i, value); - return; - } - - if (system.getPhase(0).hasComponent("methane") && i < 3) { - system.getPhases()[0].getComponent("methane").setMatiascopemanParams(i, value); - system.getPhases()[1].getComponent("methane").setMatiascopemanParams(i, value); - system.getPhases()[0].getComponent("methane").getAttractiveTerm().setParameters(i, - value); - system.getPhases()[1].getComponent("methane").getAttractiveTerm().setParameters(i, - value); - return; - } - - if (system.getPhase(0).hasComponent("ethane") && i < 6) { - system.getPhases()[0].getComponent("ethane").setMatiascopemanParams(i - 3, value); - system.getPhases()[1].getComponent("ethane").setMatiascopemanParams(i - 3, value); - system.getPhases()[0].getComponent("ethane").getAttractiveTerm().setParameters(i - 3, - value); - system.getPhases()[1].getComponent("ethane").getAttractiveTerm().setParameters(i - 3, - value); - return; - } - - if (system.getPhase(0).hasComponent("propane") && i < 9) { - system.getPhases()[0].getComponent("propane").setMatiascopemanParams(i - 6, value); - system.getPhases()[1].getComponent("propane").setMatiascopemanParams(i - 6, value); - system.getPhases()[0].getComponent("propane").getAttractiveTerm().setParameters(i - 6, - value); - system.getPhases()[1].getComponent("propane").getAttractiveTerm().setParameters(i - 6, - value); - return; - } - - if (system.getPhase(0).hasComponent("n-butane") && i < 12) { - system.getPhases()[0].getComponent("n-butane").setMatiascopemanParams(i - 9, value); - system.getPhases()[1].getComponent("n-butane").setMatiascopemanParams(i - 9, value); - system.getPhases()[0].getComponent("n-butane").getAttractiveTerm().setParameters(i - 9, - value); - system.getPhases()[1].getComponent("n-butane").getAttractiveTerm().setParameters(i - 9, - value); - return; - } - - if (system.getPhase(0).hasComponent("i-butane") && i < 15) { - system.getPhases()[0].getComponent("i-butane").setMatiascopemanParams(i - 12, value); - system.getPhases()[1].getComponent("i-butane").setMatiascopemanParams(i - 12, value); - system.getPhases()[0].getComponent("i-butane").getAttractiveTerm().setParameters(i - 12, - value); - system.getPhases()[1].getComponent("i-butane").getAttractiveTerm().setParameters(i - 12, - value); - return; - } - - if (system.getPhase(0).hasComponent("n-pentane") && i < 18) { - system.getPhases()[0].getComponent("n-pentane").setMatiascopemanParams(i - 15, value); - system.getPhases()[1].getComponent("n-pentane").setMatiascopemanParams(i - 15, value); - system.getPhases()[0].getComponent("n-pentane").getAttractiveTerm() - .setParameters(i - 15, value); - system.getPhases()[1].getComponent("n-pentane").getAttractiveTerm() - .setParameters(i - 15, value); - return; - } - - if (system.getPhase(0).hasComponent("c-hexane") && i < 21) { - system.getPhases()[0].getComponent("c-hexane").setMatiascopemanParams(i - 18, value); - system.getPhases()[1].getComponent("c-hexane").setMatiascopemanParams(i - 18, value); - system.getPhases()[0].getComponent("c-hexane").getAttractiveTerm().setParameters(i - 18, - value); - system.getPhases()[1].getComponent("c-hexane").getAttractiveTerm().setParameters(i - 18, - value); - return; - } - - if (system.getPhase(0).hasComponent("benzene") && i < 24) { - system.getPhases()[0].getComponent("benzene").setMatiascopemanParams(i - 21, value); - system.getPhases()[1].getComponent("benzene").setMatiascopemanParams(i - 21, value); - system.getPhases()[0].getComponent("benzene").getAttractiveTerm().setParameters(i - 21, - value); - system.getPhases()[1].getComponent("benzene").getAttractiveTerm().setParameters(i - 21, - value); - return; - } - - if (system.getPhase(0).hasComponent("n-heptane") && i < 27) { - system.getPhases()[0].getComponent("n-heptane").setMatiascopemanParams(i - 24, value); - system.getPhases()[1].getComponent("n-heptane").setMatiascopemanParams(i - 24, value); - system.getPhases()[0].getComponent("n-heptane").getAttractiveTerm() - .setParameters(i - 24, value); - system.getPhases()[1].getComponent("n-heptane").getAttractiveTerm() - .setParameters(i - 24, value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestAcentric.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestAcentric.java deleted file mode 100644 index 78f4f81a9b..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestAcentric.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * TestAcentric.java - * - * Created on 23. januar 2001, 22:08 - */ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemPrEos; - -/** - *

- * TestAcentric class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestAcentric { - /** - *

- * Constructor for TestAcentric. - *

- */ - public TestAcentric() {} - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - - AcentricFunction function = new AcentricFunction(); - double guess[] = {0.001}; - function.setInitialGuess(guess); - - SystemInterface testSystem1 = new SystemPrEos(140, 2.0); - testSystem1.addComponent("methane", 78.81102); - testSystem1.init(0); - testSystem1.init(1); - - SystemInterface testSystem2 = new SystemPrEos(140, 2.0); - testSystem2.addComponent("methane", 78.81102); - testSystem2.init(0); - testSystem2.init(1); - - SystemInterface testSystem3 = new SystemPrEos(140, 2.0); - testSystem3.addComponent("methane", 78.81102); - testSystem3.init(0); - testSystem3.init(1); - - SampleValue[] sample = new SampleValue[4]; - double sample1[] = {120}; - double standardDeviation1[] = {0.001}; - sample[0] = new SampleValue(1.916, 0.01, sample1, standardDeviation1); - sample[0].setFunction(function); - sample[0].setThermodynamicSystem(testSystem1); - - // creating the sampleset - double sample2[] = {130}; - double standardDeviation2[] = {0.001}; - sample[1] = new SampleValue(3.676, 0.01, sample2, standardDeviation2); - sample[1].setFunction(function); - sample[1].setThermodynamicSystem(testSystem2); - - double sample3[] = {140}; - double standardDeviation3[] = {0.001}; - sample[2] = new SampleValue(6.416, 0.01, sample3, standardDeviation3); - sample[2].setFunction(function); - sample[2].setThermodynamicSystem(testSystem3); - - double sample4[] = {150}; - double standardDeviation4[] = {0.001}; - sample[3] = new SampleValue(10.405, 0.01, sample4, standardDeviation4); - sample[3].setFunction(function); - sample[3].setThermodynamicSystem(testSystem1); - - SampleSet sampleSet = new SampleSet(sample); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayResult(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestAcentricSchwartzentruber.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestAcentricSchwartzentruber.java deleted file mode 100644 index 92a6c4c0fe..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestAcentricSchwartzentruber.java +++ /dev/null @@ -1,104 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkTwuCoonParamEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestAcentricSchwartzentruber class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestAcentricSchwartzentruber { - static Logger logger = LogManager.getLogger(TestAcentricSchwartzentruber.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='water' ORDER BY - // Reference,Temperature"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='Piperazine'"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='MDEA' ORDER BY - // Reference,Temperature"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='MEG' ORDER BY - // Reference,Temperature"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='nitrogen' AND - // VapourPressure<20"); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='mercury' AND VapourPressure<40 ORDER BY Reference,Temperature"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='TEG' AND VapourPressure<0.5 - // ORDER BY Reference,Temperature"); - try { - while (dataSet.next()) { - // AcentricFunctionScwartzentruber function = new - // AcentricFunctionScwartzentruber(); - TwuCoon function = new TwuCoon(); - // MathiasCopeman function = new MathiasCopeman(); - // double guess[] = {0.0547834254, 0.0946785127, -2.2673294034}; // water - // double guess[] = {0.00492, 0.00492, -0.00626}; // MDEA - // double guess[] = {0.1662109957e-10, -11.5970369560e-10, 13.5388889636e-10}; - // // CO2 - // double guess[] ={0.0685841688, 0.9851816962, 4.2394590417} ; //mercury HYSYS - // - Pc=1608bara - - double guess[] = {0.09245, 0.9784, 2.244}; - // double guess[] ={0.1208932305, 0.9580163852, 0.9875864928} ; //mercury PROII - - // double guess[] = {0.4563609446};//, -140.87783836,44.122}; // nitrogen - function.setInitialGuess(guess); - - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 0.101); - SystemInterface testSystem = new SystemSrkTwuCoonParamEos(280, 0.01); - // SystemInterface testSystem = new SystemPrEos1978(280, 0.01); - // testSystem.setAttractiveTerm(13); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - // testSystem.createDatabase(true); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double standardDeviation1[] = {0.1, 0.1, 0.1}; - double val = Math.log(Double.parseDouble(dataSet.getString("VapourPressure"))); - SampleValue sample = new SampleValue(val, val / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setReference(dataSet.getString("Reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentric.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentric.java deleted file mode 100644 index 3d4c2c4365..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentric.java +++ /dev/null @@ -1,87 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimExperimentDatabase; - -/** - *

- * TestClassicAcentric class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestClassicAcentric { - static Logger logger = LogManager.getLogger(TestClassicAcentric.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimExperimentDatabase database = new NeqSimExperimentDatabase(); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='methane' AND - // VapourPressure<100"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - - // neqsim.util.database.NeqSimExperimentDatabase.setConnectionString("jdbc:mysql://tr-w33:3306/neqsimexperimentaldata"); - - ResultSet dataSet = database.getResultSet( - "SELECT * FROM purecomponentvapourpressures WHERE ComponentName='water' AND VapourPressure<100"); - - try { - while (dataSet.next()) { - ClassicAcentricFunction function = new ClassicAcentricFunction(); - double guess[] = {0.3311}; - double bound[][] = {{0, 1.0},}; - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double vappres = Double.parseDouble(dataSet.getString("VapourPressure")); - double standardDeviation1[] = {0.15}; - SampleValue sample = new SampleValue(Math.log(vappres), - Double.parseDouble(dataSet.getString("StandardDeviation")), sample1, - standardDeviation1); - sample.setFunction(function); - function.setInitialGuess(guess); - // testSystem.createDatabase(true); - // function.setBounds(bound); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(50); - optim.displayCurveFit(); - // optim.writeToTextFile("c:/test.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentricPlusDens.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentricPlusDens.java deleted file mode 100644 index 06879ffb14..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentricPlusDens.java +++ /dev/null @@ -1,166 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemRKEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestClassicAcentricPlusDens class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestClassicAcentricPlusDens { - static Logger logger = LogManager.getLogger(TestClassicAcentricPlusDens.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='methane' AND - // VapourPressure<65.5 AND Reference='Perry1998'"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='CO2' AND - // VapourPressure>5"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='water' AND VapourPressure>0 - // ORDER BY Temperature ASC"); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='nitrogen' AND VapourPressure>0 ORDER BY Temperature ASC"); - double guess[] = {0.04}; - try { - logger.info("adding...."); - while (!dataSet.next()) { - ClassicAcentricFunction function = new ClassicAcentricFunction(); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 0.001); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - SystemInterface testSystem = new SystemRKEos(280, 0.001); - // SystemInterface testSystem = new SystemPrEos(280, 0.001); - // testSystem.useVolumeCorrection(false); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - // testSystem.createDatabase(true); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double standardDeviation1[] = {0.1}; - double val = Double.parseDouble(dataSet.getString("VapourPressure")); - double stddev = val / 100.0; - double logVal = Math.log(val); - SampleValue sample = new SampleValue(logVal, stddev, sample1, standardDeviation1); - testSystem.init(0); - function.setInitialGuess(guess); - // function.setBounds(bounds); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='methane' AND VapourPressure<65.5 AND - // Reference='Perry1998'"); - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='CO2' AND VapourPressure>5"); - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='water' AND VapourPressure>0 ORDER BY Temperature ASC"); - dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='nitrogen' AND VapourPressure>0 ORDER BY Temperature ASC"); - try { - logger.info("adding...."); - while (!dataSet.next()) { - ClassicAcentricDens function = new ClassicAcentricDens(1); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 0.001); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - SystemInterface testSystem = new SystemRKEos(280, 0.001); - // SystemInterface testSystem = new SystemPrEos(280, 0.001); - testSystem.useVolumeCorrection(false); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("VapourPressure"))); - testSystem.init(0); - testSystem.setMixingRule(1); - logger.info("adding2...."); - double dens = Double.parseDouble(dataSet.getString("liquiddensity")); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='methane' AND VapourPressure<65.5 AND - // Reference='Perry1998'"); - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='CO2' AND VapourPressure>5"); - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='water' AND VapourPressure>0 ORDER BY Temperature ASC"); - dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='nitrogen' AND VapourPressure>0 ORDER BY Temperature ASC"); - try { - logger.info("adding...."); - while (dataSet.next()) { - ClassicAcentricDens function = new ClassicAcentricDens(0); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - SystemInterface testSystem = new SystemRKEos(280, 0.001); - // SystemInterface testSystem = new SystemPrEos(280, 0.001); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 0.001); - testSystem.useVolumeCorrection(false); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("VapourPressure"))); - testSystem.init(0); - testSystem.setMixingRule(1); - double dens = Double.parseDouble(dataSet.getString("gasdensity")); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setSampleSet(sampleSet); - - // do simulations - - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/test.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentricPlusDens_1.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentricPlusDens_1.java deleted file mode 100644 index c12f3704b0..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestClassicAcentricPlusDens_1.java +++ /dev/null @@ -1,129 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestClassicAcentricPlusDens_1 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestClassicAcentricPlusDens_1 { - static Logger logger = LogManager.getLogger(TestClassicAcentricPlusDens_1.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='methane' AND - // VapourPressure<65.5 AND Reference='Perry1998'"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='CO2' AND - // VapourPressure>5"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='water' AND VapourPressure>0 - // ORDER BY Temperature ASC"); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='MDEA' ORDER BY Reference,Temperature"); - double guess[] = {1.242}; - try { - logger.info("adding...."); - while (dataSet.next()) { - ClassicAcentricFunction function = new ClassicAcentricFunction(); - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 0.001); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - // SystemInterface testSystem = new SystemRKEos(280, 0.001); - // SystemInterface testSystem = new SystemPrEos(280, 0.001); - // testSystem.useVolumeCorrection(false); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - // testSystem.createDatabase(true); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double standardDeviation1[] = {0.1}; - double val = Double.parseDouble(dataSet.getString("VapourPressure")); - double stddev = val / 100.0; - double logVal = Math.log(val); - SampleValue sample = new SampleValue(logVal, stddev, sample1, standardDeviation1); - testSystem.init(0); - function.setInitialGuess(guess); - // function.setBounds(bounds); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='methane' AND VapourPressure<65.5 AND - // Reference='Perry1998'"); - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='CO2' AND VapourPressure>5"); - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='water' AND VapourPressure>0 ORDER BY Temperature ASC"); - dataSet = database.getResultSet( - "SELECT * FROM PureComponentDensity WHERE ComponentName='MDEA' ORDER BY Temperature ASC"); - try { - logger.info("adding...."); - while (!dataSet.next()) { - ClassicAcentricDens function = new ClassicAcentricDens(1); - SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 0.001); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - // SystemInterface testSystem = new SystemRKEos(280, 0.001); - // SystemInterface testSystem = new SystemPrEos(280, 0.001); - testSystem.useVolumeCorrection(false); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.init(0); - testSystem.setMixingRule(1); - logger.info("adding2...."); - double dens = Double.parseDouble(dataSet.getString("Density")); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - // sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setSampleSet(sampleSet); - - // do simulations - - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/test.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestFitToAntoineVapPres.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestFitToAntoineVapPres.java deleted file mode 100644 index bcda35d3ef..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestFitToAntoineVapPres.java +++ /dev/null @@ -1,83 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; - -/** - *

- * TestFitToAntoineVapPres class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestFitToAntoineVapPres { - static Logger logger = LogManager.getLogger(TestFitToAntoineVapPres.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - try { - for (int i = 0; i < 30; i++) { - AcentricFunctionScwartzentruber function = new AcentricFunctionScwartzentruber(); - // double guess[] = {0.5212918734, -1.1520807481, -0.0138898820}; // Piperazine - double guess[] = {0.1032, 0.00365, -2.064}; // AceticAcid - function.setInitialGuess(guess); - - SystemInterface testSystem = - new SystemSrkSchwartzentruberEos(273.15 + i * 5, 1.101); - // testSystem.addComponent("Piperazine", 100.0); - testSystem.addComponent("AceticAcid", 100.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(0); - - SystemInterface testSystemAntoine = - new SystemSrkSchwartzentruberEos(273.15 + i * 5, 1.101); - // testSystemAntoine.addComponent("Piperazine", 100.0); - testSystemAntoine.addComponent("AceticAcid", 100.0); - testSystemAntoine.setMixingRule(0); - neqsim.thermodynamicOperations.ThermodynamicOperations opsAntione = - new neqsim.thermodynamicOperations.ThermodynamicOperations( - testSystemAntoine); - - double sample1[] = {i * 5 + 273.15}; - double standardDeviation1[] = {0.1, 0.1, 0.1}; - double val = Math.log(testSystemAntoine.getPhase(0).getComponent(0) - .getAntoineVaporPressure(273.15 + i * 5)); - // opsAntione.bubblePointPressureFlash(false); - // double val = Math.log(testSystemAntoine.getPressure()); - SampleValue sample = new SampleValue(val, val / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.info("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestMathiasCopeman.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestMathiasCopeman.java deleted file mode 100644 index f00e2d36ea..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestMathiasCopeman.java +++ /dev/null @@ -1,130 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkMathiasCopeman; -import neqsim.thermo.system.SystemSrkTwuCoonEos; -import neqsim.thermodynamicOperations.ThermodynamicOperations; - -/** - *

- * TestMathiasCopeman class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestMathiasCopeman { - static Logger logger = LogManager.getLogger(TestMathiasCopeman.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // String ComponentName = "CO2"; - String ComponentName = "methane"; - // String ComponentName = "ethane"; - // String ComponentName = "propane"; - // String ComponentName = "n-butane"; - // String ComponentName = "i-butane"; - // String ComponentName = "i-pentane"; - // String ComponentName = "n-pentane"; - // String ComponentName = "nitrogen"; - // String ComponentName = "neon"; - - try { - // for(int i=0;i<30;i++){ - MathiasCopeman function = new MathiasCopeman(); - // double guess[] = {0.8817389299100502,-0.8562550217314793,3.0949393273488686}; - // // CO2 chi sqr 0.0025 - double guess[] = {0.5379142011507664, -0.3219393792621987, 0.4361033659755846}; // Methane - // chi - // sqr - // 0.1425 - // double guess[] ={0.654848543521529,-0.18438917116800416,0.2601600498810114} ; - // // ethane chi sqr 0.35 - // double guess[] ={0.721211485876844,-0.09921664231818139,0.18182922712791916} - // ; // PROPANE chi sqr 0.2645 - // double guess[] ={0.8080635549718828,-0.21272494485460103,0.36296147537551615} - // ; // n-butane chi sqr 0.2645 - // double guess[] ={0.7803883597786199,-0.27338954339527566,0.6597871185507804} - // ; // i-butane chi sqr 0.166 - // double guess[] ={0.8578874087217438,-0.26763822614020133,0.4586427557929788} - // ; // i-pentane chi sqr 0.699 - // double guess[] ={0.9038611341253704,-0.3585531518594213,0.6638852213604798} ; - // // n-pentane chi sqr 0.827 - // double guess[] ={0.5742583288610631,-0.3225948761079366,0.5906544971686629} ; - // // nitrogen chi sqr 0.05144 - // double guess[] ={0.4844539990236587,-0.5088139220535864,0.7223945129559358} ; - // // neon chi sqr 0.0577 - - function.setInitialGuess(guess); - - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(40, 1); - // SystemInterface testSystem = new SystemSrkEos(280, 1); - SystemInterface testSystem = new SystemSrkMathiasCopeman(280, 5); - testSystem.addComponent(ComponentName, 100.0); - // testSystem.addComponent(ComponentName2, 100.0); - testSystem.setMixingRule(2); - - testSystem.createDatabase(true); - - // SystemInterface System2 = new SystemSrkSchwartzentruberEos(280, 5); - SystemInterface System2 = new SystemSrkTwuCoonEos(280, 5); - - System2.addComponent(ComponentName, 100.0); - // System2.addComponent(ComponentName2, 100.0); - System2.setMixingRule(2); - ThermodynamicOperations Ops = new ThermodynamicOperations(System2); - - double Ttp = testSystem.getPhase(0).getComponent(0).getTriplePointTemperature(); - double TC = testSystem.getPhase(0).getComponent(0).getTC(); - - for (int i = 0; i < 30; i++) { - double temperature = Ttp + ((TC - Ttp) / 30) * i; - // kan legge inn dewTflash for aa finne avvik til tilsvarende linje med - // schwarzentruber... da ogsaa for flerkomponent blandinger istedenfor antoine - // ligningen. - // double pressure = - // testSystem.getPhase(0).7getComponent(0).getAntoineVaporPressure(temperature); - System2.setTemperature(temperature); - Ops.dewPointPressureFlash(); - double pressure = System2.getPressure(); - - double sample1[] = {temperature}; - double standardDeviation1[] = {0.1, 0.1, 0.1}; - double val = Math.log(pressure); - SampleValue sample = new SampleValue(val, val / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setReference("NIST"); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestMathiasCopemanToDewPoint.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestMathiasCopemanToDewPoint.java deleted file mode 100644 index a51b643a30..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestMathiasCopemanToDewPoint.java +++ /dev/null @@ -1,177 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkMathiasCopeman; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestMathiasCopemanToDewPoint class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestMathiasCopemanToDewPoint { - static Logger logger = LogManager.getLogger(TestMathiasCopemanToDewPoint.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = null; - - // // PVTsim14 values for MC-parameters - // double guess[] ={0.547, -0.399, 0.575, // methane - // 0.685, -0.428, 0.738, //ethane - // 0.773, -0.509, 1.031, // propane - // 0.849, -0.552, 1.077, //n-butane) - // 0.780, -0.273,0.659, //i-butane - // 0.937, -0.766, 1.848, // n-pentane - // 0.547, -0.399, 1.575, //c-hexane - // 0.846, -0.386, 0.884, // benzene - // 1.087, -0.747, 1.577} ; //n-heptane - - // initial guess - // double guess[] ={1.4184728684, -1.6053750221, 0.7429086086, // methane - // 1.6853, -0.4284, 0.7382, //ethane - // 1.8653, -1.4386, 1.3447, // propane - // 1.8080, -0.2127, 1.3629, //n-butane) - // 1.78038835, -1.273389543,0.659787118550, //i-butane - // 0.903861134, -0.3585531518594, 0.66388522, // n-pentane - // 0.547, -1.399, 1.575, //c-hexane - // 0.8457,-1.3856,1.8843, // benzene - // 1.0874, -1.7465, 1.5765} ; //n-heptane - - // optimized chi-square: 21706 abs dev 2.65 - double guess[] = {0.7131945439, 0.4140076386, -2.5691833434, 4.3710359391, -1.1086000763, - 7.3866869416, 1.1183339865, -2.1831081128, 0.9948380388, 1.5665073967, - -5.5636308059, -1.4091055663, 0.8232405436, -0.3922156128, -1.4347079752, - 1.3771397711, -1.2103436623, 0.0028643344, 1.3423413878, -0.3330681068, - -2.1604332713, 1.1554915030, -1.7359747766, 1.1084438340, 1.1800358360, - -1.4810259893, 1.4887592454}; - String nameList[] = {"methane", "ethane", "propane", "n-butane", "i-butane", "n-pentane", - "c-hexane", "benzene", "n-heptane"}; - - for (int compNumb = 0; compNumb < nameList.length; compNumb++) { - dataSet = database - .getResultSet("SELECT * FROM PureComponentVapourPressures WHERE ComponentName='" - + nameList[compNumb] - + "' AND VapourPressure>0 ORDER BY Temperature ASC"); - - try { - long numberOfPoint = 3; - logger.error("point " + numberOfPoint); - int i = 0; - while (dataSet.next()) { - i++; - if (i % numberOfPoint == 0) { - MathiasCopemanToDewPoint function = new MathiasCopemanToDewPoint(); - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkMathiasCopeman( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("VapourPressure"))); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - // testSystem.createDatabase(true); - double sample1[] = {testSystem.getPressure()}; - double standardDeviation1[] = {0.1, 0.1, 0.1}; - double val = testSystem.getTemperature(); - double stdErr = 1.0; - SampleValue sample = - new SampleValue(val, stdErr, sample1, standardDeviation1); - sample.setFunction(function); - sample.setReference(dataSet.getString("Reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } - } catch (Exception e) { - logger.error("database error" + e); - } - } - - dataSet = database - .getResultSet("SELECT * FROM dewPointDataSynthHCStatoil WHERE Pressure<80.0");// "0 - // AND - // reference='Morch2004gas1'"); - - try { - long numberOfPoint = 1; - logger.info("point " + numberOfPoint); - int i = 0; - while (dataSet.next() && i < 100) { - i++; - if (i % numberOfPoint == 0) { - MathiasCopemanToDewPoint function = new MathiasCopemanToDewPoint(); - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkMathiasCopeman( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.addComponent(dataSet.getString("comp1"), - Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent(dataSet.getString("comp2"), - Double.parseDouble(dataSet.getString("x2"))); - testSystem.addComponent(dataSet.getString("comp3"), - Double.parseDouble(dataSet.getString("x3"))); - testSystem.addComponent(dataSet.getString("comp4"), - Double.parseDouble(dataSet.getString("x4"))); - testSystem.addComponent(dataSet.getString("comp5"), - Double.parseDouble(dataSet.getString("x5"))); - testSystem.addComponent(dataSet.getString("comp6"), - Double.parseDouble(dataSet.getString("x6"))); - testSystem.addComponent(dataSet.getString("comp7"), - Double.parseDouble(dataSet.getString("x7"))); - testSystem.addComponent(dataSet.getString("comp8"), - Double.parseDouble(dataSet.getString("x8"))); - testSystem.addComponent(dataSet.getString("comp9"), - Double.parseDouble(dataSet.getString("x9"))); - // testSystem.addComponent(dataSet.getString("comp9"), - // Double.parseDouble(dataSet.getString("x9"))); - // testSystem.addComponent(dataSet.getString("comp10"), - // Double.parseDouble(dataSet.getString("x10"))); - // testSystem.createDatabase(true); - double sample1[] = {testSystem.getPressure()}; - double standardDeviation1[] = {0.1, 0.1, 0.1}; - double val = testSystem.getTemperature(); - double stdErr = 1.0; - SampleValue sample = new SampleValue(val, stdErr, sample1, standardDeviation1); - sample.setFunction(function); - sample.setReference(dataSet.getString("reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestTwuCoon.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestTwuCoon.java deleted file mode 100644 index 494018455e..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TestTwuCoon.java +++ /dev/null @@ -1,131 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkSchwartzentruberEos; -import neqsim.thermo.system.SystemSrkTwuCoonParamEos; -import neqsim.thermodynamicOperations.ThermodynamicOperations; - -/** - *

- * TestTwuCoon class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestTwuCoon { - static Logger logger = LogManager.getLogger(TestTwuCoon.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // String ComponentName = "CO2"; - // String ComponentName = "methane"; - // String ComponentName = "ethane"; - // String ComponentName = "propane"; - // String ComponentName = "n-butane"; - // String ComponentName = "i-butane"; - // String ComponentName = "i-pentane"; - // String ComponentName = "n-pentane"; - String ComponentName = "mercury"; - // String ComponentName = "neon"; - - try { - // for(int i=0;i<30;i++){ - TwuCoon function = new TwuCoon(); - // double guess[] = {1.4136010682288083,-0.6059654485151583,1.1018149483163808}; - // // CO2 chi sqr 0.45 - // double guess[] ={0.1228415979307727,0.9144707890284266,2.7419786111346327} ; - // // Methane chi sqr 0.1425 - // double guess[] ={0.2996073181440976,0.8766268388933209,1.6792384004871077} ; - // // ethane chi sqr 0.6 - // double guess[] ={0.4358258831879946,0.8661321788747547,1.3954328182729108} ; - // // PROPANE chi sqr 0.57 - // double guess[] ={0.33180058324421624,0.8546927333111055,1.8658288576964368} ; - // // n-butane chi sqr 0.66 - // double guess[] ={0.2179712800665,0.8488910728515817,2.284036968290834}; - // i-butane chi sqr 0.64 - // double guess[] ={0.3426699116420882,0.8518937813463485,1.9218752789862321} ; - // // i-pentane chi sqr 1.71 - // double guess[] ={0.2728761064186051,0.8503101221977485,2.340728864856859} ; - // // n-pentane chi sqr 0.827 - // double guess[] ={0.11262960694190573,0.9021997146737551,2.8749606780260866} ; - // // nitrogen chi sqr 0.063 - // double guess[] ={0.08838047169500897,0.9400222937525736,3.4011901770700264} ; - // // neon chi sqr 0.044 - // double guess[] = {0.0179791, 0.983218, 5.63251}; - double guess[] = {0.068584, 0.9784, 2.244}; - - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(40, 1); - // SystemInterface testSystem = new SystemSrkEos(280, 1); - SystemInterface testSystem = new SystemSrkTwuCoonParamEos(280, 5); - testSystem.addComponent(ComponentName, 100.0); - testSystem.setMixingRule(2); - - testSystem.createDatabase(true); - - // function.setFittingParams(0, guess[0]); - // function.setFittingParams(1, guess[1]); - // function.setFittingParams(2, guess[2]); - function.setInitialGuess(guess); - - SystemInterface System2 = new SystemSrkSchwartzentruberEos(280, 5); - // SystemInterface System2 = new SystemSrkTwuCoonEos(280, 5); - - System2.addComponent(ComponentName, 100.0); - System2.setMixingRule(2); - ThermodynamicOperations Ops = new ThermodynamicOperations(System2); - - double Ttp = testSystem.getPhase(0).getComponent(0).getTriplePointTemperature(); - double TC = testSystem.getPhase(0).getComponent(0).getTC(); - - for (int i = 0; i < 30; i++) { - double temperature = Ttp + ((TC - Ttp) / 30) * i; - // kan legge inn dewTflash for aa finne avvik til tilsvarende linje med - // schwarzentruber... da ogsaa for flerkomponent blandinger istedenfor antoine - // ligningen. - // double pressure = - // testSystem.getPhase(0).getComponent(0).getAntoineVaporPressure(temperature); - System2.setTemperature(temperature); - Ops.dewPointPressureFlash(); - double pressure = System2.getPressure(); - - double sample1[] = {temperature}; - double standardDeviation1[] = {0.1, 0.1, 0.1}; - double val = Math.log(pressure); - SampleValue sample = new SampleValue(val, val / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setReference("Perry"); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TwuCoon.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TwuCoon.java deleted file mode 100644 index e5f50b4b9c..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/acentricFactorFitting/TwuCoon.java +++ /dev/null @@ -1,60 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.acentricFactorFitting; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * TwuCoon class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TwuCoon extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(TwuCoon.class); - - /** - *

- * Constructor for TwuCoon. - *

- */ - public TwuCoon() { - params = new double[3]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - // System.out.println("dep " + dependentValues[0]); - system.setTemperature(dependentValues[0]); - // system.setPressure(system.getPhases()[0].getComponents()[0].getAntoineVaporPressure(dependentValues[0])); - // System.out.println("antoine pres: " + system.getPressure()); - system.init(0); - system.init(1); - try { - thermoOps.dewPointPressureFlash(); - } catch (Exception e) { - logger.error(e.toString()); - } - // System.out.println("pres: " + system.getPressure()); - return Math.log(system.getPressure()); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return Math.exp(val); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - system.getPhases()[0].getComponents()[0].setTwuCoonParams(i, value); - system.getPhases()[1].getComponents()[0].setTwuCoonParams(i, value); - system.getPhases()[0].getComponents()[0].getAttractiveTerm().setParameters(i, value); - system.getPhases()[1].getComponents()[0].getAttractiveTerm().setParameters(i, value); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunction.java deleted file mode 100644 index 8aceca8ffb..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunction.java +++ /dev/null @@ -1,97 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.cpaParam; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * CPAFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class CPAFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(CPAFunction.class); - - /** - *

- * Constructor for CPAFunction. - *

- */ - public CPAFunction() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - // system.setTemperature(dependentValues[0]); - system.init(0); - // system.setPressure(system.getPhases()[0].getComponents()[0].getAntoineVaporPressure(dependentValues[0])); - // System.out.println("pres from antoine: " + system.getPressure()); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - // System.out.println("pres: " + system.getPressure()); - return system.getPressure(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - - // i += 5; - - if (i == 11) { - system.getPhases()[0].getComponents()[0].seta(value * 1e4); - system.getPhases()[1].getComponents()[0].seta(value * 1e4); - } - if (i == 10) { - system.getPhases()[0].getComponents()[0].setb(value); - system.getPhases()[1].getComponents()[0].setb(value); - } - if (i == 12) { - system.getPhase(0).getComponent(0).getAttractiveTerm().setm(value); - system.getPhases()[1].getComponents()[0].getAttractiveTerm().setm(value); - } - if (i == 14) { - system.getPhase(0).getComponent(0).setAssociationEnergy(value * 1e4); - system.getPhase(1).getComponent(0).setAssociationEnergy(value * 1e4); - } - if (i == 13) { - system.getPhase(0).getComponent(0).setAssociationVolume(value); - system.getPhase(1).getComponent(0).setAssociationVolume(value); - } - - if (i == 15) { - system.getPhase(0).getComponent(0).getAttractiveTerm().setm(value); - system.getPhases()[1].getComponents()[0].getAttractiveTerm().setm(value); - } - if (i >= 5 && i < 8) { - system.getPhases()[0].getComponents()[0].setMatiascopemanParams(i - 5, value); - system.getPhases()[1].getComponents()[0].setMatiascopemanParams(i - 5, value); - system.getPhases()[0].getComponents()[0].getAttractiveTerm().setParameters(i - 5, - value); - system.getPhases()[1].getComponents()[0].getAttractiveTerm().setParameters(i - 5, - value); - } - if (i == 0) { - system.getPhases()[0].getComponents()[0].setRacketZCPA(value); - system.getPhases()[1].getComponents()[0].setRacketZCPA(value); - } - - if (i == 1) { - system.getPhases()[0].getComponents()[0].setVolumeCorrectionT_CPA(value); - system.getPhases()[1].getComponents()[0].setVolumeCorrectionT_CPA(value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionCp.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionCp.java deleted file mode 100644 index 0f756b6990..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionCp.java +++ /dev/null @@ -1,66 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.cpaParam; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -/** - *

- * CPAFunctionCp class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class CPAFunctionCp extends CPAFunction { - static Logger logger = LogManager.getLogger(CPAFunctionCp.class); - - int phasetype = 1; - - /** - *

- * Constructor for CPAFunctionCp. - *

- */ - public CPAFunctionCp() {} - - /** - *

- * Constructor for CPAFunctionCp. - *

- * - * @param phase a int - */ - public CPAFunctionCp(int phase) { - phasetype = phase; - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - // public double calcValue(double[] dependentValues){ - // system.setTemperature(dependentValues[0]); - // system.init(0); - // system.init(1); - // system.initPhysicalProperties(); - // return system.getPhase(phasetype).getPhysicalProperties().getDensity(); - // } - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.setPressure(1.0);// system.getPhases()[0].getComponents()[0].getAntoineVaporPressure(dependentValues[0])); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - system.init(3); - // System.out.println("pres: " + system.getPressure()); - return system.getPhase(phasetype).getCp() - / (system.getPhase(phasetype).getNumberOfMolesInPhase() - * system.getPhase(phasetype).getMolarMass() * 1000); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionDens.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionDens.java deleted file mode 100644 index 718d249620..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionDens.java +++ /dev/null @@ -1,83 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.cpaParam; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -/** - *

- * CPAFunctionDens class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class CPAFunctionDens extends CPAFunction { - static Logger logger = LogManager.getLogger(CPAFunctionDens.class); - - int phasetype = 1; - - /** - *

- * Constructor for CPAFunctionDens. - *

- */ - public CPAFunctionDens() {} - - /** - *

- * Constructor for CPAFunctionDens. - *

- * - * @param phase a int - */ - public CPAFunctionDens(int phase) { - phasetype = phase; - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - // public double calcValue(double[] dependentValues){ - // system.setTemperature(dependentValues[0]); - // system.init(0); - // system.init(1); - // system.initPhysicalProperties(); - // return system.getPhase(phasetype).getPhysicalProperties().getDensity(); - // } - /** - *

- * calcValue2. - *

- * - * @param dependentValues an array of {@link double} objects - * @return a double - */ - public double calcValue2(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - system.setPressure(1.0);// system.getPhases()[0].getComponents()[0].getAntoineVaporPressure(dependentValues[0])); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - system.initPhysicalProperties(); - // System.out.println("pres: " + system.getPressure()); - return system.getPhase(phasetype).getPhysicalProperties().getDensity(); - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - // system.setPressure(system.getPhases()[0].getComponents()[0].getAntoineVaporPressure(dependentValues[0])); - - system.init(0); - system.init(1); - system.initPhysicalProperties(); - // System.out.println("pres: " + system.getPressure()); - return system.getPhase(phasetype).getPhysicalProperties().getDensity(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionStatoil.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionStatoil.java deleted file mode 100644 index fc8ea8367f..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/CPAFunctionStatoil.java +++ /dev/null @@ -1,68 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.cpaParam; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * CPAFunctionStatoil class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class CPAFunctionStatoil extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(CPAFunctionStatoil.class); - - /** - *

- * Constructor for CPAFunctionStatoil. - *

- */ - public CPAFunctionStatoil() {} - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.setTemperature(dependentValues[0]); - // system.init(0); - // system.setPressure(system.getPhases()[0].getComponents()[0].getAntoineVaporPressure(dependentValues[0])); - // System.out.println("pres from antoine: " + system.getPressure()); - try { - thermoOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - // System.out.println("pres: " + system.getPressure()); - return system.getPressure(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i == 0) { - system.getPhase(0).getComponent(0).getAttractiveTerm().setm(value); - system.getPhases()[1].getComponents()[0].getAttractiveTerm().setm(value); - } - system.getPhases()[0].getComponents()[0].setMatiascopemanParams(i, value); - system.getPhases()[1].getComponents()[0].setMatiascopemanParams(i, value); - system.getPhases()[0].getComponents()[0].getAttractiveTerm().setParameters(i, value); - system.getPhases()[1].getComponents()[0].getAttractiveTerm().setParameters(i, value); - - // value = 0.0; - // for(int j=1;j<3;j++){ - // system.getPhases()[0].getComponents()[0].setSchwartzentruberParams(j, value); - // system.getPhases()[1].getComponents()[0].setSchwartzentruberParams(j, value); - // system.getPhases()[0].getComponents()[0].getAttractiveTerm().setParameters(j, value); - // system.getPhases()[1].getComponents()[0].getAttractiveTerm().setParameters(j, value); - // } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA.java deleted file mode 100644 index 6664339807..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA.java +++ /dev/null @@ -1,134 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.cpaParam; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPAs; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestCPA class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCPA { - static Logger logger = LogManager.getLogger(TestCPA.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='MDEA' AND VapourPressure>0"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - - try { - while (dataSet.next()) { - CPAFunction function = new CPAFunction(); - - SystemInterface testSystem = new SystemSrkCPAs(280, 0.1); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - - // testSystem.createDatabase(true); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - testSystem.setTemperature(sample1[0]); - double standardDeviation1[] = {0.1}; - double val = Double.parseDouble(dataSet.getString("VapourPressure")); - testSystem.setPressure(val); - double stddev = val / 100.0; - double logVal = Math.log(val); - SampleValue sample = new SampleValue(val, stddev, sample1, standardDeviation1); - testSystem.init(0); - // double guess[] = {6602,2.45,0.27,353.69,0.05129}; - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - // 9,3204676672 7,8456679213 2,4447709134 0,2495070040 16344,0651342815 - - // double guess[] = - // {((ComponentSrk)testSystem.getPhase(0).getComponent(0)).geta(),((ComponentSrk)testSystem.getPhase(0).getComponent(0)).getb(),testSystem.getPhase(0).getComponent(0).getAcentricFactor(),0.04567}; - double guess[] = {13.21, 39.123563589168, 1.1692, 0.0188, 14337.0};// , - // 0.3255175584, - // 10725.7300849509}; - // abs 3.2% 10,8185533003 33,0294376487 1,0676048144 0,0221795587 - // 12220,2224075760 - - function.setInitialGuess(guess); - - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database - .getResultSet("SELECT * FROM PureComponentDensity WHERE ComponentName='MDEA'"); - - try { - while (dataSet.next()) { - CPAFunctionDens function = new CPAFunctionDens(); - SystemInterface testSystem = new SystemSrkCPAs(280, 0.001); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - testSystem.setTemperature(sample1[0]); - testSystem.init(0); - testSystem.setMixingRule(1); - double standardDeviation1[] = {0.1}; - double val = Double.parseDouble(dataSet.getString("Density")); - SampleValue sample = new SampleValue(val, val / 100.0, sample1, standardDeviation1); - // double guess[] = - // {testSystem.getPhase(0).geta(),testSystem.getPhase(0).getb(), - // testSystem.getPhase(0).getComponent(0).getAcentricFactor()};// , 2260.69, - // 0.0229}; - double guess[] = {13.21, 39.123563589168, 1.1692, 0.0188, 14337.0};// , - // 0.4354649799, - // 0.3255175584, - // 10725.7300849509}; - - // {((ComponentSrk)testSystem.getPhase(0).getComponent(0)).geta(),((ComponentSrk)testSystem.getPhase(0).getComponent(0)).getb(),testSystem.getPhase(0).getComponent(0).getAcentricFactor(),0.04567}; - - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/test.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA2.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA2.java deleted file mode 100644 index b95fbafa61..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA2.java +++ /dev/null @@ -1,194 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.cpaParam; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPA; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestCPA2 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCPA2 { - static Logger logger = LogManager.getLogger(TestCPA2.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='water'"); - // double guess[] = {23939.4738048507, 1.5971863018, 0.63623134978, - // 0.00292037583};//, 1002.0}; - // double guess[] = { 1.4403259969, 0.8551003534, 1.2240339308, 0.0871385903}; - // // water - srk-cpa - // double guess[] = {1.4563608786, 1.3855596964, 0.6641553237, 0.0464737892}; - // water - pr-cpa - // double guess[] = {5.2313853467, 12.6519920554, 0.5439839271, 0.0063462374}; - // MEG srk-cpas - // double guess[] = { 10.7510088868, 25.8457097739, 1.3642192066, - // 0.0541207125};// MDEA srk-cpa - double guess[] = {2.7063578765, 3.4369093554, 0.8047829596, 0.0011604894}; // CO2 cpas - - // double guess[] = {5.14, 1.08190, 0.6744, 0.0141}; // MEG - srk-cpa - // double guess[] = {2.97, 3.7359, 0.0692, 0.0787};//, 0.01787};//co2 - double bounds[][] = {{0, 3.0055}, {0, 8.0055}, {0.00001, 10.001}, {-1.0015, 1.0015}, - {-320.0015, 320.0015}, {-320.901, 320.900195}, {-1.0, 1000}, {-0.800001, 0.8}, - {-80000.01, 20000.8}, {-0.01, 10.6}, {-0.01, 0.0015}, {-0.01, 0.0015}}; - - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='MDEA' AND - // Temperature>273.15 AND Temperature<620.15 ORDER BY Temperature"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='water' AND - // Temperature>273.15 AND Temperature<620.15 ORDER BY Temperature"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='MEG' AND Temperature>273.15 - // AND Temperature<690.0 ORDER BY Temperature"); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='CO2' AND VapourPressure>5 AND Temperature<300.2"); - - try { - while (dataSet.next()) { - CPAFunction function = new CPAFunction(); - SystemInterface testSystem = - new SystemSrkCPA(Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("VapourPressure"))); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 1.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // testSystem.init(0); - - double temp = testSystem.getTemperature(); - double val = testSystem.getPressure(); - - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - - double stddev = val / 100.0; - double logVal = Math.log(val); - SampleValue sample = new SampleValue(val, stddev, sample1, standardDeviation1); - - // function.setBounds(bounds); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - function.setInitialGuess(guess); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - // dataSet = database.getResultSet( "SELECT * FROM PureComponentDensity WHERE - // ComponentName='MDEA' AND Temperature>273.15 ORDER BY Temperature"); - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='water' AND Temperature>273.15 AND Temperature<620.15 - // ORDER BY Temperature"); - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='MEG' AND Temperature>273.15 AND Temperature<690.0 ORDER - // BY Temperature"); - dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='CO2' AND VapourPressure>5 AND Temperature<300.2"); - try { - while (dataSet.next()) { - CPAFunctionDens function = new CPAFunctionDens(1); - SystemInterface testSystem = - new SystemSrkCPA(Double.parseDouble(dataSet.getString("Temperature")), 1.1); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - double temp = testSystem.getTemperature(); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("VapourPressure"))); - // testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.setTemperature(temp); - testSystem.setMixingRule(1); - // testSystem.init(0); - double dens = Double.parseDouble(dataSet.getString("liquiddensity")); - // double dens = Double.parseDouble(dataSet.getString("Density")); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - // double guess[] = {46939.4738048507, 1.5971863018, 0.7623134978, - // 0.0292037583}; - - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='water' AND Temperature>273.15 AND Temperature<620.15 - // ORDER BY Temperature"); - dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='CO2' AND VapourPressure>5 AND Temperature<300.2"); - - try { - while (dataSet.next()) { - CPAFunctionDens function = new CPAFunctionDens(0); - SystemInterface testSystem = new SystemSrkCPA(280, 5.001); - double temp = Double.parseDouble(dataSet.getString("Temperature")); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem - .setPressure(Double.parseDouble(dataSet.getString("VapourPressure")) + 0.5); - testSystem.setTemperature(temp); - testSystem.setMixingRule(2); - testSystem.init(0); - double dens = Double.parseDouble(dataSet.getString("gasdensity")); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - // double guess[] = {46939.4738048507, 1.5971863018, 0.7623134978, - // 0.0292037583}; - - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/test.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA2_1.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA2_1.java deleted file mode 100644 index 76972250b6..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA2_1.java +++ /dev/null @@ -1,190 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.cpaParam; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPA; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestCPA2_1 class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCPA2_1 { - static Logger logger = LogManager.getLogger(TestCPA2_1.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='water'"); - // double guess[] = {23939.4738048507, 1.5971863018, 0.63623134978, - // 0.00292037583};//, 1002.0}; - // double guess[] = {1.453, 0.9894, 1.0669, 0.0787}; // water - srk-cpa - // double guess[] = {1.4563608786, 1.3855596964, 0.6641553237, 0.0464737892}; - // water - pr-cpa - // double guess[] = {5.2313853467, 12.6519920554, 0.5439839271, 0.0063462374}; - // MEG cpas - // double guess[] = {5.2261531848, 10.4652138885, 0.6690350867, 0.0197428805}; - - // double guess[] = {5.14, 1.08190, 0.6744, 0.0141}; // MEG - srk-cpa - double guess[] = {1.4515, 0.67359, 0.0692};// , 0.01787};//co2 - double bounds[][] = {{0, 3.0055}, {0, 8.0055}, {0.00001, 10.001}, {-1.0015, 1.0015}, - {-320.0015, 320.0015}, {-320.901, 320.900195}, {-1.0, 1000}, {-0.800001, 0.8}, - {-80000.01, 20000.8}, {-0.01, 10.6}, {-0.01, 0.0015}, {-0.01, 0.0015}}; - - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='MDEA' AND - // Temperature>273.15 AND Temperature<620.15 ORDER BY Temperature"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='water' AND - // Temperature>273.15 AND Temperature<620.15 ORDER BY Temperature"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // PureComponentVapourPressures WHERE ComponentName='MEG' AND Temperature>273.15 - // AND Temperature<690.0 ORDER BY Temperature"); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='CO2' AND VapourPressure>5 AND Temperature<304.2"); - - try { - while (dataSet.next()) { - CPAFunction function = new CPAFunction(); - SystemInterface testSystem = - new SystemSrkCPA(Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("VapourPressure"))); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 1.0); - // testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // testSystem.init(0); - - double temp = testSystem.getTemperature(); - double val = testSystem.getPressure(); - - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - double stddev = val / 100.0; - double logVal = Math.log(val); - SampleValue sample = new SampleValue(val, stddev, sample1, standardDeviation1); - - // function.setBounds(bounds); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - function.setInitialGuess(guess); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - // dataSet = database.getResultSet( "SELECT * FROM PureComponentDensity WHERE - // ComponentName='MDEA' AND Temperature>273.15 ORDER BY Temperature"); - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='water' AND Temperature>273.15 AND Temperature<620.15 - // ORDER BY Temperature"); - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='MEG' AND Temperature>273.15 AND Temperature<690.0 ORDER - // BY Temperature"); - dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='CO2' AND VapourPressure>5 AND Temperature<304.2"); - try { - while (dataSet.next()) { - CPAFunctionDens function = new CPAFunctionDens(1); - SystemInterface testSystem = - new SystemSrkCPA(Double.parseDouble(dataSet.getString("Temperature")), 1.1); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - double temp = testSystem.getTemperature(); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(1.0);// Double.parseDouble(dataSet.getString("VapourPressure"))); - // testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.setTemperature(temp); - testSystem.setMixingRule(1); - // testSystem.init(0); - double dens = Double.parseDouble(dataSet.getString("liquiddensity")); - // double dens = Double.parseDouble(dataSet.getString("Density")); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - // double guess[] = {46939.4738048507, 1.5971863018, 0.7623134978, - // 0.0292037583}; - - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - // dataSet = database.getResultSet( "SELECT * FROM PureComponentVapourPressures - // WHERE ComponentName='water' AND Temperature>273.15 AND Temperature<620.15 - // ORDER BY Temperature"); - dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='CO2' AND VapourPressure>5 AND Temperature<304.2"); - - try { - while (dataSet.next()) { - CPAFunctionDens function = new CPAFunctionDens(0); - SystemInterface testSystem = new SystemSrkCPA(280, 5.001); - double temp = Double.parseDouble(dataSet.getString("Temperature")); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem - .setPressure(Double.parseDouble(dataSet.getString("VapourPressure")) + 0.5); - testSystem.setTemperature(temp); - testSystem.setMixingRule(2); - testSystem.init(0); - double dens = Double.parseDouble(dataSet.getString("gasdensity")); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - // double guess[] = {46939.4738048507, 1.5971863018, 0.7623134978, - // 0.0292037583}; - - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/test.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPAStatoil.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPAStatoil.java deleted file mode 100644 index 6f831a653d..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPAStatoil.java +++ /dev/null @@ -1,91 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.cpaParam; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPAstatoil; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestCPAStatoil class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCPAStatoil { - static Logger logger = LogManager.getLogger(TestCPAStatoil.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); - LevenbergMarquardt optim = new LevenbergMarquardt(); - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='MEG' AND Temperature<500.0");// AND - // VapourPressure>0.00000000001 - // AND - // Reference='Stull1947'"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // activityCoefficientTable WHERE Component1='MDEA' AND Component2='water'"); - - try { - while (dataSet.next()) { - CPAFunctionStatoil function = new CPAFunctionStatoil(); - - SystemInterface testSystem = new SystemSrkCPAstatoil(280, 0.001); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.createDatabase(true); - double sample1[] = {Double.parseDouble(dataSet.getString("Temperature"))}; - double standardDeviation1[] = {0.1}; - double val = Double.parseDouble(dataSet.getString("VapourPressure")); - testSystem.setPressure(val); - double stddev = val / 10.0; - double logVal = Math.log(val); - SampleValue sample = new SampleValue(val, stddev, sample1, standardDeviation1); - testSystem.init(0); - // double guess[] = {6602,2.45,0.27,353.69,0.05129}; - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - - // double guess[] = - // {((ComponentSrk)testSystem.getPhase(0).getComponent(0)).geta(),((ComponentSrk)testSystem.getPhase(0).getComponent(0)).getb(),testSystem.getPhase(0).getComponent(0).getAcentricFactor(),0.04567}; - double guess[] = {0.7892765953, -1.0606510837, 2.2071936510};// water CPA statoil - // double guess[] ={0.8581331725*0, -1.0053180150*0, 1.2736063639*0};//MEG CPA - // statoil - // double guess[] ={ 1.0008858863, 1.8649645470, -4.6720397496};//TEG CPA - // statoil - function.setInitialGuess(guess); - - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - // optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA_TEG.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA_TEG.java deleted file mode 100644 index 72c654684a..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA_TEG.java +++ /dev/null @@ -1,169 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.cpaParam; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPAstatoil; -import neqsim.util.database.NeqSimExperimentDatabase; - -/** - *

- * TestCPA_TEG class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCPA_TEG { - static Logger logger = LogManager.getLogger(TestCPA_TEG.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimExperimentDatabase database = new NeqSimExperimentDatabase(); - - // double guess[] = {13.21, 39.1260, 1.1692, 0.0188, 1.4337};//,1.0008858863, - // 1.8649645470, -4.6720397496}; // MEG - srk-cpa - // double guess[] = {0.903477158616734, 1.514853438, -1.86430399826}; - double guess[] = {0.28454, -0.0044236}; - // double guess[] = {0.28652795, 0.001}; - // double guess[] ={ 0.6224061375113976, -0.050295759360433255, - // 0.7162394329011095};//water CPA statoil - // double guess[] ={ 1.683161439854159, -2.0134329439188, - // 2.1912144731621446};//water CPA statoil - - // double guess[] = {2.97, 3.7359, 0.0692, 0.0787};//, 0.01787};//co2 - // double guess[] = {0.1}; - ResultSet dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='TEG' AND Temperature>273.15 AND Temperature<690.0 ORDER BY Temperature"); - - try { - while (!dataSet.next()) { - CPAFunction function = new CPAFunction(); - SystemInterface testSystem = new SystemSrkCPAstatoil( - Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("VapourPressure"))); - testSystem.addComponent(dataSet.getString("ComponentName"), 1.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // testSystem.init(0); - - double temp = testSystem.getTemperature(); - double val = testSystem.getPressure(); - - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - double stddev = val / 50.0; - double logVal = Math.log(val); - SampleValue sample = new SampleValue(val, stddev, sample1, standardDeviation1); - - // function.setBounds(bounds); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - function.setInitialGuess(guess); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM PureComponentDensity WHERE ComponentName='MEG' AND Temperature>173.15 ORDER BY Temperature"); - try { - while (dataSet.next()) { - CPAFunctionDens function = new CPAFunctionDens(1); - SystemInterface testSystem = new SystemSrkCPAstatoil( - Double.parseDouble(dataSet.getString("Temperature")), 1.1); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - double temp = testSystem.getTemperature(); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.createDatabase(true); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - // testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.setTemperature(temp); - testSystem.setMixingRule(1); - // testSystem.init(0); - double dens = Double.parseDouble(dataSet.getString("Density")); - // double dens = Double.parseDouble(dataSet.getString("Density")); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - // double guess[] = {46939.4738048507, 1.5971863018, 0.7623134978, - // 0.0292037583}; - - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM PureComponentCpHeatCapacity WHERE ComponentName='TEG' AND Temperature>263.15 ORDER BY Temperature"); - try { - while (!dataSet.next()) { - CPAFunctionCp function = new CPAFunctionCp(1); - SystemInterface testSystem = new SystemSrkCPAstatoil( - Double.parseDouble(dataSet.getString("Temperature")), 1.1); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - double temp = testSystem.getTemperature(); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.createDatabase(true); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - // testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.setTemperature(temp); - testSystem.setMixingRule(1); - // testSystem.init(0); - double dens = Double.parseDouble(dataSet.getString("HeatCapacityCp")); - // double dens = Double.parseDouble(dataSet.getString("Density")); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - // double guess[] = {46939.4738048507, 1.5971863018, 0.7623134978, - // 0.0292037583}; - - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayResult(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/test.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA_ice.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA_ice.java deleted file mode 100644 index b7cc6faa40..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/cpaParam/TestCPA_ice.java +++ /dev/null @@ -1,195 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.cpaParam; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPA; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestCPA_ice class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestCPA_ice { - static Logger logger = LogManager.getLogger(TestCPA_ice.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - double guess[] = {1.453, 0.9894, 1.0669, 0.05787}; // water - srk-cpa - // 1,6297102017 1,1253994266 1,1701135830 0,0701182891 - double bounds[][] = {{0, 3.0055}, {0, 8.0055}, {0.00001, 10.001}, {-1.0015, 1.0015}, - {-320.0015, 320.0015}, {-320.901, 320.900195}, {-1.0, 1000}, {-0.800001, 0.8}, - {-80000.01, 20000.8}, {-0.01, 10.6}, {-0.01, 0.0015}, {-0.01, 0.0015}}; - - ResultSet dataSet = database.getResultSet( - "SELECT * FROM SolidVapourPressure WHERE ComponentName='water' ORDER BY Temperature"); - - try { - while (dataSet.next()) { - CPAFunction function = new CPAFunction(); - SystemInterface testSystem = - new SystemSrkCPA(Double.parseDouble(dataSet.getString("Temperature")), - Double.parseDouble(dataSet.getString("VapourPressure"))); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 1.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // testSystem.init(0); - - double temp = testSystem.getTemperature(); - double val = testSystem.getPressure(); - - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - - double stddev = val / 100.0; - double logVal = Math.log(val); - SampleValue sample = new SampleValue(val, stddev, sample1, standardDeviation1); - - // function.setBounds(bounds); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - function.setInitialGuess(guess); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM SolidVapourPressure WHERE ComponentName='water' ORDER BY Temperature"); - - try { - while (dataSet.next()) { - CPAFunctionDens function = new CPAFunctionDens(1); - SystemInterface testSystem = - new SystemSrkCPA(Double.parseDouble(dataSet.getString("Temperature")), 1.1); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - double temp = testSystem.getTemperature(); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem.setPressure(Double.parseDouble(dataSet.getString("VapourPressure"))); - // testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.setTemperature(temp); - testSystem.setMixingRule(1); - // testSystem.init(0); - // double dens = Double.parseDouble(dataSet.getString("liquiddensity")); - double dens = Double.parseDouble(dataSet.getString("soliddensity")); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - // double guess[] = {46939.4738048507, 1.5971863018, 0.7623134978, - // 0.0292037583}; - - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='water' ORDER BY Temperature"); - - try { - while (!dataSet.next()) { - CPAFunctionDens function = new CPAFunctionDens(0); - SystemInterface testSystem = new SystemSrkCPA(280, 5.001); - double temp = Double.parseDouble(dataSet.getString("Temperature")); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem - .setPressure(Double.parseDouble(dataSet.getString("VapourPressure")) + 0.5); - testSystem.setTemperature(temp); - testSystem.setMixingRule(2); - testSystem.init(0); - double dens = Double.parseDouble(dataSet.getString("gasdensity")); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - // double guess[] = {46939.4738048507, 1.5971863018, 0.7623134978, - // 0.0292037583}; - - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - dataSet = database.getResultSet( - "SELECT * FROM PureComponentVapourPressures WHERE ComponentName='water' AND Temperature>273.15 AND Temperature<620.15 ORDER BY Temperature"); - - try { - while (dataSet.next()) { - CPAFunctionDens function = new CPAFunctionDens(0); - SystemInterface testSystem = new SystemSrkCPA(280, 5.001); - double temp = Double.parseDouble(dataSet.getString("Temperature")); - // SystemInterface testSystem = new SystemSrkEos(280, 0.001); - testSystem.addComponent(dataSet.getString("ComponentName"), 100.0); - testSystem - .setPressure(Double.parseDouble(dataSet.getString("VapourPressure")) + 0.5); - testSystem.setTemperature(temp); - testSystem.setMixingRule(2); - testSystem.init(0); - double dens = Double.parseDouble(dataSet.getString("gasdensity")); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = - new SampleValue(dens, dens / 100.0, sample1, standardDeviation1); - // double guess[] = {46939.4738048507, 1.5971863018, 0.7623134978, - // 0.0292037583}; - - // double guess[] = {9.341E4,1.953E0,1.756E-1,92.69,0.129}; - function.setInitialGuess(guess); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - - LevenbergMarquardt optim = new LevenbergMarquardt(); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - optim.writeToTextFile("c:/test.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction.java deleted file mode 100644 index 99568ef121..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction.java +++ /dev/null @@ -1,49 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.furstIonicParameters; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * FurstIonicParameterFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class FurstIonicParameterFunction extends LevenbergMarquardtFunction { - /** - *

- * Constructor for FurstIonicParameterFunction. - *

- */ - public FurstIonicParameterFunction() { - // params = new double[3]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - // system.init(0); - system.init(1); - return system.getPhase(1).getOsmoticCoefficient( - system.getPhase(1).getComponent("water").getComponentNumber()); - // return system.getPhase(1).getOsmoticCoefficientOfWater(); - // return system.getPhase(1).getMeanIonicActivity(1,2); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - neqsim.thermo.util.constants.FurstElectrolyteConstants.setFurstParam(i, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhase(0)).reInitFurstParam(); - ((PhaseModifiedFurstElectrolyteEos) system.getPhase(1)).reInitFurstParam(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction_Activity.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction_Activity.java deleted file mode 100644 index acd75e680e..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction_Activity.java +++ /dev/null @@ -1,47 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.furstIonicParameters; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * FurstIonicParameterFunction_Activity class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class FurstIonicParameterFunction_Activity extends LevenbergMarquardtFunction { - /** - *

- * Constructor for FurstIonicParameterFunction_Activity. - *

- */ - public FurstIonicParameterFunction_Activity() { - // params = new double[3]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(0); - system.init(1); - // return system.getPhase(1).getOsmoticCoefficientOfWater(); - return system.getPhase(1).getMolalMeanIonicActivity(1, 2); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - neqsim.thermo.util.constants.FurstElectrolyteConstants.setFurstParam(i, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhase(0)).reInitFurstParam(); - ((PhaseModifiedFurstElectrolyteEos) system.getPhase(1)).reInitFurstParam(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction_Density.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction_Density.java deleted file mode 100644 index 7c8e90da6f..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/FurstIonicParameterFunction_Density.java +++ /dev/null @@ -1,48 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.furstIonicParameters; - -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; -import neqsim.thermo.phase.PhaseModifiedFurstElectrolyteEos; - -/** - *

- * FurstIonicParameterFunction_Density class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class FurstIonicParameterFunction_Density extends LevenbergMarquardtFunction { - /** - *

- * Constructor for FurstIonicParameterFunction_Density. - *

- */ - public FurstIonicParameterFunction_Density() { - // params = new double[3]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(0); - system.init(1); - system.initPhysicalProperties(); - // return system.getPhase(1).getOsmoticCoefficientOfWater(); - return system.getPhase(1).getPhysicalProperties().getDensity(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - neqsim.thermo.util.constants.FurstElectrolyteConstants.setFurstParam(i, value); - ((PhaseModifiedFurstElectrolyteEos) system.getPhase(0)).reInitFurstParam(); - ((PhaseModifiedFurstElectrolyteEos) system.getPhase(1)).reInitFurstParam(); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/TestFurstIonicParameterFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/TestFurstIonicParameterFunction.java deleted file mode 100644 index b7cc5c084e..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/furstIonicParameters/TestFurstIonicParameterFunction.java +++ /dev/null @@ -1,190 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.furstIonicParameters; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemElectrolyteCPAstatoil; -import neqsim.thermo.system.SystemInterface; -import neqsim.util.database.NeqSimDataBase; - -/** - *

- * TestFurstIonicParameterFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestFurstIonicParameterFunction { - static Logger logger = LogManager.getLogger(TestFurstIonicParameterFunction.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - // double[] guess = {0.0000001880, 0.0000014139, 0.0000284666, 0.0000389043, - // -0.0000000451, 0.0000088136}; - // double[] guess = {0.0000250998, 0.0000198635, -0.0000000311, -0.0000006630}; - // double[] guess = { 0.0000001116, 0.0000053822, 0.0000691846, 0.0000049520, - // -0.0000000605, -0.0000216352}; - // double[] guess = {0.0000000640, 0.0000011845 , 0.0000209744, 0.0000089071, - // -0.0000000272, 0.0000019014};//cpa-el - double[] guess = {0.0000000752, 0.0000037242, 0.0000250998, 0.0000198635, -0.0000000311, - -0.0000006630}; - // ResultSet dataSet = database.getResultSet( "SELECT * FROM ionicData WHERE - // Description IN ('NaCl')");//,'LiCl','Sr2Br','Sr2I')"); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM ionicData WHERE ion1<>'H3Oplus2' ORDER BY ion1,ion2,x2"); - // ResultSet dataSet = database.getResultSet( "SELECT * FROM ionicData WHERE - // ion1='Na+' AND ion2='Cl-'"); - int numb = 0; - try { - logger.info("adding...."); - while (dataSet.next() && numb < 22265) { - numb++; - - FurstIonicParameterFunction function = new FurstIonicParameterFunction(); - function.setInitialGuess(guess); - double x2 = Double.parseDouble(dataSet.getString("x2")); - // SystemInterface testSystem = new SystemFurstElectrolyteEos(280, - // 1.0); - SystemInterface testSystem = new SystemElectrolyteCPAstatoil(280.0, 1.0); - // testSystem.addComponent(dataSet.getString("ComponentSolvent"), - // Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent("water", Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent(dataSet.getString("Ion1"), x2); - testSystem.addComponent(dataSet.getString("Ion2"), - Double.parseDouble(dataSet.getString("x3"))); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.init(0); - double sample1[] = {x2 / 0.01802}; - double standardDeviation1[] = {0.01}; - double osmcoef = Double.parseDouble(dataSet.getString("OsmoticCoefficient")); - - testSystem.init(1); - - SampleValue sample = - new SampleValue(osmcoef, osmcoef / 100.0, sample1, standardDeviation1); - // SampleValue sample = new - // SampleValue(Double.parseDouble(dataSet.getString("IonicActivity")), - // Double.parseDouble(dataSet.getString("stddev2")), sample1, - // standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sample.setDescription(dataSet.getString("Description")); - sampleList.add(sample); - } - - // dataSet = database.getResultSet( "SELECT * FROM ionicData WHERE - // ion1<>'H3Oplus2' AND IonicActivity>=0.01"); - // dataSet = database.getResultSet( "SELECT * FROM ionicData WHERE - // Description - // IN ('NaCl','LiCl','Sr2Br','Sr2I') AND IonicActivity>=0.01"); - dataSet = database - .getResultSet("SELECT * FROM ionicData WHERE ion1='Na+' AND ion2='Cl-'"); - logger.info("setting new for activity"); - while (!dataSet.next()) { - FurstIonicParameterFunction_Activity function = - new FurstIonicParameterFunction_Activity(); - function.setInitialGuess(guess); - double x2 = Double.parseDouble(dataSet.getString("x2")); - // SystemInterface testSystem = new SystemFurstElectrolyteEos(280, - // 1.0); - SystemInterface testSystem = new SystemElectrolyteCPAstatoil(280, 1.0); - testSystem.addComponent(dataSet.getString("ComponentSolvent"), - Double.parseDouble(dataSet.getString("x1"))); - testSystem.addComponent(dataSet.getString("Ion1"), x2); - testSystem.addComponent(dataSet.getString("Ion2"), - Double.parseDouble(dataSet.getString("x3"))); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("Pressure"))); - testSystem.init(0); - double sample1[] = {x2 / 0.01802}; - double standardDeviation1[] = {0.01}; - // SampleValue sample = new - // SampleValue(Double.parseDouble(dataSet.getString("OsmoticCoefficient")), - // Double.parseDouble(dataSet.getString("stddev1")), sample1, - // standardDeviation1); - double ionact = Double.parseDouble(dataSet.getString("IonicActivity")); - SampleValue sample = new SampleValue(ionact, ionact, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setReference(dataSet.getString("Reference")); - sample.setDescription(dataSet.getString("Description")); - sampleList.add(sample); - } - - dataSet = - database.getResultSet("SELECT * FROM saltdens WHERE ion1='Na+' AND ion2='Cl-'"); - logger.info("fitting to ionic density"); - while (!dataSet.next()) { - FurstIonicParameterFunction_Density function = - new FurstIonicParameterFunction_Density(); - function.setInitialGuess(guess); - double x2 = Double.parseDouble(dataSet.getString("molfrac1")); - double x3 = Double.parseDouble(dataSet.getString("molfrac2")); - double x1 = 1.0 - x2 - x3; - SystemInterface testSystem = new SystemElectrolyteCPAstatoil(280, 1.0); - // SystemInterface testSystem = new SystemElectrolyteCPA(280, 1.0); - testSystem.addComponent(dataSet.getString("solvent"), x1); - testSystem.addComponent(dataSet.getString("Ion1"), x2); - testSystem.addComponent(dataSet.getString("Ion2"), x3); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("temperature"))); - testSystem.setPressure(Double.parseDouble(dataSet.getString("pressure"))); - testSystem.createDatabase(true); - testSystem.setMixingRule(7); - testSystem.init(0); - double sample1[] = {x2 / 0.01802}; - double standardDeviation1[] = {0.01}; - // SampleValue sample = new - // SampleValue(Double.parseDouble(dataSet.getString("OsmoticCoefficient")), - // Double.parseDouble(dataSet.getString("stddev1")), sample1, - // standardDeviation1); - double density = Double.parseDouble(dataSet.getString("density")) * 1000.0; - SampleValue sample = - new SampleValue(density, density / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error: ", e); - } - - // double sample1[] = {0.1}; - // for(int i=0;i - * HydrateFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class HydrateFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(HydrateFunction.class); - - /** - *

- * Constructor for HydrateFunction. - *

- */ - public HydrateFunction() { - // params = new double[3]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - try { - thermoOps.hydrateFormationTemperature(1); - // System.out.println("temperature " + system.getTemperature()); - } catch (Exception e) { - logger.error(e.toString()); - } - return system.getTemperature(); - } - - /** {@inheritDoc} */ - @Override - public double calcTrueValue(double val) { - return val; - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - // int structure = 1; - params[i] = value; - // if(i==0) ((ComponentHydrate) - // system.getPhase(4).getComponent("water")).setDGfHydrate(value, structure); - // if(i==1) ((ComponentHydrate) - // system.getPhase(4).getComponent("water")).setDHfHydrate(value, structure); - // int k=0; - - // if(i==0) ((ComponentHydrate) - // system.getPhase(4).getComponent("water")).setEmptyHydrateVapourPressureConstant(0,0, - // value); - // if(i==1) ((ComponentHydrate) - // system.getPhase(4).getComponent("water")).setEmptyHydrateVapourPressureConstant(0,1, - // value); - - // for(int k=0;k - * TestHydrateFunction class. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public class TestHydrateFunction { - static Logger logger = LogManager.getLogger(TestHydrateFunction.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimDataBase database = new NeqSimDataBase(); - - double[] guess = {155.8090060223, 3.1907109417, 0.4069986258};// methane fitted statoil - // sCPA-MC - // double[] guess = { 176.4, 3.2641, 0.5651}; //ethane fitted statoil sCPA-MC - // double[] guess = {126.5783867132, 3.1325067483, 0.3591889027}; // nitrogen - // fitted statoil sCPA-MC - // double[] guess = {205.8859461427, 3.3205773626, 0.6623796853}; // propane - // fitted statoil sCPA-MC - // double[] guess = { 225.1504438988, 3.0810162204, 0.8708186545}; // i-butane - // fitted statoil sCPA-MC - - // double[] guess = { 154.7937576383, 3.2008300801, 0.4526279094};//methane - // fitted sCPA - // double[] guess = { 170.1623828321, 3.0372071690, 0.6846338805}; //CO2 - // double[] guess = { 154.0936564578, 3.1720449934, 0.4436459226};//, - // -293247.7186651294};//methane fitted' - // double[] guess = {17.5988597357, -6056.9305919979}; - - // ljeps, ljdiam,a - - ResultSet dataSet = database.getResultSet( - "SELECT * FROM HydratePureComp WHERE GuestMolecule='methane' AND Type<>'IHV' AND Pressure<57 AND Temperature>273.15"); - - int numb = 0; - try { - logger.info("adding...."); - while (dataSet.next() && numb < 6) { - numb++; - HydrateFunction function = new HydrateFunction(); - function.setInitialGuess(guess); - double pres = Double.parseDouble(dataSet.getString("Pressure")); - double temp = Double.parseDouble(dataSet.getString("Temperature")); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(280, 1.0); - SystemInterface testSystem = new SystemSrkCPAstatoil(280, 1.0); - testSystem.addComponent(dataSet.getString("GuestMolecule"), 1.0); - testSystem.addComponent("water", 1.0); - // testSystem.setSolidPhaseCheck(true); - testSystem.setHydrateCheck(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(7); - testSystem.setTemperature(temp); - testSystem.setPressure(pres); - testSystem.init(0); - double sample1[] = {temp}; - double standardDeviation1[] = {0.1}; - SampleValue sample = new SampleValue(temp, 1.0, sample1, standardDeviation1); - // SampleValue sample = new - // SampleValue(Double.parseDouble(dataSet.getString("IonicActivity")), - // Double.parseDouble(dataSet.getString("stddev2")), sample1, - // standardDeviation1); - sample.setFunction(function); - sample.setThermodynamicSystem(testSystem); - sample.setDescription(Double.toString(testSystem.getPressure())); - sample.setReference(dataSet.getString("Reference")); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error: ", e); - } - - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - // do simulations - optim.solve(); - // optim.runMonteCarloSimulation(); - optim.displayCurveFit(); - // optim.writeToCdfFile("c:/testFit.nc"); - // optim.writeToTextFile("c:/testFit.txt"); - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/specificHeat/SpecificHeatCpFunction.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/specificHeat/SpecificHeatCpFunction.java deleted file mode 100644 index 200cbedf61..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/specificHeat/SpecificHeatCpFunction.java +++ /dev/null @@ -1,62 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.specificHeat; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardtFunction; - -/** - *

- * SpecificHeatCpFunction class. - *

- * - * @author asmund - * @version $Id: $Id - */ -public class SpecificHeatCpFunction extends LevenbergMarquardtFunction { - static Logger logger = LogManager.getLogger(SpecificHeatCpFunction.class); - - /** - *

- * Constructor for SpecificHeatCpFunction. - *

- */ - public SpecificHeatCpFunction() { - params = new double[4]; - } - - /** {@inheritDoc} */ - @Override - public double calcValue(double[] dependentValues) { - system.init(0); - try { - thermoOps.TPflash(); - } catch (Exception e) { - logger.error(e.toString()); - } - - system.init(3); - return system.getPhase(0).getCp("kJ/kgK"); - } - - /** {@inheritDoc} */ - @Override - public void setFittingParams(int i, double value) { - params[i] = value; - if (i == 1) { - system.getPhases()[0].getComponents()[0].setCpB(value); - system.getPhases()[1].getComponents()[0].setCpB(value); - } - if (i == 0) { - system.getPhases()[0].getComponents()[0].setCpA(value); - system.getPhases()[1].getComponents()[0].setCpA(value); - } - if (i == 2) { - system.getPhases()[0].getComponents()[0].setCpC(value); - system.getPhases()[1].getComponents()[0].setCpC(value); - } - if (i == 3) { - system.getPhases()[0].getComponents()[0].setCpD(value); - system.getPhases()[1].getComponents()[0].setCpD(value); - } - } -} diff --git a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/specificHeat/TestCp.java b/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/specificHeat/TestCp.java deleted file mode 100644 index 8bc3869d8d..0000000000 --- a/src/main/java/neqsim/thermo/util/parameterFitting/pureComponentParameterFitting/specificHeat/TestCp.java +++ /dev/null @@ -1,77 +0,0 @@ -package neqsim.thermo.util.parameterFitting.pureComponentParameterFitting.specificHeat; - -import java.sql.ResultSet; -import java.util.ArrayList; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import neqsim.statistics.parameterFitting.SampleSet; -import neqsim.statistics.parameterFitting.SampleValue; -import neqsim.statistics.parameterFitting.nonLinearParameterFitting.LevenbergMarquardt; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; -import neqsim.util.database.NeqSimExperimentDatabase; - -/** - *

- * TestCp class. - *

- * - * @author asmund - * @version $Id: $Id - */ -public class TestCp { - static Logger logger = LogManager.getLogger(TestCp.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - LevenbergMarquardt optim = new LevenbergMarquardt(); - ArrayList sampleList = new ArrayList(); - - // inserting samples from database - NeqSimExperimentDatabase database = new NeqSimExperimentDatabase(); - - // ResultSet dataSet = database.getResultSet( "SELECT * FROM - // BinaryFreezingPointData WHERE ComponentSolvent1='MEG' ORDER BY - // FreezingTemperature"); - ResultSet dataSet = database.getResultSet( - "SELECT * FROM PureComponentCpHeatCapacity WHERE ComponentName='seawater'"); - int i = 0; - - try { - while (dataSet.next() && i < 4) { - i++; - SpecificHeatCpFunction function = new SpecificHeatCpFunction(); - double guess[] = {36.54003, -0.034802404, 0.0001168117, -1.3003096E-07}; // MEG - function.setInitialGuess(guess); - - SystemInterface testSystem = new SystemSrkEos(280, 1.101); - testSystem.addComponent(dataSet.getString("ComponentName"), 1.0); - testSystem.setMixingRule(2); - testSystem.init(0); - testSystem.setTemperature(Double.parseDouble(dataSet.getString("Temperature"))); - testSystem.setPressure(5.0); - double sample1[] = {testSystem.getPhase(0).getComponent(0).getz()}; - double standardDeviation1[] = {0.1, 0.1, 0.1}; - double val = Double.parseDouble(dataSet.getString("HeatCapacityCp")); - - SampleValue sample = new SampleValue(val, val / 100.0, sample1, standardDeviation1); - sample.setFunction(function); - sample.setReference(dataSet.getString("Reference")); - sample.setThermodynamicSystem(testSystem); - sampleList.add(sample); - } - } catch (Exception e) { - logger.error("database error" + e); - } - SampleSet sampleSet = new SampleSet(sampleList); - optim.setSampleSet(sampleSet); - - optim.solve(); - } -} diff --git a/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java b/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java index a618692509..752d3c8483 100644 --- a/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java +++ b/src/main/java/neqsim/thermo/util/readwrite/EclipseFluidReadWrite.java @@ -4,10 +4,11 @@ import java.io.File; import java.io.FileReader; import java.util.ArrayList; - +import java.util.Arrays; +import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.phase.PhaseEosInterface; import neqsim.thermo.system.SystemInterface; @@ -20,326 +21,369 @@ * @version $Id: $Id */ public class EclipseFluidReadWrite { - static Logger logger = LogManager.getLogger(EclipseFluidReadWrite.class); - public static String pseudoName = ""; - - public static void setComposition(SystemInterface fluid, String inputFile, String pseudoNameIn) { - pseudoName = pseudoNameIn; - setComposition(fluid, inputFile); - } - - public static void setComposition(SystemInterface fluid, String inputFile) { - fluid.setEmptyFluid(); - try (BufferedReader br = new BufferedReader(new FileReader(new File(inputFile)))) { - String st; - ArrayList names = new ArrayList(); - ArrayList ZI = new ArrayList(); - while ((st = br.readLine()) != null) { - if (st.equals("CNAMES")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - names.add(st); - } - } - if (st.equals("ZI")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - ZI.add(Double.parseDouble(st)); - } - } - } - for (int counter = 0; counter < names.size(); counter++) { - String name = names.get(counter); - if (name.equals("C1")) { - name = "methane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("C2")) { - name = "ethane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("N2")) { - name = "nitrogen"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("iC4")) { - name = "i-butane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("C4")) { - name = "n-butane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("iC5")) { - name = "i-pentane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("C5")) { - name = "n-pentane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("C6")) { - name = "n-hexane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("C3") ) { - name = "propane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("CO2")) { - name = "CO2"; - fluid.addComponent(name, ZI.get(counter)); - } - else { - fluid.addComponent(name+pseudoName, ZI.get(counter)); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - - } - - public static SystemInterface read(String inputFile, String pseudoNameIn) { - pseudoName = pseudoNameIn; - return read(inputFile); - } - /** - *

- * read. - *

- * - * @param inputFile a {@link java.lang.String} object - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public static SystemInterface read(String inputFile) { - neqsim.thermo.system.SystemInterface fluid = new neqsim.thermo.system.SystemSrkEos(288.15, 1.01325); + static Logger logger = LogManager.getLogger(EclipseFluidReadWrite.class); - double[][] kij = null; - try (BufferedReader br = new BufferedReader(new FileReader(new File(inputFile)))) { - String st; + /** Constant pseudoName="" */ + public static String pseudoName = ""; - ArrayList names = new ArrayList(); - ArrayList TC = new ArrayList(); - ArrayList PC = new ArrayList(); - ArrayList ACF = new ArrayList(); - ArrayList MW = new ArrayList(); - ArrayList SSHIFT = new ArrayList(); - ArrayList TBOIL = new ArrayList(); - ArrayList VCRIT = new ArrayList(); - ArrayList PARACHOR = new ArrayList(); - ArrayList ZI = new ArrayList(); - ArrayList BIC = new ArrayList(); - String EOS; + /** + *

+ * setComposition. + *

+ * + * @param fluid a {@link neqsim.thermo.system.SystemInterface} object + * @param inputFile a {@link java.lang.String} object + * @param pseudoNameIn a {@link java.lang.String} object + */ + public static void setComposition(SystemInterface fluid, String inputFile, String pseudoNameIn) { + pseudoName = pseudoNameIn; + setComposition(fluid, inputFile); + } - while ((st = br.readLine()) != null) { - // System.out.println("EOS " +EOS ); - if (st.trim().equals("EOS")) { - EOS = br.readLine().replace("/", ""); - if (EOS.contains("SRK")) { - fluid = new neqsim.thermo.system.SystemSrkEos(288.15, 100.01325); - } else if (EOS.contains("PR")) { - fluid = new neqsim.thermo.system.SystemPrEos(288.15, 1.01325); - } else if (EOS.contains("PR78")) { - fluid = new neqsim.thermo.system.SystemPrEos1978(288.15, 1.01325); - } - } - if (st.equals("CNAMES")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - names.add(st); - } - } - if (st.equals("TCRIT")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - TC.add(Double.parseDouble(st)); - } - } - if (st.equals("PCRIT")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - PC.add(Double.parseDouble(st)); - } - } - if (st.equals("ACF")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - ACF.add(Double.parseDouble(st)); - } - } - if (st.equals("MW")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - MW.add(Double.parseDouble(st)); - } - } - if (st.equals("TBOIL")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - TBOIL.add(Double.parseDouble(st)); - } - } - if (st.equals("VCRIT")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - VCRIT.add(Double.parseDouble(st)); - } - } - if (st.equals("SSHIFT")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - SSHIFT.add(Double.parseDouble(st)); - } - } - if (st.equals("PARACHOR")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - PARACHOR.add(Double.parseDouble(st)); - } - } - if (st.equals("ZI")) { - while ((st = br.readLine().replace("/", "")) != null) { - if (st.startsWith("--")) { - break; - } - ZI.add(Double.parseDouble(st)); - } - } - if (st.equals("BIC")) { - int numb = 0; - // kij = new double[ZI.size()][ZI.size()]; - kij = new double[names.size()][names.size()]; - while ((st = br.readLine().replace("/", "")) != null) { - numb++; - if (st.startsWith("--")) { - break; - } + /** + *

+ * setComposition. + *

+ * + * @param fluid a {@link neqsim.thermo.system.SystemInterface} object + * @param inputFile a {@link java.lang.String} object + */ + public static void setComposition(SystemInterface fluid, String inputFile) { + fluid.setEmptyFluid(); + try (BufferedReader br = new BufferedReader(new FileReader(new File(inputFile)))) { + String st; + ArrayList names = new ArrayList(); + ArrayList ZI = new ArrayList(); + while ((st = br.readLine()) != null) { + if (st.equals("CNAMES")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--")) { + break; + } + names.add(st); + } + } + if (st.equals("ZI")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--")) { + break; + } + ZI.add(Double.parseDouble(st)); + } + } + } + for (int counter = 0; counter < names.size(); counter++) { + String name = names.get(counter); + if (name.equals("C1")) { + name = "methane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("C2")) { + name = "ethane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("N2")) { + name = "nitrogen"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("iC4")) { + name = "i-butane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("C4")) { + name = "n-butane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("iC5")) { + name = "i-pentane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("C5")) { + name = "n-pentane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("C6")) { + name = "n-hexane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("C3")) { + name = "propane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("CO2")) { + name = "CO2"; + fluid.addComponent(name, ZI.get(counter)); + } else { + fluid.addComponent(name + pseudoName, ZI.get(counter)); + } + } + } catch (Exception ex) { + logger.error(ex.getMessage()); + } + } - // String[] arr = st.replace(" ","").split(" "); - String[] arr = st.split(" "); - if (arr.length == 1) { - break; - } + /** + *

+ * read. + *

+ * + * @param inputFile a {@link java.lang.String} object + * @param pseudoNameIn a {@link java.lang.String} object + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public static SystemInterface read(String inputFile, String pseudoNameIn) { + pseudoName = pseudoNameIn; + return read(inputFile); + } - // List list = Arrays.asList(arr); - for (int i = 0; i < arr.length - 1; i++) { - BIC.add(Double.parseDouble(arr[i + 1])); - kij[numb][i] = Double.parseDouble(arr[i + 1]); - kij[i][numb] = kij[numb][i]; - // kij[numb-1][i] = Double.parseDouble(arr[i+1]); - // kij[i][numb-1] = kij[numb-1][i] ; - } - // numb++; - Double.parseDouble(arr[1]); - // System.out.println(list.size()); - // System.out.println(st); - // BIC.add(Double.parseDouble(st)); - } + /** + *

+ * read. + *

+ * + * @param inputFile a {@link java.lang.String} object + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public static SystemInterface read(String inputFile) { + neqsim.thermo.system.SystemInterface fluid = new neqsim.thermo.system.SystemSrkEos(288.15, + ThermodynamicConstantsInterface.referencePressure); - /* - * numb =0; - * - * for (int i = 0; i < names.size(); i++) { for (int j = i; j < names.size(); - * j++) { if(i==j) continue; //System.out.println("ij " + i + " " + j+ " " + - * BIC.get(numb)); System.out.println("ij " + i + " " + j+ " " + kij[i][j] ); - * //kij[i][j] = BIC.get(numb); //kij[j][i] = kij[i][j]; numb++; } } - */ - } - } - for (int counter = 0; counter < names.size(); counter++) { - String name = names.get(counter); - if (name.equals("C1") || TC.get(counter) < 00.0) { - name = "methane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("C2") || TC.get(counter) < 00.0) { - name = "ethane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("N2") || TC.get(counter) < 00.0) { - name = "nitrogen"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("iC4") || TC.get(counter) < 00.0) { - name = "i-butane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("C4") || TC.get(counter) < 00.0) { - name = "n-butane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("iC5") || TC.get(counter) < 00.0) { - name = "i-pentane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("C5") || TC.get(counter) < 00.0) { - name = "n-pentane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("C6") || TC.get(counter) < 00.0) { - name = "n-hexane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("C3") || TC.get(counter) < 00.0) { - name = "propane"; - fluid.addComponent(name, ZI.get(counter)); - } else if (name.equals("CO2") || TC.get(counter) < 00.0) { - name = "CO2"; - fluid.addComponent(name, ZI.get(counter)); - } else if (TC.get(counter) >= 00.0) { - name = names.get(counter); - fluid.addTBPfraction(name, ZI.get(counter), MW.get(counter) / 1000.0, 0.9); - name = name + "_PC"; - } else { - name = names.get(counter); - fluid.addTBPfraction(name, ZI.get(counter), MW.get(counter) / 1000.0, 0.9); - name = name + "_PC"; - // fluid.changeComponentName(name+"_PC", names.get(counter)); - } - // fluid.addComponent(name, ZI.get(counter)); - for (int i = 0; i < fluid.getMaxNumberOfPhases(); i++) { - fluid.getPhase(i).getComponent(name).setTC(TC.get(counter)); - fluid.getPhase(i).getComponent(name).setPC(PC.get(counter)); - fluid.getPhase(i).getComponent(name).setAcentricFactor(ACF.get(counter)); - fluid.getPhase(i).getComponent(name).setMolarMass(MW.get(counter) / 1000.0); - fluid.getPhase(i).getComponent(name).setNormalBoilingPoint(TBOIL.get(counter)); - fluid.getPhase(i).getComponent(name).setCriticalVolume(VCRIT.get(counter)); - fluid.getPhase(i).getComponent(name).setParachorParameter(PARACHOR.get(counter)); - fluid.getPhase(i).getComponent(name).setVolumeCorrectionConst(SSHIFT.get(counter)); - } - if (fluid.getPhase(0).getComponent(name).isIsTBPfraction()) { - fluid.changeComponentName(name, names.get(counter).replaceAll("_PC", "") + pseudoName); - } else { - // fluid.changeComponentName(name, names.get(counter)); - } + double[][] kij = null; + try (BufferedReader br = new BufferedReader(new FileReader(new File(inputFile)))) { + String st; - } - // System.out.println(st); - fluid.setMixingRule(2); - fluid.useVolumeCorrection(true); - fluid.init(0); - for (int i = 0; i < names.size(); i++) { - for (int j = i; j < names.size(); j++) { - for (int phase = 0; phase < fluid.getMaxNumberOfPhases(); phase++) { - ((PhaseEosInterface) fluid.getPhase(phase)).getMixingRule().setBinaryInteractionParameter(i, j, - kij[i][j]); - ((PhaseEosInterface) fluid.getPhase(phase)).getMixingRule().setBinaryInteractionParameter(j, i, - kij[i][j]); - } - } - } + ArrayList names = new ArrayList(); + ArrayList TC = new ArrayList(); + ArrayList PC = new ArrayList(); + ArrayList ACF = new ArrayList(); + ArrayList MW = new ArrayList(); + ArrayList SSHIFT = new ArrayList(); + ArrayList SSHIFTS = new ArrayList(); + ArrayList TBOIL = new ArrayList(); + ArrayList VCRIT = new ArrayList(); + ArrayList PARACHOR = new ArrayList(); + ArrayList ZI = new ArrayList(); + ArrayList BIC = new ArrayList(); + String EOS; + while ((st = br.readLine()) != null) { + // System.out.println("EOS " +EOS ); + if (st.trim().equals("EOS")) { + EOS = br.readLine().replace("/", ""); + if (EOS.contains("SRK")) { + fluid = new neqsim.thermo.system.SystemSrkEos(288.15, + ThermodynamicConstantsInterface.referencePressure); + } else if (EOS.contains("PR")) { + String corr = br.readLine().replace("/", ""); + if (corr.equals("PRCORR")) { + fluid = new neqsim.thermo.system.SystemPrEos1978(288.15, + ThermodynamicConstantsInterface.referencePressure); + } else { + fluid = new neqsim.thermo.system.SystemPrEos(288.15, + ThermodynamicConstantsInterface.referencePressure); + } + } else { + fluid = new neqsim.thermo.system.SystemPrEos(288.15, + ThermodynamicConstantsInterface.referencePressure); + } + } + if (st.equals("CNAMES")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + names.add(st); + } + } + if (st.equals("TCRIT")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + TC.add(Double.parseDouble(st)); + } + } + if (st.equals("PCRIT")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + PC.add(Double.parseDouble(st)); + } + } + if (st.equals("ACF")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + ACF.add(Double.parseDouble(st)); + } + } + if (st.equals("MW")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + MW.add(Double.parseDouble(st)); + } + } + if (st.equals("TBOIL")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + TBOIL.add(Double.parseDouble(st)); + } + } + if (st.equals("VCRIT")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + VCRIT.add(Double.parseDouble(st)); + } + } + if (st.equals("SSHIFT")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + SSHIFT.add(Double.parseDouble(st)); + } + } + if (st.equals("PARACHOR")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + PARACHOR.add(Double.parseDouble(st)); + } + } + if (st.equals("ZI")) { + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + ZI.add(Double.parseDouble(st)); + } + } + if (st.equals("BIC")) { + int addedComps = 0; + kij = new double[names.size()][names.size()]; + int lengthLastLine = 0; + List list = new ArrayList(); + while ((st = br.readLine().replace("/", "")) != null) { + if (st.startsWith("--") || st.isEmpty()) { + break; + } + String[] arr = st.split(" "); + List templist = new ArrayList(Arrays.asList(arr)); + list.addAll(templist); + list.removeAll(Arrays.asList("", null)); + if (lengthLastLine >= list.size()) { + continue; + } + lengthLastLine = list.size(); + for (int i = 0; i < list.size(); i++) { + BIC.add(Double.parseDouble(list.get(i))); + kij[i][addedComps + 1] = Double.parseDouble(list.get(i)); + kij[addedComps + 1][i] = kij[i][addedComps + 1]; + } + addedComps++; + list.clear(); + } + } + if (st.equals("SSHIFTS")) { + String line; + while ((line = br.readLine()) != null) { + st = line.replace("/", ""); + if (st.startsWith("--") || st.isEmpty()) { + break; + } + try { + SSHIFTS.add(Double.parseDouble(st)); + } catch (NumberFormatException e) { + System.out.println("Error parsing double value: " + e.getMessage()); + } + } + } + } + for (int counter = 0; counter < names.size(); counter++) { + String name = names.get(counter); + if (name.equals("C1") || TC.get(counter) < 00.0) { + name = "methane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("C2") || TC.get(counter) < 00.0) { + name = "ethane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("N2") || TC.get(counter) < 00.0) { + name = "nitrogen"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("iC4") || TC.get(counter) < 00.0) { + name = "i-butane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("C4") || TC.get(counter) < 00.0) { + name = "n-butane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("iC5") || TC.get(counter) < 00.0) { + name = "i-pentane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("C5") || TC.get(counter) < 00.0) { + name = "n-pentane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("C6") || TC.get(counter) < 00.0) { + name = "n-hexane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("C3") || TC.get(counter) < 00.0) { + name = "propane"; + fluid.addComponent(name, ZI.get(counter)); + } else if (name.equals("CO2") || TC.get(counter) < 00.0) { + name = "CO2"; + fluid.addComponent(name, ZI.get(counter)); + } else if (TC.get(counter) >= 00.0) { + name = names.get(counter); + double stddensity = 0.5046 * MW.get(counter) / 1000.0 + 0.668468; + fluid.addTBPfraction(name, ZI.get(counter), MW.get(counter) / 1000.0, stddensity); + name = name + "_PC"; + } else { + name = names.get(counter); + double stddensity = 0.5046 * MW.get(counter) / 1000.0 + 0.668468; + fluid.addTBPfraction(name, ZI.get(counter), MW.get(counter) / 1000.0, stddensity); + name = name + "_PC"; + // fluid.changeComponentName(name+"_PC", names.get(counter)); + } + // fluid.addComponent(name, ZI.get(counter)); + for (int i = 0; i < fluid.getMaxNumberOfPhases(); i++) { + fluid.getPhase(i).getComponent(name).setTC(TC.get(counter)); + fluid.getPhase(i).getComponent(name).setPC(PC.get(counter)); + fluid.getPhase(i).getComponent(name).setAcentricFactor(ACF.get(counter)); + fluid.getPhase(i).getComponent(name).setMolarMass(MW.get(counter) / 1000.0); + fluid.getPhase(i).getComponent(name).setNormalBoilingPoint(TBOIL.get(counter)); + fluid.getPhase(i).getComponent(name).setCriticalVolume(VCRIT.get(counter)); + fluid.getPhase(i).getComponent(name).setParachorParameter(PARACHOR.get(counter)); + if (SSHIFTS.size() > 0) { + fluid.getPhase(i).getComponent(name).setVolumeCorrectionConst(SSHIFTS.get(counter)); + } else { + fluid.getPhase(i).getComponent(name).setVolumeCorrectionConst(SSHIFT.get(counter)); + } + fluid.getPhase(i).getComponent(name).setRacketZ(0.29056 - 0.08775 * ACF.get(counter)); + } + if (fluid.getPhase(0).getComponent(name).isIsTBPfraction()) { + fluid.changeComponentName(name, names.get(counter).replaceAll("_PC", "") + pseudoName); + } else { + // fluid.changeComponentName(name, names.get(counter)); + } + } - // fluid.display(); - } catch (Exception e) { - e.printStackTrace(); - } - return fluid; - } + // System.out.println(st); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.init(0); + for (int i = 0; i < names.size(); i++) { + for (int j = i; j < names.size(); j++) { + for (int phase = 0; phase < fluid.getMaxNumberOfPhases(); phase++) { + ((PhaseEosInterface) fluid.getPhase(phase)).getMixingRule() + .setBinaryInteractionParameter(i, j, kij[i][j]); + ((PhaseEosInterface) fluid.getPhase(phase)).getMixingRule() + .setBinaryInteractionParameter(j, i, kij[i][j]); + } + } + } + // fluid.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + return fluid; + } } diff --git a/src/main/java/neqsim/thermo/util/readwrite/TablePrinter.java b/src/main/java/neqsim/thermo/util/readwrite/TablePrinter.java new file mode 100644 index 0000000000..84eceb2b7c --- /dev/null +++ b/src/main/java/neqsim/thermo/util/readwrite/TablePrinter.java @@ -0,0 +1,123 @@ +package neqsim.thermo.util.readwrite; + +import java.io.Serializable; + +/** + * A utility class for pretty printing a 2D string table. + * + * @author Even Solbraa + */ +public class TablePrinter implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * Prints a 2D string table in a formatted and visually appealing way. + * + * @param table The 2D string table to be printed. + */ + public static void printTable(String[][] table) { + if (table == null || table.length == 0 || table[0].length == 0) { + System.out.println("Table is empty."); + return; + } + + int[] columnWidths = getColumnWidths(table); + + printHorizontalLine(columnWidths); + + for (String[] row : table) { + printRow(row, columnWidths); + printHorizontalLine(columnWidths); + } + } + + /** + * Calculates the maximum width of each column in the table. + * + * @param table The 2D string table. + * @return An array containing the maximum width of each column. + */ + private static int[] getColumnWidths(String[][] table) { + int columns = table[0].length; + int[] columnWidths = new int[columns]; + + for (String[] row : table) { + for (int i = 0; i < columns; i++) { + int width = row[i].length(); + if (width > columnWidths[i]) { + columnWidths[i] = width; + } + } + } + + return columnWidths; + } + + /** + * Prints a horizontal line separator based on the column widths. + * + * @param columnWidths An array containing the maximum width of each column. + */ + private static void printHorizontalLine(int[] columnWidths) { + System.out.print("+"); + for (int width : columnWidths) { + for (int i = 0; i < width + 2; i++) { + System.out.print("-"); + } + System.out.print("+"); + } + System.out.println(); + } + + /** + * Prints a row of the table with appropriate padding based on column widths. + * + * @param row The row of data to be printed. + * @param columnWidths An array containing the maximum width of each column. + */ + private static void printRow(String[] row, int[] columnWidths) { + System.out.print("|"); + for (int i = 0; i < row.length; i++) { + String cell = row[i]; + int padding = columnWidths[i] - cell.length(); + System.out.print(" " + cell); + for (int j = 0; j < padding; j++) { + System.out.print(" "); + } + System.out.print(" |"); + } + System.out.println(); + } + + /** + * Prints a 2D string table in a formatted and visually appealing way. + * + * @param table The 2D double table to be printed. + */ + public static void printTable(double[][] table) { + printTable(convertDoubleToString(table)); + } + + /** + * Returns a 2D string table in a formatted and visually appealing way. + * + * @param doubleArray The 2D double table to be printed. + * @return 2d string table + */ + public static String[][] convertDoubleToString(double[][] doubleArray) { + // Initialize the 2D String array with the same dimensions as the double array + String[][] stringArray = new String[doubleArray.length][]; + + for (int i = 0; i < doubleArray.length; i++) { + // Initialize the inner array with the same length as the corresponding double array + stringArray[i] = new String[doubleArray[i].length]; + + for (int j = 0; j < doubleArray[i].length; j++) { + // Convert each double value to string and store it + stringArray[i][j] = String.valueOf(doubleArray[i][j]); + } + } + + return stringArray; + } +} diff --git a/src/main/java/neqsim/thermo/util/referenceEquations/methaneBWR32.java b/src/main/java/neqsim/thermo/util/referenceEquations/methaneBWR32.java index a60407ec1c..5befdc5a75 100644 --- a/src/main/java/neqsim/thermo/util/referenceEquations/methaneBWR32.java +++ b/src/main/java/neqsim/thermo/util/referenceEquations/methaneBWR32.java @@ -9,105 +9,106 @@ * @version $Id: $Id */ public class methaneBWR32 { - double gamma = 0.0096; - double[] N = new double[] {-1.84E-02, 1.051016206, 1.61E+01, 8.48E+02, -4.27E+04, 7.66E-04, - -4.84E-01, 8.52E+01, -1.66E+04, -3.75E-05, 2.86E-02, -2.868528597, 1.19E-04, -8.53E-03, - 3.836506384, 2.50E-05, 5.80E-06, -7.16E-03, 1.26E-04, 2.22E+04, -1.48E+06, 5.05E+01, - 1.64E+06, 2.13E-01, 3.78E+01, -1.19E-05, -3.16E+01, -4.10E-06, 1.49E-03, 3.15E-09, - -2.17E-06, 2.40E-05}; + double gamma = 0.0096; + double[] N = new double[] {-1.84E-02, 1.051016206, 1.61E+01, 8.48E+02, -4.27E+04, 7.66E-04, + -4.84E-01, 8.52E+01, -1.66E+04, -3.75E-05, 2.86E-02, -2.868528597, 1.19E-04, -8.53E-03, + 3.836506384, 2.50E-05, 5.80E-06, -7.16E-03, 1.26E-04, 2.22E+04, -1.48E+06, 5.05E+01, 1.64E+06, + 2.13E-01, 3.78E+01, -1.19E-05, -3.16E+01, -4.10E-06, 1.49E-03, 3.15E-09, -2.17E-06, 2.40E-05}; - /** - *

- * calcPressure. - *

- * - * @param molDens a double - * @param temp a double - * @return a double - */ - public double calcPressure(double molDens, double temp) { - double pres = 0.0; - double R = 0.08205616; - pres = molDens * R * temp - + molDens * molDens - * (N[0] * temp + N[1] * Math.sqrt(temp) + N[2] + N[3] / temp - + N[4] / temp / temp) - + Math.pow(molDens, 3.0) * (N[5] * temp + N[6] + N[7] / temp + N[8] / temp / temp) - + Math.pow(molDens, 4.0) * (N[9] * temp + N[10] + N[11] / temp) - + Math.pow(molDens, 5.0) * N[12] - + Math.pow(molDens, 6.0) * (N[13] / temp + N[14] / temp / temp) - + Math.pow(molDens, 7.0) * N[15] / temp - + Math.pow(molDens, 8.0) * (N[16] / temp + N[17] / temp / temp) - + Math.pow(molDens, 9.0) * N[18] / temp / temp - + Math.pow(molDens, 3.0) * (N[19] / temp / temp + N[20] / Math.pow(temp, 3.0)) - * Math.exp(-gamma * Math.pow(molDens, 2.0)) - + Math.pow(molDens, 5.0) * (N[21] / temp / temp + N[22] / Math.pow(temp, 4.0)) - * Math.exp(-gamma * Math.pow(molDens, 2.0)) - + Math.pow(molDens, 7.0) * (N[23] / temp / temp + N[24] / Math.pow(temp, 3.0)) - * Math.exp(-gamma * Math.pow(molDens, 2.0)) - + Math.pow(molDens, 9.0) * (N[25] / temp / temp + N[26] / Math.pow(temp, 4.0)) - * Math.exp(-gamma * Math.pow(molDens, 2.0)) - + Math.pow(molDens, 11.0) * (N[27] / temp / temp + N[28] / Math.pow(temp, 3.0)) - * Math.exp(-gamma * Math.pow(molDens, 2.0)) - + Math.pow(molDens, 13.0) - * (N[29] / temp / temp + N[30] / Math.pow(temp, 3.0) - + N[31] / Math.pow(temp, 4.0)) - * Math.exp(-gamma * Math.pow(molDens, 2.0)); + /** + *

+ * calcPressure. + *

+ * + * @param molDens a double + * @param temp a double + * @return a double + */ + public double calcPressure(double molDens, double temp) { + double pres = 0.0; + double R = 0.08205616; + pres = molDens * R * temp + + molDens * molDens + * (N[0] * temp + N[1] * Math.sqrt(temp) + N[2] + N[3] / temp + N[4] / temp / temp) + + Math.pow(molDens, 3.0) * (N[5] * temp + N[6] + N[7] / temp + N[8] / temp / temp) + + Math.pow(molDens, 4.0) * (N[9] * temp + N[10] + N[11] / temp) + + Math.pow(molDens, 5.0) * N[12] + + Math.pow(molDens, 6.0) * (N[13] / temp + N[14] / temp / temp) + + Math.pow(molDens, 7.0) * N[15] / temp + + Math.pow(molDens, 8.0) * (N[16] / temp + N[17] / temp / temp) + + Math.pow(molDens, 9.0) * N[18] / temp / temp + + Math.pow(molDens, 3.0) * (N[19] / temp / temp + N[20] / Math.pow(temp, 3.0)) + * Math.exp(-gamma * Math.pow(molDens, 2.0)) + + Math.pow(molDens, 5.0) * (N[21] / temp / temp + N[22] / Math.pow(temp, 4.0)) + * Math.exp(-gamma * Math.pow(molDens, 2.0)) + + Math.pow(molDens, 7.0) * (N[23] / temp / temp + N[24] / Math.pow(temp, 3.0)) + * Math.exp(-gamma * Math.pow(molDens, 2.0)) + + Math.pow(molDens, 9.0) * (N[25] / temp / temp + N[26] / Math.pow(temp, 4.0)) + * Math.exp(-gamma * Math.pow(molDens, 2.0)) + + Math.pow(molDens, 11.0) * (N[27] / temp / temp + N[28] / Math.pow(temp, 3.0)) + * Math.exp(-gamma * Math.pow(molDens, 2.0)) + + Math.pow(molDens, 13.0) + * (N[29] / temp / temp + N[30] / Math.pow(temp, 3.0) + N[31] / Math.pow(temp, 4.0)) + * Math.exp(-gamma * Math.pow(molDens, 2.0)); - return pres + 0.01325; - } + return pres + 0.01325; + } - /** - *

- * molDens. - *

- * - * @param temp a double - * @param pres a double - * @param gas a boolean - * @return a double - */ - public double molDens(double temp, double pres, boolean gas) { - double guessMolDens = 0.04; - if (!gas) - guessMolDens = 1.0; - double error = 0.0, oldError = 1.0; - double molVol = 1.0, oldMolVol = 1.0, derrordmolvol = 0.0; - int iter = 0; - do { - iter++; - if (iter < 4) { - guessMolDens -= error / 1000.0; - } else { - guessMolDens -= error / derrordmolvol; - } + /** + *

+ * molDens. + *

+ * + * @param temp a double + * @param pres a double + * @param gas a boolean + * @return a double + */ + public double molDens(double temp, double pres, boolean gas) { + double guessMolDens = 0.04; + if (!gas) { + guessMolDens = 1.0; + } + double error = 0.0; + double oldError = 1.0; + double molVol = 1.0; + double oldMolVol = 1.0; + double derrordmolvol = 0.0; + int iter = 0; + do { + iter++; + if (iter < 4) { + guessMolDens -= error / 1000.0; + } else { + guessMolDens -= error / derrordmolvol; + } - molVol = guessMolDens; - error = calcPressure(guessMolDens, temp) - pres; - derrordmolvol = (error - oldError) / (molVol - oldMolVol); + molVol = guessMolDens; + error = calcPressure(guessMolDens, temp) - pres; + derrordmolvol = (error - oldError) / (molVol - oldMolVol); - System.out.println("error " + error); - oldError = error; - oldMolVol = molVol; - } while (Math.abs(error) > 1e-10); - return guessMolDens; - } + System.out.println("error " + error); + oldError = error; + oldMolVol = molVol; + } while (Math.abs(error) > 1e-10); + return guessMolDens; + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - methaneBWR32 testMet = new methaneBWR32(); - double pres = testMet.calcPressure(0.04, 298.0); - // System.out.println("pressure " + pres); - System.out.println("molDens " + testMet.molDens(90.15, 1.0, false)); - // for(int i = 0;i<300;i++){ - // pres = testMet.calcPressure(0.01+i/100.0, 100.0); - // System.out.println("pressure " + pres); - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + methaneBWR32 testMet = new methaneBWR32(); + double pres = testMet.calcPressure(0.04, 298.0); + // System.out.println("pressure " + pres); + System.out.println("molDens " + testMet.molDens(90.15, 1.0, false)); + // for(int i = 0;i<300;i++){ + // pres = testMet.calcPressure(0.01+i/100.0, 100.0); + // System.out.println("pressure " + pres); + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/BaseOperation.java b/src/main/java/neqsim/thermodynamicOperations/BaseOperation.java index 918df3a77b..55b4e91797 100644 --- a/src/main/java/neqsim/thermodynamicOperations/BaseOperation.java +++ b/src/main/java/neqsim/thermodynamicOperations/BaseOperation.java @@ -3,6 +3,7 @@ * * Created on 11. august 2001, 20:32 */ + package neqsim.thermodynamicOperations; import neqsim.thermo.system.SystemInterface; @@ -16,56 +17,52 @@ * @version $Id: $Id */ public abstract class BaseOperation implements OperationInterface { - private static final long serialVersionUID = 1000; - - SystemInterface systemThermo = null;; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for BaseOperation. - *

- */ - public BaseOperation() {} + SystemInterface systemThermo = null; - /** {@inheritDoc} */ - @Override - public double[] get(String name) { - return new double[3]; - } + /** + *

+ * Constructor for BaseOperation. + *

+ */ + public BaseOperation() {} - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return new String[10][3]; - } + /** {@inheritDoc} */ + @Override + public double[] get(String name) { + return new double[3]; + } - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return null; - } + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return new String[10][3]; + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return null; + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } - /** {@inheritDoc} */ - // @Override - // public void createNetCdfFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return null; - } + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return null; + } - /** {@inheritDoc} */ - @Override - public void addData(String name, double[][] data) {} + /** {@inheritDoc} */ + @Override + public void addData(String name, double[][] data) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/OperationInterface.java b/src/main/java/neqsim/thermodynamicOperations/OperationInterface.java index 80d9f3a8ba..d71e51f175 100644 --- a/src/main/java/neqsim/thermodynamicOperations/OperationInterface.java +++ b/src/main/java/neqsim/thermodynamicOperations/OperationInterface.java @@ -3,6 +3,7 @@ * * Created on 2. oktober 2000, 22:14 */ + package neqsim.thermodynamicOperations; import neqsim.thermo.system.SystemInterface; @@ -16,86 +17,77 @@ * @version $Id: $Id */ public interface OperationInterface extends Runnable, java.io.Serializable { - /** - *

- * displayResult. - *

- */ - public void displayResult(); - - /** - *

- * getPoints. - *

- * - * @param i a int - * @return an array of {@link double} objects - */ - public double[][] getPoints(int i); + /** + *

+ * displayResult. + *

+ */ + public void displayResult(); - /** - *

- * addData. - *

- * - * @param name a {@link java.lang.String} object - * @param data an array of {@link double} objects - */ - public void addData(String name, double[][] data); + /** + *

+ * getPoints. + *

+ * + * @param i a int + * @return an array of type double + */ + public double[][] getPoints(int i); - /** - *

- * getResultTable. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[][] getResultTable(); + /** + *

+ * addData. + *

+ * + * @param name a {@link java.lang.String} object + * @param data an array of type double + */ + public void addData(String name, double[][] data); - /** - *

- * createNetCdfFile. - *

- * - * @param name a {@link java.lang.String} object - */ - //public void createNetCdfFile(String name); + /** + *

+ * getResultTable. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[][] getResultTable(); - /** - *

- * printToFile. - *

- * - * @param name a {@link java.lang.String} object - */ - public void printToFile(String name); + /** + *

+ * printToFile. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void printToFile(String name); - /** - *

- * get. - *

- * - * @param name a {@link java.lang.String} object - * @return an array of {@link double} objects - */ - public double[] get(String name); + /** + *

+ * get. + *

+ * + * @param name a {@link java.lang.String} object + * @return an array of type double + */ + public double[] get(String name); - /** - *

- * getJFreeChart. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link org.jfree.chart.JFreeChart} object - */ - public org.jfree.chart.JFreeChart getJFreeChart(String name); + /** + *

+ * getJFreeChart. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link org.jfree.chart.JFreeChart} object + */ + public org.jfree.chart.JFreeChart getJFreeChart(String name); - /** - *

- * getThermoSystem. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getThermoSystem(); + /** + *

+ * getThermoSystem. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getThermoSystem(); } diff --git a/src/main/java/neqsim/thermodynamicOperations/ThermodynamicOperations.java b/src/main/java/neqsim/thermodynamicOperations/ThermodynamicOperations.java index 27ed545ab0..36f5ce8163 100644 --- a/src/main/java/neqsim/thermodynamicOperations/ThermodynamicOperations.java +++ b/src/main/java/neqsim/thermodynamicOperations/ThermodynamicOperations.java @@ -2,6 +2,7 @@ import java.awt.BorderLayout; import java.awt.Container; +import java.util.Arrays; import java.util.List; import javax.swing.JFrame; import javax.swing.JScrollPane; @@ -10,8 +11,10 @@ import org.apache.logging.log4j.Logger; import neqsim.api.ioc.CalculationResult; import neqsim.thermo.component.ComponentHydrate; +import neqsim.thermo.component.ComponentInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemProperties; +import neqsim.thermodynamicOperations.flashOps.CalcIonicComposition; import neqsim.thermodynamicOperations.flashOps.CriticalPointFlash; import neqsim.thermodynamicOperations.flashOps.PHflash; import neqsim.thermodynamicOperations.flashOps.PHflashSingleComp; @@ -27,8 +30,8 @@ import neqsim.thermodynamicOperations.flashOps.TVflash; import neqsim.thermodynamicOperations.flashOps.VHflashQfunc; import neqsim.thermodynamicOperations.flashOps.VUflashQfunc; -import neqsim.thermodynamicOperations.flashOps.calcIonicComposition; import neqsim.thermodynamicOperations.flashOps.dTPflash; +import neqsim.thermodynamicOperations.flashOps.saturationOps.ConstantDutyFlashInterface; import neqsim.thermodynamicOperations.flashOps.saturationOps.HCdewPointPressureFlash; import neqsim.thermodynamicOperations.flashOps.saturationOps.HydrateEquilibriumLine; import neqsim.thermodynamicOperations.flashOps.saturationOps.HydrateFormationPressureFlash; @@ -44,7 +47,6 @@ import neqsim.thermodynamicOperations.flashOps.saturationOps.bubblePointTemperatureNoDer; import neqsim.thermodynamicOperations.flashOps.saturationOps.calcSaltSatauration; import neqsim.thermodynamicOperations.flashOps.saturationOps.checkScalePotential; -import neqsim.thermodynamicOperations.flashOps.saturationOps.constantDutyFlashInterface; import neqsim.thermodynamicOperations.flashOps.saturationOps.constantDutyPressureFlash; import neqsim.thermodynamicOperations.flashOps.saturationOps.constantDutyTemperatureFlash; import neqsim.thermodynamicOperations.flashOps.saturationOps.cricondebarFlash; @@ -57,6 +59,7 @@ import neqsim.thermodynamicOperations.phaseEnvelopeOps.multicomponentEnvelopeOps.CricondenThermFlash; import neqsim.thermodynamicOperations.phaseEnvelopeOps.multicomponentEnvelopeOps.HPTphaseEnvelope; import neqsim.thermodynamicOperations.phaseEnvelopeOps.multicomponentEnvelopeOps.pTphaseEnvelope; +import neqsim.thermodynamicOperations.phaseEnvelopeOps.multicomponentEnvelopeOps.pTphaseEnvelopeNew2; import neqsim.thermodynamicOperations.phaseEnvelopeOps.reactiveCurves.pLoadingCurve2; import neqsim.thermodynamicOperations.propertyGenerator.OLGApropertyTableGeneratorWaterStudents; import neqsim.thermodynamicOperations.propertyGenerator.OLGApropertyTableGeneratorWaterStudentsPH; @@ -70,1968 +73,2078 @@ * @version $Id: $Id */ public class ThermodynamicOperations implements java.io.Serializable, Cloneable { - private static final long serialVersionUID = 1000; - - private Thread thermoOperationThread = new Thread(); - private OperationInterface operation = null; - SystemInterface system = null; - boolean writeFile = false; - String fileName = null; - private boolean runAsThread = false; - protected String[][] resultTable = null; - static Logger logger = LogManager.getLogger(ThermodynamicOperations.class); - - /** - *

- * Constructor for ThermodynamicOperations. - *

- */ - public ThermodynamicOperations() { - } - - /** - *

- * Constructor for ThermodynamicOperations. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public ThermodynamicOperations(SystemInterface system) { - this.system = system; - } - - /** - *

- * Setter for the field system. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public void setSystem(SystemInterface system) { - this.system = system; - } - - /** - *

- * TPSolidflash. - *

- */ - public void TPSolidflash() { - operation = new SolidFlash1(system); - getOperation().run(); - } - - /** - * Method to perform a flash at given temperature, pressure and specified volume - * The number of - * moles in the system are changed to match the specified volume. - * - * @param volumeSpec is the specified volume - * @param unit Supported units are m3 - */ - public void TPVflash(double volumeSpec, String unit) { - unit = "m3"; - TPflash(); - double startVolume = system.getVolume(unit); - system.setTotalNumberOfMoles(system.getNumberOfMoles() * volumeSpec / startVolume); - system.init(3); - } - - /** - *

- * TPflash. - *

- */ - public void TPflash() { - double flowRate = system.getTotalNumberOfMoles(); - double minimumFlowRate = 1e-50; - if (flowRate < 1e-3) { - system.setTotalNumberOfMoles(1.0); - system.init(1); - } - operation = new neqsim.thermodynamicOperations.flashOps.TPflash(system, - system.doSolidPhaseCheck()); - if (!isRunAsThread()) { - getOperation().run(); - } else { - run(); - } - if (flowRate < 1e-3) { - if (flowRate < minimumFlowRate) { - system.setTotalNumberOfMoles(minimumFlowRate); - } else { - system.setTotalNumberOfMoles(flowRate); - } - system.init(2); - } - } - - /** - *

- * saturateWithWater. - *

- */ - public void saturateWithWater() { - operation = new SaturateWithWater(system); - getOperation().run(); - } - - /** - *

- * TPflash. - *

- * - * @param checkSolids a boolean - */ - public void TPflash(boolean checkSolids) { - operation = new neqsim.thermodynamicOperations.flashOps.TPflash(system, checkSolids); - getOperation().run(); - } - - /** - *

- * TPgradientFlash. - *

- * - * @param height a double - * @param temperature a double - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface TPgradientFlash(double height, double temperature) { - operation = new TPgradientFlash(system, height, temperature); - getOperation().run(); - return operation.getThermoSystem(); - } - - /** - *

- * dTPflash. - *

- * - * @param comps an array of {@link java.lang.String} objects - */ - public void dTPflash(String[] comps) { - operation = new dTPflash(system, comps); - getOperation().run(); - } - - /** - *

- * chemicalEquilibrium. - *

- */ - public void chemicalEquilibrium() { - if (system.isChemicalSystem()) { - operation = new neqsim.thermodynamicOperations.chemicalEquilibrium.ChemicalEquilibrium( - system); - getOperation().run(); - } - } - - /** - *

- * PHflash. - *

- * - * @param Hspec a double - * @param type a int - */ - public void PHflash(double Hspec, int type) { - if (system.getPhase(0).getNumberOfComponents() == 1) { - operation = new PHflashSingleComp(system, Hspec, type); - } else { - operation = new PHflash(system, Hspec, type); - } - getOperation().run(); - } - - /** - * Method to perform a PH flash calculation - * - * @param Hspec is the enthalpy in the specified unit - * @param enthalpyUnit Supported units are J, J/mol, J/kg and kJ/kg - */ - public void PHflash(double Hspec, String enthalpyUnit) { - double conversionFactor = 1.0; - switch (enthalpyUnit) { - case "J": - conversionFactor = 1.0; - break; - case "J/mol": - conversionFactor = 1.0 / system.getTotalNumberOfMoles(); - break; - case "J/kg": - conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); - break; - case "kJ/kg": - conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; - break; - } - PHflash(Hspec / conversionFactor); - } - - /** - * Method to perform a PH flash calculation - * - * @param Hspec is the enthalpy in unit Joule to be held constant - */ - public void PHflash(double Hspec) { - this.PHflash(Hspec, 0); - } - - /** - * Method to perform a PH flash calculation based on GERG2008 EoS - * - * @param Hspec is the enthalpy in unit Joule to be held constant - */ - public void PHflashGERG2008(double Hspec) { - operation = new neqsim.thermodynamicOperations.flashOps.PHflashGERG2008(system, Hspec); - getOperation().run(); - } - - /** - *

- * PUflash. - *

- * - * @param Uspec a double - */ - public void PUflash(double Uspec) { - operation = new neqsim.thermodynamicOperations.flashOps.PUflash(system, Uspec); - getOperation().run(); - } - - /** - *

- * PUflash. - *

- * - * @param Pspec a double - * @param Uspec a double - * @param unitPressure a {@link java.lang.String} object - * @param unitEnergy a {@link java.lang.String} object - */ - public void PUflash(double Pspec, double Uspec, String unitPressure, String unitEnergy) { - system.setPressure(Pspec, unitPressure); - PUflash(Uspec, unitEnergy); - } - - /** - *

- * PUflash. - *

- * - * @param Uspec a double - * @param unitEnergy a {@link java.lang.String} object - */ - public void PUflash(double Uspec, String unitEnergy) { - double conversionFactorEntr = 1.0; - switch (unitEnergy) { - case "J": - conversionFactorEntr = 1.0; - break; - case "J/mol": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles(); - break; - case "J/kg": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); - break; - case "kJ/kg": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; - break; - } - PUflash(Uspec / conversionFactorEntr); - } - - /** - *

- * PHflash2. - *

- * - * @param Hspec a double - * @param type a int - */ - public void PHflash2(double Hspec, int type) { - operation = new PHflash(system, Hspec, type); - getOperation().run(); - } - - /** - *

- * criticalPointFlash. - *

- */ - public void criticalPointFlash() { - operation = new CriticalPointFlash(system); - getOperation().run(); - } - - /** - *

- * PHsolidFlash. - *

- * - * @param Hspec a double - */ - public void PHsolidFlash(double Hspec) { - operation = new PHsolidFlash(system, Hspec); - getOperation().run(); - } - - /** - * Method to perform a PS flash calculation for a specified entropy and pressure - * - * @param Sspec is the entropy in the specified unit - * @param unit Supported units are J/K, J/molK, J/kgK and kJ/kgK - */ - public void PSflash(double Sspec, String unit) { - double conversionFactor = 1.0; - switch (unit) { - case "J/K": - conversionFactor = 1.0; - break; - case "J/molK": - conversionFactor = 1.0 / system.getTotalNumberOfMoles(); - break; - case "J/kgK": - conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); - break; - case "kJ/kgK": - conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; - break; - } - PSflash(Sspec / conversionFactor); - } - - /** - * Method to perform a TS flash calculation for a specified entropy and pressure - * - * @param Sspec is the entropy in the specified unit - * @param unit Supported units are J/K, J/molK, J/kgK and kJ/kgK - */ - public void TSflash(double Sspec, String unit) { - double conversionFactor = 1.0; - switch (unit) { - case "J/K": - conversionFactor = 1.0; - break; - case "J/molK": - conversionFactor = 1.0 / system.getTotalNumberOfMoles(); - break; - case "J/kgK": - conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); - break; - case "kJ/kgK": - conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; - break; - } - TSflash(Sspec / conversionFactor); - } - - /** - *

- * PSflash. - *

- * - * @param Sspec a double - */ - public void PSflash(double Sspec) { - if (system.getPhase(0).getNumberOfComponents() == 1) { - operation = new PSflashSingleComp(system, Sspec, 0); - } else { - operation = new PSFlash(system, Sspec, 0); - } - getOperation().run(); - } - - /** - *

- * PSflashGERG2008. - *

- * Run a flash at constant pressure and entropy using the GERG2008 EoS - * - * @param Sspec is the specidfied entropy - */ - public void PSflashGERG2008(double Sspec) { - operation = new PSFlashGERG2008(system, Sspec); - getOperation().run(); - } - - /** - *

- * TSflash. - *

- * - * @param Sspec a double - */ - public void TSflash(double Sspec) { - operation = new TSFlash(system, Sspec); - getOperation().run(); - } - - /** - *

- * PSflash2. - *

- * - * @param Sspec a double - */ - public void PSflash2(double Sspec) { - operation = new PSFlash(system, Sspec, 0); - getOperation().run(); - } - - /** - *

- * VSflash. - *

- * - * @param volume a double - * @param entropy a double - * @param unitVol a {@link java.lang.String} object - * @param unitEntropy a {@link java.lang.String} object - */ - public void VSflash(double volume, double entropy, String unitVol, String unitEntropy) { - double conversionFactorV = 1.0; - double conversionFactorEntr = 1.0; - - switch (unitVol) { - case "m3": - conversionFactorV = 1.0e5; - break; - } - - switch (unitEntropy) { - case "J/K": - conversionFactorEntr = 1.0; - break; - case "J/molK": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles(); - break; - case "J/kgK": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); - break; - case "kJ/kgK": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; - break; - } - VSflash(volume * conversionFactorV, entropy / conversionFactorEntr); - } - - /** - *

- * VSflash. - *

- * - * @param volume a double - * @param entropy a double - */ - public void VSflash(double volume, double entropy) { - operation = new neqsim.thermodynamicOperations.flashOps.VSflash(system, volume, entropy); - getOperation().run(); - } - - /** - *

- * TVflash. - *

- * - * @param Vspec a double - * @param unit a {@link java.lang.String} object - */ - public void TVflash(double Vspec, String unit) { - double conversionFactor = 1.0; - switch (unit) { - case "m3": - conversionFactor = 1.0e5; - break; - } - TVflash(Vspec * conversionFactor); - } - - /** - *

- * TVflash. - *

- * - * @param Vspec a double - */ - public void TVflash(double Vspec) { - operation = new TVflash(system, Vspec); - getOperation().run(); - } - - /** - *

- * PVrefluxFlash. - *

- * - * @param refluxspec a double - * @param refluxPhase a int - */ - public void PVrefluxFlash(double refluxspec, int refluxPhase) { - operation = new PVrefluxflash(system, refluxspec, refluxPhase); - getOperation().run(); - } - - /** - *

- * VHflash. - *

- * - * @param Vspec a double - * @param Hspec a double - */ - public void VHflash(double Vspec, double Hspec) { - operation = new VHflashQfunc(system, Vspec, Hspec); - getOperation().run(); - } - - /** - *

- * VHflash. - *

- * - * @param volume a double - * @param enthalpy a double - * @param unitVol a {@link java.lang.String} object - * @param unitEnthalpy a {@link java.lang.String} object - */ - public void VHflash(double volume, double enthalpy, String unitVol, String unitEnthalpy) { - double conversionFactorV = 1.0; - double conversionFactorEntr = 1.0; - - switch (unitVol) { - case "m3": - conversionFactorV = 1.0e5; - break; - } - - switch (unitEnthalpy) { - case "J/K": - conversionFactorEntr = 1.0; - break; - case "J/mol": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles(); - break; - case "J/kg": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); - break; - case "kJ/kg": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; - break; - } - VHflash(volume * conversionFactorV, enthalpy / conversionFactorEntr); - } - - /** - *

- * VUflash. - *

- * - * @param volume a double - * @param energy a double - * @param unitVol a {@link java.lang.String} object - * @param unitEnergy a {@link java.lang.String} object - */ - public void VUflash(double volume, double energy, String unitVol, String unitEnergy) { - double conversionFactorV = 1.0; - double conversionFactorEntr = 1.0; - - switch (unitVol) { - case "m3": - conversionFactorV = 1.0e5; - break; - } - - switch (unitEnergy) { - case "J/K": - conversionFactorEntr = 1.0; - break; - case "J/mol": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles(); - break; - case "J/kg": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); - break; - case "kJ/kg": - conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; - break; - } - VUflash(volume * conversionFactorV, energy / conversionFactorEntr); - } - - /** - *

- * VUflash. - *

- * - * @param Vspec a double - * @param Uspec a double - */ - public void VUflash(double Vspec, double Uspec) { - operation = new VUflashQfunc(system, Vspec, Uspec); - getOperation().run(); - } - - /** - *

- * bubblePointTemperatureFlash. - *

- * - * @throws java.lang.Exception if any. - */ - public void bubblePointTemperatureFlash() throws Exception { - constantDutyFlashInterface operation = new bubblePointTemperatureNoDer(system); - operation.run(); - if (Double.isNaN(system.getTemperature()) || operation.isSuperCritical()) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "bubblePointTemperatureFlash", - "Could not find solution - possible no bubble point exists"); - } - } - - /** - *

- * freezingPointTemperatureFlash. - *

- * - * @throws java.lang.Exception if any. - */ - public void freezingPointTemperatureFlash() throws Exception { - operation = new freezingPointTemperatureFlash(system); - getOperation().run(); - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "freezingPointTemperatureFlash", - "Could not find solution - possible no freezing point exists"); - } - } - - /** - *

- * freezingPointTemperatureFlash. - *

- * - * @param phaseName a {@link java.lang.String} object - * @throws java.lang.Exception if any. - */ - public void freezingPointTemperatureFlash(String phaseName) throws Exception { - operation = new freezingPointTemperatureFlash(system); - getOperation().run(); - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "freezingPointTemperatureFlash", - "Could not find solution - possible no freezing point exists"); - } - } + private static final long serialVersionUID = 1000; + + private Thread thermoOperationThread = new Thread(); + private OperationInterface operation = null; + SystemInterface system = null; + boolean writeFile = false; + String fileName = null; + private boolean runAsThread = false; + protected String[][] resultTable = null; + static Logger logger = LogManager.getLogger(ThermodynamicOperations.class); + + /** + *

+ * Constructor for ThermodynamicOperations. + *

+ */ + public ThermodynamicOperations() {} + + /** + *

+ * Constructor for ThermodynamicOperations. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public ThermodynamicOperations(SystemInterface system) { + this.system = system; + } + + /** + *

+ * Setter for the field system. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public void setSystem(SystemInterface system) { + this.system = system; + } + + /** + *

+ * TPSolidflash. + *

+ */ + public void TPSolidflash() { + operation = new SolidFlash1(system); + getOperation().run(); + } + + /** + * Method to perform a flash at given temperature, pressure and specified volume The number of + * moles in the system are changed to match the specified volume. + * + * @param volumeSpec is the specified volume + * @param unit Supported units are m3 + */ + public void TPVflash(double volumeSpec, String unit) { + unit = "m3"; + TPflash(); + double startVolume = system.getVolume(unit); + system.setTotalNumberOfMoles(system.getNumberOfMoles() * volumeSpec / startVolume); + system.init(3); + } + + /** + *

+ * TPflash. + *

+ */ + public void TPflash() { + double flowRate = system.getTotalNumberOfMoles(); + double minimumFlowRate = 1e-50; + if (flowRate < 1e-5) { + system.setTotalNumberOfMoles(1.0); + system.init(1); + } + operation = + new neqsim.thermodynamicOperations.flashOps.TPflash(system, system.doSolidPhaseCheck()); + if (!isRunAsThread()) { + getOperation().run(); + } else { + run(); + } + if (flowRate < 1e-5) { + if (flowRate < minimumFlowRate) { + system.setTotalNumberOfMoles(minimumFlowRate); + } else { + system.setTotalNumberOfMoles(flowRate); + } + system.init(1); + } + } + + /** + *

+ * TPflash. + *

+ * + * @param checkForSolids Set true to do solid phase check and calculations + */ + public void TPflash(boolean checkForSolids) { + operation = new neqsim.thermodynamicOperations.flashOps.TPflash(system, checkForSolids); + getOperation().run(); + } + + /** + *

+ * TPgradientFlash. + *

+ * + * @param height a double + * @param temperature a double + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface TPgradientFlash(double height, double temperature) { + operation = new TPgradientFlash(system, height, temperature); + getOperation().run(); + return operation.getThermoSystem(); + } + + /** + *

+ * dTPflash. + *

+ * + * @param comps an array of {@link java.lang.String} objects + */ + public void dTPflash(String[] comps) { + operation = new dTPflash(system, comps); + getOperation().run(); + } + + /** + *

+ * saturateWithWater. + *

+ */ + public void saturateWithWater() { + operation = new SaturateWithWater(system); + getOperation().run(); + } + + /** + *

+ * chemicalEquilibrium. + *

+ */ + public void chemicalEquilibrium() { + if (system.isChemicalSystem()) { + operation = + new neqsim.thermodynamicOperations.chemicalEquilibrium.ChemicalEquilibrium(system); + getOperation().run(); + } + } + + /** + *

+ * PHflash. + *

+ * + * @param Hspec a double + * @param type a int + */ + public void PHflash(double Hspec, int type) { + if (system.getPhase(0).getNumberOfComponents() == 1) { + operation = new PHflashSingleComp(system, Hspec, type); + } else { + operation = new PHflash(system, Hspec, type); + } + getOperation().run(); + } + + /** + * Method to perform a PH flash calculation. + * + * @param Hspec is the enthalpy in the specified unit + * @param enthalpyUnit Supported units are J, J/mol, J/kg and kJ/kg + */ + public void PHflash(double Hspec, String enthalpyUnit) { + double conversionFactor = 1.0; + switch (enthalpyUnit) { + case "J": + conversionFactor = 1.0; + break; + case "J/mol": + conversionFactor = 1.0 / system.getTotalNumberOfMoles(); + break; + case "J/kg": + conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); + break; + case "kJ/kg": + conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; + break; + default: + break; + } + PHflash(Hspec / conversionFactor); + } + + /** + * Method to perform a PH flash calculation. + * + * @param Hspec is the enthalpy in unit Joule to be held constant + */ + public void PHflash(double Hspec) { + this.PHflash(Hspec, 0); + } + + /** + * Method to perform a PH flash calculation based on GERG2008 EoS. + * + * @param Hspec is the enthalpy in unit Joule to be held constant + */ + public void PHflashGERG2008(double Hspec) { + operation = new neqsim.thermodynamicOperations.flashOps.PHflashGERG2008(system, Hspec); + getOperation().run(); + } + + /** + *

+ * PUflash. + *

+ * + * @param Uspec a double + */ + public void PUflash(double Uspec) { + operation = new neqsim.thermodynamicOperations.flashOps.PUflash(system, Uspec); + getOperation().run(); + } + + /** + *

+ * PUflash. + *

+ * + * @param Pspec a double + * @param Uspec a double + * @param unitPressure a {@link java.lang.String} object + * @param unitEnergy a {@link java.lang.String} object + */ + public void PUflash(double Pspec, double Uspec, String unitPressure, String unitEnergy) { + system.setPressure(Pspec, unitPressure); + PUflash(Uspec, unitEnergy); + } + + /** + *

+ * PUflash. + *

+ * + * @param Uspec a double + * @param unitEnergy a {@link java.lang.String} object + */ + public void PUflash(double Uspec, String unitEnergy) { + double conversionFactorEntr = 1.0; + switch (unitEnergy) { + case "J": + conversionFactorEntr = 1.0; + break; + case "J/mol": + conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles(); + break; + case "J/kg": + conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); + break; + case "kJ/kg": + conversionFactorEntr = + 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; + break; + default: + break; + } + PUflash(Uspec / conversionFactorEntr); + } + + /** + *

+ * PHflash2. + *

+ * + * @param Hspec a double + * @param type a int + */ + public void PHflash2(double Hspec, int type) { + operation = new PHflash(system, Hspec, type); + getOperation().run(); + } + + /** + *

+ * criticalPointFlash. + *

+ */ + public void criticalPointFlash() { + operation = new CriticalPointFlash(system); + getOperation().run(); + } + + /** + *

+ * PHsolidFlash. + *

+ * + * @param Hspec a double + */ + public void PHsolidFlash(double Hspec) { + operation = new PHsolidFlash(system, Hspec); + getOperation().run(); + } + + /** + *

+ * PSflash. + *

+ * + * @param Sspec a double + */ + public void PSflash(double Sspec) { + if (system.getPhase(0).getNumberOfComponents() == 1) { + operation = new PSflashSingleComp(system, Sspec, 0); + } else { + operation = new PSFlash(system, Sspec, 0); + } + getOperation().run(); + } + + /** + * Method to perform a PS flash calculation for a specified entropy and pressure. + * + * @param Sspec is the entropy in the specified unit + * @param unit Supported units are J/K, J/molK, J/kgK and kJ/kgK + */ + public void PSflash(double Sspec, String unit) { + double conversionFactor = 1.0; + switch (unit) { + case "J/K": + break; + case "J/molK": + conversionFactor = 1.0 / system.getTotalNumberOfMoles(); + break; + case "J/kgK": + conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); + break; + case "kJ/kgK": + conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; + break; + default: + break; + } + PSflash(Sspec / conversionFactor); + } + + /** + *

+ * TSflash. + *

+ * + * @param Sspec a double + */ + public void TSflash(double Sspec) { + operation = new TSFlash(system, Sspec); + getOperation().run(); + } + + /** + * Method to perform a TS flash calculation for a specified entropy and pressure. + * + * @param Sspec is the entropy in the specified unit + * @param unit Supported units are J/K, J/molK, J/kgK and kJ/kgK + */ + public void TSflash(double Sspec, String unit) { + double conversionFactor = 1.0; + switch (unit) { + case "J/K": + conversionFactor = 1.0; + break; + case "J/molK": + conversionFactor = 1.0 / system.getTotalNumberOfMoles(); + break; + case "J/kgK": + conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); + break; + case "kJ/kgK": + conversionFactor = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; + break; + default: + break; + } + TSflash(Sspec / conversionFactor); + } + + /** + *

+ * PSflashGERG2008. + *

+ * Run a flash at constant pressure and entropy using the GERG2008 EoS + * + * @param Sspec is the specidfied entropy + */ + public void PSflashGERG2008(double Sspec) { + operation = new PSFlashGERG2008(system, Sspec); + getOperation().run(); + } + + /** + *

+ * PSflash2. + *

+ * + * @param Sspec a double + */ + public void PSflash2(double Sspec) { + operation = new PSFlash(system, Sspec, 0); + getOperation().run(); + } + + /** + *

+ * VSflash. + *

+ * + * @param volume a double + * @param entropy a double + * @param unitVol a {@link java.lang.String} object + * @param unitEntropy a {@link java.lang.String} object + */ + public void VSflash(double volume, double entropy, String unitVol, String unitEntropy) { + double conversionFactorV = 1.0; + double conversionFactorEntr = 1.0; + + switch (unitVol) { + case "m3": + conversionFactorV = 1.0e5; + break; + default: + break; + } + + switch (unitEntropy) { + case "J/K": + conversionFactorEntr = 1.0; + break; + case "J/molK": + conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles(); + break; + case "J/kgK": + conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); + break; + case "kJ/kgK": + conversionFactorEntr = + 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; + break; + default: + break; + } + VSflash(volume * conversionFactorV, entropy / conversionFactorEntr); + } + + /** + *

+ * VSflash. + *

+ * + * @param volume a double + * @param entropy a double + */ + public void VSflash(double volume, double entropy) { + operation = new neqsim.thermodynamicOperations.flashOps.VSflash(system, volume, entropy); + getOperation().run(); + } + + /** + *

+ * TVflash. + *

+ * + * @param Vspec a double + * @param unit a {@link java.lang.String} object + */ + public void TVflash(double Vspec, String unit) { + double conversionFactor = 1.0; + switch (unit) { + case "m3": + conversionFactor = 1.0e5; + break; + default: + break; + } + TVflash(Vspec * conversionFactor); + } + + /** + *

+ * TVflash. + *

+ * + * @param Vspec a double + */ + public void TVflash(double Vspec) { + operation = new TVflash(system, Vspec); + getOperation().run(); + } + + /** + *

+ * TVfractionFlash. + *

+ * + * @param Vspec a double volume fraction of first/lightest phase + */ + public void TVfractionFlash(double Vspec) { + operation = new neqsim.thermodynamicOperations.flashOps.TVfractionFlash(system, Vspec); + getOperation().run(); + } + + /** + *

+ * PVrefluxFlash. + *

+ * + * @param refluxspec a double + * @param refluxPhase a int + */ + public void PVrefluxFlash(double refluxspec, int refluxPhase) { + operation = new PVrefluxflash(system, refluxspec, refluxPhase); + getOperation().run(); + } + + /** + *

+ * VHflash. + *

+ * + * @param Vspec a double + * @param Hspec a double + */ + public void VHflash(double Vspec, double Hspec) { + operation = new VHflashQfunc(system, Vspec, Hspec); + getOperation().run(); + } + + /** + *

+ * VHflash. + *

+ * + * @param volume a double + * @param enthalpy a double + * @param unitVol a {@link java.lang.String} object + * @param unitEnthalpy a {@link java.lang.String} object + */ + public void VHflash(double volume, double enthalpy, String unitVol, String unitEnthalpy) { + double conversionFactorV = 1.0; + double conversionFactorEntr = 1.0; + + switch (unitVol) { + case "m3": + conversionFactorV = 1.0e5; + break; + default: + break; + } + + switch (unitEnthalpy) { + case "J/K": + conversionFactorEntr = 1.0; + break; + case "J/mol": + conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles(); + break; + case "J/kg": + conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); + break; + case "kJ/kg": + conversionFactorEntr = + 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; + break; + default: + break; + } + VHflash(volume * conversionFactorV, enthalpy / conversionFactorEntr); + } + + /** + *

+ * VUflash. + *

+ * + * @param volume a double + * @param energy a double + * @param unitVol a {@link java.lang.String} object + * @param unitEnergy a {@link java.lang.String} object + */ + public void VUflash(double volume, double energy, String unitVol, String unitEnergy) { + double conversionFactorV = 1.0; + double conversionFactorEntr = 1.0; + + switch (unitVol) { + case "m3": + conversionFactorV = 1.0e5; + break; + default: + break; + } + + switch (unitEnergy) { + case "J/K": + conversionFactorEntr = 1.0; + break; + case "J/mol": + conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles(); + break; + case "J/kg": + conversionFactorEntr = 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass(); + break; + case "kJ/kg": + conversionFactorEntr = + 1.0 / system.getTotalNumberOfMoles() / system.getMolarMass() / 1000.0; + break; + default: + break; + } + VUflash(volume * conversionFactorV, energy / conversionFactorEntr); + } + + /** + *

+ * VUflash. + *

+ * + * @param Vspec a double + * @param Uspec a double + */ + public void VUflash(double Vspec, double Uspec) { + operation = new VUflashQfunc(system, Vspec, Uspec); + getOperation().run(); + } + + /** + *

+ * bubblePointTemperatureFlash. + *

+ * + * @throws java.lang.Exception if any. + */ + public void bubblePointTemperatureFlash() throws Exception { + ConstantDutyFlashInterface operation = new bubblePointTemperatureNoDer(system); + operation.run(); + if (Double.isNaN(system.getTemperature()) || operation.isSuperCritical()) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "bubblePointTemperatureFlash", + "Could not find solution - possible no bubble point exists"); + } + } + + /** + *

+ * freezingPointTemperatureFlash. + *

+ * + * @throws java.lang.Exception if any. + */ + public void freezingPointTemperatureFlash() throws Exception { + operation = new freezingPointTemperatureFlash(system); + getOperation().run(); + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "freezingPointTemperatureFlash", + "Could not find solution - possible no freezing point exists"); + } + } + + /** + *

+ * freezingPointTemperatureFlash. + *

+ * + * @param phaseName a {@link java.lang.String} object + * @throws java.lang.Exception if any. + */ + public void freezingPointTemperatureFlash(String phaseName) throws Exception { + operation = new freezingPointTemperatureFlash(system); + getOperation().run(); + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "freezingPointTemperatureFlash", + "Could not find solution - possible no freezing point exists"); + } + } + + /** + *

+ * waterDewPointTemperatureFlash. + *

+ * + * @throws java.lang.Exception if any. + */ + public void waterDewPointTemperatureFlash() throws Exception { + operation = new waterDewPointTemperatureFlash(system); + getOperation().run(); + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "waterDewPointTemperatureFlash", + "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * waterDewPointTemperatureMultiphaseFlash. + *

+ * + * @throws java.lang.Exception if any. + */ + public void waterDewPointTemperatureMultiphaseFlash() throws Exception { + operation = new waterDewPointTemperatureMultiphaseFlash(system); + getOperation().run(); + } + + /** + *

+ * waterPrecipitationTemperature. + *

+ * + * @throws java.lang.Exception if any. + */ + public void waterPrecipitationTemperature() throws Exception { + double lowTemperature = 0.0; + dewPointTemperatureFlash(); + + if (system.getTemperature() > lowTemperature) { + lowTemperature = system.getTemperature(); + } + + // if(lowTemperature<273.15 && system.doSolidPhaseCheck()){ + // hydrateFormationTemperature(0); + // if(system.getTemperature()>lowTemperature) lowTemperature = + // system.getTemperature(); + // } - /** - *

- * waterDewPointTemperatureFlash. - *

- * - * @throws java.lang.Exception if any. - */ - public void waterDewPointTemperatureFlash() throws Exception { - operation = new waterDewPointTemperatureFlash(system); - getOperation().run(); - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "waterDewPointTemperatureFlash", - "Could not find solution - possible no dew point exists"); - } - } + // if(system.getHydrateCheck()){ + // hydrateFormationTemperature(1); + // if(system.getTemperature()>lowTemperature) lowTemperature = + // system.getTemperature(); + // hydrateFormationTemperature(2); + // if(system.getTemperature()>lowTemperature) lowTemperature = + // system.getTemperature(); + // } - /** - *

- * waterDewPointTemperatureMultiphaseFlash. - *

- * - * @throws java.lang.Exception if any. - */ - public void waterDewPointTemperatureMultiphaseFlash() throws Exception { - operation = new waterDewPointTemperatureMultiphaseFlash(system); - getOperation().run(); - } - - /** - *

- * waterPrecipitationTemperature. - *

- * - * @throws java.lang.Exception if any. - */ - public void waterPrecipitationTemperature() throws Exception { - double lowTemperature = 0.0; + system.setTemperature(lowTemperature); + // TPflash(); + + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "waterPrecipitationTemperature", + "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * calcSaltSaturation. + *

+ * + * @param saltName a {@link java.lang.String} object + * @throws java.lang.Exception if any. + */ + public void calcSaltSaturation(String saltName) throws Exception { + operation = new calcSaltSatauration(system, saltName); + getOperation().run(); + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "calcSaltSaturation", "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * checkScalePotential. + *

+ * + * @param phaseNumber a int + * @throws java.lang.Exception if any. + */ + public void checkScalePotential(int phaseNumber) throws Exception { + operation = new checkScalePotential(system, phaseNumber); + getOperation().run(); + resultTable = getOperation().getResultTable(); + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "checkScalePotential", "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * addIonToScaleSaturation. + *

+ * + * @param phaseNumber a int + * @param scaleSaltName a {@link java.lang.String} object + * @param nameOfIonToBeAdded a {@link java.lang.String} object + * @throws java.lang.Exception if any. + */ + public void addIonToScaleSaturation(int phaseNumber, String scaleSaltName, + String nameOfIonToBeAdded) throws Exception { + operation = new addIonToScaleSaturation(system, phaseNumber, scaleSaltName, nameOfIonToBeAdded); + getOperation().run(); + resultTable = getOperation().getResultTable(); + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "addIonToScaleSaturation", "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * hydrateFormationPressure. + *

+ * + * @throws java.lang.Exception if any. + */ + public void hydrateFormationPressure() throws Exception { + operation = new HydrateFormationPressureFlash(system); + getOperation().run(); + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "hydrateFormationPressure", "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * calcWAT. + *

+ * + * @throws java.lang.Exception if any. + */ + public void calcWAT() throws Exception { + operation = new WATcalc(system); + getOperation().run(); + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), "calcWAT", + "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * run. + *

+ */ + public void run() { + setThermoOperationThread(new Thread(operation)); + getThermoOperationThread().start(); + } + + /** + *

+ * waitAndCheckForFinishedCalculation. + *

+ * + * @param maxTime a int + * @return a boolean + */ + public boolean waitAndCheckForFinishedCalculation(int maxTime) { + try { + getThermoOperationThread().join(maxTime); + getThermoOperationThread().interrupt(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + boolean didFinish = !getThermoOperationThread().isInterrupted(); + // getThermoOperationThread().stop(); + return didFinish; + } + + /** + *

+ * waitToFinishCalculation. + *

+ */ + public void waitToFinishCalculation() { + try { + getThermoOperationThread().join(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + /** + *

+ * calcSolidComlexTemperature. + *

+ * + * @throws java.lang.Exception if any. + */ + public void calcSolidComlexTemperature() throws Exception { + operation = new SolidComplexTemperatureCalc(system); + getOperation().run(); + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "calcSolidComlexTemperature", + "error in WAT() - could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * calcSolidComlexTemperature. + *

+ * + * @param comp1 a {@link java.lang.String} object + * @param comp2 a {@link java.lang.String} object + * @throws java.lang.Exception if any. + */ + public void calcSolidComlexTemperature(String comp1, String comp2) throws Exception { + if (operation == null) { + operation = new SolidComplexTemperatureCalc(system, comp1, comp2); + } + getOperation().run(); + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "calcSolidComlexTemperature", + "error in WAT() - could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * calcImobilePhaseHydrateTemperature. + *

+ * + * @param temperature an array of type double + * @param pressure an array of type double + * @return an array of type double + */ + public double[] calcImobilePhaseHydrateTemperature(double[] temperature, double[] pressure) { + double[] hydTemps = new double[temperature.length]; + SystemInterface systemTemp; + ThermodynamicOperations opsTemp; + systemTemp = system.clone(); + + for (int i = 0; i < temperature.length; i++) { + /* + * opsTemp = new ThermodynamicOperations(systemTemp); + * systemTemp.setTemperature(temperature[i]); systemTemp.setPressure(pressure[i]); + * systemTemp.init(0); systemTemp.display(); try { opsTemp.hydrateFormationTemperature(); } + * catch (Exception ex) { logger.error(ex.getMessage(),e); } systemTemp.display(); hydTemps[i] + * = systemTemp.getTemperature(); + */ + opsTemp = new ThermodynamicOperations(systemTemp); + systemTemp.setTemperature(temperature[i]); + systemTemp.setPressure(pressure[i]); + + opsTemp.TPflash(); + systemTemp.display(); + systemTemp = systemTemp.phaseToSystem(0); + } + + opsTemp = new ThermodynamicOperations(systemTemp); + systemTemp.setHydrateCheck(true); + systemTemp.setMixingRule(9); + try { + opsTemp.hydrateFormationTemperature(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + systemTemp.display(); + return hydTemps; + } + + /** + *

+ * calcTOLHydrateFormationTemperature. + *

+ * + * @return a double + */ + public double calcTOLHydrateFormationTemperature() { + TPflash(); + + SystemInterface systemTemp = system.phaseToSystem(0); + ThermodynamicOperations opsTemp = new ThermodynamicOperations(systemTemp); + try { + opsTemp.hydrateFormationTemperature(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + systemTemp.display(); + system.setTemperature(systemTemp.getTemperature()); + TPflash(); + return system.getTemperature(); + } + + /** + *

+ * hydrateInhibitorConcentration. + *

+ * + * @param inhibitorName a {@link java.lang.String} object + * @param hydEqTemperature a double + * @throws java.lang.Exception if any. + */ + public void hydrateInhibitorConcentration(String inhibitorName, double hydEqTemperature) + throws Exception { + operation = new HydrateInhibitorConcentrationFlash(system, inhibitorName, hydEqTemperature); + operation.run(); + } + + /** + *

+ * hydrateInhibitorConcentrationSet. + *

+ * + * @param inhibitorName a {@link java.lang.String} object + * @param wtfrac a double + * @throws java.lang.Exception if any. + */ + public void hydrateInhibitorConcentrationSet(String inhibitorName, double wtfrac) + throws Exception { + operation = new HydrateInhibitorwtFlash(system, inhibitorName, wtfrac); + operation.run(); + } + + /** + *

+ * hydrateFormationTemperature. + *

+ * + * @param initialTemperatureGuess a double + * @throws java.lang.Exception if any. + */ + public void hydrateFormationTemperature(double initialTemperatureGuess) throws Exception { + system.setTemperature(initialTemperatureGuess); + operation = new HydrateFormationTemperatureFlash(system); + for (int i = 0; i < system.getPhase(4).getNumberOfComponents(); i++) { + ((ComponentHydrate) system.getPhase(4).getComponent(i)).getHydrateStructure(); + } + if (!isRunAsThread()) { + getOperation().run(); + } else { + run(); + } + } + + /** + *

+ * hydrateFormationTemperature. + *

+ * + * @throws java.lang.Exception if any. + */ + public void hydrateFormationTemperature() throws Exception { + // guessing temperature + double factor = 1.0; + if (system.getPhase(0).hasComponent("methanol")) { + factor -= 2 * system.getPhase(0).getComponent("methanol").getz() + / system.getPhase(0).getComponent("water").getz(); + } + if (system.getPhase(0).hasComponent("MEG")) { + factor -= 2 * system.getPhase(0).getComponent("MEG").getz() + / system.getPhase(0).getComponent("water").getz(); + } + if (factor < 2) { + factor = 2; + } + + system.setTemperature(273.0 + system.getPressure() / 100.0 * 20.0 * factor - 20.0); + if (system.getTemperature() > 298.15) { + system.setTemperature(273.0 + 25.0); + } + // logger.info("guess hydrate temperature " + system.getTemperature()); + operation = new HydrateFormationTemperatureFlash(system); + + for (int i = 0; i < system.getPhase(4).getNumberOfComponents(); i++) { + ((ComponentHydrate) system.getPhase(4).getComponent(i)).getHydrateStructure(); + } + if (!isRunAsThread()) { + getOperation().run(); + } else { + run(); + } + // logger.info("Hydrate structure " + (((ComponentHydrate) + // system.getPhase(4).getComponent("water")).getHydrateStructure() + 1)); + } + + /** + *

+ * hydrateFormationTemperature. + *

+ * + * @param structure a int + * @throws java.lang.Exception if any. + */ + public void hydrateFormationTemperature(int structure) throws Exception { + system.setTemperature(273.0 + 1.0); + if (structure == 0) { + system.setSolidPhaseCheck("water"); + system.setHydrateCheck(true); + operation = new freezingPointTemperatureFlash(system); + } else { + operation = new HydrateFormationTemperatureFlash(system); + } + + for (int i = 0; i < system.getPhase(4).getNumberOfComponents(); i++) { + ((ComponentHydrate) system.getPhases()[4].getComponent(i)).setHydrateStructure(structure - 1); + } + if (!isRunAsThread()) { + getOperation().run(); + } else { + run(); + } + + if (Double.isNaN(system.getTemperature())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "hydrateFormationTemperature", "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * hydrateEquilibriumLine. + *

+ * + * @param minimumPressure a double + * @param maximumPressure a double + * @throws java.lang.Exception if any. + */ + public void hydrateEquilibriumLine(double minimumPressure, double maximumPressure) + throws Exception { + operation = new HydrateEquilibriumLine(system, minimumPressure, maximumPressure); + if (!isRunAsThread()) { + getOperation().run(); + } else { + run(); + } + } + + /** + *

+ * calcCricoP. + *

+ * + * @param cricondenBar an array of type double + * @param cricondenBarX an array of type double + * @param cricondenBarY an array of type double + */ + public void calcCricoP(double[] cricondenBar, double[] cricondenBarX, double[] cricondenBarY) { + double phasefraction = 1.0 - 1e-10; + + operation = new CricondenBarFlash(system, fileName, phasefraction, cricondenBar, cricondenBarX, + cricondenBarY); + + getOperation().run(); + } + + /** + *

+ * calcCricoT. + *

+ * + * @param cricondenTherm an array of type double + * @param cricondenThermX an array of type double + * @param cricondenThermY an array of type double + */ + public void calcCricoT(double[] cricondenTherm, double[] cricondenThermX, + double[] cricondenThermY) { + double phasefraction = 1.0 - 1e-10; + + operation = new CricondenThermFlash(system, fileName, phasefraction, cricondenTherm, + cricondenThermX, cricondenThermY); + + getOperation().run(); + } + + /** + *

+ * waterDewPointLine. + *

+ * + * @param minimumPressure a double + * @param maximumPressure a double + * @throws java.lang.Exception if any. + */ + public void waterDewPointLine(double minimumPressure, double maximumPressure) throws Exception { + operation = new WaterDewPointEquilibriumLine(system, minimumPressure, maximumPressure); + if (!isRunAsThread()) { + getOperation().run(); + } else { + run(); + } + } + + /** + *

+ * calcCricondenBar. + *

+ * + * @return a double + */ + public double calcCricondenBar() { + system.init(0); + operation = new cricondebarFlash(system); + // operation = new CricondenBarFlash(system); + + // operation = new cricondenBarTemp1(system); + operation.run(); + return system.getPressure(); + } + + /** + *

+ * bubblePointPressureFlash. + *

+ * + * @throws java.lang.Exception if any. + */ + public void bubblePointPressureFlash() throws Exception { + system.init(0); + ConstantDutyFlashInterface operation = new constantDutyPressureFlash(system); + system.setBeta(1, 1.0 - 1e-10); + system.setBeta(0, 1e-10); + operation.run(); + if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "bubblePointPressureFlash", "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * bubblePointPressureFlash. + *

+ * + * @param derivatives a boolean + * @throws java.lang.Exception if any. + */ + public void bubblePointPressureFlash(boolean derivatives) throws Exception { + ConstantDutyFlashInterface operation = null; + if (derivatives) { + operation = new bubblePointPressureFlashDer(system); + } else { + operation = new bubblePointPressureFlash(system); + } + operation.run(); + if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "bubblePointPressureFlash", "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * constantPhaseFractionPressureFlash. + *

+ * + * @param fraction a double + * @throws java.lang.Exception if any. + */ + public void constantPhaseFractionPressureFlash(double fraction) throws Exception { + system.init(0); + if (fraction < 1e-10) { + fraction = 1e-10; + } + if (fraction > 1.0 - 1e-10) { + fraction = 1.0 - 1.0e-10; + } + ConstantDutyFlashInterface operation = new constantDutyPressureFlash(system); + system.setBeta(1, 1.0 - fraction); + system.setBeta(0, fraction); + operation.run(); + if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "constantPhaseFractionPressureFlash", + "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * constantPhaseFractionTemperatureFlash. + *

+ * + * @param fraction a double + * @throws java.lang.Exception if any. + */ + public void constantPhaseFractionTemperatureFlash(double fraction) throws Exception { + system.init(0); + if (fraction < 1e-10) { + fraction = 1e-10; + } + if (fraction > 1.0 - 1e-10) { + fraction = 1.0 - 1.0e-10; + } + ConstantDutyFlashInterface operation = new constantDutyTemperatureFlash(system); + system.setBeta(1, fraction); + system.setBeta(0, fraction); + operation.run(); + if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "constantPhaseFractionTemperatureFlash", + "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * dewPointMach. + *

+ * + * @param componentName a {@link java.lang.String} object + * @param specification a {@link java.lang.String} object + * @param spec a double + * @throws java.lang.Exception if any. + */ + public void dewPointMach(String componentName, String specification, double spec) + throws Exception { + // int componentNumber = + // system.getPhase(0).getComponent(componentName).getComponentNumber(); + + double dn = 0; + if (system.getPhase(0).hasComponent(componentName)) { + dn = system.getNumberOfMoles() / 1.0e6; + system.addComponent(componentName, dn); + } else { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "dewPointMach", "Specified component is not present in mixture: " + componentName); + } + double newTemperature = system.getTemperature(); + double oldTemperature = newTemperature; + int iterations = 0; + if (specification.equals("dewPointTemperature")) { + // logger.info("new temperature " + newTemperature); + do { + iterations++; + system.init(0); dewPointTemperatureFlash(); - - if (system.getTemperature() > lowTemperature) { - lowTemperature = system.getTemperature(); - } - - // if(lowTemperature<273.15 && system.doSolidPhaseCheck()){ - // hydrateFormationTemperature(0); - // if(system.getTemperature()>lowTemperature) lowTemperature = - // system.getTemperature(); - // } - - // if(system.doHydrateCheck()){ - // hydrateFormationTemperature(1); - // if(system.getTemperature()>lowTemperature) lowTemperature = - // system.getTemperature(); - // hydrateFormationTemperature(2); - // if(system.getTemperature()>lowTemperature) lowTemperature = - // system.getTemperature(); - // } - - system.setTemperature(lowTemperature); - // TPflash(); - - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "waterPrecipitationTemperature", - "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * calcSaltSaturation. - *

- * - * @param saltName a {@link java.lang.String} object - * @throws java.lang.Exception if any. - */ - public void calcSaltSaturation(String saltName) throws Exception { - operation = new calcSaltSatauration(system, saltName); - getOperation().run(); - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "calcSaltSaturation", "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * checkScalePotential. - *

- * - * @param phaseNumber a int - * @throws java.lang.Exception if any. - */ - public void checkScalePotential(int phaseNumber) throws Exception { - operation = new checkScalePotential(system, phaseNumber); - getOperation().run(); - resultTable = getOperation().getResultTable(); - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "checkScalePotential", "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * addIonToScaleSaturation. - *

- * - * @param phaseNumber a int - * @param scaleSaltName a {@link java.lang.String} object - * @param nameOfIonToBeAdded a {@link java.lang.String} object - * @throws java.lang.Exception if any. - */ - public void addIonToScaleSaturation(int phaseNumber, String scaleSaltName, - String nameOfIonToBeAdded) throws Exception { - operation = new addIonToScaleSaturation(system, phaseNumber, scaleSaltName, nameOfIonToBeAdded); - getOperation().run(); - resultTable = getOperation().getResultTable(); - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "addIonToScaleSaturation", "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * hydrateFormationPressure. - *

- * - * @throws java.lang.Exception if any. - */ - public void hydrateFormationPressure() throws Exception { - operation = new HydrateFormationPressureFlash(system); - getOperation().run(); - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "hydrateFormationPressure", "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * calcWAT. - *

- * - * @throws java.lang.Exception if any. - */ - public void calcWAT() throws Exception { - operation = new WATcalc(system); - getOperation().run(); - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), "calcWAT", - "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * run. - *

- */ - public void run() { - setThermoOperationThread(new Thread(operation)); - getThermoOperationThread().start(); - } - - /** - *

- * waitAndCheckForFinishedCalculation. - *

- * - * @param maxTime a int - * @return a boolean - */ - public boolean waitAndCheckForFinishedCalculation(int maxTime) { - try { - getThermoOperationThread().join(maxTime); - getThermoOperationThread().interrupt(); - } catch (Exception e) { - logger.error("error", e); - } - boolean didFinish = !getThermoOperationThread().isInterrupted(); - // getThermoOperationThread().stop(); - return didFinish; - } - - /** - *

- * waitToFinishCalculation. - *

- */ - public void waitToFinishCalculation() { - try { - getThermoOperationThread().join(); - } catch (Exception e) { - logger.error("error", e); - } - } - - /** - *

- * calcSolidComlexTemperature. - *

- * - * @throws java.lang.Exception if any. - */ - public void calcSolidComlexTemperature() throws Exception { - operation = new SolidComplexTemperatureCalc(system); - getOperation().run(); - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "calcSolidComlexTemperature", - "error in WAT() - could not find solution - possible no dew point exists"); - } + newTemperature = system.getTemperature(); + // logger.info("new temperature " + newTemperature); + double oldMoles = system.getPhase(0).getComponent(componentName).getNumberOfmoles(); + if (iterations > 1) { + system.addComponent(componentName, -(iterations / (30.0 + iterations)) + * (newTemperature - spec) / ((newTemperature - oldTemperature) / dn)); + } else { + system.addComponent(componentName, system.getNumberOfMoles() / 1.0e6); + } + dn = system.getPhase(0).getComponent(componentName).getNumberOfmoles() - oldMoles; + oldTemperature = newTemperature; + } while (Math + .abs(dn / system.getPhase(0).getComponent(componentName).getNumberOfmoles()) > 1e-9 + || iterations < 5 || iterations > 105); + + dewPointTemperatureFlash(); + } + + if (Double.isNaN(system.getPressure())) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "dewPointMach", "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * dewPointTemperatureFlash. + *

+ * + * @throws java.lang.Exception if any. + */ + public void dewPointTemperatureFlash() throws Exception { + ConstantDutyFlashInterface operation = + new neqsim.thermodynamicOperations.flashOps.saturationOps.dewPointTemperatureFlash(system); + operation.run(); + if (Double.isNaN(system.getTemperature()) || operation.isSuperCritical()) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "dewPointTemperatureFlash", "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * dewPointTemperatureFlash. + *

+ * + * @param derivatives a boolean + * @throws java.lang.Exception if any. + */ + public void dewPointTemperatureFlash(boolean derivatives) throws Exception { + ConstantDutyFlashInterface operation = + new neqsim.thermodynamicOperations.flashOps.saturationOps.dewPointTemperatureFlash(system); + if (derivatives) { + operation = new dewPointTemperatureFlashDer(system); + } + operation.run(); + if (Double.isNaN(system.getTemperature()) || operation.isSuperCritical()) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "dewPointTemperatureFlash", "Could not find solution - possible no dew point exists"); + } + } + + /** + *

+ * dewPointPressureFlashHC. + *

+ * + * @throws java.lang.Exception if any. + */ + public void dewPointPressureFlashHC() throws Exception { + // try{ + system.init(0); + ConstantDutyFlashInterface operation = new HCdewPointPressureFlash(system); + operation.run(); + if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "dewPointPressureFlashHC", "Could not find solution - possible no dew point exists"); } - - /** - *

- * calcSolidComlexTemperature. - *

- * - * @param comp1 a {@link java.lang.String} object - * @param comp2 a {@link java.lang.String} object - * @throws java.lang.Exception if any. - */ - public void calcSolidComlexTemperature(String comp1, String comp2) throws Exception { - if (operation == null) { - operation = new SolidComplexTemperatureCalc(system, comp1, comp2); - } - getOperation().run(); - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "calcSolidComlexTemperature", - "error in WAT() - could not find solution - possible no dew point exists"); - } + // } + } + + /** + *

+ * dewPointPressureFlash. + *

+ * + * @throws java.lang.Exception if any. + */ + public void dewPointPressureFlash() throws Exception { + // try{ + system.init(0); + ConstantDutyFlashInterface operation = new dewPointPressureFlash(system); + operation.run(); + if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { + throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), + "dewPointPressureFlash", "Could not find solution - possible no dew point exists"); } - - /** - *

- * calcImobilePhaseHydrateTemperature. - *

- * - * @param temperature an array of {@link double} objects - * @param pressure an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcImobilePhaseHydrateTemperature(double[] temperature, double[] pressure) { - double[] hydTemps = new double[temperature.length]; - SystemInterface systemTemp; - ThermodynamicOperations opsTemp; - systemTemp = system.clone(); - - for (int i = 0; i < temperature.length; i++) { - /* - * opsTemp = new ThermodynamicOperations(systemTemp); - * systemTemp.setTemperature(temperature[i]); - * systemTemp.setPressure(pressure[i]); - * systemTemp.init(0); systemTemp.display(); try { - * opsTemp.hydrateFormationTemperature(); } catch (Exception e) { - * logger.error("error",e); } systemTemp.display(); hydTemps[i] = - * systemTemp.getTemperature(); - * - */ - opsTemp = new ThermodynamicOperations(systemTemp); - systemTemp.setTemperature(temperature[i]); - systemTemp.setPressure(pressure[i]); - - opsTemp.TPflash(); - systemTemp.display(); - systemTemp = systemTemp.phaseToSystem(0); - } - - opsTemp = new ThermodynamicOperations(systemTemp); - systemTemp.setHydrateCheck(true); - systemTemp.setMixingRule(9); - try { - opsTemp.hydrateFormationTemperature(); - } catch (Exception e) { - logger.error("error", e); - } - systemTemp.display(); - return hydTemps; - } - - /** - *

- * calcTOLHydrateFormationTemperature. - *

- * - * @return a double - */ - public double calcTOLHydrateFormationTemperature() { + // } + } + + /** + *

+ * getJfreeChart. + *

+ * + * @return a {@link org.jfree.chart.JFreeChart} object + */ + public org.jfree.chart.JFreeChart getJfreeChart() { + return getOperation().getJFreeChart(""); + } + + // public void dewPointPressureFlash(){ + // constantDutyFlashInterface operation = new constantDutyPressureFlash(system); + // operation.setBeta((1-1e-7)); + // operation.run(); + // } + /** + *

+ * calcPTphaseEnvelope. + *

+ */ + public void calcPTphaseEnvelope() { + operation = new pTphaseEnvelope(system, fileName, (1.0 - 1e-10), 1.0, false); + // thisThread = new Thread(operation); + // thisThread.start(); + getOperation().run(); + } + + // public void dewPointPressureFlash(){ + // constantDutyFlashInterface operation = new constantDutyPressureFlash(system); + // operation.setBeta((1-1e-7)); + // operation.run(); + // } + /** + *

+ * calcPTphaseEnvelopeNew. + *

+ */ + public void calcPTphaseEnvelope2() { + operation = new pTphaseEnvelopeNew2(system, fileName, (1.0 - 1e-10), 1.0, false); + // thisThread = new Thread(operation); + // thisThread.start(); + getOperation().run(); + } + + /** + *

+ * calcPTphaseEnvelope. + *

+ * + * @param bubfirst a boolean + * @param lowPres a double + */ + public void calcPTphaseEnvelope(boolean bubfirst, double lowPres) { + double phasefraction = 1.0 - 1e-10; + if (bubfirst) { + phasefraction = 1.0e-10; + } + operation = new pTphaseEnvelope(system, fileName, phasefraction, lowPres, bubfirst); + + // thisThread = new Thread(operation); + // thisThread.start(); + getOperation().run(); + } + + /** + *

+ * calcPTphaseEnvelope. + *

+ * + * @param lowPres a double + */ + public void calcPTphaseEnvelope(double lowPres) { + operation = new pTphaseEnvelope(system, fileName, 1e-10, lowPres, true); + // thisThread = new Thread(operation); + // thisThread.start(); + getOperation().run(); + } + + /** + *

+ * calcPTphaseEnvelope. + *

+ * + * @param bubfirst a boolean + */ + public void calcPTphaseEnvelope(boolean bubfirst) { + double phasefraction = 1.0 - 1e-10; + if (bubfirst) { + phasefraction = 1.0e-10; + } + operation = new pTphaseEnvelope(system, fileName, phasefraction, 1.0, bubfirst); + + // thisThread = new Thread(operation); + // thisThread.start(); + if (!isRunAsThread()) { + getOperation().run(); + } else { + run(); + } + } + + /** + *

+ * calcPTphaseEnvelope. + *

+ * + * @param lowPres a double + * @param phasefraction a double + */ + public void calcPTphaseEnvelope(double lowPres, double phasefraction) { + operation = new pTphaseEnvelope(system, fileName, phasefraction, lowPres, true); + + // thisThread = new Thread(operation); + // thisThread.start(); + getOperation().run(); + } + + /** + *

+ * calcPTphaseEnvelopeNew. + *

+ */ + public void calcPTphaseEnvelopeNew() { + // double phasefraction = 1.0 - 1e-10; + // operation = new pTphaseEnvelope(system, fileName, phasefraction, 1.0); + getOperation().run(); + } + + /** + *

+ * OLGApropTable. + *

+ * + * @param minTemp a double + * @param maxTemp a double + * @param temperatureSteps a int + * @param minPres a double + * @param maxPres a double + * @param pressureSteps a int + * @param filename a {@link java.lang.String} object + * @param TABtype a int + */ + public void OLGApropTable(double minTemp, double maxTemp, int temperatureSteps, double minPres, + double maxPres, int pressureSteps, String filename, int TABtype) { + operation = new OLGApropertyTableGeneratorWaterStudents(system); + ((OLGApropertyTableGeneratorWaterStudents) operation).setFileName(filename); + ((OLGApropertyTableGeneratorWaterStudents) operation).setPressureRange(minPres, maxPres, + pressureSteps); + ((OLGApropertyTableGeneratorWaterStudents) operation).setTemperatureRange(minTemp, maxTemp, + temperatureSteps); + getOperation().run(); + } + + /** + *

+ * OLGApropTablePH. + *

+ * + * @param minEnthalpy a double + * @param maxEnthalpy a double + * @param enthalpySteps a int + * @param minPres a double + * @param maxPres a double + * @param pressureSteps a int + * @param filename a {@link java.lang.String} object + * @param TABtype a int + */ + public void OLGApropTablePH(double minEnthalpy, double maxEnthalpy, int enthalpySteps, + double minPres, double maxPres, int pressureSteps, String filename, int TABtype) { + operation = new OLGApropertyTableGeneratorWaterStudentsPH(system); + ((OLGApropertyTableGeneratorWaterStudentsPH) operation).setFileName(filename); + ((OLGApropertyTableGeneratorWaterStudentsPH) operation).setPressureRange(minPres, maxPres, + pressureSteps); + ((OLGApropertyTableGeneratorWaterStudentsPH) operation).setEnthalpyRange(minEnthalpy, + maxEnthalpy, enthalpySteps); + getOperation().run(); + } + + /** + *

+ * calcPloadingCurve. + *

+ */ + public void calcPloadingCurve() { + operation = new pLoadingCurve2(system); + // thisThread = new Thread(operation); + // thisThread.start(); + getOperation().run(); + } + + /** + *

+ * calcHPTphaseEnvelope. + *

+ */ + public void calcHPTphaseEnvelope() { + operation = new HPTphaseEnvelope(system); + // thisThread = new Thread(getOperation()); + // thisThread.start(); + operation.run(); + } + + /** + *

+ * printToFile. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void printToFile(String name) { + getOperation().printToFile(name); + } + + // public double[] get(String name){ + // return operation.get(name); + // } + /** + *

+ * getData. + *

+ * + * @return an array of type double + */ + public double[][] getData() { + return getOperation().getPoints(0); + } + + /** + *

+ * getDataPoints. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[][] getDataPoints() { + String[][] str = + new String[getOperation().getPoints(0).length][getOperation().getPoints(0)[0].length]; + for (int i = 0; i < getOperation().getPoints(0).length; i++) { + for (int j = 0; j < getOperation().getPoints(0)[0].length; j++) { + str[i][j] = Double.toString(getOperation().getPoints(0)[i][j]); + } + } + return str; + } + + /** + *

+ * Getter for the field resultTable. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[][] getResultTable() { + return resultTable; + } + + /** + *

+ * dewPointTemperatureCondensationRate. + *

+ * + * @return a double + */ + public double dewPointTemperatureCondensationRate() { + double dT = 1.1; + try { + dewPointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + system.setTemperature(system.getTemperature() - dT); + TPflash(); + double condensationRate = system.getPhase(1).getMass() / (system.getVolume() * 1.0e-5); + try { + dewPointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + return condensationRate / dT; + } + + /** + *

+ * displayResult. + *

+ */ + public void displayResult() { + try { + getThermoOperationThread().join(); + } catch (Exception ex) { + logger.error("Thread did not finish", ex); + } + getOperation().displayResult(); + } + + /** + *

+ * Setter for the field resultTable. + *

+ * + * @param resultTable an array of {@link java.lang.String} objects + */ + public void setResultTable(String[][] resultTable) { + this.resultTable = resultTable; + } + + /** + *

+ * display. + *

+ */ + public void display() { + if (resultTable == null) { + return; + } + + JFrame dialog = new JFrame("System-Report"); + Container dialogContentPane = dialog.getContentPane(); + dialogContentPane.setLayout(new BorderLayout()); + + String[] names = new String[resultTable[0].length]; // {"", "", ""}; + for (int i = 0; i < names.length; i++) { + names[i] = ""; + } + JTable Jtab = new JTable(resultTable, names); + JScrollPane scrollpane = new JScrollPane(Jtab); + dialogContentPane.add(scrollpane); + dialog.pack(); + dialog.setVisible(true); + } + + /** + *

+ * get. + *

+ * + * @param name a {@link java.lang.String} object + * @return an array of type double + */ + public double[] get(String name) { + return getOperation().get(name); + } + + /** + *

+ * Getter for the field operation. + *

+ * + * @return the operation + */ + public OperationInterface getOperation() { + return operation; + } + + /** + *

+ * isRunAsThread. + *

+ * + * @return the runAsThread + */ + public boolean isRunAsThread() { + return runAsThread; + } + + /** + *

+ * Setter for the field runAsThread. + *

+ * + * @param runAsThread the runAsThread to set + */ + public void setRunAsThread(boolean runAsThread) { + this.runAsThread = runAsThread; + } + + /** + *

+ * Getter for the field thermoOperationThread. + *

+ * + * @return the thermoOperationThread + */ + public Thread getThermoOperationThread() { + return thermoOperationThread; + } + + /** + *

+ * Setter for the field thermoOperationThread. + *

+ * + * @param thermoOperationThread the thermoOperationThread to set + */ + public void setThermoOperationThread(Thread thermoOperationThread) { + this.thermoOperationThread = thermoOperationThread; + } + + /** + *

+ * addData. + *

+ * + * @param name a {@link java.lang.String} object + * @param data an array of type double + */ + public void addData(String name, double[][] data) { + operation.addData(name, data); + } + + /** + *

+ * calcIonComposition. + *

+ * + * @param phaseNumber a int + */ + public void calcIonComposition(int phaseNumber) { + operation = new CalcIonicComposition(system, phaseNumber); + getOperation().run(); + resultTable = getOperation().getResultTable(); + } + + /** + *

+ * Wrapper for flash calculations. + *

+ * + * @param flashType Type of flash. + * @param spec1 Value of spec1 + * @param spec2 Value of spec2 + * @param unitSpec1 Unit of spec1 + * @param unitSpec2 Unit of spec2 + */ + public void flash(FlashType flashType, double spec1, double spec2, String unitSpec1, + String unitSpec2) { + switch (flashType) { + case PT: + system.setPressure(spec1, unitSpec1); + system.setTemperature(spec2, unitSpec2); TPflash(); - - SystemInterface systemTemp = system.phaseToSystem(0); - ThermodynamicOperations opsTemp = new ThermodynamicOperations(systemTemp); - try { - opsTemp.hydrateFormationTemperature(); - } catch (Exception e) { - logger.error("error", e); - } - systemTemp.display(); - system.setTemperature(systemTemp.getTemperature()); + break; + case TP: + system.setTemperature(spec1, unitSpec1); + system.setPressure(spec2, unitSpec2); TPflash(); - return system.getTemperature(); - } - - /** - *

- * hydrateInhibitorConcentration. - *

- * - * @param inhibitorName a {@link java.lang.String} object - * @param hydEqTemperature a double - * @throws java.lang.Exception if any. - */ - public void hydrateInhibitorConcentration(String inhibitorName, double hydEqTemperature) - throws Exception { - operation = new HydrateInhibitorConcentrationFlash(system, inhibitorName, hydEqTemperature); - operation.run(); - } - - /** - *

- * hydrateInhibitorConcentrationSet. - *

- * - * @param inhibitorName a {@link java.lang.String} object - * @param wtfrac a double - * @throws java.lang.Exception if any. - */ - public void hydrateInhibitorConcentrationSet(String inhibitorName, double wtfrac) - throws Exception { - operation = new HydrateInhibitorwtFlash(system, inhibitorName, wtfrac); - operation.run(); - } - - /** - *

- * hydrateFormationTemperature. - *

- * - * @param initialTemperatureGuess a double - * @throws java.lang.Exception if any. - */ - public void hydrateFormationTemperature(double initialTemperatureGuess) throws Exception { - system.setTemperature(initialTemperatureGuess); - operation = new HydrateFormationTemperatureFlash(system); - for (int i = 0; i < system.getPhase(4).getNumberOfComponents(); i++) { - ((ComponentHydrate) system.getPhase(4).getComponent(i)).getHydrateStructure(); - } - if (!isRunAsThread()) { - getOperation().run(); - } else { - run(); - } - } - - /** - *

- * hydrateFormationTemperature. - *

- * - * @throws java.lang.Exception if any. - */ - public void hydrateFormationTemperature() throws Exception { - // guessing temperature - double factor = 1.0; - if (system.getPhase(0).hasComponent("methanol")) { - factor -= 2 * system.getPhase(0).getComponent("methanol").getz() - / system.getPhase(0).getComponent("water").getz(); - } - if (system.getPhase(0).hasComponent("MEG")) { - factor -= 2 * system.getPhase(0).getComponent("MEG").getz() - / system.getPhase(0).getComponent("water").getz(); - } - if (factor < 2) { - factor = 2; - } - - system.setTemperature(273.0 + system.getPressure() / 100.0 * 20.0 * factor - 20.0); - if (system.getTemperature() > 298.15) { - system.setTemperature(273.0 + 25.0); - } - // logger.info("guess hydrate temperature " + system.getTemperature()); - operation = new HydrateFormationTemperatureFlash(system); - - for (int i = 0; i < system.getPhase(4).getNumberOfComponents(); i++) { - ((ComponentHydrate) system.getPhase(4).getComponent(i)).getHydrateStructure(); - } - if (!isRunAsThread()) { - getOperation().run(); - } else { - run(); - } - // logger.info("Hydrate structure " + (((ComponentHydrate) - // system.getPhase(4).getComponent("water")).getHydrateStructure() + 1)); - } - - /** - *

- * hydrateEquilibriumLine. - *

- * - * @param minimumPressure a double - * @param maximumPressure a double - * @throws java.lang.Exception if any. - */ - public void hydrateEquilibriumLine(double minimumPressure, double maximumPressure) - throws Exception { - operation = new HydrateEquilibriumLine(system, minimumPressure, maximumPressure); - if (!isRunAsThread()) { - getOperation().run(); - } else { - run(); - } - } - - /** - *

- * calcCricoP. - *

- * - * @param cricondenBar an array of {@link double} objects - * @param cricondenBarX an array of {@link double} objects - * @param cricondenBarY an array of {@link double} objects - */ - public void calcCricoP(double[] cricondenBar, double[] cricondenBarX, double[] cricondenBarY) { - double phasefraction = 1.0 - 1e-10; - - operation = new CricondenBarFlash(system, fileName, phasefraction, cricondenBar, - cricondenBarX, cricondenBarY); - - getOperation().run(); - } - - /** - *

- * calcCricoT. - *

- * - * @param cricondenTherm an array of {@link double} objects - * @param cricondenThermX an array of {@link double} objects - * @param cricondenThermY an array of {@link double} objects - */ - public void calcCricoT(double[] cricondenTherm, double[] cricondenThermX, - double[] cricondenThermY) { - double phasefraction = 1.0 - 1e-10; - - operation = new CricondenThermFlash(system, fileName, phasefraction, cricondenTherm, - cricondenThermX, cricondenThermY); - - getOperation().run(); - } - - /** - *

- * waterDewPointLine. - *

- * - * @param minimumPressure a double - * @param maximumPressure a double - * @throws java.lang.Exception if any. - */ - public void waterDewPointLine(double minimumPressure, double maximumPressure) throws Exception { - operation = new WaterDewPointEquilibriumLine(system, minimumPressure, maximumPressure); - if (!isRunAsThread()) { - getOperation().run(); - } else { - run(); - } - } - - /** - *

- * hydrateFormationTemperature. - *

- * - * @param structure a int - * @throws java.lang.Exception if any. - */ - public void hydrateFormationTemperature(int structure) throws Exception { - system.setTemperature(273.0 + 1.0); - if (structure == 0) { - system.setSolidPhaseCheck("water"); - system.setHydrateCheck(true); - operation = new freezingPointTemperatureFlash(system); - } else { - operation = new HydrateFormationTemperatureFlash(system); - } - - for (int i = 0; i < system.getPhase(4).getNumberOfComponents(); i++) { - ((ComponentHydrate) system.getPhases()[4].getComponent(i)) - .setHydrateStructure(structure - 1); - } - if (!isRunAsThread()) { - getOperation().run(); - } else { - run(); - } - - if (Double.isNaN(system.getTemperature())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "hydrateFormationTemperature", - "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * calcCricondenBar. - *

- * - * @return a double - */ - public double calcCricondenBar() { - system.init(0); - operation = new cricondebarFlash(system); - // operation = new CricondenBarFlash(system); - - // operation = new cricondenBarTemp1(system); - operation.run(); - return system.getPressure(); - } - - /** - *

- * bubblePointPressureFlash. - *

- * - * @throws java.lang.Exception if any. - */ - public void bubblePointPressureFlash() throws Exception { - system.init(0); - constantDutyFlashInterface operation = new constantDutyPressureFlash(system); - system.setBeta(1, 1.0 - 1e-10); - system.setBeta(0, 1e-10); - operation.run(); - if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "bubblePointPressureFlash", "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * constantPhaseFractionPressureFlash. - *

- * - * @param fraction a double - * @throws java.lang.Exception if any. - */ - public void constantPhaseFractionPressureFlash(double fraction) throws Exception { - system.init(0); - if (fraction < 1e-10) { - fraction = 1e-10; - } - if (fraction > 1.0 - 1e-10) { - fraction = 1.0 - 1.0e-10; - } - constantDutyFlashInterface operation = new constantDutyPressureFlash(system); - system.setBeta(1, 1.0 - fraction); - system.setBeta(0, fraction); - operation.run(); - if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "constantPhaseFractionPressureFlash", - "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * constantPhaseFractionTemperatureFlash. - *

- * - * @param fraction a double - * @throws java.lang.Exception if any. - */ - public void constantPhaseFractionTemperatureFlash(double fraction) throws Exception { - system.init(0); - if (fraction < 1e-10) { - fraction = 1e-10; - } - if (fraction > 1.0 - 1e-10) { - fraction = 1.0 - 1.0e-10; - } - constantDutyFlashInterface operation = new constantDutyTemperatureFlash(system); - system.setBeta(1, fraction); - system.setBeta(0, fraction); - operation.run(); - if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "constantPhaseFractionTemperatureFlash", - "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * bubblePointPressureFlash. - *

- * - * @param derivatives a boolean - * @throws java.lang.Exception if any. - */ - public void bubblePointPressureFlash(boolean derivatives) throws Exception { - constantDutyFlashInterface operation = null; - if (derivatives == true) { - operation = new bubblePointPressureFlashDer(system); - } else { - operation = new bubblePointPressureFlash(system); - } - operation.run(); - if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "bubblePointPressureFlash", "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * dewPointMach. - *

- * - * @param componentName a {@link java.lang.String} object - * @param specification a {@link java.lang.String} object - * @param spec a double - * @throws java.lang.Exception if any. - */ - public void dewPointMach(String componentName, String specification, double spec) - throws Exception { - // int componentNumber = - // system.getPhase(0).getComponent(componentName).getComponentNumber(); - - double dn = 0; - if (system.getPhase(0).hasComponent(componentName)) { - dn = system.getNumberOfMoles() / 1.0e6; - system.addComponent(componentName, dn); - } else { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "dewPointMach", "Specified component is not present in mixture: " + componentName); - } - double newTemperature = system.getTemperature(), oldTemperature = newTemperature; - int iterations = 0; - if (specification.equals("dewPointTemperature")) { - // logger.info("new temperature " + newTemperature); - do { - iterations++; - system.init(0); - dewPointTemperatureFlash(); - newTemperature = system.getTemperature(); - // logger.info("new temperature " + newTemperature); - double oldMoles = system.getPhase(0).getComponent(componentName).getNumberOfmoles(); - if (iterations > 1) { - system.addComponent(componentName, -(iterations / (30.0 + iterations)) - * (newTemperature - spec) / ((newTemperature - oldTemperature) / dn)); - } else { - system.addComponent(componentName, system.getNumberOfMoles() / 1.0e6); - } - dn = system.getPhase(0).getComponent(componentName).getNumberOfmoles() - oldMoles; - oldTemperature = newTemperature; - } while (Math.abs( - dn / system.getPhase(0).getComponent(componentName).getNumberOfmoles()) > 1e-9 - || iterations < 5 || iterations > 105); - - dewPointTemperatureFlash(); - } - - if (Double.isNaN(system.getPressure())) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "dewPointMach", "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * dewPointTemperatureFlash. - *

- * - * @throws java.lang.Exception if any. - */ - public void dewPointTemperatureFlash() throws Exception { - constantDutyFlashInterface operation = new neqsim.thermodynamicOperations.flashOps.saturationOps.dewPointTemperatureFlash( - system); - operation.run(); - if (Double.isNaN(system.getTemperature()) || operation.isSuperCritical()) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "dewPointTemperatureFlash", "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * dewPointTemperatureFlash. - *

- * - * @param derivatives a boolean - * @throws java.lang.Exception if any. - */ - public void dewPointTemperatureFlash(boolean derivatives) throws Exception { - constantDutyFlashInterface operation = new neqsim.thermodynamicOperations.flashOps.saturationOps.dewPointTemperatureFlash( - system); - if (derivatives) { - operation = new dewPointTemperatureFlashDer(system); - } - operation.run(); - if (Double.isNaN(system.getTemperature()) || operation.isSuperCritical()) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "dewPointTemperatureFlash", "Could not find solution - possible no dew point exists"); - } - } - - /** - *

- * dewPointPressureFlashHC. - *

- * - * @throws java.lang.Exception if any. - */ - public void dewPointPressureFlashHC() throws Exception { - // try{ - system.init(0); - constantDutyFlashInterface operation = new HCdewPointPressureFlash(system); - operation.run(); - if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "dewPointPressureFlashHC", "Could not find solution - possible no dew point exists"); - } - // } - } - - /** - *

- * dewPointPressureFlash. - *

- * - * @throws java.lang.Exception if any. - */ - public void dewPointPressureFlash() throws Exception { - // try{ - system.init(0); - constantDutyFlashInterface operation = new dewPointPressureFlash(system); - operation.run(); - if (Double.isNaN(system.getPressure()) || operation.isSuperCritical()) { - throw new neqsim.util.exception.IsNaNException(this.getClass().getSimpleName(), - "dewPointPressureFlash", "Could not find solution - possible no dew point exists"); + break; + case TV: + system.setTemperature(spec1, unitSpec1); + TVflash(spec2, unitSpec2); + break; + case PH: + system.setPressure(spec1, unitSpec1); + PHflash(spec2, unitSpec2); + break; + case TS: + system.setTemperature(spec1, unitSpec1); + TSflash(spec2, unitSpec2); + break; + default: + break; + } + } + + /** + * Perform flashes and return System properties per set of Spec1 and Spec2. Possible to specify + * fractions for each value of Spec1. + * + * @param Spec1 Flash pressure in bar absolute. + * @param Spec2 Flash specification. Depends on FlashMode. Temperature in Kelvin, entalphy in + * J/mol or entropy in J/molK. + * @param FlashMode 1 - PT 2 - PH 3 - PS + * @param components Not yet in use. + * @param onlineFractions Specify fractions per sample instance or null to use static composition + * specified in system. + * @return Object CalculationResult object + */ + public CalculationResult propertyFlash(List Spec1, List Spec2, int FlashMode, + List components, List> onlineFractions) { + FlashType flashType; + if (FlashMode == 1) { + flashType = FlashType.PT; + } else if (FlashMode == 2) { + flashType = FlashType.PH; + } else if (FlashMode == 3) { + flashType = FlashType.PS; + } else { + flashType = null; + } + + Double[][] fluidProperties = new Double[Spec1.size()][SystemProperties.nCols]; + String[] calculationError = new String[Spec1.size()]; + + Double[] sum = new Double[Spec1.size()]; + String[] systemComponents = this.system.getComponentNames(); + if (components != null) { + for (String inputCompName : components) { + if (!this.system.hasComponent(inputCompName)) { + for (int t = 0; t < Spec1.size(); t++) { + calculationError[t] = "Input component list does not match fluid component list."; + } + } + } + } else { + components = Arrays.asList(systemComponents); + } + + // Verify that sum of fractions equals 1/100, i.e., assume percentages + boolean hasOnlineFractions = onlineFractions != null; + + if (hasOnlineFractions) { + double range = 5; + for (int t = 0; t < sum.length; t++) { + sum[t] = 0.0; + for (int comp = 0; comp < onlineFractions.size(); comp++) { + sum[t] = sum[t] + onlineFractions.get(comp).get(t).doubleValue(); + } + if (!((sum[t] >= 1 - range / 100 && sum[t] <= 1 + range / 100) + || (sum[t] >= 100 - range && sum[t] <= 100 + range))) { + calculationError[t] = "Sum of fractions must be approximately 1 or 100, currently (" + + String.valueOf(sum[t]) + ")"; + } + } + + if (this.system.getTotalNumberOfMoles() == 0) { + this.system.setTotalNumberOfMoles(1); + } + } else { + /* + * // New attempt: + * + * // Have to init here to get correct MoleFractionsSum() this.system.init(0); + * + * // Annoying that MoleFractionsSum is not normalized. sum[0] = + * this.system.getMoleFractionsSum(); + */ + + double[] fraction = this.system.getMolarComposition(); + sum[0] = 0.0; + for (int comp = 0; comp < fraction.length; comp++) { + sum[0] = sum[0] + fraction[comp]; + } + + double range = 1e-8; + if (!((sum[0] >= 1 - range && sum[0] <= 1 + range) + || (sum[0] >= 100 - range && sum[0] <= 100 + range))) { + for (int t = 0; t < Spec1.size(); t++) { + calculationError[t] = "Sum of fractions must be approximately to 1 or 100, currently (" + + String.valueOf(sum[0]) + ")"; + if (sum[0] == 0.0) { + calculationError[t] = calculationError[t] + ". Have you called init(0)?"; + } } - // } + } } - // public void dewPointPressureFlash(){ - // constantDutyFlashInterface operation = new constantDutyPressureFlash(system); - // operation.setBeta((1-1e-7)); - // operation.run(); - // } - /** - *

- * calcPTphaseEnvelope. - *

- */ - public void calcPTphaseEnvelope() { - operation = new pTphaseEnvelope(system, fileName, (1.0 - 1e-10), 1.0, false); - // thisThread = new Thread(operation); - // thisThread.start(); - getOperation().run(); - } - - /** - *

- * calcPTphaseEnvelope. - *

- * - * @param bubfirst a boolean - * @param lowPres a double - */ - public void calcPTphaseEnvelope(boolean bubfirst, double lowPres) { - double phasefraction = 1.0 - 1e-10; - if (bubfirst) { - phasefraction = 1.0e-10; - } - operation = new pTphaseEnvelope(system, fileName, phasefraction, lowPres, bubfirst); - - // thisThread = new Thread(operation); - // thisThread.start(); - getOperation().run(); - } - - /** - *

- * calcPTphaseEnvelope. - *

- * - * @param lowPres a double - */ - public void calcPTphaseEnvelope(double lowPres) { - operation = new pTphaseEnvelope(system, fileName, 1e-10, lowPres, true); - // thisThread = new Thread(operation); - // thisThread.start(); - getOperation().run(); - } - - /** - *

- * calcPTphaseEnvelope. - *

- * - * @param bubfirst a boolean - */ - public void calcPTphaseEnvelope(boolean bubfirst) { - double phasefraction = 1.0 - 1e-10; - if (bubfirst) { - phasefraction = 1.0e-10; + for (int t = 0; t < Spec1.size(); t++) { + try { + if (flashType == null) { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException( + "ThermodynamicOperations", "propertyFlash", "FlashMode", "must be 1, 2 or 3")); } - operation = new pTphaseEnvelope(system, fileName, phasefraction, 1.0, bubfirst); - // thisThread = new Thread(operation); - // thisThread.start(); - if (!isRunAsThread()) { - getOperation().run(); - } else { - run(); - } - } + Double Sp1 = Spec1.get(t); + Double Sp2 = Spec2.get(t); - /** - *

- * getJfreeChart. - *

- * - * @return a {@link org.jfree.chart.JFreeChart} object - */ - public org.jfree.chart.JFreeChart getJfreeChart() { - return getOperation().getJFreeChart(""); - } - - /** - *

- * calcPTphaseEnvelopeNew. - *

- */ - public void calcPTphaseEnvelopeNew() { - // double phasefraction = 1.0 - 1e-10; - // operation = new pTphaseEnvelope(system, fileName, phasefraction, 1.0); - getOperation().run(); - } - - /** - *

- * calcPTphaseEnvelope. - *

- * - * @param lowPres a double - * @param phasefraction a double - */ - public void calcPTphaseEnvelope(double lowPres, double phasefraction) { - operation = new pTphaseEnvelope(system, fileName, phasefraction, lowPres, true); - - // thisThread = new Thread(operation); - // thisThread.start(); - getOperation().run(); - } - - /** - *

- * OLGApropTable. - *

- * - * @param minTemp a double - * @param maxTemp a double - * @param temperatureSteps a int - * @param minPres a double - * @param maxPres a double - * @param pressureSteps a int - * @param filename a {@link java.lang.String} object - * @param TABtype a int - */ - public void OLGApropTable(double minTemp, double maxTemp, int temperatureSteps, double minPres, - double maxPres, int pressureSteps, String filename, int TABtype) { - operation = new OLGApropertyTableGeneratorWaterStudents(system); - ((OLGApropertyTableGeneratorWaterStudents) operation).setFileName(filename); - ((OLGApropertyTableGeneratorWaterStudents) operation).setPressureRange(minPres, maxPres, - pressureSteps); - ((OLGApropertyTableGeneratorWaterStudents) operation).setTemperatureRange(minTemp, maxTemp, - temperatureSteps); - getOperation().run(); - } - - /** - *

- * OLGApropTablePH. - *

- * - * @param minEnthalpy a double - * @param maxEnthalpy a double - * @param enthalpySteps a int - * @param minPres a double - * @param maxPres a double - * @param pressureSteps a int - * @param filename a {@link java.lang.String} object - * @param TABtype a int - */ - public void OLGApropTablePH(double minEnthalpy, double maxEnthalpy, int enthalpySteps, - double minPres, double maxPres, int pressureSteps, String filename, int TABtype) { - operation = new OLGApropertyTableGeneratorWaterStudentsPH(system); - ((OLGApropertyTableGeneratorWaterStudentsPH) operation).setFileName(filename); - ((OLGApropertyTableGeneratorWaterStudentsPH) operation).setPressureRange(minPres, maxPres, - pressureSteps); - ((OLGApropertyTableGeneratorWaterStudentsPH) operation).setEnthalpyRange(minEnthalpy, - maxEnthalpy, enthalpySteps); - getOperation().run(); - } - - /** - *

- * calcPloadingCurve. - *

- */ - public void calcPloadingCurve() { - operation = new pLoadingCurve2(system); - // thisThread = new Thread(operation); - // thisThread.start(); - getOperation().run(); - } - - /** - *

- * calcHPTphaseEnvelope. - *

- */ - public void calcHPTphaseEnvelope() { - operation = new HPTphaseEnvelope(system); - // thisThread = new Thread(getOperation()); - // thisThread.start(); - operation.run(); - } - - /** - *

- * printToFile. - *

- * - * @param name a {@link java.lang.String} object - */ - public void printToFile(String name) { - getOperation().printToFile(name); - } - - // public double[] get(String name){ - // return operation.get(name); - // } - /** - *

- * getData. - *

- * - * @return an array of {@link double} objects - */ - public double[][] getData() { - return getOperation().getPoints(0); - } - - /** - *

- * getDataPoints. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[][] getDataPoints() { - String[][] str = new String[getOperation() - .getPoints(0).length][getOperation().getPoints(0)[0].length]; - for (int i = 0; i < getOperation().getPoints(0).length; i++) { - for (int j = 0; j < getOperation().getPoints(0)[0].length; j++) { - str[i][j] = Double.toString(getOperation().getPoints(0)[i][j]); - } - } - return str; - } - - /** - *

- * Getter for the field resultTable. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[][] getResultTable() { - return resultTable; - } - - /** - *

- * dewPointTemperatureCondensationRate. - *

- * - * @return a double - */ - public double dewPointTemperatureCondensationRate() { - double dT = 1.1; - try { - dewPointTemperatureFlash(); - } catch (Exception e) { - logger.error("error", e); - } - system.setTemperature(system.getTemperature() - dT); - TPflash(); - double condensationRate = system.getPhase(1).getMass() / (system.getVolume() * 1.0e-5); - try { - dewPointTemperatureFlash(); - } catch (Exception e) { - logger.error("error", e); - } - return condensationRate / dT; - } - - /** - *

- * displayResult. - *

- */ - public void displayResult() { - try { - getThermoOperationThread().join(); - } catch (Exception e) { - logger.error("Thread did not finish"); + if (Sp1 == null || Sp2 == null || Double.isNaN(Sp1) || Double.isNaN(Sp2)) { + calculationError[t] = "Sp1 or Sp2 is NaN"; + logger.info("Sp1 or Sp2 is NULL for datapoint {}", t); + continue; } - getOperation().displayResult(); - } - - /** - *

- * writeNetCDF. - *

- * - * @param name a {@link java.lang.String} object - */ - /* - public void writeNetCDF(String name) { - fileName = name; - getOperation().createNetCdfFile(name); - } - */ - - /** - *

- * Setter for the field resultTable. - *

- * - * @param resultTable an array of {@link java.lang.String} objects - */ - public void setResultTable(String[][] resultTable) { - this.resultTable = resultTable; - } - - /** - *

- * display. - *

- */ - public void display() { - JFrame dialog = new JFrame("System-Report"); - Container dialogContentPane = dialog.getContentPane(); - dialogContentPane.setLayout(new BorderLayout()); - - String[] names = new String[resultTable[0].length];// {"", "", ""}; - for (int i = 0; i < names.length; i++) { - names[i] = ""; - } - JTable Jtab = new JTable(resultTable, names); - JScrollPane scrollpane = new JScrollPane(Jtab); - dialogContentPane.add(scrollpane); - dialog.pack(); - dialog.setVisible(true); - } - - /** - *

- * get. - *

- * - * @param name a {@link java.lang.String} object - * @return an array of {@link double} objects - */ - public double[] get(String name) { - return getOperation().get(name); - } - - /** - *

- * Getter for the field operation. - *

- * - * @return the operation - */ - public OperationInterface getOperation() { - return operation; - } - - /** - *

- * isRunAsThread. - *

- * - * @return the runAsThread - */ - public boolean isRunAsThread() { - return runAsThread; - } - - /** - *

- * Setter for the field runAsThread. - *

- * - * @param runAsThread the runAsThread to set - */ - public void setRunAsThread(boolean runAsThread) { - this.runAsThread = runAsThread; - } - - /** - *

- * Getter for the field thermoOperationThread. - *

- * - * @return the thermoOperationThread - */ - public Thread getThermoOperationThread() { - return thermoOperationThread; - } - - /** - *

- * Setter for the field thermoOperationThread. - *

- * - * @param thermoOperationThread the thermoOperationThread to set - */ - public void setThermoOperationThread(Thread thermoOperationThread) { - this.thermoOperationThread = thermoOperationThread; - } - - /** - *

- * addData. - *

- * - * @param name a {@link java.lang.String} object - * @param data an array of {@link double} objects - */ - public void addData(String name, double[][] data) { - operation.addData(name, data); - } - - /** - *

- * calcIonComposition. - *

- * - * @param phaseNumber a int - */ - public void calcIonComposition(int phaseNumber) { - operation = new calcIonicComposition(system, phaseNumber); - getOperation().run(); - resultTable = getOperation().getResultTable(); - } - - /** - *

- * flash. - *

- * - * @param flashType a {@link java.lang.String} object - * @param spec1 a double - * @param spec2 a double - * @param unitSpec1 a {@link java.lang.String} object - * @param unitSpec2 a {@link java.lang.String} object - */ - public void flash(String flashType, double spec1, double spec2, String unitSpec1, - String unitSpec2) { - if (flashType.equals("TP")) { - system.setTemperature(spec1, unitSpec1); - system.setPressure(spec2, unitSpec2); - } else if (flashType.equals("TV")) { - system.setTemperature(spec1, unitSpec1); - TVflash(spec2, unitSpec2); - } else if (flashType.equals("PH")) { - system.setPressure(spec1, unitSpec1); - PHflash(spec2, unitSpec2); - } else if (flashType.equals("TS")) { - system.setTemperature(spec1, unitSpec1); - TSflash(spec2, unitSpec2); - } - } - /** - * Perform flashes and return System properties per set of Spec1 and Spec2. - * - * Possible to specify fractions for each value of Spec1. - * - * - * @param Spec1 Flash pressure in bar absolute. - * @param Spec2 Flash specification. Depends on FlashMode. Temperature in Kelvin, entalphy in - * J/mol or entropy in J/molK. - * @param FlashMode 1 - PT 2 - PH 3 - PS - * @param components Not yet in use. - * @param onlineFractions Specify fractions per sample instance or null to use static - * composition specified in system. - * @return Object CalculationResult object - */ - public CalculationResult propertyFlash(List Spec1, List Spec2, int FlashMode, - List components, List> onlineFractions) { - - Double[][] fluidProperties = new Double[Spec1.size()][SystemProperties.nCols]; - String[] calculationError = new String[Spec1.size()]; - - Double[] sum = new Double[Spec1.size()]; - - if (onlineFractions != null) { - for (int t = 0; t < sum.length; t++) { - sum[t] = 0.0; - for (int comp = 0; comp < onlineFractions.size(); comp++) { - sum[t] = sum[t] + onlineFractions.get(comp).get(t).doubleValue(); - } - } - - if (this.system.getNumberOfMoles() == 0) { - this.system.setTotalNumberOfMoles(1); - } - } - else { - double[] fraction = this.system.getMolarComposition(); - sum[0] = 0.0; - for (int comp = 0; comp < fraction.length; comp++) { - sum[0] = sum[0] + fraction[comp]; - } + // Skip if sum is not similar to 100% + if (calculationError[t] != null) { + logger.info("{}", calculationError[t]); + continue; } - for (int t = 0; t < Spec1.size(); t++) { - try { - Double Sp1 = Spec1.get(t); - Double Sp2 = Spec2.get(t); - - if (Sp1 == null || Sp2 == null || Double.isNaN(Sp1) || Double.isNaN(Sp2)) { - calculationError[t] = "Sp1 or Sp2 is NaN"; - logger.info("Sp1 or Sp2 is NULL for datapoint {}", t); - continue; - } - - if (onlineFractions != null) { - double range = 5; - if (!((sum[t] >= 1 - range / 100 && sum[t] <= 1 + range / 100) - || (sum[t] >= 100 - range && sum[t] <= 100 + range))) { - calculationError[t] = - "Sum of fractions must be approximately 1 or 100, currently (" - + String.valueOf(sum[t]) + ")"; - logger.info("Online fraction does not sum to approximately 1 or 100 for datapoint {}", t); - continue; - } else { - // Remaining fractions will be set to 0.0 - double[] fraction = new double[this.system.getNumberOfComponents()]; - - for (int comp = 0; comp < onlineFractions.size(); comp++) { - fraction[comp] = onlineFractions.get(comp).get(t).doubleValue(); - } - - this.system.setMolarComposition(fraction); - this.system.init(0); - } - } - else { - double range = 1e-8; - if (!((sum[0] >= 1 - range && sum[0] <= 1 + range) - || (sum[0] >= 100 - range && sum[0] <= 100 + range))) { - calculationError[t] = - "Sum of fractions must be equal to 1 or 100, currently (" - + String.valueOf(sum[t]) + ")"; - logger.info("Sum of fractions must be equal to 1 or 100 for datapoint {}", t); - continue; - } - } - - this.system.setPressure(Sp1); - if (FlashMode == 1) { - this.system.setTemperature(Sp2); - this.TPflash(); - } else if (FlashMode == 2) { - this.PHflash(Sp2, "J/mol"); - } else if (FlashMode == 3) { - this.PSflash(Sp2, "J/molK"); - } else { - throw new RuntimeException(new neqsim.util.exception.InvalidInputException( - "ThermodynamicOperations", "propertyFlash", "mode", "must be 1, 2 or 3")); - } - this.system.init(2); - this.system.initPhysicalProperties(); - - fluidProperties[t] = this.system.getProperties().getValues(); - } catch (Exception ex) { - calculationError[t] = ex.getMessage(); - logger.error(ex.getMessage()); + if (hasOnlineFractions) { + // Assure that fraction is inserted for the correct component (in case of + // mismatch of + // component input and fluid component list) + double[] fraction = new double[this.system.getNumberOfComponents()]; + // For all components defined in system + for (int compIndex = 0; compIndex < fraction.length; compIndex++) { + // Loop all input component names / fractions + for (int index = 0; index < components.size(); index++) { + if (systemComponents[compIndex] == ComponentInterface + .getComponentNameFromAlias(components.get(index))) { + fraction[compIndex] = onlineFractions.get(index).get(t).doubleValue(); + break; + } } - } - - return new CalculationResult(fluidProperties, calculationError); - } + } + + this.system.setMolarComposition(fraction); + this.system.init(0); + } + + this.system.setPressure(Sp1); + switch (flashType) { + case PT: + this.system.setTemperature(Sp2); + this.TPflash(); + break; + case PH: + this.PHflash(Sp2, "J/mol"); + break; + case PS: + this.PSflash(Sp2, "J/molK"); + break; + default: + throw new RuntimeException(new neqsim.util.exception.InvalidInputException( + "ThermodynamicOperations", "propertyFlash", "FlashMode", "must be 1, 2 or 3")); + } + this.system.init(2); + this.system.initPhysicalProperties(); + + fluidProperties[t] = this.system.getProperties().getValues(); + } catch (Exception ex) { + calculationError[t] = ex.getMessage(); + logger.warn(calculationError[t]); + } + } + + return new CalculationResult(fluidProperties, calculationError); + } + + /** + * Definitions of flash types. + */ + public static enum FlashType { + TP, PT, PH, PS, TV, TS + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/chemicalEquilibrium/ChemicalEquilibrium.java b/src/main/java/neqsim/thermodynamicOperations/chemicalEquilibrium/ChemicalEquilibrium.java index 00b5d4168d..8bdf05f150 100644 --- a/src/main/java/neqsim/thermodynamicOperations/chemicalEquilibrium/ChemicalEquilibrium.java +++ b/src/main/java/neqsim/thermodynamicOperations/chemicalEquilibrium/ChemicalEquilibrium.java @@ -3,6 +3,7 @@ * * Created on 5. mai 2002, 20:53 */ + package neqsim.thermodynamicOperations.chemicalEquilibrium; import org.apache.logging.log4j.LogManager; @@ -19,90 +20,82 @@ * @version $Id: $Id */ public class ChemicalEquilibrium extends BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(ChemicalEquilibrium.class); - - SystemInterface system; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(ChemicalEquilibrium.class); - public ChemicalEquilibrium() {} + SystemInterface system; - /** - *

- * Constructor for ChemicalEquilibrium. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public ChemicalEquilibrium(SystemInterface system) { - this.system = system; - } + /** + *

+ * Constructor for ChemicalEquilibrium. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public ChemicalEquilibrium(SystemInterface system) { + this.system = system; + } - /** {@inheritDoc} */ - @Override - public void run() { - double chemdev = 0; - int iter = 1; - if (system.isChemicalSystem()) { - double oldHeat = system.getChemicalReactionOperations().getReactionList() - .reacHeat(system.getPhase(1), "HCO3-"); - do { - iter++; - for (int phase = 1; phase < system.getNumberOfPhases(); phase++) { - chemdev = 0.0; - double xchem[] = new double[system.getPhases()[phase].getNumberOfComponents()]; + /** {@inheritDoc} */ + @Override + public void run() { + double chemdev = 0; + int iter = 1; + if (system.isChemicalSystem()) { + double oldHeat = system.getChemicalReactionOperations().getReactionList() + .reacHeat(system.getPhase(1), "HCO3-"); + do { + iter++; + for (int phase = 1; phase < system.getNumberOfPhases(); phase++) { + chemdev = 0.0; + double xchem[] = new double[system.getPhases()[phase].getNumberOfComponents()]; - for (int i = 0; i < system.getPhases()[phase].getNumberOfComponents(); i++) { - xchem[i] = system.getPhases()[phase].getComponents()[i].getx(); - } + for (int i = 0; i < system.getPhases()[phase].getNumberOfComponents(); i++) { + xchem[i] = system.getPhases()[phase].getComponents()[i].getx(); + } - system.init(1); - system.getChemicalReactionOperations().solveChemEq(phase); + system.init(1); + system.getChemicalReactionOperations().solveChemEq(phase); - for (int i = 0; i < system.getPhases()[phase].getNumberOfComponents(); i++) { - chemdev += Math.abs( - xchem[i] - system.getPhases()[phase].getComponents()[i].getx()); - } - } - } while (Math.abs(chemdev) > 1e-4 && iter < 100); - double newHeat = system.getChemicalReactionOperations().getReactionList() - .reacHeat(system.getPhase(1), "HCO3-"); - system.getChemicalReactionOperations().setDeltaReactionHeat(newHeat - oldHeat); - } - if (iter > 50) { - logger.info("iter : " + iter + " in chemicalequilibrium"); + for (int i = 0; i < system.getPhases()[phase].getNumberOfComponents(); i++) { + chemdev += Math.abs(xchem[i] - system.getPhases()[phase].getComponents()[i].getx()); + } } + } while (Math.abs(chemdev) > 1e-4 && iter < 100); + double newHeat = system.getChemicalReactionOperations().getReactionList() + .reacHeat(system.getPhase(1), "HCO3-"); + system.getChemicalReactionOperations().setDeltaReactionHeat(newHeat - oldHeat); } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - system.display(); + if (iter > 50) { + logger.info("iter : " + iter + " in chemicalequilibrium"); } + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void displayResult() { + system.display(); + } - /** {@inheritDoc} */ - /* - @Override - public void createNetCdfFile(String name) {} -*/ - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return null; - } + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return null; + } - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/CalcIonicComposition.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/CalcIonicComposition.java new file mode 100644 index 0000000000..5d36cd6522 --- /dev/null +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/CalcIonicComposition.java @@ -0,0 +1,97 @@ +/* + * CalcIonicComposition.java + * + * Created on 8. mars 2001, 10:56 + */ + +package neqsim.thermodynamicOperations.flashOps; + +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.thermo.system.SystemInterface; + +/** + *

+ * CalcIonicComposition class. + *

+ * + * @author even solbraa + * @version $Id: $Id + */ +public class CalcIonicComposition extends Flash { + private static final long serialVersionUID = 1000; + Logger logger = LogManager.getLogger(CalcIonicComposition.class); + + int phaseNumber; + String[][] resultTable = null; + + /** + *

+ * Constructor for CalcIonicComposition. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param phase a int + */ + public CalcIonicComposition(SystemInterface system, int phase) { + this.system = system; + phaseNumber = phase; + } + + /** {@inheritDoc} */ + @Override + public void run() { + resultTable = new String[system.getPhase(0).getNumberOfComponents() + 2][4]; + resultTable[0][0] = "Component"; + resultTable[0][1] = "mmol/kgSolvent"; + resultTable[0][2] = "mg/kgSolvent"; + resultTable[0][3] = "Act.Coef"; + DecimalFormatSymbols symbols = new DecimalFormatSymbols(); + DecimalFormat nf = new DecimalFormat(); + symbols.setDecimalSeparator('.'); + nf.setDecimalFormatSymbols(symbols); + nf.setMaximumFractionDigits(5); + nf.applyPattern("#.#####E0"); + int ionNumber = 0; + for (int i = 0; i < system.getPhase(phaseNumber).getNumberOfComponents(); i++) { + // if (system.getPhase(phaseNumber).getComponent(i).isIsIon()) { + resultTable[ionNumber + 1][0] = + system.getPhase(phaseNumber).getComponent(i).getComponentName(); + resultTable[ionNumber + 1][1] = Double + .valueOf(nf.format(system.getPhase(phaseNumber).getComponent(i).getNumberOfMolesInPhase() + / (system.getPhase(phaseNumber).getComponent("water").getNumberOfMolesInPhase() + * system.getPhase(phaseNumber).getComponent("water").getMolarMass()) + * 1000)) + .toString(); + resultTable[ionNumber + 1][2] = Double + .valueOf(nf.format(system.getPhase(phaseNumber).getComponent(i).getNumberOfMolesInPhase() + * system.getPhase(phaseNumber).getComponent(i).getMolarMass() + / (system.getPhase(phaseNumber).getComponent("water").getNumberOfMolesInPhase() + * system.getPhase(phaseNumber).getComponent("water").getMolarMass()) + * 1e6)) + .toString(); + resultTable[ionNumber + 1][3] = + Double + .valueOf(nf.format(system.getPhase(phaseNumber).getActivityCoefficient(i, + system.getPhase(phaseNumber).getComponent("water").getComponentNumber()))) + .toString(); + + ionNumber++; + // } + } + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return resultTable; + } +} diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/CriticalPointFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/CriticalPointFlash.java index 6a63ff9c81..ae613c23cb 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/CriticalPointFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/CriticalPointFlash.java @@ -14,231 +14,233 @@ * @version $Id: $Id */ public class CriticalPointFlash extends Flash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(CriticalPointFlash.class); - - SimpleMatrix Mmatrix = null; - SimpleMatrix HeidemannMmatrix = null; - SimpleMatrix Nmatrix = null; - SimpleMatrix fmatrix = null; - int numberOfComponents; - double Vc0, Tc0; - // SystemInterface clonedsystem; - - /** - *

- * Constructor for CriticalPointFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public CriticalPointFlash(SystemInterface system) { - this.system = system; - // clonedsystem = system.clone(); - numberOfComponents = system.getPhase(0).getNumberOfComponents(); - Mmatrix = new SimpleMatrix(numberOfComponents, numberOfComponents); - Nmatrix = new SimpleMatrix(numberOfComponents, numberOfComponents); - HeidemannMmatrix = new SimpleMatrix(numberOfComponents, numberOfComponents); - fmatrix = new SimpleMatrix(numberOfComponents, 1); - } - - /** - *

- * calcMmatrixHeidemann. - *

- */ - public void calcMmatrixHeidemann() { - Tc0 = system.getPhase(0).getPseudoCriticalTemperature(); - Vc0 = 4 * system.getPhase(0).getB() / system.getPhase(0).getNumberOfMolesInPhase(); - - system.setUseTVasIndependentVariables(true); - system.setNumberOfPhases(1); - system.setTemperature(Tc0); - system.getPhase(0).setTotalVolume(Vc0 * system.getTotalNumberOfMoles()); - system.init(3); - double dt = 1.0; - - for (int iii = 0; iii < 100; iii++) { - system.setTemperature(system.getTemperature() + dt); - system.init(3); - // system.getPressure(); - - double dij = 0; - double tempJ = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - - tempJ = (dij / system.getPhase(0).getComponent(i).getNumberOfMolesInPhase() - - 1.0 / system.getPhase(0).getNumberOfMolesInPhase() - + (system.getPhase(0).getComponent(i).getdfugdn(j) - + system.getPhase(0).getComponent(i).getdfugdp() - * system.getPhase(0).getComponent(j).getVoli() - * system.getPhase(0).getdPdVTn() * -1)); - // tempJ = ((PhaseSrkEos)system.getPhase(0)).dFdNdN(i,j); - - HeidemannMmatrix.set(i, j, tempJ); - // Math.sqrt(system.getPhase(0).getComponent(i).getz() * - // system.getPhase(0).getComponent(j).getz()) * - } - } - HeidemannMmatrix.print(); - logger.info("Q det " + HeidemannMmatrix.determinant() + " temperature " - + system.getTemperature() + " pressure " + system.getPressure()); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(CriticalPointFlash.class); + + SimpleMatrix Mmatrix = null; + SimpleMatrix HeidemannMmatrix = null; + SimpleMatrix Nmatrix = null; + SimpleMatrix fmatrix = null; + int numberOfComponents; + double Vc0; + double Tc0; + + /** + *

+ * Constructor for CriticalPointFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public CriticalPointFlash(SystemInterface system) { + this.system = system; + // clonedsystem = system.clone(); + numberOfComponents = system.getPhase(0).getNumberOfComponents(); + Mmatrix = new SimpleMatrix(numberOfComponents, numberOfComponents); + Nmatrix = new SimpleMatrix(numberOfComponents, numberOfComponents); + HeidemannMmatrix = new SimpleMatrix(numberOfComponents, numberOfComponents); + fmatrix = new SimpleMatrix(numberOfComponents, 1); + } + + /** + *

+ * calcMmatrixHeidemann. + *

+ */ + public void calcMmatrixHeidemann() { + Tc0 = system.getPhase(0).getPseudoCriticalTemperature(); + Vc0 = 4 * system.getPhase(0).getB() / system.getPhase(0).getNumberOfMolesInPhase(); + + system.setUseTVasIndependentVariables(true); + system.setNumberOfPhases(1); + system.setTemperature(Tc0); + system.getPhase(0).setTotalVolume(Vc0 * system.getTotalNumberOfMoles()); + system.init(3); + double dt = 1.0; + + for (int iii = 0; iii < 100; iii++) { + system.setTemperature(system.getTemperature() + dt); + system.init(3); + // system.getPressure(); + + double dij = 0; + double tempJ = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + + tempJ = (dij / system.getPhase(0).getComponent(i).getNumberOfMolesInPhase() + - 1.0 / system.getPhase(0).getNumberOfMolesInPhase() + + (system.getPhase(0).getComponent(i).getdfugdn(j) + + system.getPhase(0).getComponent(i).getdfugdp() + * system.getPhase(0).getComponent(j).getVoli() + * system.getPhase(0).getdPdVTn() * -1)); + // tempJ = ((PhaseSrkEos)system.getPhase(0)).dFdNdN(i,j); + + HeidemannMmatrix.set(i, j, tempJ); + // Math.sqrt(system.getPhase(0).getComponent(i).getz() * + // system.getPhase(0).getComponent(j).getz()) * } + } + HeidemannMmatrix.print(); + logger.info("Q det " + HeidemannMmatrix.determinant() + " temperature " + + system.getTemperature() + " pressure " + system.getPressure()); } - - /** - *

- * calcMmatrix. - *

- */ - public void calcMmatrix() { - double dij = 0; - double tempJ = 0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - - tempJ = (dij / system.getPhase(0).getComponent(i).getNumberOfMolesInPhase() - - 1.0 / system.getPhase(0).getNumberOfMolesInPhase() - + (system.getPhase(0).getComponent(i).getdfugdn(j) - + system.getPhase(0).getComponent(i).getdfugdp() - * system.getPhase(0).getComponent(j).getVoli() - * system.getPhase(0).getdPdVTn() * -1.0)); - - Mmatrix.set(i, j, Math.sqrt(system.getPhase(0).getComponent(i).getz() - * system.getPhase(0).getComponent(j).getz()) * tempJ); - // Math.sqrt(system.getPhase(0).getComponent(i).getz() * - // system.getPhase(0).getComponent(j).getz()) * - } - } + } + + /** + *

+ * calcMmatrix. + *

+ */ + public void calcMmatrix() { + double dij = 0; + double tempJ = 0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + + tempJ = (dij / system.getPhase(0).getComponent(i).getNumberOfMolesInPhase() + - 1.0 / system.getPhase(0).getNumberOfMolesInPhase() + + (system.getPhase(0).getComponent(i).getdfugdn(j) + + system.getPhase(0).getComponent(i).getdfugdp() + * system.getPhase(0).getComponent(j).getVoli() * system.getPhase(0).getdPdVTn() + * -1.0)); + + Mmatrix.set(i, j, Math.sqrt( + system.getPhase(0).getComponent(i).getz() * system.getPhase(0).getComponent(j).getz()) + * tempJ); + // Math.sqrt(system.getPhase(0).getComponent(i).getz() * + // system.getPhase(0).getComponent(j).getz()) * + } + } + } + + /** + *

+ * calcdpd. + *

+ * + * @return a double + */ + public double calcdpd() { + double[] oldz = system.getMolarRate(); + i = Mmatrix.eig().getNumberOfEigenvalues(); + SimpleMatrix eigenVector = Mmatrix.eig().getEigenVector(0); + + double[] newz1 = new double[numberOfComponents]; + double[] newz2 = new double[numberOfComponents]; + double sperturb = 1e-3; + for (int ii = 0; ii < numberOfComponents; ii++) { + newz1[ii] = system.getPhase(0).getComponent(ii).getz() + + sperturb * eigenVector.get(ii) * Math.sqrt(system.getPhase(0).getComponent(ii).getz()); + newz2[ii] = system.getPhase(0).getComponent(ii).getz() + - sperturb * eigenVector.get(ii) * Math.sqrt(system.getPhase(0).getComponent(ii).getz()); } - /** - *

- * calcdpd. - *

- * - * @return a double - */ - public double calcdpd() { - double[] oldz = system.getMolarRate(); - i = Mmatrix.eig().getNumberOfEigenvalues(); - SimpleMatrix eigenVector = Mmatrix.eig().getEigenVector(0); - - double[] newz1 = new double[numberOfComponents]; - double[] newz2 = new double[numberOfComponents]; - double sperturb = 1e-3; - for (int ii = 0; ii < numberOfComponents; ii++) { - newz1[ii] = system.getPhase(0).getComponent(ii).getz() + sperturb * eigenVector.get(ii) - * Math.sqrt(system.getPhase(0).getComponent(ii).getz()); - newz2[ii] = system.getPhase(0).getComponent(ii).getz() - sperturb * eigenVector.get(ii) - * Math.sqrt(system.getPhase(0).getComponent(ii).getz()); - } - - system.setMolarComposition(newz1); - system.init(3); - calcMmatrix(); - // eigenVector = Mmatrix.eig().getEigenVector(0); - SimpleMatrix evalMatrix = eigenVector.transpose().mult(Mmatrix).mult(eigenVector); - double perturb1 = evalMatrix.get(0, 0); - - system.setMolarComposition(newz2); + system.setMolarComposition(newz1); + system.init(3); + calcMmatrix(); + // eigenVector = Mmatrix.eig().getEigenVector(0); + SimpleMatrix evalMatrix = eigenVector.transpose().mult(Mmatrix).mult(eigenVector); + double perturb1 = evalMatrix.get(0, 0); + + system.setMolarComposition(newz2); + system.init(3); + calcMmatrix(); + // eigenVector = Mmatrix.eig().getEigenVector(0); + evalMatrix = eigenVector.transpose().mult(Mmatrix).mult(eigenVector); + double perturb2 = evalMatrix.get(0, 0); + + system.setMolarComposition(oldz); + system.init(3); + + double dtpddsss = (perturb1 + perturb2) / (sperturb * sperturb); + return dtpddsss; + } + + /** {@inheritDoc} */ + @Override + public void run() { + system.init(0); + system.setTotalNumberOfMoles(1.0); + system.init(3); + + calcMmatrixHeidemann(); + system.setNumberOfPhases(1); + + Tc0 = system.getPhase(0).getPseudoCriticalTemperature(); + Vc0 = 4 * system.getPhase(0).getB() / system.getPhase(0).getNumberOfMolesInPhase(); + + system.setUseTVasIndependentVariables(true); + system.setNumberOfPhases(1); + system.setTemperature(Tc0); + system.getPhase(0).setTotalVolume(Vc0 * system.getTotalNumberOfMoles()); + system.init(3); + system.init(3); + // system.display(); + + for (int k = 0; k < 13; k++) { + double detM; + double olddetM; + double ddetdT; + double dT = 0.1; + calcMmatrix(); + // int i = Mmatrix.eig().getNumberOfEigenvalues(); + SimpleMatrix eigenVector = Mmatrix.eig().getEigenVector(0); + SimpleMatrix evalMatrix = eigenVector.transpose().mult(Mmatrix).mult(eigenVector); + detM = Mmatrix.determinant(); // evalMatrix.get(0, 0); + int iter = 0; + system.setTemperature(system.getTemperature() + dT); + + // double dTOld = 111110; + + do { system.init(3); + iter++; + olddetM = detM; calcMmatrix(); - // eigenVector = Mmatrix.eig().getEigenVector(0); + i = Mmatrix.eig().getNumberOfEigenvalues(); + eigenVector = Mmatrix.eig().getEigenVector(0); evalMatrix = eigenVector.transpose().mult(Mmatrix).mult(eigenVector); - double perturb2 = evalMatrix.get(0, 0); - - system.setMolarComposition(oldz); - system.init(3); - - double dtpddsss = (perturb1 + perturb2) / (sperturb * sperturb); - return dtpddsss; - } - - /** {@inheritDoc} */ - @Override - public void run() { - system.init(0); - system.setTotalNumberOfMoles(1.0); - system.init(3); - - calcMmatrixHeidemann(); - system.setNumberOfPhases(1); - - Tc0 = system.getPhase(0).getPseudoCriticalTemperature(); - Vc0 = 4 * system.getPhase(0).getB() / system.getPhase(0).getNumberOfMolesInPhase(); - - system.setUseTVasIndependentVariables(true); - system.setNumberOfPhases(1); - system.setTemperature(Tc0); - system.getPhase(0).setTotalVolume(Vc0 * system.getTotalNumberOfMoles()); - system.init(3); - system.init(3); - // system.display(); - - for (int k = 0; k < 13; k++) { - double detM, olddetM, ddetdT; - double dT = 0.1; - calcMmatrix(); - // int i = Mmatrix.eig().getNumberOfEigenvalues(); - SimpleMatrix eigenVector = Mmatrix.eig().getEigenVector(0); - SimpleMatrix evalMatrix = eigenVector.transpose().mult(Mmatrix).mult(eigenVector); - detM = Mmatrix.determinant();// evalMatrix.get(0, 0); - int iter = 0; - system.setTemperature(system.getTemperature() + dT); - - // double dTOld = 111110; - - do { - system.init(3); - iter++; - olddetM = detM; - calcMmatrix(); - i = Mmatrix.eig().getNumberOfEigenvalues(); - eigenVector = Mmatrix.eig().getEigenVector(0); - evalMatrix = eigenVector.transpose().mult(Mmatrix).mult(eigenVector); - detM = Mmatrix.determinant();// evalMatrix.get(0, 0); - ddetdT = (detM - olddetM) / dT; - // dTOld = dT; - dT = -detM / ddetdT; - if (Math.abs(dT) > 5.0) { - // dT = Math.signum(dT) * 5.0; - } - double oldTemp = system.getTemperature(); - system.setTemperature(oldTemp + dT); - logger.info("Temperature " + oldTemp + " dT " + dT + " evalMatrix " - + evalMatrix.get(0, 0)); - } while (Math.abs(dT) > 1e-8 && iter < 112);// && (Math.abs(dT) < Math.abs(dTOld) || - // iter < 3)); - - double dVc = Vc0 / 100.0; - double ddetdV, oldVal; - system.init(3); - double valstart = calcdpd(); - iter = 0; - system.getPhase(0).setTotalVolume(system.getPhase(0).getTotalVolume() + dVc); - double dVOld = 1111110; - do { - oldVal = valstart; - system.init(3); - iter++; - valstart = calcdpd(); - ddetdV = (valstart - oldVal) / dVc; - dVOld = dVc; - dVc = -valstart / ddetdV; - system.getPhase(0).setTotalVolume(system.getPhase(0).getVolume() + 0.5 * dVc); - logger.info("Volume " + system.getPhase(0).getVolume() + " dVc " + dVc + " tddpp " - + valstart + " pressure " + system.getPressure()); - } while (Math.abs(dVc) > 1e-5 && iter < 112 - && (Math.abs(dVc) < Math.abs(dVOld) || iter < 3)); + detM = Mmatrix.determinant(); // evalMatrix.get(0, 0); + ddetdT = (detM - olddetM) / dT; + // dTOld = dT; + dT = -detM / ddetdT; + if (Math.abs(dT) > 5.0) { + // dT = Math.signum(dT) * 5.0; } - system.display(); - // solve(fmatrix); - // dnMatrix.print(10, 10); - // system.display(); - // clonedsystem.display(); + double oldTemp = system.getTemperature(); + system.setTemperature(oldTemp + dT); + logger.info("Temperature " + oldTemp + " dT " + dT + " evalMatrix " + evalMatrix.get(0, 0)); + } while (Math.abs(dT) > 1e-8 && iter < 112); // && (Math.abs(dT) < Math.abs(dTOld) || + // iter < 3)); + + double dVc = Vc0 / 100.0; + double ddetdV; + double oldVal; + system.init(3); + double valstart = calcdpd(); + iter = 0; + system.getPhase(0).setTotalVolume(system.getPhase(0).getTotalVolume() + dVc); + double dVOld = 1111110; + do { + oldVal = valstart; + system.init(3); + iter++; + valstart = calcdpd(); + ddetdV = (valstart - oldVal) / dVc; + dVOld = dVc; + dVc = -valstart / ddetdV; + system.getPhase(0).setTotalVolume(system.getPhase(0).getVolume() + 0.5 * dVc); + logger.info("Volume " + system.getPhase(0).getVolume() + " dVc " + dVc + " tddpp " + + valstart + " pressure " + system.getPressure()); + } while (Math.abs(dVc) > 1e-5 && iter < 112 && (Math.abs(dVc) < Math.abs(dVOld) || iter < 3)); } + system.display(); + // solve(fmatrix); + // dnMatrix.print(10, 10); + // system.display(); + // clonedsystem.display(); + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/Flash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/Flash.java index 9c035f516e..76f7cc08f8 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/Flash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/Flash.java @@ -3,476 +3,487 @@ * * Created on 2. oktober 2000, 22:22 */ + package neqsim.thermodynamicOperations.flashOps; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import Jama.Matrix; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.BaseOperation; /** + * Abstract base class for all flash classes. + * * @author Even Solbraa */ -abstract class Flash extends BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(Flash.class); - - SystemInterface system; - SystemInterface minimumGibbsEnergySystem; - - public double[] minGibsPhaseLogZ; - public double[] minGibsLogFugCoef; - int i = 0, j = 0, iterations = 0, maxNumberOfIterations = 100; - double gibbsEnergy = 0, gibbsEnergyOld = 0; - double Kold = 0, deviation = 0, g0 = 0, g1 = 0; - double lnOldOldOldK[], lnOldOldK[], lnK[], lnOldK[]; - double oldoldDeltalnK[], oldDeltalnK[], deltalnK[]; - double tm[]; - int lowestGibbsEnergyPhase = 0; - sysNewtonRhapsonTPflash secondOrderSolver; - protected boolean solidCheck = false, stabilityCheck = false; - boolean findLowesGibsPhaseIsChecked = false; - - /** - *

- * Constructor for Flash. - *

- */ - public Flash() {} - - /** - *

- * findLowestGibbsEnergyPhase. - *

- * - * @return a int - */ - public int findLowestGibbsEnergyPhase() { - if (!findLowesGibsPhaseIsChecked) { - minimumGibbsEnergySystem = system.clone(); - minimumGibbsEnergySystem.init(0); - minimumGibbsEnergySystem.init(1); - if ((minimumGibbsEnergySystem.getPhase(0).getGibbsEnergy() - * (1.0 - Math.signum(minimumGibbsEnergySystem.getPhase(0).getGibbsEnergy()) - * 1e-8)) < minimumGibbsEnergySystem.getPhase(1).getGibbsEnergy()) { - lowestGibbsEnergyPhase = 0; - } else { - lowestGibbsEnergyPhase = 1; - } - findLowesGibsPhaseIsChecked = true; - } - return lowestGibbsEnergyPhase; +public abstract class Flash extends BaseOperation { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(Flash.class); + + SystemInterface system; + SystemInterface minimumGibbsEnergySystem; + + public double[] minGibsPhaseLogZ; + public double[] minGibsLogFugCoef; + int i = 0; + int j = 0; + int iterations = 0; + int maxNumberOfIterations = 100; + double gibbsEnergy = 0; + double gibbsEnergyOld = 0; + double Kold = 0; + double deviation = 0; + double g0 = 0; + double g1 = 0; + double[] lnOldOldOldK; + double[] lnOldOldK; + double[] lnK; + double[] lnOldK; + double[] oldoldDeltalnK; + double[] oldDeltalnK; + double[] deltalnK; + double[] tm; + int lowestGibbsEnergyPhase = 0; + sysNewtonRhapsonTPflash secondOrderSolver; + /** Set true to do solid phase check and calculations */ + protected boolean solidCheck = false; + protected boolean stabilityCheck = false; + protected boolean findLowestGibbsPhaseIsChecked = false; + + /** + *

+ * findLowestGibbsEnergyPhase. + *

+ * + * @return a int + */ + public int findLowestGibbsEnergyPhase() { + if (!findLowestGibbsPhaseIsChecked) { + minimumGibbsEnergySystem = system.clone(); + minimumGibbsEnergySystem.init(0); + minimumGibbsEnergySystem.init(1); + if ((minimumGibbsEnergySystem.getPhase(0).getGibbsEnergy() + * (1.0 - Math.signum(minimumGibbsEnergySystem.getPhase(0).getGibbsEnergy()) + * 1e-8)) < minimumGibbsEnergySystem.getPhase(1).getGibbsEnergy()) { + lowestGibbsEnergyPhase = 0; + } else { + lowestGibbsEnergyPhase = 1; + } + findLowestGibbsPhaseIsChecked = true; + } + return lowestGibbsEnergyPhase; + } + + /** + *

+ * stabilityAnalysis. + *

+ * + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public void stabilityAnalysis() throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double[] logWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] deltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldoldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[][] Wi = new double[2][system.getPhases()[0].getNumberOfComponents()]; + + boolean secondOrderStabilityAnalysis = false; + double[] oldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldoldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] d = new double[system.getPhases()[0].getNumberOfComponents()]; + double[][] x = new double[2][system.getPhases()[0].getNumberOfComponents()]; + double[] error = new double[2]; + tm = new double[system.getPhase(0).getNumberOfComponents()]; + double[] alpha = null; + Matrix f = new Matrix(system.getPhases()[0].getNumberOfComponents(), 1); + Matrix df = null; + int maxiterations = 50; + double fNorm = 1.0e10; + double fNormOld = 0.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + d[i] = minGibsPhaseLogZ[i] + minGibsLogFugCoef[i]; } - /** - *

- * stabilityAnalysis. - *

- * - * @throws neqsim.util.exception.IsNaNException if any. - * @throws neqsim.util.exception.TooManyIterationsException if any. - */ - public void stabilityAnalysis() throws neqsim.util.exception.IsNaNException, - neqsim.util.exception.TooManyIterationsException { - double[] logWi = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] deltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] oldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] oldoldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; - double[][] Wi = new double[2][system.getPhases()[0].getNumberOfComponents()]; - double[] sumw = new double[2]; - boolean secondOrderStabilityAnalysis = false; - double[] oldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] oldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] oldoldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] d = new double[system.getPhases()[0].getNumberOfComponents()]; - double[][] x = new double[2][system.getPhases()[0].getNumberOfComponents()]; - double[] error = new double[2]; - tm = new double[system.getPhase(0).getNumberOfComponents()]; - double[] alpha = null; - Matrix f = new Matrix(system.getPhases()[0].getNumberOfComponents(), 1); - Matrix df = null; - int maxiterations = 50; - double fNorm = 1.0e10, fNormOld = 0.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - d[i] = minGibsPhaseLogZ[i] + minGibsLogFugCoef[i]; - } - - SystemInterface clonedSystem = minimumGibbsEnergySystem; - clonedSystem.setTotalNumberOfMoles(1.0); - sumw[1] = 0.0; - sumw[0] = 0.0; + SystemInterface clonedSystem = minimumGibbsEnergySystem; + clonedSystem.setTotalNumberOfMoles(1.0); + + double[] sumw = new double[2]; + sumw[1] = 0.0; + sumw[0] = 0.0; + for (int i = 0; i < clonedSystem.getPhase(0).getNumberOfComponents(); i++) { + sumw[1] += clonedSystem.getPhase(0).getComponent(i).getz() + / clonedSystem.getPhase(0).getComponent(i).getK(); + sumw[0] += clonedSystem.getPhase(0).getComponent(i).getK() + * clonedSystem.getPhase(0).getComponent(i).getz(); + } - for (int i = 0; i < clonedSystem.getPhase(0).getNumberOfComponents(); i++) { - sumw[1] += clonedSystem.getPhase(0).getComponent(i).getz() - / clonedSystem.getPhase(0).getComponent(i).getK(); - sumw[0] += clonedSystem.getPhase(0).getComponent(i).getK() - * clonedSystem.getPhase(0).getComponent(i).getz(); - } + // System.out.println("sumw0 " + sumw[0]); + // System.out.println("sumw1 " + sumw[1]); + + int start = 0; + int end = 1; // clonedSystem.getNumberOfPhases()-1; + int mult = 1; + // if (sumw[1] > sumw[0]) { + if (lowestGibbsEnergyPhase == 0) { + start = end; + end = 0; + mult = -1; + } - // System.out.println("sumw0 " + sumw[0]); - // System.out.println("sumw1 " + sumw[1]); - - int start = 0; - int end = 1;// clonedSystem.getNumberOfPhases()-1; - int mult = 1; - // if (sumw[1] > sumw[0]) { - if (lowestGibbsEnergyPhase == 0) { - start = end; - end = 0; - mult = -1; - } + for (int i = 0; i < clonedSystem.getPhase(0).getNumberOfComponents(); i++) { + clonedSystem.getPhase(1).getComponent(i).setx(clonedSystem.getPhase(0).getComponent(i).getz() + / clonedSystem.getPhase(0).getComponent(i).getK() / sumw[1]); + clonedSystem.getPhase(0).getComponent(i).setx(clonedSystem.getPhase(0).getComponent(i).getK() + * clonedSystem.getPhase(0).getComponent(i).getz() / sumw[0]); + } - for (int i = 0; i < clonedSystem.getPhase(0).getNumberOfComponents(); i++) { - clonedSystem.getPhase(1).getComponent(i) - .setx(clonedSystem.getPhase(0).getComponent(i).getz() - / clonedSystem.getPhase(0).getComponent(i).getK() / sumw[1]); - clonedSystem.getPhase(0).getComponent(i) - .setx(clonedSystem.getPhase(0).getComponent(i).getK() - * clonedSystem.getPhase(0).getComponent(i).getz() / sumw[0]); + // for (int j = 0; j < clonedSystem.getNumberOfPhases(); j++) { + for (int j = start; j >= end; j = j + mult) { + for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + Wi[j][i] = clonedSystem.getPhase(j).getComponent(i).getx(); + logWi[i] = Math.log(Wi[j][i]); + } + iterations = 0; + fNorm = 1.0e10; + + do { + iterations++; + error[j] = 0.0; + + for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + oldoldoldlogw[i] = oldoldlogw[i]; + oldoldlogw[i] = oldlogw[i]; + oldlogw[i] = logWi[i]; + + oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; + oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; } - // for (int j = 0; j < clonedSystem.getNumberOfPhases(); j++) { - for (int j = start; j >= end; j = j + mult) { - for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - Wi[j][i] = clonedSystem.getPhase(j).getComponent(i).getx(); - logWi[i] = Math.log(Wi[j][i]); - } - iterations = 0; - fNorm = 1.0e10; - - do { - iterations++; - error[j] = 0.0; - - for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - oldoldoldlogw[i] = oldoldlogw[i]; - oldoldlogw[i] = oldlogw[i]; - oldlogw[i] = logWi[i]; - - oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; - oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; - } - - if ((iterations <= maxiterations - 10) - || !system.isImplementedCompositionDeriativesofFugacity()) { - clonedSystem.init(1, j); - fNormOld = fNorm; - for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - f.set(i, 0, Math.sqrt(Wi[j][i]) * (Math.log(Wi[j][i]) + clonedSystem - .getPhase(j).getComponent(i).getLogFugacityCoefficient() - d[i])); - } - fNorm = f.norm2(); - if (fNorm > fNormOld && iterations > 3 || (iterations + 1) % 7 != 0) { - break; - } - if (iterations % 7 == 0 && fNorm < fNormOld && !secondOrderStabilityAnalysis) { - double vec1 = 0.0, vec2 = 0.0, prod1 = 0.0, prod2 = 0.0; - - for (i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - vec1 = oldDeltalogWi[i] * oldoldDeltalogWi[i]; - vec2 = Math.pow(oldoldDeltalogWi[i], 2.0); - prod1 += vec1 * vec2; - prod2 += vec2 * vec2; - } - - double lambda = prod1 / prod2; - // logger.info("lambda " + lambda); - for (i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - logWi[i] += lambda / (1.0 - lambda) * deltalogWi[i]; - error[j] += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); - Wi[j][i] = Math.exp(logWi[i]); - } - } else { - // succsessive substitution - for (int i = 0; i < clonedSystem.getPhases()[0] - .getNumberOfComponents(); i++) { - logWi[i] = d[i] - clonedSystem.getPhase(j).getComponent(i) - .getLogFugacityCoefficient(); - error[j] += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); - Wi[j][i] = Math.exp(logWi[i]); - } - } - } else { - if (!secondOrderStabilityAnalysis) { - alpha = new double[system.getPhases()[0].getNumberOfComponents()]; - df = new Matrix(system.getPhases()[0].getNumberOfComponents(), - system.getPhases()[0].getNumberOfComponents()); - secondOrderStabilityAnalysis = true; - } - - clonedSystem.init(3, j); - for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - alpha[i] = 2.0 * Math.sqrt(Wi[j][i]); - } - - for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - f.set(i, 0, Math.sqrt(Wi[j][i]) * (Math.log(Wi[j][i]) + clonedSystem - .getPhase(j).getComponent(i).getLogFugacityCoefficient() - d[i])); - for (int k = 0; k < clonedSystem.getPhases()[0] - .getNumberOfComponents(); k++) { - double kronDelt = (i == k) ? 1.5 : 0.0; // adding 0.5 to diagonal - df.set(i, k, kronDelt + Math.sqrt(Wi[j][k] * Wi[j][i]) - * clonedSystem.getPhase(j).getComponent(i).getdfugdn(k));// * - // clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); - } - } - - Matrix dx = df.solve(f).times(-1.0); - for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - Wi[j][i] = Math.pow((alpha[i] + dx.get(i, 0)) / 2.0, 2.0); - logWi[i] = Math.log(Wi[j][i]); - error[j] += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); - } - - // logger.info("err newton " + error[j]); - } - - // logger.info("norm f " + f.norm1()); - // clonedSystem.display(); - sumw[j] = 0.0; - for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - sumw[j] += Wi[j][i]; - } - - for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - deltalogWi[i] = logWi[i] - oldlogw[i]; - clonedSystem.getPhase(j).getComponent(i).setx(Wi[j][i] / sumw[j]); - } - // logger.info("fnorm " + f.norm1() + " err " + error[j] + " iterations " + - // iterations + " phase " + j); - } while ((f.norm1() > 1e-6 && iterations < maxiterations) || (iterations % 7) == 0 - || iterations < 3); - // (error[j]= maxiterations) { - logger.error("err staability check " + error[j]); - // throw new util.exception.TooManyIterationsException(); + if ((iterations <= maxiterations - 10) + || !system.isImplementedCompositionDeriativesofFugacity()) { + clonedSystem.init(1, j); + fNormOld = fNorm; + for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + f.set(i, 0, Math.sqrt(Wi[j][i]) * (Math.log(Wi[j][i]) + + clonedSystem.getPhase(j).getComponent(i).getLogFugacityCoefficient() - d[i])); + } + fNorm = f.norm2(); + if (fNorm > fNormOld && iterations > 3 || (iterations + 1) % 7 != 0) { + break; + } + if (iterations % 7 == 0 && fNorm < fNormOld && !secondOrderStabilityAnalysis) { + double vec1 = 0.0; + + double vec2 = 0.0; + double prod1 = 0.0; + double prod2 = 0.0; + for (i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + vec1 = oldDeltalogWi[i] * oldoldDeltalogWi[i]; + vec2 = Math.pow(oldoldDeltalogWi[i], 2.0); + prod1 += vec1 * vec2; + prod2 += vec2 * vec2; } - tm[j] = 1.0; + double lambda = prod1 / prod2; + // logger.info("lambda " + lambda); + for (i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + logWi[i] += lambda / (1.0 - lambda) * deltalogWi[i]; + error[j] += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); + Wi[j][i] = Math.exp(logWi[i]); + } + } else { + // succsessive substitution for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - tm[j] -= Wi[j][i]; - x[j][i] = clonedSystem.getPhase(j).getComponent(i).getx(); + logWi[i] = + d[i] - clonedSystem.getPhase(j).getComponent(i).getLogFugacityCoefficient(); + error[j] += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); + Wi[j][i] = Math.exp(logWi[i]); } - if (tm[j] < -1e-4 && error[j] < 1e-6) { - break; - } else { - tm[j] = 1.0; + } + } else { + if (!secondOrderStabilityAnalysis) { + alpha = new double[system.getPhases()[0].getNumberOfComponents()]; + df = new Matrix(system.getPhases()[0].getNumberOfComponents(), + system.getPhases()[0].getNumberOfComponents()); + secondOrderStabilityAnalysis = true; + } + + clonedSystem.init(3, j); + for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + alpha[i] = 2.0 * Math.sqrt(Wi[j][i]); + } + + for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + f.set(i, 0, Math.sqrt(Wi[j][i]) * (Math.log(Wi[j][i]) + + clonedSystem.getPhase(j).getComponent(i).getLogFugacityCoefficient() - d[i])); + for (int k = 0; k < clonedSystem.getPhases()[0].getNumberOfComponents(); k++) { + double kronDelt = (i == k) ? 1.5 : 0.0; // adding 0.5 to diagonal + df.set(i, k, kronDelt + Math.sqrt(Wi[j][k] * Wi[j][i]) + * clonedSystem.getPhase(j).getComponent(i).getdfugdn(k)); // * + // clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); } - } + } + + Matrix dx = df.solve(f).times(-1.0); + for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + Wi[j][i] = Math.pow((alpha[i] + dx.get(i, 0)) / 2.0, 2.0); + logWi[i] = Math.log(Wi[j][i]); + error[j] += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); + } - // check for trivial solution - double diffx = 0.0; - for (int i = 0; i < clonedSystem.getPhase(0).getNumberOfComponents(); i++) { - diffx += Math.abs(clonedSystem.getPhase(0).getComponent(i).getx() - - clonedSystem.getPhase(1).getComponent(i).getx()); + // logger.info("err newton " + error[j]); } - if (diffx < 1e-10) { - tm[0] = 0.0; - tm[1] = 0.0; + + logger.info("norm f " + f.norm1()); + // clonedSystem.display(); + sumw[j] = 0.0; + for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + sumw[j] += Wi[j][i]; } - if (((tm[0] < -1e-4) || (tm[1] < -1e-4)) - && !(Double.isNaN(tm[0]) || (Double.isNaN(tm[1])))) { - for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { - if (system.getPhases()[1].getComponents()[i].getx() < 1e-100) { - continue; - } - if (tm[0] < -1e-4) { - system.getPhases()[1].getComponents()[i] - .setK((Wi[0][i] / sumw[0]) / (Wi[1][i] / sumw[1])); - system.getPhases()[0].getComponents()[i] - .setK((Wi[0][i] / sumw[0]) / (Wi[1][i] / sumw[1])); - } else if (tm[1] < -1e-4) { - system.getPhases()[1].getComponents()[i] - .setK((Wi[0][i] / sumw[0]) / (Wi[1][i] / sumw[1])); - system.getPhases()[0].getComponents()[i] - .setK((Wi[0][i] / sumw[0]) / (Wi[1][i] / sumw[1])); - } else { - logger.info("error in stability anlysis"); - system.init(0); - } - - if (Double.isNaN(tm[j])) { - tm[j] = 0; - } - } + for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + deltalogWi[i] = logWi[i] - oldlogw[i]; + clonedSystem.getPhase(j).getComponent(i).setx(Wi[j][i] / sumw[j]); } + // logger.info("fnorm " + f.norm1() + " err " + error[j] + " iterations " + + // iterations + " phase " + j); + } while ((f.norm1() > 1e-6 && iterations < maxiterations) || (iterations % 7) == 0 + || iterations < 3); + // (error[j]= maxiterations) { + logger.error("err staability check " + error[j]); + // throw new util.exception.TooManyIterationsException(); + } + + tm[j] = 1.0; + for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + tm[j] -= Wi[j][i]; + x[j][i] = clonedSystem.getPhase(j).getComponent(i).getx(); + } + if (tm[j] < -1e-4 && error[j] < 1e-6) { + break; + } else { + tm[j] = 1.0; + } + } - // logger.info("STABILITY ANALYSIS: "); - // logger.info("tm1: " + tm[0] + " tm2: " + tm[1]); + // check for trivial solution + double diffx = 0.0; + for (int i = 0; i < clonedSystem.getPhase(0).getNumberOfComponents(); i++) { + diffx += Math.abs(clonedSystem.getPhase(0).getComponent(i).getx() + - clonedSystem.getPhase(1).getComponent(i).getx()); + } + if (diffx < 1e-10) { + tm[0] = 0.0; + tm[1] = 0.0; } - /** - *

- * stabilityCheck. - *

- * - * @return a boolean - */ - public boolean stabilityCheck() { - boolean stable = false; - // logger.info("starting stability analysis...."); - lowestGibbsEnergyPhase = findLowestGibbsEnergyPhase(); - if (system.getPhase(lowestGibbsEnergyPhase).getNumberOfComponents() > 1) { - try { - stabilityAnalysis(); - } catch (Exception e) { - logger.error("error ", e); - } + if (((tm[0] < -1e-4) || (tm[1] < -1e-4)) && !(Double.isNaN(tm[0]) || (Double.isNaN(tm[1])))) { + for (int i = 0; i < clonedSystem.getPhases()[0].getNumberOfComponents(); i++) { + if (system.getPhases()[1].getComponents()[i].getx() < 1e-100) { + continue; } - if (!(tm[0] < -1e-4) && !(tm[1] < -1e-4) - || system.getPhase(0).getNumberOfComponents() == 1) { - stable = true; - system.init(0); - // logger.info("system is stable"); - // logger.info("Stable phase is : " + lowestGibbsEnergyPhase); - system.setNumberOfPhases(1); - - if (lowestGibbsEnergyPhase == 0) { - system.setPhaseType(0, 1); - } else { - system.setPhaseType(0, 0); - } - system.init(1); - if (solidCheck && !system.doMultiPhaseCheck()) { - this.solidPhaseFlash(); - } + if (tm[0] < -1e-4) { + system.getPhases()[1].getComponents()[i] + .setK((Wi[0][i] / sumw[0]) / (Wi[1][i] / sumw[1])); + system.getPhases()[0].getComponents()[i] + .setK((Wi[0][i] / sumw[0]) / (Wi[1][i] / sumw[1])); + } else if (tm[1] < -1e-4) { + system.getPhases()[1].getComponents()[i] + .setK((Wi[0][i] / sumw[0]) / (Wi[1][i] / sumw[1])); + system.getPhases()[0].getComponents()[i] + .setK((Wi[0][i] / sumw[0]) / (Wi[1][i] / sumw[1])); } else { - try { - system.calcBeta(); - } catch (Exception e) { - logger.error("error", e); - } - system.calc_x_y(); - system.init(1); + logger.info("error in stability anlysis"); + system.init(0); } - return stable; + if (Double.isNaN(tm[j])) { + tm[j] = 0; + } + } } - /** {@inheritDoc} */ - @Override - public void displayResult() { - system.display(); + // logger.info("STABILITY ANALYSIS: "); + // logger.info("tm1: " + tm[0] + " tm2: " + tm[1]); + } + + /** + *

+ * stabilityCheck. + *

+ * + * @return a boolean + */ + public boolean stabilityCheck() { + boolean stable = false; + // logger.info("starting stability analysis...."); + lowestGibbsEnergyPhase = findLowestGibbsEnergyPhase(); + if (system.getPhase(lowestGibbsEnergyPhase).getNumberOfComponents() > 1) { + try { + stabilityAnalysis(); + } catch (Exception ex) { + logger.error("error ", ex); + } } - - /** - *

- * solidPhaseFlash. - *

- */ - public void solidPhaseFlash() { - boolean solidPhase = false; - double frac = 0; - int solid = 0; - double[] tempVar = new double[system.getPhases()[0].getNumberOfComponents()]; - - if (!system.hasSolidPhase()) { - system.setNumberOfPhases(system.getNumberOfPhases() + 1); - system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); - } - // logger.info("numb " + system.getNumberOfPhases()); - system.init(1); - - for (int k = 0; k < system.getPhase(0).getNumberOfComponents(); k++) { - if (system.getPhase(0).getComponent(k).doSolidCheck()) { - tempVar[k] = system.getPhase(0).getComponents()[k].getz(); - for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - tempVar[k] -= system.getBeta(i) - * system.getPhases()[3].getComponent(k).getFugacityCoefficient() - / system.getPhase(i).getComponent(k).getFugacityCoefficient(); - } - - if (tempVar[k] > 0.0 && tempVar[k] > frac) { - solidPhase = true; - solid = k; - frac = tempVar[k]; - for (int p = 0; p < system.getPhases()[0].getNumberOfComponents(); p++) { - system.getPhases()[3].getComponents()[p].setx(1.0e-20); - } - system.getPhases()[3].getComponents()[solid].setx(1.0); - } - // logger.info("tempVar: " + tempVar[k]); - } - } - - if (solidPhase) { - if (frac < system.getPhases()[0].getComponents()[solid].getz() + 1e10) { - for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - // system.getPhases()[i].getComponents()[solid].setx(1.0e-10); - } - system.init(1); - // logger.info("solid phase will form..." + system.getNumberOfPhases()); - // logger.info("freezing component " + solid); - system.setBeta(system.getNumberOfPhases() - 1, frac); - system.initBeta(); - system.setBeta(system.getNumberOfPhases() - 1, - system.getPhases()[3].getComponent(solid).getNumberOfmoles() - / system.getNumberOfMoles()); - // double phasetot=0.0; - // for(int ph=0;ph + * solidPhaseFlash. + *

+ */ + public void solidPhaseFlash() { + boolean solidPhase = false; + double frac = 0; + int solid = 0; + double[] tempVar = new double[system.getPhases()[0].getNumberOfComponents()]; + + if (!system.hasSolidPhase()) { + system.setNumberOfPhases(system.getNumberOfPhases() + 1); + system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); } + // logger.info("numb " + system.getNumberOfPhases()); + system.init(1); + + for (int k = 0; k < system.getPhase(0).getNumberOfComponents(); k++) { + if (system.getPhase(0).getComponent(k).doSolidCheck()) { + tempVar[k] = system.getPhase(0).getComponents()[k].getz(); + for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { + tempVar[k] -= + system.getBeta(i) * system.getPhases()[3].getComponent(k).getFugacityCoefficient() + / system.getPhase(i).getComponent(k).getFugacityCoefficient(); + } - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return null; + if (tempVar[k] > 0.0 && tempVar[k] > frac) { + solidPhase = true; + solid = k; + frac = tempVar[k]; + for (int p = 0; p < system.getPhases()[0].getNumberOfComponents(); p++) { + system.getPhases()[3].getComponents()[p].setx(1.0e-20); + } + system.getPhases()[3].getComponents()[solid].setx(1.0); + } + // logger.info("tempVar: " + tempVar[k]); + } } - /** {@inheritDoc} */ - @Override - public void addData(String name, double[][] data) {} + if (solidPhase) { + if (frac < system.getPhases()[0].getComponents()[solid].getz() + 1e10) { + for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { + // system.getPhases()[i].getComponents()[solid].setx(1.0e-10); + } + system.init(1); + // logger.info("solid phase will form..." + system.getNumberOfPhases()); + // logger.info("freezing component " + solid); + system.setBeta(system.getNumberOfPhases() - 1, frac); + system.initBeta(); + system.setBeta(system.getNumberOfPhases() - 1, + system.getPhases()[3].getComponent(solid).getNumberOfmoles() + / system.getNumberOfMoles()); + // double phasetot=0.0; + // for(int ph=0;ph - * Constructor for PHflash. - *

- */ - public PHflash() {} + /** + *

+ * Constructor for PHflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Hspec a double + * @param type a int + */ + public PHflash(SystemInterface system, double Hspec, int type) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Hspec = Hspec; + this.type = type; + } - /** - *

- * Constructor for PHflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Hspec a double - * @param type a int - */ - public PHflash(SystemInterface system, double Hspec, int type) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Hspec = Hspec; - this.type = type; - } + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCp(); + return dQdTT / Math.abs(Hspec); + } - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCp(); - return dQdTT / Math.abs(Hspec); - } + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQ = (system.getEnthalpy() - Hspec) / Math.abs(Hspec); + return dQ; + } - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQ = (system.getEnthalpy() - Hspec) / Math.abs(Hspec); - return dQ; - } + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldTemp = 1.0 / system.getTemperature(); + double nyTemp = 1.0 / system.getTemperature(); + double iterations = 1; + double error = 1.0; + double erorOld = 1.0e10; + double factor = 0.8; + double newCorr = 1.0; + system.init(2); + boolean correctFactor = true; + double maxTemperature = 1e10; + double minTemperature = 0.0; - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); - double iterations = 1; - double error = 1.0, erorOld = 1.0e10; - double factor = 0.8; - double newCorr = 1.0; - system.init(2); - boolean correctFactor = true; + do { + if (Math.abs(error) > Math.abs(erorOld) && factor > 0.1 && correctFactor) { + factor *= 0.5; + } else if (Math.abs(error) < Math.abs(erorOld) && correctFactor) { + factor = iterations / (iterations + 1.0) * 1.0; + } + iterations++; + oldTemp = nyTemp; + newCorr = factor * calcdQdT() / calcdQdTT(); + nyTemp = oldTemp - newCorr; - double maxTemperature = 1e10, minTemperature = 0.0; + if (iterations > 150 && Math.abs(error) < 10.0) { + nyTemp = 1.0 / (system.getTemperature() + - Math.signum(system.getTemperature() - 1.0 / nyTemp) * Math.abs(error)); + correctFactor = false; + } else if (Math.abs(system.getTemperature() - 1.0 / nyTemp) > 10.0) { + nyTemp = 1.0 / (system.getTemperature() + - Math.signum(system.getTemperature() - 1.0 / nyTemp) * 10.0); + correctFactor = false; + } else if (nyTemp < 0) { + nyTemp = Math.abs(1.0 / (system.getTemperature() + 10.0)); + correctFactor = false; + } else if (Double.isNaN(nyTemp)) { + nyTemp = oldTemp + 0.1; + correctFactor = false; + } else { + correctFactor = true; + } + system.setTemperature(1.0 / nyTemp); + if (system.getTemperature() > maxTemperature) { + system.setTemperature(maxTemperature - 0.1); + } else if (system.getTemperature() < minTemperature) { + system.setTemperature(minTemperature + 0.1); + } + tpFlash.run(); + system.init(2); + erorOld = error; + error = calcdQdT(); - do { - if (Math.abs(error) > Math.abs(erorOld) && factor > 0.1 && correctFactor) { - factor *= 0.5; - } else if (Math.abs(error) < Math.abs(erorOld) && correctFactor) { - factor = iterations / (iterations + 1.0) * 1.0; - } - iterations++; - oldTemp = nyTemp; - newCorr = factor * calcdQdT() / calcdQdTT(); - nyTemp = oldTemp - newCorr; + if (error > 0 && system.getTemperature() > maxTemperature) { + maxTemperature = system.getTemperature(); + } else if (error < 0 && system.getTemperature() < minTemperature) { + minTemperature = system.getTemperature(); + } + } while (((Math.abs(error) + Math.abs(erorOld)) > 1e-8 || iterations < 3) && iterations < 200); + return 1.0 / nyTemp; + } - if (iterations > 150 && Math.abs(error)<10.0) { - nyTemp = 1.0 / (system.getTemperature() - - Math.signum(system.getTemperature() - 1.0 / nyTemp) * Math.abs(error)); - correctFactor = false; - } - else if (Math.abs(system.getTemperature() - 1.0 / nyTemp) > 10.0) { - nyTemp = 1.0 / (system.getTemperature() - - Math.signum(system.getTemperature() - 1.0 / nyTemp) * 10.0); - correctFactor = false; - } - else if (nyTemp < 0) { - nyTemp = Math.abs(1.0 / (system.getTemperature() + 10.0)); - correctFactor = false; - } else if (Double.isNaN(nyTemp)) { - nyTemp = oldTemp + 0.1; - correctFactor = false; - } else { - correctFactor = true; - } - system.setTemperature(1.0 / nyTemp); - if (system.getTemperature() > maxTemperature) { - system.setTemperature(maxTemperature - 0.1); - } else if (system.getTemperature() < minTemperature) { - system.setTemperature(minTemperature + 0.1); - } - tpFlash.run(); - system.init(2); - erorOld = error; - error = calcdQdT(); + /** + *

+ * solveQ2. + *

+ * + * @return a double + */ + public double solveQ2() { + double oldTemp = 1.0 / system.getTemperature(); + double nyTemp = 1.0 / system.getTemperature(); + double iterations = 1; + double error = 1.0; + double erorOld = 1.0e10; + double factor = 0.8; + double newCorr = 1.0; + system.init(2); + boolean correctFactor = true; + // System.out.println("temp start " + system.getTemperature()); + do { + if (error > erorOld && factor > 0.1 && correctFactor) { + factor *= 0.5; + } else if (error < erorOld && correctFactor) { + factor = iterations / (iterations + 1.0) * 1.0; + } + iterations++; + oldTemp = nyTemp; + newCorr = factor * calcdQdT() / calcdQdTT(); + nyTemp = oldTemp - newCorr; + if (Math.abs(system.getTemperature() - 1.0 / nyTemp) > 10.0) { + nyTemp = 1.0 / (system.getTemperature() + - Math.signum(system.getTemperature() - 1.0 / nyTemp) * 10.0); + correctFactor = false; + } else if (nyTemp < 0) { + nyTemp = Math.abs(1.0 / (system.getTemperature() + 10.0)); + correctFactor = false; + } else if (Double.isNaN(nyTemp)) { + nyTemp = oldTemp + 0.1; + correctFactor = false; + } else { + correctFactor = true; + } + system.setTemperature(1.0 / nyTemp); + tpFlash.run(); + system.init(2); + erorOld = error; + error = Math.abs(calcdQdT()); + // error = Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); + // if(iterations>100) System.out.println("temp " + system.getTemperature() + " + // iter "+ iterations + " error "+ error + " correction " + newCorr + " factor + // "+ factor); + } while (((error + erorOld) > 1e-8 || iterations < 3) && iterations < 200); + // System.out.println("temp " + system.getTemperature() + " iter "+ iterations + + // " error "+ error ); + return 1.0 / nyTemp; + } - if (error > 0 && system.getTemperature() > maxTemperature) { - maxTemperature = system.getTemperature(); - } else if (error < 0 && system.getTemperature() < minTemperature) { - minTemperature = system.getTemperature(); - } - } while (((Math.abs(error) + Math.abs(erorOld)) > 1e-8 || iterations < 3) - && iterations < 200); - return 1.0 / nyTemp; + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + // System.out.println("enthalpy start: " + system.getEnthalpy()); + if (type == 0) { + solveQ(); + } else { + sysNewtonRhapsonPHflash secondOrderSolver = + new sysNewtonRhapsonPHflash(system, 2, system.getPhases()[0].getNumberOfComponents(), 0); + secondOrderSolver.setSpec(Hspec); + secondOrderSolver.solve(1); } + // System.out.println("enthalpy: " + system.getEnthalpy()); + // System.out.println("Temperature: " + system.getTemperature()); + } - /** - *

- * solveQ2. - *

- * - * @return a double - */ - public double solveQ2() { - double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); - double iterations = 1; - double error = 1.0, erorOld = 1.0e10; - double factor = 0.8; - double newCorr = 1.0; - system.init(2); - boolean correctFactor = true; - // System.out.println("temp start " + system.getTemperature()); - do { - if (error > erorOld && factor > 0.1 && correctFactor) { - factor *= 0.5; - } else if (error < erorOld && correctFactor) { - factor = iterations / (iterations + 1.0) * 1.0; - } - iterations++; - oldTemp = nyTemp; - newCorr = factor * calcdQdT() / calcdQdTT(); - nyTemp = oldTemp - newCorr; - if (Math.abs(system.getTemperature() - 1.0 / nyTemp) > 10.0) { - nyTemp = 1.0 / (system.getTemperature() - - Math.signum(system.getTemperature() - 1.0 / nyTemp) * 10.0); - correctFactor = false; - } else if (nyTemp < 0) { - nyTemp = Math.abs(1.0 / (system.getTemperature() + 10.0)); - correctFactor = false; - } else if (Double.isNaN(nyTemp)) { - nyTemp = oldTemp + 0.1; - correctFactor = false; - } else { - correctFactor = true; - } - system.setTemperature(1.0 / nyTemp); - tpFlash.run(); - system.init(2); - erorOld = error; - error = Math.abs(calcdQdT()); - // error = Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); - // if(iterations>100) System.out.println("temp " + system.getTemperature() + " - // iter "+ iterations + " error "+ error + " correction " + newCorr + " factor - // "+ factor); - } while (((error + erorOld) > 1e-8 || iterations < 3) && iterations < 200); - // System.out.println("temp " + system.getTemperature() + " iter "+ iterations + - // " error "+ error ); - return 1.0 / nyTemp; - } - - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - // System.out.println("enthalpy start: " + system.getEnthalpy()); - if (type == 0) { - solveQ(); - } else { - sysNewtonRhapsonPHflash secondOrderSolver = new sysNewtonRhapsonPHflash(system, 2, - system.getPhases()[0].getNumberOfComponents(), 0); - secondOrderSolver.setSpec(Hspec); - secondOrderSolver.solve(1); - } - // System.out.println("enthalpy: " + system.getEnthalpy()); - // System.out.println("Temperature: " + system.getTemperature()); - } - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashGERG2008.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashGERG2008.java index 500e04b73d..eba52489de 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashGERG2008.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashGERG2008.java @@ -3,6 +3,7 @@ * * Created on 8. mars 2001, 10:56 */ + package neqsim.thermodynamicOperations.flashOps; import neqsim.thermo.system.SystemInterface; @@ -16,207 +17,201 @@ * @version $Id: $Id */ public class PHflashGERG2008 extends Flash { - private static final long serialVersionUID = 1000; - - double Hspec = 0; - Flash tpFlash; - double enthalpy_GERG2008 = 0.0; - double cP_GERG2008 = 0.0; - - /** - *

- * Constructor for PHflashGERG2008. - *

- */ - public PHflashGERG2008() {} - - /** - *

- * Constructor for PHflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Hspec a double - */ - public PHflashGERG2008(SystemInterface system, double Hspec) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Hspec = Hspec; - } - - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - double dQdTT = -system.getTemperature() * system.getTemperature() * cP_GERG2008; - return dQdTT / Math.abs(Hspec); - } - - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQ = (enthalpy_GERG2008 - Hspec) / Math.abs(Hspec); - return dQ; - } - - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); - double iterations = 1; - double error = 1.0, erorOld = 1.0e10; - double factor = 0.8; - double newCorr = 1.0; - system.init(2); - boolean correctFactor = true; - - double maxTemperature = 1e10, minTemperature = 0.0; - - do { - if (Math.abs(error) > Math.abs(erorOld) && factor > 0.1 && correctFactor) { - factor *= 0.5; - } else if (Math.abs(error) < Math.abs(erorOld) && correctFactor) { - factor = iterations / (iterations + 1.0) * 1.0; - } - iterations++; - oldTemp = nyTemp; - double[] gergProps = system.getPhase(0).getProperties_GERG2008(); - cP_GERG2008 = gergProps[10] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K - enthalpy_GERG2008 = gergProps[7] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol - // K - newCorr = factor * calcdQdT() / calcdQdTT(); - nyTemp = oldTemp - newCorr; - if (Math.abs(system.getTemperature() - 1.0 / nyTemp) > 10.0) { - nyTemp = 1.0 / (system.getTemperature() - - Math.signum(system.getTemperature() - 1.0 / nyTemp) * 10.0); - correctFactor = false; - } else if (nyTemp < 0) { - nyTemp = Math.abs(1.0 / (system.getTemperature() + 10.0)); - correctFactor = false; - } else if (Double.isNaN(nyTemp)) { - nyTemp = oldTemp + 0.1; - correctFactor = false; - } else { - correctFactor = true; - } - system.setTemperature(1.0 / nyTemp); - if (system.getTemperature() > maxTemperature) { - system.setTemperature(maxTemperature - 0.1); - } else if (system.getTemperature() < minTemperature) { - system.setTemperature(minTemperature + 0.1); - } - erorOld = error; - error = calcdQdT(); - - if (error > 0 && system.getTemperature() > maxTemperature) { - maxTemperature = system.getTemperature(); - } else if (error < 0 && system.getTemperature() < minTemperature) { - minTemperature = system.getTemperature(); - } - - /* - * if (false && error * erorOld < 0) { system.setTemperature( (Math.abs(erorOld) * 1.0 / - * oldTemp + Math.abs(error) * 1.0 / nyTemp) / (Math.abs(erorOld) + Math.abs(error))); - * erorOld = error; error = calcdQdT(); - * System.out.println("reset temperature -- new temp " + system.getTemperature() + - * " error " + error + " iter " + iterations); } // error = Math.abs((1.0 / nyTemp - 1.0 - * / oldTemp) / (1.0 / oldTemp)); // System.out.println("temp " + - * system.getTemperature() + " iter "+ iterations + // " error "+ error + " correction " - * + newCorr + " factor "+ factor); - */ - } while (((Math.abs(error) + Math.abs(erorOld)) > 1e-8 || iterations < 3) - && iterations < 200); - // System.out.println("temp " + system.getTemperature() + " iter " + iterations - // + " error " + error); - return 1.0 / nyTemp; - } - - /** - *

- * solveQ2. - *

- * - * @return a double - */ - public double solveQ2() { - double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); - double iterations = 1; - double error = 1.0, erorOld = 1.0e10; - double factor = 0.8; - double newCorr = 1.0; - system.init(2); - boolean correctFactor = true; - // System.out.println("temp start " + system.getTemperature()); - do { - if (error > erorOld && factor > 0.1 && correctFactor) { - factor *= 0.5; - } else if (error < erorOld && correctFactor) { - factor = iterations / (iterations + 1.0) * 1.0; - } - iterations++; - oldTemp = nyTemp; - double[] gergProps = system.getPhase(0).getProperties_GERG2008(); - cP_GERG2008 = gergProps[10] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K - enthalpy_GERG2008 = gergProps[7] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol - // K - - newCorr = factor * calcdQdT() / calcdQdTT(); - nyTemp = oldTemp - newCorr; - if (Math.abs(system.getTemperature() - 1.0 / nyTemp) > 10.0) { - nyTemp = 1.0 / (system.getTemperature() - - Math.signum(system.getTemperature() - 1.0 / nyTemp) * 10.0); - correctFactor = false; - } else if (nyTemp < 0) { - nyTemp = Math.abs(1.0 / (system.getTemperature() + 10.0)); - correctFactor = false; - } else if (Double.isNaN(nyTemp)) { - nyTemp = oldTemp + 0.1; - correctFactor = false; - } else { - correctFactor = true; - } - system.setTemperature(1.0 / nyTemp); - erorOld = error; - error = Math.abs(calcdQdT()); - // error = Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); - // if(iterations>100) System.out.println("temp " + system.getTemperature() + " - // iter "+ iterations + " error "+ error + " correction " + newCorr + " factor - // "+ factor); - } while (((error + erorOld) > 1e-8 || iterations < 3) && iterations < 200); - // System.out.println("temp " + system.getTemperature() + " iter "+ iterations + - // " error "+ error ); - return 1.0 / nyTemp; - } - - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - if (system.getNumberOfPhases() > 1) { - logger.error("PSFlashGERG2008 only support single phase gas calculations"); - return; - } - solveQ(); - system.init(3); - } - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; + private static final long serialVersionUID = 1000; + + double Hspec = 0; + Flash tpFlash; + double enthalpy_GERG2008 = 0.0; + double cP_GERG2008 = 0.0; + + /** + *

+ * Constructor for PHflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Hspec a double + */ + public PHflashGERG2008(SystemInterface system, double Hspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Hspec = Hspec; + } + + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + double dQdTT = -system.getTemperature() * system.getTemperature() * cP_GERG2008; + return dQdTT / Math.abs(Hspec); + } + + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQ = (enthalpy_GERG2008 - Hspec) / Math.abs(Hspec); + return dQ; + } + + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldTemp = 1.0 / system.getTemperature(); + double nyTemp = 1.0 / system.getTemperature(); + double iterations = 1; + double error = 1.0; + double erorOld = 1.0e10; + double factor = 0.8; + double newCorr = 1.0; + system.init(2); + boolean correctFactor = true; + + double maxTemperature = 1e10; + double minTemperature = 0.0; + do { + if (Math.abs(error) > Math.abs(erorOld) && factor > 0.1 && correctFactor) { + factor *= 0.5; + } else if (Math.abs(error) < Math.abs(erorOld) && correctFactor) { + factor = iterations / (iterations + 1.0) * 1.0; + } + iterations++; + oldTemp = nyTemp; + double[] gergProps = system.getPhase(0).getProperties_GERG2008(); + cP_GERG2008 = gergProps[10] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K + enthalpy_GERG2008 = gergProps[7] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K + newCorr = factor * calcdQdT() / calcdQdTT(); + nyTemp = oldTemp - newCorr; + if (Math.abs(system.getTemperature() - 1.0 / nyTemp) > 10.0) { + nyTemp = 1.0 / (system.getTemperature() + - Math.signum(system.getTemperature() - 1.0 / nyTemp) * 10.0); + correctFactor = false; + } else if (nyTemp < 0) { + nyTemp = Math.abs(1.0 / (system.getTemperature() + 10.0)); + correctFactor = false; + } else if (Double.isNaN(nyTemp)) { + nyTemp = oldTemp + 0.1; + correctFactor = false; + } else { + correctFactor = true; + } + system.setTemperature(1.0 / nyTemp); + if (system.getTemperature() > maxTemperature) { + system.setTemperature(maxTemperature - 0.1); + } else if (system.getTemperature() < minTemperature) { + system.setTemperature(minTemperature + 0.1); + } + erorOld = error; + error = calcdQdT(); + + if (error > 0 && system.getTemperature() > maxTemperature) { + maxTemperature = system.getTemperature(); + } else if (error < 0 && system.getTemperature() < minTemperature) { + minTemperature = system.getTemperature(); + } + + /* + * if (false && error * erorOld < 0) { system.setTemperature( (Math.abs(erorOld) * 1.0 / + * oldTemp + Math.abs(error) * 1.0 / nyTemp) / (Math.abs(erorOld) + Math.abs(error))); erorOld + * = error; error = calcdQdT(); System.out.println("reset temperature -- new temp " + + * system.getTemperature() + " error " + error + " iter " + iterations); } // error = + * Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); // System.out.println("temp " + + * system.getTemperature() + " iter "+ iterations + // " error "+ error + " correction " + + * newCorr + " factor "+ factor); + */ + } while (((Math.abs(error) + Math.abs(erorOld)) > 1e-8 || iterations < 3) && iterations < 200); + // System.out.println("temp " + system.getTemperature() + " iter " + iterations + // + " error " + error); + return 1.0 / nyTemp; + } + + /** + *

+ * solveQ2. + *

+ * + * @return a double + */ + public double solveQ2() { + double oldTemp = 1.0 / system.getTemperature(); + double nyTemp = 1.0 / system.getTemperature(); + double iterations = 1; + double error = 1.0; + double erorOld = 1.0e10; + double factor = 0.8; + double newCorr = 1.0; + system.init(2); + boolean correctFactor = true; + // System.out.println("temp start " + system.getTemperature()); + do { + if (error > erorOld && factor > 0.1 && correctFactor) { + factor *= 0.5; + } else if (error < erorOld && correctFactor) { + factor = iterations / (iterations + 1.0) * 1.0; + } + iterations++; + oldTemp = nyTemp; + double[] gergProps = system.getPhase(0).getProperties_GERG2008(); + cP_GERG2008 = gergProps[10] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K + enthalpy_GERG2008 = gergProps[7] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol + // K + + newCorr = factor * calcdQdT() / calcdQdTT(); + nyTemp = oldTemp - newCorr; + if (Math.abs(system.getTemperature() - 1.0 / nyTemp) > 10.0) { + nyTemp = 1.0 / (system.getTemperature() + - Math.signum(system.getTemperature() - 1.0 / nyTemp) * 10.0); + correctFactor = false; + } else if (nyTemp < 0) { + nyTemp = Math.abs(1.0 / (system.getTemperature() + 10.0)); + correctFactor = false; + } else if (Double.isNaN(nyTemp)) { + nyTemp = oldTemp + 0.1; + correctFactor = false; + } else { + correctFactor = true; + } + system.setTemperature(1.0 / nyTemp); + erorOld = error; + error = Math.abs(calcdQdT()); + // error = Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); + // if(iterations>100) System.out.println("temp " + system.getTemperature() + " + // iter "+ iterations + " error "+ error + " correction " + newCorr + " factor + // "+ factor); + } while (((error + erorOld) > 1e-8 || iterations < 3) && iterations < 200); + // System.out.println("temp " + system.getTemperature() + " iter "+ iterations + + // " error "+ error ); + return 1.0 / nyTemp; + } + + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + if (system.getNumberOfPhases() > 1) { + logger.error("PSFlashGERG2008 only support single phase gas calculations"); + return; } + solveQ(); + system.init(3); + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashSingleComp.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashSingleComp.java index 2ff08a39ec..7a84d17f97 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashSingleComp.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PHflashSingleComp.java @@ -1,5 +1,6 @@ package neqsim.thermodynamicOperations.flashOps; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; /** @@ -11,87 +12,84 @@ * @version $Id: $Id */ public class PHflashSingleComp extends Flash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double Hspec = 0; + double Hspec = 0; - /** - *

- * Constructor for PHflashSingleComp. - *

- */ - public PHflashSingleComp() {} + /** + *

+ * Constructor for PHflashSingleComp. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Hspec a double + * @param type a int + */ + public PHflashSingleComp(SystemInterface system, double Hspec, int type) { + this.system = system; + this.Hspec = Hspec; + } - /** - *

- * Constructor for PHflashSingleComp. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Hspec a double - * @param type a int - */ - public PHflashSingleComp(SystemInterface system, double Hspec, int type) { - this.system = system; - this.Hspec = Hspec; - } + /** {@inheritDoc} */ + @Override + public void run() { + neqsim.thermodynamicOperations.ThermodynamicOperations bubOps = + new neqsim.thermodynamicOperations.ThermodynamicOperations(system); + double initTemp = system.getTemperature(); - /** {@inheritDoc} */ - @Override - public void run() { - neqsim.thermodynamicOperations.ThermodynamicOperations bubOps = - new neqsim.thermodynamicOperations.ThermodynamicOperations(system); - double initTemp = system.getTemperature(); - - if (system.getPressure() < system.getPhase(0).getComponent(0).getPC()) { - try { - bubOps.TPflash(); - if (system.getPhase(0).getPhaseTypeName().equals("gas")) { - bubOps.dewPointTemperatureFlash(); - } else { - bubOps.bubblePointTemperatureFlash(); - } - } catch (Exception e) { - system.setTemperature(initTemp); - logger.error("error", e); - } + if (system.getPressure() < system.getPhase(0).getComponent(0).getPC()) { + try { + bubOps.TPflash(); + if (system.getPhase(0).getType() == PhaseType.GAS) { + try { + bubOps.dewPointTemperatureFlash(); + } catch (Exception e) { + system.setTemperature(298.0); + } } else { - bubOps.PHflash2(Hspec, 0); - return; + bubOps.bubblePointTemperatureFlash(); } + } catch (Exception ex) { + system.setTemperature(initTemp); + logger.error(ex.getMessage(), ex); + } + } else { + bubOps.PHflash2(Hspec, 0); + return; + } - system.init(3); - double gasEnthalpy = system.getPhase(0).getEnthalpy() - / system.getPhase(0).getNumberOfMolesInPhase() * system.getTotalNumberOfMoles(); - double liqEnthalpy = system.getPhase(1).getEnthalpy() - / system.getPhase(1).getNumberOfMolesInPhase() * system.getTotalNumberOfMoles(); + system.init(3); + double gasEnthalpy = system.getPhase(0).getEnthalpy() + / system.getPhase(0).getNumberOfMolesInPhase() * system.getTotalNumberOfMoles(); + double liqEnthalpy = system.getPhase(1).getEnthalpy() + / system.getPhase(1).getNumberOfMolesInPhase() * system.getTotalNumberOfMoles(); - /* - * double solidEnthalpy = 0.0; - * - * if (system.doSolidPhaseCheck()) { system.init(3, 3); solidEnthalpy = - * system.getPhases()[3].getEnthalpy() / system.getPhases()[3].getNumberOfMolesInPhase() - * system.getTotalNumberOfMoles(); - * - * if (Hspec < liqEnthalpy && Hspec > solidEnthalpy) { double solidbeta = (Hspec - - * liqEnthalpy) / (gasEnthalpy - liqEnthalpy); } } - */ + /* + * double solidEnthalpy = 0.0; + * + * if (system.doSolidPhaseCheck()) { system.init(3, 3); solidEnthalpy = + * system.getPhases()[3].getEnthalpy() / system.getPhases()[3].getNumberOfMolesInPhase() + * system.getTotalNumberOfMoles(); + * + * if (Hspec < liqEnthalpy && Hspec > solidEnthalpy) { double solidbeta = (Hspec - liqEnthalpy) + * / (gasEnthalpy - liqEnthalpy); } } + */ - if (Hspec < liqEnthalpy || Hspec > gasEnthalpy) { - system.setTemperature(initTemp); - bubOps.PHflash2(Hspec, 0); - return; - } - double beta = (Hspec - liqEnthalpy) / (gasEnthalpy - liqEnthalpy); + if (Hspec < liqEnthalpy || Hspec > gasEnthalpy) { + system.setTemperature(initTemp); + bubOps.PHflash2(Hspec, 0); + return; + } + double beta = (Hspec - liqEnthalpy) / (gasEnthalpy - liqEnthalpy); - system.setBeta(beta); + system.setBeta(beta); - system.init(3); - } + system.init(3); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PHsolidFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PHsolidFlash.java index 02734ac3f9..e3235dd1cc 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PHsolidFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PHsolidFlash.java @@ -3,6 +3,7 @@ * * Created on 8. mars 2001, 10:56 */ + package neqsim.thermodynamicOperations.flashOps; import org.apache.logging.log4j.LogManager; @@ -18,79 +19,76 @@ * @version $Id: $Id */ public class PHsolidFlash extends Flash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(PHsolidFlash.class); - - Flash tpFlash; - int refluxPhase = 0; - double enthalpyspec = 0.5; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PHsolidFlash.class); - /** - *

- * Constructor for PHsolidFlash. - *

- */ - public PHsolidFlash() {} + Flash tpFlash; + int refluxPhase = 0; + double enthalpyspec = 0.5; - /** - *

- * Constructor for PHsolidFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param ent a double - */ - public PHsolidFlash(SystemInterface system, double ent) { - this.system = system; - this.tpFlash = new TPflash(this.system, true); - this.enthalpyspec = ent; - } + /** + *

+ * Constructor for PHsolidFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param ent a double + */ + public PHsolidFlash(SystemInterface system, double ent) { + this.system = system; + this.tpFlash = new TPflash(this.system, true); + this.enthalpyspec = ent; + } - /** {@inheritDoc} */ - @Override - public void run() { - // logger.info("enthalpy: " + system.getEnthalpy()); - double err = 0; - int iter = 0; - double f_func = 0.0, f_func_old = 0.0, df_func_dt = 0, t_old = 0, t_oldold = 0.0; - // ThermodynamicOperations ops = new ThermodynamicOperations(system); - tpFlash.run(); - double dt = 10; - do { - iter++; + /** {@inheritDoc} */ + @Override + public void run() { + // logger.info("enthalpy: " + system.getEnthalpy()); + double err = 0; + int iter = 0; + double f_func = 0.0; + double f_func_old = 0.0; + double df_func_dt = 0; + double t_old = 0; + double t_oldold = 0.0; + // ThermodynamicOperations ops = new ThermodynamicOperations(system); + tpFlash.run(); + double dt = 10; + do { + iter++; - f_func_old = f_func; - t_oldold = t_old; - t_old = system.getTemperature(); - system.init(3); - f_func = enthalpyspec - system.getEnthalpy(); - logger.info("entalp diff " + f_func); - df_func_dt = (f_func - f_func_old) / (t_old - t_oldold); + f_func_old = f_func; + t_oldold = t_old; + t_old = system.getTemperature(); + system.init(3); + f_func = enthalpyspec - system.getEnthalpy(); + logger.info("entalp diff " + f_func); + df_func_dt = (f_func - f_func_old) / (t_old - t_oldold); - err = Math.abs(f_func); + err = Math.abs(f_func); - if (iter < 2) { - if (f_func > 0) { - system.setTemperature(system.getTemperature() + 0.1); - } else if (f_func < 0) { - system.setTemperature(system.getTemperature() - 0.1); - } - } else { - dt = f_func / df_func_dt; - if (Math.abs(dt) > 2.0) { - dt = Math.signum(dt) * 2.0; - } - system.setTemperature(system.getTemperature() - 0.8 * dt); - } - tpFlash.run(); + if (iter < 2) { + if (f_func > 0) { + system.setTemperature(system.getTemperature() + 0.1); + } else if (f_func < 0) { + system.setTemperature(system.getTemperature() - 0.1); + } + } else { + dt = f_func / df_func_dt; + if (Math.abs(dt) > 2.0) { + dt = Math.signum(dt) * 2.0; + } + system.setTemperature(system.getTemperature() - 0.8 * dt); + } + tpFlash.run(); - logger.info("temp " + system.getTemperature() + " err " + err); - } while (Math.abs(dt) > 1e-8 && iter < 200); - } + logger.info("temp " + system.getTemperature() + " err " + err); + } while (Math.abs(dt) > 1e-8 && iter < 200); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PSFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PSFlash.java index 553835ecb9..c26549e886 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PSFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PSFlash.java @@ -11,130 +11,122 @@ * @version $Id: $Id */ public class PSFlash extends QfuncFlash { - private static final long serialVersionUID = 1000; - - double Sspec = 0; - Flash tpFlash; - int type = 0; - - /** - *

- * Constructor for PSFlash. - *

- */ - public PSFlash() {} - - /** - *

- * Constructor for PSFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Sspec a double - * @param type a int - */ - public PSFlash(SystemInterface system, double Sspec, int type) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Sspec = Sspec; - this.type = type; + private static final long serialVersionUID = 1000; + + double Sspec = 0; + Flash tpFlash; + int type = 0; + + /** + *

+ * Constructor for PSFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Sspec a double + * @param type a int + */ + public PSFlash(SystemInterface system, double Sspec, int type) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Sspec = Sspec; + this.type = type; + } + + /** {@inheritDoc} */ + @Override + public double calcdQdTT() { + if (system.getNumberOfPhases() == 1) { + return -system.getPhase(0).getCp() / system.getTemperature(); } - /** {@inheritDoc} */ - @Override - public double calcdQdTT() { - // double cP1 = 0.0, cP2 = 0.0; - - if (system.getNumberOfPhases() == 1) { - return -system.getPhase(0).getCp() / system.getTemperature(); - } - - double dQdTT = 0.0; - for (int i = 0; i < system.getNumberOfPhases(); i++) { - dQdTT -= system.getPhase(i).getCp() / system.getPhase(i).getTemperature(); - } - return dQdTT; - } - - /** {@inheritDoc} */ - @Override - public double calcdQdT() { - double dQ = -system.getEntropy() + Sspec; - return dQ; + double dQdTT = 0.0; + for (int i = 0; i < system.getNumberOfPhases(); i++) { + dQdTT -= system.getPhase(i).getCp() / system.getPhase(i).getTemperature(); } - - /** {@inheritDoc} */ - @Override - public double solveQ() { - double oldTemp = system.getTemperature(), nyTemp = system.getTemperature(); - int iterations = 1; - double error = 1.0, erorOld = 10.0e10; - double factor = 0.8; - - boolean correctFactor = true; - double newCorr = 1.0; - system.init(2); - - do { - if (error > erorOld && factor > 0.1 && correctFactor) { - factor *= 0.5; - } else if (error < erorOld && correctFactor) { - factor = 1.0; - } - - iterations++; - oldTemp = system.getTemperature(); - - newCorr = factor * calcdQdT() / calcdQdTT(); - nyTemp = oldTemp - newCorr; - if (Math.abs(system.getTemperature() - nyTemp) > 10.0) { - nyTemp = system.getTemperature() - - Math.signum(system.getTemperature() - nyTemp) * 10.0; - correctFactor = false; - } else if (nyTemp < 0) { - nyTemp = Math.abs(system.getTemperature() - 10.0); - correctFactor = false; - } else if (Double.isNaN(nyTemp)) { - nyTemp = oldTemp + 1.0; - correctFactor = false; - } else { - correctFactor = true; - } - - system.setTemperature(nyTemp); - tpFlash.run(); - system.init(2); - erorOld = error; - error = Math.abs(calcdQdT());// Math.abs((nyTemp - oldTemp) / (nyTemp)); - // if(error>erorOld) factor *= -1.0; - // System.out.println("temp " + system.getTemperature() + " iter "+ iterations + - // " error "+ error + " correction " + newCorr + " factor "+ factor); - // newCorr = Math.abs(factor * calcdQdT() / calcdQdTT()); - } while (((error + erorOld) > 1e-8 || iterations < 3) && iterations < 200); - return nyTemp; - } - - /** - *

- * onPhaseSolve. - *

- */ - public void onPhaseSolve() {} - - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - - if (type == 0) { - solveQ(); - } else { - sysNewtonRhapsonPHflash secondOrderSolver = new sysNewtonRhapsonPHflash(system, 2, - system.getPhases()[0].getNumberOfComponents(), 1); - secondOrderSolver.setSpec(Sspec); - secondOrderSolver.solve(1); - } - // System.out.println("Entropy: " + system.getEntropy()); - // System.out.println("Temperature: " + system.getTemperature()); + return dQdTT; + } + + /** {@inheritDoc} */ + @Override + public double calcdQdT() { + double dQ = -system.getEntropy() + Sspec; + return dQ; + } + + /** {@inheritDoc} */ + @Override + public double solveQ() { + double oldTemp = system.getTemperature(); + double nyTemp = system.getTemperature(); + int iterations = 1; + double error = 1.0; + double erorOld = 10.0e10; + double factor = 0.8; + + boolean correctFactor = true; + double newCorr = 1.0; + system.init(2); + + do { + if (error > erorOld && factor > 0.1 && correctFactor) { + factor *= 0.5; + } else if (error < erorOld && correctFactor) { + factor = 1.0; + } + + iterations++; + oldTemp = system.getTemperature(); + + newCorr = factor * calcdQdT() / calcdQdTT(); + nyTemp = oldTemp - newCorr; + if (Math.abs(system.getTemperature() - nyTemp) > 10.0) { + nyTemp = system.getTemperature() - Math.signum(system.getTemperature() - nyTemp) * 10.0; + correctFactor = false; + } else if (nyTemp < 0) { + nyTemp = Math.abs(system.getTemperature() - 10.0); + correctFactor = false; + } else if (Double.isNaN(nyTemp)) { + nyTemp = oldTemp + 1.0; + correctFactor = false; + } else { + correctFactor = true; + } + + system.setTemperature(nyTemp); + tpFlash.run(); + system.init(2); + erorOld = error; + error = Math.abs(calcdQdT()); // Math.abs((nyTemp - oldTemp) / (nyTemp)); + // if(error>erorOld) factor *= -1.0; + // System.out.println("temp " + system.getTemperature() + " iter "+ iterations + + // " error "+ error + " correction " + newCorr + " factor "+ factor); + // newCorr = Math.abs(factor * calcdQdT() / calcdQdTT()); + } while (((error + erorOld) > 1e-8 || iterations < 3) && iterations < 200); + return nyTemp; + } + + /** + *

+ * onPhaseSolve. + *

+ */ + public void onPhaseSolve() {} + + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + + if (type == 0) { + solveQ(); + } else { + sysNewtonRhapsonPHflash secondOrderSolver = + new sysNewtonRhapsonPHflash(system, 2, system.getPhases()[0].getNumberOfComponents(), 1); + secondOrderSolver.setSpec(Sspec); + secondOrderSolver.solve(1); } + // System.out.println("Entropy: " + system.getEntropy()); + // System.out.println("Temperature: " + system.getTemperature()); + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PSFlashGERG2008.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PSFlashGERG2008.java index 20cb56f55e..99752dedef 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PSFlashGERG2008.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PSFlashGERG2008.java @@ -2,7 +2,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import neqsim.thermo.system.SystemInterface; /** @@ -14,104 +13,97 @@ * @version $Id: $Id */ public class PSFlashGERG2008 extends QfuncFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(PSFlashGERG2008.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(PSFlashGERG2008.class); - double Sspec = 0; - Flash tpFlash; - - double entropy_GERG2008 = 0.0; - double cP_GERG2008 = 0.0; + double Sspec = 0; + Flash tpFlash; - /** - *

- * Constructor for PSFlashGERG2008. - *

- */ - public PSFlashGERG2008() {} + double entropy_GERG2008 = 0.0; + double cP_GERG2008 = 0.0; - /** - *

- * Constructor for PSFlashGERG2008. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Sspec a double - */ - public PSFlashGERG2008(SystemInterface system, double Sspec) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Sspec = Sspec; - } + /** + *

+ * Constructor for PSFlashGERG2008. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Sspec a double + */ + public PSFlashGERG2008(SystemInterface system, double Sspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Sspec = Sspec; + } - /** {@inheritDoc} */ - @Override - public double calcdQdTT() { - return -cP_GERG2008 / system.getTemperature(); - } + /** {@inheritDoc} */ + @Override + public double calcdQdTT() { + return -cP_GERG2008 / system.getTemperature(); + } - /** {@inheritDoc} */ - @Override - public double calcdQdT() { - return -entropy_GERG2008 + Sspec; - } + /** {@inheritDoc} */ + @Override + public double calcdQdT() { + return -entropy_GERG2008 + Sspec; + } - /** {@inheritDoc} */ - @Override - public double solveQ() { - double oldTemp = system.getTemperature(), nyTemp = system.getTemperature(); - int iterations = 1; - double error = 1.0, erorOld = 10.0e10; - double factor = 0.8; + /** {@inheritDoc} */ + @Override + public double solveQ() { + double oldTemp = system.getTemperature(); + double nyTemp = system.getTemperature(); + int iterations = 1; + double error = 1.0; + double erorOld = 10.0e10; + double factor = 0.8; - boolean correctFactor = true; - double newCorr = 1.0; - double[] gergProps; - do { - if (error > erorOld && factor > 0.1 && correctFactor) { - factor *= 0.5; - } else if (error < erorOld && correctFactor) { - factor = 1.0; - } + boolean correctFactor = true; + double newCorr = 1.0; + double[] gergProps; + do { + if (error > erorOld && factor > 0.1 && correctFactor) { + factor *= 0.5; + } else if (error < erorOld && correctFactor) { + factor = 1.0; + } - iterations++; - oldTemp = system.getTemperature(); - gergProps = system.getPhase(0).getProperties_GERG2008(); - entropy_GERG2008 = gergProps[8]*system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K - cP_GERG2008 = gergProps[10]*system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K - newCorr = factor * calcdQdT() / calcdQdTT(); - nyTemp = oldTemp - newCorr; - if (Math.abs(system.getTemperature() - nyTemp) > 10.0) { - nyTemp = system.getTemperature() - - Math.signum(system.getTemperature() - nyTemp) * 10.0; - correctFactor = false; - } else if (nyTemp < 0) { - nyTemp = Math.abs(system.getTemperature() - 10.0); - correctFactor = false; - } else if (Double.isNaN(nyTemp)) { - nyTemp = oldTemp + 1.0; - correctFactor = false; - } else { - correctFactor = true; - } + iterations++; + oldTemp = system.getTemperature(); + gergProps = system.getPhase(0).getProperties_GERG2008(); + entropy_GERG2008 = gergProps[8] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K + cP_GERG2008 = gergProps[10] * system.getPhase(0).getNumberOfMolesInPhase(); // J/mol K + newCorr = factor * calcdQdT() / calcdQdTT(); + nyTemp = oldTemp - newCorr; + if (Math.abs(system.getTemperature() - nyTemp) > 10.0) { + nyTemp = system.getTemperature() - Math.signum(system.getTemperature() - nyTemp) * 10.0; + correctFactor = false; + } else if (nyTemp < 0) { + nyTemp = Math.abs(system.getTemperature() - 10.0); + correctFactor = false; + } else if (Double.isNaN(nyTemp)) { + nyTemp = oldTemp + 1.0; + correctFactor = false; + } else { + correctFactor = true; + } - system.setTemperature(nyTemp); - erorOld = error; - error = Math.abs(calcdQdT());// Math.abs((nyTemp - oldTemp) / (nyTemp)); - } while (((error + erorOld) > 1e-8 || iterations < 3) && iterations < 200); - return nyTemp; - } + system.setTemperature(nyTemp); + erorOld = error; + error = Math.abs(calcdQdT()); // Math.abs((nyTemp - oldTemp) / (nyTemp)); + } while (((error + erorOld) > 1e-8 || iterations < 3) && iterations < 200); + return nyTemp; + } - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - if(system.getNumberOfPhases()>1) { - logger.error("PSFlashGERG2008 only supprt single phase gas calculations"); - return; - } - solveQ(); - system.init(3); - return; + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + if (system.getNumberOfPhases() > 1) { + logger.error("PSFlashGERG2008 only supprt single phase gas calculations"); + return; } + solveQ(); + system.init(3); + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PSflashSingleComp.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PSflashSingleComp.java index c220f84149..9d59d19485 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PSflashSingleComp.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PSflashSingleComp.java @@ -1,5 +1,6 @@ package neqsim.thermodynamicOperations.flashOps; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; /** @@ -11,74 +12,67 @@ * @version $Id: $Id */ public class PSflashSingleComp extends Flash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double Sspec = 0; + double Sspec = 0; - /** - *

- * Constructor for PSflashSingleComp. - *

- */ - public PSflashSingleComp() {} + /** + *

+ * Constructor for PSflashSingleComp. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Sspec a double + * @param type a int + */ + public PSflashSingleComp(SystemInterface system, double Sspec, int type) { + this.system = system; + this.Sspec = Sspec; + } - /** - *

- * Constructor for PSflashSingleComp. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Sspec a double - * @param type a int - */ - public PSflashSingleComp(SystemInterface system, double Sspec, int type) { - this.system = system; - this.Sspec = Sspec; - } - - /** {@inheritDoc} */ - @Override - public void run() { - neqsim.thermodynamicOperations.ThermodynamicOperations bubOps = - new neqsim.thermodynamicOperations.ThermodynamicOperations(system); - double initTemp = system.getTemperature(); + /** {@inheritDoc} */ + @Override + public void run() { + neqsim.thermodynamicOperations.ThermodynamicOperations bubOps = + new neqsim.thermodynamicOperations.ThermodynamicOperations(system); + double initTemp = system.getTemperature(); - if (system.getPressure() < system.getPhase(0).getComponent(0).getPC()) { - try { - bubOps.TPflash(); - if (system.getPhase(0).getPhaseTypeName().equals("gas")) { - bubOps.dewPointTemperatureFlash(); - } else { - bubOps.bubblePointTemperatureFlash(); - } - } catch (Exception e) { - system.setTemperature(initTemp); - logger.error("error", e); - } + if (system.getPressure() < system.getPhase(0).getComponent(0).getPC()) { + try { + bubOps.TPflash(); + if (system.getPhase(0).getType() == PhaseType.GAS) { + bubOps.dewPointTemperatureFlash(); } else { - bubOps.PSflash2(Sspec); - return; + bubOps.bubblePointTemperatureFlash(); } + } catch (Exception ex) { + system.setTemperature(initTemp); + logger.error(ex.getMessage(), ex); + } + } else { + bubOps.PSflash2(Sspec); + return; + } - system.init(3); - double gasEntropy = system.getPhase(0).getEntropy() - / system.getPhase(0).getNumberOfMolesInPhase() * system.getTotalNumberOfMoles(); - double liqEntropy = system.getPhase(1).getEntropy() - / system.getPhase(1).getNumberOfMolesInPhase() * system.getTotalNumberOfMoles(); + system.init(3); + double gasEntropy = system.getPhase(0).getEntropy() + / system.getPhase(0).getNumberOfMolesInPhase() * system.getTotalNumberOfMoles(); + double liqEntropy = system.getPhase(1).getEntropy() + / system.getPhase(1).getNumberOfMolesInPhase() * system.getTotalNumberOfMoles(); - if (Sspec < liqEntropy || Sspec > gasEntropy) { - system.setTemperature(initTemp); - bubOps.PSflash2(Sspec); - return; - } - double beta = (Sspec - liqEntropy) / (gasEntropy - liqEntropy); - system.setBeta(beta); - system.init(3); + if (Sspec < liqEntropy || Sspec > gasEntropy) { + system.setTemperature(initTemp); + bubOps.PSflash2(Sspec); + return; } + double beta = (Sspec - liqEntropy) / (gasEntropy - liqEntropy); + system.setBeta(beta); + system.init(3); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java index 79bc5cdb4d..de8b27f132 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PUflash.java @@ -11,109 +11,111 @@ * @version $Id: $Id */ public class PUflash extends Flash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double Uspec = 0; - Flash tpFlash; + double Uspec = 0; + Flash tpFlash; - /** - *

- * Constructor for PUflash. - *

- */ - public PUflash() {} + /** + *

+ * Constructor for PUflash. + *

+ */ + public PUflash() {} - /** - *

- * Constructor for PUflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Uspec a double - */ - public PUflash(SystemInterface system, double Uspec) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Uspec = Uspec; - } + /** + *

+ * Constructor for PUflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Uspec a double + */ + public PUflash(SystemInterface system, double Uspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Uspec = Uspec; + } - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCv(); - return dQdTT; - } + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCv(); + return dQdTT; + } - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQ = system.getInternalEnergy() - Uspec; - return dQ; - } + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQ = system.getInternalEnergy() - Uspec; + return dQ; + } - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); - double iterations = 1; - double error = 1.0, erorOld = 10.0e10; - double factor = 0.8; - do { - if (error > erorOld) { - factor /= 2.0; - } else if (error < erorOld && factor < 0.8) { - factor *= 1.1; - } - iterations++; - oldTemp = nyTemp; - system.init(2); - nyTemp = oldTemp - factor * calcdQdT() / calcdQdTT(); - // f(Math.abs(1.0/nyTemp-1.0/oldTemp)>5.0) nyTemp = 1.0/(1.0/oldTemp + - // Math.signum(1.0/nyTemp-1.0/oldTemp)*5.0); - if (Double.isNaN(nyTemp)) { - nyTemp = oldTemp + 1.0; - } - system.setTemperature(1.0 / nyTemp); - tpFlash.run(); - erorOld = error; - error = Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); - // System.out.println("error " + error); - // System.out.println("temperature " + system.getTemperature() + " " + - // iterations); - } while (error > 1e-8 && iterations < 500); + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldTemp = 1.0 / system.getTemperature(); + double nyTemp = 1.0 / system.getTemperature(); + double iterations = 1; + double error = 1.0; + double erorOld = 10.0e10; + double factor = 0.8; + do { + if (error > erorOld) { + factor /= 2.0; + } else if (error < erorOld && factor < 0.8) { + factor *= 1.1; + } + iterations++; + oldTemp = nyTemp; + system.init(2); + nyTemp = oldTemp - factor * calcdQdT() / calcdQdTT(); + // f(Math.abs(1.0/nyTemp-1.0/oldTemp)>5.0) nyTemp = 1.0/(1.0/oldTemp + + // Math.signum(1.0/nyTemp-1.0/oldTemp)*5.0); + if (Double.isNaN(nyTemp)) { + nyTemp = oldTemp + 1.0; + } + system.setTemperature(1.0 / nyTemp); + tpFlash.run(); + erorOld = error; + error = Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / oldTemp)); + // System.out.println("error " + error); + // System.out.println("temperature " + system.getTemperature() + " " + + // iterations); + } while (error > 1e-8 && iterations < 500); - return 1.0 / nyTemp; - } + return 1.0 / nyTemp; + } - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - // System.out.println("internal energy start: " + system.getInternalEnergy()); - solveQ(); - // System.out.println("internal energy end: " + system.getInternalEnergy()); - // System.out.println("enthalpy: " + system.getEnthalpy()); - // System.out.println("Temperature: " + system.getTemperature()); - } + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + // System.out.println("internal energy start: " + system.getInternalEnergy()); + solveQ(); + // System.out.println("internal energy end: " + system.getInternalEnergy()); + // System.out.println("enthalpy: " + system.getEnthalpy()); + // System.out.println("Temperature: " + system.getTemperature()); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/PVrefluxflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/PVrefluxflash.java index 6eb1387996..c7e0153dcd 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/PVrefluxflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/PVrefluxflash.java @@ -11,81 +11,77 @@ * @version $Id: $Id */ public class PVrefluxflash extends Flash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - Flash tpFlash; - int refluxPhase = 0; - double refluxSpec = 0.5; + Flash tpFlash; + int refluxPhase = 0; + double refluxSpec = 0.5; - /** - *

- * Constructor for PVrefluxflash. - *

- */ - public PVrefluxflash() {} + /** + *

+ * Constructor for PVrefluxflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param refluxSpec a double + * @param refluxPhase a int + */ + public PVrefluxflash(SystemInterface system, double refluxSpec, int refluxPhase) { + this.system = system; + this.tpFlash = new TPflash(system); + this.refluxSpec = refluxSpec; + this.refluxPhase = refluxPhase; + } - /** - *

- * Constructor for PVrefluxflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param refluxSpec a double - * @param refluxPhase a int - */ - public PVrefluxflash(SystemInterface system, double refluxSpec, int refluxPhase) { - this.system = system; - this.tpFlash = new TPflash(system); - this.refluxSpec = refluxSpec; - this.refluxPhase = refluxPhase; - } + /** {@inheritDoc} */ + @Override + public void run() { + int iter = 0; + double f_func = 0.0; + double f_func_old = 0.0; + double df_func_dt = 0; + double t_old = 0; + double t_oldold = 0.0; + tpFlash.run(); + double dt = 1.0; + do { + iter++; - /** {@inheritDoc} */ - @Override - public void run() { - // System.out.println("enthalpy: " + system.getEnthalpy()); - // double err = 0; - int iter = 0; - double f_func = 0.0, f_func_old = 0.0, df_func_dt = 0, t_old = 0, t_oldold = 0.0; - tpFlash.run(); - double dt = 1.0; - do { - iter++; + f_func_old = f_func; + t_oldold = t_old; + t_old = system.getTemperature(); - f_func_old = f_func; - t_oldold = t_old; - t_old = system.getTemperature(); + f_func = refluxSpec - (1.0 / system.getBeta(refluxPhase) - 1.0); + // system.getPhase(refluxPhase).getVolume() + // / system.getVolume(); + df_func_dt = (f_func - f_func_old) / (t_old - t_oldold); - f_func = refluxSpec - (1.0 / system.getBeta(refluxPhase) - 1.0);// system.getPhase(refluxPhase).getVolume() - // / system.getVolume(); - df_func_dt = (f_func - f_func_old) / (t_old - t_oldold); + // err = Math.abs(f_func); - // err = Math.abs(f_func); + if (iter < 4) { + if (f_func > 0) { + system.setTemperature(system.getTemperature() + 0.1); + } else if (f_func < 0) { + system.setTemperature(system.getTemperature() - 0.1); + } + } else { + dt = f_func / df_func_dt; + if (Math.abs(dt) > 2.0) { + dt = Math.signum(dt) * 2.0; + } - if (iter < 4) { - if (f_func > 0) { - system.setTemperature(system.getTemperature() + 0.1); - } else if (f_func < 0) { - system.setTemperature(system.getTemperature() - 0.1); - } - } else { - dt = f_func / df_func_dt; - if (Math.abs(dt) > 2.0) { - dt = Math.signum(dt) * 2.0; - } + system.setTemperature(system.getTemperature() - dt * (1.0 * iter) / (iter + 50.0)); + } + tpFlash.run(); - system.setTemperature(system.getTemperature() - dt * (1.0 * iter) / (iter + 50.0)); - } - tpFlash.run(); + // System.out.println("temp " + system.getTemperature() + " err " + err + " + // volfor " + system.getPhase(refluxPhase).getVolume() / system.getVolume()); + } while (Math.abs(dt) > 1e-8 && Math.abs(f_func) > 1e-6 && iter < 1000); + } - // System.out.println("temp " + system.getTemperature() + " err " + err + " - // volfor " + system.getPhase(refluxPhase).getVolume() / system.getVolume()); - } while (Math.abs(dt) > 1e-8 && Math.abs(f_func) > 1e-6 && iter < 1000); - } - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java index f7e0ad1e45..48fc794261 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/QfuncFlash.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; + import neqsim.thermo.system.SystemInterface; /** @@ -13,96 +14,96 @@ * @version $Id: $Id */ public class QfuncFlash extends Flash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(QfuncFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(QfuncFlash.class); - double Hspec = 0; - Flash tpFlash; - int type = 0; + double Hspec = 0; + Flash tpFlash; + int type = 0; - /** - *

- * Constructor for QfuncFlash. - *

- */ - public QfuncFlash() {} + /** + *

+ * Constructor for QfuncFlash. + *

+ */ + public QfuncFlash() { + } - /** - *

- * Constructor for QfuncFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Hspec a double - * @param type a int - */ - public QfuncFlash(SystemInterface system, double Hspec, int type) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Hspec = Hspec; - this.type = type; - } + /** + *

+ * Constructor for QfuncFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Hspec a double + * @param type a int + */ + public QfuncFlash(SystemInterface system, double Hspec, int type) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Hspec = Hspec; + this.type = type; + } - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCp(); - return dQdTT; - } + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + double dQdTT = -system.getTemperature() * system.getTemperature() * system.getCp(); + return dQdTT; + } - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQ = system.getEnthalpy() - Hspec; - return dQ; - } + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQ = system.getEnthalpy() - Hspec; + return dQ; + } - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); - double iterations = 1; - do { - iterations++; - oldTemp = nyTemp; - system.init(3); - nyTemp = oldTemp - calcdQdT() / calcdQdTT(); - system.setTemperature(1.0 / nyTemp); - tpFlash.run(); - } while (Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / nyTemp)) > 1e-9 - && iterations < 1000); - return 1.0 / nyTemp; - } + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldTemp = 1.0 / system.getTemperature(), nyTemp = 1.0 / system.getTemperature(); + double iterations = 1; + do { + iterations++; + oldTemp = nyTemp; + system.init(3); + nyTemp = oldTemp - calcdQdT() / calcdQdTT(); + system.setTemperature(1.0 / nyTemp); + tpFlash.run(); + } while (Math.abs((1.0 / nyTemp - 1.0 / oldTemp) / (1.0 / nyTemp)) > 1e-9 && iterations < 1000); + return 1.0 / nyTemp; + } - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - logger.info("entropy: " + system.getEntropy()); - sysNewtonRhapsonPHflash secondOrderSolver = new sysNewtonRhapsonPHflash(system, 2, - system.getPhases()[0].getNumberOfComponents(), type); - secondOrderSolver.setSpec(Hspec); - secondOrderSolver.solve(1); - } + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + logger.info("entropy: " + system.getEntropy()); + sysNewtonRhapsonPHflash secondOrderSolver = new sysNewtonRhapsonPHflash(system, 2, + system.getPhases()[0].getNumberOfComponents(), type); + secondOrderSolver.setSpec(Hspec); + secondOrderSolver.solve(1); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/RachfordRice.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/RachfordRice.java new file mode 100644 index 0000000000..415717ce61 --- /dev/null +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/RachfordRice.java @@ -0,0 +1,507 @@ +/* + * RachfordRice.java + * + * Created on 1.april 2024 + */ + +package neqsim.thermodynamicOperations.flashOps; + +import java.io.Serializable; +import neqsim.thermo.component.ComponentInterface; +import neqsim.thermo.system.SystemInterface; + +/** + * RachfordRice classes. + * + * @author Even Solbraa + */ +public class RachfordRice implements Serializable { + private static final long serialVersionUID = 1000; + private double[] beta = new double[2]; + private static String method = "Michelsen2001"; // alternative use Nielsen2023 + + /** + *

+ * Getter for the field method. + *

+ * + * @return a {@link java.lang.String} object + */ + public static String getMethod() { + return RachfordRice.method; + } + + /** + *

+ * Setter for the field method. + *

+ * + * @param method a {@link java.lang.String} object + */ + public static void setMethod(String method) { + RachfordRice.method = method; + } + + /** + *

+ * calcBeta. For gas liquid systems. Method used is defined in method String variable + *

+ * + * @param K an array of type double + * @param z an array of type double + * @return Beta Mole fraction of gas phase + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double calcBeta(double[] K, double[] z) throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + if (method.equals("Michelsen2001")) { + return calcBetaMichelsen2001(K, z); + } else if (method.equals("Nielsen2023")) { + return calcBetaNielsen2023(K, z); + } else { + return calcBetaMichelsen2001(K, z); + } + } + + /** + *

+ * calcBeta. For gas liquid systems. Method based on Michelsen Mollerup, 2001 + *

+ * + * @param K an array of type double + * @param z an array of type double + * @return Beta Mole fraction of gas phase + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double calcBetaMichelsen2001(double[] K, double[] z) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + int i; + double tolerance = neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; + double midler = 0; + double minBeta = tolerance; + double maxBeta = 1.0 - tolerance; + double g0 = -1.0; + double g1 = 1.0; + + for (i = 0; i < K.length; i++) { + midler = (K[i] * z[i] - 1.0) / (K[i] - 1.0); + if ((midler > minBeta) && (K[i] > 1.0)) { + minBeta = midler; + } + midler = (1.0 - z[i]) / (1.0 - K[i]); + if ((midler < maxBeta) && (K[i] < 1.0)) { + maxBeta = midler; + } + g0 += z[i] * K[i]; + g1 += -z[i] / K[i]; + } + + if (g0 < 0) { + return tolerance; + } + if (g1 > 0) { + return 1.0 - tolerance; + } + + double nybeta = (minBeta + maxBeta) / 2.0; + double gtest = 0.0; + for (i = 0; i < K.length; i++) { + gtest += z[i] * (K[i] - 1.0) / (1.0 - nybeta + nybeta * K[i]); + } + + if (gtest >= 0) { + minBeta = nybeta; + } else { + maxBeta = nybeta; + } + + if (gtest < 0) { + double minold = minBeta; + minBeta = 1.0 - maxBeta; + maxBeta = 1.0 - minold; + } + + int iterations = 0; + int maxIterations = 300; + double step = 1.0; + double gbeta = 0.0; + double deriv = 0.0; + double betal = 1.0 - nybeta; + do { + iterations++; + if (gtest >= 0) { + deriv = 0.0; + gbeta = 0.0; + + for (i = 0; i < K.length; i++) { + double temp1 = (K[i] - 1.0); + double temp2 = 1.0 + temp1 * nybeta; + deriv += -(z[i] * temp1 * temp1) / (temp2 * temp2); + gbeta += z[i] * (K[i] - 1.0) / (1.0 + (K[i] - 1.0) * nybeta); + } + + if (gbeta >= 0) { + minBeta = nybeta; + } else { + maxBeta = nybeta; + } + nybeta -= (gbeta / deriv); + + if (nybeta > maxBeta) { + nybeta = maxBeta; + } + if (nybeta < minBeta) { + nybeta = minBeta; + } + } else { + deriv = 0.0; + gbeta = 0.0; + + for (i = 0; i < K.length; i++) { + deriv -= (z[i] * (K[i] - 1.0) * (1.0 - K[i])) / Math.pow((betal + (1 - betal) * K[i]), 2); + gbeta += z[i] * (K[i] - 1.0) / (betal + (-betal + 1.0) * K[i]); + } + + if (gbeta < 0) { + minBeta = betal; + } else { + maxBeta = betal; + } + + betal -= (gbeta / deriv); + + if (betal > maxBeta) { + betal = maxBeta; + } + if (betal < minBeta) { + betal = minBeta; + } + nybeta = 1.0 - betal; + } + step = gbeta / deriv; + } while (Math.abs(step) >= 1.5e-10 && iterations < maxIterations); + if (nybeta <= tolerance) { + nybeta = tolerance; + } else if (nybeta >= 1.0 - tolerance) { + nybeta = 1.0 - tolerance; + } + beta[0] = nybeta; + beta[1] = 1.0 - nybeta; + + if (iterations >= maxIterations) { + throw new neqsim.util.exception.TooManyIterationsException(new RachfordRice(), "calcBeta", + maxIterations); + } + if (Double.isNaN(nybeta)) { + throw new neqsim.util.exception.IsNaNException(new RachfordRice(), "calcBeta", "beta"); + } + return nybeta; + } + + /** + *

+ * calcBetaNielsen2023. For gas liquid systems. Method based on Avoiding round-off error in the + * Rachford–Rice equation, Nielsen, Lia, 2023 + *

+ * + * @param K an array of type double + * @param z an array of type double + * @return Beta Mole fraction of gas phase + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public double calcBetaNielsen2023(double[] K, double[] z) + throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + double tolerance = neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; + double g0 = -1.0; + double g1 = 1.0; + + for (int i = 0; i < K.length; i++) { + g0 += z[i] * K[i]; + g1 += -z[i] / K[i]; + } + + if (g0 < 0) { + return tolerance; + } + if (g1 > 0) { + return 1.0 - tolerance; + } + + double V = 0.5; + double h = 0.0; + + for (int i = 0; i < K.length; i++) { + h += z[i] * (K[i] - 1.0) / (1.0 + V * (K[i] - 1.0)); + } + if (h > 0) { + for (int i = 0; i < K.length; i++) { + K[i] = 1.0 / K[i]; + } + } + + double Kmax = K[0]; + double Kmin = K[0]; + + for (int i = 1; i < K.length; i++) { + if (K[i] < Kmin) { + Kmin = K[i]; + } else if (K[i] > Kmax) { + Kmax = K[i]; + } + } + + double alphaMin = 1.0 / (1.0 - Kmax); + double alphaMax = 1.0 / (1.0 - Kmin); + + double alpha = V; + + double a = (alpha - alphaMin) / (alphaMax - alpha); + double b = 1.0 / (alpha - alphaMin); + + double[] c = new double[K.length]; + double[] d = new double[K.length]; + for (int i = 0; i < K.length; i++) { + c[i] = 1.0 / (1.0 - K[i]); + d[i] = (alphaMin - c[i]) / (alphaMax - alphaMin); + } + + double hb = 0.0; + double amax = alpha; + double bmax = 1e20; + double amin = 0; + double bmin = 1.0 / (alphaMax - alphaMin); + int iter = 0; + int maxIterations = 300; + do { + iter++; + double funk = 0; + double funkder = 0.0; + hb = 0.0; + double hbder = 0.0; + for (int i = 0; i < K.length; i++) { + funk -= z[i] * a * (1.0 + a) / (d[i] + a * (1.0 + d[i])); + funkder -= + z[i] * (a * a + (1.0 + a) * (1.0 + a) * d[i]) / Math.pow(d[i] + a * (1.0 + d[i]), 2.0); + hb += z[i] * b / (1.0 + b * (alphaMin - c[i])); + hbder += z[i] / Math.pow(1.0 + b * (alphaMin - c[i]), 2.0); + } + if (funk > 0) { + amax = a; + } else { + amin = a; + } + if (hb > 0) { + bmax = b; + } else { + bmin = b; + } + a = a - funk / funkder; + if (a > amax || a < amin) { + a = (amax + amin) / 2.0; + } + b = b - hb / hbder; + if (b > bmax || b < bmin) { + b = (bmax + bmin) / 2.0; + } + } while (Math.abs(hb) > 1e-10 && iter < maxIterations); + + V = -((1 / b) / a - alphaMax); + + if (h > 0) { + V = 1 - V; + } + + if (V <= tolerance) { + V = tolerance; + } else if (V >= 1.0 - tolerance) { + V = 1.0 - tolerance; + } + + beta[0] = V; + beta[1] = 1.0 - V; + + if (iter >= maxIterations) { + throw new neqsim.util.exception.TooManyIterationsException(new RachfordRice(), "calcBeta", + maxIterations); + } + if (Double.isNaN(V)) { + throw new neqsim.util.exception.IsNaNException(new RachfordRice(), "calcBeta", "beta"); + } + + return V; + } + + /** + *

+ * Getter for the field beta. + *

+ * + * @return an array of type double + */ + public double[] getBeta() { + return beta; + } + + /** + *

+ * calcBetaS. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @return a double + * @throws neqsim.util.exception.IsNaNException if any. + * @throws neqsim.util.exception.TooManyIterationsException if any. + */ + public final double calcBetaS(SystemInterface system) throws neqsim.util.exception.IsNaNException, + neqsim.util.exception.TooManyIterationsException { + ComponentInterface[] compArray = system.getPhase(0).getComponents(); + + int i; + double tolerance = neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; + double midler = 0; + double minBeta = tolerance; + double maxBeta = 1.0 - tolerance; + double g0 = -1.0; + double g1 = 1.0; + + for (i = 0; i < system.getNumberOfComponents(); i++) { + midler = (compArray[i].getK() * compArray[i].getz() - 1.0) / (compArray[i].getK() - 1.0); + if ((midler > minBeta) && (compArray[i].getK() > 1.0)) { + minBeta = midler; + } + midler = (1.0 - compArray[i].getz()) / (1.0 - compArray[i].getK()); + if ((midler < maxBeta) && (compArray[i].getK() < 1.0)) { + maxBeta = midler; + } + g0 += compArray[i].getz() * compArray[i].getK(); + g1 += -compArray[i].getz() / compArray[i].getK(); + } + + if (g0 < 0) { + this.beta[1] = 1.0 - tolerance; + this.beta[0] = tolerance; + return this.beta[0]; + } + if (g1 > 0) { + this.beta[1] = tolerance; + this.beta[0] = 1.0 - tolerance; + return this.beta[0]; + } + + double nybeta = (minBeta + maxBeta) / 2.0; + + double gtest = 0.0; + for (i = 0; i < system.getNumberOfComponents(); i++) { + gtest += compArray[i].getz() * (compArray[i].getK() - 1.0) + / (1.0 - nybeta + nybeta * compArray[i].getK()); + } + + if (gtest >= 0) { + minBeta = nybeta; + } else { + maxBeta = nybeta; + } + + if (gtest < 0) { + double minold = minBeta; + minBeta = 1.0 - maxBeta; + maxBeta = 1.0 - minold; + } + + int iterations = 0; + int maxIterations = 300; + double step = 1.0; + double deriv = 0.0; + double gbeta = 0.0; + double betal = 1.0 - nybeta; + + do { + iterations++; + if (gtest >= 0) { + deriv = 0.0; + gbeta = 0.0; + + for (i = 0; i < system.getNumberOfComponents(); i++) { + double temp1 = (compArray[i].getK() - 1.0); + double temp2 = 1.0 + temp1 * nybeta; + deriv += -(compArray[i].getz() * temp1 * temp1) / (temp2 * temp2); + gbeta += compArray[i].getz() * (compArray[i].getK() - 1.0) + / (1.0 + (compArray[i].getK() - 1.0) * nybeta); + } + + if (gbeta >= 0) { + minBeta = nybeta; + } else { + maxBeta = nybeta; + } + nybeta -= (gbeta / deriv); + + if (nybeta > maxBeta) { + nybeta = maxBeta; + } + if (nybeta < minBeta) { + nybeta = minBeta; + } + } else { + deriv = 0.0; + gbeta = 0.0; + + for (i = 0; i < system.getNumberOfComponents(); i++) { + deriv -= (compArray[i].getz() * (compArray[i].getK() - 1.0) * (1.0 - compArray[i].getK())) + / Math.pow((betal + (1 - betal) * compArray[i].getK()), 2); + gbeta += compArray[i].getz() * (compArray[i].getK() - 1.0) + / (betal + (-betal + 1.0) * compArray[i].getK()); + } + + if (gbeta < 0) { + minBeta = betal; + } else { + maxBeta = betal; + } + + betal -= (gbeta / deriv); + + if (betal > maxBeta) { + betal = maxBeta; + } + if (betal < minBeta) { + betal = minBeta; + } + + nybeta = 1.0 - betal; + } + step = gbeta / deriv; + } while (Math.abs(step) >= 1.0e-10 && iterations < maxIterations); // && + + if (nybeta <= tolerance) { + // this.phase = 1; + nybeta = tolerance; + } else if (nybeta >= 1.0 - tolerance) { + // this.phase = 0; + nybeta = 1.0 - tolerance; + // superheated vapour + } else { + // this.phase = 2; + } // two-phase liquid-gas + + this.beta[0] = nybeta; + this.beta[1] = 1.0 - nybeta; + + if (iterations >= maxIterations) { + throw new neqsim.util.exception.TooManyIterationsException(this, "calcBeta", maxIterations); + } + if (Double.isNaN(beta[1])) { + /* + * for (i = 0; i < numberOfComponents; i++) { System.out.println("K " + compArray[i].getK()); + * System.out.println("z " + compArray[i].getz()); } + */ + throw new neqsim.util.exception.IsNaNException(this, "calcBeta", "beta"); + } + return this.beta[0]; + } +} diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/SaturateWithWater.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/SaturateWithWater.java index 8a67f223fd..0a785033b9 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/SaturateWithWater.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/SaturateWithWater.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -15,121 +16,118 @@ * @version $Id: $Id */ public class SaturateWithWater extends QfuncFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(SaturateWithWater.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SaturateWithWater.class); - Flash tpFlash; + Flash tpFlash; - /** - *

- * Constructor for SaturateWithWater. - *

- */ - public SaturateWithWater() {} + /** + *

+ * Constructor for SaturateWithWater. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public SaturateWithWater(SystemInterface system) { + this.system = system; + this.tpFlash = new TPflash(system); + } - /** - *

- * Constructor for SaturateWithWater. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public SaturateWithWater(SystemInterface system) { - this.system = system; - this.tpFlash = new TPflash(system); + /** {@inheritDoc} */ + @Override + public void run() { + if (!system.getPhase(0).hasComponent("water")) { + system.addComponent("water", system.getTotalNumberOfMoles() / 100.0); + system.setMixingRule(system.getMixingRule()); } - /** {@inheritDoc} */ - @Override - public void run() { - if (!system.getPhase(0).hasComponent("water")) { - system.addComponent("water", system.getTotalNumberOfMoles()); - system.createDatabase(true); - system.setMixingRule(system.getMixingRule()); - if (system.doMultiPhaseCheck()) { - system.setMultiPhaseCheck(true); - } - system.init(0); - } - double dn = 1.0; - int i = 0; - - this.tpFlash = new TPflash(system); - tpFlash.run(); - boolean hasAq = false; - if (system.hasPhaseType("aqueous")) { - hasAq = true; - } - double lastdn = 0.0; - if (system.hasPhaseType("aqueous")) { - lastdn = system.getPhaseOfType("aqueous").getComponent("water") - .getNumberOfMolesInPhase(); - } else { - lastdn = system.getPhase(0).getNumberOfMolesInPhase() / 100.0; - } - - do { - i++; + boolean changedMultiPhase = false; + if (system.doMultiPhaseCheck() == false) { + system.setMultiPhaseCheck(true); + changedMultiPhase = true; + } - if (!hasAq) { - system.addComponent("water", lastdn * 0.5); - lastdn *= 0.8; - } else { - lastdn = system.getPhaseOfType("aqueous").getComponent("water") - .getNumberOfMolesInPhase(); - dn = lastdn / system.getNumberOfMoles(); - system.addComponent("water", -lastdn); - } - tpFlash.run(); - // system.display(); - hasAq = system.hasPhaseType("aqueous"); - } while ((i < 50 && Math.abs(dn) > 1e-6) || !hasAq && i < 50); - if (i == 50) { - logger.error("could not find solution - in water sturate : dn " + dn); - } - // logger.info("i " + i + " dn " + dn); - // System.out.println("i " + i + " dn " + dn) ; // system.display(); - system.removePhase(system.getNumberOfPhases() - 1); - tpFlash.run(); + if (system.getComponent("water").getNumberOfmoles() < system.getTotalNumberOfMoles() / 2.0) { + system.addComponent("water", system.getTotalNumberOfMoles()); + } + this.tpFlash = new TPflash(system); + tpFlash.run(); + boolean hasAq = false; + if (system.hasPhaseType(PhaseType.AQUEOUS)) { + hasAq = true; + } + double lastdn = 0.0; + if (system.hasPhaseType(PhaseType.AQUEOUS)) { + lastdn = system.getPhase(PhaseType.AQUEOUS).getNumberOfMolesInPhase(); + } else { + lastdn = system.getPhase(0).getNumberOfMolesInPhase(); + } + double dn = 1.0; + int i = 0; + do { + i++; + if (system.getNumberOfPhases() == 1 && hasAq) { + lastdn = -system.getComponent("water").getNumberOfmoles() * 0.1; + } else if (!hasAq) { + lastdn = Math.abs(lastdn) * 1.05; + } else { + lastdn = + -system.getPhaseOfType("aqueous").getComponent("water").getNumberOfMolesInPhase() * 0.9; + } + dn = lastdn / system.getNumberOfMoles(); + system.addComponent("water", lastdn); + tpFlash.run(); + hasAq = system.hasPhaseType(PhaseType.AQUEOUS); + } while (Math.abs(dn) > 1e-7 && i <= 50); + if (i == 50) { + logger.error("could not find solution - in water saturate : dn " + dn); + } + if (system.hasPhaseType(PhaseType.AQUEOUS)) { + system.removePhase(system.getNumberOfPhases() - 1); + tpFlash.run(); + } + if (changedMultiPhase) { + system.setMultiPhaseCheck(false); } + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 70.0, 150.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 70.0, 150.0); - testSystem.addComponent("methane", 75.0); - testSystem.addComponent("ethane", 7.5); - testSystem.addComponent("propane", 4.0); - testSystem.addComponent("n-butane", 1.0); - testSystem.addComponent("i-butane", 0.6); - testSystem.addComponent("n-hexane", 0.3); - testSystem.addPlusFraction("C6", 1.3, 100.3 / 1000.0, 0.8232); - // testSystem.addComponent("water", 0.3); + testSystem.addComponent("methane", 75.0); + testSystem.addComponent("ethane", 7.5); + testSystem.addComponent("propane", 4.0); + testSystem.addComponent("n-butane", 1.0); + testSystem.addComponent("i-butane", 0.6); + testSystem.addComponent("n-hexane", 0.3); + testSystem.addPlusFraction("C6", 1.3, 100.3 / 1000.0, 0.8232); + // testSystem.addComponent("water", 0.3); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.setMultiPhaseCheck(true); - testSystem.init(0); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.setMultiPhaseCheck(true); + testSystem.init(0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - // testSystem.display(); - testOps.saturateWithWater(); - // testSystem.display(); - // testSystem.addComponent("water", 1); - // testOps.saturateWithWater(); - testSystem.display(); - // testOps.TPflash(); - } catch (Exception e) { - logger.error(e.toString()); - } - // testSystem.display(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.TPflash(); + // testSystem.display(); + testOps.saturateWithWater(); + // testSystem.display(); + // testSystem.addComponent("water", 1); + // testOps.saturateWithWater(); + // testSystem.display(); + // testOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + // testSystem.display(); + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash.java index 6c60cef0db..ceac27e312 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash.java @@ -3,6 +3,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import Jama.Matrix; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; /** @@ -14,356 +15,350 @@ * @version $Id: $Id */ public class SolidFlash extends TPflash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(SolidFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SolidFlash.class); - // SystemInterface clonedSystem; - boolean multiPhaseTest = false; - double dQdbeta[]; - double Qmatrix[][]; - double E[]; - double Q = 0; - int solidComponent = 0; - boolean hasRemovedPhase = false; - boolean secondTime = false; + // SystemInterface clonedSystem; + boolean multiPhaseTest = false; + double[] dQdbeta; + double[][] Qmatrix; + double[] E; + double Q = 0; + int solidComponent = 0; + boolean hasRemovedPhase = false; + boolean secondTime = false; - /** - *

- * Constructor for SolidFlash. - *

- */ - public SolidFlash() {} + /** + *

+ * Constructor for SolidFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public SolidFlash(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for SolidFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public SolidFlash(SystemInterface system) { - super(system); - } + /** + *

+ * Setter for the field solidComponent. + *

+ * + * @param i a int + */ + public void setSolidComponent(int i) { + solidComponent = i; + } - /** - *

- * Setter for the field solidComponent. - *

- * - * @param i a int - */ - public void setSolidComponent(int i) { - solidComponent = i; - } + /** + *

+ * Constructor for SolidFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param checkForSolids Set true to do solid phase check and calculations + */ + public SolidFlash(SystemInterface system, boolean checkForSolids) { + super(system, checkForSolids); + } - /** - *

- * Constructor for SolidFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param check a boolean - */ - public SolidFlash(SystemInterface system, boolean check) { - super(system, check); - } + /** + *

+ * calcMultiPhaseBeta. + *

+ */ + public void calcMultiPhaseBeta() {} - /** - *

- * calcMultiPhaseBeta. - *

- */ - public void calcMultiPhaseBeta() {} - - /** - *

- * setXY. - *

- */ - public void setXY() { - for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - system.getPhase(k).getComponent(i).setx(system.getPhase(0).getComponent(i).getz() - / E[i] / system.getPhase(k).getComponent(i).getFugacityCoefficient()); - /* - * if (system.getPhase(k).getComponent(i).getx() > 1.0) { - * system.getPhase(k).getComponent(i).setx(1.0 - 1e-30); } if - * (system.getPhase(k).getComponent(i).getx() < 0.0) { - * system.getPhase(k).getComponent(i).setx(1.0e-30); } - */ - } - system.getPhase(k).normalize(); - } + /** + *

+ * setXY. + *

+ */ + public void setXY() { + for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + system.getPhase(k).getComponent(i).setx(system.getPhase(0).getComponent(i).getz() / E[i] + / system.getPhase(k).getComponent(i).getFugacityCoefficient()); + /* + * if (system.getPhase(k).getComponent(i).getx() > 1.0) { + * system.getPhase(k).getComponent(i).setx(1.0 - 1e-30); } if + * (system.getPhase(k).getComponent(i).getx() < 0.0) { + * system.getPhase(k).getComponent(i).setx(1.0e-30); } + */ + } + system.getPhase(k).normalize(); } + } - /** - *

- * checkX. - *

- */ - public void checkX() { - for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { - double x = 0.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - x += system.getPhase(k).getComponent(i).getx(); - } - // logger.info("x tot " + x + " PHASE " + k); - if (x < 1.0 - 1e-6) { - // logger.info("removing phase " + k); - system.setBeta(system.getNumberOfPhases() - 2, - system.getBeta(system.getNumberOfPhases() - 1)); - system.setBeta(0, 1.0 - system.getBeta(system.getNumberOfPhases() - 1)); - system.setNumberOfPhases(system.getNumberOfPhases() - 1); - system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); - system.init(1); - calcE(); - setXY(); - return; - } - } + /** + *

+ * checkX. + *

+ */ + public void checkX() { + for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { + double x = 0.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + x += system.getPhase(k).getComponent(i).getx(); + } + // logger.info("x tot " + x + " PHASE " + k); + if (x < 1.0 - 1e-6) { + // logger.info("removing phase " + k); + system.setBeta(system.getNumberOfPhases() - 2, + system.getBeta(system.getNumberOfPhases() - 1)); + system.setBeta(0, 1.0 - system.getBeta(system.getNumberOfPhases() - 1)); + system.setNumberOfPhases(system.getNumberOfPhases() - 1); + system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); + system.init(1); + calcE(); + setXY(); + return; + } } + } - /** - *

- * calcE. - *

- */ - public void calcE() { - E = new double[system.getPhases()[0].getNumberOfComponents()]; + /** + *

+ * calcE. + *

+ */ + public void calcE() { + E = new double[system.getPhases()[0].getNumberOfComponents()]; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - E[i] = 0.0; - for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { - E[i] += system.getBeta(k) - / system.getPhase(k).getComponent(i).getFugacityCoefficient(); - } - // logger.info("Ei " +E[i]); - // if( - } - // E[solidComponent] += - // system.getBeta(system.getNumberOfPhases()-1)/system.getPhase(3).getComponent(solidComponent).getFugacityCoefficient(); - E[solidComponent] = system.getPhase(0).getComponent(solidComponent).getz() - / system.getPhases()[3].getComponents()[solidComponent].getFugacityCoefficient(); - // logger.info("Ei " +E[solidComponent]); - // logger.info("fug " - // +system.getPhase(3).getComponent(solidComponent).getFugacityCoefficient()); - // logger.info("zi " +system.getPhase(0).getComponent(solidComponent).getz()); + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + E[i] = 0.0; + for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { + E[i] += system.getBeta(k) / system.getPhase(k).getComponent(i).getFugacityCoefficient(); + } + // logger.info("Ei " +E[i]); + // if( } + // E[solidComponent] += + // system.getBeta(system.getNumberOfPhases()-1) / + // system.getPhase(3).getComponent(solidComponent).getFugacityCoefficient(); + E[solidComponent] = system.getPhase(0).getComponent(solidComponent).getz() + / system.getPhases()[3].getComponents()[solidComponent].getFugacityCoefficient(); + // logger.info("Ei " +E[solidComponent]); + // logger.info("fug " + // +system.getPhase(3).getComponent(solidComponent).getFugacityCoefficient()); + // logger.info("zi " +system.getPhase(0).getComponent(solidComponent).getz()); + } - /** - *

- * calcQ. - *

- * - * @return a double - */ - public double calcQ() { - Q = 0; - double betaTotal = 0; - dQdbeta = new double[system.getNumberOfPhases() - 1]; - Qmatrix = new double[system.getNumberOfPhases() - 1][system.getNumberOfPhases() - 1]; + /** + *

+ * calcQ. + *

+ * + * @return a double + */ + public double calcQ() { + Q = 0; + double betaTotal = 0; + dQdbeta = new double[system.getNumberOfPhases() - 1]; + Qmatrix = new double[system.getNumberOfPhases() - 1][system.getNumberOfPhases() - 1]; - for (int k = 0; k < system.getNumberOfPhases(); k++) { - betaTotal += system.getBeta(k); - } + for (int k = 0; k < system.getNumberOfPhases(); k++) { + betaTotal += system.getBeta(k); + } - Q = betaTotal; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - Q -= Math.log(E[i]) * system.getPhase(0).getComponents()[i].getz(); - } + Q = betaTotal; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + Q -= Math.log(E[i]) * system.getPhase(0).getComponents()[i].getz(); + } - for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { - dQdbeta[k] = 1.0 - system.getPhases()[3].getComponents()[solidComponent] - .getFugacityCoefficient() - / system.getPhase(k).getComponent(solidComponent).getFugacityCoefficient(); - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - if (i != solidComponent) { - dQdbeta[k] -= system.getPhase(0).getComponent(i).getz() * 1.0 / E[i] - / system.getPhase(k).getComponent(i).getFugacityCoefficient(); - } - } + for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { + dQdbeta[k] = + 1.0 - system.getPhases()[3].getComponents()[solidComponent].getFugacityCoefficient() + / system.getPhase(k).getComponent(solidComponent).getFugacityCoefficient(); + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + if (i != solidComponent) { + dQdbeta[k] -= system.getPhase(0).getComponent(i).getz() * 1.0 / E[i] + / system.getPhase(k).getComponent(i).getFugacityCoefficient(); } + } + } - for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - Qmatrix[i][i] = 1.0e-9; - for (int j = 0; j < system.getNumberOfPhases() - 1; j++) { - if (i != j) { - Qmatrix[i][j] = 0; - } - for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { - if (k != solidComponent) { - Qmatrix[i][j] += system.getPhase(0).getComponent(k).getz() / (E[k] * E[k] - * system.getPhase(j).getComponent(k).getFugacityCoefficient() - * system.getPhase(i).getComponent(k).getFugacityCoefficient()); - } - } - } + for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { + Qmatrix[i][i] = 1.0e-9; + for (int j = 0; j < system.getNumberOfPhases() - 1; j++) { + if (i != j) { + Qmatrix[i][j] = 0; + } + for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { + if (k != solidComponent) { + Qmatrix[i][j] += system.getPhase(0).getComponent(k).getz() + / (E[k] * E[k] * system.getPhase(j).getComponent(k).getFugacityCoefficient() + * system.getPhase(i).getComponent(k).getFugacityCoefficient()); + } } - return Q; + } } + return Q; + } - /** - *

- * solveBeta. - *

- * - * @param ideal a boolean - */ - public void solveBeta(boolean ideal) { - double oldBeta[] = new double[system.getNumberOfPhases() - 1]; - // double newBeta[] = new double[system.getNumberOfPhases() - 1]; - int iter = 0; - Matrix ans = new Matrix(system.getNumberOfPhases() - 1, 1); - do { - if (!ideal) { - system.init(1); - } - calcE(); - calcQ(); - - oldBeta = new double[system.getNumberOfPhases() - 1]; - // newBeta = new double[system.getNumberOfPhases() - 1]; - iter++; - for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { - oldBeta[k] = system.getBeta(k); - } - - Matrix betaMatrix = new Matrix(oldBeta, 1).transpose(); - Matrix dQM = new Matrix(dQdbeta, 1); - Matrix dQdBM = new Matrix(Qmatrix); - // dQM.print(10,2); - // dQdBM.print(10,2); - try { - ans = dQdBM.solve(dQM.transpose()); - } catch (Exception e) { - // ans = dQdBM.solve(dQM.transpose()); - } + /** + *

+ * solveBeta. + *

+ * + * @param ideal a boolean + */ + public void solveBeta(boolean ideal) { + double[] oldBeta = new double[system.getNumberOfPhases() - 1]; + // double newBeta[] = new double[system.getNumberOfPhases() - 1]; + int iter = 0; + Matrix ans = new Matrix(system.getNumberOfPhases() - 1, 1); + do { + if (!ideal) { + system.init(1); + } + calcE(); + calcQ(); - betaMatrix.minusEquals(ans.times((iter + 1.0) / (10.0 + iter))); - // betaMatrix.print(10, 2); - // betaMatrix.print(10,2); + oldBeta = new double[system.getNumberOfPhases() - 1]; + // newBeta = new double[system.getNumberOfPhases() - 1]; + iter++; + for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { + oldBeta[k] = system.getBeta(k); + } - for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { - system.setBeta(k, betaMatrix.get(k, 0)); - if (betaMatrix.get(k, 0) < 0) { - system.setBeta(k, 1e-9); - } - if (betaMatrix.get(k, 0) > 1) { - system.setBeta(k, 1 - 1e-9); - } - } + Matrix betaMatrix = new Matrix(oldBeta, 1).transpose(); + Matrix dQM = new Matrix(dQdbeta, 1); + Matrix dQdBM = new Matrix(Qmatrix); + // dQM.print(10,2); + // dQdBM.print(10,2); + try { + ans = dQdBM.solve(dQM.transpose()); + } catch (Exception ex) { + // ans = dQdBM.solve(dQM.transpose()); + } - // calcSolidBeta(); - calcSolidBeta(); + betaMatrix.minusEquals(ans.times((iter + 1.0) / (10.0 + iter))); + // betaMatrix.print(10, 2); + // betaMatrix.print(10,2); - if (!hasRemovedPhase) { - for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - if (Math.abs(system.getBeta(i)) < 1.01e-9) { - system.removePhaseKeepTotalComposition(i); - hasRemovedPhase = true; - } - } - } + for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { + system.setBeta(k, betaMatrix.get(k, 0)); + if (betaMatrix.get(k, 0) < 0) { + system.setBeta(k, 1e-9); + } + if (betaMatrix.get(k, 0) > 1) { + system.setBeta(k, 1 - 1e-9); + } + } - /* - * for (int i = 0; i < system.getNumberOfPhases()-1; i++) { if - * (Math.abs(system.getPhase(i).getDensity()-system.getPhase(i+1).getDensity())< 1e-6 && - * !hasRemovedPhase) { system.removePhase(i+1); doStabilityAnalysis=false; - * hasRemovedPhase = true; } } - */ - if (hasRemovedPhase && !secondTime) { - secondTime = true; - run(); - } - // system.init(1); - // calcE(); - // setXY(); - // system.init(1); - // //checkGibbs(); - // calcE(); - // setXY(); - } while ((ans.norm2() > 1e-8 && iter < 100) || iter < 2); - // checkX(); - // calcE(); - // setXY(); - system.init(1); - } + // calcSolidBeta(); + calcSolidBeta(); - /** - *

- * checkGibbs. - *

- */ - public void checkGibbs() { - double gibbs1 = 0, gibbs2 = 0; + if (!hasRemovedPhase) { for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - system.setPhaseType(i, 0); - system.init(1); - gibbs1 = system.getPhase(i).getGibbsEnergy(); - system.setPhaseType(i, 1); - system.init(1); - gibbs2 = system.getPhase(i).getGibbsEnergy(); - if (gibbs1 < gibbs2) { - system.setPhaseType(i, 0); - } else { - system.setPhaseType(i, 1); - } - system.init(1); + if (Math.abs(system.getBeta(i)) < 1.01e-9) { + system.removePhaseKeepTotalComposition(i); + hasRemovedPhase = true; + } } + } + + /* + * for (int i = 0; i < system.getNumberOfPhases()-1; i++) { if + * (Math.abs(system.getPhase(i).getDensity()-system.getPhase(i+1).getDensity())< 1e-6 && + * !hasRemovedPhase) { system.removePhase(i+1); doStabilityAnalysis=false; hasRemovedPhase = + * true; } } + */ + if (hasRemovedPhase && !secondTime) { + secondTime = true; + run(); + } + // system.init(1); + // calcE(); + // setXY(); + // system.init(1); + // //checkGibbs(); + // calcE(); + // setXY(); + } while ((ans.norm2() > 1e-8 && iter < 100) || iter < 2); + // checkX(); + // calcE(); + // setXY(); + system.init(1); + } + + /** + *

+ * checkGibbs. + *

+ */ + public void checkGibbs() { + double gibbs1 = 0; + double gibbs2 = 0; + for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { + system.setPhaseType(i, PhaseType.byValue(0)); + system.init(1); + gibbs1 = system.getPhase(i).getGibbsEnergy(); + system.setPhaseType(i, PhaseType.byValue(1)); + system.init(1); + gibbs2 = system.getPhase(i).getGibbsEnergy(); + if (gibbs1 < gibbs2) { + system.setPhaseType(i, PhaseType.byValue(0)); + } else { + system.setPhaseType(i, PhaseType.byValue(1)); + } + system.init(1); } + } - /** - *

- * calcSolidBeta. - *

- */ - public void calcSolidBeta() { - double tempVar = system.getPhase(0).getComponents()[solidComponent].getz(); - // double beta = 1.0; - for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - tempVar -= system.getBeta(i) - * system.getPhase(3).getComponent(solidComponent).getFugacityCoefficient() - / system.getPhase(i).getComponent(solidComponent).getFugacityCoefficient(); - // beta -= system.getBeta(i); - } - if (tempVar > 0 && tempVar < 1.0) { - system.setBeta(system.getNumberOfPhases() - 1, tempVar); - } - // logger.info("beta " + tempVar); + /** + *

+ * calcSolidBeta. + *

+ */ + public void calcSolidBeta() { + double tempVar = system.getPhase(0).getComponents()[solidComponent].getz(); + // double beta = 1.0; + for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { + tempVar -= system.getBeta(i) + * system.getPhase(3).getComponent(solidComponent).getFugacityCoefficient() + / system.getPhase(i).getComponent(solidComponent).getFugacityCoefficient(); + // beta -= system.getBeta(i); } + if (tempVar > 0 && tempVar < 1.0) { + system.setBeta(system.getNumberOfPhases() - 1, tempVar); + } + // logger.info("beta " + tempVar); + } - /** {@inheritDoc} */ - @Override - public void run() { - // logger.info("starting "); - system.setNumberOfPhases(system.getNumberOfPhases()); - double oldBeta = 0.0; - int iter = 0; - system.init(1); - this.solveBeta(true); + /** {@inheritDoc} */ + @Override + public void run() { + // logger.info("starting "); + system.setNumberOfPhases(system.getNumberOfPhases()); + double oldBeta = 0.0; + int iter = 0; + system.init(1); + this.solveBeta(true); - do { - iter++; - oldBeta = system.getBeta(system.getNumberOfPhases() - 1); - setXY(); - system.init(1); + do { + iter++; + oldBeta = system.getBeta(system.getNumberOfPhases() - 1); + setXY(); + system.init(1); - if (system.getNumberOfPhases() > 1) { - this.solveBeta(true); - } else { - // logger.info("setting beta "); - system.setBeta(0, 1.0 - 1e-10); - system.reset_x_y(); - system.init(1); - } + if (system.getNumberOfPhases() > 1) { + this.solveBeta(true); + } else { + // logger.info("setting beta "); + system.setBeta(0, 1.0 - 1e-10); + system.reset_x_y(); + system.init(1); + } - // system.display(); - checkX(); - // logger.info("iter " + iter); - } while ((Math.abs(system.getBeta(system.getNumberOfPhases() - 1) - oldBeta) > 1e-3 - && !(iter > 20)) || iter < 4); - // checkX(); - // logger.info("iter " + iter); - // system.setNumberOfPhases(system.getNumberOfPhases()+1); - } + // system.display(); + checkX(); + // logger.info("iter " + iter); + } while ((Math.abs(system.getBeta(system.getNumberOfPhases() - 1) - oldBeta) > 1e-3 + && !(iter > 20)) || iter < 4); + // checkX(); + // logger.info("iter " + iter); + // system.setNumberOfPhases(system.getNumberOfPhases()+1); + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash1.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash1.java index 6f6b65face..8f9d784be7 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash1.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash1.java @@ -3,6 +3,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import Jama.Matrix; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -15,520 +16,511 @@ * @version $Id: $Id */ public class SolidFlash1 extends TPflash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(SolidFlash1.class); - - // SystemInterface clonedSystem; - boolean multiPhaseTest = false; - double dQdbeta[]; - double Qmatrix[][]; - double E[]; - double Q = 0; - int solidsNumber = 0; - int solidIndex = 0; - double totalSolidFrac = 0.0; - int FluidPhaseActiveDescriptors[]; // 1 = active; 0 = inactive - - /** - *

- * Constructor for SolidFlash1. - *

- */ - public SolidFlash1() {} - - /** - *

- * Constructor for SolidFlash1. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public SolidFlash1(SystemInterface system) { - super(system); - } - - /** - *

- * calcMultiPhaseBeta. - *

- */ - public void calcMultiPhaseBeta() {} - - /** - *

- * setXY. - *

- */ - public void setXY() { - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - if (i != solidIndex) { - system.getPhase(k).getComponent(i) - .setx(system.getPhase(0).getComponent(i).getz() / E[i] - / system.getPhase(k).getComponent(i).getFugacityCoefficient()); - } else { - system.getPhase(k).getComponent(i) - .setx(system.getPhases()[3].getComponent(i).getFugacityCoefficient() - / system.getPhase(k).getComponent(i).getFugacityCoefficient()); - } - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SolidFlash1.class); + + // SystemInterface clonedSystem; + boolean multiPhaseTest = false; + double[] dQdbeta; + double[][] Qmatrix; + double[] E; + double Q = 0; + int solidsNumber = 0; + int solidIndex = 0; + double totalSolidFrac = 0.0; + int[] FluidPhaseActiveDescriptors; // 1 = active; 0 = inactive + + /** + *

+ * Constructor for SolidFlash1. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public SolidFlash1(SystemInterface system) { + super(system); + } + + /** + *

+ * calcMultiPhaseBeta. + *

+ */ + public void calcMultiPhaseBeta() {} + + /** + *

+ * setXY. + *

+ */ + public void setXY() { + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + if (i != solidIndex) { + system.getPhase(k).getComponent(i).setx(system.getPhase(0).getComponent(i).getz() / E[i] + / system.getPhase(k).getComponent(i).getFugacityCoefficient()); + } else { + system.getPhase(k).getComponent(i) + .setx(system.getPhases()[3].getComponent(i).getFugacityCoefficient() + / system.getPhase(k).getComponent(i).getFugacityCoefficient()); } + } } - - /** - *

- * checkX. - *

- */ - public void checkX() { - for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { - double x = 0.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - x += system.getPhase(k).getComponent(i).getx(); - } - // logger.info("x tot " + x + " PHASE " + k); - if (x < 1.0 - 1e-6) { - // logger.info("removing phase " + k); - system.setBeta(system.getNumberOfPhases() - 2, - system.getBeta(system.getNumberOfPhases() - 1)); - system.setBeta(0, 1.0 - system.getBeta(system.getNumberOfPhases() - 1)); - system.setNumberOfPhases(system.getNumberOfPhases() - 1); - system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); - system.init(1); - calcE(); - setXY(); - return; - } - } + } + + /** + *

+ * checkX. + *

+ */ + public void checkX() { + for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { + double x = 0.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + x += system.getPhase(k).getComponent(i).getx(); + } + // logger.info("x tot " + x + " PHASE " + k); + if (x < 1.0 - 1e-6) { + // logger.info("removing phase " + k); + system.setBeta(system.getNumberOfPhases() - 2, + system.getBeta(system.getNumberOfPhases() - 1)); + system.setBeta(0, 1.0 - system.getBeta(system.getNumberOfPhases() - 1)); + system.setNumberOfPhases(system.getNumberOfPhases() - 1); + system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); + system.init(1); + calcE(); + setXY(); + return; + } } - - /** - *

- * calcE. - *

- */ - public void calcE() { - E = new double[system.getPhases()[0].getNumberOfComponents()]; - - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - E[i] = 0.0; - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - E[i] += system.getBeta(k) - / system.getPhase(k).getComponent(i).getFugacityCoefficient(); - } - } + } + + /** + *

+ * calcE. + *

+ */ + public void calcE() { + E = new double[system.getPhases()[0].getNumberOfComponents()]; + + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + E[i] = 0.0; + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + E[i] += system.getBeta(k) / system.getPhase(k).getComponent(i).getFugacityCoefficient(); + } + } + } + + /** + *

+ * calcQ. + *

+ * + * @return a double + */ + public double calcQ() { + Q = 0; + double betaTotal = 0; + dQdbeta = new double[system.getNumberOfPhases() - solidsNumber]; + Qmatrix = new double[system.getNumberOfPhases() - solidsNumber][system.getNumberOfPhases() + - solidsNumber]; + + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + betaTotal += system.getBeta(k); } - /** - *

- * calcQ. - *

- * - * @return a double - */ - public double calcQ() { - Q = 0; - double betaTotal = 0; - dQdbeta = new double[system.getNumberOfPhases() - solidsNumber]; - Qmatrix = new double[system.getNumberOfPhases() - solidsNumber][system.getNumberOfPhases() - - solidsNumber]; - - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - betaTotal += system.getBeta(k); - } - - Q = betaTotal; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - if (i != solidIndex) { - Q -= Math.log(E[i]) * system.getPhase(0).getComponents()[i].getz(); - } + Q = betaTotal; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + if (i != solidIndex) { + Q -= Math.log(E[i]) * system.getPhase(0).getComponents()[i].getz(); + } + } + for (int i = 0; i < solidsNumber; i++) { + Q += system.getPhase(0).getComponent(solidIndex).getz() + * (1 - Math.log(system.getPhase(0).getComponent(solidIndex).getz() + / system.getPhases()[3].getComponent(solidIndex).getFugacityCoefficient())); + for (int j = 0; j < system.getNumberOfPhases() - solidsNumber; j++) { + Q -= system.getBeta(j) + * system.getPhases()[3].getComponent(solidIndex).getFugacityCoefficient() + / system.getPhase(j).getComponent(solidIndex).getFugacityCoefficient(); + } + } + return Q; + } + + /** + *

+ * calcQbeta. + *

+ */ + public void calcQbeta() { + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + dQdbeta[k] = 1.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + if (i == solidIndex) { + dQdbeta[k] -= system.getPhases()[3].getComponents()[solidIndex].getFugacityCoefficient() + / system.getPhase(k).getComponent(solidIndex).getFugacityCoefficient(); + } else { + dQdbeta[k] -= system.getPhase(0).getComponent(i).getz() / E[i] + / system.getPhase(k).getComponent(i).getFugacityCoefficient(); } - for (int i = 0; i < solidsNumber; i++) { - Q += system.getPhase(0).getComponent(solidIndex).getz() * (1 - Math - .log(system.getPhase(0).getComponent(solidIndex).getz() / system.getPhases()[3] - .getComponent(solidIndex).getFugacityCoefficient())); - for (int j = 0; j < system.getNumberOfPhases() - solidsNumber; j++) { - Q -= system.getBeta(j) - * system.getPhases()[3].getComponent(solidIndex).getFugacityCoefficient() - / system.getPhase(j).getComponent(solidIndex).getFugacityCoefficient(); - } + } + } + } + + /** + *

+ * calcGradientAndHesian. + *

+ */ + public void calcGradientAndHesian() { + Qmatrix = new double[system.getNumberOfPhases() - solidsNumber][system.getNumberOfPhases() + - solidsNumber]; + dQdbeta = new double[system.getNumberOfPhases() - solidsNumber]; + + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + dQdbeta[k] = 1.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + if (i == solidIndex) { + dQdbeta[k] -= system.getPhases()[3].getComponent(solidIndex).getFugacityCoefficient() + / system.getPhase(k).getComponent(solidIndex).getFugacityCoefficient(); + } else { + dQdbeta[k] -= system.getPhase(0).getComponent(i).getz() / E[i] + / system.getPhase(k).getComponent(i).getFugacityCoefficient(); } - return Q; + } } - /** - *

- * calcQbeta. - *

- */ - public void calcQbeta() { - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - dQdbeta[k] = 1.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - if (i == solidIndex) { - dQdbeta[k] -= system.getPhases()[3].getComponents()[solidIndex] - .getFugacityCoefficient() - / system.getPhase(k).getComponent(solidIndex).getFugacityCoefficient(); - } else { - dQdbeta[k] -= system.getPhase(0).getComponent(i).getz() / E[i] - / system.getPhase(k).getComponent(i).getFugacityCoefficient(); - } - } + for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { + Qmatrix[i][i] = 0; + for (int j = 0; j < system.getNumberOfPhases() - solidsNumber; j++) { + for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { + if (k != solidIndex) { + Qmatrix[i][j] += system.getPhase(0).getComponent(k).getz() + / (E[k] * E[k] * system.getPhase(j).getComponent(k).getFugacityCoefficient() + * system.getPhase(i).getComponent(k).getFugacityCoefficient()); + } } + } } - /** - *

- * calcGradientAndHesian. - *

- */ - public void calcGradientAndHesian() { - Qmatrix = new double[system.getNumberOfPhases() - solidsNumber][system.getNumberOfPhases() - - solidsNumber]; - dQdbeta = new double[system.getNumberOfPhases() - solidsNumber]; - - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - dQdbeta[k] = 1.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - if (i == solidIndex) { - dQdbeta[k] -= system.getPhases()[3].getComponent(solidIndex) - .getFugacityCoefficient() - / system.getPhase(k).getComponent(solidIndex).getFugacityCoefficient(); - } else { - dQdbeta[k] -= system.getPhase(0).getComponent(i).getz() / E[i] - / system.getPhase(k).getComponent(i).getFugacityCoefficient(); - } - } + for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { + if (FluidPhaseActiveDescriptors[i] == 0) { + dQdbeta[i] = 0.0; + for (int j = 0; j < system.getNumberOfPhases() - solidsNumber; j++) { + Qmatrix[i][j] = 0.0; } - - for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { - Qmatrix[i][i] = 0; - for (int j = 0; j < system.getNumberOfPhases() - solidsNumber; j++) { - for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { - if (k != solidIndex) { - Qmatrix[i][j] += system.getPhase(0).getComponent(k).getz() / (E[k] * E[k] - * system.getPhase(j).getComponent(k).getFugacityCoefficient() - * system.getPhase(i).getComponent(k).getFugacityCoefficient()); - } - } - } + Qmatrix[i][i] = 1.0; + } + } + for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { + if (FluidPhaseActiveDescriptors[i] == 1) { + Qmatrix[i][i] += 10e-15; + } + } + } + + /** + *

+ * solveBeta. + *

+ */ + public void solveBeta() { + double[] oldBeta = new double[system.getNumberOfPhases() - solidsNumber]; + // double newBeta[] = new double[system.getNumberOfPhases() - solidsNumber]; + int iter = 0; + Matrix ans = new Matrix(system.getNumberOfPhases() - solidsNumber, 1); + double Qold = 0; + double betaReductionFactor = 1.0; + double Qnew = 0; + do { + // system.init(1); + calcE(); + Qold = calcQ(); + calcGradientAndHesian(); + oldBeta = new double[system.getNumberOfPhases() - solidsNumber]; + // newBeta = new double[system.getNumberOfPhases() - solidsNumber]; + iter++; + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + oldBeta[k] = system.getBeta(k); + } + + Matrix betaMatrix = new Matrix(oldBeta, 1).transpose(); + Matrix betaMatrixOld = new Matrix(oldBeta, 1).transpose(); + Matrix betaMatrixTemp = new Matrix(oldBeta, 1).transpose(); + Matrix dQM = new Matrix(dQdbeta, 1); + Matrix dQdBM = new Matrix(Qmatrix); + + try { + ans = dQdBM.solve(dQM.transpose()); + } catch (Exception ex) { + // ans = dQdBM.solve(dQM.transpose()); + } + // dQdBM.print(10, 10); + // logger.info("BetaStep: "); + // ans.print(30, 30); + + betaReductionFactor = 1.0; + // logger.info("Oldbeta befor update"); + // betaMatrix.print(10, 10); + betaMatrixTemp = betaMatrix.minus(ans.times(betaReductionFactor)); + // logger.info("Beta before multiplying reduction Factoer"); + // betaMatrixTemp.print(10, 2); + + double minBetaTem = 1000000; + int minBetaTemIndex = 0; + + for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { + if (betaMatrixTemp.get(i, 0) * FluidPhaseActiveDescriptors[i] < minBetaTem) { + minBetaTem = betaMatrixTemp.get(i, 0); + minBetaTemIndex = i; } + } - for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { - if (FluidPhaseActiveDescriptors[i] == 0) { - dQdbeta[i] = 0.0; - for (int j = 0; j < system.getNumberOfPhases() - solidsNumber; j++) { - Qmatrix[i][j] = 0.0; - } - Qmatrix[i][i] = 1.0; - } + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + if ((minBetaTem < -1.0E-10)) { + betaReductionFactor = + 1.0 + betaMatrixTemp.get(minBetaTemIndex, 0) / ans.get(minBetaTemIndex, 0); } - for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { - if (FluidPhaseActiveDescriptors[i] == 1) { - Qmatrix[i][i] += 10e-15; - } + } + // logger.info("Reduction Factor " + betaReductionFactor); + betaMatrixTemp = betaMatrix.minus(ans.times(betaReductionFactor)); + + // logger.info("Beta after multiplying reduction Factoer"); + // betaMatrixTemp.print(10, 2); + + betaMatrixOld = betaMatrix.copy(); + betaMatrix = betaMatrixTemp.copy(); + boolean deactivatedPhase = false; + for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { + system.setBeta(i, betaMatrix.get(i, 0)); + // logger.info("Fluid Phase fraction" + system.getBeta(i)); + if (Math.abs(system.getBeta(i)) < 1.0e-10) { + FluidPhaseActiveDescriptors[i] = 0; + deactivatedPhase = true; } - } + } - /** - *

- * solveBeta. - *

- */ - public void solveBeta() { - double oldBeta[] = new double[system.getNumberOfPhases() - solidsNumber]; - // double newBeta[] = new double[system.getNumberOfPhases() - solidsNumber]; - int iter = 0; - Matrix ans = new Matrix(system.getNumberOfPhases() - solidsNumber, 1); - double Qold = 0; - double betaReductionFactor = 1.0; - double Qnew = 0; - do { - // system.init(1); - calcE(); - Qold = calcQ(); - calcGradientAndHesian(); - oldBeta = new double[system.getNumberOfPhases() - solidsNumber]; - // newBeta = new double[system.getNumberOfPhases() - solidsNumber]; - iter++; - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - oldBeta[k] = system.getBeta(k); - } - - Matrix betaMatrix = new Matrix(oldBeta, 1).transpose(); - Matrix betaMatrixOld = new Matrix(oldBeta, 1).transpose(); - Matrix betaMatrixTemp = new Matrix(oldBeta, 1).transpose(); - Matrix dQM = new Matrix(dQdbeta, 1); - Matrix dQdBM = new Matrix(Qmatrix); + Qnew = calcQ(); - try { - ans = dQdBM.solve(dQM.transpose()); - } catch (Exception e) { - // ans = dQdBM.solve(dQM.transpose()); - } - // dQdBM.print(10, 10); - // logger.info("BetaStep: "); - // ans.print(30, 30); - - betaReductionFactor = 1.0; - // logger.info("Oldbeta befor update"); - // betaMatrix.print(10, 10); - betaMatrixTemp = betaMatrix.minus(ans.times(betaReductionFactor)); - // logger.info("Beta before multiplying reduction Factoer"); - // betaMatrixTemp.print(10, 2); - - double minBetaTem = 1000000; - int minBetaTemIndex = 0; - - for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { - if (betaMatrixTemp.get(i, 0) * FluidPhaseActiveDescriptors[i] < minBetaTem) { - minBetaTem = betaMatrixTemp.get(i, 0); - minBetaTemIndex = i; - } - } + // logger.info("Qold = " + Qold); + // logger.info("Qnew = " + Qnew); - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - if ((minBetaTem < -1.0E-10)) { - betaReductionFactor = 1.0 - + betaMatrixTemp.get(minBetaTemIndex, 0) / ans.get(minBetaTemIndex, 0); - } - } - // logger.info("Reduction Factor " + betaReductionFactor); - betaMatrixTemp = betaMatrix.minus(ans.times(betaReductionFactor)); - - // logger.info("Beta after multiplying reduction Factoer"); - // betaMatrixTemp.print(10, 2); - - betaMatrixOld = betaMatrix.copy(); - betaMatrix = betaMatrixTemp.copy(); - boolean deactivatedPhase = false; - for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { - system.setBeta(i, betaMatrix.get(i, 0)); - // logger.info("Fluid Phase fraction" + system.getBeta(i)); - if (Math.abs(system.getBeta(i)) < 1.0e-10) { - FluidPhaseActiveDescriptors[i] = 0; - deactivatedPhase = true; - } - } - - Qnew = calcQ(); - - // logger.info("Qold = " + Qold); - // logger.info("Qnew = " + Qnew); - - if (Qnew > Qold + 1.0e-10 && !deactivatedPhase) { - // logger.info("Qnew > Qold..............................."); - int iter2 = 0; - do { - iter2++; - betaReductionFactor /= 2.0; - betaMatrixTemp = betaMatrixOld.minus(ans.times(betaReductionFactor)); - betaMatrix = betaMatrixTemp; - for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { - system.setBeta(i, betaMatrix.get(i, 0)); - if (Math.abs(system.getBeta(i)) < 1.0e-10) { - FluidPhaseActiveDescriptors[i] = 0; - } else { - FluidPhaseActiveDescriptors[i] = 1; - } - } - Qnew = calcQ(); - } while (Qnew > Qold + 1.0e-10 && iter2 < 5); - } - } while ((Math.abs(ans.norm1()) > 1e-7 && iter < 100) || iter < 2); - } - - /** - *

- * checkGibbs. - *

- */ - public void checkGibbs() { - double gibbs1 = 0, gibbs2 = 0; - for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - system.setPhaseType(i, 0); - system.init(1); - gibbs1 = system.getPhase(i).getGibbsEnergy(); - system.setPhaseType(i, 1); - system.init(1); - gibbs2 = system.getPhase(i).getGibbsEnergy(); - if (gibbs1 < gibbs2) { - system.setPhaseType(i, 0); + if (Qnew > Qold + 1.0e-10 && !deactivatedPhase) { + // logger.info("Qnew > Qold..............................."); + int iter2 = 0; + do { + iter2++; + betaReductionFactor /= 2.0; + betaMatrixTemp = betaMatrixOld.minus(ans.times(betaReductionFactor)); + betaMatrix = betaMatrixTemp; + for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { + system.setBeta(i, betaMatrix.get(i, 0)); + if (Math.abs(system.getBeta(i)) < 1.0e-10) { + FluidPhaseActiveDescriptors[i] = 0; } else { - system.setPhaseType(i, 1); + FluidPhaseActiveDescriptors[i] = 1; } - system.init(1); - } + } + Qnew = calcQ(); + } while (Qnew > Qold + 1.0e-10 && iter2 < 5); + } + } while ((Math.abs(ans.norm1()) > 1e-7 && iter < 100) || iter < 2); + } + + /** + *

+ * checkGibbs. + *

+ */ + public void checkGibbs() { + double gibbs1 = 0; + double gibbs2 = 0; + for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { + system.setPhaseType(i, PhaseType.byValue(0)); + system.init(1); + gibbs1 = system.getPhase(i).getGibbsEnergy(); + system.setPhaseType(i, PhaseType.byValue(1)); + system.init(1); + gibbs2 = system.getPhase(i).getGibbsEnergy(); + if (gibbs1 < gibbs2) { + system.setPhaseType(i, PhaseType.byValue(0)); + } else { + system.setPhaseType(i, PhaseType.byValue(1)); + } + system.init(1); } - - /** - *

- * calcSolidBeta. - *

- * - * @return a double - */ - public double calcSolidBeta() { - double tempVar = system.getPhase(0).getComponents()[solidIndex].getz(); - // double beta = 1.0; - for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { - if (FluidPhaseActiveDescriptors[i] == 1) { - tempVar -= system.getBeta(i) - * system.getPhases()[3].getComponent(solidIndex).getFugacityCoefficient() - / system.getPhase(i).getComponent(solidIndex).getFugacityCoefficient(); - // beta -= system.getBeta(i); - } - } - if (tempVar > 0 && tempVar < 1.0) { - system.setBeta(system.getNumberOfPhases() - 1, tempVar); - // logger.info("Solid PhaseFraction " + tempVar); - } - return tempVar; + } + + /** + *

+ * calcSolidBeta. + *

+ * + * @return a double + */ + public double calcSolidBeta() { + double tempVar = system.getPhase(0).getComponents()[solidIndex].getz(); + // double beta = 1.0; + for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { + if (FluidPhaseActiveDescriptors[i] == 1) { + tempVar -= system.getBeta(i) + * system.getPhases()[3].getComponent(solidIndex).getFugacityCoefficient() + / system.getPhase(i).getComponent(solidIndex).getFugacityCoefficient(); + // beta -= system.getBeta(i); + } } - - /** {@inheritDoc} */ - @Override - public void run() { - int iter = 0; - - ThermodynamicOperations ops = new ThermodynamicOperations(system); - system.setSolidPhaseCheck(false); - ops.TPflash(false); - // system.display(); - FluidPhaseActiveDescriptors = new int[system.getNumberOfPhases()]; - for (int i = 0; i < FluidPhaseActiveDescriptors.length; i++) { - FluidPhaseActiveDescriptors[i] = 1; - } - - system.setSolidPhaseCheck(true); - if (checkAndAddSolidPhase() == 0) { - return; - } - if (system.getPhase(0).getNumberOfComponents() == 1) { - system.init(1); - if (system.getPhase(0).getFugacity(0) > system.getPhases()[3].getFugacity(0)) { - system.setPhaseIndex(0, 3); - } else { - } - system.setBeta(0, 1.0); - system.setNumberOfPhases(1); - system.init(1); - return; - } - // if (system.getPhase(0).getNumberOfComponents() <= 2) { - // solvebeta1(); - // }else{ - double oldBeta = 0.0, beta = 0.0; - do { - oldBeta = beta; - iter++; - this.solveBeta(); - calcE(); - setXY(); - system.init(1); - calcQbeta(); - - beta = calcSolidBeta(); - /* - * for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { if - * (FluidPhaseActiveDescriptors[i] == 0) { logger.info("dQdB " + i + " " + dQdbeta[i]); - * if (dQdbeta[i] < 0) { FluidPhaseActiveDescriptors[i] = 1; } } } - */ - } while (Math.abs((beta - oldBeta) / beta) > 1e-6 && iter < 20); - - for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { - if (FluidPhaseActiveDescriptors[i] == 0) { - system.deleteFluidPhase(i); - } - } - system.init(1); + if (tempVar > 0 && tempVar < 1.0) { + system.setBeta(system.getNumberOfPhases() - 1, tempVar); + // logger.info("Solid PhaseFraction " + tempVar); + } + return tempVar; + } + + /** {@inheritDoc} */ + @Override + public void run() { + int iter = 0; + + ThermodynamicOperations ops = new ThermodynamicOperations(system); + system.setSolidPhaseCheck(false); + ops.TPflash(false); + // system.display(); + FluidPhaseActiveDescriptors = new int[system.getNumberOfPhases()]; + for (int i = 0; i < FluidPhaseActiveDescriptors.length; i++) { + FluidPhaseActiveDescriptors[i] = 1; } - /** - *

- * checkAndAddSolidPhase. - *

- * - * @return a int - */ - public int checkAndAddSolidPhase() { - double[] solidCandidate = new double[system.getPhases()[0].getNumberOfComponents()]; - - for (int k = 0; k < system.getPhase(0).getNumberOfComponents(); k++) { - if (system.getTemperature() > system.getPhase(0).getComponent(k) - .getTriplePointTemperature()) { - solidCandidate[k] = 0; - } else { - solidCandidate[k] = system.getPhase(0).getComponents()[k].getz(); - system.getPhases()[3].getComponent(k).setx(1.0); - for (int i = 0; i < system.getNumberOfPhases(); i++) { - // double e = system.getBeta(i)* - // system.getPhases()[3].getComponent(k).fugcoef(system.getPhases()[3]); - solidCandidate[k] -= system.getBeta(i) - * system.getPhases()[3].getComponent(k).fugcoef(system.getPhases()[3]) - / system.getPhase(i).getComponent(k).getFugacityCoefficient(); - } - } - } - int oldSolidsNumber = solidsNumber; - solidsNumber = 0; - totalSolidFrac = 0; - for (int i = 0; i < solidCandidate.length; i++) { - if (solidCandidate[i] > 1e-20) { - system.getPhases()[3].getComponent(i).setx(1.0); - solidIndex = i; - solidsNumber++; - totalSolidFrac += solidCandidate[i]; - } else { - system.getPhases()[3].getComponent(i).setx(0.0); - } - } - for (int i = oldSolidsNumber; i < solidsNumber; i++) { - system.setNumberOfPhases(system.getNumberOfPhases() + 1); - system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); - system.setBeta(system.getNumberOfPhases() - 1, solidCandidate[solidIndex]); - // system.setBeta(system.getNumberOfPhases() - 2, - // system.getBeta(system.getNumberOfPhases() - 2) - solidCandidate[solidIndex]); + system.setSolidPhaseCheck(true); + if (checkAndAddSolidPhase() == 0) { + return; + } + if (system.getPhase(0).getNumberOfComponents() == 1) { + system.init(1); + if (system.getPhase(0).getFugacity(0) > system.getPhases()[3].getFugacity(0)) { + system.setPhaseIndex(0, 3); + } else { + } + system.setBeta(0, 1.0); + system.setNumberOfPhases(1); + system.init(1); + return; + } + // if (system.getPhase(0).getNumberOfComponents() <= 2) { + // solvebeta1(); + // }else{ + double oldBeta = 0.0; + double beta = 0.0; + do { + oldBeta = beta; + iter++; + this.solveBeta(); + calcE(); + setXY(); + system.init(1); + calcQbeta(); + + beta = calcSolidBeta(); + /* + * for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { if + * (FluidPhaseActiveDescriptors[i] == 0) { logger.info("dQdB " + i + " " + dQdbeta[i]); if + * (dQdbeta[i] < 0) { FluidPhaseActiveDescriptors[i] = 1; } } } + */ + } while (Math.abs((beta - oldBeta) / beta) > 1e-6 && iter < 20); + + for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { + if (FluidPhaseActiveDescriptors[i] == 0) { + system.deleteFluidPhase(i); + } + } + system.init(1); + } + + /** + *

+ * checkAndAddSolidPhase. + *

+ * + * @return a int + */ + public int checkAndAddSolidPhase() { + double[] solidCandidate = new double[system.getPhases()[0].getNumberOfComponents()]; + + for (int k = 0; k < system.getPhase(0).getNumberOfComponents(); k++) { + if (system.getTemperature() > system.getPhase(0).getComponent(k) + .getTriplePointTemperature()) { + solidCandidate[k] = 0; + } else { + solidCandidate[k] = system.getPhase(0).getComponents()[k].getz(); + system.getPhases()[3].getComponent(k).setx(1.0); + for (int i = 0; i < system.getNumberOfPhases(); i++) { + // double e = system.getBeta(i)* + // system.getPhases()[3].getComponent(k).fugcoef(system.getPhases()[3]); + solidCandidate[k] -= system.getBeta(i) + * system.getPhases()[3].getComponent(k).fugcoef(system.getPhases()[3]) + / system.getPhase(i).getComponent(k).getFugacityCoefficient(); } - - return solidsNumber; + } } - - /** - *

- * solvebeta1. - *

- * - * @return a double - */ - public double solvebeta1() { - // double numberOfMolesFreeze = - // system.getPhase(0).getComponent(solidIndex).getNumberOfmoles(); - double solidCandidate = 0; - int iter = 0; - double dn = -0.01; - double solidCandidateOld = 0; - do { - solidCandidateOld = solidCandidate; - system.addComponent(system.getPhase(0).getComponent(solidIndex).getComponentName(), dn); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - // system.init(0); - system.setSolidPhaseCheck(false); - ops.TPflash(); - // system.setSolidPhaseCheck(true); - - iter++; - solidCandidate = system.getPhase(0).getComponents()[solidIndex].getz(); - for (int i = 0; i < system.getNumberOfPhases(); i++) { - solidCandidate -= system.getPhases()[3].getComponent(solidIndex) - .fugcoef(system.getPhases()[3]) - / system.getPhase(i).getComponent(solidIndex).getFugacityCoefficient(); - } - double dsoliddn = (solidCandidate - solidCandidateOld) / dn; - dn = -0.5 * solidCandidate / dsoliddn; - logger.info("solid cand " + solidCandidate); - } while (solidCandidate > 1e-5 && iter < 50); - - return 1.0; + int oldSolidsNumber = solidsNumber; + solidsNumber = 0; + totalSolidFrac = 0; + for (int i = 0; i < solidCandidate.length; i++) { + if (solidCandidate[i] > 1e-20) { + system.getPhases()[3].getComponent(i).setx(1.0); + solidIndex = i; + solidsNumber++; + totalSolidFrac += solidCandidate[i]; + } else { + system.getPhases()[3].getComponent(i).setx(0.0); + } } + for (int i = oldSolidsNumber; i < solidsNumber; i++) { + system.setNumberOfPhases(system.getNumberOfPhases() + 1); + system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); + system.setBeta(system.getNumberOfPhases() - 1, solidCandidate[solidIndex]); + // system.setBeta(system.getNumberOfPhases() - 2, + // system.getBeta(system.getNumberOfPhases() - 2) - solidCandidate[solidIndex]); + } + + return solidsNumber; + } + + /** + *

+ * solvebeta1. + *

+ * + * @return a double + */ + public double solvebeta1() { + // double numberOfMolesFreeze = + // system.getPhase(0).getComponent(solidIndex).getNumberOfmoles(); + double solidCandidate = 0; + int iter = 0; + double dn = -0.01; + double solidCandidateOld = 0; + do { + solidCandidateOld = solidCandidate; + system.addComponent(system.getPhase(0).getComponent(solidIndex).getComponentName(), dn); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + // system.init(0); + system.setSolidPhaseCheck(false); + ops.TPflash(); + // system.setSolidPhaseCheck(true); + + iter++; + solidCandidate = system.getPhase(0).getComponents()[solidIndex].getz(); + for (int i = 0; i < system.getNumberOfPhases(); i++) { + solidCandidate -= + system.getPhases()[3].getComponent(solidIndex).fugcoef(system.getPhases()[3]) + / system.getPhase(i).getComponent(solidIndex).getFugacityCoefficient(); + } + double dsoliddn = (solidCandidate - solidCandidateOld) / dn; + dn = -0.5 * solidCandidate / dsoliddn; + logger.info("solid cand " + solidCandidate); + } while (solidCandidate > 1e-5 && iter < 50); + + return 1.0; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash12.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash12.java index 1fac6257d7..48f6b0a910 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash12.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/SolidFlash12.java @@ -3,11 +3,13 @@ * * Created on 2. oktober 2000, 22:26 */ + package neqsim.thermodynamicOperations.flashOps; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import Jama.Matrix; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -20,395 +22,385 @@ * @version $Id: $Id */ public class SolidFlash12 extends TPflash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(SolidFlash12.class); - - // SystemInterface clonedSystem; - boolean multiPhaseTest = false; - double dQdbeta[]; - double Qmatrix[][]; - double E[]; - double Q = 0; - int solidsNumber = 0; - int solidIndex = 0; - - /** - *

- * Constructor for SolidFlash12. - *

- */ - public SolidFlash12() {} - - /** - *

- * Constructor for SolidFlash12. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public SolidFlash12(SystemInterface system) { - super(system); - } - - /** - *

- * calcMultiPhaseBeta. - *

- */ - public void calcMultiPhaseBeta() {} - - /** - *

- * setXY. - *

- */ - public void setXY() { - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - if (i != solidIndex) { - system.getPhase(k).getComponent(i) - .setx(system.getPhase(0).getComponent(i).getz() / E[i] - / system.getPhase(k).getComponent(i).getFugacityCoefficient()); - } else { - system.getPhase(k).getComponent(i) - .setx(system.getPhases()[3].getComponent(i).getFugacityCoefficient() - / system.getPhase(k).getComponent(i).getFugacityCoefficient()); - } - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SolidFlash12.class); + + // SystemInterface clonedSystem; + boolean multiPhaseTest = false; + double[] dQdbeta; + double[][] Qmatrix; + double[] E; + double Q = 0; + int solidsNumber = 0; + int solidIndex = 0; + + /** + *

+ * Constructor for SolidFlash12. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public SolidFlash12(SystemInterface system) { + super(system); + } + + /** + *

+ * calcMultiPhaseBeta. + *

+ */ + public void calcMultiPhaseBeta() {} + + /** + *

+ * setXY. + *

+ */ + public void setXY() { + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + if (i != solidIndex) { + system.getPhase(k).getComponent(i).setx(system.getPhase(0).getComponent(i).getz() / E[i] + / system.getPhase(k).getComponent(i).getFugacityCoefficient()); + } else { + system.getPhase(k).getComponent(i) + .setx(system.getPhases()[3].getComponent(i).getFugacityCoefficient() + / system.getPhase(k).getComponent(i).getFugacityCoefficient()); } + } } - - /** - *

- * checkX. - *

- */ - public void checkX() { - for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { - double x = 0.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - x += system.getPhase(k).getComponent(i).getx(); - } - logger.info("x tot " + x + " PHASE " + k); - if (x < 1.0 - 1e-6) { - // logger.info("removing phase " + k); - system.setBeta(system.getNumberOfPhases() - 2, - system.getBeta(system.getNumberOfPhases() - 1)); - system.setBeta(0, 1.0 - system.getBeta(system.getNumberOfPhases() - 1)); - system.setNumberOfPhases(system.getNumberOfPhases() - 1); - system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); - system.init(1); - calcE(); - setXY(); - return; - } - } + } + + /** + *

+ * checkX. + *

+ */ + public void checkX() { + for (int k = 0; k < system.getNumberOfPhases() - 1; k++) { + double x = 0.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + x += system.getPhase(k).getComponent(i).getx(); + } + logger.info("x tot " + x + " PHASE " + k); + if (x < 1.0 - 1e-6) { + // logger.info("removing phase " + k); + system.setBeta(system.getNumberOfPhases() - 2, + system.getBeta(system.getNumberOfPhases() - 1)); + system.setBeta(0, 1.0 - system.getBeta(system.getNumberOfPhases() - 1)); + system.setNumberOfPhases(system.getNumberOfPhases() - 1); + system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); + system.init(1); + calcE(); + setXY(); + return; + } } - - /** - *

- * calcE. - *

- */ - public void calcE() { - E = new double[system.getPhases()[0].getNumberOfComponents()]; - - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - E[i] = 0.0; - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - E[i] += system.getBeta(k) - / system.getPhase(k).getComponent(i).getFugacityCoefficient(); - } - } + } + + /** + *

+ * calcE. + *

+ */ + public void calcE() { + E = new double[system.getPhases()[0].getNumberOfComponents()]; + + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + E[i] = 0.0; + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + E[i] += system.getBeta(k) / system.getPhase(k).getComponent(i).getFugacityCoefficient(); + } } - - /** - *

- * calcQ. - *

- * - * @return a double - */ - public double calcQ() { - Q = 0; - double betaTotal = 0; - dQdbeta = new double[system.getNumberOfPhases() - solidsNumber]; - Qmatrix = new double[system.getNumberOfPhases() - solidsNumber][system.getNumberOfPhases() - - solidsNumber]; - - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - betaTotal += system.getBeta(k); - } - - Q = betaTotal; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - if (i != solidIndex) { - Q -= Math.log(E[i]) * system.getPhase(0).getComponents()[i].getz(); - } - } - - for (int i = 0; i < solidsNumber; i++) { - Q += system.getPhase(0).getComponent(solidIndex).getz() * (1 - Math - .log(system.getPhase(0).getComponent(solidIndex).getz() / system.getPhases()[3] - .getComponent(solidIndex).getFugacityCoefficient())); - for (int j = 0; j < system.getNumberOfPhases() - solidsNumber; j++) { - Q -= system.getBeta(j) - * system.getPhases()[3].getComponent(solidIndex).getFugacityCoefficient() - / system.getPhase(j).getComponent(solidIndex).getFugacityCoefficient(); - } - } - - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - dQdbeta[k] = 1.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - if (i == solidIndex) { - dQdbeta[k] -= system.getPhases()[3].getComponents()[solidIndex] - .getFugacityCoefficient() - / system.getPhase(k).getComponent(solidIndex).getFugacityCoefficient(); - } else { - dQdbeta[k] -= system.getPhase(0).getComponent(i).getz() / E[i] - / system.getPhase(k).getComponent(i).getFugacityCoefficient(); - } - } - } - - for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { - for (int j = 0; j < system.getNumberOfPhases() - solidsNumber; j++) { - Qmatrix[i][j] = 0.0; - for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { - if (k != solidIndex) { - Qmatrix[i][j] += system.getPhase(0).getComponent(k).getz() / (E[k] * E[k] - * system.getPhase(j).getComponent(k).getFugacityCoefficient() - * system.getPhase(i).getComponent(k).getFugacityCoefficient()); - } - } - } - } - return Q; + } + + /** + *

+ * calcQ. + *

+ * + * @return a double + */ + public double calcQ() { + Q = 0; + double betaTotal = 0; + dQdbeta = new double[system.getNumberOfPhases() - solidsNumber]; + Qmatrix = new double[system.getNumberOfPhases() - solidsNumber][system.getNumberOfPhases() + - solidsNumber]; + + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + betaTotal += system.getBeta(k); } - /** - *

- * solveBeta. - *

- */ - public void solveBeta() { - double oldBeta[] = new double[system.getNumberOfPhases() - solidsNumber]; - // double newBeta[] = new double[system.getNumberOfPhases() - solidsNumber]; - int iter = 0; - Matrix ans = new Matrix(system.getNumberOfPhases() - solidsNumber, 1); - do { - system.init(1); - calcE(); - // setXY(); - calcQ(); - - oldBeta = new double[system.getNumberOfPhases() - solidsNumber]; - // newBeta = new double[system.getNumberOfPhases() - solidsNumber]; - iter++; - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - oldBeta[k] = system.getBeta(k); - } - - Matrix betaMatrix = new Matrix(oldBeta, 1).transpose(); - // Matrix betaMatrixTemp = new Matrix(oldBeta, 1).transpose(); - Matrix dQM = new Matrix(dQdbeta, 1); - Matrix dQdBM = new Matrix(Qmatrix); - - try { - ans = dQdBM.solve(dQM.transpose()); - } catch (Exception e) { - // ans = dQdBM.solve(dQM.transpose()); - } - dQM.print(10, 10); - dQdBM.print(10, 10); - ans.print(30, 30); - // double betaReductionFactor = 1.0; - // betaMatrixTemp = betaMatrix.minus(ans.times(betaReductionFactor)); - // betaMatrixTemp.print(10, 2); - - // double minBetaTem = 1000000; - // int minBetaIndex = 0; - - /* - * for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { if - * (betaMatrixTemp.get(i, 0) < minBetaTem) { minBetaTem = betaMatrixTemp.get(i, 0); - * minBetaIndex = i; } } - */ - - /* - * for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { if ((minBetaTem - * < -1.0E-10)) { betaReductionFactor = 1 - betaMatrixTemp.get(minBetaIndex, 0) / - * ans.get(minBetaIndex, 0); } } - */ - - betaMatrix.minusEquals(ans.times((iter + 1.0) / (100.0 + iter))); - // betaMatrix.print(10, 2); - - for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { - system.setBeta(k, betaMatrix.get(k, 0)); - if (betaMatrix.get(k, 0) < 0) { - system.setBeta(k, 1e-9); - } - if (betaMatrix.get(k, 0) > 1) { - system.setBeta(k, 1 - 1e-9); - } - } - calcE(); - setXY(); - calcSolidBeta(); - } while ((ans.norm2() > 1e-8 && iter < 100) || iter < 2); + Q = betaTotal; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + if (i != solidIndex) { + Q -= Math.log(E[i]) * system.getPhase(0).getComponents()[i].getz(); + } + } - system.init(1); - setXY(); + for (int i = 0; i < solidsNumber; i++) { + Q += system.getPhase(0).getComponent(solidIndex).getz() + * (1 - Math.log(system.getPhase(0).getComponent(solidIndex).getz() + / system.getPhases()[3].getComponent(solidIndex).getFugacityCoefficient())); + for (int j = 0; j < system.getNumberOfPhases() - solidsNumber; j++) { + Q -= system.getBeta(j) + * system.getPhases()[3].getComponent(solidIndex).getFugacityCoefficient() + / system.getPhase(j).getComponent(solidIndex).getFugacityCoefficient(); + } } - /** - *

- * checkGibbs. - *

- */ - public void checkGibbs() { - double gibbs1 = 0, gibbs2 = 0; - for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - system.setPhaseType(i, 0); - system.init(1); - gibbs1 = system.getPhase(i).getGibbsEnergy(); - system.setPhaseType(i, 1); - system.init(1); - gibbs2 = system.getPhase(i).getGibbsEnergy(); - if (gibbs1 < gibbs2) { - system.setPhaseType(i, 0); - } else { - system.setPhaseType(i, 1); - } - system.init(1); + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + dQdbeta[k] = 1.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + if (i == solidIndex) { + dQdbeta[k] -= system.getPhases()[3].getComponents()[solidIndex].getFugacityCoefficient() + / system.getPhase(k).getComponent(solidIndex).getFugacityCoefficient(); + } else { + dQdbeta[k] -= system.getPhase(0).getComponent(i).getz() / E[i] + / system.getPhase(k).getComponent(i).getFugacityCoefficient(); } + } } - /** - *

- * calcSolidBeta. - *

- */ - public void calcSolidBeta() { - double tempVar = system.getPhase(0).getComponents()[solidIndex].getz(); - // double beta = 1.0; - for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - tempVar -= system.getBeta(i) - * system.getPhase(3).getComponent(solidIndex).getFugacityCoefficient() - / system.getPhase(i).getComponent(solidIndex).getFugacityCoefficient(); - // beta -= system.getBeta(i); - } - if (tempVar > 0 && tempVar < 1.0) { - system.setBeta(system.getNumberOfPhases() - 1, tempVar); + for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { + for (int j = 0; j < system.getNumberOfPhases() - solidsNumber; j++) { + Qmatrix[i][j] = 0.0; + for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { + if (k != solidIndex) { + Qmatrix[i][j] += system.getPhase(0).getComponent(k).getz() + / (E[k] * E[k] * system.getPhase(j).getComponent(k).getFugacityCoefficient() + * system.getPhase(i).getComponent(k).getFugacityCoefficient()); + } } + } } - - /** {@inheritDoc} */ - @Override - public void run() { - int iter = 0; - - ThermodynamicOperations ops = new ThermodynamicOperations(system); - system.setSolidPhaseCheck(false); - ops.TPflash(); - system.setSolidPhaseCheck(true); - if (checkAndAddSolidPhase() == 0) { - return; + return Q; + } + + /** + *

+ * solveBeta. + *

+ */ + public void solveBeta() { + double[] oldBeta = new double[system.getNumberOfPhases() - solidsNumber]; + // double newBeta[] = new double[system.getNumberOfPhases() - solidsNumber]; + int iter = 0; + Matrix ans = new Matrix(system.getNumberOfPhases() - solidsNumber, 1); + do { + system.init(1); + calcE(); + // setXY(); + calcQ(); + + oldBeta = new double[system.getNumberOfPhases() - solidsNumber]; + // newBeta = new double[system.getNumberOfPhases() - solidsNumber]; + iter++; + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + oldBeta[k] = system.getBeta(k); + } + + Matrix betaMatrix = new Matrix(oldBeta, 1).transpose(); + // Matrix betaMatrixTemp = new Matrix(oldBeta, 1).transpose(); + Matrix dQM = new Matrix(dQdbeta, 1); + Matrix dQdBM = new Matrix(Qmatrix); + + try { + ans = dQdBM.solve(dQM.transpose()); + } catch (Exception ex) { + // ans = dQdBM.solve(dQM.transpose()); + } + dQM.print(10, 10); + dQdBM.print(10, 10); + ans.print(30, 30); + // double betaReductionFactor = 1.0; + // betaMatrixTemp = betaMatrix.minus(ans.times(betaReductionFactor)); + // betaMatrixTemp.print(10, 2); + + // double minBetaTem = 1000000; + // int minBetaIndex = 0; + + /* + * for (int i = 0; i < system.getNumberOfPhases() - solidsNumber; i++) { if + * (betaMatrixTemp.get(i, 0) < minBetaTem) { minBetaTem = betaMatrixTemp.get(i, 0); + * minBetaIndex = i; } } + */ + + /* + * for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { if ((minBetaTem < + * -1.0E-10)) { betaReductionFactor = 1 - betaMatrixTemp.get(minBetaIndex, 0) / + * ans.get(minBetaIndex, 0); } } + */ + + betaMatrix.minusEquals(ans.times((iter + 1.0) / (100.0 + iter))); + // betaMatrix.print(10, 2); + + for (int k = 0; k < system.getNumberOfPhases() - solidsNumber; k++) { + system.setBeta(k, betaMatrix.get(k, 0)); + if (betaMatrix.get(k, 0) < 0) { + system.setBeta(k, 1e-9); } - - if (system.getPhase(0).getNumberOfComponents() <= 2) { - solvebeta1(); + if (betaMatrix.get(k, 0) > 1) { + system.setBeta(k, 1 - 1e-9); } - do { - iter++; - this.solveBeta(); - // checkX(); - } while (iter < 1); + } + calcE(); + setXY(); + calcSolidBeta(); + } while ((ans.norm2() > 1e-8 && iter < 100) || iter < 2); + + system.init(1); + setXY(); + } + + /** + *

+ * checkGibbs. + *

+ */ + public void checkGibbs() { + double gibbs1 = 0; + double gibbs2 = 0; + for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { + system.setPhaseType(i, PhaseType.byValue(0)); + system.init(1); + gibbs1 = system.getPhase(i).getGibbsEnergy(); + system.setPhaseType(i, PhaseType.byValue(1)); + system.init(1); + gibbs2 = system.getPhase(i).getGibbsEnergy(); + if (gibbs1 < gibbs2) { + system.setPhaseType(i, PhaseType.byValue(0)); + } else { + system.setPhaseType(i, PhaseType.byValue(1)); + } + system.init(1); + } + } + + /** + *

+ * calcSolidBeta. + *

+ */ + public void calcSolidBeta() { + double tempVar = system.getPhase(0).getComponents()[solidIndex].getz(); + // double beta = 1.0; + for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { + tempVar -= + system.getBeta(i) * system.getPhase(3).getComponent(solidIndex).getFugacityCoefficient() + / system.getPhase(i).getComponent(solidIndex).getFugacityCoefficient(); + // beta -= system.getBeta(i); + } + if (tempVar > 0 && tempVar < 1.0) { + system.setBeta(system.getNumberOfPhases() - 1, tempVar); + } + } + + /** {@inheritDoc} */ + @Override + public void run() { + int iter = 0; + + ThermodynamicOperations ops = new ThermodynamicOperations(system); + system.setSolidPhaseCheck(false); + ops.TPflash(); + system.setSolidPhaseCheck(true); + if (checkAndAddSolidPhase() == 0) { + return; } - /** - *

- * checkAndAddSolidPhase. - *

- * - * @return a int - */ - public int checkAndAddSolidPhase() { - double[] solidCandidate = new double[system.getPhases()[0].getNumberOfComponents()]; - - for (int k = 0; k < system.getPhase(0).getNumberOfComponents(); k++) { - if (system.getTemperature() > system.getPhase(0).getComponent(k) - .getTriplePointTemperature()) { - solidCandidate[k] = -10; - } else { - solidCandidate[k] = system.getPhase(0).getComponents()[k].getz(); - system.getPhases()[3].getComponent(k).setx(1.0); - - for (int i = 0; i < system.getNumberOfPhases(); i++) { - solidCandidate[k] -= - system.getPhases()[3].getComponent(k).fugcoef(system.getPhases()[3]) - / system.getPhase(i).getComponent(k).getFugacityCoefficient(); - } - } - } - - for (int i = 0; i < solidCandidate.length; i++) { - if (solidCandidate[i] > 0.0) { - system.getPhases()[3].getComponent(i).setx(1.0); - solidIndex = i; - solidsNumber++; - } else { - system.getPhases()[3].getComponent(i).setx(0.0); - } + if (system.getPhase(0).getNumberOfComponents() <= 2) { + solvebeta1(); + } + do { + iter++; + this.solveBeta(); + // checkX(); + } while (iter < 1); + } + + /** + *

+ * checkAndAddSolidPhase. + *

+ * + * @return a int + */ + public int checkAndAddSolidPhase() { + double[] solidCandidate = new double[system.getPhases()[0].getNumberOfComponents()]; + + for (int k = 0; k < system.getPhase(0).getNumberOfComponents(); k++) { + if (system.getTemperature() > system.getPhase(0).getComponent(k) + .getTriplePointTemperature()) { + solidCandidate[k] = -10; + } else { + solidCandidate[k] = system.getPhase(0).getComponents()[k].getz(); + system.getPhases()[3].getComponent(k).setx(1.0); + + for (int i = 0; i < system.getNumberOfPhases(); i++) { + solidCandidate[k] -= system.getPhases()[3].getComponent(k).fugcoef(system.getPhases()[3]) + / system.getPhase(i).getComponent(k).getFugacityCoefficient(); } + } + } - for (int i = 0; i < solidsNumber; i++) { - system.setNumberOfPhases(system.getNumberOfPhases() + 1); - system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); - system.setBeta(system.getNumberOfPhases() - 1, solidCandidate[solidIndex]); - // system.setBeta(system.getNumberOfPhases() - 2, - // system.getBeta(system.getNumberOfPhases() - 2) - solidCandidate[solidIndex]); - } - return solidsNumber; + for (int i = 0; i < solidCandidate.length; i++) { + if (solidCandidate[i] > 0.0) { + system.getPhases()[3].getComponent(i).setx(1.0); + solidIndex = i; + solidsNumber++; + } else { + system.getPhases()[3].getComponent(i).setx(0.0); + } } - /** - *

- * solvebeta1. - *

- * - * @return a double - */ - public double solvebeta1() { - // double numberOfMolesFreeze = - // system.getPhase(0).getComponent(solidIndex).getNumberOfmoles(); - double solidCandidate = 0; - int iter = 0; - double dn = -0.01; - double solidCandidateOld = 0; - do { - solidCandidateOld = solidCandidate; - system.addComponent(system.getPhase(0).getComponent(solidIndex).getComponentName(), dn); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - // system.init(0); - system.setSolidPhaseCheck(false); - ops.TPflash(); - // system.setSolidPhaseCheck(true); - - iter++; - solidCandidate = system.getPhase(0).getComponents()[solidIndex].getz(); - for (int i = 0; i < system.getNumberOfPhases(); i++) { - solidCandidate -= system.getPhases()[3].getComponent(solidIndex) - .fugcoef(system.getPhases()[3]) - / system.getPhase(i).getComponent(solidIndex).getFugacityCoefficient(); - } - double dsoliddn = (solidCandidate - solidCandidateOld) / dn; - dn = -0.5 * solidCandidate / dsoliddn; - logger.info("solid cand " + solidCandidate); - } while (solidCandidate > 1e-5 && iter < 50); - - return 1.0; + for (int i = 0; i < solidsNumber; i++) { + system.setNumberOfPhases(system.getNumberOfPhases() + 1); + system.setPhaseIndex(system.getNumberOfPhases() - 1, 3); + system.setBeta(system.getNumberOfPhases() - 1, solidCandidate[solidIndex]); + // system.setBeta(system.getNumberOfPhases() - 2, + // system.getBeta(system.getNumberOfPhases() - 2) - solidCandidate[solidIndex]); } + return solidsNumber; + } + + /** + *

+ * solvebeta1. + *

+ * + * @return a double + */ + public double solvebeta1() { + // double numberOfMolesFreeze = + // system.getPhase(0).getComponent(solidIndex).getNumberOfmoles(); + double solidCandidate = 0; + int iter = 0; + double dn = -0.01; + double solidCandidateOld = 0; + do { + solidCandidateOld = solidCandidate; + system.addComponent(system.getPhase(0).getComponent(solidIndex).getComponentName(), dn); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + // system.init(0); + system.setSolidPhaseCheck(false); + ops.TPflash(); + // system.setSolidPhaseCheck(true); + + iter++; + solidCandidate = system.getPhase(0).getComponents()[solidIndex].getz(); + for (int i = 0; i < system.getNumberOfPhases(); i++) { + solidCandidate -= + system.getPhases()[3].getComponent(solidIndex).fugcoef(system.getPhases()[3]) + / system.getPhase(i).getComponent(solidIndex).getFugacityCoefficient(); + } + double dsoliddn = (solidCandidate - solidCandidateOld) / dn; + dn = -0.5 * solidCandidate / dsoliddn; + logger.info("solid cand " + solidCandidate); + } while (solidCandidate > 1e-5 && iter < 50); + + return 1.0; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPflash.java index 016fccd6e6..9c2dfe83ca 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPflash.java @@ -2,8 +2,11 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; +import neqsim.util.exception.IsNaNException; +import neqsim.util.exception.TooManyIterationsException; /** *

@@ -52,11 +55,11 @@ public TPflash(SystemInterface system) { *

* * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param solCheck a boolean + * @param checkForSolids Set true to do solid phase check and calculations */ - public TPflash(SystemInterface system, boolean solCheck) { + public TPflash(SystemInterface system, boolean checkForSolids) { this(system); - solidCheck = solCheck; + solidCheck = checkForSolids; } /** @@ -87,10 +90,16 @@ public void sucsSubs() { } double oldBeta = system.getBeta(); + + RachfordRice rachfordRice = new RachfordRice(); try { - system.calcBeta(); - } catch (Exception e) { - logger.error("error in beta calc" + e.toString()); + system.setBeta(rachfordRice.calcBetaS(system)); + //system.setBeta(rachfordRice.calcBeta(system.getKvector(), system.getzvector())); + } catch (IsNaNException ex) { + logger.warn("Not able to calculate beta. Value is NaN"); + system.setBeta(oldBeta); + } catch (TooManyIterationsException ex) { + logger.warn("Not able to calculate beta, calculation is not converging."); system.setBeta(oldBeta); } if (system.getBeta() > 1.0 - betaTolerance) { @@ -109,8 +118,8 @@ public void sucsSubs() { *

*/ public void accselerateSucsSubs() { - double prod1 = 0.0, prod2 = 0.0; - + double prod1 = 0.0; + double prod2 = 0.0; for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { prod1 += oldDeltalnK[i] * oldoldDeltalnK[i]; prod2 += oldoldDeltalnK[i] * oldoldDeltalnK[i]; @@ -126,14 +135,17 @@ public void accselerateSucsSubs() { system.getPhase(1).getComponent(i).setK(Math.exp(lnK[i])); } double oldBeta = system.getBeta(); + RachfordRice rachfordRice = new RachfordRice(); try { - system.calcBeta(); - } catch (Exception e) { + system.setBeta(rachfordRice.calcBeta(system.getKvector(), system.getzvector())); + } catch (Exception ex) { + system.setBeta(rachfordRice.getBeta()[0]); if (system.getBeta() > 1.0 - betaTolerance || system.getBeta() < betaTolerance) { system.setBeta(oldBeta); } - logger.info("temperature " + system.getTemperature() + " pressure " + system.getPressure()); - logger.error("error", e); + // logger.info("temperature " + system.getTemperature() + " pressure " + + // system.getPressure()); + logger.error(ex.getMessage(), ex); } system.calc_x_y(); @@ -166,18 +178,18 @@ public void setNewK() { *

*/ public void resetK() { - for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { lnK[i] = lnOldK[i]; system.getPhase(0).getComponents()[i].setK(Math.exp(lnK[i])); system.getPhase(1).getComponents()[i].setK(Math.exp(lnK[i])); } try { - system.calcBeta(); + RachfordRice rachfordRice = new RachfordRice(); + system.setBeta(rachfordRice.calcBeta(system.getKvector(), system.getzvector())); system.calc_x_y(); system.init(1); - } catch (Exception e) { - logger.error("error", e); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } } @@ -189,7 +201,7 @@ public void run() { return; } - findLowesGibsPhaseIsChecked = false; + findLowestGibbsPhaseIsChecked = false; int minGibbsPhase = 0; double minimumGibbsEnergy = 0; @@ -221,7 +233,9 @@ public void run() { minGibsLogFugCoef = new double[system.getPhase(0).getNumberOfComponents()]; for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - minGibsPhaseLogZ[i] = Math.log(system.getPhase(minGibbsPhase).getComponent(i).getz()); + if (system.getPhase(minGibbsPhase).getComponent(i).getz() > 1e-50) { + minGibsPhaseLogZ[i] = Math.log(system.getPhase(minGibbsPhase).getComponent(i).getz()); + } minGibsLogFugCoef[i] = system.getPhase(minGibbsPhase).getComponent(i).getLogFugacityCoefficient(); } @@ -242,9 +256,10 @@ public void run() { // Calculates phase fractions and initial composition based on Wilson K-factors try { - system.calcBeta(); - } catch (Exception e) { - logger.error("error", e); + RachfordRice rachfordRice = new RachfordRice(); + system.setBeta(rachfordRice.calcBeta(system.getKvector(), system.getzvector())); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } system.calc_x_y(); system.init(1); @@ -289,14 +304,16 @@ public void run() { dgonRT = -1.0; } else { for (i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - tpdy += system.getPhase(0).getComponent(i).getx() - * (Math.log(system.getPhase(0).getComponent(i).getFugacityCoefficient()) - + Math.log(system.getPhase(0).getComponents()[i].getx()) - minGibsPhaseLogZ[i] - - minGibsLogFugCoef[i]); - tpdx += system.getPhase(1).getComponent(i).getx() - * (Math.log(system.getPhase(1).getComponent(i).getFugacityCoefficient()) - + Math.log(system.getPhase(1).getComponents()[i].getx()) - minGibsPhaseLogZ[i] - - minGibsLogFugCoef[i]); + if (system.getComponent(i).getz() > 1e-50) { + tpdy += system.getPhase(0).getComponent(i).getx() + * (Math.log(system.getPhase(0).getComponent(i).getFugacityCoefficient()) + + Math.log(system.getPhase(0).getComponents()[i].getx()) - minGibsPhaseLogZ[i] + - minGibsLogFugCoef[i]); + tpdx += system.getPhase(1).getComponent(i).getx() + * (Math.log(system.getPhase(1).getComponent(i).getFugacityCoefficient()) + + Math.log(system.getPhase(1).getComponents()[i].getx()) - minGibsPhaseLogZ[i] + - minGibsLogFugCoef[i]); + } } dgonRT = system.getPhase(0).getBeta() * tpdy + (1.0 - system.getPhase(0).getBeta()) * tpdx; @@ -324,29 +341,25 @@ public void run() { } if (passedTests || (dgonRT > 0 && tpdx > 0 && tpdy > 0) || Double.isNaN(system.getBeta())) { - if (system.checkStability()) { - if (stabilityCheck()) { - if (system.doMultiPhaseCheck()) { - // logger.info("one phase flash is stable - checking multiphase flash.... - // "); - TPmultiflash operation = new TPmultiflash(system, true); - operation.run(); - // commented out by Even Solbraa 6/2-2012k - // system.orderByDensity(); - // system.init(3); - } - if (solidCheck) { - this.solidPhaseFlash(); - } - if (system.isMultiphaseWaxCheck()) { - TPmultiflashWAX operation = new TPmultiflashWAX(system, true); - operation.run(); - } - - system.orderByDensity(); - system.init(1); - return; + if (system.checkStability() && stabilityCheck()) { + if (system.doMultiPhaseCheck()) { + // logger.info("one phase flash is stable - checking multiphase flash...."); + TPmultiflash operation = new TPmultiflash(system, true); + operation.run(); } + if (solidCheck) { + this.solidPhaseFlash(); + } + if (system.isMultiphaseWaxCheck()) { + TPmultiflashWAX operation = new TPmultiflashWAX(system, true); + operation.run(); + } + + system.orderByDensity(); + system.init(1); + // commented out by Even Solbraa 6/2-2012k + // system.init(3); + return; } } @@ -357,12 +370,12 @@ public void run() { // Checks if gas or oil is the most stable phase double gasgib = system.getPhase(0).getGibbsEnergy(); - system.setPhaseType(0, 0); + system.setPhaseType(0, PhaseType.byValue(0)); system.init(1, 0); double liqgib = system.getPhase(0).getGibbsEnergy(); if (gasgib * (1.0 - Math.signum(gasgib) * 1e-8) < liqgib) { - system.setPhaseType(0, 1); + system.setPhaseType(0, PhaseType.byValue(1)); } system.init(1); @@ -370,7 +383,9 @@ public void run() { int newtonLimit = 20; int timeFromLastGibbsFail = 0; - double chemdev = 0, oldChemDiff = 1.0, diffChem = 1.0; + double chemdev = 0; + double oldChemDiff = 1.0; + double diffChem = 1.0; do { iterations = 0; do { @@ -392,7 +407,7 @@ public void run() { } try { deviation = secondOrderSolver.solve(); - } catch (Exception e) { + } catch (Exception ex) { sucsSubs(); } } else { @@ -403,7 +418,7 @@ public void run() { gibbsEnergy = system.getGibbsEnergy(); if ((gibbsEnergy - gibbsEnergyOld) / Math.abs(gibbsEnergyOld) > 1e-3 - && !system.isChemicalSystem() && timeFromLastGibbsFail>0) { + && !system.isChemicalSystem() && timeFromLastGibbsFail > 0) { resetK(); timeFromLastGibbsFail = 0; // logger.info("gibbs decrease " + (gibbsEnergy - gibbsEnergyOld) / @@ -421,7 +436,7 @@ public void run() { oldChemDiff = chemdev; chemdev = 0.0; - double xchem[] = new double[system.getPhase(0).getNumberOfComponents()]; + double[] xchem = new double[system.getPhase(0).getNumberOfComponents()]; for (int phase = 1; phase < system.getNumberOfPhases(); phase++) { for (i = 0; i < system.getPhases()[phase].getNumberOfComponents(); i++) { @@ -450,20 +465,20 @@ public void run() { operation.run(); } else { // Checks if gas or oil is the most stable phase - if (system.getPhase(0).getPhaseType() == 1) { + if (system.getPhase(0).getType() == PhaseType.GAS) { gasgib = system.getPhase(0).getGibbsEnergy(); - system.setPhaseType(0, 0); + system.setPhaseType(0, PhaseType.byValue(0)); system.init(1, 0); liqgib = system.getPhase(0).getGibbsEnergy(); } else { liqgib = system.getPhase(0).getGibbsEnergy(); - system.setPhaseType(0, 1); + system.setPhaseType(0, PhaseType.byValue(1)); system.init(1, 0); gasgib = system.getPhase(0).getGibbsEnergy(); } if (gasgib * (1.0 - Math.signum(gasgib) * 1e-8) < liqgib) { - system.setPhaseType(0, 1); + system.setPhaseType(0, PhaseType.byValue(1)); } system.init(1); diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPgradientFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPgradientFlash.java index a30d511f2c..e732347a8c 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPgradientFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPgradientFlash.java @@ -3,6 +3,7 @@ * * Created on 8. mars 2001, 10:56 */ + package neqsim.thermodynamicOperations.flashOps; import Jama.Matrix; @@ -17,155 +18,154 @@ * @version $Id: $Id */ public class TPgradientFlash extends Flash { - private static final long serialVersionUID = 1000; - - SystemInterface localSystem = null, tempSystem = null; - double temperature = 0.0, height = 0.0, deltaHeight = 0.0; - double deltaT = 0.0; - Matrix Jac; - Matrix fvec; - Matrix u; - Matrix dx; - Matrix uold; - - /** - *

- * Constructor for TPgradientFlash. - *

- */ - public TPgradientFlash() {} - - /** - *

- * Constructor for TPgradientFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param height a double - * @param temperature a double - */ - public TPgradientFlash(SystemInterface system, double height, double temperature) { - this.system = system; - this.temperature = temperature; - this.height = height; - Jac = new Matrix(system.getPhase(0).getNumberOfComponents(), - system.getPhase(0).getNumberOfComponents()); - fvec = new Matrix(system.getPhase(0).getNumberOfComponents(), 1); - } - - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - fvec.set(i, 0, Math - .log(localSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() - * localSystem.getPhases()[0].getComponents()[i].getx() - * localSystem.getPressure()) - - Math.log(tempSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() - * tempSystem.getPhases()[0].getComponents()[i].getx() - * tempSystem.getPressure()) - - tempSystem.getPhases()[0].getComponents()[i].getMolarMass() - * neqsim.thermo.ThermodynamicConstantsInterface.gravity * deltaHeight - / neqsim.thermo.ThermodynamicConstantsInterface.R - / tempSystem.getPhase(0).getTemperature() - + tempSystem.getPhases()[0].getComponents()[i].getMolarMass() - * (tempSystem.getPhases()[0].getEnthalpy() - / tempSystem.getPhases()[0].getNumberOfMolesInPhase() - / tempSystem.getPhase(0).getMolarMass() - - tempSystem.getPhases()[0].getComponents()[i] - .getEnthalpy(tempSystem.getPhase(0).getTemperature()) - / tempSystem.getPhases()[0].getComponent(i) - .getNumberOfMolesInPhase() - / tempSystem.getPhase(0).getComponent(i).getMolarMass()) - * deltaT / tempSystem.getPhase(0).getTemperature() - / neqsim.thermo.ThermodynamicConstantsInterface.R - / tempSystem.getPhase(0).getTemperature()); - } - } - - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac.timesEquals(0.0); - double dij = 0.0; - - double tempJ = 0.0; - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = 1.0 - / (localSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() - * localSystem.getPhases()[0].getComponents()[i].getx() - * localSystem.getPressure()) - * (localSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() - * dij * localSystem.getPressure() - + localSystem.getPhases()[0].getComponents()[i].getdfugdx(j) - * localSystem.getPhases()[0].getComponents()[i].getx() - * localSystem.getPressure()); - Jac.set(i, j, tempJ); - } - } + private static final long serialVersionUID = 1000; + + SystemInterface localSystem = null; + SystemInterface tempSystem = null; + double temperature = 0.0; + double height = 0.0; + double deltaHeight = 0.0; + double deltaT = 0.0; + Matrix Jac; + Matrix fvec; + Matrix u; + Matrix dx; + Matrix uold; + + /** + *

+ * Constructor for TPgradientFlash. + *

+ */ + public TPgradientFlash() {} + + /** + *

+ * Constructor for TPgradientFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param height a double + * @param temperature a double + */ + public TPgradientFlash(SystemInterface system, double height, double temperature) { + this.system = system; + this.temperature = temperature; + this.height = height; + Jac = new Matrix(system.getPhase(0).getNumberOfComponents(), + system.getPhase(0).getNumberOfComponents()); + fvec = new Matrix(system.getPhase(0).getNumberOfComponents(), 1); + } + + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + fvec.set(i, 0, + Math.log(localSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() + * localSystem.getPhases()[0].getComponents()[i].getx() * localSystem.getPressure()) + - Math.log(tempSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() + * tempSystem.getPhases()[0].getComponents()[i].getx() * tempSystem.getPressure()) + - tempSystem.getPhases()[0].getComponents()[i].getMolarMass() + * neqsim.thermo.ThermodynamicConstantsInterface.gravity * deltaHeight + / neqsim.thermo.ThermodynamicConstantsInterface.R + / tempSystem.getPhase(0).getTemperature() + + tempSystem.getPhases()[0].getComponents()[i].getMolarMass() + * (tempSystem.getPhases()[0].getEnthalpy() + / tempSystem.getPhases()[0].getNumberOfMolesInPhase() + / tempSystem.getPhase(0).getMolarMass() + - tempSystem.getPhases()[0].getComponents()[i] + .getEnthalpy(tempSystem.getPhase(0).getTemperature()) + / tempSystem.getPhases()[0].getComponent(i).getNumberOfMolesInPhase() + / tempSystem.getPhase(0).getComponent(i).getMolarMass()) + * deltaT / tempSystem.getPhase(0).getTemperature() + / neqsim.thermo.ThermodynamicConstantsInterface.R + / tempSystem.getPhase(0).getTemperature()); } - - /** - *

- * setNewX. - *

- */ - public void setNewX() { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - localSystem.getPhase(0).getComponent(i) - .setx(localSystem.getPhase(0).getComponent(i).getx() - 0.5 * dx.get(i, 0)); - } - localSystem.getPhase(0).normalize(); + } + + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); + double dij = 0.0; + + double tempJ = 0.0; + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = 1.0 + / (localSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() + * localSystem.getPhases()[0].getComponents()[i].getx() * localSystem.getPressure()) + * (localSystem.getPhases()[0].getComponents()[i].getFugacityCoefficient() * dij + * localSystem.getPressure() + + localSystem.getPhases()[0].getComponents()[i].getdfugdx(j) + * localSystem.getPhases()[0].getComponents()[i].getx() + * localSystem.getPressure()); + Jac.set(i, j, tempJ); + } } - - /** {@inheritDoc} */ - @Override - public void run() { - tempSystem = system.clone(); - tempSystem.init(0); - tempSystem.init(3); - - localSystem = system.clone(); - // localSystem.setPressure(height*9.81*height); - - deltaT = (temperature - system.getTemperature()) / 20.0; - deltaHeight = height / 20.0; - - for (int i = 0; i < 20; i++) { - localSystem.setTemperature(localSystem.getTemperature() + deltaT); - for (int o = 0; o < 15; o++) { - localSystem.init(3); - setfvec(); - setJac(); - dx = Jac.solve(fvec); - dx.print(10, 10); - setNewX(); - } - // localSystem.display(); - - tempSystem = localSystem.clone(); - tempSystem.init(3); - } + } + + /** + *

+ * setNewX. + *

+ */ + public void setNewX() { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + localSystem.getPhase(0).getComponent(i) + .setx(localSystem.getPhase(0).getComponent(i).getx() - 0.5 * dx.get(i, 0)); } - - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return localSystem; - } - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; + localSystem.getPhase(0).normalize(); + } + + /** {@inheritDoc} */ + @Override + public void run() { + tempSystem = system.clone(); + tempSystem.init(0); + tempSystem.init(3); + + localSystem = system.clone(); + // localSystem.setPressure(height*9.81*height); + + deltaT = (temperature - system.getTemperature()) / 20.0; + deltaHeight = height / 20.0; + + for (int i = 0; i < 20; i++) { + localSystem.setTemperature(localSystem.getTemperature() + deltaT); + for (int o = 0; o < 15; o++) { + localSystem.init(3); + setfvec(); + setJac(); + dx = Jac.solve(fvec); + dx.print(10, 10); + setNewX(); + } + // localSystem.display(); + + tempSystem = localSystem.clone(); + tempSystem.init(3); } + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return localSystem; + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflash.java index ee93f6edcc..3d1d0337df 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflash.java @@ -1,10 +1,9 @@ - - /* * TPmultiflash.java * * Created on 2. oktober 2000, 22:26 */ + package neqsim.thermodynamicOperations.flashOps; import static neqsim.thermo.ThermodynamicModelSettings.phaseFractionMinimumLimit; @@ -13,6 +12,7 @@ import org.apache.logging.log4j.Logger; import org.ejml.simple.SimpleMatrix; import neqsim.thermo.ThermodynamicModelSettings; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; /** @@ -24,1012 +24,1368 @@ * @version $Id: $Id */ public class TPmultiflash extends TPflash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(TPmultiflash.class); - - // SystemInterface clonedSystem; - boolean multiPhaseTest = false; - double dQdbeta[][]; - double Qmatrix[][]; - double Erow[]; - double Q = 0; - boolean doStabilityAnalysis = true; - boolean removePhase = false, checkOneRemove = false; - boolean secondTime = false; - - double[] multTerm, multTerm2; - - /** - *

- * Constructor for TPmultiflash. - *

+ private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(TPmultiflash.class); + + // SystemInterface clonedSystem; + boolean multiPhaseTest = false; + double[][] dQdbeta; + double[][] Qmatrix; + double[] Erow; + double Q = 0; + boolean doStabilityAnalysis = true; + boolean removePhase = false; + boolean checkOneRemove = false; + boolean secondTime = false; + + double[] multTerm; + double[] multTerm2; + + /** + *

+ * Constructor for TPmultiflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public TPmultiflash(SystemInterface system) { + super(system); + Erow = new double[system.getPhase(0).getNumberOfComponents()]; + } + + /** + *

+ * Constructor for TPmultiflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param checkForSolids Set true to do solid phase check and calculations + */ + public TPmultiflash(SystemInterface system, boolean checkForSolids) { + super(system, checkForSolids); + Erow = new double[system.getPhase(0).getNumberOfComponents()]; + multTerm = new double[system.getPhase(0).getNumberOfComponents()]; + multTerm2 = new double[system.getPhase(0).getNumberOfComponents()]; + } + + /** + *

+ * calcMultiPhaseBeta. + *

+ */ + public void calcMultiPhaseBeta() {} + + /** + *

+ * setDoubleArrays. + *

+ */ + public void setDoubleArrays() { + dQdbeta = new double[system.getNumberOfPhases()][1]; + Qmatrix = new double[system.getNumberOfPhases()][system.getNumberOfPhases()]; + } + + /** + *

+ * setXY. + *

+ */ + public void setXY() { + for (int k = 0; k < system.getNumberOfPhases(); k++) { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getz() > 1e-100) { + system.getPhase(k).getComponents()[i].setx(system.getPhase(0).getComponents()[i].getz() + / Erow[i] / system.getPhase(k).getComponent(i).getFugacityCoefficient()); + } + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0 + && system.getPhase(k).getType() != PhaseType.AQUEOUS) { + system.getPhase(k).getComponents()[i].setx(1e-50); + } + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0 + && system.getPhase(k).getType() == PhaseType.AQUEOUS) { + system.getPhase(k).getComponents()[i] + .setx(system.getPhase(k).getComponents()[i].getNumberOfmoles() + / system.getPhase(k).getNumberOfMolesInPhase()); + } + } + + system.getPhase(k).normalize(); + } + } + + /** + *

+ * calcE. + *

+ */ + public void calcE() { + // E = new double[system.getPhase(0).getNumberOfComponents()]; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + Erow[i] = 0.0; + for (int k = 0; k < system.getNumberOfPhases(); k++) { + Erow[i] += system.getPhase(k).getBeta() + / system.getPhase(k).getComponent(i).getFugacityCoefficient(); + } + } + } + + /** + *

+ * calcQ. + *

+ * + * @return a double + */ + public double calcQ() { + /* + * double betaTotal = 0; for (int k = 0; k < system.getNumberOfPhases(); k++) { betaTotal += + * system.getPhase(k).getBeta(); } Q = betaTotal; + */ + this.calcE(); + /* + * for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { Q -= Math.log(E[i]) * + * system.getPhase(0).getComponent(i).getz(); } */ - public TPmultiflash() {} - /** - *

- * Constructor for TPmultiflash. - *

+ for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + multTerm[i] = system.getPhase(0).getComponent(i).getz() / Erow[i]; + multTerm2[i] = system.getPhase(0).getComponent(i).getz() / (Erow[i] * Erow[i]); + } + + for (int k = 0; k < system.getNumberOfPhases(); k++) { + dQdbeta[k][0] = 1.0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + dQdbeta[k][0] -= multTerm[i] / system.getPhase(k).getComponent(i).getFugacityCoefficient(); + } + } + + for (int i = 0; i < system.getNumberOfPhases(); i++) { + for (int j = 0; j < system.getNumberOfPhases(); j++) { + Qmatrix[i][j] = 0.0; + for (int k = 0; k < system.getPhase(0).getNumberOfComponents(); k++) { + Qmatrix[i][j] += + multTerm2[k] / (system.getPhase(j).getComponent(k).getFugacityCoefficient() + * system.getPhase(i).getComponent(k).getFugacityCoefficient()); + } + if (i == j) { + Qmatrix[i][j] += 1.0e-3; + } + } + } + return Q; + } + + /** + *

+ * solveBeta. + *

+ * + * @return a double + */ + public double solveBeta() { + SimpleMatrix betaMatrix = new SimpleMatrix(1, system.getNumberOfPhases()); + SimpleMatrix ans = null; + double err = 1.0; + int iter = 1; + do { + iter++; + for (int k = 0; k < system.getNumberOfPhases(); k++) { + betaMatrix.set(0, k, system.getPhase(k).getBeta()); + } + + calcQ(); + SimpleMatrix dQM = new SimpleMatrix(dQdbeta); + SimpleMatrix dQdBM = new SimpleMatrix(Qmatrix); + try { + ans = dQdBM.solve(dQM).transpose(); + } catch (Exception ex) { + } + betaMatrix = betaMatrix.minus(ans.scale(iter / (iter + 3.0))); + removePhase = false; + for (int k = 0; k < system.getNumberOfPhases(); k++) { + system.setBeta(k, betaMatrix.get(0, k)); + if (betaMatrix.get(0, k) < phaseFractionMinimumLimit) { + system.setBeta(k, phaseFractionMinimumLimit); + if (checkOneRemove) { + checkOneRemove = false; + removePhase = true; + } + checkOneRemove = true; + } else if (betaMatrix.get(0, k) > (1.0 - phaseFractionMinimumLimit)) { + system.setBeta(k, 1.0 - phaseFractionMinimumLimit); + } + } + system.normalizeBeta(); + system.init(1); + calcE(); + setXY(); + system.init(1); + err = ans.normF(); + } while ((err > 1e-12 && iter < 50) || iter < 3); + // logger.info("iterations " + iter); + return err; + } + + /** {@inheritDoc} */ + @Override + public void stabilityAnalysis() { + double[] logWi = new double[system.getPhase(0).getNumberOfComponents()]; + double[][] Wi = new double[system.getPhase(0).getNumberOfComponents()][system.getPhase(0) + .getNumberOfComponents()]; + + double[] deltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldoldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] sumw = new double[system.getPhase(0).getNumberOfComponents()]; + double err = 0; + double[] oldlogw = new double[system.getPhase(0).getNumberOfComponents()]; + double[] oldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldoldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] d = new double[system.getPhase(0).getNumberOfComponents()]; + double[][] x = new double[system.getPhase(0).getNumberOfComponents()][system.getPhase(0) + .getNumberOfComponents()]; + tm = new double[system.getPhase(0).getNumberOfComponents()]; + + double[] alpha = null; + // SystemInterface minimumGibbsEnergySystem; + ArrayList clonedSystem = new ArrayList(1); + // if (minimumGibbsEnergySystem == null) { + // minimumGibbsEnergySystem = system.clone(); + // } + minimumGibbsEnergySystem = system; + clonedSystem.add(system.clone()); + /* + * for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { if + * (system.getPhase(0).getComponent(i).getx() < 1e-100) { clonedSystem.add(null); continue; } + * double numb = 0; clonedSystem.add(system.clone()); * - * @param system a {@link neqsim.thermo.system.SystemInterface} object + * // (clonedSystem.get(i)).init(0); commented out sept 2005, Even S. for (int j = 0; j < + * system.getPhase(0).getNumberOfComponents(); j++) { numb = i == j ? 1.0 : 1.0e-12; // set to 0 + * by Even Solbraa 23.01.2013 - chaged back to 1.0e-12 27.04.13 if + * (system.getPhase(0).getComponent(j).getz() < 1e-100) { numb = 0; } ( + * clonedSystem.get(i)).getPhase(1).getComponents()[j].setx(numb); } if + * (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { ( clonedSystem.get(i)).init(1); + * } } */ - public TPmultiflash(SystemInterface system) { - super(system); - Erow = new double[system.getPhase(0).getNumberOfComponents()]; - } - /** - *

- * Constructor for TPmultiflash. - *

+ lowestGibbsEnergyPhase = 0; + /* + * // logger.info("low gibbs phase " + lowestGibbsEnergyPhase); for (int k = 0; k < + * minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { for (int i = 0; i < + * minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { if (!(( + * clonedSystem.get(k)) == null)) { sumw[k] += ( + * clonedSystem.get(k)).getPhase(1).getComponents()[i].getx(); } } } * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param check a boolean + * for (int k = 0; k < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { for + * (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { if (!(( + * clonedSystem.get(k)) == null) && system.getPhase(0).getComponent(k).getx() > 1e-100) { ( + * clonedSystem.get(k)).getPhase(1).getComponents()[i].setx(( + * clonedSystem.get(k)).getPhase(1).getComponents()[i].getx() / sumw[0]); } logger.info("x: " + + * ( clonedSystem.get(k)).getPhase(0).getComponents()[i].getx()); } if + * (system.getPhase(0).getComponent(k).getx() > 1e-100) { d[k] = + * Math.log(system.getPhase(0).getComponents()[k].getx()) + + * system.getPhase(0).getComponents()[k].getLogFugacityCoefficient(); + * if(minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents + * ()[k].getIonicCharge()!=0) d[k]=0; } //logger.info("dk: " + d[k]); } */ - public TPmultiflash(SystemInterface system, boolean check) { - super(system, check); - Erow = new double[system.getPhase(0).getNumberOfComponents()]; - multTerm = new double[system.getPhase(0).getNumberOfComponents()]; - multTerm2 = new double[system.getPhase(0).getNumberOfComponents()]; + for (int k = 0; k < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { + if (system.getPhase(0).getComponent(k).getx() > 1e-100) { + d[k] = Math.log(system.getPhase(0).getComponents()[k].getx()) + + system.getPhase(0).getComponents()[k].getLogFugacityCoefficient(); + // if(minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents()[k].getIonicCharge()!=0) + // d[k]=0; + } } - /** - *

- * calcMultiPhaseBeta. - *

- */ - public void calcMultiPhaseBeta() {} + for (int j = 0; j < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); j++) { + if (system.getPhase(0).getComponent(j).getz() > 1e-100) { + logWi[j] = 1.0; + } else { + logWi[j] = -10000.0; + } + } - /** - *

- * setDoubleArrays. - *

- */ - public void setDoubleArrays() { - dQdbeta = new double[system.getNumberOfPhases()][1]; - Qmatrix = new double[system.getNumberOfPhases()][system.getNumberOfPhases()]; + int hydrocarbonTestCompNumb = 0; + int lightTestCompNumb = 0; + double Mmax = 0; + double Mmin = 1e10; + for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { + if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon()) { + if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) > Mmax) { + Mmax = minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass(); + } + if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) < Mmin) { + Mmin = minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass(); + } + } } - /** - *

- * setXY. - *

- */ - public void setXY() { - for (int k = 0; k < system.getNumberOfPhases(); k++) { + for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { + if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon() + && minimumGibbsEnergySystem.getPhase(0).getComponent(i).getz() > 1e-50) { + if (Math.abs( + (minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) - Mmax) < 1e-5) { + hydrocarbonTestCompNumb = i; + // logger.info("CHECKING heavy component " + hydrocarbonTestCompNumb); + } + } + + if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon() + && minimumGibbsEnergySystem.getPhase(0).getComponent(i).getz() > 1e-50) { + if (Math.abs( + (minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) - Mmin) < 1e-5) { + lightTestCompNumb = i; + // logger.info("CHECKING light component " + lightTestCompNumb); + } + } + } + + for (int j = system.getPhase(0).getNumberOfComponents() - 1; j >= 0; j--) { + if (minimumGibbsEnergySystem.getPhase(0).getComponent(j).getx() < 1e-100 + || (minimumGibbsEnergySystem.getPhase(0).getComponent(j).getIonicCharge() != 0) + || (minimumGibbsEnergySystem.getPhase(0).getComponent(j).isHydrocarbon() + && j != hydrocarbonTestCompNumb && j != lightTestCompNumb)) { + continue; + } + + double nomb = 0.0; + for (int cc = 0; cc < system.getPhase(0).getNumberOfComponents(); cc++) { + nomb = cc == j ? 1.0 : 1.0e-12; + if (system.getPhase(0).getComponent(cc).getz() < 1e-100) { + nomb = 0.0; + } + + if (clonedSystem.get(0).isPhase(1)) { + try { + clonedSystem.get(0).getPhase(1).getComponents()[cc].setx(nomb); + } catch (Exception ex) { + logger.warn(ex.getMessage()); + } + } + } + // if(minimumGibbsEnergySystem.getPhase(0).getComponent(j).getName().equals("water") + // && minimumGibbsEnergySystem.isChemicalSystem()) continue; + // logger.info("STAB CHECK COMP " + + // system.getPhase(0).getComponent(j).getComponentName()); + // if(minimumGibbsEnergySystem.getPhase(0).getComponent(j).isInert()) break; + int iter = 0; + double errOld = 1.0e100; + boolean useaccsubst = true; + int maxsucssubiter = 150; + int maxiter = 200; + do { + errOld = err; + iter++; + err = 0; + + if (iter <= maxsucssubiter || !system.isImplementedCompositionDeriativesofFugacity()) { + if (iter % 7 == 0 && useaccsubst) { + double vec1 = 0.0; + + double vec2 = 0.0; + double prod1 = 0.0; + double prod2 = 0.0; + for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + vec1 = oldDeltalogWi[i] * oldoldDeltalogWi[i]; + vec2 = Math.pow(oldoldDeltalogWi[i], 2.0); + prod1 += vec1 * vec2; + prod2 += vec2 * vec2; + } + + double lambda = prod1 / prod2; + // logger.info("lambda " + lambda); + for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + logWi[i] += lambda / (1.0 - lambda) * deltalogWi[i]; + err += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); + Wi[j][i] = Math.exp(logWi[i]); + } + } else { for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getz() > 1e-100) { - system.getPhase(k).getComponents()[i] - .setx(system.getPhase(0).getComponents()[i].getz() / Erow[i] - / system.getPhase(k).getComponent(i).getFugacityCoefficient()); - } - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0 - && !system.getPhase(k).getPhaseTypeName().equals("aqueous")) { - system.getPhase(k).getComponents()[i].setx(1e-50); - } - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0 - && system.getPhase(k).getPhaseTypeName().equals("aqueous")) { - system.getPhase(k).getComponents()[i] - .setx(system.getPhase(k).getComponents()[i].getNumberOfmoles() - / system.getPhase(k).getNumberOfMolesInPhase()); + oldoldoldlogw[i] = oldoldlogw[i]; + oldoldlogw[i] = oldlogw[i]; + oldlogw[i] = logWi[i]; + oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; + oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; + } + clonedSystem.get(0).init(1, 1); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + // oldlogw[i] = logWi[i]; + if (!Double.isInfinite( + clonedSystem.get(0).getPhase(1).getComponents()[i].getLogFugacityCoefficient()) + && system.getPhase(0).getComponent(i).getx() > 1e-100) { + logWi[i] = d[i] - clonedSystem.get(0).getPhase(1).getComponents()[i] + .getLogFugacityCoefficient(); + if (clonedSystem.get(0).getPhase(1).getComponents()[i].getIonicCharge() != 0) { + logWi[i] = -1000.0; } + } + deltalogWi[i] = logWi[i] - oldlogw[i]; + err += Math.abs(logWi[i] - oldlogw[i]); + Wi[j][i] = Math.exp(logWi[i]); + useaccsubst = true; + } + if (iter > 2 && err > errOld) { + useaccsubst = false; + } + } + } else { + SimpleMatrix f = new SimpleMatrix(system.getPhases()[0].getNumberOfComponents(), 1); + SimpleMatrix df = null; + SimpleMatrix identitytimesConst = null; + // if (!secondOrderStabilityAnalysis) { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + oldoldoldlogw[i] = oldoldlogw[i]; + oldoldlogw[i] = oldlogw[i]; + oldlogw[i] = logWi[i]; + oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; + oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; + } + clonedSystem.get(0).init(3, 1); + alpha = new double[clonedSystem.get(0).getPhases()[0].getNumberOfComponents()]; + df = new SimpleMatrix(system.getPhases()[0].getNumberOfComponents(), + system.getPhases()[0].getNumberOfComponents()); + identitytimesConst = SimpleMatrix.identity(system.getPhases()[0].getNumberOfComponents()); + // , + // system.getPhases()[0].getNumberOfComponents()); + // secondOrderStabilityAnalysis = true; + // } + + for (int i = 0; i < clonedSystem.get(0).getPhases()[0].getNumberOfComponents(); i++) { + alpha[i] = 2.0 * Math.sqrt(Wi[j][i]); + } + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getz() > 1e-100) { + f.set(i, 0, + Math.sqrt(Wi[j][i]) + * (Math.log(Wi[j][i]) + clonedSystem.get(0).getPhases()[1].getComponents()[i] + .getLogFugacityCoefficient() - d[i])); + } + for (int k = 0; k < clonedSystem.get(0).getPhases()[0].getNumberOfComponents(); k++) { + double kronDelt = (i == k) ? 1.0 : 0.0; + if (system.getPhase(0).getComponent(i).getz() > 1e-100) { + df.set(i, k, kronDelt + Math.sqrt(Wi[j][k] * Wi[j][i]) + * clonedSystem.get(0).getPhases()[1].getComponents()[i].getdfugdn(k)); + // * clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); + } else { + df.set(i, k, 0); + // * clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); + } + } + } + + // f.print(10, 10); + // df.print(10, 10); + SimpleMatrix dx = null; + try { + dx = df.plus(identitytimesConst).solve(f).negative(); + } catch (Exception e) { + dx = df.plus(identitytimesConst.scale(0.5)).solve(f).negative(); + } + + // dx.print(10, 10); + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + double alphaNew = alpha[i] + dx.get(i, 0); + Wi[j][i] = Math.pow(alphaNew / 2.0, 2.0); + if (system.getPhase(0).getComponent(i).getz() > 1e-100) { + logWi[i] = Math.log(Wi[j][i]); } + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + logWi[i] = -1000.0; + } + err += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); + } - system.getPhase(k).normalize(); + // logger.info("err newton " + err); } - } + // logger.info("err: " + err); + sumw[j] = 0; - /** - *

- * calcE. - *

- */ - public void calcE() { - // E = new double[system.getPhase(0).getNumberOfComponents()]; for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - Erow[i] = 0.0; - for (int k = 0; k < system.getNumberOfPhases(); k++) { - Erow[i] += system.getPhase(k).getBeta() - / system.getPhase(k).getComponent(i).getFugacityCoefficient(); - } + sumw[j] += Math.exp(logWi[i]); } - } - - /** - *

- * calcQ. - *

- * - * @return a double - */ - public double calcQ() { - /* - * double betaTotal = 0; for (int k = 0; k < system.getNumberOfPhases(); k++) { betaTotal += - * system.getPhase(k).getBeta(); } Q = betaTotal; - */ - this.calcE(); - /* - * for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { Q -= - * Math.log(E[i]) * system.getPhase(0).getComponent(i).getz(); } - */ for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - multTerm[i] = system.getPhase(0).getComponent(i).getz() / Erow[i]; - multTerm2[i] = system.getPhase(0).getComponent(i).getz() / (Erow[i] * Erow[i]); + if (system.getPhase(0).getComponent(i).getx() > 1e-100) { + clonedSystem.get(0).getPhase(1).getComponents()[i].setx(Math.exp(logWi[i]) / sumw[j]); + } + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + clonedSystem.get(0).getPhase(1).getComponents()[i].setx(1e-50); + } } + } while ((Math.abs(err) > 1e-9 || err > errOld) && iter < maxiter); + // logger.info("err: " + err + " ITER " + iter); + double xTrivialCheck0 = 0.0; + double xTrivialCheck1 = 0.0; - for (int k = 0; k < system.getNumberOfPhases(); k++) { - dQdbeta[k][0] = 1.0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - dQdbeta[k][0] -= - multTerm[i] / system.getPhase(k).getComponent(i).getFugacityCoefficient(); - } + tm[j] = 1.0; + + for (int i = 0; i < system.getPhase(1).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getx() > 1e-100) { + tm[j] -= Math.exp(logWi[i]); } + x[j][i] = clonedSystem.get(0).getPhase(1).getComponents()[i].getx(); + // logger.info("txji: " + x[j][i]); + + xTrivialCheck0 += Math.abs(x[j][i] - system.getPhase(0).getComponent(i).getx()); + xTrivialCheck1 += Math.abs(x[j][i] - system.getPhase(1).getComponent(i).getx()); + } + if (iter >= maxiter) { + // logger.info("iter > maxiter multiphase stability "); + // logger.info("error " + Math.abs(err)); + // logger.info("tm: " + tm[j]); + } + + if (Math.abs(xTrivialCheck0) < 1e-4 || Math.abs(xTrivialCheck1) < 1e-4) { + tm[j] = 10.0; + } + + if (tm[j] < -1e-8) { + break; + } + } - for (int i = 0; i < system.getNumberOfPhases(); i++) { - for (int j = 0; j < system.getNumberOfPhases(); j++) { - Qmatrix[i][j] = 0.0; - for (int k = 0; k < system.getPhase(0).getNumberOfComponents(); k++) { - Qmatrix[i][j] += multTerm2[k] - / (system.getPhase(j).getComponent(k).getFugacityCoefficient() - * system.getPhase(i).getComponent(k).getFugacityCoefficient()); - } - if (i == j) { - Qmatrix[i][j] += 1.0e-3; - } - } + int unstabcomp = 0; + for (int k = system.getPhase(0).getNumberOfComponents() - 1; k >= 0; k--) { + if (tm[k] < -1e-8 && !(Double.isNaN(tm[k]))) { + system.addPhase(); + unstabcomp = k; + for (int i = 0; i < system.getPhase(1).getNumberOfComponents(); i++) { + system.getPhase(system.getNumberOfPhases() - 1).getComponents()[i].setx(x[k][i]); } - return Q; + system.getPhases()[system.getNumberOfPhases() - 1].normalize(); + multiPhaseTest = true; + system.setBeta(system.getNumberOfPhases() - 1, + system.getPhase(0).getComponent(unstabcomp).getz()); + system.init(1); + system.normalizeBeta(); + + // logger.info("STABILITY ANALYSIS: "); + // logger.info("tm1: " + k + " "+ tm[k]); + // system.display(); + return; + } } - /** - *

- * solveBeta. - *

+ system.normalizeBeta(); + // logger.info("STABILITY ANALYSIS: "); + // logger.info("tm1: " + tm[0] + " tm2: " + tm[1]); + // system.display(); + } + + /** + *

+ * stabilityAnalysis3. + *

+ */ + public void stabilityAnalysis3() { + double[] logWi = new double[system.getPhase(0).getNumberOfComponents()]; + double[][] Wi = new double[system.getPhase(0).getNumberOfComponents()][system.getPhase(0) + .getNumberOfComponents()]; + + double[] deltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldoldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] sumw = new double[system.getPhase(0).getNumberOfComponents()]; + double err = 0; + double[] oldlogw = new double[system.getPhase(0).getNumberOfComponents()]; + double[] oldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldoldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] d = new double[system.getPhase(0).getNumberOfComponents()]; + double[][] x = new double[system.getPhase(0).getNumberOfComponents()][system.getPhase(0) + .getNumberOfComponents()]; + tm = new double[system.getPhase(0).getNumberOfComponents()]; + + double[] alpha = null; + // SystemInterface minimumGibbsEnergySystem; + ArrayList clonedSystem = new ArrayList(1); + // if (minimumGibbsEnergySystem == null) { + // minimumGibbsEnergySystem = system.clone(); + // } + minimumGibbsEnergySystem = system; + clonedSystem.add(system.clone()); + /* + * for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { if + * (system.getPhase(0).getComponent(i).getx() < 1e-100) { clonedSystem.add(null); continue; } + * double numb = 0; clonedSystem.add(system.clone()); * - * @return a double + * // (clonedSystem.get(i)).init(0); commented out sept 2005, Even S. for (int j = 0; j < + * system.getPhase(0).getNumberOfComponents(); j++) { numb = i == j ? 1.0 : 1.0e-12; // set to 0 + * by Even Solbraa 23.01.2013 - chaged back to 1.0e-12 27.04.13 if + * (system.getPhase(0).getComponent(j).getz() < 1e-100) { numb = 0; } ( + * clonedSystem.get(i)).getPhase(1).getComponents()[j].setx(numb); } if + * (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { ( clonedSystem.get(i)).init(1); + * } } */ - public double solveBeta() { - SimpleMatrix betaMatrix = new SimpleMatrix(1, system.getNumberOfPhases()); - SimpleMatrix ans = null; - double err = 1.0; - int iter = 1; - do { - iter++; - for (int k = 0; k < system.getNumberOfPhases(); k++) { - betaMatrix.set(0, k, system.getPhase(k).getBeta()); - } - calcQ(); - SimpleMatrix dQM = new SimpleMatrix(dQdbeta); - SimpleMatrix dQdBM = new SimpleMatrix(Qmatrix); - try { - ans = dQdBM.solve(dQM).transpose(); - } catch (Exception e) { - } - betaMatrix = betaMatrix.minus(ans.scale(iter / (iter + 3.0))); - removePhase = false; - for (int k = 0; k < system.getNumberOfPhases(); k++) { - system.setBeta(k, betaMatrix.get(0, k)); - if (betaMatrix.get(0, k) < phaseFractionMinimumLimit) { - system.setBeta(k, phaseFractionMinimumLimit); - if (checkOneRemove) { - checkOneRemove = false; - removePhase = true; - } - checkOneRemove = true; - } else if (betaMatrix.get(0, k) > (1.0 - phaseFractionMinimumLimit)) { - system.setBeta(k, 1.0 - phaseFractionMinimumLimit); - } - } - system.normalizeBeta(); - system.init(1); - calcE(); - setXY(); - system.init(1); - err = ans.normF(); - } while ((err > 1e-12 && iter < 50) || iter < 3); - // logger.info("iterations " + iter); - return err; + lowestGibbsEnergyPhase = 0; + /* + * // logger.info("low gibbs phase " + lowestGibbsEnergyPhase); for (int k = 0; k < + * minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { for (int i = 0; i < + * minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { if (!(( + * clonedSystem.get(k)) == null)) { sumw[k] += ( + * clonedSystem.get(k)).getPhase(1).getComponents()[i].getx(); } } } + * + * for (int k = 0; k < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { for + * (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { if (!(( + * clonedSystem.get(k)) == null) && system.getPhase(0).getComponent(k).getx() > 1e-100) { ( + * clonedSystem.get(k)).getPhase(1).getComponents()[i].setx(( + * clonedSystem.get(k)).getPhase(1).getComponents()[i].getx() / sumw[0]); } logger.info("x: " + + * ( clonedSystem.get(k)).getPhase(0).getComponents()[i].getx()); } if + * (system.getPhase(0).getComponent(k).getx() > 1e-100) { d[k] = + * Math.log(system.getPhase(0).getComponents()[k].getx()) + + * system.getPhase(0).getComponents()[k].getLogFugacityCoefficient(); + * if(minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents + * ()[k].getIonicCharge()!=0) d[k]=0; } //logger.info("dk: " + d[k]); } + */ + for (int k = 0; k < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { + if (system.getPhase(0).getComponent(k).getx() > 1e-100) { + d[k] = Math.log(system.getPhase(0).getComponents()[k].getx()) + + system.getPhase(0).getComponents()[k].getLogFugacityCoefficient(); + // if(minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents()[k].getIonicCharge()!=0) + // d[k]=0; + } } - /** {@inheritDoc} */ - @Override - public void stabilityAnalysis() { - double[] logWi = new double[system.getPhase(0).getNumberOfComponents()]; - double[][] Wi = new double[system.getPhase(0).getNumberOfComponents()][system.getPhase(0) - .getNumberOfComponents()]; - - double[] deltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] oldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] oldoldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] sumw = new double[system.getPhase(0).getNumberOfComponents()]; - double err = 0; - double[] oldlogw = new double[system.getPhase(0).getNumberOfComponents()]; - double[] oldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] oldoldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] d = new double[system.getPhase(0).getNumberOfComponents()]; - double[][] x = new double[system.getPhase(0).getNumberOfComponents()][system.getPhase(0) - .getNumberOfComponents()]; - tm = new double[system.getPhase(0).getNumberOfComponents()]; - - double[] alpha = null; - // SystemInterface minimumGibbsEnergySystem; - ArrayList clonedSystem = new ArrayList(1); - // if (minimumGibbsEnergySystem == null) { - // minimumGibbsEnergySystem = system.clone(); - // } - minimumGibbsEnergySystem = system; - clonedSystem.add(system.clone()); - /* - * for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { if - * (system.getPhase(0).getComponent(i).getx() < 1e-100) { clonedSystem.add(null); continue; - * } double numb = 0; clonedSystem.add(system.clone()); - * - * // (clonedSystem.get(i)).init(0); commented out sept 2005, Even S. for (int j = 0; j < - * system.getPhase(0).getNumberOfComponents(); j++) { numb = i == j ? 1.0 : 1.0e-12; // set - * to 0 by Even Solbraa 23.01.2013 - chaged back to 1.0e-12 27.04.13 if - * (system.getPhase(0).getComponent(j).getz() < 1e-100) { numb = 0; } ( - * clonedSystem.get(i)).getPhase(1).getComponents()[j].setx(numb); } if - * (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { ( - * clonedSystem.get(i)).init(1); } } - */ - - lowestGibbsEnergyPhase = 0; - /* - * // logger.info("low gibbs phase " + lowestGibbsEnergyPhase); for (int k = 0; k < - * minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { for (int i = 0; i < - * minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { if (!(( - * clonedSystem.get(k)) == null)) { sumw[k] += ( - * clonedSystem.get(k)).getPhase(1).getComponents()[i].getx(); } } } - * - * for (int k = 0; k < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { - * for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { - * if (!(( clonedSystem.get(k)) == null) && system.getPhase(0).getComponent(k).getx() > - * 1e-100) { ( clonedSystem.get(k)).getPhase(1).getComponents()[i].setx(( - * clonedSystem.get(k)).getPhase(1).getComponents()[i].getx() / sumw[0]); } - * logger.info("x: " + ( clonedSystem.get(k)).getPhase(0).getComponents()[i].getx()); } if - * (system.getPhase(0).getComponent(k).getx() > 1e-100) { d[k] = - * Math.log(system.getPhase(0).getComponents()[k].getx()) + - * system.getPhase(0).getComponents()[k].getLogFugacityCoefficient(); - * if(minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents - * ()[k].getIonicCharge()!=0) d[k]=0; } //logger.info("dk: " + d[k]); } - */ - for (int k = 0; k < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { - if (system.getPhase(0).getComponent(k).getx() > 1e-100) { - d[k] = Math.log(system.getPhase(0).getComponents()[k].getx()) - + system.getPhase(0).getComponents()[k].getLogFugacityCoefficient(); - // if(minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents()[k].getIonicCharge()!=0) - // d[k]=0; - } + for (int j = 0; j < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); j++) { + if (system.getPhase(0).getComponent(j).getz() > 1e-100) { + logWi[j] = 1.0; + } else { + logWi[j] = -10000.0; + } + } + + int hydrocarbonTestCompNumb = 0; + int lightTestCompNumb = 0; + double Mmax = 0; + double Mmin = 1e10; + for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { + if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon()) { + if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) > Mmax) { + Mmax = minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass(); + } + if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) < Mmin) { + Mmin = minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass(); } + } + } - for (int j = 0; j < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); j++) { - if (system.getPhase(0).getComponent(j).getz() > 1e-100) { - logWi[j] = 1.0; - } else { - logWi[j] = -10000.0; - } + for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { + if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon() + && minimumGibbsEnergySystem.getPhase(0).getComponent(i).getz() > 1e-50) { + if (Math.abs( + (minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) - Mmax) < 1e-5) { + hydrocarbonTestCompNumb = i; + // logger.info("CHECKING heavy component " + hydrocarbonTestCompNumb); + } + } + + if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon() + && minimumGibbsEnergySystem.getPhase(0).getComponent(i).getz() > 1e-50) { + if (Math.abs( + (minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) - Mmin) < 1e-5) { + lightTestCompNumb = i; + // logger.info("CHECKING light component " + lightTestCompNumb); } + } + } - int hydrocarbonTestCompNumb = 0, lightTestCompNumb = 0; - double Mmax = 0, Mmin = 1e10; - for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { - if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon()) { - if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) > Mmax) { - Mmax = minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass(); - } - if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) < Mmin) { - Mmin = minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass(); - } - } + for (int j = 0; j < system.getNumberOfComponents(); j++) { + if (minimumGibbsEnergySystem.getPhase(0).getComponent(j).getx() < 1e-100 + || (minimumGibbsEnergySystem.getPhase(0).getComponent(j).getIonicCharge() != 0) + || (minimumGibbsEnergySystem.getPhase(0).getComponent(j).isHydrocarbon() + && j != hydrocarbonTestCompNumb && j != lightTestCompNumb)) { + continue; + } + + double nomb = 0.0; + for (int cc = 0; cc < system.getPhase(0).getNumberOfComponents(); cc++) { + nomb = cc == j ? 1.0 : 1.0e-12; + if (system.getPhase(0).getComponent(cc).getz() < 1e-100) { + nomb = 0.0; } - for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { - if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon() - && minimumGibbsEnergySystem.getPhase(0).getComponent(i).getz() > 1e-50) { - if (Math.abs((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) - - Mmax) < 1e-5) { - hydrocarbonTestCompNumb = i; - // logger.info("CHECKING heavy component " + hydrocarbonTestCompNumb); - } + if (clonedSystem.get(0).isPhase(1)) { + try { + clonedSystem.get(0).getPhase(1).getComponents()[cc].setx(nomb); + } catch (Exception ex) { + logger.warn(ex.getMessage()); + } + } + } + // if(minimumGibbsEnergySystem.getPhase(0).getComponent(j).getName().equals("water") + // && minimumGibbsEnergySystem.isChemicalSystem()) continue; + // logger.info("STAB CHECK COMP " + + // system.getPhase(0).getComponent(j).getComponentName()); + // if(minimumGibbsEnergySystem.getPhase(0).getComponent(j).isInert()) break; + int iter = 0; + double errOld = 1.0e100; + boolean useaccsubst = true; + int maxsucssubiter = 150; + int maxiter = 200; + do { + errOld = err; + iter++; + err = 0; + + if (iter <= maxsucssubiter || !system.isImplementedCompositionDeriativesofFugacity()) { + if (iter % 7 == 0 && useaccsubst) { + double vec1 = 0.0; + + double vec2 = 0.0; + double prod1 = 0.0; + double prod2 = 0.0; + for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + vec1 = oldDeltalogWi[i] * oldoldDeltalogWi[i]; + vec2 = Math.pow(oldoldDeltalogWi[i], 2.0); + prod1 += vec1 * vec2; + prod2 += vec2 * vec2; } - if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon() - && minimumGibbsEnergySystem.getPhase(0).getComponent(i).getz() > 1e-50) { - if (Math.abs((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) - - Mmin) < 1e-5) { - lightTestCompNumb = i; - // logger.info("CHECKING light component " + lightTestCompNumb); - } + double lambda = prod1 / prod2; + // logger.info("lambda " + lambda); + for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + logWi[i] += lambda / (1.0 - lambda) * deltalogWi[i]; + err += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); + Wi[j][i] = Math.exp(logWi[i]); } - } - - for (int j = system.getPhase(0).getNumberOfComponents() - 1; j >= 0; j--) { - if (minimumGibbsEnergySystem.getPhase(0).getComponent(j).getx() < 1e-100 - || (minimumGibbsEnergySystem.getPhase(0).getComponent(j).getIonicCharge() != 0) - || (minimumGibbsEnergySystem.getPhase(0).getComponent(j).isHydrocarbon() - && j != hydrocarbonTestCompNumb && j != lightTestCompNumb)) { - continue; + } else { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + oldoldoldlogw[i] = oldoldlogw[i]; + oldoldlogw[i] = oldlogw[i]; + oldlogw[i] = logWi[i]; + oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; + oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; } - - double nomb = 0.0; - for (int cc = 0; cc < system.getPhase(0).getNumberOfComponents(); cc++) { - nomb = cc == j ? 1.0 : 1.0e-12; // set to 0 by Even Solbraa 23.01.2013 - chaged back - // to 1.0e-12 27.04.13 - if (system.getPhase(0).getComponent(cc).getz() < 1e-100) { - nomb = 0.0; - } - - if (clonedSystem.get(0).IsPhase(1)) { - try { - clonedSystem.get(0).getPhase(1).getComponents()[cc].setx(nomb); - } catch (Exception e) { - System.out.println(e.getMessage()); - } + clonedSystem.get(0).init(1, 1); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + // oldlogw[i] = logWi[i]; + if (!Double.isInfinite( + clonedSystem.get(0).getPhase(1).getComponents()[i].getLogFugacityCoefficient()) + && system.getPhase(0).getComponent(i).getx() > 1e-100) { + logWi[i] = d[i] - clonedSystem.get(0).getPhase(1).getComponents()[i] + .getLogFugacityCoefficient(); + if (clonedSystem.get(0).getPhase(1).getComponents()[i].getIonicCharge() != 0) { + logWi[i] = -1000.0; } + } + deltalogWi[i] = logWi[i] - oldlogw[i]; + err += Math.abs(logWi[i] - oldlogw[i]); + Wi[j][i] = Math.exp(logWi[i]); + useaccsubst = true; } - // if(minimumGibbsEnergySystem.getPhase(0).getComponent(j).getName().equals("water") - // && minimumGibbsEnergySystem.isChemicalSystem()) continue; - // logger.info("STAB CHECK COMP " + - // system.getPhase(0).getComponent(j).getComponentName()); - // if(minimumGibbsEnergySystem.getPhase(0).getComponent(j).isInert()) break; - int iter = 0; - double errOld = 1.0e100; - do { - errOld = err; - iter++; - err = 0; - - if (iter <= 150 || !system.isImplementedCompositionDeriativesofFugacity()) { - if (iter % 7 == 0) { - double vec1 = 0.0, vec2 = 0.0, prod1 = 0.0, prod2 = 0.0; - - for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - vec1 = oldDeltalogWi[i] * oldoldDeltalogWi[i]; - vec2 = Math.pow(oldoldDeltalogWi[i], 2.0); - prod1 += vec1 * vec2; - prod2 += vec2 * vec2; - } - - double lambda = prod1 / prod2; - // logger.info("lambda " + lambda); - for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - logWi[i] += lambda / (1.0 - lambda) * deltalogWi[i]; - err += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); - Wi[j][i] = Math.exp(logWi[i]); - } - } else { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - oldoldoldlogw[i] = oldoldlogw[i]; - oldoldlogw[i] = oldlogw[i]; - oldlogw[i] = logWi[i]; - oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; - oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; - } - clonedSystem.get(0).init(1, 1); - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - // oldlogw[i] = logWi[i]; - if (!Double - .isInfinite(clonedSystem.get(0).getPhase(1).getComponents()[i] - .getLogFugacityCoefficient()) - && system.getPhase(0).getComponent(i).getx() > 1e-100) { - logWi[i] = d[i] - clonedSystem.get(0).getPhase(1).getComponents()[i] - .getLogFugacityCoefficient(); - if (clonedSystem.get(0).getPhase(1).getComponents()[i] - .getIonicCharge() != 0) { - logWi[i] = -1000.0; - } - } - deltalogWi[i] = logWi[i] - oldlogw[i]; - err += Math.abs(logWi[i] - oldlogw[i]); - Wi[j][i] = Math.exp(logWi[i]); - } - } - } else { - SimpleMatrix f = - new SimpleMatrix(system.getPhases()[0].getNumberOfComponents(), 1); - SimpleMatrix df = null; - SimpleMatrix identitytimesConst = null; - // if (!secondOrderStabilityAnalysis) { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - oldoldoldlogw[i] = oldoldlogw[i]; - oldoldlogw[i] = oldlogw[i]; - oldlogw[i] = logWi[i]; - oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; - oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; - } - clonedSystem.get(0).init(3, 1); - alpha = new double[clonedSystem.get(0).getPhases()[0].getNumberOfComponents()]; - df = new SimpleMatrix(system.getPhases()[0].getNumberOfComponents(), - system.getPhases()[0].getNumberOfComponents()); - identitytimesConst = - SimpleMatrix.identity(system.getPhases()[0].getNumberOfComponents());// , - // system.getPhases()[0].getNumberOfComponents()); - // secondOrderStabilityAnalysis = true; - // } - - for (int i = 0; i < clonedSystem.get(0).getPhases()[0] - .getNumberOfComponents(); i++) { - alpha[i] = 2.0 * Math.sqrt(Wi[j][i]); - } - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getz() > 1e-100) { - f.set(i, 0, - Math.sqrt(Wi[j][i]) * (Math.log(Wi[j][i]) - + clonedSystem.get(0).getPhases()[1].getComponents()[i] - .getLogFugacityCoefficient() - - d[i])); - } - for (int k = 0; k < clonedSystem.get(0).getPhases()[0] - .getNumberOfComponents(); k++) { - double kronDelt = (i == k) ? 1.0 : 0.0; - if (system.getPhase(0).getComponent(i).getz() > 1e-100) { - df.set(i, k, kronDelt + Math.sqrt(Wi[j][k] * Wi[j][i]) - * clonedSystem.get(0).getPhases()[1].getComponents()[i] - .getdfugdn(k));// * - // clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); - } else { - df.set(i, k, 0);// * - // clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); - } - } - } - - // f.print(10, 10); - // df.print(10, 10); - SimpleMatrix dx = df.plus(identitytimesConst).solve(f).negative(); - // dx.print(10, 10); - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - double alphaNew = alpha[i] + dx.get(i, 0); - Wi[j][i] = Math.pow(alphaNew / 2.0, 2.0); - if (system.getPhase(0).getComponent(i).getz() > 1e-100) { - logWi[i] = Math.log(Wi[j][i]); - } - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - logWi[i] = -1000.0; - } - err += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); - } - - // logger.info("err newton " + err); - } - // logger.info("err: " + err); - sumw[j] = 0; - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - sumw[j] += Math.exp(logWi[i]); - } - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getx() > 1e-100) { - clonedSystem.get(0).getPhase(1).getComponents()[i] - .setx(Math.exp(logWi[i]) / sumw[j]); - } - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - clonedSystem.get(0).getPhase(1).getComponents()[i].setx(1e-50); - } - } - } while ((Math.abs(err) > 1e-9 || err > errOld) && iter < 600); - // logger.info("err: " + err + " ITER " + iter); - double xTrivialCheck0 = 0.0; - double xTrivialCheck1 = 0.0; - - tm[j] = 1.0; - - for (int i = 0; i < system.getPhase(1).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getx() > 1e-100) { - tm[j] -= Math.exp(logWi[i]); - } - x[j][i] = clonedSystem.get(0).getPhase(1).getComponents()[i].getx(); - // logger.info("txji: " + x[j][i]); - - xTrivialCheck0 += Math.abs(x[j][i] - system.getPhase(0).getComponent(i).getx()); - xTrivialCheck1 += Math.abs(x[j][i] - system.getPhase(1).getComponent(i).getx()); + if (iter > 2 && err > errOld) { + useaccsubst = false; } - if (iter >= 599) { - // logger.info("iter > maxiter multiphase stability "); - // logger.info("error " + Math.abs(err)); - // logger.info("tm: " + tm[j]); + } + } else { + SimpleMatrix f = new SimpleMatrix(system.getPhases()[0].getNumberOfComponents(), 1); + SimpleMatrix df = null; + SimpleMatrix identitytimesConst = null; + // if (!secondOrderStabilityAnalysis) { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + oldoldoldlogw[i] = oldoldlogw[i]; + oldoldlogw[i] = oldlogw[i]; + oldlogw[i] = logWi[i]; + oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; + oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; + } + clonedSystem.get(0).init(3, 1); + alpha = new double[clonedSystem.get(0).getPhases()[0].getNumberOfComponents()]; + df = new SimpleMatrix(system.getPhases()[0].getNumberOfComponents(), + system.getPhases()[0].getNumberOfComponents()); + identitytimesConst = SimpleMatrix.identity(system.getPhases()[0].getNumberOfComponents()); + // , + // system.getPhases()[0].getNumberOfComponents()); + // secondOrderStabilityAnalysis = true; + // } + + for (int i = 0; i < clonedSystem.get(0).getPhases()[0].getNumberOfComponents(); i++) { + alpha[i] = 2.0 * Math.sqrt(Wi[j][i]); + } + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getz() > 1e-100) { + f.set(i, 0, + Math.sqrt(Wi[j][i]) + * (Math.log(Wi[j][i]) + clonedSystem.get(0).getPhases()[1].getComponents()[i] + .getLogFugacityCoefficient() - d[i])); } - - if (Math.abs(xTrivialCheck0) < 1e-4 || Math.abs(xTrivialCheck1) < 1e-4) { - tm[j] = 10.0; + for (int k = 0; k < clonedSystem.get(0).getPhases()[0].getNumberOfComponents(); k++) { + double kronDelt = (i == k) ? 1.0 : 0.0; + if (system.getPhase(0).getComponent(i).getz() > 1e-100) { + df.set(i, k, kronDelt + Math.sqrt(Wi[j][k] * Wi[j][i]) + * clonedSystem.get(0).getPhases()[1].getComponents()[i].getdfugdn(k)); + // * clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); + } else { + df.set(i, k, 0); + // * clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); + } } - - if (tm[j] < -1e-8) { - break; + } + + // f.print(10, 10); + // df.print(10, 10); + SimpleMatrix dx = null; + try { + dx = df.plus(identitytimesConst).solve(f).negative(); + } catch (Exception e) { + dx = df.plus(identitytimesConst.scale(0.5)).solve(f).negative(); + } + + // dx.print(10, 10); + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + double alphaNew = alpha[i] + dx.get(i, 0); + Wi[j][i] = Math.pow(alphaNew / 2.0, 2.0); + if (system.getPhase(0).getComponent(i).getz() > 1e-100) { + logWi[i] = Math.log(Wi[j][i]); + } + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + logWi[i] = -1000.0; } + err += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); + } + + // logger.info("err newton " + err); } + // logger.info("err: " + err); + sumw[j] = 0; - int unstabcomp = 0; - for (int k = system.getPhase(0).getNumberOfComponents() - 1; k >= 0; k--) { - if (tm[k] < -1e-8 && !(Double.isNaN(tm[k]))) { - system.addPhase(); - unstabcomp = k; - for (int i = 0; i < system.getPhase(1).getNumberOfComponents(); i++) { - system.getPhase(system.getNumberOfPhases() - 1).getComponents()[i] - .setx(x[k][i]); - } - system.getPhases()[system.getNumberOfPhases() - 1].normalize(); - multiPhaseTest = true; - system.setBeta(system.getNumberOfPhases() - 1, - system.getPhase(0).getComponent(unstabcomp).getz()); - system.init(1); - system.normalizeBeta(); - - // logger.info("STABILITY ANALYSIS: "); - // logger.info("tm1: " + k + " "+ tm[k]); - // system.display(); - return; - } + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + sumw[j] += Math.exp(logWi[i]); } + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getx() > 1e-100) { + clonedSystem.get(0).getPhase(1).getComponents()[i].setx(Math.exp(logWi[i]) / sumw[j]); + } + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + clonedSystem.get(0).getPhase(1).getComponents()[i].setx(1e-50); + } + } + } while ((Math.abs(err) > 1e-9 || err > errOld) && iter < maxiter); + // logger.info("err: " + err + " ITER " + iter); + double xTrivialCheck0 = 0.0; + double xTrivialCheck1 = 0.0; + + tm[j] = 1.0; + + for (int i = 0; i < system.getPhase(1).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getx() > 1e-100) { + tm[j] -= Math.exp(logWi[i]); + } + x[j][i] = clonedSystem.get(0).getPhase(1).getComponents()[i].getx(); + // logger.info("txji: " + x[j][i]); + + xTrivialCheck0 += Math.abs(x[j][i] - system.getPhase(0).getComponent(i).getx()); + xTrivialCheck1 += Math.abs(x[j][i] - system.getPhase(1).getComponent(i).getx()); + } + if (iter >= maxiter - 1) { + // logger.info("iter > maxiter multiphase stability "); + // logger.info("error " + Math.abs(err)); + // logger.info("tm: " + tm[j]); + } + + if (Math.abs(xTrivialCheck0) < 1e-4 || Math.abs(xTrivialCheck1) < 1e-4) { + tm[j] = 10.0; + } + + if (tm[j] < -1e-8) { + break; + } + } + + int unstabcomp = 0; + for (int k = system.getPhase(0).getNumberOfComponents() - 1; k >= 0; k--) { + if (tm[k] < -1e-8 && !(Double.isNaN(tm[k]))) { + system.addPhase(); + unstabcomp = k; + for (int i = 0; i < system.getPhase(1).getNumberOfComponents(); i++) { + system.getPhase(system.getNumberOfPhases() - 1).getComponents()[i].setx(x[k][i]); + } + system.getPhases()[system.getNumberOfPhases() - 1].normalize(); + multiPhaseTest = true; + system.setBeta(system.getNumberOfPhases() - 1, + system.getPhase(0).getComponent(unstabcomp).getz()); + system.init(1); system.normalizeBeta(); + // logger.info("STABILITY ANALYSIS: "); - // logger.info("tm1: " + tm[0] + " tm2: " + tm[1]); + // logger.info("tm1: " + k + " "+ tm[k]); // system.display(); + return; + } } - /** - *

- * stabilityAnalysis2. - *

- */ - public void stabilityAnalysis2() { - double[] logWi = new double[system.getPhase(0).getNumberOfComponents()]; - double[][] Wi = new double[system.getPhase(0).getNumberOfComponents()][system.getPhase(0) - .getNumberOfComponents()]; - - double[] deltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] oldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] oldoldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] sumw = new double[system.getPhase(0).getNumberOfComponents()]; - double err = 0; - double[] oldlogw = new double[system.getPhase(0).getNumberOfComponents()]; - double[] oldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] oldoldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; - double[] d = new double[system.getPhase(0).getNumberOfComponents()]; - double[][] x = new double[system.getPhase(0).getNumberOfComponents()][system.getPhase(0) - .getNumberOfComponents()]; - tm = new double[system.getPhase(0).getNumberOfComponents()]; - - double[] alpha = null; - // SystemInterface minimumGibbsEnergySystem; - ArrayList clonedSystem = new ArrayList(1); - // if (minimumGibbsEnergySystem == null) { - // minimumGibbsEnergySystem = system.clone(); - // } - minimumGibbsEnergySystem = system; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getx() < 1e-100) { - clonedSystem.add(null); - continue; - } - double numb = 0; - clonedSystem.add(system.clone()); - // (clonedSystem.get(i)).init(0); commented out sept 2005, Even - // S. - for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - numb = i == j ? 1.0 : 1.0e-12; // set to 0 by Even Solbraa 23.01.2013 - chaged back - // to 1.0e-12 27.04.13 - if (system.getPhase(0).getComponent(j).getz() < 1e-100) { - numb = 0; - } - (clonedSystem.get(i)).getPhase(1).getComponents()[j].setx(numb); - } - if (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { - (clonedSystem.get(i)).init(1); - } + system.normalizeBeta(); + // logger.info("STABILITY ANALYSIS: "); + // logger.info("tm1: " + tm[0] + " tm2: " + tm[1]); + // system.display(); + } + + /** + *

+ * stabilityAnalysis2. + *

+ */ + public void stabilityAnalysis2() { + double[] logWi = new double[system.getPhase(0).getNumberOfComponents()]; + double[][] Wi = new double[system.getPhase(0).getNumberOfComponents()][system.getPhase(0) + .getNumberOfComponents()]; + + double[] deltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldoldDeltalogWi = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] sumw = new double[system.getPhase(0).getNumberOfComponents()]; + double err = 0; + double[] oldlogw = new double[system.getPhase(0).getNumberOfComponents()]; + double[] oldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] oldoldoldlogw = new double[system.getPhases()[0].getNumberOfComponents()]; + double[] d = new double[system.getPhase(0).getNumberOfComponents()]; + double[][] x = new double[system.getPhase(0).getNumberOfComponents()][system.getPhase(0) + .getNumberOfComponents()]; + tm = new double[system.getPhase(0).getNumberOfComponents()]; + + double[] alpha = null; + // SystemInterface minimumGibbsEnergySystem; + ArrayList clonedSystem = new ArrayList(1); + // if (minimumGibbsEnergySystem == null) { + // minimumGibbsEnergySystem = system.clone(); + // } + minimumGibbsEnergySystem = system; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getx() < 1e-100) { + clonedSystem.add(null); + continue; + } + double numb = 0; + clonedSystem.add(system.clone()); + // (clonedSystem.get(i)).init(0); commented out sept 2005, Even + // S. + for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { + numb = i == j ? 1.0 : 1.0e-12; + if (system.getPhase(0).getComponent(j).getz() < 1e-100) { + numb = 0; } + (clonedSystem.get(i)).getPhase(1).getComponents()[j].setx(numb); + } + if (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { + (clonedSystem.get(i)).init(1); + } + } - lowestGibbsEnergyPhase = 0; + lowestGibbsEnergyPhase = 0; - // logger.info("low gibbs phase " + lowestGibbsEnergyPhase); - for (int k = 0; k < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { - for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { - if (!((clonedSystem.get(k)) == null)) { - sumw[k] += (clonedSystem.get(k)).getPhase(1).getComponents()[i].getx(); - } - } + // logger.info("low gibbs phase " + lowestGibbsEnergyPhase); + for (int k = 0; k < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { + for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { + if (!((clonedSystem.get(k)) == null)) { + sumw[k] += (clonedSystem.get(k)).getPhase(1).getComponents()[i].getx(); } + } + } - for (int k = 0; k < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { - for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { - if (!((clonedSystem.get(k)) == null) - && system.getPhase(0).getComponent(k).getx() > 1e-100) { - (clonedSystem.get(k)).getPhase(1).getComponents()[i].setx( - (clonedSystem.get(k)).getPhase(1).getComponents()[i].getx() / sumw[0]); - } - // logger.info("x: " + ( - // clonedSystem.get(k)).getPhase(0).getComponents()[i].getx()); - } - if (system.getPhase(0).getComponent(k).getx() > 1e-100) { - d[k] = Math.log(system.getPhase(0).getComponents()[k].getx()) - + system.getPhase(0).getComponents()[k].getLogFugacityCoefficient(); - // if(minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents()[k].getIonicCharge()!=0) - // d[k]=0; - } - // logger.info("dk: " + d[k]); + for (int k = 0; k < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); k++) { + for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { + if (!((clonedSystem.get(k)) == null) + && system.getPhase(0).getComponent(k).getx() > 1e-100) { + (clonedSystem.get(k)).getPhase(1).getComponents()[i] + .setx((clonedSystem.get(k)).getPhase(1).getComponents()[i].getx() / sumw[0]); } + // logger.info("x: " + ( + // clonedSystem.get(k)).getPhase(0).getComponents()[i].getx()); + } + if (system.getPhase(0).getComponent(k).getx() > 1e-100) { + d[k] = Math.log(system.getPhase(0).getComponents()[k].getx()) + + system.getPhase(0).getComponents()[k].getLogFugacityCoefficient(); + // if(minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents()[k].getIonicCharge()!=0) + // d[k]=0; + } + // logger.info("dk: " + d[k]); + } - for (int j = 0; j < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); j++) { - if (system.getPhase(0).getComponent(j).getz() > 1e-100) { - logWi[j] = 1.0; - } else { - logWi[j] = -10000.0; - } - } + for (int j = 0; j < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); j++) { + if (system.getPhase(0).getComponent(j).getz() > 1e-100) { + logWi[j] = 1.0; + } else { + logWi[j] = -10000.0; + } + } - int hydrocarbonTestCompNumb = 0, lightTestCompNumb = 0; - double Mmax = 0, Mmin = 1e10; - for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { - if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon()) { - if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) > Mmax) { - Mmax = minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass(); - } - if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) < Mmin) { - Mmin = minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass(); - } - } + int hydrocarbonTestCompNumb = 0; + int lightTestCompNumb = 0; + double Mmax = 0; + double Mmin = 1e10; + for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { + if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon()) { + if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) > Mmax) { + Mmax = minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass(); } - for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { - if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon() - && minimumGibbsEnergySystem.getPhase(0).getComponent(i).getz() > 1e-50) { - if (Math.abs((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) - - Mmax) < 1e-5) { - hydrocarbonTestCompNumb = i; - // logger.info("CHECKING heavy component " + hydrocarbonTestCompNumb); - } - } - - if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon() - && minimumGibbsEnergySystem.getPhase(0).getComponent(i).getz() > 1e-50) { - if (Math.abs((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) - - Mmin) < 1e-5) { - lightTestCompNumb = i; - // logger.info("CHECKING light component " + lightTestCompNumb); - } - } + if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) < Mmin) { + Mmin = minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass(); + } + } + } + for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { + if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon() + && minimumGibbsEnergySystem.getPhase(0).getComponent(i).getz() > 1e-50) { + if (Math.abs( + (minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) - Mmax) < 1e-5) { + hydrocarbonTestCompNumb = i; + // logger.info("CHECKING heavy component " + hydrocarbonTestCompNumb); + } + } + + if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon() + && minimumGibbsEnergySystem.getPhase(0).getComponent(i).getz() > 1e-50) { + if (Math.abs( + (minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) - Mmin) < 1e-5) { + lightTestCompNumb = i; + // logger.info("CHECKING light component " + lightTestCompNumb); } + } + } - for (int j = system.getPhase(0).getNumberOfComponents() - 1; j >= 0; j--) { - if (minimumGibbsEnergySystem.getPhase(0).getComponent(j).getx() < 1e-100 - || (minimumGibbsEnergySystem.getPhase(0).getComponent(j).getIonicCharge() != 0) - || (minimumGibbsEnergySystem.getPhase(0).getComponent(j).isHydrocarbon() - && j != hydrocarbonTestCompNumb && j != lightTestCompNumb)) { - continue; + for (int j = system.getPhase(0).getNumberOfComponents() - 1; j >= 0; j--) { + if (minimumGibbsEnergySystem.getPhase(0).getComponent(j).getx() < 1e-100 + || (minimumGibbsEnergySystem.getPhase(0).getComponent(j).getIonicCharge() != 0) + || (minimumGibbsEnergySystem.getPhase(0).getComponent(j).isHydrocarbon() + && j != hydrocarbonTestCompNumb && j != lightTestCompNumb)) { + continue; + } + // if(minimumGibbsEnergySystem.getPhase(0).getComponent(j).getName().equals("water") + // && minimumGibbsEnergySystem.isChemicalSystem()) continue; + // logger.info("STAB CHECK COMP " + + // system.getPhase(0).getComponent(j).getComponentName()); + // if(minimumGibbsEnergySystem.getPhase(0).getComponent(j).isInert()) break; + int iter = 0; + double errOld = 1.0e100; + do { + errOld = err; + iter++; + err = 0; + + if (iter <= 150 || !system.isImplementedCompositionDeriativesofFugacity()) { + if (iter % 7 == 0) { + double vec1 = 0.0; + + double vec2 = 0.0; + double prod1 = 0.0; + double prod2 = 0.0; + for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + vec1 = oldDeltalogWi[i] * oldoldDeltalogWi[i]; + vec2 = Math.pow(oldoldDeltalogWi[i], 2.0); + prod1 += vec1 * vec2; + prod2 += vec2 * vec2; } - // if(minimumGibbsEnergySystem.getPhase(0).getComponent(j).getName().equals("water") - // && minimumGibbsEnergySystem.isChemicalSystem()) continue; - // logger.info("STAB CHECK COMP " + - // system.getPhase(0).getComponent(j).getComponentName()); - // if(minimumGibbsEnergySystem.getPhase(0).getComponent(j).isInert()) break; - int iter = 0; - double errOld = 1.0e100; - do { - errOld = err; - iter++; - err = 0; - - if (iter <= 20 || !system.isImplementedCompositionDeriativesofFugacity()) { - if (iter % 7 == 0) { - double vec1 = 0.0, vec2 = 0.0, prod1 = 0.0, prod2 = 0.0; - - for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - vec1 = oldDeltalogWi[i] * oldoldDeltalogWi[i]; - vec2 = Math.pow(oldoldDeltalogWi[i], 2.0); - prod1 += vec1 * vec2; - prod2 += vec2 * vec2; - } - - double lambda = prod1 / prod2; - // logger.info("lambda " + lambda); - for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - logWi[i] += lambda / (1.0 - lambda) * deltalogWi[i]; - err += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); - Wi[j][i] = Math.exp(logWi[i]); - } - } else { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - oldoldoldlogw[i] = oldoldlogw[i]; - oldoldlogw[i] = oldlogw[i]; - oldlogw[i] = logWi[i]; - oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; - oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; - } - (clonedSystem.get(j)).init(1, 1); - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - // oldlogw[i] = logWi[i]; - if (!Double - .isInfinite((clonedSystem.get(j)).getPhase(1).getComponents()[i] - .getLogFugacityCoefficient()) - && system.getPhase(0).getComponent(i).getx() > 1e-100) { - logWi[i] = - d[i] - (clonedSystem.get(j)).getPhase(1).getComponents()[i] - .getLogFugacityCoefficient(); - if ((clonedSystem.get(j)).getPhase(1).getComponents()[i] - .getIonicCharge() != 0) { - logWi[i] = -1000.0; - } - } - deltalogWi[i] = logWi[i] - oldlogw[i]; - err += Math.abs(logWi[i] - oldlogw[i]); - Wi[j][i] = Math.exp(logWi[i]); - } - } - } else { - SimpleMatrix f = - new SimpleMatrix(system.getPhases()[0].getNumberOfComponents(), 1); - SimpleMatrix df = null; - SimpleMatrix identitytimesConst = null; - // if (!secondOrderStabilityAnalysis) { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - oldoldoldlogw[i] = oldoldlogw[i]; - oldoldlogw[i] = oldlogw[i]; - oldlogw[i] = logWi[i]; - oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; - oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; - } - (clonedSystem.get(j)).init(3, 1); - alpha = new double[(clonedSystem.get(j)).getPhases()[0] - .getNumberOfComponents()]; - df = new SimpleMatrix(system.getPhases()[0].getNumberOfComponents(), - system.getPhases()[0].getNumberOfComponents()); - identitytimesConst = - SimpleMatrix.identity(system.getPhases()[0].getNumberOfComponents());// , - // system.getPhases()[0].getNumberOfComponents()); - // secondOrderStabilityAnalysis = true; - // } - - for (int i = 0; i < (clonedSystem.get(j)).getPhases()[0] - .getNumberOfComponents(); i++) { - alpha[i] = 2.0 * Math.sqrt(Wi[j][i]); - } - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getz() > 1e-100) { - f.set(i, 0, Math.sqrt(Wi[j][i]) * (Math.log(Wi[j][i]) - + (clonedSystem.get(j)).getPhases()[1].getComponents()[i] - .getLogFugacityCoefficient() - - d[i])); - } - for (int k = 0; k < (clonedSystem.get(j)).getPhases()[0] - .getNumberOfComponents(); k++) { - double kronDelt = (i == k) ? 1.0 : 0.0; - if (system.getPhase(0).getComponent(i).getz() > 1e-100) { - df.set(i, k, kronDelt + Math.sqrt(Wi[j][k] * Wi[j][i]) - * (clonedSystem.get(j)).getPhases()[1].getComponents()[i] - .getdfugdn(k));// * - // clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); - } else { - df.set(i, k, 0);// * - // clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); - } - } - } - // f.print(10, 10); - // df.print(10, 10); - SimpleMatrix dx = df.plus(identitytimesConst).solve(f).negative(); - // dx.print(10, 10); - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - double alphaNew = alpha[i] + dx.get(i, 0); - Wi[j][i] = Math.pow(alphaNew / 2.0, 2.0); - if (system.getPhase(0).getComponent(i).getz() > 1e-100) { - logWi[i] = Math.log(Wi[j][i]); - } - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - logWi[i] = -1000.0; - } - err += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); - } - - // logger.info("err newton " + err); - } - // logger.info("err: " + err); - sumw[j] = 0; - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - sumw[j] += Math.exp(logWi[i]); - } - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getx() > 1e-100) { - (clonedSystem.get(j)).getPhase(1).getComponents()[i] - .setx(Math.exp(logWi[i]) / sumw[j]); - } - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - (clonedSystem.get(j)).getPhase(1).getComponents()[i].setx(1e-50); - } - } - } while ((Math.abs(err) > 1e-9 || err > errOld) && iter < 200); - // logger.info("err: " + err + " ITER " + iter); - double xTrivialCheck0 = 0.0; - double xTrivialCheck1 = 0.0; - - tm[j] = 1.0; - for (int i = 0; i < system.getPhase(1).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getx() > 1e-100) { - tm[j] -= Math.exp(logWi[i]); + double lambda = prod1 / prod2; + // logger.info("lambda " + lambda); + for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + logWi[i] += lambda / (1.0 - lambda) * deltalogWi[i]; + err += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); + Wi[j][i] = Math.exp(logWi[i]); + } + } else { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + oldoldoldlogw[i] = oldoldlogw[i]; + oldoldlogw[i] = oldlogw[i]; + oldlogw[i] = logWi[i]; + oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; + oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; + } + (clonedSystem.get(j)).init(1, 1); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + // oldlogw[i] = logWi[i]; + if (!Double.isInfinite( + (clonedSystem.get(j)).getPhase(1).getComponents()[i].getLogFugacityCoefficient()) + && system.getPhase(0).getComponent(i).getx() > 1e-100) { + logWi[i] = d[i] - (clonedSystem.get(j)).getPhase(1).getComponents()[i] + .getLogFugacityCoefficient(); + if ((clonedSystem.get(j)).getPhase(1).getComponents()[i].getIonicCharge() != 0) { + logWi[i] = -1000.0; } - x[j][i] = (clonedSystem.get(j)).getPhase(1).getComponents()[i].getx(); - // logger.info("txji: " + x[j][i]); - - xTrivialCheck0 += Math.abs(x[j][i] - system.getPhase(0).getComponent(i).getx()); - xTrivialCheck1 += Math.abs(x[j][i] - system.getPhase(1).getComponent(i).getx()); + } + deltalogWi[i] = logWi[i] - oldlogw[i]; + err += Math.abs(logWi[i] - oldlogw[i]); + Wi[j][i] = Math.exp(logWi[i]); } - if (iter >= 199) { - logger.info("iter > maxiter multiphase stability "); - logger.info("error " + Math.abs(err)); - logger.info("tm: " + tm[j]); + } + } else { + SimpleMatrix f = new SimpleMatrix(system.getPhases()[0].getNumberOfComponents(), 1); + SimpleMatrix df = null; + SimpleMatrix identitytimesConst = null; + // if (!secondOrderStabilityAnalysis) { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + oldoldoldlogw[i] = oldoldlogw[i]; + oldoldlogw[i] = oldlogw[i]; + oldlogw[i] = logWi[i]; + oldoldDeltalogWi[i] = oldoldlogw[i] - oldoldoldlogw[i]; + oldDeltalogWi[i] = oldlogw[i] - oldoldlogw[i]; + } + (clonedSystem.get(j)).init(3, 1); + alpha = new double[(clonedSystem.get(j)).getPhases()[0].getNumberOfComponents()]; + df = new SimpleMatrix(system.getPhases()[0].getNumberOfComponents(), + system.getPhases()[0].getNumberOfComponents()); + identitytimesConst = SimpleMatrix.identity(system.getPhases()[0].getNumberOfComponents()); + // , system.getPhases()[0].getNumberOfComponents()); + // secondOrderStabilityAnalysis = true; + // } + + for (int i = 0; i < (clonedSystem.get(j)).getPhases()[0].getNumberOfComponents(); i++) { + alpha[i] = 2.0 * Math.sqrt(Wi[j][i]); + } + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getz() > 1e-100) { + f.set(i, 0, Math.sqrt(Wi[j][i]) + * (Math.log(Wi[j][i]) + (clonedSystem.get(j)).getPhases()[1].getComponents()[i] + .getLogFugacityCoefficient() - d[i])); } - - if (Math.abs(xTrivialCheck0) < 1e-6 || Math.abs(xTrivialCheck1) < 1e-6) { - tm[j] = 10.0; + for (int k = 0; k < (clonedSystem.get(j)).getPhases()[0].getNumberOfComponents(); k++) { + double kronDelt = (i == k) ? 1.0 : 0.0; + if (system.getPhase(0).getComponent(i).getz() > 1e-100) { + df.set(i, k, kronDelt + Math.sqrt(Wi[j][k] * Wi[j][i]) + * (clonedSystem.get(j)).getPhases()[1].getComponents()[i].getdfugdn(k)); + // * + // clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); + } else { + df.set(i, k, 0); + // * + // clonedSystem.getPhases()[j].getNumberOfMolesInPhase()); + } } - - if (tm[j] < -1e-8) { - break; + } + // f.print(10, 10); + // df.print(10, 10); + SimpleMatrix dx = df.plus(identitytimesConst).solve(f).negative(); + // dx.print(10, 10); + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + double alphaNew = alpha[i] + dx.get(i, 0); + Wi[j][i] = Math.pow(alphaNew / 2.0, 2.0); + if (system.getPhase(0).getComponent(i).getz() > 1e-100) { + logWi[i] = Math.log(Wi[j][i]); + } + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + logWi[i] = -1000.0; } + err += Math.abs((logWi[i] - oldlogw[i]) / oldlogw[i]); + } + + // logger.info("err newton " + err); } + // logger.info("err: " + err); + sumw[j] = 0; - int unstabcomp = 0; - for (int k = system.getPhase(0).getNumberOfComponents() - 1; k >= 0; k--) { - if (tm[k] < -1e-8 && !(Double.isNaN(tm[k]))) { - system.addPhase(); - unstabcomp = k; - for (int i = 0; i < system.getPhase(1).getNumberOfComponents(); i++) { - system.getPhase(system.getNumberOfPhases() - 1).getComponents()[i] - .setx(x[k][i]); - } - system.getPhases()[system.getNumberOfPhases() - 1].normalize(); - multiPhaseTest = true; - system.setBeta(system.getNumberOfPhases() - 1, - system.getPhase(0).getComponent(unstabcomp).getz()); - system.init(1); - system.normalizeBeta(); - - // logger.info("STABILITY ANALYSIS: "); - // logger.info("tm1: " + k + " "+ tm[k]); - // system.display(); - return; - } + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + sumw[j] += Math.exp(logWi[i]); + } + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getx() > 1e-100) { + (clonedSystem.get(j)).getPhase(1).getComponents()[i].setx(Math.exp(logWi[i]) / sumw[j]); + } + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + (clonedSystem.get(j)).getPhase(1).getComponents()[i].setx(1e-50); + } + } + } while ((Math.abs(err) > 1e-9 || err > errOld) && iter < 200); + if (iter > 198) { + // System.out.println("too many iterations....." + err + " temperature " + // + system.getTemperature("C") + " C " + system.getPressure("bara") + " bara"); + new Exception("to many iterations "); + } + // logger.info("err: " + err + " ITER " + iter); + double xTrivialCheck0 = 0.0; + double xTrivialCheck1 = 0.0; + + tm[j] = 1.0; + + for (int i = 0; i < system.getPhase(1).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getx() > 1e-100) { + tm[j] -= Math.exp(logWi[i]); + } + x[j][i] = (clonedSystem.get(j)).getPhase(1).getComponents()[i].getx(); + // logger.info("txji: " + x[j][i]); + + xTrivialCheck0 += Math.abs(x[j][i] - system.getPhase(0).getComponent(i).getx()); + xTrivialCheck1 += Math.abs(x[j][i] - system.getPhase(1).getComponent(i).getx()); + } + if (iter >= 199) { + logger.info("iter > maxiter multiphase stability "); + logger.info("error " + Math.abs(err)); + logger.info("tm: " + tm[j]); + } + + if (Math.abs(xTrivialCheck0) < 1e-6 || Math.abs(xTrivialCheck1) < 1e-6) { + tm[j] = 10.0; + } + + if (tm[j] < -1e-8) { + break; + } + } + + int unstabcomp = 0; + for (int k = system.getPhase(0).getNumberOfComponents() - 1; k >= 0; k--) { + if (tm[k] < -1e-8 && !(Double.isNaN(tm[k]))) { + system.addPhase(); + unstabcomp = k; + for (int i = 0; i < system.getPhase(1).getNumberOfComponents(); i++) { + system.getPhase(system.getNumberOfPhases() - 1).getComponents()[i].setx(x[k][i]); } + system.getPhases()[system.getNumberOfPhases() - 1].normalize(); + multiPhaseTest = true; + system.setBeta(system.getNumberOfPhases() - 1, + system.getPhase(0).getComponent(unstabcomp).getz()); + system.init(1); system.normalizeBeta(); + // logger.info("STABILITY ANALYSIS: "); - // logger.info("tm1: " + tm[0] + " tm2: " + tm[1]); + // logger.info("tm1: " + k + " "+ tm[k]); // system.display(); + return; + } + } + system.normalizeBeta(); + // logger.info("STABILITY ANALYSIS: "); + // logger.info("tm1: " + tm[0] + " tm2: " + tm[1]); + // system.display(); + } + + /** {@inheritDoc} */ + @Override + public void run() { + int aqueousPhaseNumber = 0; + // logger.info("Starting multiphase-flash...."); + + // system.setNumberOfPhases(system.getNumberOfPhases()+1); + if (doStabilityAnalysis) { + stabilityAnalysis(); + } + // system.orderByDensity(); + doStabilityAnalysis = true; + // system.init(1); + // system.display(); + aqueousPhaseNumber = system.getPhaseNumberOfPhase("aqueous"); + if (system.isChemicalSystem()) { + system.getChemicalReactionOperations().solveChemEq(system.getPhaseNumberOfPhase("aqueous"), + 0); + system.getChemicalReactionOperations().solveChemEq(system.getPhaseNumberOfPhase("aqueous"), + 1); } - /** {@inheritDoc} */ - @Override - public void run() { - int aqueousPhaseNumber = 0; - // logger.info("Starting multiphase-flash...."); + int iterations = 0; + if (multiPhaseTest) { // && !system.isChemicalSystem()) { + double diff = 1.0e10; - // system.setNumberOfPhases(system.getNumberOfPhases()+1); - if (doStabilityAnalysis) { - stabilityAnalysis(); - } - // system.orderByDensity(); - doStabilityAnalysis = true; - // system.init(1); - // system.display(); - aqueousPhaseNumber = system.getPhaseNumberOfPhase("aqueous"); + double oldDiff = 1.0e10; + double chemdev = 0; + int iterOut = 0; + double maxerr = 1e-12; + do { + iterOut++; if (system.isChemicalSystem()) { + if (system.getPhaseNumberOfPhase("aqueous") != aqueousPhaseNumber) { + aqueousPhaseNumber = system.getPhaseNumberOfPhase("aqueous"); system.getChemicalReactionOperations() - .solveChemEq(system.getPhaseNumberOfPhase("aqueous"), 0); - system.getChemicalReactionOperations() - .solveChemEq(system.getPhaseNumberOfPhase("aqueous"), 1); - } - - int iterations = 0; - if (multiPhaseTest) {// && !system.isChemicalSystem()) { - // double oldBeta = 1.0; - double diff = 1.0e10, oldDiff = 1.0e10; - - double chemdev = 0; - int iterOut = 0; - do { - iterOut++; - if (system.isChemicalSystem()) { - if (system.getPhaseNumberOfPhase("aqueous") != aqueousPhaseNumber) { - aqueousPhaseNumber = system.getPhaseNumberOfPhase("aqueous"); - system.getChemicalReactionOperations() - .solveChemEq(system.getPhaseNumberOfPhase("aqueous"), 0); - // system.getChemicalReactionOperations().solveChemEq(system.getPhaseNumberOfPhase("aqueous"), - // 1); - } - - for (int phase = system.getPhaseNumberOfPhase("aqueous"); phase < system - .getPhaseNumberOfPhase("aqueous") + 1; phase++) { - chemdev = 0.0; - double xchem[] = new double[system.getPhase(phase).getNumberOfComponents()]; - - for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - xchem[i] = system.getPhase(phase).getComponents()[i].getx(); - } - - system.init(1); - system.getChemicalReactionOperations() - .solveChemEq(system.getPhaseNumberOfPhase("aqueous"), 1); - - for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - chemdev += Math.abs( - xchem[i] - system.getPhase(phase).getComponents()[i].getx()); - } - // logger.info("chemdev: " + chemdev); - } - } - setDoubleArrays(); - iterations = 0; - do { - iterations++; - // oldBeta = system.getBeta(system.getNumberOfPhases() - 1); - // system.init(1); - oldDiff = diff; - diff = this.solveBeta(); - // diff = Math.abs((system.getBeta(system.getNumberOfPhases() - 1) - oldBeta) / - // oldBeta); - // logger.info("diff multiphase " + diff); - } while (diff > 1e-12 && !removePhase && (diff < oldDiff || iterations < 50) - && iterations < 200); - // this.solveBeta(true); - if (iterations >= 199) { - logger.error("error in multiphase flash..did not solve in 200 iterations"); - diff = this.solveBeta(); - } - } while ((Math.abs(chemdev) > 1e-10 && iterOut < 100) - || (iterOut < 3 && system.isChemicalSystem())); - - boolean hasRemovedPhase = false; - for (int i = 0; i < system.getNumberOfPhases(); i++) { - if (system.getBeta(i) < ThermodynamicModelSettings.phaseFractionMinimumLimit - * 1.1) { - system.removePhaseKeepTotalComposition(i); - doStabilityAnalysis = false; - hasRemovedPhase = true; - } + .solveChemEq(system.getPhaseNumberOfPhase("aqueous"), 0); + // system.getChemicalReactionOperations().solveChemEq(system.getPhaseNumberOfPhase("aqueous"), + // 1); + } + + for (int phase = system.getPhaseNumberOfPhase("aqueous"); phase < system + .getPhaseNumberOfPhase("aqueous") + 1; phase++) { + chemdev = 0.0; + double[] xchem = new double[system.getPhase(phase).getNumberOfComponents()]; + + for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + xchem[i] = system.getPhase(phase).getComponents()[i].getx(); } - boolean trivialSolution = false; - for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - for (int j = 0; j < system.getPhase(i).getNumberOfComponents(); j++) { - if (Math.abs(system.getPhase(i).getDensity() - - system.getPhase(i + 1).getDensity()) < 1.1e-5) { - trivialSolution = true; - } - } - } - - if (trivialSolution && !hasRemovedPhase) { - for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { - if (Math.abs(system.getPhase(i).getDensity() - - system.getPhase(i + 1).getDensity()) < 1.1e-5) { - system.removePhaseKeepTotalComposition(i + 1); - doStabilityAnalysis = false; - hasRemovedPhase = true; - } - } - } + system.init(1); + system.getChemicalReactionOperations() + .solveChemEq(system.getPhaseNumberOfPhase("aqueous"), 1); - /* - * for (int i = 0; i < system.getNumberOfPhases()-1; i++) { if - * (Math.abs(system.getPhase(i).getDensity()-system.getPhase(i+1).getDensity())< 1e-6 && - * !hasRemovedPhase) { system.removePhase(i+1); doStabilityAnalysis=false; - * hasRemovedPhase = true; } } - */ - if (hasRemovedPhase && !secondTime) { - secondTime = true; - run(); + for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + chemdev += Math.abs(xchem[i] - system.getPhase(phase).getComponents()[i].getx()); } - /* - * if (!secondTime) { secondTime = true; doStabilityAnalysis = false; run(); } - */ + // logger.info("chemdev: " + chemdev); + } + } + setDoubleArrays(); + iterations = 0; + do { + iterations++; + // oldBeta = system.getBeta(system.getNumberOfPhases() - 1); + // system.init(1); + oldDiff = diff; + diff = this.solveBeta(); + // diff = Math.abs((system.getBeta(system.getNumberOfPhases() - 1) - oldBeta) / + // oldBeta); + // logger.info("diff multiphase " + diff); + if (iterations % 50 == 0) { + maxerr *= 100.0; + } + } while (diff > maxerr && !removePhase && (diff < oldDiff || iterations < 50) + && iterations < 200); + // this.solveBeta(true); + if (iterations >= 199) { + logger.error("error in multiphase flash..did not solve in 200 iterations"); + logger.error("diff " + diff + " temperaure " + system.getTemperature("C") + " pressure " + + system.getPressure("bara")); + diff = this.solveBeta(); + } + } while ((Math.abs(chemdev) > 1e-10 && iterOut < 100) + || (iterOut < 3 && system.isChemicalSystem())); + + boolean hasRemovedPhase = false; + for (int i = 0; i < system.getNumberOfPhases(); i++) { + if (system.getBeta(i) < ThermodynamicModelSettings.phaseFractionMinimumLimit * 1.1) { + system.removePhaseKeepTotalComposition(i); + doStabilityAnalysis = false; + hasRemovedPhase = true; + } + } + + boolean trivialSolution = false; + for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { + for (int j = 0; j < system.getPhase(i).getNumberOfComponents(); j++) { + if (Math.abs( + system.getPhase(i).getDensity() - system.getPhase(i + 1).getDensity()) < 1.1e-5) { + trivialSolution = true; + } + } + } + + if (trivialSolution && !hasRemovedPhase) { + for (int i = 0; i < system.getNumberOfPhases() - 1; i++) { + if (Math.abs( + system.getPhase(i).getDensity() - system.getPhase(i + 1).getDensity()) < 1.1e-5) { + system.removePhaseKeepTotalComposition(i + 1); + doStabilityAnalysis = false; + hasRemovedPhase = true; + } } + } + + /* + * for (int i = 0; i < system.getNumberOfPhases()-1; i++) { if + * (Math.abs(system.getPhase(i).getDensity()-system.getPhase(i+1).getDensity())< 1e-6 && + * !hasRemovedPhase) { system.removePhase(i+1); doStabilityAnalysis=false; hasRemovedPhase = + * true; } } + */ + if (hasRemovedPhase && !secondTime) { + secondTime = true; + stabilityAnalysis3(); + run(); + } + /* + * if (!secondTime) { secondTime = true; doStabilityAnalysis = false; run(); } + */ } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflashWAX.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflashWAX.java index 9056732322..eed4f4d726 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflashWAX.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflashWAX.java @@ -4,6 +4,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import Jama.Matrix; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; /** @@ -20,19 +21,12 @@ public class TPmultiflashWAX extends TPflash { // SystemInterface clonedSystem; boolean multiPhaseTest = false; - double dQdbeta[]; - double Qmatrix[][]; - double E[]; + double[] dQdbeta; + double[][] Qmatrix; + double[] E; double Q = 0; boolean doStabilityAnalysis = true; - /** - *

- * Constructor for TPmultiflashWAX. - *

- */ - public TPmultiflashWAX() {} - /** *

* Constructor for TPmultiflashWAX. @@ -50,10 +44,10 @@ public TPmultiflashWAX(SystemInterface system) { *

* * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param check a boolean + * @param checkForSolids Set true to do solid phase check and calculations */ - public TPmultiflashWAX(SystemInterface system, boolean check) { - super(system, check); + public TPmultiflashWAX(SystemInterface system, boolean checkForSolids) { + super(system, checkForSolids); } /** @@ -76,11 +70,11 @@ public void setXY() { / E[i] / system.getPhase(k).getComponents()[i].getFugacityCoefficient()); } if (system.getPhase(0).getComponent(i).getIonicCharge() != 0 - && !system.getPhase(k).getPhaseTypeName().equals("aqueous")) { + && system.getPhase(k).getType() != PhaseType.AQUEOUS) { system.getPhase(k).getComponents()[i].setx(1e-50); } if (system.getPhase(0).getComponent(i).getIonicCharge() != 0 - && system.getPhase(k).getPhaseTypeName().equals("aqueous")) { + && system.getPhase(k).getType() == PhaseType.AQUEOUS) { system.getPhase(k).getComponents()[i] .setx(system.getPhase(k).getComponents()[i].getNumberOfmoles() / system.getPhase(k).getNumberOfMolesInPhase()); @@ -165,7 +159,7 @@ public double calcQ() { * @param updateFugacities a boolean */ public void solveBeta(boolean updateFugacities) { - double oldBeta[] = new double[system.getNumberOfPhases()]; + double[] oldBeta = new double[system.getNumberOfPhases()]; // double newBeta[] = new double[system.getNumberOfPhases()]; Matrix ans = new Matrix(system.getNumberOfPhases() - 1, 1); @@ -184,7 +178,7 @@ public void solveBeta(boolean updateFugacities) { Matrix dQdBM = new Matrix(Qmatrix); try { ans = dQdBM.solve(dQM.transpose()); - } catch (Exception e) { + } catch (Exception ex) { } betaMatrix.minusEquals(ans.times(iter / (iter + 2.0))); // ans.print(10,2); @@ -241,8 +235,7 @@ public void stabilityAnalysis() { // (clonedSystem.get(i)).init(0); commented out sept 2005, Even // S. for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - numb = i == j ? 1.0 : 1.0e-12; // set to 0 by Even Solbraa 23.01.2013 - changed back - // to 1.0e-12 27.04.13 + numb = i == j ? 1.0 : 1.0e-12; if (system.getPhase(0).getComponent(j).getz() < 1e-100) { numb = 0; } @@ -292,8 +285,10 @@ public void stabilityAnalysis() { } } - int hydrocarbonTestCompNumb = 0, lightTestCompNumb = 0; - double Mmax = 0, Mmin = 1e10; + int hydrocarbonTestCompNumb = 0; + int lightTestCompNumb = 0; + double Mmax = 0; + double Mmin = 1e10; for (int i = 0; i < minimumGibbsEnergySystem.getPhase(0).getNumberOfComponents(); i++) { if (minimumGibbsEnergySystem.getPhase(0).getComponent(i).isHydrocarbon()) { if ((minimumGibbsEnergySystem.getPhase(0).getComponent(i).getMolarMass()) > Mmax) { @@ -447,7 +442,7 @@ public void run() { if (system.isChemicalSystem()) { for (int phase = 0; phase < system.getNumberOfPhases(); phase++) { chemdev = 0.0; - double xchem[] = new double[system.getPhase(phase).getNumberOfComponents()]; + double[] xchem = new double[system.getPhase(phase).getNumberOfComponents()]; for (i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { xchem[i] = system.getPhase(phase).getComponents()[i].getx(); diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflash_1.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflash_1.java index b1c187b258..c034293c6f 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflash_1.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/TPmultiflash_1.java @@ -3,6 +3,7 @@ * * Created on 2. oktober 2000, 22:26 */ + package neqsim.thermodynamicOperations.flashOps; import java.util.ArrayList; @@ -20,319 +21,305 @@ * @version $Id: $Id */ public class TPmultiflash_1 extends TPflash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(TPmultiflash_1.class); - - // SystemInterface clonedSystem; - boolean multiPhaseTest = false; - double dQdbeta[]; - double Qmatrix[][]; - double E[]; - double Q = 0; - - /** - *

- * Constructor for TPmultiflash_1. - *

- */ - public TPmultiflash_1() {} - - /** - *

- * Constructor for TPmultiflash_1. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public TPmultiflash_1(SystemInterface system) { - super(system); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(TPmultiflash_1.class); + + // SystemInterface clonedSystem; + boolean multiPhaseTest = false; + double[] dQdbeta; + double[][] Qmatrix; + double[] E; + double Q = 0; + + /** + *

+ * Constructor for TPmultiflash_1. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public TPmultiflash_1(SystemInterface system) { + super(system); + } + + /** + *

+ * Constructor for TPmultiflash_1. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param checkForSolids Set true to do solid phase check and calculations + */ + public TPmultiflash_1(SystemInterface system, boolean checkForSolids) { + super(system, checkForSolids); + } + + /** + *

+ * calcMultiPhaseBeta. + *

+ */ + public void calcMultiPhaseBeta() {} + + /** + *

+ * setXY. + *

+ */ + public void setXY() { + for (int k = 0; k < system.getNumberOfPhases(); k++) { + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + system.getPhases()[k].getComponents()[i] + .setx(system.getPhases()[k].getComponents()[i].getz() / E[i] + / system.getPhases()[k].getComponents()[i].getFugacityCoefficient()); + } + } + } + + /** + *

+ * calcE. + *

+ */ + public void calcE() { + E = new double[system.getPhases()[0].getNumberOfComponents()]; + + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + for (int k = 0; k < system.getNumberOfPhases(); k++) { + E[i] += system.getPhases()[k].getBeta() + / system.getPhases()[k].getComponents()[i].getFugacityCoefficient(); + } } + } + + /** + *

+ * calcQ. + *

+ * + * @return a double + */ + public double calcQ() { + Q = 0; + double betaTotal = 0; + dQdbeta = new double[system.getNumberOfPhases()]; + Qmatrix = new double[system.getNumberOfPhases()][system.getNumberOfPhases()]; + + for (int k = 0; k < system.getNumberOfPhases(); k++) { + betaTotal += system.getPhases()[k].getBeta(); + } + + Q = betaTotal; + this.calcE(); - /** - *

- * Constructor for TPmultiflash_1. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param check a boolean - */ - public TPmultiflash_1(SystemInterface system, boolean check) { - super(system, check); + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + Q -= Math.log(E[i]) * system.getPhases()[0].getComponents()[i].getz(); } - /** - *

- * calcMultiPhaseBeta. - *

- */ - public void calcMultiPhaseBeta() {} - - /** - *

- * setXY. - *

- */ - public void setXY() { - for (int k = 0; k < system.getNumberOfPhases(); k++) { - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - system.getPhases()[k].getComponents()[i] - .setx(system.getPhases()[k].getComponents()[i].getz() / E[i] - / system.getPhases()[k].getComponents()[i] - .getFugacityCoefficient()); - } - } + for (int k = 0; k < system.getNumberOfPhases(); k++) { + dQdbeta[k] = 1.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + dQdbeta[k] -= system.getPhases()[0].getComponents()[i].getz() * 1.0 / E[i] + / system.getPhases()[k].getComponents()[i].getFugacityCoefficient(); + } } - /** - *

- * calcE. - *

- */ - public void calcE() { - E = new double[system.getPhases()[0].getNumberOfComponents()]; - - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - for (int k = 0; k < system.getNumberOfPhases(); k++) { - E[i] += system.getPhases()[k].getBeta() - / system.getPhases()[k].getComponents()[i].getFugacityCoefficient(); - } + for (int i = 0; i < system.getNumberOfPhases(); i++) { + for (int j = 0; j < system.getNumberOfPhases(); j++) { + Qmatrix[i][j] = 0; + for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { + Qmatrix[i][j] += system.getPhases()[0].getComponents()[k].getz() + / (E[k] * E[k] * system.getPhases()[j].getComponents()[k].getFugacityCoefficient() + * system.getPhases()[i].getComponents()[k].getFugacityCoefficient()); } + } } - - /** - *

- * calcQ. - *

- * - * @return a double - */ - public double calcQ() { - Q = 0; - double betaTotal = 0; - dQdbeta = new double[system.getNumberOfPhases()]; - Qmatrix = new double[system.getNumberOfPhases()][system.getNumberOfPhases()]; - - for (int k = 0; k < system.getNumberOfPhases(); k++) { - betaTotal += system.getPhases()[k].getBeta(); + return Q; + } + + /** + *

+ * solveBeta. + *

+ */ + public void solveBeta() { + double[] oldBeta = new double[system.getNumberOfPhases()]; + // double newBeta[] = new double[system.getNumberOfPhases()]; + + Matrix ans; + int iter = 1; + do { + iter++; + for (int k = 0; k < system.getNumberOfPhases(); k++) { + oldBeta[k] = system.getPhases()[k].getBeta(); + } + + calcQ(); + + Matrix betaMatrix = new Matrix(oldBeta, 1).transpose(); + Matrix dQM = new Matrix(dQdbeta, 1); + Matrix dQdBM = new Matrix(Qmatrix); + + ans = dQdBM.solve(dQM.transpose()); + betaMatrix.minusEquals(ans.times(iter / (iter + 20.0))); + // ans.print(10,2); + betaMatrix.print(10, 2); + + for (int k = 0; k < system.getNumberOfPhases(); k++) { + system.setBeta(k, betaMatrix.get(k, 0)); + if (betaMatrix.get(k, 0) < 0) { + system.setBeta(k, 1.0e-9); } - - Q = betaTotal; - this.calcE(); - - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - Q -= Math.log(E[i]) * system.getPhases()[0].getComponents()[i].getz(); + if (betaMatrix.get(k, 0) > 1) { + system.setBeta(k, 1.0 - 1e-9); } + } + + calcE(); + setXY(); + system.init(1); + } while (ans.norm2() > 1e-6); + } + + /** {@inheritDoc} */ + @Override + public void stabilityAnalysis() { + double[] logWi = new double[system.getPhases()[1].getNumberOfComponents()]; + double[][] Wi = new double[system.getPhases()[1].getNumberOfComponents()][system.getPhases()[0] + .getNumberOfComponents()]; + double[] sumw = new double[system.getPhases()[1].getNumberOfComponents()]; + double err = 0; + double[] oldlogw = new double[system.getPhases()[1].getNumberOfComponents()]; + double[] d = new double[system.getPhases()[1].getNumberOfComponents()]; + double[][] x = new double[system.getPhases()[1].getNumberOfComponents()][system.getPhases()[0] + .getNumberOfComponents()]; + + SystemInterface minimumGibbsEnergySystem; + ArrayList clonedSystem = new ArrayList(1); + + minimumGibbsEnergySystem = system.clone(); + + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + double numb = 0; + clonedSystem.add(system.clone()); + (clonedSystem.get(i)).init(0); + for (int j = 0; j < system.getPhases()[1].getNumberOfComponents(); j++) { + numb = i == j ? 1.0 : 1.0e-3; + (clonedSystem.get(i)).getPhases()[1].getComponents()[j].setx(numb); + } + (clonedSystem.get(i)).init(1); + } - for (int k = 0; k < system.getNumberOfPhases(); k++) { - dQdbeta[k] = 1.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - dQdbeta[k] -= system.getPhases()[0].getComponents()[i].getz() * 1.0 / E[i] - / system.getPhases()[k].getComponents()[i].getFugacityCoefficient(); - } - } + lowestGibbsEnergyPhase = 0; - for (int i = 0; i < system.getNumberOfPhases(); i++) { - for (int j = 0; j < system.getNumberOfPhases(); j++) { - Qmatrix[i][j] = 0; - for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { - Qmatrix[i][j] += system.getPhases()[0].getComponents()[k].getz() / (E[k] * E[k] - * system.getPhases()[j].getComponents()[k].getFugacityCoefficient() - * system.getPhases()[i].getComponents()[k].getFugacityCoefficient()); - } - } - } - return Q; + // logger.info("low gibbs phase " + lowestGibbsEnergyPhase); + + for (int k = 0; k < minimumGibbsEnergySystem.getPhases()[1].getNumberOfComponents(); k++) { + // sumz += minimumGibbsEnergySystem.getPhases()[1].getComponents()[k].getz(); + for (int i = 0; i < minimumGibbsEnergySystem.getPhases()[1].getNumberOfComponents(); i++) { + sumw[k] += (clonedSystem.get(k)).getPhases()[1].getComponents()[i].getx(); + } } - /** - *

- * solveBeta. - *

- */ - public void solveBeta() { - double oldBeta[] = new double[system.getNumberOfPhases()]; - // double newBeta[] = new double[system.getNumberOfPhases()]; - - Matrix ans; - int iter = 1; - do { - iter++; - for (int k = 0; k < system.getNumberOfPhases(); k++) { - oldBeta[k] = system.getPhases()[k].getBeta(); - } - - calcQ(); - - Matrix betaMatrix = new Matrix(oldBeta, 1).transpose(); - Matrix dQM = new Matrix(dQdbeta, 1); - Matrix dQdBM = new Matrix(Qmatrix); - - ans = dQdBM.solve(dQM.transpose()); - betaMatrix.minusEquals(ans.times(iter / (iter + 20.0))); - // ans.print(10,2); - betaMatrix.print(10, 2); - - for (int k = 0; k < system.getNumberOfPhases(); k++) { - system.setBeta(k, betaMatrix.get(k, 0)); - if (betaMatrix.get(k, 0) < 0) { - system.setBeta(k, 1.0e-9); - } - if (betaMatrix.get(k, 0) > 1) { - system.setBeta(k, 1.0 - 1e-9); - } - } - - calcE(); - setXY(); - system.init(1); - } while (ans.norm2() > 1e-6); + for (int k = 0; k < minimumGibbsEnergySystem.getPhases()[1].getNumberOfComponents(); k++) { + for (int i = 0; i < minimumGibbsEnergySystem.getPhases()[1].getNumberOfComponents(); i++) { + (clonedSystem.get(k)).getPhases()[1].getComponents()[i] + .setx((clonedSystem.get(k)).getPhases()[1].getComponents()[i].getx() / sumw[0]); + // logger.info("x: " + ( + // clonedSystem.get(k)).getPhases()[0].getComponents()[i].getx()); + } + d[k] = Math.log( + minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents()[k].getx()) + + Math.log(minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents()[k] + .getFugacityCoefficient()); + // logger.info("dk: " + d[k]); } - /** {@inheritDoc} */ - @Override - public void stabilityAnalysis() { - double[] logWi = new double[system.getPhases()[1].getNumberOfComponents()]; - double[][] Wi = new double[system.getPhases()[1] - .getNumberOfComponents()][system.getPhases()[0].getNumberOfComponents()]; - double[] sumw = new double[system.getPhases()[1].getNumberOfComponents()]; - // double sumz = 0; - double err = 0; - double[] oldlogw = new double[system.getPhases()[1].getNumberOfComponents()]; - double[] d = new double[system.getPhases()[1].getNumberOfComponents()]; - double[][] x = new double[system.getPhases()[1] - .getNumberOfComponents()][system.getPhases()[0].getNumberOfComponents()]; - - SystemInterface minimumGibbsEnergySystem; - ArrayList clonedSystem = new ArrayList(1); - - minimumGibbsEnergySystem = system.clone(); + for (int j = 0; j < minimumGibbsEnergySystem.getPhases()[1].getNumberOfComponents(); j++) { + logWi[j] = 1; + } + for (int j = 0; j < system.getPhases()[1].getNumberOfComponents(); j++) { + do { + err = 0; + (clonedSystem.get(j)).init(1); for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - double numb = 0; - clonedSystem.add(system.clone()); - (clonedSystem.get(i)).init(0); - for (int j = 0; j < system.getPhases()[1].getNumberOfComponents(); j++) { - numb = i == j ? 1.0 : 1.0e-3; - (clonedSystem.get(i)).getPhases()[1].getComponents()[j].setx(numb); - } - (clonedSystem.get(i)).init(1); + oldlogw[i] = logWi[i]; + logWi[i] = d[i] - Math.log( + (clonedSystem.get(j)).getPhases()[1].getComponents()[i].getFugacityCoefficient()); + err += Math.abs(logWi[i] - oldlogw[i]); + Wi[j][i] = Math.exp(logWi[i]); } + // logger.info("err: " + err); + sumw[j] = 0; - lowestGibbsEnergyPhase = 0; - - // logger.info("low gibbs phase " + lowestGibbsEnergyPhase); - - for (int k = 0; k < minimumGibbsEnergySystem.getPhases()[1].getNumberOfComponents(); k++) { - // sumz += minimumGibbsEnergySystem.getPhases()[1].getComponents()[k].getz(); - for (int i = 0; i < minimumGibbsEnergySystem.getPhases()[1] - .getNumberOfComponents(); i++) { - sumw[k] += (clonedSystem.get(k)).getPhases()[1].getComponents()[i].getx(); - } + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + sumw[j] += Math.exp(logWi[i]); } - for (int k = 0; k < minimumGibbsEnergySystem.getPhases()[1].getNumberOfComponents(); k++) { - for (int i = 0; i < minimumGibbsEnergySystem.getPhases()[1] - .getNumberOfComponents(); i++) { - (clonedSystem.get(k)).getPhases()[1].getComponents()[i].setx( - (clonedSystem.get(k)).getPhases()[1].getComponents()[i].getx() / sumw[0]); - // logger.info("x: " + ( - // clonedSystem.get(k)).getPhases()[0].getComponents()[i].getx()); - } - d[k] = Math.log( - minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase].getComponents()[k] - .getx()) - + Math.log(minimumGibbsEnergySystem.getPhases()[lowestGibbsEnergyPhase] - .getComponents()[k].getFugacityCoefficient()); - // logger.info("dk: " + d[k]); + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + (clonedSystem.get(j)).getPhases()[1].getComponents()[i] + .setx(Math.exp(logWi[i]) / sumw[j]); } + } while (Math.abs(err) > 1e-9); - for (int j = 0; j < minimumGibbsEnergySystem.getPhases()[1].getNumberOfComponents(); j++) { - logWi[j] = 1; - } + tm[j] = 1.0; - for (int j = 0; j < system.getPhases()[1].getNumberOfComponents(); j++) { - do { - err = 0; - (clonedSystem.get(j)).init(1); - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - oldlogw[i] = logWi[i]; - logWi[i] = - d[i] - Math.log((clonedSystem.get(j)).getPhases()[1].getComponents()[i] - .getFugacityCoefficient()); - err += Math.abs(logWi[i] - oldlogw[i]); - Wi[j][i] = Math.exp(logWi[i]); - } - // logger.info("err: " + err); - sumw[j] = 0; - - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - sumw[j] += Math.exp(logWi[i]); - } - - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - (clonedSystem.get(j)).getPhases()[1].getComponents()[i] - .setx(Math.exp(logWi[i]) / sumw[j]); - } - } while (Math.abs(err) > 1e-9); - - tm[j] = 1.0; - - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - tm[j] -= Math.exp(logWi[i]); - x[j][i] = (clonedSystem.get(j)).getPhases()[1].getComponents()[i].getx(); - // logger.info("txji: " + x[j][i]); - } - logger.info("tm: " + tm[j]); - } - int unstabcomp = 0; - for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { - if (tm[k] < -1e-8 && !(Double.isNaN(tm[k]))) { - system.addPhase(); - unstabcomp = k; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[2].getComponents()[i].setx(x[k][i]); - } - multiPhaseTest = true; - system.setBeta(system.getNumberOfPhases() - 1, - system.getPhase(0).getComponent(unstabcomp).getz()); - return; - } + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + tm[j] -= Math.exp(logWi[i]); + x[j][i] = (clonedSystem.get(j)).getPhases()[1].getComponents()[i].getx(); + // logger.info("txji: " + x[j][i]); + } + logger.info("tm: " + tm[j]); + } + int unstabcomp = 0; + for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { + if (tm[k] < -1e-8 && !(Double.isNaN(tm[k]))) { + system.addPhase(); + unstabcomp = k; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[2].getComponents()[i].setx(x[k][i]); } + multiPhaseTest = true; + system.setBeta(system.getNumberOfPhases() - 1, + system.getPhase(0).getComponent(unstabcomp).getz()); + return; + } + } + + // logger.info("STABILITY ANALYSIS: "); + // logger.info("tm1: " + tm[0] + " tm2: " + tm[1]);*/ + } + + /** {@inheritDoc} */ + @Override + public void run() { + logger.info("Starting multiphase-flash...."); + stabilityAnalysis(); + system.init(1); - // logger.info("STABILITY ANALYSIS: "); - // logger.info("tm1: " + tm[0] + " tm2: " + tm[1]);*/ + if (multiPhaseTest && !system.isChemicalSystem()) { + this.solveBeta(); } - /** {@inheritDoc} */ - @Override - public void run() { - logger.info("Starting multiphase-flash...."); - stabilityAnalysis(); - system.init(1); + double chemdev = 0; + if (system.isChemicalSystem()) { + for (int phase = 0; phase < system.getNumberOfPhases(); phase++) { + chemdev = 0.0; + double[] xchem = new double[system.getPhases()[phase].getNumberOfComponents()]; - if (multiPhaseTest && !system.isChemicalSystem()) { - this.solveBeta(); + for (i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + xchem[i] = system.getPhases()[phase].getComponents()[i].getx(); } - double chemdev = 0; - if (system.isChemicalSystem()) { - for (int phase = 0; phase < system.getNumberOfPhases(); phase++) { - chemdev = 0.0; - double xchem[] = new double[system.getPhases()[phase].getNumberOfComponents()]; - - for (i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - xchem[i] = system.getPhases()[phase].getComponents()[i].getx(); - } - - system.init(1); - system.getChemicalReactionOperations().solveChemEq(phase, 1); - - for (i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - chemdev += Math - .abs(xchem[i] - system.getPhases()[phase].getComponents()[i].getx()); - } - logger.info("chemdev: " + chemdev); - } + system.init(1); + system.getChemicalReactionOperations().solveChemEq(phase, 1); + + for (i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + chemdev += Math.abs(xchem[i] - system.getPhases()[phase].getComponents()[i].getx()); } + logger.info("chemdev: " + chemdev); + } } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/TSFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/TSFlash.java index 021708ba1b..97a566edd1 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/TSFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/TSFlash.java @@ -3,6 +3,7 @@ * * Created on 8. mars 2001, 10:56 */ + package neqsim.thermodynamicOperations.flashOps; import neqsim.thermo.system.SystemInterface; @@ -18,121 +19,108 @@ * @version $Id: $Id */ public class TSFlash extends QfuncFlash { - private static final long serialVersionUID = 1000; - - double Sspec = 0; - Flash tpFlash; - - /** - *

- * Constructor for TSFlash. - *

- */ - public TSFlash() {} - - /** - *

- * Constructor for TSFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Sspec a double - */ - public TSFlash(SystemInterface system, double Sspec) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Sspec = Sspec; - } - - /** {@inheritDoc} */ - @Override - public double calcdQdTT() { - // double cP1 = 0.0, cP2 = 0.0; - - if (system.getNumberOfPhases() == 1) { - return -system.getPhase(0).getCp() / system.getTemperature(); - } - - double dQdTT = 0.0; - for (int i = 0; i < system.getNumberOfPhases(); i++) { - dQdTT -= system.getPhase(i).getCp() / system.getPhase(i).getTemperature(); - } - return dQdTT; + private static final long serialVersionUID = 1000; + + double Sspec = 0; + Flash tpFlash; + + /** + *

+ * Constructor for TSFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Sspec a double + */ + public TSFlash(SystemInterface system, double Sspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Sspec = Sspec; + } + + /** {@inheritDoc} */ + @Override + public double calcdQdTT() { + if (system.getNumberOfPhases() == 1) { + return -system.getPhase(0).getCp() / system.getTemperature(); } - /** {@inheritDoc} */ - @Override - public double calcdQdT() { - double dQ = -system.getEntropy() + Sspec; - return dQ; + double dQdTT = 0.0; + for (int i = 0; i < system.getNumberOfPhases(); i++) { + dQdTT -= system.getPhase(i).getCp() / system.getPhase(i).getTemperature(); } - - /** {@inheritDoc} */ - @Override - public double solveQ() { - // this method is not yet implemented - double oldTemp = system.getPressure(), nyTemp = system.getPressure(); - int iterations = 1; - double error = 1.0, erorOld = 10.0e10; - // double factor = 0.8; - - // boolean correctFactor = true; - // double newCorr = 1.0; - do { - iterations++; - oldTemp = system.getPressure(); - system.init(2); - - nyTemp = oldTemp - calcdQdT() / 10.0; - - system.setPressure(nyTemp); - tpFlash.run(); - erorOld = error; - error = Math.abs(calcdQdT()); - } while (((error + erorOld) > 1e-8 || iterations < 3) && iterations < 200); - return nyTemp; - } - - /** - *

- * onPhaseSolve. - *

- */ - public void onPhaseSolve() {} - - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - solveQ(); - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(373.15, 45.551793); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 9.4935); - testSystem.addComponent("ethane", 5.06499); - testSystem.addComponent("n-heptane", 0.2); - testSystem.init(0); - try { - testOps.TPflash(); - testSystem.display(); - - double Sspec = testSystem.getEntropy("kJ/kgK"); - System.out.println("S spec " + Sspec); - testSystem.setTemperature(293.15); - testOps.TSflash(Sspec, "kJ/kgK"); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + return dQdTT; + } + + /** {@inheritDoc} */ + @Override + public double calcdQdT() { + double dQ = -system.getEntropy() + Sspec; + return dQ; + } + + /** {@inheritDoc} */ + @Override + public double solveQ() { + // this method is not yet implemented + double oldTemp = system.getPressure(), nyTemp = system.getPressure(); + int iterations = 1; + double error = 1.0, erorOld = 10.0e10; + do { + iterations++; + oldTemp = system.getPressure(); + system.init(2); + + nyTemp = oldTemp - calcdQdT() / 10.0; + + system.setPressure(nyTemp); + tpFlash.run(); + erorOld = error; + error = Math.abs(calcdQdT()); + } while (((error + erorOld) > 1e-8 || iterations < 3) && iterations < 200); + return nyTemp; + } + + /** + *

+ * onPhaseSolve. + *

+ */ + public void onPhaseSolve() {} + + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + solveQ(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(373.15, 45.551793); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 9.4935); + testSystem.addComponent("ethane", 5.06499); + testSystem.addComponent("n-heptane", 0.2); + testSystem.init(0); + try { + testOps.TPflash(); + testSystem.display(); + + double Sspec = testSystem.getEntropy("kJ/kgK"); + logger.info("S spec " + Sspec); + testSystem.setTemperature(293.15); + testOps.TSflash(Sspec, "kJ/kgK"); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/TVflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/TVflash.java index 556d816f73..20ccc0a5f7 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/TVflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/TVflash.java @@ -3,6 +3,7 @@ * * Created on 8. mars 2001, 10:56 */ + package neqsim.thermodynamicOperations.flashOps; import neqsim.thermo.system.SystemInterface; @@ -16,100 +17,116 @@ * @version $Id: $Id */ public class TVflash extends Flash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double Vspec = 0; - Flash tpFlash; + double Vspec = 0; + Flash tpFlash; - /** - *

- * Constructor for TVflash. - *

- */ - public TVflash() {} + /** + *

+ * Constructor for TVflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Vspec a double + */ + public TVflash(SystemInterface system, double Vspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Vspec = Vspec; + } - /** - *

- * Constructor for TVflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Vspec a double - */ - public TVflash(SystemInterface system, double Vspec) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Vspec = Vspec; + /** + *

+ * calcdQdVP. + *

+ * + * @return a double + */ + public double calcdQdVdP() { + double dQdVP = 0.0; + for (int i = 0; i < system.getNumberOfPhases(); i++) { + dQdVP += 1.0 / system.getPhase(i).getdPdVTn(); } + return dQdVP; + } - /** - *

- * calcdQdVV. - *

- * - * @return a double - */ - public double calcdQdVV() { - double dQdVV = 0.0; - for (int i = 0; i < system.getNumberOfPhases(); i++) { - dQdVV += 1.0 / (system.getPhase(i).getVolume() / system.getVolume()) * 1.0 - / system.getPhase(i).getdPdVTn();// *system.getPhase(i).getdVdP();system.getPhase(i).getVolume()/system.getVolume()* - } - return dQdVV; - } + /** + *

+ * calcdQdV. + *

+ * + * @return a double + */ + public double calcdQdV() { + double dQ = system.getVolume() - Vspec; + return dQ; + } - /** - *

- * calcdQdV. - *

- * - * @return a double - */ - public double calcdQdV() { - double dQ = system.getVolume() - Vspec; - return dQ; - } + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldPres = system.getPressure(); + double nyPres = system.getPressure(); + double iterations = 1; + double error = 100.0; + double numericdQdVdP = 0.0; + double dQdV = 0.0; + double olddQdV = 0.0; + double pressureStep = 1.0; + do { + iterations++; + oldPres = nyPres; + system.init(3); + double dQDVdP = calcdQdVdP(); - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldPres = system.getPressure(), nyPres = system.getPressure(); - double iterations = 1; - do { - iterations++; - oldPres = nyPres; - system.init(3); - nyPres = oldPres - (iterations) / (iterations + 10.0) * calcdQdV() / calcdQdVV(); - if (nyPres <= 0.0 || Math.abs(oldPres - nyPres) > 10.0) { - nyPres = Math.abs(oldPres - 1.0); - } - system.setPressure(nyPres); - tpFlash.run(); - // System.out.println(" dQdv " + calcdQdV() + " new pressure " + nyPres + " error " + Math.abs((nyPres-oldPres)/(nyPres)) + " numberofphases "+system.getNumberOfPhases()); - } while (Math.abs((nyPres - oldPres) / (nyPres)) > 1e-9 && iterations < 1000 - || iterations < 3); - return nyPres; - } + numericdQdVdP = (calcdQdV() - olddQdV) / pressureStep; - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - // System.out.println("enthalpy: " + system.getEnthalpy()); - solveQ(); + if (iterations < 5) { + nyPres = oldPres - 1.0 / 10.0 * calcdQdV() / dQDVdP; + } else { + nyPres = oldPres - 1.0 * calcdQdV() / numericdQdVdP; + } + if (nyPres <= 0.0) { + nyPres = oldPres * 0.9; + } + if (nyPres >= oldPres * 2) { + nyPres = oldPres * 2.0; + } + pressureStep = nyPres - oldPres; - // System.out.println("volume: " + system.getVolume()); - // System.out.println("Temperature: " + system.getTemperature()); - } + olddQdV = calcdQdV(); + system.setPressure(nyPres); + tpFlash.run(); + error = Math.abs(calcdQdV()) / system.getVolume(); + // System.out.println("error " + error + "iteration " + iterations + " dQdv " + calcdQdV() + // + " new pressure " + nyPres + " error " + Math.abs((nyPres - oldPres) / (nyPres)) + // + " numberofphases " + system.getNumberOfPhases() + " dQDVdP " + dQDVdP + " dQDVdPnumeric" + // + numericdQdVdP); - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + } while ((error > 1e-9 && iterations < 200) || iterations < 3); + return nyPres; + } + + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + // System.out.println("enthalpy: " + system.getEnthalpy()); + solveQ(); + + // System.out.println("volume: " + system.getVolume()); + // System.out.println("Temperature: " + system.getTemperature()); + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/TVfractionFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/TVfractionFlash.java new file mode 100644 index 0000000000..3a5d070986 --- /dev/null +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/TVfractionFlash.java @@ -0,0 +1,130 @@ +/* + * TVflash.java + * + * Created on 8. mars 2001, 10:56 + */ + +package neqsim.thermodynamicOperations.flashOps; + +import neqsim.thermo.system.SystemInterface; + +/** + *

+ * TVflash class. + *

+ * + * @author even solbraa + * @version $Id: $Id + */ +public class TVfractionFlash extends Flash { + private static final long serialVersionUID = 1000; + + double Vfractionspec = 0; + Flash tpFlash; + + /** + *

+ * Constructor for TVflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Vfractionspec a double + */ + public TVfractionFlash(SystemInterface system, double Vfractionspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Vfractionspec = Vfractionspec; + } + + /** + *

+ * calcdQdVP. + *

+ * + * @return a double + */ + public double calcdQdVdP() { + double dQdVP = 0.0; + dQdVP = 1.0 / system.getPhase(i).getdPdVTn() / system.getVolume(); + return dQdVP; + } + + /** + *

+ * calcdQdV. + *

+ * + * @return a double + */ + public double calcdQdV() { + double dQ = system.getPhase(0).getVolume() / system.getVolume() - Vfractionspec; + return dQ; + } + + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldPres = system.getPressure(); + double nyPres = system.getPressure(); + double iterations = 1; + double error = 100.0; + double numericdQdVdP = 0.0; + double dQdV = 0.0; + double olddQdV = 0.0; + double pressureStep = 1.0; + do { + iterations++; + oldPres = nyPres; + system.init(3); + double dQDVdP = calcdQdVdP(); + + numericdQdVdP = (calcdQdV() - olddQdV) / pressureStep; + + if (iterations < 5) { + nyPres = oldPres - 1.0 / 10.0 * calcdQdV() / dQDVdP; + } else { + nyPres = oldPres - 1.0 * calcdQdV() / numericdQdVdP; + } + if (nyPres <= 0.0) { + nyPres = oldPres * 0.9; + } + if (nyPres >= oldPres * 2) { + nyPres = oldPres * 2.0; + } + pressureStep = nyPres - oldPres; + + olddQdV = calcdQdV(); + system.setPressure(nyPres); + tpFlash.run(); + error = Math.abs(calcdQdV()) / system.getVolume(); + // System.out.println("error " + error + "iteration " + iterations + " dQdv " + calcdQdV() + // + " new pressure " + nyPres + " error " + Math.abs((nyPres - oldPres) / (nyPres)) + // + " numberofphases " + system.getNumberOfPhases() + " dQDVdP " + dQDVdP + " dQDVdPnumeric" + // + numericdQdVdP); + + } while ((error > 1e-9 && iterations < 200) || iterations < 3); + return nyPres; + } + + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + // System.out.println("enthalpy: " + system.getEnthalpy()); + solveQ(); + + // System.out.println("volume: " + system.getVolume()); + // System.out.println("Temperature: " + system.getTemperature()); + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } +} diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/VHflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/VHflash.java index 071a640e17..73e2394255 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/VHflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/VHflash.java @@ -11,86 +11,81 @@ * @version $Id: $Id */ public class VHflash extends Flash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double Hspec = 0; - double Vspec = 0; - Flash pHFlash; + double Hspec = 0; + double Vspec = 0; + Flash pHFlash; - /** - *

- * Constructor for VHflash. - *

- */ - public VHflash() {} + /** + *

+ * Constructor for VHflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Hspec a double + * @param Vspec a double + */ + public VHflash(SystemInterface system, double Hspec, double Vspec) { + this.system = system; + this.pHFlash = new PHflash(system, Hspec, 0); + this.Hspec = Hspec; + this.Vspec = Vspec; + // System.out.println("enthalpy " + Hspec); + // System.out.println("volume " + Vspec); + } - /** - *

- * Constructor for VHflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Hspec a double - * @param Vspec a double - */ - public VHflash(SystemInterface system, double Hspec, double Vspec) { - this.system = system; - this.pHFlash = new PHflash(system, Hspec, 0); - this.Hspec = Hspec; - this.Vspec = Vspec; - // System.out.println("enthalpy " + Hspec); - // System.out.println("volume " + Vspec); - } - - /** {@inheritDoc} */ - @Override - public void run() { - // double oldVol = system.getVolume(); - double newVol = system.getVolume(); - // double pNew = system.getPressure(), pOld = system.getPressure(), pOldOld = 0.0; - double err = 0.0; - int iterations = 0; - // System.out.println("enthalpy start " + system.getEnthalpy()); - // double dPdV = 0.0; - double wallHeat = 0.0; - for (int i = 0; i < 1; i++) { - wallHeat = 0 * i / 20.0 * 400.0 * 1295.0 * 1000.0 * (293.15 - system.getTemperature()); - // System.out.println("Hwall " + wallHeat + " i " + i); - iterations = 1; - do { - iterations++; + /** {@inheritDoc} */ + @Override + public void run() { + // double oldVol = system.getVolume(); + double newVol = system.getVolume(); + // double pNew = system.getPressure(), pOld = system.getPressure(), pOldOld = 0.0; + double err = 0.0; + int iterations = 0; + // System.out.println("enthalpy start " + system.getEnthalpy()); + // double dPdV = 0.0; + double wallHeat = 0.0; + for (int i = 0; i < 1; i++) { + wallHeat = 0 * i / 20.0 * 400.0 * 1295.0 * 1000.0 * (293.15 - system.getTemperature()); + // System.out.println("Hwall " + wallHeat + " i " + i); + iterations = 1; + do { + iterations++; - this.pHFlash = new PHflash(system, Hspec + wallHeat, 0); - // System.out.println("Hspec " + Hspec); - this.pHFlash.run(); - // pOldOld = pOld; - // pOld = system.getPressure(); - // oldVol = newVol; - newVol = system.getVolume(); + this.pHFlash = new PHflash(system, Hspec + wallHeat, 0); + // System.out.println("Hspec " + Hspec); + this.pHFlash.run(); + // pOldOld = pOld; + // pOld = system.getPressure(); + // oldVol = newVol; + newVol = system.getVolume(); - err = (newVol - Vspec) / Vspec; + err = (newVol - Vspec) / Vspec; - // System.out.println("err................................................................................ - // " + err); - if (iterations < -5) { - system.setPressure(system.getPressure() + err / 10.0); - } else { - // System.out.println("pres " + (system.getPressure()+0.1*dPdV*(newVol-Vspec))); - system.setPressure(system.getPressure() - - 0.6 * 1.0 / system.getdVdPtn() * (newVol - Vspec));// system.getdVdPtn()*(newVol-Vspec));//dPdV*(newVol-Vspec)); - } - // pNew = system.getPressure(); - // dPdV = (pOld - pOldOld) / (newVol - oldVol); - // System.out.println("pressure " + system.getPressure()); - } while ((Math.abs(err) > 1e-10 && iterations < 1000) || iterations < 7); + // System.out.println("err................................................................................ + // " + err); + if (iterations < -5) { + system.setPressure(system.getPressure() + err / 10.0); + } else { + // System.out.println("pres " + (system.getPressure()+0.1*dPdV*(newVol-Vspec))); + system.setPressure( + system.getPressure() - 0.6 * 1.0 / system.getdVdPtn() * (newVol - Vspec)); + // system.getdVdPtn()*(newVol-Vspec)); + // //dPdV*(newVol-Vspec)); } - // System.out.println("enthalpy end " + system.getEnthalpy()); - // System.out.println("iterations " + iterations); + // pNew = system.getPressure(); + // dPdV = (pOld - pOldOld) / (newVol - oldVol); + // System.out.println("pressure " + system.getPressure()); + } while ((Math.abs(err) > 1e-10 && iterations < 1000) || iterations < 7); } + // System.out.println("enthalpy end " + system.getEnthalpy()); + // System.out.println("iterations " + iterations); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/VHflashQfunc.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/VHflashQfunc.java index d13494bba4..a20eceeb6a 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/VHflashQfunc.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/VHflashQfunc.java @@ -15,167 +15,162 @@ * @version $Id: $Id */ public class VHflashQfunc extends Flash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(VHflashQfunc.class); - - double Vspec = 0, Hspec = 0.0; - Flash tpFlash; - - /** - *

- * Constructor for VHflashQfunc. - *

- */ - public VHflashQfunc() {} - - /** - *

- * Constructor for VHflashQfunc. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Vspec a double - * @param Hspec a double - */ - public VHflashQfunc(SystemInterface system, double Vspec, double Hspec) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Vspec = Vspec; - this.Hspec = Hspec; - } - - /** - *

- * calcdQdPP. - *

- * - * @return a double - */ - public double calcdQdPP() { - double dQdVV = (system.getVolume() - Vspec) - / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()) - + system.getPressure() * (system.getdVdPtn()) - / (neqsim.thermo.ThermodynamicConstantsInterface.R - * system.getTemperature()); - return dQdVV; - } - - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - double dQdTT = -system.getCp() - / (system.getTemperature() * neqsim.thermo.ThermodynamicConstantsInterface.R) - - calcdQdT() / system.getTemperature(); - return dQdTT; - } - - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQdT = (Hspec - system.getEnthalpy()) - / (system.getTemperature() * neqsim.thermo.ThermodynamicConstantsInterface.R); - return dQdT; - } - - /** - *

- * calcdQdP. - *

- * - * @return a double - */ - public double calcdQdP() { - double dQdP = system.getPressure() * (system.getVolume() - Vspec) - / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()); - return dQdP; - } - - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldPres = system.getPressure(), nyPres = system.getPressure(), - nyTemp = system.getTemperature(), oldTemp = system.getTemperature(); - double iterations = 1; - // logger.info("Vspec: " + Vspec); - // logger.info("Uspec: " + Uspec); - do { - iterations++; - oldPres = nyPres; - oldTemp = nyTemp; - system.init(3); - // logger.info("dQdP: " + calcdQdP()); - // logger.info("dQdT: " + calcdQdT()); - nyPres = oldPres - (iterations) / (iterations + 10.0) * calcdQdP() / calcdQdPP(); - nyTemp = oldTemp - (iterations) / (iterations + 10.0) * calcdQdT() / calcdQdTT(); - // logger.info("volume: " + system.getVolume()); - // logger.info("inernaleng: " + system.getInternalEnergy()); - system.setPressure(nyPres); - system.setTemperature(nyTemp); - tpFlash.run(); - // logger.info("error1: " + Math.abs((nyPres - oldPres) / (nyPres))); - // logger.info("error2: " + Math.abs((nyTemp - oldTemp) / (nyTemp))); - // logger.info("inernaleng: " + system.getInternalEnergy()); - } while (Math.abs((nyPres - oldPres) / (nyPres)) - + Math.abs((nyTemp - oldTemp) / (nyTemp)) > 1e-9 && iterations < 1000); - return nyPres; - } - - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - // logger.info("internaleng: " + system.getInternalEnergy()); - // logger.info("volume: " + system.getVolume()); - solveQ(); - } - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 55, 50.0); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 31.0); - testSystem.addComponent("ethane", 4.0); - testSystem.addComponent("n-heptane", 0.2); - testSystem.init(0); - try { - testOps.TPflash(); - testSystem.display(); - - double energy = testSystem.getEnthalpy() * 1.1; - double volume = testSystem.getVolume() * 0.9; - - testOps.VHflash(volume, energy); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(VHflashQfunc.class); + + double Vspec = 0; + double Hspec = 0.0; + Flash tpFlash; + + /** + *

+ * Constructor for VHflashQfunc. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Vspec a double + * @param Hspec a double + */ + public VHflashQfunc(SystemInterface system, double Vspec, double Hspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Vspec = Vspec; + this.Hspec = Hspec; + } + + /** + *

+ * calcdQdPP. + *

+ * + * @return a double + */ + public double calcdQdPP() { + double dQdVV = (system.getVolume() - Vspec) + / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()) + + system.getPressure() * (system.getdVdPtn()) + / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()); + return dQdVV; + } + + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + double dQdTT = -system.getCp() + / (system.getTemperature() * neqsim.thermo.ThermodynamicConstantsInterface.R) + - calcdQdT() / system.getTemperature(); + return dQdTT; + } + + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQdT = (Hspec - system.getEnthalpy()) + / (system.getTemperature() * neqsim.thermo.ThermodynamicConstantsInterface.R); + return dQdT; + } + + /** + *

+ * calcdQdP. + *

+ * + * @return a double + */ + public double calcdQdP() { + double dQdP = system.getPressure() * (system.getVolume() - Vspec) + / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()); + return dQdP; + } + + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldPres = system.getPressure(); + double nyPres = system.getPressure(); + double nyTemp = system.getTemperature(); + double oldTemp = system.getTemperature(); + double iterations = 1; + // logger.info("Vspec: " + Vspec); + // logger.info("Uspec: " + Uspec); + do { + iterations++; + oldPres = nyPres; + oldTemp = nyTemp; + system.init(3); + // logger.info("dQdP: " + calcdQdP()); + // logger.info("dQdT: " + calcdQdT()); + nyPres = oldPres - (iterations) / (iterations + 10.0) * calcdQdP() / calcdQdPP(); + nyTemp = oldTemp - (iterations) / (iterations + 10.0) * calcdQdT() / calcdQdTT(); + // logger.info("volume: " + system.getVolume()); + // logger.info("inernaleng: " + system.getInternalEnergy()); + system.setPressure(nyPres); + system.setTemperature(nyTemp); + tpFlash.run(); + // logger.info("error1: " + Math.abs((nyPres - oldPres) / (nyPres))); + // logger.info("error2: " + Math.abs((nyTemp - oldTemp) / (nyTemp))); + // logger.info("inernaleng: " + system.getInternalEnergy()); + } while (Math.abs((nyPres - oldPres) / (nyPres)) + + Math.abs((nyTemp - oldTemp) / (nyTemp)) > 1e-9 && iterations < 1000); + return nyPres; + } + + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + // logger.info("internaleng: " + system.getInternalEnergy()); + // logger.info("volume: " + system.getVolume()); + solveQ(); + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 55, 50.0); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 31.0); + testSystem.addComponent("ethane", 4.0); + testSystem.addComponent("n-heptane", 0.2); + testSystem.init(0); + try { + testOps.TPflash(); + testSystem.display(); + + double energy = testSystem.getEnthalpy() * 1.1; + double volume = testSystem.getVolume() * 0.9; + + testOps.VHflash(volume, energy); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/VSflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/VSflash.java index 6152df7763..0ad968e16c 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/VSflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/VSflash.java @@ -13,174 +13,165 @@ * @version $Id: $Id */ public class VSflash extends Flash { - private static final long serialVersionUID = 1000; - - double Sspec = 0; - double Vspec = 0; - Flash tpFlash; - - /** - *

- * Constructor for VSflash. - *

- */ - public VSflash() {} - - /** - *

- * Constructor for VSflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Vspec a double - * @param Sspec a double - */ - public VSflash(SystemInterface system, double Vspec, double Sspec) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Sspec = Sspec; - this.Vspec = Vspec; - // System.out.println("enthalpy " + Hspec); - // System.out.println("volume " + Vspec); + private static final long serialVersionUID = 1000; + + double Sspec = 0; + double Vspec = 0; + Flash tpFlash; + + /** + *

+ * Constructor for VSflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Vspec a double + * @param Sspec a double + */ + public VSflash(SystemInterface system, double Vspec, double Sspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Sspec = Sspec; + this.Vspec = Vspec; + // System.out.println("enthalpy " + Hspec); + // System.out.println("volume " + Vspec); + } + + /** + *

+ * calcdQdPP. + *

+ * + * @return a double + */ + public double calcdQdPP() { + double dQdVV = (system.getVolume() - Vspec) + / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()) + + system.getPressure() * (system.getdVdPtn()) + / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()); + + return dQdVV; + } + + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + if (system.getNumberOfPhases() == 1) { + return -system.getPhase(0).getCp() / system.getTemperature() + / neqsim.thermo.ThermodynamicConstantsInterface.R; } - /** - *

- * calcdQdPP. - *

- * - * @return a double - */ - public double calcdQdPP() { - double dQdVV = (system.getVolume() - Vspec) - / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()) - + system.getPressure() * (system.getdVdPtn()) - / (neqsim.thermo.ThermodynamicConstantsInterface.R - * system.getTemperature()); - - return dQdVV; + double dQdTT = 0.0; + for (int i = 0; i < system.getNumberOfPhases(); i++) { + dQdTT -= system.getPhase(i).getCp() / system.getPhase(i).getTemperature(); } - - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - if (system.getNumberOfPhases() == 1) { - return -system.getPhase(0).getCp() / system.getTemperature() - / neqsim.thermo.ThermodynamicConstantsInterface.R; - } - - double dQdTT = 0.0; - for (int i = 0; i < system.getNumberOfPhases(); i++) { - dQdTT -= system.getPhase(i).getCp() / system.getPhase(i).getTemperature(); - } - return dQdTT / neqsim.thermo.ThermodynamicConstantsInterface.R; - } - - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQdT = - (Sspec - system.getEntropy()) / (neqsim.thermo.ThermodynamicConstantsInterface.R); - return dQdT; - } - - /** - *

- * calcdQdP. - *

- * - * @return a double - */ - public double calcdQdP() { - double dQdP = system.getPressure() * (system.getVolume() - Vspec) - / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()); - return dQdP; - } - - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldPres = system.getPressure(), nyPres = system.getPressure(), - nyTemp = system.getTemperature(), oldTemp = system.getTemperature(); - double iterations = 1; - // logger.info("Sspec: " + Sspec); - do { - iterations++; - oldPres = nyPres; - oldTemp = nyTemp; - system.init(3); - // logger.info("Sentr: " + system.getEntropy()); - // logger.info("calcdQdT(): " + calcdQdT()); - // logger.info("dQdP: " + calcdQdP()); - // logger.info("dQdT: " + calcdQdT()); - nyPres = oldPres - (iterations) / (iterations + 10.0) * calcdQdP() / calcdQdPP(); - nyTemp = oldTemp - (iterations) / (iterations + 10.0) * calcdQdT() / calcdQdTT(); - // logger.info("volume: " + system.getVolume()); - // logger.info("inernaleng: " + system.getInternalEnergy()); - system.setPressure(nyPres); - system.setTemperature(nyTemp); - tpFlash.run(); - // logger.info("error1: " + (Math.abs((nyPres - oldPres) / (nyPres)))); - // logger.info("error2: " + (Math.abs((nyTemp - oldTemp) / (nyTemp)))); - } while (Math.abs((nyPres - oldPres) / (nyPres)) - + Math.abs((nyTemp - oldTemp) / (nyTemp)) > 1e-9 && iterations < 1000); - return nyPres; - } - - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - solveQ(); - } - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 55, 50.0); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 31.0); - testSystem.addComponent("ethane", 4.0); - // testSystem.addComponent("n-heptane", 0.2); - testSystem.init(0); - try { - testOps.TPflash(); - testSystem.display(); - - double entropy = testSystem.getEntropy() * 1.2; - double volume = testSystem.getVolume() * 1.1; - - testOps.VSflash(volume, entropy); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + return dQdTT / neqsim.thermo.ThermodynamicConstantsInterface.R; + } + + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQdT = (Sspec - system.getEntropy()) / (neqsim.thermo.ThermodynamicConstantsInterface.R); + return dQdT; + } + + /** + *

+ * calcdQdP. + *

+ * + * @return a double + */ + public double calcdQdP() { + double dQdP = system.getPressure() * (system.getVolume() - Vspec) + / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()); + return dQdP; + } + + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldPres = system.getPressure(), nyPres = system.getPressure(), + nyTemp = system.getTemperature(), oldTemp = system.getTemperature(); + double iterations = 1; + // logger.info("Sspec: " + Sspec); + do { + iterations++; + oldPres = nyPres; + oldTemp = nyTemp; + system.init(3); + // logger.info("Sentr: " + system.getEntropy()); + // logger.info("calcdQdT(): " + calcdQdT()); + // logger.info("dQdP: " + calcdQdP()); + // logger.info("dQdT: " + calcdQdT()); + nyPres = oldPres - (iterations) / (iterations + 10.0) * calcdQdP() / calcdQdPP(); + nyTemp = oldTemp - (iterations) / (iterations + 10.0) * calcdQdT() / calcdQdTT(); + // logger.info("volume: " + system.getVolume()); + // logger.info("inernaleng: " + system.getInternalEnergy()); + system.setPressure(nyPres); + system.setTemperature(nyTemp); + tpFlash.run(); + // logger.info("error1: " + (Math.abs((nyPres - oldPres) / (nyPres)))); + // logger.info("error2: " + (Math.abs((nyTemp - oldTemp) / (nyTemp)))); + } while (Math.abs((nyPres - oldPres) / (nyPres)) + + Math.abs((nyTemp - oldTemp) / (nyTemp)) > 1e-9 && iterations < 1000); + return nyPres; + } + + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + solveQ(); + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 55, 50.0); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 31.0); + testSystem.addComponent("ethane", 4.0); + // testSystem.addComponent("n-heptane", 0.2); + testSystem.init(0); + try { + testOps.TPflash(); + testSystem.display(); + + double entropy = testSystem.getEntropy() * 1.2; + double volume = testSystem.getVolume() * 1.1; + + testOps.VSflash(volume, entropy); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/VUflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/VUflash.java index 02839abab9..bc6bc4e2f3 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/VUflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/VUflash.java @@ -3,6 +3,7 @@ * * Created on 8. mars 2001, 10:56 */ + package neqsim.thermodynamicOperations.flashOps; import neqsim.thermo.system.SystemInterface; @@ -16,89 +17,83 @@ * @version $Id: $Id */ public class VUflash extends Flash { - private static final long serialVersionUID = 1000; - - double Uspec = 0; - double Vspec = 0; - Flash pHFlash; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for VUflash. - *

- */ - public VUflash() {} + double Uspec = 0; + double Vspec = 0; + Flash pHFlash; - /** - *

- * Constructor for VUflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Vspec a double - * @param Uspec a double - */ - public VUflash(SystemInterface system, double Vspec, double Uspec) { - this.system = system; - this.pHFlash = new PHflash(system, Uspec, 0); - this.Uspec = Uspec; - this.Vspec = Vspec; - // System.out.println("enthalpy " + Hspec); - // System.out.println("volume " + Vspec); - } + /** + *

+ * Constructor for VUflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Vspec a double + * @param Uspec a double + */ + public VUflash(SystemInterface system, double Vspec, double Uspec) { + this.system = system; + this.pHFlash = new PHflash(system, Uspec, 0); + this.Uspec = Uspec; + this.Vspec = Vspec; + // System.out.println("enthalpy " + Hspec); + // System.out.println("volume " + Vspec); + } - /** {@inheritDoc} */ - @Override - public void run() { - // double oldVol = system.getVolume(); - double newVol = system.getVolume(); - // double pNew = system.getPressure(); - // double pOld = system.getPressure(); - // double pOldOld = 0.0; - double err = 0.0; - int iterations = 0; - // System.out.println("enthalpy start " + system.getEnthalpy()); - // double dPdV = 0.0; - double wallHeat = 0.0; - for (int i = 0; i < 21; i++) { - wallHeat = 0 * i / 20.0 * 400.0 * 1295.0 * 1000.0 * (293.15 - system.getTemperature()); - // System.out.println("Hwall " + wallHeat + " i " + i); - iterations = 1; - do { - iterations++; + /** {@inheritDoc} */ + @Override + public void run() { + // double oldVol = system.getVolume(); + double newVol = system.getVolume(); + // double pNew = system.getPressure(); + // double pOld = system.getPressure(); + // double pOldOld = 0.0; + double err = 0.0; + int iterations = 0; + // System.out.println("enthalpy start " + system.getEnthalpy()); + // double dPdV = 0.0; + double wallHeat = 0.0; + for (int i = 0; i < 21; i++) { + wallHeat = 0 * i / 20.0 * 400.0 * 1295.0 * 1000.0 * (293.15 - system.getTemperature()); + // System.out.println("Hwall " + wallHeat + " i " + i); + iterations = 1; + do { + iterations++; - this.pHFlash = new PHflash(system, - Uspec + wallHeat + system.getPressure() * system.getVolume(), 0); - // System.out.println("Hspec " + Hspec); - this.pHFlash.run(); - // pOldOld = pOld; - // pOld = system.getPressure(); - // oldVol = newVol; - newVol = system.getVolume(); + this.pHFlash = + new PHflash(system, Uspec + wallHeat + system.getPressure() * system.getVolume(), 0); + // System.out.println("Hspec " + Hspec); + this.pHFlash.run(); + // pOldOld = pOld; + // pOld = system.getPressure(); + // oldVol = newVol; + newVol = system.getVolume(); - err = (newVol - Vspec) / Vspec; + err = (newVol - Vspec) / Vspec; - // System.out.println("err................................................................................ - // " + err); - if (iterations < -5) { - system.setPressure(system.getPressure() + err / 10.0); - } else { - // System.out.println("pres " + (system.getPressure()+0.1*dPdV*(newVol-Vspec))); - system.setPressure(system.getPressure() - - 0.6 * 1.0 / system.getdVdPtn() * (newVol - Vspec));// system.getdVdPtn()*(newVol-Vspec));//dPdV*(newVol-Vspec)); - } - // pNew = system.getPressure(); - // dPdV = (pOld - pOldOld) / (newVol - oldVol); - // System.out.println("pressure " + system.getPressure()); - } while ((Math.abs(err) > 1e-10 && iterations < 1000) || iterations < 7); + // System.out.println("err................................................................................ + // " + err); + if (iterations < -5) { + system.setPressure(system.getPressure() + err / 10.0); + } else { + // System.out.println("pres " + (system.getPressure()+0.1*dPdV*(newVol-Vspec))); + system.setPressure( + system.getPressure() - 0.6 * 1.0 / system.getdVdPtn() * (newVol - Vspec)); // system.getdVdPtn()*(newVol-Vspec)); + // //dPdV*(newVol-Vspec)); } - // System.out.println("enthalpy end " + system.getEnthalpy()); - // System.out.println("iterations " + iterations); + // pNew = system.getPressure(); + // dPdV = (pOld - pOldOld) / (newVol - oldVol); + // System.out.println("pressure " + system.getPressure()); + } while ((Math.abs(err) > 1e-10 && iterations < 1000) || iterations < 7); } + // System.out.println("enthalpy end " + system.getEnthalpy()); + // System.out.println("iterations " + iterations); + } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/VUflashQfunc.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/VUflashQfunc.java index 0f4539329c..97b995fded 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/VUflashQfunc.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/VUflashQfunc.java @@ -3,6 +3,7 @@ * * Created on 8. mars 2001, 10:56 */ + package neqsim.thermodynamicOperations.flashOps; import org.apache.logging.log4j.LogManager; @@ -20,167 +21,162 @@ * @version $Id: $Id */ public class VUflashQfunc extends Flash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(VUflashQfunc.class); - - double Vspec = 0, Uspec = 0.0; - Flash tpFlash; - - /** - *

- * Constructor for VUflashQfunc. - *

- */ - public VUflashQfunc() {} - - /** - *

- * Constructor for VUflashQfunc. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Vspec a double - * @param Uspec a double - */ - public VUflashQfunc(SystemInterface system, double Vspec, double Uspec) { - this.system = system; - this.tpFlash = new TPflash(system); - this.Vspec = Vspec; - this.Uspec = Uspec; - } - - /** - *

- * calcdQdPP. - *

- * - * @return a double - */ - public double calcdQdPP() { - double dQdVV = (system.getVolume() - Vspec) - / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()) - + system.getPressure() * (system.getdVdPtn()) - / (neqsim.thermo.ThermodynamicConstantsInterface.R - * system.getTemperature()); - return dQdVV; - } - - /** - *

- * calcdQdTT. - *

- * - * @return a double - */ - public double calcdQdTT() { - double dQdTT = -system.getCp() - / (system.getTemperature() * neqsim.thermo.ThermodynamicConstantsInterface.R) - - calcdQdT() / system.getTemperature(); - return dQdTT; - } - - /** - *

- * calcdQdT. - *

- * - * @return a double - */ - public double calcdQdT() { - double dQdT = (Uspec + system.getPressure() * Vspec - system.getEnthalpy()) - / (system.getTemperature() * neqsim.thermo.ThermodynamicConstantsInterface.R); - return dQdT; - } - - /** - *

- * calcdQdP. - *

- * - * @return a double - */ - public double calcdQdP() { - double dQdP = system.getPressure() * (system.getVolume() - Vspec) - / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()); - return dQdP; - } - - /** - *

- * solveQ. - *

- * - * @return a double - */ - public double solveQ() { - double oldPres = system.getPressure(), nyPres = system.getPressure(), - nyTemp = system.getTemperature(), oldTemp = system.getTemperature(); - double iterations = 1; - // logger.info("Vspec: " + Vspec); - // logger.info("Uspec: " + Uspec); - do { - iterations++; - oldPres = nyPres; - oldTemp = nyTemp; - system.init(3); - // logger.info("dQdP: " + calcdQdP()); - // logger.info("dQdT: " + calcdQdT()); - nyPres = oldPres - (iterations) / (iterations + 10.0) * calcdQdP() / calcdQdPP(); - nyTemp = oldTemp - (iterations) / (iterations + 10.0) * calcdQdT() / calcdQdTT(); - // logger.info("volume: " + system.getVolume()); - // logger.info("inernaleng: " + system.getInternalEnergy()); - system.setPressure(nyPres); - system.setTemperature(nyTemp); - tpFlash.run(); - // logger.info("error1: " + Math.abs((nyPres - oldPres) / (nyPres))); - // logger.info("error2: " + Math.abs((nyTemp - oldTemp) / (nyTemp))); - // logger.info("inernaleng: " + system.getInternalEnergy()); - } while (Math.abs((nyPres - oldPres) / (nyPres)) - + Math.abs((nyTemp - oldTemp) / (nyTemp)) > 1e-9 && iterations < 1000); - return nyPres; - } - - /** {@inheritDoc} */ - @Override - public void run() { - tpFlash.run(); - // logger.info("internaleng: " + system.getInternalEnergy()); - // logger.info("volume: " + system.getVolume()); - solveQ(); - } - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 55, 50.0); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 31.0); - testSystem.addComponent("ethane", 4.0); - testSystem.addComponent("n-heptane", 0.2); - testSystem.init(0); - try { - testOps.TPflash(); - testSystem.display(); - - double energy = testSystem.getInternalEnergy() * 1.1; - double volume = testSystem.getVolume() * 1.2; - - testOps.VUflash(volume, energy); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(VUflashQfunc.class); + + double Vspec = 0; + double Uspec = 0.0; + Flash tpFlash; + + /** + *

+ * Constructor for VUflashQfunc. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Vspec a double + * @param Uspec a double + */ + public VUflashQfunc(SystemInterface system, double Vspec, double Uspec) { + this.system = system; + this.tpFlash = new TPflash(system); + this.Vspec = Vspec; + this.Uspec = Uspec; + } + + /** + *

+ * calcdQdPP. + *

+ * + * @return a double + */ + public double calcdQdPP() { + double dQdVV = (system.getVolume() - Vspec) + / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()) + + system.getPressure() * (system.getdVdPtn()) + / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()); + return dQdVV; + } + + /** + *

+ * calcdQdTT. + *

+ * + * @return a double + */ + public double calcdQdTT() { + double dQdTT = -system.getCp() + / (system.getTemperature() * neqsim.thermo.ThermodynamicConstantsInterface.R) + - calcdQdT() / system.getTemperature(); + return dQdTT; + } + + /** + *

+ * calcdQdT. + *

+ * + * @return a double + */ + public double calcdQdT() { + double dQdT = (Uspec + system.getPressure() * Vspec - system.getEnthalpy()) + / (system.getTemperature() * neqsim.thermo.ThermodynamicConstantsInterface.R); + return dQdT; + } + + /** + *

+ * calcdQdP. + *

+ * + * @return a double + */ + public double calcdQdP() { + double dQdP = system.getPressure() * (system.getVolume() - Vspec) + / (neqsim.thermo.ThermodynamicConstantsInterface.R * system.getTemperature()); + return dQdP; + } + + /** + *

+ * solveQ. + *

+ * + * @return a double + */ + public double solveQ() { + double oldPres = system.getPressure(); + double nyPres = system.getPressure(); + double nyTemp = system.getTemperature(); + double oldTemp = system.getTemperature(); + double iterations = 1; + // logger.info("Vspec: " + Vspec); + // logger.info("Uspec: " + Uspec); + do { + iterations++; + oldPres = nyPres; + oldTemp = nyTemp; + system.init(3); + // logger.info("dQdP: " + calcdQdP()); + // logger.info("dQdT: " + calcdQdT()); + nyPres = oldPres - (iterations) / (iterations + 10.0) * calcdQdP() / calcdQdPP(); + nyTemp = oldTemp - (iterations) / (iterations + 10.0) * calcdQdT() / calcdQdTT(); + // logger.info("volume: " + system.getVolume()); + // logger.info("inernaleng: " + system.getInternalEnergy()); + system.setPressure(nyPres); + system.setTemperature(nyTemp); + tpFlash.run(); + // logger.info("error1: " + Math.abs((nyPres - oldPres) / (nyPres))); + // logger.info("error2: " + Math.abs((nyTemp - oldTemp) / (nyTemp))); + // logger.info("inernaleng: " + system.getInternalEnergy()); + } while (Math.abs((nyPres - oldPres) / (nyPres)) + + Math.abs((nyTemp - oldTemp) / (nyTemp)) > 1e-9 && iterations < 1000); + return nyPres; + } + + /** {@inheritDoc} */ + @Override + public void run() { + tpFlash.run(); + // logger.info("internaleng: " + system.getInternalEnergy()); + // logger.info("volume: " + system.getVolume()); + solveQ(); + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 55, 50.0); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 31.0); + testSystem.addComponent("ethane", 4.0); + testSystem.addComponent("n-heptane", 0.2); + testSystem.init(0); + try { + testOps.TPflash(); + testSystem.display(); + + double energy = testSystem.getInternalEnergy() * 1.1; + double volume = testSystem.getVolume() * 1.2; + + testOps.VUflash(volume, energy); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/calcIonicComposition.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/calcIonicComposition.java deleted file mode 100644 index 46d0b5994b..0000000000 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/calcIonicComposition.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * calcIonicComposition.java - * - * Created on 8. mars 2001, 10:56 - */ -package neqsim.thermodynamicOperations.flashOps; - -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; -import neqsim.thermo.system.SystemInterface; - -/** - *

- * calcIonicComposition class. - *

- * - * @author even solbraa - * @version $Id: $Id - */ -public class calcIonicComposition extends Flash { - private static final long serialVersionUID = 1000; - - int phaseNumber; - String[][] resultTable = null; - - /** - *

- * Constructor for calcIonicComposition. - *

- */ - public calcIonicComposition() {} - - /** - *

- * Constructor for calcIonicComposition. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param phase a int - */ - public calcIonicComposition(SystemInterface system, int phase) { - this.system = system; - phaseNumber = phase; - } - - /** {@inheritDoc} */ - @Override - public void run() { - resultTable = new String[system.getPhase(0).getNumberOfComponents() + 2][4]; - resultTable[0][0] = "Component"; - resultTable[0][1] = "mmol/kgSolvent"; - resultTable[0][2] = "mg/kgSolvent"; - resultTable[0][3] = "Act.Coef"; - DecimalFormatSymbols symbols = new DecimalFormatSymbols(); - DecimalFormat nf = new DecimalFormat(); - symbols.setDecimalSeparator('.'); - nf.setDecimalFormatSymbols(symbols); - nf.setMaximumFractionDigits(5); - nf.applyPattern("#.#####E0"); - int ionNumber = 0; - for (int i = 0; i < system.getPhase(phaseNumber).getNumberOfComponents(); i++) { - // if (system.getPhase(phaseNumber).getComponent(i).isIsIon()) { - resultTable[ionNumber + 1][0] = - system.getPhase(phaseNumber).getComponent(i).getComponentName(); - resultTable[ionNumber + 1][1] = Double.valueOf(nf.format(system.getPhase(phaseNumber) - .getComponent(i).getNumberOfMolesInPhase() - / (system.getPhase(phaseNumber).getComponent("water").getNumberOfMolesInPhase() - * system.getPhase(phaseNumber).getComponent("water").getMolarMass()) - * 1000)).toString(); - resultTable[ionNumber + 1][2] = Double.valueOf(nf.format(system.getPhase(phaseNumber) - .getComponent(i).getNumberOfMolesInPhase() - * system.getPhase(phaseNumber).getComponent(i).getMolarMass() - / (system.getPhase(phaseNumber).getComponent("water").getNumberOfMolesInPhase() - * system.getPhase(phaseNumber).getComponent("water").getMolarMass()) - * 1e6)).toString(); - resultTable[ionNumber + 1][3] = Double - .valueOf( - nf.format(system.getPhase(phaseNumber) - .getActivityCoefficient(i, system.getPhase(phaseNumber) - .getComponent("water").getComponentNumber()))) - .toString(); - - ionNumber++; - // } - } - } - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } - - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return resultTable; - } -} diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/dTPflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/dTPflash.java index eabd37aa77..bdfdb6b767 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/dTPflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/dTPflash.java @@ -3,6 +3,7 @@ * * Created on 2. oktober 2000, 22:26 */ + package neqsim.thermodynamicOperations.flashOps; import org.apache.logging.log4j.LogManager; @@ -18,83 +19,73 @@ * @version $Id: $Id */ public class dTPflash extends TPflash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(dTPflash.class); - String[] flashComp = null; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(dTPflash.class); - /** - *

- * Constructor for dTPflash. - *

- */ - public dTPflash() {} + String[] flashComp = null; - /** - *

- * Constructor for dTPflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param comps an array of {@link java.lang.String} objects - */ - public dTPflash(SystemInterface system, String[] comps) { - this.system = system; - this.flashComp = comps; - } + /** + *

+ * Constructor for dTPflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param comps an array of {@link java.lang.String} objects + */ + public dTPflash(SystemInterface system, String[] comps) { + this.system = system; + this.flashComp = comps; + } - /** {@inheritDoc} */ - @Override - public void run() { - iterations = 0; - double diff = 0.0; - // double fracdiff = 0.0; + /** {@inheritDoc} */ + @Override + public void run() { + iterations = 0; + double diff = 0.0; + // double fracdiff = 0.0; - // system.setBeta(0.5); - do { - diff = 0.0; - // fracdiff = 0.0; - iterations++; - system.init(1); - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - // boolean hasgot = false; - for (int j = 0; j < flashComp.length; j++) { - if (flashComp[j].equals(system.getPhase(0).getComponent(i).getName())) { - diff += Math.abs((system.getPhase(1).getComponent(i).getx() - * system.getPhase(1).getComponent(i).getFugacityCoefficient() - * system.getPhase(1).getPressure()) - - (system.getPhase(0).getComponent(i).getx() - * system.getPhase(0).getComponent(i) - .getFugacityCoefficient() - * system.getPhase(0).getPressure())); - system.getPhase(1).getComponent(i) - .setx(system.getPhase(1).getComponent(i).getx() - * (system.getPhase(0).getComponent(i).getx() - * system.getPhase(0).getComponent(i) - .getFugacityCoefficient() - * system.getPhase(0).getPressure()) - / (system.getPhase(1).getComponent(i).getx() - * system.getPhase(1).getComponent(i) - .getFugacityCoefficient() - * system.getPhase(1).getPressure())); + // system.setBeta(0.5); + do { + diff = 0.0; + // fracdiff = 0.0; + iterations++; + system.init(1); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + // boolean hasgot = false; + for (int j = 0; j < flashComp.length; j++) { + if (flashComp[j].equals(system.getPhase(0).getComponent(i).getName())) { + diff += Math.abs((system.getPhase(1).getComponent(i).getx() + * system.getPhase(1).getComponent(i).getFugacityCoefficient() + * system.getPhase(1).getPressure()) + - (system.getPhase(0).getComponent(i).getx() + * system.getPhase(0).getComponent(i).getFugacityCoefficient() + * system.getPhase(0).getPressure())); + system.getPhase(1).getComponent(i).setx(system.getPhase(1).getComponent(i).getx() + * (system.getPhase(0).getComponent(i).getx() + * system.getPhase(0).getComponent(i).getFugacityCoefficient() + * system.getPhase(0).getPressure()) + / (system.getPhase(1).getComponent(i).getx() + * system.getPhase(1).getComponent(i).getFugacityCoefficient() + * system.getPhase(1).getPressure())); - // fracdiff += system.getPhase(1).getComponent(i).getz() - - // system.getPhase(1).getComponent(i).getx(); + // fracdiff += system.getPhase(1).getComponent(i).getz() - + // system.getPhase(1).getComponent(i).getx(); - // hasgot = true; - // logger.info("x " + system.getPhase(1).getComponent(i).getx()); - } - } - // if(!hasgot) system.getPhase(1).getComponent(i).setx(1e-16); - } + // hasgot = true; + // logger.info("x " + system.getPhase(1).getComponent(i).getx()); + } + } + // if(!hasgot) system.getPhase(1).getComponent(i).setx(1e-16); + } - // system.setBeta(0.5+fracdiff); + // system.setBeta(0.5+fracdiff); - system.getPhase(1).normalize(); - logger.info("diff " + diff); - } while (diff > 1e-10 && iterations < 1000); + system.getPhase(1).normalize(); + logger.info("diff " + diff); + } while (diff > 1e-10 && iterations < 1000); - if (diff > 1e-10) { - logger.error("not able to converge dPflash....continuing...."); - } + if (diff > 1e-10) { + logger.error("not able to converge dPflash....continuing...."); } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/ConstantDutyFlashInterface.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/ConstantDutyFlashInterface.java new file mode 100644 index 0000000000..c8517bcc84 --- /dev/null +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/ConstantDutyFlashInterface.java @@ -0,0 +1,22 @@ +package neqsim.thermodynamicOperations.flashOps.saturationOps; + +import neqsim.thermodynamicOperations.OperationInterface; + +/** + *

+ * ConstantDutyFlashInterface interface. + *

+ * + * @author Even Solbraa + * @version $Id: $Id + */ +public interface ConstantDutyFlashInterface extends OperationInterface { + /** + *

+ * isSuperCritical. + *

+ * + * @return a boolean + */ + public boolean isSuperCritical(); +} diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FreezeOut.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FreezeOut.java index 5cd955a93d..dc0c4aea58 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FreezeOut.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FreezeOut.java @@ -6,6 +6,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkSchwartzentruberEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -19,207 +20,205 @@ * @version $Id: $Id */ public class FreezeOut extends constantDutyTemperatureFlash - implements ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(FreezeOut.class); - public double[] FCompTemp = new double[10]; - public String[] FCompNames = new String[10]; - public boolean noFreezeFlash = true; - - /** - *

- * Constructor for FreezeOut. - *

- */ - public FreezeOut() {} - - /** - *

- * Constructor for FreezeOut. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public FreezeOut(SystemInterface system) { - super(system); - } - - /** {@inheritDoc} */ - @Override - public void run() { - SystemInterface testSystem = system; - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - // double[][] Fug = new double[12][35]; - // double[][] Fugrel = new double[2][40]; - int iterations = 0; - double newTemp = 0, OldTemp = 0; - double FugRatio; - double T2low = 0, T2high = 0; - boolean Left = true, half = false; - double SolidFug = 0.0, FluidFug = 0.0, temp = 0.0, pres = 0.0, Pvapsolid = 0.0; - double solvol = 0.0, soldens = 0.0, trpTemp = 0.0; - boolean CCequation = true; - boolean noFreezeliq = true; - boolean SolidForms = true; - double maximum = 0; - - for (int k = 0; k < testSystem.getPhase(0).getNumberOfComponents(); k++) { - FCompNames[k] = testSystem.getPhase(0).getComponent(k).getComponentName(); - if (testSystem.getPhase(0).getComponent(k).doSolidCheck()) { - trpTemp = testSystem.getPhases()[0].getComponents()[k].getTriplePointTemperature(); - if (noFreezeFlash) { - testSystem.setTemperature(trpTemp); - logger.info("Starting at Triple point temperature " - + system.getPhase(0).getComponent(k).getComponentName()); - } else { - testSystem.setTemperature(FCompTemp[k]); - logger.info("starting at Temperature " + system.getTemperature()); - } - - SystemInterface testSystem2 = new SystemSrkSchwartzentruberEos(216, 1); - ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); - testSystem2.addComponent(testSystem.getPhase(0).getComponent(k).getComponentName(), - 1); - testSystem2.setPhaseType(0, 1); - noFreezeliq = true; - SolidFug = 0.0; - FluidFug = 0.0; - SolidForms = true; - temp = 0.0; - Pvapsolid = 0.0; - iterations = 0; - half = false; - T2high = trpTemp + 0.1; - if (Math.abs(testSystem.getPhases()[0].getComponents()[k].getHsub()) < 1) { - CCequation = false; - } - do { - iterations++; - logger.info("-------------"); - temp = testSystem.getTemperature(); - logger.info("temperature " + temp); - if (temp > trpTemp + 0.01) { - temp = trpTemp; - } - if (CCequation) { - Pvapsolid = testSystem.getPhase(0).getComponent(k) - .getCCsolidVaporPressure(temp); - } else { - Pvapsolid = - testSystem.getPhase(0).getComponent(k).getSolidVaporPressure(temp); - } - soldens = testSystem.getPhase(0).getComponent(k) - .getPureComponentSolidDensity(temp) * 1000; - if (soldens > 2000) { - soldens = 1000; - } - solvol = 1.0 / soldens * testSystem.getPhase(0).getComponent(k).getMolarMass(); - - logger.info("solid density " + soldens); - testSystem.setTemperature(temp); - testSystem2.setTemperature(temp); - testSystem2.setPressure(Pvapsolid); - testOps.TPflash(); - testOps2.TPflash(); - - logger.info("Partial pressure " + testSystem.getPhase(1).getComponent(k).getx() - * testSystem.getPressure()); - - SolidFug = Pvapsolid - * testSystem2.getPhase(0).getComponent(0).getFugacityCoefficient() - * Math.exp(solvol / (R * temp) * (pres - Pvapsolid)); - FluidFug = testSystem.getPhase(0).getFugacity(k); - - FugRatio = SolidFug / FluidFug; - - OldTemp = testSystem.getTemperature(); - logger.info("Temperature " + OldTemp); - logger.info("FugRatio solid/fluidphase " + FugRatio); - - if (1 < (FugRatio)) { - if (OldTemp < trpTemp / 3) { - SolidForms = false; - } - T2high = OldTemp; - - if (half) { - newTemp = 0.5 * (T2low + T2high); - } else if (1.5 > FugRatio) { - newTemp = OldTemp - trpTemp * 0.1; - } else if (1.5 < FugRatio) { - newTemp = OldTemp - trpTemp * 0.15; - } else { - newTemp = OldTemp - trpTemp * 0.15; - } - Left = false; - } else if (1 > (FugRatio)) { - if (Left && ((OldTemp - trpTemp) > 0)) { - noFreezeliq = false; - } - - T2low = OldTemp; - Left = true; - half = true; - newTemp = 0.5 * (T2low + T2high); - } - - testSystem.setTemperature(newTemp); - } // do lokke - while (((Math.abs(FugRatio - 1) >= 0.00001 && iterations < 100)) && noFreezeliq - && SolidForms); - logger.info("noFreezeliq: " + noFreezeliq + " SolidForms: " + SolidForms); - - if (noFreezeliq && SolidForms) { - testSystem.setTemperature(OldTemp); - FCompTemp[k] = OldTemp; - } else if (!noFreezeliq) { - testSystem.setTemperature(OldTemp); - FCompTemp[k] = OldTemp; - logger.error("Freezing Temperature not found"); - } else { - testSystem.setTemperature(1000); - FCompTemp[k] = OldTemp; - } - - logger.info("Iterations :" + iterations); - } // end Iflokke - } // end for - maximum = FCompTemp[0]; // start with the first value - for (int i = 1; i < FCompTemp.length; i++) { - if (FCompTemp[i] > maximum) { - maximum = FCompTemp[i]; // new maximum - } + implements ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(FreezeOut.class); + + public double[] FCompTemp = new double[10]; + public String[] FCompNames = new String[10]; + public boolean noFreezeFlash = true; + + /** + *

+ * Constructor for FreezeOut. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public FreezeOut(SystemInterface system) { + super(system); + } + + /** {@inheritDoc} */ + @Override + public void run() { + SystemInterface testSystem = system; + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + + // double[][] Fug = new double[12][35]; + // double[][] Fugrel = new double[2][40]; + int iterations = 0; + double newTemp = 0; + double OldTemp = 0; + double FugRatio; + double T2low = 0; + double T2high = 0; + boolean Left = true; + boolean half = false; + double SolidFug = 0.0; + double FluidFug = 0.0; + double temp = 0.0; + double pres = 0.0; + double Pvapsolid = 0.0; + double solvol = 0.0; + double soldens = 0.0; + double trpTemp = 0.0; + boolean CCequation = true; + boolean noFreezeliq = true; + boolean SolidForms = true; + double maximum = 0; + + for (int k = 0; k < testSystem.getPhase(0).getNumberOfComponents(); k++) { + FCompNames[k] = testSystem.getPhase(0).getComponent(k).getComponentName(); + if (testSystem.getPhase(0).getComponent(k).doSolidCheck()) { + trpTemp = testSystem.getPhases()[0].getComponents()[k].getTriplePointTemperature(); + if (noFreezeFlash) { + testSystem.setTemperature(trpTemp); + logger.info("Starting at Triple point temperature " + + system.getPhase(0).getComponent(k).getComponentName()); + } else { + testSystem.setTemperature(FCompTemp[k]); + logger.info("starting at Temperature " + system.getTemperature()); } - testSystem.setTemperature(maximum); - // this.printToFile("FrzOut"); - } // end Main + SystemInterface testSystem2 = new SystemSrkSchwartzentruberEos(216, 1); + ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); + testSystem2.addComponent(testSystem.getPhase(0).getComponent(k).getComponentName(), 1); + testSystem2.setPhaseType(0, PhaseType.byValue(1)); + noFreezeliq = true; + SolidFug = 0.0; + FluidFug = 0.0; + SolidForms = true; + temp = 0.0; + Pvapsolid = 0.0; + iterations = 0; + half = false; + T2high = trpTemp + 0.1; + if (Math.abs(testSystem.getPhases()[0].getComponents()[k].getHsub()) < 1) { + CCequation = false; + } + do { + iterations++; + logger.info("-------------"); + temp = testSystem.getTemperature(); + logger.info("temperature " + temp); + if (temp > trpTemp + 0.01) { + temp = trpTemp; + } + if (CCequation) { + Pvapsolid = testSystem.getPhase(0).getComponent(k).getCCsolidVaporPressure(temp); + } else { + Pvapsolid = testSystem.getPhase(0).getComponent(k).getSolidVaporPressure(temp); + } + soldens = + testSystem.getPhase(0).getComponent(k).getPureComponentSolidDensity(temp) * 1000; + if (soldens > 2000) { + soldens = 1000; + } + solvol = 1.0 / soldens * testSystem.getPhase(0).getComponent(k).getMolarMass(); + + logger.info("solid density " + soldens); + testSystem.setTemperature(temp); + testSystem2.setTemperature(temp); + testSystem2.setPressure(Pvapsolid); + testOps.TPflash(); + testOps2.TPflash(); + + logger.info("Partial pressure " + + testSystem.getPhase(1).getComponent(k).getx() * testSystem.getPressure()); + + SolidFug = Pvapsolid * testSystem2.getPhase(0).getComponent(0).getFugacityCoefficient() + * Math.exp(solvol / (R * temp) * (pres - Pvapsolid)); + FluidFug = testSystem.getPhase(0).getFugacity(k); + + FugRatio = SolidFug / FluidFug; + + OldTemp = testSystem.getTemperature(); + logger.info("Temperature " + OldTemp); + logger.info("FugRatio solid/fluidphase " + FugRatio); + + if (1 < (FugRatio)) { + if (OldTemp < trpTemp / 3) { + SolidForms = false; + } + T2high = OldTemp; + + if (half) { + newTemp = 0.5 * (T2low + T2high); + } else if (1.5 > FugRatio) { + newTemp = OldTemp - trpTemp * 0.1; + } else if (1.5 < FugRatio) { + newTemp = OldTemp - trpTemp * 0.15; + } else { + newTemp = OldTemp - trpTemp * 0.15; + } + Left = false; + } else if (1 > (FugRatio)) { + if (Left && ((OldTemp - trpTemp) > 0)) { + noFreezeliq = false; + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) { - for (int n = 0; n < system.getPhases()[0].getNumberOfComponents(); n++) { - name = name + "_" + system.getPhase(0).getComponent(n).getComponentName(); + T2low = OldTemp; + Left = true; + half = true; + newTemp = 0.5 * (T2low + T2high); + } + + testSystem.setTemperature(newTemp); + } while (((Math.abs(FugRatio - 1) >= 0.00001 && iterations < 100)) && noFreezeliq + && SolidForms); + logger.info("noFreezeliq: " + noFreezeliq + " SolidForms: " + SolidForms); + + if (noFreezeliq && SolidForms) { + testSystem.setTemperature(OldTemp); + FCompTemp[k] = OldTemp; + } else if (!noFreezeliq) { + testSystem.setTemperature(OldTemp); + FCompTemp[k] = OldTemp; + logger.error("Freezing Temperature not found"); + } else { + testSystem.setTemperature(1000); + FCompTemp[k] = OldTemp; } - String myFile = "/java/" + name + ".frz"; + logger.info("Iterations :" + iterations); + } // end Iflokke + } // end for + maximum = FCompTemp[0]; // start with the first value + for (int i = 1; i < FCompTemp.length; i++) { + if (FCompTemp[i] > maximum) { + maximum = FCompTemp[i]; // new maximum + } + } - try (PrintWriter pr_writer = new PrintWriter(new FileWriter(myFile, true))) { - pr_writer.println("name,freezeT,freezeP,z,iterations"); - pr_writer.flush(); + testSystem.setTemperature(maximum); + // this.printToFile("FrzOut"); + } // end Main - for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { - // print line to output file - pr_writer.println(FCompNames[k] + "," + java.lang.Double.toString(FCompTemp[k]) - + "," + system.getPressure() + "," + java.lang.Double - .toString(system.getPhases()[0].getComponents()[k].getz())); - pr_writer.flush(); - } - } catch (SecurityException e) { - logger.error("writeFile: caught security exception"); - } catch (IOException ioe) { - logger.error("writeFile: caught i/o exception"); - } + /** {@inheritDoc} */ + @Override + public void printToFile(String name) { + for (int n = 0; n < system.getPhases()[0].getNumberOfComponents(); n++) { + name = name + "_" + system.getPhase(0).getComponent(n).getComponentName(); + } + + String myFile = "/java/" + name + ".frz"; + + try (PrintWriter pr_writer = new PrintWriter(new FileWriter(myFile, true))) { + pr_writer.println("name,freezeT,freezeP,z,iterations"); + pr_writer.flush(); + + for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { + // print line to output file + pr_writer.println(FCompNames[k] + "," + java.lang.Double.toString(FCompTemp[k]) + "," + + system.getPressure() + "," + + java.lang.Double.toString(system.getPhases()[0].getComponents()[k].getz())); + pr_writer.flush(); + } + } catch (SecurityException ex) { + logger.error("writeFile: caught security exception"); + } catch (IOException ioe) { + logger.error("writeFile: caught i/o exception"); } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FugTestConstP.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FugTestConstP.java index 05489d77e6..98676e2491 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FugTestConstP.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/FugTestConstP.java @@ -4,6 +4,7 @@ import org.apache.logging.log4j.Logger; import neqsim.dataPresentation.JFreeChart.graph2b; import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkSchwartzentruberEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -17,178 +18,175 @@ * @version $Id: $Id */ public class FugTestConstP extends constantDutyTemperatureFlash - implements ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(FugTestConstP.class); - public double temp = 0.0, pres = 0.0; - public SystemInterface testSystem, testSystem2; - public ThermodynamicOperations testOps, testOps2; - public int compNumber = 0; - public String compName; - public boolean compNameGiven = false; - - /** - *

- * Constructor for FugTestConstP. - *

- */ - public FugTestConstP() {} - - /** - *

- * Constructor for FugTestConstP. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public FugTestConstP(SystemInterface system) { - this.testSystem = system; - this.testOps = new ThermodynamicOperations(testSystem); - this.pres = testSystem.getPressure(); - } - - /** - *

- * Constructor for FugTestConstP. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param pres a double - */ - public FugTestConstP(SystemInterface system, double pres) { - this.testSystem = system; - this.testOps = new ThermodynamicOperations(testSystem); - this.pres = pres; - } - - // initializing reference system for pure vapor fugacity - /** - *

- * initTestSystem2. - *

- * - * @param K a int - */ - public void initTestSystem2(int K) { - this.testSystem2 = new SystemSrkSchwartzentruberEos(temp, pres); - this.testSystem2.addComponent(compName, 1); - this.testSystem2.setPhaseType(0, 1); - this.testOps2 = new ThermodynamicOperations(testSystem2); - } - - /** {@inheritDoc} */ - @Override - public void run() { - double SolidFug = 0.0, Pvapsolid = 0.0, SolVapFugCoeff = 0.0; - // double dfugdt = 0.0; - double solvol = 0.0, soldens = 0.0, trpTemp = 0.0; - boolean CCequation = true; - double[][] Fug = new double[4][20]; - double[][] Fugrel = new double[2][20]; - // int vapPhase = 0; - // double Xivapor; - - for (int k = 0; k < testSystem.getPhases()[0].getNumberOfComponents(); k++) { - if (testSystem.getPhase(0).getComponent(k).doSolidCheck()) { - this.compName = testSystem.getPhase(0).getComponent(k).getComponentName(); - trpTemp = testSystem.getPhases()[0].getComponents()[k].getTriplePointTemperature(); - this.initTestSystem2(k); - if (Math.abs(testSystem.getPhases()[0].getComponents()[k].getHsub()) < 0.000001) { - CCequation = false; - } - for (int i = 0; i < 20; i++) { - logger.info("--- calculating --- " + compName + " at "); - temp = trpTemp + 2 - i * trpTemp / 40; - testSystem.setTemperature(temp); - testSystem2.setTemperature(temp); - logger.info("temperature " + temp); - if (temp > trpTemp + 0.1) { - temp = trpTemp; - } - // Vapor pressure estiamtion - if (CCequation) { - Pvapsolid = testSystem.getPhase(0).getComponent(k) - .getCCsolidVaporPressure(temp); - logger.info("pvap solid CC " + Pvapsolid); - } else { - Pvapsolid = - testSystem.getPhase(0).getComponent(k).getSolidVaporPressure(temp); - logger.info("pvap solid Antonie " + Pvapsolid); - } - soldens = testSystem.getPhase(0).getComponent(k) - .getPureComponentSolidDensity(temp) * 1000; - if (soldens > 2000) { - soldens = 1000; - } - logger.info("Solid_vapour_____solid density" + soldens); - solvol = 1.0 / soldens * testSystem.getPhase(0).getComponent(k).getMolarMass(); - SolidFug = Pvapsolid * Math.exp(solvol / (R * temp) * (pres - Pvapsolid)); - - // testSystem2.setTemperature(temp); - testSystem2.setPressure(Pvapsolid); - testOps.TPflash(); - testOps2.TPflash(); - - SolVapFugCoeff = - testSystem2.getPhase(0).getComponent(0).getFugacityCoefficient(); - - Fug[3][i] = testSystem.getPhase(0).getFugacity(k); - Fug[1][i] = SolidFug * SolVapFugCoeff; - Fug[0][i] = testSystem.getTemperature(); - Fug[2][i] = testSystem.getTemperature(); - - Fugrel[0][i] = testSystem.getTemperature(); - Fugrel[1][i] = Fug[1][i] / Fug[3][i]; - // lagre data i fil - - // if(Math.abs(Fugrel[1][i]-1)<0.01)testSystem.display(); - } // end iterasjons lokke - - String[] title = new String[2]; - title[0] = "Solid Fugacity"; - title[1] = "Fluid Fugacity"; - - graph2b graffug = - new graph2b(Fug, title, compName + " Fugacity VS T, constant P= " + pres, - "Temperature [K]", "Fugacity [bar]"); - graffug.setVisible(true); - String[] title2 = new String[1]; - title2[0] = "Solid/Fluid"; - - graph2b grafvapor = new graph2b(Fugrel, title2, compName + " Fugacity Ratio", - "Temperature [K]", "Fsolid/Ffluid"); - grafvapor.setVisible(true); - } // end solidcheck lokke - } // end komponent lokke - } // end run - - /** - *

- * PrintToFile. - *

- * - * @param FileName a {@link java.lang.String} object - */ - public void PrintToFile(String FileName) { - // String myFile = "/java/fugcoeff_C02_ N2.dat"; - // try (PrintWriter pr_writer = new PrintWriter(new FileWriter(myFile, true))){ - // // print line to output file - // pr_writer.println( - // testSystem.getPhases()[0].getComponents()[k].getComponentName()+" " + - // java.lang.Double.toString(Fug[0+k*6][i])+" - // "+java.lang.Double.toString(Fug[1+k*6][i])+" - // "+java.lang.Double.toString(Fug[3+k*6][i]) +" "+ - // java.lang.Double.toString(Fug[5+k*6][i]) ); - // pr_writer.flush(); - // pr_writer.close(); - - // logger.error("Successful attempt to write to " + myFile); - // } - // catch (SecurityException e) { - // logger.error("writeFile: caught security exception"); - // } - // catch (IOException ioe) { - // logger.error("writeFile: caught i/o exception"); - // } - } + implements ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(FugTestConstP.class); + + public double temp = 0.0; + public double pres = 0.0; + public SystemInterface testSystem; + public SystemInterface testSystem2; + public ThermodynamicOperations testOps; + public ThermodynamicOperations testOps2; + public int compNumber = 0; + public String compName; + public boolean compNameGiven = false; + + /** + *

+ * Constructor for FugTestConstP. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public FugTestConstP(SystemInterface system) { + this.testSystem = system; + this.testOps = new ThermodynamicOperations(testSystem); + this.pres = testSystem.getPressure(); + } + + /** + *

+ * Constructor for FugTestConstP. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param pres a double + */ + public FugTestConstP(SystemInterface system, double pres) { + this.testSystem = system; + this.testOps = new ThermodynamicOperations(testSystem); + this.pres = pres; + } + + // initializing reference system for pure vapor fugacity + /** + *

+ * initTestSystem2. + *

+ * + * @param K a int + */ + public void initTestSystem2(int K) { + this.testSystem2 = new SystemSrkSchwartzentruberEos(temp, pres); + this.testSystem2.addComponent(compName, 1); + this.testSystem2.setPhaseType(0, PhaseType.byValue(1)); + this.testOps2 = new ThermodynamicOperations(testSystem2); + } + + /** {@inheritDoc} */ + @Override + public void run() { + double SolidFug = 0.0; + double Pvapsolid = 0.0; + double SolVapFugCoeff = 0.0; + // double dfugdt = 0.0; + double solvol = 0.0; + double soldens = 0.0; + double trpTemp = 0.0; + boolean CCequation = true; + double[][] Fug = new double[4][20]; + double[][] Fugrel = new double[2][20]; + // int vapPhase = 0; + // double Xivapor; + + for (int k = 0; k < testSystem.getPhases()[0].getNumberOfComponents(); k++) { + if (testSystem.getPhase(0).getComponent(k).doSolidCheck()) { + this.compName = testSystem.getPhase(0).getComponent(k).getComponentName(); + trpTemp = testSystem.getPhases()[0].getComponents()[k].getTriplePointTemperature(); + this.initTestSystem2(k); + if (Math.abs(testSystem.getPhases()[0].getComponents()[k].getHsub()) < 0.000001) { + CCequation = false; + } + for (int i = 0; i < 20; i++) { + logger.info("--- calculating --- " + compName + " at "); + temp = trpTemp + 2 - i * trpTemp / 40; + testSystem.setTemperature(temp); + testSystem2.setTemperature(temp); + logger.info("temperature " + temp); + if (temp > trpTemp + 0.1) { + temp = trpTemp; + } + // Vapor pressure estiamtion + if (CCequation) { + Pvapsolid = testSystem.getPhase(0).getComponent(k).getCCsolidVaporPressure(temp); + logger.info("pvap solid CC " + Pvapsolid); + } else { + Pvapsolid = testSystem.getPhase(0).getComponent(k).getSolidVaporPressure(temp); + logger.info("pvap solid Antonie " + Pvapsolid); + } + soldens = + testSystem.getPhase(0).getComponent(k).getPureComponentSolidDensity(temp) * 1000; + if (soldens > 2000) { + soldens = 1000; + } + logger.info("Solid_vapour_____solid density" + soldens); + solvol = 1.0 / soldens * testSystem.getPhase(0).getComponent(k).getMolarMass(); + SolidFug = Pvapsolid * Math.exp(solvol / (R * temp) * (pres - Pvapsolid)); + + // testSystem2.setTemperature(temp); + testSystem2.setPressure(Pvapsolid); + testOps.TPflash(); + testOps2.TPflash(); + + SolVapFugCoeff = testSystem2.getPhase(0).getComponent(0).getFugacityCoefficient(); + + Fug[3][i] = testSystem.getPhase(0).getFugacity(k); + Fug[1][i] = SolidFug * SolVapFugCoeff; + Fug[0][i] = testSystem.getTemperature(); + Fug[2][i] = testSystem.getTemperature(); + + Fugrel[0][i] = testSystem.getTemperature(); + Fugrel[1][i] = Fug[1][i] / Fug[3][i]; + // lagre data i fil + + // if(Math.abs(Fugrel[1][i]-1)<0.01)testSystem.display(); + } // end iterasjons lokke + + String[] title = new String[2]; + title[0] = "Solid Fugacity"; + title[1] = "Fluid Fugacity"; + + graph2b graffug = new graph2b(Fug, title, compName + " Fugacity VS T, constant P= " + pres, + "Temperature [K]", "Fugacity [bar]"); + graffug.setVisible(true); + String[] title2 = new String[1]; + title2[0] = "Solid/Fluid"; + + graph2b grafvapor = new graph2b(Fugrel, title2, compName + " Fugacity Ratio", + "Temperature [K]", "Fsolid/Ffluid"); + grafvapor.setVisible(true); + } // end solidcheck lokke + } // end komponent lokke + } // end run + + /** + *

+ * PrintToFile. + *

+ * + * @param FileName a {@link java.lang.String} object + */ + public void PrintToFile(String FileName) { + // String myFile = "/java/fugcoeff_C02_ N2.dat"; + // try (PrintWriter pr_writer = new PrintWriter(new FileWriter(myFile, true))){ + // // print line to output file + // pr_writer.println( + // testSystem.getPhases()[0].getComponents()[k].getComponentName()+" " + + // java.lang.Double.toString(Fug[0+k*6][i])+" + // "+java.lang.Double.toString(Fug[1+k*6][i])+" + // "+java.lang.Double.toString(Fug[3+k*6][i]) +" "+ + // java.lang.Double.toString(Fug[5+k*6][i]) ); + // pr_writer.flush(); + // pr_writer.close(); + + // logger.error("Successful attempt to write to " + myFile); + // } + // catch (SecurityException ex) { + // logger.error("writeFile: caught security exception"); + // } + // catch (IOException ioe) { + // logger.error("writeFile: caught i/o exception"); + // } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HCdewPointPressureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HCdewPointPressureFlash.java index 2a96579641..80a2de9d0b 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HCdewPointPressureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HCdewPointPressureFlash.java @@ -2,7 +2,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import neqsim.thermo.system.SystemInterface; /** @@ -14,125 +13,122 @@ * @version $Id: $Id */ public class HCdewPointPressureFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(HCdewPointPressureFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(HCdewPointPressureFlash.class); - /** - *

- * Constructor for HCdewPointPressureFlash. - *

- */ - public HCdewPointPressureFlash() {} + /** + *

+ * Constructor for HCdewPointPressureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public HCdewPointPressureFlash(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for HCdewPointPressureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public HCdewPointPressureFlash(SystemInterface system) { - super(system); + /** {@inheritDoc} */ + @Override + public void run() { + if (system.getPhase(0).getNumberOfComponents() == 1 + && system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { + setSuperCritical(true); } - /** {@inheritDoc} */ - @Override - public void run() { - if (system.getPhase(0).getNumberOfComponents() == 1 - && system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { - setSuperCritical(true); - } - - int iterations = 0, maxNumberOfIterations = 500; - double xold = 0, xtotal = 1, xoldold = 0; - // logger.info("starting"); - system.init(0); - system.setBeta(0, 1.0 - 1e-10); - system.setBeta(1, 1e-10); + int iterations = 0; + int maxNumberOfIterations = 500; + double xold = 0; + double xtotal = 1; + double xoldold = 0; + // logger.info("starting"); + system.init(0); + system.setBeta(0, 1.0 - 1e-10); + system.setBeta(1, 1e-10); - double oldPres = 0; - if (system.isChemicalSystem()) { - system.getChemicalReactionOperations().solveChemEq(0); - system.getChemicalReactionOperations().solveChemEq(1); - } + double oldPres = 0; + if (system.isChemicalSystem()) { + system.getChemicalReactionOperations().solveChemEq(0); + system.getChemicalReactionOperations().solveChemEq(1); + } - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getz()); - if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setx(1e-40); - } else { - system.getPhases()[1].getComponents()[i] - .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - } - } - // system.setPressure(system.getPhases()[0].getAntoineVaporPressure(system.getTemperature())); - xtotal = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - xtotal += system.getPhases()[1].getComponents()[i].getx(); - } - double ktot = 0.0, xTotOld = 0.0, presoldold = 0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getz()); + if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setx(1e-40); + } else { + system.getPhases()[1].getComponents()[i] + .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + } + } + // system.setPressure(system.getPhases()[0].getAntoineVaporPressure(system.getTemperature())); + xtotal = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + xtotal += system.getPhases()[1].getComponents()[i].getx(); + } + double ktot = 0.0; + double xTotOld = 0.0; + double presoldold = 0; + do { + iterations++; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[1].getComponents()[i] + .setx(system.getPhases()[1].getComponents()[i].getx() / xtotal); + } + system.init(1); + ktot = 0.0; + presoldold = oldPres; + oldPres = system.getPressure(); + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { do { - iterations++; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[1].getComponents()[i] - .setx(system.getPhases()[1].getComponents()[i].getx() / xtotal); - } - system.init(1); - ktot = 0.0; - presoldold = oldPres; - oldPres = system.getPressure(); - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - do { - xold = system.getPhases()[1].getComponents()[i].getx(); - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setK(1e-40); - } else { - system.getPhases()[0].getComponents()[i].setK(Math.exp(Math.log( - system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) - - Math.log(system.getPhases()[0].getComponents()[i] - .getFugacityCoefficient()))); - } - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - system.getPhases()[1].getComponents()[i] - .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - } while (Math.abs(system.getPhases()[1].getComponents()[i].getx() - xold) > 1e-4); - ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); - } - xoldold = xTotOld; - xTotOld = xtotal; - xtotal = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - xtotal += system.getPhases()[1].getComponents()[i].getx(); - } + xold = system.getPhases()[1].getComponents()[i].getx(); + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setK(1e-40); + } else { + system.getPhases()[0].getComponents()[i].setK( + Math.exp(Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) + - Math.log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient()))); + } + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); + system.getPhases()[1].getComponents()[i] + .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + } while (Math.abs(system.getPhases()[1].getComponents()[i].getx() - xold) > 1e-4); + ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); + } + xoldold = xTotOld; + xTotOld = xtotal; + xtotal = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + xtotal += system.getPhases()[1].getComponents()[i].getx(); + } - double newPres = 0; - if (iterations < 4) { - newPres = system.getPressure() + 0.1; - } else { - double dxTOTdP = (xTotOld - xoldold) / (oldPres - presoldold); - newPres = system.getPressure() - - iterations * 1.0 / (iterations + 20000.0) * (xtotal - 1) / dxTOTdP; - } - system.setPressure(newPres); + double newPres = 0; + if (iterations < 4) { + newPres = system.getPressure() + 0.1; + } else { + double dxTOTdP = (xTotOld - xoldold) / (oldPres - presoldold); + newPres = system.getPressure() + - iterations * 1.0 / (iterations + 20000.0) * (xtotal - 1) / dxTOTdP; + } + system.setPressure(newPres); - // logger.info("iter " + iterations + " pressure " + system.getPressure() + " - // xtotal " + xtotal); - } while ((((Math.abs(xtotal) - 1.0) > 1e-10) - || Math.abs(oldPres - system.getPressure()) / oldPres > 1e-9) - && (iterations < maxNumberOfIterations)); - // logger.info("iter " + iterations + " XTOT " +xtotal + " k " - // +system.getPhases()[1].getComponents()[0].getK()); - if (Math.abs(xtotal - 1.0) >= 1e-5 - || ktot < 1e-3 && system.getPhase(0).getNumberOfComponents() > 1) { - setSuperCritical(true); - } + // logger.info("iter " + iterations + " pressure " + system.getPressure() + " + // xtotal " + xtotal); + } while ((((Math.abs(xtotal) - 1.0) > 1e-10) + || Math.abs(oldPres - system.getPressure()) / oldPres > 1e-9) + && (iterations < maxNumberOfIterations)); + // logger.info("iter " + iterations + " XTOT " +xtotal + " k " + // +system.getPhases()[1].getComponents()[0].getK()); + if (Math.abs(xtotal - 1.0) >= 1e-5 + || ktot < 1e-3 && system.getPhase(0).getNumberOfComponents() > 1) { + setSuperCritical(true); } + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateEquilibriumLine.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateEquilibriumLine.java index b377c6d2b4..f2227f7c7c 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateEquilibriumLine.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateEquilibriumLine.java @@ -12,53 +12,53 @@ * @version $Id: $Id */ public class HydrateEquilibriumLine extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - double[][] hydratePoints = null; - double minPressure = 1.0, maxPressure = 200.0; - int numberOfPoints = 10; + double[][] hydratePoints = null; + double minPressure = 1.0, maxPressure = 200.0; + int numberOfPoints = 10; - /** - *

- * Constructor for HydrateEquilibriumLine. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param minPres a double - * @param maxPres a double - */ - public HydrateEquilibriumLine(SystemInterface system, double minPres, double maxPres) { - super(system); - minPressure = minPres; - maxPressure = maxPres; - } + /** + *

+ * Constructor for HydrateEquilibriumLine. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param minPres a double + * @param maxPres a double + */ + public HydrateEquilibriumLine(SystemInterface system, double minPres, double maxPres) { + super(system); + minPressure = minPres; + maxPressure = maxPres; + } - /** {@inheritDoc} */ - @Override - public void run() { - SystemInterface system = this.system.clone(); - hydratePoints = new double[2][numberOfPoints]; - system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); + /** {@inheritDoc} */ + @Override + public void run() { + SystemInterface system = this.system.clone(); + hydratePoints = new double[2][numberOfPoints]; + system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); - system.setPressure(minPressure); - double dp = (maxPressure - minPressure) / (numberOfPoints - 1.0); - for (int i = 0; i < numberOfPoints; i++) { - system.setPressure(minPressure + dp * i); - try { - ops.hydrateFormationTemperature(); - } catch (Exception e) { - // logger.error("error",e); - } - hydratePoints[0][i] = system.getTemperature(); - hydratePoints[1][i] = system.getPressure(); - // system.display(); - } + system.setPressure(minPressure); + double dp = (maxPressure - minPressure) / (numberOfPoints - 1.0); + for (int i = 0; i < numberOfPoints; i++) { + system.setPressure(minPressure + dp * i); + try { + ops.hydrateFormationTemperature(); + } catch (Exception ex) { + // logger.error(ex.getMessage(),e); + } + hydratePoints[0][i] = system.getTemperature(); + hydratePoints[1][i] = system.getPressure(); + // system.display(); } + } - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return hydratePoints; - } + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return hydratePoints; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java index daa05bc8ba..3189cc62e0 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationPressureFlash.java @@ -15,75 +15,68 @@ * @version $Id: $Id */ public class HydrateFormationPressureFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(HydrateFormationPressureFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(HydrateFormationPressureFlash.class); - /** - *

- * Constructor for HydrateFormationPressureFlash. - *

- */ - public HydrateFormationPressureFlash() {} + /** + *

+ * Constructor for HydrateFormationPressureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public HydrateFormationPressureFlash(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for HydrateFormationPressureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public HydrateFormationPressureFlash(SystemInterface system) { - super(system); - } - - /** {@inheritDoc} */ - @Override - public void run() { - double olfFug = 0.0; - // system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - system.getPhase(4).getComponent("water").setx(1.0); - system.init(0); - system.init(1); - int iter = 0; - do { - iter++; - olfFug = system.getPhase(4).getFugacity("water"); - setFug(); - ops.TPflash(); + /** {@inheritDoc} */ + @Override + public void run() { + double olfFug = 0.0; + // system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + system.getPhase(4).getComponent("water").setx(1.0); + system.init(0); + system.init(1); + int iter = 0; + do { + iter++; + olfFug = system.getPhase(4).getFugacity("water"); + setFug(); + ops.TPflash(); - system.init(1); - system.getPhase(4).getComponent("water").setx(1.0); - logger.info("diff " + (system.getPhase(4).getFugacity("water") - / system.getPhase(0).getFugacity("water"))); - system.setPressure(system.getPressure() * (system.getPhase(4).getFugacity("water") - / system.getPhase(0).getFugacity("water"))); - logger.info("pressure " + system.getPressure()); - // logger.info("x water " + system.getPhase(3).getComponent("water").getx()); - } while (Math.abs((olfFug - system.getPhase(4).getFugacity("water")) / olfFug) > 1e-8 - && iter < 100); - // logger.info("hydrate structure = " + ((ComponentHydrate) - // system.getPhase(3).getComponent("water")).getHydrateStructure()); - logger.info("end"); - } + system.init(1); + system.getPhase(4).getComponent("water").setx(1.0); + logger.info("diff " + + (system.getPhase(4).getFugacity("water") / system.getPhase(0).getFugacity("water"))); + system.setPressure(system.getPressure() + * (system.getPhase(4).getFugacity("water") / system.getPhase(0).getFugacity("water"))); + logger.info("pressure " + system.getPressure()); + // logger.info("x water " + system.getPhase(3).getComponent("water").getx()); + } while (Math.abs((olfFug - system.getPhase(4).getFugacity("water")) / olfFug) > 1e-8 + && iter < 100); + // logger.info("hydrate structure = " + ((ComponentHydrate) + // system.getPhase(3).getComponent("water")).getHydrateStructure()); + logger.info("end"); + } - /** - *

- * setFug. - *

- */ - public void setFug() { - for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - ((ComponentHydrate) system.getPhase(4).getComponent(j)).setRefFug(i, - system.getPhase(0).getFugacity(i)); - } - } - system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); - system.getPhase(4).getComponent("water").setx(1.0); + /** + *

+ * setFug. + *

+ */ + public void setFug() { + for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + ((ComponentHydrate) system.getPhase(4).getComponent(j)).setRefFug(i, + system.getPhase(0).getFugacity(i)); + } } + system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); + system.getPhase(4).getComponent("water").setx(1.0); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationTemperatureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationTemperatureFlash.java index 0b463d3289..8cbb5db896 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationTemperatureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateFormationTemperatureFlash.java @@ -2,7 +2,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import neqsim.thermo.component.ComponentHydrate; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -16,164 +15,162 @@ * @version $Id: $Id */ public class HydrateFormationTemperatureFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(HydrateFormationTemperatureFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(HydrateFormationTemperatureFlash.class); - /** - *

- * Constructor for HydrateFormationTemperatureFlash. - *

- */ - public HydrateFormationTemperatureFlash() {} + /** + *

+ * Constructor for HydrateFormationTemperatureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public HydrateFormationTemperatureFlash(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for HydrateFormationTemperatureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public HydrateFormationTemperatureFlash(SystemInterface system) { - super(system); - } + /** + *

+ * stop. + *

+ */ + public void stop() { + system = null; + } - /** - *

- * stop. - *

- */ - public void stop() { - system = null; - } + /** {@inheritDoc} */ + @Override + public void run() { + double olfFug = 0.0; + double temp = 0.0; + double oldTemp = 0.0; + double oldDiff = 0.0; + // system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + system.getPhase(4).getComponent("water").setx(1.0); + int iter = 0; + double diff = 0; + system.setTemperature(system.getTemperature() + 0.0001); + do { + iter++; + olfFug = system.getPhase(4).getFugacity("water"); + ops.TPflash(); + setFug(); + system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); + system.getPhase(4).getComponent("water").setx(1.0); + oldDiff = diff; + diff = + 1.0 - (system.getPhase(4).getFugacity("water") / system.getPhase(0).getFugacity("water")); + oldTemp = temp; + temp = system.getTemperature(); + double dDiffdT = (diff - oldDiff) / (temp - oldTemp); - /** {@inheritDoc} */ - @Override - public void run() { - double olfFug = 0.0; - double temp = 0.0, oldTemp = 0.0, oldDiff = 0.0; - // system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - system.getPhase(4).getComponent("water").setx(1.0); - int iter = 0; - double diff = 0; - system.setTemperature(system.getTemperature() + 0.0001); - do { - iter++; - olfFug = system.getPhase(4).getFugacity("water"); - ops.TPflash(); - setFug(); - system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); - system.getPhase(4).getComponent("water").setx(1.0); - oldDiff = diff; - diff = 1.0 - (system.getPhase(4).getFugacity("water") - / system.getPhase(0).getFugacity("water")); - oldTemp = temp; - temp = system.getTemperature(); - double dDiffdT = (diff - oldDiff) / (temp - oldTemp); - - if (iter < 2) { - system.setTemperature((system.getTemperature() + 0.1)); - } else { - double dT = (Math.abs(diff / dDiffdT)) > 10 ? Math.signum(diff / dDiffdT) * 10 - : diff / dDiffdT; - if (Double.isNaN(dT)) { - dT = 0.1; - } - system.setTemperature(system.getTemperature() - dT); - } - if (iter > 2 && Math.abs(diff) > Math.abs(oldDiff)) { - system.setTemperature((oldTemp + system.getTemperature()) / 2.0); - } - // logger.info("diff " + (system.getPhase(4).getFugacity("water") / - // system.getPhase(0).getFugacity("water"))); - // logger.info("temperature " + system.getTemperature() + " iter " + iter); - // logger.info("x water " + system.getPhase(4).getComponent("water").getx()); - try { - Thread.sleep(100); - } catch (InterruptedException iex) { - } - } while (Math.abs((olfFug - system.getPhase(4).getFugacity("water")) / olfFug) > 1e-6 - && iter < 100 || iter < 3); - } + if (iter < 2) { + system.setTemperature((system.getTemperature() + 0.1)); + } else { + double dT = + (Math.abs(diff / dDiffdT)) > 10 ? Math.signum(diff / dDiffdT) * 10 : diff / dDiffdT; + if (Double.isNaN(dT)) { + dT = 0.1; + } + system.setTemperature(system.getTemperature() - dT); + } + if (iter > 2 && Math.abs(diff) > Math.abs(oldDiff)) { + system.setTemperature((oldTemp + system.getTemperature()) / 2.0); + } + // logger.info("diff " + (system.getPhase(4).getFugacity("water") / + // system.getPhase(0).getFugacity("water"))); + // logger.info("temperature " + system.getTemperature() + " iter " + iter); + // logger.info("x water " + system.getPhase(4).getComponent("water").getx()); + try { + Thread.sleep(100); + } catch (InterruptedException iex) { + } + } while (Math.abs((olfFug - system.getPhase(4).getFugacity("water")) / olfFug) > 1e-6 + && iter < 100 || iter < 3); + } - /** - *

- * run2. - *

- */ - public void run2() { - double olfFug = 0.0; - double oldTemp = 0.0, oldOldTemp = 0.0, oldDiff = 0.0, oldOldDiff = 0.0; - // system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - system.getPhase(4).getComponent("water").setx(1.0); - int iter = 0; - do { - iter++; - olfFug = system.getPhase(4).getFugacity("water"); - ops.TPflash(); - setFug(); - system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); - system.getPhase(4).getComponent("water").setx(1.0); + /** + *

+ * run2. + *

+ */ + public void run2() { + double olfFug = 0.0; + double oldTemp = 0.0; + double oldOldTemp = 0.0; + double oldDiff = 0.0; + double oldOldDiff = 0.0; + // system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + system.getPhase(4).getComponent("water").setx(1.0); + int iter = 0; + do { + iter++; + olfFug = system.getPhase(4).getFugacity("water"); + ops.TPflash(); + setFug(); + system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); + system.getPhase(4).getComponent("water").setx(1.0); - if (iter % 4 == 0) { - // logger.info("ny temp " +(system.getTemperature() - - // oldDiff/((oldDiff-oldOldDiff)/(oldTemp-oldOldTemp)))); - double change = -oldDiff / ((oldDiff - oldOldDiff) / (oldTemp - oldOldTemp)); - if (Math.abs(change) > 5.0) { - change = Math.abs(change) / change * 5.0; - } - system.setTemperature((system.getTemperature() + change)); - } else { - double change = (1.0 - system.getPhase(4).getFugacity("water") - / system.getPhase(0).getFugacity("water")); - if (Math.abs(change) > 5.0) { - change = Math.abs(change) / change * 5.0; - } - system.setTemperature(system.getTemperature() + change); - } + if (iter % 4 == 0) { + // logger.info("ny temp " +(system.getTemperature() - + // oldDiff/((oldDiff-oldOldDiff)/(oldTemp-oldOldTemp)))); + double change = -oldDiff / ((oldDiff - oldOldDiff) / (oldTemp - oldOldTemp)); + if (Math.abs(change) > 5.0) { + change = Math.abs(change) / change * 5.0; + } + system.setTemperature((system.getTemperature() + change)); + } else { + double change = (1.0 + - system.getPhase(4).getFugacity("water") / system.getPhase(0).getFugacity("water")); + if (Math.abs(change) > 5.0) { + change = Math.abs(change) / change * 5.0; + } + system.setTemperature(system.getTemperature() + change); + } - double diff = 1.0 - (system.getPhase(4).getFugacity("water") - / system.getPhase(0).getFugacity("water")); - // logger.info("iter " + iter + " diff " + - // (system.getPhase(4).getFugacity("water") / - // system.getPhase(0).getFugacity("water"))); - oldOldTemp = oldTemp; - oldTemp = system.getTemperature(); + double diff = + 1.0 - (system.getPhase(4).getFugacity("water") / system.getPhase(0).getFugacity("water")); + // logger.info("iter " + iter + " diff " + + // (system.getPhase(4).getFugacity("water") / + // system.getPhase(0).getFugacity("water"))); + oldOldTemp = oldTemp; + oldTemp = system.getTemperature(); - oldOldDiff = oldDiff; - oldDiff = diff; + oldOldDiff = oldDiff; + oldDiff = diff; - // logger.info("temperature " + system.getTemperature()); - // logger.info("x water " + system.getPhase(4).getComponent("water").getx()); - } while (Math.abs((olfFug - system.getPhase(4).getFugacity("water")) / olfFug) > 1e-6 - && iter < 100 || iter < 3); - } + // logger.info("temperature " + system.getTemperature()); + // logger.info("x water " + system.getPhase(4).getComponent("water").getx()); + } while (Math.abs((olfFug - system.getPhase(4).getFugacity("water")) / olfFug) > 1e-6 + && iter < 100 || iter < 3); + } - /** - *

- * setFug. - *

- */ - public void setFug() { - system.getPhase(4).getComponent("water").setx(1.0); - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - if (system.getPhase(4).getComponent(j).isHydrateFormer() - || system.getPhase(4).getComponent(j).getName().equals("water")) { - ((ComponentHydrate) system.getPhase(4).getComponent(i)).setRefFug(j, - system.getPhase(0).getFugacity(j)); - } else { - ((ComponentHydrate) system.getPhase(4).getComponent(i)).setRefFug(j, 0); - } - } + /** + *

+ * setFug. + *

+ */ + public void setFug() { + system.getPhase(4).getComponent("water").setx(1.0); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { + if (system.getPhase(4).getComponent(j).isHydrateFormer() + || system.getPhase(4).getComponent(j).getName().equals("water")) { + ((ComponentHydrate) system.getPhase(4).getComponent(i)).setRefFug(j, + system.getPhase(0).getFugacity(j)); + } else { + ((ComponentHydrate) system.getPhase(4).getComponent(i)).setRefFug(j, 0); } - system.getPhase(4).getComponent("water").setx(1.0); - system.getPhase(4).init(); - system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); + } } + system.getPhase(4).getComponent("water").setx(1.0); + system.getPhase(4).init(); + system.getPhase(4).getComponent("water").fugcoef(system.getPhase(4)); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorConcentrationFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorConcentrationFlash.java index 4c31719005..6bcba63062 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorConcentrationFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorConcentrationFlash.java @@ -2,7 +2,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -16,124 +15,116 @@ * @version $Id: $Id */ public class HydrateInhibitorConcentrationFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(HydrateInhibitorConcentrationFlash.class); - - double hydT = 273.15; - String inhibitor = "MEG"; - - /** - *

- * Constructor for HydrateInhibitorConcentrationFlash. - *

- */ - public HydrateInhibitorConcentrationFlash() {} - - /** - *

- * Constructor for HydrateInhibitorConcentrationFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param inhibitor a {@link java.lang.String} object - * @param hydrateTemperature a double - */ - public HydrateInhibitorConcentrationFlash(SystemInterface system, String inhibitor, - double hydrateTemperature) { - super(system); - hydT = hydrateTemperature; - this.inhibitor = inhibitor; - } - - /** - *

- * stop. - *

- */ - public void stop() { - system = null; - } - - /** {@inheritDoc} */ - @Override - public void run() { - ThermodynamicOperations ops = new ThermodynamicOperations(system); - int iter = 0; - double error = 1.0, oldError = 1.0, - oldC = system.getPhase(0).getComponent(inhibitor).getNumberOfmoles(); - double derrordC = 1.0; - do { - iter++; - try { - derrordC = (error - oldError) - / (system.getPhase(0).getComponent(inhibitor).getNumberOfmoles() - oldC); - oldError = error; - oldC = system.getPhase(0).getComponent(inhibitor).getNumberOfmoles(); - - if (iter < 4) { - system.addComponent(inhibitor, error * 0.01); - } else { - double newC = -error / derrordC; - double correction = newC * 0.5;// (newC - - // system.getPhase(0).getComponent(inhibitor).getNumberOfmoles()) - // * - // 0.5; - - system.addComponent(inhibitor, correction); - } - system.init(0); - system.init(1); - ops.hydrateFormationTemperature(system.getTemperature()); - error = system.getTemperature() - hydT; - - logger.info("error " + error); - } catch (Exception e) { - logger.error("error", e); - } - } while ((Math.abs(error) > 1e-3 && iter < 100) || iter < 3); - } - - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 0, 100.0); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - testSystem.addComponent("methane", 1.0); - testSystem.addComponent("ethane", 0.10); - testSystem.addComponent("propane", 0.050); - testSystem.addComponent("i-butane", 0.0050); - testSystem.addComponent("MEG", 0.1); - testSystem.addComponent("water", 1.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(9); - - testSystem.init(0); - testSystem.setMultiPhaseCheck(true); - testSystem.setHydrateCheck(true); - - try { - testOps.hydrateInhibitorConcentration("MEG", 270.9); - double cons = 100 * testSystem.getPhase(0).getComponent("MEG").getNumberOfmoles() - * testSystem.getPhase(0).getComponent("MEG").getMolarMass() - / (testSystem.getPhase(0).getComponent("MEG").getNumberOfmoles() - * testSystem.getPhase(0).getComponent("MEG").getMolarMass() - + testSystem.getPhase(0).getComponent("water").getNumberOfmoles() - * testSystem.getPhase(0).getComponent("water").getMolarMass()); - logger.info("hydrate inhibitor concentration " + cons + " wt%"); - } catch (Exception e) { - e.toString(); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(HydrateInhibitorConcentrationFlash.class); + + double hydT = 273.15; + String inhibitor = "MEG"; + + /** + *

+ * Constructor for HydrateInhibitorConcentrationFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param inhibitor a {@link java.lang.String} object + * @param hydrateTemperature a double + */ + public HydrateInhibitorConcentrationFlash(SystemInterface system, String inhibitor, + double hydrateTemperature) { + super(system); + hydT = hydrateTemperature; + this.inhibitor = inhibitor; + } + + /** + *

+ * stop. + *

+ */ + public void stop() { + system = null; + } + + /** {@inheritDoc} */ + @Override + public void run() { + ThermodynamicOperations ops = new ThermodynamicOperations(system); + int iter = 0; + double error = 1.0; + double oldError = 1.0; + double oldC = system.getPhase(0).getComponent(inhibitor).getNumberOfmoles(); + double derrordC = 1.0; + do { + iter++; + try { + derrordC = (error - oldError) + / (system.getPhase(0).getComponent(inhibitor).getNumberOfmoles() - oldC); + oldError = error; + oldC = system.getPhase(0).getComponent(inhibitor).getNumberOfmoles(); + + if (iter < 4) { + system.addComponent(inhibitor, error * 0.01); + } else { + double newC = -error / derrordC; + double correction = newC * 0.5; + // (newC - system.getPhase(0).getComponent(inhibitor).getNumberOfmoles()) * 0.5; + + system.addComponent(inhibitor, correction); } - testSystem.display(); + system.init(0); + system.init(1); + ops.hydrateFormationTemperature(system.getTemperature()); + error = system.getTemperature() - hydT; + + logger.info("error " + error); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } while ((Math.abs(error) > 1e-3 && iter < 100) || iter < 3); + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 0, 100.0); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + + testSystem.addComponent("methane", 1.0); + testSystem.addComponent("ethane", 0.10); + testSystem.addComponent("propane", 0.050); + testSystem.addComponent("i-butane", 0.0050); + testSystem.addComponent("MEG", 0.1); + testSystem.addComponent("water", 1.0); + testSystem.createDatabase(true); + testSystem.setMixingRule(9); + + testSystem.init(0); + testSystem.setMultiPhaseCheck(true); + testSystem.setHydrateCheck(true); + + try { + testOps.hydrateInhibitorConcentration("MEG", 270.9); + double cons = 100 * testSystem.getPhase(0).getComponent("MEG").getNumberOfmoles() + * testSystem.getPhase(0).getComponent("MEG").getMolarMass() + / (testSystem.getPhase(0).getComponent("MEG").getNumberOfmoles() + * testSystem.getPhase(0).getComponent("MEG").getMolarMass() + + testSystem.getPhase(0).getComponent("water").getNumberOfmoles() + * testSystem.getPhase(0).getComponent("water").getMolarMass()); + logger.info("hydrate inhibitor concentration " + cons + " wt%"); + } catch (Exception ex) { + ex.toString(); } + testSystem.display(); + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorwtFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorwtFlash.java index 3ca1b071e5..8dec603b87 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorwtFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorwtFlash.java @@ -2,9 +2,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** @@ -16,148 +15,95 @@ * @version $Id: $Id */ public class HydrateInhibitorwtFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - - double wtfrac = 0.5; - String inhibitor = "MEG"; - - static Logger logger = LogManager.getLogger(HydrateInhibitorwtFlash.class); - - /** - *

- * Constructor for HydrateInhibitorwtFlash. - *

- */ - public HydrateInhibitorwtFlash() {} - - /** - *

- * Constructor for HydrateInhibitorwtFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param inhibitor a {@link java.lang.String} object - * @param wtfr a double - */ - public HydrateInhibitorwtFlash(SystemInterface system, String inhibitor, double wtfr) { - super(system); - wtfrac = wtfr; - this.inhibitor = inhibitor; - } - - /** - *

- * stop. - *

- */ - public void stop() { - system = null; - } - - /** {@inheritDoc} */ - @Override - public void run() { - ThermodynamicOperations ops = new ThermodynamicOperations(system); - int iter = 0; - double error = 1.0, oldError = 1.0, - oldC = system.getPhase(0).getComponent(inhibitor).getNumberOfmoles(); - double derrordC = 1.0; - do { - iter++; - try { - derrordC = (error - oldError) - / (system.getPhase(0).getComponent(inhibitor).getNumberOfmoles() - oldC); - oldError = error; - oldC = system.getPhase(0).getComponent(inhibitor).getNumberOfmoles(); - - if (iter < 4) { - system.addComponent(inhibitor, error * 0.01); - } else { - double newC = -error / derrordC; - double correction = newC * 0.5;// (newC - - // system.getPhase(0).getComponent(inhibitor).getNumberOfmoles()) - // * - // 0.5; - - system.addComponent(inhibitor, correction); - } - system.init(0); - system.init(1); - ops.TPflash(); - double wtp = 0.0; - if (system.hasPhaseType("aqueous")) { - wtp = system.getPhase("aqueous").getComponent(inhibitor).getx() - * system.getPhase("aqueous").getComponent(inhibitor).getMolarMass() - / (system.getPhase("aqueous").getComponent(inhibitor).getx() - * system.getPhase("aqueous").getComponent(inhibitor) - .getMolarMass() - + system.getPhase("aqueous").getComponent("water").getx() - * system.getPhase("aqueous").getComponent("water") - .getMolarMass()); - } else { - system.addComponent(inhibitor, system.getTotalNumberOfMoles()); - ops.TPflash(); - wtp = system.getPhase("aqueous").getComponent(inhibitor).getx() - * system.getPhase("aqueous").getComponent(inhibitor).getMolarMass() - / (system.getPhase("aqueous").getComponent(inhibitor).getx() - * system.getPhase("aqueous").getComponent(inhibitor) - .getMolarMass() - + system.getPhase("aqueous").getComponent("water").getx() - * system.getPhase("aqueous").getComponent("water") - .getMolarMass()); - } - error = -(wtp - wtfrac); - - logger.info("error " + error); - } catch (Exception e) { - logger.error("error", e); - } - } while ((Math.abs(error) > 1e-5 && iter < 100) || iter < 3); - // system.display(); - } - - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 0, 100.0); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - testSystem.addComponent("nitrogen", 79.0); - testSystem.addComponent("oxygen", 21.0); - // testSystem.addComponent("ethane", 0.10); - // testSystem.addComponent("propane", 0.050); - // testSystem.addComponent("i-butane", 0.0050); - testSystem.addComponent("MEG", 0.000001); - testSystem.addComponent("water", 0.0010); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - - testSystem.init(0); - testSystem.setMultiPhaseCheck(true); - testSystem.setHydrateCheck(true); - - try { - testOps.hydrateInhibitorConcentrationSet("MEG", 0.99); - double cons = 100 * testSystem.getPhase(0).getComponent("MEG").getNumberOfmoles() - * testSystem.getPhase(0).getComponent("MEG").getMolarMass() - / (testSystem.getPhase(0).getComponent("MEG").getNumberOfmoles() - * testSystem.getPhase(0).getComponent("MEG").getMolarMass() - + testSystem.getPhase(0).getComponent("water").getNumberOfmoles() - * testSystem.getPhase(0).getComponent("water").getMolarMass()); - logger.info("hydrate inhibitor concentration " + cons + " wt%"); - } catch (Exception e) { - e.toString(); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(HydrateInhibitorwtFlash.class); + + double wtfrac = 0.5; + String inhibitor = "MEG"; + + /** + *

+ * Constructor for HydrateInhibitorwtFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param inhibitor a {@link java.lang.String} object + * @param wtfr a double + */ + public HydrateInhibitorwtFlash(SystemInterface system, String inhibitor, double wtfr) { + super(system); + wtfrac = wtfr; + this.inhibitor = inhibitor; + } + + /** + *

+ * stop. + *

+ */ + public void stop() { + system = null; + } + + /** {@inheritDoc} */ + @Override + public void run() { + ThermodynamicOperations ops = new ThermodynamicOperations(system); + int iter = 0; + double error = 1.0; + double oldError = 1.0; + double oldC = system.getPhase(0).getComponent(inhibitor).getNumberOfmoles(); + double derrordC = 1.0; + do { + iter++; + try { + derrordC = (error - oldError) + / (system.getPhase(0).getComponent(inhibitor).getNumberOfmoles() - oldC); + oldError = error; + oldC = system.getPhase(0).getComponent(inhibitor).getNumberOfmoles(); + + if (iter < 4) { + system.addComponent(inhibitor, error * 0.01); + } else { + double newC = -error / derrordC; + double correction = newC * 0.5; + // (newC - system.getPhase(0).getComponent(inhibitor).getNumberOfmoles()) * 0.5; + + system.addComponent(inhibitor, correction); + } + system.init(0); + system.init(1); + ops.TPflash(); + double wtp = 0.0; + if (system.hasPhaseType(PhaseType.AQUEOUS)) { + // TODO: is this correct? seems to multplying and factoring with the same numbers twice + wtp = system.getPhase(PhaseType.AQUEOUS).getComponent(inhibitor).getx() + * system.getPhase(PhaseType.AQUEOUS).getComponent(inhibitor).getMolarMass() + / (system.getPhase(PhaseType.AQUEOUS).getComponent(inhibitor).getx() + * system.getPhase(PhaseType.AQUEOUS).getComponent(inhibitor).getMolarMass() + + system.getPhase(PhaseType.AQUEOUS).getComponent("water").getx() + * system.getPhase(PhaseType.AQUEOUS).getComponent("water").getMolarMass()); + } else { + system.addComponent(inhibitor, system.getTotalNumberOfMoles()); + ops.TPflash(); + // TODO: is this correct? seems to multplying and factoring with the same numbers twice + wtp = system.getPhase(PhaseType.AQUEOUS).getComponent(inhibitor).getx() + * system.getPhase(PhaseType.AQUEOUS).getComponent(inhibitor).getMolarMass() + / (system.getPhase(PhaseType.AQUEOUS).getComponent(inhibitor).getx() + * system.getPhase(PhaseType.AQUEOUS).getComponent(inhibitor).getMolarMass() + + system.getPhase(PhaseType.AQUEOUS).getComponent("water").getx() + * system.getPhase(PhaseType.AQUEOUS).getComponent("water").getMolarMass()); } - testSystem.display(); - } + error = -(wtp - wtfrac); + + logger.info("error " + error); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } while ((Math.abs(error) > 1e-5 && iter < 100) || iter < 3); + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/SolidComplexTemperatureCalc.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/SolidComplexTemperatureCalc.java index a367a8a3a2..dc805bf969 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/SolidComplexTemperatureCalc.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/SolidComplexTemperatureCalc.java @@ -2,7 +2,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -15,256 +14,253 @@ * @version $Id: $Id */ public class SolidComplexTemperatureCalc extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(SolidComplexTemperatureCalc.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(SolidComplexTemperatureCalc.class); - String comp1, comp2; - /** Constant Kcomplex=0.133736021815520500 */ - public static double Kcomplex = 0.133736021815520500; - /** Constant HrefComplex=4598.717135 */ - public static double HrefComplex = 4598.717135; - /** Constant TrefComplex=244.19 */ - public static double TrefComplex = 244.19; + String comp1; + String comp2; + /** Constant Kcomplex=0.133736021815520500. */ + public static double Kcomplex = 0.133736021815520500; + /** Constant HrefComplex=4598.717135. */ + public static double HrefComplex = 4598.717135; + /** Constant TrefComplex=244.19. */ + public static double TrefComplex = 244.19; - /** - *

- * Constructor for SolidComplexTemperatureCalc. - *

- */ - public SolidComplexTemperatureCalc() {} + /** + *

+ * Constructor for SolidComplexTemperatureCalc. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public SolidComplexTemperatureCalc(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for SolidComplexTemperatureCalc. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public SolidComplexTemperatureCalc(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for SolidComplexTemperatureCalc. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param comp1 a {@link java.lang.String} object + * @param comp2 a {@link java.lang.String} object + */ + public SolidComplexTemperatureCalc(SystemInterface system, String comp1, String comp2) { + this(system); + this.comp1 = comp1; + this.comp2 = comp2; - /** - *

- * Constructor for SolidComplexTemperatureCalc. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param comp1 a {@link java.lang.String} object - * @param comp2 a {@link java.lang.String} object - */ - public SolidComplexTemperatureCalc(SystemInterface system, String comp1, String comp2) { - this(system); - this.comp1 = comp1; - this.comp2 = comp2; + if (comp1.equals("MEG") && comp2.equals("water")) { + Kcomplex = 0.168048; + HrefComplex = 14450.0; + TrefComplex = 223.95; + } + // TEGwater parameters + if (comp1.equals("TEG") && comp2.equals("water")) { + // Kcomplex = 0.157232243643; + Kcomplex = 0.148047309951772870; + // HrefComplex = 4863.59239495220; + HrefComplex = 6629.1366952637; + TrefComplex = 244.19; + } - if (comp1.equals("MEG") && comp2.equals("water")) { - Kcomplex = 0.168048; - HrefComplex = 14450.0; - TrefComplex = 223.95; - } - // TEGwater parameters - if (comp1.equals("TEG") && comp2.equals("water")) { - // Kcomplex = 0.157232243643; - Kcomplex = 0.148047309951772870; - // HrefComplex = 4863.59239495220; - HrefComplex = 6629.1366952637; - TrefComplex = 244.19; - } + if (comp1.equals("methanol") && comp2.equals("water")) { + Kcomplex = 0.208059; + HrefComplex = 8540.0; + TrefComplex = 171.25; + } + } - if (comp1.equals("methanol") && comp2.equals("water")) { - Kcomplex = 0.208059; - HrefComplex = 8540.0; - TrefComplex = 171.25; - } + /** + *

+ * runOld. + *

+ */ + public void runOld() { + double sumx = 0.0; + // system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + int iter = 0; + double funkOld = 0.0; + double deltaT = 1.0; + double[] Ksolid = new double[system.getPhase(0).getNumberOfComponents()]; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + Ksolid[i] = 1.0; } - /** - *

- * runOld. - *

- */ - public void runOld() { - double sumx = 0.0; - // system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - int iter = 0; - double funkOld = 0.0, deltaT = 1.0; - double[] Ksolid = new double[system.getPhase(0).getNumberOfComponents()]; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - Ksolid[i] = 1.0; + do { + iter++; + ops.TPflash(); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhases()[5].getComponent(i).getName().equals("water") + || system.getPhases()[5].getComponent(i).getName().equals("MEG")) { + system.getPhases()[5].getComponent(i).setx(0.5); + } else { + system.getPhases()[5].getComponent(i).setx(1e-20); } + } + logger.info("Temperaure " + system.getTemperature() + " sumx " + sumx); + sumx = 0.0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + // system.getPhases()[5].getComponent(i).setx(Ksolid[i] * + // system.getPhase(0).getComponent(i).getx()); + // if (system.getPhases()[5].getComponent(i).getx() > 0.000001) { + Ksolid[i] = system.getPhase(0).getComponent(i).getFugacityCoefficient() + / system.getPhases()[5].getComponent(i).fugcoef(system.getPhases()[5]); + sumx += Ksolid[i] * system.getPhase(0).getComponent(i).getx(); + // } + } + double funk = sumx - 1.0; + double dfunkdt = (funk - funkOld) / deltaT; + funkOld = funk; + double dT = -funk / dfunkdt; + double oldTemp = system.getTemperature(); + if (iter > 1) { + system.setTemperature(system.getTemperature() + dT * iter * 1.0 / (5.0 + iter)); + } else { + system.setTemperature(system.getTemperature() + 0.01); + } + deltaT = system.getTemperature() - oldTemp; + logger.info("Temperaure " + system.getTemperature() + " sumx " + sumx); + } while (Math.abs(sumx - 1.0) > 1e-8); + logger.info("sumx " + sumx); - do { - iter++; - ops.TPflash(); - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhases()[5].getComponent(i).getName().equals("water") - || system.getPhases()[5].getComponent(i).getName().equals("MEG")) { - system.getPhases()[5].getComponent(i).setx(0.5); - } else { - system.getPhases()[5].getComponent(i).setx(1e-20); - } - } - logger.info("Temperaure " + system.getTemperature() + " sumx " + sumx); - sumx = 0.0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - // system.getPhases()[5].getComponent(i).setx(Ksolid[i] * - // system.getPhase(0).getComponent(i).getx()); - // if (system.getPhases()[5].getComponent(i).getx() > 0.000001) { - Ksolid[i] = system.getPhase(0).getComponent(i).getFugacityCoefficient() - / system.getPhases()[5].getComponent(i).fugcoef(system.getPhases()[5]); - sumx += Ksolid[i] * system.getPhase(0).getComponent(i).getx(); - // } - } - double funk = sumx - 1.0; - double dfunkdt = (funk - funkOld) / deltaT; - funkOld = funk; - double dT = -funk / dfunkdt; - double oldTemp = system.getTemperature(); - if (iter > 1) { - system.setTemperature(system.getTemperature() + dT * iter * 1.0 / (5.0 + iter)); - } else { - system.setTemperature(system.getTemperature() + 0.01); - } - deltaT = system.getTemperature() - oldTemp; - logger.info("Temperaure " + system.getTemperature() + " sumx " + sumx); - } while (Math.abs(sumx - 1.0) > 1e-8); - logger.info("sumx " + sumx); + system.setNumberOfPhases(system.getNumberOfPhases() + 1); + system.setPhaseIndex(system.getNumberOfPhases() - 1, 5); + system.setBeta(system.getNumberOfPhases() - 1, 1e-10); + system.init(3); + } - system.setNumberOfPhases(system.getNumberOfPhases() + 1); - system.setPhaseIndex(system.getNumberOfPhases() - 1, 5); - system.setBeta(system.getNumberOfPhases() - 1, 1e-10); - system.init(3); - } + /** {@inheritDoc} */ + @Override + public void run() { + // system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + double deltaT = 1.0; - /** {@inheritDoc} */ - @Override - public void run() { - // system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - double deltaT = 1.0; + // logger.info("starting.... "); + int compNumber_1 = system.getPhase(0).getComponent(comp1).getComponentNumber(); - // logger.info("starting.... "); - int compNumber_1 = system.getPhase(0).getComponent(comp1).getComponentNumber(), - compNumber_2 = system.getPhase(0).getComponent(comp2).getComponentNumber(); + // MEGwater parameters - // MEGwater parameters + int compNumber_2 = system.getPhase(0).getComponent(comp2).getComponentNumber(); + double temperature = 0.0; + double oldTemperature = 0.0; + double oldError = 0.0; + double error = 0.0; + boolean testFalse = true; + int iteration = 0; + do { + iteration++; + temperature = system.getTemperature(); + ops.TPflash(); - double temperature = 0.0, oldTemperature = 0.0, oldError = 0.0, error = 0.0; - boolean testFalse = true; - int iteration = 0; - do { - iteration++; - temperature = system.getTemperature(); - ops.TPflash(); + // reading activity coefficients - // reading activity coefficients + double complexActivity = system.getPhaseOfType("aqueous").getActivityCoefficient(compNumber_1) + * system.getPhaseOfType("aqueous").getComponent(compNumber_1).getx() + * system.getPhaseOfType("aqueous").getActivityCoefficient(compNumber_2) + * system.getPhaseOfType("aqueous").getComponent(compNumber_2).getx(); - double complexActivity = - system.getPhaseOfType("aqueous").getActivityCoefficient(compNumber_1) - * system.getPhaseOfType("aqueous").getComponent(compNumber_1).getx() - * system.getPhaseOfType("aqueous").getActivityCoefficient(compNumber_2) - * system.getPhaseOfType("aqueous").getComponent(compNumber_2).getx(); + if (complexActivity < 1e-5) { + complexActivity = 1e-5; + } + // logger.info("activityMix.... " + complexActivity); - if (complexActivity < 1e-5) { - complexActivity = 1e-5; - } - // logger.info("activityMix.... " + complexActivity); + double rightSide = + neqsim.thermo.ThermodynamicConstantsInterface.R * Math.log(complexActivity); + // logger.info("right.... " + rightSide); + double leftSide = neqsim.thermo.ThermodynamicConstantsInterface.R * Math.log(Kcomplex) + + HrefComplex * (1.0 / TrefComplex - 1.0 / system.getTemperature()); + // logger.info("left.... " + leftSide); + error = rightSide - leftSide; + double dErrordT = (error - oldError) / (temperature - oldTemperature); + if (iteration >= 2 && testFalse) { + deltaT = -error / dErrordT; + } else { + deltaT = (rightSide - leftSide); + } + if (Math.abs(deltaT) > 10.0) { + testFalse = !testFalse; + deltaT = Math.signum(deltaT) * 10.0; + } else { + testFalse = true; + } + oldTemperature = temperature; + oldError = error; + // logger.info("temperature " + temperature); + system.setTemperature(system.getTemperature() + deltaT); + } while (Math.abs(deltaT) > 0.001 && iteration < 50); + } - double rightSide = - neqsim.thermo.ThermodynamicConstantsInterface.R * Math.log(complexActivity); - // logger.info("right.... " + rightSide); - double leftSide = neqsim.thermo.ThermodynamicConstantsInterface.R * Math.log(Kcomplex) - + HrefComplex * (1.0 / TrefComplex - 1.0 / system.getTemperature()); - // logger.info("left.... " + leftSide); - error = rightSide - leftSide; - double dErrordT = (error - oldError) / (temperature - oldTemperature); - if (iteration >= 2 && testFalse) { - deltaT = -error / dErrordT; - } else { - deltaT = (rightSide - leftSide); - } - if (Math.abs(deltaT) > 10.0) { - testFalse = !testFalse; - deltaT = Math.signum(deltaT) * 10.0; - } else { - testFalse = true; - } - oldTemperature = temperature; - oldError = error; - // logger.info("temperature " + temperature); - system.setTemperature(system.getTemperature() + deltaT); - } while (Math.abs(deltaT) > 0.001 && iteration < 50); - } - - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} - /** - *

- * getKcomplex. - *

- * - * @return the Kcomplex - */ - public double getKcomplex() { - return Kcomplex; - } + /** + *

+ * getKcomplex. + *

+ * + * @return the Kcomplex + */ + public double getKcomplex() { + return Kcomplex; + } - /** - *

- * setKcomplex. - *

- * - * @param Kcomplex the Kcomplex to set - */ - public void setKcomplex(double Kcomplex) { - SolidComplexTemperatureCalc.Kcomplex = Kcomplex; - } + /** + *

+ * setKcomplex. + *

+ * + * @param Kcomplex the Kcomplex to set + */ + public void setKcomplex(double Kcomplex) { + SolidComplexTemperatureCalc.Kcomplex = Kcomplex; + } - /** - *

- * getHrefComplex. - *

- * - * @return the HrefComplex - */ - public double getHrefComplex() { - return HrefComplex; - } + /** + *

+ * getHrefComplex. + *

+ * + * @return the HrefComplex + */ + public double getHrefComplex() { + return HrefComplex; + } - /** - *

- * setHrefComplex. - *

- * - * @param HrefComplex the HrefComplex to set - */ - public void setHrefComplex(double HrefComplex) { - SolidComplexTemperatureCalc.HrefComplex = HrefComplex; - } + /** + *

+ * setHrefComplex. + *

+ * + * @param HrefComplex the HrefComplex to set + */ + public void setHrefComplex(double HrefComplex) { + SolidComplexTemperatureCalc.HrefComplex = HrefComplex; + } - /** - *

- * getTrefComplex. - *

- * - * @return the TrefComplex - */ - public double getTrefComplex() { - return TrefComplex; - } + /** + *

+ * getTrefComplex. + *

+ * + * @return the TrefComplex + */ + public double getTrefComplex() { + return TrefComplex; + } - /** - *

- * setTrefComplex. - *

- * - * @param TrefComplex the TrefComplex to set - */ - public void setTrefComplex(double TrefComplex) { - SolidComplexTemperatureCalc.TrefComplex = TrefComplex; - } + /** + *

+ * setTrefComplex. + *

+ * + * @param TrefComplex the TrefComplex to set + */ + public void setTrefComplex(double TrefComplex) { + SolidComplexTemperatureCalc.TrefComplex = TrefComplex; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java index 0906c556fb..8aa9f60915 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WATcalc.java @@ -14,75 +14,69 @@ * @version $Id: $Id */ public class WATcalc extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(WATcalc.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(WATcalc.class); - /** - *

- * Constructor for WATcalc. - *

- */ - public WATcalc() {} + /** + *

+ * Constructor for WATcalc. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public WATcalc(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for WATcalc. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public WATcalc(SystemInterface system) { - super(system); + /** {@inheritDoc} */ + @Override + public void run() { + double sumx = 0.0; + // system.setHydrateCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(system); + int iter = 0; + double funkOld = 0.0; + double deltaT = 1.0; + double[] Ksolid = new double[system.getPhase(0).getNumberOfComponents()]; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + system.getPhases()[5].getComponent(i).setx(1.0); + Ksolid[i] = 1.0; } + do { + iter++; + ops.TPflash(); - /** {@inheritDoc} */ - @Override - public void run() { - double sumx = 0.0; - // system.setHydrateCheck(true); - ThermodynamicOperations ops = new ThermodynamicOperations(system); - int iter = 0; - double funkOld = 0.0, deltaT = 1.0; - double[] Ksolid = new double[system.getPhase(0).getNumberOfComponents()]; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - system.getPhases()[5].getComponent(i).setx(1.0); - Ksolid[i] = 1.0; - } - do { - iter++; - ops.TPflash(); + sumx = 0.0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + system.getPhases()[5].getComponent(i) + .setx(Ksolid[i] * system.getPhase(0).getComponent(i).getx()); + Ksolid[i] = system.getPhase(0).getComponent(i).getFugacityCoefficient() + / system.getPhases()[5].getComponent(i).fugcoef(system.getPhases()[5]); + sumx += Ksolid[i] * system.getPhase(0).getComponent(i).getx(); + } + double funk = sumx - 1.0; + double dfunkdt = (funk - funkOld) / deltaT; + funkOld = funk; + double dT = -funk / dfunkdt; + double oldTemp = system.getTemperature(); + if (iter > 1) { + system.setTemperature(system.getTemperature() + dT * iter * 1.0 / (5.0 + iter)); + } else { + system.setTemperature(system.getTemperature() - 0.1); + } + deltaT = system.getTemperature() - oldTemp; + // logger.info("sumx " + sumx + " deltaT "+ deltaT + " dT "+dT + " temperature " + // + system.getTemperature()); + } while (Math.abs(sumx - 1.0) > 1e-8 && iter < 100); + // logger.info("sumx " + sumx); - sumx = 0.0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - system.getPhases()[5].getComponent(i) - .setx(Ksolid[i] * system.getPhase(0).getComponent(i).getx()); - Ksolid[i] = system.getPhase(0).getComponent(i).getFugacityCoefficient() - / system.getPhases()[5].getComponent(i).fugcoef(system.getPhases()[5]); - sumx += Ksolid[i] * system.getPhase(0).getComponent(i).getx(); - } - double funk = sumx - 1.0; - double dfunkdt = (funk - funkOld) / deltaT; - funkOld = funk; - double dT = -funk / dfunkdt; - double oldTemp = system.getTemperature(); - if (iter > 1) { - system.setTemperature(system.getTemperature() + dT * iter * 1.0 / (5.0 + iter)); - } else { - system.setTemperature(system.getTemperature() - 0.1); - } - deltaT = system.getTemperature() - oldTemp; - // logger.info("sumx " + sumx + " deltaT "+ deltaT + " dT "+dT + " temperature " - // + system.getTemperature()); - } while (Math.abs(sumx - 1.0) > 1e-8 && iter < 100); - // logger.info("sumx " + sumx); + system.setNumberOfPhases(system.getNumberOfPhases() + 1); + system.setPhaseIndex(system.getNumberOfPhases() - 1, 5); + system.setBeta(system.getNumberOfPhases() - 1, 1e-10); + system.init(3); + } - system.setNumberOfPhases(system.getNumberOfPhases() + 1); - system.setPhaseIndex(system.getNumberOfPhases() - 1, 5); - system.setBeta(system.getNumberOfPhases() - 1, 1e-10); - system.init(3); - } - - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WaterDewPointEquilibriumLine.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WaterDewPointEquilibriumLine.java index 871b255c28..d7b0f80eb8 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WaterDewPointEquilibriumLine.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/WaterDewPointEquilibriumLine.java @@ -12,52 +12,54 @@ * @version $Id: $Id */ public class WaterDewPointEquilibriumLine extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - - double[][] hydratePoints = null; - double minPressure = 1.0, maxPressure = 200.0; - int numberOfPoints = 10; - - /** - *

- * Constructor for WaterDewPointEquilibriumLine. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param minPres a double - * @param maxPres a double - */ - public WaterDewPointEquilibriumLine(SystemInterface system, double minPres, double maxPres) { - super(system); - minPressure = minPres; - maxPressure = maxPres; - } + private static final long serialVersionUID = 1000; - /** {@inheritDoc} */ - @Override - public void run() { - SystemInterface system = this.system.clone(); - hydratePoints = new double[2][numberOfPoints]; - ThermodynamicOperations ops = new ThermodynamicOperations(system); - - system.setPressure(minPressure); - double dp = (maxPressure - minPressure) / (numberOfPoints - 1.0); - for (int i = 0; i < numberOfPoints; i++) { - system.setPressure(minPressure + dp * i); - try { - ops.waterDewPointTemperatureMultiphaseFlash(); - } catch (Exception e) { - logger.error("error", e); - } - hydratePoints[0][i] = system.getTemperature(); - hydratePoints[1][i] = system.getPressure(); - // system.display(); - } - } + double[][] hydratePoints = null; + double minPressure = 1.0; + double maxPressure = 200.0; + + int numberOfPoints = 10; - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return hydratePoints; + /** + *

+ * Constructor for WaterDewPointEquilibriumLine. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param minPres a double + * @param maxPres a double + */ + public WaterDewPointEquilibriumLine(SystemInterface system, double minPres, double maxPres) { + super(system); + minPressure = minPres; + maxPressure = maxPres; + } + + /** {@inheritDoc} */ + @Override + public void run() { + SystemInterface system = this.system.clone(); + hydratePoints = new double[2][numberOfPoints]; + ThermodynamicOperations ops = new ThermodynamicOperations(system); + + system.setPressure(minPressure); + double dp = (maxPressure - minPressure) / (numberOfPoints - 1.0); + for (int i = 0; i < numberOfPoints; i++) { + system.setPressure(minPressure + dp * i); + try { + ops.waterDewPointTemperatureMultiphaseFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + hydratePoints[0][i] = system.getTemperature(); + hydratePoints[1][i] = system.getPressure(); + // system.display(); } + } + + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return hydratePoints; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/addIonToScaleSaturation.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/addIonToScaleSaturation.java index f63d17facc..8a468485db 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/addIonToScaleSaturation.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/addIonToScaleSaturation.java @@ -14,183 +14,167 @@ * @version $Id: $Id */ public class addIonToScaleSaturation extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(addIonToScaleSaturation.class); - String saltName = "", scaleSaltName = "", nameOfIonToBeAdded = ""; - int phaseNumber = 1; - String[][] resultTable = null; - - /** - *

- * Constructor for addIonToScaleSaturation. - *

- */ - public addIonToScaleSaturation() {} - - /** - *

- * Constructor for addIonToScaleSaturation. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param phaseNumber a int - * @param scaleSaltName a {@link java.lang.String} object - * @param nameOfIonToBeAdded a {@link java.lang.String} object - */ - public addIonToScaleSaturation(SystemInterface system, int phaseNumber, String scaleSaltName, - String nameOfIonToBeAdded) { - super(system); - this.phaseNumber = phaseNumber; - this.scaleSaltName = scaleSaltName; - this.nameOfIonToBeAdded = nameOfIonToBeAdded; - logger.info("ok "); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(addIonToScaleSaturation.class); + + String saltName = ""; + String scaleSaltName = ""; + String nameOfIonToBeAdded = ""; + int phaseNumber = 1; + String[][] resultTable = null; + + /** + *

+ * Constructor for addIonToScaleSaturation. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param phaseNumber a int + * @param scaleSaltName a {@link java.lang.String} object + * @param nameOfIonToBeAdded a {@link java.lang.String} object + */ + public addIonToScaleSaturation(SystemInterface system, int phaseNumber, String scaleSaltName, + String nameOfIonToBeAdded) { + super(system); + this.phaseNumber = phaseNumber; + this.scaleSaltName = scaleSaltName; + this.nameOfIonToBeAdded = nameOfIonToBeAdded; + logger.info("ok "); + } + + /** {@inheritDoc} */ + @Override + public void run() { + ThermodynamicOperations ops = new ThermodynamicOperations(system); + double ksp = 0.0; + resultTable = new String[10][3]; + double stoc1 = 1e-20; + double stoc2 = 1e-20; + String saltName = ""; + String name1 = ""; + String name2 = ""; + system.init(1); + int numb = 0; + + for (int i = 0; i < 10; i++) { + for (int j = 0; j < 3; j++) { + resultTable[i][j] = ""; + } } - /** {@inheritDoc} */ - @Override - public void run() { - ThermodynamicOperations ops = new ThermodynamicOperations(system); - double ksp = 0.0; - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = database.getResultSet("SELECT * FROM compsalt"); - resultTable = new String[10][3]; - double stoc1 = 1e-20, stoc2 = 1e-20; - String saltName = ""; - String name1 = ""; - String name2 = ""; - system.init(1); - int numb = 0; - - for (int i = 0; i < 10; i++) { - for (int j = 0; j < 3; j++) { - resultTable[i][j] = ""; - } - } + resultTable[0][0] = "Salt"; + resultTable[0][1] = "relative solubility"; + resultTable[0][2] = ""; + + double numberOfMolesMEG = 0.0; + if (system.getPhase(phaseNumber).hasComponent("MEG")) { + numberOfMolesMEG = system.getPhase(phaseNumber).getComponent("MEG").getNumberOfMolesInPhase(); + system.addComponent("MEG", -numberOfMolesMEG * 0.9999, phaseNumber); + system.addComponent("water", numberOfMolesMEG, phaseNumber); + system.init(1); + system.getChemicalReactionOperations().solveChemEq(phaseNumber, 1); + } - resultTable[0][0] = "Salt"; - resultTable[0][1] = "relative solubility"; - resultTable[0][2] = ""; - - double numberOfMolesMEG = 0.0; - if (system.getPhase(phaseNumber).hasComponent("MEG")) { - numberOfMolesMEG = - system.getPhase(phaseNumber).getComponent("MEG").getNumberOfMolesInPhase(); - system.addComponent("MEG", -numberOfMolesMEG * 0.9999, phaseNumber); - system.addComponent("water", numberOfMolesMEG, phaseNumber); - system.init(1); - system.getChemicalReactionOperations().solveChemEq(phaseNumber, 1); + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = database.getResultSet("SELECT * FROM compsalt")) { + while (dataSet.next()) { + saltName = dataSet.getString("SaltName").trim(); + name1 = dataSet.getString("ion1").trim(); + name2 = dataSet.getString("ion2").trim(); + iterations++; + stoc1 = Double.parseDouble(dataSet.getString("stoc1")); + stoc2 = Double.parseDouble(dataSet.getString("stoc2")); + double temperatureC = system.getPhase(phaseNumber).getTemperature(); + ksp = Math.exp(Double.parseDouble(dataSet.getString("Ksp-water")) / temperatureC + + Double.parseDouble(dataSet.getString("Ksp-water2")) + + Math.log(temperatureC) * Double.parseDouble(dataSet.getString("Ksp-water3")) + + temperatureC * Double.parseDouble(dataSet.getString("Ksp-water4")) + + Double.parseDouble(dataSet.getString("Ksp-water5")) / (temperatureC * temperatureC)); + if (saltName.equals("NaCl")) { + ksp = -814.18 + 7.4685 * temperatureC - 2.3262e-2 * temperatureC * temperatureC + + 3.0536e-5 * Math.pow(temperatureC, 3.0) - 1.4573e-8 * Math.pow(temperatureC, 4.0); } - try { - while (dataSet.next()) { - saltName = dataSet.getString("SaltName").trim(); - name1 = dataSet.getString("ion1").trim(); - name2 = dataSet.getString("ion2").trim(); - iterations++; - stoc1 = Double.parseDouble(dataSet.getString("stoc1")); - stoc2 = Double.parseDouble(dataSet.getString("stoc2")); - double temperatureC = system.getPhase(phaseNumber).getTemperature(); - ksp = Math.exp(Double.parseDouble(dataSet.getString("Ksp-water")) / temperatureC - + Double.parseDouble(dataSet.getString("Ksp-water2")) - + Math.log(temperatureC) - * Double.parseDouble(dataSet.getString("Ksp-water3")) - + temperatureC * Double.parseDouble(dataSet.getString("Ksp-water4")) - + Double.parseDouble(dataSet.getString("Ksp-water5")) - / (temperatureC * temperatureC)); - if (saltName.equals("NaCl")) { - ksp = -814.18 + 7.4685 * temperatureC - 2.3262e-2 * temperatureC * temperatureC - + 3.0536e-5 * Math.pow(temperatureC, 3.0) - - 1.4573e-8 * Math.pow(temperatureC, 4.0); - } - - if (system.getPhase(phaseNumber).hasComponent(name1) - && system.getPhase(phaseNumber).hasComponent(name2)) { - numb++; - logger.info("reaction added: " + name1 + " " + name2); - logger.info("theoretic Ksp = " + ksp); - double oldScalePotentialFactor = 1.0, error = 1.0; - int iterations = 0; - do { - iterations++; - logger.info("theoretic lnKsp = " + Math.log(ksp)); - int compNumb1 = system.getPhase(phaseNumber).getComponent(name1) - .getComponentNumber(); - int compNumb2 = system.getPhase(phaseNumber).getComponent(name2) - .getComponentNumber(); - int waterompNumb = system.getPhase(phaseNumber).getComponent("water") - .getComponentNumber(); - - double x1 = system.getPhase(phaseNumber).getComponent(name1).getx() - / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() - * system.getPhase(phaseNumber).getComponent(waterompNumb) - .getMolarMass()); - double x2 = system.getPhase(phaseNumber).getComponent(name2).getx() - / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() - * system.getPhase(phaseNumber).getComponent(waterompNumb) - .getMolarMass()); - double kspReac = Math - .pow(system.getPhase(phaseNumber).getActivityCoefficient(compNumb1, - waterompNumb) * x1, stoc1) - * Math.pow( - x2 * system.getPhase(phaseNumber) - .getActivityCoefficient(compNumb2, waterompNumb), - stoc2); - double stocKsp = Math.pow(x1, stoc1) * Math.pow(x2, stoc2); - logger.info("calc Ksp " + kspReac); - logger.info("stoc Ksp " + stocKsp); - logger.info("activity " + kspReac / stocKsp); - logger.info("mol/kg " + x1); - - double scalePotentialFactor = kspReac / ksp; - - error = (scalePotentialFactor - oldScalePotentialFactor) - / scalePotentialFactor * 100; - oldScalePotentialFactor = scalePotentialFactor; - logger.info("Scale potential factor " + scalePotentialFactor); - resultTable[numb][0] = name1 + " " + name2; - resultTable[numb][1] = Double.toString(scalePotentialFactor); - resultTable[numb][2] = ""; - - if (saltName.equals(scaleSaltName)) { - logger.info("error " + error); - logger.info("pH : " + system.getPhase(phaseNumber).getpH()); - system.addComponent(nameOfIonToBeAdded, - (1.0 - scalePotentialFactor) / 100000.0, phaseNumber); - ops.TPflash(); - logger.info("x1 " - + system.getPhase(phaseNumber).getComponent(name1).getx()); - logger.info("x2 " - + system.getPhase(phaseNumber).getComponent(name2).getx()); - } - } while (saltName.equals(scaleSaltName) && Math.abs(error) > 1e-6 - && iterations < 200);// - } + if (system.getPhase(phaseNumber).hasComponent(name1) + && system.getPhase(phaseNumber).hasComponent(name2)) { + numb++; + logger.info("reaction added: " + name1 + " " + name2); + logger.info("theoretic Ksp = " + ksp); + double oldScalePotentialFactor = 1.0; + double error = 1.0; + int iterations = 0; + do { + iterations++; + logger.info("theoretic lnKsp = " + Math.log(ksp)); + int compNumb1 = system.getPhase(phaseNumber).getComponent(name1).getComponentNumber(); + int compNumb2 = system.getPhase(phaseNumber).getComponent(name2).getComponentNumber(); + int waterompNumb = + system.getPhase(phaseNumber).getComponent("water").getComponentNumber(); + + double x1 = system.getPhase(phaseNumber).getComponent(name1).getx() + / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() + * system.getPhase(phaseNumber).getComponent(waterompNumb).getMolarMass()); + double x2 = system.getPhase(phaseNumber).getComponent(name2).getx() + / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() + * system.getPhase(phaseNumber).getComponent(waterompNumb).getMolarMass()); + double kspReac = Math + .pow(system.getPhase(phaseNumber).getActivityCoefficient(compNumb1, waterompNumb) + * x1, stoc1) + * Math.pow(x2 + * system.getPhase(phaseNumber).getActivityCoefficient(compNumb2, waterompNumb), + stoc2); + double stocKsp = Math.pow(x1, stoc1) * Math.pow(x2, stoc2); + logger.info("calc Ksp " + kspReac); + logger.info("stoc Ksp " + stocKsp); + logger.info("activity " + kspReac / stocKsp); + logger.info("mol/kg " + x1); + + double scalePotentialFactor = kspReac / ksp; + + error = (scalePotentialFactor - oldScalePotentialFactor) / scalePotentialFactor * 100; + oldScalePotentialFactor = scalePotentialFactor; + logger.info("Scale potential factor " + scalePotentialFactor); + resultTable[numb][0] = name1 + " " + name2; + resultTable[numb][1] = Double.toString(scalePotentialFactor); + resultTable[numb][2] = ""; + + if (saltName.equals(scaleSaltName)) { + logger.info("error " + error); + logger.info("pH : " + system.getPhase(phaseNumber).getpH()); + system.addComponent(nameOfIonToBeAdded, (1.0 - scalePotentialFactor) / 100000.0, + phaseNumber); + ops.TPflash(); + logger.info("x1 " + system.getPhase(phaseNumber).getComponent(name1).getx()); + logger.info("x2 " + system.getPhase(phaseNumber).getComponent(name2).getx()); } - } catch (Exception e) { - logger.info("failed " + e.toString()); - } - - if (system.getPhase(phaseNumber).hasComponent("MEG")) { - system.addComponent("MEG", numberOfMolesMEG * 0.9999, phaseNumber); - system.addComponent("water", -numberOfMolesMEG, phaseNumber); - system.init(1); - system.getChemicalReactionOperations().solveChemEq(phaseNumber, 1); + } while (saltName.equals(scaleSaltName) && Math.abs(error) > 1e-6 && iterations < 200); } + } + } catch (Exception ex) { + logger.info("failed ", ex); } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} - - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - logger.info("checking table...scale " + resultTable[0][0]); - logger.info("checking table...scale " + resultTable[0][1]); - logger.info("checking table...scale " + resultTable[0][2]); - logger.info("checking table...scale " + resultTable[1][0]); - logger.info("checking table...scale " + resultTable[1][1]); - logger.info("checking table...scale " + resultTable[1][2]); - return resultTable; + if (system.getPhase(phaseNumber).hasComponent("MEG")) { + system.addComponent("MEG", numberOfMolesMEG * 0.9999, phaseNumber); + system.addComponent("water", -numberOfMolesMEG, phaseNumber); + system.init(1); + system.getChemicalReactionOperations().solveChemEq(phaseNumber, 1); } + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + logger.info("checking table...scale " + resultTable[0][0]); + logger.info("checking table...scale " + resultTable[0][1]); + logger.info("checking table...scale " + resultTable[0][2]); + logger.info("checking table...scale " + resultTable[1][0]); + logger.info("checking table...scale " + resultTable[1][1]); + logger.info("checking table...scale " + resultTable[1][2]); + return resultTable; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlash.java index 46c5d916b4..b09fcf1d7d 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlash.java @@ -13,178 +13,170 @@ * @version $Id: $Id */ public class bubblePointPressureFlash extends constantDutyPressureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(bubblePointPressureFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(bubblePointPressureFlash.class); + + /** + *

+ * Constructor for bubblePointPressureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public bubblePointPressureFlash(SystemInterface system) { + super(system); + } + + /** {@inheritDoc} */ + @Override + public void run() { + if (system.getPhase(0).getNumberOfComponents() == 1 + && system.getTemperature() > system.getPhase(0).getComponent(0).getTC()) { + setSuperCritical(true); + } - /** - *

- * Constructor for bubblePointPressureFlash. - *

- */ - public bubblePointPressureFlash() {} + int iterations = 0; + int maxNumberOfIterations = 500; + double yold = 0; + double ytotal = 1; + // double deriv = 0, funk = 0; + boolean chemSolved = true; + // logger.info("starting"); + // system.setPressure(1.0); + system.init(0); + system.setNumberOfPhases(2); + system.setBeta(1, 1.0 - 1e-10); + system.setBeta(0, 1e-10); + + double oldPres = 0; + double oldChemPres = 1; + if (system.isChemicalSystem()) { + system.getChemicalReactionOperations().solveChemEq(1, 0); + system.getChemicalReactionOperations().solveChemEq(1, 1); + } - /** - *

- * Constructor for bubblePointPressureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public bubblePointPressureFlash(SystemInterface system) { - super(system); + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[1].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getz()); + if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setx(1e-40); + } else { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + } } - /** {@inheritDoc} */ - @Override - public void run() { - if (system.getPhase(0).getNumberOfComponents() == 1 - && system.getTemperature() > system.getPhase(0).getComponent(0).getTC()) { - setSuperCritical(true); - } + ytotal = 0.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + ytotal += system.getPhases()[0].getComponents()[i].getx(); + } - int iterations = 0, maxNumberOfIterations = 500; - double yold = 0, ytotal = 1; - // double deriv = 0, funk = 0; - boolean chemSolved = true; - // logger.info("starting"); - // system.setPressure(1.0); - system.init(0); - system.setNumberOfPhases(2); - system.setBeta(1, 1.0 - 1e-10); - system.setBeta(0, 1e-10); + double ktot = 0.0; + int chemIter = 0; - double oldPres = 0, oldChemPres = 1; - if (system.isChemicalSystem()) { - system.getChemicalReactionOperations().solveChemEq(1, 0); - system.getChemicalReactionOperations().solveChemEq(1, 1); + do { + chemIter++; + oldChemPres = system.getPressure(); + iterations = 0; + do { + iterations++; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getx() / ytotal); } - + system.init(3); + oldPres = system.getPressure(); + ktot = 0.0; for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[1].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getz()); - if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setx(1e-40); - } else { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); + do { + yold = system.getPhases()[0].getComponents()[i].getx(); + if (!Double.isNaN(Math.exp( + Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) - Math + .log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient())))) { + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setK(1e-40); + } else { + system.getPhases()[0].getComponents()[i].setK(Math.exp(Math + .log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) + - Math.log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient()))); + } } + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + // logger.info("y err " + + // Math.abs(system.getPhases()[0].getComponents()[i].getx()-yold)); + } while (Math.abs(system.getPhases()[0].getComponents()[i].getx() - yold) / yold > 1e-8); + ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); + } + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + if (!Double.isNaN(system.getPhases()[0].getComponents()[i].getK())) { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + } else { + system.init(0); + logger.error("k err. : nan"); + } } ytotal = 0.0; for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - ytotal += system.getPhases()[0].getComponents()[i].getx(); + ytotal += system.getPhases()[0].getComponents()[i].getx(); } + // zlogger.info("ytot " + ytotal + " pres " + system.getPressure()); - double ktot = 0.0; - int chemIter = 0; - - do { - chemIter++; - oldChemPres = system.getPressure(); - iterations = 0; - do { - iterations++; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getx() / ytotal); - } - system.init(3); - oldPres = system.getPressure(); - ktot = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - do { - yold = system.getPhases()[0].getComponents()[i].getx(); - if (!Double.isNaN(Math.exp(Math.log( - system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) - - Math.log(system.getPhases()[0].getComponents()[i] - .getFugacityCoefficient())))) { - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setK(1e-40); - } else { - system.getPhases()[0].getComponents()[i].setK(Math.exp(Math - .log(system.getPhases()[1].getComponents()[i] - .getFugacityCoefficient()) - - Math.log(system.getPhases()[0].getComponents()[i] - .getFugacityCoefficient()))); - } - } - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - // logger.info("y err " + - // Math.abs(system.getPhases()[0].getComponents()[i].getx()-yold)); - } while (Math.abs(system.getPhases()[0].getComponents()[i].getx() - yold) - / yold > 1e-8); - ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); - } - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - if (!Double.isNaN(system.getPhases()[0].getComponents()[i].getK())) { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - } else { - system.init(0); - logger.error("k err. : nan"); - } - } + // system.getPhase(0).normalize(); - ytotal = 0.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - ytotal += system.getPhases()[0].getComponents()[i].getx(); - } - // zlogger.info("ytot " + ytotal + " pres " + system.getPressure()); - - // system.getPhase(0).normalize(); - - if (ytotal > 1.5) { - ytotal = 1.5; - } - if (ytotal < 0.5) { - ytotal = 0.5; - } - system.setPressure(system.getPressure() * ytotal);// + - // 0.5*(ytotal*system.getPressure()-system.getPressure())); - if (system.getPressure() < 0) { - system.setPressure(oldChemPres / 2.0); - run(); - return; - } - if (system.getPressure() > 5 * oldChemPres) { - system.setPressure(oldChemPres * 5); - run(); - return; - } - // logger.info("iter in bub calc " + iterations + " pres " + - // system.getPressure()+ " ytot " + ytotal + " chem iter " + chemIter); - } while (((((Math.abs(ytotal - 1.0)) > 1e-7) - || Math.abs(oldPres - system.getPressure()) / oldPres > 1e-6) - && (iterations < maxNumberOfIterations)) || iterations < 5); - - if (system.isChemicalSystem()) {// && (iterations%3)==0 && iterations<50){ - chemSolved = system.getChemicalReactionOperations().solveChemEq(1, 1); - system.setBeta(1, 1.0 - 1e-10); - system.setBeta(0, 1e-10); - } - // logger.info("iter in bub calc " + iterations + " pres " + - // system.getPressure()+ " chem iter " + chemIter); - } while ((Math.abs(oldChemPres - system.getPressure()) / oldChemPres > 1e-6 || chemIter < 2 - || !chemSolved) && chemIter < 20); - // if(system.getPressure()>300) system.setPressure(300.0); - // logger.info("iter in bub calc " + iterations + " pres " + - // system.getPressure()+ " chem iter " + chemIter); - // logger.info("iter " + iterations + " XTOT " +ytotal + " ktot " +ktot); - system.init(1); - if (Math.abs(ytotal - 1.0) > 1e-4 - || ktot < 1e-3 && system.getPhase(0).getNumberOfComponents() > 1) { - logger.info("ytot " + Math.abs(ytotal - 1.0)); - setSuperCritical(true); + if (ytotal > 1.5) { + ytotal = 1.5; + } + if (ytotal < 0.5) { + ytotal = 0.5; } + system.setPressure(system.getPressure() * ytotal); + // + 0.5*(ytotal*system.getPressure()-system.getPressure())); + if (system.getPressure() < 0) { + system.setPressure(oldChemPres / 2.0); + run(); + return; + } + if (system.getPressure() > 5 * oldChemPres) { + system.setPressure(oldChemPres * 5); + run(); + return; + } + // logger.info("iter in bub calc " + iterations + " pres " + + // system.getPressure()+ " ytot " + ytotal + " chem iter " + chemIter); + } while (((((Math.abs(ytotal - 1.0)) > 1e-7) + || Math.abs(oldPres - system.getPressure()) / oldPres > 1e-6) + && (iterations < maxNumberOfIterations)) || iterations < 5); + + if (system.isChemicalSystem()) { // && (iterations%3)==0 && iterations<50){ + chemSolved = system.getChemicalReactionOperations().solveChemEq(1, 1); + system.setBeta(1, 1.0 - 1e-10); + system.setBeta(0, 1e-10); + } + // logger.info("iter in bub calc " + iterations + " pres " + + // system.getPressure()+ " chem iter " + chemIter); + } while ((Math.abs(oldChemPres - system.getPressure()) / oldChemPres > 1e-6 || chemIter < 2 + || !chemSolved) && chemIter < 20); + // if(system.getPressure()>300) system.setPressure(300.0); + // logger.info("iter in bub calc " + iterations + " pres " + + // system.getPressure()+ " chem iter " + chemIter); + // logger.info("iter " + iterations + " XTOT " +ytotal + " ktot " +ktot); + system.init(1); + if (Math.abs(ytotal - 1.0) > 1e-4 + || ktot < 1e-3 && system.getPhase(0).getNumberOfComponents() > 1) { + logger.info("ytot " + Math.abs(ytotal - 1.0)); + setSuperCritical(true); } + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlashDer.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlashDer.java index f3faddc8bc..b3a195225d 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlashDer.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlashDer.java @@ -13,196 +13,188 @@ * @version $Id: $Id */ public class bubblePointPressureFlashDer extends constantDutyPressureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(bubblePointPressureFlashDer.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(bubblePointPressureFlashDer.class); - /** - *

- * Constructor for bubblePointPressureFlashDer. - *

- */ - public bubblePointPressureFlashDer() {} + /** + *

+ * Constructor for bubblePointPressureFlashDer. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public bubblePointPressureFlashDer(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for bubblePointPressureFlashDer. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public bubblePointPressureFlashDer(SystemInterface system) { - super(system); + /** {@inheritDoc} */ + @Override + public void run() { + if (system.getPhase(0).getNumberOfComponents() == 1 + && system.getTemperature() > system.getPhase(0).getComponent(0).getTC()) { + setSuperCritical(true); } + int iterations = 0; + int maxNumberOfIterations = 500; + double yold = 0; + double ytotal = 1; + double deriv = 0; + double funk = 0; + boolean chemSolved = true; + // logger.info("starting"); + // system.setPressure(1.0); + system.init(0); + system.setNumberOfPhases(2); + system.setBeta(1, 1.0 - 1e-10); + system.setBeta(0, 1e-10); - /** {@inheritDoc} */ - @Override - public void run() { - if (system.getPhase(0).getNumberOfComponents() == 1 - && system.getTemperature() > system.getPhase(0).getComponent(0).getTC()) { - setSuperCritical(true); - } - int iterations = 0, maxNumberOfIterations = 500; - double yold = 0, ytotal = 1, deriv = 0, funk = 0; - boolean chemSolved = true; - // logger.info("starting"); - // system.setPressure(1.0); - system.init(0); - system.setNumberOfPhases(2); - system.setBeta(1, 1.0 - 1e-10); - system.setBeta(0, 1e-10); + double oldPres = 0; + double oldChemPres = 1; + if (system.isChemicalSystem()) { + // (1,1) changed to (1,0) by Neeraj. Also change at line 125 + system.getChemicalReactionOperations().solveChemEq(1, 0); + } - double oldPres = 0, oldChemPres = 1; - if (system.isChemicalSystem()) { - // (1,1) changed to (1,0) by Neeraj. Also change at line 125 - system.getChemicalReactionOperations().solveChemEq(1, 0); - } + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[1].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getz()); + if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setx(1e-40); + } else { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + } + } + + ytotal = 0.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + ytotal += system.getPhases()[0].getComponents()[i].getx(); + } + double ktot = 0.0; + int chemIter = 0; + + do { + chemIter++; + oldChemPres = system.getPressure(); + iterations = 0; + do { + iterations++; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getx() / ytotal); + } + system.init(1); + oldPres = system.getPressure(); + ktot = 0.0; for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[1].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getz()); - if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setx(1e-40); - } else { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); + do { + yold = system.getPhases()[0].getComponents()[i].getx(); + if (!Double.isNaN(Math.exp( + Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) - Math + .log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient())))) { + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setK(1e-40); + } else { + system.getPhases()[0].getComponents()[i].setK(Math.exp(Math + .log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) + - Math.log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient()))); + } } + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + // logger.info("y err " + + // Math.abs(system.getPhases()[0].getComponents()[i].getx()-yold)); + } while (Math.abs(system.getPhases()[0].getComponents()[i].getx() - yold) / yold > 1e-8); + ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); + } + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + if (!Double.isNaN(system.getPhases()[0].getComponents()[i].getK())) { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + } else { + system.init(0); + logger.error("K error : nan"); + } } ytotal = 0.0; + deriv = 0.0; + funk = 0.0; for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - ytotal += system.getPhases()[0].getComponents()[i].getx(); + ytotal += system.getPhases()[0].getComponents()[i].getx(); + // Following lines added by Neeraj + funk += system.getPhases()[1].getComponents()[i].getx() + * system.getPhases()[1].getComponents()[i].getK(); + deriv += system.getPhases()[1].getComponents()[i].getx() + * system.getPhases()[1].getComponents()[i].getK() + * (system.getPhases()[1].getComponents()[i].logfugcoefdP(this.system.getPhase(1)) + - system.getPhases()[0].getComponents()[i].logfugcoefdP(this.system.getPhase(0))); } + // logger.info("ytot " + ytotal + " pres " + system.getPressure()); - double ktot = 0.0; - int chemIter = 0; - - do { - chemIter++; - oldChemPres = system.getPressure(); - iterations = 0; - do { - iterations++; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getx() / ytotal); - } - system.init(1); - oldPres = system.getPressure(); - ktot = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - do { - yold = system.getPhases()[0].getComponents()[i].getx(); - if (!Double.isNaN(Math.exp(Math.log( - system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) - - Math.log(system.getPhases()[0].getComponents()[i] - .getFugacityCoefficient())))) { - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setK(1e-40); - } else { - system.getPhases()[0].getComponents()[i].setK(Math.exp(Math - .log(system.getPhases()[1].getComponents()[i] - .getFugacityCoefficient()) - - Math.log(system.getPhases()[0].getComponents()[i] - .getFugacityCoefficient()))); - } - } - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - // logger.info("y err " + - // Math.abs(system.getPhases()[0].getComponents()[i].getx()-yold)); - } while (Math.abs(system.getPhases()[0].getComponents()[i].getx() - yold) - / yold > 1e-8); - ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); - } - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - if (!Double.isNaN(system.getPhases()[0].getComponents()[i].getK())) { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - } else { - system.init(0); - logger.error("K error : nan"); - } - } - - ytotal = 0.0; - deriv = 0.0; - funk = 0.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - ytotal += system.getPhases()[0].getComponents()[i].getx(); - // Following lines added by Neeraj - funk += system.getPhases()[1].getComponents()[i].getx() - * system.getPhases()[1].getComponents()[i].getK(); - deriv += system.getPhases()[1].getComponents()[i].getx() - * system.getPhases()[1].getComponents()[i].getK() - * (system.getPhases()[1].getComponents()[i] - .logfugcoefdP(this.system.getPhase(1)) - - system.getPhases()[0].getComponents()[i] - .logfugcoefdP(this.system.getPhase(0))); - } - // logger.info("ytot " + ytotal + " pres " + system.getPressure()); - - // system.getPhase(0).normalize(); - // logger.info("deriv - // "+system.getPhases()[0].getComponents()[3].logfugcoefdP(this.system.getPhase(0))); - // logger.info("ytot "+ytotal); - if (ytotal > 1.5) { - ytotal = 1.5; - } - if (ytotal < 0.5) { - ytotal = 0.5; - } - - // Following line added by Neeraj - system.setPressure(system.getPressure() - (funk - 1) / deriv); - // Following line commented out by Neeraj - // system.setPressure(system.getPressure()*ytotal);// + - // 0.5*(ytotal*system.getPressure()-system.getPressure())); - if (system.getPressure() < 0) { - system.setPressure(oldChemPres / 2.0); - run(); - return; - } - if (system.getPressure() > 5 * oldChemPres) { - system.setPressure(oldChemPres * 5); - run(); - return; - } - // logger.info("iter in bub calc " + iterations + " pres " + - // system.getPressure()+ " ytot " + ytotal + " chem iter " + chemIter); - } while (((((Math.abs(ytotal - 1.0)) > 1e-7) - || Math.abs(oldPres - system.getPressure()) / oldPres > 1e-6) - && (iterations < maxNumberOfIterations)) || iterations < 5); + // system.getPhase(0).normalize(); + // logger.info("deriv + // "+system.getPhases()[0].getComponents()[3].logfugcoefdP(this.system.getPhase(0))); + // logger.info("ytot "+ytotal); + if (ytotal > 1.5) { + ytotal = 1.5; + } + if (ytotal < 0.5) { + ytotal = 0.5; + } - if (system.isChemicalSystem()) {// && (iterations%3)==0 && iterations<50){ - // Should also change -- Neeraj - chemSolved = system.getChemicalReactionOperations().solveChemEq(1, 0); - system.setBeta(1, 1.0 - 1e-10); - system.setBeta(0, 1e-10); - } - // logger.info("iter in bub calc " + iterations + " pres " + - // system.getPressure()+ " chem iter " + chemIter); - } while ((Math.abs(oldChemPres - system.getPressure()) / oldChemPres > 1e-6 || chemIter < 2 - || !chemSolved) && chemIter < 20); - // if(system.getPressure()>300) system.setPressure(300.0); - // logger.info("iter in bub calc " + iterations + " pres " + - // system.getPressure()+ " chem iter " + chemIter); - // logger.info("iter " + iterations + " XTOT " +ytotal + " ktot " +ktot); - system.init(1); - if (Math.abs(ytotal - 1.0) > 1e-4 - || ktot < 1e-3 && system.getPhase(0).getNumberOfComponents() > 1) { - logger.info("ytot " + Math.abs(ytotal - 1.0)); - // Print command added by Neeraj - logger.info("Supercritical vapor phase !!"); - setSuperCritical(true); + // Following line added by Neeraj + system.setPressure(system.getPressure() - (funk - 1) / deriv); + // Following line commented out by Neeraj + // system.setPressure(system.getPressure()*ytotal); // + + // 0.5*(ytotal*system.getPressure()-system.getPressure())); + if (system.getPressure() < 0) { + system.setPressure(oldChemPres / 2.0); + run(); + return; } + if (system.getPressure() > 5 * oldChemPres) { + system.setPressure(oldChemPres * 5); + run(); + return; + } + // logger.info("iter in bub calc " + iterations + " pres " + + // system.getPressure()+ " ytot " + ytotal + " chem iter " + chemIter); + } while (((((Math.abs(ytotal - 1.0)) > 1e-7) + || Math.abs(oldPres - system.getPressure()) / oldPres > 1e-6) + && (iterations < maxNumberOfIterations)) || iterations < 5); + + if (system.isChemicalSystem()) { // && (iterations%3)==0 && iterations<50){ + // Should also change -- Neeraj + chemSolved = system.getChemicalReactionOperations().solveChemEq(1, 0); + system.setBeta(1, 1.0 - 1e-10); + system.setBeta(0, 1e-10); + } + // logger.info("iter in bub calc " + iterations + " pres " + + // system.getPressure()+ " chem iter " + chemIter); + } while ((Math.abs(oldChemPres - system.getPressure()) / oldChemPres > 1e-6 || chemIter < 2 + || !chemSolved) && chemIter < 20); + // if(system.getPressure()>300) system.setPressure(300.0); + // logger.info("iter in bub calc " + iterations + " pres " + + // system.getPressure()+ " chem iter " + chemIter); + // logger.info("iter " + iterations + " XTOT " +ytotal + " ktot " +ktot); + system.init(1); + if (Math.abs(ytotal - 1.0) > 1e-4 + || ktot < 1e-3 && system.getPhase(0).getNumberOfComponents() > 1) { + logger.info("ytot " + Math.abs(ytotal - 1.0)); + // Print command added by Neeraj + logger.info("Supercritical vapor phase !!"); + setSuperCritical(true); } + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureFlash.java index 67149d4266..158ae79762 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureFlash.java @@ -13,87 +13,78 @@ * @version $Id: $Id */ public class bubblePointTemperatureFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(bubblePointTemperatureFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(bubblePointTemperatureFlash.class); - /** - *

- * Constructor for bubblePointTemperatureFlash. - *

- */ - public bubblePointTemperatureFlash() {} + /** + *

+ * Constructor for bubblePointTemperatureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public bubblePointTemperatureFlash(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for bubblePointTemperatureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public bubblePointTemperatureFlash(SystemInterface system) { - super(system); - } - - /** {@inheritDoc} */ - @Override - public void run() { - int iterations = 0, maxNumberOfIterations = 10000; - double yold = 0, ytotal = 1; - double deriv = 0, funk = 0; + /** {@inheritDoc} */ + @Override + public void run() { + int iterations = 0; + int maxNumberOfIterations = 10000; + double yold = 0; + double ytotal = 1; + double deriv = 0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[1].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getz()); - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getx()); - } - system.setNumberOfPhases(2); + double funk = 0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[1].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getz()); + system.getPhases()[0].getComponents()[i].setx(system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getx()); + } + system.setNumberOfPhases(2); + do { + system.setTemperature((system.getTemperature() + system.getTemperature() / ytotal) / 10); + // logger.info("temp . " + system.getTemperature()); + funk = 0; + deriv = 0; + ytotal = 0; + system.init(2); + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { do { - system.setTemperature( - (system.getTemperature() + system.getTemperature() / ytotal) / 10); - // logger.info("temp . " + system.getTemperature()); - funk = 0; - deriv = 0; - ytotal = 0; - system.init(2); - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - do { - iterations++; + iterations++; - yold = system.getPhases()[0].getComponents()[i].getx(); - system.getPhases()[0].getComponents()[i] - .setK(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() - / system.getPhases()[0].getComponents()[i] - .getFugacityCoefficient()); - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[1].getComponents()[i].getx() - * system.getPhases()[1].getComponents()[i] - .getFugacityCoefficient() - / system.getPhases()[0].getComponents()[i] - .getFugacityCoefficient()); - } while ((Math.abs(yold - system.getPhases()[1].getComponents()[i].getx()) > 1e-10) - && (iterations < maxNumberOfIterations)); + yold = system.getPhases()[0].getComponents()[i].getx(); + system.getPhases()[0].getComponents()[i] + .setK(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() + / system.getPhases()[0].getComponents()[i].getFugacityCoefficient()); + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); + system.getPhases()[0].getComponents()[i].setx(system.getPhases()[1].getComponents()[i] + .getx() + * system.getPhases()[1].getComponents()[i].getFugacityCoefficient() + / system.getPhases()[0].getComponents()[i].getFugacityCoefficient()); + } while ((Math.abs(yold - system.getPhases()[1].getComponents()[i].getx()) > 1e-10) + && (iterations < maxNumberOfIterations)); - ytotal += system.getPhases()[0].getComponents()[i].getx(); - funk += system.getPhases()[1].getComponents()[i].getx() - * system.getPhases()[1].getComponents()[i].getK(); - deriv += system.getPhases()[1].getComponents()[i].getx() - * system.getPhases()[1].getComponents()[i].getK() - * (system.getPhases()[1].getComponents()[i].getdfugdt() - - system.getPhases()[0].getComponents()[i].getdfugdt()); - } + ytotal += system.getPhases()[0].getComponents()[i].getx(); + funk += system.getPhases()[1].getComponents()[i].getx() + * system.getPhases()[1].getComponents()[i].getK(); + deriv += system.getPhases()[1].getComponents()[i].getx() + * system.getPhases()[1].getComponents()[i].getK() + * (system.getPhases()[1].getComponents()[i].getdfugdt() + - system.getPhases()[0].getComponents()[i].getdfugdt()); + } - // logger.info("FUNK: " + funk); - logger.info("temp: " + system.getTemperature()); - // system.setPressure(-Math.log(funk)/(deriv/funk)+system.getPressure()); - system.setTemperature(-(funk - 1) / deriv + system.getTemperature()); - } while ((Math.abs(ytotal - 1) > 1e-10) && (iterations < maxNumberOfIterations)); - } + // logger.info("FUNK: " + funk); + logger.info("temp: " + system.getTemperature()); + // system.setPressure(-Math.log(funk)/(deriv/funk)+system.getPressure()); + system.setTemperature(-(funk - 1) / deriv + system.getTemperature()); + } while ((Math.abs(ytotal - 1) > 1e-10) && (iterations < maxNumberOfIterations)); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureNoDer.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureNoDer.java index 10f4ab06aa..abcd7d84c4 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureNoDer.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureNoDer.java @@ -13,158 +13,148 @@ * @version $Id: $Id */ public class bubblePointTemperatureNoDer extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(bubblePointTemperatureNoDer.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(bubblePointTemperatureNoDer.class); - /** - *

- * Constructor for bubblePointTemperatureNoDer. - *

- */ - public bubblePointTemperatureNoDer() {} + /** + *

+ * Constructor for bubblePointTemperatureNoDer. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public bubblePointTemperatureNoDer(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for bubblePointTemperatureNoDer. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public bubblePointTemperatureNoDer(SystemInterface system) { - super(system); + /** {@inheritDoc} */ + @Override + public void run() { + if (system.getPhase(0).getNumberOfComponents() == 1 + && system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { + setSuperCritical(true); } - /** {@inheritDoc} */ - @Override - public void run() { - if (system.getPhase(0).getNumberOfComponents() == 1 - && system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { - setSuperCritical(true); - } - - int iterations = 0, maxNumberOfIterations = 1000; - double yold = 0, ytotal = 1; - // double deriv = 0, funk = 0; - // logger.info("starting"); - - system.init(0); - system.setNumberOfPhases(2); - system.setBeta(1, 1.0 - 1e-10); - system.setBeta(0, 1e-10); - // need to fix this close to critical point - if (system.getPhase(0).getNumberOfComponents() == 1) { - double oldTemp = system.getTemperature(); - if (system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { - setSuperCritical(true); - return; - } - if (system.getPressure() < system.getPhase(0).getComponent(0).getPC()) { - system.setTemperature(system.getPhase(0).getComponent(0) - .getAntoineVaporTemperature(system.getPressure())); - } - if (system.getTemperature() > system.getPhase(0).getComponent(0).getTC() - || system.getTemperature() < system.getPhase(0).getComponent(0) - .getTriplePointTemperature()) { - system.setTemperature(oldTemp); - } - } + int iterations = 0; + int maxNumberOfIterations = 1000; + double yold = 0; + double ytotal = 1; + system.init(0); + system.setNumberOfPhases(2); + system.setBeta(1, 1.0 - 1e-10); + system.setBeta(0, 1e-10); + // need to fix this close to critical point + if (system.getPhase(0).getNumberOfComponents() == 1) { + double oldTemp = system.getTemperature(); + if (system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { + setSuperCritical(true); + return; + } + if (system.getPressure() < system.getPhase(0).getComponent(0).getPC()) { + system.setTemperature( + system.getPhase(0).getComponent(0).getAntoineVaporTemperature(system.getPressure())); + } + if (system.getTemperature() > system.getPhase(0).getComponent(0).getTC() || system + .getTemperature() < system.getPhase(0).getComponent(0).getTriplePointTemperature()) { + system.setTemperature(oldTemp); + } + } - // double oldPres = 0; - if (system.isChemicalSystem()) { - system.getChemicalReactionOperations().solveChemEq(0); - system.getChemicalReactionOperations().solveChemEq(1); - } + if (system.isChemicalSystem()) { + system.getChemicalReactionOperations().solveChemEq(0); + system.getChemicalReactionOperations().solveChemEq(1); + } - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[1].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getz()); - if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setx(1e-40); - } else { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - } - } - ytotal = 0.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - ytotal += system.getPhases()[0].getComponents()[i].getx(); - } - double oldTemp = 10.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[1].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getz()); + if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setx(1e-40); + } else { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + } + } + ytotal = 0.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + ytotal += system.getPhases()[0].getComponents()[i].getx(); + } + double oldTemp = 10.0; - double ktot = 0.0; + double ktot = 0.0; + do { + iterations++; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getx() / ytotal); + } + if (system.isChemicalSystem() && (iterations % 2) == 0) { + system.getChemicalReactionOperations().solveChemEq(1); + } + system.init(1); + oldTemp = system.getTemperature(); + ktot = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { do { - iterations++; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getx() / ytotal); - } - if (system.isChemicalSystem() && (iterations % 2) == 0) { - system.getChemicalReactionOperations().solveChemEq(1); - } - system.init(1); - oldTemp = system.getTemperature(); - ktot = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - do { - yold = system.getPhases()[0].getComponents()[i].getx(); - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setK(1e-40); - } else { - system.getPhases()[0].getComponents()[i].setK(Math.exp(Math.log( - system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) - - Math.log(system.getPhases()[0].getComponents()[i] - .getFugacityCoefficient()))); - } - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - // logger.info("y err " + - // Math.abs(system.getPhases()[0].getComponents()[i].getx()-yold)); - } while (Math.abs(system.getPhases()[0].getComponents()[i].getx() - yold) > 1e-4); + yold = system.getPhases()[0].getComponents()[i].getx(); + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setK(1e-40); + } else { + system.getPhases()[0].getComponents()[i].setK( + Math.exp(Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) + - Math.log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient()))); + } + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + // logger.info("y err " + + // Math.abs(system.getPhases()[0].getComponents()[i].getx()-yold)); + } while (Math.abs(system.getPhases()[0].getComponents()[i].getx() - yold) > 1e-4); - ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); - } - ytotal = 0.0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - ytotal += system.getPhases()[0].getComponents()[i].getx(); - } - if (ytotal > 1.2) { - ytotal = 1.2; - } - if (ytotal < 0.8) { - ytotal = 0.8; - } - // logger.info("y tot " + ytotal); + ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); + } + ytotal = 0.0; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + ytotal += system.getPhases()[0].getComponents()[i].getx(); + } + if (ytotal > 1.2) { + ytotal = 1.2; + } + if (ytotal < 0.8) { + ytotal = 0.8; + } + // logger.info("y tot " + ytotal); - // system.setTemperature(system.getTemperature() + - // 0.05*(1.0/ytotal*system.getTemperature()-system.getTemperature())); - system.setTemperature( - system.getTemperature() + 0.1 * system.getTemperature() * (1.0 - ytotal)); - // for (int i=0;i 1e-9) - || Math.abs(oldTemp - system.getTemperature()) / oldTemp > 1e-8) - && (iterations < maxNumberOfIterations)); - // logger.info("iter " + iterations + " ktot " + ktot); - if (Math.abs(ytotal - 1.0) >= 1e-5 - || ktot < 1e-3 && system.getPhase(0).getNumberOfComponents() > 1) { - setSuperCritical(true); - } - if (system.getPhase(0).getNumberOfComponents() == 1 - && Math.abs(system.getPhases()[1].getComponents()[0].getFugacityCoefficient() - / system.getPhases()[0].getComponents()[0].getFugacityCoefficient() - - 1.0) < 1e-20) { - setSuperCritical(true); - return; - } + // system.setTemperature(system.getTemperature() + + // 0.05*(1.0/ytotal*system.getTemperature()-system.getTemperature())); + system + .setTemperature(system.getTemperature() + 0.1 * system.getTemperature() * (1.0 - ytotal)); + // for (int i=0;i 1e-9) + || Math.abs(oldTemp - system.getTemperature()) / oldTemp > 1e-8) + && (iterations < maxNumberOfIterations)); + // logger.info("iter " + iterations + " ktot " + ktot); + if (Math.abs(ytotal - 1.0) >= 1e-5 + || ktot < 1e-3 && system.getPhase(0).getNumberOfComponents() > 1) { + setSuperCritical(true); + } + if (system.getPhase(0).getNumberOfComponents() == 1 + && Math.abs(system.getPhases()[1].getComponents()[0].getFugacityCoefficient() + / system.getPhases()[0].getComponents()[0].getFugacityCoefficient() - 1.0) < 1e-20) { + setSuperCritical(true); } + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/calcSaltSatauration.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/calcSaltSatauration.java index c92891428b..8ff951293f 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/calcSaltSatauration.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/calcSaltSatauration.java @@ -13,127 +13,118 @@ * @version $Id: $Id */ public class calcSaltSatauration extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(calcSaltSatauration.class); - String saltName; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(calcSaltSatauration.class); - /** - *

- * Constructor for calcSaltSatauration. - *

- */ - public calcSaltSatauration() {} + String saltName; - /** - *

- * Constructor for calcSaltSatauration. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param name a {@link java.lang.String} object - */ - public calcSaltSatauration(SystemInterface system, String name) { - super(system); - this.saltName = name; - logger.info("ok "); - } + /** + *

+ * Constructor for calcSaltSatauration. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param name a {@link java.lang.String} object + */ + public calcSaltSatauration(SystemInterface system, String name) { + super(system); + this.saltName = name; + logger.info("ok "); + } - /** {@inheritDoc} */ - @Override - public void run() { - double ksp = 0.0; - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + /** {@inheritDoc} */ + @Override + public void run() { + double ksp = 0.0; + double stoc1 = 1e-20; + double stoc2 = 1e-20; + String name1 = ""; + String name2 = ""; + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); java.sql.ResultSet dataSet = - database.getResultSet("SELECT * FROM compsalt WHERE SaltName='" + saltName + "'"); - double stoc1 = 1e-20, stoc2 = 1e-20; - String name1 = ""; - String name2 = ""; - try { - dataSet.next(); - name1 = dataSet.getString("ion1").trim(); - name2 = dataSet.getString("ion2").trim(); - stoc1 = Double.parseDouble(dataSet.getString("stoc1")); - stoc2 = Double.parseDouble(dataSet.getString("stoc2")); - ksp = Double.parseDouble(dataSet.getString("Ksp-water")); - system.addComponent(name1, ksp / 100.0); - system.addComponent(name2, ksp / 100.0); - system.createDatabase(true); - } catch (Exception e) { - logger.error("failed " + e.toString()); - } + database.getResultSet("SELECT * FROM compsalt WHERE SaltName='" + saltName + "'")) { + dataSet.next(); + name1 = dataSet.getString("ion1").trim(); + name2 = dataSet.getString("ion2").trim(); + stoc1 = Double.parseDouble(dataSet.getString("stoc1")); + stoc2 = Double.parseDouble(dataSet.getString("stoc2")); + ksp = Double.parseDouble(dataSet.getString("Ksp-water")); + system.addComponent(name1, ksp / 100.0); + system.addComponent(name2, ksp / 100.0); + system.createDatabase(true); + } catch (Exception ex) { + logger.error("failed ", ex); + } - system.init(0); - system.init(1); - system.initPhysicalProperties(); - double err = 1.0; - int iter = 1; - double kspcalc = 0.0, kspcalc1 = 0.0, kspcalc2 = 0.0; - do { - iter++; - double addnumb = 0.0; - // logger.info("testing"); + system.init(0); + system.init(1); + system.initPhysicalProperties(); + double err = 1.0; + int iter = 1; + double kspcalc = 0.0; + double kspcalc1 = 0.0; + double kspcalc2 = 0.0; + do { + iter++; + double addnumb = 0.0; + // logger.info("testing"); - system.addComponent(name1, 0.001);// *stoc1*constant*system.getPhase(1).getComponent(name1).getNumberOfMolesInPhase()); - system.addComponent(name2, 0.001); - // system.init(1); - system.init(0); - system.initPhysicalProperties(); - kspcalc1 = Math.pow( - system.getPhase(1).getComponent(name1).getx() - / system.getPhase(1).getMolarMass() - * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, - stoc1) - * Math.pow(system.getPhase(1).getComponent(name2).getx() - / system.getPhase(1).getMolarMass() - * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, - stoc2); + system.addComponent(name1, 0.001); + // *stoc1*constant*system.getPhase(1).getComponent(name1).getNumberOfMolesInPhase()); + system.addComponent(name2, 0.001); + // system.init(1); + system.init(0); + system.initPhysicalProperties(); + kspcalc1 = Math + .pow(system.getPhase(1).getComponent(name1).getx() / system.getPhase(1).getMolarMass() + * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, stoc1) + * Math + .pow(system.getPhase(1).getComponent(name2).getx() / system.getPhase(1).getMolarMass() + * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, stoc2); - system.addComponent(name1, -2 * 0.001);// *stoc1*constant*system.getPhase(1).getComponent(name1).getNumberOfMolesInPhase()); - system.addComponent(name2, -2 * 0.001); - // system.init(1); - system.init(0); - system.initPhysicalProperties(); - kspcalc2 = Math.pow( - system.getPhase(1).getComponent(name1).getx() - / system.getPhase(1).getMolarMass() - * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, - stoc1) - * Math.pow(system.getPhase(1).getComponent(name2).getx() - / system.getPhase(1).getMolarMass() - * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, - stoc2); + system.addComponent(name1, -2 * 0.001); + // *stoc1*constant*system.getPhase(1).getComponent(name1).getNumberOfMolesInPhase()); + system.addComponent(name2, -2 * 0.001); + // system.init(1); + system.init(0); + system.initPhysicalProperties(); + kspcalc2 = Math + .pow(system.getPhase(1).getComponent(name1).getx() / system.getPhase(1).getMolarMass() + * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, stoc1) + * Math + .pow(system.getPhase(1).getComponent(name2).getx() / system.getPhase(1).getMolarMass() + * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, stoc2); - system.addComponent(name1, 0.001);// *stoc1*constant*system.getPhase(1).getComponent(name1).getNumberOfMolesInPhase()); - system.addComponent(name2, 0.001); - // system.init(1); - system.init(0); - system.initPhysicalProperties(); - kspcalc = Math.pow( - system.getPhase(1).getComponent(name1).getx() - / system.getPhase(1).getMolarMass() - * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, - stoc1) - * Math.pow(system.getPhase(1).getComponent(name2).getx() - / system.getPhase(1).getMolarMass() - * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, - stoc2); + system.addComponent(name1, 0.001); + // *stoc1*constant*system.getPhase(1).getComponent(name1).getNumberOfMolesInPhase()); + system.addComponent(name2, 0.001); + // system.init(1); + system.init(0); + system.initPhysicalProperties(); + kspcalc = Math + .pow(system.getPhase(1).getComponent(name1).getx() / system.getPhase(1).getMolarMass() + * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, stoc1) + * Math + .pow(system.getPhase(1).getComponent(name2).getx() / system.getPhase(1).getMolarMass() + * system.getPhase(1).getPhysicalProperties().getDensity() / 1000.0, stoc2); - double diff = (kspcalc1 - kspcalc2) / 0.002; - // logger.info("diff " + diff); - err = (kspcalc - ksp); - addnumb = -(err / diff); - logger.info("kspcalc " + kspcalc + " err " + err + " add " + addnumb); - system.addComponent(name1, iter / 100.0 * addnumb);// *stoc1*constant*system.getPhase(1).getComponent(name1).getNumberOfMolesInPhase()); - system.addComponent(name2, iter / 100.0 * addnumb); - // system.init(1); - system.init(0); - system.initPhysicalProperties(); - } while (Math.abs(err / ksp) > 1e-5 && iter < 1000); + double diff = (kspcalc1 - kspcalc2) / 0.002; + // logger.info("diff " + diff); + err = (kspcalc - ksp); + addnumb = -(err / diff); + logger.info("kspcalc " + kspcalc + " err " + err + " add " + addnumb); + system.addComponent(name1, iter / 100.0 * addnumb); + // * stoc1 *constant * system.getPhase(1).getComponent(name1).getNumberOfMolesInPhase()); + system.addComponent(name2, iter / 100.0 * addnumb); + // system.init(1); + system.init(0); + system.initPhysicalProperties(); + } while (Math.abs(err / ksp) > 1e-5 && iter < 1000); - logger.info("solution found after " + iter + " iterations in calcSaltSatauration()"); - } + logger.info("solution found after " + iter + " iterations in calcSaltSatauration()"); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/checkScalePotential.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/checkScalePotential.java index d147472c87..bd3e44d638 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/checkScalePotential.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/checkScalePotential.java @@ -13,215 +13,191 @@ * @version $Id: $Id */ public class checkScalePotential extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(checkScalePotential.class); - - String saltName; - int phaseNumber = 1; - String[][] resultTable = null; - - /** - *

- * Constructor for checkScalePotential. - *

- */ - public checkScalePotential() {} - - /** - *

- * Constructor for checkScalePotential. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param phaseNumber a int - */ - public checkScalePotential(SystemInterface system, int phaseNumber) { - super(system); - this.phaseNumber = phaseNumber; - logger.info("ok "); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(checkScalePotential.class); + + String saltName; + int phaseNumber = 1; + String[][] resultTable = null; + + /** + *

+ * Constructor for checkScalePotential. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param phaseNumber a int + */ + public checkScalePotential(SystemInterface system, int phaseNumber) { + super(system); + this.phaseNumber = phaseNumber; + logger.info("ok "); + } + + /** {@inheritDoc} */ + @Override + public void run() { + double ksp = 0.0; + + resultTable = new String[10][3]; + double stoc1 = 1e-20; + double stoc2 = 1e-20; + String saltName = ""; + String name1 = ""; + String name2 = ""; + int numb = 0; + + for (int i = 0; i < 10; i++) { + for (int j = 0; j < 3; j++) { + resultTable[i][j] = ""; + } } - /** {@inheritDoc} */ - @Override - public void run() { - double ksp = 0.0; - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = database.getResultSet("SELECT * FROM compsalt"); - resultTable = new String[10][3]; - double stoc1 = 1e-20, stoc2 = 1e-20; - String saltName = ""; - String name1 = ""; - String name2 = ""; - int numb = 0; - - for (int i = 0; i < 10; i++) { - for (int j = 0; j < 3; j++) { - resultTable[i][j] = ""; - } + resultTable[0][0] = "Salt"; + resultTable[0][1] = "relative solubility"; + resultTable[0][2] = ""; + + double numberOfMolesMEG = 0.0; + + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = database.getResultSet("SELECT * FROM compsalt")) { + if (system.getPhase(phaseNumber).hasComponent("MEG")) { + numberOfMolesMEG = + system.getPhase(phaseNumber).getComponent("MEG").getNumberOfMolesInPhase(); + system.addComponent("MEG", -numberOfMolesMEG * 0.9999, phaseNumber); + system.addComponent("water", numberOfMolesMEG, phaseNumber); + system.init(1); + system.getChemicalReactionOperations().solveChemEq(phaseNumber, 1); + } + while (dataSet.next()) { + saltName = dataSet.getString("SaltName").trim(); + name1 = dataSet.getString("ion1").trim(); + name2 = dataSet.getString("ion2").trim(); + + stoc1 = Double.parseDouble(dataSet.getString("stoc1")); + stoc2 = Double.parseDouble(dataSet.getString("stoc2")); + double temperatureC = system.getPhase(phaseNumber).getTemperature(); + double lnKsp = Double.parseDouble(dataSet.getString("Kspwater")) / temperatureC + + Double.parseDouble(dataSet.getString("Kspwater2")) + + Math.log(temperatureC) * Double.parseDouble(dataSet.getString("Kspwater3")) + + temperatureC * Double.parseDouble(dataSet.getString("Kspwater4")) + + Double.parseDouble(dataSet.getString("Kspwater5")) / (temperatureC * temperatureC); + ksp = Math.exp(lnKsp); + + if (saltName.equals("NaCl")) { + ksp = -814.18 + 7.4685 * temperatureC - 2.3262e-2 * temperatureC * temperatureC + + 3.0536e-5 * Math.pow(temperatureC, 3.0) - 1.4573e-8 * Math.pow(temperatureC, 4.0); } - - resultTable[0][0] = "Salt"; - resultTable[0][1] = "relative solubility"; - resultTable[0][2] = ""; - - double numberOfMolesMEG = 0.0; - - try { - if (system.getPhase(phaseNumber).hasComponent("MEG")) { - numberOfMolesMEG = - system.getPhase(phaseNumber).getComponent("MEG").getNumberOfMolesInPhase(); - system.addComponent("MEG", -numberOfMolesMEG * 0.9999, phaseNumber); - system.addComponent("water", numberOfMolesMEG, phaseNumber); - system.init(1); - system.getChemicalReactionOperations().solveChemEq(phaseNumber, 1); - } - while (dataSet.next()) { - saltName = dataSet.getString("SaltName").trim(); - name1 = dataSet.getString("ion1").trim(); - name2 = dataSet.getString("ion2").trim(); - - stoc1 = Double.parseDouble(dataSet.getString("stoc1")); - stoc2 = Double.parseDouble(dataSet.getString("stoc2")); - double temperatureC = system.getPhase(phaseNumber).getTemperature(); - double lnKsp = Double.parseDouble(dataSet.getString("Kspwater")) / temperatureC - + Double.parseDouble(dataSet.getString("Kspwater2")) - + Math.log(temperatureC) - * Double.parseDouble(dataSet.getString("Kspwater3")) - + temperatureC * Double.parseDouble(dataSet.getString("Kspwater4")) - + Double.parseDouble(dataSet.getString("Kspwater5")) - / (temperatureC * temperatureC); - ksp = Math.exp(lnKsp); - - if (saltName.equals("NaCl")) { - ksp = -814.18 + 7.4685 * temperatureC - 2.3262e-2 * temperatureC * temperatureC - + 3.0536e-5 * Math.pow(temperatureC, 3.0) - - 1.4573e-8 * Math.pow(temperatureC, 4.0); - } - if (saltName.equals("FeS")) { - int waterompNumb = - system.getPhase(phaseNumber).getComponent("water").getComponentNumber(); - double h3ox = system.getPhase(phaseNumber).getComponent("H3O+").getx() - / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() - * system.getPhase(phaseNumber).getComponent(waterompNumb) - .getMolarMass()); - - ksp *= h3ox; - } - - if (system.getPhase(phaseNumber).hasComponent(name1) - && system.getPhase(phaseNumber).hasComponent(name2)) { - numb++; - logger.info("reaction added: " + name1 + " " + name2); - logger.info("theoretic Ksp = " + ksp); - logger.info("theoretic lnKsp = " + Math.log(ksp)); - int compNumb1 = - system.getPhase(phaseNumber).getComponent(name1).getComponentNumber(); - int compNumb2 = - system.getPhase(phaseNumber).getComponent(name2).getComponentNumber(); - int waterompNumb = - system.getPhase(phaseNumber).getComponent("water").getComponentNumber(); - - double x1 = system.getPhase(phaseNumber).getComponent(name1).getx() - / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() - * system.getPhase(phaseNumber).getComponent(waterompNumb) - .getMolarMass()); - double x2 = system.getPhase(phaseNumber).getComponent(name2).getx() - / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() - * system.getPhase(phaseNumber).getComponent(waterompNumb) - .getMolarMass()); - double kspReac = Math - .pow(system.getPhase(phaseNumber).getActivityCoefficient(compNumb1, - waterompNumb) * x1, stoc1) - * Math.pow( - x2 * system.getPhase(phaseNumber) - .getActivityCoefficient(compNumb2, waterompNumb), - stoc2); - // double kspReac = - // Math.pow(system.getPhase(phaseNumber).getActivityCoefficient(compNumb1) * x1, - // stoc1) * Math.pow(x2 * - // system.getPhase(phaseNumber).getActivityCoefficient(compNumb2), stoc2); - - double stocKsp = Math.pow(x1, stoc1) * Math.pow(x2, stoc2); - - if (saltName.contains("hydromagnesite (3MgCO3-Mg(OH)2-3H2O)")) { - x1 = system.getPhase(phaseNumber).getComponent(name1).getx() - / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() - * system.getPhase(phaseNumber).getComponent(waterompNumb) - .getMolarMass()); - x2 = system.getPhase(phaseNumber).getComponent(name2).getx() - / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() - * system.getPhase(phaseNumber).getComponent(waterompNumb) - .getMolarMass()); - double x3 = system.getPhase(phaseNumber).getComponent(waterompNumb).getx() - / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() - * system.getPhase(phaseNumber).getComponent(waterompNumb) - .getMolarMass()); - double x4 = system.getPhase(phaseNumber).getComponent("OH-").getx() - / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() - * system.getPhase(phaseNumber).getComponent(waterompNumb) - .getMolarMass()); - kspReac = Math - .pow(system.getPhase(phaseNumber).getActivityCoefficient(compNumb1, - waterompNumb) * x1, stoc1) - * Math.pow( - x2 * system.getPhase(phaseNumber) - .getActivityCoefficient(compNumb2, waterompNumb), - stoc2) - * Math.pow( - x3 * system.getPhase(phaseNumber) - .getActivityCoefficient(waterompNumb, waterompNumb), - 3.0) - * Math.pow(x4 * system.getPhase(phaseNumber) - .getActivityCoefficient(system.getPhase(phaseNumber) - .getComponent("OH-").getComponentNumber(), - waterompNumb), - 2.0); - stocKsp = Math.pow(x1, stoc1) * Math.pow(x2, stoc2) * Math.pow(x3, 3) - * Math.pow(x4, 2); - } - - logger.info("calc Ksp " + kspReac); - logger.info("stoc Ksp " + stocKsp); - logger.info("activity " + kspReac / stocKsp); - logger.info("mol/kg " + x1); - - double scalePotentialFactor = kspReac / ksp; - logger.info("Scale potential factor " + scalePotentialFactor); - - resultTable[numb][0] = saltName;// name1+ " " +name2; - resultTable[numb][1] = Double.toString(scalePotentialFactor); - resultTable[numb][2] = ""; - // double maxn = scalePotentialFactor/(stoc1*stoc2); - - // double x1max =system.getPhase(phaseNumber).getComponent(name1).getx()/maxn; - // double x2max =system.getPhase(phaseNumber).getComponent(name2).getx()/maxn; - } - } - } catch (Exception e) { - logger.error("failed " + e.toString()); - - if (system.getPhase(phaseNumber).hasComponent("MEG")) { - system.addComponent("MEG", numberOfMolesMEG * 0.9999, phaseNumber); - system.addComponent("water", -numberOfMolesMEG, phaseNumber); - system.init(1); - system.getChemicalReactionOperations().solveChemEq(phaseNumber, 1); - } + if (saltName.equals("FeS")) { + int waterompNumb = + system.getPhase(phaseNumber).getComponent("water").getComponentNumber(); + double h3ox = system.getPhase(phaseNumber).getComponent("H3O+").getx() + / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() + * system.getPhase(phaseNumber).getComponent(waterompNumb).getMolarMass()); + + ksp *= h3ox; } - } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} - - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - logger.info("checking table...scale " + resultTable[0][0]); - logger.info("checking table...scale " + resultTable[0][1]); - logger.info("checking table...scale " + resultTable[0][2]); - logger.info("checking table...scale " + resultTable[1][0]); - logger.info("checking table...scale " + resultTable[1][1]); - logger.info("checking table...scale " + resultTable[1][2]); - return resultTable; + if (system.getPhase(phaseNumber).hasComponent(name1) + && system.getPhase(phaseNumber).hasComponent(name2)) { + numb++; + logger.info("reaction added: " + name1 + " " + name2); + logger.info("theoretic Ksp = " + ksp); + logger.info("theoretic lnKsp = " + Math.log(ksp)); + int compNumb1 = system.getPhase(phaseNumber).getComponent(name1).getComponentNumber(); + int compNumb2 = system.getPhase(phaseNumber).getComponent(name2).getComponentNumber(); + int waterompNumb = + system.getPhase(phaseNumber).getComponent("water").getComponentNumber(); + + double x1 = system.getPhase(phaseNumber).getComponent(name1).getx() + / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() + * system.getPhase(phaseNumber).getComponent(waterompNumb).getMolarMass()); + double x2 = system.getPhase(phaseNumber).getComponent(name2).getx() + / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() + * system.getPhase(phaseNumber).getComponent(waterompNumb).getMolarMass()); + double kspReac = Math.pow( + system.getPhase(phaseNumber).getActivityCoefficient(compNumb1, waterompNumb) * x1, + stoc1) + * Math.pow( + x2 * system.getPhase(phaseNumber).getActivityCoefficient(compNumb2, waterompNumb), + stoc2); + // double kspReac = + // Math.pow(system.getPhase(phaseNumber).getActivityCoefficient(compNumb1) * x1, + // stoc1) * Math.pow(x2 * + // system.getPhase(phaseNumber).getActivityCoefficient(compNumb2), stoc2); + + double stocKsp = Math.pow(x1, stoc1) * Math.pow(x2, stoc2); + + if (saltName.contains("hydromagnesite (3MgCO3-Mg(OH)2-3H2O)")) { + x1 = system.getPhase(phaseNumber).getComponent(name1).getx() + / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() + * system.getPhase(phaseNumber).getComponent(waterompNumb).getMolarMass()); + x2 = system.getPhase(phaseNumber).getComponent(name2).getx() + / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() + * system.getPhase(phaseNumber).getComponent(waterompNumb).getMolarMass()); + double x3 = system.getPhase(phaseNumber).getComponent(waterompNumb).getx() + / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() + * system.getPhase(phaseNumber).getComponent(waterompNumb).getMolarMass()); + double x4 = system.getPhase(phaseNumber).getComponent("OH-").getx() + / (system.getPhase(phaseNumber).getComponent(waterompNumb).getx() + * system.getPhase(phaseNumber).getComponent(waterompNumb).getMolarMass()); + kspReac = Math + .pow(system.getPhase(phaseNumber).getActivityCoefficient(compNumb1, waterompNumb) + * x1, stoc1) + * Math.pow(x2 + * system.getPhase(phaseNumber).getActivityCoefficient(compNumb2, waterompNumb), + stoc2) + * Math + .pow(x3 * system.getPhase(phaseNumber).getActivityCoefficient(waterompNumb, + waterompNumb), 3.0) + * Math.pow(x4 * system.getPhase(phaseNumber).getActivityCoefficient( + system.getPhase(phaseNumber).getComponent("OH-").getComponentNumber(), + waterompNumb), 2.0); + stocKsp = Math.pow(x1, stoc1) * Math.pow(x2, stoc2) * Math.pow(x3, 3) * Math.pow(x4, 2); + } + + logger.info("calc Ksp " + kspReac); + logger.info("stoc Ksp " + stocKsp); + logger.info("activity " + kspReac / stocKsp); + logger.info("mol/kg " + x1); + + double scalePotentialFactor = kspReac / ksp; + logger.info("Scale potential factor " + scalePotentialFactor); + + resultTable[numb][0] = saltName; // name1+ " " +name2; + resultTable[numb][1] = Double.toString(scalePotentialFactor); + resultTable[numb][2] = ""; + // double maxn = scalePotentialFactor/(stoc1*stoc2); + + // double x1max =system.getPhase(phaseNumber).getComponent(name1).getx()/maxn; + // double x2max =system.getPhase(phaseNumber).getComponent(name2).getx()/maxn; + } + } + } catch (Exception ex) { + logger.error("failed ", ex); + + if (system.getPhase(phaseNumber).hasComponent("MEG")) { + system.addComponent("MEG", numberOfMolesMEG * 0.9999, phaseNumber); + system.addComponent("water", -numberOfMolesMEG, phaseNumber); + system.init(1); + system.getChemicalReactionOperations().solveChemEq(phaseNumber, 1); + } } + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + logger.info("checking table...scale " + resultTable[0][0]); + logger.info("checking table...scale " + resultTable[0][1]); + logger.info("checking table...scale " + resultTable[0][2]); + logger.info("checking table...scale " + resultTable[1][0]); + logger.info("checking table...scale " + resultTable[1][1]); + logger.info("checking table...scale " + resultTable[1][2]); + return resultTable; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyFlash.java index 99a56be45a..ceb45933af 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyFlash.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; + import neqsim.thermo.system.SystemInterface; /** @@ -12,147 +13,146 @@ * @author asmund * @version $Id: $Id */ -public abstract class constantDutyFlash implements constantDutyFlashInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(constantDutyFlash.class); - - SystemInterface system; - protected boolean superCritical = false; - int i, j = 0, nummer = 0, iterations = 0, maxNumberOfIterations = 10000; - double gibbsEnergy = 0, gibbsEnergyOld = 0; - double Kold, deviation = 0, g0 = 0, g1 = 0; - double lnOldOldK[], lnK[]; - double lnOldK[]; - double oldDeltalnK[], deltalnK[]; - double tm[] = {1, 1}; - double beta = 1e-5; - int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase - - /** - *

- * Constructor for constantDutyFlash. - *

- */ - public constantDutyFlash() {} - - /** - *

- * Constructor for constantDutyFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public constantDutyFlash(SystemInterface system) { - this.system = system; - lnOldOldK = new double[system.getPhases()[0].getNumberOfComponents()]; - lnOldK = new double[system.getPhases()[0].getNumberOfComponents()]; - lnK = new double[system.getPhases()[0].getNumberOfComponents()]; - oldDeltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; - deltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; - } - - /** {@inheritDoc} */ - @Override - public void setBeta(double beta) { - this.beta = beta; - } - - /** {@inheritDoc} */ - @Override - public void run() { - system.init(0); - system.init(2); - - // int iterations = 0, maxNumberOfIterations = 10000; - // double yold = 0, ytotal = 1; - double deriv = 0, funk = 0, dkidt = 0, dyidt = 0, dxidt = 0, Told = 0; - - do { - // system.setBeta(beta+0.65); - system.init(2); - - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() - / system.getPhases()[1].getComponents()[i] - .getFugacityCoefficient()); - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() - / system.getPhases()[1].getComponents()[i] - .getFugacityCoefficient()); - } - - system.calc_x_y(); - - funk = 0e0; - deriv = 0e0; - - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - dkidt = (system.getPhases()[0].getComponents()[i].getdfugdt() - - system.getPhases()[1].getComponents()[i].getdfugdt()) - * system.getPhases()[0].getComponents()[i].getK(); - dxidt = -system.getPhases()[0].getComponents()[i].getx() - * system.getPhases()[0].getComponents()[i].getx() * 1.0 - / system.getPhases()[0].getComponents()[i].getz() * system.getBeta() - * dkidt; - dyidt = dkidt * system.getPhases()[0].getComponents()[i].getx() - + system.getPhases()[0].getComponents()[i].getK() * dxidt; - funk = funk + system.getPhases()[1].getComponents()[i].getx() - - system.getPhases()[0].getComponents()[i].getx(); - deriv = deriv + dyidt - dxidt; - } - - Told = system.getTemperature(); - system.setTemperature((Told - funk / deriv * 0.9)); - logger.info("Temp: " + system.getTemperature()); - } while (Math.abs((system.getTemperature() - Told) / system.getTemperature()) > 1e-7); - } - - /** {@inheritDoc} */ - /* - @Override - public void createNetCdfFile(String name) {} -*/ - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return null; - } - - /** {@inheritDoc} */ - @Override - public double[] get(String name) { - return null; - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - system.display(); - } - - /** {@inheritDoc} */ - @Override - public boolean isSuperCritical() { - return superCritical; - } - - /** - * Setter for property superCritical. - * - * @param superCritical New value of property superCritical. - */ - public void setSuperCritical(boolean superCritical) { - this.superCritical = superCritical; - } - - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return null; - } - - /** {@inheritDoc} */ - @Override - public void addData(String name, double[][] data) {} +public abstract class constantDutyFlash implements ConstantDutyFlashInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(constantDutyFlash.class); + + SystemInterface system; + protected boolean superCritical = false; + int i; + int j = 0; + int nummer = 0; + int iterations = 0; + int maxNumberOfIterations = 10000; + double gibbsEnergy = 0; + double gibbsEnergyOld = 0; + double Kold; + double deviation = 0; + double g0 = 0; + double g1 = 0; + double[] lnOldOldK; + double[] lnK; + double[] lnOldK; + double[] oldDeltalnK; + double[] deltalnK; + double[] tm = { 1, 1 }; + int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase + + /** + *

Constructor for constantDutyFlash.

+ */ + public constantDutyFlash() { + } + + /** + *

+ * Constructor for constantDutyFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public constantDutyFlash(SystemInterface system) { + this.system = system; + lnOldOldK = new double[system.getPhases()[0].getNumberOfComponents()]; + lnOldK = new double[system.getPhases()[0].getNumberOfComponents()]; + lnK = new double[system.getPhases()[0].getNumberOfComponents()]; + oldDeltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; + deltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; + } + + /** {@inheritDoc} */ + @Override + public void run() { + system.init(0); + system.init(2); + + // int iterations = 0, maxNumberOfIterations = 10000; + // double yold = 0, ytotal = 1; + double deriv = 0; + + double funk = 0; + double dkidt = 0; + double dyidt = 0; + double dxidt = 0; + double Told = 0; + do { + system.init(2); + + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() + / system.getPhases()[1].getComponents()[i].getFugacityCoefficient()); + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() + / system.getPhases()[1].getComponents()[i].getFugacityCoefficient()); + } + + system.calc_x_y(); + + funk = 0e0; + deriv = 0e0; + + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + dkidt = (system.getPhases()[0].getComponents()[i].getdfugdt() + - system.getPhases()[1].getComponents()[i].getdfugdt()) + * system.getPhases()[0].getComponents()[i].getK(); + dxidt = -system.getPhases()[0].getComponents()[i].getx() + * system.getPhases()[0].getComponents()[i].getx() * 1.0 + / system.getPhases()[0].getComponents()[i].getz() * system.getBeta() * dkidt; + dyidt = dkidt * system.getPhases()[0].getComponents()[i].getx() + + system.getPhases()[0].getComponents()[i].getK() * dxidt; + funk = funk + system.getPhases()[1].getComponents()[i].getx() + - system.getPhases()[0].getComponents()[i].getx(); + deriv = deriv + dyidt - dxidt; + } + + Told = system.getTemperature(); + system.setTemperature((Told - funk / deriv * 0.9)); + logger.info("Temp: " + system.getTemperature()); + } while (Math.abs((system.getTemperature() - Told) / system.getTemperature()) > 1e-7); + } + + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return null; + } + + /** {@inheritDoc} */ + @Override + public double[] get(String name) { + return null; + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + system.display(); + } + + /** {@inheritDoc} */ + @Override + public boolean isSuperCritical() { + return superCritical; + } + + /** + * Setter for property superCritical. + * + * @param superCritical New value of property superCritical. + */ + public void setSuperCritical(boolean superCritical) { + this.superCritical = superCritical; + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } + + /** {@inheritDoc} */ + @Override + public void addData(String name, double[][] data) { + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyFlashInterface.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyFlashInterface.java deleted file mode 100644 index 87059f851c..0000000000 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyFlashInterface.java +++ /dev/null @@ -1,31 +0,0 @@ -package neqsim.thermodynamicOperations.flashOps.saturationOps; - -import neqsim.thermodynamicOperations.OperationInterface; - -/** - *

- * constantDutyFlashInterface interface. - *

- * - * @author Even Solbraa - * @version $Id: $Id - */ -public interface constantDutyFlashInterface extends OperationInterface { - /** - *

- * setBeta. - *

- * - * @param beta a double - */ - public void setBeta(double beta); - - /** - *

- * isSuperCritical. - *

- * - * @return a boolean - */ - public boolean isSuperCritical(); -} diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyPressureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyPressureFlash.java index 42759fbe40..315894aa43 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyPressureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyPressureFlash.java @@ -11,98 +11,90 @@ * @version $Id: $Id */ public class constantDutyPressureFlash extends constantDutyFlash { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for constantDutyPressureFlash. - *

- */ - public constantDutyPressureFlash() {} - - /** - *

- * Constructor for constantDutyPressureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public constantDutyPressureFlash(SystemInterface system) { - super(system); - } - - /** {@inheritDoc} */ - @Override - public void run() { - // system.calc_x_y(); - // system.init(2); - - if (system.isChemicalSystem()) { - system.getChemicalReactionOperations().solveChemEq(0); - } - - int iterations = 0; - // int maxNumberOfIterations = 10000; - // double yold = 0, ytotal = 1; - double deriv = 0, funk = 0, dkidp = 0, dyidp = 0, dxidp = 0, Pold = 0; - - do { - // system.setBeta(beta+0.65); - system.init(2); - iterations++; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i] - .setK(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() - / system.getPhases()[0].getComponents()[i] - .getFugacityCoefficient()); - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - } - - system.calc_x_y_nonorm(); - - funk = 0.0; - deriv = 0.0; - - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - dkidp = (system.getPhases()[1].getComponents()[i].getdfugdp() - - system.getPhases()[0].getComponents()[i].getdfugdp()) - * system.getPhases()[1].getComponents()[i].getK(); - dxidp = -system.getPhases()[1].getComponents()[i].getz() * system.getBeta() * dkidp - / Math.pow( - 1.0 - system.getBeta() - + system.getBeta() - * system.getPhases()[1].getComponents()[i].getK(), - 2.0); - dyidp = dkidp * system.getPhases()[1].getComponents()[i].getx() - + system.getPhases()[1].getComponents()[i].getK() * dxidp; - funk += system.getPhases()[0].getComponents()[i].getx() - - system.getPhases()[1].getComponents()[i].getx(); - deriv += dyidp - dxidp; - } - - // System.out.println("Pressure: " + system.getPressure() + " funk " + funk); - - Pold = system.getPressure(); - double pres = Math.abs(Pold - 0.5 * funk / deriv); - system.setPressure(pres); - } while ((Math.abs((system.getPressure() - Pold) / system.getPressure()) > 1e-10 - && iterations < 300) || iterations < 3); + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for constantDutyPressureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public constantDutyPressureFlash(SystemInterface system) { + super(system); + } + + /** {@inheritDoc} */ + @Override + public void run() { + // system.calc_x_y(); + // system.init(2); + + if (system.isChemicalSystem()) { + system.getChemicalReactionOperations().solveChemEq(0); } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return system; - } + int iterations = 0; + double deriv = 0; + + double funk = 0; + double dkidp = 0; + double dyidp = 0; + double dxidp = 0; + double Pold = 0; + do { + // system.setBeta(beta+0.65); + system.init(2); + iterations++; + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setK(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() + / system.getPhases()[0].getComponents()[i].getFugacityCoefficient()); + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); + } + + system.calc_x_y_nonorm(); + + funk = 0.0; + deriv = 0.0; + + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + dkidp = (system.getPhases()[1].getComponents()[i].getdfugdp() + - system.getPhases()[0].getComponents()[i].getdfugdp()) + * system.getPhases()[1].getComponents()[i].getK(); + dxidp = -system.getPhases()[1].getComponents()[i].getz() * system.getBeta() * dkidp + / Math.pow(1.0 - system.getBeta() + + system.getBeta() * system.getPhases()[1].getComponents()[i].getK(), 2.0); + dyidp = dkidp * system.getPhases()[1].getComponents()[i].getx() + + system.getPhases()[1].getComponents()[i].getK() * dxidp; + funk += system.getPhases()[0].getComponents()[i].getx() + - system.getPhases()[1].getComponents()[i].getx(); + deriv += dyidp - dxidp; + } + + // System.out.println("Pressure: " + system.getPressure() + " funk " + funk); + + Pold = system.getPressure(); + double pres = Math.abs(Pold - 0.5 * funk / deriv); + system.setPressure(pres); + } while ((Math.abs((system.getPressure() - Pold) / system.getPressure()) > 1e-10 + && iterations < 300) || iterations < 3); + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return system; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyTemperatureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyTemperatureFlash.java index c62025c4ad..eb2164df66 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyTemperatureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/constantDutyTemperatureFlash.java @@ -11,97 +11,96 @@ * @version $Id: $Id */ public class constantDutyTemperatureFlash extends constantDutyFlash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for constantDutyTemperatureFlash. - *

- */ - public constantDutyTemperatureFlash() {} + /** + *

+ * Constructor for constantDutyTemperatureFlash. + *

+ */ + public constantDutyTemperatureFlash() { + } - /** - *

- * Constructor for constantDutyTemperatureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public constantDutyTemperatureFlash(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for constantDutyTemperatureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public constantDutyTemperatureFlash(SystemInterface system) { + super(system); + } - /** {@inheritDoc} */ - @Override - public void run() { - system.init(0); - system.init(2); + /** {@inheritDoc} */ + @Override + public void run() { + system.init(0); + system.init(2); - int iterations = 0; - // int maxNumberOfIterations = 10000; - // double yold = 0, ytotal = 1; - double deriv = 0, funk = 0, dkidt = 0, dyidt = 0, dxidt = 0, Told = 0; + int iterations = 0; + double deriv = 0; - do { - iterations++; - // system.setBeta(beta+0.65); - system.init(2); + double funk = 0; + double dkidt = 0; + double dyidt = 0; + double dxidt = 0; + double Told = 0; + do { + iterations++; + // system.setBeta(beta+0.65); + system.init(2); - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() - / system.getPhases()[1].getComponents()[i] - .getFugacityCoefficient()); - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() - / system.getPhases()[1].getComponents()[i] - .getFugacityCoefficient()); - } + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() + / system.getPhases()[1].getComponents()[i].getFugacityCoefficient()); + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() + / system.getPhases()[1].getComponents()[i].getFugacityCoefficient()); + } - system.calc_x_y_nonorm(); + system.calc_x_y_nonorm(); - funk = 0e0; - deriv = 0e0; + funk = 0e0; + deriv = 0e0; - for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { - dkidt = (system.getPhases()[0].getComponents()[i].getdfugdt() - - system.getPhases()[1].getComponents()[i].getdfugdt()) - * system.getPhases()[0].getComponents()[i].getK(); - // dxidt=-system.getPhases()[0].getComponents()[i].getx() * - // system.getPhases()[0].getComponents()[i].getx()*1.0/system.getPhases()[0].getComponents()[i].getz()*system.getBeta()*dkidt; - dxidt = -system.getPhases()[0].getComponents()[i].getz() * system.getBeta() * dkidt - / Math.pow( - 1.0 - system.getBeta() - + system.getBeta() - * system.getPhases()[0].getComponents()[i].getK(), - 2); - dyidt = dkidt * system.getPhases()[0].getComponents()[i].getx() - + system.getPhases()[0].getComponents()[i].getK() * dxidt; - funk = funk + system.getPhases()[1].getComponents()[i].getx() - - system.getPhases()[0].getComponents()[i].getx(); - deriv = deriv + dyidt - dxidt; - } + for (int i = 0; i < system.getPhases()[0].getNumberOfComponents(); i++) { + dkidt = (system.getPhases()[0].getComponents()[i].getdfugdt() + - system.getPhases()[1].getComponents()[i].getdfugdt()) + * system.getPhases()[0].getComponents()[i].getK(); + // dxidt=-system.getPhases()[0].getComponents()[i].getx() * + // system.getPhases()[0].getComponents()[i].getx()*1.0/system.getPhases()[0].getComponents()[i].getz()*system.getBeta()*dkidt; + dxidt = -system.getPhases()[0].getComponents()[i].getz() * system.getBeta() * dkidt + / Math.pow(1.0 - system.getBeta() + + system.getBeta() * system.getPhases()[0].getComponents()[i].getK(), 2); + dyidt = dkidt * system.getPhases()[0].getComponents()[i].getx() + + system.getPhases()[0].getComponents()[i].getK() * dxidt; + funk = funk + system.getPhases()[1].getComponents()[i].getx() + - system.getPhases()[0].getComponents()[i].getx(); + deriv = deriv + dyidt - dxidt; + } - Told = system.getTemperature(); - system.setTemperature((Told - funk / deriv * 0.7)); - // System.out.println("Temp: " + system.getTemperature() + " funk " + funk); - } while ((Math.abs((system.getTemperature() - Told) / system.getTemperature()) > 1e-7 - && iterations < 300) || iterations < 3); - } + Told = system.getTemperature(); + system.setTemperature((Told - funk / deriv * 0.7)); + // System.out.println("Temp: " + system.getTemperature() + " funk " + funk); + } while ((Math.abs((system.getTemperature() - Told) / system.getTemperature()) > 1e-7 + && iterations < 300) || iterations < 3); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return system; - } + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return system; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondebarFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondebarFlash.java index f2becd57eb..1afc6c7ebf 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondebarFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondebarFlash.java @@ -15,288 +15,282 @@ * @version $Id: $Id */ public class cricondebarFlash extends constantDutyPressureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(constantDutyFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(constantDutyFlash.class); - Matrix Jac, fvec; + Matrix Jac; + Matrix fvec; - /** - *

- * Constructor for cricondebarFlash. - *

- */ - public cricondebarFlash() {} + /** + *

+ * Constructor for cricondebarFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public cricondebarFlash(SystemInterface system) { + super(system); + Jac = new Matrix(system.getPhase(0).getNumberOfComponents() + 1, + system.getPhase(0).getNumberOfComponents() + 1); + fvec = new Matrix(system.getPhase(0).getNumberOfComponents() + 1, 1); + } - /** - *

- * Constructor for cricondebarFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public cricondebarFlash(SystemInterface system) { - super(system); - Jac = new Matrix(system.getPhase(0).getNumberOfComponents() + 1, - system.getPhase(0).getNumberOfComponents() + 1); - fvec = new Matrix(system.getPhase(0).getNumberOfComponents() + 1, 1); - } + /** + *

+ * calcx. + *

+ * + * @return a double + */ + public double calcx() { + double xtotal = 0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setK(Math.exp(system.getPhases()[1].getComponents()[i].getLogFugacityCoefficient() + - system.getPhases()[0].getComponents()[i].getLogFugacityCoefficient())); - /** - *

- * calcx. - *

- * - * @return a double - */ - public double calcx() { - // double ktot = 0; - double xtotal = 0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i].setK( - Math.exp(system.getPhases()[1].getComponents()[i].getLogFugacityCoefficient() - - system.getPhases()[0].getComponents()[i] - .getLogFugacityCoefficient())); + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); + system.getPhases()[1].getComponents()[i] + .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + // ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); + } + xtotal = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + xtotal += system.getPhases()[1].getComponents()[i].getx(); + } + return xtotal; + } - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - system.getPhases()[1].getComponents()[i] - .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - // ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); - } - xtotal = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - xtotal += system.getPhases()[1].getComponents()[i].getx(); - } - return xtotal; + /** + *

+ * initMoleFraction. + *

+ * + * @return a double + */ + public double initMoleFraction() { + double[] XI = new double[system.getPhase(0).getNumberOfComponents()]; + // double sumX = 0.0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + XI[i] = Math.exp(Math.log(system.getPhase(0).getComponent(i).getz()) + + system.getPhase(0).getComponent(i).getLogFugacityCoefficient() + - system.getPhase(1).getComponent(i).getLogFugacityCoefficient()); + // sumX += XI[i]; } + double tempSumXI = 1.0; // sumX; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + system.getPhase(1).getComponent(i).setx(XI[i] / tempSumXI); + } + return tempSumXI; + } + + /** + *

+ * run2. + *

+ */ + public void run2() { + ThermodynamicOperations localOperation = new ThermodynamicOperations(system); + + system.init(0); + system.setTemperature(system.getPhase(0).getPseudoCriticalTemperature() + 20); + system.setPressure(system.getPhase(0).getPseudoCriticalPressure()); + system.init(3); + int iterations = 0; - /** - *

- * initMoleFraction. - *

- * - * @return a double - */ - public double initMoleFraction() { - double[] XI = new double[system.getPhase(0).getNumberOfComponents()]; - // double sumX = 0.0; + int maxNumberOfIterations = 300; + try { + localOperation.dewPointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + system.setNumberOfPhases(2); + system.setBeta(0.5); + system.setTemperature(system.getTemperature() - 20); + system.init(3); + system.display(); + double Q1 = 0; + double Qold = 0.0; + double dQ1dT = 0; + double oldTemperature = 0; + double oldIterTemp = 0; + do { + oldIterTemp = system.getTemperature(); + iterations = 0; + do { + iterations++; + initMoleFraction(); + system.init(3); + Qold = Q1; + Q1 = 0.0; for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - XI[i] = Math.exp(Math.log(system.getPhase(0).getComponent(i).getz()) - + system.getPhase(0).getComponent(i).getLogFugacityCoefficient() - - system.getPhase(1).getComponent(i).getLogFugacityCoefficient()); - // sumX += XI[i]; + Q1 -= system.getPhase(1).getComponent(i).getx() + * (system.getPhase(0).getComponent(i).getdfugdt() + - system.getPhase(1).getComponent(i).getdfugdt()); } - double tempSumXI = 1.0;// sumX; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - system.getPhase(1).getComponent(i).setx(XI[i] / tempSumXI); + if (iterations > 1) { + dQ1dT = (Q1 - Qold) / (system.getTemperature() - oldTemperature); + } else { + dQ1dT = Q1 * 100.0; } - return tempSumXI; - } - /** - *

- * run2. - *

- */ - public void run2() { - ThermodynamicOperations localOperation = new ThermodynamicOperations(system); + oldTemperature = system.getTemperature(); + system.setTemperature(system.getTemperature() - 0.5 * Q1 / dQ1dT); - system.init(0); - system.setTemperature(system.getPhase(0).getPseudoCriticalTemperature() + 20); - system.setPressure(system.getPhase(0).getPseudoCriticalPressure()); system.init(3); - int iterations = 0, maxNumberOfIterations = 300; + logger.info( + "temp " + system.getTemperature() + " Q1 " + Q1 + " pressure " + system.getPressure()); + } while (Math.abs(Q1) > 1e-10 && iterations < maxNumberOfIterations); + + iterations = 0; + double presOld = system.getPressure(); + do { + logger.info( + "temp " + system.getTemperature() + " Q1 " + Q1 + " pressure " + system.getPressure()); + Matrix dx = null; + iterations++; try { - localOperation.dewPointTemperatureFlash(); - } catch (Exception e) { - logger.error("error", e); + system.init(3); + setfvec(); + setJac(); + dx = Jac.solve(fvec); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - system.setNumberOfPhases(2); - system.setBeta(0.5); - system.setTemperature(system.getTemperature() - 20); - system.init(3); - system.display(); - double Q1 = 0, Qold = 0.0, dQ1dT = 0, oldTemperature = 0, oldIterTemp = 0; - do { - oldIterTemp = system.getTemperature(); - iterations = 0; - do { - iterations++; - initMoleFraction(); - system.init(3); - Qold = Q1; - Q1 = 0.0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - Q1 -= system.getPhase(1).getComponent(i).getx() - * (system.getPhase(0).getComponent(i).getdfugdt() - - system.getPhase(1).getComponent(i).getdfugdt()); - } - if (iterations > 1) { - dQ1dT = (Q1 - Qold) / (system.getTemperature() - oldTemperature); - } else { - dQ1dT = Q1 * 100.0; - } - - oldTemperature = system.getTemperature(); - system.setTemperature(system.getTemperature() - 0.5 * Q1 / dQ1dT); + double damping = iterations * 1.0 / (10.0 + iterations); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + double xlocal = system.getPhase(1).getComponent(i).getx() - damping * dx.get(i, 0); + if (xlocal < 1e-30) { + xlocal = 1e-30; + } + if (xlocal > 1.0 - 1e-30) { + xlocal = 1.0 - 1e-30; + } + logger.info("x" + (xlocal) + " press " + system.getPressure() + " fvec " + fvec.norm2()); + system.getPhase(1).getComponent(i).setx(xlocal); + } + system.setPressure( + system.getPressure() - damping * dx.get(system.getPhase(0).getNumberOfComponents(), 0)); + } while (Math.abs(fvec.norm2()) > 1.0e-12 && iterations < maxNumberOfIterations + && Math.abs(presOld - system.getPressure()) < 10.0); + } while (Math.abs(oldIterTemp - system.getTemperature()) > 1e-3); + } - system.init(3); - logger.info("temp " + system.getTemperature() + " Q1 " + Q1 + " pressure " - + system.getPressure()); - } while (Math.abs(Q1) > 1e-10 && iterations < maxNumberOfIterations); + /** {@inheritDoc} */ + @Override + public void run() { + ThermodynamicOperations localOperation = new ThermodynamicOperations(system); - iterations = 0; - double presOld = system.getPressure(); - do { - logger.info("temp " + system.getTemperature() + " Q1 " + Q1 + " pressure " - + system.getPressure()); - Matrix dx = null; + system.init(0); + // system.setTemperature(system.getPhase(0).getPseudoCriticalTemperature() + 7); + // system.setPressure(system.getPhase(0).getPseudoCriticalPressure() / 2.0); + system.init(3); - iterations++; - try { - system.init(3); - setfvec(); - setJac(); - dx = Jac.solve(fvec); - } catch (Exception e) { - logger.error("error", e); - } - double damping = iterations * 1.0 / (10.0 + iterations); - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - double xlocal = - system.getPhase(1).getComponent(i).getx() - damping * dx.get(i, 0); - if (xlocal < 1e-30) { - xlocal = 1e-30; - } - if (xlocal > 1.0 - 1e-30) { - xlocal = 1.0 - 1e-30; - } - logger.info("x" + (xlocal) + " press " + system.getPressure() + " fvec " - + fvec.norm2()); - system.getPhase(1).getComponent(i).setx(xlocal); - } - system.setPressure(system.getPressure() - - damping * dx.get(system.getPhase(0).getNumberOfComponents(), 0)); - } while (Math.abs(fvec.norm2()) > 1.0e-12 && iterations < maxNumberOfIterations - && Math.abs(presOld - system.getPressure()) < 10.0); - } while (Math.abs(oldIterTemp - system.getTemperature()) > 1e-3); - } + int iterations = 0; + localOperation.TPflash(); + double Q1 = 0; + double Qold = 0.0; + double dQ1dT = 1.0; + double oldTemperature = 0; + double dewTemp = 0; - /** {@inheritDoc} */ - @Override - public void run() { - ThermodynamicOperations localOperation = new ThermodynamicOperations(system); + for (int ii = 0; ii < 45; ii++) { + system.setPressure(system.getPressure() + 1.0); + try { + // if(ii<2) localOperation.dewPointTemperatureFlash(); + // else localOperation.dewPointPressureFlash(); + dewTemp = system.getTemperature(); + system.getPressure(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } - system.init(0); - // system.setTemperature(system.getPhase(0).getPseudoCriticalTemperature() + 7); - // system.setPressure(system.getPhase(0).getPseudoCriticalPressure() / 2.0); + iterations = 0; + do { + iterations++; system.init(3); - - int iterations = 0; + // initMoleFraction(); localOperation.TPflash(); - double Q1 = 0, Qold = 0.0, dQ1dT = 1.0, oldTemperature = 0; - double dewTemp = 0; - // double dewPres = 0; - - for (int ii = 0; ii < 45; ii++) { - system.setPressure(system.getPressure() + 1.0); - try { - // if(ii<2) localOperation.dewPointTemperatureFlash(); - // else localOperation.dewPointPressureFlash(); - dewTemp = system.getTemperature(); - // dewPres = system.getPressure(); - // system.display(); - } catch (Exception e) { - logger.error("error", e); - } - - iterations = 0; - do { - iterations++; - system.init(3); - // initMoleFraction(); - localOperation.TPflash(); - system.display(); - Qold = Q1; - Q1 = 0.0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - Q1 -= system.getPhase(1).getComponent(i).getx() - * (system.getPhase(0).getComponent(i).getdfugdt() - - system.getPhase(1).getComponent(i).getdfugdt()); - } - if (iterations > 3) { - dQ1dT = (Q1 - Qold) / (system.getTemperature() - oldTemperature); - } else { - dQ1dT = -Q1 * 100.0; - } + system.display(); + Qold = Q1; + Q1 = 0.0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + Q1 -= system.getPhase(1).getComponent(i).getx() + * (system.getPhase(0).getComponent(i).getdfugdt() + - system.getPhase(1).getComponent(i).getdfugdt()); + } + if (iterations > 3) { + dQ1dT = (Q1 - Qold) / (system.getTemperature() - oldTemperature); + } else { + dQ1dT = -Q1 * 100.0; + } - oldTemperature = system.getTemperature(); - system.setTemperature(system.getTemperature() - - iterations * 1.0 / (iterations + 10.0) * Q1 / dQ1dT); + oldTemperature = system.getTemperature(); + system.setTemperature( + system.getTemperature() - iterations * 1.0 / (iterations + 10.0) * Q1 / dQ1dT); - logger.info("temp " + system.getTemperature() + "dewTemp " + dewTemp + " Q1 " + Q1 - + " pressure " + system.getPressure()); - } while (Math.abs(Q1) > 1e-10 && iterations < 15);// maxNumberOfIterations); - logger.info("temp " + system.getTemperature() + " Q1 " + Q1); - // if(ii<2) system.setTemperature(dewTemp-); - logger.info("fvec " + fvec.norm2() + " pressure " + system.getPressure()); - } + logger.info("temp " + system.getTemperature() + "dewTemp " + dewTemp + " Q1 " + Q1 + + " pressure " + system.getPressure()); + } while (Math.abs(Q1) > 1e-10 && iterations < 15); // maxNumberOfIterations); + logger.info("temp " + system.getTemperature() + " Q1 " + Q1); + // if(ii<2) system.setTemperature(dewTemp-); + logger.info("fvec " + fvec.norm2() + " pressure " + system.getPressure()); } + } - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - double sumxx = 0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - sumxx += system.getPhases()[1].getComponents()[i].getx(); - fvec.set(i, 0, Math - .log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() - * system.getPhases()[0].getComponents()[i].getz() - * system.getPressure()) - - Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() - * system.getPhases()[1].getComponents()[i].getx() - * system.getPressure())); - } - fvec.set(system.getPhase(0).getNumberOfComponents(), 0, 1.0 - sumxx); - // logger.info("sumx" + sumxx); + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + double sumxx = 0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + sumxx += system.getPhases()[1].getComponents()[i].getx(); + fvec.set(i, 0, + Math.log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() + * system.getPhases()[0].getComponents()[i].getz() * system.getPressure()) + - Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() + * system.getPhases()[1].getComponents()[i].getx() * system.getPressure())); } + fvec.set(system.getPhase(0).getNumberOfComponents(), 0, 1.0 - sumxx); + // logger.info("sumx" + sumxx); + } - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac.timesEquals(0.0); - double dij = 0.0; + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); + double dij = 0.0; - double tempJ = 0.0; + double tempJ = 0.0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = -dij * 1.0 / system.getPhases()[1].getComponents()[i].getx() - - system.getPhases()[1].getComponents()[i].getdfugdx(j); - Jac.set(i, j, tempJ); - } - } + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = -dij * 1.0 / system.getPhases()[1].getComponents()[i].getx() + - system.getPhases()[1].getComponents()[i].getdfugdx(j); + Jac.set(i, j, tempJ); + } + } - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - Jac.set(system.getPhase(0).getNumberOfComponents(), i, -1.0); - } - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - Jac.set(i, system.getPhase(0).getNumberOfComponents(), - system.getPhases()[0].getComponents()[i].getdfugdp() - - system.getPhases()[1].getComponents()[i].getdfugdp()); - } + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + Jac.set(system.getPhase(0).getNumberOfComponents(), i, -1.0); + } + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + Jac.set(i, system.getPhase(0).getNumberOfComponents(), + system.getPhases()[0].getComponents()[i].getdfugdp() + - system.getPhases()[1].getComponents()[i].getdfugdp()); } + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondenBarTemp.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondenBarTemp.java index 157af018f8..ec4d6bc374 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondenBarTemp.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondenBarTemp.java @@ -12,150 +12,149 @@ * @version $Id: $Id */ public class cricondenBarTemp implements java.io.Serializable { - private static final long serialVersionUID = 1000; - int neq = 0, iter = 0; - int ic02p = -100, ic03p = -100, testcrit = 0, npCrit = 0; - double beta = 0, ds = 0, dTmax = 1, dPmax = 1, avscp = 0.1, TC1 = 0, TC2 = 0, PC1 = 0, PC2 = 0; - Matrix Jac; - Matrix fvec; - Matrix u; - Matrix uold; - Matrix Xgij; - SystemInterface system; - int numberOfComponents; - int speceq = 0; - Matrix a = new Matrix(4, 4); - Matrix s = new Matrix(1, 4); - Matrix xg; - Matrix dx; - Matrix xcoef; + private static final long serialVersionUID = 1000; + int neq = 0; + int iter = 0; + int ic02p = -100; + int ic03p = -100; + int testcrit = 0; + int npCrit = 0; + double beta = 0; + double ds = 0; + double dTmax = 1; + double dPmax = 1; + double avscp = 0.1; + double TC1 = 0; + double TC2 = 0; + double PC1 = 0; + double PC2 = 0; + Matrix Jac; + Matrix fvec; + Matrix u; + Matrix uold; + Matrix Xgij; + SystemInterface system; + int numberOfComponents; + int speceq = 0; + Matrix a = new Matrix(4, 4); + Matrix s = new Matrix(1, 4); + Matrix xg; + Matrix dx; + Matrix xcoef; - /** - *

- * Constructor for cricondenBarTemp. - *

- */ - public cricondenBarTemp() {} + /** + *

+ * Constructor for cricondenBarTemp. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param numberOfPhases a int + * @param numberOfComponents a int + */ + public cricondenBarTemp(SystemInterface system, int numberOfPhases, int numberOfComponents) { + this.system = system; + this.numberOfComponents = numberOfComponents; + neq = numberOfComponents; + Jac = new Matrix(neq, neq); + fvec = new Matrix(neq, 1); + u = new Matrix(neq, 1); + Xgij = new Matrix(neq, 4); + setu(); + uold = u.copy(); + // System.out.println("Spec : " +speceq); + } - /** - *

- * Constructor for cricondenBarTemp. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param numberOfPhases a int - * @param numberOfComponents a int - */ - public cricondenBarTemp(SystemInterface system, int numberOfPhases, int numberOfComponents) { - this.system = system; - this.numberOfComponents = numberOfComponents; - neq = numberOfComponents; - Jac = new Matrix(neq, neq); - fvec = new Matrix(neq, 1); - u = new Matrix(neq, 1); - Xgij = new Matrix(neq, 4); - setu(); - uold = u.copy(); - // System.out.println("Spec : " +speceq); + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + for (int i = 0; i < numberOfComponents; i++) { + fvec.set(i, 0, + Math.log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() + * system.getPhases()[0].getComponents()[i].getx() * system.getPressure()) + - Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() + * system.getPhases()[1].getComponents()[i].getx() * system.getPressure())); } + } - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - for (int i = 0; i < numberOfComponents; i++) { - fvec.set(i, 0, Math - .log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient() - * system.getPhases()[0].getComponents()[i].getx() - * system.getPressure()) - - Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() - * system.getPhases()[1].getComponents()[i].getx() - * system.getPressure())); - } - } - - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac.timesEquals(0.0); - double dij = 0.0; + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); + double dij = 0.0; - double tempJ = 0.0; - // double sumdyidbeta = 0, sumdxidbeta = 0; - // int nofc = numberOfComponents; - - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = 1.0 / system.getBeta() - * (dij / system.getPhases()[0].getComponents()[i].getx() - 1.0 - + system.getPhases()[0].getComponents()[i].getdfugdx(j)) - + 1.0 / (1.0 - system.getBeta()) - * (dij / system.getPhases()[1].getComponents()[i].getx() - 1.0 - + system.getPhases()[1].getComponents()[i].getdfugdx(j)); - Jac.set(i, j, tempJ); - } - } + double tempJ = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = 1.0 / system.getBeta() + * (dij / system.getPhases()[0].getComponents()[i].getx() - 1.0 + + system.getPhases()[0].getComponents()[i].getdfugdx(j)) + + 1.0 / (1.0 - system.getBeta()) + * (dij / system.getPhases()[1].getComponents()[i].getx() - 1.0 + + system.getPhases()[1].getComponents()[i].getdfugdx(j)); + Jac.set(i, j, tempJ); + } } + } - /** - *

- * Setter for the field u. - *

- */ - public void setu() { - for (int i = 0; i < numberOfComponents; i++) { - u.set(i, 0, system.getBeta() * system.getPhases()[0].getComponents()[i].getx()); - } + /** + *

+ * Setter for the field u. + *

+ */ + public void setu() { + for (int i = 0; i < numberOfComponents; i++) { + u.set(i, 0, system.getBeta() * system.getPhases()[0].getComponents()[i].getx()); } + } - /** - *

- * init. - *

- */ - public void init() { - double temp = 0; - - for (int i = 0; i < numberOfComponents; i++) { - temp += u.get(i, 0); - } - system.setBeta(temp); - for (int i = 0; i < numberOfComponents; i++) { - system.getPhases()[0].getComponents()[i].setx(u.get(i, 0) / system.getBeta()); - system.getPhases()[1].getComponents()[i] - .setx((system.getPhases()[0].getComponents()[i].getz() - u.get(i, 0)) - / (1.0 - system.getBeta())); - system.getPhases()[0].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getx() - / system.getPhases()[1].getComponents()[i].getx()); - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - } + /** + *

+ * init. + *

+ */ + public void init() { + double temp = 0; - system.init(3); + for (int i = 0; i < numberOfComponents; i++) { + temp += u.get(i, 0); } - - /** - *

- * solve. - *

- * - * @return a double - */ - public double solve() { - iter++; - init(); - setfvec(); - setJac(); - dx = Jac.solve(fvec); - // dx.print(10,10); - u.minusEquals(dx); - return (dx.norm2() / u.norm2()); + system.setBeta(temp); + for (int i = 0; i < numberOfComponents; i++) { + system.getPhases()[0].getComponents()[i].setx(u.get(i, 0) / system.getBeta()); + system.getPhases()[1].getComponents()[i] + .setx((system.getPhases()[0].getComponents()[i].getz() - u.get(i, 0)) + / (1.0 - system.getBeta())); + system.getPhases()[0].getComponents()[i].setK(system.getPhases()[0].getComponents()[i].getx() + / system.getPhases()[1].getComponents()[i].getx()); + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); } + + system.init(3); + } + + /** + *

+ * solve. + *

+ * + * @return a double + */ + public double solve() { + iter++; + init(); + setfvec(); + setJac(); + dx = Jac.solve(fvec); + // dx.print(10,10); + u.minusEquals(dx); + return (dx.norm2() / u.norm2()); + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondenBarTemp1.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondenBarTemp1.java index da1d4a17e1..8c7d17d6f8 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondenBarTemp1.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/cricondenBarTemp1.java @@ -12,247 +12,243 @@ * @version $Id: $Id */ public class cricondenBarTemp1 implements java.io.Serializable { - private static final long serialVersionUID = 1000; - - int neq = 0, iter = 0; - int ic02p = -100, ic03p = -100, testcrit = 0, npCrit = 0; - double beta = 0, ds = 0, dTmax = 1, dPmax = 1, avscp = 0.1, TC1 = 0, TC2 = 0, PC1 = 0, PC2 = 0; - Matrix Jac; - Matrix fvec; - Matrix u; - Matrix uold; - Matrix Xgij; - SystemInterface system; - int numberOfComponents; - int speceq = 0; - Matrix a = new Matrix(4, 4); - Matrix s = new Matrix(1, 4); - Matrix xg; - Matrix dx; - Matrix xcoef; - - /** - *

- * Constructor for cricondenBarTemp1. - *

- */ - public cricondenBarTemp1() {} - - /** - *

- * Constructor for cricondenBarTemp1. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public cricondenBarTemp1(SystemInterface system) { - this.system = system; - this.numberOfComponents = system.getPhase(0).getNumberOfComponents(); - neq = numberOfComponents; - Jac = new Matrix(neq + 2, neq + 2); - fvec = new Matrix(neq + 2, 1); - u = new Matrix(neq + 2, 1); - Xgij = new Matrix(neq + 2, 4); - setu(); - uold = u.copy(); - // System.out.println("Spec : " +speceq); + private static final long serialVersionUID = 1000; + + int neq = 0; + int iter = 0; + int ic02p = -100; + int ic03p = -100; + int testcrit = 0; + int npCrit = 0; + double beta = 0; + double ds = 0; + double dTmax = 1; + double dPmax = 1; + double avscp = 0.1; + double TC1 = 0; + double TC2 = 0; + double PC1 = 0; + double PC2 = 0; + + Matrix Jac; + Matrix fvec; + Matrix u; + Matrix uold; + Matrix Xgij; + SystemInterface system; + int numberOfComponents; + int speceq = 0; + Matrix a = new Matrix(4, 4); + Matrix s = new Matrix(1, 4); + Matrix xg; + Matrix dx; + Matrix xcoef; + + /** + *

+ * Constructor for cricondenBarTemp1. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public cricondenBarTemp1(SystemInterface system) { + this.system = system; + this.numberOfComponents = system.getPhase(0).getNumberOfComponents(); + neq = numberOfComponents; + Jac = new Matrix(neq + 2, neq + 2); + fvec = new Matrix(neq + 2, 1); + u = new Matrix(neq + 2, 1); + Xgij = new Matrix(neq + 2, 4); + setu(); + uold = u.copy(); + // System.out.println("Spec : " +speceq); + } + + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + double xtot = 0.0; + double dQdT = 0; + for (int i = 0; i < numberOfComponents; i++) { + xtot += system.getPhase(1).getComponent(i).getx(); + dQdT -= system.getPhase(1).getComponent(i).getx() + * (system.getPhase(0).getComponent(i).getdfugdt() + - system.getPhase(1).getComponent(i).getdfugdt()); + fvec.set(i, 0, + Math.log(system.getPhase(0).getComponents()[i].getFugacityCoefficient() + * system.getPhase(0).getComponents()[i].getz() * system.getPressure()) + - Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() + * system.getPhases()[1].getComponents()[i].getx() * system.getPressure())); } - - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - double xtot = 0.0, dQdT = 0; - for (int i = 0; i < numberOfComponents; i++) { - xtot += system.getPhase(1).getComponent(i).getx(); - dQdT -= system.getPhase(1).getComponent(i).getx() - * (system.getPhase(0).getComponent(i).getdfugdt() - - system.getPhase(1).getComponent(i).getdfugdt()); - fvec.set(i, 0, Math - .log(system.getPhase(0).getComponents()[i].getFugacityCoefficient() - * system.getPhase(0).getComponents()[i].getz() * system.getPressure()) - - Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() - * system.getPhases()[1].getComponents()[i].getx() - * system.getPressure())); - } - fvec.set(numberOfComponents, 0, 1.0 - xtot); - fvec.set(numberOfComponents + 1, 0, dQdT); - } - - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac.timesEquals(0.0); - double dij = 0.0; - - double tempJ = 0.0; - // double sumdyidbeta = 0, sumdxidbeta = 0; - // int nofc = numberOfComponents; - - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = 1.0 / system.getBeta() - * (dij / system.getPhases()[0].getComponents()[i].getx() - 1.0 - + system.getPhases()[0].getComponents()[i].getdfugdx(j)) - + 1.0 / (1.0 - system.getBeta()) - * (dij / system.getPhases()[1].getComponents()[i].getx() - 1.0 - + system.getPhases()[1].getComponents()[i].getdfugdx(j)); - Jac.set(i, j, tempJ); - } - } + fvec.set(numberOfComponents, 0, 1.0 - xtot); + fvec.set(numberOfComponents + 1, 0, dQdT); + } + + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); + double dij = 0.0; + + double tempJ = 0.0; + // double sumdyidbeta = 0, sumdxidbeta = 0; + // int nofc = numberOfComponents; + + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = 1.0 / system.getBeta() + * (dij / system.getPhases()[0].getComponents()[i].getx() - 1.0 + + system.getPhases()[0].getComponents()[i].getdfugdx(j)) + + 1.0 / (1.0 - system.getBeta()) + * (dij / system.getPhases()[1].getComponents()[i].getx() - 1.0 + + system.getPhases()[1].getComponents()[i].getdfugdx(j)); + Jac.set(i, j, tempJ); + } } - - /** - *

- * Setter for the field u. - *

- */ - public void setu() { - for (int i = 0; i < numberOfComponents; i++) { - u.set(i, 0, system.getBeta() * system.getPhases()[0].getComponents()[i].getx()); - } + } + + /** + *

+ * Setter for the field u. + *

+ */ + public void setu() { + for (int i = 0; i < numberOfComponents; i++) { + u.set(i, 0, system.getBeta() * system.getPhases()[0].getComponents()[i].getx()); } - - /** - *

- * init. - *

- */ - public void init() { - double temp = 0; - - for (int i = 0; i < numberOfComponents; i++) { - temp += u.get(i, 0); - } - system.setBeta(temp); - for (int i = 0; i < numberOfComponents; i++) { - system.getPhases()[0].getComponents()[i].setx(u.get(i, 0) / system.getBeta()); - system.getPhases()[1].getComponents()[i] - .setx((system.getPhases()[0].getComponents()[i].getz() - u.get(i, 0)) - / (1.0 - system.getBeta())); - system.getPhases()[0].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getx() - / system.getPhases()[1].getComponents()[i].getx()); - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - } - - system.init(3); + } + + /** + *

+ * init. + *

+ */ + public void init() { + double temp = 0; + + for (int i = 0; i < numberOfComponents; i++) { + temp += u.get(i, 0); } - - /** - *

- * solve. - *

- * - * @return a double - */ - public double solve() { - iter++; - init(); - setfvec(); - setJac(); - dx = Jac.solve(fvec); - dx.print(10, 10); - u.minusEquals(dx); - return (dx.norm2() / u.norm2()); + system.setBeta(temp); + for (int i = 0; i < numberOfComponents; i++) { + system.getPhases()[0].getComponents()[i].setx(u.get(i, 0) / system.getBeta()); + system.getPhases()[1].getComponents()[i] + .setx((system.getPhases()[0].getComponents()[i].getz() - u.get(i, 0)) + / (1.0 - system.getBeta())); + system.getPhases()[0].getComponents()[i].setK(system.getPhases()[0].getComponents()[i].getx() + / system.getPhases()[1].getComponents()[i].getx()); + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); } - /** - *

- * run. - *

- */ - public void run() { - solve(); - } - - /** - *

- * getJFreeChart. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link org.jfree.chart.JFreeChart} object - */ - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } - - /** - *

- * get. - *

- * - * @param name a {@link java.lang.String} object - * @return an array of {@link double} objects - */ - public double[] get(String name) { - return new double[0]; - } - - /** - *

- * printToFile. - *

- * - * @param name a {@link java.lang.String} object - */ - public void printToFile(String name) {} - - /** - *

- * displayResult. - *

- */ - public void displayResult() {} - - /** - *

- * getPoints. - *

- * - * @param i a int - * @return an array of {@link double} objects - */ - public double[][] getPoints(int i) { - return null; - } - - /** - *

- * getResultTable. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public String[][] getResultTable() { - return null; - } - - /** - *

- * createNetCdfFile. - *

- * - * @param name a {@link java.lang.String} object - */ - public void createNetCdfFile(String name) {} - - /** - *

- * getThermoSystem. - *

- * - * @return a {@link neqsim.thermo.system.SystemInterface} object - */ - public SystemInterface getThermoSystem() { - return system; - } + system.init(3); + } + + /** + *

+ * solve. + *

+ * + * @return a double + */ + public double solve() { + iter++; + init(); + setfvec(); + setJac(); + dx = Jac.solve(fvec); + dx.print(10, 10); + u.minusEquals(dx); + return (dx.norm2() / u.norm2()); + } + + /** + *

+ * run. + *

+ */ + public void run() { + solve(); + } + + /** + *

+ * getJFreeChart. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link org.jfree.chart.JFreeChart} object + */ + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + + /** + *

+ * get. + *

+ * + * @param name a {@link java.lang.String} object + * @return an array of type double + */ + public double[] get(String name) { + return new double[0]; + } + + /** + *

+ * printToFile. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void printToFile(String name) {} + + /** + *

+ * displayResult. + *

+ */ + public void displayResult() {} + + /** + *

+ * getPoints. + *

+ * + * @param i a int + * @return an array of type double + */ + public double[][] getPoints(int i) { + return null; + } + + /** + *

+ * getResultTable. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[][] getResultTable() { + return null; + } + + /** + *

+ * getThermoSystem. + *

+ * + * @return a {@link neqsim.thermo.system.SystemInterface} object + */ + public SystemInterface getThermoSystem() { + return system; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointPressureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointPressureFlash.java index cc6a9d7ff7..509e14c620 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointPressureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointPressureFlash.java @@ -11,111 +11,105 @@ * @version $Id: $Id */ public class dewPointPressureFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for dewPointPressureFlash. - *

- */ - public dewPointPressureFlash() {} + /** + *

+ * Constructor for dewPointPressureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public dewPointPressureFlash(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for dewPointPressureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public dewPointPressureFlash(SystemInterface system) { - super(system); + /** {@inheritDoc} */ + @Override + public void run() { + if (system.getPhase(0).getNumberOfComponents() == 1 + && system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { + setSuperCritical(true); } - /** {@inheritDoc} */ - @Override - public void run() { - if (system.getPhase(0).getNumberOfComponents() == 1 - && system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { - setSuperCritical(true); - } - - int iterations = 0, maxNumberOfIterations = 5000; - double xold = 0, xtotal = 1; - // System.out.println("starting"); - system.init(0); - system.setBeta(0, 1.0 - 1e-10); - system.setBeta(1, 1e-10); - system.setNumberOfPhases(2); - double oldPres = 0; - if (system.isChemicalSystem()) { - system.getChemicalReactionOperations().solveChemEq(0); - system.getChemicalReactionOperations().solveChemEq(1); - } + int iterations = 0; + int maxNumberOfIterations = 5000; + double xold = 0; + double xtotal = 1; + // System.out.println("starting"); + system.init(0); + system.setBeta(0, 1.0 - 1e-10); + system.setBeta(1, 1e-10); + system.setNumberOfPhases(2); + double oldPres = 0; + if (system.isChemicalSystem()) { + system.getChemicalReactionOperations().solveChemEq(0); + system.getChemicalReactionOperations().solveChemEq(1); + } - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getz()); - if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setx(1e-40); - } else { - system.getPhases()[1].getComponents()[i] - .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - } - } - // system.setPressure(system.getPhases()[0].getAntoineVaporPressure(system.getTemperature())); - xtotal = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - xtotal += system.getPhases()[1].getComponents()[i].getx(); - } - double ktot = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getz()); + if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setx(1e-40); + } else { + system.getPhases()[1].getComponents()[i] + .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + } + } + // system.setPressure(system.getPhases()[0].getAntoineVaporPressure(system.getTemperature())); + xtotal = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + xtotal += system.getPhases()[1].getComponents()[i].getx(); + } + double ktot = 0.0; + do { + iterations++; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[1].getComponents()[i] + .setx(system.getPhases()[1].getComponents()[i].getx() / xtotal); + } + system.init(1); + ktot = 0.0; + oldPres = system.getPressure(); + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { do { - iterations++; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[1].getComponents()[i] - .setx(system.getPhases()[1].getComponents()[i].getx() / xtotal); - } - system.init(1); - ktot = 0.0; - oldPres = system.getPressure(); - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - do { - xold = system.getPhases()[1].getComponents()[i].getx(); - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setK(1e-40); - } else { - system.getPhases()[0].getComponents()[i].setK(Math.exp(Math.log( - system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) - - Math.log(system.getPhases()[0].getComponents()[i] - .getFugacityCoefficient()))); - } - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - system.getPhases()[1].getComponents()[i] - .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - } while (Math.abs(system.getPhases()[1].getComponents()[i].getx() - xold) > 1e-4); - ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); - } - xtotal = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - xtotal += system.getPhases()[1].getComponents()[i].getx(); - } - system.setPressure(oldPres + 0.1 * (system.getPressure() / xtotal - oldPres)); - // System.out.println("iter " + iterations + " pressure " - // +system.getPressure()); - } while ((((Math.abs(xtotal) - 1.0) > 1e-10) - || Math.abs(oldPres - system.getPressure()) / oldPres > 1e-9) - && (iterations < maxNumberOfIterations)); - // System.out.println("iter " + iterations + " XTOT " +xtotal + " k " - // +system.getPhases()[1].getComponents()[0].getK()); - if (Math.abs(xtotal - 1.0) >= 1e-5 - || ktot < 1e-3 && system.getPhase(0).getNumberOfComponents() > 1) { - setSuperCritical(true); - } + xold = system.getPhases()[1].getComponents()[i].getx(); + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setK(1e-40); + } else { + system.getPhases()[0].getComponents()[i].setK( + Math.exp(Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) + - Math.log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient()))); + } + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); + system.getPhases()[1].getComponents()[i] + .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + } while (Math.abs(system.getPhases()[1].getComponents()[i].getx() - xold) > 1e-4); + ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); + } + xtotal = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + xtotal += system.getPhases()[1].getComponents()[i].getx(); + } + system.setPressure(oldPres + 0.1 * (system.getPressure() / xtotal - oldPres)); + // System.out.println("iter " + iterations + " pressure " + // +system.getPressure()); + } while ((((Math.abs(xtotal) - 1.0) > 1e-10) + || Math.abs(oldPres - system.getPressure()) / oldPres > 1e-9) + && (iterations < maxNumberOfIterations)); + // System.out.println("iter " + iterations + " XTOT " +xtotal + " k " + // +system.getPhases()[1].getComponents()[0].getK()); + if (Math.abs(xtotal - 1.0) >= 1e-5 + || ktot < 1e-3 && system.getPhase(0).getNumberOfComponents() > 1) { + setSuperCritical(true); } + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlash.java index 1b71c3a5a0..155aef5337 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlash.java @@ -11,143 +11,139 @@ * @version $Id: $Id */ public class dewPointTemperatureFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for dewPointTemperatureFlash. - *

- */ - public dewPointTemperatureFlash() {} + /** + *

+ * Constructor for dewPointTemperatureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public dewPointTemperatureFlash(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for dewPointTemperatureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public dewPointTemperatureFlash(SystemInterface system) { - super(system); + /** {@inheritDoc} */ + @Override + public void run() { + if (system.getPhase(0).getNumberOfComponents() == 1 + && system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { + setSuperCritical(true); } - /** {@inheritDoc} */ - @Override - public void run() { - if (system.getPhase(0).getNumberOfComponents() == 1 - && system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { - setSuperCritical(true); - } - - int iterations = 0, maxNumberOfIterations = 1000; - double xold = 0, xtotal = 1; - // System.out.println("starting"); - system.init(0); - system.setBeta(0, 1.0 - 1e-15); - system.setBeta(1, 1e-15); - system.init(1); - system.setNumberOfPhases(2); + int iterations = 0; + int maxNumberOfIterations = 1000; + double xold = 0; + double xtotal = 1; + // System.out.println("starting"); + system.init(0); + system.setBeta(0, 1.0 - 1e-15); + system.setBeta(1, 1e-15); + system.init(1); + system.setNumberOfPhases(2); - double oldTemp = 0; - if (system.isChemicalSystem()) { - system.getChemicalReactionOperations().solveChemEq(0); - system.getChemicalReactionOperations().solveChemEq(1); - } + double oldTemp = 0; + if (system.isChemicalSystem()) { + system.getChemicalReactionOperations().solveChemEq(0); + system.getChemicalReactionOperations().solveChemEq(1); + } - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getz()); - if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setx(1e-40); - } else { - if (system.getPhases()[1].getComponents()[i].getName().equals("water")) { - system.getPhases()[1].getComponents()[i].setx(1.0); - } else if (system.getPhases()[1].hasComponent("water")) { - system.getPhases()[1].getComponents()[i].setx(1.0e-10); - } else { - system.getPhases()[1].getComponents()[i] - .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - } - } - } - // system.setPressure(system.getPhases()[0].getAntoineVaporPressure(system.getTemperature())); - xtotal = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - xtotal += system.getPhases()[1].getComponents()[i].getx(); + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getz()); + if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setx(1e-40); + } else { + if (system.getPhases()[1].getComponents()[i].getName().equals("water")) { + system.getPhases()[1].getComponents()[i].setx(1.0); + } else if (system.getPhases()[1].hasComponent("water")) { + system.getPhases()[1].getComponents()[i].setx(1.0e-10); + } else { + system.getPhases()[1].getComponents()[i] + .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); } - double ktot = 0.0, oldTemperature = 0.0, fold = 0; + } + } + // system.setPressure(system.getPhases()[0].getAntoineVaporPressure(system.getTemperature())); + xtotal = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + xtotal += system.getPhases()[1].getComponents()[i].getx(); + } + double ktot = 0.0; + double oldTemperature = 0.0; + double fold = 0; + do { + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[1].getComponents()[i] + .setx(system.getPhases()[1].getComponents()[i].getx() / xtotal); + } + system.init(1); + oldTemp = system.getTemperature(); + iterations++; + ktot = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { do { - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[1].getComponents()[i] - .setx(system.getPhases()[1].getComponents()[i].getx() / xtotal); - } - system.init(1); - oldTemp = system.getTemperature(); - iterations++; - ktot = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - do { - xold = system.getPhases()[1].getComponents()[i].getx(); - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setK(1e-40); - } else { - system.getPhases()[0].getComponents()[i].setK(Math.exp( - system.getPhases()[1].getComponents()[i].getLogFugacityCoefficient() - - system.getPhases()[0].getComponents()[i] - .getLogFugacityCoefficient())); - } - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - system.getPhases()[1].getComponents()[i] - .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - } while (Math.abs(system.getPhases()[1].getComponents()[i].getx() - xold) > 1e-6); - ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); - } - xtotal = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - xtotal += system.getPhases()[1].getComponents()[i].getx(); - } + xold = system.getPhases()[1].getComponents()[i].getx(); + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setK(1e-40); + } else { + system.getPhases()[0].getComponents()[i] + .setK(Math.exp(system.getPhases()[1].getComponents()[i].getLogFugacityCoefficient() + - system.getPhases()[0].getComponents()[i].getLogFugacityCoefficient())); + } + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); + system.getPhases()[1].getComponents()[i] + .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + } while (Math.abs(system.getPhases()[1].getComponents()[i].getx() - xold) > 1e-6); + ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); + } + xtotal = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + xtotal += system.getPhases()[1].getComponents()[i].getx(); + } - double f = xtotal - 1.0; - double dfdT = (f - fold) / (system.getTemperature() - oldTemperature); - fold = f; + double f = xtotal - 1.0; + double dfdT = (f - fold) / (system.getTemperature() - oldTemperature); + fold = f; - // System.out.println("x" + xtotal); - // if(xtotal>1.2) xtotal=1.2; - // if(xtotal<0.8) xtotal=0.8; - oldTemperature = system.getTemperature(); - if (iterations < 3) { - system.setTemperature(system.getTemperature() + iterations / (iterations + 100.0) - * (xtotal * system.getTemperature() - system.getTemperature())); - } else { - system.setTemperature( - system.getTemperature() - iterations / (iterations + 10.0) * f / dfdT); - } - // System.out.println("temperature " + system.getTemperature()); - // for (int i=0;i 1e-10) - || Math.abs(oldTemp - system.getTemperature()) / oldTemp > 1e-8) - && (iterations < maxNumberOfIterations)); - if (Math.abs(xtotal - 1.0) > 1e-5 - || ktot < 1.0e-3 && system.getPhase(0).getNumberOfComponents() > 1) { - setSuperCritical(true); - } - if (ktot < 1.0e-3) { - if (system.getTemperature() < 90.0) { - setSuperCritical(true); - } else { - setSuperCritical(false); - // system.setTemperature(system.getTemperature() - 10.0); - // run(); - } - } + // System.out.println("x" + xtotal); + // if(xtotal>1.2) xtotal=1.2; + // if(xtotal<0.8) xtotal=0.8; + oldTemperature = system.getTemperature(); + if (iterations < 3) { + system.setTemperature(system.getTemperature() + iterations / (iterations + 100.0) + * (xtotal * system.getTemperature() - system.getTemperature())); + } else { + system + .setTemperature(system.getTemperature() - iterations / (iterations + 10.0) * f / dfdT); + } + // System.out.println("temperature " + system.getTemperature()); + // for (int i=0;i 1e-10) + || Math.abs(oldTemp - system.getTemperature()) / oldTemp > 1e-8) + && (iterations < maxNumberOfIterations)); + if (Math.abs(xtotal - 1.0) > 1e-5 + || ktot < 1.0e-3 && system.getPhase(0).getNumberOfComponents() > 1) { + setSuperCritical(true); + } + if (ktot < 1.0e-3) { + if (system.getTemperature() < 90.0) { + setSuperCritical(true); + } else { + setSuperCritical(false); + // system.setTemperature(system.getTemperature() - 10.0); + // run(); + } } + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlashDer.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlashDer.java index 3c0c5ca149..3966f6215b 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlashDer.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlashDer.java @@ -11,158 +11,149 @@ * @version $Id: $Id */ public class dewPointTemperatureFlashDer extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for dewPointTemperatureFlashDer. - *

- */ - public dewPointTemperatureFlashDer() {} - - /** - *

- * Constructor for dewPointTemperatureFlashDer. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public dewPointTemperatureFlashDer(SystemInterface system) { - super(system); + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for dewPointTemperatureFlashDer. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public dewPointTemperatureFlashDer(SystemInterface system) { + super(system); + } + + /** {@inheritDoc} */ + @Override + public void run() { + if (system.getPhase(0).getNumberOfComponents() == 1 + && system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { + setSuperCritical(true); } - /** {@inheritDoc} */ - @Override - public void run() { - if (system.getPhase(0).getNumberOfComponents() == 1 - && system.getPressure() > system.getPhase(0).getComponent(0).getPC()) { - setSuperCritical(true); - } + // System.out.println("starting"); + system.init(0); + system.setBeta(0, 1.0 - 1e-15); + system.setBeta(1, 1e-15); + system.init(1); + system.setNumberOfPhases(2); + + double oldTemp = 0; + if (system.isChemicalSystem()) { + system.getChemicalReactionOperations().solveChemEq(0); + system.getChemicalReactionOperations().solveChemEq(1); + } - int iterations = 0, maxNumberOfIterations = 1000; - double xtotal = 1; - // double deriv = 0, funk = 0; - // System.out.println("starting"); - system.init(0); - system.setBeta(0, 1.0 - 1e-15); - system.setBeta(1, 1e-15); - system.init(1); - system.setNumberOfPhases(2); - - double oldTemp = 0; - if (system.isChemicalSystem()) { - system.getChemicalReactionOperations().solveChemEq(0); - system.getChemicalReactionOperations().solveChemEq(1); + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[0].getComponents()[i] + .setx(system.getPhases()[0].getComponents()[i].getz()); + if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setx(1e-40); + } else { + if (system.getPhases()[1].getComponents()[i].getName().equals("water")) { + system.getPhases()[1].getComponents()[i].setx(1.0); + } else if (system.getPhases()[1].hasComponent("water")) { + system.getPhases()[1].getComponents()[i].setx(1.0e-10); + } else { + system.getPhases()[1].getComponents()[i] + .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); } + } + } - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[0].getComponents()[i] - .setx(system.getPhases()[0].getComponents()[i].getz()); - if (system.getPhases()[0].getComponents()[i].getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setx(1e-40); - } else { - if (system.getPhases()[1].getComponents()[i].getName().equals("water")) { - system.getPhases()[1].getComponents()[i].setx(1.0); - } else if (system.getPhases()[1].hasComponent("water")) { - system.getPhases()[1].getComponents()[i].setx(1.0e-10); - } else { - system.getPhases()[1].getComponents()[i] - .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - } - } - } - // system.setPressure(system.getPhases()[0].getAntoineVaporPressure(system.getTemperature())); - xtotal = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - xtotal += system.getPhases()[1].getComponents()[i].getx(); - } - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[1].getComponents()[i] - .setx(system.getPhases()[1].getComponents()[i].getx() / xtotal); - } + // system.setPressure(system.getPhases()[0].getAntoineVaporPressure(system.getTemperature())); + double xtotal = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + xtotal += system.getPhases()[1].getComponents()[i].getx(); + } + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[1].getComponents()[i] + .setx(system.getPhases()[1].getComponents()[i].getx() / xtotal); + } - double ktot = 0.0; - // double = 0.0, fold = 0; - do { - oldTemp = system.getTemperature(); - iterations++; - system.init(2); - - xtotal = 0.0; - double dfdT = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - xtotal += 1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz(); - dfdT -= 1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz() - * (system.getPhases()[1].getComponents()[i].getdfugdt() - - system.getPhases()[0].getComponents()[i].getdfugdt()); - } - double f = xtotal - 1.0; - // fold = f; - - // System.out.println("x" + xtotal); - // oldTemperature = system.getTemperature(); - - if (iterations < 5) { - system.setTemperature(system.getTemperature() + iterations / (iterations + 100.0) - * (xtotal * system.getTemperature() - system.getTemperature())); - } else { - system.setTemperature( - system.getTemperature() - iterations / (10.0 + iterations) * f / dfdT); - } - // System.out.println("temperature " + system.getTemperature()); - - system.init(1); - - ktot = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { - system.getPhases()[0].getComponents()[i].setK(1e-40); - } else { - system.getPhases()[0].getComponents()[i].setK(Math.exp( - system.getPhases()[1].getComponents()[i].getLogFugacityCoefficient() - - system.getPhases()[0].getComponents()[i] - .getLogFugacityCoefficient())); - } - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getK()); - system.getPhases()[1].getComponents()[i] - .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[1].getComponents()[i].getz()); - ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); - } - // system.init_x_y(); - - xtotal = 0.0; - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - xtotal += system.getPhases()[1].getComponents()[i].getx(); - } - // System.out.println("xtotal " + xtotal); - for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { - system.getPhases()[1].getComponents()[i] - .setx(system.getPhases()[1].getComponents()[i].getx() / xtotal); - } - } while (((Math.abs(xtotal - 1.0) > 1e-6) - || Math.abs(oldTemp - system.getTemperature()) / oldTemp > 1e-4) - || iterations < 3 && (iterations < maxNumberOfIterations)); - if (Math.abs(xtotal - 1.0) > 1e-5 - || ktot < 1.0e-3 && system.getPhase(0).getNumberOfComponents() > 1) { - setSuperCritical(true); - } - if (ktot < 1.0e-3) { - if (system.getTemperature() < 90.0) { - setSuperCritical(true); - } else { - setSuperCritical(false); - // system.setTemperature(system.getTemperature() - 10.0); - // run(); - } + int iterations = 0; + int maxNumberOfIterations = 1000; + double ktot = 0.0; + do { + oldTemp = system.getTemperature(); + iterations++; + system.init(2); + + xtotal = 0.0; + double dfdT = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + xtotal += 1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz(); + dfdT -= 1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz() + * (system.getPhases()[1].getComponents()[i].getdfugdt() + - system.getPhases()[0].getComponents()[i].getdfugdt()); + } + double f = xtotal - 1.0; + // fold = f; + + // System.out.println("x" + xtotal); + // oldTemperature = system.getTemperature(); + + if (iterations < 5) { + system.setTemperature(system.getTemperature() + iterations / (iterations + 100.0) + * (xtotal * system.getTemperature() - system.getTemperature())); + } else { + system + .setTemperature(system.getTemperature() - iterations / (10.0 + iterations) * f / dfdT); + } + // System.out.println("temperature " + system.getTemperature()); + + system.init(1); + + ktot = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getIonicCharge() != 0) { + system.getPhases()[0].getComponents()[i].setK(1e-40); + } else { + system.getPhases()[0].getComponents()[i] + .setK(Math.exp(system.getPhases()[1].getComponents()[i].getLogFugacityCoefficient() + - system.getPhases()[0].getComponents()[i].getLogFugacityCoefficient())); } + system.getPhases()[1].getComponents()[i] + .setK(system.getPhases()[0].getComponents()[i].getK()); + system.getPhases()[1].getComponents()[i] + .setx(1.0 / system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[1].getComponents()[i].getz()); + ktot += Math.abs(system.getPhases()[1].getComponents()[i].getK() - 1.0); + } + // system.init_x_y(); + + xtotal = 0.0; + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + xtotal += system.getPhases()[1].getComponents()[i].getx(); + } + // System.out.println("xtotal " + xtotal); + for (int i = 0; i < system.getPhases()[1].getNumberOfComponents(); i++) { + system.getPhases()[1].getComponents()[i] + .setx(system.getPhases()[1].getComponents()[i].getx() / xtotal); + } + } while (((Math.abs(xtotal - 1.0) > 1e-6) + || Math.abs(oldTemp - system.getTemperature()) / oldTemp > 1e-4) + || iterations < 3 && (iterations < maxNumberOfIterations)); + if (Math.abs(xtotal - 1.0) > 1e-5 + || ktot < 1.0e-3 && system.getPhase(0).getNumberOfComponents() > 1) { + setSuperCritical(true); + } + if (ktot < 1.0e-3) { + if (system.getTemperature() < 90.0) { + setSuperCritical(true); + } else { + setSuperCritical(false); + // system.setTemperature(system.getTemperature() - 10.0); + // run(); + } } + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlash.java index da4849b775..bc700a7806 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlash.java @@ -18,185 +18,182 @@ * @version $Id: $Id */ public class freezingPointTemperatureFlash extends constantDutyTemperatureFlash - implements ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(freezingPointTemperatureFlash.class); - - public boolean noFreezeFlash = true; - public int Niterations = 0; - public String name = "Frz"; - public String phaseName = "oil"; - - /** - *

- * Constructor for freezingPointTemperatureFlash. - *

- */ - public freezingPointTemperatureFlash() {} - - /** - *

- * Constructor for freezingPointTemperatureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public freezingPointTemperatureFlash(SystemInterface system) { - super(system); - } - - /** - *

- * Constructor for freezingPointTemperatureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Freeze a boolean - */ - public freezingPointTemperatureFlash(SystemInterface system, boolean Freeze) { - super(system); - noFreezeFlash = Freeze; - } - - /** - *

- * calcFunc. - *

- * - * @return a double - */ - public double calcFunc() { - ThermodynamicOperations ops = new ThermodynamicOperations(system); - // double deriv = 0, funkOld = 0; - double funk = 0; - double SolidFugCoeff = 0.0; - int numbComponents = system.getPhases()[0].getNumberOfComponents(); - - for (int k = 0; k < numbComponents; k++) { - // logger.info("Checking all the components " + k); - if (system.getPhase(0).getComponent(k).doSolidCheck()) { - ops.TPflash(false); - SolidFugCoeff = - system.getPhases()[3].getComponent(k).fugcoef(system.getPhases()[3]); - funk = system.getPhase(0).getComponent(k).getz(); - for (int i = 0; i < system.getNumberOfPhases(); i++) { - funk -= system.getPhase(i).getBeta() * SolidFugCoeff - / system.getPhase(i).getComponents()[k].getFugacityCoefficient(); - } - } + implements ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(freezingPointTemperatureFlash.class); + + public boolean noFreezeFlash = true; + public int Niterations = 0; + public String name = "Frz"; + public String phaseName = "oil"; + + /** + *

+ * Constructor for freezingPointTemperatureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public freezingPointTemperatureFlash(SystemInterface system) { + super(system); + } + + /** + *

+ * Constructor for freezingPointTemperatureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Freeze a boolean + */ + public freezingPointTemperatureFlash(SystemInterface system, boolean Freeze) { + super(system); + noFreezeFlash = Freeze; + } + + /** + *

+ * calcFunc. + *

+ * + * @return a double + */ + public double calcFunc() { + ThermodynamicOperations ops = new ThermodynamicOperations(system); + // double deriv = 0, funkOld = 0; + double funk = 0; + double SolidFugCoeff = 0.0; + int numbComponents = system.getPhases()[0].getNumberOfComponents(); + + for (int k = 0; k < numbComponents; k++) { + // logger.info("Checking all the components " + k); + if (system.getPhase(0).getComponent(k).doSolidCheck()) { + ops.TPflash(false); + SolidFugCoeff = system.getPhases()[3].getComponent(k).fugcoef(system.getPhases()[3]); + funk = system.getPhase(0).getComponent(k).getz(); + for (int i = 0; i < system.getNumberOfPhases(); i++) { + funk -= system.getPhase(i).getBeta() * SolidFugCoeff + / system.getPhase(i).getComponents()[k].getFugacityCoefficient(); } - return funk; + } } - - /** {@inheritDoc} */ - @Override - public void run() { - ThermodynamicOperations ops = new ThermodynamicOperations(system); - int iterations = 0, maxNumberOfIterations = 100; - double deriv = 0, funk = 0, funkOld = 0; - double maxTemperature = -500, minTemperature = 1e6, oldTemperature = 0.0, newTemp = 0.0; - double SolidFugCoeff = 0.0; - int numbComponents = system.getPhases()[0].getNumberOfComponents(); - String[] FCompNames = new String[numbComponents]; - double[] FCompTemp = new double[numbComponents]; - boolean SolidForms = false; - - for (int k = 0; k < numbComponents; k++) { - // logger.info("Cheking all the components " + k); - if (system.getPhase(0).getComponent(k).doSolidCheck()) { - SolidForms = true; - FCompNames[k] = system.getPhase(0).getComponent(k).getComponentName(); - if (noFreezeFlash) { - // system.setTemperature(trpTemp - 0.8); - logger.info("Starting at Triple point temperature " - + system.getPhase(0).getComponent(k).getComponentName()); - } - - funkOld = 0.0; - newTemp = 0.0; - iterations = 0; - funk = 0.0; - // int oldPhaseType = 0; - maxNumberOfIterations = 100; - do { - iterations++; - // oldPhaseType = system.getPhase(0).getPhaseType(); - ops.TPflash(false); - SolidFugCoeff = - system.getPhases()[3].getComponent(k).fugcoef(system.getPhases()[3]); - funk = system.getPhase(0).getComponent(k).getz(); - for (int i = 0; i < system.getNumberOfPhases(); i++) { - funk -= system.getPhase(i).getBeta() * SolidFugCoeff - / system.getPhase(i).getComponents()[k].getFugacityCoefficient(); - } - logger.info("funk " + funk); - if (iterations > 1) {// && oldPhaseType == system.getPhase(0).getPhaseType()) { - deriv = (funk - funkOld) / (system.getTemperature() - oldTemperature); - } else { - deriv = funk * 100.0; - } - if (Math.abs(funk / deriv) > 10.0) { - // deriv = Math.signum(deriv) * Math.abs(funk) * (10.0 / (1.0 * - // iterations)); - } - - logger.info("phase type " + system.getPhase(0).getPhaseType()); - newTemp = system.getTemperature() - 0.9 * funk / deriv; - logger.info("temperature " + system.getTemperature()); - oldTemperature = system.getTemperature(); - funkOld = funk; - system.setTemperature(newTemp); - } while (Math.abs(funk) >= 1e-12 && iterations < maxNumberOfIterations); - FCompTemp[k] = newTemp; - // logger.info("iterations " + iterations); - - if (system.getTemperature() < minTemperature) { - minTemperature = oldTemperature; - } - if (system.getTemperature() > maxTemperature) { - maxTemperature = oldTemperature; - } - } // end if - } // end for lokke - - if (SolidForms) { - system.setTemperature(maxTemperature); + return funk; + } + + /** {@inheritDoc} */ + @Override + public void run() { + ThermodynamicOperations ops = new ThermodynamicOperations(system); + int iterations = 0; + int maxNumberOfIterations = 100; + double deriv = 0; + double funk = 0; + double funkOld = 0; + double maxTemperature = -500; + double minTemperature = 1e6; + double oldTemperature = 0.0; + double newTemp = 0.0; + double SolidFugCoeff = 0.0; + int numbComponents = system.getPhases()[0].getNumberOfComponents(); + String[] FCompNames = new String[numbComponents]; + double[] FCompTemp = new double[numbComponents]; + boolean SolidForms = false; + + for (int k = 0; k < numbComponents; k++) { + // logger.info("Cheking all the components " + k); + if (system.getPhase(0).getComponent(k).doSolidCheck()) { + SolidForms = true; + FCompNames[k] = system.getPhase(0).getComponent(k).getComponentName(); + if (noFreezeFlash) { + // system.setTemperature(trpTemp - 0.8); + logger.info("Starting at Triple point temperature " + + system.getPhase(0).getComponent(k).getComponentName()); } - system.init(1); - } - /** - *

- * printToFile. - *

- * - * @param name a {@link java.lang.String} object - * @param FCompNames an array of {@link java.lang.String} objects - * @param FCompTemp an array of {@link double} objects - */ - public void printToFile(String name, String[] FCompNames, double[] FCompTemp) { - for (int n = 0; n < system.getPhases()[0].getNumberOfComponents(); n++) { - name = name + "_" + system.getPhase(0).getComponent(n).getComponentName(); + funkOld = 0.0; + newTemp = 0.0; + iterations = 0; + funk = 0.0; + // int oldPhaseType = 0; + maxNumberOfIterations = 100; + do { + iterations++; + // oldPhaseType = system.getPhase(0).getType(); + ops.TPflash(false); + SolidFugCoeff = system.getPhases()[3].getComponent(k).fugcoef(system.getPhases()[3]); + funk = system.getPhase(0).getComponent(k).getz(); + for (int i = 0; i < system.getNumberOfPhases(); i++) { + funk -= system.getPhase(i).getBeta() * SolidFugCoeff + / system.getPhase(i).getComponents()[k].getFugacityCoefficient(); + } + logger.info("funk " + funk); + if (iterations > 1) { // && oldPhaseType == system.getPhase(0).getType()) { + deriv = (funk - funkOld) / (system.getTemperature() - oldTemperature); + } else { + deriv = funk * 100.0; + } + if (Math.abs(funk / deriv) > 10.0) { + // deriv = Math.signum(deriv) * Math.abs(funk) * (10.0 / (1.0 * + // iterations)); + } + + logger.info("phase type " + system.getPhase(0).getType()); + newTemp = system.getTemperature() - 0.9 * funk / deriv; + logger.info("temperature " + system.getTemperature()); + oldTemperature = system.getTemperature(); + funkOld = funk; + system.setTemperature(newTemp); + } while (Math.abs(funk) >= 1e-12 && iterations < maxNumberOfIterations); + FCompTemp[k] = newTemp; + // logger.info("iterations " + iterations); + + if (system.getTemperature() < minTemperature) { + minTemperature = oldTemperature; } - - String myFile = "/java/" + name + ".frz"; - - try (PrintWriter pr_writer = new PrintWriter(new FileWriter(myFile, true))) { - pr_writer.println("name,freezeT,freezeP,z,iterations"); - pr_writer.flush(); - - for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { - // print line to output file - pr_writer.println(FCompNames[k] + "," + java.lang.Double.toString(FCompTemp[k]) - + "," + system.getPressure() + "," - + java.lang.Double.toString(system.getPhases()[0].getComponents()[k].getz()) - + "," + Niterations); - pr_writer.flush(); - } - } catch (SecurityException e) { - logger.error("writeFile: caught security exception"); - } catch (IOException ioe) { - logger.error("writeFile: caught i/o exception"); + if (system.getTemperature() > maxTemperature) { + maxTemperature = oldTemperature; } + } // end if + } // end for lokke + + if (SolidForms) { + system.setTemperature(maxTemperature); + } + system.init(1); + } + + /** + *

+ * printToFile. + *

+ * + * @param name a {@link java.lang.String} object + * @param FCompNames an array of {@link java.lang.String} objects + * @param FCompTemp an array of type double + */ + public void printToFile(String name, String[] FCompNames, double[] FCompTemp) { + for (int n = 0; n < system.getPhases()[0].getNumberOfComponents(); n++) { + name = name + "_" + system.getPhase(0).getComponent(n).getComponentName(); + } + + String myFile = "/java/" + name + ".frz"; + + try (PrintWriter pr_writer = new PrintWriter(new FileWriter(myFile, true))) { + pr_writer.println("name,freezeT,freezeP,z,iterations"); + pr_writer.flush(); + + for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { + // print line to output file + pr_writer.println(FCompNames[k] + "," + java.lang.Double.toString(FCompTemp[k]) + "," + + system.getPressure() + "," + + java.lang.Double.toString(system.getPhases()[0].getComponents()[k].getz()) + "," + + Niterations); + pr_writer.flush(); + } + } catch (SecurityException ex) { + logger.error("writeFile: caught security exception"); + } catch (IOException ioe) { + logger.error("writeFile: caught i/o exception"); } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlashOld.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlashOld.java index 379a63ac69..c976adb5c7 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlashOld.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlashOld.java @@ -14,108 +14,98 @@ * @version $Id: $Id */ public class freezingPointTemperatureFlashOld extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(freezingPointTemperatureFlashOld.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(freezingPointTemperatureFlashOld.class); - /** - *

- * Constructor for freezingPointTemperatureFlashOld. - *

- */ - public freezingPointTemperatureFlashOld() {} + /** + *

+ * Constructor for freezingPointTemperatureFlashOld. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public freezingPointTemperatureFlashOld(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for freezingPointTemperatureFlashOld. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public freezingPointTemperatureFlashOld(SystemInterface system) { - super(system); - } - - /** {@inheritDoc} */ - @Override - public void run() { - ThermodynamicOperations ops = new ThermodynamicOperations(system); + /** {@inheritDoc} */ + @Override + public void run() { + ThermodynamicOperations ops = new ThermodynamicOperations(system); - int iterations = 0; - // int maxNumberOfIterations = 15000; - // double yold = 0, ytotal = 1; - double deriv = 0, funk = 0, funkOld = 0; - double maxTemperature = 0, minTemperature = 1e6, oldTemperature = 0.0; - for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { - if (system.getPhase(3).getComponent(k).fugcoef(system.getPhase(3)) < 9e4 - && system.getPhase(3).getComponent(k).doSolidCheck()) { // checks if solid can - // be formed from - // component k - system.setTemperature( - system.getPhases()[0].getComponents()[k].getMeltingPointTemperature()); - system.init(0); - system.init(1); - iterations = 0; - do { - funk = 0.0; - deriv = 0.0; - iterations++; - system.setSolidPhaseCheck(false); - ops.TPflash(); - system.getPhase(3).getComponent(k).fugcoef(system.getPhase(3)); + int iterations = 0; + // int maxNumberOfIterations = 15000; + // double yold = 0, ytotal = 1; + double deriv = 0; + double funk = 0; + double funkOld = 0; + double maxTemperature = 0; + double minTemperature = 1e6; + double oldTemperature = 0.0; + for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { + if (system.getPhase(3).getComponent(k).fugcoef(system.getPhase(3)) < 9e4 + && system.getPhase(3).getComponent(k).doSolidCheck()) { + // checks if solid can be formed from component k + system + .setTemperature(system.getPhases()[0].getComponents()[k].getMeltingPointTemperature()); + system.init(0); + system.init(1); + iterations = 0; + do { + funk = 0.0; + deriv = 0.0; + iterations++; + system.setSolidPhaseCheck(false); + ops.TPflash(); + system.getPhase(3).getComponent(k).fugcoef(system.getPhase(3)); - funk = system.getPhases()[0].getComponents()[k].getz(); - logger.info("phase " + system.getNumberOfPhases()); + funk = system.getPhases()[0].getComponents()[k].getz(); + logger.info("phase " + system.getNumberOfPhases()); - for (int i = 0; i < system.getNumberOfPhases(); i++) { - funk -= system.getPhases()[i].getBeta() - * system.getPhases()[3].getComponents()[k].getFugacityCoefficient() - / system.getPhases()[i].getComponents()[k].getFugacityCoefficient(); - deriv -= 0.01 * system.getPhases()[i].getBeta() - * (system.getPhases()[3].getComponents()[k].getFugacityCoefficient() - * Math.exp(system.getPhases()[i].getComponents()[k] - .getdfugdt()) - * -1.0 - / Math.pow( - system.getPhases()[i].getComponents()[k] - .getFugacityCoefficient(), - 2.0) - + Math.exp(system.getPhases()[3].getComponents()[k] - .getdfugdt()) - / system.getPhases()[i].getComponents()[k] - .getFugacityCoefficient()); - } - if (iterations >= 2) { - deriv = -(funk - funkOld) / (system.getTemperature() - oldTemperature); - } else { - deriv = -funk; - } + for (int i = 0; i < system.getNumberOfPhases(); i++) { + funk -= system.getPhases()[i].getBeta() + * system.getPhases()[3].getComponents()[k].getFugacityCoefficient() + / system.getPhases()[i].getComponents()[k].getFugacityCoefficient(); + deriv -= 0.01 * system.getPhases()[i].getBeta() + * (system.getPhases()[3].getComponents()[k].getFugacityCoefficient() + * Math.exp(system.getPhases()[i].getComponents()[k].getdfugdt()) * -1.0 + / Math.pow(system.getPhases()[i].getComponents()[k].getFugacityCoefficient(), + 2.0) + + Math.exp(system.getPhases()[3].getComponents()[k].getdfugdt()) + / system.getPhases()[i].getComponents()[k].getFugacityCoefficient()); + } + if (iterations >= 2) { + deriv = -(funk - funkOld) / (system.getTemperature() - oldTemperature); + } else { + deriv = -funk; + } - oldTemperature = system.getTemperature(); - funkOld = funk; + oldTemperature = system.getTemperature(); + funkOld = funk; - system.setTemperature(system.getTemperature() - + 0.5 * (iterations / (10.0 + iterations)) * funk / deriv); + system.setTemperature( + system.getTemperature() + 0.5 * (iterations / (10.0 + iterations)) * funk / deriv); - logger.info("funk/deriv " + funk / deriv); - logger.info("temperature " + system.getTemperature()); - } while ((Math.abs(funk / deriv) >= 1e-6 && iterations < 100)); + logger.info("funk/deriv " + funk / deriv); + logger.info("temperature " + system.getTemperature()); + } while ((Math.abs(funk / deriv) >= 1e-6 && iterations < 100)); - // logger.info("funk " + funk + k + " " + system.getTemperature()); - if (system.getTemperature() < minTemperature) { - minTemperature = system.getTemperature(); - } - if (system.getTemperature() > maxTemperature) { - maxTemperature = system.getTemperature(); - } - } + // logger.info("funk " + funk + k + " " + system.getTemperature()); + if (system.getTemperature() < minTemperature) { + minTemperature = system.getTemperature(); } - - system.setTemperature(maxTemperature); - // logger.info("min freezing temp " + minTemperature); - // logger.info("max freezing temp " + maxTemperature); + if (system.getTemperature() > maxTemperature) { + maxTemperature = system.getTemperature(); + } + } } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + system.setTemperature(maxTemperature); + // logger.info("min freezing temp " + minTemperature); + // logger.info("max freezing temp " + maxTemperature); + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlashTR.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlashTR.java index f438d6d0fd..3d694eb9e8 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlashTR.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/freezingPointTemperatureFlashTR.java @@ -19,255 +19,249 @@ * @version $Id: $Id */ public class freezingPointTemperatureFlashTR extends constantDutyTemperatureFlash - implements ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - public boolean noFreezeFlash = true; - public int Niterations = 0; - public String[] FCompNames = new String[10]; - public double[] FCompTemp = new double[10]; - public int compnr; - public String name = "Frz"; - public boolean CCequation = true; - static Logger logger = LogManager.getLogger(freezingPointTemperatureFlashTR.class); + implements ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(freezingPointTemperatureFlashTR.class); - /** - *

- * Constructor for freezingPointTemperatureFlashTR. - *

- */ - public freezingPointTemperatureFlashTR() {} + public boolean noFreezeFlash = true; + public int Niterations = 0; + public String[] FCompNames = new String[10]; + public double[] FCompTemp = new double[10]; + public int compnr; + public String name = "Frz"; + public boolean CCequation = true; - /** - *

- * Constructor for freezingPointTemperatureFlashTR. - *

- * - * @param Freeze a boolean - */ - public freezingPointTemperatureFlashTR(boolean Freeze) { - noFreezeFlash = Freeze; - } + /** + *

+ * Constructor for freezingPointTemperatureFlashTR. + *

+ * + * @param Freeze a boolean + */ + public freezingPointTemperatureFlashTR(boolean Freeze) { + noFreezeFlash = Freeze; + } - /** - *

- * Constructor for freezingPointTemperatureFlashTR. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public freezingPointTemperatureFlashTR(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for freezingPointTemperatureFlashTR. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public freezingPointTemperatureFlashTR(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for freezingPointTemperatureFlashTR. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param Freeze a boolean - */ - public freezingPointTemperatureFlashTR(SystemInterface system, boolean Freeze) { - super(system); - noFreezeFlash = Freeze; - } + /** + *

+ * Constructor for freezingPointTemperatureFlashTR. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param Freeze a boolean + */ + public freezingPointTemperatureFlashTR(SystemInterface system, boolean Freeze) { + super(system); + noFreezeFlash = Freeze; + } - /** {@inheritDoc} */ - @Override - public void run() { - ThermodynamicOperations ops = new ThermodynamicOperations(system); + /** {@inheritDoc} */ + @Override + public void run() { + ThermodynamicOperations ops = new ThermodynamicOperations(system); - int iterations = 0; - // int maxNumberOfIterations = 15000; - // double yold = 0, ytotal = 1; - double deriv = 0, funk = 0, funkOld = 0; - // double Testfunk = 0.00000000; - double maxTemperature = 0, minTemperature = 1e6, oldTemperature = 0.0, newTemp = 0.0; - double SolidFug = 0.0, temp = 0.0, pres = 0.0, Pvapsolid = 0.0, SolVapFugCoeff = 0.0, - dfugdt = 0.0; - double solvol = 0.0, soldens = 0.0, trpTemp = 0.0; + int iterations = 0; + // int maxNumberOfIterations = 15000; + // double yold = 0, ytotal = 1; + double deriv = 0; + double funk = 0; + double funkOld = 0; + // double Testfunk = 0.00000000; + double maxTemperature = 0; + double minTemperature = 1e6; + double oldTemperature = 0.0; + double newTemp = 0.0; + double SolidFug = 0.0; + double temp = 0.0; + double pres = 0.0; + double Pvapsolid = 0.0; + double SolVapFugCoeff = 0.0; + double dfugdt = 0.0; + double solvol = 0.0; - // for(int k=0;k trpTemp + 1) { - temp = trpTemp; - } - if (CCequation) { - Pvapsolid = system.getPhase(0).getComponent(k).getCCsolidVaporPressure(temp); - dfugdt = Math - .log((system.getPhase(0).getComponent(k).getCCsolidVaporPressuredT(temp) - * Math.exp(solvol / (R * temp) * (pres - Pvapsolid))) / pres); - } else { - Pvapsolid = system.getPhase(0).getComponent(k).getSolidVaporPressure(temp); - dfugdt = Math - .log((system.getPhase(0).getComponent(k).getSolidVaporPressuredT(temp) - * Math.exp(solvol / (R * temp) * (pres - Pvapsolid))) / pres); - } - // Pvapsolid = system.getPhase(0).getComponent(k).getCCsolidVaporPressure(temp); - // legge in sjekk paa om soldens eksisterer i databasen. + if (temp > trpTemp + 1) { + temp = trpTemp; + } + if (CCequation) { + Pvapsolid = system.getPhase(0).getComponent(k).getCCsolidVaporPressure(temp); + dfugdt = Math.log((system.getPhase(0).getComponent(k).getCCsolidVaporPressuredT(temp) + * Math.exp(solvol / (R * temp) * (pres - Pvapsolid))) / pres); + } else { + Pvapsolid = system.getPhase(0).getComponent(k).getSolidVaporPressure(temp); + dfugdt = Math.log((system.getPhase(0).getComponent(k).getSolidVaporPressuredT(temp) + * Math.exp(solvol / (R * temp) * (pres - Pvapsolid))) / pres); + } + // Pvapsolid = system.getPhase(0).getComponent(k).getCCsolidVaporPressure(temp); + // legge in sjekk paa om soldens eksisterer i databasen. - soldens = system.getPhase(0).getComponent(k).getPureComponentSolidDensity(temp) - * 1000; + soldens = system.getPhase(0).getComponent(k).getPureComponentSolidDensity(temp) * 1000; - logger.info("Solid density" + soldens); + logger.info("Solid density" + soldens); - if (soldens > 2000) { - soldens = 1000; - } - solvol = 1.0 / soldens * system.getPhase(0).getComponent(k).getMolarMass(); + if (soldens > 2000) { + soldens = 1000; + } + solvol = 1.0 / soldens * system.getPhase(0).getComponent(k).getMolarMass(); - testSystem2.setTemperature(temp); - testSystem2.setPressure(Pvapsolid); - ops.TPflash(); - testOps2.TPflash(); - SolidFug = Pvapsolid / pres * Math.exp(solvol / (R * temp) * (pres - Pvapsolid)); - SolVapFugCoeff = testSystem2.getPhase(0).getComponent(0).getFugacityCoefficient(); + testSystem2.setTemperature(temp); + testSystem2.setPressure(Pvapsolid); + ops.TPflash(); + testOps2.TPflash(); + SolidFug = Pvapsolid / pres * Math.exp(solvol / (R * temp) * (pres - Pvapsolid)); + SolVapFugCoeff = testSystem2.getPhase(0).getComponent(0).getFugacityCoefficient(); - funk = system.getPhases()[0].getComponents()[k].getz(); + funk = system.getPhases()[0].getComponents()[k].getz(); - for (int i = 0; i < system.getNumberOfPhases(); i++) { - funk -= system.getPhases()[i].getBeta() * SolidFug * SolVapFugCoeff - / system.getPhases()[i].getComponents()[k].getFugacityCoefficient(); - deriv -= 0.01 * system.getPhases()[i].getBeta() * (SolidFug * SolVapFugCoeff - * Math.exp(system.getPhases()[i].getComponents()[k].getdfugdt()) * -1.0 - / Math.pow(system.getPhases()[i].getComponents()[k] - .getFugacityCoefficient(), 2.0) - + Math.exp(dfugdt) / system.getPhases()[i].getComponents()[k] - .getFugacityCoefficient()); - } - if (iterations >= 2) { - deriv = -(funk - funkOld) / (system.getTemperature() - oldTemperature); - } else { - deriv = -funk; - } - oldTemperature = system.getTemperature(); - funkOld = funk; + for (int i = 0; i < system.getNumberOfPhases(); i++) { + funk -= system.getPhases()[i].getBeta() * SolidFug * SolVapFugCoeff + / system.getPhases()[i].getComponents()[k].getFugacityCoefficient(); + deriv -= 0.01 * system.getPhases()[i].getBeta() * (SolidFug * SolVapFugCoeff + * Math.exp(system.getPhases()[i].getComponents()[k].getdfugdt()) * -1.0 + / Math.pow(system.getPhases()[i].getComponents()[k].getFugacityCoefficient(), 2.0) + + Math.exp(dfugdt) + / system.getPhases()[i].getComponents()[k].getFugacityCoefficient()); + } + if (iterations >= 2) { + deriv = -(funk - funkOld) / (system.getTemperature() - oldTemperature); + } else { + deriv = -funk; + } + oldTemperature = system.getTemperature(); + funkOld = funk; - if (oldTemperature < trpTemp + 1) { - newTemp = system.getTemperature() - + 0.5 * (iterations / (10.0 + iterations)) * funk / deriv; - } else { - newTemp = system.getTemperature() - + 0.5 * (iterations / (10.0 + iterations)) * funk; - } - logger.info("newTEmp " + newTemp); - if (newTemp > (trpTemp + 5)) { - system.setTemperature( - system.getPhases()[0].getComponents()[k].getTriplePointTemperature() - + 0.4); - } else if (newTemp < 1) { - system.setTemperature(oldTemperature + 2); - } - // else if(newTemp=="NaN")system.setTemperature(oldTemperature*0.9374); - else { - system.setTemperature(newTemp); - } - logger.info("funk " + funk); - logger.info("temperature " + system.getTemperature()); - } - // while(false); - while ((Math.abs(funk) >= 0.001 && iterations < 100)); - // while((Math.abs(funk)>=0.000001 && iterations<100)); - FCompTemp[k] = system.getTemperature(); - logger.info("iterations " + iterations); - Niterations = iterations; - // logger.info("funk " + funk + k + " " + system.getTemperature()); - if (system.getTemperature() < minTemperature) { - minTemperature = system.getTemperature(); - } - if (system.getTemperature() > maxTemperature) { - maxTemperature = system.getTemperature(); - // Testfunk = funk; - } + if (oldTemperature < trpTemp + 1) { + newTemp = + system.getTemperature() + 0.5 * (iterations / (10.0 + iterations)) * funk / deriv; + } else { + newTemp = system.getTemperature() + 0.5 * (iterations / (10.0 + iterations)) * funk; + } + logger.info("newTEmp " + newTemp); + if (newTemp > (trpTemp + 5)) { + system.setTemperature( + system.getPhases()[0].getComponents()[k].getTriplePointTemperature() + 0.4); + } else if (newTemp < 1) { + system.setTemperature(oldTemperature + 2); + // } else if(newTemp=="NaN") { system.setTemperature(oldTemperature*0.9374); + } else { + system.setTemperature(newTemp); } - // } - // this.printToFile(name); - system.setTemperature(maxTemperature); - // system.setSolidPhaseCheck(true); - // ops.TPflash(); - // logger.info("final funk:"+ Testfunk); - // system.display(); - // logger.info("min freezing temp " + minTemperature); - // logger.info("max freezing temp " + maxTemperature); + logger.info("funk " + funk); + logger.info("temperature " + system.getTemperature()); + } while ((Math.abs(funk) >= 0.001 && iterations < 100)); + FCompTemp[k] = system.getTemperature(); + logger.info("iterations " + iterations); + Niterations = iterations; + // logger.info("funk " + funk + k + " " + system.getTemperature()); + if (system.getTemperature() < minTemperature) { + minTemperature = system.getTemperature(); + } + if (system.getTemperature() > maxTemperature) { + maxTemperature = system.getTemperature(); + // Testfunk = funk; + } } + // } + // this.printToFile(name); + system.setTemperature(maxTemperature); + // system.setSolidPhaseCheck(true); + // ops.TPflash(); + // logger.info("final funk:"+ Testfunk); + // system.display(); + // logger.info("min freezing temp " + minTemperature); + // logger.info("max freezing temp " + maxTemperature); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) { - for (int n = 0; n < system.getPhases()[0].getNumberOfComponents(); n++) { - name = name + "_" + system.getPhase(0).getComponent(n).getComponentName(); - } + /** {@inheritDoc} */ + @Override + public void printToFile(String name) { + for (int n = 0; n < system.getPhases()[0].getNumberOfComponents(); n++) { + name = name + "_" + system.getPhase(0).getComponent(n).getComponentName(); + } - String myFile = "/java/" + name + ".frz"; + String myFile = "/java/" + name + ".frz"; - try (PrintWriter pr_writer = new PrintWriter(new FileWriter(myFile, true))) { - pr_writer.println("name,freezeT,freezeP,z,iterations"); - pr_writer.flush(); + try (PrintWriter pr_writer = new PrintWriter(new FileWriter(myFile, true))) { + pr_writer.println("name,freezeT,freezeP,z,iterations"); + pr_writer.flush(); - for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { - // print line to output file - pr_writer.println(FCompNames[k] + "," + java.lang.Double.toString(FCompTemp[k]) - + "," + system.getPressure() + "," - + java.lang.Double.toString(system.getPhases()[0].getComponents()[k].getz()) - + "," + Niterations); - pr_writer.flush(); - } - } catch (SecurityException e) { - logger.info("writeFile: caught security exception"); - } catch (IOException ioe) { - logger.info("writeFile: caught i/o exception"); - } + for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { + // print line to output file + pr_writer.println(FCompNames[k] + "," + java.lang.Double.toString(FCompTemp[k]) + "," + + system.getPressure() + "," + + java.lang.Double.toString(system.getPhases()[0].getComponents()[k].getz()) + "," + + Niterations); + pr_writer.flush(); + } + } catch (SecurityException ex) { + logger.info("writeFile: caught security exception"); + } catch (IOException ioe) { + logger.info("writeFile: caught i/o exception"); } + } - /** - *

- * getNiterations. - *

- * - * @return a int - */ - public int getNiterations() { - return Niterations; - } + /** + *

+ * getNiterations. + *

+ * + * @return a int + */ + public int getNiterations() { + return Niterations; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/waterDewPointTemperatureFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/waterDewPointTemperatureFlash.java index a1e71ff708..4ab87f72aa 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/waterDewPointTemperatureFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/waterDewPointTemperatureFlash.java @@ -13,98 +13,93 @@ * @version $Id: $Id */ public class waterDewPointTemperatureFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(waterDewPointTemperatureFlash.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(waterDewPointTemperatureFlash.class); - /** - *

- * Constructor for waterDewPointTemperatureFlash. - *

- */ - public waterDewPointTemperatureFlash() {} + /** + *

+ * Constructor for waterDewPointTemperatureFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public waterDewPointTemperatureFlash(SystemInterface system) { + super(system); + } - /** - *

- * Constructor for waterDewPointTemperatureFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public waterDewPointTemperatureFlash(SystemInterface system) { - super(system); - } - - /** {@inheritDoc} */ - @Override - public void run() { - int iterations = 0, maxNumberOfIterations = 10000; - // double yold = 0, ytotal = 1, deriv = 0; - double funk = 0; - double maxTemperature = 0, minTemperature = 1e6; - system.init(0); + /** {@inheritDoc} */ + @Override + public void run() { + int iterations = 0; + int maxNumberOfIterations = 10000; + // double yold = 0, ytotal = 1, deriv = 0; + double funk = 0; + double maxTemperature = 0; + double minTemperature = 1e6; + system.init(0); - // system.display(); + // system.display(); - system.setNumberOfPhases(2); + system.setNumberOfPhases(2); - for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { - if (system.getPhase(0).getComponent(k).getComponentName().equals("water") - || system.getPhase(0).getComponent(k).getComponentName().equals("MEG")) { - system.setTemperature( - system.getPhases()[0].getComponents()[k].getMeltingPointTemperature()); - for (int l = 0; l < system.getPhases()[0].getNumberOfComponents(); l++) { - system.getPhase(1).getComponent(l).setx(1e-30); - // logger.info("here"); - } - system.getPhase(1).getComponent(k).setx(1.0); - system.init(1); - // system.display(); - iterations = 0; - do { - funk = 0; - // deriv = 0.0; - iterations++; - system.init(3); - funk = system.getPhases()[0].getComponents()[k].getz(); + for (int k = 0; k < system.getPhases()[0].getNumberOfComponents(); k++) { + if (system.getPhase(0).getComponent(k).getComponentName().equals("water") + || system.getPhase(0).getComponent(k).getComponentName().equals("MEG")) { + system + .setTemperature(system.getPhases()[0].getComponents()[k].getMeltingPointTemperature()); + for (int l = 0; l < system.getPhases()[0].getNumberOfComponents(); l++) { + system.getPhase(1).getComponent(l).setx(1e-30); + // logger.info("here"); + } + system.getPhase(1).getComponent(k).setx(1.0); + system.init(1); + // system.display(); + iterations = 0; + do { + funk = 0; + // deriv = 0.0; + iterations++; + system.init(3); + funk = system.getPhases()[0].getComponents()[k].getz(); - funk -= system.getPhases()[0].getBeta() - * system.getPhases()[1].getComponents()[k].getFugacityCoefficient() - / system.getPhases()[0].getComponents()[k].getFugacityCoefficient(); + funk -= system.getPhases()[0].getBeta() + * system.getPhases()[1].getComponents()[k].getFugacityCoefficient() + / system.getPhases()[0].getComponents()[k].getFugacityCoefficient(); - // logger.info("funk " + funk); - /* - * deriv -= system.getPhases()[0].getBeta() - * (system.getPhases()[1].getComponents()[k].getFugacityCoefficient() - * system.getPhases()[0].getComponents()[k].getdfugdt() * -1.0 / - * Math.pow(system.getPhases()[0].getComponents()[k] .getFugacityCoefficient(), - * 2.0) + system.getPhases()[1].getComponents()[k].getdfugdt() / - * system.getPhases()[i].getComponents()[k] .getFugacityCoefficient()); - * - * system.setTemperature(system.getTemperature() - funk/deriv); - */ + // logger.info("funk " + funk); + /* + * deriv -= system.getPhases()[0].getBeta() + * (system.getPhases()[1].getComponents()[k].getFugacityCoefficient() + * system.getPhases()[0].getComponents()[k].getdfugdt() * -1.0 / + * Math.pow(system.getPhases()[0].getComponents()[k] .getFugacityCoefficient(), 2.0) + + * system.getPhases()[1].getComponents()[k].getdfugdt() / + * system.getPhases()[i].getComponents()[k] .getFugacityCoefficient()); + * + * system.setTemperature(system.getTemperature() - funk/deriv); + */ - system.setTemperature(system.getTemperature() + 100.0 * funk); + system.setTemperature(system.getTemperature() + 100.0 * funk); - // logger.info("temp " + system.getTemperature()); - // if(system.getPhase(0).getComponent(k).getComponentName().equals("MEG")) - // logger.info("funk " + funk + " temp " + system.getTemperature()); - } while (Math.abs(funk) >= 0.0000001 && iterations < maxNumberOfIterations); + // logger.info("temp " + system.getTemperature()); + // if(system.getPhase(0).getComponent(k).getComponentName().equals("MEG")) + // logger.info("funk " + funk + " temp " + system.getTemperature()); + } while (Math.abs(funk) >= 0.0000001 && iterations < maxNumberOfIterations); - // logger.info("funk " + funk + k + " " + system.getTemperature()); - if (system.getTemperature() < minTemperature) { - minTemperature = system.getTemperature(); - } - if (system.getTemperature() > maxTemperature) { - maxTemperature = system.getTemperature(); - } - } + // logger.info("funk " + funk + k + " " + system.getTemperature()); + if (system.getTemperature() < minTemperature) { + minTemperature = system.getTemperature(); + } + if (system.getTemperature() > maxTemperature) { + maxTemperature = system.getTemperature(); } - system.setTemperature(maxTemperature); - // logger.info("min freezing temp " + minTemperature); - // logger.info("max freezing temp " + maxTemperature); + } } + system.setTemperature(maxTemperature); + // logger.info("min freezing temp " + minTemperature); + // logger.info("max freezing temp " + maxTemperature); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/waterDewPointTemperatureMultiphaseFlash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/waterDewPointTemperatureMultiphaseFlash.java index 159ddbffa2..2934aa20b4 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/waterDewPointTemperatureMultiphaseFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/saturationOps/waterDewPointTemperatureMultiphaseFlash.java @@ -2,7 +2,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -15,58 +14,51 @@ * @version $Id: $Id */ public class waterDewPointTemperatureMultiphaseFlash extends constantDutyTemperatureFlash { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(waterDewPointTemperatureMultiphaseFlash.class); - - /** - *

- * Constructor for waterDewPointTemperatureMultiphaseFlash. - *

- */ - public waterDewPointTemperatureMultiphaseFlash() {} + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(waterDewPointTemperatureMultiphaseFlash.class); - /** - *

- * Constructor for waterDewPointTemperatureMultiphaseFlash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public waterDewPointTemperatureMultiphaseFlash(SystemInterface system) { - super(system); - } + /** + *

+ * Constructor for waterDewPointTemperatureMultiphaseFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public waterDewPointTemperatureMultiphaseFlash(SystemInterface system) { + super(system); + } - /** {@inheritDoc} */ - @Override - public void run() { - ThermodynamicOperations TPflashOps = new ThermodynamicOperations(system); - system.setMultiPhaseCheck(true); - double dT = 0.1; - system.setTemperature(600.0); - do { - i++; - TPflashOps.TPflash(); - if (system.hasPhaseType("aqueous")) { - dT = system.getPhaseOfType("aqueous").getComponent("water") - .getNumberOfMolesInPhase() - / system.getPhase(0).getComponent("water").getNumberOfmoles(); - if (dT > 1.0) { - dT = 1.0; - } - system.setTemperature(system.getTemperature() + dT); - } else { - dT = -10.0;// system.getPhaseOfType("aqueous").getComponent("water").getNumberOfMolesInPhase() - // / system.getNumberOfMoles(); - system.setTemperature(system.getTemperature() + dT); - // system.display(); - } - // logger.info("dew temperature " + system.getTemperature()); - } while ((i < 350 && Math.abs(dT) > 1e-5)); - logger.info("i " + i); + /** {@inheritDoc} */ + @Override + public void run() { + ThermodynamicOperations TPflashOps = new ThermodynamicOperations(system); + system.setMultiPhaseCheck(true); + double dT = 0.1; + system.setTemperature(600.0); + do { + i++; + TPflashOps.TPflash(); + if (system.hasPhaseType("aqueous")) { + dT = system.getPhaseOfType("aqueous").getComponent("water").getNumberOfMolesInPhase() + / system.getPhase(0).getComponent("water").getNumberOfmoles(); + if (dT > 1.0) { + dT = 1.0; + } + system.setTemperature(system.getTemperature() + dT); + } else { + dT = -10.0; + // system.getPhaseOfType("aqueous").getComponent("water").getNumberOfMolesInPhase() / + // system.getNumberOfMoles(); + system.setTemperature(system.getTemperature() + dT); // system.display(); - } + } + // logger.info("dew temperature " + system.getTemperature()); + } while ((i < 350 && Math.abs(dT) > 1e-5)); + logger.info("i " + i); + // system.display(); + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonPHflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonPHflash.java index c85af0c9de..1b2b87dc2f 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonPHflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonPHflash.java @@ -2,7 +2,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import Jama.Matrix; import neqsim.MathLib.nonLinearSolver.newtonRhapson; import neqsim.thermo.ThermodynamicConstantsInterface; @@ -17,255 +16,256 @@ * @version $Id: $Id */ public class sysNewtonRhapsonPHflash implements ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(sysNewtonRhapsonPHflash.class); - int neq = 0, iter = 0; - int ic02p = -100, ic03p = -100, testcrit = 0, npCrit = 0; - double beta = 0, ds = 0, dTmax = 1, dPmax = 1, avscp = 0.1, TC1 = 0, TC2 = 0, PC1 = 0, PC2 = 0; - double specVar = 0; - Matrix Jac; - Matrix fvec; - Matrix gTvec; - Matrix gPvec; - Matrix u; - Matrix uold; - Matrix Xgij; - SystemInterface system; - int numberOfComponents; - int speceq = 0; - Matrix a = new Matrix(4, 4); - Matrix s = new Matrix(1, 4); - Matrix xg; - Matrix xcoef; - newtonRhapson solver; - boolean etterCP = false; - boolean etterCP2 = false; - double dVdT = 0; - int type = 0; - double dPdT = 0; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(sysNewtonRhapsonPHflash.class); - /** - *

- * Constructor for sysNewtonRhapsonPHflash. - *

- */ - public sysNewtonRhapsonPHflash() {} + int neq = 0; + int iter = 0; + int ic02p = -100; + int ic03p = -100; + int testcrit = 0; + int npCrit = 0; + double beta = 0; + double ds = 0; + double dTmax = 1; + double dPmax = 1; + double avscp = 0.1; + double TC1 = 0; + double TC2 = 0; + double PC1 = 0; + double PC2 = 0; + double specVar = 0; + Matrix Jac; + Matrix fvec; + Matrix gTvec; + Matrix gPvec; + Matrix u; + Matrix uold; + Matrix Xgij; + SystemInterface system; + int numberOfComponents; + int speceq = 0; + Matrix a = new Matrix(4, 4); + Matrix s = new Matrix(1, 4); + Matrix xg; + Matrix xcoef; + newtonRhapson solver; + boolean etterCP = false; + boolean etterCP2 = false; + double dVdT = 0; + int type = 0; + double dPdT = 0; - /** - *

- * Constructor for sysNewtonRhapsonPHflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param numberOfPhases a int - * @param numberOfComponents a int - */ - public sysNewtonRhapsonPHflash(SystemInterface system, int numberOfPhases, - int numberOfComponents) { - this.system = system; - this.numberOfComponents = numberOfComponents; - neq = numberOfComponents; - Jac = new Matrix(neq + 2, neq + 2); - fvec = new Matrix(neq + 2, 1); - gTvec = new Matrix(neq, 1); - gPvec = new Matrix(neq, 1); - u = new Matrix(neq + 2, 1); - Xgij = new Matrix(neq + 2, 4); - setu(); - uold = u.copy(); - // logger.info("Spec : " +speceq); - solver = new newtonRhapson(); - solver.setOrder(3); - } + /** + *

+ * Constructor for sysNewtonRhapsonPHflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param numberOfPhases a int + * @param numberOfComponents a int + */ + public sysNewtonRhapsonPHflash(SystemInterface system, int numberOfPhases, + int numberOfComponents) { + this.system = system; + this.numberOfComponents = numberOfComponents; + neq = numberOfComponents; + Jac = new Matrix(neq + 2, neq + 2); + fvec = new Matrix(neq + 2, 1); + gTvec = new Matrix(neq, 1); + gPvec = new Matrix(neq, 1); + u = new Matrix(neq + 2, 1); + Xgij = new Matrix(neq + 2, 4); + setu(); + uold = u.copy(); + // logger.info("Spec : " +speceq); + solver = new newtonRhapson(); + solver.setOrder(3); + } - /** - *

- * Constructor for sysNewtonRhapsonPHflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param numberOfPhases a int - * @param numberOfComponents a int - * @param type a int - */ - public sysNewtonRhapsonPHflash(SystemInterface system, int numberOfPhases, - int numberOfComponents, int type) { - this(system, numberOfPhases, numberOfComponents); - this.type = type; - } + /** + *

+ * Constructor for sysNewtonRhapsonPHflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param numberOfPhases a int + * @param numberOfComponents a int + * @param type a int + */ + public sysNewtonRhapsonPHflash(SystemInterface system, int numberOfPhases, int numberOfComponents, + int type) { + this(system, numberOfPhases, numberOfComponents); + this.type = type; + } - /** - *

- * setSpec. - *

- * - * @param spec a double - */ - public void setSpec(double spec) { - this.specVar = spec; - } + /** + *

+ * setSpec. + *

+ * + * @param spec a double + */ + public void setSpec(double spec) { + this.specVar = spec; + } - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - for (int i = 0; i < numberOfComponents; i++) { - fvec.set(i, 0, - Math.log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient()) - + Math.log(system.getPhases()[0].getComponents()[i].getx()) - - Math.log(system.getPhases()[1].getComponents()[i] - .getFugacityCoefficient()) - - Math.log(system.getPhases()[1].getComponents()[i].getx())); - } - double rP = 0.0, rT = 0.0; - if (type == 0) { - rT = 1.0 / (R * system.getTemperature()) * (specVar - system.getEnthalpy()); - rP = 0.0; - } - if (type == 1) { - rT = 1.0 / R * (specVar - system.getEntropy()); - rP = 0.0; - } - - fvec.set(numberOfComponents, 0, rT); - fvec.set(numberOfComponents + 1, 0, rP); + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + for (int i = 0; i < numberOfComponents; i++) { + fvec.set(i, 0, Math.log(system.getPhases()[0].getComponents()[i].getFugacityCoefficient()) + + Math.log(system.getPhases()[0].getComponents()[i].getx()) + - Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient()) + - Math.log(system.getPhases()[1].getComponents()[i].getx())); + } + double rP = 0.0; + double rT = 0.0; + if (type == 0) { + rT = 1.0 / (R * system.getTemperature()) * (specVar - system.getEnthalpy()); + rP = 0.0; + } + if (type == 1) { + rT = 1.0 / R * (specVar - system.getEntropy()); + rP = 0.0; } - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac.timesEquals(0.0); - double dij = 0.0; - - double tempJ = 0.0; - // int nofc = numberOfComponents; + fvec.set(numberOfComponents, 0, rT); + fvec.set(numberOfComponents + 1, 0, rP); + } - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = 1.0 / system.getBeta() - * (dij / system.getPhases()[0].getComponents()[i].getx() - 1.0 - + system.getPhases()[0].getComponents()[i].getdfugdx(j)) - + 1.0 / (1.0 - system.getBeta()) - * (dij / system.getPhases()[1].getComponents()[i].getx() - 1.0 - + system.getPhases()[1].getComponents()[i].getdfugdx(j)); - Jac.set(i, j, tempJ); - } - } + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); + double dij = 0.0; - double[] gT = new double[numberOfComponents]; - double[] gP = new double[numberOfComponents]; + double tempJ = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = 1.0 / system.getBeta() + * (dij / system.getPhases()[0].getComponents()[i].getx() - 1.0 + + system.getPhases()[0].getComponents()[i].getdfugdx(j)) + + 1.0 / (1.0 - system.getBeta()) + * (dij / system.getPhases()[1].getComponents()[i].getx() - 1.0 + + system.getPhases()[1].getComponents()[i].getdfugdx(j)); + Jac.set(i, j, tempJ); + } + } - for (int i = 0; i < numberOfComponents; i++) { - gT[i] = system.getTemperature() * (system.getPhases()[0].getComponents()[i].getdfugdt() - - system.getPhases()[1].getComponents()[i].getdfugdt()); - gP[i] = system.getPressure() * (system.getPhases()[0].getComponents()[i].getdfugdp() - - system.getPhases()[1].getComponents()[i].getdfugdp()); + double[] gT = new double[numberOfComponents]; + double[] gP = new double[numberOfComponents]; - Jac.set(numberOfComponents, i, gT[i]); - Jac.set(i, numberOfComponents, gT[i]); + for (int i = 0; i < numberOfComponents; i++) { + gT[i] = system.getTemperature() * (system.getPhases()[0].getComponents()[i].getdfugdt() + - system.getPhases()[1].getComponents()[i].getdfugdt()); + gP[i] = system.getPressure() * (system.getPhases()[0].getComponents()[i].getdfugdp() + - system.getPhases()[1].getComponents()[i].getdfugdp()); - Jac.set(numberOfComponents + 1, i, gP[i]); - Jac.set(i, numberOfComponents + 1, gP[i]); - } + Jac.set(numberOfComponents, i, gT[i]); + Jac.set(i, numberOfComponents, gT[i]); - double Ett = -system.getCp() / R; - Jac.set(numberOfComponents, numberOfComponents, Ett); - double Etp = system.getPressure() / R * system.getdVdTpn(); - Jac.set(numberOfComponents, numberOfComponents + 1, Etp); - Jac.set(numberOfComponents + 1, numberOfComponents, Etp); - double Epp = Math.pow(system.getPressure(), 2.0) / (R * system.getTemperature()) - * system.getdVdPtn(); - Jac.set(numberOfComponents + 1, numberOfComponents + 1, Epp); + Jac.set(numberOfComponents + 1, i, gP[i]); + Jac.set(i, numberOfComponents + 1, gP[i]); } - /** - *

- * Setter for the field u. - *

- */ - public void setu() { - for (int i = 0; i < numberOfComponents; i++) { - u.set(i, 0, 0.0); - } - u.set(numberOfComponents, 0, 0.0); - u.set(numberOfComponents + 1, 0, 0.0); + double Ett = -system.getCp() / R; + Jac.set(numberOfComponents, numberOfComponents, Ett); + double Etp = system.getPressure() / R * system.getdVdTpn(); + Jac.set(numberOfComponents, numberOfComponents + 1, Etp); + Jac.set(numberOfComponents + 1, numberOfComponents, Etp); + double Epp = + Math.pow(system.getPressure(), 2.0) / (R * system.getTemperature()) * system.getdVdPtn(); + Jac.set(numberOfComponents + 1, numberOfComponents + 1, Epp); + } + + /** + *

+ * Setter for the field u. + *

+ */ + public void setu() { + for (int i = 0; i < numberOfComponents; i++) { + u.set(i, 0, 0.0); } + u.set(numberOfComponents, 0, 0.0); + u.set(numberOfComponents + 1, 0, 0.0); + } - /** - *

- * init. - *

- */ - public void init() { - double temp = system.getBeta(); + /** + *

+ * init. + *

+ */ + public void init() { + double temp = system.getBeta(); - for (int i = 0; i < numberOfComponents; i++) { - temp += u.get(i, 0); - } - system.setBeta(temp); + for (int i = 0; i < numberOfComponents; i++) { + temp += u.get(i, 0); + } + system.setBeta(temp); - for (int i = 0; i < numberOfComponents; i++) { - double v = 0.0, l = 0.0; - v = system.getPhases()[0].getComponents()[i].getx() * system.getBeta() + u.get(i, 0); - l = system.getPhases()[0].getComponents()[i].getz() - v; - system.getPhases()[0].getComponents()[i].setx(v / system.getBeta()); - system.getPhases()[1].getComponents()[i].setx(l / (1.0 - system.getBeta())); - system.getPhases()[1].getComponents()[i] - .setK(system.getPhases()[0].getComponents()[i].getx() - / system.getPhases()[1].getComponents()[i].getx()); - system.getPhases()[0].getComponents()[i] - .setK(system.getPhases()[1].getComponents()[i].getK()); - } + for (int i = 0; i < numberOfComponents; i++) { + double v = 0.0; + double l = 0.0; + v = system.getPhases()[0].getComponents()[i].getx() * system.getBeta() + u.get(i, 0); + l = system.getPhases()[0].getComponents()[i].getz() - v; + system.getPhases()[0].getComponents()[i].setx(v / system.getBeta()); + system.getPhases()[1].getComponents()[i].setx(l / (1.0 - system.getBeta())); + system.getPhases()[1].getComponents()[i].setK(system.getPhases()[0].getComponents()[i].getx() + / system.getPhases()[1].getComponents()[i].getx()); + system.getPhases()[0].getComponents()[i] + .setK(system.getPhases()[1].getComponents()[i].getK()); + } - // dt = Math.exp(u.get(numberOfComponents+1,0)) - system.getTemperature(); - // logger.info("temperature: " + system.getTemperature()); - // logger.info("pressure: " + system.getPressure()); - // system.init(1); - // v1 = system.getVolume(); - // system.setPressure(Math.exp(u.get(numberOfComponents+1,0))); - logger.info("temperature: " + system.getTemperature()); - system.setTemperature( - Math.exp(u.get(numberOfComponents, 0) + Math.log(system.getTemperature()))); - system.setPressure( - Math.exp(u.get(numberOfComponents + 1, 0) + Math.log(system.getPressure()))); - logger.info("etter temperature: " + system.getTemperature()); + // dt = Math.exp(u.get(numberOfComponents+1,0)) - system.getTemperature(); + // logger.info("temperature: " + system.getTemperature()); + // logger.info("pressure: " + system.getPressure()); + // system.init(1); + // v1 = system.getVolume(); + // system.setPressure(Math.exp(u.get(numberOfComponents+1,0))); + logger.info("temperature: " + system.getTemperature()); + system + .setTemperature(Math.exp(u.get(numberOfComponents, 0) + Math.log(system.getTemperature()))); + system.setPressure(Math.exp(u.get(numberOfComponents + 1, 0) + Math.log(system.getPressure()))); + logger.info("etter temperature: " + system.getTemperature()); - system.init(3); - } + system.init(3); + } - /** - *

- * solve. - *

- * - * @param np a int - * @return a int - */ - public int solve(int np) { - // Matrix dx; - iter = 1; - do { - iter++; - init(); - setfvec(); - setJac(); - fvec.print(10, 10); - Jac.print(10, 10); - u = Jac.solve(fvec.times(-1.0)); - // u.equals(dx.timesEquals(1.0)); - fvec.print(10, 10); - logger.info("iter: " + iter); - } while (fvec.norm2() > 1.e-10 && iter < 1000);// && Double.isNaN(dx.norm2())); - logger.info("iter: " + iter); - logger.info("temperature: " + system.getTemperature()); - logger.info("pressure: " + system.getPressure()); - init(); - return iter; - } + /** + *

+ * solve. + *

+ * + * @param np a int + * @return a int + */ + public int solve(int np) { + iter = 1; + do { + iter++; + init(); + setfvec(); + setJac(); + fvec.print(10, 10); + Jac.print(10, 10); + u = Jac.solve(fvec.times(-1.0)); + // u.equals(dx.timesEquals(1.0)); + fvec.print(10, 10); + logger.info("iter: " + iter); + } while (fvec.norm2() > 1.e-10 && iter < 1000); // && Double.isNaN(dx.norm2())); + logger.info("iter: " + iter); + logger.info("temperature: " + system.getTemperature()); + logger.info("pressure: " + system.getPressure()); + init(); + return iter; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonTPflash.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonTPflash.java index 445fb8ed05..bee007d7cd 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonTPflash.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonTPflash.java @@ -12,154 +12,153 @@ * @version $Id: $Id */ public class sysNewtonRhapsonTPflash implements java.io.Serializable { - private static final long serialVersionUID = 1000; - int neq = 0, iter = 0; - int ic02p = -100, ic03p = -100, testcrit = 0, npCrit = 0; - double beta = 0, ds = 0, dTmax = 1, dPmax = 1, avscp = 0.1, TC1 = 0, TC2 = 0, PC1 = 0, PC2 = 0; - Matrix Jac; - Matrix fvec; - Matrix u; - Matrix uold; - Matrix Xgij; - SystemInterface system; - int numberOfComponents; - int speceq = 0; - Matrix a = new Matrix(4, 4); - Matrix s = new Matrix(1, 4); - Matrix xg; - Matrix dx; - Matrix xcoef; + private static final long serialVersionUID = 1000; + int neq = 0; + int iter = 0; + int ic02p = -100; + int ic03p = -100; + int testcrit = 0; + int npCrit = 0; + double beta = 0; + double ds = 0; + double dTmax = 1; + double dPmax = 1; + double avscp = 0.1; + double TC1 = 0; + double TC2 = 0; + double PC1 = 0; + double PC2 = 0; + Matrix Jac; + Matrix fvec; + Matrix u; + Matrix uold; + Matrix Xgij; + SystemInterface system; + int numberOfComponents; + int speceq = 0; + Matrix a = new Matrix(4, 4); + Matrix s = new Matrix(1, 4); + Matrix xg; + Matrix dx; + Matrix xcoef; - /** - *

- * Constructor for sysNewtonRhapsonTPflash. - *

- */ - public sysNewtonRhapsonTPflash() {} + /** + *

+ * Constructor for sysNewtonRhapsonTPflash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param numberOfPhases a int + * @param numberOfComponents a int + */ + public sysNewtonRhapsonTPflash(SystemInterface system, int numberOfPhases, + int numberOfComponents) { + this.system = system; + this.numberOfComponents = numberOfComponents; + neq = numberOfComponents; + Jac = new Matrix(neq, neq); + fvec = new Matrix(neq, 1); + u = new Matrix(neq, 1); + Xgij = new Matrix(neq, 4); + setu(); + uold = u.copy(); + // System.out.println("Spec : " +speceq); + } - /** - *

- * Constructor for sysNewtonRhapsonTPflash. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param numberOfPhases a int - * @param numberOfComponents a int - */ - public sysNewtonRhapsonTPflash(SystemInterface system, int numberOfPhases, - int numberOfComponents) { - this.system = system; - this.numberOfComponents = numberOfComponents; - neq = numberOfComponents; - Jac = new Matrix(neq, neq); - fvec = new Matrix(neq, 1); - u = new Matrix(neq, 1); - Xgij = new Matrix(neq, 4); - setu(); - uold = u.copy(); - // System.out.println("Spec : " +speceq); + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + for (int i = 0; i < numberOfComponents; i++) { + fvec.set(i, 0, + Math.log(system.getPhase(0).getComponents()[i].getFugacityCoefficient() + * system.getPhase(0).getComponents()[i].getx() * system.getPressure()) + - Math.log(system.getPhase(1).getComponents()[i].getFugacityCoefficient() + * system.getPhase(1).getComponents()[i].getx() * system.getPressure())); } + } - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - for (int i = 0; i < numberOfComponents; i++) { - fvec.set(i, 0, Math - .log(system.getPhase(0).getComponents()[i].getFugacityCoefficient() - * system.getPhase(0).getComponents()[i].getx() * system.getPressure()) - - Math.log(system.getPhase(1).getComponents()[i].getFugacityCoefficient() - * system.getPhase(1).getComponents()[i].getx() * system.getPressure())); - } - } - - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac.timesEquals(0.0); - double dij = 0.0; - - double tempJ = 0.0; - // double sumdyidbeta = 0, sumdxidbeta = 0; - // int nofc = numberOfComponents; + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); + double dij = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = 1.0 / system.getBeta() - * (dij / system.getPhase(0).getComponents()[i].getx() - 1.0 - + system.getPhase(0).getComponents()[i].getdfugdx(j)) - + 1.0 / (1.0 - system.getBeta()) - * (dij / system.getPhase(1).getComponents()[i].getx() - 1.0 - + system.getPhase(1).getComponents()[i].getdfugdx(j)); - Jac.set(i, j, tempJ); - } - } + double tempJ = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = 1.0 / system.getBeta() + * (dij / system.getPhase(0).getComponents()[i].getx() - 1.0 + + system.getPhase(0).getComponents()[i].getdfugdx(j)) + + 1.0 / (1.0 - system.getBeta()) * (dij / system.getPhase(1).getComponents()[i].getx() + - 1.0 + system.getPhase(1).getComponents()[i].getdfugdx(j)); + Jac.set(i, j, tempJ); + } } + } - /** - *

- * Setter for the field u. - *

- */ - public void setu() { - for (int i = 0; i < numberOfComponents; i++) { - u.set(i, 0, system.getBeta() * system.getPhase(0).getComponents()[i].getx()); - } + /** + *

+ * Setter for the field u. + *

+ */ + public void setu() { + for (int i = 0; i < numberOfComponents; i++) { + u.set(i, 0, system.getBeta() * system.getPhase(0).getComponents()[i].getx()); } + } - /** - *

- * init. - *

- */ - public void init() { - double temp = 0; + /** + *

+ * init. + *

+ */ + public void init() { + double temp = 0; - for (int i = 0; i < numberOfComponents; i++) { - temp += u.get(i, 0); - } - - system.setBeta(temp); - for (int i = 0; i < numberOfComponents; i++) { - system.getPhase(0).getComponents()[i].setx(u.get(i, 0) / system.getBeta()); - system.getPhase(1).getComponents()[i] - .setx((system.getPhase(0).getComponents()[i].getz() - u.get(i, 0)) - / (1.0 - system.getBeta())); - system.getPhase(0).getComponents()[i].setK(system.getPhase(0).getComponents()[i].getx() - / system.getPhase(1).getComponents()[i].getx()); - system.getPhase(1).getComponents()[i] - .setK(system.getPhase(0).getComponents()[i].getK()); - } + for (int i = 0; i < numberOfComponents; i++) { + temp += u.get(i, 0); + } - system.init(3); + system.setBeta(temp); + for (int i = 0; i < numberOfComponents; i++) { + system.getPhase(0).getComponents()[i].setx(u.get(i, 0) / system.getBeta()); + system.getPhase(1).getComponents()[i].setx( + (system.getPhase(0).getComponents()[i].getz() - u.get(i, 0)) / (1.0 - system.getBeta())); + system.getPhase(0).getComponents()[i].setK(system.getPhase(0).getComponents()[i].getx() + / system.getPhase(1).getComponents()[i].getx()); + system.getPhase(1).getComponents()[i].setK(system.getPhase(0).getComponents()[i].getK()); } - /** - *

- * solve. - *

- * - * @return a double - * @throws java.lang.Exception if any. - */ - public double solve() throws Exception { - try { - iter++; - init(); - setfvec(); - setJac(); - dx = Jac.solve(fvec); - // dx.print(10,10); - u.minusEquals(dx); - return (dx.norm2() / u.norm2()); - } catch (Exception e) { - throw e; - } + system.init(3); + } + + /** + *

+ * solve. + *

+ * + * @return a double + * @throws java.lang.Exception if any. + */ + public double solve() throws Exception { + try { + iter++; + init(); + setfvec(); + setJac(); + dx = Jac.solve(fvec); + // dx.print(10,10); + u.minusEquals(dx); + return (dx.norm2() / u.norm2()); + } catch (Exception ex) { + throw ex; } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonTPflashNew.java b/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonTPflashNew.java index a87804e84b..f82c35eb0d 100644 --- a/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonTPflashNew.java +++ b/src/main/java/neqsim/thermodynamicOperations/flashOps/sysNewtonRhapsonTPflashNew.java @@ -13,181 +13,186 @@ * @version $Id: $Id */ public class sysNewtonRhapsonTPflashNew implements java.io.Serializable { - private static final long serialVersionUID = 1000; - int neq = 0, iter = 0; - int ic02p = -100, ic03p = -100, testcrit = 0, npCrit = 0; - double beta = 0, ds = 0, dTmax = 1, dPmax = 1, avscp = 0.1, TC1 = 0, TC2 = 0, PC1 = 0, PC2 = 0; - Matrix Jac; - Matrix fvec; - Matrix u; - Matrix uold; - Matrix Xgij; - SystemInterface system; - int numberOfComponents; - int speceq = 0; - Matrix a = new Matrix(4, 4); - Matrix s = new Matrix(1, 4); - Matrix xg; - Matrix xcoef; - newtonRhapson solver; - boolean etterCP = false; - boolean etterCP2 = false; - - /** - *

- * Constructor for sysNewtonRhapsonTPflashNew. - *

- */ - public sysNewtonRhapsonTPflashNew() {} - - /** - *

- * Constructor for sysNewtonRhapsonTPflashNew. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param numberOfPhases a int - * @param numberOfComponents a int - */ - public sysNewtonRhapsonTPflashNew(SystemInterface system, int numberOfPhases, - int numberOfComponents) { - this.system = system; - this.numberOfComponents = numberOfComponents; - neq = numberOfComponents + 1; - Jac = new Matrix(neq, neq); - fvec = new Matrix(neq, 1); - u = new Matrix(neq, 1); - Xgij = new Matrix(neq, 4); - setu(); - uold = u.copy(); - // System.out.println("Spec : " +speceq); - solver = new newtonRhapson(); - solver.setOrder(3); + private static final long serialVersionUID = 1000; + int neq = 0; + int iter = 0; + int ic02p = -100; + int ic03p = -100; + int testcrit = 0; + int npCrit = 0; + double beta = 0; + double ds = 0; + double dTmax = 1; + double dPmax = 1; + double avscp = 0.1; + double TC1 = 0; + double TC2 = 0; + double PC1 = 0; + double PC2 = 0; + Matrix Jac; + Matrix fvec; + Matrix u; + Matrix uold; + Matrix Xgij; + SystemInterface system; + int numberOfComponents; + int speceq = 0; + Matrix a = new Matrix(4, 4); + Matrix s = new Matrix(1, 4); + Matrix xg; + Matrix xcoef; + newtonRhapson solver; + boolean etterCP = false; + boolean etterCP2 = false; + + /** + *

+ * Constructor for sysNewtonRhapsonTPflashNew. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param numberOfPhases a int + * @param numberOfComponents a int + */ + public sysNewtonRhapsonTPflashNew(SystemInterface system, int numberOfPhases, + int numberOfComponents) { + this.system = system; + this.numberOfComponents = numberOfComponents; + neq = numberOfComponents + 1; + Jac = new Matrix(neq, neq); + fvec = new Matrix(neq, 1); + u = new Matrix(neq, 1); + Xgij = new Matrix(neq, 4); + setu(); + uold = u.copy(); + // System.out.println("Spec : " +speceq); + solver = new newtonRhapson(); + solver.setOrder(3); + } + + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + for (int i = 0; i < numberOfComponents; i++) { + fvec.set(i, 0, + u.get(i, 0) + Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() + / system.getPhases()[0].getComponents()[i].getFugacityCoefficient())); } - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - for (int i = 0; i < numberOfComponents; i++) { - fvec.set(i, 0, u.get(i, 0) - + Math.log(system.getPhases()[1].getComponents()[i].getFugacityCoefficient() - / system.getPhases()[0].getComponents()[i].getFugacityCoefficient())); - } - - double fsum = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - fsum = fsum + system.getPhases()[1].getComponents()[i].getx() - - system.getPhases()[0].getComponents()[i].getx(); - } - fvec.set(numberOfComponents, 0, fsum); - // fvec.print(0,20); + double fsum = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + fsum = fsum + system.getPhases()[1].getComponents()[i].getx() + - system.getPhases()[0].getComponents()[i].getx(); } - - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac.timesEquals(0.0); - double dij = 0.0; - double[] dxidlnk = new double[numberOfComponents]; - double[] dyidlnk = new double[numberOfComponents]; - - double[] dxidbeta = new double[numberOfComponents]; - double[] dyidbeta = new double[numberOfComponents]; - - double tempJ = 0.0, sumdyidbeta = 0, sumdxidbeta = 0; - int nofc = numberOfComponents; - for (int i = 0; i < numberOfComponents; i++) { - dxidlnk[i] = -system.getBeta() * system.getPhases()[0].getComponents()[i].getx() - * system.getPhases()[1].getComponents()[i].getx() - / system.getPhases()[0].getComponents()[i].getz(); - dyidlnk[i] = system.getPhases()[1].getComponents()[i].getx() - + system.getPhases()[0].getComponents()[i].getK() * dxidlnk[i]; - - dyidbeta[i] = (system.getPhases()[0].getComponents()[i].getK() - * system.getPhases()[0].getComponents()[i].getz() - * (1 - system.getPhases()[0].getComponents()[i].getK())) - / Math.pow(1 - system.getBeta() - + system.getBeta() * system.getPhases()[0].getComponents()[i].getK(), - 2); - dxidbeta[i] = (system.getPhases()[0].getComponents()[i].getz() - * (1 - system.getPhases()[0].getComponents()[i].getK())) - / Math.pow(1 - system.getBeta() - + system.getBeta() * system.getPhases()[0].getComponents()[i].getK(), - 2); - - sumdyidbeta += dyidbeta[i]; - sumdxidbeta += dxidbeta[i]; - } - - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij + system.getPhases()[1].getComponents()[i].getdfugdx(j) * dyidlnk[j] - - system.getPhases()[0].getComponents()[i].getdfugdx(j) * dxidlnk[j]; - Jac.set(i, j, tempJ); - } - Jac.set(i, nofc, system.getPhases()[1].getComponents()[i].getdfugdx(i) * dyidbeta[i] - - system.getPhases()[0].getComponents()[i].getdfugdx(i) * dxidbeta[i]); - Jac.set(nofc, i, dyidlnk[i] - dxidlnk[i]); - } - - Jac.set(nofc, nofc, sumdyidbeta - sumdxidbeta); + fvec.set(numberOfComponents, 0, fsum); + // fvec.print(0,20); + } + + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); + double dij = 0.0; + double[] dxidlnk = new double[numberOfComponents]; + double[] dyidlnk = new double[numberOfComponents]; + + double[] dxidbeta = new double[numberOfComponents]; + double[] dyidbeta = new double[numberOfComponents]; + + double tempJ = 0.0; + double sumdyidbeta = 0; + double sumdxidbeta = 0; + int nofc = numberOfComponents; + for (int i = 0; i < numberOfComponents; i++) { + dxidlnk[i] = -system.getBeta() * system.getPhases()[0].getComponents()[i].getx() + * system.getPhases()[1].getComponents()[i].getx() + / system.getPhases()[0].getComponents()[i].getz(); + dyidlnk[i] = system.getPhases()[1].getComponents()[i].getx() + + system.getPhases()[0].getComponents()[i].getK() * dxidlnk[i]; + + dyidbeta[i] = (system.getPhases()[0].getComponents()[i].getK() + * system.getPhases()[0].getComponents()[i].getz() + * (1 - system.getPhases()[0].getComponents()[i].getK())) + / Math.pow(1 - system.getBeta() + + system.getBeta() * system.getPhases()[0].getComponents()[i].getK(), 2); + dxidbeta[i] = (system.getPhases()[0].getComponents()[i].getz() + * (1 - system.getPhases()[0].getComponents()[i].getK())) + / Math.pow(1 - system.getBeta() + + system.getBeta() * system.getPhases()[0].getComponents()[i].getK(), 2); + + sumdyidbeta += dyidbeta[i]; + sumdxidbeta += dxidbeta[i]; } - /** - *

- * Setter for the field u. - *

- */ - public void setu() { - for (int i = 0; i < numberOfComponents; i++) { - u.set(i, 0, Math.log(system.getPhases()[0].getComponents()[i].getK())); - } - - u.set(numberOfComponents, 0, system.getBeta()); + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij + system.getPhases()[1].getComponents()[i].getdfugdx(j) * dyidlnk[j] + - system.getPhases()[0].getComponents()[i].getdfugdx(j) * dxidlnk[j]; + Jac.set(i, j, tempJ); + } + Jac.set(i, nofc, system.getPhases()[1].getComponents()[i].getdfugdx(i) * dyidbeta[i] + - system.getPhases()[0].getComponents()[i].getdfugdx(i) * dxidbeta[i]); + Jac.set(nofc, i, dyidlnk[i] - dxidlnk[i]); } - /** - *

- * init. - *

- */ - public void init() { - for (int i = 0; i < numberOfComponents; i++) { - system.getPhases()[0].getComponents()[i].setK(Math.exp(u.get(i, 0))); - system.getPhases()[1].getComponents()[i].setK(Math.exp(u.get(i, 0))); - } - system.setBeta(u.get(numberOfComponents, 0)); - system.calc_x_y(); - system.init(3); + Jac.set(nofc, nofc, sumdyidbeta - sumdxidbeta); + } + + /** + *

+ * Setter for the field u. + *

+ */ + public void setu() { + for (int i = 0; i < numberOfComponents; i++) { + u.set(i, 0, Math.log(system.getPhases()[0].getComponents()[i].getK())); } - /** - *

- * solve. - *

- * - * @param np a int - */ - public void solve(int np) { - Matrix dx; - iter = 0; - do { - iter++; - init(); - setfvec(); - setJac(); - dx = Jac.solve(fvec); - u.minusEquals(dx); - // System.out.println("feilen: "+dx.norm2()); - } while (dx.norm2() / u.norm2() > 1.e-10);// && Double.isNaN(dx.norm2())); - // System.out.println("iter: "+iter); - init(); + u.set(numberOfComponents, 0, system.getBeta()); + } + + /** + *

+ * init. + *

+ */ + public void init() { + for (int i = 0; i < numberOfComponents; i++) { + system.getPhases()[0].getComponents()[i].setK(Math.exp(u.get(i, 0))); + system.getPhases()[1].getComponents()[i].setK(Math.exp(u.get(i, 0))); } + system.setBeta(u.get(numberOfComponents, 0)); + system.calc_x_y(); + system.init(3); + } + + /** + *

+ * solve. + *

+ * + * @param np a int + */ + public void solve(int np) { + Matrix dx; + iter = 0; + do { + iter++; + init(); + setfvec(); + setJac(); + dx = Jac.solve(fvec); + u.minusEquals(dx); + // System.out.println("feilen: "+dx.norm2()); + } while (dx.norm2() / u.norm2() > 1.e-10); // && Double.isNaN(dx.norm2())); + // System.out.println("iter: "+iter); + init(); + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/CricondenBarFlash.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/CricondenBarFlash.java index de5003ae3d..3e39689f6d 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/CricondenBarFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/CricondenBarFlash.java @@ -1,6 +1,7 @@ package neqsim.thermodynamicOperations.phaseEnvelopeOps.multicomponentEnvelopeOps; import Jama.Matrix; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; /** @@ -12,337 +13,328 @@ * @version $Id: $Id */ public class CricondenBarFlash extends pTphaseEnvelope { - private static final long serialVersionUID = 1000; - int neq = 0; - double beta = 0; - Matrix u; - Matrix uold; - Matrix uini; - SystemInterface system; - int numberOfComponents; - int crico = 0; - double DT = 1E-6; - double funcT; - double dfuncdT; - double funcP; - double dfuncdP; - - double f; - double f1; - double dfdt; - double dfdt1; - double DDQ; - double T; - double P; - double Tini; - double Pini; - double T1; - - int ITER; - int ITERX; - int ITERT; - int ITERP; - - // double [] cricondenBar ; - // double [] cricondenBarX = new double [100] ; - // double [] cricondenBarY = new double [100] ; - - /** - *

- * Constructor for CricondenBarFlash. - *

- */ - public CricondenBarFlash() {} - - /** - *

- * Constructor for CricondenBarFlash. - *

+ private static final long serialVersionUID = 1000; + int neq = 0; + double beta = 0; + Matrix u; + Matrix uold; + Matrix uini; + SystemInterface system; + int numberOfComponents; + int crico = 0; + double DT = 1E-6; + double funcT; + double dfuncdT; + double funcP; + double dfuncdP; + + double f; + double f1; + double dfdt; + double dfdt1; + double DDQ; + double T; + double P; + double Tini; + double Pini; + double T1; + + int ITER; + int ITERX; + int ITERT; + int ITERP; + + // double [] cricondenBar ; + // double [] cricondenBarX = new double [100] ; + // double [] cricondenBarY = new double [100] ; + + /** + *

+ * Constructor for CricondenBarFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param name a {@link java.lang.String} object + * @param phaseFraction a double + * @param cricondenBar an array of type double + * @param cricondenBarX an array of type double + * @param cricondenBarY an array of type double + */ + public CricondenBarFlash(SystemInterface system, String name, double phaseFraction, + double[] cricondenBar, double[] cricondenBarX, double[] cricondenBarY) { + this.system = system; + this.numberOfComponents = system.getPhase(0).getNumberOfComponents(); + u = new Matrix(numberOfComponents, 1); // this is the K values + this.cricondenBar = cricondenBar; + this.cricondenBarX = cricondenBarX; + this.cricondenBarY = cricondenBarY; + this.beta = phaseFraction; + } + + /** {@inheritDoc} */ + @Override + public void run() { + // input values + T = cricondenBar[0]; + P = cricondenBar[1]; + Tini = T; + Pini = P; + bubblePointFirst = false; + system.setBeta(beta); + system.setPhaseType(0, PhaseType.OIL); + system.setPhaseType(1, PhaseType.GAS); + + for (int ii = 0; ii < numberOfComponents; ii++) { + u.set(ii, 0, cricondenBarY[ii] / cricondenBarX[ii]); + system.getPhase(0).getComponent(ii).setK(cricondenBarY[ii] / cricondenBarX[ii]); + system.getPhase(0).getComponent(ii).setx(cricondenBarX[ii]); + system.getPhase(1).getComponent(ii).setx(cricondenBarY[ii]); + uini = u.copy(); + } + setNewX(); + /* + * //iter X for (int iterX=0 ; iterX <= 10000 ; iterX++ ){ + * + * system.setTemperature(T); system.setPressure(P); + * + * uold = u.copy(); init(); setNewK(); setNewX(); * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param name a {@link java.lang.String} object - * @param phaseFraction a double - * @param cricondenBar an array of {@link double} objects - * @param cricondenBarX an array of {@link double} objects - * @param cricondenBarY an array of {@link double} objects + * double sumK=0.; for (int i=0 ; i < numberOfComponents ; i++ ){ sumK= + * sumK+(uold.get(i,0)-u.get(i,0))*(uold.get(i,0)-u.get(i,0)); } if (iterX == 10000 ){ ITERX=-1; + * u=uini.copy(); setNewX(); break; } if (sumK <= 1E-7){ ITERX=iterX; setNewX(); break; } } */ - public CricondenBarFlash(SystemInterface system, String name, double phaseFraction, - double[] cricondenBar, double[] cricondenBarX, double[] cricondenBarY) { - this.system = system; - this.numberOfComponents = system.getPhase(0).getNumberOfComponents(); - u = new Matrix(numberOfComponents, 1); // this is the K values - this.cricondenBar = cricondenBar; - this.cricondenBarX = cricondenBarX; - this.cricondenBarY = cricondenBarY; - this.beta = phaseFraction; - } - /** {@inheritDoc} */ - @Override - public void run() { - // input values - T = cricondenBar[0]; - P = cricondenBar[1]; - Tini = T; - Pini = P; - bubblePointFirst = false; - system.setBeta(beta); - system.setPhaseType(0, "oil"); - system.setPhaseType(1, "gas"); - - for (int ii = 0; ii < numberOfComponents; ii++) { - u.set(ii, 0, cricondenBarY[ii] / cricondenBarX[ii]); - system.getPhase(0).getComponent(ii).setK(cricondenBarY[ii] / cricondenBarX[ii]); - system.getPhase(0).getComponent(ii).setx(cricondenBarX[ii]); - system.getPhase(1).getComponent(ii).setx(cricondenBarY[ii]); - uini = u.copy(); + // starting loops + for (int iter = 0; iter < 1000; iter++) { + // iter T + // solve dQ/dT=0 with Newton method, numerical derivatives + for (int iterT = 0; iterT <= 1000; iterT++) { + system.setTemperature(T); + system.setPressure(P); + init(); + funcT(); + f = funcT; + dfdt = dfuncdT; + + T1 = T + DT; + + system.setTemperature(T1); + system.setPressure(P); + init(); + funcT(); + f1 = funcT; + dfdt1 = dfuncdT; + + DDQ = (dfdt1 - dfdt) / DT; + + if (iterT == 1000) { + ITERT = -1; + break; + } + if (Math.abs(dfdt / DDQ) < 1E-7) { + ITERT = iterT; + break; } - setNewX(); - /* - * //iter X for (int iterX=0 ; iterX <= 10000 ; iterX++ ){ - * - * system.setTemperature(T); system.setPressure(P); - * - * uold = u.copy(); init(); setNewK(); setNewX(); - * - * double sumK=0.; for (int i=0 ; i < numberOfComponents ; i++ ){ sumK= - * sumK+(uold.get(i,0)-u.get(i,0))*(uold.get(i,0)-u.get(i,0)); } if (iterX == 10000 ){ - * ITERX=-1; u=uini.copy(); setNewX(); break; } if (sumK <= 1E-7){ ITERX=iterX; setNewX(); - * break; } } - */ - // starting loops - for (int iter = 0; iter < 1000; iter++) { - // iter T - // solve dQ/dT=0 with Newton method, numerical derivatives - for (int iterT = 0; iterT <= 1000; iterT++) { - system.setTemperature(T); - system.setPressure(P); - init(); - funcT(); - f = funcT; - dfdt = dfuncdT; - - T1 = T + DT; - - system.setTemperature(T1); - system.setPressure(P); - init(); - funcT(); - f1 = funcT; - dfdt1 = dfuncdT; - - DDQ = (dfdt1 - dfdt) / DT; - - if (iterT == 1000) { - ITERT = -1; - break; - } - if (Math.abs(dfdt / DDQ) < 1E-7) { - ITERT = iterT; - break; - } - - if (Math.abs(dfdt) < 1E-7) { - ITERT = iterT; - break; - } - - T = T - dfdt / DDQ; - } - - // iter P,X - // solve Q=0 with Newton method, numerical derivatives - for (int iterP = 0; iterP <= 10000; iterP++) { - system.setTemperature(T); - system.setPressure(P); - - uold = u.copy(); - init(); - setNewK(); - - double sumK = 0.; - - for (int i = 0; i < numberOfComponents; i++) { - sumK = sumK + (uold.get(i, 0) - u.get(i, 0)) * (uold.get(i, 0) - u.get(i, 0)); - } - - setNewX(); - init(); - funcP(); - - if ((Math.abs(funcP / dfuncdP) < 1E-7) || (sumK <= 1E-10)) { - ITERP = iterP; - break; - } - - P = P - funcP / dfuncdP; - - if (P <= 0) { - P = P + funcP / dfuncdP; - u = u.copy(); - setNewX(); - // iterP = 10000; - break; - } - - if (iterP == 10000) { - ITERP = -1; - break; - } - } - - // Test Convergence - system.setTemperature(T); - system.setPressure(P); - init(); - funcT(); - funcP(); - - if (Math.abs(dfuncdT) <= 1E-7 && Math.abs(funcP) <= 1E-7 && Math.abs(dfuncdP) >= 1E-7) { - /* - * System.out.println("T : " + T); System.out.println("P : " + P); - * System.out.println("dfuncdT : " + dfuncdT); System.out.println("dfuncdP : " + - * dfuncdP); System.out.println("funcT : " + funcT); - * System.out.println("funcP : " + funcP); - * - * System.out.println(ITERX); System.out.println(ITER); System.out.println(ITERT); - * System.out.println(ITERP); - */ - - cricondenBar[0] = T; - cricondenBar[1] = P; - - break; - } else if (Math.abs(dfuncdT) <= 1E-7 && Math.abs(funcP) <= 1E-7 - && Math.abs(dfuncdP) <= 1E-7) { - T = -1; - P = -1; - /* - * System.out.println("T : " + T); System.out.println("P : " + P); - * System.out.println("dfuncdT : " + dfuncdT); System.out.println("dfuncdP : " + - * dfuncdP); System.out.println("funcT : " + funcT); - * System.out.println("funcP : " + funcP); - */ - cricondenBar[0] = T; - cricondenBar[1] = P; - - break; - } + if (Math.abs(dfdt) < 1E-7) { + ITERT = iterT; + break; } - } - /** - *

- * setNewK. - *

- */ - public void setNewK() { - for (int j = 0; j < numberOfComponents; j++) { - double kap = system.getPhase(0).getComponent(j).getFugacityCoefficient() - / system.getPhase(1).getComponent(j).getFugacityCoefficient(); - system.getPhase(0).getComponents()[j].setK(kap); - u.set(j, 0, kap); + T = T - dfdt / DDQ; + } + + // iter P,X + // solve Q=0 with Newton method, numerical derivatives + for (int iterP = 0; iterP <= 10000; iterP++) { + system.setTemperature(T); + system.setPressure(P); + + uold = u.copy(); + init(); + setNewK(); + + double sumK = 0.; + + for (int i = 0; i < numberOfComponents; i++) { + sumK = sumK + (uold.get(i, 0) - u.get(i, 0)) * (uold.get(i, 0) - u.get(i, 0)); } - } - /** - *

- * setNewX. - *

- */ - public void setNewX() { - double sumx = 0.; - double sumy = 0.; - double[] xx = new double[numberOfComponents]; - double[] yy = new double[numberOfComponents]; - - for (int j = 0; j < numberOfComponents; j++) { - xx[j] = system.getPhase(0).getComponents()[j].getz() - / (1.0 - system.getBeta() + system.getBeta() * u.get(j, 0)); - yy[j] = system.getPhase(1).getComponents()[j].getz() * u.get(j, 0) - / (1.0 - system.getBeta() + system.getBeta() * u.get(j, 0)); - - xx[j] = system.getPhase(0).getComponents()[j].getz() / (1.0 - system.getBeta() - + system.getBeta() * system.getPhase(0).getComponents()[j].getK()); - yy[j] = system.getPhase(1).getComponents()[j].getz() - * system.getPhase(0).getComponents()[j].getK() / (1.0 - system.getBeta() - + system.getBeta() * system.getPhase(0).getComponents()[j].getK()); - - sumx = sumx + xx[j]; - sumy = sumy + yy[j]; + setNewX(); + init(); + funcP(); + + if ((Math.abs(funcP / dfuncdP) < 1E-7) || (sumK <= 1E-10)) { + ITERP = iterP; + break; } - for (int j = 0; j < numberOfComponents; j++) { - system.getPhase(0).getComponents()[j].setx(xx[j] / sumx); - system.getPhase(1).getComponents()[j].setx(yy[j] / sumy); + P = P - funcP / dfuncdP; - xx[j] = system.getPhase(0).getComponents()[j].getx(); - yy[j] = system.getPhase(1).getComponents()[j].getx(); + if (P <= 0) { + P = P + funcP / dfuncdP; + u = u.copy(); + setNewX(); + // iterP = 10000; + break; } - } - /** - *

- * init. - *

- */ - public void init() { - // setNewX(); - system.init(3); + if (iterP == 10000) { + ITERP = -1; + break; + } + } + + // Test Convergence + system.setTemperature(T); + system.setPressure(P); + init(); + funcT(); + funcP(); + + if (Math.abs(dfuncdT) <= 1E-7 && Math.abs(funcP) <= 1E-7 && Math.abs(dfuncdP) >= 1E-7) { + /* + * System.out.println("T : " + T); System.out.println("P : " + P); + * System.out.println("dfuncdT : " + dfuncdT); System.out.println("dfuncdP : " + + * dfuncdP); System.out.println("funcT : " + funcT); System.out.println("funcP : " + + * funcP); + * + * System.out.println(ITERX); System.out.println(ITER); System.out.println(ITERT); + * System.out.println(ITERP); + */ + + cricondenBar[0] = T; + cricondenBar[1] = P; + + break; + } else if (Math.abs(dfuncdT) <= 1E-7 && Math.abs(funcP) <= 1E-7 + && Math.abs(dfuncdP) <= 1E-7) { + T = -1; + P = -1; + /* + * System.out.println("T : " + T); System.out.println("P : " + P); + * System.out.println("dfuncdT : " + dfuncdT); System.out.println("dfuncdP : " + + * dfuncdP); System.out.println("funcT : " + funcT); System.out.println("funcP : " + + * funcP); + */ + cricondenBar[0] = T; + cricondenBar[1] = P; + + break; + } + } + } + + /** + *

+ * setNewK. + *

+ */ + public void setNewK() { + for (int j = 0; j < numberOfComponents; j++) { + double kap = system.getPhase(0).getComponent(j).getFugacityCoefficient() + / system.getPhase(1).getComponent(j).getFugacityCoefficient(); + system.getPhase(0).getComponents()[j].setK(kap); + u.set(j, 0, kap); + } + } + + /** + *

+ * setNewX. + *

+ */ + public void setNewX() { + double sumx = 0.; + double sumy = 0.; + double[] xx = new double[numberOfComponents]; + double[] yy = new double[numberOfComponents]; + + for (int j = 0; j < numberOfComponents; j++) { + xx[j] = system.getPhase(0).getComponents()[j].getz() + / (1.0 - system.getBeta() + system.getBeta() * u.get(j, 0)); + yy[j] = system.getPhase(1).getComponents()[j].getz() * u.get(j, 0) + / (1.0 - system.getBeta() + system.getBeta() * u.get(j, 0)); + + xx[j] = system.getPhase(0).getComponents()[j].getz() / (1.0 - system.getBeta() + + system.getBeta() * system.getPhase(0).getComponents()[j].getK()); + yy[j] = system.getPhase(1).getComponents()[j].getz() + * system.getPhase(0).getComponents()[j].getK() / (1.0 - system.getBeta() + + system.getBeta() * system.getPhase(0).getComponents()[j].getK()); + + sumx = sumx + xx[j]; + sumy = sumy + yy[j]; } - /** - *

- * funcT. - *

- */ - public void funcT() { - funcT = -1.0; - dfuncdT = 0.0; - - for (int j = 0; j < numberOfComponents; j++) { - double xxf = system.getPhase(0).getComponent(j).getx(); - double yyf = system.getPhase(1).getComponent(j).getx(); - /* - * double voll=system.getPhase(0).getMolarVolume(); double - * volv=system.getPhase(1).getMolarVolume(); - * - * double T=system.getPhase(0).getPressure(); double - * P=system.getPhase(1).getTemperature() ; - */ - double fugl = system.getPhase(0).getComponent(j).getLogFugacityCoefficient(); - double fugv = system.getPhase(1).getComponent(j).getLogFugacityCoefficient(); - - double fugTl = system.getPhase(0).getComponent(j).getdfugdt(); - double fugTv = system.getPhase(1).getComponent(j).getdfugdt(); - - funcT = funcT + xxf + xxf * (Math.log(yyf) - Math.log(xxf) + fugv - fugl); - dfuncdT = dfuncdT + xxf * (fugTv - fugTl); - } + for (int j = 0; j < numberOfComponents; j++) { + system.getPhase(0).getComponents()[j].setx(xx[j] / sumx); + system.getPhase(1).getComponents()[j].setx(yy[j] / sumy); + + xx[j] = system.getPhase(0).getComponents()[j].getx(); + yy[j] = system.getPhase(1).getComponents()[j].getx(); + } + } + + /** + *

+ * init. + *

+ */ + public void init() { + // setNewX(); + system.init(3); + } + + /** + *

+ * funcT. + *

+ */ + public void funcT() { + funcT = -1.0; + dfuncdT = 0.0; + + for (int j = 0; j < numberOfComponents; j++) { + double xxf = system.getPhase(0).getComponent(j).getx(); + double yyf = system.getPhase(1).getComponent(j).getx(); + /* + * double voll=system.getPhase(0).getMolarVolume(); double + * volv=system.getPhase(1).getMolarVolume(); + * + * double T=system.getPhase(0).getPressure(); double P=system.getPhase(1).getTemperature() ; + */ + double fugl = system.getPhase(0).getComponent(j).getLogFugacityCoefficient(); + double fugv = system.getPhase(1).getComponent(j).getLogFugacityCoefficient(); + + double fugTl = system.getPhase(0).getComponent(j).getdfugdt(); + double fugTv = system.getPhase(1).getComponent(j).getdfugdt(); + + funcT = funcT + xxf + xxf * (Math.log(yyf) - Math.log(xxf) + fugv - fugl); + dfuncdT = dfuncdT + xxf * (fugTv - fugTl); } + } - /** - *

- * funcP. - *

- */ - public void funcP() { - funcP = -1.0; - dfuncdP = 0.0; + /** + *

+ * funcP. + *

+ */ + public void funcP() { + funcP = -1.0; + dfuncdP = 0.0; - for (int j = 0; j < numberOfComponents; j++) { - double xx = system.getPhase(0).getComponent(j).getx(); - double yy = system.getPhase(1).getComponent(j).getx(); + for (int j = 0; j < numberOfComponents; j++) { + double xx = system.getPhase(0).getComponent(j).getx(); + double yy = system.getPhase(1).getComponent(j).getx(); - double fugl = system.getPhase(0).getComponents()[j].getLogFugacityCoefficient(); - double fugv = system.getPhase(1).getComponents()[j].getLogFugacityCoefficient(); + double fugl = system.getPhase(0).getComponents()[j].getLogFugacityCoefficient(); + double fugv = system.getPhase(1).getComponents()[j].getLogFugacityCoefficient(); - double fugPl = system.getPhase(0).getComponents()[j].getdfugdp(); - double fugPv = system.getPhase(1).getComponents()[j].getdfugdp(); + double fugPl = system.getPhase(0).getComponents()[j].getdfugdp(); + double fugPv = system.getPhase(1).getComponents()[j].getdfugdp(); - funcP = funcP + xx + xx * (Math.log(yy) - Math.log(xx) + fugv - fugl); - dfuncdP = dfuncdP + xx * (fugPv - fugPl); - } + funcP = funcP + xx + xx * (Math.log(yy) - Math.log(xx) + fugv - fugl); + dfuncdP = dfuncdP + xx * (fugPv - fugPl); } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/CricondenThermFlash.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/CricondenThermFlash.java index 2210bf0886..68c699a01a 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/CricondenThermFlash.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/CricondenThermFlash.java @@ -12,336 +12,326 @@ * @version $Id: $Id */ public class CricondenThermFlash extends pTphaseEnvelope { - private static final long serialVersionUID = 1000; - int neq = 0; - // double beta = 0; - Matrix u; - Matrix uold; - Matrix uini; - SystemInterface system; - int numberOfComponents; - int crico = 0; - double DP = 1E-6; - double funcT; - double dfuncdT; - double funcP; - double dfuncdP; - - double f; - double f1; - double dfdp; - double dfdp1; - double DDQ; - double T; - double P; - double Tini; - double Pini; - double P1; - - int ITER; - int ITERX; - int ITERT; - int ITERP; - - // double [] cricondenBar ; - // double [] cricondenBarX = new double [100] ; - // double [] cricondenBarY = new double [100] ; - - /** - *

- * Constructor for CricondenThermFlash. - *

+ private static final long serialVersionUID = 1000; + int neq = 0; + // double beta = 0; + Matrix u; + Matrix uold; + Matrix uini; + SystemInterface system; + int numberOfComponents; + int crico = 0; + double DP = 1E-6; + double funcT; + double dfuncdT; + double funcP; + double dfuncdP; + + double f; + double f1; + double dfdp; + double dfdp1; + double DDQ; + double T; + double P; + double Tini; + double Pini; + double P1; + + int ITER; + int ITERX; + int ITERT; + int ITERP; + + // double [] cricondenBar ; + // double [] cricondenBarX = new double [100] ; + // double [] cricondenBarY = new double [100] ; + + /** + *

+ * Constructor for CricondenThermFlash. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param name a {@link java.lang.String} object + * @param phaseFraction a double + * @param cricondenTherm an array of type double + * @param cricondenThermX an array of type double + * @param cricondenThermY an array of type double + */ + public CricondenThermFlash(SystemInterface system, String name, double phaseFraction, + double[] cricondenTherm, double[] cricondenThermX, double[] cricondenThermY) { + this.system = system; + this.numberOfComponents = system.getPhase(0).getNumberOfComponents(); + u = new Matrix(numberOfComponents, 1); // this is the K values + this.cricondenTherm = cricondenTherm; + this.cricondenThermX = cricondenThermX; + this.cricondenThermY = cricondenThermY; + bubblePointFirst = false; + } + + /** {@inheritDoc} */ + @Override + public void run() { + // input values + T = cricondenTherm[0]; + P = cricondenTherm[1]; + Tini = T; + Pini = P; + /* + * bubblePointFirst=false; system.setBeta(beta); system.setPhaseType(0, "oil"); + * system.setPhaseType(1, "gas"); */ - public CricondenThermFlash() {} - - /** - *

- * Constructor for CricondenThermFlash. - *

+ for (int ii = 0; ii < numberOfComponents; ii++) { + u.set(ii, 0, cricondenThermY[ii] / cricondenThermX[ii]); + system.getPhase(0).getComponent(ii).setK(cricondenThermY[ii] / cricondenThermX[ii]); + system.getPhase(0).getComponent(ii).setx(cricondenThermX[ii]); + system.getPhase(1).getComponent(ii).setx(cricondenThermY[ii]); + uini = u.copy(); + } + setNewX(); + /* + * //iter X for (int iterX=0 ; iterX <= 10000 ; iterX++ ){ + * + * system.setTemperature(T); system.setPressure(P); * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param name a {@link java.lang.String} object - * @param phaseFraction a double - * @param cricondenTherm an array of {@link double} objects - * @param cricondenThermX an array of {@link double} objects - * @param cricondenThermY an array of {@link double} objects + * uold = u.copy(); init(); setNewK(); setNewX(); + * + * double sumK=0.; for (int i=0 ; i < numberOfComponents ; i++ ){ sumK= + * sumK+(uold.get(i,0)-u.get(i,0))*(uold.get(i,0)-u.get(i,0)); } if (iterX == 10000 ){ ITERX=-1; + * u=uini.copy(); setNewX(); break; } if (sumK <= 1E-7){ ITERX=iterX; setNewX(); break; } } */ - public CricondenThermFlash(SystemInterface system, String name, double phaseFraction, - double[] cricondenTherm, double[] cricondenThermX, double[] cricondenThermY) { - this.system = system; - this.numberOfComponents = system.getPhase(0).getNumberOfComponents(); - u = new Matrix(numberOfComponents, 1); // this is the K values - this.cricondenTherm = cricondenTherm; - this.cricondenThermX = cricondenThermX; - this.cricondenThermY = cricondenThermY; - bubblePointFirst = false; - } + // starting loops + for (int iter = 0; iter < 1000; iter++) { + // iter P + // solve dQ/dP=0 with Newton method, numerical derivatives + for (int iterP = 0; iterP <= 1000; iterP++) { + system.setTemperature(T); + system.setPressure(P); + init(); + funcP(); + f = funcP; + dfdp = dfuncdP; + + P1 = P + DP; + + system.setTemperature(T); + system.setPressure(P1); + init(); + funcP(); + f1 = funcP; + dfdp1 = dfuncdP; + + DDQ = (dfdp1 - dfdp) / DP; + + if (iterP == 1000) { + ITERP = -1; + break; + } + if (Math.abs(dfdp / DDQ) < 1E-7) { + ITERP = iterP; + break; + } - /** {@inheritDoc} */ - @Override - public void run() { - // input values - T = cricondenTherm[0]; - P = cricondenTherm[1]; - Tini = T; - Pini = P; - /* - * bubblePointFirst=false; system.setBeta(beta); system.setPhaseType(0, "oil"); - * system.setPhaseType(1, "gas"); - */ - for (int ii = 0; ii < numberOfComponents; ii++) { - u.set(ii, 0, cricondenThermY[ii] / cricondenThermX[ii]); - system.getPhase(0).getComponent(ii).setK(cricondenThermY[ii] / cricondenThermX[ii]); - system.getPhase(0).getComponent(ii).setx(cricondenThermX[ii]); - system.getPhase(1).getComponent(ii).setx(cricondenThermY[ii]); - uini = u.copy(); + if (Math.abs(dfdp) < 1E-7) { + ITERP = iterP; + break; } + + P = P - dfdp / DDQ; + } + + // iter T,X + // solve Q=0 with Newton method, numerical derivatives + for (int iterT = 0; iterT <= 10000; iterT++) { + system.setTemperature(T); + system.setPressure(P); + + uold = u.copy(); + init(); + setNewK(); + + double sumK = 0.; + + for (int i = 0; i < numberOfComponents; i++) { + sumK = sumK + (uold.get(i, 0) - u.get(i, 0)) * (uold.get(i, 0) - u.get(i, 0)); + } + setNewX(); - /* - * //iter X for (int iterX=0 ; iterX <= 10000 ; iterX++ ){ - * - * system.setTemperature(T); system.setPressure(P); - * - * uold = u.copy(); init(); setNewK(); setNewX(); - * - * double sumK=0.; for (int i=0 ; i < numberOfComponents ; i++ ){ sumK= - * sumK+(uold.get(i,0)-u.get(i,0))*(uold.get(i,0)-u.get(i,0)); } if (iterX == 10000 ){ - * ITERX=-1; u=uini.copy(); setNewX(); break; } if (sumK <= 1E-7){ ITERX=iterX; setNewX(); - * break; } } - * - */ - // starting loops - for (int iter = 0; iter < 1000; iter++) { - // iter P - // solve dQ/dP=0 with Newton method, numerical derivatives - for (int iterP = 0; iterP <= 1000; iterP++) { - system.setTemperature(T); - system.setPressure(P); - init(); - funcP(); - f = funcP; - dfdp = dfuncdP; - - P1 = P + DP; - - system.setTemperature(T); - system.setPressure(P1); - init(); - funcP(); - f1 = funcP; - dfdp1 = dfuncdP; - - DDQ = (dfdp1 - dfdp) / DP; - - if (iterP == 1000) { - ITERP = -1; - break; - } - if (Math.abs(dfdp / DDQ) < 1E-7) { - ITERP = iterP; - break; - } - - if (Math.abs(dfdp) < 1E-7) { - ITERP = iterP; - break; - } - - P = P - dfdp / DDQ; - } - - // iter T,X - // solve Q=0 with Newton method, numerical derivatives - for (int iterT = 0; iterT <= 10000; iterT++) { - system.setTemperature(T); - system.setPressure(P); - - uold = u.copy(); - init(); - setNewK(); - - double sumK = 0.; - - for (int i = 0; i < numberOfComponents; i++) { - sumK = sumK + (uold.get(i, 0) - u.get(i, 0)) * (uold.get(i, 0) - u.get(i, 0)); - } - - setNewX(); - init(); - funcT(); - - if ((Math.abs(funcT / dfuncdT) < 1E-7) || (sumK <= 1E-10)) { - ITERT = iterT; - break; - } - - T = T - funcT / dfuncdT; - - if (T <= 0) { - T = T + funcP / dfuncdT; - u = u.copy(); - setNewX(); - // iterP = 10000; - break; - } - - if (iterT == 10000) { - ITERT = -1; - break; - } - } - - // Test Convergence - system.setTemperature(T); - system.setPressure(P); - init(); - funcT(); - funcP(); - - if (Math.abs(dfuncdP) <= 1E-7 && Math.abs(funcT) <= 1E-7 && Math.abs(dfuncdT) >= 1E-7) { - /* - * System.out.println("T : " + T); System.out.println("P : " + P); - * System.out.println("dfuncdT : " + dfuncdT); System.out.println("dfuncdP : " + - * dfuncdP); System.out.println("funcT : " + funcT); - * System.out.println("funcP : " + funcP); - * - * System.out.println(ITERX); System.out.println(ITER); System.out.println(ITERT); - * System.out.println(ITERP); - */ - - cricondenTherm[0] = T; - cricondenTherm[1] = P; - - break; - } else if (Math.abs(dfuncdP) <= 1E-7 && Math.abs(funcT) <= 1E-7 - && Math.abs(dfuncdT) <= 1E-7) { - T = -1; - P = -1; - /* - * System.out.println("T : " + T); System.out.println("P : " + P); - * System.out.println("dfuncdT : " + dfuncdT); System.out.println("dfuncdP : " + - * dfuncdP); System.out.println("funcT : " + funcT); - * System.out.println("funcP : " + funcP); - */ - cricondenTherm[0] = T; - cricondenTherm[1] = P; - - break; - } + init(); + funcT(); + + if ((Math.abs(funcT / dfuncdT) < 1E-7) || (sumK <= 1E-10)) { + ITERT = iterT; + break; } - } - /** - *

- * setNewK. - *

- */ - public void setNewK() { - for (int j = 0; j < numberOfComponents; j++) { - double kap = system.getPhase(0).getComponent(j).getFugacityCoefficient() - / system.getPhase(1).getComponent(j).getFugacityCoefficient(); - system.getPhase(0).getComponents()[j].setK(kap); - u.set(j, 0, kap); + T = T - funcT / dfuncdT; + + if (T <= 0) { + T = T + funcP / dfuncdT; + u = u.copy(); + setNewX(); + // iterP = 10000; + break; } - } - /** - *

- * setNewX. - *

- */ - public void setNewX() { - double sumx = 0.; - double sumy = 0.; - double[] xx = new double[numberOfComponents]; - double[] yy = new double[numberOfComponents]; - - for (int j = 0; j < numberOfComponents; j++) { - xx[j] = system.getPhase(0).getComponents()[j].getz() - / (1.0 - system.getBeta() + system.getBeta() * u.get(j, 0)); - yy[j] = system.getPhase(1).getComponents()[j].getz() * u.get(j, 0) - / (1.0 - system.getBeta() + system.getBeta() * u.get(j, 0)); - - xx[j] = system.getPhase(0).getComponents()[j].getz() / (1.0 - system.getBeta() - + system.getBeta() * system.getPhase(0).getComponents()[j].getK()); - yy[j] = system.getPhase(1).getComponents()[j].getz() - * system.getPhase(0).getComponents()[j].getK() / (1.0 - system.getBeta() - + system.getBeta() * system.getPhase(0).getComponents()[j].getK()); - - sumx = sumx + xx[j]; - sumy = sumy + yy[j]; + if (iterT == 10000) { + ITERT = -1; + break; } + } - for (int j = 0; j < numberOfComponents; j++) { - system.getPhase(0).getComponents()[j].setx(xx[j] / sumx); - system.getPhase(1).getComponents()[j].setx(yy[j] / sumy); + // Test Convergence + system.setTemperature(T); + system.setPressure(P); + init(); + funcT(); + funcP(); - xx[j] = system.getPhase(0).getComponents()[j].getx(); - yy[j] = system.getPhase(1).getComponents()[j].getx(); - } - } + if (Math.abs(dfuncdP) <= 1E-7 && Math.abs(funcT) <= 1E-7 && Math.abs(dfuncdT) >= 1E-7) { + /* + * System.out.println("T : " + T); System.out.println("P : " + P); + * System.out.println("dfuncdT : " + dfuncdT); System.out.println("dfuncdP : " + + * dfuncdP); System.out.println("funcT : " + funcT); System.out.println("funcP : " + + * funcP); + * + * System.out.println(ITERX); System.out.println(ITER); System.out.println(ITERT); + * System.out.println(ITERP); + */ - /** - *

- * init. - *

- */ - public void init() { - // setNewX(); - system.init(3); + cricondenTherm[0] = T; + cricondenTherm[1] = P; + + break; + } else if (Math.abs(dfuncdP) <= 1E-7 && Math.abs(funcT) <= 1E-7 + && Math.abs(dfuncdT) <= 1E-7) { + T = -1; + P = -1; + /* + * System.out.println("T : " + T); System.out.println("P : " + P); + * System.out.println("dfuncdT : " + dfuncdT); System.out.println("dfuncdP : " + + * dfuncdP); System.out.println("funcT : " + funcT); System.out.println("funcP : " + + * funcP); + */ + cricondenTherm[0] = T; + cricondenTherm[1] = P; + + break; + } + } + } + + /** + *

+ * setNewK. + *

+ */ + public void setNewK() { + for (int j = 0; j < numberOfComponents; j++) { + double kap = system.getPhase(0).getComponent(j).getFugacityCoefficient() + / system.getPhase(1).getComponent(j).getFugacityCoefficient(); + system.getPhase(0).getComponents()[j].setK(kap); + u.set(j, 0, kap); + } + } + + /** + *

+ * setNewX. + *

+ */ + public void setNewX() { + double sumx = 0.; + double sumy = 0.; + double[] xx = new double[numberOfComponents]; + double[] yy = new double[numberOfComponents]; + + for (int j = 0; j < numberOfComponents; j++) { + xx[j] = system.getPhase(0).getComponents()[j].getz() + / (1.0 - system.getBeta() + system.getBeta() * u.get(j, 0)); + yy[j] = system.getPhase(1).getComponents()[j].getz() * u.get(j, 0) + / (1.0 - system.getBeta() + system.getBeta() * u.get(j, 0)); + + xx[j] = system.getPhase(0).getComponents()[j].getz() / (1.0 - system.getBeta() + + system.getBeta() * system.getPhase(0).getComponents()[j].getK()); + yy[j] = system.getPhase(1).getComponents()[j].getz() + * system.getPhase(0).getComponents()[j].getK() / (1.0 - system.getBeta() + + system.getBeta() * system.getPhase(0).getComponents()[j].getK()); + + sumx = sumx + xx[j]; + sumy = sumy + yy[j]; } - /** - *

- * funcT. - *

- */ - public void funcT() { - funcT = -1.0; - dfuncdT = 0.0; - - for (int j = 0; j < numberOfComponents; j++) { - double xxf = system.getPhase(0).getComponent(j).getx(); - double yyf = system.getPhase(1).getComponent(j).getx(); - /* - * double voll=system.getPhase(0).getMolarVolume(); double - * volv=system.getPhase(1).getMolarVolume(); - * - * double T=system.getPhase(0).getPressure(); double - * P=system.getPhase(1).getTemperature() ; - */ - double fugl = system.getPhase(0).getComponent(j).getLogFugacityCoefficient(); - double fugv = system.getPhase(1).getComponent(j).getLogFugacityCoefficient(); - - double fugTl = system.getPhase(0).getComponent(j).getdfugdt(); - double fugTv = system.getPhase(1).getComponent(j).getdfugdt(); - - funcT = funcT + xxf + xxf * (Math.log(yyf) - Math.log(xxf) + fugv - fugl); - dfuncdT = dfuncdT + xxf * (fugTv - fugTl); - } + for (int j = 0; j < numberOfComponents; j++) { + system.getPhase(0).getComponents()[j].setx(xx[j] / sumx); + system.getPhase(1).getComponents()[j].setx(yy[j] / sumy); + + xx[j] = system.getPhase(0).getComponents()[j].getx(); + yy[j] = system.getPhase(1).getComponents()[j].getx(); + } + } + + /** + *

+ * init. + *

+ */ + public void init() { + // setNewX(); + system.init(3); + } + + /** + *

+ * funcT. + *

+ */ + public void funcT() { + funcT = -1.0; + dfuncdT = 0.0; + + for (int j = 0; j < numberOfComponents; j++) { + double xxf = system.getPhase(0).getComponent(j).getx(); + double yyf = system.getPhase(1).getComponent(j).getx(); + /* + * double voll=system.getPhase(0).getMolarVolume(); double + * volv=system.getPhase(1).getMolarVolume(); + * + * double T=system.getPhase(0).getPressure(); double P=system.getPhase(1).getTemperature() ; + */ + double fugl = system.getPhase(0).getComponent(j).getLogFugacityCoefficient(); + double fugv = system.getPhase(1).getComponent(j).getLogFugacityCoefficient(); + + double fugTl = system.getPhase(0).getComponent(j).getdfugdt(); + double fugTv = system.getPhase(1).getComponent(j).getdfugdt(); + + funcT = funcT + xxf + xxf * (Math.log(yyf) - Math.log(xxf) + fugv - fugl); + dfuncdT = dfuncdT + xxf * (fugTv - fugTl); } + } - /** - *

- * funcP. - *

- */ - public void funcP() { - funcP = -1.0; - dfuncdP = 0.0; + /** + *

+ * funcP. + *

+ */ + public void funcP() { + funcP = -1.0; + dfuncdP = 0.0; - for (int j = 0; j < numberOfComponents; j++) { - double xx = system.getPhase(0).getComponent(j).getx(); - double yy = system.getPhase(1).getComponent(j).getx(); + for (int j = 0; j < numberOfComponents; j++) { + double xx = system.getPhase(0).getComponent(j).getx(); + double yy = system.getPhase(1).getComponent(j).getx(); - double fugl = system.getPhase(0).getComponents()[j].getLogFugacityCoefficient(); - double fugv = system.getPhase(1).getComponents()[j].getLogFugacityCoefficient(); + double fugl = system.getPhase(0).getComponents()[j].getLogFugacityCoefficient(); + double fugv = system.getPhase(1).getComponents()[j].getLogFugacityCoefficient(); - double fugPl = system.getPhase(0).getComponents()[j].getdfugdp(); - double fugPv = system.getPhase(1).getComponents()[j].getdfugdp(); + double fugPl = system.getPhase(0).getComponents()[j].getdfugdp(); + double fugPv = system.getPhase(1).getComponents()[j].getdfugdp(); - funcP = funcP + xx + xx * (Math.log(yy) - Math.log(xx) + fugv - fugl); - dfuncdP = dfuncdP + xx * (fugPv - fugPl); - } + funcP = funcP + xx + xx * (Math.log(yy) - Math.log(xx) + fugv - fugl); + dfuncdP = dfuncdP + xx * (fugPv - fugPl); } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/HPTphaseEnvelope.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/HPTphaseEnvelope.java index 9cccf27d17..f9a5979237 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/HPTphaseEnvelope.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/HPTphaseEnvelope.java @@ -3,6 +3,7 @@ * * Created on 14. oktober 2000, 21:59 */ + package neqsim.thermodynamicOperations.phaseEnvelopeOps.multicomponentEnvelopeOps; import java.awt.FlowLayout; @@ -24,111 +25,96 @@ * @version $Id: $Id */ public class HPTphaseEnvelope extends BaseOperation { - private static final long serialVersionUID = 1000; - - double[][] points = new double[10][10]; - SystemInterface system; - ThermodynamicOperations testOps; - JProgressBar monitor; - JFrame mainFrame; - JPanel mainPanel; - double startPressure = 1, endPressure = 0, startTemperature = 160, endTemperature = 0; - static Logger logger = LogManager.getLogger(HPTphaseEnvelope.class); - - /** - *

- * Constructor for HPTphaseEnvelope. - *

- */ - public HPTphaseEnvelope() {} + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(HPTphaseEnvelope.class); - /** - *

- * Constructor for HPTphaseEnvelope. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public HPTphaseEnvelope(SystemInterface system) { - testOps = new ThermodynamicOperations(system); - this.system = system; - mainFrame = new JFrame("Progress Bar"); - mainPanel = new JPanel(); - mainPanel.setSize(200, 100); - mainFrame.getContentPane().setLayout(new FlowLayout()); - mainPanel.setLayout(new FlowLayout()); - mainFrame.setSize(200, 100); - monitor = new JProgressBar(0, 1000); - monitor.setSize(200, 100); - monitor.setStringPainted(true); - mainPanel.add(monitor); - mainFrame.getContentPane().add(mainPanel); - mainFrame.setVisible(true); - } + double[][] points = new double[10][10]; + SystemInterface system; + ThermodynamicOperations testOps; + JProgressBar monitor; + JFrame mainFrame; + JPanel mainPanel; + double startPressure = 1; + double endPressure = 0; + double startTemperature = 160; + double endTemperature = 0; - /** {@inheritDoc} */ - @Override - public void run() { - int np = 0; + /** + *

+ * Constructor for HPTphaseEnvelope. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public HPTphaseEnvelope(SystemInterface system) { + testOps = new ThermodynamicOperations(system); + this.system = system; + mainFrame = new JFrame("Progress Bar"); + mainPanel = new JPanel(); + mainPanel.setSize(200, 100); + mainFrame.getContentPane().setLayout(new FlowLayout()); + mainPanel.setLayout(new FlowLayout()); + mainFrame.setSize(200, 100); + monitor = new JProgressBar(0, 1000); + monitor.setSize(200, 100); + monitor.setStringPainted(true); + mainPanel.add(monitor); + mainFrame.getContentPane().add(mainPanel); + mainFrame.setVisible(true); + } - for (int i = 0; i < 10; i++) { - system.setPressure(i * 0.5 + startPressure); - for (int j = 0; j < 10; j++) { - np++; - if (np % 2 == 0) { - monitor.setValue(np); - monitor.setString("Calculated points: " + np); - } + /** {@inheritDoc} */ + @Override + public void run() { + int np = 0; - system.setTemperature(startTemperature + j); - testOps.TPflash(); - system.init(3); - points[i][j] = system.getEnthalpy(); - } + for (int i = 0; i < 10; i++) { + system.setPressure(i * 0.5 + startPressure); + for (int j = 0; j < 10; j++) { + np++; + if (np % 2 == 0) { + monitor.setValue(np); + monitor.setString("Calculated points: " + np); } - } - /** {@inheritDoc} */ - @Override - public void displayResult() { - /* - try { - mainFrame.setVisible(false); - visAd3DPlot plot = - new visAd3DPlot("pressure[bar]", "temperature[K]", "enthalpy[J/mol]"); - plot.setXYvals(150, 160, 10, 10, 20, 10); - plot.setZvals(points); - plot.init(); - } catch (Exception e) { - logger.error("plotting failed"); - } - */ + system.setTemperature(startTemperature + j); + testOps.TPflash(); + system.init(3); + points[i][j] = system.getEnthalpy(); + } } + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} + /** {@inheritDoc} */ + @Override + public void displayResult() { + /* + * try { mainFrame.setVisible(false); visAd3DPlot plot = new visAd3DPlot("pressure[bar]", + * "temperature[K]", "enthalpy[J/mol]"); plot.setXYvals(150, 160, 10, 10, 20, 10); + * plot.setZvals(points); plot.init(); } catch (Exception ex) { logger.error("plotting failed"); + * } + */ + } - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return points; - } + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} - /** {@inheritDoc} */ - /* - @Override - public void createNetCdfFile(String name) {} -*/ - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return points; + } - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return null; - } + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelope.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelope.java index 3d7e7a63ed..8d24a775a6 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelope.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelope.java @@ -3,6 +3,7 @@ * * Created on 14. oktober 2000, 21:59 Updated on May 2019, by Nefeli */ + package neqsim.thermodynamicOperations.phaseEnvelopeOps.multicomponentEnvelopeOps; import java.text.DecimalFormat; @@ -25,838 +26,825 @@ * @version $Id: $Id */ public class pTphaseEnvelope extends BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(pTphaseEnvelope.class); - - double maxPressure = 1000.0; - double minPressure = 1.0; - double[][] copiedPoints = null; - graph2b graph2 = null; - SystemInterface system; - boolean bubblePointFirst = true; - boolean hascopiedPoints = false; - double[] cricondenTherm = new double[3]; - double[] cricondenBar = new double[3]; - double[] cricondenThermX = new double[100]; - double[] cricondenThermY = new double[100]; - double[] cricondenBarX = new double[100]; - double[] cricondenBarY = new double[100]; - double phaseFraction = 1e-10; - int i, j = 0, nummer = 0, iterations = 0, maxNumberOfIterations = 10000; - double gibbsEnergy = 0, gibbsEnergyOld = 0; - double Kold, deviation = 0, g0 = 0, g1 = 0, lowPres = 1.0; - double lnOldOldK[], lnK[]; - boolean outputToFile = false; - double lnOldK[]; - double lnKwil[]; - double oldDeltalnK[], deltalnK[]; - double tm[] = {1, 1}; - double beta = 1e-5; - int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase - JProgressBar monitor; - JFrame mainFrame; - String fileName = "c:/file"; - JPanel mainPanel; - double temp = 0, pres = 0, startPres = 0; - double[][] points = new double[2][]; - double[] pointsH; - double[][] pointsH2 = new double[4][]; - double[] pointsV; - double[][] pointsV2 = new double[4][]; - double[] pointsS; - double[][] pointsS2 = new double[4][]; - public double[][] points2 = new double[4][]; - double[][] points3 = new double[8][]; - boolean moreLines = false; - boolean restart = true; - int np = 0; - // points[2] = new double[1000]; - int speceq = 0; - String[] navn = {"bubble point", "dew point", "bubble point", "dew point", "dew points"}; - int npfirst; - int ncrfirst; - double Tcfirst; - double Pcfirst; - double Tmin = 0.0; - - double[] cricondenThermfirst = new double[3]; - double[] cricondenBarfirst = new double[3]; - double[] cricondenThermXfirst = new double[100]; - double[] cricondenThermYfirst = new double[100]; - double[] cricondenBarXfirst = new double[100]; - double[] cricondenBarYfirst = new double[100]; - - /** - *

- * Constructor for pTphaseEnvelope. - *

- */ - public pTphaseEnvelope() {} - - /** - *

- * Constructor for pTphaseEnvelope. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param name a {@link java.lang.String} object - * @param phaseFraction a double - * @param lowPres a double - * @param bubfirst a boolean - */ - public pTphaseEnvelope(SystemInterface system, String name, double phaseFraction, - double lowPres, boolean bubfirst) { - this.bubblePointFirst = bubfirst; - if (name != null) { - outputToFile = true; - fileName = name; - } - this.system = system; - this.phaseFraction = phaseFraction; - lnOldOldK = new double[system.getPhase(0).getNumberOfComponents()]; - lnOldK = new double[system.getPhase(0).getNumberOfComponents()]; - lnK = new double[system.getPhase(0).getNumberOfComponents()]; - this.lowPres = lowPres; - oldDeltalnK = new double[system.getPhase(0).getNumberOfComponents()]; - deltalnK = new double[system.getPhase(0).getNumberOfComponents()]; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(pTphaseEnvelope.class); + + double maxPressure = 1000.0; + double minPressure = 1.0; + double[][] copiedPoints = null; + graph2b graph2 = null; + SystemInterface system; + boolean bubblePointFirst = true; + boolean hascopiedPoints = false; + double[] cricondenTherm = new double[3]; + double[] cricondenBar = new double[3]; + double[] cricondenThermX = new double[100]; + double[] cricondenThermY = new double[100]; + double[] cricondenBarX = new double[100]; + double[] cricondenBarY = new double[100]; + double phaseFraction = 1e-10; + int i; + int j = 0; + int nummer = 0; + int iterations = 0; + int maxNumberOfIterations = 10000; + double gibbsEnergy = 0; + double gibbsEnergyOld = 0; + double Kold; + double deviation = 0; + double g0 = 0; + double g1 = 0; + double lowPres = 1.0; + double[] lnOldOldK; + double[] lnK; + boolean outputToFile = false; + double[] lnOldK; + double[] lnKwil; + double[] oldDeltalnK; + double[] deltalnK; + double[] tm = {1, 1}; + double beta = 1e-5; + int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase + JProgressBar monitor; + JFrame mainFrame; + String fileName = "c:/file"; + JPanel mainPanel; + double temp = 0; + double pres = 0; + double startPres = 0; + double[][] points = new double[2][]; + double[] pointsH; + double[][] pointsH2 = new double[4][]; + double[] pointsV; + double[][] pointsV2 = new double[4][]; + double[] pointsS; + double[][] pointsS2 = new double[4][]; + public double[][] points2 = new double[4][]; + double[][] points3 = new double[8][]; + boolean moreLines = false; + boolean restart = true; + int np = 0; + // points[2] = new double[1000]; + int speceq = 0; + String[] navn = {"bubble point", "dew point", "bubble point", "dew point", "dew points"}; + int npfirst; + int ncrfirst; + double Tcfirst; + double Pcfirst; + double Tmin = 0.0; + + double[] cricondenThermfirst = new double[3]; + double[] cricondenBarfirst = new double[3]; + double[] cricondenThermXfirst = new double[100]; + double[] cricondenThermYfirst = new double[100]; + double[] cricondenBarXfirst = new double[100]; + double[] cricondenBarYfirst = new double[100]; + + /** + *

+ * Constructor for pTphaseEnvelope. + *

+ */ + public pTphaseEnvelope() {} + + /** + *

+ * Constructor for pTphaseEnvelope. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param name a {@link java.lang.String} object + * @param phaseFraction a double + * @param lowPres a double + * @param bubfirst a boolean + */ + public pTphaseEnvelope(SystemInterface system, String name, double phaseFraction, double lowPres, + boolean bubfirst) { + this.bubblePointFirst = bubfirst; + if (name != null) { + outputToFile = true; + fileName = name; } - - /** {@inheritDoc} */ - @Override - public void run() { - speceq = 0; // initialization + this.system = system; + this.phaseFraction = phaseFraction; + lnOldOldK = new double[system.getPhase(0).getNumberOfComponents()]; + lnOldK = new double[system.getPhase(0).getNumberOfComponents()]; + lnK = new double[system.getPhase(0).getNumberOfComponents()]; + this.lowPres = lowPres; + oldDeltalnK = new double[system.getPhase(0).getNumberOfComponents()]; + deltalnK = new double[system.getPhase(0).getNumberOfComponents()]; + } + + /** {@inheritDoc} */ + @Override + public void run() { + speceq = 0; // initialization + try { + points[0] = new double[10000]; // declarations for points + points[1] = new double[10000]; // declarations for points + + pointsH = new double[10000]; // declarations for points + pointsV = new double[10000]; // declarations for points + pointsS = new double[10000]; // declarations for points + system.init(0); // initialization + + // selects the most volatile and least volatile component based on Tc values + // afterwards it uses them to define the speceq of the first point + // based on the desired first point, dew/bubble + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getComponent(i).getz() < 1e-10) { + continue; + } + if (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { + if (bubblePointFirst && system.getPhase(0).getComponents()[speceq] + .getTC() > system.getPhase(0).getComponents()[i].getTC()) { + speceq = system.getPhase(0).getComponent(i).getComponentNumber(); + } + if (!bubblePointFirst && system.getPhase(0).getComponents()[speceq] + .getTC() < system.getPhase(0).getComponents()[i].getTC()) { + speceq = system.getPhase(0).getComponent(i).getComponentNumber(); + } + } + } + + // initialized the first step of the phase envelope + // pressure is already defined + // temperature is the antoine vapor pressure of the selected component + // (least or most volatile. + pres = lowPres; + // temp = + // system.getPhase(0).getComponent(speceq).getAntoineVaporTemperature(pres); + temp = tempKWilson(phaseFraction, pres); + + if (Double.isNaN(temp)) { + temp = system.getPhase(0).getComponent(speceq).getTC() - 20.0; + } + system.setTemperature(temp); + system.setPressure(pres); + + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + + // this part converges the first phase envelope point. + // if the plasefraction is more than 0.5 it does a dew point initiallization + // else a bubble point initiallization + + for (int i = 0; i < 5; i++) { try { - points[0] = new double[10000]; // declarations for points - points[1] = new double[10000]; // declarations for points - - pointsH = new double[10000]; // declarations for points - pointsV = new double[10000]; // declarations for points - pointsS = new double[10000]; // declarations for points - system.init(0); // initialization - - // selects the most volatile and least volatile component based on Tc values - // afterwards it uses them to define the speceq of the first point - // based on the desired first point, dew/bubble - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getComponent(i).getz() < 1e-10) { - continue; - } - if (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { - if (bubblePointFirst == true && system.getPhase(0).getComponents()[speceq] - .getTC() > system.getPhase(0).getComponents()[i].getTC()) { - speceq = system.getPhase(0).getComponent(i).getComponentNumber(); - } - if (bubblePointFirst == false && system.getPhase(0).getComponents()[speceq] - .getTC() < system.getPhase(0).getComponents()[i].getTC()) { - speceq = system.getPhase(0).getComponent(i).getComponentNumber(); - } - } - } - - // initialized the first step of the phase envelope - // pressure is already defined - // temperature is the antoine vapor pressure of the selected component - // (least or most volatile. - pres = lowPres; - // temp = - // system.getPhase(0).getComponent(speceq).getAntoineVaporTemperature(pres); - temp = tempKWilson(phaseFraction, pres); - - if (Double.isNaN(temp)) { - temp = system.getPhase(0).getComponent(speceq).getTC() - 20.0; - } + if (phaseFraction < 0.5) { + temp += i * 2; system.setTemperature(temp); - system.setPressure(pres); - - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - - // this part converges the first phase envelope point. - // if the plasefraction is more than 0.5 it does a dew point initiallization - // else a bubble point initiallization - - for (int i = 0; i < 5; i++) { - try { - if (phaseFraction < 0.5) { - temp += i * 2; - system.setTemperature(temp); - testOps.bubblePointTemperatureFlash(); - } else { - temp += i * 2; - system.setTemperature(temp); - testOps.dewPointTemperatureFlash(); - } - } catch (Exception e) { - e.toString(); - } - double tempNy = system.getTemperature(); - - if (!Double.isNaN(tempNy)) { - temp = tempNy; - break; - } - } - - // this part sets the first envelope point into the system - system.setBeta(phaseFraction); - system.setPressure(pres); + testOps.bubblePointTemperatureFlash(); + } else { + temp += i * 2; system.setTemperature(temp); - - sysNewtonRhapsonPhaseEnvelope nonLinSolver = new sysNewtonRhapsonPhaseEnvelope(system, - 2, system.getPhase(0).getNumberOfComponents()); - startPres = system.getPressure(); - nonLinSolver.setu(); - for (np = 1; np < 9980; np++) { - try { - // solves the np point of the envelope - nonLinSolver.calcInc(np); - nonLinSolver.solve(np); - - // this catches the exceptions - // double TT = system.getPhase(0).getTemperature(); - // double PP = system.getPhase(0).getPressure(); - } catch (Exception e0) { - // the envelope crushed. - // this part keeps the old values - // restarts the envelope from the other side - // and then stops - - if (restart) { - restart = false; - // keep values - Tmin = points[0][np - 2]; - npfirst = np - 1; - ncrfirst = nonLinSolver.getNpCrit(); - if (ncrfirst == 0) { - ncrfirst = npfirst; - } - Tcfirst = system.getTC(); - Pcfirst = system.getPC(); - - cricondenBarfirst = cricondenBar; - cricondenBarXfirst = cricondenBarX; - cricondenBarYfirst = cricondenBarY; - - cricondenThermfirst = cricondenTherm; - cricondenThermXfirst = cricondenThermX; - cricondenThermYfirst = cricondenThermY; - - hascopiedPoints = true; - copiedPoints = new double[5][np - 1]; - for (int i = 0; i < np - 1; i++) { - copiedPoints[0][i] = points[0][i]; - copiedPoints[1][i] = points[1][i]; - copiedPoints[2][i] = pointsH[i]; - copiedPoints[3][i] = pointsS[i]; - copiedPoints[4][i] = pointsV[i]; - } - - // new settings - phaseFraction = 1.0 - phaseFraction; - if (bubblePointFirst) { - bubblePointFirst = false; - } else { - bubblePointFirst = true; - } - run(); - /**/ - break; - } else { - np = np - 1; - break; - } - } - - // check for critical point - double Kvallc = system.getPhase(0).getComponent(nonLinSolver.lc).getx() - / system.getPhase(1).getComponent(nonLinSolver.lc).getx(); - double Kvalhc = system.getPhase(0).getComponent(nonLinSolver.hc).getx() - / system.getPhase(1).getComponent(nonLinSolver.hc).getx(); - // double densV = system.getPhase(0).getDensity(); - // double densL = system.getPhase(1).getDensity(); - - // System.out.println(np + " " + system.getTemperature() + " " + - // system.getPressure() + " " + densV + " " + densL ); - - if ((nonLinSolver.etterCP == false)) { - if (Kvallc < 1.05 && Kvalhc > 0.95) { - // close to the critical point - // invert phase types and find the CP Temp and Press - - // System.out.println("critical point"); - nonLinSolver.npCrit = np; - system.invertPhaseTypes(); - nonLinSolver.etterCP = true; - // the critical point is found from interpolation plynimials based on K=1 of - // the - // most or least volatile component - nonLinSolver.calcCrit(); - } - } - if (nonLinSolver.calcCP) { - nonLinSolver.calcCP = false; - nonLinSolver.npCrit = np; - nonLinSolver.calcCrit(); - } - - // stores critondenbar and cricondentherm - // HERE the new cricoT and crico P values will be called instead - if (system.getTemperature() > cricondenTherm[0]) { - cricondenTherm[1] = system.getPressure(); - cricondenTherm[0] = system.getTemperature(); - for (int ii = 0; ii < nonLinSolver.numberOfComponents; ii++) { - cricondenThermX[ii] = system.getPhase(1).getComponent(ii).getx(); - cricondenThermY[ii] = system.getPhase(0).getComponent(ii).getx(); - } - } else { - nonLinSolver.ettercricoT = true; - } - if (system.getPressure() > cricondenBar[1]) { - cricondenBar[0] = system.getTemperature(); - cricondenBar[1] = system.getPressure(); - for (int ii = 0; ii < nonLinSolver.numberOfComponents; ii++) { - cricondenBarX[ii] = system.getPhase(1).getComponent(ii).getx(); - cricondenBarY[ii] = system.getPhase(0).getComponent(ii).getx(); - } - } - - // Exit criteria - if ((system.getPressure() < minPressure && nonLinSolver.ettercricoT)) { - break; - } - if (system.getPressure() > maxPressure) { - break; - } - if (system.getTemperature() > Tmin && !restart) { - break; - } - - // Keeps the calculated points - points[0][np - 1] = system.getTemperature(); - points[1][np - 1] = system.getPressure(); - pointsH[np - 1] = system.getPhase(1).getEnthalpy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - pointsV[np - 1] = system.getPhase(1).getDensity(); - pointsS[np - 1] = system.getPhase(1).getEntropy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - } - - try { - int ncr = nonLinSolver.getNpCrit(); - if (ncr == 0) { - ncr = np; - } - int ncr2 = np - ncr; - if (hascopiedPoints) { - // if it enters here the envelope crashed and restarted - // reallocate to have all values - points2 = new double[8][]; - pointsH2 = new double[8][]; - pointsS2 = new double[8][]; - pointsV2 = new double[8][]; - } - - // points2 are plotted - points2[0] = new double[ncr + 1]; - points2[1] = new double[ncr + 1]; - pointsH2[0] = new double[ncr + 1]; - pointsH2[1] = new double[ncr + 1]; - pointsS2[0] = new double[ncr + 1]; - pointsS2[1] = new double[ncr + 1]; - pointsV2[0] = new double[ncr + 1]; - pointsV2[1] = new double[ncr + 1]; - - if (ncr2 > 2) { - points2[2] = new double[ncr2 - 2]; - points2[3] = new double[ncr2 - 2]; - pointsH2[2] = new double[ncr2 - 2]; - pointsH2[3] = new double[ncr2 - 2]; - pointsS2[2] = new double[ncr2 - 2]; - pointsS2[3] = new double[ncr2 - 2]; - pointsV2[2] = new double[ncr2 - 2]; - pointsV2[3] = new double[ncr2 - 2]; - } else { - points2[2] = new double[0]; - points2[3] = new double[0]; - pointsH2[2] = new double[0]; - pointsH2[3] = new double[0]; - pointsS2[2] = new double[0]; - pointsS2[3] = new double[0]; - pointsV2[2] = new double[0]; - pointsV2[3] = new double[0]; - } - - for (int i = 0; i < ncr; i++) { - // second branch up to critical point - points2[0][i] = points[0][i]; - points2[1][i] = points[1][i]; - pointsH2[1][i] = points[1][i]; - pointsH2[0][i] = pointsH[i]; - pointsS2[1][i] = points[1][i]; - pointsS2[0][i] = pointsS[i]; - pointsV2[1][i] = points[1][i]; - pointsV2[0][i] = pointsV[i]; - } - if (ncr2 > 2) { - for (int i = 1; i < (ncr2 - 2); i++) { - // second branch after the critical point - points2[2][i] = points[0][i + ncr - 1]; - points2[3][i] = points[1][i + ncr - 1]; - pointsH2[3][i] = points[1][i + ncr - 1]; - pointsH2[2][i] = pointsH[i + ncr - 1]; - pointsS2[3][i] = points[1][i + ncr - 1]; - pointsS2[2][i] = pointsS[i + ncr - 1]; - pointsV2[3][i] = points[1][i + ncr - 1]; - pointsV2[2][i] = pointsV[i + ncr - 1]; - } - } - - if (hascopiedPoints) { - if (ncrfirst > npfirst) { - ncr = copiedPoints[0].length - 1; - ncr2 = npfirst - ncr; - npfirst = npfirst - 1; - } else { - ncr = ncrfirst; - ncr2 = npfirst - ncr; - } - - points2[4] = new double[ncr + 1]; - points2[5] = new double[ncr + 1]; - pointsH2[4] = new double[ncr + 1]; - pointsH2[5] = new double[ncr + 1]; - pointsS2[4] = new double[ncr + 1]; - pointsS2[5] = new double[ncr + 1]; - pointsV2[4] = new double[ncr + 1]; - pointsV2[5] = new double[ncr + 1]; - - if (ncr2 > 2) { - points2[6] = new double[ncr2 - 2]; - points2[7] = new double[ncr2 - 2]; - pointsH2[6] = new double[ncr2 - 2]; - pointsH2[7] = new double[ncr2 - 2]; - pointsS2[6] = new double[ncr2 - 2]; - pointsS2[7] = new double[ncr2 - 2]; - pointsV2[6] = new double[ncr2 - 2]; - pointsV2[7] = new double[ncr2 - 2]; - } else { - points2[6] = new double[0]; - points2[7] = new double[0]; - pointsH2[6] = new double[0]; - pointsH2[7] = new double[0]; - pointsS2[6] = new double[0]; - pointsS2[7] = new double[0]; - pointsV2[6] = new double[0]; - pointsV2[7] = new double[0]; - } - - for (int i = 0; i < ncr; i++) { - // first branch up to the critical point - points2[4][i] = copiedPoints[0][i]; - points2[5][i] = copiedPoints[1][i]; - pointsH2[5][i] = copiedPoints[1][i]; - pointsH2[4][i] = copiedPoints[2][i]; - pointsS2[5][i] = copiedPoints[1][i]; - pointsS2[4][i] = copiedPoints[3][i]; - pointsV2[5][i] = copiedPoints[1][i]; - pointsV2[4][i] = copiedPoints[4][i]; - } - if (ncr2 > 2) { - for (int i = 1; i < (ncr2 - 2); i++) { - // first branch after the critical point - points2[6][i] = copiedPoints[0][i + ncr - 1]; - points2[7][i] = copiedPoints[1][i + ncr - 1]; - pointsH2[7][i] = copiedPoints[1][i + ncr - 1]; - pointsH2[6][i] = copiedPoints[2][i + ncr - 1]; - pointsS2[7][i] = copiedPoints[1][i + ncr - 1]; - pointsS2[6][i] = copiedPoints[3][i + ncr - 1]; - pointsV2[7][i] = copiedPoints[1][i + ncr - 1]; - pointsV2[6][i] = copiedPoints[4][i + ncr - 1]; - } - } - } - - // critical point - system.setTemperature(system.getTC()); - system.setPressure(system.getPC()); - - points2[0][ncr] = system.getTC(); - points2[1][ncr] = system.getPC(); - if (ncr2 > 2) { - points2[2][0] = system.getTC(); - points2[3][0] = system.getPC(); - } - } catch (Exception e2) { - // double nef = 0.; - // logger.error("error", e2); - } -/* - try { - if (outputToFile) { - // update this - String name1 = new String(); - name1 = fileName + "Dew.nc"; - file1 = new neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); - file1.setOutputFileName(name1); - file1.setXvalues(points2[2], "temp", "sec"); - file1.setYvalues(points2[3], "pres", "meter"); - file1.createFile(); - - String name2 = new String(); - name2 = fileName + "Bub.nc"; - file2 = new neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); - file2.setOutputFileName(name2); - file2.setXvalues(points2[0], "temp", "sec"); - file2.setYvalues(points2[1], "pres", "meter"); - file2.createFile(); - } - } catch (Exception e3) { - // double nef = 0.; - logger.error("error", e3); - } - */ - } catch (Exception e4) { - // double nef = 0.; - logger.error("error", e4); + testOps.dewPointTemperatureFlash(); + } + } catch (Exception ex) { + // ex.toString(); } - } + double tempNy = system.getTemperature(); - /** - *

- * calcHydrateLine. - *

- */ - public void calcHydrateLine() { - ThermodynamicOperations opsHyd = new ThermodynamicOperations(system); - try { - opsHyd.hydrateEquilibriumLine(10.0, 300.0); - } catch (Exception e) { - logger.error("error", e); + if (!Double.isNaN(tempNy)) { + temp = tempNy; + break; } + } - // double[][] hydData = opsHyd.getData(); - } + // this part sets the first envelope point into the system + system.setBeta(phaseFraction); + system.setPressure(pres); + system.setTemperature(temp); - /** {@inheritDoc} */ - @Override - public void displayResult() { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(1); - nf.applyPattern("####.#"); - if (bubblePointFirst) { - // bubble point side - navn[0] = "bubble point 2"; - navn[1] = "dew point 2"; - navn[2] = "dew point 1"; - navn[3] = "bubble point 1"; - } else { - // dew point side and does not crash - navn[0] = "dew point 2"; - navn[1] = "bubble point 2"; - navn[2] = "dew point 1"; - navn[3] = "bubbl point 1"; - } + sysNewtonRhapsonPhaseEnvelope nonLinSolver = + new sysNewtonRhapsonPhaseEnvelope(system, 2, system.getPhase(0).getNumberOfComponents()); + startPres = system.getPressure(); + nonLinSolver.setu(); - double TC = system.getTC(); - double PC = system.getPC(); - - String title = "PT-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title3 = "PH-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title4 = "Density-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title5 = "PS-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - - graph2b graph3 = new graph2b(pointsH2, navn, title3, "Enthalpy [kJ/kg]", "Pressure [bara]"); - graph3.setVisible(true); - // graph3.saveFigure(new String(util.util.FileSystemSettings.tempDir + - // "NeqSimTempFig4.png")); - - graph2b graph4 = new graph2b(pointsV2, navn, title4, "Density [kg/m^3]", "Pressure [bara]"); - graph4.setVisible(true); - // graph4.saveFigure(util.util.FileSystemSettings.tempDir + - // "NeqSimTempFig2.png"); - - graph2b graph5 = - new graph2b(pointsS2, navn, title5, "Entropy [kJ/kg*K]", "Pressure [bara]"); - graph5.setVisible(true); - // graph5.saveFigure(util.util.FileSystemSettings.tempDir + - // "NeqSimTempFig3.png"); - - graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); - graph2.setVisible(true); - // graph2.saveFigure(util.util.FileSystemSettings.tempDir + - // "NeqSimTempFig1.png"); - - /* - * JDialog dialog = new JDialog(); Container dialogContentPane = dialog.getContentPane(); - * dialogContentPane.setLayout(new FlowLayout()); JFreeChartPanel chartPanel = - * graph4.getChartPanel(); dialogContentPane.add(chartPanel); dialog.show(); - */ - } + for (np = 1; np < 9980; np++) { + try { + // solves the np point of the envelope + nonLinSolver.calcInc(np); + nonLinSolver.solve(np); + + // this catches the exceptions + // double TT = system.getPhase(0).getTemperature(); + // double PP = system.getPhase(0).getPressure(); + } catch (Exception e0) { + // the envelope crushed. + // this part keeps the old values + // restarts the envelope from the other side + // and then stops + + if (restart) { + restart = false; + // keep values + Tmin = points[0][np - 2]; + npfirst = np - 1; + ncrfirst = nonLinSolver.getNpCrit(); + if (ncrfirst == 0) { + ncrfirst = npfirst; + } + Tcfirst = system.getTC(); + Pcfirst = system.getPC(); + + cricondenBarfirst = cricondenBar; + cricondenBarXfirst = cricondenBarX; + cricondenBarYfirst = cricondenBarY; + + cricondenThermfirst = cricondenTherm; + cricondenThermXfirst = cricondenThermX; + cricondenThermYfirst = cricondenThermY; + + hascopiedPoints = true; + copiedPoints = new double[5][np - 1]; + for (int i = 0; i < np - 1; i++) { + copiedPoints[0][i] = points[0][i]; + copiedPoints[1][i] = points[1][i]; + copiedPoints[2][i] = pointsH[i]; + copiedPoints[3][i] = pointsS[i]; + copiedPoints[4][i] = pointsV[i]; + } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(1); - nf.applyPattern("####.#"); - if (bubblePointFirst) { - // bubble point side - navn[0] = "bubble point 2"; - navn[1] = "dew point 2"; - navn[2] = "dew point 1"; - navn[3] = "bubble point 1"; - } else { - // dew point side and does not crash - navn[0] = "dew point"; - navn[1] = "bubble point"; - navn[2] = "dew point"; - navn[3] = "bubbl point"; + // new settings + phaseFraction = 1.0 - phaseFraction; + if (bubblePointFirst) { + bubblePointFirst = false; + } else { + bubblePointFirst = true; + } + run(); + /**/ + break; + } else { + np = np - 1; + break; + } } - double TC = system.getTC(); - double PC = system.getPC(); - - String title = "PT-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - - graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); - return graph2.getChart(); - } - - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return points2; - } - - /** {@inheritDoc} */ - @Override - public void addData(String name, double[][] data) { - double[][] localPoints = new double[points2.length + data.length][]; - navn[localPoints.length / 2 - 1] = name; - System.arraycopy(points2, 0, localPoints, 0, points2.length); - System.arraycopy(data, 0, localPoints, points2.length, data.length); - points2 = localPoints; - } - - /** {@inheritDoc} */ - @Override - public double[] get(String name) { - if (name.equals("dewT")) { - return points2[0]; - } - if (name.equals("dewP")) { - return points2[1]; - } - if (name.equals("bubT")) { - return points2[2]; - } - if (name.equals("bubP")) { - return points2[3]; - } - // return points2[3]; - if (name.equals("dewT2")) { - return points2[4]; + // check for critical point + double Kvallc = system.getPhase(0).getComponent(nonLinSolver.lc).getx() + / system.getPhase(1).getComponent(nonLinSolver.lc).getx(); + double Kvalhc = system.getPhase(0).getComponent(nonLinSolver.hc).getx() + / system.getPhase(1).getComponent(nonLinSolver.hc).getx(); + // double densV = system.getPhase(0).getDensity(); + // double densL = system.getPhase(1).getDensity(); + + // System.out.println(np + " " + system.getTemperature() + " " + + // system.getPressure() + " " + densV + " " + densL ); + + if (!nonLinSolver.etterCP) { + if (Kvallc < 1.05 && Kvalhc > 0.95) { + // close to the critical point + // invert phase types and find the CP Temp and Press + + // System.out.println("critical point"); + nonLinSolver.npCrit = np; + system.invertPhaseTypes(); + nonLinSolver.etterCP = true; + // the critical point is found from interpolation polynomials based on K=1 of + // the most or least volatile component + nonLinSolver.calcCrit(); + } } - if (name.equals("dewP2")) { - return points2[5]; + if (nonLinSolver.calcCP) { + nonLinSolver.calcCP = false; + nonLinSolver.npCrit = np; + nonLinSolver.calcCrit(); } - if (name.equals("bubT2")) { - return points2[6]; - } - if (name.equals("bubP2")) { - return points2[7]; - } - if (name.equals("dewH")) { - return pointsH2[2]; - } - if (name.equals("dewDens")) { - return pointsV2[2]; - } - if (name.equals("dewS")) { - return pointsS2[2]; + + // stores critondenbar and cricondentherm + // HERE the new cricoT and crico P values will be called instead + if (system.getTemperature() > cricondenTherm[0]) { + cricondenTherm[1] = system.getPressure(); + cricondenTherm[0] = system.getTemperature(); + for (int ii = 0; ii < nonLinSolver.numberOfComponents; ii++) { + cricondenThermX[ii] = system.getPhase(1).getComponent(ii).getx(); + cricondenThermY[ii] = system.getPhase(0).getComponent(ii).getx(); + } + } else { + nonLinSolver.ettercricoT = true; } - if (name.equals("bubH")) { - return pointsH2[0]; + if (system.getPressure() > cricondenBar[1]) { + cricondenBar[0] = system.getTemperature(); + cricondenBar[1] = system.getPressure(); + for (int ii = 0; ii < nonLinSolver.numberOfComponents; ii++) { + cricondenBarX[ii] = system.getPhase(1).getComponent(ii).getx(); + cricondenBarY[ii] = system.getPhase(0).getComponent(ii).getx(); + } } - if (name.equals("bubDens")) { - return pointsV2[0]; + + // Exit criteria + if ((system.getPressure() < minPressure && nonLinSolver.ettercricoT)) { + break; } - if (name.equals("bubS")) { - return pointsS2[0]; + if (system.getPressure() > maxPressure) { + break; } - if (name.equals("cricondentherm")) { - return cricondenTherm; + if (system.getTemperature() > Tmin && !restart) { + break; } - if (name.equals("cricondenthermX")) { - return cricondenThermX; + + // Keeps the calculated points + points[0][np - 1] = system.getTemperature(); + points[1][np - 1] = system.getPressure(); + pointsH[np - 1] = + system.getPhase(1).getEnthalpy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + pointsV[np - 1] = system.getPhase(1).getDensity(); + pointsS[np - 1] = + system.getPhase(1).getEntropy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + } + + try { + int ncr = nonLinSolver.getNpCrit(); + if (ncr == 0) { + ncr = np; } - if (name.equals("cricondenthermY")) { - return cricondenThermY; + int ncr2 = np - ncr; + if (hascopiedPoints) { + // if it enters here the envelope crashed and restarted + // reallocate to have all values + points2 = new double[8][]; + pointsH2 = new double[8][]; + pointsS2 = new double[8][]; + pointsV2 = new double[8][]; } - if (name.equals("cricondenbar")) { - return cricondenBar; + + // points2 are plotted + points2[0] = new double[ncr + 1]; + points2[1] = new double[ncr + 1]; + pointsH2[0] = new double[ncr + 1]; + pointsH2[1] = new double[ncr + 1]; + pointsS2[0] = new double[ncr + 1]; + pointsS2[1] = new double[ncr + 1]; + pointsV2[0] = new double[ncr + 1]; + pointsV2[1] = new double[ncr + 1]; + + if (ncr2 > 2) { + points2[2] = new double[ncr2 - 2]; + points2[3] = new double[ncr2 - 2]; + pointsH2[2] = new double[ncr2 - 2]; + pointsH2[3] = new double[ncr2 - 2]; + pointsS2[2] = new double[ncr2 - 2]; + pointsS2[3] = new double[ncr2 - 2]; + pointsV2[2] = new double[ncr2 - 2]; + pointsV2[3] = new double[ncr2 - 2]; + } else { + points2[2] = new double[0]; + points2[3] = new double[0]; + pointsH2[2] = new double[0]; + pointsH2[3] = new double[0]; + pointsS2[2] = new double[0]; + pointsS2[3] = new double[0]; + pointsV2[2] = new double[0]; + pointsV2[3] = new double[0]; } - if (name.equals("cricondenbarX")) { - return cricondenBarX; + + for (int i = 0; i < ncr; i++) { + // second branch up to critical point + points2[0][i] = points[0][i]; + points2[1][i] = points[1][i]; + pointsH2[1][i] = points[1][i]; + pointsH2[0][i] = pointsH[i]; + pointsS2[1][i] = points[1][i]; + pointsS2[0][i] = pointsS[i]; + pointsV2[1][i] = points[1][i]; + pointsV2[0][i] = pointsV[i]; } - if (name.equals("cricondenbarY")) { - return cricondenBarY; + if (ncr2 > 2) { + for (int i = 1; i < (ncr2 - 2); i++) { + // second branch after the critical point + points2[2][i] = points[0][i + ncr - 1]; + points2[3][i] = points[1][i + ncr - 1]; + pointsH2[3][i] = points[1][i + ncr - 1]; + pointsH2[2][i] = pointsH[i + ncr - 1]; + pointsS2[3][i] = points[1][i + ncr - 1]; + pointsS2[2][i] = pointsS[i + ncr - 1]; + pointsV2[3][i] = points[1][i + ncr - 1]; + pointsV2[2][i] = pointsV[i + ncr - 1]; + } } - if (name.equals("criticalPoint1")) { - return new double[] {system.getTC(), system.getPC()}; + + if (hascopiedPoints) { + if (ncrfirst > npfirst) { + ncr = copiedPoints[0].length - 1; + ncr2 = npfirst - ncr; + npfirst = npfirst - 1; + } else { + ncr = ncrfirst; + ncr2 = npfirst - ncr; + } + + points2[4] = new double[ncr + 1]; + points2[5] = new double[ncr + 1]; + pointsH2[4] = new double[ncr + 1]; + pointsH2[5] = new double[ncr + 1]; + pointsS2[4] = new double[ncr + 1]; + pointsS2[5] = new double[ncr + 1]; + pointsV2[4] = new double[ncr + 1]; + pointsV2[5] = new double[ncr + 1]; + + if (ncr2 > 2) { + points2[6] = new double[ncr2 - 2]; + points2[7] = new double[ncr2 - 2]; + pointsH2[6] = new double[ncr2 - 2]; + pointsH2[7] = new double[ncr2 - 2]; + pointsS2[6] = new double[ncr2 - 2]; + pointsS2[7] = new double[ncr2 - 2]; + pointsV2[6] = new double[ncr2 - 2]; + pointsV2[7] = new double[ncr2 - 2]; + } else { + points2[6] = new double[0]; + points2[7] = new double[0]; + pointsH2[6] = new double[0]; + pointsH2[7] = new double[0]; + pointsS2[6] = new double[0]; + pointsS2[7] = new double[0]; + pointsV2[6] = new double[0]; + pointsV2[7] = new double[0]; + } + + for (int i = 0; i < ncr; i++) { + // first branch up to the critical point + points2[4][i] = copiedPoints[0][i]; + points2[5][i] = copiedPoints[1][i]; + pointsH2[5][i] = copiedPoints[1][i]; + pointsH2[4][i] = copiedPoints[2][i]; + pointsS2[5][i] = copiedPoints[1][i]; + pointsS2[4][i] = copiedPoints[3][i]; + pointsV2[5][i] = copiedPoints[1][i]; + pointsV2[4][i] = copiedPoints[4][i]; + } + if (ncr2 > 2) { + for (int i = 1; i < (ncr2 - 2); i++) { + // first branch after the critical point + points2[6][i] = copiedPoints[0][i + ncr - 1]; + points2[7][i] = copiedPoints[1][i + ncr - 1]; + pointsH2[7][i] = copiedPoints[1][i + ncr - 1]; + pointsH2[6][i] = copiedPoints[2][i + ncr - 1]; + pointsS2[7][i] = copiedPoints[1][i + ncr - 1]; + pointsS2[6][i] = copiedPoints[3][i + ncr - 1]; + pointsV2[7][i] = copiedPoints[1][i + ncr - 1]; + pointsV2[6][i] = copiedPoints[4][i + ncr - 1]; + } + } } - if (name.equals("criticalPoint2")) { - return new double[] {0, 0}; - } else { - return null; + + // critical point + system.setTemperature(system.getTC()); + system.setPressure(system.getPC()); + + points2[0][ncr] = system.getTC(); + points2[1][ncr] = system.getPC(); + if (ncr2 > 2) { + points2[2][0] = system.getTC(); + points2[3][0] = system.getPC(); } + } catch (Exception e2) { + } + /* + * try { if (outputToFile) { // update this String name1 = new String(); name1 = fileName + + * "Dew.nc"; file1 = new + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); + * file1.setOutputFileName(name1); file1.setXvalues(points2[2], "temp", "sec"); + * file1.setYvalues(points2[3], "pres", "meter"); file1.createFile(); + * + * String name2 = new String(); name2 = fileName + "Bub.nc"; file2 = new + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); + * file2.setOutputFileName(name2); file2.setXvalues(points2[0], "temp", "sec"); + * file2.setYvalues(points2[1], "pres", "meter"); file2.createFile(); } } catch (Exception e3) + * { logger.error(ex.getMessage(), e3); } + */ + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + throw ex; } - - /** {@inheritDoc} */ - /* - @Override - public void createNetCdfFile(String name) { - fileName = name; + } + + /** + *

+ * calcHydrateLine. + *

+ */ + public void calcHydrateLine() { + ThermodynamicOperations opsHyd = new ThermodynamicOperations(system); + try { + opsHyd.hydrateEquilibriumLine(10.0, 300.0); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - */ - /** - * Getter for property bubblePointFirst. - * - * @return Value of property bubblePointFirst. - */ - public boolean isBubblePointFirst() { - return bubblePointFirst; + // double[][] hydData = opsHyd.getData(); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(1); + nf.applyPattern("####.#"); + if (bubblePointFirst) { + // bubble point side + navn[0] = "bubble point 2"; + navn[1] = "dew point 2"; + navn[2] = "dew point 1"; + navn[3] = "bubble point 1"; + } else { + // dew point side and does not crash + navn[0] = "dew point 2"; + navn[1] = "bubble point 2"; + navn[2] = "dew point 1"; + navn[3] = "bubbl point 1"; } - /** - * Setter for property bubblePointFirst. - * - * @param bubblePointFirst New value of property bubblePointFirst. + double TC = system.getTC(); + double PC = system.getPC(); + + String title = + "PT-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + String title3 = + "PH-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + String title4 = "Density-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + + String.valueOf(nf.format(PC)); + String title5 = + "PS-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + + graph2b graph3 = new graph2b(pointsH2, navn, title3, "Enthalpy [kJ/kg]", "Pressure [bara]"); + graph3.setVisible(true); + // graph3.saveFigure(new String(util.util.FileSystemSettings.tempDir + + // "NeqSimTempFig4.png")); + + graph2b graph4 = new graph2b(pointsV2, navn, title4, "Density [kg/m^3]", "Pressure [bara]"); + graph4.setVisible(true); + // graph4.saveFigure(util.util.FileSystemSettings.tempDir + + // "NeqSimTempFig2.png"); + + graph2b graph5 = new graph2b(pointsS2, navn, title5, "Entropy [kJ/kg*K]", "Pressure [bara]"); + graph5.setVisible(true); + // graph5.saveFigure(util.util.FileSystemSettings.tempDir + + // "NeqSimTempFig3.png"); + + graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); + graph2.setVisible(true); + // graph2.saveFigure(util.util.FileSystemSettings.tempDir + + // "NeqSimTempFig1.png"); + + /* + * JDialog dialog = new JDialog(); Container dialogContentPane = dialog.getContentPane(); + * dialogContentPane.setLayout(new FlowLayout()); JFreeChartPanel chartPanel = + * graph4.getChartPanel(); dialogContentPane.add(chartPanel); dialog.show(); */ - public void setBubblePointFirst(boolean bubblePointFirst) { - this.bubblePointFirst = bubblePointFirst; + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(1); + nf.applyPattern("####.#"); + if (bubblePointFirst) { + // bubble point side + navn[0] = "bubble point 2"; + navn[1] = "dew point 2"; + navn[2] = "dew point 1"; + navn[3] = "bubble point 1"; + } else { + // dew point side and does not crash + navn[0] = "dew point"; + navn[1] = "bubble point"; + navn[2] = "dew point"; + navn[3] = "bubbl point"; } - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return null; + double TC = system.getTC(); + double PC = system.getPC(); + + String title = + "PT-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + + graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); + return graph2.getChart(); + } + + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return points2; + } + + /** {@inheritDoc} */ + @Override + public void addData(String name, double[][] data) { + double[][] localPoints = new double[points2.length + data.length][]; + navn[localPoints.length / 2 - 1] = name; + System.arraycopy(points2, 0, localPoints, 0, points2.length); + System.arraycopy(data, 0, localPoints, points2.length, data.length); + points2 = localPoints; + } + + /** {@inheritDoc} */ + @Override + public double[] get(String name) { + if (name.equals("dewT")) { + return points2[0]; + } + if (name.equals("dewP")) { + return points2[1]; + } + if (name.equals("bubT")) { + return points2[2]; + } + if (name.equals("bubP")) { + return points2[3]; + } + // return points2[3]; + if (name.equals("dewT2")) { + return points2[4]; + } + if (name.equals("dewP2")) { + return points2[5]; + } + if (name.equals("bubT2")) { + return points2[6]; + } + if (name.equals("bubP2")) { + return points2[7]; + } + if (name.equals("dewH")) { + return pointsH2[2]; + } + if (name.equals("dewDens")) { + return pointsV2[2]; + } + if (name.equals("dewS")) { + return pointsS2[2]; + } + if (name.equals("bubH")) { + return pointsH2[0]; + } + if (name.equals("bubDens")) { + return pointsV2[0]; + } + if (name.equals("bubS")) { + return pointsS2[0]; + } + if (name.equals("cricondentherm")) { + return cricondenTherm; + } + if (name.equals("cricondenthermX")) { + return cricondenThermX; + } + if (name.equals("cricondenthermY")) { + return cricondenThermY; + } + if (name.equals("cricondenbar")) { + return cricondenBar; + } + if (name.equals("cricondenbarX")) { + return cricondenBarX; + } + if (name.equals("cricondenbarY")) { + return cricondenBarY; + } + if (name.equals("criticalPoint1")) { + return new double[] {system.getTC(), system.getPC()}; + } + if (name.equals("criticalPoint2")) { + return new double[] {0, 0}; + } else { + return null; + } + } + + /** + * Getter for property bubblePointFirst. + * + * @return Value of property bubblePointFirst. + */ + public boolean isBubblePointFirst() { + return bubblePointFirst; + } + + /** + * Setter for property bubblePointFirst. + * + * @param bubblePointFirst New value of property bubblePointFirst. + */ + public void setBubblePointFirst(boolean bubblePointFirst) { + this.bubblePointFirst = bubblePointFirst; + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } + + /** + *

+ * tempKWilson. + *

+ * + * @param beta a double + * @param P a double + * @return a double + */ + public double tempKWilson(double beta, double P) { + // Initiallizes the temperature of a saturation point for given pressure + // based on K values of Wilson + // see Michelsen book thermodynamics & computational aspects + + double initTc = 0.; + double initPc = 0.; + double initAc = 0.; + double Tstart = 0.; + double Tstartold = 0.; + double initT = 0; + double dinitT = 0; + int numberOfComponents = system.getPhase(0).getNumberOfComponents(); + int lc = 0; + int hc = 0; + + double[] Kwil = new double[numberOfComponents]; + + double min = 100000.; + double max = 0.; + + for (int i = 0; i < numberOfComponents; i++) { + if (system.getPhase(0).getComponents()[i].getTC() > max) { + max = system.getPhase(0).getComponents()[i].getTC(); + hc = i; + } + if (system.getPhase(0).getComponents()[i].getTC() < min) { + min = system.getPhase(0).getComponents()[i].getTC(); + lc = i; + } } - /** - *

- * tempKWilson. - *

- * - * @param beta a double - * @param P a double - * @return a double - */ - public double tempKWilson(double beta, double P) { - // Initiallizes the temperature of a saturation point for given pressure - // based on K values of Wilson - // see Michelsen book thermodynamics & computational aspects - - double initTc = 0.; - double initPc = 0.; - double initAc = 0.; - double Tstart = 0.; - double Tstartold = 0.; - double initT = 0; - double dinitT = 0; - int numberOfComponents = system.getPhase(0).getNumberOfComponents(); - int lc = 0; - int hc = 0; - - double[] Kwil = new double[numberOfComponents]; - - double min = 100000.; - double max = 0.; - - for (int i = 0; i < numberOfComponents; i++) { - if (system.getPhase(0).getComponents()[i].getTC() > max) { - max = system.getPhase(0).getComponents()[i].getTC(); - hc = i; - } - if (system.getPhase(0).getComponents()[i].getTC() < min) { - min = system.getPhase(0).getComponents()[i].getTC(); - lc = i; - } + try { + if (beta <= 0.5) { + // closer to bubble point get the lightest component + + initTc = system.getPhase(0).getComponents()[lc].getTC(); + initPc = system.getPhase(0).getComponents()[lc].getPC(); + initAc = system.getPhase(0).getComponents()[lc].getAcentricFactor(); + } else if (beta > 0.5) { + // closer to dew point get the heaviest component + initTc = system.getPhase(0).getComponents()[hc].getTC(); + initPc = system.getPhase(0).getComponents()[hc].getPC(); + initAc = system.getPhase(0).getComponents()[hc].getAcentricFactor(); + } + + // initial T based on the lightest/heaviest component + Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); + + // solve for Tstart with Newton + for (int i = 0; i < 1000; i++) { + initT = 0.; + dinitT = 0.; + for (int j = 0; j < numberOfComponents; j++) { + Kwil[j] = system.getPhase(0).getComponents()[j].getPC() / P + * Math.exp(5.373 * (1. + system.getPhase(0).getComponents()[j].getAcentricFactor()) + * (1. - system.getPhase(0).getComponents()[j].getTC() / Tstart)); + // system.getPhases()[0].getComponents()[j].setK(Kwil[j]); } - try { - if (beta <= 0.5) { - initTc = system.getPhase(0).getComponents()[lc].getTC(); // closer to bubble point - // get the lightest - // component - initPc = system.getPhase(0).getComponents()[lc].getPC(); - initAc = system.getPhase(0).getComponents()[lc].getAcentricFactor(); - } else if (beta > 0.5) { - initTc = system.getPhase(0).getComponents()[hc].getTC(); // closer to dew point get - // the heaviest - // component - initPc = system.getPhase(0).getComponents()[hc].getPC(); - initAc = system.getPhase(0).getComponents()[hc].getAcentricFactor(); - } + for (int j = 0; j < numberOfComponents; j++) { + if (beta < 0.5) { + initT = initT + system.getPhase(0).getComponents()[j].getz() * Kwil[j]; + dinitT = dinitT + system.getPhase(0).getComponents()[j].getz() * Kwil[j] * 5.373 + * (1 + system.getPhase(0).getComponents()[j].getAcentricFactor()) + * system.getPhase(0).getComponents()[j].getTC() / (Tstart * Tstart); + } else { + initT = initT + system.getPhase(0).getComponents()[j].getz() / Kwil[j]; + dinitT = dinitT - system.getPhase(0).getComponents()[j].getz() / Kwil[j] * 5.373 + * (1 + system.getPhase(0).getComponents()[j].getAcentricFactor()) + * system.getPhase(0).getComponents()[j].getTC() / (Tstart * Tstart); + } + } - // initial T based on the lightest/heaviest component - Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); - - // solve for Tstart with Newton - for (int i = 0; i < 1000; i++) { - initT = 0.; - dinitT = 0.; - for (int j = 0; j < numberOfComponents; j++) { - Kwil[j] = system.getPhase(0).getComponents()[j].getPC() / P * Math.exp(5.373 - * (1. + system.getPhase(0).getComponents()[j].getAcentricFactor()) - * (1. - system.getPhase(0).getComponents()[j].getTC() / Tstart)); - // system.getPhases()[0].getComponents()[j].setK(Kwil[j]); - } - - for (int j = 0; j < numberOfComponents; j++) { - if (beta < 0.5) { - initT = initT + system.getPhase(0).getComponents()[j].getz() * Kwil[j]; - dinitT = dinitT + system.getPhase(0).getComponents()[j].getz() * Kwil[j] - * 5.373 - * (1 + system.getPhase(0).getComponents()[j].getAcentricFactor()) - * system.getPhase(0).getComponents()[j].getTC() / (Tstart * Tstart); - } else { - initT = initT + system.getPhase(0).getComponents()[j].getz() / Kwil[j]; - dinitT = dinitT - system.getPhase(0).getComponents()[j].getz() / Kwil[j] - * 5.373 - * (1 + system.getPhase(0).getComponents()[j].getAcentricFactor()) - * system.getPhase(0).getComponents()[j].getTC() / (Tstart * Tstart); - } - } - - initT = initT - 1.; - if (Math.abs(initT / dinitT) > 0.1 * Tstart) { - Tstart = Tstart - 0.001 * initT / dinitT; - } else { - Tstart = Tstart - initT / dinitT; - } - if (Math.abs(Tstart - Tstartold) < 1.e-5) { - return Tstart; - } - Tstartold = Tstart; - } - } catch (Exception e) { - Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); + initT = initT - 1.; + if (Math.abs(initT / dinitT) > 0.1 * Tstart) { + Tstart = Tstart - 0.001 * initT / dinitT; + } else { + Tstart = Tstart - initT / dinitT; } - if (Double.isNaN(Tstart) || Double.isInfinite(Tstart)) { - Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); + if (Math.abs(Tstart - Tstartold) < 1.e-5) { + return Tstart; } - return Tstart; + Tstartold = Tstart; + } + } catch (Exception ex) { + Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); + } + if (Double.isNaN(Tstart) || Double.isInfinite(Tstart)) { + Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); } + return Tstart; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelope1.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelope1.java index fc49ed29aa..72e6bbe0b2 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelope1.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelope1.java @@ -21,461 +21,448 @@ * @version $Id: $Id */ public class pTphaseEnvelope1 extends BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(pTphaseEnvelope1.class); - - graph2b graph2 = null; - SystemInterface system; - boolean bubblePointFirst = true; - double[] cricondenTherm = new double[3]; - double[] cricondenBar = new double[3]; - double phaseFraction = 1e-10; - int i, j = 0, nummer = 0, iterations = 0, maxNumberOfIterations = 10000; - double gibbsEnergy = 0, gibbsEnergyOld = 0; - double Kold, deviation = 0, g0 = 0, g1 = 0, lowPres = 1.0; - double lnOldOldK[], lnK[]; - boolean outputToFile = false; - double lnOldK[]; - double oldDeltalnK[], deltalnK[]; - double tm[] = {1, 1}; - double beta = 1e-5; - int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase - JProgressBar monitor; - JFrame mainFrame; - String fileName = "c:/file"; - JPanel mainPanel; - double temp = 0, pres = 0, startPres = 0; - double[][] points = new double[2][]; - double[] pointsH; - double[][] pointsH2 = new double[4][]; - double[] pointsV; - double[][] pointsV2 = new double[4][]; - double[] pointsS; - double[][] pointsS2 = new double[4][]; - public double[][] points2 = new double[4][]; - double[][] points3 = new double[8][]; - boolean moreLines = false; - int np = 0; - // points[2] = new double[1000]; - int speceq = 0; - - /** - *

- * Constructor for pTphaseEnvelope1. - *

- */ - public pTphaseEnvelope1() {} - - /** - *

- * Constructor for pTphaseEnvelope1. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param name a {@link java.lang.String} object - * @param phaseFraction a double - * @param lowPres a double - * @param bubfirst a boolean - */ - public pTphaseEnvelope1(SystemInterface system, String name, double phaseFraction, - double lowPres, boolean bubfirst) { - this.bubblePointFirst = bubfirst; - if (name != null) { - outputToFile = true; - fileName = name; - } - this.system = system; - this.phaseFraction = phaseFraction; - lnOldOldK = new double[system.getPhase(0).getNumberOfComponents()]; - lnOldK = new double[system.getPhase(0).getNumberOfComponents()]; - lnK = new double[system.getPhase(0).getNumberOfComponents()]; - this.lowPres = lowPres; - oldDeltalnK = new double[system.getPhase(0).getNumberOfComponents()]; - deltalnK = new double[system.getPhase(0).getNumberOfComponents()]; - mainFrame = new JFrame("Progress Bar"); - mainPanel = new JPanel(); - mainPanel.setSize(200, 100); - mainFrame.getContentPane().setLayout(new FlowLayout()); - mainPanel.setLayout(new FlowLayout()); - mainFrame.setSize(200, 100); - monitor = new JProgressBar(0, 00); - monitor.setSize(200, 100); - monitor.setStringPainted(true); - mainPanel.add(monitor); - mainFrame.getContentPane().add(mainPanel); - mainFrame.setVisible(true); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(pTphaseEnvelope1.class); + + graph2b graph2 = null; + SystemInterface system; + boolean bubblePointFirst = true; + double[] cricondenTherm = new double[3]; + double[] cricondenBar = new double[3]; + double phaseFraction = 1e-10; + int i; + int j = 0; + int nummer = 0; + int iterations = 0; + int maxNumberOfIterations = 10000; + double gibbsEnergy = 0; + double gibbsEnergyOld = 0; + double Kold; + double deviation = 0; + double g0 = 0; + double g1 = 0; + double lowPres = 1.0; + double[] lnOldOldK; + double[] lnK; + boolean outputToFile = false; + double[] lnOldK; + double[] oldDeltalnK; + double[] deltalnK; + double[] tm = {1, 1}; + double beta = 1e-5; + int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase + JProgressBar monitor; + JFrame mainFrame; + String fileName = "c:/file"; + JPanel mainPanel; + double temp = 0; + double pres = 0; + double startPres = 0; + double[][] points = new double[2][]; + double[] pointsH; + double[][] pointsH2 = new double[4][]; + double[] pointsV; + double[][] pointsV2 = new double[4][]; + double[] pointsS; + double[][] pointsS2 = new double[4][]; + public double[][] points2 = new double[4][]; + double[][] points3 = new double[8][]; + boolean moreLines = false; + int np = 0; + // points[2] = new double[1000]; + int speceq = 0; + + /** + *

+ * Constructor for pTphaseEnvelope1. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param name a {@link java.lang.String} object + * @param phaseFraction a double + * @param lowPres a double + * @param bubfirst a boolean + */ + public pTphaseEnvelope1(SystemInterface system, String name, double phaseFraction, double lowPres, + boolean bubfirst) { + this.bubblePointFirst = bubfirst; + if (name != null) { + outputToFile = true; + fileName = name; } - - /** {@inheritDoc} */ - @Override - public void run() { - try { - points[0] = new double[10000]; - points[1] = new double[10000]; - - pointsH = new double[10000]; - pointsV = new double[10000]; - pointsS = new double[10000]; - system.init(0); - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { - if (system.getPhase(0).getComponents()[i] - .getTC() < system.getPhase(0).getComponents()[i].getTC()) { - speceq = system.getPhase(0).getComponent(i).getComponentNumber(); - } - } - } - - pres = lowPres; - temp = system.getPhase(0).getComponent(speceq).getAntoineVaporTemperature(pres); - // temp = system.getTemperature(); - system.setPressure(pres); - - system.setBeta(1e-10); - - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - - system.init(0); - for (int i = 0; i < 1000; i++) { - temp += i * 4; - system.setTemperature(temp); - try { - if (bubblePointFirst) { - testOps.bubblePointTemperatureFlash(); - } else { - testOps.dewPointTemperatureFlash(); - } - } catch (Exception e) { - e.toString(); - } - double tempNy = system.getTemperature(); - - if (!Double.isNaN(tempNy)) { - temp = tempNy; - break; - } - } - - system.setPressure(pres); - system.setTemperature(temp); - logger.info("temp: " + system.getTemperature()); - - system.setBeta(phaseFraction); - - sysNewtonRhapsonPhaseEnvelope nonLinSolver = new sysNewtonRhapsonPhaseEnvelope(system, - 2, system.getPhase(0).getNumberOfComponents()); - nonLinSolver.solve(1); - - startPres = system.getPressure(); - - for (np = 1; np < 9500; np++) { - if (np % 5 == 0) { - monitor.setValue(np); - monitor.setString("Calculated points: " + np); - } - - nonLinSolver.calcInc(np); - nonLinSolver.solve(np); - - if (system.getTemperature() > cricondenTherm[0]) { - cricondenTherm[1] = system.getPressure(); - cricondenTherm[0] = system.getTemperature(); - } - if (system.getPressure() > cricondenBar[1]) { - cricondenBar[0] = system.getTemperature(); - cricondenBar[1] = system.getPressure(); - } - - if (Double.isNaN(system.getTemperature()) || Double.isNaN(system.getTemperature()) - || system.getPressure() < startPres) { - points[0][np - 1] = points[0][np - 3]; - points[1][np - 1] = points[1][np - 3]; - pointsH[np - 1] = pointsH[np - 3]; - pointsV[np - 1] = pointsV[np - 3]; - pointsS[np - 1] = pointsS[np - 3]; - - // logger.info("avbryter" + np); - break; - } - // logger.info("Ideal pres: " + getPressure()); - // logger.info("temp: " + system.getTemperature()); - points[0][np - 1] = system.getTemperature(); - points[1][np - 1] = system.getPressure(); - pointsH[np - 1] = system.getPhase(1).getEnthalpy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - pointsV[np - 1] = system.getPhase(1).getDensity(); - pointsS[np - 1] = system.getPhase(1).getEntropy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - } - - int ncr = nonLinSolver.getNpCrit(); - int ncr2 = np - ncr; - - logger.info("ncr: " + ncr + " ncr2 . " + ncr2); - points2[0] = new double[ncr + 1]; - points2[1] = new double[ncr + 1]; - pointsH2[0] = new double[ncr + 1]; - pointsH2[1] = new double[ncr + 1]; - pointsS2[0] = new double[ncr + 1]; - pointsS2[1] = new double[ncr + 1]; - pointsV2[0] = new double[ncr + 1]; - pointsV2[1] = new double[ncr + 1]; - if (ncr2 > 2) { - points2[2] = new double[ncr2 - 2]; - points2[3] = new double[ncr2 - 2]; - pointsH2[2] = new double[ncr2 - 2]; - pointsH2[3] = new double[ncr2 - 2]; - pointsV2[2] = new double[ncr2 - 2]; - pointsV2[3] = new double[ncr2 - 2]; - pointsS2[2] = new double[ncr2 - 2]; - pointsS2[3] = new double[ncr2 - 2]; - } else { - points2[2] = new double[0]; - points2[3] = new double[0]; - pointsH2[2] = new double[0]; - pointsH2[3] = new double[0]; - pointsV2[2] = new double[0]; - pointsV2[3] = new double[0]; - pointsS2[2] = new double[0]; - pointsS2[3] = new double[0]; - } - - for (int i = 0; i < ncr; i++) { - points2[0][i] = points[0][i]; - points2[1][i] = points[1][i]; - - pointsH2[1][i] = points[1][i]; - pointsH2[0][i] = pointsH[i]; - - pointsS2[1][i] = points[1][i]; - pointsS2[0][i] = pointsS[i]; - - pointsV2[1][i] = points[1][i]; - pointsV2[0][i] = pointsV[i]; - } - - system.setTemperature(system.getTC() + 0.001); - system.setPressure(system.getPC() + 0.001); - system.init(3); - - points2[0][ncr] = system.getTC(); - points2[1][ncr] = system.getPC(); - - pointsH2[1][ncr] = system.getPC(); - pointsH2[0][ncr] = - system.getPhase(1).getEnthalpy() / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - - pointsS2[1][ncr] = system.getPC(); - pointsS2[0][ncr] = - system.getPhase(1).getEntropy() / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - - pointsV2[1][ncr] = system.getPC(); - pointsV2[0][ncr] = system.getPhase(1).getDensity(); - - if (ncr2 > 2) { - points2[2][0] = system.getTC(); - points2[3][0] = system.getPC(); - pointsH2[3][0] = system.getPC(); - pointsH2[2][0] = system.getPhase(1).getEnthalpy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - pointsS2[3][0] = system.getPC(); - pointsS2[2][0] = system.getPhase(1).getEntropy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - pointsV2[3][0] = system.getPC(); - pointsV2[2][0] = system.getPhase(1).getDensity(); - - for (int i = 1; i < (ncr2 - 2); i++) { - points2[2][i] = points[0][i + ncr - 1]; - points2[3][i] = points[1][i + ncr - 1]; - - pointsH2[3][i] = points[1][i + ncr - 1]; - pointsH2[2][i] = pointsH[i + ncr - 1]; - - pointsS2[3][i] = points[1][i + ncr - 1]; - pointsS2[2][i] = pointsS[i + ncr - 1]; - - pointsV2[3][i] = points[1][i + ncr - 1]; - pointsV2[2][i] = pointsV[i + ncr - 1]; - } - } - // monitor.close(); - mainFrame.setVisible(false); -/* - if (outputToFile) { - String name1 = new String(); - name1 = fileName + "Dew.nc"; - file1 = new neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); - file1.setOutputFileName(name1); - file1.setXvalues(points2[2], "temp", "sec"); - file1.setYvalues(points2[3], "pres", "meter"); - file1.createFile(); - - String name2 = new String(); - name2 = fileName + "Bub.nc"; - file2 = new neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); - file2.setOutputFileName(name2); - file2.setXvalues(points2[0], "temp", "sec"); - file2.setYvalues(points2[1], "pres", "meter"); - file2.createFile(); - } - */ - } catch (Exception e) { - logger.error("error", e); + this.system = system; + this.phaseFraction = phaseFraction; + lnOldOldK = new double[system.getPhase(0).getNumberOfComponents()]; + lnOldK = new double[system.getPhase(0).getNumberOfComponents()]; + lnK = new double[system.getPhase(0).getNumberOfComponents()]; + this.lowPres = lowPres; + oldDeltalnK = new double[system.getPhase(0).getNumberOfComponents()]; + deltalnK = new double[system.getPhase(0).getNumberOfComponents()]; + mainFrame = new JFrame("Progress Bar"); + mainPanel = new JPanel(); + mainPanel.setSize(200, 100); + mainFrame.getContentPane().setLayout(new FlowLayout()); + mainPanel.setLayout(new FlowLayout()); + mainFrame.setSize(200, 100); + monitor = new JProgressBar(0, 00); + monitor.setSize(200, 100); + monitor.setStringPainted(true); + mainPanel.add(monitor); + mainFrame.getContentPane().add(mainPanel); + mainFrame.setVisible(true); + } + + /** {@inheritDoc} */ + @Override + public void run() { + try { + points[0] = new double[10000]; + points[1] = new double[10000]; + + pointsH = new double[10000]; + pointsV = new double[10000]; + pointsS = new double[10000]; + system.init(0); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { + if (system.getPhase(0).getComponents()[i].getTC() < system.getPhase(0).getComponents()[i] + .getTC()) { + speceq = system.getPhase(0).getComponent(i).getComponentNumber(); + } } - } + } - /** {@inheritDoc} */ - @Override - public void displayResult() { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(1); - nf.applyPattern("####.#"); - - double TC = system.getTC(); - double PC = system.getPC(); - logger.info("tc : " + TC + " PC : " + PC); - String[] navn = {"bubble point", "dew point", "bubble point", "dew point"}; - String title = "PT-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title3 = "PH-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title4 = "Density-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title5 = "PS-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - - // logger.info("start flash"); - // logger.info("Tferdig.."); - - graph2b graph3 = new graph2b(pointsH2, navn, title3, "Enthalpy [kJ/kg]", "Pressure [bara]"); - graph3.setVisible(true); - graph3.saveFigure((neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig4.png")); - - graph2b graph4 = new graph2b(pointsV2, navn, title4, "Density [kg/m^3]", "Pressure [bara]"); - graph4.setVisible(true); - graph4.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig2.png"); - - graph2b graph5 = - new graph2b(pointsS2, navn, title5, "Entropy [kJ/kg*K]", "Pressure [bara]"); - graph5.setVisible(true); - graph5.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig3.png"); - - graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); - graph2.setVisible(true); - graph2.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig1.png"); - - /* - * JDialog dialog = new JDialog(); Container dialogContentPane = dialog.getContentPane(); - * dialogContentPane.setLayout(new FlowLayout()); JFreeChartPanel chartPanel = - * graph4.getChartPanel(); dialogContentPane.add(chartPanel); dialog.show(); - */ - } + pres = lowPres; + temp = system.getPhase(0).getComponent(speceq).getAntoineVaporTemperature(pres); + // temp = system.getTemperature(); + system.setPressure(pres); - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(1); - nf.applyPattern("####.#"); - - double TC = system.getTC(); - double PC = system.getPC(); - logger.info("tc : " + TC + " PC : " + PC); - String[] navn = {"bubble point", "dew point", "bubble point", "dew point"}; - String title = "PT-graph. TC=" + String.valueOf(nf.format(TC)) + "K, PC=" - + String.valueOf(nf.format(PC) + " bara"); - graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); - return graph2.getChart(); - } + system.setBeta(1e-10); - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return points2; - } + ThermodynamicOperations testOps = new ThermodynamicOperations(system); - /** {@inheritDoc} */ - @Override - public double[] get(String name) { - if (name.equals("bubT")) { - return points2[0]; - } - if (name.equals("bubP")) { - return points2[1]; - } - if (name.equals("dewT")) { - return points2[2]; - } - if (name.equals("dewP")) { - return points2[3]; - } - if (name.equals("dewH")) { - return pointsH2[2]; - } - if (name.equals("dewDens")) { - return pointsV2[2]; + system.init(0); + for (int i = 0; i < 1000; i++) { + temp += i * 4; + system.setTemperature(temp); + try { + if (bubblePointFirst) { + testOps.bubblePointTemperatureFlash(); + } else { + testOps.dewPointTemperatureFlash(); + } + } catch (Exception ex) { + ex.toString(); } - if (name.equals("dewS")) { - return pointsS2[2]; + double tempNy = system.getTemperature(); + + if (!Double.isNaN(tempNy)) { + temp = tempNy; + break; } - if (name.equals("bubH")) { - return pointsH2[0]; + } + + system.setPressure(pres); + system.setTemperature(temp); + logger.info("temp: " + system.getTemperature()); + + system.setBeta(phaseFraction); + + sysNewtonRhapsonPhaseEnvelope nonLinSolver = + new sysNewtonRhapsonPhaseEnvelope(system, 2, system.getPhase(0).getNumberOfComponents()); + nonLinSolver.solve(1); + + startPres = system.getPressure(); + + for (np = 1; np < 9500; np++) { + if (np % 5 == 0) { + monitor.setValue(np); + monitor.setString("Calculated points: " + np); } - if (name.equals("bubDens")) { - return pointsV2[0]; + + nonLinSolver.calcInc(np); + nonLinSolver.solve(np); + + if (system.getTemperature() > cricondenTherm[0]) { + cricondenTherm[1] = system.getPressure(); + cricondenTherm[0] = system.getTemperature(); } - if (name.equals("bubS")) { - return pointsS2[0]; + if (system.getPressure() > cricondenBar[1]) { + cricondenBar[0] = system.getTemperature(); + cricondenBar[1] = system.getPressure(); } - if (name.equals("cricondentherm")) { - return cricondenTherm; + + if (Double.isNaN(system.getTemperature()) || Double.isNaN(system.getTemperature()) + || system.getPressure() < startPres) { + points[0][np - 1] = points[0][np - 3]; + points[1][np - 1] = points[1][np - 3]; + pointsH[np - 1] = pointsH[np - 3]; + pointsV[np - 1] = pointsV[np - 3]; + pointsS[np - 1] = pointsS[np - 3]; + + // logger.info("avbryter" + np); + break; } - if (name.equals("cricondenbar")) { - return cricondenBar; - } else { - return null; + // logger.info("Ideal pres: " + getPressure()); + // logger.info("temp: " + system.getTemperature()); + points[0][np - 1] = system.getTemperature(); + points[1][np - 1] = system.getPressure(); + pointsH[np - 1] = + system.getPhase(1).getEnthalpy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + pointsV[np - 1] = system.getPhase(1).getDensity(); + pointsS[np - 1] = + system.getPhase(1).getEntropy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + } + + int ncr = nonLinSolver.getNpCrit(); + int ncr2 = np - ncr; + + logger.info("ncr: " + ncr + " ncr2 . " + ncr2); + points2[0] = new double[ncr + 1]; + points2[1] = new double[ncr + 1]; + pointsH2[0] = new double[ncr + 1]; + pointsH2[1] = new double[ncr + 1]; + pointsS2[0] = new double[ncr + 1]; + pointsS2[1] = new double[ncr + 1]; + pointsV2[0] = new double[ncr + 1]; + pointsV2[1] = new double[ncr + 1]; + if (ncr2 > 2) { + points2[2] = new double[ncr2 - 2]; + points2[3] = new double[ncr2 - 2]; + pointsH2[2] = new double[ncr2 - 2]; + pointsH2[3] = new double[ncr2 - 2]; + pointsV2[2] = new double[ncr2 - 2]; + pointsV2[3] = new double[ncr2 - 2]; + pointsS2[2] = new double[ncr2 - 2]; + pointsS2[3] = new double[ncr2 - 2]; + } else { + points2[2] = new double[0]; + points2[3] = new double[0]; + pointsH2[2] = new double[0]; + pointsH2[3] = new double[0]; + pointsV2[2] = new double[0]; + pointsV2[3] = new double[0]; + pointsS2[2] = new double[0]; + pointsS2[3] = new double[0]; + } + + for (int i = 0; i < ncr; i++) { + points2[0][i] = points[0][i]; + points2[1][i] = points[1][i]; + + pointsH2[1][i] = points[1][i]; + pointsH2[0][i] = pointsH[i]; + + pointsS2[1][i] = points[1][i]; + pointsS2[0][i] = pointsS[i]; + + pointsV2[1][i] = points[1][i]; + pointsV2[0][i] = pointsV[i]; + } + + system.setTemperature(system.getTC() + 0.001); + system.setPressure(system.getPC() + 0.001); + system.init(3); + + points2[0][ncr] = system.getTC(); + points2[1][ncr] = system.getPC(); + + pointsH2[1][ncr] = system.getPC(); + pointsH2[0][ncr] = system.getPhase(1).getEnthalpy() + / system.getPhase(1).getNumberOfMolesInPhase() / system.getPhase(1).getMolarMass() / 1e3; + + pointsS2[1][ncr] = system.getPC(); + pointsS2[0][ncr] = system.getPhase(1).getEntropy() + / system.getPhase(1).getNumberOfMolesInPhase() / system.getPhase(1).getMolarMass() / 1e3; + + pointsV2[1][ncr] = system.getPC(); + pointsV2[0][ncr] = system.getPhase(1).getDensity(); + + if (ncr2 > 2) { + points2[2][0] = system.getTC(); + points2[3][0] = system.getPC(); + pointsH2[3][0] = system.getPC(); + pointsH2[2][0] = + system.getPhase(1).getEnthalpy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + pointsS2[3][0] = system.getPC(); + pointsS2[2][0] = + system.getPhase(1).getEntropy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + pointsV2[3][0] = system.getPC(); + pointsV2[2][0] = system.getPhase(1).getDensity(); + + for (int i = 1; i < (ncr2 - 2); i++) { + points2[2][i] = points[0][i + ncr - 1]; + points2[3][i] = points[1][i + ncr - 1]; + + pointsH2[3][i] = points[1][i + ncr - 1]; + pointsH2[2][i] = pointsH[i + ncr - 1]; + + pointsS2[3][i] = points[1][i + ncr - 1]; + pointsS2[2][i] = pointsS[i + ncr - 1]; + + pointsV2[3][i] = points[1][i + ncr - 1]; + pointsV2[2][i] = pointsV[i + ncr - 1]; } + } + // monitor.close(); + mainFrame.setVisible(false); + /* + * if (outputToFile) { String name1 = new String(); name1 = fileName + "Dew.nc"; file1 = new + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); + * file1.setOutputFileName(name1); file1.setXvalues(points2[2], "temp", "sec"); + * file1.setYvalues(points2[3], "pres", "meter"); file1.createFile(); + * + * String name2 = new String(); name2 = fileName + "Bub.nc"; file2 = new + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); + * file2.setOutputFileName(name2); file2.setXvalues(points2[0], "temp", "sec"); + * file2.setYvalues(points2[1], "pres", "meter"); file2.createFile(); } + */ + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(1); + nf.applyPattern("####.#"); + + double TC = system.getTC(); + double PC = system.getPC(); + logger.info("tc : " + TC + " PC : " + PC); + String[] navn = {"bubble point", "dew point", "bubble point", "dew point"}; + String title = + "PT-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + String title3 = + "PH-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + String title4 = "Density-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + + String.valueOf(nf.format(PC)); + String title5 = + "PS-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + + // logger.info("start flash"); + // logger.info("Tferdig.."); + + graph2b graph3 = new graph2b(pointsH2, navn, title3, "Enthalpy [kJ/kg]", "Pressure [bara]"); + graph3.setVisible(true); + graph3.saveFigure((neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig4.png")); + + graph2b graph4 = new graph2b(pointsV2, navn, title4, "Density [kg/m^3]", "Pressure [bara]"); + graph4.setVisible(true); + graph4.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig2.png"); + + graph2b graph5 = new graph2b(pointsS2, navn, title5, "Entropy [kJ/kg*K]", "Pressure [bara]"); + graph5.setVisible(true); + graph5.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig3.png"); + + graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); + graph2.setVisible(true); + graph2.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig1.png"); - /** {@inheritDoc} */ /* - @Override - public void createNetCdfFile(String name) { - fileName = name; - } - */ - - /** - * Getter for property bubblePointFirst. - * - * @return Value of property bubblePointFirst. + * JDialog dialog = new JDialog(); Container dialogContentPane = dialog.getContentPane(); + * dialogContentPane.setLayout(new FlowLayout()); JFreeChartPanel chartPanel = + * graph4.getChartPanel(); dialogContentPane.add(chartPanel); dialog.show(); */ - public boolean isBubblePointFirst() { - return bubblePointFirst; + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(1); + nf.applyPattern("####.#"); + + double TC = system.getTC(); + double PC = system.getPC(); + logger.info("tc : " + TC + " PC : " + PC); + String[] navn = {"bubble point", "dew point", "bubble point", "dew point"}; + String title = "PT-graph. TC=" + String.valueOf(nf.format(TC)) + "K, PC=" + + String.valueOf(nf.format(PC) + " bara"); + graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); + return graph2.getChart(); + } + + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return points2; + } + + /** {@inheritDoc} */ + @Override + public double[] get(String name) { + if (name.equals("bubT")) { + return points2[0]; } - - /** - * Setter for property bubblePointFirst. - * - * @param bubblePointFirst New value of property bubblePointFirst. - */ - public void setBubblePointFirst(boolean bubblePointFirst) { - this.bubblePointFirst = bubblePointFirst; + if (name.equals("bubP")) { + return points2[1]; } - - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return null; + if (name.equals("dewT")) { + return points2[2]; + } + if (name.equals("dewP")) { + return points2[3]; + } + if (name.equals("dewH")) { + return pointsH2[2]; + } + if (name.equals("dewDens")) { + return pointsV2[2]; + } + if (name.equals("dewS")) { + return pointsS2[2]; + } + if (name.equals("bubH")) { + return pointsH2[0]; + } + if (name.equals("bubDens")) { + return pointsV2[0]; + } + if (name.equals("bubS")) { + return pointsS2[0]; + } + if (name.equals("cricondentherm")) { + return cricondenTherm; + } + if (name.equals("cricondenbar")) { + return cricondenBar; + } else { + return null; } + } + + /** + * Getter for property bubblePointFirst. + * + * @return Value of property bubblePointFirst. + */ + public boolean isBubblePointFirst() { + return bubblePointFirst; + } + + /** + * Setter for property bubblePointFirst. + * + * @param bubblePointFirst New value of property bubblePointFirst. + */ + public void setBubblePointFirst(boolean bubblePointFirst) { + this.bubblePointFirst = bubblePointFirst; + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeMay.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeMay.java index 1724eb7e68..cf3b526e2a 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeMay.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeMay.java @@ -20,778 +20,755 @@ * @version $Id: $Id */ public class pTphaseEnvelopeMay extends BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(pTphaseEnvelopeMay.class); - - double maxPressure = 1000.0; - double minPressure = 1.0; - double[][] copiedPoints = null; - graph2b graph2 = null; - SystemInterface system; - boolean bubblePointFirst = true; - boolean hascopiedPoints = false; - double[] cricondenTherm = new double[3]; - double[] cricondenBar = new double[3]; - double phaseFraction = 1e-10; - int i, j = 0, nummer = 0, iterations = 0, maxNumberOfIterations = 10000; - double gibbsEnergy = 0, gibbsEnergyOld = 0; - double Kold, deviation = 0, g0 = 0, g1 = 0, lowPres = 1.0; - double lnOldOldK[], lnK[]; - boolean outputToFile = false; - double lnOldK[]; - double lnKwil[]; - double oldDeltalnK[], deltalnK[]; - double tm[] = {1, 1}; - double beta = 1e-5; - int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase - JProgressBar monitor; - JFrame mainFrame; - String fileName = "c:/file"; - JPanel mainPanel; - double temp = 0, pres = 0, startPres = 0; - double[][] points = new double[2][]; - double[] pointsH; - double[][] pointsH2 = new double[4][]; - double[] pointsV; - double[][] pointsV2 = new double[4][]; - double[] pointsS; - double[][] pointsS2 = new double[4][]; - public double[][] points2 = new double[4][]; - double[][] points3 = new double[8][]; - boolean moreLines = false; - boolean restart = true; - int np = 0; - // points[2] = new double[1000]; - int speceq = 0; - String[] navn = {"bubble point", "dew point", "bubble point", "dew point", "dew points"}; - int npfirst; - int ncrfirst; - double Tcfirst; - double Pcfirst; - double Tmin = 0.0; - - /** - *

- * Constructor for pTphaseEnvelopeMay. - *

- */ - public pTphaseEnvelopeMay() {} - - /** - *

- * Constructor for pTphaseEnvelopeMay. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param name a {@link java.lang.String} object - * @param phaseFraction a double - * @param lowPres a double - * @param bubfirst a boolean - */ - public pTphaseEnvelopeMay(SystemInterface system, String name, double phaseFraction, - double lowPres, boolean bubfirst) { - this.bubblePointFirst = bubfirst; - if (name != null) { - outputToFile = true; - fileName = name; - } - this.system = system; - this.phaseFraction = phaseFraction; - lnOldOldK = new double[system.getPhase(0).getNumberOfComponents()]; - lnOldK = new double[system.getPhase(0).getNumberOfComponents()]; - lnK = new double[system.getPhase(0).getNumberOfComponents()]; - this.lowPres = lowPres; - oldDeltalnK = new double[system.getPhase(0).getNumberOfComponents()]; - deltalnK = new double[system.getPhase(0).getNumberOfComponents()]; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(pTphaseEnvelopeMay.class); + + double maxPressure = 1000.0; + double minPressure = 1.0; + double[][] copiedPoints = null; + graph2b graph2 = null; + SystemInterface system; + boolean bubblePointFirst = true; + boolean hascopiedPoints = false; + double[] cricondenTherm = new double[3]; + double[] cricondenBar = new double[3]; + double phaseFraction = 1e-10; + int i; + int j = 0; + int nummer = 0; + int iterations = 0; + int maxNumberOfIterations = 10000; + double gibbsEnergy = 0; + double gibbsEnergyOld = 0; + double Kold; + double deviation = 0; + double g0 = 0; + double g1 = 0; + double lowPres = 1.0; + double lnOldOldK[]; + double lnK[]; + boolean outputToFile = false; + double[] lnOldK; + double[] lnKwil; + double oldDeltalnK[]; + double deltalnK[]; + double[] tm = {1, 1}; + double beta = 1e-5; + int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase + JProgressBar monitor; + JFrame mainFrame; + String fileName = "c:/file"; + JPanel mainPanel; + double temp = 0; + double pres = 0; + double startPres = 0; + double[][] points = new double[2][]; + double[] pointsH; + double[][] pointsH2 = new double[4][]; + double[] pointsV; + double[][] pointsV2 = new double[4][]; + double[] pointsS; + double[][] pointsS2 = new double[4][]; + public double[][] points2 = new double[4][]; + double[][] points3 = new double[8][]; + boolean moreLines = false; + boolean restart = true; + int np = 0; + // points[2] = new double[1000]; + int speceq = 0; + String[] navn = {"bubble point", "dew point", "bubble point", "dew point", "dew points"}; + int npfirst; + int ncrfirst; + double Tcfirst; + double Pcfirst; + double Tmin = 0.0; + + /** + *

+ * Constructor for pTphaseEnvelopeMay. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param name a {@link java.lang.String} object + * @param phaseFraction a double + * @param lowPres a double + * @param bubfirst a boolean + */ + public pTphaseEnvelopeMay(SystemInterface system, String name, double phaseFraction, + double lowPres, boolean bubfirst) { + this.bubblePointFirst = bubfirst; + if (name != null) { + outputToFile = true; + fileName = name; } - - /** {@inheritDoc} */ - @Override - public void run() { - speceq = 0; // initialization + this.system = system; + this.phaseFraction = phaseFraction; + lnOldOldK = new double[system.getPhase(0).getNumberOfComponents()]; + lnOldK = new double[system.getPhase(0).getNumberOfComponents()]; + lnK = new double[system.getPhase(0).getNumberOfComponents()]; + this.lowPres = lowPres; + oldDeltalnK = new double[system.getPhase(0).getNumberOfComponents()]; + deltalnK = new double[system.getPhase(0).getNumberOfComponents()]; + } + + /** {@inheritDoc} */ + @Override + public void run() { + speceq = 0; // initialization + try { + points[0] = new double[10000]; // declarations for points + points[1] = new double[10000]; // declarations for points + + pointsH = new double[10000]; // declarations for points + pointsV = new double[10000]; // declarations for points + pointsS = new double[10000]; // declarations for points + system.init(0); // initialization + + // selects the most volatile and least volatile component based on Tc values + // afterwards it uses them to define the speceq of the first point + // based on the desired first point, dew/bubble + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { + if (bubblePointFirst && system.getPhase(0).getComponents()[speceq] + .getTC() > system.getPhase(0).getComponents()[i].getTC()) { + speceq = system.getPhase(0).getComponent(i).getComponentNumber(); + } + if (!bubblePointFirst && system.getPhase(0).getComponents()[speceq] + .getTC() < system.getPhase(0).getComponents()[i].getTC()) { + speceq = system.getPhase(0).getComponent(i).getComponentNumber(); + } + } + } + + // initialized the first step of the phase envelope + // pressure is already defined + // temperature is the Antoine vapor pressure of the selected component + // (least or most volatile. + pres = lowPres; + // temp = + // system.getPhase(0).getComponent(speceq).getAntoineVaporTemperature(pres); + temp = tempKWilson(phaseFraction, pres); + + if (Double.isNaN(temp)) { + temp = system.getPhase(0).getComponent(speceq).getTC() - 20.0; + } + system.setTemperature(temp); + system.setPressure(pres); + + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + + // this part converges the first phase envelope point. + // if the phase fraction is more than 0.5 it does a dew point initialization + // else a bubble point initialization + + for (int i = 0; i < 5; i++) { try { - points[0] = new double[10000]; // declarations for points - points[1] = new double[10000]; // declarations for points - - pointsH = new double[10000]; // declarations for points - pointsV = new double[10000]; // declarations for points - pointsS = new double[10000]; // declarations for points - system.init(0); // initialization - - // selects the most volatile and least volatile component based on Tc values - // afterwards it uses them to define the speceq of the first point - // based on the desired first point, dew/bubble - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { - if (bubblePointFirst == true && system.getPhase(0).getComponents()[speceq] - .getTC() > system.getPhase(0).getComponents()[i].getTC()) { - speceq = system.getPhase(0).getComponent(i).getComponentNumber(); - } - if (bubblePointFirst == false && system.getPhase(0).getComponents()[speceq] - .getTC() < system.getPhase(0).getComponents()[i].getTC()) { - speceq = system.getPhase(0).getComponent(i).getComponentNumber(); - } - } - } - - // initialized the first step of the phase envelope - // pressure is already defined - // temperature is the Antoine vapor pressure of the selected component - // (least or most volatile. - pres = lowPres; - // temp = - // system.getPhase(0).getComponent(speceq).getAntoineVaporTemperature(pres); - temp = tempKWilson(phaseFraction, pres); - - if (Double.isNaN(temp)) { - temp = system.getPhase(0).getComponent(speceq).getTC() - 20.0; - } + if (phaseFraction < 0.5) { + temp += i * 2; system.setTemperature(temp); - system.setPressure(pres); - - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - - // this part converges the first phase envelope point. - // if the phase fraction is more than 0.5 it does a dew point initialization - // else a bubble point initialization - - for (int i = 0; i < 5; i++) { - try { - if (phaseFraction < 0.5) { - temp += i * 2; - system.setTemperature(temp); - testOps.bubblePointTemperatureFlash(); - } else { - temp += i * 2; - system.setTemperature(temp); - testOps.dewPointTemperatureFlash(); - } - } catch (Exception e) { - e.toString(); - } - double tempNy = system.getTemperature(); - - if (!Double.isNaN(tempNy)) { - temp = tempNy; - break; - } - } - - // this part sets the first envelope point into the system - system.setBeta(phaseFraction); - system.setPressure(pres); + testOps.bubblePointTemperatureFlash(); + } else { + temp += i * 2; system.setTemperature(temp); + testOps.dewPointTemperatureFlash(); + } + } catch (Exception ex) { + ex.toString(); + } + double tempNy = system.getTemperature(); - sysNewtonRhapsonPhaseEnvelope nonLinSolver = new sysNewtonRhapsonPhaseEnvelope(system, - 2, system.getPhase(0).getNumberOfComponents()); - startPres = system.getPressure(); - nonLinSolver.setu(); - for (np = 1; np < 9980; np++) { - try { - // solves the np point of the envelope - nonLinSolver.calcInc(np); - nonLinSolver.solve(np); - - // double TT = system.getPhase(0).getTemperature(); - // double PP = system.getPhase(0).getPressure(); - } catch (Exception e0) { - // the envelope crushed. - // this part keeps the old values - // restarts the envelope from the other side - // and then stops - - if (restart) { - restart = false; - // keep values - Tmin = points[0][np - 2]; - npfirst = np - 1; - ncrfirst = nonLinSolver.getNpCrit(); - if (ncrfirst == 0) { - ncrfirst = npfirst; - } - Tcfirst = system.getTC(); - Pcfirst = system.getPC(); - hascopiedPoints = true; - copiedPoints = new double[5][np - 1]; - for (int i = 0; i < np - 1; i++) { - copiedPoints[0][i] = points[0][i]; - copiedPoints[1][i] = points[1][i]; - copiedPoints[2][i] = pointsH[i]; - copiedPoints[3][i] = pointsS[i]; - copiedPoints[4][i] = pointsV[i]; - } - // new settings - phaseFraction = 1.0 - phaseFraction; - if (bubblePointFirst) { - bubblePointFirst = false; - } else { - bubblePointFirst = true; - } - run(); - break; - } else { - np = np - 1; - break; - } - } - - // check for critical point - double Kvallc = system.getPhase(0).getComponent(nonLinSolver.lc).getx() - / system.getPhase(1).getComponent(nonLinSolver.lc).getx(); - double Kvalhc = system.getPhase(0).getComponent(nonLinSolver.hc).getx() - / system.getPhase(1).getComponent(nonLinSolver.hc).getx(); - // double densV = system.getPhase(0).getDensity(); - // double densL = system.getPhase(1).getDensity(); - - // System.out.println(np + " " + system.getTemperature() + " " + - // system.getPressure() + " " + densV + " " + densL ); - - if ((nonLinSolver.etterCP == false)) { - if (Kvallc < 1.05 && Kvalhc > 0.95) { - // close to the critical point - // invert phase types and find the CP Temp and Press - - // System.out.println("critical point"); - nonLinSolver.npCrit = np; - system.invertPhaseTypes(); - nonLinSolver.etterCP = true; - // the critical point is found from interpolation plynimials based on K=1 of - // the - // most or least volatile component - nonLinSolver.calcCrit(); - } - } - if (nonLinSolver.calcCP) { - nonLinSolver.calcCP = false; - nonLinSolver.npCrit = np; - nonLinSolver.calcCrit(); - } - - // stores cricondenbar and cricondentherm - // HERE the new cricoT and crico P values will be called instead - if (system.getTemperature() > cricondenTherm[0]) { - cricondenTherm[1] = system.getPressure(); - cricondenTherm[0] = system.getTemperature(); - } else { - nonLinSolver.ettercricoT = true; - } - if (system.getPressure() > cricondenBar[1]) { - cricondenBar[0] = system.getTemperature(); - cricondenBar[1] = system.getPressure(); - } - - // Exit criteria - if ((system.getPressure() < minPressure && nonLinSolver.ettercricoT)) { - break; - } - if (system.getPressure() > maxPressure) { - break; - } - if (system.getTemperature() > Tmin && !restart) { - break; - } - - // Keeps the calculated points - points[0][np - 1] = system.getTemperature(); - points[1][np - 1] = system.getPressure(); - pointsH[np - 1] = system.getPhase(1).getEnthalpy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - pointsV[np - 1] = system.getPhase(1).getDensity(); - pointsS[np - 1] = system.getPhase(1).getEntropy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; + if (!Double.isNaN(tempNy)) { + temp = tempNy; + break; + } + } + + // this part sets the first envelope point into the system + system.setBeta(phaseFraction); + system.setPressure(pres); + system.setTemperature(temp); + + sysNewtonRhapsonPhaseEnvelope nonLinSolver = + new sysNewtonRhapsonPhaseEnvelope(system, 2, system.getPhase(0).getNumberOfComponents()); + startPres = system.getPressure(); + nonLinSolver.setu(); + for (np = 1; np < 9980; np++) { + try { + // solves the np point of the envelope + nonLinSolver.calcInc(np); + nonLinSolver.solve(np); + + // double TT = system.getPhase(0).getTemperature(); + // double PP = system.getPhase(0).getPressure(); + } catch (Exception e0) { + // the envelope crushed. + // this part keeps the old values + // restarts the envelope from the other side + // and then stops + + if (restart) { + restart = false; + // keep values + Tmin = points[0][np - 2]; + npfirst = np - 1; + ncrfirst = nonLinSolver.getNpCrit(); + if (ncrfirst == 0) { + ncrfirst = npfirst; } - - try { - int ncr = nonLinSolver.getNpCrit(); - if (ncr == 0) { - ncr = np; - } - int ncr2 = np - ncr; - if (hascopiedPoints) { - // if it enters here the envelope crashed and restarted - // reallocate to have all values - points2 = new double[8][]; - pointsH2 = new double[8][]; - pointsS2 = new double[8][]; - pointsV2 = new double[8][]; - } - - // points2 are plotted - points2[0] = new double[ncr + 1]; - points2[1] = new double[ncr + 1]; - pointsH2[0] = new double[ncr + 1]; - pointsH2[1] = new double[ncr + 1]; - pointsS2[0] = new double[ncr + 1]; - pointsS2[1] = new double[ncr + 1]; - pointsV2[0] = new double[ncr + 1]; - pointsV2[1] = new double[ncr + 1]; - - if (ncr2 > 2) { - points2[2] = new double[ncr2 - 2]; - points2[3] = new double[ncr2 - 2]; - pointsH2[2] = new double[ncr2 - 2]; - pointsH2[3] = new double[ncr2 - 2]; - pointsS2[2] = new double[ncr2 - 2]; - pointsS2[3] = new double[ncr2 - 2]; - pointsV2[2] = new double[ncr2 - 2]; - pointsV2[3] = new double[ncr2 - 2]; - } else { - points2[2] = new double[0]; - points2[3] = new double[0]; - pointsH2[2] = new double[0]; - pointsH2[3] = new double[0]; - pointsS2[2] = new double[0]; - pointsS2[3] = new double[0]; - pointsV2[2] = new double[0]; - pointsV2[3] = new double[0]; - } - - for (int i = 0; i < ncr; i++) { - // second branch up to critical point - points2[0][i] = points[0][i]; - points2[1][i] = points[1][i]; - pointsH2[1][i] = points[1][i]; - pointsH2[0][i] = pointsH[i]; - pointsS2[1][i] = points[1][i]; - pointsS2[0][i] = pointsS[i]; - pointsV2[1][i] = points[1][i]; - pointsV2[0][i] = pointsV[i]; - } - if (ncr2 > 2) { - for (int i = 1; i < (ncr2 - 2); i++) { - // second branch after the critical point - points2[2][i] = points[0][i + ncr - 1]; - points2[3][i] = points[1][i + ncr - 1]; - pointsH2[3][i] = points[1][i + ncr - 1]; - pointsH2[2][i] = pointsH[i + ncr - 1]; - pointsS2[3][i] = points[1][i + ncr - 1]; - pointsS2[2][i] = pointsS[i + ncr - 1]; - pointsV2[3][i] = points[1][i + ncr - 1]; - pointsV2[2][i] = pointsV[i + ncr - 1]; - } - } - - if (hascopiedPoints) { - if (ncrfirst > npfirst) { - ncr = copiedPoints[0].length - 1; - ncr2 = npfirst - ncr; - npfirst = npfirst - 1; - } else { - ncr = ncrfirst; - ncr2 = npfirst - ncr; - } - - points2[4] = new double[ncr + 1]; - points2[5] = new double[ncr + 1]; - pointsH2[4] = new double[ncr + 1]; - pointsH2[5] = new double[ncr + 1]; - pointsS2[4] = new double[ncr + 1]; - pointsS2[5] = new double[ncr + 1]; - pointsV2[4] = new double[ncr + 1]; - pointsV2[5] = new double[ncr + 1]; - - if (ncr2 > 2) { - points2[6] = new double[ncr2 - 2]; - points2[7] = new double[ncr2 - 2]; - pointsH2[6] = new double[ncr2 - 2]; - pointsH2[7] = new double[ncr2 - 2]; - pointsS2[6] = new double[ncr2 - 2]; - pointsS2[7] = new double[ncr2 - 2]; - pointsV2[6] = new double[ncr2 - 2]; - pointsV2[7] = new double[ncr2 - 2]; - } else { - points2[6] = new double[0]; - points2[7] = new double[0]; - pointsH2[6] = new double[0]; - pointsH2[7] = new double[0]; - pointsS2[6] = new double[0]; - pointsS2[7] = new double[0]; - pointsV2[6] = new double[0]; - pointsV2[7] = new double[0]; - } - - for (int i = 0; i < ncr; i++) { - // first branch up to the critical point - points2[4][i] = copiedPoints[0][i]; - points2[5][i] = copiedPoints[1][i]; - pointsH2[5][i] = copiedPoints[1][i]; - pointsH2[4][i] = copiedPoints[2][i]; - pointsS2[5][i] = copiedPoints[1][i]; - pointsS2[4][i] = copiedPoints[3][i]; - pointsV2[5][i] = copiedPoints[1][i]; - pointsV2[4][i] = copiedPoints[4][i]; - } - if (ncr2 > 2) { - for (int i = 1; i < (ncr2 - 2); i++) { - // first branch after the critical point - points2[6][i] = copiedPoints[0][i + ncr - 1]; - points2[7][i] = copiedPoints[1][i + ncr - 1]; - pointsH2[7][i] = copiedPoints[1][i + ncr - 1]; - pointsH2[6][i] = copiedPoints[2][i + ncr - 1]; - pointsS2[7][i] = copiedPoints[1][i + ncr - 1]; - pointsS2[6][i] = copiedPoints[3][i + ncr - 1]; - pointsV2[7][i] = copiedPoints[1][i + ncr - 1]; - pointsV2[6][i] = copiedPoints[4][i + ncr - 1]; - } - } - } - - // critical point - system.setTemperature(system.getTC()); - system.setPressure(system.getPC()); - - system.init(3); - - points2[0][ncr] = system.getTC(); - points2[1][ncr] = system.getPC(); - - if (ncr2 > 2) { - points2[2][0] = system.getTC(); - points2[3][0] = system.getPC(); - } - } catch (Exception e2) { - // double nef = 0.; - logger.error("error", e2); + Tcfirst = system.getTC(); + Pcfirst = system.getPC(); + hascopiedPoints = true; + copiedPoints = new double[5][np - 1]; + for (int i = 0; i < np - 1; i++) { + copiedPoints[0][i] = points[0][i]; + copiedPoints[1][i] = points[1][i]; + copiedPoints[2][i] = pointsH[i]; + copiedPoints[3][i] = pointsS[i]; + copiedPoints[4][i] = pointsV[i]; } -/* - try { - if (outputToFile) { - // update this - String name1 = new String(); - name1 = fileName + "Dew.nc"; - file1 = new neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); - file1.setOutputFileName(name1); - file1.setXvalues(points2[2], "temp", "sec"); - file1.setYvalues(points2[3], "pres", "meter"); - file1.createFile(); - - String name2 = new String(); - name2 = fileName + "Bub.nc"; - file2 = new neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); - file2.setOutputFileName(name2); - file2.setXvalues(points2[0], "temp", "sec"); - file2.setYvalues(points2[1], "pres", "meter"); - file2.createFile(); - } - } catch (Exception e3) { - // double nef = 0.; - logger.error("error", e3); + // new settings + phaseFraction = 1.0 - phaseFraction; + if (bubblePointFirst) { + bubblePointFirst = false; + } else { + bubblePointFirst = true; } - */ - } catch (Exception e4) { - // double nef = 0.; - logger.error("error", e4); + run(); + break; + } else { + np = np - 1; + break; + } } - } - /** - *

- * calcHydrateLine. - *

- */ - public void calcHydrateLine() { - ThermodynamicOperations opsHyd = new ThermodynamicOperations(system); - try { - opsHyd.hydrateEquilibriumLine(10.0, 300.0); - } catch (Exception e) { - logger.error("error", e); + // check for critical point + double Kvallc = system.getPhase(0).getComponent(nonLinSolver.lc).getx() + / system.getPhase(1).getComponent(nonLinSolver.lc).getx(); + double Kvalhc = system.getPhase(0).getComponent(nonLinSolver.hc).getx() + / system.getPhase(1).getComponent(nonLinSolver.hc).getx(); + // double densV = system.getPhase(0).getDensity(); + // double densL = system.getPhase(1).getDensity(); + + // System.out.println(np + " " + system.getTemperature() + " " + + // system.getPressure() + " " + densV + " " + densL ); + + if (!nonLinSolver.etterCP) { + if (Kvallc < 1.05 && Kvalhc > 0.95) { + // close to the critical point + // invert phase types and find the CP Temp and Press + + // System.out.println("critical point"); + nonLinSolver.npCrit = np; + system.invertPhaseTypes(); + nonLinSolver.etterCP = true; + // the critical point is found from interpolation polynomials based on K=1 of + // the most or least volatile component + nonLinSolver.calcCrit(); + } } - - // double[][] hydData = opsHyd.getData(); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(1); - nf.applyPattern("####.#"); - if (bubblePointFirst) { - // bubble point side - navn[0] = "bubble point 2"; - navn[1] = "dew point 2"; - navn[2] = "dew point 1"; - navn[3] = "bubble point 1"; - } else { - // dew point side and does not crash - navn[0] = "dew point"; - navn[1] = "bubble point"; - navn[2] = "dew point"; - navn[3] = "bubbl point"; + if (nonLinSolver.calcCP) { + nonLinSolver.calcCP = false; + nonLinSolver.npCrit = np; + nonLinSolver.calcCrit(); } - double TC = system.getTC(); - double PC = system.getPC(); - - String title = "PT-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title3 = "PH-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title4 = "Density-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title5 = "PS-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - - graph2b graph3 = new graph2b(pointsH2, navn, title3, "Enthalpy [kJ/kg]", "Pressure [bara]"); - graph3.setVisible(true); - // graph3.saveFigure(new String(util.util.FileSystemSettings.tempDir + - // "NeqSimTempFig4.png")); - - graph2b graph4 = new graph2b(pointsV2, navn, title4, "Density [kg/m^3]", "Pressure [bara]"); - graph4.setVisible(true); - // graph4.saveFigure(util.util.FileSystemSettings.tempDir + - // "NeqSimTempFig2.png"); - - graph2b graph5 = - new graph2b(pointsS2, navn, title5, "Entropy [kJ/kg*K]", "Pressure [bara]"); - graph5.setVisible(true); - // graph5.saveFigure(util.util.FileSystemSettings.tempDir + - // "NeqSimTempFig3.png"); - - graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); - graph2.setVisible(true); - // graph2.saveFigure(util.util.FileSystemSettings.tempDir + - // "NeqSimTempFig1.png"); - - /* - * JDialog dialog = new JDialog(); Container dialogContentPane = dialog.getContentPane(); - * dialogContentPane.setLayout(new FlowLayout()); JFreeChartPanel chartPanel = - * graph4.getChartPanel(); dialogContentPane.add(chartPanel); dialog.show(); - */ - } - - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} - - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return points2; - } - - /** {@inheritDoc} */ - @Override - public void addData(String name, double[][] data) { - double[][] localPoints = new double[points2.length + data.length][]; - navn[localPoints.length / 2 - 1] = name; - System.arraycopy(points2, 0, localPoints, 0, points2.length); - System.arraycopy(data, 0, localPoints, points2.length, data.length); - points2 = localPoints; - } - - /** {@inheritDoc} */ - @Override - public double[] get(String name) { - if (name.equals("dewT")) { - return points2[0]; - } - if (name.equals("dewP")) { - return points2[1]; - } - if (name.equals("bubT")) { - return points2[2]; - } - if (name.equals("bubP")) { - return points2[3]; - } - if (name.equals("dewT2")) { - return points2[4]; - } - if (name.equals("dewP2")) { - return points2[5]; - } - if (name.equals("bubT2")) { - return points2[6]; + // stores cricondenbar and cricondentherm + // HERE the new cricoT and crico P values will be called instead + if (system.getTemperature() > cricondenTherm[0]) { + cricondenTherm[1] = system.getPressure(); + cricondenTherm[0] = system.getTemperature(); + } else { + nonLinSolver.ettercricoT = true; } - if (name.equals("bubP2")) { - return points2[7]; + if (system.getPressure() > cricondenBar[1]) { + cricondenBar[0] = system.getTemperature(); + cricondenBar[1] = system.getPressure(); } - if (name.equals("dewH")) { - return pointsH2[2]; + + // Exit criteria + if ((system.getPressure() < minPressure && nonLinSolver.ettercricoT)) { + break; } - if (name.equals("dewDens")) { - return pointsV2[2]; + if (system.getPressure() > maxPressure) { + break; } - if (name.equals("dewS")) { - return pointsS2[2]; + if (system.getTemperature() > Tmin && !restart) { + break; } - if (name.equals("bubH")) { - return pointsH2[0]; + + // Keeps the calculated points + points[0][np - 1] = system.getTemperature(); + points[1][np - 1] = system.getPressure(); + pointsH[np - 1] = + system.getPhase(1).getEnthalpy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + pointsV[np - 1] = system.getPhase(1).getDensity(); + pointsS[np - 1] = + system.getPhase(1).getEntropy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + } + + try { + int ncr = nonLinSolver.getNpCrit(); + if (ncr == 0) { + ncr = np; } - if (name.equals("bubDens")) { - return pointsV2[0]; + int ncr2 = np - ncr; + if (hascopiedPoints) { + // if it enters here the envelope crashed and restarted + // reallocate to have all values + points2 = new double[8][]; + pointsH2 = new double[8][]; + pointsS2 = new double[8][]; + pointsV2 = new double[8][]; } - if (name.equals("bubS")) { - return pointsS2[0]; + + // points2 are plotted + points2[0] = new double[ncr + 1]; + points2[1] = new double[ncr + 1]; + pointsH2[0] = new double[ncr + 1]; + pointsH2[1] = new double[ncr + 1]; + pointsS2[0] = new double[ncr + 1]; + pointsS2[1] = new double[ncr + 1]; + pointsV2[0] = new double[ncr + 1]; + pointsV2[1] = new double[ncr + 1]; + + if (ncr2 > 2) { + points2[2] = new double[ncr2 - 2]; + points2[3] = new double[ncr2 - 2]; + pointsH2[2] = new double[ncr2 - 2]; + pointsH2[3] = new double[ncr2 - 2]; + pointsS2[2] = new double[ncr2 - 2]; + pointsS2[3] = new double[ncr2 - 2]; + pointsV2[2] = new double[ncr2 - 2]; + pointsV2[3] = new double[ncr2 - 2]; + } else { + points2[2] = new double[0]; + points2[3] = new double[0]; + pointsH2[2] = new double[0]; + pointsH2[3] = new double[0]; + pointsS2[2] = new double[0]; + pointsS2[3] = new double[0]; + pointsV2[2] = new double[0]; + pointsV2[3] = new double[0]; } - if (name.equals("cricondentherm")) { - return cricondenTherm; + + for (int i = 0; i < ncr; i++) { + // second branch up to critical point + points2[0][i] = points[0][i]; + points2[1][i] = points[1][i]; + pointsH2[1][i] = points[1][i]; + pointsH2[0][i] = pointsH[i]; + pointsS2[1][i] = points[1][i]; + pointsS2[0][i] = pointsS[i]; + pointsV2[1][i] = points[1][i]; + pointsV2[0][i] = pointsV[i]; } - if (name.equals("cricondenbar")) { - return cricondenBar; + if (ncr2 > 2) { + for (int i = 1; i < (ncr2 - 2); i++) { + // second branch after the critical point + points2[2][i] = points[0][i + ncr - 1]; + points2[3][i] = points[1][i + ncr - 1]; + pointsH2[3][i] = points[1][i + ncr - 1]; + pointsH2[2][i] = pointsH[i + ncr - 1]; + pointsS2[3][i] = points[1][i + ncr - 1]; + pointsS2[2][i] = pointsS[i + ncr - 1]; + pointsV2[3][i] = points[1][i + ncr - 1]; + pointsV2[2][i] = pointsV[i + ncr - 1]; + } } - if (name.equals("criticalPoint1")) { - return new double[] {system.getTC(), system.getPC()}; + + if (hascopiedPoints) { + if (ncrfirst > npfirst) { + ncr = copiedPoints[0].length - 1; + ncr2 = npfirst - ncr; + npfirst = npfirst - 1; + } else { + ncr = ncrfirst; + ncr2 = npfirst - ncr; + } + + points2[4] = new double[ncr + 1]; + points2[5] = new double[ncr + 1]; + pointsH2[4] = new double[ncr + 1]; + pointsH2[5] = new double[ncr + 1]; + pointsS2[4] = new double[ncr + 1]; + pointsS2[5] = new double[ncr + 1]; + pointsV2[4] = new double[ncr + 1]; + pointsV2[5] = new double[ncr + 1]; + + if (ncr2 > 2) { + points2[6] = new double[ncr2 - 2]; + points2[7] = new double[ncr2 - 2]; + pointsH2[6] = new double[ncr2 - 2]; + pointsH2[7] = new double[ncr2 - 2]; + pointsS2[6] = new double[ncr2 - 2]; + pointsS2[7] = new double[ncr2 - 2]; + pointsV2[6] = new double[ncr2 - 2]; + pointsV2[7] = new double[ncr2 - 2]; + } else { + points2[6] = new double[0]; + points2[7] = new double[0]; + pointsH2[6] = new double[0]; + pointsH2[7] = new double[0]; + pointsS2[6] = new double[0]; + pointsS2[7] = new double[0]; + pointsV2[6] = new double[0]; + pointsV2[7] = new double[0]; + } + + for (int i = 0; i < ncr; i++) { + // first branch up to the critical point + points2[4][i] = copiedPoints[0][i]; + points2[5][i] = copiedPoints[1][i]; + pointsH2[5][i] = copiedPoints[1][i]; + pointsH2[4][i] = copiedPoints[2][i]; + pointsS2[5][i] = copiedPoints[1][i]; + pointsS2[4][i] = copiedPoints[3][i]; + pointsV2[5][i] = copiedPoints[1][i]; + pointsV2[4][i] = copiedPoints[4][i]; + } + if (ncr2 > 2) { + for (int i = 1; i < (ncr2 - 2); i++) { + // first branch after the critical point + points2[6][i] = copiedPoints[0][i + ncr - 1]; + points2[7][i] = copiedPoints[1][i + ncr - 1]; + pointsH2[7][i] = copiedPoints[1][i + ncr - 1]; + pointsH2[6][i] = copiedPoints[2][i + ncr - 1]; + pointsS2[7][i] = copiedPoints[1][i + ncr - 1]; + pointsS2[6][i] = copiedPoints[3][i + ncr - 1]; + pointsV2[7][i] = copiedPoints[1][i + ncr - 1]; + pointsV2[6][i] = copiedPoints[4][i + ncr - 1]; + } + } } - if (name.equals("criticalPoint2")) { - return new double[] {0, 0}; - } else { - return null; + + // critical point + system.setTemperature(system.getTC()); + system.setPressure(system.getPC()); + + system.init(3); + + points2[0][ncr] = system.getTC(); + points2[1][ncr] = system.getPC(); + + if (ncr2 > 2) { + points2[2][0] = system.getTC(); + points2[3][0] = system.getPC(); } + } catch (Exception ex) { + // double nef = 0.; + logger.error(ex.getMessage(), ex); + } + /* + * try { if (outputToFile) { // update this String name1 = new String(); name1 = fileName + + * "Dew.nc"; file1 = new + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); + * file1.setOutputFileName(name1); file1.setXvalues(points2[2], "temp", "sec"); + * file1.setYvalues(points2[3], "pres", "meter"); file1.createFile(); + * + * String name2 = new String(); name2 = fileName + "Bub.nc"; file2 = new + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); + * file2.setOutputFileName(name2); file2.setXvalues(points2[0], "temp", "sec"); + * file2.setYvalues(points2[1], "pres", "meter"); file2.createFile(); } } catch (Exception e3) + * { // double nef = 0.; logger.error(ex.getMessage(), e3); } + */ + } catch (Exception ex) { + // double nef = 0.; + logger.error(ex.getMessage(), ex); } - - /** {@inheritDoc} */ - /* - @Override - public void createNetCdfFile(String name) { - fileName = name; + } + + /** + *

+ * calcHydrateLine. + *

+ */ + public void calcHydrateLine() { + ThermodynamicOperations opsHyd = new ThermodynamicOperations(system); + try { + opsHyd.hydrateEquilibriumLine(10.0, 300.0); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - */ - /** - * Getter for property bubblePointFirst. - * - * @return Value of property bubblePointFirst. - */ - public boolean isBubblePointFirst() { - return bubblePointFirst; + // double[][] hydData = opsHyd.getData(); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(1); + nf.applyPattern("####.#"); + if (bubblePointFirst) { + // bubble point side + navn[0] = "bubble point 2"; + navn[1] = "dew point 2"; + navn[2] = "dew point 1"; + navn[3] = "bubble point 1"; + } else { + // dew point side and does not crash + navn[0] = "dew point"; + navn[1] = "bubble point"; + navn[2] = "dew point"; + navn[3] = "bubbl point"; } - /** - * Setter for property bubblePointFirst. - * - * @param bubblePointFirst New value of property bubblePointFirst. + double TC = system.getTC(); + double PC = system.getPC(); + + String title = + "PT-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + String title3 = + "PH-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + String title4 = "Density-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + + String.valueOf(nf.format(PC)); + String title5 = + "PS-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + + graph2b graph3 = new graph2b(pointsH2, navn, title3, "Enthalpy [kJ/kg]", "Pressure [bara]"); + graph3.setVisible(true); + // graph3.saveFigure(new String(util.util.FileSystemSettings.tempDir + + // "NeqSimTempFig4.png")); + + graph2b graph4 = new graph2b(pointsV2, navn, title4, "Density [kg/m^3]", "Pressure [bara]"); + graph4.setVisible(true); + // graph4.saveFigure(util.util.FileSystemSettings.tempDir + + // "NeqSimTempFig2.png"); + + graph2b graph5 = new graph2b(pointsS2, navn, title5, "Entropy [kJ/kg*K]", "Pressure [bara]"); + graph5.setVisible(true); + // graph5.saveFigure(util.util.FileSystemSettings.tempDir + + // "NeqSimTempFig3.png"); + + graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); + graph2.setVisible(true); + // graph2.saveFigure(util.util.FileSystemSettings.tempDir + + // "NeqSimTempFig1.png"); + + /* + * JDialog dialog = new JDialog(); Container dialogContentPane = dialog.getContentPane(); + * dialogContentPane.setLayout(new FlowLayout()); JFreeChartPanel chartPanel = + * graph4.getChartPanel(); dialogContentPane.add(chartPanel); dialog.show(); */ - public void setBubblePointFirst(boolean bubblePointFirst) { - this.bubblePointFirst = bubblePointFirst; + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} + + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return points2; + } + + /** {@inheritDoc} */ + @Override + public void addData(String name, double[][] data) { + double[][] localPoints = new double[points2.length + data.length][]; + navn[localPoints.length / 2 - 1] = name; + System.arraycopy(points2, 0, localPoints, 0, points2.length); + System.arraycopy(data, 0, localPoints, points2.length, data.length); + points2 = localPoints; + } + + /** {@inheritDoc} */ + @Override + public double[] get(String name) { + if (name.equals("dewT")) { + return points2[0]; } - - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return null; + if (name.equals("dewP")) { + return points2[1]; + } + if (name.equals("bubT")) { + return points2[2]; + } + if (name.equals("bubP")) { + return points2[3]; + } + if (name.equals("dewT2")) { + return points2[4]; + } + if (name.equals("dewP2")) { + return points2[5]; + } + if (name.equals("bubT2")) { + return points2[6]; + } + if (name.equals("bubP2")) { + return points2[7]; + } + if (name.equals("dewH")) { + return pointsH2[2]; + } + if (name.equals("dewDens")) { + return pointsV2[2]; + } + if (name.equals("dewS")) { + return pointsS2[2]; + } + if (name.equals("bubH")) { + return pointsH2[0]; + } + if (name.equals("bubDens")) { + return pointsV2[0]; + } + if (name.equals("bubS")) { + return pointsS2[0]; + } + if (name.equals("cricondentherm")) { + return cricondenTherm; + } + if (name.equals("cricondenbar")) { + return cricondenBar; + } + if (name.equals("criticalPoint1")) { + return new double[] {system.getTC(), system.getPC()}; + } + if (name.equals("criticalPoint2")) { + return new double[] {0, 0}; + } else { + return null; + } + } + + /** + * Getter for property bubblePointFirst. + * + * @return Value of property bubblePointFirst. + */ + public boolean isBubblePointFirst() { + return bubblePointFirst; + } + + /** + * Setter for property bubblePointFirst. + * + * @param bubblePointFirst New value of property bubblePointFirst. + */ + public void setBubblePointFirst(boolean bubblePointFirst) { + this.bubblePointFirst = bubblePointFirst; + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } + + /** + *

+ * tempKWilson. + *

+ * + * @param beta a double + * @param P a double + * @return a double + */ + public double tempKWilson(double beta, double P) { + // Initiallizes the temperature of a saturation point for given pressure + // based on K values of Wilson + // see Michelsen book thermodynamics & computational aspects + + double initTc = 0.; + double initPc = 0.; + double initAc = 0.; + double Tstart = 0.; + double Tstartold = 0.; + double initT = 0; + double dinitT = 0; + int numberOfComponents = system.getPhase(0).getNumberOfComponents(); + int lc = 0; + int hc = 0; + + double[] Kwil = new double[numberOfComponents]; + + double min = 100000.; + double max = 0.; + + for (int i = 0; i < numberOfComponents; i++) { + if (system.getPhase(0).getComponents()[i].getTC() > max) { + max = system.getPhase(0).getComponents()[i].getTC(); + hc = i; + } + if (system.getPhase(0).getComponents()[i].getTC() < min) { + min = system.getPhase(0).getComponents()[i].getTC(); + lc = i; + } } - /** - *

- * tempKWilson. - *

- * - * @param beta a double - * @param P a double - * @return a double - */ - public double tempKWilson(double beta, double P) { - // Initiallizes the temperature of a saturation point for given pressure - // based on K values of Wilson - // see Michelsen book thermodynamics & computational aspects - - double initTc = 0.; - double initPc = 0.; - double initAc = 0.; - double Tstart = 0.; - double Tstartold = 0.; - double initT = 0; - double dinitT = 0; - int numberOfComponents = system.getPhase(0).getNumberOfComponents(); - int lc = 0; - int hc = 0; - - double[] Kwil = new double[numberOfComponents]; - - double min = 100000.; - double max = 0.; - - for (int i = 0; i < numberOfComponents; i++) { - if (system.getPhase(0).getComponents()[i].getTC() > max) { - max = system.getPhase(0).getComponents()[i].getTC(); - hc = i; - } - if (system.getPhase(0).getComponents()[i].getTC() < min) { - min = system.getPhase(0).getComponents()[i].getTC(); - lc = i; - } - } - - if (beta <= 0.5) { - initTc = system.getPhase(0).getComponents()[lc].getTC(); // closer to bubble point get - // the lightest - // component - initPc = system.getPhase(0).getComponents()[lc].getPC(); - initAc = system.getPhase(0).getComponents()[lc].getAcentricFactor(); - } else if (beta > 0.5) { - initTc = system.getPhase(0).getComponents()[hc].getTC(); // closer to dew point get the - // heaviest component - initPc = system.getPhase(0).getComponents()[hc].getPC(); - initAc = system.getPhase(0).getComponents()[hc].getAcentricFactor(); + if (beta <= 0.5) { + initTc = system.getPhase(0).getComponents()[lc].getTC(); + // closer to bubble point get the lightest component + initPc = system.getPhase(0).getComponents()[lc].getPC(); + initAc = system.getPhase(0).getComponents()[lc].getAcentricFactor(); + } else if (beta > 0.5) { + initTc = system.getPhase(0).getComponents()[hc].getTC(); + // closer to dew point get the heaviest component + initPc = system.getPhase(0).getComponents()[hc].getPC(); + initAc = system.getPhase(0).getComponents()[hc].getAcentricFactor(); + } + Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); + // initial T based on the lighterst/heaviest component + + // solve for Tstart with Newton + for (int i = 0; i < 1000; i++) { + initT = 0.; + dinitT = 0.; + for (int j = 0; j < numberOfComponents; j++) { + Kwil[j] = system.getPhase(0).getComponents()[j].getPC() / P + * Math.exp(5.373 * (1. + system.getPhase(0).getComponents()[j].getAcentricFactor()) + * (1. - system.getPhase(0).getComponents()[j].getTC() / Tstart)); + system.getPhases()[0].getComponents()[j].setK(Math.log(Kwil[j])); + } + + for (int j = 0; j < numberOfComponents; j++) { + if (beta < 0.5) { + initT = initT + system.getPhase(0).getComponents()[j].getz() * Kwil[j]; + dinitT = dinitT + system.getPhase(0).getComponents()[j].getz() * Kwil[j] * 5.373 + * (1 + system.getPhase(0).getComponents()[j].getAcentricFactor()) + * system.getPhase(0).getComponents()[j].getTC() / (Tstart * Tstart); + } else { + initT = initT + system.getPhase(0).getComponents()[j].getz() / Kwil[j]; + dinitT = dinitT - system.getPhase(0).getComponents()[j].getz() / Kwil[j] * 5.373 + * (1 + system.getPhase(0).getComponents()[j].getAcentricFactor()) + * system.getPhase(0).getComponents()[j].getTC() / (Tstart * Tstart); } - Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); // initial - // T - // based - // on - // the - // lighterst/heaviest - // component - - // solve for Tstart with Newton - for (int i = 0; i < 1000; i++) { - initT = 0.; - dinitT = 0.; - for (int j = 0; j < numberOfComponents; j++) { - Kwil[j] = system.getPhase(0).getComponents()[j].getPC() / P - * Math.exp(5.373 - * (1. + system.getPhase(0).getComponents()[j].getAcentricFactor()) - * (1. - system.getPhase(0).getComponents()[j].getTC() / Tstart)); - system.getPhases()[0].getComponents()[j].setK(Math.log(Kwil[j])); - } - - for (int j = 0; j < numberOfComponents; j++) { - if (beta < 0.5) { - initT = initT + system.getPhase(0).getComponents()[j].getz() * Kwil[j]; - dinitT = dinitT + system.getPhase(0).getComponents()[j].getz() * Kwil[j] * 5.373 - * (1 + system.getPhase(0).getComponents()[j].getAcentricFactor()) - * system.getPhase(0).getComponents()[j].getTC() / (Tstart * Tstart); - } else { - initT = initT + system.getPhase(0).getComponents()[j].getz() / Kwil[j]; - dinitT = dinitT - system.getPhase(0).getComponents()[j].getz() / Kwil[j] * 5.373 - * (1 + system.getPhase(0).getComponents()[j].getAcentricFactor()) - * system.getPhase(0).getComponents()[j].getTC() / (Tstart * Tstart); - } - } - - initT = initT - 1.; - if (Math.abs(initT / dinitT) > 0.1 * Tstart) { - Tstart = Tstart - 0.001 * initT / dinitT; - } else { - Tstart = Tstart - initT / dinitT; - } + } - if (Math.abs(Tstart - Tstartold) < 1.e-5) { - return Tstart; - } - Tstartold = Tstart; - } + initT = initT - 1.; + if (Math.abs(initT / dinitT) > 0.1 * Tstart) { + Tstart = Tstart - 0.001 * initT / dinitT; + } else { + Tstart = Tstart - initT / dinitT; + } + if (Math.abs(Tstart - Tstartold) < 1.e-5) { return Tstart; + } + Tstartold = Tstart; } - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(1); - nf.applyPattern("####.#"); - - double TC = system.getTC(); - double PC = system.getPC(); - logger.info("tc : " + TC + " PC : " + PC); - String[] navn = {"bubble point", "dew point", "bubble point", "dew point"}; - String title = "PT-graph. TC=" + String.valueOf(nf.format(TC)) + "K, PC=" - + String.valueOf(nf.format(PC) + " bara"); - graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); - return graph2.getChart(); - } + return Tstart; + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(1); + nf.applyPattern("####.#"); + + double TC = system.getTC(); + double PC = system.getPC(); + logger.info("tc : " + TC + " PC : " + PC); + String[] navn = {"bubble point", "dew point", "bubble point", "dew point"}; + String title = "PT-graph. TC=" + String.valueOf(nf.format(TC)) + "K, PC=" + + String.valueOf(nf.format(PC) + " bara"); + graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); + return graph2.getChart(); + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeNew.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeNew.java index 8bd63f78dc..208a35ecf6 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeNew.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeNew.java @@ -21,393 +21,367 @@ * @version $Id: $Id */ public class pTphaseEnvelopeNew extends BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(pTphaseEnvelopeNew.class); - - graph2b graph2 = null; - SystemInterface system; - double[] cricondenTherm = new double[3]; - double[] cricondenBar = new double[3]; - double phaseFraction = 1e-10; - int i, j = 0, nummer = 0, iterations = 0, maxNumberOfIterations = 10000; - double lowPres = 1.0; - boolean outputToFile = false; - JProgressBar monitor; - JFrame mainFrame; - String fileName = "c:/file"; - JPanel mainPanel; - double temp = 0, pres = 0; - double[][] points = new double[2][]; - double[] pointsH = new double[10000]; - double[][] pointsH2 = new double[4][]; - double[] pointsV = new double[10000]; - - ; - double[][] pointsV2 = new double[4][]; - double[] pointsS = new double[10000]; - double[][] pointsS2 = new double[4][]; - public double[][] points2 = new double[4][]; - int np = 0; - int speceq = 0; - - /** - *

- * Constructor for pTphaseEnvelopeNew. - *

- */ - public pTphaseEnvelopeNew() {} - - /** - *

- * Constructor for pTphaseEnvelopeNew. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param name a {@link java.lang.String} object - * @param phaseFraction a double - * @param lowPres a double - */ - public pTphaseEnvelopeNew(SystemInterface system, String name, double phaseFraction, - double lowPres) { - this.system = system; - this.phaseFraction = phaseFraction; - - this.lowPres = lowPres; - - if (name != null) { - outputToFile = true; - fileName = name; - } - mainFrame = new JFrame("Progress Bar"); - mainPanel = new JPanel(); - mainPanel.setSize(200, 100); - mainFrame.getContentPane().setLayout(new FlowLayout()); - mainPanel.setLayout(new FlowLayout()); - mainFrame.setSize(200, 100); - monitor = new JProgressBar(0, 00); - monitor.setSize(200, 100); - monitor.setStringPainted(true); - mainPanel.add(monitor); - mainFrame.getContentPane().add(mainPanel); - mainFrame.setVisible(true); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(pTphaseEnvelopeNew.class); + + graph2b graph2 = null; + SystemInterface system; + double[] cricondenTherm = new double[3]; + double[] cricondenBar = new double[3]; + double phaseFraction = 1e-10; + int i; + int j = 0; + int nummer = 0; + int iterations = 0; + int maxNumberOfIterations = 10000; + double lowPres = 1.0; + boolean outputToFile = false; + JProgressBar monitor; + JFrame mainFrame; + String fileName = "c:/file"; + JPanel mainPanel; + double temp = 0; + double pres = 0; + double[][] points = new double[2][]; + double[] pointsH = new double[10000]; + double[][] pointsH2 = new double[4][]; + double[] pointsV = new double[10000]; + + double[][] pointsV2 = new double[4][]; + double[] pointsS = new double[10000]; + double[][] pointsS2 = new double[4][]; + public double[][] points2 = new double[4][]; + int np = 0; + int speceq = 0; + + /** + *

+ * Constructor for pTphaseEnvelopeNew. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param name a {@link java.lang.String} object + * @param phaseFraction a double + * @param lowPres a double + */ + public pTphaseEnvelopeNew(SystemInterface system, String name, double phaseFraction, + double lowPres) { + this.system = system; + this.phaseFraction = phaseFraction; + + this.lowPres = lowPres; + + if (name != null) { + outputToFile = true; + fileName = name; } - - /** {@inheritDoc} */ - @Override - public void run() { - try { - points[0] = new double[10000]; - points[1] = new double[10000]; - - system.setPressure(lowPres); - - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - - try { - testOps.bubblePointTemperatureFlash(); - } catch (Exception e) { - e.toString(); - return; - } - logger.info("temperature bubT = " + system.getTemperature()); - - sysNewtonRhapsonPhaseEnvelope2 nonLinSolver = - new sysNewtonRhapsonPhaseEnvelope2(system); - nonLinSolver.solve(1); - nonLinSolver.calcInc(1); - - for (np = 1; np < 5; np++) { - if (np % 5 == 0) { - monitor.setValue(np); - monitor.setString("Calculated points: " + np); - } - - nonLinSolver.calcInc(np); - nonLinSolver.solve(np); - - if (system.getTemperature() > cricondenTherm[0]) { - cricondenTherm[1] = system.getPressure(); - cricondenTherm[0] = system.getTemperature(); - } - if (system.getPressure() > cricondenBar[1]) { - cricondenBar[0] = system.getTemperature(); - cricondenBar[1] = system.getPressure(); - } - - if (Double.isNaN(system.getTemperature()) - || Double.isNaN(system.getTemperature())) {// || - // system.getPressure() - // < lowPres) { - points[0][np - 1] = points[0][np - 3]; - points[1][np - 1] = points[1][np - 3]; - pointsH[np - 1] = pointsH[np - 3]; - pointsV[np - 1] = pointsV[np - 3]; - pointsS[np - 1] = pointsS[np - 3]; - - // logger.info("avbryter" + np); - break; - } - // logger.info("Ideal pres: " + getPressure()); - // logger.info("temp: " + system.getTemperature()); - points[0][np - 1] = system.getTemperature(); - points[1][np - 1] = system.getPressure(); - pointsH[np - 1] = system.getPhase(1).getEnthalpy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - pointsV[np - 1] = system.getPhase(1).getDensity(); - pointsS[np - 1] = system.getPhase(1).getEntropy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - } - - int ncr = nonLinSolver.getNpCrit(); - int ncr2 = np - ncr; - - logger.info("ncr: " + ncr + " ncr2 . " + ncr2); - points2[0] = new double[ncr + 1]; - points2[1] = new double[ncr + 1]; - pointsH2[0] = new double[ncr + 1]; - pointsH2[1] = new double[ncr + 1]; - pointsS2[0] = new double[ncr + 1]; - pointsS2[1] = new double[ncr + 1]; - pointsV2[0] = new double[ncr + 1]; - pointsV2[1] = new double[ncr + 1]; - if (ncr2 > 2) { - points2[2] = new double[ncr2 - 2]; - points2[3] = new double[ncr2 - 2]; - pointsH2[2] = new double[ncr2 - 2]; - pointsH2[3] = new double[ncr2 - 2]; - pointsV2[2] = new double[ncr2 - 2]; - pointsV2[3] = new double[ncr2 - 2]; - pointsS2[2] = new double[ncr2 - 2]; - pointsS2[3] = new double[ncr2 - 2]; - } else { - points2[2] = new double[0]; - points2[3] = new double[0]; - pointsH2[2] = new double[0]; - pointsH2[3] = new double[0]; - pointsV2[2] = new double[0]; - pointsV2[3] = new double[0]; - pointsS2[2] = new double[0]; - pointsS2[3] = new double[0]; - } - - for (int i = 0; i < ncr; i++) { - points2[0][i] = points[0][i]; - points2[1][i] = points[1][i]; - - pointsH2[1][i] = points[1][i]; - pointsH2[0][i] = pointsH[i]; - - pointsS2[1][i] = points[1][i]; - pointsS2[0][i] = pointsS[i]; - - pointsV2[1][i] = points[1][i]; - pointsV2[0][i] = pointsV[i]; - } - - system.setTemperature(system.getTC() + 0.001); - system.setPressure(system.getPC() + 0.001); - system.init(3); - - points2[0][ncr] = system.getTC(); - points2[1][ncr] = system.getPC(); - - pointsH2[1][ncr] = system.getPC(); - pointsH2[0][ncr] = - system.getPhase(1).getEnthalpy() / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - - pointsS2[1][ncr] = system.getPC(); - pointsS2[0][ncr] = - system.getPhase(1).getEntropy() / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - - pointsV2[1][ncr] = system.getPC(); - pointsV2[0][ncr] = system.getPhase(1).getDensity(); - - if (ncr2 > 2) { - points2[2][0] = system.getTC(); - points2[3][0] = system.getPC(); - pointsH2[3][0] = system.getPC(); - pointsH2[2][0] = system.getPhase(1).getEnthalpy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - pointsS2[3][0] = system.getPC(); - pointsS2[2][0] = system.getPhase(1).getEntropy() - / system.getPhase(1).getNumberOfMolesInPhase() - / system.getPhase(1).getMolarMass() / 1e3; - pointsV2[3][0] = system.getPC(); - pointsV2[2][0] = system.getPhase(1).getDensity(); - - for (int i = 1; i < (ncr2 - 2); i++) { - points2[2][i] = points[0][i + ncr - 1]; - points2[3][i] = points[1][i + ncr - 1]; - - pointsH2[3][i] = points[1][i + ncr - 1]; - pointsH2[2][i] = pointsH[i + ncr - 1]; - - pointsS2[3][i] = points[1][i + ncr - 1]; - pointsS2[2][i] = pointsS[i + ncr - 1]; - - pointsV2[3][i] = points[1][i + ncr - 1]; - pointsV2[2][i] = pointsV[i + ncr - 1]; - } - } - // monitor.close(); - mainFrame.setVisible(false); -/* - if (outputToFile) { - String name1 = new String(); - name1 = fileName + "Dew.nc"; - file1 = new neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); - file1.setOutputFileName(name1); - file1.setXvalues(points2[2], "temp", "sec"); - file1.setYvalues(points2[3], "pres", "meter"); - file1.createFile(); - - String name2 = new String(); - name2 = fileName + "Bub.nc"; - file2 = new neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); - file2.setOutputFileName(name2); - file2.setXvalues(points2[0], "temp", "sec"); - file2.setYvalues(points2[1], "pres", "meter"); - file2.createFile(); - } - */ - } catch (Exception e) { - logger.error("error", e); + mainFrame = new JFrame("Progress Bar"); + mainPanel = new JPanel(); + mainPanel.setSize(200, 100); + mainFrame.getContentPane().setLayout(new FlowLayout()); + mainPanel.setLayout(new FlowLayout()); + mainFrame.setSize(200, 100); + monitor = new JProgressBar(0, 00); + monitor.setSize(200, 100); + monitor.setStringPainted(true); + mainPanel.add(monitor); + mainFrame.getContentPane().add(mainPanel); + mainFrame.setVisible(true); + } + + /** {@inheritDoc} */ + @Override + public void run() { + try { + points[0] = new double[10000]; + points[1] = new double[10000]; + + system.setPressure(lowPres); + + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + + try { + testOps.bubblePointTemperatureFlash(); + } catch (Exception ex) { + ex.toString(); + return; + } + logger.info("temperature bubT = " + system.getTemperature()); + + sysNewtonRhapsonPhaseEnvelope2 nonLinSolver = new sysNewtonRhapsonPhaseEnvelope2(system); + nonLinSolver.solve(1); + nonLinSolver.calcInc(1); + + for (np = 1; np < 5; np++) { + if (np % 5 == 0) { + monitor.setValue(np); + monitor.setString("Calculated points: " + np); } - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(1); - nf.applyPattern("####.#"); - - double TC = system.getTC(); - double PC = system.getPC(); - logger.info("tc : " + TC + " PC : " + PC); - String[] navn = {"bubble point", "dew point", "bubble point", "dew point"}; - String title = "PT-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title3 = "PH-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title4 = "Density-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - String title5 = "PS-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" - + String.valueOf(nf.format(PC)); - - // logger.info("start flash"); - // logger.info("Tferdig.."); - - graph2b graph3 = new graph2b(pointsH2, navn, title3, "Enthalpy [kJ/kg]", "Pressure [bara]"); - graph3.setVisible(true); - graph3.saveFigure((neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig4.png")); - - graph2b graph4 = new graph2b(pointsV2, navn, title4, "Density [kg/m^3]", "Pressure [bara]"); - graph4.setVisible(true); - graph4.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig2.png"); - - graph2b graph5 = - new graph2b(pointsS2, navn, title5, "Entropy [kJ/kg*K]", "Pressure [bara]"); - graph5.setVisible(true); - graph5.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig3.png"); - - graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); - graph2.setVisible(true); - graph2.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig1.png"); - - /* - * JDialog dialog = new JDialog(); Container dialogContentPane = dialog.getContentPane(); - * dialogContentPane.setLayout(new FlowLayout()); JFreeChartPanel chartPanel = - * graph4.getChartPanel(); dialogContentPane.add(chartPanel); dialog.show(); - */ - } - /** {@inheritDoc} */ - @Override - public void printToFile(String name) {} - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(1); - nf.applyPattern("####.#"); - - double TC = system.getTC(); - double PC = system.getPC(); - logger.info("tc : " + TC + " PC : " + PC); - String[] navn = {"bubble point", "dew point", "bubble point", "dew point"}; - String title = "PT-graph. TC=" + String.valueOf(nf.format(TC)) + "K, PC=" - + String.valueOf(nf.format(PC) + " bara"); - graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); - return graph2.getChart(); - } - - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return points2; - } + nonLinSolver.calcInc(np); + nonLinSolver.solve(np); - /** {@inheritDoc} */ - @Override - public double[] get(String name) { - if (name.equals("bubT")) { - return points2[0]; - } - if (name.equals("bubP")) { - return points2[1]; - } - if (name.equals("dewT")) { - return points2[2]; - } - if (name.equals("dewP")) { - return points2[3]; - } - if (name.equals("dewH")) { - return pointsH2[2]; - } - if (name.equals("dewDens")) { - return pointsV2[2]; - } - if (name.equals("dewS")) { - return pointsS2[2]; + if (system.getTemperature() > cricondenTherm[0]) { + cricondenTherm[1] = system.getPressure(); + cricondenTherm[0] = system.getTemperature(); } - if (name.equals("bubH")) { - return pointsH2[0]; + if (system.getPressure() > cricondenBar[1]) { + cricondenBar[0] = system.getTemperature(); + cricondenBar[1] = system.getPressure(); } - if (name.equals("bubDens")) { - return pointsV2[0]; - } - if (name.equals("bubS")) { - return pointsS2[0]; - } - if (name.equals("cricondentherm")) { - return cricondenTherm; + + if (Double.isNaN(system.getTemperature())) { // || system.getPressure() < lowPres) { + points[0][np - 1] = points[0][np - 3]; + points[1][np - 1] = points[1][np - 3]; + pointsH[np - 1] = pointsH[np - 3]; + pointsV[np - 1] = pointsV[np - 3]; + pointsS[np - 1] = pointsS[np - 3]; + + // logger.info("avbryter" + np); + break; } - if (name.equals("cricondenbar")) { - return cricondenBar; - } else { - return null; + // logger.info("Ideal pres: " + getPressure()); + // logger.info("temp: " + system.getTemperature()); + points[0][np - 1] = system.getTemperature(); + points[1][np - 1] = system.getPressure(); + pointsH[np - 1] = + system.getPhase(1).getEnthalpy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + pointsV[np - 1] = system.getPhase(1).getDensity(); + pointsS[np - 1] = + system.getPhase(1).getEntropy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + } + + int ncr = nonLinSolver.getNpCrit(); + int ncr2 = np - ncr; + + logger.info("ncr: " + ncr + " ncr2 . " + ncr2); + points2[0] = new double[ncr + 1]; + points2[1] = new double[ncr + 1]; + pointsH2[0] = new double[ncr + 1]; + pointsH2[1] = new double[ncr + 1]; + pointsS2[0] = new double[ncr + 1]; + pointsS2[1] = new double[ncr + 1]; + pointsV2[0] = new double[ncr + 1]; + pointsV2[1] = new double[ncr + 1]; + if (ncr2 > 2) { + points2[2] = new double[ncr2 - 2]; + points2[3] = new double[ncr2 - 2]; + pointsH2[2] = new double[ncr2 - 2]; + pointsH2[3] = new double[ncr2 - 2]; + pointsV2[2] = new double[ncr2 - 2]; + pointsV2[3] = new double[ncr2 - 2]; + pointsS2[2] = new double[ncr2 - 2]; + pointsS2[3] = new double[ncr2 - 2]; + } else { + points2[2] = new double[0]; + points2[3] = new double[0]; + pointsH2[2] = new double[0]; + pointsH2[3] = new double[0]; + pointsV2[2] = new double[0]; + pointsV2[3] = new double[0]; + pointsS2[2] = new double[0]; + pointsS2[3] = new double[0]; + } + + for (int i = 0; i < ncr; i++) { + points2[0][i] = points[0][i]; + points2[1][i] = points[1][i]; + + pointsH2[1][i] = points[1][i]; + pointsH2[0][i] = pointsH[i]; + + pointsS2[1][i] = points[1][i]; + pointsS2[0][i] = pointsS[i]; + + pointsV2[1][i] = points[1][i]; + pointsV2[0][i] = pointsV[i]; + } + + system.setTemperature(system.getTC() + 0.001); + system.setPressure(system.getPC() + 0.001); + system.init(3); + + points2[0][ncr] = system.getTC(); + points2[1][ncr] = system.getPC(); + + pointsH2[1][ncr] = system.getPC(); + pointsH2[0][ncr] = system.getPhase(1).getEnthalpy() + / system.getPhase(1).getNumberOfMolesInPhase() / system.getPhase(1).getMolarMass() / 1e3; + + pointsS2[1][ncr] = system.getPC(); + pointsS2[0][ncr] = system.getPhase(1).getEntropy() + / system.getPhase(1).getNumberOfMolesInPhase() / system.getPhase(1).getMolarMass() / 1e3; + + pointsV2[1][ncr] = system.getPC(); + pointsV2[0][ncr] = system.getPhase(1).getDensity(); + + if (ncr2 > 2) { + points2[2][0] = system.getTC(); + points2[3][0] = system.getPC(); + pointsH2[3][0] = system.getPC(); + pointsH2[2][0] = + system.getPhase(1).getEnthalpy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + pointsS2[3][0] = system.getPC(); + pointsS2[2][0] = + system.getPhase(1).getEntropy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3; + pointsV2[3][0] = system.getPC(); + pointsV2[2][0] = system.getPhase(1).getDensity(); + + for (int i = 1; i < (ncr2 - 2); i++) { + points2[2][i] = points[0][i + ncr - 1]; + points2[3][i] = points[1][i + ncr - 1]; + + pointsH2[3][i] = points[1][i + ncr - 1]; + pointsH2[2][i] = pointsH[i + ncr - 1]; + + pointsS2[3][i] = points[1][i + ncr - 1]; + pointsS2[2][i] = pointsS[i + ncr - 1]; + + pointsV2[3][i] = points[1][i + ncr - 1]; + pointsV2[2][i] = pointsV[i + ncr - 1]; } + } + // monitor.close(); + mainFrame.setVisible(false); + /* + * if (outputToFile) { String name1 = new String(); name1 = fileName + "Dew.nc"; file1 = new + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); + * file1.setOutputFileName(name1); file1.setXvalues(points2[2], "temp", "sec"); + * file1.setYvalues(points2[3], "pres", "meter"); file1.createFile(); + * + * String name2 = new String(); name2 = fileName + "Bub.nc"; file2 = new + * neqsim.dataPresentation.fileHandeling.createNetCDF.netCDF2D.NetCdf2D(); + * file2.setOutputFileName(name2); file2.setXvalues(points2[0], "temp", "sec"); + * file2.setYvalues(points2[1], "pres", "meter"); file2.createFile(); } + */ + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(1); + nf.applyPattern("####.#"); + + double TC = system.getTC(); + double PC = system.getPC(); + logger.info("tc : " + TC + " PC : " + PC); + String[] navn = {"bubble point", "dew point", "bubble point", "dew point"}; + String title = + "PT-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + String title3 = + "PH-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + String title4 = "Density-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + + String.valueOf(nf.format(PC)); + String title5 = + "PS-graph TC=" + String.valueOf(nf.format(TC)) + " PC=" + String.valueOf(nf.format(PC)); + + // logger.info("start flash"); + // logger.info("Tferdig.."); + + graph2b graph3 = new graph2b(pointsH2, navn, title3, "Enthalpy [kJ/kg]", "Pressure [bara]"); + graph3.setVisible(true); + graph3.saveFigure((neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig4.png")); + + graph2b graph4 = new graph2b(pointsV2, navn, title4, "Density [kg/m^3]", "Pressure [bara]"); + graph4.setVisible(true); + graph4.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig2.png"); + + graph2b graph5 = new graph2b(pointsS2, navn, title5, "Entropy [kJ/kg*K]", "Pressure [bara]"); + graph5.setVisible(true); + graph5.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig3.png"); + + graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); + graph2.setVisible(true); + graph2.saveFigure(neqsim.util.util.FileSystemSettings.tempDir + "NeqSimTempFig1.png"); - /** {@inheritDoc} */ /* - @Override - public void createNetCdfFile(String name) { - fileName = name; + * JDialog dialog = new JDialog(); Container dialogContentPane = dialog.getContentPane(); + * dialogContentPane.setLayout(new FlowLayout()); JFreeChartPanel chartPanel = + * graph4.getChartPanel(); dialogContentPane.add(chartPanel); dialog.show(); + */ + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(1); + nf.applyPattern("####.#"); + + double TC = system.getTC(); + double PC = system.getPC(); + logger.info("tc : " + TC + " PC : " + PC); + String[] navn = {"bubble point", "dew point", "bubble point", "dew point"}; + String title = "PT-graph. TC=" + String.valueOf(nf.format(TC)) + "K, PC=" + + String.valueOf(nf.format(PC) + " bara"); + graph2 = new graph2b(points2, navn, title, "Temperature [K]", "Pressure [bara]"); + return graph2.getChart(); + } + + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return points2; + } + + /** {@inheritDoc} */ + @Override + public double[] get(String name) { + if (name.equals("bubT")) { + return points2[0]; } - */ - - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return null; + if (name.equals("bubP")) { + return points2[1]; + } + if (name.equals("dewT")) { + return points2[2]; + } + if (name.equals("dewP")) { + return points2[3]; + } + if (name.equals("dewH")) { + return pointsH2[2]; } + if (name.equals("dewDens")) { + return pointsV2[2]; + } + if (name.equals("dewS")) { + return pointsS2[2]; + } + if (name.equals("bubH")) { + return pointsH2[0]; + } + if (name.equals("bubDens")) { + return pointsV2[0]; + } + if (name.equals("bubS")) { + return pointsS2[0]; + } + if (name.equals("cricondentherm")) { + return cricondenTherm; + } + if (name.equals("cricondenbar")) { + return cricondenBar; + } else { + return null; + } + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeNew2.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeNew2.java new file mode 100644 index 0000000000..ebc71577d8 --- /dev/null +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/pTphaseEnvelopeNew2.java @@ -0,0 +1,605 @@ +/* + * pTphaseEnvelope.java + * + * Created on 14. oktober 2000, 21:59 Updated on May 2019, by Nefeli + */ + +package neqsim.thermodynamicOperations.phaseEnvelopeOps.multicomponentEnvelopeOps; + +import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermodynamicOperations.BaseOperation; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + *

+ * pTphaseEnvelopeNew2 class. + *

+ * + * @author asmund + * @version $Id: $Id + */ +public class pTphaseEnvelopeNew2 extends BaseOperation { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(pTphaseEnvelopeNew2.class); + + double maxPressure = 1000.0; + double minPressure = 1.0; + SystemInterface system; + boolean bubblePointFirst = true; + boolean calculatesDewPoint = true; + double[] cricondenTherm = new double[3]; + double[] cricondenBar = new double[3]; + double[] cricondenThermX = new double[100]; + double[] cricondenThermY = new double[100]; + double[] cricondenBarX = new double[100]; + double[] cricondenBarY = new double[100]; + double phaseFraction = 1e-10; + int i; + int j = 0; + int nummer = 0; + int iterations = 0; + int maxNumberOfIterations = 10000; + double gibbsEnergy = 0; + double gibbsEnergyOld = 0; + double Kold; + double deviation = 0; + double g0 = 0; + double g1 = 0; + double lowPres = 1.0; + double[] lnOldOldK; + double[] lnK; + boolean outputToFile = false; + double[] lnOldK; + double[] lnKwil; + double[] oldDeltalnK; + double[] deltalnK; + double[] tm = {1, 1}; + double beta = 1e-5; + int lowestGibbsEnergyPhase = 0; + String fileName = "c:/file"; + double temp = 0; + double pres = 0; + double startPres = 0; + boolean moreLines = false; + boolean restart = true; + int np = 0; + // points[2] = new double[1000]; + int speceq = 0; + double Tcfirst; + double Pcfirst; + double Tmin = 0.0; + + ArrayList dewPointTemperature = new ArrayList(); + ArrayList dewPointPressure = new ArrayList(); + ArrayList bubblePointTemperature = new ArrayList(); + ArrayList bubblePointPressure = new ArrayList(); + + ArrayList bubblePointEnthalpy = new ArrayList(); + ArrayList dewPointEnthalpy = new ArrayList(); + + ArrayList bubblePointEntropy = new ArrayList(); + ArrayList dewPointEntropy = new ArrayList(); + + ArrayList bubblePointVolume = new ArrayList(); + ArrayList dewPointVolume = new ArrayList(); + + double[] cricondenThermfirst = new double[3]; + double[] cricondenBarfirst = new double[3]; + double[] cricondenThermXfirst = new double[100]; + double[] cricondenThermYfirst = new double[100]; + double[] cricondenBarXfirst = new double[100]; + double[] cricondenBarYfirst = new double[100]; + + double[] dewPointTemperatureArray; + double[] dewPointPressureArray; + double[] dewPointEnthalpyArray; + double[] dewPointVolumeArray; + double[] dewPointEntropyArray; + + double[] bubblePointTemperatureArray; + double[] bubblePointPressureArray; + double[] bubblePointEnthalpyArray; + double[] bubblePointVolumeArray; + double[] bubblePointEntropyArray; + + /** + *

+ * Constructor for pTphaseEnvelope. + *

+ */ + public pTphaseEnvelopeNew2() {} + + /** + *

+ * Constructor for pTphaseEnvelope. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + * @param name a {@link java.lang.String} object + * @param phaseFraction a double + * @param lowPres a double + * @param bubfirst a boolean + */ + public pTphaseEnvelopeNew2(SystemInterface system, String name, double phaseFraction, + double lowPres, boolean bubfirst) { + this.bubblePointFirst = bubfirst; + if (name != null) { + outputToFile = true; + fileName = name; + } + this.system = system; + this.phaseFraction = phaseFraction; + lnOldOldK = new double[system.getPhase(0).getNumberOfComponents()]; + lnOldK = new double[system.getPhase(0).getNumberOfComponents()]; + lnK = new double[system.getPhase(0).getNumberOfComponents()]; + this.lowPres = lowPres; + oldDeltalnK = new double[system.getPhase(0).getNumberOfComponents()]; + deltalnK = new double[system.getPhase(0).getNumberOfComponents()]; + } + + /** {@inheritDoc} */ + @Override + public void run() { + speceq = 0; // initialization + try { + system.init(0); // initialization + + // selects the most volatile and least volatile component based on Tc values + // afterwards it uses them to define the speceq of the first point + // based on the desired first point, dew/bubble + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getComponent(i).getz() < 1e-10) { + continue; + } + if (system.getPhase(0).getComponent(i).getIonicCharge() == 0) { + if (bubblePointFirst && system.getPhase(0).getComponents()[speceq] + .getTC() > system.getPhase(0).getComponents()[i].getTC()) { + speceq = system.getPhase(0).getComponent(i).getComponentNumber(); + } + if (!bubblePointFirst && system.getPhase(0).getComponents()[speceq] + .getTC() < system.getPhase(0).getComponents()[i].getTC()) { + speceq = system.getPhase(0).getComponent(i).getComponentNumber(); + } + } + } + + // initialized the first step of the phase envelope + // pressure is already defined + // temperature is the antoine vapor pressure of the selected component + // (least or most volatile. + pres = lowPres; + // temp = + // system.getPhase(0).getComponent(speceq).getAntoineVaporTemperature(pres); + temp = tempKWilson(phaseFraction, pres); + + if (Double.isNaN(temp)) { + temp = system.getPhase(0).getComponent(speceq).getTC() - 20.0; + } + system.setTemperature(temp); + system.setPressure(pres); + + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + + // this part converges the first phase envelope point. + // if the plasefraction is more than 0.5 it does a dew point initiallization + // else a bubble point initiallization + + for (int i = 0; i < 5; i++) { + try { + if (phaseFraction < 0.5) { + temp += i * 2; + system.setTemperature(temp); + testOps.bubblePointTemperatureFlash(); + } else { + temp += i * 2; + system.setTemperature(temp); + testOps.dewPointTemperatureFlash(); + } + } catch (Exception ex) { + // ex.toString(); + } + double tempNy = system.getTemperature(); + + if (!Double.isNaN(tempNy)) { + temp = tempNy; + break; + } + } + + // this part sets the first envelope point into the system + system.setBeta(phaseFraction); + system.setPressure(pres); + system.setTemperature(temp); + + sysNewtonRhapsonPhaseEnvelope nonLinSolver = + new sysNewtonRhapsonPhaseEnvelope(system, 2, system.getPhase(0).getNumberOfComponents()); + startPres = system.getPressure(); + nonLinSolver.setu(); + + for (np = 1; np < 9980; np++) { + try { + // solves the np point of the envelope + nonLinSolver.calcInc(np); + nonLinSolver.solve(np); + + // this catches the exceptions + // double TT = system.getPhase(0).getTemperature(); + // double PP = system.getPhase(0).getPressure(); + } catch (Exception e0) { + // the envelope crushed. + // this part keeps the old values + // restarts the envelope from the other side + // and then stops + + if (restart) { + calculatesDewPoint = false; + restart = !restart; + Tcfirst = system.getTC(); + Pcfirst = system.getPC(); + + cricondenBarfirst = cricondenBar; + cricondenBarXfirst = cricondenBarX; + cricondenBarYfirst = cricondenBarY; + + cricondenThermfirst = cricondenTherm; + cricondenThermXfirst = cricondenThermX; + cricondenThermYfirst = cricondenThermY; + + // new settings + phaseFraction = 1.0 - phaseFraction; + bubblePointFirst = !bubblePointFirst; + run(); + /**/ + break; + } else { + np = np - 1; + break; + } + } + + // check for critical point + double Kvallc = system.getPhase(0).getComponent(nonLinSolver.lc).getx() + / system.getPhase(1).getComponent(nonLinSolver.lc).getx(); + double Kvalhc = system.getPhase(0).getComponent(nonLinSolver.hc).getx() + / system.getPhase(1).getComponent(nonLinSolver.hc).getx(); + // double densV = system.getPhase(0).getDensity(); + // double densL = system.getPhase(1).getDensity(); + + // System.out.println(np + " " + system.getTemperature() + " " + + // system.getPressure() + " " + densV + " " + densL ); + + if (!nonLinSolver.etterCP) { + if (Kvallc < 1.05 && Kvalhc > 0.95) { + // close to the critical point + // invert phase types and find the CP Temp and Press + + // System.out.println("critical point"); + nonLinSolver.npCrit = np; + system.invertPhaseTypes(); + nonLinSolver.etterCP = true; + calculatesDewPoint = false; + // the critical point is found from interpolation polynomials based on K=1 of + // the most or least volatile component + nonLinSolver.calcCrit(); + } + } + + // stores critondenbar and cricondentherm + // HERE the new cricoT and crico P values will be called instead + if (system.getTemperature() > cricondenTherm[0]) { + cricondenTherm[1] = system.getPressure(); + cricondenTherm[0] = system.getTemperature(); + for (int ii = 0; ii < nonLinSolver.numberOfComponents; ii++) { + cricondenThermX[ii] = system.getPhase(1).getComponent(ii).getx(); + cricondenThermY[ii] = system.getPhase(0).getComponent(ii).getx(); + } + } else { + nonLinSolver.ettercricoT = true; + } + if (system.getPressure() > cricondenBar[1]) { + cricondenBar[0] = system.getTemperature(); + cricondenBar[1] = system.getPressure(); + for (int ii = 0; ii < nonLinSolver.numberOfComponents; ii++) { + cricondenBarX[ii] = system.getPhase(1).getComponent(ii).getx(); + cricondenBarY[ii] = system.getPhase(0).getComponent(ii).getx(); + } + } + + // Exit criteria + if ((system.getPressure() < minPressure && nonLinSolver.ettercricoT)) { + break; + } + if (system.getPressure() > maxPressure) { + break; + } + if (system.getTemperature() < Tmin) { + break; + } + + if (system.getTemperature() > 1e-6 && system.getPressure() > 1e-6 + && !(Double.isNaN(system.getTemperature()) || Double.isNaN(system.getPressure()))) { + if (calculatesDewPoint) { + dewPointTemperature.add(system.getTemperature()); + dewPointPressure.add(system.getPressure()); + dewPointEnthalpy + .add(system.getPhase(1).getEnthalpy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3); + dewPointVolume.add(system.getPhase(1).getDensity()); + dewPointEntropy + .add(system.getPhase(1).getEntropy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3); + } else { + bubblePointTemperature.add(system.getTemperature()); + bubblePointPressure.add(system.getPressure()); + bubblePointEnthalpy + .add(system.getPhase(1).getEnthalpy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3); + bubblePointVolume.add(system.getPhase(1).getDensity()); + bubblePointEntropy + .add(system.getPhase(1).getEntropy() / system.getPhase(1).getNumberOfMolesInPhase() + / system.getPhase(1).getMolarMass() / 1e3); + } + } + } + + system.setTemperature(system.getTC()); + system.setPressure(system.getPC()); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + throw ex; + } + + dewPointTemperatureArray = new double[dewPointTemperature.size()]; + dewPointPressureArray = new double[dewPointPressure.size()]; + dewPointEnthalpyArray = new double[dewPointTemperature.size()]; + dewPointVolumeArray = new double[dewPointPressure.size()]; + dewPointEntropyArray = new double[dewPointPressure.size()]; + + bubblePointTemperatureArray = new double[bubblePointTemperature.size()]; + bubblePointPressureArray = new double[bubblePointPressure.size()]; + bubblePointEnthalpyArray = new double[bubblePointPressure.size()]; + bubblePointVolumeArray = new double[bubblePointPressure.size()]; + bubblePointEntropyArray = new double[bubblePointPressure.size()]; + + for (int i = 0; i < dewPointTemperature.size(); i++) { + dewPointTemperatureArray[i] = dewPointTemperature.get(i); + dewPointPressureArray[i] = dewPointPressure.get(i); + dewPointEnthalpyArray[i] = dewPointEnthalpy.get(i); + dewPointVolumeArray[i] = dewPointVolume.get(i); + dewPointEntropyArray[i] = dewPointEntropy.get(i); + } + + for (int i = 0; i < bubblePointTemperature.size(); i++) { + bubblePointTemperatureArray[i] = bubblePointTemperature.get(i); + bubblePointPressureArray[i] = bubblePointPressure.get(i); + bubblePointEnthalpyArray[i] = bubblePointEnthalpy.get(i); + bubblePointEntropyArray[i] = bubblePointEntropy.get(i); + bubblePointVolumeArray[i] = bubblePointVolume.get(i); + } + } + + /** + *

+ * calcHydrateLine. + *

+ */ + public void calcHydrateLine() { + ThermodynamicOperations opsHyd = new ThermodynamicOperations(system); + try { + opsHyd.hydrateEquilibriumLine(10.0, 300.0); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + + // double[][] hydData = opsHyd.getData(); + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) {} + + /** {@inheritDoc} */ + @Override + public double[] get(String name) { + if (name.equals("dewT")) { + return dewPointTemperatureArray; + } + if (name.equals("dewP")) { + return dewPointPressureArray; + } + if (name.equals("bubT")) { + return bubblePointTemperatureArray; + } + if (name.equals("bubP")) { + return bubblePointPressureArray; + } + + if (name.equals("dewH")) { + return dewPointEnthalpyArray; + } + if (name.equals("dewDens")) { + return dewPointVolumeArray; + } + if (name.equals("dewS")) { + return dewPointEntropyArray; + } + if (name.equals("bubH")) { + return bubblePointEnthalpyArray; + } + if (name.equals("bubDens")) { + return bubblePointVolumeArray; + } + if (name.equals("bubS")) { + return bubblePointEntropyArray; + } + if (name.equals("cricondentherm")) { + return cricondenTherm; + } + if (name.equals("cricondenthermX")) { + return cricondenThermX; + } + if (name.equals("cricondenthermY")) { + return cricondenThermY; + } + if (name.equals("cricondenbar")) { + return cricondenBar; + } + if (name.equals("cricondenbarX")) { + return cricondenBarX; + } + if (name.equals("cricondenbarY")) { + return cricondenBarY; + } + if (name.equals("criticalPoint1")) { + return new double[] {system.getTC(), system.getPC()}; + } + if (name.equals("criticalPoint2")) { + return new double[] {0, 0}; + } else { + return null; + } + } + + /** + * Getter for property bubblePointFirst. + * + * @return Value of property bubblePointFirst. + */ + public boolean isBubblePointFirst() { + return bubblePointFirst; + } + + /** + * Setter for property bubblePointFirst. + * + * @param bubblePointFirst New value of property bubblePointFirst. + */ + public void setBubblePointFirst(boolean bubblePointFirst) { + this.bubblePointFirst = bubblePointFirst; + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } + + /** + *

+ * tempKWilson. + *

+ * + * @param beta a double + * @param P a double + * @return a double + */ + public double tempKWilson(double beta, double P) { + // Initiallizes the temperature of a saturation point for given pressure + // based on K values of Wilson + // see Michelsen book thermodynamics & computational aspects + + double initTc = 0.; + double initPc = 0.; + double initAc = 0.; + double Tstart = 0.; + double Tstartold = 0.; + double initT = 0; + double dinitT = 0; + int numberOfComponents = system.getPhase(0).getNumberOfComponents(); + int lc = 0; + int hc = 0; + + double[] Kwil = new double[numberOfComponents]; + + double min = 100000.; + double max = 0.; + + for (int i = 0; i < numberOfComponents; i++) { + if (system.getPhase(0).getComponents()[i].getTC() > max) { + max = system.getPhase(0).getComponents()[i].getTC(); + hc = i; + } + if (system.getPhase(0).getComponents()[i].getTC() < min) { + min = system.getPhase(0).getComponents()[i].getTC(); + lc = i; + } + } + + try { + if (beta <= 0.5) { + // closer to bubble point get the lightest component + + initTc = system.getPhase(0).getComponents()[lc].getTC(); + initPc = system.getPhase(0).getComponents()[lc].getPC(); + initAc = system.getPhase(0).getComponents()[lc].getAcentricFactor(); + } else if (beta > 0.5) { + // closer to dew point get the heaviest component + initTc = system.getPhase(0).getComponents()[hc].getTC(); + initPc = system.getPhase(0).getComponents()[hc].getPC(); + initAc = system.getPhase(0).getComponents()[hc].getAcentricFactor(); + } + + // initial T based on the lightest/heaviest component + Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); + + // solve for Tstart with Newton + for (int i = 0; i < 1000; i++) { + initT = 0.; + dinitT = 0.; + for (int j = 0; j < numberOfComponents; j++) { + Kwil[j] = system.getPhase(0).getComponents()[j].getPC() / P + * Math.exp(5.373 * (1. + system.getPhase(0).getComponents()[j].getAcentricFactor()) + * (1. - system.getPhase(0).getComponents()[j].getTC() / Tstart)); + // system.getPhases()[0].getComponents()[j].setK(Kwil[j]); + } + + for (int j = 0; j < numberOfComponents; j++) { + if (beta < 0.5) { + initT = initT + system.getPhase(0).getComponents()[j].getz() * Kwil[j]; + dinitT = dinitT + system.getPhase(0).getComponents()[j].getz() * Kwil[j] * 5.373 + * (1 + system.getPhase(0).getComponents()[j].getAcentricFactor()) + * system.getPhase(0).getComponents()[j].getTC() / (Tstart * Tstart); + } else { + initT = initT + system.getPhase(0).getComponents()[j].getz() / Kwil[j]; + dinitT = dinitT - system.getPhase(0).getComponents()[j].getz() / Kwil[j] * 5.373 + * (1 + system.getPhase(0).getComponents()[j].getAcentricFactor()) + * system.getPhase(0).getComponents()[j].getTC() / (Tstart * Tstart); + } + } + + initT = initT - 1.; + if (Math.abs(initT / dinitT) > 0.1 * Tstart) { + Tstart = Tstart - 0.001 * initT / dinitT; + } else { + Tstart = Tstart - initT / dinitT; + } + if (Math.abs(Tstart - Tstartold) < 1.e-5) { + return Tstart; + } + Tstartold = Tstart; + } + } catch (Exception ex) { + Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); + } + if (Double.isNaN(Tstart) || Double.isInfinite(Tstart)) { + Tstart = initTc * 5.373 * (1 + initAc) / (5.373 * (1 + initAc) - Math.log(P / initPc)); + } + return Tstart; + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + +} diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/sysNewtonRhapsonPhaseEnvelope.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/sysNewtonRhapsonPhaseEnvelope.java index 7d9647642b..414ce03217 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/sysNewtonRhapsonPhaseEnvelope.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/sysNewtonRhapsonPhaseEnvelope.java @@ -15,685 +15,637 @@ * @version $Id: $Id */ public class sysNewtonRhapsonPhaseEnvelope implements java.io.Serializable { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(sysNewtonRhapsonPhaseEnvelope.class); - - double sumx = 0, sumy = 0; - int neq = 0, iter = 0, iter2 = 0; - int ic02p = -100, ic03p = -100, testcrit = 0, npCrit = 0; - double beta = 0, ds = 0, dTmax = 10, dPmax = 10, TC1 = 0, TC2 = 0, PC1 = 0, PC2 = 0, - specVal = 0.0; - int lc = 0, hc = 0; - double sumlnKvals; - Matrix Jac; - Matrix fvec; - Matrix u; - Matrix uold; - Matrix uolder; - Matrix ucrit; - Matrix ucritold; - Matrix Xgij; - SystemInterface system; - int numberOfComponents; - int speceq = 0; - Matrix a = new Matrix(4, 4); - Matrix dxds = null; - Matrix s = new Matrix(1, 4); - Matrix xg; - Matrix xcoef; - newtonRhapson solver; - boolean etterCP = false; - boolean etterCP2 = false; - boolean calcCP = false; - boolean ettercricoT = false; - Matrix xcoefOld; - double sign = 1.0; - double dt; - double dp; - double norm; - double vol = Math.pow(10, 5); - double volold = Math.pow(10, 5); - double volold2 = Math.pow(10, 5); - - /** - *

- * Constructor for sysNewtonRhapsonPhaseEnvelope. - *

- */ - public sysNewtonRhapsonPhaseEnvelope() {} - - /** - *

- * Constructor for sysNewtonRhapsonPhaseEnvelope. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - * @param numberOfPhases a int - * @param numberOfComponents a int - */ - public sysNewtonRhapsonPhaseEnvelope(SystemInterface system, int numberOfPhases, - int numberOfComponents) { - this.system = system; - this.numberOfComponents = numberOfComponents; - neq = numberOfComponents + 2; - Jac = new Matrix(neq, neq); // this is the jacobian of the system of equations - fvec = new Matrix(neq, 1); // this is the system of equations - u = new Matrix(neq, 1); // this is the vector of variables - Xgij = new Matrix(neq, 4); - setu(); - uold = u.copy(); - findSpecEqInit(); - solver = new newtonRhapson(); - solver.setOrder(3); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(sysNewtonRhapsonPhaseEnvelope.class); + + double sumx = 0; + double sumy = 0; + int neq = 0; + int iter = 0; + int iter2 = 0; + int ic02p = -100; + int ic03p = -100; + int testcrit = 0; + int npCrit = 0; + double beta = 0; + double ds = 0; + double dTmax = 10; + double dPmax = 10; + double TC1 = 0; + double TC2 = 0; + double PC1 = 0; + double PC2 = 0; + double specVal = 0.0; + int lc = 0; + int hc = 0; + double sumlnKvals; + Matrix Jac; + Matrix fvec; + Matrix u; + Matrix uold; + Matrix uolder; + Matrix ucrit; + Matrix ucritold; + Matrix Xgij; + SystemInterface system; + int numberOfComponents; + int speceq = 0; + Matrix a = new Matrix(4, 4); + Matrix dxds = null; + Matrix s = new Matrix(1, 4); + Matrix xg; + Matrix xcoef; + newtonRhapson solver; + boolean etterCP = false; + boolean etterCP2 = false; + boolean calcCP = false; + boolean ettercricoT = false; + Matrix xcoefOld; + double sign = 1.0; + double dt; + double dp; + double norm; + double vol = Math.pow(10, 5); + double volold = Math.pow(10, 5); + double volold2 = Math.pow(10, 5); + + /** + *

+ * Constructor for sysNewtonRhapsonPhaseEnvelope. + *

+ */ + public sysNewtonRhapsonPhaseEnvelope() { + } + + /** + *

+ * Constructor for sysNewtonRhapsonPhaseEnvelope. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} + * object + * @param numberOfPhases a int + * @param numberOfComponents a int + */ + public sysNewtonRhapsonPhaseEnvelope(SystemInterface system, int numberOfPhases, + int numberOfComponents) { + this.system = system; + this.numberOfComponents = numberOfComponents; + neq = numberOfComponents + 2; + Jac = new Matrix(neq, neq); // this is the jacobian of the system of equations + fvec = new Matrix(neq, 1); // this is the system of equations + u = new Matrix(neq, 1); // this is the vector of variables + Xgij = new Matrix(neq, 4); + setu(); + uold = u.copy(); + findSpecEqInit(); + solver = new newtonRhapson(); + solver.setOrder(3); + } + + /** + *

+ * setfvec22. + *

+ */ + public void setfvec22() { + for (int i = 0; i < numberOfComponents; i++) { + fvec.set(i, 0, + Math.log(system.getPhase(0).getComponents()[i].getFugacityCoefficient() + * system.getPhase(0).getComponents()[i].getx()) + - Math.log(system.getPhase(1).getComponents()[i].getFugacityCoefficient() + * system.getPhase(1).getComponents()[i].getx())); } - - /** - *

- * setfvec22. - *

- */ - public void setfvec22() { - for (int i = 0; i < numberOfComponents; i++) { - fvec.set(i, 0, Math - .log(system.getPhase(0).getComponents()[i].getFugacityCoefficient() - * system.getPhase(0).getComponents()[i].getx()) - - Math.log(system.getPhase(1).getComponents()[i].getFugacityCoefficient() - * system.getPhase(1).getComponents()[i].getx())); - } - double fsum = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - fsum += system.getPhase(0).getComponents()[i].getx() - - system.getPhase(1).getComponents()[i].getx(); - } - fvec.set(numberOfComponents, 0, fsum); - fvec.set(numberOfComponents, 0, sumy - sumx); - fvec.set(numberOfComponents + 1, 0, u.get(speceq, 0) - specVal); + double fsum = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + fsum += system.getPhase(0).getComponents()[i].getx() + - system.getPhase(1).getComponents()[i].getx(); } - - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - for (int i = 0; i < numberOfComponents; i++) { - fvec.set(i, 0, - u.get(i, 0) + system.getPhase(0).getComponents()[i].getLogFugacityCoefficient() - - system.getPhase(1).getComponents()[i].getLogFugacityCoefficient()); - } - fvec.set(numberOfComponents, 0, sumy - sumx); - fvec.set(numberOfComponents + 1, 0, u.get(speceq, 0) - specVal); + fvec.set(numberOfComponents, 0, fsum); + fvec.set(numberOfComponents, 0, sumy - sumx); + fvec.set(numberOfComponents + 1, 0, u.get(speceq, 0) - specVal); + } + + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + for (int i = 0; i < numberOfComponents; i++) { + fvec.set(i, 0, u.get(i, 0) + system.getPhase(0).getComponents()[i].getLogFugacityCoefficient() + - system.getPhase(1).getComponents()[i].getLogFugacityCoefficient()); } - - /** - *

- * findSpecEqInit. - *

- */ - public void findSpecEqInit() { - speceq = 0; - int speceqmin = 0; - - system.getPhase(0).getComponents()[numberOfComponents - 1].getPC(); - system.getPhase(0).getComponents()[numberOfComponents - 1].getTC(); - system.getPhase(0).getComponents()[numberOfComponents - 1].getAcentricFactor(); - - for (int i = 0; i < numberOfComponents; i++) { - if (system.getComponent(i).getz() < 1e-10) { - continue; - } - if (system.getPhase(0).getComponents()[i] - .getTC() > system.getPhase(0).getComponents()[speceq].getTC()) { - speceq = system.getPhase(0).getComponents()[i].getComponentNumber(); - specVal = u.get(i, 0); - hc = i; - } - if (system.getPhase(0).getComponents()[i] - .getTC() < system.getPhase(0).getComponents()[speceqmin].getTC()) { - speceqmin = system.getPhase(0).getComponents()[i].getComponentNumber(); - lc = i; - } - } + fvec.set(numberOfComponents, 0, sumy - sumx); + fvec.set(numberOfComponents + 1, 0, u.get(speceq, 0) - specVal); + } + + /** + *

+ * findSpecEqInit. + *

+ */ + public void findSpecEqInit() { + speceq = 0; + int speceqmin = 0; + + system.getPhase(0).getComponents()[numberOfComponents - 1].getPC(); + system.getPhase(0).getComponents()[numberOfComponents - 1].getTC(); + system.getPhase(0).getComponents()[numberOfComponents - 1].getAcentricFactor(); + + for (int i = 0; i < numberOfComponents; i++) { + if (system.getComponent(i).getz() < 1e-10) { + continue; + } + if (system.getPhase(0).getComponents()[i].getTC() > system.getPhase(0).getComponents()[speceq] + .getTC()) { + speceq = system.getPhase(0).getComponents()[i].getComponentNumber(); + specVal = u.get(i, 0); + hc = i; + } + if (system.getPhase(0).getComponents()[i] + .getTC() < system.getPhase(0).getComponents()[speceqmin].getTC()) { + speceqmin = system.getPhase(0).getComponents()[i].getComponentNumber(); + lc = i; + } } + } - /** - *

- * findSpecEq. - *

- */ - public void findSpecEq() { - double max = 0; - double max2 = 0.; - int speceq2 = 0; - - for (int i = 0; i < numberOfComponents + 2; i++) { - double testVal = Math.abs( - (Math.exp(u.get(i, 0)) - Math.exp(uold.get(i, 0))) / Math.exp(uold.get(i, 0))); - - // the most sensitive variable is calculated not by the difference, - // but from the sensibility vector in the original Michelsen code - - if (testVal > max) { - speceq = i; - specVal = u.get(i, 0); - max = testVal; - } - - testVal = Math.abs(dxds.get(i, 0)); - - if (testVal > max2) { - speceq2 = i; - // double specVal2 = u.get(i, 0); - max2 = testVal; - } - } + /** + *

+ * findSpecEq. + *

+ */ + public void findSpecEq() { + double max = 0; + double max2 = 0.; + int speceq2 = 0; - if (Double.isNaN(dxds.get(1, 0))) { - speceq2 = numberOfComponents + 3; - } + for (int i = 0; i < numberOfComponents + 2; i++) { + double testVal = Math.abs((Math.exp(u.get(i, 0)) - Math.exp(uold.get(i, 0))) / Math.exp(uold.get(i, 0))); - if (speceq != speceq2) { - speceq = speceq2; - } - } + // the most sensitive variable is calculated not by the difference, + // but from the sensibility vector in the original Michelsen code - /** - *

- * useAsSpecEq. - *

- * - * @param i a int - */ - public void useAsSpecEq(int i) { + if (testVal > max) { speceq = i; specVal = u.get(i, 0); - System.out.println("Enforced Scec Variable" + speceq + " " + specVal); - } + max = testVal; + } - /** - *

- * calc_x_y. - *

- */ - public final void calc_x_y() { - sumx = 0; - sumy = 0; - for (int j = 0; j < system.getNumberOfPhases(); j++) { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (j == 0) { - sumy += system.getPhase(j).getComponents()[i].getK() - * system.getPhase(j).getComponents()[i].getz() - / (1.0 - system.getBeta(0) + system.getBeta(0) - * system.getPhase(0).getComponents()[i].getK()); - } - if (j == 1) { - sumx += system.getPhase(0).getComponents()[i].getz() / (1.0 - system.getBeta(0) - + system.getBeta(0) * system.getPhase(0).getComponents()[i].getK()); - } - } - } + testVal = Math.abs(dxds.get(i, 0)); + + if (testVal > max2) { + speceq2 = i; + // double specVal2 = u.get(i, 0); + max2 = testVal; + } } - /** - *

- * setJac2. - *

- */ - public void setJac2() { - Jac.timesEquals(0.0); - double dij = 0.0; - double[] dxidlnk = new double[numberOfComponents]; - double[] dyidlnk = new double[numberOfComponents]; - double tempJ = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - dxidlnk[i] = -system.getBeta() * system.getPhase(1).getComponents()[i].getx() - * system.getPhase(0).getComponents()[i].getx() - / system.getPhase(0).getComponents()[i].getz(); - dyidlnk[i] = system.getPhase(0).getComponents()[i].getx() - + system.getPhase(1).getComponents()[i].getK() * dxidlnk[i]; - } - for (int i = 0; i < numberOfComponents; i++) { - double dlnxdlnK = -1.0 - / (1.0 + system.getBeta() * system.getPhase(0).getComponents()[i].getK() - - system.getBeta()) - * system.getBeta() * system.getPhase(0).getComponents()[i].getK(); - double dlnydlnK = 1.0 - 1.0 - / (system.getPhase(0).getComponents()[i].getK() * system.getBeta() + 1 - - system.getBeta()) - * system.getBeta() * system.getPhase(0).getComponents()[i].getK(); - for (int j = 0; j < numberOfComponents; j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers deltaget - tempJ = -dij + dij * dlnydlnK - dij * dlnxdlnK; - Jac.set(i, j, tempJ); - } - tempJ = system.getTemperature() * (system.getPhase(0).getComponents()[i].getdfugdt() - - system.getPhase(1).getComponents()[i].getdfugdt()); - Jac.set(i, numberOfComponents, tempJ); - tempJ = system.getPressure() * (system.getPhase(0).getComponents()[i].getdfugdp() - - system.getPhase(1).getComponents()[i].getdfugdp()); - Jac.set(i, numberOfComponents + 1, tempJ); - Jac.set(numberOfComponents, i, dyidlnk[i] - dxidlnk[i]); - } - Jac.set(numberOfComponents + 1, speceq, 1.0); + if (Double.isNaN(dxds.get(1, 0))) { + speceq2 = numberOfComponents + 3; } - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac.timesEquals(0.0); - double dij = 0.0; - double[] dxidlnk = new double[numberOfComponents]; - double[] dyidlnk = new double[numberOfComponents]; - double tempJ = 0.0; - for (int i = 0; i < numberOfComponents; i++) { - dxidlnk[i] = -system.getPhase(1).getComponents()[i].getz() - * Math.pow(system.getPhase(0).getComponents()[i].getK() * system.getBeta() + 1.0 - - system.getBeta(), -2.0) - * system.getBeta() * system.getPhase(1).getComponents()[i].getK(); - dyidlnk[i] = system.getPhase(1).getComponents()[i].getz() - / (system.getPhase(0).getComponents()[i].getK() * system.getBeta() + 1.0 - - system.getBeta()) - * system.getPhase(1).getComponents()[i].getK() - - system.getPhase(0).getComponents()[i].getK() - * system.getPhase(1).getComponents()[i].getz() - / Math.pow( - 1.0 - system.getBeta() - + system.getBeta() - * system.getPhase(0).getComponents()[i].getK(), - 2.0) - * system.getBeta() * system.getPhase(0).getComponents()[i].getK(); + if (speceq != speceq2) { + speceq = speceq2; + } + } + + /** + *

+ * useAsSpecEq. + *

+ * + * @param i a int + */ + public void useAsSpecEq(int i) { + speceq = i; + specVal = u.get(i, 0); + System.out.println("Enforced Scec Variable" + speceq + " " + specVal); + } + + /** + *

+ * calc_x_y. + *

+ */ + public final void calc_x_y() { + sumx = 0; + sumy = 0; + for (int j = 0; j < system.getNumberOfPhases(); j++) { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (j == 0) { + sumy += system.getPhase(j).getComponents()[i].getK() + * system.getPhase(j).getComponents()[i].getz() / (1.0 - system.getBeta(0) + + system.getBeta(0) * system.getPhase(0).getComponents()[i].getK()); } - for (int i = 0; i < numberOfComponents; i++) { - for (int j = 0; j < numberOfComponents; j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij + system.getPhase(0).getComponents()[i].getdfugdx(j) * dyidlnk[j] - - system.getPhase(1).getComponents()[i].getdfugdx(j) * dxidlnk[j]; - Jac.set(i, j, tempJ); - } - tempJ = system.getTemperature() * (system.getPhase(0).getComponents()[i].getdfugdt() - - system.getPhase(1).getComponents()[i].getdfugdt()); - Jac.set(i, numberOfComponents, tempJ); - tempJ = system.getPressure() * (system.getPhase(0).getComponents()[i].getdfugdp() - - system.getPhase(1).getComponents()[i].getdfugdp()); - Jac.set(i, numberOfComponents + 1, tempJ); - Jac.set(numberOfComponents, i, dyidlnk[i] - dxidlnk[i]); - Jac.set(numberOfComponents + 1, i, 0.0); + if (j == 1) { + sumx += system.getPhase(0).getComponents()[i].getz() / (1.0 - system.getBeta(0) + + system.getBeta(0) * system.getPhase(0).getComponents()[i].getK()); } - Jac.set(numberOfComponents + 1, speceq, 1.0); + } } - - /** - *

- * Setter for the field u. - *

- */ - public void setu() { - for (int i = 0; i < numberOfComponents; i++) { - u.set(i, 0, Math.log(system.getPhase(0).getComponents()[i].getK())); - } - u.set(numberOfComponents, 0, Math.log(system.getTemperature())); - u.set(numberOfComponents + 1, 0, Math.log(system.getPressure())); + } + + /** + *

+ * setJac2. + *

+ */ + public void setJac2() { + Jac.timesEquals(0.0); + double dij = 0.0; + double[] dxidlnk = new double[numberOfComponents]; + double[] dyidlnk = new double[numberOfComponents]; + double tempJ = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + dxidlnk[i] = -system.getBeta() * system.getPhase(1).getComponents()[i].getx() + * system.getPhase(0).getComponents()[i].getx() + / system.getPhase(0).getComponents()[i].getz(); + dyidlnk[i] = system.getPhase(0).getComponents()[i].getx() + + system.getPhase(1).getComponents()[i].getK() * dxidlnk[i]; } - - /** - *

- * init. - *

- */ - public void init() { - for (int i = 0; i < numberOfComponents; i++) { - system.getPhase(0).getComponents()[i].setK(Math.exp(u.get(i, 0))); - system.getPhase(1).getComponents()[i].setK(Math.exp(u.get(i, 0))); - } - system.setTemperature(Math.exp(u.get(numberOfComponents, 0))); - system.setPressure(Math.exp(u.get(numberOfComponents + 1, 0))); - - calc_x_y(); - system.calc_x_y(); - system.init(3); + for (int i = 0; i < numberOfComponents; i++) { + double dlnxdlnK = -1.0 / (1.0 + system.getBeta() * system.getPhase(0).getComponents()[i].getK() + - system.getBeta()) * system.getBeta() * system.getPhase(0).getComponents()[i].getK(); + double dlnydlnK = 1.0 - 1.0 + / (system.getPhase(0).getComponents()[i].getK() * system.getBeta() + 1 - system.getBeta()) + * system.getBeta() * system.getPhase(0).getComponents()[i].getK(); + for (int j = 0; j < numberOfComponents; j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers deltaget + tempJ = -dij + dij * dlnydlnK - dij * dlnxdlnK; + Jac.set(i, j, tempJ); + } + tempJ = system.getTemperature() * (system.getPhase(0).getComponents()[i].getdfugdt() + - system.getPhase(1).getComponents()[i].getdfugdt()); + Jac.set(i, numberOfComponents, tempJ); + tempJ = system.getPressure() * (system.getPhase(0).getComponents()[i].getdfugdp() + - system.getPhase(1).getComponents()[i].getdfugdp()); + Jac.set(i, numberOfComponents + 1, tempJ); + Jac.set(numberOfComponents, i, dyidlnk[i] - dxidlnk[i]); } - - /** - *

- * calcInc. - *

- * - * @param np a int - */ - public void calcInc(int np) { - // First we need the sensitivity vector dX/dS - // calculates the sensitivity vector and stores the xgij matrix - - init(); - - if (np < 5) { - // for the first five points use as spec eq the nc+1 - // which is pressure - - setu(); - speceq = numberOfComponents + 1; - specVal = u.get(speceq, 0); - setJac(); - fvec.timesEquals(0.0); - fvec.set(speceq, 0, 1.0); - dxds = Jac.solve(fvec); - double dp = 0.1; - ds = dp / dxds.get(numberOfComponents + 1, 0); - - Xgij.setMatrix(0, numberOfComponents + 1, np - 1, np - 1, u.copy()); - u.plusEquals(dxds.times(ds)); - specVal = u.get(speceq, 0); - } else { - // for the rest of the points use as spec eq the most sensitive variable - int speceqOld = speceq; - findSpecEq(); - if (speceq == numberOfComponents + 3) { - speceq = speceqOld; - } - - int intsign = Math.round(Math.round(dxds.get(speceq, 0) * 100000000)); - int sign1 = Integer.signum(intsign); - ds = sign1 * ds; - - setfvec(); - setJac(); - fvec.timesEquals(0.0); - fvec.set(numberOfComponents + 1, 0, 1.0); - - // calculate the dxds of the system - dxds = Jac.solve(fvec); - - // check for critical point - - // check density - // double densV = system.getPhase(0).getDensity(); - // double densL = system.getPhase(1).getDensity(); - // check the proximity to the critical point by addind the lnKs and finding the - // highest - double Kvallc = system.getPhase(0).getComponent(lc).getx() - / system.getPhase(1).getComponent(lc).getx(); - double Kvalhc = system.getPhase(0).getComponent(hc).getx() - / system.getPhase(1).getComponent(hc).getx(); - - if ((etterCP == false)) { - if (Kvallc < 1.05 && Kvalhc > 0.95) { - calcCP = true; - etterCP = true; - npCrit = np; - system.invertPhaseTypes(); - // System.out.println("critical point"); - } - } - - // manipulate stepsize according to the number of iterations of the previous - // point - if (iter > 6) { - ds *= 0.5; - } else { - if (iter < 3) { - ds *= 1.1; - } - if (iter == 3) { - ds *= 1.0; - } - if (iter == 4) { - ds *= 0.9; - } - if (iter > 4) { - ds *= 0.7; - } - } - - // Now we check wheater this ds is greater than dTmax and dPmax. - intsign = Math.round(Math.round(ds * 100000000)); - int sign2 = Integer.signum(intsign); - - if ((1 + dTmax / system.getTemperature()) < Math - .exp(dxds.get(numberOfComponents, 0) * ds)) { - // logger.info("too high dT"); - ds = Math.log(1 + dTmax / system.getTemperature()) - / dxds.get(numberOfComponents, 0); - } else if ((1 - dTmax / system.getTemperature()) > Math - .exp(dxds.get(numberOfComponents, 0) * ds)) { - // logger.info("too low dT"); - ds = Math.log(1 - dTmax / system.getTemperature()) - / dxds.get(numberOfComponents, 0); - } else if ((1 + dPmax / system.getPressure()) < Math - .exp(dxds.get(numberOfComponents + 1, 0) * ds)) { - // logger.info("too low dP"); - ds = Math.log(1 + dPmax / system.getPressure()) - / dxds.get(numberOfComponents + 1, 0); - } else if ((1 - dPmax / system.getPressure()) > Math - .exp(dxds.get(numberOfComponents + 1, 0) * ds)) { - // logger.info("too low dP"); - ds = Math.log(1 - dPmax / system.getPressure()) - / dxds.get(numberOfComponents + 1, 0); - } - ds = sign2 * Math.abs(ds); - - // store the values of the solution for the last 5 iterations - Xgij.setMatrix(0, numberOfComponents + 1, 0, 2, - Xgij.getMatrix(0, numberOfComponents + 1, 1, 3)); - Xgij.setMatrix(0, numberOfComponents + 1, 3, 3, u.copy()); - - s.setMatrix(0, 0, 0, 3, Xgij.getMatrix(speceq, speceq, 0, 3)); - - // calculate next u - calcInc2(np); - } - // since you are calculating the next point the previous iterations should be - // zero - iter = 0; - iter2 = 0; + Jac.set(numberOfComponents + 1, speceq, 1.0); + } + + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac.timesEquals(0.0); + double dij = 0.0; + double[] dxidlnk = new double[numberOfComponents]; + double[] dyidlnk = new double[numberOfComponents]; + double tempJ = 0.0; + for (int i = 0; i < numberOfComponents; i++) { + dxidlnk[i] = -system.getPhase(1).getComponents()[i].getz() + * Math.pow(system.getPhase(0).getComponents()[i].getK() * system.getBeta() + 1.0 + - system.getBeta(), -2.0) + * system.getBeta() * system.getPhase(1).getComponents()[i].getK(); + dyidlnk[i] = system.getPhase(1).getComponents()[i].getz() + / (system.getPhase(0).getComponents()[i].getK() * system.getBeta() + 1.0 + - system.getBeta()) + * system.getPhase(1).getComponents()[i].getK() + - system.getPhase(0).getComponents()[i].getK() + * system.getPhase(1).getComponents()[i].getz() + / Math.pow(1.0 - system.getBeta() + + system.getBeta() * system.getPhase(0).getComponents()[i].getK(), 2.0) + * system.getBeta() * system.getPhase(0).getComponents()[i].getK(); } - - /** - *

- * calcInc2. - *

- * - * @param np a int - */ - public void calcInc2(int np) { - // Here we calcualte the estimate of the next point from the polynomial. - for (int i = 0; i < 4; i++) { - a.set(i, 0, 1.0); - a.set(i, 1, s.get(0, i)); - a.set(i, 2, s.get(0, i) * s.get(0, i)); - a.set(i, 3, a.get(i, 2) * s.get(0, i)); + for (int i = 0; i < numberOfComponents; i++) { + for (int j = 0; j < numberOfComponents; j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij + system.getPhase(0).getComponents()[i].getdfugdx(j) * dyidlnk[j] + - system.getPhase(1).getComponents()[i].getdfugdx(j) * dxidlnk[j]; + Jac.set(i, j, tempJ); + } + tempJ = system.getTemperature() * (system.getPhase(0).getComponents()[i].getdfugdt() + - system.getPhase(1).getComponents()[i].getdfugdt()); + Jac.set(i, numberOfComponents, tempJ); + tempJ = system.getPressure() * (system.getPhase(0).getComponents()[i].getdfugdp() + - system.getPhase(1).getComponents()[i].getdfugdp()); + Jac.set(i, numberOfComponents + 1, tempJ); + Jac.set(numberOfComponents, i, dyidlnk[i] - dxidlnk[i]); + Jac.set(numberOfComponents + 1, i, 0.0); + } + Jac.set(numberOfComponents + 1, speceq, 1.0); + } + + /** + *

+ * Setter for the field u. + *

+ */ + public void setu() { + for (int i = 0; i < numberOfComponents; i++) { + u.set(i, 0, Math.log(system.getPhase(0).getComponents()[i].getK())); + } + u.set(numberOfComponents, 0, Math.log(system.getTemperature())); + u.set(numberOfComponents + 1, 0, Math.log(system.getPressure())); + } + + /** + *

+ * init. + *

+ */ + public void init() { + for (int i = 0; i < numberOfComponents; i++) { + system.getPhase(0).getComponents()[i].setK(Math.exp(u.get(i, 0))); + system.getPhase(1).getComponents()[i].setK(Math.exp(u.get(i, 0))); + } + system.setTemperature(Math.exp(u.get(numberOfComponents, 0))); + system.setPressure(Math.exp(u.get(numberOfComponents + 1, 0))); + + calc_x_y(); + system.calc_x_y(); + system.init(3); + } + + /** + *

+ * calcInc. + *

+ * + * @param np a int + */ + public void calcInc(int np) { + // First we need the sensitivity vector dX/dS + // calculates the sensitivity vector and stores the xgij matrix + + init(); + + if (np < 5) { + // for the first five points use as spec eq the nc+1 + // which is pressure + + setu(); + speceq = numberOfComponents + 1; + specVal = u.get(speceq, 0); + setJac(); + fvec.timesEquals(0.0); + fvec.set(speceq, 0, 1.0); + dxds = Jac.solve(fvec); + double dp = 0.1; + ds = dp / dxds.get(numberOfComponents + 1, 0); + + Xgij.setMatrix(0, numberOfComponents + 1, np - 1, np - 1, u.copy()); + u.plusEquals(dxds.times(ds)); + specVal = u.get(speceq, 0); + } else { + // for the rest of the points use as spec eq the most sensitive variable + int speceqOld = speceq; + findSpecEq(); + if (speceq == numberOfComponents + 3) { + speceq = speceqOld; + } + + int intsign = Math.round(Math.round(dxds.get(speceq, 0) * 100000000)); + int sign1 = Integer.signum(intsign); + ds = sign1 * ds; + + setfvec(); + setJac(); + fvec.timesEquals(0.0); + fvec.set(numberOfComponents + 1, 0, 1.0); + + // calculate the dxds of the system + dxds = Jac.solve(fvec); + + // manipulate stepsize according to the number of iterations of the previous + // point + if (iter > 6) { + ds *= 0.5; + } else { + if (iter < 3) { + ds *= 1.1; } - - // finds the estimate of the next point of the envelope that corresponds - // to the most specified equation - double sny; - sny = ds * dxds.get(speceq, 0) + s.get(0, 3); - specVal = sny; - - // finds the estimate of the next point of the envelope that corresponds - // to all the equations - for (int j = 0; j < neq; j++) { - xg = Xgij.getMatrix(j, j, 0, 3); - try { - xcoef = a.solve(xg.transpose()); - } catch (Exception e) { - xcoef = xcoefOld.copy(); - } - u.set(j, 0, xcoef.get(0, 0) - + sny * (xcoef.get(1, 0) + sny * (xcoef.get(2, 0) + sny * xcoef.get(3, 0)))); + if (iter == 3) { + ds *= 1.0; } - xcoefOld = xcoef.copy(); - } - - /** - *

- * calcCrit. - *

- */ - public void calcCrit() { - // calculates the critical point based on interpolation polynomials - Matrix aa = a.copy(); - Matrix ss = s.copy(); - Matrix xx = Xgij.copy(); - Matrix uu = u.copy(); - - // Here we calcualte the estimate of the next point from the polynomial. - for (int i = 0; i < 4; i++) { - a.set(i, 0, 1.0); - a.set(i, 1, s.get(0, i)); - a.set(i, 2, s.get(0, i) * s.get(0, i)); - a.set(i, 3, a.get(i, 2) * s.get(0, i)); + if (iter == 4) { + ds *= 0.9; } - - double sny; - sny = 0.; - try { - for (int j = 0; j < neq; j++) { - xg = Xgij.getMatrix(j, j, 0, 3); - try { - xcoef = a.solve(xg.transpose()); - } catch (Exception e) { - xcoef = xcoefOld.copy(); - } - u.set(j, 0, xcoef.get(0, 0) + sny - * (xcoef.get(1, 0) + sny * (xcoef.get(2, 0) + sny * xcoef.get(3, 0)))); - } - } catch (Exception e) { - logger.error("error", e); + if (iter > 4) { + ds *= 0.7; } - - system.setTC(Math.exp(u.get(numberOfComponents, 0))); - system.setPC(Math.exp(u.get(numberOfComponents + 1, 0))); - - a = aa.copy(); - s = ss.copy(); - Xgij = xx.copy(); - u = uu.copy(); + } + + // Now we check wheater this ds is greater than dTmax and dPmax. + intsign = Math.round(Math.round(ds * 100000000)); + int sign2 = Integer.signum(intsign); + + if ((1 + dTmax / system.getTemperature()) < Math.exp(dxds.get(numberOfComponents, 0) * ds)) { + // logger.info("too high dT"); + ds = Math.log(1 + dTmax / system.getTemperature()) / dxds.get(numberOfComponents, 0); + } else if ((1 - dTmax / system.getTemperature()) > Math + .exp(dxds.get(numberOfComponents, 0) * ds)) { + // logger.info("too low dT"); + ds = Math.log(1 - dTmax / system.getTemperature()) / dxds.get(numberOfComponents, 0); + } else if ((1 + dPmax / system.getPressure()) < Math + .exp(dxds.get(numberOfComponents + 1, 0) * ds)) { + // logger.info("too low dP"); + ds = Math.log(1 + dPmax / system.getPressure()) / dxds.get(numberOfComponents + 1, 0); + } else if ((1 - dPmax / system.getPressure()) > Math + .exp(dxds.get(numberOfComponents + 1, 0) * ds)) { + // logger.info("too low dP"); + ds = Math.log(1 - dPmax / system.getPressure()) / dxds.get(numberOfComponents + 1, 0); + } + ds = sign2 * Math.abs(ds); + + // store the values of the solution for the last 5 iterations + Xgij.setMatrix(0, numberOfComponents + 1, 0, 2, + Xgij.getMatrix(0, numberOfComponents + 1, 1, 3)); + Xgij.setMatrix(0, numberOfComponents + 1, 3, 3, u.copy()); + + s.setMatrix(0, 0, 0, 3, Xgij.getMatrix(speceq, speceq, 0, 3)); + + // calculate next u + calcInc2(np); } - - /** - *

- * Getter for the field npCrit. - *

- * - * @return a int - */ - public int getNpCrit() { - return npCrit; + // since you are calculating the next point the previous iterations should be + // zero + iter = 0; + iter2 = 0; + } + + /** + *

+ * calcInc2. + *

+ * + * @param np a int + */ + public void calcInc2(int np) { + // Here we calcualte the estimate of the next point from the polynomial. + for (int i = 0; i < 4; i++) { + a.set(i, 0, 1.0); + a.set(i, 1, s.get(0, i)); + a.set(i, 2, s.get(0, i) * s.get(0, i)); + a.set(i, 3, a.get(i, 2) * s.get(0, i)); } - /** - *

- * sign. - *

- * - * @param a a double - * @param b a double - * @return a double - */ - public double sign(double a, double b) { - a = Math.abs(a); - b = b >= 0 ? 1.0 : -1.0; - return a * b; + // finds the estimate of the next point of the envelope that corresponds + // to the most specified equation + double sny; + sny = ds * dxds.get(speceq, 0) + s.get(0, 3); + specVal = sny; + + // finds the estimate of the next point of the envelope that corresponds + // to all the equations + for (int j = 0; j < neq; j++) { + xg = Xgij.getMatrix(j, j, 0, 3); + try { + xcoef = a.solve(xg.transpose()); + } catch (Exception ex) { + xcoef = xcoefOld.copy(); + } + u.set(j, 0, xcoef.get(0, 0) + + sny * (xcoef.get(1, 0) + sny * (xcoef.get(2, 0) + sny * xcoef.get(3, 0)))); + } + xcoefOld = xcoef.copy(); + } + + /** + *

+ * calcCrit. + *

+ */ + public void calcCrit() { + // calculates the critical point based on interpolation polynomials + Matrix aa = a.copy(); + Matrix ss = s.copy(); + Matrix xx = Xgij.copy(); + Matrix uu = u.copy(); + + // Here we calcualte the estimate of the next point from the polynomial. + for (int i = 0; i < 4; i++) { + a.set(i, 0, 1.0); + a.set(i, 1, s.get(0, i)); + a.set(i, 2, s.get(0, i) * s.get(0, i)); + a.set(i, 3, a.get(i, 2) * s.get(0, i)); } - /** - *

- * solve. - *

- * - * @param np a int - */ - public void solve(int np) { - // this method actually solves the phase evnelope point - Matrix dx; - double dxOldNorm = 1e10; - - do { - iter++; - init(); - setfvec(); - setJac(); - - dx = Jac.solve(fvec); - u.minusEquals(dx); - - if (Double.isNaN(dx.norm2()) || Double.isInfinite(dx.norm2())) { - if (iter2 >= 15) { - // deliberate crush - ds = 0. / 0.; - u.set(numberOfComponents, 0, ds); - u.set(numberOfComponents + 1, 0, ds); - } - // if the norm is NAN reduce step and try again - // logger.info("Double.isNaN(dx.norm2())........"); - iter2++; - u = uold.copy(); - ds *= 0.5; - calcInc2(np); - solve(np); - } else if (dxOldNorm < dx.norm2()) { - if (iter2 == 0) { - uolder = uold.copy(); - } - if (iter2 >= 15) { - // deliberate crush - ds = 0. / 0.; - u.set(numberOfComponents, 0, ds); - u.set(numberOfComponents + 1, 0, ds); - } - // if the norm does not reduce there is a danger of entering trivial solution - // reduce step and try again to avoid it - // logger.info("dxOldNorm < dx.norm2()"); - iter2++; - u = uold.copy(); - ds *= 0.5; - calcInc2(np); - solve(np); - } - - if (Double.isNaN(dx.norm2())) { - norm = 1e10; - } else { - norm = dx.norm2(); - dxOldNorm = norm; - } - } while (norm > 1.e-5); - - init(); - findSpecEq(); - - // check density for direction - volold2 = volold; - volold = vol; - vol = system.getPhase(0).getMolarVolume(); - uold = u.copy(); - - if (volold < vol) { - /* - * volold=volold2; ds=-ds; u = uold.copy(); calcInc2(np); solve(np); - */ + double sny; + sny = 0.; + try { + for (int j = 0; j < neq; j++) { + xg = Xgij.getMatrix(j, j, 0, 3); + try { + xcoef = a.solve(xg.transpose()); + } catch (Exception ex) { + xcoef = xcoefOld.copy(); } - - /* - * try { Matrix utest = u.copy(); } catch (Exception e0) { double nef = 0.; } - */ + u.set(j, 0, xcoef.get(0, 0) + + sny * (xcoef.get(1, 0) + sny * (xcoef.get(2, 0) + sny * xcoef.get(3, 0)))); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - /* - * sysNewtonRhapson test=new sysNewtonRhapson(); double[] constants = new double[]{0.4,0.4}; - * test.setx(constants); while (test.nonsol()>1.0e-8) { constants=test.getx(); - * logger.info(constants[0]+" "+constants[1]); } test.nonsol(); constants=test.getf(); - * logger.info(constants[0]+" "+constants[1]); System.exit(0); - */ } + system.setTC(Math.exp(u.get(numberOfComponents, 0))); + system.setPC(Math.exp(u.get(numberOfComponents + 1, 0))); + + a = aa.copy(); + s = ss.copy(); + Xgij = xx.copy(); + u = uu.copy(); + } + + /** + *

+ * Getter for the field npCrit. + *

+ * + * @return a int + */ + public int getNpCrit() { + return npCrit; + } + + /** + *

+ * sign. + *

+ * + * @param a a double + * @param b a double + * @return a double + */ + public double sign(double a, double b) { + a = Math.abs(a); + b = b >= 0 ? 1.0 : -1.0; + return a * b; + } + + /** + *

+ * solve. + *

+ * + * @param np a int + */ + public void solve(int np) { + // this method actually solves the phase evnelope point + Matrix dx; + double dxOldNorm = 1e10; + + do { + iter++; + init(); + setfvec(); + setJac(); + + dx = Jac.solve(fvec); + u.minusEquals(dx); + + if (Double.isNaN(dx.norm2()) || Double.isInfinite(dx.norm2())) { + if (iter2 >= 15) { + // deliberate crush + ds = 0. / 0.; + u.set(numberOfComponents, 0, ds); + u.set(numberOfComponents + 1, 0, ds); + } + // if the norm is NAN reduce step and try again + // logger.info("Double.isNaN(dx.norm2())........"); + iter2++; + u = uold.copy(); + ds *= 0.5; + calcInc2(np); + solve(np); + } else if (dxOldNorm < dx.norm2()) { + if (iter2 == 0) { + uolder = uold.copy(); + } + if (iter2 >= 15) { + // deliberate crush + ds = 0. / 0.; + u.set(numberOfComponents, 0, ds); + u.set(numberOfComponents + 1, 0, ds); + } + // if the norm does not reduce there is a danger of entering trivial solution + // reduce step and try again to avoid it + // logger.info("dxOldNorm < dx.norm2()"); + iter2++; + u = uold.copy(); + ds *= 0.5; + calcInc2(np); + solve(np); + } + + if (Double.isNaN(dx.norm2())) { + norm = 1e10; + } else { + norm = dx.norm2(); + dxOldNorm = norm; + } + } while (norm > 1.e-5); + + init(); + + uold = u.copy(); + + } + } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/sysNewtonRhapsonPhaseEnvelope2.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/sysNewtonRhapsonPhaseEnvelope2.java index d8d704ce59..1fa5ad5d39 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/sysNewtonRhapsonPhaseEnvelope2.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/sysNewtonRhapsonPhaseEnvelope2.java @@ -18,487 +18,498 @@ * @version $Id: $Id */ public class sysNewtonRhapsonPhaseEnvelope2 implements java.io.Serializable { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(sysNewtonRhapsonPhaseEnvelope2.class); - - int neq = 0, iter = 0; - int ic02p = -100, ic03p = -100, testcrit = 0, npCrit = 0; - double beta = 0, ds = 0, dTmax = 1, dPmax = 1, avscp = 0.2, TC1 = 0, TC2 = 0, PC1 = 0, PC2 = 0; - RealMatrix Jac; - RealMatrix fvec; - RealMatrix u; - RealMatrix uold; - RealMatrix Xgij; - SystemInterface system; - int speceq = 0; - RealMatrix a = new Array2DRowRealMatrix(4, 4); - RealMatrix s = new Array2DRowRealMatrix(1, 4); - RealMatrix xg; - RealMatrix xcoef; - newtonRhapson solver; - boolean etterCP = false; - boolean etterCP2 = false; - - /** - *

- * Constructor for sysNewtonRhapsonPhaseEnvelope2. - *

- */ - public sysNewtonRhapsonPhaseEnvelope2() {} - - /** - *

- * Constructor for sysNewtonRhapsonPhaseEnvelope2. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public sysNewtonRhapsonPhaseEnvelope2(SystemInterface system) { - this.system = system; - neq = system.getPhase(0).getNumberOfComponents() + 2; - Jac = new Array2DRowRealMatrix(neq, neq); - fvec = new Array2DRowRealMatrix(neq, 1); - u = new Array2DRowRealMatrix(neq, 1); - Xgij = new Array2DRowRealMatrix(neq, 4); - - setu(); - uold = u.copy(); - findSpecEqInit(); - solver = new newtonRhapson(); - solver.setOrder(3); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(sysNewtonRhapsonPhaseEnvelope2.class); + + int neq = 0; + int iter = 0; + int ic02p = -100; + int ic03p = -100; + int testcrit = 0; + int npCrit = 0; + double beta = 0; + double ds = 0; + double dTmax = 1; + double dPmax = 1; + double avscp = 0.2; + double TC1 = 0; + double TC2 = 0; + double PC1 = 0; + double PC2 = 0; + RealMatrix Jac; + RealMatrix fvec; + RealMatrix u; + RealMatrix uold; + RealMatrix Xgij; + SystemInterface system; + int speceq = 0; + RealMatrix a = new Array2DRowRealMatrix(4, 4); + RealMatrix s = new Array2DRowRealMatrix(1, 4); + RealMatrix xg; + RealMatrix xcoef; + newtonRhapson solver; + boolean etterCP = false; + boolean etterCP2 = false; + + /** + *

+ * Constructor for sysNewtonRhapsonPhaseEnvelope2. + *

+ */ + public sysNewtonRhapsonPhaseEnvelope2() {} + + /** + *

+ * Constructor for sysNewtonRhapsonPhaseEnvelope2. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public sysNewtonRhapsonPhaseEnvelope2(SystemInterface system) { + this.system = system; + neq = system.getPhase(0).getNumberOfComponents() + 2; + Jac = new Array2DRowRealMatrix(neq, neq); + fvec = new Array2DRowRealMatrix(neq, 1); + u = new Array2DRowRealMatrix(neq, 1); + Xgij = new Array2DRowRealMatrix(neq, 4); + + setu(); + uold = u.copy(); + findSpecEqInit(); + solver = new newtonRhapson(); + solver.setOrder(3); + } + + /** + *

+ * Setter for the field fvec. + *

+ */ + public void setfvec() { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + fvec.setEntry(i, 0, + u.getEntry(i, 0) + Math.log(system.getPhase(0).getComponents()[i].getFugacityCoefficient() + / system.getPhase(1).getComponents()[i].getFugacityCoefficient())); } - - /** - *

- * Setter for the field fvec. - *

- */ - public void setfvec() { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - fvec.setEntry(i, 0, u.getEntry(i, 0) - + Math.log(system.getPhase(0).getComponents()[i].getFugacityCoefficient() - / system.getPhase(1).getComponents()[i].getFugacityCoefficient())); - } - double fsum = 0.0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - fsum += system.getPhase(0).getComponents()[i].getx() - - system.getPhase(1).getComponents()[i].getx(); - } - fvec.setEntry(system.getPhase(0).getNumberOfComponents(), 0, fsum); - fvec.setEntry(system.getPhase(0).getNumberOfComponents() + 1, 0, 0); + double fsum = 0.0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + fsum += system.getPhase(0).getComponents()[i].getx() + - system.getPhase(1).getComponents()[i].getx(); } - - /** - *

- * findSpecEqInit. - *

- */ - public void findSpecEqInit() { - speceq = 0; - int speceqmin = 0; - - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (system.getPhase(0).getComponents()[i] - .getTC() > system.getPhase(0).getComponents()[speceq].getTC()) { - speceq = system.getPhase(0).getComponents()[i].getComponentNumber(); - } - if (system.getPhase(0).getComponents()[i] - .getTC() < system.getPhase(0).getComponents()[speceqmin].getTC()) { - speceqmin = system.getPhase(0).getComponents()[i].getComponentNumber(); - } - } - avscp = 0.3;// (system.getPhase(0).getComponents()[speceq].getTC()-system.getPhase(0).getComponents()[speceqmin].getTC())/300.0; - logger.info("avscp: " + avscp); - dTmax = 10.0;// avscp*10; - dPmax = 10.0;// avscp*10; - logger.info("dTmax: " + dTmax + " dPmax: " + dPmax); + fvec.setEntry(system.getPhase(0).getNumberOfComponents(), 0, fsum); + fvec.setEntry(system.getPhase(0).getNumberOfComponents() + 1, 0, 0); + } + + /** + *

+ * findSpecEqInit. + *

+ */ + public void findSpecEqInit() { + speceq = 0; + int speceqmin = 0; + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (system.getPhase(0).getComponents()[i].getTC() > system.getPhase(0).getComponents()[speceq] + .getTC()) { + speceq = system.getPhase(0).getComponents()[i].getComponentNumber(); + } + if (system.getPhase(0).getComponents()[i] + .getTC() < system.getPhase(0).getComponents()[speceqmin].getTC()) { + speceqmin = system.getPhase(0).getComponents()[i].getComponentNumber(); + } } - - /** - *

- * findSpecEq. - *

- */ - public void findSpecEq() { - double max = 0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents() + 2; i++) { - if (Math.abs((u.getEntry(i, 0) - uold.getEntry(i, 0)) / uold.getEntry(i, 0)) > max) { - speceq = i; - max = Math.abs((u.getEntry(i, 0) - uold.getEntry(i, 0)) / uold.getEntry(i, 0)); - } - } - - // logger.info("spec eq: " + speceq); + avscp = 0.3; + // (system.getPhase(0).getComponents()[speceq].getTC() - + // system.getPhase(0).getComponents()[speceqmin].getTC()) / 300.0; + logger.info("avscp: " + avscp); + dTmax = 10.0; // avscp*10; + dPmax = 10.0; // avscp*10; + logger.info("dTmax: " + dTmax + " dPmax: " + dPmax); + } + + /** + *

+ * findSpecEq. + *

+ */ + public void findSpecEq() { + double max = 0; + for (int i = 0; i < system.getPhase(0).getNumberOfComponents() + 2; i++) { + if (Math.abs((u.getEntry(i, 0) - uold.getEntry(i, 0)) / uold.getEntry(i, 0)) > max) { + speceq = i; + max = Math.abs((u.getEntry(i, 0) - uold.getEntry(i, 0)) / uold.getEntry(i, 0)); + } } - /** - *

- * setJac. - *

- */ - public void setJac() { - Jac = Jac.scalarMultiply(0.0); - double dij = 0.0; - double[] dxidlnk = new double[system.getPhase(0).getNumberOfComponents()]; - double[] dyidlnk = new double[system.getPhase(0).getNumberOfComponents()]; - double tempJ = 0.0; - int nofc = system.getPhase(0).getNumberOfComponents(); - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - dxidlnk[i] = -system.getBeta() * system.getPhase(1).getComponents()[i].getx() - * system.getPhase(0).getComponents()[i].getx() - / system.getPhase(0).getComponents()[i].getz(); - dyidlnk[i] = system.getPhase(0).getComponents()[i].getx() - + system.getPhase(1).getComponents()[i].getK() * dxidlnk[i]; - // logger.info("dxidlnk("+i+") "+dxidlnk[i]); - // logger.info("dyidlnk("+i+") "+dyidlnk[i]); - } - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { - dij = i == j ? 1.0 : 0.0;// Kroneckers delta - tempJ = dij + system.getPhase(0).getComponents()[i].getdfugdx(j) * dyidlnk[j] - - system.getPhase(1).getComponents()[i].getdfugdx(j) * dxidlnk[j]; - Jac.setEntry(i, j, tempJ); - } - tempJ = system.getTemperature() * (system.getPhase(0).getComponents()[i].getdfugdt() - - system.getPhase(1).getComponents()[i].getdfugdt()); - Jac.setEntry(i, nofc, tempJ); - tempJ = system.getPressure() * (system.getPhase(0).getComponents()[i].getdfugdp() - - system.getPhase(1).getComponents()[i].getdfugdp()); - Jac.setEntry(i, nofc + 1, tempJ); - Jac.setEntry(nofc, i, dyidlnk[i] - dxidlnk[i]); - } - Jac.setEntry(nofc + 1, speceq, 1.0); + // logger.info("spec eq: " + speceq); + } + + /** + *

+ * setJac. + *

+ */ + public void setJac() { + Jac = Jac.scalarMultiply(0.0); + double dij = 0.0; + double[] dxidlnk = new double[system.getPhase(0).getNumberOfComponents()]; + double[] dyidlnk = new double[system.getPhase(0).getNumberOfComponents()]; + double tempJ = 0.0; + int nofc = system.getPhase(0).getNumberOfComponents(); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + dxidlnk[i] = -system.getBeta() * system.getPhase(1).getComponents()[i].getx() + * system.getPhase(0).getComponents()[i].getx() + / system.getPhase(0).getComponents()[i].getz(); + dyidlnk[i] = system.getPhase(0).getComponents()[i].getx() + + system.getPhase(1).getComponents()[i].getK() * dxidlnk[i]; + // logger.info("dxidlnk("+i+") "+dxidlnk[i]); + // logger.info("dyidlnk("+i+") "+dyidlnk[i]); } - - /** - *

- * Setter for the field u. - *

- */ - public void setu() { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - u.setEntry(i, 0, Math.log(system.getPhase(0).getComponents()[i].getK())); - } - u.setEntry(system.getPhase(0).getNumberOfComponents(), 0, - Math.log(system.getTemperature())); - u.setEntry(system.getPhase(0).getNumberOfComponents() + 1, 0, - Math.log(system.getPressure())); + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + for (int j = 0; j < system.getPhase(0).getNumberOfComponents(); j++) { + dij = i == j ? 1.0 : 0.0; // Kroneckers delta + tempJ = dij + system.getPhase(0).getComponents()[i].getdfugdx(j) * dyidlnk[j] + - system.getPhase(1).getComponents()[i].getdfugdx(j) * dxidlnk[j]; + Jac.setEntry(i, j, tempJ); + } + tempJ = system.getTemperature() * (system.getPhase(0).getComponents()[i].getdfugdt() + - system.getPhase(1).getComponents()[i].getdfugdt()); + Jac.setEntry(i, nofc, tempJ); + tempJ = system.getPressure() * (system.getPhase(0).getComponents()[i].getdfugdp() + - system.getPhase(1).getComponents()[i].getdfugdp()); + Jac.setEntry(i, nofc + 1, tempJ); + Jac.setEntry(nofc, i, dyidlnk[i] - dxidlnk[i]); } - - /** - *

- * init. - *

- */ - public void init() { - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - system.getPhase(0).getComponents()[i].setK(Math.exp(u.getEntry(i, 0))); - system.getPhase(1).getComponents()[i].setK(Math.exp(u.getEntry(i, 0))); - } - system.setTemperature(Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents(), 0))); - system.setPressure(Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents() + 1, 0))); - system.calc_x_y(); - system.init(3); + Jac.setEntry(nofc + 1, speceq, 1.0); + } + + /** + *

+ * Setter for the field u. + *

+ */ + public void setu() { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + u.setEntry(i, 0, Math.log(system.getPhase(0).getComponents()[i].getK())); } - - /** - *

- * calcInc. - *

- * - * @param np a int - */ - public void calcInc(int np) { - // First we need the sensitivity vector dX/dS - - findSpecEq(); - int nofc = system.getPhase(0).getNumberOfComponents(); - fvec = fvec.scalarMultiply(0.0); - fvec.setEntry(nofc + 1, 0, 1.0); - DecompositionSolver solver2 = new LUDecomposition(Jac).getSolver(); - RealMatrix dxds = solver2.solve(fvec); - if (np < 5) { - double dp = 0.1; - ds = dp / dxds.getEntry(nofc + 1, 0); - Xgij.setSubMatrix(u.getData(), 0, np - 1); - dxds = dxds.scalarMultiply(ds); - u = u.add(dxds); - } else { - // logger.info("iter " +iter + " np " + np); - if (iter > 6) { - ds *= 0.5; - logger.info("ds > 6"); - } else { - if (iter < 3) { - ds *= 1.3; - } - if (iter == 3) { - ds *= 1.0; - } - if (iter == 4) { - ds *= 0.9; - } - if (iter > 4) { - ds *= 0.7; - } - - // Now we check wheater this ds is greater than dTmax and dPmax. - if (Math.abs(system.getTemperature() * dxds.getEntry(nofc, 0) * ds) > dTmax) { - // logger.info("true T"); - ds = sign(dTmax / system.getTemperature() / Math.abs(dxds.getEntry(nofc, 0)), - ds); - } - - if (Math.abs(system.getPressure() * dxds.getEntry(nofc + 1, 0) * ds) > dPmax) { - ds = sign(dPmax / system.getPressure() / Math.abs(dxds.getEntry(nofc + 1, 0)), - ds); - // logger.info("true P"); - } - - if (etterCP2) { - etterCP2 = false; - // ds = 0.5*ds; - } - logger.info("ds here " + ds); - - Xgij.setSubMatrix(Xgij.getSubMatrix(0, nofc + 1, 1, 3).getData(), 0, 0); - Xgij.setSubMatrix(u.getData(), 0, 3); - s.setSubMatrix(Xgij.getSubMatrix(speceq, speceq, 0, 3).getData(), 0, 0); - // s.print(0,10); - // logger.info("ds1 : " + ds); - - for (int i = 0; i < nofc + 2; i++) { - logger.info("Xgij " + Xgij.getEntry(i, 0)); - logger.info("Xgij " + Xgij.getEntry(i, 1)); - logger.info("Xgij " + Xgij.getEntry(i, 2)); - logger.info("Xgij " + Xgij.getEntry(i, 3)); - } - calcInc2(np); - - // Here we find the next point from the polynomial. - } - } + u.setEntry(system.getPhase(0).getNumberOfComponents(), 0, Math.log(system.getTemperature())); + u.setEntry(system.getPhase(0).getNumberOfComponents() + 1, 0, Math.log(system.getPressure())); + } + + /** + *

+ * init. + *

+ */ + public void init() { + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + system.getPhase(0).getComponents()[i].setK(Math.exp(u.getEntry(i, 0))); + system.getPhase(1).getComponents()[i].setK(Math.exp(u.getEntry(i, 0))); } - - /** - *

- * calcInc2. - *

- * - * @param np a int - */ - public void calcInc2(int np) { - for (int j = 0; j < neq; j++) { - xg = Xgij.getSubMatrix(j, j, 0, 3); - for (int i = 0; i < 4; i++) { - a.setEntry(i, 0, 1.0); - a.setEntry(i, 1, s.getEntry(0, i)); - a.setEntry(i, 2, s.getEntry(0, i) * s.getEntry(0, i)); - a.setEntry(i, 3, a.getEntry(i, 2) * s.getEntry(0, i)); - } + system.setTemperature(Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents(), 0))); + system.setPressure(Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents() + 1, 0))); + system.calc_x_y(); + system.init(3); + } + + /** + *

+ * calcInc. + *

+ * + * @param np a int + */ + public void calcInc(int np) { + // First we need the sensitivity vector dX/dS + + findSpecEq(); + int nofc = system.getPhase(0).getNumberOfComponents(); + fvec = fvec.scalarMultiply(0.0); + fvec.setEntry(nofc + 1, 0, 1.0); + DecompositionSolver solver2 = new LUDecomposition(Jac).getSolver(); + RealMatrix dxds = solver2.solve(fvec); + if (np < 5) { + double dp = 0.1; + ds = dp / dxds.getEntry(nofc + 1, 0); + Xgij.setSubMatrix(u.getData(), 0, np - 1); + dxds = dxds.scalarMultiply(ds); + u = u.add(dxds); + } else { + // logger.info("iter " +iter + " np " + np); + if (iter > 6) { + ds *= 0.5; + logger.info("ds > 6"); + } else { + if (iter < 3) { + ds *= 1.3; } - for (int j = 0; j < neq; j++) { - xg = Xgij.getSubMatrix(j, j, 0, 3).copy(); - DecompositionSolver solver2 = new LUDecomposition(a).getSolver(); - xcoef = solver2.solve(xg.transpose()); - double sny = ds + s.getEntry(0, 3); - u.setEntry(j, 0, xcoef.getEntry(0, 0) + sny * (xcoef.getEntry(1, 0) - + sny * (xcoef.getEntry(2, 0) + sny * xcoef.getEntry(3, 0)))); - logger.info("u" + j + " " + Math.exp(u.getEntry(j, 0))); + if (iter == 3) { + ds *= 1.0; + } + if (iter == 4) { + ds *= 0.9; + } + if (iter > 4) { + ds *= 0.7; } - uold = u.copy(); - - double xlnkmax = 0; - int numb = 0; - for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { - if (Math.abs(u.getEntry(i, 0)) > xlnkmax) { - xlnkmax = Math.abs(u.getEntry(i, 0)); - numb = i; - } + // Now we check wheater this ds is greater than dTmax and dPmax. + if (Math.abs(system.getTemperature() * dxds.getEntry(nofc, 0) * ds) > dTmax) { + // logger.info("true T"); + ds = sign(dTmax / system.getTemperature() / Math.abs(dxds.getEntry(nofc, 0)), ds); } - logger.info("klnmax: " + u.getEntry(numb, 0) + " np " + np + " xlnmax " + xlnkmax - + "avsxp " + avscp); - // logger.info("np: " + np + " ico2p: " + ic02p + " ic03p " + ic03p); - - if ((testcrit == -3) && ic03p != np) { - etterCP2 = true; - etterCP = true; - logger.info("Etter CP"); - // System.exit(0); - ic03p = np; - testcrit = 0; - xg = Xgij.getSubMatrix(numb, numb, 0, 3); - - for (int i = 0; i < 4; i++) { - a.setEntry(i, 0, 1.0); - a.setEntry(i, 1, s.getEntry(0, i)); - a.setEntry(i, 2, s.getEntry(0, i) * s.getEntry(0, i)); - a.setEntry(i, 3, a.getEntry(i, 2) * s.getEntry(0, i)); - } - - DecompositionSolver solver2 = new LUDecomposition(a).getSolver(); - RealMatrix xcoef = solver2.solve(xg.transpose()); - - double[] coefs = new double[4]; - coefs[0] = xcoef.getEntry(3, 0); - coefs[1] = xcoef.getEntry(2, 0); - coefs[2] = xcoef.getEntry(1, 0); - coefs[3] = xcoef.getEntry(0, 0) - sign(avscp, -s.getEntry(0, 3)); - solver.setConstants(coefs); - - // logger.info("s4: " + s.get(0,3) + " coefs " + coefs[0] +" "+ coefs[1]+" " + - // coefs[2]+" " + coefs[3]); - double nys = solver.solve1order(s.getEntry(0, 3)); - // s = nys - s.get(0,3); - ds = sign(s.getEntry(0, 3) - nys, ds); - // logger.info("critpoint: " + ds); - - // ds = -nys - s.get(0,3); - calcInc2(np); - - TC2 = Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents(), 0)); - PC2 = Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents() + 1, 0)); - system.setTC((TC1 + TC2) * 0.5); - system.setPC((PC1 + PC2) * 0.5); - system.invertPhaseTypes(); - logger.info("invert phases...."); - // system.setPhaseType(0,0); - // system.setPhaseType(1,1); - return; - } else if ((xlnkmax < 1.5 && testcrit != 1) && (np != ic03p && !etterCP)) { - logger.info("hei fra her"); - testcrit = 1; - xg = Xgij.getSubMatrix(numb, numb, 0, 3); - - for (int i = 0; i < 4; i++) { - a.setEntry(i, 0, 1.0); - a.setEntry(i, 1, s.getEntry(0, i)); - a.setEntry(i, 2, s.getEntry(0, i) * s.getEntry(0, i)); - a.setEntry(i, 3, a.getEntry(i, 2) * s.getEntry(0, i)); - } - // a.print(0,10); - // xg.print(0,10); - - DecompositionSolver solver2 = new LUDecomposition(a).getSolver(); - RealMatrix xcoef = solver2.solve(xg.transpose()); - // xcoef.print(0,10); - - double[] coefs = new double[4]; - coefs[0] = xcoef.getEntry(3, 0); - coefs[1] = xcoef.getEntry(2, 0); - coefs[2] = xcoef.getEntry(1, 0); - coefs[3] = xcoef.getEntry(0, 0) - sign(avscp, ds); - solver.setConstants(coefs); - - // logger.info("s4: " + s.get(0,3) + " coefs " + coefs[0] +" "+ coefs[1]+" " + - // coefs[2]+" " + coefs[3]); - double nys = solver.solve1order(s.getEntry(0, 3)); - - ds = -nys - s.getEntry(0, 3); - // logger.info("critpoint: " + ds); - npCrit = np; - - calcInc2(np); - - TC1 = Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents(), 0)); - PC1 = Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents() + 1, 0)); - return; + if (Math.abs(system.getPressure() * dxds.getEntry(nofc + 1, 0) * ds) > dPmax) { + ds = sign(dPmax / system.getPressure() / Math.abs(dxds.getEntry(nofc + 1, 0)), ds); + // logger.info("true P"); } - if (testcrit == 1) { - testcrit = -3; + if (etterCP2) { + etterCP2 = false; + // ds = 0.5*ds; } - } + logger.info("ds here " + ds); + + Xgij.setSubMatrix(Xgij.getSubMatrix(0, nofc + 1, 1, 3).getData(), 0, 0); + Xgij.setSubMatrix(u.getData(), 0, 3); + s.setSubMatrix(Xgij.getSubMatrix(speceq, speceq, 0, 3).getData(), 0, 0); + // s.print(0,10); + // logger.info("ds1 : " + ds); + + for (int i = 0; i < nofc + 2; i++) { + logger.info("Xgij " + Xgij.getEntry(i, 0)); + logger.info("Xgij " + Xgij.getEntry(i, 1)); + logger.info("Xgij " + Xgij.getEntry(i, 2)); + logger.info("Xgij " + Xgij.getEntry(i, 3)); + } + calcInc2(np); - /** - *

- * Getter for the field npCrit. - *

- * - * @return a int - */ - public int getNpCrit() { - return npCrit; + // Here we find the next point from the polynomial. + } } - - /** - *

- * critPassed. - *

- * - * @return a boolean - */ - public boolean critPassed() { - if (testcrit == 1) { - testcrit = -3; - return true; - } else { - return false; - } + } + + /** + *

+ * calcInc2. + *

+ * + * @param np a int + */ + public void calcInc2(int np) { + for (int j = 0; j < neq; j++) { + xg = Xgij.getSubMatrix(j, j, 0, 3); + for (int i = 0; i < 4; i++) { + a.setEntry(i, 0, 1.0); + a.setEntry(i, 1, s.getEntry(0, i)); + a.setEntry(i, 2, s.getEntry(0, i) * s.getEntry(0, i)); + a.setEntry(i, 3, a.getEntry(i, 2) * s.getEntry(0, i)); + } + } + for (int j = 0; j < neq; j++) { + xg = Xgij.getSubMatrix(j, j, 0, 3).copy(); + DecompositionSolver solver2 = new LUDecomposition(a).getSolver(); + xcoef = solver2.solve(xg.transpose()); + double sny = ds + s.getEntry(0, 3); + u.setEntry(j, 0, xcoef.getEntry(0, 0) + sny + * (xcoef.getEntry(1, 0) + sny * (xcoef.getEntry(2, 0) + sny * xcoef.getEntry(3, 0)))); + logger.info("u" + j + " " + Math.exp(u.getEntry(j, 0))); } + uold = u.copy(); - /** - *

- * sign. - *

- * - * @param a a double - * @param b a double - * @return a double - */ - public double sign(double a, double b) { - a = Math.abs(a); - b = b >= 0 ? 1.0 : -1.0; - return a * b; + double xlnkmax = 0; + int numb = 0; + + for (int i = 0; i < system.getPhase(0).getNumberOfComponents(); i++) { + if (Math.abs(u.getEntry(i, 0)) > xlnkmax) { + xlnkmax = Math.abs(u.getEntry(i, 0)); + numb = i; + } } - /** - *

- * solve. - *

- * - * @param np a int - */ - public void solve(int np) { - RealMatrix dx; - iter = 0; - - do { - iter++; - init(); - setfvec(); - setJac(); - DecompositionSolver solver2 = new LUDecomposition(Jac).getSolver(); - dx = solver2.solve(fvec); - u = u.subtract(dx); - - if (iter > 6) { - logger.info("iter > " + iter); - calcInc(np); - solve(np); - break; - } - - logger.info("feilen: " + dx.getNorm() / u.getNorm()); - } while (dx.getNorm() / u.getNorm() > 1.e-10 && !Double.isNaN(dx.getNorm())); - logger.info("iter: " + iter); - init(); + logger.info( + "klnmax: " + u.getEntry(numb, 0) + " np " + np + " xlnmax " + xlnkmax + "avsxp " + avscp); + // logger.info("np: " + np + " ico2p: " + ic02p + " ic03p " + ic03p); + + if ((testcrit == -3) && ic03p != np) { + etterCP2 = true; + etterCP = true; + logger.info("Etter CP"); + // System.exit(0); + ic03p = np; + testcrit = 0; + xg = Xgij.getSubMatrix(numb, numb, 0, 3); + + for (int i = 0; i < 4; i++) { + a.setEntry(i, 0, 1.0); + a.setEntry(i, 1, s.getEntry(0, i)); + a.setEntry(i, 2, s.getEntry(0, i) * s.getEntry(0, i)); + a.setEntry(i, 3, a.getEntry(i, 2) * s.getEntry(0, i)); + } + + DecompositionSolver solver2 = new LUDecomposition(a).getSolver(); + RealMatrix xcoef = solver2.solve(xg.transpose()); + + double[] coefs = new double[4]; + coefs[0] = xcoef.getEntry(3, 0); + coefs[1] = xcoef.getEntry(2, 0); + coefs[2] = xcoef.getEntry(1, 0); + coefs[3] = xcoef.getEntry(0, 0) - sign(avscp, -s.getEntry(0, 3)); + solver.setConstants(coefs); + + // logger.info("s4: " + s.get(0,3) + " coefs " + coefs[0] +" "+ coefs[1]+" " + + // coefs[2]+" " + coefs[3]); + double nys = solver.solve1order(s.getEntry(0, 3)); + // s = nys - s.get(0,3); + ds = sign(s.getEntry(0, 3) - nys, ds); + // logger.info("critpoint: " + ds); + + // ds = -nys - s.get(0,3); + calcInc2(np); + + TC2 = Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents(), 0)); + PC2 = Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents() + 1, 0)); + system.setTC((TC1 + TC2) * 0.5); + system.setPC((PC1 + PC2) * 0.5); + system.invertPhaseTypes(); + logger.info("invert phases...."); + // system.setPhaseType(0,0); + // system.setPhaseType(1,1); + return; + } else if ((xlnkmax < 1.5 && testcrit != 1) && (np != ic03p && !etterCP)) { + logger.info("hei fra her"); + testcrit = 1; + xg = Xgij.getSubMatrix(numb, numb, 0, 3); + + for (int i = 0; i < 4; i++) { + a.setEntry(i, 0, 1.0); + a.setEntry(i, 1, s.getEntry(0, i)); + a.setEntry(i, 2, s.getEntry(0, i) * s.getEntry(0, i)); + a.setEntry(i, 3, a.getEntry(i, 2) * s.getEntry(0, i)); + } + // a.print(0,10); + // xg.print(0,10); + + DecompositionSolver solver2 = new LUDecomposition(a).getSolver(); + RealMatrix xcoef = solver2.solve(xg.transpose()); + // xcoef.print(0,10); + + double[] coefs = new double[4]; + coefs[0] = xcoef.getEntry(3, 0); + coefs[1] = xcoef.getEntry(2, 0); + coefs[2] = xcoef.getEntry(1, 0); + coefs[3] = xcoef.getEntry(0, 0) - sign(avscp, ds); + solver.setConstants(coefs); + + // logger.info("s4: " + s.get(0,3) + " coefs " + coefs[0] +" "+ coefs[1]+" " + + // coefs[2]+" " + coefs[3]); + double nys = solver.solve1order(s.getEntry(0, 3)); + + ds = -nys - s.getEntry(0, 3); + // logger.info("critpoint: " + ds); + npCrit = np; + + calcInc2(np); + + TC1 = Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents(), 0)); + PC1 = Math.exp(u.getEntry(system.getPhase(0).getNumberOfComponents() + 1, 0)); + return; } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects + if (testcrit == 1) { + testcrit = -3; + } + } + + /** + *

+ * Getter for the field npCrit. + *

+ * + * @return a int + */ + public int getNpCrit() { + return npCrit; + } + + /** + *

+ * critPassed. + *

+ * + * @return a boolean + */ + public boolean critPassed() { + if (testcrit == 1) { + testcrit = -3; + return true; + } else { + return false; + } + } + + /** + *

+ * sign. + *

+ * + * @param a a double + * @param b a double + * @return a double + */ + public double sign(double a, double b) { + a = Math.abs(a); + b = b >= 0 ? 1.0 : -1.0; + return a * b; + } + + /** + *

+ * solve. + *

+ * + * @param np a int + */ + public void solve(int np) { + RealMatrix dx; + iter = 0; + + do { + iter++; + init(); + setfvec(); + setJac(); + DecompositionSolver solver2 = new LUDecomposition(Jac).getSolver(); + dx = solver2.solve(fvec); + u = u.subtract(dx); + + if (iter > 6) { + logger.info("iter > " + iter); + calcInc(np); + solve(np); + break; + } + + logger.info("feilen: " + dx.getNorm() / u.getNorm()); + } while (dx.getNorm() / u.getNorm() > 1.e-10 && !Double.isNaN(dx.getNorm())); + logger.info("iter: " + iter); + init(); + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + /* + * sysNewtonRhapson test=new sysNewtonRhapson(); double[] constants = new double[]{0.4,0.4}; + * test.setx(constants); while (test.nonsol()>1.0e-8) { constants=test.getx(); + * logger.info(constants[0]+" "+constants[1]); } test.nonsol(); constants=test.getf(); + * logger.info(constants[0]+" "+constants[1]); System.exit(0); */ - public static void main(String args[]) { - /* - * sysNewtonRhapson test=new sysNewtonRhapson(); double[] constants = new double[]{0.4,0.4}; - * test.setx(constants); while (test.nonsol()>1.0e-8) { constants=test.getx(); - * logger.info(constants[0]+" "+constants[1]); } test.nonsol(); constants=test.getf(); - * logger.info(constants[0]+" "+constants[1]); System.exit(0); - */ } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/reactiveCurves/pLoadingCurve.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/reactiveCurves/pLoadingCurve.java index d09724c10b..f43d5c6f43 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/reactiveCurves/pLoadingCurve.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/reactiveCurves/pLoadingCurve.java @@ -20,158 +20,169 @@ * @version $Id: $Id */ public class pLoadingCurve implements OperationInterface { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(pLoadingCurve.class); - - SystemInterface system; - int i, j = 0, nummer = 0, iterations = 0, maxNumberOfIterations = 10000; - double gibbsEnergy = 0, gibbsEnergyOld = 0; - double Kold, deviation = 0, g0 = 0, g1 = 0; - double lnOldOldK[], lnK[]; - double lnOldK[]; - double oldDeltalnK[], deltalnK[]; - double tm[] = {1, 1}; - double beta = 1e-5; - int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase - JProgressBar monitor; - JFrame mainFrame; - JPanel mainPanel; - - double temp = 0, pres = 0, startPres = 0; - double[][] points = new double[35][]; - - boolean moreLines = false; - // points[2] = new double[1000]; - int speceq = 0; - - /** - *

- * Constructor for pLoadingCurve. - *

- */ - public pLoadingCurve() {} - - /** - *

- * Constructor for pLoadingCurve. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public pLoadingCurve(SystemInterface system) { - this.system = system; - lnOldOldK = new double[system.getPhases()[0].getNumberOfComponents()]; - lnOldK = new double[system.getPhases()[0].getNumberOfComponents()]; - lnK = new double[system.getPhases()[0].getNumberOfComponents()]; - oldDeltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; - deltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; - mainFrame = new JFrame("Progress Bar"); - mainPanel = new JPanel(); - mainPanel.setSize(200, 100); - mainFrame.getContentPane().setLayout(new FlowLayout()); - mainPanel.setLayout(new FlowLayout()); - mainFrame.setSize(200, 100); - monitor = new JProgressBar(0, 1000); - monitor.setSize(200, 100); - monitor.setStringPainted(true); - mainPanel.add(monitor); - mainFrame.getContentPane().add(mainPanel); - mainFrame.setVisible(true); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(pLoadingCurve.class); + + SystemInterface system; + int i; + int j = 0; + int nummer = 0; + int iterations = 0; + int maxNumberOfIterations = 10000; + double gibbsEnergy = 0; + double gibbsEnergyOld = 0; + double Kold; + double deviation = 0; + double g0 = 0; + double g1 = 0; + double lnOldOldK[]; + double lnK[]; + double[] lnOldK; + double oldDeltalnK[]; + double deltalnK[]; + double[] tm = {1, 1}; + double beta = 1e-5; + int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase + JProgressBar monitor; + JFrame mainFrame; + JPanel mainPanel; + + double temp = 0; + double pres = 0; + double startPres = 0; + double[][] points = new double[35][]; + + boolean moreLines = false; + // points[2] = new double[1000]; + int speceq = 0; + + /** + *

+ * Constructor for pLoadingCurve. + *

+ */ + public pLoadingCurve() {} + + /** + *

+ * Constructor for pLoadingCurve. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public pLoadingCurve(SystemInterface system) { + this.system = system; + lnOldOldK = new double[system.getPhases()[0].getNumberOfComponents()]; + lnOldK = new double[system.getPhases()[0].getNumberOfComponents()]; + lnK = new double[system.getPhases()[0].getNumberOfComponents()]; + oldDeltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; + deltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; + mainFrame = new JFrame("Progress Bar"); + mainPanel = new JPanel(); + mainPanel.setSize(200, 100); + mainFrame.getContentPane().setLayout(new FlowLayout()); + mainPanel.setLayout(new FlowLayout()); + mainFrame.setSize(200, 100); + monitor = new JProgressBar(0, 1000); + monitor.setSize(200, 100); + monitor.setStringPainted(true); + mainPanel.add(monitor); + mainFrame.getContentPane().add(mainPanel); + mainFrame.setVisible(true); + } + + /** {@inheritDoc} */ + @Override + public void run() { + int numbPoints = 50; + double inscr = 0.2275; + points[0] = new double[numbPoints]; + points[1] = new double[numbPoints]; + + for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { + points[k + 2] = new double[numbPoints]; + points[k + 2 + system.getPhases()[1].getNumberOfComponents()] = new double[numbPoints]; } - /** {@inheritDoc} */ - @Override - public void run() { - int numbPoints = 50; - double inscr = 0.2275; - points[0] = new double[numbPoints]; - points[1] = new double[numbPoints]; - - for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { - points[k + 2] = new double[numbPoints]; - points[k + 2 + system.getPhases()[1].getNumberOfComponents()] = new double[numbPoints]; - } - - double molMDEA = system.getPhases()[1].getComponents()[2].getNumberOfMolesInPhase(); - system.getChemicalReactionOperations().solveChemEq(0); - - for (int i = 1; i < points[0].length; i++) { - system.init_x_y(); - system.getChemicalReactionOperations().solveChemEq(1); - - points[0][i] = (inscr * (i - 1)) / molMDEA; - points[1][i] = (system.getPhases()[1].getComponents()[0].getFugacityCoefficient() - * system.getPhases()[1].getComponents()[0].getx() * system.getPressure()); - - for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { - points[k + 2][i] = system.getPhases()[1].getComponents()[k].getx(); - points[k + 2 + system.getPhases()[1].getNumberOfComponents()][i] = - system.getPhases()[1].getActivityCoefficient(k, 1); - } - logger.info("point: " + points[0][i] + " " + points[1][i]); - system.setPressure(points[1][i]); - logger.info("ph: " + system.getPhases()[1].getpH()); - system.addComponent(0, inscr, 1); - } - mainFrame.setVisible(false); + double molMDEA = system.getPhases()[1].getComponents()[2].getNumberOfMolesInPhase(); + system.getChemicalReactionOperations().solveChemEq(0); + + for (int i = 1; i < points[0].length; i++) { + system.init_x_y(); + system.getChemicalReactionOperations().solveChemEq(1); + + points[0][i] = (inscr * (i - 1)) / molMDEA; + points[1][i] = (system.getPhases()[1].getComponents()[0].getFugacityCoefficient() + * system.getPhases()[1].getComponents()[0].getx() * system.getPressure()); + + for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { + points[k + 2][i] = system.getPhases()[1].getComponents()[k].getx(); + points[k + 2 + system.getPhases()[1].getNumberOfComponents()][i] = + system.getPhases()[1].getActivityCoefficient(k, 1); + } + logger.info("point: " + points[0][i] + " " + points[1][i]); + system.setPressure(points[1][i]); + logger.info("ph: " + system.getPhases()[1].getpH()); + system.addComponent(0, inscr, 1); } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(1); - nf.applyPattern("####.#"); - - double TC = system.getTC(); - double PC = system.getPC(); - logger.info("tc : " + TC + " PC : " + PC); - String[] navn = {"CO2 fugacity", "", "", ""}; - String title = "CO2 vapour pressure"; - - graph2b graph2 = new graph2b(points, navn, title, "loading [-]", "Fugacity CO2 [bar]"); - graph2.setVisible(true); - } - - /** {@inheritDoc} */ - @Override - public void printToFile(String name) { - neqsim.dataPresentation.dataHandeling printDat = - new neqsim.dataPresentation.dataHandeling(); - printDat.printToFile(points, name); - } - - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return points; - } - - /** {@inheritDoc} */ - @Override - public double[] get(String name) { - return null; - } - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } - - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return null; - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return system; - } - - /** {@inheritDoc} */ - @Override - public void addData(String name, double[][] data) {} + mainFrame.setVisible(false); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(1); + nf.applyPattern("####.#"); + + double TC = system.getTC(); + double PC = system.getPC(); + logger.info("tc : " + TC + " PC : " + PC); + String[] navn = {"CO2 fugacity", "", "", ""}; + String title = "CO2 vapour pressure"; + + graph2b graph2 = new graph2b(points, navn, title, "loading [-]", "Fugacity CO2 [bar]"); + graph2.setVisible(true); + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) { + neqsim.dataPresentation.dataHandeling printDat = new neqsim.dataPresentation.dataHandeling(); + printDat.printToFile(points, name); + } + + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return points; + } + + /** {@inheritDoc} */ + @Override + public double[] get(String name) { + return null; + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return system; + } + + /** {@inheritDoc} */ + @Override + public void addData(String name, double[][] data) {} } diff --git a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/reactiveCurves/pLoadingCurve2.java b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/reactiveCurves/pLoadingCurve2.java index 5990112903..5e97d8ad33 100644 --- a/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/reactiveCurves/pLoadingCurve2.java +++ b/src/main/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/reactiveCurves/pLoadingCurve2.java @@ -21,182 +21,178 @@ * @version $Id: $Id */ public class pLoadingCurve2 extends BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(pLoadingCurve2.class); - - SystemInterface system; - int i, j = 0, nummer = 0, iterations = 0, maxNumberOfIterations = 10000; - double gibbsEnergy = 0, gibbsEnergyOld = 0; - double Kold, deviation = 0, g0 = 0, g1 = 0; - double lnOldOldK[], lnK[]; - double lnOldK[]; - double oldDeltalnK[], deltalnK[]; - double tm[] = {1, 1}; - double beta = 1e-5; - int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase - JProgressBar monitor; - JFrame mainFrame; - JPanel mainPanel; - - double temp = 0, pres = 0, startPres = 0; - double[][] points = new double[35][]; - - boolean moreLines = false; - int np = 0; - // points[2] = new double[1000]; - int speceq = 0; - - /** - *

- * Constructor for pLoadingCurve2. - *

- */ - public pLoadingCurve2() {} - - /** - *

- * Constructor for pLoadingCurve2. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public pLoadingCurve2(SystemInterface system) { - this.system = system; - lnOldOldK = new double[system.getPhases()[0].getNumberOfComponents()]; - lnOldK = new double[system.getPhases()[0].getNumberOfComponents()]; - lnK = new double[system.getPhases()[0].getNumberOfComponents()]; - oldDeltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; - deltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; - mainFrame = new JFrame("Progress Bar"); - mainPanel = new JPanel(); - mainPanel.setSize(200, 100); - mainFrame.getContentPane().setLayout(new FlowLayout()); - mainPanel.setLayout(new FlowLayout()); - mainFrame.setSize(200, 100); - monitor = new JProgressBar(0, 1000); - monitor.setSize(200, 100); - monitor.setStringPainted(true); - mainPanel.add(monitor); - mainFrame.getContentPane().add(mainPanel); - mainFrame.setVisible(true); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(pLoadingCurve2.class); + + SystemInterface system; + int i; + int j = 0; + int nummer = 0; + int iterations = 0; + int maxNumberOfIterations = 10000; + double gibbsEnergy = 0; + double gibbsEnergyOld = 0; + double Kold; + double deviation = 0; + double g0 = 0; + double g1 = 0; + double lnOldOldK[]; + double lnK[]; + double[] lnOldK; + double oldDeltalnK[]; + double deltalnK[]; + double[] tm = {1, 1}; + double beta = 1e-5; + int lowestGibbsEnergyPhase = 0; // lowestGibbsEnergyPhase + JProgressBar monitor; + JFrame mainFrame; + JPanel mainPanel; + + double temp = 0; + double pres = 0; + double startPres = 0; + double[][] points = new double[35][]; + + boolean moreLines = false; + int np = 0; + // points[2] = new double[1000]; + int speceq = 0; + + /** + *

+ * Constructor for pLoadingCurve2. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public pLoadingCurve2(SystemInterface system) { + this.system = system; + lnOldOldK = new double[system.getPhases()[0].getNumberOfComponents()]; + lnOldK = new double[system.getPhases()[0].getNumberOfComponents()]; + lnK = new double[system.getPhases()[0].getNumberOfComponents()]; + oldDeltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; + deltalnK = new double[system.getPhases()[0].getNumberOfComponents()]; + mainFrame = new JFrame("Progress Bar"); + mainPanel = new JPanel(); + mainPanel.setSize(200, 100); + mainFrame.getContentPane().setLayout(new FlowLayout()); + mainPanel.setLayout(new FlowLayout()); + mainFrame.setSize(200, 100); + monitor = new JProgressBar(0, 1000); + monitor.setSize(200, 100); + monitor.setStringPainted(true); + mainPanel.add(monitor); + mainFrame.getContentPane().add(mainPanel); + mainFrame.setVisible(true); + } + + /** {@inheritDoc} */ + @Override + public void run() { + int numbPoints = 50; + double inscr = 0.2103842275; + points[0] = new double[numbPoints]; + points[1] = new double[numbPoints]; + points[2] = new double[numbPoints]; + ThermodynamicOperations testOps = new ThermodynamicOperations(system); + + for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { + points[k + 3] = new double[numbPoints]; + points[k + 3 + system.getPhases()[1].getNumberOfComponents()] = new double[numbPoints]; } - /** {@inheritDoc} */ - @Override - public void run() { - int numbPoints = 50; - double inscr = 0.2103842275; - points[0] = new double[numbPoints]; - points[1] = new double[numbPoints]; - points[2] = new double[numbPoints]; - ThermodynamicOperations testOps = new ThermodynamicOperations(system); - - for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { - points[k + 3] = new double[numbPoints]; - points[k + 3 + system.getPhases()[1].getNumberOfComponents()] = new double[numbPoints]; - } - - double molMDEA = system.getPhases()[1].getComponents()[2].getNumberOfMolesInPhase(); - system.getChemicalReactionOperations().solveChemEq(1); - - for (int i = 1; i < points[0].length; i++) { - system.initBeta(); - system.init_x_y(); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.info(e.toString()); - } - logger.info("beta " + system.getBeta()); - points[0][i] = (inscr * (i - 1)) / molMDEA; - points[1][i] = (system.getPressure()); - points[2][i] = (system.getPressure() * system.getPhase(0).getComponent(0).getx()); - - for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { - points[k + 3][i] = system.getPhases()[1].getComponents()[k].getx(); - points[k + 3 + system.getPhases()[1].getNumberOfComponents()][i] = - system.getPhase(1).getActivityCoefficient(k, 1);// ,1); - } - logger.info("point: " + points[0][i] + " tot pres " + points[1][i] + " CO2 pres " - + points[2][i]); - system.setPressure(points[1][i]); - logger.info("ph: " + system.getPhases()[1].getpH()); - system.addComponent("CO2", inscr); - } - mainFrame.setVisible(false); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - DecimalFormat nf = new DecimalFormat(); - nf.setMaximumFractionDigits(1); - nf.applyPattern("####.#"); - - double TC = system.getTC(); - double PC = system.getPC(); - logger.info("tc : " + TC + " PC : " + PC); - String[] navn = {"CO2 fugacity", "", "", ""}; - String title = "CO2 vapour pressure"; - - graph2b graph2 = new graph2b(points, navn, title, "loading [-]", "Fugacity CO2 [bar]"); - graph2.setVisible(true); - } - - /** {@inheritDoc} */ - @Override - public void printToFile(String name) { - neqsim.dataPresentation.dataHandeling printDat = - new neqsim.dataPresentation.dataHandeling(); - printDat.printToFile(points, name); - } - - /** {@inheritDoc} */ - @Override - public double[][] getPoints(int i) { - return points; - } - - /** {@inheritDoc} */ - /* - @Override - public void createNetCdfFile(String name) { - NetCdf2D file = new NetCdf2D(); - file.setOutputFileName(name); - file.setXvalues(points[0], "loading", ""); - file.setYvalues(points[1], "total pressure", ""); - file.setYvalues(points[2], " CO2 pressure", ""); - for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { - file.setYvalues(points[k + 3], - "mol frac " + system.getPhases()[1].getComponents()[k].getComponentName(), ""); - file.setYvalues(points[k + 3 + system.getPhases()[1].getNumberOfComponents()], - ("activity " + system.getPhases()[1].getComponents()[k].getComponentName()), - ""); - } - file.createFile(); - } -*/ - /** {@inheritDoc} */ - @Override - public double[] get(String name) { - return null; - } - - /** {@inheritDoc} */ - @Override - public org.jfree.chart.JFreeChart getJFreeChart(String name) { - return null; - } - - /** {@inheritDoc} */ - @Override - public String[][] getResultTable() { - return null; - } - - /** {@inheritDoc} */ - @Override - public SystemInterface getThermoSystem() { - return system; + double molMDEA = system.getPhases()[1].getComponents()[2].getNumberOfMolesInPhase(); + system.getChemicalReactionOperations().solveChemEq(1); + + for (int i = 1; i < points[0].length; i++) { + system.initBeta(); + system.init_x_y(); + try { + testOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.info(ex.toString()); + } + logger.info("beta " + system.getBeta()); + points[0][i] = (inscr * (i - 1)) / molMDEA; + points[1][i] = (system.getPressure()); + points[2][i] = (system.getPressure() * system.getPhase(0).getComponent(0).getx()); + + for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { + points[k + 3][i] = system.getPhases()[1].getComponents()[k].getx(); + points[k + 3 + system.getPhases()[1].getNumberOfComponents()][i] = + system.getPhase(1).getActivityCoefficient(k, 1); // ,1); + } + logger.info( + "point: " + points[0][i] + " tot pres " + points[1][i] + " CO2 pres " + points[2][i]); + system.setPressure(points[1][i]); + logger.info("ph: " + system.getPhases()[1].getpH()); + system.addComponent("CO2", inscr); } + mainFrame.setVisible(false); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + DecimalFormat nf = new DecimalFormat(); + nf.setMaximumFractionDigits(1); + nf.applyPattern("####.#"); + + double TC = system.getTC(); + double PC = system.getPC(); + logger.info("tc : " + TC + " PC : " + PC); + String[] navn = {"CO2 fugacity", "", "", ""}; + String title = "CO2 vapour pressure"; + + graph2b graph2 = new graph2b(points, navn, title, "loading [-]", "Fugacity CO2 [bar]"); + graph2.setVisible(true); + } + + /** {@inheritDoc} */ + @Override + public void printToFile(String name) { + neqsim.dataPresentation.dataHandeling printDat = new neqsim.dataPresentation.dataHandeling(); + printDat.printToFile(points, name); + } + + /** {@inheritDoc} */ + @Override + public double[][] getPoints(int i) { + return points; + } + + /* + * public void createNetCdfFile(String name) { NetCdf2D file = new NetCdf2D(); + * file.setOutputFileName(name); file.setXvalues(points[0], "loading", ""); + * file.setYvalues(points[1], "total pressure", ""); file.setYvalues(points[2], " CO2 pressure", + * ""); for (int k = 0; k < system.getPhases()[1].getNumberOfComponents(); k++) { + * file.setYvalues(points[k + 3], "mol frac " + + * system.getPhases()[1].getComponents()[k].getComponentName(), ""); file.setYvalues(points[k + 3 + * + system.getPhases()[1].getNumberOfComponents()], ("activity " + + * system.getPhases()[1].getComponents()[k].getComponentName()), ""); } file.createFile(); } + */ + + /** {@inheritDoc} */ + @Override + public double[] get(String name) { + return null; + } + + /** {@inheritDoc} */ + @Override + public org.jfree.chart.JFreeChart getJFreeChart(String name) { + return null; + } + + /** {@inheritDoc} */ + @Override + public String[][] getResultTable() { + return null; + } + + /** {@inheritDoc} */ + @Override + public SystemInterface getThermoSystem() { + return system; + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGenerator.java b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGenerator.java index ce58221937..c6cc760de7 100644 --- a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGenerator.java +++ b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGenerator.java @@ -5,10 +5,9 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -21,214 +20,234 @@ * @version $Id: $Id */ public class OLGApropertyTableGenerator extends neqsim.thermodynamicOperations.BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(OLGApropertyTableGenerator.class); - - SystemInterface thermoSystem = null; - ThermodynamicOperations thermoOps = null; - double[] pressures, temperatureLOG, temperatures, pressureLOG = null; - double[][] ROG = null, DROGDP, DROHLDP, DROGDT, DROHLDT; - double[][] ROL, CPG, CPHL, HG, HHL, TCG, TCHL, VISG, VISHL, SIGGHL, SEG, SEHL, RS; - double TC, PC; - - /** - *

- * Constructor for OLGApropertyTableGenerator. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public OLGApropertyTableGenerator(SystemInterface system) { - this.thermoSystem = system; - thermoOps = new ThermodynamicOperations(thermoSystem); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(OLGApropertyTableGenerator.class); + + SystemInterface thermoSystem = null; + ThermodynamicOperations thermoOps = null; + double[] pressures; + double[] temperatureLOG; + double[] temperatures; + double[] pressureLOG = null; + double[][] ROG = null; + double[][] DROGDP; + double[][] DROHLDP; + double[][] DROGDT; + double[][] DROHLDT; + double[][] ROL; + double[][] CPG; + double[][] CPHL; + double[][] HG; + double[][] HHL; + double[][] TCG; + double[][] TCHL; + double[][] VISG; + double[][] VISHL; + double[][] SIGGHL; + double[][] SEG; + double[][] SEHL; + double[][] RS; + double TC; + double PC; + + /** + *

+ * Constructor for OLGApropertyTableGenerator. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public OLGApropertyTableGenerator(SystemInterface system) { + this.thermoSystem = system; + thermoOps = new ThermodynamicOperations(thermoSystem); + } + + /** + *

+ * setPressureRange. + *

+ * + * @param minPressure a double + * @param maxPressure a double + * @param numberOfSteps a int + */ + public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { + pressures = new double[numberOfSteps]; + pressureLOG = new double[numberOfSteps]; + double step = (maxPressure - minPressure) / (numberOfSteps * 1.0); + for (int i = 0; i < numberOfSteps; i++) { + pressures[i] = minPressure + i * step; + pressureLOG[i] = pressures[i] * 1e5; + } + } + + /** + *

+ * setTemperatureRange. + *

+ * + * @param minTemperature a double + * @param maxTemperature a double + * @param numberOfSteps a int + */ + public void setTemperatureRange(double minTemperature, double maxTemperature, int numberOfSteps) { + temperatures = new double[numberOfSteps]; + temperatureLOG = new double[numberOfSteps]; + double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0); + for (int i = 0; i < numberOfSteps; i++) { + temperatures[i] = minTemperature + i * step; + temperatureLOG[i] = temperatures[i] - 273.15; } + } + + /** + *

+ * calcPhaseEnvelope. + *

+ */ + public void calcPhaseEnvelope() { + try { + thermoOps.calcPTphaseEnvelope(); + TC = thermoSystem.getTC() - 273.15; + PC = thermoSystem.getPC() * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + /** {@inheritDoc} */ + @Override + public void run() { + // calcPhaseEnvelope(); + ROG = new double[pressures.length][temperatures.length]; + ROL = new double[pressures.length][temperatures.length]; + CPG = new double[pressures.length][temperatures.length]; + CPHL = new double[pressures.length][temperatures.length]; + HG = new double[pressures.length][temperatures.length]; + HHL = new double[pressures.length][temperatures.length]; + VISG = new double[pressures.length][temperatures.length]; + VISHL = new double[pressures.length][temperatures.length]; + TCG = new double[pressures.length][temperatures.length]; + TCHL = new double[pressures.length][temperatures.length]; + SIGGHL = new double[pressures.length][temperatures.length]; + SEG = new double[pressures.length][temperatures.length]; + SEHL = new double[pressures.length][temperatures.length]; + RS = new double[pressures.length][temperatures.length]; + DROGDP = new double[pressures.length][temperatures.length]; + DROHLDP = new double[pressures.length][temperatures.length]; + DROGDT = new double[pressures.length][temperatures.length]; + DROHLDT = new double[pressures.length][temperatures.length]; + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + thermoSystem.setTemperature(temperatures[j]); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + thermoSystem.init(3); + thermoSystem.initPhysicalProperties(); - /** - *

- * setPressureRange. - *

- * - * @param minPressure a double - * @param maxPressure a double - * @param numberOfSteps a int - */ - public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { - pressures = new double[numberOfSteps]; - pressureLOG = new double[numberOfSteps]; - double step = (maxPressure - minPressure) / (numberOfSteps * 1.0); - for (int i = 0; i < numberOfSteps; i++) { - pressures[i] = minPressure + i * step; - pressureLOG[i] = pressures[i] * 1e5; + if (thermoSystem.hasPhaseType("gas")) { + // set gas properties } - } - /** - *

- * setTemperatureRange. - *

- * - * @param minTemperature a double - * @param maxTemperature a double - * @param numberOfSteps a int - */ - public void setTemperatureRange(double minTemperature, double maxTemperature, - int numberOfSteps) { - temperatures = new double[numberOfSteps]; - temperatureLOG = new double[numberOfSteps]; - double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0); - for (int i = 0; i < numberOfSteps; i++) { - temperatures[i] = minTemperature + i * step; - temperatureLOG[i] = temperatures[i] - 273.15; + if (thermoSystem.hasPhaseType("oil")) { + // set oil properties } - } - /** - *

- * calcPhaseEnvelope. - *

- */ - public void calcPhaseEnvelope() { - try { - thermoOps.calcPTphaseEnvelope(); - TC = thermoSystem.getTC() - 273.15; - PC = thermoSystem.getPC() * 1e5; - } catch (Exception e) { - logger.error("error", e); + if (thermoSystem.hasPhaseType("aqueous")) { + // set aqueous properties } - } - /** {@inheritDoc} */ - @Override - public void run() { - // calcPhaseEnvelope(); - ROG = new double[pressures.length][temperatures.length]; - ROL = new double[pressures.length][temperatures.length]; - CPG = new double[pressures.length][temperatures.length]; - CPHL = new double[pressures.length][temperatures.length]; - HG = new double[pressures.length][temperatures.length]; - HHL = new double[pressures.length][temperatures.length]; - VISG = new double[pressures.length][temperatures.length]; - VISHL = new double[pressures.length][temperatures.length]; - TCG = new double[pressures.length][temperatures.length]; - TCHL = new double[pressures.length][temperatures.length]; - SIGGHL = new double[pressures.length][temperatures.length]; - SEG = new double[pressures.length][temperatures.length]; - SEHL = new double[pressures.length][temperatures.length]; - RS = new double[pressures.length][temperatures.length]; - DROGDP = new double[pressures.length][temperatures.length]; - DROHLDP = new double[pressures.length][temperatures.length]; - DROGDT = new double[pressures.length][temperatures.length]; - DROHLDT = new double[pressures.length][temperatures.length]; - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - thermoSystem.setTemperature(temperatures[j]); - try { - thermoOps.TPflash(); - } catch (Exception e) { - logger.error("error", e); - } - thermoSystem.init(3); - thermoSystem.initPhysicalProperties(); - - if (thermoSystem.hasPhaseType("gas")) { - // set gas properties - } - - if (thermoSystem.hasPhaseType("oil")) { - // set oil properties - } - - if (thermoSystem.hasPhaseType("aqueous")) { - // set aqueous properties - } - - if (!thermoSystem.hasPhaseType("gas")) { - thermoSystem.setPhaseType("oil", 1); - thermoSystem.init(3); - thermoSystem.initPhysicalProperties(); - - // setGasProperties(); - // set gas properties - } - - if (!thermoSystem.hasPhaseType("oil")) { - thermoSystem.setPhaseType("gas", 1); - thermoSystem.init(3); - thermoSystem.initPhysicalProperties(); - - // setOilProperties(); - // set gas properties - } - - if (!thermoSystem.hasPhaseType("aqueous")) { - thermoSystem.setPhaseType(1, 1); - thermoSystem.init(3); - thermoSystem.initPhysicalProperties(); - - // setOilProperties(); - // set gas properties - } - - // set extropalated oil values - // set gas properties as it was liquid - ROG[i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); - ROL[i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); - DROGDP[i][j] = thermoSystem.getPhase(0).getdrhodP(); - DROHLDP[i][j] = thermoSystem.getPhase(1).getdrhodP(); - DROGDT[i][j] = thermoSystem.getPhase(0).getdrhodT(); - DROHLDT[i][j] = thermoSystem.getPhase(1).getdrhodT(); - CPG[i][j] = thermoSystem.getPhase(0).getCp(); - CPHL[i][j] = thermoSystem.getPhase(1).getCp(); - HG[i][j] = thermoSystem.getPhase(0).getEnthalpy(); - HHL[i][j] = thermoSystem.getPhase(1).getEnthalpy(); - TCG[i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getConductivity(); - TCHL[i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getConductivity(); - VISG[i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getViscosity(); - VISHL[i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getViscosity(); - SIGGHL[i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension(0, 1); - SEG[i][j] = thermoSystem.getPhase(0).getEntropy(); - SEHL[i][j] = thermoSystem.getPhase(1).getEntropy(); - RS[i][j] = thermoSystem.getPhase(0).getBeta(); - } + if (!thermoSystem.hasPhaseType("gas")) { + thermoSystem.setPhaseType(thermoSystem.getPhaseNumberOfPhase(PhaseType.OIL), + PhaseType.byValue(1)); + thermoSystem.init(3); + thermoSystem.initPhysicalProperties(); + + // setGasProperties(); + // set gas properties } - } - /** {@inheritDoc} */ - @Override - public void displayResult() { - logger.info("TC " + TC + " PC " + PC); - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - logger.info("pressure " + pressureLOG[i] + " temperature " + temperatureLOG[j] - + " ROG " + ROG[i][j] + " ROL " + ROL[i][j]); - } + if (!thermoSystem.hasPhaseType("oil")) { + thermoSystem.setPhaseType(thermoSystem.getPhaseNumberOfPhase(PhaseType.GAS), + PhaseType.byValue(1)); + thermoSystem.init(3); + thermoSystem.initPhysicalProperties(); + + // setOilProperties(); + // set gas properties } - writeOLGAinpFile(""); - } - /** - *

- * writeOLGAinpFile. - *

- * - * @param filename a {@link java.lang.String} object - */ - public void writeOLGAinpFile(String filename) { - try (Writer writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream("c:/temp/filename.txt"), "utf-8"))) { - - writer.write("PRESSURE= ("); - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - thermoSystem.setTemperature(temperatures[j]); - writer.write(ROG[i][j] + ","); - } - } - } catch (IOException ex) { - // report + if (!thermoSystem.hasPhaseType("aqueous")) { + thermoSystem.setPhaseType(1, PhaseType.byValue(1)); + thermoSystem.init(3); + thermoSystem.initPhysicalProperties(); + + // setOilProperties(); + // set gas properties + } + + // set extropalated oil values + // set gas properties as it was liquid + ROG[i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); + ROL[i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); + DROGDP[i][j] = thermoSystem.getPhase(0).getdrhodP(); + DROHLDP[i][j] = thermoSystem.getPhase(1).getdrhodP(); + DROGDT[i][j] = thermoSystem.getPhase(0).getdrhodT(); + DROHLDT[i][j] = thermoSystem.getPhase(1).getdrhodT(); + CPG[i][j] = thermoSystem.getPhase(0).getCp(); + CPHL[i][j] = thermoSystem.getPhase(1).getCp(); + HG[i][j] = thermoSystem.getPhase(0).getEnthalpy(); + HHL[i][j] = thermoSystem.getPhase(1).getEnthalpy(); + TCG[i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getConductivity(); + TCHL[i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getConductivity(); + VISG[i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getViscosity(); + VISHL[i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getViscosity(); + SIGGHL[i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension(0, 1); + SEG[i][j] = thermoSystem.getPhase(0).getEntropy(); + SEHL[i][j] = thermoSystem.getPhase(1).getEntropy(); + RS[i][j] = thermoSystem.getPhase(0).getBeta(); + } + } + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + logger.info("TC " + TC + " PC " + PC); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + logger.info("pressure " + pressureLOG[i] + " temperature " + temperatureLOG[j] + " ROG " + + ROG[i][j] + " ROL " + ROL[i][j]); + } + } + writeOLGAinpFile(""); + } + + /** + *

+ * writeOLGAinpFile. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile(String filename) { + try (Writer writer = new BufferedWriter( + new OutputStreamWriter(new FileOutputStream("c:/temp/filename.txt"), "utf-8"))) { + writer.write("PRESSURE= ("); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + thermoSystem.setTemperature(temperatures[j]); + writer.write(ROG[i][j] + ","); } + } + } catch (IOException ex) { + // report } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorKeywordFormat.java b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorKeywordFormat.java index 6bcfacc63e..dd8ea2e0af 100644 --- a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorKeywordFormat.java +++ b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorKeywordFormat.java @@ -7,6 +7,7 @@ import java.io.Writer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -19,528 +20,547 @@ * @version $Id: $Id */ public class OLGApropertyTableGeneratorKeywordFormat - extends neqsim.thermodynamicOperations.BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorKeywordFormat.class); - - SystemInterface thermoSystem = null; - ThermodynamicOperations thermoOps = null; - double stdPres = 1.01325, stdPresATM = 1, stdTemp = 288.15; - double[] molfracs, MW, dens; - String[] components; - double GOR, GLR, stdGasDens, stdLiqDens; - double[] pressures, temperatureLOG, temperatures, pressureLOG = null; - double[][] ROG = null; // DROGDP, DROHLDP, DROGDT, DROHLDT; - double[] bubP, bubT, dewP, bubPLOG, dewPLOG, bubTLOG; - double[][] ROL, CPG, CPHL, HG, HHL, TCG, TCHL, VISG, VISHL, SIGGHL, SEG, SEHL, RS; - double TC, PC, TCLOG, PCLOG; - double[][][] props; - int nProps; - String[] names; - String[] units; - String[] namesKeyword; - - /** - *

- * Constructor for OLGApropertyTableGeneratorKeywordFormat. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public OLGApropertyTableGeneratorKeywordFormat(SystemInterface system) { - this.thermoSystem = system; - thermoOps = new ThermodynamicOperations(thermoSystem); + extends neqsim.thermodynamicOperations.BaseOperation { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorKeywordFormat.class); + + SystemInterface thermoSystem = null; + ThermodynamicOperations thermoOps = null; + double stdPres = ThermodynamicConstantsInterface.referencePressure; + double stdPresATM = 1; + double stdTemp = 288.15; + double[] molfracs; + double[] MW; + double[] dens; + String[] components; + double GOR; + double GLR; + double stdGasDens; + double stdLiqDens; + double[] pressures; + double[] temperatureLOG; + double[] temperatures; + double[] pressureLOG = null; + double[][] ROG = null; // DROGDP, DROHLDP, DROGDT, DROHLDT; + double[] bubP; + double[] bubT; + double[] dewP; + double[] bubPLOG; + double[] dewPLOG; + double[] bubTLOG; + double[][] ROL; + double[][] CPG; + double[][] CPHL; + double[][] HG; + double[][] HHL; + double[][] TCG; + double[][] TCHL; + double[][] VISG; + double[][] VISHL; + double[][] SIGGHL; + double[][] SEG; + double[][] SEHL; + double[][] RS; + double TC; + double PC; + double TCLOG; + double PCLOG; + double[][][] props; + int nProps; + String[] names; + String[] units; + String[] namesKeyword; + + /** + *

+ * Constructor for OLGApropertyTableGeneratorKeywordFormat. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public OLGApropertyTableGeneratorKeywordFormat(SystemInterface system) { + this.thermoSystem = system; + thermoOps = new ThermodynamicOperations(thermoSystem); + } + + /** + *

+ * setPressureRange. + *

+ * + * @param minPressure a double + * @param maxPressure a double + * @param numberOfSteps a int + */ + public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { + pressures = new double[numberOfSteps]; + pressureLOG = new double[numberOfSteps]; + double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + pressures[i] = minPressure + i * step; + pressureLOG[i] = pressures[i] * 1e5; } - - /** - *

- * setPressureRange. - *

- * - * @param minPressure a double - * @param maxPressure a double - * @param numberOfSteps a int - */ - public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { - pressures = new double[numberOfSteps]; - pressureLOG = new double[numberOfSteps]; - double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - pressures[i] = minPressure + i * step; - pressureLOG[i] = pressures[i] * 1e5; - } + } + + /** + *

+ * setTemperatureRange. + *

+ * + * @param minTemperature a double + * @param maxTemperature a double + * @param numberOfSteps a int + */ + public void setTemperatureRange(double minTemperature, double maxTemperature, int numberOfSteps) { + temperatures = new double[numberOfSteps]; + temperatureLOG = new double[numberOfSteps]; + double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + temperatures[i] = minTemperature + i * step; + temperatureLOG[i] = temperatures[i] - 273.15; } - - /** - *

- * setTemperatureRange. - *

- * - * @param minTemperature a double - * @param maxTemperature a double - * @param numberOfSteps a int - */ - public void setTemperatureRange(double minTemperature, double maxTemperature, - int numberOfSteps) { - temperatures = new double[numberOfSteps]; - temperatureLOG = new double[numberOfSteps]; - double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - temperatures[i] = minTemperature + i * step; - temperatureLOG[i] = temperatures[i] - 273.15; - } + } + + /** + *

+ * calcPhaseEnvelope. + *

+ */ + public void calcPhaseEnvelope() { + try { + thermoOps.calcPTphaseEnvelope(); + TCLOG = thermoSystem.getTC(); + PCLOG = thermoSystem.getPC() * 0.986923267; // convert to ATM + TC = thermoSystem.getTC() - 273.15; + PC = thermoSystem.getPC() * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - /** - *

- * calcPhaseEnvelope. - *

- */ - public void calcPhaseEnvelope() { - try { - thermoOps.calcPTphaseEnvelope(); - TCLOG = thermoSystem.getTC(); - PCLOG = thermoSystem.getPC() * 0.986923267; // convert to ATM - TC = thermoSystem.getTC() - 273.15; - PC = thermoSystem.getPC() * 1e5; - } catch (Exception e) { - logger.error("error", e); - } - - // thermoOps.ge + // thermoOps.ge + } + + /** + *

+ * calcBubP. + *

+ * + * @param temperatures an array of type double + * @return an array of type double + */ + public double[] calcBubP(double[] temperatures) { + double[] bubP = new double[temperatures.length]; + bubPLOG = new double[temperatures.length]; + for (int i = 0; i < temperatures.length; i++) { + thermoSystem.setTemperature(temperatures[i]); + try { + thermoOps.bubblePointPressureFlash(false); + bubP[i] = thermoSystem.getPressure(); + bubPLOG[i] = bubP[i] * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubP[i] = 0; + } } - - /** - *

- * calcBubP. - *

- * - * @param temperatures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubP(double[] temperatures) { - double[] bubP = new double[temperatures.length]; - bubPLOG = new double[temperatures.length]; - for (int i = 0; i < temperatures.length; i++) { - thermoSystem.setTemperature(temperatures[i]); - try { - thermoOps.bubblePointPressureFlash(false); - bubP[i] = thermoSystem.getPressure(); - bubPLOG[i] = bubP[i] * 1e5; - } catch (Exception e) { - logger.error("error", e); - bubP[i] = 0; - } - } - return bubP; + return bubP; + } + + /** + *

+ * calcDewP. + *

+ * + * @param temperatures an array of type double + * @return an array of type double + */ + public double[] calcDewP(double[] temperatures) { + double[] dewP = new double[temperatures.length]; + dewPLOG = new double[temperatures.length]; + for (int i = 0; i < temperatures.length; i++) { + thermoSystem.setTemperature(temperatures[i]); + try { + thermoOps.dewPointPressureFlash(); + dewP[i] = thermoSystem.getPressure(); + dewPLOG[i] = dewP[i] * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + dewP[i] = 0; + } } - - /** - *

- * calcDewP. - *

- * - * @param temperatures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcDewP(double[] temperatures) { - double[] dewP = new double[temperatures.length]; - dewPLOG = new double[temperatures.length]; - for (int i = 0; i < temperatures.length; i++) { - thermoSystem.setTemperature(temperatures[i]); - try { - thermoOps.dewPointPressureFlash(); - dewP[i] = thermoSystem.getPressure(); - dewPLOG[i] = dewP[i] * 1e5; - } catch (Exception e) { - logger.error("error", e); - dewP[i] = 0; - } - } - return dewP; + return dewP; + } + + /** + *

+ * calcBubT. + *

+ * + * @param pressures an array of type double + * @return an array of type double + */ + public double[] calcBubT(double[] pressures) { + double[] bubT = new double[pressures.length]; + bubTLOG = new double[pressures.length]; + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + try { + thermoOps.bubblePointTemperatureFlash(); + bubT[i] = thermoSystem.getTemperature(); + bubTLOG[i] = bubT[i] - 273.15; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubT[i] = 0.0; + } } - - /** - *

- * calcBubT. - *

- * - * @param pressures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubT(double[] pressures) { - double[] bubT = new double[pressures.length]; - bubTLOG = new double[pressures.length]; - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - try { - thermoOps.bubblePointTemperatureFlash(); - bubT[i] = thermoSystem.getTemperature(); - bubTLOG[i] = bubT[i] - 273.15; - } catch (Exception e) { - logger.error("error", e); - bubT[i] = 0.0; - } - } - return bubT; + return bubT; + } + + /** + *

+ * initCalc. + *

+ */ + public void initCalc() { + molfracs = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + MW = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + dens = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + components = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; + + for (int i = 0; i < molfracs.length; i++) { + molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); + components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); + MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; + dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); } - /** - *

- * initCalc. - *

+ thermoSystem.setTemperature(stdTemp); + thermoSystem.setPressure(stdPres); + + thermoOps.TPflash(); + thermoSystem.initPhysicalProperties(); + + GOR = thermoSystem.getPhase(0).getTotalVolume() / thermoSystem.getPhase(1).getTotalVolume(); + GLR = thermoSystem.getPhase(0).getTotalVolume() / thermoSystem.getPhase(1).getTotalVolume(); + + stdGasDens = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); + stdLiqDens = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); + } + + /** {@inheritDoc} */ + @Override + public void run() { + logger.info("Start creating arrays"); + + nProps = 18; + props = new double[nProps][pressures.length][temperatures.length]; + units = new String[nProps]; + names = new String[nProps]; + namesKeyword = new String[nProps]; + calcPhaseEnvelope(); + /* + * ROG = new double[pressures.length][temperatures.length]; ROL = new + * double[pressures.length][temperatures.length]; CPG = new + * double[pressures.length][temperatures.length]; CPHL = new + * double[pressures.length][temperatures.length]; HG = new + * double[pressures.length][temperatures.length]; HHL = new + * double[pressures.length][temperatures.length]; VISG = new + * double[pressures.length][temperatures.length]; VISHL = new + * double[pressures.length][temperatures.length]; TCG = new + * double[pressures.length][temperatures.length]; TCHL = new + * double[pressures.length][temperatures.length]; // SIGGHL = new + * double[pressures.length][temperatures.length]; SEG = new + * double[pressures.length][temperatures.length]; SEHL = new + * double[pressures.length][temperatures.length]; RS = new + * double[pressures.length][temperatures.length]; // DROGDP = new + * double[pressures.length][temperatures.length]; // DROHLDP = new + * double[pressures.length][temperatures.length]; // DROGDT = new + * double[pressures.length][temperatures.length]; // DROHLDT = new + * double[pressures.length][temperatures.length]; */ - public void initCalc() { - molfracs = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - MW = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - dens = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - components = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; - - for (int i = 0; i < molfracs.length; i++) { - molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); - components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); - MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; - dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); - } - - thermoSystem.setTemperature(stdTemp); - thermoSystem.setPressure(stdPres); - thermoOps.TPflash(); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + thermoSystem.setTemperature(temperatures[j]); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + thermoSystem.init(3); thermoSystem.initPhysicalProperties(); - - GOR = thermoSystem.getPhase(0).getTotalVolume() / thermoSystem.getPhase(1).getTotalVolume(); - GLR = thermoSystem.getPhase(0).getTotalVolume() / thermoSystem.getPhase(1).getTotalVolume(); - - stdGasDens = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); - stdLiqDens = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); - } - - /** {@inheritDoc} */ - @Override - public void run() { - logger.info("Start creating arrays"); - - nProps = 18; - props = new double[nProps][pressures.length][temperatures.length]; - units = new String[nProps]; - names = new String[nProps]; - namesKeyword = new String[nProps]; - calcPhaseEnvelope(); /* - * ROG = new double[pressures.length][temperatures.length]; ROL = new - * double[pressures.length][temperatures.length]; CPG = new - * double[pressures.length][temperatures.length]; CPHL = new - * double[pressures.length][temperatures.length]; HG = new - * double[pressures.length][temperatures.length]; HHL = new - * double[pressures.length][temperatures.length]; VISG = new - * double[pressures.length][temperatures.length]; VISHL = new - * double[pressures.length][temperatures.length]; TCG = new - * double[pressures.length][temperatures.length]; TCHL = new - * double[pressures.length][temperatures.length]; // SIGGHL = new - * double[pressures.length][temperatures.length]; SEG = new - * double[pressures.length][temperatures.length]; SEHL = new - * double[pressures.length][temperatures.length]; RS = new - * double[pressures.length][temperatures.length]; // DROGDP = new - * double[pressures.length][temperatures.length]; // DROHLDP = new - * double[pressures.length][temperatures.length]; // DROGDT = new - * double[pressures.length][temperatures.length]; // DROHLDT = new - * double[pressures.length][temperatures.length]; + * ROG[i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); ROL[i][j] = + * thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); DROGDP[i][j] = + * thermoSystem.getPhase(0).getdrhodP(); // DROHLDP[i][j] = + * thermoSystem.getPhase(1).getdrhodP(); // DROGDT[i][j] = + * thermoSystem.getPhase(0).getdrhodT(); // DROHLDT[i][j] = + * thermoSystem.getPhase(1).getdrhodT(); CPG[i][j] = thermoSystem.getPhase(0).getCp(); + * CPHL[i][j] = thermoSystem.getPhase(1).getCp(); HG[i][j] = + * thermoSystem.getPhase(0).getEnthalpy(); HHL[i][j] = + * thermoSystem.getPhase(1).getEnthalpy(); TCG[i][j] = + * thermoSystem.getPhase(0).getPhysicalProperties().getConductivity(); TCHL[i][j] = + * thermoSystem.getPhase(1).getPhysicalProperties().getConductivity(); VISG[i][j] = + * thermoSystem.getPhase(0).getPhysicalProperties().getViscosity(); VISHL[i][j] = + * thermoSystem.getPhase(1).getPhysicalProperties().getViscosity(); // SIGGHL[i][j] = + * thermoSystem.getInterphaseProperties().getSurfaceTension(0, 1); SEG[i][j] = + * thermoSystem.getPhase(0).getEntropy(); SEHL[i][j] = + * thermoSystem.getPhase(1).getEntropy(); RS[i][j] = thermoSystem.getPhase(0).getBeta(); */ - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - thermoSystem.setTemperature(temperatures[j]); - try { - thermoOps.TPflash(); - } catch (Exception e) { - logger.error("error", e); - } - thermoSystem.init(3); - thermoSystem.initPhysicalProperties(); - /* - * ROG[i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); - * ROL[i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); - * DROGDP[i][j] = thermoSystem.getPhase(0).getdrhodP(); // DROHLDP[i][j] = - * thermoSystem.getPhase(1).getdrhodP(); // DROGDT[i][j] = - * thermoSystem.getPhase(0).getdrhodT(); // DROHLDT[i][j] = - * thermoSystem.getPhase(1).getdrhodT(); CPG[i][j] = - * thermoSystem.getPhase(0).getCp(); CPHL[i][j] = thermoSystem.getPhase(1).getCp(); - * HG[i][j] = thermoSystem.getPhase(0).getEnthalpy(); HHL[i][j] = - * thermoSystem.getPhase(1).getEnthalpy(); TCG[i][j] = - * thermoSystem.getPhase(0).getPhysicalProperties().getConductivity(); TCHL[i][j] = - * thermoSystem.getPhase(1).getPhysicalProperties().getConductivity(); VISG[i][j] = - * thermoSystem.getPhase(0).getPhysicalProperties().getViscosity(); VISHL[i][j] = - * thermoSystem.getPhase(1).getPhysicalProperties().getViscosity(); // SIGGHL[i][j] - * = thermoSystem.getInterphaseProperties().getSurfaceTension(0, 1); SEG[i][j] = - * thermoSystem.getPhase(0).getEntropy(); SEHL[i][j] = - * thermoSystem.getPhase(1).getEntropy(); RS[i][j] = - * thermoSystem.getPhase(0).getBeta(); - */ - - int k = 0; - props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "GAS DENSITY"; - units[k] = "KG/M3"; - namesKeyword[k] = "ROG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); - names[k] = "LIQUID DENSITY"; - units[k] = "KG/M3"; - namesKeyword[k] = "ROHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOG/DP"; - units[k] = "S2/M2"; - namesKeyword[k] = "DROGDP"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getdrhodP() / 1.0e5; - names[k] = "DRHOL/DP"; - units[k] = "S2/M2"; - namesKeyword[k] = "DROHLDP"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOG/DT"; - units[k] = "KG/M3-K"; - namesKeyword[k] = "DROGDT"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getdrhodT(); - names[k] = "DRHOL/DT"; - units[k] = "KG/M3-K"; - namesKeyword[k] = "DROHLDT"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getBeta() - * thermoSystem.getPhase(0).getMolarMass() / thermoSystem.getMolarMass(); - names[k] = "GAS MASS FRACTION"; - units[k] = "-"; - namesKeyword[k] = "RS"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "GAS VISCOSITY"; - units[k] = "NS/M2"; - namesKeyword[k] = "VISG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getViscosity(); - names[k] = "LIQUID VISCOSITY"; - units[k] = "NS/M2"; - namesKeyword[k] = "VISHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getCp() - / thermoSystem.getPhase(0).getNumberOfMolesInPhase() - / thermoSystem.getPhase(0).getMolarMass(); - names[k] = "GAS HEAT CAPACITY"; - units[k] = "J/KG-K"; - namesKeyword[k] = "CPG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getCp() - / thermoSystem.getPhase(1).getNumberOfMolesInPhase() - / thermoSystem.getPhase(1).getMolarMass(); - names[k] = "LIQUID HEAT CAPACITY"; - units[k] = "J/KG-K"; - namesKeyword[k] = "CPHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getEnthalpy() - / thermoSystem.getPhase(0).getNumberOfMolesInPhase() - / thermoSystem.getPhase(0).getMolarMass(); - names[k] = "GAS ENTHALPY"; - units[k] = "J/KG"; - namesKeyword[k] = "HG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getEnthalpy() - / thermoSystem.getPhase(1).getNumberOfMolesInPhase() - / thermoSystem.getPhase(1).getMolarMass(); - names[k] = "LIQUD ENTHALPY"; - units[k] = "J/KG"; - namesKeyword[k] = "HHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "GAS THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - namesKeyword[k] = "TCG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getConductivity(); - names[k] = "LIQUID THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - namesKeyword[k] = "TCHL"; - k++; - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension(0, 1); - names[k] = "VAPOR-LIQUID SURFACE TENSION"; - units[k] = "N/M"; - namesKeyword[k] = "SIGGHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getEntropy() - / thermoSystem.getPhase(0).getNumberOfMolesInPhase() - / thermoSystem.getPhase(0).getMolarMass(); - names[k] = "GAS ENTROPY"; - units[k] = "J/KG-K"; - namesKeyword[k] = "SEG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getEntropy() - / thermoSystem.getPhase(1).getNumberOfMolesInPhase() - / thermoSystem.getPhase(1).getMolarMass(); - names[k] = "LIQUID ENTROPY"; - units[k] = "J/KG-K"; - namesKeyword[k] = "SEHL"; - k++; - } - } - bubP = calcBubP(temperatures); - // dewP = calcDewP(temperatures); - bubT = calcBubT(temperatures); - logger.info("Finished creating arrays"); - initCalc(); + int k = 0; + props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "GAS DENSITY"; + units[k] = "KG/M3"; + namesKeyword[k] = "ROG"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); + names[k] = "LIQUID DENSITY"; + units[k] = "KG/M3"; + namesKeyword[k] = "ROHL"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOG/DP"; + units[k] = "S2/M2"; + namesKeyword[k] = "DROGDP"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getdrhodP() / 1.0e5; + names[k] = "DRHOL/DP"; + units[k] = "S2/M2"; + namesKeyword[k] = "DROHLDP"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOG/DT"; + units[k] = "KG/M3-K"; + namesKeyword[k] = "DROGDT"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getdrhodT(); + names[k] = "DRHOL/DT"; + units[k] = "KG/M3-K"; + namesKeyword[k] = "DROHLDT"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getBeta() + * thermoSystem.getPhase(0).getMolarMass() / thermoSystem.getMolarMass(); + names[k] = "GAS MASS FRACTION"; + units[k] = "-"; + namesKeyword[k] = "RS"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "GAS VISCOSITY"; + units[k] = "NS/M2"; + namesKeyword[k] = "VISG"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getViscosity(); + names[k] = "LIQUID VISCOSITY"; + units[k] = "NS/M2"; + namesKeyword[k] = "VISHL"; + k++; + props[k][i][j] = + thermoSystem.getPhase(0).getCp() / thermoSystem.getPhase(0).getNumberOfMolesInPhase() + / thermoSystem.getPhase(0).getMolarMass(); + names[k] = "GAS HEAT CAPACITY"; + units[k] = "J/KG-K"; + namesKeyword[k] = "CPG"; + k++; + props[k][i][j] = + thermoSystem.getPhase(1).getCp() / thermoSystem.getPhase(1).getNumberOfMolesInPhase() + / thermoSystem.getPhase(1).getMolarMass(); + names[k] = "LIQUID HEAT CAPACITY"; + units[k] = "J/KG-K"; + namesKeyword[k] = "CPHL"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getEnthalpy() + / thermoSystem.getPhase(0).getNumberOfMolesInPhase() + / thermoSystem.getPhase(0).getMolarMass(); + names[k] = "GAS ENTHALPY"; + units[k] = "J/KG"; + namesKeyword[k] = "HG"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getEnthalpy() + / thermoSystem.getPhase(1).getNumberOfMolesInPhase() + / thermoSystem.getPhase(1).getMolarMass(); + names[k] = "LIQUD ENTHALPY"; + units[k] = "J/KG"; + namesKeyword[k] = "HHL"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "GAS THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + namesKeyword[k] = "TCG"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getConductivity(); + names[k] = "LIQUID THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + namesKeyword[k] = "TCHL"; + k++; + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension(0, 1); + names[k] = "VAPOR-LIQUID SURFACE TENSION"; + units[k] = "N/M"; + namesKeyword[k] = "SIGGHL"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getEntropy() + / thermoSystem.getPhase(0).getNumberOfMolesInPhase() + / thermoSystem.getPhase(0).getMolarMass(); + names[k] = "GAS ENTROPY"; + units[k] = "J/KG-K"; + namesKeyword[k] = "SEG"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getEntropy() + / thermoSystem.getPhase(1).getNumberOfMolesInPhase() + / thermoSystem.getPhase(1).getMolarMass(); + names[k] = "LIQUID ENTROPY"; + units[k] = "J/KG-K"; + namesKeyword[k] = "SEHL"; + k++; + } } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - logger.info("TC " + TC + " PC " + PC); - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - logger.info("pressure " + pressureLOG[i] + " temperature " + temperatureLOG[j]); // + - // " - // ROG - // " - // + - // ROG[i][j] - // + - // " - // ROL - // " - // + - // ROL[i][j]); - } - } - writeOLGAinpFile(""); + bubP = calcBubP(temperatures); + // dewP = calcDewP(temperatures); + bubT = calcBubT(temperatures); + logger.info("Finished creating arrays"); + initCalc(); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + logger.info("TC " + TC + " PC " + PC); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + logger.info("pressure " + pressureLOG[i] + " temperature " + temperatureLOG[j]); + // + "ROG"+ROG[i][j]+"ROL" + ROL[i][j]); + } } - - /** - *

- * writeOLGAinpFile. - *

- * - * @param filename a {@link java.lang.String} object - */ - public void writeOLGAinpFile(String filename) { - try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream( - "C:/Users/Kjetil Raul/Documents/Master KRB/2phaseTables/testFluidKeyCPAExtra.tab"), - "utf-8"))) { - writer.write("PVTTABLE LABEL = " + "\"" + "NewFluid" + "\"" + "," + "PHASE = TWO" - + ",\\" + "\n"); - writer.write("EOS = " + "\"" + "Equation" + "\"" + ",\\" + "\n"); - - writer.write("COMPONENTS = ("); - for (int i = 0; i < molfracs.length; i++) { - writer.write("\"" + components[i] + "\""); // How to set extra " ?? - if (i < molfracs.length - 1) { - writer.write(","); - } - } - writer.write("),\\" + "\n"); - - writer.write("MOLES = ("); - for (int i = 0; i < molfracs.length; i++) { - writer.write(molfracs[i] + ""); - if (i < molfracs.length - 1) { - writer.write(","); - } - } - writer.write("),\\" + "\n"); - - writer.write("MOLWEIGHT = ("); - for (int i = 0; i < molfracs.length; i++) { - writer.write(MW[i] + ""); - if (i < molfracs.length - 1) { - writer.write(","); - } - } - writer.write(") g/mol,\\" + "\n"); - - writer.write("DENSITY = ("); - for (int i = 0; i < molfracs.length; i++) { - writer.write(dens[i] + ""); - if (i < molfracs.length - 1) { - writer.write(","); - } - } - writer.write(") g/cm3,\\" + "\n"); - - writer.write("STDPRESSURE = " + stdPresATM + " ATM,\\" + "\n"); - writer.write("STDTEMPERATURE = " + stdTemp + " K,\\" + "\n"); - writer.write("GOR = " + GOR + " Sm3/Sm3,\\" + "\n"); - writer.write("GLR = " + GLR + " Sm3/Sm3,\\" + "\n"); - writer.write("STDGASDENSITY = " + stdGasDens + " kg/m3,\\" + "\n"); - writer.write("STDOILDENSITY = " + stdLiqDens + " kg/m3,\\" + "\n"); - writer.write("CRITICALPRESSURE = " + PCLOG + " ATM,\\" + "\n"); - writer.write("CRITICALTEMPERATURE = " + TCLOG + " K,\\" + "\n"); - - writer.write("MESHTYPE = STANDARD" + ",\\" + "\n"); - - writer.write("PRESSURE = ("); - for (int i = 0; i < pressures.length; i++) { - writer.write(pressureLOG[i] + ""); - if (i < pressures.length - 1) { - writer.write(","); - } - } - writer.write(") Pa,\\" + "\n"); - - writer.write("TEMPERATURE = ("); - for (int i = 0; i < temperatures.length; i++) { - writer.write(temperatureLOG[i] + ""); - if (i < temperatures.length - 1) { - writer.write(","); - } - } - writer.write(") C,\\" + "\n"); - - writer.write("BUBBLEPRESSURES = ("); - for (int i = 0; i < temperatures.length; i++) { - writer.write(bubPLOG[i] + ""); - if (i < temperatures.length - 1) { - writer.write(","); - } - } - writer.write(") Pa,\\" + "\n"); - - writer.write("BUBBLETEMPERATURES = ("); - for (int i = 0; i < pressures.length; i++) { - writer.write(bubTLOG[i] + ""); - if (i < pressures.length - 1) { - writer.write(","); - } - } - writer.write(") C,\\" + "\n"); - - writer.write("COLUMNS = (PT,TM,"); - for (int k = 0; k < nProps; k++) { - writer.write(namesKeyword[k] + ""); - if (k < nProps - 1) { - writer.write(","); - } - } - writer.write(")" + "\n"); - - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - thermoSystem.setTemperature(temperatures[j]); - writer.write("PVTTABLE POINT = ("); - writer.write(pressureLOG[i] + ","); - writer.write(temperatureLOG[j] + ","); - for (int k = 0; k < nProps; k++) { - writer.write(props[k][i][j] + ""); - if (k < nProps - 1) { - writer.write(","); - } - } - writer.write(")" + "\n"); - } + writeOLGAinpFile(""); + } + + /** + *

+ * writeOLGAinpFile. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile(String filename) { + try (Writer writer = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream( + "C:/Users/Kjetil Raul/Documents/Master KRB/2phaseTables/testFluidKeyCPAExtra.tab"), + "utf-8"))) { + writer.write( + "PVTTABLE LABEL = " + "\"" + "NewFluid" + "\"" + "," + "PHASE = TWO" + ",\\" + "\n"); + writer.write("EOS = " + "\"" + "Equation" + "\"" + ",\\" + "\n"); + + writer.write("COMPONENTS = ("); + for (int i = 0; i < molfracs.length; i++) { + writer.write("\"" + components[i] + "\""); // How to set extra " ?? + if (i < molfracs.length - 1) { + writer.write(","); + } + } + writer.write("),\\" + "\n"); + + writer.write("MOLES = ("); + for (int i = 0; i < molfracs.length; i++) { + writer.write(molfracs[i] + ""); + if (i < molfracs.length - 1) { + writer.write(","); + } + } + writer.write("),\\" + "\n"); + + writer.write("MOLWEIGHT = ("); + for (int i = 0; i < molfracs.length; i++) { + writer.write(MW[i] + ""); + if (i < molfracs.length - 1) { + writer.write(","); + } + } + writer.write(") g/mol,\\" + "\n"); + + writer.write("DENSITY = ("); + for (int i = 0; i < molfracs.length; i++) { + writer.write(dens[i] + ""); + if (i < molfracs.length - 1) { + writer.write(","); + } + } + writer.write(") g/cm3,\\" + "\n"); + + writer.write("STDPRESSURE = " + stdPresATM + " ATM,\\" + "\n"); + writer.write("STDTEMPERATURE = " + stdTemp + " K,\\" + "\n"); + writer.write("GOR = " + GOR + " Sm3/Sm3,\\" + "\n"); + writer.write("GLR = " + GLR + " Sm3/Sm3,\\" + "\n"); + writer.write("STDGASDENSITY = " + stdGasDens + " kg/m3,\\" + "\n"); + writer.write("STDOILDENSITY = " + stdLiqDens + " kg/m3,\\" + "\n"); + writer.write("CRITICALPRESSURE = " + PCLOG + " ATM,\\" + "\n"); + writer.write("CRITICALTEMPERATURE = " + TCLOG + " K,\\" + "\n"); + + writer.write("MESHTYPE = STANDARD" + ",\\" + "\n"); + + writer.write("PRESSURE = ("); + for (int i = 0; i < pressures.length; i++) { + writer.write(pressureLOG[i] + ""); + if (i < pressures.length - 1) { + writer.write(","); + } + } + writer.write(") Pa,\\" + "\n"); + + writer.write("TEMPERATURE = ("); + for (int i = 0; i < temperatures.length; i++) { + writer.write(temperatureLOG[i] + ""); + if (i < temperatures.length - 1) { + writer.write(","); + } + } + writer.write(") C,\\" + "\n"); + + writer.write("BUBBLEPRESSURES = ("); + for (int i = 0; i < temperatures.length; i++) { + writer.write(bubPLOG[i] + ""); + if (i < temperatures.length - 1) { + writer.write(","); + } + } + writer.write(") Pa,\\" + "\n"); + + writer.write("BUBBLETEMPERATURES = ("); + for (int i = 0; i < pressures.length; i++) { + writer.write(bubTLOG[i] + ""); + if (i < pressures.length - 1) { + writer.write(","); + } + } + writer.write(") C,\\" + "\n"); + + writer.write("COLUMNS = (PT,TM,"); + for (int k = 0; k < nProps; k++) { + writer.write(namesKeyword[k] + ""); + if (k < nProps - 1) { + writer.write(","); + } + } + writer.write(")" + "\n"); + + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + thermoSystem.setTemperature(temperatures[j]); + writer.write("PVTTABLE POINT = ("); + writer.write(pressureLOG[i] + ","); + writer.write(temperatureLOG[j] + ","); + for (int k = 0; k < nProps; k++) { + writer.write(props[k][i][j] + ""); + if (k < nProps - 1) { + writer.write(","); } - } catch (IOException ex) { - // report + } + writer.write(")" + "\n"); } + } + } catch (IOException ex) { + // report } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWater.java b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWater.java index 827866df42..def27913b0 100644 --- a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWater.java +++ b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWater.java @@ -10,6 +10,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import Jama.Matrix; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermo.system.SystemSrkEos; @@ -24,1507 +26,1474 @@ * @version $Id: $Id */ public class OLGApropertyTableGeneratorWater extends neqsim.thermodynamicOperations.BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorWater.class); - - BicubicInterpolator interpolationFunc = new BicubicInterpolator(); - SystemInterface thermoSystem = null, gasSystem = null, oilSystem = null, waterSystem = null; - ThermodynamicOperations thermoOps = null; - double[] pressures, temperatureLOG, temperatures, pressureLOG = null; - double[] bubP, bubT, dewP, bubPLOG, dewPLOG; - Matrix XMatrixgas, XMatrixoil, XMatrixwater; - double[][] ROG = null; - // double[][] ROL, CPG, CPHL, HG, HHL, TCG, TCHL, VISG, VISHL, SIGGHL, SEG, - // SEHL, RS; - double TC, PC; - double RSWTOB; - double[][][] props; - int nProps; - String[] names; - Matrix[] xcoef = new Matrix[9]; - String[] units; - int temperatureSteps, pressureSteps; - boolean continuousDerivativesExtrapolation = true; - boolean hasGasValues = false; - boolean hasOilValues = false; - boolean hasWaterValues = false; - boolean[][][] hasValue; - Matrix aMatrix = new Matrix(4, 4); - Matrix s = new Matrix(1, 4); - String fileName = "c:/Appl/OLGAneqsim.tab"; - - /** - *

- * Constructor for OLGApropertyTableGeneratorWater. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public OLGApropertyTableGeneratorWater(SystemInterface system) { - this.thermoSystem = system; - thermoOps = new ThermodynamicOperations(thermoSystem); - - XMatrixgas = new Matrix(9, 4); - XMatrixoil = new Matrix(9, 4); - XMatrixwater = new Matrix(9, 4); - - gasSystem = new SystemSrkEos(298, 10); - gasSystem.addComponent("methane", 1); - // gasSystem.createDatabase(true); - gasSystem.init(0); - gasSystem.setNumberOfPhases(1); - - waterSystem = new SystemSrkCPAstatoil(298, 10); - waterSystem.addComponent("water", 1); - // waterSystem.createDatabase(true); - waterSystem.init(0); - waterSystem.setNumberOfPhases(1); - - oilSystem = new SystemSrkEos(298, 10); - oilSystem.addComponent("nC10", 1); - // oilSystem.createDatabase(true); - oilSystem.init(0); - oilSystem.setNumberOfPhases(1); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorWater.class); + + BicubicInterpolator interpolationFunc = new BicubicInterpolator(); + SystemInterface thermoSystem = null; + SystemInterface gasSystem = null; + SystemInterface oilSystem = null; + SystemInterface waterSystem = null; + ThermodynamicOperations thermoOps = null; + double[] pressures; + double[] temperatureLOG; + double[] temperatures; + double[] pressureLOG = null; + double[] bubP; + double[] bubT; + double[] dewP; + double[] bubPLOG; + double[] dewPLOG; + Matrix XMatrixgas; + Matrix XMatrixoil; + Matrix XMatrixwater; + double[][] ROG = null; + double TC; + double PC; + double RSWTOB; + double[][][] props; + int nProps; + String[] names; + Matrix[] xcoef = new Matrix[9]; + String[] units; + int temperatureSteps; + int pressureSteps; + boolean continuousDerivativesExtrapolation = true; + boolean hasGasValues = false; + boolean hasOilValues = false; + boolean hasWaterValues = false; + boolean[][][] hasValue; + Matrix aMatrix = new Matrix(4, 4); + Matrix s = new Matrix(1, 4); + String fileName = "c:/Appl/OLGAneqsim.tab"; + + /** + *

+ * Constructor for OLGApropertyTableGeneratorWater. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public OLGApropertyTableGeneratorWater(SystemInterface system) { + this.thermoSystem = system; + thermoOps = new ThermodynamicOperations(thermoSystem); + + XMatrixgas = new Matrix(9, 4); + XMatrixoil = new Matrix(9, 4); + XMatrixwater = new Matrix(9, 4); + + gasSystem = new SystemSrkEos(298, 10); + gasSystem.addComponent("methane", 1); + // gasSystem.createDatabase(true); + gasSystem.init(0); + gasSystem.setNumberOfPhases(1); + + waterSystem = new SystemSrkCPAstatoil(298, 10); + waterSystem.addComponent("water", 1); + // waterSystem.createDatabase(true); + waterSystem.init(0); + waterSystem.setNumberOfPhases(1); + + oilSystem = new SystemSrkEos(298, 10); + oilSystem.addComponent("nC10", 1); + // oilSystem.createDatabase(true); + oilSystem.init(0); + oilSystem.setNumberOfPhases(1); + } + + /** + *

+ * Setter for the field fileName. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setFileName(String name) { + fileName = name; + } + + /** + *

+ * setPressureRange. + *

+ * + * @param minPressure a double + * @param maxPressure a double + * @param numberOfSteps a int + */ + public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { + pressures = new double[numberOfSteps]; + pressureLOG = new double[numberOfSteps]; + double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + pressures[i] = minPressure + i * step; + pressureLOG[i] = pressures[i] * 1e5; } - - /** - *

- * Setter for the field fileName. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setFileName(String name) { - fileName = name; + } + + /** + *

+ * setTemperatureRange. + *

+ * + * @param minTemperature a double + * @param maxTemperature a double + * @param numberOfSteps a int + */ + public void setTemperatureRange(double minTemperature, double maxTemperature, int numberOfSteps) { + temperatures = new double[numberOfSteps]; + temperatureLOG = new double[numberOfSteps]; + double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + temperatures[i] = minTemperature + i * step; + temperatureLOG[i] = temperatures[i] - 273.15; + } + } + + /** + *

+ * calcPhaseEnvelope. + *

+ */ + public void calcPhaseEnvelope() { + try { + thermoOps.calcPTphaseEnvelope(); + TC = thermoSystem.getTC() - 273.15; + PC = thermoSystem.getPC() * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + /** + *

+ * calcBubP. + *

+ * + * @param temperatures an array of type double + * @return an array of type double + */ + public double[] calcBubP(double[] temperatures) { + double[] bubP = new double[temperatures.length]; + bubPLOG = new double[temperatures.length]; + for (int i = 0; i < temperatures.length; i++) { + thermoSystem.setTemperature(temperatures[i]); + try { + thermoOps.bubblePointPressureFlash(false); + bubP[i] = thermoSystem.getPressure(); + bubPLOG[i] = bubP[i] * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubP[i] = 0; + } + } + return bubP; + } + + /** + *

+ * calcDewP. + *

+ * + * @param temperatures an array of type double + * @return an array of type double + */ + public double[] calcDewP(double[] temperatures) { + double[] dewP = new double[temperatures.length]; + dewPLOG = new double[temperatures.length]; + for (int i = 0; i < temperatures.length; i++) { + thermoSystem.setTemperature(temperatures[i]); + try { + thermoOps.dewPointPressureFlashHC(); + dewP[i] = thermoSystem.getPressure(); + dewPLOG[i] = dewP[i] * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + dewP[i] = 0; + } + } + return dewP; + } + + /** + *

+ * calcBubT. + *

+ * + * @param pressures an array of type double + * @return an array of type double + */ + public double[] calcBubT(double[] pressures) { + double[] bubTemps = new double[pressures.length]; + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + try { + thermoOps.bubblePointTemperatureFlash(); + bubT[i] = thermoSystem.getPressure(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubT[i] = 0.0; + } + } + return bubTemps; + } + + /** + *

+ * initCalc. + *

+ */ + public void initCalc() { + double stdTemp = 288.15; + double stdPres = ThermodynamicConstantsInterface.referencePressure; + // double GOR, GLR; + double[] molfracs = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + double[] MW = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + double[] dens = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + String[] components = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; + + for (int i = 0; i < molfracs.length; i++) { + molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); + components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); + MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; + dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); } - /** - *

- * setPressureRange. - *

- * - * @param minPressure a double - * @param maxPressure a double - * @param numberOfSteps a int - */ - public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { - pressures = new double[numberOfSteps]; - pressureLOG = new double[numberOfSteps]; - double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - pressures[i] = minPressure + i * step; - pressureLOG[i] = pressures[i] * 1e5; - } + thermoSystem.setTemperature(stdTemp); + thermoSystem.setPressure(stdPres); + + thermoOps.TPflash(); + + // GOR = thermoSystem.getPhase(0).getTotalVolume() / + // thermoSystem.getPhase(1).getTotalVolume(); + // GLR = thermoSystem.getPhase(0).getTotalVolume() / + // thermoSystem.getPhase(1).getTotalVolume(); + } + + /** + *

+ * calcRSWTOB. + *

+ */ + public void calcRSWTOB() { + thermoSystem.init(0); + thermoSystem.init(1); + if (thermoSystem.getPhase(0).hasComponent("water")) { + RSWTOB = thermoSystem.getPhase(0).getComponent("water").getNumberOfmoles() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / (thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarMass()); + } else { + RSWTOB = 0.0; } + } + + /** {@inheritDoc} */ + @Override + public void run() { + calcRSWTOB(); + logger.info("RSWTOB " + RSWTOB); + nProps = 29; + props = new double[nProps][pressures.length][temperatures.length]; + units = new String[nProps]; + names = new String[nProps]; + + // int startGasTemperatures = 0; + boolean acceptedFlash = true; + for (int j = 0; j < temperatures.length; j++) { + thermoSystem.setTemperature(temperatures[j]); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + try { + logger.info("TPflash... " + thermoSystem.getTemperature() + " pressure " + + thermoSystem.getPressure()); + if (thermoSystem.getTemperature() > (273.15 + 106.8)) { + logger.info("here I am"); + thermoOps.TPflash(); + } else { + thermoOps.TPflash(); + } + thermoSystem.init(3); + thermoSystem.initPhysicalProperties(); + acceptedFlash = true; + } catch (Exception ex) { + acceptedFlash = false; + logger.info("fail temperature " + thermoSystem.getTemperature() + " fail pressure " + + thermoSystem.getPressure()); + + thermoSystem.display(); + logger.error(ex.getMessage(), ex); + } - /** - *

- * setTemperatureRange. - *

- * - * @param minTemperature a double - * @param maxTemperature a double - * @param numberOfSteps a int - */ - public void setTemperatureRange(double minTemperature, double maxTemperature, - int numberOfSteps) { - temperatures = new double[numberOfSteps]; - temperatureLOG = new double[numberOfSteps]; - double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - temperatures[i] = minTemperature + i * step; - temperatureLOG[i] = temperatures[i] - 273.15; + /* + * logger.info("water density " + + * thermoSystem.getPhase(2).getPhysicalProperties().getDensity()); logger.info("RSW " + + * thermoSystem.getPhase(0).getComponent("water").getx() * + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() / + * thermoSystem.getPhase(0).getMolarMass()); logger.info("surf tens oil-water " + + * thermoSystem.getInterphaseProperties().getSurfaceTension(1, 2)); + * logger.info("surf tens gas-water " + + * thermoSystem.getInterphaseProperties().getSurfaceTension(0, 2)); + */ + int k = 0; + if (thermoSystem.hasPhaseType("gas") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("gas"); + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "GAS DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOG/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOG/DT"; + units[k] = "KG/M3-K"; + k++; + + // double beta = 0.0; + if (thermoSystem.hasPhaseType("oil")) { + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getBeta() + * thermoSystem.getPhase(phaseNumb).getMolarMass() + / (thermoSystem.getPhase(phaseNumb).getBeta() + * thermoSystem.getPhase(phaseNumb).getMolarMass() + + thermoSystem.getPhase("oil").getBeta() + * thermoSystem.getPhase("oil").getMolarMass()); + } else { + props[k][i][j] = 1.0; + // thermoSystem.getPhase(phaseNumb).getBeta() * + // thermoSystem.getPhase(phaseNumb).getMolarMass() / thermoSystem.getMolarMass(); + } + names[k] = "GAS MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "GAS VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "GAS THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS ENTROPY"; + units[k] = "J/KG/K"; + k++; + hasGasValues = true; + // set gas properties + } else { + if (continuousDerivativesExtrapolation && hasGasValues) { + do { + if (i > 1) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + // } //else if (j < 2) { + // props[k][i][j] = 0; //props[k][i - 1][j] + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // } else { + // props[k][i][j] = 0; //props[k][i - 1][j - 1] + (props[k][i][j - + // 1] + // - + // props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) + // * + // (temperatures[j] - temperatures[j - 1]) + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // double newTemp = pressures[i]; + // double vall = xcoef[k].get(0, 0) + newTemp * (xcoef[k].get(1, 0) + // + newTemp * + // (xcoef[k].get(2, 0) + newTemp * xcoef[k].get(3, 0))); + // props[k][i][j] = vall; + // if(i>0 && props[k][i-1][j]>1e-10) props[k][i][j] = + // props[k][i-1][j]*pressures[i]/pressures[i-1]; + } + if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + k++; + } while (k < 9); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + /* + * } else if (false && !hasGasValues) { startGasTemperatures = j; + */ + } else { + gasSystem.setTemperature(temperatures[j]); + gasSystem.setPressure(pressures[i]); + gasSystem.init(3); + gasSystem.initPhysicalProperties(); + // gasSystem.display(); + props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "GAS DENSITY"; + units[k] = "KG/M3"; + k++; + props[k][i][j] = gasSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOG/DP"; + units[k] = "S2/M2"; + k++; + props[k][i][j] = gasSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOG/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = 0.0; + // thermoSystem.getPhase(phaseNumb).getBeta() * + // thermoSystem.getPhase(phaseNumb).getMolarMass() / thermoSystem.getMolarMass(); + names[k] = "GAS MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "GAS VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = + gasSystem.getPhase(0).getCp() / gasSystem.getPhase(0).getNumberOfMolesInPhase() + / gasSystem.getPhase(0).getMolarMass(); + names[k] = "GAS HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = gasSystem.getPhase(0).getEnthalpy() + / gasSystem.getPhase(0).getNumberOfMolesInPhase() + / gasSystem.getPhase(0).getMolarMass(); + names[k] = "GAS ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "GAS THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + + props[k][i][j] = + gasSystem.getPhase(0).getEntropy() / gasSystem.getPhase(0).getNumberOfMolesInPhase() + / gasSystem.getPhase(0).getMolarMass(); + names[k] = "GAS ENTROPY"; + units[k] = "J/KG/K"; + k++; + } } - } - /** - *

- * calcPhaseEnvelope. - *

- */ - public void calcPhaseEnvelope() { - try { - thermoOps.calcPTphaseEnvelope(); - TC = thermoSystem.getTC() - 273.15; - PC = thermoSystem.getPC() * 1e5; - } catch (Exception e) { - logger.error("error", e); + if (thermoSystem.hasPhaseType("oil") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("oil"); + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "LIQUID DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOL/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOL/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "LIQUID VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "LIQUID THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + hasOilValues = true; + } else { + if (continuousDerivativesExtrapolation && hasOilValues) { + do { + if (i > 1) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + } + /* + * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + * (temperatures[j] - temperatures[j - 1]); } else if (j < 2) { props[k][i][j] = + * props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] + * - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = + * props[k][i - 1][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) / + * (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - temperatures[j - + * 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - + * 2]) * (pressures[i] - pressures[i - 1]); } props[k][i][j] = 0.0; + */ + k++; + } while (k < 17); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + } else { + oilSystem.setPhaseType(0, PhaseType.byValue(0)); + oilSystem.setTemperature(temperatures[j]); + oilSystem.setPressure(pressures[i]); + oilSystem.init(3); + oilSystem.initPhysicalProperties(); + + props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "LIQUID DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOL/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOL/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "LIQUID VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = + oilSystem.getPhase(0).getCp() / oilSystem.getPhase(0).getNumberOfMolesInPhase() + / oilSystem.getPhase(0).getMolarMass(); + names[k] = "LIQUID HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getEnthalpy() + / oilSystem.getPhase(0).getNumberOfMolesInPhase() + / oilSystem.getPhase(0).getMolarMass(); + names[k] = "LIQUID ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = + oilSystem.getPhase(0).getEntropy() / oilSystem.getPhase(0).getNumberOfMolesInPhase() + / oilSystem.getPhase(0).getMolarMass(); + names[k] = "LIQUID ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "LIQUID THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + } + // setOilProperties(); + // set gas properties } - } - /** - *

- * calcBubP. - *

- * - * @param temperatures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubP(double[] temperatures) { - double[] bubP = new double[temperatures.length]; - bubPLOG = new double[temperatures.length]; - for (int i = 0; i < temperatures.length; i++) { - thermoSystem.setTemperature(temperatures[i]); - try { - thermoOps.bubblePointPressureFlash(false); - bubP[i] = thermoSystem.getPressure(); - bubPLOG[i] = bubP[i] * 1e5; - } catch (Exception e) { - logger.error("error", e); - bubP[i] = 0; + if (thermoSystem.hasPhaseType("aqueous") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("aqueous"); + + props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getx() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / thermoSystem.getPhase(0).getMolarMass(); + names[k] = "WATER VAPOR MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "WATER DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOWAT/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOWAT/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "WATER VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "WATER THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + hasWaterValues = true; + } else { + if (continuousDerivativesExtrapolation && hasWaterValues) { + do { + if (j > 1) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + } + /* + * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + * (temperatures[j] - temperatures[j - 1]); } else if (j < 2) { props[k][i][j] = + * props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] + * - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = + * props[k][i - 1][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) / + * (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - temperatures[j - + * 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - + * 2]) * (pressures[i] - pressures[i - 1]); } props[k][i][j] = 0.0; + */ + k++; + } while (k < 26); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + } else { + waterSystem.setTemperature(temperatures[j]); + waterSystem.setPressure(pressures[i]); + waterSystem.setPhaseType(0, PhaseType.byValue(0)); + waterSystem.init(3); + waterSystem.initPhysicalProperties(); + + if (thermoSystem.getPhase(0).hasComponent("water")) { + props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getz() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / thermoSystem.getPhase(0).getMolarMass(); + } else { + props[k][i][j] = 0.0; } + names[k] = "WATER VAPOR MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "WATER DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOWAT/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOWAT/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "WATER VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = + waterSystem.getPhase(0).getCp() / waterSystem.getPhase(0).getNumberOfMolesInPhase() + / waterSystem.getPhase(0).getMolarMass(); + names[k] = "WATER HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getEnthalpy() + / waterSystem.getPhase(0).getNumberOfMolesInPhase() + / waterSystem.getPhase(0).getMolarMass(); + names[k] = "WATER ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getEntropy() + / waterSystem.getPhase(0).getNumberOfMolesInPhase() + / waterSystem.getPhase(0).getMolarMass(); + names[k] = "WATER ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "WATER THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + } } - return bubP; - } - /** - *

- * calcDewP. - *

- * - * @param temperatures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcDewP(double[] temperatures) { - double[] dewP = new double[temperatures.length]; - dewPLOG = new double[temperatures.length]; - for (int i = 0; i < temperatures.length; i++) { - thermoSystem.setTemperature(temperatures[i]); - try { - thermoOps.dewPointPressureFlashHC(); - dewP[i] = thermoSystem.getPressure(); - dewPLOG[i] = dewP[i] * 1e5; - } catch (Exception e) { - logger.error("error", e); - dewP[i] = 0; + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil") && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("gas"), thermoSystem.getPhaseNumberOfPhase("oil")); + names[k] = "VAPOR-LIQUID SURFACE TENSION"; + units[k] = "N/M"; + k++; + } else { + if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { + if (i < 2) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + } else if (j < 2) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + } else { + props[k][i][j] = props[k][i - 1][j - 1] + + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]) + + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } + props[k][i][j] = 10.0e-3; + k++; + } else { + props[k][i][j] = 10.0e-3; + names[k] = "VAPOR-LIQUID SURFACE TENSION"; + units[k] = "N/M"; + k++; + } } - return dewP; - } - /** - *

- * calcBubT. - *

- * - * @param pressures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubT(double[] pressures) { - double[] bubTemps = new double[pressures.length]; - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - try { - thermoOps.bubblePointTemperatureFlash(); - bubT[i] = thermoSystem.getPressure(); - } catch (Exception e) { - logger.error("error", e); - bubT[i] = 0.0; + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") + && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("gas"), + thermoSystem.getPhaseNumberOfPhase("aqueous")); + names[k] = "VAPOR-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; + } else { + if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { + if (i < 2) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + } else if (j < 2) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + } else { + props[k][i][j] = props[k][i - 1][j - 1] + + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]) + + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } + props[k][i][j] = 60.0e-3; + k++; + } else { + props[k][i][j] = 60.0e-3; + names[k] = "VAPOR-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; + } } - return bubTemps; - } - /** - *

- * initCalc. - *

- */ - public void initCalc() { - double stdTemp = 288.15, stdPres = 1.01325; - // double GOR, GLR; - double molfracs[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - double MW[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - double dens[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - String components[] = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; - - for (int i = 0; i < molfracs.length; i++) { - molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); - components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); - MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; - dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); + if (thermoSystem.hasPhaseType("oil") && thermoSystem.hasPhaseType("aqueous") + && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("oil"), + thermoSystem.getPhaseNumberOfPhase("aqueous")); + names[k] = "LIQUID-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; + } else { + if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { + if (i < 2) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + } else if (j < 2) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + } else { + props[k][i][j] = props[k][i - 1][j - 1] + + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]) + + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + } + props[k][i][j] = 20.0e-3; + k++; + } else { + props[k][i][j] = 20.0e-3; + names[k] = "LIQUID-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; + } } - - thermoSystem.setTemperature(stdTemp); - thermoSystem.setPressure(stdPres); - - thermoOps.TPflash(); - - // GOR = thermoSystem.getPhase(0).getTotalVolume() / - // thermoSystem.getPhase(1).getTotalVolume(); - // GLR = thermoSystem.getPhase(0).getTotalVolume() / - // thermoSystem.getPhase(1).getTotalVolume(); + } } - - /** - *

- * calcRSWTOB. - *

+ logger.info("Finished TPflash..."); + if (thermoSystem.getPhase(0).hasComponent("water")) { + thermoSystem.removeComponent("water"); + } + bubP = calcBubP(temperatures); + dewP = calcDewP(temperatures); + // bubT = calcBubT(temperatures); + logger.info("Finished creating arrays"); + BicubicInterpolatingFunction funcGasDens = + interpolationFunc.interpolate(pressures, temperatures, props[0]); + logger.info("interpolated value " + funcGasDens.value(40, 298.0)); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + logger.info("TC " + TC + " PC " + PC); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + logger.info("pressure " + pressureLOG[i] + " temperature " + temperatureLOG[j]); + // + " ROG " + ROG[i][j] + " ROL " + ROL[i][j]); + } + } + writeOLGAinpFile(fileName); + } + + /** + *

+ * writeOLGAinpFile2. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile2(String filename) { + /* + * try { writer = new BufferedWriter(new OutputStreamWriter( new + * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), "utf-8")); + * writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; i++) { + * thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; j++) { + * thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } + * writer.write(")"); } catch (IOException ex) { // report } finally { try { } writer.close(); } + * catch (Exception ex) { } } */ - public void calcRSWTOB() { - thermoSystem.init(0); - thermoSystem.init(1); - if (thermoSystem.getPhase(0).hasComponent("water")) { - RSWTOB = thermoSystem.getPhase(0).getComponent("water").getNumberOfmoles() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / (thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarMass()); - } else { - RSWTOB = 0.0; + try (Writer writer = + new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "utf-8"))) { + writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); + + writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); + int Pcounter = 0; + for (int i = 0; i < pressures.length; i++) { + if (Pcounter > 4) { + writer.write("\n"); + Pcounter = 0; } - } - - /** {@inheritDoc} */ - @Override - public void run() { - calcRSWTOB(); - logger.info("RSWTOB " + RSWTOB); - nProps = 29; - props = new double[nProps][pressures.length][temperatures.length]; - units = new String[nProps]; - names = new String[nProps]; - - // int startGasTemperatures = 0; - boolean acceptedFlash = true; - for (int j = 0; j < temperatures.length; j++) { - thermoSystem.setTemperature(temperatures[j]); - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - try { - logger.info("TPflash... " + thermoSystem.getTemperature() + " pressure " - + thermoSystem.getPressure()); - if (thermoSystem.getTemperature() > (273.15 + 106.8)) { - logger.info("here I am"); - thermoOps.TPflash(); - } else { - thermoOps.TPflash(); - } - thermoSystem.init(3); - thermoSystem.initPhysicalProperties(); - acceptedFlash = true; - } catch (Exception e) { - acceptedFlash = false; - logger.info("fail temperature " + thermoSystem.getTemperature() - + " fail pressure " + thermoSystem.getPressure()); - - thermoSystem.display(); - logger.error("error", e); - } - - /* - * logger.info("water density " + - * thermoSystem.getPhase(2).getPhysicalProperties().getDensity()); - * logger.info("RSW " + thermoSystem.getPhase(0).getComponent("water").getx() * - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() / - * thermoSystem.getPhase(0).getMolarMass()); logger.info("surf tens oil-water " + - * thermoSystem.getInterphaseProperties().getSurfaceTension(1, 2)); - * logger.info("surf tens gas-water " + - * thermoSystem.getInterphaseProperties().getSurfaceTension(0, 2)); - */ - int k = 0; - if (thermoSystem.hasPhaseType("gas") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("gas"); - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "GAS DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOG/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOG/DT"; - units[k] = "KG/M3-K"; - k++; - - // double beta = 0.0; - if (thermoSystem.hasPhaseType("oil")) { - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getBeta() - * thermoSystem.getPhase(phaseNumb).getMolarMass() - / (thermoSystem.getPhase(phaseNumb).getBeta() - * thermoSystem.getPhase(phaseNumb).getMolarMass() - + thermoSystem.getPhase("oil").getBeta() - * thermoSystem.getPhase("oil").getMolarMass()); - } else { - props[k][i][j] = 1.0;// thermoSystem.getPhase(phaseNumb).getBeta() * - // thermoSystem.getPhase(phaseNumb).getMolarMass() / - // thermoSystem.getMolarMass(); - } - names[k] = "GAS MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "GAS VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "GAS THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS ENTROPY"; - units[k] = "J/KG/K"; - k++; - hasGasValues = true; - // set gas properties - } else { - if (continuousDerivativesExtrapolation && hasGasValues) { - do { - if (i > 1) { - props[k][i][j] = props[k][i - 1][j] - + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - // } //else if (j < 2) { - // props[k][i][j] = 0;//props[k][i - 1][j] + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // } else { - // props[k][i][j] = 0;//props[k][i - 1][j - 1] + (props[k][i][j - 1] - // - - // props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) - // * - // (temperatures[j] - temperatures[j - 1]) + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // double newTemp = pressures[i]; - // double vall = xcoef[k].get(0, 0) + newTemp * (xcoef[k].get(1, 0) - // + newTemp * - // (xcoef[k].get(2, 0) + newTemp * xcoef[k].get(3, 0))); - // props[k][i][j] = vall; - // if(i>0 && props[k][i-1][j]>1e-10) props[k][i][j] = - // props[k][i-1][j]*pressures[i]/pressures[i-1]; - } - if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - k++; - } while (k < 9);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - /* - * } else if (false && !hasGasValues) { startGasTemperatures = j; - */ - } else { - gasSystem.setTemperature(temperatures[j]); - gasSystem.setPressure(pressures[i]); - gasSystem.init(3); - gasSystem.initPhysicalProperties(); - // gasSystem.display(); - props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "GAS DENSITY"; - units[k] = "KG/M3"; - k++; - props[k][i][j] = gasSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOG/DP"; - units[k] = "S2/M2"; - k++; - props[k][i][j] = gasSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOG/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = 0.0;// thermoSystem.getPhase(phaseNumb).getBeta() * - // thermoSystem.getPhase(phaseNumb).getMolarMass() / - // thermoSystem.getMolarMass(); - names[k] = "GAS MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = - gasSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "GAS VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getCp() - / gasSystem.getPhase(0).getNumberOfMolesInPhase() - / gasSystem.getPhase(0).getMolarMass(); - names[k] = "GAS HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getEnthalpy() - / gasSystem.getPhase(0).getNumberOfMolesInPhase() - / gasSystem.getPhase(0).getMolarMass(); - names[k] = "GAS ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = - gasSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "GAS THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getEntropy() - / gasSystem.getPhase(0).getNumberOfMolesInPhase() - / gasSystem.getPhase(0).getMolarMass(); - names[k] = "GAS ENTROPY"; - units[k] = "J/KG/K"; - k++; - } - } - - if (thermoSystem.hasPhaseType("oil") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("oil"); - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "LIQUID DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOL/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOL/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "LIQUID VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "LIQUID THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - hasOilValues = true; - } else { - if (continuousDerivativesExtrapolation && hasOilValues) { - do { - if (i > 1) { - props[k][i][j] = props[k][i - 1][j] - + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } - /* - * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - - * 1] - props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - - * 2]) * (temperatures[j] - temperatures[j - 1]); } else if (j < 2) { - * props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - - * props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * - * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = - * props[k][i - 1][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) / - * (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - - * temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - * (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - - * 1]); } props[k][i][j] = 0.0; - */ - k++; - } while (k < 17);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - } else { - oilSystem.setPhaseType(0, 0); - oilSystem.setTemperature(temperatures[j]); - oilSystem.setPressure(pressures[i]); - oilSystem.init(3); - oilSystem.initPhysicalProperties(); - - props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "LIQUID DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOL/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOL/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = - oilSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "LIQUID VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getCp() - / oilSystem.getPhase(0).getNumberOfMolesInPhase() - / oilSystem.getPhase(0).getMolarMass(); - names[k] = "LIQUID HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getEnthalpy() - / oilSystem.getPhase(0).getNumberOfMolesInPhase() - / oilSystem.getPhase(0).getMolarMass(); - names[k] = "LIQUID ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getEntropy() - / oilSystem.getPhase(0).getNumberOfMolesInPhase() - / oilSystem.getPhase(0).getMolarMass(); - names[k] = "LIQUID ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = - oilSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "LIQUID THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - } - // setOilProperties(); - // set gas properties - } - - if (thermoSystem.hasPhaseType("aqueous") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("aqueous"); - - props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getx() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / thermoSystem.getPhase(0).getMolarMass(); - names[k] = "WATER VAPOR MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "WATER DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOWAT/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOWAT/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "WATER VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "WATER THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - hasWaterValues = true; - } else { - if (continuousDerivativesExtrapolation && hasWaterValues) { - do { - if (j > 1) { - props[k][i][j] = props[k][i][j - 1] - + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - } - /* - * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - - * 1] - props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - - * 2]) * (temperatures[j] - temperatures[j - 1]); } else if (j < 2) { - * props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - - * props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * - * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = - * props[k][i - 1][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) / - * (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - - * temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - * (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - - * 1]); } props[k][i][j] = 0.0; - */ - k++; - } while (k < 26);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - } else { - waterSystem.setTemperature(temperatures[j]); - waterSystem.setPressure(pressures[i]); - waterSystem.setPhaseType(0, 0); - waterSystem.init(3); - waterSystem.initPhysicalProperties(); - - if (thermoSystem.getPhase(0).hasComponent("water")) { - props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getz() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / thermoSystem.getPhase(0).getMolarMass(); - } else { - props[k][i][j] = 0.0; - } - names[k] = "WATER VAPOR MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = - waterSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "WATER DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOWAT/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOWAT/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = - waterSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "WATER VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getCp() - / waterSystem.getPhase(0).getNumberOfMolesInPhase() - / waterSystem.getPhase(0).getMolarMass(); - names[k] = "WATER HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getEnthalpy() - / waterSystem.getPhase(0).getNumberOfMolesInPhase() - / waterSystem.getPhase(0).getMolarMass(); - names[k] = "WATER ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getEntropy() - / waterSystem.getPhase(0).getNumberOfMolesInPhase() - / waterSystem.getPhase(0).getMolarMass(); - names[k] = "WATER ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = - waterSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "WATER THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - } - } - - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("gas"), - thermoSystem.getPhaseNumberOfPhase("oil")); - names[k] = "VAPOR-LIQUID SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { - if (i < 2) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - } else if (j < 2) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } else { - props[k][i][j] = props[k][i - 1][j - 1] - + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]) - + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } - props[k][i][j] = 10.0e-3; - k++; - } else { - props[k][i][j] = 10.0e-3; - names[k] = "VAPOR-LIQUID SURFACE TENSION"; - units[k] = "N/M"; - k++; - } - } - - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("gas"), - thermoSystem.getPhaseNumberOfPhase("aqueous")); - names[k] = "VAPOR-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { - if (i < 2) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - } else if (j < 2) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } else { - props[k][i][j] = props[k][i - 1][j - 1] - + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]) - + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } - props[k][i][j] = 60.0e-3; - k++; - } else { - props[k][i][j] = 60.0e-3; - names[k] = "VAPOR-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } - } - - if (thermoSystem.hasPhaseType("oil") && thermoSystem.hasPhaseType("aqueous") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("oil"), - thermoSystem.getPhaseNumberOfPhase("aqueous")); - names[k] = "LIQUID-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { - if (i < 2) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - } else if (j < 2) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } else { - props[k][i][j] = props[k][i - 1][j - 1] - + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]) - + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } - props[k][i][j] = 20.0e-3; - k++; - } else { - props[k][i][j] = 20.0e-3; - names[k] = "LIQUID-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } - } - } + writer.write(pressureLOG[i] + " "); + Pcounter++; + } + writer.write("\n"); + + int Tcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (Tcounter > 4) { + writer.write("\n"); + Tcounter = 0; } - logger.info("Finished TPflash..."); - if (thermoSystem.getPhase(0).hasComponent("water")) { - thermoSystem.removeComponent("water"); + writer.write(temperatureLOG[i] + " "); + Tcounter++; + } + writer.write("\n"); + + int bubPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (bubPcounter > 4) { + writer.write("\n"); + bubPcounter = 0; } - bubP = calcBubP(temperatures); - dewP = calcDewP(temperatures); - // bubT = calcBubT(temperatures); - logger.info("Finished creating arrays"); - BicubicInterpolatingFunction funcGasDens = - interpolationFunc.interpolate(pressures, temperatures, props[0]); - logger.info("interpolated value " + funcGasDens.value(40, 298.0)); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - logger.info("TC " + TC + " PC " + PC); + writer.write(bubPLOG[i] + " "); + bubPcounter++; + } + writer.write("\n"); + + int dewPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (dewPcounter > 4) { + writer.write("\n"); + dewPcounter = 0; + } + writer.write(dewPLOG[i] + " "); + dewPcounter++; + } + writer.write("\n"); + + for (int k = 0; k < nProps; k++) { + if (names[k] == null) { + continue; + } + logger.info("Writing variable: " + names[k]); + writer.write(names[k] + " (" + units[k] + ")\n"); for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - logger.info("pressure " + pressureLOG[i] + " temperature " + temperatureLOG[j]);// + - // " - // ROG - // " - // + - // ROG[i][j] - // + - // " - // ROL - // " - // + - // ROL[i][j]); + // thermoSystem.setPressure(pressures[i]); + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + // thermoSystem.setTemperature(temperatures[j]); + if (counter > 4) { + writer.write("\n"); + counter = 0; } + writer.write(props[k][i][j] + " "); + counter++; + } + writer.write("\n"); } - writeOLGAinpFile(fileName); + } + } catch (IOException ex) { + // report } - - /** - *

- * writeOLGAinpFile2. - *

- * - * @param filename a {@link java.lang.String} object + } + + /** + *

+ * writeOLGAinpFile. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile(String filename) { + /* + * try { writer = new BufferedWriter(new OutputStreamWriter( new + * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), "utf-8")); + * writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; i++) { + * thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; j++) { + * thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } + * writer.write(")"); } catch (IOException ex) { // report } finally { try { } writer.close(); } + * catch (Exception ex) { } } */ - public void writeOLGAinpFile2(String filename) { - /* - * try { writer = new BufferedWriter(new OutputStreamWriter( new - * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), - * "utf-8")); writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; - * i++) { thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; - * j++) { thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } - * writer.write(")"); } catch (IOException ex) { // report } finally { try { } - * writer.close(); } catch (Exception ex) { } } - */ - try (Writer writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(fileName), "utf-8"))) { - writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); - - writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); - int Pcounter = 0; - for (int i = 0; i < pressures.length; i++) { - if (Pcounter > 4) { - writer.write("\n"); - Pcounter = 0; - } - writer.write(pressureLOG[i] + " "); - Pcounter++; - } + try (Writer writer = + new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "utf-8"))) { + writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); + + writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); + int Pcounter = 0; + for (int i = 0; i < pressures.length; i++) { + if (Pcounter > 4) { + writer.write("\n"); + Pcounter = 0; + } + writer.write(pressureLOG[i] + " "); + Pcounter++; + } + writer.write("\n"); + + int Tcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (Tcounter > 4) { + writer.write("\n"); + Tcounter = 0; + } + writer.write(temperatureLOG[i] + " "); + Tcounter++; + } + writer.write("\n"); + + int bubPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (bubPcounter > 4) { + writer.write("\n"); + bubPcounter = 0; + } + writer.write(bubPLOG[i] + " "); + bubPcounter++; + } + writer.write("\n"); + + int dewPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (dewPcounter > 4) { + writer.write("\n"); + dewPcounter = 0; + } + writer.write(dewPLOG[i] + " "); + dewPcounter++; + } + writer.write("\n"); + + writer.write("GAS DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[0][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int Tcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (Tcounter > 4) { - writer.write("\n"); - Tcounter = 0; - } - writer.write(temperatureLOG[i] + " "); - Tcounter++; - } + writer.write("LIQUID DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[9][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int bubPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (bubPcounter > 4) { - writer.write("\n"); - bubPcounter = 0; - } - writer.write(bubPLOG[i] + " "); - bubPcounter++; - } + writer.write("WATER DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[18][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int dewPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (dewPcounter > 4) { - writer.write("\n"); - dewPcounter = 0; - } - writer.write(dewPLOG[i] + " "); - dewPcounter++; - } + writer.write("DRHOG/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); - - for (int k = 0; k < nProps; k++) { - if (names[k] == null) { - continue; - } - logger.info("Writing variable: " + names[k]); - writer.write(names[k] + " (" + units[k] + ")\n"); - for (int i = 0; i < pressures.length; i++) { - // thermoSystem.setPressure(pressures[i]); - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - // thermoSystem.setTemperature(temperatures[j]); - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[k][i][j] + " "); - counter++; - } - writer.write("\n"); - } - } - } catch (IOException ex) { - // report + counter = 0; + } + writer.write(props[1][i][j] + " "); + counter++; } - } + writer.write("\n"); + } - /** - *

- * writeOLGAinpFile. - *

- * - * @param filename a {@link java.lang.String} object - */ - public void writeOLGAinpFile(String filename) { - /* - * try { writer = new BufferedWriter(new OutputStreamWriter( new - * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), - * "utf-8")); writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; - * i++) { thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; - * j++) { thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } - * writer.write(")"); } catch (IOException ex) { // report } finally { try { } - * writer.close(); } catch (Exception ex) { } } - */ - try (Writer writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(filename), "utf-8"))) { - writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); - - writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); - int Pcounter = 0; - for (int i = 0; i < pressures.length; i++) { - if (Pcounter > 4) { - writer.write("\n"); - Pcounter = 0; - } - writer.write(pressureLOG[i] + " "); - Pcounter++; - } + writer.write("DRHOL/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[10][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int Tcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (Tcounter > 4) { - writer.write("\n"); - Tcounter = 0; - } - writer.write(temperatureLOG[i] + " "); - Tcounter++; - } + writer.write("DRHOWAT/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[19][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int bubPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (bubPcounter > 4) { - writer.write("\n"); - bubPcounter = 0; - } - writer.write(bubPLOG[i] + " "); - bubPcounter++; - } + writer.write("DRHOG/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[2][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int dewPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (dewPcounter > 4) { - writer.write("\n"); - dewPcounter = 0; - } - writer.write(dewPLOG[i] + " "); - dewPcounter++; - } + writer.write("DRHOL/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[11][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[0][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("LIQUID DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[9][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("WATER DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[18][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOG/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[1][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOL/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[10][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOWAT/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[19][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOG/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[2][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOL/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[11][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOWAT/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[20][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("GAS MASS FRACTION (-)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[3][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("DRHOWAT/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[20][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER VAPOR MASS FRACTION (-)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[17][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS MASS FRACTION (-)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[3][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[4][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER VAPOR MASS FRACTION (-)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[17][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[12][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[4][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[21][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[12][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[5][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[21][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[13][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[5][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[22][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[13][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[6][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[22][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[14][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[6][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[23][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[14][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[7][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[23][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[16][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[7][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[25][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[16][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("VAPOR-LIQUID SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[26][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[25][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("VAPOR-WATER SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[27][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("VAPOR-LIQUID SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[26][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID-WATER SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[28][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("VAPOR-WATER SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[27][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[8][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID-WATER SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[28][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[15][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[8][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[24][i][j] + " "); - counter++; - } - writer.write("\n"); - } - /* - * for (int k = 0; k < nProps; k++) { if (names[k] == null) { continue; } - * logger.info("Writing variable: " + names[k]); writer.write(names[k] + " (" + units[k] - * + ")\n"); for (int i = 0; i < pressures.length; i++) { - * //thermoSystem.setPressure(pressures[i]); int counter = 0; for (int j = 0; j < - * temperatures.length; j++) { // thermoSystem.setTemperature(temperatures[j]); if - * (counter > 4) { writer.write("\n"); counter = 0; } writer.write(props[k][i][j] + - * " "); counter++; } writer.write("\n"); } } - */ - } catch (IOException ex) { - // report + writer.write("LIQUID ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[15][i][j] + " "); + counter++; } - } + writer.write("\n"); + } - /** - *

- * extrapolateTable. - *

- */ - public void extrapolateTable() { + writer.write("WATER ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; for (int j = 0; j < temperatures.length; j++) { - for (int i = 0; i < pressures.length; i++) { - if (!hasValue[26][i][j]) { - } - } + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[24][i][j] + " "); + counter++; + } + writer.write("\n"); + } + /* + * for (int k = 0; k < nProps; k++) { if (names[k] == null) { continue; } + * logger.info("Writing variable: " + names[k]); writer.write(names[k] + " (" + units[k] + + * ")\n"); for (int i = 0; i < pressures.length; i++) { + * //thermoSystem.setPressure(pressures[i]); int counter = 0; for (int j = 0; j < + * temperatures.length; j++) { // thermoSystem.setTemperature(temperatures[j]); if (counter > + * 4) { writer.write("\n"); counter = 0; } writer.write(props[k][i][j] + " "); counter++; } + * writer.write("\n"); } } + */ + } catch (IOException ex) { + // report + } + } + + /** + *

+ * extrapolateTable. + *

+ */ + public void extrapolateTable() { + for (int j = 0; j < temperatures.length; j++) { + for (int i = 0; i < pressures.length; i++) { + if (!hasValue[26][i][j]) { } + } } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterEven.java b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterEven.java index b02fc08bb7..e2ea191777 100644 --- a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterEven.java +++ b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterEven.java @@ -7,6 +7,7 @@ import java.io.Writer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -19,1339 +20,1312 @@ * @version $Id: $Id */ public class OLGApropertyTableGeneratorWaterEven - extends neqsim.thermodynamicOperations.BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorWaterEven.class); - - SystemInterface thermoSystem = null; - ThermodynamicOperations thermoOps = null; - double[] pressures, temperatureLOG, temperatures, pressureLOG = null; - double[] bubP, bubT, dewP, bubPLOG, dewPLOG; - double[][] ROG = null; - // double[][] ROL, CPG, CPHL, HG, HHL, TCG, TCHL, VISG, VISHL, SIGGHL, SEG, - // SEHL, RS; - double TC, PC; - double RSWTOB; - double[][][] props; - int nProps; - String[] names; - String[] units; - int temperatureSteps, pressureSteps; - boolean continuousDerivativesExtrapolation = true; - boolean hasGasValues = false; - boolean hasOilValues = false; - boolean hasWaterValues = false; - boolean[][][] hasValue; - String fileName = "c:/temp/OLGAneqsim.tab"; - - /** - *

- * Constructor for OLGApropertyTableGeneratorWaterEven. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public OLGApropertyTableGeneratorWaterEven(SystemInterface system) { - this.thermoSystem = system; - thermoOps = new ThermodynamicOperations(thermoSystem); + extends neqsim.thermodynamicOperations.BaseOperation { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorWaterEven.class); + + SystemInterface thermoSystem = null; + ThermodynamicOperations thermoOps = null; + double[] pressures; + double[] temperatureLOG; + double[] temperatures; + double[] pressureLOG = null; + double[] bubP; + double[] bubT; + double[] dewP; + double[] bubPLOG; + double[] dewPLOG; + double[][] ROG = null; + double TC; + double PC; + double RSWTOB; + double[][][] props; + int nProps; + String[] names; + String[] units; + int temperatureSteps; + int pressureSteps; + boolean continuousDerivativesExtrapolation = true; + boolean hasGasValues = false; + boolean hasOilValues = false; + boolean hasWaterValues = false; + boolean[][][] hasValue; + String fileName = "c:/temp/OLGAneqsim.tab"; + + /** + *

+ * Constructor for OLGApropertyTableGeneratorWaterEven. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public OLGApropertyTableGeneratorWaterEven(SystemInterface system) { + this.thermoSystem = system; + thermoOps = new ThermodynamicOperations(thermoSystem); + } + + /** + *

+ * Setter for the field fileName. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setFileName(String name) { + fileName = name; + } + + /** + *

+ * setPressureRange. + *

+ * + * @param minPressure a double + * @param maxPressure a double + * @param numberOfSteps a int + */ + public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { + pressures = new double[numberOfSteps]; + pressureLOG = new double[numberOfSteps]; + double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + pressures[i] = minPressure + i * step; + pressureLOG[i] = pressures[i] * 1e5; } - - /** - *

- * Setter for the field fileName. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setFileName(String name) { - fileName = name; + } + + /** + *

+ * setTemperatureRange. + *

+ * + * @param minTemperature a double + * @param maxTemperature a double + * @param numberOfSteps a int + */ + public void setTemperatureRange(double minTemperature, double maxTemperature, int numberOfSteps) { + temperatures = new double[numberOfSteps]; + temperatureLOG = new double[numberOfSteps]; + double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + temperatures[i] = minTemperature + i * step; + temperatureLOG[i] = temperatures[i] - 273.15; } - - /** - *

- * setPressureRange. - *

- * - * @param minPressure a double - * @param maxPressure a double - * @param numberOfSteps a int - */ - public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { - pressures = new double[numberOfSteps]; - pressureLOG = new double[numberOfSteps]; - double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - pressures[i] = minPressure + i * step; - pressureLOG[i] = pressures[i] * 1e5; - } + } + + /** + *

+ * calcPhaseEnvelope. + *

+ */ + public void calcPhaseEnvelope() { + try { + thermoOps.calcPTphaseEnvelope(); + TC = thermoSystem.getTC() - 273.15; + PC = thermoSystem.getPC() * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - - /** - *

- * setTemperatureRange. - *

- * - * @param minTemperature a double - * @param maxTemperature a double - * @param numberOfSteps a int - */ - public void setTemperatureRange(double minTemperature, double maxTemperature, - int numberOfSteps) { - temperatures = new double[numberOfSteps]; - temperatureLOG = new double[numberOfSteps]; - double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - temperatures[i] = minTemperature + i * step; - temperatureLOG[i] = temperatures[i] - 273.15; - } + } + + /** + *

+ * calcBubP. + *

+ * + * @param temperatures an array of type double + * @return an array of type double + */ + public double[] calcBubP(double[] temperatures) { + double[] bubP = new double[temperatures.length]; + bubPLOG = new double[temperatures.length]; + for (int i = 0; i < temperatures.length; i++) { + thermoSystem.setTemperature(temperatures[i]); + try { + // thermoOps.bubblePointPressureFlash(false); + bubP[i] = thermoSystem.getPressure(); + bubPLOG[i] = bubP[i] * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubP[i] = 0; + } + } + return bubP; + } + + /** + *

+ * calcDewP. + *

+ * + * @param temperatures an array of type double + * @return an array of type double + */ + public double[] calcDewP(double[] temperatures) { + double[] dewP = new double[temperatures.length]; + dewPLOG = new double[temperatures.length]; + for (int i = 0; i < temperatures.length; i++) { + thermoSystem.setTemperature(temperatures[i]); + try { + // thermoOps.dewPointPressureFlashHC(); + dewP[i] = thermoSystem.getPressure(); + dewPLOG[i] = dewP[i] * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + dewP[i] = 0; + } + } + return dewP; + } + + /** + *

+ * calcBubT. + *

+ * + * @param pressures an array of type double + * @return an array of type double + */ + public double[] calcBubT(double[] pressures) { + double[] bubTemps = new double[pressures.length]; + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + try { + // thermoOps.bubblePointTemperatureFlash(); + bubT[i] = thermoSystem.getPressure(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubT[i] = 0.0; + } + } + return bubTemps; + } + + /** + *

+ * initCalc. + *

+ */ + public void initCalc() { + double stdTemp = 288.15; + double stdPres = ThermodynamicConstantsInterface.referencePressure; + // double GOR, GLR; + double[] molfracs = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + double[] MW = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + double[] dens = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + String[] components = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; + + for (int i = 0; i < molfracs.length; i++) { + molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); + components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); + MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; + dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); } - /** - *

- * calcPhaseEnvelope. - *

- */ - public void calcPhaseEnvelope() { + thermoSystem.setTemperature(stdTemp); + thermoSystem.setPressure(stdPres); + + thermoOps.TPflash(); + + // GOR = thermoSystem.getPhase(0).getTotalVolume() / + // thermoSystem.getPhase(1).getTotalVolume(); + // GLR = thermoSystem.getPhase(0).getTotalVolume() / + // thermoSystem.getPhase(1).getTotalVolume(); + } + + /** + *

+ * calcRSWTOB. + *

+ */ + public void calcRSWTOB() { + thermoSystem.init(0); + thermoSystem.init(1); + if (thermoSystem.getPhase(0).hasComponent("water")) { + RSWTOB = thermoSystem.getPhase(0).getComponent("water").getNumberOfmoles() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / (thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarMass()); + } else { + RSWTOB = 0.0; + } + } + + /** {@inheritDoc} */ + @Override + public void run() { + calcRSWTOB(); + logger.info("RSWTOB " + RSWTOB); + nProps = 29; + props = new double[nProps][pressures.length][temperatures.length]; + units = new String[nProps]; + names = new String[nProps]; + + // int startGasTemperatures = 0; + boolean acceptedFlash = true; + for (int j = 0; j < temperatures.length; j++) { + thermoSystem.setTemperature(temperatures[j]); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); try { - thermoOps.calcPTphaseEnvelope(); - TC = thermoSystem.getTC() - 273.15; - PC = thermoSystem.getPC() * 1e5; - } catch (Exception e) { - logger.error("error", e); + // logger.info("TPflash... " + thermoSystem.getTemperature() + " pressure " + + // thermoSystem.getPressure()); + thermoOps.TPflash(); + // thermoSystem.createTable("test"); + thermoSystem.init(3); + thermoSystem.initPhysicalProperties(); + // if(thermoSystem.getPressure()>120){ + // thermoSystem.display(); + // } + // thermoSystem.display(); + acceptedFlash = true; + } catch (Exception ex) { + acceptedFlash = false; + logger.info("fail temperature " + thermoSystem.getTemperature() + " fail pressure " + + thermoSystem.getPressure()); + + thermoSystem.display(); + logger.error(ex.getMessage(), ex); } - } - /** - *

- * calcBubP. - *

- * - * @param temperatures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubP(double[] temperatures) { - double[] bubP = new double[temperatures.length]; - bubPLOG = new double[temperatures.length]; - for (int i = 0; i < temperatures.length; i++) { - thermoSystem.setTemperature(temperatures[i]); - try { - // thermoOps.bubblePointPressureFlash(false); - bubP[i] = thermoSystem.getPressure(); - bubPLOG[i] = bubP[i] * 1e5; - } catch (Exception e) { - logger.error("error", e); - bubP[i] = 0; - } + /* + * logger.info("water density " + + * thermoSystem.getPhase(2).getPhysicalProperties().getDensity()); logger.info("RSW " + + * thermoSystem.getPhase(0).getComponent("water").getx() * + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() / + * thermoSystem.getPhase(0).getMolarMass()); logger.info("surf tens oil-water " + + * thermoSystem.getInterphaseProperties().getSurfaceTension(1, 2)); + * logger.info("surf tens gas-water " + + * thermoSystem.getInterphaseProperties().getSurfaceTension(0, 2)); + */ + int k = 0; + if (thermoSystem.hasPhaseType("gas") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("gas"); + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "GAS DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOG/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOG/DT"; + units[k] = "KG/M3-K"; + k++; + + if (thermoSystem.hasPhaseType("oil")) { + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getBeta() + * thermoSystem.getPhase(phaseNumb).getMolarMass() + / (thermoSystem.getPhase(phaseNumb).getBeta() + * thermoSystem.getPhase(phaseNumb).getMolarMass() + + thermoSystem.getPhase("oil").getBeta() + * thermoSystem.getPhase("oil").getMolarMass()); + } else { + props[k][i][j] = 1.0; + // thermoSystem.getPhase(phaseNumb).getBeta() * + // thermoSystem.getPhase(phaseNumb).getMolarMass() / thermoSystem.getMolarMass(); + } + names[k] = "GAS MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "GAS VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "GAS THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS ENTROPY"; + units[k] = "J/KG/K"; + k++; + hasGasValues = true; + // set gas properties + } else { + if (continuousDerivativesExtrapolation && hasGasValues) { + do { + if (i > 1) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + // } //else if (j < 2) { + // props[k][i][j] = 0; //props[k][i - 1][j] + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // } else { + // props[k][i][j] = 0; //props[k][i - 1][j - 1] + (props[k][i][j - + // 1] + // - + // props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) + // * + // (temperatures[j] - temperatures[j - 1]) + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // double newTemp = pressures[i]; + // double vall = xcoef[k].get(0, 0) + newTemp * (xcoef[k].get(1, 0) + // + newTemp * + // (xcoef[k].get(2, 0) + newTemp * xcoef[k].get(3, 0))); + // props[k][i][j] = vall; + // if(i>0 && props[k][i-1][j]>1e-10) props[k][i][j] = + // props[k][i-1][j]*pressures[i]/pressures[i-1]; + } + if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + k++; + } while (k < 9); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + } + /* + * else if (false && !hasGasValues) { startGasTemperatures = j; } + */ + } + /* + * double[] gasVals = new double[9]; for (int kk = 0; kk < 9; kk++) { gasVals[kk] = + * props[kk][i][j]; } Matrix gasVector = new Matrix(gasVals, 1).transpose(); + * XMatrixgas.setMatrix(0, 8, 0, 2, XMatrixgas.getMatrix(0, 8, 1, 3)); + * XMatrixgas.setMatrix(0, 8, 3, 3, gasVector); if (i > 3) { for (int ii = 0; ii < 4; ii++) + * { aMatrix.set(ii, 0, 1.0); aMatrix.set(ii, 1, pressures[i - ii]); aMatrix.set(ii, 2, + * pressures[i - ii] * pressures[i - ii]); aMatrix.set(ii, 3, pressures[i - ii] * + * pressures[i - ii] * pressures[i - ii]); } + * + * for (int jj = 0; jj < 9; jj++) { Matrix xg = XMatrixgas.getMatrix(jj, jj, 0, 3); + * + * try { xcoef[jj] = aMatrix.solve(xg.transpose()); } catch (Exception ex) { + * logger.error(ex.getMessage(),e); } // logger.info("xcoef " + j); // xcoef.print(10, 10); + * //logger.info("dss: " +ds * dxds.get(speceq, 0)); // specVal = xcoef.get(0, 0) + sny * + * (xcoef.get(1, 0) + sny * (xcoef.get(2, 0) + sny * xcoef.get(3, 0))); // + * logger.info("vall" + vall); } } + */ + if (thermoSystem.hasPhaseType("oil") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("oil"); + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "LIQUID DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOL/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOL/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "LIQUID VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "LIQUID THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + hasOilValues = true; + } else { + if (continuousDerivativesExtrapolation && hasOilValues) { + do { + if (j > 1) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + } + /* + * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + * (temperatures[j] - temperatures[j - 1]); } else if (j < 2) { props[k][i][j] = + * props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] + * - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = + * props[k][i - 1][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) / + * (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - temperatures[j - + * 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - + * 2]) * (pressures[i] - pressures[i - 1]); } props[k][i][j] = 0.0; + */ + k++; + } while (k < 17); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + } + // setOilProperties(); + // set gas properties } - return bubP; - } - /** - *

- * calcDewP. - *

- * - * @param temperatures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcDewP(double[] temperatures) { - double[] dewP = new double[temperatures.length]; - dewPLOG = new double[temperatures.length]; - for (int i = 0; i < temperatures.length; i++) { - thermoSystem.setTemperature(temperatures[i]); - try { - // thermoOps.dewPointPressureFlashHC(); - dewP[i] = thermoSystem.getPressure(); - dewPLOG[i] = dewP[i] * 1e5; - } catch (Exception e) { - logger.error("error", e); - dewP[i] = 0; - } + if (thermoSystem.hasPhaseType("aqueous") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("aqueous"); + + props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getx() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / thermoSystem.getPhase(0).getMolarMass(); + names[k] = "WATER VAPOR MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "WATER DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOWAT/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOWAT/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "WATER VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "WATER THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + hasWaterValues = true; + } else { + if (continuousDerivativesExtrapolation && hasWaterValues) { + do { + if (j > 1) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + } + /* + * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + * (temperatures[j] - temperatures[j - 1]); } else if (j < 2) { props[k][i][j] = + * props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] + * - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = + * props[k][i - 1][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) / + * (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - temperatures[j - + * 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - + * 2]) * (pressures[i] - pressures[i - 1]); } props[k][i][j] = 0.0; + */ + k++; + } while (k < 26); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + } } - return dewP; - } - /** - *

- * calcBubT. - *

- * - * @param pressures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubT(double[] pressures) { - double[] bubTemps = new double[pressures.length]; - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - try { - // thermoOps.bubblePointTemperatureFlash(); - bubT[i] = thermoSystem.getPressure(); - } catch (Exception e) { - logger.error("error", e); - bubT[i] = 0.0; + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil") && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("gas"), thermoSystem.getPhaseNumberOfPhase("oil")); + names[k] = "VAPOR-LIQUID SURFACE TENSION"; + units[k] = "N/M"; + k++; + } else { + if (continuousDerivativesExtrapolation) { // && (i >= 2 || j >= 2)) { + if (!thermoSystem.hasPhaseType("gas")) { + if (i > 2 && j >= 2) { + // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - + // props[k][i][j - + // 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + // (temperatures[j] - + // temperatures[j - 1]); + } + } else { + // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); } - } - return bubTemps; - } - /** - *

- * initCalc. - *

- */ - public void initCalc() { - double stdTemp = 288.15, stdPres = 1.01325; - // double GOR, GLR; - double molfracs[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - double MW[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - double dens[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - String components[] = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; - - for (int i = 0; i < molfracs.length; i++) { - molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); - components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); - MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; - dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); + /* + * else if (j < 2) { props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - + * props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + * pressures[i - 1]); } else { props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j + * - 1] - props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + * (temperatures[j] - temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / + * (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } + * props[k][i][j] = 0.0; + */ + props[k][i][j] = 10.0e-3; + k++; + } else { + props[k][i][j] = 10.0e-3; + names[k] = "VAPOR-LIQUID SURFACE TENSION"; + units[k] = "N/M"; + k++; + } } - thermoSystem.setTemperature(stdTemp); - thermoSystem.setPressure(stdPres); - - thermoOps.TPflash(); + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") + && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("gas"), + thermoSystem.getPhaseNumberOfPhase("aqueous")); + names[k] = "VAPOR-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; + } else { + if (continuousDerivativesExtrapolation) { // && (i >= 2 || j >= 2)) { + if (!thermoSystem.hasPhaseType("gas")) { + if (j >= 2) { + // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - + // props[k][i][j - + // 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + // (temperatures[j] - + // temperatures[j - 1]); + } + } else { + // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + } - // GOR = thermoSystem.getPhase(0).getTotalVolume() / - // thermoSystem.getPhase(1).getTotalVolume(); - // GLR = thermoSystem.getPhase(0).getTotalVolume() / - // thermoSystem.getPhase(1).getTotalVolume(); - } + if (i < 2) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + } else if (j < 2) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + } else { + props[k][i][j] = props[k][i - 1][j - 1] + + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]) + + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + } + props[k][i][j] = 60.0e-3; + // props[k][i][j] = 10.0e-3; + k++; + } else { + props[k][i][j] = 60.0e-3; + names[k] = "VAPOR-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; + } + } - /** - *

- * calcRSWTOB. - *

- */ - public void calcRSWTOB() { - thermoSystem.init(0); - thermoSystem.init(1); - if (thermoSystem.getPhase(0).hasComponent("water")) { - RSWTOB = thermoSystem.getPhase(0).getComponent("water").getNumberOfmoles() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / (thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarMass()); + if (thermoSystem.hasPhaseType("oil") && thermoSystem.hasPhaseType("aqueous") + && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("oil"), + thermoSystem.getPhaseNumberOfPhase("aqueous")); + names[k] = "LIQUID-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; } else { - RSWTOB = 0.0; + if (continuousDerivativesExtrapolation) { // && (i >= 2 || j >= 2)) { + if (i < 2) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + } else if (j < 2) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + } else { + props[k][i][j] = props[k][i - 1][j - 1] + + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]) + + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + } + props[k][i][j] = 20.0e-3; + k++; + } else { + props[k][i][j] = 20.0e-3; + names[k] = "LIQUID-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; + } } + } } - - /** {@inheritDoc} */ - @Override - public void run() { - calcRSWTOB(); - logger.info("RSWTOB " + RSWTOB); - nProps = 29; - props = new double[nProps][pressures.length][temperatures.length]; - units = new String[nProps]; - names = new String[nProps]; - - // int startGasTemperatures = 0; - boolean acceptedFlash = true; - for (int j = 0; j < temperatures.length; j++) { - thermoSystem.setTemperature(temperatures[j]); - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - try { - // logger.info("TPflash... " + thermoSystem.getTemperature() + " pressure " + - // thermoSystem.getPressure()); - thermoOps.TPflash(); - // thermoSystem.createTable("test"); - thermoSystem.init(3); - thermoSystem.initPhysicalProperties(); - // if(thermoSystem.getPressure()>120){ - // thermoSystem.display(); - // } - // thermoSystem.display(); - acceptedFlash = true; - } catch (Exception e) { - acceptedFlash = false; - logger.info("fail temperature " + thermoSystem.getTemperature() - + " fail pressure " + thermoSystem.getPressure()); - - thermoSystem.display(); - logger.error("error", e); - } - - /* - * logger.info("water density " + - * thermoSystem.getPhase(2).getPhysicalProperties().getDensity()); - * logger.info("RSW " + thermoSystem.getPhase(0).getComponent("water").getx() * - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() / - * thermoSystem.getPhase(0).getMolarMass()); logger.info("surf tens oil-water " + - * thermoSystem.getInterphaseProperties().getSurfaceTension(1, 2)); - * logger.info("surf tens gas-water " + - * thermoSystem.getInterphaseProperties().getSurfaceTension(0, 2)); - */ - int k = 0; - if (thermoSystem.hasPhaseType("gas") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("gas"); - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "GAS DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOG/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOG/DT"; - units[k] = "KG/M3-K"; - k++; - - if (thermoSystem.hasPhaseType("oil")) { - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getBeta() - * thermoSystem.getPhase(phaseNumb).getMolarMass() - / (thermoSystem.getPhase(phaseNumb).getBeta() - * thermoSystem.getPhase(phaseNumb).getMolarMass() - + thermoSystem.getPhase("oil").getBeta() - * thermoSystem.getPhase("oil").getMolarMass()); - } else { - props[k][i][j] = 1.0;// thermoSystem.getPhase(phaseNumb).getBeta() * - // thermoSystem.getPhase(phaseNumb).getMolarMass() / - // thermoSystem.getMolarMass(); - } - names[k] = "GAS MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "GAS VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "GAS THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS ENTROPY"; - units[k] = "J/KG/K"; - k++; - hasGasValues = true; - // set gas properties - } else { - if (continuousDerivativesExtrapolation && hasGasValues) { - do { - if (i > 1) { - props[k][i][j] = props[k][i - 1][j] - + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - // } //else if (j < 2) { - // props[k][i][j] = 0;//props[k][i - 1][j] + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // } else { - // props[k][i][j] = 0;//props[k][i - 1][j - 1] + (props[k][i][j - 1] - // - - // props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) - // * - // (temperatures[j] - temperatures[j - 1]) + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // double newTemp = pressures[i]; - // double vall = xcoef[k].get(0, 0) + newTemp * (xcoef[k].get(1, 0) - // + newTemp * - // (xcoef[k].get(2, 0) + newTemp * xcoef[k].get(3, 0))); - // props[k][i][j] = vall; - // if(i>0 && props[k][i-1][j]>1e-10) props[k][i][j] = - // props[k][i-1][j]*pressures[i]/pressures[i-1]; - } - if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - k++; - } while (k < 9);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - } - /* - * else if (false && !hasGasValues) { startGasTemperatures = j; } - */ - } - /* - * double[] gasVals = new double[9]; for (int kk = 0; kk < 9; kk++) { gasVals[kk] = - * props[kk][i][j]; } Matrix gasVector = new Matrix(gasVals, 1).transpose(); - * XMatrixgas.setMatrix(0, 8, 0, 2, XMatrixgas.getMatrix(0, 8, 1, 3)); - * XMatrixgas.setMatrix(0, 8, 3, 3, gasVector); if (i > 3) { for (int ii = 0; ii < - * 4; ii++) { aMatrix.set(ii, 0, 1.0); aMatrix.set(ii, 1, pressures[i - ii]); - * aMatrix.set(ii, 2, pressures[i - ii] * pressures[i - ii]); aMatrix.set(ii, 3, - * pressures[i - ii] * pressures[i - ii] * pressures[i - ii]); } - * - * for (int jj = 0; jj < 9; jj++) { Matrix xg = XMatrixgas.getMatrix(jj, jj, 0, 3); - * - * try { xcoef[jj] = aMatrix.solve(xg.transpose()); } catch (Exception e) { - * logger.error("error",e); } // logger.info("xcoef " + j); // xcoef.print(10, 10); - * //logger.info("dss: " +ds * dxds.get(speceq, 0)); // specVal = xcoef.get(0, 0) + - * sny * (xcoef.get(1, 0) + sny * (xcoef.get(2, 0) + sny * xcoef.get(3, 0))); // - * logger.info("vall" + vall); } } - */ - if (thermoSystem.hasPhaseType("oil") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("oil"); - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "LIQUID DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOL/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOL/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "LIQUID VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "LIQUID THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - hasOilValues = true; - } else { - if (continuousDerivativesExtrapolation && hasOilValues) { - do { - if (j > 1) { - props[k][i][j] = props[k][i][j - 1] - + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - } - /* - * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - - * 1] - props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - - * 2]) * (temperatures[j] - temperatures[j - 1]); } else if (j < 2) { - * props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - - * props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * - * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = - * props[k][i - 1][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) / - * (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - - * temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - * (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - - * 1]); } props[k][i][j] = 0.0; - */ - k++; - } while (k < 17);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - } - // setOilProperties(); - // set gas properties - } - - if (thermoSystem.hasPhaseType("aqueous") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("aqueous"); - - props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getx() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / thermoSystem.getPhase(0).getMolarMass(); - names[k] = "WATER VAPOR MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "WATER DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOWAT/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOWAT/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "WATER VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "WATER THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - hasWaterValues = true; - } else { - if (continuousDerivativesExtrapolation && hasWaterValues) { - do { - if (j > 1) { - props[k][i][j] = props[k][i][j - 1] - + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - } - /* - * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - - * 1] - props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - - * 2]) * (temperatures[j] - temperatures[j - 1]); } else if (j < 2) { - * props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - - * props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * - * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = - * props[k][i - 1][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) / - * (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - - * temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - * (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - - * 1]); } props[k][i][j] = 0.0; - */ - k++; - } while (k < 26);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - } - } - - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("gas"), - thermoSystem.getPhaseNumberOfPhase("oil")); - names[k] = "VAPOR-LIQUID SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation) {// && (i >= 2 || j >= 2)) { - if (!thermoSystem.hasPhaseType("gas")) { - if (i > 2 && j >= 2) { - // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - - // 2]) / (temperatures[j - 1] - temperatures[j - 2]) * - // (temperatures[j] - - // temperatures[j - 1]); - } - } else { - // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - } - - /* - * else if (j < 2) { props[k][i][j] = props[k][i - 1][j] + (props[k][i - - * 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * - * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = props[k][i - - * 1][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) / (temperatures[j - - * 1] - temperatures[j - 2]) * (temperatures[j] - temperatures[j - 1]) + - * (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - - * pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } props[k][i][j] = - * 0.0; - */ - props[k][i][j] = 10.0e-3; - k++; - } else { - props[k][i][j] = 10.0e-3; - names[k] = "VAPOR-LIQUID SURFACE TENSION"; - units[k] = "N/M"; - k++; - } - } - - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("gas"), - thermoSystem.getPhaseNumberOfPhase("aqueous")); - names[k] = "VAPOR-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation) {// && (i >= 2 || j >= 2)) { - if (!thermoSystem.hasPhaseType("gas")) { - if (j >= 2) { - // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - - // 2]) / (temperatures[j - 1] - temperatures[j - 2]) * - // (temperatures[j] - - // temperatures[j - 1]); - } - } else { - // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - } - - if (i < 2) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - } else if (j < 2) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } else { - props[k][i][j] = props[k][i - 1][j - 1] - + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]) - + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } - props[k][i][j] = 60.0e-3; - // props[k][i][j] = 10.0e-3; - k++; - } else { - props[k][i][j] = 60.0e-3; - names[k] = "VAPOR-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } - } - - if (thermoSystem.hasPhaseType("oil") && thermoSystem.hasPhaseType("aqueous") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("oil"), - thermoSystem.getPhaseNumberOfPhase("aqueous")); - names[k] = "LIQUID-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation) {// && (i >= 2 || j >= 2)) { - if (i < 2) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - } else if (j < 2) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } else { - props[k][i][j] = props[k][i - 1][j - 1] - + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]) - + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - } - props[k][i][j] = 20.0e-3; - k++; - } else { - props[k][i][j] = 20.0e-3; - names[k] = "LIQUID-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } - } - } + logger.info("Finished TPflash..."); + if (thermoSystem.getPhase(0).hasComponent("water")) { + thermoSystem.removeComponent("water"); + } + bubP = calcBubP(temperatures); + dewP = calcDewP(temperatures); + // bubT = calcBubT(temperatures); + logger.info("Finished creating arrays"); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + logger.info("TC " + TC + " PC " + PC); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + logger.info("pressure " + pressureLOG[i] + " temperature " + temperatureLOG[j]); + // + " ROG " + ROG[i][j] + " ROL " + ROL[i][j]); + } + } + writeOLGAinpFile(""); + } + + /** + *

+ * writeOLGAinpFile2. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile2(String filename) { + /* + * try { writer = new BufferedWriter(new OutputStreamWriter( new + * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), "utf-8")); + * writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; i++) { + * thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; j++) { + * thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } + * writer.write(")"); } catch (IOException ex) { // report } finally { try { } writer.close(); } + * catch (Exception ex) { } } + */ + try (Writer writer = new BufferedWriter( + new OutputStreamWriter(new FileOutputStream("C:/temp/temp.tab"), "utf-8"))) { + writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); + writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); + int Pcounter = 0; + for (int i = 0; i < pressures.length; i++) { + if (Pcounter > 4) { + writer.write("\n"); + Pcounter = 0; } - logger.info("Finished TPflash..."); - if (thermoSystem.getPhase(0).hasComponent("water")) { - thermoSystem.removeComponent("water"); + writer.write(pressureLOG[i] + " "); + Pcounter++; + } + writer.write("\n"); + + int Tcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (Tcounter > 4) { + writer.write("\n"); + Tcounter = 0; } - bubP = calcBubP(temperatures); - dewP = calcDewP(temperatures); - // bubT = calcBubT(temperatures); - logger.info("Finished creating arrays"); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - logger.info("TC " + TC + " PC " + PC); + writer.write(temperatureLOG[i] + " "); + Tcounter++; + } + writer.write("\n"); + + int bubPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (bubPcounter > 4) { + writer.write("\n"); + bubPcounter = 0; + } + writer.write(bubPLOG[i] + " "); + bubPcounter++; + } + writer.write("\n"); + + int dewPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (dewPcounter > 4) { + writer.write("\n"); + dewPcounter = 0; + } + writer.write(dewPLOG[i] + " "); + dewPcounter++; + } + writer.write("\n"); + + for (int k = 0; k < nProps; k++) { + if (names[k] == null) { + continue; + } + logger.info("Writing variable: " + names[k]); + writer.write(names[k] + " (" + units[k] + ")\n"); for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - logger.info("pressure " + pressureLOG[i] + " temperature " + temperatureLOG[j]);// + - // " - // ROG - // " - // + - // ROG[i][j] - // + - // " - // ROL - // " - // + - // ROL[i][j]); + // thermoSystem.setPressure(pressures[i]); + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + // thermoSystem.setTemperature(temperatures[j]); + if (counter > 4) { + writer.write("\n"); + counter = 0; } + writer.write(props[k][i][j] + " "); + counter++; + } + writer.write("\n"); } - writeOLGAinpFile(""); + } + } catch (IOException ex) { + // report } - - /** - *

- * writeOLGAinpFile2. - *

- * - * @param filename a {@link java.lang.String} object + } + + /** + *

+ * writeOLGAinpFile. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile(String filename) { + /* + * try { writer = new BufferedWriter(new OutputStreamWriter( new + * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), "utf-8")); + * writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; i++) { + * thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; j++) { + * thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } + * writer.write(")"); } catch (IOException ex) { // report } finally { try { } writer.close(); } + * catch (Exception ex) { } } */ - public void writeOLGAinpFile2(String filename) { - /* - * try { writer = new BufferedWriter(new OutputStreamWriter( new - * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), - * "utf-8")); writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; - * i++) { thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; - * j++) { thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } - * writer.write(")"); } catch (IOException ex) { // report } finally { try { } - * writer.close(); } catch (Exception ex) { } } - */ - try (Writer writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream("C:/temp/temp.tab"), "utf-8"))) { - writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); - writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); - int Pcounter = 0; - for (int i = 0; i < pressures.length; i++) { - if (Pcounter > 4) { - writer.write("\n"); - Pcounter = 0; - } - writer.write(pressureLOG[i] + " "); - Pcounter++; - } + try (Writer writer = + new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "utf-8"))) { + writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); + + writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); + int Pcounter = 0; + for (int i = 0; i < pressures.length; i++) { + if (Pcounter > 4) { + writer.write("\n"); + Pcounter = 0; + } + writer.write(pressureLOG[i] + " "); + Pcounter++; + } + writer.write("\n"); + + int Tcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (Tcounter > 4) { + writer.write("\n"); + Tcounter = 0; + } + writer.write(temperatureLOG[i] + " "); + Tcounter++; + } + writer.write("\n"); + + int bubPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (bubPcounter > 4) { + writer.write("\n"); + bubPcounter = 0; + } + writer.write(bubPLOG[i] + " "); + bubPcounter++; + } + writer.write("\n"); + + int dewPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (dewPcounter > 4) { + writer.write("\n"); + dewPcounter = 0; + } + writer.write(dewPLOG[i] + " "); + dewPcounter++; + } + writer.write("\n"); + + writer.write("GAS DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[0][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int Tcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (Tcounter > 4) { - writer.write("\n"); - Tcounter = 0; - } - writer.write(temperatureLOG[i] + " "); - Tcounter++; - } + writer.write("LIQUID DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[9][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int bubPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (bubPcounter > 4) { - writer.write("\n"); - bubPcounter = 0; - } - writer.write(bubPLOG[i] + " "); - bubPcounter++; - } + writer.write("WATER DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[18][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int dewPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (dewPcounter > 4) { - writer.write("\n"); - dewPcounter = 0; - } - writer.write(dewPLOG[i] + " "); - dewPcounter++; - } + writer.write("DRHOG/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); - - for (int k = 0; k < nProps; k++) { - if (names[k] == null) { - continue; - } - logger.info("Writing variable: " + names[k]); - writer.write(names[k] + " (" + units[k] + ")\n"); - for (int i = 0; i < pressures.length; i++) { - // thermoSystem.setPressure(pressures[i]); - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - // thermoSystem.setTemperature(temperatures[j]); - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[k][i][j] + " "); - counter++; - } - writer.write("\n"); - } - } - } catch (IOException ex) { - // report + counter = 0; + } + writer.write(props[1][i][j] + " "); + counter++; } - } + writer.write("\n"); + } - /** - *

- * writeOLGAinpFile. - *

- * - * @param filename a {@link java.lang.String} object - */ - public void writeOLGAinpFile(String filename) { - /* - * try { writer = new BufferedWriter(new OutputStreamWriter( new - * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), - * "utf-8")); writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; - * i++) { thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; - * j++) { thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } - * writer.write(")"); } catch (IOException ex) { // report } finally { try { } - * writer.close(); } catch (Exception ex) { } } - */ - try (Writer writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(fileName), "utf-8"))) { - writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); - - writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); - int Pcounter = 0; - for (int i = 0; i < pressures.length; i++) { - if (Pcounter > 4) { - writer.write("\n"); - Pcounter = 0; - } - writer.write(pressureLOG[i] + " "); - Pcounter++; - } + writer.write("DRHOL/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[10][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int Tcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (Tcounter > 4) { - writer.write("\n"); - Tcounter = 0; - } - writer.write(temperatureLOG[i] + " "); - Tcounter++; - } + writer.write("DRHOWAT/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[19][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int bubPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (bubPcounter > 4) { - writer.write("\n"); - bubPcounter = 0; - } - writer.write(bubPLOG[i] + " "); - bubPcounter++; - } + writer.write("DRHOG/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[2][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int dewPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (dewPcounter > 4) { - writer.write("\n"); - dewPcounter = 0; - } - writer.write(dewPLOG[i] + " "); - dewPcounter++; - } + writer.write("DRHOL/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[11][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[0][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("LIQUID DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[9][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("WATER DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[18][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOG/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[1][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOL/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[10][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOWAT/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[19][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOG/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[2][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOL/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[11][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOWAT/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[20][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("GAS MASS FRACTION (-)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[3][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("WATER VAPOR MASS FRACTION (-)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[17][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("DRHOWAT/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[20][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[4][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS MASS FRACTION (-)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[3][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[12][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER VAPOR MASS FRACTION (-)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[17][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[21][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[4][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[5][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[12][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[13][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[21][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[22][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[5][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[6][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[13][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[14][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[22][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[23][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[6][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[7][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[14][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[16][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[23][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[25][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[7][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("VAPOR-LIQUID SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[26][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[16][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("VAPOR-WATER SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[27][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[25][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID-WATER SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[28][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("VAPOR-LIQUID SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[26][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[8][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("VAPOR-WATER SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[27][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[15][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID-WATER SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[28][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[24][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[8][i][j] + " "); + counter++; + } + writer.write("\n"); + } - /* - * for (int k = 0; k < nProps; k++) { if (names[k] == null) { continue; } - * logger.info("Writing variable: " + names[k]); writer.write(names[k] + " (" + units[k] - * + ")\n"); for (int i = 0; i < pressures.length; i++) { - * //thermoSystem.setPressure(pressures[i]); int counter = 0; for (int j = 0; j < - * temperatures.length; j++) { // thermoSystem.setTemperature(temperatures[j]); if - * (counter > 4) { writer.write("\n"); counter = 0; } writer.write(props[k][i][j] + - * " "); counter++; } writer.write("\n"); } } - */ - } catch (IOException ex) { - // report + writer.write("LIQUID ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[15][i][j] + " "); + counter++; } - } + writer.write("\n"); + } - /** - *

- * extrapolateTable. - *

- */ - public void extrapolateTable() { + writer.write("WATER ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; for (int j = 0; j < temperatures.length; j++) { - for (int i = 0; i < pressures.length; i++) { - if (!hasValue[26][i][j]) { - } - } + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[24][i][j] + " "); + counter++; + } + writer.write("\n"); + } + + /* + * for (int k = 0; k < nProps; k++) { if (names[k] == null) { continue; } + * logger.info("Writing variable: " + names[k]); writer.write(names[k] + " (" + units[k] + + * ")\n"); for (int i = 0; i < pressures.length; i++) { + * //thermoSystem.setPressure(pressures[i]); int counter = 0; for (int j = 0; j < + * temperatures.length; j++) { // thermoSystem.setTemperature(temperatures[j]); if (counter > + * 4) { writer.write("\n"); counter = 0; } writer.write(props[k][i][j] + " "); counter++; } + * writer.write("\n"); } } + */ + } catch (IOException ex) { + // report + } + } + + /** + *

+ * extrapolateTable. + *

+ */ + public void extrapolateTable() { + for (int j = 0; j < temperatures.length; j++) { + for (int i = 0; i < pressures.length; i++) { + if (!hasValue[26][i][j]) { } + } } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterKeywordFormat.java b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterKeywordFormat.java index 4b357dba76..7ae34f92ad 100644 --- a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterKeywordFormat.java +++ b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterKeywordFormat.java @@ -5,10 +5,9 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -21,609 +20,628 @@ * @version $Id: $Id */ public class OLGApropertyTableGeneratorWaterKeywordFormat - extends neqsim.thermodynamicOperations.BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorWaterKeywordFormat.class); - - SystemInterface thermoSystem = null; - ThermodynamicOperations thermoOps = null; - double stdPres = 1.01325, stdPresATM = 1, stdTemp = 288.15; - double[] molfracs, MW, dens; - String[] components; - double GOR, GLR, stdGasDens, stdLiqDens, stdWatDens; - double[] pressures, temperatureLOG, temperatures, pressureLOG = null; - double[][] ROG = null; // DROGDP, DROHLDP, DROGDT, DROHLDT; - double[] bubP, bubT, dewP, bubPLOG, dewPLOG, bubTLOG; - double[][] ROL, CPG, CPHL, HG, HHL, TCG, TCHL, VISG, VISHL, SIGGHL, SEG, SEHL, RS; - double TC, PC, TCLOG, PCLOG; - double RSWTOB; - double[][][] props; - int nProps; - String[] names; - String[] units; - String[] namesKeyword; - - /** - *

- * Constructor for OLGApropertyTableGeneratorWaterKeywordFormat. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public OLGApropertyTableGeneratorWaterKeywordFormat(SystemInterface system) { - this.thermoSystem = system; - thermoOps = new ThermodynamicOperations(thermoSystem); + extends neqsim.thermodynamicOperations.BaseOperation { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorWaterKeywordFormat.class); + + SystemInterface thermoSystem = null; + ThermodynamicOperations thermoOps = null; + double stdPres = ThermodynamicConstantsInterface.referencePressure; + double stdPresATM = 1; + double stdTemp = 288.15; + double[] molfracs; + double[] MW; + double[] dens; + String[] components; + double GOR; + double GLR; + double stdGasDens; + double stdLiqDens; + double stdWatDens; + double[] pressures; + double[] temperatureLOG; + double[] temperatures; + double[] pressureLOG = null; + double[][] ROG = null; // DROGDP, DROHLDP, DROGDT, DROHLDT; + double[] bubP; + double[] bubT; + double[] dewP; + double[] bubPLOG; + double[] dewPLOG; + double[] bubTLOG; + double[][] ROL; + double[][] CPG; + double[][] CPHL; + double[][] HG; + double[][] HHL; + double[][] TCG; + double[][] TCHL; + double[][] VISG; + double[][] VISHL; + double[][] SIGGHL; + double[][] SEG; + double[][] SEHL; + double[][] RS; + double TC; + double PC; + double TCLOG; + double PCLOG; + double RSWTOB; + double[][][] props; + int nProps; + String[] names; + String[] units; + String[] namesKeyword; + + /** + *

+ * Constructor for OLGApropertyTableGeneratorWaterKeywordFormat. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public OLGApropertyTableGeneratorWaterKeywordFormat(SystemInterface system) { + this.thermoSystem = system; + thermoOps = new ThermodynamicOperations(thermoSystem); + } + + /** + *

+ * setPressureRange. + *

+ * + * @param minPressure a double + * @param maxPressure a double + * @param numberOfSteps a int + */ + public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { + pressures = new double[numberOfSteps]; + pressureLOG = new double[numberOfSteps]; + double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + pressures[i] = minPressure + i * step; + pressureLOG[i] = pressures[i] * 1e5; } - - /** - *

- * setPressureRange. - *

- * - * @param minPressure a double - * @param maxPressure a double - * @param numberOfSteps a int - */ - public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { - pressures = new double[numberOfSteps]; - pressureLOG = new double[numberOfSteps]; - double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - pressures[i] = minPressure + i * step; - pressureLOG[i] = pressures[i] * 1e5; - } + } + + /** + *

+ * setTemperatureRange. + *

+ * + * @param minTemperature a double + * @param maxTemperature a double + * @param numberOfSteps a int + */ + public void setTemperatureRange(double minTemperature, double maxTemperature, int numberOfSteps) { + temperatures = new double[numberOfSteps]; + temperatureLOG = new double[numberOfSteps]; + double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + temperatures[i] = minTemperature + i * step; + temperatureLOG[i] = temperatures[i] - 273.15; } - - /** - *

- * setTemperatureRange. - *

- * - * @param minTemperature a double - * @param maxTemperature a double - * @param numberOfSteps a int - */ - public void setTemperatureRange(double minTemperature, double maxTemperature, - int numberOfSteps) { - temperatures = new double[numberOfSteps]; - temperatureLOG = new double[numberOfSteps]; - double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - temperatures[i] = minTemperature + i * step; - temperatureLOG[i] = temperatures[i] - 273.15; - } + } + + /** + *

+ * calcPhaseEnvelope. + *

+ */ + public void calcPhaseEnvelope() { + try { + thermoOps.calcPTphaseEnvelope(); + TCLOG = thermoSystem.getTC(); + PCLOG = thermoSystem.getPC() * 0.986923267; // convert to ATM + TC = thermoSystem.getTC() - 273.15; + PC = thermoSystem.getPC() * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } - /** - *

- * calcPhaseEnvelope. - *

- */ - public void calcPhaseEnvelope() { - try { - thermoOps.calcPTphaseEnvelope(); - TCLOG = thermoSystem.getTC(); - PCLOG = thermoSystem.getPC() * 0.986923267; // convert to ATM - TC = thermoSystem.getTC() - 273.15; - PC = thermoSystem.getPC() * 1e5; - } catch (Exception e) { - logger.error("error", e); - } - - // thermoOps.ge + // thermoOps.ge + } + + /** + *

+ * calcBubP. + *

+ * + * @param temperatures an array of type double + * @return an array of type double + */ + public double[] calcBubP(double[] temperatures) { + double[] bubP = new double[temperatures.length]; + bubPLOG = new double[temperatures.length]; + for (int i = 0; i < temperatures.length; i++) { + thermoSystem.setTemperature(temperatures[i]); + try { + thermoOps.bubblePointPressureFlash(false); + bubP[i] = thermoSystem.getPressure(); + bubPLOG[i] = bubP[i] * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubP[i] = 0; + } } - - /** - *

- * calcBubP. - *

- * - * @param temperatures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubP(double[] temperatures) { - double[] bubP = new double[temperatures.length]; - bubPLOG = new double[temperatures.length]; - for (int i = 0; i < temperatures.length; i++) { - thermoSystem.setTemperature(temperatures[i]); - try { - thermoOps.bubblePointPressureFlash(false); - bubP[i] = thermoSystem.getPressure(); - bubPLOG[i] = bubP[i] * 1e5; - } catch (Exception e) { - logger.error("error", e); - bubP[i] = 0; - } - } - return bubP; + return bubP; + } + + /** + *

+ * calcDewP. + *

+ * + * @param temperatures an array of type double + * @return an array of type double + */ + public double[] calcDewP(double[] temperatures) { + double[] dewP = new double[temperatures.length]; + dewPLOG = new double[temperatures.length]; + for (int i = 0; i < temperatures.length; i++) { + thermoSystem.setTemperature(temperatures[i]); + try { + thermoOps.dewPointPressureFlash(); + dewP[i] = thermoSystem.getPressure(); + dewPLOG[i] = dewP[i] * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + dewP[i] = 0; + } } - - /** - *

- * calcDewP. - *

- * - * @param temperatures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcDewP(double[] temperatures) { - double[] dewP = new double[temperatures.length]; - dewPLOG = new double[temperatures.length]; - for (int i = 0; i < temperatures.length; i++) { - thermoSystem.setTemperature(temperatures[i]); - try { - thermoOps.dewPointPressureFlash(); - dewP[i] = thermoSystem.getPressure(); - dewPLOG[i] = dewP[i] * 1e5; - } catch (Exception e) { - logger.error("error", e); - dewP[i] = 0; - } - } - return dewP; + return dewP; + } + + /** + *

+ * calcBubT. + *

+ * + * @param pressures an array of type double + * @return an array of type double + */ + public double[] calcBubT(double[] pressures) { + double[] bubT = new double[pressures.length]; + bubTLOG = new double[pressures.length]; + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + try { + thermoOps.bubblePointTemperatureFlash(); + bubT[i] = thermoSystem.getTemperature(); + bubTLOG[i] = bubT[i] - 273.15; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubT[i] = 0.0; + } } - - /** - *

- * calcBubT. - *

- * - * @param pressures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubT(double[] pressures) { - double[] bubT = new double[pressures.length]; - bubTLOG = new double[pressures.length]; - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - try { - thermoOps.bubblePointTemperatureFlash(); - bubT[i] = thermoSystem.getTemperature(); - bubTLOG[i] = bubT[i] - 273.15; - } catch (Exception e) { - logger.error("error", e); - bubT[i] = 0.0; - } - } - return bubT; + return bubT; + } + + /** + *

+ * initCalc. + *

+ */ + public void initCalc() { + molfracs = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + MW = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + dens = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + components = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; + + for (int i = 0; i < molfracs.length; i++) { + molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); + components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); + MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; + dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); } - /** - *

- * initCalc. - *

+ thermoSystem.setTemperature(stdTemp); + thermoSystem.setPressure(stdPres); + + thermoOps.TPflash(); + thermoSystem.initPhysicalProperties(); + + GOR = thermoSystem.getPhase(0).getTotalVolume() / thermoSystem.getPhase(1).getTotalVolume(); + GLR = thermoSystem.getPhase(0).getTotalVolume() / thermoSystem.getPhase(1).getTotalVolume(); + + stdGasDens = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); + stdLiqDens = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); + stdWatDens = thermoSystem.getPhase(2).getPhysicalProperties().getDensity(); + } + + /** + *

+ * calcRSWTOB. + *

+ */ + public void calcRSWTOB() { + thermoSystem.init(0); + thermoSystem.init(1); + + RSWTOB = thermoSystem.getPhase(0).getComponent("water").getNumberOfmoles() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / (thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarMass()); + } + + /** {@inheritDoc} */ + @Override + public void run() { + logger.info("Start creating arrays"); + calcRSWTOB(); + nProps = 29; + props = new double[nProps][pressures.length][temperatures.length]; + units = new String[nProps]; + names = new String[nProps]; + namesKeyword = new String[nProps]; + calcPhaseEnvelope(); + /* + * ROG = new double[pressures.length][temperatures.length]; ROL = new + * double[pressures.length][temperatures.length]; CPG = new + * double[pressures.length][temperatures.length]; CPHL = new + * double[pressures.length][temperatures.length]; HG = new + * double[pressures.length][temperatures.length]; HHL = new + * double[pressures.length][temperatures.length]; VISG = new + * double[pressures.length][temperatures.length]; VISHL = new + * double[pressures.length][temperatures.length]; TCG = new + * double[pressures.length][temperatures.length]; TCHL = new + * double[pressures.length][temperatures.length]; // SIGGHL = new + * double[pressures.length][temperatures.length]; SEG = new + * double[pressures.length][temperatures.length]; SEHL = new + * double[pressures.length][temperatures.length]; RS = new + * double[pressures.length][temperatures.length]; // DROGDP = new + * double[pressures.length][temperatures.length]; // DROHLDP = new + * double[pressures.length][temperatures.length]; // DROGDT = new + * double[pressures.length][temperatures.length]; // DROHLDT = new + * double[pressures.length][temperatures.length]; */ - public void initCalc() { - molfracs = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - MW = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - dens = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - components = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; - - for (int i = 0; i < molfracs.length; i++) { - molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); - components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); - MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; - dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); - } - thermoSystem.setTemperature(stdTemp); - thermoSystem.setPressure(stdPres); - - thermoOps.TPflash(); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + thermoSystem.setTemperature(temperatures[j]); + try { + thermoOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + thermoSystem.init(3); thermoSystem.initPhysicalProperties(); - - GOR = thermoSystem.getPhase(0).getTotalVolume() / thermoSystem.getPhase(1).getTotalVolume(); - GLR = thermoSystem.getPhase(0).getTotalVolume() / thermoSystem.getPhase(1).getTotalVolume(); - - stdGasDens = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); - stdLiqDens = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); - stdWatDens = thermoSystem.getPhase(2).getPhysicalProperties().getDensity(); - } - - /** - *

- * calcRSWTOB. - *

- */ - public void calcRSWTOB() { - thermoSystem.init(0); - thermoSystem.init(1); - - RSWTOB = thermoSystem.getPhase(0).getComponent("water").getNumberOfmoles() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / (thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarMass()); - } - - /** {@inheritDoc} */ - @Override - public void run() { - logger.info("Start creating arrays"); - calcRSWTOB(); - nProps = 29; - props = new double[nProps][pressures.length][temperatures.length]; - units = new String[nProps]; - names = new String[nProps]; - namesKeyword = new String[nProps]; - calcPhaseEnvelope(); /* - * ROG = new double[pressures.length][temperatures.length]; ROL = new - * double[pressures.length][temperatures.length]; CPG = new - * double[pressures.length][temperatures.length]; CPHL = new - * double[pressures.length][temperatures.length]; HG = new - * double[pressures.length][temperatures.length]; HHL = new - * double[pressures.length][temperatures.length]; VISG = new - * double[pressures.length][temperatures.length]; VISHL = new - * double[pressures.length][temperatures.length]; TCG = new - * double[pressures.length][temperatures.length]; TCHL = new - * double[pressures.length][temperatures.length]; // SIGGHL = new - * double[pressures.length][temperatures.length]; SEG = new - * double[pressures.length][temperatures.length]; SEHL = new - * double[pressures.length][temperatures.length]; RS = new - * double[pressures.length][temperatures.length]; // DROGDP = new - * double[pressures.length][temperatures.length]; // DROHLDP = new - * double[pressures.length][temperatures.length]; // DROGDT = new - * double[pressures.length][temperatures.length]; // DROHLDT = new - * double[pressures.length][temperatures.length]; + * ROG[i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); ROL[i][j] = + * thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); DROGDP[i][j] = + * thermoSystem.getPhase(0).getdrhodP(); // DROHLDP[i][j] = + * thermoSystem.getPhase(1).getdrhodP(); // DROGDT[i][j] = + * thermoSystem.getPhase(0).getdrhodT(); // DROHLDT[i][j] = + * thermoSystem.getPhase(1).getdrhodT(); CPG[i][j] = thermoSystem.getPhase(0).getCp(); + * CPHL[i][j] = thermoSystem.getPhase(1).getCp(); HG[i][j] = + * thermoSystem.getPhase(0).getEnthalpy(); HHL[i][j] = + * thermoSystem.getPhase(1).getEnthalpy(); TCG[i][j] = + * thermoSystem.getPhase(0).getPhysicalProperties().getConductivity(); TCHL[i][j] = + * thermoSystem.getPhase(1).getPhysicalProperties().getConductivity(); VISG[i][j] = + * thermoSystem.getPhase(0).getPhysicalProperties().getViscosity(); VISHL[i][j] = + * thermoSystem.getPhase(1).getPhysicalProperties().getViscosity(); // SIGGHL[i][j] = + * thermoSystem.getInterphaseProperties().getSurfaceTension(0, 1); SEG[i][j] = + * thermoSystem.getPhase(0).getEntropy(); SEHL[i][j] = + * thermoSystem.getPhase(1).getEntropy(); RS[i][j] = thermoSystem.getPhase(0).getBeta(); */ - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - thermoSystem.setTemperature(temperatures[j]); - try { - thermoOps.TPflash(); - } catch (Exception e) { - logger.error("error", e); - } - thermoSystem.init(3); - thermoSystem.initPhysicalProperties(); - /* - * ROG[i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); - * ROL[i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); - * DROGDP[i][j] = thermoSystem.getPhase(0).getdrhodP(); // DROHLDP[i][j] = - * thermoSystem.getPhase(1).getdrhodP(); // DROGDT[i][j] = - * thermoSystem.getPhase(0).getdrhodT(); // DROHLDT[i][j] = - * thermoSystem.getPhase(1).getdrhodT(); CPG[i][j] = - * thermoSystem.getPhase(0).getCp(); CPHL[i][j] = thermoSystem.getPhase(1).getCp(); - * HG[i][j] = thermoSystem.getPhase(0).getEnthalpy(); HHL[i][j] = - * thermoSystem.getPhase(1).getEnthalpy(); TCG[i][j] = - * thermoSystem.getPhase(0).getPhysicalProperties().getConductivity(); TCHL[i][j] = - * thermoSystem.getPhase(1).getPhysicalProperties().getConductivity(); VISG[i][j] = - * thermoSystem.getPhase(0).getPhysicalProperties().getViscosity(); VISHL[i][j] = - * thermoSystem.getPhase(1).getPhysicalProperties().getViscosity(); // SIGGHL[i][j] - * = thermoSystem.getInterphaseProperties().getSurfaceTension(0, 1); SEG[i][j] = - * thermoSystem.getPhase(0).getEntropy(); SEHL[i][j] = - * thermoSystem.getPhase(1).getEntropy(); RS[i][j] = - * thermoSystem.getPhase(0).getBeta(); - */ - - int k = 0; - props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "GAS DENSITY"; - units[k] = "KG/M3"; - namesKeyword[k] = "ROG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); - names[k] = "LIQUID DENSITY"; - units[k] = "KG/M3"; - namesKeyword[k] = "ROHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(2).getPhysicalProperties().getDensity(); - names[k] = "WATER DENSITY"; - units[k] = "KG/M3"; - namesKeyword[k] = "ROWT"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOG/DP"; - units[k] = "S2/M2"; - namesKeyword[k] = "DROGDP"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getdrhodP() / 1.0e5; - names[k] = "DRHOL/DP"; - units[k] = "S2/M2"; - namesKeyword[k] = "DROHLDP"; - k++; - props[k][i][j] = thermoSystem.getPhase(2).getdrhodP() / 1.0e5; - names[k] = "DRHOWAT/DP"; - units[k] = "S2/M2"; - namesKeyword[k] = "DROWTDP"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOG/DT"; - units[k] = "KG/M3-K"; - namesKeyword[k] = "DROGDT"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getdrhodT(); - names[k] = "DRHOL/DT"; - units[k] = "KG/M3-K"; - namesKeyword[k] = "DROHLDT"; - k++; - props[k][i][j] = thermoSystem.getPhase(2).getdrhodT(); - names[k] = "DRHOWAT/DT"; - units[k] = "KG/M3-K"; - namesKeyword[k] = "DROWTDT"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getBeta() - * thermoSystem.getPhase(0).getMolarMass() / thermoSystem.getMolarMass(); - names[k] = "GAS MASS FRACTION"; - units[k] = "-"; - namesKeyword[k] = "RS"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getx() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / thermoSystem.getPhase(0).getMolarMass(); - names[k] = "WATER VAPOR MASS FRACTION"; - units[k] = "-"; - namesKeyword[k] = "RSW"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "GAS VISCOSITY"; - units[k] = "NS/M2"; - namesKeyword[k] = "VISG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getViscosity(); - names[k] = "LIQUID VISCOSITY"; - units[k] = "NS/M2"; - namesKeyword[k] = "VISHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(2).getPhysicalProperties().getViscosity(); - names[k] = "WATER VISCOSITY"; - units[k] = "NS/M2"; - namesKeyword[k] = "VISWT"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getCp() - / thermoSystem.getPhase(0).getNumberOfMolesInPhase() - / thermoSystem.getPhase(0).getMolarMass(); - names[k] = "GAS HEAT CAPACITY"; - units[k] = "J/KG-K"; - namesKeyword[k] = "CPG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getCp() - / thermoSystem.getPhase(1).getNumberOfMolesInPhase() - / thermoSystem.getPhase(1).getMolarMass(); - names[k] = "LIQUID HEAT CAPACITY"; - units[k] = "J/KG-K"; - namesKeyword[k] = "CPHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(2).getCp() - / thermoSystem.getPhase(2).getNumberOfMolesInPhase() - / thermoSystem.getPhase(2).getMolarMass(); - names[k] = "WATER HEAT CAPACITY"; - units[k] = "J/KG-K"; - namesKeyword[k] = "CPWT"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getEnthalpy() - / thermoSystem.getPhase(0).getNumberOfMolesInPhase() - / thermoSystem.getPhase(0).getMolarMass(); - names[k] = "GAS ENTHALPY"; - units[k] = "J/KG"; - namesKeyword[k] = "HG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getEnthalpy() - / thermoSystem.getPhase(1).getNumberOfMolesInPhase() - / thermoSystem.getPhase(1).getMolarMass(); - names[k] = "LIQUID ENTHALPY"; - units[k] = "J/KG"; - namesKeyword[k] = "HHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(2).getEnthalpy() - / thermoSystem.getPhase(2).getNumberOfMolesInPhase() - / thermoSystem.getPhase(2).getMolarMass(); - names[k] = "WATER ENTHALPY"; - units[k] = "J/KG"; - namesKeyword[k] = "HWT"; - k++; // fra neqsim er entalpi per mol - props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "GAS THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - namesKeyword[k] = "TCG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getConductivity(); - names[k] = "LIQUID THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - namesKeyword[k] = "TCHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(2).getPhysicalProperties().getConductivity(); - names[k] = "WATER THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - namesKeyword[k] = "TCWT"; - k++; - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension(0, 1); - names[k] = "VAPOR-LIQUID SURFACE TENSION"; - units[k] = "N/M"; - namesKeyword[k] = "SIGGHL"; - k++; - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension(0, 2); - names[k] = "VAPOR-WATER SURFACE TENSION"; - units[k] = "N/M"; - namesKeyword[k] = "SIGGWT"; - k++; - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension(1, 2); - names[k] = "LIQUID-WATER SURFACE TENSION"; - units[k] = "N/M"; - namesKeyword[k] = "SIGHLWT"; - k++; - props[k][i][j] = thermoSystem.getPhase(0).getEntropy() - / thermoSystem.getPhase(0).getNumberOfMolesInPhase() - / thermoSystem.getPhase(0).getMolarMass(); - names[k] = "GAS ENTROPY"; - units[k] = "J/KG/K"; - namesKeyword[k] = "SEG"; - k++; - props[k][i][j] = thermoSystem.getPhase(1).getEntropy() - / thermoSystem.getPhase(1).getNumberOfMolesInPhase() - / thermoSystem.getPhase(1).getMolarMass(); - names[k] = "LIQUID ENTROPY"; - units[k] = "J/KG/K"; - namesKeyword[k] = "SEHL"; - k++; - props[k][i][j] = thermoSystem.getPhase(2).getEntropy() - / thermoSystem.getPhase(2).getNumberOfMolesInPhase() - / thermoSystem.getPhase(2).getMolarMass(); - names[k] = "WATER ENTROPY"; - units[k] = "J/KG/K"; - namesKeyword[k] = "SEWT"; - k++; - } - } - bubP = calcBubP(temperatures); - // dewP = calcDewP(temperatures); - bubT = calcBubT(temperatures); - logger.info("Finished creating arrays"); - initCalc(); + int k = 0; + props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "GAS DENSITY"; + units[k] = "KG/M3"; + namesKeyword[k] = "ROG"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getDensity(); + names[k] = "LIQUID DENSITY"; + units[k] = "KG/M3"; + namesKeyword[k] = "ROHL"; + k++; + props[k][i][j] = thermoSystem.getPhase(2).getPhysicalProperties().getDensity(); + names[k] = "WATER DENSITY"; + units[k] = "KG/M3"; + namesKeyword[k] = "ROWT"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOG/DP"; + units[k] = "S2/M2"; + namesKeyword[k] = "DROGDP"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getdrhodP() / 1.0e5; + names[k] = "DRHOL/DP"; + units[k] = "S2/M2"; + namesKeyword[k] = "DROHLDP"; + k++; + props[k][i][j] = thermoSystem.getPhase(2).getdrhodP() / 1.0e5; + names[k] = "DRHOWAT/DP"; + units[k] = "S2/M2"; + namesKeyword[k] = "DROWTDP"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOG/DT"; + units[k] = "KG/M3-K"; + namesKeyword[k] = "DROGDT"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getdrhodT(); + names[k] = "DRHOL/DT"; + units[k] = "KG/M3-K"; + namesKeyword[k] = "DROHLDT"; + k++; + props[k][i][j] = thermoSystem.getPhase(2).getdrhodT(); + names[k] = "DRHOWAT/DT"; + units[k] = "KG/M3-K"; + namesKeyword[k] = "DROWTDT"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getBeta() + * thermoSystem.getPhase(0).getMolarMass() / thermoSystem.getMolarMass(); + names[k] = "GAS MASS FRACTION"; + units[k] = "-"; + namesKeyword[k] = "RS"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getx() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / thermoSystem.getPhase(0).getMolarMass(); + names[k] = "WATER VAPOR MASS FRACTION"; + units[k] = "-"; + namesKeyword[k] = "RSW"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "GAS VISCOSITY"; + units[k] = "NS/M2"; + namesKeyword[k] = "VISG"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getViscosity(); + names[k] = "LIQUID VISCOSITY"; + units[k] = "NS/M2"; + namesKeyword[k] = "VISHL"; + k++; + props[k][i][j] = thermoSystem.getPhase(2).getPhysicalProperties().getViscosity(); + names[k] = "WATER VISCOSITY"; + units[k] = "NS/M2"; + namesKeyword[k] = "VISWT"; + k++; + props[k][i][j] = + thermoSystem.getPhase(0).getCp() / thermoSystem.getPhase(0).getNumberOfMolesInPhase() + / thermoSystem.getPhase(0).getMolarMass(); + names[k] = "GAS HEAT CAPACITY"; + units[k] = "J/KG-K"; + namesKeyword[k] = "CPG"; + k++; + props[k][i][j] = + thermoSystem.getPhase(1).getCp() / thermoSystem.getPhase(1).getNumberOfMolesInPhase() + / thermoSystem.getPhase(1).getMolarMass(); + names[k] = "LIQUID HEAT CAPACITY"; + units[k] = "J/KG-K"; + namesKeyword[k] = "CPHL"; + k++; + props[k][i][j] = + thermoSystem.getPhase(2).getCp() / thermoSystem.getPhase(2).getNumberOfMolesInPhase() + / thermoSystem.getPhase(2).getMolarMass(); + names[k] = "WATER HEAT CAPACITY"; + units[k] = "J/KG-K"; + namesKeyword[k] = "CPWT"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getEnthalpy() + / thermoSystem.getPhase(0).getNumberOfMolesInPhase() + / thermoSystem.getPhase(0).getMolarMass(); + names[k] = "GAS ENTHALPY"; + units[k] = "J/KG"; + namesKeyword[k] = "HG"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getEnthalpy() + / thermoSystem.getPhase(1).getNumberOfMolesInPhase() + / thermoSystem.getPhase(1).getMolarMass(); + names[k] = "LIQUID ENTHALPY"; + units[k] = "J/KG"; + namesKeyword[k] = "HHL"; + k++; + props[k][i][j] = thermoSystem.getPhase(2).getEnthalpy() + / thermoSystem.getPhase(2).getNumberOfMolesInPhase() + / thermoSystem.getPhase(2).getMolarMass(); + names[k] = "WATER ENTHALPY"; + units[k] = "J/KG"; + namesKeyword[k] = "HWT"; + k++; // fra neqsim er entalpi per mol + props[k][i][j] = thermoSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "GAS THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + namesKeyword[k] = "TCG"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getPhysicalProperties().getConductivity(); + names[k] = "LIQUID THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + namesKeyword[k] = "TCHL"; + k++; + props[k][i][j] = thermoSystem.getPhase(2).getPhysicalProperties().getConductivity(); + names[k] = "WATER THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + namesKeyword[k] = "TCWT"; + k++; + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension(0, 1); + names[k] = "VAPOR-LIQUID SURFACE TENSION"; + units[k] = "N/M"; + namesKeyword[k] = "SIGGHL"; + k++; + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension(0, 2); + names[k] = "VAPOR-WATER SURFACE TENSION"; + units[k] = "N/M"; + namesKeyword[k] = "SIGGWT"; + k++; + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension(1, 2); + names[k] = "LIQUID-WATER SURFACE TENSION"; + units[k] = "N/M"; + namesKeyword[k] = "SIGHLWT"; + k++; + props[k][i][j] = thermoSystem.getPhase(0).getEntropy() + / thermoSystem.getPhase(0).getNumberOfMolesInPhase() + / thermoSystem.getPhase(0).getMolarMass(); + names[k] = "GAS ENTROPY"; + units[k] = "J/KG/K"; + namesKeyword[k] = "SEG"; + k++; + props[k][i][j] = thermoSystem.getPhase(1).getEntropy() + / thermoSystem.getPhase(1).getNumberOfMolesInPhase() + / thermoSystem.getPhase(1).getMolarMass(); + names[k] = "LIQUID ENTROPY"; + units[k] = "J/KG/K"; + namesKeyword[k] = "SEHL"; + k++; + props[k][i][j] = thermoSystem.getPhase(2).getEntropy() + / thermoSystem.getPhase(2).getNumberOfMolesInPhase() + / thermoSystem.getPhase(2).getMolarMass(); + names[k] = "WATER ENTROPY"; + units[k] = "J/KG/K"; + namesKeyword[k] = "SEWT"; + k++; + } } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - logger.info("TC " + TC + " PC " + PC); - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - logger.info("pressure " + pressureLOG[i] + " temperature " + temperatureLOG[j]); // + - // " - // ROG - // " - // + - // ROG[i][j] - // + - // " - // ROL - // " - // + - // ROL[i][j]); - } - } - writeOLGAinpFile(""); + bubP = calcBubP(temperatures); + // dewP = calcDewP(temperatures); + bubT = calcBubT(temperatures); + logger.info("Finished creating arrays"); + initCalc(); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + logger.info("TC " + TC + " PC " + PC); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + logger.info("pressure " + pressureLOG[i] + " temperature " + temperatureLOG[j]); + // + " ROG " + ROG[i][j] + " ROL " + ROL[i][j]); + } } - - /** - *

- * writeOLGAinpFile. - *

- * - * @param filename a {@link java.lang.String} object - */ - public void writeOLGAinpFile(String filename) { - try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream( - "C:/Users/Kjetil Raul/Documents/Master KRB/3phaseTables/testCrazyFluidKeyWaterCPA.tab"), - "utf-8"))) { - writer.write("PVTTABLE LABEL = " + "\"" + "NewFluid" + "\"" + "," + "PHASE = THREE" - + ",\\" + "\n"); - writer.write("EOS = " + "\"" + "Equation" + "\"" + ",\\" + "\n"); - - writer.write("COMPONENTS = ("); - for (int i = 0; i < molfracs.length; i++) { - writer.write("\"" + components[i] + "\""); // How to set extra " ?? - if (i < molfracs.length - 1) { - writer.write(","); - } - } - writer.write("),\\" + "\n"); - - writer.write("MOLES = ("); - for (int i = 0; i < molfracs.length; i++) { - writer.write(molfracs[i] + ""); - if (i < molfracs.length - 1) { - writer.write(","); - } - } - writer.write("),\\" + "\n"); - - writer.write("MOLWEIGHT = ("); - for (int i = 0; i < molfracs.length; i++) { - writer.write(MW[i] + ""); - if (i < molfracs.length - 1) { - writer.write(","); - } - } - writer.write(") g/mol,\\" + "\n"); - - writer.write("DENSITY = ("); - for (int i = 0; i < molfracs.length; i++) { - writer.write(dens[i] + ""); - if (i < molfracs.length - 1) { - writer.write(","); - } - } - writer.write(") g/cm3,\\" + "\n"); - - writer.write("STDPRESSURE = " + stdPresATM + " ATM,\\" + "\n"); - writer.write("STDTEMPERATURE = " + stdTemp + " K,\\" + "\n"); - writer.write("GOR = " + GOR + " Sm3/Sm3,\\" + "\n"); - writer.write("GLR = " + GLR + " Sm3/Sm3,\\" + "\n"); - writer.write("STDGASDENSITY = " + stdGasDens + " kg/m3,\\" + "\n"); - writer.write("STDOILDENSITY = " + stdLiqDens + " kg/m3,\\" + "\n"); - writer.write("STDWATDENSITY = " + stdWatDens + " kg/m3,\\" + "\n"); - writer.write("CRITICALPRESSURE = " + PCLOG + " ATM,\\" + "\n"); - writer.write("CRITICALTEMPERATURE = " + TCLOG + " K,\\" + "\n"); - - writer.write( - "MESHTYPE = STANDARD" + "," + "TOTWATERFRACTION = (" + RSWTOB + "),\\" + "\n"); - - writer.write("PRESSURE = ("); - for (int i = 0; i < pressures.length; i++) { - writer.write(pressureLOG[i] + ""); - if (i < pressures.length - 1) { - writer.write(","); - } - } - writer.write(") Pa,\\" + "\n"); - - writer.write("TEMPERATURE = ("); - for (int i = 0; i < temperatures.length; i++) { - writer.write(temperatureLOG[i] + ""); - if (i < temperatures.length - 1) { - writer.write(","); - } - } - writer.write(") C,\\" + "\n"); - - writer.write("BUBBLEPRESSURES = ("); - for (int i = 0; i < temperatures.length; i++) { - writer.write(bubPLOG[i] + ""); - if (i < temperatures.length - 1) { - writer.write(","); - } - } - writer.write(") Pa,\\" + "\n"); - - writer.write("BUBBLETEMPERATURES = ("); - for (int i = 0; i < pressures.length; i++) { - writer.write(bubTLOG[i] + ""); - if (i < pressures.length - 1) { - writer.write(","); - } - } - writer.write(") C,\\" + "\n"); - - writer.write("COLUMNS = (PT,TM,"); - for (int k = 0; k < nProps; k++) { - writer.write(namesKeyword[k] + ""); - if (k < nProps - 1) { - writer.write(","); - } - } - writer.write(")" + "\n"); - - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < temperatures.length; j++) { - thermoSystem.setTemperature(temperatures[j]); - writer.write("PVTTABLE POINT = ("); - writer.write(pressureLOG[i] + ","); - writer.write(temperatureLOG[j] + ","); - for (int k = 0; k < nProps; k++) { - writer.write(props[k][i][j] + ""); - if (k < nProps - 1) { - writer.write(","); - } - } - writer.write(")" + "\n"); - } + writeOLGAinpFile(""); + } + + /** + *

+ * writeOLGAinpFile. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile(String filename) { + try (Writer writer = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream( + "C:/Users/Kjetil Raul/Documents/Master KRB/3phaseTables/testCrazyFluidKeyWaterCPA.tab"), + "utf-8"))) { + writer.write( + "PVTTABLE LABEL = " + "\"" + "NewFluid" + "\"" + "," + "PHASE = THREE" + ",\\" + "\n"); + writer.write("EOS = " + "\"" + "Equation" + "\"" + ",\\" + "\n"); + + writer.write("COMPONENTS = ("); + for (int i = 0; i < molfracs.length; i++) { + writer.write("\"" + components[i] + "\""); // How to set extra " ?? + if (i < molfracs.length - 1) { + writer.write(","); + } + } + writer.write("),\\" + "\n"); + + writer.write("MOLES = ("); + for (int i = 0; i < molfracs.length; i++) { + writer.write(molfracs[i] + ""); + if (i < molfracs.length - 1) { + writer.write(","); + } + } + writer.write("),\\" + "\n"); + + writer.write("MOLWEIGHT = ("); + for (int i = 0; i < molfracs.length; i++) { + writer.write(MW[i] + ""); + if (i < molfracs.length - 1) { + writer.write(","); + } + } + writer.write(") g/mol,\\" + "\n"); + + writer.write("DENSITY = ("); + for (int i = 0; i < molfracs.length; i++) { + writer.write(dens[i] + ""); + if (i < molfracs.length - 1) { + writer.write(","); + } + } + writer.write(") g/cm3,\\" + "\n"); + + writer.write("STDPRESSURE = " + stdPresATM + " ATM,\\" + "\n"); + writer.write("STDTEMPERATURE = " + stdTemp + " K,\\" + "\n"); + writer.write("GOR = " + GOR + " Sm3/Sm3,\\" + "\n"); + writer.write("GLR = " + GLR + " Sm3/Sm3,\\" + "\n"); + writer.write("STDGASDENSITY = " + stdGasDens + " kg/m3,\\" + "\n"); + writer.write("STDOILDENSITY = " + stdLiqDens + " kg/m3,\\" + "\n"); + writer.write("STDWATDENSITY = " + stdWatDens + " kg/m3,\\" + "\n"); + writer.write("CRITICALPRESSURE = " + PCLOG + " ATM,\\" + "\n"); + writer.write("CRITICALTEMPERATURE = " + TCLOG + " K,\\" + "\n"); + + writer.write("MESHTYPE = STANDARD" + "," + "TOTWATERFRACTION = (" + RSWTOB + "),\\" + "\n"); + + writer.write("PRESSURE = ("); + for (int i = 0; i < pressures.length; i++) { + writer.write(pressureLOG[i] + ""); + if (i < pressures.length - 1) { + writer.write(","); + } + } + writer.write(") Pa,\\" + "\n"); + + writer.write("TEMPERATURE = ("); + for (int i = 0; i < temperatures.length; i++) { + writer.write(temperatureLOG[i] + ""); + if (i < temperatures.length - 1) { + writer.write(","); + } + } + writer.write(") C,\\" + "\n"); + + writer.write("BUBBLEPRESSURES = ("); + for (int i = 0; i < temperatures.length; i++) { + writer.write(bubPLOG[i] + ""); + if (i < temperatures.length - 1) { + writer.write(","); + } + } + writer.write(") Pa,\\" + "\n"); + + writer.write("BUBBLETEMPERATURES = ("); + for (int i = 0; i < pressures.length; i++) { + writer.write(bubTLOG[i] + ""); + if (i < pressures.length - 1) { + writer.write(","); + } + } + writer.write(") C,\\" + "\n"); + + writer.write("COLUMNS = (PT,TM,"); + for (int k = 0; k < nProps; k++) { + writer.write(namesKeyword[k] + ""); + if (k < nProps - 1) { + writer.write(","); + } + } + writer.write(")" + "\n"); + + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < temperatures.length; j++) { + thermoSystem.setTemperature(temperatures[j]); + writer.write("PVTTABLE POINT = ("); + writer.write(pressureLOG[i] + ","); + writer.write(temperatureLOG[j] + ","); + for (int k = 0; k < nProps; k++) { + writer.write(props[k][i][j] + ""); + if (k < nProps - 1) { + writer.write(","); } - } catch (IOException ex) { - // report + } + writer.write(")" + "\n"); } + } + } catch (IOException ex) { + // report } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterStudents.java b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterStudents.java index 110c596b85..4cf8638415 100644 --- a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterStudents.java +++ b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterStudents.java @@ -8,6 +8,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import Jama.Matrix; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermo.system.SystemSrkEos; @@ -22,1922 +24,1890 @@ * @version $Id: $Id */ public class OLGApropertyTableGeneratorWaterStudents - extends neqsim.thermodynamicOperations.BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorWaterStudents.class); - - SystemInterface thermoSystem = null, gasSystem = null, oilSystem = null, waterSystem = null; - ThermodynamicOperations thermoOps = null; - double[] pressures, temperatureLOG, temperatures, pressureLOG = null; - double[] bubP, bubT, dewP, bubPLOG, dewPLOG; - Matrix XMatrixgas, XMatrixoil, XMatrixwater; - double[][] ROG = null; - double maxPressure; - double minPressure; - double maxTemperature, TLC, GLW, GL, GW; // TLC = Top left corner. GOW=Gas+Liquid+Water, GO = - // Gas+Liquid, GW = - // Gas+Water - double minTemperature, VLS, VWS, LWS;; // VLS=Stop value for vapor-liqid surface tension. - // VWS=Stop value for - // vapor-water surface tension. LWS=Stop value for - // liquid-water surface - // tension - // double VLB, VLT, VWT, VWB, LWB, LWT; - // double[][] ROL, CPG, CPHL, HG, HHL, TCG, TCHL, VISG, - // VISHL, SIGGHL, SEG, - // SEHL, RS; - double TC, PC; - double RSWTOB; - double[][][] props; - int nProps; - String[] names; - Matrix[] xcoef = new Matrix[9]; - String[] units; - int temperatureSteps, pressureSteps; - boolean continuousDerivativesExtrapolation = true; - boolean hasGasValues = false; - boolean hasOilValues = false; - boolean hasWaterValues = false; - boolean[][][] hasValue; - Matrix aMatrix = new Matrix(4, 4); - Matrix s = new Matrix(1, 4); - String fileName = "c:/Appl/OLGAneqsim.tab"; - - /** - *

- * Constructor for OLGApropertyTableGeneratorWaterStudents. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public OLGApropertyTableGeneratorWaterStudents(SystemInterface system) { - this.thermoSystem = system; - thermoOps = new ThermodynamicOperations(thermoSystem); - - XMatrixgas = new Matrix(9, 4); - XMatrixoil = new Matrix(9, 4); - XMatrixwater = new Matrix(9, 4); - - gasSystem = new SystemSrkEos(298, 10); - gasSystem.addComponent("methane", 1); - // gasSystem.createDatabase(true); - gasSystem.init(0); - gasSystem.setNumberOfPhases(1); - - waterSystem = new SystemSrkCPAstatoil(298, 10); - waterSystem.addComponent("water", 1); - // waterSystem.createDatabase(true); - waterSystem.init(0); - waterSystem.setNumberOfPhases(1); - - oilSystem = new SystemSrkEos(298, 10); - oilSystem.addComponent("nC10", 1); - // oilSystem.createDatabase(true); - oilSystem.init(0); - oilSystem.setNumberOfPhases(1); + extends neqsim.thermodynamicOperations.BaseOperation { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorWaterStudents.class); + + SystemInterface thermoSystem = null; + SystemInterface gasSystem = null; + SystemInterface oilSystem = null; + SystemInterface waterSystem = null; + ThermodynamicOperations thermoOps = null; + double[] pressures; + double[] temperatureLOG; + double[] temperatures; + double[] pressureLOG = null; + double[] bubP; + double[] bubT; + double[] dewP; + double[] bubPLOG; + double[] dewPLOG; + Matrix XMatrixgas; + Matrix XMatrixoil; + Matrix XMatrixwater; + double[][] ROG = null; + double maxPressure; + double minPressure; + double maxTemperature; + double TLC; + double GLW; + double GL; + double GW; + double minTemperature; + double VLS; + double VWS; + double LWS; + double TC; + double PC; + double RSWTOB; + double[][][] props; + int nProps; + String[] names; + Matrix[] xcoef = new Matrix[9]; + String[] units; + int temperatureSteps; + int pressureSteps; + boolean continuousDerivativesExtrapolation = true; + boolean hasGasValues = false; + boolean hasOilValues = false; + boolean hasWaterValues = false; + boolean[][][] hasValue; + Matrix aMatrix = new Matrix(4, 4); + Matrix s = new Matrix(1, 4); + String fileName = "c:/Appl/OLGAneqsim.tab"; + + /** + *

+ * Constructor for OLGApropertyTableGeneratorWaterStudents. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public OLGApropertyTableGeneratorWaterStudents(SystemInterface system) { + this.thermoSystem = system; + thermoOps = new ThermodynamicOperations(thermoSystem); + + XMatrixgas = new Matrix(9, 4); + XMatrixoil = new Matrix(9, 4); + XMatrixwater = new Matrix(9, 4); + + gasSystem = new SystemSrkEos(298, 10); + gasSystem.addComponent("methane", 1); + // gasSystem.createDatabase(true); + gasSystem.init(0); + gasSystem.setNumberOfPhases(1); + + waterSystem = new SystemSrkCPAstatoil(298, 10); + waterSystem.addComponent("water", 1); + // waterSystem.createDatabase(true); + waterSystem.init(0); + waterSystem.setNumberOfPhases(1); + + oilSystem = new SystemSrkEos(298, 10); + oilSystem.addComponent("nC10", 1); + // oilSystem.createDatabase(true); + oilSystem.init(0); + oilSystem.setNumberOfPhases(1); + } + + /** + *

+ * Setter for the field fileName. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setFileName(String name) { + fileName = name; + } + + /** + *

+ * setPressureRange. + *

+ * + * @param minPressure a double + * @param maxPressure a double + * @param numberOfSteps a int + */ + public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { + pressures = new double[numberOfSteps]; + pressureLOG = new double[numberOfSteps]; + double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + pressures[i] = minPressure + i * step; + pressureLOG[i] = pressures[i] * 1e5; } - - /** - *

- * Setter for the field fileName. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setFileName(String name) { - fileName = name; + } + + /** + *

+ * setTemperatureRange. + *

+ * + * @param minTemperature a double + * @param maxTemperature a double + * @param numberOfSteps a int + */ + public void setTemperatureRange(double minTemperature, double maxTemperature, int numberOfSteps) { + temperatures = new double[numberOfSteps]; + temperatureLOG = new double[numberOfSteps]; + double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + temperatures[i] = minTemperature + i * step; + temperatureLOG[i] = temperatures[i] - 273.15; + } + } + + /** + *

+ * calcPhaseEnvelope. + *

+ */ + public void calcPhaseEnvelope() { + try { + thermoOps.calcPTphaseEnvelope(); + TC = thermoSystem.getTC() - 273.15; + PC = thermoSystem.getPC() * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } + + /** + *

+ * calcBubP. + *

+ * + * @param temperatures an array of type double + * @return an array of type double + */ + public double[] calcBubP(double[] temperatures) { + double[] bubP = new double[temperatures.length]; + bubPLOG = new double[temperatures.length]; + for (int i = 0; i < temperatures.length; i++) { + thermoSystem.setTemperature(temperatures[i]); + try { + thermoOps.bubblePointPressureFlash(false); + bubP[i] = thermoSystem.getPressure(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubP[i] = 0; + return bubP; + } + bubPLOG[i] = bubP[i] * 1e5; + } + return bubP; + } + + /** + *

+ * calcDewP. + *

+ * + * @param temperatures an array of type double + * @return an array of type double + */ + public double[] calcDewP(double[] temperatures) { + double[] dewP = new double[temperatures.length]; + dewPLOG = new double[temperatures.length]; + for (int i = 0; i < temperatures.length; i++) { + thermoSystem.setTemperature(temperatures[i]); + try { + thermoOps.dewPointPressureFlashHC(); + dewP[i] = thermoSystem.getPressure(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + dewP[i] = 0; + return dewP; + } - /** - *

- * setPressureRange. - *

- * - * @param minPressure a double - * @param maxPressure a double - * @param numberOfSteps a int - */ - public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { - pressures = new double[numberOfSteps]; - pressureLOG = new double[numberOfSteps]; - double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - pressures[i] = minPressure + i * step; - pressureLOG[i] = pressures[i] * 1e5; - } + dewPLOG[i] = dewP[i] * 1e5; + } + return dewP; + } + + /** + *

+ * calcBubT. + *

+ * + * @param pressures an array of type double + * @return an array of type double + */ + public double[] calcBubT(double[] pressures) { + double[] bubTemps = new double[pressures.length]; + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + try { + thermoOps.bubblePointTemperatureFlash(); + bubT[i] = thermoSystem.getPressure(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubT[i] = 0.0; + } + } + return bubTemps; + } + + /** + *

+ * initCalc. + *

+ */ + public void initCalc() { + double stdTemp = 288.15; + double stdPres = ThermodynamicConstantsInterface.referencePressure; + // double GOR, GLR; + double[] molfracs = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + double[] MW = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + double[] dens = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + String[] components = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; + + for (int i = 0; i < molfracs.length; i++) { + molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); + components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); + MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; + dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); } - /** - *

- * setTemperatureRange. - *

- * - * @param minTemperature a double - * @param maxTemperature a double - * @param numberOfSteps a int - */ - public void setTemperatureRange(double minTemperature, double maxTemperature, - int numberOfSteps) { - temperatures = new double[numberOfSteps]; - temperatureLOG = new double[numberOfSteps]; - double step = (maxTemperature - minTemperature) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - temperatures[i] = minTemperature + i * step; - temperatureLOG[i] = temperatures[i] - 273.15; - } + thermoSystem.setTemperature(stdTemp); + thermoSystem.setPressure(stdPres); + + thermoOps.TPflash(); + + // GOR = thermoSystem.getPhase(0).getTotalVolume() / + // thermoSystem.getPhase(1).getTotalVolume(); + // GLR = thermoSystem.getPhase(0).getTotalVolume() / + // thermoSystem.getPhase(1).getTotalVolume(); + } + + /** + *

+ * calcRSWTOB. + *

+ */ + public void calcRSWTOB() { + thermoSystem.init(0); + thermoSystem.init(1); + if (thermoSystem.getPhase(0).hasComponent("water")) { + RSWTOB = thermoSystem.getPhase(0).getComponent("water").getNumberOfmoles() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / (thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarMass()); + } else { + RSWTOB = 0.0; + } + } + + /** {@inheritDoc} */ + @Override + public void run() { + calcRSWTOB(); + logger.info("RSWTOB " + RSWTOB); + nProps = 29; + props = new double[nProps][pressures.length][temperatures.length]; + units = new String[nProps]; + names = new String[nProps]; + GLW = 0; + GL = 0; + GW = 0; + VLS = 0; + LWS = 0; + VWS = 0; + maxPressure = pressures[pressures.length - 1]; + minPressure = pressures[0]; + maxTemperature = temperatures[temperatures.length - 1]; + minTemperature = temperatures[0]; + thermoSystem.setTemperature(minTemperature); + thermoSystem.setPressure(maxPressure); + thermoOps.TPflash(); + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") + && thermoSystem.hasPhaseType("oil")) { + GLW = 1; + } + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous")) { + GW = 1; + } + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil")) { + GL = 1; } - /** - *

- * calcPhaseEnvelope. - *

- */ - public void calcPhaseEnvelope() { + // int startGasTemperatures = 0, startLiquid = 0, startWater = 0; + boolean acceptedFlash = true; + for (int j = 0; j < temperatures.length; j++) { + thermoSystem.setTemperature(temperatures[j]); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); try { - thermoOps.calcPTphaseEnvelope(); - TC = thermoSystem.getTC() - 273.15; - PC = thermoSystem.getPC() * 1e5; - } catch (Exception e) { - logger.error("error", e); + // logger.info("TPflash... " + thermoSystem.getTemperature() + " pressure " + + // thermoSystem.getPressure()); + thermoOps.TPflash(); + thermoSystem.init(3); + thermoSystem.initPhysicalProperties(); + acceptedFlash = true; + } catch (Exception ex) { + acceptedFlash = false; + logger.info("fail temperature " + thermoSystem.getTemperature() + " fail pressure " + + thermoSystem.getPressure()); + + thermoSystem.display(); + logger.error(ex.getMessage(), ex); } - } - /** - *

- * calcBubP. - *

- * - * @param temperatures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubP(double[] temperatures) { - double[] bubP = new double[temperatures.length]; - bubPLOG = new double[temperatures.length]; - for (int i = 0; i < temperatures.length; i++) { - thermoSystem.setTemperature(temperatures[i]); - try { - thermoOps.bubblePointPressureFlash(false); - bubP[i] = thermoSystem.getPressure(); - } catch (Exception e) { - logger.error("error", e); - bubP[i] = 0; - return bubP; + /* + * logger.info("water density " + + * thermoSystem.getPhase(2).getPhysicalProperties().getDensity()); logger.info("RSW " + + * thermoSystem.getPhase(0).getComponent("water").getx() * + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() / + * thermoSystem.getPhase(0).getMolarMass()); logger.info("surf tens oil-water " + + * thermoSystem.getInterphaseProperties().getSurfaceTension(1, 2)); + * logger.info("surf tens gas-water " + + * thermoSystem.getInterphaseProperties().getSurfaceTension(0, 2)); + */ + int k = 0; + if (thermoSystem.hasPhaseType("gas") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("gas"); + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "GAS DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOG/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOG/DT"; + units[k] = "KG/M3-K"; + k++; + + if (thermoSystem.hasPhaseType("oil")) { + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getBeta() + * thermoSystem.getPhase(phaseNumb).getMolarMass() + / (thermoSystem.getPhase(phaseNumb).getBeta() + * thermoSystem.getPhase(phaseNumb).getMolarMass() + + thermoSystem.getPhase("oil").getBeta() + * thermoSystem.getPhase("oil").getMolarMass()); + } else { + props[k][i][j] = 1.0; + // thermoSystem.getPhase(phaseNumb).getBeta() * + // thermoSystem.getPhase(phaseNumb).getMolarMass() / thermoSystem.getMolarMass(); + } + names[k] = "GAS MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "GAS VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "GAS THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS ENTROPY"; + units[k] = "J/KG/K"; + k++; + hasGasValues = true; + // set gas properties + } else if (continuousDerivativesExtrapolation && hasGasValues) { + do { + /* + * if (j>1 && i>1) { props[k][i][j] = 0.5 * ((props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] + * - temperatures[j - 1])) + (props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - + * 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]))); + * if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { props[k][i][j] = 0; + * } } + */ + + /* + * if (j > 1) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] + * - temperatures[j - 1]); } + */ + if (i > 1) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + // } //else if (j < 2) { + // props[k][i][j] = 0; //props[k][i - 1][j] + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // } else { + // props[k][i][j] = 0; //props[k][i - 1][j - 1] + (props[k][i][j - 1] - + // props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + // (temperatures[j] - temperatures[j - 1]) + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // double newTemp = pressures[i]; + // double vall = xcoef[k].get(0, 0) + newTemp * (xcoef[k].get(1, 0) + + // newTemp * + // (xcoef[k].get(2, 0) + newTemp * xcoef[k].get(3, 0))); + // props[k][i][j] = vall; + // if(i>0 && props[k][i-1][j]>1e-10) props[k][i][j] = + // props[k][i-1][j]*pressures[i]/pressures[i-1]; + + if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS DENSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0.1; + } + if (names[k].equals("GAS VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + } + if (j > 1) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 0.1; + } + if (names[k].equals("GAS VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } } - bubPLOG[i] = bubP[i] * 1e5; + k++; + } while (k < 9); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + /* + * } else if (false && !hasGasValues) { startGasTemperatures = j; + */ + } else { + gasSystem.setTemperature(temperatures[j]); + gasSystem.setPressure(pressures[i]); + gasSystem.init(3); + gasSystem.initPhysicalProperties(); + // gasSystem.display(); + props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "GAS DENSITY"; + units[k] = "KG/M3"; + k++; + props[k][i][j] = gasSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOG/DP"; + units[k] = "S2/M2"; + k++; + props[k][i][j] = gasSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOG/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = 0.0; + // thermoSystem.getPhase(phaseNumb).getBeta() * + // thermoSystem.getPhase(phaseNumb).getMolarMass() / thermoSystem.getMolarMass(); + names[k] = "GAS MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "GAS VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = + gasSystem.getPhase(0).getCp() / gasSystem.getPhase(0).getNumberOfMolesInPhase() + / gasSystem.getPhase(0).getMolarMass(); + names[k] = "GAS HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = + gasSystem.getPhase(0).getEnthalpy() / gasSystem.getPhase(0).getNumberOfMolesInPhase() + / gasSystem.getPhase(0).getMolarMass(); + names[k] = "GAS ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "GAS THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + + props[k][i][j] = + gasSystem.getPhase(0).getEntropy() / gasSystem.getPhase(0).getNumberOfMolesInPhase() + / gasSystem.getPhase(0).getMolarMass(); + names[k] = "GAS ENTROPY"; + units[k] = "J/KG/K"; + k++; } - return bubP; - } - /** - *

- * calcDewP. - *

- * - * @param temperatures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcDewP(double[] temperatures) { - double[] dewP = new double[temperatures.length]; - dewPLOG = new double[temperatures.length]; - for (int i = 0; i < temperatures.length; i++) { - thermoSystem.setTemperature(temperatures[i]); - try { - thermoOps.dewPointPressureFlashHC(); - dewP[i] = thermoSystem.getPressure(); - } catch (Exception e) { - logger.error("error", e); - dewP[i] = 0; - return dewP; + if (thermoSystem.hasPhaseType("oil") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("oil"); + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "LIQUID DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOL/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOL/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "LIQUID VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "LIQUID THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + hasOilValues = true; + } else if (continuousDerivativesExtrapolation && hasOilValues) { + do { + // if (i>1) { + // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // } + // if (j>1 && i>1) { + // props[k][i][j] = 0.5 * ((props[k][i - 1][j] + (props[k][i - 1][j] - + // props[k][i - 2][j]) / (temperatures[i - 1] - temperatures[i - 2]) * + // (temperatures[i] - temperatures[i - 1])) + (props[k][i - 1][j] + + // (props[k][i + // - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * + // (pressures[i] - pressures[i - 1]))); + // } + /* + * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] + * - temperatures[j - 1])) +(props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - + * 3]) / (temperatures[j - 1] - temperatures[j - 3]) * (temperatures[j] - temperatures[j + * - 1]))); } + */ + if (j < 2 && i < 2) { + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 100; + } + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { + props[k][i][j] = 900; + } + if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + } + if (j > 1) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 100; + } + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { + props[k][i][j] = 900; + } + if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + } + if (i > 1) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 100; + } + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { + props[k][i][j] = 900; + } + if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } } - dewPLOG[i] = dewP[i] * 1e5; + // if (j > 1 && TLC==3) { + // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j + // - + // 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - + // temperatures[j - 1]); + // if (j>1) { + // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j + // - + // 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - + // temperatures[j - 1]); + // } else if (j < 2) { + // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // } else { + // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - + // props[k][i][j + // - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - + // temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / + // (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - + // 1]); + // } + // props[k][i][j] = 0.0;*/ + // } + k++; + } while (k < 17); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + } else { + oilSystem.setPhaseType(0, PhaseType.byValue(0)); + oilSystem.setTemperature(temperatures[j]); + oilSystem.setPressure(pressures[i]); + oilSystem.init(3); + oilSystem.initPhysicalProperties(); + + props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "LIQUID DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOL/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOL/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "LIQUID VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = + oilSystem.getPhase(0).getCp() / oilSystem.getPhase(0).getNumberOfMolesInPhase() + / oilSystem.getPhase(0).getMolarMass(); + names[k] = "LIQUID HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = + oilSystem.getPhase(0).getEnthalpy() / oilSystem.getPhase(0).getNumberOfMolesInPhase() + / oilSystem.getPhase(0).getMolarMass(); + names[k] = "LIQUID ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = + oilSystem.getPhase(0).getEntropy() / oilSystem.getPhase(0).getNumberOfMolesInPhase() + / oilSystem.getPhase(0).getMolarMass(); + names[k] = "LIQUID ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "LIQUID THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + } // setOilProperties(); + + // set gas properties + if (thermoSystem.hasPhaseType("aqueous") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("aqueous"); + if (thermoSystem.hasPhaseType("gas")) { + props[k][i][j] = thermoSystem.getPhase("gas").getComponent("water").getx() + * thermoSystem.getPhase("gas").getComponent("water").getMolarMass() + / thermoSystem.getPhase("gas").getMolarMass(); + } + if (thermoSystem.hasPhaseType("oil")) { + props[k][i][j] += thermoSystem.getPhase("oil").getComponent("water").getx() + * thermoSystem.getPhase("oil").getComponent("water").getMolarMass() + / thermoSystem.getPhase("oil").getMolarMass(); + } + names[k] = "WATER VAPOR MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "WATER DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOWAT/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOWAT/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "WATER VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "WATER THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + hasWaterValues = true; + } else if (continuousDerivativesExtrapolation && hasWaterValues) { + do { + /* + * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] + * - temperatures[j - 1])) +(props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - + * 3]) / (temperatures[j - 1] - temperatures[j - 3]) * (temperatures[j] - temperatures[j + * - 1]))); if (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { + * props[k][i][j] = 1; } } + */ + if (j > 1) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + if (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { + props[k][i][j] = 1; + } + if (names[k].equals("WATER DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 1000; + } + if (names[k].equals("WATER VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + } + /* + * if (j > 1 && TLC == 3) { props[k][i][j] = props[k][i][j-1] + (props[k][i][j-1] - + * props[k][i][j-2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - + * temperatures[j - 1]); if (j>1) { props[k][i][j] = props[k][i][j-1] + + * (props[k][i][j-1] - props[k][i][j-2]) / (temperatures[j - 1] - temperatures[j - 2]) * + * (temperatures[j] - temperatures[j - 1]); if + * (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { props[k][i][j] + * = 1; } } + */ + if (i > 1) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + if (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { + props[k][i][j] = 1; + } + + if (names[k].equals("WATER DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 1000; + } + if (names[k].equals("WATER VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + } + + /* + * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] + * - temperatures[j - 1]); } else if (j < 2) { props[k][i][j] = props[k][i - 1][j] + + * (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * + * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = props[k][i - 1][j - 1] + + * (props[k][i][j - 1] - props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - + * 2]) * (temperatures[j] - temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - + * 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } + * props[k][i][j] = 0.0; + */ + k++; + } while (k < 26); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + } else { + waterSystem.setTemperature(temperatures[j]); + waterSystem.setPressure(pressures[i]); + waterSystem.setPhaseType(0, PhaseType.byValue(0)); + waterSystem.init(3); + waterSystem.initPhysicalProperties(); + + if (thermoSystem.getPhase(0).hasComponent("water")) { + props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getz() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / thermoSystem.getPhase(0).getMolarMass(); + } else { + props[k][i][j] = 0.0; + } + names[k] = "WATER VAPOR MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "WATER DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOWAT/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOWAT/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "WATER VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = + waterSystem.getPhase(0).getCp() / waterSystem.getPhase(0).getNumberOfMolesInPhase() + / waterSystem.getPhase(0).getMolarMass(); + names[k] = "WATER HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getEnthalpy() + / waterSystem.getPhase(0).getNumberOfMolesInPhase() + / waterSystem.getPhase(0).getMolarMass(); + names[k] = "WATER ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getEntropy() + / waterSystem.getPhase(0).getNumberOfMolesInPhase() + / waterSystem.getPhase(0).getMolarMass(); + names[k] = "WATER ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "WATER THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; } - return dewP; - } - /** - *

- * calcBubT. - *

- * - * @param pressures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubT(double[] pressures) { - double[] bubTemps = new double[pressures.length]; - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - try { - thermoOps.bubblePointTemperatureFlash(); - bubT[i] = thermoSystem.getPressure(); - } catch (Exception e) { - logger.error("error", e); - bubT[i] = 0.0; + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil") && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("gas"), thermoSystem.getPhaseNumberOfPhase("oil")); + names[k] = "VAPOR-LIQUID SURFACE TENSION"; + units[k] = "N/M"; + k++; + } else { + if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { + if (VLS == 1) { + props[k][i][j] = 5.0e-3; + // k++; + } + // if (j>1 && thermoSystem.hasPhaseType("gas") && VLS==0 && acceptedFlash) { + if (j > 1 && (GLW == 1 || GL == 1) && VLS == 0) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + /* + * if (names[k].equals("VAPOR-LIQUID SURFACE TENSION") && props[k][i][j] < 5.0e-3) { + * props[k][i][j] = 7.5e-3; VLS=1; } if + * (names[k].equals("VAPOR-LIQUID SURFACE TENSION") && props[k][i][j] > 30.0e-3) { + * props[k][i][j] = 20.0e-3; VLS=1; } + */ + if (props[k][i][j] < 5.0e-3) { + props[k][i][j] = 5.0e-3; + VLS = 1; + } + if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + // } else if (i>1 && thermoSystem.hasPhaseType("oil") && VLS == 0 && + // acceptedFlash) { + // } else if (i > 1 && TLC < 3 && VLS==0) { + } else if (i > 1 && (GLW == 0 || GL == 0) && VLS == 0) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + if (props[k][i][j] < 5.0e-3) { + props[k][i][j] = 5.0e-3; + VLS = 1; + } + if (props[k][i][j] > 1.1 * props[k][i - 1][j]) { + props[k][i][j] = props[k][i - 1][j]; + } + if (props[k][i][j] < 0.9 * props[k][i - 1][j]) { + props[k][i][j] = props[k][i - 1][j]; + } + } else if (j > 0 && i > 0) { + props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + } else { + // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - + // props[k][i][j + // - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + // (temperatures[j] - + // temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / + // (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - + // 1]); + props[k][i][j] = 10.0e-3; } - } - return bubTemps; - } - /** - *

- * initCalc. - *

- */ - public void initCalc() { - double stdTemp = 288.15, stdPres = 1.01325; - // double GOR, GLR; - double molfracs[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - double MW[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - double dens[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - String components[] = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; - - for (int i = 0; i < molfracs.length; i++) { - molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); - components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); - MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; - dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); + // k++; + } else if (j > 0 && i > 0) { + props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + // k++; + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + // k++; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + // k++; + } else { + props[k][i][j] = 10.0e-3; + names[k] = "VAPOR-LIQUID SURFACE TENSION"; + units[k] = "N/M"; + // k++; + } + k++; } - thermoSystem.setTemperature(stdTemp); - thermoSystem.setPressure(stdPres); - - thermoOps.TPflash(); + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") + && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("gas"), + thermoSystem.getPhaseNumberOfPhase("aqueous")); + names[k] = "VAPOR-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; + } else { + if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { + if (VWS == 1) { + props[k][i][j] = 5.0e-3; + // k++; + } + // if (j>1 && thermoSystem.hasPhaseType("gas") && VWS == 0 && acceptedFlash) + // { + // if (j > 1 && TLC==3 && VWS==0) { + if (j > 1 && (GLW == 1 || GW == 1) && VWS == 0) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + /* + * if (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 35.0e-3; VWS=1; } if + * (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] > 150.0e-3) { + * props[k][i][j] = 105.0e-3; VWS=1; } + */ + if (props[k][i][j] < 5.0e-3) { + props[k][i][j] = 5.0e-3; + VWS = 1; + } + if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + // } else if (j>1 && thermoSystem.hasPhaseType("aqueous") && VWS ==0 && + // acceptedFlash) { + // } else if (i > 1 && TLC < 3 && VWS==0) { + } else if (i > 1 && (GLW == 0 || GL == 0) && VWS == 0) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + /* + * if (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 35.0e-3; VWS=1; } if + * (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] > 150.0e-3) { + * props[k][i][j] = 105.0e-3; VWS=1; } + */ + if (props[k][i][j] < 5.0e-3) { + props[k][i][j] = 5.0e-3; + VWS = 1; + } + if (props[k][i][j] > 1.1 * props[k][i - 1][j]) { + props[k][i][j] = props[k][i - 1][j]; + } + if (props[k][i][j] < 0.9 * props[k][i - 1][j]) { + props[k][i][j] = props[k][i - 1][j]; + } + } else if (j > 0 && i > 0) { + props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + } else { + // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - + // props[k][i][j + // - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + // (temperatures[j] - + // temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / + // (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - + // 1]); + props[k][i][j] = 60.0e-3; + } - // GOR = thermoSystem.getPhase(0).getTotalVolume() / - // thermoSystem.getPhase(1).getTotalVolume(); - // GLR = thermoSystem.getPhase(0).getTotalVolume() / - // thermoSystem.getPhase(1).getTotalVolume(); - } + // k++; + } else if (j > 0 && i > 0) { + props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + // k++; + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + // k++; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + // k++; + } else { + props[k][i][j] = 60.0e-3; + names[k] = "VAPOR-WATER SURFACE TENSION"; + units[k] = "N/M"; + // k++; + } + k++; + } - /** - *

- * calcRSWTOB. - *

- */ - public void calcRSWTOB() { - thermoSystem.init(0); - thermoSystem.init(1); - if (thermoSystem.getPhase(0).hasComponent("water")) { - RSWTOB = thermoSystem.getPhase(0).getComponent("water").getNumberOfmoles() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / (thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarMass()); + if (thermoSystem.hasPhaseType("oil") && thermoSystem.hasPhaseType("aqueous") + && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("oil"), + thermoSystem.getPhaseNumberOfPhase("aqueous")); + names[k] = "LIQUID-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; } else { - RSWTOB = 0.0; + if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { + if (LWS == 1) { + props[k][i][j] = 5.0e-3; + // k++; + } + if (j > 1 && LWS == 0) { + // if (j > 1 && TLC==3 && LWS==0) { + // if (j>1 && LWS==0 && acceptedFlash) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (temperatures[j - 1] - temperatures[j - 2]) + * (temperatures[j] - temperatures[j - 1]); + /* + * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + * (temperatures[j] - temperatures[j - 1])) +(props[k][i][j - 1] + (props[k][i][j - 1] + * - props[k][i][j - 3]) / (temperatures[j - 1] - temperatures[j - 3]) * + * (temperatures[j] - temperatures[j - 1]))); if + * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 25.0e-3; LWS=1; } + * + * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > 120.0e-3) { + * props[k][i][j] = 80.0e-3; LWS=1; } } + */ + + /* + * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 25.0e-3; LWS=1; } if + * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > 120.0e-3) { + * props[k][i][j] = 80.0e-3; LWS=1; } + */ + if (props[k][i][j] < 5.0e-3) { + props[k][i][j] = 5.0e-3; + LWS = 1; + } + if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + // } else if (i > 1 && LWS==0 && acceptedFlash) { + // } else if (i > 1 && TLC < 3 && LWS==0) { + // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + /* + * if (i > 2) { props[k][i][j] = 0.5*((props[k][i - 1][j] + (props[k][i - 1][j] - + * props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + * pressures[i - 1])) +(props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 3][j]) + * / (pressures[i - 1] - pressures[i - 3]) * (pressures[i] - pressures[i - 1]))); if + * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 25.0e-3; LWS=1; } + * + * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > 120.0e-3) { + * props[k][i][j] = 80.0e-3; LWS=1; } } + */ + + /* + * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 25.0e-3; LWS=1; } if + * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > 120.0e-3) { + * props[k][i][j] = 80.0e-3; LWS=1; } + */ + + /* + * if (props[k][i][j] < 5.0e-3) { props[k][i][j] = 5.0e-3; LWS = 1; } if + * (props[k][i][j] > 1.1* props[k][i - 1][j]) { props[k][i][j] = props[k][i - 1][j]; } + * if (props[k][i][j] < 0.9* props[k][i - 1][j]) { props[k][i][j] = props[k][i - + * 1][j]; } + */ + // } else if (j >0 && i > 0) { + // props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + } else { + // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - + // props[k][i][j + // - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * + // (temperatures[j] - + // temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / + // (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - + // 1]); + props[k][i][j] = 40.0e-3; + } + + // k++; + // } else if (j >0 && i > 0) { + // props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + // k++; + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + // k++; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + // k++; + } else { + props[k][i][j] = 40.0e-3; + names[k] = "LIQUID-WATER SURFACE TENSION"; + units[k] = "N/M"; + // k++; + } + k++; } + } } - - /** {@inheritDoc} */ - @Override - public void run() { - calcRSWTOB(); - logger.info("RSWTOB " + RSWTOB); - nProps = 29; - props = new double[nProps][pressures.length][temperatures.length]; - units = new String[nProps]; - names = new String[nProps]; - GLW = 0; - GL = 0; - GW = 0; - VLS = 0; - LWS = 0; - VWS = 0; - maxPressure = pressures[pressures.length - 1]; - minPressure = pressures[0]; - maxTemperature = temperatures[temperatures.length - 1]; - minTemperature = temperatures[0]; - thermoSystem.setTemperature(minTemperature); - thermoSystem.setPressure(maxPressure); - thermoOps.TPflash(); - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") - && thermoSystem.hasPhaseType("oil")) { - GLW = 1; + logger.info("Finished TPflash..."); + if (thermoSystem.getPhase(0).hasComponent("water")) { + thermoSystem.removeComponent("water"); + } + bubP = calcBubP(temperatures); + dewP = calcDewP(temperatures); + // bubT = calcBubT(temperatures); + // logger.info("Finished creating arrays"); + // BicubicSplineInterpolatingFunction funcGasDens = + // interpolationFunc.interpolate(pressures, temperatures, props[0]); + // logger.info("interpolated value " + funcGasDens.value(40, 298.0)); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + // logger.info("TC " + TC + " PC " + PC); + // for (int i = 0; i < pressures.length; i++) { + // thermoSystem.setPressure(pressures[i]); + // for (int j = 0; j < temperatures.length; j++) { + // logger.info("pressure " + pressureLOG[i] + " temperature " + + // temperatureLOG[j]); // + " ROG " + ROG[i][j] + " ROL " + ROL[i][j]); + // } + // } + writeOLGAinpFile(fileName); + } + + /** + *

+ * writeOLGAinpFile2. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile2(String filename) { + /* + * try { writer = new BufferedWriter(new OutputStreamWriter( new + * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), "utf-8")); + * writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; i++) { + * thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; j++) { + * thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } + * writer.write(")"); } catch (IOException ex) { // report } finally { try { } writer.close(); } + * catch (Exception ex) { } } + */ + try (Writer writer = + new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "utf-8"))) { + writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); + + writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); + int Pcounter = 0; + for (int i = 0; i < pressures.length; i++) { + if (Pcounter > 4) { + writer.write("\n"); + Pcounter = 0; } - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous")) { - GW = 1; + writer.write(pressureLOG[i] + " "); + Pcounter++; + } + writer.write("\n"); + + int Tcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (Tcounter > 4) { + writer.write("\n"); + Tcounter = 0; } - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil")) { - GL = 1; + writer.write(temperatureLOG[i] + " "); + Tcounter++; + } + writer.write("\n"); + + int bubPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (bubPcounter > 4) { + writer.write("\n"); + bubPcounter = 0; } - - // int startGasTemperatures = 0, startLiquid = 0, startWater = 0; - boolean acceptedFlash = true; - for (int j = 0; j < temperatures.length; j++) { - thermoSystem.setTemperature(temperatures[j]); - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - try { - // logger.info("TPflash... " + thermoSystem.getTemperature() + " pressure " + - // thermoSystem.getPressure()); - thermoOps.TPflash(); - thermoSystem.init(3); - thermoSystem.initPhysicalProperties(); - acceptedFlash = true; - } catch (Exception e) { - acceptedFlash = false; - logger.info("fail temperature " + thermoSystem.getTemperature() - + " fail pressure " + thermoSystem.getPressure()); - - thermoSystem.display(); - logger.error("error", e); - } - - /* - * logger.info("water density " + - * thermoSystem.getPhase(2).getPhysicalProperties().getDensity()); - * logger.info("RSW " + thermoSystem.getPhase(0).getComponent("water").getx() * - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() / - * thermoSystem.getPhase(0).getMolarMass()); logger.info("surf tens oil-water " + - * thermoSystem.getInterphaseProperties().getSurfaceTension(1, 2)); - * logger.info("surf tens gas-water " + - * thermoSystem.getInterphaseProperties().getSurfaceTension(0, 2)); - */ - int k = 0; - if (thermoSystem.hasPhaseType("gas") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("gas"); - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "GAS DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOG/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOG/DT"; - units[k] = "KG/M3-K"; - k++; - - if (thermoSystem.hasPhaseType("oil")) { - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getBeta() - * thermoSystem.getPhase(phaseNumb).getMolarMass() - / (thermoSystem.getPhase(phaseNumb).getBeta() - * thermoSystem.getPhase(phaseNumb).getMolarMass() - + thermoSystem.getPhase("oil").getBeta() - * thermoSystem.getPhase("oil").getMolarMass()); - } else { - props[k][i][j] = 1.0;// thermoSystem.getPhase(phaseNumb).getBeta() * - // thermoSystem.getPhase(phaseNumb).getMolarMass() / - // thermoSystem.getMolarMass(); - } - names[k] = "GAS MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "GAS VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "GAS THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS ENTROPY"; - units[k] = "J/KG/K"; - k++; - hasGasValues = true; - // set gas properties - } else if (continuousDerivativesExtrapolation && hasGasValues) { - do { - /* - * if (j>1 && i>1) { props[k][i][j] = 0.5 * ((props[k][i][j - 1] + - * (props[k][i][j - 1] - props[k][i][j - 2]) / (temperatures[j - 1] - - * temperatures[j - 2]) * (temperatures[j] - temperatures[j - 1])) + - * (props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) / - * (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - - * 1]))); if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { - * props[k][i][j] = 0; } } - */ - - /* - * if (j > 1) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - - * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * - * (temperatures[j] - temperatures[j - 1]); } - */ - if (i > 1) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - // } //else if (j < 2) { - // props[k][i][j] = 0;//props[k][i - 1][j] + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // } else { - // props[k][i][j] = 0;//props[k][i - 1][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * - // (temperatures[j] - temperatures[j - 1]) + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // double newTemp = pressures[i]; - // double vall = xcoef[k].get(0, 0) + newTemp * (xcoef[k].get(1, 0) + - // newTemp * - // (xcoef[k].get(2, 0) + newTemp * xcoef[k].get(3, 0))); - // props[k][i][j] = vall; - // if(i>0 && props[k][i-1][j]>1e-10) props[k][i][j] = - // props[k][i-1][j]*pressures[i]/pressures[i-1]; - - if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS DENSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0.1; - } - if (names[k].equals("GAS VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - if (j > 1) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 0.1; - } - if (names[k].equals("GAS VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - k++; - } while (k < 9);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - /* - * } else if (false && !hasGasValues) { startGasTemperatures = j; - */ - } else { - gasSystem.setTemperature(temperatures[j]); - gasSystem.setPressure(pressures[i]); - gasSystem.init(3); - gasSystem.initPhysicalProperties(); - // gasSystem.display(); - props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "GAS DENSITY"; - units[k] = "KG/M3"; - k++; - props[k][i][j] = gasSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOG/DP"; - units[k] = "S2/M2"; - k++; - props[k][i][j] = gasSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOG/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = 0.0;// thermoSystem.getPhase(phaseNumb).getBeta() * - // thermoSystem.getPhase(phaseNumb).getMolarMass() / - // thermoSystem.getMolarMass(); - names[k] = "GAS MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "GAS VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getCp() - / gasSystem.getPhase(0).getNumberOfMolesInPhase() - / gasSystem.getPhase(0).getMolarMass(); - names[k] = "GAS HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getEnthalpy() - / gasSystem.getPhase(0).getNumberOfMolesInPhase() - / gasSystem.getPhase(0).getMolarMass(); - names[k] = "GAS ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = - gasSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "GAS THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getEntropy() - / gasSystem.getPhase(0).getNumberOfMolesInPhase() - / gasSystem.getPhase(0).getMolarMass(); - names[k] = "GAS ENTROPY"; - units[k] = "J/KG/K"; - k++; - } - - if (thermoSystem.hasPhaseType("oil") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("oil"); - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "LIQUID DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOL/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOL/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "LIQUID VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "LIQUID THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - hasOilValues = true; - } else if (continuousDerivativesExtrapolation && hasOilValues) { - do { - // if (i>1) { - // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // } - // if (j>1 && i>1) { - // props[k][i][j] = 0.5 * ((props[k][i - 1][j] + (props[k][i - 1][j] - - // props[k][i - 2][j]) / (temperatures[i - 1] - temperatures[i - 2]) * - // (temperatures[i] - temperatures[i - 1])) + (props[k][i - 1][j] + - // (props[k][i - // - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * - // (pressures[i] - pressures[i - 1]))); - // } - /* - * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + (props[k][i][j - - * 1] - props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * - * (temperatures[j] - temperatures[j - 1])) +(props[k][i][j - 1] + - * (props[k][i][j - 1] - props[k][i][j - 3]) / (temperatures[j - 1] - - * temperatures[j - 3]) * (temperatures[j] - temperatures[j - 1]))); } - */ - if (j < 2 && i < 2) { - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 100; - } - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { - props[k][i][j] = 900; - } - if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - if (j > 1) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 100; - } - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { - props[k][i][j] = 900; - } - if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - if (i > 1) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 100; - } - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { - props[k][i][j] = 900; - } - if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - - // if (j > 1 && TLC==3) { - // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - // - - // 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - - // temperatures[j - 1]); - // if (j>1) { - // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - // - - // 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - - // temperatures[j - 1]); - // } else if (j < 2) { - // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // } else { - // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - // - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * (temperatures[j] - - // temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - // (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - - // 1]); - // } - // props[k][i][j] = 0.0;*/ - // } - k++; - } while (k < 17);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - } else { - oilSystem.setPhaseType(0, 0); - oilSystem.setTemperature(temperatures[j]); - oilSystem.setPressure(pressures[i]); - oilSystem.init(3); - oilSystem.initPhysicalProperties(); - - props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "LIQUID DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOL/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOL/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "LIQUID VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getCp() - / oilSystem.getPhase(0).getNumberOfMolesInPhase() - / oilSystem.getPhase(0).getMolarMass(); - names[k] = "LIQUID HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getEnthalpy() - / oilSystem.getPhase(0).getNumberOfMolesInPhase() - / oilSystem.getPhase(0).getMolarMass(); - names[k] = "LIQUID ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getEntropy() - / oilSystem.getPhase(0).getNumberOfMolesInPhase() - / oilSystem.getPhase(0).getMolarMass(); - names[k] = "LIQUID ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = - oilSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "LIQUID THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - } // setOilProperties(); - // set gas properties - - if (thermoSystem.hasPhaseType("aqueous") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("aqueous"); - if (thermoSystem.hasPhaseType("gas")) { - props[k][i][j] = thermoSystem.getPhase("gas").getComponent("water").getx() - * thermoSystem.getPhase("gas").getComponent("water").getMolarMass() - / thermoSystem.getPhase("gas").getMolarMass(); - } - if (thermoSystem.hasPhaseType("oil")) { - props[k][i][j] += thermoSystem.getPhase("oil").getComponent("water").getx() - * thermoSystem.getPhase("oil").getComponent("water").getMolarMass() - / thermoSystem.getPhase("oil").getMolarMass(); - } - names[k] = "WATER VAPOR MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "WATER DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOWAT/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOWAT/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "WATER VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "WATER THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - hasWaterValues = true; - } else if (continuousDerivativesExtrapolation && hasWaterValues) { - do { - /* - * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + (props[k][i][j - - * 1] - props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * - * (temperatures[j] - temperatures[j - 1])) +(props[k][i][j - 1] + - * (props[k][i][j - 1] - props[k][i][j - 3]) / (temperatures[j - 1] - - * temperatures[j - 3]) * (temperatures[j] - temperatures[j - 1]))); if - * (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { - * props[k][i][j] = 1; } } - */ - if (j > 1) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - if (names[k].equals("WATER VAPOR MASS FRACTION") - && props[k][i][j] > 1) { - props[k][i][j] = 1; - } - if (names[k].equals("WATER DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 1000; - } - if (names[k].equals("WATER VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER THERMAL CONDUCTIVITY") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER VAPOR MASS FRACTION") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - /* - * if (j > 1 && TLC == 3) { props[k][i][j] = props[k][i][j-1] + - * (props[k][i][j-1] - props[k][i][j-2]) / (temperatures[j - 1] - - * temperatures[j - 2]) * (temperatures[j] - temperatures[j - 1]); if (j>1) - * { props[k][i][j] = props[k][i][j-1] + (props[k][i][j-1] - - * props[k][i][j-2]) / (temperatures[j - 1] - temperatures[j - 2]) * - * (temperatures[j] - temperatures[j - 1]); if - * (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { - * props[k][i][j] = 1; } } - */ - if (i > 1) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - if (names[k].equals("WATER VAPOR MASS FRACTION") - && props[k][i][j] > 1) { - props[k][i][j] = 1; - } - - if (names[k].equals("WATER DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 1000; - } - if (names[k].equals("WATER VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER THERMAL CONDUCTIVITY") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER VAPOR MASS FRACTION") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - - /* - * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - - * props[k][i][j - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * - * (temperatures[j] - temperatures[j - 1]); } else if (j < 2) { - * props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - - * 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - * pressures[i - 1]); } else { props[k][i][j] = props[k][i - 1][j - 1] + - * (props[k][i][j - 1] - props[k][i][j - 2]) / (temperatures[j - 1] - - * temperatures[j - 2]) * (temperatures[j] - temperatures[j - 1]) + - * (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - - * pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } props[k][i][j] = - * 0.0; - */ - k++; - } while (k < 26);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - } else { - waterSystem.setTemperature(temperatures[j]); - waterSystem.setPressure(pressures[i]); - waterSystem.setPhaseType(0, 0); - waterSystem.init(3); - waterSystem.initPhysicalProperties(); - - if (thermoSystem.getPhase(0).hasComponent("water")) { - props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getz() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / thermoSystem.getPhase(0).getMolarMass();; - } else { - props[k][i][j] = 0.0; - } - names[k] = "WATER VAPOR MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "WATER DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOWAT/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOWAT/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "WATER VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getCp() - / waterSystem.getPhase(0).getNumberOfMolesInPhase() - / waterSystem.getPhase(0).getMolarMass(); - names[k] = "WATER HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getEnthalpy() - / waterSystem.getPhase(0).getNumberOfMolesInPhase() - / waterSystem.getPhase(0).getMolarMass(); - names[k] = "WATER ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getEntropy() - / waterSystem.getPhase(0).getNumberOfMolesInPhase() - / waterSystem.getPhase(0).getMolarMass(); - names[k] = "WATER ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = - waterSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "WATER THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - } - - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("gas"), - thermoSystem.getPhaseNumberOfPhase("oil")); - names[k] = "VAPOR-LIQUID SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { - if (VLS == 1) { - props[k][i][j] = 5.0e-3; - // k++; - } - // if (j>1 && thermoSystem.hasPhaseType("gas") && VLS==0 && acceptedFlash) { - if (j > 1 && (GLW == 1 || GL == 1) && VLS == 0) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - /* - * if (names[k].equals("VAPOR-LIQUID SURFACE TENSION") && props[k][i][j] - * < 5.0e-3) { props[k][i][j] = 7.5e-3; VLS=1; } if - * (names[k].equals("VAPOR-LIQUID SURFACE TENSION") && props[k][i][j] > - * 30.0e-3) { props[k][i][j] = 20.0e-3; VLS=1; } - */ - if (props[k][i][j] < 5.0e-3) { - props[k][i][j] = 5.0e-3; - VLS = 1; - } - if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - // } else if (i>1 && thermoSystem.hasPhaseType("oil") && VLS == 0 && - // acceptedFlash) { - // } else if (i > 1 && TLC < 3 && VLS==0) { - } else if (i > 1 && (GLW == 0 || GL == 0) && VLS == 0) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - if (props[k][i][j] < 5.0e-3) { - props[k][i][j] = 5.0e-3; - VLS = 1; - } - if (props[k][i][j] > 1.1 * props[k][i - 1][j]) { - props[k][i][j] = props[k][i - 1][j]; - } - if (props[k][i][j] < 0.9 * props[k][i - 1][j]) { - props[k][i][j] = props[k][i - 1][j]; - } - } else if (j > 0 && i > 0) { - props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - } else { - // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - // - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * - // (temperatures[j] - - // temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - // (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - - // 1]); - props[k][i][j] = 10.0e-3; - } - - // k++; - } else if (j > 0 && i > 0) { - props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - // k++; - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - // k++; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - // k++; - } else { - props[k][i][j] = 10.0e-3; - names[k] = "VAPOR-LIQUID SURFACE TENSION"; - units[k] = "N/M"; - // k++; - } - k++; - } - - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("gas"), - thermoSystem.getPhaseNumberOfPhase("aqueous")); - names[k] = "VAPOR-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { - if (VWS == 1) { - props[k][i][j] = 5.0e-3; - // k++; - } - // if (j>1 && thermoSystem.hasPhaseType("gas") && VWS == 0 && acceptedFlash) - // { - // if (j > 1 && TLC==3 && VWS==0) { - if (j > 1 && (GLW == 1 || GW == 1) && VWS == 0) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - /* - * if (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] - * < 10.0e-3) { props[k][i][j] = 35.0e-3; VWS=1; } if - * (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] > - * 150.0e-3) { props[k][i][j] = 105.0e-3; VWS=1; } - */ - if (props[k][i][j] < 5.0e-3) { - props[k][i][j] = 5.0e-3; - VWS = 1; - } - if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - // } else if (j>1 && thermoSystem.hasPhaseType("aqueous") && VWS ==0 && - // acceptedFlash) { - // } else if (i > 1 && TLC < 3 && VWS==0) { - } else if (i > 1 && (GLW == 0 || GL == 0) && VWS == 0) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - /* - * if (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] - * < 10.0e-3) { props[k][i][j] = 35.0e-3; VWS=1; } if - * (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] > - * 150.0e-3) { props[k][i][j] = 105.0e-3; VWS=1; } - */ - if (props[k][i][j] < 5.0e-3) { - props[k][i][j] = 5.0e-3; - VWS = 1; - } - if (props[k][i][j] > 1.1 * props[k][i - 1][j]) { - props[k][i][j] = props[k][i - 1][j]; - } - if (props[k][i][j] < 0.9 * props[k][i - 1][j]) { - props[k][i][j] = props[k][i - 1][j]; - } - } else if (j > 0 && i > 0) { - props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - } else { - // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - // - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * - // (temperatures[j] - - // temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - // (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - - // 1]); - props[k][i][j] = 60.0e-3; - } - - // k++; - } else if (j > 0 && i > 0) { - props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - // k++; - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - // k++; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - // k++; - } else { - props[k][i][j] = 60.0e-3; - names[k] = "VAPOR-WATER SURFACE TENSION"; - units[k] = "N/M"; - // k++; - } - k++; - } - - if (thermoSystem.hasPhaseType("oil") && thermoSystem.hasPhaseType("aqueous") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("oil"), - thermoSystem.getPhaseNumberOfPhase("aqueous")); - names[k] = "LIQUID-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { - if (LWS == 1) { - props[k][i][j] = 5.0e-3; - // k++; - } - if (j > 1 && LWS == 0) { - // if (j > 1 && TLC==3 && LWS==0) { - // if (j>1 && LWS==0 && acceptedFlash) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (temperatures[j - 1] - temperatures[j - 2]) - * (temperatures[j] - temperatures[j - 1]); - /* - * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + - * (props[k][i][j - 1] - props[k][i][j - 2]) / (temperatures[j - 1] - - * temperatures[j - 2]) * (temperatures[j] - temperatures[j - 1])) - * +(props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 3]) / - * (temperatures[j - 1] - temperatures[j - 3]) * (temperatures[j] - - * temperatures[j - 1]))); if - * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < - * 10.0e-3) { props[k][i][j] = 25.0e-3; LWS=1; } - * - * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] - * > 120.0e-3) { props[k][i][j] = 80.0e-3; LWS=1; } } - */ - - /* - * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] - * < 10.0e-3) { props[k][i][j] = 25.0e-3; LWS=1; } if - * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > - * 120.0e-3) { props[k][i][j] = 80.0e-3; LWS=1; } - */ - if (props[k][i][j] < 5.0e-3) { - props[k][i][j] = 5.0e-3; - LWS = 1; - } - if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - // } else if (i > 1 && LWS==0 && acceptedFlash) { - // } else if (i > 1 && TLC < 3 && LWS==0) { - // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - /* - * if (i > 2) { props[k][i][j] = 0.5*((props[k][i - 1][j] + (props[k][i - * - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) - * * (pressures[i] - pressures[i - 1])) +(props[k][i - 1][j] + - * (props[k][i - 1][j] - props[k][i - 3][j]) / (pressures[i - 1] - - * pressures[i - 3]) * (pressures[i] - pressures[i - 1]))); if - * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < - * 10.0e-3) { props[k][i][j] = 25.0e-3; LWS=1; } - * - * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] - * > 120.0e-3) { props[k][i][j] = 80.0e-3; LWS=1; } } - */ - - /* - * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] - * < 10.0e-3) { props[k][i][j] = 25.0e-3; LWS=1; } if - * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > - * 120.0e-3) { props[k][i][j] = 80.0e-3; LWS=1; } - */ - - /* - * if (props[k][i][j] < 5.0e-3) { props[k][i][j] = 5.0e-3; LWS = 1; } if - * (props[k][i][j] > 1.1* props[k][i - 1][j]) { props[k][i][j] = - * props[k][i - 1][j]; } if (props[k][i][j] < 0.9* props[k][i - 1][j]) { - * props[k][i][j] = props[k][i - 1][j]; } - */ - // } else if (j >0 && i > 0) { - // props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - } else { - // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - // - 2]) / (temperatures[j - 1] - temperatures[j - 2]) * - // (temperatures[j] - - // temperatures[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - // (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - - // 1]); - props[k][i][j] = 40.0e-3; - } - - // k++; - // } else if (j >0 && i > 0) { - // props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - // k++; - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - // k++; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - // k++; - } else { - props[k][i][j] = 40.0e-3; - names[k] = "LIQUID-WATER SURFACE TENSION"; - units[k] = "N/M"; - // k++; - } - k++; - } - } + writer.write(bubPLOG[i] + " "); + bubPcounter++; + } + writer.write("\n"); + + int dewPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (dewPcounter > 4) { + writer.write("\n"); + dewPcounter = 0; } - logger.info("Finished TPflash..."); - if (thermoSystem.getPhase(0).hasComponent("water")) { - thermoSystem.removeComponent("water"); + writer.write(dewPLOG[i] + " "); + dewPcounter++; + } + writer.write("\n"); + + for (int k = 0; k < nProps; k++) { + if (names[k] == null) { + continue; } - bubP = calcBubP(temperatures); - dewP = calcDewP(temperatures); - // bubT = calcBubT(temperatures); - // logger.info("Finished creating arrays"); - // BicubicSplineInterpolatingFunction funcGasDens = - // interpolationFunc.interpolate(pressures, temperatures, props[0]); - // logger.info("interpolated value " + funcGasDens.value(40, 298.0)); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - // logger.info("TC " + TC + " PC " + PC); - // for (int i = 0; i < pressures.length; i++) { - // thermoSystem.setPressure(pressures[i]); - // for (int j = 0; j < temperatures.length; j++) { - // logger.info("pressure " + pressureLOG[i] + " temperature " + - // temperatureLOG[j]);// + " ROG " + ROG[i][j] + " ROL " + ROL[i][j]); - // } - // } - writeOLGAinpFile(fileName); + // logger.info("Writing variable: " + names[k]); + writer.write(names[k] + " (" + units[k] + ")\n"); + for (int i = 0; i < pressures.length; i++) { + // thermoSystem.setPressure(pressures[i]); + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + // thermoSystem.setTemperature(temperatures[j]); + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[k][i][j] + " "); + counter++; + } + writer.write("\n"); + } + } + } catch (IOException ex) { + logger.error(ex.getMessage(), ex); } - - /** - *

- * writeOLGAinpFile2. - *

- * - * @param filename a {@link java.lang.String} object + } + + /** + *

+ * writeOLGAinpFile. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile(String filename) { + /* + * try { writer = new BufferedWriter(new OutputStreamWriter( new + * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), "utf-8")); + * writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; i++) { + * thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; j++) { + * thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } + * writer.write(")"); } catch (IOException ex) { // report } finally { try { } writer.close(); } + * catch (Exception ex) { } } */ - public void writeOLGAinpFile2(String filename) { - /* - * try { writer = new BufferedWriter(new OutputStreamWriter( new - * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), - * "utf-8")); writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; - * i++) { thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; - * j++) { thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } - * writer.write(")"); } catch (IOException ex) { // report } finally { try { } - * writer.close(); } catch (Exception ex) { } } - */ - try (Writer writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(fileName), "utf-8"))) { - writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); - - writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); - int Pcounter = 0; - for (int i = 0; i < pressures.length; i++) { - if (Pcounter > 4) { - writer.write("\n"); - Pcounter = 0; - } - writer.write(pressureLOG[i] + " "); - Pcounter++; - } + try (Writer writer = + new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "utf-8"))) { + writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); + + writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); + int Pcounter = 0; + for (int i = 0; i < pressures.length; i++) { + if (Pcounter > 4) { + writer.write("\n"); + Pcounter = 0; + } + writer.write(pressureLOG[i] + " "); + Pcounter++; + } + writer.write("\n"); + + int Tcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (Tcounter > 4) { + writer.write("\n"); + Tcounter = 0; + } + writer.write(temperatureLOG[i] + " "); + Tcounter++; + } + writer.write("\n"); + + int bubPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (bubPcounter > 4) { + writer.write("\n"); + bubPcounter = 0; + } + writer.write(bubPLOG[i] + " "); + bubPcounter++; + } + writer.write("\n"); + + int dewPcounter = 0; + for (int i = 0; i < temperatures.length; i++) { + if (dewPcounter > 4) { + writer.write("\n"); + dewPcounter = 0; + } + writer.write(dewPLOG[i] + " "); + dewPcounter++; + } + writer.write("\n"); + + writer.write("GAS DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[0][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int Tcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (Tcounter > 4) { - writer.write("\n"); - Tcounter = 0; - } - writer.write(temperatureLOG[i] + " "); - Tcounter++; - } + writer.write("LIQUID DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[9][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int bubPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (bubPcounter > 4) { - writer.write("\n"); - bubPcounter = 0; - } - writer.write(bubPLOG[i] + " "); - bubPcounter++; - } + writer.write("WATER DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[18][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int dewPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (dewPcounter > 4) { - writer.write("\n"); - dewPcounter = 0; - } - writer.write(dewPLOG[i] + " "); - dewPcounter++; - } + writer.write("DRHOG/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); - - for (int k = 0; k < nProps; k++) { - if (names[k] == null) { - continue; - } - // logger.info("Writing variable: " + names[k]); - writer.write(names[k] + " (" + units[k] + ")\n"); - for (int i = 0; i < pressures.length; i++) { - // thermoSystem.setPressure(pressures[i]); - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - // thermoSystem.setTemperature(temperatures[j]); - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[k][i][j] + " "); - counter++; - } - writer.write("\n"); - } - } - } catch (IOException ex) { - ex.printStackTrace(); + counter = 0; + } + writer.write(props[1][i][j] + " "); + counter++; } - } + writer.write("\n"); + } - /** - *

- * writeOLGAinpFile. - *

- * - * @param filename a {@link java.lang.String} object - */ - public void writeOLGAinpFile(String filename) { - /* - * try { writer = new BufferedWriter(new OutputStreamWriter( new - * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), - * "utf-8")); writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; - * i++) { thermoSystem.setPressure(pressures[i]); for (int j = 0; j < temperatures.length; - * j++) { thermoSystem.setTemperature(temperatures[j]); writer.write(ROG[i][j] + ","); } } - * writer.write(")"); } catch (IOException ex) { // report } finally { try { } - * writer.close(); } catch (Exception ex) { } } - */ - try (Writer writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(filename), "utf-8"))) { - writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); - - writer.write(pressures.length + " " + temperatures.length + " " + RSWTOB + "\n"); - int Pcounter = 0; - for (int i = 0; i < pressures.length; i++) { - if (Pcounter > 4) { - writer.write("\n"); - Pcounter = 0; - } - writer.write(pressureLOG[i] + " "); - Pcounter++; - } + writer.write("DRHOL/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[10][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int Tcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (Tcounter > 4) { - writer.write("\n"); - Tcounter = 0; - } - writer.write(temperatureLOG[i] + " "); - Tcounter++; - } + writer.write("DRHOWAT/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[19][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int bubPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (bubPcounter > 4) { - writer.write("\n"); - bubPcounter = 0; - } - writer.write(bubPLOG[i] + " "); - bubPcounter++; - } + writer.write("DRHOG/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[2][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int dewPcounter = 0; - for (int i = 0; i < temperatures.length; i++) { - if (dewPcounter > 4) { - writer.write("\n"); - dewPcounter = 0; - } - writer.write(dewPLOG[i] + " "); - dewPcounter++; - } + writer.write("DRHOL/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[11][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[0][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("LIQUID DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[9][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("WATER DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[18][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOG/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[1][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOL/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[10][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOWAT/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[19][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOG/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[2][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOL/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[11][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOWAT/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[20][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("GAS MASS FRACTION (-)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[3][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("WATER VAPOR MASS FRACTION (-)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[17][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("DRHOWAT/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[20][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[4][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS MASS FRACTION (-)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[3][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[12][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER VAPOR MASS FRACTION (-)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[17][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[21][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[4][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[5][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[12][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[13][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[21][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[22][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[5][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[6][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[13][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[14][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[22][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[23][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[6][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[7][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[14][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[16][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[23][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[25][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[7][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("VAPOR-LIQUID SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[26][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[16][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("VAPOR-WATER SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[27][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[25][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID-WATER SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[28][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("VAPOR-LIQUID SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[26][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[8][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("VAPOR-WATER SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[27][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[15][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID-WATER SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[28][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < temperatures.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[24][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[8][i][j] + " "); + counter++; + } + writer.write("\n"); + } - /* - * for (int k = 0; k < nProps; k++) { if (names[k] == null) { continue; } - * logger.info("Writing variable: " + names[k]); writer.write(names[k] + " (" + units[k] - * + ")\n"); for (int i = 0; i < pressures.length; i++) { - * //thermoSystem.setPressure(pressures[i]); int counter = 0; for (int j = 0; j < - * temperatures.length; j++) { // thermoSystem.setTemperature(temperatures[j]); if - * (counter > 4) { writer.write("\n"); counter = 0; } writer.write(props[k][i][j] + - * " "); counter++; } writer.write("\n"); } } - */ - } catch (IOException ex) { - // report + writer.write("LIQUID ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < temperatures.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[15][i][j] + " "); + counter++; } - } + writer.write("\n"); + } - /** - *

- * extrapolateTable. - *

- */ - public void extrapolateTable() { + writer.write("WATER ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; for (int j = 0; j < temperatures.length; j++) { - for (int i = 0; i < pressures.length; i++) { - if (!hasValue[26][i][j]) { - } - } + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[24][i][j] + " "); + counter++; + } + writer.write("\n"); + } + + /* + * for (int k = 0; k < nProps; k++) { if (names[k] == null) { continue; } + * logger.info("Writing variable: " + names[k]); writer.write(names[k] + " (" + units[k] + + * ")\n"); for (int i = 0; i < pressures.length; i++) { + * //thermoSystem.setPressure(pressures[i]); int counter = 0; for (int j = 0; j < + * temperatures.length; j++) { // thermoSystem.setTemperature(temperatures[j]); if (counter > + * 4) { writer.write("\n"); counter = 0; } writer.write(props[k][i][j] + " "); counter++; } + * writer.write("\n"); } } + */ + } catch (IOException ex) { + // report + } + } + + /** + *

+ * extrapolateTable. + *

+ */ + public void extrapolateTable() { + for (int j = 0; j < temperatures.length; j++) { + for (int i = 0; i < pressures.length; i++) { + if (!hasValue[26][i][j]) { } + } } + } } diff --git a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterStudentsPH.java b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterStudentsPH.java index d9169a2ce2..9fb65b8ef6 100644 --- a/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterStudentsPH.java +++ b/src/main/java/neqsim/thermodynamicOperations/propertyGenerator/OLGApropertyTableGeneratorWaterStudentsPH.java @@ -8,6 +8,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import Jama.Matrix; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermo.system.SystemSrkEos; @@ -22,1917 +24,1874 @@ * @version $Id: $Id */ public class OLGApropertyTableGeneratorWaterStudentsPH - extends neqsim.thermodynamicOperations.BaseOperation { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorWaterStudentsPH.class); - - SystemInterface thermoSystem = null, gasSystem = null, oilSystem = null, waterSystem = null; - ThermodynamicOperations thermoOps = null; - double[] pressures, enthalpiesLOG, enthalpies, pressureLOG = null; - double[] bubP, bubT, dewP, bubPLOG, dewPLOG; - Matrix XMatrixgas, XMatrixoil, XMatrixwater; - double[][] ROG = null; - double maxPressure; - double minPressure; - double TLC, GLW, GL, GW; // TLC = Top left corner. GOW=Gas+Liquid+Water, GO = Gas+Liquid, GW = - // Gas+Water - double VLS, VWS, LWS;; // VLS=Stop value for vapor-liqid surface tension. VWS=Stop value for - // vapor-water surface tension. LWS=Stop value for liquid-water surface - // tension - // double VLB, VLT, VWT, VWB, LWB, LWT; - // double[][] ROL, CPG, CPHL, HG, HHL, TCG, TCHL, VISG, VISHL, SIGGHL, - // SEG, - // SEHL, RS; - double TC, PC; - double RSWTOB; - double[][][] props; - int nProps; - String[] names; - Matrix[] xcoef = new Matrix[9]; - String[] units; - int temperatureSteps, pressureSteps; - boolean continuousDerivativesExtrapolation = true; - boolean hasGasValues = false; - boolean hasOilValues = false; - boolean hasWaterValues = false; - boolean[][][] hasValue; - Matrix aMatrix = new Matrix(4, 4); - Matrix s = new Matrix(1, 4); - String fileName = "c:/Appl/OLGAneqsim.tab"; - - /** - *

- * Constructor for OLGApropertyTableGeneratorWaterStudentsPH. - *

- * - * @param system a {@link neqsim.thermo.system.SystemInterface} object - */ - public OLGApropertyTableGeneratorWaterStudentsPH(SystemInterface system) { - this.thermoSystem = system; - thermoOps = new ThermodynamicOperations(thermoSystem); - - XMatrixgas = new Matrix(9, 4); - XMatrixoil = new Matrix(9, 4); - XMatrixwater = new Matrix(9, 4); - - gasSystem = new SystemSrkEos(298, 10); - gasSystem.addComponent("methane", 1); - // gasSystem.createDatabase(true); - gasSystem.init(0); - gasSystem.setNumberOfPhases(1); - - waterSystem = new SystemSrkCPAstatoil(298, 10); - waterSystem.addComponent("water", 1); - // waterSystem.createDatabase(true); - waterSystem.init(0); - waterSystem.setNumberOfPhases(1); - - oilSystem = new SystemSrkEos(298, 10); - oilSystem.addComponent("nC10", 1); - // oilSystem.createDatabase(true); - oilSystem.init(0); - oilSystem.setNumberOfPhases(1); + extends neqsim.thermodynamicOperations.BaseOperation { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(OLGApropertyTableGeneratorWaterStudentsPH.class); + + SystemInterface thermoSystem = null; + SystemInterface gasSystem = null; + SystemInterface oilSystem = null; + SystemInterface waterSystem = null; + ThermodynamicOperations thermoOps = null; + double[] pressures; + double[] enthalpiesLOG; + double[] enthalpies; + double[] pressureLOG = null; + double[] bubP; + double[] bubT; + double[] dewP; + double[] bubPLOG; + double[] dewPLOG; + Matrix XMatrixgas; + Matrix XMatrixoil; + Matrix XMatrixwater; + double[][] ROG = null; + double maxPressure; + double minPressure; + double TLC; + double GLW; + double GL; + double GW; + double VLS; + double VWS; + double LWS; + double TC; + double PC; + double RSWTOB; + double[][][] props; + int nProps; + String[] names; + Matrix[] xcoef = new Matrix[9]; + String[] units; + int temperatureSteps; + int pressureSteps; + boolean continuousDerivativesExtrapolation = true; + boolean hasGasValues = false; + boolean hasOilValues = false; + boolean hasWaterValues = false; + boolean[][][] hasValue; + Matrix aMatrix = new Matrix(4, 4); + Matrix s = new Matrix(1, 4); + String fileName = "c:/Appl/OLGAneqsim.tab"; + + /** + *

+ * Constructor for OLGApropertyTableGeneratorWaterStudentsPH. + *

+ * + * @param system a {@link neqsim.thermo.system.SystemInterface} object + */ + public OLGApropertyTableGeneratorWaterStudentsPH(SystemInterface system) { + this.thermoSystem = system; + thermoOps = new ThermodynamicOperations(thermoSystem); + + XMatrixgas = new Matrix(9, 4); + XMatrixoil = new Matrix(9, 4); + XMatrixwater = new Matrix(9, 4); + + gasSystem = new SystemSrkEos(298, 10); + gasSystem.addComponent("methane", 1); + // gasSystem.createDatabase(true); + gasSystem.init(0); + gasSystem.setNumberOfPhases(1); + + waterSystem = new SystemSrkCPAstatoil(298, 10); + waterSystem.addComponent("water", 1); + // waterSystem.createDatabase(true); + waterSystem.init(0); + waterSystem.setNumberOfPhases(1); + + oilSystem = new SystemSrkEos(298, 10); + oilSystem.addComponent("nC10", 1); + // oilSystem.createDatabase(true); + oilSystem.init(0); + oilSystem.setNumberOfPhases(1); + } + + /** + *

+ * Setter for the field fileName. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setFileName(String name) { + fileName = name; + } + + /** + *

+ * setPressureRange. + *

+ * + * @param minPressure a double + * @param maxPressure a double + * @param numberOfSteps a int + */ + public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { + pressures = new double[numberOfSteps]; + pressureLOG = new double[numberOfSteps]; + double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + pressures[i] = minPressure + i * step; + pressureLOG[i] = pressures[i] * 1e5; } - - /** - *

- * Setter for the field fileName. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setFileName(String name) { - fileName = name; + } + + /** + *

+ * setEnthalpyRange. + *

+ * + * @param minEnthalpy a double + * @param maxEnthalpy a double + * @param numberOfSteps a int + */ + public void setEnthalpyRange(double minEnthalpy, double maxEnthalpy, int numberOfSteps) { + enthalpies = new double[numberOfSteps]; + enthalpiesLOG = new double[numberOfSteps]; + double step = (maxEnthalpy - minEnthalpy) / (numberOfSteps * 1.0 - 1.0); + for (int i = 0; i < numberOfSteps; i++) { + enthalpies[i] = minEnthalpy + i * step; + enthalpiesLOG[i] = enthalpies[i]; + } + } + + /** + *

+ * calcPhaseEnvelope. + *

+ */ + public void calcPhaseEnvelope() { + try { + thermoOps.calcPTphaseEnvelope(); + TC = thermoSystem.getTC() - 273.15; + PC = thermoSystem.getPC() * 1e5; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } + + /** + *

+ * calcBubP. + *

+ * + * @param enthalpies an array of type double + * @return an array of type double + */ + public double[] calcBubP(double[] enthalpies) { + double[] bubP = new double[enthalpies.length]; + bubPLOG = new double[enthalpies.length]; + for (int i = 0; i < enthalpies.length; i++) { + thermoSystem.setTemperature(enthalpies[i]); + try { + thermoOps.bubblePointPressureFlash(false); + bubP[i] = thermoSystem.getPressure(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubP[i] = 0; + return bubP; + } + bubPLOG[i] = bubP[i] * 1e5; + } + return bubP; + } + + /** + *

+ * calcDewP. + *

+ * + * @param enthalpies an array of type double + * @return an array of type double + */ + public double[] calcDewP(double[] enthalpies) { + double[] dewP = new double[enthalpies.length]; + dewPLOG = new double[enthalpies.length]; + for (int i = 0; i < enthalpies.length; i++) { + thermoSystem.setTemperature(enthalpies[i]); + try { + thermoOps.dewPointPressureFlashHC(); + dewP[i] = thermoSystem.getPressure(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + dewP[i] = 0; + return dewP; + } - /** - *

- * setPressureRange. - *

- * - * @param minPressure a double - * @param maxPressure a double - * @param numberOfSteps a int - */ - public void setPressureRange(double minPressure, double maxPressure, int numberOfSteps) { - pressures = new double[numberOfSteps]; - pressureLOG = new double[numberOfSteps]; - double step = (maxPressure - minPressure) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - pressures[i] = minPressure + i * step; - pressureLOG[i] = pressures[i] * 1e5; - } + dewPLOG[i] = dewP[i] * 1e5; + } + return dewP; + } + + /** + *

+ * calcBubT. + *

+ * + * @param pressures an array of type double + * @return an array of type double + */ + public double[] calcBubT(double[] pressures) { + double[] bubTemps = new double[pressures.length]; + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + try { + thermoOps.bubblePointTemperatureFlash(); + bubT[i] = thermoSystem.getPressure(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + bubT[i] = 0.0; + } + } + return bubTemps; + } + + /** + *

+ * initCalc. + *

+ */ + public void initCalc() { + double stdTemp = 288.15; + double stdPres = ThermodynamicConstantsInterface.referencePressure; + // double GOR, GLR; + double[] molfracs = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + double[] MW = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + double[] dens = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; + String[] components = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; + + for (int i = 0; i < molfracs.length; i++) { + molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); + components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); + MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; + dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); } - /** - *

- * setEnthalpyRange. - *

- * - * @param minEnthalpy a double - * @param maxEnthalpy a double - * @param numberOfSteps a int - */ - public void setEnthalpyRange(double minEnthalpy, double maxEnthalpy, int numberOfSteps) { - enthalpies = new double[numberOfSteps]; - enthalpiesLOG = new double[numberOfSteps]; - double step = (maxEnthalpy - minEnthalpy) / (numberOfSteps * 1.0 - 1.0); - for (int i = 0; i < numberOfSteps; i++) { - enthalpies[i] = minEnthalpy + i * step; - enthalpiesLOG[i] = enthalpies[i]; - } + thermoSystem.setTemperature(stdTemp); + thermoSystem.setPressure(stdPres); + + thermoOps.TPflash(); + + // GOR = thermoSystem.getPhase(0).getTotalVolume() / + // thermoSystem.getPhase(1).getTotalVolume(); + // GLR = thermoSystem.getPhase(0).getTotalVolume() / + // thermoSystem.getPhase(1).getTotalVolume(); + } + + /** + *

+ * calcRSWTOB. + *

+ */ + public void calcRSWTOB() { + thermoSystem.init(0); + thermoSystem.init(1); + if (thermoSystem.getPhase(0).hasComponent("water")) { + RSWTOB = thermoSystem.getPhase(0).getComponent("water").getNumberOfmoles() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / (thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarMass()); + } else { + RSWTOB = 0.0; + } + } + + /** {@inheritDoc} */ + @Override + public void run() { + calcRSWTOB(); + logger.info("RSWTOB " + RSWTOB); + nProps = 29; + props = new double[nProps][pressures.length][enthalpies.length]; + units = new String[nProps]; + names = new String[nProps]; + GLW = 0; + GL = 0; + GW = 0; + VLS = 0; + LWS = 0; + VWS = 0; + maxPressure = pressures[pressures.length - 1]; + minPressure = pressures[0]; + // maxTemperature = enthalpies[enthalpies.length - 1]; + // minTemperature = enthalpies[0]; + // thermoSystem.setTemperature(minTemperature); + thermoSystem.setPressure(maxPressure); + thermoOps.TPflash(); + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") + && thermoSystem.hasPhaseType("oil")) { + GLW = 1; + } + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous")) { + GW = 1; + } + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil")) { + GL = 1; } - /** - *

- * calcPhaseEnvelope. - *

- */ - public void calcPhaseEnvelope() { + // int startGasTemperatures = 0, startLiquid = 0, startWater = 0; + boolean acceptedFlash = true; + for (int j = 0; j < enthalpies.length; j++) { + // thermoSystem.setTemperature(enthalpies[j]); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); try { - thermoOps.calcPTphaseEnvelope(); - TC = thermoSystem.getTC() - 273.15; - PC = thermoSystem.getPC() * 1e5; - } catch (Exception e) { - logger.error("error", e); + logger.info("PHflash... " + thermoSystem.getTemperature() + " pressure " + + thermoSystem.getPressure()); + thermoOps.PHflash(enthalpies[j], 0); + logger + .info(" temperature " + thermoSystem.getTemperature() + " enthalpy " + enthalpies[j]); + thermoSystem.init(3); + thermoSystem.initPhysicalProperties(); + acceptedFlash = true; + } catch (Exception ex) { + acceptedFlash = false; + logger.info("fail temperature " + thermoSystem.getTemperature() + " fail pressure " + + thermoSystem.getPressure()); + + thermoSystem.display(); + logger.error(ex.getMessage(), ex); } - } - /** - *

- * calcBubP. - *

- * - * @param enthalpies an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubP(double[] enthalpies) { - double[] bubP = new double[enthalpies.length]; - bubPLOG = new double[enthalpies.length]; - for (int i = 0; i < enthalpies.length; i++) { - thermoSystem.setTemperature(enthalpies[i]); - try { - thermoOps.bubblePointPressureFlash(false); - bubP[i] = thermoSystem.getPressure(); - } catch (Exception e) { - logger.error("error", e); - bubP[i] = 0; - return bubP; + /* + * logger.info("water density " + + * thermoSystem.getPhase(2).getPhysicalProperties().getDensity()); logger.info("RSW " + + * thermoSystem.getPhase(0).getComponent("water").getx() * + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() / + * thermoSystem.getPhase(0).getMolarMass()); logger.info("surf tens oil-water " + + * thermoSystem.getInterphaseProperties().getSurfaceTension(1, 2)); + * logger.info("surf tens gas-water " + + * thermoSystem.getInterphaseProperties().getSurfaceTension(0, 2)); + */ + int k = 0; + if (thermoSystem.hasPhaseType("gas") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("gas"); + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "GAS DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOG/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOG/DT"; + units[k] = "KG/M3-K"; + k++; + + if (thermoSystem.hasPhaseType("oil")) { + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getBeta() + * thermoSystem.getPhase(phaseNumb).getMolarMass() + / (thermoSystem.getPhase(phaseNumb).getBeta() + * thermoSystem.getPhase(phaseNumb).getMolarMass() + + thermoSystem.getPhase("oil").getBeta() + * thermoSystem.getPhase("oil").getMolarMass()); + } else { + props[k][i][j] = 1.0; + // thermoSystem.getPhase(phaseNumb).getBeta() * + // thermoSystem.getPhase(phaseNumb).getMolarMass() / thermoSystem.getMolarMass(); + } + names[k] = "GAS MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "GAS VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "GAS THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "GAS ENTROPY"; + units[k] = "J/KG/K"; + k++; + hasGasValues = true; + // set gas properties + } else if (continuousDerivativesExtrapolation && hasGasValues) { + do { + /* + * if (j>1 && i>1) { props[k][i][j] = 0.5 * ((props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + * enthalpies[j - 1])) + (props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + * / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]))); if + * (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { props[k][i][j] = 0; } + * } + */ + + /* + * if (j > 1) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + * enthalpies[j - 1]); } + */ + if (i > 1) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + // } //else if (j < 2) { + // props[k][i][j] = 0; //props[k][i - 1][j] + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // } else { + // props[k][i][j] = 0; //props[k][i - 1][j - 1] + (props[k][i][j - 1] - + // props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * + // (enthalpies[j] - enthalpies[j - 1]) + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // double newTemp = pressures[i]; + // double vall = xcoef[k].get(0, 0) + newTemp * (xcoef[k].get(1, 0) + + // newTemp * + // (xcoef[k].get(2, 0) + newTemp * xcoef[k].get(3, 0))); + // props[k][i][j] = vall; + // if(i>0 && props[k][i-1][j]>1e-10) props[k][i][j] = + // props[k][i-1][j]*pressures[i]/pressures[i-1]; + + if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS DENSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0.1; + } + if (names[k].equals("GAS VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + } + if (j > 1) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - enthalpies[j - 1]); + if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 0.1; + } + if (names[k].equals("GAS VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("GAS HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } } - bubPLOG[i] = bubP[i] * 1e5; + k++; + } while (k < 9); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + /* + * } else if (false && !hasGasValues) { startGasTemperatures = j; + */ + } else { + gasSystem.setTemperature(enthalpies[j]); + gasSystem.setPressure(pressures[i]); + gasSystem.init(3); + gasSystem.initPhysicalProperties(); + // gasSystem.display(); + props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "GAS DENSITY"; + units[k] = "KG/M3"; + k++; + props[k][i][j] = gasSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOG/DP"; + units[k] = "S2/M2"; + k++; + props[k][i][j] = gasSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOG/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = 0.0; + // thermoSystem.getPhase(phaseNumb).getBeta() * + // thermoSystem.getPhase(phaseNumb).getMolarMass() / thermoSystem.getMolarMass(); + names[k] = "GAS MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "GAS VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = + gasSystem.getPhase(0).getCp() / gasSystem.getPhase(0).getNumberOfMolesInPhase() + / gasSystem.getPhase(0).getMolarMass(); + names[k] = "GAS HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = + gasSystem.getPhase(0).getEnthalpy() / gasSystem.getPhase(0).getNumberOfMolesInPhase() + / gasSystem.getPhase(0).getMolarMass(); + names[k] = "GAS ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "GAS THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + + props[k][i][j] = + gasSystem.getPhase(0).getEntropy() / gasSystem.getPhase(0).getNumberOfMolesInPhase() + / gasSystem.getPhase(0).getMolarMass(); + names[k] = "GAS ENTROPY"; + units[k] = "J/KG/K"; + k++; } - return bubP; - } - /** - *

- * calcDewP. - *

- * - * @param enthalpies an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcDewP(double[] enthalpies) { - double[] dewP = new double[enthalpies.length]; - dewPLOG = new double[enthalpies.length]; - for (int i = 0; i < enthalpies.length; i++) { - thermoSystem.setTemperature(enthalpies[i]); - try { - thermoOps.dewPointPressureFlashHC(); - dewP[i] = thermoSystem.getPressure(); - } catch (Exception e) { - logger.error("error", e); - dewP[i] = 0; - return dewP; + if (thermoSystem.hasPhaseType("oil") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("oil"); + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "LIQUID DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOL/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOL/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "LIQUID VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID ENTHALPY"; + units[k] = "J/KG"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "LIQUID ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "LIQUID THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + hasOilValues = true; + } else if (continuousDerivativesExtrapolation && hasOilValues) { + do { + // if (i>1) { + // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // } + // if (j>1 && i>1) { + // props[k][i][j] = 0.5 * ((props[k][i - 1][j] + (props[k][i - 1][j] - + // props[k][i - 2][j]) / (enthalpies[i - 1] - enthalpies[i - 2]) * + // (enthalpies[i] - enthalpies[i - 1])) + (props[k][i - 1][j] + (props[k][i + // - + // 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * + // (pressures[i] - pressures[i - 1]))); + // } + /* + * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + * enthalpies[j - 1])) +(props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 3]) + * / (enthalpies[j - 1] - enthalpies[j - 3]) * (enthalpies[j] - enthalpies[j - 1]))); } + */ + if (j < 2 && i < 2) { + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 100; + } + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { + props[k][i][j] = 900; + } + if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + } + if (j > 1) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - enthalpies[j - 1]); + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 100; + } + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { + props[k][i][j] = 900; + } + if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + } + if (i > 1) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 100; + } + if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { + props[k][i][j] = 900; + } + if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } } - dewPLOG[i] = dewP[i] * 1e5; + // if (j > 1 && TLC==3) { + // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j + // - + // 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + // enthalpies[j + // - 1]); + // if (j>1) { + // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j + // - + // 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + // enthalpies[j + // - 1]); + // } else if (j < 2) { + // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + // } else { + // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - + // props[k][i][j + // - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + // enthalpies[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / + // (pressures[i + // - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + // } + // props[k][i][j] = 0.0;*/ + // } + k++; + } while (k < 17); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + } else { + oilSystem.setPhaseType(0, PhaseType.byValue(0)); + // oilSystem.setTemperature(enthalpies[j]); + oilSystem.setPressure(pressures[i]); + oilSystem.init(3); + oilSystem.initPhysicalProperties(); + + props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "LIQUID DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOL/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOL/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "LIQUID VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = + oilSystem.getPhase(0).getCp() / oilSystem.getPhase(0).getNumberOfMolesInPhase() + / oilSystem.getPhase(0).getMolarMass(); + names[k] = "LIQUID HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getTemperature() - 273.15; + names[k] = "LIQUID TEMPERATURE"; + units[k] = "C"; + k++; + + props[k][i][j] = + oilSystem.getPhase(0).getEntropy() / oilSystem.getPhase(0).getNumberOfMolesInPhase() + / oilSystem.getPhase(0).getMolarMass(); + names[k] = "LIQUID ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "LIQUID THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + } // setOilProperties(); + + // set gas properties + if (thermoSystem.hasPhaseType("aqueous") && acceptedFlash) { + int phaseNumb = thermoSystem.getPhaseNumberOfPhase("aqueous"); + if (thermoSystem.hasPhaseType("gas")) { + props[k][i][j] = thermoSystem.getPhase("gas").getComponent("water").getx() + * thermoSystem.getPhase("gas").getComponent("water").getMolarMass() + / thermoSystem.getPhase("gas").getMolarMass(); + } + if (thermoSystem.hasPhaseType("oil")) { + props[k][i][j] += thermoSystem.getPhase("oil").getComponent("water").getx() + * thermoSystem.getPhase("oil").getComponent("water").getMolarMass() + / thermoSystem.getPhase("oil").getMolarMass(); + } + names[k] = "WATER VAPOR MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); + names[k] = "WATER DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; + names[k] = "DRHOWAT/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); + names[k] = "DRHOWAT/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); + names[k] = "WATER VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getTemperature() - 273.15; + names[k] = "WATER TEMPERATURE"; + units[k] = "C"; + k++; + + props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() + / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() + / thermoSystem.getPhase(phaseNumb).getMolarMass(); + names[k] = "WATER ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = + thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getConductivity(); + names[k] = "WATER THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; + hasWaterValues = true; + } else if (continuousDerivativesExtrapolation && hasWaterValues) { + do { + /* + * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + * enthalpies[j - 1])) +(props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 3]) + * / (enthalpies[j - 1] - enthalpies[j - 3]) * (enthalpies[j] - enthalpies[j - 1]))); if + * (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { props[k][i][j] + * = 1; } } + */ + if (j > 1) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - enthalpies[j - 1]); + if (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { + props[k][i][j] = 1; + } + if (names[k].equals("WATER DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 1000; + } + if (names[k].equals("WATER VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + } + /* + * if (j > 1 && TLC == 3) { props[k][i][j] = props[k][i][j-1] + (props[k][i][j-1] - + * props[k][i][j-2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + * enthalpies[j - 1]); if (j>1) { props[k][i][j] = props[k][i][j-1] + (props[k][i][j-1] + * - props[k][i][j-2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + * enthalpies[j - 1]); if (names[k].equals("WATER VAPOR MASS FRACTION") && + * props[k][i][j] > 1) { props[k][i][j] = 1; } } + */ + if (i > 1) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + if (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { + props[k][i][j] = 1; + } + + if (names[k].equals("WATER DENSITY") && props[k][i][j] <= 0) { + props[k][i][j] = 1000; + } + if (names[k].equals("WATER VISCOSITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + if (names[k].equals("WATER HEAT CAPACITY") && props[k][i][j] < 0) { + props[k][i][j] = 0; + } + } + + /* + * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + * enthalpies[j - 1]); } else if (j < 2) { props[k][i][j] = props[k][i - 1][j] + + * (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * + * (pressures[i] - pressures[i - 1]); } else { props[k][i][j] = props[k][i - 1][j - 1] + + * (props[k][i][j - 1] - props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * + * (enthalpies[j] - enthalpies[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / + * (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); } + * props[k][i][j] = 0.0; + */ + k++; + } while (k < 26); // names[k] = "GAS DENSITY"; + // units[k] = "KG/M3"; + } else { + waterSystem.setTemperature(enthalpies[j]); + waterSystem.setPressure(pressures[i]); + waterSystem.setPhaseType(0, PhaseType.byValue(0)); + waterSystem.init(3); + waterSystem.initPhysicalProperties(); + + if (thermoSystem.getPhase(0).hasComponent("water")) { + props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getz() + * thermoSystem.getPhase(0).getComponent("water").getMolarMass() + / thermoSystem.getPhase(0).getMolarMass(); + } else { + props[k][i][j] = 0.0; + } + names[k] = "WATER VAPOR MASS FRACTION"; + units[k] = "-"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getDensity(); + names[k] = "WATER DENSITY"; + units[k] = "KG/M3"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getdrhodP() / 1.0e5; + names[k] = "DRHOWAT/DP"; + units[k] = "S2/M2"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getdrhodT(); + names[k] = "DRHOWAT/DT"; + units[k] = "KG/M3-K"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getViscosity(); + names[k] = "WATER VISCOSITY"; + units[k] = "NS/M2"; + k++; + + props[k][i][j] = + waterSystem.getPhase(0).getCp() / waterSystem.getPhase(0).getNumberOfMolesInPhase() + / waterSystem.getPhase(0).getMolarMass(); + names[k] = "WATER HEAT CAPACITY"; + units[k] = "J/KG-K"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getTemperature(); + names[k] = "WATER TEMPERATURE"; + units[k] = "C"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getEntropy() + / waterSystem.getPhase(0).getNumberOfMolesInPhase() + / waterSystem.getPhase(0).getMolarMass(); + names[k] = "WATER ENTROPY"; + units[k] = "J/KG/K"; + k++; + + props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getConductivity(); + names[k] = "WATER THERMAL CONDUCTIVITY"; + units[k] = "W/M-K"; + k++; } - return dewP; - } - /** - *

- * calcBubT. - *

- * - * @param pressures an array of {@link double} objects - * @return an array of {@link double} objects - */ - public double[] calcBubT(double[] pressures) { - double[] bubTemps = new double[pressures.length]; - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - try { - thermoOps.bubblePointTemperatureFlash(); - bubT[i] = thermoSystem.getPressure(); - } catch (Exception e) { - logger.error("error", e); - bubT[i] = 0.0; + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil") && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("gas"), thermoSystem.getPhaseNumberOfPhase("oil")); + names[k] = "VAPOR-LIQUID SURFACE TENSION"; + units[k] = "N/M"; + k++; + } else { + if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { + if (VLS == 1) { + props[k][i][j] = 5.0e-3; + // k++; + } + // if (j>1 && thermoSystem.hasPhaseType("gas") && VLS==0 && acceptedFlash) { + if (j > 1 && (GLW == 1 || GL == 1) && VLS == 0) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - enthalpies[j - 1]); + /* + * if (names[k].equals("VAPOR-LIQUID SURFACE TENSION") && props[k][i][j] < 5.0e-3) { + * props[k][i][j] = 7.5e-3; VLS=1; } if + * (names[k].equals("VAPOR-LIQUID SURFACE TENSION") && props[k][i][j] > 30.0e-3) { + * props[k][i][j] = 20.0e-3; VLS=1; } + */ + if (props[k][i][j] < 5.0e-3) { + props[k][i][j] = 5.0e-3; + VLS = 1; + } + if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + // } else if (i>1 && thermoSystem.hasPhaseType("oil") && VLS == 0 && + // acceptedFlash) { + // } else if (i > 1 && TLC < 3 && VLS==0) { + } else if (i > 1 && (GLW == 0 || GL == 0) && VLS == 0) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + if (props[k][i][j] < 5.0e-3) { + props[k][i][j] = 5.0e-3; + VLS = 1; + } + if (props[k][i][j] > 1.1 * props[k][i - 1][j]) { + props[k][i][j] = props[k][i - 1][j]; + } + if (props[k][i][j] < 0.9 * props[k][i - 1][j]) { + props[k][i][j] = props[k][i - 1][j]; + } + } else if (j > 0 && i > 0) { + props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + } else { + // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - + // props[k][i][j + // - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + // enthalpies[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / + // (pressures[i + // - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + props[k][i][j] = 10.0e-3; } - } - return bubTemps; - } - /** - *

- * initCalc. - *

- */ - public void initCalc() { - double stdTemp = 288.15, stdPres = 1.01325; - // double GOR, GLR; - double molfracs[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - double MW[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - double dens[] = new double[thermoSystem.getPhase(0).getNumberOfComponents()]; - String components[] = new String[thermoSystem.getPhase(0).getNumberOfComponents()]; - - for (int i = 0; i < molfracs.length; i++) { - molfracs[i] = thermoSystem.getPhase(0).getComponent(i).getz(); - components[i] = thermoSystem.getPhase(0).getComponent(i).getComponentName(); - MW[i] = thermoSystem.getPhase(0).getComponent(i).getMolarMass() * 1000; - dens[i] = thermoSystem.getPhase(0).getComponent(i).getNormalLiquidDensity(); + // k++; + } else if (j > 0 && i > 0) { + props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + // k++; + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + // k++; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + // k++; + } else { + props[k][i][j] = 10.0e-3; + names[k] = "VAPOR-LIQUID SURFACE TENSION"; + units[k] = "N/M"; + // k++; + } + k++; } - thermoSystem.setTemperature(stdTemp); - thermoSystem.setPressure(stdPres); - - thermoOps.TPflash(); + if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") + && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("gas"), + thermoSystem.getPhaseNumberOfPhase("aqueous")); + names[k] = "VAPOR-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; + } else { + if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { + if (VWS == 1) { + props[k][i][j] = 5.0e-3; + // k++; + } + // if (j>1 && thermoSystem.hasPhaseType("gas") && VWS == 0 && acceptedFlash) + // { + // if (j > 1 && TLC==3 && VWS==0) { + if (j > 1 && (GLW == 1 || GW == 1) && VWS == 0) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - enthalpies[j - 1]); + /* + * if (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 35.0e-3; VWS=1; } if + * (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] > 150.0e-3) { + * props[k][i][j] = 105.0e-3; VWS=1; } + */ + if (props[k][i][j] < 5.0e-3) { + props[k][i][j] = 5.0e-3; + VWS = 1; + } + if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + // } else if (j>1 && thermoSystem.hasPhaseType("aqueous") && VWS ==0 && + // acceptedFlash) { + // } else if (i > 1 && TLC < 3 && VWS==0) { + } else if (i > 1 && (GLW == 0 || GL == 0) && VWS == 0) { + props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) + / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + /* + * if (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 35.0e-3; VWS=1; } if + * (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] > 150.0e-3) { + * props[k][i][j] = 105.0e-3; VWS=1; } + */ + if (props[k][i][j] < 5.0e-3) { + props[k][i][j] = 5.0e-3; + VWS = 1; + } + if (props[k][i][j] > 1.1 * props[k][i - 1][j]) { + props[k][i][j] = props[k][i - 1][j]; + } + if (props[k][i][j] < 0.9 * props[k][i - 1][j]) { + props[k][i][j] = props[k][i - 1][j]; + } + } else if (j > 0 && i > 0) { + props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + } else { + // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - + // props[k][i][j + // - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + // enthalpies[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / + // (pressures[i + // - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + props[k][i][j] = 60.0e-3; + } - // GOR = thermoSystem.getPhase(0).getTotalVolume() / - // thermoSystem.getPhase(1).getTotalVolume(); - // GLR = thermoSystem.getPhase(0).getTotalVolume() / - // thermoSystem.getPhase(1).getTotalVolume(); - } + // k++; + } else if (j > 0 && i > 0) { + props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + // k++; + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + // k++; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + // k++; + } else { + props[k][i][j] = 60.0e-3; + names[k] = "VAPOR-WATER SURFACE TENSION"; + units[k] = "N/M"; + // k++; + } + k++; + } - /** - *

- * calcRSWTOB. - *

- */ - public void calcRSWTOB() { - thermoSystem.init(0); - thermoSystem.init(1); - if (thermoSystem.getPhase(0).hasComponent("water")) { - RSWTOB = thermoSystem.getPhase(0).getComponent("water").getNumberOfmoles() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / (thermoSystem.getTotalNumberOfMoles() * thermoSystem.getMolarMass()); + if (thermoSystem.hasPhaseType("oil") && thermoSystem.hasPhaseType("aqueous") + && acceptedFlash) { + props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( + thermoSystem.getPhaseNumberOfPhase("oil"), + thermoSystem.getPhaseNumberOfPhase("aqueous")); + names[k] = "LIQUID-WATER SURFACE TENSION"; + units[k] = "N/M"; + k++; } else { - RSWTOB = 0.0; + if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { + if (LWS == 1) { + props[k][i][j] = 5.0e-3; + // k++; + } + if (j > 1 && LWS == 0) { + // if (j > 1 && TLC==3 && LWS==0) { + // if (j>1 && LWS==0 && acceptedFlash) { + props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) + / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - enthalpies[j - 1]); + /* + * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + (props[k][i][j - 1] - + * props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + * enthalpies[j - 1])) +(props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - + * 3]) / (enthalpies[j - 1] - enthalpies[j - 3]) * (enthalpies[j] - enthalpies[j - + * 1]))); if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < + * 10.0e-3) { props[k][i][j] = 25.0e-3; LWS=1; } + * + * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > 120.0e-3) { + * props[k][i][j] = 80.0e-3; LWS=1; } } + */ + + /* + * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 25.0e-3; LWS=1; } if + * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > 120.0e-3) { + * props[k][i][j] = 80.0e-3; LWS=1; } + */ + if (props[k][i][j] < 5.0e-3) { + props[k][i][j] = 5.0e-3; + LWS = 1; + } + if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { + props[k][i][j] = props[k][i][j - 1]; + } + // } else if (i > 1 && LWS==0 && acceptedFlash) { + // } else if (i > 1 && TLC < 3 && LWS==0) { + // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - + // props[k][i - + // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + // pressures[i + // - 1]); + /* + * if (i > 2) { props[k][i][j] = 0.5*((props[k][i - 1][j] + (props[k][i - 1][j] - + * props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - + * pressures[i - 1])) +(props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 3][j]) + * / (pressures[i - 1] - pressures[i - 3]) * (pressures[i] - pressures[i - 1]))); if + * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 25.0e-3; LWS=1; } + * + * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > 120.0e-3) { + * props[k][i][j] = 80.0e-3; LWS=1; } } + */ + + /* + * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < 10.0e-3) { + * props[k][i][j] = 25.0e-3; LWS=1; } if + * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > 120.0e-3) { + * props[k][i][j] = 80.0e-3; LWS=1; } + */ + + /* + * if (props[k][i][j] < 5.0e-3) { props[k][i][j] = 5.0e-3; LWS = 1; } if + * (props[k][i][j] > 1.1* props[k][i - 1][j]) { props[k][i][j] = props[k][i - 1][j]; } + * if (props[k][i][j] < 0.9* props[k][i - 1][j]) { props[k][i][j] = props[k][i - + * 1][j]; } + */ + // } else if (j >0 && i > 0) { + // props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + } else { + // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - + // props[k][i][j + // - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - + // enthalpies[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / + // (pressures[i + // - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); + props[k][i][j] = 40.0e-3; + } + + // k++; + // } else if (j >0 && i > 0) { + // props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); + // k++; + } else if (j > 0) { + props[k][i][j] = props[k][i][j - 1]; + // k++; + } else if (i > 0) { + props[k][i][j] = props[k][i - 1][j]; + // k++; + } else { + props[k][i][j] = 40.0e-3; + names[k] = "LIQUID-WATER SURFACE TENSION"; + units[k] = "N/M"; + // k++; + } + k++; } + } } - - /** {@inheritDoc} */ - @Override - public void run() { - calcRSWTOB(); - logger.info("RSWTOB " + RSWTOB); - nProps = 29; - props = new double[nProps][pressures.length][enthalpies.length]; - units = new String[nProps]; - names = new String[nProps]; - GLW = 0; - GL = 0; - GW = 0; - VLS = 0; - LWS = 0; - VWS = 0; - maxPressure = pressures[pressures.length - 1]; - minPressure = pressures[0]; - // maxTemperature = enthalpies[enthalpies.length - 1]; - // minTemperature = enthalpies[0]; - // thermoSystem.setTemperature(minTemperature); - thermoSystem.setPressure(maxPressure); - thermoOps.TPflash(); - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") - && thermoSystem.hasPhaseType("oil")) { - GLW = 1; + logger.info("Finished TPflash..."); + if (thermoSystem.getPhase(0).hasComponent("water")) { + thermoSystem.removeComponent("water"); + } + // bubP = calcBubP(enthalpies); + // dewP = calcDewP(enthalpies); + // bubT = calcBubT(enthalpies); + logger.info("Finished creating arrays"); + // BicubicSplineInterpolatingFunction funcGasDens = + // interpolationFunc.interpolate(pressures, enthalpies, props[0]); + // logger.info("interpolated value " + funcGasDens.value(40, 298.0)); + } + + /** {@inheritDoc} */ + @Override + public void displayResult() { + logger.info("TC " + TC + " PC " + PC); + for (int i = 0; i < pressures.length; i++) { + thermoSystem.setPressure(pressures[i]); + for (int j = 0; j < enthalpies.length; j++) { + logger.info("pressure " + pressureLOG[i] + " enthalpy " + enthalpiesLOG[j]); + // + " ROG " + ROG[i][j] + " ROL " + ROL[i][j]); + } + } + writeOLGAinpFile(fileName); + } + + /** + *

+ * writeOLGAinpFile2. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile2(String filename) { + /* + * try { writer = new BufferedWriter(new OutputStreamWriter( new + * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), "utf-8")); + * writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; i++) { + * thermoSystem.setPressure(pressures[i]); for (int j = 0; j < enthalpies.length; j++) { + * thermoSystem.setTemperature(enthalpies[j]); writer.write(ROG[i][j] + ","); } } + * writer.write(")"); } catch (IOException ex) { // report } finally { try { } writer.close(); } + * catch (Exception ex) { } } + */ + try (Writer writer = + new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "utf-8"))) { + writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); + + writer.write(pressures.length + " " + enthalpies.length + " " + RSWTOB + "\n"); + int Pcounter = 0; + for (int i = 0; i < pressures.length; i++) { + if (Pcounter > 4) { + writer.write("\n"); + Pcounter = 0; } - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous")) { - GW = 1; + writer.write(pressureLOG[i] + " "); + Pcounter++; + } + writer.write("\n"); + + int Tcounter = 0; + for (int i = 0; i < enthalpies.length; i++) { + if (Tcounter > 4) { + writer.write("\n"); + Tcounter = 0; } - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil")) { - GL = 1; + writer.write(enthalpiesLOG[i] + " "); + Tcounter++; + } + writer.write("\n"); + + int bubPcounter = 0; + for (int i = 0; i < enthalpies.length; i++) { + if (bubPcounter > 4) { + writer.write("\n"); + bubPcounter = 0; } - - // int startGasTemperatures = 0, startLiquid = 0, startWater = 0; - boolean acceptedFlash = true; - for (int j = 0; j < enthalpies.length; j++) { - // thermoSystem.setTemperature(enthalpies[j]); - for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - try { - logger.info("PHflash... " + thermoSystem.getTemperature() + " pressure " - + thermoSystem.getPressure()); - thermoOps.PHflash(enthalpies[j], 0); - logger.info(" temperature " + thermoSystem.getTemperature() + " enthalpy " - + enthalpies[j]); - thermoSystem.init(3); - thermoSystem.initPhysicalProperties(); - acceptedFlash = true; - } catch (Exception e) { - acceptedFlash = false; - logger.info("fail temperature " + thermoSystem.getTemperature() - + " fail pressure " + thermoSystem.getPressure()); - - thermoSystem.display(); - logger.error("error", e); - } - - /* - * logger.info("water density " + - * thermoSystem.getPhase(2).getPhysicalProperties().getDensity()); - * logger.info("RSW " + thermoSystem.getPhase(0).getComponent("water").getx() * - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() / - * thermoSystem.getPhase(0).getMolarMass()); logger.info("surf tens oil-water " + - * thermoSystem.getInterphaseProperties().getSurfaceTension(1, 2)); - * logger.info("surf tens gas-water " + - * thermoSystem.getInterphaseProperties().getSurfaceTension(0, 2)); - */ - int k = 0; - if (thermoSystem.hasPhaseType("gas") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("gas"); - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "GAS DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOG/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOG/DT"; - units[k] = "KG/M3-K"; - k++; - - if (thermoSystem.hasPhaseType("oil")) { - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getBeta() - * thermoSystem.getPhase(phaseNumb).getMolarMass() - / (thermoSystem.getPhase(phaseNumb).getBeta() - * thermoSystem.getPhase(phaseNumb).getMolarMass() - + thermoSystem.getPhase("oil").getBeta() - * thermoSystem.getPhase("oil").getMolarMass()); - } else { - props[k][i][j] = 1.0;// thermoSystem.getPhase(phaseNumb).getBeta() * - // thermoSystem.getPhase(phaseNumb).getMolarMass() / - // thermoSystem.getMolarMass(); - } - names[k] = "GAS MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "GAS VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "GAS THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "GAS ENTROPY"; - units[k] = "J/KG/K"; - k++; - hasGasValues = true; - // set gas properties - } else if (continuousDerivativesExtrapolation && hasGasValues) { - do { - /* - * if (j>1 && i>1) { props[k][i][j] = 0.5 * ((props[k][i][j - 1] + - * (props[k][i][j - 1] - props[k][i][j - 2]) / (enthalpies[j - 1] - - * enthalpies[j - 2]) * (enthalpies[j] - enthalpies[j - 1])) + (props[k][i - - * 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - - * pressures[i - 2]) * (pressures[i] - pressures[i - 1]))); if - * (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { - * props[k][i][j] = 0; } } - */ - - /* - * if (j > 1) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - - * props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * - * (enthalpies[j] - enthalpies[j - 1]); } - */ - if (i > 1) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - // } //else if (j < 2) { - // props[k][i][j] = 0;//props[k][i - 1][j] + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // } else { - // props[k][i][j] = 0;//props[k][i - 1][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * - // (enthalpies[j] - enthalpies[j - 1]) + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // double newTemp = pressures[i]; - // double vall = xcoef[k].get(0, 0) + newTemp * (xcoef[k].get(1, 0) + - // newTemp * - // (xcoef[k].get(2, 0) + newTemp * xcoef[k].get(3, 0))); - // props[k][i][j] = vall; - // if(i>0 && props[k][i-1][j]>1e-10) props[k][i][j] = - // props[k][i-1][j]*pressures[i]/pressures[i-1]; - - if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS DENSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0.1; - } - if (names[k].equals("GAS VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - if (j > 1) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (enthalpies[j - 1] - enthalpies[j - 2]) - * (enthalpies[j] - enthalpies[j - 1]); - if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS MASS FRACTION") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 0.1; - } - if (names[k].equals("GAS VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS THERMAL CONDUCTIVITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("GAS HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - k++; - } while (k < 9);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - /* - * } else if (false && !hasGasValues) { startGasTemperatures = j; - */ - } else { - gasSystem.setTemperature(enthalpies[j]); - gasSystem.setPressure(pressures[i]); - gasSystem.init(3); - gasSystem.initPhysicalProperties(); - // gasSystem.display(); - props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "GAS DENSITY"; - units[k] = "KG/M3"; - k++; - props[k][i][j] = gasSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOG/DP"; - units[k] = "S2/M2"; - k++; - props[k][i][j] = gasSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOG/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = 0.0;// thermoSystem.getPhase(phaseNumb).getBeta() * - // thermoSystem.getPhase(phaseNumb).getMolarMass() / - // thermoSystem.getMolarMass(); - names[k] = "GAS MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "GAS VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getCp() - / gasSystem.getPhase(0).getNumberOfMolesInPhase() - / gasSystem.getPhase(0).getMolarMass(); - names[k] = "GAS HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getEnthalpy() - / gasSystem.getPhase(0).getNumberOfMolesInPhase() - / gasSystem.getPhase(0).getMolarMass(); - names[k] = "GAS ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = - gasSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "GAS THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - - props[k][i][j] = gasSystem.getPhase(0).getEntropy() - / gasSystem.getPhase(0).getNumberOfMolesInPhase() - / gasSystem.getPhase(0).getMolarMass(); - names[k] = "GAS ENTROPY"; - units[k] = "J/KG/K"; - k++; - } - - if (thermoSystem.hasPhaseType("oil") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("oil"); - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "LIQUID DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOL/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOL/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "LIQUID VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEnthalpy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID ENTHALPY"; - units[k] = "J/KG"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "LIQUID ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "LIQUID THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - hasOilValues = true; - } else if (continuousDerivativesExtrapolation && hasOilValues) { - do { - // if (i>1) { - // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // } - // if (j>1 && i>1) { - // props[k][i][j] = 0.5 * ((props[k][i - 1][j] + (props[k][i - 1][j] - - // props[k][i - 2][j]) / (enthalpies[i - 1] - enthalpies[i - 2]) * - // (enthalpies[i] - enthalpies[i - 1])) + (props[k][i - 1][j] + (props[k][i - // - - // 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) * - // (pressures[i] - pressures[i - 1]))); - // } - /* - * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + (props[k][i][j - - * 1] - props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * - * (enthalpies[j] - enthalpies[j - 1])) +(props[k][i][j - 1] + - * (props[k][i][j - 1] - props[k][i][j - 3]) / (enthalpies[j - 1] - - * enthalpies[j - 3]) * (enthalpies[j] - enthalpies[j - 1]))); } - */ - if (j < 2 && i < 2) { - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 100; - } - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { - props[k][i][j] = 900; - } - if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - if (j > 1) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (enthalpies[j - 1] - enthalpies[j - 2]) - * (enthalpies[j] - enthalpies[j - 1]); - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 100; - } - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { - props[k][i][j] = 900; - } - if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - if (i > 1) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 100; - } - if (names[k].equals("LIQUID DENSITY") && props[k][i][j] > 900) { - props[k][i][j] = 900; - } - if (names[k].equals("LIQUID VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID THERMAL CONDUCTIVITY") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("LIQUID HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - - // if (j > 1 && TLC==3) { - // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - // - - // 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - - // enthalpies[j - // - 1]); - // if (j>1) { - // props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - // - - // 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - - // enthalpies[j - // - 1]); - // } else if (j < 2) { - // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - // } else { - // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - // - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - - // enthalpies[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - // (pressures[i - // - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); - // } - // props[k][i][j] = 0.0;*/ - // } - k++; - } while (k < 17);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - } else { - oilSystem.setPhaseType(0, 0); - // oilSystem.setTemperature(enthalpies[j]); - oilSystem.setPressure(pressures[i]); - oilSystem.init(3); - oilSystem.initPhysicalProperties(); - - props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "LIQUID DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOL/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOL/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "LIQUID VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getCp() - / oilSystem.getPhase(0).getNumberOfMolesInPhase() - / oilSystem.getPhase(0).getMolarMass(); - names[k] = "LIQUID HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getTemperature() - 273.15; - names[k] = "LIQUID TEMPERATURE"; - units[k] = "C"; - k++; - - props[k][i][j] = oilSystem.getPhase(0).getEntropy() - / oilSystem.getPhase(0).getNumberOfMolesInPhase() - / oilSystem.getPhase(0).getMolarMass(); - names[k] = "LIQUID ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = - oilSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "LIQUID THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - } // setOilProperties(); - // set gas properties - - if (thermoSystem.hasPhaseType("aqueous") && acceptedFlash) { - int phaseNumb = thermoSystem.getPhaseNumberOfPhase("aqueous"); - if (thermoSystem.hasPhaseType("gas")) { - props[k][i][j] = thermoSystem.getPhase("gas").getComponent("water").getx() - * thermoSystem.getPhase("gas").getComponent("water").getMolarMass() - / thermoSystem.getPhase("gas").getMolarMass(); - } - if (thermoSystem.hasPhaseType("oil")) { - props[k][i][j] += thermoSystem.getPhase("oil").getComponent("water").getx() - * thermoSystem.getPhase("oil").getComponent("water").getMolarMass() - / thermoSystem.getPhase("oil").getMolarMass(); - } - names[k] = "WATER VAPOR MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getDensity(); - names[k] = "WATER DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodP() / 1.0e5; - names[k] = "DRHOWAT/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getdrhodT(); - names[k] = "DRHOWAT/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = - thermoSystem.getPhase(phaseNumb).getPhysicalProperties().getViscosity(); - names[k] = "WATER VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getCp() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getTemperature() - 273.15; - names[k] = "WATER TEMPERATURE"; - units[k] = "C"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getEntropy() - / thermoSystem.getPhase(phaseNumb).getNumberOfMolesInPhase() - / thermoSystem.getPhase(phaseNumb).getMolarMass(); - names[k] = "WATER ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = thermoSystem.getPhase(phaseNumb).getPhysicalProperties() - .getConductivity(); - names[k] = "WATER THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - hasWaterValues = true; - } else if (continuousDerivativesExtrapolation && hasWaterValues) { - do { - /* - * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + (props[k][i][j - - * 1] - props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * - * (enthalpies[j] - enthalpies[j - 1])) +(props[k][i][j - 1] + - * (props[k][i][j - 1] - props[k][i][j - 3]) / (enthalpies[j - 1] - - * enthalpies[j - 3]) * (enthalpies[j] - enthalpies[j - 1]))); if - * (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { - * props[k][i][j] = 1; } } - */ - if (j > 1) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (enthalpies[j - 1] - enthalpies[j - 2]) - * (enthalpies[j] - enthalpies[j - 1]); - if (names[k].equals("WATER VAPOR MASS FRACTION") - && props[k][i][j] > 1) { - props[k][i][j] = 1; - } - if (names[k].equals("WATER DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 1000; - } - if (names[k].equals("WATER VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER THERMAL CONDUCTIVITY") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER VAPOR MASS FRACTION") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - /* - * if (j > 1 && TLC == 3) { props[k][i][j] = props[k][i][j-1] + - * (props[k][i][j-1] - props[k][i][j-2]) / (enthalpies[j - 1] - enthalpies[j - * - 2]) * (enthalpies[j] - enthalpies[j - 1]); if (j>1) { props[k][i][j] = - * props[k][i][j-1] + (props[k][i][j-1] - props[k][i][j-2]) / (enthalpies[j - * - 1] - enthalpies[j - 2]) * (enthalpies[j] - enthalpies[j - 1]); if - * (names[k].equals("WATER VAPOR MASS FRACTION") && props[k][i][j] > 1) { - * props[k][i][j] = 1; } } - */ - if (i > 1) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - if (names[k].equals("WATER VAPOR MASS FRACTION") - && props[k][i][j] > 1) { - props[k][i][j] = 1; - } - - if (names[k].equals("WATER DENSITY") && props[k][i][j] <= 0) { - props[k][i][j] = 1000; - } - if (names[k].equals("WATER VISCOSITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER THERMAL CONDUCTIVITY") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER VAPOR MASS FRACTION") - && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - if (names[k].equals("WATER HEAT CAPACITY") && props[k][i][j] < 0) { - props[k][i][j] = 0; - } - } - - /* - * if (i < 2) { props[k][i][j] = props[k][i][j - 1] + (props[k][i][j - 1] - - * props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * - * (enthalpies[j] - enthalpies[j - 1]); } else if (j < 2) { props[k][i][j] = - * props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) / - * (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - - * 1]); } else { props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - - * 1] - props[k][i][j - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * - * (enthalpies[j] - enthalpies[j - 1]) + (props[k][i - 1][j] - props[k][i - - * 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - * pressures[i - 1]); } props[k][i][j] = 0.0; - */ - k++; - } while (k < 26);// names[k] = "GAS DENSITY"; - // units[k] = "KG/M3"; - } else { - waterSystem.setTemperature(enthalpies[j]); - waterSystem.setPressure(pressures[i]); - waterSystem.setPhaseType(0, 0); - waterSystem.init(3); - waterSystem.initPhysicalProperties(); - - if (thermoSystem.getPhase(0).hasComponent("water")) { - props[k][i][j] = thermoSystem.getPhase(0).getComponent("water").getz() - * thermoSystem.getPhase(0).getComponent("water").getMolarMass() - / thermoSystem.getPhase(0).getMolarMass();; - } else { - props[k][i][j] = 0.0; - } - names[k] = "WATER VAPOR MASS FRACTION"; - units[k] = "-"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getDensity(); - names[k] = "WATER DENSITY"; - units[k] = "KG/M3"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getdrhodP() / 1.0e5; - names[k] = "DRHOWAT/DP"; - units[k] = "S2/M2"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getdrhodT(); - names[k] = "DRHOWAT/DT"; - units[k] = "KG/M3-K"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getPhysicalProperties().getViscosity(); - names[k] = "WATER VISCOSITY"; - units[k] = "NS/M2"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getCp() - / waterSystem.getPhase(0).getNumberOfMolesInPhase() - / waterSystem.getPhase(0).getMolarMass(); - names[k] = "WATER HEAT CAPACITY"; - units[k] = "J/KG-K"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getTemperature(); - names[k] = "WATER TEMPERATURE"; - units[k] = "C"; - k++; - - props[k][i][j] = waterSystem.getPhase(0).getEntropy() - / waterSystem.getPhase(0).getNumberOfMolesInPhase() - / waterSystem.getPhase(0).getMolarMass(); - names[k] = "WATER ENTROPY"; - units[k] = "J/KG/K"; - k++; - - props[k][i][j] = - waterSystem.getPhase(0).getPhysicalProperties().getConductivity(); - names[k] = "WATER THERMAL CONDUCTIVITY"; - units[k] = "W/M-K"; - k++; - } - - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("oil") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("gas"), - thermoSystem.getPhaseNumberOfPhase("oil")); - names[k] = "VAPOR-LIQUID SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { - if (VLS == 1) { - props[k][i][j] = 5.0e-3; - // k++; - } - // if (j>1 && thermoSystem.hasPhaseType("gas") && VLS==0 && acceptedFlash) { - if (j > 1 && (GLW == 1 || GL == 1) && VLS == 0) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (enthalpies[j - 1] - enthalpies[j - 2]) - * (enthalpies[j] - enthalpies[j - 1]); - /* - * if (names[k].equals("VAPOR-LIQUID SURFACE TENSION") && props[k][i][j] - * < 5.0e-3) { props[k][i][j] = 7.5e-3; VLS=1; } if - * (names[k].equals("VAPOR-LIQUID SURFACE TENSION") && props[k][i][j] > - * 30.0e-3) { props[k][i][j] = 20.0e-3; VLS=1; } - */ - if (props[k][i][j] < 5.0e-3) { - props[k][i][j] = 5.0e-3; - VLS = 1; - } - if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - // } else if (i>1 && thermoSystem.hasPhaseType("oil") && VLS == 0 && - // acceptedFlash) { - // } else if (i > 1 && TLC < 3 && VLS==0) { - } else if (i > 1 && (GLW == 0 || GL == 0) && VLS == 0) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - if (props[k][i][j] < 5.0e-3) { - props[k][i][j] = 5.0e-3; - VLS = 1; - } - if (props[k][i][j] > 1.1 * props[k][i - 1][j]) { - props[k][i][j] = props[k][i - 1][j]; - } - if (props[k][i][j] < 0.9 * props[k][i - 1][j]) { - props[k][i][j] = props[k][i - 1][j]; - } - } else if (j > 0 && i > 0) { - props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - } else { - // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - // - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - - // enthalpies[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - // (pressures[i - // - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); - props[k][i][j] = 10.0e-3; - } - - // k++; - } else if (j > 0 && i > 0) { - props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - // k++; - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - // k++; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - // k++; - } else { - props[k][i][j] = 10.0e-3; - names[k] = "VAPOR-LIQUID SURFACE TENSION"; - units[k] = "N/M"; - // k++; - } - k++; - } - - if (thermoSystem.hasPhaseType("gas") && thermoSystem.hasPhaseType("aqueous") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("gas"), - thermoSystem.getPhaseNumberOfPhase("aqueous")); - names[k] = "VAPOR-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { - if (VWS == 1) { - props[k][i][j] = 5.0e-3; - // k++; - } - // if (j>1 && thermoSystem.hasPhaseType("gas") && VWS == 0 && acceptedFlash) - // { - // if (j > 1 && TLC==3 && VWS==0) { - if (j > 1 && (GLW == 1 || GW == 1) && VWS == 0) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (enthalpies[j - 1] - enthalpies[j - 2]) - * (enthalpies[j] - enthalpies[j - 1]); - /* - * if (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] - * < 10.0e-3) { props[k][i][j] = 35.0e-3; VWS=1; } if - * (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] > - * 150.0e-3) { props[k][i][j] = 105.0e-3; VWS=1; } - */ - if (props[k][i][j] < 5.0e-3) { - props[k][i][j] = 5.0e-3; - VWS = 1; - } - if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - // } else if (j>1 && thermoSystem.hasPhaseType("aqueous") && VWS ==0 && - // acceptedFlash) { - // } else if (i > 1 && TLC < 3 && VWS==0) { - } else if (i > 1 && (GLW == 0 || GL == 0) && VWS == 0) { - props[k][i][j] = - props[k][i - 1][j] + (props[k][i - 1][j] - props[k][i - 2][j]) - / (pressures[i - 1] - pressures[i - 2]) - * (pressures[i] - pressures[i - 1]); - /* - * if (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] - * < 10.0e-3) { props[k][i][j] = 35.0e-3; VWS=1; } if - * (names[k].equals("VAPOR-WATER SURFACE TENSION") && props[k][i][j] > - * 150.0e-3) { props[k][i][j] = 105.0e-3; VWS=1; } - */ - if (props[k][i][j] < 5.0e-3) { - props[k][i][j] = 5.0e-3; - VWS = 1; - } - if (props[k][i][j] > 1.1 * props[k][i - 1][j]) { - props[k][i][j] = props[k][i - 1][j]; - } - if (props[k][i][j] < 0.9 * props[k][i - 1][j]) { - props[k][i][j] = props[k][i - 1][j]; - } - } else if (j > 0 && i > 0) { - props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - } else { - // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - // - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - - // enthalpies[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - // (pressures[i - // - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); - props[k][i][j] = 60.0e-3; - } - - // k++; - } else if (j > 0 && i > 0) { - props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - // k++; - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - // k++; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - // k++; - } else { - props[k][i][j] = 60.0e-3; - names[k] = "VAPOR-WATER SURFACE TENSION"; - units[k] = "N/M"; - // k++; - } - k++; - } - - if (thermoSystem.hasPhaseType("oil") && thermoSystem.hasPhaseType("aqueous") - && acceptedFlash) { - props[k][i][j] = thermoSystem.getInterphaseProperties().getSurfaceTension( - thermoSystem.getPhaseNumberOfPhase("oil"), - thermoSystem.getPhaseNumberOfPhase("aqueous")); - names[k] = "LIQUID-WATER SURFACE TENSION"; - units[k] = "N/M"; - k++; - } else { - if (continuousDerivativesExtrapolation && (i >= 2 || j >= 2)) { - if (LWS == 1) { - props[k][i][j] = 5.0e-3; - // k++; - } - if (j > 1 && LWS == 0) { - // if (j > 1 && TLC==3 && LWS==0) { - // if (j>1 && LWS==0 && acceptedFlash) { - props[k][i][j] = - props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 2]) - / (enthalpies[j - 1] - enthalpies[j - 2]) - * (enthalpies[j] - enthalpies[j - 1]); - /* - * if (j > 2) { props[k][i][j] = 0.5*((props[k][i][j - 1] + - * (props[k][i][j - 1] - props[k][i][j - 2]) / (enthalpies[j - 1] - - * enthalpies[j - 2]) * (enthalpies[j] - enthalpies[j - 1])) - * +(props[k][i][j - 1] + (props[k][i][j - 1] - props[k][i][j - 3]) / - * (enthalpies[j - 1] - enthalpies[j - 3]) * (enthalpies[j] - - * enthalpies[j - 1]))); if - * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < - * 10.0e-3) { props[k][i][j] = 25.0e-3; LWS=1; } - * - * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] - * > 120.0e-3) { props[k][i][j] = 80.0e-3; LWS=1; } } - */ - - /* - * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] - * < 10.0e-3) { props[k][i][j] = 25.0e-3; LWS=1; } if - * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > - * 120.0e-3) { props[k][i][j] = 80.0e-3; LWS=1; } - */ - if (props[k][i][j] < 5.0e-3) { - props[k][i][j] = 5.0e-3; - LWS = 1; - } - if (props[k][i][j] > 1.1 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - if (props[k][i][j] < 0.9 * props[k][i][j - 1]) { - props[k][i][j] = props[k][i][j - 1]; - } - // } else if (i > 1 && LWS==0 && acceptedFlash) { - // } else if (i > 1 && TLC < 3 && LWS==0) { - // props[k][i][j] = props[k][i - 1][j] + (props[k][i - 1][j] - - // props[k][i - - // 2][j]) / (pressures[i - 1] - pressures[i - 2]) * (pressures[i] - - // pressures[i - // - 1]); - /* - * if (i > 2) { props[k][i][j] = 0.5*((props[k][i - 1][j] + (props[k][i - * - 1][j] - props[k][i - 2][j]) / (pressures[i - 1] - pressures[i - 2]) - * * (pressures[i] - pressures[i - 1])) +(props[k][i - 1][j] + - * (props[k][i - 1][j] - props[k][i - 3][j]) / (pressures[i - 1] - - * pressures[i - 3]) * (pressures[i] - pressures[i - 1]))); if - * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] < - * 10.0e-3) { props[k][i][j] = 25.0e-3; LWS=1; } - * - * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] - * > 120.0e-3) { props[k][i][j] = 80.0e-3; LWS=1; } } - */ - - /* - * if (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] - * < 10.0e-3) { props[k][i][j] = 25.0e-3; LWS=1; } if - * (names[k].equals("LIQUID-WATER SURFACE TENSION") && props[k][i][j] > - * 120.0e-3) { props[k][i][j] = 80.0e-3; LWS=1; } - */ - - /* - * if (props[k][i][j] < 5.0e-3) { props[k][i][j] = 5.0e-3; LWS = 1; } if - * (props[k][i][j] > 1.1* props[k][i - 1][j]) { props[k][i][j] = - * props[k][i - 1][j]; } if (props[k][i][j] < 0.9* props[k][i - 1][j]) { - * props[k][i][j] = props[k][i - 1][j]; } - */ - // } else if (j >0 && i > 0) { - // props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - } else { - // props[k][i][j] = props[k][i - 1][j - 1] + (props[k][i][j - 1] - - // props[k][i][j - // - 2]) / (enthalpies[j - 1] - enthalpies[j - 2]) * (enthalpies[j] - - // enthalpies[j - 1]) + (props[k][i - 1][j] - props[k][i - 2][j]) / - // (pressures[i - // - 1] - pressures[i - 2]) * (pressures[i] - pressures[i - 1]); - props[k][i][j] = 40.0e-3; - } - - // k++; - // } else if (j >0 && i > 0) { - // props[k][i][j] = 0.5 * (props[k][i - 1][j] + props[k][i][j - 1]); - // k++; - } else if (j > 0) { - props[k][i][j] = props[k][i][j - 1]; - // k++; - } else if (i > 0) { - props[k][i][j] = props[k][i - 1][j]; - // k++; - } else { - props[k][i][j] = 40.0e-3; - names[k] = "LIQUID-WATER SURFACE TENSION"; - units[k] = "N/M"; - // k++; - } - k++; - } - } + writer.write(bubPLOG[i] + " "); + bubPcounter++; + } + writer.write("\n"); + + int dewPcounter = 0; + for (int i = 0; i < enthalpies.length; i++) { + if (dewPcounter > 4) { + writer.write("\n"); + dewPcounter = 0; } - logger.info("Finished TPflash..."); - if (thermoSystem.getPhase(0).hasComponent("water")) { - thermoSystem.removeComponent("water"); + writer.write(dewPLOG[i] + " "); + dewPcounter++; + } + writer.write("\n"); + + for (int k = 0; k < nProps; k++) { + if (names[k] == null) { + continue; } - // bubP = calcBubP(enthalpies); - // dewP = calcDewP(enthalpies); - // bubT = calcBubT(enthalpies); - logger.info("Finished creating arrays"); - // BicubicSplineInterpolatingFunction funcGasDens = - // interpolationFunc.interpolate(pressures, enthalpies, props[0]); - // logger.info("interpolated value " + funcGasDens.value(40, 298.0)); - } - - /** {@inheritDoc} */ - @Override - public void displayResult() { - logger.info("TC " + TC + " PC " + PC); + logger.info("Writing variable: " + names[k]); + writer.write(names[k] + " (" + units[k] + ")\n"); for (int i = 0; i < pressures.length; i++) { - thermoSystem.setPressure(pressures[i]); - for (int j = 0; j < enthalpies.length; j++) { - logger.info("pressure " + pressureLOG[i] + " enthalpy " + enthalpiesLOG[j]);// + " - // ROG " - // + - // ROG[i][j] - // + " - // ROL " - // + - // ROL[i][j]); + // thermoSystem.setPressure(pressures[i]); + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + // thermoSystem.setTemperature(enthalpies[j]); + if (counter > 4) { + writer.write("\n"); + counter = 0; } + writer.write(props[k][i][j] + " "); + counter++; + } + writer.write("\n"); } - writeOLGAinpFile(fileName); + } + } catch (IOException ex) { + // report } - - /** - *

- * writeOLGAinpFile2. - *

- * - * @param filename a {@link java.lang.String} object + } + + /** + *

+ * writeOLGAinpFile. + *

+ * + * @param filename a {@link java.lang.String} object + */ + public void writeOLGAinpFile(String filename) { + /* + * try { writer = new BufferedWriter(new OutputStreamWriter( new + * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), "utf-8")); + * writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; i++) { + * thermoSystem.setPressure(pressures[i]); for (int j = 0; j < enthalpies.length; j++) { + * thermoSystem.setTemperature(enthalpies[j]); writer.write(ROG[i][j] + ","); } } + * writer.write(")"); } catch (IOException ex) { // report } finally { try { } writer.close(); } + * catch (Exception ex) { } } */ - public void writeOLGAinpFile2(String filename) { - /* - * try { writer = new BufferedWriter(new OutputStreamWriter( new - * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), - * "utf-8")); writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; - * i++) { thermoSystem.setPressure(pressures[i]); for (int j = 0; j < enthalpies.length; - * j++) { thermoSystem.setTemperature(enthalpies[j]); writer.write(ROG[i][j] + ","); } } - * writer.write(")"); } catch (IOException ex) { // report } finally { try { } - * writer.close(); } catch (Exception ex) { } } - */ - try (Writer writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(fileName), "utf-8"))) { - writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); - - writer.write(pressures.length + " " + enthalpies.length + " " + RSWTOB + "\n"); - int Pcounter = 0; - for (int i = 0; i < pressures.length; i++) { - if (Pcounter > 4) { - writer.write("\n"); - Pcounter = 0; - } - writer.write(pressureLOG[i] + " "); - Pcounter++; - } + try (Writer writer = + new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "utf-8"))) { + writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); + + writer.write(pressures.length + " " + enthalpies.length + " " + RSWTOB + "\n"); + int Pcounter = 0; + for (int i = 0; i < pressures.length; i++) { + if (Pcounter > 4) { + writer.write("\n"); + Pcounter = 0; + } + writer.write(pressureLOG[i] + " "); + Pcounter++; + } + writer.write("\n"); + + int Tcounter = 0; + for (int i = 0; i < enthalpies.length; i++) { + if (Tcounter > 4) { + writer.write("\n"); + Tcounter = 0; + } + writer.write(enthalpiesLOG[i] + " "); + Tcounter++; + } + writer.write("\n"); + + int bubPcounter = 0; + for (int i = 0; i < enthalpies.length; i++) { + if (bubPcounter > 4) { + writer.write("\n"); + bubPcounter = 0; + } + writer.write(bubPLOG[i] + " "); + bubPcounter++; + } + writer.write("\n"); + + int dewPcounter = 0; + for (int i = 0; i < enthalpies.length; i++) { + if (dewPcounter > 4) { + writer.write("\n"); + dewPcounter = 0; + } + writer.write(dewPLOG[i] + " "); + dewPcounter++; + } + writer.write("\n"); + + writer.write("GAS DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[0][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int Tcounter = 0; - for (int i = 0; i < enthalpies.length; i++) { - if (Tcounter > 4) { - writer.write("\n"); - Tcounter = 0; - } - writer.write(enthalpiesLOG[i] + " "); - Tcounter++; - } + writer.write("LIQUID DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[9][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int bubPcounter = 0; - for (int i = 0; i < enthalpies.length; i++) { - if (bubPcounter > 4) { - writer.write("\n"); - bubPcounter = 0; - } - writer.write(bubPLOG[i] + " "); - bubPcounter++; - } + writer.write("WATER DENSITY (KG/M3)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[18][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int dewPcounter = 0; - for (int i = 0; i < enthalpies.length; i++) { - if (dewPcounter > 4) { - writer.write("\n"); - dewPcounter = 0; - } - writer.write(dewPLOG[i] + " "); - dewPcounter++; - } + writer.write("DRHOG/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { writer.write("\n"); - - for (int k = 0; k < nProps; k++) { - if (names[k] == null) { - continue; - } - logger.info("Writing variable: " + names[k]); - writer.write(names[k] + " (" + units[k] + ")\n"); - for (int i = 0; i < pressures.length; i++) { - // thermoSystem.setPressure(pressures[i]); - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - // thermoSystem.setTemperature(enthalpies[j]); - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[k][i][j] + " "); - counter++; - } - writer.write("\n"); - } - } - } catch (IOException ex) { - // report + counter = 0; + } + writer.write(props[1][i][j] + " "); + counter++; } - } + writer.write("\n"); + } - /** - *

- * writeOLGAinpFile. - *

- * - * @param filename a {@link java.lang.String} object - */ - public void writeOLGAinpFile(String filename) { - /* - * try { writer = new BufferedWriter(new OutputStreamWriter( new - * FileOutputStream("C:/Users/Kjetil Raul/Documents/Master KRB/javacode_ROG55.txt" ), - * "utf-8")); writer.write("GAS DENSITY (KG/M3) = ("); for (int i = 0; i < pressures.length; - * i++) { thermoSystem.setPressure(pressures[i]); for (int j = 0; j < enthalpies.length; - * j++) { thermoSystem.setTemperature(enthalpies[j]); writer.write(ROG[i][j] + ","); } } - * writer.write(")"); } catch (IOException ex) { // report } finally { try { } - * writer.close(); } catch (Exception ex) { } } - */ - try (Writer writer = new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(filename), "utf-8"))) { - writer.write("'WATER-OPTION ENTROPY NONEQ '" + "\n"); - - writer.write(pressures.length + " " + enthalpies.length + " " + RSWTOB + "\n"); - int Pcounter = 0; - for (int i = 0; i < pressures.length; i++) { - if (Pcounter > 4) { - writer.write("\n"); - Pcounter = 0; - } - writer.write(pressureLOG[i] + " "); - Pcounter++; - } + writer.write("DRHOL/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[10][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int Tcounter = 0; - for (int i = 0; i < enthalpies.length; i++) { - if (Tcounter > 4) { - writer.write("\n"); - Tcounter = 0; - } - writer.write(enthalpiesLOG[i] + " "); - Tcounter++; - } + writer.write("DRHOWAT/DP (S2/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[19][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int bubPcounter = 0; - for (int i = 0; i < enthalpies.length; i++) { - if (bubPcounter > 4) { - writer.write("\n"); - bubPcounter = 0; - } - writer.write(bubPLOG[i] + " "); - bubPcounter++; - } + writer.write("DRHOG/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[2][i][j] + " "); + counter++; + } + writer.write("\n"); + } - int dewPcounter = 0; - for (int i = 0; i < enthalpies.length; i++) { - if (dewPcounter > 4) { - writer.write("\n"); - dewPcounter = 0; - } - writer.write(dewPLOG[i] + " "); - dewPcounter++; - } + writer.write("DRHOL/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { writer.write("\n"); + counter = 0; + } + writer.write(props[11][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[0][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("LIQUID DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[9][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("WATER DENSITY (KG/M3)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[18][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOG/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[1][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOL/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[10][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOWAT/DP (S2/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[19][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOG/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[2][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOL/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[11][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("DRHOWAT/DT (KG/M3-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[20][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("GAS MASS FRACTION (-)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[3][i][j] + " "); - counter++; - } - writer.write("\n"); - } - - writer.write("WATER VAPOR MASS FRACTION (-)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[17][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("DRHOWAT/DT (KG/M3-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[20][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[4][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS MASS FRACTION (-)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[3][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[12][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER VAPOR MASS FRACTION (-)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[17][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER VISCOSITY (NS/M2)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[21][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[4][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[5][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[12][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[13][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER VISCOSITY (NS/M2)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[21][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER HEAT CAPACITY (J/KG-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[22][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[5][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[6][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[13][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[14][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER HEAT CAPACITY (J/KG-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[22][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER ENTHALPY (J/KG)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[23][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[6][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[7][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[14][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[16][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER ENTHALPY (J/KG)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[23][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER THERMAL CONDUCTIVITY (W/M-K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[25][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[7][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("VAPOR-LIQUID SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[26][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[16][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("VAPOR-WATER SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[27][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("WATER THERMAL CONDUCTIVITY (W/M-K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[25][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID-WATER SURFACE TENSION (N/M)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[28][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("VAPOR-LIQUID SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[26][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("GAS ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[8][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("VAPOR-WATER SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[27][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("LIQUID ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[15][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("LIQUID-WATER SURFACE TENSION (N/M)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[28][i][j] + " "); + counter++; + } + writer.write("\n"); + } - writer.write("WATER ENTROPY (J/KG/K)" + "\n"); - for (int i = 0; i < pressures.length; i++) { - int counter = 0; - for (int j = 0; j < enthalpies.length; j++) { - if (counter > 4) { - writer.write("\n"); - counter = 0; - } - writer.write(props[24][i][j] + " "); - counter++; - } - writer.write("\n"); - } + writer.write("GAS ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[8][i][j] + " "); + counter++; + } + writer.write("\n"); + } - /* - * for (int k = 0; k < nProps; k++) { if (names[k] == null) { continue; } - * logger.info("Writing variable: " + names[k]); writer.write(names[k] + " (" + units[k] - * + ")\n"); for (int i = 0; i < pressures.length; i++) { - * //thermoSystem.setPressure(pressures[i]); int counter = 0; for (int j = 0; j < - * enthalpies.length; j++) { // thermoSystem.setTemperature(enthalpies[j]); if (counter - * > 4) { writer.write("\n"); counter = 0; } writer.write(props[k][i][j] + " "); - * counter++; } writer.write("\n"); } } - */ - } catch (IOException ex) { - // report + writer.write("LIQUID ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; + for (int j = 0; j < enthalpies.length; j++) { + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[15][i][j] + " "); + counter++; } - } + writer.write("\n"); + } - /** - *

- * extrapolateTable. - *

- */ - public void extrapolateTable() { + writer.write("WATER ENTROPY (J/KG/K)" + "\n"); + for (int i = 0; i < pressures.length; i++) { + int counter = 0; for (int j = 0; j < enthalpies.length; j++) { - for (int i = 0; i < pressures.length; i++) { - if (!hasValue[26][i][j]) { - } - } + if (counter > 4) { + writer.write("\n"); + counter = 0; + } + writer.write(props[24][i][j] + " "); + counter++; + } + writer.write("\n"); + } + + /* + * for (int k = 0; k < nProps; k++) { if (names[k] == null) { continue; } + * logger.info("Writing variable: " + names[k]); writer.write(names[k] + " (" + units[k] + + * ")\n"); for (int i = 0; i < pressures.length; i++) { + * //thermoSystem.setPressure(pressures[i]); int counter = 0; for (int j = 0; j < + * enthalpies.length; j++) { // thermoSystem.setTemperature(enthalpies[j]); if (counter > 4) { + * writer.write("\n"); counter = 0; } writer.write(props[k][i][j] + " "); counter++; } + * writer.write("\n"); } } + */ + } catch (IOException ex) { + // report + } + } + + /** + *

+ * extrapolateTable. + *

+ */ + public void extrapolateTable() { + for (int j = 0; j < enthalpies.length; j++) { + for (int i = 0; i < pressures.length; i++) { + if (!hasValue[26][i][j]) { } + } } + } } diff --git a/src/main/java/neqsim/util/NamedBaseClass.java b/src/main/java/neqsim/util/NamedBaseClass.java index 8bb97a43bf..16da43dc2f 100644 --- a/src/main/java/neqsim/util/NamedBaseClass.java +++ b/src/main/java/neqsim/util/NamedBaseClass.java @@ -2,7 +2,9 @@ /** * Abstract class for named objects. - * + * + * @author ASMF + * @version $Id: $Id */ public abstract class NamedBaseClass implements NamedInterface, java.io.Serializable { private static final long serialVersionUID = 1L; @@ -10,28 +12,20 @@ public abstract class NamedBaseClass implements NamedInterface, java.io.Serializ /** * Constructor for NamedBaseClass - * - * @param name the name of the class + * + * @param name the name of the object */ public NamedBaseClass(String name) { this.name = name; } - /** - * Getter for property name - * - * @return Name property - */ + /** {@inheritDoc} */ @Override public String getName() { return this.name; } - /** - * Setter for property name - * - * @param name Name to set. - */ + /** {@inheritDoc} */ @Override public void setName(String name) { this.name = name; diff --git a/src/main/java/neqsim/util/NamedInterface.java b/src/main/java/neqsim/util/NamedInterface.java index b5e664d780..be92b528c2 100644 --- a/src/main/java/neqsim/util/NamedInterface.java +++ b/src/main/java/neqsim/util/NamedInterface.java @@ -1,21 +1,29 @@ package neqsim.util; +/** + *

+ * NamedInterface interface. + *

+ * + * @author ASMF + * @version $Id: $Id + */ public interface NamedInterface { - /** - *

- * getName. - *

- * - * @return a {@link java.lang.String} object - */ - public String getName(); + /** + *

+ * Getter for the field name. + *

+ * + * @return a {@link java.lang.String} object + */ + public String getName(); - /** - *

- * setName. - *

- * - * @param name a {@link java.lang.String} object - */ - public void setName(String name); + /** + *

+ * Setter for the field name. + *

+ * + * @param name a {@link java.lang.String} object + */ + public void setName(String name); } diff --git a/src/main/java/neqsim/util/database/AspenIP21Database.java b/src/main/java/neqsim/util/database/AspenIP21Database.java index cd0e4755cc..88468e116c 100644 --- a/src/main/java/neqsim/util/database/AspenIP21Database.java +++ b/src/main/java/neqsim/util/database/AspenIP21Database.java @@ -5,6 +5,8 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** *

@@ -15,142 +17,118 @@ * @version $Id: $Id */ public class AspenIP21Database - implements neqsim.util.util.FileSystemSettings, java.io.Serializable { - private static final long serialVersionUID = 1000; + implements neqsim.util.util.FileSystemSettings, java.io.Serializable { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(AspenIP21Database.class); - protected Connection databaseConnection = null; - private static String dataBaseType = "Karsto"; - private Statement statement = null; + protected Connection databaseConnection = null; + private static String dataBaseType = "Karsto"; + private Statement statement = null; - /** - *

- * Constructor for AspenIP21Database. - *

- */ - public AspenIP21Database() { - try { - if (dataBaseType.equals("Karsto")) { - Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getDeclaredConstructor() - .newInstance(); - } - } catch (Exception ex) { - System.out.println("error in Online Karsto " + ex.toString()); - System.out.println("The database must be registered on the local DBMS to work."); - } - - try { - databaseConnection = this.openConnection("Karsto"); - setStatement(databaseConnection.createStatement()); - } catch (Exception ex) { - System.out.println("SQLException " + ex.getMessage()); - } + /** + *

+ * Constructor for AspenIP21Database. + *

+ */ + public AspenIP21Database() { + try { + if (dataBaseType.equals("Karsto")) { + Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getDeclaredConstructor().newInstance(); + } + } catch (Exception ex) { + logger.error("error in Online Karsto ", ex); + logger.error("The database must be registered on the local DBMS to work."); } - /** - *

- * openConnection. - *

- * - * @param database a {@link java.lang.String} object - * @return a Connection object - * @throws java.sql.SQLException if any. - * @throws java.lang.ClassNotFoundException if any. - */ - public Connection openConnection(String database) throws SQLException, ClassNotFoundException { - javax.naming.InitialContext ctx = null; - // javax.sql.DataSource ds = null; + try { + databaseConnection = this.openConnection("Karsto"); + setStatement(databaseConnection.createStatement()); + } catch (Exception ex) { + logger.error("SQLException ", ex); + } + } - try { - return DriverManager.getConnection("....."); - } catch (Exception ex) { - System.out.println("SQLException " + ex.getMessage()); - System.out.println("error in Kaarsto DB " + ex.toString()); - System.out - .println("The Kaarsto database must be registered on the local DBMS to work."); - } finally { - try { - if (ctx != null) { - ctx.close(); - } - } catch (Exception e) { - e.printStackTrace(); - } + /** + *

+ * openConnection. + *

+ * + * @param database a {@link java.lang.String} object + * @return a Connection object + * @throws java.sql.SQLException if any. + * @throws java.lang.ClassNotFoundException if any. + */ + public Connection openConnection(String database) throws SQLException, ClassNotFoundException { + javax.naming.InitialContext ctx = null; + try { + return DriverManager.getConnection("....."); + } catch (Exception ex) { + logger.error("SQLException ", ex); + logger.error("error in Kaarsto DB ", ex); + logger.error("The Kaarsto database must be registered on the local DBMS to work."); + } finally { + try { + if (ctx != null) { + ctx.close(); } - return null; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } + return null; + } - /** - *

- * Setter for the field statement. - *

- * - * @param statement a Statement object - */ - public void setStatement(Statement statement) { - this.statement = statement; - } + /** + *

+ * Setter for the field statement. + *

+ * + * @param statement a Statement object + */ + public void setStatement(Statement statement) { + this.statement = statement; + } - /** - *

- * getResultSet. - *

- * - * @param sqlString a {@link java.lang.String} object - * @return a ResultSet object - */ - public ResultSet getResultSet(String sqlString) { - return this.getResultSet("Karsto", sqlString); - } + /** + *

+ * getResultSet. + *

+ * + * @param sqlString a {@link java.lang.String} object + * @return a ResultSet object + */ + public ResultSet getResultSet(String sqlString) { + return this.getResultSet("Karsto", sqlString); + } - /** - *

- * getResultSet. - *

- * - * @param database a {@link java.lang.String} object - * @param sqlString a {@link java.lang.String} object - * @return a ResultSet object - */ - public ResultSet getResultSet(String database, String sqlString) { - try { - ResultSet result = getStatement().executeQuery(sqlString); - return result; - } catch (Exception e) { - System.out.println("error in DB " + e.toString()); - System.out.println("The database must be rgistered on the local DBMS to work."); - } - return null; - } - - /** - *

- * Getter for the field statement. - *

- * - * @return a Statement object - */ - public Statement getStatement() { - return statement; + /** + *

+ * getResultSet. + *

+ * + * @param database a {@link java.lang.String} object + * @param sqlString a {@link java.lang.String} object + * @return a ResultSet object + */ + public ResultSet getResultSet(String database, String sqlString) { + try { + ResultSet result = getStatement().executeQuery(sqlString); + return result; + } catch (Exception ex) { + logger.error("error in DB ", ex); + logger.error("The database must be rgistered on the local DBMS to work."); } + return null; + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - AspenIP21Database database = new AspenIP21Database(); - ResultSet dataSet = database.getResultSet("Karsto", "....'"); - try { - while (dataSet.next()) { - System.out.println("dataset " + dataSet.getString(4)); - System.out.println("dataset value " + dataSet.getDouble("...")); - } - } catch (Exception e) { - System.out.println("failed " + e.toString()); - } - System.out.println("ok"); - } + /** + *

+ * Getter for the field statement. + *

+ * + * @return a Statement object + */ + public Statement getStatement() { + return statement; + } } diff --git a/src/main/java/neqsim/util/database/NeqSimBlobDatabase.java b/src/main/java/neqsim/util/database/NeqSimBlobDatabase.java index 340b5e6ff5..a26be5d583 100644 --- a/src/main/java/neqsim/util/database/NeqSimBlobDatabase.java +++ b/src/main/java/neqsim/util/database/NeqSimBlobDatabase.java @@ -17,278 +17,278 @@ * @version Dec 2018 */ public class NeqSimBlobDatabase - implements neqsim.util.util.FileSystemSettings, java.io.Serializable { - /** - *

- * createTemporaryTables. - *

- * - * @return the createTemporaryTables - */ - public boolean createTemporaryTables() { - return createTemporaryTables; - } - - /** - *

- * Setter for the field createTemporaryTables. - *

- * - * @param createTemporaryTables the createTemporaryTables to set - */ - public void setCreateTemporaryTables(boolean createTemporaryTables) { - NeqSimBlobDatabase.createTemporaryTables = createTemporaryTables; - } + implements neqsim.util.util.FileSystemSettings, java.io.Serializable { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(NeqSimBlobDatabase.class); - private static final long serialVersionUID = 1000; - /** Constant dataBasePath="" */ - public static String dataBasePath = ""; - static Logger logger = LogManager.getLogger(NeqSimBlobDatabase.class); - private static boolean createTemporaryTables = true; + /** Constant dataBasePath="". */ + public static String dataBasePath = ""; + private static boolean createTemporaryTables = true; - private static String dataBaseType = ""; - private static String connectionString = ""; - private static String username = ""; - private static String password = ""; + private static String dataBaseType = ""; + private static String connectionString = ""; + private static String username = ""; + private static String password = ""; - private Statement statement = null; - protected Connection databaseConnection = null; + private Statement statement = null; + protected Connection databaseConnection = null; - /** - *

- * Constructor for NeqSimBlobDatabase. - *

- */ - public NeqSimBlobDatabase() { - setDataBaseType(dataBaseType); + /** + *

+ * createTemporaryTables. + *

+ * + * @return the createTemporaryTables + */ + public boolean createTemporaryTables() { + return createTemporaryTables; + } - try { - databaseConnection = this.openConnection(); - statement = databaseConnection.createStatement(); - } catch (Exception ex) { - logger.error("SQLException " + ex.getMessage()); - throw new RuntimeException(ex); - } - } + /** + *

+ * Setter for the field createTemporaryTables. + *

+ * + * @param createTemporaryTables the createTemporaryTables to set + */ + public void setCreateTemporaryTables(boolean createTemporaryTables) { + NeqSimBlobDatabase.createTemporaryTables = createTemporaryTables; + } - /** - *

- * openConnection. - *

- * - * @return a Connection object - * @throws java.sql.SQLException if any. - * @throws java.lang.ClassNotFoundException if any. - */ - public Connection openConnection() throws SQLException, ClassNotFoundException { - javax.naming.InitialContext ctx = null; - javax.sql.DataSource ds = null; + /** + *

+ * Constructor for NeqSimBlobDatabase. + *

+ */ + public NeqSimBlobDatabase() { + setDataBaseType(dataBaseType); - try { - if (System.getenv("NEQSIMBLOBDB_CS") != null) { - return DriverManager.getConnection(System.getenv("NEQSIMBLOBDB_CS"), - System.getenv("MYSQL_USER"), System.getenv("MYSQL_PASSWORD")); - } else if (dataBaseType.equals("MSAccess")) { - String dir = ""; - if (System.getProperty("NeqSim.home") == null) { - dir = neqsim.util.util.FileSystemSettings.root - + "\\programming\\NeqSimSourceCode\\java\\neqsim"; - } else { - dir = System.getProperty("NeqSim.home"); - } - return DriverManager - .getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" - + dir + "\\data\\NeqSimDatabase"); - } else if (dataBaseType.equals("H2") || dataBaseType.equals("H2RT")) { - return DriverManager.getConnection(connectionString, "sa", ""); - } else if (dataBaseType.equals("MSAccessUCanAccess")) { - return DriverManager.getConnection(getConnectionString()); - } else if (dataBaseType.equals("mySQL") || dataBaseType.equals("mySQLNTNU") - || dataBaseType.equals("Derby")) { - return DriverManager.getConnection(getConnectionString(), username, password); - } else if (dataBaseType.equals("mySQLNeqSimWeb")) { - ctx = new javax.naming.InitialContext(); - ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/NeqsimThermoDatabase"); - return ds.getConnection(); - } else { - return DriverManager.getConnection(getConnectionString(), username, password); - } - } catch (Exception ex) { - logger.error("error loading NeqSimDataBase... " + ex.toString()); - throw new RuntimeException(ex); - } finally { - try { - if (ctx != null) { - ctx.close(); - } - } catch (Exception e) { - logger.error("error", e); - } - } + try { + databaseConnection = this.openConnection(); + statement = databaseConnection.createStatement(); + } catch (Exception ex) { + logger.error("SQLException ", ex); + throw new RuntimeException(ex); } + } - /** - *

- * getConnection. - *

- * - * @return a Connection object - */ - public Connection getConnection() { - return databaseConnection; - } + /** + *

+ * openConnection. + *

+ * + * @return a Connection object + * @throws java.sql.SQLException if any. + * @throws java.lang.ClassNotFoundException if any. + */ + public Connection openConnection() throws SQLException, ClassNotFoundException { + javax.naming.InitialContext ctx = null; + javax.sql.DataSource ds = null; - /** - *

- * getResultSet. - *

- * - * @param sqlString a {@link java.lang.String} object - * @return a ResultSet object - */ - public ResultSet getResultSet(String sqlString) { - try { - ResultSet result = getStatement().executeQuery(sqlString); - return result; - } catch (Exception e) { - logger.error("error loading NeqSimbataBase " + e.toString()); - throw new RuntimeException(e); + try { + if (System.getenv("NEQSIMBLOBDB_CS") != null) { + return DriverManager.getConnection(System.getenv("NEQSIMBLOBDB_CS"), + System.getenv("MYSQL_USER"), System.getenv("MYSQL_PASSWORD")); + } else if (dataBaseType.equals("MSAccess")) { + String dir = ""; + if (System.getProperty("NeqSim.home") == null) { + dir = neqsim.util.util.FileSystemSettings.root + + "\\programming\\NeqSimSourceCode\\java\\neqsim"; + } else { + dir = System.getProperty("NeqSim.home"); } - } - - /** - *

- * execute. - *

- * - * @param sqlString a {@link java.lang.String} object - */ - public void execute(String sqlString) { - try { - if (databaseConnection == null) { - databaseConnection = this.openConnection(); - setStatement(databaseConnection.createStatement()); - } - getStatement().execute(sqlString); - } catch (Exception e) { - logger.error("error in NeqSimDataBase " + e.toString(), e); - logger.error("The database must be rgistered on the local DBMS to work."); - throw new RuntimeException(e); + return DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" + + dir + "\\data\\NeqSimDatabase"); + } else if (dataBaseType.equals("H2") || dataBaseType.equals("H2RT")) { + return DriverManager.getConnection(connectionString, "sa", ""); + } else if (dataBaseType.equals("MSAccessUCanAccess")) { + return DriverManager.getConnection(getConnectionString()); + } else if (dataBaseType.equals("mySQL") || dataBaseType.equals("mySQLNTNU") + || dataBaseType.equals("Derby")) { + return DriverManager.getConnection(getConnectionString(), username, password); + } else if (dataBaseType.equals("mySQLNeqSimWeb")) { + ctx = new javax.naming.InitialContext(); + ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/NeqsimThermoDatabase"); + return ds.getConnection(); + } else { + return DriverManager.getConnection(getConnectionString(), username, password); + } + } catch (Exception ex) { + logger.error("error loading NeqSimBlobDatabase... ", ex); + throw new RuntimeException(ex); + } finally { + try { + if (ctx != null) { + ctx.close(); } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } + } + + /** + *

+ * getConnection. + *

+ * + * @return a Connection object + */ + public Connection getConnection() { + return databaseConnection; + } - /** - *

- * Getter for the field dataBaseType. - *

- * - * @return a {@link java.lang.String} object - */ - public static String getDataBaseType() { - return dataBaseType; + /** + *

+ * getResultSet. + *

+ * + * @param sqlString a {@link java.lang.String} object + * @return a ResultSet object + */ + public ResultSet getResultSet(String sqlString) { + try { + ResultSet result = getStatement().executeQuery(sqlString); + return result; + } catch (Exception ex) { + logger.error("error loading NeqSimBlobDatabase ", ex); + throw new RuntimeException(ex); } + } - /** - *

- * Setter for the field dataBaseType. - *

- * - * @param aDataBaseType a {@link java.lang.String} object - */ - public static void setDataBaseType(String aDataBaseType) { - setDataBaseType(aDataBaseType, null); + /** + *

+ * execute. + *

+ * + * @param sqlString a {@link java.lang.String} object + */ + public void execute(String sqlString) { + try { + if (databaseConnection == null) { + databaseConnection = this.openConnection(); + setStatement(databaseConnection.createStatement()); + } + getStatement().execute(sqlString); + } catch (Exception ex) { + logger.error("error in NeqSimDataBase ", ex); + logger.error("The database must be rgistered on the local DBMS to work."); + throw new RuntimeException(ex); } + } - /** - *

- * Setter for the field dataBaseType. - *

- * - * @param aDataBaseType a {@link java.lang.String} object - * @param connectionString a {@link java.lang.String} object - */ - public static void setDataBaseType(String aDataBaseType, String connectionString) { - dataBaseType = aDataBaseType; + /** + *

+ * Getter for the field dataBaseType. + *

+ * + * @return a {@link java.lang.String} object + */ + public static String getDataBaseType() { + return dataBaseType; + } - if (connectionString != null) { - NeqSimBlobDatabase.connectionString = connectionString; - } + /** + *

+ * Setter for the field dataBaseType. + *

+ * + * @param aDataBaseType a {@link java.lang.String} object + */ + public static void setDataBaseType(String aDataBaseType) { + setDataBaseType(aDataBaseType, null); + } - try { - if (dataBaseType.equals("mySQL")) { - Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); - } else { - Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); - } - } catch (Exception ex) { - logger.error("error loading database driver.. " + ex.toString()); - throw new RuntimeException(ex); - } - } + /** + *

+ * Setter for the field dataBaseType. + *

+ * + * @param aDataBaseType a {@link java.lang.String} object + * @param connectionString a {@link java.lang.String} object + */ + public static void setDataBaseType(String aDataBaseType, String connectionString) { + dataBaseType = aDataBaseType; - /** - *

- * Getter for the field statement. - *

- * - * @return a Statement object - */ - public Statement getStatement() { - return statement; + if (connectionString != null) { + NeqSimBlobDatabase.connectionString = connectionString; } - /** - *

- * Setter for the field statement. - *

- * - * @param statement a Statement object - */ - public void setStatement(Statement statement) { - this.statement = statement; + try { + if (dataBaseType.equals("mySQL")) { + Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); + } else { + Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); + } + } catch (Exception ex) { + logger.error("error loading database driver.. ", ex); + throw new RuntimeException(ex); } + } - /** - *

- * Setter for the field username. - *

- * - * @param aUsername the username to set - */ - public static void setUsername(String aUsername) { - username = aUsername; - } + /** + *

+ * Getter for the field statement. + *

+ * + * @return a Statement object + */ + public Statement getStatement() { + return statement; + } - /** - *

- * Setter for the field password. - *

- * - * @param aPassword the password to set - */ - public static void setPassword(String aPassword) { - password = aPassword; - } + /** + *

+ * Setter for the field statement. + *

+ * + * @param statement a Statement object + */ + public void setStatement(Statement statement) { + this.statement = statement; + } - /** - *

- * Getter for the field connectionString. - *

- * - * @return the connectionString - */ - public static String getConnectionString() { - return connectionString; - } + /** + *

+ * Setter for the field username. + *

+ * + * @param aUsername the username to set + */ + public static void setUsername(String aUsername) { + username = aUsername; + } - /** - *

- * Setter for the field connectionString. - *

- * - * @param aConnectionString the connectionString to set - */ - public static void setConnectionString(String aConnectionString) { - connectionString = aConnectionString; - } + /** + *

+ * Setter for the field password. + *

+ * + * @param aPassword the password to set + */ + public static void setPassword(String aPassword) { + password = aPassword; + } + + /** + *

+ * Getter for the field connectionString. + *

+ * + * @return the connectionString + */ + public static String getConnectionString() { + return connectionString; + } + + /** + *

+ * Setter for the field connectionString. + *

+ * + * @param aConnectionString the connectionString to set + */ + public static void setConnectionString(String aConnectionString) { + connectionString = aConnectionString; + } } diff --git a/src/main/java/neqsim/util/database/NeqSimContractDataBase.java b/src/main/java/neqsim/util/database/NeqSimContractDataBase.java new file mode 100644 index 0000000000..4c25fa365c --- /dev/null +++ b/src/main/java/neqsim/util/database/NeqSimContractDataBase.java @@ -0,0 +1,82 @@ +package neqsim.util.database; + +import java.sql.Connection; +import java.sql.Statement; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + *

+ * NeqSimProcessDesignDataBase class. + *

+ * + * @author Even Solbraa + * @version June 2023 + */ +public class NeqSimContractDataBase extends NeqSimDataBase { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(NeqSimContractDataBase.class); + + /** Constant dataBasePath="". */ + public static String dataBasePath = ""; + + private static boolean createTemporaryTables = false; + + private static String username = "remote"; + private static String password = "remote"; + + // Default databasetype + private static String dataBaseType = "H2fromCSV"; + private static String connectionString = "jdbc:h2:mem:neqsimcontractdatabase"; + private static boolean h2IsInitialized = false; + private static boolean h2IsInitalizing = false; + + private Statement statement = null; + protected Connection databaseConnection = null; + + /** + *

+ * Constructor for NeqSimDataBase. + *

+ */ + public NeqSimContractDataBase() { + // Fill tables from csv-files if not initialized and not currently being initialized. + if (dataBaseType == "H2fromCSV" && !h2IsInitialized && !h2IsInitalizing) { + initH2DatabaseFromCSVfiles(); + } + setDataBaseType(dataBaseType); + + try { + databaseConnection = this.openConnection(); + statement = databaseConnection.createStatement(); + } catch (Exception ex) { + logger.error("SQLException ", ex); + throw new RuntimeException(ex); + } + } + + /** {@inheritDoc} */ + public static void updateTable(String tableName) { + updateTable(tableName, "commercial/" + tableName + ".csv"); + } + + /** + *

+ * initH2DatabaseFromCSVfiles. + *

+ */ + public static void initH2DatabaseFromCSVfiles() { + h2IsInitalizing = true; + neqsim.util.database.NeqSimContractDataBase.connectionString = + "jdbc:h2:mem:neqsimcontractdatabase;DB_CLOSE_DELAY=-1"; + neqsim.util.database.NeqSimContractDataBase.dataBaseType = "H2"; + + try { + updateTable("GASCONTRACTSPECIFICATIONS"); + + h2IsInitialized = true; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } +} diff --git a/src/main/java/neqsim/util/database/NeqSimDataBase.java b/src/main/java/neqsim/util/database/NeqSimDataBase.java index 727d95d484..635797436d 100644 --- a/src/main/java/neqsim/util/database/NeqSimDataBase.java +++ b/src/main/java/neqsim/util/database/NeqSimDataBase.java @@ -1,5 +1,6 @@ package neqsim.util.database; +import java.net.URL; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; @@ -10,6 +11,7 @@ import java.util.Properties; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.h2.jdbc.JdbcSQLSyntaxErrorException; /** *

@@ -19,387 +21,533 @@ * @author Even Solbraa * @version Dec 2018 */ -public class NeqSimDataBase implements neqsim.util.util.FileSystemSettings, java.io.Serializable { - /** - *

- * createTemporaryTables. - *

- * - * @return the createTemporaryTables - */ - public static boolean createTemporaryTables() { - return createTemporaryTables; - } +public class NeqSimDataBase + implements neqsim.util.util.FileSystemSettings, java.io.Serializable, AutoCloseable { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(NeqSimDataBase.class); - /** - *

- * Setter for the field createTemporaryTables. - *

- * - * @param createTemporaryTables the createTemporaryTables to set - */ - public static void setCreateTemporaryTables(boolean createTemporaryTables) { - NeqSimDataBase.createTemporaryTables = createTemporaryTables; - } + /** Constant dataBasePath="". */ + public static String dataBasePath = ""; - private static final long serialVersionUID = 1000; - /** Constant dataBasePath="" */ - public static String dataBasePath = ""; - static Logger logger = LogManager.getLogger(NeqSimDataBase.class); - private static boolean createTemporaryTables = false; - - private static String dataBaseType = "Derby"; - private static String connectionString = "jdbc:derby:classpath:data/neqsimthermodatabase"; - private static String username = "remote"; - private static String password = "remote"; - - // static String dataBaseType = "MSAccessUCanAccess"; - // public static String connectionString = - // "jdbc:ucanaccess://C:/Users/esol/OneDrive - - // Equinor/programming/neqsimdatabase/MSAccess/NeqSimDataBase.mdb;memory=true"; - - private Statement statement = null; - protected Connection databaseConnection = null; - - /** - *

- * Constructor for NeqSimDataBase. - *

- */ - public NeqSimDataBase() { - setDataBaseType(dataBaseType); - - try { - databaseConnection = this.openConnection(); - statement = databaseConnection.createStatement(); - } catch (Exception ex) { - logger.error("SQLException " + ex.getMessage()); - throw new RuntimeException(ex); - } + private static boolean createTemporaryTables = false; + + private static String username = "remote"; + private static String password = "remote"; + + // Default databasetype + private static String dataBaseType = "H2fromCSV"; + private static String connectionString = "jdbc:h2:mem:neqsimthermodatabase"; + /** True if h2 database has been initialized, i.e., populated with tables */ + private static boolean h2IsInitialized = false; + /** True while h2 database is being initialized. */ + private static boolean h2IsInitalizing = false; + // static String dataBaseType = "MSAccessUCanAccess"; + // public static String connectionString = + // "jdbc:ucanaccess://C:/Users/esol/OneDrive - + // Equinor/programming/neqsimdatabase/MSAccess/NeqSimDataBase.mdb;memory=true"; + + private Statement statement = null; + protected Connection databaseConnection = null; + + /** + *

+ * Constructor for NeqSimDataBase. + *

+ */ + public NeqSimDataBase() { + setDataBaseType(dataBaseType); + + try { + databaseConnection = this.openConnection(); + statement = databaseConnection.createStatement(); + } catch (Exception ex) { + logger.error("SQLException ", ex); + throw new RuntimeException(ex); } + } - /** - *

- * openConnection. - *

- * - * @return a Connection object - * @throws java.sql.SQLException if any. - * @throws java.lang.ClassNotFoundException if any. - */ - public Connection openConnection() throws SQLException, ClassNotFoundException { - javax.naming.InitialContext ctx = null; - javax.sql.DataSource ds = null; - try { - if (System.getenv("NEQSIMTHERMODB_CS") != null) { - Properties properties = new Properties(); - properties.setProperty("user", System.getenv("MYSQL_USER")); - properties.setProperty("password", System.getenv("MYSQL_PASSWORD")); - properties.setProperty("useSSL", "false"); - return DriverManager.getConnection(System.getenv("NEQSIMTHERMODB_CS"), properties); - } else if (dataBaseType.equals("MSAccess")) { - String dir = ""; - if (System.getProperty("NeqSim.home") == null) { - dir = neqsim.util.util.FileSystemSettings.root - + "\\programming\\NeqSimSourceCode\\java\\neqsim"; - } else { - dir = System.getProperty("NeqSim.home"); - } - return DriverManager - .getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" - + dir + "\\data\\NeqSimDatabase"); - } else if (dataBaseType.equals("H2") || dataBaseType.equals("H2RT")) { - return DriverManager.getConnection(connectionString, "sa", ""); - } else if (dataBaseType.equals("MSAccessUCanAccess")) { - return DriverManager.getConnection(getConnectionString()); - } else if (dataBaseType.equals("mySQL") || dataBaseType.equals("mySQLNTNU") - || dataBaseType.equals("Derby")) { - return DriverManager.getConnection(getConnectionString(), username, password); - } else if (dataBaseType.equals("mySQLNeqSimWeb")) { - ctx = new javax.naming.InitialContext(); - ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/NeqsimThermoDatabase"); - return ds.getConnection(); - } else { - return DriverManager.getConnection(getConnectionString()); - } - } catch (Exception ex) { - logger.error("error loading NeqSimDataBase... " + ex.toString()); - throw new RuntimeException(ex); - } finally { - try { - if (ctx != null) { - ctx.close(); - } - } catch (Exception e) { - logger.error("error", e); - } + /** + *

+ * openConnection. + *

+ * + * @return a Connection object + * @throws java.sql.SQLException if any. + * @throws java.lang.ClassNotFoundException if any. + */ + public Connection openConnection() throws SQLException, ClassNotFoundException { + javax.naming.InitialContext ctx = null; + javax.sql.DataSource ds = null; + try { + if (System.getenv("NEQSIMTHERMODB_CS") != null) { + Properties properties = new Properties(); + properties.setProperty("user", System.getenv("MYSQL_USER")); + properties.setProperty("password", System.getenv("MYSQL_PASSWORD")); + properties.setProperty("useSSL", "false"); + return DriverManager.getConnection(System.getenv("NEQSIMTHERMODB_CS"), properties); + } else if (dataBaseType.equals("MSAccess")) { + String dir = ""; + if (System.getProperty("NeqSim.home") == null) { + dir = neqsim.util.util.FileSystemSettings.root + + "\\programming\\NeqSimSourceCode\\java\\neqsim"; + } else { + dir = System.getProperty("NeqSim.home"); } + return DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" + + dir + "\\data\\NeqSimDatabase"); + } else if (dataBaseType.equals("H2fromCSV") || dataBaseType.equals("H2") + || dataBaseType.equals("H2RT")) { + return DriverManager.getConnection(connectionString, "sa", ""); + } else if (dataBaseType.equals("MSAccessUCanAccess")) { + return DriverManager.getConnection(getConnectionString()); + } else if (dataBaseType.equals("mySQL") || dataBaseType.equals("mySQLNTNU") + || dataBaseType.equals("Derby")) { + return DriverManager.getConnection(getConnectionString(), username, password); + } else if (dataBaseType.equals("mySQLNeqSimWeb")) { + ctx = new javax.naming.InitialContext(); + ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/NeqsimThermoDatabase"); + return ds.getConnection(); + } else { + return DriverManager.getConnection(getConnectionString()); + } + } catch (Exception ex) { + logger.error("error loading NeqSimDataBase... ", ex); + throw new RuntimeException(ex); + } finally { + try { + if (ctx != null) { + ctx.close(); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } + } - /** - *

- * getConnection. - *

- * - * @return a Connection object - */ - public Connection getConnection() { - return databaseConnection; - } + /** + *

+ * getConnection. + *

+ * + * @return a Connection object + */ + public Connection getConnection() { + return databaseConnection; + } - /** - *

- * getResultSet. - *

- * - * @param sqlString a {@link java.lang.String} object - * @return a ResultSet object - */ - public ResultSet getResultSet(String sqlString) { - try { - ResultSet result = getStatement().executeQuery(sqlString); - return result; - } catch (Exception e) { - logger.error("error loading NeqSimbataBase " + e.toString()); - throw new RuntimeException(e); - } + /** + *

+ * Getter for the field statement. + *

+ * + * @return a Statement object + */ + public Statement getStatement() { + return statement; + } + + /** + *

+ * Setter for the field statement. + *

+ * + * @param statement a Statement object + */ + public void setStatement(Statement statement) { + this.statement = statement; + } + + /** + *

+ * Execute query using execute. + *

+ * + * @param sqlString Query to execute. + * @return True if the first result is a ResultSet object; false if it is an update count or there + * are no results + */ + public boolean execute(String sqlString) { + try { + if (databaseConnection == null) { + databaseConnection = this.openConnection(); + setStatement(databaseConnection.createStatement()); + } + return getStatement().execute(sqlString); + } catch (Exception ex) { + logger.error("error in NeqSimDataBase ", ex); + // TODO: should be checked against database type. + logger.error("The database must be registered on the local DBMS to work."); + throw new RuntimeException(ex); } + } - /** - *

- * execute. - *

- * - * @param sqlString a {@link java.lang.String} object - */ - public void execute(String sqlString) { - try { - if (databaseConnection == null) { - databaseConnection = this.openConnection(); - setStatement(databaseConnection.createStatement()); - } - getStatement().execute(sqlString); - } catch (Exception e) { - logger.error("error in NeqSimDataBase " + e.toString(), e); - logger.error("The database must be rgistered on the local DBMS to work."); - throw new RuntimeException(e); - } + /** + *

+ * Execute query using executeQuery but do not return anything. + *

+ * + * @param sqlString Query to execute. + */ + public void executeQuery(String sqlString) { + try { + if (databaseConnection == null) { + databaseConnection = this.openConnection(); + setStatement(databaseConnection.createStatement()); + } + getStatement().executeQuery(sqlString); + } catch (Exception ex) { + logger.error("error in NeqSimDataBase ", ex); + // TODO: should be checked against database type. + logger.error("The database must be registered on the local DBMS to work."); + throw new RuntimeException(ex); } + } - /** - *

- * Getter for the field dataBaseType. - *

- * - * @return a {@link java.lang.String} object - */ - public static String getDataBaseType() { - return dataBaseType; + /** + *

+ * Execute query using executeQuery and return ResultSet. + *

+ * + * @param sqlString Query to execute. + * @return a ResultSet object + */ + public ResultSet getResultSet(String sqlString) { + try { + return getStatement().executeQuery(sqlString); + } catch (JdbcSQLSyntaxErrorException ex) { + if (ex.getMessage().startsWith("Table ") && ex.getMessage().contains(" not found;")) { + throw new RuntimeException(new neqsim.util.exception.NotInitializedException(this, + "getResultSet", ex.getMessage())); + } + throw new RuntimeException(ex); + } catch (Exception ex) { + logger.error("error loading NeqSimbataBase ", ex); + throw new RuntimeException(ex); } + } - /** - *

- * Setter for the field dataBaseType. - *

- * - * @param aDataBaseType a {@link java.lang.String} object - */ - public static void setDataBaseType(String aDataBaseType) { - setDataBaseType(aDataBaseType, null); + /** {@inheritDoc} */ + @Override + public void close() throws Exception { + if (databaseConnection != null) { + databaseConnection.close(); + } + if (statement != null) { + statement.close(); } + } - /** - *

- * Setter for the field dataBaseType. - *

- * - * @param aDataBaseType a {@link java.lang.String} object - * @param connectionString a {@link java.lang.String} object - */ - public static void setDataBaseType(String aDataBaseType, String connectionString) { - dataBaseType = aDataBaseType; - - if (connectionString != null) { - NeqSimDataBase.connectionString = connectionString; - } + /** + *

+ * createTemporaryTables. + *

+ * + * @return the createTemporaryTables + */ + public static boolean createTemporaryTables() { + return createTemporaryTables; + } - try { - if (dataBaseType.equals("MSAccess")) { - Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getDeclaredConstructor() - .newInstance(); - } else if (dataBaseType.equals("H2")) { - Class.forName("org.h2.Driver"); - } else if (dataBaseType.equals("H2RT")) { - Class.forName("org.h2.Driver"); - } else if (dataBaseType.equals("MSAccessUCanAccess")) { - Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); - } else if (dataBaseType.equals("mySQL")) { - Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); - } else if (dataBaseType.equals("mySQLNTNU")) { - Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); - } else if (dataBaseType.equals("Derby")) { - Class.forName("org.apache.derby.jdbc.EmbeddedDriver").getDeclaredConstructor() - .newInstance(); - } else if (dataBaseType.equals("oracle")) { - Class.forName("oracle.jdbc.driver.OracleDriver").getDeclaredConstructor() - .newInstance(); - } else if (dataBaseType.equals("oracleST")) { - Class.forName("oracle.jdbc.driver.OracleDriver").getDeclaredConstructor() - .newInstance(); - } else { - Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); - } - } catch (Exception ex) { - logger.error("error loading database driver.. " + ex.toString()); - throw new RuntimeException(ex); - } - } + /** + *

+ * Setter for the field createTemporaryTables. + *

+ * + * @param createTemporaryTables the createTemporaryTables to set + */ + public static void setCreateTemporaryTables(boolean createTemporaryTables) { + NeqSimDataBase.createTemporaryTables = createTemporaryTables; + } + + /** + *

+ * Getter for the field dataBaseType. + *

+ * + * @return a {@link java.lang.String} object + */ + public static String getDataBaseType() { + return dataBaseType; + } - /** - *

- * Getter for the field statement. - *

- * - * @return a Statement object - */ - public Statement getStatement() { - return statement; + /** + *

+ * Setter for the field dataBaseType. + *

+ * + * @param aDataBaseType a {@link java.lang.String} object + */ + public static void setDataBaseType(String aDataBaseType) { + setDataBaseType(aDataBaseType, null); + } + + /** + *

+ * Setter for the field dataBaseType. + *

+ * + * @param aDataBaseType a {@link java.lang.String} object + * @param connectionString a {@link java.lang.String} object + */ + public static void setDataBaseType(String aDataBaseType, String connectionString) { + dataBaseType = aDataBaseType; + + // Fill tables from csv-files if not initialized and not currently being + // initialized. + if (dataBaseType == "H2fromCSV" && !h2IsInitialized && !h2IsInitalizing) { + initH2DatabaseFromCSVfiles(); } - /** - *

- * Setter for the field statement. - *

- * - * @param statement a Statement object - */ - public void setStatement(Statement statement) { - this.statement = statement; + if (connectionString != null) { + NeqSimDataBase.connectionString = connectionString; } - /** - *

- * Setter for the field username. - *

- * - * @param aUsername the username to set - */ - public static void setUsername(String aUsername) { - username = aUsername; + try { + if (dataBaseType.equals("MSAccess")) { + Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getDeclaredConstructor().newInstance(); + } else if (dataBaseType.equals("H2fromCSV") || dataBaseType.equals("H2") + || dataBaseType.equals("H2RT")) { + Class.forName("org.h2.Driver"); + } else if (dataBaseType.equals("MSAccessUCanAccess")) { + Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); + } else if (dataBaseType.equals("mySQL")) { + Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); + } else if (dataBaseType.equals("mySQLNTNU")) { + Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); + } else if (dataBaseType.equals("Derby")) { + Class.forName("org.apache.derby.jdbc.EmbeddedDriver").getDeclaredConstructor() + .newInstance(); + } else if (dataBaseType.equals("oracle")) { + Class.forName("oracle.jdbc.driver.OracleDriver").getDeclaredConstructor().newInstance(); + } else if (dataBaseType.equals("oracleST")) { + Class.forName("oracle.jdbc.driver.OracleDriver").getDeclaredConstructor().newInstance(); + } else { + Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); + } + } catch (Exception ex) { + logger.error("error loading database driver.. ", ex); + throw new RuntimeException(ex); } + } + + /** + *

+ * Setter for the field username. + *

+ * + * @param aUsername the username to set + */ + public static void setUsername(String aUsername) { + username = aUsername; + } + + /** + *

+ * Setter for the field password. + *

+ * + * @param aPassword the password to set + */ + public static void setPassword(String aPassword) { + password = aPassword; + } + + /** + *

+ * Getter for the field connectionString. + *

+ * + * @return the connectionString + */ + public static String getConnectionString() { + return connectionString; + } - /** - *

- * Setter for the field password. - *

- * - * @param aPassword the password to set - */ - public static void setPassword(String aPassword) { - password = aPassword; + /** + *

+ * Setter for the field connectionString. + *

+ * + * @param aConnectionString the connectionString to set + */ + public static void setConnectionString(String aConnectionString) { + connectionString = aConnectionString; + } + + /** + *

+ * getComponentNames. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public static String[] getComponentNames() { + try (NeqSimDataBase database = new NeqSimDataBase(); + ResultSet dataSet = database.getResultSet("SELECT name FROM comp ORDER BY ID")) { + List names = new ArrayList<>(); + while (dataSet.next()) { + names.add(dataSet.getString("name")); + } + return names.toArray(new String[0]); + } catch (Exception ex) { + throw new RuntimeException(ex); } + } - /** - *

- * Getter for the field connectionString. - *

- * - * @return the connectionString - */ - public static String getConnectionString() { - return connectionString; + /** + * Verify if database has a component. + * + * @param name Name of component to look for. + * @return True if component is found. + */ + public static boolean hasComponent(String name) { + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet("select count(*) from comp WHERE NAME='" + name + "'")) { + dataSet.next(); + int size = dataSet.getInt(1); + if (size == 0) { + return false; + } else { + return true; + } + } catch (Exception ex) { + throw new RuntimeException(ex); } + } - /** - *

- * Setter for the field connectionString. - *

- * - * @param aConnectionString the connectionString to set - */ - public static void setConnectionString(String aConnectionString) { - connectionString = aConnectionString; + /** + * Verify if database has a component. + * + * @param name Name of component to look for. + * @return True if component is found. + */ + public static boolean hasTempComponent(String name) { + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); + java.sql.ResultSet dataSet = + database.getResultSet("select count(*) from comptemp WHERE NAME='" + name + "'")) { + dataSet.next(); + int size = dataSet.getInt(1); + if (size == 0) { + return false; + } else { + return true; + } + } catch (Exception ex) { + throw new RuntimeException(ex); } + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - NeqSimDataBase database = new NeqSimDataBase(); - - ResultSet dataSet = database.getResultSet("SELECT * FROM comp WHERE NAME='methane'"); - - try { - dataSet.next(); - logger.info("dataset " + dataSet.getString("molarmass")); - } catch (Exception e) { - logger.error("failed " + e.toString()); - throw new RuntimeException(e); - } + /** + * Drops and re-creates table from contents in default csv file. + * + * @param tableName Name of table to replace + */ + public static void updateTable(String tableName) { + updateTable(tableName, "data/" + tableName + ".csv"); + } + + /** + * Drops and re-creates table from contents in csv file. + * + * @param tableName Name of table to replace + * @param path Path to csv file to get table data from + */ + public static void updateTable(String tableName, String path) { + URL url = NeqSimDataBase.class.getClassLoader().getResource(path); + if (url == null) { + throw new RuntimeException(new neqsim.util.exception.InvalidInputException("NeqSimDataBase", + "updateTable", "path", "- Resource " + path + " not found")); } + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + database.execute("DROP TABLE IF EXISTS " + tableName); + String sqlString = "CREATE TABLE " + tableName + " AS SELECT * FROM CSVREAD('" + url + "')"; + database.execute(sqlString); + } catch (Exception ex) { + logger.error("Failed updating table " + tableName, ex); + } + } - /** - *

- * getComponentNames. - *

- * - * @return an array of {@link java.lang.String} objects - */ - public static String[] getComponentNames() { - NeqSimDataBase database = new NeqSimDataBase(); - try { - List names = new ArrayList<>(); - ResultSet dataSet = database.getResultSet("SELECT name FROM comp ORDER BY ID"); - while (dataSet.next()) { - names.add(dataSet.getString("name")); - } - return names.toArray(new String[0]); - } catch (Exception e) { - throw new RuntimeException(e); - } + /** + * Drops and re-creates table from contents in csv file. + * + * @param tableName Name of table to replace + * @param path Path to csv file to + */ + public static void replaceTable(String tableName, String path) { + try (neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase()) { + database.execute("DROP TABLE IF EXISTS " + tableName); + String sqlString = "CREATE TABLE " + tableName + " AS SELECT * FROM CSVREAD('" + path + "')"; + database.execute(sqlString); + } catch (Exception ex) { + updateTable(tableName); + logger.error("Failed updating table " + tableName, ex); + throw new RuntimeException(new neqsim.util.exception.InvalidInputException("NeqSimDataBase", + "replaceTable", "path", "- Resource " + path + " not found")); } + } - /** - *

- * hasComponent. - *

- * - * @param compName a {@link java.lang.String} object - * @return a boolean - */ - public static boolean hasComponent(String compName) { - neqsim.util.database.NeqSimDataBase database = new neqsim.util.database.NeqSimDataBase(); - java.sql.ResultSet dataSet = null; - try { - dataSet = database - .getResultSet("select count(*) from comp WHERE NAME='" + compName + "'"); - dataSet.next(); - int size = dataSet.getInt(1); - if (size == 0) { - return false; - } else { - return true; - } - } catch (Exception e) { - throw new RuntimeException(e); - } finally { - try { - if (dataSet != null) { - dataSet.close(); - } - if (database.getStatement() != null) { - database.getStatement().close(); - } - if (database.getConnection() != null) { - database.getConnection().close(); - } - } catch (Exception e) { - logger.error("error closing database.....", e); - } - } + /** + *

+ * initH2DatabaseFromCSVfiles. + *

+ */ + public static void initH2DatabaseFromCSVfiles() { + h2IsInitalizing = true; + neqsim.util.database.NeqSimDataBase.connectionString = + "jdbc:h2:mem:neqsimthermodatabase;DB_CLOSE_DELAY=-1"; + neqsim.util.database.NeqSimDataBase.dataBaseType = "H2"; + + try { + updateTable("COMP"); + updateTable("INTER"); + updateTable("element"); + updateTable("ISO6976constants"); + updateTable("ISO6976constants2016"); + updateTable("STOCCOEFDATA"); + updateTable("REACTIONDATA"); + // Table ReactionKSPdata is not in use anywhere + updateTable("ReactionKSPdata"); + updateTable("AdsorptionParameters"); + + updateTable("UNIFACcomp"); + updateTable("UNIFACcompUMRPRU"); + updateTable("UNIFACGroupParam"); + updateTable("UNIFACInterParam"); + + updateTable("UNIFACInterParamA_UMR"); + updateTable("UNIFACInterParamA_UMRMC"); + + updateTable("UNIFACInterParamB"); + updateTable("UNIFACInterParamB_UMR"); + updateTable("UNIFACInterParamB_UMRMC"); + + updateTable("UNIFACInterParamC"); + updateTable("UNIFACInterParamC_UMR"); + updateTable("UNIFACInterParamC_UMRMC"); + updateTable("MBWR32param"); + updateTable("COMPSALT"); + updateTable("PIPEDATA"); + + // TODO: missing tables: ionicData, reactiondatakenteisenberg, + // purecomponentvapourpressures, + // binarysystemviscosity, binaryliquiddiffusioncoefficientdata, + // purecomponentconductivitydata, purecomponentdensity, + // purecomponentsurfacetension2, + // BinaryComponentSurfaceTension, purecomponentsurfacetension, + // purecomponentviscosity,PureComponentVapourPressures + // technicalrequirements, technicalrequirements_process, materialpipeproperties, + // materialplateproperties, fittings, LuciaData, Luciadata8 + + try (neqsim.util.database.NeqSimDataBase database = + new neqsim.util.database.NeqSimDataBase()) { + database.execute("CREATE TABLE comptemp AS SELECT * FROM comp"); + database.execute("CREATE TABLE intertemp AS SELECT * FROM inter"); + } + + h2IsInitialized = true; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java b/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java index 79300f5cd0..07fd5ce17d 100644 --- a/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java +++ b/src/main/java/neqsim/util/database/NeqSimExperimentDatabase.java @@ -17,293 +17,288 @@ * @version Dec 2018 */ public class NeqSimExperimentDatabase - implements neqsim.util.util.FileSystemSettings, java.io.Serializable { - /** - *

- * createTemporaryTables. - *

- * - * @return the createTemporaryTables - */ - public boolean createTemporaryTables() { - return createTemporaryTables; - } + implements neqsim.util.util.FileSystemSettings, java.io.Serializable { + /** + *

+ * createTemporaryTables. + *

+ * + * @return the createTemporaryTables + */ + public boolean createTemporaryTables() { + return createTemporaryTables; + } - /** - *

- * Setter for the field createTemporaryTables. - *

- * - * @param createTemporaryTables the createTemporaryTables to set - */ - public void setCreateTemporaryTables(boolean createTemporaryTables) { - NeqSimExperimentDatabase.createTemporaryTables = createTemporaryTables; - } + /** + *

+ * Setter for the field createTemporaryTables. + *

+ * + * @param createTemporaryTables the createTemporaryTables to set + */ + public void setCreateTemporaryTables(boolean createTemporaryTables) { + NeqSimExperimentDatabase.createTemporaryTables = createTemporaryTables; + } - private static final long serialVersionUID = 1000; - /** Constant dataBasePath="" */ - public static String dataBasePath = ""; - /** Constant username="" */ - /** Constant password="" */ - /** Constant password="" */ - /** Constant password="" */ - /** Constant password="" */ - /** Constant password="" */ - /** Constant password="" */ - public static String username = "", password = ""; - static Logger logger = LogManager.getLogger(NeqSimExperimentDatabase.class); - private static boolean createTemporaryTables = false; + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(NeqSimExperimentDatabase.class); - private static String dataBaseType = "MSAccessUCanAccess"; - /** Constant connectionString="jdbc:ucanaccess://C:/Users/esol/OneDriv"{trunked} */ - public static String connectionString = - "jdbc:ucanaccess://C:/Users/esol/OneDrive - Equinor/programming/neqsimdatabase/MSAccess/NeqSimExperimentalData.mdb;memory=true"; + /** Constant dataBasePath="". */ + public static String dataBasePath = ""; - private Statement statement = null; - protected Connection databaseConnection = null; + /** Constant username="" */ + public static String username = ""; + /** Constant password="" */ + public static String password = ""; + private static boolean createTemporaryTables = false; - /** - *

- * Constructor for NeqSimExperimentDatabase. - *

- */ - public NeqSimExperimentDatabase() { - setDataBaseType(dataBaseType); + private static String dataBaseType = "MSAccessUCanAccess"; + /** Constant connectionString="jdbc:ucanaccess://C:/Users/esol/OneDriv"{trunked}. */ + public static String connectionString = + "jdbc:ucanaccess://C:/Users/esol/OneDrive - Equinor/programming/neqsimdatabase/MSAccess/NeqSimExperimentalData.mdb;memory=true"; - try { - databaseConnection = this.openConnection(); - statement = databaseConnection.createStatement(); - } catch (Exception ex) { - logger.error("SQLException " + ex.getMessage()); - throw new RuntimeException(ex); - } - } + private Statement statement = null; + protected Connection databaseConnection = null; - /** - *

- * openConnection. - *

- * - * @return a Connection object - * @throws java.sql.SQLException if any. - * @throws java.lang.ClassNotFoundException if any. - */ - public Connection openConnection() throws SQLException, ClassNotFoundException { - javax.naming.InitialContext ctx = null; - javax.sql.DataSource ds = null; + /** + *

+ * Constructor for NeqSimExperimentDatabase. + *

+ */ + public NeqSimExperimentDatabase() { + setDataBaseType(dataBaseType); - try { - if (dataBaseType.equals("MSAccessUCanAccess")) { - return DriverManager.getConnection(getConnectionString()); - } else if (dataBaseType.equals("mySQL") || dataBaseType.equals("mySQLNTNU") - || dataBaseType.equals("Derby")) { - return DriverManager.getConnection(getConnectionString(), username, password); - } else if (dataBaseType.equals("mySQLNeqSimWeb")) { - ctx = new javax.naming.InitialContext(); - ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/NeqsimDataSource"); - if (ctx != null) { - ctx.close(); - } - return ds.getConnection(); - } else { - return DriverManager.getConnection(getConnectionString(), username, password); - } - } catch (Exception ex) { - logger.error("error loading NeqSimDataBase... " + ex.toString()); - throw new RuntimeException(ex); - } finally { - try { - if (ctx != null) { - ctx.close(); - } - } catch (Exception e) { - logger.error("error", e); - } - } + try { + databaseConnection = this.openConnection(); + statement = databaseConnection.createStatement(); + } catch (Exception ex) { + logger.error("SQLException ", ex); + throw new RuntimeException(ex); } + } - /** - *

- * getConnection. - *

- * - * @return a Connection object - */ - public Connection getConnection() { - return databaseConnection; - } + /** + *

+ * openConnection. + *

+ * + * @return a Connection object + * @throws java.sql.SQLException if any. + * @throws java.lang.ClassNotFoundException if any. + */ + public Connection openConnection() throws SQLException, ClassNotFoundException { + javax.naming.InitialContext ctx = null; + javax.sql.DataSource ds = null; - /** - *

- * getResultSet. - *

- * - * @param sqlString a {@link java.lang.String} object - * @return a ResultSet object - */ - public ResultSet getResultSet(String sqlString) { - try { - ResultSet result = getStatement().executeQuery(sqlString); - return result; - } catch (Exception e) { - logger.error("error loading NeqSimbataBase " + e.toString()); - throw new RuntimeException(e); + try { + if (dataBaseType.equals("MSAccessUCanAccess")) { + return DriverManager.getConnection(getConnectionString()); + } else if (dataBaseType.equals("mySQL") || dataBaseType.equals("mySQLNTNU") + || dataBaseType.equals("Derby")) { + return DriverManager.getConnection(getConnectionString(), username, password); + } else if (dataBaseType.equals("mySQLNeqSimWeb")) { + ctx = new javax.naming.InitialContext(); + ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/NeqsimDataSource"); + if (ctx != null) { + ctx.close(); } - } - - /** - *

- * execute. - *

- * - * @param sqlString a {@link java.lang.String} object - */ - public void execute(String sqlString) { - try { - if (databaseConnection == null) { - databaseConnection = this.openConnection(); - setStatement(databaseConnection.createStatement()); - } - getStatement().execute(sqlString); - } catch (Exception e) { - logger.error("error in NeqSimDataBase " + e.toString(), e); - logger.error("The database must be rgistered on the local DBMS to work."); - throw new RuntimeException(e); + return ds.getConnection(); + } else { + return DriverManager.getConnection(getConnectionString(), username, password); + } + } catch (Exception ex) { + logger.error("error loading NeqSimExperimentDatabase... ", ex); + throw new RuntimeException(ex); + } finally { + try { + if (ctx != null) { + ctx.close(); } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } + } + + /** + *

+ * getConnection. + *

+ * + * @return a Connection object + */ + public Connection getConnection() { + return databaseConnection; + } - /** - *

- * Getter for the field dataBaseType. - *

- * - * @return a {@link java.lang.String} object - */ - public static String getDataBaseType() { - return dataBaseType; + /** + *

+ * getResultSet. + *

+ * + * @param sqlString a {@link java.lang.String} object + * @return a ResultSet object + */ + public ResultSet getResultSet(String sqlString) { + try { + ResultSet result = getStatement().executeQuery(sqlString); + return result; + } catch (Exception ex) { + logger.error("error loading NeqSimExperimentDatabase ", ex); + throw new RuntimeException(ex); } + } - /** - *

- * Setter for the field dataBaseType. - *

- * - * @param aDataBaseType a {@link java.lang.String} object - */ - public static void setDataBaseType(String aDataBaseType) { - setDataBaseType(aDataBaseType, null); + /** + *

+ * execute. + *

+ * + * @param sqlString a {@link java.lang.String} object + */ + public void execute(String sqlString) { + try { + if (databaseConnection == null) { + databaseConnection = this.openConnection(); + setStatement(databaseConnection.createStatement()); + } + getStatement().execute(sqlString); + } catch (Exception ex) { + logger.error("error in NeqSimDataBase ", ex); + logger.error("The database must be rgistered on the local DBMS to work."); + throw new RuntimeException(ex); } + } - /** - *

- * Setter for the field dataBaseType. - *

- * - * @param aDataBaseType a {@link java.lang.String} object - * @param connectionString a {@link java.lang.String} object - */ - public static void setDataBaseType(String aDataBaseType, String connectionString) { - dataBaseType = aDataBaseType; + /** + *

+ * Getter for the field dataBaseType. + *

+ * + * @return a {@link java.lang.String} object + */ + public static String getDataBaseType() { + return dataBaseType; + } - if (connectionString != null) { - NeqSimExperimentDatabase.connectionString = connectionString; - } + /** + *

+ * Setter for the field dataBaseType. + *

+ * + * @param aDataBaseType a {@link java.lang.String} object + */ + public static void setDataBaseType(String aDataBaseType) { + setDataBaseType(aDataBaseType, null); + } - try { - if (dataBaseType.equals("MSAccess")) { - Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getDeclaredConstructor() - .newInstance(); - } else if (dataBaseType.equals("H2")) { - Class.forName("org.h2.Driver"); - } else if (dataBaseType.equals("H2RT")) { - Class.forName("org.h2.Driver"); - } else if (dataBaseType.equals("MSAccessUCanAccess")) { - Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); - } else if (dataBaseType.equals("mySQL")) { - Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); - } else if (dataBaseType.equals("mySQLNTNU")) { - Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); - } else if (dataBaseType.equals("Derby")) { - Class.forName("org.apache.derby.jdbc.EmbeddedDriver").getDeclaredConstructor() - .newInstance(); - } else if (dataBaseType.equals("oracle")) { - Class.forName("oracle.jdbc.driver.OracleDriver").getDeclaredConstructor() - .newInstance(); - } else if (dataBaseType.equals("oracleST")) { - Class.forName("oracle.jdbc.driver.OracleDriver").getDeclaredConstructor() - .newInstance(); - } else { - Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); - } - } catch (Exception ex) { - logger.error("error loading database driver.. " + ex.toString()); - throw new RuntimeException(ex); - } - } + /** + *

+ * Setter for the field dataBaseType. + *

+ * + * @param aDataBaseType a {@link java.lang.String} object + * @param connectionString a {@link java.lang.String} object + */ + public static void setDataBaseType(String aDataBaseType, String connectionString) { + dataBaseType = aDataBaseType; - /** - *

- * Getter for the field statement. - *

- * - * @return a Statement object - */ - public Statement getStatement() { - return statement; + if (connectionString != null) { + NeqSimExperimentDatabase.connectionString = connectionString; } - /** - *

- * Setter for the field statement. - *

- * - * @param statement a Statement object - */ - public void setStatement(Statement statement) { - this.statement = statement; + try { + if (dataBaseType.equals("MSAccess")) { + Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getDeclaredConstructor().newInstance(); + } else if (dataBaseType.equals("H2")) { + Class.forName("org.h2.Driver"); + } else if (dataBaseType.equals("H2RT")) { + Class.forName("org.h2.Driver"); + } else if (dataBaseType.equals("MSAccessUCanAccess")) { + Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); + } else if (dataBaseType.equals("mySQL")) { + Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); + } else if (dataBaseType.equals("mySQLNTNU")) { + Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); + } else if (dataBaseType.equals("Derby")) { + Class.forName("org.apache.derby.jdbc.EmbeddedDriver").getDeclaredConstructor() + .newInstance(); + } else if (dataBaseType.equals("oracle")) { + Class.forName("oracle.jdbc.driver.OracleDriver").getDeclaredConstructor().newInstance(); + } else if (dataBaseType.equals("oracleST")) { + Class.forName("oracle.jdbc.driver.OracleDriver").getDeclaredConstructor().newInstance(); + } else { + Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); + } + } catch (Exception ex) { + logger.error("error loading database driver.. ", ex); + throw new RuntimeException(ex); } + } - /** - *

- * Setter for the field username. - *

- * - * @param aUsername the username to set - */ - public static void setUsername(String aUsername) { - username = aUsername; - } + /** + *

+ * Getter for the field statement. + *

+ * + * @return a Statement object + */ + public Statement getStatement() { + return statement; + } - /** - *

- * Setter for the field password. - *

- * - * @param aPassword the password to set - */ - public static void setPassword(String aPassword) { - password = aPassword; - } + /** + *

+ * Setter for the field statement. + *

+ * + * @param statement a Statement object + */ + public void setStatement(Statement statement) { + this.statement = statement; + } - /** - *

- * Getter for the field connectionString. - *

- * - * @return the connectionString - */ - public static String getConnectionString() { - return connectionString; - } + /** + *

+ * Setter for the field username. + *

+ * + * @param aUsername the username to set + */ + public static void setUsername(String aUsername) { + username = aUsername; + } - /** - *

- * Setter for the field connectionString. - *

- * - * @param aConnectionString the connectionString to set - */ - public static void setConnectionString(String aConnectionString) { - connectionString = aConnectionString; - } + /** + *

+ * Setter for the field password. + *

+ * + * @param aPassword the password to set + */ + public static void setPassword(String aPassword) { + password = aPassword; + } + + /** + *

+ * Getter for the field connectionString. + *

+ * + * @return the connectionString + */ + public static String getConnectionString() { + return connectionString; + } + + /** + *

+ * Setter for the field connectionString. + *

+ * + * @param aConnectionString the connectionString to set + */ + public static void setConnectionString(String aConnectionString) { + connectionString = aConnectionString; + } } diff --git a/src/main/java/neqsim/util/database/NeqSimFluidDataBase.java b/src/main/java/neqsim/util/database/NeqSimFluidDataBase.java index ebd2a498b6..83ff08e603 100644 --- a/src/main/java/neqsim/util/database/NeqSimFluidDataBase.java +++ b/src/main/java/neqsim/util/database/NeqSimFluidDataBase.java @@ -5,6 +5,8 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** *

@@ -16,147 +18,127 @@ * neqsimfluiddatabase for storing fluid information */ public class NeqSimFluidDataBase - implements neqsim.util.util.FileSystemSettings, java.io.Serializable { - private static final long serialVersionUID = 1000; + implements neqsim.util.util.FileSystemSettings, java.io.Serializable { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(NeqSimFluidDataBase.class); - static boolean started = false; - protected Connection databaseConnection; - /** Constant useOnlineBase=false */ - public static boolean useOnlineBase = false; - static int numb = 0; - Statement statement = null; + static boolean started = false; + protected Connection databaseConnection; + /** Constant useOnlineBase=false. */ + public static boolean useOnlineBase = false; + static int numb = 0; + Statement statement = null; - /** - *

- * Constructor for NeqSimFluidDataBase. - *

- */ - public NeqSimFluidDataBase() { - try { - if (useOnlineBase) { - // Class.forName("org.gjt.mm.mysql.Driver"); - } else { - numb++; - if (numb == 1) { - Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); - } - } - databaseConnection = this.openConnection("FluidDatabase"); - statement = databaseConnection.createStatement(); - } catch (Exception e) { - System.out.println("error in FluidDatabase " + e.toString()); - System.out.println("The database must be rgistered on the local DBMS to work."); + /** + *

+ * Constructor for NeqSimFluidDataBase. + *

+ */ + public NeqSimFluidDataBase() { + try { + if (useOnlineBase) { + // Class.forName("org.gjt.mm.mysql.Driver"); + } else { + numb++; + if (numb == 1) { + Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } + } + databaseConnection = this.openConnection("FluidDatabase"); + statement = databaseConnection.createStatement(); + } catch (Exception ex) { + logger.error("error in FluidDatabase ", ex); + logger.error("The database must be rgistered on the local DBMS to work."); } + } - /** - *

- * openConnection. - *

- * - * @param database a {@link java.lang.String} object - * @return a Connection object - * @throws java.sql.SQLException if any. - * @throws java.lang.ClassNotFoundException if any. - */ - public Connection openConnection(String database) throws SQLException, ClassNotFoundException { - if (useOnlineBase) { - Class.forName("org.gjt.mm.mysql.Driver"); - return DriverManager.getConnection("jdbc:mysql:" + database); - } else { - String dir = ""; - if (System.getProperty("NeqSim.home") == null) { - dir = neqsim.util.util.FileSystemSettings.root + "\\java\\neqsim"; - } else { - dir = System.getProperty("NeqSim.home"); - } - return DriverManager - .getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" + dir - + "\\data\\" + database); - // return DriverManager.getConnection("jdbc:odbc:FluidDatabase"); - } - } - - /** - *

- * getConnection. - *

- * - * @return a Connection object - */ - public Connection getConnection() { - return databaseConnection; + /** + *

+ * openConnection. + *

+ * + * @param database a {@link java.lang.String} object + * @return a Connection object + * @throws java.sql.SQLException if any. + * @throws java.lang.ClassNotFoundException if any. + */ + public Connection openConnection(String database) throws SQLException, ClassNotFoundException { + if (useOnlineBase) { + Class.forName("org.gjt.mm.mysql.Driver"); + return DriverManager.getConnection("jdbc:mysql:" + database); + } else { + String dir = ""; + if (System.getProperty("NeqSim.home") == null) { + dir = neqsim.util.util.FileSystemSettings.root + "\\java\\neqsim"; + } else { + dir = System.getProperty("NeqSim.home"); + } + return DriverManager.getConnection( + "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" + dir + "\\data\\" + database); + // return DriverManager.getConnection("jdbc:odbc:FluidDatabase"); } + } - /** - *

- * getResultSet. - *

- * - * @param database a {@link java.lang.String} object - * @param sqlString a {@link java.lang.String} object - * @return a ResultSet object - */ - public ResultSet getResultSet(String database, String sqlString) { - try { - ResultSet result = statement.executeQuery(sqlString); - return result; - } catch (Exception e) { - System.out.println("error in FluidDatabase " + e.toString()); - System.out.println("The database must be rgistered on the local DBMS to work."); - } - return null; - } + /** + *

+ * getConnection. + *

+ * + * @return a Connection object + */ + public Connection getConnection() { + return databaseConnection; + } - /** - *

- * getResultSet. - *

- * - * @param sqlString a {@link java.lang.String} object - * @return a ResultSet object - */ - public ResultSet getResultSet(String sqlString) { - return this.getResultSet("FluidDatabase", sqlString); + /** + *

+ * getResultSet. + *

+ * + * @param database a {@link java.lang.String} object + * @param sqlString a {@link java.lang.String} object + * @return a ResultSet object + */ + public ResultSet getResultSet(String database, String sqlString) { + try { + ResultSet result = statement.executeQuery(sqlString); + return result; + } catch (Exception ex) { + logger.error("error in FluidDatabase ", ex); + logger.error("The database must be rgistered on the local DBMS to work."); } + return null; + } - /** - *

- * execute. - *

- * - * @param sqlString a {@link java.lang.String} object - */ - public void execute(String sqlString) { - try { - if (databaseConnection == null) { - databaseConnection = this.openConnection("FluidDatabase"); - statement = databaseConnection.createStatement(); - } - statement.execute(sqlString); - } catch (Exception e) { - System.out.println("error in FluidDatabase " + e.toString()); - System.out.println("The database must be rgistered on the local DBMS to work."); - } - } + /** + *

+ * getResultSet. + *

+ * + * @param sqlString a {@link java.lang.String} object + * @return a ResultSet object + */ + public ResultSet getResultSet(String sqlString) { + return this.getResultSet("FluidDatabase", sqlString); + } - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - NeqSimFluidDataBase database = new NeqSimFluidDataBase(); - ResultSet dataSet = - database.getResultSet("FluidDatabase", "SELECT * FROM comp where name='water'"); - try { - dataSet.next(); - System.out.println("dataset " + dataSet.getString("molarmass")); - } catch (Exception e) { - System.out.println("failed " + e.toString()); - } - System.out.println("ok"); + /** + *

+ * execute. + *

+ * + * @param sqlString a {@link java.lang.String} object + */ + public void execute(String sqlString) { + try { + if (databaseConnection == null) { + databaseConnection = this.openConnection("FluidDatabase"); + statement = databaseConnection.createStatement(); + } + statement.execute(sqlString); + } catch (Exception ex) { + logger.error("error in FluidDatabase ", ex); + logger.error("The database must be rgistered on the local DBMS to work."); } + } } diff --git a/src/main/java/neqsim/util/database/NeqSimProcessDesignDataBase.java b/src/main/java/neqsim/util/database/NeqSimProcessDesignDataBase.java new file mode 100644 index 0000000000..00da2647b2 --- /dev/null +++ b/src/main/java/neqsim/util/database/NeqSimProcessDesignDataBase.java @@ -0,0 +1,96 @@ +package neqsim.util.database; + +import java.sql.Connection; +import java.sql.Statement; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + *

+ * NeqSimProcessDesignDataBase class. + *

+ * + * @author Even Solbraa + * @version June 2023 + */ +public class NeqSimProcessDesignDataBase extends NeqSimDataBase { + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(NeqSimProcessDesignDataBase.class); + + /** Constant dataBasePath="". */ + public static String dataBasePath = ""; + + private static boolean createTemporaryTables = false; + + private static String username = "remote"; + private static String password = "remote"; + + // Default databasetype + private static String dataBaseType = "H2fromCSV"; + private static String connectionString = "jdbc:h2:mem:neqsimprocessdesigndatabase"; + /** True if h2 database has been initialized, i.e., populated with tables */ + private static boolean h2IsInitialized = false; + /** True while h2 database is being initialized. */ + private static boolean h2IsInitalizing = false; + // static String dataBaseType = "MSAccessUCanAccess"; + // public static String connectionString = + // "jdbc:ucanaccess://C:/Users/esol/OneDrive - + // Equinor/programming/neqsimdatabase/MSAccess/NeqSimDataBase.mdb;memory=true"; + + private Statement statement = null; + protected Connection databaseConnection = null; + + /** + *

+ * Constructor for NeqSimDataBase. + *

+ */ + public NeqSimProcessDesignDataBase() { + // Fill tables from csv-files if not initialized and not currently being initialized. + if (dataBaseType == "H2fromCSV" && !h2IsInitialized && !h2IsInitalizing) { + initH2DatabaseFromCSVfiles(); + } + setDataBaseType(dataBaseType); + + try { + databaseConnection = this.openConnection(); + statement = databaseConnection.createStatement(); + } catch (Exception ex) { + logger.error("SQLException ", ex); + throw new RuntimeException(ex); + } + } + + /** {@inheritDoc} */ + public static void updateTable(String tableName) { + updateTable(tableName, "designdata/" + tableName + ".csv"); + } + + /** + *

+ * initH2DatabaseFromCSVfiles. + *

+ */ + public static void initH2DatabaseFromCSVfiles() { + h2IsInitalizing = true; + neqsim.util.database.NeqSimProcessDesignDataBase.connectionString = + "jdbc:h2:mem:neqsimprocessdesigndatabase;DB_CLOSE_DELAY=-1"; + neqsim.util.database.NeqSimProcessDesignDataBase.dataBaseType = "H2"; + + try { + updateTable("TORG"); + updateTable("TechnicalRequirements_Process"); + updateTable("TechnicalRequirements_Piping"); + updateTable("TechnicalRequirements_Material"); + updateTable("TechnicalRequirements_Mechanical"); + updateTable("Packing"); + updateTable("MaterialPipeProperties"); + updateTable("MaterialPlateProperties"); + updateTable("Fittings"); + + h2IsInitialized = true; + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } +} diff --git a/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java b/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java deleted file mode 100644 index 230ad96dd7..0000000000 --- a/src/main/java/neqsim/util/database/NeqSimTechnicalDesignDatabase.java +++ /dev/null @@ -1,309 +0,0 @@ -package neqsim.util.database; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -/** - *

- * NeqSimTechnicalDesignDatabase class. - *

- * - * @author Even Solbraa - * @version Dec 2018 - */ -public class NeqSimTechnicalDesignDatabase - implements neqsim.util.util.FileSystemSettings, java.io.Serializable { - /** - *

- * createTemporaryTables. - *

- * - * @return the createTemporaryTables - */ - public boolean createTemporaryTables() { - return createTemporaryTables; - } - - /** - *

- * Setter for the field createTemporaryTables. - *

- * - * @param createTemporaryTables the createTemporaryTables to set - */ - public void setCreateTemporaryTables(boolean createTemporaryTables) { - NeqSimTechnicalDesignDatabase.createTemporaryTables = createTemporaryTables; - } - - private static final long serialVersionUID = 1000; - /** Constant dataBasePath="" */ - public static String dataBasePath = ""; - /** Constant username="" */ - /** Constant password="" */ - /** Constant password="" */ - /** Constant password="" */ - /** Constant password="" */ - /** Constant password="" */ - /** Constant password="" */ - public static String username = "", password = ""; - static Logger logger = LogManager.getLogger(NeqSimTechnicalDesignDatabase.class); - private static boolean createTemporaryTables = false; - - private static String dataBaseType = "MSAccessUCanAccess"; - /** Constant connectionString="jdbc:ucanaccess://C:/Users/esol/OneDriv"{trunked} */ - public static String connectionString = - "jdbc:ucanaccess://C:/Users/esol/OneDrive - Equinor/programming/neqsimdatabase/MSAccess/NeqSimTechnicalDesignData.accdb;memory=true"; - - private Statement statement = null; - protected Connection databaseConnection = null; - - /** - *

- * Constructor for NeqSimTechnicalDesignDatabase. - *

- */ - public NeqSimTechnicalDesignDatabase() { - setDataBaseType(dataBaseType); - - try { - databaseConnection = this.openConnection(); - statement = databaseConnection.createStatement(); - } catch (Exception ex) { - logger.error("SQLException " + ex.getMessage()); - throw new RuntimeException(ex); - } - } - - /** - *

- * openConnection. - *

- * - * @return a Connection object - * @throws java.sql.SQLException if any. - * @throws java.lang.ClassNotFoundException if any. - */ - public Connection openConnection() throws SQLException, ClassNotFoundException { - javax.naming.InitialContext ctx = null; - javax.sql.DataSource ds = null; - - try { - if (dataBaseType.equals("MSAccessUCanAccess")) { - return DriverManager.getConnection(getConnectionString()); - } else if (dataBaseType.equals("mySQL") || dataBaseType.equals("mySQLNTNU") - || dataBaseType.equals("Derby")) { - return DriverManager.getConnection(getConnectionString(), username, password); - } else if (dataBaseType.equals("mySQLNeqSimWeb")) { - ctx = new javax.naming.InitialContext(); - ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/NeqsimDataSource"); - if (ctx != null) { - ctx.close(); - } - return ds.getConnection(); - } else { - return DriverManager.getConnection(getConnectionString(), username, password); - } - } catch (Exception ex) { - logger.error("error loading NeqSimDataBase... " + ex.toString()); - throw new RuntimeException(ex); - } finally { - try { - if (ctx != null) { - ctx.close(); - } - } catch (Exception e) { - logger.error("error", e); - } - } - } - - /** - *

- * getConnection. - *

- * - * @return a Connection object - */ - public Connection getConnection() { - return databaseConnection; - } - - /** - *

- * getResultSet. - *

- * - * @param sqlString a {@link java.lang.String} object - * @return a ResultSet object - */ - public ResultSet getResultSet(String sqlString) { - try { - ResultSet result = getStatement().executeQuery(sqlString); - return result; - } catch (Exception e) { - logger.error("error loading NeqSimbataBase " + e.toString()); - throw new RuntimeException(e); - } - } - - /** - *

- * execute. - *

- * - * @param sqlString a {@link java.lang.String} object - */ - public void execute(String sqlString) { - try { - if (databaseConnection == null) { - databaseConnection = this.openConnection(); - setStatement(databaseConnection.createStatement()); - } - getStatement().execute(sqlString); - } catch (Exception e) { - logger.error("error in NeqSimDataBase " + e.toString(), e); - logger.error("The database must be rgistered on the local DBMS to work."); - throw new RuntimeException(e); - } - } - - /** - *

- * Getter for the field dataBaseType. - *

- * - * @return a {@link java.lang.String} object - */ - public static String getDataBaseType() { - return dataBaseType; - } - - /** - *

- * Setter for the field dataBaseType. - *

- * - * @param aDataBaseType a {@link java.lang.String} object - */ - public static void setDataBaseType(String aDataBaseType) { - setDataBaseType(aDataBaseType, null); - } - - /** - *

- * Setter for the field dataBaseType. - *

- * - * @param aDataBaseType a {@link java.lang.String} object - * @param connectionString a {@link java.lang.String} object - */ - public static void setDataBaseType(String aDataBaseType, String connectionString) { - dataBaseType = aDataBaseType; - - if (connectionString != null) { - NeqSimTechnicalDesignDatabase.connectionString = connectionString; - } - - try { - if (dataBaseType.equals("MSAccess")) { - Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getDeclaredConstructor() - .newInstance(); - } else if (dataBaseType.equals("H2")) { - Class.forName("org.h2.Driver"); - } else if (dataBaseType.equals("H2RT")) { - Class.forName("org.h2.Driver"); - } else if (dataBaseType.equals("MSAccessUCanAccess")) { - Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); - } else if (dataBaseType.equals("mySQL")) { - Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); - } else if (dataBaseType.equals("mySQLNTNU")) { - Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); - } else if (dataBaseType.equals("Derby")) { - Class.forName("org.apache.derby.jdbc.EmbeddedDriver").getDeclaredConstructor() - .newInstance(); - } else if (dataBaseType.equals("oracle")) { - Class.forName("oracle.jdbc.driver.OracleDriver").getDeclaredConstructor() - .newInstance(); - } else if (dataBaseType.equals("oracleST")) { - Class.forName("oracle.jdbc.driver.OracleDriver").getDeclaredConstructor() - .newInstance(); - } else { - Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); - } - } catch (Exception ex) { - logger.error("error loading database driver.. " + ex.toString()); - throw new RuntimeException(ex); - } - } - - /** - *

- * Getter for the field statement. - *

- * - * @return a Statement object - */ - public Statement getStatement() { - return statement; - } - - /** - *

- * Setter for the field statement. - *

- * - * @param statement a Statement object - */ - public void setStatement(Statement statement) { - this.statement = statement; - } - - /** - *

- * Setter for the field username. - *

- * - * @param aUsername the username to set - */ - public static void setUsername(String aUsername) { - username = aUsername; - } - - /** - *

- * Setter for the field password. - *

- * - * @param aPassword the password to set - */ - public static void setPassword(String aPassword) { - password = aPassword; - } - - /** - *

- * Getter for the field connectionString. - *

- * - * @return the connectionString - */ - public static String getConnectionString() { - return connectionString; - } - - /** - *

- * Setter for the field connectionString. - *

- * - * @param aConnectionString the connectionString to set - */ - public static void setConnectionString(String aConnectionString) { - connectionString = aConnectionString; - } -} diff --git a/src/main/java/neqsim/util/exception/InvalidInputException.java b/src/main/java/neqsim/util/exception/InvalidInputException.java index 184ee56287..9be4a15823 100644 --- a/src/main/java/neqsim/util/exception/InvalidInputException.java +++ b/src/main/java/neqsim/util/exception/InvalidInputException.java @@ -9,62 +9,65 @@ * @version $Id: $Id */ public class InvalidInputException extends neqsim.util.exception.ThermoException { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - * Constructs an InvalidInputException with the specified detail message. - * - * @param msg the detail message. - */ - @Deprecated - public InvalidInputException(String msg) { - super(msg); - } + /** + * Constructs an InvalidInputException with the specified detail message. + * + * @param msg the detail message. + */ + @Deprecated + public InvalidInputException(String msg) { + super(msg); + } - /** - * Constructs an InvalidInputException with a default message. - * - * @param className Class that exception is raised from - * @param methodName Method that exception is raised from - * @param inputName Name of invalid input - */ - public InvalidInputException(String className, String methodName, String inputName) { - super(className, methodName, "Input " + inputName + " was invalid."); - } + /** + * Constructs an InvalidInputException with a default message like: + * + * Input " + inputName + " was invalid. + * + * @param className Class that exception is raised from + * @param methodName Method that exception is raised from + * @param inputName Name of invalid input + */ + public InvalidInputException(String className, String methodName, String inputName) { + super(className, methodName, "Input " + inputName + " was invalid."); + } - /** - * Constructs an InvalidInputException with the specified detail message. - * - * @param className Class that exception is raised from - * @param methodName Method that exception is raised from - * @param inputName Name of invalid input - * @param msg error message detailing input problem - */ - public InvalidInputException(String className, String methodName, String inputName, - String msg) { - super(className, methodName, "Input " + inputName + " " + msg); - } + /** + * Constructs an InvalidInputException with a message like: + * + * "Input " + inputName + " " + msg + * + * @param className Class that exception is raised from + * @param methodName Method that exception is raised from + * @param inputName Name of invalid input + * @param msg error message detailing input problem + */ + public InvalidInputException(String className, String methodName, String inputName, String msg) { + super(className, methodName, "Input " + inputName + " " + msg); + } - /** - * Constructs an InvalidInputException with a default message. - * - * @param obj Object that exception is raised from - * @param methodName Method that exception is raised from - * @param inputName Name of invalid input - */ - public InvalidInputException(Object obj, String methodName, String inputName) { - this(obj.getClass().getSimpleName(), methodName, inputName); - } + /** + * Constructs an InvalidInputException with a default message. + * + * @param obj Object that exception is raised from + * @param methodName Method that exception is raised from + * @param inputName Name of invalid input + */ + public InvalidInputException(Object obj, String methodName, String inputName) { + this(obj.getClass().getSimpleName(), methodName, inputName); + } - /** - * Constructs an InvalidInputException with a default message. - * - * @param obj Object that exception is raised from - * @param methodName Method that exception is raised from - * @param inputName Name of invalid input - * @param msg error message detailing input problem - */ - public InvalidInputException(Object obj, String methodName, String inputName, String msg) { - this(obj.getClass().getSimpleName(), methodName, inputName, msg); - } + /** + * Constructs an InvalidInputException with a default message. + * + * @param obj Object that exception is raised from + * @param methodName Method that exception is raised from + * @param inputName Name of invalid input + * @param msg error message detailing input problem + */ + public InvalidInputException(Object obj, String methodName, String inputName, String msg) { + this(obj.getClass().getSimpleName(), methodName, inputName, msg); + } } diff --git a/src/main/java/neqsim/util/exception/InvalidOutputException.java b/src/main/java/neqsim/util/exception/InvalidOutputException.java new file mode 100644 index 0000000000..2c6f231f13 --- /dev/null +++ b/src/main/java/neqsim/util/exception/InvalidOutputException.java @@ -0,0 +1,69 @@ +package neqsim.util.exception; + +/** + *

+ * InvalidOutputException class. + *

+ * + * @author Even Solbraa + * @version $Id: $Id + */ +public class InvalidOutputException extends neqsim.util.exception.ThermoException { + private static final long serialVersionUID = 1000; + + /** + * Constructs an InvalidOutputException with the specified detail message. + * + * @param msg the detail message. + */ + @Deprecated + public InvalidOutputException(String msg) { + super(msg); + } + + /** + * Constructs an InvalidOutputException with a default message. + * + * @param className Class that exception is raised from + * @param methodName Method that exception is raised from + * @param outputName Name of invalid output + */ + public InvalidOutputException(String className, String methodName, String outputName) { + super(className, methodName, "output " + outputName + " was invalid."); + } + + /** + * Constructs an InvalidOutputException with the specified detail message. + * + * @param className Class that exception is raised from + * @param methodName Method that exception is raised from + * @param outputName Name of invalid output + * @param msg error message detailing output problem + */ + public InvalidOutputException(String className, String methodName, String outputName, String msg) { + super(className, methodName, "output " + outputName + " " + msg); + } + + /** + * Constructs an InvalidOutputException with a default message. + * + * @param obj Object that exception is raised from + * @param methodName Method that exception is raised from + * @param outputName Name of invalid output + */ + public InvalidOutputException(Object obj, String methodName, String outputName) { + this(obj.getClass().getSimpleName(), methodName, outputName); + } + + /** + * Constructs an InvalidOutputException with a default message. + * + * @param obj Object that exception is raised from + * @param methodName Method that exception is raised from + * @param outputName Name of invalid output + * @param msg error message detailing output problem + */ + public InvalidOutputException(Object obj, String methodName, String outputName, String msg) { + this(obj.getClass().getSimpleName(), methodName, outputName, msg); + } +} diff --git a/src/main/java/neqsim/util/exception/IsNaNException.java b/src/main/java/neqsim/util/exception/IsNaNException.java index 7c018ef911..236ae47500 100644 --- a/src/main/java/neqsim/util/exception/IsNaNException.java +++ b/src/main/java/neqsim/util/exception/IsNaNException.java @@ -9,37 +9,37 @@ * @version $Id: $Id */ public class IsNaNException extends neqsim.util.exception.ThermoException { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - * Constructs an IsNaNException with the specified detail message. - * - * @param msg the detail message. - */ - @Deprecated - public IsNaNException(String msg) { - super(msg); - } + /** + * Constructs an IsNaNException with the specified detail message. + * + * @param msg the detail message. + */ + @Deprecated + public IsNaNException(String msg) { + super(msg); + } - /** - * Constructs an IsNaNException with a detailed message. - * - * @param className Class that exception is raised from - * @param methodName Method that exception is raised from - * @param msg detailed message - */ - public IsNaNException(String className, String methodName, String msg) { - super(className, methodName, "Variable " + msg); - } + /** + * Constructs an IsNaNException with a detailed message. + * + * @param className Class that exception is raised from + * @param methodName Method that exception is raised from + * @param msg detailed message + */ + public IsNaNException(String className, String methodName, String msg) { + super(className, methodName, msg); + } - /** - * Constructs an IsNaNException with a default detail message. - * - * @param obj object that exception is raised from - * @param methodName Method that exception is raised from - * @param param the parameter that is NaN - */ - public IsNaNException(Object obj, String methodName, String param) { - this(obj.getClass().getSimpleName(), methodName, param + " is NaN"); - } + /** + * Constructs an IsNaNException with a default detail message. + * + * @param obj object that exception is raised from + * @param methodName Method that exception is raised from + * @param param the parameter that is NaN + */ + public IsNaNException(Object obj, String methodName, String param) { + this(obj.getClass().getSimpleName(), methodName, "Variable " + param + " is NaN"); + } } diff --git a/src/main/java/neqsim/util/exception/NotImplementedException.java b/src/main/java/neqsim/util/exception/NotImplementedException.java new file mode 100644 index 0000000000..8b6856e9d0 --- /dev/null +++ b/src/main/java/neqsim/util/exception/NotImplementedException.java @@ -0,0 +1,32 @@ +package neqsim.util.exception; + +/** + *

+ * NotImplementedException class. + *

+ * + * @author Åsmund Våge Fannemel + */ +public class NotImplementedException extends neqsim.util.exception.ThermoException { + private static final long serialVersionUID = 1000; + + /** + * Constructs a NotImplementedException with a standard error message. + * + * @param className Class that exception is raised from + * @param methodName Method that exception is raised from + */ + public NotImplementedException(String className, String methodName) { + super(className, methodName, "Function not implemented"); + } + + /** + * Constructs a NotImplementedException with a standard error message. + * + * @param obj object that exception is raised from + * @param methodName method that exception is raised from + */ + public NotImplementedException(Object obj, String methodName) { + this(obj.getClass().getSimpleName(), methodName); + } +} diff --git a/src/main/java/neqsim/util/exception/NotInitializedException.java b/src/main/java/neqsim/util/exception/NotInitializedException.java index 6acc743a5c..7cd6d29e62 100644 --- a/src/main/java/neqsim/util/exception/NotInitializedException.java +++ b/src/main/java/neqsim/util/exception/NotInitializedException.java @@ -38,7 +38,7 @@ public NotInitializedException(String className, String methodName, String param /** * Constructs an NotInitializedException with the specified detail message. - * + * * @param obj Object exception is raised from * @param methodName Method exception is raised from * @param msg Detailed error message @@ -49,7 +49,7 @@ public NotInitializedException(Object obj, String methodName, String msg) { /** * Constructs an NotInitializedException with default detail message. - * + * * @param obj Object exception is raised from * @param methodName Method exception is raised from * @param parameter Parameter not initialized diff --git a/src/main/java/neqsim/util/exception/ThermoException.java b/src/main/java/neqsim/util/exception/ThermoException.java index 5c86bdf164..11a59874fc 100644 --- a/src/main/java/neqsim/util/exception/ThermoException.java +++ b/src/main/java/neqsim/util/exception/ThermoException.java @@ -3,6 +3,7 @@ * * Created on 1. mai 2001, 12:47 */ + package neqsim.util.exception; /** @@ -13,26 +14,26 @@ * @author Even Solbraa * @version $Id: $Id */ -public class ThermoException extends java.lang.Exception { - private static final long serialVersionUID = 1000; +public abstract class ThermoException extends java.lang.Exception { + private static final long serialVersionUID = 1000; - /** - * Constructs an ThermoException with the specified detail message. - * - * @param msg the detail message. - */ - public ThermoException(String msg) { - super(msg); - } + /** + * Constructs an ThermoException with the specified detail message. + * + * @param msg the detail message. + */ + public ThermoException(String msg) { + super(msg); + } - /** - * Constructs an ThermoException with the specified detail message. - * - * @param className Class that exception is raised from - * @param methodName Method that exception is raised from - * @param msg specific error message - */ - public ThermoException(String className, String methodName, String msg) { - super(className + ":" + methodName + " - " + msg); - } + /** + * Constructs an ThermoException with the specified detail message. + * + * @param className Class that exception is raised from + * @param methodName Method that exception is raised from + * @param msg specific error message + */ + public ThermoException(String className, String methodName, String msg) { + super(className + ":" + methodName + " - " + msg); + } } diff --git a/src/main/java/neqsim/util/exception/TooManyIterationsException.java b/src/main/java/neqsim/util/exception/TooManyIterationsException.java index 97191e0374..1452843f8f 100644 --- a/src/main/java/neqsim/util/exception/TooManyIterationsException.java +++ b/src/main/java/neqsim/util/exception/TooManyIterationsException.java @@ -9,27 +9,27 @@ * @version $Id: $Id */ public class TooManyIterationsException extends neqsim.util.exception.ThermoException { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - * Constructs a TooManyIterationsException with a standard error message. - * - * @param className Class that exception is raised from - * @param methodName Method that exception is raised from - * @param maxIterations the maximum number of iterations - */ - public TooManyIterationsException(String className, String methodName, long maxIterations) { - super(className, methodName, "Exceeded maximum iterations " + maxIterations); - } + /** + * Constructs a TooManyIterationsException with a standard error message. + * + * @param className Class that exception is raised from + * @param methodName Method that exception is raised from + * @param maxIterations the maximum number of iterations + */ + public TooManyIterationsException(String className, String methodName, long maxIterations) { + super(className, methodName, "Exceeded maximum iterations " + maxIterations); + } - /** - * Constructs a TooManyIterationsException with a standard error message. - * - * @param obj object that exception is raised from - * @param methodName method that exception is raised from - * @param maxIterations the maximum number of iterations - */ - public TooManyIterationsException(Object obj, String methodName, long maxIterations) { - this(obj.getClass().getSimpleName(), methodName, maxIterations); - } + /** + * Constructs a TooManyIterationsException with a standard error message. + * + * @param obj object that exception is raised from + * @param methodName method that exception is raised from + * @param maxIterations the maximum number of iterations + */ + public TooManyIterationsException(Object obj, String methodName, long maxIterations) { + this(obj.getClass().getSimpleName(), methodName, maxIterations); + } } diff --git a/src/main/java/neqsim/util/generator/PropertyGenerator.java b/src/main/java/neqsim/util/generator/PropertyGenerator.java index 26f60f72e9..e4ba9a856b 100644 --- a/src/main/java/neqsim/util/generator/PropertyGenerator.java +++ b/src/main/java/neqsim/util/generator/PropertyGenerator.java @@ -13,341 +13,338 @@ * @version $Id: $Id */ public class PropertyGenerator { - double[] temperatures, pressures; - SystemInterface fluid = null; - HashMap properties = new HashMap(); + double[] temperatures, pressures; + SystemInterface fluid = null; + HashMap properties = new HashMap(); - /** - *

- * Constructor for PropertyGenerator. - *

- * - * @param fluid a {@link neqsim.thermo.system.SystemInterface} object - * @param temperatures an array of {@link double} objects - * @param pressures an array of {@link double} objects - */ - public PropertyGenerator(SystemInterface fluid, double[] temperatures, double[] pressures) { - this.fluid = fluid; - this.temperatures = temperatures; - this.pressures = pressures; - } + /** + *

+ * Constructor for PropertyGenerator. + *

+ * + * @param fluid a {@link neqsim.thermo.system.SystemInterface} object + * @param temperatures an array of type double + * @param pressures an array of type double + */ + public PropertyGenerator(SystemInterface fluid, double[] temperatures, double[] pressures) { + this.fluid = fluid; + this.temperatures = temperatures; + this.pressures = pressures; + } - /** - *

- * calculate. - *

- * - * @return a {@link java.util.HashMap} object - */ - public HashMap calculate() { - ThermodynamicOperations ops = new ThermodynamicOperations(fluid); - int length = temperatures.length; - double[] molarmass = new double[length]; - double[] molarmassGas = new double[length]; - double[] molarmassOil = new double[length]; - double[] molarmassAqueous = new double[length]; - double[] numberOfPhases = new double[length]; - double[] locpressure = new double[length]; - double[] loctemperature = new double[length]; - double[] molefraction = new double[length]; - double[] molarVolume = new double[length]; - double[] gamma = new double[length]; - double[] thermalconductivity = new double[length]; + /** + *

+ * calculate. + *

+ * + * @return a {@link java.util.HashMap} object + */ + public HashMap calculate() { + ThermodynamicOperations ops = new ThermodynamicOperations(fluid); + int length = temperatures.length; + double[] molarmass = new double[length]; + double[] molarmassGas = new double[length]; + double[] molarmassOil = new double[length]; + double[] molarmassAqueous = new double[length]; + double[] numberOfPhases = new double[length]; + double[] locpressure = new double[length]; + double[] loctemperature = new double[length]; + double[] molefraction = new double[length]; + double[] molarVolume = new double[length]; + double[] gamma = new double[length]; + double[] thermalconductivity = new double[length]; - double[] soundspeedGas = new double[length]; - double[] wtfractionGas = new double[length]; - double[] molefractionGas = new double[length]; - double[] molarvolumeGas = new double[length]; - double[] volumefractionGas = new double[length]; - double[] gammaGas = new double[length]; - double[] joulethomsoncoefficientGas = new double[length]; - double[] thermalconductivitygas = new double[length]; + double[] soundspeedGas = new double[length]; + double[] wtfractionGas = new double[length]; + double[] molefractionGas = new double[length]; + double[] molarvolumeGas = new double[length]; + double[] volumefractionGas = new double[length]; + double[] gammaGas = new double[length]; + double[] joulethomsoncoefficientGas = new double[length]; + double[] thermalconductivitygas = new double[length]; - double[] soundspeedOil = new double[length]; - double[] wtfractionOil = new double[length]; - double[] molefractionOil = new double[length]; - double[] molarvolumeOil = new double[length]; - double[] volumefractionOil = new double[length]; - double[] gammaOil = new double[length]; - double[] joulethomsoncoefficientOil = new double[length]; - double[] thermalconductivityOil = new double[length]; + double[] soundspeedOil = new double[length]; + double[] wtfractionOil = new double[length]; + double[] molefractionOil = new double[length]; + double[] molarvolumeOil = new double[length]; + double[] volumefractionOil = new double[length]; + double[] gammaOil = new double[length]; + double[] joulethomsoncoefficientOil = new double[length]; + double[] thermalconductivityOil = new double[length]; - double[] soundspeedAqueous = new double[length]; - double[] wtfractionAqueous = new double[length]; - double[] molefractionAqueous = new double[length]; - double[] molarvolumeAqueous = new double[length]; - double[] volumefractionAqueous = new double[length]; - double[] gammaAqueous = new double[length]; - double[] joulethomsoncoefficientAqueous = new double[length]; - double[] thermalconductivityAqueous = new double[length]; + double[] soundspeedAqueous = new double[length]; + double[] wtfractionAqueous = new double[length]; + double[] molefractionAqueous = new double[length]; + double[] molarvolumeAqueous = new double[length]; + double[] volumefractionAqueous = new double[length]; + double[] gammaAqueous = new double[length]; + double[] joulethomsoncoefficientAqueous = new double[length]; + double[] thermalconductivityAqueous = new double[length]; - double[] Z = new double[length]; - double[] ZGas = new double[length]; - double[] ZOil = new double[length]; - double[] ZAqueous = new double[length]; + double[] Z = new double[length]; + double[] ZGas = new double[length]; + double[] ZOil = new double[length]; + double[] ZAqueous = new double[length]; - double[] viscosity = new double[length]; - double[] viscosityGas = new double[length]; - double[] viscosityOil = new double[length]; - double[] viscosityAqueous = new double[length]; + double[] viscosity = new double[length]; + double[] viscosityGas = new double[length]; + double[] viscosityOil = new double[length]; + double[] viscosityAqueous = new double[length]; - double[] enthalpy = new double[length]; - double[] enthalpyGas = new double[length]; - double[] enthalpyOil = new double[length]; - double[] enthalpyAqueous = new double[length]; + double[] enthalpy = new double[length]; + double[] enthalpyGas = new double[length]; + double[] enthalpyOil = new double[length]; + double[] enthalpyAqueous = new double[length]; - double[] entropy = new double[length]; - double[] entropyGas = new double[length]; - double[] entropyOil = new double[length]; - double[] entropyAqueous = new double[length]; + double[] entropy = new double[length]; + double[] entropyGas = new double[length]; + double[] entropyOil = new double[length]; + double[] entropyAqueous = new double[length]; - double[] Cp = new double[length]; - double[] CpGas = new double[length]; - double[] CpOil = new double[length]; - double[] CpAqueous = new double[length]; + double[] Cp = new double[length]; + double[] CpGas = new double[length]; + double[] CpOil = new double[length]; + double[] CpAqueous = new double[length]; - double[] Cv = new double[length]; - double[] CvGas = new double[length]; - double[] CvOil = new double[length]; - double[] CvAqueous = new double[length]; + double[] Cv = new double[length]; + double[] CvGas = new double[length]; + double[] CvOil = new double[length]; + double[] CvAqueous = new double[length]; - double[] density = new double[length]; - double[] densityGas = new double[length]; - double[] densityOil = new double[length]; - double[] densityAqueous = new double[length]; + double[] density = new double[length]; + double[] densityGas = new double[length]; + double[] densityOil = new double[length]; + double[] densityAqueous = new double[length]; - for (int i = 0; i < length; i++) { - fluid.setTemperature(temperatures[i]); - fluid.setPressure(pressures[i]); - try { - ops.TPflash(); - fluid.initProperties(); - } catch (Exception e) { - continue; - } - molarmass[i] = fluid.getMolarMass(); - Z[i] = fluid.getZ(); - viscosity[i] = fluid.getViscosity("cP"); - enthalpy[i] = fluid.getEnthalpy("J/mol"); - entropy[i] = fluid.getEnthalpy("J/molK"); - Cp[i] = fluid.getCp("kJ/kgK"); - Cv[i] = fluid.getCp("kJ/kgK"); - density[i] = fluid.getDensity("kg/m3"); - numberOfPhases[i] = fluid.getNumberOfPhases(); - locpressure[i] = fluid.getPressure("Pa"); - loctemperature[i] = fluid.getTemperature("K"); - molefraction[i] = fluid.getMoleFractionsSum(); - molarVolume[i] = 1.0 / fluid.getDensity("mol/m3"); - gamma[i] = fluid.getGamma(); - thermalconductivity[i] = fluid.getThermalConductivity("W/mK"); + for (int i = 0; i < length; i++) { + fluid.setTemperature(temperatures[i]); + fluid.setPressure(pressures[i]); + try { + ops.TPflash(); + fluid.initProperties(); + } catch (Exception ex) { + continue; + } + molarmass[i] = fluid.getMolarMass(); + Z[i] = fluid.getZ(); + viscosity[i] = fluid.getViscosity("cP"); + enthalpy[i] = fluid.getEnthalpy("J/mol"); + entropy[i] = fluid.getEntropy("J/molK"); + Cp[i] = fluid.getCp("kJ/kgK"); + Cv[i] = fluid.getCp("kJ/kgK"); + density[i] = fluid.getDensity("kg/m3"); + numberOfPhases[i] = fluid.getNumberOfPhases(); + locpressure[i] = fluid.getPressure("Pa"); + loctemperature[i] = fluid.getTemperature("K"); + molefraction[i] = fluid.getMoleFractionsSum(); + molarVolume[i] = 1.0 / fluid.getDensity("mol/m3"); + gamma[i] = fluid.getGamma(); + thermalconductivity[i] = fluid.getThermalConductivity("W/mK"); - if (fluid.hasPhaseType("gas")) { - int phasenumb = fluid.getPhaseNumberOfPhase("gas"); - molarmassGas[i] = fluid.getPhase(phasenumb).getMolarMass(); - ZGas[i] = fluid.getPhase(phasenumb).getZ(); - viscosityGas[i] = fluid.getPhase(phasenumb).getViscosity("kg/msec"); - enthalpyGas[i] = fluid.getPhase(phasenumb).getEnthalpy("J/mol"); - entropyGas[i] = fluid.getPhase(phasenumb).getEntropy("J/molK"); - CpGas[i] = fluid.getPhase(phasenumb).getCp("kJ/kgK"); - CvGas[i] = fluid.getPhase(phasenumb).getCv("kJ/kgK"); - densityGas[i] = fluid.getPhase(phasenumb).getDensity("kg/m3"); + if (fluid.hasPhaseType("gas")) { + int phasenumb = fluid.getPhaseNumberOfPhase("gas"); + molarmassGas[i] = fluid.getPhase(phasenumb).getMolarMass(); + ZGas[i] = fluid.getPhase(phasenumb).getZ(); + viscosityGas[i] = fluid.getPhase(phasenumb).getViscosity("kg/msec"); + enthalpyGas[i] = fluid.getPhase(phasenumb).getEnthalpy("J/mol"); + entropyGas[i] = fluid.getPhase(phasenumb).getEntropy("J/molK"); + CpGas[i] = fluid.getPhase(phasenumb).getCp("kJ/kgK"); + CvGas[i] = fluid.getPhase(phasenumb).getCv("kJ/kgK"); + densityGas[i] = fluid.getPhase(phasenumb).getDensity("kg/m3"); - soundspeedGas[i] = fluid.getPhase(phasenumb).getSoundSpeed(); - wtfractionGas[i] = fluid.getWtFraction(phasenumb); - molefractionGas[i] = fluid.getMoleFraction(phasenumb); - molarvolumeGas[i] = 1.0 / fluid.getPhase(phasenumb).getDensity("mol/m3"); - volumefractionGas[i] = fluid.getCorrectedVolumeFraction(phasenumb); - gammaGas[i] = fluid.getPhase(phasenumb).getKappa(); - joulethomsoncoefficientGas[i] = - fluid.getPhase(phasenumb).getJouleThomsonCoefficient() / 1e5; - thermalconductivitygas[i] = - fluid.getPhase(phasenumb).getThermalConductivity("W/mK"); - } else { - molarmassGas[i] = Double.NaN; - ZGas[i] = Double.NaN; - viscosityGas[i] = Double.NaN; - enthalpyGas[i] = Double.NaN; - entropyGas[i] = Double.NaN; - CpGas[i] = Double.NaN; - CvGas[i] = Double.NaN; - densityGas[i] = Double.NaN; + soundspeedGas[i] = fluid.getPhase(phasenumb).getSoundSpeed(); + wtfractionGas[i] = fluid.getWtFraction(phasenumb); + molefractionGas[i] = fluid.getMoleFraction(phasenumb); + molarvolumeGas[i] = 1.0 / fluid.getPhase(phasenumb).getDensity("mol/m3"); + volumefractionGas[i] = fluid.getCorrectedVolumeFraction(phasenumb); + gammaGas[i] = fluid.getPhase(phasenumb).getKappa(); + joulethomsoncoefficientGas[i] = + fluid.getPhase(phasenumb).getJouleThomsonCoefficient() / 1e5; + thermalconductivitygas[i] = fluid.getPhase(phasenumb).getThermalConductivity("W/mK"); + } else { + molarmassGas[i] = Double.NaN; + ZGas[i] = Double.NaN; + viscosityGas[i] = Double.NaN; + enthalpyGas[i] = Double.NaN; + entropyGas[i] = Double.NaN; + CpGas[i] = Double.NaN; + CvGas[i] = Double.NaN; + densityGas[i] = Double.NaN; - soundspeedGas[i] = Double.NaN; - wtfractionGas[i] = Double.NaN; - molefractionGas[i] = Double.NaN; - molarvolumeGas[i] = Double.NaN; - volumefractionGas[i] = Double.NaN; - gammaGas[i] = Double.NaN; - joulethomsoncoefficientGas[i] = Double.NaN; - thermalconductivitygas[i] = Double.NaN; - } - if (fluid.hasPhaseType("oil")) { - int phasenumb = fluid.getPhaseNumberOfPhase("oil"); - molarmassOil[i] = fluid.getPhase(phasenumb).getMolarMass(); - ZOil[i] = fluid.getPhase(phasenumb).getZ(); - viscosityOil[i] = fluid.getPhase(phasenumb).getViscosity("kg/msec"); - enthalpyOil[i] = fluid.getPhase(phasenumb).getEnthalpy("J/mol"); - entropyOil[i] = fluid.getPhase(phasenumb).getEntropy("J/molK"); - CpOil[i] = fluid.getPhase(phasenumb).getCp("kJ/kgK"); - CvOil[i] = fluid.getPhase(phasenumb).getCv("kJ/kgK"); - densityOil[i] = fluid.getPhase(phasenumb).getDensity("kg/m3"); + soundspeedGas[i] = Double.NaN; + wtfractionGas[i] = Double.NaN; + molefractionGas[i] = Double.NaN; + molarvolumeGas[i] = Double.NaN; + volumefractionGas[i] = Double.NaN; + gammaGas[i] = Double.NaN; + joulethomsoncoefficientGas[i] = Double.NaN; + thermalconductivitygas[i] = Double.NaN; + } + if (fluid.hasPhaseType("oil")) { + int phasenumb = fluid.getPhaseNumberOfPhase("oil"); + molarmassOil[i] = fluid.getPhase(phasenumb).getMolarMass(); + ZOil[i] = fluid.getPhase(phasenumb).getZ(); + viscosityOil[i] = fluid.getPhase(phasenumb).getViscosity("kg/msec"); + enthalpyOil[i] = fluid.getPhase(phasenumb).getEnthalpy("J/mol"); + entropyOil[i] = fluid.getPhase(phasenumb).getEntropy("J/molK"); + CpOil[i] = fluid.getPhase(phasenumb).getCp("kJ/kgK"); + CvOil[i] = fluid.getPhase(phasenumb).getCv("kJ/kgK"); + densityOil[i] = fluid.getPhase(phasenumb).getDensity("kg/m3"); - soundspeedOil[i] = fluid.getPhase(phasenumb).getSoundSpeed(); - wtfractionOil[i] = fluid.getWtFraction(phasenumb); - molefractionOil[i] = fluid.getMoleFraction(phasenumb); - molarvolumeOil[i] = 1.0 / fluid.getPhase(phasenumb).getDensity("mol/m3"); - volumefractionOil[i] = fluid.getCorrectedVolumeFraction(phasenumb); - gammaOil[i] = fluid.getPhase(phasenumb).getKappa(); - joulethomsoncoefficientOil[i] = - fluid.getPhase(phasenumb).getJouleThomsonCoefficient() / 1e5; - thermalconductivityOil[i] = - fluid.getPhase(phasenumb).getThermalConductivity("W/mK"); - } else { - molarmassOil[i] = Double.NaN; - ZOil[i] = Double.NaN; - viscosityOil[i] = Double.NaN; - enthalpyOil[i] = Double.NaN; - entropyOil[i] = Double.NaN; - CpOil[i] = Double.NaN; - CvOil[i] = Double.NaN; - densityOil[i] = Double.NaN; + soundspeedOil[i] = fluid.getPhase(phasenumb).getSoundSpeed(); + wtfractionOil[i] = fluid.getWtFraction(phasenumb); + molefractionOil[i] = fluid.getMoleFraction(phasenumb); + molarvolumeOil[i] = 1.0 / fluid.getPhase(phasenumb).getDensity("mol/m3"); + volumefractionOil[i] = fluid.getCorrectedVolumeFraction(phasenumb); + gammaOil[i] = fluid.getPhase(phasenumb).getKappa(); + joulethomsoncoefficientOil[i] = + fluid.getPhase(phasenumb).getJouleThomsonCoefficient() / 1e5; + thermalconductivityOil[i] = fluid.getPhase(phasenumb).getThermalConductivity("W/mK"); + } else { + molarmassOil[i] = Double.NaN; + ZOil[i] = Double.NaN; + viscosityOil[i] = Double.NaN; + enthalpyOil[i] = Double.NaN; + entropyOil[i] = Double.NaN; + CpOil[i] = Double.NaN; + CvOil[i] = Double.NaN; + densityOil[i] = Double.NaN; - soundspeedOil[i] = Double.NaN; - wtfractionOil[i] = Double.NaN; - molefractionOil[i] = Double.NaN; - molarvolumeOil[i] = Double.NaN; - volumefractionOil[i] = Double.NaN; - gammaOil[i] = Double.NaN; - joulethomsoncoefficientOil[i] = Double.NaN; - thermalconductivityOil[i] = Double.NaN; - } - if (fluid.hasPhaseType("aqueous")) { - int phasenumb = fluid.getPhaseNumberOfPhase("aqueous"); - molarmassAqueous[i] = fluid.getPhase(phasenumb).getMolarMass(); - ZAqueous[i] = fluid.getPhase(phasenumb).getZ(); - viscosityAqueous[i] = fluid.getPhase(phasenumb).getViscosity("kg/msec"); - enthalpyAqueous[i] = fluid.getPhase(phasenumb).getEnthalpy("J/mol"); - entropyAqueous[i] = fluid.getPhase(phasenumb).getEntropy("J/molK"); - CpAqueous[i] = fluid.getPhase(phasenumb).getCp("kJ/kgK"); - CvAqueous[i] = fluid.getPhase(phasenumb).getCv("kJ/kgK"); - densityAqueous[i] = fluid.getPhase(phasenumb).getDensity("kg/m3"); + soundspeedOil[i] = Double.NaN; + wtfractionOil[i] = Double.NaN; + molefractionOil[i] = Double.NaN; + molarvolumeOil[i] = Double.NaN; + volumefractionOil[i] = Double.NaN; + gammaOil[i] = Double.NaN; + joulethomsoncoefficientOil[i] = Double.NaN; + thermalconductivityOil[i] = Double.NaN; + } + if (fluid.hasPhaseType("aqueous")) { + int phasenumb = fluid.getPhaseNumberOfPhase("aqueous"); + molarmassAqueous[i] = fluid.getPhase(phasenumb).getMolarMass(); + ZAqueous[i] = fluid.getPhase(phasenumb).getZ(); + viscosityAqueous[i] = fluid.getPhase(phasenumb).getViscosity("kg/msec"); + enthalpyAqueous[i] = fluid.getPhase(phasenumb).getEnthalpy("J/mol"); + entropyAqueous[i] = fluid.getPhase(phasenumb).getEntropy("J/molK"); + CpAqueous[i] = fluid.getPhase(phasenumb).getCp("kJ/kgK"); + CvAqueous[i] = fluid.getPhase(phasenumb).getCv("kJ/kgK"); + densityAqueous[i] = fluid.getPhase(phasenumb).getDensity("kg/m3"); - soundspeedAqueous[i] = fluid.getPhase(phasenumb).getSoundSpeed(); - wtfractionAqueous[i] = fluid.getWtFraction(phasenumb); - molefractionAqueous[i] = fluid.getMoleFraction(phasenumb); - molarvolumeAqueous[i] = 1.0 / fluid.getPhase(phasenumb).getDensity("mol/m3"); - volumefractionAqueous[i] = fluid.getCorrectedVolumeFraction(phasenumb); - gammaAqueous[i] = fluid.getPhase(phasenumb).getKappa(); - joulethomsoncoefficientAqueous[i] = - fluid.getPhase(phasenumb).getJouleThomsonCoefficient() / 1e5; - thermalconductivityAqueous[i] = - fluid.getPhase(phasenumb).getThermalConductivity("W/mK"); - } else { - molarmassAqueous[i] = Double.NaN; - ZAqueous[i] = Double.NaN; - viscosityAqueous[i] = Double.NaN; - enthalpyAqueous[i] = Double.NaN; - entropyAqueous[i] = Double.NaN; - CpAqueous[i] = Double.NaN; - CvAqueous[i] = Double.NaN; - densityAqueous[i] = Double.NaN; - soundspeedAqueous[i] = Double.NaN; - wtfractionAqueous[i] = Double.NaN; - molefractionAqueous[i] = Double.NaN; - molarvolumeAqueous[i] = Double.NaN; - volumefractionAqueous[i] = Double.NaN; - gammaAqueous[i] = Double.NaN; - joulethomsoncoefficientAqueous[i] = Double.NaN; - thermalconductivityAqueous[i] = Double.NaN; - } - } - properties.put("molarmass[kg/mol]", molarmass); - properties.put("molarmass_gas[kg/mol]", molarmassGas); - properties.put("molarmass_oil[kg/mol]", molarmassOil); - properties.put("molarmass_aqueous[kg/mol]", molarmassAqueous); - properties.put("density[kg/m3]", density); - properties.put("Z[-]", Z); - properties.put("numberofphases[-]", numberOfPhases); - properties.put("pressure[Pa]", locpressure); - properties.put("temperature[K]", loctemperature); - properties.put("molefraction[-]", molefraction); - properties.put("molarvolume[m3/mol]", molarVolume); - properties.put("gamma[-]", gamma); - properties.put("enthalpy[J/mol]", enthalpy); - properties.put("entropy[J/molK]", entropy); - properties.put("Cp[J/molK]", Cp); - properties.put("Cv[J/molK]", Cv); - properties.put("thermalconductivity[W/mK]", thermalconductivity); - properties.put("viscosity[kg/msec]", viscosity); + soundspeedAqueous[i] = fluid.getPhase(phasenumb).getSoundSpeed(); + wtfractionAqueous[i] = fluid.getWtFraction(phasenumb); + molefractionAqueous[i] = fluid.getMoleFraction(phasenumb); + molarvolumeAqueous[i] = 1.0 / fluid.getPhase(phasenumb).getDensity("mol/m3"); + volumefractionAqueous[i] = fluid.getCorrectedVolumeFraction(phasenumb); + gammaAqueous[i] = fluid.getPhase(phasenumb).getKappa(); + joulethomsoncoefficientAqueous[i] = + fluid.getPhase(phasenumb).getJouleThomsonCoefficient() / 1e5; + thermalconductivityAqueous[i] = fluid.getPhase(phasenumb).getThermalConductivity("W/mK"); + } else { + molarmassAqueous[i] = Double.NaN; + ZAqueous[i] = Double.NaN; + viscosityAqueous[i] = Double.NaN; + enthalpyAqueous[i] = Double.NaN; + entropyAqueous[i] = Double.NaN; + CpAqueous[i] = Double.NaN; + CvAqueous[i] = Double.NaN; + densityAqueous[i] = Double.NaN; + soundspeedAqueous[i] = Double.NaN; + wtfractionAqueous[i] = Double.NaN; + molefractionAqueous[i] = Double.NaN; + molarvolumeAqueous[i] = Double.NaN; + volumefractionAqueous[i] = Double.NaN; + gammaAqueous[i] = Double.NaN; + joulethomsoncoefficientAqueous[i] = Double.NaN; + thermalconductivityAqueous[i] = Double.NaN; + } + } + properties.put("molarmass[kg/mol]", molarmass); + properties.put("molarmass_gas[kg/mol]", molarmassGas); + properties.put("molarmass_oil[kg/mol]", molarmassOil); + properties.put("molarmass_aqueous[kg/mol]", molarmassAqueous); + properties.put("density[kg/m3]", density); + properties.put("Z[-]", Z); + properties.put("numberofphases[-]", numberOfPhases); + properties.put("pressure[Pa]", locpressure); + properties.put("temperature[K]", loctemperature); + properties.put("molefraction[-]", molefraction); + properties.put("molarvolume[m3/mol]", molarVolume); + properties.put("gamma[-]", gamma); + properties.put("enthalpy[J/mol]", enthalpy); + properties.put("entropy[J/molK]", entropy); + properties.put("Cp[J/molK]", Cp); + properties.put("Cv[J/molK]", Cv); + properties.put("thermalconductivity[W/mK]", thermalconductivity); + properties.put("viscosity[kg/msec]", viscosity); - properties.put("density_gas[kg/m3]", densityGas); - properties.put("Z_gas[-]", ZGas); - properties.put("soundspeed_gas[m/sec]", soundspeedGas); - properties.put("wtfraction_gas[-]", wtfractionGas); - properties.put("molefraction_gas[-]", molefractionGas); - properties.put("molarvolume_gas[m3/mol]", molarvolumeGas); - properties.put("volumefraction_gas[-]", volumefractionGas); - properties.put("gamma_gas[-]", gammaGas); - properties.put("joulethomsoncoefficient_gas[K/Pa]", joulethomsoncoefficientGas); - properties.put("enthalpy_gas[J/mol]", enthalpyGas); - properties.put("entropy_gas[J/molK]", entropyGas); - properties.put("Cp_gas[J/molK]", CpGas); - properties.put("Cv_gas[J/molK]", CvGas); - properties.put("thermalconductivity_gas[W/mK]", thermalconductivitygas); - properties.put("viscosity_gas[kg/msec]", viscosityGas); + properties.put("density_gas[kg/m3]", densityGas); + properties.put("Z_gas[-]", ZGas); + properties.put("soundspeed_gas[m/sec]", soundspeedGas); + properties.put("wtfraction_gas[-]", wtfractionGas); + properties.put("molefraction_gas[-]", molefractionGas); + properties.put("molarvolume_gas[m3/mol]", molarvolumeGas); + properties.put("volumefraction_gas[-]", volumefractionGas); + properties.put("gamma_gas[-]", gammaGas); + properties.put("joulethomsoncoefficient_gas[K/Pa]", joulethomsoncoefficientGas); + properties.put("enthalpy_gas[J/mol]", enthalpyGas); + properties.put("entropy_gas[J/molK]", entropyGas); + properties.put("Cp_gas[J/molK]", CpGas); + properties.put("Cv_gas[J/molK]", CvGas); + properties.put("thermalconductivity_gas[W/mK]", thermalconductivitygas); + properties.put("viscosity_gas[kg/msec]", viscosityGas); - properties.put("density_oil[kg/m3]", densityOil); - properties.put("Z_oil[-]", ZOil); - properties.put("soundspeed_oil[m/sec]", soundspeedOil); - properties.put("wtfraction_oil[-]", wtfractionOil); - properties.put("molefraction_oil[-]", molefractionOil); - properties.put("molarvolume_oil[m3/mol]", molarvolumeOil); - properties.put("volumefraction_oil[-]", volumefractionOil); - properties.put("gamma_oil[-]", gammaOil); - properties.put("joulethomsoncoefficient_oil[K/Pa]", joulethomsoncoefficientOil); - properties.put("enthalpy_oil[J/mol]", enthalpyOil); - properties.put("entropy_oil[J/molK]", entropyOil); - properties.put("Cp_oil[J/molK]", CpOil); - properties.put("Cv_oil[J/molK]", CvOil); - properties.put("thermalconductivity_oil[W/mK]", thermalconductivityOil); - properties.put("viscosity_oil[kg/msec]", viscosityOil); + properties.put("density_oil[kg/m3]", densityOil); + properties.put("Z_oil[-]", ZOil); + properties.put("soundspeed_oil[m/sec]", soundspeedOil); + properties.put("wtfraction_oil[-]", wtfractionOil); + properties.put("molefraction_oil[-]", molefractionOil); + properties.put("molarvolume_oil[m3/mol]", molarvolumeOil); + properties.put("volumefraction_oil[-]", volumefractionOil); + properties.put("gamma_oil[-]", gammaOil); + properties.put("joulethomsoncoefficient_oil[K/Pa]", joulethomsoncoefficientOil); + properties.put("enthalpy_oil[J/mol]", enthalpyOil); + properties.put("entropy_oil[J/molK]", entropyOil); + properties.put("Cp_oil[J/molK]", CpOil); + properties.put("Cv_oil[J/molK]", CvOil); + properties.put("thermalconductivity_oil[W/mK]", thermalconductivityOil); + properties.put("viscosity_oil[kg/msec]", viscosityOil); - properties.put("density_aqueous[kg/m3]", densityAqueous); - properties.put("Z_aqueous[-]", ZAqueous); - properties.put("soundspeed_aqueous[m/sec]", soundspeedAqueous); - properties.put("wtfraction_aqueous[-]", wtfractionAqueous); - properties.put("molefraction_aqueous[-]", molefractionAqueous); - properties.put("molarvolume_aqueous[m3/mol]", molarvolumeAqueous); - properties.put("volumefraction_aqueous[-]", volumefractionAqueous); - properties.put("gamma_aqueous[-]", gammaAqueous); - properties.put("enthalpy_aqueous[J/mol]", enthalpyAqueous); - properties.put("entropy_aqueous[J/molK]", entropyAqueous); - properties.put("Cp_aqueous[J/molK]", CpAqueous); - properties.put("Cv_aqueous[J/molK]", CvAqueous); - properties.put("joulethomsoncoefficient_aqueous[K/Pa]", joulethomsoncoefficientAqueous); - properties.put("thermalconductivity_aqueous[W/mK]", thermalconductivityAqueous); - properties.put("viscosity_aqueous[kg/msec]", viscosityAqueous); + properties.put("density_aqueous[kg/m3]", densityAqueous); + properties.put("Z_aqueous[-]", ZAqueous); + properties.put("soundspeed_aqueous[m/sec]", soundspeedAqueous); + properties.put("wtfraction_aqueous[-]", wtfractionAqueous); + properties.put("molefraction_aqueous[-]", molefractionAqueous); + properties.put("molarvolume_aqueous[m3/mol]", molarvolumeAqueous); + properties.put("volumefraction_aqueous[-]", volumefractionAqueous); + properties.put("gamma_aqueous[-]", gammaAqueous); + properties.put("enthalpy_aqueous[J/mol]", enthalpyAqueous); + properties.put("entropy_aqueous[J/molK]", entropyAqueous); + properties.put("Cp_aqueous[J/molK]", CpAqueous); + properties.put("Cv_aqueous[J/molK]", CvAqueous); + properties.put("joulethomsoncoefficient_aqueous[K/Pa]", joulethomsoncoefficientAqueous); + properties.put("thermalconductivity_aqueous[W/mK]", thermalconductivityAqueous); + properties.put("viscosity_aqueous[kg/msec]", viscosityAqueous); - return properties; - } + return properties; + } - /* - * public void test(Dataset teenagersDF){ SparkSession spark = SparkSession .builder() - * .appName("Java Spark SQL basic example") .config("spark.some.config.option", "some-value") - * .getOrCreate(); // Dataset df = - * spark.read().json("examples/src/main/resources/people.json"); Dataset df = teenagersDF; - * // Displays the content of the DataFrame to stdout df.show(); } - */ + /* + * public void test(Dataset teenagersDF){ SparkSession spark = SparkSession .builder() + * .appName("Java Spark SQL basic example") .config("spark.some.config.option", "some-value") + * .getOrCreate(); // Dataset df = + * spark.read().json("examples/src/main/resources/people.json"); Dataset df = teenagersDF; // + * Displays the content of the DataFrame to stdout df.show(); } + */ - /** - *

- * getValue. - *

- * - * @param propertyName a {@link java.lang.String} object - * @return a double - */ - public double getValue(String propertyName) { - return 0.0; - } + /** + *

+ * getValue. + *

+ * + * @param propertyName a {@link java.lang.String} object + * @return a double + */ + public double getValue(String propertyName) { + return 0.0; + } } diff --git a/src/main/java/neqsim/util/serialization/SerializationManager.java b/src/main/java/neqsim/util/serialization/SerializationManager.java index 2e1320a2d4..b2e3d8edc5 100644 --- a/src/main/java/neqsim/util/serialization/SerializationManager.java +++ b/src/main/java/neqsim/util/serialization/SerializationManager.java @@ -3,6 +3,7 @@ * * Created on 27. desember 2002, 00:10 */ + package neqsim.util.serialization; import java.io.FileInputStream; @@ -19,38 +20,41 @@ * @version $Id: $Id */ public class SerializationManager { - public SerializationManager() {} + /** + *

Constructor for SerializationManager.

+ */ + public SerializationManager() {} - /** - *

- * save. - *

- * - * @param obj a {@link java.lang.Object} object - * @param name a {@link java.lang.String} object - */ - public static void save(Object obj, String name) { - try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(name))) { - out.writeObject(obj); - } catch (Exception e) { - System.out.println(e.toString()); - } + /** + *

+ * save. + *

+ * + * @param obj a {@link java.lang.Object} object + * @param name a {@link java.lang.String} object + */ + public static void save(Object obj, String name) { + try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(name))) { + out.writeObject(obj); + } catch (Exception ex) { + System.out.println(ex.toString()); } + } - /** - *

- * open. - *

- * - * @param name a {@link java.lang.String} object - * @return a {@link java.lang.Object} object - */ - public static Object open(String name) { - try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(name))) { - return in.readObject(); - } catch (Exception e) { - System.out.println(e.toString()); - } - return null; + /** + *

+ * open. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link java.lang.Object} object + */ + public static Object open(String name) { + try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(name))) { + return in.readObject(); + } catch (Exception ex) { + System.out.println(ex.toString()); } + return null; + } } diff --git a/src/main/java/neqsim/util/unit/BaseUnit.java b/src/main/java/neqsim/util/unit/BaseUnit.java index 65f31d4faa..7407e5963a 100644 --- a/src/main/java/neqsim/util/unit/BaseUnit.java +++ b/src/main/java/neqsim/util/unit/BaseUnit.java @@ -8,47 +8,48 @@ * @author esol * @version $Id: $Id */ -public class BaseUnit implements Unit, neqsim.thermo.ThermodynamicConstantsInterface { - private static final long serialVersionUID = 1000; - - protected double SIvalue = 0.0, invalue = 0.0, factor = 1.0; - protected String inunit = null; - - /** - *

- * Constructor for BaseUnit. - *

- */ - public BaseUnit() {} - - /** - *

- * Constructor for BaseUnit. - *

- * - * @param value a double - * @param name a {@link java.lang.String} object - */ - public BaseUnit(double value, String name) { - this.invalue = value; - this.inunit = name; - } - - /** {@inheritDoc} */ - @Override - public double getSIvalue() { - return SIvalue; - } - - /** {@inheritDoc} */ - @Override - public double getValue(String fromunit) { - return 0.0; - } - - /** {@inheritDoc} */ - @Override - public double getValue(double val, String fromunit, String tounit) { - return 0.0; - } +public abstract class BaseUnit implements Unit, neqsim.thermo.ThermodynamicConstantsInterface { + private static final long serialVersionUID = 1000; + + /** Process value in SI units */ + protected double SIvalue = 0.0; + + /** Process value in given unit */ + protected double invalue = 0.0; + /** Unit of process value */ + protected String inunit = null; + + /** Conversion factor */ + protected double factor = 1.0; + + /** + *

+ * Constructor for BaseUnit. + *

+ * + * @param value a double + * @param name a {@link java.lang.String} object + */ + public BaseUnit(double value, String name) { + this.invalue = value; + this.inunit = name; + } + + /** {@inheritDoc} */ + @Override + public double getSIvalue() { + return SIvalue; + } + + /** {@inheritDoc} */ + @Override + public double getValue(double val, String fromunit, String tounit) { + throw new UnsupportedOperationException("Unimplemented method 'getValue'"); + } + + /** {@inheritDoc} */ + @Override + public double getValue(String fromunit) { + throw new UnsupportedOperationException("Unimplemented method 'getValue'"); + } } diff --git a/src/main/java/neqsim/util/unit/LengthUnit.java b/src/main/java/neqsim/util/unit/LengthUnit.java index 66906aa00a..867650ab9b 100644 --- a/src/main/java/neqsim/util/unit/LengthUnit.java +++ b/src/main/java/neqsim/util/unit/LengthUnit.java @@ -3,6 +3,7 @@ * * Created on 25. januar 2002, 20:23 */ + package neqsim.util.unit; /** @@ -14,12 +15,17 @@ * @version $Id: $Id */ public class LengthUnit extends neqsim.util.unit.BaseUnit { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for LengthUnit. - *

- */ - public LengthUnit() {} + /** + *

+ * Constructor for LengthUnit. + *

+ * + * @param value Numeric value + * @param name Name of unit + */ + public LengthUnit(double value, String name) { + super(value, name); + } } diff --git a/src/main/java/neqsim/util/unit/NeqSimUnitSet.java b/src/main/java/neqsim/util/unit/NeqSimUnitSet.java index dd0531045a..aa050d6e09 100644 --- a/src/main/java/neqsim/util/unit/NeqSimUnitSet.java +++ b/src/main/java/neqsim/util/unit/NeqSimUnitSet.java @@ -9,96 +9,96 @@ * @version $Id: $Id */ public class NeqSimUnitSet { - /** - *

- * Getter for the field componentConcentrationUnit. - *

- * - * @return the componentConcentrationUnit - */ - public String getComponentConcentrationUnit() { - return componentConcentrationUnit; - } + private String temperatureUnit = "K"; - /** - *

- * Setter for the field componentConcentrationUnit. - *

- * - * @param componentConcentrationUnit the componentConcentrationUnit to set - */ - public void setComponentConcentrationUnit(String componentConcentrationUnit) { - this.componentConcentrationUnit = componentConcentrationUnit; - } + private String pressureUnit = "bara"; - /** - *

- * Getter for the field flowRateUnit. - *

- * - * @return the flowRateUnit - */ - public String getFlowRateUnit() { - return flowRateUnit; - } + private String flowRateUnit = "mol/sec"; - /** - *

- * Setter for the field flowRateUnit. - *

- * - * @param flowRateUnit the flowRateUnit to set - */ - public void setFlowRateUnit(String flowRateUnit) { - this.flowRateUnit = flowRateUnit; - } + private String componentConcentrationUnit = "molefraction"; - /** - *

- * Getter for the field pressureUnit. - *

- * - * @return the pressureUnit - */ - public String getPressureUnit() { - return pressureUnit; - } + /** + *

+ * Getter for the field componentConcentrationUnit. + *

+ * + * @return the componentConcentrationUnit + */ + public String getComponentConcentrationUnit() { + return componentConcentrationUnit; + } - /** - *

- * Setter for the field pressureUnit. - *

- * - * @param pressureUnit the pressureUnit to set - */ - public void setPressureUnit(String pressureUnit) { - this.pressureUnit = pressureUnit; - } + /** + *

+ * Getter for the field flowRateUnit. + *

+ * + * @return the flowRateUnit + */ + public String getFlowRateUnit() { + return flowRateUnit; + } - /** - *

- * Getter for the field temperatureUnit. - *

- * - * @return the temperatureUnit - */ - public String getTemperatureUnit() { - return temperatureUnit; - } + /** + *

+ * Getter for the field pressureUnit. + *

+ * + * @return the pressureUnit + */ + public String getPressureUnit() { + return pressureUnit; + } - /** - *

- * Setter for the field temperatureUnit. - *

- * - * @param temperatureUnit the temperatureUnit to set - */ - public void setTemperatureUnit(String temperatureUnit) { - this.temperatureUnit = temperatureUnit; - } + /** + *

+ * Getter for the field temperatureUnit. + *

+ * + * @return the temperatureUnit + */ + public String getTemperatureUnit() { + return temperatureUnit; + } - private String temperatureUnit = "K"; - private String pressureUnit = "bara"; - private String flowRateUnit = "mol/sec"; - private String componentConcentrationUnit = "molefraction"; + /** + *

+ * Setter for the field componentConcentrationUnit. + *

+ * + * @param componentConcentrationUnit the componentConcentrationUnit to set + */ + public void setComponentConcentrationUnit(String componentConcentrationUnit) { + this.componentConcentrationUnit = componentConcentrationUnit; + } + /** + *

+ * Setter for the field flowRateUnit. + *

+ * + * @param flowRateUnit the flowRateUnit to set + */ + public void setFlowRateUnit(String flowRateUnit) { + this.flowRateUnit = flowRateUnit; + } + /** + *

+ * Setter for the field pressureUnit. + *

+ * + * @param pressureUnit the pressureUnit to set + */ + public void setPressureUnit(String pressureUnit) { + this.pressureUnit = pressureUnit; + } + /** + *

+ * Setter for the field temperatureUnit. + *

+ * + * @param temperatureUnit the temperatureUnit to set + */ + public void setTemperatureUnit(String temperatureUnit) { + this.temperatureUnit = temperatureUnit; + } } diff --git a/src/main/java/neqsim/util/unit/PressureUnit.java b/src/main/java/neqsim/util/unit/PressureUnit.java index 54ce5c4737..5d8769fb92 100644 --- a/src/main/java/neqsim/util/unit/PressureUnit.java +++ b/src/main/java/neqsim/util/unit/PressureUnit.java @@ -1,5 +1,8 @@ package neqsim.util.unit; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.util.exception.InvalidInputException; + /** *

* PressureUnit class. @@ -9,58 +12,96 @@ * @version $Id: $Id */ public class PressureUnit extends neqsim.util.unit.BaseUnit { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for PressureUnit. - *

- * - * @param value a double - * @param name a {@link java.lang.String} object - */ - public PressureUnit(double value, String name) { - super(value, name); - } + /** + *

+ * Constructor for PressureUnit. + *

+ * + * @param value Pressure value + * @param unit Engineering unit of value + */ + public PressureUnit(double value, String unit) { + super(value, unit); + } - /** {@inheritDoc} */ - @Override - public double getValue(double val, String fromunit, String tounit) { - invalue = val; - return getConversionFactor(fromunit) / getConversionFactor(tounit) * invalue; + /** + *

+ * getConversionFactor. + *

+ * + * @param name a {@link java.lang.String} object + * @return a double + */ + public double getConversionFactor(String name) { + double conversionFactor = 1.0; + switch (name) { + case "bara": + conversionFactor = 1.0; + break; + case "bar": + conversionFactor = 1.0; + break; + case "barg": + conversionFactor = 1.0; + break; + case "psi": + conversionFactor = 0.0689475729317831; + break; + case "psia": + conversionFactor = 0.0689475729317831; + break; + case "psig": + conversionFactor = 0.0689475729317831; + break; + case "Pa": + conversionFactor = 1.0e-5; + break; + case "kPa": + conversionFactor = 1.0e-2; + break; + case "MPa": + conversionFactor = 10.0; + break; + case "atm": + conversionFactor = 1.0; + break; + default: + throw new RuntimeException( + new InvalidInputException(this, "getConversionFactor", name, "unit not supproted")); } - /** {@inheritDoc} */ - @Override - public double getValue(String tounit) { - if (tounit.equals("barg")) { - return (getConversionFactor(inunit) / getConversionFactor("bara")) * invalue - 1.01325; - } else { - return getConversionFactor(inunit) / getConversionFactor(tounit) * invalue; - } - } + return conversionFactor; + } + + /** {@inheritDoc} */ + @Override + public double getValue(double val, String fromunit, String tounit) { + invalue = val; + return getConversionFactor(fromunit) / getConversionFactor(tounit) * invalue; + } - /** - *

- * getConversionFactor. - *

- * - * @param name a {@link java.lang.String} object - * @return a double - */ - public double getConversionFactor(String name) { - double conversionFactor = 1.0; - switch (name) { - case "bara": - conversionFactor = 1.0; - break; - case "Pa": - conversionFactor = 1.0e-5; - break; - case "MPa": - conversionFactor = 10.0; - break; - } - return conversionFactor; + /** {@inheritDoc} */ + @Override + public double getValue(String tounit) { + if (tounit.equals("barg")) { + return (getConversionFactor(inunit) / getConversionFactor("bara")) * invalue + - ThermodynamicConstantsInterface.referencePressure; + } else if (tounit.equals("psig")) { + return (getConversionFactor(inunit) / getConversionFactor("bara")) * invalue * 14.503773773 + - 14.7; + } else if (inunit.equals("barg")) { + return (getConversionFactor(inunit) / getConversionFactor("bara")) * invalue + + ThermodynamicConstantsInterface.referencePressure; + } else if (tounit.equals("atm")) { + return (getConversionFactor(inunit) / getConversionFactor("bara")) * invalue + / ThermodynamicConstantsInterface.referencePressure; + } else if (inunit.equals("atm")) { + return (getConversionFactor(inunit) / getConversionFactor("bara")) * invalue + * ThermodynamicConstantsInterface.referencePressure; + } else { + return getConversionFactor(inunit) / getConversionFactor(tounit) * invalue; } + } } diff --git a/src/main/java/neqsim/util/unit/RateUnit.java b/src/main/java/neqsim/util/unit/RateUnit.java index f12cb342ad..88da94593c 100644 --- a/src/main/java/neqsim/util/unit/RateUnit.java +++ b/src/main/java/neqsim/util/unit/RateUnit.java @@ -3,11 +3,13 @@ * * Created on 25. januar 2002, 20:22 */ + package neqsim.util.unit; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.util.exception.InvalidInputException; /** *

@@ -18,97 +20,108 @@ * @version $Id: $Id */ public class RateUnit extends neqsim.util.unit.BaseUnit { - private static final long serialVersionUID = 1000; - static Logger logger = LogManager.getLogger(RateUnit.class); + private static final long serialVersionUID = 1000; + static Logger logger = LogManager.getLogger(RateUnit.class); - double molarmass = 0.0, stddens = 0.0, boilp = 0.0; + double molarmass = 0.0; + double stddens = 0.0; + double boilp = 0.0; - /** - *

- * Constructor for RateUnit. - *

- * - * @param value a double - * @param name a {@link java.lang.String} object - * @param molarmass a double - * @param stddens a double - * @param boilp a double - */ - public RateUnit(double value, String name, double molarmass, double stddens, double boilp) { - super(value, name); - this.molarmass = molarmass; - this.stddens = stddens; - this.boilp = boilp; - } + /** + *

+ * Constructor for RateUnit. + *

+ * + * @param value a double + * @param name a {@link java.lang.String} object + * @param molarmass a double + * @param stddens a double + * @param boilp a double + */ + public RateUnit(double value, String name, double molarmass, double stddens, double boilp) { + super(value, name); + this.molarmass = molarmass; + this.stddens = stddens; + this.boilp = boilp; + } - /** {@inheritDoc} */ - @Override - public double getSIvalue() { - return getConversionFactor(inunit) / getConversionFactor("SI") * invalue; + /** + *

+ * getConversionFactor. + *

+ * + * @param name a {@link java.lang.String} object + * @return a double + */ + public double getConversionFactor(String name) { + double mol_m3 = 0.0; + double mol_Sm3 = ThermodynamicConstantsInterface.atm + / (ThermodynamicConstantsInterface.R * standardStateTemperature); + if (boilp < 25) { + mol_m3 = ThermodynamicConstantsInterface.atm + / (ThermodynamicConstantsInterface.R * standardStateTemperature); + } else { + mol_m3 = 1.0 / (molarmass) * stddens * 1000; } - /** {@inheritDoc} */ - @Override - public double getValue(String tounit) { - return getConversionFactor(inunit) / getConversionFactor(tounit) * invalue; + if (name.equals("mole/sec") || name.equals("mol/sec") || name.equals("SI") + || name.equals("mol")) { + factor = 1.0; + } else if (name.equals("Nlitre/min")) { + factor = 1.0 / 60.0 * mol_m3 / 1000.0; + } else if (name.equals("Nlitre/sec")) { + factor = mol_m3 / 1000.0; + } else if (name.equals("Am3/hr")) { + factor = 1.0 / molarmass / 3600.0 * stddens; + } else if (name.equals("Am3/day")) { + factor = 1.0 / molarmass / (3600.0 * 24.0) * stddens; + } else if (name.equals("Am3/min")) { + factor = 1.0 / molarmass / 60.0 * stddens; + } else if (name.equals("Am3/sec")) { + factor = 1.0 / molarmass * stddens; + } else if (name.equals("kg/sec")) { + factor = 1.0 / (molarmass); + } else if (name.equals("kg/min")) { + factor = 1.0 / 60.0 * 1.0 / (molarmass); + } else if (name.equals("kg/hr")) { + factor = 1.0 / molarmass / 3600.0; + } else if (name.equals("kg/day")) { + factor = 1.0 / molarmass / (3600.0 * 24.0); + } else if (name.equals("Sm^3/sec") | name.equals("Sm3/sec")) { + factor = mol_Sm3; + } else if (name.equals("Sm^3/min") | name.equals("Sm3/min")) { + factor = 1.0 / 60.0 * mol_Sm3; + } else if (name.equals("Sm^3/hr") | name.equals("Sm3/hr")) { + factor = 1.0 / 60.0 / 60.0 * mol_Sm3; + } else if (name.equals("Sm^3/day") || name.equals("Sm3/day")) { + factor = 1.0 / 60.0 / 60.0 / 24.0 * mol_Sm3; + } else if (name.equals("MSm^3/day") || name.equals("MSm3/day")) { + factor = 1.0e6 * mol_Sm3 / (3600.0 * 24.0); + } else if (name.equals("MSm^3/hr") || name.equals("MSm3/hr")) { + factor = 1.0e6 * mol_Sm3 / (3600.0); + } else if (name.equals("idSm3/hr")) { + factor = 1.0 / molarmass / 3600.0 * stddens; + } else if (name.equals("idSm3/day")) { + factor = 1.0 / molarmass / (3600.0 * 24.0) * stddens; + } else if (name.equals("gallons/min")) { + factor = 1.0 / molarmass / 60.0 * stddens / 10.0 * 3.78541178; + } else { + throw new RuntimeException( + new InvalidInputException(this, "getConversionFactor", "unit", "not supported")); } - /** - *

- * getConversionFactor. - *

- * - * @param name a {@link java.lang.String} object - * @return a double - */ - public double getConversionFactor(String name) { - double mol_m3 = 0.0; - double mol_Sm3 = 101325.0 / (ThermodynamicConstantsInterface.R * standardStateTemperature); - if (boilp < 25) { - mol_m3 = 101325.0 / (ThermodynamicConstantsInterface.R * standardStateTemperature); - } else { - mol_m3 = 1.0 / (molarmass) * stddens * 1000; - } + return factor; + } - if (name.equals("mole/sec") || name.equals("mol/sec") || name.equals("SI") - || name.equals("mol")) { - factor = 1.0; - } else if (name.equals("Nlitre/min")) { - factor = 1.0 / 60.0 * mol_m3 / 1000.0; - } else if (name.equals("Nlitre/sec")) { - factor = mol_m3 / 1000.0; - } else if (name.equals("Am3/hr")) { - factor = 1.0 / molarmass / 3600.0 * stddens; - } else if (name.equals("Am3/day")) { - factor = 1.0 / molarmass / (3600.0 * 24.0) * stddens; - } else if (name.equals("Am3/min")) { - factor = 1.0 / molarmass / 60.0 * stddens; - } else if (name.equals("Am3/sec")) { - factor = 1.0 / molarmass * stddens; - } else if (name.equals("kg/sec")) { - factor = 1.0 / (molarmass); - } else if (name.equals("kg/min")) { - factor = 1.0 / 60.0 * 1.0 / (molarmass); - } else if (name.equals("kg/hr")) { - factor = 1.0 / molarmass / 3600.0; - } else if (name.equals("kg/day")) { - factor = 1.0 / molarmass / (3600.0 * 24.0); - } else if (name.equals("Sm^3/sec") | name.equals("Sm3/sec")) { - factor = mol_Sm3; - } else if (name.equals("Sm^3/min") | name.equals("Sm3/min")) { - factor = 1.0 / 60.0 * mol_Sm3; - } else if (name.equals("Sm^3/hr") | name.equals("Sm3/hr")) { - factor = 1.0 / 60.0 / 60.0 * mol_Sm3; - } else if (name.equals("Sm^3/day") || name.equals("Sm3/day")) { - factor = 1.0 / 60.0 / 60.0 / 24.0 * mol_Sm3; - } else if (name.equals("MSm^3/day") || name.equals("MSm3/day")) { - factor = 1.0e6 * mol_Sm3 / (3600.0 * 24.0); - } else if (name.equals("MSm^3/hr") || name.equals("MSm3/hr")) { - factor = 1.0e6 * mol_Sm3 / (3600.0); - } else { - logger.error("unit not supported " + name); - } + /** {@inheritDoc} */ + @Override + public double getSIvalue() { + return getConversionFactor(inunit) / getConversionFactor("SI") * invalue; + } - return factor; - } + /** {@inheritDoc} */ + @Override + public double getValue(String tounit) { + return getConversionFactor(inunit) / getConversionFactor(tounit) * invalue; + } } diff --git a/src/main/java/neqsim/util/unit/TemperatureUnit.java b/src/main/java/neqsim/util/unit/TemperatureUnit.java index 71e36972f8..14b23d6253 100644 --- a/src/main/java/neqsim/util/unit/TemperatureUnit.java +++ b/src/main/java/neqsim/util/unit/TemperatureUnit.java @@ -9,54 +9,96 @@ * @version $Id: $Id */ public class TemperatureUnit extends neqsim.util.unit.BaseUnit { - private static final long serialVersionUID = 1000; - - /** - *

- * Constructor for TemperatureUnit. - *

- * - * @param value a double - * @param name a {@link java.lang.String} object - */ - public TemperatureUnit(double value, String name) { - super(value, name); + private static final long serialVersionUID = 1000; + + /** + *

+ * Constructor for TemperatureUnit. + *

+ * + * @param value a double + * @param name a {@link java.lang.String} object + */ + public TemperatureUnit(double value, String name) { + super(value, name); + } + + /** + * Get conversion factor for temperature unit conversions to Kelvin. Note: This is primarily for + * understanding scale, not for direct conversions including offsets. + * + * @param name a {@link java.lang.String} object representing the temperature unit + * @return a double representing the conversion factor relative to Kelvin + */ + public double getConversionFactor(String name) { + switch (name) { + case "K": + return 1.0; + case "C": + return 1.0; // Same scale as Kelvin + case "F": + return 5.0 / 9.0; // Scale factor for Fahrenheit to Kelvin + case "R": + return 5.0 / 9.0; // Scale factor for Rankine to Kelvin + default: + throw new IllegalArgumentException("Unknown unit: " + name); } + } - /** {@inheritDoc} */ - @Override - public double getValue(double val, String fromunit, String tounit) { - invalue = val; - return getConversionFactor(fromunit) / getConversionFactor(tounit) * invalue; + /** {@inheritDoc} */ + @Override + public double getValue(double value, String fromUnit, String toUnit) { + if (fromUnit.equals(toUnit)) { + return value; } - /** {@inheritDoc} */ - @Override - public double getValue(String tounit) { - if (tounit.equals("C")) { - return getConversionFactor(inunit) / getConversionFactor("K") * invalue - 273.15; - } - return getConversionFactor(inunit) / getConversionFactor(tounit) * invalue; + // Convert input to Kelvin first + double tempInKelvin = value; + if (fromUnit.equals("C")) { + tempInKelvin += 273.15; + } else if (fromUnit.equals("F")) { + tempInKelvin = (value - 32) * 5.0 / 9.0 + 273.15; + } else if (fromUnit.equals("R")) { + tempInKelvin = value * 5.0 / 9.0; } - /** - *

- * getConversionFactor. - *

- * - * @param name a {@link java.lang.String} object - * @return a double - */ - public double getConversionFactor(String name) { - double conversionFactor = 1.0; - switch (name) { - case "K": - conversionFactor = 1.0; - break; - case "R": - conversionFactor = 5.0 / 9.0; - break; - } - return conversionFactor; + // Convert from Kelvin to target unit + if (toUnit.equals("K")) { + return tempInKelvin; + } else if (toUnit.equals("C")) { + return tempInKelvin - 273.15; + } else if (toUnit.equals("F")) { + return (tempInKelvin - 273.15) * 9.0 / 5.0 + 32; + } else if (toUnit.equals("R")) { + return tempInKelvin * 9.0 / 5.0; + } + + throw new IllegalArgumentException("Unsupported unit: " + toUnit); + } + + /** + * {@inheritDoc} + * + * Convert a given temperature value from Kelvin to a specified unit. + */ + @Override + public double getValue(String toUnit) { + switch (toUnit) { + case "K": + // Convert from Kelvin to Kelvin + return invalue; + case "C": + // Convert from Kelvin to Celsius + return invalue - 273.15; + case "F": + // Convert from Kelvin to Fahrenheit + return invalue * 9.0 / 5.0 - 459.67; + case "R": + // Convert from Kelvin to Rankine + return invalue * 9.0 / 5.0; + default: + // Handle unsupported units + throw new IllegalArgumentException("Unsupported conversion unit: " + toUnit); } + } } diff --git a/src/main/java/neqsim/util/unit/TimeUnit.java b/src/main/java/neqsim/util/unit/TimeUnit.java index fdd2eb0bd0..bb5aff3a7c 100644 --- a/src/main/java/neqsim/util/unit/TimeUnit.java +++ b/src/main/java/neqsim/util/unit/TimeUnit.java @@ -3,6 +3,7 @@ * * Created on 25. januar 2002, 20:23 */ + package neqsim.util.unit; /** @@ -14,12 +15,17 @@ * @version $Id: $Id */ public class TimeUnit extends neqsim.util.unit.BaseUnit { - private static final long serialVersionUID = 1000; + private static final long serialVersionUID = 1000; - /** - *

- * Constructor for TimeUnit. - *

- */ - public TimeUnit() {} + /** + *

+ * Constructor for TimeUnit. + *

+ * + * @param value Numeric value + * @param name Name of unit + */ + public TimeUnit(double value, String name) { + super(value, name); + } } diff --git a/src/main/java/neqsim/util/unit/Unit.java b/src/main/java/neqsim/util/unit/Unit.java index 4d04e2b28a..cace1cae71 100644 --- a/src/main/java/neqsim/util/unit/Unit.java +++ b/src/main/java/neqsim/util/unit/Unit.java @@ -3,6 +3,7 @@ * * Created on 25. januar 2002, 20:20 */ + package neqsim.util.unit; /** @@ -14,34 +15,34 @@ * @version $Id: $Id */ public interface Unit { - /** - *

- * getSIvalue. - *

- * - * @return a double - */ - double getSIvalue(); + /** + *

+ * getSIvalue. + *

+ * + * @return a double + */ + double getSIvalue(); - /** - *

- * getValue. - *

- * - * @param tounit a {@link java.lang.String} object - * @return a double - */ - double getValue(String tounit); + /** + *

+ * Convert value from a specified unit to a specified unit. + *

+ * + * @param val a double + * @param fromunit a {@link java.lang.String} object + * @param tounit a {@link java.lang.String} object + * @return a double + */ + double getValue(double val, String fromunit, String tounit); - /** - *

- * getValue. - *

- * - * @param val a double - * @param fromunit a {@link java.lang.String} object - * @param tounit a {@link java.lang.String} object - * @return a double - */ - double getValue(double val, String fromunit, String tounit); + /** + *

+ * Get process value in specified unit. + *

+ * + * @param tounit Unit to get process value in. + * @return Value converted to the specified unit. + */ + double getValue(String tounit); } diff --git a/src/main/java/neqsim/util/unit/Units.java b/src/main/java/neqsim/util/unit/Units.java new file mode 100644 index 0000000000..9070de11bf --- /dev/null +++ b/src/main/java/neqsim/util/unit/Units.java @@ -0,0 +1,239 @@ +package neqsim.util.unit; + +import java.util.HashMap; + +/** + *

+ * Units class. + *

+ * + * @author even + * @version $Id: $Id + */ +public class Units { + /** + * Unit class nested within Units. + */ + public class UnitDescription { + public String symbol; + public String symbolName; + + public UnitDescription(String symbol, String symbolName) { + this.symbol = symbol; + this.symbolName = symbolName; + } + } + + /** Constant activeUnits */ + public static HashMap activeUnits = new HashMap<>(); + /** Constant defaultUnits */ + public static HashMap defaultUnits = new HashMap<>(); + /** Constant metricUnits */ + public static HashMap metricUnits = new HashMap<>(); + private static HashMap siUnits = new HashMap<>(); + private static HashMap fieldUnits = new HashMap<>(); + + private static String[] pressureUnits = + new String[] {"Pa", "bara", "barg", "psi", "psig", "psia"}; + private static String[] temperatureUnits = new String[] {"K", "C", "F", "R"}; + private static String[] molarVolumeUnits = new String[] {"mol/m3", "litre/m3", "ft3/lbmole"}; + + /** + *

+ * Constructor for Units. + *

+ */ + public Units() { + if (activeUnits.size() == 0) { + activeUnits.put("temperature", new UnitDescription("C", "Celsius")); + activeUnits.put("pressure", new UnitDescription("bara", "bar absolute")); + activeUnits.put("enthalpy", new UnitDescription("J/kg", "Joule per kg")); + activeUnits.put("entropy", new UnitDescription("J/kgK", "Joule per kg and Kelvin")); + activeUnits.put("density", new UnitDescription("kg/m3", "kg per cubic meter")); + activeUnits.put("viscosity", new UnitDescription("kg/msec", "kg per meter and second")); + activeUnits.put("surface tension", new UnitDescription("N/m", "newton per meter")); + activeUnits.put("thermal conductivity", + new UnitDescription("W/mK", "watts per meter and Kelvin")); + activeUnits.put("JT coefficient", new UnitDescription("C/bar", "Celsius per bar")); + activeUnits.put("speed of sound", new UnitDescription("m/sec", "meter per second")); + activeUnits.put("Heat Capacity (Cv)", + new UnitDescription("kJ/kgK", "kilo joule per kg and Kelvin")); + activeUnits.put("Heat Capacity (Cp)", + new UnitDescription("kJ/kgK", "kilo joule per kg and Kelvin")); + activeUnits.put("Molar Mass", new UnitDescription("kg/mol", "kilo gram per kilo mole")); + activeUnits.put("molar volume", new UnitDescription("m3/mol", "cubic metre per mole")); + activeUnits.put("mass flow", new UnitDescription("kg/hr", "kg per hour")); + activeUnits.put("molar flow", new UnitDescription("mole/hr", "mole per hour")); + activeUnits.put("volume flow", new UnitDescription("m3/hr", "cubic metre per hour")); + activeUnits.put("standard volume flow", + new UnitDescription("Sm3/hr", "standard cubic metre per hour")); + + metricUnits.putAll(activeUnits); + metricUnits.put("Molar Mass", new UnitDescription("gr/mol", "gr/mol")); + metricUnits.put("molar volume", new UnitDescription("cm3/mol", "cm3/mol")); + metricUnits.put("viscosity", new UnitDescription("Pas", "Pascal per second")); + + siUnits.putAll(activeUnits); // Makes a copy of activeUnits + siUnits.put("temperature", new UnitDescription("K", "Kelvin")); + siUnits.put("pressure", new UnitDescription("Pa", "Pascal")); + siUnits.put("enthalpy", new UnitDescription("J/mol", "Joule per mole")); + siUnits.put("density", new UnitDescription("kg/m3", "kg per cubic meter")); + siUnits.put("JT coefficient", new UnitDescription("K/Pa", "Kelvin per Pascal")); + siUnits.put("thermal conductivity", + new UnitDescription("J/sec-m-K", "Joule per second meter and Kelvin")); + + fieldUnits.putAll(activeUnits); // Makes a copy of activeUnits + fieldUnits.put("temperature", new UnitDescription("F", "Fahrenheit")); + fieldUnits.put("pressure", new UnitDescription("psia", "pounds per square inch absolute")); + fieldUnits.put("enthalpy", new UnitDescription("Btu/lbmol", "Btu per lbmol")); + fieldUnits.put("density", new UnitDescription("lb/ft3", "pound per cubic foot")); + fieldUnits.put("Molar Mass", new UnitDescription("lbm/lbmol", "pound-mass per pound-mole")); + fieldUnits.put("Heat Capacity (Cv)", new UnitDescription("btu/lbmole-F", "Btu/lbmole-F")); + fieldUnits.put("Heat Capacity (Cp)", new UnitDescription("btu/lbmole-F", "Btu/lbmole-F")); + fieldUnits.put("thermal conductivity", new UnitDescription("Btu/hr-ft-F", "Btu/hr-ft-F")); + fieldUnits.put("viscosity", new UnitDescription("cP", "centypoise")); + fieldUnits.put("entropy", new UnitDescription("btu/lb-F", "btu/lb-F")); + fieldUnits.put("JT coefficient", + new UnitDescription("F/psi", "Farenheit per pounds per square inch")); + fieldUnits.put("speed of sound", new UnitDescription("ft/sec", "ft/sec")); + fieldUnits.put("molar volume", + new UnitDescription("ft3/lbmole", "cubic foot per pound-mass-mole")); + fieldUnits.put("mass flow", new UnitDescription("lb/hr", "lb/hr")); + fieldUnits.put("molar flow", new UnitDescription("lbmole/hr", "lbmole/hr")); + fieldUnits.put("volume flow", new UnitDescription("barrel/day", "barrel/day")); + + defaultUnits.putAll(activeUnits); // Makes a copy of activeUnits + } + } + + /** + *

+ * activateSIUnits. + *

+ */ + public static void activateSIUnits() { + if (activeUnits.size() == 0) { + new Units(); + } + activeUnits = new HashMap<>(siUnits); + } + + /** + *

+ * activateFieldUnits. + *

+ */ + public static void activateFieldUnits() { + if (activeUnits.size() == 0) { + new Units(); + } + activeUnits = new HashMap<>(fieldUnits); + } + + /** + *

+ * activateMetricUnits. + *

+ */ + public static void activateMetricUnits() { + if (activeUnits.size() == 0) { + new Units(); + } + activeUnits = new HashMap<>(metricUnits); + } + + /** + *

+ * activateDefaultUnits. + *

+ */ + public static void activateDefaultUnits() { + if (activeUnits.size() == 0) { + new Units(); + } + activeUnits = new HashMap<>(defaultUnits); // Reassign with a copy + } + + /** + *

+ * getSymbol. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link java.lang.String} object + */ + public static String getSymbol(String name) { + if (activeUnits.size() == 0) { + new Units(); + } + return activeUnits.get(name).symbol; + } + + /** + *

+ * getSymbolName. + *

+ * + * @param name a {@link java.lang.String} object + * @return a {@link java.lang.String} object + */ + public static String getSymbolName(String name) { + if (activeUnits.size() == 0) { + new Units(); + } + return activeUnits.get(name).symbolName; + } + + /** + *

+ * setUnit. + *

+ * + * @param name a {@link java.lang.String} object + * @param symbol a {@link java.lang.String} object + * @param symbolName a {@link java.lang.String} object + */ + public static void setUnit(String name, String symbol, String symbolName) { + if (activeUnits.size() == 0) { + new Units(); + } + UnitDescription unit = activeUnits.get(name); + if (unit != null) { + unit.symbol = symbol; + unit.symbolName = symbolName; + } + } + + /** + *

+ * Getter for the field temperatureUnits. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getTemperatureUnits() { + return temperatureUnits; + } + + /** + *

+ * Getter for the field pressureUnits. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getPressureUnits() { + return pressureUnits; + } + + /** + *

+ * Getter for the field molarVolumeUnits. + *

+ * + * @return an array of {@link java.lang.String} objects + */ + public String[] getMolarVolumeUnits() { + return molarVolumeUnits; + } +} diff --git a/src/main/java/neqsim/util/util/DoubleCloneable.java b/src/main/java/neqsim/util/util/DoubleCloneable.java index d6d88611ca..29ae698ee6 100644 --- a/src/main/java/neqsim/util/util/DoubleCloneable.java +++ b/src/main/java/neqsim/util/util/DoubleCloneable.java @@ -3,6 +3,7 @@ * * Created on 3. juni 2001, 20:19 */ + package neqsim.util.util; /** @@ -14,57 +15,57 @@ * @version $Id: $Id */ public class DoubleCloneable implements Cloneable { - double doubleValue; + double doubleValue; - /** - *

- * Constructor for DoubleCloneable. - *

- */ - public DoubleCloneable() {} + /** + *

+ * Constructor for DoubleCloneable. + *

+ */ + public DoubleCloneable() {} - /** - *

- * Constructor for DoubleCloneable. - *

- * - * @param val a double - */ - public DoubleCloneable(double val) { - this.doubleValue = val; - } + /** + *

+ * Constructor for DoubleCloneable. + *

+ * + * @param val a double + */ + public DoubleCloneable(double val) { + this.doubleValue = val; + } - /** {@inheritDoc} */ - @Override - public DoubleCloneable clone() { - DoubleCloneable clonedSystem = null; - try { - clonedSystem = (DoubleCloneable) super.clone(); - } catch (Exception e) { - e.printStackTrace(System.err); - } - return clonedSystem; + /** {@inheritDoc} */ + @Override + public DoubleCloneable clone() { + DoubleCloneable clonedSystem = null; + try { + clonedSystem = (DoubleCloneable) super.clone(); + } catch (Exception ex) { + ex.printStackTrace(); } + return clonedSystem; + } - /** - *

- * set. - *

- * - * @param val a double - */ - public void set(double val) { - doubleValue = val; - } + /** + *

+ * doubleValue. + *

+ * + * @return a double + */ + public double doubleValue() { + return doubleValue; + } - /** - *

- * doubleValue. - *

- * - * @return a double - */ - public double doubleValue() { - return doubleValue; - } + /** + *

+ * set. + *

+ * + * @param val a double + */ + public void set(double val) { + doubleValue = val; + } } diff --git a/src/main/java/neqsim/util/util/FileSystemSettings.java b/src/main/java/neqsim/util/util/FileSystemSettings.java index 9593aa5978..7e63421515 100644 --- a/src/main/java/neqsim/util/util/FileSystemSettings.java +++ b/src/main/java/neqsim/util/util/FileSystemSettings.java @@ -3,6 +3,7 @@ * * Created on 3. november 2001, 17:55 */ + package neqsim.util.util; /** @@ -14,18 +15,19 @@ * @version $Id: $Id */ public interface FileSystemSettings { - /** Constant root="c:" */ - String root = "c:"; - /** Constant tempDir="root + /temp/" */ - String tempDir = root + "/temp/"; - /** - * Constant defaultFileTreeRoot="root + /Program Files/NeqSim/pythonScri"{trunked} - */ - String defaultFileTreeRoot = root + "/Program Files/NeqSim/pythonScript/"; - /** Constant defaultDatabaseRootRoot="root + /java/NeqSim/util/database" */ - String defaultDatabaseRootRoot = root + "/java/NeqSim/util/database"; - /** Constant relativeFilePath="root" */ - String relativeFilePath = root; - /** Constant fileExtension=".py" */ - String fileExtension = ".py"; + /** Constant root="c:". */ + String root = "c:"; + /** Constant tempDir="root + /temp/". */ + String tempDir = root + "/temp/"; + + /** + * Constant defaultFileTreeRoot="root + /Program Files/NeqSim/pythonScri"{trunked}. + */ + String defaultFileTreeRoot = root + "/Program Files/NeqSim/pythonScript/"; + /** Constant defaultDatabaseRootRoot="root + /java/NeqSim/util/database". */ + String defaultDatabaseRootRoot = root + "/java/NeqSim/util/database"; + /** Constant relativeFilePath="root". */ + String relativeFilePath = root; + /** Constant fileExtension=".py". */ + String fileExtension = ".py"; } diff --git a/src/main/resources/commercial/GASCONTRACTSPECIFICATIONS.csv b/src/main/resources/commercial/GASCONTRACTSPECIFICATIONS.csv new file mode 100644 index 0000000000..11a06f9e6d --- /dev/null +++ b/src/main/resources/commercial/GASCONTRACTSPECIFICATIONS.csv @@ -0,0 +1,17 @@ +"ID","NAME","COUNTRY","TERMINAL","SPECIFICATION","MINVALUE","MAXVALUE","UNIT","METHOD","ReferenceTdegC","ReferencePbar","Comments", +0,"Contract1","NORWAY",,"waterdewpointTemperature",-1000.000000000,-10.000000000,"degC","ISO18453",0.000000000,70.000000000,"", +1,"Contract1","NORWAY",,"hydrocarbondewpointTemperature",-1000.000000000,-10.000000000,"degC","StatoilBestPracticeHydrocarbonDewPoint",0.000000000,70.000000000,"", +2,"Contract1","NORWAY",,"GCV",30000.000000000,40000.000000000,"kJ/Sm^3","ISO6976",0.000000000,1.013250000,"reference temperature of compustion=0C and reference temperature volume=15C" +3,"Contract1","NORWAY",,"H2S content",0.000000000,5.000000000,"ppm","SulfurSpecificationMethod",0.000000000,1.013250000,"", +4,"Contract1","NORWAY",,"Total sulfur",0.000000000,30.000000000,"microg/Sm3","SulfurSpecificationMethod",0.000000000,1.013250000,"", +5,"Contract1","NORWAY",,"SuperiorWobbeIndex",20000.000000000,40000.000000000,"kJ/Sm^3","ISO6976",0.000000000,1.013250000,"", +6,"Contract1","NORWAY",,"RelativeDensity",0.600000000,1.000000000,"kg/Sm^3","ISO6976",0.000000000,1.013250000,"", +7,"Contract1","UK","UK-GSMR1996","waterdewpointTemperature",-1000.000000000,-10.000000000,"degC","ISO18453",0.000000000,70.000000000,"", +8,"ANP","Brazil","central","waterdewpointTemperature",-1000,-45.000000000,"degC","ISO18453",0.000000000,1.000000000,"ISO6327/ASTM5454", +9,"ANP","Brazil","central","CO2",0.0,3.0,"mol%","ISO6974",0.000000000,1.000000000,"ASTM1945", +10,"ANP","Brazil","central","methane",85.0,100.0,"mol%","ISO6974",0.000000000,1.000000000,"ASTM1945", +11,"ANP","Brazil","central","ethane",0.0,12.0,"mol%","ISO6974",0.000000000,1.000000000,"ASTM1945", +12,"ANP","Brazil","central","propane",0.0,5.0,"mol%","ISO6974",0.000000000,1.000000000,"ASTM1945", +13,"ANP","Brazil","central","GCV",30000.000000000,40000.000000000,"kJ/Sm^3","ISO6976",0.000000000,1.013250000,"reference temperature of compustion=0C and reference temperature volume=15C" +3,"ANP","Brazil","central","H2S",0.000000000,5.000000000,"ppm","SulfurSpecificationMethod",0.000000000,1.013250000,"", +4,"ANP","Brazil","central","Total sulfur",0.000000000,30.000000000,"microg/Sm3","SulfurSpecificationMethod",0.000000000,1.013250000,"", diff --git a/src/main/resources/data/AdsorptionParameters.csv b/src/main/resources/data/AdsorptionParameters.csv new file mode 100644 index 0000000000..89d7e13a1b --- /dev/null +++ b/src/main/resources/data/AdsorptionParameters.csv @@ -0,0 +1,9 @@ +"ID","Name","Solid","eps","z0","beta" +1,"methane","AC Calgon F400",7.458000000,0.298000000,2.000000000 +2,"CO2","AC Calgon F400",7.760000000,0.298000000,2.000000000 +3,"nitrogen","AC Calgon F400",6.010000000,0.298000000,2.000000000 +4,"methane","AC Norit R1",8.060000000,0.362000000,2.000000000 +6,"argon","AC Norit R1",5.800000000,0.362000000,2.000000000 +7,"methane","AC",7.180000000,0.367000000,2.000000000 +8,"CO2","AC",7.510000000,0.367000000,2.000000000 +9,"nitrogen","AC Norit R1",0.050000000,0.362000000,2.000000000 diff --git a/src/main/resources/data/COMP.csv b/src/main/resources/data/COMP.csv new file mode 100644 index 0000000000..d27a5b69cf --- /dev/null +++ b/src/main/resources/data/COMP.csv @@ -0,0 +1,201 @@ +"ID","NAME","CASnumber","COMPTYPE","COMPINDEX","FORMULA","MOLARMASS","LIQDENS","TC","PC","ACSFACT","NORMBOIL","MWAVG","CRITVOL","PVMODEL","Href","CPA","CPB","CPC","CPD","CPE","AntoineVapPresLiqType","ANTOINEA","ANTOINEB","ANTOINEC","ANTOINED","ANTOINEE","DIPOLEMOMENT","VISCFACT","RACKETZ","volcorrSRK_T","LJDIAMETER","LJEPS","SphericalCoreRadius","LIQVISCMODEL","LIQVISC1","LIQVISC2","LIQVISC3","LIQVISC4","GIBBSENERGYOFFORMATION","DIELECTRICPARAMETER1","DIELECTRICPARAMETER2","DIELECTRICPARAMETER3","DIELECTRICPARAMETER4","DIELECTRICPARAMETER5","IONICCHARGE","REFERENCESTATETYPE","HenryCoef1","HenryCoef2","HenryCoef3","HenryCoef4","SCHWARTZENTRUBER1","SCHWARTZENTRUBER2","SCHWARTZENTRUBER3","LIQUIDCONDUCTIVITY1","LIQUIDCONDUCTIVITY2","LIQUIDCONDUCTIVITY3","PARACHOR","HEATOFFUSION","TRIPLEPOINTDENSITY","TRIPLEPOINTPRESSURE","TRIPLEPOINTTEMPERATURE","MELTINGPOINTTEMPERATURE","ENTHALPYOFFORMATION","ABSOLUTEENTROPY","SOLIDDENSITYCOEFS1","SOLIDDENSITYCOEFS2","SOLIDDENSITYCOEFS3","SOLIDDENSITYCOEFS4","SOLIDDENSITYCOEFS5","LIQUIDDENSITYCOEFS1","LIQUIDDENSITYCOEFS2","LIQUIDDENSITYCOEFS3","LIQUIDDENSITYCOEFS4","LIQUIDDENSITYCOEFS5","HEATOFVAPORIZATIONCOEFS1","HEATOFVAPORIZATIONCOEFS2","HEATOFVAPORIZATIONCOEFS3","HEATOFVAPORIZATIONCOEFS4","HEATOFVAPORIZATIONCOEFS5","STDDENS","MC1","MC2","MC3","MC1Solid","MC2Solid","MC3Solid","TwuCoon1","TwuCoon2","TwuCoon3","associationsites","associationscheme","racketZCPA","volcorrCPA_T","associationboundingvolume_SRK","associationenergy","aCPA_SRK","bCPA_SRK","mCPA_SRK","aCPA_PR","bCPA_PR","mCPA_PR","associationboundingvolume_PR","calcActivity","ANTOINESolidA","ANTOINESolidB","ANTOINESolidC","Hsub","criticalViscosity","HydrateA1Small","HydrateB1Small","HydrateA1Large","HydrateB1Large","HydrateA2Small","HydrateB2Small","HydrateA2Large","HydrateB2Large","HydrateFormer","mSAFT","sigmaSAFT","epsikSAFT","associationboundingvolume_PCSAFT","associationenergy_PCSAFT","LJDIAMETERHYDRATE","LJEPSHYDRATE","SphericalCoreRadiusHYDRATE","DeshMatIonicDiameter","waxformer","B2_largeGF","A1_smallGF","B1_smallGF","A1_largeGF","B1_largeGF","A2_smallGF","B2_smallGF","A2_largeGF","CPsolid1","CPsolid2","CPsolid3","CPsolid4","CPsolid5","CPliquid1","CPliquid2","CPliquid3","CPliquid4","CPliquid5","MCPR1","MCPR2","MCPR3","PARACHOR_CPA" +1,"methane","74-82-8","HC",1,"CH4",16.043000000,0.422182073,-82.590000000,45.990000000,0.011500000,-161.550000000,16.043000000,99.000000000,"Classic",2.600000000,37.978352000,-0.074618150,0.000301881,-0.000000283,9.070574e-11,"pow10",3.768700000,395.744000000,266.682000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,155.809006022,0.406998625,3,-26.870000000,1150.000000000,0.187000000,-0.000521000,-50500.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",900.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.303000000,-0.000605000,-0.000003200,77.300000000,941.000000000,452.000000000,0.116656057,90.690000000,90.650000000,-74520.000000000,186.000000000,33.022000000,-0.015870000,-0.000155000,0.000000000,0.000000000,2.920000000,0.290000000,191.000000000,0.289000000,0.000000000,8170.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.100000000,0.585700000,-0.720600000,1.289900000,0.000000000,0.000000000,0.000000000,0.122841598,0.914470789,2.741978611,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.186260000,1,1.000000000,-6.680820000,0.000000000,9700,0.000015293,0.047920000,1594.000000000,0.012440000,2952.000000000,0.002317000,2777.000000000,1.076000000,1323.000000000,"yes",1.000000000,3.703900119,150.029998779,0.000000000,0.000000000,3.190710941,155.809006022,0.406998625,1.000000000,0,900.000000000,0.000621000,2760.000000000,0.421000000,1963.100000000,0.004048680,2636.750000000,0.295270000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.392340000,0.000000000,0.000000000,77.300000000 +2,"ethane","74-84-0","HC",2,"C2H6",30.070000000,0.544459352,32.170000000,48.720000000,0.099500000,-88.550000000,30.070000000,148.000000000,"Classic",9761.100000000,34.735892000,-0.036806078,0.000470572,-0.000000552,2.0676918e-10,"pow10",3.954050000,663.720000000,256.681000000,0.000000000,0.000000000,1.700000000,0.000000000,0.000000000,0.000000000,3.264673065,176.701997247,0.513842135,3,-10.230000000,668.000000000,0.043900000,-0.000095900,-31900.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.002582841,12.538290520,-18.380973790,-0.384000000,0.005250000,-0.000006370,108.900000000,2860.000000000,652.000000000,0.000011402,90.350000000,89.950000000,-84680.000000000,229.000000000,25.263000000,-0.010950000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,14703.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.100000000,0.654848544,-0.184389171,0.260160050,0.000000000,0.000000000,0.000000000,0.299607318,0.876626839,1.679238400,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,6.046090000,1,1.000000000,-3.333550000,0.000000000,20500,0.000021756,0.000000000,0.000000000,0.002999000,3861.000000000,0.000000000,0.000000000,0.007362000,4000.000000000,"yes",1.606900000,3.520600000,191.420000000,0.000000000,0.000000000,3.264673065,176.701997247,0.513842135,1.000000000,0,3363.000000000,0.000000000,0.000000000,0.109800000,2854.940000000,0.000000000,0.000000000,0.089386100,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.520050000,0.004300000,0.102920000,108.900000000 +3,"Cl-","0-0-0-0","ion",3,"Cl-",35.450000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,99.450000000,99.000000000,"Classic",1374.600000000,36.540030000,-0.034802404,0.000116811,-0.000000130,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.600000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,52.878622600,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.600000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +4,"Na+","0-0-0-0","ion",4,"Na+",22.990000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,22.990000000,99.000000000,"Classic",1374.600000000,36.540030000,-0.034802404,0.000116811,-0.000000130,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,5.680000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,52.878622600,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.038000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.680000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +5,"Mg++","0-0-0-0","ion",5,"Mg++",24.310000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,24.310000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,6.940000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.038000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,6.940000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +6,"MDEA","74-82-8","amine",6,"MDEA",119.163200000,1.038000000,403.850000000,38.760000000,1.242000000,140.000000000,119.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.260355682,0.000000000,4.500000000,481.800000000,0.000000000,3,-75.190000000,12680.000000000,0.157300000,-0.000122500,57900.000000000,8.169760000,8989.300000000,0.000000000,0.000000000,0.000000000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.521291873,-1.152080748,-0.013889882,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,2.298601539,-2.159763177,1.537096461,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.000000000,0.000000000,0.018008483,12276.382600000,342400.600100000,10.828737539,1.032854790,376276.884000000,10.783585850,1.258298307,0.000000000,1,17.387107060,1.762745870,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.500000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +7,"MDEA+","74-82-8","ion",7,"CH4O",120.163200000,1.038000000,403.850000000,38.760000000,1.242000000,64.550000000,120.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,4.500000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.500000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +8,"H3O+","74-82-8","ion",8,"H3O",19.020000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,19.020000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,4.060000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.060000000,481.800000000,0.000000000,9.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +9,"propane","74-98-6","HC",9,"CH4O",44.097000000,0.000000000,96.680000000,42.480000000,0.152300000,-42.050000000,44.097000000,203.000000000,"Classic",19519.600000000,31.983958000,0.042659134,0.000499754,-0.000000656,2.5598806e-10,"pow10",3.928280000,803.997000000,247.040000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.320577362,205.885946142,0.662379685,3,-7.764000000,722.000000000,0.023800000,-0.000046700,-24400.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,-0.015069991,-4.344143673,4.007325591,-0.384000000,0.005250000,-0.000006370,151.900000000,6000.000000000,1000.000000000,0.000000001,85.470000000,85.500000000,-103840.000000000,189.000000000,18.861000000,-0.020332000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,15700.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.100000000,0.721211486,-0.099216642,0.181829227,0.000000000,0.000000000,0.000000000,0.435825883,0.866132179,1.395432818,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,91187.500000000,5.783400000,0.630700000,0.000000000,0.000000000,0.000000000,5.248690000,1,1.000000000,-11.125400000,0.000000000,28500,0.000024973,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.008264000,4521.000000000,"yes",2.002000000,3.618400000,208.110000000,0.000000000,0.000000000,3.320577362,205.885946142,0.662379685,1.000000000,0,3885.270000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.079900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.618380000,-0.160710000,0.487850000,151.900000000 +10,"CO2","124-38-9","inert",10,"CO2",44.010000000,1.100000000,31.040000000,73.815000000,0.227600000,-78.500000000,44.010000000,94.000000000,"Classic",19459.100000000,18.583021051740495,0.08237963451147419,-7.930390038368174e-05,4.222181385638e-08,-9.577100164048891e-12,"pow10",7.532200000,835.060000000,268.223000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.340000000,168.770000000,0.680500000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",94.491400000,-6789.040000000,-11.451900000,-0.010454000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,78.000000000,9018.969300000,1000.000000000,5.185000000,216.580000000,216.592000000,-393500.000000000,189.000000000,32.939000000,0.068420000,-0.000284700,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,14490.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.100000000,0.881738930,-0.856255022,3.094939327,0.000000000,0.000000000,0.000000000,1.413601068,-0.605965449,1.101814948,2,"2A",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,6.812280000,-1301.679000000,-3.494000000,26100,0.000037687,4.856e-11,7470.000000000,0.098620000,2617.000000000,0.000060820,3691.000000000,0.168300000,2591.000000000,"yes",1.309700000,3.250700000,92.150000000,0.000000000,0.000000000,3.037207160,170.162382832,0.684633880,1.000000000,0,2119.560000000,0.000758596,2500.000000000,0.231198000,2419.560000000,0.007244960,2330.000000000,0.139898000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.713690000,-0.447640000,2.437520000,78.000000000 +11,"methanol","67-56-1","alcohol",11,"CH4O",32.042000000,0.797000000,239.490000000,80.960000000,0.559000000,64.550000000,32.042000000,99.000000000,"Classic",11133.000000000,39.192196000,-0.058081604,0.000350102,-0.000000369,1.276199e-10,"pow10",5.202770000,1580.080000000,239.500000000,0.000000000,0.000000000,1.700000000,0.215000000,0.200000000,0.000000000,3.626000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,73.069489067,3177.000000000,1000.000000000,0.006110000,175.500000000,175.500000000,-242000.000000000,189.000000000,30.585000000,0.000000000,0.000000000,0.000000000,0.000000000,2.288000000,0.268500000,512.640000000,0.245300000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,1.437100000,-0.799420000,0.327800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2B",0.000000000,0.000000000,0.016100000,24591.000000000,40531.000000000,3.097800000,0.431020000,47052.000000000,3.300000000,0.903700000,0.044900000,1,17.387107060,-7582.406220000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",1.525500000,3.230000000,188.900000000,0.035176000,24106.443000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-12706.000000000,958.780000000,-5.233200000,0.013152000,0.000000000,105800.000000000,-362.230000000,0.937900000,0.000000000,0.000000000,1.224003000,-0.273500000,-0.398230000,87.543852818 +12,"MEG","107-21-1","glycol",12,"C2H6O2",62.069000000,1.117000000,446.850000000,90.000000000,0.534700000,197.350000000,62.069000000,186.000000000,"Classic",32022.600000000,35.700000000,0.248400000,-0.000149700,0.000000030,0.000000000,"exp",13.629900000,6022.180000000,-28.250000000,0.000000000,0.000000000,2.308200000,0.215000000,0.248800000,0.000000000,3.626000000,481.800000000,0.000000000,3,-23.155244944,5694.484212533,0.023081509,0.000000000,57900.000000000,-19.290540000,29814.530000000,-0.019678500,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.654009012,-3.955117195,3.671191916,0.517338954,-0.000798169,0.000000064,133.328650000,9958.000000000,904.000000000,0.000002420,260.150000000,260.150000000,-388000.000000000,324.000000000,21.400000000,0.000000000,0.000000000,0.000000000,0.000000000,1.315100000,0.251250000,719.700000000,0.218700000,0.000000000,82900000.0000000,0.427000000,0.000000000,0.000000000,0.000000000,1.117000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.288384169,0.000389127,0.014100000,19752.000000000,108190.000000000,5.140000000,0.674400000,108190.000000000,5.140000000,0.674400000,0.051400000,1,17.090887000,-7800.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,35540.000000000,436.780000000,-0.184860000,0.000000000,0.000000000,35540.000000000,436.780000000,-0.184860000,0.000000000,0.000000000,0.910030000,1.349960000,-1.890020000,151.817427819 +13,"oxygen","7782-44-7","inert",13,"O2",31.999000000,0.000000000,-118.550000000,50.460000000,0.021000000,-182.950000000,31.999000000,73.400000000,"Classic",11103.100000000,30.17982,-0.014915316,5.4706e-05,-4.89e-08,1.488206e-11,"log",-6.282750000,1.736190000,-1.813490000,-0.025400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.467000000,106.700000000,0.000000000,3,-4.771000000,215.000000000,0.013900000,-0.000062600,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,0.000000000,6000.000000000,1000.000000000,0.001463300,56.360000000,273.000000000,-242000.000000000,189.000000000,53.000000000,-0.007840000,0.000000000,0.000000000,0.000000000,5.460000000,0.305000000,647.000000000,0.081000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.017170000,2016.200000000,0.056960000,1662.300000000,0.097990000,1045.900000000,0.002681000,2563.900000000,"yes",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.467000000,106.700000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +14,"TEG","112-27-6","glycol",14,"C6H14O4",150.175000000,1.127000000,496.350000000,33.130000000,1.287400000,278.300000000,150.175000000,450.000000000,"Classic",93317.400000000,86.400000000,0.600800000,-0.000362200,0.000000072,0.000000000,"exp",6.756800000,3715.222000000,-1.299000000,0.000000000,0.000000000,2.200000000,0.215000000,0.242773578,0.000000000,3.626000000,481.800000000,0.000000000,3,-53.925230000,9741.992000000,0.106066000,-0.000075802,-394370.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.394142583,-0.000547836,0.000000000,358.332712000,15900.000000000,1000.000000000,0.006110000,268.250000000,268.250000000,-242000.000000000,189.000000000,8.890000000,-0.007840000,0.000000000,0.000000000,0.000000000,0.596600000,0.262270000,769.500000000,0.245500000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,1.127000000,1.376906087,1.788921526,-4.378737499,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.284542458,-0.004423613,0.018800000,14337.000000000,391260.000000000,13.210000000,1.169200000,391260.000000000,13.210000000,1.169200000,0.018800000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,153800.000000000,587.000000000,0.000000000,0.000000000,0.000000000,153800.000000000,587.000000000,0.000000000,0.000000000,0.000000000,1.550750000,-0.777800000,0.317790000,349.636060455 +15,"DEG","111-46-6","glycol",15,"C4H10O3",106.122000000,1.119000000,471.450000000,46.610000000,1.201100000,245.850000000,106.122000000,316.000000000,"Classic",62670.000000000,73.100000000,0.346200000,-0.000146800,0.000000018,0.000000000,"exp",10.412400000,4122.520000000,-122.500000000,0.000000000,0.000000000,2.200000000,0.215000000,0.248900000,0.000000000,3.626000000,481.800000000,0.000000000,4,1385.090000000,495.540000000,0.000000000,0.000000000,-394370.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,0.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,12.600000000,-0.007840000,0.000000000,0.000000000,0.000000000,0.836920000,0.261120000,744.600000000,0.242200000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,1.119000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.000000000,0.000000000,0.006400000,19684.000000000,264080.000000000,9.210000000,0.799100000,264080.000000000,9.210000000,0.799100000,0.006400000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,177000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,125410.000000000,400.580000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +16,"nitrogen","7727-37-9","inert",16,"N2",28.013500000,0.807964860,-147.050000000,33.944000000,0.040300000,-195.750000000,28.014000000,89.800000000,"Classic",8330.800000000,29.3824747474747,-0.0030260473322971763,5.771148989898619e-06,4.686124061124461e-09,-4.086538461538615e-12,"pow10",5.739210000,167.930000000,254.481000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.132506748,126.578386713,0.359188902,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394370.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.055118857,-2.346353896,1.568121600,-0.384000000,0.005250000,-0.000006370,41.000000000,720.000000000,870.000000000,0.125080000,63.150000000,63.300000000,0.000000000,192.000000000,37.870000000,-0.060272000,0.000000000,0.000000000,0.000000000,3.210000000,0.286000000,126.000000000,0.297000000,0.000000000,7490000.00000000,0.404000000,-0.317000000,0.273000000,0.000000000,0.100000000,0.574258329,-0.322594876,0.590654497,0.000000000,0.000000000,0.000000000,0.112629607,0.902199715,2.874960678,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.601899073,1,1.000000000,-21.245480450,0.000000000,0,0.000017417,0.052800000,932.300000000,0.034150000,2240.000000000,0.007507000,2004.000000000,0.094770000,1596.000000000,"yes",1.205300000,3.313000000,90.960000000,0.000000000,0.000000000,3.132506748,126.578386713,0.359188902,1.000000000,0,1150.000000000,0.011645000,2159.000000000,0.400100000,1037.180000000,0.007180000,2090.000000000,0.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.436354704,0.000000000,0.000000000,41.000000000 +17,"n-butane","106-97-8","HC",17,"C4H10",58.123000000,0.000000000,151.970000000,37.960000000,0.200200000,-0.450000000,58.124000000,255.000000000,"Classic",29278.100000000,46.117758000,0.046026304,0.000669858,-0.000000878,3.4370076e-10,"pow10",3.932660000,935.773000000,238.789000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.912500000,209.000000000,0.937900000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394370.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,-0.018486492,-4.921574519,4.858186966,-0.384000000,0.005250000,-0.000006370,191.700000000,6000.000000000,1000.000000000,0.000006762,134.860000000,138.150000000,-126150.000000000,189.000000000,15.194000000,-0.006886000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.808063555,-0.212724945,0.362961475,0.000000000,0.000000000,0.000000000,0.331800583,0.854692733,1.865828858,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,131427.400000000,7.208100000,0.707710000,0.000000000,0.000000000,0.000000000,5.764470000,1,1.000000000,-13.438500000,0.000000000,35900,0.000025768,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.001262000,4580.000000000,"yes",2.331600000,3.708600000,222.860000000,0.000000000,0.000000000,2.912500000,209.000000000,0.937900000,1.000000000,0,2691.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.052980000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.671230000,-0.038030000,0.218860000,191.700000000 +18,"HCO3-","74-82-8","ion",18,"HCO3",61.000000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,61.000000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.120000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.120000000,481.800000000,0.000000000,4.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +19,"Li+","0-0-0-0","ion",19,"Li",6.941000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,6.941000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,4.760000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.760000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +20,"K+","0-0-0-0","ion",20,"K",39.100000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,39.100000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,2.500000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.500000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +21,"Ca++","0-0-0-0","ion",21,"Ca2",40.080000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,40.080000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,6.200000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,52.878622600,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,6.200000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +22,"I-","0-0-0-0","ion",22,"I",126.900000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,126.900000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,4.320000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.320000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +23,"Sr++","0-0-0-0","ion",23,"Sr",87.620000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,32.042000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,6.200000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,6.200000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +24,"Ba++","0-0-0-0","ion",24,"Ba",137.300000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,137.300000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,5.800000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.800000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +25,"OH-","0-0-0-0","ion",25,"OH",17.001000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,17.001000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.520000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-157000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.520000000,481.800000000,0.000000000,3.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +26,"CO3--","0-0-0-0","ion",26,"CO3minus2",59.982000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,59.982000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.700000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.700000000,481.800000000,0.000000000,5.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +27,"NH4+","0-0-0-0","ion",27,"NH4",18.010000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,18.010000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"loglog",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,2.500000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.500000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +28,"Br-","0-0-0-0","ion",28,"Br",79.900000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,79.900000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.900000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.900000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +29,"n-pentane","109-66-0","HC",29,"nC5",72.150000000,0.626200000,196.550000000,33.700000000,0.251500000,36.050000000,72.151000000,304.000000000,"Classic",39036.600000000,62.803956000,-0.003059552,0.000984876,-0.000001242,4.7830442e-10,"pow10",6.852960000,1064.840000000,232.012000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.784000000,341.100000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394370.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.340000000,0.043000000,-0.384000000,0.005250000,-0.000006370,233.900000000,8401.500000000,1000.000000000,0.000000686,143.420000000,143.420000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.903861134,-0.358553152,0.663885221,0.000000000,0.000000000,0.000000000,0.319903000,0.847895000,2.102010000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,181980.000000000,9.100800000,0.798580000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,42000,0.000025865,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.689600000,3.772900000,231.200000000,0.000000000,0.000000000,5.784000000,341.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.750630000,-0.107340000,0.387070000,233.900000000 +30,"n-hexane","110-54-3","HC",30,"C6H14",86.177000000,0.664000000,234.450000000,30.250000000,0.301300000,68.750000000,86.178000000,370.000000000,"Classic",48795.100000000,73.420934000,-0.001380124,0.001189068,-0.000001522,5.9228936e-10,"log",3.456040000,1044.038000000,-53.893000000,1000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.949000000,399.300000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394370.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.340000000,0.043000000,-0.384000000,0.005250000,-0.000006370,271.000000000,13080.000000000,1000.000000000,0.000011707,177.830000000,177.830000000,-167190.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.106100000,-1.441100000,2.917300000,0.000000000,0.000000000,0.000000000,0.175874000,0.865924000,3.536480000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,236810.000000000,10.789000000,0.831300000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000025784,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.057600000,3.798300000,236.770000000,0.000000000,0.000000000,5.949000000,399.300000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.834700000,-0.318030000,1.020850000,271.000000000 +31,"benzene","71-43-2","HC",31,"C6H6",78.114000000,0.886000000,289.010000000,48.980000000,0.210800000,80.150000000,78.114000000,259.000000000,"Classic",43185.000000000,29.523014000,-0.051413776,0.001194306,-0.000001646,6.8457476e-10,"pow10",3.985230000,1184.240000000,217.572000000,0.000000000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,205.900000000,9200.000000000,1000.000000000,0.048379070,278.500000000,278.500000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.835600000,-0.375000000,0.971500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"1A",0.000000000,0.000000000,0.113470000,0.000000000,178760.000000000,7.499000000,0.757600000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,45000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000262800,5951.000000000,"no",2.465300000,3.647800000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.683090000,-0.105190000,0.667110000,205.900000000 +32,"toluene","108-88-3","HC",32,"C7H8",92.141000000,0.871000000,318.640000000,41.086000000,0.264100000,110.650000000,92.141000000,316.000000000,"Classic",52943.500000000,32.141924000,0.029581212,0.001110417,-0.000001551,6.393466e-10,"pow10",6.950870000,1342.310000000,219.187000000,0.000000000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.946900000,-0.589600000,1.213200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"1A",0.000000000,0.000000000,0.125100000,0.000000000,233750.000000000,9.214000000,0.803700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.814900000,3.716900000,285.690000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.764650000,-0.097370000,0.425650000,207.000000000 +33,"n-heptane","142-82-5","HC",33,"C7H16",100.205000000,0.690000000,267.050000000,27.400000000,0.349500000,98.450000000,100.205000000,432.000000000,"Classic",58553.600000000,80.097076000,0.034552984,0.001288171,-0.000001668,6.459978e-10,"pow10",6.896770000,1264.900000000,216.544000000,0.000000000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,311.000000000,14100.000000000,1000.000000000,0.006110000,182.570000000,182.570000000,-187800.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.160500000,-1.260600000,2.551700000,0.000000000,0.000000000,0.000000000,0.423359000,0.835150000,1.982920000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,291780.000000000,12.535000000,0.913700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.483100000,3.804900000,238.400000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.864790000,0.071560000,0.066920000,311.000000000 +34,"n-octane","111-65-9","HC",34,"C8H18",114.232000000,0.708000000,295.550000000,24.900000000,0.399600000,125.650000000,114.232000000,492.000000000,"Classic",68312.100000000,89.990736000,0.041428662,0.001475818,-0.000001923,7.465972e-10,"pow10",6.918680000,1351.990000000,209.155000000,0.000000000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,351.000000000,6000.000000000,1000.000000000,0.006110000,216.370000000,216.370000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.997500000,0.580400000,-1.207500000,0.000000000,0.000000000,0.000000000,0.367046000,0.833616000,2.365850000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348750.000000000,14.244000000,0.994150000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.817600000,3.837300000,242.780000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.963310000,-0.256300000,0.886400000,351.000000000 +35,"nC10","124-18-5","HC",35,"C10H22",142.285000000,0.734000000,344.550000000,21.100000000,0.492300000,174.150000000,142.285000000,603.000000000,"Classic",87828.400000000,111.964638000,0.034411646,0.001922778,-0.000002533,9.951858e-10,"pow10",6.943630000,1495.170000000,193.858000000,0.000000000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,431.000000000,9300.000000000,1000.000000000,0.006110000,243.450000000,243.450000000,-249700.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.140600000,0.586700000,-1.361000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,473890.000000000,17.865000000,1.132430000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",4.662700000,3.838400000,243.870000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.068180000,-0.072450000,0.436410000,431.000000000 +36,"n-nonane","111-84-2","HC",36,"C9H20",128.258000000,0.722000000,322.500000000,23.056000000,0.437700000,150.850000000,128.258000000,548.000000000,"Classic",78069.900000000,101.031728000,0.038036550,0.001697386,-0.000002226,8.700601e-10,"pow10",6.938930000,1431.820000000,202.110000000,0.000000000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,391.000000000,6000.000000000,1000.000000000,0.006110000,219.600000000,219.600000000,-228300.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,412506.100000000,16.035000000,1.046280000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000025792,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",4.207900000,3.844800000,244.510000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.041220000,-0.229190000,0.647520000,391.000000000 +37,"hydrogen","1333-74-0","HC",37,"hydrogen",2.016000000,0.000000000,-239.950000000,12.970000000,-0.220000000,-252.750000000,2.016000000,65.000000000,"Classic",-9755.849721806,23.969262000,0.030603834,-0.000064184,0.000000057,-1.770882e-11,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +38,"argon","7440-37-1","HC",38,"argon",39.948000000,0.000000000,-122.350000000,48.740000000,-0.004000000,-185.850000000,39.948000000,74.900000000,"Classic",16633.200000000,20.785000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.689500000,83.800000000,83.800000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +39,"i-butane","75-28-5","HC",39,"C4H10",58.123000000,0.000000000,134.990000000,36.480000000,0.177000000,-11.750000000,58.124000000,263.000000000,"Classic",29278.100000000,27.860214000,0.148679262,0.000455357,-0.000000673,2.6962302e-10,"pow10",4.002720000,947.540000000,248.870000000,0.000000000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,3.081016220,225.150443898,0.870818654,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,181.500000000,6000.000000000,1000.000000000,0.000000140,113.540000000,273.000000000,-134510.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.780388360,-0.273389543,0.659787119,0.000000000,0.000000000,0.000000000,0.217971280,0.848891073,2.284036968,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,129094.000000000,7.470000000,0.702100000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,24540,0.000027115,0.000000000,0.000000000,0.081890000,4013.000000000,0.000000000,0.000000000,0.081890000,4013.000000000,"yes",2.261600000,3.757400000,216.530000000,0.000000000,0.000000000,3.081016220,225.150443898,0.870818654,1.000000000,0,4000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.081640000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.656170000,-0.138700000,0.503920000,181.500000000 +40,"c-propane","74-98-6","HC",40,"C3H6",42.081000000,0.000000000,124.650000000,54.920000000,0.264000000,-32.750000000,42.081000000,170.000000000,"Classic",18117.100000000,37.354802000,-0.150458458,0.001059536,-0.000001334,5.3425764e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,132.500000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,132.500000000 +41,"Cs+","74-82-8","ion",41,"Cs+",32.042000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,32.042000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,2.380000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.380000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +42,"Rb+","74-82-8","ion",42,"Rb+",32.042000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,32.042000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,2.360000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.360000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +43,"ice","74-82-8","ice",43,"H2O",18.015000000,0.999000000,374.150000000,220.890000000,0.344000000,100.000000000,18.015000000,56.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-57.710000000,7647.000000000,0.144200000,-0.000135700,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.082928410,-1.243257568,-0.253919105,-0.384000000,0.005250000,-0.000006370,207.000000000,2700.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.090000000,-0.638000000,0.635000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"0",0.000000000,0.000000000,0.070118289,16201.000000000,11253.994270000,1.629710202,1.170113583,13855.596960000,1.456360879,0.664155324,0.046473789,1,17.387107060,-6141.762746000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +44,"nC11","1120-21-4","HC",44,"C11H24",156.300000000,0.743200000,365.850000000,19.500000000,0.530300000,195.950000000,156.300000000,660.000000000,"Classic",97578.500000000,-8.390000000,1.053000000,-0.000579900,0.000000123,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,471.000000000,22180.000000000,6860.000000000,0.006110000,247.580000000,247.580000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.155900000,-0.306210000,0.941190000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,552201.000000000,19.790900000,1.143700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",4.908200000,3.889300000,248.820000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.155900000,-0.306210000,0.941190000,471.000000000 +45,"nC12","112-40-3","HC",45,"C12H26",170.300000000,0.751300000,384.850000000,18.200000000,0.576400000,216.350000000,170.300000000,713.000020790,"Classic",107318.200000000,143.241906000,-0.060209988,0.002653995,-0.000003518,0.000000001,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,511.000000000,36820.000000000,1000.000000000,0.006110000,263.570000000,263.570000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.205870000,-0.323610000,1.076340000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,624030.000000000,21.624000000,1.195310000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",5.306000000,3.895900000,249.210000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.205870000,-0.323610000,1.076340000,511.000000000 +46,"nC13","629-50-5","HC",46,"C13H28",184.400000000,0.758000000,401.850000000,16.800000000,0.617400000,235.450000000,184.400000000,780.000000000,"Classic",117127.500000000,154.191444000,-0.063485704,0.002876976,-0.000003822,0.000000001,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,554.300000000,28501.000000000,1000.000000000,0.006110000,267.790000000,267.790000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.291160000,-0.533470000,1.483180000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,766180.000000000,25.053000000,1.290570000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",5.687700000,3.914300000,249.780000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.291160000,-0.533470000,1.483180000,554.300000000 +47,"nC14","629-59-4","HC",47,"C14H30",198.400000000,0.763900000,419.850000000,15.700000000,0.643000000,253.550000000,198.400000000,830.000000000,"Classic",126867.200000000,152.769750000,0.054747690,0.002686003,-0.000003547,0.000000001,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,594.600000000,45070.000000000,1000.000000000,0.006110000,279.020000000,279.020000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.294260000,0.020290000,0.104280000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",5.900200000,3.939600000,254.210000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.294260000,0.020290000,0.104280000,594.600000000 +48,"nC15","629-62-9","HC",48,"C15H32",212.400000000,0.769100000,434.850000000,14.800000000,0.686300000,270.650000000,212.400000000,880.000000000,"Classic",136606.900000000,176.090520000,-0.070037136,0.003323022,-0.000004430,0.000000001,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,556.300000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.414720000,-0.638900000,1.603140000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",6.285500000,3.953100000,254.140000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.414720000,-0.638900000,1.603140000,556.300000000 +49,"nC16","544-76-3","HC",49,"C16H34",226.400000000,0.773800000,443.850000000,14.190000000,0.742000000,286.850000000,226.400000000,920.000000000,"Classic",146346.600000000,330.456558000,-1.713947728,0.009545635,-0.000012932,0.000000005,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,675.200000000,47545.000000000,1000.000000000,0.006110000,291.300000000,291.300000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.430760000,-0.454150000,1.195570000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",6.648500000,3.955200000,254.700000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,675.200000000 +50,"nC17","629-78-7","HC",50,"C17H36",240.470000000,0.778000000,462.350000000,13.630000000,0.657200000,302.050000000,240.500000000,1000.000000000,"Classic",156155.900000000,197.981282000,-0.076571940,0.003768985,-0.000005038,0.000000002,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,715.500000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.463920000,-0.450710000,1.658120000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",6.980900000,3.967500000,255.650000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.463920000,-0.450710000,1.658120000,715.500000000 +51,"nC18","593-45-3","HC",51,"C18H38",254.500000000,0.781900000,473.850000000,12.700000000,0.811000000,316.350000000,254.500000000,1030.000000000,"Classic",165895.600000000,208.930820000,-0.079839342,0.003991967,-0.000005342,0.000000002,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,755.800000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.543890000,-0.705930000,1.694580000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",7.327100000,3.966800000,256.200000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.543890000,-0.705930000,1.694580000,755.800000000 +52,"nC19","629-92-5","HC",52,"C19H40",268.000000000,0.785400000,486.950000000,12.470000000,0.707300000,329.950000000,268.500000000,1085.000000000,"Classic",175635.300000000,219.880358000,-0.083123372,0.004214948,-0.000005646,0.000000002,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,796.100000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.467200000,-0.058400000,1.406340000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",7.717500000,3.972100000,256.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.467200000,-0.058400000,1.406340000,796.100000000 +53,"nC20","112-95-8","HC",53,"C20H42",282.600000000,0.788100000,493.850000000,11.150000000,0.907000000,343.850000000,282.600000000,1140.000000000,"Classic",185444.600000000,230.829896000,-0.086374146,0.004437930,-0.000005950,0.000000002,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,836.400000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.781740000,-1.488860000,3.122780000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",7.984900000,3.986900000,257.750000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,836.400000000 +54,"nC21","629-94-7","HC",54,"C21H44",296.582000000,0.791100000,506.450000000,10.740000000,0.861000000,357.550000000,296.582000000,1195.000000000,"Classic",195171.800000000,230.829896000,-0.086374146,0.004437930,95.008038000,0.040390996,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,876.700000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.829097302,-1.002129722,1.025766200,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,876.700000000 +55,"nC22","629-97-0","HC",55,"C22H46",310.000000000,0.793700000,519.050000000,11.160000000,0.777000000,369.550000000,310.609000000,1250.000000000,"Classic",204930.300000000,230.829896000,-0.086374146,0.004437930,95.008038000,0.040390996,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,917.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.880405836,-1.070711658,1.049515300,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,917.000000000 +56,"nC23","638-67-5","HC",56,"C23H48",324.636000000,0.796100000,528.750000000,10.820000000,0.799000000,381.050000000,324.636000000,1305.000000000,"Classic",214688.800000000,230.829896000,-0.086374146,0.004437930,95.008038000,0.040390996,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,957.300000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.969047395,-1.194287269,1.090271820,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,957.300000000 +57,"nC24","646-31-1","HC",57,"C24H50",338.662000000,0.798400000,533.150000000,9.320000000,0.950000000,391.950000000,338.662000000,1360.000000000,"Classic",224446.600000000,230.829896000,-0.086374146,0.004437930,95.008038000,0.040390996,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,997.600000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,2.044270695,-1.304114220,1.124593100,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,997.600000000 +58,"22-dim-C3","463-82-1","HC",58,"C5H12",72.151000000,0.653999900,160.630000000,31.992000000,0.196400000,49.750000000,72.151000000,303.000000000,"Classic",39036.600000000,-95.012392000,1.297291618,-0.002775462,0.000003336,-0.000000001,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,225.900000000,10810.000000000,1000.000000000,0.006110000,256.760000000,256.760000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,33200,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.354300000,3.955000000,225.690000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.672670000,-0.179150000,0.814600000,225.900000000 +59,"22-dim-C4","75-83-2","HC",59,"C6H14",86.178000000,0.654000000,215.630000000,30.800000000,0.233900000,49.750000000,86.178000000,359.000000000,"Classic",48795.100000000,25.000198000,0.324736526,0.000403312,-0.000000685,2.7993238e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,265.900000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.600800000,4.004200000,243.510000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.698860000,0.111900000,-0.063550000,265.900000000 +60,"23-dim-C4","79-29-8","HC",60,"C6H14",86.178000000,0.667000000,226.830000000,31.268000000,0.247500000,58.050000000,86.178000000,358.000000000,"Classic",48795.100000000,-18.407196000,0.618162528,-0.000307368,0.000000022,2.560712e-11,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,266.600000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.685300000,3.954500000,246.070000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.729270000,0.013220000,0.188750000,266.600000000 +61,"2-m-C5","107-83-5","HC",61,"C6H14",86.178000000,0.658000000,224.350000000,30.102000000,0.278100000,60.250000000,86.178000000,367.000000000,"Classic",48795.100000000,17.426144000,0.385927566,0.000259729,-0.000000567,2.4127228e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,268.800000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.931700000,3.853500000,235.580000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.767140000,0.070530000,0.053360000,268.800000000 +62,"3-m-C5","96-14-0","HC",62,"C6H14",86.178000000,0.669000000,231.280000000,31.240000000,0.273700000,63.250000000,86.178000000,367.000000000,"Classic",48795.100000000,3.599962000,0.092642902,0.000060692,-0.000000134,5.73666e-11,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,267.400000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.885200000,3.860500000,240.480000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.811810000,-0.426930000,1.213850000,267.400000000 +63,"c-C5","287-92-3","HC",63,"C5H8",70.135000000,0.669000000,238.610000000,45.023000000,0.194300000,49.250000000,70.135000000,260.000000000,"Classic",37634.100000000,41.727966000,-0.164068476,0.001489619,-0.000001803,6.829951e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,203.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.011610000,5479.000000000,"no",2.365500000,3.711400000,265.830000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.654610000,0.025740000,0.192520000,203.000000000 +64,"default","0-0-0-0","HC",64,"default",16.043000000,0.422182073,-82.586000000,45.389000000,0.008000000,-161.550000000,16.043000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-6.004350000,1.188500000,-0.834080000,-1.228330000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.165000000,154.540000000,0.383400000,3,-26.870000000,1150.000000000,0.187000000,-0.000521000,-50500.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.303000000,-0.000605000,-0.000003200,207.000000000,941.000000000,452.000000000,0.117000000,849.150000000,849.150000000,-74500.000000000,186.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,10200000.0000000,0.261000000,-0.147000000,0.222000000,0.000000000,0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.562000000,3.829600000,230.750000000,0.000000000,0.000000000,3.165000000,154.540000000,0.383400000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +65,"Piperazine","74-82-8","amine",65,"Piperazine",86.137000000,1.038000000,364.850000000,55.300000000,0.414000000,146.000000000,119.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",172.780000000,-13492.000000000,-21.910000000,0.000013780,2.000000000,1.700000000,0.000000000,0.000000000,0.000000000,3.960000000,481.800000000,0.000000000,3,-75.190000000,12680.000000000,0.157300000,-0.000122500,57900.000000000,148.900000000,0.000000000,-0.624910000,0.000771000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,-0.198420000,-2.857000000,2.037300000,0.000000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,1.074477592,0.229022552,-0.421330787,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,17.387107060,1.762745870,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.960000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +66,"Piperazine+","74-82-8","ion",66,"Piperazine+",87.137000000,1.038000000,364.840000000,55.300000000,0.414000000,146.000000000,119.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",172.780000000,-13492.000000000,-21.910000000,0.000013780,2.000000000,1.700000000,0.000000000,0.000000000,0.000000000,7.000000000,481.800000000,0.000000000,3,-75.190000000,12680.000000000,0.157300000,-0.000122500,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,7.000000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +67,"PZCOO-","74-82-8","ion",67,"PiperazineCarbamate",129.147000000,1.038000000,364.840000000,55.300000000,0.414000000,146.000000000,119.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",172.780000000,-13492.000000000,-21.910000000,0.000013780,2.000000000,1.700000000,0.000000000,0.000000000,0.000000000,5.500000000,481.800000000,0.000000000,3,-75.190000000,12680.000000000,0.157300000,-0.000122500,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.500000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +68,"H+PZCOO-","74-82-8","ion",68,"PiperazineCarbamate",130.147000000,1.038000000,729.680000000,110.600000000,0.414000000,292.000000000,119.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",172.780000000,-13492.000000000,-21.910000000,0.000013780,2.000000000,1.700000000,0.000000000,0.000000000,0.000000000,5.400000000,481.800000000,0.000000000,3,-75.190000000,12680.000000000,0.157300000,-0.000122500,57900.000000000,148.900000000,0.000000000,-0.624910000,0.000771000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.400000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +69,"-OOCPZCOO-","74-82-8","ion",69,"PiperazineCarbamate",172.157000000,1.038000000,364.840000000,55.300000000,0.414000000,146.000000000,119.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",172.780000000,-13492.000000000,-21.910000000,0.000013780,2.000000000,1.700000000,0.000000000,0.000000000,0.000000000,7.000000000,481.800000000,0.000000000,3,-75.190000000,12680.000000000,0.157300000,-0.000122500,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,7.000000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +70,"c-hexane","110-82-7","HC",70,"C6H8",84.161000000,0.783000000,280.390000000,40.748000000,0.211800000,80.750000000,84.161000000,260.000000000,"Classic",47392.600000000,33.546990000,-0.036855962,0.001399578,-0.000001727,6.4400244e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,240.800000000,6000.000000000,1000.000000000,0.053397292,279.700000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,212570.000000000,9.083800000,0.742650000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,43200,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000436500,5951.000000000,"no",2.530300000,3.849900000,278.110000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.680540000,-0.068980000,0.576480000,240.800000000 +71,"22-DM-C5","590-35-2","HC",71,"C7H16",100.204000000,0.667000000,247.250000000,27.700000000,0.287000000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,10.932910000,0.502681068,0.000233872,-0.000000633,2.8550276e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +72,"M-cy-C5","96-37-7","HC",72,"C7H16",84.161000000,0.667000000,259.640000000,37.845000000,0.230200000,100.900000000,86.178000000,358.000000000,"Classic",47392.600000000,44.721006000,-0.068657012,0.001437740,-0.000001799,6.8698582e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,258.500000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.749520000,-0.390120000,1.166130000,258.500000000 +73,"24-DM-C5","74-82-8","HC",73,"C7H16",100.204000000,0.667000000,246.640000000,27.368000000,0.301800000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,-26.047762000,0.814131822,-0.000574663,0.000000201,-2.0785e-11,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.826810000,-0.184800000,0.710800000,207.000000000 +74,"223-TM-C4","594-82-1","HC",74,"C8H18",100.204000000,0.667000000,257.950000000,29.500000000,0.250000000,58.050000000,86.178000000,358.000000000,"Classic",58553.600000000,-5.911254000,0.611594468,-0.000083721,-0.000000250,1.3161062e-10,"loglog",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +75,"33-DM-C5","74-82-8","HC",75,"C7H16",100.204000000,0.667000000,263.150000000,29.500000000,0.269000000,58.050000000,86.178000000,358.000000000,"Classic",58553.600000000,-3.990720000,0.610372310,-0.000061523,-0.000000296,1.5148108e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +76,"2-M-C6","591-76-4","HC",76,"C7H16",100.204000000,0.667000000,257.220000000,27.338000000,0.328200000,58.050000000,86.178000000,358.000000000,"Classic",58552.200000000,28.699928000,0.385545122,0.000452780,-0.000000821,3.3995946e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.868400000,-0.213840000,0.728400000,207.000000000 +77,"23-DM-C5","74-82-8","HC",77,"C7H16",100.204000000,0.667000000,264.150000000,29.100000000,0.297000000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,-35.866596000,0.804030312,-0.000536585,0.000000185,-2.602282e-11,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,,,207.000000000 +78,"11-DM-cy-C5","74-82-8","HC",78,"C7H16",100.204000000,0.667000000,226.750000000,31.310000000,0.247000000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +79,"3-M-C6","589-34-4","HC",79,"C7H16",100.204000000,0.667000000,262.100000000,28.138000000,0.321600000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"loglog",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,293.800000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.861240000,-0.239030000,0.782780000,293.800000000 +80,"cis-13-DM-cy-C5","74-82-8","HC",80,"C7H16",98.188000000,0.667000000,277.850000000,34.000000000,0.276000000,58.050000000,86.178000000,358.000000000,"Classic",57150.400000000,-20.967908000,0.503312932,0.000224727,-0.000000629,2.7943354e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +81,"trans-13-DM-cy-C5","74-82-8","HC",81,"C7H16",98.188000000,0.667000000,279.850000000,34.000000000,0.253000000,58.050000000,86.178000000,358.000000000,"Classic",57150.400000000,-20.967908000,0.503312932,0.000224727,-0.000000629,2.7943354e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +82,"trans-12-DM-cy-C5","74-82-8","HC",82,"C7H16",98.188000000,0.667000000,279.850000000,34.000000000,0.253000000,58.050000000,86.178000000,358.000000000,"Classic",57150.400000000,-54.500000000,0.759200000,-0.000448000,0.000000101,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +83,"224-TM-C5","74-82-8","HC",83,"C7H16",114.231000000,0.667000000,270.130000000,25.700000000,0.304000000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,3.192576000,0.640668526,0.000055288,-0.000000462,2.1774366e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +84,"113-TM-cy-C5","74-82-8","HC",84,"C7H16",114.231000000,0.667000000,270.130000000,25.700000000,0.304000000,58.050000000,86.178000000,358.000000000,"Classic",66908.200000000,-7.490000000,0.630100000,-0.000254000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +85,"22-DM-C6","74-82-8","HC",85,"C7H16",114.231000000,0.667000000,276.650000000,25.300000000,0.339000000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,28.699928000,0.459115708,0.000504327,-0.000000937,3.6348808e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +86,"E-cy-C5","74-82-8","HC",86,"C7H16",98.188000000,0.667000000,296.370000000,33.977000000,0.271500000,58.050000000,86.178000000,358.000000000,"Classic",57151.100000000,48.611958000,-0.000399072,0.001455531,-0.000001870,7.1965984e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,289.100000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.764250000,-0.013170000,0.287760000,289.100000000 +87,"25-DM-C6","74-82-8","HC",87,"C7H16",114.231000000,0.667000000,280.350000000,25.600000000,0.344000000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,-11.365238000,0.725687490,-0.000149568,-0.000000277,1.5439098e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +88,"24-DM-C6","74-82-8","HC",88,"C7H16",114.231000000,0.667000000,280.350000000,25.600000000,0.343600000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,-28.034808000,0.903274530,-0.000604178,0.000000180,-8.56342e-12,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.882520000,-0.209990000,0.804150000,207.000000000 +89,"cis-13-DM-cy-C6","74-82-8","HC",89,"C7H16",114.231000000,0.667000000,318.000000000,29.384000000,0.236600000,58.050000000,86.178000000,358.000000000,"Classic",66908.200000000,-65.200000000,0.883900000,-0.000493200,0.000000102,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.631300000,0.682390000,-0.768230000,207.000000000 +90,"3-M-C7","589-81-1","HC",90,"C7H16",114.231000000,0.667000000,290.520000000,25.463000000,0.371600000,58.050000000,86.178000000,358.000000000,"Classic",68310.700000000,-9.220000000,0.786000000,-0.000440000,0.000000096,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,326.600000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.927720000,-0.276050000,0.942950000,326.600000000 +91,"3-E-C6","74-82-8","HC",91,"C7H16",114.231000000,0.667000000,292.250000000,26.100000000,0.362000000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +92,"ethylbenzene","100-41-4","HC",92,"C7H16",106.168000000,0.871000000,344.020000000,36.094000000,0.303600000,58.050000000,86.178000000,358.000000000,"Classic",62702.000000000,37.778816000,0.087945492,0.001134362,-0.000001602,6.555589e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,285.900000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,288600.000000000,10.872000000,0.853900000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.828530000,-0.182090000,0.651570000,285.900000000 +93,"m-Xylene","108-38-3","HC",93,"C7H16",106.170000000,0.868000000,343.900000000,35.412000000,0.326000000,139.120000000,106.167000000,358.000000000,"Classic",62702.000000000,33.272628000,0.145802618,0.000880452,-0.000001250,4.9950512e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,301.400000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"1A",0.000000000,0.000000000,0.120000000,0.000000000,290860.000000000,10.872000000,0.868100000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.186100000,3.756300000,283.980000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.866530000,-0.187400000,0.494120000,301.400000000 +94,"p-Xylene","106-42-3","HC",94,"C7H16",106.170000000,0.667000000,343.080000000,35.108000000,0.325900000,138.360000000,106.167000000,358.000000000,"Classic",62702.000000000,34.195482000,0.123953426,0.000981883,-0.000001390,5.6003104e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,301.400000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"1A",0.000000000,0.000000000,0.120000000,0.000000000,293166.300000000,10.980000000,0.862560000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.872230000,-0.317790000,0.808790000,301.400000000 +95,"o-Xylene","95-47-6","HC",95,"C7H16",106.167000000,0.667000000,357.220000000,37.342000000,0.312700000,139.150000000,106.167000000,358.000000000,"Classic",62702.000000000,27.344746000,0.283873216,0.000414785,-0.000000692,2.7752132e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,301.400000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"1A",0.000000000,0.000000000,0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.844520000,-0.205100000,0.611540000,301.400000000 +97,"2-M-C8","3221-61-2","HC",97,"C7H16",100.204000000,0.667000000,313.600000000,22.900000000,0.421700000,58.050000000,86.178000000,358.000000000,"Classic",78069.200000000,49.168996000,0.391082246,0.000863575,-0.000001387,5.6967528e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,359.400000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,359.400000000 +98,"ethylcyclohexane","1678-91-7","HC",98,"C8H16",100.204000000,0.667000000,336.000000000,30.398000000,0.245500000,58.050000000,86.178000000,358.000000000,"Classic",66908.200000000,-63.900000000,0.889400000,-0.000510800,0.000000110,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.636370000,0.727510000,-0.813160000,207.000000000 +99,"i-pentane","78-78-4","HC",99,"iC5",72.151000000,0.626000000,187.280000000,33.812000000,0.227500000,27.800000000,72.151000000,306.000000000,"Classic",39036.600000000,16.287126000,0.317519974,0.000202362,-0.000000430,1.799981e-10,"log",72.350000000,-5010.900000000,-7.883000000,0.000008979,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.784000000,341.100000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394370.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,-0.030486678,-4.461903736,4.285718649,-0.384000000,0.005250000,-0.000006370,225.000000000,6000.000000000,1000.000000000,0.000000001,113.250000000,113.450000000,-242000.000000000,189.000000000,12.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.857887409,-0.267638226,0.458642756,0.000000000,0.000000000,0.000000000,0.342669912,0.851893781,1.921875279,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.347550000,1,1.000000000,-17.085200000,0.000000000,0,0.000027507,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.784000000,341.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.715820000,-0.100580000,0.383140000,225.000000000 +100,"H2S","7783-06-4","inert",100,"H2S",34.080000000,1.100000000,100.380000000,89.607000000,0.094200000,-59.650000000,34.080000000,98.500000000,"Classic",12550.900000000,35.467524000,-0.028583532,0.000109661,-0.000000110,4.057232e-11,"log",-6.956260000,1.196950000,-3.126140000,2.994480000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.620000000,195.200000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.059565000,0.018570000,0.000000000,-2.078000000,-0.384000000,0.005250000,-0.000006370,80.100000000,6000.000000000,1000.000000000,0.232000000,187.660000000,187.660000000,-242000.000000000,189.000000000,53.000000000,-0.007840000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.550700000,0.453400000,-0.584100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2A",0.000000000,0.000000000,0.001160489,5000.000000000,44505.000000000,2.850000000,0.602650000,0.000000000,0.000000000,0.000000000,0.000000000,1,4.436810000,-829.439000000,-25.412000000,0,0.000000000,0.009928000,2999.000000000,0.016130000,3737.000000000,0.000268400,4242.000000000,0.855300000,2325.000000000,"yes",1.694100000,3.021400000,226.790000000,0.000000000,0.000000000,3.941000000,195.200000000,0.000000000,1.000000000,0,4119.560000000,0.004000000,3141.600000000,0.295855000,2936.130000000,0.001244960,2778.000000000,0.339898000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.509090000,-0.002814000,0.362150000,80.100000000 +101,"S8","74-82-8","other",101,"S8",256.480000000,0.990000000,885.000000000,63.000000000,0.205900000,444.600000000,256.480000000,449.500000000,"Classic",68312.100000000,89.990736000,0.041428662,0.001475818,-0.000001923,7.465972e-10,"log",5.201200000,1936.281000000,-20.143000000,1000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,6.000000000,454.000000000,0.383400000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-50000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,351.000000000,12860.000000000,1000.000000000,0.000039662,392.750000000,392.750000000,0.000000000,0.000000000,12.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.990000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,8.046000000,-4600.000000000,-144.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.200000000,132.000000000,0.383400000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,351.000000000 +102,"AceticAcid","74-82-8","acid",102,"Hac",60.053000000,0.990000000,319.550000000,57.860000000,0.462000000,117.890000000,60.050000000,171.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",4.682060000,1642.540000000,-39.764000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.820000000,132.000000000,0.383400000,3,-24.000000000,1122.000000000,0.200000000,0.000000000,-50000.000000000,6.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.103200000,0.003650000,-2.064000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1000.000000000,0.000039662,250.000000000,250.000000000,0.000000000,0.000000000,12.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.990000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,8.046000000,-4600.000000000,-144.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.820000000,132.000000000,0.383400000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +103,"Ac-","74-82-8","ion",103,"Ac-",59.053000000,0.990000000,319.550000000,57.860000000,0.462000000,117.890000000,59.053000000,171.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",4.682060000,1642.540000000,-39.764000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.820000000,132.000000000,0.383400000,3,-24.000000000,1122.000000000,0.200000000,0.000000000,-50000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.103200000,0.003650000,-2.064000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1000.000000000,0.000039662,250.000000000,250.000000000,0.000000000,0.000000000,12.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.990000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,8.046000000,-4600.000000000,-144.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.820000000,132.000000000,0.383400000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +104,"neon","74-82-8","inert",104,"Ne",20.180000000,0.650000000,-228.750000000,26.652000000,-0.376000000,-248.700000000,18.050000000,25.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",29.755000000,-271.060000000,-2.608100000,0.000527000,2.000000000,1.800000000,0.076000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.004662711,-207.888073200,167.156497400,0.000000000,0.000000000,0.000000000,207.000000000,6000.000000000,1000.000000000,0.438000000,24.560000000,24.450000000,-242000.000000000,189.000000000,74.691000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.484453999,-0.508813922,0.722394513,0.000000000,0.000000000,0.000000000,0.088380472,0.940022294,3.401190177,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.756410000,1,1.000000000,-1.503000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +105,"acetone","67-64-1","other",105,"Acetone",58.080000000,0.900000000,234.950000000,48.000000000,0.559000000,64.550000000,32.042000000,99.000000000,"Classic",0.000000000,42.617564000,0.012562454,0.000476475,-0.000000596,2.2680592e-10,"pow10",7.631300000,1566.690000000,273.419000000,0.000000000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",,,,,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,1.437100000,-0.799420000,0.327800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2B",0.000000000,0.000000000,0.015400000,24476.000000000,40220.000000000,3.120000000,0.462300000,47052.000000000,3.300000000,0.903700000,0.044900000,1,17.387107060,-7582.406220000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +106,"HS-","74-82-8","ion",106,"HS-",33.080000000,1.100000000,100.050000000,89.370000000,0.100000000,-59.650000000,34.080000000,98.500000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-6.956260000,1.196950000,-3.126140000,2.994480000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.600000000,195.200000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.232000000,187.660000000,187.660000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.825200000,0.251500000,-1.703900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.001160489,5000.000000000,34369.093554000,2.706357876,0.804782959,0.000000000,0.000000000,0.000000000,0.000000000,1,4.436810000,-829.439000000,-25.412000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.600000000,195.200000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +107,"S--","74-82-8","ion",107,"S--",32.080000000,1.100000000,100.050000000,89.370000000,0.100000000,-59.650000000,34.080000000,98.500000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-6.956260000,1.196950000,-3.126140000,2.994480000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.500000000,195.200000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.232000000,187.660000000,187.660000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.825200000,0.251500000,-1.703900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,4.436810000,-829.439000000,-25.412000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.500000000,195.200000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +108,"ethanol","64-17-5","alcohol",108,"CH4O",46.069220000,0.797000000,240.770000000,61.400000000,0.644000000,64.550000000,32.042000000,99.000000000,"Classic",20891.500000000,36.548344000,0.005221192,0.000461094,-0.000000583,2.232309e-10,"pow10",5.336750000,1648.220000000,230.918000000,0.000000000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,0.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,1.437100000,-0.799420000,0.327800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2B",0.000000000,0.000000000,0.008000000,21532.010000000,86716.090000000,4.908000000,0.736900000,47052.000000000,3.300000000,0.903700000,0.044900000,1,17.387107060,-7582.406220000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.382700000,3.177100000,198.240000000,0.032380000,22060.367600000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +109,"DEA","74-82-8","amine",109,"DEA",119.163200000,1.038000000,240.750000000,61.400000000,0.644000000,140.000000000,119.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.000000000,0.000000000,0.000000000,4.500000000,481.800000000,0.000000000,3,-75.190000000,12680.000000000,0.157300000,-0.000122500,57900.000000000,-5.950000000,9276.380000000,-0.000006210,0.000000000,0.000000000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.075980000,-1.355500000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"0",0.000000000,0.000000000,0.054120713,12000.000000000,258457.097700000,10.751008890,1.364219207,376276.884000000,10.783585850,1.258298307,0.000000000,1,17.387107060,1.762745870,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.500000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +110,"DEA+","74-82-8","ion",110,"CH4O",120.163200000,1.038000000,403.850000000,38.760000000,1.242000000,64.550000000,119.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.000000000,0.000000000,0.000000000,4.400000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.400000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +111,"DEACOO-","74-82-8","ion",111,"PiperazineCarbamate",121.000000000,1.038000000,364.850000000,68.700000000,0.800000000,140.000000000,119.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.000000000,0.000000000,0.000000000,6.000000000,481.800000000,0.000000000,3,-75.190000000,12680.000000000,0.157300000,-0.000122500,57900.000000000,8.169760000,8989.300000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"0",0.000000000,0.000000000,0.054120713,12000.000000000,258457.097700000,10.751008890,1.364219207,376276.884000000,10.783585850,1.258298307,0.000000000,1,17.387107060,1.762745870,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,6.000000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +112,"Piperazine++","74-82-8","ion",112,"Piperazine++",88.137000000,1.038000000,364.850000000,68.700000000,0.800000000,140.000000000,119.160000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.000000000,0.000000000,0.000000000,3.000000000,481.800000000,0.000000000,3,-75.190000000,12680.000000000,0.157300000,-0.000122500,57900.000000000,8.169760000,8989.300000000,0.000000000,0.000000000,0.000000000,2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"0",0.000000000,0.000000000,0.054120713,12000.000000000,258457.097700000,10.751008890,1.364219207,376276.884000000,10.783585850,1.258298307,0.000000000,1,17.387107060,1.762745870,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.000000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +113,"CaCO3","74-82-8","other",113,"CaCO3",124.000000000,0.797000000,400.000000000,220.000000000,0.300000000,64.550000000,32.042000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.000000000,0.000000000,0.000000000,6.200000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,6.200000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +114,"water","7732-18-5","water",114,"H2O",18.015000000,0.999000000,374.150000000,220.890000000,0.344000000,100.000000000,18.015000000,56.000000000,"Classic",1374.600000000,36.540030000,-0.034802404,0.000116811,-0.000000130,5.254448e-11,"pow10",5.115640000,1687.537000000,230.170000000,0.000000000,0.000000000,1.800000000,0.076000000,0.235662374,0.000000000,2.520000000,809.100000000,0.000000000,3,-27.952757828,4665.225929930,0.052323342,-0.000038356,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.054783425,0.094678512,-2.267329403,-0.384000000,0.005250000,-0.000006370,52.878622600,6010.000000000,1000.000000000,0.006110000,273.160000000,273.150000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.459000000,0.305420000,647.130000000,0.081000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.087000000,-0.638000000,0.635000000,0.000000000,0.000000000,0.000000000,0.168272437,0.908482584,5.240427372,4,"4C",0.296941807,0.000718744,0.069200000,16655.000000000,12277.000000000,1.451500000,0.673590000,13855.596960000,1.456360879,0.664155324,0.046473789,1,17.387107060,-6141.762746000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",1.065600000,3.000700000,366.510000000,0.034868000,20790.819800000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-262.490000000,140.520000000,0.000000000,0.000000000,0.000000000,276370.000000000,-2090.100000000,8.125000000,-0.014116000,0.000009370,0.923656000,-0.379370000,0.442429000,52.419867266 +115,"F-","74-82-8","ion",115,"F-",19.000000000,1.000000000,444.150000000,290.890000000,0.344000000,64.550000000,19.000000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,2.720000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-157000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.720000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +116,"Fe++","74-82-8","ion",116,"Fe++",55.850000000,0.797000000,444.150000000,290.890000000,0.344000000,55.850000000,40.080000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,6.000000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,6.000000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +117,"Rb+","74-82-8","ion",117,"Rb+",85.470000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,85.470000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,2.360000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,1.038000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.360000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +118,"Pb++","74-82-8","ion",118,"Pb++",207.200000000,0.797000000,444.150000000,290.890000000,0.344000000,64.550000000,207.200000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,5.660000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,1.038000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.660000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +119,"NO3-","74-82-8","ion",119,"NO3-",62.000000000,0.797000000,444.150000000,290.890000000,0.344000000,62.000000000,126.900000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.120000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.120000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +120,"ClO4-","74-82-8","ion",120,"ClO4-",99.450000000,0.797000000,444.150000000,290.890000000,0.344000000,62.000000000,99.450000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.640000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.640000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +121,"SO4--","74-82-8","ion",121,"SO4--",96.070000000,0.797000000,444.150000000,290.890000000,0.344000000,62.000000000,96.070000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.410000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.410000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +123,"helium","7440-59-7","inert",123,"helium",4.003000000,0.000000000,-267.959999942,2.270000000,-0.390031993,-268.940009975,4.003000000,65.000000914,"Classic",0.000000000,20.785000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +124,"c-C7","291-64-5","HC",124,"C7H14",98.189000000,0.813000000,331.150000000,38.402000000,0.243000000,118.450000000,98.189000000,353.000000000,"Classic",57151.100000000,-76.200000000,0.786800000,-0.000420400,0.000000075,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,289.100000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.663700000,3.999300000,283.330000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.738330000,-0.220550000,0.876880000,289.100000000 +125,"c-C8","292-64-8","HC",125,"C8H16",112.216000000,0.837000000,366.850000000,34.800000000,0.290400000,148.850000000,112.216000000,410.000000000,"Classic",66909.600000000,35.218104000,0.109071366,0.001356262,-0.000001751,6.6403918e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,321.900000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.825600000,4.103900000,294.040000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.809160000,-0.144450000,0.526580000,321.900000000 +126,"CO","630-08-0","inert",126,"CO",28.011000000,1.100000000,-140.200994873,34.987500000,0.093000002,-191.450399780,44.010000000,94.000000000,"Classic",0.000000000,32.524368000,-0.032532682,0.000098271,-0.000000108,4.28171e-11,"log",140.540000000,-4735.000000000,-21.268000000,0.040909000,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.340000000,168.770000000,0.680500000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",94.491400000,-6789.040000000,-11.451900000,-0.010454000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,5.204412066,216.580000000,216.592000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.881738930,-0.856255022,3.094939327,0.000000000,0.000000000,0.000000000,1.413601068,-0.605965449,1.101814948,1,"1A",0.000000000,0.000000000,0.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,6.812280000,-1301.679000000,-3.494000000,26100,0.000037687,4.856e-11,7196.900000000,0.098620000,2343.900000000,0.000060820,3417.900000000,0.168300000,2317.900000000,"yes",1.309700000,3.250700000,92.150000000,0.000000000,0.000000000,2.340000000,168.770000000,0.680500000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +127,"methanolPVTsim","74-82-8","alcohol",127,"CH4O",32.042000000,0.797000000,239.450000000,80.960000000,0.559000000,64.550000000,32.042000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.200000000,0.000000000,3.626000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,0.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,1.437100000,-0.799420000,0.327800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2B",0.000000000,0.000000000,0.016100000,24591.000000000,40531.000000000,3.097800000,0.431020000,47052.000000000,3.300000000,0.903700000,0.044900000,1,17.387107060,-7582.406220000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",1.525500000,3.230000000,188.900000000,0.035176000,24106.443000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +128,"MEGPVTsim18","74-82-8","glycol",128,"C2H6O2",62.069000000,1.117000000,446.850000000,90.000000000,0.534700000,197.350000000,62.069000000,186.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"exp",13.629900000,6022.180000000,-28.250000000,0.000000000,0.000000000,2.308200000,0.215000000,0.248800000,0.000000000,3.626000000,481.800000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.654009012,-3.955117195,3.671191916,0.517338954,-0.000798169,0.000000064,0.000000000,9960.000000000,904.000000000,0.000002420,260.000000000,260.000000000,-388000.000000000,324.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,82900000.0000000,0.427000000,0.000000000,0.000000000,0.000000000,1.117000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.000000000,0.000000000,0.014100000,19752.000000000,108190.000000000,5.140000000,0.674400000,108190.000000000,5.140000000,0.674400000,0.051400000,1,17.090887000,-7800.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +129,"MEGPVTsim19","74-82-8","glycol",129,"C2H6O2",62.069000000,1.117000000,446.850000000,90.000000000,0.534700000,197.350000000,62.069000000,186.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"exp",13.629900000,6022.180000000,-28.250000000,0.000000000,0.000000000,2.308200000,0.215000000,0.248800000,0.000000000,3.626000000,481.800000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.654009012,-3.955117195,3.671191916,0.517338954,-0.000798169,0.000000064,0.000000000,9960.000000000,904.000000000,0.000002420,260.000000000,260.000000000,-388000.000000000,324.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,82900000.0000000,0.427000000,0.000000000,0.000000000,0.000000000,1.117000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.000000000,0.000000000,0.014100000,19752.000000000,108190.000000000,5.140000000,0.674400000,108190.000000000,5.140000000,0.674400000,0.051400000,1,17.090887000,-7800.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +130,"propanePVTsim","74-82-8","HC",130,"CH4O",44.097000000,0.000000000,96.650000000,42.460000000,0.152000000,-42.050000000,44.097000000,203.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",59.078000000,-3492.600000000,-6.066900000,0.000010919,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.320577362,205.885946142,0.662379685,3,-7.764000000,722.000000000,0.023800000,-0.000046700,-24400.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,-0.015069991,-4.344143673,4.007325591,-0.384000000,0.005250000,-0.000006370,151.900000000,6000.000000000,1000.000000000,0.000000001,85.470000000,85.500000000,-103840.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.721211486,-0.099216642,0.181829227,0.000000000,0.000000000,0.000000000,0.435825883,0.866132179,1.395432818,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.248690000,1,1.000000000,-11.125400000,0.000000000,28500,0.000024973,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.008264000,4521.000000000,"yes",2.002000000,3.618400000,208.110000000,0.000000000,0.000000000,3.320577362,205.885946142,0.662379685,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,151.900000000 +131,"ethanolPVTsim","74-82-8","alcohol",131,"CH4O",46.069220000,0.797000000,240.750000000,61.400000000,0.644000000,64.550000000,32.042000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,0.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,1.437100000,-0.799420000,0.327800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2B",0.000000000,0.000000000,0.008000000,21500.000000000,85164.000000000,4.910000000,0.750200000,47052.000000000,3.300000000,0.903700000,0.044900000,1,17.387107060,-7582.406220000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.382700000,3.177100000,198.240000000,0.032380000,22060.367600000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +132,"nbutanePVTsim","74-82-8","HC",132,"C4H10",58.124000000,0.000000000,152.050000000,37.996880000,0.193000000,-0.450000000,58.124000000,255.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",66.343000000,-4363.200000000,-7.046000000,0.000009450,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.912500000,209.000000000,0.937900000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394370.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,-0.018486492,-4.921574519,4.858186966,-0.384000000,0.005250000,-0.000006370,191.700000000,6000.000000000,1000.000000000,0.000006762,134.860000000,138.150000000,-126150.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.808063555,-0.212724945,0.362961475,0.000000000,0.000000000,0.000000000,0.331800583,0.854692733,1.865828858,0,"0",0.000000000,0.000000000,0.008000000,21532.010000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.764470000,1,1.000000000,-13.438500000,0.000000000,35900,0.000025768,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.001262000,4580.000000000,"yes",2.331600000,3.708600000,222.860000000,0.000000000,0.000000000,2.912500000,209.000000000,0.937900000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,191.700000000 +133,"mercury","7439-97-6","other",133,"Hg",200.600000000,13.500000000,1462.000000000,1608.000000000,-0.164500000,356.600000000,200.600000000,56.350000000,"Classic",0.000000000,20.800000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-6.000000000,1.000000000,-0.300000000,-1.223000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.200000000,132.000000000,0.383400000,3,-24.000000000,1122.000000000,0.200000000,0.000000000,-50000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2295.000000000,1000.000000000,0.000039662,234.300000000,234.300000000,0.000000000,0.000000000,0.069794107,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.990000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.092450000,0.978400000,2.244000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,8.046000000,-4600.000000000,-144.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.200000000,132.000000000,0.383400000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.149100000,-0.165200000,0.144700000,0.000000000 +134,"propylbenzene","103-65-1","HC",134,"C9H12",106.168000000,0.871000000,365.230000000,36.090000000,0.304000000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,39.566326000,0.199170184,0.000985957,-0.000001446,5.8730096e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.000000001,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +136,"NaCl","0-0-0-0","NaCl",136,"H2O",58.442768096,0.999000000,375.150000000,220.890000000,0.344000000,100.000000000,58.443000000,56.000000000,"Classic",29500.000000000,-2290.000000000,12.780000000,-0.021440000,0.000000000,0.000000000,"log10",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.235662374,0.000000000,2.520000000,809.100000000,0.000000000,3,-57.710000000,7647.000000000,0.144200000,-0.000135700,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.054783425,0.094678512,-2.267329403,-0.384000000,0.005250000,-0.000006370,207.000000000,6010.000000000,1000.000000000,0.006110000,273.160000000,273.150000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.087000000,-0.638000000,0.635000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.000000000,0.000000000,0.069200000,166550.000000000,12277.000000000,1.451500000,0.673590000,13855.596960000,1.456360879,0.664155324,0.046473789,1,17.387107060,-6141.762746000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",1.065600000,3.000700000,366.510000000,0.034868000,20790.819800000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +137,"CaCl2","74-82-8","CaCl2",137,"H2O",110.984800000,0.999000000,375.150000000,220.890000000,0.344000000,100.000000000,110.984800000,56.000000000,"Classic",66053.900000000,-1550.000000000,7.220000000,-0.001958000,0.000000000,0.000000000,"log10",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.235662374,0.000000000,2.520000000,809.100000000,0.000000000,3,-57.710000000,7647.000000000,0.144200000,-0.000135700,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.054783425,0.094678512,-2.267329403,-0.384000000,0.005250000,-0.000006370,207.000000000,6010.000000000,1000.000000000,0.006110000,273.160000000,273.150000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.087000000,-0.638000000,0.635000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.000000000,0.000000000,0.069200000,166550.000000000,12277.000000000,1.451500000,0.673590000,13855.596960000,1.456360879,0.664155324,0.046473789,1,17.387107060,-6141.762746000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",1.065600000,3.000700000,366.510000000,0.034868000,20790.819800000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +139,"SF6","74-82-8","inert",139,"SF6",146.000000000,1.100000000,45.850000000,37.600000000,0.210000000,-68.250000000,34.080000000,98.500000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-6.956260000,1.196950000,-3.126140000,2.994480000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.620000000,195.200000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.059565000,0.018570000,0.000000000,-2.078000000,-0.384000000,0.005250000,-0.000006370,80.100000000,6000.000000000,1000.000000000,0.232000000,187.660000000,187.660000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.825200000,0.251500000,-1.703900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2A",0.000000000,0.000000000,0.001160489,5000.000000000,44505.000000000,2.850000000,0.602650000,0.000000000,0.000000000,0.000000000,0.000000000,1,4.436810000,-829.439000000,-25.412000000,0,0.000000000,0.009928000,2999.000000000,0.016130000,3737.000000000,0.000268400,4242.000000000,0.855300000,2325.000000000,"yes",1.694100000,3.021400000,226.790000000,0.000000000,0.000000000,3.941000000,195.200000000,0.000000000,1.000000000,0,4119.560000000,0.004000000,3141.600000000,0.295855000,2936.130000000,0.001244960,2778.000000000,0.339898000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,80.100000000 +140,"R12","74-82-8","inert",140,"SF6",121.000000000,1.100000000,111.850000000,41.400000000,0.176000000,-30.150000000,34.080000000,98.500000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-6.956260000,1.196950000,-3.126140000,2.994480000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.620000000,195.200000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.059565000,0.018570000,0.000000000,-2.078000000,-0.384000000,0.005250000,-0.000006370,80.100000000,6000.000000000,1000.000000000,0.232000000,187.660000000,187.660000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.825200000,0.251500000,-1.703900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2A",0.000000000,0.000000000,0.001160489,5000.000000000,44505.000000000,2.850000000,0.602650000,0.000000000,0.000000000,0.000000000,0.000000000,1,4.436810000,-829.439000000,-25.412000000,0,0.000000000,0.009928000,2999.000000000,0.016130000,3737.000000000,0.000268400,4242.000000000,0.855300000,2325.000000000,"yes",1.694100000,3.021400000,226.790000000,0.000000000,0.000000000,3.941000000,195.200000000,0.000000000,1.000000000,0,4119.560000000,0.004000000,3141.600000000,0.295855000,2936.130000000,0.001244960,2778.000000000,0.339898000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,80.100000000 +141,"R134a","74-82-8","inert",141,"SF6",102.000000000,1.100000000,100.850000000,40.700000000,0.332000000,-26.550000000,34.080000000,98.500000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-6.956260000,1.196950000,-3.126140000,2.994480000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.620000000,195.200000000,0.000000000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",0.000000000,0.000000000,0.000000000,0.059565000,0.018570000,0.000000000,-2.078000000,-0.384000000,0.005250000,-0.000006370,80.100000000,6000.000000000,1000.000000000,0.232000000,187.660000000,187.660000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.825200000,0.251500000,-1.703900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2A",0.000000000,0.000000000,0.001160489,5000.000000000,44505.000000000,2.850000000,0.602650000,0.000000000,0.000000000,0.000000000,0.000000000,1,4.436810000,-829.439000000,-25.412000000,0,0.000000000,0.009928000,2999.000000000,0.016130000,3737.000000000,0.000268400,4242.000000000,0.855300000,2325.000000000,"yes",1.694100000,3.021400000,226.790000000,0.000000000,0.000000000,3.941000000,195.200000000,0.000000000,1.000000000,0,4119.560000000,0.004000000,3141.600000000,0.295855000,2936.130000000,0.001244960,2778.000000000,0.339898000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,80.100000000 +142,"COS","74-82-8","inert",142,"COS",60.075100000,1.100000000,105.650000000,63.490000000,0.097011900,-191.500000000,44.010000000,94.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",140.540000000,-4735.000000000,-21.268000000,0.040909000,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.340000000,168.770000000,0.680500000,2,-7.811000000,3140.000000000,0.000000000,0.000000000,-394000.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",94.491400000,-6789.040000000,-11.451900000,-0.010454000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,78.000000000,9018.969300000,1000.000000000,5.185000000,216.580000000,216.592000000,-393500.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.100000000,0.881738930,-0.856255022,3.094939327,0.000000000,0.000000000,0.000000000,1.413601068,-0.605965449,1.101814948,2,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,6.812280000,-1301.679000000,-3.494000000,26100,0.000037687,4.856e-11,7470.000000000,0.098620000,2617.000000000,0.000060820,3691.000000000,0.168300000,2591.000000000,"yes",1.309700000,3.250700000,92.150000000,0.000000000,0.000000000,3.037207160,170.162382832,0.684633880,1.000000000,0,2119.560000000,0.000758596,2500.000000000,0.231198000,2419.560000000,0.007244960,2330.000000000,0.139898000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,78.000000000 +143,"2-M-C7","592-27-8","HC",143,"C8H18",114.230000000,0.422182073,286.490000000,24.845000000,0.376900000,117.700000000,16.043000000,99.000000000,"Classic",68310.700000000,43.706698000,0.342437032,0.000809700,-0.000001304,5.462298e-10,"log",39.205000000,-1324.400000000,-3.436600000,0.000031019,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,155.809006022,0.406998625,3,-26.870000000,1150.000000000,0.187000000,-0.000521000,-50500.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",900.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.303000000,-0.000605000,-0.000003200,77.300000000,941.000000000,452.000000000,0.116656057,90.690000000,90.650000000,-74520.000000000,186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,10200000.0000000,0.261000000,-0.147000000,0.222000000,0.000000000,0.100000000,0.585700000,-0.720600000,1.289900000,0.000000000,0.000000000,0.000000000,0.122841598,0.914470789,2.741978611,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.186260000,1,1.000000000,-6.680820000,0.000000000,9700,0.000015293,0.047920000,1594.000000000,0.012440000,2952.000000000,0.002317000,2777.000000000,1.076000000,1323.000000000,"yes",1.000000000,3.703900119,150.029998779,0.000000000,0.000000000,3.190710941,155.809006022,0.406998625,1.000000000,0,900.000000000,0.000621000,2760.000000000,0.421000000,1963.100000000,0.004048680,2636.750000000,0.295270000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.932700000,-0.215400000,0.774700000,77.300000000 +144,"M-cy-C6","108-87-2","HC",144,"C7H14",98.190000000,0.422182073,299.040000000,34.714000000,0.235000000,100.900000000,16.043000000,99.000000000,"Classic",57151.100000000,26.172472000,0.153293532,0.001132699,-0.000001562,6.1224296e-10,"log",39.205000000,-1324.400000000,-3.436600000,0.000031019,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,155.809006022,0.406998625,3,-26.870000000,1150.000000000,0.187000000,-0.000521000,-50500.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",900.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.303000000,-0.000605000,-0.000003200,77.300000000,941.000000000,452.000000000,0.116656057,90.690000000,90.650000000,-74520.000000000,186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,10200000.0000000,0.261000000,-0.147000000,0.222000000,0.000000000,0.100000000,0.585700000,-0.720600000,1.289900000,0.000000000,0.000000000,0.000000000,0.122841598,0.914470789,2.741978611,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.186260000,1,1.000000000,-6.680820000,0.000000000,9700,0.000015293,0.047920000,1594.000000000,0.012440000,2952.000000000,0.002317000,2777.000000000,1.076000000,1323.000000000,"yes",1.000000000,3.703900119,150.029998779,0.000000000,0.000000000,3.190710941,155.809006022,0.406998625,1.000000000,0,900.000000000,0.000621000,2760.000000000,0.421000000,1963.100000000,0.004048680,2636.750000000,0.295270000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.716190000,-0.020430000,0.339640000,77.300000000 +145,"i-p-cy-C5","3875-51-2","HC",145,"C8H16",112.220000000,0.422182073,320.100000000,30.408000000,0.302900000,126.400000000,16.043000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",39.205000000,-1324.400000000,-3.436600000,0.000031019,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,155.809006022,0.406998625,3,-26.870000000,1150.000000000,0.187000000,-0.000521000,-50500.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",900.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.303000000,-0.000605000,-0.000003200,77.300000000,941.000000000,452.000000000,0.116656057,90.690000000,90.650000000,-74520.000000000,186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,10200000.0000000,0.261000000,-0.147000000,0.222000000,0.000000000,0.100000000,0.585700000,-0.720600000,1.289900000,0.000000000,0.000000000,0.000000000,0.122841598,0.914470789,2.741978611,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.186260000,1,1.000000000,-6.680820000,0.000000000,9700,0.000015293,0.047920000,1594.000000000,0.012440000,2952.000000000,0.002317000,2777.000000000,1.076000000,1323.000000000,"yes",1.000000000,3.703900119,150.029998779,0.000000000,0.000000000,3.190710941,155.809006022,0.406998625,1.000000000,0,900.000000000,0.000621000,2760.000000000,0.421000000,1963.100000000,0.004048680,2636.750000000,0.295270000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.617780000,0.843540000,-1.066370000,77.300000000 +146,"cis-12-DM-cy-C6","2207-01-4","HC",146,"C",112.220000000,0.422182073,333.000000000,29.384000000,0.232400000,129.700000000,16.043000000,99.000000000,"Classic",66909.600000000,-68.400000000,0.897300000,-0.000513700,0.000000109,0.000000000,"log",39.205000000,-1324.400000000,-3.436600000,0.000031019,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,155.809006022,0.406998625,3,-26.870000000,1150.000000000,0.187000000,-0.000521000,-50500.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",900.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.303000000,-0.000605000,-0.000003200,77.300000000,941.000000000,452.000000000,0.116656057,90.690000000,90.650000000,-74520.000000000,186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,10200000.0000000,0.261000000,-0.147000000,0.222000000,0.000000000,0.100000000,0.585700000,-0.720600000,1.289900000,0.000000000,0.000000000,0.000000000,0.122841598,0.914470789,2.741978611,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.186260000,1,1.000000000,-6.680820000,0.000000000,9700,0.000015293,0.047920000,1594.000000000,0.012440000,2952.000000000,0.002317000,2777.000000000,1.076000000,1323.000000000,"yes",1.000000000,3.703900119,150.029998779,0.000000000,0.000000000,3.190710941,155.809006022,0.406998625,1.000000000,0,900.000000000,0.000621000,2760.000000000,0.421000000,1963.100000000,0.004048680,2636.750000000,0.295270000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.628820000,0.701140000,-0.784370000,77.300000000 +147,"234-TM-C5","565-75-3","HC",147,"C8H18",114.230000000,0.422182073,293.150000000,27.300000000,0.316100000,113.500000000,16.043000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",39.205000000,-1324.400000000,-3.436600000,0.000031019,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,155.809006022,0.406998625,3,-26.870000000,1150.000000000,0.187000000,-0.000521000,-50500.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",900.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.303000000,-0.000605000,-0.000003200,77.300000000,941.000000000,452.000000000,0.116656057,90.690000000,90.650000000,-74520.000000000,186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,10200000.0000000,0.261000000,-0.147000000,0.222000000,0.000000000,0.100000000,0.585700000,-0.720600000,1.289900000,0.000000000,0.000000000,0.000000000,0.122841598,0.914470789,2.741978611,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.186260000,1,1.000000000,-6.680820000,0.000000000,9700,0.000015293,0.047920000,1594.000000000,0.012440000,2952.000000000,0.002317000,2777.000000000,1.076000000,1323.000000000,"yes",1.000000000,3.703900119,150.029998779,0.000000000,0.000000000,3.190710941,155.809006022,0.406998625,1.000000000,0,900.000000000,0.000621000,2760.000000000,0.421000000,1963.100000000,0.004048680,2636.750000000,0.295270000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.851190000,-0.242120000,0.782340000,77.300000000 +148,"1,2-DM-cyC5","74-82-8","HC",148,"C",98.000000000,0.871000000,280.000000000,34.450000000,0.269800000,58.050000000,86.178000000,358.000000000,"Classic",57150.400000000,-54.500000000,0.759200000,-0.000448000,0.000000101,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.795360000,-0.299230000,0.780210000,207.000000000 +149,"1,3-dDM-cyC5","74-82-8","HC",149,"C",98.000000000,0.871000000,283.320000000,34.370000000,0.271000000,58.050000000,86.178000000,358.000000000,"Classic",57150.400000000,-5.750000000,0.553000000,-0.000222000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.798170000,-0.320050000,0.805530000,207.000000000 +150,"1,cis-2,trans-4-TMcyC5","4850-28-6","HC",150,"C",112.000000000,0.871000000,309.060000000,28.540000000,0.265000000,116.700000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.634030000,0.761470000,-0.912740000,207.000000000 +151,"2,3-DM-C6","584-94-1","HC",151,"C",114.230000000,0.871000000,290.250000000,26.300000000,0.347200000,115.600000000,86.178000000,358.000000000,"Classic",0.000000000,-29.880516000,0.839572662,-0.000405723,-0.000000028,6.559746e-11,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.896210000,-0.274640000,0.890890000,207.000000000 +152,"3-M-C8","2216-33-3","HC",152,"C",106.168000000,0.871000000,365.230000000,36.090000000,0.304000000,144.200000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +153,"2,2-DM-C7","1071-26-7","HC",153,"C",128.260000000,0.871000000,303.650000000,23.500000000,0.389900000,132.700000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +154,"2,6-DM-C7","1072-05-5","HC",154,"C",128.260000000,0.871000000,305.850000000,23.000000000,0.392700000,135.200000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +155,"1,1,3-TM-cy-C6","3073-66-3","HC",155,"C",126.240000000,0.871000000,338.910000000,28.750000000,0.267000000,136.600000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +156,"1,2,3-TMcyC6","2","HC",156,"C",126.000000000,0.871000000,348.160000000,27.400000000,0.290000000,142.000000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +157,"4-M-C8","2216-34-4","HC",157,"C",128.260000000,0.871000000,314.500000000,23.406000000,0.413000000,142.400000000,86.178000000,358.000000000,"Classic",78069.200000000,12.300000000,0.755100000,-0.000290000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +158,"o-E-toluene","74-82-8","HC",158,"C",120.000000000,0.871000000,378.000000000,30.397000000,0.293200000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +159,"1,2,3-TM-Benzene","526-73-8","HC",159,"CH4",120.190000000,0.871000000,391.380000000,34.540000000,0.366400000,176.100000000,86.178000000,358.000000000,"Classic",72460.500000000,33.605188000,0.258997728,0.000846780,-0.000001352,5.7549508e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.916460000,-0.128040000,0.269930000,207.000000000 +160,"cy-C9","293-55-0","HC",160,"C",126.240000000,0.871000000,408.890000000,33.440000000,0.268000000,178.400000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +161,"2-E-p-xylene","1758-88-9","HC",161,"C",134.000000000,0.871000000,389.850000000,28.800000000,0.411400000,186.800000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +162,"nC5-Benzene","74-82-8","HC",162,"C",148.250000000,0.871000000,406.800000000,26.060000000,0.437600000,478.610000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +163,"nC6-Benzene","74-82-8","HC",163,"C",162.000000000,0.871000000,424.350000000,23.800000000,0.480000000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +164,"nC7-Benzene","74-82-8","HC",164,"C",176.000000000,0.871000000,440.850000000,21.800000000,0.528700000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +165,"nC10-cy-C5","74-82-8","HC",165,"C",210.400000000,0.871000000,459.230000000,17.090000000,0.631400000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.301270000,-0.291030000,1.099920000,207.000000000 +166,"nC8-Benzene","74-82-8","HC",166,"C",190.000000000,0.871000000,455.000000000,20.340000000,0.590900000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +167,"nC9-Benzene","74-82-8","HC",167,"C",204.000000000,0.871000000,467.700000000,18.960000000,0.652300000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +168,"3-M-4,4-DE-heptane","3","HC",168,"C",170.300000000,0.871000000,380.360000000,18.220000000,0.461000000,204.000000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +169,"nC12-cy-C5","74-82-8","HC",169,"C",238.460000000,0.871000000,485.740000000,15.198000000,0.716300000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +170,"nC10-Benzene","74-82-8","HC",170,"C",218.000000000,0.871000000,479.850000000,17.700000000,0.681200000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +171,"nC14-cy-C5","74-82-8","HC",171,"C",266.510000000,0.871000000,509.190000000,13.685000000,0.794900000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +172,"nC17-cy-C5","74-82-8","HC",172,"C",308.590000000,0.871000000,538.010000000,11.906000000,0.906000000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +173,"nC27","593-49-7","HC",173,"C",380.000000000,0.871000000,563.150000000,9.750000000,0.881300000,422.100000000,86.178000000,358.000000000,"Classic",253722.100000000,-22.400000000,2.570000000,-0.001448000,0.000000316,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,2.151136109,-1.467770498,1.172942447,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +174,"nC34","1","HC",174,"C",478.000000000,0.871000000,587.500000000,5.430000000,1.435000000,482.000000000,86.178000000,358.000000000,"Classic",322031.500000000,-28.400000000,3.233000000,-0.001827000,0.000000400,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,2.675042510,-2.391792157,1.403453500,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +175,"nC39","74-82-8","HC",175,"C",548.000000000,0.871000000,638.850000000,8.210000000,1.088900000,58.050000000,86.178000000,358.000000000,"Classic",370824.000000000,-32.700000000,3.706000000,-0.002098000,0.000000460,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,2.806629230,-2.653605683,1.459756561,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +176,"1,2,4-TMcyC6","74-82-8","HC",176,"C",126.000000000,0.871000000,340.600000000,26.750000000,0.261900000,58.050000000,86.178000000,358.000000000,"Classic",0.000000000,32.239000000,0.001910000,0.000010600,-0.000000003,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +177,"nC30","638-68-6","HC",177,"C30H62",422.800000000,0.871000000,589.900000000,8.680000000,1.307000000,449.700000000,86.178000000,358.000000000,"Classic",282997.500000000,-25.000000000,2.854000000,-0.001610000,0.000000352,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,2.434590893,-1.943459444,1.298957460,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +178,"1-propanol","71-23-8","alcohol",178,"CH4O",60.096000000,0.803000000,263.630000000,51.749700000,0.621800000,64.550000000,60.096000000,99.000000000,"Classic",20891.500000000,36.548344000,0.005221192,0.000461094,-0.000000583,2.232309e-10,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,0.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,1.437100000,-0.799420000,0.327800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2B",0.000000000,0.000000000,0.008100000,21000.000040000,119102.004700000,6.411000000,0.917090000,47052.000000000,3.300000000,0.903700000,0.044900000,1,17.387107060,-7582.406220000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.382700000,3.177100000,198.240000000,0.032380000,22060.367600000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +179,"i-propanol","67-63-0","alcohol",179,"CH4O",60.096000000,0.797000000,235.150000000,47.619700000,0.667700000,64.550000000,32.042000000,99.000000000,"Classic",20891.500000000,36.548344000,0.005221192,0.000461094,-0.000000583,2.232309e-10,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,0.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,1.437100000,-0.799420000,0.327800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2B",0.000000000,0.000000000,0.009100000,21000.000040000,106018.994500000,6.411000000,0.946800000,47052.000000000,3.300000000,0.903700000,0.044900000,1,17.387107060,-7582.406220000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",2.382700000,3.177100000,198.240000000,0.032380000,22060.367600000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +180,"c-C4","287-23-0","HC",180,"C4H8",56.108000000,0.669000000,186.750000000,49.850000000,0.209000000,12.550000000,56.108000000,210.000000000,"Classic",27875.600000000,-50.300000000,0.502400000,0.502400000,-0.000001803,6.829951e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,203.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.011610000,5479.000000000,"no",2.365500000,3.711400000,265.830000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.654610000,0.025740000,0.192520000,203.000000000 +181,"33-DM-C6","563-16-6","HC",181,"C8H18",114.232002258,0.712800000,288.870019531,26.536201171,0.326000005,111.972009277,114.232002258,443.000000000,"Classic",58553.600000000,-3.990720000,0.610372310,-0.000061523,-0.000000296,1.5148108e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +182,"n-Bcychexane","1678-93-9","HC",182,"C10H20",140.268005371,0.801400000,393.889001464,31.508701171,0.361990004,180.981011962,140.268005371,534.100000000,"Classic",58553.600000000,-3.990720000,0.610372310,-0.000061523,-0.000000296,1.5148108e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +183,"Pent-CC6","4292-92-6","HC",183,"C11H22",154.300003051,0.806800000,400.850000000,23.300000000,0.412999004,203.748010253,154.300003051,584.500000000,"Classic",58553.600000000,-3.990720000,0.610372310,-0.000061523,-0.000000296,1.5148108e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +184,"nC25","629-99-2","HC",184,"C25H52",352.680000000,0.871000000,583.850000000,9.500000000,1.105300000,402.000000000,86.178000000,358.000000000,"Classic",0.000000000,-46.500000000,0.309000000,0.002870000,-0.000000709,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,2.102220000,-1.391760000,1.150870000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +185,"nC26","630-01-3","HC",185,"C26H54",366.707000000,0.871000000,545.850000000,9.100000000,1.154400000,412.000000000,86.178000000,358.000000000,"Classic",0.000000000,-49.600000000,0.315000000,0.002870000,-0.000000710,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,2.185710000,-1.522600000,1.188490000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +186,"nC28","630-02-4","HC",186,"C28H58",394.769000000,0.871000000,558.850000000,8.500000000,1.237500000,431.000000000,86.178000000,358.000000000,"Classic",0.000000000,-55.000000000,0.324000000,0.002870000,-0.000000711,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,2.328469312,-1.758470734,1.252148750,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +187,"nC29","630-03-5","HC",187,"C29H60",408.800000000,0.871000000,562.550000000,6.918000000,1.200500000,431.000000000,86.178000000,358.000000000,"Classic",0.000000000,-55.000000000,0.324000000,0.002870000,-0.000000711,0.000000000,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,2.264748174,-1.651320047,1.223831870,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,348210.000000000,12.685000000,0.911700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",3.079900000,3.797400000,287.350000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +1116,"Hg++","74-82-8","ion",116,"Hg++",55.850000000,0.797000000,444.150000000,290.890000000,0.344000000,55.850000000,40.080000000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.000000000,0.000000000,6.000000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,-587000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,6.000000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,207.000000000 +1143,"glycerol","112-27-6","glycol",14,"C6H14O4",150.175000000,1.127000000,492.950000000,33.130000000,1.287400000,278.300000000,150.175000000,450.000000000,"Classic",93317.400000000,86.400000000,0.600800000,-0.000362200,0.000000072,0.000000000,"log",6.756800000,3715.222000000,-1.299000000,0.000000000,0.000000000,2.200000000,0.215000000,0.242773578,0.000000000,3.626000000,481.800000000,0.000000000,3,-53.925230000,9741.992000000,0.106066000,-0.000075802,-394370.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.394142583,-0.000547836,0.000000000,358.332712000,15900.000000000,1000.000000000,0.006110000,268.250000000,268.250000000,-242000.000000000,189.000000000,8.890000000,-0.007840000,0.000000000,0.000000000,0.000000000,0.596600000,0.262270000,769.500000000,0.245500000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,1.127000000,1.376906087,1.788921526,-4.378737499,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.284542457,-0.004423604,0.025000000,14036.000000000,228000.000000000,7.060000000,1.180000000,391260.000000000,13.210000000,1.169200000,0.018800000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,153800.000000000,587.000000000,0.000000000,0.000000000,0.000000000,153800.000000000,587.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,358.332712000 +1151,"sulfur(S8)","74-82-8","other",101,"sulfur(S8)",256.480000000,0.990000000,885.000000000,63.000000000,0.205900000,444.600000000,256.480000000,449.500000000,"Classic",68312.100000000,89.990736000,0.041428662,0.001475818,-0.000001923,7.465972e-10,"log",5.201200000,1936.281000000,-20.143000000,1000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,6.000000000,454.000000000,0.383400000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-50000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solute",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,351.000000000,12860.000000000,1000.000000000,0.000039662,392.750000000,392.750000000,0.000000000,0.000000000,12.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.990000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,8.046000000,-4600.000000000,-144.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.200000000,132.000000000,0.383400000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,351.000000000 +1152,"seawater","7732-18-5","seawater",114,"H2O",18.015000000,0.999000000,374.150000000,220.890000000,0.344000000,100.000000000,18.015000000,56.000000000,"Classic",1374.600000000,28.686314623,-0.052108449,0.000091158,-0.000000101,0.000000000,"pow10",5.115640000,1687.537000000,230.170000000,0.000000000,0.000000000,1.800000000,0.076000000,0.231323566,0.000000000,2.520000000,809.100000000,0.000000000,3,-27.952757828,4665.225929930,0.052323342,-0.000038356,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.054783425,0.094678512,-2.267329403,-0.384000000,0.005250000,-0.000006370,52.878622600,6010.000000000,1000.000000000,0.006110000,273.160000000,273.150000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.459000000,0.305420000,647.130000000,0.081000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,1.087000000,-0.638000000,0.635000000,0.000000000,0.000000000,0.000000000,0.168272437,0.908482584,5.240427372,4,"4C",0.000000000,0.000000000,0.069200000,16655.000000000,12277.000000000,1.451500000,0.673590000,13855.596960000,1.456360879,0.664155324,0.046473789,1,17.387107060,-6141.762746000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",1.065600000,3.000700000,366.510000000,0.034868000,20790.819800000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-262.490000000,140.520000000,0.000000000,0.000000000,0.000000000,276370.000000000,-2090.100000000,8.125000000,-0.014116000,0.000009370,0.923656000,-0.379370000,0.442429000,52.419867266 +1181,"naphthalene","91-20-3","HC",179,"C10H8",128.174000000,0.669000000,475.250000000,40.500000000,0.302000000,217.950000000,128.174000000,413.000000000,"Classic",27875.600000000,-50.300000000,0.502400000,0.502400000,-0.000001803,6.829951e-10,"log",-7.764510000,1.458380000,-2.775800000,-1.233030000,0.000000000,1.800000000,0.076000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,3,-24.710000000,4210.000000000,0.045300000,-0.000033800,-229000.000000000,-19.290500000,29814.500000000,-0.019678000,0.000132000,-0.000000311,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.078900000,-1.160000000,0.000000000,-0.384000000,0.005250000,-0.000006370,203.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.999000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.011610000,5479.000000000,"no",2.365500000,3.711400000,265.830000000,0.000000000,0.000000000,2.520000000,809.100000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.654610000,0.025740000,0.192520000,0.000000000 +1182,"MEA","141-43-5","amine",182,"MEA",61.083100000,1.038000000,364.850000000,68.700000000,0.796600000,170.850000000,61.083100000,99.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"log",-8.547960000,0.769820000,-3.108500000,1.544810000,0.000000000,1.700000000,0.215000000,0.260355682,0.000000000,4.500000000,481.800000000,0.000000000,3,-75.190000000,12680.000000000,0.157300000,-0.000122500,57900.000000000,8.169760000,8989.300000000,0.000000000,0.000000000,0.000000000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.521291873,-1.152080748,-0.013889882,-0.384000000,0.005250000,-0.000006370,207.000000000,6000.000000000,1000.000000000,0.006110000,273.000000000,273.000000000,-242000.000000000,189.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,2.298601539,-2.159763177,1.537096461,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.000000000,0.000000000,0.018008483,12276.382600000,342400.600100000,10.828737539,1.032854790,376276.884000000,10.783585850,1.258298307,0.000000000,1,17.387107060,1.762745870,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.500000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +1183,"trans-12-DM-cy-C6","6876-23-9","HC",147,"C",112.220000000,0.422182073,322.777001953,29.640000000,0.330400000,123.428000000,16.043000000,99.000000000,"Classic",66909.600000000,-68.400000000,0.897300000,-0.000513700,0.000000109,0.000000000,"log",39.205000000,-1324.400000000,-3.436600000,0.000031019,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,155.809006022,0.406998625,3,-26.870000000,1150.000000000,0.187000000,-0.000521000,-50500.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",900.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.303000000,-0.000605000,-0.000003200,77.300000000,941.000000000,452.000000000,0.116656057,90.690000000,90.650000000,-74520.000000000,186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,10200000.0000000,0.261000000,-0.147000000,0.222000000,0.000000000,0.100000000,0.585700000,-0.720600000,1.289900000,0.000000000,0.000000000,0.000000000,0.122841598,0.914470789,2.741978611,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.186260000,1,1.000000000,-6.680820000,0.000000000,9700,0.000015293,0.047920000,1594.000000000,0.012440000,2952.000000000,0.002317000,2777.000000000,1.076000000,1323.000000000,"yes",1.000000000,3.703900119,150.029998779,0.000000000,0.000000000,3.190710941,155.809006022,0.406998625,1.000000000,0,900.000000000,0.000621000,2760.000000000,0.421000000,1963.100000000,0.004048680,2636.750000000,0.295270000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.628820000,0.701140000,-0.784370000,0.000000000 +1184,"cis-14-DM-cy-C6","624-29-3","HC",147,"C",112.220000000,0.422182073,325.000000000,29.640000000,0.233980000,124.326013183,16.043000000,99.000000000,"Classic",66909.600000000,-68.400000000,0.897300000,-0.000513700,0.000000109,0.000000000,"log",39.205000000,-1324.400000000,-3.436600000,0.000031019,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,155.809006022,0.406998625,3,-26.870000000,1150.000000000,0.187000000,-0.000521000,-50500.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",900.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.303000000,-0.000605000,-0.000003200,77.300000000,941.000000000,452.000000000,0.116656057,90.690000000,90.650000000,-74520.000000000,186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,10200000.0000000,0.261000000,-0.147000000,0.222000000,0.000000000,0.100000000,0.585700000,-0.720600000,1.289900000,0.000000000,0.000000000,0.000000000,0.122841598,0.914470789,2.741978611,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.186260000,1,1.000000000,-6.680820000,0.000000000,9700,0.000015293,0.047920000,1594.000000000,0.012440000,2952.000000000,0.002317000,2777.000000000,1.076000000,1323.000000000,"yes",1.000000000,3.703900119,150.029998779,0.000000000,0.000000000,3.190710941,155.809006022,0.406998625,1.000000000,0,900.000000000,0.000621000,2760.000000000,0.421000000,1963.100000000,0.004048680,2636.750000000,0.295270000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.628820000,0.701140000,-0.784370000,0.000000000 +1185,"trans-14-DM-cy-C6","2207-04-7","HC",147,"C",112.220000000,0.422182073,316.667016601,29.640000000,0.233980000,119.356011962,16.043000000,99.000000000,"Classic",66909.600000000,-68.400000000,0.897300000,-0.000513700,0.000000109,0.000000000,"log",39.205000000,-1324.400000000,-3.436600000,0.000031019,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.520000000,155.809006022,0.406998625,3,-26.870000000,1150.000000000,0.187000000,-0.000521000,-50500.000000000,2.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,"solute",900.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.303000000,-0.000605000,-0.000003200,77.300000000,941.000000000,452.000000000,0.116656057,90.690000000,90.650000000,-74520.000000000,186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,10200000.0000000,0.261000000,-0.147000000,0.222000000,0.000000000,0.100000000,0.585700000,-0.720600000,1.289900000,0.000000000,0.000000000,0.000000000,0.122841598,0.914470789,2.741978611,0,"0",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4.186260000,1,1.000000000,-6.680820000,0.000000000,9700,0.000015293,0.047920000,1594.000000000,0.012440000,2952.000000000,0.002317000,2777.000000000,1.076000000,1323.000000000,"yes",1.000000000,3.703900119,150.029998779,0.000000000,0.000000000,3.190710941,155.809006022,0.406998625,1.000000000,0,900.000000000,0.000621000,2760.000000000,0.421000000,1963.100000000,0.004048680,2636.750000000,0.295270000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.628820000,0.701140000,-0.784370000,0.000000000 +1186,"PG","57-55-6","glycol",1186,"propyleneglycol",76.095000000,1.036000000,352.850000000,61.000000000,1.102000000,188.200000000,76.095000000,239.000000000,"Classic",32022.600000000,35.700000000,0.248400000,-0.000149700,0.000000030,0.000000000,"exp",13.629900000,6022.180000000,-28.250000000,0.000000000,0.000000000,2.308200000,0.215000000,0.248800000,0.000000000,3.626000000,481.800000000,0.000000000,3,-23.155244944,5694.484212533,0.023081509,0.000000000,57900.000000000,-19.290540000,29814.530000000,-0.019678500,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.654009012,-3.955117195,3.671191916,0.517338954,-0.000798169,0.000000064,133.328650000,9958.000000000,904.000000000,0.000002420,260.150000000,260.150000000,-388000.000000000,324.000000000,21.400000000,0.000000000,0.000000000,0.000000000,0.000000000,1.315100000,0.251250000,719.700000000,0.218700000,0.000000000,82900000.0000000,0.427000000,0.000000000,0.000000000,0.000000000,1.117000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,4,"4C",0.000000000,0.000000000,0.019000000,17442.000000000,138360.000000000,6.750000000,0.937200000,108190.000000000,5.140000000,0.674400000,0.051400000,1,17.090887000,-7800.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,35540.000000000,436.780000000,-0.184860000,0.000000000,0.000000000,35540.000000000,436.780000000,-0.184860000,0.000000000,0.000000000,0.910030000,1.349960000,-1.890020000,151.817427819 +1187,"ammonia","7664-41-7","other",1187,"NH3",17.031,0.73,132.25,113.0,0.250,-33.35,17.031,99.000000000,"Classic",11133.000000000,39.192196000,-0.058081604,0.000350102,-0.000000369,1.276199e-10,"pow10",5.202770000,1580.080000000,239.500000000,0.000000000,0.000000000,1.700000000,0.215000000,0.200000000,0.000000000,3.626000000,481.800000000,0.000000000,3,-39.350000000,4826.000000000,0.109100000,-0.000113000,57900.000000000,-19.290500000,29814.500000000,-0.019678000,0.013189000,0.031144000,0,"solvent",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.384000000,0.005250000,-0.000006370,73.069489067,3177.000000000,1000.000000000,0.006110000,175.500000000,175.500000000,-242000.000000000,189.000000000,30.585000000,0.000000000,0.000000000,0.000000000,0.000000000,2.288000000,0.268500000,512.640000000,0.245300000,0.000000000,52100000.0000000,0.320000000,-0.212000000,0.258000000,0.000000000,0.797000000,1.437100000,-0.799420000,0.327800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2,"2B",0.000000000,0.000000000,0.016100000,24591.000000000,40531.000000000,3.097800000,0.431020000,47052.000000000,3.300000000,0.903700000,0.044900000,1,17.387107060,-7582.406220000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,"no",1.525500000,3.230000000,188.900000000,0.035176000,24106.443000000,3.626000000,481.800000000,0.000000000,1.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-12706.000000000,958.780000000,-5.233200000,0.013152000,0.000000000,105800.000000000,-362.230000000,0.937900000,0.000000000,0.000000000,1.224003000,-0.273500000,-0.398230000,87.543852818 +1188,"chlorine",7782-50-5,chlorine,195,Cl2,70.906,1.5326431958562459,143.71540000000005,76.424,0.07,-33.952362112999964,70.906,124.069478908,Classic,0.0,25.4089891488,0.04465530069384,-6.73304954604e-05,4.73342196414e-08,-1.268453987088e-11,pow10KPa,9.0628,861.34,-26.82,0.0,0.0,0.0,0.215,0.2767,0.0,4.217,316.0,0.5203667,1,0.0,0.0,0.0,0.0,0.0,8.16976,0.0,0.0,0.0,0.0,0,solute,900.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0,6400.0,1532.643195856246,0.013808478434799999,172.17,172.15,0.0,223.1,2.92,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,20280.90073241057,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,1A,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,6500.0,1.8927555303529247e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,no,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +1189,"ethylene",74-85-1,"ethylene",196,C2H4,28.05316,0.5665875959429861,9.200000000000045,50.418,0.0866,-103.77135156599996,28.05316,130.945481716,Classic,52560.0,35.0953348158,-0.0730175859636,0.00048182294541,-5.59479999942e-07,2.08776085578e-10,pow10KPa,8.91382,596.526,-16.78,0.0,0.0,0.0,0.215,0.2815,0.0,4.04838,169.08,0.7657779,3350.0,0.00121961941966,103.986,566.5875959429861,104.05,52560.0,9.627551137738643e-06,3450.0,13556.576228246833,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,219.3,no,1,207.0,8.16976,solute,900.0,0,1A,1,0,0.0,0.0,0.0,0.0,0.0,1.0 +1190,"propene",115-07-1,"propene",197,C3H6,42.07974,0.6071797165485592,91.06100000000004,45.55,0.146,-47.61912875399997,42.07974,183.250870442,Classic,20370.0,31.8776388732,0.0323681920014,0.00038978187542399996,-4.99948467774e-07,1.89819117234e-10,pow10KPa,8.95606,789.624,-25.57,0.0,0.0,0.36,0.215,0.2779,0.0,4.4902,282.43,1.1051818500000001,3003.0,7.471717723549999e-09,87.953,607.1797165485592,88.075,20370.0,1.0561747100848501e-05,3103.0,18504.676899839127,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,266.71,no,1,207.0,8.16976,solute,900.0,0,1A,1,0,0.0,0.0,0.0,0.0,0.0,1.0 +1191,"cis-butene",590-18-1,"cis-butene",198,C4H8,56.10632,0.6301087082074909,162.60000000000002,42.255,0.202,3.7235553570000093,56.10632,235.626767201,Classic,-7330.0,30.6720422022,0.1595045968032,0.00018541245354,-2.8485339274799996e-07,1.04429615088e-10,pow10KPa,9.00958,967.32,-35.277,0.0,0.0,0.26,0.215,0.2701,0.0,3.82,132.0,1.4164999999999999,7310.0,2.6364927810099997e-06,134.3,630.1087082074908,134.26,-7330.0,1.1258595759827091e-05,7410.0,23322.437236388218,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,301.17,no,1,207.0,8.16976,solute,900.0,0,1A,1,0,0.0,0.0,0.0,0.0,0.0,1.0 +1192,"trans-butene",624-64-6,"trans-butene",199,C4H8,56.10632,0.6247637226336263,155.46000000000004,40.273,0.21,0.8798965720000069,56.10632,237.360550676,Classic,-11180.0,46.42794352319999,-0.040657708422,0.0007593596135339999,-9.1251196305e-07,3.3964568283e-10,pow10KPa,9.00827,967.5,-32.31,0.0,0.0,0.0,0.215,0.272,0.0,3.82,132.0,1.367,9760.0,0.0007481658101809999,167.6,624.7637226336263,167.63,-11180.0,1.0933788266236188e-05,9860.0,22984.99404781112,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,296.48,no,1,207.0,8.16976,solute,900.0,0,1A,1,0,0.0,0.0,0.0,0.0,0.0,1.0 +1193,"iso-butene",115-11-7,"iso-butene",200,C4H8,56.10632,0.6172935303955316,144.94,40.098,0.193,-7.004207835999978,56.10632,239.80815347700002,Classic,-17600.0,26.8640196138,0.1741796183502,0.000192313455174,-3.28338017502e-07,1.30204440468e-10,pow10KPa,8.80956,866.25,-38.51,0.0,0.0,0.5,0.215,0.2728,0.0,3.82,132.0,1.4375,5920.0,6.7618898108400006e-06,132.4,617.2935303955315,132.95,-17600.0,1.0947338969965856e-05,6020.0,22077.0419048734,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,2.92,0.0,0.0,0.0,0.0,293.59,no,1,207.0,8.16976,solute,900.0,0,1A,1,0,0.0,0.0,0.0,0.0,0.0,1.0 diff --git a/src/main/resources/data/COMPSALT.csv b/src/main/resources/data/COMPSALT.csv new file mode 100644 index 0000000000..35db278830 --- /dev/null +++ b/src/main/resources/data/COMPSALT.csv @@ -0,0 +1,21 @@ +"ID","SaltName","ion1","ion2","stoc1","stoc2","Kspwater","Kspwater2","Kspwater3","Kspwater4","Kspwater5" +1,"NaCl","Na+","Cl-",1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +3,"FeCO3","Fe++","CO3--",1.000000000,1.000000000,129.970000000,-50.205000000,7.133400000,-0.052913000,0.000000000 +4,"CaCO3","Ca++","CO3--",1.000000000,1.000000000,-170410.000000000,3044.270000000,-475.704000000,0.376097000,9149500.00000000 +5,"CaSO4_A","Ca++","SO4--",1.000000000,1.000000000,-2234.400000000,11.659200000,0.000000000,-0.482309000,0.000000000 +6,"CaSO4_G","Ca++","SO4--",1.000000000,1.000000000,-26309.900000000,815.978000000,-138.361000000,0.167863000,18.614300000 +7,"BaSO4","Ba++","SO4--",1.000000000,1.000000000,37588.000000000,-747.610000000,119.280000000,-0.162830000,-2880000.00000000 +8,"SrSO4","Sr++","SO4--",1.000000000,1.000000000,46550.000000000,-434.760000000,55.440000000,-0.062931000,-4496200.00000000 +9,"FeS","Fe++","HS-",1.000000000,1.000000000,-6813.350000000,50.196360000,-3.360000000,-0.055377200,0.000000000 +10,"Na2CO3","Na+","CO3--",2.000000000,1.000000000,-17483.000000000,462.070000000,-70.047000000,-0.001545900,-0.004243900 +11,"KHCO3","K+","HCO3-",1.000000000,1.000000000,2.240300000,69.658000000,-17.016000000,0.092964000,0.000000000 +12,"NaHCO3","Na+","HCO3-",1.000000000,1.000000000,-3.636700000,-77.250000000,14.575000000,-0.022468000,0.000000000 +13,"KCl","K+","Cl-",1.000000000,1.000000000,494.260000000,-5.858500000,0.024552000,-0.000042553,0.000000026 +14,"K2CO3","K+","CO3--",2.000000000,1.000000000,-39.805000000,-1160.400000000,244.780000000,-0.686810000,0.000000000 +15,"BaCO3","Ba+","CO3--",2.000000000,1.000000000,-46077.000000000,1399.100000000,-236.680000000,0.282890000,0.000000000 +16,"SrCO3","Sr-","CO3--",2.000000000,1.000000000,-16669.000000000,362.710000000,-57.996000000,0.008317000,0.000000000 +17,"Mg(OH)2","Mg++","OH-",1.000000000,2.000000000,-10621.000000000,240.710000000,-40.444000000,0.000000000,0.000000000 +18,"MgCO3","Mg++","CO3--",1.000000000,1.000000000,0.000000000,-11.900000000,0.000000000,0.000000000,0.000000000 +19,"Mg(HCO3)2","Mg++","HCO3-",1.000000000,2.000000000,0.000000000,-9.000000000,0.000000000,0.000000000,0.000000000 +20,"hydromagnesite (3MgCO3-Mg(OH)2-3H2O)","Mg++","CO3--",4.000000000,3.000000000,3555.620000000,-85.022000000,0.000000000,0.000000000,0.000000000 +21,"mercurycloride","Hg++","Cl-",1.000000000,2.000000000,-46077.000000000,1399.100000000,-236.680000000,0.282890000,0.000000000 diff --git a/src/main/resources/data/INTER.csv b/src/main/resources/data/INTER.csv new file mode 100644 index 0000000000..08f7887d7b --- /dev/null +++ b/src/main/resources/data/INTER.csv @@ -0,0 +1,1366 @@ +"ID","COMP1","COMP2","HVTYPE","KIJSRK","KIJTSRK","KIJTType","KIJPR","KIJTPR","KIJPCSAFT","HVALPHA","HVGIJ","HVGJI","CalcWij","W1","W2","W3","WSTYPE","KIJWS","NRTLALPHA","NRTLGIJ","NRTLGJI","GIJVISC","HVGIJT","HVGJIT","WSGIJT","WSGJIT","cpakij_SRK","cpakijT_SRK","cpakijx_SRK","cpakjix_SRK","cpakij_PR","KIJWSunifac","aijDesMath","bijDesMath","cpaAssosiationType","cpaBetaCross","cpaEpsCross" +6933,"water","methane","HV",0.450000000,0.000000000,0,0.651000000,-1.385000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,-0.827413423,0.002605500,-0.827413423,-0.827413423,0.161199631,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6935,"ethanol","methane","HV",0.130000000,0.000000000,0,0.130000000,0.000000000,0.000000000,0.395000000,1610.000000000,255.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.000000000,521.500000000,-2.056000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6936,"MEG","methane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.134000000,0.000000000,0.131438242,0.070212850,0.134000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6937,"DEG","methane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6938,"TEG","methane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,-328.600000000,-2.056000000,-15.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.130000000,0.000000000,0.162000000,0.130000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6939,"NaCl","methane","HV",2.020000000,0.000000000,0,2.020000000,0.000000000,0.000000000,0.084000000,7623.000000000,5281.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.000000000,7623.000000000,5281.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6940,"KCl","methane","Classic",1.640000000,0.000000000,0,1.640000000,0.000000000,0.000000000,0.097000000,6733.000000000,4007.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,6733.000000000,4007.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6941,"CaCl2","methane","HV",2.070000000,0.000000000,0,2.070000000,0.000000000,0.000000000,0.055000000,8790.000000000,14765.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.000000000,8790.000000000,14765.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6942,"HCOONa","methane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6943,"HCOOK","methane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6944,"HCOOCs","methane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6945,"helium","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6946,"hydrogen","methane","Classic",0.010000000,0.000000000,0,0.010000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.010000000,0.000000000,0.010000000,0.010000000,0.010000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6947,"nitrogen","methane","Classic",0.031900000,0.000000000,0,0.031900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.020000000,0.000000000,0.020000000,0.020000000,0.020000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6948,"argon","methane","Classic",0.025200000,0.000000000,0,0.025200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.025200000,0.000000000,0.025200000,0.025200000,0.025200000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6949,"oxygen","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6950,"CO2","methane","Classic",0.097300000,0.000000000,0,0.097300000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.097300000,0.000000000,0.097300000,0.097300000,0.095600000,0.000000000,0.000000000,0.000000000,1,0.085000000,0.000000000 +6951,"H2S","methane","Classic",0.085000000,0.000000000,0,0.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6952,"ethane","methane","Classic",0.002952950,0.000000000,0,0.002952950,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.029890022,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.002952950,0.000000000,0.002952950,0.002952950,0.002952950,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6953,"propane","methane","Classic",0.007477220,0.000000000,0,0.007477220,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.131666934,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.007477220,0.000000000,0.007477220,0.007477220,0.007477220,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6954,"c-propane","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6955,"i-butane","methane","Classic",0.013699350,0.000000000,0,0.013699350,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.245598745,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6956,"n-butane","methane","Classic",0.012897890,0.000000000,0,0.012897890,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.222563826,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6957,"2,2-diomC3","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6958,"c-C4","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6959,"i-pentane","methane","Classic",0.018175520,0.000000000,0,0.018175520,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6960,"n-pentane","methane","Classic",0.018471020,0.000000000,0,0.018471020,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6961,"c-pentane","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6962,"2,2-dim-C4","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6963,"2,3-dimC4","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6964,"2-m-C5","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6965,"3-m-C5","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6966,"n-hexane","methane","Classic",0.023474067,0.000000000,0,0.023474067,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6968,"m-c-C5","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6969,"benzene","methane","Classic",0.020900000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.020900000,0.000000000,0.020900000,0.020900000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6970,"c-hexane","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6971,"223-tm-C4","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6972,"3,3-dim-C5","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6973,"n-heptane","methane","Classic",0.030700000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6974,"m-c-C6","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6975,"et-c-C5","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6976,"toluene","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6977,"c-c7","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6978,"11-dm-c-C6","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6979,"c-c8","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6980,"c-12-dmcC6","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6981,"et-benzene","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6982,"MDEA+","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000123000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6983,"H3O+","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6984,"MDEA","methane","Classic",0.599959902,0.000000000,0,0.646504377,0.000000000,0.000000000,0.122000000,2467.000000000,274.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6985,"HCO3-","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6986,"OH-","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6987,"Na+","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6988,"Cl-","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6989,"Ca++","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6990,"Li+","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6991,"Br-","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6992,"NH4+","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6993,"CO3--","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6994,"DEACOO-","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6995,"DEA","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6996,"DEA+","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6997,"BEA","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6998,"BEA+","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +6999,"BEACOO-","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7000,"K+","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7001,"HS-","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7002,"S--","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7003,"I-","methane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7004,"Mg++","methane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7005,"Ba++","methane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7006,"Sr++","methane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7007,"methanol","ethane","HV",0.190000000,0.000000000,0,0.190000000,0.000000000,0.000000000,0.395000000,2005.000000000,494.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.190000000,0.395000000,2005.000000000,494.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.014000000,0.000000000,0.014000000,0.014000000,0.014000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7008,"ethanol","ethane","HV",0.190000000,0.000000000,0,0.190000000,0.000000000,0.000000000,0.395000000,2005.000000000,494.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.190000000,0.395000000,2005.000000000,494.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.055000000,0.000000000,-0.055000000,-0.055000000,-0.055000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7009,"MEG","ethane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.115300000,0.000000000,0.115300000,0.115300000,0.115300000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7010,"DEG","ethane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7011,"TEG","ethane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.110000000,0.000000000,0.110000000,0.110000000,0.110000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7012,"NaCl","ethane","Classic",0.780000000,0.000000000,0,0.780000000,0.000000000,0.000000000,0.062000000,12235.000000000,4227.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.780000000,0.062000000,12235.000000000,4227.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7013,"KCl","ethane","Classic",1.330000000,0.000000000,0,1.330000000,0.000000000,0.000000000,0.021000000,24788.000000000,50127.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.330000000,0.021000000,24788.000000000,50127.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7014,"CaCl2","ethane","Classic",1.180000000,0.000000000,0,1.180000000,0.000000000,0.000000000,0.036400000,99000.000000000,3080.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.180000000,0.036400000,99000.000000000,3080.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7015,"HCOONa","ethane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7016,"HCOOK","ethane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7017,"HCOOCs","ethane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7018,"helium","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7019,"hydrogen","ethane","Classic",0.036700000,0.000000000,0,0.036700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.036700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.036700000,0.000000000,0.036700000,0.036700000,0.036700000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7020,"nitrogen","ethane","Classic",0.038800000,0.000000000,0,0.038800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.060000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.031899000,0.000000000,0.031899000,0.031899000,0.031899000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7021,"Ar","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7022,"oxygen","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7023,"CO2","ethane","Classic",0.134600000,0.000000000,0,0.129800010,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.120000000,0.000000000,0.120000000,0.120000000,0.120000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7024,"H2S","ethane","Classic",0.082900000,0.000000000,0,0.070000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.070000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.070000000,0.000000000,0.070000000,0.070000000,0.070000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7025,"propane","ethane","Classic",0.001852860,0.000000000,0,0.001852860,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.048134573,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.001852860,0.000000000,0.001852860,0.001852860,0.001852860,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7026,"c-propane","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7027,"i-butane","ethane","Classic",0.005113650,0.000000000,0,0.005113650,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.138621605,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7028,"n-butane","ethane","Classic",0.004642880,0.000000000,0,0.004642880,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.137552316,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7029,"2,2-diomC3","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7030,"c-C4","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7031,"i-pentane","ethane","Classic",0.007919560,0.000000000,0,0.007919560,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7032,"n-pentane","ethane","Classic",0.008113590,0.000000000,0,0.008113590,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7033,"c-pentane","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7034,"2,2-dim-C4","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7035,"2,3-dimC4","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7036,"2-m-C5","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7037,"3-m-C5","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7038,"n-hexane","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7040,"m-c-C5","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7041,"benzene","ethane","Classic",0.028900000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7042,"c-hexane","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7043,"223-tm-C4","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7044,"3,3-dim-C5","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7045,"n-heptane","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7046,"m-c-C6","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7047,"et-c-C5","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7048,"toluene","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7049,"c-c7","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7050,"11-dm-c-C6","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7051,"c-c8","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7052,"c-12-dmcC6","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7053,"et-benzene","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7054,"MDEA+","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7055,"H3O+","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7056,"MDEA","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7057,"HCO3-","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7058,"OH-","ethane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7059,"Na+","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7060,"Cl-","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7061,"Ca++","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7062,"Li+","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7063,"Br-","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7064,"NH4+","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7065,"CO3--","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7066,"DEACOO-","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7067,"DEA","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7068,"DEA+","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7069,"BEA","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7070,"BEA+","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7071,"BEACOO-","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7072,"K+","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7073,"HS-","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7074,"S--","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7075,"I-","ethane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7076,"Mg++","ethane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7077,"Ba++","ethane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7078,"Sr++","ethane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7079,"methanol","CO2","HV",0.014800000,0.000000000,0,0.023000000,0.000000000,0.000000000,0.680000000,-92.260000000,-546.300000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,3307.000000000,276.000000000,0.000000000,0.970000000,5.000000000,0.000000000,0.000000000,0.068000000,0.000000000,0.068000000,0.068000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.038600000,0.000000000 +7080,"ethanol","CO2","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.395000000,3307.000000000,276.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,3307.000000000,276.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.113100000,0.000000000,0.113100000,0.113100000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.062700000,0.000000000 +7081,"MEG","CO2","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.028353000,0.000620000,-0.028353000,-0.028353000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.055000000,0.000000000 +7082,"DEG","CO2","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.267400000,0.001400000,-0.267400000,-0.267400000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.085000000,0.000000000 +7083,"TEG","CO2","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.015700000,0.000400000,0.015700000,0.015700000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.085000000,0.000000000 +7084,"NaCl","CO2","HV",2.100000000,0.000000000,0,2.100000000,0.000000000,0.000000000,-0.007000000,0.070000000,3087.000000000,0,0.000000000,0.000000000,0.000000000,"WS",2.100000000,-0.007000000,0.070000000,3087.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7085,"KCl","CO2","HV",1.790000000,0.000000000,0,1.790000000,0.000000000,0.000000000,-0.121800000,1865.000000000,1137.000000000,0,0.000000000,0.000000000,0.000000000,"WS",1.790000000,-0.121800000,1865.000000000,1137.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7086,"CaCl2","CO2","HV",2.230000000,0.000000000,0,2.230000000,0.000000000,0.000000000,-0.111000000,628.000000000,1721.000000000,0,0.000000000,0.000000000,0.000000000,"WS",2.230000000,-0.111000000,628.000000000,1721.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7087,"HCOONa","CO2","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7088,"HCOOK","CO2","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7089,"HCOOCs","CO2","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7090,"helium","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7091,"hydrogen","CO2","Classic",0.036200000,0.000000000,0,0.036200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.036200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.036200000,0.000000000,0.036200000,0.036200000,0.036200000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7093,"argon","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7094,"oxygen","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7095,"H2S","CO2","Classic",0.102000000,0.000000000,0,0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.120000000,0.000000000,0.120000000,0.120000000,0.120000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7097,"propane","CO2","Classic",0.101800000,0.000000000,0,0.135000010,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.120000000,0.000000000,0.120000000,0.120000000,0.120000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7098,"c-propane","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7099,"i-butane","CO2","Classic",0.136800010,0.000000000,0,0.129800010,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.120000000,0.000000000,0.120000000,0.120000000,0.120000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7100,"n-butane","CO2","Classic",0.147400000,0.000000000,0,0.129800010,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.120000000,0.000000000,0.120000000,0.120000000,0.120000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7101,"2,2-diomC3","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7102,"c-C4","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7103,"i-pentane","CO2","Classic",0.129700010,0.000000000,0,0.125000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.120000000,0.000000000,0.120000000,0.120000000,0.120000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7104,"n-pentane","CO2","Classic",0.127800000,0.000000000,0,0.125000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.120000000,0.000000000,0.120000000,0.120000000,0.120000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7105,"c-pentane","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7106,"2,2-dim-C4","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7107,"2,3-dimC4","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7108,"2-m-C5","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7109,"3-m-C5","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7110,"n-hexane","CO2","Classic",0.120000000,0.000000000,0,0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.120000000,0.000000000,0.120000000,0.120000000,0.120000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7112,"m-c-C5","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7113,"benzene","CO2","Classic",0.076700001,0.000000000,0,0.081000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7114,"c-hexane","CO2","Classic",0.108700000,0.000000000,0,0.108700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7115,"223-tm-C4","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7116,"3,3-dim-C5","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7117,"n-heptane","CO2","Classic",0.109999991,0.000000000,0,0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.100000000,0.000000000,0.100000000,0.100000000,0.100000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7118,"m-c-C6","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7119,"et-c-C5","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7120,"toluene","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7121,"c-c7","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7122,"11-dm-c-C6","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7123,"c-c8","CO2","Classic",0.100000000,0.000000000,0,0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.100000000,0.000000000,0.100000000,0.100000000,0.100000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7124,"c-12-dmcC6","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7125,"et-benzene","CO2","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7126,"MDEA+","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,-0.000166015,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.067873200,0.000000000,0,0.000000000,0.000000000 +7127,"H3O+","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7128,"CO2","MDEA","Classic",0.500000000,0.000000000,0,0.100000000,0.000000000,0.000000000,0.239000000,3204.305740600,-2753.737991200,0,0.000000000,0.000000000,0.000000000,"WS",1.600000000,0.300000000,-713.000000000,-393.000000000,0.000000000,-12.472833020,13.015037932,0.000000000,0.000000000,0.300000000,0.000000000,0.300000000,0.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7129,"HCO3-","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7130,"OH-","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7131,"Na+","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7132,"Cl-","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7133,"Ca++","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7134,"Li+","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7135,"Br-","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7136,"NH4+","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7137,"CO3--","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7138,"DEACOO-","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7139,"DEA","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7140,"DEA+","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7141,"BEA","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7142,"BEA+","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7143,"BEACOO-","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7144,"K+","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7145,"HS-","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7146,"S--","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7147,"I-","CO2","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7148,"Mg++","CO2","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7149,"Ba++","CO2","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7150,"Sr++","CO2","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7151,"water","propane","HV",0.530000000,0.000000000,0,0.530000000,0.000000000,0.000000000,0.070000000,-1584.000000000,3517.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.530000000,0.122000000,2467.000000000,274.000000000,0.000000000,-0.440000000,-0.100000000,0.000000000,0.000000000,0.110000000,0.000000000,0.110000000,0.110000000,0.113500000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7152,"methanol","propane","HV",0.220000000,0.000000000,0,0.220000000,0.000000000,0.000000000,0.395000000,895.000000000,435.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.220000000,0.395000000,895.000000000,435.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.026000000,0.000000000,0.026000000,0.026000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7153,"ethanol","propane","HV",0.220000000,0.000000000,0,0.220000000,0.000000000,0.000000000,0.395000000,895.000000000,435.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.220000000,0.395000000,895.000000000,435.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.038000000,0.000000000,0.038000000,0.038000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7154,"MEG","propane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.113200000,0.000000000,0.113200000,0.113200000,0.113200000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7155,"DEG","propane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7156,"TEG","propane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.130000000,0.000000000,0.130000000,0.130000000,0.130000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7157,"NaCl","propane","Classic",0.720000000,0.000000000,0,0.720000000,0.000000000,0.000000000,0.059200000,10539.000000000,4777.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.720000000,0.059200000,10539.000000000,4777.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7158,"KCl","propane","Classic",1.360000000,0.000000000,0,1.360000000,0.000000000,0.000000000,0.044100000,60604.000000000,7490.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.360000000,0.044100000,60604.000000000,7490.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7159,"CaCl2","propane","Classic",1.180000000,0.000000000,0,1.180000000,0.000000000,0.000000000,0.036400000,99000.000000000,3080.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.180000000,0.036400000,99000.000000000,3080.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7160,"HCOONa","propane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7161,"HCOOK","propane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7162,"HCOOCs","propane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7163,"helium","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7164,"hydrogen","propane","Classic",0.079900000,0.000000000,0,0.079900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.079900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.079900000,0.000000000,0.079900000,0.079900000,0.079900000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7165,"nitrogen","propane","Classic",0.088600000,0.000000000,0,0.079998000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.088600000,0.000000000,0.088600000,0.088600000,0.088600000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7166,"argon","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7167,"oxygen","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7169,"H2S","propane","Classic",0.083100000,0.000000000,0,0.070000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.070000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.070000000,0.000000000,0.070000000,0.070000000,0.070000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7171,"c-propane","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7172,"i-butane","propane","Classic",0.001538510,0.000000000,0,0.001538510,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.028532064,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7173,"n-butane","propane","Classic",0.001322680,0.000000000,0,0.001322680,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.028532064,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7174,"2,2-diomC3","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7175,"c-C4","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7176,"i-pentane","propane","Classic",0.003050750,0.000000000,0,0.003050750,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7177,"n-pentane","propane","Classic",0.003165860,0.000000000,0,0.003165860,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7178,"c-pentane","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7179,"2,2-dim-C4","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7180,"2,3-dimC4","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7181,"2-m-C5","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7182,"3-m-C5","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7183,"n-hexane","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7185,"m-c-C5","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7186,"benzene","propane","Classic",0.020000000,0.000000000,0,0.020000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7187,"c-hexane","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7188,"223-tm-C4","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7189,"3,3-dim-C5","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7190,"n-heptane","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7191,"m-c-C6","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7192,"et-c-C5","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7193,"toluene","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7194,"c-c7","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7195,"11-dm-c-C6","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7196,"c-c8","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7197,"c-12-dmcC6","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7198,"et-benzene","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7199,"MDEA+","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7200,"H3O+","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7201,"MDEA","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7202,"HCO3-","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7203,"OH-","propane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7204,"Na+","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7205,"Cl-","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7206,"Ca++","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7207,"Li+","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7208,"Br-","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7209,"NH4+","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7210,"CO3--","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7211,"DEACOO-","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7212,"DEA","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7213,"DEA+","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7214,"BEA","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7215,"BEA+","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7216,"BEACOO-","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7217,"K+","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7218,"HS-","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7219,"S--","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7220,"I-","propane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7221,"Mg++","propane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7222,"Ba++","propane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7223,"Sr++","propane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7225,"methanol","water","HV",-0.078900000,0.000000000,0,-0.078900000,0.000000000,0.000000000,0.357000000,410.670000000,-169.630000000,0,0.000000000,0.000000000,0.000000000,"WS",0.093103947,0.303000000,-48.680000000,610.600000000,0.000000000,1.890000000,-1.110000000,0.000000000,0.000000000,-0.153000000,0.000000000,-0.153000000,-0.153000000,-0.153000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7226,"ethanol","water","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.224500000,2207.030000000,-2612.510000000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,0.379100000,-268.880000000,885.990000000,0.000000000,-4.600000000,7.300000000,0.000000000,0.000000000,-0.110000000,0.000000000,-0.110000000,-0.110000000,-0.110000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7227,"water","MEG","HV",0.000000000,0.000000000,0,-0.038500000,0.000000000,0.000000000,-0.014500000,1506.300000000,-863.300000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,-0.453309318,4.110000000,-0.603000000,0.000000000,0.000000000,-0.115000000,0.000000000,-0.115000000,-0.115000000,-0.115000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7228,"DEG","water","HV",-0.125900000,0.000000000,0,-0.125900000,0.000000000,0.000000000,0.473900000,-624.620000000,715.500000000,0,0.000000000,0.000000000,0.000000000,"WS",-0.125900000,0.473900000,-624.620000000,715.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.115000000,0.000000000,-0.115000000,-0.115000000,-0.115000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000 +7229,"TEG","water","HV",-0.203500000,0.000000000,0,-0.203500000,0.000000000,0.000000000,0.196700000,-2913.940000000,2497.410000000,0,0.000000000,0.000000000,0.000000000,"WS",0.203500000,0.300000000,-777.000000000,1915.000000000,0.800000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.270000000,0.000441331,-0.245871147,-0.343485770,-0.270000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000 +7231,"KCl","water","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,-0.826200000,650.820000000,92.260000000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,-0.826200000,650.820000000,92.260000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7233,"HCOONa","water","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,-0.791100000,-26.580000000,114.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,-0.791100000,-26.580000000,114.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7234,"HCOOK","water","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,-0.895400000,-10.980000000,90.110000000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,-0.895400000,-10.980000000,90.110000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7235,"HCOOCs","water","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,-2.401000000,-14.880000000,63.620000000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,-2.401000000,-14.880000000,63.620000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7236,"helium","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7237,"hydrogen","water","Classic",0.532200000,0.000000000,0,0.532200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.532200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7238,"nitrogen","water","HV",0.480000000,0.000000000,0,0.480000000,0.000000000,0.000000000,0.080000000,4898.640000000,-111.760000000,0,0.000000000,0.000000000,0.000000000,"WS",-0.480000000,0.076800000,-388.000000000,4911.000000000,0.000000000,-6.900000000,2.060000000,0.000000000,0.000000000,-1.389072518,0.003879719,-1.389072518,-1.389072518,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7239,"argon","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7240,"oxygen","water","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.030000000,6743.539908393,-1580.966630082,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,6.754185549,-1.410655250,0.000000000,0.000000000,-1.088749036,0.003744044,-1.088749036,-1.088749036,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7241,"CO2","water","HV",0.100000000,0.000000000,0,0.184000000,0.236000000,0.000000000,0.030000000,5251.737437198,-3121.278858500,0,0.000000000,0.000000000,0.000000000,"WS",1.600000000,0.300000000,-393.000000000,-713.000000000,0.000000000,-0.842025353,-0.512331604,0.960000000,3.960000000,-0.276860000,0.001121000,-0.276860000,-0.276860000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.075000000,0.000000000 +7242,"H2S","water","HV",0.030000000,0.000000000,0,0.030000000,0.000000000,0.000000000,0.104480000,26082.000000000,-2148.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.030000000,0.065300000,-1082.000000000,2579.600000000,0.000000000,-18.450000000,5.670000000,0.000000000,0.000000000,0.191300000,0.000000000,0.191300000,0.191300000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.062400000,10878.000000000 +7243,"water","ethane","HV",0.450000000,0.000000000,0,0.635000000,-0.930000000,0.000000000,0.122000000,-1479.910000000,5173.650000000,0,0.000000000,0.000000000,0.000000000,"WS",0.450000000,0.122000000,274.000000000,2467.000000000,0.000000000,3.460000000,-6.560000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7244,"c-propane","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7245,"i-butane","water","HV",0.520000000,0.000000000,0,0.520000000,0.000000000,0.000000000,0.145000000,681.000000000,2507.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.520000000,0.145000000,681.000000000,2507.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7246,"2,2-diomC3","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7247,"c-C4","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7248,"i-pentane","water","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.145000000,681.000000000,2507.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.145000000,681.000000000,2507.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7249,"n-pentane","water","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.145000000,681.000000000,2507.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.145000000,681.000000000,2507.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.061500000,0.000000000,0.061500000,0.061500000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7250,"c-pentane","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7251,"2,2-dim-C4","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7252,"2,3-dimC4","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7253,"2-m-C5","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7254,"3-m-C5","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7256,"n-hexane","water","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.145000000,681.000000000,2507.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.145000000,681.000000000,2507.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.035500000,0.000000000,0.035500000,0.035500000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7257,"m-c-C5","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7258,"benzene","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.035500000,0.000000000,0.035500000,0.035500000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.079000000,0.000000000 +7259,"c-hexane","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7260,"223-tm-C4","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7261,"3,3-dim-C5","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7262,"n-heptane","water","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.145000000,681.000000000,2507.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.145000000,681.000000000,2507.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.009500000,0.000000000,0.009500000,0.009500000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7263,"m-c-C6","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7264,"et-c-C5","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7265,"toluene","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.009500000,0.000000000,0.009500000,0.009500000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.060000000,0.000000000 +7266,"c-c7","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7267,"11-dm-c-C6","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7268,"c-c8","water","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.145000000,681.000000000,2507.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.145000000,681.000000000,2507.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7269,"c-12-dmcC6","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7270,"et-benzene","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.016500000,0.000000000,-0.016500000,-0.016500000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.051000000,0.000000000 +7271,"MDEA+","water","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,-0.000006858,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7272,"H3O+","water","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7273,"MDEA-even","water","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.213103518,-1460.679072000,1200.644717000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,0.386000000,-401.570000000,803.410000000,0.000000000,5.892995488,-7.240070673,0.000000000,0.000000000,-0.149289356,0.000000000,-0.149289356,-0.149289356,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7274,"HCO3-","water","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7275,"OH-","water","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7276,"Na+","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7277,"Cl-","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7278,"Ca++","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7279,"Li+","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7280,"Br-","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7281,"NH4+","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7282,"CO3--","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7283,"DEACOO-","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7284,"DEA","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7285,"DEA+","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7286,"BEA","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7287,"BEA+","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7288,"BEACOO-","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7289,"K+","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7290,"HS-","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7291,"S--","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7292,"I-","water","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7293,"Mg++","water","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7294,"Ba++","water","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7295,"Sr++","water","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7296,"methanol","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7297,"ethanol","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7298,"MEG","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7299,"DEG","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7300,"TEG","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7301,"NaCl","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7302,"KCl","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7303,"CaCl2","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7304,"HCOONa","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7305,"HCOOK","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7306,"HCOOCs","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7307,"helium","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7308,"hydrogen","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7309,"nitrogen","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7310,"Ar","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7311,"oxygen","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7312,"H2S","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,-0.906716480,669.637867700,352.134250200,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.294026700,-1.817715182,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7313,"propane","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7314,"c-propane","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7315,"i-butane","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7316,"n-butane","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7317,"2,2-diomC3","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7318,"c-C4","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7319,"i-pentane","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7320,"n-pentane","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7321,"c-pentane","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7322,"2,2-dim-C4","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7323,"2,3-dimC4","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7324,"2-m-C5","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7325,"3-m-C5","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7326,"n-hexane","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7328,"m-c-C5","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7329,"benzene","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7330,"c-hexane","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7331,"223-tm-C4","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7332,"3,3-dim-C5","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7333,"n-heptane","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7334,"m-c-C6","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7335,"et-c-C5","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7336,"toluene","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7337,"c-c7","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7338,"11-dm-c-C6","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7339,"c-c8","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7340,"c-12-dmcC6","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7341,"et-benzene","MDEA","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7342,"H3O+","MDEA","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.001500000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7343,"HCO3-","MDEA","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,-0.001440000,0.000000000,0,0.000000000,0.000000000 +7344,"OH-","MDEA","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7345,"Na+","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7346,"Cl-","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7347,"Ca++","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7348,"Li+","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7349,"Br-","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7350,"NH4+","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7351,"CO3--","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.185540000,0.000000000,0,0.000000000,0.000000000 +7352,"DEACOO-","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7353,"DEA","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7354,"DEA+","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7355,"BEA","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7356,"BEA+","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7357,"BEACOO-","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7358,"K+","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7359,"HS-","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7360,"S--","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7361,"I-","MDEA","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7362,"Mg++","MDEA","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7363,"Ba++","MDEA","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7364,"Sr++","MDEA","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7365,"methanol","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7366,"ethanol","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7367,"MEG","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7368,"DEG","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7369,"TEG","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7370,"NaCl","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7371,"KCl","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7372,"CaCl2","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7373,"HCOONa","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7374,"HCOOK","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7375,"HCOOCs","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7376,"helium","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7377,"hydrogen","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7378,"nitrogen","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7379,"Ar","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7380,"oxygen","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7381,"H2S","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000488410,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7383,"ethane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7384,"propane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7385,"c-propane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7386,"i-butane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7387,"n-butane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7388,"2,2-diomC3","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7389,"c-C4","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7390,"i-pentane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7391,"n-pentane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7392,"c-pentane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7393,"2,2-dim-C4","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7394,"2,3-dimC4","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7395,"2-m-C5","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7396,"3-m-C5","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7397,"n-hexane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7399,"m-c-C5","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7400,"benzene","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7401,"c-hexane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7402,"223-tm-C4","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7403,"3,3-dim-C5","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7404,"n-heptane","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7405,"m-c-C6","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7406,"et-c-C5","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7407,"toluene","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7408,"c-c7","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7409,"11-dm-c-C6","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7410,"c-c8","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7411,"c-12-dmcC6","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7412,"et-benzene","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7413,"H3O+","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7414,"MDEA","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,-0.000603567,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7415,"HCO3-","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,-0.000216497,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,-0.001440000,0.000000000,0,0.000000000,0.000000000 +7416,"OH-","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7417,"Na+","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7418,"Cl-","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7419,"Ca++","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7420,"Li+","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7421,"Br-","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7422,"NH4+","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7423,"CO3--","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,-0.000274132,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7424,"DEACOO-","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7425,"DEA","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7426,"DEA+","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7427,"BEA","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7428,"BEA+","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7429,"BEACOO-","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7430,"K+","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7431,"HS-","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,-0.000149475,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7432,"S--","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7433,"I-","MDEA+","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7434,"Mg++","MDEA+","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7435,"Ba++","MDEA+","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7436,"Sr++","MDEA+","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7438,"ethanol","nitrogen","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.395000000,308.000000000,364.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,1610.000000000,255.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7439,"MEG","nitrogen","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7440,"DEG","nitrogen","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7441,"TEG","nitrogen","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7442,"NaCl","nitrogen","HV",3.200000000,0.000000000,0,3.200000000,0.000000000,0.000000000,0.010500000,94947.000000000,1773.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.084000000,7623.000000000,5281.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7443,"KCl","nitrogen","HV",5.240000000,0.000000000,0,5.240000000,0.000000000,0.000000000,0.007800000,41212.000000000,2335.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.097000000,6733.000000000,4007.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7444,"CaCl2","nitrogen","Classic",2.290000000,0.000000000,0,2.290000000,0.000000000,0.000000000,0.017400000,80541.000000000,2200.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.055000000,8790.000000000,14765.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7445,"HCOONa","nitrogen","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7446,"HCOOK","nitrogen","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7447,"HCOOCs","nitrogen","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7448,"helium","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7449,"hydrogen","nitrogen","Classic",0.007100000,0.000000000,0,0.007100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.007100000,0.000000000,0.007100000,0.007100000,0.007100000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7450,"argon","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7451,"oxygen","nitrogen","Classic",-0.007800000,0.000000000,0,-0.007800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.007800000,0.000000000,-0.007800000,-0.007800000,-0.007800000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7452,"CO2","nitrogen","Classic",-0.017100000,0.000000000,0,-0.019997000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7453,"H2S","nitrogen","Classic",0.140000000,0.000000000,0,0.140000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7454,"c-propane","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7455,"i-butane","nitrogen","Classic",0.131500010,0.000000000,0,0.094999000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7456,"n-butane","nitrogen","Classic",0.100700000,0.000000000,0,0.100700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7457,"2,2-diomC3","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7458,"c-C4","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7459,"i-pentane","nitrogen","Classic",0.093000000,0.000000000,0,0.094999000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7460,"n-pentane","nitrogen","Classic",0.093598000,0.000000000,0,0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7461,"c-pentane","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7462,"2,2-dim-C4","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7463,"2,3-dimC4","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7464,"2-m-C5","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7465,"3-m-C5","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7466,"n-hexane","nitrogen","Classic",0.080000000,0.000000000,0,0.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7468,"m-c-C5","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7469,"benzene","nitrogen","Classic",0.213100000,0.000000000,0,0.213100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7470,"c-hexane","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7471,"223-tm-C4","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7472,"3,3-dim-C5","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7473,"n-heptane","nitrogen","Classic",0.142199993,0.000000000,0,0.142199993,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7474,"m-c-C6","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7475,"et-c-C5","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7476,"toluene","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7477,"c-c7","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7478,"11-dm-c-C6","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7479,"c-c8","nitrogen","Classic",0.080000000,0.000000000,0,0.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7480,"c-12-dmcC6","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7481,"et-benzene","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7482,"MDEA+","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7483,"H3O+","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7484,"MDEA","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7485,"HCO3-","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7486,"OH-","nitrogen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7487,"Na+","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7488,"Cl-","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7489,"Ca++","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7490,"Li+","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7491,"Br-","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7492,"NH4+","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7493,"CO3--","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7494,"DEACOO-","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7495,"DEA","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7496,"DEA+","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7497,"BEA","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7498,"BEA+","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7499,"BEACOO-","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7500,"K+","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7501,"HS-","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7502,"S--","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7503,"I-","nitrogen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7504,"Mg++","nitrogen","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7505,"Ba++","nitrogen","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7506,"Sr++","nitrogen","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7508,"methanol","H2S","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.395000000,965.000000000,45.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7509,"ethanol","H2S","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.395000000,965.000000000,45.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7511,"DEG","H2S","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7512,"TEG","H2S","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7513,"NaCl","H2S","HV",0.800000000,0.000000000,0,0.800000000,0.000000000,0.000000000,-0.137900000,1809.480000000,658.640000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7514,"KCl","H2S","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7515,"CaCl2","H2S","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,-0.187200000,-1646.000000000,1195.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7516,"HCOONa","H2S","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7517,"HCOOK","H2S","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7518,"HCOOCs","H2S","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7519,"helium","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7520,"hydrogen","H2S","Classic",0.083100000,0.000000000,0,0.083100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.083100000,0.000000000,0.083100000,0.083100000,0.083100000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7522,"Ar","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7523,"oxygen","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7529,"c-propane","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7530,"i-butane","H2S","Classic",0.060000000,0.000000000,0,0.060000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.060000000,0.000000000,0.060000000,0.060000000,0.060000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7531,"n-butane","H2S","Classic",0.060000000,0.000000000,0,0.060000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.060000000,0.000000000,0.060000000,0.060000000,0.060000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7532,"2,2-diomC3","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7533,"c-C4","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7534,"i-pentane","H2S","Classic",0.069700000,0.000000000,0,0.060000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.060000000,0.000000000,0.060000000,0.060000000,0.060000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7535,"n-pentane","H2S","Classic",0.069700000,0.000000000,0,0.060000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.060000000,0.000000000,0.060000000,0.060000000,0.060000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7536,"c-pentane","H2S","Classic",0.069700000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7537,"2,2-dim-C4","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7538,"2,3-dimC4","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7539,"2-m-C5","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7540,"3-m-C5","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7541,"n-hexane","H2S","Classic",0.050000000,0.000000000,0,0.050000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7543,"m-c-C5","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7544,"benzene","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7545,"c-hexane","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7546,"223-tm-C4","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7547,"3,3-dim-C5","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7549,"m-c-C6","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7550,"et-c-C5","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7551,"toluene","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7552,"c-c7","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7553,"11-dm-c-C6","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7554,"c-c8","H2S","Classic",0.040000000,0.000000000,0,0.040000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.040000000,0.000000000,0.040000000,0.040000000,0.040000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7555,"c-12-dmcC6","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7556,"et-benzene","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7557,"MDEA+","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7558,"H3O+","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7559,"MDEA","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,-0.906700000,2928.000000000,5567.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-2.440000000,15.110000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7560,"HCO3-","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7561,"OH-","H2S","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7562,"Na+","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7563,"Cl-","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7564,"Ca++","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7565,"Li+","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7566,"Br-","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7567,"NH4+","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7568,"CO3--","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7569,"DEACOO-","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7570,"DEA","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7571,"DEA+","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7572,"BEA","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7573,"BEA+","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7574,"BEACOO-","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7575,"K+","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7576,"HS-","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7577,"S--","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7578,"I-","H2S","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7579,"Mg++","H2S","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7580,"Ba++","H2S","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7581,"Sr++","H2S","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7583,"ethanol","methanol","Classic",0.050400000,0.000000000,0,0.050400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.050400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7584,"MEG","methanol","Classic",0.074000000,0.000000000,0,0.074000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.074000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7585,"DEG","methanol","Classic",0.088200000,0.000000000,0,0.088200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.088200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.088200000,0.000000000,0.088200000,0.088200000,0.088200000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7586,"TEG","methanol","Classic",0.181700000,0.000000000,0,0.181700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.181700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7587,"NaCl","methanol","Classic",0.122100000,0.000000000,0,0.122100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.122100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.122100000,0.000000000,0.122100000,0.122100000,0.122100000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7588,"KCl","methanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7589,"CaCl2","methanol","Classic",0.204500000,0.000000000,0,0.204500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.204500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.204500000,0.000000000,0.204500000,0.204500000,0.204500000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7590,"HCOONa","methanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7591,"HCOOK","methanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7592,"HCOOCs","methanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7593,"helium","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7594,"hydrogen","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7595,"nitrogen","methanol","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.395000000,364.000000000,308.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,364.000000000,308.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7596,"Ar","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7597,"oxygen","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7598,"H2S","methanol","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.395000000,45.000000000,965.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,45.000000000,965.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7599,"methane","methanol","HV",0.130000000,0.000000000,0,0.130000000,0.000000000,0.000000000,0.395000000,255.000000000,1610.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.130000000,0.395000000,255.000000000,1610.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.013400000,0.000000000,0.013400000,0.013400000,0.013400000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7601,"c-propane","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7602,"i-butane","methanol","HV",0.250000000,0.000000000,0,0.250000000,0.000000000,0.000000000,0.395000000,1603.000000000,1135.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.250000000,0.395000000,1603.000000000,1135.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7604,"2,2-diomC3","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7605,"c-C4","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7606,"i-pentane","methanol","HV",0.260000000,0.000000000,0,0.260000000,0.000000000,0.000000000,0.395000000,744.000000000,1071.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.260000000,0.395000000,744.000000000,1071.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7607,"n-pentane","methanol","HV",0.260000000,0.000000000,0,0.260000000,0.000000000,0.000000000,0.395000000,1230.000000000,1186.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.260000000,0.395000000,1230.000000000,1186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.051000000,0.000000000,0.051000000,0.051000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7608,"c-pentane","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7609,"2,2-dim-C4","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7610,"2,3-dimC4","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7611,"2-m-C5","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7612,"3-m-C5","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7613,"n-hexane","methanol","HV",0.280000000,0.000000000,0,0.280000000,0.000000000,0.000000000,0.395000000,758.000000000,1276.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.280000000,0.395000000,758.000000000,1276.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.001000000,0.000000000,0.001000000,0.001000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7615,"m-c-C5","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7616,"benzene","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.006000000,0.000000000,0.006000000,0.006000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7617,"c-hexane","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7618,"223-tm-C4","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7619,"3,3-dim-C5","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7621,"m-c-C6","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7622,"et-c-C5","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7623,"toluene","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7624,"c-c7","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7625,"11-dm-c-C6","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7626,"c-c8","methanol","Classic",0.310000000,0.000000000,0,0.310000000,0.000000000,0.000000000,0.395000000,758.000000000,1276.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.310000000,0.395000000,758.000000000,1276.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7627,"c-12-dmcC6","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7628,"et-benzene","methanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7629,"MDEA+","methanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7630,"H3O+","methanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7631,"MDEA","methanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7632,"HCO3-","methanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7633,"OH-","methanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7634,"Na+","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7635,"Cl-","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7636,"Ca++","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7637,"Li+","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7638,"Br-","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7639,"NH4+","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7640,"CO3--","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7641,"DEACOO-","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7642,"DEA","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7643,"DEA+","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7644,"BEA","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7645,"BEA+","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7646,"BEACOO-","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7647,"K+","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7648,"HS-","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7649,"S--","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7650,"I-","methanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7651,"Mg++","methanol","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7652,"Ba++","methanol","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7653,"Sr++","methanol","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7654,"methanol","MEG","Classic",0.074000000,0.000000000,0,0.074000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.074000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7655,"ethanol","MEG","Classic",0.162600000,0.000000000,0,0.162600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.162600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7657,"DEG","MEG","Classic",0.030100000,0.000000000,0,0.030100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.030100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7658,"TEG","MEG","Classic",0.005900000,0.000000000,0,0.005900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.005900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.025000000,0.000000000,-0.010000000,-0.010000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.000000000,0.000000000 +7660,"KCl","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7662,"HCOONa","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7663,"HCOOK","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7664,"HCOOCs","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7665,"helium","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7666,"hydrogen","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7667,"Ar","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7668,"oxygen","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7670,"H2S","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7671,"c-propane","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7672,"i-butane","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7673,"n-butane","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7674,"2,2-diomC3","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7675,"c-C4","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7676,"i-pentane","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7677,"n-pentane","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7678,"c-pentane","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7679,"2,2-dim-C4","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7680,"2,3-dimC4","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7681,"2-m-C5","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7682,"3-m-C5","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7683,"n-hexane","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.059000000,0.000000000,0.059000000,0.059000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7685,"m-c-C5","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7686,"benzene","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.049000000,0.000000000,0.049000000,0.049000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.040000000,0.000000000 +7687,"c-hexane","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7688,"223-tm-C4","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7689,"3,3-dim-C5","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7691,"m-c-C6","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7692,"et-c-C5","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7693,"toluene","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.051000000,0.000000000,0.051000000,0.051000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.042000000,0.000000000 +7694,"c-c7","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7695,"11-dm-c-C6","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7696,"c-c8","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7697,"c-12-dmcC6","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7698,"et-benzene","MEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7699,"MDEA+","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7700,"H3O+","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7701,"MDEA","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7702,"HCO3-","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7703,"OH-","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7704,"Na+","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7705,"Cl-","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7706,"Ca++","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7707,"Li+","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7708,"Br-","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7709,"NH4+","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7710,"CO3--","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7711,"DEACOO-","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7712,"DEA","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7713,"DEA+","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7714,"BEA","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7715,"BEA+","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7716,"BEACOO-","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7717,"K+","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7718,"HS-","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7719,"S--","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7720,"I-","MEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7721,"Mg++","MEG","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7722,"Ba++","MEG","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7723,"Sr++","MEG","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7725,"ethanol","TEG","Classic",0.287600000,0.000000000,0,0.287600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.162600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7727,"DEG","TEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.030100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7728,"NaCl","TEG","Classic",0.365000000,0.000000000,0,0.365000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.058800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7729,"KCl","TEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7730,"CaCl2","TEG","HV",0.130000000,0.000000000,0,0.130000000,0.000000000,0.000000000,-3.054000000,352.300000000,206.900000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.084200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7731,"HCOONa","TEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7732,"HCOOK","TEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7733,"HCOOCs","TEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7734,"helium","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7735,"hydrogen","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7737,"Ar","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7738,"oxygen","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7743,"c-propane","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7744,"i-butane","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7746,"2,2-diomC3","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7747,"c-C4","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7748,"i-pentane","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7750,"c-pentane","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7751,"2,2-dim-C4","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7752,"2,3-dimC4","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7753,"2-m-C5","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7754,"3-m-C5","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7755,"n-hexane","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.070000000,0.000000000,0.070000000,0.070000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7757,"m-c-C5","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7758,"benzene","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.032000000,0.000000000,0.032000000,0.032000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.083000000,0.000000000 +7759,"c-hexane","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7760,"223-tm-C4","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7761,"3,3-dim-C5","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7763,"m-c-C6","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7764,"et-c-C5","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7765,"toluene","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.038000000,0.000000000,0.038000000,0.038000000,0.000000000,0.000000000,0.000000000,0.000000000,1,0.048000000,0.000000000 +7766,"c-c7","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7767,"11-dm-c-C6","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7768,"c-c8","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,601.700000000,2063.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,601.700000000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7769,"c-12-dmcC6","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7770,"et-benzene","TEG","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7771,"MDEA+","TEG","HV",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7772,"H3O+","TEG","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7773,"MDEA","TEG","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.386000000,-1124.830000000,763.560000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7774,"HCO3-","TEG","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7775,"OH-","TEG","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7776,"Na+","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7777,"Cl-","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7778,"Ca++","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7779,"Li+","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7780,"Br-","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7781,"NH4+","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7782,"CO3--","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7783,"DEACOO-","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7784,"DEA","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7785,"DEA+","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7786,"BEA","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7787,"BEA+","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7788,"BEACOO-","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7789,"K+","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7790,"HS-","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7791,"S--","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7792,"I-","TEG","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7793,"Mg++","TEG","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7794,"Ba++","TEG","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7795,"Sr++","TEG","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7797,"methanol","oxygen","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,1610.000000000,255.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7798,"ethanol","oxygen","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,1610.000000000,255.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7799,"MEG","oxygen","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7800,"DEG","oxygen","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7801,"TEG","oxygen","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7802,"NaCl","oxygen","Classic",0.800000000,0.000000000,0,0.800000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.084000000,7623.000000000,5281.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7803,"KCl","oxygen","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.097000000,6733.000000000,4007.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7804,"CaCl2","oxygen","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.055000000,8790.000000000,14765.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7805,"HCOONa","oxygen","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7806,"HCOOK","oxygen","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7807,"HCOOCs","oxygen","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7808,"helium","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7809,"hydrogen","oxygen","Classic",0.007900000,0.000000000,0,0.007900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.007900000,0.000000000,0.007900000,0.007900000,0.007900000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7810,"nitrogen","oxygen","Classic",-0.007800000,0.000000000,0,-0.007800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.007800000,0.000000000,-0.007800000,-0.007800000,-0.007800000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7811,"Ar","oxygen","Classic",0.017800000,0.000000000,0,0.017800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.017800000,0.000000000,0.017800000,0.017800000,0.017800000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7812,"oxygen","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.030100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7813,"CO2","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7814,"H2S","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7815,"methane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7816,"ethane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7817,"propane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7818,"c-propane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7819,"i-butane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7820,"n-butane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7821,"2,2-diomC3","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7822,"c-C4","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7823,"i-pentane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7824,"n-pentane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7825,"c-pentane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7826,"2,2-dim-C4","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7827,"2,3-dimC4","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7828,"2-m-C5","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7829,"3-m-C5","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7830,"n-hexane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7831,"hexane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7832,"m-c-C5","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7833,"benzene","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7834,"c-hexane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7835,"223-tm-C4","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7836,"3,3-dim-C5","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7837,"n-heptane","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7838,"m-c-C6","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7839,"et-c-C5","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7840,"toluene","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7841,"c-c7","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7842,"11-dm-c-C6","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7843,"c-c8","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7844,"c-12-dmcC6","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7845,"et-benzene","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7846,"MDEA+","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7847,"H3O+","oxygen","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +,"################","################","################",,,,,,,,,,,,,,"################",,,,,,,,,,,,,,,,,,,, +,"################","################","################",,,,,,,,,,,,,,"################",,,,,,,,,,,,,,,,,,,, +,"################","################","################",,,,,,,,,,,,,,"################",,,,,,,,,,,,,,,,,,,, +,"################","################","################",,,,,,,,,,,,,,"################",,,,,,,,,,,,,,,,,,,, +,"################","################","################",,,,,,,,,,,,,,"################",,,,,,,,,,,,,,,,,,,, +,"################","################","################",,,,,,,,,,,,,,"################",,,,,,,,,,,,,,,,,,,, +,"################","################","################",,,,,,,,,,,,,,"################",,,,,,,,,,,,,,,,,,,, +,"################","################","################",,,,,,,,,,,,,,"################",,,,,,,,,,,,,,,,,,,, +,"################","################","################",,,,,,,,,,,,,,"################",,,,,,,,,,,,,,,,,,,, +8030,"hydrogen","n-pentane","Classic",0.216600000,0.000000000,0,0.216600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.216600000,0.216600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8032,"Ar","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8033,"oxygen","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8035,"H2S","n-pentane","Classic",0.060000000,0.000000000,0,0.060000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.060000000,0.060000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8039,"c-propane","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8040,"i-butane","n-pentane","Classic",0.000814620,0.000000000,0,0.000814620,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8042,"2,2-diomC3","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8043,"c-C4","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8044,"i-pentane","n-pentane","Classic",0.000399990,0.000000000,0,0.000399990,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8045,"n-pentane","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8046,"c-pentane","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8047,"2,2-dim-C4","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8048,"2,3-dimC4","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8049,"2-m-C5","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8050,"3-m-C5","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8051,"n-hexane","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8052,"hexane","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8053,"m-c-C5","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7860,"DEA+","oxygen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7861,"BEA","oxygen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7862,"BEA+","oxygen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7863,"BEACOO-","oxygen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7864,"K+","oxygen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7865,"HS-","oxygen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7866,"S--","oxygen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7867,"I-","oxygen","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7868,"Mg++","oxygen","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7869,"Ba++","oxygen","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7870,"Sr++","oxygen","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7871,"water","n-butane","HV",0.520000000,0.000000000,0,0.520000000,0.000000000,0.000000000,0.120000000,-567.800000000,3181.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.530000000,0.122000000,2467.000000000,274.000000000,0.000000000,1.970000000,-1.930000000,0.000000000,0.000000000,0.087500000,0.000000000,0.087500000,0.087500000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7872,"methanol","n-butane","HV",0.250000000,0.000000000,0,0.250000000,0.000000000,0.000000000,0.395000000,1135.000000000,1603.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.220000000,0.395000000,895.000000000,435.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7873,"ethanol","n-butane","HV",0.250000000,0.000000000,0,0.250000000,0.000000000,0.000000000,0.395000000,1135.000000000,1603.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.220000000,0.395000000,895.000000000,435.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.005000000,0.000000000,0.005000000,0.005000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7874,"MEG","n-butane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7875,"DEG","n-butane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7876,"TEG","n-butane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.100000000,0.000000000,0.100000000,0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7877,"NaCl","n-butane","Classic",0.700000000,0.000000000,0,0.700000000,0.000000000,0.000000000,0.036900000,20193.000000000,3528.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.720000000,0.059200000,10539.000000000,4777.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7878,"KCl","n-butane","Classic",1.350000000,0.000000000,0,1.350000000,0.000000000,0.000000000,0.007800000,-48374.000000000,35311.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.360000000,0.044100000,60604.000000000,7490.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7879,"CaCl2","n-butane","Classic",1.180000000,0.000000000,0,1.180000000,0.000000000,0.000000000,0.036400000,99000.000000000,3080.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.180000000,0.036400000,99000.000000000,3080.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7880,"HCOONa","n-butane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7881,"HCOOK","n-butane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7882,"HCOOCs","n-butane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7883,"helium","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7884,"hydrogen","n-butane","Classic",0.144600000,0.000000000,0,0.144600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.079900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.144600000,0.000000000,0.144600000,0.144600000,0.144600000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7885,"nitrogen","n-butane","Classic",0.059700000,0.000000000,0,0.090000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.059700000,0.000000000,0.059700000,0.059700000,0.090000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7886,"Ar","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7887,"oxygen","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7888,"CO2","n-butane","Classic",0.141200010,0.000000000,0,0.129800010,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.141200010,0.000000000,0.141200010,0.141200010,0.129800010,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7889,"H2S","n-butane","Classic",0.060000000,0.000000000,0,0.060000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.070000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.060000000,0.000000000,0.060000000,0.060000000,0.060000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7890,"c-propane","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7891,"i-butane","n-butane","Classic",0.000472510,0.000000000,0,0.000472510,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",-0.650021600,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7892,"n-butane","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7893,"2,2-diomC3","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7894,"c-C4","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7895,"i-pentane","n-butane","Classic",0.000926320,0.000000000,0,0.000926320,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000926320,0.000000000,0.000926320,0.000926320,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7896,"n-pentane","n-butane","Classic",0.000976650,0.000000000,0,0.000976650,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000976650,0.000000000,0.000976650,0.000976650,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7897,"c-pentane","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7898,"2,2-dim-C4","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7899,"2,3-dimC4","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7900,"2-m-C5","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7901,"3-m-C5","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7902,"n-hexane","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7903,"hexane","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7904,"m-c-C5","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7905,"benzene","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7906,"c-hexane","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7907,"223-tm-C4","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7908,"3,3-dim-C5","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7909,"n-heptane","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7910,"m-c-C6","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7911,"et-c-C5","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7912,"toluene","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7913,"c-c7","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7914,"11-dm-c-C6","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7915,"c-c8","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7916,"c-12-dmcC6","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7917,"et-benzene","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7918,"MDEA+","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7919,"H3O+","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7920,"MDEA","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7921,"HCO3-","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7922,"OH-","n-butane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7923,"Na+","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7924,"Cl-","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7925,"Ca++","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7926,"Li+","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7927,"Br-","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7928,"NH4+","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7929,"CO3--","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7930,"DEACOO-","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7931,"DEA","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7932,"DEA+","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7933,"BEA","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7934,"BEA+","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7935,"BEACOO-","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7936,"K+","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7937,"HS-","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7938,"S--","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7939,"I-","n-butane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7940,"Mg++","n-butane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7941,"Ba++","n-butane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7942,"Sr++","n-butane","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7943,"methanol","ethanol","Classic",0.050400000,0.000000000,0,0.050400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.050400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7945,"MEG","ethanol","Classic",0.074000000,0.000000000,0,0.074000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.074000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7946,"DEG","ethanol","Classic",0.088200000,0.000000000,0,0.088200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.088200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7947,"TEG","ethanol","Classic",0.181700000,0.000000000,0,0.181700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.181700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7948,"NaCl","ethanol","Classic",0.122100000,0.000000000,0,0.122100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.122100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7949,"KCl","ethanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7950,"CaCl2","ethanol","Classic",0.204500000,0.000000000,0,0.204500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.204500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7951,"HCOONa","ethanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7952,"HCOOK","ethanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7953,"HCOOCs","ethanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7954,"helium","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7955,"hydrogen","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7956,"nitrogen","ethanol","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.395000000,364.000000000,308.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,364.000000000,308.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7957,"Ar","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7958,"oxygen","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7959,"CO2","ethanol","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.395000000,276.000000000,3307.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,276.000000000,3307.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7960,"H2S","ethanol","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.395000000,45.000000000,965.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,45.000000000,965.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7964,"c-propane","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7965,"i-butane","ethanol","HV",0.250000000,0.000000000,0,0.250000000,0.000000000,0.000000000,0.395000000,1603.000000000,1135.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.250000000,0.395000000,1603.000000000,1135.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.018000000,0.000000000,0.018000000,0.018000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7967,"2,2-diomC3","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7968,"c-C4","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7969,"i-pentane","ethanol","HV",0.260000000,0.000000000,0,0.260000000,0.000000000,0.000000000,0.395000000,744.000000000,1071.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.260000000,0.395000000,744.000000000,1071.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7970,"n-pentane","ethanol","HV",0.260000000,0.000000000,0,0.260000000,0.000000000,0.000000000,0.395000000,1230.000000000,1186.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.260000000,0.395000000,1230.000000000,1186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.045000000,0.000000000,0.045000000,0.045000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7971,"c-pentane","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7972,"2,2-dim-C4","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7973,"2,3-dimC4","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7974,"2-m-C5","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7975,"3-m-C5","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7976,"n-hexane","ethanol","HV",0.280000000,0.000000000,0,0.280000000,0.000000000,0.000000000,0.395000000,758.000000000,1276.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.280000000,0.395000000,758.000000000,1276.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.010000000,0.000000000,0.010000000,0.010000000,0.010000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7978,"m-c-C5","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7979,"benzene","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.022000000,0.000000000,0.022000000,0.022000000,0.022000000,0.000000000,0.000000000,0.000000000,1,0.002000000,0.000000000 +7980,"c-hexane","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.033000000,0.000000000,0.033000000,0.033000000,0.033000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7981,"223-tm-C4","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7982,"3,3-dim-C5","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7983,"n-heptane","ethanol","Classic",0.290000000,0.000000000,0,0.290000000,0.000000000,0.000000000,0.395000000,758.000000000,1276.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.290000000,0.395000000,758.000000000,1276.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7984,"m-c-C6","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7985,"et-c-C5","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7986,"toluene","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.020000000,0.000000000,0.020000000,0.020000000,0.020000000,0.000000000,0.000000000,0.000000000,1,0.003000000,0.000000000 +7987,"c-c7","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7988,"11-dm-c-C6","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7989,"c-c8","ethanol","Classic",0.310000000,0.000000000,0,0.310000000,0.000000000,0.000000000,0.395000000,758.000000000,1276.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.310000000,0.395000000,758.000000000,1276.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7990,"c-12-dmcC6","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7991,"et-benzene","ethanol","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7992,"MDEA+","ethanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7993,"H3O+","ethanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7994,"MDEA","ethanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7995,"HCO3-","ethanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7996,"OH-","ethanol","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7997,"Na+","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7998,"Cl-","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +7999,"Ca++","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8000,"Li+","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8001,"Br-","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8002,"NH4+","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8003,"CO3--","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8004,"DEACOO-","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8005,"DEA","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8006,"DEA+","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8007,"BEA","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8008,"BEA+","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8009,"BEACOO-","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8010,"K+","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8011,"HS-","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8012,"S--","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8013,"I-","ethanol","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8014,"Mg++","ethanol","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8015,"Ba++","ethanol","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8016,"Sr++","ethanol","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8019,"ethanol","n-pentane","HV",0.260000000,0.000000000,0,0.260000000,0.000000000,0.000000000,0.395000000,1186.000000000,1230.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.260000000,0.260000000,0.395000000,1186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.008000000,0.000000000,-0.008000000,-0.008000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8020,"MEG","n-pentane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.200000000,0.365600000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8021,"DEG","n-pentane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.200000000,0.365600000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8022,"TEG","n-pentane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.200000000,0.365600000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8023,"NaCl","n-pentane","Classic",0.700000000,0.000000000,0,0.700000000,0.000000000,0.000000000,0.036900000,20193.000000000,3528.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.700000000,0.700000000,0.036900000,20193.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8024,"KCl","n-pentane","Classic",1.350000000,0.000000000,0,1.350000000,0.000000000,0.000000000,0.007800000,-48374.000000000,35311.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.350000000,1.350000000,0.007800000,-48374.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8025,"CaCl2","n-pentane","Classic",1.180000000,0.000000000,0,1.180000000,0.000000000,0.000000000,0.036400000,99000.000000000,3080.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.180000000,1.180000000,0.036400000,99000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8026,"HCOONa","n-pentane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8027,"HCOOK","n-pentane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8028,"HCOOCs","n-pentane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8029,"helium","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8054,"benzene","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8055,"c-hexane","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8056,"223-tm-C4","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8057,"3,3-dim-C5","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8058,"n-heptane","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8059,"m-c-C6","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8060,"et-c-C5","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8061,"toluene","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8062,"c-c7","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8063,"11-dm-c-C6","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8064,"c-c8","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8065,"c-12-dmcC6","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8066,"et-benzene","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8067,"MDEA+","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8068,"H3O+","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8069,"MDEA","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8070,"HCO3-","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8071,"OH-","n-pentane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8072,"Na+","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8073,"Cl-","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8074,"Ca++","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8075,"Li+","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8076,"Br-","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8077,"NH4+","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8078,"CO3--","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8079,"DEACOO-","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8080,"DEA","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8081,"DEA+","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8082,"BEA","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8083,"BEA+","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8084,"BEACOO-","n-pentane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8086,"methanol","n-heptane","HV",0.260000000,0.000000000,0,0.260000000,0.000000000,0.000000000,0.395000000,1186.000000000,1230.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.260000000,0.260000000,0.395000000,1186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.002000000,0.000000000,-0.002000000,-0.002000000,-0.002000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8087,"ethanol","n-heptane","HV",0.260000000,0.000000000,0,0.260000000,0.000000000,0.000000000,0.395000000,1186.000000000,1230.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.260000000,0.260000000,0.395000000,1186.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.008000000,0.000000000,0.008000000,0.008000000,0.008000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8088,"MEG","n-heptane","Classic",0.200000000,0.000000000,0,0.080000000,0.000000000,0.000000000,0.398670000,4938.400000000,-1924.000000000,0,0.000000000,0.000000000,0.000000000,"WS",-0.393091937,0.398670000,4938.000000000,1924.300000000,0.000000000,0.760000000,-7.790000000,-7.958600000,0.760000000,0.047000000,0.000000000,0.047000000,0.047000000,0.047000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8089,"DEG","n-heptane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.200000000,0.365600000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.065000000,0.000000000,0.065000000,0.065000000,0.065000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8090,"TEG","n-heptane","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.200000000,0.365600000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.110000000,0.000000000,0.110000000,0.110000000,0.094000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8091,"NaCl","n-heptane","Classic",0.700000000,0.000000000,0,0.700000000,0.000000000,0.000000000,0.036900000,20193.000000000,3528.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.700000000,0.700000000,0.036900000,20193.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8092,"KCl","n-heptane","Classic",1.350000000,0.000000000,0,1.350000000,0.000000000,0.000000000,0.007800000,-48374.000000000,35311.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.350000000,1.350000000,0.007800000,-48374.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8093,"CaCl2","n-heptane","Classic",1.180000000,0.000000000,0,1.180000000,0.000000000,0.000000000,0.036400000,99000.000000000,3080.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.180000000,1.180000000,0.036400000,99000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8094,"HCOONa","n-heptane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8095,"HCOOK","n-heptane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8096,"HCOOCs","n-heptane","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8097,"helium","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8098,"hydrogen","n-heptane","Classic",0.216600000,0.000000000,0,0.216600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.216600000,0.216600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8099,"nitrogen","n-heptane","Classic",0.080000000,0.000000000,0,0.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8100,"Ar","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8101,"oxygen","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8102,"CO2","n-heptane","Classic",0.120000000,0.000000000,0,0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.120000000,0.120000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8103,"H2S","n-heptane","Classic",0.073700000,0.000000000,0,0.073700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.060000000,0.060000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8105,"ethane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8106,"propane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8107,"c-propane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8108,"i-butane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8109,"n-butane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8110,"2,2-diomC3","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8111,"c-C4","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8112,"i-pentane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8113,"n-pentane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8114,"c-pentane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8115,"2,2-dim-C4","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8116,"2,3-dimC4","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8117,"2-m-C5","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8118,"3-m-C5","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8119,"n-hexane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8120,"hexane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8121,"m-c-C5","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8122,"benzene","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8123,"c-hexane","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8124,"223-tm-C4","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8125,"3,3-dim-C5","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8127,"m-c-C6","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8128,"et-c-C5","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8129,"toluene","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8130,"c-c7","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8131,"11-dm-c-C6","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8132,"c-c8","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8133,"c-12-dmcC6","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8134,"et-benzene","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8135,"MDEA+","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8136,"H3O+","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8137,"MDEA","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8138,"HCO3-","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8139,"OH-","n-heptane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8140,"Na+","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8141,"Cl-","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8142,"Ca++","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8143,"Li+","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8144,"Br-","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8145,"NH4+","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8146,"CO3--","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8147,"DEACOO-","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8148,"DEA","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8149,"DEA+","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8150,"BEA","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8151,"BEA+","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8152,"BEACOO-","n-heptane","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8153,"S8","methane","Classic",0.100000000,0.000000000,0,0.100000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.100000000,0.000000000,0.100000000,0.100000000,0.100000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8154,"S8","n-hexane","Classic",0.050000000,0.000000000,0,-0.080000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8155,"S8","n-pentane","Classic",0.050000000,0.000000000,0,-0.080000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8156,"S8","i-pentane","Classic",0.050000000,0.000000000,0,-0.080000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8158,"S8","n-heptane","Classic",0.050000000,0.000000000,0,-0.080000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8159,"S8","n-octane","Classic",0.050000000,0.000000000,0,-0.080000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8160,"S8","i-butane","Classic",0.050000000,0.000000000,0,-0.080000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8161,"S8","n-butane","Classic",0.050000000,0.000000000,0,-0.080000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8162,"c-hexane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8163,"c-c7","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8164,"hexane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8165,"HCO3-","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8166,"MDEA","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8167,"H3O+","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8168,"MDEA+","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8169,"et-benzene","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8170,"c-12-dmcC6","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8171,"Na+","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8172,"11-dm-c-C6","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8173,"Cl-","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8174,"toluene","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8175,"et-c-C5","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8176,"m-c-C6","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8177,"n-heptane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8178,"3,3-dim-C5","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8179,"223-tm-C4","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8180,"benzene","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8181,"c-c8","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8182,"DEA+","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8183,"Sr++","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8184,"Ba++","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8185,"m-c-C5","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8186,"I-","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8187,"HS-","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8188,"K+","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8189,"BEACOO-","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8190,"OH-","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8191,"BEA","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8192,"S--","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8193,"DEA","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8194,"DEACOO-","neon","Classic",1.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8195,"CO3--","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8196,"NH4+","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8197,"Br-","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8198,"Li+","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8199,"Ca++","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8200,"BEA+","neon","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8201,"CaCl2","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.017400000,80541.000000000,2200.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.055000000,8790.000000000,14765.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.290000000,0.000000000,2.290000000,2.290000000,2.290000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8202,"oxygen","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.007800000,0.000000000,-0.007800000,-0.007800000,-0.007800000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8203,"Ar","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8204,"nitrogen","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8205,"hydrogen","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.007100000,0.000000000,0.007100000,0.007100000,0.007100000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8206,"helium","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8207,"HCOOCs","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8208,"n-hexane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8209,"HCOONa","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8210,"methane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.020000000,0.000000000,0.020000000,0.020000000,0.020000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8211,"KCl","neon","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.007800000,41212.000000000,2335.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.097000000,6733.000000000,4007.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,5.240000000,0.000000000,5.240000000,5.240000000,5.240000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8212,"NaCl","neon","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.010500000,94947.000000000,1773.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.084000000,7623.000000000,5281.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8213,"TEG","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8214,"DEG","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8215,"MEG","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8216,"ethanol","neon","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.395000000,308.000000000,364.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,1610.000000000,255.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8217,"HCOOK","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8218,"c-C4","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8219,"3-m-C5","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8220,"Mg++","neon","Classic",0.000000000,0.000000000,0,1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8221,"2-m-C5","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8222,"2,3-dimC4","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8223,"2,2-dim-C4","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8224,"c-pentane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8225,"CO2","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8226,"i-pentane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8227,"H2S","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8228,"2,2-diomC3","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8229,"n-butane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8230,"i-butane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8231,"c-propane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8232,"propane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8233,"ethane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.060000000,0.000000000,0.060000000,0.060000000,0.060000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8234,"methanol","neon","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.395000000,308.000000000,364.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.395000000,1610.000000000,255.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.500000000,0.000000000,0.500000000,0.500000000,0.500000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8235,"n-pentane","neon","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8236,"water","AceticAcid","HV",-0.148100000,0.000000000,0,0.000000000,0.000000000,0.000000000,-2.349000000,-121.680000000,-287.280000000,0,0.000000000,0.000000000,0.000000000,"HV",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.288000000,0.950000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8237,"CO2","AceticAcid","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,-0.013300000,4368.690000000,-2346.430000000,0,0.000000000,0.000000000,0.000000000,"HV",0.000000000,0.300000000,0.000000000,0.000000000,0.000000000,-5.277000000,4.042000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8238,"methane","AceticAcid","HV",0.112898000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,3161.400000000,-921.760000000,0,0.000000000,0.000000000,0.000000000,"HV",0.000000000,0.300000000,0.000000000,0.000000000,0.000000000,-2.193800000,1.218100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8239,"CO2","Ac-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8240,"Ac-","water","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8241,"AceticAcid","HCO3-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8242,"AceticAcid","Ac-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8243,"MDEA","Ac-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8244,"HCO3-","Ac-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8245,"AceticAcid","MDEA+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8246,"AceticAcid","MDEA","HV",0.200000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,600.000000000,300.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8247,"Ac-","MDEA+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.000000000,0.000000000,1.000000000,1.000000000,1.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8248,"Piperazine-n","water-n","HV",0.200000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.364980000,2622.533000000,-1705.020800000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,-2.704900000,0.715600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8249,"CO2","Piperazine","Classic",-1.031953999,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8250,"CO2","Piperazine+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1,-0.000059700,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8251,"CO2","PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8252,"CO2","H+PZCOO-","Classic",-0.219549307,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8253,"CO2","-OOCPZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8254,"water","Piperazine+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8255,"water","PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8256,"water","H+PZCOO-","Classic",-0.199480972,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8257,"water","-OOCPZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8258,"Piperazine","HCO3-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8259,"Piperazine","Piperazine+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8260,"Piperazine","PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8261,"Piperazine","H+PZCOO-","Classic",-0.278829290,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8262,"Piperazine","-OOCPZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8263,"HCO3-","Piperazine+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8264,"HCO3-","PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8265,"HCO3-","H+PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8266,"HCO3-","-OOCPZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8267,"Piperazine+","PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8268,"Piperazine+","H+PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8269,"Piperazine+","-OOCPZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8270,"PZCOO-","H+PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8271,"PZCOO-","-OOCPZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8272,"H+PZCOO-","-OOCPZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8273,"OH-","Piperazine","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8274,"OH-","Piperazine+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8275,"OH-","HCO3-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8276,"OH-","H+PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8277,"OH-","PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8278,"OH-","-OOCPZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8279,"Piperazine","water","HV",0.200000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.364980000,2622.533000000,-1705.020800000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,-2.704900000,0.715600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8280,"MDEA","Piperazine","Classic",-0.346887110,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8281,"MDEA","Piperazine+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8282,"MDEA","PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8283,"MDEA","H+PZCOO-","Classic",-0.200000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8284,"MDEA","-OOCPZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8285,"MDEA+","Piperazine","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8286,"MDEA+","Piperazine+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8287,"MDEA+","PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8288,"MDEA+","H+PZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8289,"MDEA+","-OOCPZCOO-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8290,"MDEA","water","HV",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.210000000,-1461.000000000,1201.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,0.386000000,-401.570000000,803.410000000,0.000000000,5.890000000,-7.240000000,0.000000000,0.000000000,-0.250000000,0.000000000,-0.250000000,-0.250000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8291,"OH-","CO3--","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8292,"HCO3-","CO3--","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8293,"AceticAcid","CO3--","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8294,"AceticAcid","OH-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8295,"Ac-","CO3--","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.386000000,-401.570000000,803.410000000,0.000000000,5.093855611,-6.006005569,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8296,"Ac-","OH-","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8297,"CO3--","Piperazine+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8298,"Piperazine","MDEA+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8299,"methane","H+PZCOO-","Classic",0.760482000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8300,"methane","Piperazine+","Classic",1.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000630096,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8301,"Piperazine","methane","Classic",0.599959902,0.000000000,0,0.000000000,0.000000000,0.000000000,0.122000000,2467.000000000,274.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.646504377,0.000000000,0.646504377,0.646504377,0.646504377,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8302,"n-octane","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.145000000,681.000000000,2507.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.145000000,681.000000000,2507.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.016500000,0.000000000,-0.016500000,-0.016500000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8303,"n-nonane","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.145000000,681.000000000,2507.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.145000000,681.000000000,2507.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.042500000,0.000000000,-0.042500000,-0.042500000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8304,"n-decane","water","Classic",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.145000000,681.000000000,2507.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.500000000,0.145000000,681.000000000,2507.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.068500000,0.000000000,-0.068500000,-0.068500000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8306,"methanolPVTsim","water","HV",-0.078900000,0.000000000,0,-0.078900000,0.000000000,0.000000000,0.250000000,549.800000000,-407.200000000,0,0.000000000,0.000000000,0.000000000,"WS",0.093103947,0.303000000,-48.680000000,610.600000000,0.000000000,1.540000000,-1.020000000,0.000000000,0.000000000,-0.090000000,0.093103947,-0.090000000,-0.090000000,-0.090000000,0.093103947,0.000000000,0.000000000,0,0.000000000,0.000000000 +8307,"water","MEGPVTsim18","HV",0.000000000,0.000000000,0,-0.038500000,0.000000000,0.000000000,0.322600000,-256.390000000,-60.790000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,0.000000000,0.510000000,0.780000000,0.000000000,0.000000000,-0.115000000,0.000000000,-0.115000000,-0.115000000,-0.115000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8308,"water","MEGPVTsim19","HV",0.000000000,-0.630000000,-1,-0.038500000,0.000000000,0.000000000,0.004000000,2673.000000000,-957.600000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.115000000,0.000000000,-0.115000000,-0.115000000,-0.115000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8309,"methanolPVTsim","propanePVTsim","HV",0.140000000,0.000000000,0,0.140000000,0.000000000,0.000000000,0.420000000,183.000000000,848.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,0.000000000,0.830000000,0.860000000,0.000000000,0.000000000,-0.115000000,0.000000000,-0.115000000,-0.115000000,-0.115000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8310,"ethanolPVTsim","propanePVTsim","HV",0.025600000,0.000000000,0,0.025600000,0.000000000,0.000000000,0.395000000,435.000000000,895.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.115000000,0.000000000,-0.115000000,-0.115000000,-0.115000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8311,"methanolPVTsim","nbutanePVTsim","HV",0.180000000,0.000000000,0,0.180000000,0.000000000,0.000000000,0.420000000,1191.000000000,1148.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.115000000,0.000000000,-0.115000000,-0.115000000,-0.115000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8312,"ethanolPVTsim","nbutanePVTsim","HV",0.260000000,0.000000000,0,0.260000000,0.000000000,0.000000000,0.395000000,1230.000000000,1186.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.115000000,0.000000000,-0.115000000,-0.115000000,-0.115000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8313,"mercury","methane","Classic",0.049700000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8314,"mercury","n-pentane","Classic",0.057000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.020000000,0.000000000,0.020000000,0.020000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8315,"mercury","n-hexane","Classic",0.026400000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.075000000,0.000000000,-0.075000000,-0.075000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8316,"mercury","n-heptane","Classic",0.004500000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.100000000,0.000000000,-0.100000000,-0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8768,"water","NaCl","HV",0.000000000,0.000000000,0,-0.038500000,0.000000000,0.000000000,-0.014500000,1506.300000000,-863.300000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,0.000000000,4.110000000,-0.603000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8769,"MEG","NaCl","HV",0.000000000,0.000000000,0,-0.038500000,0.000000000,0.000000000,-0.014500000,1506.300000000,-863.300000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,0.000000000,4.110000000,-0.603000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8770,"water","CaCl2","HV",0.000000000,0.000000000,0,-0.038500000,0.000000000,0.000000000,-0.014500000,1506.300000000,-863.300000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,0.000000000,4.110000000,-0.603000000,0.000000000,0.000000000,-0.115000000,0.000000000,-0.115000000,-0.115000000,-0.115000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8771,"MEG","CaCl2","HV",0.000000000,0.000000000,0,-0.038500000,0.000000000,0.000000000,-0.014500000,1506.300000000,-863.300000000,0,0.000000000,0.000000000,0.000000000,"WS",0.407748000,0.327000000,1229.000000000,-946.400000000,0.000000000,4.110000000,-0.603000000,0.000000000,0.000000000,-0.115000000,0.000000000,-0.115000000,-0.115000000,-0.115000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8772,"n-nonane","H2S","Classic",0.054200000,0.000000000,0,0.054200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",1.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8773,"nC10","nitrogen","Classic",0.129300000,0.000000000,0,0.129300000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8774,"nC11","nC13","Classic",-0.050000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8775,"nC14","nC16","Classic",-0.015000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8776,"n-octane","TEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.109000000,0.000000000,0.109000000,0.109000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8777,"n-nonane","TEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.100000000,0.000000000,0.100000000,0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8778,"nC10","TEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.091000000,0.000000000,0.091000000,0.091000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8779,"COS","TEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.080000000,0.000000000,0.080000000,0.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8780,"COS","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.100000000,0.000000000,0.100000000,0.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8781,"COS","methane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.010000000,0.000000000,0.010000000,0.010000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8782,"M-cy-C6","MEG","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.365600000,2063.000000000,601.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.061000000,0.000000000,0.061000000,0.061000000,0.061000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8784,"DEG","benzene","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.200000000,0.365600000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.028000000,0.000000000,0.028000000,0.028000000,0.028000000,0.000000000,0.000000000,0.000000000,1,0.035000000,0.000000000 +8785,"DEG","toluene","Classic",0.200000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.365600000,2063.000000000,601.700000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.200000000,0.200000000,0.365600000,2063.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.046000000,0.000000000,0.046000000,0.046000000,0.046000000,0.000000000,0.000000000,0.000000000,1,0.033000000,0.000000000 +8786,"i-propanol","water","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.224500000,2207.030000000,-2612.510000000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,0.379100000,-268.880000000,885.990000000,0.000000000,-4.600000000,7.300000000,0.000000000,0.000000000,-0.080000000,0.000000000,-0.080000000,-0.080000000,-0.080000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8787,"1-propanol","water","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.224500000,2207.030000000,-2612.510000000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,0.379100000,-268.880000000,885.990000000,0.000000000,-4.600000000,7.300000000,0.000000000,0.000000000,-0.160000000,0.000000000,-0.160000000,-0.160000000,-0.160000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8788,"1-propanol","n-hexane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.017000000,0.000000000,0.017000000,0.017000000,0.017000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8789,"1-propanol","c-hexane","Classic",0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.029000000,0.000000000,0.029000000,0.029000000,0.029000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8790,"mercury","o-xylene","Classic",0.058300000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8791,"mercury","c-hexane","Classic",0.048300000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8792,"methane","1-propanol","Classic",0.190000000,0.000000000,0,0.190000000,0.000000000,0.000000000,0.395000000,2005.000000000,494.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.190000000,0.395000000,2005.000000000,494.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.040000000,0.000000000,-0.040000000,-0.040000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8793,"ethane","1-propanol","Classic",0.190000000,0.000000000,0,0.190000000,0.000000000,0.000000000,0.395000000,2005.000000000,494.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.190000000,0.395000000,2005.000000000,494.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.300000000,0.000000000,-0.300000000,-0.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8794,"mercury","i-butane","Classic",0.050000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8795,"S8","benzene","Classic",0.050000000,0.000000000,0,0.050000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8796,"S8","toluene","Classic",0.050000000,0.000000000,0,0.050000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8797,"S8","ethane","Classic",0.050000000,0.000000000,0,0.050000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8798,"S8","propane","Classic",0.050000000,0.000000000,0,0.050000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.050000000,0.000000000,0.050000000,0.050000000,0.050000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8799,"S8","water","Classic",0.050000000,0.000000000,0,0.200000000,0.000000000,0.000000000,0.150000000,-123.601143800,4875.094236000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,26.600000000,-142.200000000,0.000000000,2.137853939,-6.549655038,0.000000000,0.000000000,0.200000000,0.000000000,0.200000000,0.200000000,0.200000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8800,"mercury","ethane","Classic",0.070400000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8801,"mercury","propane","Classic",0.067400000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8803,"mercury","n-butane","Classic",0.073000000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8804,"mercury","benzene","Classic",0.117700000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8805,"mercury","toluene","Classic",0.070400000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8806,"mercury","MEG","Classic",0.296500000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8807,"mercury","water","Classic",0.689600000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8808,"mercury","nitrogen","Classic",0.016500000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8809,"mercury","CO2","Classic",0.367400000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8810,"mercury","n-octane","Classic",-0.017600000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8811,"mercury","nC10","Classic",-0.053400000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8812,"mercury","M-cy-C6","Classic",0.029200000,0.000000000,0,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8813,"n-octane","methane","Classic",0.044799998,0.000000000,0,0.044799998,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8814,"n-nonane","methane","Classic",0.044799998,0.000000000,0,0.044799998,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8815,"nC10","methane","Classic",0.041099999,0.000000000,0,0.041099999,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8816,"n-octane","CO2","Classic",0.100000001,0.000000000,0,0.100000001,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8817,"n-nonane","CO2","Classic",0.100000001,0.000000000,0,0.100000001,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8818,"nC10","CO2","Classic",0.130400002,0.000000000,0,0.130400002,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8819,"n-octane","nitrogen","Classic",0.079999998,0.000000000,0,0.079999998,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8820,"n-nonane","nitrogen","Classic",0.079999998,0.000000000,0,0.079999998,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8821,"nC10","nitrogen","Classic",0.079999998,0.000000000,0,0.079999998,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000,0.000000000,"Classic",0.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8822,"n-butane","water","HV",0.500000000,0.000000000,0,0.500000000,0.000000000,0.000000000,0.145000000,681.000000000,2507.000000000,0,0.000000000,0.000000000,0.000000000,"WS",0.520000000,0.145000000,681.000000000,2507.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 +8823,"ammonia","water","Classic",-0.078900000,0.000000000,0,-0.078900000,0.000000000,0.000000000,0.357000000,410.670000000,-169.630000000,0,0.000000000,0.000000000,0.000000000,"WS",0.093103947,0.303000000,-48.680000000,610.600000000,0.000000000,1.890000000,-1.110000000,0.000000000,0.000000000,-0.153000000,0.000000000,-0.153000000,-0.153000000,-0.153000000,0.000000000,0.000000000,0.000000000,0,0.000000000,0.000000000 diff --git a/src/main/resources/data/ISO6976constants.csv b/src/main/resources/data/ISO6976constants.csv new file mode 100644 index 0000000000..bc0791c0ac --- /dev/null +++ b/src/main/resources/data/ISO6976constants.csv @@ -0,0 +1,57 @@ +"ID","ComponentName","MolarMass","Z0","Z15","Z20","srtb0","srtb15","srtb20","Hsupmolar0","Hsupmolar15","Hsupmolar20","Hsupmolar25","Hsupmolar60F","Hinfmolar0","Hinfmolar15","Hinfmolar20","Hinfmolar25","Hinfmolar60F","numberOfCarbon" +1,"methane",16.043000000,0.997600000,0.998000000,0.998100000,0.049000000,0.044700000,0.043600000,892.970000000,891.560000000,891.090000000,890.630000000,891.510000000,802.820000000,802.690000000,802.650000000,802.600000000,802.690000000,1 +2,"ethane",30.070000000,0.990000000,0.991500000,0.992000000,0.100000000,0.092200000,0.089400000,1564.340000000,1562.140000000,1561.410000000,1560.690000000,1562.060000000,1429.120000000,1428.840000000,1428.740000000,1428.640000000,1428.830000000,2 +3,"propane",44.097000000,0.978900000,0.982100000,0.983400000,0.145300000,0.133800000,0.128800000,2224.010000000,2221.100000000,2220.130000000,2219.170000000,2220.990000000,2043.710000000,2043.370000000,2043.230000000,2043.110000000,2043.350000000,3 +4,"n-butane",58.123000000,0.957200000,0.965000000,0.968200000,0.206900000,0.187100000,0.178300000,2883.820000000,2879.760000000,2878.570000000,2877.400000000,2879.630000000,2658.450000000,2657.600000000,2657.450000000,2657.320000000,2657.580000000,4 +6,"i-butane",58.123000000,0.958000000,0.968000000,0.971000000,0.204900000,0.178900000,0.170300000,2874.200000000,2870.580000000,2869.380000000,2868.200000000,2870.450000000,2648.830000000,2648.420000000,2648.260000000,2648.120000000,2648.400000000,4 +7,"n-pentane",72.150000000,0.918000000,0.937000000,0.945000000,0.286400000,0.251000000,0.234500000,3542.890000000,3538.600000000,3537.170000000,3535.770000000,3538.440000000,3272.450000000,3272.000000000,3271.830000000,3271.670000000,3271.980000000,5 +8,"i-pentane",72.150000000,0.937000000,0.948000000,0.953000000,0.251000000,0.228000000,0.216800000,3535.980000000,3531.680000000,3530.240000000,3528.830000000,3531.520000000,3265.540000000,3265.080000000,3264.890000000,3264.730000000,3265.060000000,5 +9,"22-dim-C3",72.150000000,0.943000000,0.955000000,0.959000000,0.238700000,0.212100000,0.202500000,3521.720000000,3517.430000000,3516.010000000,3514.610000000,3517.270000000,3251.280000000,3250.830000000,3250.670000000,3250.510000000,3250.810000000,5 +11,"n-hexane",86.177000000,0.892000000,0.913000000,0.919000000,0.328600000,0.295000000,0.284600000,4203.230000000,4198.240000000,4196.580000000,4194.950000000,4198.060000000,3887.710000000,3887.210000000,3887.010000000,3886.840000000,3887.190000000,6 +12,"2-m-C5",86.177000000,0.898000000,0.914000000,0.926000000,0.319400000,0.293300000,0.272000000,4195.610000000,4190.620000000,4188.950000000,4187.320000000,4190.430000000,3880.090000000,3879.590000000,3879.380000000,3879.210000000,3879.570000000,6 +13,"3-m-C5",86.177000000,0.898000000,0.917000000,0.928000000,0.319400000,0.288100000,0.268300000,4198.240000000,4193.220000000,4191.540000000,4189.900000000,4193.030000000,3882.720000000,3882.190000000,3881.970000000,3881.790000000,3882.170000000,6 +14,"22-dim-C4",86.177000000,0.916000000,0.931000000,0.935000000,0.289800000,0.262700000,0.255000000,4185.840000000,4180.830000000,4179.150000000,4177.520000000,4180.640000000,3870.320000000,3869.800000000,3869.590000000,3869.410000000,3869.780000000,6 +15,"23-dim-C4",86.177000000,0.910000000,0.925000000,0.934000000,0.300000000,0.273900000,0.256900000,4193.630000000,4188.600000000,4186.930000000,4185.280000000,4188.410000000,3878.110000000,3877.570000000,3877.360000000,3877.170000000,3877.550000000,6 +16,"n-heptane",100.204000000,0.830000000,0.866000000,0.876000000,0.412300000,0.366100000,0.352100000,4862.870000000,4857.180000000,4855.290000000,4853.430000000,4856.970000000,4502.280000000,4501.720000000,4501.490000000,4501.300000000,4501.690000000,7 +17,"n-octane",114.231000000,0.742000000,0.802000000,0.817000000,0.507900000,0.445000000,0.427800000,5522.400000000,5516.010000000,5513.880000000,5511.800000000,5515.770000000,5116.730000000,5116.110000000,5115.870000000,5115.660000000,5116.080000000,8 +18,"n-nonane",128.258000000,0.613000000,0.710000000,0.735000000,0.622100000,0.538500000,0.514800000,6182.910000000,6175.820000000,6173.460000000,6171.150000000,6175.560000000,5732.170000000,5731.490000000,5731.220000000,5730.990000000,5731.460000000,9 +19,"nC10",142.285000000,0.434000000,0.584000000,0.623000000,0.752300000,0.645000000,0.614000000,6842.690000000,6834.900000000,6832.310000000,6829.770000000,6834.610000000,6346.880000000,6346.140000000,6345.850000000,6345.590000000,6346.110000000,10 +20,"Ethylene",28.054000000,0.992500000,0.993600000,0.994000000,0.086600000,0.080000000,0.077500000,1413.510000000,1412.110000000,1411.650000000,1411.180000000,1412.060000000,1323.360000000,1323.240000000,1323.200000000,1323.150000000,1323.240000000,3 +21,"Propylene",42.081000000,0.981000000,0.984000000,0.985000000,0.137800000,0.126500000,0.122500000,2061.570000000,2059.430000000,2058.720000000,2058.020000000,2059.350000000,1926.350000000,1926.130000000,1926.050000000,1925.970000000,1926.120000000,3 +22,"1-Butene",56.108000000,0.965000000,0.970000000,0.972000000,0.187100000,0.173200000,0.167300000,2721.550000000,2718.700000000,2717.750000000,2716.820000000,2718.590000000,2541.250000000,2540.970000000,2540.860000000,2540.760000000,2540.960000000,3 +23,"cis-2-Butene",56.108000000,0.961000000,0.967000000,0.969000000,0.197500000,0.181700000,0.176100000,2714.900000000,2711.900000000,2711.000000000,2710.000000000,2711.800000000,2534.600000000,2534.200000000,2534.100000000,2533.900000000,2534.200000000,3 +24,"trans-2-Butene",56.108000000,0.961000000,0.968000000,0.969000000,0.197500000,0.178900000,0.176100000,2711.100000000,2708.300000000,2707.400000000,2706.400000000,2708.300000000,2530.800000000,2530.500000000,2530.500000000,2530.300000000,2530.500000000,3 +25,"2-Methylpropene",56.108000000,0.965000000,0.971000000,0.972000000,0.187100000,0.170300000,0.167300000,2704.800000000,2702.000000000,2701.100000000,2700.200000000,2702.000000000,2524.500000000,2524.300000000,2524.200000000,2524.100000000,2524.300000000,3 +26,"1-Pentene",70.134000000,0.938000000,0.949000000,0.952000000,0.249000000,0.225800000,0.219100000,3381.290000000,3377.750000000,3376.570000000,3375.420000000,3377.750000000,3155.920000000,3155.590000000,3155.450000000,3155.340000000,3155.590000000,3 +27,"Propadiene",40.065000000,0.980000000,0.983000000,0.984000000,0.141400000,0.130400000,0.126500000,1945.250000000,1943.960000000,1943.530000000,1943.110000000,1943.960000000,1855.100000000,1855.090000000,1855.080000000,1855.080000000,1855.090000000,3 +28,"1,2-Butadiene",54.092000000,0.955000000,0.963000000,0.965000000,0.212100000,0.192400000,0.187100000,2597.130000000,2595.120000000,2594.450000000,2593.790000000,2595.120000000,2461.910000000,2461.820000000,2461.780000000,2461.740000000,2461.820000000,3 +29,"1,3-Butadiene",54.092000000,0.966000000,0.971000000,0.973000000,0.184400000,0.170300000,0.164300000,2544.130000000,2542.100000000,2541.430000000,2540.770000000,2542.100000000,2408.910000000,2408.800000000,2408.760000000,2408.720000000,2408.800000000,3 +30,"acetylene",26.038000000,0.991000000,0.993000000,0.993000000,0.094900000,0.083700000,0.083700000,1301.860000000,1301.370000000,1301.210000000,1301.050000000,1301.370000000,1256.790000000,1256.940000000,1256.980000000,1257.030000000,1256.940000000,3 +31,"c-C5",70.134000000,0.935000000,0.947000000,0.950000000,0.255000000,0.230200000,0.223600000,3326.140000000,3322.190000000,3320.880000000,3319.590000000,3322.190000000,3100.770000000,3100.030000000,3099.760000000,3099.510000000,3100.030000000,5 +32,"M-cy-C5",84.161000000,0.902000000,0.921000000,0.927000000,0.313000000,0.281100000,0.270200000,3977.040000000,3972.460000000,3970.930000000,3969.440000000,3972.460000000,3706.600000000,3705.860000000,3705.590000000,3705.340000000,3705.860000000,6 +33,"E-cy-C5",98.188000000,0.841000000,0.876000000,0.885000000,0.398700000,0.352100000,0.339100000,4637.270000000,4631.950000000,4630.190000000,4628.470000000,4631.950000000,4321.750000000,4320.920000000,4320.630000000,4320.360000000,4320.920000000,6 +34,"c-hexane",84.161000000,0.897000000,0.918000000,0.924000000,0.320900000,0.286400000,0.275700000,3960.670000000,3956.020000000,3954.470000000,3952.960000000,3956.020000000,3690.230000000,3689.420000000,3689.130000000,3688.860000000,3689.420000000,6 +35,"Methylcyclohexane",98.188000000,0.855000000,0.886000000,0.894000000,0.380800000,0.337600000,0.325600000,4609.340000000,4604.090000000,4602.350000000,4600.640000000,4604.090000000,4293.820000000,4293.060000000,4292.780000000,4292.530000000,4293.060000000,7 +36,"ethylcyclohexane",112.215000000,0.770000000,0.824000000,0.838000000,0.479600000,0.419500000,0.402500000,5272.880000000,5266.950000000,5264.980000000,5263.050000000,5266.950000000,4912.290000000,4911.490000000,4911.190000000,4910.920000000,4911.490000000,7 +37,"benzene",78.114000000,0.909000000,0.926000000,0.936000000,0.301700000,0.272000000,0.253000000,3305.030000000,3302.860000000,3302.150000000,3301.430000000,3302.860000000,3169.810000000,3169.560000000,3169.480000000,3169.380000000,3169.560000000,6 +38,"toluene",92.141000000,0.849000000,0.883000000,0.892000000,0.388600000,0.342100000,0.328600000,3952.720000000,3949.810000000,3948.840000000,3947.890000000,3949.810000000,3772.420000000,3772.080000000,3771.950000000,3771.830000000,3772.080000000,7 +39,"ethylbenzene",106.167000000,0.764000000,0.823000000,0.837000000,0.485800000,0.420700000,0.403700000,4613.140000000,4609.530000000,4608.320000000,4607.150000000,4609.530000000,4387.770000000,4387.370000000,4387.200000000,4387.070000000,4387.370000000,8 +40,"o-Xylene",106.167000000,0.737000000,0.804000000,0.821000000,0.512800000,0.442700000,0.423100000,4602.170000000,4598.640000000,4597.460000000,4596.310000000,4598.640000000,4376.800000000,4376.480000000,4376.340000000,4376.230000000,4376.480000000,8 +41,"methanol",32.042000000,0.773000000,0.872000000,0.892000000,0.476400000,0.357800000,0.328600000,766.590000000,765.090000000,764.590000000,764.090000000,765.090000000,676.440000000,676.220000000,676.140000000,676.060000000,676.220000000,3 +42,"Methanethiol",48.109000000,0.972000000,0.977000000,0.978000000,0.167300000,0.151700000,0.148300000,1241.630000000,1240.280000000,1239.830000000,1239.390000000,1240.280000000,1151.480000000,1151.410000000,1151.390000000,1151.360000000,1151.410000000,3 +43,"hydrogen",2.015900000,1.000600000,1.000600000,1.000600000,0.000000000,0.000000000,0.000000000,286.630000000,286.150000000,285.990000000,285.830000000,286.150000000,241.560000000,241.720000000,241.760000000,241.810000000,241.720000000,0 +44,"water",18.015300000,0.930000000,0.945000000,0.952000000,0.264600000,0.234500000,0.219100000,45.074000000,44.433000000,44.224000000,44.016000000,44.433000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +45,"H2S",34.082000000,0.990000000,0.990000000,0.990000000,0.100000000,0.100000000,0.100000000,562.940000000,562.380000000,562.190000000,562.010000000,562.380000000,517.870000000,517.950000000,517.970000000,517.990000000,517.950000000,0 +46,"Ammonia",17.030600000,0.985000000,0.988000000,0.989000000,0.122500000,0.109500000,0.104900000,384.570000000,383.510000000,383.160000000,382.810000000,383.510000000,316.960000000,316.860000000,316.820000000,316.790000000,316.860000000,0 +47,"hydrogencyanide",27.026000000,0.887000000,0.912000000,0.920000000,0.336200000,0.296600000,0.282800000,671.900000000,671.700000000,671.600000000,671.500000000,671.700000000,649.400000000,649.500000000,649.500000000,649.500000000,649.500000000,0 +48,"carbonmonoxide",28.010000000,0.999300000,0.999500000,0.999600000,0.026500000,0.022400000,0.020000000,282.800000000,282.910000000,282.950000000,282.980000000,282.910000000,282.800000000,282.910000000,282.950000000,282.980000000,282.910000000,0 +49,"carbonylsulfide",60.076000000,0.985000000,0.987000000,0.988000000,0.122500000,0.114000000,0.109500000,548.010000000,548.150000000,548.190000000,548.230000000,548.150000000,548.010000000,548.150000000,548.190000000,548.230000000,548.150000000,0 +50,"carbondisulfide",76.143000000,0.954000000,0.962000000,0.965000000,0.214500000,0.194900000,0.187100000,1104.060000000,1104.320000000,1104.410000000,1104.490000000,1104.320000000,1104.060000000,1104.320000000,1104.410000000,1104.490000000,1104.320000000,0 +51,"helium",4.002600000,1.000500000,1.000500000,1.000500000,0.000600000,0.000200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +52,"Neon",20.179700000,1.000500000,1.000500000,1.000500000,0.000600000,0.000200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +53,"argon",39.948000000,0.999000000,0.999200000,0.999300000,0.031600000,0.028300000,0.026500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +54,"nitrogen",28.013500000,0.999500000,0.999700000,0.999700000,0.022400000,0.017300000,0.017300000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +55,"oxygen",31.998800000,0.999000000,0.999200000,0.999300000,0.031600000,0.028300000,0.026500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +56,"CO2",44.010000000,0.993300000,0.994400000,0.994700000,0.081900000,0.074800000,0.072800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +57,"SulfurDioxide",64.065000000,0.976000000,0.979000000,0.980000000,0.154900000,0.144900000,0.141400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +58,"iC5",72.150000000,0.937000000,0.948000000,0.953000000,0.251000000,0.228000000,0.216800000,3535.980000000,3531.680000000,3530.240000000,3528.830000000,3531.520000000,3265.540000000,3265.080000000,3264.890000000,3264.730000000,3265.060000000,5 diff --git a/src/main/resources/data/ISO6976constants2016.csv b/src/main/resources/data/ISO6976constants2016.csv new file mode 100644 index 0000000000..ba49b2055f --- /dev/null +++ b/src/main/resources/data/ISO6976constants2016.csv @@ -0,0 +1,57 @@ +"ID","ComponentName","MolarMass","Z0","Z15","Z60F","Z20","srtb0","srtb15","srtb60F","srtb20","Hsupmolar0","Hsupmolar15","Hsupmolar20","Hsupmolar25","Hsupmolar60F","Hinfmolar0","Hinfmolar15","Hinfmolar20","Hinfmolar25","Hinfmolar60F","numberOfCarbon" +1,"methane",16.042460000,0.997620000,0.998020000,0.998040000,0.998140000,0.048860000,0.044520000,0.044370000,0.043170000,892.920000000,891.510000000,891.050000000,890.580000000,891.460000000,802.820000000,802.690000000,802.650000000,802.600000000,802.690000000,1 +2,"ethane",30.069040000,0.990100000,0.991530000,0.991580000,0.991970000,0.099700000,0.091900000,0.091600000,0.089500000,1564.350000000,1562.140000000,1561.420000000,1560.690000000,1562.060000000,1429.120000000,1428.840000000,1428.740000000,1428.640000000,1428.830000000,2 +3,"propane",44.095620000,0.978700000,0.982100000,0.982210000,0.983060000,0.146500000,0.134400000,0.134000000,0.130800000,2224.030000000,2221.100000000,2220.130000000,2219.170000000,2220.990000000,2043.710000000,2043.370000000,2043.230000000,2043.110000000,2043.350000000,3 +4,"n-butane",58.122200000,0.959490000,0.966500000,0.966720000,0.968450000,0.202200000,0.184000000,0.183400000,0.178500000,2883.350000000,2879.760000000,2878.580000000,2877.400000000,2879.630000000,2658.450000000,2657.600000000,2657.450000000,2657.320000000,2657.580000000,4 +6,"i-butane",58.122200000,0.964280000,0.970300000,0.970490000,0.971990000,0.188500000,0.172200000,0.177000000,0.167300000,2874.210000000,2870.580000000,2869.390000000,2868.200000000,2870.450000000,2648.830000000,2648.420000000,2648.260000000,2648.120000000,2648.400000000,4 +7,"n-pentane",72.148780000,0.918000000,0.937000000,0.937000000,0.945000000,0.258600000,0.236100000,0.235400000,0.229500000,3542.910000000,3538.600000000,3537.190000000,3535.770000000,3538.450000000,3272.450000000,3272.000000000,3271.830000000,3271.670000000,3271.980000000,5 +8,"i-pentane",72.148780000,0.937000000,0.948000000,0.948000000,0.953000000,0.245800000,0.225100000,0.224400000,0.218900000,3536.010000000,3531.680000000,3530.250000000,3528.830000000,3531.520000000,3265.540000000,3265.080000000,3264.890000000,3264.730000000,3265.060000000,5 +9,"22-dim-C3",72.148780000,0.943000000,0.955000000,0.955000000,0.959000000,0.224500000,0.204000000,0.203300000,0.197900000,3521.750000000,3517.440000000,3516.020000000,3514.610000000,3517.280000000,3251.280000000,3250.830000000,3250.670000000,3250.510000000,3250.810000000,5 +11,"n-hexane",86.175360000,0.892000000,0.913000000,0.913000000,0.919000000,0.331900000,0.300100000,0.299000000,0.290700000,4203.240000000,4198.240000000,4196.600000000,4194.950000000,4198.060000000,3887.710000000,3887.210000000,3887.010000000,3886.840000000,3887.190000000,6 +12,"2-m-C5",86.175360000,0.898000000,0.914000000,0.914000000,0.926000000,0.311400000,0.282600000,0.281600000,0.274000000,4195.640000000,4190.620000000,4188.970000000,4187.320000000,4190.440000000,3880.090000000,3879.590000000,3879.380000000,3879.210000000,3879.570000000,6 +13,"3-m-C5",86.175360000,0.898000000,0.917000000,0.917000000,0.928000000,0.299700000,0.276200000,0.275400000,0.269000000,4198.270000000,4193.220000000,4191.560000000,4189.900000000,4193.040000000,3882.720000000,3882.190000000,3881.970000000,3881.790000000,3882.170000000,6 +14,"22-dim-C4",86.175360000,0.916000000,0.931000000,0.931000000,0.935000000,0.253000000,0.235000000,0.234400000,0.229500000,4185.860000000,4180.830000000,4179.170000000,4177.520000000,4180.650000000,3870.320000000,3869.800000000,3869.590000000,3869.410000000,3869.780000000,6 +15,"23-dim-C4",86.175360000,0.910000000,0.925000000,0.925000000,0.934000000,0.283600000,0.263200000,0.262500000,0.256900000,4193.680000000,4188.610000000,4186.940000000,4185.280000000,4188.430000000,3878.110000000,3877.570000000,3877.360000000,3877.170000000,3877.550000000,6 +16,"n-heptane",100.201940000,0.830000000,0.866000000,0.866000000,0.876000000,0.407600000,0.366800000,0.365400000,0.354700000,4862.880000000,4857.180000000,4855.310000000,4853.430000000,4856.980000000,4502.280000000,4501.720000000,4501.490000000,4501.300000000,4501.690000000,7 +17,"n-octane",114.228520000,0.742000000,0.802000000,0.802000000,0.817000000,0.484500000,0.434600000,0.432900000,0.419800000,5522.410000000,5516.010000000,5513.900000000,5511.800000000,5515.780000000,5116.730000000,5116.110000000,5115.870000000,5115.660000000,5116.080000000,8 +18,"n-nonane",128.255100000,0.613000000,0.710000000,0.710000000,0.735000000,0.561700000,0.503000000,0.501000000,0.485600000,6182.920000000,6175.820000000,6173.480000000,6171.150000000,6175.560000000,5732.170000000,5731.490000000,5731.220000000,5730.990000000,5731.460000000,9 +19,"nC10",42.281680000,0.434000000,0.584000000,0.584000000,0.623000000,0.671300000,0.599100000,0.596700000,0.577800000,6842.690000000,6834.900000000,6832.330000000,6829.770000000,6834.620000000,6346.880000000,6346.140000000,6345.850000000,6345.590000000,6346.110000000,10 +20,"Ethylene",28.054000000,0.992500000,0.993600000,0.993600000,0.994000000,0.086600000,0.080000000,0.080000000,0.077500000,1413.510000000,1412.110000000,1411.650000000,1411.180000000,1412.060000000,1323.360000000,1323.240000000,1323.200000000,1323.150000000,1323.240000000,3 +21,"Propylene",42.081000000,0.981000000,0.984000000,0.984000000,0.985000000,0.137800000,0.126500000,0.126500000,0.122500000,2061.570000000,2059.430000000,2058.720000000,2058.020000000,2059.350000000,1926.350000000,1926.130000000,1926.050000000,1925.970000000,1926.120000000,3 +22,"1-Butene",56.108000000,0.965000000,0.970000000,0.970000000,0.972000000,0.187100000,0.173200000,0.173200000,0.167300000,2721.550000000,2718.700000000,2717.750000000,2716.820000000,2718.590000000,2541.250000000,2540.970000000,2540.860000000,2540.760000000,2540.960000000,3 +23,"cis-2-Butene",56.108000000,0.961000000,0.967000000,0.967000000,0.969000000,0.197500000,0.181700000,0.181700000,0.176100000,2714.900000000,2711.900000000,2711.000000000,2710.000000000,2711.800000000,2534.600000000,2534.200000000,2534.100000000,2533.900000000,2534.200000000,3 +24,"trans-2-Butene",56.108000000,0.961000000,0.968000000,0.968000000,0.969000000,0.197500000,0.178900000,0.178900000,0.176100000,2711.100000000,2708.300000000,2707.400000000,2706.400000000,2708.300000000,2530.800000000,2530.500000000,2530.500000000,2530.300000000,2530.500000000,3 +25,"2-Methylpropene",56.108000000,0.965000000,0.971000000,0.971000000,0.972000000,0.187100000,0.170300000,0.170300000,0.167300000,2704.800000000,2702.000000000,2701.100000000,2700.200000000,2702.000000000,2524.500000000,2524.300000000,2524.200000000,2524.100000000,2524.300000000,3 +26,"1-Pentene",70.134000000,0.938000000,0.949000000,0.949000000,0.952000000,0.249000000,0.225800000,0.225800000,0.219100000,3381.290000000,3377.750000000,3376.570000000,3375.420000000,3377.750000000,3155.920000000,3155.590000000,3155.450000000,3155.340000000,3155.590000000,3 +27,"Propadiene",40.065000000,0.980000000,0.983000000,0.983000000,0.984000000,0.141400000,0.130400000,0.130400000,0.126500000,1945.250000000,1943.960000000,1943.530000000,1943.110000000,1943.960000000,1855.100000000,1855.090000000,1855.080000000,1855.080000000,1855.090000000,3 +28,"1,2-Butadiene",54.092000000,0.955000000,0.963000000,0.963000000,0.965000000,0.212100000,0.192400000,0.192400000,0.187100000,2597.130000000,2595.120000000,2594.450000000,2593.790000000,2595.120000000,2461.910000000,2461.820000000,2461.780000000,2461.740000000,2461.820000000,3 +29,"1,3-Butadiene",54.092000000,0.966000000,0.971000000,0.971000000,0.973000000,0.184400000,0.170300000,0.170300000,0.164300000,2544.130000000,2542.100000000,2541.430000000,2540.770000000,2542.100000000,2408.910000000,2408.800000000,2408.760000000,2408.720000000,2408.800000000,3 +30,"acetylene",26.038000000,0.991000000,0.993000000,0.993000000,0.993000000,0.094900000,0.083700000,0.083700000,0.083700000,1301.860000000,1301.370000000,1301.210000000,1301.050000000,1301.370000000,1256.790000000,1256.940000000,1256.980000000,1257.030000000,1256.940000000,3 +31,"c-C5",70.134000000,0.935000000,0.947000000,0.947000000,0.950000000,0.255000000,0.230200000,0.230200000,0.223600000,3326.140000000,3322.190000000,3320.880000000,3319.590000000,3322.190000000,3100.770000000,3100.030000000,3099.760000000,3099.510000000,3100.030000000,5 +32,"M-cy-C5",84.161000000,0.902000000,0.921000000,0.921000000,0.927000000,0.313000000,0.281100000,0.281100000,0.270200000,3977.040000000,3972.460000000,3970.930000000,3969.440000000,3972.460000000,3706.600000000,3705.860000000,3705.590000000,3705.340000000,3705.860000000,6 +33,"E-cy-C5",98.188000000,0.841000000,0.876000000,0.876000000,0.885000000,0.398700000,0.352100000,0.352100000,0.339100000,4637.270000000,4631.950000000,4630.190000000,4628.470000000,4631.950000000,4321.750000000,4320.920000000,4320.630000000,4320.360000000,4320.920000000,6 +34,"c-hexane",84.161000000,0.897000000,0.918000000,0.918000000,0.924000000,0.320900000,0.286400000,0.286400000,0.275700000,3960.670000000,3956.020000000,3954.470000000,3952.960000000,3956.020000000,3690.230000000,3689.420000000,3689.130000000,3688.860000000,3689.420000000,6 +35,"Methylcyclohexane",98.188000000,0.855000000,0.886000000,0.886000000,0.894000000,0.380800000,0.337600000,0.337600000,0.325600000,4609.340000000,4604.090000000,4602.350000000,4600.640000000,4604.090000000,4293.820000000,4293.060000000,4292.780000000,4292.530000000,4293.060000000,7 +36,"ethylcyclohexane",112.215000000,0.770000000,0.824000000,0.824000000,0.838000000,0.479600000,0.419500000,0.419500000,0.402500000,5272.880000000,5266.950000000,5264.980000000,5263.050000000,5266.950000000,4912.290000000,4911.490000000,4911.190000000,4910.920000000,4911.490000000,7 +37,"benzene",78.114000000,0.909000000,0.926000000,0.926000000,0.936000000,0.301700000,0.272000000,0.272000000,0.253000000,3305.030000000,3302.860000000,3302.150000000,3301.430000000,3302.860000000,3169.810000000,3169.560000000,3169.480000000,3169.380000000,3169.560000000,6 +38,"toluene",92.141000000,0.849000000,0.883000000,0.883000000,0.892000000,0.388600000,0.342100000,0.342100000,0.328600000,3952.720000000,3949.810000000,3948.840000000,3947.890000000,3949.810000000,3772.420000000,3772.080000000,3771.950000000,3771.830000000,3772.080000000,7 +39,"ethylbenzene",106.167000000,0.764000000,0.823000000,0.823000000,0.837000000,0.485800000,0.420700000,0.420700000,0.403700000,4613.140000000,4609.530000000,4608.320000000,4607.150000000,4609.530000000,4387.770000000,4387.370000000,4387.200000000,4387.070000000,4387.370000000,8 +40,"o-Xylene",106.167000000,0.737000000,0.804000000,0.804000000,0.821000000,0.512800000,0.442700000,0.442700000,0.423100000,4602.170000000,4598.640000000,4597.460000000,4596.310000000,4598.640000000,4376.800000000,4376.480000000,4376.340000000,4376.230000000,4376.480000000,8 +41,"methanol",32.042000000,0.773000000,0.872000000,0.872000000,0.892000000,0.476400000,0.357800000,0.357800000,0.328600000,766.590000000,765.090000000,764.590000000,764.090000000,765.090000000,676.440000000,676.220000000,676.140000000,676.060000000,676.220000000,3 +42,"Methanethiol",48.109000000,0.972000000,0.977000000,0.977000000,0.978000000,0.167300000,0.151700000,0.151700000,0.148300000,1241.630000000,1240.280000000,1239.830000000,1239.390000000,1240.280000000,1151.480000000,1151.410000000,1151.390000000,1151.360000000,1151.410000000,3 +43,"hydrogen",2.015900000,1.000600000,1.000600000,1.000600000,1.000600000,0.000000000,0.000000000,0.000000000,0.000000000,286.630000000,286.150000000,285.990000000,285.830000000,286.150000000,241.560000000,241.720000000,241.760000000,241.810000000,241.720000000,0 +44,"water",18.015280000,0.930000000,0.945000000,0.945000000,0.952000000,0.264600000,0.234500000,0.234500000,0.219100000,45.064000000,44.431000000,44.222000000,44.013000000,44.408000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +45,"H2S",34.082000000,0.990000000,0.990000000,0.990000000,0.990000000,0.100000000,0.100000000,0.100000000,0.100000000,562.940000000,562.380000000,562.190000000,562.010000000,562.380000000,517.870000000,517.950000000,517.970000000,517.990000000,517.950000000,0 +46,"Ammonia",17.030600000,0.985000000,0.988000000,0.988000000,0.989000000,0.122500000,0.109500000,0.109500000,0.104900000,384.570000000,383.510000000,383.160000000,382.810000000,383.510000000,316.960000000,316.860000000,316.820000000,316.790000000,316.860000000,0 +47,"hydrogencyanide",27.026000000,0.887000000,0.912000000,0.912000000,0.920000000,0.336200000,0.296600000,0.296600000,0.282800000,671.900000000,671.700000000,671.600000000,671.500000000,671.700000000,649.400000000,649.500000000,649.500000000,649.500000000,649.500000000,0 +48,"carbonmonoxide",28.010000000,0.999300000,0.999500000,0.999500000,0.999600000,0.026500000,0.022400000,0.022400000,0.020000000,282.800000000,282.910000000,282.950000000,282.980000000,282.910000000,282.800000000,282.910000000,282.950000000,282.980000000,282.910000000,0 +49,"carbonylsulfide",60.076000000,0.985000000,0.987000000,0.987000000,0.988000000,0.122500000,0.114000000,0.114000000,0.109500000,548.010000000,548.150000000,548.190000000,548.230000000,548.150000000,548.010000000,548.150000000,548.190000000,548.230000000,548.150000000,0 +50,"carbondisulfide",76.143000000,0.954000000,0.962000000,0.962000000,0.965000000,0.214500000,0.194900000,0.194900000,0.187100000,1104.060000000,1104.320000000,1104.410000000,1104.490000000,1104.320000000,1104.060000000,1104.320000000,1104.410000000,1104.490000000,1104.320000000,0 +51,"helium",4.002600000,1.000500000,1.000500000,1.000500000,1.000500000,0.000600000,0.000200000,0.000200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +52,"Neon",20.179700000,1.000500000,1.000500000,1.000500000,1.000500000,0.000600000,0.000200000,0.000200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +53,"argon",39.948000000,0.999000000,0.999200000,0.999200000,0.999300000,0.031600000,0.028300000,0.028300000,0.026500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +54,"nitrogen",28.013400000,0.999550000,0.999710000,0.999720000,0.999760000,0.021400000,0.017000000,0.016900000,0.015600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +55,"oxygen",31.998800000,0.999000000,0.999200000,0.999200000,0.999300000,0.031600000,0.028300000,0.028300000,0.026500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +56,"CO2",44.009500000,0.993250000,0.994340000,0.994380000,0.994660000,0.082100000,0.075200000,0.074900000,0.073000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +57,"SulfurDioxide",64.065000000,0.976000000,0.979000000,0.979000000,0.980000000,0.154900000,0.144900000,0.144900000,0.141400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0 +58,"iC5",72.148780000,0.937000000,0.948000000,0.948000000,0.953000000,0.245800000,0.225100000,0.224400000,0.218900000,3536.010000000,3531.680000000,3530.250000000,3528.830000000,3531.520000000,3265.540000000,3265.080000000,3264.890000000,3264.730000000,3265.060000000,5 diff --git a/src/main/resources/data/MBWR32param.csv b/src/main/resources/data/MBWR32param.csv new file mode 100644 index 0000000000..78d054e198 --- /dev/null +++ b/src/main/resources/data/MBWR32param.csv @@ -0,0 +1,3 @@ +"ID","Name","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","a11","a12","a13","a14","a15","a16","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a29","a30","a31","rhoc" +1,"methane",0.000009898,0.021996082,-0.532278800,20.216579620,-2234.398926000,0.000010679,0.000145792,-0.926581666,291.536473200,0.000000231,0.000138721,0.004780467,0.000011761,-0.000198209,-0.025128877,0.000009748,-0.000000120,0.000041283,-0.000000721,508.173825500,-91989.031920000,-2.732264677,74990.243510000,0.001114060,1.083955159,-0.000044909,-1.380337847,-0.000000023,0.000037616,-2.375166954e-10,-0.000000012,0.000000676,10.150000000 +2,"ethane",-0.018439486,1.051016206,-16.057820303,848.440275620,-42738.409106000,0.000765652,-0.483607241,85.195473835,-16607.434721000,-0.000037521,0.028616309,-2.868528597,0.000119069,-0.008531571,3.836506384,0.000024986,0.000005797,-0.007164832,0.000125778,22240.102466000,-1480051.23280000,50.498054887,1642883.75992000,0.213253871,37.791273422,-0.000011857,-31.630780767,-0.000004100,0.001487004,0.000000003,-0.000002167,0.000024000,10.150000000 \ No newline at end of file diff --git a/src/main/resources/data/PIPEDATA.csv b/src/main/resources/data/PIPEDATA.csv new file mode 100644 index 0000000000..aceeaf0efa --- /dev/null +++ b/src/main/resources/data/PIPEDATA.csv @@ -0,0 +1,24 @@ +"ID","Size","OD","ED202","LD201","ES301","BD20A","BT75A","DD20A","FD201","FD20X","FD772","GC20A","GD20X","GD22A","TS31A","BC21A" +1,"0.5",21.3,2.77,3.73,2.77,2.77,2.77,2.77,2.77,2.77,,7.47,3.73,4.78,,4.78 +2,"0.75",26.7,2.87,3.91,2.87,2.87,2.87,2.87,2.87,2.87,,7.82,3.91,5.56,,5.56 +3,"1.0",33.4,3.38,6.35,3.38,2.77,3.38,3.38,3.38,3.38,,9.09,4.55,6.35,,6.35 +4,"1.5",48.3,3.68,7.14,3.68,2.77,2.77,3.68,3.68,3.68,,10.15,7.14,7.14,,5.08 +5,"2.0",60.3,3.91,8.74,2.77,2.77,2.77,3.91,3.91,3.91,,12.5,8.74,8.74,,5.54 +6,"3.0",88.9,5.49,15.24,5.49,3.05,3.05,5.49,5.49,5.49,,16,11.13,11.13,,5.49 +7,"4.0",114.3,6.02,17.12,6.02,3.05,6.02,6.02,8.56,8.56,,20,13.49,13.49,,6.02 +8,"5.0",141.3,,,,,,,,,,,,,, +9,"6.0",168.3,7.11,25,10.97,3.4,7.11,7.11,10.97,10.97,,30,21.95,18.26,,7.11 +10,"8.0",219.1,10.31,32,10.31,3.76,6.35,8.18,12.7,15.09,,36,25,23.01,,8.18 +11,"10.0",273.1,12.7,32,12.7,4.19,7.8,9.27,15.09,18.26,,45,32,28.58,,9.27 +12,"12.0",323.9,12.7,40,14.27,6.35,8.38,9.53,17.48,21.44,17.48,50,36,33.32,,10.31 +13,"14.0",355.6,15.09,45,15.09,6.35,9.53,11.13,19.05,19.05,,,40,,,11.13 +14,"16.0",406.4,16.66,50,16.66,6.35,12.7,12.7,26.19,,,,,,,12.7 +15,"18.0",457.2,19.05,,19.05,7.92,12.7,14.27,29.36,,,,,,,14.27 +16,"20.0",508,20.62,,20.62,9.53,12.7,15.09,32.54,,,,,,,15.09 +17,"24.0",609.6,24.61,,24.61,9.53,14.27,17.48,38.89,,,,,,,17.48 +18,"26.0",660.4,,,,,,,,,,,,,, +19,"28.0",711.2,,,,,,,,,,,,,, +20,"30.0",762,,,,,,,,,,,,,, +21,"32.0",813,,,,,,,,,,,,,, +22,"36.0",914,,,,,,,,,,,,,, +23,"40.0",1016,,,,,,,,,,,,,, diff --git a/src/main/resources/data/REACTIONDATA.csv b/src/main/resources/data/REACTIONDATA.csv new file mode 100644 index 0000000000..f831ea6f4d --- /dev/null +++ b/src/main/resources/data/REACTIONDATA.csv @@ -0,0 +1,38 @@ +"ID","INDEX","NAME","K1","K2","K3","K4","TREF","R","ACTENERGY","Reference","USEREACTION" +25,2,"CO2water",231.465000000,-12092.100000000,-36.781600000,0.000000000,298.150000000,0.003000000,50.000000000,"Posey1996",1 +26,3,"waterreac",132.899000000,-13445.900000000,-22.477300000,0.000000000,298.150000000,0.003000000,10.000000000,"Posey1996",1 +27,5,"MDEAprot",-56.200000000,-4044.800000000,7.848000000,0.000000000,298.150000000,0.003000000,50.000000000,"Austgen1989",1 +28,6,"carbonate",216.049000000,-12431.700000000,-35.481900000,0.000000000,298.150000000,0.003000000,50.000000000,"Posey1996",1 +30,8,"water-H2S",214.582000000,-12995.400000000,-33.547100000,0.000000000,298.150000000,0.003000000,50.000000000,"Solbraa2002",1 +31,9,"water-HS",-32.000000000,-3338.000000000,0.000000000,0.000000000,298.150000000,0.003000000,50.000000000,"Solbraa2002",1 +32,14,"Acetate",-23.119000000,7937.660000000,3.827300000,0.000000000,298.150000000,0.003000000,50.000000000,"Statoil",0 +33,17,"dimerization",-16.641000000,6949.200000000,0.000000000,0.000000000,298.150000000,0.003000000,50.000000000,"Bamberger",0 +34,15,"MDEACO2S",287.665000000,-8047.300000000,-44.629600000,0.000000000,298.150000000,0.003000000,50.000000000,"Solbraa2002",0 +35,18,"MDEACO2Acetate",287.665000000,-8047.300000000,-44.629600000,0.000000000,298.150000000,0.003000000,50.000000000,"Neeraj",0 +36,19,"MDEAAcid",165.979900000,-1463.438500000,-26.500000000,0.000000000,298.150000000,0.003000000,50.000000000,"Neeraj",0 +37,20,"MDEAAcidCH4",165.979900000,-1463.438500000,-26.500000000,0.000000000,298.150000000,0.003000000,50.000000000,"Neeraj",0 +38,21,"MDEACO2CH4",287.665000000,-8047.300000000,-44.629600000,0.000000000,298.150000000,0.003000000,50.000000000,"Solbraa2002",0 +39,10,"PiperazineCO21",98.500000000,1354.000000000,-14.300000000,0.000000000,298.150000000,0.003000000,50.000000000,"Bishnoi2002",0 +40,11,"PiperazineCO22",127.936000000,-3731.800000000,-22.480000000,0.000000000,298.150000000,0.003000000,50.000000000,"Bishnoi2002",0 +41,24,"PiperazineCO23",-174.483000000,22734.200000000,22.480000000,0.000000000,298.150000000,0.003000000,50.000000000,"Bishnoi2002",0 +42,25,"PiperazineCO24",145.941000000,-9484.400000000,-22.480000000,0.000000000,298.150000000,0.003000000,50.000000000,"Bishnoi2002",0 +43,26,"PiperazineCO25",-177.600000000,22734.200000000,22.480000000,0.000000000,298.150000000,0.003000000,50.000000000,"Bishnoi2002",0 +44,27,"MDEACO2CH4P",287.665000000,-8047.300000000,-44.629600000,0.000000000,298.150000000,0.003000000,50.000000000,"Solbraa2002",0 +45,22,"PiperazineCO21",89.184273030,1805.900000000,-12.912700000,0.000000000,298.150000000,0.003000000,50.000000000,"PSK",0 +46,23,"PiperazineCO22",202.115727000,-10962.900000000,-31.450300000,0.000000000,298.150000000,0.003000000,50.000000000,"PSK",0 +47,24,"PiperazineCO23",84.565546050,5422.000000000,-12.912700000,0.000000000,298.150000000,0.003000000,50.000000000,"PSK",0 +48,25,"PiperazineCO24",146.941727000,-9952.800000000,-22.477300000,0.000000000,298.150000000,0.003000000,50.000000000,"PSK",0 +49,26,"PiperazineCO25",89.545546050,3128.200000000,-12.912700000,0.000000000,298.150000000,0.003000000,50.000000000,"PSK",0 +50,28,"MDEACO21",210.161000000,-12329.400000000,-32.537300000,0.000000000,298.150000000,0.003000000,50.000000000,"Procede",0 +51,29,"MDEACO22",98.566000000,1353.800000000,-14.304300000,0.000000000,298.150000000,0.003000000,50.000000000,"Procede",0 +52,30,"MDEACO23",83.150000000,1014.200000000,-13.004600000,0.000000000,298.150000000,0.003000000,50.000000000,"Procede",0 +53,5,"MDEAprot",-77.262000000,-1116.500000000,10.060000000,0.000000000,298.150000000,0.003000000,50.000000000,"Huttenhuis2005",0 +55,42,"Sulfide",81.683000000,450.500000000,-11.069800000,0.000000000,298.150000000,0.003000000,50.000000000,"Austgen",0 +56,43,"Bisulfide",-164.899000000,10107.900000000,22.477300000,0.000000000,298.150000000,0.003000000,50.000000000,"Austgen",0 +59,10,"Piperazineprot",18.135000000,3814.400000000,0.000000000,-0.015096000,298.150000000,0.003000000,50.000000000,"Derks",0 +60,44,"Piperazinediprotonation",14.134000000,2192.300000000,0.000000000,-0.017396000,298.150000000,0.003000000,50.000000000,"Derks",0 +61,45,"Piperazinemonocarbamante",-4.618500000,3616.100000000,0.000000000,0.000000000,298.150000000,0.003000000,50.000000000,"Derks",0 +62,46,"Piperazinedicarbamate",0.361500000,1322.300000000,0.000000000,0.000000000,298.150000000,0.003000000,50.000000000,"Derks",0 +63,47,"Pzmonocarbamateprotonation",14.042000000,3493.100000000,0.000000000,0.000000000,298.150000000,0.003000000,50.000000000,"Derks",0 +65,48,"H2SMDEAsolbraa",270.782000000,-8950.600000000,-41.395100000,0.000000000,298.150000000,0.003000000,50.000000000,"Solbraa2011",0 +66,49,"methanecombustion",270.782000000,-8950.600000000,-41.395100000,0.000000000,298.150000000,0.003000000,50.000000000,"Solbraa2020",0 diff --git a/src/main/resources/data/ReactionKSPdata.csv b/src/main/resources/data/ReactionKSPdata.csv new file mode 100644 index 0000000000..c9b228d328 --- /dev/null +++ b/src/main/resources/data/ReactionKSPdata.csv @@ -0,0 +1,2 @@ +"ID","INDEX","NAME","K1","K2","K3","K4","TREF","R","ACTENERGY","Reference" +24,18.000000000,"KspCaCO3",3044.270000000,-170410.000000000,-475.704000000,0.376097000,298.150000000,0.003000000,50.000000000,"Kaasa1998" diff --git a/src/main/resources/data/STOCCOEFDATA.csv b/src/main/resources/data/STOCCOEFDATA.csv new file mode 100644 index 0000000000..a907a77b5b --- /dev/null +++ b/src/main/resources/data/STOCCOEFDATA.csv @@ -0,0 +1,134 @@ +"ID","REACINDEX","REACNAME","COMPNAME","STOCCOEF" +69,2,"CO2water","water",-2 +70,2,"CO2water","CO2",-1 +71,2,"CO2water","HCO3-",1 +72,3,"waterreac","water",-2 +73,3,"waterreac","OH-",1 +74,3,"waterreac","H3O+",1 +75,2,"CO2water","H3O+",1 +76,5,"MDEAprot","MDEA+",-1 +77,5,"MDEAprot","water",-1 +78,5,"MDEAprot","MDEA",1 +79,5,"MDEAprot","H3O+",1 +80,6,"carbonate","H3O+",1 +81,6,"carbonate","CO3--",1 +82,6,"carbonate","HCO3-",-1 +83,6,"carbonate","water",-1 +84,7,"CO2-OH","HCO3-",1 +85,7,"CO2-OH","CO2",-1 +86,7,"CO2-OH","OH-",-1 +87,8,"water-H2S","H2S",-1 +88,8,"water-H2S","water",-1 +89,8,"water-H2S","HS-",1 +90,8,"water-H2S","H3O+",1 +91,9,"water-HS","HS-",-1 +92,9,"water-HS","water",-1 +93,9,"water-HS","S--",1 +94,9,"water-HS","H3O+",1 +95,10,"Piperazineprot","Piperazine+",1 +96,10,"Piperazineprot","water",1 +97,10,"Piperazineprot","H3O+",-1 +98,10,"Piperazineprot","Piperazine",-1 +99,11,"PiperazineCarbamate","Piperazine",-1 +100,11,"PiperazineCarbamate","CO2",-1 +101,11,"PiperazineCarbamate","water",-1 +102,11,"PiperazineCarbamate","H3O+",1 +103,11,"PiperazineCarbamate","PZCOO-",1 +104,12,"Piperazineprot2","water",-1 +105,12,"Piperazineprot2","H+PZCOO-",-1 +106,12,"Piperazineprot2","H3O+",1 +107,12,"Piperazineprot2","PZCOO-",1 +108,13,"Piperazineprot3","PZCOO-",-1 +109,13,"Piperazineprot3","CO2",-1 +110,13,"Piperazineprot3","water",-1 +111,13,"Piperazineprot3","-OOCPZCOO-",1 +112,13,"Piperazineprot3","H3O+",1 +113,14,"Acetate","AceticAcid",-1 +114,14,"Acetate","water",1 +115,14,"Acetate","Ac-",1 +116,14,"Acetate","OH-",-1 +117,16,"MDEACO2S","HCO3-",1 +118,16,"MDEACO2S","MDEA+",1 +119,16,"MDEAAcidS","CO2",0 +120,16,"MDEAAcidS","AceticAcid",-1 +121,15,"MDEACO2S","CO2",-1 +122,16,"MDEAAcidS","MDEA",-1 +123,16,"MDEAAcidS","water",0 +124,16,"MDEACO2S","water",-1 +125,15,"MDEACO2S","MDEA",-1 +126,18,"MDEACO2Acetate","MDEA",-1 +127,18,"MDEACO2Acetate","HCO3-",1 +128,18,"MDEACO2Acetate","MDEA+",1 +129,18,"MDEACO2Acetate","CO2",-1 +130,18,"MDEACO2Acetate","water",-1 +131,18,"MDEACO2Acetate","Ac-",0 +132,19,"MDEAAcid","MDEA",-1 +133,19,"MDEAAcid","AceticAcid",-1 +134,19,"MDEAAcid","Ac-",1 +135,19,"MDEAAcid","MDEA+",1 +136,20,"MDEAAcidCH4","MDEA",-1 +137,20,"MDEAAcidCH4","HCO3-",0 +138,20,"MDEAAcidCH4","water",0 +139,20,"MDEAAcidCH4","CO2",0 +140,20,"MDEAAcidCH4","Ac-",1 +141,20,"MDEAAcidCH4","MDEA+",1 +142,20,"MDEAAcidCH4","AceticAcid",-1 +143,20,"MDEAAcidCH4","Methane",0 +144,21,"MDEACO2CH4","AceticAcid",0 +145,21,"MDEACO2CH4","water",-1 +146,21,"MDEACO2CH4","CO2",-1 +147,21,"MDEACO2CH4","Ac-",0 +148,21,"MDEACO2CH4","MDEA+",1 +149,21,"MDEACO2CH4","MDEA",-1 +150,21,"MDEACO2CH4","HCO3-",1 +151,21,"MDEACO2CH4","Methane",0 +153,22,"PiperazineCO22","Piperazine+",1 +156,22,"PiperazineCO22","Piperazine",-1 +158,22,"PiperazineCO22","water",-1 +160,23,"PiperazineCO23","CO2",-1 +161,23,"PiperazineCO23","water",1 +162,23,"PiperazineCO23","Piperazine",-1 +165,23,"PiperazineCO23","PZCOO-",1 +172,24,"PiperazineCO24","OH-",1 +173,24,"PiperazineCO24","PZCOO-",-1 +174,24,"PiperazineCO24","H+PZCOO-",1 +178,25,"PiperazineCO25","water",1 +179,25,"PiperazineCO25","CO2",-1 +180,25,"PiperazineCO25","PZCOO-",-1 +183,25,"PiperazineCO25","-OOCPZCOO-",1 +185,22,"PiperazineCO22","OH-",1 +186,23,"PiperazineCO23","OH-",-1 +187,24,"PiperazineCO24","water",-1 +188,25,"PiperazineCO25","OH-",-1 +216,42,"Sulfide","H2S",-1 +217,42,"Sulfide","OH-",-1 +218,42,"Sulfide","water",1 +219,42,"Sulfide","HS-",1 +220,43,"Bisulfide","HS-",-1 +221,43,"Bisulfide","OH-",-1 +222,43,"Bisulfide","water",1 +223,43,"Bisulfide","S--",1 +224,44,"Piperazinediprotonation","water",-1 +225,44,"Piperazinediprotonation","Piperazine++",-1 +226,44,"Piperazinediprotonation","Piperazine+",1 +227,44,"Piperazinediprotonation","H3O+",1 +228,45,"Piperazinemonocarbamante","Piperazine",-1 +229,45,"Piperazinemonocarbamante","HCO3-",-1 +230,45,"Piperazinemonocarbamante","water",1 +231,45,"Piperazinemonocarbamante","PZCOO-",1 +232,46,"Piperazinedicarbamate","PZCOO-",-1 +233,46,"Piperazinedicarbamate","HCO3-",-1 +234,46,"Piperazinedicarbamate","water",1 +235,46,"Piperazinedicarbamate","-OOCPZCOO-",1 +236,47,"Pzmonocarbamateprotonation","water",-1 +237,47,"Pzmonocarbamateprotonation","H+PZCOO-",-1 +238,47,"Pzmonocarbamateprotonation","PZCOO-",1 +239,47,"Pzmonocarbamateprotonation","H3O+",1 +240,48,"H2SMDEAsolbraa","MDEA",-1 +241,48,"H2SMDEAsolbraa","H2S",-1 +242,48,"H2SMDEAsolbraa","MDEA+",1 +243,48,"H2SMDEAsolbraa","HS-",1 +244,49,"methanecombustion","methane",-1 +245,49,"methanecombustion","oxygen",-2 +246,49,"methanecombustion","CO2",1 +247,49,"methanecombustion","water",2 diff --git a/src/main/resources/data/UNIFACGroupParam.csv b/src/main/resources/data/UNIFACGroupParam.csv new file mode 100644 index 0000000000..e40b429e99 --- /dev/null +++ b/src/main/resources/data/UNIFACGroupParam.csv @@ -0,0 +1,82 @@ +"ID","Main","Secondary","Name","VolumeR","SurfAreaQ","Reference" +1,1,1,"CH3",0.901100000,0.848000000,"Hansen1991" +2,1,2,"CH2",0.674400000,0.540000000,"Hansen1991" +3,1,3,"CH",0.446900000,0.228000000,"Hansen1991" +4,1,4,"C",0.219500000,0.000000000,"Hansen1991" +5,2,5,"CH2=CH",1.345400000,1.176000000,"Hansen1991" +6,2,6,"CH=CH",1.116700000,0.867000000,"Hansen1991" +7,2,7,"CH2=C",1.117300000,0.988000000,"Hansen1991" +8,2,8,"CH=C",0.888600000,0.676000000,"Hansen1991" +9,2,70,"C=C",0.660500000,0.485000000,"Hansen1991" +10,3,9,"ACH",0.531300000,0.400000000,"Hansen1991" +11,3,10,"AC",0.365200000,0.120000000,"Hansen1991" +12,4,11,"ACCH3",1.266300000,0.968000000,"Hansen1991" +13,4,12,"ACCH2",1.039600000,0.660000000,"Hansen1991" +14,4,13,"ACCH",0.812100000,0.348000000,"Hansen1991" +15,5,14,"OH",1.000000000,1.200000000,"Hansen1991" +16,6,15,"CH3OH",1.431100000,1.432000000,"Hansen1991" +17,7,16,"water",0.920000000,1.400000000,"Hansen1991" +18,8,17,"ACOH",0.895200000,0.680000000,"Hansen1991" +19,9,18,"CH3CO",1.672400000,1.488000000,"Hansen1991" +20,9,19,"CH2CO",1.335700000,1.180000000,"Hansen1991" +21,10,20,"CHO",0.998000000,0.948000000,"Hansen1991" +22,11,21,"CH3COO",1.903100000,1.728000000,"Hansen1991" +23,11,22,"CH2COO",1.676400000,1.420000000,"Hansen1991" +24,12,23,"HCOO",1.242000000,1.189800000,"Hansen1991" +25,13,24,"CH3O",1.145000000,1.088000000,"Hansen1991" +26,13,25,"CH2O",0.918300000,0.780000000,"Hansen1991" +27,13,26,"CHO",0.690800000,0.468000000,"Hansen1991" +28,13,27,"THF",0.918300000,1.100000000,"Hansen1991" +29,14,28,"CH3NH2",1.595900000,1.544000000,"Hansen1991" +30,14,29,"CH2NH2",1.369200000,1.236000000,"Hansen1991" +31,14,30,"CHNH2",1.141700000,0.924000000,"Hansen1991" +32,15,31,"CH3NH",1.433700000,1.244000000,"Hansen1991" +33,15,32,"CH2NH",1.207000000,0.936000000,"Hansen1991" +34,15,33,"CHNH",0.979500000,0.624000000,"Hansen1991" +35,16,34,"CH3N",1.186500000,0.940000000,"Hansen1991" +36,16,35,"CH2N",0.959700000,0.632000000,"Hansen1991" +37,17,36,"ACNH2",1.060000000,0.816000000,"Hansen1991" +38,18,37,"C5H5N",2.999300000,2.113000000,"Hansen1991" +39,18,38,"C5H4N",2.833200000,1.833000000,"Hansen1991" +40,18,39,"C5H3N",2.667000000,1.553000000,"Hansen1991" +41,19,40,"CH3CN",1.870100000,1.724000000,"Hansen1991" +42,19,41,"CH2CN",1.643400000,1.416000000,"Hansen1991" +43,20,42,"COOH",1.301300000,1.224000000,"Hansen1991" +44,20,43,"HCOOH",1.528000000,1.532000000,"Hansen1991" +45,21,44,"CH2Cl",2.256400000,1.264000000,"Hansen1991" +46,21,45,"CHCl",2.060600000,0.952000000,"Hansen1991" +47,21,46,"CCl",1.010600000,0.724000000,"Hansen1991" +48,22,47,"CH2Cl2",2.256400000,1.988000000,"Hansen1991" +49,22,48,"CHCl2",2.060600000,1.684000000,"Hansen1991" +50,22,49,"CCl2",1.801600000,1.448000000,"Hansen1991" +51,23,50,"CHCl3",2.870000000,2.410000000,"Hansen1991" +52,23,51,"CCl3",2.640100000,2.184000000,"Hansen1991" +53,24,52,"CCl4",3.390000000,2.910000000,"Hansen1991" +54,25,53,"ACCl",1.156200000,0.844000000,"Hansen1991" +55,26,54,"CH3NO2",2.008600000,1.868000000,"Hansen1991" +56,26,55,"CH2NO2",1.781800000,1.560000000,"Hansen1991" +57,26,56,"CHNO2",1.554400000,1.248000000,"Hansen1991" +58,27,57,"ACNO2",1.419900000,1.104000000,"Hansen1991" +59,28,58,"CS2",2.507000000,1.650000000,"Hansen1991" +60,29,59,"CH3SH",1.877000000,1.676000000,"Hansen1991" +61,29,60,"CH2SH",1.651000000,1.368000000,"Hansen1991" +62,30,61,"Furfural",3.168000000,1.650000000,"Hansen1991" +63,31,62,"DOH",2.408800000,2.248000000,"Hansen1991" +64,32,63,"I",1.264000000,0.992000000,"Hansen1991" +65,33,64,"Br",0.949200000,0.832000000,"Hansen1991" +66,55,120,"NH3",0.851000000,0.778000000,"Fisher1995" +67,56,121,"CO2",1.296000000,1.261000000,"Holderbaum1991" +68,57,122,"CH4",1.129000000,1.124000000,"Holderbaum1991" +69,58,123,"O2",0.733000000,0.849000000,"Fisher1995" +70,59,124,"Ar",1.177000000,1.116000000,"Fisher1995" +71,60,125,"N2",0.934000000,0.985000000,"Holderbaum1991" +72,61,126,"H2S",1.166500000,1.163000000,"Holderbaum1991" +73,62,127,"H2",0.416000000,0.571000000,"Holderbaum1991" +74,63,128,"CO",0.711000000,0.828000000,"Holderbaum1991" +75,64,134,"C2H6",1.802200000,1.696000000,"Voutsas" +76,65,135,"Hg",10.598000000,8.739000000,"Mentzelos" +78,66,136,"cCH2",0.674400000,0.540000000,"Voutsas2017" +79,67,137,"cCH",0.446900000,0.228000000,"Voutsas2017" +80,68,138,"cC",0.219500000,0.000000000,"Voutsas2017" +81,69,139,"MEG",2.408800000,2.248000000,"NTUA" +82,70,140,"TEG",5.594200000,4.880000000,"NTUA" diff --git a/src/main/resources/data/UNIFACInterParam.csv b/src/main/resources/data/UNIFACInterParam.csv new file mode 100644 index 0000000000..36f9032db3 --- /dev/null +++ b/src/main/resources/data/UNIFACInterParam.csv @@ -0,0 +1,65 @@ +"MainGroup","n1","n2","n3","n4","n5","n6","n7","n8","n9","n10","n11","n12","n13","n14","n15","n16","n17","n18","n19","n20","n21","n22","n23","n24","n25","n26","n27","n28","n29","n30","n31","n32","n33","n34","n35","n36","n37","n38","n39","n40","n41","n42","n43","n44","n45","n46","n47","n48","n49","n50","n51","n52","n53","n54","n55","n56","n57","n58","n59","n60","n61","n62","n63","n64" +1,0.000000000,86.020000000,61.130000000,76.500000000,986.500000000,697.200000000,1318.000000000,1333.000000000,476.400000000,677.000000000,232.100000000,507.000000000,251.500000000,391.500000000,255.700000000,206.600000000,920.700000000,287.800000000,597.000000000,663.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,153.600000000,184.400000000,354.600000000,3025.000000000,335.800000000,479.500000000,298.900000000,526.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2054.300000000,919.800000000,-39.101000000,-163.270000000,0.000000000,271.120000000,893.010000000,613.300000000,0.000000000,0.000000000 +2,-35.360000000,0.000000000,38.810000000,74.150000000,524.100000000,787.600000000,270.600000000,526.100000000,182.600000000,448.800000000,37.850000000,333.500000000,214.500000000,240.900000000,163.900000000,61.110000000,749.300000000,280.500000000,336.900000000,318.900000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,76.300000000,0.000000000,262.900000000,0.000000000,0.000000000,183.800000000,31.140000000,179.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2287.500000000,-52.107000000,38.602000000,0.000000000,0.000000000,-231.090000000,0.000000000,585.000000000,-241.560000000,0.000000000 +3,-11.120000000,3.446000000,0.000000000,167.000000000,636.100000000,637.400000000,9903.800000000,1329.000000000,25.770000000,347.300000000,5.994000000,287.100000000,32.140000000,161.700000000,122.800000000,90.490000000,648.200000000,-4.449000000,212.500000000,537.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52.070000000,-10.430000000,-64.690000000,210.700000000,113.300000000,261.300000000,0.000000000,169.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,627.810000000,219.250000000,131.590000000,0.000000000,0.000000000,309.590000000,49.132000000,734.870000000,680.050000000,0.000000000 +4,-69.700000000,-113.600000000,-146.800000000,0.000000000,803.200000000,603.300000000,5695.000000000,884.900000000,-52.100000000,586.800000000,5688.000000000,197.800000000,213.100000000,19.020000000,-49.290000000,23.500000000,664.200000000,52.800000000,6096.000000000,872.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-9.451000000,393.600000000,48.490000000,4975.000000000,259.000000000,210.000000000,0.000000000,4284.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,821.150000000,296.880000000,37.876000000,0.000000000,0.000000000,-303.760000000,23.158000000,320.000000000,0.000000000,0.000000000 +5,156.400000000,457.000000000,89.600000000,25.820000000,0.000000000,-137.100000000,353.500000000,-259.700000000,84.000000000,-203.600000000,101.100000000,267.800000000,28.060000000,8.642000000,42.700000000,-323.000000000,-52.390000000,170.000000000,6.712000000,199.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,488.900000000,147.500000000,-120.500000000,-318.900000000,313.500000000,202.100000000,727.800000000,-202.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,510.640000000,671.690000000,0.000000000,0.000000000,0.000000000,0.000000000,2847.400000000,0.000000000,0.000000000 +6,16.510000000,-12.520000000,-50.000000000,-44.500000000,249.100000000,0.000000000,-181.000000000,-101.700000000,23.390000000,306.400000000,-10.720000000,179.700000000,-128.600000000,359.300000000,-20.980000000,53.900000000,489.700000000,580.500000000,53.280000000,-202.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-31.090000000,17.500000000,0.000000000,-119.200000000,212.100000000,106.300000000,0.000000000,-399.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,138.950000000,-72.040000000,553.560000000,0.000000000,0.000000000,190.240000000,-33.079000000,250.050000000,261.540000000,0.000000000 +7,300.000000000,496.100000000,362.300000000,377.600000000,-229.100000000,289.600000000,0.000000000,324.500000000,-195.400000000,-116.000000000,72.870000000,0.000000000,540.500000000,48.890000000,168.000000000,304.000000000,243.200000000,459.000000000,112.600000000,-14.090000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,887.100000000,0.000000000,188.000000000,12.720000000,0.000000000,0.000000000,0.000000000,-139.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-655.580000000,-1163.500000000,-1159.600000000,-2181.900000000,-318.890000000,2093.100000000,724.930000000,1951.400000000,-1665.500000000,0.000000000 +8,275.800000000,217.500000000,25.340000000,244.200000000,-451.600000000,-265.200000000,-601.800000000,0.000000000,-356.100000000,-271.100000000,-449.400000000,0.000000000,-162.900000000,0.000000000,0.000000000,0.000000000,119.900000000,-305.500000000,0.000000000,408.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,8484.000000000,0.000000000,0.000000000,-687.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,695.700000000,0.000000000,0.000000000,0.000000000,1503.500000000,0.000000000,4027.500000000,0.000000000,0.000000000 +9,26.760000000,42.920000000,140.100000000,365.800000000,164.500000000,108.700000000,472.500000000,-133.100000000,0.000000000,-37.360000000,-213.700000000,-190.400000000,-103.600000000,0.000000000,0.000000000,0.000000000,6201.000000000,7.341000000,481.700000000,669.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,216.100000000,-46.280000000,-163.700000000,71.460000000,53.590000000,245.200000000,-246.600000000,-44.580000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,132.280000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +10,505.700000000,56.300000000,23.390000000,106.000000000,529.000000000,-340.200000000,480.800000000,-155.600000000,128.000000000,0.000000000,-110.300000000,766.000000000,304.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,497.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,117.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-162.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +11,114.800000000,132.100000000,85.840000000,-170.000000000,245.400000000,249.600000000,200.800000000,-36.720000000,372.200000000,185.100000000,0.000000000,-241.800000000,-235.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,660.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,183.000000000,0.000000000,202.300000000,-101.700000000,148.300000000,18.880000000,0.000000000,52.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,818.720000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +12,329.300000000,110.400000000,18.820000000,428.000000000,139.400000000,227.800000000,0.000000000,0.000000000,385.400000000,-236.500000000,1167.000000000,0.000000000,-234.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-268.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,103.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +13,83.360000000,26.510000000,52.130000000,65.690000000,237.700000000,238.400000000,-314.700000000,-178.500000000,191.100000000,-7.838000000,461.300000000,457.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,664.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,140.900000000,-8.538000000,170.100000000,-20.110000000,-149.500000000,-202.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2795.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +14,-30.480000000,1.163000000,-44.850000000,296.400000000,-242.800000000,-481.700000000,-330.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,222.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-70.140000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +15,65.330000000,-28.700000000,-22.310000000,223.000000000,-150.000000000,-370.300000000,-448.200000000,0.000000000,394.600000000,0.000000000,136.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +16,-83.980000000,-25.380000000,-223.900000000,109.900000000,28.600000000,-406.800000000,-598.800000000,0.000000000,225.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +17,1139.000000000,2000.000000000,247.500000000,762.800000000,-17.400000000,-118.100000000,-341.600000000,0.000000000,-450.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-396.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +18,-101.600000000,-47.630000000,31.870000000,49.800000000,-132.300000000,-378.200000000,-332.900000000,0.000000000,29.100000000,0.000000000,0.000000000,554.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-153.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,43.717000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +19,24.820000000,-40.620000000,-22.970000000,-138.400000000,185.400000000,162.600000000,242.800000000,0.000000000,-287.500000000,0.000000000,0.000000000,99.370000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +20,315.300000000,1264.000000000,62.320000000,89.860000000,-151.000000000,339.800000000,-66.170000000,0.000000000,-297.800000000,-165.500000000,0.000000000,193.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,73.859000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +21,91.460000000,40.250000000,4.680000000,122.900000000,562.200000000,529.000000000,698.200000000,0.000000000,286.300000000,-47.510000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,519.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +22,34.010000000,-23.500000000,121.300000000,140.800000000,527.600000000,669.900000000,708.700000000,0.000000000,82.860000000,190.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,543.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +23,36.700000000,51.060000000,288.500000000,69.900000000,742.100000000,649.100000000,826.800000000,0.000000000,552.100000000,242.800000000,0.000000000,235.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,504.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +24,-78.450000000,160.900000000,-4.700000000,134.700000000,856.300000000,709.600000000,1201.000000000,0.000000000,372.000000000,0.000000000,0.000000000,351.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,631.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +25,106.800000000,70.320000000,-97.270000000,402.500000000,325.700000000,612.800000000,-274.500000000,0.000000000,518.400000000,0.000000000,0.000000000,383.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,993.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +26,-32.690000000,-1.996000000,10.380000000,-97.050000000,261.600000000,252.600000000,417.900000000,0.000000000,-142.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +27,0.000000000,0.000000000,1824.000000000,-127.800000000,561.600000000,0.000000000,360.700000000,0.000000000,-101.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +28,0.000000000,0.000000000,21.500000000,40.680000000,609.800000000,914.200000000,1081.000000000,0.000000000,303.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +29,0.000000000,0.000000000,28.410000000,19.560000000,461.600000000,448.600000000,0.000000000,0.000000000,160.600000000,0.000000000,0.000000000,201.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +30,0.000000000,0.000000000,157.300000000,128.800000000,521.600000000,0.000000000,23.480000000,0.000000000,317.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +31,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +32,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +33,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +34,-72.880000000,41.380000000,0.000000000,0.000000000,68.950000000,0.000000000,0.000000000,0.000000000,443.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,32.648000000,-10.699000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +35,50.490000000,64.070000000,-2.504000000,-143.200000000,-25.870000000,695.000000000,-240.000000000,0.000000000,110.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +36,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +37,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +38,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +39,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +40,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +41,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,183.650000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +42,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +43,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +44,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-209.220000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +45,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,95.548000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +46,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +47,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +48,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +49,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +50,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +51,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +52,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +53,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +54,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +55,1243.900000000,2381.100100000,392.160000000,607.540000000,0.000000000,-490.470000000,-395.590000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-173.860000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +56,-38.672000000,148.570000000,-29.400000000,249.320000000,148.160000000,414.570000000,1720.600000000,628.800000000,18.074000000,340.000000000,-742.200000000,0.000000000,-350.710000000,0.000000000,0.000000000,0.000000000,0.000000000,-109.830000000,0.000000000,50.349000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-9.775000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-5.802500000,0.000000000,0.000000000,57.144000000,-30.027000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,73.563000000,0.000000000,0.000000000,-580.820000000,78.980000000,0.000000000,0.000000000,0.000000000 +57,68.141000000,18.780000000,-65.123000000,5.576200000,516.170000000,2534.400000000,60.553000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,196.160000000,0.000000000,0.000000000,0.000000000,0.000000000,91.023000000,0.000000000,0.000000000,0.000000000 +58,1855.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1899.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +59,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,200.010000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +60,3.750600000,667.100000000,58.687000000,406.320000000,0.000000000,2389.200000000,-1715.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,694.280000000,0.000000000,0.000000000,0.000000000,0.000000000,862.840000000,0.000000000,0.000000000,0.000000000 +61,742.310000000,0.000000000,-98.107000000,40.010000000,0.000000000,307.198000000,-8.188100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,114.960000000,295.700000000,0.000000000,0.000000000,648.200000000,0.000000000,0.000000000,0.000000000,0.000000000 +62,315.960000000,399.440000000,16.884000000,126.440000000,2357.200000000,2136.600100000,2183.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +63,0.000000000,-364.320000000,-252.610000000,0.000000000,505.730000000,231.320000000,-6058.100100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +64,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 diff --git a/src/main/resources/data/UNIFACInterParamA_UMR.csv b/src/main/resources/data/UNIFACInterParamA_UMR.csv new file mode 100644 index 0000000000..ce598c19f6 --- /dev/null +++ b/src/main/resources/data/UNIFACInterParamA_UMR.csv @@ -0,0 +1,65 @@ +"MainGroup","n1","n2","n3","n4","n5","n6","n7","n8","n9","n10","n11","n12","n13","n14","n15","n16","n17","n18","n19","n20","n21","n22","n23","n24","n25","n26","n27","n28","n29","n30","n31","n32","n33","n34","n35","n36","n37","n38","n39","n40","n41","n42","n43","n44","n45","n46","n47","n48","n49","n50","n51","n52","n53","n54","n55","n56","n57","n58","n59","n60","n61","n62","n63","n64" +1,0.000000000,86.020000000,64.450000000,-93.370000000,986.500000000,697.200000000,1318.000000000,1333.000000000,476.400000000,677.000000000,232.100000000,507.000000000,251.500000000,391.500000000,255.700000000,206.600000000,920.700000000,287.800000000,597.000000000,663.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,153.600000000,184.400000000,354.600000000,3025.000000000,335.800000000,479.500000000,298.900000000,526.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2054.300000000,90.680000000,-268.420000000,-163.270000000,0.000000000,-190.640000000,0.000000000,613.300000000,0.000000000,61.450000000 +2,-35.360000000,0.000000000,38.810000000,74.150000000,524.100000000,787.600000000,270.600000000,526.100000000,182.600000000,448.800000000,37.850000000,333.500000000,214.500000000,240.900000000,163.900000000,61.110000000,749.300000000,280.500000000,336.900000000,318.900000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,76.300000000,0.000000000,262.900000000,0.000000000,0.000000000,183.800000000,31.140000000,179.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2287.500000000,-52.107000000,38.602000000,0.000000000,0.000000000,-231.090000000,0.000000000,585.000000000,-241.560000000,0.000000000 +3,-6.730000000,3.446000000,0.000000000,-155.400000000,636.100000000,637.400000000,9903.800000000,1329.000000000,25.770000000,347.300000000,5.994000000,287.100000000,32.140000000,161.700000000,122.800000000,90.490000000,648.200000000,-4.449000000,212.500000000,537.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52.070000000,-10.430000000,-64.690000000,210.700000000,113.300000000,261.300000000,0.000000000,169.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,627.810000000,94.490000000,-63.530000000,0.000000000,0.000000000,37.230000000,49.132000000,734.870000000,680.050000000,171.390000000 +4,252.500000000,-113.600000000,366.600000000,0.000000000,803.200000000,603.300000000,5695.000000000,884.900000000,-52.100000000,586.800000000,5688.000000000,197.800000000,213.100000000,19.020000000,-49.290000000,23.500000000,664.200000000,52.800000000,6096.000000000,872.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-9.451000000,393.600000000,48.490000000,4975.000000000,259.000000000,210.000000000,0.000000000,4284.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,821.150000000,274.360000000,-88.330000000,0.000000000,0.000000000,122.550000000,23.158000000,320.000000000,0.000000000,674.590000000 +5,156.400000000,457.000000000,89.600000000,25.820000000,0.000000000,-137.100000000,353.500000000,-259.700000000,84.000000000,-203.600000000,101.100000000,267.800000000,28.060000000,8.642000000,42.700000000,-323.000000000,-52.390000000,170.000000000,6.712000000,199.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,488.900000000,147.500000000,-120.500000000,-318.900000000,313.500000000,202.100000000,727.800000000,-202.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,510.640000000,671.690000000,0.000000000,0.000000000,0.000000000,0.000000000,2847.400000000,0.000000000,0.000000000 +6,16.510000000,-12.520000000,-50.000000000,-44.500000000,249.100000000,0.000000000,-181.000000000,-101.700000000,23.390000000,306.400000000,-10.720000000,179.700000000,-128.600000000,359.300000000,-20.980000000,53.900000000,489.700000000,580.500000000,53.280000000,-202.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-31.090000000,17.500000000,0.000000000,-119.200000000,212.100000000,106.300000000,0.000000000,-399.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,138.950000000,-72.040000000,553.560000000,0.000000000,0.000000000,190.240000000,-33.079000000,250.050000000,261.540000000,0.000000000 +7,300.000000000,496.100000000,362.300000000,377.600000000,-229.100000000,289.600000000,0.000000000,324.500000000,-195.400000000,-116.000000000,72.870000000,0.000000000,540.500000000,48.890000000,168.000000000,304.000000000,243.200000000,459.000000000,112.600000000,-14.090000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,887.100000000,0.000000000,188.000000000,12.720000000,0.000000000,0.000000000,0.000000000,-139.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-655.580000000,-1163.500000000,-1159.600000000,-2181.900000000,-318.890000000,2093.100000000,724.930000000,1951.400000000,-1665.500000000,0.000000000 +8,0.000000000,217.500000000,25.340000000,244.200000000,-451.600000000,-265.200000000,-601.800000000,0.000000000,-356.100000000,-271.100000000,-449.400000000,0.000000000,-162.900000000,0.000000000,0.000000000,0.000000000,119.900000000,-305.500000000,0.000000000,408.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,8484.000000000,0.000000000,0.000000000,-687.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,695.700000000,0.000000000,0.000000000,0.000000000,1503.500000000,0.000000000,4027.500000000,0.000000000,0.000000000 +9,26.760000000,42.920000000,140.100000000,365.800000000,164.500000000,108.700000000,472.500000000,-133.100000000,0.000000000,-37.360000000,-213.700000000,-190.400000000,-103.600000000,0.000000000,0.000000000,0.000000000,6201.000000000,7.341000000,481.700000000,669.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,216.100000000,-46.280000000,-163.700000000,71.460000000,53.590000000,245.200000000,-246.600000000,-44.580000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,132.280000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +10,505.700000000,56.300000000,23.390000000,106.000000000,529.000000000,-340.200000000,480.800000000,-155.600000000,128.000000000,0.000000000,-110.300000000,766.000000000,304.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,497.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,117.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-162.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +11,114.800000000,132.100000000,85.840000000,-170.000000000,245.400000000,249.600000000,200.800000000,-36.720000000,372.200000000,185.100000000,0.000000000,-241.800000000,-235.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,660.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,183.000000000,0.000000000,202.300000000,-101.700000000,148.300000000,18.880000000,0.000000000,52.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,818.720000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +12,329.300000000,110.400000000,18.820000000,428.000000000,139.400000000,227.800000000,0.000000000,0.000000000,385.400000000,-236.500000000,1167.000000000,0.000000000,-234.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-268.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,103.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +13,83.360000000,26.510000000,52.130000000,65.690000000,237.700000000,238.400000000,-314.700000000,-178.500000000,191.100000000,-7.838000000,461.300000000,457.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,664.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,140.900000000,-8.538000000,170.100000000,-20.110000000,-149.500000000,-202.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2795.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +14,-30.480000000,1.163000000,-44.850000000,296.400000000,-242.800000000,-481.700000000,-330.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,222.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-70.140000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +15,65.330000000,-28.700000000,-22.310000000,223.000000000,-150.000000000,-370.300000000,-448.200000000,0.000000000,394.600000000,0.000000000,136.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +16,-83.980000000,-25.380000000,-223.900000000,109.900000000,28.600000000,-406.800000000,-598.800000000,0.000000000,225.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +17,1139.000000000,2000.000000000,247.500000000,762.800000000,-17.400000000,-118.100000000,-341.600000000,0.000000000,-450.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-396.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +18,-101.600000000,-47.630000000,31.870000000,49.800000000,-132.300000000,-378.200000000,-332.900000000,0.000000000,29.100000000,0.000000000,0.000000000,554.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-153.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,43.717000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +19,24.820000000,-40.620000000,-22.970000000,-138.400000000,185.400000000,162.600000000,242.800000000,0.000000000,-287.500000000,0.000000000,0.000000000,99.370000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +20,315.300000000,1264.000000000,62.320000000,89.860000000,-151.000000000,339.800000000,-66.170000000,0.000000000,-297.800000000,-165.500000000,0.000000000,193.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,73.859000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +21,91.460000000,40.250000000,4.680000000,122.900000000,562.200000000,529.000000000,698.200000000,0.000000000,286.300000000,-47.510000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,519.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +22,34.010000000,-23.500000000,121.300000000,140.800000000,527.600000000,669.900000000,708.700000000,0.000000000,82.860000000,190.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,543.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +23,36.700000000,51.060000000,288.500000000,69.900000000,742.100000000,649.100000000,826.800000000,0.000000000,552.100000000,242.800000000,0.000000000,235.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,504.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +24,-78.450000000,160.900000000,-4.700000000,134.700000000,856.300000000,709.600000000,1201.000000000,0.000000000,372.000000000,0.000000000,0.000000000,351.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,631.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +25,106.800000000,70.320000000,-97.270000000,402.500000000,325.700000000,612.800000000,-274.500000000,0.000000000,518.400000000,0.000000000,0.000000000,383.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,993.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +26,-32.690000000,-1.996000000,10.380000000,-97.050000000,261.600000000,252.600000000,417.900000000,0.000000000,-142.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +27,0.000000000,0.000000000,1824.000000000,-127.800000000,561.600000000,0.000000000,360.700000000,0.000000000,-101.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +28,0.000000000,0.000000000,21.500000000,40.680000000,609.800000000,914.200000000,1081.000000000,0.000000000,303.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +29,0.000000000,0.000000000,28.410000000,19.560000000,461.600000000,448.600000000,0.000000000,0.000000000,160.600000000,0.000000000,0.000000000,201.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +30,0.000000000,0.000000000,157.300000000,128.800000000,521.600000000,0.000000000,23.480000000,0.000000000,317.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +31,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +32,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +33,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +34,-72.880000000,41.380000000,0.000000000,0.000000000,68.950000000,0.000000000,0.000000000,0.000000000,443.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,32.648000000,-10.699000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +35,50.490000000,64.070000000,-2.504000000,-143.200000000,-25.870000000,695.000000000,-240.000000000,0.000000000,110.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +36,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +37,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +38,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +39,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +40,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +41,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,183.650000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +42,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +43,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +44,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-209.220000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +45,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,95.548000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +46,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +47,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +48,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +49,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +50,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +51,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +52,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +53,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +54,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +55,1243.900000000,2381.100100000,392.160000000,607.540000000,0.000000000,-490.470000000,-395.590000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-173.860000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +56,68.560000000,148.570000000,16.200000000,-102.700000000,148.160000000,414.570000000,1720.600000000,628.800000000,18.074000000,340.000000000,-742.200000000,0.000000000,-350.710000000,0.000000000,0.000000000,0.000000000,0.000000000,-109.830000000,0.000000000,50.349000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-9.775000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-5.802500000,0.000000000,0.000000000,57.144000000,-30.027000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,126.210000000,0.000000000,0.000000000,366.620000000,0.000000000,0.000000000,0.000000000,92.200000000 +57,555.480000000,18.780000000,108.990000000,169.990000000,516.170000000,2534.400000000,60.553000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,85.800000000,0.000000000,0.000000000,0.000000000,192.060000000,0.000000000,0.000000000,0.000000000,79.060000000 +58,1855.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1899.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +59,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,200.010000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +60,833.270000000,667.100000000,363.680000000,264.190000000,0.000000000,2389.200000000,-1715.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-128.170000000,-141.070000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-157.170000000 +61,0.000000000,0.000000000,-98.107000000,40.010000000,0.000000000,307.198000000,-8.188100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +62,315.960000000,399.440000000,16.884000000,126.440000000,2357.200000000,2136.600100000,2183.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +63,0.000000000,-364.320000000,-252.610000000,0.000000000,505.730000000,231.320000000,-6058.100100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +64,-73.880000000,0.000000000,-104.180000000,-240.460000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,110.500000000,-56.010000000,0.000000000,0.000000000,308.970000000,0.000000000,0.000000000,0.000000000,0.000000000 diff --git a/src/main/resources/data/UNIFACInterParamA_UMRMC.csv b/src/main/resources/data/UNIFACInterParamA_UMRMC.csv new file mode 100644 index 0000000000..bdbee50efd --- /dev/null +++ b/src/main/resources/data/UNIFACInterParamA_UMRMC.csv @@ -0,0 +1,71 @@ +"MainGroup","n1","n2","n3","n4","n5","n6","n7","n8","n9","n10","n11","n12","n13","n14","n15","n16","n17","n18","n19","n20","n21","n22","n23","n24","n25","n26","n27","n28","n29","n30","n31","n32","n33","n34","n35","n36","n37","n38","n39","n40","n41","n42","n43","n44","n45","n46","n47","n48","n49","n50","n51","n52","n53","n54","n55","n56","n57","n58","n59","n60","n61","n62","n63","n64","n65","n66","n67","n68","n69","n70" +1,0.000000000,86.020000000,64.450000000,-93.370000000,986.500000000,617.000000000,1306.210000000,1333.000000000,476.400000000,677.000000000,232.100000000,507.000000000,251.500000000,391.500000000,255.700000000,206.600000000,920.700000000,287.800000000,597.000000000,663.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,153.600000000,184.400000000,354.600000000,3025.000000000,335.800000000,479.500000000,298.900000000,526.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2054.300000000,84.680000000,-214.410000000,-163.270000000,0.000000000,-4.260000000,63.880000000,613.300000000,0.000000000,-140.190000000,290.490000000,0.000000000,0.000000000,0.000000000,1425.000000000,291.990000000 +2,-35.360000000,0.000000000,38.810000000,74.150000000,524.100000000,787.600000000,270.600000000,526.100000000,182.600000000,448.800000000,37.850000000,333.500000000,214.500000000,240.900000000,163.900000000,61.110000000,749.300000000,280.500000000,336.900000000,318.900000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,76.300000000,0.000000000,262.900000000,0.000000000,0.000000000,183.800000000,31.140000000,179.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2287.500000000,-52.107000000,38.602000000,0.000000000,0.000000000,-231.090000000,0.000000000,585.000000000,-241.560000000,0.000000000,0.000000000,-35.360000000,-35.360000000,-35.360000000,0.000000000,0.000000000 +3,-6.727000000,3.446000000,0.000000000,-155.400000000,636.100000000,594.400000000,820.860000000,1329.000000000,25.770000000,347.300000000,5.994000000,287.100000000,32.140000000,161.700000000,122.800000000,90.490000000,648.200000000,-4.449000000,212.500000000,537.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,52.070000000,-10.430000000,-64.690000000,210.700000000,113.300000000,261.300000000,0.000000000,169.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,627.810000000,99.440000000,-101.910000000,0.000000000,0.000000000,145.180000000,-74.630000000,734.870000000,680.050000000,-56.210000000,200.740000000,-6.727000000,-6.730000000,-6.730000000,266.700000000,158.470000000 +4,252.500000000,-113.600000000,366.600000000,0.000000000,803.200000000,548.800000000,1340.410000000,884.900000000,-52.100000000,586.800000000,5688.000000000,197.800000000,213.100000000,19.020000000,-49.290000000,23.500000000,664.200000000,52.800000000,6096.000000000,872.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-9.451000000,393.600000000,48.490000000,4975.000000000,259.000000000,210.000000000,0.000000000,4284.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,821.150000000,445.080000000,-106.630000000,0.000000000,0.000000000,220.660000000,273.530000000,320.000000000,0.000000000,69.480000000,535.700000000,252.500000000,252.500000000,252.500000000,1714.000000000,966.730000000 +5,156.400000000,457.000000000,89.600000000,25.820000000,0.000000000,-137.100000000,353.500000000,-259.700000000,84.000000000,-203.600000000,101.100000000,267.800000000,28.060000000,8.642000000,42.700000000,-323.000000000,-52.390000000,170.000000000,6.712000000,199.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,488.900000000,147.500000000,-120.500000000,-318.900000000,313.500000000,202.100000000,727.800000000,-202.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,510.640000000,671.690000000,0.000000000,0.000000000,0.000000000,0.000000000,2847.400000000,0.000000000,0.000000000,0.000000000,156.400000000,156.400000000,156.400000000,0.000000000,0.000000000 +6,28.030000000,-12.520000000,-44.290000000,217.800000000,249.100000000,0.000000000,-34.070000000,-101.700000000,23.390000000,306.400000000,-10.720000000,179.700000000,-128.600000000,359.300000000,-20.980000000,53.900000000,489.700000000,580.500000000,53.280000000,-202.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-31.090000000,17.500000000,0.000000000,-119.200000000,212.100000000,106.300000000,0.000000000,-399.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,138.950000000,-56.160000000,-18.940000000,0.000000000,0.000000000,130.580000000,-33.079000000,250.050000000,261.540000000,70.980000000,318.260000000,28.030000000,16.510000000,16.510000000,221.000000000,0.000000000 +7,476.470000000,496.100000000,261.220000000,149.820000000,-229.100000000,28.660000000,0.000000000,324.500000000,-195.400000000,-116.000000000,72.870000000,0.000000000,540.500000000,48.890000000,168.000000000,304.000000000,243.200000000,459.000000000,112.600000000,-14.090000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,887.100000000,0.000000000,188.000000000,66.718600000,0.000000000,0.000000000,0.000000000,-139.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-655.580000000,238.500000000,642.840000000,-2181.900000000,-318.890000000,807.570000000,548.770000000,1951.400000000,-1665.500000000,550.680000000,62.300000000,404.160000000,520.000000000,520.000000000,66.720000000,472.570000000 +8,0.000000000,217.500000000,25.340000000,244.200000000,-451.600000000,-265.200000000,-601.800000000,0.000000000,-356.100000000,-271.100000000,-449.400000000,0.000000000,-162.900000000,0.000000000,0.000000000,0.000000000,119.900000000,-305.500000000,0.000000000,408.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,8484.000000000,0.000000000,0.000000000,-687.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,695.700000000,0.000000000,0.000000000,0.000000000,1503.500000000,0.000000000,4027.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +9,26.760000000,42.920000000,140.100000000,365.800000000,164.500000000,108.700000000,472.500000000,-133.100000000,0.000000000,-37.360000000,-213.700000000,-190.400000000,-103.600000000,0.000000000,0.000000000,0.000000000,6201.000000000,7.341000000,481.700000000,669.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,216.100000000,-46.280000000,-163.700000000,71.460000000,53.590000000,245.200000000,-246.600000000,-44.580000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,132.280000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,26.760000000,26.760000000,26.760000000,0.000000000,0.000000000 +10,505.700000000,56.300000000,23.390000000,106.000000000,529.000000000,-340.200000000,480.800000000,-155.600000000,128.000000000,0.000000000,-110.300000000,766.000000000,304.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,497.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,117.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-162.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,505.700000000,505.700000000,505.700000000,0.000000000,0.000000000 +11,114.800000000,132.100000000,85.840000000,-170.000000000,245.400000000,249.600000000,200.800000000,-36.720000000,372.200000000,185.100000000,0.000000000,-241.800000000,-235.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,660.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,183.000000000,0.000000000,202.300000000,-101.700000000,148.300000000,18.880000000,0.000000000,52.080000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,818.720000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,114.800000000,114.800000000,114.800000000,0.000000000,0.000000000 +12,329.300000000,110.400000000,18.820000000,428.000000000,139.400000000,227.800000000,0.000000000,0.000000000,385.400000000,-236.500000000,1167.000000000,0.000000000,-234.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-268.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,103.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,329.300000000,329.300000000,329.300000000,0.000000000,0.000000000 +13,83.360000000,26.510000000,52.130000000,65.690000000,237.700000000,238.400000000,-314.700000000,-178.500000000,191.100000000,-7.838000000,461.300000000,457.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,664.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,140.900000000,-8.538000000,170.100000000,-20.110000000,-149.500000000,-202.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2795.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,83.360000000,83.360000000,83.360000000,0.000000000,0.000000000 +14,-30.480000000,1.163000000,-44.850000000,296.400000000,-242.800000000,-481.700000000,-330.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,222.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-70.140000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-30.480000000,-30.480000000,-30.480000000,0.000000000,0.000000000 +15,65.330000000,-28.700000000,-22.310000000,223.000000000,-150.000000000,-370.300000000,-448.200000000,0.000000000,394.600000000,0.000000000,136.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,65.330000000,65.330000000,65.330000000,0.000000000,0.000000000 +16,-83.980000000,-25.380000000,-223.900000000,109.900000000,28.600000000,-406.800000000,-598.800000000,0.000000000,225.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-83.980000000,-83.980000000,-83.980000000,0.000000000,0.000000000 +17,1139.000000000,2000.000000000,247.500000000,762.800000000,-17.400000000,-118.100000000,-341.600000000,0.000000000,-450.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-396.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1139.000000000,1139.000000000,1139.000000000,0.000000000,0.000000000 +18,-101.600000000,-47.630000000,31.870000000,49.800000000,-132.300000000,-378.200000000,-332.900000000,0.000000000,29.100000000,0.000000000,0.000000000,554.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-153.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,43.717000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-101.600000000,-101.600000000,-101.600000000,0.000000000,0.000000000 +19,24.820000000,-40.620000000,-22.970000000,-138.400000000,185.400000000,162.600000000,242.800000000,0.000000000,-287.500000000,0.000000000,0.000000000,99.370000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,24.820000000,24.820000000,24.820000000,0.000000000,0.000000000 +20,315.300000000,1264.000000000,62.320000000,89.860000000,-151.000000000,339.800000000,-66.170000000,0.000000000,-297.800000000,-165.500000000,0.000000000,193.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,73.859000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,315.300000000,315.300000000,315.300000000,0.000000000,0.000000000 +21,91.460000000,40.250000000,4.680000000,122.900000000,562.200000000,529.000000000,698.200000000,0.000000000,286.300000000,-47.510000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,519.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,91.460000000,91.460000000,91.460000000,0.000000000,0.000000000 +22,34.010000000,-23.500000000,121.300000000,140.800000000,527.600000000,669.900000000,708.700000000,0.000000000,82.860000000,190.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,543.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,34.010000000,34.010000000,34.010000000,0.000000000,0.000000000 +23,36.700000000,51.060000000,288.500000000,69.900000000,742.100000000,649.100000000,826.800000000,0.000000000,552.100000000,242.800000000,0.000000000,235.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,504.200000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,36.700000000,36.700000000,36.700000000,0.000000000,0.000000000 +24,-78.450000000,160.900000000,-4.700000000,134.700000000,856.300000000,709.600000000,1201.000000000,0.000000000,372.000000000,0.000000000,0.000000000,351.900000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,631.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-78.450000000,-78.450000000,-78.450000000,0.000000000,0.000000000 +25,106.800000000,70.320000000,-97.270000000,402.500000000,325.700000000,612.800000000,-274.500000000,0.000000000,518.400000000,0.000000000,0.000000000,383.300000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,993.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,106.800000000,106.800000000,106.800000000,0.000000000,0.000000000 +26,-32.690000000,-1.996000000,10.380000000,-97.050000000,261.600000000,252.600000000,417.900000000,0.000000000,-142.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-32.690000000,-32.690000000,-32.690000000,0.000000000,0.000000000 +27,0.000000000,0.000000000,1824.000000000,-127.800000000,561.600000000,0.000000000,360.700000000,0.000000000,-101.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +28,0.000000000,0.000000000,21.500000000,40.680000000,609.800000000,914.200000000,1081.000000000,0.000000000,303.700000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +29,0.000000000,0.000000000,28.410000000,19.560000000,461.600000000,448.600000000,0.000000000,0.000000000,160.600000000,0.000000000,0.000000000,201.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +30,0.000000000,0.000000000,157.300000000,128.800000000,521.600000000,0.000000000,23.480000000,0.000000000,317.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +31,139.930000000,0.000000000,221.400000000,150.640000000,267.600000000,240.800000000,-188.033000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,296.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,139.930000000,139.930000000,139.930000000,0.000000000,0.000000000 +32,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +33,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,79.180000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +34,-72.880000000,41.380000000,0.000000000,0.000000000,68.950000000,0.000000000,0.000000000,0.000000000,443.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,32.648000000,-10.699000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-72.880000000,-72.880000000,-72.880000000,0.000000000,0.000000000 +35,50.490000000,64.070000000,-2.504000000,-143.200000000,-25.870000000,695.000000000,-240.000000000,0.000000000,110.400000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,50.490000000,50.490000000,50.490000000,0.000000000,0.000000000 +36,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,386.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +37,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +38,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +39,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-287.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +40,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +41,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,183.650000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +42,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +43,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +44,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-209.220000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +45,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,95.548000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +46,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +47,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +48,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +49,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +50,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +51,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +52,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +53,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +54,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +55,1243.900000000,2381.100100000,392.160000000,607.540000000,0.000000000,-490.470000000,-395.590000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-173.860000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1243.900000000,1243.900000000,1243.900000000,0.000000000,0.000000000 +56,70.060000000,148.570000000,11.830000000,-114.650000000,148.160000000,403.330000000,797.170000000,628.800000000,18.074000000,340.000000000,-742.200000000,0.000000000,-350.710000000,0.000000000,0.000000000,0.000000000,0.000000000,-109.830000000,0.000000000,50.349000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-9.775000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-5.802500000,0.000000000,0.000000000,57.144000000,-30.027000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,301.980000000,0.000000000,0.000000000,382.680000000,91.510000000,0.000000000,0.000000000,90.860000000,372.860000000,39.010000000,70.060000000,70.060000000,493.820000000,372.260000000 +57,328.800000000,18.780000000,186.090000000,142.110000000,516.170000000,839.660000000,1439.170000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,947.800000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-83.730000000,0.000000000,0.000000000,0.000000000,194.040000000,62.670000000,0.000000000,0.000000000,96.490000000,252.300000000,155.720000000,328.800000000,328.800000000,1279.790000000,194.030000000 +58,1855.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1899.600000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1855.100000000,1855.100000000,1855.100000000,0.000000000,0.000000000 +59,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,200.010000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +60,112.520000000,667.100000000,143.870000000,220.340000000,0.000000000,781.060000000,3000.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-137.900000000,-119.610000000,0.000000000,0.000000000,0.000000000,232.330000000,0.000000000,0.000000000,-154.520000000,320.700000000,117.220000000,-126.880000000,-126.880000000,635.010000000,347.580000000 +61,134.330000000,0.000000000,62.480000000,-66.910000000,0.000000000,307.198000000,223.510000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,121.330000000,277.080000000,0.000000000,0.000000000,401.920000000,0.000000000,0.000000000,0.000000000,81.540000000,0.000000000,-80.980000000,0.000000000,0.000000000,0.000000000,0.000000000 +62,315.960000000,399.440000000,16.884000000,126.440000000,2357.200000000,2136.600100000,2183.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,315.960000000,315.960000000,315.960000000,0.000000000,0.000000000 +63,0.000000000,-364.320000000,-252.610000000,0.000000000,505.730000000,231.320000000,-6058.100100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +64,154.490000000,0.000000000,103.720000000,-43.130000000,0.000000000,272.060000000,1378.840000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,117.630000000,-71.150000000,0.000000000,0.000000000,303.920000000,157.670000000,0.000000000,0.000000000,0.000000000,392.490000000,107.270000000,154.490000000,154.490000000,509.290000000,1164.880000000 +65,321.060000000,0.000000000,642.390000000,-52.010000000,0.000000000,276.770000000,322.470000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,160.080000000,505.000000000,0.000000000,0.000000000,551.900000000,0.000000000,0.000000000,0.000000000,81.880000000,0.000000000,270.080000000,2630.873941855,2630.873941855,0.000000000,0.000000000 +66,0.000000000,86.020000000,64.450000000,-93.370000000,986.500000000,617.000000000,1299.010000000,1333.000000000,476.400000000,677.000000000,232.100000000,507.000000000,251.500000000,391.500000000,255.700000000,206.600000000,920.700000000,287.800000000,597.000000000,663.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,153.600000000,184.400000000,354.600000000,3025.000000000,335.800000000,479.500000000,298.900000000,526.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2054.300000000,141.640000000,-119.880000000,-163.270000000,0.000000000,-13.690000000,-248.360000000,613.300000000,0.000000000,-95.390000000,294.850000000,0.000000000,0.000000000,0.000000000,1425.000000000,291.990000000 +67,0.000000000,86.020000000,64.450000000,-93.370000000,986.500000000,697.200000000,1300.000000000,1333.000000000,476.400000000,677.000000000,232.100000000,507.000000000,251.500000000,391.500000000,255.700000000,206.600000000,920.700000000,287.800000000,597.000000000,663.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,153.600000000,184.400000000,354.600000000,3025.000000000,335.800000000,479.500000000,298.900000000,526.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2054.300000000,84.680000000,-214.410000000,-163.270000000,0.000000000,194.940000000,0.000000000,613.300000000,0.000000000,-140.190000000,189.751744175,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +68,0.000000000,86.020000000,64.450000000,-93.370000000,986.500000000,697.200000000,1300.000000000,1333.000000000,476.400000000,677.000000000,232.100000000,507.000000000,251.500000000,391.500000000,255.700000000,206.600000000,920.700000000,287.800000000,597.000000000,663.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,153.600000000,184.400000000,354.600000000,3025.000000000,335.800000000,479.500000000,298.900000000,526.500000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2054.300000000,84.680000000,-214.410000000,-163.270000000,0.000000000,194.940000000,0.000000000,613.300000000,0.000000000,-140.190000000,189.751744175,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +69,-79.670000000,0.000000000,155.600000000,2127.000000000,0.000000000,168.700000000,-188.030000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,286.830000000,0.000000000,65.900000000,500.410000000,0.000000000,0.000000000,0.000000000,260.210000000,0.000000000,-79.670000000,0.000000000,0.000000000,0.000000000,0.000000000 +70,103.840000000,0.000000000,-13.110000000,-120.770000000,0.000000000,0.000000000,-362.510000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,225.270000000,0.000000000,-103.950000000,592.370000000,0.000000000,0.000000000,0.000000000,4.060000000,0.000000000,103.840000000,0.000000000,0.000000000,0.000000000,0.000000000 diff --git a/src/main/resources/data/UNIFACInterParamB.csv b/src/main/resources/data/UNIFACInterParamB.csv new file mode 100644 index 0000000000..2af5d063e3 --- /dev/null +++ b/src/main/resources/data/UNIFACInterParamB.csv @@ -0,0 +1,65 @@ +"MainGroup","n1","n2","n3","n4","n5","n6","n7","n8","n9","n10","n11","n12","n13","n14","n15","n16","n17","n18","n19","n20","n21","n22","n23","n24","n25","n26","n27","n28","n29","n30","n31","n32","n33","n34","n35","n36","n37","n38","n39","n40","n41","n42","n43","n44","n45","n46","n47","n48","n49","n50","n51","n52","n53","n54","n55","n56","n57","n58","n59","n60","n61","n62","n63","n64" +1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-3.423300000,-3.913200000,0.845900000,0.000000000,0.000000000,-0.990300000,-3.134200000,0.000000000,0.000000000,0.000000000 +2,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-52.107000000,0.000000000,0.000000000,0.000000000,-231.090000000,0.000000000,-0.872700000,1.229600000,0.000000000 +3,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +4,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +5,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +6,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-4.782900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.335000000,0.000000000 +7,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.066700000,5.476500000,8.679100000,14.238000000,2.836800000,-1.965200000,-0.013600000,0.000000000,0.000000000,0.000000000 +8,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +9,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1.476100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +10,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +11,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-3.562700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +12,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +13,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +14,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +15,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +16,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +17,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +18,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +19,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +20,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +21,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +22,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +23,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +24,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +25,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +26,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +27,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +28,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +29,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +30,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +31,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +32,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +33,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +34,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +35,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +36,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +37,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +38,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +39,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +40,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +41,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +42,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +43,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +44,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.702400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +45,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +46,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +47,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +48,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +49,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +50,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +51,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +52,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +53,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +54,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +55,17.412000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.246100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +56,0.861490000,-1.111510000,0.000000000,0.000000000,0.000000000,0.000000000,-4.343700000,0.000000000,1.887900000,0.000000000,2.917300000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.913800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,3.699700000,0.000000000,0.000000000,0.000000000,0.000000000 +57,-0.738600000,0.000000000,0.000000000,0.000000000,0.000000000,-9.219300000,4.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +58,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,58.045000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +59,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,12.190000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +60,0.322900000,-8.099900000,0.000000000,0.000000000,0.000000000,0.000000000,5.480000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-3.017300000,0.000000000,0.000000000,0.000000000,0.000000000,-2.156900000,0.000000000,0.000000000,0.000000000 +61,-5.707400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.207700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.300720000,0.000000000,0.000000000,0.000000000,0.000000000 +62,-0.456300000,-0.580600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +63,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.047600000,31.281000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +64,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 diff --git a/src/main/resources/data/UNIFACInterParamB_UMR.csv b/src/main/resources/data/UNIFACInterParamB_UMR.csv new file mode 100644 index 0000000000..c8262976b4 --- /dev/null +++ b/src/main/resources/data/UNIFACInterParamB_UMR.csv @@ -0,0 +1,65 @@ +"MainGroup","n1","n2","n3","n4","n5","n6","n7","n8","n9","n10","n11","n12","n13","n14","n15","n16","n17","n18","n19","n20","n21","n22","n23","n24","n25","n26","n27","n28","n29","n30","n31","n32","n33","n34","n35","n36","n37","n38","n39","n40","n41","n42","n43","n44","n45","n46","n47","n48","n49","n50","n51","n52","n53","n54","n55","n56","n57","n58","n59","n60","n61","n62","n63","n64" +1,0.000000000,0.000000000,0.374500000,-1.103000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-3.423300000,-0.571400000,-1.234600000,0.000000000,0.000000000,-0.975400000,0.000000000,0.000000000,0.000000000,0.112600000 +2,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-52.107000000,0.000000000,0.000000000,0.000000000,-231.090000000,0.000000000,-0.872700000,1.229600000,0.000000000 +3,-0.566200000,0.000000000,0.000000000,-1.489000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,1.557000000,-1.305000000,0.000000000,0.000000000,-1.205000000,0.000000000,0.000000000,0.000000000,-0.724100000 +4,2.650000000,0.000000000,13.220000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,15.593100000,1.393000000,0.000000000,0.000000000,0.559800000,0.000000000,0.000000000,0.000000000,2.531800000 +5,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +6,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-4.782900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.335000000,0.000000000 +7,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.066700000,5.476500000,8.679100000,14.238000000,2.836800000,-1.965200000,-0.013600000,0.000000000,0.000000000,0.000000000 +8,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +9,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1.476100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +10,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +11,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-3.562700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +12,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +13,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +14,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +15,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +16,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +17,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +18,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +19,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +20,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +21,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +22,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +23,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +24,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +25,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +26,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +27,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +28,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +29,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +30,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +31,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +32,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +33,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +34,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +35,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +36,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +37,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +38,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +39,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +40,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +41,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +42,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +43,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +44,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.702400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +45,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +46,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +47,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +48,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +49,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +50,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +51,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +52,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +53,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +54,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +55,17.412000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.246100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +56,-0.873900000,-1.111510000,-2.253800000,-3.050200000,0.000000000,0.000000000,-4.343700000,0.000000000,1.887900000,0.000000000,2.917300000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.913800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.443900000,0.000000000,0.000000000,1.530000000,0.000000000,0.000000000,0.000000000,-0.684700000 +57,2.828700000,0.000000000,1.695000000,-3.142000000,0.000000000,-9.219300000,4.100000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.195900000,0.000000000,0.000000000,0.000000000,0.790900000,0.000000000,0.000000000,0.000000000,0.249700000 +58,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,58.045000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +59,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,12.190000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +60,-2.538300000,-8.099900000,1.801000000,-3.614000000,0.000000000,0.000000000,5.480000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1.665000000,-0.849400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.941100000 +61,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.207700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +62,-0.456300000,-0.580600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +63,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.047600000,31.281000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +64,-0.409200000,0.000000000,0.187200000,-1.215100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.380500000,-0.179800000,0.000000000,0.000000000,1.003000000,0.000000000,0.000000000,0.000000000,0.000000000 diff --git a/src/main/resources/data/UNIFACInterParamB_UMRMC.csv b/src/main/resources/data/UNIFACInterParamB_UMRMC.csv new file mode 100644 index 0000000000..682673fa2a --- /dev/null +++ b/src/main/resources/data/UNIFACInterParamB_UMRMC.csv @@ -0,0 +1,71 @@ +"MainGroup","n1","n2","n3","n4","n5","n6","n7","n8","n9","n10","n11","n12","n13","n14","n15","n16","n17","n18","n19","n20","n21","n22","n23","n24","n25","n26","n27","n28","n29","n30","n31","n32","n33","n34","n35","n36","n37","n38","n39","n40","n41","n42","n43","n44","n45","n46","n47","n48","n49","n50","n51","n52","n53","n54","n55","n56","n57","n58","n59","n60","n61","n62","n63","n64","n65","n66","n67","n68","n69","n70" +1,0.000000000,0.000000000,0.374500000,-1.103000000,0.000000000,3.838000000,-5.453300000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-3.423300000,-0.698900000,-1.220200000,0.000000000,0.000000000,0.626400000,-2.008200000,0.000000000,0.000000000,-0.185800000,-0.509000000,0.000000000,0.000000000,0.000000000,11.500000000,1.170600000 +2,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-52.107000000,0.000000000,0.000000000,0.000000000,-231.090000000,0.000000000,-0.872700000,1.229600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +3,-0.566200000,0.000000000,0.000000000,-1.489000000,0.000000000,-1.204000000,-2.964200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,1.386800000,-0.208900000,0.000000000,0.000000000,-0.449000000,-2.513700000,0.000000000,0.000000000,0.290700000,-0.643000000,-0.566200000,-0.566200000,-0.566200000,1.057000000,1.392700000 +4,2.650000000,0.000000000,13.220000000,0.000000000,0.000000000,19.550000000,-3.643700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,8.186800000,0.934000000,0.000000000,0.000000000,0.540300000,0.651100000,0.000000000,0.000000000,1.246500000,1.909000000,2.650000000,2.650000000,2.650000000,4.024000000,-5.426200000 +5,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +6,-1.103000000,0.000000000,0.290300000,-4.019000000,0.000000000,0.000000000,-2.069000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.101860000,1.032900000,0.000000000,0.000000000,-0.216500000,0.000000000,0.000000000,0.335000000,-0.413600000,-0.319000000,-1.103000000,0.000000000,0.000000000,-4.431000000,0.000000000 +7,2.141200000,0.000000000,1.085700000,1.693900000,0.000000000,4.096000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.066700000,2.585800000,5.118200000,14.238000000,2.836800000,6.019100000,-0.000900000,0.000000000,0.000000000,2.883200000,0.239000000,1.179400000,0.000000000,0.000000000,0.000000000,-1.497600000 +8,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +9,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1.476100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +10,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +11,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-3.562700000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +12,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +13,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +14,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +15,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +16,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +17,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +18,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +19,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +20,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +21,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +22,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +23,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +24,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +25,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +26,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +27,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +28,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +29,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +30,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +31,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.606430000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +32,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +33,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +34,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +35,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +36,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +37,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +38,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +39,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +40,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +41,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +42,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +43,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +44,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.702400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +45,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +46,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +47,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +48,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +49,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +50,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +51,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +52,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +53,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +54,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +55,17.412000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.246100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,17.412000000,17.412000000,17.412000000,0.000000000,0.000000000 +56,-0.727600000,-1.111510000,-2.056800000,-3.650600000,0.000000000,-2.550600000,-4.667700000,0.000000000,1.887900000,0.000000000,2.917300000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.913800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.695100000,0.000000000,0.000000000,1.573600000,-0.513300000,0.000000000,0.000000000,-0.489300000,-2.529000000,0.198200000,-0.727600000,-0.727600000,-2.094900000,-4.292300000 +57,1.803100000,0.000000000,-0.593300000,-0.377100000,0.000000000,-6.700000000,-6.876720000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.982500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-2.257000000,0.000000000,0.000000000,0.000000000,0.831800000,-0.055200000,0.000000000,0.000000000,0.507300000,-2.400000000,-0.466600000,1.803100000,1.803100000,-2.521300000,6.014900000 +58,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,58.045000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +59,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,12.190000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +60,-1.490300000,-8.099900000,-0.470000000,-1.282700000,0.000000000,3.280100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-1.693600000,-0.753800000,0.000000000,0.000000000,0.000000000,-1.191000000,0.000000000,0.000000000,-0.902100000,0.000000000,-1.286100000,-1.539200000,-1.539200000,-6.732600000,2.633500000 +61,1.166500000,0.000000000,1.050400000,-0.278400000,0.000000000,0.000000000,2.116800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.082600000,-0.543800000,0.000000000,0.000000000,-0.614900000,0.000000000,0.000000000,0.000000000,-0.599500000,0.000000000,-0.630800000,0.000000000,0.000000000,0.000000000,0.000000000 +62,-0.456300000,-0.580600000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.456300000,-0.456300000,-0.456300000,0.000000000,0.000000000 +63,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.047600000,31.281000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +64,-0.281500000,0.000000000,-1.095900000,-0.110600000,0.000000000,1.144300000,-9.262200000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.326300000,-0.401200000,0.000000000,0.000000000,0.949700000,-0.428700000,0.000000000,0.000000000,0.000000000,-1.311000000,0.061500000,-0.281500000,-0.281500000,-2.574900000,-3.673300000 +65,1.078000000,0.000000000,1.625000000,-1.410000000,0.000000000,0.851000000,-0.888000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,2.718000000,8.270000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.005000000,0.000000000,-0.034000000,0.000000000,0.000000000,0.000000000,0.000000000 +66,0.000000000,0.000000000,0.374500000,-1.103000000,0.000000000,3.838000000,-3.264500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-3.423300000,-1.318400000,0.072200000,0.000000000,0.000000000,1.340800000,0.039400000,0.000000000,0.000000000,-0.351200000,-0.145000000,0.000000000,0.000000000,0.000000000,11.500000000,1.170600000 +67,0.000000000,0.000000000,0.374500000,-1.103000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-3.423300000,-0.698900000,-1.220200000,0.000000000,0.000000000,1.460900000,0.000000000,0.000000000,0.000000000,-0.185800000,-0.896831490,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +68,0.000000000,0.000000000,0.374500000,-1.103000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-3.423300000,-0.698900000,-1.220200000,0.000000000,0.000000000,1.460900000,0.000000000,0.000000000,0.000000000,-0.185800000,-0.896831490,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +69,2.136000000,0.000000000,-0.532400000,-11.900000000,0.000000000,6.008000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.050700000,0.956500000,0.000000000,0.000000000,3.982600000,0.000000000,0.000000000,0.000000000,1.042800000,0.000000000,2.136000000,0.000000000,0.000000000,0.000000000,0.000000000 +70,-0.677500000,0.000000000,-0.881000000,1.905500000,0.000000000,0.000000000,0.331100000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,1.594700000,-3.942100000,0.000000000,0.000000000,-1.337200000,0.000000000,0.000000000,0.000000000,-0.909100000,0.000000000,-0.677500000,0.000000000,0.000000000,0.000000000,0.000000000 diff --git a/src/main/resources/data/UNIFACInterParamC.csv b/src/main/resources/data/UNIFACInterParamC.csv new file mode 100644 index 0000000000..220c4a7e5c --- /dev/null +++ b/src/main/resources/data/UNIFACInterParamC.csv @@ -0,0 +1,65 @@ +"MainGroup","n1","n2","n3","n4","n5","n6","n7","n8","n9","n10","n11","n12","n13","n14","n15","n16","n17","n18","n19","n20","n21","n22","n23","n24","n25","n26","n27","n28","n29","n30","n31","n32","n33","n34","n35","n36","n37","n38","n39","n40","n41","n42","n43","n44","n45","n46","n47","n48","n49","n50","n51","n52","n53","n54","n55","n56","n57","n58","n59","n60","n61","n62","n63","n64" +1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,22.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.005770000,0.001094000,0.000000000,0.000000000,-0.001980000,0.000000000,0.000000000,0.000000000,0.000955000 +2,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.016550000,0.000000000,0.000000000,0.000000000,0.000000000 +3,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.007850000,0.002178000,0.000000000,0.000000000,-0.001061000,0.000000000,0.000000000,0.000000000,0.000000000 +4,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.012930000,-0.008429000,0.000000000,0.000000000,-0.003968000,0.000000000,0.000000000,0.000000000,0.051615000 +5,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +6,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.010320000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +7,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000579200,-0.002603000,-0.006993000,-0.012450000,0.000000000,0.000000000,0.001058000,0.000000000,-0.014050000,0.000000000 +8,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +9,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +10,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +11,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +12,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +13,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +14,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +15,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +16,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +17,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +18,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +19,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +20,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +21,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +22,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +23,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +24,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +25,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +26,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +27,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +28,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +29,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +30,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +31,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +32,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +33,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +34,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +35,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +36,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +37,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +38,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +39,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +40,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +41,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +42,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +43,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +44,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +45,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +46,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +47,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +48,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +49,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +50,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +51,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +52,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +53,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +54,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +55,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +56,-0.000080000,0.000000000,0.001050000,0.012000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +57,-0.010592000,0.000000000,0.000509000,0.010180000,0.000000000,0.000000000,-0.006244000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +58,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +59,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +60,0.036193000,0.022560000,-0.006569000,0.015020000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +61,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +62,-0.001560000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +63,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +64,0.000065000,0.000000000,0.000000000,-0.000086000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 diff --git a/src/main/resources/data/UNIFACInterParamC_UMR.csv b/src/main/resources/data/UNIFACInterParamC_UMR.csv new file mode 100644 index 0000000000..220c4a7e5c --- /dev/null +++ b/src/main/resources/data/UNIFACInterParamC_UMR.csv @@ -0,0 +1,65 @@ +"MainGroup","n1","n2","n3","n4","n5","n6","n7","n8","n9","n10","n11","n12","n13","n14","n15","n16","n17","n18","n19","n20","n21","n22","n23","n24","n25","n26","n27","n28","n29","n30","n31","n32","n33","n34","n35","n36","n37","n38","n39","n40","n41","n42","n43","n44","n45","n46","n47","n48","n49","n50","n51","n52","n53","n54","n55","n56","n57","n58","n59","n60","n61","n62","n63","n64" +1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,22.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.005770000,0.001094000,0.000000000,0.000000000,-0.001980000,0.000000000,0.000000000,0.000000000,0.000955000 +2,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.016550000,0.000000000,0.000000000,0.000000000,0.000000000 +3,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.007850000,0.002178000,0.000000000,0.000000000,-0.001061000,0.000000000,0.000000000,0.000000000,0.000000000 +4,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.012930000,-0.008429000,0.000000000,0.000000000,-0.003968000,0.000000000,0.000000000,0.000000000,0.051615000 +5,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +6,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.010320000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +7,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000579200,-0.002603000,-0.006993000,-0.012450000,0.000000000,0.000000000,0.001058000,0.000000000,-0.014050000,0.000000000 +8,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +9,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +10,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +11,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +12,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +13,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +14,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +15,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +16,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +17,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +18,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +19,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +20,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +21,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +22,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +23,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +24,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +25,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +26,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +27,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +28,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +29,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +30,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +31,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +32,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +33,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +34,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +35,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +36,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +37,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +38,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +39,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +40,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +41,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +42,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +43,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +44,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +45,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +46,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +47,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +48,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +49,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +50,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +51,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +52,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +53,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +54,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +55,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +56,-0.000080000,0.000000000,0.001050000,0.012000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +57,-0.010592000,0.000000000,0.000509000,0.010180000,0.000000000,0.000000000,-0.006244000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +58,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +59,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +60,0.036193000,0.022560000,-0.006569000,0.015020000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +61,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +62,-0.001560000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +63,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +64,0.000065000,0.000000000,0.000000000,-0.000086000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 diff --git a/src/main/resources/data/UNIFACInterParamC_UMRMC.csv b/src/main/resources/data/UNIFACInterParamC_UMRMC.csv new file mode 100644 index 0000000000..420171a20b --- /dev/null +++ b/src/main/resources/data/UNIFACInterParamC_UMRMC.csv @@ -0,0 +1,71 @@ +"MainGroup","n1","n2","n3","n4","n5","n6","n7","n8","n9","n10","n11","n12","n13","n14","n15","n16","n17","n18","n19","n20","n21","n22","n23","n24","n25","n26","n27","n28","n29","n30","n31","n32","n33","n34","n35","n36","n37","n38","n39","n40","n41","n42","n43","n44","n45","n46","n47","n48","n49","n50","n51","n52","n53","n54","n55","n56","n57","n58","n59","n60","n61","n62","n63","n64","n65","n66","n67","n68","n69","n70" +1,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.013800000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,22.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.002966000,0.004627000,0.000000000,0.000000000,0.002043000,0.000604000,0.000000000,0.000000000,-0.005389000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.008300000 +2,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.016550000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +3,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.002298000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.007309000,0.000485000,0.000000000,0.000000000,-0.000772000,0.001625000,0.000000000,0.000000000,-0.003034000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +4,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.001340000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.304722000,-0.007403000,0.000000000,0.000000000,0.004442000,-0.012116000,0.000000000,0.000000000,-0.003004000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +5,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +6,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.019783000,0.012878000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.050647000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +7,-0.009800000,0.000000000,-0.005200000,-0.002580000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000579200,0.001055000,-0.013506000,-0.012450000,0.000000000,-0.019880000,-0.007662000,0.000000000,-0.014050000,0.001402000,0.000000000,-0.005200000,0.000000000,0.000000000,0.000000000,0.000000000 +8,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +9,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +10,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +11,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +12,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +13,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +14,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +15,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +16,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +17,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +18,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +19,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +20,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +21,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +22,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +23,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +24,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +25,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +26,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +27,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +28,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +29,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +30,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +31,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.008030000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +32,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +33,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +34,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +35,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +36,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +37,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +38,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +39,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +40,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +41,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +42,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +43,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +44,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +45,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +46,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +47,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +48,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +49,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +50,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +51,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +52,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +53,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +54,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +55,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +56,0.002452000,0.000000000,-0.001805000,0.018463000,0.000000000,-0.016570000,0.004053000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.014126000,0.002452000,0.002452000,-0.001780000,0.007164000 +57,-0.011159000,0.000000000,0.003441000,0.010348000,0.000000000,0.006070000,0.018497000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.001873000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.007538000,-0.011159000,-0.011159000,-0.005200000,0.037400000 +58,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +59,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +60,0.000607000,0.022560000,0.000113000,-0.002519000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.002159000,0.000764000,0.000764000,0.000000000,0.000000000 +61,0.003025000,0.000000000,0.022841000,0.000685000,0.000000000,0.000000000,-0.010483000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.006186000,0.000000000,0.000000000,0.000000000,0.000000000 +62,-0.001560000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.001560000,-0.001560000,-0.001560000,0.000000000,0.000000000 +63,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +64,0.011039000,0.000000000,0.007017000,-0.005147000,0.000000000,-0.050790000,0.012074000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.009934000,0.011039000,0.011039000,-0.001200000,0.000200000 +65,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +66,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.001900000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,22.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.020399000,-0.004935000,0.000000000,0.000000000,0.000741000,-0.007719000,0.000000000,0.000000000,-0.005116000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.008300000 +67,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,22.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.002966000,0.004627000,0.000000000,0.000000000,0.001229000,0.000000000,0.000000000,0.000000000,-0.005389000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +68,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,22.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.002966000,0.004627000,0.000000000,0.000000000,0.001229000,0.000000000,0.000000000,0.000000000,-0.005389000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +69,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,-0.000450000,-0.009270000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.003320000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000 +70,0.000500000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.004961000,0.011400000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.000000000,0.001700000,0.000000000,0.000500000,0.000000000,0.000000000,0.000000000,0.000000000 diff --git a/src/main/resources/data/UNIFACcomp.csv b/src/main/resources/data/UNIFACcomp.csv new file mode 100644 index 0000000000..2ad7bf62b5 --- /dev/null +++ b/src/main/resources/data/UNIFACcomp.csv @@ -0,0 +1,112 @@ +"CompNumber","Name","qUNIQUAQ","rUNIQUAQ","sub1","sub2","sub3","sub4","sub5","sub6","sub7","sub8","sub9","sub10","sub11","sub12","sub13","sub14","sub15","sub16","sub17","sub18","sub19","sub20","sub21","sub22","sub23","sub24","sub25","sub26","sub27","sub28","sub29","sub30","sub31","sub32","sub33","sub34","sub35","sub36","sub37","sub38","sub39","sub40","sub41","sub42","sub43","sub44","sub45","sub46","sub47","sub48","sub49","sub50","sub51","sub52","sub53","sub54","sub55","sub56","sub57","sub58","sub59","sub60","sub61","sub62","sub63","sub64","sub65","sub66","sub67","sub68","sub69","sub70","sub71","sub72","sub73","sub74","sub75","sub76","sub77","sub78","sub79","sub80","sub81","sub82","sub83","sub84","sub85","sub86","sub87","sub88","sub89","sub90","sub91","sub92","sub93","sub94","sub95","sub96","sub97","sub98","sub99","sub100","sub101","sub102","sub103","sub104","sub105","sub106","sub107","sub108","sub109","sub110","sub111","sub112","sub113","sub114","sub115","sub116","sub117","sub118","sub119","sub120","sub121","sub122","sub123","sub124","sub125","sub126","sub127","sub128","sub129","sub130","sub131","sub132","sub133","sub134","sub135","sub136","sub137","sub138","sub139","sub140" +1,"methane",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,"ethane",0.000000000,0.000000000,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,"propane",0.000000000,0.000000000,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,"n-pentane",0.000000000,0.000000000,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,"acetone",0.000000000,0.000000000,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,"water",1.400000000,0.920000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,"methanol",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,"n-butane",0.000000000,0.000000000,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,"n-hexane",0.000000000,0.000000000,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +10,"n-heptane",0.000000000,0.000000000,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +11,"i-butane",0.000000000,0.000000000,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +12,"22-dim-C3",0.000000000,0.000000000,4,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +15,"iC5",0.000000000,0.000000000,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +16,"22-dim-C4",0.000000000,0.000000000,4,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +17,"c-C5",0.000000000,0.000000000,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +18,"23-dim-C4",0.000000000,0.000000000,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +20,"2-m-C5",0.000000000,0.000000000,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +21,"3-m-C5",0.000000000,0.000000000,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +22,"22-DM-C5",0.000000000,0.000000000,4,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +23,"M-cy-C5",0.000000000,0.000000000,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +24,"24-DM-C5",0.000000000,0.000000000,4,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +25,"223-TM-C4",0.000000000,0.000000000,5,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +26,"benzene",0.000000000,0.000000000,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +27,"33-DM-C5",0.000000000,0.000000000,4,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +28,"c-hexane",0.000000000,0.000000000,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +29,"2-M-C6",0.000000000,0.000000000,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +30,"23-DM-C5",0.000000000,0.000000000,4,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +31,"11-DM-cy-C5",0.000000000,0.000000000,2,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +32,"3-M-C6",0.000000000,0.000000000,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +33,"toluene",0.000000000,0.000000000,0,0,0,0,0,0,0,0,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +34,"n-octane",0.000000000,0.000000000,2,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +35,"n-nonane",0.000000000,0.000000000,2,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +36,"nC10",0.000000000,0.000000000,2,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +37,"cis-13-DM-cy-C5",0.000000000,0.000000000,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +38,"trans-13-DM-cy-C5",0.000000000,0.000000000,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +39,"3-E-C5",0.000000000,0.000000000,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +40,"trans-12-DM-cy-C5",0.000000000,0.000000000,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +41,"224-TM-C5",0.000000000,0.000000000,5,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +42,"113-TM-cy-C5",0.000000000,0.000000000,3,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +43,"22-DM-C6",0.000000000,0.000000000,4,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +44,"E-cy-C5",0.000000000,0.000000000,1,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +45,"25-DM-C6",0.000000000,0.000000000,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +46,"24-DM-C6",0.000000000,0.000000000,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +47,"2-M-C7",0.000000000,0.000000000,3,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +48,"cis-13-DM-cy-C6",0.000000000,0.000000000,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +49,"3-M-C7",0.000000000,0.000000000,3,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +50,"3-E-C6",0.000000000,0.000000000,3,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +51,"ethylbenzene",0.000000000,0.000000000,1,0,0,0,0,0,0,0,5,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +52,"m-Xylene",0.000000000,0.000000000,0,0,0,0,0,0,0,0,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +53,"p-Xylene",0.000000000,0.000000000,0,0,0,0,0,0,0,0,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +54,"o-Xylene",0.000000000,0.000000000,0,0,0,0,0,0,0,0,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +55,"2-M-C8",0.000000000,0.000000000,3,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +56,"ethylcyclohexane",0.000000000,0.000000000,1,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +57,"Piperazine",0.000000000,0.000000000,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +58,"MDEA",0.000000000,0.000000000,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +59,"CO2",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +60,"AceticAcid",2.072000000,2.202400000,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +61,"TEG",0.000000000,0.000000000,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +62,"H2S",1.241000000,1.234000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +64,"nitrogen",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +65,"nC11",0.000000000,0.000000000,2,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +66,"nC12",0.000000000,0.000000000,2,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +68,"nC13",0.000000000,0.000000000,2,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +69,"c-C7",0.000000000,0.000000000,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +73,"c-C8",0.000000000,0.000000000,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +76,"nC14",0.000000000,0.000000000,2,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +77,"nC15",0.000000000,0.000000000,2,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +78,"nC16",0.000000000,0.000000000,2,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +79,"i-pentane",0.000000000,0.000000000,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +80,"M-Cy-C6",0.000000000,0.000000000,1,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +81,"i-p-cy-C5",0.000000000,0.000000000,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +83,"234-TM-C5",0.000000000,0.000000000,5,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +84,"cis-12-DM-cy-C6",0.000000000,0.000000000,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +85,"1,cis-2,trans-4-TMcyC5",0.000000000,0.000000000,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +86,"2,3-DM-C6",0.000000000,0.000000000,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +87,"3-M-C8",0.000000000,0.000000000,3,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +88,"2,2-DM-C7",0.000000000,0.000000000,4,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +89,"2,6-DM-C7",0.000000000,0.000000000,4,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +90,"1,1,3-TM-cy-C6",0.000000000,0.000000000,3,4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +91,"1,2,3-TMcyC6",0.000000000,0.000000000,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +92,"4-M-C8",0.000000000,0.000000000,3,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +93,"o-E-toluene",0.000000000,0.000000000,1,0,0,0,0,0,0,0,4,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +94,"1,2,3-TM-Benzene",0.000000000,0.000000000,3,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +95,"cy-C9",0.000000000,0.000000000,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +96,"2-E-p-xylene",0.000000000,0.000000000,1,0,0,0,0,0,0,0,3,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +97,"nC5-Benzene",0.000000000,0.000000000,1,4,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +98,"nC6-Benzene",0.000000000,0.000000000,1,5,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +99,"nC7-Benzene",0.000000000,0.000000000,1,6,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +100,"nC10-cy-C5",0.000000000,0.000000000,1,13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +101,"nC8-Benzene",0.000000000,0.000000000,1,7,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +102,"nC9-Benzene",0.000000000,0.000000000,1,8,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +103,"3-M-4,4-DE-heptane",0.000000000,0.000000000,5,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +104,"nC12-cy-C5",0.000000000,0.000000000,1,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +105,"nC10-Benzene",0.000000000,0.000000000,1,9,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +106,"nC14-cy-C5",0.000000000,0.000000000,1,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +107,"nC17-cy-C5",0.000000000,0.000000000,1,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +108,"nC27",0.000000000,0.000000000,2,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +109,"nC34",0.000000000,0.000000000,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +110,"nC39",0.000000000,0.000000000,2,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +111,"nC17",0.000000000,0.000000000,2,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +112,"nC19",0.000000000,0.000000000,2,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +113,"nC22",0.000000000,0.000000000,2,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +114,"nC23",0.000000000,0.000000000,2,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +115,"nC18",0.000000000,0.000000000,2,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +116,"1,2-DM-cyC5",0.000000000,0.000000000,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +117,"1,3-dDM-cyC5",0.000000000,0.000000000,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +118,"nC30",0.000000000,0.000000000,2,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +119,"MEG",0.000000000,0.000000000,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +120,"TEG",0.000000000,0.000000000,0,6,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +132,"c-C8",0.000000000,0.000000000,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +133,"c-C7",0.000000000,0.000000000,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/src/main/resources/data/UNIFACcompUMRPRU.csv b/src/main/resources/data/UNIFACcompUMRPRU.csv new file mode 100644 index 0000000000..554cdc549a --- /dev/null +++ b/src/main/resources/data/UNIFACcompUMRPRU.csv @@ -0,0 +1,117 @@ +"CompNumber","Name","qUNIQUAQ","rUNIQUAQ","sub1","sub2","sub3","sub4","sub5","sub6","sub7","sub8","sub9","sub10","sub11","sub12","sub13","sub14","sub15","sub16","sub17","sub18","sub19","sub20","sub21","sub22","sub23","sub24","sub25","sub26","sub27","sub28","sub29","sub30","sub31","sub32","sub33","sub34","sub35","sub36","sub37","sub38","sub39","sub40","sub41","sub42","sub43","sub44","sub45","sub46","sub47","sub48","sub49","sub50","sub51","sub52","sub53","sub54","sub55","sub56","sub57","sub58","sub59","sub60","sub61","sub62","sub63","sub64","sub65","sub66","sub67","sub68","sub69","sub70","sub71","sub72","sub73","sub74","sub75","sub76","sub77","sub78","sub79","sub80","sub81","sub82","sub83","sub84","sub85","sub86","sub87","sub88","sub89","sub90","sub91","sub92","sub93","sub94","sub95","sub96","sub97","sub98","sub99","sub100","sub101","sub102","sub103","sub104","sub105","sub106","sub107","sub108","sub109","sub110","sub111","sub112","sub113","sub114","sub115","sub116","sub117","sub118","sub119","sub120","sub121","sub122","sub123","sub124","sub125","sub126","sub127","sub128","sub129","sub130","sub131","sub132","sub133","sub134","sub135","sub136","sub137","sub138","sub139","sub140" +1,"methane",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,"ethane",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 +3,"propane",0.000000000,0.000000000,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,"n-pentane",0.000000000,0.000000000,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,"acetone",0.000000000,0.000000000,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,"water",1.400000000,0.920000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,"methanol",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,"n-butane",0.000000000,0.000000000,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +10,"n-hexane",0.000000000,0.000000000,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +11,"n-heptane",0.000000000,0.000000000,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +15,"i-butane",0.000000000,0.000000000,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +16,"22-dim-C3",0.000000000,0.000000000,4,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +17,"iC5",0.000000000,0.000000000,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +18,"22-dim-C4",0.000000000,0.000000000,4,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +19,"c-C5",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0 +20,"23-dim-C4",0.000000000,0.000000000,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +21,"2-m-C5",0.000000000,0.000000000,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +22,"3-m-C5",0.000000000,0.000000000,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +23,"22-DM-C5",0.000000000,0.000000000,4,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +24,"M-cy-C5",0.000000000,0.000000000,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0 +25,"24-DM-C5",0.000000000,0.000000000,4,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +26,"223-TM-C4",0.000000000,0.000000000,5,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +27,"benzene",0.000000000,0.000000000,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +28,"33-DM-C5",0.000000000,0.000000000,4,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +29,"c-hexane",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0 +30,"2-M-C6",0.000000000,0.000000000,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +31,"23-DM-C5",0.000000000,0.000000000,4,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +32,"11-DM-cy-C5",0.000000000,0.000000000,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0 +33,"3-M-C6",0.000000000,0.000000000,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +34,"toluene",0.000000000,0.000000000,0,0,0,0,0,0,0,0,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +35,"n-octane",0.000000000,0.000000000,2,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +36,"n-nonane",0.000000000,0.000000000,2,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +37,"nC10",0.000000000,0.000000000,2,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +38,"cis-13-DM-cy-C5",0.000000000,0.000000000,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0 +39,"trans-13-DM-cy-C5",0.000000000,0.000000000,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0 +40,"3-E-C5",0.000000000,0.000000000,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +41,"trans-12-DM-cy-C5",0.000000000,0.000000000,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +42,"224-TM-C5",0.000000000,0.000000000,5,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +43,"113-TM-cy-C5",0.000000000,0.000000000,3,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +44,"22-DM-C6",0.000000000,0.000000000,4,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +45,"E-cy-C5",0.000000000,0.000000000,1,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +46,"25-DM-C6",0.000000000,0.000000000,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +47,"24-DM-C6",0.000000000,0.000000000,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +48,"2-M-C7",0.000000000,0.000000000,3,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +49,"cis-13-DM-cy-C6",0.000000000,0.000000000,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +50,"3-M-C7",0.000000000,0.000000000,3,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +51,"3-E-C6",0.000000000,0.000000000,3,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +52,"ethylbenzene",0.000000000,0.000000000,1,0,0,0,0,0,0,0,5,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +53,"m-Xylene",0.000000000,0.000000000,0,0,0,0,0,0,0,0,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +54,"p-Xylene",0.000000000,0.000000000,0,0,0,0,0,0,0,0,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +55,"o-Xylene",0.000000000,0.000000000,0,0,0,0,0,0,0,0,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +57,"2-M-C8",0.000000000,0.000000000,3,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +59,"ethylcyclohexane",0.000000000,0.000000000,1,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +60,"Piperazine",0.000000000,0.000000000,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +61,"MDEA",0.000000000,0.000000000,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +62,"CO2",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +64,"AceticAcid",2.072000000,2.202400000,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +65,"TEG",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +66,"H2S",1.241000000,1.234000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +67,"nitrogen",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +69,"nC11",0.000000000,0.000000000,2,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +70,"nC12",0.000000000,0.000000000,2,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +71,"nC13",0.000000000,0.000000000,2,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +72,"c-C7",0.000000000,0.000000000,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +73,"c-C8de",0.000000000,0.000000000,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +74,"nC14",0.000000000,0.000000000,2,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +75,"nC15",0.000000000,0.000000000,2,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +76,"nC16",0.000000000,0.000000000,2,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +77,"i-pentane",0.000000000,0.000000000,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +79,"M-Cy-C6",0.000000000,0.000000000,1,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +80,"i-p-cy-C5",0.000000000,0.000000000,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +82,"234-TM-C5",0.000000000,0.000000000,5,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +83,"cis-12-DM-cy-C6",0.000000000,0.000000000,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +90,"1,cis-2,trans-4-TMcyC5",0.000000000,0.000000000,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +91,"2,3-DM-C6",0.000000000,0.000000000,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +92,"3-M-C8",0.000000000,0.000000000,3,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +93,"2,2-DM-C7",0.000000000,0.000000000,4,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +94,"2,6-DM-C7",0.000000000,0.000000000,4,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +95,"1,1,3-TM-cy-C6",0.000000000,0.000000000,3,4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +96,"1,2,3-TMcyC6",0.000000000,0.000000000,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +97,"4-M-C8",0.000000000,0.000000000,3,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +98,"o-E-toluene",0.000000000,0.000000000,1,0,0,0,0,0,0,0,4,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +99,"1,2,3-TM-Benzene",0.000000000,0.000000000,3,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +100,"cy-C9",0.000000000,0.000000000,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +101,"2-E-p-xylene",0.000000000,0.000000000,1,0,0,0,0,0,0,0,3,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +102,"nC5-Benzene",0.000000000,0.000000000,1,4,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +103,"nC6-Benzene",0.000000000,0.000000000,1,5,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +104,"nC7-Benzene",0.000000000,0.000000000,1,6,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +105,"nC10-cy-C5",0.000000000,0.000000000,1,13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +106,"nC8-Benzene",0.000000000,0.000000000,1,7,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +107,"nC9-Benzene",0.000000000,0.000000000,1,8,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +108,"3-M-4,4-DE-heptane",0.000000000,0.000000000,5,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +109,"nC12-cy-C5",0.000000000,0.000000000,1,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +110,"nC10-Benzene",0.000000000,0.000000000,1,9,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +111,"nC14-cy-C5",0.000000000,0.000000000,1,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +112,"nC17-cy-C5",0.000000000,0.000000000,1,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +113,"nC27",0.000000000,0.000000000,2,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +114,"nC34",0.000000000,0.000000000,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +115,"nC39",0.000000000,0.000000000,2,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +117,"nC17",0.000000000,0.000000000,2,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +118,"nC19",0.000000000,0.000000000,2,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +119,"nC22",0.000000000,0.000000000,2,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +120,"nC23",0.000000000,0.000000000,2,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +121,"nC18",0.000000000,0.000000000,2,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +122,"1,2-DM-cyC5",0.000000000,0.000000000,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +123,"1,3-dDM-cyC5",0.000000000,0.000000000,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +124,"1,2,4-TMcyC6",0.000000000,0.000000000,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +125,"nC30",0.000000000,0.000000000,2,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +126,"mercury",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0 +127,"nC25",0.000000000,0.000000000,2,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +128,"nC26",0.000000000,0.000000000,2,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +129,"nC28",0.000000000,0.000000000,2,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +130,"nC29",0.000000000,0.000000000,2,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +131,"MEG",0.000000000,0.000000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 +132,"c-C8",0.000000000,0.000000000,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +133,"c-C7",0.000000000,0.000000000,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/src/main/resources/data/derby.properties b/src/main/resources/data/derby.properties deleted file mode 100644 index 26f574210c..0000000000 --- a/src/main/resources/data/derby.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Java DB Properties File -#Mon Mar 04 13:30:43 CET 2019 diff --git a/src/main/resources/data/element.csv b/src/main/resources/data/element.csv new file mode 100644 index 0000000000..acb1f2abd4 --- /dev/null +++ b/src/main/resources/data/element.csv @@ -0,0 +1,86 @@ +"ID","COMPONENTNAME","ATOMELEMENT","NUMBER" +1,"CO2","C",1 +2,"CO2","O",2 +3,"water","H",2 +4,"water","O",1 +5,"MDEA","H",13 +6,"MDEA","O",2 +7,"MDEA","C",5 +8,"MDEA+","H",14 +9,"MDEA+","C",5 +10,"MDEA+","O",2 +11,"H3O+","H",3 +12,"H3O+","O",1 +13,"OH-","H",1 +14,"OH-","O",1 +15,"HCO3-","H",1 +16,"HCO3-","C",1 +17,"HCO3-","O",3 +18,"H2S","H",2 +19,"H2S","S",1 +20,"HS-","H",1 +21,"HS-","S",1 +22,"S--","S",1 +23,"CO3--","C",1 +24,"CO3--","O",3 +25,"Piperazine","C",4 +27,"Piperazine","H",10 +28,"Piperazine","N",2 +30,"Piperazine+","H",11 +32,"Piperazine+","C",4 +33,"Piperazine+","N",2 +34,"MDEA","N",1 +35,"MDEA+","N",1 +36,"PZCOO-","C",5 +37,"PZCOO-","H",9 +38,"PZCOO-","O",2 +39,"PZCOO-","N",2 +40,"H+PZCOO-","C",5 +41,"H+PZCOO-","H",10 +42,"H+PZCOO-","O",2 +43,"H+PZCOO-","N",2 +44,"-OOCPZCOO-","C",6 +45,"-OOCPZCOO-","H",8 +46,"-OOCPZCOO-","O",4 +47,"-OOCPZCOO-","N",2 +50,"DEA","H",11 +51,"DEA","O",2 +52,"DEA","C",4 +53,"DEAH+","H",12 +54,"DEAH+","O",2 +55,"DEAH+","C",4 +56,"DEACOO-","H",11 +57,"DEACOO-","C",5 +58,"DEACOO-","O",4 +59,"Piperazine++","H",12 +60,"Piperazine++","C",4 +61,"Piperazine++","N",2 +62,"CaCO3","Ca",1 +63,"CaCO3","C",1 +64,"CaCO3","O",3 +65,"Ca++","Ca",1 +66,"AceticAcid","C",2 +67,"AceticAcid","H",4 +68,"AceticAcid","O",2 +69,"Ac-","C",2 +70,"Ac-","H",3 +71,"Ac-","O",2 +72,"Hg++","Hg",1 +73,"methane","C",1 +74,"methane","H",4 +75,"oxygen","O",2 +76,"ethane","C",2 +77,"ethane","H",6 +78,"propane","C",3 +79,"propane","H",8 +80,"n-butane","C",4 +81,"n-butane","H",10 +82,"i-butane","C",4 +83,"i-butane","H",10 +82,"n-pentane","C",5 +83,"n-pentane","H",12 +82,"i-pentane","C",5 +83,"i-pentane","H",12 +82,"n-hexane","C",6 +83,"n-hexane","H",14 +82,"nitrogen","N",2 \ No newline at end of file diff --git a/src/main/resources/data/neqsimtestdatabase/README_DO_NOT_TOUCH_FILES.txt b/src/main/resources/data/neqsimtestdatabase/README_DO_NOT_TOUCH_FILES.txt deleted file mode 100644 index a4bc145298..0000000000 --- a/src/main/resources/data/neqsimtestdatabase/README_DO_NOT_TOUCH_FILES.txt +++ /dev/null @@ -1,9 +0,0 @@ - -# ************************************************************************* -# *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** -# *** FILES IN THIS DIRECTORY AND SUBDIRECTORIES CONSTITUTE A DERBY *** -# *** DATABASE, WHICH INCLUDES THE DATA (USER AND SYSTEM) AND THE *** -# *** FILES NECESSARY FOR DATABASE RECOVERY. *** -# *** EDITING, ADDING, OR DELETING ANY OF THESE FILES MAY CAUSE DATA *** -# *** CORRUPTION AND LEAVE THE DATABASE IN A NON-RECOVERABLE STATE. *** -# ************************************************************************* \ No newline at end of file diff --git a/src/main/resources/data/neqsimtestdatabase/derby.properties b/src/main/resources/data/neqsimtestdatabase/derby.properties deleted file mode 100644 index 9f6858b176..0000000000 --- a/src/main/resources/data/neqsimtestdatabase/derby.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Java DB Properties File -#Mon Mar 04 13:30:15 CET 2019 diff --git a/src/main/resources/data/neqsimtestdatabase/log/README_DO_NOT_TOUCH_FILES.txt b/src/main/resources/data/neqsimtestdatabase/log/README_DO_NOT_TOUCH_FILES.txt deleted file mode 100644 index 56df292f65..0000000000 --- a/src/main/resources/data/neqsimtestdatabase/log/README_DO_NOT_TOUCH_FILES.txt +++ /dev/null @@ -1,8 +0,0 @@ - -# ************************************************************************* -# *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** -# *** FILES IN THIS DIRECTORY ARE USED BY THE DERBY DATABASE RECOVERY *** -# *** SYSTEM. EDITING, ADDING, OR DELETING FILES IN THIS DIRECTORY *** -# *** WILL CAUSE THE DERBY RECOVERY SYSTEM TO FAIL, LEADING TO *** -# *** NON-RECOVERABLE CORRUPT DATABASES. *** -# ************************************************************************* \ No newline at end of file diff --git a/src/main/resources/data/neqsimtestdatabase/log/log.ctrl b/src/main/resources/data/neqsimtestdatabase/log/log.ctrl deleted file mode 100644 index 2c0527678fe42a6cb8806e16fd0b481aaf4c1eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 mcmZQzU}#`qVBiE|HU^f%TY)qe5OXugxJ3hL6tHvY0xbYzHw6X& diff --git a/src/main/resources/data/neqsimtestdatabase/log/log6.dat b/src/main/resources/data/neqsimtestdatabase/log/log6.dat deleted file mode 100644 index a324af27546f07424617e16f924a31083e03ddf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1048576 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∨ud01xTkZgg(=TdizI(9=%}Q8g&vU4WI+)l?23 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

t>#3}@8dxkcEEU5TSjZc=_BQIa;g++h=N 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

7)uXxjpz?c2ibFj#Y}Qn1Xc_nXK@)+@cLeD&O<^ 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 KoFoFg|NkEq_IeKh diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c241.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c241.dat deleted file mode 100644 index 80ff211738b4e9919935124f2b3d7a050f03d859..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 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 V<`DSwfyjma4^`^_(T{hX`U98gv_Jp= diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c260.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c260.dat deleted file mode 100644 index 25f81fde784105363c372eba91f6175388235f63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u@b>R5P;#mn}{nEdX-A+0X&0YhQeq(1ZH$RfG6-+YQ4@Qur682oG3I3^Is;H z&F;-@?&~635pjAyhmUg}=lW#zdQRheIg<3p*NIlvMYU^-I@&zg%Qw$kSS*vh%Fi5J zHSdNZuO#5CmTJJ{onf-wck!@^`wyH wy1wVmRobsK&Sb3DTxM0C2mu5TKmY**5I_I{1Q0*~0R(<5Fp_@J@zR0f6#Y9cqTpT@tH{d|bj(Q4xw3HM?<81yW zJlgjPFMJ!7gNPWtsu9_k*cb+14|6(y)}xdDxLjyur&lI2@SBV_*Y(%Y+rF4RM((NL zT{bbk>&;ApCT?FV+Md~|m1BVb0tg_000IagfB*srAb`L>3S6#7BYXWa|AQUbS^D;^ zzTPb)sU8`eC2I}>dS}g3{y*Qy)RZn8ZR={R_p1F;=CZ15Ynu~^Z!SSZ009ILKmY** W5I_I{1Q0*~fu99(*|@z$K1^TR&n;~L diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c281.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c281.dat deleted file mode 100644 index cfed875dfceab65004fe1b91cbefd660cea0ccb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$Ar8VY6oBE^iER>v#vwtWI0HeW&}bmRfk1KsZonnr0Ml>(Y%uf+c^G zy|wRkYxcQ4S&N9#%Z|jw)WtZ2dYsewvmA}|$K_NjOTBWDPS|Aha9w{Lt;e56kDh-j zdY4P|?|L)C=n%iJ7TuZoww7ao00IagfB*srAb{RQS&~GB8)4O?G9~wjOLRU?Q`!GItqmN?d$`hyVfzAbchAM`1#m1bdH?_b diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c290.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c290.dat deleted file mode 100644 index a85589e545d81d6ae0a080bcb44ba28d846f9987..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#F$%&k6oBEEAT@}CcmX$E-CXntic1Ia8Y;MX0YT{KvAlqz(81YBpJ`)Dt%HM$ z{0T{u_tK>Kw#r6CjJ9X7zK?ug?n1sC)A2nomGH;uTr;aI+X;)>dbkUdZ=P4TSXTDR zKXY)=xEYGP4yoDKpXqir8A1pkfB*srAbwe_@>s%c3oQ?0Sqw0MUR0tg_000IagfB*srAbd`` MER$^4q<=d<0Mo1*Jpcdz diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c2a1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c2a1.dat deleted file mode 100644 index 8e2ed6afe90b6e9bab82029f98a338a3cf455bf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$yA8rH5P;#cizFp%Kt~A`6*C}eBo?3sBr0eqk?5&tnSv>p0j7Y9ACVIR5-s{I z%49v}E?KxD-)~u`K-V?%Zx)KyfWW diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c2b1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c2b1.dat deleted file mode 100644 index 2a2969247718ad8c76b895d72b43a1f781e3cbd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$p$@_@5P;$9mTZ$e0uBoXg~t&L2Ez*=fdq#^F2VB#I9>*g1jie|tzDOH41y+q zlik|8ZkK&-m5qoPy^0apnAjKwUk`ISf0m<>{?NxX0$OL)Q~p2S$iQ4&HaeHpSnoyqnM`C})($o&5?@_{hyVfzAbbTe~jZ7z9oJ zP1cXQc9;F!Dk~8&`s6LLePa8t^Z78Q^Jmd&;g8FSW)}KnA}znkXmMSCZH?uR!&}## z3f^S{y{itU9~5!>D!r|lZ7MMq2q1s}0tg_000IagfB*sr{G-6`ur{*PFY`axk)5S) z-|F-AM3U;2!B(>JBA{_rp7Q_sMh52WqS2|y#yZAYek>iC7P-BS`ISU`aRGV+5I_I{ a1Q0*~0R#|0009IL_*q~ibGNsBpFLh?bT1nK diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c2d0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c2d0.dat deleted file mode 100644 index 4adc6e4470f86182da42ea94fe6881290c97948a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#F$%&k6oBEEAT<;RZ{Q#zZXTdlP`ZlOP{GX$cmgjaNLOb!2M?gnw6P`D!No!T zl)k3#g}mn5DjN|odOwHtG4Zh(LcN*O`MnxZ`r~V^l~q~ohebVY?!wDA&#PN3qrIxn z9A7kVrXsH@rJ7uUx zg-)XDhvrnL?NR4W=KdOJoJnrdy3Py%1Q0*~0R#|0009ILKmY**ek72|r0jG%7o!J8 Ck`^og diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c2e1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c2e1.dat deleted file mode 100644 index b37b9b254234c4de527ff90f13f4624bfa8f98c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$Ar8VY6oBE^E!ieH0*(X)2E`c&nlm7Q1cyO#0ult0)1YQB;NTSS)~-u820@d* z%U;{}x;6XUDk~8&dKWFSF|jcWz8>au{484|{c$?g%0ll90R#|0 a009ILKmY**5I_Kdp9RJ;cWW<){_zC{d@qgw diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c2f0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c2f0.dat deleted file mode 100644 index d854b4b482d64363d5e58c63e9e4d8e5633ff2ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI%F$%&k6vpu{R%!(Y7eR1yarFS6LEOX}cmNgLynu_2p1{Ssh?j8m2Kr1JTWY&H z$Uo3Dc`wZ)zpbq{lAK-d*6@Ao`(hXJ#h8tsSu2HWr!&i}(rh;@>R9n4Olt0x<(HR3 zzqD7jZgjV}8%v)e75n;{$*v+p2mu5TKmY**5I_I{1Q0*~f&UWNpSDhGJ5zYUj{FyZ z@7M8=FCD)b+mk(a%fpR_-)$f}$Mf(7jh+<3 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c300.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c300.dat deleted file mode 100644 index 2053e0105b40818ea4cc1ea3a6c1cb5edb9972df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s$K*2&3Y>^6y0a$=0qM<`c2CTypbc_HOCr5$_1qBWI zw&I-cEIWQ(WGf<0pQ0sUOvBh5tlrFNe6L!R{y3d!WnET>wrHS-dz*aozWK#6+N=7^ z?5cS;7I_}hvTr!k?^`OQ5I_I{1Q0*~0R#|0009IL_%DIOY3F34ce4NcBt*TpTUtFT zbW>fQxl5hy6k%U-nQPBqdcBAU0R#|0009ILKmY**5I_I{1b#0tkx_Zb>Nq_=05p*m AuK)l5 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c31.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c31.dat deleted file mode 100644 index 327fe5f6e1adeceb9678cbe3544bb4b3180e9833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 X0uX=z1Rwwb2>e7~Dr;YVTTNy!_+>2u diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c331.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c331.dat deleted file mode 100644 index 85ee72b31368516c6de9fbe3516e0e3229ea2755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$kdl;)Kt~BQRLp=V5hG9o5*-bqVgfc`3T8;b1Qaj@ob5PrLO`NL z-;y2s&dJHIi)AAsM!Ri^8&fyNL&(Q5oj=Rg2!CA8G_%s4i*&;#qs4XowY8Q%j~_k% zR`e|w=->5WhEWl}uQs}x`K}gYfdB#sAbHq)$ diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c340.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c340.dat deleted file mode 100644 index d99b11a3f2dfe2333989898bca9463dfb265ef5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s$K*mB8Y(Rx*8GwQbEE)>L8i0goSb&C>ozfsN105s4;lv~|p`f8a z-%*^)o#l&P7ukr2(fc{FFxxQKr&zD&G`^Q3Nq>BuX=PPZ`*BfEo4fe(&GY6K%Ve+e zGe=j=o3Y5NNyEOOr`tDFNFjg#0tg_000IagfB*srAn;!Thtt-`TF(^!@3Rnf-cA|o zNuh0Z{lJ{7bZe@y6)$tWym-^CYD5SifB*srAb%c`MXo7z5=i5{uUv--&9MZ&vF5D`EC d0R#|0009ILKmY**5J2E3fuStizH|39egYK>F4O=3 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c361.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c361.dat deleted file mode 100644 index b5c8f259d0d1fefc112f60325bfde24724aded2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$kdl;$3Fs)HqM~2|L`_Fa4M=n}luW<|Ou-be0fLqV;B3c{69N(~ z`j&FB@0?h9T~5{_V)U{jaWQo<4xt|Bbp9+xE&Xvh)yh(@T%;W~89iLrUq|Ed$Kk!} zpNih)61|(=%pf|%@2f<2X1=ZDSRjA^0tg_000IagfB*srAn=a@`@_b_O1~`pU?*;t zy?tw_*9&Q;ErXrpWh0<*Rz4N}^NsY)*=JkxqH0?YwihswSy36gj5Z}sK0!nP0R#|0 a009ILKmY**5I_Kd9|T6S@Vl>_%i{&Jf-Z#s diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c371.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c371.dat deleted file mode 100644 index ad11f01b25b6bd995142e4d731203e66b5792409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$kdn|b0v)1)ii&~>5H%AZIwU}%qoHI1HedoureFq`0?u|EIUyj? zqHie|`!3EYuZv|XB1SJe5*Je!;}Gg`PUp{J)Y2c9Gp(%k%0)WiA*0Q8{dF|9KaU<= zzbkr|OZ4t~GsCEff36Z;&wO9Wu|NO;1Q0*~0R#|0009ILK;Rz*j;EcGjec49!A{&P zd;8Wiymj?ljvvODX&o?qKH=k{-imE+&u>WE^2_ZpGNGQssXJoG(3BeI6aqEd2FVH>! zufQYpUiH{JZvo>;O{%h8k}Dcpne6V&?7#Ev+EN0i01)w~y*9-5#ojfY|Lz#Kf8Ad9 zh9B(C*z;-O9d$uN79Vt-2fnv`<2MIi7t4h|bKNfU@F&Md2up`2Uo;129*+(w0VSXW zlzO)97kB9G`J} z6Q*#&_mpqg+Jt9tkQ&z%Xx$i-%#P=#$;KwNW{mA+3rl52{5L>yBtnJ~=g>C6c%M*_rw!sH2_}lr zwg}~ph|tc1@jf9(X)^Ccza-MI#ZS+T<)0M(qH?GBg6dSiTIv1O?7B0oU6Z-=87jqvy|MB5BfdJ+P diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c391.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c391.dat deleted file mode 100644 index f1e7bc0b3b8ba6443c5bc7020179e5c8dbd39257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0yH3L}6oyaI(xx|BR%QeXk=)ox6N#lTAt98d3tMxkSU^Goq;6dp8Q73`0vH&0 z23~-LXFy^Ai3b4NX{yKsio&z0<6VDKxuC=E5GL( zK#k`tTDh8MtGuo7jf`NQ*MoU>CZhn=ciyR2`Ab199BuFI?!Y>%C2`{V#A7z;yMaBS zscTawpf(XD@B=n>87x6%7>2^S4whoTSekMJSJS|PhGO7*PD;q2uW8VLreY8?C-I4! zXc{!3r5Hs0*o%puY8teltr)Oz%zP5)GH63bF^DO31#Zn9bYNLApb3o#@pKKAp{p3A z5t%R&3^aGpg`Q&IMB_nBf=JU~@!pjEq^L*$2_OL^fCP{L5xdj j2{n#{nnd>RrEW@n6AG_F%@e5~GO`87+1_rS4j;b&j$f%; diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c3a1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c3a1.dat deleted file mode 100644 index afe412a29a421234d686228bb0c8f32bcd5af583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1y-ve05P;7qYSaI+GNUp@xQ!FV5^sQnm>AenHyM}#saqFDR)ho#3(vvC6QDi= zPrwT2OH)N9)H^y$xj1)UV&%)^3)}*Lz{3uYVv}Mul=W&3=ilqGmHzYc94ps&_yD64 z61X^C?;PE_>f=GYDDstOQR3(mPeN7}skxul^p`aiPO$+tzy{a=8(;%$fDNz#Hoykh z02}yU2JW900&eh~%Kd#0>{fgK*ISnL?LxDKErUDoH;sVW+2*ctpD*B8tcq;oWnHzc z2iprcgUfYgNf~TPyy2wf!59vwp~(`dO&}+c4)QRIf^e$CK-!@bt|3N zke|DFAKJu+YGRDknTu~jhxphirKHYXd<~18jf| zumLu}2G{@_U;`Bc-Wc%zHmqzEUliXdK2Xdl#x{BvG;i7nuM|(WUg4*Oqa?4*CaJ;%xoHWy%0 znFLOb_kTvesrs}Zt%`hYEJ_@H;6=#VBn{8gobI}z!YL-e1egF5U;<2l2`~XBzyz28 z6JP@Wi@?M4O293?Q?-par4>F8P(p zbM%KczYAUR$B~~)IiK15UFeZNRel!BFtho4&?kQ~OQTfAxy|2)L9zZts$!|F>mR_d zSWggy283<=A&kf$WI-ZjWc80=O#VEPOC|N(HvSkU`kzLf3(B0pRWX!%dUX8_ Dt+$EU diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c3c0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c3c0.dat deleted file mode 100644 index 4d061cf0609ecd4b111d8f763b15c5658bf6caa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s$K*j|HB^?!_WdLS~XebbC01_PwFagWZ(vl_U7$F=^4k8l@DkStB z#kt&BzW8;Kt%x|iA0vyik8^XfdNZeSS&t=aq3P25}@J%KlH^aKu0ZZ4idH*cWNmXd;K zoXuatqkXUN!nc7eM8xR%8j+2ujbZThFsJiJF>2|L%aK-QdgdZ+zsYEGU4I>o?RSG) z$K4e?%O<*4y_jCm#OV^ z%iiAA*XxBe(_aQ_$;%%BjkEGD|DA87Z!RtypNndu*I3(+?J+5;2b&d1?k+(@009IL bKmY**5I_I{1Q0*~fgc5iGIcwTt^MfxGuieXjZk45o7=7~Aa(&|ZxC{9>rt@dfYT=K|v1aD_WFqab$!Kw1e{GHBkAr*1 zpNih)0^OSqrWY0Q`zpPwnXM}^76>4K00IagfB*srAbheKZoe|J&@T%=*ey3p z-@Y~E>xm@QD}#+>K-rbX_gV}2!JFWS)%KmY** a5I_I{1Q0*~0R#|0;1_|R%>4F)Jhm^H*DqcG diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c3f1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c3f1.dat deleted file mode 100644 index 08acdcee31e218c5d9c3b4f62ef38fb0f42c8e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0F%H5o3`LzHwH@IGY>Y55aR$W95tsqN#?p}!a05=kDL6wJ7&rkqNmHezAhDun zDX#M!*UH;s*@}qKWi4?&bv||>A8Q&vD{ILgw+qdzb>$-caL8zL-G8;t_UGws=&PcC zIbl@l$4sIo{#?Vmp827nv4H>tAOHafKmY;|fB*y_009X6BZ1>-Z)Br43lHqXMcLb3 zL%y9zGaVTelGlTP&Zw>m?|dU;bM2TM$;ub(?#18*9@Q?- diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c400.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c400.dat deleted file mode 100644 index 1e8976f89fb63a0868c737d9434d15ecfdedc47c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#F%E(-6oBDZLa-qY-h#=*19*nUK?mdR3Dm^R)xi^ZCmCL&Ffo_&2!d+4ca%$v)#Ylsj)009ILKmY**5I_I{1Q0;r2Le+WS6z;m_3Z_e Cb`~Q5 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c41.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c41.dat deleted file mode 100644 index 43c724b83ede060aa2482baacca6634f90397af8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 XfB*y_009U<;3onzS^N6pvV6P%AQ>&m diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c421.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c421.dat deleted file mode 100644 index 65775ee7bfbd1fe9a4e81f326933d49be9138b53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$Ee^sk6u|MxGuieXjZk3gY7=3JuT%Wi;?0i0q>HJx=TKMB~qM3z0nMm7jGFn{MUt44O4K00IagfB*srAbheK?yxqp)GzZt*pZv1 zZ{Oc{L6;HW?BpOap`f8a zza_u!EMNR}k*$b0?V)9HEaKQ5EZ>dk`rfuA{Bb+i%(}@A?a)Ard)s_7*M7N5?rJ}? zx@p`^M4m-@?u|A5z9&Nn0R#|0009ILKmY**5I_Kd{}MPHcTP6?Ci}n7;;MXmrR9@E zUg-IeyS~D?{&hs>8?kdI?JewM8f{y3d$X02B)(hZA@7T5XL)>{5De)RoQ z(Yst=aMzm|MMeC&TJLJ+`&x_%0tg_000IagfB*srAbfaii?* zUqil`NHaY$I7nU{1hkH-r@}tp$k5z;w6iF)_UOTupUJY!=my?>PIC1DdIS(a009IL YKmY**5I_I{1Q7T^U?MBOx_2t3FYvf6QUCw| diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c461.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c461.dat deleted file mode 100644 index e6d98541fb79659dd82e6c495be7eda4795dd219..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$h#Z%UKu3#&M8ynr~rwMhLQ=`fQo6D0XjB-!;T{-1VoL# zB|G+=lT%)2%SJ?u_E*dNX#JQDF`veC{wP}`{Bb$e%u2fx>Bdb)i|hJpYb}2o-Fo4z z49z7(^F^7>_1V$#Gnr_gmsvf;Yg8n^hX5l22q1s} a0tg_000IagfB*sr{3tM%W!UMgJwE}e#Vuq2 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c470.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c470.dat deleted file mode 100644 index c9f2eb1cae75e19bcc6f3d1feb17572a3f80c36e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#p$@_@5P;$9(u@iO9zjr8Bm%)BU=W0tKmZ92O@b%kvGx);9s!Qq%9b(&20{KV z>uz^VZ~fe4Cn8So=g4f%ZEjAn-ppxyuSSyo_&V3hrmXhjqOLX%@#UN6Ei6~bUe#xg zu9|makyn$JeXVCWv{XnTfB*srAbHJxYTKeO1q?Nf|xkx)~GJ3eKzmCS^4})9B zKNY>pCAwF=nSOML-&cw5%zRzRu|NO;1Q0*~0R#|0009ILK;Rz*cKel)g??H1!A{&P zd;8WUUorr~3;OQZJwY diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c51.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c51.dat deleted file mode 100644 index 9a540605445639e3316c1b4d6713f56043bfe951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNOONDM6+W)&DZ5;cuI?nwBRmEeIzTYF*U#%rU`zJ>{}t1+rWHwd?vj zzV{wq+voeb;1~c5{H1M&al+Vy_3>sK?*B_~4>fQ6cnyzy7k@2))tY2r=lHpG`}U)b zUU}_rzp2|B=i-K^{(^tTqV8n$s90>{KDTweA$DjUGB9Ld$iR?+Ap=7Oh71fD7&0(q zV93CbfguC`OBwjpt5+_;_i)5(egAVHxqR*19M;DlIt9<149Oe3=A0dNZiI|^jsT(FHO7d$tP2+%_B2xczZAY z44&-8--CBF`FOvyk7o|=?8RTeyZZ1)6L@!nkE?9Uc$RRn7k?Mt(}zDY;k`{hE%>(U zHL~D+z4%kO)QfM!`+M7k?K%)Qi6|lB*ox zXI?C%!U@YDb=)Yf94{(qJ>eFs*iQo=Uts3cNUm{!i15iOGJK-QP&iQ>#!e8|u5~lO zni$FTUIC_&e4YbjnM+@W_!1?kvZ!)O-}fIL(iD66LOq8vj#WU6)&O$`$rm{wEVCjP zQAh!?G4&ZJYQkeqwmRFL{^p)kP4 zA>F9w5NArbK4+;dz=q@{4)8MN`z~gGOAm8MzFhZE#If(WoTauNmXLgf0|X{fd11b- zhh0cs<^Wff1?GKg5BrdOwGJpS8NS-u!(&GBN}#71nWtsQRev4!wz{! zDsw$9=;jkhzR3Z&7>ZaFxEAUmZ3-|UN$VkD2SVVzQwQWSbYi9W-#$VFGOkiyOAG8F zI~PznQ5w5WAp?4Z;O1h-eJ7OSTTl-6Tsh0y#5V@PO!pWFXHIQ=2xpBb+c8h7~ow-_tNka0o? zr;I0z$Ar`0QIz>7LhDUJ`-t~{N;thpX#RrnTZE|ppRJSq;%m+?AJG3d-~~ML+4^V$ zSB?GV?ppurw$US;fL8tA;JC&nb!ZBPw%(Z^Ut;Z z@5*0j{oj?p)cQYGQeX^K1g>=Qpp;JPR=P41zE?()3a!aZ>;JC&xz_((`3tT8yYiP> z|DWT#P8r3zc5RH`()zzEf2#F=SH7+Fe}nJ&j>L+|!E#9Ia;6Gp6;p*Z+12{LD}SZ+ zKUS^iut=<4TK%t`U9JDS^4I#mD}PVx|Bn0%6QkDuSss_U$jSc-VyE)T!13G|ojlqa z@@Jy;KYC>zu225XPUPgm#e6D3a*_NdUrLw#rX5S`|E~P0*8g4kw$}e$`7^EmALJKB zhBHw#{q^{|Bn3eMC<>qd{gWH2ES5HKvrK?ruupb8RPe-==rd- z)cU^^UgZl(<-Ej8t6Y4tsG@Qz+)6hJGB;v>c312FuKbnO{~h_0iPryJ`KH$YmBQj4 z?=8GQrRRj9be$lL>2(m7Ug~859;Nxtwf^tQUl>pG`>5;sH;oT7KUFEF6Ccf6?ib5& z>i1nyR=F%lu(jF?w($|>mt`b!H=_Ho)m^ZRXKH>HWx1cRAZ&9ZriSRn$9jnQq_I_? zSlzXF5#}7+`uu5-<-*_UEX=@TexCcdq*E4yZBE1j{9gPe1oe30AQcj=am;7i`FA1g z#a}_hd~}D3+!dVvw)5|S>c!uOnE6?jp{Wqi`-KF*FQ^nKGroWGQbl22M7aK^COli8 zUj&#>cP*|r8a1YInfZAT1-Z=ldbPPImhl|(Gga!@)vNW9#8CgzL%}-ijDjgBuPD>SP4uc8hq_e)*d7u=YTw~BHu5z z_VBooJYNUkWlP8HQ{@c%|3wC7zh~vi+O^j6<{eV4 z)*+#JkN0n~jy+;LAe@{qvc8>g`-IzPKcTbDULv&a634ntXorNezf$}BNy7ik9WePk zJB-s)I_LazbT<4CBJQ8}3+6xI9^W9e?-0kV2&X5E$AmV=+T3p4;Ff!Y<0Hlc!Y*Dz n?F-nqh;K5^4!QSV6B^uNa4$wk9E1Bk?-!iu{~y2c_pAQ~X-X!s diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c560.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c560.dat deleted file mode 100644 index eeaaad0a7c879372647edff0b32adb00ec382248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921600 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≤B*)#$k5FgG=V(o9lInd88~ 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 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c580.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c580.dat deleted file mode 100644 index 2379be536e29b75f296ef0cf2230755cb31c88d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeHO30Raz(*C#y#9INcsL>cNJW%7E8H2LM69b;BC?W<74x*r7G?Az=QL{?GV-thN z0AUoz0n`vThvI<;9w;8DQ8XrAz~B`xG=EihSARp6B%5ddC;#sM%;d?JH(lRRZ&!D9 zRdu7xRush!{>7gYyE?P0^@ZftZGe9kzh5-}>i_zKB$`WW;eYDEzwYpH4R8C^tF|gh zi<;?cc{_U-LZRl%Hvl_!QWO+8prDE$`=&-dTE!iv$ zYbWPI<4<^BSl<~y5zy*DWM2cP};jRs?z4;&>WA_xiqTM-X*dr`+h`?L7K9cx*{c4 zw&l{uP1(!eg2Wt^>YSJ}5(}@A*o9yicQB~67Wb@GH?L$Os?o1nh+6`phD-PF(G~zY z*lgdYsow_zI^dQzq~pT35q)m?EX%tFp#9T4UKl=m5~?2kmgwuW>5|U0JRFKB4MPq{ zA}vCyo|!IarPOJte=Au+nT=m{FLiNIAZ@4aAw>%NeQ#z^N zhusI~A$oc}VwvyiN~nyz7Dj^h#PaJ7+rGF7=va^U#}2xG2T}9YZ+zY76+lPnExIjR z3)oE1=(ePi0k&)khDii{q1&>4DZUX=3NbUTR1sJMej1%|1+g`*pwVkw!RH+^b5d$@ zW*TG`UNtkxr)-p?S7P*6pr;jj=kbLXPy7IF$7fGGw{^>UK=~)?8ryaniRjA~o7TV7^MlM@s>3(wHQa^LUNwQ_sGh|c(SrFK1TQv<9qPp z+l!g^a8hbKFOt^u=y>T7UroEP5C?gz_dE^5FgSw7@d_moEW$)#o5Oj?9~lkZ$(Smp;S8$9OEod z(h6-n41PWmDU?3(eLntUq=1fMVi6)~uL78-2R<)H#Y4!AnS*%$LfiO9!b;}90)Vv$ z+JeZBoBTV7h1xV+qG2%n*m`FgCaDf@0nR0gjYMaqE~ix;X?6KcT4QQW9(wXF(ozxl zyitw~kXDC*H$HCy3zfED>uY-tmE|J>_a8WEGa|CI&OCJh%mZ+;I&&}$IrBssXyysz zCd|P!G)*HV!9a2`rhsy>c$or{a5%&JOo4o8a%2BB1?@4V;0w<&R{^O`(LDAdpQbuXh#7tBC&Hkq}h_*$F? z*690yhsTOAXgY~u)QE+EPMqtHZV?f#EEvUUPekD=2pqvuCNZ$g5)^iv;Y|+Yk zO#PnqaJcXjSr3R$)}tqQBRrA0n%HKpB0ia`=Hn1W>8c^T_W+sM2t{TtiYI4QTVYNy zGDHv?|F;cw#wMQwm9Bp?`{4GTV*uSW;*!?C61vs$yN(Ule*7`TVYIgq&&{GdYKf z_?oB7IkX0X2uzA|4s(}=P76%LN!3F*AUZ5AB9xU{`cyx82b?dcWWk^b3msa^k&k<| z$(vgl9b>sGwC!v+?fU7d#{q3;U5}Zdin1Zff=-3culA6r7Irgc-K%SWmMlbF?T&2F z3ae}31E7^IX)E2Al!1=74Yp;F*G|fyXGx00pcKK0)yDT@zQN<7ST#1(C*3#HBikH`x$rvNC)Q zqY$lyeG~4pMzDIq0t;<-q$cmFz72$VQu~s^sl694XQ0ug_Cza2 zfx@YMDQ+;FC#j*RTo~C25TVQaei2fpJ4=dx<*II5Qk23mNjM zI}G`7Ua~Oi%j}slk2eY3LMSLg+}!nTf(u zBRF>FhK@3LN;s$1Ujwd~typQl&s3%BD#$?VDwr}rV_k*NuM*-?PEAyn8bb(Ey>ol!P9(d* z)!2#+8d}wqSVg5fwy8)u(<7}s_k5jN2c!o#tn@Cf-l!6i&QzB&=rxgLr1;SqmeQZh zkm5^bRi%dB1tM-S^d@I&5Q(lvXXwqnKO!#W>_l~`31`;@on=+*Xg9!mnyC{`7LoEk zdCT8?cOG!Enr7VKyz>*@Wc+e`%neaC55N+>_Mq-rY$ADkMcxPKu~8HN!2Sq23{Jq9o{sBq~6+ z5|*{k0aVI%r~E1-ndleF0KY))o>-wl_sgL?0~&3s1I~=qy0&Sk!?!unFx+O3vle4v zRhsdD4483`B9V-H#6ROMc}J2WuYW%F%pI5QYU_djs~&Lgf*E_YAmudVZ;LRucTH0+ zLH>UbuP&v^1-RD5cIPfiG0e?C1?d| zeFrlxyF@g2JXdqeX~kx&eS?&!%hTf|%(Fsjf;h3VFRkqsur+>sH1|TCXz-q}vlxPE3>l zS}1ju+B|R%i3^E{lnhnV-DW+5p?C>PonNkuU?(`>Ayxp+O?3V#$uAnv=}-GYh+$@hr{J3TWGn;;xLuX`h+-jCYTi$=gn2(LPUd}i=)2(w^S&j7gcKRN zP%WUPQb(!9GLy;#$5$8Yq4oxT5ucy*X{y#W=-y+;+v-5;ItBz3;= zC=DuO{t&^&c$n53dDE{=Vsu+$DHz;3hl2gBbJ9g|h@{+Jq8RWpRyx>#RE;)nDb^3uK*1Zh z`^(TRxu0)^aF3+cWVr7#?7lS!Z4c-?i~6*cP|+DYzVHAjWjVC~U9nJ;Wk>TQO94}` zz0=H}TVZfnNt)SWzi_RYErNv6GFzaJMJJotqBcD%q)1Lfhf7*3Fm@xo$57y|61xt2 z-e5pb^CrgftQe=FTWm86)2!mK3(GR1U^iBKaimZ1yhi6Mp$oDAocW|3aKHj^=1*uo zq?q}DTw&(@;bJygNxfjGvYD4DN^9_h*JyGSx-a1w&0Ugma-s;(4y_gzH)Uqzo1uF6ywZ$v_;UN0m;Bst#{DK@Ap>62oxUoO zF6tJgCQ(;$O5vP}x=d~&>N{}$Y_(FQ`p!g5-yOyvTj}*Zs4Mh6eJ$OM!nrRCIf;zF z11@9zrcaO5hePzI>+AyiCH?Lq8~h~O^WytNj@Tx5$t)OF9V>!1x!0imN~Xyw+69LV z$7W-49P3IGYR)5Cl;+%}i87~zIH=ND$606x&(1nZY-Sy$x6I0?=|)n{OC)D&}N0$yalJNJuO52ljJ6}R*0&Lx;U&X6aFt#{;i1#~W;?@3yas@K~GUX~<>*GC;|Kk;YahAoC zE9L+0P=JNCh6$}NzqkM22{*bzf@e;S)Puu|jO9L|kG=3hS_>ZiOJH7Io?Er3r~(h9 z#)41yR92{0mpgxyvkOn|swjyCG;f2qiOQh)A7vs>7qyLMebhDz;;p2A@Coh{L>Ztn z`aDiAE@D`UUG?c-OW&v>>D_hl&E#s-oLI#-muppXiZ9|- z=^uQ8^AptoAC=#faFt(xD;)qV!z1gj?*eO-$xOrwVF1mxppVEMql0Wq2oIg9NZmC_ z&|%;MF`6!+A4NzB{b=1u=tpaomGloj!TE`E0g%8b&S9Yu;W40)u9iLgeL^wrMV8AA z@XR+EE8oX>;`S7Dw*`VCsB0jSCxxt#^e-E5uP$mf+_w(@_T*JeNK_>K z%b#F0ZYq)dzoNik*M~<_Lej^9j+t2C4|zPwU69zb^`|1=fqDd>?fEacG)MGYV|v;a zgJAf(4E(baK&-aNPKqZC>wUCa`WR?iL8m+ZG-Bcm0PLSC&XKWkJkQep3>#6eZb8NW zOYJ4n{vMc-_zw4hndN6EPNr)u()U>kHoagNi+>wpDfr1QZr(mbh5fn(#$XA1hhu!C z5_S<#wr*HT`ks-9+NaKqjd&4I79AP;(@Z5c{d?lxaR97dF*Eyz(;DsXC~^j^g`HH; zfQA;#Ks=UIMl5B(YVclml5IGk+~xI$teuEM*9uYG{-?1MDSt1tSUCIJ1odx8)W7<% z`r8;;Un~2M{VN&Sc{X6{0b38)dcf8LwjQwV0nKi#1-M*grvPdocJ7WR{GEa@w|D$N hff|8BHtzP@U&MC13alg8HO4FC|9FMpshlqw{SVBjKT7}r diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c590.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c590.dat deleted file mode 100644 index 77724e8e900cfaa032a0e2106605236a811990df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 JvEKV0`4{=cH5UK? diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c5a0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c5a0.dat deleted file mode 100644 index 13ec68c1d85f013209407fad5ebea8b948e49a1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0O>7%Q6vy9wIgah5Nt^V8q^a}Krmf>Njr-jswX;rY4rPrZBm_djN^*#V0EGY* z2aa$+;sBfx9N|JQ+z=;j2qDx%IU)5>M310K+<dqiguFmrX_XK!^Cxi25z4f)viC^*C|$4&!$$Rc^3#XYUY@Cw=*1lq0U2U(hKURNz@mrD~=yg5GRWikQcW{ zvOvCp5MC=VD>hQeF*wOVK502RP8Ces-Q!1_#v zLL(Xk%W^`FS?UBGqyvEc7SuC`0CN`9DTe{`oU&0#jHm$}1S^wq*r$l=z@XtX1N4(k?*z&*f2I*fi44HvY-xn z1@N*3b=a$bS4h3_R9L-H(26`=1HRgYF*~B`z}LF4ZqpL*bsD6C@t9bpFT=Cc%cF~2 zfoHjwM>qTiJS)7)xTRhi>QVLMR{ITAtpeZZ;Qd#EN7Wi=)uLEMK-E>y8b5?_t5mWh z$Dpgc7iyc^dpn!8&7G~z8^@<=9hNw4L7zjauEA1ITl8(LuEVm%o1?aAJkKh_O|W%? zA+##L0d~`1I;Q$p?he-h*8$f7*8$gor|&>^h{n~Y!AGLMihfJeYUC5qH$7l69Mt69eJ{7&q5$F}s OC7M*{>R9->^~-OkPZ$`4jr6C99;DLo~J3LR{sEf59HhPdEcZVKbqm3;v4`kc-WD{ z=CgZ~-QT+wod4W8_AURB>%q=u@CXCt*(Z6yn+N{uv3$^O=aFcY*7y7_F7#{%KfIwm zZ*suv`JUlR2kf{dHvu;RHvu;RHvu;RHvu;RHvu;RHvu;RH-Ud^0ypno@NhQxOxf%E zH0)CQ&~KkIyT5-UzaY3}a0TJr8vzHN?Y=5|o$q1L+tO;@)16(r^ZM9kJsPAcQv({M zYEvVcq#9EbqEf9Xie{=#Y{cumAXv5=##oleTYjvra1bgUQ<63QlBY-0V!@8KvL>AB{3)^ zOoJGb224X3mXfAnj7Wo~5sXSBrcsPZqoy&8OJk;SOi1IV2~0{8rb$dmlcp(5OH-z4 z%t+Iw8O%yErdgz}aS33eZ`ci0>3MfMDPiao|=*eN#7M%f4pYtC2p zGrPsUWnZw5*?a6Q_AECI zqKVV<4k5C&^9$6q7PAeES7#nmpquB(N(|1MD6@oTLM^am3V)M4%tBg_3)zy?4EX%M+=>jHX zAY&(?-|@UZKC!Wy=^(G@+<7Hr+6qX}W}d}Ya-n9+(GSktbd|v4O73Nl5!GYl5nw1e zc@PPsOA6#Ji}wp(Mgr#;3>IA#S9&l*Cj&j9yVB}%qaLODwwGSa-j@lbx7;`pn0(`T zgpsB}+gID?Kv_Y*l3cA@%GXkO98XT%-CxGCs9gLCC1gxi^6pV=5kFm@`~ zj?EQgtTEPNFdB>|14bI#qfokon^xF7is$TUbQh)DD3=+t+@rZ+%Uq+i(quMvZ6t(5 zGX5yMo5K6)$ycIo$zQ)#zm>NIgM1*BQ*mhU6Ra=%p^QHoj7e_zSjTq5kB+nNrwMPf zH74{6e;DJB0bk{YPp4g3Ha({>O7@c*_}-H;!?!S9+T4LP@gX z_P`=~N&JeRI5K;m^nH$T)6t{HNxnE~$KFyLY4%gK{L<<5&Cqc}>t^S8#-(HEVR8%e z%kHQ;FSMZ5o-S^m^i5z~I)+pE_&SelDos^E%5SSL{{v0WMjYlNE99Tfi3kt$dSr1) z(OAso2EBpLDo&EVBn$lCED(B!;Mes~3t0`XuTxB471I!!25%J8Nb)kSD4R(m(ny*H ziTNNgA1LMnqsdxA0$OSNfHdl{`yV1}kYSSWpj|* zoJw~TdRU}wy^yh|wEpS06dpyOH<0W{s8p7D=lFprG#_#tjbnTl+$~Rd^XaKPhJbsA z8&_VdafA?BEKDriUgN)+`}=x0q+JH}d>h3rv#8EyGngvtj8@9Ru)F!P#!{SqzDCicn)VnQ0J5SEDo0D2_e69t&)C2ior!=m=o` zJ7sX@p2Q41u8@sBr}G|$kw~WudLx&B3XpRp>Ef-W>Nn7M)82j(fCm?Hr~r*jf;bYR zX>d{AX6P{#kxk6s7WTc+Pg3wegBns4aWl~6snk***vf)WsH^>BUAXD}cQ6zu*34q_ z(4PP0#+?CLxX%1NFPzY>XqG}D-JH72CS@cGNEVPRAXz}NfMfy50+Izp3k1Z_NP+(* zvH|H3(ggp%nY@NnPS(Ny-zY`_V#zA_|GTM&?=zZ48OUK8kAVM=a{A1#SP}X!1)2c( diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c5d1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c5d1.dat deleted file mode 100644 index 903e5f9ad25fff6f7c16a298321996c58b9a8d4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$J4{ni90u_3R%~zIrO-kjv<3R$Ax|ZmSYKgdAdJQ^Gccop&6wzB!oX%+9Go?A zCWP5R7Y7Dr24+l*iJb5M?`;~aZZ773ll$HKJEyld{W_h4X8=5R@(4+WC3_>7?;UgZ zzdFa2;XiW2&Fr|-2QtBjJoj?vzaEW#v)|wT%;|W~cgaBO%w4?2o|p7_Uf$_H?=xdV z)_^r&4Oj!#fHhzZSOeC8HDC=`1J=O*)xhgFdmf&;-xRFxo8VG=_P1Xd%wL@dN8Fad zOZeT5fWCL#r-F69hXwDOj$Z%TndR04_X0NXq%(6QBW_cIH<1tq+@*kP@FMV4MaoB1 zRidJZsmfFgaaDziBcZBN2_#iDDv6Y8oJt|BnxN9is3xfl232)x5Ls1&%3?^>q=qo8 zYEi?;sivqL@~UYnj}g@jHG)yqEH#RP>IPLnQ8h;uQBuuQC6rYQR2gHcMQRKc)e==f zRkci2QB&P?3WYJQxa!c~DOM;tGQ~&?~ diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c5e0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c5e0.dat deleted file mode 100644 index 4e487794bded69ff4772894b6653e9ca6d990e23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2X>b%p6vy9Yce9&K1Qd{f0V61)5WoZ!1jG=LMTCv6Cn~t)&{aq<1knJ32Y8F1 z2vkvsT9##%SD}_?d3>|f@{3yWKm~6UZ>#*KzSr+<&+N=}XTSIbXDB+Ip8j?Bd)+hL z?>~WS0U(0^>58eeT&3=$aNk{q`G4f{6dQkS#yj17cL4nug#W9s^CXuU)9pcbw(Y5V zlgm|Gl$Bu~|2^iT69MQ(8QloDRG-P(fIDGP=z-7!p$9?_gdPYz5PBf=KRaJEZq0ph?OHbJo3I%9N&leI5a~B&c}ZlfJ9uW z3bP@3dZAhhl1-WVRk`lAE=WL}Gs!m!x06hqX&~YdMH-T?|0+NQ*Pmmkk3FQDG7WW* zoLL}JOr()0NDq}zp~lhGmTL(bR3#&GO$d%ElXmw}#lTr6pd4c9hRj&ks19Rdp1}@3 z(2s$$5g;XnE_ChuGiEm~@9OL(D=3d$Xjk=TV!oM>$aSXC2AN zd5F}ADM={D)moQH({y;(;SjEWeqepyIsu9$CWf zM(KyMHij{9kqN-@d+j}nk&8_T^^tW?Lk$B9O@M!{hcj^r5+lV7T;pN}TR}Z&vqy0K zOAYk{j5wN!%M1kCkS$tDwOoIZp}yaQV;ESBz_DV&0O;48U*6W0>&bVtsfYD2sB}u) zZ-tReUv8xxvt}0Faif^aSvfse?Z0CgTVlnkAmt3!<^1CqZb5joSUMO6I#rwSq0TL% zhuYM_Xl|jk?-qQI$MKA|^^H2-(q@lgxV>*!yG(of1ZJ=3o5hzw^TMV~#{Ec~$n=#+ zj}f084*eaU(dwvo?MQmaV;RibL3~)!V+);Xb{w-;*;&7-ba1YD|?SNC5xYkU_5k^}um5Eg@0*?z+i+rPY1a&-={sB&9;5rk4Ga2aH zY0O=Z-1q=vd<$+m*Y7d)gLBSDB|UpHm{@HhocYtngqhF-|4$E8_CNzbWg6-+tpe!gMW_r{<}&1||Sh{G`%X>2AeFI2qFgRKH>X#ka{`n2PCcI0e&oI2F@z zlqUY9I*AuyI;QKWPNI?OV-$-e<9TRDpF?4BxQcm`t>R^?h;P zeMtm@8?Bsg(-4*5CM)Ia1A6Nat>9)WSJ=+kX_$&&a0^njGU$@oQs)Z46GboBU;s>8 zr-%j{4On4ZdQTV4;8sI@wBPG(5e;rbViFqy7(r1jvZN_JiDU!%)pb}B+2D3F<17bh z6aPeo7x*1kNY=Q9L^`6lFMnpQe%Zd~q&O|-9+l&M_PDF%z%#dkPMNrseCh@>J zzpeYqTnENr+Axt7?nP{}6k-oFHTd|_M0xttpoj~bjbOlIA^O4=BUA9Zevm|8xX(r? zx9f3r_vnXb7)b4J?dNQ=%b!gw$-AJ$y}MS1xVOx3`vi2{W`LJu6$ z9;mzp8ZrLQQhZxkOYv>$7s{tzQ|Ts(`BRHjeuBz_QUTsp@&6Wz&nqrf`O%an4^XU| zd`4*jJ*s3D)k!8O!cV-X;{WYbo>;8%BUSwW1Jx;ij>^l|sQgS-9#N71J5(Ou1{jyb zTWN%-1z`9^JoKtmDIL&BHBrfs=lroO5p>1AmYOhCE{KOhzRjxDY)s>C&I)*YD3mT4Ge4U zajk=H_5IeeHH%d7Q^{=<9kR7EMZNgBzTH8os2qP-Ip0}Q%n5&l9tb@UdLZ;b z=z-7!p$9?_gdX^>JrMhVBKFu$iq&K7DnCK#0tcZ9wSdO}rP=7^fMHm)2F}39|09*| tfSH(IsM29@I!6AzR6nwn{x%_!RcRGb@Gjkj4Jtn!=3*YN%y*A`_%D}g4+Q`K diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c5f1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c5f1.dat deleted file mode 100644 index 12b6acb496ce18b692d47a7c48b2a3570e065ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$*Kd|}7{>9d1=<2#tWs!!vZ0%{Ko|N`WUsPI*{eX=(3X}>nJOsCFpdyKF&>~% zAR5saL=QY55j7!-$`TcoZQ_B6;_tdIN*b*G0s6d2zkNT?kMgE>a;JG7R00U`UwnmH z!>n~vdtUdNe}Cuh>%PnX$RdAI?!O{{*xG*-;y>K`Utcx#o%TiK#5%!rNkoCKGG2?P@eCJ;;@m_RUrU;@Def(Zl@2qq9rAeg{^YXZBTuMRB?D+B^RCTh^Z6e-IY#9~o>##JvXr^}f6JQ?>W`A;<_hqpOW>-96=_2R;iZ zLdo5e3wFgnlsMtvgomP`|26;(5E70EX&@DW#?m0FF`7t&sU~PD4WXJMQW{D{B1#%Y zMIl-mPDLX|8bQS%RvJmgqM0;`YKG=g5!D(cxYiT^y z8u8KuDjsd5iBuc3m5QmhNRTE`2}qPms6@1rCR6RuUYbI+M+a#t)d5M;G%5)lrRh{h zbdqLJozPjDNp(gSX%^K5U8UJnS9Fu+P~Fg7noD&@52=*ufu7Plswa}A`BXAeqye- zTu(;8JtS@*8^b*;ZX}z)^%pmhP2nC9Ysg5r0peyd3T~jdg^Y$9ByJ^R;0BA^$XK`` z;&!qb+)!}`*&J?|_$b)|Zn*du*%EGq_&C`LZlt)AjDs5`?jl>m6^T!f@o=NXC&@N& zW5nHLTez{}Q)B|%IPqyR5pKM=hinHoLEKBWhnpzwBRjwqi~GqWxJlwOWJkCX@maDH z++^_uvNPNi@c`KcZmReq*%fY@_!8L-Zn}7o><%|WJVf?@n<*Y9d&12UUni5{W{Yo- zDR6VdBV;PvT=6KG23IN`Bh%sLiSLjZaP!4?$xOHf;&HMUT$%VDnFY5{e4osQTO@u- z=D;l$zao3XEfLR>ec+agUz2^|mWkhxxp2$HZ^=Bk72-KEA8w_1o-BYX7cY>7a24W3 z&jw*|mEtARFU~6QJJK&sm3W!-i&HIrPx{4KE&f3I#aSc%NczQDD_$Y};;a*YBK_j5 z7k?)G;%pFqA^qZP6t9wgaW;w9NWVBW;&sw5&Svoj=@(~zv<|lBS(B{^ z)<`z&59@X7dFyHGht?z3m#urPTdkGWdDdd<5Np0Q#hPf1VjKNwycA)m}riWo~CDAT&<>^YVF7bO)A`2YX_ diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c60.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c60.dat deleted file mode 100644 index 27f3aac7ce98398de3d41097fd192df4c575ad71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 zcmeHPNsJ^%6^)wd>b-kg9j& zBO)W-&tk7K#%k~nxAWSrYFjnq^VKrge`mCvD4u(G3}?P*&hCvb+6M6T@xh$`KRB!W zwb#ELnesc|HM-4fe}(c@&KRCpne|yH)0pee%{fcO!~iis3=jjv05L!e5Cg;jF+dCu z1H{1p4+DSx)6f3Mz6Ab^=l2)clW_FRl!xQ zyUH$0j+@{P=Q(%EJc=Bz$R!-|1pZQ?IA@Qrz5cC!v)eg5>bB!vV-WY*Syt=c{Q{mZ z`~tYR$JVQWh%g^;i){elpmF2K3TdN?R4hc=W}DizqhY&aTe-e%e%E(F52oFd7Qvj89j_m-0 z&|eJVc5D~zk4~X^PT@j}mXU{Ttzf|aK$9_;aW`;$$+4A6V1upPwJ86f<{WE50x)qBoQ3Gzkp6E zl|?j0;w6-i{L&-IaolU$`1Pblb7h#p9YQy;0L|1`vwLKVbOhZZ=i5^nui#$ka{<%|5jdW7Gw2cX(kWpp+$c!hh%*!Ry{=u@zefWpDL8b! z@b$tKP8JldQ$)%iRhjPoLy|clDlelFt31+;qrSIvJK%Vai zKY_-~Ghu-IG8Cm6(>LtfwdBf!9PJVV!~iis3_KhLHonh3#n{FRXxD$mZiCHnf9+rF zWw2jop9T9A`y43OKW3i>djt3DzrphQZM<^j9V}V-7W+Kdt9Z@XpJVyi9{UVqXa1t? zSJ@|Fe-E#z{Qyg9FQ8>_;q~k#_64x}?2_^6%HRI}(-ZUmGjL|doUK?aow3!oV6G3d zd%sXh20je1B8;3ejY_BR@ens96%18ATV*TFZu=OY!v^>vx9~*96MXszlv8>IJQBES z^aMBlkbVv`Q$(eFPX-buISWA6SRLk}anAx}hJRE<3=jjv05L!e5Cg;jF+dCu1H=F^ zKn(m(GVlf~;lB5^g`NLA|I3e0%>Vb@UCp^`aLynuAuibI=$xEWnH)4l6Tx z=5kzxnO}7%l?=MgW;ecR31%emG);5P1C-Lj#PNNOAyTAT0Lls(g;^e3sq|h=(Ct zmCvR00(;!lp7* zS(E{H)wnG#u{N2}(LE5-eOE!2!-DX6c(uulo}MIr264MMXlI~W)+RH`y2x?0+C`-s zJGy(2`yjQ+jI_>Symn7LinYzeW^g`sEs-Xts}JdD_Z8IAcQ;Ub-}xRY>O0ra zZojE*jCSkS+Gc1s|EcZQv^~dOfh>UUvM++7?>*|2JkC)V`_hCCm$8Kh(4ReZLw|Vn z_Qd>uO}`1CUyV0cjO@Jpe~{Zz%8wvqI1k4UubBuPB_-zG!xjitCNS9=#Z13(G_V*B zCvJxhhyh}N7$63S0b+m{AO?s5Vt^PR28aP-;GPWZ>vsX*ve&H-56ff*T0l>%69;!ZjTCx o0b+m{AO?s5Vt^PR28aP-fEXYKhyh|?ih+H6cL2BR*T13u3w13UiU0rr diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c600.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c600.dat deleted file mode 100644 index 94f0b6e0c046f51d86ea8e9770bd80f81dd83654..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249856 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 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c620.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c620.dat deleted file mode 100644 index e5a108ed4f05feeeedab9deb7e19579c772a7919..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155648 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 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c690.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c690.dat deleted file mode 100644 index 78eae9dca4775f970a5124cc98ed831ff92d236a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 zcmeI2&rcj>7{_0h{l)S_R8VTIQWWqdhBof7;)1x^j%+Nv zy_D>C=ZZJ|FsJ{t+k-R7!A@=Rru40yUdDb1KmY;|fB*y_009U<00Izzz_BMV|L&bP z%*Xa)NWQO`IQtK@d@wnF;6S-*-x+Q9{I<8h`nBC&HY?^WB2z8N$r!aXd@EH?e|=nCPy{S{A2Y3fO=^SOSfErA_+S-q#%<|(+?vJGR`S7zZhSTwCja-du3MyBmGl_M zzk3WY3z+DZH??Z?`F{`-F;Ue-$^S!`h>5BuO8$QU6ERWMMAtbD1aeOxJO598`Q3Jy z{6EaPZhcZq9I4C29f9Qk2bl#-boHQC3qJopgo&7_YNF)-hcOWoRZW!qKZ1#vsA{6? zoCX59Cy<^0*DhUM50n2#S=X&kYKbFtxws>c{Qn5EfQhai)M~-!|3@(q6ID%={6B_? zn5b%^5Buy3T1Jkb45z`TwuK>$k$>|HoL@txsx+BXzmBBar-ml3Bn+R}X5n z;Pe0En23q0CQAN4g^8G`YNF)-ComBcRZVoA(?B5i1hVu0<;KphVed^8X8%h>5Buy3T1Jkb45z`G5N2AD@QF|1YwxTc6YtN9uBMMzoDxxhIgF z|G&EO`K2)Vf8Nx89`{7mzIUfH$_R>gFGBMFLi=wR(Fk@@AMM=;&Bf>c^Y^E>(4*&k zxtTY~|F7ld6LDofo>z9s|BIMt*Hqg+qhAv*U?L`}nke}{GWBT8jikf+%)NVR z^+;>g%f}xGKmY;|xNih%yQNKIDywl@x*oS?v9y(R|KaA+j?4f1M^oMZ)IRHw|65+i z4hTR10uX=z1Rwwb2tWV=5P$##x{kmHKaSod|99QAFdzs(00Izz00bZa0SG_<0uX>e jPy*!tpg1`h1Rwwb2tWV=5P$##AOHafK%grL#QFa}8u~+w diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c6a0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c6a0.dat deleted file mode 100644 index d6b1f0efee13d83c37efdc64254ae110da59a32d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 zcmeI5J8T?97{|w#d*$rd4mi96COi_75MrJ&IPs2_i6ey9X5CxQgM1@k&K#fEJ z63|frRSF7U1qB@`h_H}A2tTB#**CelyZzbn+<5ji`}_X$-Tr6S zXZ5C1YD)i@uUT7GZJ91)dAd#4|8rlPn!EmbMlX52wRGOREa;yZeeim#t!o)&ExE9K z_C%}Q?#onNH~0Up>${G&7IrIJ8^xP;Ta9)IKmY;|fB*y_009U<00Izzz}OQwcJ7y_ z)f@UW#NXGH@%}R%Cnn1`Ehty@meKoDmy-7C$GUz}ol&O)f2&$_Qk8XQ($fpcL_?~! ze#Lb^)#h4MYHFeoOLJjO3YeyZQ(kqbeG9<}u!M+=YEqylMMQqiqj}2hCx=k;wVzrm zX0Er|nZW4k=`DobOEWstZ~`o=dL)Ze;*Acv##EcE z=I7Mei{?2-bfY7ph(wcvC?b-Lr=1cj<3vL`PoFi35mIq(Ld^(V+(ZQe*PB4&*U|+& zV$PM`RjTrXsqc8vlKU3tE!@xOn3CJyZ?82wK_`UlfLKxj!?eL z?n_giz3|ghneM4&A1#)&pQEvtF;G}m%#-WN$UJ>yzUtAUeKobiam`h>Gb`kBVjU%F zh>VnQ3}gamCs9C&HlgK=#x2kAfG9JO70r|36J$*GT)#K?Po~Dd#S)zNm@+pCJk;(WW=w z3hR4+&j0U1i6}9s62vSa@BdFsnZ$uJbsqp67C|>n5Ur z5>1jH_7z6m3GikFhyaZMgXutQ|1H6Kz#CGy=x4AWb}AINe=7nEmSF!#35Fi3H0t}`DvHkZ1>p`$L0n0rk zd(J$q`#2m_AW#efjq~pQzxgi!Yvw6{&7c4G<3E4R`tkqwlHj$dNV(w{$n*dA5e1ZJ z6MV4I==}fvC=n$FRiaD;>_>?xF{lz{BH#c@M2SI_Xb(;Sfr%%OfB*mD^4{nC`2PpU z>sn9297n9>;`TuN|3RXF676^hHWr-!KZFvCr^I33>(3Io*#5%^uy_L8PRx^kifR+5 zDYA66^)|8n4|>|))_cGfzG6AvBx7Myfj}_`VFXxY0ggcQZ62n8Kye5-|G!~B z|8LEG{-6F^faLT4F8_JyQ$POykr5c;!LIjXNzsFFb0FgXA4Q2;k0>!91LyxABMK0beSr4T}vN&@uvM}8j+QyScR`h$uQvCn2 zzQT|dQz}XJm!-t!KDS9d%21;0ZahiS`(ek;`Tr*eJ8ty6Xp#sHMzXN{#Q#4v7{BNM zN-V5~QtzPyFcAO0qSDudi=wOE@6O3_qXpR_X`?pS=pIde>#>LM+`o8tR3I?X1oHj= zM^mS+wfX;wDr+Q-4lGk0Ew-UtRqk5%_$20__@w>32eOy8IUmn-#s8l`iJB~03&_Cb z#MQx~5UsiqLM#Ku(sPy?ZY;(BM|n!TZdcpGJztJCq>+;N^*+Z(yc!hq+VD^7L>0SG_<0uX=z1Rwwb P2tWV=5Ew}U#{d5h;*4)a diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c6b0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c6b0.dat deleted file mode 100644 index 22b4089918a6be5ee648a8623b201408ae27dfda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 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 KO9hJg|Nj9DlGr@} diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c6c0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c6c0.dat deleted file mode 100644 index 51852aadca81626451138db2987a52a9b49b4c48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94208 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 IKmObQ13YTbYybcN diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c6e0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c6e0.dat deleted file mode 100644 index 2d0a9812daf48ce4042cab8c6bb191e071cf075f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 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 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c700.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c700.dat deleted file mode 100644 index 98a6542f316fc1d6e1f743821a81cf2c457418e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94208 zcmeI54Nz3q8HO(_KdYbyq9Co7_!DR_R-h>)26I=bfN^a^Bh?ax&=_c{O+o>oijZJ5 ziB6%Gi9d`{ancdZNZQz9+Q5ypK{O4qCFv+Q83${Vw91HzN!3EXy}M`kZn&_Eds+72 zYsTZ@o}c@j=e+0J`|c7D@&!TgqQ9m;k#gxPm&$^*E3Z+#$MWZEm;3y35w+x+TkkUc zGmicS(9QMcYkii9YAxZT+hfhw<+)5%OPCR#Q+;fdAn45Ps-=05b*O3|Tm%6S009sH z0T2KI5C8!X009sHf#E8aw=+xs_wel2J5Ye`*bu4w%DUfmzrV&UavE(B?+DlKCT6zG zNgFriL)T_;2VLC5wLKDxE{~G(tGXz)icMFi791L_KA$w-=#{Z}(M;<1qdoQcO-CN; zqhEGw!?I5{PFHVra<|4b+oj2UA=jMV=^i>Y2*KW zHCLn7>c)K9XN=omDpt(tJ`gy4A3a^ZntuFWZ+Gu?O*vw9M^;KwXOv5`ur~ty=xJeN zkk7kb`+ugKPs%gyNcX*7L9MH%{N`%c%m!tvHCNmQ4UFZ9q&WA+;muiD9i-iq|Gh=@JZjr>X=|f6j^sx3 zrGE9y$XCYOw^~(a8_{o#y(6Gk-lN|UidfJO)JOwEuL$;zz(@~>W$0-j0#DH7z;}VY zBQOdo_K2)9@Eybm>mvawToUkKD*OL3+5ev~l_N%&O7j25%?m1@`}5P<_9;$ zVmWXWoDy*C|D~J18m*20zYBSeR5I|V9gOeDu`J zX~=V=5+2VuVzzz$e=l|rDweZ7kEeq9|8S@nD&|(j%>PF~#ZWP~DrWxw+fXr7%&m&$ zz)^5Yz_I^d-S&@gZT$az$aAC;9$f=sw)y`^>>yMuXL}w`1@r%|{YG{kSB{v6&ub6! z|Mw#oBNuaQ#H{r|zEIW5}w|L-Et zkxF=U4T#zH`TqmhL8w^H_B@^n=KsG36+^|`s+jrzSg05(=2peb|HnbaP%*bEmIFt@ zDFMg+f7Qj9i`w}A2L-+ORB&A37pMNM%y`m@ZMEI{!#AmQ+h^CW)t9ccYc2osopTx8 z$<+GX&U2r|dhb!TTB-B+ERL9m@ZAt;Ye&f5nZG}!)TB+F(u(`e<~%XGgIbGz*i)Gr z6L0wziXOH~3;Z9kvd-qb@a4vFfRr7~RP1@8cZ zkih)^EbIsE6f!WM44D6a7&{0R%Ndu)lg#{oJmu$v^XaDhZsDTh^z?Pv@Yhqz)(Vv2kop;pFswVdR|Buk?@$#}sk9-nw!RfK85m;wN ztHa#_D|M~el&Dryp~n2bs6L;{2&fb4G|9q~bin+-fu0#QRqif69bxxWAg-@#+cD?h z`;@8k#``?lP}!-BUOMP?@6Jo>pQEua|Iu(}%v8Jgad85atU$wg8sf%fiJxEDJx8fY zn>wW>)saz4W1ghe$k_J(OiY+z{rUei0-V9X!*Z;%nzTw66%GkF_W#d_G0)rie_z3e z7V6(?v0lBd$QQhQ1w)eHP4&61opCXJ@{G07W%R0Uz0n}n46&BG4B|cdTZfl>mf2qj z?v6mLIA2)1UiTI~w&lhi{qJw1pH`1ROit>`3^6XGe#N`Hk}sYy6F|9QvwAn9RIm>{RXx)5Nh8F?< zS-M7g+{iVRKDD|!LD1bWl|sC(-n>%%TZ_A7|8Ku=U;8iVt3LdHuYR}y0w4eaAOHd& z00JNY0w4eaAOHd&;Bf@9YQ|rJ|M$3UK|mk?0w4eaAOHd&00JNY0w4eaAfPD$_@c$mUEeHw(KmY_l00ck)1V8`;KmY_l00cB8 z0ROKkPD};@AOHd&00JNY0w4eaAOHd&00JIK0RG=2w*^6g00@8p2!H?xfB*=900@8p p2!Md51mOQQ#fiy400ck)1V8`;KmY_l00ck)1VF$e37Gu<{{cm?GKK&E diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c71.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c71.dat deleted file mode 100644 index fa90f2a94977405cf5c375c3ebac1f0b04a902f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeHMOKjs*6g|#Mop00hn|^0tW|&eSGfvX934hmdJEln-Y^SJfn0`?Oh>u_-b_i*f zY+wfx3nV0FgZ7~@2N9!4%in@z{`d8FqsB9KOs!rpT17g(N0kPoX(j9Z&5 za2}%};bsQ4{!^n{Hz;iY>Y>$=w z1Sb1qcl^MySOz9B6>{I`wp!aIIZgMBQiZ0foTi7hVs*D#DVA$HbvaF`mFhHQYjT=S zp%8jk)3jrIEtdBJro-$lx5Ycln@F+B0@`i$MpV zUg?#)UaK$fRF|pTLuu`z!tK5O+8Yd9ETugl=*_WCOQG$R8AzeyL4gE@6p{gqWpPQ- zBU7Xq%}O(+T~rEsmiAiUSR; zaScu5T3=RwN5lzc2G<2{@?iWAd3$^zpUJ(nKG z$O0+@6H}GvC3XSJ1LI*4eGyf)#jA=l7eldxmD7dPH=6;2hYG~Y^1W=?9- zCK}X#QOQ@NO#X(a=`{K&o&@xql;RlA5Hr8yDIoq4Op=pQift)}KE$(hh<;h3hQ?u$ z+>)rF@1)dz!4uT8fHjgIOHF)B+KF9~{k6}f9$!em+LF}7zn8vZKd3%8r6zet+D{%y znfMtuNPZ^!XX~<$eix6EyoWmVxh8!jiqcE=mXwJjsn?&A%w)foSkk^qlG^dnkK2C% DuEotB diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c710.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c710.dat deleted file mode 100644 index 418551af24f0adf82605640daf0b08079a1e9281..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 zcmeI2xo;Fn6o<>hT#St|i#eD3GWUHMjA=&%2mt{Sh=gDf67en}5=Ufq10x_J*-ePh zE)fXev)i+_CkH#V$(z!*c6u56ApijgKmY;|fB*y_009U<00PsV!2Yvuj+j5}$B=wq zGjaCsYx!Vu{F?*is(oj4yXX1W{k1qzkC_wZxblywMPsIH2h)6e;p>ftF5QaudX!4z zn^v$=>y%(M-M4BQL9|My&GdX7FcA~oby>^e^h*I75C}`4@v$^+zdZaFx0P3MJL630 zitXd2Ye&r8q`&(UcOFg3|5a15M|xXE(>ee9<+RFjYN2T@CG>03+dVaA0TbN<*0w65 z_W6r1a3YKH< z(~rgm1aeKFaXwD|wb$-0z{$8RJ&jv4Qo50R@ctK9*M`aey{zjNDOV*u2J-J7ear$T zy5&u+8h!qsg^8G`YNF)-eoVwfRTCxu&&EVdR5j6cP6L756Ufg0>;AlRJ52r`U|qL9 zsU?oo<>HP&^8XxW0TW$4sMUhc|G!`&CaRh!`F}1ZVxp>vlK%%W5ffESbe+>cAom2a z^Z)6Id*{RC|9PzI)+e>Zk-A*m5lH@@&n#e~s|U4O@cDlMCSszhiIV>pVj?E0nke~y z5hh}ys)??18VKZ`Kz9Cr|Ec~eO#WZYx^8_^OB|`o#T|j<|6iE}Omy|2RtrA=FTq4i zR5elZ|58lEL{$?d|1ZNtOjI?|bxs3;+!M&o|9>|gJPVWmm$R;0pVSgZ>T+>MAo+g< zvw(@N9@J{V=l_+Mh>5BuO8#GkiI}KrqU8V8n23q0Cc4gPAdq_k+4=v!Tj#Ea$^UCu z*R4-#i6eEnxFeAKzm{3RL{|@LwczvrI!wewRTCxu4`CuEs+uVIe?2B*qN<6ma~cTb zolAKXqf!Jfpy*bq?R~Rmy0_B$^RRf1x$4HpjHb$|8K%XOjI>d^8aQ`#6(pS zCI4^1L`+mQ(REG(f!q_w&i_Nl-d+xq|F^QPTc6YtN9uBMM2Yya(p-0d8ax-s|{}1No z6LDpqo>z9s|09@a*H~TBFRpYL{l)Ro2QL3l9!+)fQ~Rt#{%?65J0Ji72tWV= z5P$##AOHafKmY;|=sE%y{+;)M{NHuc!hj$E0SG_<0uX=z1Rwwb2tWV=K?#umgW}|5 b5P$##AOHafKmY;|fB*y_0D-O~5a<6dcauWN diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c790.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c790.dat deleted file mode 100644 index b385176c0ba42a2bb83bd122ba021fa67c012763..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c7c0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c7c0.dat deleted file mode 100644 index 80ac760071e98506b18717dbc18c486367cc1ec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1e{54#6vt1y*Y>Sl*}6@NWr09sKQb3(V4^|cvFd(USXUn=Fo)Q|*cd<5F&351 z4UAzLi4K^!C5xzuxAB~$_jAwpp8JxwK?49-@J*MMSv#{v6U!T8=wH*X>%ykPGR)NTYzlp(<2woAGLM;B z&y6xmS}HH|IGc-HeVJJo$-kW^%`9V11~&V#hzkXT0zv_yfKWgvAQTV^2nB=!LII(G zP~d;0z-MV)qp$@R9DBY`1$xx>{-cCg{pcV zhj}I-<&j0sdmek^49HrEj~pk+N=8eEb<3PWkbC!g*L8Vp=MBq9<+b;&~m}_@TdTn|%&yaMm-H`T2JvATJJY-qB27baIdl62ajQtHJrJ7E?_z z6b8&{(q60Y!>b=F$qH@n+U*)PtY7XO8p>>4qg*n?TpVSOql*45>fAd|wzs!;AnLiM zfnU0QkD`#_z|P>;3)Wy&pGI1u9o-u-o8MXR$%&u(Ac>#fgU2Lb-eFzSge|Koz~O2 zLYJ-N=Gm%eW)jxrq_UpEz3M$szP9n3@@~TpC36TiC)i8F`P6p$DT=qZ!j^-^aE`Q7 zsTvE*N@REjRe_+;GuEV%o`(^%LLG}NSLUJjc%^$m=)#+j!a**QEl^Ax39JEjifCj~ zk7D^@c1_}78%h%|gsvY1;1kk7{u_AM`a&KirCK5L+R5I0nn6dKf2O&jcXN z?Y)v)8~qZeSNU;5WM1Z4y0D79mUEX+N74+SR1R{JTmiiI@M>^idh1c1{#M_1&HJeD z)uRn3u!8nmvIpnyn~n&3aOI^{y?a1j_|PAt2VYp`f;5hp!X#r`GcFk^hLS07K~#9X+#d^FYfo}rR-j!EVxNACbUIW(S#Gt#t=;bo=mD_tjT zV;f?!uV7&VzM;4GuEt)7EfH?woD`Z@t(K9i2 z@128x{`x-Nu~~*p+#3%GM<^f^5DEwdgaSeVp}>Di0sD4X2VnO>4S?-kW&=Kk diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c800.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c800.dat deleted file mode 100644 index ee79820f7ddb911262268584a556f4a015dede8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81920 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 IN6#Pq3+2@RmH+?% diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c810.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c810.dat deleted file mode 100644 index c30b66b5ca580b6d030913cd6d606017dd137fc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1183744 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≤Py{FfSwjH)|GD%3c>n+TZMqt1>Hh}r|1XVKl$v|mers20X>1>W z>mW;78{s2tj~FCN3T3lfmIUDnqDcMQfuy*v6?~(AtT+jShz0?`Gl`0m`a!@rv46j| zIH_yu<)l?5vIU?FCgl2I-`WFEhV=lz{#tF`8SVifl+A9s{to_H7C(mv05#b1^h3EC zfY1X14;4Ne=2!Lr&^7gP5?2e|NfQ(SiU36*s|d)S$TvbA&hqVCO*Jh4^wrY;Isg9> zUp?nr{{O{@|9@G$Vicqd@ek4*0N|vww^v$WL6ScJpe&X-gWT;vs%)Kymnwxv!SO(U z@OcPbBQj@fiCJ*o6a=wG^-W0V_||#gaOc1&kQdIE)(ZcB-(nUP-QaSIUMZ&g|EdhG z^8p1q4t`ew4ya*TR=hQB=$_dS{(tA?q5WGw9s+^NWx=*LHiRdL!~d5K2%NrPQ z`-iUVHf;z#g#PNWLriQeoLYj&^dmNaa_gUO*SDl4U(tnLWc5<8_ z&)Tg!KbuqS`5*8O?H8}R89D&7cAH@>^X0#~7g&4mlr?^*-g?9MGVT;#f1F<){7qr) zwkY44x6L+nH~>$b(XvYF;CNUvS2uZqPmB8qdD9W!67C=P6%7sDd8qiA<7=NT*$%Y~ ze#tYKP~yMN*&+PtZ3=X1D)-VNEL~Hk*~}cK#FMaBUEZv(NgXoovz09(Ih_`Sg-$vl8}Gi|@ZC-DuOD5SeB%<(aK^OZgTM=UaFyP}wd zjbV`knKk*#WcQy{4C8FGl$Jbzzs+L5Dp2)9_DsHf`WhoNHG`ZD_XB6=>2}kqXzvWy ztp^ZM8#vBZ41E2m!k5|ri@7fxPg@Hgu-t#Xjw6nBPCaeT*0%7|w5El@cegc#k9$6UsTWUI36_JiDZ8 z>Hh|=|Cg76H0SFdG}IrC|AVB1N@;7Ov=#}H<*|o=yS=A9kXoAwO+lbq3Pks)bD50_ z6`T=zPCfA~bzIW_Fdq zPUl8dgBDfrs?%-%;`i{tUFfOKJC3fyhLapa#cwElIs7%gU5^-7_GXIGFZ;6?DKyctdOxj=yP+2)D9UZmQe@m9N9XuVOc!xYDl@scehAPwW z`Kx6%LSFbo7fjZW@|eP&!46krlXGv`oeCx()MY*29h$NzT+QL6#oDRYp0T+KgbLM| zajw2ARI{|nq=^x6sgP=|3Su@k0INpyK9e}#a_`|hO;`DwLjx9eE-Ys4(&x4&jQ)g& z%ItTfRsH<2sn|n$I8xTepzAZ*=8WJi8Uw%+)~twG``#_th26zF!3azb@aXMWcBJ$$ z;>I&ZQfEp(YpZiNyxGlfqPQM6vx!^TS{0~b|3CVKZLI*UN!^`l@h+^9_`VE0S%2&F zy@Bo;bYCT`Z8G*@lc`0$V3OuP03S!=hmZ=r!G?sEexDq`+9`u^$AeTFv*)qPxW!Xv zK_B06x%NNbzcvFpWc~?VOcN9ViU36*^9X?c&-wr3U-;{B^3$2@(f=!O>;HZHLxlBz zTWh7GwbD*x0;s^QB{_JiunnM7{&IU-rHuosdr)NPU5L00c_CYgf>@7TR04}Ta~Z3) zk6}3obzDrY3T4qS?nSU5>mKM69vLuONJZEssfmsD7+8 ziFhES+eR*mu3~XShH?A8Hh}ODt}P05W->_$OLL<0qKrg)#eZ@6?giD#Mx&^JQP& z)&ZTo4O>nsc)kD+VD*A&@RMS; zRoKup>{v-ahfF_W0;nhh-91Pd>?hE+N~N^7Q#y%gyCO^5j-DzEZ`a?iVG9;i`T#G9 zE6pJi#Jea5pzSEId^b@?8O4ZZ+H|q<%@$?NdyTtscR+yEk){yiJu7 zK;Y>huCSabHHkm1s!$e<=2umQfId?87R$ z0J$hdg-DEwzLlh*f)IJQ28W_}{eOtb*_AhZ_5I8fkMG_)l0IQ1G1X|vLEqo^9UGLI(m0ICv*f6a?> zu$!Pt?hM!RGYOG}q87&2a$W|5#C%sii>mtp3lubr*FGdb1G9?`-<$u&^8fSV?x}t^ zL3E7SKDB7G`8`Zw=-q&=BLP9Mh>6JbBf5WO8LRsT1qTW4|0<=Ut(MnTWmflh^0dbA zdMilm*5p#lq9ac3guDUOIII=O0RjY;m<4-Dn44rB6ZzgCmRO-I8fD3q(4y^hi|+iC z?^NG3{?0sX7hW}FeEh;UeIV84eCPHrW99;FAKn=2TljylK<1i1$?`>&TBEgS`%px} z#wT~7Rdai=NBBW1z@1m*xQD{8Xi`wx#;E9{?ZJY{R*&uV- zHX(+e%fMH&JC&6k0NLFZp+19XyQH!YKQXKnyoSs?J2<06atD|MLe;ucnV@ag5BYZN zvAr@p!*%O^vgRr=*%pYue;}^&co-1ohpR*`X$&T46f}ditVlmI2hjGjb(g*VXC4m| z@f=8Sx4Ko(HKL4e}@|Jpafc4o_?i`Lw4E9QN5|IheyhjqW|&-i^|F=vV3 zt`45hHC$8{wM1N=Se{fL$)Ape5va!DZG~x1-C$Qav#kB%iBYA&fi9*%Tzp-n{&2muiO}p_Ptr-wR)h6I^3_Ag#iu8RW z{%mm?Y}nkx;a5SWNsNU)X_C0J>03z(<(8_U2ZhwHxRRt99@(5SM4HT&CS*dI%$Dbg zW|&YPFHH*nEp?A%-hW@3)QySYO-hUaRj>l>6V^MJWo-vrTPvlFgHk10{ukY$K<@84 z7V!0o6Vsl$`&>fVp53uaS9#!o5F9E6@4Hv`u7`;jGqF$>wcg8Fc*T^BVqKeojTam@ zknKqwYk?B)MZ*}kn{ipZ{j@C962h-cXvvW`=Z)tr2=#8-e=Is3R;idHrjPPHFMI@2E>~9VK4)|q zmXf08=N(5R-u{J_l9-gY&yA*5@BxMB!vE~A&u|z5ot;$X-5sw#hl+_`y<* z5%Myq{PzIwSJ#h0hu>~_{aU(iX6Nf@hg-Ao`u T=k-t7oMk(xDV95A^zbQjpBz6 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 PK!5-N0t89|fBpXgrB^OZ diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c820.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c820.dat deleted file mode 100644 index 589fc2c2d563cd10737c2256060b113e8f5548b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeH~KS%;`6vv;Zp697071>aFO9Zu8IW!b%mqANf&>GwzD%BZsHMurAG)0X?gG~() z64V$p8#o3*5JXc%Q`Ecrd3ESnOH1(HaqoV<$M^mDIQ?K7037)0#u=VByw#a`YYfjH zO=}5v{F%Xw#vlAXNK^S8#G#1tn2 zM1Tko0U|&IhyW2F0z`la5CJ0aj|g1%R^MO?2R85bBIsA`?zR=od`rT`qcY;Ce}@GL z&pc#c1)sF>fQJVcMjcq&vys*EikgKWbR}g;R@QSxRho}QqaY-PZr@+dQ->hL>pkjT zC4Gl6)EOqQ8XUO6DW@lF^$~Gq^Qa-(>b*?w1Wc<1tyIiqRofy1KNJyJ5tnt50Qhi` z#bT+TNz3Cnu@tT?J?%tripCh{U$|JcY~f=Cc<_K*DdFnSCJ#*-W-IqIxyRby1zb|b z7K3`%a81{hpLg@6Q%lcNNt{-OcdVLQu^d~TdehuR2M&=B7NL)Uxidx27MaZ>F!NPo`_rOI-T}9v+vYFRPI>#sB~S diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c841.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c841.dat deleted file mode 100644 index f03a9c24199b92db9c7de2961ce5f8b83ba552c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1y-LJD6ot=>vY8~CXeU?&3oVUkDMAQXiO9k>c3X)eF32j_*;x7n_WKyJh0kE& z6ZimDHhO20EMc8kS;-lgGc)(hU%u{6a0@_5wM9GaIc-bhw`0=(s>?#Sb9f@oM5+N+ zn@LIzm+`M9^tnfy)8{JQ+RFvD-lb7_>k!X+cc!`bI1G^h36KB@kN^pg011!)36KB@ zkih>U@c4A6a3kN;D6?{Oc{aYv4)^jLOHct!hhq?SI3Xg91hMRPJib1kWP=^M zRfO0Vj?vdxhAv7wsgI;JN|5@Nq;g>v5+DH*AOR8}0TLhq5+DH*AORBiTLS6;YmzC) gR`KEV4eQdMIh|USzu}UUstv2y$3=C6(dWzVH#PW5)Bpeg diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c90.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c90.dat deleted file mode 100644 index f19fd833155606826ff8a6c3e7affd25ef92bbe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266240 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 |J|Kne&ub(>d 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 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/ca1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/ca1.dat deleted file mode 100644 index b386c1a7ac445251d08018f65276708201fbbb76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221184 zcmeFa349!BaW?+;+`6p8vhK^WEL*Zio>Mbpd)XdIBYV8Mb|l&BcUXhyc>dbRog153~TT-%zN zr@E)Qy8C^q>aABjLMdg@KfJDI8Dd!}+|MiDqwQbo*S5DW`R4+Cax?vlDAnYC$)cUp z-#fiRnTvgT{F%j3=lu#@{Kld0(f^Lclxm^>r=9OyAn9ZMa<(4t{^|YSvw&v-&jOwW zJPUXh@GRh2z_Wm70nY-S1w0Gf%`A|;VQ)Y^oPLzc@BdMa(O*xy;Ags@Z~Gt+BI@o_ zPgRj}B;cZ38n#9BEfu%^LBIP7{eM6G-$zF>rV`n^Bp_muK~jW*mULASaxpoY~@ zHilPXGa8Gn$D*6-nM^dfv7V(rV=MIEYCIQ7==3saNxGt0Aci=@xrRMr^C1QL%PNA(o~Za`u^0|18Qn-E z647iXi645&U*wOD2x zDsyzwS2m;RWJaHbCSQuD=@&K(mo+sg`(Dm3j3qb8)EUwg zCnIMQboR6Bo6${rZ6q@3)kG#ns8DHsrr@0QEyrn8_Ptrj>gwuxES4q*j*qWIQ>hq^ zWMh?;tZig7<7?{~MP^!Do=BwVKpMB4xk=ggG1ZYykdCGUGDj_g}^4s zt;VD4*>PN|^vb4JQi=7fHc1>mr}bo6$3A7Rn(9c!NXNddU(=@SHB%kqInvRFv+cav zmA%e7*3y~uT6~qgjZW{ye@jsL=i=j}p=(cBLx-|ASVL|-m0XK&;zERjTwDWPh;vZT z(^yu}sqE`nL2@;lN+sy}-AMrsA(0^s-G|E>_A2`Z#}F&2wY9_s-9s*O2(UuW*4gM% z_Kk7{ID{k)p>ME!2tCTaKWm7u!?zN+)^@f64xxX`sd|}a5yZZ?(O`DC&sq2XvtS;MfhA8w|B9=CoKZ7pj! zr0hqqhPAcLOe#ggkIPvyiTmxbt%t{9Wj~TNh^~q{RYL=zxl^V2?E_I;9KwQhxIEe2E_P zVf(dZJ$1@{0_(|U<0%@*@qO=-ddN7F`Ng^A*@;4ljFa2C=thGJU$QTCJMdT7W=BiD2J($cksxuw!F9TqO-)ahv_ET8VYAQ{`7#gIJxTK*f6{UD=^^Ni&)hhd`a!oXtnLU?3dy0#(Q}dAPe~JsR~3QuYjz1teQ|NxB{tup%&=b=kb1hP@N(99Cb>m(6GvrydN}JpTj%BUdDcj!2kToYDBfntzPL>ac484|*@CVqgc|Wv;kK M!YJsUAs^Ug1**j#u)3 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

e|d=Xbl9EW{QaCaX1IM_har#%5dC+g+>_#^zes zJ+d&M>N25+k6fssi6T9X71d^~VF@cW~;2dFs5;g@QBJ5H{1 zvbqGx+LYdO;NWoyl65J)>tI^1Ea~G$&w$h6H8Oc~_o%`CXABqv#(*(k47@8Ci2W4W zIQF1-k{p4*Lwm=jpy6XaV*hV2$DUdXcOagI>hAv%#}A;tpnoTKC43#R?=Mi}@iH6) z|F@Wp_rJpN9>nAxppqX%&cp?5C%7j+@o{X&e~xU40&hQzZGQ_KhrTBm`wEV*?|$z% z#RE7J(*IEYJ@xQ_m4a8tRU$=u;X-G9#Qf5w0@UJemx9rzL|ZZ@%1pY z`DXTuy4SD>L~j7>LBl9vT&itw!No4~>b$R-{U>jq(dJHPTlw>>Hc>C;^d7FiDXs* z>0m2MRQO&&zr^@k+#+#>4+Iv{7NjC_wQ9jHYvH==#sDys)NAZ4E$ zq=ZR@q&gci_~=fNTA9LorI1O59`pu6bTfi)lzJvN_+1hFHmPfJfzMQ1@J&+Mq=M50 zEgzkqOobt-ZBl{hlM`vnjm7yY`K!1{Hp|OdRdAxcSe>C>9BRd>0G*L{v}(~)U1)m4 zH(RqRG&%J2xv932T9CLEEP5PlkpeAM7BYA#%T&2pEY%mdPP4F8Ug4_3hnEhOE4ARm z9Rq&bGzR`R81PHbtLaUMsn-$xLFnY`Bh>3695*VIalWUvia!k53WS7xaIXx6i^^=vx2( zhxkt4XE@gJJAIq6?Y+VA36AGDw)FqwM`|a!^#5bt2q6w!b>@}&f2gJUY4j&at~>vK zCV!Y#avmSWOw={||0!2T7yjf1F#%LqQp)s{qzC-ub}<3;Fm&Nh?hq3|55pg$$(>>X z=wax>pWG#r_<9)TWG8ov3!s8gCB)TzuyN`=`GJ@Msw_~mtzQ1gtzrzQpuL;dQO2DN zUKXoh1&L7CoeW+P^I!#u&@hq=ekXpy3KF4tBpJLa7Q+e>p)4X9ye6)LDiIA6x)x4A zf?tXEph|F!CipltG5tua2vr^$?X?@H<6b&=RQw1Pnl88Y`VEsC#g9-yueW|fGI&WG z3RNm1vui~GknpTH6{-Z+UkShuo)hz8g~@OW_`&nyX{<0AZUaAfL8kv#m<+dqAN*Q; zj}<1v?cfJ5iWQHz>hDQ<})7!0I?i(;BMg7Nv&!6ord9KpDZ(!o<=pE!bX*`$M~#XeDi zS*k{>2LSzDaZp^*A!V1vL~%ujoIN8xiYq!K?R(;-xS~;nax{6>$k4uF3>X8(z`KM2 zKY%j#`w){q=J9y~4>Hn=>hQ7U>f7lt6`hRar^|w0#uB-o5rLf&&HY!1; z-RKKpJJFcr$?bEg`0qqxvM0A+`~c@8$CP$1str(~sUf~X9p8k@j=2=~1J_uDdy#i4 z=fBBYCuQ!%G3x$5S*CGPKA3W;E*7__~J;+nt@p}FF>PV3dkAnJeceqsWcV-9= zf--D#Sr(w3VM>^w48tz9`<)ruL=;^L`8!gyiP-5<#NU~rMZ|WO#RArQgK|l z>Q`OE(FFTMRDGaA(cAeP zvDBX9d2MqYb(C5jQq5qQ)bF6Um5EIXE{3x#=uop4@XO7=u@8Dik1jMtLy^mdC z@8E(rMcW_YxYsL@ckowi_n+r@mg6>jzwh@P&tpXZ>iX8(fH7bU7z4(DF<=ZB1IBX8(fH80b88H2S1Ie^h#(*(k3>X8(fH7bU7z4(D zF<=ZB1IEBAWx(|RDm^iFSjK=cUX8(fH7bU7z4(@4P?Od{|zM5QW*or zfH7bU7z4(DF<=ZB1IBX8(fH7bU7z4(DF<=ZB L12>QX=>Pu!g&Wy} diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/cb1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/cb1.dat deleted file mode 100644 index 7ad179a61b47c55baa7b16f157cdb5111b87f72a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143360 zcmeFa2bd*Cbv9i0&dg0SvpcgpX(!L@?u4Dxx5MqeyDO<@1|%VbNCuJNMv-$4#$Z51 z12&d0h-`Ash-_m6#(<3jA{iTO6Z~Q0AKL%6%HcoyTVq*ZnH16Q$uj6a(|_j_r~dPH_~nuKucXvSR4Ip({(m0-&*Mt2Qg_oOFTnrl%=wQ)L>xguh5yo*Q+=xML|oRd z!tZlgZapp=P~m^{sTFmsRSO)~a~oS$wdQYin|^nzN7#*Xjg*t=0B%8w00e z)1nH0#HM!3bz7F#F`4?YX-S1YX46g^cVsnugX!p@*tD#||76ofy&YIp*V3l-W_7C_ z)Y{Tef!A>Dc7O{W--=BuD*P`tb!!bPuzcKM=Di+VjZFtt_!Bm**1W1!Z3c$39+{3! zhgA4eHuZz5*Rq=YbTV3abSX9+R^k6<({{audu^HSb-Eav9#G-W*tFiPIYHG&2jY88 zYo^IFEqqYzqTSFHn|`MecrG_nMprC^*T$zEQM);|b?QNYn>F=`(K91pRPE;3v}U!c zEyr#eu6SW3KIy8npc7=??DAx6dRXoD%URowhkk52>-tb^I;M69*wkuP z>p_*qXy#eRtFh_0+AXkY$87{St79--FU6)4YPZOyw%tT`k_)bHxk015CgB5 zcH61qISy^crju&7#HKW!1FI1=Q`%S`or+DT)NYwggKE9e^6GrS8GT|f+>LFIsND+N zb{j#*a{Q{{W|t;n(`mIk$ZtyL%y^o?+qL)CYk^)1^je_T0=*XKwLq^0dM)t(M+*#m zUyb27?_~MMBnRH3P65<@iex{_{J)Ssa1lxMWp!GqzBb8xo=W=GN#<_Pbso#*?3b#Vx#yA`;N#>U%XPQ}HiY@{cZbJ5@UBVx-+!~RQT#FfF)514 ze}q@$7OW*3L|H&w&0j7+&Ra#r!XZ&2uF&Xf*0Aug0JvW42rlpPDO+LA%-t zJkJEVO5xL0T?~A?>w0wt&>3eK3@=reXoGqc*q7)28L(k^S%v#z(Ch%BdrU}Vz}5jr zg;$(+h75y)J1V?N4C)OhuwvAf21iD4Nw?RR)b#?ZZo)4kwhFHngTSv^R*c%y&MSP=At1;lB@c!DO5dbx|3}|S)uEK}un{X_v8kpeI z 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 QF4TMnUgI1`6hCbI139s%2LJ#7 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/cd1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/cd1.dat deleted file mode 100644 index 4a855fd78e517be8d8c2b524e3301ddd09809ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1J5Iwu5QhJCz;@mbBrZTf2S`vNq2L5CauO5U1vKd?kdOe04hqVgfF7hC zL`93l9e|mQH?o4^0BBb7c;}y;UGLY;7#9E(Jv=OJZEds0#IqXBztS-y|LTSmIitq~ z8fKBA!^!`1RP&-+E7zwJJ+qe}rul0GXXlr0qD zP)ax)cr2AsF;Wyy@+zq6ynYe{euo!TQL|uUE;kp`tvc!Mc)rnq1l_$+dtYZ_$lWq6j?l-;xZV^td diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/ce1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/ce1.dat deleted file mode 100644 index a17614041b545d977d70685cd38b95998a1f1829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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�ZFT-~1A!K+^O{@WsX$TERxL_f8BNTW zXF@Dy1CF7s&Nu!4T3c-pIJLG~DeE2`{G_cW@PSD8&NtdjXLuIjbWBI-T>P~Y|6-gj zcVf;Gie72My#NS2LzvwT#98C7I8@r5DEI?>VpMpVvSv{fC+xIQK@{8p3V5&a1NL4c zc@U`x?tjVPPjT8|9rc>?w)$n;@rw$`ozvd00uJw-J}P!j7g0I!LnW&5AyAb6gWbH3 z(rzzuHJ(*=W-OMv9q$*F;n%z}{Uhtix_$cmi>~_;Czg5@*L_u3-BTHF-vI-!-hcg` zdltp*kM@65_8fjjz<&%Yz@%}qPog&q?>)O^{re#(EsO?xb&Y5ku^ z5pLQO(=_cD9>OPN)2ho#(Bn4%8Jc#(G)>!nwoz9%?Z4eMVNKh<%P7rFTT?gpwAg^Olt17fW_Y zsk^56HA2Qwkt$2Fb}TahXtKWVR)>+bL+}49vZ~8U4YFiE?id49?#Cx0`f3w zvE_n`jMCg&iIO!2TNKorjdB|558c{Os5<}WQ&I+MWA_?Rr3_r~O#>=xw{yxDI5CmV zbV(V0c`}e_etn1x?9}`JPZ?==|HnNijI5oV20Cu+IpqrtvZM^`oIp92fu|y5U?=VW zvkZJSS_XE0%0u{7DFey!IAnmVKFGkluzr-Q+DoXs$!uxzp6$RTols75GYS z7Sx>+R#*1)u5qKT?&%-7$uO4g()*uZl|7v-KRw9OT@L^%v-GPGEZy}#D8elLdNfO4 zy1*mv>yo8)KQW|PhPqO8uw-|UeTYl`; zhq2|QA2CX^q}7*D$I%a|*0b<|5`3xN|JM}V2qj3{%nQm>FSzy1w>nIetR?BWP_O^L zZb<%5+`2G&E^G_XQ&)ZyAkvR9i(N?mU+$)_M|9JLcc2J&)3>9$>B5hC2)`}6sbStp zrLk6)K>P|}wd|$~e-%=9sT*r0TXazwenr=P*_x2L%SvLcv@}B9^6Bbo|EH#Tc`Vk- z8XLbt@XGFZ*}DzAT0DO0t_|ysmpx^aX7N}XdoA?^eyBU7etg-VjB>0W8|JNWVyz^c zOUm$zDZ(7Nw)xf&{dm!N1^`Xg&)kMEvM##RD9vOw%p(^G{TNbm(d$r-rR3WYQgRXX zKTFB?qNU^_t^dC#rDWZ#=kpuP7ccdQ)ph@p-(bGD�@}@^iN_j4c;y`{#R7$2Epo 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 z;@bJ2jeDV&Qmzz{ZtPBMvx4&6xMfT?cJ zJqM|}y4@J9ZYnJQM*<{30wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr wKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsK2*G%C50hYelLjV8( diff --git a/src/main/resources/data/neqsimthermodatabase/log/logmirror.ctrl b/src/main/resources/data/neqsimthermodatabase/log/logmirror.ctrl deleted file mode 100644 index 2c0527678fe42a6cb8806e16fd0b481aaf4c1eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 mcmZQzU}#`qVBiE|HU^f%TY)qe5OXugxJ3hL6tHvY0xbYzHw6X& diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/README_DO_NOT_TOUCH_FILES.txt b/src/main/resources/data/neqsimthermodatabase/seg0/README_DO_NOT_TOUCH_FILES.txt deleted file mode 100644 index 2bdad06127..0000000000 --- a/src/main/resources/data/neqsimthermodatabase/seg0/README_DO_NOT_TOUCH_FILES.txt +++ /dev/null @@ -1,8 +0,0 @@ - -# ************************************************************************* -# *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** -# *** FILES IN THIS DIRECTORY ARE USED BY THE DERBY DATABASE TO STORE *** -# *** USER AND SYSTEM DATA. EDITING, ADDING, OR DELETING FILES IN THIS *** -# *** DIRECTORY WILL CORRUPT THE ASSOCIATED DERBY DATABASE AND MAKE *** -# *** IT NON-RECOVERABLE. *** -# ************************************************************************* \ No newline at end of file diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c10.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c10.dat deleted file mode 100644 index bcc67f803e6712d597844086990e4205d1ba0e02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1-D}fO6u?hH+1Bo(9az7|@B;2k2?i&Q{y~0eUXvA zaQ}0-{!q_6?x4kwtf`UH5*A+=9cH`})AS$jzKz<2^IXF=?|(smNrB&nDe+;=h2tp} zQV{_nKm>>Y5g-CYfCvx)B0vO)01^1N2)ujWlOVu54F_jw9~SYn`qwRI%>S`DjJzU! z81o;@;65=x4#DJ@l0U66{Hkm)jzKquRUZuXj zRj$`6u>^kKxQ4296?0czYv98~@4Of36svp=`&k_JUJ)F-z1Tnb3S7a<6WQ=% zi3BlU1RPdmxP^zcsYQ>3*LBen)!N#tJ=?84holT?3|Wmrf({p0rRDh?HoK@7SyR`z zZ7GUk8-=`Cu#2Y26w}cZ-PBawHY`gsbGFX3V%9FIx{-Bk^wbK)oaHzL)y`{1si-=( zVi|>;qG*igbFAoa%T_fro7Yv9>Y5g-CYfCvzQ|AT;h3^|;Izrz{IK4ek81_R||*g%;E{P!Ea!b6n(aDM_S Q?i=BL1J)u+4eeY17p#lCMgRZ+ diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c101.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c101.dat deleted file mode 100644 index ed87bd2a9f6b945d77a0b4b81c75e6241f68b78d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1J5Izf5QfJ*cC#;p#1#-!7Ixw|v4l7RqNdBP6C`RtqN72gp{1ec98{E)D{%ul zxB-mq%_?HUZVehs89V>{@#E_}fhz!D__(&_W5>s4sPjz?$6vGdL;m&k1Tz=-L;%~h ziQ(e-zO-$&W#5ioKZ4$v%M1JO*fG&qq~&|RW^~h%A&CeO0U|&IhyW2F0z`la5CI}U z1c<=@B5?nB&EOKxRNwE1{wlt;aLSDZB?z4^mJDtonim3ENAr*Cdp?5$HVrDPmv*HG zR|`0X)0zL%D_E3x#!Pn&_Fz|7p#=smWNLVolqpYQlW^gh$&D&f1?%W$k@pu>UQWaq z4N?o98EtrKY`)-+SkL<>RvV!zG%WY`pzrGsoy zL6|=tXSuX$m45(3?^ila@>tka{vnKlUzKGpG;ToZif4t1xs_=d_7j(hk)?3^8O;z= zM+Arf5g-CYfCvx)B0vO)01+Spe~tjtfPcJM$H&S=nELU9k1t+%^6?PP!|~4Ux;x*f C!EjLk diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c111.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c111.dat deleted file mode 100644 index e568304e52a3eddcf60de5bfab685b83b51196c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0ze>bF5XNUO-d(&uqT(ZnR)Lw_P0oN=S{7f4$x2$_bx7 zz{J3|^E86vb4S{os(z_K12I>gaIfE32Tkr{`9 z(Xk0IY4KWYN1+9eGnD_6LRu4rG%z@zS}DGoolen_(OTC^nT5_IB}T)`F=50n5jqif82!m;ncKI~=I6js?nsvt44jEY1?p^2n&W@aW%lNdHoEqu}|tx}~j zh5D(I+Dwg1Og>xD`(i-)BGZ|Tv+Oth0EVQuHnu8AslJi%EG=ac>7=T!wa)V>aQzHn zRMj_0s)9Ul_1Eb~FeW{2C%2)Ze%9&7Fd@CRI#vp|iuFsWQxnQOND!B^u!u}hDA&)V zM$7{fU;<2l2`~XBzyz286JP>NfC>CL0-^`_$6J)-r_RG8&F{%SQ)EH@2+phRO}+Wq E7u6MUJ^%m! diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c130.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c130.dat deleted file mode 100644 index 1f7b454a5d5d3e3e113f94de8a182631502ed4c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0O-{ow5QQgIsVXQxJ67xvT?N^W6DJa9KnPYWQ#&~UAhAJQfE_zH0+&Htf?Jfa z)3l|eIRJW&GKt?jk2BxSp$8(0`1WHE;wZ%R(B{`QexEPKhP-up#hJS%d(@gHy!p7D zY^Xk!$Up)C5C8!X009sH0T2KI5C8!X0D=ES z;N|TxqI>SCJ>MVF4$lt$blK)N62lR%JdVCrvOjh6UxZ7(Xm>zobn2Y6T9zsnGAm-8 zmvx*bCXIz3#u(=k>3wEqtd&L8>)Q(@t(uu!I^ApKk~TL=OI!E)CZVLx(j-^H^;)@P zu5}@lD0+SSO-WrL##E%efL%g7q#`!rtuYUkgbzIN@ diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c141.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c141.dat deleted file mode 100644 index 38b5cab2ee22f7fe0889528af518f37ec3839eed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0y-ve05Xa92+Vl(Y5PVD)cH%g(gphav#0pzlCj&DeF(9!pva&G4b1*S7R^koV zcmz1xO%>77&Y-iDf1JC2?DKCs!xaE9eB5YxZF_A>oo~i){xuyx!oPl=VCDj!2wcQOw9K+c(gAKedto4HLP78KnTUen53Kudpyh_THC$UMmaKq$A6{&(XbhF6&iz+Y2 zVuS{%1<#B&JT*3-^GB@f{bQ?*P!$@M`@7Kderx4e$s%@s!&P2XJWaARte<6>wTX1~ z^q?Qsk4IT9ty<;p!@&EMPLn(qc9nks!{AqCnG1~tNL}%)Ffq3>EkiwVnHX6LSI;mY zCM5zyfCvx)B0vO)01+SpM1Tkofxkz9X~2e=wY^qOVdCcxUSECW+3NwEhx47@Jneh~ D3^Z_Q diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c150.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c150.dat deleted file mode 100644 index 77707f8e7c1db2b2cd53b1a2cf9b969263a62738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI%u?_)25P;!1L@pOZC!tb_Xe3IWK~xgaXcS5bp29PD3~!+jiD%I1w9M_@=D4Mx z5R!kBz1^GH+)lo3a{Z z`}?WcHJyrWK9$Jj^?c1cBw;UX@pIDm0yC2YI|L9w009ILKmY**5I_I{1Q7VHKu_w? zg`G<&F#W&%Nj^96mQ&7){@*!A009ILKmY**5I_I{1Q0*~0R(ANv1_DY57j gO8@VW5I_I{1Q0*~0R#|0009ILK;T~ldfoNr2JGG#>i_@% diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c161.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c161.dat deleted file mode 100644 index 31b316ed32955b12ee05bad8a13da2ddc442ebd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI&F;2rU6vpxAvLQK`)QWEFcj@#e%MUlCP7(Hw&le6pkQy5Qc+W+$HN4fX*NJp;ps6;ly zB%_<_{mQm<`}_U(x>=Px%N53NdKv7AZ0WUV=49vUOiR@wt5ZM#0R#|0009ILKmY** z5I|tv1ddN1YMJT33IY4h^=wS=_xGj%kw&gh5!NxAbZblq=$YTpE&lo8jFq*(MYaKmY**5I_I{1Q0*~0R#|0;2#Aha?m_& zT7Q0Y^8ckv<~!M5zvX|wph!Oi@U`^o{`e-K?|IqA6c9iF0R#|0009ILKmY**5J2FM L0x|y&$2X7PxK>Z_ diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c171.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c171.dat deleted file mode 100644 index af99e5ad8ad4d010c90a0e63f8a27f713c06f5de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 ZUE{rw_CIJ~769!3MN!l5UHjRo{{#Pl$$ diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c191.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c191.dat deleted file mode 100644 index 2676a9a2def8522e9ecff34c11ed604c6e5bd167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2ON``J6^8$MblLUnp7%48WHQNwgoc`QW~OJ7K)YPGYn*o3j_sP6o*6Jq9t&8Z zkdY7)3gV$G!w%RX6eM;C1T0v<1|+0N2o_NkA-13>ipUBn3W9U4t8TsQ$?e&JTvFY3 z``Vw+J@?$l`CYgJphRE(RApI{ zC_GSjpzuK9f&U*5{PBKV!zrip$D z8>P3>v!(BiYgv1!kR={Q^t~~zeN~<%W#XT7FwqIhxUhmpaOU~$xsAC_GSjpzuK9fx-iY2MP}q9wjjyFmiQhW=;avWI1CLV8_EJN0 z@_*C}O8>tzoBoe)t*E?un)FZecgpgO>S6-Fxqklk`Hl4_Hor(&e44;tdhvzLO;Cd zq=t?@ByH6|#PMz*9BRvI_OG7K%opnyBfi-Nup2YN9?tDPu}a9M&h)VGv=|kJbI<8jdX8FD1gw42h5iAL)Xz<+{nURyYZ} zN(V>v88oazG4!vBIm8-{=_AODPz0`J&ofqWJe!fFb{@f@vD#_bJEI`sS+i$FYSOFJ za6+H9fpeL(#Pa%y@VNIA*B>NSXkT%t=|jIieUgEb`cJxy%{@OU@%(F+GZk~&xKICq zr*Ja+feX+UE-XQFmns^iw(IxoP*|~WecOtC8BW_2Q#BJ8^+`0om=p?EQ18v4ShlX! zv8j(bfn$uKi8b&eho}1O&>u!|=y(H;b!l7!m-LAzaXf=KW28hjaakWpv(gyp3U3f! zQHHhfls<(f?J*@9^%h###?$(su{n{5rxfY=4xZ7c(6Y$p#33!Q6cF4d30cKw^dS^e zz1)~u!)NtL6jMyfiK%_q+R|qo$5Cc21XXW0PPauI07ea4mOhb!DucKXREB}Ao<5Vh zam<{LD#OH&lHL&Md4^L8rTwhrYy#k(OlZJ7bgl26dus^K z?~K|_d<9tf0AHf=$MhZ=D+&5ko`g*=q2K1?>i4ll%FoO47zDj&{}W$RdX3MN1T*mwUx{CHE$+Yq>RmoI-(`;RW#*ed;%kgw zfqn>Ynuw^pDQh2OTJu|c+k1s7}C;{5}|2@CJUz$5}NwgD6_k8vhVebUKrN z704xWS|)#7Ac=|0hj^Li^{+xHfxc~rad1rXhe1e6#T3S?L^(?!$TjN$oJwJRC%XG4 z-OLaSa7vX-GGl&D-Q%?y1Z7p)St?NEptVmS_1Gem}5+I={Yx|23!3YC!P z5YVq(WEaVZY-UIfdQ95F#tsQ+bFzVCwllC!XAZAyqg5R>)2}YSZVD=90D+ za3l?=5s3oX^UxaZ*XOAgi(x>W%xxA!LCdUd(F)0rh(*D~hi9VPC-voYjY^E+qld*`~>5k!Ipi zecC>(rh}qS>*stE>-dB|=O_-RoIr@3#ENP1qaBlH%W=TIHye0NAEz2A&6-Xp%4JPF zu1`~28^^n9xz2cG(JLjIqbH+Q$?0YbpVUVm!hy8ip%~CWrA0pWeOH;;#=1Uh$%js# zrW0B~7$<$$naNX%!@>ji=mGN%0?M)f!e#w7m*yWh|2MuZ%PwcswZF>pHJM$z7}A*y zRt;Kb;Zg?vY4~*fGM9}X@LkO}ag(%zzwtFI-^AyryukT+^&Q-z@^#L}>pz!IJjmBq zdt6rDXMW{}vUK@O`2*&Zf5P{ccjPgoE^t~}@^@UJXMKaOEd7*z(T_%1stmW-!qR@3 T^Z$;u0MZxc^8faq-+TGLGX_~= diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c1a1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c1a1.dat deleted file mode 100644 index 1fd602bef91717fa651efff81da3e15e047a0f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 X00bZa0SG_<0>2TM%F-89r%Uez@u)7| diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c1e0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c1e0.dat deleted file mode 100644 index 761408d3b3483e2cb3bc4d3d46e37c5e92d2a255..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s8gMx)9XsIY^8GsoOEn*EoqGJIjUU*)|)wt@6|}sAD0WOtjp>!ZW>r~9~a-eZ+^K-&Z<6h zQdnN6BCjSb=Z2ns-%=rk00IagfB*srAb<{9 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c1f1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c1f1.dat deleted file mode 100644 index 78d701f45559f9fc67104563ad350118d55c794e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 W5I_I{1Q0;rCxNLf!~V;?yuASIbS~8Z diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c230.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c230.dat deleted file mode 100644 index ce84bf09c659dd97e31876622bf324671850ac8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4399104 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∨ud01xTkZgg(=TdizI(9=%}Q8g&vU4WI+)l?23 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

t>#3}@8dxkcEEU5TSjZc=_BQIa;g++h=N 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

7)uXxjpz?c2ibFj#Y}Qn1Xc_nXK@)+@cLeD&O<^ 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 KoFoFg|NkEq_IeKh diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c241.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c241.dat deleted file mode 100644 index 80ff211738b4e9919935124f2b3d7a050f03d859..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 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 V<`DSwfyjma4^`^_(T{hX`U98gv_Jp= diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c260.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c260.dat deleted file mode 100644 index 25f81fde784105363c372eba91f6175388235f63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u@b>R5P;#mn}{nEdX-A+0X&0YhQeq(1ZH$RfG6-+YQ4@Qur682oG3I3^Is;H z&F;-@?&~635pjAyhmUg}=lW#zdQRheIg<3p*NIlvMYU^-I@&zg%Qw$kSS*vh%Fi5J zHSdNZuO#5CmTJJ{onf-wck!@^`wyH wy1wVmRobsK&Sb3DTxM0C2mu5TKmY**5I_I{1Q0*~0R(<5Fp_@J@zR0f6#Y9cqTpT@tH{d|bj(Q4xw3HM?<81yW zJlgjPFMJ!7gNPWtsu9_k*cb+14|6(y)}xdDxLjyur&lI2@SBV_*Y(%Y+rF4RM((NL zT{bbk>&;ApCT?FV+Md~|m1BVb0tg_000IagfB*srAb`L>3S6#7BYXWa|AQUbS^D;^ zzTPb)sU8`eC2I}>dS}g3{y*Qy)RZn8ZR={R_p1F;=CZ15Ynu~^Z!SSZ009ILKmY** W5I_I{1Q0*~fu99(*|@z$K1^TR&n;~L diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c281.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c281.dat deleted file mode 100644 index cfed875dfceab65004fe1b91cbefd660cea0ccb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$Ar8VY6oBE^iER>v#vwtWI0HeW&}bmRfk1KsZonnr0Ml>(Y%uf+c^G zy|wRkYxcQ4S&N9#%Z|jw)WtZ2dYsewvmA}|$K_NjOTBWDPS|Aha9w{Lt;e56kDh-j zdY4P|?|L)C=n%iJ7TuZoww7ao00IagfB*srAb{RQS&~GB8)4O?G9~wjOLRU?Q`!GItqmN?d$`hyVfzAbchAM`1#m1bdH?_b diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c290.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c290.dat deleted file mode 100644 index a85589e545d81d6ae0a080bcb44ba28d846f9987..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#F$%&k6oBEEAT@}CcmX$E-CXntic1Ia8Y;MX0YT{KvAlqz(81YBpJ`)Dt%HM$ z{0T{u_tK>Kw#r6CjJ9X7zK?ug?n1sC)A2nomGH;uTr;aI+X;)>dbkUdZ=P4TSXTDR zKXY)=xEYGP4yoDKpXqir8A1pkfB*srAbwe_@>s%c3oQ?0Sqw0MUR0tg_000IagfB*srAbd`` MER$^4q<=d<0Mo1*Jpcdz diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c2a1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c2a1.dat deleted file mode 100644 index 8e2ed6afe90b6e9bab82029f98a338a3cf455bf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$yA8rH5P;#cizFp%Kt~A`6*C}eBo?3sBr0eqk?5&tnSv>p0j7Y9ACVIR5-s{I z%49v}E?KxD-)~u`K-V?%Zx)KyfWW diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c2b1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c2b1.dat deleted file mode 100644 index 2a2969247718ad8c76b895d72b43a1f781e3cbd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$p$@_@5P;$9mTZ$e0uBoXg~t&L2Ez*=fdq#^F2VB#I9>*g1jie|tzDOH41y+q zlik|8ZkK&-m5qoPy^0apnAjKwUk`ISf0m<>{?NxX0$OL)Q~p2S$iQ4&HaeHpSnoyqnM`C})($o&5?@_{hyVfzAbbTe~jZ7z9oJ zP1cXQc9;F!Dk~8&`s6LLePa8t^Z78Q^Jmd&;g8FSW)}KnA}znkXmMSCZH?uR!&}## z3f^S{y{itU9~5!>D!r|lZ7MMq2q1s}0tg_000IagfB*sr{G-6`ur{*PFY`axk)5S) z-|F-AM3U;2!B(>JBA{_rp7Q_sMh52WqS2|y#yZAYek>iC7P-BS`ISU`aRGV+5I_I{ a1Q0*~0R#|0009IL_*q~ibGNsBpFLh?bT1nK diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c2d0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c2d0.dat deleted file mode 100644 index 4adc6e4470f86182da42ea94fe6881290c97948a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#F$%&k6oBEEAT<;RZ{Q#zZXTdlP`ZlOP{GX$cmgjaNLOb!2M?gnw6P`D!No!T zl)k3#g}mn5DjN|odOwHtG4Zh(LcN*O`MnxZ`r~V^l~q~ohebVY?!wDA&#PN3qrIxn z9A7kVrXsH@rJ7uUx zg-)XDhvrnL?NR4W=KdOJoJnrdy3Py%1Q0*~0R#|0009ILKmY**ek72|r0jG%7o!J8 Ck`^og diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c2e1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c2e1.dat deleted file mode 100644 index b37b9b254234c4de527ff90f13f4624bfa8f98c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$Ar8VY6oBE^E!ieH0*(X)2E`c&nlm7Q1cyO#0ult0)1YQB;NTSS)~-u820@d* z%U;{}x;6XUDk~8&dKWFSF|jcWz8>au{484|{c$?g%0ll90R#|0 a009ILKmY**5I_Kdp9RJ;cWW<){_zC{d@qgw diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c2f0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c2f0.dat deleted file mode 100644 index d854b4b482d64363d5e58c63e9e4d8e5633ff2ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI%F$%&k6vpu{R%!(Y7eR1yarFS6LEOX}cmNgLynu_2p1{Ssh?j8m2Kr1JTWY&H z$Uo3Dc`wZ)zpbq{lAK-d*6@Ao`(hXJ#h8tsSu2HWr!&i}(rh;@>R9n4Olt0x<(HR3 zzqD7jZgjV}8%v)e75n;{$*v+p2mu5TKmY**5I_I{1Q0*~f&UWNpSDhGJ5zYUj{FyZ z@7M8=FCD)b+mk(a%fpR_-)$f}$Mf(7jh+<3 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c300.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c300.dat deleted file mode 100644 index 2053e0105b40818ea4cc1ea3a6c1cb5edb9972df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s$K*2&3Y>^6y0a$=0qM<`c2CTypbc_HOCr5$_1qBWI zw&I-cEIWQ(WGf<0pQ0sUOvBh5tlrFNe6L!R{y3d!WnET>wrHS-dz*aozWK#6+N=7^ z?5cS;7I_}hvTr!k?^`OQ5I_I{1Q0*~0R#|0009IL_%DIOY3F34ce4NcBt*TpTUtFT zbW>fQxl5hy6k%U-nQPBqdcBAU0R#|0009ILKmY**5I_I{1b#0tkx_Zb>Nq_=05p*m AuK)l5 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c31.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c31.dat deleted file mode 100644 index 327fe5f6e1adeceb9678cbe3544bb4b3180e9833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 X0uX=z1Rwwb2>e7~Dr;YVTTNy!_+>2u diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c331.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c331.dat deleted file mode 100644 index 85ee72b31368516c6de9fbe3516e0e3229ea2755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$kdl;)Kt~BQRLp=V5hG9o5*-bqVgfc`3T8;b1Qaj@ob5PrLO`NL z-;y2s&dJHIi)AAsM!Ri^8&fyNL&(Q5oj=Rg2!CA8G_%s4i*&;#qs4XowY8Q%j~_k% zR`e|w=->5WhEWl}uQs}x`K}gYfdB#sAbHq)$ diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c340.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c340.dat deleted file mode 100644 index d99b11a3f2dfe2333989898bca9463dfb265ef5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s$K*mB8Y(Rx*8GwQbEE)>L8i0goSb&C>ozfsN105s4;lv~|p`f8a z-%*^)o#l&P7ukr2(fc{FFxxQKr&zD&G`^Q3Nq>BuX=PPZ`*BfEo4fe(&GY6K%Ve+e zGe=j=o3Y5NNyEOOr`tDFNFjg#0tg_000IagfB*srAn;!Thtt-`TF(^!@3Rnf-cA|o zNuh0Z{lJ{7bZe@y6)$tWym-^CYD5SifB*srAb%c`MXo7z5=i5{uUv--&9MZ&vF5D`EC d0R#|0009ILKmY**5J2E3fuStizH|39egYK>F4O=3 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c361.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c361.dat deleted file mode 100644 index b5c8f259d0d1fefc112f60325bfde24724aded2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$kdl;$3Fs)HqM~2|L`_Fa4M=n}luW<|Ou-be0fLqV;B3c{69N(~ z`j&FB@0?h9T~5{_V)U{jaWQo<4xt|Bbp9+xE&Xvh)yh(@T%;W~89iLrUq|Ed$Kk!} zpNih)61|(=%pf|%@2f<2X1=ZDSRjA^0tg_000IagfB*srAn=a@`@_b_O1~`pU?*;t zy?tw_*9&Q;ErXrpWh0<*Rz4N}^NsY)*=JkxqH0?YwihswSy36gj5Z}sK0!nP0R#|0 a009ILKmY**5I_Kd9|T6S@Vl>_%i{&Jf-Z#s diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c371.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c371.dat deleted file mode 100644 index ad11f01b25b6bd995142e4d731203e66b5792409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$kdn|b0v)1)ii&~>5H%AZIwU}%qoHI1HedoureFq`0?u|EIUyj? zqHie|`!3EYuZv|XB1SJe5*Je!;}Gg`PUp{J)Y2c9Gp(%k%0)WiA*0Q8{dF|9KaU<= zzbkr|OZ4t~GsCEff36Z;&wO9Wu|NO;1Q0*~0R#|0009ILK;Rz*j;EcGjec49!A{&P zd;8Wiymj?ljvvODX&o?qKH=k{-imE+&u>WE^2_ZpGNGQssXJoG(3BeI6aqEd2FVH>! zufQYpUiH{JZvo>;O{%h8k}Dcpne6V&?7#Ev+EN0i01)w~y*9-5#ojfY|Lz#Kf8Ad9 zh9B(C*z;-O9d$uN79Vt-2fnv`<2MIi7t4h|bKNfU@F&Md2up`2Uo;129*+(w0VSXW zlzO)97kB9G`J} z6Q*#&_mpqg+Jt9tkQ&z%Xx$i-%#P=#$;KwNW{mA+3rl52{5L>yBtnJ~=g>C6c%M*_rw!sH2_}lr zwg}~ph|tc1@jf9(X)^Ccza-MI#ZS+T<)0M(qH?GBg6dSiTIv1O?7B0oU6Z-=87jqvy|MB5BfdJ+P diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c391.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c391.dat deleted file mode 100644 index f1e7bc0b3b8ba6443c5bc7020179e5c8dbd39257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0yH3L}6oyaI(xx|BR%QeXk=)ox6N#lTAt98d3tMxkSU^Goq;6dp8Q73`0vH&0 z23~-LXFy^Ai3b4NX{yKsio&z0<6VDKxuC=E5GL( zK#k`tTDh8MtGuo7jf`NQ*MoU>CZhn=ciyR2`Ab199BuFI?!Y>%C2`{V#A7z;yMaBS zscTawpf(XD@B=n>87x6%7>2^S4whoTSekMJSJS|PhGO7*PD;q2uW8VLreY8?C-I4! zXc{!3r5Hs0*o%puY8teltr)Oz%zP5)GH63bF^DO31#Zn9bYNLApb3o#@pKKAp{p3A z5t%R&3^aGpg`Q&IMB_nBf=JU~@!pjEq^L*$2_OL^fCP{L5xdj j2{n#{nnd>RrEW@n6AG_F%@e5~GO`87+1_rS4j;b&j$f%; diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c3a1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c3a1.dat deleted file mode 100644 index afe412a29a421234d686228bb0c8f32bcd5af583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1y-ve05P;7qYSaI+GNUp@xQ!FV5^sQnm>AenHyM}#saqFDR)ho#3(vvC6QDi= zPrwT2OH)N9)H^y$xj1)UV&%)^3)}*Lz{3uYVv}Mul=W&3=ilqGmHzYc94ps&_yD64 z61X^C?;PE_>f=GYDDstOQR3(mPeN7}skxul^p`aiPO$+tzy{a=8(;%$fDNz#Hoykh z02}yU2JW900&eh~%Kd#0>{fgK*ISnL?LxDKErUDoH;sVW+2*ctpD*B8tcq;oWnHzc z2iprcgUfYgNf~TPyy2wf!59vwp~(`dO&}+c4)QRIf^e$CK-!@bt|3N zke|DFAKJu+YGRDknTu~jhxphirKHYXd<~18jf| zumLu}2G{@_U;`Bc-Wc%zHmqzEUliXdK2Xdl#x{BvG;i7nuM|(WUg4*Oqa?4*CaJ;%xoHWy%0 znFLOb_kTvesrs}Zt%`hYEJ_@H;6=#VBn{8gobI}z!YL-e1egF5U;<2l2`~XBzyz28 z6JP@Wi@?M4O293?Q?-par4>F8P(p zbM%KczYAUR$B~~)IiK15UFeZNRel!BFtho4&?kQ~OQTfAxy|2)L9zZts$!|F>mR_d zSWggy283<=A&kf$WI-ZjWc80=O#VEPOC|N(HvSkU`kzLf3(B0pRWX!%dUX8_ Dt+$EU diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c3c0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c3c0.dat deleted file mode 100644 index 4d061cf0609ecd4b111d8f763b15c5658bf6caa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s$K*j|HB^?!_WdLS~XebbC01_PwFagWZ(vl_U7$F=^4k8l@DkStB z#kt&BzW8;Kt%x|iA0vyik8^XfdNZeSS&t=aq3P25}@J%KlH^aKu0ZZ4idH*cWNmXd;K zoXuatqkXUN!nc7eM8xR%8j+2ujbZThFsJiJF>2|L%aK-QdgdZ+zsYEGU4I>o?RSG) z$K4e?%O<*4y_jCm#OV^ z%iiAA*XxBe(_aQ_$;%%BjkEGD|DA87Z!RtypNndu*I3(+?J+5;2b&d1?k+(@009IL bKmY**5I_I{1Q0*~fgc5iGIcwTt^MfxGuieXjZk45o7=7~Aa(&|ZxC{9>rt@dfYT=K|v1aD_WFqab$!Kw1e{GHBkAr*1 zpNih)0^OSqrWY0Q`zpPwnXM}^76>4K00IagfB*srAbheKZoe|J&@T%=*ey3p z-@Y~E>xm@QD}#+>K-rbX_gV}2!JFWS)%KmY** a5I_I{1Q0*~0R#|0;1_|R%>4F)Jhm^H*DqcG diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c3f1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c3f1.dat deleted file mode 100644 index 08acdcee31e218c5d9c3b4f62ef38fb0f42c8e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0F%H5o3`LzHwH@IGY>Y55aR$W95tsqN#?p}!a05=kDL6wJ7&rkqNmHezAhDun zDX#M!*UH;s*@}qKWi4?&bv||>A8Q&vD{ILgw+qdzb>$-caL8zL-G8;t_UGws=&PcC zIbl@l$4sIo{#?Vmp827nv4H>tAOHafKmY;|fB*y_009X6BZ1>-Z)Br43lHqXMcLb3 zL%y9zGaVTelGlTP&Zw>m?|dU;bM2TM$;ub(?#18*9@Q?- diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c400.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c400.dat deleted file mode 100644 index 1e8976f89fb63a0868c737d9434d15ecfdedc47c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#F%E(-6oBDZLa-qY-h#=*19*nUK?mdR3Dm^R)xi^ZCmCL&Ffo_&2!d+4ca%$v)#Ylsj)009ILKmY**5I_I{1Q0;r2Le+WS6z;m_3Z_e Cb`~Q5 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c41.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c41.dat deleted file mode 100644 index 43c724b83ede060aa2482baacca6634f90397af8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 XfB*y_009U<;3onzS^N6pvV6P%AQ>&m diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c421.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c421.dat deleted file mode 100644 index 65775ee7bfbd1fe9a4e81f326933d49be9138b53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$Ee^sk6u|MxGuieXjZk3gY7=3JuT%Wi;?0i0q>HJx=TKMB~qM3z0nMm7jGFn{MUt44O4K00IagfB*srAbheK?yxqp)GzZt*pZv1 zZ{Oc{L6;HW?BpOap`f8a zza_u!EMNR}k*$b0?V)9HEaKQ5EZ>dk`rfuA{Bb+i%(}@A?a)Ard)s_7*M7N5?rJ}? zx@p`^M4m-@?u|A5z9&Nn0R#|0009ILKmY**5I_Kd{}MPHcTP6?Ci}n7;;MXmrR9@E zUg-IeyS~D?{&hs>8?kdI?JewM8f{y3d$X02B)(hZA@7T5XL)>{5De)RoQ z(Yst=aMzm|MMeC&TJLJ+`&x_%0tg_000IagfB*srAbfaii?* zUqil`NHaY$I7nU{1hkH-r@}tp$k5z;w6iF)_UOTupUJY!=my?>PIC1DdIS(a009IL YKmY**5I_I{1Q7T^U?MBOx_2t3FYvf6QUCw| diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c461.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c461.dat deleted file mode 100644 index e6d98541fb79659dd82e6c495be7eda4795dd219..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$u?@m75J1s$h#Z%UKu3#&M8ynr~rwMhLQ=`fQo6D0XjB-!;T{-1VoL# zB|G+=lT%)2%SJ?u_E*dNX#JQDF`veC{wP}`{Bb$e%u2fx>Bdb)i|hJpYb}2o-Fo4z z49z7(^F^7>_1V$#Gnr_gmsvf;Yg8n^hX5l22q1s} a0tg_000IagfB*sr{3tM%W!UMgJwE}e#Vuq2 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c470.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c470.dat deleted file mode 100644 index c9f2eb1cae75e19bcc6f3d1feb17572a3f80c36e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#p$@_@5P;$9(u@iO9zjr8Bm%)BU=W0tKmZ92O@b%kvGx);9s!Qq%9b(&20{KV z>uz^VZ~fe4Cn8So=g4f%ZEjAn-ppxyuSSyo_&V3hrmXhjqOLX%@#UN6Ei6~bUe#xg zu9|makyn$JeXVCWv{XnTfB*srAbHJxYTKeO1q?Nf|xkx)~GJ3eKzmCS^4})9B zKNY>pCAwF=nSOML-&cw5%zRzRu|NO;1Q0*~0R#|0009ILK;Rz*cKel)g??H1!A{&P zd;8WUUorr~3;OQZJwY diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c51.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c51.dat deleted file mode 100644 index 9a540605445639e3316c1b4d6713f56043bfe951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNOONDM6+W)&DZ5;cuI?nwBRmEeIzTYF*U#%rU`zJ>{}t1+rWHwd?vj zzV{wq+voeb;1~c5{H1M&al+Vy_3>sK?*B_~4>fQ6cnyzy7k@2))tY2r=lHpG`}U)b zUU}_rzp2|B=i-K^{(^tTqV8n$s90>{KDTweA$DjUGB9Ld$iR?+Ap=7Oh71fD7&0(q zV93CbfguC`OBwjpt5+_;_i)5(egAVHxqR*19M;DlIt9<149Oe3=A0dNZiI|^jsT(FHO7d$tP2+%_B2xczZAY z44&-8--CBF`FOvyk7o|=?8RTeyZZ1)6L@!nkE?9Uc$RRn7k?Mt(}zDY;k`{hE%>(U zHL~D+z4%kO)QfM!`+M7k?K%)Qi6|lB*ox zXI?C%!U@YDb=)Yf94{(qJ>eFs*iQo=Uts3cNUm{!i15iOGJK-QP&iQ>#!e8|u5~lO zni$FTUIC_&e4YbjnM+@W_!1?kvZ!)O-}fIL(iD66LOq8vj#WU6)&O$`$rm{wEVCjP zQAh!?G4&ZJYQkeqwmRFL{^p)kP4 zA>F9w5NArbK4+;dz=q@{4)8MN`z~gGOAm8MzFhZE#If(WoTauNmXLgf0|X{fd11b- zhh0cs<^Wff1?GKg5BrdOwGJpS8NS-u!(&GBN}#71nWtsQRev4!wz{! zDsw$9=;jkhzR3Z&7>ZaFxEAUmZ3-|UN$VkD2SVVzQwQWSbYi9W-#$VFGOkiyOAG8F zI~PznQ5w5WAp?4Z;O1h-eJ7OSTTl-6Tsh0y#5V@PO!pWFXHIQ=2xpBb+c8h7~ow-_tNka0o? zr;I0z$Ar`0QIz>7LhDUJ`-t~{N;thpX#RrnTZE|ppRJSq;%m+?AJG3d-~~ML+4^V$ zSB?GV?ppurw$US;fL8tA;JC&nb!ZBPw%(Z^Ut;Z z@5*0j{oj?p)cQYGQeX^K1g>=Qpp;JPR=P41zE?()3a!aZ>;JC&xz_((`3tT8yYiP> z|DWT#P8r3zc5RH`()zzEf2#F=SH7+Fe}nJ&j>L+|!E#9Ia;6Gp6;p*Z+12{LD}SZ+ zKUS^iut=<4TK%t`U9JDS^4I#mD}PVx|Bn0%6QkDuSss_U$jSc-VyE)T!13G|ojlqa z@@Jy;KYC>zu225XPUPgm#e6D3a*_NdUrLw#rX5S`|E~P0*8g4kw$}e$`7^EmALJKB zhBHw#{q^{|Bn3eMC<>qd{gWH2ES5HKvrK?ruupb8RPe-==rd- z)cU^^UgZl(<-Ej8t6Y4tsG@Qz+)6hJGB;v>c312FuKbnO{~h_0iPryJ`KH$YmBQj4 z?=8GQrRRj9be$lL>2(m7Ug~859;Nxtwf^tQUl>pG`>5;sH;oT7KUFEF6Ccf6?ib5& z>i1nyR=F%lu(jF?w($|>mt`b!H=_Ho)m^ZRXKH>HWx1cRAZ&9ZriSRn$9jnQq_I_? zSlzXF5#}7+`uu5-<-*_UEX=@TexCcdq*E4yZBE1j{9gPe1oe30AQcj=am;7i`FA1g z#a}_hd~}D3+!dVvw)5|S>c!uOnE6?jp{Wqi`-KF*FQ^nKGroWGQbl22M7aK^COli8 zUj&#>cP*|r8a1YInfZAT1-Z=ldbPPImhl|(Gga!@)vNW9#8CgzL%}-ijDjgBuPD>SP4uc8hq_e)*d7u=YTw~BHu5z z_VBooJYNUkWlP8HQ{@c%|3wC7zh~vi+O^j6<{eV4 z)*+#JkN0n~jy+;LAe@{qvc8>g`-IzPKcTbDULv&a634ntXorNezf$}BNy7ik9WePk zJB-s)I_LazbT<4CBJQ8}3+6xI9^W9e?-0kV2&X5E$AmV=+T3p4;Ff!Y<0Hlc!Y*Dz n?F-nqh;K5^4!QSV6B^uNa4$wk9E1Bk?-!iu{~y2c_pAQ~X-X!s diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c560.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c560.dat deleted file mode 100644 index eeaaad0a7c879372647edff0b32adb00ec382248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921600 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≤B*)#$k5FgG=V(o9lInd88~ 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 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c580.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c580.dat deleted file mode 100644 index 2379be536e29b75f296ef0cf2230755cb31c88d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeHO30Raz(*C#y#9INcsL>cNJW%7E8H2LM69b;BC?W<74x*r7G?Az=QL{?GV-thN z0AUoz0n`vThvI<;9w;8DQ8XrAz~B`xG=EihSARp6B%5ddC;#sM%;d?JH(lRRZ&!D9 zRdu7xRush!{>7gYyE?P0^@ZftZGe9kzh5-}>i_zKB$`WW;eYDEzwYpH4R8C^tF|gh zi<;?cc{_U-LZRl%Hvl_!QWO+8prDE$`=&-dTE!iv$ zYbWPI<4<^BSl<~y5zy*DWM2cP};jRs?z4;&>WA_xiqTM-X*dr`+h`?L7K9cx*{c4 zw&l{uP1(!eg2Wt^>YSJ}5(}@A*o9yicQB~67Wb@GH?L$Os?o1nh+6`phD-PF(G~zY z*lgdYsow_zI^dQzq~pT35q)m?EX%tFp#9T4UKl=m5~?2kmgwuW>5|U0JRFKB4MPq{ zA}vCyo|!IarPOJte=Au+nT=m{FLiNIAZ@4aAw>%NeQ#z^N zhusI~A$oc}VwvyiN~nyz7Dj^h#PaJ7+rGF7=va^U#}2xG2T}9YZ+zY76+lPnExIjR z3)oE1=(ePi0k&)khDii{q1&>4DZUX=3NbUTR1sJMej1%|1+g`*pwVkw!RH+^b5d$@ zW*TG`UNtkxr)-p?S7P*6pr;jj=kbLXPy7IF$7fGGw{^>UK=~)?8ryaniRjA~o7TV7^MlM@s>3(wHQa^LUNwQ_sGh|c(SrFK1TQv<9qPp z+l!g^a8hbKFOt^u=y>T7UroEP5C?gz_dE^5FgSw7@d_moEW$)#o5Oj?9~lkZ$(Smp;S8$9OEod z(h6-n41PWmDU?3(eLntUq=1fMVi6)~uL78-2R<)H#Y4!AnS*%$LfiO9!b;}90)Vv$ z+JeZBoBTV7h1xV+qG2%n*m`FgCaDf@0nR0gjYMaqE~ix;X?6KcT4QQW9(wXF(ozxl zyitw~kXDC*H$HCy3zfED>uY-tmE|J>_a8WEGa|CI&OCJh%mZ+;I&&}$IrBssXyysz zCd|P!G)*HV!9a2`rhsy>c$or{a5%&JOo4o8a%2BB1?@4V;0w<&R{^O`(LDAdpQbuXh#7tBC&Hkq}h_*$F? z*690yhsTOAXgY~u)QE+EPMqtHZV?f#EEvUUPekD=2pqvuCNZ$g5)^iv;Y|+Yk zO#PnqaJcXjSr3R$)}tqQBRrA0n%HKpB0ia`=Hn1W>8c^T_W+sM2t{TtiYI4QTVYNy zGDHv?|F;cw#wMQwm9Bp?`{4GTV*uSW;*!?C61vs$yN(Ule*7`TVYIgq&&{GdYKf z_?oB7IkX0X2uzA|4s(}=P76%LN!3F*AUZ5AB9xU{`cyx82b?dcWWk^b3msa^k&k<| z$(vgl9b>sGwC!v+?fU7d#{q3;U5}Zdin1Zff=-3culA6r7Irgc-K%SWmMlbF?T&2F z3ae}31E7^IX)E2Al!1=74Yp;F*G|fyXGx00pcKK0)yDT@zQN<7ST#1(C*3#HBikH`x$rvNC)Q zqY$lyeG~4pMzDIq0t;<-q$cmFz72$VQu~s^sl694XQ0ug_Cza2 zfx@YMDQ+;FC#j*RTo~C25TVQaei2fpJ4=dx<*II5Qk23mNjM zI}G`7Ua~Oi%j}slk2eY3LMSLg+}!nTf(u zBRF>FhK@3LN;s$1Ujwd~typQl&s3%BD#$?VDwr}rV_k*NuM*-?PEAyn8bb(Ey>ol!P9(d* z)!2#+8d}wqSVg5fwy8)u(<7}s_k5jN2c!o#tn@Cf-l!6i&QzB&=rxgLr1;SqmeQZh zkm5^bRi%dB1tM-S^d@I&5Q(lvXXwqnKO!#W>_l~`31`;@on=+*Xg9!mnyC{`7LoEk zdCT8?cOG!Enr7VKyz>*@Wc+e`%neaC55N+>_Mq-rY$ADkMcxPKu~8HN!2Sq23{Jq9o{sBq~6+ z5|*{k0aVI%r~E1-ndleF0KY))o>-wl_sgL?0~&3s1I~=qy0&Sk!?!unFx+O3vle4v zRhsdD4483`B9V-H#6ROMc}J2WuYW%F%pI5QYU_djs~&Lgf*E_YAmudVZ;LRucTH0+ zLH>UbuP&v^1-RD5cIPfiG0e?C1?d| zeFrlxyF@g2JXdqeX~kx&eS?&!%hTf|%(Fsjf;h3VFRkqsur+>sH1|TCXz-q}vlxPE3>l zS}1ju+B|R%i3^E{lnhnV-DW+5p?C>PonNkuU?(`>Ayxp+O?3V#$uAnv=}-GYh+$@hr{J3TWGn;;xLuX`h+-jCYTi$=gn2(LPUd}i=)2(w^S&j7gcKRN zP%WUPQb(!9GLy;#$5$8Yq4oxT5ucy*X{y#W=-y+;+v-5;ItBz3;= zC=DuO{t&^&c$n53dDE{=Vsu+$DHz;3hl2gBbJ9g|h@{+Jq8RWpRyx>#RE;)nDb^3uK*1Zh z`^(TRxu0)^aF3+cWVr7#?7lS!Z4c-?i~6*cP|+DYzVHAjWjVC~U9nJ;Wk>TQO94}` zz0=H}TVZfnNt)SWzi_RYErNv6GFzaJMJJotqBcD%q)1Lfhf7*3Fm@xo$57y|61xt2 z-e5pb^CrgftQe=FTWm86)2!mK3(GR1U^iBKaimZ1yhi6Mp$oDAocW|3aKHj^=1*uo zq?q}DTw&(@;bJygNxfjGvYD4DN^9_h*JyGSx-a1w&0Ugma-s;(4y_gzH)Uqzo1uF6ywZ$v_;UN0m;Bst#{DK@Ap>62oxUoO zF6tJgCQ(;$O5vP}x=d~&>N{}$Y_(FQ`p!g5-yOyvTj}*Zs4Mh6eJ$OM!nrRCIf;zF z11@9zrcaO5hePzI>+AyiCH?Lq8~h~O^WytNj@Tx5$t)OF9V>!1x!0imN~Xyw+69LV z$7W-49P3IGYR)5Cl;+%}i87~zIH=ND$606x&(1nZY-Sy$x6I0?=|)n{OC)D&}N0$yalJNJuO52ljJ6}R*0&Lx;U&X6aFt#{;i1#~W;?@3yas@K~GUX~<>*GC;|Kk;YahAoC zE9L+0P=JNCh6$}NzqkM22{*bzf@e;S)Puu|jO9L|kG=3hS_>ZiOJH7Io?Er3r~(h9 z#)41yR92{0mpgxyvkOn|swjyCG;f2qiOQh)A7vs>7qyLMebhDz;;p2A@Coh{L>Ztn z`aDiAE@D`UUG?c-OW&v>>D_hl&E#s-oLI#-muppXiZ9|- z=^uQ8^AptoAC=#faFt(xD;)qV!z1gj?*eO-$xOrwVF1mxppVEMql0Wq2oIg9NZmC_ z&|%;MF`6!+A4NzB{b=1u=tpaomGloj!TE`E0g%8b&S9Yu;W40)u9iLgeL^wrMV8AA z@XR+EE8oX>;`S7Dw*`VCsB0jSCxxt#^e-E5uP$mf+_w(@_T*JeNK_>K z%b#F0ZYq)dzoNik*M~<_Lej^9j+t2C4|zPwU69zb^`|1=fqDd>?fEacG)MGYV|v;a zgJAf(4E(baK&-aNPKqZC>wUCa`WR?iL8m+ZG-Bcm0PLSC&XKWkJkQep3>#6eZb8NW zOYJ4n{vMc-_zw4hndN6EPNr)u()U>kHoagNi+>wpDfr1QZr(mbh5fn(#$XA1hhu!C z5_S<#wr*HT`ks-9+NaKqjd&4I79AP;(@Z5c{d?lxaR97dF*Eyz(;DsXC~^j^g`HH; zfQA;#Ks=UIMl5B(YVclml5IGk+~xI$teuEM*9uYG{-?1MDSt1tSUCIJ1odx8)W7<% z`r8;;Un~2M{VN&Sc{X6{0b38)dcf8LwjQwV0nKi#1-M*grvPdocJ7WR{GEa@w|D$N hff|8BHtzP@U&MC13alg8HO4FC|9FMpshlqw{SVBjKT7}r diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c590.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c590.dat deleted file mode 100644 index 77724e8e900cfaa032a0e2106605236a811990df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 JvEKV0`4{=cH5UK? diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c5a0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c5a0.dat deleted file mode 100644 index 13ec68c1d85f013209407fad5ebea8b948e49a1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c5d1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c5d1.dat deleted file mode 100644 index 903e5f9ad25fff6f7c16a298321996c58b9a8d4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$J4{ni90u_3R%~zIrO-kjv<3R$Ax|ZmSYKgdAdJQ^Gccop&6wzB!oX%+9Go?A zCWP5R7Y7Dr24+l*iJb5M?`;~aZZ773ll$HKJEyld{W_h4X8=5R@(4+WC3_>7?;UgZ zzdFa2;XiW2&Fr|-2QtBjJoj?vzaEW#v)|wT%;|W~cgaBO%w4?2o|p7_Uf$_H?=xdV z)_^r&4Oj!#fHhzZSOeC8HDC=`1J=O*)xhgFdmf&;-xRFxo8VG=_P1Xd%wL@dN8Fad zOZeT5fWCL#r-F69hXwDOj$Z%TndR04_X0NXq%(6QBW_cIH<1tq+@*kP@FMV4MaoB1 zRidJZsmfFgaaDziBcZBN2_#iDDv6Y8oJt|BnxN9is3xfl232)x5Ls1&%3?^>q=qo8 zYEi?;sivqL@~UYnj}g@jHG)yqEH#RP>IPLnQ8h;uQBuuQC6rYQR2gHcMQRKc)e==f zRkci2QB&P?3WYJQxa!c~DOM;tGQ~&?~ diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c5e0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c5e0.dat deleted file mode 100644 index 4e487794bded69ff4772894b6653e9ca6d990e23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2X>b%p6vy9Yce9&K1Qd{f0V61)5WoZ!1jG=LMTCv6Cn~t)&{aq<1knJ32Y8F1 z2vkvsT9##%SD}_?d3>|f@{3yWKm~6UZ>#*KzSr+<&+N=}XTSIbXDB+Ip8j?Bd)+hL z?>~WS0U(0^>58eeT&3=$aNk{q`G4f{6dQkS#yj17cL4nug#W9s^CXuU)9pcbw(Y5V zlgm|Gl$Bu~|2^iT69MQ(8QloDRG-P(fIDGP=z-7!p$9?_gdPYz5PBf=KRaJEZq0ph?OHbJo3I%9N&leI5a~B&c}ZlfJ9uW z3bP@3dZAhhl1-WVRk`lAE=WL}Gs!m!x06hqX&~YdMH-T?|0+NQ*Pmmkk3FQDG7WW* zoLL}JOr()0NDq}zp~lhGmTL(bR3#&GO$d%ElXmw}#lTr6pd4c9hRj&ks19Rdp1}@3 z(2s$$5g;XnE_ChuGiEm~@9OL(D=3d$Xjk=TV!oM>$aSXC2AN zd5F}ADM={D)moQH({y;(;SjEWeqepyIsu9$CWf zM(KyMHij{9kqN-@d+j}nk&8_T^^tW?Lk$B9O@M!{hcj^r5+lV7T;pN}TR}Z&vqy0K zOAYk{j5wN!%M1kCkS$tDwOoIZp}yaQV;ESBz_DV&0O;48U*6W0>&bVtsfYD2sB}u) zZ-tReUv8xxvt}0Faif^aSvfse?Z0CgTVlnkAmt3!<^1CqZb5joSUMO6I#rwSq0TL% zhuYM_Xl|jk?-qQI$MKA|^^H2-(q@lgxV>*!yG(of1ZJ=3o5hzw^TMV~#{Ec~$n=#+ zj}f084*eaU(dwvo?MQmaV;RibL3~)!V+);Xb{w-;*;&7-ba1YD|?SNC5xYkU_5k^}um5Eg@0*?z+i+rPY1a&-={sB&9;5rk4Ga2aH zY0O=Z-1q=vd<$+m*Y7d)gLBSDB|UpHm{@HhocYtngqhF-|4$E8_CNzbWg6-+tpe!gMW_r{<}&1||Sh{G`%X>2AeFI2qFgRKH>X#ka{`n2PCcI0e&oI2F@z zlqUY9I*AuyI;QKWPNI?OV-$-e<9TRDpF?4BxQcm`t>R^?h;P zeMtm@8?Bsg(-4*5CM)Ia1A6Nat>9)WSJ=+kX_$&&a0^njGU$@oQs)Z46GboBU;s>8 zr-%j{4On4ZdQTV4;8sI@wBPG(5e;rbViFqy7(r1jvZN_JiDU!%)pb}B+2D3F<17bh z6aPeo7x*1kNY=Q9L^`6lFMnpQe%Zd~q&O|-9+l&M_PDF%z%#dkPMNrseCh@>J zzpeYqTnENr+Axt7?nP{}6k-oFHTd|_M0xttpoj~bjbOlIA^O4=BUA9Zevm|8xX(r? zx9f3r_vnXb7)b4J?dNQ=%b!gw$-AJ$y}MS1xVOx3`vi2{W`LJu6$ z9;mzp8ZrLQQhZxkOYv>$7s{tzQ|Ts(`BRHjeuBz_QUTsp@&6Wz&nqrf`O%an4^XU| zd`4*jJ*s3D)k!8O!cV-X;{WYbo>;8%BUSwW1Jx;ij>^l|sQgS-9#N71J5(Ou1{jyb zTWN%-1z`9^JoKtmDIL&BHBrfs=lroO5p>1AmYOhCE{KOhzRjxDY)s>C&I)*YD3mT4Ge4U zajk=H_5IeeHH%d7Q^{=<9kR7EMZNgBzTH8os2qP-Ip0}Q%n5&l9tb@UdLZ;b z=z-7!p$9?_gdX^>JrMhVBKFu$iq&K7DnCK#0tcZ9wSdO}rP=7^fMHm)2F}39|09*| tfSH(IsM29@I!6AzR6nwn{x%_!RcRGb@Gjkj4Jtn!=3*YN%y*A`_%D}g4+Q`K diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c5f1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c5f1.dat deleted file mode 100644 index 12b6acb496ce18b692d47a7c48b2a3570e065ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI$*Kd|}7{>9d1=<2#tWs!!vZ0%{Ko|N`WUsPI*{eX=(3X}>nJOsCFpdyKF&>~% zAR5saL=QY55j7!-$`TcoZQ_B6;_tdIN*b*G0s6d2zkNT?kMgE>a;JG7R00U`UwnmH z!>n~vdtUdNe}Cuh>%PnX$RdAI?!O{{*xG*-;y>K`Utcx#o%TiK#5%!rNkoCKGG2?P@eCJ;;@m_RUrU;@Def(Zl@2qq9rAeg{^YXZBTuMRB?D+B^RCTh^Z6e-IY#9~o>##JvXr^}f6JQ?>W`A;<_hqpOW>-96=_2R;iZ zLdo5e3wFgnlsMtvgomP`|26;(5E70EX&@DW#?m0FF`7t&sU~PD4WXJMQW{D{B1#%Y zMIl-mPDLX|8bQS%RvJmgqM0;`YKG=g5!D(cxYiT^y z8u8KuDjsd5iBuc3m5QmhNRTE`2}qPms6@1rCR6RuUYbI+M+a#t)d5M;G%5)lrRh{h zbdqLJozPjDNp(gSX%^K5U8UJnS9Fu+P~Fg7noD&@52=*ufu7Plswa}A`BXAeqye- zTu(;8JtS@*8^b*;ZX}z)^%pmhP2nC9Ysg5r0peyd3T~jdg^Y$9ByJ^R;0BA^$XK`` z;&!qb+)!}`*&J?|_$b)|Zn*du*%EGq_&C`LZlt)AjDs5`?jl>m6^T!f@o=NXC&@N& zW5nHLTez{}Q)B|%IPqyR5pKM=hinHoLEKBWhnpzwBRjwqi~GqWxJlwOWJkCX@maDH z++^_uvNPNi@c`KcZmReq*%fY@_!8L-Zn}7o><%|WJVf?@n<*Y9d&12UUni5{W{Yo- zDR6VdBV;PvT=6KG23IN`Bh%sLiSLjZaP!4?$xOHf;&HMUT$%VDnFY5{e4osQTO@u- z=D;l$zao3XEfLR>ec+agUz2^|mWkhxxp2$HZ^=Bk72-KEA8w_1o-BYX7cY>7a24W3 z&jw*|mEtARFU~6QJJK&sm3W!-i&HIrPx{4KE&f3I#aSc%NczQDD_$Y};;a*YBK_j5 z7k?)G;%pFqA^qZP6t9wgaW;w9NWVBW;&sw5&Svoj=@(~zv<|lBS(B{^ z)<`z&59@X7dFyHGht?z3m#urPTdkGWdDdd<5Np0Q#hPf1VjKNwycA)m}riWo~CDAT&<>^YVF7bO)A`2YX_ diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c60.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c60.dat deleted file mode 100644 index 27f3aac7ce98398de3d41097fd192df4c575ad71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 zcmeHPNsJ^%6^)wd>b-kg9j& zBO)W-&tk7K#%k~nxAWSrYFjnq^VKrge`mCvD4u(G3}?P*&hCvb+6M6T@xh$`KRB!W zwb#ELnesc|HM-4fe}(c@&KRCpne|yH)0pee%{fcO!~iis3=jjv05L!e5Cg;jF+dCu z1H{1p4+DSx)6f3Mz6Ab^=l2)clW_FRl!xQ zyUH$0j+@{P=Q(%EJc=Bz$R!-|1pZQ?IA@Qrz5cC!v)eg5>bB!vV-WY*Syt=c{Q{mZ z`~tYR$JVQWh%g^;i){elpmF2K3TdN?R4hc=W}DizqhY&aTe-e%e%E(F52oFd7Qvj89j_m-0 z&|eJVc5D~zk4~X^PT@j}mXU{Ttzf|aK$9_;aW`;$$+4A6V1upPwJ86f<{WE50x)qBoQ3Gzkp6E zl|?j0;w6-i{L&-IaolU$`1Pblb7h#p9YQy;0L|1`vwLKVbOhZZ=i5^nui#$ka{<%|5jdW7Gw2cX(kWpp+$c!hh%*!Ry{=u@zefWpDL8b! z@b$tKP8JldQ$)%iRhjPoLy|clDlelFt31+;qrSIvJK%Vai zKY_-~Ghu-IG8Cm6(>LtfwdBf!9PJVV!~iis3_KhLHonh3#n{FRXxD$mZiCHnf9+rF zWw2jop9T9A`y43OKW3i>djt3DzrphQZM<^j9V}V-7W+Kdt9Z@XpJVyi9{UVqXa1t? zSJ@|Fe-E#z{Qyg9FQ8>_;q~k#_64x}?2_^6%HRI}(-ZUmGjL|doUK?aow3!oV6G3d zd%sXh20je1B8;3ejY_BR@ens96%18ATV*TFZu=OY!v^>vx9~*96MXszlv8>IJQBES z^aMBlkbVv`Q$(eFPX-buISWA6SRLk}anAx}hJRE<3=jjv05L!e5Cg;jF+dCu1H=F^ zKn(m(GVlf~;lB5^g`NLA|I3e0%>Vb@UCp^`aLynuAuibI=$xEWnH)4l6Tx z=5kzxnO}7%l?=MgW;ecR31%emG);5P1C-Lj#PNNOAyTAT0Lls(g;^e3sq|h=(Ct zmCvR00(;!lp7* zS(E{H)wnG#u{N2}(LE5-eOE!2!-DX6c(uulo}MIr264MMXlI~W)+RH`y2x?0+C`-s zJGy(2`yjQ+jI_>Symn7LinYzeW^g`sEs-Xts}JdD_Z8IAcQ;Ub-}xRY>O0ra zZojE*jCSkS+Gc1s|EcZQv^~dOfh>UUvM++7?>*|2JkC)V`_hCCm$8Kh(4ReZLw|Vn z_Qd>uO}`1CUyV0cjO@Jpe~{Zz%8wvqI1k4UubBuPB_-zG!xjitCNS9=#Z13(G_V*B zCvJxhhyh}N7$63S0b+m{AO?s5Vt^PR28aP-;GPWZ>vsX*ve&H-56ff*T0l>%69;!ZjTCx o0b+m{AO?s5Vt^PR28aP-fEXYKhyh|?ih+H6cL2BR*T13u3w13UiU0rr diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c600.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c600.dat deleted file mode 100644 index 94f0b6e0c046f51d86ea8e9770bd80f81dd83654..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249856 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 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c620.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c620.dat deleted file mode 100644 index e5a108ed4f05feeeedab9deb7e19579c772a7919..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155648 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 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c690.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c690.dat deleted file mode 100644 index 78eae9dca4775f970a5124cc98ed831ff92d236a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 zcmeI2&rcj>7{_0h{l)S_R8VTIQWWqdhBof7;)1x^j%+Nv zy_D>C=ZZJ|FsJ{t+k-R7!A@=Rru40yUdDb1KmY;|fB*y_009U<00Izzz_BMV|L&bP z%*Xa)NWQO`IQtK@d@wnF;6S-*-x+Q9{I<8h`nBC&HY?^WB2z8N$r!aXd@EH?e|=nCPy{S{A2Y3fO=^SOSfErA_+S-q#%<|(+?vJGR`S7zZhSTwCja-du3MyBmGl_M zzk3WY3z+DZH??Z?`F{`-F;Ue-$^S!`h>5BuO8$QU6ERWMMAtbD1aeOxJO598`Q3Jy z{6EaPZhcZq9I4C29f9Qk2bl#-boHQC3qJopgo&7_YNF)-hcOWoRZW!qKZ1#vsA{6? zoCX59Cy<^0*DhUM50n2#S=X&kYKbFtxws>c{Qn5EfQhai)M~-!|3@(q6ID%={6B_? zn5b%^5Buy3T1Jkb45z`TwuK>$k$>|HoL@txsx+BXzmBBar-ml3Bn+R}X5n z;Pe0En23q0CQAN4g^8G`YNF)-ComBcRZVoA(?B5i1hVu0<;KphVed^8X8%h>5Buy3T1Jkb45z`G5N2AD@QF|1YwxTc6YtN9uBMMzoDxxhIgF z|G&EO`K2)Vf8Nx89`{7mzIUfH$_R>gFGBMFLi=wR(Fk@@AMM=;&Bf>c^Y^E>(4*&k zxtTY~|F7ld6LDofo>z9s|BIMt*Hqg+qhAv*U?L`}nke}{GWBT8jikf+%)NVR z^+;>g%f}xGKmY;|xNih%yQNKIDywl@x*oS?v9y(R|KaA+j?4f1M^oMZ)IRHw|65+i z4hTR10uX=z1Rwwb2tWV=5P$##x{kmHKaSod|99QAFdzs(00Izz00bZa0SG_<0uX>e jPy*!tpg1`h1Rwwb2tWV=5P$##AOHafK%grL#QFa}8u~+w diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c6a0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c6a0.dat deleted file mode 100644 index d6b1f0efee13d83c37efdc64254ae110da59a32d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 zcmeI5J8T?97{|w#d*$rd4mi96COi_75MrJ&IPs2_i6ey9X5CxQgM1@k&K#fEJ z63|frRSF7U1qB@`h_H}A2tTB#**CelyZzbn+<5ji`}_X$-Tr6S zXZ5C1YD)i@uUT7GZJ91)dAd#4|8rlPn!EmbMlX52wRGOREa;yZeeim#t!o)&ExE9K z_C%}Q?#onNH~0Up>${G&7IrIJ8^xP;Ta9)IKmY;|fB*y_009U<00Izzz}OQwcJ7y_ z)f@UW#NXGH@%}R%Cnn1`Ehty@meKoDmy-7C$GUz}ol&O)f2&$_Qk8XQ($fpcL_?~! ze#Lb^)#h4MYHFeoOLJjO3YeyZQ(kqbeG9<}u!M+=YEqylMMQqiqj}2hCx=k;wVzrm zX0Er|nZW4k=`DobOEWstZ~`o=dL)Ze;*Acv##EcE z=I7Mei{?2-bfY7ph(wcvC?b-Lr=1cj<3vL`PoFi35mIq(Ld^(V+(ZQe*PB4&*U|+& zV$PM`RjTrXsqc8vlKU3tE!@xOn3CJyZ?82wK_`UlfLKxj!?eL z?n_giz3|ghneM4&A1#)&pQEvtF;G}m%#-WN$UJ>yzUtAUeKobiam`h>Gb`kBVjU%F zh>VnQ3}gamCs9C&HlgK=#x2kAfG9JO70r|36J$*GT)#K?Po~Dd#S)zNm@+pCJk;(WW=w z3hR4+&j0U1i6}9s62vSa@BdFsnZ$uJbsqp67C|>n5Ur z5>1jH_7z6m3GikFhyaZMgXutQ|1H6Kz#CGy=x4AWb}AINe=7nEmSF!#35Fi3H0t}`DvHkZ1>p`$L0n0rk zd(J$q`#2m_AW#efjq~pQzxgi!Yvw6{&7c4G<3E4R`tkqwlHj$dNV(w{$n*dA5e1ZJ z6MV4I==}fvC=n$FRiaD;>_>?xF{lz{BH#c@M2SI_Xb(;Sfr%%OfB*mD^4{nC`2PpU z>sn9297n9>;`TuN|3RXF676^hHWr-!KZFvCr^I33>(3Io*#5%^uy_L8PRx^kifR+5 zDYA66^)|8n4|>|))_cGfzG6AvBx7Myfj}_`VFXxY0ggcQZ62n8Kye5-|G!~B z|8LEG{-6F^faLT4F8_JyQ$POykr5c;!LIjXNzsFFb0FgXA4Q2;k0>!91LyxABMK0beSr4T}vN&@uvM}8j+QyScR`h$uQvCn2 zzQT|dQz}XJm!-t!KDS9d%21;0ZahiS`(ek;`Tr*eJ8ty6Xp#sHMzXN{#Q#4v7{BNM zN-V5~QtzPyFcAO0qSDudi=wOE@6O3_qXpR_X`?pS=pIde>#>LM+`o8tR3I?X1oHj= zM^mS+wfX;wDr+Q-4lGk0Ew-UtRqk5%_$20__@w>32eOy8IUmn-#s8l`iJB~03&_Cb z#MQx~5UsiqLM#Ku(sPy?ZY;(BM|n!TZdcpGJztJCq>+;N^*+Z(yc!hq+VD^7L>0SG_<0uX=z1Rwwb P2tWV=5Ew}U#{d5h;*4)a diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c6b0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c6b0.dat deleted file mode 100644 index 22b4089918a6be5ee648a8623b201408ae27dfda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 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 KO9hJg|Nj9DlGr@} diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c6c0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c6c0.dat deleted file mode 100644 index 51852aadca81626451138db2987a52a9b49b4c48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94208 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 IKmObQ13YTbYybcN diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c6e0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c6e0.dat deleted file mode 100644 index 2d0a9812daf48ce4042cab8c6bb191e071cf075f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 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 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c700.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c700.dat deleted file mode 100644 index 98a6542f316fc1d6e1f743821a81cf2c457418e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94208 zcmeI54Nz3q8HO(_KdYbyq9Co7_!DR_R-h>)26I=bfN^a^Bh?ax&=_c{O+o>oijZJ5 ziB6%Gi9d`{ancdZNZQz9+Q5ypK{O4qCFv+Q83${Vw91HzN!3EXy}M`kZn&_Eds+72 zYsTZ@o}c@j=e+0J`|c7D@&!TgqQ9m;k#gxPm&$^*E3Z+#$MWZEm;3y35w+x+TkkUc zGmicS(9QMcYkii9YAxZT+hfhw<+)5%OPCR#Q+;fdAn45Ps-=05b*O3|Tm%6S009sH z0T2KI5C8!X009sHf#E8aw=+xs_wel2J5Ye`*bu4w%DUfmzrV&UavE(B?+DlKCT6zG zNgFriL)T_;2VLC5wLKDxE{~G(tGXz)icMFi791L_KA$w-=#{Z}(M;<1qdoQcO-CN; zqhEGw!?I5{PFHVra<|4b+oj2UA=jMV=^i>Y2*KW zHCLn7>c)K9XN=omDpt(tJ`gy4A3a^ZntuFWZ+Gu?O*vw9M^;KwXOv5`ur~ty=xJeN zkk7kb`+ugKPs%gyNcX*7L9MH%{N`%c%m!tvHCNmQ4UFZ9q&WA+;muiD9i-iq|Gh=@JZjr>X=|f6j^sx3 zrGE9y$XCYOw^~(a8_{o#y(6Gk-lN|UidfJO)JOwEuL$;zz(@~>W$0-j0#DH7z;}VY zBQOdo_K2)9@Eybm>mvawToUkKD*OL3+5ev~l_N%&O7j25%?m1@`}5P<_9;$ zVmWXWoDy*C|D~J18m*20zYBSeR5I|V9gOeDu`J zX~=V=5+2VuVzzz$e=l|rDweZ7kEeq9|8S@nD&|(j%>PF~#ZWP~DrWxw+fXr7%&m&$ zz)^5Yz_I^d-S&@gZT$az$aAC;9$f=sw)y`^>>yMuXL}w`1@r%|{YG{kSB{v6&ub6! z|Mw#oBNuaQ#H{r|zEIW5}w|L-Et zkxF=U4T#zH`TqmhL8w^H_B@^n=KsG36+^|`s+jrzSg05(=2peb|HnbaP%*bEmIFt@ zDFMg+f7Qj9i`w}A2L-+ORB&A37pMNM%y`m@ZMEI{!#AmQ+h^CW)t9ccYc2osopTx8 z$<+GX&U2r|dhb!TTB-B+ERL9m@ZAt;Ye&f5nZG}!)TB+F(u(`e<~%XGgIbGz*i)Gr z6L0wziXOH~3;Z9kvd-qb@a4vFfRr7~RP1@8cZ zkih)^EbIsE6f!WM44D6a7&{0R%Ndu)lg#{oJmu$v^XaDhZsDTh^z?Pv@Yhqz)(Vv2kop;pFswVdR|Buk?@$#}sk9-nw!RfK85m;wN ztHa#_D|M~el&Dryp~n2bs6L;{2&fb4G|9q~bin+-fu0#QRqif69bxxWAg-@#+cD?h z`;@8k#``?lP}!-BUOMP?@6Jo>pQEua|Iu(}%v8Jgad85atU$wg8sf%fiJxEDJx8fY zn>wW>)saz4W1ghe$k_J(OiY+z{rUei0-V9X!*Z;%nzTw66%GkF_W#d_G0)rie_z3e z7V6(?v0lBd$QQhQ1w)eHP4&61opCXJ@{G07W%R0Uz0n}n46&BG4B|cdTZfl>mf2qj z?v6mLIA2)1UiTI~w&lhi{qJw1pH`1ROit>`3^6XGe#N`Hk}sYy6F|9QvwAn9RIm>{RXx)5Nh8F?< zS-M7g+{iVRKDD|!LD1bWl|sC(-n>%%TZ_A7|8Ku=U;8iVt3LdHuYR}y0w4eaAOHd& z00JNY0w4eaAOHd&;Bf@9YQ|rJ|M$3UK|mk?0w4eaAOHd&00JNY0w4eaAfPD$_@c$mUEeHw(KmY_l00ck)1V8`;KmY_l00cB8 z0ROKkPD};@AOHd&00JNY0w4eaAOHd&00JIK0RG=2w*^6g00@8p2!H?xfB*=900@8p p2!Md51mOQQ#fiy400ck)1V8`;KmY_l00ck)1VF$e37Gu<{{cm?GKK&E diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c71.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c71.dat deleted file mode 100644 index fa90f2a94977405cf5c375c3ebac1f0b04a902f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeHMOKjs*6g|#Mop00hn|^0tW|&eSGfvX934hmdJEln-Y^SJfn0`?Oh>u_-b_i*f zY+wfx3nV0FgZ7~@2N9!4%in@z{`d8FqsB9KOs!rpT17g(N0kPoX(j9Z&5 za2}%};bsQ4{!^n{Hz;iY>Y>$=w z1Sb1qcl^MySOz9B6>{I`wp!aIIZgMBQiZ0foTi7hVs*D#DVA$HbvaF`mFhHQYjT=S zp%8jk)3jrIEtdBJro-$lx5Ycln@F+B0@`i$MpV zUg?#)UaK$fRF|pTLuu`z!tK5O+8Yd9ETugl=*_WCOQG$R8AzeyL4gE@6p{gqWpPQ- zBU7Xq%}O(+T~rEsmiAiUSR; zaScu5T3=RwN5lzc2G<2{@?iWAd3$^zpUJ(nKG z$O0+@6H}GvC3XSJ1LI*4eGyf)#jA=l7eldxmD7dPH=6;2hYG~Y^1W=?9- zCK}X#QOQ@NO#X(a=`{K&o&@xql;RlA5Hr8yDIoq4Op=pQift)}KE$(hh<;h3hQ?u$ z+>)rF@1)dz!4uT8fHjgIOHF)B+KF9~{k6}f9$!em+LF}7zn8vZKd3%8r6zet+D{%y znfMtuNPZ^!XX~<$eix6EyoWmVxh8!jiqcE=mXwJjsn?&A%w)foSkk^qlG^dnkK2C% DuEotB diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c710.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c710.dat deleted file mode 100644 index 418551af24f0adf82605640daf0b08079a1e9281..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 zcmeI2xo;Fn6o<>hT#St|i#eD3GWUHMjA=&%2mt{Sh=gDf67en}5=Ufq10x_J*-ePh zE)fXev)i+_CkH#V$(z!*c6u56ApijgKmY;|fB*y_009U<00PsV!2Yvuj+j5}$B=wq zGjaCsYx!Vu{F?*is(oj4yXX1W{k1qzkC_wZxblywMPsIH2h)6e;p>ftF5QaudX!4z zn^v$=>y%(M-M4BQL9|My&GdX7FcA~oby>^e^h*I75C}`4@v$^+zdZaFx0P3MJL630 zitXd2Ye&r8q`&(UcOFg3|5a15M|xXE(>ee9<+RFjYN2T@CG>03+dVaA0TbN<*0w65 z_W6r1a3YKH< z(~rgm1aeKFaXwD|wb$-0z{$8RJ&jv4Qo50R@ctK9*M`aey{zjNDOV*u2J-J7ear$T zy5&u+8h!qsg^8G`YNF)-eoVwfRTCxu&&EVdR5j6cP6L756Ufg0>;AlRJ52r`U|qL9 zsU?oo<>HP&^8XxW0TW$4sMUhc|G!`&CaRh!`F}1ZVxp>vlK%%W5ffESbe+>cAom2a z^Z)6Id*{RC|9PzI)+e>Zk-A*m5lH@@&n#e~s|U4O@cDlMCSszhiIV>pVj?E0nke~y z5hh}ys)??18VKZ`Kz9Cr|Ec~eO#WZYx^8_^OB|`o#T|j<|6iE}Omy|2RtrA=FTq4i zR5elZ|58lEL{$?d|1ZNtOjI?|bxs3;+!M&o|9>|gJPVWmm$R;0pVSgZ>T+>MAo+g< zvw(@N9@J{V=l_+Mh>5BuO8#GkiI}KrqU8V8n23q0Cc4gPAdq_k+4=v!Tj#Ea$^UCu z*R4-#i6eEnxFeAKzm{3RL{|@LwczvrI!wewRTCxu4`CuEs+uVIe?2B*qN<6ma~cTb zolAKXqf!Jfpy*bq?R~Rmy0_B$^RRf1x$4HpjHb$|8K%XOjI>d^8aQ`#6(pS zCI4^1L`+mQ(REG(f!q_w&i_Nl-d+xq|F^QPTc6YtN9uBMM2Yya(p-0d8ax-s|{}1No z6LDpqo>z9s|09@a*H~TBFRpYL{l)Ro2QL3l9!+)fQ~Rt#{%?65J0Ji72tWV= z5P$##AOHafKmY;|=sE%y{+;)M{NHuc!hj$E0SG_<0uX=z1Rwwb2tWV=K?#umgW}|5 b5P$##AOHafKmY;|fB*y_0D-O~5a<6dcauWN diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c790.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c790.dat deleted file mode 100644 index b385176c0ba42a2bb83bd122ba021fa67c012763..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c7c0.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c7c0.dat deleted file mode 100644 index 80ac760071e98506b18717dbc18c486367cc1ec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1e{54#6vt1y*Y>Sl*}6@NWr09sKQb3(V4^|cvFd(USXUn=Fo)Q|*cd<5F&351 z4UAzLi4K^!C5xzuxAB~$_jAwpp8JxwK?49-@J*MMSv#{v6U!T8=wH*X>%ykPGR)NTYzlp(<2woAGLM;B z&y6xmS}HH|IGc-HeVJJo$-kW^%`9V11~&V#hzkXT0zv_yfKWgvAQTV^2nB=!LII(G zP~d;0z-MV)qp$@R9DBY`1$xx>{-cCg{pcV zhj}I-<&j0sdmek^49HrEj~pk+N=8eEb<3PWkbC!g*L8Vp=MBq9<+b;&~m}_@TdTn|%&yaMm-H`T2JvATJJY-qB27baIdl62ajQtHJrJ7E?_z z6b8&{(q60Y!>b=F$qH@n+U*)PtY7XO8p>>4qg*n?TpVSOql*45>fAd|wzs!;AnLiM zfnU0QkD`#_z|P>;3)Wy&pGI1u9o-u-o8MXR$%&u(Ac>#fgU2Lb-eFzSge|Koz~O2 zLYJ-N=Gm%eW)jxrq_UpEz3M$szP9n3@@~TpC36TiC)i8F`P6p$DT=qZ!j^-^aE`Q7 zsTvE*N@REjRe_+;GuEV%o`(^%LLG}NSLUJjc%^$m=)#+j!a**QEl^Ax39JEjifCj~ zk7D^@c1_}78%h%|gsvY1;1kk7{u_AM`a&KirCK5L+R5I0nn6dKf2O&jcXN z?Y)v)8~qZeSNU;5WM1Z4y0D79mUEX+N74+SR1R{JTmiiI@M>^idh1c1{#M_1&HJeD z)uRn3u!8nmvIpnyn~n&3aOI^{y?a1j_|PAt2VYp`f;5hp!X#r`GcFk^hLS07K~#9X+#d^FYfo}rR-j!EVxNACbUIW(S#Gt#t=;bo=mD_tjT zV;f?!uV7&VzM;4GuEt)7EfH?woD`Z@t(K9i2 z@128x{`x-Nu~~*p+#3%GM<^f^5DEwdgaSeVp}>Di0sD4X2VnO>4S?-kW&=Kk diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c800.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c800.dat deleted file mode 100644 index ee79820f7ddb911262268584a556f4a015dede8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81920 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 IN6#Pq3+2@RmH+?% diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c810.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c810.dat deleted file mode 100644 index c30b66b5ca580b6d030913cd6d606017dd137fc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1183744 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≤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 T=k-t7oMk(xDV95A^zbQjpBz6 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 PK!5-N0t89|fBpXgrB^OZ diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c820.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c820.dat deleted file mode 100644 index 589fc2c2d563cd10737c2256060b113e8f5548b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeH~KS%;`6vv;Zp697071>aFO9Zu8IW!b%mqANf&>GwzD%BZsHMurAG)0X?gG~() z64V$p8#o3*5JXc%Q`Ecrd3ESnOH1(HaqoV<$M^mDIQ?K7037)0#u=VByw#a`YYfjH zO=}5v{F%Xw#vlAXNK^S8#G#1tn2 zM1Tko0U|&IhyW2F0z`la5CJ0aj|g1%R^MO?2R85bBIsA`?zR=od`rT`qcY;Ce}@GL z&pc#c1)sF>fQJVcMjcq&vys*EikgKWbR}g;R@QSxRho}QqaY-PZr@+dQ->hL>pkjT zC4Gl6)EOqQ8XUO6DW@lF^$~Gq^Qa-(>b*?w1Wc<1tyIiqRofy1KNJyJ5tnt50Qhi` z#bT+TNz3Cnu@tT?J?%tripCh{U$|JcY~f=Cc<_K*DdFnSCJ#*-W-IqIxyRby1zb|b z7K3`%a81{hpLg@6Q%lcNNt{-OcdVLQu^d~TdehuR2M&=B7NL)Uxidx27MaZ>F!NPo`_rOI-T}9v+vYFRPI>#sB~S diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c841.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c841.dat deleted file mode 100644 index f03a9c24199b92db9c7de2961ce5f8b83ba552c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1y-LJD6ot=>vY8~CXeU?&3oVUkDMAQXiO9k>c3X)eF32j_*;x7n_WKyJh0kE& z6ZimDHhO20EMc8kS;-lgGc)(hU%u{6a0@_5wM9GaIc-bhw`0=(s>?#Sb9f@oM5+N+ zn@LIzm+`M9^tnfy)8{JQ+RFvD-lb7_>k!X+cc!`bI1G^h36KB@kN^pg011!)36KB@ zkih>U@c4A6a3kN;D6?{Oc{aYv4)^jLOHct!hhq?SI3Xg91hMRPJib1kWP=^M zRfO0Vj?vdxhAv7wsgI;JN|5@Nq;g>v5+DH*AOR8}0TLhq5+DH*AORBiTLS6;YmzC) gR`KEV4eQdMIh|USzu}UUstv2y$3=C6(dWzVH#PW5)Bpeg diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/c90.dat b/src/main/resources/data/neqsimthermodatabase/seg0/c90.dat deleted file mode 100644 index f19fd833155606826ff8a6c3e7affd25ef92bbe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266240 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 |J|Kne&ub(>d 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 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/ca1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/ca1.dat deleted file mode 100644 index b386c1a7ac445251d08018f65276708201fbbb76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221184 zcmeFa349!BaW?+;+`6p8vhK^WEL*Zio>Mbpd)XdIBYV8Mb|l&BcUXhyc>dbRog153~TT-%zN zr@E)Qy8C^q>aABjLMdg@KfJDI8Dd!}+|MiDqwQbo*S5DW`R4+Cax?vlDAnYC$)cUp z-#fiRnTvgT{F%j3=lu#@{Kld0(f^Lclxm^>r=9OyAn9ZMa<(4t{^|YSvw&v-&jOwW zJPUXh@GRh2z_Wm70nY-S1w0Gf%`A|;VQ)Y^oPLzc@BdMa(O*xy;Ags@Z~Gt+BI@o_ zPgRj}B;cZ38n#9BEfu%^LBIP7{eM6G-$zF>rV`n^Bp_muK~jW*mULASaxpoY~@ zHilPXGa8Gn$D*6-nM^dfv7V(rV=MIEYCIQ7==3saNxGt0Aci=@xrRMr^C1QL%PNA(o~Za`u^0|18Qn-E z647iXi645&U*wOD2x zDsyzwS2m;RWJaHbCSQuD=@&K(mo+sg`(Dm3j3qb8)EUwg zCnIMQboR6Bo6${rZ6q@3)kG#ns8DHsrr@0QEyrn8_Ptrj>gwuxES4q*j*qWIQ>hq^ zWMh?;tZig7<7?{~MP^!Do=BwVKpMB4xk=ggG1ZYykdCGUGDj_g}^4s zt;VD4*>PN|^vb4JQi=7fHc1>mr}bo6$3A7Rn(9c!NXNddU(=@SHB%kqInvRFv+cav zmA%e7*3y~uT6~qgjZW{ye@jsL=i=j}p=(cBLx-|ASVL|-m0XK&;zERjTwDWPh;vZT z(^yu}sqE`nL2@;lN+sy}-AMrsA(0^s-G|E>_A2`Z#}F&2wY9_s-9s*O2(UuW*4gM% z_Kk7{ID{k)p>ME!2tCTaKWm7u!?zN+)^@f64xxX`sd|}a5yZZ?(O`DC&sq2XvtS;MfhA8w|B9=CoKZ7pj! zr0hqqhPAcLOe#ggkIPvyiTmxbt%t{9Wj~TNh^~q{RYL=zxl^V2?E_I;9KwQhxIEe2E_P zVf(dZJ$1@{0_(|U<0%@*@qO=-ddN7F`Ng^A*@;4ljFa2C=thGJU$QTCJMdT7W=BiD2J($cksxuw!F9TqO-)ahv_ET8VYAQ{`7#gIJxTK*f6{UD=^^Ni&)hhd`a!oXtnLU?3dy0#(Q}dAPe~JsR~3QuYjz1teQ|NxB{tup%&=b=kb1hP@N(99Cb>m(6GvrydN}JpTj%BUdDcj!2kToYDBfntzPL>ac484|*@CVqgc|Wv;kK M!YJsUAs^Ug1**j#u)3 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

e|d=Xbl9EW{QaCaX1IM_har#%5dC+g+>_#^zes zJ+d&M>N25+k6fssi6T9X71d^~VF@cW~;2dFs5;g@QBJ5H{1 zvbqGx+LYdO;NWoyl65J)>tI^1Ea~G$&w$h6H8Oc~_o%`CXABqv#(*(k47@8Ci2W4W zIQF1-k{p4*Lwm=jpy6XaV*hV2$DUdXcOagI>hAv%#}A;tpnoTKC43#R?=Mi}@iH6) z|F@Wp_rJpN9>nAxppqX%&cp?5C%7j+@o{X&e~xU40&hQzZGQ_KhrTBm`wEV*?|$z% z#RE7J(*IEYJ@xQ_m4a8tRU$=u;X-G9#Qf5w0@UJemx9rzL|ZZ@%1pY z`DXTuy4SD>L~j7>LBl9vT&itw!No4~>b$R-{U>jq(dJHPTlw>>Hc>C;^d7FiDXs* z>0m2MRQO&&zr^@k+#+#>4+Iv{7NjC_wQ9jHYvH==#sDys)NAZ4E$ zq=ZR@q&gci_~=fNTA9LorI1O59`pu6bTfi)lzJvN_+1hFHmPfJfzMQ1@J&+Mq=M50 zEgzkqOobt-ZBl{hlM`vnjm7yY`K!1{Hp|OdRdAxcSe>C>9BRd>0G*L{v}(~)U1)m4 zH(RqRG&%J2xv932T9CLEEP5PlkpeAM7BYA#%T&2pEY%mdPP4F8Ug4_3hnEhOE4ARm z9Rq&bGzR`R81PHbtLaUMsn-$xLFnY`Bh>3695*VIalWUvia!k53WS7xaIXx6i^^=vx2( zhxkt4XE@gJJAIq6?Y+VA36AGDw)FqwM`|a!^#5bt2q6w!b>@}&f2gJUY4j&at~>vK zCV!Y#avmSWOw={||0!2T7yjf1F#%LqQp)s{qzC-ub}<3;Fm&Nh?hq3|55pg$$(>>X z=wax>pWG#r_<9)TWG8ov3!s8gCB)TzuyN`=`GJ@Msw_~mtzQ1gtzrzQpuL;dQO2DN zUKXoh1&L7CoeW+P^I!#u&@hq=ekXpy3KF4tBpJLa7Q+e>p)4X9ye6)LDiIA6x)x4A zf?tXEph|F!CipltG5tua2vr^$?X?@H<6b&=RQw1Pnl88Y`VEsC#g9-yueW|fGI&WG z3RNm1vui~GknpTH6{-Z+UkShuo)hz8g~@OW_`&nyX{<0AZUaAfL8kv#m<+dqAN*Q; zj}<1v?cfJ5iWQHz>hDQ<})7!0I?i(;BMg7Nv&!6ord9KpDZ(!o<=pE!bX*`$M~#XeDi zS*k{>2LSzDaZp^*A!V1vL~%ujoIN8xiYq!K?R(;-xS~;nax{6>$k4uF3>X8(z`KM2 zKY%j#`w){q=J9y~4>Hn=>hQ7U>f7lt6`hRar^|w0#uB-o5rLf&&HY!1; z-RKKpJJFcr$?bEg`0qqxvM0A+`~c@8$CP$1str(~sUf~X9p8k@j=2=~1J_uDdy#i4 z=fBBYCuQ!%G3x$5S*CGPKA3W;E*7__~J;+nt@p}FF>PV3dkAnJeceqsWcV-9= zf--D#Sr(w3VM>^w48tz9`<)ruL=;^L`8!gyiP-5<#NU~rMZ|WO#RArQgK|l z>Q`OE(FFTMRDGaA(cAeP zvDBX9d2MqYb(C5jQq5qQ)bF6Um5EIXE{3x#=uop4@XO7=u@8Dik1jMtLy^mdC z@8E(rMcW_YxYsL@ckowi_n+r@mg6>jzwh@P&tpXZ>iX8(fH7bU7z4(DF<=ZB1IBX8(fH80b88H2S1Ie^h#(*(k3>X8(fH7bU7z4(D zF<=ZB1IEBAWx(|RDm^iFSjK=cUX8(fH7bU7z4(@4P?Od{|zM5QW*or zfH7bU7z4(DF<=ZB1IBX8(fH7bU7z4(DF<=ZB L12>QX=>Pu!g&Wy} diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/cb1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/cb1.dat deleted file mode 100644 index 7ad179a61b47c55baa7b16f157cdb5111b87f72a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143360 zcmeFa2bd*Cbv9i0&dg0SvpcgpX(!L@?u4Dxx5MqeyDO<@1|%VbNCuJNMv-$4#$Z51 z12&d0h-`Ash-_m6#(<3jA{iTO6Z~Q0AKL%6%HcoyTVq*ZnH16Q$uj6a(|_j_r~dPH_~nuKucXvSR4Ip({(m0-&*Mt2Qg_oOFTnrl%=wQ)L>xguh5yo*Q+=xML|oRd z!tZlgZapp=P~m^{sTFmsRSO)~a~oS$wdQYin|^nzN7#*Xjg*t=0B%8w00e z)1nH0#HM!3bz7F#F`4?YX-S1YX46g^cVsnugX!p@*tD#||76ofy&YIp*V3l-W_7C_ z)Y{Tef!A>Dc7O{W--=BuD*P`tb!!bPuzcKM=Di+VjZFtt_!Bm**1W1!Z3c$39+{3! zhgA4eHuZz5*Rq=YbTV3abSX9+R^k6<({{audu^HSb-Eav9#G-W*tFiPIYHG&2jY88 zYo^IFEqqYzqTSFHn|`MecrG_nMprC^*T$zEQM);|b?QNYn>F=`(K91pRPE;3v}U!c zEyr#eu6SW3KIy8npc7=??DAx6dRXoD%URowhkk52>-tb^I;M69*wkuP z>p_*qXy#eRtFh_0+AXkY$87{St79--FU6)4YPZOyw%tT`k_)bHxk015CgB5 zcH61qISy^crju&7#HKW!1FI1=Q`%S`or+DT)NYwggKE9e^6GrS8GT|f+>LFIsND+N zb{j#*a{Q{{W|t;n(`mIk$ZtyL%y^o?+qL)CYk^)1^je_T0=*XKwLq^0dM)t(M+*#m zUyb27?_~MMBnRH3P65<@iex{_{J)Ssa1lxMWp!GqzBb8xo=W=GN#<_Pbso#*?3b#Vx#yA`;N#>U%XPQ}HiY@{cZbJ5@UBVx-+!~RQT#FfF)514 ze}q@$7OW*3L|H&w&0j7+&Ra#r!XZ&2uF&Xf*0Aug0JvW42rlpPDO+LA%-t zJkJEVO5xL0T?~A?>w0wt&>3eK3@=reXoGqc*q7)28L(k^S%v#z(Ch%BdrU}Vz}5jr zg;$(+h75y)J1V?N4C)OhuwvAf21iD4Nw?RR)b#?ZZo)4kwhFHngTSv^R*c%y&MSP=At1;lB@c!DO5dbx|3}|S)uEK}un{X_v8kpeI z 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 QF4TMnUgI1`6hCbI139s%2LJ#7 diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/cd1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/cd1.dat deleted file mode 100644 index 4a855fd78e517be8d8c2b524e3301ddd09809ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1J5Iwu5QhJCz;@mbBrZTf2S`vNq2L5CauO5U1vKd?kdOe04hqVgfF7hC zL`93l9e|mQH?o4^0BBb7c;}y;UGLY;7#9E(Jv=OJZEds0#IqXBztS-y|LTSmIitq~ z8fKBA!^!`1RP&-+E7zwJJ+qe}rul0GXXlr0qD zP)ax)cr2AsF;Wyy@+zq6ynYe{euo!TQL|uUE;kp`tvc!Mc)rnq1l_$+dtYZ_$lWq6j?l-;xZV^td diff --git a/src/main/resources/data/neqsimthermodatabase/seg0/ce1.dat b/src/main/resources/data/neqsimthermodatabase/seg0/ce1.dat deleted file mode 100644 index a17614041b545d977d70685cd38b95998a1f1829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1y-ve05XUb8wW0J2cm-4@gA*rhA|dexh>3wMAI-pq1W0T!z{bkL&I2&O%ETiu zBC+uVtZ=?2RaFjl&|Q^(obx}n{JSi6;S>NIyll9n4boYu`)705{;Xmy{o~^v_8jBo z0rYE=gOlU)uhHRpcQ!AMCi$7MD6#R5H%HG*!n{v&dgn}!q=bMF5CTF#2nYcoAOwVf z5D)@FKnVOV0@t@^4xHec>ivBe>{fg2+bZk+`Hn^tj|?usn;rzPt?66!KHq^Y=cUTN zRd;*zV9x?};h@SqQ3eksY@_MI0M>Kun^@~YXO1eyU^qPL*CzmKJUj;apU)4h5S{$w5?a5G8307%!{en!LHx*SmCvWjlj zNvm}DQoU&T?M?GP!|h|`AMf=ebALqs2m!`{Dffpnm+q!S*u?~x025#WOn?b60Vco% zm;e)C0!(1G2;4v2L~unl)z9}Eut2NzUscxeMxeJyckVxbZt_FcRF)EYjI}av-RGoJc%ktYvHw7B}kHED`pe~9G6Y8l*hH;u(8GB)hiaRyM ziUQ02q%PHnNoa9vUL{Z>3QUBQDAj*jJn + * checkSaturationTemperatureToPhaseEnvelope. + *

+ * + * @throws Exception + */ + @Test + @DisplayName("calculate phase envelope using UMR") + public void checkSaturationTemperatureToPhaseEnvelope() throws Exception { + SystemUMRPRUMCEos testSystem = new neqsim.thermo.system.SystemUMRPRUMCEos(298.0, 10.0); + testSystem.addComponent("N2", 0.00675317857); + testSystem.addComponent("CO2", .02833662296); + testSystem.addComponent("methane", 0.8363194562); + testSystem.addComponent("ethane", 0.06934307324); + testSystem.addComponent("propane", 0.03645246567); + testSystem.addComponent("i-butane", 0.0052133558); + testSystem.addComponent("n-butane", 0.01013260919); + testSystem.addComponent("i-pentane", 0.00227310164); + testSystem.addComponent("n-pentane", 0.00224658464); + testSystem.addComponent("2-m-C5", 0.00049491); + testSystem.addComponent("3-m-C5", 0.00025783); + testSystem.addComponent("n-hexane", 0.00065099); + testSystem.addComponent("c-hexane", .00061676); + testSystem.addComponent("n-heptane", 0.00038552); + testSystem.addComponent("benzene", 0.00016852); + testSystem.addComponent("n-octane", 0.00007629); + testSystem.addComponent("c-C7", 0.0002401); + testSystem.addComponent("toluene", 0.0000993); + testSystem.addComponent("n-nonane", 0.00001943); + testSystem.addComponent("c-C8", 0.00001848); + testSystem.addComponent("m-Xylene", 0.00002216); + testSystem.addComponent("nC10", 0.00000905); + testSystem.addComponent("nC11", 0.000000001); + testSystem.addComponent("nC12", 0.000000001); + + testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); + testSystem.init(0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.calcPTphaseEnvelope(); + } catch (Exception ex) { + assertTrue(false); + throw new Exception(ex); } + assertEquals((testOps.get("cricondentherm")[0] - 273.15), 23.469, 0.02); + assertEquals(testOps.get("cricondentherm")[1], 46.9326702068279, 0.02); + + testSystem.setPressure(testOps.get("cricondentherm")[1], "bara"); + SaturationTemperature satTempSim = new SaturationTemperature(testSystem); + satTempSim.run(); + assertEquals(satTempSim.getThermoSystem().getTemperature() - 273.15, 23.469396812206867, 0.001); + } } diff --git a/src/test/java/neqsim/PVTsimulation/simulation/SeparatorTestTest.java b/src/test/java/neqsim/PVTsimulation/simulation/SeparatorTestTest.java new file mode 100644 index 0000000000..cb5b7c580e --- /dev/null +++ b/src/test/java/neqsim/PVTsimulation/simulation/SeparatorTestTest.java @@ -0,0 +1,50 @@ +package neqsim.PVTsimulation.simulation; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class SeparatorTestTest { + @Test + void testRunCalc() { + SystemInterface tempSystem = new SystemSrkEos(298.0, 300.0); + tempSystem.addComponent("nitrogen", 0.64); + tempSystem.addComponent("CO2", 3.53); + tempSystem.addComponent("methane", 70.78); + tempSystem.addComponent("ethane", 8.94); + tempSystem.addComponent("propane", 5.05); + tempSystem.addComponent("i-butane", 0.85); + tempSystem.addComponent("n-butane", 1.68); + tempSystem.addComponent("i-pentane", 0.62); + tempSystem.addComponent("n-pentane", 0.79); + tempSystem.addComponent("n-hexane", 0.83); + tempSystem.addTBPfraction("C7", 1.06, 92.2 / 1000.0, 0.7324); + tempSystem.addTBPfraction("C8", 1.06, 104.6 / 1000.0, 0.7602); + tempSystem.addTBPfraction("C9", 0.79, 119.1 / 1000.0, 0.7677); + tempSystem.addTBPfraction("C10", 0.57, 133.0 / 1000.0, 0.79); + tempSystem.addTBPfraction("C11", 0.38, 155.0 / 1000.0, 0.795); + tempSystem.addTBPfraction("C12", 0.37, 162.0 / 1000.0, 0.806); + tempSystem.addTBPfraction("C13", 0.32, 177.0 / 1000.0, 0.824); + tempSystem.addTBPfraction("C14", 0.27, 198.0 / 1000.0, 0.835); + tempSystem.addTBPfraction("C15", 0.23, 202.0 / 1000.0, 0.84); + tempSystem.addTBPfraction("C16", 0.19, 215.0 / 1000.0, 0.846); + tempSystem.addTBPfraction("C17", 0.17, 234.0 / 1000.0, 0.84); + tempSystem.addTBPfraction("C18", 0.13, 251.0 / 1000.0, 0.844); + tempSystem.addTBPfraction("C19", 0.13, 270.0 / 1000.0, 0.854); + tempSystem.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.88); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + + SeparatorTest sepSim = new SeparatorTest(tempSystem); + double[] temps = {313.15, 313.15, 313.15, 313.15, 313.15, 313.15, 313.15}; + double[] pres = + {500, 400, 200, 100, 50.0, 5.0, ThermodynamicConstantsInterface.referencePressure}; + sepSim.setSeparatorConditions(temps, pres); + sepSim.runCalc(); + + assertEquals(1.1224612120760051, sepSim.getBofactor()[4], 0.0001); + } +} diff --git a/src/test/java/neqsim/PVTsimulation/simulation/SlimTubeSimTest.java b/src/test/java/neqsim/PVTsimulation/simulation/SlimTubeSimTest.java new file mode 100644 index 0000000000..37694696ab --- /dev/null +++ b/src/test/java/neqsim/PVTsimulation/simulation/SlimTubeSimTest.java @@ -0,0 +1,44 @@ +package neqsim.PVTsimulation.simulation; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class SlimTubeSimTest { + @Test + void testRun() { + SystemInterface gasSystem = new SystemSrkEos(298.0, 200.0); + gasSystem.addComponent("CO2", 10.0); + // gasSystem.addComponent("ethane", 2.0); + gasSystem.setMixingRule(2); + + SystemInterface oilSystem = new SystemSrkEos(298.0, 200.0); + oilSystem.addComponent("CO2", 0.1); + oilSystem.addComponent("methane", 1.5); + oilSystem.addComponent("ethane", 1.5); + oilSystem.addTBPfraction("C7", 1.06, 92.2 / 1000.0, 0.7324); + oilSystem.addTBPfraction("C8", 1.06, 104.6 / 1000.0, 0.7602); + oilSystem.addTBPfraction("C9", 0.79, 119.1 / 1000.0, 0.7677); + oilSystem.addTBPfraction("C10", 0.57, 133.0 / 1000.0, 0.79); + oilSystem.addTBPfraction("C11", 0.38, 155.0 / 1000.0, 0.795); + oilSystem.addTBPfraction("C12", 0.37, 162.0 / 1000.0, 0.806); + oilSystem.addTBPfraction("C13", 0.32, 177.0 / 1000.0, 0.824); + oilSystem.addTBPfraction("C14", 0.27, 198.0 / 1000.0, 0.835); + oilSystem.addTBPfraction("C15", 0.23, 202.0 / 1000.0, 0.84); + oilSystem.addTBPfraction("C16", 0.19, 215.0 / 1000.0, 0.846); + oilSystem.addTBPfraction("C17", 0.17, 234.0 / 1000.0, 0.84); + oilSystem.addTBPfraction("C18", 0.13, 251.0 / 1000.0, 0.844); + oilSystem.addTBPfraction("C19", 0.13, 270.0 / 1000.0, 0.854); + oilSystem.addPlusFraction("C20", 20.62, 381.0 / 1000.0, 0.88); + oilSystem.getCharacterization().characterisePlusFraction(); + oilSystem.setMixingRule(2); + + SlimTubeSim sepSim = new SlimTubeSim(oilSystem, gasSystem); + sepSim.setTemperature(273.15 + 100); + sepSim.setPressure(380.0); + sepSim.setNumberOfSlimTubeNodes(40); + sepSim.run(); + assertEquals(242.3, sepSim.getPressures()[3], 0.001); + } +} diff --git a/src/test/java/neqsim/PVTsimulation/simulation/ViscositySimTest.java b/src/test/java/neqsim/PVTsimulation/simulation/ViscositySimTest.java new file mode 100644 index 0000000000..9c36e0f946 --- /dev/null +++ b/src/test/java/neqsim/PVTsimulation/simulation/ViscositySimTest.java @@ -0,0 +1,29 @@ +package neqsim.PVTsimulation.simulation; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class ViscositySimTest { + @Test + void testRunCalc() { + SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); + tempSystem.addComponent("n-heptane", 6.78); + tempSystem.addPlusFraction("C20", 10.62, 100.0 / 1000.0, 0.73); + tempSystem.setMixingRule(2); + tempSystem.init(0); + + ViscositySim sepSim = new ViscositySim(tempSystem); + double[] temps = {300.15, 293.15, 283.15, 273.15, 264.15}; + double[] pres = {5, 5, 5, 5.0, 5.0}; + sepSim.setTemperaturesAndPressures(temps, pres); + sepSim.runCalc(); + + double[][] expData = {{2e-4, 3e-4, 4e-4, 5e-4, 6e-4},}; + sepSim.setExperimentalData(expData); + // sepSim.runTuning(); + sepSim.runCalc(); + assertEquals(4.443002015621749E-4, sepSim.getOilViscosity()[0], 0.000001); + } +} diff --git a/src/test/java/neqsim/PVTsimulation/simulation/WaxFractionSimTest.java b/src/test/java/neqsim/PVTsimulation/simulation/WaxFractionSimTest.java new file mode 100644 index 0000000000..84cad879d2 --- /dev/null +++ b/src/test/java/neqsim/PVTsimulation/simulation/WaxFractionSimTest.java @@ -0,0 +1,57 @@ +package neqsim.PVTsimulation.simulation; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.util.database.NeqSimDataBase; + +public class WaxFractionSimTest { + @Test + void testRunCalc() { + NeqSimDataBase.setCreateTemporaryTables(true); + SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); + tempSystem.addComponent("methane", 6.78); + tempSystem.addTBPfraction("C19", 10.13, 170.0 / 1000.0, 0.7814); + tempSystem.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.850871882888); + tempSystem.getCharacterization().characterisePlusFraction(); + tempSystem.getWaxModel().addTBPWax(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + tempSystem.addSolidComplexPhase("wax"); + tempSystem.setMultiphaseWaxCheck(true); + tempSystem.setMultiPhaseCheck(true); + WaxFractionSim sepSim = new WaxFractionSim(tempSystem); + double[] temps = {293.15, 283.15, 273.15, 264.15, 263, 262, 261}; + double[] pres = {5, 5, 5.0, 5.0, 5.0, 5.0, 5.0}; + sepSim.setTemperaturesAndPressures(temps, pres); + sepSim.runCalc(); + assertEquals(0.2683853533110433, sepSim.getThermoSystem().getPhaseFraction("wax", "mass"), + 0.001); + } + + @Test + void testRunCalc2() { + NeqSimDataBase.setCreateTemporaryTables(true); + SystemInterface tempSystem = new SystemSrkEos(298.0, 10.0); + tempSystem.addComponent("methane", 6.78); + tempSystem.addTBPfraction("C19", 10.13, 170.0 / 1000.0, 0.7814); + tempSystem.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.850871882888); + tempSystem.getWaxModel().addTBPWax(); + tempSystem.createDatabase(true); + tempSystem.setMixingRule(2); + tempSystem.addSolidComplexPhase("wax"); + tempSystem.setMultiphaseWaxCheck(true); + tempSystem.setMultiPhaseCheck(true); + tempSystem.init(0); + tempSystem.init(1); + WaxFractionSim sepSim = new WaxFractionSim(tempSystem); + double[] temps = {293.15, 283.15, 273.15, 264.15, 263, 262, 261}; + double[] pres = {5, 5, 5.0, 5.0, 5.0, 5.0, 5.0}; + sepSim.setTemperaturesAndPressures(temps, pres); + sepSim.runCalc(); + NeqSimDataBase.setCreateTemporaryTables(false); + assertEquals(0.24895564649970403, sepSim.getThermoSystem().getPhaseFraction("wax", "mass"), + 0.001); + } +} diff --git a/src/test/java/neqsim/chemicalReactions/ChemicalReactionOperationsTest.java b/src/test/java/neqsim/chemicalReactions/ChemicalReactionOperationsTest.java new file mode 100644 index 0000000000..607c49bfb8 --- /dev/null +++ b/src/test/java/neqsim/chemicalReactions/ChemicalReactionOperationsTest.java @@ -0,0 +1,25 @@ +package neqsim.chemicalReactions; + +import org.junit.jupiter.api.BeforeAll; +import neqsim.thermo.system.SystemSrkEos; + +public class ChemicalReactionOperationsTest { + static SystemSrkEos testSystem; + + @BeforeAll + public void setUp() { + testSystem = new SystemSrkEos(303.3, 2.8); + + testSystem.addComponent("methane", 5.0, "kg/sec"); + // testSystem.addComponent("nitrogen", 100.0, "kg/sec"); + testSystem.addComponent("oxygen", 40.0, "kg/sec"); + testSystem.chemicalReactionInit(); + + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.setMaxNumberOfPhases(1); + testSystem.setNumberOfPhases(1); + testSystem.getChemicalReactionOperations().solveChemEq(0, 0); + } +} diff --git a/src/test/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionFactoryTest.java b/src/test/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionFactoryTest.java new file mode 100644 index 0000000000..df1b73c752 --- /dev/null +++ b/src/test/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionFactoryTest.java @@ -0,0 +1,16 @@ +package neqsim.chemicalReactions.chemicalReaction; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ChemicalReactionFactoryTest { + @Test + void testGetChemicalReaction() { + String[] reactionNames = ChemicalReactionFactory.getChemicalReactionNames(); + Assertions.assertNotEquals(0, reactionNames.length); + + ChemicalReactionFactory.getChemicalReaction("test"); + ChemicalReactionFactory.getChemicalReaction("CO2water"); + ChemicalReactionFactory.getChemicalReaction(reactionNames[0]); + } +} diff --git a/src/test/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionListTest.java b/src/test/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionListTest.java new file mode 100644 index 0000000000..a44d0552c0 --- /dev/null +++ b/src/test/java/neqsim/chemicalReactions/chemicalReaction/ChemicalReactionListTest.java @@ -0,0 +1,23 @@ +package neqsim.chemicalReactions.chemicalReaction; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +public class ChemicalReactionListTest { + ChemicalReactionList test; + + @BeforeEach + public void setUp() { + test = new ChemicalReactionList(); + } + + @Disabled + @Test + public void TestremoveJunkReactions() { + // String[] test2 = {"water", "MDEA"}; + // test.removeJunkReactions(test2); + // String[] comp = test.getAllComponents(); + // System.out.println("components: " + comp.length); + } +} diff --git a/src/test/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/StratifiedFlowNodeTest.java b/src/test/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/StratifiedFlowNodeTest.java new file mode 100644 index 0000000000..13867a9b0c --- /dev/null +++ b/src/test/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhasePipeFlowNode/StratifiedFlowNodeTest.java @@ -0,0 +1,261 @@ +package neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhasePipeFlowNode; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import neqsim.fluidMechanics.geometryDefinitions.pipe.PipeData; +import neqsim.thermo.phase.PhaseType; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class StratifiedFlowNodeTest { + @Test + void testInit() { + SystemInterface testSystem = new SystemSrkEos(313.3, 100.01325); + testSystem.addComponent("methane", 1100, "kg/hr", 0); + testSystem.addComponent("nC10", 11.1, "kg/hr", 1); + testSystem.setMixingRule(2); + + PipeData pipe1 = new PipeData(0.1, 0.00025); + + StratifiedFlowNode test = new StratifiedFlowNode(testSystem, pipe1); + test.setInterphaseModelType(1); + test.setLengthOfNode(0.1); + test.getFluidBoundary().setHeatTransferCalc(false); + test.getFluidBoundary().setMassTransferCalc(true); + + for (int i = 0; i < 10; i++) { + test.initFlowCalc(); + test.calcFluxes(); + test.update(); + /* + * System.out.println( "flux methane " + test.getFluidBoundary().getInterphaseMolarFlux(0) + + * " [mol/m2*sec]"); System.out.println( "flux nC10 " + + * test.getFluidBoundary().getInterphaseMolarFlux(1) + " [mol/m2*sec]"); + * System.out.println("gas velocity " + test.getSuperficialVelocity(0) + " m/sec"); + * System.out.println("liquid velocity " + test.getVelocity(1) + " m/sec"); + * System.out.println("liquid holdup " + test.getPhaseFraction(1) + "-"); + * System.out.println("interface contact area " + test.getInterphaseContactLength(0) + + * "m2/m"); System.out.println("gas flow rate " + test.getMassFlowRate(0) * 60 * 60 + + * " kg/hr"); System.out.println("liquid flow rate " + test.getMassFlowRate(1) * 60 * 60 + + * " kg/hr"); + */ + } + } + + @Test + void testInit2() { + SystemInterface testSystem = new SystemSrkEos(313.3, 100.01325); + testSystem.addComponent("methane", 1100, "kg/hr", 0); + testSystem.addComponent("nC10", 11.1, "kg/hr", 1); + testSystem.setMixingRule(2); + testSystem.initProperties(); + // testSystem.prettyPrint(); + PipeData pipe1 = new PipeData(0.1, 0.00025); + + StratifiedFlowNode test = new StratifiedFlowNode(testSystem, pipe1); + test.setInterphaseModelType(1); + test.setLengthOfNode(0.001); + test.getFluidBoundary().setHeatTransferCalc(false); + test.getFluidBoundary().setMassTransferCalc(true); + + test.initFlowCalc(); + test.calcFluxes(); + + // System.out.println( + // "flux methane " + test.getFluidBoundary().getInterphaseMolarFlux(0) + " [mol/m2*sec]"); + // System.out.println( + // "flux nC10 " + test.getFluidBoundary().getInterphaseMolarFlux(1) + " [mol/m2*sec]"); + + SystemInterface gasPhase = testSystem.phaseToSystem("gas"); + SystemInterface oilPhase = testSystem.phaseToSystem("oil"); + + oilPhase.addComponent("methane", + test.getFluidBoundary().getInterphaseMolarFlux(0) * 1.0 * test.getInterphaseContactArea()); + oilPhase.addComponent(1, + test.getFluidBoundary().getInterphaseMolarFlux(1) * 1.0 * test.getInterphaseContactArea()); + oilPhase.initBeta(); + oilPhase.init_x_y(); + oilPhase.initProperties(); + // oilPhase.prettyPrint(); + + SystemInterface newFluid = new SystemSrkEos(313.3, 100.01325); + newFluid.addFluid(gasPhase, 0); + newFluid.addFluid(oilPhase, 1); + newFluid.setMixingRule(2); + newFluid.initProperties(); + // newFluid.prettyPrint(); + + StratifiedFlowNode test2 = new StratifiedFlowNode(newFluid, pipe1); + test2.setInterphaseModelType(1); + test2.setLengthOfNode(0.001); + test2.getFluidBoundary().setHeatTransferCalc(false); + test2.getFluidBoundary().setMassTransferCalc(true); + test2.initFlowCalc(); + test2.calcFluxes(); + + // System.out.println( + // "flux methane " + test2.getFluidBoundary().getInterphaseMolarFlux(0) + " [mol/m2*sec]"); + // System.out.println( + // "flux nC10 " + test2.getFluidBoundary().getInterphaseMolarFlux(1) + " [mol/m2*sec]"); + + oilPhase.addComponent(0, test2.getFluidBoundary().getInterphaseMolarFlux(0) * 100.0 + * test.getInterphaseContactArea()); + oilPhase.addComponent(1, test2.getFluidBoundary().getInterphaseMolarFlux(1) * 100.0 + * test.getInterphaseContactArea()); + oilPhase.initBeta(); + oilPhase.init_x_y(); + oilPhase.initProperties(); + + gasPhase = test2.getBulkSystem().phaseToSystem("gas"); + + SystemInterface newFluid2 = new SystemSrkEos(313.3, 100.01325); + newFluid2.addFluid(gasPhase, 0); + newFluid2.addFluid(oilPhase, 1); + newFluid2.setMixingRule(2); + newFluid2.initProperties(); + // newFluid2.prettyPrint(); + + StratifiedFlowNode test3 = new StratifiedFlowNode(newFluid2, pipe1); + test3.setInterphaseModelType(1); + test3.setLengthOfNode(0.001); + test3.getFluidBoundary().setHeatTransferCalc(false); + test3.getFluidBoundary().setMassTransferCalc(true); + test3.initFlowCalc(); + test3.calcFluxes(); + + // System.out.println( + // "flux methane " + test3.getFluidBoundary().getInterphaseMolarFlux(0) + " [mol/m2*sec]"); + // System.out.println( + // "flux nC10 " + test3.getFluidBoundary().getInterphaseMolarFlux(1) + " [mol/m2*sec]"); + } + + @Test + void testInit3() { + SystemInterface[] gasPhases = new SystemInterface[10]; + SystemInterface[] oilPhases = new SystemInterface[10]; + StratifiedFlowNode[] nodes = new StratifiedFlowNode[10]; + SystemInterface[] fluids = new SystemInterface[10]; + PipeData[] pipes = new PipeData[10]; + + SystemInterface testSystem = new SystemSrkEos(313.3, 10.01325); + testSystem.addComponent("methane", 2.0, "MSm3/day", 0); + testSystem.addComponent("ethane", 0.10, "MSm3/day", 0); + testSystem.addComponent("nC10", 1000.0, "kg/hr", 1); + testSystem.setMixingRule(2); + testSystem.initProperties(); + + ThermodynamicOperations flash = new ThermodynamicOperations(testSystem); + flash.TPflash(); + + gasPhases[0] = testSystem.phaseToSystem(0); + gasPhases[0].setTotalFlowRate(2.0, "MSm3/day"); + gasPhases[0].setNumberOfPhases(1); + gasPhases[0].setPhaseType(0, PhaseType.GAS); + + for (int i = 0; i < oilPhases.length; i++) { + oilPhases[i] = testSystem.phaseToSystem(1); + oilPhases[i].setTotalFlowRate(1000.0, "kg/hr"); + oilPhases[i].setNumberOfPhases(1); + oilPhases[i].setPhaseType(0, PhaseType.OIL); + } + + for (int time = 0; time < 100; time++) { + for (int i = 0; i < 9; i++) { + fluids[i] = new SystemSrkEos(278.3, 100.01325); + fluids[i].addFluid(gasPhases[i], 0); + fluids[i].addFluid(oilPhases[i], 1); + fluids[i].setMixingRule(2); + fluids[i].initProperties(); + + pipes[i] = new PipeData(1.1, 0.00025); + + nodes[i] = new StratifiedFlowNode(fluids[i], pipes[i]); + nodes[i].setInterphaseModelType(1); + nodes[i].setLengthOfNode(1.0); + nodes[i].getFluidBoundary().setHeatTransferCalc(false); + nodes[i].getFluidBoundary().setMassTransferCalc(true); + nodes[i].getFluidBoundary().useFiniteFluxCorrection(false); + + nodes[i].initFlowCalc(); + nodes[i].calcFluxes(); + + try { + nodes[i].update(1.0); + if (i <= 9) { + gasPhases[i + 1] = nodes[i].getBulkSystem().phaseToSystem(0); + } + oilPhases[i] = nodes[i].getBulkSystem().phaseToSystem(1); + } catch (Exception e) { + e.printStackTrace(); + } + + // gasPhases[i + 1].prettyPrint(); + // System.out.println("time " + time + " node " + i + " mass oil " + // + oilPhases[i].getFlowRate("kg/hr") + " gas velocity " + nodes[i].getVelocity(0)); + } + + // oilPhases[0].prettyPrint(); + // System.out.println("flux methane " + nodes[0].getFluidBoundary().getInterphaseMolarFlux(0) + // + " [mol/m2*sec]"); + // System.out.println( + // "flux nC10 " + nodes[0].getFluidBoundary().getInterphaseMolarFlux(1) + " [mol/m2*sec]"); + // System.out.println("ethane gas " + // + nodes[0].getBulkSystem().getPhase(0).getComponent(1).getNumberOfMolesInPhase() + // + " liquid " + // + nodes[0].getBulkSystem().getPhase(1).getComponent(1).getNumberOfMolesInPhase()); + } + + for (int time = 0; time < 20; time++) { + for (int i = 0; i < 9; i++) { + fluids[i] = new SystemSrkEos(278.3, 100.01325); + fluids[i].addFluid(gasPhases[i], 0); + fluids[i].addFluid(oilPhases[i], 1); + fluids[i].setMixingRule(2); + fluids[i].initProperties(); + + pipes[i] = new PipeData(1.1, 0.00025); + + nodes[i] = new StratifiedFlowNode(fluids[i], pipes[i]); + nodes[i].setInterphaseModelType(1); + nodes[i].setLengthOfNode(1.0); + nodes[i].getFluidBoundary().setHeatTransferCalc(false); + nodes[i].getFluidBoundary().setMassTransferCalc(true); + nodes[i].getFluidBoundary().useFiniteFluxCorrection(false); + + nodes[i].initFlowCalc(); + nodes[i].calcFluxes(); + try { + nodes[i].update(1.0); + if (i <= 9) { + gasPhases[i + 1] = nodes[i].getBulkSystem().phaseToSystem(0); + } + oilPhases[i] = nodes[i].getBulkSystem().phaseToSystem(1); + } catch (Exception e) { + e.printStackTrace(); + } + + // gasPhases[i + 1].prettyPrint(); + // System.out.println("time " + time + " node " + i + " mass oil " + // + oilPhases[i].getFlowRate("kg/hr") + " gas velocity " + nodes[i].getVelocity(0)); + } + + // oilPhases[0].prettyPrint(); + // System.out.println("flux methane " + nodes[1].getFluidBoundary().getInterphaseMolarFlux(0) + // + " [mol/m2*sec]"); + // System.out.println( + // "flux ethane " + nodes[0].getFluidBoundary().getInterphaseMolarFlux(1) + " [mol/m2*sec]"); + // System.out.println("ethane gas " + // + nodes[0].getBulkSystem().getPhase(0).getComponent(1).getNumberOfMolesInPhase() + // + " liquid " + // + nodes[0].getBulkSystem().getPhase(1).getComponent(1).getNumberOfMolesInPhase()); + } + } + + @Test + @Disabled + void testDisplay() { + StratifiedFlowNode node = new StratifiedFlowNode(); + node.display(); + } +} diff --git a/src/test/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseStirredCellNode/StirredCellNodeTest.java b/src/test/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseStirredCellNode/StirredCellNodeTest.java new file mode 100644 index 0000000000..e7a1cf84db --- /dev/null +++ b/src/test/java/neqsim/fluidMechanics/flowNode/twoPhaseNode/twoPhaseStirredCellNode/StirredCellNodeTest.java @@ -0,0 +1,35 @@ +package neqsim.fluidMechanics.flowNode.twoPhaseNode.twoPhaseStirredCellNode; + +import org.junit.jupiter.api.Test; +import neqsim.fluidMechanics.geometryDefinitions.stirredCell.StirredCell; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class StirredCellNodeTest { + @Test + void testUpdate() { + SystemInterface testSystem = new SystemSrkEos(313.3, 10.01325); + StirredCell pipe1 = new StirredCell(2.0, 0.05); + // testSystem.addComponent("CO2", 1, "kg/hr", 0); + testSystem.addComponent("methane", 10, "kg/hr", 0); + // testSystem.addComponent("ethane", 1, "kg/hr", 0); + // testSystem.addComponent("n-hexane", 1.206862204876, "kg/min", 0); + testSystem.addComponent("nC10", 3, "kg/hr", 1); + testSystem.setMixingRule(2); + + StirredCellNode test = new StirredCellNode(testSystem, pipe1); + test.setInterphaseModelType(1); + test.getFluidBoundary().useFiniteFluxCorrection(true); + test.getFluidBoundary().useThermodynamicCorrections(true); + + test.setStirrerSpeed(10.0 / 60.0); + test.setStirrerDiameter(1.0); + test.setDt(0.0010); + + for (int i = 0; i < 10; i++) { + test.initFlowCalc(); + test.calcFluxes(); + test.update(); + } + } +} diff --git a/src/test/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/pipeFlowSystem/PipeFlowSystemTest.java b/src/test/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/pipeFlowSystem/PipeFlowSystemTest.java index 3fff720421..075bc77fe4 100644 --- a/src/test/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/pipeFlowSystem/PipeFlowSystemTest.java +++ b/src/test/java/neqsim/fluidMechanics/flowSystem/onePhaseFlowSystem/pipeFlowSystem/PipeFlowSystemTest.java @@ -6,7 +6,6 @@ import neqsim.fluidMechanics.flowSystem.FlowSystemInterface; import neqsim.thermo.system.SystemInterface; - public class PipeFlowSystemTest extends neqsim.NeqSimTest { FlowSystemInterface pipe; @@ -72,7 +71,7 @@ void testSolveSteadyStateConstantFrictionFactor() { pipe.getNode(i).setWallFrictionFactor(0, 0.00725); } pipe.solveSteadyState(10); - //System.out.println("pressure out set friction " + // logger.info("pressure out set friction " } @Test @@ -80,12 +79,12 @@ void testSolveSteadyState() { testInit(); pipe.solveSteadyState(10); for (int i = 0; i < pipe.getFlowNodes().length; i++) { - //System.out.println("wall friction " + pipe.getNode(i).getWallFrictionFactor(0)); + // logger.info("wall friction " + pipe.getNode(i).getWallFrictionFactor(0)); } - // System.out.println("pressure out calc friction " - // + pipe.getNode(pipe.getFlowNodes().length - 1).getBulkSystem().getPressure() + " bara"); - + // logger.info("pressure out calc friction " + // + pipe.getNode(pipe.getFlowNodes().length - 1).getBulkSystem().getPressure() + " bara"); + // pipe.print(); } @@ -93,7 +92,7 @@ void testSolveSteadyState() { void testSolveTransient() { testInit(); // transient solver - double[] times = {0, 10000, 20000};// , 30000, 40000, 50000};//, 60000, 70000, 80000, + double[] times = {0, 10000, 20000}; // , 30000, 40000, 50000}; //, 60000, 70000, 80000, // 90000}; pipe.getTimeSeries().setTimes(times); @@ -113,9 +112,9 @@ void testSolveTransient() { testSystem3.addComponent("ethane", 1221.10); testSystem3.init(0); - SystemInterface[] systems = {testSystem, testSystem2, testSystem2};// , testSystem2, + SystemInterface[] systems = {testSystem, testSystem2, testSystem2}; // , testSystem2, // testSystem2, - // testSystem2};//,testSystem2,testSystem2,testSystem2,testSystem2,testSystem2}; + // testSystem2}; //,testSystem2,testSystem2,testSystem2,testSystem2,testSystem2}; pipe.getTimeSeries().setInletThermoSystems(systems); pipe.getTimeSeries().setNumberOfTimeStepsInInterval(10); // double[] outletFlowRates = {0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, @@ -126,7 +125,6 @@ void testSolveTransient() { // pipe.getDisplay().displayResult("composition"); // pipe.getDisplay().displayResult("pressure"); // pipe.getDisplay().displayResult("composition"); - // pipe.getDisplay().createNetCdfFile("c:/temp5.nc"); // pipe.getDisplay(1).displayResult(); } } diff --git a/src/test/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/shipSystem/LNGshipTest.java b/src/test/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/shipSystem/LNGshipTest.java new file mode 100644 index 0000000000..1287735344 --- /dev/null +++ b/src/test/java/neqsim/fluidMechanics/flowSystem/twoPhaseFlowSystem/shipSystem/LNGshipTest.java @@ -0,0 +1,61 @@ +package neqsim.fluidMechanics.flowSystem.twoPhaseFlowSystem.shipSystem; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; + +class LNGshipTest { + LNGship testShip; + SystemInterface testSystem; + + @BeforeEach + void setUp() { + testSystem = new neqsim.thermo.system.SystemSrkEos(100, 1.0); + testSystem.addComponent("methane", 0.9); + testSystem.addComponent("nitrogen", 0.1); + testSystem.init(0); + + testShip = new LNGship(testSystem, 1_000_000, 0.01); + } + + @Test + void createSystem() { + assertEquals(0.7, testShip.getLiquidDensity()); + assertEquals(0.0, testShip.dailyBoilOffVolume); + assertEquals(0.0, testShip.initialNumberOffMoles); + testShip.createSystem(); + assertEquals(474.3293447569919, testShip.getLiquidDensity()); + assertEquals(10_000.0, testShip.dailyBoilOffVolume); + assertEquals(2.7513223265419292E10, testShip.initialNumberOffMoles); + } + + @Test + public void testSolveSteadyState() { + assertEquals(-173.15, testShip.getThermoSystem().getTemperature("C"), 1e-2); + testShip.createSystem(); + testShip.solveSteadyState(1, null); + assertEquals(-176.43, testShip.getThermoSystem().getTemperature("C"), 1e-2); + assertEquals(testSystem.getPhase("oil").getComponent("nitrogen").getx(), + testShip.getThermoSystem().getPhase("oil").getComponent("nitrogen").getx(), 1e-4); + assertEquals(testSystem.getPhase("oil").getComponent("methane").getx(), + testShip.getThermoSystem().getPhase("oil").getComponent("methane").getx(), 1e-4); + } + + @Test + void solveTransient() { + assertNull(testShip.volume); + assertEquals(0.0, testShip.endVolume); + assertEquals(1_000_000, testShip.totalTankVolume); // Initial cargo volume + + testShip.createSystem(); + testShip.solveSteadyState(0, null); + testShip.solveTransient(0, null); + + assertEquals(testShip.numberOffTimeSteps, testShip.tankTemperature.length); // Check that the + // results have + // correct length + assertEquals(600_000.0, testShip.endVolume); + } +} diff --git a/src/test/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PallRingPackingTest.java b/src/test/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PallRingPackingTest.java new file mode 100644 index 0000000000..0a1ad5e847 --- /dev/null +++ b/src/test/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/PallRingPackingTest.java @@ -0,0 +1,47 @@ +package neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class PallRingPackingTest { + static PallRingPacking prp; + + @BeforeAll + static void setUp() { + prp = new PallRingPacking(); + } + + @Test + void testGetSize() { + double origSize = prp.getSize(); + Assertions.assertEquals(origSize, prp.getSize()); + double newSize = origSize + 1; + prp.setSize(newSize); + Assertions.assertEquals(newSize, prp.getSize()); + } + + @Test + void testGetSurfaceAreaPrVolume() { + double origSize = prp.getSurfaceAreaPrVolume(); + Assertions.assertEquals(origSize, prp.getSurfaceAreaPrVolume()); + } + + @Test + void testGetVoidFractionPacking() { + double origSize = prp.getVoidFractionPacking(); + Assertions.assertEquals(origSize, prp.getVoidFractionPacking()); + double newSize = origSize + 1; + prp.setVoidFractionPacking(newSize); + Assertions.assertEquals(newSize, prp.getVoidFractionPacking()); + } + + @Test + void testGetName() { + String origName = prp.getName(); + Assertions.assertEquals(origName, prp.getName()); + String newName = origName + "_1"; + prp.setName(newName); + Assertions.assertEquals(newName, prp.getName()); + } +} diff --git a/src/test/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/RachigRingPackingTest.java b/src/test/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/RachigRingPackingTest.java new file mode 100644 index 0000000000..ad7c27ad35 --- /dev/null +++ b/src/test/java/neqsim/fluidMechanics/geometryDefinitions/internalGeometry/packings/RachigRingPackingTest.java @@ -0,0 +1,47 @@ +package neqsim.fluidMechanics.geometryDefinitions.internalGeometry.packings; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class RachigRingPackingTest { + static RachigRingPacking rp; + + @BeforeAll + static void setUp() { + rp = new RachigRingPacking(); + } + + @Test + void testGetSize() { + double origSize = rp.getSize(); + Assertions.assertEquals(origSize, rp.getSize()); + double newSize = origSize + 1; + rp.setSize(newSize); + Assertions.assertEquals(newSize, rp.getSize()); + } + + @Test + void testGetSurfaceAreaPrVolume() { + double origSize = rp.getSurfaceAreaPrVolume(); + Assertions.assertEquals(origSize, rp.getSurfaceAreaPrVolume()); + } + + @Test + void testGetVoidFractionPacking() { + double origSize = rp.getVoidFractionPacking(); + Assertions.assertEquals(origSize, rp.getVoidFractionPacking()); + double newSize = origSize + 1; + rp.setVoidFractionPacking(newSize); + Assertions.assertEquals(newSize, rp.getVoidFractionPacking()); + } + + @Test + void testGetName() { + String origName = rp.getName(); + Assertions.assertEquals(origName, rp.getName()); + String newName = origName + "_1"; + rp.setName(newName); + Assertions.assertEquals(newName, rp.getName()); + } +} diff --git a/src/test/java/neqsim/fluidMechanics/util/example/WettedWall_CO2_water.java b/src/test/java/neqsim/fluidMechanics/util/example/WettedWall_CO2_water.java index 695fbd48b5..5a54f05647 100644 --- a/src/test/java/neqsim/fluidMechanics/util/example/WettedWall_CO2_water.java +++ b/src/test/java/neqsim/fluidMechanics/util/example/WettedWall_CO2_water.java @@ -18,7 +18,6 @@ * @since 2.2.3 */ public class WettedWall_CO2_water extends neqsim.NeqSimTest { - /** * This method is just meant to test the thermo package. * diff --git a/src/test/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/FrictionTheoryViscosityMethodTest.java b/src/test/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/FrictionTheoryViscosityMethodTest.java index 50b3e3c96e..07bf52556f 100644 --- a/src/test/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/FrictionTheoryViscosityMethodTest.java +++ b/src/test/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/FrictionTheoryViscosityMethodTest.java @@ -5,26 +5,25 @@ import org.junit.jupiter.api.Test; import neqsim.thermodynamicOperations.ThermodynamicOperations; -public class FrictionTheoryViscosityMethodTest extends neqsim.NeqSimTest{ - static neqsim.thermo.system.SystemInterface testSystem = null; - - @BeforeAll - public static void setUp() { - testSystem = new neqsim.thermo.system.SystemSrkEos(273.15 + 25.0, 42.0); - testSystem.addComponent("methane", 0.5); - testSystem.addComponent("ethane", 0.5); - testSystem.setMixingRule("classic"); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - } +public class FrictionTheoryViscosityMethodTest extends neqsim.NeqSimTest { + static neqsim.thermo.system.SystemInterface testSystem = null; - @Test - void testCalcViscosity() { - testSystem.getPhase("gas").getPhysicalProperties().setViscosityModel("friction theory"); - testSystem.initProperties(); - double expected = 1.11212E-5; - double actual = testSystem.getPhase("gas").getViscosity("kg/msec"); - assertEquals(expected, actual, 1e-5); + @BeforeAll + public static void setUp() { + testSystem = new neqsim.thermo.system.SystemSrkEos(273.15 + 25.0, 42.0); + testSystem.addComponent("methane", 0.5); + testSystem.addComponent("ethane", 0.5); + testSystem.setMixingRule("classic"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + } - } + @Test + void testCalcViscosity() { + testSystem.getPhase("gas").getPhysicalProperties().setViscosityModel("friction theory"); + testSystem.initProperties(); + double expected = 1.11212E-5; + double actual = testSystem.getPhase("gas").getViscosity("kg/msec"); + assertEquals(expected, actual, 1e-6); + } } diff --git a/src/test/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodTest.java b/src/test/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodTest.java new file mode 100644 index 0000000000..489a2c3829 --- /dev/null +++ b/src/test/java/neqsim/physicalProperties/physicalPropertyMethods/commonPhasePhysicalProperties/viscosity/PFCTViscosityMethodTest.java @@ -0,0 +1,22 @@ +package neqsim.physicalProperties.physicalPropertyMethods.commonPhasePhysicalProperties.viscosity; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class PFCTViscosityMethodTest extends neqsim.NeqSimTest { + static neqsim.thermo.system.SystemInterface testSystem = null; + + @Test + void testCalcViscosityHydrogen() { + testSystem = new neqsim.thermo.system.SystemSrkEos(273.15 + 25.0, 42.0); + testSystem.addComponent("hydrogen", 0.5); + testSystem.setMixingRule("classic"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + double expected = 7.8e-6; + double actual = testSystem.getPhase("gas").getViscosity("kg/msec"); + assertEquals(expected, actual, 1e-6); + } +} diff --git a/src/test/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/CostaldTest.java b/src/test/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/CostaldTest.java new file mode 100644 index 0000000000..95fed3d04d --- /dev/null +++ b/src/test/java/neqsim/physicalProperties/physicalPropertyMethods/liquidPhysicalProperties/density/CostaldTest.java @@ -0,0 +1,28 @@ +package neqsim.physicalProperties.physicalPropertyMethods.liquidPhysicalProperties.density; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class CostaldTest extends neqsim.NeqSimTest { + static neqsim.thermo.system.SystemInterface testSystem = null; + + @BeforeAll + public static void setUp() { + testSystem = new neqsim.thermo.system.SystemSrkEos(344.26, 689.47); + testSystem.addComponent("ethane", 70.0); + testSystem.addComponent("nC10", 30.0); + testSystem.setMixingRule("classic"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + } + + @Test + void testCalcDensity() { + testSystem.getPhase("oil").getPhysicalProperties().setDensityModel("Costald"); + double costaldDensity = testSystem.getPhase("oil").getPhysicalProperties().calcDensity(); + double costaldVolume = costaldDensity; + assertEquals(628.6198, costaldVolume, 1e-3); + } +} diff --git a/src/test/java/neqsim/physicalProperties/util/examples/TPflashTest.java b/src/test/java/neqsim/physicalProperties/util/examples/TPflashTest.java index a4405f92ea..fb80fb207e 100644 --- a/src/test/java/neqsim/physicalProperties/util/examples/TPflashTest.java +++ b/src/test/java/neqsim/physicalProperties/util/examples/TPflashTest.java @@ -16,87 +16,87 @@ * @since 2.2.3 */ public class TPflashTest { - static Logger logger = LogManager.getLogger(TPflashTest.class); + static Logger logger = LogManager.getLogger(TPflashTest.class); - /** - *

- * main. - *

+ /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 20, 30.0); + // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15+20, 1.0); + // SystemInterface testSystem = new SystemPrEos1978(273.15+10, 12.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + + // testSystem.addComponent("TEG", 10.71); + testSystem.addComponent("methane", 14.01); + // testSystem.changeComponentName("methane", "methaneHYME"); + // testSystem.addComponent("ethane", 0.01); + // testSystem.addComponent("nitrogen", 1.1); + // testSystem.addComponent("n-heptane", 51); + // testSystem.addComponent("ethane", 8.53); + // testSystem.addComponent("methane", 82.7); + // testSystem.addComponent("ethane", 7.5); + // testSystem.addComponent("propane", 3.4); + // testSystem.addComponent("i-butane", 0.5); + // testSystem.addComponent("n-butane", 0.9); + // testSystem.addComponent("i-pentane", 10.24); + // testSystem.addComponent("water", 0.4); + testSystem.addComponent("MEG", 99.5); // , "kg/sec"); + testSystem.addComponent("water", 0.5); // , "kg/sec"); + // testSystem.addTBPfraction("C7", 10.36, 110.0 / 1000.0, 0.82); + // testSystem.addTBPfraction("C10", 5.31, 150.0 / 1000.0, 0.89); + // testSystem.addComponent("water", 1.1); + /* + * testSystem.addComponent("i-butane", 1.95); testSystem.addComponent("n-butane", 1.95); + * testSystem.addComponent("n-pentane", 0.95); testSystem.addComponent("i-pentane", 0.95); + * + * testSystem.addTBPfraction("C6",0.10,100.0/1000.0,0.8); + * testSystem.addTBPfraction("C7",0.060,110.0/1000.0,0.82); + * testSystem.addTBPfraction("C8",0.00453,120.0/1000.0,0.83); + * testSystem.addTBPfraction("C9",0.0031,130.0/1000.0,0.85); * - * @param args an array of {@link java.lang.String} objects + * // testSystem.addPlusFraction("C10+", 0.008201, 142.0/1000, 0.9); + * + * // testSystem.getCharacterization().characterisePlusFraction(); */ - @SuppressWarnings("unused") - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 20, 30.0); - // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15+20, 1.0); - // SystemInterface testSystem = new SystemPrEos1978(273.15+10, 12.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - // testSystem.addComponent("TEG", 10.71); - testSystem.addComponent("methane", 14.01); - // testSystem.changeComponentName("methane", "methaneHYME"); - // testSystem.addComponent("ethane", 0.01); - // testSystem.addComponent("nitrogen", 1.1); - // testSystem.addComponent("n-heptane", 51); - // testSystem.addComponent("ethane", 8.53); - // testSystem.addComponent("methane", 82.7); - // testSystem.addComponent("ethane", 7.5); - // testSystem.addComponent("propane", 3.4); - // testSystem.addComponent("i-butane", 0.5); - // testSystem.addComponent("n-butane", 0.9); - // testSystem.addComponent("i-pentane", 10.24); - // testSystem.addComponent("water", 0.4); - testSystem.addComponent("MEG", 99.5);// , "kg/sec"); - testSystem.addComponent("water", 0.5);// , "kg/sec"); - // testSystem.addTBPfraction("C7", 10.36, 110.0 / 1000.0, 0.82); - // testSystem.addTBPfraction("C10", 5.31, 150.0 / 1000.0, 0.89); - // testSystem.addComponent("water", 1.1); - /* - * testSystem.addComponent("i-butane", 1.95); testSystem.addComponent("n-butane", 1.95); - * testSystem.addComponent("n-pentane", 0.95); testSystem.addComponent("i-pentane", 0.95); - * - * testSystem.addTBPfraction("C6",0.10,100.0/1000.0,0.8); - * testSystem.addTBPfraction("C7",0.060,110.0/1000.0,0.82); - * testSystem.addTBPfraction("C8",0.00453,120.0/1000.0,0.83); - * testSystem.addTBPfraction("C9",0.0031,130.0/1000.0,0.85); - * - * // testSystem.addPlusFraction("C10+", 0.008201, 142.0/1000, 0.9); - * - * // testSystem.getCharacterization().characterisePlusFraction(); - */ - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - // testSystem.setMultiPhaseCheck(true); - // testSystem.setPhysicalPropertyModel(6); - // testSystem.initPhysicalProperties(); - // testSystem.getInterphaseProperties().setInterfacialTensionModel(3); - // testSystem.useVolumeCorrection(true); - try { - testOps.TPflash(); - // testSystem.tuneModel("viscosity",1.5e-4,0); - // testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } - - testSystem.initPhysicalProperties(); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + // testSystem.setMultiPhaseCheck(true); + // testSystem.setPhysicalPropertyModel(6); + // testSystem.initPhysicalProperties(); + // testSystem.getInterphaseProperties().setInterfacialTensionModel(3); + // testSystem.useVolumeCorrection(true); + try { + testOps.TPflash(); + // testSystem.tuneModel("viscosity",1.5e-4,0); + // testOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } - try { - testOps.TPflash(); - // testSystem.tuneModel("viscosity",1.5e-4,0); - // testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString()); - } + testSystem.initPhysicalProperties(); - testSystem.initPhysicalProperties(); - // double a = - // testSystem.getPhase("oil").getPhysicalProperties().getDiffusionCoefficient(0, - // 1); - // testSystem.setPhysicalPropertyModel(6); - // testSystem.getPhase(0).initPhysicalProperties("viscosity"); - double visc = - testSystem.getPhase(1).getPhysicalProperties().getViscosityModel().calcViscosity(); - testSystem.display(); + try { + testOps.TPflash(); + // testSystem.tuneModel("viscosity",1.5e-4,0); + // testOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + + testSystem.initPhysicalProperties(); + // double a = + // testSystem.getPhase("oil").getPhysicalProperties().getDiffusionCoefficient(0, + // 1); + // testSystem.setPhysicalPropertyModel(6); + // testSystem.getPhase(0).initPhysicalProperties("viscosity"); + double visc = + testSystem.getPhase(1).getPhysicalProperties().getViscosityModel().calcViscosity(); + testSystem.display(); + } } diff --git a/src/test/java/neqsim/physicalProperties/util/examples/TPflashWater.java b/src/test/java/neqsim/physicalProperties/util/examples/TPflashWater.java index e1ed6af52f..98b5f1570c 100644 --- a/src/test/java/neqsim/physicalProperties/util/examples/TPflashWater.java +++ b/src/test/java/neqsim/physicalProperties/util/examples/TPflashWater.java @@ -16,37 +16,39 @@ * @since 2.2.3 */ public class TPflashWater { - static Logger logger = LogManager.getLogger(TPflashWater.class); + static Logger logger = LogManager.getLogger(TPflashWater.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 40.0, 100.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 40.0, 100.01325); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("methane", 0.3); - // testSystem.addComponent("n-heptane", 0.000071); - // testSystem.addComponent("water", 0.02, "kg/sec"); - // testSystem.addComponent("water", 0.97); - testSystem.addComponent("TEG", 0.103); + // testSystem.addComponent("methane", 0.3); + // testSystem.addComponent("n-heptane", 0.000071); + // testSystem.addComponent("water", 0.02, "kg/sec"); + // testSystem.addComponent("water", 0.97); + testSystem.addComponent("TEG", 0.103); - // testSystem.createDatabase(true); - testSystem.setMixingRule(10); - // testSystem.setMultiPhaseCheck(true); + // testSystem.createDatabase(true); + testSystem.setMixingRule(10); + // testSystem.setMultiPhaseCheck(true); - try { - testOps.TPflash(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.initPhysicalProperties(); - // System.out.println("viscosity " + testSystem.getViscosity()); - System.out.println("viscosity " + testSystem.getPhase("aqueous").getViscosity()); - testSystem.display(); - // System.out.println("surftens 0-2 " + - // testSystem.getInterphaseProperties().getSurfaceTension(0,2)); + try { + testOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.initPhysicalProperties(); + // System.out.println("viscosity " + testSystem.getViscosity()); + System.out.println("viscosity " + testSystem.getPhase("aqueous").getViscosity()); + testSystem.display(); + // System.out.println("surftens 0-2 " + + // testSystem.getInterphaseProperties().getSurfaceTension(0,2)); + } } diff --git a/src/test/java/neqsim/physicalProperties/util/examples/TPflash_1.java b/src/test/java/neqsim/physicalProperties/util/examples/TPflash_1.java index de9cddb7d6..eded1a6d25 100644 --- a/src/test/java/neqsim/physicalProperties/util/examples/TPflash_1.java +++ b/src/test/java/neqsim/physicalProperties/util/examples/TPflash_1.java @@ -7,60 +7,64 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TPflash_1 class.

+ *

+ * TPflash_1 class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class TPflash_1 { - static Logger logger = LogManager.getLogger(TPflash_1.class); + static Logger logger = LogManager.getLogger(TPflash_1.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 55, 100.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("nC14", 64.6); - testSystem.addComponent("methane", 38.99); - testSystem.addComponent("ethane", 11.4); - testSystem.addComponent("propane", 11.4); - // testSystem.addComponent("n-pentane", 24.0); - // testSystem.addComponent("c-hexane", 1.0); - // testSystem.addComponent("nC10", 1.0); - // testSystem.addComponent("water", 12); - // testSystem.addComponent("TEG", 12); - // testSystem.addComponent("MDEA", 1); - // testSystem.addComponent("CO2", 90.0); - // testSystem.addComponent("propane", 20.0); - // testSystem.addComponent("water", 10.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 55, 100.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("nC14", 64.6); + testSystem.addComponent("methane", 38.99); + testSystem.addComponent("ethane", 11.4); + testSystem.addComponent("propane", 11.4); + // testSystem.addComponent("n-pentane", 24.0); + // testSystem.addComponent("c-hexane", 1.0); + // testSystem.addComponent("nC10", 1.0); + // testSystem.addComponent("water", 12); + // testSystem.addComponent("TEG", 12); + // testSystem.addComponent("MDEA", 1); + // testSystem.addComponent("CO2", 90.0); + // testSystem.addComponent("propane", 20.0); + // testSystem.addComponent("water", 10.0); - // testSystem.addTBPfraction("C6",1.0, 86.178/1000.0, 0.664); - // testSystem.addTBPfraction("C7",1.0, 96.0/1000.0, 0.738); - // testSystem.addTBPfraction("C8",1.0, 107.0/1000.0, 0.765); - testSystem.addTBPfraction("C9", 56.0, 296.0 / 1000.0, 0.955); - // testSystem.useVolumeCorrection(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - testSystem.init(0); - // testSystem.initPhysicalProperties(); - // testSystem.setPhysicalPropertyModel(6); - // testSystem.getInterphaseProperties().setInterfacialTensionModel(1); - try { - testOps.TPflash(); - // testOps.bubblePointPressureFlash(true); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); - - // System.out.println("chem pot 1 " + - // testSystem.getPhase(0).getComponent(0).getGibbsEnergy(testSystem.getTemperature(),testSystem.getPressure())/testSystem.getPhase(0).getComponent(0).getNumberOfMolesInPhase()); - // System.out.println("chem pot 2 " + - // testSystem.getPhase(1).getComponent(0).getGibbsEnergy(testSystem.getTemperature(),testSystem.getPressure())/testSystem.getPhase(1).getComponent(0).getNumberOfMolesInPhase()); + // testSystem.addTBPfraction("C6",1.0, 86.178/1000.0, 0.664); + // testSystem.addTBPfraction("C7",1.0, 96.0/1000.0, 0.738); + // testSystem.addTBPfraction("C8",1.0, 107.0/1000.0, 0.765); + testSystem.addTBPfraction("C9", 56.0, 296.0 / 1000.0, 0.955); + // testSystem.useVolumeCorrection(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + testSystem.init(0); + // testSystem.initPhysicalProperties(); + // testSystem.setPhysicalPropertyModel(6); + // testSystem.getInterphaseProperties().setInterfacialTensionModel(1); + try { + testOps.TPflash(); + // testOps.bubblePointPressureFlash(true); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + + // System.out.println("chem pot 1 " + + // testSystem.getPhase(0).getComponent(0).getGibbsEnergy(testSystem.getTemperature(),testSystem.getPressure())/testSystem.getPhase(0).getComponent(0).getNumberOfMolesInPhase()); + // System.out.println("chem pot 2 " + + // testSystem.getPhase(1).getComponent(0).getGibbsEnergy(testSystem.getTemperature(),testSystem.getPressure())/testSystem.getPhase(1).getComponent(0).getNumberOfMolesInPhase()); + } } diff --git a/src/test/java/neqsim/physicalProperties/util/examples/TestCondensate.java b/src/test/java/neqsim/physicalProperties/util/examples/TestCondensate.java index 69d9763559..915c06c25e 100644 --- a/src/test/java/neqsim/physicalProperties/util/examples/TestCondensate.java +++ b/src/test/java/neqsim/physicalProperties/util/examples/TestCondensate.java @@ -2,60 +2,67 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemPrEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TestCondensate class.

+ *

+ * TestCondensate class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class TestCondensate { - static Logger logger = LogManager.getLogger(TestCondensate.class); - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemSrkEos(273.15 + 15.0, 1.01325); - SystemInterface testSystem = new SystemPrEos(273.15 + 15.0, 1.01325); - // testSystem.getCharacterization().setTBPModel("PedersenSRKHeavyOil"); - - testSystem.setFluidName("Condensate1"); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - testSystem.addComponent("methane", 12.2); - testSystem.addComponent("ethane", 0.027435983); - testSystem.addComponent("propane", 0.497619048); - testSystem.addComponent("i-butane", 0.0528045423); - testSystem.addComponent("n-butane", 0.0666465933); - testSystem.addComponent("22-dim-C3", 0.017033723); - testSystem.addComponent("i-pentane", 0.00904989605); - testSystem.addComponent("n-hexane", 0.392099792); - - testSystem.addTBPfraction("C16", 6.159226714, 1454.276 / 1000.0, 1.07); - testSystem.addTBPfraction("C7", 0.38667029, 91.9 / 1000.0, 0.7375); - testSystem.addTBPfraction("C8", 0.7518732, 104.1 / 1000.0, 0.7652); - testSystem.addPlusFraction("C9", 1.7518732, 404.1 / 1000.0, 0.91652); - - testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(12); - testSystem.getCharacterization().characterisePlusFraction(); - - testSystem.createDatabase(true); - testSystem.setMixingRule("classic"); - testSystem.init(0); - testSystem.init(1); - testSystem.setPhysicalPropertyModel(6); - try { - testOps.TPflash(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); + static Logger logger = LogManager.getLogger(TestCondensate.class); + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemSrkEos(273.15 + 15.0, + // ThermodynamicConstantsInterface.referencePressure); + SystemInterface testSystem = + new SystemPrEos(273.15 + 15.0, ThermodynamicConstantsInterface.referencePressure); + // testSystem.getCharacterization().setTBPModel("PedersenSRKHeavyOil"); + + testSystem.setFluidName("Condensate1"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + + testSystem.addComponent("methane", 12.2); + testSystem.addComponent("ethane", 0.027435983); + testSystem.addComponent("propane", 0.497619048); + testSystem.addComponent("i-butane", 0.0528045423); + testSystem.addComponent("n-butane", 0.0666465933); + testSystem.addComponent("22-dim-C3", 0.017033723); + testSystem.addComponent("i-pentane", 0.00904989605); + testSystem.addComponent("n-hexane", 0.392099792); + + testSystem.addTBPfraction("C16", 6.159226714, 1454.276 / 1000.0, 1.07); + testSystem.addTBPfraction("C7", 0.38667029, 91.9 / 1000.0, 0.7375); + testSystem.addTBPfraction("C8", 0.7518732, 104.1 / 1000.0, 0.7652); + testSystem.addPlusFraction("C9", 1.7518732, 404.1 / 1000.0, 0.91652); + + testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(12); + testSystem.getCharacterization().characterisePlusFraction(); + + testSystem.createDatabase(true); + testSystem.setMixingRule("classic"); + testSystem.init(0); + testSystem.init(1); + testSystem.setPhysicalPropertyModel(6); + try { + testOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + } } diff --git a/src/test/java/neqsim/physicalProperties/util/examples/TestDiffusionCoefficient.java b/src/test/java/neqsim/physicalProperties/util/examples/TestDiffusionCoefficient.java index f4fff0f216..70993223a6 100644 --- a/src/test/java/neqsim/physicalProperties/util/examples/TestDiffusionCoefficient.java +++ b/src/test/java/neqsim/physicalProperties/util/examples/TestDiffusionCoefficient.java @@ -7,63 +7,59 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TestDiffusionCoefficient class.

+ *

+ * TestDiffusionCoefficient class. + *

* * @author esol // * @version $Id: $Id * @since 2.2.3 */ public class TestDiffusionCoefficient { - static Logger logger = LogManager.getLogger(TestDiffusionCoefficient.class); + static Logger logger = LogManager.getLogger(TestDiffusionCoefficient.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 28.66, 12.2); - testSystem.addComponent("nitrogen", 0.037); - testSystem.addComponent("n-heptane", 0.475); - testSystem.addComponent("water", 0.475); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 28.66, 12.2); + testSystem.addComponent("nitrogen", 0.037); + testSystem.addComponent("n-heptane", 0.475); + testSystem.addComponent("water", 0.475); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.TPflash(); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } - System.out.println("binary diffusion coefficient water in nitrogen gas " - + testSystem.getPhase("gas").getPhysicalProperties() - .getDiffusionCoefficient("water", "nitrogen") - + " m2/sec"); - System.out - .println( - "binary diffusion coefficient nitrogen in liquid n-heptane " - + testSystem.getPhase("oil").getPhysicalProperties() - .getDiffusionCoefficient("nitrogen", "n-heptane") - + " m2/sec"); - System.out.println("binary diffusion coefficient nitrogen in water " - + testSystem.getPhase("aqueous").getPhysicalProperties() - .getDiffusionCoefficient("nitrogen", "water") - + " m2/sec"); + System.out + .println("binary diffusion coefficient water in nitrogen gas " + testSystem.getPhase("gas") + .getPhysicalProperties().getDiffusionCoefficient("water", "nitrogen") + " m2/sec"); + System.out.println( + "binary diffusion coefficient nitrogen in liquid n-heptane " + testSystem.getPhase("oil") + .getPhysicalProperties().getDiffusionCoefficient("nitrogen", "n-heptane") + " m2/sec"); + System.out + .println("binary diffusion coefficient nitrogen in water " + testSystem.getPhase("aqueous") + .getPhysicalProperties().getDiffusionCoefficient("nitrogen", "water") + " m2/sec"); - System.out.println("effective diffusion coefficient water in gas " + testSystem - .getPhase("gas").getPhysicalProperties().getEffectiveDiffusionCoefficient("water") - + " m2/sec"); - System.out.println("effective diffusion coefficient nitrogen in liquid n-heptane " - + testSystem.getPhase("oil").getPhysicalProperties() - .getEffectiveDiffusionCoefficient("nitrogen") - + " m2/sec"); - System.out.println("effective diffusion coefficient nitrogen in water " - + testSystem.getPhase("aqueous").getPhysicalProperties() - .getEffectiveDiffusionCoefficient("nitrogen") - + " m2/sec"); - } + System.out.println("effective diffusion coefficient water in gas " + testSystem.getPhase("gas") + .getPhysicalProperties().getEffectiveDiffusionCoefficient("water") + " m2/sec"); + System.out.println( + "effective diffusion coefficient nitrogen in liquid n-heptane " + testSystem.getPhase("oil") + .getPhysicalProperties().getEffectiveDiffusionCoefficient("nitrogen") + " m2/sec"); + System.out.println( + "effective diffusion coefficient nitrogen in water " + testSystem.getPhase("aqueous") + .getPhysicalProperties().getEffectiveDiffusionCoefficient("nitrogen") + " m2/sec"); + } } diff --git a/src/test/java/neqsim/physicalProperties/util/examples/TestSolidAdsorption.java b/src/test/java/neqsim/physicalProperties/util/examples/TestSolidAdsorption.java index 0e124e9453..47d92f64c8 100644 --- a/src/test/java/neqsim/physicalProperties/util/examples/TestSolidAdsorption.java +++ b/src/test/java/neqsim/physicalProperties/util/examples/TestSolidAdsorption.java @@ -7,45 +7,49 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TestSolidAdsorption class.

+ *

+ * TestSolidAdsorption class. + *

* * @author esol // * @version $Id: $Id * @since 2.2.3 */ public class TestSolidAdsorption { - static Logger logger = LogManager.getLogger(TestSolidAdsorption.class); + static Logger logger = LogManager.getLogger(TestSolidAdsorption.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(288.15, 1.4); - testSystem.addComponent("methane", 1.0); - testSystem.addComponent("CO2", 0.1); - testSystem.addComponent("n-heptane", 0.1); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(288.15, 1.4); + testSystem.addComponent("methane", 1.0); + testSystem.addComponent("CO2", 0.1); + testSystem.addComponent("n-heptane", 0.1); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } - - testSystem.getInterphaseProperties().initAdsorption(); - testSystem.getInterphaseProperties().setSolidAdsorbentMaterial("AC"); // AC Norit R1 - testSystem.getInterphaseProperties().calcAdsorption(); - // testSystem.initPhysicalProperties(); - System.out.println("surface excess CO2 from gas " - + testSystem.getInterphaseProperties().getAdsorptionCalc("gas").getSurfaceExcess("CO2") - + " kg CO2/kg AC"); - System.out.println("surface excess CO2 from oil " - + testSystem.getInterphaseProperties().getAdsorptionCalc("oil").getSurfaceExcess("CO2") - + " kg CO2/kg AC"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.TPflash(); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + + testSystem.getInterphaseProperties().initAdsorption(); + testSystem.getInterphaseProperties().setSolidAdsorbentMaterial("AC"); // AC Norit R1 + testSystem.getInterphaseProperties().calcAdsorption(); + // testSystem.initPhysicalProperties(); + System.out.println("surface excess CO2 from gas " + + testSystem.getInterphaseProperties().getAdsorptionCalc("gas").getSurfaceExcess("CO2") + + " kg CO2/kg AC"); + System.out.println("surface excess CO2 from oil " + + testSystem.getInterphaseProperties().getAdsorptionCalc("oil").getSurfaceExcess("CO2") + + " kg CO2/kg AC"); + } } diff --git a/src/test/java/neqsim/physicalProperties/util/examples/TestSurfaceTenison.java b/src/test/java/neqsim/physicalProperties/util/examples/TestSurfaceTenison.java index aaa58b05ad..37cb4f5a48 100644 --- a/src/test/java/neqsim/physicalProperties/util/examples/TestSurfaceTenison.java +++ b/src/test/java/neqsim/physicalProperties/util/examples/TestSurfaceTenison.java @@ -16,96 +16,96 @@ * @since 2.2.3 */ public class TestSurfaceTenison { - static Logger logger = LogManager.getLogger(TestSurfaceTenison.class); + static Logger logger = LogManager.getLogger(TestSurfaceTenison.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 28.66, 12.2); - // SystemInterface testSystem = new SystemPrEos(273.15 + 10.0, 50.0); - // testSystem.addComponent("CO2", 2.826); - // testSystem.addComponent("nitrogen", 0.546); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 28.66, 12.2); + // SystemInterface testSystem = new SystemPrEos(273.15 + 10.0, 50.0); + // testSystem.addComponent("CO2", 2.826); + // testSystem.addComponent("nitrogen", 0.546); - // SystemInterface testSystem = new SystemPrEos(273.15 + 30, 1); - // SystemInterface testSystem = new SystemSrkCPAs(273.65, 30.3); - // testSystem.getCharacterization().setTBPModel("PedersenSRK");//(RiaziDaubert - // PedersenPR PedersenSRK - // testSystem.getCharacterization().setLumpingModel("no"); //"abLumping"; - // testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(3); - testSystem.getCharacterization().setTBPModel("PedersenSRK"); - testSystem.addComponent("nitrogen", 0.037); - testSystem.addComponent("CO2", 0.475); - testSystem.addComponent("methane", 8.135); - testSystem.addComponent("ethane", 3.477); - testSystem.addComponent("propane", 1.64); - testSystem.addComponent("i-butane", 1.22); - testSystem.addComponent("n-butane", 6.857); - testSystem.addComponent("i-pentane", 6.492); - testSystem.addComponent("n-pentane", 7.515); - // testSystem.addTBPfraction("C6", 9.123, 84.9 / 1000.0, 0.6675); - testSystem.addTBPfraction("C7", 13.162, 90.0 / 1000.0, 0.7509); - // testSystem.addTBPfraction("C8", 12.641, 101.8 / 1000.0, 0.7782); - // testSystem.addTBPfraction("C9", 7.126, 115.3 / 1000.0, 0.7928); - // testSystem.addTBPfraction("C10", 22.098, 230.3 / 1000.0, 0.8454); - // testSystem.setHeavyTBPfractionAsPlusFraction(); - // testSystem.getCharacterization().characterisePlusFraction(); + // SystemInterface testSystem = new SystemPrEos(273.15 + 30, 1); + // SystemInterface testSystem = new SystemSrkCPAs(273.65, 30.3); + // testSystem.getCharacterization().setTBPModel("PedersenSRK"); //(RiaziDaubert + // PedersenPR PedersenSRK + // testSystem.getCharacterization().setLumpingModel("no"); //"abLumping"; + // testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(3); + testSystem.getCharacterization().setTBPModel("PedersenSRK"); + testSystem.addComponent("nitrogen", 0.037); + testSystem.addComponent("CO2", 0.475); + testSystem.addComponent("methane", 8.135); + testSystem.addComponent("ethane", 3.477); + testSystem.addComponent("propane", 1.64); + testSystem.addComponent("i-butane", 1.22); + testSystem.addComponent("n-butane", 6.857); + testSystem.addComponent("i-pentane", 6.492); + testSystem.addComponent("n-pentane", 7.515); + // testSystem.addTBPfraction("C6", 9.123, 84.9 / 1000.0, 0.6675); + testSystem.addTBPfraction("C7", 13.162, 90.0 / 1000.0, 0.7509); + // testSystem.addTBPfraction("C8", 12.641, 101.8 / 1000.0, 0.7782); + // testSystem.addTBPfraction("C9", 7.126, 115.3 / 1000.0, 0.7928); + // testSystem.addTBPfraction("C10", 22.098, 230.3 / 1000.0, 0.8454); + // testSystem.setHeavyTBPfractionAsPlusFraction(); + // testSystem.getCharacterization().characterisePlusFraction(); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - // testSystem.setMultiPhaseCheck(true); - // testSystem.useVolumeCorrection(true); - // testSystem.getInterphaseProperties().setInterfacialTensionModel(1); // GT == - // 1 Parac==0 + // testSystem.setMultiPhaseCheck(true); + // testSystem.useVolumeCorrection(true); + // testSystem.getInterphaseProperties().setInterfacialTensionModel(1); // GT == + // 1 Parac==0 - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - // testOps.bubblePointPressureFlash(false); - // testOps.bubblePointTemperatureFlash(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + // testOps.bubblePointPressureFlash(false); + // testOps.bubblePointTemperatureFlash(); - testOps.TPflash(); - testSystem.display(); - // testSystem = testSystem.clone(); - testSystem.getInterphaseProperties().setInterfacialTensionModel("gas", "oil", - "Linear Gradient Theory"); - System.out.println("tension gas-oil " - + testSystem.getInterphaseProperties().getSurfaceTension(0, 1)); + testOps.TPflash(); + testSystem.display(); + // testSystem = testSystem.clone(); + testSystem.getInterphaseProperties().setInterfacialTensionModel("gas", "oil", + "Linear Gradient Theory"); + System.out.println( + "tension gas-oil " + testSystem.getInterphaseProperties().getSurfaceTension(0, 1)); - // testOps.TPflash(); - // testSystem.display(); - // testOps.dewPointMach("n-pentane", "dewPointTemperature", - // testSystem.getTemperature()); - // testOps.dewPointTemperatureFlash(); - } catch (Exception e) { - logger.error(e.toString()); - } - - // testSystem.getPhase(1).getComponent(1).getChemicalPotentialdNTV(0, - // testSystem.getPhase(0)); - // testSystem.getInterphaseProperties().setInterfacialTensionModel(2); // GT == - // 1 Parac==0 - // testSystem.initPhysicalProperties(); - // System.out.println("influence n-pentane " + ((GTSurfaceTension) - // testSystem.getInterphaseProperties().getSurfaceTensionModel(0)).getInfluenceParameter((2.74 - // * 1e-3), 1)); - // System.out.println("z " + ((GTSurfaceTension) - // testSystem.getInterphaseProperties().getSurfaceTensionModel(0)).getz()[40]); - // testSystem.getInterphaseProperties().getInterfacialTensionModel(i) - // testSystem.getInterphaseProperties().getSurfaceTensionModel(0).getMolarDensity(0); - // //density profile for comp 0 - // testSystem.getInterphaseProperties().getSurfaceTensionModel(0).getz(); - // //density profile for comp 0 - // testSystem.getInterphaseProperties().getSurfaceTensionModel(0).getPressure(); - // //pressure profile for comp 0 - // testSystem.getInterphaseProperties().getSurfaceTensionModel(0).getMolarDensityTotal(); - // //total density profile for comp 0 - testSystem.display(); - // System.out.println("tension gas-water " + - // testSystem.getInterphaseProperties().getSurfaceTension(0, 1)); + // testOps.TPflash(); + // testSystem.display(); + // testOps.dewPointMach("n-pentane", "dewPointTemperature", + // testSystem.getTemperature()); + // testOps.dewPointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + + // testSystem.getPhase(1).getComponent(1).getChemicalPotentialdNTV(0, + // testSystem.getPhase(0)); + // testSystem.getInterphaseProperties().setInterfacialTensionModel(2); // GT == + // 1 Parac==0 + // testSystem.initPhysicalProperties(); + // System.out.println("influence n-pentane " + ((GTSurfaceTension) + // testSystem.getInterphaseProperties().getSurfaceTensionModel(0)).getInfluenceParameter((2.74 + // * 1e-3), 1)); + // System.out.println("z " + ((GTSurfaceTension) + // testSystem.getInterphaseProperties().getSurfaceTensionModel(0)).getz()[40]); + // testSystem.getInterphaseProperties().getInterfacialTensionModel(i) + // testSystem.getInterphaseProperties().getSurfaceTensionModel(0).getMolarDensity(0); + // //density profile for comp 0 + // testSystem.getInterphaseProperties().getSurfaceTensionModel(0).getz(); + // //density profile for comp 0 + // testSystem.getInterphaseProperties().getSurfaceTensionModel(0).getPressure(); + // //pressure profile for comp 0 + // testSystem.getInterphaseProperties().getSurfaceTensionModel(0).getMolarDensityTotal(); + // //total density profile for comp 0 + testSystem.display(); + // System.out.println("tension gas-water " + + // testSystem.getInterphaseProperties().getSurfaceTension(0, 1)); + } } diff --git a/src/test/java/neqsim/physicalProperties/util/examples/TestSurfaceTensionOde.java b/src/test/java/neqsim/physicalProperties/util/examples/TestSurfaceTensionOde.java index ce8299c34e..37cd21f2da 100644 --- a/src/test/java/neqsim/physicalProperties/util/examples/TestSurfaceTensionOde.java +++ b/src/test/java/neqsim/physicalProperties/util/examples/TestSurfaceTensionOde.java @@ -7,46 +7,50 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TestSurfaceTensionOde class.

+ *

+ * TestSurfaceTensionOde class. + *

* * @author oberg * @version $Id: $Id * @since 2.2.3 */ public class TestSurfaceTensionOde { - static Logger logger = LogManager.getLogger(TestSurfaceTensionOde.class); + static Logger logger = LogManager.getLogger(TestSurfaceTensionOde.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - double yscale; - SystemInterface testSystem = new SystemSrkEos(273.15, 1.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + double yscale; + SystemInterface testSystem = new SystemSrkEos(273.15, 1.0); - testSystem.addComponent("methane", 5.0); - // testSystem.addComponent("TEG", 5.0); - testSystem.addComponent("n-heptane", 2.01); - // testSystem.addComponent("n-heptane", 112.0); - // testSystem.addComponent("water", 10.0); - // testSystem.addComponent("water", 50.0); - // testSystem.addComponent("MEG", 50.0); + testSystem.addComponent("methane", 5.0); + // testSystem.addComponent("TEG", 5.0); + testSystem.addComponent("n-heptane", 2.01); + // testSystem.addComponent("n-heptane", 112.0); + // testSystem.addComponent("water", 10.0); + // testSystem.addComponent("water", 50.0); + // testSystem.addComponent("MEG", 50.0); - // testSystem.addComponent("water", 100); + // testSystem.addComponent("water", 100); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // testSystem.setMultiPhaseCheck(true); - testSystem.init(0); - testSystem.getInterphaseProperties().setInterfacialTensionModel(1); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + // testSystem.setMultiPhaseCheck(true); + testSystem.init(0); + testSystem.getInterphaseProperties().setInterfacialTensionModel(1); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + } } diff --git a/src/test/java/neqsim/processSimulation/controllerDevice/ControllerDeviceBaseClassTest.java b/src/test/java/neqsim/processSimulation/controllerDevice/ControllerDeviceBaseClassTest.java new file mode 100644 index 0000000000..5325a1ccf6 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/controllerDevice/ControllerDeviceBaseClassTest.java @@ -0,0 +1,97 @@ +package neqsim.processSimulation.controllerDevice; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class ControllerDeviceBaseClassTest { + static ControllerDeviceBaseClass c; + + @BeforeAll + static void setUp() { + c = new ControllerDeviceBaseClass("testPID"); + } + + @Test + void testSetControllerParameters() { + double zero = 0; + double positive = 9.9; + double negative = -0.1; + + c.setControllerParameters(zero, zero, zero); + + Assertions.assertEquals(zero, c.getKp()); + Assertions.assertEquals(zero, c.getTd()); + Assertions.assertEquals(zero, c.getTi()); + + c.setControllerParameters(positive, positive, positive); + Assertions.assertEquals(positive, c.getKp()); + Assertions.assertEquals(positive, c.getTd()); + Assertions.assertEquals(positive, c.getTi()); + + c.setControllerParameters(negative, positive, positive); + Assertions.assertEquals(positive, c.getKp()); + Assertions.assertEquals(positive, c.getTd()); + Assertions.assertEquals(positive, c.getTi()); + + c.setControllerParameters(positive, negative, positive); + Assertions.assertEquals(positive, c.getKp()); + Assertions.assertEquals(positive, c.getTd()); + Assertions.assertEquals(positive, c.getTi()); + + c.setControllerParameters(positive, positive, negative); + Assertions.assertEquals(positive, c.getKp()); + Assertions.assertEquals(positive, c.getTd()); + Assertions.assertEquals(positive, c.getTi()); + } + + @Test + void testGetKp() { + double kp = c.getKp(); + Assertions.assertEquals(c.getKp(), kp); + } + + @Test + void testGetTd() { + double td = c.getTd(); + Assertions.assertEquals(c.getTd(), td); + } + + @Test + void testGetTi() { + double ti = c.getTi(); + Assertions.assertEquals(c.getTi(), ti); + } + + @Test + void testGetUnit() { + String unit = c.getUnit(); + Assertions.assertEquals(c.getUnit(), unit); + } + + @Test + void testIsReverseActing() { + boolean isReverse = c.isReverseActing(); + Assertions.assertEquals(isReverse, c.isReverseActing()); + } + + @Test + void testSetReverseActing() { + boolean testValue = true; + boolean oldValue = c.isReverseActing(); + c.setReverseActing(testValue); + Assertions.assertEquals(testValue, c.isReverseActing()); + c.setReverseActing(oldValue); + Assertions.assertEquals(oldValue, c.isReverseActing()); + } + + @Test + void testSetUnit() { + String testUnit = "test"; + String oldUnit = c.getUnit(); + c.setUnit(testUnit); + Assertions.assertEquals(testUnit, c.getUnit()); + c.setUnit(oldUnit); + Assertions.assertEquals(oldUnit, c.getUnit()); + } +} diff --git a/src/test/java/neqsim/processSimulation/measurementDevice/CombustionEmissionsCalculatorTest.java b/src/test/java/neqsim/processSimulation/measurementDevice/CombustionEmissionsCalculatorTest.java new file mode 100644 index 0000000000..cc7e9f1d70 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/measurementDevice/CombustionEmissionsCalculatorTest.java @@ -0,0 +1,27 @@ +package neqsim.processSimulation.measurementDevice; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class CombustionEmissionsCalculatorTest { + @Test + void testGetMeasuredValue() { + SystemInterface fluid = new SystemSrkEos(190, 10); + fluid.addComponent("nitrogen", 0.01); + fluid.addComponent("CO2", 0.01); + fluid.addComponent("methane", 1); + fluid.addComponent("ethane", 0.05); + fluid.addComponent("propane", 0.01); + fluid.addComponent("n-butane", 0.001); + fluid.addComponent("i-butane", 0.001); + + Stream stream1 = new Stream("stream1", fluid); + stream1.setFlowRate(1.0, "kg/hr"); + stream1.run(); + CombustionEmissionsCalculator comp = new CombustionEmissionsCalculator("name1", stream1); + assertEquals(2.77772643250, comp.getMeasuredValue("kg/hr"), 0.0001); + } +} diff --git a/src/test/java/neqsim/processSimulation/measurementDevice/FLowInducedVibrationTest.java b/src/test/java/neqsim/processSimulation/measurementDevice/FLowInducedVibrationTest.java new file mode 100644 index 0000000000..a4fc226def --- /dev/null +++ b/src/test/java/neqsim/processSimulation/measurementDevice/FLowInducedVibrationTest.java @@ -0,0 +1,121 @@ +package neqsim.processSimulation.measurementDevice; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.pipeline.PipeBeggsAndBrills; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.util.FlowRateAdjuster; +import neqsim.processSimulation.processSystem.ProcessSystem; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class FLowInducedVibrationTest extends neqsim.NeqSimTest { + static ProcessSystem process1; + static FlowInducedVibrationAnalyser flowInducedVibrationAnalyser; + static FlowInducedVibrationAnalyser flowInducedVibrationAnalyserFRMS; + + /** + * @throws java.lang.Exception + */ + @BeforeAll + static void setUpBeforeClass() throws Exception {} + + @Test + public void testSetUnit() { + double pressure = 58.3 + 1.01325; // bara of the separator + double temperature = 90; // temperature of the separator + double gas_flow_rate = 54559.25; // Sm3/hr + double oil_flow_rate = 50.66; // Sm3/hr + double water_flow_rate = 22.0; // Sm3/hr + + neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos( + (273.15 + 45), ThermodynamicConstantsInterface.referencePressure); + + testSystem.addComponent("H2S", 0.00016); + testSystem.addComponent("nitrogen", 0.0032); + testSystem.addComponent("CO2", 0.06539); + testSystem.addComponent("methane", 0.5686); + testSystem.addComponent("ethane", 0.073); + testSystem.addComponent("propane", 0.04149); + testSystem.addComponent("i-butane", 0.005189); + testSystem.addComponent("n-butane", 0.015133); + testSystem.addComponent("i-pentane", 0.004601); + testSystem.addComponent("n-pentane", 0.006); + testSystem.addTBPfraction("C6", 0.0077, 86.1800003051758 / 1000, + 86.1800003051758 / (1000 * 0.131586722637079)); + testSystem.addTBPfraction("C7", 0.0132, 94.8470001220703 / 1000, + 94.8470001220703 / (1000 * 0.141086913827126)); + testSystem.addTBPfraction("C8", 0.0138, 106.220001220703 / 1000, + 106.220001220703 / (1000 * 0.141086913827126)); + testSystem.addTBPfraction("C9", 0.009357, 120.457000732422 / 1000, + 120.457000732422 / (1000 * 0.156630031108116)); + testSystem.addTBPfraction("C10_C11", 0.0062, 140.369003295898 / 1000, + 140.369003295898 / (1000 * 0.178710051949529)); + testSystem.addTBPfraction("C12_C13", 0.0089, 167.561996459961 / 1000, + 167.561996459961 / (1000 * 0.208334072812978)); + testSystem.addTBPfraction("C14_C15", 0.0069, 197.501007080078 / 1000, + 197.501007080078 / (1000 * 0.240670271622303)); + testSystem.addTBPfraction("C16_C17", 0.0053, 229.033996582031 / 1000, + 229.033996582031 / (1000 * 0.274302534479916)); + testSystem.addTBPfraction("C18_C20", 0.0047, 262.010986328125 / 1000, + 262.010986328125 / (1000 * 0.308134346902454)); + testSystem.addTBPfraction("C21_C23", 0.004295, 303.558990478516 / 1000, + 303.558990478516 / (1000 * 0.350224115520606)); + testSystem.addTBPfraction("C24_C28", 0.003374, 355.920013427734 / 1000, + 355.920013427734 / (1000 * 0.402198101307449)); + testSystem.addTBPfraction("C29_C35", 0.005, 437.281005859375 / 1000, + 437.281005859375 / (1000 * 0.481715346021770)); + testSystem.addComponent("water", 0.127294); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.useVolumeCorrection(true); + testSystem.setPressure(pressure, "bara"); + testSystem.setTemperature(temperature, "C"); + testSystem.setTotalFlowRate(100.0, "kg/hr"); + testSystem.setMultiPhaseCheck(true); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initPhysicalProperties(); + + Stream stream_1 = new Stream("Stream1", testSystem); + stream_1.setFlowRate(100.0, "kg/hr"); + + FlowRateAdjuster flowRateAdj = new FlowRateAdjuster("Flow rate adjuster", stream_1); + flowRateAdj.setAdjustedFlowRates(gas_flow_rate, oil_flow_rate, water_flow_rate, "Sm3/hr"); + + PipeBeggsAndBrills pipe = new PipeBeggsAndBrills("pipe1 ", flowRateAdj.getOutletStream()); + pipe.setPipeWallRoughness(1e-6); + pipe.setLength(25); + pipe.setElevation(0.0); + pipe.setPipeSpecification(8.0, "LD201"); + pipe.setNumberOfIncrements(10); + + flowInducedVibrationAnalyser = + new FlowInducedVibrationAnalyser("Flow Induced Vibrations Analyzer 1", pipe); + flowInducedVibrationAnalyser.setMethod("LOF"); + + flowInducedVibrationAnalyserFRMS = + new FlowInducedVibrationAnalyser("Flow Induced Vibrations Analyzer FRMS", pipe); + flowInducedVibrationAnalyserFRMS.setMethod("FRMS"); + pipe.getOutletStream(); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(flowRateAdj); + operations.add(pipe); + operations.add(flowInducedVibrationAnalyser); + operations.add(flowInducedVibrationAnalyserFRMS); + operations.run(); + + double LOF = ((FlowInducedVibrationAnalyser) operations + .getMeasurementDevice("Flow Induced Vibrations Analyzer 1")).getMeasuredValue(); + Assertions.assertEquals(LOF, 0.161, 0.05); + + double FRMS = ((FlowInducedVibrationAnalyser) operations + .getMeasurementDevice("Flow Induced Vibrations Analyzer FRMS")).getMeasuredValue(); + Assertions.assertEquals(FRMS, 176, 5); + } +} diff --git a/src/test/java/neqsim/processSimulation/measurementDevice/MultiPhaseMeterTest.java b/src/test/java/neqsim/processSimulation/measurementDevice/MultiPhaseMeterTest.java new file mode 100644 index 0000000000..d63036d0c9 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/measurementDevice/MultiPhaseMeterTest.java @@ -0,0 +1,46 @@ +package neqsim.processSimulation.measurementDevice; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class MultiPhaseMeterTest { + @Test + void testMain() { + SystemInterface testFluid = new SystemSrkEos(338.15, 50.0); + testFluid.addComponent("nitrogen", 1.205); + testFluid.addComponent("CO2", 1.340); + testFluid.addComponent("methane", 87.974); + testFluid.addComponent("ethane", 5.258); + testFluid.addComponent("propane", 3.283); + testFluid.addComponent("i-butane", 0.082); + testFluid.addComponent("n-butane", 0.487); + testFluid.addComponent("i-pentane", 0.056); + testFluid.addComponent("n-pentane", 1.053); + testFluid.addComponent("nC10", 4.053); + testFluid.setMixingRule(2); + testFluid.setMultiPhaseCheck(true); + + testFluid.setTemperature(24.0, "C"); + testFluid.setPressure(48.0, "bara"); + testFluid.setTotalFlowRate(4.5, "MSm3/day"); + + Stream stream_1 = new Stream("Stream1", testFluid); + + MultiPhaseMeter multiPhaseMeter = new MultiPhaseMeter("test", stream_1); + multiPhaseMeter.setTemperature(90.0, "C"); + multiPhaseMeter.setPressure(60.0, "bara"); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(multiPhaseMeter); + operations.run(); + + Assertions.assertEquals(51.3073530232923, multiPhaseMeter.getMeasuredValue("GOR", ""), 1e-5); + Assertions.assertEquals(3106.770827796345, multiPhaseMeter.getMeasuredValue("GOR_std", ""), + 1e-2); + } +} diff --git a/src/test/java/neqsim/processSimulation/measurementDevice/WellAllocatorTest.java b/src/test/java/neqsim/processSimulation/measurementDevice/WellAllocatorTest.java index 07d3470d6d..f8c775ad66 100644 --- a/src/test/java/neqsim/processSimulation/measurementDevice/WellAllocatorTest.java +++ b/src/test/java/neqsim/processSimulation/measurementDevice/WellAllocatorTest.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.measurementDevice; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.separator.Separator; @@ -10,9 +12,9 @@ /** * @author ESOL - * */ class WellAllocatorTest extends neqsim.NeqSimTest { + static Logger logger = LogManager.getLogger(WellAllocatorTest.class); /** * @throws java.lang.Exception @@ -45,10 +47,8 @@ void testGetMeasuredValueString() { testFluid.setPressure(48.0, "bara"); testFluid.setTotalFlowRate(2500.0, "kg/hr"); - SystemInterface testFluid2 = testFluid.clone(); - testFluid.setTemperature(24.0, "C"); testFluid.setPressure(48.0, "bara"); testFluid.setTotalFlowRate(2500.0, "kg/hr"); @@ -80,12 +80,11 @@ void testGetMeasuredValueString() { WellAllocatorResponse responsAl = new WellAllocatorResponse(wellAlloc); - System.out.println("name " + responsAl.name); - System.out.println("gas flow " + responsAl.gasExportRate); - System.out.println("oil flow " + responsAl.oilExportRate); - System.out.println("total flow " + responsAl.totalExportRate); + logger.info("name " + responsAl.name); + logger.info("gas flow " + responsAl.gasExportRate); + logger.info("oil flow " + responsAl.oilExportRate); + logger.info("total flow " + responsAl.totalExportRate); // stream_1.displayResult(); // stream_1.displayResult(); } - } diff --git a/src/test/java/neqsim/processSimulation/measurementDevice/nmVOCTest.java b/src/test/java/neqsim/processSimulation/measurementDevice/nmVOCTest.java new file mode 100644 index 0000000000..8804efe23e --- /dev/null +++ b/src/test/java/neqsim/processSimulation/measurementDevice/nmVOCTest.java @@ -0,0 +1,131 @@ +package neqsim.processSimulation.measurementDevice; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processSystem.ProcessSystem; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class nmVOCTest extends neqsim.NeqSimTest { + static ProcessSystem process1; + static NMVOCAnalyser vocanalyser1; + + /** + * @throws java.lang.Exception + */ + @BeforeAll + static void setUpBeforeClass() throws Exception { + SystemInterface thermoSystem = new SystemSrkEos(298.0, 100.0); + thermoSystem.addComponent("water", 1.0); + thermoSystem.addComponent("methane", 1.0); + thermoSystem.addComponent("ethane", 1.0); + thermoSystem.addComponent("propane", 1.0); + thermoSystem.addComponent("i-butane", 1.0); + thermoSystem.addComponent("n-butane", 1.0); + thermoSystem.addComponent("i-pentane", 1.0); + thermoSystem.addComponent("n-pentane", 1.0); + + Stream stream1 = new Stream("stream 1", thermoSystem); + vocanalyser1 = new NMVOCAnalyser("vocanalyser 1", stream1); + vocanalyser1.setUnit("tonnes/year"); + + process1 = new ProcessSystem(); + process1.add(stream1); + process1.add(vocanalyser1); + } + + @Test + public void testSetUnit() { + String origUnit = vocanalyser1.getUnit(); + String newUnit = "kg/hr"; + Assertions.assertNotEquals(origUnit, newUnit); + vocanalyser1.setUnit(newUnit); + Assertions.assertEquals(newUnit, vocanalyser1.getUnit()); + vocanalyser1.setUnit(origUnit); + Assertions.assertEquals(origUnit, vocanalyser1.getUnit()); + } + + @Test + public void testGetFlowRate() { + process1.run(); + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("kg/min"), + 60 * ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("kg/sec")); + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("kg/hr"), + 60 * ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("kg/min")); + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("tonnes/year"), + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("kg/hr") * 24 * 365 / 1000); + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("m3/min"), + 60 * ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("m3/sec")); + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("m3/hr"), + 60 * ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("m3/min")); + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("mole/min"), + 60 * ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("mole/sec")); + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("mole/hr"), + 60 * ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getFlowRate("mole/min")); + // throw new RuntimeException("failed.. unit: " + flowunit + " not supported"); + } + + @Test + public void testGetTotalFlowRate() { + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getTotalFlowRate("kg/min"), + 60 * ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getTotalFlowRate("kg/sec")); + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getTotalFlowRate("kg/hr"), + 60 * ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getTotalFlowRate("kg/min")); + + // Assertions.assertEquals(thermoSystem.getComponent("water").getTotalFlowRate("m3/min"),60 + // * thermoSystem.getComponent("water").getTotalFlowRate("m3/sec")); + // Assertions.assertEquals(thermoSystem.getComponent("water").getTotalFlowRate("m3/hr"),60 + // * + // thermoSystem.getComponent("water").getTotalFlowRate("m3/min")); + + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getTotalFlowRate("mole/min"), + 60 * ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getTotalFlowRate("mole/sec")); + Assertions.assertEquals( + ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getTotalFlowRate("mole/hr"), + 60 * ((Stream) process1.getUnit("stream 1")).getFluid().getComponent("water") + .getTotalFlowRate("mole/min")); + // throw new RuntimeException("failed.. unit: " + flowunit + " not supported"); + } + + @Test + public void nmVOCFlowRateTest() { + process1.run(); + Assertions.assertEquals(vocanalyser1.getMeasuredValue(), 10555.540704); + Assertions.assertEquals(vocanalyser1.getMeasuredValue("tonnes/year"), 10555.540704); + Assertions.assertEquals(vocanalyser1.getMeasuredValue("kg/hr"), + 10555.540704 * 1000 / (365 * 24)); + } +} diff --git a/src/test/java/neqsim/processSimulation/measurementDevice/pHProbeTest.java b/src/test/java/neqsim/processSimulation/measurementDevice/pHProbeTest.java index 3e8741b2bc..6c9b10fe84 100644 --- a/src/test/java/neqsim/processSimulation/measurementDevice/pHProbeTest.java +++ b/src/test/java/neqsim/processSimulation/measurementDevice/pHProbeTest.java @@ -1,19 +1,23 @@ package neqsim.processSimulation.measurementDevice; import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.BeforeAll; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; class pHProbeTest { + static Logger logger = LogManager.getLogger(pHProbeTest.class); - @BeforeAll - static void setUpBeforeClass() throws Exception {} + static SystemInterface testFluid; + static StreamInterface stream_1; - @Test - void testGetMeasuredValue() { + @BeforeEach + void setUp() { SystemInterface testFluid = new SystemSrkCPAstatoil(318.15, 50.0); testFluid.addComponent("nitrogen", 1.205); testFluid.addComponent("CO2", 1.340); @@ -28,51 +32,24 @@ void testGetMeasuredValue() { testFluid.addComponent("water", 141.053); testFluid.setMixingRule(10); testFluid.setMultiPhaseCheck(true); - - Stream stream_1 = new Stream("Stream1", testFluid); + stream_1 = new Stream("Stream1", testFluid); stream_1.run(); - - pHProbe phmeasurement = new pHProbe(stream_1); - phmeasurement.run(); - System.out.println("pH " + phmeasurement.getMeasuredValue()); - assertEquals(4.079098133484792, phmeasurement.getMeasuredValue(),0.01); } - + @Test - void testGetMeasuredValueWithAlkanility() { - SystemInterface testFluid = new SystemSrkCPAstatoil(318.15, 50.0); - testFluid.addComponent("nitrogen", 1.205); - testFluid.addComponent("CO2", 1.340); - testFluid.addComponent("methane", 87.974); - testFluid.addComponent("ethane", 5.258); - testFluid.addComponent("propane", 3.283); - testFluid.addComponent("i-butane", 0.082); - testFluid.addComponent("n-butane", 0.487); - testFluid.addComponent("i-pentane", 0.056); - testFluid.addComponent("n-pentane", 1.053); - testFluid.addComponent("nC10", 14.053); - testFluid.addComponent("water", 141.053); - testFluid.setMixingRule(10); - testFluid.setMultiPhaseCheck(true); - - Stream stream_1 = new Stream("Stream1", testFluid); - stream_1.run(); - + void testGetMeasuredValue() { pHProbe phmeasurement = new pHProbe(stream_1); - phmeasurement.setAlkanility(50.0); phmeasurement.run(); - System.out.println("pH " + phmeasurement.getMeasuredValue()); - assertEquals(5.629055432357595, phmeasurement.getMeasuredValue(),0.01); + logger.info("pH " + phmeasurement.getMeasuredValue()); + assertEquals(4.079098133484792, phmeasurement.getMeasuredValue(), 0.01); } @Test - void testPHProbe() { - //fail("Not yet implemented"); - } - - @Test - void testPHProbeStreamInterface() { - //fail("Not yet implemented"); + void testGetMeasuredValueWithAlkalinity() { + pHProbe phmeasurement = new pHProbe(stream_1); + phmeasurement.setAlkalinity(50.0); + phmeasurement.run(); + logger.info("pH " + phmeasurement.getMeasuredValue()); + assertEquals(5.629055432357595, phmeasurement.getMeasuredValue(), 0.01); } - } diff --git a/src/test/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugTest.java b/src/test/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugTest.java new file mode 100644 index 0000000000..9b8d7d5522 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/measurementDevice/simpleFlowRegime/SevereSlugTest.java @@ -0,0 +1,26 @@ +package neqsim.processSimulation.measurementDevice.simpleFlowRegime; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; + +public class SevereSlugTest { + @Test + void testCheckFlowRegime1() { + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 15.0), 10); + testSystem2.addComponent("methane", 0.00015, "MSm^3/day"); + testSystem2.addComponent("n-heptane", 0.0015, "MSm^3/day"); + testSystem2.addComponent("propane", 0.00015, "MSm^3/day"); + testSystem2.addComponent("water", 0.00015, "MSm^3/day"); + testSystem2.setMixingRule(2); + testSystem2.setMultiPhaseCheck(true); + testSystem2.init(0); + + Stream inputStream3 = new Stream("test stream", testSystem2); + SevereSlugAnalyser mySevereSlug6 = new SevereSlugAnalyser(inputStream3, 0.05, 167, 7.7, 0.1); + assertEquals(mySevereSlug6.getPredictedFlowRegime(), "Severe Slug", ""); + assertEquals(0.19085996383839476, mySevereSlug6.getMeasuredValue(), 1e-1, ""); + } +} + diff --git a/src/test/java/neqsim/processSimulation/mechanicalDesign/SystemMechanicalDesignTest.java b/src/test/java/neqsim/processSimulation/mechanicalDesign/SystemMechanicalDesignTest.java new file mode 100644 index 0000000000..2f032a7057 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/mechanicalDesign/SystemMechanicalDesignTest.java @@ -0,0 +1,227 @@ +package neqsim.processSimulation.mechanicalDesign; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.costEstimation.CostEstimateBaseClass; +import neqsim.processSimulation.mechanicalDesign.pipeline.PipelineMechanicalDesign; +import neqsim.processSimulation.mechanicalDesign.separator.GasScrubberMechanicalDesign; +import neqsim.processSimulation.mechanicalDesign.separator.SeparatorMechanicalDesign; +import neqsim.processSimulation.mechanicalDesign.valve.ValveMechanicalDesign; +import neqsim.processSimulation.processEquipment.heatExchanger.Heater; +import neqsim.processSimulation.processEquipment.pipeline.AdiabaticPipe; +import neqsim.processSimulation.processEquipment.pump.Pump; +import neqsim.processSimulation.processEquipment.separator.GasScrubber; +import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.processEquipment.util.Recycle; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class SystemMechanicalDesignTest { + static neqsim.processSimulation.processSystem.ProcessSystem operations; + + @BeforeAll + static void createProcess() { + SystemInterface thermoSystem = new SystemSrkEos(298.0, 10.0); + thermoSystem.addComponent("water", 51.0); + thermoSystem.addComponent("nitrogen", 51.0); + thermoSystem.addComponent("CO2", 51.0); + thermoSystem.addComponent("methane", 51.0); + thermoSystem.addComponent("ethane", 51.0); + thermoSystem.addComponent("propane", 51.0); + thermoSystem.addComponent("i-butane", 51.0); + thermoSystem.addComponent("n-butane", 51.0); + thermoSystem.addComponent("iC5", 51.0); + thermoSystem.addComponent("nC5", 1.0); + + thermoSystem.addTBPfraction("C6", 1.0, 86.0 / 1000.0, 0.66); + thermoSystem.addTBPfraction("C7", 1.0, 91.0 / 1000.0, 0.74); + thermoSystem.addTBPfraction("C8", 1.0, 103.0 / 1000.0, 0.77); + thermoSystem.addTBPfraction("C9", 1.0, 117.0 / 1000.0, 0.79); + thermoSystem.addPlusFraction("C10_C12", 1.0, 145.0 / 1000.0, 0.80); + thermoSystem.addPlusFraction("C13_C14", 1.0, 181.0 / 1000.0, 0.8279); + thermoSystem.addPlusFraction("C15_C16", 1.0, 212.0 / 1000.0, 0.837); + thermoSystem.addPlusFraction("C17_C19", 1.0, 248.0 / 1000.0, 0.849); + thermoSystem.addPlusFraction("C20_C22", 1.0, 289.0 / 1000.0, 0.863); + thermoSystem.addPlusFraction("C23_C25", 1.0, 330.0 / 1000.0, 0.875); + thermoSystem.addPlusFraction("C26_C30", 1.0, 387.0 / 1000.0, 0.88); + thermoSystem.addPlusFraction("C31_C38", 1.0, 471.0 / 1000.0, 0.90); + thermoSystem.addPlusFraction("C38_C80", 1.0, 662.0 / 1000.0, 0.92); + thermoSystem.setMixingRule("classic"); + thermoSystem.setMultiPhaseCheck(true); + thermoSystem.setMolarComposition(new double[] {0.034266, 0.005269, 0.039189, 0.700553, 0.091154, + 0.050908, 0.007751, 0.014665, 0.004249, 0.004878, 0.004541, 0.007189, 0.006904, 0.004355, + 0.007658, 0.003861, 0.003301, 0.002624, 0.001857, 0.001320, 0.001426, 0.001164, 0.000916}); + // thermoSystem.prettyPrint(); + + Stream feedStream = new Stream("feed stream", thermoSystem); + feedStream.setFlowRate(604094, "kg/hr"); + feedStream.setTemperature(25.5, "C"); + feedStream.setPressure(26.0, "bara"); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator seprator1stStage = + new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "1st stage separator", feedStream); + + ThrottlingValve valve1 = new ThrottlingValve("valve1", seprator1stStage.getLiquidOutStream()); + valve1.setOutletPressure(19.0); + + Heater oilHeater = new Heater("oil heater", valve1.getOutletStream()); + oilHeater.setOutTemperature(359.0); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator seprator2ndStage = + new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "2nd stage separator", oilHeater.getOutletStream()); + + ThrottlingValve valve2 = new ThrottlingValve("valve2", seprator2ndStage.getLiquidOutStream()); + valve2.setOutletPressure(2.7); + + StreamInterface recircstream1 = valve2.getOutletStream().clone(); + recircstream1.setName("oilRecirc1"); + recircstream1.setFlowRate(1e-6, "kg/hr"); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator seprator3rdStage = + new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "3rd stage separator"); + seprator3rdStage.addStream(valve2.getOutletStream()); + seprator3rdStage.addStream(recircstream1); + + ThrottlingValve pipeloss1st = + new ThrottlingValve("pipeloss1st", seprator3rdStage.getGasOutStream()); + pipeloss1st.setOutletPressure(2.7 - 0.03); + + Heater coolerLP = new Heater("cooler LP", pipeloss1st.getOutletStream()); + coolerLP.setOutTemperature(273.15 + 25.0); + + Separator sepregenGas = new Separator("sepregenGas", coolerLP.getOutletStream()); + + Pump oil1pump = new Pump("oil1pump", sepregenGas.getLiquidOutStream()); + oil1pump.setOutletPressure(19.); + + ThrottlingValve valveLP1 = new ThrottlingValve("valvseLP1", oil1pump.getOutletStream()); + valveLP1.setOutletPressure(2.7); + + Recycle recycle1 = new Recycle("oil recirc 1"); + recycle1.addStream(valveLP1.getOutletStream()); + recycle1.setOutletStream(recircstream1); + + operations = new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(feedStream); + operations.add(seprator1stStage); + operations.add(valve1); + operations.add(oilHeater); + operations.add(seprator2ndStage); + operations.add(valve2); + operations.add(recircstream1); + operations.add(seprator3rdStage); + operations.add(pipeloss1st); + operations.add(coolerLP); + operations.add(sepregenGas); + operations.add(oil1pump); + operations.add(valveLP1); + operations.add(recycle1); + + operations.run(); + } + + @Test + void testRunDesignCalculationforProcess() { + // Test to run desgn calculation for a full process using the + // SystemMechanicalDesign class + SystemMechanicalDesign mecDesign = new SystemMechanicalDesign(operations); + mecDesign.runDesignCalculation(); + + System.out.println("total process weight " + mecDesign.getTotalWeight() + " kg"); + System.out.println("total process volume " + mecDesign.getTotalVolume() + " m3"); + System.out.println("total plot space " + mecDesign.getTotalPlotSpace() + " m2"); + System.out.println("separator inner diameter " + + ((Separator) operations.getUnit("sepregenGas")).getMechanicalDesign().innerDiameter); + System.out.println("valve weight " + + ((ThrottlingValve) operations.getUnit("valve1")).getMechanicalDesign().getWeightTotal()); + } + + @Test + void testRunDesignCalculationforSeparator() { + // Test to run design calculation for a process unit (separator using the + // SeparatorMechanicalDesign class) + SeparatorMechanicalDesign sepMechDesign = + new SeparatorMechanicalDesign((Separator) operations.getUnit("sepregenGas")); + sepMechDesign.calcDesign(); + System.out.println("separator inner diameter " + sepMechDesign.innerDiameter); + System.out.println("separator weight vessel shell " + sepMechDesign.weigthVesselShell); + System.out.println("separator weight structual steel " + sepMechDesign.weightStructualSteel); + } + + @Test + void testRunDesignCalculationforGasScrubber() { + SystemInterface thermoSystem = new SystemSrkEos(298.0, 120.0); + thermoSystem.addComponent("nitrogen", 1.0); + thermoSystem.addComponent("methane", 99.0); + thermoSystem.setMixingRule("classic"); + + Stream inlets = new Stream("inlet stream", thermoSystem); + inlets.setTemperature(20.0, "C"); + inlets.setPressure(120.0, "bara"); + inlets.setFlowRate(15.0, "MSm3/day"); + inlets.run(); + + GasScrubber sep1 = new GasScrubber("scrubber1", inlets); + sep1.run(); + + GasScrubberMechanicalDesign sepMechDesign = new GasScrubberMechanicalDesign(sep1); + sepMechDesign.setMaxOperationPressure(180); + sepMechDesign.calcDesign(); + System.out.println("separator inner diameter " + sepMechDesign.innerDiameter); + System.out.println("separator weight vessel shell " + sepMechDesign.weigthVesselShell); + System.out.println("separator weight structual steel " + sepMechDesign.weightStructualSteel); + sep1.addSeparatorSection("first mesh", "meshpad"); + sepMechDesign.calcDesign(); + } + + @Test + void testRunDesignCalculationforValve() { + ValveMechanicalDesign valve1MechDesign = + new ValveMechanicalDesign((ThrottlingValve) operations.getUnit("valve1")); + valve1MechDesign.calcDesign(); + System.out.println("valve total weight " + valve1MechDesign.getWeightTotal()); + } + + @Test + void testRunDesignForPipeline() { + AdiabaticPipe pipe = new AdiabaticPipe("pipe1", + ((neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator) operations + .getUnit("1st stage separator")).getGasOutStream()); + pipe.setDiameter(1.0); + pipe.setLength(1000.0); + pipe.setPipeWallRoughness(10e-6); + pipe.setInletElevation(0.0); + pipe.setOutletElevation(20.0); + + pipe.run(); + + System.out.println("out pressure " + pipe.getOutletStream().getPressure("bara")); + + PipelineMechanicalDesign pipeMechDesign = new PipelineMechanicalDesign(pipe); + pipeMechDesign.setMaxOperationPressure(100.0); + pipeMechDesign.setMaxOperationTemperature(273.155 + 60.0); + pipeMechDesign.setMinOperationPressure(50.0); + pipeMechDesign.setMaxDesignGassVolumeFlow(100.0); + pipeMechDesign.setCompanySpecificDesignStandards("Statoil"); + pipeMechDesign.calcDesign(); + + System.out.println("wall thickness " + pipeMechDesign.getWallThickness()); + } + + @Test + void testCostEstimateProcess() { + SystemMechanicalDesign mecDesign = new SystemMechanicalDesign(operations); + mecDesign.runDesignCalculation(); + + CostEstimateBaseClass costEst = new CostEstimateBaseClass(mecDesign); + costEst.getWeightBasedCAPEXEstimate(); + + System.out.println("weight based cost estmate " + costEst.getWeightBasedCAPEXEstimate()); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/absorber/SimpleAbsorberTest.java b/src/test/java/neqsim/processSimulation/processEquipment/absorber/SimpleAbsorberTest.java index bc0c729af8..4bb8f6725f 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/absorber/SimpleAbsorberTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/absorber/SimpleAbsorberTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.stream.Stream; -public class SimpleAbsorberTest extends neqsim.NeqSimTest{ +public class SimpleAbsorberTest extends neqsim.NeqSimTest { neqsim.thermo.system.SystemFurstElectrolyteEos testSystem; @BeforeEach @@ -26,12 +26,12 @@ void testRun() { stream_Hot); absorber1.setAproachToEquilibrium(0.75); - // todo: Test is not well behaved + // TODO: Test is not well behaved /* * neqsim.processSimulation.processSystem.ProcessSystem operations = new * neqsim.processSimulation.processSystem.ProcessSystem(); operations.add(stream_Hot); * operations.add(absorber1); - * + * * operations.run(); */ // operations.displayResult(); diff --git a/src/test/java/neqsim/processSimulation/processEquipment/adsorber/SimpleAdsorberTest.java b/src/test/java/neqsim/processSimulation/processEquipment/adsorber/SimpleAdsorberTest.java index 3a40a33c1d..e77f00adb6 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/adsorber/SimpleAdsorberTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/adsorber/SimpleAdsorberTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.stream.Stream; -public class SimpleAdsorberTest extends neqsim.NeqSimTest{ +public class SimpleAdsorberTest extends neqsim.NeqSimTest { neqsim.thermo.system.SystemFurstElectrolyteEos testSystem; @BeforeEach @@ -16,7 +16,7 @@ void setUp() { testSystem.createDatabase(true); testSystem.setMixingRule(4); } - + @Disabled("Disabled until neqsim.processSimulation.processEquipment.adsorber.SimpleAdsorber is fixed") @Test void testRun() { @@ -26,12 +26,12 @@ void testRun() { stream_Hot); adsorber1.setAproachToEquilibrium(0.75); - // todo: Test is not well behaved + // TODO: Test is not well behaved /* * neqsim.processSimulation.processSystem.ProcessSystem operations = new * neqsim.processSimulation.processSystem.ProcessSystem(); operations.add(stream_Hot); * operations.add(adsorber1); - * + * * operations.run(); */ // operations.displayResult(); diff --git a/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorCalculationTest.java b/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorCalculationTest.java index 9507edfc16..1fe3576468 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorCalculationTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorCalculationTest.java @@ -7,139 +7,125 @@ import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; -public class CompressorCalculationTest extends neqsim.NeqSimTest{ - Compressor comp1; - Stream stream_1; +public class CompressorCalculationTest extends neqsim.NeqSimTest { + Compressor comp1; + Stream stream_1; - @BeforeEach - public void setUp() { - SystemInterface testFluid = new SystemSrkEos(298.15, 50.0); + @BeforeEach + public void setUp() { + SystemInterface testFluid = new SystemSrkEos(298.15, 50.0); - testFluid.addComponent("nitrogen", 1.205); - testFluid.addComponent("CO2", 1.340); - testFluid.addComponent("methane", 87.974); - testFluid.addComponent("ethane", 5.258); - testFluid.addComponent("propane", 3.283); - testFluid.addComponent("i-butane", 0.082); - testFluid.addComponent("n-butane", 0.487); - testFluid.addComponent("i-pentane", 0.056); - testFluid.addComponent("n-pentane", 0.053); - testFluid.setMixingRule(2); - testFluid.setMultiPhaseCheck(true); + testFluid.addComponent("nitrogen", 1.205); + testFluid.addComponent("CO2", 1.340); + testFluid.addComponent("methane", 87.974); + testFluid.addComponent("ethane", 5.258); + testFluid.addComponent("propane", 3.283); + testFluid.addComponent("i-butane", 0.082); + testFluid.addComponent("n-butane", 0.487); + testFluid.addComponent("i-pentane", 0.056); + testFluid.addComponent("n-pentane", 0.053); + testFluid.setMixingRule(2); + testFluid.setMultiPhaseCheck(true); - testFluid.setTemperature(24.0, "C"); - testFluid.setPressure(48.0, "bara"); - testFluid.setTotalFlowRate(1.0, "MSm3/day"); + testFluid.setTemperature(24.0, "C"); + testFluid.setPressure(48.0, "bara"); + testFluid.setTotalFlowRate(1.0, "MSm3/day"); - stream_1 = new Stream("Stream1", testFluid); - comp1 = new Compressor("comp1", stream_1); - } + stream_1 = new Stream("Stream1", testFluid); + comp1 = new Compressor("comp1", stream_1); + } - private void setCurves() { - double[] chartConditions = new double[] { 0.3, 1.0, 1.0, 1.0 }; - double[] speed = new double[] { 12913, 12298, 11683, 11098, 10453, 9224, 8609, 8200 }; - double[][] flow = new double[][] { - { 2789.1285, 3174.0375, 3689.2288, 4179.4503, 4570.2768, 4954.7728, 5246.0329, - 5661.0331 }, - { 2571.1753, 2943.7254, 3440.2675, 3837.4448, 4253.0898, 4668.6643, 4997.1926, - 5387.4952 }, - { 2415.3793, 2763.0706, 3141.7095, 3594.7436, 4047.6467, 4494.1889, 4853.7353, - 5138.7858 }, - { 2247.2043, 2799.7342, 3178.3428, 3656.1551, 4102.778, 4394.1591, 4648.3224, - 4840.4998 }, - { 2072.8397, 2463.9483, 2836.4078, 3202.5266, 3599.6333, 3978.0203, 4257.0022, - 4517.345 }, - { 1835.9552, 2208.455, 2618.1322, 2940.8034, 3244.7852, 3530.1279, 3753.3738, - 3895.9746 }, - { 1711.3386, 1965.8848, 2356.9431, 2685.9247, 3008.5154, 3337.2855, 3591.5092 }, - { 1636.5807, 2002.8708, 2338.0319, 2642.1245, 2896.4894, 3113.6264, 3274.8764, - 3411.2977 } }; - double[][] head = new double[][] { - { 80.0375, 78.8934, 76.2142, 71.8678, 67.0062, 60.6061, 53.0499, 39.728 }, - { 72.2122, 71.8369, 68.9009, 65.8341, 60.7167, 54.702, 47.2749, 35.7471 }, - { 65.1576, 64.5253, 62.6118, 59.1619, 54.0455, 47.0059, 39.195, 31.6387 }, - { 58.6154, 56.9627, 54.6647, 50.4462, 44.4322, 38.4144, 32.9084, 28.8109 }, - { 52.3295, 51.0573, 49.5283, 46.3326, 42.3685, 37.2502, 31.4884, 25.598 }, - { 40.6578, 39.6416, 37.6008, 34.6603, 30.9503, 27.1116, 23.2713, 20.4546 }, - { 35.2705, 34.6359, 32.7228, 31.0645, 27.0985, 22.7482, 18.0113 }, - { 32.192, 31.1756, 29.1329, 26.833, 23.8909, 21.3324, 18.7726, 16.3403 }, }; - double[][] polyEff = new double[][] { - { 77.2452238409573, 79.4154186459363, 80.737960012489, 80.5229826589649, - 79.2210931638144, 75.4719133864634, 69.6034181197298, 58.7322388482707 }, - { 77.0107837113504, 79.3069974136389, 80.8941189021135, 80.7190194665918, - 79.5313242980328, 75.5912622896367, 69.6846136362097, 60.0043057990909 }, - { 77.0043065299874, 79.1690958847856, 80.8038169975675, 80.6543975614197, - 78.8532389102705, 73.6664774270613, 66.2735600426727, 57.671664571658 }, - { 77.0716623789093, 80.4629750233093, 81.1390811169072, 79.6374242667478, - 75.380928428817, 69.5332969549779, 63.7997587622339, 58.8120614497758 }, - { 76.9705872525642, 79.8335492585324, 80.9468133671171, 80.5806471927835, - 78.0462158225426, 73.0403707523258, 66.5572286338589, 59.8624822515064 }, - { 77.5063036680357, 80.2056198362559, 81.0339108025933, 79.6085962687939, - 76.3814534404405, 70.8027503005902, 64.6437367160571, 60.5299349982342 }, - { 77.8175271586685, 80.065165942218, 81.0631362122632, 79.8955051771299, - 76.1983240929369, 69.289982774309, 60.8567149372229 }, - { 78.0924334304045, 80.9353551568667, 80.7904437766234, 78.8639325223295, - 75.2170936751143, 70.3105081673411, 65.5507568533569, 61.0391468300337 } }; - comp1.getCompressorChart().setCurves(chartConditions, speed, flow, head, polyEff); + private void setCurves() { + double[] chartConditions = new double[] {0.3, 1.0, 1.0, 1.0}; + double[] speed = new double[] {12913, 12298, 11683, 11098, 10453, 9224, 8609, 8200}; + double[][] flow = new double[][] { + {2789.1285, 3174.0375, 3689.2288, 4179.4503, 4570.2768, 4954.7728, 5246.0329, 5661.0331}, + {2571.1753, 2943.7254, 3440.2675, 3837.4448, 4253.0898, 4668.6643, 4997.1926, 5387.4952}, + {2415.3793, 2763.0706, 3141.7095, 3594.7436, 4047.6467, 4494.1889, 4853.7353, 5138.7858}, + {2247.2043, 2799.7342, 3178.3428, 3656.1551, 4102.778, 4394.1591, 4648.3224, 4840.4998}, + {2072.8397, 2463.9483, 2836.4078, 3202.5266, 3599.6333, 3978.0203, 4257.0022, 4517.345}, + {1835.9552, 2208.455, 2618.1322, 2940.8034, 3244.7852, 3530.1279, 3753.3738, 3895.9746}, + {1711.3386, 1965.8848, 2356.9431, 2685.9247, 3008.5154, 3337.2855, 3591.5092}, + {1636.5807, 2002.8708, 2338.0319, 2642.1245, 2896.4894, 3113.6264, 3274.8764, 3411.2977}}; + double[][] head = + new double[][] {{80.0375, 78.8934, 76.2142, 71.8678, 67.0062, 60.6061, 53.0499, 39.728}, + {72.2122, 71.8369, 68.9009, 65.8341, 60.7167, 54.702, 47.2749, 35.7471}, + {65.1576, 64.5253, 62.6118, 59.1619, 54.0455, 47.0059, 39.195, 31.6387}, + {58.6154, 56.9627, 54.6647, 50.4462, 44.4322, 38.4144, 32.9084, 28.8109}, + {52.3295, 51.0573, 49.5283, 46.3326, 42.3685, 37.2502, 31.4884, 25.598}, + {40.6578, 39.6416, 37.6008, 34.6603, 30.9503, 27.1116, 23.2713, 20.4546}, + {35.2705, 34.6359, 32.7228, 31.0645, 27.0985, 22.7482, 18.0113}, + {32.192, 31.1756, 29.1329, 26.833, 23.8909, 21.3324, 18.7726, 16.3403},}; + double[][] polyEff = new double[][] { + {77.2452238409573, 79.4154186459363, 80.737960012489, 80.5229826589649, 79.2210931638144, + 75.4719133864634, 69.6034181197298, 58.7322388482707}, + {77.0107837113504, 79.3069974136389, 80.8941189021135, 80.7190194665918, 79.5313242980328, + 75.5912622896367, 69.6846136362097, 60.0043057990909}, + {77.0043065299874, 79.1690958847856, 80.8038169975675, 80.6543975614197, 78.8532389102705, + 73.6664774270613, 66.2735600426727, 57.671664571658}, + {77.0716623789093, 80.4629750233093, 81.1390811169072, 79.6374242667478, 75.380928428817, + 69.5332969549779, 63.7997587622339, 58.8120614497758}, + {76.9705872525642, 79.8335492585324, 80.9468133671171, 80.5806471927835, 78.0462158225426, + 73.0403707523258, 66.5572286338589, 59.8624822515064}, + {77.5063036680357, 80.2056198362559, 81.0339108025933, 79.6085962687939, 76.3814534404405, + 70.8027503005902, 64.6437367160571, 60.5299349982342}, + {77.8175271586685, 80.065165942218, 81.0631362122632, 79.8955051771299, 76.1983240929369, + 69.289982774309, 60.8567149372229}, + {78.0924334304045, 80.9353551568667, 80.7904437766234, 78.8639325223295, 75.2170936751143, + 70.3105081673411, 65.5507568533569, 61.0391468300337}}; + comp1.getCompressorChart().setCurves(chartConditions, speed, flow, head, polyEff); - comp1.getCompressorChart().setHeadUnit("kJ/kg"); + comp1.getCompressorChart().setHeadUnit("kJ/kg"); - double[] surgeflow = new double[] { 2789.0, 2550.0, 2500.0, 2200.0 }; - double[] surgehead = new double[] { 80.0, 72.0, 70.0, 65.0 }; - comp1.getCompressorChart().getSurgeCurve().setCurve(chartConditions, surgeflow, - surgehead); - // comp1.getAntiSurge().setActive(true); - comp1.getAntiSurge().setSurgeControlFactor(1.0); - } + double[] surgeflow = new double[] {2789.0, 2550.0, 2500.0, 2200.0}; + double[] surgehead = new double[] {80.0, 72.0, 70.0, 65.0}; + comp1.getCompressorChart().getSurgeCurve().setCurve(chartConditions, surgeflow, surgehead); + // comp1.getAntiSurge().setActive(true); + comp1.getAntiSurge().setSurgeControlFactor(1.0); + } - @Test - public void testCompressorChartEquals() { - Assertions.assertEquals(comp1, comp1.copy()); - setCurves(); - Assertions.assertEquals(comp1, comp1.copy()); - } + @Test + public void testCompressorChartEquals() { + Assertions.assertEquals(comp1, comp1.copy()); + setCurves(); + Assertions.assertEquals(comp1, comp1.copy()); + } - @Test - public void testRun() { - setCurves(); - comp1.setUsePolytropicCalc(true); - comp1.setSpeed(11918); - neqsim.processSimulation.processSystem.ProcessSystem operations = new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(comp1); - operations.run(); + @Test + public void testRun() { + setCurves(); + comp1.setUsePolytropicCalc(true); + comp1.setSpeed(11918); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(comp1); + operations.run(); - // System.out.println("power " + comp1.getPower()); - Assertions.assertEquals(1163805.2992826412, comp1.getPower(), 0.01); - Assertions.assertFalse(comp1.getAntiSurge().isSurge()); - Assertions.assertEquals(0.0, comp1.getAntiSurge().getCurrentSurgeFraction()); + // logger.info("power " + comp1.getPower()); + Assertions.assertEquals(1163805.2992826412, comp1.getPower(), 1220.01); + Assertions.assertFalse(comp1.getAntiSurge().isSurge()); + Assertions.assertEquals(0.0, comp1.getAntiSurge().getCurrentSurgeFraction()); - //System.out.println("Polytropic head from curve:" + comp1.getPolytropicHead()); + // logger.info("Polytropic head from curve:" + comp1.getPolytropicHead()); - Assertions.assertEquals(55.40415411694987, comp1.getPolytropicHead(), 0.01); - //System.out.println("Polytropic eff from curve:" + comp1.getPolytropicEfficiency() * 100.0); - Assertions.assertEquals(0.43175024049749283, comp1.getPolytropicEfficiency(), 0.01); + Assertions.assertEquals(55.4041541169498, comp1.getPolytropicHead(), 0.01); + // logger.info("Polytropic eff from curve:" + comp1.getPolytropicEfficiency() * 100.0); + Assertions.assertEquals(0.43175024049749283, comp1.getPolytropicEfficiency(), 0.01); - //System.out.println("flow " + stream_1.getThermoSystem().getFlowRate("m3/hr")); - //System.out.println("speed " + comp1.getCompressorChart().getSpeed( - // stream_1.getThermoSystem().getFlowRate("m3/hr") + 10.0, comp1.getPolytropicHead())); - //System.out.println("pressure out " + comp1.getOutletPressure()); - //System.out.println("temperature out " + (comp1.getOutTemperature() - 273.15) + " C"); - /* - * double temperatureOut = 273.15 + 84; - * comp1.setOutletPressure(96.0); - * comp1.setOutTemperature(temperatureOut); - * operations.run(); - * double polytropicHead = comp1.getPolytropicHead(); - * double flowRate = stream_1.getThermoSystem().getFlowRate("m3/hr"); - * double calcSpeed = comp1.getCompressorChart().getSpeed(flowRate, - * polytropicHead); - * System.out.println("polytopic head " + polytropicHead); - * System.out.println("polytopic efficiency " + - * comp1.getPolytropicEfficiency()); - * System.out.println("temperature out " + (comp1.getOutTemperature() - 273.15) - * + " C"); - * System.out.println("calculated speed " + calcSpeed); - */ - } + // logger.info("flow " + stream_1.getThermoSystem().getFlowRate("m3/hr")); + // logger.info("speed " + comp1.getCompressorChart().getSpeed( + // stream_1.getThermoSystem().getFlowRate("m3/hr") + 10.0, comp1.getPolytropicHead())); + // logger.info("pressure out " + comp1.getOutletPressure()); + // logger.info("temperature out " + (comp1.getOutTemperature() - 273.15) + " C"); + /* + * double temperatureOut = 273.15 + 84; comp1.setOutletPressure(96.0); + * comp1.setOutTemperature(temperatureOut); operations.run(); double polytropicHead = + * comp1.getPolytropicHead(); double flowRate = stream_1.getThermoSystem().getFlowRate("m3/hr"); + * double calcSpeed = comp1.getCompressorChart().getSpeed(flowRate, polytropicHead); + * logger.info("polytopic head " + polytropicHead); logger.info("polytopic efficiency " + + * comp1.getPolytropicEfficiency()); logger.info("temperature out " + (comp1.getOutTemperature() + * - 273.15) + " C"); logger.info("calculated speed " + calcSpeed); + */ + } } diff --git a/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartTest.java b/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartTest.java index 8f2fb0fb01..923d2268ec 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorChartTest.java @@ -1,6 +1,7 @@ package neqsim.processSimulation.processEquipment.compressor; import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.stream.Stream; @@ -12,7 +13,6 @@ public class CompressorChartTest { @BeforeEach public void setUp() { - SystemInterface testFluid = new SystemSrkEos(298.15, 50.0); // testFluid.addComponent("methane", 1.0); @@ -126,17 +126,17 @@ public void test_Run() { // operations.displayResult(); /* - * System.out.println("power " + comp1.getPower()); System.out.println("is surge " + + * logger.info("power " + comp1.getPower()); logger.info("is surge " + * comp1.getAntiSurge().isSurge()); System.out .println("fraction in anti surge line " + - * comp1.getAntiSurge().getCurrentSurgeFraction()); - * System.out.println("Polytropic head from curve:" + comp1.getPolytropicHead()); - * System.out.println("Polytropic eff from curve:" + comp1.getPolytropicEfficiency() * 100.0); - * System.out.println("flow " + stream_1.getThermoSystem().getFlowRate("m3/hr")); - * - * System.out.println("speed " + comp1.getCompressorChart().getSpeed( + * comp1.getAntiSurge().getCurrentSurgeFraction()); logger.info("Polytropic head from curve:" + + * comp1.getPolytropicHead()); logger.info("Polytropic eff from curve:" + + * comp1.getPolytropicEfficiency() * 100.0); logger.info("flow " + + * stream_1.getThermoSystem().getFlowRate("m3/hr")); + * + * logger.info("speed " + comp1.getCompressorChart().getSpeed( * stream_1.getThermoSystem().getFlowRate("m3/hr") + 10.0, comp1.getPolytropicHead())); - * System.out.println("pressure out " + comp1.getOutletPressure()); - * System.out.println("temperature out " + (comp1.getOutTemperature() - 273.15) + " C"); + * logger.info("pressure out " + comp1.getOutletPressure()); logger.info("temperature out " + + * (comp1.getOutTemperature() - 273.15) + " C"); */ double temperatureOut = 273.15 + 84; @@ -149,13 +149,31 @@ public void test_Run() { assertTrue(calcSpeed > 0); /* - * System.out.println("polytopic head " + polytropicHead); - * System.out.println("polytopic efficiency " + comp1.getPolytropicEfficiency()); - * System.out.println("temperature out " + (comp1.getOutTemperature() - 273.15) + " C"); - * System.out.println("calculated speed " + calcSpeed); System.out.println("power " + + * logger.info("polytopic head " + polytropicHead); logger.info("polytopic efficiency " + + * comp1.getPolytropicEfficiency()); logger.info("temperature out " + (comp1.getOutTemperature() + * - 273.15) + " C"); logger.info("calculated speed " + calcSpeed); logger.info("power " + * comp1.getPower()); */ // comp1.getCompressorChart().plot(); } + + @Test + void testSetHeadUnit() { + CompressorChart cc = new CompressorChart(); + String origUnit = cc.getHeadUnit(); + Assertions.assertEquals("meter", origUnit); + String newUnit = "kJ/kg"; + cc.setHeadUnit(newUnit); + Assertions.assertEquals(newUnit, cc.getHeadUnit()); + cc.setHeadUnit(origUnit); + Assertions.assertEquals(origUnit, cc.getHeadUnit()); + + RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, () -> { + cc.setHeadUnit("doesNotExist"); + }); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: CompressorChart:setHeadUnit - Input headUnit does not support value doesNotExist", + thrown.getMessage()); + } } diff --git a/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorPropertyProfileTest.java b/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorPropertyProfileTest.java index 70985dc851..84b59d686e 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorPropertyProfileTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorPropertyProfileTest.java @@ -7,62 +7,61 @@ import neqsim.processSimulation.processSystem.ProcessSystem; import neqsim.thermo.system.SystemSrkEos; -class CompressorPropertyProfileTest extends neqsim.NeqSimTest{ - static neqsim.thermo.system.SystemInterface testSystem = null; +class CompressorPropertyProfileTest extends neqsim.NeqSimTest { + static neqsim.thermo.system.SystemInterface testSystem = null; - double pressure_inlet = 85.0; - double temperature_inlet = 35.0; - double gasFlowRate = 5.0; - double pressure_Out = 150.0; - ProcessSystem processOps = null; - neqsim.processSimulation.processEquipment.compressor.Compressor compressor1 = null; + double pressure_inlet = 85.0; + double temperature_inlet = 35.0; + double gasFlowRate = 5.0; + double pressure_Out = 150.0; + ProcessSystem processOps = null; + neqsim.processSimulation.processEquipment.compressor.Compressor compressor1 = null; - /** - *

- * setUp. - *

- * - * @throws java.lang.Exception if any. - */ - @BeforeEach - public void setUp() throws Exception { - testSystem = new SystemSrkEos(298.0, 10.0); - testSystem.addComponent("methane", 100.0); - processOps = new ProcessSystem(); - Stream inletStream = new Stream("inletStream", testSystem); - inletStream.setPressure(pressure_inlet, "bara"); - inletStream.setTemperature(temperature_inlet, "C"); - inletStream.setFlowRate(gasFlowRate, "MSm3/day"); - compressor1 = new neqsim.processSimulation.processEquipment.compressor.Compressor( - "Compressor1", inletStream); - compressor1.setOutletPressure(pressure_Out); - compressor1.setUsePolytropicCalc(true); - compressor1.setPolytropicEfficiency(0.89); - processOps.add(inletStream); - processOps.add(compressor1); - } + /** + *

+ * setUp. + *

+ * + * @throws java.lang.Exception if any. + */ + @BeforeEach + public void setUp() throws Exception { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + processOps = new ProcessSystem(); + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + compressor1 = new neqsim.processSimulation.processEquipment.compressor.Compressor("Compressor1", + inletStream); + compressor1.setOutletPressure(pressure_Out); + compressor1.setUsePolytropicCalc(true); + compressor1.setPolytropicEfficiency(0.89); + processOps.add(inletStream); + processOps.add(compressor1); + } - @Test - public void testRunCalculation() { - compressor1.setNumberOfCompressorCalcSteps(40); - compressor1.getPropertyProfile().setActive(true); - processOps.run(); - // double density3 = compressor1.getPropertyProfile().getFluid().get(3).getDensity("kg/m3"); - double density39 = compressor1.getPropertyProfile().getFluid().get(39).getDensity("kg/m3"); - assertEquals(85.4664664074326, density39, 59.465718447138336 / 100.0); - } + @Test + public void testRunCalculation() { + compressor1.setNumberOfCompressorCalcSteps(40); + compressor1.getPropertyProfile().setActive(true); + processOps.run(); + // double density3 = compressor1.getPropertyProfile().getFluid().get(3).getDensity("kg/m3"); + double density39 = compressor1.getPropertyProfile().getFluid().get(39).getDensity("kg/m3"); + assertEquals(85.4664664074326, density39, 59.465718447138336 / 100.0); + } - @Test - public void testFailRunCalculation() { - try { - compressor1.setNumberOfCompressorCalcSteps(40); - compressor1.getPropertyProfile().setActive(false); - processOps.run(); - compressor1.getPropertyProfile().getFluid().get(3); - assert (false); - } catch (Exception e) { - assert (true); - } + @Test + public void testFailRunCalculation() { + try { + compressor1.setNumberOfCompressorCalcSteps(40); + compressor1.getPropertyProfile().setActive(false); + processOps.run(); + compressor1.getPropertyProfile().getFluid().get(3); + assert (false); + } catch (Exception ex) { + assert (true); } - + } } diff --git a/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorTest.java b/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorTest.java index 30f6ca1831..b54d6c71dd 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/compressor/CompressorTest.java @@ -16,207 +16,243 @@ import neqsim.processSimulation.processSystem.ProcessSystem; import neqsim.thermo.system.SystemSrkEos; -class CompressorTest extends neqsim.NeqSimTest{ - static Logger logger = LogManager.getLogger(CompressorTest.class); - - static neqsim.thermo.system.SystemInterface testSystem = null; - - double pressure_inlet = 85.0; - double temperature_inlet = 35.0; - double gasFlowRate = 5.0; - double pressure_Out = 150.0; - double polytropicEff = 0.77; - ProcessSystem processOps = null; - neqsim.processSimulation.processEquipment.compressor.Compressor compressor1 = null; - - String unitName = "Compressor1"; - - /** - *

- * setUp. - *

- * - * @throws java.lang.Exception if any. - */ - @BeforeEach - public void setUp() throws Exception { - testSystem = new SystemSrkEos(298.0, 10.0); - testSystem.addComponent("methane", 100.0); - processOps = new ProcessSystem(); - Stream inletStream = new Stream("inletStream", testSystem); - inletStream.setPressure(pressure_inlet, "bara"); - inletStream.setTemperature(temperature_inlet, "C"); - inletStream.setFlowRate(gasFlowRate, "MSm3/day"); - compressor1 = new Compressor(unitName, inletStream); - compressor1.setOutletPressure(pressure_Out); - processOps.add(inletStream); - processOps.add(compressor1); - } +class CompressorTest extends neqsim.NeqSimTest { + static Logger logger = LogManager.getLogger(CompressorTest.class); - /** - * @throws IOException - * @throws ClassNotFoundException - */ - @Test - public void testSerialize() throws IOException, ClassNotFoundException { - Compressor cmp = (Compressor) processOps.getUnit(unitName); - - String tmp = "test_compressor_saved.ser"; - - try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(tmp))) { - objectOutputStream.writeObject(cmp); - objectOutputStream.flush(); - objectOutputStream.close(); - - ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(tmp)); - Compressor cmp2 = (Compressor) objectInputStream.readObject(); - objectInputStream.close(); - - Assertions.assertTrue(cmp.getName().compareTo(cmp2.getName()) == 0); - - Assertions.assertTrue(cmp.equals(cmp2)); - } catch (Exception e) { - logger.warn("Exceptions happen!", e); - } finally { - File file = new File(tmp); - file.delete(); - } - } + static neqsim.thermo.system.SystemInterface testSystem = null; - /** - *

- * testCompressorSchultzMethod. - *

- */ - @Test - public void testCompressorSchultzMethod() { - compressor1.setPolytropicEfficiency(polytropicEff); - compressor1.setUsePolytropicCalc(true); - compressor1.setPolytropicMethod("schultz"); - processOps.run(); - // System.out.println("schultz compressor power " + compressor1.getPower() / 1e6 - // + " MW"); - assertEquals(compressor1.getPower() / 1e6, 4.668373797540108,0.01); -// "Test case for compressor Schultz method polytropic calculation should return approximate 4.67 MW"); - } + double pressure_inlet = 85.0; + double temperature_inlet = 35.0; + double gasFlowRate = 5.0; + double pressure_Out = 150.0; + double polytropicEff = 0.77; + ProcessSystem processOps = null; + neqsim.processSimulation.processEquipment.compressor.Compressor compressor1 = null; - /** - *

- * testCompressorRigorousMethod. - *

- */ - @Test - public void testCompressorRigorousMethod() { - compressor1.setPolytropicEfficiency(polytropicEff); - compressor1.setUsePolytropicCalc(true); - compressor1.setPolytropicMethod("detailed"); - processOps.run(); - // System.out.println("rigorous compressor power " + compressor1.getPower() / - // 1e6 + " MW"); - assertEquals(compressor1.getPower() / 1e6, 4.655081035416562,0.01); -// "Test case for rigorous polytropic compressor calculation should return approximate 4.66 MW"); - } + String unitName = "Compressor1"; - /** - *

- * testIsentropicCalcMethod. - *

- */ - @Test - public void testIsentropicCalcMethod() { - compressor1.setIsentropicEfficiency(polytropicEff); - compressor1.setUsePolytropicCalc(false); - processOps.run(); - // System.out.println("compressor power " + compressor1.getPower() / 1e6 + " - // MW"); - assertEquals(compressor1.getPower() / 1e6, 4.5621157449685,0.01); - } + /** + *

+ * setUp. + *

+ * + * @throws java.lang.Exception if any. + */ + @BeforeEach + public void setUp() throws Exception { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + processOps = new ProcessSystem(); + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + compressor1 = new Compressor(unitName, inletStream); + compressor1.setOutletPressure(pressure_Out); + processOps.add(inletStream); + processOps.add(compressor1); + } - /** - *

- * testCompressorWithSrk. - *

- */ - @Test - public void testCompressorWithSrk() { - Stream inletStream = new Stream("inletStream", testSystem); - inletStream.setPressure(pressure_inlet, "bara"); - inletStream.setTemperature(temperature_inlet, "C"); - inletStream.setFlowRate(gasFlowRate, "MSm3/day"); - inletStream.run(); - neqsim.processSimulation.processEquipment.compressor.Compressor compressor1 = new neqsim.processSimulation.processEquipment.compressor.Compressor( - "Compressor1", - inletStream); - compressor1.setUsePolytropicCalc(true); - compressor1.setOutletPressure(pressure_Out); - compressor1.setOutTemperature(358.0); - compressor1.run(); - // System.out.println("srk polytropic efficiency " + - // compressor1.getPolytropicEfficiency()*100 + " poly eff"); - // System.out.println("srk fluid head " + compressor1.getPolytropicFluidHead() + - // " kJ/kg"); - // System.out.println("srk power " + compressor1.getPower() + " W"); - assertEquals(compressor1.getPolytropicEfficiency() * 100, 88.94871563458828,0.01); -// "Test case for rigorous polytropic efficiency with SRK calculation should return approximate 88.948715 "); - } + /** + * @throws IOException + * @throws ClassNotFoundException + */ + @Test + public void testSerialize() throws IOException, ClassNotFoundException { + Compressor cmp = (Compressor) processOps.getUnit(unitName); - /** - *

- * testCompressorWithGERG2008. - *

- */ - @Test - public void testCompressorWithGERG2008() { - Stream inletStream = new Stream("inletStream", testSystem); - inletStream.setPressure(pressure_inlet, "bara"); - inletStream.setTemperature(temperature_inlet, "C"); - inletStream.setFlowRate(gasFlowRate, "MSm3/day"); - inletStream.run(); - neqsim.processSimulation.processEquipment.compressor.Compressor compressor1 = new neqsim.processSimulation.processEquipment.compressor.Compressor( - "Compressor1", - inletStream); - compressor1.setUsePolytropicCalc(true); - compressor1.setOutletPressure(pressure_Out); - compressor1.setOutTemperature(358.0); - compressor1.setUseGERG2008(true); - // compressor1.setUseRigorousPolytropicMethod(true); - compressor1.run(); - // System.out.println("gerg polytropic efficiency " + - // compressor1.getPolytropicEfficiency()*100 + " poly eff"); - // System.out.println("gerg fluid head " + compressor1.getPolytropicFluidHead() - // + " kJ/kg"); - // System.out.println("gerg power " + compressor1.getPower() + " W"); - assertEquals(compressor1.getPolytropicEfficiency() * 100, 89.99367027631443,0.01); -// "Test case for rigorous polytropic efficiency with GER2008 calculation should return approximate 89.992296751"); - } - - /** - *

- * test Multi Phase Compression. - *

- */ - @Test - public void testMultiPhaseCompression() throws Exception { - SystemSrkEos testSystem = new SystemSrkEos(315.0, 10.0); - testSystem.addComponent("nitrogen", 2.0); - testSystem.addComponent("methane", 50.0); - testSystem.addComponent("nC10", 100.0); - testSystem.addComponent("water", 100.0); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - - processOps = new ProcessSystem(); - Stream inletStream = new Stream("feed stream", testSystem); - inletStream.setPressure(pressure_inlet, "bara"); - inletStream.setTemperature(temperature_inlet, "C"); - inletStream.setFlowRate(gasFlowRate, "MSm3/day"); - compressor1 = new Compressor(unitName, inletStream); - compressor1.setOutletPressure(pressure_Out); - compressor1.setUsePolytropicCalc(true); - compressor1.setPolytropicEfficiency(0.5); - processOps.add(inletStream); - processOps.add(compressor1); - processOps.run(); - assertEquals(compressor1.getPower(), 3712608.4725392014 , 0.01); + String tmp = "test_compressor_saved.ser"; + + try ( + ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(tmp))) { + objectOutputStream.writeObject(cmp); + objectOutputStream.flush(); + objectOutputStream.close(); + + ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(tmp)); + Compressor cmp2 = (Compressor) objectInputStream.readObject(); + objectInputStream.close(); + + Assertions.assertTrue(cmp.getName().compareTo(cmp2.getName()) == 0); + + Assertions.assertTrue(cmp.equals(cmp2)); + } catch (Exception ex) { + logger.warn("Exceptions happen!", ex); + } finally { + File file = new File(tmp); + file.delete(); } + } + + /** + *

+ * testCompressorSchultzMethod. + *

+ */ + @Test + public void testCompressorSchultzMethod() { + compressor1.setPolytropicEfficiency(polytropicEff); + compressor1.setUsePolytropicCalc(true); + compressor1.setPolytropicMethod("schultz"); + processOps.run(); + // logger.info("schultz compressor power " + compressor1.getPower() / 1e6 + // + " MW"); + assertEquals(compressor1.getPower() / 1e6, 4.668373797540108, 0.01); + // // "Test case for compressor Schultz method polytropic calculation should return + // approximate + // 4.67 MW"); + } + + /** + *

+ * testCompressorRigorousMethod. + *

+ */ + @Test + public void testCompressorRigorousMethod() { + compressor1.setPolytropicEfficiency(polytropicEff); + compressor1.setUsePolytropicCalc(true); + compressor1.setPolytropicMethod("detailed"); + processOps.run(); + // logger.info("rigorous compressor power " + compressor1.getPower() / + // 1e6 + " MW"); + assertEquals(compressor1.getPower() / 1e6, 4.655081035416562, 0.01); + // "Test case for rigorous polytropic compressor calculation should return approximate 4.66 + // MW"); + } + + /** + *

+ * testIsentropicCalcMethod. + *

+ */ + @Test + public void testIsentropicCalcMethod() { + compressor1.setIsentropicEfficiency(polytropicEff); + compressor1.setUsePolytropicCalc(false); + processOps.run(); + // logger.info("compressor power " + compressor1.getPower() / 1e6 + " + // MW"); + assertEquals(compressor1.getPower() / 1e6, 4.5621157449685, 0.01); + } + + /** + *

+ * testCompressorWithSrk. + *

+ */ + @Test + public void testCompressorWithSrk() { + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + inletStream.run(); + neqsim.processSimulation.processEquipment.compressor.Compressor compressor1 = + new neqsim.processSimulation.processEquipment.compressor.Compressor("Compressor1", + inletStream); + compressor1.setUsePolytropicCalc(true); + compressor1.setOutletPressure(pressure_Out); + compressor1.setOutTemperature(358.0); + compressor1.run(); + // logger.info("srk polytropic efficiency " + + // compressor1.getPolytropicEfficiency()*100 + " poly eff"); + // logger.info("srk fluid head " + compressor1.getPolytropicFluidHead() + + // " kJ/kg"); + // logger.info("srk power " + compressor1.getPower() + " W"); + assertEquals(compressor1.getPolytropicEfficiency() * 100, 88.94871563458828, 0.1); + // "Test case for rigorous polytropic efficiency with SRK calculation should return approximate + // 88.948715 "); + } + + /** + *

+ * testCompressorWithGERG2008. + *

+ */ + @Test + public void testCompressorWithGERG2008() { + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + inletStream.run(); + neqsim.processSimulation.processEquipment.compressor.Compressor compressor1 = + new neqsim.processSimulation.processEquipment.compressor.Compressor("Compressor1", + inletStream); + compressor1.setUsePolytropicCalc(true); + compressor1.setOutletPressure(pressure_Out); + compressor1.setOutTemperature(358.0); + compressor1.setUseGERG2008(true); + // compressor1.setUseRigorousPolytropicMethod(true); + compressor1.run(); + // logger.info("gerg polytropic efficiency " + + // compressor1.getPolytropicEfficiency()*100 + " poly eff"); + // logger.info("gerg fluid head " + compressor1.getPolytropicFluidHead() + // + " kJ/kg"); + // logger.info("gerg power " + compressor1.getPower() + " W"); + assertEquals(compressor1.getPolytropicEfficiency() * 100, 89.99367027631443, 0.01); + // "Test case for rigorous polytropic efficiency with GER2008 calculation should return + // approximate 89.992296751"); + } + + /** + *

+ * testCompressorWithGERG2008-2. + *

+ */ + @Test + public void testCompressorWithGERG2008_2() { + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + inletStream.run(); + neqsim.processSimulation.processEquipment.compressor.Compressor compressor1 = + new neqsim.processSimulation.processEquipment.compressor.Compressor("Compressor1", + inletStream); + compressor1.setOutletPressure(pressure_Out); + compressor1.setPolytropicEfficiency(0.56); + compressor1.setUsePolytropicCalc(true); + compressor1.setUseGERG2008(true); + compressor1.run(); + double head = compressor1.getPolytropicHead("kJ/kg"); + logger.info("gerg power " + compressor1.getPower() + " W"); + // assertEquals(compressor1.getPolytropicHead("kJ/kg"), 89.464626, 0.01); + compressor1.setUseGERG2008(false); + compressor1.run(); + double head2 = compressor1.getPolytropicHead("kJ/kg"); + logger.info("gerg power " + compressor1.getPower() + " W"); + assertEquals(compressor1.getPolytropicHead("kJ/kg"), 94.32923841459161, 0.01); + } + + /** + *

+ * test Multi Phase Compression. + *

+ */ + @Test + public void testMultiPhaseCompression() throws Exception { + SystemSrkEos testSystem = new SystemSrkEos(315.0, 10.0); + testSystem.addComponent("nitrogen", 2.0); + testSystem.addComponent("methane", 50.0); + testSystem.addComponent("nC10", 100.0); + testSystem.addComponent("water", 100.0); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + + processOps = new ProcessSystem(); + Stream inletStream = new Stream("feed stream", testSystem); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + compressor1 = new Compressor(unitName, inletStream); + compressor1.setOutletPressure(pressure_Out); + compressor1.setUsePolytropicCalc(true); + compressor1.setPolytropicEfficiency(0.5); + processOps.add(inletStream); + processOps.add(compressor1); + processOps.run(); + assertEquals(compressor1.getPower(), 3712607.597542703, 1110.01); + } } diff --git a/src/test/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumnTest.java b/src/test/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumnTest.java new file mode 100644 index 0000000000..0e6d35337d --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/distillation/DistillationColumnTest.java @@ -0,0 +1,213 @@ +package neqsim.processSimulation.processEquipment.distillation; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; + +public class DistillationColumnTest { + /** + * @throws java.lang.Exception + */ + @Test + public void DistillationColumnTest() throws Exception { + neqsim.thermo.system.SystemInterface richTEG = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + richTEG.addComponent("nitrogen", 0.0003884521907420086); + richTEG.addComponent("CO2", 0.3992611934362681); + richTEG.addComponent("methane", 0.1707852619527612); + richTEG.addComponent("ethane", 0.20533172990208282); + richTEG.addComponent("propane", 0.28448628224749795); + richTEG.addComponent("i-butane", 0.04538593257021818); + richTEG.addComponent("n-butane", 0.1078982825); + richTEG.addComponent("i-pentane", 0.08015009931573362); + richTEG.addComponent("n-pentane", 0.07597175884128077); + richTEG.addComponent("n-hexane", 0.735238469338); + richTEG.addComponent("n-heptane", 0.0); + richTEG.addComponent("nC8", 0.0); + richTEG.addComponent("nC9", 0.0); + richTEG.addComponent("benzene", 0.001); + richTEG.addComponent("water", 9.281170624865437); + richTEG.addComponent("TEG", 88.61393191277175); + richTEG.setMixingRule(10); + richTEG.setMultiPhaseCheck(false); + richTEG.init(0); + + neqsim.thermo.system.SystemInterface gasToReboiler = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + gasToReboiler.addComponent("nitrogen", 0.007104922868929818); + gasToReboiler.addComponent("CO2", 4.944830745821265); + gasToReboiler.addComponent("methane", 3.013439464714221); + gasToReboiler.addComponent("ethane", 3.1119159322353815); + gasToReboiler.addComponent("propane", 4.001381171330917); + gasToReboiler.addComponent("i-butane", 0.6934008192075206); + gasToReboiler.addComponent("n-butane", 1.684816349773283); + gasToReboiler.addComponent("i-pentane", 1.24185783393270); + gasToReboiler.addComponent("n-pentane", 1.32322868124); + gasToReboiler.addComponent("n-hexane", 12.2651); + gasToReboiler.addComponent("n-heptane", 0.0); + gasToReboiler.addComponent("nC8", 0.0); + gasToReboiler.addComponent("nC9", 0.0); + gasToReboiler.addComponent("benzene", 0.000); + gasToReboiler.addComponent("water", 63.419578687948665); + gasToReboiler.addComponent("TEG", 4.293253985703371); + gasToReboiler.setMixingRule(10); + gasToReboiler.setMultiPhaseCheck(false); + gasToReboiler.init(0); + + Stream richTEGStream = new Stream("richTEGS", richTEG); + richTEGStream.setFlowRate(9400.0, "kg/hr"); + richTEGStream.setTemperature(100, "C"); + richTEGStream.setPressure(1.12, "bara"); + richTEGStream.run(); + + Stream gasToReboilerStream = new Stream("gasToReboilerS", gasToReboiler); + gasToReboilerStream.setFlowRate(290, "kg/hr"); + gasToReboilerStream.setTemperature(200, "C"); + gasToReboilerStream.setPressure(1.12, "bara"); + gasToReboilerStream.run(); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(richTEGStream, 1); + column.getReboiler().setOutTemperature(273.15 + 202); + column.getCondenser().setOutTemperature(273.15 + 88.165861); + // column.getCondenser().setHeatInput(-50000); + column.getTray(1).addStream(gasToReboilerStream); + column.setTopPressure(1.12); + column.setBottomPressure(1.12); + column.setInternalDiameter(0.56); + column.setMaxNumberOfIterations(40); + column.run(); + + double waterFlowRateInColumn = + richTEGStream.getFluid().getPhase(0).getComponent("water").getFlowRate("kg/hr") + + richTEGStream.getFluid().getPhase(1).getComponent("water").getFlowRate("kg/hr"); + double waterFlowRateInColumn2 = richTEGStream.getFluid().getComponent("water").getMolarMass() + * richTEGStream.getFluid().getFlowRate("mole/hr") + * richTEGStream.getFluid().getComponent("water").getz(); + assertEquals(waterFlowRateInColumn, waterFlowRateInColumn2, 0.00001); + + double waterFlowRateInColumnGasToReb = gasToReboilerStream.getFluid().getFlowRate("mole/hr") + * gasToReboilerStream.getFluid().getComponent("water").getMolarMass() + * gasToReboilerStream.getFluid().getComponent("water").getz(); + double waterFlowRateOutColumn = column.getGasOutStream().getFluid().getFlowRate("mole/hr") + * column.getGasOutStream().getFluid().getComponent("water").getMolarMass() + * column.getGasOutStream().getFluid().getComponent("water").getz(); + double waterFlowRateOutColumnLeanTEG = + column.getLiquidOutStream().getFluid().getFlowRate("mole/hr") + * column.getLiquidOutStream().getFluid().getComponent("water").getMolarMass() + * column.getLiquidOutStream().getFluid().getComponent("water").getz(); + + double totalWaterIn = waterFlowRateInColumn2 + waterFlowRateInColumnGasToReb; + double totalWaterOut = waterFlowRateOutColumn + waterFlowRateOutColumnLeanTEG; + /* + * System.out.println("Column in is " + totalWaterIn + " kg/hr"); + * System.out.println("Column out is " + totalWaterOut + " kg/hr"); + * System.out.println("Column is solved " + column.solved()); + * + * System.out.println("Calc Water Flow rate via fluid component " + waterFlowRateInColumn); + * System.out.println("Calc Water Flow rate via molar mass and flow rate total " + + * waterFlowRateInColumn2 + " kg/hr"); + * + * System.out .println("condenser temperature " + + * column.getCondenser().getFluid().getTemperature("C")); System.out.println("condenser duty " + + * ((Condenser) column.getCondenser()).getDuty()); + */ + assertEquals(totalWaterIn, totalWaterOut, 1.0); + } + + /** + * @throws java.lang.Exception + */ + @Test + public void deethanizerTest() throws Exception { + neqsim.thermo.system.SystemInterface gasToDeethanizer = + new neqsim.thermo.system.SystemSrkEos(216, 30.00); + gasToDeethanizer.addComponent("nitrogen", 1.67366E-3); + gasToDeethanizer.addComponent("CO2", 1.06819E-4); + gasToDeethanizer.addComponent("methane", 5.14168E-1); + gasToDeethanizer.addComponent("ethane", 1.92528E-1); + gasToDeethanizer.addComponent("propane", 1.70001E-1); + gasToDeethanizer.addComponent("i-butane", 3.14561E-2); + gasToDeethanizer.addComponent("n-butane", 5.58678E-2); + gasToDeethanizer.addComponent("i-pentane", 1.29573E-2); + gasToDeethanizer.addComponent("n-pentane", 1.23719E-2); + gasToDeethanizer.addComponent("n-hexane", 5.12878E-3); + gasToDeethanizer.addComponent("n-heptane", 1.0E-2); + gasToDeethanizer.setMixingRule("classic"); + + Stream gasToDeethanizerStream = new Stream("gasToDeethanizer", gasToDeethanizer); + gasToDeethanizerStream.setFlowRate(100.0, "kg/hr"); + gasToDeethanizerStream.run(); + + // gasToDeethanizerStream.getFluid().prettyPrint(); + + DistillationColumn column = new DistillationColumn(5, true, false); + column.setName("Deethanizer"); + column.addFeedStream(gasToDeethanizerStream, 5); + column.getReboiler().setOutTemperature(105.0 + 273.15); + column.setTopPressure(30.0); + column.setBottomPressure(32.0); + column.setMaxNumberOfIterations(50); + column.run(); + column.run(); + + double massbalance = (gasToDeethanizerStream.getFlowRate("kg/hr") + - column.getLiquidOutStream().getFlowRate("kg/hr") + - column.getGasOutStream().getFlowRate("kg/hr")) + / gasToDeethanizerStream.getFlowRate("kg/hr") * 100; + + assertEquals(0.0, massbalance, 0.2); + // column.getGasOutStream().getFluid().prettyPrint(); + // column.getLiquidOutStream().getFluid().prettyPrint(); + } + + /** + * @throws java.lang.Exception + */ + @Test + public void debutanizerTest() throws Exception { + neqsim.thermo.system.SystemInterface gasToDbutanizer = + new neqsim.thermo.system.SystemSrkEos(289.0, 11.00); + gasToDbutanizer.addComponent("nitrogen", 3.09189E-7); + gasToDbutanizer.addComponent("CO2", 2.20812E-4); + gasToDbutanizer.addComponent("methane", 0.097192E-1); + gasToDbutanizer.addComponent("ethane", 0.15433E-1); + gasToDbutanizer.addComponent("propane", 2.01019E-1); + gasToDbutanizer.addComponent("i-butane", 2.953E-2); + gasToDbutanizer.addComponent("n-butane", 3.91507E-2); + gasToDbutanizer.addComponent("i-pentane", 4.03877E-3); + gasToDbutanizer.addComponent("n-pentane", 2.98172E-3); + gasToDbutanizer.addComponent("n-hexane", 3.92672E-4); + gasToDbutanizer.addComponent("n-heptane", 8.52258E-3); + gasToDbutanizer.setMixingRule("classic"); + + StreamInterface gasToDebutanizerStream = new Stream("gasToDbutanizer", gasToDbutanizer); + gasToDebutanizerStream.setFlowRate(100.0, "kg/hr"); + gasToDebutanizerStream.run(); + + // gasToDebutanizerStream.getFluid().prettyPrint(); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("Deethanizer"); + column.addFeedStream(gasToDebutanizerStream, 1); + ((Condenser) column.getCondenser()).setRefluxRatio(0.1); + ((Condenser) column.getCondenser()).setTotalCondenser(true); + column.getCondenser().setOutTemperature(gasToDbutanizer.getTemperature() - 10.0); + column.getReboiler().setOutTemperature(gasToDbutanizer.getTemperature() + 50.0); + column.setTopPressure(9.0); + column.setBottomPressure(13.0); + column.run(); + // ((Condenser) column.getCondenser()).getProductOutStream().getFluid().prettyPrint(); + + // column.getReboiler().getLiquidOutStream().getFluid().prettyPrint(); + + double massbalance = (gasToDebutanizerStream.getFlowRate("kg/hr") + - column.getReboiler().getLiquidOutStream().getFlowRate("kg/hr") + - ((Condenser) column.getCondenser()).getProductOutStream().getFlowRate("kg/hr")) + / gasToDebutanizerStream.getFlowRate("kg/hr") * 100; + + assertEquals(0.0, massbalance, 0.2); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchangerTest.java b/src/test/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchangerTest.java index 24c0fcead4..8d4c7c2736 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchangerTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/heatExchanger/HeatExchangerTest.java @@ -1,5 +1,6 @@ package neqsim.processSimulation.processEquipment.heatExchanger; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.separator.Separator; @@ -17,14 +18,13 @@ * @version $Id: $Id * @since 2.2.3 */ -public class HeatExchangerTest extends neqsim.NeqSimTest{ +public class HeatExchangerTest extends neqsim.NeqSimTest { static neqsim.thermo.system.SystemInterface testSystem; - static Stream gasStream; + Stream gasStream; @BeforeEach - static void setUp() { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 60.0), 20.00); + void setUp() { + testSystem = new neqsim.thermo.system.SystemSrkEos((273.15 + 60.0), 20.00); testSystem.addComponent("methane", 120.00); testSystem.addComponent("ethane", 120.0); testSystem.addComponent("n-heptane", 3.0); @@ -35,13 +35,19 @@ static void setUp() { } @Test - public static void test_Run1(String args[]) { + void testRun1() { Stream stream_Hot = new Stream("Stream1", testSystem); - Stream stream_Cold = new Stream("Stream1", testSystem.clone()); - - HeatExchanger heatEx = new HeatExchanger("heatEx"); - heatEx.setFeedStream(0, stream_Hot); - heatEx.setFeedStream(1, stream_Cold);// resyc.getOutStream()); + stream_Hot.setTemperature(100.0, "C"); + stream_Hot.setFlowRate(1000.0, "kg/hr"); + Stream stream_Cold = new Stream("Stream2", testSystem.clone()); + stream_Cold.setTemperature(20.0, "C"); + stream_Cold.setFlowRate(310.0, "kg/hr"); + + HeatExchanger heatEx = new HeatExchanger("heatEx", stream_Hot, stream_Cold); + // heatEx.setFeedStream(0, stream_Hot); + // heatEx.setFeedStream(1, stream_Cold); // resyc.getOutStream()); + heatEx.setGuessOutTemperature(80.0, "C"); + heatEx.setUAvalue(1000); Separator sep = new Separator("sep", stream_Hot); @@ -57,6 +63,7 @@ public static void test_Run1(String args[]) { neqsim.processSimulation.processSystem.ProcessSystem operations = new neqsim.processSimulation.processSystem.ProcessSystem(); operations.add(stream_Hot); + operations.add(stream_Cold); operations.add(heatEx); operations.add(sep); operations.add(oilOutStream); @@ -64,13 +71,12 @@ public static void test_Run1(String args[]) { operations.add(resyc); operations.run(); - // heatEx.getOutStream(0).displayResult(); // resyc.getOutStream().displayResult(); } @Test - public static void test_Run2(String args[]) { + void testRun2() { Stream stream_Hot = new Stream("Stream1", testSystem); neqsim.thermo.system.SystemInterface testSystem2 = @@ -95,8 +101,19 @@ public static void test_Run2(String args[]) { operations.add(heatExchanger1); operations.run(); - // operations.displayResult(); - // heatExchanger1.getOutStream(0).displayResult(); - // heatExchanger1.getOutStream(1).displayResult(); + assertEquals(heatExchanger1.getDuty(), -9674.051890272862, 1e-1); + + heatExchanger1.setDeltaT(1.0); + heatExchanger1.run(); + + assertEquals(15780.77130, heatExchanger1.getUAvalue(), 1e-3); + + heatExchanger1 = new neqsim.processSimulation.processEquipment.heatExchanger.HeatExchanger( + "heatEx", stream_Hot, stream_Cold); + heatExchanger1.setDeltaT(1.0); + heatExchanger1.run(); + + assertEquals(15780.77130, heatExchanger1.getUAvalue(), 1e-3); + } } diff --git a/src/test/java/neqsim/processSimulation/processEquipment/heatExchanger/HeaterTest.java b/src/test/java/neqsim/processSimulation/processEquipment/heatExchanger/HeaterTest.java new file mode 100644 index 0000000000..e1f70a8795 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/heatExchanger/HeaterTest.java @@ -0,0 +1,52 @@ +package neqsim.processSimulation.processEquipment.heatExchanger; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processSystem.ProcessSystem; +import neqsim.thermo.system.SystemSrkEos; + +public class HeaterTest { + static neqsim.thermo.system.SystemInterface testSystem = null; + double pressure_inlet = 85.0; + double temperature_inlet = 35.0; + double gasFlowRate = 5.0; + ProcessSystem processOps = null; + + /** + * @throws java.lang.Exception + */ + @BeforeEach + public void setUpBeforeClass() throws Exception { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + processOps = new ProcessSystem(); + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + + Heater heater1 = new Heater("heater 1", inletStream); + heater1.setOutTemperature(310.0); + processOps.add(inletStream); + processOps.add(heater1); + processOps.run(); + } + + @Test + void testNeedRecalculation() { + ((Heater) processOps.getUnit("heater 1")).setOutTemperature(348.1, "K"); + assertTrue(((Heater) processOps.getUnit("heater 1")).needRecalculation()); + processOps.run(); + assertFalse(((Heater) processOps.getUnit("heater 1")).needRecalculation()); + + ((Heater) processOps.getUnit("heater 1")).setOutPressure(10.0, "bara"); + assertTrue(((Heater) processOps.getUnit("heater 1")).needRecalculation()); + processOps.run(); + assertFalse(((Heater) processOps.getUnit("heater 1")).needRecalculation()); + + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/manifold/ManifoldTest.java b/src/test/java/neqsim/processSimulation/processEquipment/manifold/ManifoldTest.java new file mode 100644 index 0000000000..7266b0b2f3 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/manifold/ManifoldTest.java @@ -0,0 +1,90 @@ +package neqsim.processSimulation.processEquipment.manifold; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processSystem.ProcessSystem; +import neqsim.thermo.system.SystemSrkEos; + +public class ManifoldTest { + @Test + void testRun() { + SystemSrkEos testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("ethane", 10.0); + testSystem.addComponent("propane", 10.0); + + SystemSrkEos testSystem2 = testSystem.clone(); + testSystem2.setMolarComposition(new double[] {0.1, 0.4, 0.4}); + + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(10.0, "bara"); + inletStream.setTemperature(20.0, "C"); + inletStream.setFlowRate(3.0, "MSm3/day"); + inletStream.run(); + + Stream inletStream2 = new Stream("inletStream", testSystem2); + inletStream2.setName("inlet stream"); + inletStream2.setPressure(10.0, "bara"); + inletStream2.setTemperature(20.0, "C"); + inletStream2.setFlowRate(2.0, "MSm3/day"); + inletStream2.run(); + + Manifold manifold1 = new Manifold("manifold 1"); + manifold1.addStream(inletStream); + manifold1.addStream(inletStream2); + manifold1.setSplitFactors(new double[] {0.1, 0.5, 0.4}); + manifold1.run(); + + assertEquals(0.5, manifold1.getSplitStream(0).getFlowRate("MSm3/day"), 0.01); + assertEquals(manifold1.getSplitStream(1).getFluid().getComponent(0).getx(), + manifold1.getSplitStream(0).getFluid().getComponent(0).getx(), 1e-6); + assertEquals(5.0, manifold1.getMixedStream().getFlowRate("MSm3/day"), 0.01); + } + + @Test + void testRun2() { + SystemSrkEos testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("ethane", 10.0); + testSystem.addComponent("propane", 10.0); + + SystemSrkEos testSystem2 = testSystem.clone(); + testSystem2.setMolarComposition(new double[] {0.1, 0.4, 0.4}); + + ProcessSystem processOps = new ProcessSystem(); + + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(10.0, "bara"); + inletStream.setTemperature(20.0, "C"); + inletStream.setFlowRate(3.0, "MSm3/day"); + + Stream inletStream2 = new Stream("inletStream", testSystem2); + inletStream2.setName("inlet stream"); + inletStream2.setPressure(10.0, "bara"); + inletStream2.setTemperature(20.0, "C"); + inletStream2.setFlowRate(2.0, "MSm3/day"); + + Manifold manifold1 = new Manifold("manifold 1"); + manifold1.addStream(inletStream); + manifold1.addStream(inletStream2); + manifold1.setSplitFactors(new double[] {0.1, 0.5, 0.4}); + + Stream stream1FromManifold = new Stream("stream 1 from manifold", manifold1.getSplitStream(0)); + + processOps.add(inletStream); + processOps.add(inletStream2); + processOps.add(manifold1); + processOps.add(stream1FromManifold); + processOps.run(); + + assertEquals(0.5, manifold1.getSplitStream(0).getFlowRate("MSm3/day"), 0.01); + assertEquals(manifold1.getSplitStream(1).getFluid().getComponent(0).getx(), + manifold1.getSplitStream(0).getFluid().getComponent(0).getx(), 1e-6); + assertEquals(stream1FromManifold.getFluid().getComponent(0).getx(), + manifold1.getSplitStream(0).getFluid().getComponent(0).getx(), 1e-6); + assertEquals(5.0, manifold1.getMixedStream().getFlowRate("MSm3/day"), 0.01); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/mixer/MixerTest.java b/src/test/java/neqsim/processSimulation/processEquipment/mixer/MixerTest.java index 0485747fc1..4e156d1e81 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/mixer/MixerTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/mixer/MixerTest.java @@ -1,23 +1,23 @@ -/** - * - */ package neqsim.processSimulation.processEquipment.mixer; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processSystem.ProcessSystem; import neqsim.thermo.system.SystemSrkEos; /** * @author ESOL - * */ class MixerTest { static neqsim.thermo.system.SystemInterface testSystem; static neqsim.thermo.system.SystemInterface waterSystem; static Stream gasStream; static Stream waterStream; + /** * @throws java.lang.Exception */ @@ -31,9 +31,9 @@ static void setUpBeforeClass() throws Exception { testSystem.addTBPfraction("C10", 0.01, 0.366, 0.94); testSystem.setMixingRule(2); testSystem.setMultiPhaseCheck(true); - + waterSystem = testSystem.clone(); - waterSystem.setMolarComposition(new double[]{1.0, 0.0, 0.0,0.0, 0.0}); + waterSystem.setMolarComposition(new double[] {1.0, 0.0, 0.0, 0.0, 0.0}); gasStream = new Stream("turbine stream", testSystem); gasStream.setFlowRate(1.0, "MSm3/day"); @@ -57,6 +57,31 @@ void testRun() { testMixer.addStream(waterStream); testMixer.run(); assertEquals(testMixer.getOutletStream().getFluid().getEnthalpy("kJ/kg"), -177.27666625251516, - 1e-3); + 1e-1); + } + + /** + * Test method for {@link neqsim.processSimulation.processEquipment.mixer.Mixer#run()}. + */ + @Test + void testNeedRecalculation() { + Mixer testMixer = new Mixer("test mixer"); + testMixer.addStream(gasStream); + testMixer.addStream(waterStream); + testMixer.run(); + ProcessSystem processOps = new ProcessSystem(); + processOps.add(gasStream); + processOps.add(waterStream); + processOps.add(testMixer); + processOps.run(); + assertFalse(gasStream.needRecalculation()); + assertFalse(waterStream.needRecalculation()); + assertFalse(testMixer.needRecalculation()); + gasStream.setFlowRate(100.1, "kg/hr"); + assertTrue(gasStream.needRecalculation()); + assertTrue(testMixer.needRecalculation()); + processOps.run(); + assertFalse(gasStream.needRecalculation()); + assertFalse(testMixer.needRecalculation()); } } diff --git a/src/test/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticTwoPhasePipeTest.java b/src/test/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticTwoPhasePipeTest.java new file mode 100644 index 0000000000..21525856d8 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/pipeline/AdiabaticTwoPhasePipeTest.java @@ -0,0 +1,50 @@ +package neqsim.processSimulation.processEquipment.pipeline; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; + +public class AdiabaticTwoPhasePipeTest { + @Test + public void testMain() { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 5.0), 200.00); + testSystem.addComponent("methane", 75, "MSm^3/day"); + testSystem.addComponent("n-heptane", 0.0000001, "MSm^3/day"); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.init(0); + + Stream stream_1 = new Stream("Stream1", testSystem); + + AdiabaticTwoPhasePipe pipe = new AdiabaticTwoPhasePipe("pipe1", stream_1); + pipe.setLength(400.0 * 1e3); + pipe.setDiameter(1.017112); + pipe.setPipeWallRoughness(5e-6); + + AdiabaticTwoPhasePipe pipe2 = new AdiabaticTwoPhasePipe("pipe2", pipe.getOutletStream()); + pipe2.setLength(100.0); + pipe2.setDiameter(0.3017112); + pipe2.setPipeWallRoughness(5e-6); + // pipe.setOutPressure(112.0); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(pipe); + operations.add(pipe2); + operations.run(); + // pipe.displayResult(); + // System.out.println("flow " + pipe2.getOutletStream().getFluid().getFlowRate("MSm3/day")); + // System.out.println("out pressure " + pipe.getOutletStream().getPressure("bara")); + // System.out.println("velocity " + pipe.getSuperficialVelocity()); + // System.out.println("out pressure " + pipe2.getOutletStream().getPressure("bara")); + // System.out.println("velocity " + pipe2.getSuperficialVelocity()); + + Assertions.assertEquals(75.0000001, pipe2.getOutletStream().getFluid().getFlowRate("MSm3/day")); + Assertions.assertEquals(153.58741116226855, pipe.getOutletStream().getPressure("bara")); + Assertions.assertEquals(4.207400548548574, pipe.getSuperficialVelocity()); + Assertions.assertEquals(146.28492500260614, pipe2.getOutletStream().getPressure("bara")); + Assertions.assertEquals(60.751298047046646, pipe2.getSuperficialVelocity()); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/pipeline/BeggsAndBrillsPipeTest.java b/src/test/java/neqsim/processSimulation/processEquipment/pipeline/BeggsAndBrillsPipeTest.java new file mode 100644 index 0000000000..487be85b13 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/pipeline/BeggsAndBrillsPipeTest.java @@ -0,0 +1,348 @@ +package neqsim.processSimulation.processEquipment.pipeline; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class BeggsAndBrillsPipeTest { + @Test + public void testFlowNoVolumeCorrection() { + neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos( + (273.15 + 15), ThermodynamicConstantsInterface.referencePressure); + + testSystem.addComponent("nC10", 50, "MSm^3/day"); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.useVolumeCorrection(false); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initPhysicalProperties(); + + Assertions.assertEquals(testSystem.getPhase("oil").getFlowRate("m3/hr"), + testSystem.getFlowRate("m3/hr"), 1); + } + + @Test + public void testFlowVolumeCorrection() { + neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos( + (273.15 + 15), ThermodynamicConstantsInterface.referencePressure); + + testSystem.addComponent("nC10", 50, "MSm^3/day"); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.useVolumeCorrection(true); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initPhysicalProperties(); + + Assertions.assertEquals(testSystem.getPhase("oil").getFlowRate("m3/hr"), + testSystem.getFlowRate("m3/hr"), 1); + } + + @Test + public void testPipeLineBeggsAndBrills() { + double pressure = 50; // bara + double temperature = 40; // C + double massFlowRate = 1100000.000000000; + + neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos( + (273.15 + 45), ThermodynamicConstantsInterface.referencePressure); + + testSystem.addComponent("methane", 0.5); + testSystem.addComponent("nC10", 0.5); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.useVolumeCorrection(true); + testSystem.setPressure(pressure, "bara"); + testSystem.setTemperature(temperature, "C"); + testSystem.setTotalFlowRate(massFlowRate, "kg/hr"); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initPhysicalProperties(); + + Stream stream_1 = new Stream("Stream1", testSystem); + stream_1.setFlowRate(massFlowRate, "kg/hr"); + + PipeBeggsAndBrills pipe = new PipeBeggsAndBrills(stream_1); + pipe.setPipeWallRoughness(5e-6); + pipe.setLength(10.0); + pipe.setAngle(0); + pipe.setDiameter(0.125); + pipe.setNumberOfIncrements(20); + pipe.setRunIsothermal(false); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(pipe); + operations.run(); + + double pressureOut = pipe.getOutletPressure(); + double temperatureOut = pipe.getOutletTemperature() - 273.15; + + Assertions.assertEquals(pressureOut, 27.5402, 1); + Assertions.assertEquals(temperatureOut, 39.3374, 1); + Assertions.assertEquals(pipe.getOutletSuperficialVelocity(), + pipe.getSegmentMixtureSuperficialVelocity(pipe.getNumberOfIncrements()), 0.1); + } + + @Test + public void testPipeLineBeggsAndBrills2() { + double pressure = 50; // bara + double temperature = 40; // C + double massFlowRate = 110000.000000000; + + neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos( + (273.15 + 45), ThermodynamicConstantsInterface.referencePressure); + + testSystem.addComponent("methane", 0.5); + testSystem.addComponent("nC10", 0.5); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.useVolumeCorrection(true); + testSystem.setPressure(pressure, "bara"); + testSystem.setTemperature(temperature, "C"); + testSystem.setTotalFlowRate(massFlowRate, "kg/hr"); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initPhysicalProperties(); + + Stream stream_1 = new Stream("Stream1", testSystem); + stream_1.setFlowRate(massFlowRate, "kg/hr"); + + PipeBeggsAndBrills pipe = new PipeBeggsAndBrills("beggs and brils pipe 1", stream_1); + pipe.setPipeWallRoughness(0); + pipe.setLength(750.0); + pipe.setAngle(90); + pipe.setDiameter(0.125); + pipe.setNumberOfIncrements(50); + pipe.setRunIsothermal(false); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(pipe); + operations.run(); + + double pressureOut = pipe.getOutletPressure(); + double temperatureOut = pipe.getOutletTemperature() - 273.15; + Assertions.assertEquals(pressureOut, 13.366143179275166, 1); + Assertions.assertEquals(temperatureOut, 38.8, 0.1); + Assertions.assertEquals(pipe.getFlowRegime(), "INTERMITTENT"); + Assertions.assertEquals(pipe.getOutletSuperficialVelocity(), + pipe.getSegmentMixtureSuperficialVelocity(pipe.getNumberOfIncrements()), 0.1); + } + + @Test + public void testPipeLineBeggsAndBrills3() { + double pressure = 50; // bara + double temperature = 80; // C + double massFlowRate = 110000.000000000; + + neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos( + (273.15 + 45), ThermodynamicConstantsInterface.referencePressure); + + testSystem.addComponent("methane", 0.3); + testSystem.addComponent("nC10", 0.4); + testSystem.addComponent("water", 0.3); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.useVolumeCorrection(true); + testSystem.setPressure(pressure, "bara"); + testSystem.setTemperature(temperature, "C"); + testSystem.setTotalFlowRate(massFlowRate, "kg/hr"); + testSystem.setMultiPhaseCheck(true); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initPhysicalProperties(); + + Stream stream_1 = new Stream("Stream1", testSystem); + stream_1.setFlowRate(massFlowRate, "kg/hr"); + + PipeBeggsAndBrills pipe = new PipeBeggsAndBrills(stream_1); + pipe.setPipeWallRoughness(0); + pipe.setLength(410.0); + pipe.setElevation(300); + pipe.setDiameter(0.125); + pipe.setNumberOfIncrements(10); + pipe.setRunIsothermal(false); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(pipe); + operations.run(); + + double pressureOut = pipe.getOutletPressure(); + double temperatureOut = pipe.getOutletTemperature() - 273.15; + + Assertions.assertEquals(pressureOut, 34.4716898025371, 1); + Assertions.assertEquals(temperatureOut, 79.80343, 1); + Assertions.assertEquals(pipe.getPressureDrop(), 15.5283101974629, 1.0); + Assertions.assertEquals(pipe.getSegmentPressure(10), 34.4716898025371, 1.0); + Assertions.assertEquals(pipe.getSegmentPressureDrop(10), 1.5468048987983438, 1.0); + Assertions.assertEquals(pipe.getSegmentTemperature(10) - 273.15, 79.80343029302054, 1.0); + Assertions.assertEquals(pipe.getSegmentFlowRegime(10), "INTERMITTENT"); + Assertions.assertEquals(pipe.getSegmentMixtureDensity(10), 224.31571593591167, 20.0); + Assertions.assertEquals(pipe.getSegmentLiquidSuperficialVelocity(10), 3.357338501138603, 1.0); + Assertions.assertEquals(pipe.getSegmentGasSuperficialVelocity(10), 7.109484383317198, 1.0); + Assertions.assertEquals(pipe.getSegmentMixtureSuperficialVelocity(10), 10.466822884455802, 1.0); + Assertions.assertEquals(pipe.getSegmentMixtureViscosity(10), 0.14329203901478244, 1.0); + Assertions.assertEquals(pipe.getSegmentLiquidHoldup(10), 0.42601098053163294, 1.0); + Assertions.assertEquals(pipe.getSegmentLength(10), 410.0, 1.0); + Assertions.assertEquals(pipe.getSegmentElevation(10), 300, 1.0); + Assertions.assertEquals(pipe.getOutletSuperficialVelocity(), + pipe.getSegmentMixtureSuperficialVelocity(pipe.getNumberOfIncrements()), 0.1); + + pipe.setRunIsothermal(true); + pipe.run(); + Assertions.assertEquals(pipe.getSegmentPressure(10), 34.4716898025371, 1.0); + Assertions.assertEquals(pipe.getOutletStream().getTemperature() - 273.15, 80, 1.0); + } + + @Test + public void testPipeLineBeggsAndBrills4() { + // One phase + double pressure = 150; // bara + double temperature = 80; // C + double massFlowRate = 110000.000000000; + + neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos( + (273.15 + 45), ThermodynamicConstantsInterface.referencePressure); + + testSystem.addComponent("methane", 1); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.useVolumeCorrection(true); + testSystem.setPressure(pressure, "bara"); + testSystem.setTemperature(temperature, "C"); + testSystem.setTotalFlowRate(massFlowRate, "kg/hr"); + testSystem.initPhysicalProperties(); + + Stream stream_1 = new Stream("Stream1", testSystem); + stream_1.setFlowRate(massFlowRate, "kg/hr"); + + PipeBeggsAndBrills pipe = new PipeBeggsAndBrills(stream_1); + pipe.setPipeWallRoughness(0); + pipe.setLength(1500.0); + pipe.setElevation(-1000); + pipe.setDiameter(0.125); + pipe.setNumberOfIncrements(10); + pipe.setRunIsothermal(false); + + // test with only water phase + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(pipe); + operations.run(); + + double pressureOut = pipe.getOutletPressure(); + double temperatureOut = pipe.getOutletTemperature() - 273.15; + + Assertions.assertEquals(temperatureOut, 75.0748, 1); + Assertions.assertEquals(pressureOut, 124.04439, 1); + + Assertions.assertEquals(pipe.getPressureDrop(), 25.955604559293917, 1.0); + Assertions.assertEquals(pipe.getSegmentPressure(10), 124.04439544070608, 1.0); + Assertions.assertEquals(pipe.getSegmentPressure(0), 150, 1.0); + Assertions.assertEquals(pipe.getSegmentPressureDrop(10), 2.9204245897598162, 1.0); + Assertions.assertEquals(pipe.getSegmentTemperature(10) - 273.15, 75.07486781297496, 1.0); + Assertions.assertEquals(pipe.getSegmentFlowRegime(10), "Single Phase"); + Assertions.assertEquals(pipe.getSegmentMixtureDensity(10), 73.54613545016805, 1.0); + Assertions.assertEquals(pipe.getSegmentLiquidSuperficialVelocity(10), 0.0, 1.0); + Assertions.assertEquals(pipe.getSegmentGasSuperficialVelocity(10), 33.85480591912372, 1.0); + Assertions.assertEquals(pipe.getSegmentMixtureSuperficialVelocity(10), 33.85480591912372, 1.0); + Assertions.assertEquals(pipe.getSegmentMixtureViscosity(10), 0.14329203901478244, 1.0); + Assertions.assertEquals(pipe.getSegmentLiquidHoldup(10), 0.0, 0.01); + Assertions.assertEquals(pipe.getSegmentMixtureReynoldsNumber(10), 2.014803001851525E7, 1.0); + Assertions.assertEquals(pipe.getSegmentLength(10), 1500.0, 1.0); + Assertions.assertEquals(pipe.getSegmentElevation(10), -1000, 1.0); + Assertions.assertEquals(pipe.getNumberOfIncrements(), 10, 0.1); + Assertions.assertEquals(pipe.getOutletSuperficialVelocity(), + pipe.getSegmentMixtureSuperficialVelocity(pipe.getNumberOfIncrements()), 0.1); + + neqsim.thermo.system.SystemInterface testSystem2 = new neqsim.thermo.system.SystemSrkEos( + (273.15 + 45), ThermodynamicConstantsInterface.referencePressure); + + testSystem2.addComponent("water", 1); + testSystem2.setMixingRule(2); + testSystem2.init(0); + testSystem2.useVolumeCorrection(true); + testSystem2.setPressure(pressure, "bara"); + testSystem2.setTemperature(temperature, "C"); + testSystem2.setTotalFlowRate(massFlowRate, "kg/hr"); + testSystem2.initPhysicalProperties(); + + Stream stream_2 = new Stream("Stream1", testSystem2); + stream_2.setFlowRate(massFlowRate, "kg/hr"); + + PipeBeggsAndBrills pipe2 = new PipeBeggsAndBrills(stream_2); + pipe2.setPipeWallRoughness(0); + pipe2.setLength(1500.0); + pipe2.setElevation(-1000); + pipe2.setDiameter(0.125); + pipe2.setNumberOfIncrements(10); + pipe2.setRunIsothermal(false); + + neqsim.processSimulation.processSystem.ProcessSystem operations2 = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations2.add(stream_2); + operations2.add(pipe2); + operations2.run(); + + double pressureOut2 = pipe2.getOutletPressure(); + + Assertions.assertEquals(pressureOut2, 238.8205556280226, 1); + + neqsim.thermo.system.SystemInterface testSystem3 = new neqsim.thermo.system.SystemSrkEos( + (273.15 + 45), ThermodynamicConstantsInterface.referencePressure); + + testSystem3.addComponent("ethane", 1); + testSystem3.setMixingRule(2); + testSystem3.init(0); + testSystem3.useVolumeCorrection(true); + testSystem3.setPressure(pressure, "bara"); + testSystem3.setTemperature(temperature, "C"); + testSystem3.setTotalFlowRate(massFlowRate, "kg/hr"); + testSystem3.initPhysicalProperties(); + + ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem3); + testOps2.TPflash(); + testSystem3.initPhysicalProperties(); + + Assertions.assertEquals(testSystem3.hasPhaseType("oil"), true); + + Stream stream_3 = new Stream("Stream1", testSystem3); + stream_3.setFlowRate(massFlowRate, "kg/hr"); + + PipeBeggsAndBrills pipe3 = new PipeBeggsAndBrills(stream_3); + pipe3.setPipeWallRoughness(0); + pipe3.setLength(10000.0); + pipe3.setElevation(1500); + pipe3.setDiameter(0.125); + pipe3.setNumberOfIncrements(10); + pipe3.setRunIsothermal(false); + + neqsim.processSimulation.processSystem.ProcessSystem operations3 = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations3.add(stream_3); + operations3.add(pipe3); + operations3.run(); + + double pressureOut3 = pipe3.getOutletPressure(); + double temperatureOut3 = pipe3.getOutletTemperature() - 273.15; + + Assertions.assertEquals(testSystem3.hasPhaseType("gas"), true); + + Assertions.assertEquals(temperatureOut3, -11.04463, 1); + Assertions.assertEquals(pressureOut3, 18.3429, 1); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/pipeline/PipelineTest.java b/src/test/java/neqsim/processSimulation/processEquipment/pipeline/PipelineTest.java new file mode 100644 index 0000000000..d50b406fd6 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/pipeline/PipelineTest.java @@ -0,0 +1,71 @@ +package neqsim.processSimulation.processEquipment.pipeline; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; + +public class PipelineTest { + @Test + public void testMain() { + double flow = 60.0; + double temperature = 20.0; + double pressure = 200.0; + + double diameter = 1.0; + double length = 700000.0; + double elevation = 0; + double wallroughness = 5e-6; + + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + temperature), pressure); + testSystem.addComponent("methane", 0.9); + testSystem.addComponent("ethane", 0.1); + testSystem.setMixingRule("classic"); + + Stream stream_1 = new Stream("Stream1", testSystem); + stream_1.setFlowRate(flow, "MSm3/day"); + stream_1.setTemperature(temperature, "C"); + stream_1.setPressure(pressure, "bara"); + + stream_1.run(); + OnePhasePipeLine pipeline = new OnePhasePipeLine("pipeline", stream_1); + pipeline.setNumberOfLegs(1); + pipeline.setPipeDiameters(new double[] {diameter, diameter}); + pipeline.setLegPositions(new double[] {0, length}); + pipeline.setHeightProfile(new double[] {0, elevation}); + pipeline.setPipeWallRoughness(new double[] {wallroughness, wallroughness}); + pipeline.setOuterTemperatures(new double[] {temperature + 273.15, temperature + 273.15}); + pipeline.setPipeOuterHeatTransferCoefficients(new double[] {15.0, 15.0}); + pipeline.setPipeWallHeatTransferCoefficients(new double[] {15.0, 15.0}); + + AdiabaticPipe simplePipeline = new AdiabaticPipe("simplePipeline", stream_1); + simplePipeline.setDiameter(diameter); + simplePipeline.setLength(length); + simplePipeline.setPipeWallRoughness(wallroughness); + simplePipeline.setInletElevation(0); + simplePipeline.setOutletElevation(elevation); + + PipeBeggsAndBrills beggsBrilsPipe = new PipeBeggsAndBrills("simplePipeline 2", stream_1); + beggsBrilsPipe.setPipeWallRoughness(wallroughness); + beggsBrilsPipe.setLength(length); + beggsBrilsPipe.setElevation(elevation); + beggsBrilsPipe.setDiameter(diameter); + beggsBrilsPipe.setRunIsothermal(false); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(pipeline); + operations.add(simplePipeline); + operations.add(beggsBrilsPipe); + operations.run(); + + // pipeline.run(); + + System.out.println(beggsBrilsPipe.getOutletStream().getTemperature()); + + Assertions.assertEquals(123.876927, pipeline.getOutletPressure("bara"), 0.1); + Assertions.assertEquals(120.711887695240, simplePipeline.getOutletPressure(), 0.1); + Assertions.assertEquals(113.983562217178, beggsBrilsPipe.getOutletPressure(), 0.1); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/powerGeneration/GasTurbineTest.java b/src/test/java/neqsim/processSimulation/processEquipment/powerGeneration/GasTurbineTest.java index d51aa54f2b..1fd56cbc56 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/powerGeneration/GasTurbineTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/powerGeneration/GasTurbineTest.java @@ -1,5 +1,8 @@ package neqsim.processSimulation.processEquipment.powerGeneration; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; @@ -7,45 +10,70 @@ import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.thermo.system.SystemSrkEos; -public class GasTurbineTest extends neqsim.NeqSimTest{ - static neqsim.thermo.system.SystemInterface testSystem; - static Stream gasStream; +public class GasTurbineTest extends neqsim.NeqSimTest { + static Logger logger = LogManager.getLogger(GasTurbineTest.class); - @BeforeAll - static void setUp() { - testSystem = new SystemSrkEos(298.15, 1.0); - testSystem.addComponent("methane", 1.0); + static neqsim.thermo.system.SystemInterface testSystem; + static Stream gasStream; - gasStream = new Stream("turbine stream", testSystem); - gasStream.setFlowRate(1.0, "MSm3/day"); - gasStream.setTemperature(50.0, "C"); - gasStream.setPressure(2.0, "bara"); - } + @BeforeAll + static void setUp() { + testSystem = new SystemSrkEos(298.15, 1.0); + testSystem.addComponent("methane", 1.0); - @Test - void testSetInletStream() { - GasTurbine gasturb = new GasTurbine("turbine"); - gasturb.setInletStream(gasStream); + gasStream = new Stream("turbine stream", testSystem); + gasStream.setFlowRate(1.0, "MSm3/day"); + gasStream.setTemperature(50.0, "C"); + gasStream.setPressure(2.0, "bara"); + } - Assertions.assertEquals(new GasTurbine("turbine", gasStream), gasturb); - } + @Test + void testSetInletStream() { + GasTurbine gasturb = new GasTurbine("turbine"); + gasturb.setInletStream(gasStream); - @Test - void testGetMechanicalDesign() { + Assertions.assertEquals(new GasTurbine("turbine", gasStream), gasturb); + } - } + @Test + void testGetMechanicalDesign() {} - @Disabled - @Test - void testRun() { - // todo: test not working - gasStream.run(); - GasTurbine gasturb = new GasTurbine("turbine", gasStream); + @Disabled + @Test + void testRun() { + // TODO: test not working + gasStream.run(); + GasTurbine gasturb = new GasTurbine("turbine", gasStream); - // gasStream.run(); - gasturb.run(); + // gasStream.run(); + gasturb.run(); - System.out.println("power generated " + gasturb.getPower() / 1.0e6); - System.out.println("heat generated " + gasturb.getHeat() / 1.0e6); - } + logger.info("power generated " + gasturb.getPower() / 1.0e6); + logger.info("heat generated " + gasturb.getHeat() / 1.0e6); + } + + @Test + void testIdealAiFuelRatio() { + testSystem = new SystemSrkEos(298.15, 1.0); + testSystem.addComponent("nitrogen", 1.0); + testSystem.addComponent("CO2", 2.0); + testSystem.addComponent("methane", 92.0); + testSystem.addComponent("ethane", 4.0); + testSystem.addComponent("propane", 2.0); + testSystem.addComponent("i-butane", 0.5); + testSystem.addComponent("n-butane", 0.5); + testSystem.addComponent("n-pentane", 0.01); + testSystem.addComponent("i-pentane", 0.01); + testSystem.addComponent("n-hexane", 0.001); + + gasStream = new Stream("turbine stream", testSystem); + gasStream.setFlowRate(1.0, "MSm3/day"); + gasStream.setTemperature(50.0, "C"); + gasStream.setPressure(2.0, "bara"); + + GasTurbine gasturb = new GasTurbine("turbine"); + gasturb.setInletStream(gasStream); + double AFR = gasturb.calcIdealAirFuelRatio(); + assertEquals(15.8430086719654, AFR, 0.0001); + } } diff --git a/src/test/java/neqsim/processSimulation/processEquipment/pump/PumpChartTest.java b/src/test/java/neqsim/processSimulation/processEquipment/pump/PumpChartTest.java new file mode 100644 index 0000000000..dd88a58228 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/pump/PumpChartTest.java @@ -0,0 +1,25 @@ +package neqsim.processSimulation.processEquipment.pump; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class PumpChartTest { + @Test + void testSetHeadUnit() { + PumpChart pc = new PumpChart(); + String origUnit = pc.getHeadUnit(); + Assertions.assertEquals("meter", origUnit); + String newUnit = "kJ/kg"; + pc.setHeadUnit(newUnit); + Assertions.assertEquals(newUnit, pc.getHeadUnit()); + pc.setHeadUnit(origUnit); + Assertions.assertEquals(origUnit, pc.getHeadUnit()); + + RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, () -> { + pc.setHeadUnit("doesNotExist"); + }); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: PumpChart:setHeadUnit - Input headUnit does not support value doesNotExist", + thrown.getMessage()); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/pump/PumpTest.java b/src/test/java/neqsim/processSimulation/processEquipment/pump/PumpTest.java index bf1a16bf28..7a652fec80 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/pump/PumpTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/pump/PumpTest.java @@ -1,70 +1,102 @@ package neqsim.processSimulation.processEquipment.pump; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.stream.Stream; /** - *

PumpTest class.

+ *

+ * PumpTest class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ -public class PumpTest extends neqsim.NeqSimTest{ - @Test - void testRun() { - neqsim.thermo.system.SystemInterface feedGas = - new neqsim.thermo.system.SystemSrkEos(273.15 + 20.0, 10.00); - feedGas.addComponent("water", 1.0); +public class PumpTest extends neqsim.NeqSimTest { + @Test + void testRun() { + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkEos(273.15 + 20.0, 10.00); + feedGas.addComponent("water", 1.0); - Stream feedGasStream = new Stream("feed fluid", feedGas); - feedGasStream.setFlowRate(4000.0 * 1000, "kg/hr"); - feedGasStream.setTemperature(20.0, "C"); - feedGasStream.setPressure(1.0, "bara"); - feedGasStream.run(); + Stream feedGasStream = new Stream("feed fluid", feedGas); + feedGasStream.setFlowRate(4000.0 * 1000, "kg/hr"); + feedGasStream.setTemperature(20.0, "C"); + feedGasStream.setPressure(1.0, "bara"); + feedGasStream.run(); - Pump pump1 = new Pump("pump1", feedGasStream); - pump1.setOutletPressure(12.6); - pump1.calculateAsCompressor(false); + Pump pump1 = new Pump("pump1", feedGasStream); + pump1.setOutletPressure(12.6); + pump1.calculateAsCompressor(false); - pump1.run(); - double[] chartConditions = new double[] {0.3, 1.0, 1.0, 1.0}; - double[] speed = new double[] {350.0, 1000.0}; - double[][] flow = new double[][] { - {2789.1285, 3174.0375, 3689.2288, 4179.4503, 4570.2768, 4954.7728, 5246.0329, - 5661.0331}, - {2571.1753, 2943.7254, 3440.2675, 3837.4448, 4253.0898, 4668.6643, 4997.1926, - 5387.4952}}; - double[][] head = new double[][] { - {80.0375, 78.8934, 76.2142, 71.8678, 67.0062, 60.6061, 53.0499, 39.728}, - {72.2122, 71.8369, 68.9009, 65.8341, 60.7167, 54.702, 47.2749, 35.7471}, - {65.1576, 64.5253, 62.6118, 59.1619, 54.0455, 47.0059, 39.195, 31.6387}, - {58.6154, 56.9627, 54.6647, 50.4462, 44.4322, 38.4144, 32.9084, 28.8109}, - {52.3295, 51.0573, 49.5283, 46.3326, 42.3685, 37.2502, 31.4884, 25.598}, - {40.6578, 39.6416, 37.6008, 34.6603, 30.9503, 27.1116, 23.2713, 20.4546}, - {35.2705, 34.6359, 32.7228, 31.0645, 27.0985, 22.7482, 18.0113}, - {32.192, 31.1756, 29.1329, 26.833, 23.8909, 21.3324, 18.7726, 16.3403},}; - double[][] polyEff = new double[][] { - {77.2452238409573, 79.4154186459363, 80.737960012489, 80.5229826589649, - 79.2210931638144, 75.4719133864634, 69.6034181197298, 58.7322388482707}, - {77.0107837113504, 79.3069974136389, 80.8941189021135, 80.7190194665918, - 79.5313242980328, 75.5912622896367, 69.6846136362097, 60.0043057990909}, - {77.0043065299874, 79.1690958847856, 80.8038169975675, 80.6543975614197, - 78.8532389102705, 73.6664774270613, 66.2735600426727, 57.671664571658}, - {77.0716623789093, 80.4629750233093, 81.1390811169072, 79.6374242667478, - 75.380928428817, 69.5332969549779, 63.7997587622339, 58.8120614497758}, - {76.9705872525642, 79.8335492585324, 80.9468133671171, 80.5806471927835, - 78.0462158225426, 73.0403707523258, 66.5572286338589, 59.8624822515064}, - {77.5063036680357, 80.2056198362559, 81.0339108025933, 79.6085962687939, - 76.3814534404405, 70.8027503005902, 64.6437367160571, 60.5299349982342}, - {77.8175271586685, 80.065165942218, 81.0631362122632, 79.8955051771299, - 76.1983240929369, 69.289982774309, 60.8567149372229}, - {78.0924334304045, 80.9353551568667, 80.7904437766234, 78.8639325223295, - 75.2170936751143, 70.3105081673411, 65.5507568533569, - 61.0391468300337}}; - pump1.getPumpChart().setCurves(chartConditions, speed, flow, head, polyEff); - pump1.getPumpChart().setHeadUnit("meter"); - pump1.setSpeed(500); - pump1.run(); - } + pump1.run(); + double[] chartConditions = new double[] {0.3, 1.0, 1.0, 1.0}; + double[] speed = new double[] {350.0, 1000.0}; + double[][] flow = new double[][] { + {2789.1285, 3174.0375, 3689.2288, 4179.4503, 4570.2768, 4954.7728, 5246.0329, 5661.0331}, + {2571.1753, 2943.7254, 3440.2675, 3837.4448, 4253.0898, 4668.6643, 4997.1926, 5387.4952}}; + double[][] head = + new double[][] {{80.0375, 78.8934, 76.2142, 71.8678, 67.0062, 60.6061, 53.0499, 39.728}, + {72.2122, 71.8369, 68.9009, 65.8341, 60.7167, 54.702, 47.2749, 35.7471}, + {65.1576, 64.5253, 62.6118, 59.1619, 54.0455, 47.0059, 39.195, 31.6387}, + {58.6154, 56.9627, 54.6647, 50.4462, 44.4322, 38.4144, 32.9084, 28.8109}, + {52.3295, 51.0573, 49.5283, 46.3326, 42.3685, 37.2502, 31.4884, 25.598}, + {40.6578, 39.6416, 37.6008, 34.6603, 30.9503, 27.1116, 23.2713, 20.4546}, + {35.2705, 34.6359, 32.7228, 31.0645, 27.0985, 22.7482, 18.0113}, + {32.192, 31.1756, 29.1329, 26.833, 23.8909, 21.3324, 18.7726, 16.3403},}; + double[][] polyEff = new double[][] { + {77.2452238409573, 79.4154186459363, 80.737960012489, 80.5229826589649, 79.2210931638144, + 75.4719133864634, 69.6034181197298, 58.7322388482707}, + {77.0107837113504, 79.3069974136389, 80.8941189021135, 80.7190194665918, 79.5313242980328, + 75.5912622896367, 69.6846136362097, 60.0043057990909}, + {77.0043065299874, 79.1690958847856, 80.8038169975675, 80.6543975614197, 78.8532389102705, + 73.6664774270613, 66.2735600426727, 57.671664571658}, + {77.0716623789093, 80.4629750233093, 81.1390811169072, 79.6374242667478, 75.380928428817, + 69.5332969549779, 63.7997587622339, 58.8120614497758}, + {76.9705872525642, 79.8335492585324, 80.9468133671171, 80.5806471927835, 78.0462158225426, + 73.0403707523258, 66.5572286338589, 59.8624822515064}, + {77.5063036680357, 80.2056198362559, 81.0339108025933, 79.6085962687939, 76.3814534404405, + 70.8027503005902, 64.6437367160571, 60.5299349982342}, + {77.8175271586685, 80.065165942218, 81.0631362122632, 79.8955051771299, 76.1983240929369, + 69.289982774309, 60.8567149372229}, + {78.0924334304045, 80.9353551568667, 80.7904437766234, 78.8639325223295, 75.2170936751143, + 70.3105081673411, 65.5507568533569, 61.0391468300337}}; + pump1.getPumpChart().setCurves(chartConditions, speed, flow, head, polyEff); + pump1.getPumpChart().setHeadUnit("meter"); + pump1.setSpeed(500); + pump1.run(); + } + + @Test + void testSimplePumpCurve() { + neqsim.thermo.system.SystemInterface feedDecane = + new neqsim.thermo.system.SystemSrkEos(273.15 + 20.0, 10.00); + feedDecane.addComponent("n-pentane", 0.5, "kg/sec"); + feedDecane.addComponent("n-hexane", 0.5, "kg/sec"); + + Stream feedC10Stream = new Stream("feed decane", feedDecane); + feedC10Stream.setFlowRate(30000, "kg/hr"); + feedC10Stream.setTemperature(30.0, "C"); + feedC10Stream.setPressure(1.0, "bara"); + feedC10Stream.run(); + + System.out.println("flow " + feedC10Stream.getFlowRate("m3/hr")); + double[] chartConditions = new double[] {}; + double[] speed = new double[] {500.0}; + double[][] flow = + new double[][] {{27.1285, 31.0375, 36.2288, 41.4503, 45.2768, 49.7728, 52.0329, 56.0331}}; + double[][] head = + new double[][] {{80.0375, 78.8934, 76.2142, 71.8678, 67.0062, 60.6061, 53.0499, 39.728}}; + double[][] polyEff = new double[][] {{77.2452238409573, 79.4154186459363, 80.737960012489, + 80.5229826589649, 79.2210931638144, 75.4719133864634, 69.6034181197298, 58.7322388482707}}; + + Pump pump1 = new Pump("pump1", feedC10Stream); + pump1.getPumpChart().setCurves(chartConditions, speed, flow, head, polyEff); + pump1.getPumpChart().setHeadUnit("meter"); + pump1.setSpeed(500); + pump1.run(); + + Assertions.assertEquals(7.274237081101, pump1.getOutletPressure(), 1e-5); + } } diff --git a/src/test/java/neqsim/processSimulation/processEquipment/reservoir/SimpleReservoirTest.java b/src/test/java/neqsim/processSimulation/processEquipment/reservoir/SimpleReservoirTest.java new file mode 100644 index 0000000000..5189d934de --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/reservoir/SimpleReservoirTest.java @@ -0,0 +1,69 @@ +package neqsim.processSimulation.processEquipment.reservoir; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; + +public class SimpleReservoirTest { + static Logger logger = LogManager.getLogger(SimpleReservoirTest.class); + + @Test + void testRun2() { + neqsim.thermo.system.SystemInterface fluid1 = + new neqsim.thermo.system.SystemPrEos(373.15, 900.0); + fluid1.addComponent("water", 3.599); + fluid1.addComponent("nitrogen", 0.599); + fluid1.addComponent("CO2", 0.51); + fluid1.addComponent("methane", 62.8); + fluid1.addComponent("ethane", 8.12); + fluid1.addComponent("propane", 4.95); + fluid1.addComponent("i-butane", 1.25); + fluid1.addComponent("n-butane", 1.25); + fluid1.addComponent("i-pentane", 0.25); + fluid1.addComponent("n-pentane", 0.25); + fluid1.addComponent("n-hexane", 0.81); + fluid1.addPlusFraction("C7", 10.5, 180.0 / 1000.0, 840.0 / 1000.0); + fluid1.getCharacterization().characterisePlusFraction(); + fluid1.setMixingRule(2); + fluid1.setMultiPhaseCheck(true); + + SimpleReservoir reservoirOps = new SimpleReservoir("Well 1 reservoir"); + reservoirOps.setReservoirFluid(fluid1, 0, 635949179.71, 10.0e7); + + StreamInterface producedOilStream = reservoirOps.addOilProducer("oilproducer_1"); + producedOilStream.setFlowRate(6500.0 / 0.86 * 1000.0 * 4, "kg/day"); + + StreamInterface producedWaterStream = reservoirOps.addWaterProducer("waterproducer_1"); + producedWaterStream.setFlowRate(10000, "kg/day"); + + StreamInterface injectorGasStream = reservoirOps.addGasInjector("gasinjector_1"); + neqsim.thermo.system.SystemInterface fluidGas = fluid1.clone(); + fluidGas.setMolarComposition(new double[] {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0}); + injectorGasStream.setFluid(fluidGas); + injectorGasStream.setFlowRate(5.0, "MSm3/day"); + + StreamInterface injectorWaterStream = reservoirOps.addWaterInjector("waterinjector_1"); + neqsim.thermo.system.SystemInterface fluidWater = fluid1.clone(); + fluidWater.setMolarComposition(new double[] {1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0}); + injectorWaterStream.setFluid(fluidWater); + injectorWaterStream.setFlowRate(8000.0 * 1000 / 3.0 * 2, "kg/day"); + + reservoirOps.run(); + + double deltaTime = 24 * 60 * 60.0 * 365; + for (int i = 0; i < 10; i++) { + reservoirOps.runTransient(deltaTime); + } + Assertions.assertEquals(355.19330033985693 + , reservoirOps.getReservoirFluid().getPressure("bara"), 0.1); + Assertions.assertEquals(11.698, reservoirOps.getWaterProdution("Sm3/day"), 0.1); + + reservoirOps.setLowPressureLimit(52.0e5, "Pa"); + Assertions.assertEquals(52.0, reservoirOps.getLowPressureLimit("bara"), 0.1); + Assertions.assertEquals(52.0e5, reservoirOps.getLowPressureLimit("Pa"), 0.1); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/reservoir/WellFlowTest.java b/src/test/java/neqsim/processSimulation/processEquipment/reservoir/WellFlowTest.java new file mode 100644 index 0000000000..039dfcab84 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/reservoir/WellFlowTest.java @@ -0,0 +1,156 @@ +package neqsim.processSimulation.processEquipment.reservoir; + +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.pipeline.PipeBeggsAndBrills; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.processEquipment.util.Adjuster; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.processSimulation.processSystem.ProcessSystem; + +public class WellFlowTest { + @Test + void testRun() { + neqsim.thermo.system.SystemInterface fluid1 = + new neqsim.thermo.system.SystemPrEos(373.15, 100.0); + fluid1.addComponent("water", 3.599); + fluid1.addComponent("nitrogen", 0.599); + fluid1.addComponent("CO2", 0.51); + fluid1.addComponent("methane", 62.8); + fluid1.addComponent("n-heptane", 12.8); + fluid1.setMixingRule(2); + fluid1.setMultiPhaseCheck(true); + + SimpleReservoir reservoirOps = new SimpleReservoir("Well 1 reservoir"); + reservoirOps.setReservoirFluid(fluid1, 1e9, 10.0, 10.0e7); + + StreamInterface producedGasStream = reservoirOps.addGasProducer("gasproducer_1"); + producedGasStream.setFlowRate(1.0, "MSm3/day"); + + WellFlow wellflow = new WellFlow("well flow unit"); + wellflow.setInletStream(producedGasStream); + wellflow.setWellProductionIndex(5.000100751427403E-4); + + ProcessSystem process = new ProcessSystem(); + process.add(reservoirOps); + process.add(wellflow); + + process.run(); + /* + * System.out.println("production index " + wellflow.getWellProductionIndex() + + * " MSm3/day/bar^2"); System.out.println("reservoir pressure " + + * producedGasStream.getPressure("bara")); System.out .println("pres bottomhole " + + * wellflow.getOutletStream().getPressure("bara") + " bara"); + */ + } + + @Test + void testRunTransient() { + neqsim.thermo.system.SystemInterface fluid1 = + new neqsim.thermo.system.SystemPrEos(298.15, 60.0); + fluid1.addComponent("water", 3.599); + fluid1.addComponent("nitrogen", 0.599); + fluid1.addComponent("CO2", 0.51); + fluid1.addComponent("methane", 62.8); + fluid1.setMixingRule(2); + fluid1.setMultiPhaseCheck(true); + + SimpleReservoir reservoirOps = new SimpleReservoir("Well 1 reservoir"); + reservoirOps.setReservoirFluid(fluid1, 7e8, 1.0, 10.0e7); + reservoirOps.setLowPressureLimit(10.0, "bara"); + + StreamInterface producedGasStream = reservoirOps.addGasProducer("gasproducer_1"); + producedGasStream.setFlowRate(9.0, "MSm3/day"); + + WellFlow wellflow = new WellFlow("well flow unit"); + wellflow.setInletStream(producedGasStream); + wellflow.setWellProductionIndex(10.000100751427403E-3); + + PipeBeggsAndBrills pipe = new PipeBeggsAndBrills(wellflow.getOutletStream()); + pipe.setPipeWallRoughness(5e-6); + pipe.setLength(300.0); + pipe.setElevation(300); + pipe.setDiameter(0.625); + + PipeBeggsAndBrills pipeline = new PipeBeggsAndBrills(pipe.getOutletStream()); + pipeline.setPipeWallRoughness(5e-6); + pipeline.setLength(60000.0); + pipeline.setElevation(200); + pipeline.setDiameter(0.725); + + ThrottlingValve chokeValve = new ThrottlingValve("chocke"); + chokeValve.setInletStream(pipeline.getOutletStream()); + chokeValve.setOutletPressure(5.0, "bara"); + + Adjuster adjuster = new Adjuster("adjuster"); + adjuster.setTargetVariable(pipeline.getOutletStream(), "pressure", + chokeValve.getOutletPressure(), "bara"); + adjuster.setAdjustedVariable(producedGasStream, "flow", "MSm3/day"); + adjuster.setMaxAdjustedValue(9.0); + adjuster.setMinAdjustedValue(1.0); + + ProcessSystem process = new ProcessSystem(); + process.add(reservoirOps); + process.add(wellflow); + process.add(pipe); + process.add(pipeline); + process.add(adjuster); + process.run(); + /* + * System.out.println("production flow rate " + producedGasStream.getFlowRate("MSm3/day")); + * System.out.println("production index " + wellflow.getWellProductionIndex() + + * " MSm3/day/bar^2"); System.out.println("reservoir pressure " + + * producedGasStream.getPressure("bara")); System.out .println("pres bottomhole " + + * wellflow.getOutletStream().getPressure("bara") + " bara"); + * System.out.println("xmas pressure " + pipe.getOutletStream().getPressure("bara") + " bara"); + * System.out .println("top side pressure " + pipeline.getOutletStream().getPressure("bara") + + * " bara"); + */ + // process.setTimeStep(60 * 60 * 24 * 365); + + for (int i = 0; i < 8; i++) { + reservoirOps.runTransient(60 * 60 * 365); + process.run(); + if (pipeline.getOutletStream().getPressure("bara") < 5.0) { + continue; + } + /* + * System.out.println("production flow rate " + producedGasStream.getFlowRate("MSm3/day")); + * System.out.println("reservoir pressure " + wellflow.getInletStream().getPressure("bara")); + * System.out .println("pres bottomhole " + wellflow.getOutletStream().getPressure("bara") + + * " bara"); + * + * System.out.println("xmas pressure " + pipe.getOutletStream().getPressure("bara") + + * " bara"); System.out .println("top side pressure " + + * pipeline.getOutletStream().getPressure("bara") + " bara"); System.out + * .println("Total produced gas " + reservoirOps.getGasProductionTotal("GMSm3") + " GMSm3"); + * System.out.println("gas velocity " + pipeline.getInletSuperficialVelocity()); + */ + } + } + + @Test + void testCalcWellFlow() { + neqsim.thermo.system.SystemInterface fluid1 = + new neqsim.thermo.system.SystemPrEos(373.15, 100.0); + fluid1.addComponent("water", 3.599); + fluid1.addComponent("nitrogen", 0.599); + fluid1.addComponent("CO2", 0.51); + fluid1.addComponent("methane", 62.8); + fluid1.setMixingRule(2); + fluid1.setMultiPhaseCheck(true); + + SimpleReservoir reservoirOps = new SimpleReservoir("Well 1 reservoir"); + reservoirOps.setReservoirFluid(fluid1, 1e9, 1.0, 10.0e7); + reservoirOps.setLowPressureLimit(10.0, "bara"); + + StreamInterface producedGasStream = reservoirOps.addGasProducer("gasproducer_1"); + producedGasStream.setFlowRate(9.0, "MSm3/day"); + + WellFlow wellflow = new WellFlow("well flow unit"); + wellflow.setInletStream(producedGasStream); + + double permeability = 50.0; // milli darcy + // wellflow.setDarcyLawParameters(permeability, ); + // wellflow.setWellProductionIndex(10.000100751427403E-3); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/separator/SeparatorTest.java b/src/test/java/neqsim/processSimulation/processEquipment/separator/SeparatorTest.java index c3206ced21..7f7664f6c7 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/separator/SeparatorTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/separator/SeparatorTest.java @@ -1,7 +1,9 @@ package neqsim.processSimulation.processEquipment.separator; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import neqsim.processSimulation.measurementDevice.LevelTransmitter; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.processSimulation.processSystem.ProcessSystem; @@ -9,7 +11,6 @@ /** * @author ESOL - * */ class SeparatorTest extends neqsim.NeqSimTest { static neqsim.thermo.system.SystemInterface testSystem = null; @@ -17,6 +18,7 @@ class SeparatorTest extends neqsim.NeqSimTest { double temperature_inlet = 35.0; double gasFlowRate = 5.0; ProcessSystem processOps = null; + Separator sep = null; /** * @throws java.lang.Exception @@ -31,31 +33,27 @@ public void setUpBeforeClass() throws Exception { testSystem.setMixingRule(10); testSystem.setMultiPhaseCheck(true); - processOps = new ProcessSystem(); - StreamInterface inletStream = new Stream("inlet stream", testSystem); inletStream.setPressure(pressure_inlet, "bara"); inletStream.setTemperature(temperature_inlet, "C"); inletStream.setFlowRate(gasFlowRate, "MSm3/day"); - Separator sep = new Separator("inlet separator"); + sep = new Separator("inlet separator"); sep.setInletStream(inletStream); - StreamInterface gasFromSep = new Stream("liquid from separator", sep.getLiquidOutStream()); - StreamInterface liqFromSep = new Stream("liquid from separator", sep.getLiquidOutStream()); - + processOps = new ProcessSystem(); processOps.add(inletStream); processOps.add(sep); - // processOps.add(gasFromSep); - // processOps.add(liqFromSep); - - // processOps.run(); } @Test public void testFlow() { + LevelTransmitter lt = new LevelTransmitter("levelTransmitter", sep); + Assertions.assertEquals(0.5, lt.getMeasuredValue(), 1e-12); ((StreamInterface) processOps.getUnit("inlet stream")).setFlowRate(0.01, "MSm3/day"); processOps.run(); + Assertions.assertEquals(0.5, lt.getMeasuredValue(), 1e-12); + Assertions.assertEquals(lt.getMeasuredValue() * 100, lt.getMeasuredPercentValue(), 1e-12); } @Test diff --git a/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java b/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java index effb512df6..478e7dff8c 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/splitter/ComponentSplitterTest.java @@ -1,14 +1,22 @@ package neqsim.processSimulation.processEquipment.splitter; import static org.junit.jupiter.api.Assertions.assertEquals; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.compressor.Compressor; +import neqsim.processSimulation.processEquipment.mixer.Mixer; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.processEquipment.util.Recycle; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; import neqsim.processSimulation.processSystem.ProcessSystem; import neqsim.thermo.system.SystemSrkEos; class ComponentSplitterTest { + static Logger logger = LogManager.getLogger(ComponentSplitterTest.class); + static neqsim.thermo.system.SystemInterface testSystem = null; double pressure_inlet = 85.0; double temperature_inlet = 35.0; @@ -30,23 +38,175 @@ public void setUpBeforeClass() throws Exception { ComponentSplitter splitter = new ComponentSplitter("splitter", inletStream); splitter.setSplitFactors(new double[] {1.00, 0.0, 0.0}); - + StreamInterface stream1 = new Stream("stream 1", splitter.getSplitStream(0)); - StreamInterface stream2 = new Stream("stream 2",splitter.getSplitStream(1)); - + StreamInterface stream2 = new Stream("stream 2", splitter.getSplitStream(1)); + processOps.add(inletStream); processOps.add(splitter); processOps.add(stream1); processOps.add(stream2); } + @Test + public void configSplitter() { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("ethane", 10.0); + testSystem.addComponent("propane", 10.0); + processOps = new ProcessSystem(); + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + inletStream.run(); + Splitter splitter = new Splitter("splitter", inletStream, 3); + splitter.setSplitFactors(new double[] {0.8, 0.2, 0.0}); + splitter.run(); + assertEquals(0.815104472498348, splitter.getSplitStream(0).getFluid().getPhase(0).getZ(), 0.01); + assertEquals(0.815104472498348, splitter.getSplitStream(1).getFluid().getPhase(0).getZ(), 0.01); + assertEquals(0.815104472498348, splitter.getSplitStream(2).getFluid().getPhase(0).getZ(), 0.01); + } + @Test public void testRun() { processOps.run(); - //((StreamInterface)processOps.getUnit("stream 1")).displayResult(); - //((StreamInterface)processOps.getUnit("stream 2")).displayResult(); - assertEquals(((StreamInterface)processOps.getUnit("stream 1")).getFluid().getComponent("methane").getx(), 1.0, 1e-6); - assertEquals(((StreamInterface)processOps.getUnit("stream 2")).getFluid().getComponent("methane").getx(), 0.0, 1e-6); + // ((StreamInterface)processOps.getUnit("stream 1")).displayResult(); + // ((StreamInterface)processOps.getUnit("stream 2")).displayResult(); + assertEquals(((StreamInterface) processOps.getUnit("stream 1")).getFluid() + .getComponent("methane").getx(), 1.0, 1e-6); + assertEquals(((StreamInterface) processOps.getUnit("stream 2")).getFluid() + .getComponent("methane").getx(), 0.0, 1e-6); } + @Test + public void testRunSplitter() { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("ethane", 10.0); + testSystem.addComponent("propane", 10.0); + processOps = new ProcessSystem(); + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + + Splitter splitter = new Splitter("splitter", inletStream); + splitter.setSplitNumber(2); + splitter.setFlowRates(new double[] {4.0, 1.0}, "MSm3/day"); + // splitter.setFlowRates(new double[] {-1.0, 1.0}, "MSm3/day"); + + StreamInterface stream1 = splitter.getSplitStream(0); + StreamInterface stream2 = splitter.getSplitStream(1); + + ThrottlingValve valve1 = new ThrottlingValve("valve", stream1); + valve1.setCv(500.0); + valve1.setOutletPressure(5.0); + + processOps.add(inletStream); + processOps.add(splitter); + processOps.add(stream1); + processOps.add(stream2); + processOps.add(valve1); + + processOps.run(); + + assertEquals(stream1.getFlowRate("MSm3/day"), 4.0, 1e-6); + assertEquals(stream2.getFlowRate("MSm3/day"), 1.0, 1e-6); + logger.info("valve opening " + valve1.getPercentValveOpening()); + + splitter.setFlowRates(new double[] {-1, 4.9}, "MSm3/day"); + processOps.run(); + + logger.info("valve opening " + valve1.getPercentValveOpening()); + assertEquals(0.1, splitter.getSplitStream(0).getFlowRate("MSm3/day"), 1e-6); + assertEquals(4.9, splitter.getSplitStream(1).getFlowRate("MSm3/day"), 1e-6); + } + + @Test + public void testRunSplitter2() { + testSystem = new SystemSrkEos(298.0, 55.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("ethane", 10.0); + + processOps = new ProcessSystem(); + + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(55.0, "bara"); + inletStream.setTemperature(25.0, "C"); + inletStream.setFlowRate(5.0, "MSm3/day"); + + Stream streamresycl = inletStream.clone(); + + Mixer mixer1 = new Mixer("mixer 1"); + mixer1.addStream(inletStream); + mixer1.addStream(streamresycl); + + Compressor compressor1 = new Compressor("compressor 1", mixer1.getOutletStream()); + compressor1.setOutletPressure(100.0); + + Stream compressedStream = (Stream) compressor1.getOutletStream(); + + Splitter splitter = new Splitter("splitter 1", compressedStream); + splitter.setFlowRates(new double[] {5.0, 0.1}, "MSm3/day"); + + StreamInterface resycStream1 = splitter.getSplitStream(1); + + ThrottlingValve valve1 = new ThrottlingValve("valve 1", resycStream1); + valve1.setOutletPressure(55.0); + valve1.setCv(500.0); + + Recycle recycle1 = new Recycle("recycle 1"); + recycle1.addStream(valve1.getOutletStream()); + recycle1.setOutletStream(streamresycl); + recycle1.setFlowAccuracy(1e-6); + + StreamInterface exportStream = splitter.getSplitStream(0); + + processOps.add(inletStream); + processOps.add(streamresycl); + processOps.add(mixer1); + processOps.add(compressor1); + processOps.add(compressedStream); + processOps.add(splitter); + processOps.add(resycStream1); + processOps.add(valve1); + processOps.add(recycle1); + processOps.add(exportStream); + + processOps.run(); + assertEquals(5.0, exportStream.getFlowRate("MSm3/day"), 1e-6); + assertEquals(0.1, resycStream1.getFlowRate("MSm3/day"), 1e-6); + // assertEquals(8.43553108874272, valve1.getPercentValveOpening(), 1e-2); + + splitter.setFlowRates(new double[] {5.0, 0.5}, "MSm3/day"); + processOps.run(); + + assertEquals(5.00000000, exportStream.getFlowRate("MSm3/day"), 1e-4); + assertEquals(0.5, resycStream1.getFlowRate("MSm3/day"), 1e-4); + // assertEquals(41.9139926125338, valve1.getPercentValveOpening(), 1e-2); + + splitter.setFlowRates(new double[] {-1, 2.5}, "MSm3/day"); + processOps.run(); + assertEquals(5.00000000, exportStream.getFlowRate("MSm3/day"), 1e-4); + assertEquals(2.5, resycStream1.getFlowRate("MSm3/day"), 1e-4); + + splitter.setFlowRates(new double[] {5.0, 0.0}, "MSm3/day"); + processOps.run(); + assertEquals(5.0, exportStream.getFlowRate("MSm3/day"), 1e-6); + assertEquals(0.0, resycStream1.getFlowRate("MSm3/day"), 1e-6); + + splitter.setFlowRates(new double[] {5.0, 3.0}, "MSm3/day"); + processOps.run(); + assertEquals(5.0, exportStream.getFlowRate("MSm3/day"), 1e-6); + assertEquals(3.0, resycStream1.getFlowRate("MSm3/day"), 1e-6); + + splitter.setFlowRates(new double[] {-1, 0.0}, "MSm3/day"); + processOps.run(); + assertEquals(5.0, exportStream.getFlowRate("MSm3/day"), 1e-6); + assertEquals(0.0, resycStream1.getFlowRate("MSm3/day"), 1e-6); + } } diff --git a/src/test/java/neqsim/processSimulation/processEquipment/stream/StreamTest.java b/src/test/java/neqsim/processSimulation/processEquipment/stream/StreamTest.java index 52b3004a10..2ee7739da9 100644 --- a/src/test/java/neqsim/processSimulation/processEquipment/stream/StreamTest.java +++ b/src/test/java/neqsim/processSimulation/processEquipment/stream/StreamTest.java @@ -1,6 +1,8 @@ package neqsim.processSimulation.processEquipment.stream; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -9,49 +11,66 @@ /** * @author ESOL - * */ -class StreamTest extends neqsim.NeqSimTest{ - static neqsim.thermo.system.SystemInterface testSystem = null; - double pressure_inlet = 85.0; - double temperature_inlet = 35.0; - double gasFlowRate = 5.0; - ProcessSystem processOps = null; - - /** - * @throws java.lang.Exception - */ - @BeforeEach - public void setUpBeforeClass() throws Exception { - testSystem = new SystemSrkEos(298.0, 10.0); - testSystem.addComponent("methane", 100.0); - processOps = new ProcessSystem(); - Stream inletStream = new Stream("inletStream", testSystem); - inletStream.setName("inlet stream"); - inletStream.setPressure(pressure_inlet, "bara"); - inletStream.setTemperature(temperature_inlet, "C"); - inletStream.setFlowRate(gasFlowRate, "MSm3/day"); - - processOps.add(inletStream); - processOps.run(); - } - - @Test - public void testLCV() { - processOps.run(); - ((Stream) processOps.getUnit("inlet stream")).LCV(); - assertEquals(3.58980282482032E7, ((Stream) processOps.getUnit("inlet stream")).LCV(), 1.0); - // 18978 J/Sm3 - } - - @Test - public void testNoFlow() { - testSystem.setTotalFlowRate(0, "MSm3/day"); - RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, () -> { - testSystem.initProperties(); - }); - Assertions.assertEquals( - "neqsim.util.exception.InvalidInputException: PhaseSrkEos:init - Input totalNumberOfMoles must be larger than zero.", - thrown.getMessage()); - } +class StreamTest extends neqsim.NeqSimTest { + static neqsim.thermo.system.SystemInterface testSystem = null; + double pressure_inlet = 85.0; + double temperature_inlet = 35.0; + double gasFlowRate = 5.0; + ProcessSystem processOps = null; + + /** + * @throws java.lang.Exception + */ + @BeforeEach + public void setUpBeforeClass() throws Exception { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + processOps = new ProcessSystem(); + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + + processOps.add(inletStream); + processOps.run(); + } + + @Test + public void testLCV() { + processOps.run(); + ((Stream) processOps.getUnit("inlet stream")).LCV(); + assertEquals(3.58980282482032E7, ((Stream) processOps.getUnit("inlet stream")).LCV(), 1.0); + // 18978 J/Sm3 + } + + @Test + public void testNoFlow() { + testSystem.setTotalFlowRate(0, "MSm3/day"); + RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, () -> { + testSystem.initProperties(); + }); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: PhaseSrkEos:init - Input totalNumberOfMoles must be larger than zero.", + thrown.getMessage()); + } + + @Test + public void testNeedRecalculation() { + ((Stream) processOps.getUnit("inlet stream")).setTemperature(298.1, "K"); + assertTrue(((Stream) processOps.getUnit("inlet stream")).needRecalculation()); + processOps.run(); + assertFalse(((Stream) processOps.getUnit("inlet stream")).needRecalculation()); + + ((Stream) processOps.getUnit("inlet stream")).setPressure(98.1, "bara"); + assertTrue(((Stream) processOps.getUnit("inlet stream")).needRecalculation()); + processOps.run(); + assertFalse(((Stream) processOps.getUnit("inlet stream")).needRecalculation()); + + ((Stream) processOps.getUnit("inlet stream")).setFlowRate(12.1, "kg/hr"); + assertTrue(((Stream) processOps.getUnit("inlet stream")).needRecalculation()); + processOps.run(); + assertFalse(((Stream) processOps.getUnit("inlet stream")).needRecalculation()); + } } diff --git a/src/test/java/neqsim/processSimulation/processEquipment/stream/VirtualStreamTest.java b/src/test/java/neqsim/processSimulation/processEquipment/stream/VirtualStreamTest.java new file mode 100644 index 0000000000..50dcf7b64d --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/stream/VirtualStreamTest.java @@ -0,0 +1,77 @@ +package neqsim.processSimulation.processEquipment.stream; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processSystem.ProcessSystem; +import neqsim.thermo.system.SystemSrkEos; + +public class VirtualStreamTest { + static neqsim.thermo.system.SystemInterface testSystem = null; + double pressure_inlet = 85.0; + double temperature_inlet = 35.0; + double gasFlowRate = 5.0; + ProcessSystem processOps = null; + VirtualStream virtStream = null; + Stream inletStream = null; + + /** + * @throws java.lang.Exception + */ + @BeforeEach + public void setUpBeforeClass() throws Exception { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("ethane", 100.0); + processOps = new ProcessSystem(); + inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + + virtStream = new VirtualStream("virt stream", inletStream); + processOps.add(inletStream); + processOps.add(virtStream); + + processOps.run(); + } + + @Test + void testRun() { + virtStream.run(); + } + + @Test + void testSetComposition() { + virtStream.setComposition(new double[] {0.6, 0.4}, "molefrac"); + virtStream.run(); + assertEquals(0.6, virtStream.getOutStream().getFluid().getComponent(0).getx(), 1e-6); + } + + @Test + void testSetFlowRate() { + virtStream.setFlowRate(2.0, "MSm3/day"); + virtStream.run(); + assertEquals(2.0, virtStream.getOutStream().getFlowRate("MSm3/day"), 1e-6); + } + + @Test + void testSetPressure() { + virtStream.setPressure(12.0, "bara"); + virtStream.run(); + assertEquals(12.0, virtStream.getOutStream().getPressure("bara"), 1e-6); + } + + @Test + void testSetReferenceStream() { + virtStream.setReferenceStream(inletStream); + } + + @Test + void testSetTemperature() { + virtStream.setTemperature(22.0, "C"); + virtStream.run(); + assertEquals(22.0, virtStream.getOutStream().getTemperature("C"), 1e-6); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/util/AdjusterTest.java b/src/test/java/neqsim/processSimulation/processEquipment/util/AdjusterTest.java new file mode 100644 index 0000000000..ea5983556d --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/util/AdjusterTest.java @@ -0,0 +1,89 @@ +package neqsim.processSimulation.processEquipment.util; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +public class AdjusterTest { + @Test + void testRun() { + double wellheadpressure = 120.0; + double bottomholepressure = 200.0; + + neqsim.thermo.system.SystemInterface fluid1 = neqsim.thermo.FluidCreator.create("light oil"); + fluid1.setMixingRule("classic"); + + neqsim.processSimulation.processEquipment.stream.Stream stream1 = + new neqsim.processSimulation.processEquipment.stream.Stream(fluid1.clone()); + stream1.setFlowRate(1.5, "MSm3/day"); + stream1.setPressure(bottomholepressure, "bara"); + stream1.setTemperature(75.0, "C"); + + neqsim.processSimulation.processEquipment.pipeline.PipeBeggsAndBrills flowline1 = + new neqsim.processSimulation.processEquipment.pipeline.PipeBeggsAndBrills(stream1); + flowline1.setDiameter(0.25); + flowline1.setPipeWallRoughness(15e-6); + flowline1.setLength(1200); + flowline1.setElevation(1200.0); + flowline1.setNumberOfIncrements(20); + + neqsim.processSimulation.processEquipment.util.Adjuster adjuster = + new neqsim.processSimulation.processEquipment.util.Adjuster("adjuster"); + adjuster.setTargetVariable(flowline1.getOutletStream(), "pressure", wellheadpressure, "bara"); + adjuster.setAdjustedVariable(stream1, "flow", "MSm3/day"); + adjuster.setMaxAdjustedValue(10.0); + adjuster.setMinAdjustedValue(1); + adjuster.setTolerance(1e-5); + + neqsim.processSimulation.processSystem.ProcessSystem process = + new neqsim.processSimulation.processSystem.ProcessSystem(); + process.add(stream1); + process.add(flowline1); + process.add(adjuster); + process.run(); + + assertEquals(flowline1.getOutletStream().getPressure(), 120, 1); + assertEquals(flowline1.getOutletStream().getFlowRate("MSm3/day"), 4.0, 0.1); + } + + @Test + void testRun2() { + double wellheadpressure = 120.0; + double bottomholepressure = 200.0; + + neqsim.thermo.system.SystemInterface fluid1 = neqsim.thermo.FluidCreator.create("light oil"); + fluid1.setMixingRule("classic"); + + neqsim.processSimulation.processEquipment.stream.Stream stream1 = + new neqsim.processSimulation.processEquipment.stream.Stream(fluid1.clone()); + stream1.setFlowRate(4.0, "MSm3/day"); + stream1.setPressure(170, "bara"); + stream1.setTemperature(75.0, "C"); + + neqsim.processSimulation.processEquipment.pipeline.PipeBeggsAndBrills flowline1 = + new neqsim.processSimulation.processEquipment.pipeline.PipeBeggsAndBrills(stream1); + flowline1.setDiameter(0.25); + flowline1.setPipeWallRoughness(15e-6); + flowline1.setLength(1200); + flowline1.setElevation(1200.0); + flowline1.setNumberOfIncrements(20); + + neqsim.processSimulation.processEquipment.util.Adjuster adjuster = + new neqsim.processSimulation.processEquipment.util.Adjuster("adjuster"); + adjuster.setTargetVariable(flowline1.getOutletStream(), "pressure", wellheadpressure, "bara"); + adjuster.setAdjustedVariable(stream1, "pressure", "bara"); + adjuster.setMaxAdjustedValue(260.0); + adjuster.setMinAdjustedValue(50.1); + adjuster.setTolerance(1e-5); + + neqsim.processSimulation.processSystem.ProcessSystem process = + new neqsim.processSimulation.processSystem.ProcessSystem(); + process.add(stream1); + process.add(flowline1); + process.add(adjuster); + process.run(); + + assertEquals(flowline1.getOutletStream().getPressure(), 120, 1e-3); + assertEquals(flowline1.getOutletStream().getFlowRate("MSm3/day"), 4.0, 1e-3); + assertEquals(flowline1.getInletStream().getPressure(), 200, 0.1); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/util/FlowSetterTest.java b/src/test/java/neqsim/processSimulation/processEquipment/util/FlowSetterTest.java new file mode 100644 index 0000000000..51f5388b63 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/util/FlowSetterTest.java @@ -0,0 +1,148 @@ +package neqsim.processSimulation.processEquipment.util; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.measurementDevice.MultiPhaseMeter; +import neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class FlowSetterTest { + @Test + void testMain() { + SystemInterface testFluid = new SystemSrkEos(338.15, 50.0); + testFluid.addComponent("nitrogen", 1.205); + testFluid.addComponent("CO2", 1.340); + testFluid.addComponent("methane", 87.974); + testFluid.addComponent("ethane", 5.258); + testFluid.addComponent("propane", 3.283); + testFluid.addComponent("i-butane", 0.082); + testFluid.addComponent("n-butane", 0.487); + testFluid.addComponent("i-pentane", 0.056); + testFluid.addComponent("n-pentane", 1.053); + testFluid.addComponent("nC10", 4.053); + testFluid.addComponent("water", 10.00); + testFluid.setMixingRule(2); + testFluid.setMultiPhaseCheck(true); + + Stream stream_1 = new Stream("Stream1", testFluid); + stream_1.run(); + + MultiPhaseMeter multiPhaseMeter = new MultiPhaseMeter("test", stream_1); + multiPhaseMeter.setTemperature(15.0, "C"); + multiPhaseMeter.setPressure(1.01325, "bara"); + + FlowSetter flowset = new FlowSetter("flowset", stream_1); + // flowset.setTemperature(15.0, "C"); + // flowset.setPressure(1.01325, "bara"); + flowset.setGasFlowRate(multiPhaseMeter.getMeasuredValue("Gas Flow Rate", "Sm3/hr"), "Sm3/hr"); + flowset.setOilFlowRate(multiPhaseMeter.getMeasuredValue("Oil Flow Rate", "m3/hr"), "m3/hr"); + flowset.setWaterFlowRate(multiPhaseMeter.getMeasuredValue("Water Flow Rate", "m3/hr"), "m3/hr"); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(multiPhaseMeter); + operations.add(flowset); + operations.run(); + + assertEquals(flowset.getOutletStream().getFlowRate("kg/sec"), stream_1.getFlowRate("kg/sec"), + 1.0); + + // flowset.getOutletStream().getFluid().prettyPrint(); + } + + @Test + void testProcessWithFlowSetter() { + double gasFlow = 10.0; // MSm3/day + double oilFlow = 2000.0; // m3/hr + double waterFLow = 1000.0; // m3/hr + SystemInterface testFluid = new SystemSrkEos(338.15, 50.0); + testFluid.addComponent("nitrogen", 1.205); + testFluid.addComponent("CO2", 1.340); + testFluid.addComponent("methane", 87.974); + testFluid.addComponent("ethane", 5.258); + testFluid.addComponent("propane", 3.283); + testFluid.addComponent("i-butane", 0.082); + testFluid.addComponent("n-butane", 0.487); + testFluid.addComponent("i-pentane", 0.056); + testFluid.addComponent("n-pentane", 1.053); + testFluid.addComponent("nC10", 4.053); + testFluid.addComponent("water", 10.00); + testFluid.setMixingRule(2); + testFluid.setMultiPhaseCheck(true); + + Stream stream_1 = new Stream("Stream1", testFluid); + stream_1.run(); + stream_1.setPressure(10.0, "bara"); + stream_1.setTemperature(80.0, "C"); + + FlowSetter flowset = new FlowSetter("flowset", stream_1); + flowset.setGasFlowRate(gasFlow, "MSm3/day"); + flowset.setOilFlowRate(oilFlow, "m3/hr"); + flowset.setWaterFlowRate(waterFLow, "m3/hr"); + + StreamInterface feedStream = flowset.getOutletStream(); + + ThreePhaseSeparator separator = new ThreePhaseSeparator(feedStream); + + StreamInterface gasFromSepStream = separator.getGasOutStream(); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(flowset); + operations.add(separator); + operations.run(); + + // feedStream.getThermoSystem().prettyPrint(); + assertEquals(gasFlow, gasFromSepStream.getFlowRate("MSm3/day"), 1.0); + } + + @Test + void testProcessWithFlowSetter2() { + double gasFlow = 10.0; // MSm3/day + double oilFlow = 2000.0; // m3/hr + double waterFlow = 1000.0; // m3/hr + SystemInterface testFluid = new SystemSrkEos(338.15, 50.0); + testFluid.addComponent("nitrogen", 1.205); + testFluid.addComponent("CO2", 1.340); + testFluid.addComponent("methane", 87.974); + testFluid.addComponent("ethane", 5.258); + testFluid.addComponent("propane", 3.283); + testFluid.addComponent("i-butane", 0.082); + testFluid.addComponent("n-butane", 0.487); + testFluid.addComponent("i-pentane", 0.056); + testFluid.addComponent("n-pentane", 1.053); + testFluid.addComponent("nC10", 40.053); + testFluid.addComponent("water", 10.00); + testFluid.setMixingRule(2); + testFluid.setMultiPhaseCheck(true); + + Stream stream_1 = new Stream("Stream1", testFluid); + stream_1.run(); + stream_1.setPressure(60.01325, "bara"); + stream_1.setTemperature(50.0, "C"); + + FlowSetter flowset = new FlowSetter("flowset", stream_1); + double[] pressure = new double[] {50.0, 10.0, 1.01325}; + double[] temperature = new double[] {15.0, 15.0, 15.0}; + flowset.setSeparationPT(pressure, "bara", temperature, "C"); + flowset.setGasFlowRate(gasFlow, "MSm3/day"); + flowset.setOilFlowRate(oilFlow, "m3/hr"); + flowset.setWaterFlowRate(waterFlow, "m3/hr"); + flowset.run(); + + assertEquals(gasFlow, + ((StreamInterface) flowset.getReferenceProcess().getUnit("gas")).getFlowRate("MSm3/day"), + 0.01); + assertEquals(oilFlow, + ((StreamInterface) flowset.getReferenceProcess().getUnit("oil")).getFlowRate("m3/hr"), + 0.01); + assertEquals(waterFlow * 1000, ((StreamInterface) flowset.getOutletStream()).getFluid() + .getPhase("aqueous").getFlowRate("kg/hr"), waterFlow * 1000 / 100.0); + + assertEquals(16.09, 16.09, 0.1); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/util/GORfitterTest.java b/src/test/java/neqsim/processSimulation/processEquipment/util/GORfitterTest.java new file mode 100644 index 0000000000..fa38395e74 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/util/GORfitterTest.java @@ -0,0 +1,89 @@ +package neqsim.processSimulation.processEquipment.util; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.measurementDevice.MultiPhaseMeter; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class GORfitterTest { + @Test + void testMain() { + SystemInterface testFluid = new SystemSrkEos(338.15, 50.0); + testFluid.addComponent("nitrogen", 1.205); + testFluid.addComponent("CO2", 1.340); + testFluid.addComponent("methane", 87.974); + testFluid.addComponent("ethane", 5.258); + testFluid.addComponent("propane", 3.283); + testFluid.addComponent("i-butane", 0.082); + testFluid.addComponent("n-butane", 0.487); + testFluid.addComponent("i-pentane", 0.056); + testFluid.addComponent("n-pentane", 1.053); + testFluid.addComponent("nC10", 4.053); + testFluid.setMixingRule(2); + testFluid.setMultiPhaseCheck(true); + + testFluid.setTemperature(90.0, "C"); + testFluid.setPressure(60.0, "bara"); + testFluid.setTotalFlowRate(1e6, "kg/hr"); + + Stream stream_1 = new Stream("Stream1", testFluid); + + MultiPhaseMeter multiPhaseMeter = new MultiPhaseMeter("test", stream_1); + multiPhaseMeter.setTemperature(90.0, "C"); + multiPhaseMeter.setPressure(60.0, "bara"); + + GORfitter gORFItter = new GORfitter("test", stream_1); + gORFItter.setTemperature(15.0, "C"); + gORFItter.setPressure(ThermodynamicConstantsInterface.referencePressure, "bara"); + gORFItter.setReferenceConditions("actual"); + // gORFItter.setGVF(0.1); + gORFItter.setGOR(10.1); + + Stream stream_2 = new Stream("stream_2", gORFItter.getOutletStream()); + + MultiPhaseMeter multiPhaseMeter2 = new MultiPhaseMeter("test", stream_2); + multiPhaseMeter2.setTemperature(90.0, "C"); + multiPhaseMeter2.setPressure(60.0, "bara"); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(multiPhaseMeter); + operations.add(gORFItter); + operations.add(stream_2); + operations.add(multiPhaseMeter2); + operations.run(); + + // This stream was inlet to MPM 2 (from fitter) + stream_2.setTemperature(15.0, "C"); + stream_2.setPressure(1.01325, "bara"); + stream_2.run(); + // mimic MPM + + double gor_sm3gas_sm3oil = stream_2.getFluid().getPhase("gas").getFlowRate("Sm3/hr") + / stream_2.getFluid().getPhase("oil").getFlowRate("Sm3/hr"); + + double gor_sm3gas_sm3oil_corrected = stream_2.getFluid().getPhase("gas").getCorrectedVolume() + / stream_2.getFluid().getPhase("oil").getCorrectedVolume(); + + System.out.println("Stream 2 (results outside MPM) " + " GOR sm3/sm3 " + gor_sm3gas_sm3oil + " GOR Corrected by volume " + + gor_sm3gas_sm3oil_corrected); + + System.out.println("Stream 2 (results outside MPM) getPhase(gas).getCorrectedVolume() " + + stream_2.getFluid().getPhase("gas").getCorrectedVolume()); + System.out.println("Stream 2 (results outside MPM) getPhase(oil).getCorrectedVolume() " + + stream_2.getFluid().getPhase("oil").getCorrectedVolume()); + + //Assertions.assertEquals(51.3073530232923, multiPhaseMeter.getMeasuredValue("GOR", ""), 1e-12); + // Assertions.assertEquals(3106.7708277963447, multiPhaseMeter.getMeasuredValue("GOR_std", ""), + // 1e-12); + Assertions.assertEquals(10.099999999999769, multiPhaseMeter2.getMeasuredValue("GOR", ""), + 1e-12); + Assertions.assertEquals(682.1045749623208, multiPhaseMeter2.getMeasuredValue("GOR_std", ""), + 1e-10); // the value of GOR sm3/sm3 3.48551599242607 is quite far if we take by flow getStandardFlow + Assertions.assertEquals(1000000.0, stream_2.getFlowRate("kg/hr"), 1e-12); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/util/MPFMfitterTest.java b/src/test/java/neqsim/processSimulation/processEquipment/util/MPFMfitterTest.java new file mode 100644 index 0000000000..e01840f4c3 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/util/MPFMfitterTest.java @@ -0,0 +1,70 @@ +package neqsim.processSimulation.processEquipment.util; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.measurementDevice.MultiPhaseMeter; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class MPFMfitterTest { + @Test + void testRun() { + SystemInterface refFluid = new SystemSrkEos(338.15, 50.0); + refFluid.addComponent("nitrogen", 1.205); + refFluid.addComponent("CO2", 1.340); + refFluid.addComponent("methane", 87.974); + refFluid.addComponent("ethane", 5.258); + refFluid.addComponent("propane", 3.283); + refFluid.addComponent("i-butane", 0.082); + refFluid.addComponent("n-butane", 0.487); + refFluid.addComponent("i-pentane", 0.056); + refFluid.addComponent("n-pentane", 1.053); + refFluid.addComponent("nC10", 4.053); + refFluid.setMixingRule(2); + refFluid.setMultiPhaseCheck(true); + refFluid.init(0); + + SystemInterface testFluid = new SystemSrkEos(338.15, 50.0); + testFluid.addComponent("nitrogen", 1.205); + testFluid.addComponent("CO2", 1.340); + testFluid.addComponent("methane", 87.974); + testFluid.addComponent("ethane", 5.258); + testFluid.addComponent("propane", 3.283); + testFluid.addComponent("i-butane", 0.082); + testFluid.addComponent("n-butane", 0.487); + testFluid.addComponent("i-pentane", 0.056); + testFluid.addComponent("n-pentane", 1.053); + testFluid.addComponent("nC10", 4.053); + testFluid.setMixingRule(2); + testFluid.setMultiPhaseCheck(true); + testFluid.init(0); + + Stream stream_1 = new Stream("Stream1", testFluid); + + MPFMfitter MPFMfitter = new MPFMfitter("MPFM fitter", stream_1); + MPFMfitter.setReferenceFluidPackage(refFluid); + MPFMfitter.setTemperature(15.0, "C"); + MPFMfitter.setPressure(ThermodynamicConstantsInterface.referencePressure, "bara"); + MPFMfitter.setReferenceConditions("actual"); + MPFMfitter.setGOR(10.1); + + Stream stream_2 = new Stream("stream_2", MPFMfitter.getOutletStream()); + + MultiPhaseMeter multiPhaseMeter2 = new MultiPhaseMeter("test", stream_2); + multiPhaseMeter2.setTemperature(90.0, "C"); + multiPhaseMeter2.setPressure(60.0, "bara"); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(MPFMfitter); + operations.add(stream_2); + operations.add(multiPhaseMeter2); + operations.run(); + + Assertions.assertEquals(8.95393178, multiPhaseMeter2.getMeasuredValue("GOR", ""), 1e-3); + + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/util/PressureDropTest.java b/src/test/java/neqsim/processSimulation/processEquipment/util/PressureDropTest.java new file mode 100644 index 0000000000..6f19ee62a1 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/util/PressureDropTest.java @@ -0,0 +1,36 @@ +package neqsim.processSimulation.processEquipment.util; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.thermo.system.SystemSrkEos; + +public class PressureDropTest { + @Test + void testRun() { + double pressure_inlet = 85.0; + double dp = 0.1; + double temperature_inlet = 35.0; + double gasFlowRate = 5.0; + + neqsim.thermo.system.SystemInterface testSystem = new SystemSrkEos(298.0, 100.0); + testSystem.addComponent("methane", 100.0); + + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + inletStream.run(); + + PressureDrop dpGasStream1 = new PressureDrop("dp element 1", inletStream); + dpGasStream1.setPressureDrop(dp, "bara"); + dpGasStream1.run(); + + Stream outletStream = new Stream("outletStream", dpGasStream1.getOutletStream()); + outletStream.run(); + + assertEquals(pressure_inlet - dp, outletStream.getPressure("bara"), 1e-16); + assertEquals(34.967499, outletStream.getTemperature("C"), 0.001); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtilTest.java b/src/test/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtilTest.java new file mode 100644 index 0000000000..0d8ec34ce3 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/util/StreamSaturatorUtilTest.java @@ -0,0 +1,87 @@ +package neqsim.processSimulation.processEquipment.util; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processSystem.ProcessSystem; +import neqsim.thermo.system.SystemSrkEos; + +public class StreamSaturatorUtilTest extends neqsim.NeqSimTest { + static neqsim.thermo.system.SystemInterface testSystem = null; + double pressure_inlet = 85.0; + double temperature_inlet = 35.0; + double gasFlowRate = 5.0; + ProcessSystem processOps = null; + + @Test + void testRun() { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("water", 1.0); + + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + StreamSaturatorUtil streamSaturator = new StreamSaturatorUtil("saturator", inletStream); + + processOps = new ProcessSystem(); + processOps.add(inletStream); + processOps.add(streamSaturator); + processOps.run(); + + assertEquals(0.0012319218375683974, + streamSaturator.getOutletStream().getFluid().getPhase(0).getComponent("water").getx(), + 1e-16); + } + + @Test + void testSetApprachToSaturation() { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("water", 1.0); + + Stream inletStream = new Stream("inlet stream", testSystem); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + StreamSaturatorUtil streamSaturator = new StreamSaturatorUtil("saturator", inletStream); + streamSaturator.setApprachToSaturation(0.93); + + processOps = new ProcessSystem(); + processOps.add(inletStream); + processOps.add(streamSaturator); + processOps.run(); + + assertEquals(0.0012319218375683974 * 0.93, + streamSaturator.getOutletStream().getFluid().getPhase(0).getComponent("water").getx(), + 1e-3); + } + + @Test + void testNeedRecalculation() { + testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("water", 1.0); + + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("inlet stream"); + inletStream.setPressure(pressure_inlet, "bara"); + inletStream.setTemperature(temperature_inlet, "C"); + inletStream.setFlowRate(gasFlowRate, "MSm3/day"); + StreamSaturatorUtil streamSaturator = new StreamSaturatorUtil("saturator", inletStream); + + processOps = new ProcessSystem(); + processOps.add(inletStream); + processOps.add(streamSaturator); + processOps.run(); + + ((Stream) processOps.getUnit("inlet stream")).setTemperature(298.1, "K"); + assertTrue(((StreamSaturatorUtil) processOps.getUnit("saturator")).needRecalculation()); + processOps.run(); + assertFalse(((StreamSaturatorUtil) processOps.getUnit("saturator")).needRecalculation()); + } +} diff --git a/src/test/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValveTest.java b/src/test/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValveTest.java new file mode 100644 index 0000000000..f0d964279d --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processEquipment/valve/ThrottlingValveTest.java @@ -0,0 +1,56 @@ +package neqsim.processSimulation.processEquipment.valve; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.stream.Stream; + +public class ThrottlingValveTest { + @Test + void testCalcCvGas() { + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem2.addComponent("methane", 1.0); + testSystem2.setMixingRule(2); + + Stream stream1 = new Stream("Stream1", testSystem2); + stream1.setFlowRate(7000, "Sm3/hr"); + stream1.setPressure(10.0, "bara"); + stream1.setTemperature(55.0, "C"); + stream1.run(); + + ThrottlingValve valve1 = new ThrottlingValve("valve_1", stream1); + valve1.setOutletPressure(5.0); + valve1.setPercentValveOpening(100); + valve1.run(); + + assertEquals(48.2652, valve1.getCv("US"), 1e-2); + assertEquals(2649.7612, valve1.getCv("SI"), 1e-2); + + } + + @Test + void testCalcCvLiquid() { + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem2.addComponent("water", 1.0); + testSystem2.setMixingRule(2); + + Stream stream1 = new Stream("Stream1", testSystem2); + stream1.setFlowRate(100.0, "kg/hr"); + stream1.setPressure(100.0, "bara"); + stream1.setTemperature(55.0, "C"); + stream1.run(); + + ThrottlingValve valve1 = new ThrottlingValve("valve_1", stream1); + valve1.setOutletPressure(50.0); + valve1.setPercentValveOpening(100); + valve1.run(); + + assertEquals(0.4515327970, stream1.getFlowRate("gallons/min"), 1e-2); + assertEquals(0.0165567743765, valve1.getCv("SI"), 1e-2); + assertEquals(100.0, valve1.getPercentValveOpening(), 1e-2); + assertEquals(100, stream1.getFlowRate("kg/hr"), 1e-2); + assertEquals(3.015805897362369E-4, valve1.getCv("US"), 1e-2); + + } +} diff --git a/src/test/java/neqsim/processSimulation/processSystem/CombinedOilGasFieldTest.java b/src/test/java/neqsim/processSimulation/processSystem/CombinedOilGasFieldTest.java new file mode 100644 index 0000000000..969d0f991d --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processSystem/CombinedOilGasFieldTest.java @@ -0,0 +1,90 @@ +package neqsim.processSimulation.processSystem; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.measurementDevice.MultiPhaseMeter; +import neqsim.processSimulation.processEquipment.reservoir.ReservoirTPsim; + +public class CombinedOilGasFieldTest { + @Test + public void testreservoirTPsim() { + neqsim.thermo.system.SystemInterface wellFluid = + new neqsim.thermo.system.SystemPrEos(273.15 + 30.0, 65.00); + wellFluid.addComponent("nitrogen", 0.08); + wellFluid.addComponent("CO2", 3.56); + wellFluid.addComponent("methane", 87.36); + wellFluid.addComponent("ethane", 4.02); + wellFluid.addComponent("propane", 1.54); + wellFluid.addComponent("i-butane", 0.2); + wellFluid.addComponent("n-butane", 0.42); + wellFluid.addComponent("i-pentane", 0.15); + wellFluid.addComponent("n-pentane", 0.20); + + wellFluid.addTBPfraction("C6_Oil", 0.24, 84.99 / 1000.0, 695.0 / 1000.0); + wellFluid.addTBPfraction("C7_Oil", 0.34, 97.87 / 1000.0, 718.0 / 1000.0); + wellFluid.addTBPfraction("C8_Oil", 0.33, 111.54 / 1000.0, 729.0 / 1000.0); + wellFluid.addTBPfraction("C9_Oil", 0.19, 126.1 / 1000.0, 749.0 / 1000.0); + wellFluid.addTBPfraction("C10_Oil", 0.15, 140.14 / 1000.0, 760.0 / 1000.0); + wellFluid.addTBPfraction("C11_Oil", 0.69, 175.0 / 1000.0, 830.0 / 1000.0); + wellFluid.addTBPfraction("C12_Oil", 0.5, 280.0 / 1000.0, 914.0 / 1000.0); + wellFluid.addTBPfraction("C13_Oil", 0.103, 560.0 / 1000.0, 980.0 / 1000.0); + + wellFluid.addTBPfraction("C6_Gas", 0.0, 84.0 / 1000.0, 684.0 / 1000.0); + wellFluid.addTBPfraction("C7_Gas", 0.0, 97.9 / 1000.0, 742.0 / 1000.0); + wellFluid.addTBPfraction("C8_Gas", 0.0, 111.5 / 1000.0, 770.0 / 1000.0); + wellFluid.addTBPfraction("C9_Gas", 0.0, 126.1 / 1000.0, 790.0 / 1000.0); + wellFluid.addTBPfraction("C10_Gas", 0.0, 140.14 / 1000.0, 805.0 / 1000.0); + wellFluid.addTBPfraction("C11_Gas", 0.0, 175.0 / 1000.0, 815.0 / 1000.0); + wellFluid.addTBPfraction("C12_Gas", 0.0, 280.0 / 1000.0, 835.0 / 1000.0); + wellFluid.addTBPfraction("C13_Gas", 0.0, 450.0 / 1000.0, 850.0 / 1000.0); + + wellFluid.setMixingRule("classic"); + wellFluid.init(0); + + neqsim.thermo.system.SystemInterface wellFluidGasWell = + (neqsim.thermo.system.SystemInterface) wellFluid.clone(); + wellFluidGasWell.setMolarComposition( + new double[] {0.108, 3.379, 85.915, 4.250, 1.719, 0.275, 0.549, 0.201, 0.256, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.24, 0.34, 0.33, 0.19, 0.15, 0.69, 0.5, 0.03}); + + ReservoirTPsim reservoirGasTPsim = new ReservoirTPsim("TPreservoir", wellFluidGasWell); + reservoirGasTPsim.setTemperature(150.0, "C"); + reservoirGasTPsim.setPressure(250.0, "bara"); + reservoirGasTPsim.setFlowRate(50000.0, "kg/hr"); + reservoirGasTPsim.setProdPhaseName("gas"); + + MultiPhaseMeter MPFMgas = new MultiPhaseMeter("Gas MPFM", reservoirGasTPsim.getOutStream()); + MPFMgas.setTemperature(60.0, "C"); + MPFMgas.setPressure(80.0, "bara"); + + // ReservoirCVDsim reservoirCVD = new ReservoirCVDsim(); + // ReservoirDiffLibsim reservoirDiffLib = new ReservoirDiffLibsim(); + /* + * neqsim.thermo.system.SystemInterface wellFluidOilWell = + * (neqsim.thermo.system.SystemInterface) wellFluid.clone(); + * wellFluidOilWell.setMolarComposition( new double[] {0.047, 0.191, 39.022, 0.25, 0.053, 0.017, + * 0.022, 0.021, 0.015, 0.057, 0.176, 0.181, 0.177, 0.81, 15.353, 30.738, 12.869, 0.0, 0.0, 0.0, + * 0.0, 0.0, 0.0, 0.0, 0.0}); + * + * Stream wellStreamOil = new Stream("Well Stream Oil Well", wellFluidOilWell); + * wellStreamOil.setFlowRate(50000.0, "kg/hr"); wellStreamOil.setTemperature(100.0, "C"); + * wellStreamOil.setPressure(100.0, "bara"); + */ + + // MultiPhaseMeter MPFMoil = new MultiPhaseMeter("Oil MPFM", wellStreamOil); + // MPFMoil.setTemperature(60.0, "C"); + // MPFMoil.setPressure(20.0, "bara"); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(reservoirGasTPsim); + operations.add(MPFMgas); + operations.run(); + assertEquals(8834.875493073961, MPFMgas.getMeasuredValue("GOR_std", ""), 1.0); + + reservoirGasTPsim.setPressure(150.0, "bara"); + operations.run(); + assertEquals(14937.606339690177 + , MPFMgas.getMeasuredValue("GOR_std", ""), 1.0); + } +} diff --git a/src/test/java/neqsim/processSimulation/processSystem/CompressorModule.java b/src/test/java/neqsim/processSimulation/processSystem/CompressorModule.java new file mode 100644 index 0000000000..6b805d975b --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processSystem/CompressorModule.java @@ -0,0 +1,163 @@ +package neqsim.processSimulation.processSystem; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.compressor.Compressor; +import neqsim.processSimulation.processEquipment.heatExchanger.Cooler; +import neqsim.processSimulation.processEquipment.heatExchanger.Heater; +import neqsim.processSimulation.processEquipment.mixer.Mixer; +import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator; +import neqsim.processSimulation.processEquipment.splitter.Splitter; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.processEquipment.util.Recycle; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +/** + * Test class for running compressor module calculation. + */ +public class CompressorModule extends neqsim.NeqSimTest { + // Test methods + + @Test + public void testProcess() { + SystemInterface thermoSystem = new SystemSrkEos(298.0, 10.0); + thermoSystem.addComponent("water", 51.0); + thermoSystem.addComponent("nitrogen", 51.0); + thermoSystem.addComponent("CO2", 51.0); + thermoSystem.addComponent("methane", 51.0); + thermoSystem.addComponent("ethane", 51.0); + thermoSystem.addComponent("propane", 51.0); + thermoSystem.addComponent("i-butane", 51.0); + thermoSystem.addComponent("n-butane", 51.0); + thermoSystem.addComponent("iC5", 51.0); + thermoSystem.addComponent("nC5", 1.0); + + thermoSystem.addTBPfraction("C6", 1.0, 86.0 / 1000.0, 0.66); + thermoSystem.addTBPfraction("C7", 1.0, 91.0 / 1000.0, 0.74); + thermoSystem.addTBPfraction("C8", 1.0, 103.0 / 1000.0, 0.77); + thermoSystem.addTBPfraction("C9", 1.0, 117.0 / 1000.0, 0.79); + thermoSystem.addPlusFraction("C10_C12", 1.0, 145.0 / 1000.0, 0.80); + thermoSystem.addPlusFraction("C13_C14", 1.0, 181.0 / 1000.0, 0.8279); + thermoSystem.addPlusFraction("C15_C16", 1.0, 212.0 / 1000.0, 0.837); + thermoSystem.addPlusFraction("C17_C19", 1.0, 248.0 / 1000.0, 0.849); + thermoSystem.addPlusFraction("C20_C22", 1.0, 289.0 / 1000.0, 0.863); + thermoSystem.addPlusFraction("C23_C25", 1.0, 330.0 / 1000.0, 0.875); + thermoSystem.addPlusFraction("C26_C30", 1.0, 387.0 / 1000.0, 0.88); + thermoSystem.addPlusFraction("C31_C38", 1.0, 471.0 / 1000.0, 0.90); + thermoSystem.addPlusFraction("C38_C80", 1.0, 662.0 / 1000.0, 0.92); + thermoSystem.setMixingRule("classic"); + thermoSystem.setMultiPhaseCheck(true); + thermoSystem.setMolarComposition(new double[] {0.034266, 0.005269, 0.039189, 0.700553, 0.091154, + 0.050908, 0.007751, 0.014665, 0.004249, 0.004878, 0.004541, 0.007189, 0.006904, 0.004355, + 0.007658, 0.003861, 0.003301, 0.002624, 0.001857, 0.001320, 0.001426, 0.001164, 0.000916}); + + Stream feedStream = new Stream("feed stream", thermoSystem); + feedStream.setFlowRate(604094, "kg/hr"); + feedStream.setTemperature(25.5, "C"); + feedStream.setPressure(26.0, "bara"); + + Separator inletSeparator = new Separator("inlet separator", feedStream); + + Heater oilHeater = new Heater("oil heater", inletSeparator.getLiquidOutStream()); + oilHeater.setOutTemperature(60.0, "C"); + + ThrottlingValve valve1 = new ThrottlingValve("valve oil", oilHeater.getOutletStream()); + valve1.setOutletPressure(10.0, "bara"); + + StreamInterface resycleScrubberStream = feedStream.clone(); + resycleScrubberStream.setFlowRate(1.0, "kg/hr"); + + ThreePhaseSeparator secondStageSeparator = + new ThreePhaseSeparator("inlet separator", valve1.getOutletStream()); + secondStageSeparator.addStream(resycleScrubberStream); + + StreamInterface gasResycleStream = feedStream.clone(); + gasResycleStream.setFlowRate(1.0, "kg/hr"); + + Mixer gasmixer = new Mixer("gas recycle mixer"); + gasmixer.addStream(secondStageSeparator.getGasOutStream()); + gasmixer.addStream(gasResycleStream); + + // Setting up compressor module + Compressor seccondStageCompressor = + new Compressor("2nd stage compressor", gasmixer.getOutletStream()); + seccondStageCompressor.setUsePolytropicCalc(true); + seccondStageCompressor.setPolytropicEfficiency(0.9); + seccondStageCompressor.setOutletPressure(26.0, "bara"); + + Cooler afterCooler = + new Cooler("2nd stage after cooler", seccondStageCompressor.getOutletStream()); + afterCooler.setOutTemperature(25.0, "C"); + + Separator scrubber1 = new Separator("after cooler scrubber", afterCooler.getOutletStream()); + + Stream gasFromScrubber = new Stream("gas from scrubber", scrubber1.getGasOutStream()); + + Splitter gassplitter = new Splitter("gas splitter", gasFromScrubber); + gassplitter.setSplitFactors(new double[] {0.1, 0.9}); + + ThrottlingValve recycleValve = + new ThrottlingValve("antisurge valve", gassplitter.getSplitStream(0)); + recycleValve.setOutletPressure(10.0, "bara"); + + Recycle recycle2 = new Recycle("recycle 2"); + recycle2.addStream(recycleValve.getOutletStream()); + recycle2.setOutletStream(gasResycleStream); + + Recycle recycle1 = new Recycle("recycle 1"); + recycle1.addStream(scrubber1.getLiquidOutStream()); + recycle1.setOutletStream(resycleScrubberStream); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(feedStream); + operations.add(inletSeparator); + operations.add(oilHeater); + operations.add(valve1); + operations.add(resycleScrubberStream); + operations.add(secondStageSeparator); + operations.add(gasResycleStream); + operations.add(gasmixer); + operations.add(seccondStageCompressor); + operations.add(afterCooler); + operations.add(scrubber1); + operations.add(gasFromScrubber); + operations.add(gassplitter); + operations.add(recycleValve); + operations.add(recycle2); + operations.add(recycle1); + + operations.run(); + + assertEquals(2046.8012652616517 + , resycleScrubberStream.getFlowRate("kg/hr"), 0.1); + + neqsim.processSimulation.processEquipment.compressor.CompressorChartGenerator compchartgenerator = + new neqsim.processSimulation.processEquipment.compressor.CompressorChartGenerator( + seccondStageCompressor); + compchartgenerator.generateCompressorChart("mid range"); + + seccondStageCompressor.setCompressorChart(compchartgenerator.generateCompressorChart("normal")); + seccondStageCompressor.getCompressorChart().setUseCompressorChart(true); + operations.run(); + + assertEquals(25.86689, seccondStageCompressor.getOutletStream().getPressure("bara"), 0.5); + + seccondStageCompressor.setSpeed(seccondStageCompressor.getSpeed() + 500); + operations.run(); + + assertEquals(40.5019771, seccondStageCompressor.getOutletStream().getPressure("bara"), 0.5); + + feedStream.setFlowRate(204094, "kg/hr"); + operations.run(); + + assertTrue(seccondStageCompressor.isSurge(seccondStageCompressor.getPolytropicFluidHead(), + seccondStageCompressor.getInletStream().getFlowRate("m3/hr"))); + + } +} diff --git a/src/test/java/neqsim/processSimulation/processSystem/GlycolModulesTest.java b/src/test/java/neqsim/processSimulation/processSystem/GlycolModulesTest.java new file mode 100644 index 0000000000..d5223d0bfd --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processSystem/GlycolModulesTest.java @@ -0,0 +1,430 @@ +package neqsim.processSimulation.processSystem; + +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.measurementDevice.HydrateEquilibriumTemperatureAnalyser; +import neqsim.processSimulation.measurementDevice.WaterDewPointAnalyser; +import neqsim.processSimulation.processEquipment.absorber.SimpleTEGAbsorber; +import neqsim.processSimulation.processEquipment.absorber.WaterStripperColumn; +import neqsim.processSimulation.processEquipment.distillation.DistillationColumn; +import neqsim.processSimulation.processEquipment.filter.Filter; +import neqsim.processSimulation.processEquipment.heatExchanger.Heater; +import neqsim.processSimulation.processEquipment.mixer.StaticMixer; +import neqsim.processSimulation.processEquipment.pump.Pump; +import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.splitter.Splitter; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.util.Calculator; +import neqsim.processSimulation.processEquipment.util.Recycle; +import neqsim.processSimulation.processEquipment.util.StreamSaturatorUtil; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.phase.PhaseEosInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class GlycolModulesTest extends neqsim.NeqSimTest { + @Test + public void runProcessTEG() throws InterruptedException { + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + feedGas.addComponent("nitrogen", 0.245); + feedGas.addComponent("CO2", 3.4); + feedGas.addComponent("methane", 85.7); + feedGas.addComponent("ethane", 5.981); + feedGas.addComponent("propane", 0.2743); + feedGas.addComponent("i-butane", 0.037); + feedGas.addComponent("n-butane", 0.077); + feedGas.addComponent("i-pentane", 0.0142); + feedGas.addComponent("n-pentane", 0.0166); + feedGas.addComponent("n-hexane", 0.006); + feedGas.addComponent("n-heptane", 0.0); + feedGas.addComponent("nC8", 0.0); + feedGas.addComponent("nC9", 0.0); + feedGas.addComponent("benzene", 0.001); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("TEG", 0); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(false); + feedGas.init(0); + + ThermodynamicOperations testOps = new ThermodynamicOperations(feedGas); + testOps.TPflash(); + ((PhaseEosInterface) feedGas.getPhases()[0]).getMixingRule().setBinaryInteractionParameterji(2, + 15, 0.13); + ((PhaseEosInterface) feedGas.getPhases()[1]).getMixingRule().setBinaryInteractionParameterji(2, + 15, 0.13); // methane + ((PhaseEosInterface) feedGas.getPhases()[0]).getMixingRule().setBinaryInteractionParameterji(5, + 15, 0.13); + ((PhaseEosInterface) feedGas.getPhases()[1]).getMixingRule().setBinaryInteractionParameterji(5, + 15, 0.13); // i-butane + ((PhaseEosInterface) feedGas.getPhases()[0]).getMixingRule().setBinaryInteractionParameterji(6, + 15, 0.157); + ((PhaseEosInterface) feedGas.getPhases()[1]).getMixingRule().setBinaryInteractionParameterji(6, + 15, 0.157); // n-butane + ((PhaseEosInterface) feedGas.getPhases()[0]).getMixingRule().setBinaryInteractionParameterji(7, + 15, 0.055); + ((PhaseEosInterface) feedGas.getPhases()[1]).getMixingRule().setBinaryInteractionParameterji(7, + 15, 0.055); // i-pentane + ((PhaseEosInterface) feedGas.getPhases()[0]).getMixingRule().setBinaryInteractionParameterji(8, + 15, 0.095); + ((PhaseEosInterface) feedGas.getPhases()[1]).getMixingRule().setBinaryInteractionParameterji(8, + 15, 0.095); // n-pentane + ((PhaseEosInterface) feedGas.getPhases()[0]).getMixingRule().setBinaryInteractionParameterji(9, + 15, -0.02); + ((PhaseEosInterface) feedGas.getPhases()[1]).getMixingRule().setBinaryInteractionParameterji(9, + 15, -0.02); // n-hexane + ((PhaseEosInterface) feedGas.getPhases()[0]).getMixingRule().setBinaryInteractionParameterji(10, + 15, 0.08); + ((PhaseEosInterface) feedGas.getPhases()[1]).getMixingRule().setBinaryInteractionParameterji(10, + 15, 0.08); // n-heptane + ((PhaseEosInterface) feedGas.getPhases()[0]).getMixingRule().setBinaryInteractionParameterji(11, + 15, 0.087); + ((PhaseEosInterface) feedGas.getPhases()[1]).getMixingRule().setBinaryInteractionParameterji(11, + 15, 0.087); // benzene + testOps.TPflash(); + // feedGas.setMolarComposition(new double[] { liftGas_N2, liftGas_CO2, liftGas_Methane, + // liftGas_Ethane, liftGas_Propane, liftGas_iButane, liftGas_nButane, liftGas_iPentane, + // liftGas_nPentane, 0.0, 0.0, 0.0, 0.0}); + + Stream dryFeedGasSmøbukk = new Stream("dry feed gas Smøbukk", feedGas); + dryFeedGasSmøbukk.setFlowRate(9.050238817357728, "MSm3/day"); + dryFeedGasSmøbukk.setTemperature(32.48975904520211, "C"); + dryFeedGasSmøbukk.setPressure(40.1205259689988, "bara"); + + StreamSaturatorUtil saturatedFeedGasSmøbukk = new StreamSaturatorUtil(dryFeedGasSmøbukk); + saturatedFeedGasSmøbukk.setName("water saturator Smøbukk"); + saturatedFeedGasSmøbukk.setApprachToSaturation(0.93); + + Stream waterSaturatedFeedGasSmøbukk = new Stream(saturatedFeedGasSmøbukk.getOutStream()); + waterSaturatedFeedGasSmøbukk.setName("water saturated feed gas Smøbukk"); + + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyserSmøbukk = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGasSmøbukk); + hydrateTAnalyserSmøbukk.setName("hydrate temperature analyser Smøbukk"); + + Splitter SmøbukkSplit = new Splitter("Smøbukk Splitter", waterSaturatedFeedGasSmøbukk); + double[] splitSmøbukk = {0.9999999999, 1e-10}; + SmøbukkSplit.setSplitFactors(splitSmøbukk); + + Stream dryFeedGasMidgard = new Stream("dry feed gas Midgard201", feedGas.clone()); + dryFeedGasMidgard.setFlowRate(13.943929595435336, "MSm3/day"); + dryFeedGasMidgard.setTemperature(8.617179027757128, "C"); + dryFeedGasMidgard.setPressure(41.78261426145009, "bara"); + + StreamSaturatorUtil saturatedFeedGasMidgard = new StreamSaturatorUtil(dryFeedGasMidgard); + saturatedFeedGasMidgard.setName("water saturator Midgard"); + + Stream waterSaturatedFeedGasMidgard = new Stream(saturatedFeedGasMidgard.getOutStream()); + waterSaturatedFeedGasMidgard.setName("water saturated feed gas Midgard"); + + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyserMidgard = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGasMidgard); + hydrateTAnalyserMidgard.setName("hydrate temperature analyser Midgard"); + + Splitter MidgardSplit = new Splitter("Midgard Splitter", waterSaturatedFeedGasMidgard); + double[] splitMidgard = {0.11245704038738272, 0.8875429596126173}; + MidgardSplit.setSplitFactors(splitMidgard); + + StaticMixer TrainA = new StaticMixer("mixer TrainA"); + TrainA.addStream(MidgardSplit.getSplitStream(0)); + TrainA.addStream(SmøbukkSplit.getSplitStream(0)); + + Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", TrainA.getOutletStream()); + feedTPsetterToAbsorber.setOutPressure(39.67967207899729, "bara"); + feedTPsetterToAbsorber.setOutTemperature(31.40346842493481, "C"); + + Stream feedToAbsorber = + new Stream("feed to TEG absorber", feedTPsetterToAbsorber.getOutletStream()); + + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser2 = + new HydrateEquilibriumTemperatureAnalyser(feedToAbsorber); + hydrateTAnalyser2.setName("hydrate temperature gas to absorber"); + + WaterDewPointAnalyser waterDewPointAnalyserToAbsorber = + new WaterDewPointAnalyser(feedToAbsorber); + waterDewPointAnalyserToAbsorber.setMethod("multiphase"); + waterDewPointAnalyserToAbsorber.setReferencePressure(39.67967207899729); + waterDewPointAnalyserToAbsorber.setName("water dew point gas to absorber"); + + neqsim.thermo.system.SystemInterface feedTEG = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + feedTEG.setMolarComposition(new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.00, 0.0, 0.0, 0.0, 1.0}); + + Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); + TEGFeed.setFlowRate(8923.576745846813, "kg/hr"); + TEGFeed.setTemperature(35.009563114341454, "C"); + TEGFeed.setPressure(39.67967207899729, "bara"); + + SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); + absorber.addGasInStream(feedToAbsorber); + absorber.addSolventInStream(TEGFeed); + absorber.setNumberOfStages(4); + absorber.setStageEfficiency(1); + absorber.setInternalDiameter(3.65); + + Stream dehydratedGas = new Stream(absorber.getGasOutStream()); + dehydratedGas.setName("dry gas from absorber"); + + Stream richTEG = new Stream(absorber.getLiquidOutStream()); + richTEG.setName("rich TEG from absorber"); + + HydrateEquilibriumTemperatureAnalyser waterDewPointAnalyser = + new HydrateEquilibriumTemperatureAnalyser(dehydratedGas); + waterDewPointAnalyser.setReferencePressure(70.0); + waterDewPointAnalyser.setName("hydrate dew point analyser"); + + WaterDewPointAnalyser waterDewPointAnalyser2 = new WaterDewPointAnalyser(dehydratedGas); + waterDewPointAnalyser2.setReferencePressure(70.0); + waterDewPointAnalyser2.setName("water dew point analyser"); + + Heater condHeat = new Heater(richTEG); + condHeat.setName("Condenser heat exchanger"); + + ThrottlingValve glycol_flash_valve = + new ThrottlingValve("Flash valve", condHeat.getOutStream()); + glycol_flash_valve.setName("Rich TEG HP flash valve"); + glycol_flash_valve.setOutletPressure(7.513533287063168); + + Heater heatEx2 = new Heater(glycol_flash_valve.getOutStream()); + heatEx2.setName("rich TEG heat exchanger 1"); + heatEx2.setOutTemperature(273.15 + 90); + + neqsim.thermo.system.SystemInterface feedWater = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + feedWater.setMolarComposition(new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.00, 0.0, 0.0, 1.0, 0.0}); + + Stream waterFeed = new Stream("lean TEG to absorber", feedWater); + waterFeed.setFlowRate(0.0, "kg/hr"); + waterFeed.setTemperature(90, "C"); + waterFeed.setPressure(7.513533287063168, "bara"); + + Separator flashSep = new Separator(heatEx2.getOutStream()); + flashSep.setName("degasing separator"); + flashSep.setInternalDiameter(1.2); + + Stream flashGas = new Stream(flashSep.getGasOutStream()); + flashGas.setName("gas from degasing separator"); + + Stream flashLiquid = new Stream(flashSep.getLiquidOutStream()); + flashLiquid.setName("liquid from degasing separator"); + + Filter filter = new Filter(flashLiquid); + filter.setName("TEG fine filter"); + filter.setDeltaP(0.0, "bara"); + + Heater heatEx = new Heater(filter.getOutStream()); + heatEx.setName("lean/rich TEG heat-exchanger"); + heatEx.setOutTemperature(273.15 + 105.0); + + ThrottlingValve glycol_flash_valve2 = + new ThrottlingValve("LP flash valve", heatEx.getOutStream()); + glycol_flash_valve2.setName("Rich TEG LP flash valve"); + glycol_flash_valve2.setOutletPressure(1.1714901511485545); + + neqsim.thermo.system.SystemInterface stripGas = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + + Stream strippingGas = new Stream("stripGas", stripGas); + strippingGas.setFlowRate(200, "kg/hr"); + strippingGas.setTemperature(185.4402968739743, "C"); + strippingGas.setPressure(1.1714901511485545, "bara"); + + Stream gasToReboiler = (Stream) (strippingGas).clone(); + gasToReboiler.setName("gas to reboiler"); + + DistillationColumn column = new DistillationColumn(2, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(glycol_flash_valve2.getOutStream(), 1); + column.getReboiler().setOutTemperature(273.15 + 201.86991706268591); + column.getCondenser().setOutTemperature(273.15 + 112.80145109927442); + column.getTray(1).addStream(gasToReboiler); + column.setTopPressure(1.1582401511485543); + column.setBottomPressure(1.1714901511485545); + column.setInternalDiameter(0.56); + + Heater coolerRegenGas = new Heater(column.getGasOutStream()); + coolerRegenGas.setName("regen gas cooler"); + coolerRegenGas.setOutTemperature(273.15 + 17.685590621935702); + + Separator sepregenGas = new Separator(coolerRegenGas.getOutStream()); + sepregenGas.setName("regen gas separator"); + + Stream gasToFlare = new Stream(sepregenGas.getGasOutStream()); + gasToFlare.setName("gas to flare"); + + Splitter splitterGasToFlare = new Splitter("splitter GasToFlare", gasToFlare); + splitterGasToFlare.setSplitNumber(2); + splitterGasToFlare.setFlowRates(new double[] {200, -1}, "kg/hr"); + + Heater strippingFlareGasTPsetter = + new Heater("TP of stripping gas + flare", splitterGasToFlare.getSplitStream(0)); + strippingFlareGasTPsetter.setOutPressure(1.1714901511485545, "bara"); + strippingFlareGasTPsetter.setOutTemperature(185.4402968739743, "C"); + + Stream liquidToTrreatment = new Stream(sepregenGas.getLiquidOutStream()); + liquidToTrreatment.setName("water to treatment"); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addSolventInStream(column.getLiquidOutStream()); + stripper.addGasInStream(strippingGas); + stripper.setNumberOfStages(2); + stripper.setStageEfficiency(1); + + Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); + recycleGasFromStripper.addStream(stripper.getGasOutStream()); + recycleGasFromStripper.setOutletStream(gasToReboiler); + // recycleGasFromStripper.setPriority(500); + // recycleGasFromStripper.setTolerance(1e-10); + + Recycle recycleFlareGas = new Recycle("stripping gas recirc Flare Gas"); + recycleFlareGas.addStream(strippingFlareGasTPsetter.getOutletStream()); + recycleFlareGas.setOutletStream(strippingGas); + recycleFlareGas.setPriority(1000); + // recycleFlareGas.setTolerance(0.1); + + neqsim.thermo.system.SystemInterface pureTEG = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + pureTEG.setMolarComposition(new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 1.0}); + + Stream makeupTEG = new Stream("makeup TEG", pureTEG); + makeupTEG.setFlowRate(1e-6, "kg/hr"); + makeupTEG.setTemperature(35.009563114341454, "C"); + makeupTEG.setPressure(1.1714901511485545, "bara"); + + Calculator makeupCalculator = new Calculator("TEG makeup calculator"); + makeupCalculator.addInputVariable(dehydratedGas); + makeupCalculator.addInputVariable(flashGas); + makeupCalculator.addInputVariable(gasToFlare); + makeupCalculator.addInputVariable(liquidToTrreatment); + makeupCalculator.setOutputVariable(makeupTEG); + + StaticMixer makeupMixer = new StaticMixer("makeup mixer"); + makeupMixer.addStream(stripper.getLiquidOutStream()); + makeupMixer.addStream(makeupTEG); + + Pump hotLeanTEGPump = new Pump(makeupMixer.getOutStream()); + hotLeanTEGPump.setName("lean TEG LP pump"); + hotLeanTEGPump.setOutletPressure(39.67967207899729); + hotLeanTEGPump.setIsentropicEfficiency(0.9); + + Heater coolerhOTteg3 = new Heater(hotLeanTEGPump.getOutStream()); + coolerhOTteg3.setName("lean TEG cooler"); + coolerhOTteg3.setOutTemperature(273.15 + 35.009563114341454); + + condHeat.setEnergyStream(column.getCondenser().getEnergyStream()); + + Stream leanTEGtoabs = new Stream(coolerhOTteg3.getOutStream()); + leanTEGtoabs.setName("lean TEG to absorber"); + + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); + resycleLeanTEG.addStream(leanTEGtoabs); + resycleLeanTEG.setOutletStream(TEGFeed); + resycleLeanTEG.setPriority(200); + resycleLeanTEG.setDownstreamProperty("flow rate"); + + neqsim.processSimulation.processSystem.ProcessSystem operations1 = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations1.add(dryFeedGasSmøbukk); + operations1.add(saturatedFeedGasSmøbukk); + operations1.add(waterSaturatedFeedGasSmøbukk); + operations1.add(hydrateTAnalyserSmøbukk); + operations1.add(SmøbukkSplit); + operations1.add(dryFeedGasMidgard); + operations1.add(saturatedFeedGasMidgard); + operations1.add(waterSaturatedFeedGasMidgard); + operations1.add(hydrateTAnalyserMidgard); + operations1.add(MidgardSplit); + operations1.add(TrainA); + operations1.add(feedTPsetterToAbsorber); + operations1.add(hydrateTAnalyser2); + operations1.add(waterDewPointAnalyserToAbsorber); + + neqsim.processSimulation.processSystem.ProcessSystem operations2 = + new neqsim.processSimulation.processSystem.ProcessSystem(); + // Rec module TEG + operations2.add(TEGFeed); + operations2.add(feedToAbsorber); + operations2.add(absorber); + operations2.add(richTEG); + operations2.add(condHeat); + operations2.add(glycol_flash_valve); + operations2.add(heatEx2); + operations2.add(waterFeed); + operations2.add(flashSep); + operations2.add(flashGas); + operations2.add(flashLiquid); + operations2.add(filter); + operations2.add(heatEx); + operations2.add(strippingGas); + + neqsim.processSimulation.processSystem.ProcessSystem operations3 = + new neqsim.processSimulation.processSystem.ProcessSystem(); + // Rec module gas to rebo,0 + operations3.add(gasToReboiler); + operations3.add(glycol_flash_valve2); + operations3.add(column); + operations3.add(stripper); + operations3.add(recycleGasFromStripper); + operations3.add(coolerRegenGas); + operations3.add(sepregenGas); + operations3.add(gasToFlare); + operations3.add(splitterGasToFlare); + operations3.add(strippingFlareGasTPsetter); + operations3.add(recycleFlareGas); + // Finish Rec Stripping gas + + neqsim.processSimulation.processSystem.ProcessSystem operations4 = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations4.add(liquidToTrreatment); + operations4.add(makeupTEG); + operations4.add(makeupCalculator); + operations4.add(makeupMixer); + operations4.add(hotLeanTEGPump); + operations4.add(coolerhOTteg3); + operations4.add(leanTEGtoabs); + operations4.add(resycleLeanTEG); + + neqsim.processSimulation.processSystem.ProcessSystem operations5 = + new neqsim.processSimulation.processSystem.ProcessSystem(); + // Finish Rec Lean TEG l + operations5.add(dehydratedGas); + operations5.add(waterDewPointAnalyser); + operations5.add(waterDewPointAnalyser2); + + neqsim.processSimulation.processSystem.ProcessModule module1 = + new neqsim.processSimulation.processSystem.ProcessModule("Start process"); + module1.add(operations1); + module1.add(operations2); + + neqsim.processSimulation.processSystem.ProcessModule module2 = + new neqsim.processSimulation.processSystem.ProcessModule("Column recycle"); + module2.add(operations3); + + neqsim.processSimulation.processSystem.ProcessModule module3 = + new neqsim.processSimulation.processSystem.ProcessModule("TEG recycle"); + module3.add(operations2); + module3.add(module2); + module3.add(operations4); + + neqsim.processSimulation.processSystem.ProcessModule module4 = + new neqsim.processSimulation.processSystem.ProcessModule("Finish Process"); + module4.add(operations5); + + neqsim.processSimulation.processSystem.ProcessModule modules = + new neqsim.processSimulation.processSystem.ProcessModule("Modules wrapper"); + modules.add(module1); + modules.add(module2); + modules.add(module3); + modules.add(module4); + // modules.run(); + + Thread runThr = modules.runAsThread(); + try { + runThr.join(10000); + } catch (Exception ex) { + } + + System.out.println(splitterGasToFlare.getSplitStream(1).getFlowRate("kg/hr")); + } +} diff --git a/src/test/java/neqsim/processSimulation/processSystem/GlycolRigTest.java b/src/test/java/neqsim/processSimulation/processSystem/GlycolRigTest.java new file mode 100644 index 0000000000..ad79656910 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processSystem/GlycolRigTest.java @@ -0,0 +1,344 @@ +package neqsim.processSimulation.processSystem; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.absorber.WaterStripperColumn; +import neqsim.processSimulation.processEquipment.compressor.Compressor; +import neqsim.processSimulation.processEquipment.distillation.DistillationColumn; +import neqsim.processSimulation.processEquipment.heatExchanger.Heater; +import neqsim.processSimulation.processEquipment.mixer.Mixer; +import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.util.Recycle; +import neqsim.thermo.ThermodynamicConstantsInterface; + +/** + * Test class for GlycolRig. + */ +public class GlycolRigTest extends neqsim.NeqSimTest { + static Logger logger = LogManager.getLogger(GlycolRigTest.class); + + ProcessSystem p; + String _name = "TestProcess"; + + @BeforeEach + public void setUp() { + p = new ProcessSystem(); + p.setName(_name); + } + + @Test + public void runTEGProcessTest() { + neqsim.thermo.system.SystemInterface feedTEG = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 145.0, 1.2); + feedTEG.addComponent("nitrogen", 0.00005); + feedTEG.addComponent("water", 0.19 - 1 * 0.00005); + feedTEG.addComponent("TEG", 0.8); + feedTEG.setMixingRule(10); + feedTEG.setMolarComposition(new double[] {0.00003, 0.2 - 1 * 0.00003, 0.8}); + + neqsim.thermo.system.SystemInterface strippingGasToStripperFluid = feedTEG.clone(); + strippingGasToStripperFluid.setMolarComposition(new double[] {1.0, 0.0, 0.0}); + + Stream strippingGas = new Stream("stripgas", strippingGasToStripperFluid); + strippingGas.setFlowRate(13.0, "kg/hr"); + strippingGas.setTemperature(55.0, "C"); + strippingGas.setPressure(0.2, "barg"); + + Stream gasToReboiler = strippingGas.clone(); + gasToReboiler.setName("gas to reboiler"); + + Stream TEGtoRegenerator = new Stream("feedTEG", feedTEG); + TEGtoRegenerator.setName("TEG to regenerator"); + TEGtoRegenerator.setFlowRate(400.0, "kg/hr"); + TEGtoRegenerator.setTemperature(145.0, "C"); + TEGtoRegenerator.setPressure(0.2, "barg"); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(TEGtoRegenerator, 1); + column.getReboiler().setOutTemperature(273.15 + 209.0); + column.getCondenser().setOutTemperature(273.15 + 104.0); + column.getTray(1).addStream(gasToReboiler); + // column.getReboiler().addStream(gasToReboiler); + column.setTopPressure(0.1 + ThermodynamicConstantsInterface.referencePressure); + column.setBottomPressure(0.2 + ThermodynamicConstantsInterface.referencePressure); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addSolventInStream(column.getLiquidOutStream()); + stripper.addGasInStream(strippingGas); + stripper.setNumberOfStages(2); + stripper.setStageEfficiency(0.7); + + Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); + recycleGasFromStripper.addStream(stripper.getGasOutStream()); + recycleGasFromStripper.setOutletStream(gasToReboiler); + + Heater coolerPipe = new Heater("heat loss cooling", column.getGasOutStream()); + coolerPipe.setOutTemperature(273.15 + 81.0); + + Heater coolerRegenGas = new Heater("regen gas cooler", coolerPipe.getOutletStream()); + coolerRegenGas.setOutTemperature(273.15 + 25.0); + + Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); + + Compressor blower = new Compressor("blower", sepregenGas.getGasOutStream()); + blower.setOutletPressure(0.2, "barg"); + + Heater gasHeater = new Heater("heater", blower.getOutletStream()); + gasHeater.setOutTemperature(273.15 + 53.0); + + Recycle recycleGasfEED = new Recycle("FEED gas recirc"); + recycleGasfEED.addStream(gasHeater.getOutletStream()); + recycleGasfEED.setOutletStream(strippingGas); + recycleGasfEED.setPriority(200); + + Heater coolerStripper = new Heater("TEG cooler", stripper.getSolventOutStream()); + coolerStripper.setOutTemperature(273.15 + 98.0); + + Stream liquidToTreatment = new Stream("water to treatment", sepregenGas.getLiquidOutStream()); + + Mixer TEGWaterMixer = new Mixer("TEG water mixer"); + TEGWaterMixer.addStream(coolerStripper.getOutletStream()); + TEGWaterMixer.addStream(liquidToTreatment); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(TEGtoRegenerator); + operations.add(strippingGas); + operations.add(gasToReboiler); + operations.add(column); + operations.add(coolerPipe); + operations.add(coolerRegenGas); + operations.add(sepregenGas); + operations.add(blower); + operations.add(gasHeater); + operations.add(recycleGasfEED); + operations.add(liquidToTreatment); + operations.add(stripper); + operations.add(recycleGasFromStripper); + operations.add(coolerStripper); + operations.add(TEGWaterMixer); + + Thread runThr = operations.runAsThread(); + try { + runThr.join(10 * 60000); + } catch (Exception ex) { + } + double wtpWaterRichTEG = + TEGtoRegenerator.getFluid().getPhase("aqueous").getWtFrac("water") * 100.0; + double wtpWaterFromReboil = + column.getLiquidOutStream().getFluid().getPhase("aqueous").getWtFrac("water") * 100.0; + double wtpWaterFromStripper = + stripper.getSolventOutStream().getFluid().getPhase("aqueous").getWtFrac("water") * 100.0; + logger.info("wtpRichTEG " + wtpWaterRichTEG); + logger.info("wtpWaterFromReboil " + wtpWaterFromReboil); + logger.info("wtpWaterFromStripper " + wtpWaterFromStripper); + // double wtpWaterFromReboiler = + // column.getLiquidOutStream().getFluid().getPhase("aqueous").getWtFrac("water")*100.0 + // double wtpTEGSeparatorOut = + // liquidToTreatment.getFluid().getPhase("aqueous").getWtFrac("TEG")*100.0 + // double flowrateLiquidSeparatorOut = liquidToTreatment.getFlowRate("kg/hr") + // double wtWaterFromStripper = + // stripper.getSolventOutStream().getFluid().getPhase("aqueous").getWtFrac("water")*100.0 + // double wtWaterBufferTank = + // liquidFromBufferTank.getFluid().getPhase("aqueous").getWtFrac("water")*100.0 + // TEGtoRegenerator.displayResult(); + logger.info("water to regenerator " + + TEGtoRegenerator.getFluid().getComponent("water").getTotalFlowRate("kg/hr")); + logger.info("TEG to regenerator " + + TEGtoRegenerator.getFluid().getComponent("TEG").getTotalFlowRate("kg/hr")); + // logger.info("oxygen to regenerator " + // + TEGtoRegenerator.getFluid().getComponent("oxygen").getTotalFlowRate("kg/hr")); + logger.info("nitrogen to regenerator " + + TEGtoRegenerator.getFluid().getComponent("nitrogen").getTotalFlowRate("kg/hr")); + + logger.info("water liquid from regenerator " + + column.getLiquidOutStream().getFluid().getComponent("water").getTotalFlowRate("kg/hr")); + logger.info("water gas from regenerator " + + column.getGasOutStream().getFluid().getComponent("water").getTotalFlowRate("kg/hr")); + logger.info("water from stripping gas " + + gasToReboiler.getFluid().getComponent("water").getTotalFlowRate("kg/hr")); + + double waterBalanceColumn = + column.getLiquidOutStream().getFluid().getComponent("water").getTotalFlowRate("kg/hr") + + column.getGasOutStream().getFluid().getComponent("water").getTotalFlowRate("kg/hr") + - TEGtoRegenerator.getFluid().getComponent("water").getTotalFlowRate("kg/hr") + - gasToReboiler.getFluid().getComponent("water").getTotalFlowRate("kg/hr"); + logger.info("water balance " + waterBalanceColumn); + + logger.info("wt water to reboil " + + TEGtoRegenerator.getFluid().getPhase("aqueous").getWtFrac("water") * 100.0); + + logger.info("wt water from mixer " + + TEGWaterMixer.getFluid().getPhase("aqueous").getWtFrac("water") * 100.0); + // strippingGas.displayResult(); + logger.info("stripping gas rate " + strippingGas.getFlowRate("kg/hr")); + Assertions.assertEquals(0.0, waterBalanceColumn, 1e-3); + } + + @Test + public void runDistillationProcessTest() { + neqsim.thermo.system.SystemInterface feed = + new neqsim.thermo.system.SystemSrkEos(273.15 + 10.0, 2.01325); + feed.addComponent("methane", 0.1); + feed.addComponent("propane", 0.3); + feed.addComponent("n-hexane", 0.6); + feed.setMixingRule("classic"); + + Stream feedToRegenerator = new Stream("feed", feed); + feedToRegenerator.setName("feed to regenerator"); + feedToRegenerator.setFlowRate(400.0, "kg/hr"); + feedToRegenerator.setTemperature(20.0, "C"); + feedToRegenerator.setPressure(2.01325, "barg"); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("distillation column"); + column.addFeedStream(feedToRegenerator, 1); + column.getReboiler().setOutTemperature(273.15 + 70.0); + column.getCondenser().setOutTemperature(273.15 - 10.0); + column.setTopPressure(1.0 + ThermodynamicConstantsInterface.referencePressure); + column.setBottomPressure(1.0 + ThermodynamicConstantsInterface.referencePressure); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(feedToRegenerator); + operations.add(column); + + operations.run(); + /* + * logger.info("wt n-hexane from column " + + * column.getLiquidOutStream().getFluid().getPhase("oil").getWtFrac("n-hexane") * 100.0); + * + * logger.info("wt methane from column " + + * column.getLiquidOutStream().getFluid().getPhase("oil").getWtFrac("methane") * 100.0); + * + * logger.info("wt propane from column " + + * column.getLiquidOutStream().getFluid().getPhase("oil").getWtFrac("propane") * 100.0); + * + * logger.info("wt n-hexane from gas column " + + * column.getGasOutStream().getFluid().getPhase("gas").getWtFrac("n-hexane") * 100.0); + * + * logger.info("wt methane from gas column " + + * column.getGasOutStream().getFluid().getPhase("gas").getWtFrac("methane") * 100.0); + * + * logger.info("wt propane from gas column " + + * column.getGasOutStream().getFluid().getPhase("gas").getWtFrac("propane") * 100.0); + */ + } + + @Test + public void runDistillationProcessTest2() { + neqsim.thermo.system.SystemInterface feed = + new neqsim.thermo.system.SystemSrkEos(273.15 + 40.0, 5.01325); + feed.addComponent("propane", 0.3); + feed.addComponent("n-hexane", 0.6); + feed.setMixingRule("classic"); + + Stream feedToRegenerator = new Stream("feed", feed); + feedToRegenerator.setName("feed to regenerator"); + feedToRegenerator.setFlowRate(400.0, "kg/hr"); + feedToRegenerator.setTemperature(80.0, "C"); + feedToRegenerator.setPressure(5.0, "barg"); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("distillation column"); + column.addFeedStream(feedToRegenerator, 1); + column.getReboiler().setOutTemperature(273.15 + 100.0); + column.getCondenser().setOutTemperature(273.15 + 50.0); + column.setTopPressure(1.0 + 5.01325); + column.setBottomPressure(1.0 + 5.01325); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(feedToRegenerator); + operations.add(column); + + operations.run(); + /* + * logger.info("wt n-hexane from column " + + * column.getLiquidOutStream().getFluid().getPhase("oil").getWtFrac("n-hexane") * 100.0); + * + * logger.info("wt propane from column " + + * column.getLiquidOutStream().getFluid().getPhase("oil").getWtFrac("propane") * 100.0); + * + * logger.info("wt n-hexane from gas column " + + * column.getGasOutStream().getFluid().getPhase("gas").getWtFrac("n-hexane") * 100.0); + * + * logger.info("wt propane from gas column " + + * column.getGasOutStream().getFluid().getPhase("gas").getWtFrac("propane") * 100.0); + */ + } + + @Test + public void runDistillationProcessTest3() { + neqsim.thermo.system.SystemInterface feed = + new neqsim.thermo.system.SystemSrkEos(273.15 + 40.0, 2.01325); + feed.addComponent("ethane", 0.01); + feed.addComponent("n-hexane", 0.99); + feed.setMixingRule("classic"); + + neqsim.thermo.system.SystemInterface feed2 = + new neqsim.thermo.system.SystemSrkEos(273.15 + 40.0, 2.01325); + feed2.addComponent("ethane", 0.99); + feed2.addComponent("n-hexane", 0.01); + feed2.setMixingRule("classic"); + + Stream feedToRegenerator = new Stream("feed", feed); + feedToRegenerator.setName("feed to regenerator"); + feedToRegenerator.setFlowRate(400.0, "kg/hr"); + feedToRegenerator.setTemperature(40.0, "C"); + feedToRegenerator.setPressure(2.0, "barg"); + + Stream feedToRegenerator2 = new Stream("feed2", feed2); + feedToRegenerator2.setName("feed2 to regenerator"); + feedToRegenerator2.setFlowRate(400.0, "kg/hr"); + feedToRegenerator2.setTemperature(80.0, "C"); + feedToRegenerator2.setPressure(2.0, "barg"); + + DistillationColumn column = new DistillationColumn(2, false, false); + column.setName("distillation column"); + + column.addFeedStream(feedToRegenerator2, 0); + column.addFeedStream(feedToRegenerator, 1); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(feedToRegenerator); + operations.add(feedToRegenerator2); + operations.add(column); + + operations.run(); + operations.run(); + operations.run(); + + /* + * logger.info("wt n-hexane from column " + + * column.getLiquidOutStream().getFluid().getPhase("oil").getWtFrac("n-hexane") * 100.0); + * + * logger.info("wt ethane from column " + + * column.getLiquidOutStream().getFluid().getPhase("oil").getWtFrac("ethane") * 100.0); + * + * logger.info("wt n-hexane from gas column " + + * column.getGasOutStream().getFluid().getPhase("gas").getWtFrac("n-hexane") * 100.0); + * + * logger.info("wt ethane from gas column " + + * column.getGasOutStream().getFluid().getPhase("gas").getWtFrac("ethane") * 100.0); + * + * logger.info("flow rate gas " + + * column.getGasOutStream().getFluid().getPhase("gas").getFlowRate("kg/hr") + " kg/hr"); + * + * logger.info("flow rate oil " + + * column.getLiquidOutStream().getFluid().getPhase("oil").getFlowRate("kg/hr") + " kg/hr"); + * + * System.out .println("flow rate oil " + feedToRegenerator.getFluid().getFlowRate("kg/hr") + + * " kg/hr"); + * + * System.out .println("flow rate gas " + feedToRegenerator2.getFluid().getFlowRate("kg/hr") + + * " kg/hr"); column.massBalanceCheck(); + */ + } +} diff --git a/src/test/java/neqsim/processSimulation/processSystem/MLA_bug_test.java b/src/test/java/neqsim/processSimulation/processSystem/MLA_bug_test.java new file mode 100644 index 0000000000..fe9e1179f1 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processSystem/MLA_bug_test.java @@ -0,0 +1,364 @@ +package neqsim.processSimulation.processSystem; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.measurementDevice.WaterDewPointAnalyser; +import neqsim.processSimulation.processEquipment.absorber.SimpleTEGAbsorber; +import neqsim.processSimulation.processEquipment.absorber.WaterStripperColumn; +import neqsim.processSimulation.processEquipment.distillation.DistillationColumn; +import neqsim.processSimulation.processEquipment.filter.Filter; +import neqsim.processSimulation.processEquipment.heatExchanger.HeatExchanger; +import neqsim.processSimulation.processEquipment.heatExchanger.Heater; +import neqsim.processSimulation.processEquipment.mixer.Mixer; +import neqsim.processSimulation.processEquipment.pump.Pump; +import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.processEquipment.util.Calculator; +import neqsim.processSimulation.processEquipment.util.Recycle; +import neqsim.processSimulation.processEquipment.util.StreamSaturatorUtil; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkCPA; +import neqsim.thermo.util.empiric.BukacekWaterInGas; + +public class MLA_bug_test extends neqsim.NeqSimTest { + Logger logger = LogManager.getLogger(MLA_bug_test.class); + + @Test + public void runProcessTEG() throws InterruptedException { + ProcessSystem p = new ProcessSystem(); + + SystemInterface feedGas = new SystemSrkCPA(); + feedGas.addComponent("nitrogen", 0.245); + feedGas.addComponent("CO2", 3.4); + feedGas.addComponent("methane", 85.7); + feedGas.addComponent("ethane", 5.981); + feedGas.addComponent("propane", 2.743); + feedGas.addComponent("i-butane", 0.37); + feedGas.addComponent("n-butane", 0.77); + feedGas.addComponent("i-pentane", 0.142); + feedGas.addComponent("n-pentane", 0.166); + feedGas.addComponent("n-hexane", 0.06); + feedGas.addComponent("benzene", 0.01); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("TEG", 0.0); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(false); + feedGas.init(0); + + SystemInterface coolingMedium = new SystemSrkCPA(); + coolingMedium.setTemperature(273.15 + 20.0); + coolingMedium.setPressure(10.0, "bara"); + coolingMedium.addComponent("water", 0.7, "kg/sec"); + coolingMedium.addComponent("MEG", 0.3, "kg/sec"); + coolingMedium.setMixingRule(10); + coolingMedium.setMultiPhaseCheck(false); + + StreamInterface coolingWater1 = new Stream(coolingMedium); + coolingWater1.setName("cooling water 1"); + coolingWater1.setFlowRate(30000.0, "kg/hr"); + coolingWater1.setTemperature(18.0, "C"); + coolingWater1.setPressure(7.5, "bara"); + p.add(coolingWater1); + + StreamInterface coolingWater2 = new Stream(coolingMedium.clone()); + coolingWater2.setName("cooling water 2"); + coolingWater2.setFlowRate(3500.0, "kg/hr"); + coolingWater2.setTemperature(18.0, "C"); + coolingWater2.setPressure(7.5, "bara"); + p.add(coolingWater2); + + StreamInterface dryFeedGas = new Stream(feedGas); + dryFeedGas.setName("dry feed gas"); + dryFeedGas.setFlowRate(4.65, "MSm3/day"); + dryFeedGas.setTemperature(25.0, "C"); + dryFeedGas.setPressure(70.0, "bara"); + p.add(dryFeedGas); + + StreamSaturatorUtil saturatedFeedGas = new StreamSaturatorUtil(dryFeedGas); + saturatedFeedGas.setName("water saturator"); + p.add(saturatedFeedGas); + + StreamInterface waterSaturatedFeedGas = new Stream(saturatedFeedGas.getOutStream()); + waterSaturatedFeedGas.setName("water saturated feed gas"); + p.add(waterSaturatedFeedGas); + + SystemInterface feedTEG = feedGas.clone(); + feedTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.97}); + + Heater feedTPsetterToAbsorber = new Heater(waterSaturatedFeedGas); + feedTPsetterToAbsorber.setName("TP of gas to absorber"); + feedTPsetterToAbsorber.setOutPressure(85.0, "bara"); + feedTPsetterToAbsorber.setOutTemperature(35.0, "C"); + p.add(feedTPsetterToAbsorber); + + StreamInterface feedToAbsorber = new Stream(feedTPsetterToAbsorber.getOutStream()); + feedToAbsorber.setName("feed to TEG absorber"); + p.add(feedToAbsorber); + + WaterDewPointAnalyser waterDewPointAnalyserToAbsorber = + new WaterDewPointAnalyser(feedToAbsorber); + waterDewPointAnalyserToAbsorber.setMethod("multiphase"); + waterDewPointAnalyserToAbsorber.setReferencePressure(85.0); + waterDewPointAnalyserToAbsorber.setName("water dew point gas to absorber"); + p.add(waterDewPointAnalyserToAbsorber); + + StreamInterface TEGFeed = new Stream(feedTEG); + TEGFeed.setName("lean TEG to absorber"); + TEGFeed.setFlowRate(5500.0, "kg/hr"); + TEGFeed.setTemperature(48.5, "C"); + TEGFeed.setPressure(85.0, "bara"); + p.add(TEGFeed); + + SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); + absorber.addGasInStream(feedToAbsorber); + absorber.addSolventInStream(TEGFeed); + absorber.setNumberOfStages(4); + absorber.setStageEfficiency(0.7); + absorber.setInternalDiameter(2.240); + p.add(absorber); + + SimpleTEGAbsorber absorberSetWater = new SimpleTEGAbsorber("TEG absorber set water"); + absorberSetWater.addGasInStream(feedToAbsorber); + absorberSetWater.addSolventInStream(TEGFeed); + absorberSetWater.setInternalDiameter(2.240); + absorberSetWater.setWaterInDryGas(30e-6); + p.add(absorberSetWater); + + StreamInterface dehydratedGasSetWater = new Stream(absorberSetWater.getGasOutStream()); + dehydratedGasSetWater.setName("dry gas from absorber set water"); + p.add(dehydratedGasSetWater); + + Heater coolerDehydGas = new Heater(dehydratedGasSetWater); + coolerDehydGas.setName("coolerDehydGas"); + coolerDehydGas.setOutTemperature(273.15 + 10.0); + p.add(coolerDehydGas); + + Separator sepDehydratedGasSetWater = new Separator(coolerDehydGas.getOutStream()); + sepDehydratedGasSetWater.setName("dehyd gas separator"); + p.add(sepDehydratedGasSetWater); + + Heater pipelineSetTP = new Heater(sepDehydratedGasSetWater.getGasOutStream()); + pipelineSetTP.setName("pipelineSetTP"); + pipelineSetTP.setOutPressure(168.0, "bara"); + pipelineSetTP.setOutTemperature(4.0, "C"); + p.add(pipelineSetTP); + + StreamInterface pipelineSetTPStream = new Stream(pipelineSetTP.getOutStream()); + pipelineSetTPStream.setName("pipelineSetTP stream"); + p.add(pipelineSetTPStream); + + WaterDewPointAnalyser waterDewPointAnalyser3 = new WaterDewPointAnalyser(dehydratedGasSetWater); + waterDewPointAnalyser3.setReferencePressure(70.0); + waterDewPointAnalyser3.setName("water dew point analyser3"); + p.add(waterDewPointAnalyser3); + + StreamInterface dehydratedGas = new Stream(absorber.getGasOutStream()); + dehydratedGas.setName("dry gas from absorber"); + p.add(dehydratedGas); + + StreamInterface richTEG = new Stream(absorber.getLiquidOutStream()); + richTEG.setName("rich TEG from absorber"); + p.add(richTEG); + + WaterDewPointAnalyser waterDewPointAnalyser2 = new WaterDewPointAnalyser(dehydratedGas); + waterDewPointAnalyser2.setReferencePressure(70.0); + waterDewPointAnalyser2.setName("water dew point analyser"); + p.add(waterDewPointAnalyser2); + + ThrottlingValve glycol_flash_valve = new ThrottlingValve(richTEG); + glycol_flash_valve.setName("Rich TEG HP flash valve"); + glycol_flash_valve.setOutletPressure(4.8); + p.add(glycol_flash_valve); + + Heater richGLycolHeaterCondenser = new Heater(glycol_flash_valve.getOutStream()); + richGLycolHeaterCondenser.setName("rich TEG preheater"); + p.add(richGLycolHeaterCondenser); + + HeatExchanger heatEx2 = new HeatExchanger(richGLycolHeaterCondenser.getOutStream()); + heatEx2.setName("rich TEG heat exchanger 1"); + heatEx2.setGuessOutTemperature(273.15 + 62.0); + heatEx2.setUAvalue(2224.0); + p.add(heatEx2); + + Separator flashSep = new Separator(heatEx2.getOutStream(0)); + flashSep.setName("degasing separator"); + flashSep.setInternalDiameter(1.2); + p.add(flashSep); + + StreamInterface flashGas = new Stream(flashSep.getGasOutStream()); + flashGas.setName("gas from degasing separator"); + p.add(flashGas); + + StreamInterface flashLiquid = new Stream(flashSep.getLiquidOutStream()); + flashLiquid.setName("liquid from degasing separator"); + p.add(flashLiquid); + + Filter fineFilter = new Filter(flashLiquid); + fineFilter.setName("TEG fine filter"); + fineFilter.setDeltaP(0.0, "bara"); + p.add(fineFilter); + + HeatExchanger heatEx = new HeatExchanger(fineFilter.getOutStream()); + heatEx.setName("lean/rich TEG heat-exchanger"); + heatEx.setGuessOutTemperature(273.15 + 130.0); + heatEx.setUAvalue(8316.0); + p.add(heatEx); + + ThrottlingValve glycol_flash_valve2 = new ThrottlingValve(heatEx.getOutStream(0)); + glycol_flash_valve2.setName("Rich TEG LP flash valve"); + glycol_flash_valve2.setOutletPressure(1.2); + p.add(glycol_flash_valve2); + + SystemInterface stripGas = feedGas.clone(); + + StreamInterface strippingGas = new Stream(stripGas); + strippingGas.setName("stripGas"); + strippingGas.setFlowRate(180.0, "Sm3/hr"); + strippingGas.setTemperature(78.3, "C"); + strippingGas.setPressure(1.2, "bara"); + p.add(strippingGas); + + StreamInterface gasToReboiler = strippingGas.clone(); + gasToReboiler.setName("gas to reboiler"); + p.add(gasToReboiler); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(glycol_flash_valve2.getOutStream(), 1); + column.getReboiler().setOutTemperature(273.15 + 197.5); + column.getCondenser().setOutTemperature(273.15 + 80.0); + column.getTray(1).addStream(gasToReboiler); + column.setTopPressure(1.2); + column.setBottomPressure(1.2); + column.setInternalDiameter(0.56); + p.add(column); + + Heater coolerRegenGas = new Heater(column.getGasOutStream()); + coolerRegenGas.setName("regen gas cooler"); + coolerRegenGas.setOutTemperature(273.15 + 47.0); + p.add(coolerRegenGas); + + HeatExchanger overheadCondHX = new HeatExchanger(column.getGasOutStream()); + overheadCondHX.setName("overhead condenser heat-exchanger"); + overheadCondHX.setGuessOutTemperature(273.15 + 50.0); + overheadCondHX.setUAvalue(3247.0); + overheadCondHX.setFeedStream(1, coolingWater1); + p.add(overheadCondHX); + + Separator sepregenGas = new Separator(coolerRegenGas.getOutStream()); + sepregenGas.setName("regen gas separator"); + p.add(sepregenGas); + + StreamInterface gasToFlare = new Stream(sepregenGas.getGasOutStream()); + gasToFlare.setName("gas to flare"); + p.add(gasToFlare); + + StreamInterface liquidToTrreatment = new Stream(sepregenGas.getLiquidOutStream()); + liquidToTrreatment.setName("water to treatment"); + p.add(liquidToTrreatment); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addSolventInStream(column.getLiquidOutStream()); + stripper.addGasInStream(strippingGas); + stripper.setNumberOfStages(2); + stripper.setStageEfficiency(1.0); + p.add(stripper); + + Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); + recycleGasFromStripper.addStream(stripper.getGasOutStream()); + recycleGasFromStripper.setOutletStream(gasToReboiler); + p.add(recycleGasFromStripper); + + heatEx.setFeedStream(1, stripper.getLiquidOutStream()); + + Heater bufferTank = new Heater(heatEx.getOutStream(1)); + bufferTank.setName("TEG buffer tank"); + bufferTank.setOutTemperature(273.15 + 90.5); + p.add(bufferTank); + + Pump hotLeanTEGPump = new Pump(bufferTank.getOutStream()); + hotLeanTEGPump.setName("lean TEG LP pump"); + hotLeanTEGPump.setOutletPressure(3.0); + hotLeanTEGPump.setIsentropicEfficiency(0.75); + p.add(hotLeanTEGPump); + + heatEx2.setFeedStream(1, hotLeanTEGPump.getOutStream()); + + Heater coolerhOTteg3 = new Heater(heatEx2.getOutStream(1)); + coolerhOTteg3.setName("lean TEG cooler"); + coolerhOTteg3.setOutTemperature(273.15 + 48.5); + p.add(coolerhOTteg3); + + HeatExchanger coolerhOTteg3HX = new HeatExchanger(heatEx2.getOutStream(1)); + coolerhOTteg3HX.setName("lean TEG heat-exchanger 3"); + coolerhOTteg3HX.setGuessOutTemperature(273.15 + 40.0); + coolerhOTteg3HX.setUAvalue(7819.0); + coolerhOTteg3HX.setFeedStream(1, coolingWater2); + p.add(coolerhOTteg3HX); + + Pump hotLeanTEGPump2 = new Pump(coolerhOTteg3.getOutStream()); + hotLeanTEGPump2.setName("lean TEG HP pump"); + hotLeanTEGPump2.setOutletPressure(85.0); + hotLeanTEGPump2.setIsentropicEfficiency(0.75); + p.add(hotLeanTEGPump2); + + StreamInterface leanTEGtoabs = new Stream(hotLeanTEGPump2.getOutStream()); + leanTEGtoabs.setName("lean TEG to absorber"); + p.add(leanTEGtoabs); + + SystemInterface pureTEG = feedGas.clone(); + pureTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); + + Stream makeupTEG = new Stream(pureTEG); + makeupTEG.setName("makeup TEG"); + makeupTEG.setFlowRate(1e-6, "kg/hr"); + makeupTEG.setTemperature(48.5, "C"); + makeupTEG.setPressure(85.0, "bara"); + p.add(makeupTEG); + + Calculator makeupCalculator = new Calculator("TEG makeup calculator"); + makeupCalculator.addInputVariable(dehydratedGas); + makeupCalculator.addInputVariable(flashGas); + makeupCalculator.addInputVariable(gasToFlare); + makeupCalculator.addInputVariable(liquidToTrreatment); + makeupCalculator.setOutputVariable(makeupTEG); + p.add(makeupCalculator); + + Mixer makeupMixer = new Mixer("makeup mixer"); + makeupMixer.addStream(leanTEGtoabs); + makeupMixer.addStream(makeupTEG); + p.add(makeupMixer); + + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); + resycleLeanTEG.addStream(makeupMixer.getOutStream()); + resycleLeanTEG.setOutletStream(TEGFeed); + resycleLeanTEG.setPriority(200); + resycleLeanTEG.setDownstreamProperty("flow rate"); + p.add(resycleLeanTEG); + + richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); + + Thread runThr = p.runAsThread(); + try { + runThr.join(100000); + } catch (Exception ex) { + logger.error("Something failed"); + } + // System.out.println("water in gas " + dehydratedGas.getFluid().getComponent("water").getx()); + + assertEquals(-19.1886678, + p.getMeasurementDevice("water dew point analyser3").getMeasuredValue("C"), 1e-2); + } + + @Test + public void testBukacekWaterInGas() { + assertEquals(-36.485388110, + BukacekWaterInGas.waterDewPointTemperature(8.2504356945e-6, 70.0) - 273.15, 1e-2); + } +} diff --git a/src/test/java/neqsim/processSimulation/processSystem/OilGasProcessTest.java b/src/test/java/neqsim/processSimulation/processSystem/OilGasProcessTest.java new file mode 100644 index 0000000000..87ed44d5ef --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processSystem/OilGasProcessTest.java @@ -0,0 +1,128 @@ +package neqsim.processSimulation.processSystem; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.heatExchanger.Heater; +import neqsim.processSimulation.processEquipment.pump.Pump; +import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.stream.StreamInterface; +import neqsim.processSimulation.processEquipment.util.Recycle; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class OilGasProcessTest extends neqsim.NeqSimTest { + @Test + public void runProcess() throws InterruptedException { + SystemInterface thermoSystem = new SystemSrkEos(298.0, 10.0); + thermoSystem.addComponent("water", 51.0); + thermoSystem.addComponent("nitrogen", 51.0); + thermoSystem.addComponent("CO2", 51.0); + thermoSystem.addComponent("methane", 51.0); + thermoSystem.addComponent("ethane", 51.0); + thermoSystem.addComponent("propane", 51.0); + thermoSystem.addComponent("i-butane", 51.0); + thermoSystem.addComponent("n-butane", 51.0); + thermoSystem.addComponent("iC5", 51.0); + thermoSystem.addComponent("nC5", 1.0); + + thermoSystem.addTBPfraction("C6", 1.0, 86.0 / 1000.0, 0.66); + thermoSystem.addTBPfraction("C7", 1.0, 91.0 / 1000.0, 0.74); + thermoSystem.addTBPfraction("C8", 1.0, 103.0 / 1000.0, 0.77); + thermoSystem.addTBPfraction("C9", 1.0, 117.0 / 1000.0, 0.79); + thermoSystem.addPlusFraction("C10_C12", 1.0, 145.0 / 1000.0, 0.80); + thermoSystem.addPlusFraction("C13_C14", 1.0, 181.0 / 1000.0, 0.8279); + thermoSystem.addPlusFraction("C15_C16", 1.0, 212.0 / 1000.0, 0.837); + thermoSystem.addPlusFraction("C17_C19", 1.0, 248.0 / 1000.0, 0.849); + thermoSystem.addPlusFraction("C20_C22", 1.0, 289.0 / 1000.0, 0.863); + thermoSystem.addPlusFraction("C23_C25", 1.0, 330.0 / 1000.0, 0.875); + thermoSystem.addPlusFraction("C26_C30", 1.0, 387.0 / 1000.0, 0.88); + thermoSystem.addPlusFraction("C31_C38", 1.0, 471.0 / 1000.0, 0.90); + thermoSystem.addPlusFraction("C38_C80", 1.0, 662.0 / 1000.0, 0.92); + thermoSystem.setMixingRule("classic"); + thermoSystem.setMultiPhaseCheck(true); + thermoSystem.setMolarComposition(new double[] {0.034266, 0.005269, 0.039189, 0.700553, 0.091154, + 0.050908, 0.007751, 0.014665, 0.004249, 0.004878, 0.004541, 0.007189, 0.006904, 0.004355, + 0.007658, 0.003861, 0.003301, 0.002624, 0.001857, 0.001320, 0.001426, 0.001164, 0.000916}); + // thermoSystem.prettyPrint(); + + Stream feedStream = new Stream("feed stream", thermoSystem); + feedStream.setFlowRate(604094, "kg/hr"); + feedStream.setTemperature(25.5, "C"); + feedStream.setPressure(26.0, "bara"); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator seprator1stStage = + new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "1st stage separator", feedStream); + + ThrottlingValve valve1 = new ThrottlingValve("valve1", seprator1stStage.getLiquidOutStream()); + valve1.setOutletPressure(19.0); + + Heater oilHeater = new Heater("oil heater", valve1.getOutletStream()); + oilHeater.setOutTemperature(359.0); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator seprator2ndStage = + new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "2nd stage separator", oilHeater.getOutletStream()); + + ThrottlingValve valve2 = new ThrottlingValve("valve2", seprator2ndStage.getLiquidOutStream()); + valve2.setOutletPressure(2.7); + + StreamInterface recircstream1 = valve2.getOutletStream().clone(); + recircstream1.setName("oilRecirc1"); + recircstream1.setFlowRate(1e-6, "kg/hr"); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator seprator3rdStage = + new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "3rd stage separator"); + seprator3rdStage.addStream(valve2.getOutletStream()); + seprator3rdStage.addStream(recircstream1); + + ThrottlingValve pipeloss1st = + new ThrottlingValve("pipeloss1st", seprator3rdStage.getGasOutStream()); + pipeloss1st.setOutletPressure(2.7 - 0.03); + + Heater coolerLP = new Heater("cooler LP", pipeloss1st.getOutletStream()); + coolerLP.setOutTemperature(273.15 + 25.0); + + Separator sepregenGas = new Separator("sepregenGas", coolerLP.getOutletStream()); + + Pump oil1pump = new Pump("oil1pump", sepregenGas.getLiquidOutStream()); + oil1pump.setOutletPressure(19.); + + ThrottlingValve valveLP1 = new ThrottlingValve("valvseLP1", oil1pump.getOutletStream()); + valveLP1.setOutletPressure(2.7); + + Recycle recycle1 = new Recycle("oil recirc 1"); + recycle1.addStream(valveLP1.getOutletStream()); + recycle1.setOutletStream(recircstream1); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(feedStream); + operations.add(seprator1stStage); + operations.add(valve1); + operations.add(oilHeater); + operations.add(seprator2ndStage); + operations.add(valve2); + operations.add(recircstream1); + operations.add(seprator3rdStage); + operations.add(pipeloss1st); + operations.add(coolerLP); + operations.add(sepregenGas); + operations.add(oil1pump); + operations.add(valveLP1); + operations.add(recycle1); + + operations.run(); + + assertEquals(17105.52983567356, seprator3rdStage.getGasOutStream().getFlowRate("kg/hr"), 1.1); + + assertEquals(seprator3rdStage.getGasOutStream().getFlowRate("kg/hr"), + coolerLP.getOutletStream().getFlowRate("kg/hr"), 1e-4); + + // System.out.println("recycle flow " + recycle1.getOutletStream().getFlowRate("kg/hr")); + // valveLP1.getOutletStream().getFluid().prettyPrint(); + } +} diff --git a/src/test/java/neqsim/processSimulation/processSystem/OilProcessTest.java b/src/test/java/neqsim/processSimulation/processSystem/OilProcessTest.java new file mode 100644 index 0000000000..3e776d665f --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processSystem/OilProcessTest.java @@ -0,0 +1,21 @@ +package neqsim.processSimulation.processSystem; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.BeforeEach; + +/** + * Test class for GlycolRig. + */ +public class OilProcessTest extends neqsim.NeqSimTest { + static Logger logger = LogManager.getLogger(OilProcessTest.class); + + ProcessSystem p; + String _name = "TestProcess"; + + @BeforeEach + public void setUp() { + p = new ProcessSystem(); + p.setName(_name); + } +} diff --git a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemControllerTest.java b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemControllerTest.java index 7e77bda81f..3d036f8866 100644 --- a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemControllerTest.java +++ b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemControllerTest.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.processSystem; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -12,6 +14,8 @@ import neqsim.thermo.system.SystemInterface; public class ProcessSystemControllerTest extends neqsim.NeqSimTest { + static Logger logger = LogManager.getLogger(ProcessSystemControllerTest.class); + ProcessSystem p; @BeforeEach @@ -28,12 +32,10 @@ public void testGetName() { @Test void testGetTime() { - } @Test void testGetTimeStep() { - } private SystemInterface getTestSystem() { @@ -93,7 +95,7 @@ public void testStaticSimulationWithController() { for (int i = 0; i < 55; i++) { flowController.setControllerSetPoint(65.0 + getRandomDistrurbanceFlowRate()); p.runTransient(); - System.out.println( + logger.info( "flow rate " + valve_1.getOutletStream().getFluid().getPhase("gas").getFlowRate("kg/hr") + " controller response " + flowController.getResponse() + " valve opening " + valve_1.getPercentValveOpening() + " pressure " @@ -104,7 +106,7 @@ public void testStaticSimulationWithController() { flowController.setControllerSetPoint(55.0 + getRandomDistrurbanceFlowRate()); // stream_1.runTransient(1.0); p.runTransient(); - System.out.println( + logger.info( "flow rate " + valve_1.getOutletStream().getFluid().getPhase("gas").getFlowRate("kg/hr") + " controller response " + flowController.getResponse() + " valve opening " + valve_1.getPercentValveOpening() + " pressure " @@ -116,7 +118,7 @@ public void testStaticSimulationWithController() { for (int i = 0; i < 55; i++) { flowController.setControllerSetPoint(75.0 + getRandomDistrurbanceFlowRate()); p.runTransient(); - System.out.println( + logger.info( "flow rate " + valve_1.getOutletStream().getFluid().getPhase("gas").getFlowRate("kg/hr") + " controller response " + flowController.getResponse() + " valve opening " + valve_1.getPercentValveOpening() + " pressure " diff --git a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemRunTransientTest.java b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemRunTransientTest.java index e8d07020b5..dff273bf4b 100644 --- a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemRunTransientTest.java +++ b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemRunTransientTest.java @@ -1,199 +1,774 @@ package neqsim.processSimulation.processSystem; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import neqsim.processSimulation.SimulationInterface; import neqsim.processSimulation.controllerDevice.ControllerDeviceBaseClass; import neqsim.processSimulation.controllerDevice.ControllerDeviceInterface; +import neqsim.processSimulation.measurementDevice.CompressorMonitor; import neqsim.processSimulation.measurementDevice.LevelTransmitter; import neqsim.processSimulation.measurementDevice.PressureTransmitter; import neqsim.processSimulation.measurementDevice.VolumeFlowTransmitter; +import neqsim.processSimulation.processEquipment.compressor.Compressor; +import neqsim.processSimulation.processEquipment.heatExchanger.Cooler; import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.splitter.Splitter; import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.util.Recycle; +import neqsim.processSimulation.processEquipment.util.SetPoint; import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; import neqsim.thermo.system.SystemInterface; -public class ProcessSystemRunTransientTest extends neqsim.NeqSimTest{ - ProcessSystem p; - - @BeforeEach - public void setUp() { - p = new ProcessSystem(); +public class ProcessSystemRunTransientTest extends neqsim.NeqSimTest { + ProcessSystem p; + + @BeforeEach + public void setUp() { + p = new ProcessSystem(); + } + + @Test + public void testGetName() { + String name = "TestProsess"; + p.setName(name); + Assertions.assertEquals(name, p.getName()); + } + + @Test + void testGetTime() {} + + @Test + void testGetTimeStep() {} + + private SystemInterface getTestSystem() { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem.addComponent("methane", 0.900); + testSystem.addComponent("ethane", 0.100); + testSystem.addComponent("n-heptane", 1.00); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + return testSystem; + } + + @Test + public void testDynamicCalculation() { + neqsim.thermo.system.SystemInterface testSystem = getTestSystem(); + + Stream stream1 = new Stream("Stream1", testSystem); + stream1.setFlowRate(50.0, "kg/hr"); + stream1.setPressure(10.0, "bara"); + + ThrottlingValve valve1 = new ThrottlingValve("valve_1", stream1); + valve1.setOutletPressure(5.0); + valve1.setPercentValveOpening(40); + + Separator separator1 = new Separator("sep 1"); + separator1.addStream(valve1.getOutletStream()); + separator1.setInternalDiameter(1.0); + separator1.setSeparatorLength(2.5); + separator1.setLiquidLevel(0.5); + + ThrottlingValve valve2 = new ThrottlingValve("valve_2", separator1.getLiquidOutStream()); + valve2.setOutletPressure(1.0); + valve2.setPercentValveOpening(50); + + ThrottlingValve valve3 = new ThrottlingValve("valve_3", separator1.getGasOutStream()); + valve3.setOutletPressure(1.0); + valve3.setPercentValveOpening(50); + valve3.setMinimumValveOpening(1.0); + + VolumeFlowTransmitter flowTransmitter = new VolumeFlowTransmitter(stream1); + flowTransmitter.setUnit("kg/hr"); + flowTransmitter.setMaximumValue(100.0); + flowTransmitter.setMinimumValue(1.0); + + ControllerDeviceInterface flowController = new ControllerDeviceBaseClass(); + flowController.setTransmitter(flowTransmitter); + flowController.setReverseActing(true); + flowController.setControllerSetPoint(73.5); + flowController.setControllerParameters(0.2, 100.0, 0.0); + + p.add(stream1); + p.add(valve1); + p.add(separator1); + p.add(valve2); + p.add(valve3); + p.add(flowTransmitter); + valve1.setController(flowController); + valve1.setCalculateSteadyState(false); + + p.run(); + + // transient behaviour + p.setTimeStep(20.0); + for (int i = 0; i < 200; i++) { + // System.out.println("volume flow " + flowTransmitter.getMeasuredValue() + " valve opening " + // + valve1.getPercentValveOpening() + " pressure " + // + separator1.getGasOutStream().getPressure()); + p.runTransient(); + for (SimulationInterface sim : p.getUnitOperations()) { + assertEquals(sim.getCalculationIdentifier(), p.getCalculationIdentifier()); + } } - - @Test - public void testGetName() { - String name = "TestProsess"; - p.setName(name); - Assertions.assertEquals(name, p.getName()); + assertEquals(73.5, flowTransmitter.getMeasuredValue(), 1.0); + } + + @Test + public void testDynamicCalculation2() { + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem2.addComponent("methane", 1.1); + testSystem2.addComponent("n-heptane", 1.001); + testSystem2.setMixingRule(2); + + neqsim.thermo.system.SystemInterface testSystem3 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem3.addComponent("methane", 1.1); + testSystem3.addComponent("n-heptane", 0.001); + testSystem3.setMixingRule(2); + + Stream stream1 = new Stream("Stream1", testSystem2); + stream1.setFlowRate(1090.0, "kg/hr"); + stream1.setPressure(10.0, "bara"); + stream1.setTemperature(25.0, "C"); + + Stream streamPurge = new Stream("StreamPurge", testSystem3); + streamPurge.setFlowRate(50.0, "kg/hr"); + streamPurge.setPressure(10.0, "bara"); + streamPurge.setTemperature(25.0, "C"); + + ThrottlingValve valve1 = new ThrottlingValve("valve_1", stream1); + valve1.setOutletPressure(7.0); + valve1.setPercentValveOpening(50); + valve1.setCalculateSteadyState(false); + + ThrottlingValve valvePurge = new ThrottlingValve("valve_purge", streamPurge); + valvePurge.setOutletPressure(7.0); + valvePurge.setPercentValveOpening(50); + valvePurge.setCalculateSteadyState(false); + + Separator separator1 = new Separator("separator_1"); + separator1.addStream(valve1.getOutletStream()); + separator1.addStream(valvePurge.getOutletStream()); + separator1.setCalculateSteadyState(false); + separator1.setSeparatorLength(3.0); + separator1.setInternalDiameter(0.8); + separator1.setLiquidLevel(0.5); + + ThrottlingValve valve2 = new ThrottlingValve("valve_2", separator1.getLiquidOutStream()); + valve2.setOutletPressure(1.0); + valve2.setPercentValveOpening(50); + valve2.setCalculateSteadyState(false); + valve2.setMinimumValveOpening(1.0); + + ThrottlingValve valve3 = new ThrottlingValve("valve_3", separator1.getGasOutStream()); + valve3.setOutletPressure(1.0); + valve3.setPercentValveOpening(10); + valve3.setCalculateSteadyState(false); + valve3.setMinimumValveOpening(1.0); + + LevelTransmitter separatorLevelTransmitter = new LevelTransmitter(separator1); + separatorLevelTransmitter.setName("separatorLevelTransmitter1"); + separatorLevelTransmitter.setMaximumValue(0.8); + separatorLevelTransmitter.setMinimumValue(0.2); + + ControllerDeviceInterface separatorLevelController = new ControllerDeviceBaseClass(); + separatorLevelController.setReverseActing(false); + separatorLevelController.setTransmitter(separatorLevelTransmitter); + separatorLevelController.setControllerSetPoint(0.45); + separatorLevelController.setControllerParameters(2.0, 500.0, 0.0); + + PressureTransmitter separatorPressureTransmitter = + new PressureTransmitter(separator1.getGasOutStream()); + separatorPressureTransmitter.setUnit("bar"); + separatorPressureTransmitter.setMaximumValue(10.0); + separatorPressureTransmitter.setMinimumValue(1.0); + + ControllerDeviceInterface separatorPressureController = new ControllerDeviceBaseClass(); + separatorPressureController.setTransmitter(separatorPressureTransmitter); + separatorPressureController.setReverseActing(false); + separatorPressureController.setControllerSetPoint(7.0); + separatorPressureController.setControllerParameters(1, 100, 0.0); + + p.add(stream1); + p.add(streamPurge); + p.add(valve1); + p.add(valvePurge); + p.add(separator1); + p.add(valve2); + p.add(valve3); + + // add transmitters + p.add(separatorLevelTransmitter); + valve2.setController(separatorLevelController); + + p.add(separatorPressureTransmitter); + valve3.setController(separatorPressureController); + + p.run(); + for (SimulationInterface sim : p.getUnitOperations()) { + assertEquals(sim.getCalculationIdentifier(), p.getCalculationIdentifier()); } - @Test - void testGetTime() { - + // p.displayResult(); + p.setTimeStep(10.0); + for (int i = 0; i < 250; i++) { + // System.out.println("pressure " + separator1.getGasOutStream().getPressure() + " flow " + // + separator1.getGasOutStream().getFlowRate("kg/hr") + " sepr height " + // + separatorLevelTransmitter.getMeasuredValue() + "valve2 opening " + // + valve2.getPercentValveOpening() + "valve3 opening " + valve3.getPercentValveOpening()); + p.runTransient(); + for (SimulationInterface sim : p.getUnitOperations()) { + assertEquals(p.getCalculationIdentifier(), sim.getCalculationIdentifier()); + } } - - @Test - void testGetTimeStep() { - + assertEquals(0.45, separatorLevelTransmitter.getMeasuredValue(), 0.01); + } + + @Test + public void testDynamicCompressor() { + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem2.addComponent("methane", 1.1); + testSystem2.addComponent("ethane", 0.1); + testSystem2.setMixingRule(2); + + Stream stream1 = new Stream("Stream1", testSystem2); + stream1.setFlowRate(501.0, "kg/hr"); + stream1.setPressure(100.0, "bara"); + stream1.setTemperature(55.0, "C"); + + ThrottlingValve valve1 = new ThrottlingValve("valve_1", stream1); + valve1.setOutletPressure(50.0); + valve1.setPercentValveOpening(50); + valve1.setCalculateSteadyState(false); + + Separator separator1 = new Separator("separator_1"); + separator1.addStream(valve1.getOutletStream()); + separator1.setCalculateSteadyState(false); + separator1.setSeparatorLength(3.0); + separator1.setInternalDiameter(0.8); + separator1.setLiquidLevel(0.0); + + Compressor compressor1 = new Compressor("comp1", separator1.getGasOutStream()); + compressor1.setCalculateSteadyState(false); + compressor1.setOutletPressure(100.0); + + Separator separator2 = new Separator("separator_2"); + separator2.addStream(compressor1.getOutletStream()); + separator2.setCalculateSteadyState(false); + separator2.setSeparatorLength(3.0); + separator2.setInternalDiameter(0.8); + separator2.setLiquidLevel(0.0); + + ThrottlingValve valve2 = new ThrottlingValve("valve_2", separator2.getGasOutStream()); + valve2.setOutletPressure(50.0); + valve2.setPercentValveOpening(50); + valve2.setCalculateSteadyState(false); + + p.add(stream1); + p.add(valve1); + p.add(separator1); + p.add(compressor1); + p.add(separator2); + p.add(valve2); + + p.run(); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + assertEquals(100.0, compressor1.getOutletStream().getPressure(), 0.01); + + neqsim.processSimulation.processEquipment.compressor.CompressorChartGenerator compchartgenerator = + new neqsim.processSimulation.processEquipment.compressor.CompressorChartGenerator( + compressor1); + compressor1.setCompressorChart(compchartgenerator.generateCompressorChart("normal")); + compressor1.getCompressorChart().setUseCompressorChart(true); + // compressor1.setCalculateSteadyState(true); + p.run(); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + + assertEquals(102.7, compressor1.getOutletStream().getPressure(), 2.01); + assertEquals(50.0, separator1.getGasOutStream().getPressure(), 0.01); + // System.out.println("speed " + compressor1.getSpeed()); + p.setTimeStep(10.0); + p.runTransient(); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + compressor1.setSpeed(compressor1.getSpeed() + 500); + for (int i = 0; i < 2000; i++) { + /* + * System.out.println("time " + i + " speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + * + " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + p.runTransient(); } - private SystemInterface getTestSystem() { - neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); - testSystem.addComponent("methane", 0.900); - testSystem.addComponent("ethane", 0.100); - testSystem.addComponent("n-heptane", 1.00); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - return testSystem; + compressor1.setSpeed(compressor1.getSpeed() - 500); + for (int i = 0; i < 2000; i++) { + /* + * System.out.println("time " + i + " speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + * + " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + p.runTransient(); + } + } + + @Test + public void testDynamicCompressor22() { + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem2.addComponent("methane", 1.1); + testSystem2.addComponent("ethane", 0.1); + testSystem2.setMixingRule(2); + + Stream stream1 = new Stream("Stream1", testSystem2); + stream1.setFlowRate(501.0, "kg/hr"); + stream1.setPressure(100.0, "bara"); + stream1.setTemperature(55.0, "C"); + + ThrottlingValve valve1 = new ThrottlingValve("valve_1", stream1); + valve1.setOutletPressure(50.0); + valve1.setPercentValveOpening(50); + valve1.setCalculateSteadyState(false); + + Compressor compressor1 = new Compressor("comp", valve1.getOutletStream()); + compressor1.setCalculateSteadyState(false); + compressor1.setOutletPressure(100.0); + + ThrottlingValve valve2 = new ThrottlingValve("valve_2", compressor1.getOutletStream()); + valve2.setOutletPressure(50.0); + valve2.setPercentValveOpening(50); + valve2.setCalculateSteadyState(false); + + p.add(stream1); + p.add(valve1); + p.add(compressor1); + p.add(valve2); + + p.run(); + /* + * System.out.println(" steady staate no compressor curves....."); System.out.println(" speed " + * + compressor1.getSpeed() + "feed flow " + stream1.getFlowRate("kg/hr") + + * " compressor flow rate " + compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + assertEquals(100.0, compressor1.getOutletStream().getPressure(), 0.01); + + // System.out.println("steady state with compressor curves....."); + neqsim.processSimulation.processEquipment.compressor.CompressorChartGenerator compchartgenerator = + new neqsim.processSimulation.processEquipment.compressor.CompressorChartGenerator( + compressor1); + compressor1.setCompressorChart(compchartgenerator.generateCompressorChart("normal")); + compressor1.getCompressorChart().setUseCompressorChart(true); + // compressor1.setCalculateSteadyState(true); + p.run(); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + + // System.out.println("dynamic first step state with compressor curves....."); + p.setTimeStep(1.0); + p.runTransient(); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + + // System.out.println("dynamic seccond step state with compressor curves....."); + p.runTransient(); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + } + + @Test + public void testDynamicCompressorSpeedControl() { + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem2.addComponent("methane", 1.1); + testSystem2.addComponent("ethane", 0.1); + testSystem2.setMixingRule(2); + + Stream stream1 = new Stream("Stream1", testSystem2); + stream1.setFlowRate(501.0, "kg/hr"); + stream1.setPressure(100.0, "bara"); + stream1.setTemperature(55.0, "C"); + + ThrottlingValve valve1 = new ThrottlingValve("valve_1", stream1); + valve1.setOutletPressure(50.0); + valve1.setPercentValveOpening(50); + valve1.setCalculateSteadyState(false); + + Separator separator1 = new Separator("separator_1"); + separator1.addStream(valve1.getOutletStream()); + separator1.setCalculateSteadyState(false); + separator1.setSeparatorLength(3.0); + separator1.setInternalDiameter(0.8); + separator1.setLiquidLevel(0.0); + + Compressor compressor1 = new Compressor("comp1", separator1.getGasOutStream()); + compressor1.setCalculateSteadyState(false); + compressor1.setOutletPressure(100.0); + + Separator separator2 = new Separator("separator_2"); + separator2.addStream(compressor1.getOutletStream()); + separator2.setCalculateSteadyState(false); + separator2.setSeparatorLength(3.0); + separator2.setInternalDiameter(0.8); + separator2.setLiquidLevel(0.0); + + ThrottlingValve valve2 = new ThrottlingValve("valve_2", separator2.getGasOutStream()); + valve2.setOutletPressure(50.0); + valve2.setPercentValveOpening(50); + valve2.setCalculateSteadyState(false); + + PressureTransmitter separatorPressureTransmitter = + new PressureTransmitter(separator2.getGasOutStream()); + + ControllerDeviceInterface speedController = new ControllerDeviceBaseClass(); + speedController.setReverseActing(true); + speedController.setTransmitter(separatorPressureTransmitter); + speedController.setControllerSetPoint(100.0); + speedController.setControllerParameters(0.1, 500.0, 0.0); + + p.add(stream1); + p.add(valve1); + p.add(separator1); + p.add(compressor1); + p.add(separator2); + p.add(separatorPressureTransmitter); + p.add(valve2); + compressor1.setController(speedController); + + p.run(); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + assertEquals(100.0, compressor1.getOutletStream().getPressure(), 0.01); + + neqsim.processSimulation.processEquipment.compressor.CompressorChartGenerator compchartgenerator = + new neqsim.processSimulation.processEquipment.compressor.CompressorChartGenerator( + compressor1); + compressor1.setCompressorChart(compchartgenerator.generateCompressorChart("normal")); + compressor1.getCompressorChart().setUseCompressorChart(true); + // compressor1.setCalculateSteadyState(true); + p.run(); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + + assertEquals(102.7, compressor1.getOutletStream().getPressure(), 2.01); + assertEquals(50.0, separator1.getGasOutStream().getPressure(), 0.01); + // System.out.println("speed " + compressor1.getSpeed()); + p.setTimeStep(10.0); + p.runTransient(); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + // compressor1.setSpeed(compressor1.getSpeed() + 500); + for (int i = 0; i < 200; i++) { + /* + * System.out.println("time " + i + " speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + * + " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + p.runTransient(); + } + speedController.setControllerSetPoint(120.0); + for (int i = 0; i < 500; i++) { + /* + * System.out.println("time " + i + " speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + * + " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure()); + */ + p.runTransient(); + } + } + + @Test + public void testAntiSurgeControl() { + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem2.addComponent("methane", 1.1); + testSystem2.addComponent("ethane", 0.1); + testSystem2.setMixingRule(2); + + Stream stream1 = new Stream("Stream1", testSystem2); + stream1.setFlowRate(500.0, "kg/hr"); + stream1.setPressure(100.0, "bara"); + stream1.setTemperature(55.0, "C"); + + ThrottlingValve valve1 = new ThrottlingValve("valve_1", stream1); + valve1.setOutletPressure(50.0); + valve1.setPercentValveOpening(20); + valve1.setCalculateSteadyState(false); + + Stream resycstream = stream1.clone(); + resycstream.setFlowRate(0.01, "kg/hr"); + + Separator separator1 = new Separator("separator_1"); + separator1.addStream(valve1.getOutletStream()); + separator1.addStream(resycstream); + separator1.setCalculateSteadyState(false); + separator1.setSeparatorLength(3.0); + separator1.setInternalDiameter(0.8); + separator1.setLiquidLevel(0.0); + + Compressor compressor1 = new Compressor("comp", separator1.getGasOutStream()); + compressor1.setCalculateSteadyState(false); + compressor1.setOutletPressure(100.0); + CompressorMonitor surgemonitor = new CompressorMonitor(compressor1); + surgemonitor.setMaximumValue(5.0); + surgemonitor.setMinimumValue(-5.0); + + Cooler aftercooler = new Cooler("after cooler", compressor1.getOutletStream()); + aftercooler.setOutTemperature(30.0, "C"); + aftercooler.setCalculateSteadyState(false); + + Separator separator2 = new Separator("separator_2"); + separator2.addStream(aftercooler.getOutletStream()); + separator2.setCalculateSteadyState(false); + separator2.setSeparatorLength(3.0); + separator2.setInternalDiameter(0.5); + separator2.setLiquidLevel(0.0); + + Stream gasfromsep2 = new Stream("gas from sep", separator2.getGasOutStream()); + + Splitter splitter = new Splitter("splitter1", gasfromsep2); + splitter.setSplitFactors(new double[] {0.99, 0.01}); + splitter.setCalculateSteadyState(false); + + ThrottlingValve recycleValve = + new ThrottlingValve("anti surge valve", splitter.getSplitStream(1)); + recycleValve.setPressure(50.0); + recycleValve.setCalculateSteadyState(false); + recycleValve.setMinimumValveOpening(1.0); + recycleValve.setPercentValveOpening(10); + + SetPoint pressureset = + new SetPoint("HP pump set", recycleValve, "pressure", separator1.getGasOutStream()); + + Recycle recycle = new Recycle("resycle 1"); + recycle.addStream(recycleValve.getOutletStream()); + recycle.setOutletStream(resycstream); + recycle.setFlowAccuracy(1e-4); + + ThrottlingValve valve2 = new ThrottlingValve("valve_2", splitter.getSplitStream(0)); + valve2.setOutletPressure(50.0); + valve2.setPercentValveOpening(50); + valve2.setCalculateSteadyState(false); + valve2.setMinimumValveOpening(1.0); + + ControllerDeviceInterface surgeController = new ControllerDeviceBaseClass(); + surgeController.setReverseActing(true); + surgeController.setTransmitter(surgemonitor); + surgeController.setControllerSetPoint(0.0); + surgeController.setControllerParameters(1.0, 200.0, 10.0); + surgeController.setActive(true); + + p.add(stream1); + p.add(resycstream); + p.add(valve1); + p.add(separator1); + p.add(compressor1); + p.add(surgemonitor); + p.add(aftercooler); + p.add(separator2); + p.add(gasfromsep2); + p.add(splitter); + p.add(recycleValve); + p.add(pressureset); + p.add(recycle); + p.add(valve2); + recycleValve.setController(surgeController); + + p.run(); + assertEquals(100.0, compressor1.getOutletStream().getPressure(), 0.01); + recycleValve.setCv(valve2.getCv()); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure() + " distancetosurge "); + */ + neqsim.processSimulation.processEquipment.compressor.CompressorChartGenerator compchartgenerator = + new neqsim.processSimulation.processEquipment.compressor.CompressorChartGenerator( + compressor1); + compressor1.setCompressorChart(compchartgenerator.generateCompressorChart("normal")); + compressor1.getCompressorChart().setUseCompressorChart(true); + p.run(); + /* + * System.out.println(" speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + + * " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure() + " distancetosurge " + + * surgemonitor.getMeasuredValue("distance to surge") + " antisurgeflow " + + * recycleValve.getOutletStream().getFlowRate("kg/hr") + " antisurgevalveopening " + + * recycleValve.getPercentValveOpening() + " compressorouttemperature " + + * compressor1.getOutStream().getTemperature("C") + " power " + compressor1.getPower("kW")); + */ + + // System.out.println("speed " + compressor1.getSpeed()); + p.setTimeStep(1.0); + + recycleValve.setPercentValveOpening(1.0); + valve2.setPercentValveOpening(100.0); + + for (int i = 0; i < 100; i++) { + /* + * System.out.println("time " + i + " speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + * + " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure() + " distancetosurge " + + * surgemonitor.getMeasuredValue("distance to surge") + " antisurgeflow " + + * recycleValve.getOutletStream().getFlowRate("kg/hr") + " antisurgevalveopening " + + * recycleValve.getPercentValveOpening() + " compressorouttemperature " + + * compressor1.getOutStream().getTemperature("C") + " surgeflow " + + * compressor1.getCompressorChart().getSurgeCurve() + * .getSurgeFlow(compressor1.getPolytropicFluidHead()) + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("m3/hr") + " fluid head " + + * compressor1.getPolytropicFluidHead() + " power " + compressor1.getPower("kW")); + */ + p.runTransient(); } - // @Test - public void testDynamicCalculation() { - neqsim.thermo.system.SystemInterface testSystem = getTestSystem(); - - Stream stream_1 = new Stream("Stream1", testSystem); - stream_1.setFlowRate(50.0, "kg/hr"); - stream_1.setPressure(10.0, "bara"); - - ThrottlingValve valve_1 = new ThrottlingValve("valve_1", stream_1); - valve_1.setOutletPressure(5.0); - valve_1.setPercentValveOpening(50); - - Separator separator_1 = new Separator("sep 1"); - separator_1.addStream(valve_1.getOutletStream()); - - ThrottlingValve valve_2 = new ThrottlingValve("valve_2", separator_1.getLiquidOutStream()); - valve_2.setOutletPressure(1.0); - valve_2.setPercentValveOpening(50); - - ThrottlingValve valve_3 = new ThrottlingValve("valve_3", separator_1.getGasOutStream()); - valve_3.setOutletPressure(1.0); - valve_3.setPercentValveOpening(50); - - VolumeFlowTransmitter flowTransmitter = new VolumeFlowTransmitter(stream_1); - flowTransmitter.setUnit("kg/hr"); - flowTransmitter.setMaximumValue(100.0); - flowTransmitter.setMinimumValue(1.0); - - ControllerDeviceInterface flowController = new ControllerDeviceBaseClass(); - flowController.setTransmitter(flowTransmitter); - flowController.setReverseActing(true); - flowController.setControllerSetPoint(63.5); - flowController.setControllerParameters(0.1, 0.10, 0.0); - - p.add(stream_1); - p.add(valve_1); - p.add(separator_1); - p.add(valve_2); - p.add(valve_3); - p.add(flowTransmitter); - valve_1.setController(flowController); - - p.run(); - - // transient behaviour - p.setTimeStep(1.0); - for (int i = 0; i < 5; i++) { - // System.out.println("volume flow " + flowTransmitter.getMeasuredValue() - // + " valve opening " + valve_1.getPercentValveOpening() + " pressure " - // + separator_1.getGasOutStream().getPressure()); - p.runTransient(); - } + valve1.setPercentValveOpening(1.0); + valve2.setPercentValveOpening(1.0); + + for (int i = 0; i < 100; i++) { + /* + * System.out.println("time " + i + " speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + * + " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure() + " distancetosurge " + + * surgemonitor.getMeasuredValue("distance to surge") + " antisurgeflow " + + * recycleValve.getOutletStream().getFlowRate("kg/hr") + " antisurgevalveopening " + + * recycleValve.getPercentValveOpening() + " compressorouttemperature " + + * compressor1.getOutStream().getTemperature("C") + " surgeflow " + + * compressor1.getCompressorChart().getSurgeCurve() + * .getSurgeFlow(compressor1.getPolytropicFluidHead()) + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("m3/hr") + " fluid head " + + * compressor1.getPolytropicFluidHead() + " power " + compressor1.getPower("kW")); + */ + p.runTransient(); } - @Test - public void testDynamicCalculation2() { - - neqsim.thermo.system.SystemInterface testSystem = getTestSystem(); - - neqsim.thermo.system.SystemInterface testSystem2 = new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), - 10.00); - testSystem2.addComponent("methane", 1.1); - testSystem2.addComponent("ethane", 0.10001); - testSystem2.addComponent("n-heptane", 1.001); - testSystem2.setMixingRule(2); - - Stream purgeStream = new Stream("Purge Stream", testSystem2); - ThrottlingValve purgeValve = new ThrottlingValve("purgeValve", purgeStream); - purgeValve.setOutletPressure(7.0); - purgeValve.setPercentValveOpening(50.0); - - Stream stream_1 = new Stream("Stream1", testSystem); - stream_1.setCalculateSteadyState(false); - ThrottlingValve valve_1 = new ThrottlingValve("valve_1", stream_1); - valve_1.setOutletPressure(7.0); - valve_1.setPercentValveOpening(50); - - Separator separator_1 = new Separator("separator_1"); - separator_1.addStream(valve_1.getOutletStream()); - separator_1.addStream(purgeValve.getOutletStream()); - separator_1.setCalculateSteadyState(true); - - ThrottlingValve valve_2 = new ThrottlingValve("valve_2", separator_1.getLiquidOutStream()); - valve_2.setOutletPressure(5.0); - valve_2.setPercentValveOpening(50); - valve_2.setCalculateSteadyState(true); - // valve_2.setCv(10.0); - - ThrottlingValve valve_3 = new ThrottlingValve("valve_3", separator_1.getGasOutStream()); - valve_3.setOutletPressure(5.0); - valve_3.setPercentValveOpening(50); - valve_3.setCalculateSteadyState(true); - // valve_3.setCv(10.0); - - LevelTransmitter separatorLevelTransmitter = new LevelTransmitter(separator_1); - separatorLevelTransmitter.setName("separatorLevelTransmitter1"); - separatorLevelTransmitter.setUnit("meter"); - separatorLevelTransmitter.setMaximumValue(1.0); - separatorLevelTransmitter.setMinimumValue(0.0); - - ControllerDeviceInterface separatorLevelController = new ControllerDeviceBaseClass(); - separatorLevelController.setReverseActing(true); - separatorLevelController.setTransmitter(separatorLevelTransmitter); - separatorLevelController.setControllerSetPoint(0.3); - separatorLevelController.setControllerParameters(1, 1000.0, 0.0); - - PressureTransmitter separatorPressureTransmitter = new PressureTransmitter(separator_1.getGasOutStream()); - separatorPressureTransmitter.setUnit("bar"); - separatorPressureTransmitter.setMaximumValue(10.0); - separatorPressureTransmitter.setMinimumValue(1.0); - - ControllerDeviceInterface separatorPressureController = new ControllerDeviceBaseClass(); - separatorPressureController.setTransmitter(separatorPressureTransmitter); - separatorPressureController.setReverseActing(false); - separatorPressureController.setControllerSetPoint(7.0); - separatorPressureController.setControllerParameters(0.5, 10.0, 0.0); - - p.add(stream_1); - p.add(valve_1); - - p.add(purgeStream); - p.add(purgeValve); - p.add(separator_1); - p.add(valve_2); - p.add(valve_3); - - // add transmitters - p.add(separatorLevelTransmitter); - valve_2.setController(separatorLevelController); - - p.add(separatorPressureTransmitter); - valve_3.setController(separatorPressureController); - - p.run(); - // p.displayResult(); - p.setTimeStep(0.01); - for(int i=0;i<500;i++) { - //System.out.println("pressure "+separator_1.getGasOutStream().getPressure()+ " flow "+ separator_1.getGasOutStream().getFlowRate("kg/hr") + " sepr height "+separatorLevelTransmitter.getMeasuredValue()); - p.runTransient(); - } - - valve_1.setPercentValveOpening(60); - - for(int i=0;i<10;i++) { - // System.out.println("pressure "+separator_1.getGasOutStream().getPressure()+ " flow "+ separator_1.getGasOutStream().getFlowRate("kg/hr")); - p.runTransient(); - } + valve1.setPercentValveOpening(50.0); + valve2.setPercentValveOpening(50.0); + + for (int i = 0; i < 100; i++) { + /* + * System.out.println("time " + i + " speed " + compressor1.getSpeed() + "feed flow " + + * stream1.getFlowRate("kg/hr") + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("kg/hr") + " out flow " + + * valve2.getOutletStream().getFlowRate("kg/hr") + " delta p " + + * (compressor1.getOutletStream().getPressure() - compressor1.getInletStream().getPressure()) + * + " pres inn " + compressor1.getInletStream().getPressure() + " pres out " + + * compressor1.getOutletStream().getPressure() + " distancetosurge " + + * surgemonitor.getMeasuredValue("distance to surge") + " antisurgeflow " + + * recycleValve.getOutletStream().getFlowRate("kg/hr") + " antisurgevalveopening " + + * recycleValve.getPercentValveOpening() + " compressorouttemperature " + + * compressor1.getOutStream().getTemperature("C") + " surgeflow " + + * compressor1.getCompressorChart().getSurgeCurve() + * .getSurgeFlow(compressor1.getPolytropicFluidHead()) + " compressor flow rate " + + * compressor1.getInletStream().getFlowRate("m3/hr") + " fluid head " + + * compressor1.getPolytropicFluidHead() + " power " + compressor1.getPower("kW")); + */ + + p.runTransient(); } + } } diff --git a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemSerializationTest.java b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemSerializationTest.java new file mode 100644 index 0000000000..dbf625cf4c --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemSerializationTest.java @@ -0,0 +1,344 @@ +package neqsim.processSimulation.processSystem; + +import org.junit.jupiter.api.Test; +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.security.AnyTypePermission; +import neqsim.processSimulation.measurementDevice.HydrateEquilibriumTemperatureAnalyser; +import neqsim.processSimulation.measurementDevice.WaterDewPointAnalyser; +import neqsim.processSimulation.processEquipment.absorber.SimpleTEGAbsorber; +import neqsim.processSimulation.processEquipment.absorber.WaterStripperColumn; +import neqsim.processSimulation.processEquipment.distillation.DistillationColumn; +import neqsim.processSimulation.processEquipment.filter.Filter; +import neqsim.processSimulation.processEquipment.heatExchanger.HeatExchanger; +import neqsim.processSimulation.processEquipment.heatExchanger.Heater; +import neqsim.processSimulation.processEquipment.mixer.StaticMixer; +import neqsim.processSimulation.processEquipment.pump.Pump; +import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.splitter.Splitter; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.util.Calculator; +import neqsim.processSimulation.processEquipment.util.Recycle; +import neqsim.processSimulation.processEquipment.util.StreamSaturatorUtil; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; + +public class ProcessSystemSerializationTest extends neqsim.NeqSimTest { + @Test + public void runTEGProcessTest2() { + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + feedGas.addComponent("nitrogen", 0.245); + feedGas.addComponent("CO2", 3.4); + feedGas.addComponent("methane", 85.7); + feedGas.addComponent("ethane", 5.981); + feedGas.addComponent("propane", 0.2743); + feedGas.addComponent("i-butane", 0.037); + feedGas.addComponent("n-butane", 0.077); + feedGas.addComponent("i-pentane", 0.0142); + feedGas.addComponent("n-pentane", 0.0166); + feedGas.addComponent("n-hexane", 0.006); + feedGas.addComponent("benzene", 0.001); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("TEG", 0); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(false); + feedGas.init(0); + + Stream dryFeedGasSmorbukk = new Stream("dry feed gas Smorbukk", feedGas); + dryFeedGasSmorbukk.setFlowRate(10.0, "MSm3/day"); + dryFeedGasSmorbukk.setTemperature(25.0, "C"); + dryFeedGasSmorbukk.setPressure(40.0, "bara"); + + StreamSaturatorUtil saturatedFeedGasSmorbukk = + new StreamSaturatorUtil("water saturator Smorbukk", dryFeedGasSmorbukk); + + Stream waterSaturatedFeedGasSmorbukk = + new Stream("water saturated feed gas Smorbukk", saturatedFeedGasSmorbukk.getOutletStream()); + + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyserSmorbukk = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGasSmorbukk); + hydrateTAnalyserSmorbukk.setName("hydrate temperature analyser Smorbukk"); + + Splitter SmorbukkSplit = new Splitter("Smorbukk Splitter", waterSaturatedFeedGasSmorbukk); + double[] splitSmorbukk = {1.0 - 1e-10, 1e-10}; + SmorbukkSplit.setSplitFactors(splitSmorbukk); + + Stream dryFeedGasMidgard = new Stream("dry feed gas Midgard201", feedGas.clone()); + dryFeedGasMidgard.setFlowRate(10, "MSm3/day"); + dryFeedGasMidgard.setTemperature(5, "C"); + dryFeedGasMidgard.setPressure(40.0, "bara"); + + StreamSaturatorUtil saturatedFeedGasMidgard = + new StreamSaturatorUtil("water saturator Midgard", dryFeedGasMidgard); + + Stream waterSaturatedFeedGasMidgard = + new Stream("water saturated feed gas Midgard", saturatedFeedGasMidgard.getOutletStream()); + + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyserMidgard = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGasMidgard); + hydrateTAnalyserMidgard.setName("hydrate temperature analyser Midgard"); + + Splitter MidgardSplit = new Splitter("Midgard Splitter", waterSaturatedFeedGasMidgard); + double[] splitMidgard = {1e-10, 1 - 1e-10}; + MidgardSplit.setSplitFactors(splitMidgard); + + StaticMixer TrainB = new StaticMixer("mixer TrainB"); + TrainB.addStream(SmorbukkSplit.getSplitStream(1)); + TrainB.addStream(MidgardSplit.getSplitStream(1)); + + Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", TrainB.getOutletStream()); + feedTPsetterToAbsorber.setOutPressure(40.0, "bara"); + feedTPsetterToAbsorber.setOutTemperature(37.0, "C"); + + Stream feedToAbsorber = + new Stream("feed to TEG absorber", feedTPsetterToAbsorber.getOutletStream()); + + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser2 = + new HydrateEquilibriumTemperatureAnalyser(feedToAbsorber); + hydrateTAnalyser2.setName("hydrate temperature gas to absorber"); + + WaterDewPointAnalyser waterDewPointAnalyserToAbsorber = + new WaterDewPointAnalyser(feedToAbsorber); + waterDewPointAnalyserToAbsorber.setMethod("multiphase"); + waterDewPointAnalyserToAbsorber.setReferencePressure(40.0); + waterDewPointAnalyserToAbsorber.setName("water dew point gas to absorber"); + + neqsim.thermo.system.SystemInterface feedTEG = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + feedTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.99}); + + Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); + TEGFeed.setFlowRate(8000.0, "kg/hr"); + TEGFeed.setTemperature(40.0, "C"); + TEGFeed.setPressure(40.0, "bara"); + + SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); + absorber.addGasInStream(feedToAbsorber); + absorber.addSolventInStream(TEGFeed); + absorber.setNumberOfStages(4); + absorber.setStageEfficiency(0.8); + absorber.setInternalDiameter(2.240); + + Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); + + Stream richTEG = new Stream("rich TEG from absorber", absorber.getLiquidOutStream()); + + HydrateEquilibriumTemperatureAnalyser waterDewPointAnalyser = + new HydrateEquilibriumTemperatureAnalyser(dehydratedGas); + waterDewPointAnalyser.setReferencePressure(70.0); + waterDewPointAnalyser.setName("hydrate dew point analyser"); + + WaterDewPointAnalyser waterDewPointAnalyser2 = new WaterDewPointAnalyser(dehydratedGas); + waterDewPointAnalyser2.setReferencePressure(70.0); + waterDewPointAnalyser2.setName("water dew point analyser"); + + Heater condHeat = new Heater("Condenser heat exchanger", richTEG); + + ThrottlingValve glycol_flash_valve = + new ThrottlingValve("Rich TEG HP flash valve", condHeat.getOutletStream()); + glycol_flash_valve.setOutletPressure(7.0); + + HeatExchanger heatEx2 = + new HeatExchanger("rich TEG heat exchanger 1", glycol_flash_valve.getOutletStream()); + heatEx2.setGuessOutTemperature(273.15 + 90.0); + heatEx2.setUAvalue(1450.0); + + neqsim.thermo.system.SystemInterface feedWater = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + feedWater.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}); + + double addedWaterRate = 0.0; + Stream waterFeed = new Stream("lean TEG to absorber", feedWater); + waterFeed.setFlowRate(addedWaterRate, "kg/hr"); + waterFeed.setTemperature(90.0, "C"); + waterFeed.setPressure(7.0, "bara"); + + Separator flashSep = new Separator("degassing separator", heatEx2.getOutStream(0)); + if (addedWaterRate > 0) { + flashSep.addStream(waterFeed); + } + flashSep.setInternalDiameter(1.2); + + Stream flashGas = new Stream("gas from degassing separator", flashSep.getGasOutStream()); + + Stream flashLiquid = + new Stream("liquid from degassing separator", flashSep.getLiquidOutStream()); + + Filter filter = new Filter("TEG fine filter", flashLiquid); + filter.setDeltaP(0.0, "bara"); + + HeatExchanger heatEx = + new HeatExchanger("lean/rich TEG heat-exchanger", filter.getOutletStream()); + heatEx.setGuessOutTemperature(273.15 + 140.0); + heatEx.setUAvalue(9140.0); + + double reboilerPressure = 1.4; + double condenserPressure = 1.2; + double feedPressureGLycol = (reboilerPressure + condenserPressure) / 2.0; // enters middle of + // column + double feedPressureStripGas = (reboilerPressure + condenserPressure) / 2.0; // enters middle of + // column + + ThrottlingValve glycol_flash_valve2 = + new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); + glycol_flash_valve2.setName("Rich TEG LP flash valve"); + glycol_flash_valve2.setOutletPressure(feedPressureGLycol); + + neqsim.thermo.system.SystemInterface stripGas = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + stripGas.setMolarComposition( + new double[] {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}); + + Stream strippingGas = new Stream("stripGas", stripGas); + strippingGas.setFlowRate(250.0 * 0.8, "kg/hr"); + strippingGas.setTemperature(180.0, "C"); + strippingGas.setPressure(feedPressureStripGas, "bara"); + + Stream gasToReboiler = (Stream) strippingGas.clone(); + gasToReboiler.setName("gas to reboiler"); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(glycol_flash_valve2.getOutletStream(), 1); + column.getReboiler().setOutTemperature(273.15 + 202.0); + column.getCondenser().setOutTemperature(273.15 + 89.0); + column.getTray(1).addStream(gasToReboiler); + column.setTopPressure(condenserPressure); + column.setBottomPressure(reboilerPressure); + column.setInternalDiameter(0.56); + + Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); + coolerRegenGas.setOutTemperature(273.15 + 15.0); + + Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); + Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); + Stream liquidToTrreatment = new Stream("water to treatment", sepregenGas.getLiquidOutStream()); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addSolventInStream(column.getLiquidOutStream()); + stripper.addGasInStream(strippingGas); + stripper.setNumberOfStages(3); + stripper.setStageEfficiency(0.8); + + Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); + recycleGasFromStripper.addStream(stripper.getGasOutStream()); + recycleGasFromStripper.setOutletStream(gasToReboiler); + + neqsim.thermo.system.SystemInterface pureTEG = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + pureTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); + + heatEx.setFeedStream(1, stripper.getLiquidOutStream()); + heatEx2.setFeedStream(1, heatEx.getOutStream(1)); + + Pump hotLeanTEGPump = new Pump("lean TEG LP pump", heatEx2.getOutStream(1)); + hotLeanTEGPump.setOutletPressure(40.0); + hotLeanTEGPump.setIsentropicEfficiency(0.9); + + Stream makeupTEG = new Stream("makeup TEG", pureTEG); + makeupTEG.setFlowRate(1e-6, "kg/hr"); + makeupTEG.setTemperature(100.0, "C"); + makeupTEG.setPressure(40.0, "bara"); + + Calculator makeupCalculator = new Calculator("TEG makeup calculator"); + makeupCalculator.addInputVariable(dehydratedGas); + makeupCalculator.addInputVariable(flashGas); + makeupCalculator.addInputVariable(gasToFlare); + makeupCalculator.addInputVariable(liquidToTrreatment); + makeupCalculator.setOutputVariable(makeupTEG); + + StaticMixer makeupMixer = new StaticMixer("makeup mixer"); + makeupMixer.addStream(hotLeanTEGPump.getOutletStream()); + // makeupMixer.addStream(makeupTEG); + + Heater coolerhOTteg3 = new Heater("lean TEG cooler", makeupMixer.getOutletStream()); + coolerhOTteg3.setOutTemperature(273.15 + 40.0); + + condHeat.setEnergyStream(column.getCondenser().getEnergyStream()); + + Stream leanTEGtoabs = new Stream("lean TEG to absorber", coolerhOTteg3.getOutletStream()); + + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); + resycleLeanTEG.addStream(leanTEGtoabs); + resycleLeanTEG.setOutletStream(TEGFeed); + resycleLeanTEG.setPriority(200); + resycleLeanTEG.setDownstreamProperty("flow rate"); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(dryFeedGasSmorbukk); + operations.add(saturatedFeedGasSmorbukk); + operations.add(waterSaturatedFeedGasSmorbukk); + operations.add(hydrateTAnalyserSmorbukk); + operations.add(SmorbukkSplit); + + operations.add(dryFeedGasMidgard); + operations.add(saturatedFeedGasMidgard); + operations.add(waterSaturatedFeedGasMidgard); + operations.add(hydrateTAnalyserMidgard); + + operations.add(MidgardSplit); + + operations.add(TrainB); + + operations.add(feedTPsetterToAbsorber); + operations.add(feedToAbsorber); + operations.add(hydrateTAnalyser2); + operations.add(waterDewPointAnalyserToAbsorber); + operations.add(TEGFeed); + operations.add(absorber); + operations.add(dehydratedGas); + operations.add(richTEG); + operations.add(waterDewPointAnalyser); + operations.add(waterDewPointAnalyser2); + + operations.add(condHeat); + + operations.add(glycol_flash_valve); + operations.add(heatEx2); + operations.add(waterFeed); + operations.add(flashSep); + operations.add(flashGas); + operations.add(flashLiquid); + + operations.add(filter); + operations.add(heatEx); + operations.add(glycol_flash_valve2); + operations.add(strippingGas); + + operations.add(gasToReboiler); + operations.add(column); + + operations.add(coolerRegenGas); + operations.add(sepregenGas); + operations.add(gasToFlare); + operations.add(liquidToTrreatment); + + operations.add(stripper); + operations.add(recycleGasFromStripper); + + operations.add(hotLeanTEGPump); + operations.add(makeupTEG); + operations.add(makeupCalculator); + operations.add(makeupMixer); + operations.add(coolerhOTteg3); + operations.add(leanTEGtoabs); + operations.add(resycleLeanTEG); + + // Check that process can run + operations.run(); + + // Serialize to xml using XStream + XStream xstream = new XStream(); + String xml = xstream.toXML(operations); + + xstream.addPermission(AnyTypePermission.ANY); + + // Deserialize from xml + neqsim.processSimulation.processSystem.ProcessSystem operationsCopy = + (neqsim.processSimulation.processSystem.ProcessSystem) xstream.fromXML(xml); + operationsCopy.run(); + } +} diff --git a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java index ecc312dac3..98e08a09d6 100644 --- a/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java +++ b/src/test/java/neqsim/processSimulation/processSystem/ProcessSystemTest.java @@ -1,10 +1,12 @@ package neqsim.processSimulation.processSystem; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import neqsim.processSimulation.measurementDevice.HydrateEquilibriumTemperatureAnalyser; +import neqsim.processSimulation.measurementDevice.WaterDewPointAnalyser; import neqsim.processSimulation.processEquipment.ProcessEquipmentInterface; import neqsim.processSimulation.processEquipment.absorber.SimpleTEGAbsorber; import neqsim.processSimulation.processEquipment.absorber.WaterStripperColumn; @@ -15,18 +17,20 @@ import neqsim.processSimulation.processEquipment.mixer.StaticMixer; import neqsim.processSimulation.processEquipment.pump.Pump; import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.splitter.Splitter; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.util.Calculator; import neqsim.processSimulation.processEquipment.util.Recycle; -import neqsim.processSimulation.processEquipment.util.SetPoint; import neqsim.processSimulation.processEquipment.util.StreamSaturatorUtil; import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +/** + * Class for testing ProcessSystem class. + */ public class ProcessSystemTest extends neqsim.NeqSimTest { ProcessSystem p; String _name = "TestProcess"; - @BeforeEach public void setUp() { p = new ProcessSystem(); @@ -111,7 +115,6 @@ public void testRemoveUnit() { Assertions.assertEquals(0, p.size()); } - @Test @SuppressWarnings("deprecation") public void testAddUnitsWithNoName() { @@ -168,271 +171,596 @@ void testCopy() { } @Test - void testDisplayResult() {} + void testGetAllUnitNames() {} @Test - void testGetAllUnitNames() { + void testGetConditionMonitor() {} - } + @Test + void testGetCoolerDuty() {} @Test - void testGetConditionMonitor() { + void testGetCostEstimator() {} - } + @Test + void testGetEntropyProduction() {} @Test - void testGetCoolerDuty() { + void testGetExergyChange() {} - } + @Test + void testGetHeaterDuty() {} @Test - void testGetCostEstimator() { + void testGetMeasurementDevice() {} - } + @Test + void testGetMechanicalWeight() {} @Test - void testGetEntropyProduction() { + void testGetPower() {} - } + @Test + void testGetSurroundingTemperature() {} @Test - void testGetExergyChange() { + void testGetSystemMechanicalDesign() {} - } + @Test + void testGetUnit() {} @Test - void testGetHeaterDuty() { + void testGetUnitOperations() {} - } + @Test + void testOpen() {} @Test - void testGetMeasurementDevice() { + void testPrintLogFile() {} - } + @Test + void testReplaceObject() {} @Test - void testGetMechanicalWeight() { + void testReportMeasuredValues() {} - } + @Test + void testReportResults() {} + @Test + void testRun() {} + @Test + void testRunAsThread() {} @Test - void testGetPower() { + void testSave() {} - } + @Test + void testSetFluid() {} @Test - void testGetSurroundingTemperature() { + void testSetName() {} - } + @Test + void testSetSystemMechanicalDesign() {} @Test - void testGetSystemMechanicalDesign() { + void testSize() {} - } + @Test + void testView() {} @Test - void testGetUnit() { + public void runTEGProcessTest2() { + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + feedGas.addComponent("nitrogen", 0.245); + feedGas.addComponent("CO2", 3.4); + feedGas.addComponent("methane", 85.7); + feedGas.addComponent("ethane", 5.981); + feedGas.addComponent("propane", 0.2743); + feedGas.addComponent("i-butane", 0.037); + feedGas.addComponent("n-butane", 0.077); + feedGas.addComponent("i-pentane", 0.0142); + feedGas.addComponent("n-pentane", 0.0166); + feedGas.addComponent("n-hexane", 0.006); + feedGas.addComponent("benzene", 0.001); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("TEG", 0); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(false); + feedGas.init(0); - } + Stream dryFeedGasSmorbukk = new Stream("dry feed gas Smorbukk", feedGas); + dryFeedGasSmorbukk.setFlowRate(10.0, "MSm3/day"); + dryFeedGasSmorbukk.setTemperature(25.0, "C"); + dryFeedGasSmorbukk.setPressure(40.0, "bara"); + StreamSaturatorUtil saturatedFeedGasSmorbukk = + new StreamSaturatorUtil("water saturator Smorbukk", dryFeedGasSmorbukk); - @Test - void testGetUnitOperations() { + Stream waterSaturatedFeedGasSmorbukk = + new Stream("water saturated feed gas Smorbukk", saturatedFeedGasSmorbukk.getOutletStream()); - } + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyserSmorbukk = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGasSmorbukk); + hydrateTAnalyserSmorbukk.setName("hydrate temperature analyser Smorbukk"); + Splitter SmorbukkSplit = new Splitter("Smorbukk Splitter", waterSaturatedFeedGasSmorbukk); + double[] splitSmorbukk = {1.0 - 1e-10, 1e-10}; + SmorbukkSplit.setSplitFactors(splitSmorbukk); - @Test - void testOpen() { + Stream dryFeedGasMidgard = new Stream("dry feed gas Midgard201", feedGas.clone()); + dryFeedGasMidgard.setFlowRate(10, "MSm3/day"); + dryFeedGasMidgard.setTemperature(5, "C"); + dryFeedGasMidgard.setPressure(40.0, "bara"); - } + StreamSaturatorUtil saturatedFeedGasMidgard = + new StreamSaturatorUtil("water saturator Midgard", dryFeedGasMidgard); - @Test - void testPrintLogFile() { + Stream waterSaturatedFeedGasMidgard = + new Stream("water saturated feed gas Midgard", saturatedFeedGasMidgard.getOutletStream()); - } + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyserMidgard = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGasMidgard); + hydrateTAnalyserMidgard.setName("hydrate temperature analyser Midgard"); + Splitter MidgardSplit = new Splitter("Midgard Splitter", waterSaturatedFeedGasMidgard); + double[] splitMidgard = {1e-10, 1 - 1e-10}; + MidgardSplit.setSplitFactors(splitMidgard); - @Test - void testReplaceObject() { + StaticMixer TrainB = new StaticMixer("mixer TrainB"); + TrainB.addStream(SmorbukkSplit.getSplitStream(1)); + TrainB.addStream(MidgardSplit.getSplitStream(1)); - } + Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", TrainB.getOutletStream()); + feedTPsetterToAbsorber.setOutPressure(40.0, "bara"); + feedTPsetterToAbsorber.setOutTemperature(37.0, "C"); - @Test - void testReportMeasuredValues() { + Stream feedToAbsorber = + new Stream("feed to TEG absorber", feedTPsetterToAbsorber.getOutletStream()); - } + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser2 = + new HydrateEquilibriumTemperatureAnalyser(feedToAbsorber); + hydrateTAnalyser2.setName("hydrate temperature gas to absorber"); - @Test - void testReportResults() { + WaterDewPointAnalyser waterDewPointAnalyserToAbsorber = + new WaterDewPointAnalyser(feedToAbsorber); + waterDewPointAnalyserToAbsorber.setMethod("multiphase"); + waterDewPointAnalyserToAbsorber.setReferencePressure(40.0); + waterDewPointAnalyserToAbsorber.setName("water dew point gas to absorber"); - } + neqsim.thermo.system.SystemInterface feedTEG = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + feedTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.99}); - @Test - void testRun() { + Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); + TEGFeed.setFlowRate(8000.0, "kg/hr"); + TEGFeed.setTemperature(40.0, "C"); + TEGFeed.setPressure(40.0, "bara"); - } + SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); + absorber.addGasInStream(feedToAbsorber); + absorber.addSolventInStream(TEGFeed); + absorber.setNumberOfStages(4); + absorber.setStageEfficiency(0.8); + absorber.setInternalDiameter(2.240); - @Test - void testRunAsThread() { + Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); - } + Stream richTEG = new Stream("rich TEG from absorber", absorber.getLiquidOutStream()); - @Test - void testSave() { + HydrateEquilibriumTemperatureAnalyser waterDewPointAnalyser = + new HydrateEquilibriumTemperatureAnalyser(dehydratedGas); + waterDewPointAnalyser.setReferencePressure(70.0); + waterDewPointAnalyser.setName("hydrate dew point analyser"); - } + WaterDewPointAnalyser waterDewPointAnalyser2 = new WaterDewPointAnalyser(dehydratedGas); + waterDewPointAnalyser2.setReferencePressure(70.0); + waterDewPointAnalyser2.setName("water dew point analyser"); - @Test - void testSetFluid() { + Heater condHeat = new Heater("Condenser heat exchanger", richTEG); - } + ThrottlingValve glycol_flash_valve = + new ThrottlingValve("Rich TEG HP flash valve", condHeat.getOutletStream()); + glycol_flash_valve.setOutletPressure(7.0); - @Test - void testSetName() {} + HeatExchanger heatEx2 = + new HeatExchanger("rich TEG heat exchanger 1", glycol_flash_valve.getOutletStream()); + heatEx2.setGuessOutTemperature(273.15 + 90.0); + heatEx2.setUAvalue(1450.0); - @Test - void testSetSystemMechanicalDesign() { + neqsim.thermo.system.SystemInterface feedWater = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + feedWater.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}); - } + double addedWaterRate = 0.0; + Stream waterFeed = new Stream("extra water", feedWater); + waterFeed.setFlowRate(addedWaterRate, "kg/hr"); + waterFeed.setTemperature(90.0, "C"); + waterFeed.setPressure(7.0, "bara"); - @Test - void testSize() { + Separator flashSep = new Separator("degassing separator", heatEx2.getOutStream(0)); + if (addedWaterRate > 0) { + flashSep.addStream(waterFeed); + } + flashSep.setInternalDiameter(1.2); - } + Stream flashGas = new Stream("gas from degassing separator", flashSep.getGasOutStream()); - @Test - void testView() {} + Stream flashLiquid = + new Stream("liquid from degassing separator", flashSep.getLiquidOutStream()); + + Filter filter = new Filter("TEG fine filter", flashLiquid); + filter.setDeltaP(0.0, "bara"); + + HeatExchanger heatEx = + new HeatExchanger("lean/rich TEG heat-exchanger", filter.getOutletStream()); + heatEx.setGuessOutTemperature(273.15 + 140.0); + heatEx.setUAvalue(9140.0); + + double reboilerPressure = 1.4; + double condenserPressure = 1.2; + double feedPressureGLycol = (reboilerPressure + condenserPressure) / 2.0; // enters middle of + // column + double feedPressureStripGas = (reboilerPressure + condenserPressure) / 2.0; // enters middle of + // column + + ThrottlingValve glycol_flash_valve2 = + new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); + glycol_flash_valve2.setName("Rich TEG LP flash valve"); + glycol_flash_valve2.setOutletPressure(feedPressureGLycol); + + neqsim.thermo.system.SystemInterface stripGas = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + stripGas.setMolarComposition( + new double[] {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}); + + Stream strippingGas = new Stream("stripGas", stripGas); + strippingGas.setFlowRate(250.0 * 0.8, "kg/hr"); + strippingGas.setTemperature(180.0, "C"); + strippingGas.setPressure(feedPressureStripGas, "bara"); + + Stream gasToReboiler = (Stream) strippingGas.clone(); + gasToReboiler.setName("gas to reboiler"); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(glycol_flash_valve2.getOutletStream(), 1); + column.getReboiler().setOutTemperature(273.15 + 202.0); + column.getCondenser().setOutTemperature(273.15 + 89.0); + column.getTray(1).addStream(gasToReboiler); + column.setTopPressure(condenserPressure); + column.setBottomPressure(reboilerPressure); + column.setInternalDiameter(0.56); + + Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); + coolerRegenGas.setOutTemperature(273.15 + 15.0); + + Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); + + Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); + + Stream liquidToTrreatment = new Stream("water to treatment", sepregenGas.getLiquidOutStream()); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addSolventInStream(column.getLiquidOutStream()); + stripper.addGasInStream(strippingGas); + stripper.setNumberOfStages(3); + stripper.setStageEfficiency(0.8); + + Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); + recycleGasFromStripper.addStream(stripper.getGasOutStream()); + recycleGasFromStripper.setOutletStream(gasToReboiler); + + neqsim.thermo.system.SystemInterface pureTEG = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + pureTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); + + heatEx.setFeedStream(1, stripper.getLiquidOutStream()); + + heatEx2.setFeedStream(1, heatEx.getOutStream(1)); + + Pump hotLeanTEGPump = new Pump("lean TEG LP pump", heatEx2.getOutStream(1)); + hotLeanTEGPump.setOutletPressure(40.0); + hotLeanTEGPump.setIsentropicEfficiency(0.9); + + Stream makeupTEG = new Stream("makeup TEG", pureTEG); + makeupTEG.setFlowRate(1e-6, "kg/hr"); + makeupTEG.setTemperature(100.0, "C"); + makeupTEG.setPressure(40.0, "bara"); + + Calculator makeupCalculator = new Calculator("TEG makeup calculator"); + makeupCalculator.addInputVariable(dehydratedGas); + makeupCalculator.addInputVariable(flashGas); + makeupCalculator.addInputVariable(gasToFlare); + makeupCalculator.addInputVariable(liquidToTrreatment); + makeupCalculator.setOutputVariable(makeupTEG); + + StaticMixer makeupMixer = new StaticMixer("makeup mixer"); + makeupMixer.addStream(hotLeanTEGPump.getOutletStream()); + makeupMixer.addStream(makeupTEG); + + Heater coolerhOTteg3 = new Heater("lean TEG cooler", makeupMixer.getOutletStream()); + coolerhOTteg3.setOutTemperature(273.15 + 40.0); + + condHeat.setEnergyStream(column.getCondenser().getEnergyStream()); + + Stream leanTEGtoabs = new Stream("resyc lean TEG to absorber", coolerhOTteg3.getOutletStream()); + + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); + resycleLeanTEG.addStream(leanTEGtoabs); + resycleLeanTEG.setOutletStream(TEGFeed); + resycleLeanTEG.setPriority(200); + resycleLeanTEG.setDownstreamProperty("flow rate"); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(dryFeedGasSmorbukk); + operations.add(saturatedFeedGasSmorbukk); + operations.add(waterSaturatedFeedGasSmorbukk); + operations.add(hydrateTAnalyserSmorbukk); + operations.add(SmorbukkSplit); + + operations.add(dryFeedGasMidgard); + operations.add(saturatedFeedGasMidgard); + operations.add(waterSaturatedFeedGasMidgard); + operations.add(hydrateTAnalyserMidgard); + + operations.add(MidgardSplit); + + operations.add(TrainB); + + operations.add(feedTPsetterToAbsorber); + operations.add(feedToAbsorber); + operations.add(hydrateTAnalyser2); + operations.add(waterDewPointAnalyserToAbsorber); + operations.add(TEGFeed); + operations.add(absorber); + operations.add(dehydratedGas); + operations.add(richTEG); + operations.add(waterDewPointAnalyser); + operations.add(waterDewPointAnalyser2); + + operations.add(condHeat); + + operations.add(glycol_flash_valve); + operations.add(heatEx2); + operations.add(waterFeed); + operations.add(flashSep); + operations.add(flashGas); + operations.add(flashLiquid); + + operations.add(filter); + operations.add(heatEx); + operations.add(glycol_flash_valve2); + operations.add(strippingGas); + + operations.add(gasToReboiler); + operations.add(column); + + operations.add(coolerRegenGas); + operations.add(sepregenGas); + operations.add(gasToFlare); + operations.add(liquidToTrreatment); + + operations.add(stripper); + operations.add(recycleGasFromStripper); + + operations.add(hotLeanTEGPump); + operations.add(makeupTEG); + operations.add(makeupCalculator); + operations.add(makeupMixer); + operations.add(coolerhOTteg3); + operations.add(leanTEGtoabs); + operations.add(resycleLeanTEG); + operations.run(); + /* + * System.out.println("flowo " + hotLeanTEGPump.getOutletStream().getFlowRate("kg/hr")); + * System.out.println("makeup " + makeupTEG.getFlowRate("kg/hr")); System.out.println("mixo " + + * coolerhOTteg3.getOutletStream().getFlowRate("kg/hr")); System.out.println("leantoresirc " + + * leanTEGtoabs.getFlowRate("kg/hr")); // operations.run(); System.out.println("flowo " + + * hotLeanTEGPump.getOutletStream().getFlowRate("kg/hr")); System.out.println("makeup " + + * makeupTEG.getFlowRate("kg/hr")); System.out.println("mixo " + + * coolerhOTteg3.getOutletStream().getFlowRate("kg/hr")); System.out.println("leantoresirc " + + * leanTEGtoabs.getFlowRate("kg/hr")); + */ + assertEquals(1.5322819175995646E-5, dehydratedGas.getFluid().getComponent("water").getx(), + 1e-6); + } @Test - public void runTEGProcessTest() { + public void testRun_step() { neqsim.thermo.system.SystemInterface feedGas = new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); - feedGas.addComponent("nitrogen", 1.42); - feedGas.addComponent("CO2", 0.5339); - feedGas.addComponent("methane", 95.2412); - feedGas.addComponent("ethane", 2.2029); - feedGas.addComponent("propane", 0.3231); - feedGas.addComponent("i-butane", 0.1341); - feedGas.addComponent("n-butane", 0.0827); - feedGas.addComponent("i-pentane", 0.0679); - feedGas.addComponent("n-pentane", 0.035); - feedGas.addComponent("n-hexane", 0.0176); - feedGas.addComponent("benzene", 0.0017); - feedGas.addComponent("toluene", 0.0043); - feedGas.addComponent("m-Xylene", 0.0031); + feedGas.addComponent("nitrogen", 0.245); + feedGas.addComponent("CO2", 3.4); + feedGas.addComponent("methane", 85.7); + feedGas.addComponent("ethane", 5.981); + feedGas.addComponent("propane", 0.2743); + feedGas.addComponent("i-butane", 0.037); + feedGas.addComponent("n-butane", 0.077); + feedGas.addComponent("i-pentane", 0.0142); + feedGas.addComponent("n-pentane", 0.0166); + feedGas.addComponent("n-hexane", 0.006); + feedGas.addComponent("benzene", 0.001); feedGas.addComponent("water", 0.0); feedGas.addComponent("TEG", 0); feedGas.setMixingRule(10); - feedGas.setMultiPhaseCheck(true); + feedGas.setMultiPhaseCheck(false); + feedGas.init(0); - Stream dryFeedGas = new Stream("dry feed gas", feedGas); - dryFeedGas.setFlowRate(25.32, "MSm3/day"); - dryFeedGas.setTemperature(25.0, "C"); - dryFeedGas.setPressure(87.12, "bara"); + Stream dryFeedGasSmorbukk = new Stream("dry feed gas Smorbukk", feedGas); + dryFeedGasSmorbukk.setFlowRate(10.0, "MSm3/day"); + dryFeedGasSmorbukk.setTemperature(25.0, "C"); + dryFeedGasSmorbukk.setPressure(40.0, "bara"); - StreamSaturatorUtil saturatedFeedGas = new StreamSaturatorUtil("water saturator", dryFeedGas); + StreamSaturatorUtil saturatedFeedGasSmorbukk = + new StreamSaturatorUtil("water saturator Smorbukk", dryFeedGasSmorbukk); - Stream waterSaturatedFeedGas = - new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); + Stream waterSaturatedFeedGasSmorbukk = + new Stream("water saturated feed gas Smorbukk", saturatedFeedGasSmorbukk.getOutletStream()); - HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser = - new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGas); - hydrateTAnalyser.setName("hydrate temperature analyser"); + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyserSmorbukk = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGasSmorbukk); + hydrateTAnalyserSmorbukk.setName("hydrate temperature analyser Smorbukk"); - neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); - feedTEG.setMolarComposition( - new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.97}); + Splitter SmorbukkSplit = new Splitter("Smorbukk Splitter", waterSaturatedFeedGasSmorbukk); + double[] splitSmorbukk = {1.0 - 1e-10, 1e-10}; + SmorbukkSplit.setSplitFactors(splitSmorbukk); + + Stream dryFeedGasMidgard = new Stream("dry feed gas Midgard201", feedGas.clone()); + dryFeedGasMidgard.setFlowRate(10, "MSm3/day"); + dryFeedGasMidgard.setTemperature(5, "C"); + dryFeedGasMidgard.setPressure(40.0, "bara"); + + StreamSaturatorUtil saturatedFeedGasMidgard = + new StreamSaturatorUtil("water saturator Midgard", dryFeedGasMidgard); + + Stream waterSaturatedFeedGasMidgard = + new Stream("water saturated feed gas Midgard", saturatedFeedGasMidgard.getOutletStream()); - Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", waterSaturatedFeedGas); - feedTPsetterToAbsorber.setOutPressure(87.12, "bara"); - feedTPsetterToAbsorber.setOutTemperature(27.93, "C"); + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyserMidgard = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGasMidgard); + hydrateTAnalyserMidgard.setName("hydrate temperature analyser Midgard"); + + Splitter MidgardSplit = new Splitter("Midgard Splitter", waterSaturatedFeedGasMidgard); + double[] splitMidgard = {1e-10, 1 - 1e-10}; + MidgardSplit.setSplitFactors(splitMidgard); + + StaticMixer TrainB = new StaticMixer("mixer TrainB"); + TrainB.addStream(SmorbukkSplit.getSplitStream(1)); + TrainB.addStream(MidgardSplit.getSplitStream(1)); + + Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", TrainB.getOutletStream()); + feedTPsetterToAbsorber.setOutPressure(40.0, "bara"); + feedTPsetterToAbsorber.setOutTemperature(37.0, "C"); Stream feedToAbsorber = new Stream("feed to TEG absorber", feedTPsetterToAbsorber.getOutletStream()); + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser2 = + new HydrateEquilibriumTemperatureAnalyser(feedToAbsorber); + hydrateTAnalyser2.setName("hydrate temperature gas to absorber"); + + WaterDewPointAnalyser waterDewPointAnalyserToAbsorber = + new WaterDewPointAnalyser(feedToAbsorber); + waterDewPointAnalyserToAbsorber.setMethod("multiphase"); + waterDewPointAnalyserToAbsorber.setReferencePressure(40.0); + waterDewPointAnalyserToAbsorber.setName("water dew point gas to absorber"); + + neqsim.thermo.system.SystemInterface feedTEG = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + feedTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.99}); + Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); - TEGFeed.setFlowRate(14.68 * 1100.0, "kg/hr"); - TEGFeed.setTemperature(43.4, "C"); - TEGFeed.setPressure(87.12, "bara"); + TEGFeed.setFlowRate(8000.0, "kg/hr"); + TEGFeed.setTemperature(40.0, "C"); + TEGFeed.setPressure(40.0, "bara"); SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); absorber.addGasInStream(feedToAbsorber); absorber.addSolventInStream(TEGFeed); - absorber.setNumberOfStages(5); - absorber.setStageEfficiency(0.5); + absorber.setNumberOfStages(4); + absorber.setStageEfficiency(0.8); + absorber.setInternalDiameter(2.240); Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); - Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); - /* - * WaterDewPointAnalyser waterDewPointAnalyser = new WaterDewPointAnalyser(dehydratedGas); - * waterDewPointAnalyser.setName("water dew point analyser"); - */ + Stream richTEG = new Stream("rich TEG from absorber", absorber.getLiquidOutStream()); + HydrateEquilibriumTemperatureAnalyser waterDewPointAnalyser = new HydrateEquilibriumTemperatureAnalyser(dehydratedGas); waterDewPointAnalyser.setReferencePressure(70.0); - waterDewPointAnalyser.setName("water dew point analyser"); + waterDewPointAnalyser.setName("hydrate dew point analyser"); + + WaterDewPointAnalyser waterDewPointAnalyser2 = new WaterDewPointAnalyser(dehydratedGas); + waterDewPointAnalyser2.setReferencePressure(70.0); + waterDewPointAnalyser2.setName("water dew point analyser"); - ThrottlingValve glycol_flash_valve = new ThrottlingValve("Rich TEG HP flash valve", richTEG); - glycol_flash_valve.setOutletPressure(5.5); + Heater condHeat = new Heater("Condenser heat exchanger", richTEG); - Heater richGLycolHeaterCondenser = - new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); + ThrottlingValve glycol_flash_valve = + new ThrottlingValve("Rich TEG HP flash valve", condHeat.getOutletStream()); + glycol_flash_valve.setOutletPressure(7.0); HeatExchanger heatEx2 = - new HeatExchanger("rich TEG heat exchanger 1", richGLycolHeaterCondenser.getOutletStream()); - heatEx2.setGuessOutTemperature(273.15 + 62.0); - heatEx2.setUAvalue(200.0); + new HeatExchanger("rich TEG heat exchanger 1", glycol_flash_valve.getOutletStream()); + heatEx2.setGuessOutTemperature(273.15 + 90.0); + heatEx2.setUAvalue(1450.0); - Separator flashSep = new Separator("degasing separator", heatEx2.getOutStream(0)); + neqsim.thermo.system.SystemInterface feedWater = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + feedWater.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}); - Stream flashGas = new Stream("gas from degasing separator", flashSep.getGasOutStream()); + double addedWaterRate = 0.0; + Stream waterFeed = new Stream("extra water", feedWater); + waterFeed.setFlowRate(addedWaterRate, "kg/hr"); + waterFeed.setTemperature(90.0, "C"); + waterFeed.setPressure(7.0, "bara"); - Stream flashLiquid = - new Stream("liquid from degasing separator", flashSep.getLiquidOutStream()); + Separator flashSep = new Separator("degassing separator", heatEx2.getOutStream(0)); + if (addedWaterRate > 0) { + flashSep.addStream(waterFeed); + } + flashSep.setInternalDiameter(1.2); + + Stream flashGas = new Stream("gas from degassing separator", flashSep.getGasOutStream()); - Filter fineFilter = new Filter("TEG fine filter", flashLiquid); - fineFilter.setDeltaP(0.05, "bara"); + Stream flashLiquid = + new Stream("liquid from degassing separator", flashSep.getLiquidOutStream()); - Filter carbonFilter = new Filter("activated carbon filter", fineFilter.getOutletStream()); - carbonFilter.setDeltaP(0.01, "bara"); + Filter filter = new Filter("TEG fine filter", flashLiquid); + filter.setDeltaP(0.0, "bara"); HeatExchanger heatEx = - new HeatExchanger("rich TEG heat exchanger 2", carbonFilter.getOutletStream()); - heatEx.setGuessOutTemperature(273.15 + 130.0); - heatEx.setUAvalue(390.0); + new HeatExchanger("lean/rich TEG heat-exchanger", filter.getOutletStream()); + heatEx.setGuessOutTemperature(273.15 + 140.0); + heatEx.setUAvalue(9140.0); + + double reboilerPressure = 1.4; + double condenserPressure = 1.2; + double feedPressureGLycol = (reboilerPressure + condenserPressure) / 2.0; // enters middle of + // column + double feedPressureStripGas = (reboilerPressure + condenserPressure) / 2.0; // enters middle of + // column ThrottlingValve glycol_flash_valve2 = new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); glycol_flash_valve2.setName("Rich TEG LP flash valve"); - glycol_flash_valve2.setOutletPressure(1.23); + glycol_flash_valve2.setOutletPressure(feedPressureGLycol); - neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); - // stripGas.setMolarComposition(new double[] { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, - // 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }); + neqsim.thermo.system.SystemInterface stripGas = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + stripGas.setMolarComposition( + new double[] {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}); Stream strippingGas = new Stream("stripGas", stripGas); - strippingGas.setFlowRate(255.0, "Sm3/hr"); - strippingGas.setTemperature(80.0, "C"); - strippingGas.setPressure(1.02, "bara"); + strippingGas.setFlowRate(250.0 * 0.8, "kg/hr"); + strippingGas.setTemperature(180.0, "C"); + strippingGas.setPressure(feedPressureStripGas, "bara"); - Stream gasToReboiler = strippingGas.clone(); + Stream gasToReboiler = (Stream) strippingGas.clone(); gasToReboiler.setName("gas to reboiler"); DistillationColumn column = new DistillationColumn(1, true, true); column.setName("TEG regeneration column"); - column.addFeedStream(glycol_flash_valve2.getOutletStream(), 0); - column.getReboiler().setOutTemperature(273.15 + 201.0); - column.getCondenser().setOutTemperature(273.15 + 92.0); - column.getReboiler().addStream(gasToReboiler); - column.setTopPressure(1.01325); - column.setBottomPressure(1.02); + column.addFeedStream(glycol_flash_valve2.getOutletStream(), 1); + column.getReboiler().setOutTemperature(273.15 + 202.0); + column.getCondenser().setOutTemperature(273.15 + 89.0); + column.getTray(1).addStream(gasToReboiler); + column.setTopPressure(condenserPressure); + column.setBottomPressure(reboilerPressure); + column.setInternalDiameter(0.56); Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); - coolerRegenGas.setOutTemperature(273.15 + 7.5); + coolerRegenGas.setOutTemperature(273.15 + 15.0); Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); @@ -443,48 +771,30 @@ public void runTEGProcessTest() { WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); stripper.addSolventInStream(column.getLiquidOutStream()); stripper.addGasInStream(strippingGas); - stripper.setNumberOfStages(4); - stripper.setStageEfficiency(0.5); - /* - * DistillationColumn stripper = new DistillationColumn(3, false, false); - * stripper.setName("TEG stripper"); stripper.addFeedStream(column.getLiquidOutStream(), 2); - * stripper.getTray(0).addStream(strippingGas); - */ + stripper.setNumberOfStages(3); + stripper.setStageEfficiency(0.8); + Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); recycleGasFromStripper.addStream(stripper.getGasOutStream()); recycleGasFromStripper.setOutletStream(gasToReboiler); - Heater bufferTank = new Heater("TEG buffer tank", stripper.getLiquidOutStream()); - bufferTank.setOutTemperature(273.15 + 191.0); - - Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream());// stripper.getSolventOutStream()); - hotLeanTEGPump.setOutletPressure(5.0); - hotLeanTEGPump.setIsentropicEfficiency(0.6); + neqsim.thermo.system.SystemInterface pureTEG = + (neqsim.thermo.system.SystemInterface) feedGas.clone(); + pureTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); - heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); + heatEx.setFeedStream(1, stripper.getLiquidOutStream()); heatEx2.setFeedStream(1, heatEx.getOutStream(1)); - Heater coolerhOTteg3 = new Heater("lean TEG cooler", heatEx2.getOutStream(1)); - coolerhOTteg3.setOutTemperature(273.15 + 35.41); - - Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); - hotLeanTEGPump2.setOutletPressure(87.2); - hotLeanTEGPump2.setIsentropicEfficiency(0.75); - - SetPoint pumpHPPresSet = - new SetPoint("HP pump set", hotLeanTEGPump2, "pressure", feedToAbsorber); - - Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); - - neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); - pureTEG.setMolarComposition( - new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); + Pump hotLeanTEGPump = new Pump("lean TEG LP pump", heatEx2.getOutStream(1)); + hotLeanTEGPump.setOutletPressure(40.0); + hotLeanTEGPump.setIsentropicEfficiency(0.9); Stream makeupTEG = new Stream("makeup TEG", pureTEG); makeupTEG.setFlowRate(1e-6, "kg/hr"); - makeupTEG.setTemperature(43.0, "C"); - makeupTEG.setPressure(52.21, "bara"); + makeupTEG.setTemperature(100.0, "C"); + makeupTEG.setPressure(40.0, "bara"); Calculator makeupCalculator = new Calculator("TEG makeup calculator"); makeupCalculator.addInputVariable(dehydratedGas); @@ -494,61 +804,128 @@ public void runTEGProcessTest() { makeupCalculator.setOutputVariable(makeupTEG); StaticMixer makeupMixer = new StaticMixer("makeup mixer"); - makeupMixer.addStream(leanTEGtoabs); + makeupMixer.addStream(hotLeanTEGPump.getOutletStream()); makeupMixer.addStream(makeupTEG); + Heater coolerhOTteg3 = new Heater("lean TEG cooler", makeupMixer.getOutletStream()); + coolerhOTteg3.setOutTemperature(273.15 + 40.0); + + condHeat.setEnergyStream(column.getCondenser().getEnergyStream()); + + Stream leanTEGtoabs = new Stream("resyc lean TEG to absorber", coolerhOTteg3.getOutletStream()); + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); - resycleLeanTEG.addStream(makeupMixer.getOutletStream()); + resycleLeanTEG.addStream(leanTEGtoabs); resycleLeanTEG.setOutletStream(TEGFeed); resycleLeanTEG.setPriority(200); resycleLeanTEG.setDownstreamProperty("flow rate"); - richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); - // richGLycolHeater.isSetEnergyStream(); - neqsim.processSimulation.processSystem.ProcessSystem operations = new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(dryFeedGas); - operations.add(saturatedFeedGas); - operations.add(waterSaturatedFeedGas); - operations.add(hydrateTAnalyser); + operations.add(dryFeedGasSmorbukk); + operations.add(saturatedFeedGasSmorbukk); + operations.add(waterSaturatedFeedGasSmorbukk); + operations.add(hydrateTAnalyserSmorbukk); + operations.add(SmorbukkSplit); + + operations.add(dryFeedGasMidgard); + operations.add(saturatedFeedGasMidgard); + operations.add(waterSaturatedFeedGasMidgard); + operations.add(hydrateTAnalyserMidgard); + + operations.add(MidgardSplit); + + operations.add(TrainB); + operations.add(feedTPsetterToAbsorber); operations.add(feedToAbsorber); + operations.add(hydrateTAnalyser2); + operations.add(waterDewPointAnalyserToAbsorber); operations.add(TEGFeed); operations.add(absorber); operations.add(dehydratedGas); - operations.add(waterDewPointAnalyser); operations.add(richTEG); + operations.add(waterDewPointAnalyser); + operations.add(waterDewPointAnalyser2); + + operations.add(condHeat); + operations.add(glycol_flash_valve); - operations.add(richGLycolHeaterCondenser); operations.add(heatEx2); + operations.add(waterFeed); operations.add(flashSep); operations.add(flashGas); - operations.add(flashLiquid); - operations.add(fineFilter); - operations.add(carbonFilter); + + operations.add(filter); operations.add(heatEx); operations.add(glycol_flash_valve2); + operations.add(strippingGas); + operations.add(gasToReboiler); operations.add(column); + operations.add(coolerRegenGas); operations.add(sepregenGas); operations.add(gasToFlare); operations.add(liquidToTrreatment); - operations.add(strippingGas); + operations.add(stripper); operations.add(recycleGasFromStripper); - operations.add(bufferTank); + operations.add(hotLeanTEGPump); - operations.add(coolerhOTteg3); - operations.add(pumpHPPresSet); - operations.add(hotLeanTEGPump2); - operations.add(leanTEGtoabs); - operations.add(makeupCalculator); operations.add(makeupTEG); + operations.add(makeupCalculator); operations.add(makeupMixer); + operations.add(coolerhOTteg3); + operations.add(leanTEGtoabs); operations.add(resycleLeanTEG); - // operations.run(); + operations.run(); + dryFeedGasMidgard.setFlowRate(11.1, "MSm3/day"); + operations.run_step(); + dryFeedGasMidgard.setFlowRate(12.3, "MSm3/day"); + operations.run_step(); + dryFeedGasMidgard.setFlowRate(13.5, "MSm3/day"); + ProcessSystem ops2 = operations.copy(); + operations.setRunInSteps(true); + operations.run(); + operations.run(); + operations.run(); + operations.run(); + operations.run(); + operations.run(); + ProcessSystem ops3 = operations.copy(); + operations.run(); + operations.run(); + dryFeedGasMidgard.setFlowRate(10.0, "MSm3/day"); + operations.run(); + operations.run(); + operations.run(); + operations.run(); + operations.run(); + operations.run(); + operations.run(); + operations.run(); + assertEquals(1.5322819175995646E-5, dehydratedGas.getFluid().getComponent("water").getx(), + 1e-6); + + operations.run(); + operations.run(); + operations.run(); + operations.run(); + assertEquals(1.5322819175995646E-5, dehydratedGas.getFluid().getComponent("water").getx(), + 1e-6); + + // run as time step as thread + Thread thread = operations.runAsThread(); + Thread thread2 = ops2.runAsThread(); + Thread thread3 = ops3.runAsThread(); + try { + thread.join(); + thread2.join(); + thread3.join(); + } catch (Exception e) { + e.printStackTrace(); + } } } diff --git a/src/test/java/neqsim/processSimulation/processSystem/waterDegasserTest.java b/src/test/java/neqsim/processSimulation/processSystem/waterDegasserTest.java new file mode 100644 index 0000000000..4cef57cca4 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/processSystem/waterDegasserTest.java @@ -0,0 +1,248 @@ +package neqsim.processSimulation.processSystem; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Test; + +public class waterDegasserTest { + Logger logger = LogManager.getLogger(waterDegasserTest.class); + + @Test + public void runProcess() throws InterruptedException { + neqsim.thermo.system.SystemSrkCPAstatoil fluid1 = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + fluid1.addComponent("water", 0.129064569343353); + fluid1.addComponent("nitrogen", 2.08503464752491e-003); + fluid1.addComponent("CO2", 5.18541155388192e-002); + fluid1.addComponent("methane", 0.642060306038335); + fluid1.addComponent("ethane", 6.18486148336841e-002); + fluid1.addComponent("propane", 3.00056835824721e-002); + fluid1.addComponent("i-butane", 3.80588549711585e-003); + fluid1.addComponent("n-butane", 1.09512595091539e-002); + fluid1.addComponent("i-pentane", 3.68079747291908e-003); + fluid1.addComponent("n-pentane", 5.22448994708524e-003); + fluid1.addTBPfraction("nC6", 6.17521448341365e-003, 86.1800003051758 / 1000, + 86.1800003051758 / (1000 * 0.131586722637079)); + fluid1.addTBPfraction("C7", 1.04929815621011e-002, 94.8470001220703 / 1000, + 94.8470001220703 / (1000 * 0.130402631747591)); + fluid1.addTBPfraction("C8", 0.010589123136316, 106.220001220703 / 1000, + 106.220001220703 / (1000 * 0.141086913827126)); + fluid1.addTBPfraction("C9", 6.46674774929045e-003, 120.457000732422 / 1000, + 120.457000732422 / (1000 * 0.156630031108116)); + fluid1.addTBPfraction("C10-C11", 6.80218048553199e-003, 140.369003295898 / 1000, + 140.369003295898 / (1000 * 0.178710051949529)); + fluid1.addTBPfraction("C12-C13", 4.33960157130810e-003, 167.561996459961 / 1000, + 167.561996459961 / (1000 * 0.208334072812978)); + fluid1.addTBPfraction("C14-C15", 3.40122075476944e-003, 197.501007080078 / 1000, + 197.501007080078 / (1000 * 0.240670271622303)); + fluid1.addTBPfraction("C16-C17", 2.36077988165126e-003, 229.033996582031 / 1000, + 229.033996582031 / (1000 * 0.274302534479916)); + fluid1.addTBPfraction("C18-C20", 2.59750535903308e-003, 262.010986328125 / 1000, + 262.010986328125 / (1000 * 0.308134346902454)); + fluid1.addTBPfraction("C21-C23", 1.69428615721243e-003, 303.558990478516 / 1000, + 303.558990478516 / (1000 * 0.350224115520606)); + fluid1.addTBPfraction("C24-C28", 1.80310576675310e-003, 355.920013427734 / 1000, + 355.920013427734 / (1000 * 0.402198101307449)); + fluid1.addTBPfraction("C29-C35", 1.38447523691741e-003 + 1.29512096948304e-003, + 437.281005859375 / 1000, 437.281005859375 / (1000.0 * 0.481715346021770)); + // fluid1.addTBPfraction("C36-C80",1.29512096948304e-003,608.036010742188/1000,608.036010742188/(1000*0.642772477456171)); + fluid1.setMixingRule(10); + fluid1.setMultiPhaseCheck(true); + fluid1.init(0); + + neqsim.processSimulation.processEquipment.stream.Stream inlet_stream_VA_01 = + new neqsim.processSimulation.processEquipment.stream.Stream("INLET_STREAM_1ST_SEPARATOR", + fluid1); + inlet_stream_VA_01.setTemperature(79.36872863769531, "C"); + inlet_stream_VA_01.setPressure(66.97672112018574, "bara"); + inlet_stream_VA_01.setFlowRate(273050.4311185292, "kg/hr"); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator separator_VA_01 = + new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "FIRST_SEPARATOR", inlet_stream_VA_01); + + neqsim.processSimulation.processEquipment.heatExchanger.Heater TP_setter_hydrocyclone = + new neqsim.processSimulation.processEquipment.heatExchanger.Heater( + "TP_SETTER_HYDROCYCLONE_AFTER_1ST_SEPARATOR", separator_VA_01.getWaterOutStream()); + TP_setter_hydrocyclone.setOutPressure(30.047772073489377, "bara"); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator hydrocyclone_main = + new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "HYDROCYCLONE_AFTER_THE_1ST_SEPARATOR", TP_setter_hydrocyclone.getOutletStream()); + // hydrocyclone_main.setEntrainment(0.0, "mole", "feed", "aqueous", "gas"); + + neqsim.processSimulation.processEquipment.heatExchanger.Heater heater_TP_setter_main_stream = + new neqsim.processSimulation.processEquipment.heatExchanger.Heater( + "TP_SETTER_FOR_THE_DEGASSER_MAIN_STREAM", hydrocyclone_main.getWaterOutStream()); + heater_TP_setter_main_stream.setOutPressure(4.076956398010254, "bara"); + heater_TP_setter_main_stream.setOutTemperature(76.51406860351562, "C"); + + neqsim.processSimulation.processSystem.ProcessSystem process = + new neqsim.processSimulation.processSystem.ProcessSystem(); + process.add(inlet_stream_VA_01); + process.add(separator_VA_01); + process.add(TP_setter_hydrocyclone); + process.add(hydrocyclone_main); + process.add(heater_TP_setter_main_stream); + process.run(); + + logger.info("Finished TEST 1"); + logger.info(heater_TP_setter_main_stream.getOutletStream().getFluid().getPhase("gas") + .getFlowRate("kg/hr")); + } + + @Test + public void runProcess2() throws InterruptedException { + neqsim.thermo.system.SystemSrkCPAstatoil fluid1 = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + fluid1.getCharacterization().setPlusFractionModel("heavyOil"); + fluid1.addComponent("water", 0.129064569343353); + fluid1.addComponent("nitrogen", 2.08503464752491e-003); + fluid1.addComponent("CO2", 5.18541155388192e-002); + fluid1.addComponent("methane", 0.642060306038335); + fluid1.addComponent("ethane", 6.18486148336841e-002); + fluid1.addComponent("propane", 3.00056835824721e-002); + fluid1.addComponent("i-butane", 3.80588549711585e-003); + fluid1.addComponent("n-butane", 1.09512595091539e-002); + fluid1.addComponent("i-pentane", 3.68079747291908e-003); + fluid1.addComponent("n-pentane", 5.22448994708524e-003); + + fluid1.addTBPfraction("nC6", 6.17521448341365e-003, 86.1800003051758 / 1000, + 86.1800003051758 / (1000 * 0.131586722637079)); + fluid1.addTBPfraction("C7", 1.04929815621011e-002, 94.8470001220703 / 1000, + 94.8470001220703 / (1000 * 0.130402631747591)); + fluid1.addTBPfraction("C8", 0.010589123136316, 106.220001220703 / 1000, + 106.220001220703 / (1000 * 0.141086913827126)); + fluid1.addTBPfraction("C9", 6.46674774929045e-003, 120.457000732422 / 1000, + 120.457000732422 / (1000 * 0.156630031108116)); + fluid1.addTBPfraction("C10-C11", 6.80218048553199e-003, 140.369003295898 / 1000, + 140.369003295898 / (1000 * 0.178710051949529)); + fluid1.addTBPfraction("C12-C13", 4.33960157130810e-003, 167.561996459961 / 1000, + 167.561996459961 / (1000 * 0.208334072812978)); + fluid1.addTBPfraction("C14-C15", 3.40122075476944e-003, 197.501007080078 / 1000, + 197.501007080078 / (1000 * 0.240670271622303)); + fluid1.addTBPfraction("C16-C17", 2.36077988165126e-003, 229.033996582031 / 1000, + 229.033996582031 / (1000 * 0.274302534479916)); + fluid1.addTBPfraction("C18-C20", 2.59750535903308e-003, 262.010986328125 / 1000, + 262.010986328125 / (1000 * 0.308134346902454)); + fluid1.addTBPfraction("C21-C23", 1.69428615721243e-003, 303.558990478516 / 1000, + 303.558990478516 / (1000 * 0.350224115520606)); + fluid1.addTBPfraction("C24-C28", 1.80310576675310e-003, 355.920013427734 / 1000, + 355.920013427734 / (1000 * 0.402198101307449)); + fluid1.addTBPfraction("C29-C35", 1.38447523691741e-003, 437.281005859375 / 1000, + 437.281005859375 / (1000.0 * 0.481715346021770)); + fluid1.addTBPfraction("C36-C80", 1.29512096948304e-003, 608.036010742188 / 1000, + 608.036010742188 / (1000 * 0.642772477456171)); + fluid1.setMixingRule(10); + fluid1.setMultiPhaseCheck(true); + fluid1.init(0); + + neqsim.processSimulation.processEquipment.stream.Stream inlet_stream_VA_01 = + new neqsim.processSimulation.processEquipment.stream.Stream("INLET_STREAM_1ST_SEPARATOR", + fluid1); + inlet_stream_VA_01.setTemperature(79.21922658197582, "C"); + inlet_stream_VA_01.setPressure(62.3388000793457, "bara"); + inlet_stream_VA_01.setFlowRate(450261.1588574318, "kg/hr"); + inlet_stream_VA_01.run(); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator separator_VA_01 = + new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "FIRST_SEPARATOR", inlet_stream_VA_01); + separator_VA_01.run(); + + neqsim.processSimulation.processEquipment.heatExchanger.Heater TP_setter_hydrocyclone = + new neqsim.processSimulation.processEquipment.heatExchanger.Heater( + "TP_SETTER_HYDROCYCLONE_AFTER_1ST_SEPARATOR", separator_VA_01.getWaterOutStream()); + TP_setter_hydrocyclone.setOutPressure(61.0700675688386, "bara"); + TP_setter_hydrocyclone.run(); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator hydrocyclone_main = + (new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "HYDROCYCLONE_AFTER_THE_1ST_SEPARATOR", TP_setter_hydrocyclone.getOutletStream())); + hydrocyclone_main.setEntrainment(0.01, "mole", "feed", "aqueous", "gas"); + hydrocyclone_main.run(); + + // hydrocyclone_main.getFluid().prettyPrint(); + + // Bug here : received only water phase -> but produces only oil phase ? + // Assertions.assertEquals(33606.61989390833, + // hydrocyclone_main.getWaterOutStream().getFlowRate("kg/hr"), 1e-6); + /* + * neqsim.processSimulation.processEquipment.heatExchanger.Heater heater_TP_setter_main_stream = + * new neqsim.processSimulation.processEquipment.heatExchanger.Heater( + * "TP_SETTER_FOR_THE_DEGASSER_MAIN_STREAM", hydrocyclone_main.getWaterOutStream()); + * heater_TP_setter_main_stream.setOutPressure(6.22176469039917, "bara"); + * heater_TP_setter_main_stream.setOutTemperature(77.92657470703125, "C"); + * heater_TP_setter_main_stream.run(); + * System.out.println(heater_TP_setter_main_stream.getOutStream().getFlowRate( "kg/hr")); + * + * neqsim.thermo.system.SystemSrkCPAstatoil fluid_test_separator = new + * neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + * fluid_test_separator.addComponent("water", 0.15); + * fluid_test_separator.addComponent("nitrogen", 2.35521735969531e-003); + * fluid_test_separator.addComponent("CO2", 4.08789934579643e-002); + * fluid_test_separator.addComponent("methane", 0.368428826847070); + * fluid_test_separator.addComponent("ethane", 0.05236965335060); + * fluid_test_separator.addComponent("propane", 3.05388164099689e-002); + * fluid_test_separator.addComponent("i-butane", 3.79517339704697e-003); + * fluid_test_separator.addComponent("n-butane", 1.07659554327202e-002); + * fluid_test_separator.addComponent("i-pentane", 3.34941594776651e-003); + * fluid_test_separator.addComponent("n-pentane", 4.44976204442086e-003); + * fluid_test_separator.addTBPfraction("nC6", 5.12045113841502e-003, 86.1800003051758 / 1000, + * 86.1800003051758 / (1000 * 0.131586722637079)); fluid_test_separator.addTBPfraction("C7", + * 8.61084195264582e-003, 94.8470001220703 / 1000, 94.8470001220703 / (1000 * + * 0.130402631747591)); fluid_test_separator.addTBPfraction("C8", 1.12202354604739e-002, + * 106.220001220703 / 1000, 106.220001220703 / (1000 * 0.141086913827126)); + * fluid_test_separator.addTBPfraction("C9", 6.84786693345152e-003, 120.457000732422 / 1000, + * 120.457000732422 / (1000 * 0.156630031108116)); + * fluid_test_separator.addTBPfraction("C10-C11", 7.66033733147483e-003, 140.369003295898 / + * 1000, 140.369003295898 / (1000 * 0.178710051949529)); + * fluid_test_separator.addTBPfraction("C12-C13", 3.61717376417156e-003, 167.561996459961 / + * 1000, 167.561996459961 / (1000 * 0.208334072812978)); + * fluid_test_separator.addTBPfraction("C14-C15", 2.69924953579736e-003, 197.501007080078 / + * 1000, 197.501007080078 / (1000 * 0.240670271622303)); + * fluid_test_separator.addTBPfraction("C16-C17", 1.71199871320840e-003, 229.033996582031 / + * 1000, 229.033996582031 / (1000 * 0.274302534479916)); + * fluid_test_separator.addTBPfraction("C18-C20", 1.63521808584951e-003, 262.010986328125 / + * 1000, 262.010986328125 / (1000 * 0.308134346902454)); + * fluid_test_separator.addTBPfraction("C21-C23", 8.73694665389487e-004, 303.558990478516 / + * 1000, 303.558990478516 / (1000 * 0.350224115520606)); + * fluid_test_separator.addTBPfraction("C24-C28", 7.13595681402909e-004, 355.920013427734 / + * 1000, 355.920013427734 / (1000 * 0.402198101307449)); + * fluid_test_separator.addTBPfraction("C29-C35", 3.28149989883086e-004, 437.281005859375 / + * 1000, 437.281005859375 / (1000.0 * 0.481715346021770)); // + * fluid_test_separator.addTBPfraction("C36-C80",7.98472675241508e-005,608. + * 036010742188/1000,608 .036010742188/(1000*0.642772477456171)); + * fluid_test_separator.setMixingRule(10); fluid_test_separator.setMultiPhaseCheck(true); + * fluid_test_separator.init(0); + * + * neqsim.processSimulation.processEquipment.stream.Stream inlet_stream_test_sep = new + * neqsim.processSimulation.processEquipment.stream.Stream( + * "TEST_SEPARATOR_INLET,fluid_test_separator", fluid_test_separator); + * inlet_stream_test_sep.setTemperature(39.92721557617188, "C"); + * inlet_stream_test_sep.setPressure(1.4343990154266357, "bara"); + * inlet_stream_test_sep.setFlowRate(472.5621656362427, "kg/hr"); inlet_stream_test_sep.run(); + * + * neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator test_separator = new + * neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + * inlet_stream_test_sep); test_separator.setName("TEST_SEPARATOR"); test_separator.run(); + * + * neqsim.processSimulation.processEquipment.heatExchanger.Heater heater_TP_setter_test_stream = + * new neqsim.processSimulation.processEquipment.heatExchanger.Heater( + * "TP_SETTER_FOR_THE_DEGASSER_TEST_SEP_STREAM", test_separator.getWaterOutStream()); + * heater_TP_setter_test_stream.setOutPressure(6.22176469039917, "bara"); + * heater_TP_setter_test_stream.setOutTemperature(77.92657470703125, "C"); + * heater_TP_setter_test_stream.run(); + * + * neqsim.processSimulation.processEquipment.mixer.StaticMixer mixing_degasser = new + * neqsim.processSimulation.processEquipment.mixer.StaticMixer(); + * mixing_degasser.setName("MIXING_BEFORE_THE_DEGASSER"); + * mixing_degasser.addStream(heater_TP_setter_main_stream.getOutStream()); + * mixing_degasser.addStream(heater_TP_setter_test_stream.getOutStream()); + * mixing_degasser.run(); + * + * System.out.println(mixing_degasser.getOutStream().getFlowRate("kg/hr")); // Should be arount + * 33946.08070091751 + */ + } +} diff --git a/src/test/java/neqsim/processSimulation/util/example/LNGfilling.java b/src/test/java/neqsim/processSimulation/util/example/LNGfilling.java index ac0c2b8c52..574a3d5c4b 100644 --- a/src/test/java/neqsim/processSimulation/util/example/LNGfilling.java +++ b/src/test/java/neqsim/processSimulation/util/example/LNGfilling.java @@ -3,6 +3,7 @@ * * Created on 6. september 2006, 14:46 */ + package neqsim.processSimulation.util.example; import neqsim.processSimulation.processEquipment.mixer.Mixer; @@ -18,47 +19,46 @@ * @since 2.2.3 */ public class LNGfilling { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 - 163.0), 1.000); - testSystem.addComponent("methane", 0.6); - testSystem.addComponent("nitrogen", 1.0e-10); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 - 163.0), 1.000); + testSystem.addComponent("methane", 0.6); + testSystem.addComponent("nitrogen", 1.0e-10); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - neqsim.thermo.system.SystemInterface testSystem2 = - new neqsim.thermo.system.SystemSrkEos((273.15 + 20.0), 1.00); - testSystem2.addComponent("methane", 1.0e-10); - testSystem2.addComponent("nitrogen", 1.6e2); - testSystem2.createDatabase(true); - testSystem2.setMixingRule(2); + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 20.0), 1.00); + testSystem2.addComponent("methane", 1.0e-10); + testSystem2.addComponent("nitrogen", 1.6e2); + testSystem2.createDatabase(true); + testSystem2.setMixingRule(2); - Stream stream_1 = new Stream("Methane Stream", testSystem); - Stream stream_2 = new Stream("Nitrogen Stream", testSystem2); + Stream stream_1 = new Stream("Methane Stream", testSystem); + Stream stream_2 = new Stream("Nitrogen Stream", testSystem2); - Mixer mixer = - new neqsim.processSimulation.processEquipment.mixer.StaticMixer("LNG Tank Mix"); - mixer.addStream(stream_1); - mixer.addStream(stream_2); + Mixer mixer = new neqsim.processSimulation.processEquipment.mixer.StaticMixer("LNG Tank Mix"); + mixer.addStream(stream_1); + mixer.addStream(stream_2); - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(stream_2); - operations.add(mixer); - operations.run(); - operations.displayResult(); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(stream_2); + operations.add(mixer); + operations.run(); + operations.displayResult(); - System.out.println("Volume Methane " + stream_1.getThermoSystem().getVolume()); - System.out.println("Volume Nitrogen " + stream_2.getThermoSystem().getVolume()); - System.out.println( - "Mixer Cooled Nitrogen " + mixer.getOutletStream().getThermoSystem().getVolume()); - } + System.out.println("Volume Methane " + stream_1.getThermoSystem().getVolume()); + System.out.println("Volume Nitrogen " + stream_2.getThermoSystem().getVolume()); + System.out + .println("Mixer Cooled Nitrogen " + mixer.getOutletStream().getThermoSystem().getVolume()); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/LNGtankfilling.java b/src/test/java/neqsim/processSimulation/util/example/LNGtankfilling.java index 135589a1df..7ca17be9fd 100644 --- a/src/test/java/neqsim/processSimulation/util/example/LNGtankfilling.java +++ b/src/test/java/neqsim/processSimulation/util/example/LNGtankfilling.java @@ -6,6 +6,7 @@ import neqsim.processSimulation.processEquipment.tank.Tank; import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; import neqsim.processSimulation.processEquipment.valve.ValveInterface; +import neqsim.thermo.ThermodynamicConstantsInterface; /** *

LNGtankfilling class.

@@ -60,7 +61,7 @@ public static void main(String args[]) { Stream stream_1 = new Stream("Methane Stream", testSystem); ValveInterface valve = new ThrottlingValve("valve", stream_1); - valve.setOutletPressure(1.01325 + 0.110); + valve.setOutletPressure(ThermodynamicConstantsInterface.referencePressure + 0.110); Tank tank = new neqsim.processSimulation.processEquipment.tank.Tank("tank"); tank.addStream(valve.getOutletStream()); @@ -84,7 +85,7 @@ public static void main(String args[]) { // ControllerDeviceInterface pressureController = new ControllerDeviceBaseClass(); // pressureController.setTransmitter(tankPressureTransmitter); // pressureController.setReverseActing(false); - // pressureController.setControllerSetPoint(1.01325+0.110); + // pressureController.setControllerSetPoint(ThermodynamicConstantsInterface.referencePressure+0.110); // pressureController.setControllerParameters(2.0,400,0); neqsim.processSimulation.processSystem.ProcessSystem operations = diff --git a/src/test/java/neqsim/processSimulation/util/example/MasstransferMeOH.java b/src/test/java/neqsim/processSimulation/util/example/MasstransferMeOH.java index aca24ac7ba..eac9492228 100644 --- a/src/test/java/neqsim/processSimulation/util/example/MasstransferMeOH.java +++ b/src/test/java/neqsim/processSimulation/util/example/MasstransferMeOH.java @@ -5,6 +5,7 @@ import neqsim.processSimulation.processEquipment.separator.GasScrubber; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.util.StreamSaturatorUtil; +import neqsim.thermo.ThermodynamicConstantsInterface; /** *

@@ -16,85 +17,84 @@ * @since 2.2.3 */ public class MasstransferMeOH { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // Create the input fluid to the TEG process and saturate it with water at - // scrubber conditions - neqsim.thermo.system.SystemInterface feedGas = - new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // Create the input fluid to the TEG process and saturate it with water at + // scrubber conditions + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); - feedGas.addComponent("methane", 83.88); - feedGas.addComponent("water", 0.0); - feedGas.addComponent("methanol", 0); - feedGas.createDatabase(true); - feedGas.setMixingRule(10); - feedGas.setMultiPhaseCheck(true); + feedGas.addComponent("methane", 83.88); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("methanol", 0); + feedGas.createDatabase(true); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(true); - Stream dryFeedGas = new Stream("dry feed gas", feedGas); - dryFeedGas.setFlowRate(1.23, "MSm3/day"); - dryFeedGas.setTemperature(10.4, "C"); - dryFeedGas.setPressure(52.21, "bara"); + Stream dryFeedGas = new Stream("dry feed gas", feedGas); + dryFeedGas.setFlowRate(1.23, "MSm3/day"); + dryFeedGas.setTemperature(10.4, "C"); + dryFeedGas.setPressure(52.21, "bara"); - StreamSaturatorUtil saturatedFeedGas = - new StreamSaturatorUtil("water saturator", dryFeedGas); + StreamSaturatorUtil saturatedFeedGas = new StreamSaturatorUtil("water saturator", dryFeedGas); - Stream waterSaturatedFeedGas = - new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); + Stream waterSaturatedFeedGas = + new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); - neqsim.thermo.system.SystemInterface feedMeOH = feedGas.clone(); - feedMeOH.setMolarComposition(new double[] {0.0, 0.0, 1.0}); + neqsim.thermo.system.SystemInterface feedMeOH = feedGas.clone(); + feedMeOH.setMolarComposition(new double[] {0.0, 0.0, 1.0}); - Stream MeOHFeed = new Stream("lean TEG to absorber", feedMeOH); - MeOHFeed.setFlowRate(680.5, "kg/hr"); - MeOHFeed.setTemperature(10.4, "C"); - MeOHFeed.setPressure(52.21, "bara"); + Stream MeOHFeed = new Stream("lean TEG to absorber", feedMeOH); + MeOHFeed.setFlowRate(680.5, "kg/hr"); + MeOHFeed.setTemperature(10.4, "C"); + MeOHFeed.setPressure(52.21, "bara"); - StaticMixer mainMixer = new StaticPhaseMixer("gas MeOH mixer"); - mainMixer.addStream(waterSaturatedFeedGas); - mainMixer.addStream(MeOHFeed); + StaticMixer mainMixer = new StaticPhaseMixer("gas MeOH mixer"); + mainMixer.addStream(waterSaturatedFeedGas); + mainMixer.addStream(MeOHFeed); - neqsim.processSimulation.processEquipment.util.NeqSimUnit pipeline = - new neqsim.processSimulation.processEquipment.util.NeqSimUnit( - mainMixer.getOutletStream(), "pipeline", "stratified"); - pipeline.setLength(123.01); + neqsim.processSimulation.processEquipment.util.NeqSimUnit pipeline = + new neqsim.processSimulation.processEquipment.util.NeqSimUnit(mainMixer.getOutletStream(), + "pipeline", "stratified"); + pipeline.setLength(123.01); - GasScrubber scrubber = new GasScrubber("gas scrub", pipeline.getOutStream()); + GasScrubber scrubber = new GasScrubber("gas scrub", pipeline.getOutletStream()); - Stream gasFromScrubber = new Stream("gasFromScrubber", scrubber.getGasOutStream()); + Stream gasFromScrubber = new Stream("gasFromScrubber", scrubber.getGasOutStream()); - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(dryFeedGas); - operations.add(saturatedFeedGas); - operations.add(waterSaturatedFeedGas); - operations.add(MeOHFeed); - operations.add(mainMixer); - operations.add(pipeline); - operations.add(pipeline); - operations.add(scrubber); - operations.add(gasFromScrubber); - operations.run(); - // operations.run(); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(dryFeedGas); + operations.add(saturatedFeedGas); + operations.add(waterSaturatedFeedGas); + operations.add(MeOHFeed); + operations.add(mainMixer); + operations.add(pipeline); + operations.add(pipeline); + operations.add(scrubber); + operations.add(gasFromScrubber); + operations.run(); + // operations.run(); - operations.save("c:/temp/MeOhmasstrans.neqsim"); - /// operations = ProcessSystem.open("c:/temp/TEGprocess.neqsim"); - // ((DistillationColumn)operations.getUnit("TEG regeneration - /// column")).setTopPressure(1.2); - // operations.run(); - // ((DistillationColumn)operations.getUnit("TEG regeneration - /// column")).setNumberOfTrays(2); - System.out.println("water in wet gas [kg/MSm3] " - + ((Stream) operations.getUnit("water saturated feed gas")).getFluid().getPhase(0) - .getComponent("water").getz() * 1.0e6 * 0.01802 * 101325.0 - / (8.314 * 288.15)); - // mainMixer.getFluid().display(); - // scrubber.getGasOutStream().displayResult(); - System.out.println("hydt " + gasFromScrubber.getHydrateEquilibriumTemperature()); - } + operations.save("c:/temp/MeOhmasstrans.neqsim"); + // operations = ProcessSystem.open("c:/temp/TEGprocess.neqsim"); + // ((DistillationColumn)operations.getUnit("TEG regeneration + // column")).setTopPressure(1.2); + // operations.run(); + // ((DistillationColumn)operations.getUnit("TEG regeneration + // column")).setNumberOfTrays(2); + System.out.println( + "water in wet gas [kg/MSm3] " + ((Stream) operations.getUnit("water saturated feed gas")) + .getFluid().getPhase(0).getComponent("water").getz() * 1.0e6 * 0.01802 + * ThermodynamicConstantsInterface.atm / (ThermodynamicConstantsInterface.R * 288.15)); + // mainMixer.getFluid().display(); + // scrubber.getGasOutStream().displayResult(); + System.out.println("hydt " + gasFromScrubber.getHydrateEquilibriumTemperature()); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/OffshoreProcess3.java b/src/test/java/neqsim/processSimulation/util/example/OffshoreProcess3.java index 8eb232ef03..58fd9b2c76 100644 --- a/src/test/java/neqsim/processSimulation/util/example/OffshoreProcess3.java +++ b/src/test/java/neqsim/processSimulation/util/example/OffshoreProcess3.java @@ -11,6 +11,7 @@ import neqsim.processSimulation.processEquipment.util.Recycle; import neqsim.processSimulation.processEquipment.util.SetPoint; import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemSrkEos; /** @@ -23,333 +24,327 @@ * @since 2.2.3 */ public class OffshoreProcess3 { - /** - *

- * main. - *

+ /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + neqsim.thermo.system.SystemInterface testSystem = new SystemSrkEos(354.2, 120.0); + + testSystem.addComponent("nitrogen", 1.0); + testSystem.addComponent("CO2", 1.42); + testSystem.addComponent("methane", 60.88); + testSystem.addComponent("ethane", 8.07); + testSystem.addComponent("propane", 3.54); + testSystem.addComponent("i-butane", 0.54); + testSystem.addComponent("n-butane", 0.2); + testSystem.addComponent("i-pentane", 0.21); + testSystem.addComponent("n-pentane", 0.19); + testSystem.addComponent("n-hexane", 0.28); + testSystem.addComponent("n-heptane", 5.0); + testSystem.addComponent("water", 1.5); + + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + neqsim.thermo.system.SystemInterface fluid3 = + new neqsim.thermo.Fluid().create("black oil with water"); + + Stream wellStream = new Stream("well stream", fluid3); + // wellStream.setFluid(testSystem); + wellStream.setFlowRate(14.23, "MSm3/day"); + wellStream.setTemperature(41.0, "C"); + wellStream.setPressure(120.0, "bara"); + + Heater inletTempControl = new Heater("well stream cooler/heater", wellStream); + inletTempControl.setOutTemperature(50.0, "C"); + inletTempControl.setOutPressure(55.21, "bara"); + + ThrottlingValve valve = + new ThrottlingValve("inlet choke valve", inletTempControl.getOutletStream()); + valve.setOutletPressure(35.21); + + Stream oilToInletSep = new Stream("oilToInletSep", fluid3.clone()); + oilToInletSep.setFlowRate(1e-10, "kg/hr"); + ThreePhaseSeparator inletSeparator = + new ThreePhaseSeparator("1st stage separator", valve.getOutletStream()); + inletSeparator.setEntrainment(0.005, "mass", "product", "aqueous", "oil"); + inletSeparator.setEntrainment(500e-6, "mole", "product", "oil", "aqueous"); + inletSeparator.addStream(oilToInletSep); + + Heater heater1 = new Heater("oil cooler/heater to 2nd stage", inletSeparator.getOilOutStream()); + heater1.setOutTemperature(85.0, "C"); + + ThrottlingValve valve2 = new ThrottlingValve("oil HP to MP valve", heater1.getOutletStream()); + valve2.setOutletPressure(7.0); + + ThrottlingValve waterDPvalve = + new ThrottlingValve("Water HP to LP valve", inletSeparator.getWaterOutStream()); + waterDPvalve.setOutletPressure(ThermodynamicConstantsInterface.referencePressure); + + Separator waterStabSep = + new Separator("water degassing separator", waterDPvalve.getOutletStream()); + + Stream waterToTreatment = new Stream("water to treatment", waterStabSep.getLiquidOutStream()); + + Stream gasFromWaterTreatment = + new Stream("gas from water treatment", waterStabSep.getGasOutStream()); + + Stream oilToSep = new Stream("oilToSep", fluid3.clone()); + oilToSep.setFlowRate(1e-10, "kg/hr"); + + ThreePhaseSeparator mpseparator = + new ThreePhaseSeparator("2nd stage separator", valve2.getOutletStream()); + mpseparator.addStream(oilToSep); + + ThrottlingValve valvempValve = + new ThrottlingValve("oil MP to LP valve", mpseparator.getOilOutStream()); + valvempValve.setOutletPressure(2.1); + + ThreePhaseSeparator lpseparator = + new ThreePhaseSeparator("3rd stage separator", valvempValve.getOutletStream()); + Stream stableOilStream = (Stream) lpseparator.getOilOutStream(); + stableOilStream.setName("stable oil"); + + Compressor lpcompressor = + new Compressor("1st stage recompressor", lpseparator.getGasOutStream()); + // lpcompressor.setOutletPressure(15.0); + SetPoint compressorPresSet2 = + new SetPoint("comp pres LP set", lpcompressor, "pressure", valve2.getOutletStream()); + + Cooler lpgasheater = new Cooler("1st stage gas cooler", lpcompressor.getOutletStream()); + lpgasheater.setOutTemperature(35.0, "C"); + + neqsim.thermo.system.SystemInterface coolingWaterSYstm = fluid3.clone(); + // coolingWaterSYstm.setMolarComposition(new double[] { 0.0, 0.0, 1.0, 0.0, 0.0, + // 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }); + coolingWaterSYstm.setEmptyFluid(); + coolingWaterSYstm.addComponent("water", 1.0); + + /* + * Stream coolingWater = new Stream("cooling water", coolingWaterSYstm); + * coolingWater.setFlowRate(500900.2, "kg/hr"); coolingWater.setTemperature(10.0, "C"); + * coolingWater.setPressure(10.0, "bara"); * - * @param args an array of {@link java.lang.String} objects + * HeatExchanger heatEx = new HeatExchanger(lpcompressor.getOutStream()); + * heatEx.setName("LP heat Exchanger"); heatEx.setGuessOutTemperature(273.15+40.0); + * heatEx.setUAvalue(45000.0); heatEx.setFeedStream(1, coolingWater); */ - public static void main(String[] args) { - neqsim.thermo.system.SystemInterface testSystem = new SystemSrkEos(354.2, 120.0); - - testSystem.addComponent("nitrogen", 1.0); - testSystem.addComponent("CO2", 1.42); - testSystem.addComponent("methane", 60.88); - testSystem.addComponent("ethane", 8.07); - testSystem.addComponent("propane", 3.54); - testSystem.addComponent("i-butane", 0.54); - testSystem.addComponent("n-butane", 0.2); - testSystem.addComponent("i-pentane", 0.21); - testSystem.addComponent("n-pentane", 0.19); - testSystem.addComponent("n-hexane", 0.28); - testSystem.addComponent("n-heptane", 5.0); - testSystem.addComponent("water", 1.5); - - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - neqsim.thermo.system.SystemInterface fluid3 = - neqsim.thermo.Fluid.create("black oil with water"); - - Stream wellStream = new Stream("well stream", fluid3); - // wellStream.setFluid(testSystem); - wellStream.setFlowRate(14.23, "MSm3/day"); - wellStream.setTemperature(41.0, "C"); - wellStream.setPressure(120.0, "bara"); - - Heater inletTempControl = new Heater("well stream cooler/heater", wellStream); - inletTempControl.setOutTemperature(50.0, "C"); - inletTempControl.setOutPressure(55.21, "bara"); - - ThrottlingValve valve = - new ThrottlingValve("inlet choke valve", inletTempControl.getOutletStream()); - valve.setOutletPressure(35.21); - - Stream oilToInletSep = new Stream("oilToInletSep", fluid3.clone()); - oilToInletSep.setFlowRate(1e-10, "kg/hr"); - ThreePhaseSeparator inletSeparator = - new ThreePhaseSeparator("1st stage separator", valve.getOutletStream()); - inletSeparator.setEntrainment(0.005, "mass", "product", "aqueous", "oil"); - inletSeparator.setEntrainment(500e-6, "mole", "product", "oil", "aqueous"); - inletSeparator.addStream(oilToInletSep); - - Heater heater1 = - new Heater("oil cooler/heater to 2nd stage", inletSeparator.getOilOutStream()); - heater1.setOutTemperature(85.0, "C"); - - ThrottlingValve valve2 = - new ThrottlingValve("oil HP to MP valve", heater1.getOutletStream()); - valve2.setOutletPressure(7.0); - - ThrottlingValve waterDPvalve = - new ThrottlingValve("Water HP to LP valve", inletSeparator.getWaterOutStream()); - waterDPvalve.setOutletPressure(1.01325); - - Separator waterStabSep = - new Separator("water degasing separator", waterDPvalve.getOutletStream()); - - Stream waterToTreatment = - new Stream("water to treatment", waterStabSep.getLiquidOutStream()); - - Stream gasFromWaterTreatment = - new Stream("gas from water treatment", waterStabSep.getGasOutStream()); - - Stream oilToSep = new Stream("oilToSep", fluid3.clone()); - oilToSep.setFlowRate(1e-10, "kg/hr"); - - ThreePhaseSeparator mpseparator = - new ThreePhaseSeparator("2nd stage separator", valve2.getOutletStream()); - mpseparator.addStream(oilToSep); - - ThrottlingValve valvempValve = - new ThrottlingValve("oil MP to LP valve", mpseparator.getOilOutStream()); - valvempValve.setOutletPressure(2.1); - - ThreePhaseSeparator lpseparator = - new ThreePhaseSeparator("3rd stage separator", valvempValve.getOutletStream()); - Stream stableOilStream = (Stream) lpseparator.getOilOutStream(); - stableOilStream.setName("stable oil"); - - Compressor lpcompressor = - new Compressor("1st stage recompressor", lpseparator.getGasOutStream()); - // lpcompressor.setOutletPressure(15.0); - SetPoint compressorPresSet2 = - new SetPoint("comp pres LP set", lpcompressor, "pressure", valve2.getOutletStream()); - - Cooler lpgasheater = new Cooler("1st stage gas cooler", lpcompressor.getOutletStream()); - lpgasheater.setOutTemperature(35.0, "C"); - - neqsim.thermo.system.SystemInterface coolingWaterSYstm = fluid3.clone(); - // coolingWaterSYstm.setMolarComposition(new double[] { 0.0, 0.0, 1.0, 0.0, 0.0, - // 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }); - coolingWaterSYstm.setEmptyFluid(); - coolingWaterSYstm.addComponent("water", 1.0); - - /* - * Stream coolingWater = new Stream("cooling water", coolingWaterSYstm); - * coolingWater.setFlowRate(500900.2, "kg/hr"); coolingWater.setTemperature(10.0, "C"); - * coolingWater.setPressure(10.0, "bara"); - * - * HeatExchanger heatEx = new HeatExchanger(lpcompressor.getOutStream()); - * heatEx.setName("LP heat Exchanger"); heatEx.setGuessOutTemperature(273.15+40.0); - * heatEx.setUAvalue(45000.0); heatEx.setFeedStream(1, coolingWater); - * - */ - - Cooler lpHeatExchanger = - new Cooler("1st stage gas heat exchanger", lpcompressor.getOutletStream()); - lpgasheater.setOutTemperature(35.0, "C"); - - Separator lpscrubber = new Separator("2nd stage scrubber", lpgasheater.getOutletStream()); - Stream liqFromlpscrubber = (Stream) lpscrubber.getLiquidOutStream(); - - Recycle lpscrubberResyc = new Recycle("mpscrubberRes"); - lpscrubberResyc.addStream(liqFromlpscrubber); - lpscrubberResyc.setOutletStream(oilToSep); - - Mixer mixermp = new Mixer("mp gas mixer"); - mixermp.addStream(lpscrubber.getGasOutStream()); - mixermp.addStream(mpseparator.getGasOutStream()); - - Compressor compressor2stage = - new Compressor("2nd stage recompressor", mixermp.getOutletStream()); - compressor2stage.setIsentropicEfficiency(0.75); - // compressor2stage.setOutletPressure(75.0); - - SetPoint compressorPresSet = - new SetPoint("comp pres set", compressor2stage, "pressure", inletSeparator); - - Heater secondndstagecooler = - new Heater("2nd stage cooler", compressor2stage.getOutletStream()); - secondndstagecooler.setOutTemperature(290.0); - - Separator scrubbberfrom2ndstage = - new Separator("scrubber of mix gas HP", secondndstagecooler.getOutletStream()); - - Mixer mixer = new Mixer("HP rich gas mixer"); - mixer.addStream(inletSeparator.getGasOutStream()); - mixer.addStream(scrubbberfrom2ndstage.getGasOutStream()); - - Heater dewPointScrubberCooler = - new Heater("dew point scrubber cooler2", mixer.getOutletStream()); - dewPointScrubberCooler.setOutTemperature(273.15 + 32.3); - - Separator mpscrubber = - new Separator("dew point control scrubber", dewPointScrubberCooler.getOutletStream()); - - Stream liqFrommpscrubber = (Stream) mpscrubber.getLiquidOutStream(); - - Recycle mpscrubberResyc = new Recycle("hpscrubberRes"); - mpscrubberResyc.addStream(liqFrommpscrubber); - mpscrubberResyc.addStream(scrubbberfrom2ndstage.getLiquidOutStream()); - mpscrubberResyc.setOutletStream(oilToSep); - - MoleFractionControllerUtil waterRemoval = - new MoleFractionControllerUtil(mpscrubber.getGasOutStream()); - waterRemoval.setMoleFraction("water", 10.0e-6); - - Stream richGas = new Stream("rich gas", waterRemoval.getOutletStream()); - - Compressor exportGasCompressor = new Compressor("1st stage export compressor",richGas); - exportGasCompressor.setIsentropicEfficiency(0.75); - exportGasCompressor.setOutletPressure(richGas.getPressure() * 2.5); - - Cooler exportGasCompressorCooler = - new Cooler("1st stage export gas cooler", exportGasCompressor.getOutletStream()); - exportGasCompressorCooler.setOutTemperature(35.0, "C"); - - Compressor exportGasCompressor2 = new Compressor("2nd stage export compressor", - exportGasCompressorCooler.getOutletStream()); - exportGasCompressor2.setIsentropicEfficiency(0.75); - exportGasCompressor2.setOutletPressure( - exportGasCompressorCooler.getOutletStream().getPressure() * 2.5 * 2.5); - - Cooler exportGasCompressorCooler2 = - new Cooler("2nd stage export gas cooler", exportGasCompressor2.getOutletStream()); - exportGasCompressorCooler2.setOutTemperature(35.0, "C"); - - Stream exportGas = new Stream("export gas", exportGasCompressorCooler2.getOutletStream()); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(wellStream); - operations.add(inletTempControl); - operations.add(valve); - operations.add(inletSeparator); - operations.add(oilToInletSep); - operations.add(heater1); - operations.add(valve2); - operations.add(waterDPvalve); - operations.add(waterStabSep); - operations.add(waterToTreatment); - operations.add(gasFromWaterTreatment); - operations.add(mpseparator); - operations.add(oilToSep); - operations.add(valvempValve); - operations.add(lpseparator); - operations.add(stableOilStream); - operations.add(compressorPresSet2); - operations.add(lpcompressor); - operations.add(lpgasheater); - // operations.add(coolingWater); - // operations.add(heatEx); - operations.add(lpHeatExchanger); - operations.add(lpscrubber); - operations.add(liqFromlpscrubber); - operations.add(lpscrubberResyc); - operations.add(mixermp); - - operations.add(compressorPresSet); - operations.add(compressor2stage); - operations.add(secondndstagecooler); - operations.add(scrubbberfrom2ndstage); - operations.add(mixer); - operations.add(dewPointScrubberCooler); - operations.add(mpscrubber); - operations.add(liqFrommpscrubber); - operations.add(mpscrubberResyc); - operations.add(waterRemoval); - operations.add(richGas); - operations.add(exportGasCompressor); - operations.add(exportGasCompressorCooler); - operations.add(exportGasCompressor2); - operations.add(exportGasCompressorCooler2); - operations.add(exportGas); - // ProcessSystem operations2 = operations.open("c:/temp/offshorePro.neqsim"); - // ((Heater) operations2.getUnit("dew point scrubber - // cooler2")).setOutTemperature(298.15); - // operations2.run(); - // ((Stream) operations2.getUnit("rich gas")).phaseEnvelope(); - - // operations.displayResult(); - // inletSeparator.displayResult(); - // richGas.displayResult(); - // richGas.displayResult(); - // mpseparator.displayResult(); - - // oilToSep.displayResult(); - // lppump.displayResult(); - - operations.run(); - exportGas.displayResult(); - exportGasCompressor2.generateCompressorCurves(); - exportGasCompressor2.setUsePolytropicCalc(true); - exportGasCompressor2.setSpeed(11500); - exportGasCompressor2.getCompressorChart().setHeadUnit("kJ/kg"); - exportGasCompressor2.run(); - System.out.println("power " + exportGasCompressor2.getPower()); - // operations.run(); - exportGas.displayResult(); - /* - * // System.out.println("second stage comp power " + ((Compressor) // - * operations.getUnit("2nd stage recompressor")).getPower()/1.0e3 + " kW"); - * - * // System.out.println("first stage comp power " + ((Compressor) - * operations.getUnit("1st stage recompressor")).getPower()/1.0e3 + " kW"); - * - * System.out.println("gas from inlet separator " + ((Separator) - * operations.getUnit("1st stage separator")) - * .getGasOutStream().getFluid().getFlowRate("MSm3/day")); - * - * System.out .println("pressure of export oil " + ((Stream) - * operations.getUnit("stable oil")).getPressure("bara")); - * - * System.out.println( "temperature of export oil " + ((Stream) - * operations.getUnit("stable oil")).getTemperature("C")); - * - * System.out.println("TVP of export oil (30.0 C) " + ((Stream) - * operations.getUnit("stable oil")).TVP(30.0, "C")); - * - * // System.out.println("entropy production " + // operations.getEntropyProduction("J/K") + - * " J/K"); // System.out.println("mass balance separator " + ((Separator) - * operations.getUnit("scrubber of mix gas HP")).getMassBalance("kg/sec") + " kg/sec"); - * - * - * // liqFromlpscrubber.displayResult(); // richGas.phaseEnvelope(); // - * richGas.displayResult(); operations.save("c:/temp/offshorePro.neqsim"); - * inletSeparator.getLiquidOutStream().getFluid().display(); - * inletSeparator.getWaterOutStream().getFluid().display(); exportGas.displayResult(); /* - * Hydrocyclone hydroSyc = new Hydrocyclone(inletSeparator.getWaterOutStream()); - * hydroSyc.run(); hydroSyc.getGasOutStream().getFluid().display(); - * hydroSyc.getLiquidOutStream().getFluid().display(); - */ - // ProcessSystem operations2 = operations.open("c:/temp/offshorePro.neqsim"); - // operations2.run(); - // cooler1stagecomp.getOutStream().phaseEnvelope(); - // coolingWater.run(); - - // liqFromlpscrubber.displayResult(); - // richGas.phaseEnvelope(); - // richGas.displayResult(); - operations.save("c:/temp/offshorePro.neqsim"); - inletSeparator.getLiquidOutStream().getFluid().display(); - inletSeparator.getWaterOutStream().getFluid().display(); - - /* - * Hydrocyclone hydroSyc = new Hydrocyclone(inletSeparator.getWaterOutStream()); - * hydroSyc.run(); hydroSyc.getGasOutStream().getFluid().display(); - * hydroSyc.getLiquidOutStream().getFluid().display(); - */ - // ProcessSystem operations2 = operations.open("c:/temp/offshorePro.neqsim"); - // operations2.run(); - // cooler1stagecomp.getOutStream().phaseEnvelope(); - // coolingWater.run(); - - // coolingWater.getFluid().init(3); - // heatEx.run();heatEx.run(); - // heatEx.getOutStream(0).getFluid().display(); - // heatEx.getOutStream(1).getFluid().display(); - // System.out.println("entropy production heat exchanger " - // +heatEx.getEntropyProduction("J/K") + " J/K"); - // System.out.println("mass balance production heat exchanger " - // +heatEx.getMassBalance("kg/sec")); - - System.out.println("Cooler Duty " + operations.getCoolerDuty("J/sec") / 1.0e6 + " MW"); - System.out.println("Heater Duty " + operations.getHeaterDuty("J/sec") / 1.0e6 + " MW"); - System.out.println("Power " + operations.getPower("W") / 1.0e6 + " MW"); - - System.out.println("exergy change " + operations.getExergyChange("J")); - System.out.println("total weight " + operations.getMechanicalWeight("kg") + " kg"); - } + + Cooler lpHeatExchanger = + new Cooler("1st stage gas heat exchanger", lpcompressor.getOutletStream()); + lpgasheater.setOutTemperature(35.0, "C"); + + Separator lpscrubber = new Separator("2nd stage scrubber", lpgasheater.getOutletStream()); + Stream liqFromlpscrubber = (Stream) lpscrubber.getLiquidOutStream(); + + Recycle lpscrubberResyc = new Recycle("mpscrubberRes"); + lpscrubberResyc.addStream(liqFromlpscrubber); + lpscrubberResyc.setOutletStream(oilToSep); + + Mixer mixermp = new Mixer("mp gas mixer"); + mixermp.addStream(lpscrubber.getGasOutStream()); + mixermp.addStream(mpseparator.getGasOutStream()); + + Compressor compressor2stage = + new Compressor("2nd stage recompressor", mixermp.getOutletStream()); + compressor2stage.setIsentropicEfficiency(0.75); + // compressor2stage.setOutletPressure(75.0); + + SetPoint compressorPresSet = + new SetPoint("comp pres set", compressor2stage, "pressure", inletSeparator); + + Heater secondndstagecooler = new Heater("2nd stage cooler", compressor2stage.getOutletStream()); + secondndstagecooler.setOutTemperature(290.0); + + Separator scrubbberfrom2ndstage = + new Separator("scrubber of mix gas HP", secondndstagecooler.getOutletStream()); + + Mixer mixer = new Mixer("HP rich gas mixer"); + mixer.addStream(inletSeparator.getGasOutStream()); + mixer.addStream(scrubbberfrom2ndstage.getGasOutStream()); + + Heater dewPointScrubberCooler = + new Heater("dew point scrubber cooler2", mixer.getOutletStream()); + dewPointScrubberCooler.setOutTemperature(273.15 + 32.3); + + Separator mpscrubber = + new Separator("dew point control scrubber", dewPointScrubberCooler.getOutletStream()); + + Stream liqFrommpscrubber = (Stream) mpscrubber.getLiquidOutStream(); + + Recycle mpscrubberResyc = new Recycle("hpscrubberRes"); + mpscrubberResyc.addStream(liqFrommpscrubber); + mpscrubberResyc.addStream(scrubbberfrom2ndstage.getLiquidOutStream()); + mpscrubberResyc.setOutletStream(oilToSep); + + MoleFractionControllerUtil waterRemoval = + new MoleFractionControllerUtil(mpscrubber.getGasOutStream()); + waterRemoval.setMoleFraction("water", 10.0e-6); + + Stream richGas = new Stream("rich gas", waterRemoval.getOutletStream()); + + Compressor exportGasCompressor = new Compressor("1st stage export compressor", richGas); + exportGasCompressor.setIsentropicEfficiency(0.75); + exportGasCompressor.setOutletPressure(richGas.getPressure() * 2.5); + + Cooler exportGasCompressorCooler = + new Cooler("1st stage export gas cooler", exportGasCompressor.getOutletStream()); + exportGasCompressorCooler.setOutTemperature(35.0, "C"); + + Compressor exportGasCompressor2 = + new Compressor("2nd stage export compressor", exportGasCompressorCooler.getOutletStream()); + exportGasCompressor2.setIsentropicEfficiency(0.75); + exportGasCompressor2 + .setOutletPressure(exportGasCompressorCooler.getOutletStream().getPressure() * 2.5 * 2.5); + + Cooler exportGasCompressorCooler2 = + new Cooler("2nd stage export gas cooler", exportGasCompressor2.getOutletStream()); + exportGasCompressorCooler2.setOutTemperature(35.0, "C"); + + Stream exportGas = new Stream("export gas", exportGasCompressorCooler2.getOutletStream()); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(wellStream); + operations.add(inletTempControl); + operations.add(valve); + operations.add(inletSeparator); + operations.add(oilToInletSep); + operations.add(heater1); + operations.add(valve2); + operations.add(waterDPvalve); + operations.add(waterStabSep); + operations.add(waterToTreatment); + operations.add(gasFromWaterTreatment); + operations.add(mpseparator); + operations.add(oilToSep); + operations.add(valvempValve); + operations.add(lpseparator); + operations.add(stableOilStream); + operations.add(compressorPresSet2); + operations.add(lpcompressor); + operations.add(lpgasheater); + // operations.add(coolingWater); + // operations.add(heatEx); + operations.add(lpHeatExchanger); + operations.add(lpscrubber); + operations.add(liqFromlpscrubber); + operations.add(lpscrubberResyc); + operations.add(mixermp); + + operations.add(compressorPresSet); + operations.add(compressor2stage); + operations.add(secondndstagecooler); + operations.add(scrubbberfrom2ndstage); + operations.add(mixer); + operations.add(dewPointScrubberCooler); + operations.add(mpscrubber); + operations.add(liqFrommpscrubber); + operations.add(mpscrubberResyc); + operations.add(waterRemoval); + operations.add(richGas); + operations.add(exportGasCompressor); + operations.add(exportGasCompressorCooler); + operations.add(exportGasCompressor2); + operations.add(exportGasCompressorCooler2); + operations.add(exportGas); + // ProcessSystem operations2 = operations.open("c:/temp/offshorePro.neqsim"); + // ((Heater) operations2.getUnit("dew point scrubber + // cooler2")).setOutTemperature(298.15); + // operations2.run(); + // ((Stream) operations2.getUnit("rich gas")).phaseEnvelope(); + + // operations.displayResult(); + // inletSeparator.displayResult(); + // richGas.displayResult(); + // richGas.displayResult(); + // mpseparator.displayResult(); + + // oilToSep.displayResult(); + // lppump.displayResult(); + + operations.run(); + exportGas.displayResult(); + exportGasCompressor2.generateCompressorCurves(); + exportGasCompressor2.setUsePolytropicCalc(true); + exportGasCompressor2.setSpeed(11500); + exportGasCompressor2.getCompressorChart().setHeadUnit("kJ/kg"); + exportGasCompressor2.run(); + System.out.println("power " + exportGasCompressor2.getPower()); + // operations.run(); + exportGas.displayResult(); + /* + * // System.out.println("second stage comp power " + ((Compressor) // + * operations.getUnit("2nd stage recompressor")).getPower()/1.0e3 + " kW"); + * + * // System.out.println("first stage comp power " + ((Compressor) + * operations.getUnit("1st stage recompressor")).getPower()/1.0e3 + " kW"); + * + * System.out.println("gas from inlet separator " + ((Separator) + * operations.getUnit("1st stage separator")) + * .getGasOutStream().getFluid().getFlowRate("MSm3/day")); + * + * System.out .println("pressure of export oil " + ((Stream) + * operations.getUnit("stable oil")).getPressure("bara")); + * + * System.out.println( "temperature of export oil " + ((Stream) + * operations.getUnit("stable oil")).getTemperature("C")); + * + * System.out.println("TVP of export oil (30.0 C) " + ((Stream) + * operations.getUnit("stable oil")).TVP(30.0, "C")); + * + * // System.out.println("entropy production " + // operations.getEntropyProduction("J/K") + + * " J/K"); // System.out.println("mass balance separator " + ((Separator) + * operations.getUnit("scrubber of mix gas HP")).getMassBalance("kg/sec") + " kg/sec"); + * + * // liqFromlpscrubber.displayResult(); // richGas.phaseEnvelope(); // richGas.displayResult(); + * operations.save("c:/temp/offshorePro.neqsim"); + * inletSeparator.getLiquidOutStream().getFluid().display(); + * inletSeparator.getWaterOutStream().getFluid().display(); exportGas.displayResult(); /* + * Hydrocyclone hydroSyc = new Hydrocyclone(inletSeparator.getWaterOutStream()); hydroSyc.run(); + * hydroSyc.getGasOutStream().getFluid().display(); + * hydroSyc.getLiquidOutStream().getFluid().display(); + */ + // ProcessSystem operations2 = operations.open("c:/temp/offshorePro.neqsim"); + // operations2.run(); + // cooler1stagecomp.getOutStream().phaseEnvelope(); + // coolingWater.run(); + + // liqFromlpscrubber.displayResult(); + // richGas.phaseEnvelope(); + // richGas.displayResult(); + operations.save("c:/temp/offshorePro.neqsim"); + inletSeparator.getLiquidOutStream().getFluid().display(); + inletSeparator.getWaterOutStream().getFluid().display(); + + /* + * Hydrocyclone hydroSyc = new Hydrocyclone(inletSeparator.getWaterOutStream()); hydroSyc.run(); + * hydroSyc.getGasOutStream().getFluid().display(); + * hydroSyc.getLiquidOutStream().getFluid().display(); + */ + // ProcessSystem operations2 = operations.open("c:/temp/offshorePro.neqsim"); + // operations2.run(); + // cooler1stagecomp.getOutStream().phaseEnvelope(); + // coolingWater.run(); + + // coolingWater.getFluid().init(3); + // heatEx.run();heatEx.run(); + // heatEx.getOutStream(0).getFluid().display(); + // heatEx.getOutStream(1).getFluid().display(); + // System.out.println("entropy production heat exchanger " + // +heatEx.getEntropyProduction("J/K") + " J/K"); + // System.out.println("mass balance production heat exchanger " + // +heatEx.getMassBalance("kg/sec")); + + System.out.println("Cooler Duty " + operations.getCoolerDuty("J/sec") / 1.0e6 + " MW"); + System.out.println("Heater Duty " + operations.getHeaterDuty("J/sec") / 1.0e6 + " MW"); + System.out.println("Power " + operations.getPower("W") / 1.0e6 + " MW"); + + System.out.println("exergy change " + operations.getExergyChange("J")); + // System.out.println("total weight " + operations.getMechanicalWeight("kg") + " kg"); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/OnshoreProcess1.java b/src/test/java/neqsim/processSimulation/util/example/OnshoreProcess1.java index 7499f24fa8..08af4bb433 100644 --- a/src/test/java/neqsim/processSimulation/util/example/OnshoreProcess1.java +++ b/src/test/java/neqsim/processSimulation/util/example/OnshoreProcess1.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.util.example; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.measurementDevice.MeasurementDeviceInterface; import neqsim.processSimulation.measurementDevice.MolarMassAnalyser; import neqsim.processSimulation.measurementDevice.PressureTransmitter; @@ -16,504 +18,555 @@ import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; /** - *

OnshoreProcess1 class.

+ *

+ * OnshoreProcess1 class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class OnshoreProcess1 { - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - try { - double totalProductionRate = 222.5808099 * 3600.0; // kg/time - double formationWater = 0.02; // m^3/day - double productionSplit = 0.999; // 1.0 means only snohvit - - // MEG injection rate - double injectionRate = 6.3;// m^3/time - double wtFracMEG = 0.9; - double molMEG = wtFracMEG * injectionRate * 1.117 * 1000.0 / 3600.0 / 0.062; - double molwater = (1.0 - wtFracMEG) * injectionRate * 1.0 * 1000.0 / 3600.0 / 0.018; - - // Snohvit reservoir system - double reservoirGasMolarMassSnohvit = 0.02186;// kg/mol - double reservoirGasFlowSnohvit = productionSplit * totalProductionRate; // kg/time - // Designbasis: - // 223.04 - // kg/sek - double reservoirTemperatureSnohvit = 273.15 + 91.4; // K - double reservoirPressureSnohvit = 264.4; // bar - double snohvitFormationWaterFlowRate = formationWater * 1000.0 / 3600.0 / 0.018 / 24.0; - // molefractions - double nitrogen_s = 2.525, CO2_s = 5.262, methane_s = 81.006, ethane_s = 5.027, - propane_s = 2.534, ibutane_s = 0.4, nbutane_s = 0.83, benzene_s = 0.078, - toluene_s = 0.09, mXylene_s = 0.061, water_s = 4.0; - double C6_s = 0.352, C7_s = 0.469, C8_s = 0.407, C9_s = 0.203, C10_s = 0.086, - C11_s = 0.063, C12_s = 0.062, C13_s = 0.049, C14_s = 0.033, C15_s = 0.025, - C16_s = 0.015, C17_s = 0.015, C18_s = 0.010, C19_s = 0.007, C20plus_s = 0.031; - double C6_M_s = 85.0, C7_M_s = 90.7, C8_M_s = 104.1, C9_M_s = 119.8, C10_M_s = 133.0, - C11_M_s = 147.0, C12_M_s = 159.0, C13_M_s = 173.0, C14_M_s = 188.0, - C15_M_s = 202.0, C16_M_s = 213.0, C17_M_s = 230.0, C18_M_s = 247.0, - C19_M_s = 258.0, C20plus_M_s = 315.0; - double C6_d_s = 0.668, C7_d_s = 0.745, C8_d_s = 0.767, C9_d_s = 0.776, C10_d_s = 0.783, - C11_d_s = 0.787, C12_d_s = 0.799, C13_d_s = 0.811, C14_d_s = 0.821, - C15_d_s = 0.828, C16_d_s = 0.836, C17_d_s = 0.834, C18_d_s = 0.835, - C19_d_s = 0.845, C20plus_d_s = 0.872; - - // Albatross reservoir system - double reservoirGasMolarMassAlbatross = 0.022;// kg/mol - double reservoirGasFlowAlbatross = (1.0 - productionSplit) * totalProductionRate; // kg/time - double reservoirTemperatureAlbatross = 273.15 + 65.0; // K - double reservoirPressureAlbatross = 210.0; // bar - // molefractions - double nitrogen_a = 0.1, CO2_a = 7.0, methane_a = 80.43, ethane_a = 4.99, - propane_a = 2.51, ibutane_a = 0.39, nbutane_a = 0.82, benzene_a = 0.077, - toluene_a = 0.089, mXylene_a = 0.06, water_a = 2.0; - double C6_a = 0.352, C7_a = 0.91, C8_a = 0.317, C9_a = 0.142, C10_a = 0.141, - C11_a = 0.063, C12_a = 0.062; - double C6_M_a = 85.0, C7_M_a = 90.7, C8_M_a = 104.1, C9_M_a = 119.8, C10_M_a = 133.0, - C11_M_a = 147.0, C12_M_a = 159.0; - double C6_d_a = 0.668, C7_d_a = 0.745, C8_d_a = 0.767, C9_d_a = 0.776, C10_d_a = 0.783, - C11_d_a = 0.787, C12_d_a = 0.799; - - neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos( - reservoirTemperatureSnohvit, reservoirPressureSnohvit); - neqsim.thermo.system.SystemInterface testSystem3 = - new neqsim.thermo.system.SystemSrkEos(reservoirTemperatureSnohvit, - reservoirPressureSnohvit); - neqsim.thermo.system.SystemInterface testSystem2 = - new neqsim.thermo.system.SystemSrkEos(reservoirTemperatureAlbatross, - reservoirPressureAlbatross); - neqsim.thermo.system.SystemInterface testSystem4 = - new neqsim.thermo.system.SystemSrkEos(reservoirTemperatureAlbatross, - reservoirPressureAlbatross); - neqsim.thermo.system.SystemInterface snohvitFormationWater = - new neqsim.thermo.system.SystemSrkEos(reservoirTemperatureSnohvit, - reservoirPressureSnohvit); - - testSystem.addComponent("nitrogen", - nitrogen_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - testSystem.addComponent("CO2", - CO2_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - testSystem.addComponent("methane", - methane_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - testSystem.addComponent("ethane", - ethane_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - testSystem.addComponent("propane", - propane_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - testSystem.addComponent("i-butane", - ibutane_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - testSystem.addComponent("n-butane", - nbutane_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - testSystem.addComponent("benzene", - benzene_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - testSystem.addComponent("toluene", - toluene_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - testSystem.addComponent("m-Xylene", - mXylene_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - - testSystem.addTBPfraction("C6", - C6_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C6_M_s / 1000.0, C6_d_s); - testSystem.addTBPfraction("C7", - C7_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C7_M_s / 1000.0, C7_d_s); - testSystem.addTBPfraction("C8", - C8_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C8_M_s / 1000.0, C8_d_s); - testSystem.addTBPfraction("C9", - C9_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C9_M_s / 1000.0, C9_d_s); - testSystem.addTBPfraction("C10", - C10_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C10_M_s / 1000.0, C10_d_s); - testSystem.addTBPfraction("C11", - C11_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C11_M_s / 1000.0, C11_d_s); - testSystem.addTBPfraction("C12", - C12_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C12_M_s / 1000.0, C12_d_s); - testSystem.addTBPfraction("C13", - C13_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C13_M_s / 1000.0, C13_d_s); - testSystem.addTBPfraction("C14", - C14_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C14_M_s / 1000.0, C14_d_s); - testSystem.addTBPfraction("C15", - C15_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C15_M_s / 1000.0, C15_d_s); - testSystem.addTBPfraction("C16", - C16_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C16_M_s / 1000.0, C16_d_s); - testSystem.addTBPfraction("C17", - C17_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C17_M_s / 1000.0, C17_d_s); - testSystem.addTBPfraction("C18", - C18_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C18_M_s / 1000.0, C18_d_s); - testSystem.addTBPfraction("C19", - C19_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C19_M_s / 1000.0, C19_d_s); - testSystem.addTBPfraction("C20", - C20plus_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, - C20plus_M_s / 1000.0, C20plus_d_s); - - testSystem.addComponent("water", - water_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - // //testSystem.addComponent("Fe++", - // 1e-10*reservoirGasFlowSnohvit/360000.0/reservoirGasMolarMassSnohvit); - // //testSystem.addComponent("Na+", - // 1e-10*reservoirGasFlowSnohvit/360000.0/reservoirGasMolarMassSnohvit); - // //testSystem.addComponent("OH-", - // 3e-10*reservoirGasFlowSnohvit/360000.0/reservoirGasMolarMassSnohvit); - testSystem.addComponent("MEG", - 1e-10 * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); - - // if(testSystem.characterizePlusFraction()){ - // testSystem.getCharacterization().setPseudocomponents(true); - // testSystem.getCharacterization().setNumberOfPseudocomponents(5); - // testSystem.getCharacterization().addCharacterizedPlusFraction(); - // } - - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - - testSystem2.addComponent("nitrogen", nitrogen_a * reservoirGasFlowAlbatross / 360000.0 - / reservoirGasMolarMassAlbatross); - testSystem2.addComponent("CO2", - CO2_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); - testSystem2.addComponent("methane", methane_a * reservoirGasFlowAlbatross / 360000.0 - / reservoirGasMolarMassAlbatross); - testSystem2.addComponent("ethane", ethane_a * reservoirGasFlowAlbatross / 360000.0 - / reservoirGasMolarMassAlbatross); - testSystem2.addComponent("propane", propane_a * reservoirGasFlowAlbatross / 360000.0 - / reservoirGasMolarMassAlbatross); - testSystem2.addComponent("i-butane", ibutane_a * reservoirGasFlowAlbatross / 360000.0 - / reservoirGasMolarMassAlbatross); - testSystem2.addComponent("n-butane", nbutane_a * reservoirGasFlowAlbatross / 360000.0 - / reservoirGasMolarMassAlbatross); - testSystem2.addComponent("benzene", benzene_a * reservoirGasFlowAlbatross / 360000.0 - / reservoirGasMolarMassAlbatross); - testSystem2.addComponent("toluene", toluene_a * reservoirGasFlowAlbatross / 360000.0 - / reservoirGasMolarMassAlbatross); - testSystem2.addComponent("m-Xylene", mXylene_a * reservoirGasFlowAlbatross / 360000.0 - / reservoirGasMolarMassAlbatross); - - testSystem2.addComponent("water", water_a * reservoirGasFlowAlbatross / 360000.0 - / reservoirGasMolarMassAlbatross); - // testSystem2.addComponent("Fe++", - // 1e-10*reservoirGasFlowAlbatross/360000.0/reservoirGasMolarMassAlbatross); - // testSystem2.addComponent("Na+", - // 1e-10*reservoirGasFlowAlbatross/360000.0/reservoirGasMolarMassAlbatross); - // testSystem2.addComponent("OH-", - // 3e-10*reservoirGasFlowAlbatross/360000.0/reservoirGasMolarMassAlbatross); - testSystem2.addComponent("MEG", - 1e-10 * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); - testSystem2.setMixingRule(2); - - testSystem3.addComponent("water", molwater); - // testSystem3.addComponent("Na+", (molwater+molMEG)/5000.0); - // testSystem3.addComponent("OH-", (molwater+molMEG)/5000.0); - testSystem3.addComponent("MEG", molMEG); - testSystem3.setMixingRule(2); - - snohvitFormationWater.addComponent("water", snohvitFormationWaterFlowRate); - snohvitFormationWater.setMixingRule(2); - - StreamInterface stream_1 = new Stream("Stream1", testSystem); - - ThreePhaseSeparator separator = new ThreePhaseSeparator("Separator 1", stream_1); - MeasurementDeviceInterface reservoirTemperaturTransmitter = - new TemperatureTransmitter(stream_1); - MeasurementDeviceInterface reservoirPressureTransmitter = - new PressureTransmitter(stream_1); - WaterContentAnalyser waterAnalyser = - new WaterContentAnalyser(separator.getGasOutStream()); - waterAnalyser.setName("Snohvit Total Water Analyser"); - MolarMassAnalyser molarMassAnalyser = - new MolarMassAnalyser(separator.getGasOutStream()); - molarMassAnalyser.setName("Snohvit molar mass analyser"); - StreamInterface stream_2 = separator.getGasOutStream(); - stream_2.setName("Gas From Snohvit Reservoir"); - - StreamInterface MEGstream_1 = new Stream("MEG Stream1", testSystem3); - StreamInterface snohvitFormationWaterStream = - new Stream("snohvitFormationWaterStream", snohvitFormationWater); - - Mixer MEGmixer1 = new Mixer("MEG Mixer 1"); - MEGmixer1.addStream(stream_2); - MEGmixer1.addStream(MEGstream_1); - MEGmixer1.addStream(snohvitFormationWaterStream); - - ThrottlingValve valve1 = - new ThrottlingValve("snohvit valve", MEGmixer1.getOutletStream()); - valve1.setOutletPressure(125.0); - - // Albatross reservoir stream - Stream stream_3 = new Stream("Stream2", testSystem2); - Separator separator2 = new Separator("Separator 2", stream_3); - WaterContentAnalyser waterAnalyser2 = - new WaterContentAnalyser(separator2.getGasOutStream()); - waterAnalyser2.setName("Albatross Total Water Analyser"); - MolarMassAnalyser molarMassAnalyser2 = - new MolarMassAnalyser(separator2.getGasOutStream()); - molarMassAnalyser2.setName("Albatross molar mass analyser"); - - StreamInterface stream_4 = separator2.getGasOutStream(); - stream_4.setName("Gas From Albatross Reservoir"); - - ThrottlingValve valve2 = new ThrottlingValve("albatross valve", stream_4); - valve2.setOutletPressure(125.0); - - // Field mixer - Mixer mixer1 = new Mixer("Field Mixer"); - mixer1.addStream(valve1.getOutletStream()); - mixer1.addStream(valve2.getOutletStream()); - - WaterContentAnalyser waterAnalyser3 = - new WaterContentAnalyser(mixer1.getOutletStream()); - waterAnalyser3.setName("Total Water Analyser"); - - // Pipeline - SimpleTPoutPipeline pipeLine1 = - new SimpleTPoutPipeline("snohvit pipeline", mixer1.getOutletStream()); - pipeLine1.setOutPressure(55.0); - pipeLine1.setOutTemperature(273.15 + 5.0); - pipeLine1.setNumberOfLegs(1); - pipeLine1.setPipeDiameters(new double[] {1.2, 1.2}); - pipeLine1.setLegPositions(new double[] {0, 150000.0}); - pipeLine1.setOuterTemperatures(new double[] {0.0, 0.0}); - - //// IronIonSaturationStream ironSatStream = new - // IronIonSaturationStream(pipeLine1.getOutStream()); - - // // Land plant - ThreePhaseSeparator slugCatcher = - new ThreePhaseSeparator("slugCatcher", pipeLine1.getOutletStream()); - - VolumeFlowTransmitter volumeTransmitter2 = - new VolumeFlowTransmitter(slugCatcher.getOilOutStream()); - volumeTransmitter2.setMeasuredPhaseNumber(0); - volumeTransmitter2.setName("Condensate Volume Flow From Slug Catcher"); - - VolumeFlowTransmitter volumeTransmitter1 = - new VolumeFlowTransmitter(slugCatcher.getWaterOutStream()); - volumeTransmitter1.setMeasuredPhaseNumber(0); - volumeTransmitter1.setName("MEG Volume FLow From Slug Catcher"); - - VolumeFlowTransmitter volumeTransmitter3 = - new VolumeFlowTransmitter(slugCatcher.getGasOutStream()); - volumeTransmitter3.setMeasuredPhaseNumber(0); - volumeTransmitter3.setName("Gas Volume FLow From Slug Catcher"); - - // Stream stream_5 = new Stream(slugCatcher.getWaterOutStream()); - // stream_5.setName("MEG stream from slugcatcher"); - - Heater condensateheater1 = - new Heater("Condensate heater1", slugCatcher.getOilOutStream()); - condensateheater1.setdT(23.4); - - // Heater gasHeater = new Heater(slugCatcher.getGasOutStream()); - // gasHeater.setName("Gas heater after slugcatcher"); - // gasHeater.setdT(30.0); - - ThreePhaseSeparator condensateSeparator = - new ThreePhaseSeparator("condensateSeparator", - condensateheater1.getOutletStream()); - - // Heater MEGheater1 = new Heater(stream_5); - // MEGheater1.setName("MEG heater1"); - // MEGheater1.setdT(23.4); - - // SnohvitCO2RemovalModule co2Module = new SnohvitCO2RemovalModule(); - // co2Module.addInputStream("streamToAbsorber", gasHeater.getOutStream()); - - // Heater MEGheater2 = new Heater(MEGheater1.getOutStream()); - // MEGheater2.setName("MEG heater2"); - // MEGheater2.setdT(20.0); - - // ThrottlingValve valve3 = new ThrottlingValve("MEG flash valve 1", - // MEGheater2.getOutStream()); - // valve3.setOutletPressure(1.4); - - // ThreePhaseSeparator separator3 = new ThreePhaseSeparator("MEG LP - // separator", valve3.getOutStream()); - - // VolumeFlowTransmitter volumeTransmitter5= new - // VolumeFlowTransmitter(separator3.getGasOutStream()); - // volumeTransmitter5.setName("MEG Valve 1 Gas Volume FLow"); - - // Heater MEGheater3 = new Heater(separator3.getWaterOutStream()); - // MEGheater3.setName("MEG heater3"); - // MEGheater3.setdT(-35.0); - - // ThrottlingValve valve4 = new ThrottlingValve("MEG flash valve 2", - // MEGheater3.getOutStream()); - // valve4.setOutletPressure(1.05); - - //// //ScalePotentialCheckStream stream_6 = new - // ScalePotentialCheckStream(valve4.getOutStream()); - - // Stream stream_7 = new Stream(valve4.getOutStream()); - - // ThreePhaseSeparator separator4 = new ThreePhaseSeparator("MEG Storage - // tank 13-TA-101", stream_7); - - // Stream stream_8 = new - // Stream(co2Module.getOutputStream("streamFromAbsorber")); - - // GasHeater.setName("Gas heater"); - // GasHeater.setdT(-35.0); - - // CO2-removal - // Stream streamToCO2removal = new Stream(slugCatcher.getGasOutStream()); - // streamToCO2removal.setName("Gas to CO2 removal"); - // VolumeFlowTransmitter volumeTransmitter_StreamToCO2removal = new - // VolumeFlowTransmitter(streamToCO2removal); - // volumeTransmitter_StreamToCO2removal.setUnit("Nm^3/day"); - // volumeTransmitter_StreamToCO2removal.setName("Stream to CO2 removal - // Volume FLow"); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(reservoirTemperaturTransmitter); - operations.add(reservoirPressureTransmitter); - operations.add(separator); - operations.add(stream_2); - operations.add(MEGstream_1); - operations.add(snohvitFormationWaterStream); - operations.add(MEGmixer1); - operations.add(valve1); - - operations.add(stream_3); - operations.add(separator2); - operations.add(stream_4); - operations.add(valve2); - - operations.add(mixer1); - operations.add(pipeLine1); - ////// operations.add(ironSatStream); - operations.add(slugCatcher); - operations.add(condensateheater1); - // operations.add(gasHeater); - operations.add(condensateSeparator); - // operations.add(stream_5); - - // operations.add(MEGheater1); - // operations.add(co2Module); - // operations.add(MEGheater2); - - // operations.add(valve3); - // operations.add(separator3); - - //// operations.add(streamToCO2removal); - - // operations.add(MEGheater3); - // operations.add(valve4); - - //// operations.add(stream_6); - // operations.add(stream_7); - // operations.add(separator4); - // operations.add(stream_8); - - // add transmitters - // operations.add(waterAnalyser); - // operations.add(waterAnalyser2); - // operations.add(waterAnalyser3); - // operations.add(molarMassAnalyser); - // operations.add(molarMassAnalyser2); - operations.add(volumeTransmitter1); - operations.add(volumeTransmitter2); - operations.add(volumeTransmitter3); - // operations.add(volumeTransmitter_StreamToCO2removal); - - operations.run(); - operations.displayResult(); - operations.reportMeasuredValues(); - - double wateraqphase = - slugCatcher.getWaterOutStream().getThermoSystem().getTotalNumberOfMoles() - * slugCatcher.getWaterOutStream().getThermoSystem().getPhase(0) - .getComponent("water").getMolarMass() - * slugCatcher.getWaterOutStream().getThermoSystem().getPhase(0) - .getComponent("water").getx() - * 3600.0; - - System.out.println("kg water in gas phase from slug catcher " - + slugCatcher.getGasOutStream().getThermoSystem().getTotalNumberOfMoles() - * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0) - .getComponent("water").getMolarMass() - * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0) - .getComponent("water").getx() - * 3600.0 - + " kg/hr"); - System.out.println("kg water in condensate phase from slug catcher " - + slugCatcher.getOilOutStream().getThermoSystem().getTotalNumberOfMoles() - * slugCatcher.getOilOutStream().getThermoSystem().getPhase(0) - .getComponent("water").getMolarMass() - * slugCatcher.getOilOutStream().getThermoSystem().getPhase(0) - .getComponent("water").getx() - * 3600.0 - + " kg/hr"); - System.out.println( - "kg water in aqueous phase from slug catcher " + wateraqphase + " kg/hr"); - - double MEGaqphase = - slugCatcher.getWaterOutStream().getThermoSystem().getTotalNumberOfMoles() - * slugCatcher.getWaterOutStream().getThermoSystem().getPhase(0) - .getComponent("MEG").getMolarMass() - * slugCatcher.getWaterOutStream().getThermoSystem().getPhase(0) - .getComponent("MEG").getx() - * 3600.0; - System.out.println("kg MEG in gas phase from slug catcher " - + slugCatcher.getGasOutStream().getThermoSystem().getTotalNumberOfMoles() - * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0) - .getComponent("MEG").getMolarMass() - * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0) - .getComponent("MEG").getx() - * 3600.0 - + " kg/hr"); - System.out.println("kg MEG in condensate phase from slug catcher " - + slugCatcher.getOilOutStream().getThermoSystem().getTotalNumberOfMoles() - * slugCatcher.getOilOutStream().getThermoSystem().getPhase(0) - .getComponent("MEG").getMolarMass() - * slugCatcher.getOilOutStream().getThermoSystem().getPhase(0) - .getComponent("MEG").getx() - * 3600.0 - + " kg/hr"); - System.out - .println("kg MEG in aqueous phase from slug catcher " + MEGaqphase + " kg/hr"); - - System.out.println("wt% MEG " + MEGaqphase / (wateraqphase + MEGaqphase) * 100); - - volumeTransmitter3.setUnit("Sm^3/day"); - System.out.println("gas rate from slug catcher " - + volumeTransmitter3.getMeasuredValue() / 1.0e6 + " MSm^3/day"); - System.out.println("gas rate from slug catcher " - + volumeTransmitter3.getMeasuredValue() / 1.0e6 + " MSm^3/day"); - System.out.println("water in gas phase from slug catcher " - + slugCatcher.getGasOutStream().getThermoSystem().getTotalNumberOfMoles() - * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0) - .getComponent("water").getMolarMass() - * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0) - .getComponent("water").getx() - * 3600.0 / (volumeTransmitter3.getMeasuredValue() / 24.0) * 1000.0 - + " gr water/Sm^3 gas"); - System.out.println("gas rate " - + slugCatcher.getGasOutStream().getThermoSystem().getTotalNumberOfMoles() - * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0) - .getMolarMass() - * 3600.0 - + " kg gas/hr"); - } catch (Exception e) { - e.printStackTrace(); - } + static Logger logger = LogManager.getLogger(OnshoreProcess1.class); + + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + try { + double totalProductionRate = 222.5808099 * 3600.0; // kg/time + double formationWater = 0.02; // m^3/day + double productionSplit = 0.999; // 1.0 means only snohvit + + // MEG injection rate + double injectionRate = 6.3; // m^3/time + double wtFracMEG = 0.9; + double molMEG = wtFracMEG * injectionRate * 1.117 * 1000.0 / 3600.0 / 0.062; + double molwater = (1.0 - wtFracMEG) * injectionRate * 1.0 * 1000.0 / 3600.0 / 0.018; + + // Snohvit reservoir system + double reservoirGasMolarMassSnohvit = 0.02186; // kg/mol + double reservoirGasFlowSnohvit = productionSplit * totalProductionRate; // kg/time + // Designbasis: + // 223.04 + // kg/sek + double reservoirTemperatureSnohvit = 273.15 + 91.4; // K + double reservoirPressureSnohvit = 264.4; // bar + double snohvitFormationWaterFlowRate = formationWater * 1000.0 / 3600.0 / 0.018 / 24.0; + // molefractions + double nitrogen_s = 2.525; + double CO2_s = 5.262; + double methane_s = 81.006; + double ethane_s = 5.027; + double propane_s = 2.534; + double ibutane_s = 0.4; + double nbutane_s = 0.83; + double benzene_s = 0.078; + double toluene_s = 0.09; + double mXylene_s = 0.061; + double water_s = 4.0; + double C6_s = 0.352; + double C7_s = 0.469; + double C8_s = 0.407; + double C9_s = 0.203; + double C10_s = 0.086; + double C11_s = 0.063; + double C12_s = 0.062; + double C13_s = 0.049; + double C14_s = 0.033; + double C15_s = 0.025; + double C16_s = 0.015; + double C17_s = 0.015; + double C18_s = 0.010; + double C19_s = 0.007; + double C20plus_s = 0.031; + double C6_M_s = 85.0; + double C7_M_s = 90.7; + double C8_M_s = 104.1; + double C9_M_s = 119.8; + double C10_M_s = 133.0; + double C11_M_s = 147.0; + double C12_M_s = 159.0; + double C13_M_s = 173.0; + double C14_M_s = 188.0; + double C15_M_s = 202.0; + double C16_M_s = 213.0; + double C17_M_s = 230.0; + double C18_M_s = 247.0; + double C19_M_s = 258.0; + double C20plus_M_s = 315.0; + double C6_d_s = 0.668; + + double C7_d_s = 0.745; + double C8_d_s = 0.767; + double C9_d_s = 0.776; + double C10_d_s = 0.783; + double C11_d_s = 0.787; + double C12_d_s = 0.799; + double C13_d_s = 0.811; + double C14_d_s = 0.821; + double C15_d_s = 0.828; + double C16_d_s = 0.836; + double C17_d_s = 0.834; + double C18_d_s = 0.835; + double C19_d_s = 0.845; + double C20plus_d_s = 0.872; + // Albatross reservoir system + double reservoirGasMolarMassAlbatross = 0.022; // kg/mol + double reservoirGasFlowAlbatross = (1.0 - productionSplit) * totalProductionRate; // kg/time + double reservoirTemperatureAlbatross = 273.15 + 65.0; // K + double reservoirPressureAlbatross = 210.0; // bar + // molefractions + double nitrogen_a = 0.1; + double CO2_a = 7.0; + double methane_a = 80.43; + double ethane_a = 4.99; + double propane_a = 2.51; + double ibutane_a = 0.39; + double nbutane_a = 0.82; + double benzene_a = 0.077; + double toluene_a = 0.089; + double mXylene_a = 0.06; + double water_a = 2.0; + double C6_a = 0.352; + double C7_a = 0.91; + double C8_a = 0.317; + double C9_a = 0.142; + double C10_a = 0.141; + double C11_a = 0.063; + double C12_a = 0.062; + double C6_M_a = 85.0; + double C7_M_a = 90.7; + double C8_M_a = 104.1; + double C9_M_a = 119.8; + double C10_M_a = 133.0; + double C11_M_a = 147.0; + double C12_M_a = 159.0; + double C6_d_a = 0.668; + + double C7_d_a = 0.745; + double C8_d_a = 0.767; + double C9_d_a = 0.776; + double C10_d_a = 0.783; + double C11_d_a = 0.787; + double C12_d_a = 0.799; + neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos( + reservoirTemperatureSnohvit, reservoirPressureSnohvit); + neqsim.thermo.system.SystemInterface testSystem3 = new neqsim.thermo.system.SystemSrkEos( + reservoirTemperatureSnohvit, reservoirPressureSnohvit); + neqsim.thermo.system.SystemInterface testSystem2 = new neqsim.thermo.system.SystemSrkEos( + reservoirTemperatureAlbatross, reservoirPressureAlbatross); + neqsim.thermo.system.SystemInterface testSystem4 = new neqsim.thermo.system.SystemSrkEos( + reservoirTemperatureAlbatross, reservoirPressureAlbatross); + neqsim.thermo.system.SystemInterface snohvitFormationWater = + new neqsim.thermo.system.SystemSrkEos(reservoirTemperatureSnohvit, + reservoirPressureSnohvit); + + testSystem.addComponent("nitrogen", + nitrogen_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + testSystem.addComponent("CO2", + CO2_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + testSystem.addComponent("methane", + methane_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + testSystem.addComponent("ethane", + ethane_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + testSystem.addComponent("propane", + propane_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + testSystem.addComponent("i-butane", + ibutane_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + testSystem.addComponent("n-butane", + nbutane_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + testSystem.addComponent("benzene", + benzene_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + testSystem.addComponent("toluene", + toluene_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + testSystem.addComponent("m-Xylene", + mXylene_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + + testSystem.addTBPfraction("C6", + C6_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, C6_M_s / 1000.0, + C6_d_s); + testSystem.addTBPfraction("C7", + C7_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, C7_M_s / 1000.0, + C7_d_s); + testSystem.addTBPfraction("C8", + C8_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, C8_M_s / 1000.0, + C8_d_s); + testSystem.addTBPfraction("C9", + C9_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, C9_M_s / 1000.0, + C9_d_s); + testSystem.addTBPfraction("C10", + C10_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C10_M_s / 1000.0, C10_d_s); + testSystem.addTBPfraction("C11", + C11_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C11_M_s / 1000.0, C11_d_s); + testSystem.addTBPfraction("C12", + C12_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C12_M_s / 1000.0, C12_d_s); + testSystem.addTBPfraction("C13", + C13_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C13_M_s / 1000.0, C13_d_s); + testSystem.addTBPfraction("C14", + C14_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C14_M_s / 1000.0, C14_d_s); + testSystem.addTBPfraction("C15", + C15_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C15_M_s / 1000.0, C15_d_s); + testSystem.addTBPfraction("C16", + C16_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C16_M_s / 1000.0, C16_d_s); + testSystem.addTBPfraction("C17", + C17_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C17_M_s / 1000.0, C17_d_s); + testSystem.addTBPfraction("C18", + C18_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C18_M_s / 1000.0, C18_d_s); + testSystem.addTBPfraction("C19", + C19_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C19_M_s / 1000.0, C19_d_s); + testSystem.addTBPfraction("C20", + C20plus_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit, + C20plus_M_s / 1000.0, C20plus_d_s); + + testSystem.addComponent("water", + water_s * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + // //testSystem.addComponent("Fe++", + // 1e-10*reservoirGasFlowSnohvit/360000.0/reservoirGasMolarMassSnohvit); + // //testSystem.addComponent("Na+", + // 1e-10*reservoirGasFlowSnohvit/360000.0/reservoirGasMolarMassSnohvit); + // //testSystem.addComponent("OH-", + // 3e-10*reservoirGasFlowSnohvit/360000.0/reservoirGasMolarMassSnohvit); + testSystem.addComponent("MEG", + 1e-10 * reservoirGasFlowSnohvit / 360000.0 / reservoirGasMolarMassSnohvit); + + // if(testSystem.characterizePlusFraction()){ + // testSystem.getCharacterization().setPseudocomponents(true); + // testSystem.getCharacterization().setNumberOfPseudocomponents(5); + // testSystem.getCharacterization().addCharacterizedPlusFraction(); + // } + + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + + testSystem2.addComponent("nitrogen", + nitrogen_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + testSystem2.addComponent("CO2", + CO2_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + testSystem2.addComponent("methane", + methane_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + testSystem2.addComponent("ethane", + ethane_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + testSystem2.addComponent("propane", + propane_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + testSystem2.addComponent("i-butane", + ibutane_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + testSystem2.addComponent("n-butane", + nbutane_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + testSystem2.addComponent("benzene", + benzene_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + testSystem2.addComponent("toluene", + toluene_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + testSystem2.addComponent("m-Xylene", + mXylene_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + + testSystem2.addComponent("water", + water_a * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + // testSystem2.addComponent("Fe++", + // 1e-10*reservoirGasFlowAlbatross/360000.0/reservoirGasMolarMassAlbatross); + // testSystem2.addComponent("Na+", + // 1e-10*reservoirGasFlowAlbatross/360000.0/reservoirGasMolarMassAlbatross); + // testSystem2.addComponent("OH-", + // 3e-10*reservoirGasFlowAlbatross/360000.0/reservoirGasMolarMassAlbatross); + testSystem2.addComponent("MEG", + 1e-10 * reservoirGasFlowAlbatross / 360000.0 / reservoirGasMolarMassAlbatross); + testSystem2.setMixingRule(2); + + testSystem3.addComponent("water", molwater); + // testSystem3.addComponent("Na+", (molwater+molMEG)/5000.0); + // testSystem3.addComponent("OH-", (molwater+molMEG)/5000.0); + testSystem3.addComponent("MEG", molMEG); + testSystem3.setMixingRule(2); + + snohvitFormationWater.addComponent("water", snohvitFormationWaterFlowRate); + snohvitFormationWater.setMixingRule(2); + + StreamInterface stream_1 = new Stream("Stream1", testSystem); + + ThreePhaseSeparator separator = new ThreePhaseSeparator("Separator 1", stream_1); + MeasurementDeviceInterface reservoirTemperaturTransmitter = + new TemperatureTransmitter(stream_1); + MeasurementDeviceInterface reservoirPressureTransmitter = new PressureTransmitter(stream_1); + WaterContentAnalyser waterAnalyser = new WaterContentAnalyser(separator.getGasOutStream()); + waterAnalyser.setName("Snohvit Total Water Analyser"); + MolarMassAnalyser molarMassAnalyser = new MolarMassAnalyser(separator.getGasOutStream()); + molarMassAnalyser.setName("Snohvit molar mass analyser"); + StreamInterface stream_2 = separator.getGasOutStream(); + stream_2.setName("Gas From Snohvit Reservoir"); + + StreamInterface MEGstream_1 = new Stream("MEG Stream1", testSystem3); + StreamInterface snohvitFormationWaterStream = + new Stream("snohvitFormationWaterStream", snohvitFormationWater); + + Mixer MEGmixer1 = new Mixer("MEG Mixer 1"); + MEGmixer1.addStream(stream_2); + MEGmixer1.addStream(MEGstream_1); + MEGmixer1.addStream(snohvitFormationWaterStream); + + ThrottlingValve valve1 = new ThrottlingValve("snohvit valve", MEGmixer1.getOutletStream()); + valve1.setOutletPressure(125.0); + + // Albatross reservoir stream + Stream stream_3 = new Stream("Stream2", testSystem2); + Separator separator2 = new Separator("Separator 2", stream_3); + WaterContentAnalyser waterAnalyser2 = new WaterContentAnalyser(separator2.getGasOutStream()); + waterAnalyser2.setName("Albatross Total Water Analyser"); + MolarMassAnalyser molarMassAnalyser2 = new MolarMassAnalyser(separator2.getGasOutStream()); + molarMassAnalyser2.setName("Albatross molar mass analyser"); + + StreamInterface stream_4 = separator2.getGasOutStream(); + stream_4.setName("Gas From Albatross Reservoir"); + + ThrottlingValve valve2 = new ThrottlingValve("albatross valve", stream_4); + valve2.setOutletPressure(125.0); + + // Field mixer + Mixer mixer1 = new Mixer("Field Mixer"); + mixer1.addStream(valve1.getOutletStream()); + mixer1.addStream(valve2.getOutletStream()); + + WaterContentAnalyser waterAnalyser3 = new WaterContentAnalyser(mixer1.getOutletStream()); + waterAnalyser3.setName("Total Water Analyser"); + + // Pipeline + SimpleTPoutPipeline pipeLine1 = + new SimpleTPoutPipeline("snohvit pipeline", mixer1.getOutletStream()); + pipeLine1.setOutPressure(55.0); + pipeLine1.setOutTemperature(273.15 + 5.0); + pipeLine1.setNumberOfLegs(1); + pipeLine1.setPipeDiameters(new double[] {1.2, 1.2}); + pipeLine1.setLegPositions(new double[] {0, 150000.0}); + pipeLine1.setOuterTemperatures(new double[] {0.0, 0.0}); + + // IronIonSaturationStream ironSatStream = new + // IronIonSaturationStream(pipeLine1.getOutStream()); + + // // Land plant + ThreePhaseSeparator slugCatcher = + new ThreePhaseSeparator("slugCatcher", pipeLine1.getOutletStream()); + + VolumeFlowTransmitter volumeTransmitter2 = + new VolumeFlowTransmitter(slugCatcher.getOilOutStream()); + volumeTransmitter2.setMeasuredPhaseNumber(0); + volumeTransmitter2.setName("Condensate Volume Flow From Slug Catcher"); + + VolumeFlowTransmitter volumeTransmitter1 = + new VolumeFlowTransmitter(slugCatcher.getWaterOutStream()); + volumeTransmitter1.setMeasuredPhaseNumber(0); + volumeTransmitter1.setName("MEG Volume FLow From Slug Catcher"); + + VolumeFlowTransmitter volumeTransmitter3 = + new VolumeFlowTransmitter(slugCatcher.getGasOutStream()); + volumeTransmitter3.setMeasuredPhaseNumber(0); + volumeTransmitter3.setName("Gas Volume FLow From Slug Catcher"); + + // Stream stream_5 = new Stream(slugCatcher.getWaterOutStream()); + // stream_5.setName("MEG stream from slugcatcher"); + + Heater condensateheater1 = new Heater("Condensate heater1", slugCatcher.getOilOutStream()); + condensateheater1.setdT(23.4); + + // Heater gasHeater = new Heater(slugCatcher.getGasOutStream()); + // gasHeater.setName("Gas heater after slugcatcher"); + // gasHeater.setdT(30.0); + + ThreePhaseSeparator condensateSeparator = + new ThreePhaseSeparator("condensateSeparator", condensateheater1.getOutletStream()); + + // Heater MEGheater1 = new Heater(stream_5); + // MEGheater1.setName("MEG heater1"); + // MEGheater1.setdT(23.4); + + // SnohvitCO2RemovalModule co2Module = new SnohvitCO2RemovalModule(); + // co2Module.addInputStream("streamToAbsorber", gasHeater.getOutStream()); + + // Heater MEGheater2 = new Heater(MEGheater1.getOutStream()); + // MEGheater2.setName("MEG heater2"); + // MEGheater2.setdT(20.0); + + // ThrottlingValve valve3 = new ThrottlingValve("MEG flash valve 1", + // MEGheater2.getOutStream()); + // valve3.setOutletPressure(1.4); + + // ThreePhaseSeparator separator3 = new ThreePhaseSeparator("MEG LP + // separator", valve3.getOutStream()); + + // VolumeFlowTransmitter volumeTransmitter5= new + // VolumeFlowTransmitter(separator3.getGasOutStream()); + // volumeTransmitter5.setName("MEG Valve 1 Gas Volume FLow"); + + // Heater MEGheater3 = new Heater(separator3.getWaterOutStream()); + // MEGheater3.setName("MEG heater3"); + // MEGheater3.setdT(-35.0); + + // ThrottlingValve valve4 = new ThrottlingValve("MEG flash valve 2", + // MEGheater3.getOutStream()); + // valve4.setOutletPressure(1.05); + + // //ScalePotentialCheckStream stream_6 = new + // ScalePotentialCheckStream(valve4.getOutStream()); + + // Stream stream_7 = new Stream(valve4.getOutStream()); + + // ThreePhaseSeparator separator4 = new ThreePhaseSeparator("MEG Storage + // tank 13-TA-101", stream_7); + + // Stream stream_8 = new + // Stream(co2Module.getOutputStream("streamFromAbsorber")); + + // GasHeater.setName("Gas heater"); + // GasHeater.setdT(-35.0); + + // CO2-removal + // Stream streamToCO2removal = new Stream(slugCatcher.getGasOutStream()); + // streamToCO2removal.setName("Gas to CO2 removal"); + // VolumeFlowTransmitter volumeTransmitter_StreamToCO2removal = new + // VolumeFlowTransmitter(streamToCO2removal); + // volumeTransmitter_StreamToCO2removal.setUnit("Nm^3/day"); + // volumeTransmitter_StreamToCO2removal.setName("Stream to CO2 removal + // Volume FLow"); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(reservoirTemperaturTransmitter); + operations.add(reservoirPressureTransmitter); + operations.add(separator); + operations.add(stream_2); + operations.add(MEGstream_1); + operations.add(snohvitFormationWaterStream); + operations.add(MEGmixer1); + operations.add(valve1); + + operations.add(stream_3); + operations.add(separator2); + operations.add(stream_4); + operations.add(valve2); + + operations.add(mixer1); + operations.add(pipeLine1); + // operations.add(ironSatStream); + operations.add(slugCatcher); + operations.add(condensateheater1); + // operations.add(gasHeater); + operations.add(condensateSeparator); + // operations.add(stream_5); + + // operations.add(MEGheater1); + // operations.add(co2Module); + // operations.add(MEGheater2); + + // operations.add(valve3); + // operations.add(separator3); + + // operations.add(streamToCO2removal); + + // operations.add(MEGheater3); + // operations.add(valve4); + + // operations.add(stream_6); + // operations.add(stream_7); + // operations.add(separator4); + // operations.add(stream_8); + + // add transmitters + // operations.add(waterAnalyser); + // operations.add(waterAnalyser2); + // operations.add(waterAnalyser3); + // operations.add(molarMassAnalyser); + // operations.add(molarMassAnalyser2); + operations.add(volumeTransmitter1); + operations.add(volumeTransmitter2); + operations.add(volumeTransmitter3); + // operations.add(volumeTransmitter_StreamToCO2removal); + + operations.run(); + operations.displayResult(); + operations.reportMeasuredValues(); + + double wateraqphase = + slugCatcher.getWaterOutStream().getThermoSystem().getTotalNumberOfMoles() + * slugCatcher.getWaterOutStream().getThermoSystem().getPhase(0).getComponent("water") + .getMolarMass() + * slugCatcher.getWaterOutStream().getThermoSystem().getPhase(0).getComponent("water") + .getx() + * 3600.0; + + System.out.println("kg water in gas phase from slug catcher " + + slugCatcher.getGasOutStream().getThermoSystem().getTotalNumberOfMoles() + * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0).getComponent("water") + .getMolarMass() + * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0).getComponent("water") + .getx() + * 3600.0 + + " kg/hr"); + System.out.println("kg water in condensate phase from slug catcher " + + slugCatcher.getOilOutStream().getThermoSystem().getTotalNumberOfMoles() + * slugCatcher.getOilOutStream().getThermoSystem().getPhase(0).getComponent("water") + .getMolarMass() + * slugCatcher.getOilOutStream().getThermoSystem().getPhase(0).getComponent("water") + .getx() + * 3600.0 + + " kg/hr"); + System.out.println("kg water in aqueous phase from slug catcher " + wateraqphase + " kg/hr"); + + double MEGaqphase = slugCatcher.getWaterOutStream().getThermoSystem().getTotalNumberOfMoles() + * slugCatcher.getWaterOutStream().getThermoSystem().getPhase(0).getComponent("MEG") + .getMolarMass() + * slugCatcher.getWaterOutStream().getThermoSystem().getPhase(0).getComponent("MEG").getx() + * 3600.0; + System.out.println("kg MEG in gas phase from slug catcher " + + slugCatcher.getGasOutStream().getThermoSystem().getTotalNumberOfMoles() + * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0).getComponent("MEG") + .getMolarMass() + * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0).getComponent("MEG") + .getx() + * 3600.0 + + " kg/hr"); + System.out.println("kg MEG in condensate phase from slug catcher " + + slugCatcher.getOilOutStream().getThermoSystem().getTotalNumberOfMoles() + * slugCatcher.getOilOutStream().getThermoSystem().getPhase(0).getComponent("MEG") + .getMolarMass() + * slugCatcher.getOilOutStream().getThermoSystem().getPhase(0).getComponent("MEG") + .getx() + * 3600.0 + + " kg/hr"); + System.out.println("kg MEG in aqueous phase from slug catcher " + MEGaqphase + " kg/hr"); + + System.out.println("wt% MEG " + MEGaqphase / (wateraqphase + MEGaqphase) * 100); + + volumeTransmitter3.setUnit("Sm^3/day"); + System.out.println("gas rate from slug catcher " + + volumeTransmitter3.getMeasuredValue() / 1.0e6 + " MSm^3/day"); + System.out.println("gas rate from slug catcher " + + volumeTransmitter3.getMeasuredValue() / 1.0e6 + " MSm^3/day"); + System.out.println("water in gas phase from slug catcher " + + slugCatcher.getGasOutStream().getThermoSystem().getTotalNumberOfMoles() + * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0).getComponent("water") + .getMolarMass() + * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0).getComponent("water") + .getx() + * 3600.0 / (volumeTransmitter3.getMeasuredValue() / 24.0) * 1000.0 + + " gr water/Sm^3 gas"); + System.out.println("gas rate " + + slugCatcher.getGasOutStream().getThermoSystem().getTotalNumberOfMoles() + * slugCatcher.getGasOutStream().getThermoSystem().getPhase(0).getMolarMass() * 3600.0 + + " kg gas/hr"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcess2.java b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcess2.java index 0cec3f2957..9e4ec16f5a 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcess2.java +++ b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcess2.java @@ -23,238 +23,232 @@ * @since 2.2.3 */ public class TEGdehydrationProcess2 { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // Create the input fluid to the TEG process and saturate it with water at - // scrubber conditions - neqsim.thermo.system.SystemInterface feedGas = - new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); - feedGas.addComponent("nitrogen", 1.03); - feedGas.addComponent("CO2", 1.42); - feedGas.addComponent("methane", 83.88); - feedGas.addComponent("ethane", 8.07); - feedGas.addComponent("propane", 3.54); - feedGas.addComponent("i-butane", 0.54); - feedGas.addComponent("n-butane", 0.84); - feedGas.addComponent("i-pentane", 0.21); - feedGas.addComponent("n-pentane", 0.19); - feedGas.addComponent("n-hexane", 0.28); - feedGas.addComponent("water", 0.0); - feedGas.addComponent("TEG", 0); - feedGas.createDatabase(true); - feedGas.setMixingRule(10); - feedGas.setMultiPhaseCheck(true); - - Stream dryFeedGas = new Stream("dry feed gas", feedGas); - dryFeedGas.setFlowRate(11.23, "MSm3/day"); - dryFeedGas.setTemperature(30.4, "C"); - dryFeedGas.setPressure(52.21, "bara"); - StreamSaturatorUtil saturatedFeedGas = - new StreamSaturatorUtil("water saturator", dryFeedGas); - Stream waterSaturatedFeedGas = - new Stream("waterSaturatedFeedGas", saturatedFeedGas.getOutletStream()); - neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); - feedTEG.setMolarComposition( - new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.98}); - - Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); - TEGFeed.setFlowRate(6.1 * 1100.0, "kg/hr"); - TEGFeed.setTemperature(35.4, "C"); - TEGFeed.setPressure(52.21, "bara"); - - SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("SimpleTEGAbsorber"); - absorber.addGasInStream(waterSaturatedFeedGas); - absorber.addSolventInStream(TEGFeed); - absorber.setNumberOfStages(10); - absorber.setStageEfficiency(0.35); - - Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); - Stream richTEG = new Stream("richTEG", absorber.getSolventOutStream()); - - ThrottlingValve glycol_flash_valve = - new ThrottlingValve("Rich TEG HP flash valve", richTEG); - glycol_flash_valve.setOutletPressure(4.9); - - Heater richGLycolHeaterCondenser = - new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); - richGLycolHeaterCondenser.setOutTemperature(273.15 + 35.5); - - Heater richGLycolHeater = - new Heater("rich TEG heater HP", richGLycolHeaterCondenser.getOutletStream()); - richGLycolHeater.setOutTemperature(273.15 + 62.0); - - Separator flashSep = - new Separator("degasing separator", richGLycolHeater.getOutletStream()); - Stream flashGas = new Stream("gas from degasing separator", flashSep.getGasOutStream()); - Stream flashLiquid = - new Stream("liquid from degasing separator", flashSep.getLiquidOutStream()); - - Heater richGLycolHeater2 = new Heater("LP rich glycol heater", flashLiquid); - richGLycolHeater2.setOutTemperature(273.15 + 139.0); - richGLycolHeater2.setOutPressure(1.23); - - Mixer mixerTOreboiler = new Mixer("reboil mxer"); - mixerTOreboiler.addStream(richGLycolHeater2.getOutletStream()); - - Heater heaterToReboiler = new Heater("heaterToReboiler", mixerTOreboiler.getOutletStream()); - heaterToReboiler.setOutTemperature(273.15 + 206.6); - - Separator regenerator2 = new Separator("regenerator2", heaterToReboiler.getOutletStream()); - - Stream gasFromRegenerator = - new Stream("gasFromRegenerator", regenerator2.getGasOutStream()); - - Heater sepregenGasCooler = new Heater("sepregenGasCooler", gasFromRegenerator); - sepregenGasCooler.setOutTemperature(273.15 + 109.0); - sepregenGasCooler.setOutPressure(1.23); - // sepregenGasCooler.setEnergyStream(richGLycolHeaterCondenser.getEnergyStream()); - - Separator sepRegen = new Separator("sepRegen", sepregenGasCooler.getOutletStream()); - - Stream liquidRegenReflux = new Stream("liquidRegenReflux", sepRegen.getLiquidOutStream()); - - Recycle resycle2 = new Recycle("reflux resycle"); - resycle2.addStream(liquidRegenReflux); - - Heater coolerRegenGas = new Heater("coolerRegenGas", sepRegen.getGasOutStream()); - coolerRegenGas.setOutTemperature(273.15 + 35.5); - - Separator sepregenGas = new Separator("sepregenGas", coolerRegenGas.getOutletStream()); - - Stream gasToFlare = new Stream("gasToFlare", sepregenGas.getGasOutStream()); - - Stream liquidToTrreatment = - new Stream("liquidToTrreatment", sepregenGas.getLiquidOutStream()); - - Stream hotLeanTEG = new Stream("hotLeanTEG", regenerator2.getLiquidOutStream()); - - neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); - stripGas.setMolarComposition( - new double[] {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}); - - Stream strippingGas = new Stream("stripGas", stripGas); - strippingGas.setFlowRate(70.0, "kg/hr"); - strippingGas.setTemperature(206.6, "C"); - strippingGas.setPressure(1.23, "bara"); - - WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); - stripper.addGasInStream(strippingGas); - stripper.addSolventInStream(hotLeanTEG); - stripper.setNumberOfStages(10); - stripper.setStageEfficiency(0.5); - - Recycle resycle3 = new Recycle("gas stripper resycle"); - resycle3.addStream(stripper.getGasOutStream()); - - Pump hotLeanTEGPump = new Pump("hot lean TEG pump", stripper.getSolventOutStream()); - hotLeanTEGPump.setOutletPressure(20.0); - - Heater coolerhOTteg = new Heater("hot lean TEG cooler", hotLeanTEGPump.getOutletStream()); - coolerhOTteg.setOutTemperature(273.15 + 116.8); - - Heater coolerhOTteg2 = - new Heater("medium hot lean TEG cooler", coolerhOTteg.getOutletStream()); - coolerhOTteg2.setOutTemperature(273.15 + 89.3); - - Heater coolerhOTteg3 = new Heater("lean TEG cooler", coolerhOTteg2.getOutletStream()); - coolerhOTteg3.setOutTemperature(273.15 + 44.85); - - Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); - hotLeanTEGPump2.setOutletPressure(52.21); - - Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); - - neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); - pureTEG.setMolarComposition( - new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); - - Stream makeupTEG = new Stream("lean TEG to absorber", pureTEG); - makeupTEG.setFlowRate(1e-6, "kg/hr"); - makeupTEG.setTemperature(35.4, "C"); - makeupTEG.setPressure(52.21, "bara"); - - Calculator makeupCalculator = new Calculator("makeup calculator"); - makeupCalculator.addInputVariable(dehydratedGas); - makeupCalculator.addInputVariable(flashGas); - makeupCalculator.addInputVariable(gasToFlare); - makeupCalculator.addInputVariable(liquidToTrreatment); - makeupCalculator.setOutputVariable(makeupTEG); - - StaticMixer makeupMixer = new StaticMixer("makeup mixer"); - makeupMixer.addStream(leanTEGtoabs); - makeupMixer.addStream(makeupTEG); - - Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); - resycleLeanTEG.addStream(makeupMixer.getOutletStream()); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(dryFeedGas); - operations.add(saturatedFeedGas); - operations.add(waterSaturatedFeedGas); - operations.add(TEGFeed); - operations.add(absorber); - operations.add(dehydratedGas); - operations.add(richTEG); - operations.add(glycol_flash_valve); - operations.add(richGLycolHeaterCondenser); - operations.add(richGLycolHeater); - operations.add(flashSep); - operations.add(flashGas); - operations.add(flashLiquid); - operations.add(richGLycolHeater2); - operations.add(mixerTOreboiler); - operations.add(heaterToReboiler); - operations.add(regenerator2); - operations.add(gasFromRegenerator); - operations.add(sepregenGasCooler); - operations.add(sepRegen); - operations.add(liquidRegenReflux); - operations.add(resycle2); - - operations.add(coolerRegenGas); - operations.add(sepregenGas); - operations.add(gasToFlare); - operations.add(liquidToTrreatment); - operations.add(hotLeanTEG); - operations.add(strippingGas); - operations.add(stripper); - - operations.add(resycle3); - operations.add(hotLeanTEGPump); - operations.add(coolerhOTteg); - operations.add(coolerhOTteg2); - operations.add(coolerhOTteg3); - operations.add(hotLeanTEGPump2); - operations.add(leanTEGtoabs); - operations.add(makeupCalculator); - operations.add(makeupTEG); - operations.add(makeupMixer); - operations.add(resycleLeanTEG); - - operations.run(); - richGLycolHeater2.getOutletStream().getFluid().display(); - System.out.println("Energy reboiler " + heaterToReboiler.getDuty()); - mixerTOreboiler.addStream(liquidRegenReflux); - mixerTOreboiler.addStream(resycle3.getOutStream()); - - operations.run(); - absorber.replaceSolventInStream(resycleLeanTEG.getOutStream()); - operations.run(); - // richGLycolHeater2.getOutStream().getFluid().display(); - - System.out.println("Energy reboiler 2 " + heaterToReboiler.getDuty()); - - System.out.println("wt lean TEG after stripper " - + ((WaterStripperColumn) operations.getUnit("TEG stripper")).getSolventOutStream() - .getFluid().getPhase("aqueous").getWtFrac("TEG")); - - operations.save("c:/temp/TEGprocessSimple.neqsim"); - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // Create the input fluid to the TEG process and saturate it with water at + // scrubber conditions + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + feedGas.addComponent("nitrogen", 1.03); + feedGas.addComponent("CO2", 1.42); + feedGas.addComponent("methane", 83.88); + feedGas.addComponent("ethane", 8.07); + feedGas.addComponent("propane", 3.54); + feedGas.addComponent("i-butane", 0.54); + feedGas.addComponent("n-butane", 0.84); + feedGas.addComponent("i-pentane", 0.21); + feedGas.addComponent("n-pentane", 0.19); + feedGas.addComponent("n-hexane", 0.28); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("TEG", 0); + feedGas.createDatabase(true); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(true); + + Stream dryFeedGas = new Stream("dry feed gas", feedGas); + dryFeedGas.setFlowRate(11.23, "MSm3/day"); + dryFeedGas.setTemperature(30.4, "C"); + dryFeedGas.setPressure(52.21, "bara"); + StreamSaturatorUtil saturatedFeedGas = new StreamSaturatorUtil("water saturator", dryFeedGas); + Stream waterSaturatedFeedGas = + new Stream("waterSaturatedFeedGas", saturatedFeedGas.getOutletStream()); + neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); + feedTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.98}); + + Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); + TEGFeed.setFlowRate(6.1 * 1100.0, "kg/hr"); + TEGFeed.setTemperature(35.4, "C"); + TEGFeed.setPressure(52.21, "bara"); + + SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("SimpleTEGAbsorber"); + absorber.addGasInStream(waterSaturatedFeedGas); + absorber.addSolventInStream(TEGFeed); + absorber.setNumberOfStages(10); + absorber.setStageEfficiency(0.35); + + Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); + Stream richTEG = new Stream("richTEG", absorber.getSolventOutStream()); + + ThrottlingValve glycol_flash_valve = new ThrottlingValve("Rich TEG HP flash valve", richTEG); + glycol_flash_valve.setOutletPressure(4.9); + + Heater richGLycolHeaterCondenser = + new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); + richGLycolHeaterCondenser.setOutTemperature(273.15 + 35.5); + + Heater richGLycolHeater = + new Heater("rich TEG heater HP", richGLycolHeaterCondenser.getOutletStream()); + richGLycolHeater.setOutTemperature(273.15 + 62.0); + + Separator flashSep = new Separator("degassing separator", richGLycolHeater.getOutletStream()); + Stream flashGas = new Stream("gas from degassing separator", flashSep.getGasOutStream()); + Stream flashLiquid = + new Stream("liquid from degassing separator", flashSep.getLiquidOutStream()); + + Heater richGLycolHeater2 = new Heater("LP rich glycol heater", flashLiquid); + richGLycolHeater2.setOutTemperature(273.15 + 139.0); + richGLycolHeater2.setOutPressure(1.23); + + Mixer mixerTOreboiler = new Mixer("reboil mxer"); + mixerTOreboiler.addStream(richGLycolHeater2.getOutletStream()); + + Heater heaterToReboiler = new Heater("heaterToReboiler", mixerTOreboiler.getOutletStream()); + heaterToReboiler.setOutTemperature(273.15 + 206.6); + + Separator regenerator2 = new Separator("regenerator2", heaterToReboiler.getOutletStream()); + + Stream gasFromRegenerator = new Stream("gasFromRegenerator", regenerator2.getGasOutStream()); + + Heater sepregenGasCooler = new Heater("sepregenGasCooler", gasFromRegenerator); + sepregenGasCooler.setOutTemperature(273.15 + 109.0); + sepregenGasCooler.setOutPressure(1.23); + // sepregenGasCooler.setEnergyStream(richGLycolHeaterCondenser.getEnergyStream()); + + Separator sepRegen = new Separator("sepRegen", sepregenGasCooler.getOutletStream()); + + Stream liquidRegenReflux = new Stream("liquidRegenReflux", sepRegen.getLiquidOutStream()); + + Recycle resycle2 = new Recycle("reflux resycle"); + resycle2.addStream(liquidRegenReflux); + + Heater coolerRegenGas = new Heater("coolerRegenGas", sepRegen.getGasOutStream()); + coolerRegenGas.setOutTemperature(273.15 + 35.5); + + Separator sepregenGas = new Separator("sepregenGas", coolerRegenGas.getOutletStream()); + + Stream gasToFlare = new Stream("gasToFlare", sepregenGas.getGasOutStream()); + + Stream liquidToTrreatment = new Stream("liquidToTrreatment", sepregenGas.getLiquidOutStream()); + + Stream hotLeanTEG = new Stream("hotLeanTEG", regenerator2.getLiquidOutStream()); + + neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); + stripGas.setMolarComposition( + new double[] {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}); + + Stream strippingGas = new Stream("stripGas", stripGas); + strippingGas.setFlowRate(70.0, "kg/hr"); + strippingGas.setTemperature(206.6, "C"); + strippingGas.setPressure(1.23, "bara"); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addGasInStream(strippingGas); + stripper.addSolventInStream(hotLeanTEG); + stripper.setNumberOfStages(10); + stripper.setStageEfficiency(0.5); + + Recycle resycle3 = new Recycle("gas stripper resycle"); + resycle3.addStream(stripper.getGasOutStream()); + + Pump hotLeanTEGPump = new Pump("hot lean TEG pump", stripper.getSolventOutStream()); + hotLeanTEGPump.setOutletPressure(20.0); + + Heater coolerhOTteg = new Heater("hot lean TEG cooler", hotLeanTEGPump.getOutletStream()); + coolerhOTteg.setOutTemperature(273.15 + 116.8); + + Heater coolerhOTteg2 = new Heater("medium hot lean TEG cooler", coolerhOTteg.getOutletStream()); + coolerhOTteg2.setOutTemperature(273.15 + 89.3); + + Heater coolerhOTteg3 = new Heater("lean TEG cooler", coolerhOTteg2.getOutletStream()); + coolerhOTteg3.setOutTemperature(273.15 + 44.85); + + Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); + hotLeanTEGPump2.setOutletPressure(52.21); + + Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); + + neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); + pureTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); + + Stream makeupTEG = new Stream("lean TEG to absorber", pureTEG); + makeupTEG.setFlowRate(1e-6, "kg/hr"); + makeupTEG.setTemperature(35.4, "C"); + makeupTEG.setPressure(52.21, "bara"); + + Calculator makeupCalculator = new Calculator("makeup calculator"); + makeupCalculator.addInputVariable(dehydratedGas); + makeupCalculator.addInputVariable(flashGas); + makeupCalculator.addInputVariable(gasToFlare); + makeupCalculator.addInputVariable(liquidToTrreatment); + makeupCalculator.setOutputVariable(makeupTEG); + + StaticMixer makeupMixer = new StaticMixer("makeup mixer"); + makeupMixer.addStream(leanTEGtoabs); + makeupMixer.addStream(makeupTEG); + + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); + resycleLeanTEG.addStream(makeupMixer.getOutletStream()); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(dryFeedGas); + operations.add(saturatedFeedGas); + operations.add(waterSaturatedFeedGas); + operations.add(TEGFeed); + operations.add(absorber); + operations.add(dehydratedGas); + operations.add(richTEG); + operations.add(glycol_flash_valve); + operations.add(richGLycolHeaterCondenser); + operations.add(richGLycolHeater); + operations.add(flashSep); + operations.add(flashGas); + operations.add(flashLiquid); + operations.add(richGLycolHeater2); + operations.add(mixerTOreboiler); + operations.add(heaterToReboiler); + operations.add(regenerator2); + operations.add(gasFromRegenerator); + operations.add(sepregenGasCooler); + operations.add(sepRegen); + operations.add(liquidRegenReflux); + operations.add(resycle2); + + operations.add(coolerRegenGas); + operations.add(sepregenGas); + operations.add(gasToFlare); + operations.add(liquidToTrreatment); + operations.add(hotLeanTEG); + operations.add(strippingGas); + operations.add(stripper); + + operations.add(resycle3); + operations.add(hotLeanTEGPump); + operations.add(coolerhOTteg); + operations.add(coolerhOTteg2); + operations.add(coolerhOTteg3); + operations.add(hotLeanTEGPump2); + operations.add(leanTEGtoabs); + operations.add(makeupCalculator); + operations.add(makeupTEG); + operations.add(makeupMixer); + operations.add(resycleLeanTEG); + + operations.run(); + richGLycolHeater2.getOutletStream().getFluid().display(); + System.out.println("Energy reboiler " + heaterToReboiler.getDuty()); + mixerTOreboiler.addStream(liquidRegenReflux); + mixerTOreboiler.addStream(resycle3.getOutletStream()); + + operations.run(); + absorber.replaceSolventInStream(resycleLeanTEG.getOutletStream()); + operations.run(); + // richGLycolHeater2.getOutStream().getFluid().display(); + + System.out.println("Energy reboiler 2 " + heaterToReboiler.getDuty()); + + System.out.println( + "wt lean TEG after stripper " + ((WaterStripperColumn) operations.getUnit("TEG stripper")) + .getSolventOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG")); + + operations.save("c:/temp/TEGprocessSimple.neqsim"); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillation.java b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillation.java index 2eefd621ca..a90c0bbe6c 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillation.java +++ b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillation.java @@ -15,6 +15,7 @@ import neqsim.processSimulation.processEquipment.util.Recycle; import neqsim.processSimulation.processEquipment.util.StreamSaturatorUtil; import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.ThermodynamicConstantsInterface; /** *

@@ -26,309 +27,300 @@ * @since 2.2.3 */ public class TEGdehydrationProcessDistillation { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - // Create the input fluid to the TEG process and saturate it with water at - // scrubber conditions - neqsim.thermo.system.SystemInterface feedGas = - new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); - feedGas.addComponent("nitrogen", 1.03); - feedGas.addComponent("CO2", 1.42); - feedGas.addComponent("methane", 83.88); - feedGas.addComponent("ethane", 8.07); - feedGas.addComponent("propane", 3.54); - feedGas.addComponent("i-butane", 0.54); - feedGas.addComponent("n-butane", 0.84); - feedGas.addComponent("i-pentane", 0.21); - feedGas.addComponent("n-pentane", 0.19); - feedGas.addComponent("n-hexane", 0.28); - feedGas.addComponent("water", 0.0); - feedGas.addComponent("TEG", 0); - feedGas.createDatabase(true); - feedGas.setMixingRule(10); - feedGas.setMultiPhaseCheck(true); - - Stream dryFeedGas = new Stream("dry feed gas", feedGas); - dryFeedGas.setFlowRate(11.23, "MSm3/day"); - dryFeedGas.setTemperature(30.4, "C"); - dryFeedGas.setPressure(52.21, "bara"); - - StreamSaturatorUtil saturatedFeedGas = - new StreamSaturatorUtil("water saturator", dryFeedGas); - - Stream waterSaturatedFeedGas = - new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); - - neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); - feedTEG.setMolarComposition( - new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.97}); - - Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); - TEGFeed.setFlowRate(6862.5, "kg/hr"); - TEGFeed.setTemperature(43.0, "C"); - TEGFeed.setPressure(52.21, "bara"); - - SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); - absorber.addGasInStream(waterSaturatedFeedGas); - absorber.addSolventInStream(TEGFeed); - absorber.setNumberOfStages(5); - absorber.setStageEfficiency(0.55); - - Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); - Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); - - ThrottlingValve glycol_flash_valve = - new ThrottlingValve("Rich TEG HP flash valve", richTEG); - glycol_flash_valve.setOutletPressure(4.9); - - Heater richGLycolHeaterCondenser = - new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); - - HeatExchanger heatEx2 = new HeatExchanger("rich TEG heat exchanger 1", - richGLycolHeaterCondenser.getOutletStream()); - heatEx2.setGuessOutTemperature(273.15 + 62.0); - heatEx2.setUAvalue(220.0); - - Separator flashSep = new Separator("degasing separator", heatEx2.getOutStream(0)); - - Stream flashGas = new Stream("gas from degasing separator", flashSep.getGasOutStream()); - - Stream flashLiquid = - new Stream("liquid from degasing separator", flashSep.getLiquidOutStream()); - - HeatExchanger heatEx = new HeatExchanger("rich TEG heat exchanger 2", flashLiquid); - heatEx.setGuessOutTemperature(273.15 + 130.0); - heatEx.setUAvalue(600.0); - - ThrottlingValve glycol_flash_valve2 = - new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); - glycol_flash_valve2.setName("Rich TEG LP flash valve"); - glycol_flash_valve2.setOutletPressure(1.23); - - neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); - stripGas.setMolarComposition( - new double[] {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}); - - Stream strippingGas = new Stream("stripGas", stripGas); - strippingGas.setFlowRate(40.0, "Sm3/hr"); - strippingGas.setTemperature(80.0, "C"); - strippingGas.setPressure(1.23, "bara"); - - Stream gasToReboiler = strippingGas.clone(); - gasToReboiler.setName("gas to reboiler"); - - DistillationColumn column = new DistillationColumn(1, true, true); - column.setName("TEG regeneration column"); - column.addFeedStream(glycol_flash_valve2.getOutletStream(), 0); - column.getReboiler().setOutTemperature(273.15 + 206.6); - column.getCondenser().setOutTemperature(273.15 + 100.0); - column.getReboiler().addStream(gasToReboiler); - column.setTopPressure(1.0); - column.setBottomPressure(1.23); - - Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); - coolerRegenGas.setOutTemperature(273.15 + 35.5); - - Separator sepregenGas = - new Separator("regen gas separator", coolerRegenGas.getOutletStream()); - - Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); - - Stream liquidToTrreatment = - new Stream("water to treatment", sepregenGas.getLiquidOutStream()); - - WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); - stripper.addSolventInStream(column.getLiquidOutStream()); - stripper.addGasInStream(strippingGas); - stripper.setNumberOfStages(4); - stripper.setStageEfficiency(0.5); - - Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); - recycleGasFromStripper.addStream(stripper.getGasOutStream()); - recycleGasFromStripper.setOutletStream(gasToReboiler); - - Heater bufferTank = new Heater("TEG buffer tank", stripper.getSolventOutStream()); - bufferTank.setOutTemperature(273.15 + 185.0); - - Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream());// stripper.getSolventOutStream()); - hotLeanTEGPump.setOutletPressure(20.0); - hotLeanTEGPump.setIsentropicEfficiency(0.75); - - heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); - - heatEx2.setFeedStream(1, heatEx.getOutStream(1)); - - Heater coolerhOTteg3 = new Heater("lean TEG cooler",heatEx2.getOutStream(1)); - coolerhOTteg3.setOutTemperature(273.15 + 43.0); - - Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); - hotLeanTEGPump2.setOutletPressure(52.21); - hotLeanTEGPump2.setIsentropicEfficiency(0.75); - - Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); - - neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); - pureTEG.setMolarComposition( - new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); - - Stream makeupTEG = new Stream("makeup TEG", pureTEG); - makeupTEG.setFlowRate(1e-6, "kg/hr"); - makeupTEG.setTemperature(43.0, "C"); - makeupTEG.setPressure(52.21, "bara"); - - Calculator makeupCalculator = new Calculator("TEG makeup calculator"); - makeupCalculator.addInputVariable(dehydratedGas); - makeupCalculator.addInputVariable(flashGas); - makeupCalculator.addInputVariable(gasToFlare); - makeupCalculator.addInputVariable(liquidToTrreatment); - makeupCalculator.setOutputVariable(makeupTEG); - - StaticMixer makeupMixer = new StaticMixer("makeup mixer"); - makeupMixer.addStream(leanTEGtoabs); - makeupMixer.addStream(makeupTEG); - - Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); - resycleLeanTEG.addStream(makeupMixer.getOutletStream()); - resycleLeanTEG.setOutletStream(TEGFeed); - resycleLeanTEG.setPriority(200); - resycleLeanTEG.setDownstreamProperty("flow rate"); - - richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); - // richGLycolHeater.isSetEnergyStream(); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(dryFeedGas); - operations.add(saturatedFeedGas); - operations.add(waterSaturatedFeedGas); - operations.add(TEGFeed); - operations.add(absorber); - operations.add(dehydratedGas); - operations.add(richTEG); - operations.add(glycol_flash_valve); - operations.add(richGLycolHeaterCondenser); - operations.add(heatEx2); - operations.add(flashSep); - operations.add(flashGas); - operations.add(flashLiquid); - operations.add(heatEx); - operations.add(glycol_flash_valve2); - operations.add(gasToReboiler); - operations.add(column); - operations.add(coolerRegenGas); - operations.add(sepregenGas); - operations.add(gasToFlare); - operations.add(liquidToTrreatment); - operations.add(strippingGas); - operations.add(stripper); - operations.add(recycleGasFromStripper); - operations.add(bufferTank); - operations.add(hotLeanTEGPump); - operations.add(coolerhOTteg3); - operations.add(hotLeanTEGPump2); - operations.add(leanTEGtoabs); - operations.add(makeupCalculator); - operations.add(makeupTEG); - operations.add(makeupMixer); - operations.add(resycleLeanTEG); - - operations.run(); - // operations.run(); - - operations.save("c:/temp/TEGprocessHX.neqsim"); - /// operations = ProcessSystem.open("c:/temp/TEGprocess.neqsim"); - // ((DistillationColumn)operations.getUnit("TEG regeneration - /// column")).setTopPressure(1.2); - // operations.run(); - // ((DistillationColumn)operations.getUnit("TEG regeneration - /// column")).setNumberOfTrays(2); - System.out.println( - "water in wet gas " + ((Stream) operations.getUnit("water saturated feed gas")) - .getFluid().getPhase(0).getComponent("water").getz() * 1.0e6 * 0.01802 - * 101325.0 / (8.314 * 288.15)); - System.out.println( - "water in dry gas " + ((Stream) operations.getUnit("dry gas from absorber")) - .getFluid().getPhase(0).getComponent("water").getz() * 1.0e6); - System.out.println("reboiler duty (KW) " - + ((Reboiler) ((DistillationColumn) operations.getUnit("TEG regeneration column")) - .getReboiler()).getDuty() / 1.0e3); - System.out.println("wt lean TEG " - + ((WaterStripperColumn) operations.getUnit("TEG stripper")).getSolventOutStream() - .getFluid().getPhase("aqueous").getWtFrac("TEG") * 100.0); - - double waterInWetGasppm = - waterSaturatedFeedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; - double waterInWetGaskgMSm3 = waterInWetGasppm * 0.01802 * 101325.0 / (8.314 * 288.15); - double TEGfeedwt = TEGFeed.getFluid().getPhase("aqueous").getWtFrac("TEG"); - double TEGfeedflw = TEGFeed.getFlowRate("kg/hr"); - double waterInDehydratedGasppm = - dehydratedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; - double waterInDryGaskgMSm3 = - waterInDehydratedGasppm * 0.01802 * 101325.0 / (8.314 * 288.15); - double richTEG2 = richTEG.getFluid().getPhase("aqueous").getWtFrac("TEG"); - System.out.println( - "reboiler duty (KW) " + ((Reboiler) column.getReboiler()).getDuty() / 1.0e3); - System.out.println("flow rate from reboiler " - + ((Reboiler) column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); - System.out.println("flow rate from stripping column " - + stripper.getLiquidOutStream().getFlowRate("kg/hr")); - System.out.println("flow rate from pump2 " - + hotLeanTEGPump2.getOutletStream().getFluid().getFlowRate("kg/hr")); - System.out.println("makeup TEG " + makeupTEG.getFluid().getFlowRate("kg/hr")); - - TEGFeed.getFluid().display(); - absorber.run(); - - System.out.println("pump power " + hotLeanTEGPump.getDuty()); - System.out.println("pump2 power " + hotLeanTEGPump2.getDuty()); - System.out.println("wt lean TEG after reboiler " - + column.getLiquidOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG")); - System.out.println("temperature from pump " - + (hotLeanTEGPump2.getOutletStream().getTemperature() - 273.15)); - - System.out.println("flow rate from reboiler " - + ((Reboiler) column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); - System.out.println("flow rate from pump2 " - + hotLeanTEGPump2.getOutletStream().getFluid().getFlowRate("kg/hr")); - System.out.println("flow rate to flare " + gasToFlare.getFluid().getFlowRate("kg/hr")); - - System.out.println("condenser duty " - + ((Condenser) ((DistillationColumn) operations.getUnit("TEG regeneration column")) - .getCondenser()).getDuty() / 1.0e3); - System.out.println("richGLycolHeaterCondenser duty " - + richGLycolHeaterCondenser.getEnergyStream().getDuty() / 1.0e3); - System.out.println("richGLycolHeaterCondenser temperature out " - + richGLycolHeaterCondenser.getOutletStream().getTemperature("C")); - richGLycolHeaterCondenser.run(); - - hotLeanTEGPump.getOutletStream().displayResult(); - flashLiquid.displayResult(); - - System.out.println("Temperature rich TEG out of reflux condenser " - + richGLycolHeaterCondenser.getOutletStream().getTemperature("C")); - heatEx.displayResult(); - System.out.println("glycol out temperature " - + glycol_flash_valve2.getOutletStream().getFluid().getTemperature("C")); - System.out - .println("glycol out temperature2 " + heatEx2.getOutStream(0).getTemperature("C")); - System.out - .println("glycol out temperature2 " + heatEx2.getOutStream(1).getTemperature("C")); - - System.out.println("out water rate LP valve" + glycol_flash_valve2.getOutletStream() - .getFluid() - .getPhase(0).getComponent("water").getNumberOfmoles()); - System.out.println("glycol out water rate reboil " + ((Reboiler) column.getReboiler()) - .getLiquidOutStream().getFluid().getComponent("water").getNumberOfmoles()); - System.out.println("glycol out water rate condens " + ((Condenser) column.getCondenser()) - .getGasOutStream().getFluid().getComponent("water").getNumberOfmoles()); - System.out.println("recycle out water rate " + recycleGasFromStripper.getOutletStream() - .getFluid().getComponent("water").getNumberOfmoles()); - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + // Create the input fluid to the TEG process and saturate it with water at + // scrubber conditions + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + feedGas.addComponent("nitrogen", 1.03); + feedGas.addComponent("CO2", 1.42); + feedGas.addComponent("methane", 83.88); + feedGas.addComponent("ethane", 8.07); + feedGas.addComponent("propane", 3.54); + feedGas.addComponent("i-butane", 0.54); + feedGas.addComponent("n-butane", 0.84); + feedGas.addComponent("i-pentane", 0.21); + feedGas.addComponent("n-pentane", 0.19); + feedGas.addComponent("n-hexane", 0.28); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("TEG", 0); + feedGas.createDatabase(true); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(true); + + Stream dryFeedGas = new Stream("dry feed gas", feedGas); + dryFeedGas.setFlowRate(11.23, "MSm3/day"); + dryFeedGas.setTemperature(30.4, "C"); + dryFeedGas.setPressure(52.21, "bara"); + + StreamSaturatorUtil saturatedFeedGas = new StreamSaturatorUtil("water saturator", dryFeedGas); + + Stream waterSaturatedFeedGas = + new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); + + neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); + feedTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.97}); + + Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); + TEGFeed.setFlowRate(6862.5, "kg/hr"); + TEGFeed.setTemperature(43.0, "C"); + TEGFeed.setPressure(52.21, "bara"); + + SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); + absorber.addGasInStream(waterSaturatedFeedGas); + absorber.addSolventInStream(TEGFeed); + absorber.setNumberOfStages(5); + absorber.setStageEfficiency(0.55); + + Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); + Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); + + ThrottlingValve glycol_flash_valve = new ThrottlingValve("Rich TEG HP flash valve", richTEG); + glycol_flash_valve.setOutletPressure(4.9); + + Heater richGLycolHeaterCondenser = + new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); + + HeatExchanger heatEx2 = + new HeatExchanger("rich TEG heat exchanger 1", richGLycolHeaterCondenser.getOutletStream()); + heatEx2.setGuessOutTemperature(273.15 + 62.0); + heatEx2.setUAvalue(220.0); + + Separator flashSep = new Separator("degassing separator", heatEx2.getOutStream(0)); + + Stream flashGas = new Stream("gas from degassing separator", flashSep.getGasOutStream()); + + Stream flashLiquid = + new Stream("liquid from degassing separator", flashSep.getLiquidOutStream()); + + HeatExchanger heatEx = new HeatExchanger("rich TEG heat exchanger 2", flashLiquid); + heatEx.setGuessOutTemperature(273.15 + 130.0); + heatEx.setUAvalue(600.0); + + ThrottlingValve glycol_flash_valve2 = + new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); + glycol_flash_valve2.setName("Rich TEG LP flash valve"); + glycol_flash_valve2.setOutletPressure(1.23); + + neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); + stripGas.setMolarComposition( + new double[] {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}); + + Stream strippingGas = new Stream("stripGas", stripGas); + strippingGas.setFlowRate(40.0, "Sm3/hr"); + strippingGas.setTemperature(80.0, "C"); + strippingGas.setPressure(1.23, "bara"); + + Stream gasToReboiler = strippingGas.clone(); + gasToReboiler.setName("gas to reboiler"); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(glycol_flash_valve2.getOutletStream(), 0); + column.getReboiler().setOutTemperature(273.15 + 206.6); + column.getCondenser().setOutTemperature(273.15 + 100.0); + column.getReboiler().addStream(gasToReboiler); + column.setTopPressure(1.0); + column.setBottomPressure(1.23); + + Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); + coolerRegenGas.setOutTemperature(273.15 + 35.5); + + Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); + + Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); + + Stream liquidToTrreatment = new Stream("water to treatment", sepregenGas.getLiquidOutStream()); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addSolventInStream(column.getLiquidOutStream()); + stripper.addGasInStream(strippingGas); + stripper.setNumberOfStages(4); + stripper.setStageEfficiency(0.5); + + Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); + recycleGasFromStripper.addStream(stripper.getGasOutStream()); + recycleGasFromStripper.setOutletStream(gasToReboiler); + + Heater bufferTank = new Heater("TEG buffer tank", stripper.getSolventOutStream()); + bufferTank.setOutTemperature(273.15 + 185.0); + + Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream()); // stripper.getSolventOutStream()); + hotLeanTEGPump.setOutletPressure(20.0); + hotLeanTEGPump.setIsentropicEfficiency(0.75); + + heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); + + heatEx2.setFeedStream(1, heatEx.getOutStream(1)); + + Heater coolerhOTteg3 = new Heater("lean TEG cooler", heatEx2.getOutStream(1)); + coolerhOTteg3.setOutTemperature(273.15 + 43.0); + + Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); + hotLeanTEGPump2.setOutletPressure(52.21); + hotLeanTEGPump2.setIsentropicEfficiency(0.75); + + Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); + + neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); + pureTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); + + Stream makeupTEG = new Stream("makeup TEG", pureTEG); + makeupTEG.setFlowRate(1e-6, "kg/hr"); + makeupTEG.setTemperature(43.0, "C"); + makeupTEG.setPressure(52.21, "bara"); + + Calculator makeupCalculator = new Calculator("TEG makeup calculator"); + makeupCalculator.addInputVariable(dehydratedGas); + makeupCalculator.addInputVariable(flashGas); + makeupCalculator.addInputVariable(gasToFlare); + makeupCalculator.addInputVariable(liquidToTrreatment); + makeupCalculator.setOutputVariable(makeupTEG); + + StaticMixer makeupMixer = new StaticMixer("makeup mixer"); + makeupMixer.addStream(leanTEGtoabs); + makeupMixer.addStream(makeupTEG); + + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); + resycleLeanTEG.addStream(makeupMixer.getOutletStream()); + resycleLeanTEG.setOutletStream(TEGFeed); + resycleLeanTEG.setPriority(200); + resycleLeanTEG.setDownstreamProperty("flow rate"); + + richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); + // richGLycolHeater.isSetEnergyStream(); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(dryFeedGas); + operations.add(saturatedFeedGas); + operations.add(waterSaturatedFeedGas); + operations.add(TEGFeed); + operations.add(absorber); + operations.add(dehydratedGas); + operations.add(richTEG); + operations.add(glycol_flash_valve); + operations.add(richGLycolHeaterCondenser); + operations.add(heatEx2); + operations.add(flashSep); + operations.add(flashGas); + operations.add(flashLiquid); + operations.add(heatEx); + operations.add(glycol_flash_valve2); + operations.add(gasToReboiler); + operations.add(column); + operations.add(coolerRegenGas); + operations.add(sepregenGas); + operations.add(gasToFlare); + operations.add(liquidToTrreatment); + operations.add(strippingGas); + operations.add(stripper); + operations.add(recycleGasFromStripper); + operations.add(bufferTank); + operations.add(hotLeanTEGPump); + operations.add(coolerhOTteg3); + operations.add(hotLeanTEGPump2); + operations.add(leanTEGtoabs); + operations.add(makeupCalculator); + operations.add(makeupTEG); + operations.add(makeupMixer); + operations.add(resycleLeanTEG); + + operations.run(); + // operations.run(); + + operations.save("c:/temp/TEGprocessHX.neqsim"); + // operations = ProcessSystem.open("c:/temp/TEGprocess.neqsim"); + // ((DistillationColumn)operations.getUnit("TEG regeneration + // column")).setTopPressure(1.2); + // operations.run(); + // ((DistillationColumn)operations.getUnit("TEG regeneration + // column")).setNumberOfTrays(2); + System.out + .println("water in wet gas " + ((Stream) operations.getUnit("water saturated feed gas")) + .getFluid().getPhase(0).getComponent("water").getz() * 1.0e6 * 0.01802 + * ThermodynamicConstantsInterface.atm / (ThermodynamicConstantsInterface.R * 288.15)); + System.out.println("water in dry gas " + ((Stream) operations.getUnit("dry gas from absorber")) + .getFluid().getPhase(0).getComponent("water").getz() * 1.0e6); + System.out.println("reboiler duty (KW) " + + ((Reboiler) ((DistillationColumn) operations.getUnit("TEG regeneration column")) + .getReboiler()).getDuty() / 1.0e3); + System.out.println("wt lean TEG " + ((WaterStripperColumn) operations.getUnit("TEG stripper")) + .getSolventOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG") * 100.0); + + double waterInWetGasppm = + waterSaturatedFeedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; + double waterInWetGaskgMSm3 = waterInWetGasppm * 0.01802 * ThermodynamicConstantsInterface.atm + / (ThermodynamicConstantsInterface.R * 288.15); + double TEGfeedwt = TEGFeed.getFluid().getPhase("aqueous").getWtFrac("TEG"); + double TEGfeedflw = TEGFeed.getFlowRate("kg/hr"); + double waterInDehydratedGasppm = + dehydratedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; + double waterInDryGaskgMSm3 = waterInDehydratedGasppm * 0.01802 + * ThermodynamicConstantsInterface.atm / (ThermodynamicConstantsInterface.R * 288.15); + double richTEG2 = richTEG.getFluid().getPhase("aqueous").getWtFrac("TEG"); + System.out.println("reboiler duty (KW) " + ((Reboiler) column.getReboiler()).getDuty() / 1.0e3); + System.out.println("flow rate from reboiler " + + ((Reboiler) column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); + System.out.println( + "flow rate from stripping column " + stripper.getLiquidOutStream().getFlowRate("kg/hr")); + System.out.println("flow rate from pump2 " + + hotLeanTEGPump2.getOutletStream().getFluid().getFlowRate("kg/hr")); + System.out.println("makeup TEG " + makeupTEG.getFluid().getFlowRate("kg/hr")); + + TEGFeed.getFluid().display(); + absorber.run(); + + System.out.println("pump power " + hotLeanTEGPump.getDuty()); + System.out.println("pump2 power " + hotLeanTEGPump2.getDuty()); + System.out.println("wt lean TEG after reboiler " + + column.getLiquidOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG")); + System.out.println( + "temperature from pump " + (hotLeanTEGPump2.getOutletStream().getTemperature() - 273.15)); + + System.out.println("flow rate from reboiler " + + ((Reboiler) column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); + System.out.println("flow rate from pump2 " + + hotLeanTEGPump2.getOutletStream().getFluid().getFlowRate("kg/hr")); + System.out.println("flow rate to flare " + gasToFlare.getFluid().getFlowRate("kg/hr")); + + System.out.println("condenser duty " + + ((Condenser) ((DistillationColumn) operations.getUnit("TEG regeneration column")) + .getCondenser()).getDuty() / 1.0e3); + System.out.println("richGLycolHeaterCondenser duty " + + richGLycolHeaterCondenser.getEnergyStream().getDuty() / 1.0e3); + System.out.println("richGLycolHeaterCondenser temperature out " + + richGLycolHeaterCondenser.getOutletStream().getTemperature("C")); + richGLycolHeaterCondenser.run(); + + hotLeanTEGPump.getOutletStream().displayResult(); + flashLiquid.displayResult(); + + System.out.println("Temperature rich TEG out of reflux condenser " + + richGLycolHeaterCondenser.getOutletStream().getTemperature("C")); + heatEx.displayResult(); + System.out.println("glycol out temperature " + + glycol_flash_valve2.getOutletStream().getFluid().getTemperature("C")); + System.out.println("glycol out temperature2 " + heatEx2.getOutStream(0).getTemperature("C")); + System.out.println("glycol out temperature2 " + heatEx2.getOutStream(1).getTemperature("C")); + + System.out.println("out water rate LP valve" + glycol_flash_valve2.getOutletStream().getFluid() + .getPhase(0).getComponent("water").getNumberOfmoles()); + System.out.println("glycol out water rate reboil " + ((Reboiler) column.getReboiler()) + .getLiquidOutStream().getFluid().getComponent("water").getNumberOfmoles()); + System.out.println("glycol out water rate condens " + ((Condenser) column.getCondenser()) + .getGasOutStream().getFluid().getComponent("water").getNumberOfmoles()); + System.out.println("recycle out water rate " + recycleGasFromStripper.getOutletStream() + .getFluid().getComponent("water").getNumberOfmoles()); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillation3.java b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillation3.java index 0da0ab4c06..410031f184 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillation3.java +++ b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillation3.java @@ -15,6 +15,7 @@ import neqsim.processSimulation.processEquipment.util.Recycle; import neqsim.processSimulation.processEquipment.util.StreamSaturatorUtil; import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.ThermodynamicConstantsInterface; /** *

@@ -26,292 +27,284 @@ * @since 2.2.3 */ public class TEGdehydrationProcessDistillation3 { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - // Create the input fluid to the TEG process and saturate it with water at - // scrubber conditions - neqsim.thermo.system.SystemInterface feedGas = - new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); - feedGas.addComponent("nitrogen", 1.03); - feedGas.addComponent("CO2", 1.42); - feedGas.addComponent("methane", 83.88); - feedGas.addComponent("ethane", 8.07); - feedGas.addComponent("propane", 3.54); - feedGas.addComponent("i-butane", 0.54); - feedGas.addComponent("n-butane", 0.84); - feedGas.addComponent("i-pentane", 0.21); - feedGas.addComponent("n-pentane", 0.19); - feedGas.addComponent("n-hexane", 0.28); - feedGas.addComponent("water", 0.0); - feedGas.addComponent("TEG", 0); - feedGas.createDatabase(true); - feedGas.setMixingRule(10); - feedGas.setMultiPhaseCheck(false); - - Stream dryFeedGas = new Stream("dry feed gas", feedGas); - dryFeedGas.setFlowRate(11.23, "MSm3/day"); - dryFeedGas.setTemperature(30.4, "C"); - dryFeedGas.setPressure(52.21, "bara"); - - StreamSaturatorUtil saturatedFeedGas = - new StreamSaturatorUtil("water saturator", dryFeedGas); - - Stream waterSaturatedFeedGas = - new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); - - neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); - feedTEG.setMolarComposition( - new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.97}); - - Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); - TEGFeed.setFlowRate(6862.5, "kg/hr"); - TEGFeed.setTemperature(43.0, "C"); - TEGFeed.setPressure(52.21, "bara"); - - SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); - absorber.addGasInStream(waterSaturatedFeedGas); - absorber.addSolventInStream(TEGFeed); - absorber.setNumberOfStages(5); - absorber.setStageEfficiency(0.55); - - Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); - Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); - - ThrottlingValve glycol_flash_valve = - new ThrottlingValve("Rich TEG HP flash valve", richTEG); - glycol_flash_valve.setOutletPressure(4.9); - - Heater richGLycolHeaterCondenser = - new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); - - Heater richGLycolHeater = - new Heater("rich TEG heater HP", richGLycolHeaterCondenser.getOutletStream()); - richGLycolHeater.setOutTemperature(273.15 + 62.0); - - Separator flashSep = - new Separator("degasing separator", richGLycolHeater.getOutletStream()); - - Stream flashGas = new Stream("gas from degasing separator", flashSep.getGasOutStream()); - - Stream flashLiquid = - new Stream("liquid from degasing separator", flashSep.getLiquidOutStream()); - - Heater richGLycolHeater2 = new Heater("LP rich glycol heater", flashLiquid); - richGLycolHeater2.setOutTemperature(273.15 + 139.0); - richGLycolHeater2.setOutPressure(1.23); - - neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); - stripGas.setMolarComposition( - new double[] {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}); - - Stream strippingGas = new Stream("stripGas", stripGas); - strippingGas.setFlowRate(90.2, "Sm3/hr"); - strippingGas.setTemperature(80.0, "C"); - strippingGas.setPressure(1.23, "bara"); - - Stream gasToReboiler = strippingGas.clone(); - gasToReboiler.setName("gas to reboiler"); - - DistillationColumn column = new DistillationColumn(1, true, true); - column.setName("TEG regeneration column"); - column.addFeedStream(richGLycolHeater2.getOutletStream(), 0); - column.getReboiler().setOutTemperature(273.15 + 206.6); - column.getCondenser().setOutTemperature(273.15 + 101.0); - column.getReboiler().addStream(gasToReboiler); - column.setTopPressure(1.2); - column.setBottomPressure(1.23); - - Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); - coolerRegenGas.setOutTemperature(273.15 + 35.5); - - Separator sepregenGas = - new Separator("regen gas separator", coolerRegenGas.getOutletStream()); - - Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); - - Stream liquidToTrreatment = - new Stream("water to treatment", sepregenGas.getLiquidOutStream()); - - WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); - stripper.addSolventInStream(column.getLiquidOutStream()); - stripper.addGasInStream(strippingGas); - stripper.setNumberOfStages(4); - stripper.setStageEfficiency(0.5); - - Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); - recycleGasFromStripper.addStream(stripper.getGasOutStream()); - recycleGasFromStripper.setOutletStream(gasToReboiler); - - Heater bufferTank = new Heater("TEG buffer tank", stripper.getSolventOutStream()); - bufferTank.setOutTemperature(273.15 + 185.0); - - Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream()); - hotLeanTEGPump.setOutletPressure(20.0); - hotLeanTEGPump.setIsentropicEfficiency(0.75); - - Heater coolerhOTteg = new Heater("hot lean TEG cooler", hotLeanTEGPump.getOutletStream()); - coolerhOTteg.setOutTemperature(273.15 + 116.8); - - Heater coolerhOTteg2 = - new Heater("medium hot lean TEG cooler", coolerhOTteg.getOutletStream()); - coolerhOTteg2.setOutTemperature(273.15 + 89.3); - - Heater coolerhOTteg3 = new Heater("lean TEG cooler", coolerhOTteg2.getOutletStream()); - coolerhOTteg3.setOutTemperature(273.15 + 43.0); - - Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); - hotLeanTEGPump2.setOutletPressure(52.21); - hotLeanTEGPump2.setIsentropicEfficiency(0.75); - - Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); - - neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); - pureTEG.setMolarComposition( - new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); - - Stream makeupTEG = new Stream("makeup TEG", pureTEG); - makeupTEG.setFlowRate(1e-6, "kg/hr"); - makeupTEG.setTemperature(43.0, "C"); - makeupTEG.setPressure(52.21, "bara"); - - Calculator makeupCalculator = new Calculator("makeup calculator"); - makeupCalculator.addInputVariable(dehydratedGas); - makeupCalculator.addInputVariable(flashGas); - makeupCalculator.addInputVariable(gasToFlare); - makeupCalculator.addInputVariable(liquidToTrreatment); - makeupCalculator.setOutputVariable(makeupTEG); - - StaticMixer makeupMixer = new StaticMixer("makeup mixer"); - makeupMixer.addStream(leanTEGtoabs); - makeupMixer.addStream(makeupTEG); - - Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); - resycleLeanTEG.addStream(makeupMixer.getOutletStream()); - resycleLeanTEG.setOutletStream(TEGFeed); - resycleLeanTEG.setPriority(200); - resycleLeanTEG.setDownstreamProperty("flow rate"); - - richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); - richGLycolHeater.isSetEnergyStream(); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(dryFeedGas); - operations.add(saturatedFeedGas); - operations.add(waterSaturatedFeedGas); - operations.add(TEGFeed); - operations.add(absorber); - operations.add(dehydratedGas); - operations.add(richTEG); - operations.add(glycol_flash_valve); - operations.add(richGLycolHeaterCondenser); - operations.add(richGLycolHeater); - operations.add(flashSep); - operations.add(flashGas); - operations.add(flashLiquid); - operations.add(richGLycolHeater2); - operations.add(gasToReboiler); - operations.add(column); - operations.add(coolerRegenGas); - operations.add(sepregenGas); - operations.add(gasToFlare); - operations.add(liquidToTrreatment); - operations.add(strippingGas); - operations.add(stripper); - operations.add(recycleGasFromStripper); - operations.add(bufferTank); - operations.add(hotLeanTEGPump); - operations.add(coolerhOTteg); - operations.add(coolerhOTteg2); - operations.add(coolerhOTteg3); - operations.add(hotLeanTEGPump2); - operations.add(leanTEGtoabs); - operations.add(makeupCalculator); - operations.add(makeupTEG); - operations.add(makeupMixer); - operations.add(resycleLeanTEG); - - operations.run(); - // operations.run(); - - operations.save("c:/temp/TEGprocess.neqsim"); - /// operations = ProcessSystem.open("c:/temp/TEGprocess.neqsim"); - // ((DistillationColumn)operations.getUnit("TEG regeneration - /// column")).setTopPressure(1.2); - // operations.run(); - // ((DistillationColumn)operations.getUnit("TEG regeneration - /// column")).setNumberOfTrays(2); - System.out.println( - "water in wet gas " + ((Stream) operations.getUnit("water saturated feed gas")) - .getFluid().getPhase(0).getComponent("water").getz() * 1.0e6 * 0.01802 - * 101325.0 / (8.314 * 288.15)); - System.out.println( - "water in dry gas " + ((Stream) operations.getUnit("dry gas from absorber")) - .getFluid().getPhase(0).getComponent("water").getz() * 1.0e6); - System.out.println("reboiler duty (KW) " - + ((Reboiler) ((DistillationColumn) operations.getUnit("TEG regeneration column")) - .getReboiler()).getDuty() / 1.0e3); - System.out.println("wt lean TEG " - + ((WaterStripperColumn) operations.getUnit("TEG stripper")).getSolventOutStream() - .getFluid().getPhase("aqueous").getWtFrac("TEG") * 100.0); - - double waterInWetGasppm = - waterSaturatedFeedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; - double waterInWetGaskgMSm3 = waterInWetGasppm * 0.01802 * 101325.0 / (8.314 * 288.15); - double TEGfeedwt = TEGFeed.getFluid().getPhase("aqueous").getWtFrac("TEG"); - double TEGfeedflw = TEGFeed.getFlowRate("kg/hr"); - double waterInDehydratedGasppm = - dehydratedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; - double waterInDryGaskgMSm3 = - waterInDehydratedGasppm * 0.01802 * 101325.0 / (8.314 * 288.15); - double richTEG2 = richTEG.getFluid().getPhase("aqueous").getWtFrac("TEG"); - System.out.println( - "reboiler duty (KW) " + ((Reboiler) column.getReboiler()).getDuty() / 1.0e3); - System.out.println("flow rate from reboiler " - + ((Reboiler) column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); - System.out.println("flow rate from stripping column " - + stripper.getLiquidOutStream().getFlowRate("kg/hr")); - System.out.println("flow rate from pump2 " - + hotLeanTEGPump2.getOutletStream().getFluid().getFlowRate("kg/hr")); - System.out.println("makeup TEG " + makeupTEG.getFluid().getFlowRate("kg/hr")); - - TEGFeed.getFluid().display(); - absorber.run(); - - System.out.println("pump power " + hotLeanTEGPump.getDuty()); - System.out.println("pump2 power " + hotLeanTEGPump2.getDuty()); - System.out.println("wt lean TEG after reboiler " - + column.getLiquidOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG")); - System.out.println("temperature from pump " - + (hotLeanTEGPump2.getOutletStream().getTemperature() - 273.15)); - - System.out.println("flow rate from reboiler " - + ((Reboiler) column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); - System.out.println("flow rate from pump2 " - + hotLeanTEGPump2.getOutletStream().getFluid().getFlowRate("kg/hr")); - System.out.println("condenser duty " - + ((Condenser) ((DistillationColumn) operations.getUnit("TEG regeneration column")) - .getCondenser()).getDuty() / 1.0e3); - System.out.println("richGLycolHeaterCondenser duty " - + richGLycolHeaterCondenser.getEnergyStream().getDuty() / 1.0e3); - System.out.println("richGLycolHeaterCondenser temperature out " - + richGLycolHeaterCondenser.getOutletStream().getTemperature("C")); - richGLycolHeaterCondenser.run(); - - hotLeanTEGPump.getOutletStream().displayResult(); - flashLiquid.displayResult(); - - HeatExchanger heatEx = - new HeatExchanger("heatEx", flashLiquid, hotLeanTEGPump.getOutletStream()); - heatEx.setUAvalue(350.0); - heatEx.run(); - heatEx.displayResult(); - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + // Create the input fluid to the TEG process and saturate it with water at + // scrubber conditions + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + feedGas.addComponent("nitrogen", 1.03); + feedGas.addComponent("CO2", 1.42); + feedGas.addComponent("methane", 83.88); + feedGas.addComponent("ethane", 8.07); + feedGas.addComponent("propane", 3.54); + feedGas.addComponent("i-butane", 0.54); + feedGas.addComponent("n-butane", 0.84); + feedGas.addComponent("i-pentane", 0.21); + feedGas.addComponent("n-pentane", 0.19); + feedGas.addComponent("n-hexane", 0.28); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("TEG", 0); + feedGas.createDatabase(true); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(false); + + Stream dryFeedGas = new Stream("dry feed gas", feedGas); + dryFeedGas.setFlowRate(11.23, "MSm3/day"); + dryFeedGas.setTemperature(30.4, "C"); + dryFeedGas.setPressure(52.21, "bara"); + + StreamSaturatorUtil saturatedFeedGas = new StreamSaturatorUtil("water saturator", dryFeedGas); + + Stream waterSaturatedFeedGas = + new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); + + neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); + feedTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.97}); + + Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); + TEGFeed.setFlowRate(6862.5, "kg/hr"); + TEGFeed.setTemperature(43.0, "C"); + TEGFeed.setPressure(52.21, "bara"); + + SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); + absorber.addGasInStream(waterSaturatedFeedGas); + absorber.addSolventInStream(TEGFeed); + absorber.setNumberOfStages(5); + absorber.setStageEfficiency(0.55); + + Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); + Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); + + ThrottlingValve glycol_flash_valve = new ThrottlingValve("Rich TEG HP flash valve", richTEG); + glycol_flash_valve.setOutletPressure(4.9); + + Heater richGLycolHeaterCondenser = + new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); + + Heater richGLycolHeater = + new Heater("rich TEG heater HP", richGLycolHeaterCondenser.getOutletStream()); + richGLycolHeater.setOutTemperature(273.15 + 62.0); + + Separator flashSep = new Separator("degassing separator", richGLycolHeater.getOutletStream()); + + Stream flashGas = new Stream("gas from degassing separator", flashSep.getGasOutStream()); + + Stream flashLiquid = + new Stream("liquid from degassing separator", flashSep.getLiquidOutStream()); + + Heater richGLycolHeater2 = new Heater("LP rich glycol heater", flashLiquid); + richGLycolHeater2.setOutTemperature(273.15 + 139.0); + richGLycolHeater2.setOutPressure(1.23); + + neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); + stripGas.setMolarComposition( + new double[] {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}); + + Stream strippingGas = new Stream("stripGas", stripGas); + strippingGas.setFlowRate(90.2, "Sm3/hr"); + strippingGas.setTemperature(80.0, "C"); + strippingGas.setPressure(1.23, "bara"); + + Stream gasToReboiler = strippingGas.clone(); + gasToReboiler.setName("gas to reboiler"); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(richGLycolHeater2.getOutletStream(), 0); + column.getReboiler().setOutTemperature(273.15 + 206.6); + column.getCondenser().setOutTemperature(273.15 + 101.0); + column.getReboiler().addStream(gasToReboiler); + column.setTopPressure(1.2); + column.setBottomPressure(1.23); + + Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); + coolerRegenGas.setOutTemperature(273.15 + 35.5); + + Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); + + Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); + + Stream liquidToTrreatment = new Stream("water to treatment", sepregenGas.getLiquidOutStream()); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addSolventInStream(column.getLiquidOutStream()); + stripper.addGasInStream(strippingGas); + stripper.setNumberOfStages(4); + stripper.setStageEfficiency(0.5); + + Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); + recycleGasFromStripper.addStream(stripper.getGasOutStream()); + recycleGasFromStripper.setOutletStream(gasToReboiler); + + Heater bufferTank = new Heater("TEG buffer tank", stripper.getSolventOutStream()); + bufferTank.setOutTemperature(273.15 + 185.0); + + Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream()); + hotLeanTEGPump.setOutletPressure(20.0); + hotLeanTEGPump.setIsentropicEfficiency(0.75); + + Heater coolerhOTteg = new Heater("hot lean TEG cooler", hotLeanTEGPump.getOutletStream()); + coolerhOTteg.setOutTemperature(273.15 + 116.8); + + Heater coolerhOTteg2 = new Heater("medium hot lean TEG cooler", coolerhOTteg.getOutletStream()); + coolerhOTteg2.setOutTemperature(273.15 + 89.3); + + Heater coolerhOTteg3 = new Heater("lean TEG cooler", coolerhOTteg2.getOutletStream()); + coolerhOTteg3.setOutTemperature(273.15 + 43.0); + + Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); + hotLeanTEGPump2.setOutletPressure(52.21); + hotLeanTEGPump2.setIsentropicEfficiency(0.75); + + Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); + + neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); + pureTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); + + Stream makeupTEG = new Stream("makeup TEG", pureTEG); + makeupTEG.setFlowRate(1e-6, "kg/hr"); + makeupTEG.setTemperature(43.0, "C"); + makeupTEG.setPressure(52.21, "bara"); + + Calculator makeupCalculator = new Calculator("makeup calculator"); + makeupCalculator.addInputVariable(dehydratedGas); + makeupCalculator.addInputVariable(flashGas); + makeupCalculator.addInputVariable(gasToFlare); + makeupCalculator.addInputVariable(liquidToTrreatment); + makeupCalculator.setOutputVariable(makeupTEG); + + StaticMixer makeupMixer = new StaticMixer("makeup mixer"); + makeupMixer.addStream(leanTEGtoabs); + makeupMixer.addStream(makeupTEG); + + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); + resycleLeanTEG.addStream(makeupMixer.getOutletStream()); + resycleLeanTEG.setOutletStream(TEGFeed); + resycleLeanTEG.setPriority(200); + resycleLeanTEG.setDownstreamProperty("flow rate"); + + richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); + richGLycolHeater.isSetEnergyStream(); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(dryFeedGas); + operations.add(saturatedFeedGas); + operations.add(waterSaturatedFeedGas); + operations.add(TEGFeed); + operations.add(absorber); + operations.add(dehydratedGas); + operations.add(richTEG); + operations.add(glycol_flash_valve); + operations.add(richGLycolHeaterCondenser); + operations.add(richGLycolHeater); + operations.add(flashSep); + operations.add(flashGas); + operations.add(flashLiquid); + operations.add(richGLycolHeater2); + operations.add(gasToReboiler); + operations.add(column); + operations.add(coolerRegenGas); + operations.add(sepregenGas); + operations.add(gasToFlare); + operations.add(liquidToTrreatment); + operations.add(strippingGas); + operations.add(stripper); + operations.add(recycleGasFromStripper); + operations.add(bufferTank); + operations.add(hotLeanTEGPump); + operations.add(coolerhOTteg); + operations.add(coolerhOTteg2); + operations.add(coolerhOTteg3); + operations.add(hotLeanTEGPump2); + operations.add(leanTEGtoabs); + operations.add(makeupCalculator); + operations.add(makeupTEG); + operations.add(makeupMixer); + operations.add(resycleLeanTEG); + + operations.run(); + // operations.run(); + + operations.save("c:/temp/TEGprocess.neqsim"); + // operations = ProcessSystem.open("c:/temp/TEGprocess.neqsim"); + // ((DistillationColumn)operations.getUnit("TEG regeneration + // olumn")).setTopPressure(1.2); + // operations.run(); + // ((DistillationColumn)operations.getUnit("TEG regeneration + // column")).setNumberOfTrays(2); + System.out + .println("water in wet gas " + ((Stream) operations.getUnit("water saturated feed gas")) + .getFluid().getPhase(0).getComponent("water").getz() * 1.0e6 * 0.01802 + * ThermodynamicConstantsInterface.atm / (ThermodynamicConstantsInterface.R * 288.15)); + System.out.println("water in dry gas " + ((Stream) operations.getUnit("dry gas from absorber")) + .getFluid().getPhase(0).getComponent("water").getz() * 1.0e6); + System.out.println("reboiler duty (KW) " + + ((Reboiler) ((DistillationColumn) operations.getUnit("TEG regeneration column")) + .getReboiler()).getDuty() / 1.0e3); + System.out.println("wt lean TEG " + ((WaterStripperColumn) operations.getUnit("TEG stripper")) + .getSolventOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG") * 100.0); + + double waterInWetGasppm = + waterSaturatedFeedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; + double waterInWetGaskgMSm3 = waterInWetGasppm * 0.01802 * ThermodynamicConstantsInterface.atm + / (ThermodynamicConstantsInterface.R * 288.15); + double TEGfeedwt = TEGFeed.getFluid().getPhase("aqueous").getWtFrac("TEG"); + double TEGfeedflw = TEGFeed.getFlowRate("kg/hr"); + double waterInDehydratedGasppm = + dehydratedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; + double waterInDryGaskgMSm3 = waterInDehydratedGasppm * 0.01802 + * ThermodynamicConstantsInterface.atm / (ThermodynamicConstantsInterface.R * 288.15); + double richTEG2 = richTEG.getFluid().getPhase("aqueous").getWtFrac("TEG"); + System.out.println("reboiler duty (KW) " + ((Reboiler) column.getReboiler()).getDuty() / 1.0e3); + System.out.println("flow rate from reboiler " + + ((Reboiler) column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); + System.out.println( + "flow rate from stripping column " + stripper.getLiquidOutStream().getFlowRate("kg/hr")); + System.out.println("flow rate from pump2 " + + hotLeanTEGPump2.getOutletStream().getFluid().getFlowRate("kg/hr")); + System.out.println("makeup TEG " + makeupTEG.getFluid().getFlowRate("kg/hr")); + + TEGFeed.getFluid().display(); + absorber.run(); + + System.out.println("pump power " + hotLeanTEGPump.getDuty()); + System.out.println("pump2 power " + hotLeanTEGPump2.getDuty()); + System.out.println("wt lean TEG after reboiler " + + column.getLiquidOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG")); + System.out.println( + "temperature from pump " + (hotLeanTEGPump2.getOutletStream().getTemperature() - 273.15)); + + System.out.println("flow rate from reboiler " + + ((Reboiler) column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); + System.out.println("flow rate from pump2 " + + hotLeanTEGPump2.getOutletStream().getFluid().getFlowRate("kg/hr")); + System.out.println("condenser duty " + + ((Condenser) ((DistillationColumn) operations.getUnit("TEG regeneration column")) + .getCondenser()).getDuty() / 1.0e3); + System.out.println("richGLycolHeaterCondenser duty " + + richGLycolHeaterCondenser.getEnergyStream().getDuty() / 1.0e3); + System.out.println("richGLycolHeaterCondenser temperature out " + + richGLycolHeaterCondenser.getOutletStream().getTemperature("C")); + richGLycolHeaterCondenser.run(); + + hotLeanTEGPump.getOutletStream().displayResult(); + flashLiquid.displayResult(); + + HeatExchanger heatEx = + new HeatExchanger("heatEx", flashLiquid, hotLeanTEGPump.getOutletStream()); + heatEx.setUAvalue(350.0); + heatEx.run(); + heatEx.displayResult(); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationAaHa.java b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationAaHa.java index caa29e84d7..c5693ce806 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationAaHa.java +++ b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationAaHa.java @@ -17,6 +17,7 @@ import neqsim.processSimulation.processEquipment.util.SetPoint; import neqsim.processSimulation.processEquipment.util.StreamSaturatorUtil; import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.ThermodynamicConstantsInterface; /** *

@@ -28,444 +29,435 @@ * @since 2.2.3 */ public class TEGdehydrationProcessDistillationAaHa { - /** - *

- * getProcess. - *

- * - * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + /** + *

+ * getProcess. + *

+ * + * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public static neqsim.processSimulation.processSystem.ProcessSystem getProcess() { + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + feedGas.addComponent("nitrogen", 1.42); + feedGas.addComponent("CO2", 0.5339); + feedGas.addComponent("methane", 95.2412); + feedGas.addComponent("ethane", 2.2029); + feedGas.addComponent("propane", 0.3231); + feedGas.addComponent("i-butane", 0.1341); + feedGas.addComponent("n-butane", 0.0827); + feedGas.addComponent("i-pentane", 0.0679); + feedGas.addComponent("n-pentane", 0.035); + feedGas.addComponent("n-hexane", 0.0176); + feedGas.addComponent("benzene", 0.0017); + feedGas.addComponent("toluene", 0.0043); + feedGas.addComponent("m-Xylene", 0.0031); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("TEG", 0); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(true); + + Stream dryFeedGas = new Stream("dry feed gas", feedGas); + dryFeedGas.setFlowRate(25.32, "MSm3/day"); + dryFeedGas.setTemperature(25.0, "C"); + dryFeedGas.setPressure(87.12, "bara"); + + StreamSaturatorUtil saturatedFeedGas = new StreamSaturatorUtil("water saturator", dryFeedGas); + + Stream waterSaturatedFeedGas = + new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); + + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGas); + hydrateTAnalyser.setName("hydrate temperature analyser"); + + neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); + feedTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.97}); + + Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", waterSaturatedFeedGas); + feedTPsetterToAbsorber.setOutPressure(87.12, "bara"); + feedTPsetterToAbsorber.setOutTemperature(27.93, "C"); + + Stream feedToAbsorber = + new Stream("feed to TEG absorber", feedTPsetterToAbsorber.getOutletStream()); + + Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); + TEGFeed.setFlowRate(14.68 * 1100.0, "kg/hr"); + TEGFeed.setTemperature(43.4, "C"); + TEGFeed.setPressure(87.12, "bara"); + + SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); + absorber.addGasInStream(feedToAbsorber); + absorber.addSolventInStream(TEGFeed); + absorber.setNumberOfStages(5); + absorber.setStageEfficiency(0.5); + + Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); + + Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); + /* + * WaterDewPointAnalyser waterDewPointAnalyser = new WaterDewPointAnalyser(dehydratedGas); + * waterDewPointAnalyser.setName("water dew point analyser"); + */ + HydrateEquilibriumTemperatureAnalyser waterDewPointAnalyser = + new HydrateEquilibriumTemperatureAnalyser(dehydratedGas); + waterDewPointAnalyser.setReferencePressure(70.0); + waterDewPointAnalyser.setName("water dew point analyser"); + + ThrottlingValve glycol_flash_valve = new ThrottlingValve("Rich TEG HP flash valve", richTEG); + glycol_flash_valve.setOutletPressure(5.5); + + Heater richGLycolHeaterCondenser = + new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); + + HeatExchanger heatEx2 = + new HeatExchanger("rich TEG heat exchanger 1", richGLycolHeaterCondenser.getOutletStream()); + heatEx2.setGuessOutTemperature(273.15 + 62.0); + heatEx2.setUAvalue(200.0); + + Separator flashSep = new Separator("degassing separator", heatEx2.getOutStream(0)); + + Stream flashGas = new Stream("gas from degassing separator", flashSep.getGasOutStream()); + + Stream flashLiquid = + new Stream("liquid from degassing separator", flashSep.getLiquidOutStream()); + + Filter fineFilter = new Filter("TEG fine filter", flashLiquid); + fineFilter.setDeltaP(0.05, "bara"); + + Filter carbonFilter = new Filter("activated carbon filter", fineFilter.getOutletStream()); + carbonFilter.setDeltaP(0.01, "bara"); + + HeatExchanger heatEx = + new HeatExchanger("rich TEG heat exchanger 2", carbonFilter.getOutletStream()); + heatEx.setGuessOutTemperature(273.15 + 130.0); + heatEx.setUAvalue(390.0); + + ThrottlingValve glycol_flash_valve2 = + new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); + glycol_flash_valve2.setName("Rich TEG LP flash valve"); + glycol_flash_valve2.setOutletPressure(1.23); + + neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); + // stripGas.setMolarComposition(new double[] { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, + // 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }); + + Stream strippingGas = new Stream("stripGas", stripGas); + strippingGas.setFlowRate(255.0, "Sm3/hr"); + strippingGas.setTemperature(80.0, "C"); + strippingGas.setPressure(1.02, "bara"); + + Stream gasToReboiler = strippingGas.clone(); + gasToReboiler.setName("gas to reboiler"); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(glycol_flash_valve2.getOutletStream(), 0); + column.getReboiler().setOutTemperature(273.15 + 201.0); + column.getCondenser().setOutTemperature(273.15 + 92.0); + column.getReboiler().addStream(gasToReboiler); + column.setTopPressure(ThermodynamicConstantsInterface.referencePressure); + column.setBottomPressure(1.02); + + Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); + coolerRegenGas.setOutTemperature(273.15 + 7.5); + + Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); + + Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); + + Stream liquidToTrreatment = new Stream("water to treatment", sepregenGas.getLiquidOutStream()); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addSolventInStream(column.getLiquidOutStream()); + stripper.addGasInStream(strippingGas); + stripper.setNumberOfStages(4); + stripper.setStageEfficiency(0.5); + /* + * DistillationColumn stripper = new DistillationColumn(3, false, false); + * stripper.setName("TEG stripper"); stripper.addFeedStream(column.getLiquidOutStream(), 2); + * stripper.getTray(0).addStream(strippingGas); */ - public static neqsim.processSimulation.processSystem.ProcessSystem getProcess() { - neqsim.thermo.system.SystemInterface feedGas = - new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); - feedGas.addComponent("nitrogen", 1.42); - feedGas.addComponent("CO2", 0.5339); - feedGas.addComponent("methane", 95.2412); - feedGas.addComponent("ethane", 2.2029); - feedGas.addComponent("propane", 0.3231); - feedGas.addComponent("i-butane", 0.1341); - feedGas.addComponent("n-butane", 0.0827); - feedGas.addComponent("i-pentane", 0.0679); - feedGas.addComponent("n-pentane", 0.035); - feedGas.addComponent("n-hexane", 0.0176); - feedGas.addComponent("benzene", 0.0017); - feedGas.addComponent("toluene", 0.0043); - feedGas.addComponent("m-Xylene", 0.0031); - feedGas.addComponent("water", 0.0); - feedGas.addComponent("TEG", 0); - feedGas.setMixingRule(10); - feedGas.setMultiPhaseCheck(true); - - Stream dryFeedGas = new Stream("dry feed gas", feedGas); - dryFeedGas.setFlowRate(25.32, "MSm3/day"); - dryFeedGas.setTemperature(25.0, "C"); - dryFeedGas.setPressure(87.12, "bara"); - - StreamSaturatorUtil saturatedFeedGas = - new StreamSaturatorUtil("water saturator", dryFeedGas); - - Stream waterSaturatedFeedGas = - new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); - - HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser = - new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGas); - hydrateTAnalyser.setName("hydrate temperature analyser"); - - neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); - feedTEG.setMolarComposition(new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.03, 0.97}); - - Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", waterSaturatedFeedGas); - feedTPsetterToAbsorber.setOutPressure(87.12, "bara"); - feedTPsetterToAbsorber.setOutTemperature(27.93, "C"); - - Stream feedToAbsorber = - new Stream("feed to TEG absorber", feedTPsetterToAbsorber.getOutletStream()); - - Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); - TEGFeed.setFlowRate(14.68 * 1100.0, "kg/hr"); - TEGFeed.setTemperature(43.4, "C"); - TEGFeed.setPressure(87.12, "bara"); - - SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); - absorber.addGasInStream(feedToAbsorber); - absorber.addSolventInStream(TEGFeed); - absorber.setNumberOfStages(5); - absorber.setStageEfficiency(0.5); - - Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); - - Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); - /* - * WaterDewPointAnalyser waterDewPointAnalyser = new WaterDewPointAnalyser(dehydratedGas); - * waterDewPointAnalyser.setName("water dew point analyser"); - */ - HydrateEquilibriumTemperatureAnalyser waterDewPointAnalyser = - new HydrateEquilibriumTemperatureAnalyser(dehydratedGas); - waterDewPointAnalyser.setReferencePressure(70.0); - waterDewPointAnalyser.setName("water dew point analyser"); - - ThrottlingValve glycol_flash_valve = - new ThrottlingValve("Rich TEG HP flash valve", richTEG); - glycol_flash_valve.setOutletPressure(5.5); - - Heater richGLycolHeaterCondenser = - new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); - - HeatExchanger heatEx2 = new HeatExchanger("rich TEG heat exchanger 1", - richGLycolHeaterCondenser.getOutletStream()); - heatEx2.setGuessOutTemperature(273.15 + 62.0); - heatEx2.setUAvalue(200.0); - - Separator flashSep = new Separator("degasing separator", heatEx2.getOutStream(0)); - - Stream flashGas = new Stream("gas from degasing separator", flashSep.getGasOutStream()); - - Stream flashLiquid = - new Stream("liquid from degasing separator", flashSep.getLiquidOutStream()); - - Filter fineFilter = new Filter("TEG fine filter", flashLiquid); - fineFilter.setDeltaP(0.05, "bara"); - - Filter carbonFilter = new Filter("activated carbon filter", fineFilter.getOutletStream()); - carbonFilter.setDeltaP(0.01, "bara"); - - HeatExchanger heatEx = - new HeatExchanger("rich TEG heat exchanger 2", carbonFilter.getOutletStream()); - heatEx.setGuessOutTemperature(273.15 + 130.0); - heatEx.setUAvalue(390.0); - - ThrottlingValve glycol_flash_valve2 = - new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); - glycol_flash_valve2.setName("Rich TEG LP flash valve"); - glycol_flash_valve2.setOutletPressure(1.23); - - neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); - // stripGas.setMolarComposition(new double[] { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, - // 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }); - - Stream strippingGas = new Stream("stripGas", stripGas); - strippingGas.setFlowRate(255.0, "Sm3/hr"); - strippingGas.setTemperature(80.0, "C"); - strippingGas.setPressure(1.02, "bara"); - - Stream gasToReboiler = strippingGas.clone(); - gasToReboiler.setName("gas to reboiler"); - - DistillationColumn column = new DistillationColumn(1, true, true); - column.setName("TEG regeneration column"); - column.addFeedStream(glycol_flash_valve2.getOutletStream(), 0); - column.getReboiler().setOutTemperature(273.15 + 201.0); - column.getCondenser().setOutTemperature(273.15 + 92.0); - column.getReboiler().addStream(gasToReboiler); - column.setTopPressure(1.01325); - column.setBottomPressure(1.02); - - Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); - coolerRegenGas.setOutTemperature(273.15 + 7.5); - - Separator sepregenGas = - new Separator("regen gas separator", coolerRegenGas.getOutletStream()); - - Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); - - Stream liquidToTrreatment = - new Stream("water to treatment", sepregenGas.getLiquidOutStream()); - - WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); - stripper.addSolventInStream(column.getLiquidOutStream()); - stripper.addGasInStream(strippingGas); - stripper.setNumberOfStages(4); - stripper.setStageEfficiency(0.5); - /* - * DistillationColumn stripper = new DistillationColumn(3, false, false); - * stripper.setName("TEG stripper"); stripper.addFeedStream(column.getLiquidOutStream(), 2); - * stripper.getTray(0).addStream(strippingGas); - */ - Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); - recycleGasFromStripper.addStream(stripper.getGasOutStream()); - recycleGasFromStripper.setOutletStream(gasToReboiler); - - Heater bufferTank = new Heater("TEG buffer tank", stripper.getLiquidOutStream()); - bufferTank.setOutTemperature(273.15 + 191.0); - - Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream());// stripper.getSolventOutStream()); - hotLeanTEGPump.setOutletPressure(5.0); - hotLeanTEGPump.setIsentropicEfficiency(0.6); - - heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); - - heatEx2.setFeedStream(1, heatEx.getOutStream(1)); - - Heater coolerhOTteg3 = new Heater("lean TEG cooler", heatEx2.getOutStream(1)); - coolerhOTteg3.setOutTemperature(273.15 + 35.41); - - Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); - hotLeanTEGPump2.setOutletPressure(87.2); - hotLeanTEGPump2.setIsentropicEfficiency(0.75); - - SetPoint pumpHPPresSet = - new SetPoint("HP pump set", hotLeanTEGPump2, "pressure", feedToAbsorber); - - Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); - - neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); - pureTEG.setMolarComposition(new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 1.0}); - - Stream makeupTEG = new Stream("makeup TEG", pureTEG); - makeupTEG.setFlowRate(1e-6, "kg/hr"); - makeupTEG.setTemperature(43.0, "C"); - makeupTEG.setPressure(52.21, "bara"); - - Calculator makeupCalculator = new Calculator("TEG makeup calculator"); - makeupCalculator.addInputVariable(dehydratedGas); - makeupCalculator.addInputVariable(flashGas); - makeupCalculator.addInputVariable(gasToFlare); - makeupCalculator.addInputVariable(liquidToTrreatment); - makeupCalculator.setOutputVariable(makeupTEG); - - StaticMixer makeupMixer = new StaticMixer("makeup mixer"); - makeupMixer.addStream(leanTEGtoabs); - makeupMixer.addStream(makeupTEG); - - Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); - resycleLeanTEG.addStream(makeupMixer.getOutletStream()); - resycleLeanTEG.setOutletStream(TEGFeed); - resycleLeanTEG.setPriority(200); - resycleLeanTEG.setDownstreamProperty("flow rate"); - - richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); - // richGLycolHeater.isSetEnergyStream(); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(dryFeedGas); - operations.add(saturatedFeedGas); - operations.add(waterSaturatedFeedGas); - operations.add(hydrateTAnalyser); - operations.add(feedTPsetterToAbsorber); - operations.add(feedToAbsorber); - operations.add(TEGFeed); - operations.add(absorber); - operations.add(dehydratedGas); - operations.add(waterDewPointAnalyser); - operations.add(richTEG); - operations.add(glycol_flash_valve); - operations.add(richGLycolHeaterCondenser); - operations.add(heatEx2); - operations.add(flashSep); - operations.add(flashGas); - - operations.add(flashLiquid); - operations.add(fineFilter); - operations.add(carbonFilter); - operations.add(heatEx); - operations.add(glycol_flash_valve2); - operations.add(gasToReboiler); - operations.add(column); - operations.add(coolerRegenGas); - operations.add(sepregenGas); - operations.add(gasToFlare); - operations.add(liquidToTrreatment); - operations.add(strippingGas); - operations.add(stripper); - operations.add(recycleGasFromStripper); - operations.add(bufferTank); - operations.add(hotLeanTEGPump); - operations.add(coolerhOTteg3); - operations.add(pumpHPPresSet); - operations.add(hotLeanTEGPump2); - operations.add(leanTEGtoabs); - operations.add(makeupCalculator); - operations.add(makeupTEG); - operations.add(makeupMixer); - operations.add(resycleLeanTEG); - return operations; - } - - /** - *

- * main. - *

+ Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); + recycleGasFromStripper.addStream(stripper.getGasOutStream()); + recycleGasFromStripper.setOutletStream(gasToReboiler); + + Heater bufferTank = new Heater("TEG buffer tank", stripper.getLiquidOutStream()); + bufferTank.setOutTemperature(273.15 + 191.0); + + Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream()); // stripper.getSolventOutStream()); + hotLeanTEGPump.setOutletPressure(5.0); + hotLeanTEGPump.setIsentropicEfficiency(0.6); + + heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); + + heatEx2.setFeedStream(1, heatEx.getOutStream(1)); + + Heater coolerhOTteg3 = new Heater("lean TEG cooler", heatEx2.getOutStream(1)); + coolerhOTteg3.setOutTemperature(273.15 + 35.41); + + Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); + hotLeanTEGPump2.setOutletPressure(87.2); + hotLeanTEGPump2.setIsentropicEfficiency(0.75); + + SetPoint pumpHPPresSet = + new SetPoint("HP pump set", hotLeanTEGPump2, "pressure", feedToAbsorber); + + Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); + + neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); + pureTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); + + Stream makeupTEG = new Stream("makeup TEG", pureTEG); + makeupTEG.setFlowRate(1e-6, "kg/hr"); + makeupTEG.setTemperature(43.0, "C"); + makeupTEG.setPressure(52.21, "bara"); + + Calculator makeupCalculator = new Calculator("TEG makeup calculator"); + makeupCalculator.addInputVariable(dehydratedGas); + makeupCalculator.addInputVariable(flashGas); + makeupCalculator.addInputVariable(gasToFlare); + makeupCalculator.addInputVariable(liquidToTrreatment); + makeupCalculator.setOutputVariable(makeupTEG); + + StaticMixer makeupMixer = new StaticMixer("makeup mixer"); + makeupMixer.addStream(leanTEGtoabs); + makeupMixer.addStream(makeupTEG); + + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); + resycleLeanTEG.addStream(makeupMixer.getOutletStream()); + resycleLeanTEG.setOutletStream(TEGFeed); + resycleLeanTEG.setPriority(200); + resycleLeanTEG.setDownstreamProperty("flow rate"); + + richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); + // richGLycolHeater.isSetEnergyStream(); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(dryFeedGas); + operations.add(saturatedFeedGas); + operations.add(waterSaturatedFeedGas); + operations.add(hydrateTAnalyser); + operations.add(feedTPsetterToAbsorber); + operations.add(feedToAbsorber); + operations.add(TEGFeed); + operations.add(absorber); + operations.add(dehydratedGas); + operations.add(waterDewPointAnalyser); + operations.add(richTEG); + operations.add(glycol_flash_valve); + operations.add(richGLycolHeaterCondenser); + operations.add(heatEx2); + operations.add(flashSep); + operations.add(flashGas); + + operations.add(flashLiquid); + operations.add(fineFilter); + operations.add(carbonFilter); + operations.add(heatEx); + operations.add(glycol_flash_valve2); + operations.add(gasToReboiler); + operations.add(column); + operations.add(coolerRegenGas); + operations.add(sepregenGas); + operations.add(gasToFlare); + operations.add(liquidToTrreatment); + operations.add(strippingGas); + operations.add(stripper); + operations.add(recycleGasFromStripper); + operations.add(bufferTank); + operations.add(hotLeanTEGPump); + operations.add(coolerhOTteg3); + operations.add(pumpHPPresSet); + operations.add(hotLeanTEGPump2); + operations.add(leanTEGtoabs); + operations.add(makeupCalculator); + operations.add(makeupTEG); + operations.add(makeupMixer); + operations.add(resycleLeanTEG); + return operations; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + neqsim.processSimulation.processSystem.ProcessSystem operations = + TEGdehydrationProcessDistillationAaHa.getProcess(); + + operations.run(); + // operations.run(); + + // operations.save("c:/temp/TEGprocessAaHa.neqsim"); + // operations = ProcessSystem.open("c:/temp/TEGprocess.neqsim"); + // ((DistillationColumn)operations.getUnit("TEG regeneration + // column")).setTopPressure(1.2); + // operations.run(); + // ((DistillationColumn)operations.getUnit("TEG regeneration + // column")).setNumberOfTrays(2); + /* + * System.out.println("water in wet gas " + ((Stream) + * operations.getUnit("water saturated feed gas")).getFluid() + * .getPhase(0).getComponent("water").getz() * 1.0e6 * 0.01802 + * *ThermodynamicConstantsInterface.atm / (ThermodynamicConstantsInterface.R * 288.15)); + * System.out.println("water in dry gas " + ((Stream) + * operations.getUnit("dry gas from absorber")).getFluid() + * .getPhase(0).getComponent("water").getz() * 1.0e6); System.out.println("reboiler duty (KW) " + * + ((Reboiler) ((DistillationColumn) + * operations.getUnit("TEG regeneration column")).getReboiler()) .getDuty() / 1.0e3); + * System.out.println("wt lean TEG " + ((WaterStripperColumn) + * operations.getUnit("TEG stripper")) + * .getSolventOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG") * 100.0); + * + * double waterInWetGasppm = + * waterSaturatedFeedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; double + * waterInWetGaskgMSm3 = waterInWetGasppm * 0.01802 *ThermodynamicConstantsInterface.atm / + * (ThermodynamicConstantsInterface.R * 288.15); double TEGfeedwt = + * TEGFeed.getFluid().getPhase("aqueous").getWtFrac("TEG"); double TEGfeedflw = + * TEGFeed.getFlowRate("kg/hr"); double waterInDehydratedGasppm = + * dehydratedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; double + * waterInDryGaskgMSm3 = waterInDehydratedGasppm * 0.01802 *ThermodynamicConstantsInterface.atm + * / (ThermodynamicConstantsInterface.R * 288.15); double richTEG2 = + * richTEG.getFluid().getPhase("aqueous").getWtFrac("TEG"); double temp = + * ((Stream)operations.getUnit("feed to TEG absorber")).getFluid().getPhase(0). + * getComponent("water").getz()*1.0e6*0.01802*101325.0/(ThermodynamicConstantsInterface.R*288.15 + * ); System.out.println("reboiler duty (KW) " + ((Reboiler) column.getReboiler()).getDuty() / + * 1.0e3); System.out.println("flow rate from reboiler " + ((Reboiler) + * column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); + * System.out.println("flow rate from stripping column " + + * stripper.getLiquidOutStream().getFlowRate("kg/hr")); + * System.out.println("flow rate from pump2 " + + * hotLeanTEGPump2.getOutStream().getFluid().getFlowRate("kg/hr")); + * System.out.println("makeup TEG " + makeupTEG.getFluid().getFlowRate("kg/hr")); + * + * TEGFeed.getFluid().display(); absorber.run(); + * + * System.out.println("pump power " + hotLeanTEGPump.getDuty()); + * System.out.println("pump2 power " + hotLeanTEGPump2.getDuty()); + * System.out.println("wt lean TEG after reboiler " + + * column.getLiquidOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG")); + * System.out.println("temperature from pump " + + * (hotLeanTEGPump2.getOutStream().getTemperature() - 273.15)); + * + * System.out.println("flow rate from reboiler " + ((Reboiler) + * column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); + * System.out.println("flow rate from pump2 " + + * hotLeanTEGPump2.getOutStream().getFluid().getFlowRate("kg/hr")); + * System.out.println("flow rate to flare " + gasToFlare.getFluid().getFlowRate("kg/hr")); + * + * System.out.println("condenser duty " + ((Condenser) ((DistillationColumn) + * operations.getUnit("TEG regeneration column")).getCondenser()) .getDuty() / 1.0e3); + * System.out.println( "richGLycolHeaterCondenser duty " + + * richGLycolHeaterCondenser.getEnergyStream().getDuty() / 1.0e3); + * System.out.println("richGLycolHeaterCondenser temperature out " + + * richGLycolHeaterCondenser.getOutStream().getTemperature("C")); + * richGLycolHeaterCondenser.run(); + * + * hotLeanTEGPump.getOutStream().displayResult(); flashLiquid.displayResult(); * - * @param args an array of {@link java.lang.String} objects + * System.out.println("Temperature rich TEG out of reflux condenser " + + * richGLycolHeaterCondenser.getOutStream().getTemperature("C")); heatEx.displayResult(); + * System.out.println("glycol out temperature " + + * glycol_flash_valve2.getOutStream().getFluid().getTemperature("C")); + * System.out.println("glycol out temperature2 " +heatEx2.getOutStream(0).getTemperature("C")); + * System.out.println("glycol out temperature2 " +heatEx2.getOutStream(1).getTemperature("C")); + * + * System.out.println("out water rate LP valve" + + * glycol_flash_valve2.getOutStream().getFluid().getPhase(0).getComponent( + * "water").getNumberOfmoles()); System.out.println("glycol out water rate reboil " + + * ((Reboiler) column.getReboiler()).getLiquidOutStream().getFluid().getComponent("water"). + * getNumberOfmoles()); System.out.println("glycol out water rate condens " + ((Condenser) + * column.getCondenser()).getGasOutStream().getFluid().getComponent("water"). + * getNumberOfmoles()); System.out.println("recycle out water rate " + * +recycleGasFromStripper.getOutletStream().getFluid().getComponent("water"). + * getNumberOfmoles()); + * + * System.out.println("water dew point of dry gas " + + * waterDewPointAnalyser.getMeasuredValue("C")); + * + * System.out.println("hydrocarbons in lean TEG " + (1.0- + * stripper.getLiquidOutStream().getFluid().getPhase(0).getWtFrac("TEG")- + * stripper.getLiquidOutStream().getFluid().getPhase(0).getWtFrac("water"))*1e6 + " mg/kg"); + * System.out.println("hydrocarbons in rich TEG " + (1.0- + * flashLiquid.getFluid().getPhase(0).getWtFrac("TEG")-flashLiquid.getFluid(). + * getPhase(0).getWtFrac("water"))*1e6 + " mg/kg"); + * + * //double dewT = ((WaterDewPointAnalyser)operations. + * getMeasurementDevice("water dew point analyser")).getMeasuredValue("C"); + * //waterDewPointAnalyser.setOnlineValue(measured, unit) + * //waterDewPointAnalyser.setOnlineSignal(isOnlineSignal, plantName, transmitterame); + * + * //Heat echanger test + * + * //Sabe and Open copy of model + * + * ProcessSystem locoperations = operations.copy(); + * //((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). + * getInStream(0).setTemperature(298.15, "C"); + * //((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). + * getInStream(1).setTemperature(363.15, "C"); + * //((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). + * getOutStream(0).setTemperature(298.15, "C"); + * //((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). + * getOutStream(1).setTemperature(333.15, "C"); + * //((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). + * runConditionAnalysis((HeatExchanger)operations. getUnit("rich TEG heat exchanger 2")); double + * eff = ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). + * getThermalEffectiveness(); System.out.println("eff " + eff); //store fouling factor in + * dataframe + * + * dehydratedGas.getFluid().display(); */ - @SuppressWarnings("unused") - public static void main(String[] args) { - neqsim.processSimulation.processSystem.ProcessSystem operations = - TEGdehydrationProcessDistillationAaHa.getProcess(); - - operations.run(); - // operations.run(); - - // operations.save("c:/temp/TEGprocessAaHa.neqsim"); - // operations = ProcessSystem.open("c:/temp/TEGprocess.neqsim"); - // ((DistillationColumn)operations.getUnit("TEG regeneration - /// column")).setTopPressure(1.2); - // operations.run(); - // ((DistillationColumn)operations.getUnit("TEG regeneration - /// column")).setNumberOfTrays(2); - /* - * System.out.println("water in wet gas " + ((Stream) - * operations.getUnit("water saturated feed gas")).getFluid() - * .getPhase(0).getComponent("water").getz() * 1.0e6 * 0.01802 * 101325.0 / (8.314 * - * 288.15)); System.out.println("water in dry gas " + ((Stream) - * operations.getUnit("dry gas from absorber")).getFluid() - * .getPhase(0).getComponent("water").getz() * 1.0e6); - * System.out.println("reboiler duty (KW) " + ((Reboiler) ((DistillationColumn) - * operations.getUnit("TEG regeneration column")).getReboiler()) .getDuty() / 1.0e3); - * System.out.println("wt lean TEG " + ((WaterStripperColumn) - * operations.getUnit("TEG stripper")) - * .getSolventOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG") * 100.0); - * - * double waterInWetGasppm = - * waterSaturatedFeedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; double - * waterInWetGaskgMSm3 = waterInWetGasppm * 0.01802 * 101325.0 / (8.314 * 288.15); double - * TEGfeedwt = TEGFeed.getFluid().getPhase("aqueous").getWtFrac("TEG"); double TEGfeedflw = - * TEGFeed.getFlowRate("kg/hr"); double waterInDehydratedGasppm = - * dehydratedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; double - * waterInDryGaskgMSm3 = waterInDehydratedGasppm * 0.01802 * 101325.0 / (8.314 * 288.15); - * double richTEG2 = richTEG.getFluid().getPhase("aqueous").getWtFrac("TEG"); double temp = - * ((Stream)operations.getUnit("feed to TEG absorber")).getFluid().getPhase(0). - * getComponent("water").getz()*1.0e6*0.01802*101325.0/(8.314*288.15); - * System.out.println("reboiler duty (KW) " + ((Reboiler) column.getReboiler()).getDuty() / - * 1.0e3); System.out.println("flow rate from reboiler " + ((Reboiler) - * column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); - * System.out.println("flow rate from stripping column " + - * stripper.getLiquidOutStream().getFlowRate("kg/hr")); - * System.out.println("flow rate from pump2 " + - * hotLeanTEGPump2.getOutStream().getFluid().getFlowRate("kg/hr")); - * System.out.println("makeup TEG " + makeupTEG.getFluid().getFlowRate("kg/hr")); - * - * TEGFeed.getFluid().display(); absorber.run(); - * - * System.out.println("pump power " + hotLeanTEGPump.getDuty()); - * System.out.println("pump2 power " + hotLeanTEGPump2.getDuty()); - * System.out.println("wt lean TEG after reboiler " + - * column.getLiquidOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG")); - * System.out.println("temperature from pump " + - * (hotLeanTEGPump2.getOutStream().getTemperature() - 273.15)); - * - * System.out.println("flow rate from reboiler " + ((Reboiler) - * column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); - * System.out.println("flow rate from pump2 " + - * hotLeanTEGPump2.getOutStream().getFluid().getFlowRate("kg/hr")); - * System.out.println("flow rate to flare " + gasToFlare.getFluid().getFlowRate("kg/hr")); - * - * System.out.println("condenser duty " + ((Condenser) ((DistillationColumn) - * operations.getUnit("TEG regeneration column")).getCondenser()) .getDuty() / 1.0e3); - * System.out.println( "richGLycolHeaterCondenser duty " + - * richGLycolHeaterCondenser.getEnergyStream().getDuty() / 1.0e3); - * System.out.println("richGLycolHeaterCondenser temperature out " + - * richGLycolHeaterCondenser.getOutStream().getTemperature("C")); - * richGLycolHeaterCondenser.run(); - * - * hotLeanTEGPump.getOutStream().displayResult(); flashLiquid.displayResult(); - * - * System.out.println("Temperature rich TEG out of reflux condenser " + - * richGLycolHeaterCondenser.getOutStream().getTemperature("C")); heatEx.displayResult(); - * System.out.println("glycol out temperature " + - * glycol_flash_valve2.getOutStream().getFluid().getTemperature("C")); - * System.out.println("glycol out temperature2 " - * +heatEx2.getOutStream(0).getTemperature("C")); - * System.out.println("glycol out temperature2 " - * +heatEx2.getOutStream(1).getTemperature("C")); - * - * - * System.out.println("out water rate LP valve" + - * glycol_flash_valve2.getOutStream().getFluid().getPhase(0).getComponent( - * "water").getNumberOfmoles()); System.out.println("glycol out water rate reboil " + - * ((Reboiler) column.getReboiler()).getLiquidOutStream().getFluid().getComponent("water"). - * getNumberOfmoles()); System.out.println("glycol out water rate condens " + ((Condenser) - * column.getCondenser()).getGasOutStream().getFluid().getComponent("water"). - * getNumberOfmoles()); System.out.println("recycle out water rate " - * +recycleGasFromStripper.getOutletStream().getFluid().getComponent("water"). - * getNumberOfmoles()); - * - * System.out.println("water dew point of dry gas " + - * waterDewPointAnalyser.getMeasuredValue("C")); - * - * - * System.out.println("hydrocarbons in lean TEG " + (1.0- - * stripper.getLiquidOutStream().getFluid().getPhase(0).getWtFrac("TEG")- - * stripper.getLiquidOutStream().getFluid().getPhase(0).getWtFrac("water"))*1e6 + " mg/kg"); - * System.out.println("hydrocarbons in rich TEG " + (1.0- - * flashLiquid.getFluid().getPhase(0).getWtFrac("TEG")-flashLiquid.getFluid(). - * getPhase(0).getWtFrac("water"))*1e6 + " mg/kg"); - * - * //double dewT = ((WaterDewPointAnalyser)operations. - * getMeasurementDevice("water dew point analyser")).getMeasuredValue("C"); - * //waterDewPointAnalyser.setOnlineValue(measured, unit) - * //waterDewPointAnalyser.setOnlineSignal(isOnlineSignal, plantName, transmitterame); - * - * - * - * //Heat echanger test - * - * //Sabe and Open copy of model - * - * ProcessSystem locoperations = operations.copy(); - * //((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). - * getInStream(0).setTemperature(298.15, "C"); - * //((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). - * getInStream(1).setTemperature(363.15, "C"); - * //((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). - * getOutStream(0).setTemperature(298.15, "C"); - * //((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). - * getOutStream(1).setTemperature(333.15, "C"); - * //((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). - * runConditionAnalysis((HeatExchanger)operations. getUnit("rich TEG heat exchanger 2")); - * double eff = ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger 2")). - * getThermalEffectiveness(); System.out.println("eff " + eff); //store fouling factor in - * dataframe - * - * - * dehydratedGas.getFluid().display(); - */ - - ConditionMonitor monitor = operations.getConditionMonitor(); - monitor.conditionAnalysis(); - - // Condition monitor TEG absorber - double xcalc = ((SimpleTEGAbsorber) monitor.getProcess().getUnit("TEG absorber")) - .getGasOutStream().getFluid().getPhase("gas").getComponent("water").getx() * 1.1; - ((SimpleTEGAbsorber) monitor.getProcess().getUnit("TEG absorber")).getGasOutStream() - .getFluid().getPhase("gas").getComponent("water").setx(xcalc); - monitor.conditionAnalysis("TEG absorber"); - System.out.println("number of theoretical stages " - + ((SimpleTEGAbsorber) monitor.getProcess().getUnit("TEG absorber")) - .getNumberOfTheoreticalStages()); - - // Condition monitor rich TEG heat exchanger - ((HeatExchanger) monitor.getProcess().getUnit("rich TEG heat exchanger 2")).getInStream(0) - .setTemperature(0.2, "C"); - double eff1 = ((HeatExchanger) monitor.getProcess().getUnit("rich TEG heat exchanger 2")) - .getThermalEffectiveness(); - double eff2 = ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")) - .getThermalEffectiveness(); - double relativeEfficiency = eff1 / eff2; - - // Condition monitor water dew point analyser - ((HydrateEquilibriumTemperatureAnalyser) monitor.getProcess() - .getMeasurementDevice("water dew point analyser")).setOnlineMeasurementValue(-23.5, - "C"); - ((HydrateEquilibriumTemperatureAnalyser) monitor.getProcess() - .getMeasurementDevice("water dew point analyser")).runConditionAnalysis(); - - // Condition monitor TEG fine filter - ((Filter) monitor.getProcess().getUnit("TEG fine filter")).setDeltaP(0.2, "bara"); - monitor.conditionAnalysis("TEG fine filter"); - System.out.println("fine filter deltaP " - + ((Filter) monitor.getProcess().getUnit("TEG fine filter")).getDeltaP()); - System.out.println("fine filter deltaP2 " - + ((Filter) operations.getUnit("TEG fine filter")).getDeltaP()); - double relativeCv = ((Filter) monitor.getProcess().getUnit("TEG fine filter")).getCvFactor() - / ((Filter) operations.getUnit("TEG fine filter")).getCvFactor(); - - double filterCv1 = ((Filter) operations.getUnit("TEG fine filter")).getCvFactor(); - double filterCv2 = ((Filter) operations.getUnit("activated carbon filter")).getCvFactor(); - - System.out.println("filterCv1" + filterCv1 + " filterCv2 " + filterCv2); - } + + ConditionMonitor monitor = operations.getConditionMonitor(); + monitor.conditionAnalysis(); + + // Condition monitor TEG absorber + double xcalc = ((SimpleTEGAbsorber) monitor.getProcess().getUnit("TEG absorber")) + .getGasOutStream().getFluid().getPhase("gas").getComponent("water").getx() * 1.1; + ((SimpleTEGAbsorber) monitor.getProcess().getUnit("TEG absorber")).getGasOutStream().getFluid() + .getPhase("gas").getComponent("water").setx(xcalc); + monitor.conditionAnalysis("TEG absorber"); + System.out.println("number of theoretical stages " + + ((SimpleTEGAbsorber) monitor.getProcess().getUnit("TEG absorber")) + .getNumberOfTheoreticalStages()); + + // Condition monitor rich TEG heat exchanger + ((HeatExchanger) monitor.getProcess().getUnit("rich TEG heat exchanger 2")).getInStream(0) + .setTemperature(0.2, "C"); + double eff1 = ((HeatExchanger) monitor.getProcess().getUnit("rich TEG heat exchanger 2")) + .getThermalEffectiveness(); + double eff2 = + ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")).getThermalEffectiveness(); + double relativeEfficiency = eff1 / eff2; + + // Condition monitor water dew point analyser + ((HydrateEquilibriumTemperatureAnalyser) monitor.getProcess() + .getMeasurementDevice("water dew point analyser")).setOnlineMeasurementValue(-23.5, "C"); + ((HydrateEquilibriumTemperatureAnalyser) monitor.getProcess() + .getMeasurementDevice("water dew point analyser")).runConditionAnalysis(); + + // Condition monitor TEG fine filter + ((Filter) monitor.getProcess().getUnit("TEG fine filter")).setDeltaP(0.2, "bara"); + monitor.conditionAnalysis("TEG fine filter"); + System.out.println("fine filter deltaP " + + ((Filter) monitor.getProcess().getUnit("TEG fine filter")).getDeltaP()); + System.out.println( + "fine filter deltaP2 " + ((Filter) operations.getUnit("TEG fine filter")).getDeltaP()); + double relativeCv = ((Filter) monitor.getProcess().getUnit("TEG fine filter")).getCvFactor() + / ((Filter) operations.getUnit("TEG fine filter")).getCvFactor(); + + double filterCv1 = ((Filter) operations.getUnit("TEG fine filter")).getCvFactor(); + double filterCv2 = ((Filter) operations.getUnit("activated carbon filter")).getCvFactor(); + + System.out.println("filterCv1" + filterCv1 + " filterCv2 " + filterCv2); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationGFA.java b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationGFA.java index 1791694fc4..a38b44c6c9 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationGFA.java +++ b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationGFA.java @@ -31,553 +31,544 @@ * @since 2.2.3 */ public class TEGdehydrationProcessDistillationGFA { - /** - * The flow rate of gas from the scrubber controlling the dew point (MSm3/hr) + /** + * The flow rate of gas from the scrubber controlling the dew point (MSm3/hr). + */ + public double feedGasFlowRate = 11.23; + + /** + * The temperature of the gas from the scrubber controlling the dew point (Celsuis). + */ + public double feedGasTemperature = 30.4; + + /** + * The pressure of the gas from the scrubber controlling the dew point (bara). + */ + public double feedGasPressure = 52.21; + + /** + * The temperature of the gas entering the TEG absorption column (Celisuis). + */ + public double absorberFeedGasTemperature = 30.4; + + /** + * The pressure of the gas entering the TEG absorption column (bara). + */ + public double absorberFeedGasPressure = 52.21; + + /** + * The flow rate of lean TEG entering the absorption column (kg/hr). + */ + public double leanTEGFlowRate = 6786.0; + + /** + * The temperature of the lean TEG entering the absorption column (Celsius). + */ + public double leanTEGTemperature = 43.6; + + /** + * The pressure in the flash drum (bara). + */ + public double flashDrumPressure = 4.9; + + /** + * Number of equilibrium stages in TEG absorber. + */ + public int numberOfEquilibriumStagesTEGabsorber = 5; + + /** + * Stage efficiency in TEG absorber. + */ + public double stageEfficiencyStripper = 0.5; + + /** + * Number of equilibrium stages in TEG absorber. + */ + public int numberOfEquilibriumStagesStripper = 4; + + /** + * Stage efficiency in TEG absorber. + */ + public double stageEfficiencyTEGabsorber = 0.55; + + /** + * UA value of rich TEG heat exchanger 1. + */ + public double UAvalueRichTEGHeatExchanger_1 = 2900.0; + + /** + * UA value of rich TEG heat exchanger 2. + */ + public double UAvalueRichTEGHeatExchanger_2 = 8200.0; + + /** + * Pressure in reboiler (bara). + */ + public double reboilerPressure = 1.23; + + /** + * Temperature in condenser(Celsius). + */ + public double condenserTemperature = 93.6; + + /** + * Pressure in condenser (bara). + */ + public double condenserPressure = 1.2; + + /** + * Temperature in reboiler (Celsius). + */ + public double reboilerTemperature = 206.6; + + /** + * Stripping gas flow rate (Sm3/hr). + */ + public double strippingGasRate = 91.2; + + /** + * Stripping gas feed temperature (Celsius). + */ + public double strippingGasFeedTemperature = 80.0; + + /** + * TEG buffer tank temperature (Celsius). + */ + public double bufferTankTemperatureTEG = 190.4; + + /** + * temperature of after regeneration gas cooler (Celsius). + */ + public double regenerationGasCoolerTemperature = 35.0; + + /** + * isentropic efficiency of hot lean TEG pump (0.0-1.0). + */ + public double hotTEGpumpIsentropicEfficiency = 0.75; + + /** + * pressure after hot lean TEG pump (bara). + */ + public double hotTEGpumpPressure = 20.0; + + /** + * isentropic efficiency of cold lean TEG pump (0.0-1.0). + */ + public double coldTEGpumpIsentropicEfficiency = 0.75; + + /** + *

+ * getProcess. + *

+ * + * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public neqsim.processSimulation.processSystem.ProcessSystem getProcess() { + // Create the input fluid to the TEG process and saturate it with water at + // scrubber conditions + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + feedGas.addComponent("nitrogen", 1.03); + feedGas.addComponent("CO2", 1.42); + feedGas.addComponent("methane", 83.88); + feedGas.addComponent("ethane", 8.07); + feedGas.addComponent("propane", 3.54); + feedGas.addComponent("i-butane", 0.54); + feedGas.addComponent("n-butane", 0.84); + feedGas.addComponent("i-pentane", 0.21); + feedGas.addComponent("n-pentane", 0.19); + feedGas.addComponent("n-hexane", 0.28); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("TEG", 0); + feedGas.createDatabase(true); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(false); + + Stream dryFeedGas = new Stream("dry feed gas", feedGas); + dryFeedGas.setFlowRate(feedGasFlowRate, "MSm3/day"); + dryFeedGas.setTemperature(feedGasTemperature, "C"); + dryFeedGas.setPressure(feedGasPressure, "bara"); + + StreamSaturatorUtil saturatedFeedGas = new StreamSaturatorUtil("water saturator", dryFeedGas); + + Stream waterSaturatedFeedGas = + new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); + + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGas); + hydrateTAnalyser.setName("hydrate temperature analyser"); + + neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); + feedTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.97}); + + Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", waterSaturatedFeedGas); + feedTPsetterToAbsorber.setOutPressure(absorberFeedGasPressure, "bara"); + feedTPsetterToAbsorber.setOutTemperature(absorberFeedGasTemperature, "C"); + + Stream feedToAbsorber = + new Stream("feed to TEG absorber", feedTPsetterToAbsorber.getOutletStream()); + + Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); + TEGFeed.setFlowRate(leanTEGFlowRate, "kg/hr"); + TEGFeed.setTemperature(leanTEGTemperature, "C"); + TEGFeed.setPressure(absorberFeedGasPressure, "bara"); + + SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); + absorber.addGasInStream(feedToAbsorber); + absorber.addSolventInStream(TEGFeed); + absorber.setNumberOfStages(numberOfEquilibriumStagesTEGabsorber); + absorber.setStageEfficiency(stageEfficiencyTEGabsorber); + + Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); + + Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); + + WaterDewPointAnalyser waterDewPointAnalyser2 = new WaterDewPointAnalyser(dehydratedGas); + waterDewPointAnalyser2.setName("water dew point analyser2"); + + HydrateEquilibriumTemperatureAnalyser waterDewPointAnalyser = + new HydrateEquilibriumTemperatureAnalyser(dehydratedGas); + waterDewPointAnalyser.setName("water dew point analyser"); + + ThrottlingValve glycol_flash_valve = new ThrottlingValve("Flash valve", richTEG); + glycol_flash_valve.setName("Rich TEG HP flash valve"); + glycol_flash_valve.setOutletPressure(flashDrumPressure); + + Heater richGLycolHeaterCondenser = + new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); + + HeatExchanger heatEx2 = + new HeatExchanger("rich TEG heat exchanger 1", richGLycolHeaterCondenser.getOutletStream()); + heatEx2.setGuessOutTemperature(273.15 + 62.0); + heatEx2.setUAvalue(UAvalueRichTEGHeatExchanger_1); + + Separator flashSep = new Separator("degassing separator", heatEx2.getOutStream(0)); + + Stream flashGas = new Stream("gas from degassing separator", flashSep.getGasOutStream()); + + Stream flashLiquid = + new Stream("liquid from degassing separator", flashSep.getLiquidOutStream()); + + Filter filter = new Filter("filters", flashLiquid); + + HeatExchanger heatEx = new HeatExchanger("rich TEG heat exchanger 2", filter.getOutletStream()); + heatEx.setGuessOutTemperature(273.15 + 130.0); + heatEx.setUAvalue(UAvalueRichTEGHeatExchanger_2); + + ThrottlingValve glycol_flash_valve2 = + new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); + glycol_flash_valve2.setName("Rich TEG LP flash valve"); + glycol_flash_valve2.setOutletPressure(reboilerPressure); + + neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); + + Stream strippingGas = new Stream("stripGas", stripGas); + strippingGas.setFlowRate(strippingGasRate, "Sm3/hr"); + strippingGas.setTemperature(strippingGasFeedTemperature, "C"); + strippingGas.setPressure(reboilerPressure, "bara"); + + Stream gasToReboiler = strippingGas.clone(); + gasToReboiler.setName("gas to reboiler"); + + DistillationColumn column = new DistillationColumn(3, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(glycol_flash_valve2.getOutletStream(), 1); + column.getReboiler().setOutTemperature(273.15 + reboilerTemperature); + column.getCondenser().setOutTemperature(273.15 + condenserTemperature); + column.getReboiler().addStream(gasToReboiler); + column.setTopPressure(condenserPressure); + column.setBottomPressure(reboilerPressure); + + Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); + coolerRegenGas.setOutTemperature(273.15 + regenerationGasCoolerTemperature); + + Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); + + Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); + + Stream liquidToTrreatment = new Stream("water to treatment", sepregenGas.getLiquidOutStream()); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addSolventInStream(column.getLiquidOutStream()); + stripper.addGasInStream(strippingGas); + stripper.setNumberOfStages(numberOfEquilibriumStagesStripper); + stripper.setStageEfficiency(stageEfficiencyStripper); + + Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); + recycleGasFromStripper.addStream(stripper.getGasOutStream()); + recycleGasFromStripper.setOutletStream(gasToReboiler); + + Heater bufferTank = new Heater("TEG buffer tank", stripper.getSolventOutStream()); + bufferTank.setOutTemperature(273.15 + bufferTankTemperatureTEG); + + Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream()); // stripper.getSolventOutStream()); + hotLeanTEGPump.setOutletPressure(hotTEGpumpPressure); + hotLeanTEGPump.setIsentropicEfficiency(hotTEGpumpIsentropicEfficiency); + + heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); + + heatEx2.setFeedStream(1, heatEx.getOutStream(1)); + + Heater coolerhOTteg3 = new Heater("lean TEG cooler", heatEx2.getOutStream(1)); + coolerhOTteg3.setOutTemperature(273.15 + leanTEGTemperature); + + Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); + hotLeanTEGPump2.setOutletPressure(absorberFeedGasPressure); + hotLeanTEGPump2.setIsentropicEfficiency(coldTEGpumpIsentropicEfficiency); + + SetPoint pumpHPPresSet = + new SetPoint("HP pump set", hotLeanTEGPump2, "pressure", feedToAbsorber); + + Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); + + neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); + pureTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); + + Stream makeupTEG = new Stream("makeup TEG", pureTEG); + makeupTEG.setFlowRate(1e-6, "kg/hr"); + makeupTEG.setTemperature(leanTEGTemperature, "C"); + makeupTEG.setPressure(absorberFeedGasPressure, "bara"); + + Calculator makeupCalculator = new Calculator("TEG makeup calculator"); + makeupCalculator.addInputVariable(dehydratedGas); + makeupCalculator.addInputVariable(flashGas); + makeupCalculator.addInputVariable(gasToFlare); + makeupCalculator.addInputVariable(liquidToTrreatment); + makeupCalculator.setOutputVariable(makeupTEG); + + StaticMixer makeupMixer = new StaticMixer("makeup mixer"); + makeupMixer.addStream(leanTEGtoabs); + makeupMixer.addStream(makeupTEG); + + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); + resycleLeanTEG.addStream(makeupMixer.getOutletStream()); + resycleLeanTEG.setOutletStream(TEGFeed); + resycleLeanTEG.setPriority(200); + resycleLeanTEG.setDownstreamProperty("flow rate"); + + richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); + // richGLycolHeater.isSetEnergyStream(); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(dryFeedGas); + operations.add(saturatedFeedGas); + operations.add(waterSaturatedFeedGas); + operations.add(hydrateTAnalyser); + operations.add(feedTPsetterToAbsorber); + operations.add(feedToAbsorber); + operations.add(TEGFeed); + operations.add(absorber); + operations.add(dehydratedGas); + operations.add(waterDewPointAnalyser); + operations.add(waterDewPointAnalyser2); + operations.add(richTEG); + operations.add(glycol_flash_valve); + operations.add(richGLycolHeaterCondenser); + operations.add(heatEx2); + operations.add(flashSep); + operations.add(flashGas); + operations.add(flashLiquid); + operations.add(filter); + operations.add(heatEx); + operations.add(glycol_flash_valve2); + operations.add(gasToReboiler); + operations.add(column); + operations.add(coolerRegenGas); + operations.add(sepregenGas); + operations.add(gasToFlare); + operations.add(liquidToTrreatment); + operations.add(strippingGas); + operations.add(stripper); + operations.add(recycleGasFromStripper); + operations.add(bufferTank); + operations.add(hotLeanTEGPump); + operations.add(coolerhOTteg3); + operations.add(pumpHPPresSet); + operations.add(hotLeanTEGPump2); + operations.add(leanTEGtoabs); + operations.add(makeupCalculator); + operations.add(makeupTEG); + operations.add(makeupMixer); + operations.add(resycleLeanTEG); + return operations; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + TEGdehydrationProcessDistillationGFA tempClass = new TEGdehydrationProcessDistillationGFA(); + neqsim.processSimulation.processSystem.ProcessSystem operations = tempClass.getProcess(); + operations.run(); + // operations.run(); + // operations = + // neqsim.processSimulation.processSystem.ProcessSystem.open("c:/temp/TEGprocessGFA.neqsim"); + + double richTEGtemperature = + ((Heater) operations.getUnit("rich TEG preheater")).getOutletStream().getTemperature("C"); + System.out.println("temp rich TEG " + richTEGtemperature); + System.out.println("condenser duty (KW) " + + ((Condenser) ((DistillationColumn) operations.getUnit("TEG regeneration column")) + .getCondenser()).getDuty() / 1.0e3); + System.out.println("reboiler duty (KW) " + + ((Reboiler) ((DistillationColumn) operations.getUnit("TEG regeneration column")) + .getReboiler()).getDuty() / 1.0e3); + + System.out.println("temp out rich TEG " + richTEGtemperature); + + double rich2TEGtemperature = ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 1")) + .getOutStream(0).getTemperature("C"); + System.out.println("temp rich2 TEG " + rich2TEGtemperature); + + double rich22TEGtemperature = ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")) + .getOutStream(0).getTemperature("C"); + System.out.println("temp rich2 to reboil TEG " + rich22TEGtemperature); + + double lean22TEGtemperature = ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")) + .getOutStream(1).getTemperature("C"); + System.out.println("temp lean TEG to HX " + lean22TEGtemperature); + + // ((Stream)operations.getUnit("dry feed gas")).setFlowRate(10.23, "MSm3/day"); + // ((Stream)operations.getUnit("dry feed gas")).setTemperature(40.0, "C"); + // System.out.println("restart "); + // operations.run(); + operations.save("c:/temp/TEGprocessGFA.neqsim"); + double eff = + ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")).getThermalEffectiveness(); + System.out.println("HX2 thermal efficiency " + eff); + // operations = ProcessSystem.open("c:/temp/TEGprocess.neqsim"); + // ((DistillationColumn)operations.getUnit("TEG regeneration + // column")).setTopPressure(1.2); + // operations.run(); + // ((DistillationColumn)operations.getUnit("TEG regeneration + // column")).setNumberOfTrays(2); + /* + * System.out.println("water in wet gas " + ((Stream) + * operations.getUnit("water saturated feed gas")).getFluid() + * .getPhase(0).getComponent("water").getz() * 1.0e6 * 0.01802 + * *ThermodynamicConstantsInterface.atm / (ThermodynamicConstantsInterface.R * 288.15)); + * System.out.println("water in dry gas " + ((Stream) + * operations.getUnit("dry gas from absorber")).getFluid() + * .getPhase(0).getComponent("water").getz() * 1.0e6); System.out.println("reboiler duty (KW) " + * + ((Reboiler) ((DistillationColumn) + * operations.getUnit("TEG regeneration column")).getReboiler()) .getDuty() / 1.0e3); + * System.out.println("wt lean TEG " + ((WaterStripperColumn) + * operations.getUnit("TEG stripper")) + * .getSolventOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG") * 100.0); */ - public double feedGasFlowRate = 11.23; - - /** - * The temperature of the gas from the scrubber controlling the dew point (Celisuis) - */ - public double feedGasTemperature = 30.4; - - /** - * The pressure of the gas from the scrubber controlling the dew point (bara) - */ - public double feedGasPressure = 52.21; - - /** - * The temperature of the gas entering the TEG absorption column (Celisuis) - */ - public double absorberFeedGasTemperature = 30.4; - - /** - * The pressure of the gas entering the TEG absorption column (bara) - */ - public double absorberFeedGasPressure = 52.21; - - /** - * The flow rate of lean TEG entering the absorption column (kg/hr) - */ - public double leanTEGFlowRate = 6786.0; - - /** - * The temperature of the lean TEG entering the absorption column (Celcius) - */ - public double leanTEGTemperature = 43.6; - - /** - * The pressure in the flash drum (bara) - */ - public double flashDrumPressure = 4.9; - - /** - * Number of equilibrium stages in TEG absorpber - */ - public int numberOfEquilibriumStagesTEGabsorber = 5; - - /** - * Stage efficiency in TEG absorpber - */ - public double stageEfficiencyStripper = 0.5; - - /** - * Number of equilibrium stages in TEG absorpber - */ - public int numberOfEquilibriumStagesStripper = 4; - - /** - * Stage efficiency in TEG absorpber - */ - public double stageEfficiencyTEGabsorber = 0.55; - - /** - * UA value of rich TEG heat exchanger 1 - */ - public double UAvalueRichTEGHeatExchanger_1 = 2900.0; - - /** - * UA value of rich TEG heat exchanger 2 - */ - public double UAvalueRichTEGHeatExchanger_2 = 8200.0; - - /** - * Pressure in reboiler (bara) - */ - public double reboilerPressure = 1.23; - - /** - * Temperature in condenser(Celcius) - */ - public double condenserTemperature = 93.6; - - /** - * Pressure in condenser (bara) - */ - public double condenserPressure = 1.2; - - /** - * Temperature in reboiler (Celcius) - */ - public double reboilerTemperature = 206.6; - - /** - * Stripping gas flow rate (Sm3/hr) - */ - public double strippingGasRate = 91.2; - - /** - * Stripping gas feed temperature (Celcius) - */ - public double strippingGasFeedTemperature = 80.0; - - /** - * TEG buffer tank temperature (Celcius) - */ - public double bufferTankTemperatureTEG = 190.4; - - /** - * temperature of after regeneration gas cooler (Celcius) - */ - public double regenerationGasCoolerTemperature = 35.0; - - /** - * isentropic efficiency of hot lean TEG pump (0.0-1.0) - */ - public double hotTEGpumpIsentropicEfficiency = 0.75; - - /** - * pressure after hot lean TEG pump (bara) - */ - public double hotTEGpumpPressure = 20.0; - - /** - * isentropic efficiency of cold lean TEG pump (0.0-1.0) - */ - public double coldTEGpumpIsentropicEfficiency = 0.75; - - /** - *

- * getProcess. - *

+ double eff2 = + ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")).getThermalEffectiveness(); + ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")).run(); + ConditionMonitor monitor = operations.getConditionMonitor(); + // double prevTem= ((HeatExchanger)monitor.getProcess().getUnit("rich TEG heat exchanger + // 2")).getInStream(0).getTemperature("C"); + ((HeatExchanger) monitor.getProcess().getUnit("rich TEG heat exchanger 2")).getInStream(0) + .setTemperature(84.93, "C"); + monitor.conditionAnalysis("rich TEG heat exchanger 2"); + double eff3 = ((HeatExchanger) monitor.getProcess().getUnit("rich TEG heat exchanger 2")) + .getThermalEffectiveness(); + System.out.println("ef3 " + eff3); + + // System.out.println("temp inn "+ (prevTem)); + /* + * double waterInWetGasppm = + * waterSaturatedFeedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; double + * waterInWetGaskgMSm3 = waterInWetGasppm * 0.01802 *ThermodynamicConstantsInterface.atm / + * (ThermodynamicConstantsInterface.R * 288.15); double TEGfeedwt = + * TEGFeed.getFluid().getPhase("aqueous").getWtFrac("TEG"); double TEGfeedflw = + * TEGFeed.getFlowRate("kg/hr"); double waterInDehydratedGasppm = + * dehydratedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; double + * waterInDryGaskgMSm3 = waterInDehydratedGasppm * 0.01802 *ThermodynamicConstantsInterface.atm + * / (ThermodynamicConstantsInterface.R * 288.15); double richTEG2 = + * richTEG.getFluid().getPhase("aqueous").getWtFrac("TEG"); double temp = + * ((Stream)operations.getUnit("feed to TEG absorber")).getFluid().getPhase(0).getComponent( + * "water").getz()*1.0e6*0.01802*101325.0/(ThermodynamicConstantsInterface.R*288.15); + * System.out.println("reboiler duty (KW) " + ((Reboiler) column.getReboiler()).getDuty() / + * 1.0e3); System.out.println("flow rate from reboiler " + ((Reboiler) + * column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); + * System.out.println("flow rate from stripping column " + + * stripper.getLiquidOutStream().getFlowRate("kg/hr")); + * System.out.println("flow rate from pump2 " + + * hotLeanTEGPump2.getOutStream().getFluid().getFlowRate("kg/hr")); + * System.out.println("makeup TEG " + makeupTEG.getFluid().getFlowRate("kg/hr")); * - * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object - */ - public neqsim.processSimulation.processSystem.ProcessSystem getProcess() { - // Create the input fluid to the TEG process and saturate it with water at - // scrubber conditions - neqsim.thermo.system.SystemInterface feedGas = - new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); - feedGas.addComponent("nitrogen", 1.03); - feedGas.addComponent("CO2", 1.42); - feedGas.addComponent("methane", 83.88); - feedGas.addComponent("ethane", 8.07); - feedGas.addComponent("propane", 3.54); - feedGas.addComponent("i-butane", 0.54); - feedGas.addComponent("n-butane", 0.84); - feedGas.addComponent("i-pentane", 0.21); - feedGas.addComponent("n-pentane", 0.19); - feedGas.addComponent("n-hexane", 0.28); - feedGas.addComponent("water", 0.0); - feedGas.addComponent("TEG", 0); - feedGas.createDatabase(true); - feedGas.setMixingRule(10); - feedGas.setMultiPhaseCheck(false); - - Stream dryFeedGas = new Stream("dry feed gas", feedGas); - dryFeedGas.setFlowRate(feedGasFlowRate, "MSm3/day"); - dryFeedGas.setTemperature(feedGasTemperature, "C"); - dryFeedGas.setPressure(feedGasPressure, "bara"); - - StreamSaturatorUtil saturatedFeedGas = - new StreamSaturatorUtil("water saturator", dryFeedGas); - - Stream waterSaturatedFeedGas = - new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); - - HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser = - new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGas); - hydrateTAnalyser.setName("hydrate temperature analyser"); - - neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); - feedTEG.setMolarComposition( - new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.97}); - - Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", waterSaturatedFeedGas); - feedTPsetterToAbsorber.setOutPressure(absorberFeedGasPressure, "bara"); - feedTPsetterToAbsorber.setOutTemperature(absorberFeedGasTemperature, "C"); - - Stream feedToAbsorber = - new Stream("feed to TEG absorber", feedTPsetterToAbsorber.getOutletStream()); - - Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); - TEGFeed.setFlowRate(leanTEGFlowRate, "kg/hr"); - TEGFeed.setTemperature(leanTEGTemperature, "C"); - TEGFeed.setPressure(absorberFeedGasPressure, "bara"); - - SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); - absorber.addGasInStream(feedToAbsorber); - absorber.addSolventInStream(TEGFeed); - absorber.setNumberOfStages(numberOfEquilibriumStagesTEGabsorber); - absorber.setStageEfficiency(stageEfficiencyTEGabsorber); - - Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); - - Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); - - WaterDewPointAnalyser waterDewPointAnalyser2 = new WaterDewPointAnalyser(dehydratedGas); - waterDewPointAnalyser2.setName("water dew point analyser2"); - - HydrateEquilibriumTemperatureAnalyser waterDewPointAnalyser = - new HydrateEquilibriumTemperatureAnalyser(dehydratedGas); - waterDewPointAnalyser.setName("water dew point analyser"); - - ThrottlingValve glycol_flash_valve = new ThrottlingValve("Flash valve", richTEG); - glycol_flash_valve.setName("Rich TEG HP flash valve"); - glycol_flash_valve.setOutletPressure(flashDrumPressure); - - Heater richGLycolHeaterCondenser = - new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); - - HeatExchanger heatEx2 = new HeatExchanger("rich TEG heat exchanger 1", - richGLycolHeaterCondenser.getOutletStream()); - heatEx2.setGuessOutTemperature(273.15 + 62.0); - heatEx2.setUAvalue(UAvalueRichTEGHeatExchanger_1); - - Separator flashSep = new Separator("degasing separator", heatEx2.getOutStream(0)); - - Stream flashGas = new Stream("gas from degasing separator", flashSep.getGasOutStream()); - - Stream flashLiquid = - new Stream("liquid from degasing separator", flashSep.getLiquidOutStream()); - - Filter filter = new Filter("filters", flashLiquid); - - HeatExchanger heatEx = - new HeatExchanger("rich TEG heat exchanger 2", filter.getOutletStream()); - heatEx.setGuessOutTemperature(273.15 + 130.0); - heatEx.setUAvalue(UAvalueRichTEGHeatExchanger_2); - - ThrottlingValve glycol_flash_valve2 = - new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); - glycol_flash_valve2.setName("Rich TEG LP flash valve"); - glycol_flash_valve2.setOutletPressure(reboilerPressure); - - neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); - - Stream strippingGas = new Stream("stripGas", stripGas); - strippingGas.setFlowRate(strippingGasRate, "Sm3/hr"); - strippingGas.setTemperature(strippingGasFeedTemperature, "C"); - strippingGas.setPressure(reboilerPressure, "bara"); - - Stream gasToReboiler = strippingGas.clone(); - gasToReboiler.setName("gas to reboiler"); - - DistillationColumn column = new DistillationColumn(3, true, true); - column.setName("TEG regeneration column"); - column.addFeedStream(glycol_flash_valve2.getOutletStream(), 1); - column.getReboiler().setOutTemperature(273.15 + reboilerTemperature); - column.getCondenser().setOutTemperature(273.15 + condenserTemperature); - column.getReboiler().addStream(gasToReboiler); - column.setTopPressure(condenserPressure); - column.setBottomPressure(reboilerPressure); - - Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); - coolerRegenGas.setOutTemperature(273.15 + regenerationGasCoolerTemperature); - - Separator sepregenGas = - new Separator("regen gas separator", coolerRegenGas.getOutletStream()); - - Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); - - Stream liquidToTrreatment = - new Stream("water to treatment", sepregenGas.getLiquidOutStream()); - - WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); - stripper.addSolventInStream(column.getLiquidOutStream()); - stripper.addGasInStream(strippingGas); - stripper.setNumberOfStages(numberOfEquilibriumStagesStripper); - stripper.setStageEfficiency(stageEfficiencyStripper); - - Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); - recycleGasFromStripper.addStream(stripper.getGasOutStream()); - recycleGasFromStripper.setOutletStream(gasToReboiler); - - Heater bufferTank = new Heater("TEG buffer tank", stripper.getSolventOutStream()); - bufferTank.setOutTemperature(273.15 + bufferTankTemperatureTEG); - - Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream());// stripper.getSolventOutStream()); - hotLeanTEGPump.setOutletPressure(hotTEGpumpPressure); - hotLeanTEGPump.setIsentropicEfficiency(hotTEGpumpIsentropicEfficiency); - - heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); - - heatEx2.setFeedStream(1, heatEx.getOutStream(1)); - - Heater coolerhOTteg3 = new Heater("lean TEG cooler", heatEx2.getOutStream(1)); - coolerhOTteg3.setOutTemperature(273.15 + leanTEGTemperature); - - Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); - hotLeanTEGPump2.setOutletPressure(absorberFeedGasPressure); - hotLeanTEGPump2.setIsentropicEfficiency(coldTEGpumpIsentropicEfficiency); - - SetPoint pumpHPPresSet = - new SetPoint("HP pump set", hotLeanTEGPump2, "pressure", feedToAbsorber); - - Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); - - neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); - pureTEG.setMolarComposition( - new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); - - Stream makeupTEG = new Stream("makeup TEG", pureTEG); - makeupTEG.setFlowRate(1e-6, "kg/hr"); - makeupTEG.setTemperature(leanTEGTemperature, "C"); - makeupTEG.setPressure(absorberFeedGasPressure, "bara"); - - Calculator makeupCalculator = new Calculator("TEG makeup calculator"); - makeupCalculator.addInputVariable(dehydratedGas); - makeupCalculator.addInputVariable(flashGas); - makeupCalculator.addInputVariable(gasToFlare); - makeupCalculator.addInputVariable(liquidToTrreatment); - makeupCalculator.setOutputVariable(makeupTEG); - - StaticMixer makeupMixer = new StaticMixer("makeup mixer"); - makeupMixer.addStream(leanTEGtoabs); - makeupMixer.addStream(makeupTEG); - - Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); - resycleLeanTEG.addStream(makeupMixer.getOutletStream()); - resycleLeanTEG.setOutletStream(TEGFeed); - resycleLeanTEG.setPriority(200); - resycleLeanTEG.setDownstreamProperty("flow rate"); - - richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); - // richGLycolHeater.isSetEnergyStream(); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(dryFeedGas); - operations.add(saturatedFeedGas); - operations.add(waterSaturatedFeedGas); - operations.add(hydrateTAnalyser); - operations.add(feedTPsetterToAbsorber); - operations.add(feedToAbsorber); - operations.add(TEGFeed); - operations.add(absorber); - operations.add(dehydratedGas); - operations.add(waterDewPointAnalyser); - operations.add(waterDewPointAnalyser2); - operations.add(richTEG); - operations.add(glycol_flash_valve); - operations.add(richGLycolHeaterCondenser); - operations.add(heatEx2); - operations.add(flashSep); - operations.add(flashGas); - operations.add(flashLiquid); - operations.add(filter); - operations.add(heatEx); - operations.add(glycol_flash_valve2); - operations.add(gasToReboiler); - operations.add(column); - operations.add(coolerRegenGas); - operations.add(sepregenGas); - operations.add(gasToFlare); - operations.add(liquidToTrreatment); - operations.add(strippingGas); - operations.add(stripper); - operations.add(recycleGasFromStripper); - operations.add(bufferTank); - operations.add(hotLeanTEGPump); - operations.add(coolerhOTteg3); - operations.add(pumpHPPresSet); - operations.add(hotLeanTEGPump2); - operations.add(leanTEGtoabs); - operations.add(makeupCalculator); - operations.add(makeupTEG); - operations.add(makeupMixer); - operations.add(resycleLeanTEG); - return operations; - } - - /** - *

- * main. - *

+ * TEGFeed.getFluid().display(); absorber.run(); + * + * System.out.println("pump power " + hotLeanTEGPump.getDuty()); + * System.out.println("pump2 power " + hotLeanTEGPump2.getDuty()); + * System.out.println("wt lean TEG after reboiler " + + * column.getLiquidOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG")); + * System.out.println("temperature from pump " + + * (hotLeanTEGPump2.getOutStream().getTemperature() - 273.15)); + * + * System.out.println("flow rate from reboiler " + ((Reboiler) + * column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); + * System.out.println("flow rate from pump2 " + + * hotLeanTEGPump2.getOutStream().getFluid().getFlowRate("kg/hr")); + * System.out.println("flow rate to flare " + gasToFlare.getFluid().getFlowRate("kg/hr")); + * + * System.out.println("condenser duty " + ((Condenser) ((DistillationColumn) + * operations.getUnit("TEG regeneration column")).getCondenser()) .getDuty() / 1.0e3); + * System.out.println( "richGLycolHeaterCondenser duty " + + * richGLycolHeaterCondenser.getEnergyStream().getDuty() / 1.0e3); + * System.out.println("richGLycolHeaterCondenser temperature out " + + * richGLycolHeaterCondenser.getOutStream().getTemperature("C")); + * richGLycolHeaterCondenser.run(); + * + * hotLeanTEGPump.getOutStream().displayResult(); flashLiquid.displayResult(); + * + * System.out.println("Temperature rich TEG out of reflux condenser " + + * richGLycolHeaterCondenser.getOutStream().getTemperature("C")); heatEx.displayResult(); + * System.out.println("glycol out temperature " + + * glycol_flash_valve2.getOutStream().getFluid().getTemperature("C")); + * System.out.println("glycol out temperature2 " +heatEx2.getOutStream(0).getTemperature("C")); + * System.out.println("glycol out temperature2 " +heatEx2.getOutStream(1).getTemperature("C")); + * + * System.out.println("out water rate LP valve" + + * glycol_flash_valve2.getOutStream().getFluid().getPhase(0).getComponent("water"). + * getNumberOfmoles()); System.out.println("glycol out water rate reboil " + ((Reboiler) + * column.getReboiler()).getLiquidOutStream().getFluid().getComponent("water"). + * getNumberOfmoles()); System.out.println("glycol out water rate condens " + ((Condenser) + * column.getCondenser()).getGasOutStream().getFluid().getComponent("water"). + * getNumberOfmoles()); System.out.println("recycle out water rate " + * +recycleGasFromStripper.getOutletStream().getFluid().getComponent("water"). + * getNumberOfmoles()); + * + * System.out.println("water dew point of dry gas " + + * waterDewPointAnalyser.getMeasuredValue("C")); + * + * //double dewT = + * ((WaterDewPointAnalyser)operations.getMeasurementDevice("water dew point analyser")). + * getMeasuredValue("C"); //waterDewPointAnalyser.setOnlineValue(measured, unit) + * //waterDewPointAnalyser.setOnlineSignal(isOnlineSignal, plantName, transmitterame); + * + * //Heat exchanger test * - * @param args an array of {@link java.lang.String} objects + * //Sabe and Open copy of model */ - @SuppressWarnings("unused") - public static void main(String[] args) { - TEGdehydrationProcessDistillationGFA tempClass = new TEGdehydrationProcessDistillationGFA(); - neqsim.processSimulation.processSystem.ProcessSystem operations = tempClass.getProcess(); - operations.run(); - // operations.run(); - // operations = - // neqsim.processSimulation.processSystem.ProcessSystem.open("c:/temp/TEGprocessGFA.neqsim"); - - double richTEGtemperature = ((Heater) operations.getUnit("rich TEG preheater")) - .getOutletStream().getTemperature("C"); - System.out.println("temp rich TEG " + richTEGtemperature); - System.out.println("condenser duty (KW) " - + ((Condenser) ((DistillationColumn) operations.getUnit("TEG regeneration column")) - .getCondenser()).getDuty() / 1.0e3); - System.out.println("reboiler duty (KW) " - + ((Reboiler) ((DistillationColumn) operations.getUnit("TEG regeneration column")) - .getReboiler()).getDuty() / 1.0e3); - - System.out.println("temp out rich TEG " + richTEGtemperature); - - double rich2TEGtemperature = - ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 1")).getOutStream(0) - .getTemperature("C"); - System.out.println("temp rich2 TEG " + rich2TEGtemperature); - - double rich22TEGtemperature = - ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")).getOutStream(0) - .getTemperature("C"); - System.out.println("temp rich2 to reboil TEG " + rich22TEGtemperature); - - double lean22TEGtemperature = - ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")).getOutStream(1) - .getTemperature("C"); - System.out.println("temp lean TEG to HX " + lean22TEGtemperature); - - // ((Stream)operations.getUnit("dry feed gas")).setFlowRate(10.23, "MSm3/day"); - // ((Stream)operations.getUnit("dry feed gas")).setTemperature(40.0, "C"); - // System.out.println("restart "); - // operations.run(); - operations.save("c:/temp/TEGprocessGFA.neqsim"); - double eff = ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")) - .getThermalEffectiveness(); - System.out.println("HX2 thermal efficiency " + eff); - /// operations = ProcessSystem.open("c:/temp/TEGprocess.neqsim"); - // ((DistillationColumn)operations.getUnit("TEG regeneration - /// column")).setTopPressure(1.2); - // operations.run(); - // ((DistillationColumn)operations.getUnit("TEG regeneration - /// column")).setNumberOfTrays(2); - /* - * System.out.println("water in wet gas " + ((Stream) - * operations.getUnit("water saturated feed gas")).getFluid() - * .getPhase(0).getComponent("water").getz() * 1.0e6 * 0.01802 * 101325.0 / (8.314 * - * 288.15)); System.out.println("water in dry gas " + ((Stream) - * operations.getUnit("dry gas from absorber")).getFluid() - * .getPhase(0).getComponent("water").getz() * 1.0e6); - * System.out.println("reboiler duty (KW) " + ((Reboiler) ((DistillationColumn) - * operations.getUnit("TEG regeneration column")).getReboiler()) .getDuty() / 1.0e3); - * System.out.println("wt lean TEG " + ((WaterStripperColumn) - * operations.getUnit("TEG stripper")) - * .getSolventOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG") * 100.0); - */ - double eff2 = ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")) - .getThermalEffectiveness(); - ((HeatExchanger) operations.getUnit("rich TEG heat exchanger 2")).run(); - ConditionMonitor monitor = operations.getConditionMonitor(); - // double prevTem= ((HeatExchanger)monitor.getProcess().getUnit("rich TEG heat exchanger - // 2")).getInStream(0).getTemperature("C"); - ((HeatExchanger) monitor.getProcess().getUnit("rich TEG heat exchanger 2")).getInStream(0) - .setTemperature(84.93, "C"); - monitor.conditionAnalysis("rich TEG heat exchanger 2"); - double eff3 = ((HeatExchanger) monitor.getProcess().getUnit("rich TEG heat exchanger 2")) - .getThermalEffectiveness(); - System.out.println("ef3 " + eff3); - - // System.out.println("temp inn "+ (prevTem)); - /* - * double waterInWetGasppm = - * waterSaturatedFeedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; double - * waterInWetGaskgMSm3 = waterInWetGasppm * 0.01802 * 101325.0 / (8.314 * 288.15); double - * TEGfeedwt = TEGFeed.getFluid().getPhase("aqueous").getWtFrac("TEG"); double TEGfeedflw = - * TEGFeed.getFlowRate("kg/hr"); double waterInDehydratedGasppm = - * dehydratedGas.getFluid().getPhase(0).getComponent("water").getz() * 1.0e6; double - * waterInDryGaskgMSm3 = waterInDehydratedGasppm * 0.01802 * 101325.0 / (8.314 * 288.15); - * double richTEG2 = richTEG.getFluid().getPhase("aqueous").getWtFrac("TEG"); double temp = - * ((Stream)operations.getUnit("feed to TEG absorber")).getFluid().getPhase(0).getComponent( - * "water").getz()*1.0e6*0.01802*101325.0/(8.314*288.15); - * System.out.println("reboiler duty (KW) " + ((Reboiler) column.getReboiler()).getDuty() / - * 1.0e3); System.out.println("flow rate from reboiler " + ((Reboiler) - * column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); - * System.out.println("flow rate from stripping column " + - * stripper.getLiquidOutStream().getFlowRate("kg/hr")); - * System.out.println("flow rate from pump2 " + - * hotLeanTEGPump2.getOutStream().getFluid().getFlowRate("kg/hr")); - * System.out.println("makeup TEG " + makeupTEG.getFluid().getFlowRate("kg/hr")); - * - * TEGFeed.getFluid().display(); absorber.run(); - * - * System.out.println("pump power " + hotLeanTEGPump.getDuty()); - * System.out.println("pump2 power " + hotLeanTEGPump2.getDuty()); - * System.out.println("wt lean TEG after reboiler " + - * column.getLiquidOutStream().getFluid().getPhase("aqueous").getWtFrac("TEG")); - * System.out.println("temperature from pump " + - * (hotLeanTEGPump2.getOutStream().getTemperature() - 273.15)); - * - * System.out.println("flow rate from reboiler " + ((Reboiler) - * column.getReboiler()).getLiquidOutStream().getFlowRate("kg/hr")); - * System.out.println("flow rate from pump2 " + - * hotLeanTEGPump2.getOutStream().getFluid().getFlowRate("kg/hr")); - * System.out.println("flow rate to flare " + gasToFlare.getFluid().getFlowRate("kg/hr")); - * - * System.out.println("condenser duty " + ((Condenser) ((DistillationColumn) - * operations.getUnit("TEG regeneration column")).getCondenser()) .getDuty() / 1.0e3); - * System.out.println( "richGLycolHeaterCondenser duty " + - * richGLycolHeaterCondenser.getEnergyStream().getDuty() / 1.0e3); - * System.out.println("richGLycolHeaterCondenser temperature out " + - * richGLycolHeaterCondenser.getOutStream().getTemperature("C")); - * richGLycolHeaterCondenser.run(); - * - * hotLeanTEGPump.getOutStream().displayResult(); flashLiquid.displayResult(); - * - * System.out.println("Temperature rich TEG out of reflux condenser " + - * richGLycolHeaterCondenser.getOutStream().getTemperature("C")); heatEx.displayResult(); - * System.out.println("glycol out temperature " + - * glycol_flash_valve2.getOutStream().getFluid().getTemperature("C")); - * System.out.println("glycol out temperature2 " - * +heatEx2.getOutStream(0).getTemperature("C")); - * System.out.println("glycol out temperature2 " - * +heatEx2.getOutStream(1).getTemperature("C")); - * - * - * System.out.println("out water rate LP valve" + - * glycol_flash_valve2.getOutStream().getFluid().getPhase(0).getComponent("water"). - * getNumberOfmoles()); System.out.println("glycol out water rate reboil " + ((Reboiler) - * column.getReboiler()).getLiquidOutStream().getFluid().getComponent("water"). - * getNumberOfmoles()); System.out.println("glycol out water rate condens " + ((Condenser) - * column.getCondenser()).getGasOutStream().getFluid().getComponent("water"). - * getNumberOfmoles()); System.out.println("recycle out water rate " - * +recycleGasFromStripper.getOutletStream().getFluid().getComponent("water"). - * getNumberOfmoles()); - * - * System.out.println("water dew point of dry gas " + - * waterDewPointAnalyser.getMeasuredValue("C")); - * - * //double dewT = - * ((WaterDewPointAnalyser)operations.getMeasurementDevice("water dew point analyser")). - * getMeasuredValue("C"); //waterDewPointAnalyser.setOnlineValue(measured, unit) - * //waterDewPointAnalyser.setOnlineSignal(isOnlineSignal, plantName, transmitterame); - * - * - * - * //Heat exchanger test - * - * //Sabe and Open copy of model - */ - // ProcessSystem locoperations = operations.copy(); - // ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger - // 2")).getInStream(0).setTemperature(298.15, "C"); - // ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger - // 2")).getInStream(1).setTemperature(363.15, "C"); - // ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger - // 2")).getOutStream(0).setTemperature(298.15, "C"); - // ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger - // 2")).getOutStream(1).setTemperature(333.15, "C"); - // ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger - // 2")).runConditionAnalysis((HeatExchanger)operations.getUnit("rich TEG heat exchanger - // 2")); - // double eff = ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger - // 2")).getThermalEffectiveness(); - // System.out.println("eff " + eff); - // store fouling factor in dataframe - } + // ProcessSystem locoperations = operations.copy(); + // ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger + // 2")).getInStream(0).setTemperature(298.15, "C"); + // ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger + // 2")).getInStream(1).setTemperature(363.15, "C"); + // ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger + // 2")).getOutStream(0).setTemperature(298.15, "C"); + // ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger + // 2")).getOutStream(1).setTemperature(333.15, "C"); + // ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger + // 2")).runConditionAnalysis((HeatExchanger)operations.getUnit("rich TEG heat exchanger + // 2")); + // double eff = ((HeatExchanger)locoperations.getUnit("rich TEG heat exchanger + // 2")).getThermalEffectiveness(); + // System.out.println("eff " + eff); + // store fouling factor in dataframe + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationJS.java b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationJS.java index 6e69ca0ab6..a65e432416 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationJS.java +++ b/src/test/java/neqsim/processSimulation/util/example/TEGdehydrationProcessDistillationJS.java @@ -27,398 +27,395 @@ * @since 2.2.3 */ public class TEGdehydrationProcessDistillationJS { - /** - * The flow rate of gas from the scrubber controlling the dew point (MSm3/hr) - */ - public double feedGasFlowRate = 5.0; - - /** - * The temperature of the gas from the scrubber controlling the dew point (Celisuis) - */ - public double feedGasTemperature = 30.4; - - /** - * The pressure of the gas from the scrubber controlling the dew point (bara) - */ - public double feedGasPressure = 52.21; - - /** - * The temperature of the gas entering the TEG absorption column (Celisuis) - */ - public double absorberFeedGasTemperature = 35.0; - - /** - * The pressure of the gas entering the TEG absorption column (bara) - */ - public double absorberFeedGasPressure = 52.21; - - /** - * The flow rate of lean TEG entering the absorption column (kg/hr) - */ - public double leanTEGFlowRate = 6862.5; - - /** - * The temperature of the lean TEG entering the absorption column (Celcius) - */ - public double leanTEGTemperature = 43.0; - - /** - * The pressure in the flash drum (bara) - */ - public double flashDrumPressure = 5.5; - - /** - * Number of equilibrium stages in TEG absorpber - */ - public int numberOfEquilibriumStagesTEGabsorber = 5; - - /** - * Stage efficiency in TEG absorpber - */ - public double stageEfficiencyStripper = 0.5; - - /** - * Number of equilibrium stages in TEG absorpber - */ - public int numberOfEquilibriumStagesStripper = 4; - - /** - * Stage efficiency in TEG absorpber - */ - public double stageEfficiencyTEGabsorber = 0.55; - - /** - * UA value of rich TEG heat exchanger 1 - */ - public double UAvalueRichTEGHeatExchanger_1 = 220.0; - - /** - * UA value of rich TEG heat exchanger 2 - */ - public double UAvalueRichTEGHeatExchanger_2 = 600.0; - - /** - * Pressure in reboiler (bara) - */ - public double reboilerPressure = 1.2; - - /** - * Temperature in condenser(Celcius) - */ - public double condenserTemperature = 100.0; - - /** - * Pressure in condenser (bara) - */ - public double condenserPressure = 1.0; - - /** - * Temperature in reboiler (Celcius) - */ - public double reboilerTemperature = 205.0; - - /** - * Stripping gas flow rate (Sm3/hr) - */ - public double strippingGasRate = 55.0; - - /** - * Stripping gas feed temperature (Celcius) - */ - public double strippingGasFeedTemperature = 80.0; - - /** - * TEG buffer tank temperature (Celcius) - */ - public double bufferTankTemperatureTEG = 185.0; - - /** - * temperature of after regeneration gas cooler (Celcius) - */ - public double regenerationGasCoolerTemperature = 35.0; - - /** - * isentropic efficiency of hot lean TEG pump (0.0-1.0) - */ - public double hotTEGpumpIsentropicEfficiency = 0.75; - - /** - * pressure after hot lean TEG pump (bara) - */ - public double hotTEGpumpPressure = 5.0; - - /** - * isentropic efficiency of cold lean TEG pump (0.0-1.0) - */ - public double coldTEGpumpIsentropicEfficiency = 0.75; - - /** - *

- * Constructor for TEGdehydrationProcessDistillationJS. - *

- */ - public TEGdehydrationProcessDistillationJS() {} - - /** - *

- * getProcess. - *

- * - * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object - */ - public neqsim.processSimulation.processSystem.ProcessSystem getProcess() { - // Create the input fluid to the TEG process and saturate it with water at - // scrubber conditions - neqsim.thermo.system.SystemInterface feedGas = - new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); - feedGas.addComponent("nitrogen", 1.42); - feedGas.addComponent("CO2", 0.5339); - feedGas.addComponent("methane", 95.2412); - feedGas.addComponent("ethane", 2.2029); - feedGas.addComponent("propane", 0.3231); - feedGas.addComponent("i-butane", 0.1341); - feedGas.addComponent("n-butane", 0.0827); - feedGas.addComponent("i-pentane", 0.0679); - feedGas.addComponent("n-pentane", 0.035); - feedGas.addComponent("n-hexane", 0.0176); - feedGas.addComponent("benzene", 0.0017); - feedGas.addComponent("toluene", 0.0043); - feedGas.addComponent("m-Xylene", 0.0031); - feedGas.addComponent("water", 0.0); - feedGas.addComponent("TEG", 0); - feedGas.setMixingRule(10); - feedGas.setMultiPhaseCheck(true); - - Stream dryFeedGas = new Stream("dry feed gas", feedGas); - dryFeedGas.setFlowRate(feedGasFlowRate, "MSm3/day"); - dryFeedGas.setTemperature(feedGasTemperature, "C"); - dryFeedGas.setPressure(feedGasPressure, "bara"); - - StreamSaturatorUtil saturatedFeedGas = - new StreamSaturatorUtil("water saturator", dryFeedGas); - - Stream waterSaturatedFeedGas = - new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); - - HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser = - new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGas); - hydrateTAnalyser.setName("hydrate temperature analyser"); - - neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); - feedTEG.setMolarComposition(new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.03, 0.97}); - - Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", waterSaturatedFeedGas); - feedTPsetterToAbsorber.setOutPressure(absorberFeedGasPressure, "bara"); - feedTPsetterToAbsorber.setOutTemperature(absorberFeedGasTemperature, "C"); - - Stream feedToAbsorber = - new Stream("feed to TEG absorber", feedTPsetterToAbsorber.getOutletStream()); - - Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); - TEGFeed.setFlowRate(leanTEGFlowRate, "kg/hr"); - TEGFeed.setTemperature(leanTEGTemperature, "C"); - TEGFeed.setPressure(absorberFeedGasPressure, "bara"); - - SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); - absorber.addGasInStream(feedToAbsorber); - absorber.addSolventInStream(TEGFeed); - absorber.setNumberOfStages(numberOfEquilibriumStagesTEGabsorber); - absorber.setStageEfficiency(stageEfficiencyTEGabsorber); - - Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); - - Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); - - HydrateEquilibriumTemperatureAnalyser waterDewPointAnalyser = - new HydrateEquilibriumTemperatureAnalyser(dehydratedGas); - waterDewPointAnalyser.setName("water dew point analyser"); - ThrottlingValve glycol_flash_valve = new ThrottlingValve("Flash valve", richTEG); - glycol_flash_valve.setName("Rich TEG HP flash valve"); - glycol_flash_valve.setOutletPressure(flashDrumPressure); - - Heater richGLycolHeaterCondenser = - new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); - - HeatExchanger heatEx2 = new HeatExchanger("rich TEG heat exchanger 1", - richGLycolHeaterCondenser.getOutletStream()); - heatEx2.setGuessOutTemperature(273.15 + 62.0); - heatEx2.setUAvalue(UAvalueRichTEGHeatExchanger_1); - - Separator flashSep = new Separator("degasing separator", heatEx2.getOutStream(0)); - - Stream flashGas = new Stream("gas from degasing separator", flashSep.getGasOutStream()); - - Stream flashLiquid = - new Stream("liquid from degasing separator", flashSep.getLiquidOutStream()); - - Filter fineFilter = new Filter("TEG fine filter", flashLiquid); - fineFilter.setDeltaP(0.05, "bara"); - - Filter carbonFilter = new Filter("activated carbon filter", fineFilter.getOutletStream()); - carbonFilter.setDeltaP(0.01, "bara"); - - HeatExchanger heatEx = - new HeatExchanger("rich TEG heat exchanger 2", carbonFilter.getOutletStream()); - heatEx.setGuessOutTemperature(273.15 + 130.0); - heatEx.setUAvalue(UAvalueRichTEGHeatExchanger_2); - - ThrottlingValve glycol_flash_valve2 = - new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); - glycol_flash_valve2.setName("Rich TEG LP flash valve"); - glycol_flash_valve2.setOutletPressure(reboilerPressure); - - neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); - - Stream strippingGas = new Stream("stripGas", stripGas); - strippingGas.setFlowRate(strippingGasRate, "Sm3/hr"); - strippingGas.setTemperature(strippingGasFeedTemperature, "C"); - strippingGas.setPressure(reboilerPressure, "bara"); - - Stream gasToReboiler = strippingGas.clone(); - gasToReboiler.setName("gas to reboiler"); - - DistillationColumn column = new DistillationColumn(1, true, true); - column.setName("TEG regeneration column"); - column.addFeedStream(glycol_flash_valve2.getOutletStream(), 0); - column.getReboiler().setOutTemperature(273.15 + reboilerTemperature); - column.getCondenser().setOutTemperature(273.15 + condenserTemperature); - column.getReboiler().addStream(gasToReboiler); - column.setTopPressure(condenserPressure); - column.setBottomPressure(reboilerPressure); - - Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); - coolerRegenGas.setOutTemperature(273.15 + regenerationGasCoolerTemperature); - - Separator sepregenGas = - new Separator("regen gas separator", coolerRegenGas.getOutletStream()); - - Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); - - Stream liquidToTrreatment = - new Stream("water to treatment", sepregenGas.getLiquidOutStream()); - - WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); - stripper.addSolventInStream(column.getLiquidOutStream()); - stripper.addGasInStream(strippingGas); - stripper.setNumberOfStages(numberOfEquilibriumStagesStripper); - stripper.setStageEfficiency(stageEfficiencyStripper); - - Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); - recycleGasFromStripper.addStream(stripper.getGasOutStream()); - recycleGasFromStripper.setOutletStream(gasToReboiler); - - Heater bufferTank = new Heater("TEG buffer tank", stripper.getSolventOutStream()); - bufferTank.setOutTemperature(273.15 + bufferTankTemperatureTEG); - - Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream()); - hotLeanTEGPump.setOutletPressure(hotTEGpumpPressure); - hotLeanTEGPump.setIsentropicEfficiency(hotTEGpumpIsentropicEfficiency); - - heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); - - heatEx2.setFeedStream(1, heatEx.getOutStream(1)); - - Heater coolerhOTteg3 = new Heater("lean TEG cooler", heatEx2.getOutStream(1)); - coolerhOTteg3.setOutTemperature(273.15 + leanTEGTemperature); - - Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); - hotLeanTEGPump2.setOutletPressure(absorberFeedGasPressure); - hotLeanTEGPump2.setIsentropicEfficiency(coldTEGpumpIsentropicEfficiency); - - SetPoint pumpHPPresSet = - new SetPoint("HP pump set", hotLeanTEGPump2, "pressure", feedToAbsorber); - - Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); - - neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); - pureTEG.setMolarComposition(new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 1.0}); - - Stream makeupTEG = new Stream("makeup TEG", pureTEG); - makeupTEG.setFlowRate(1e-6, "kg/hr"); - makeupTEG.setTemperature(leanTEGTemperature, "C"); - makeupTEG.setPressure(absorberFeedGasPressure, "bara"); - - Calculator makeupCalculator = new Calculator("TEG makeup calculator"); - makeupCalculator.addInputVariable(dehydratedGas); - makeupCalculator.addInputVariable(flashGas); - makeupCalculator.addInputVariable(gasToFlare); - makeupCalculator.addInputVariable(liquidToTrreatment); - makeupCalculator.setOutputVariable(makeupTEG); - - StaticMixer makeupMixer = new StaticMixer("makeup mixer"); - makeupMixer.addStream(leanTEGtoabs); - makeupMixer.addStream(makeupTEG); - - Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); - resycleLeanTEG.addStream(makeupMixer.getOutletStream()); - resycleLeanTEG.setOutletStream(TEGFeed); - resycleLeanTEG.setPriority(200); - resycleLeanTEG.setDownstreamProperty("flow rate"); - - richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); - // richGLycolHeater.isSetEnergyStream(); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(dryFeedGas); - operations.add(saturatedFeedGas); - operations.add(waterSaturatedFeedGas); - operations.add(hydrateTAnalyser); - operations.add(feedTPsetterToAbsorber); - operations.add(feedToAbsorber); - operations.add(TEGFeed); - operations.add(absorber); - operations.add(dehydratedGas); - operations.add(waterDewPointAnalyser); - operations.add(richTEG); - operations.add(glycol_flash_valve); - operations.add(richGLycolHeaterCondenser); - operations.add(heatEx2); - operations.add(flashSep); - operations.add(flashGas); - - operations.add(flashLiquid); - operations.add(fineFilter); - operations.add(carbonFilter); - operations.add(heatEx); - operations.add(glycol_flash_valve2); - operations.add(gasToReboiler); - operations.add(column); - operations.add(coolerRegenGas); - operations.add(sepregenGas); - operations.add(gasToFlare); - operations.add(liquidToTrreatment); - operations.add(strippingGas); - operations.add(stripper); - operations.add(recycleGasFromStripper); - operations.add(bufferTank); - operations.add(hotLeanTEGPump); - operations.add(coolerhOTteg3); - operations.add(pumpHPPresSet); - operations.add(hotLeanTEGPump2); - operations.add(leanTEGtoabs); - operations.add(makeupCalculator); - operations.add(makeupTEG); - operations.add(makeupMixer); - operations.add(resycleLeanTEG); - - return operations; - } - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - TEGdehydrationProcessDistillationJS tempClass = new TEGdehydrationProcessDistillationJS(); - neqsim.processSimulation.processSystem.ProcessSystem operations = tempClass.getProcess(); - operations.run(); - - operations.save("c:/temp/TEGprocessJS.neqsim"); - } + /** + * The flow rate of gas from the scrubber controlling the dew point (MSm3/hr). + */ + public double feedGasFlowRate = 5.0; + + /** + * The temperature of the gas from the scrubber controlling the dew point (Celsuis). + */ + public double feedGasTemperature = 30.4; + + /** + * The pressure of the gas from the scrubber controlling the dew point (bara). + */ + public double feedGasPressure = 52.21; + + /** + * The temperature of the gas entering the TEG absorption column (Celsius). + */ + public double absorberFeedGasTemperature = 35.0; + + /** + * The pressure of the gas entering the TEG absorption column (bara). + */ + public double absorberFeedGasPressure = 52.21; + + /** + * The flow rate of lean TEG entering the absorption column (kg/hr). + */ + public double leanTEGFlowRate = 6862.5; + + /** + * The temperature of the lean TEG entering the absorption column (Celsius). + */ + public double leanTEGTemperature = 43.0; + + /** + * The pressure in the flash drum (bara). + */ + public double flashDrumPressure = 5.5; + + /** + * Number of equilibrium stages in TEG absorber. + */ + public int numberOfEquilibriumStagesTEGabsorber = 5; + + /** + * Stage efficiency in TEG absorber. + */ + public double stageEfficiencyStripper = 0.5; + + /** + * Number of equilibrium stages in TEG absorber. + */ + public int numberOfEquilibriumStagesStripper = 4; + + /** + * Stage efficiency in TEG absorber. + */ + public double stageEfficiencyTEGabsorber = 0.55; + + /** + * UA value of rich TEG heat exchanger 1. + */ + public double UAvalueRichTEGHeatExchanger_1 = 220.0; + + /** + * UA value of rich TEG heat exchanger 2. + */ + public double UAvalueRichTEGHeatExchanger_2 = 600.0; + + /** + * Pressure in reboiler (bara). + */ + public double reboilerPressure = 1.2; + + /** + * Temperature in condenser (Celsius). + */ + public double condenserTemperature = 100.0; + + /** + * Pressure in condenser (bara). + */ + public double condenserPressure = 1.0; + + /** + * Temperature in reboiler (Celsius). + */ + public double reboilerTemperature = 205.0; + + /** + * Stripping gas flow rate (Sm3/hr). + */ + public double strippingGasRate = 55.0; + + /** + * Stripping gas feed temperature (Celsius). + */ + public double strippingGasFeedTemperature = 80.0; + + /** + * TEG buffer tank temperature (Celsius). + */ + public double bufferTankTemperatureTEG = 185.0; + + /** + * temperature of after regeneration gas cooler (Celsius). + */ + public double regenerationGasCoolerTemperature = 35.0; + + /** + * isentropic efficiency of hot lean TEG pump (0.0-1.0). + */ + public double hotTEGpumpIsentropicEfficiency = 0.75; + + /** + * pressure after hot lean TEG pump (bara). + */ + public double hotTEGpumpPressure = 5.0; + + /** + * isentropic efficiency of cold lean TEG pump (0.0-1.0). + */ + public double coldTEGpumpIsentropicEfficiency = 0.75; + + /** + *

+ * Constructor for TEGdehydrationProcessDistillationJS. + *

+ */ + public TEGdehydrationProcessDistillationJS() {} + + /** + *

+ * getProcess. + *

+ * + * @return a {@link neqsim.processSimulation.processSystem.ProcessSystem} object + */ + public neqsim.processSimulation.processSystem.ProcessSystem getProcess() { + // Create the input fluid to the TEG process and saturate it with water at + // scrubber conditions + neqsim.thermo.system.SystemInterface feedGas = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + feedGas.addComponent("nitrogen", 1.42); + feedGas.addComponent("CO2", 0.5339); + feedGas.addComponent("methane", 95.2412); + feedGas.addComponent("ethane", 2.2029); + feedGas.addComponent("propane", 0.3231); + feedGas.addComponent("i-butane", 0.1341); + feedGas.addComponent("n-butane", 0.0827); + feedGas.addComponent("i-pentane", 0.0679); + feedGas.addComponent("n-pentane", 0.035); + feedGas.addComponent("n-hexane", 0.0176); + feedGas.addComponent("benzene", 0.0017); + feedGas.addComponent("toluene", 0.0043); + feedGas.addComponent("m-Xylene", 0.0031); + feedGas.addComponent("water", 0.0); + feedGas.addComponent("TEG", 0); + feedGas.setMixingRule(10); + feedGas.setMultiPhaseCheck(true); + + Stream dryFeedGas = new Stream("dry feed gas", feedGas); + dryFeedGas.setFlowRate(feedGasFlowRate, "MSm3/day"); + dryFeedGas.setTemperature(feedGasTemperature, "C"); + dryFeedGas.setPressure(feedGasPressure, "bara"); + + StreamSaturatorUtil saturatedFeedGas = new StreamSaturatorUtil("water saturator", dryFeedGas); + + Stream waterSaturatedFeedGas = + new Stream("water saturated feed gas", saturatedFeedGas.getOutletStream()); + + HydrateEquilibriumTemperatureAnalyser hydrateTAnalyser = + new HydrateEquilibriumTemperatureAnalyser(waterSaturatedFeedGas); + hydrateTAnalyser.setName("hydrate temperature analyser"); + + neqsim.thermo.system.SystemInterface feedTEG = feedGas.clone(); + feedTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.97}); + + Heater feedTPsetterToAbsorber = new Heater("TP of gas to absorber", waterSaturatedFeedGas); + feedTPsetterToAbsorber.setOutPressure(absorberFeedGasPressure, "bara"); + feedTPsetterToAbsorber.setOutTemperature(absorberFeedGasTemperature, "C"); + + Stream feedToAbsorber = + new Stream("feed to TEG absorber", feedTPsetterToAbsorber.getOutletStream()); + + Stream TEGFeed = new Stream("lean TEG to absorber", feedTEG); + TEGFeed.setFlowRate(leanTEGFlowRate, "kg/hr"); + TEGFeed.setTemperature(leanTEGTemperature, "C"); + TEGFeed.setPressure(absorberFeedGasPressure, "bara"); + + SimpleTEGAbsorber absorber = new SimpleTEGAbsorber("TEG absorber"); + absorber.addGasInStream(feedToAbsorber); + absorber.addSolventInStream(TEGFeed); + absorber.setNumberOfStages(numberOfEquilibriumStagesTEGabsorber); + absorber.setStageEfficiency(stageEfficiencyTEGabsorber); + + Stream dehydratedGas = new Stream("dry gas from absorber", absorber.getGasOutStream()); + + Stream richTEG = new Stream("rich TEG from absorber", absorber.getSolventOutStream()); + + HydrateEquilibriumTemperatureAnalyser waterDewPointAnalyser = + new HydrateEquilibriumTemperatureAnalyser(dehydratedGas); + waterDewPointAnalyser.setName("water dew point analyser"); + ThrottlingValve glycol_flash_valve = new ThrottlingValve("Flash valve", richTEG); + glycol_flash_valve.setName("Rich TEG HP flash valve"); + glycol_flash_valve.setOutletPressure(flashDrumPressure); + + Heater richGLycolHeaterCondenser = + new Heater("rich TEG preheater", glycol_flash_valve.getOutletStream()); + + HeatExchanger heatEx2 = + new HeatExchanger("rich TEG heat exchanger 1", richGLycolHeaterCondenser.getOutletStream()); + heatEx2.setGuessOutTemperature(273.15 + 62.0); + heatEx2.setUAvalue(UAvalueRichTEGHeatExchanger_1); + + Separator flashSep = new Separator("degassing separator", heatEx2.getOutStream(0)); + + Stream flashGas = new Stream("gas from degassing separator", flashSep.getGasOutStream()); + + Stream flashLiquid = + new Stream("liquid from degassing separator", flashSep.getLiquidOutStream()); + + Filter fineFilter = new Filter("TEG fine filter", flashLiquid); + fineFilter.setDeltaP(0.05, "bara"); + + Filter carbonFilter = new Filter("activated carbon filter", fineFilter.getOutletStream()); + carbonFilter.setDeltaP(0.01, "bara"); + + HeatExchanger heatEx = + new HeatExchanger("rich TEG heat exchanger 2", carbonFilter.getOutletStream()); + heatEx.setGuessOutTemperature(273.15 + 130.0); + heatEx.setUAvalue(UAvalueRichTEGHeatExchanger_2); + + ThrottlingValve glycol_flash_valve2 = + new ThrottlingValve("LP flash valve", heatEx.getOutStream(0)); + glycol_flash_valve2.setName("Rich TEG LP flash valve"); + glycol_flash_valve2.setOutletPressure(reboilerPressure); + + neqsim.thermo.system.SystemInterface stripGas = feedGas.clone(); + + Stream strippingGas = new Stream("stripGas", stripGas); + strippingGas.setFlowRate(strippingGasRate, "Sm3/hr"); + strippingGas.setTemperature(strippingGasFeedTemperature, "C"); + strippingGas.setPressure(reboilerPressure, "bara"); + + Stream gasToReboiler = strippingGas.clone(); + gasToReboiler.setName("gas to reboiler"); + + DistillationColumn column = new DistillationColumn(1, true, true); + column.setName("TEG regeneration column"); + column.addFeedStream(glycol_flash_valve2.getOutletStream(), 0); + column.getReboiler().setOutTemperature(273.15 + reboilerTemperature); + column.getCondenser().setOutTemperature(273.15 + condenserTemperature); + column.getReboiler().addStream(gasToReboiler); + column.setTopPressure(condenserPressure); + column.setBottomPressure(reboilerPressure); + + Heater coolerRegenGas = new Heater("regen gas cooler", column.getGasOutStream()); + coolerRegenGas.setOutTemperature(273.15 + regenerationGasCoolerTemperature); + + Separator sepregenGas = new Separator("regen gas separator", coolerRegenGas.getOutletStream()); + + Stream gasToFlare = new Stream("gas to flare", sepregenGas.getGasOutStream()); + + Stream liquidToTrreatment = new Stream("water to treatment", sepregenGas.getLiquidOutStream()); + + WaterStripperColumn stripper = new WaterStripperColumn("TEG stripper"); + stripper.addSolventInStream(column.getLiquidOutStream()); + stripper.addGasInStream(strippingGas); + stripper.setNumberOfStages(numberOfEquilibriumStagesStripper); + stripper.setStageEfficiency(stageEfficiencyStripper); + + Recycle recycleGasFromStripper = new Recycle("stripping gas recirc"); + recycleGasFromStripper.addStream(stripper.getGasOutStream()); + recycleGasFromStripper.setOutletStream(gasToReboiler); + + Heater bufferTank = new Heater("TEG buffer tank", stripper.getSolventOutStream()); + bufferTank.setOutTemperature(273.15 + bufferTankTemperatureTEG); + + Pump hotLeanTEGPump = new Pump("hot lean TEG pump", bufferTank.getOutletStream()); + hotLeanTEGPump.setOutletPressure(hotTEGpumpPressure); + hotLeanTEGPump.setIsentropicEfficiency(hotTEGpumpIsentropicEfficiency); + + heatEx.setFeedStream(1, hotLeanTEGPump.getOutletStream()); + + heatEx2.setFeedStream(1, heatEx.getOutStream(1)); + + Heater coolerhOTteg3 = new Heater("lean TEG cooler", heatEx2.getOutStream(1)); + coolerhOTteg3.setOutTemperature(273.15 + leanTEGTemperature); + + Pump hotLeanTEGPump2 = new Pump("lean TEG HP pump", coolerhOTteg3.getOutletStream()); + hotLeanTEGPump2.setOutletPressure(absorberFeedGasPressure); + hotLeanTEGPump2.setIsentropicEfficiency(coldTEGpumpIsentropicEfficiency); + + SetPoint pumpHPPresSet = + new SetPoint("HP pump set", hotLeanTEGPump2, "pressure", feedToAbsorber); + + Stream leanTEGtoabs = new Stream("lean TEG to absorber", hotLeanTEGPump2.getOutletStream()); + + neqsim.thermo.system.SystemInterface pureTEG = feedGas.clone(); + pureTEG.setMolarComposition( + new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}); + + Stream makeupTEG = new Stream("makeup TEG", pureTEG); + makeupTEG.setFlowRate(1e-6, "kg/hr"); + makeupTEG.setTemperature(leanTEGTemperature, "C"); + makeupTEG.setPressure(absorberFeedGasPressure, "bara"); + + Calculator makeupCalculator = new Calculator("TEG makeup calculator"); + makeupCalculator.addInputVariable(dehydratedGas); + makeupCalculator.addInputVariable(flashGas); + makeupCalculator.addInputVariable(gasToFlare); + makeupCalculator.addInputVariable(liquidToTrreatment); + makeupCalculator.setOutputVariable(makeupTEG); + + StaticMixer makeupMixer = new StaticMixer("makeup mixer"); + makeupMixer.addStream(leanTEGtoabs); + makeupMixer.addStream(makeupTEG); + + Recycle resycleLeanTEG = new Recycle("lean TEG resycle"); + resycleLeanTEG.addStream(makeupMixer.getOutletStream()); + resycleLeanTEG.setOutletStream(TEGFeed); + resycleLeanTEG.setPriority(200); + resycleLeanTEG.setDownstreamProperty("flow rate"); + + richGLycolHeaterCondenser.setEnergyStream(column.getCondenser().getEnergyStream()); + // richGLycolHeater.isSetEnergyStream(); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(dryFeedGas); + operations.add(saturatedFeedGas); + operations.add(waterSaturatedFeedGas); + operations.add(hydrateTAnalyser); + operations.add(feedTPsetterToAbsorber); + operations.add(feedToAbsorber); + operations.add(TEGFeed); + operations.add(absorber); + operations.add(dehydratedGas); + operations.add(waterDewPointAnalyser); + operations.add(richTEG); + operations.add(glycol_flash_valve); + operations.add(richGLycolHeaterCondenser); + operations.add(heatEx2); + operations.add(flashSep); + operations.add(flashGas); + + operations.add(flashLiquid); + operations.add(fineFilter); + operations.add(carbonFilter); + operations.add(heatEx); + operations.add(glycol_flash_valve2); + operations.add(gasToReboiler); + operations.add(column); + operations.add(coolerRegenGas); + operations.add(sepregenGas); + operations.add(gasToFlare); + operations.add(liquidToTrreatment); + operations.add(strippingGas); + operations.add(stripper); + operations.add(recycleGasFromStripper); + operations.add(bufferTank); + operations.add(hotLeanTEGPump); + operations.add(coolerhOTteg3); + operations.add(pumpHPPresSet); + operations.add(hotLeanTEGPump2); + operations.add(leanTEGtoabs); + operations.add(makeupCalculator); + operations.add(makeupTEG); + operations.add(makeupMixer); + operations.add(resycleLeanTEG); + + return operations; + } + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + TEGdehydrationProcessDistillationJS tempClass = new TEGdehydrationProcessDistillationJS(); + neqsim.processSimulation.processSystem.ProcessSystem operations = tempClass.getProcess(); + operations.run(); + + operations.save("c:/temp/TEGprocessJS.neqsim"); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/TestNeqsim.java b/src/test/java/neqsim/processSimulation/util/example/TestNeqsim.java index b389ca1234..03c70288b3 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TestNeqsim.java +++ b/src/test/java/neqsim/processSimulation/util/example/TestNeqsim.java @@ -6,156 +6,150 @@ import neqsim.thermo.system.SystemSrkEos; /** - *

TestNeqsim class.

+ *

+ * TestNeqsim class. + *

* * @author Administrator * @version $Id: $Id * @since 2.2.3 */ public class TestNeqsim { - /** - *

main.

- * - * @param args the command line arguments - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - SystemInterface testFluid = new SystemSrkEos(298.15, 10.0);// SystemSrkCPAstatoil(298.1, - // 10.9); //298.15 K - - testFluid.addComponent("methane", 8.8316); - testFluid.addComponent("nitrogen", 0.0296682); - testFluid.addComponent("CO2", 0.0209667); - testFluid.addComponent("ethane", 0.28915); - testFluid.addComponent("propane", 0.116637); - testFluid.addComponent("i-butane", 0.0222488); - testFluid.addComponent("n-butane", 0.0315726); - testFluid.addComponent("i-pentane", 0.0097763); - testFluid.addComponent("n-pentane", 0.0104928); + /** + *

+ * main. + *

+ * + * @param args the command line arguments + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + SystemInterface testFluid = new SystemSrkEos(298.15, 10.0); // SystemSrkCPAstatoil(298.1, + // 10.9); //298.15 K - // testFluid.addTBPfraction("C7", 0.0137641, 86.18 / 1000.0, 0.664); - // testFluid.addTBPfraction("C8", 0.025341, 96.46 / 1000.0, 0.7217); - // testFluid.addTBPfraction("C9", 0.023069, 124.66 / 1000.0, 0.7604); - // testFluid.addTBPfraction("C10", 0.0031771, 178.2 / 1000.0, 0.8021); - // testFluid.addTBPfraction("C11", 0.0000188549, 263.77 / 1000.0, 0.8416); + testFluid.addComponent("methane", 8.8316); + testFluid.addComponent("nitrogen", 0.0296682); + testFluid.addComponent("CO2", 0.0209667); + testFluid.addComponent("ethane", 0.28915); + testFluid.addComponent("propane", 0.116637); + testFluid.addComponent("i-butane", 0.0222488); + testFluid.addComponent("n-butane", 0.0315726); + testFluid.addComponent("i-pentane", 0.0097763); + testFluid.addComponent("n-pentane", 0.0104928); - testFluid.addComponent("water", 0.39944); - // testFluid.addComponent("MEG", 0.173083); + // testFluid.addTBPfraction("C7", 0.0137641, 86.18 / 1000.0, 0.664); + // testFluid.addTBPfraction("C8", 0.025341, 96.46 / 1000.0, 0.7217); + // testFluid.addTBPfraction("C9", 0.023069, 124.66 / 1000.0, 0.7604); + // testFluid.addTBPfraction("C10", 0.0031771, 178.2 / 1000.0, 0.8021); + // testFluid.addTBPfraction("C11", 0.0000188549, 263.77 / 1000.0, 0.8416); - testFluid.createDatabase(true); - testFluid.setMixingRule(2); // use 10 for CPA and 2 for SRK/PR - testFluid.setMultiPhaseCheck(true); - testFluid.initPhysicalProperties(); - double[] temperature = new double[10]; - double[] work = new double[10]; - double[] Cp_Vapour = new double[10]; - double[] Cp_liquid = new double[10]; - double[] Cp = new double[10]; - double[] Density_Vapour = new double[10]; - double[] Density_liquid = new double[10]; - double[] Density = new double[10]; + testFluid.addComponent("water", 0.39944); + // testFluid.addComponent("MEG", 0.173083); - // for(int i=0;i<10;i++){ - Stream stream1 = new Stream("stream1", testFluid); - Compressor compressor1 = new Compressor("compressor1", stream1); - compressor1.setOutletPressure(26.590909);// (20+5*i) - compressor1.setUsePolytropicCalc(true); - compressor1.setPolytropicEfficiency(0.64951); - Stream stream2 = new Stream("stream2", compressor1.getOutletStream()); + testFluid.createDatabase(true); + testFluid.setMixingRule(2); // use 10 for CPA and 2 for SRK/PR + testFluid.setMultiPhaseCheck(true); + testFluid.initPhysicalProperties(); + double[] temperature = new double[10]; + double[] work = new double[10]; + double[] Cp_Vapour = new double[10]; + double[] Cp_liquid = new double[10]; + double[] Cp = new double[10]; + double[] Density_Vapour = new double[10]; + double[] Density_liquid = new double[10]; + double[] Density = new double[10]; - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream1); - operations.add(compressor1); - operations.add(stream2); - operations.run(); - // compressor1.getOutStream().getThermoSystem().display(); + // for(int i=0;i<10;i++){ + Stream stream1 = new Stream("stream1", testFluid); + Compressor compressor1 = new Compressor("compressor1", stream1); + compressor1.setOutletPressure(26.590909); // (20+5*i) + compressor1.setUsePolytropicCalc(true); + compressor1.setPolytropicEfficiency(0.64951); + Stream stream2 = new Stream("stream2", compressor1.getOutletStream()); - double CpVapour = stream1.getThermoSystem().getPhase(0).getCp(); - double Cpliquid = stream1.getThermoSystem().getPhase(2).getCp(); - double CpOil = stream1.getThermoSystem().getPhase(1).getCp(); - double Cpone = stream1.getThermoSystem().getPhase(0).getBeta() * CpVapour - + stream1.getThermoSystem().getPhase(1).getBeta() * CpOil - + stream1.getThermoSystem().getPhase(2).getBeta() * Cpliquid; + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream1); + operations.add(compressor1); + operations.add(stream2); + operations.run(); + // compressor1.getOutStream().getThermoSystem().display(); - double DensityVapour = stream1.getThermoSystem().getPhase(0).getDensity(); - double Densityliquid = stream1.getThermoSystem().getPhase(2).getDensity(); - double DensityOil = stream1.getThermoSystem().getPhase(1).getDensity(); - double Density1 = stream1.getThermoSystem().getWtFraction(0) * DensityVapour - + stream1.getThermoSystem().getWtFraction(1) * DensityOil - + stream1.getThermoSystem().getWtFraction(2) * Densityliquid; - // operations.run(); - System.out.println("work " + compressor1.getTotalWork() + " density " + Density1 + " Cp " - + Cpone + " SPEED OF SOUND " - + stream1.getThermoSystem().getPhase(0).getSoundSpeed()); + double CpVapour = stream1.getThermoSystem().getPhase(0).getCp(); + double Cpliquid = stream1.getThermoSystem().getPhase(2).getCp(); + double CpOil = stream1.getThermoSystem().getPhase(1).getCp(); + double Cpone = stream1.getThermoSystem().getPhase(0).getBeta() * CpVapour + + stream1.getThermoSystem().getPhase(1).getBeta() * CpOil + + stream1.getThermoSystem().getPhase(2).getBeta() * Cpliquid; - compressor1.solveEfficiency(390.15); - compressor1.getOutletStream().displayResult(); - System.out.println("Hvap " + stream1.getThermoSystem().getHeatOfVaporization() + " POLI " - + compressor1.getPolytropicEfficiency() + " dentity " - + stream1.getThermoSystem().getDensity() + " cp " - + stream1.getThermoSystem().getCp()); - stream1.getThermoSystem().display(); + double DensityVapour = stream1.getThermoSystem().getPhase(0).getDensity(); + double Densityliquid = stream1.getThermoSystem().getPhase(2).getDensity(); + double DensityOil = stream1.getThermoSystem().getPhase(1).getDensity(); + double Density1 = stream1.getThermoSystem().getWtFraction(0) * DensityVapour + + stream1.getThermoSystem().getWtFraction(1) * DensityOil + + stream1.getThermoSystem().getWtFraction(2) * Densityliquid; + // operations.run(); + // System.out.println("work " + compressor1.getTotalWork() + " density " + Density1 + " Cp " + // + Cpone + " SPEED OF SOUND " + stream1.getThermoSystem().getPhase(0).getSoundSpeed()); - double massFlowGas = stream1.getThermoSystem().getPhase(0).getBeta() - * stream1.getThermoSystem().getPhase(0).getMolarMass(); - double massFlowLiq = stream1.getThermoSystem().getPhase(2).getBeta() - * stream1.getThermoSystem().getPhase(2).getMolarMass(); - double massFlowOil = stream1.getThermoSystem().getPhase(1).getBeta() - * stream1.getThermoSystem().getPhase(1).getMolarMass(); + compressor1.solveEfficiency(390.15); + compressor1.getOutletStream().displayResult(); + // System.out.println("Hvap " + stream1.getThermoSystem().getHeatOfVaporization() + " POLI " + // + compressor1.getPolytropicEfficiency() + " dentity " + // + stream1.getThermoSystem().getDensity() + " cp " + stream1.getThermoSystem().getCp()); + stream1.getThermoSystem().display(); - double volFlowGas = massFlowGas / stream1.getThermoSystem().getPhase(0).getDensity(); - double volFlowLiq = massFlowLiq / stream1.getThermoSystem().getPhase(2).getDensity(); - double volFlowOil = massFlowOil / stream1.getThermoSystem().getPhase(1).getDensity(); + double massFlowGas = stream1.getThermoSystem().getPhase(0).getBeta() + * stream1.getThermoSystem().getPhase(0).getMolarMass(); + double massFlowLiq = stream1.getThermoSystem().getPhase(2).getBeta() + * stream1.getThermoSystem().getPhase(2).getMolarMass(); + double massFlowOil = stream1.getThermoSystem().getPhase(1).getBeta() + * stream1.getThermoSystem().getPhase(1).getMolarMass(); - double GMF = massFlowGas / (massFlowGas + massFlowOil + massFlowLiq); - double GVF = volFlowGas / (volFlowGas + volFlowOil + volFlowLiq); - System.out.println("inlet stream - GMF " + GMF + " GVF " + GVF + " Z IN " - + stream1.getThermoSystem().getZ() + " Z OUT " - + compressor1.getOutletStream().getThermoSystem().getZ()); - /* - * temperature[i] = compressor1.getOutStream().getTemperature(); work [i] = - * compressor1.getTotalWork(); - * - * Cp_Vapour [i] = compressor1.getOutStream().getThermoSystem().getPhase(0).getCp(); - * Cp_liquid [i] = compressor1.getOutStream().getThermoSystem().getPhase(1).getCp(); Cp [i] - * = compressor1.getOutStream().getThermoSystem().getPhase(0).getBeta() * Cp_Vapour [i] + - * compressor1.getOutStream().getThermoSystem().getPhase(1).getBeta()* Cp_liquid [i]; - * - * Density_Vapour [i] = - * compressor1.getOutStream().getThermoSystem().getPhase(0).getDensity(); Density_liquid [i] - * = compressor1.getOutStream().getThermoSystem().getPhase(1).getDensity(); Density [i] = - * compressor1.getOutStream().getThermoSystem().getWtFraction(0) * Density_Vapour [i] + - * compressor1.getOutStream().getThermoSystem().getWtFraction(1)* Density_liquid [i]; - */ - // } + double volFlowGas = massFlowGas / stream1.getThermoSystem().getPhase(0).getDensity(); + double volFlowLiq = massFlowLiq / stream1.getThermoSystem().getPhase(2).getDensity(); + double volFlowOil = massFlowOil / stream1.getThermoSystem().getPhase(1).getDensity(); - // System.out.println("poli"); - // stream2.displayResult(); - // operations.displayResult(); - // ThermodynamicOperations flash = new ThermodynamicOperations(testFluid); - // try{ - // flash.TPflash(); - } - // catch(Exception e){ + double GMF = massFlowGas / (massFlowGas + massFlowOil + massFlowLiq); + double GVF = volFlowGas / (volFlowGas + volFlowOil + volFlowLiq); + System.out.println( + "inlet stream - GMF " + GMF + " GVF " + GVF + " Z IN " + stream1.getThermoSystem().getZ() + + " Z OUT " + compressor1.getOutletStream().getThermoSystem().getZ()); /* - * System.out.println( "P_out" ); for (int i=0;i<10;i++ ) { System.out.println(20 + 5*i); - * - * } - * - * System.out.println( "Temperature" ); for (int i=0;i<10;i++ ) { System.out.println( - * temperature[i] ); - * - * } - * - * System.out.println( "Work" ); for (int i=0;i<10;i++ ) { System.out.println( work [i] ); - * - * } System.out.println( "Cp" ); for (int i=0;i<10;i++ ) { System.out.println( Cp [i] ); - * - * } - * - * System.out.println( "Density" ); for (int i=0;i<10;i++ ) { System.out.println( Density [i] ); + * temperature[i] = compressor1.getOutStream().getTemperature(); work [i] = + * compressor1.getTotalWork(); + * + * Cp_Vapour [i] = compressor1.getOutStream().getThermoSystem().getPhase(0).getCp(); Cp_liquid + * [i] = compressor1.getOutStream().getThermoSystem().getPhase(1).getCp(); Cp [i] = + * compressor1.getOutStream().getThermoSystem().getPhase(0).getBeta() * Cp_Vapour [i] + + * compressor1.getOutStream().getThermoSystem().getPhase(1).getBeta()* Cp_liquid [i]; + * + * Density_Vapour [i] = compressor1.getOutStream().getThermoSystem().getPhase(0).getDensity(); + * Density_liquid [i] = compressor1.getOutStream().getThermoSystem().getPhase(1).getDensity(); + * Density [i] = compressor1.getOutStream().getThermoSystem().getWtFraction(0) * Density_Vapour + * [i] + compressor1.getOutStream().getThermoSystem().getWtFraction(1)* Density_liquid [i]; */ + // } + + // System.out.println("poli"); + // stream2.displayResult(); + // operations.displayResult(); + // ThermodynamicOperations flash = new ThermodynamicOperations(testFluid); + // try{ + // flash.TPflash(); + } + // catch(Exception ex){ + /* + * System.out.println( "P_out" ); for (int i=0;i<10;i++ ) { System.out.println(20 + 5*i); } + * + * System.out.println( "Temperature" ); for (int i=0;i<10;i++ ) { System.out.println( + * temperature[i] ); } + * + * System.out.println( "Work" ); for (int i=0;i<10;i++ ) { System.out.println( work [i] ); } + * System.out.println( "Cp" ); for (int i=0;i<10;i++ ) { System.out.println( Cp [i] ); } + * + * System.out.println( "Density" ); for (int i=0;i<10;i++ ) { System.out.println( Density [i] ); + */ } // } // testFluid.display(); diff --git a/src/test/java/neqsim/processSimulation/util/example/TestProcess4.java b/src/test/java/neqsim/processSimulation/util/example/TestProcess4.java index 3e5cd35b15..12a572ff97 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TestProcess4.java +++ b/src/test/java/neqsim/processSimulation/util/example/TestProcess4.java @@ -37,7 +37,7 @@ public static void main(String args[]) { Separator separator = new Separator("Separator 1", stream_1); // ThrottlingValve valve_1 = new ThrottlingValve(separator.getGasOutStream()); - // valve_1.setOutletPressure(75.0 + 1.01325); + // valve_1.setOutletPressure(75.0 + ThermodynamicConstantsInterface.referencePressure); // valve_1.setIsoThermal(true); // Heater heater = new Heater(valve_1.getOutStream()); diff --git a/src/test/java/neqsim/processSimulation/util/example/TestSeparationTrain.java b/src/test/java/neqsim/processSimulation/util/example/TestSeparationTrain.java index e3cbc2a179..346115cd6c 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TestSeparationTrain.java +++ b/src/test/java/neqsim/processSimulation/util/example/TestSeparationTrain.java @@ -11,133 +11,136 @@ import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; /** - *

TestSeparationTrain class.

+ *

+ * TestSeparationTrain class. + *

* * @author ESOL * @version $Id: $Id * @since 2.2.3 */ public class TestSeparationTrain { - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - double inletPressure = 15.00; // bar - double inletTemperatuure = 273.15 + 50.0; // K - - double secondstagePressure = 5.00; // bar' - double thirdstagePressure = 1.50; // bar - - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkCPAstatoil(inletTemperatuure, inletPressure); - - testSystem.addComponent("methane", 50); - testSystem.addComponent("propane", 5); - testSystem.addComponent("nC10", 50); - testSystem.addComponent("water", 50); - - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.setMultiPhaseCheck(true); - - Stream wellStream = new Stream("Well stream", testSystem); - Separator inletSeparator = new Separator("Inlet separator", wellStream); - - Heater liquidOutHeater = new Heater("liquidOutHeater", inletSeparator.getLiquidOutStream()); - liquidOutHeater.setOutTemperature(273.15 + 55.0); - - ThreePhaseSeparator firstStageSeparator = - new ThreePhaseSeparator("1st stage Separator", liquidOutHeater.getOutletStream()); - - ThrottlingValve valve1 = - new ThrottlingValve("snohvit valve", firstStageSeparator.getOilOutStream()); - valve1.setOutletPressure(secondstagePressure); - - ThreePhaseSeparator secondStageSeparator = - new ThreePhaseSeparator("2nd stage Separator", valve1.getOutletStream()); - - ThrottlingValve thirdStageValve = - new ThrottlingValve("snohvit valve2", secondStageSeparator.getLiquidOutStream()); - thirdStageValve.setOutletPressure(thirdstagePressure); - - ThreePhaseSeparator thirdStageSeparator = - new ThreePhaseSeparator("3rd stage Separator", thirdStageValve.getOutletStream()); - - Compressor thirdStageCompressor = - new Compressor("thirdStageCompressor", thirdStageSeparator.getGasOutStream()); - thirdStageCompressor.setOutletPressure(secondstagePressure); - - Mixer thirdStageMixer = new Mixer("thirdStageMixer"); - thirdStageMixer.addStream(thirdStageCompressor.getOutletStream()); - thirdStageMixer.addStream(secondStageSeparator.getGasOutStream()); - - Cooler thirdSstageCoooler = - new Cooler("thirdSstageCoooler", thirdStageMixer.getOutletStream()); - thirdSstageCoooler.setOutTemperature(273.15 + 30.0); - - ThreePhaseSeparator thirdStageScrubber = new ThreePhaseSeparator( - "Third stage gas resirc scrubber", thirdSstageCoooler.getOutletStream()); - secondStageSeparator.addStream(thirdStageScrubber.getOilOutStream()); - secondStageSeparator.addStream(thirdStageScrubber.getWaterOutStream()); - - Compressor secondStageCompressor = - new Compressor("secondStageCompressor", thirdStageScrubber.getGasOutStream()); - secondStageCompressor.setOutletPressure(inletPressure); - - Mixer HPgasMixer = new Mixer("HPgasMixer"); - HPgasMixer.addStream(inletSeparator.getGasOutStream()); - HPgasMixer.addStream(secondStageCompressor.getOutletStream()); - - Cooler oilCooler = new Cooler("oilCooler", thirdStageSeparator.getLiquidOutStream()); - oilCooler.setOutTemperature(273.15 + 30.0); - - Cooler inletGasCooler = new Cooler("inletGasCooler", HPgasMixer.getOutletStream()); - inletGasCooler.setOutTemperature(273.15 + 30.0); - - Separator gasInletScrubber = - new Separator("Gas scrubber inlet", inletGasCooler.getOutletStream()); - - Recycle HPliquidRecycle = new Recycle("HPliquidRecycle"); - double tolerance = 1e-10; - HPliquidRecycle.setTolerance(tolerance); - HPliquidRecycle.addStream(gasInletScrubber.getLiquidOutStream()); - inletSeparator.addStream(HPliquidRecycle.getOutStream()); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(wellStream); - operations.add(inletSeparator); - operations.add(liquidOutHeater); - operations.add(firstStageSeparator); - operations.add(valve1); - operations.add(secondStageSeparator); - operations.add(thirdStageValve); - operations.add(thirdStageSeparator); - operations.add(thirdStageCompressor); - operations.add(thirdStageMixer); - operations.add(thirdSstageCoooler); - operations.add(thirdStageScrubber); - operations.add(HPliquidRecycle); - - operations.add(secondStageCompressor); - - operations.add(oilCooler); - operations.add(HPgasMixer); - operations.add(inletGasCooler); - operations.add(gasInletScrubber); - - operations.run(); - // secondStageSeparator.addStream(thirdStageScrubber.getWaterOutStream()); - // operations.run(); - // secondStageSeparator.displayResult(); - gasInletScrubber.getGasOutStream().displayResult(); - firstStageSeparator.displayResult(); - // secondStageSeparator.displayResult(); - // thirdStageSeparator.displayResult(); - // inletSeparator.displayResult(); - // operations.displayResult(); - // liquidOutHeater.getOutStream().getThermoSystem().display(); - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + double inletPressure = 15.00; // bar + double inletTemperatuure = 273.15 + 50.0; // K + + double secondstagePressure = 5.00; // bar' + double thirdstagePressure = 1.50; // bar + + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkCPAstatoil(inletTemperatuure, inletPressure); + + testSystem.addComponent("methane", 50); + testSystem.addComponent("propane", 5); + testSystem.addComponent("nC10", 50); + testSystem.addComponent("water", 50); + + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.setMultiPhaseCheck(true); + + Stream wellStream = new Stream("Well stream", testSystem); + Separator inletSeparator = new Separator("Inlet separator", wellStream); + + Heater liquidOutHeater = new Heater("liquidOutHeater", inletSeparator.getLiquidOutStream()); + liquidOutHeater.setOutTemperature(273.15 + 55.0); + + ThreePhaseSeparator firstStageSeparator = + new ThreePhaseSeparator("1st stage Separator", liquidOutHeater.getOutletStream()); + + ThrottlingValve valve1 = + new ThrottlingValve("snohvit valve", firstStageSeparator.getOilOutStream()); + valve1.setOutletPressure(secondstagePressure); + + ThreePhaseSeparator secondStageSeparator = + new ThreePhaseSeparator("2nd stage Separator", valve1.getOutletStream()); + + ThrottlingValve thirdStageValve = + new ThrottlingValve("snohvit valve2", secondStageSeparator.getLiquidOutStream()); + thirdStageValve.setOutletPressure(thirdstagePressure); + + ThreePhaseSeparator thirdStageSeparator = + new ThreePhaseSeparator("3rd stage Separator", thirdStageValve.getOutletStream()); + + Compressor thirdStageCompressor = + new Compressor("thirdStageCompressor", thirdStageSeparator.getGasOutStream()); + thirdStageCompressor.setOutletPressure(secondstagePressure); + + Mixer thirdStageMixer = new Mixer("thirdStageMixer"); + thirdStageMixer.addStream(thirdStageCompressor.getOutletStream()); + thirdStageMixer.addStream(secondStageSeparator.getGasOutStream()); + + Cooler thirdSstageCoooler = new Cooler("thirdSstageCoooler", thirdStageMixer.getOutletStream()); + thirdSstageCoooler.setOutTemperature(273.15 + 30.0); + + ThreePhaseSeparator thirdStageScrubber = new ThreePhaseSeparator( + "Third stage gas resirc scrubber", thirdSstageCoooler.getOutletStream()); + secondStageSeparator.addStream(thirdStageScrubber.getOilOutStream()); + secondStageSeparator.addStream(thirdStageScrubber.getWaterOutStream()); + + Compressor secondStageCompressor = + new Compressor("secondStageCompressor", thirdStageScrubber.getGasOutStream()); + secondStageCompressor.setOutletPressure(inletPressure); + + Mixer HPgasMixer = new Mixer("HPgasMixer"); + HPgasMixer.addStream(inletSeparator.getGasOutStream()); + HPgasMixer.addStream(secondStageCompressor.getOutletStream()); + + Cooler oilCooler = new Cooler("oilCooler", thirdStageSeparator.getLiquidOutStream()); + oilCooler.setOutTemperature(273.15 + 30.0); + + Cooler inletGasCooler = new Cooler("inletGasCooler", HPgasMixer.getOutletStream()); + inletGasCooler.setOutTemperature(273.15 + 30.0); + + Separator gasInletScrubber = + new Separator("Gas scrubber inlet", inletGasCooler.getOutletStream()); + + Recycle HPliquidRecycle = new Recycle("HPliquidRecycle"); + double tolerance = 1e-10; + HPliquidRecycle.setTolerance(tolerance); + HPliquidRecycle.addStream(gasInletScrubber.getLiquidOutStream()); + inletSeparator.addStream(HPliquidRecycle.getOutletStream()); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(wellStream); + operations.add(inletSeparator); + operations.add(liquidOutHeater); + operations.add(firstStageSeparator); + operations.add(valve1); + operations.add(secondStageSeparator); + operations.add(thirdStageValve); + operations.add(thirdStageSeparator); + operations.add(thirdStageCompressor); + operations.add(thirdStageMixer); + operations.add(thirdSstageCoooler); + operations.add(thirdStageScrubber); + operations.add(HPliquidRecycle); + + operations.add(secondStageCompressor); + + operations.add(oilCooler); + operations.add(HPgasMixer); + operations.add(inletGasCooler); + operations.add(gasInletScrubber); + + operations.run(); + // secondStageSeparator.addStream(thirdStageScrubber.getWaterOutStream()); + // operations.run(); + // secondStageSeparator.displayResult(); + gasInletScrubber.getGasOutStream().displayResult(); + firstStageSeparator.displayResult(); + // secondStageSeparator.displayResult(); + // thirdStageSeparator.displayResult(); + // inletSeparator.displayResult(); + // operations.displayResult(); + // liquidOutHeater.getOutStream().getThermoSystem().display(); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/TestSlugcatcher.java b/src/test/java/neqsim/processSimulation/util/example/TestSlugcatcher.java index dae8ea8707..da9fc4eddc 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TestSlugcatcher.java +++ b/src/test/java/neqsim/processSimulation/util/example/TestSlugcatcher.java @@ -3,6 +3,7 @@ * * Created on 30. juli 2007, 18:49 */ + package neqsim.processSimulation.util.example; import neqsim.processSimulation.measurementDevice.VolumeFlowTransmitter; @@ -20,63 +21,61 @@ * @since 2.2.3 */ public class TestSlugcatcher { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - double reservoirTemperatureSnohvit = 273.15 + 10.0; // K - double reservoirPressureSnohvit = 5.0; // bar + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + double reservoirTemperatureSnohvit = 273.15 + 10.0; // K + double reservoirPressureSnohvit = 5.0; // bar - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkCPAstatoil(reservoirTemperatureSnohvit, - reservoirPressureSnohvit); + neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkCPAstatoil( + reservoirTemperatureSnohvit, reservoirPressureSnohvit); - testSystem.addComponent("nitrogen", 40); - testSystem.addComponent("methane", 10); - testSystem.addComponent("CO2", 0.5); - testSystem.addComponent("water", 70); - testSystem.addComponent("MEG", 30); + testSystem.addComponent("nitrogen", 40); + testSystem.addComponent("methane", 10); + testSystem.addComponent("CO2", 0.5); + testSystem.addComponent("water", 70); + testSystem.addComponent("MEG", 30); - testSystem.createDatabase(true); - testSystem.setMixingRule(7); + testSystem.createDatabase(true); + testSystem.setMixingRule(7); - Stream stream_1 = new Stream("Stream1", testSystem); - ThreePhaseSeparator separator = new ThreePhaseSeparator("Separator 1", stream_1); + Stream stream_1 = new Stream("Stream1", testSystem); + ThreePhaseSeparator separator = new ThreePhaseSeparator("Separator 1", stream_1); - ThrottlingValve valve1 = - new ThrottlingValve("snohvit valve", separator.getWaterOutStream()); - valve1.setOutletPressure(1.4); + ThrottlingValve valve1 = new ThrottlingValve("snohvit valve", separator.getWaterOutStream()); + valve1.setOutletPressure(1.4); - ThreePhaseSeparator separator2 = - new ThreePhaseSeparator("Separator 1", valve1.getOutletStream()); - Stream stream_2 = new Stream("stream_2", separator2.getGasOutStream()); + ThreePhaseSeparator separator2 = + new ThreePhaseSeparator("Separator 1", valve1.getOutletStream()); + Stream stream_2 = new Stream("stream_2", separator2.getGasOutStream()); - VolumeFlowTransmitter volumeTransmitter3 = - new VolumeFlowTransmitter(separator2.getGasOutStream()); - volumeTransmitter3.setMeasuredPhaseNumber(0); - volumeTransmitter3.setName("Gas Volume FLow From Slug Catcher"); + VolumeFlowTransmitter volumeTransmitter3 = + new VolumeFlowTransmitter(separator2.getGasOutStream()); + volumeTransmitter3.setMeasuredPhaseNumber(0); + volumeTransmitter3.setName("Gas Volume FLow From Slug Catcher"); - VolumeFlowTransmitter volumeTransmitter4 = - new VolumeFlowTransmitter(separator2.getWaterOutStream()); - volumeTransmitter4.setMeasuredPhaseNumber(0); - volumeTransmitter4.setName("Water Volume FLow From Slug Catcher"); + VolumeFlowTransmitter volumeTransmitter4 = + new VolumeFlowTransmitter(separator2.getWaterOutStream()); + volumeTransmitter4.setMeasuredPhaseNumber(0); + volumeTransmitter4.setName("Water Volume FLow From Slug Catcher"); - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(separator); - operations.add(valve1); - operations.add(separator2); - operations.add(stream_2); - operations.add(volumeTransmitter3); - operations.add(volumeTransmitter4); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(separator); + operations.add(valve1); + operations.add(separator2); + operations.add(stream_2); + operations.add(volumeTransmitter3); + operations.add(volumeTransmitter4); - operations.run(); - operations.displayResult(); - operations.reportMeasuredValues(); - } + operations.run(); + operations.displayResult(); + operations.reportMeasuredValues(); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/TestTransientFlow.java b/src/test/java/neqsim/processSimulation/util/example/TestTransientFlow.java index d732ffee98..c047e2ec8d 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TestTransientFlow.java +++ b/src/test/java/neqsim/processSimulation/util/example/TestTransientFlow.java @@ -3,6 +3,7 @@ * * Created on 8. oktober 2006, 13:13 */ + package neqsim.processSimulation.util.example; import neqsim.processSimulation.controllerDevice.ControllerDeviceBaseClass; @@ -23,112 +24,110 @@ * @since 2.2.3 */ public class TestTransientFlow { - /** - *

- * main. - *

+ /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem.addComponent("methane", 0.900); + testSystem.addComponent("ethane", 0.100); + testSystem.addComponent("n-heptane", 1.00); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem2.addComponent("methane", 1.1); + testSystem2.addComponent("ethane", 0.10001); + testSystem2.addComponent("n-heptane", 0.001); + testSystem2.setMixingRule(2); + + Stream purgeStream = new Stream("Purge Stream", testSystem2); + ThrottlingValve purgeValve = new ThrottlingValve("purgeValve", purgeStream); + purgeValve.setOutletPressure(7.0); + purgeValve.setPercentValveOpening(50.0); + + Stream stream_1 = new Stream("Stream1", testSystem); + ThrottlingValve valve_1 = new ThrottlingValve("valve_1", stream_1); + valve_1.setOutletPressure(7.0); + valve_1.setPercentValveOpening(50); + + Separator separator_1 = new Separator("separator_1"); + separator_1.addStream(valve_1.getOutletStream()); + separator_1.addStream(purgeValve.getOutletStream()); + + ThrottlingValve valve_2 = new ThrottlingValve("valve_2", separator_1.getLiquidOutStream()); + valve_2.setOutletPressure(5.0); + valve_2.setPercentValveOpening(50); + // valve_2.setCv(10.0); + + ThrottlingValve valve_3 = new ThrottlingValve("valve_3", separator_1.getGasOutStream()); + valve_3.setOutletPressure(5.0); + valve_3.setPercentValveOpening(50); + // valve_3.setCv(10.0); + + LevelTransmitter separatorLevelTransmitter = + new LevelTransmitter("separatorLevelTransmitter1", separator_1); + separatorLevelTransmitter.setMaximumValue(1.0); + separatorLevelTransmitter.setMinimumValue(0.0); + + ControllerDeviceInterface separatorLevelController = new ControllerDeviceBaseClass(); + separatorLevelController.setReverseActing(false); + separatorLevelController.setTransmitter(separatorLevelTransmitter); + separatorLevelController.setControllerSetPoint(0.3); + separatorLevelController.setControllerParameters(1.0, 300.0, 10.0); + + PressureTransmitter separatorPressureTransmitter = + new PressureTransmitter(separator_1.getGasOutStream()); + separatorPressureTransmitter.setUnit("bar"); + separatorPressureTransmitter.setMaximumValue(10.0); + separatorPressureTransmitter.setMinimumValue(1.0); + + ControllerDeviceInterface separatorPressureController = new ControllerDeviceBaseClass(); + separatorPressureController.setTransmitter(separatorPressureTransmitter); + separatorPressureController.setReverseActing(false); + separatorPressureController.setControllerSetPoint(7.0); + separatorPressureController.setControllerParameters(1.0, 300.0, 10.0); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(valve_1); + + operations.add(purgeStream); + operations.add(purgeValve); + operations.add(separator_1); + operations.add(valve_2); + operations.add(valve_3); + + // add transmitters and controllers + operations.add(separatorLevelTransmitter); + valve_2.setController(separatorLevelController); + + operations.add(separatorPressureTransmitter); + valve_3.setController(separatorPressureController); + + operations.run(); + operations.displayResult(); + operations.setTimeStep(0.001); + operations.runTransient(); + operations.runTransient(); + + /* + * // transient behaviour operations.setTimeStep(1.1); for(int i=0;i<50;i++){ + * operations.runTransient(); System.out.println("liquid level " + separator_1.getLiquidLevel()+ + * " PRESSURE " + separator_1.getGasOutStream().getPressure()); } + * + * operations.setTimeStep(30.0); for(int i=0;i<2000;i++){ operations.runTransient(); + * System.out.println("liquid level " + separator_1.getLiquidLevel()+ " PRESSURE " + + * separator_1.getGasOutStream().getPressure()); } operations.displayResult(); * - * @param args an array of {@link java.lang.String} objects + * operations.displayResult(); */ - public static void main(String args[]) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); - testSystem.addComponent("methane", 0.900); - testSystem.addComponent("ethane", 0.100); - testSystem.addComponent("n-heptane", 1.00); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - - neqsim.thermo.system.SystemInterface testSystem2 = - new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); - testSystem2.addComponent("methane", 1.1); - testSystem2.addComponent("ethane", 0.10001); - testSystem2.addComponent("n-heptane", 0.001); - testSystem2.setMixingRule(2); - - Stream purgeStream = new Stream("Purge Stream", testSystem2); - ThrottlingValve purgeValve = new ThrottlingValve("purgeValve", purgeStream); - purgeValve.setOutletPressure(7.0); - purgeValve.setPercentValveOpening(50.0); - - Stream stream_1 = new Stream("Stream1", testSystem); - ThrottlingValve valve_1 = new ThrottlingValve("valve_1", stream_1); - valve_1.setOutletPressure(7.0); - valve_1.setPercentValveOpening(50); - - Separator separator_1 = new Separator("separator_1"); - separator_1.addStream(valve_1.getOutletStream()); - separator_1.addStream(purgeValve.getOutletStream()); - - ThrottlingValve valve_2 = new ThrottlingValve("valve_2", separator_1.getLiquidOutStream()); - valve_2.setOutletPressure(5.0); - valve_2.setPercentValveOpening(50); - // valve_2.setCv(10.0); - - ThrottlingValve valve_3 = new ThrottlingValve("valve_3", separator_1.getGasOutStream()); - valve_3.setOutletPressure(5.0); - valve_3.setPercentValveOpening(50); - // valve_3.setCv(10.0); - - LevelTransmitter separatorLevelTransmitter = new LevelTransmitter(separator_1); - separatorLevelTransmitter.setName("separatorLEvelTransmitter1"); - separatorLevelTransmitter.setUnit("meter"); - separatorLevelTransmitter.setMaximumValue(1.0); - separatorLevelTransmitter.setMinimumValue(0.0); - - ControllerDeviceInterface separatorLevelController = new ControllerDeviceBaseClass(); - separatorLevelController.setReverseActing(false); - separatorLevelController.setTransmitter(separatorLevelTransmitter); - separatorLevelController.setControllerSetPoint(0.3); - separatorLevelController.setControllerParameters(1.0, 300.0, 10.0); - - PressureTransmitter separatorPressureTransmitter = - new PressureTransmitter(separator_1.getGasOutStream()); - separatorPressureTransmitter.setUnit("bar"); - separatorPressureTransmitter.setMaximumValue(10.0); - separatorPressureTransmitter.setMinimumValue(1.0); - - ControllerDeviceInterface separatorPressureController = new ControllerDeviceBaseClass(); - separatorPressureController.setTransmitter(separatorPressureTransmitter); - separatorPressureController.setReverseActing(false); - separatorPressureController.setControllerSetPoint(7.0); - separatorPressureController.setControllerParameters(1.0, 300.0, 10.0); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(valve_1); - - operations.add(purgeStream); - operations.add(purgeValve); - operations.add(separator_1); - operations.add(valve_2); - operations.add(valve_3); - - // add transmitters and controllers - operations.add(separatorLevelTransmitter); - valve_2.setController(separatorLevelController); - - operations.add(separatorPressureTransmitter); - valve_3.setController(separatorPressureController); - - operations.run(); - operations.displayResult(); - operations.setTimeStep(0.001); - operations.runTransient(); - operations.runTransient(); - - /* - * // transient behaviour operations.setTimeStep(1.1); for(int i=0;i<50;i++){ - * operations.runTransient(); System.out.println("liquid level " + - * separator_1.getLiquidLevel()+ " PRESSURE " + - * separator_1.getGasOutStream().getPressure()); } - * - * operations.setTimeStep(30.0); for(int i=0;i<2000;i++){ operations.runTransient(); - * System.out.println("liquid level " + separator_1.getLiquidLevel()+ " PRESSURE " + - * separator_1.getGasOutStream().getPressure()); } operations.displayResult(); - * - * operations.displayResult(); - */ - } + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/TestTransientFlow2.java b/src/test/java/neqsim/processSimulation/util/example/TestTransientFlow2.java index 2e00c72ce3..cda2238d57 100644 --- a/src/test/java/neqsim/processSimulation/util/example/TestTransientFlow2.java +++ b/src/test/java/neqsim/processSimulation/util/example/TestTransientFlow2.java @@ -8,83 +8,87 @@ import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; /** - *

TestTransientFlow2 class.

+ *

+ * TestTransientFlow2 class. + *

* * @author ESOL * @version $Id: $Id * @since 2.2.3 */ public class TestTransientFlow2 { - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); - testSystem.addComponent("methane", 0.900); - testSystem.addComponent("ethane", 0.100); - testSystem.addComponent("n-heptane", 1.00); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 10.00); + testSystem.addComponent("methane", 0.900); + testSystem.addComponent("ethane", 0.100); + testSystem.addComponent("n-heptane", 1.00); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - Stream stream_1 = new Stream("Stream1", testSystem); - ThrottlingValve valve_1 = new ThrottlingValve("valve_1", stream_1); - valve_1.setOutletPressure(5.0); - valve_1.setPercentValveOpening(50); + Stream stream_1 = new Stream("Stream1", testSystem); + ThrottlingValve valve_1 = new ThrottlingValve("valve_1", stream_1); + valve_1.setOutletPressure(5.0); + valve_1.setPercentValveOpening(50); - Separator separator_1 = new Separator("separator_1"); - separator_1.addStream(valve_1.getOutletStream()); + Separator separator_1 = new Separator("separator_1"); + separator_1.addStream(valve_1.getOutletStream()); - ThrottlingValve valve_2 = new ThrottlingValve("valve_2", separator_1.getLiquidOutStream()); - valve_2.setOutletPressure(1.0); - valve_2.setPercentValveOpening(50); - // valve_2.setCv(10.0); + ThrottlingValve valve_2 = new ThrottlingValve("valve_2", separator_1.getLiquidOutStream()); + valve_2.setOutletPressure(1.0); + valve_2.setPercentValveOpening(50); + // valve_2.setCv(10.0); - ThrottlingValve valve_3 = new ThrottlingValve("valve_3", separator_1.getGasOutStream()); - valve_3.setOutletPressure(1.0); - valve_3.setPercentValveOpening(50); + ThrottlingValve valve_3 = new ThrottlingValve("valve_3", separator_1.getGasOutStream()); + valve_3.setOutletPressure(1.0); + valve_3.setPercentValveOpening(50); - VolumeFlowTransmitter flowTransmitter = new VolumeFlowTransmitter(stream_1); - flowTransmitter.setUnit("m^3/hr"); - flowTransmitter.setMaximumValue(10.0); - flowTransmitter.setMinimumValue(1.0); + VolumeFlowTransmitter flowTransmitter = new VolumeFlowTransmitter(stream_1); + flowTransmitter.setUnit("m^3/hr"); + flowTransmitter.setMaximumValue(10.0); + flowTransmitter.setMinimumValue(1.0); - ControllerDeviceInterface flowController = new ControllerDeviceBaseClass(); - flowController.setTransmitter(flowTransmitter); - flowController.setReverseActing(true); - flowController.setControllerSetPoint(1.0); - flowController.setControllerParameters(0.7, 300.0, 0.0); + ControllerDeviceInterface flowController = new ControllerDeviceBaseClass(); + flowController.setTransmitter(flowTransmitter); + flowController.setReverseActing(true); + flowController.setControllerSetPoint(1.0); + flowController.setControllerParameters(0.7, 300.0, 0.0); - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(valve_1); - operations.add(separator_1); - operations.add(valve_2); - operations.add(valve_3); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(valve_1); + operations.add(separator_1); + operations.add(valve_2); + operations.add(valve_3); - operations.add(flowTransmitter); - valve_1.setController(flowController); + operations.add(flowTransmitter); + valve_1.setController(flowController); - operations.run(); - operations.displayResult(); - valve_2.setPercentValveOpening(0.1); - valve_3.setPercentValveOpening(0.1); - // transient behaviour - operations.setTimeStep(5.0); - for (int i = 0; i < 460; i++) { - System.out.println("volume flow " + flowTransmitter.getMeasuredValue() - + " valve opening " + valve_1.getPercentValveOpening() + " pressure " - + separator_1.getGasOutStream().getPressure()); - operations.runTransient(); - } + operations.run(); + operations.displayResult(); + valve_2.setPercentValveOpening(0.1); + valve_3.setPercentValveOpening(0.1); + // transient behaviour + operations.setTimeStep(5.0); + for (int i = 0; i < 460; i++) { + // System.out.println("volume flow " + flowTransmitter.getMeasuredValue() + // + " valve opening " + valve_1.getPercentValveOpening() + " pressure " + // + separator_1.getGasOutStream().getPressure()); + operations.runTransient(); + } - operations.displayResult(); - System.out.println("volume flow " + flowTransmitter.getMeasuredValue() + " valve opening " - + valve_1.getPercentValveOpening()); + operations.displayResult(); + // System.out.println("volume flow " + flowTransmitter.getMeasuredValue() + " valve opening " + // + valve_1.getPercentValveOpening()); - // operations.displayResult(); - } + // operations.displayResult(); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/WellStreamMixer.java b/src/test/java/neqsim/processSimulation/util/example/WellStreamMixer.java index 87cca5fbd0..4b37922d5d 100644 --- a/src/test/java/neqsim/processSimulation/util/example/WellStreamMixer.java +++ b/src/test/java/neqsim/processSimulation/util/example/WellStreamMixer.java @@ -54,10 +54,6 @@ public static void main(String[] args) { testSystem2.setMolarComposition(new double[] {1.0, 1.42, 70.1, 8, 3.54, 0.54, 0.2, 0.21, 0.19, 0.28, 5.0, 0.0, 0.0, 1, 1}); - // testSystem.renameComponent("nitrogen", "nitrogen_well1"); - // testSystem.setComponentNameTagOnNormalComponents("_well1"); - // testSystem2.setComponentNameTag("_well2"); - Stream wellStream_1 = new Stream("well stream", testSystem); wellStream_1.setFlowRate(14.23, "MSm3/day"); wellStream_1.setTemperature(40.0, "C"); diff --git a/src/test/java/neqsim/processSimulation/util/example/compressorTest12.java b/src/test/java/neqsim/processSimulation/util/example/compressorTest12.java index bc9313c51b..6a8e7b8feb 100644 --- a/src/test/java/neqsim/processSimulation/util/example/compressorTest12.java +++ b/src/test/java/neqsim/processSimulation/util/example/compressorTest12.java @@ -1,22 +1,21 @@ package neqsim.processSimulation.util.example; +import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.compressor.Compressor; import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.thermo.system.SystemInterface; /** - *

compressorTest12 class.

+ *

+ * compressorTest12 class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ -public class compressorTest12 { - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { +public class compressorTest12 extends neqsim.NeqSimTest { + public static SystemInterface getSystem() { neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkEos(265, 49.6); testSystem.addComponent("methane", 92); @@ -42,6 +41,12 @@ public static void main(String args[]) { testSystem.addComponent("m-Xylene", 1e-12); testSystem.addComponent("nC10", 1e-12); testSystem.createDatabase(true); + return testSystem; + } + + @Test + public void testRun() { + SystemInterface testSystem = getSystem(); // testSystem.setMixingRule(2); // ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); // testOps.TPflash(); diff --git a/src/test/java/neqsim/processSimulation/util/example/compressorTest_1.java b/src/test/java/neqsim/processSimulation/util/example/compressorTest_1.java index 922fa4837c..4ae05f6726 100644 --- a/src/test/java/neqsim/processSimulation/util/example/compressorTest_1.java +++ b/src/test/java/neqsim/processSimulation/util/example/compressorTest_1.java @@ -15,56 +15,55 @@ * @since 2.2.3 */ public class compressorTest_1 { - static Logger logger = LogManager.getLogger(compressorTest_1.class); + static Logger logger = LogManager.getLogger(compressorTest_1.class); - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkCPAstatoil((273.15 + 20.0), 10.00); - testSystem.addComponent("nitrogen", 0.8); - testSystem.addComponent("oxygen", 2.0); - // testSystem.addComponent("water", 0.2); - testSystem.createDatabase(true); - testSystem.setMixingRule(9); + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkCPAstatoil((273.15 + 20.0), 10.00); + testSystem.addComponent("nitrogen", 0.8); + testSystem.addComponent("oxygen", 2.0); + // testSystem.addComponent("water", 0.2); + testSystem.createDatabase(true); + testSystem.setMixingRule(9); - Stream stream_1 = new Stream("Stream1", testSystem); + Stream stream_1 = new Stream("Stream1", testSystem); - Compressor comp_1 = new Compressor("compressor", stream_1); - comp_1.setOutletPressure(40.0); - comp_1.setUsePolytropicCalc(true); + Compressor comp_1 = new Compressor("compressor", stream_1); + comp_1.setOutletPressure(40.0); + comp_1.setUsePolytropicCalc(true); - comp_1.setPolytropicEfficiency(0.74629255); + comp_1.setPolytropicEfficiency(0.74629255); - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(comp_1); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(comp_1); - operations.run(); + operations.run(); - // comp_1.solvePolytropicEfficiency(380.0); - // operations.displayResult(); - logger.info("power " + comp_1.getTotalWork()); + // comp_1.solvePolytropicEfficiency(380.0); + // operations.displayResult(); + logger.info("power " + comp_1.getTotalWork()); - logger.info("speed of sound " - + comp_1.getOutletStream().getThermoSystem().getPhase(0).getSoundSpeed()); - logger - .info("out temperature" + comp_1.getOutletStream().getThermoSystem().getTemperature()); - logger.info("Cp " + comp_1.getOutletStream().getThermoSystem().getPhase(0).getCp()); - logger.info("Cv " + comp_1.getOutletStream().getThermoSystem().getPhase(0).getCv()); - logger.info( - "molarmass " + comp_1.getOutletStream().getThermoSystem().getPhase(0).getMolarMass()); + logger.info( + "speed of sound " + comp_1.getOutletStream().getThermoSystem().getPhase(0).getSoundSpeed()); + logger.info("out temperature" + comp_1.getOutletStream().getThermoSystem().getTemperature()); + logger.info("Cp " + comp_1.getOutletStream().getThermoSystem().getPhase(0).getCp()); + logger.info("Cv " + comp_1.getOutletStream().getThermoSystem().getPhase(0).getCv()); + logger + .info("molarmass " + comp_1.getOutletStream().getThermoSystem().getPhase(0).getMolarMass()); - double outTemp = 500.1; // temperature in Kelvin - double efficiency = comp_1.solveEfficiency(outTemp); - logger.info("compressor polytropic efficiency " + efficiency); - logger.info("compressor out temperature " + comp_1.getOutletStream().getTemperature()); - logger.info("compressor power " + comp_1.getPower() + " J/sec"); - logger.info("compressor head " - + comp_1.getPower() / comp_1.getThermoSystem().getTotalNumberOfMoles() + " J/mol"); - } + double outTemp = 500.1; // temperature in Kelvin + double efficiency = comp_1.solveEfficiency(outTemp); + logger.info("compressor polytropic efficiency " + efficiency); + logger.info("compressor out temperature " + comp_1.getOutletStream().getTemperature()); + logger.info("compressor power " + comp_1.getPower() + " J/sec"); + logger.info("compressor head " + + comp_1.getPower() / comp_1.getThermoSystem().getTotalNumberOfMoles() + " J/mol"); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/destillation1.java b/src/test/java/neqsim/processSimulation/util/example/destillation1.java index ae1770fa08..6edfddf53e 100644 --- a/src/test/java/neqsim/processSimulation/util/example/destillation1.java +++ b/src/test/java/neqsim/processSimulation/util/example/destillation1.java @@ -7,64 +7,66 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

destillation1 class.

+ *

+ * destillation1 class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class destillation1 { - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 63.0), 16.00); - // testSystem.addComponent("methane", 1.00); - testSystem.addComponent("ethane", 0.002); - // testSystem.addComponent("CO2", 10.00); - testSystem.addComponent("propane", 0.605900); - testSystem.addComponent("i-butane", 0.1473); - testSystem.addComponent("n-butane", 0.2414); - testSystem.addComponent("i-pentane", 0.00322); - testSystem.addComponent("n-pentane", 0.0002); - testSystem.addComponent("methanol", 0.00005); - // testSystem.addComponent("n-heptane", 100.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - testSystem.display(); + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 63.0), 16.00); + // testSystem.addComponent("methane", 1.00); + testSystem.addComponent("ethane", 0.002); + // testSystem.addComponent("CO2", 10.00); + testSystem.addComponent("propane", 0.605900); + testSystem.addComponent("i-butane", 0.1473); + testSystem.addComponent("n-butane", 0.2414); + testSystem.addComponent("i-pentane", 0.00322); + testSystem.addComponent("n-pentane", 0.0002); + testSystem.addComponent("methanol", 0.00005); + // testSystem.addComponent("n-heptane", 100.0); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.display(); - Stream stream_1 = new Stream("Stream1", testSystem); + Stream stream_1 = new Stream("Stream1", testSystem); - DistillationColumn column = new DistillationColumn(9, true, true); - column.addFeedStream(stream_1, 4); - ((Reboiler) column.getReboiler()).setRefluxRatio(3.7); - ((Condenser) column.getCondenser()).setRefluxRatio(10.7); - // column.setReboilerTemperature(360); - // column.setReboilerTemperature(300); - /* - * Heater heater = new Heater((Stream) column.getGasOutStream()); heater.setdT(-15.0); - * - * DistillationColumn column2 = new DistillationColumn(4, true, true); - * column2.addFeedStream(heater.getOutStream(), 2); ((Reboiler) - * column2.getReboiler()).setRefluxRatio(0.01); ((Condenser) - * column2.getCondenser()).setRefluxRatio(0.01); - */ + DistillationColumn column = new DistillationColumn(9, true, true); + column.addFeedStream(stream_1, 4); + ((Reboiler) column.getReboiler()).setRefluxRatio(3.7); + ((Condenser) column.getCondenser()).setRefluxRatio(10.7); + // column.setReboilerTemperature(360); + // column.setReboilerTemperature(300); + /* + * Heater heater = new Heater((Stream) column.getGasOutStream()); heater.setdT(-15.0); + * + * DistillationColumn column2 = new DistillationColumn(4, true, true); + * column2.addFeedStream(heater.getOutStream(), 2); ((Reboiler) + * column2.getReboiler()).setRefluxRatio(0.01); ((Condenser) + * column2.getCondenser()).setRefluxRatio(0.01); + */ - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(column); - // operations.add(heater); - // operations.add(column2); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(column); + // operations.add(heater); + // operations.add(column2); - operations.run(); - // column.getReboiler().displayResult(); - // column.getCondenser().displayResult(); - // operations.displayResult(); - } + operations.run(); + // column.getReboiler().displayResult(); + // column.getCondenser().displayResult(); + // operations.displayResult(); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/gasPipeline.java b/src/test/java/neqsim/processSimulation/util/example/gasPipeline.java index 8596677852..88a8e835b8 100644 --- a/src/test/java/neqsim/processSimulation/util/example/gasPipeline.java +++ b/src/test/java/neqsim/processSimulation/util/example/gasPipeline.java @@ -59,7 +59,7 @@ public static void main(String args[]) { // operations.add(simplePipeline2phase); operations.run(); - pipeline.getOutletStream().displayResult(); + //pipeline.getOutletStream().displayResult(); // simplePipeline.getOutStream().displayResult(); // simplePipeline2phase.getOutStream().displayResult(); diff --git a/src/test/java/neqsim/processSimulation/util/example/multiThreadTest.java b/src/test/java/neqsim/processSimulation/util/example/multiThreadTest.java index 21f56e15c6..dbea2efd94 100644 --- a/src/test/java/neqsim/processSimulation/util/example/multiThreadTest.java +++ b/src/test/java/neqsim/processSimulation/util/example/multiThreadTest.java @@ -1,5 +1,7 @@ package neqsim.processSimulation.util.example; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.compressor.Compressor; import neqsim.processSimulation.processEquipment.heatExchanger.Cooler; import neqsim.processSimulation.processEquipment.mixer.MixerInterface; @@ -11,128 +13,132 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

multiThreadTest class.

+ *

+ * multiThreadTest class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class multiThreadTest { - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 20.00); - testSystem.addComponent("methane", 500.00); - testSystem.addComponent("ethane", 500.00); - testSystem.addComponent("CO2", 100.00); - testSystem.addComponent("water", 100.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - - Stream stream_1 = new Stream("Stream1", testSystem); - - MixerInterface mixer = new StaticMixer("Mixer 1"); - mixer.addStream(stream_1); - StreamInterface stream_3 = mixer.getOutletStream(); - stream_3.setName("stream3"); - - Separator separator = new Separator("Separator 1", stream_3); - StreamInterface stream_2 = separator.getGasOutStream(); - stream_2.setName("stream2"); - - Compressor comp1 = new Compressor("comp1", stream_2); - comp1.setOutletPressure(50.0); - - Cooler cooler1 = new Cooler("cooler1", comp1.getOutletStream()); - cooler1.setOutTemperature(283.15 + 30); - - // mixer.addStream(stream_2); - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(stream_2); - operations.add(mixer); - operations.add(stream_3); - operations.add(separator); - operations.add(comp1); - operations.add(cooler1); - - neqsim.thermo.system.SystemInterface testSystem2 = - new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 20.00); - testSystem2.addComponent("methane", 400.00); - testSystem2.addComponent("ethane", 4.00); - testSystem2.addComponent("CO2", 100.00); - testSystem2.addComponent("water", 100.0); - testSystem2.createDatabase(true); - testSystem2.setMixingRule(2); - - ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); - testOps2.TPflash(); - - Stream stream_22 = new Stream("Stream1", testSystem2); - - MixerInterface mixer2 = new StaticMixer("Mixer 1"); - mixer2.addStream(stream_22); - StreamInterface stream_32 = mixer2.getOutletStream(); - stream_32.setName("stream32"); - - Separator separator2 = new Separator("Separator 1", stream_32); - StreamInterface stream_222 = separator2.getGasOutStream(); - stream_222.setName("stream222"); - - Compressor comp12 = new Compressor("comp22", stream_222); - comp12.setOutletPressure(45.0); - - Cooler cooler12 = new Cooler("cooler12", comp12.getOutletStream()); - cooler12.setOutTemperature(283.15 + 30); - - Separator separator3 = new Separator("Separator 122", cooler12.getOutletStream()); - - Recycle resyc = new Recycle("resyc"); - resyc.addStream(separator3.getLiquidOutStream()); - - mixer2.addStream(resyc.getOutStream()); - - // mixer2.addStream(stream_222); - neqsim.processSimulation.processSystem.ProcessSystem operations2 = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations2.add(stream_22); - operations2.add(mixer2); - operations2.add(stream_32); - operations2.add(separator2); - operations2.add(comp12); - operations2.add(cooler12); - operations2.add(separator3); - operations2.add(resyc); - - long time = System.currentTimeMillis(); - - for (int i = 0; i < 1; i++) { - // operations.run(); - // operations2.run(); - Thread processThread1 = new Thread(operations); - Thread processThread2 = new Thread(operations2); - - processThread1.start(); - processThread2.start(); - - try { - processThread1.join(1000); - processThread2.join(1000); - } catch (Exception e) { - e.printStackTrace(); - } - } - // } while (processThread1.isAlive());// && processThread2.isAlive()); - - System.out.println("Time taken for simulation = " + (System.currentTimeMillis() - time)); - - ((Compressor) operations.getUnit("comp1")).displayResult(); - ((Compressor) operations2.getUnit("comp22")).displayResult(); - // operations2.displayResult(); + static Logger logger = LogManager.getLogger(multiThreadTest.class); + + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 20.00); + testSystem.addComponent("methane", 500.00); + testSystem.addComponent("ethane", 500.00); + testSystem.addComponent("CO2", 100.00); + testSystem.addComponent("water", 100.0); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + + Stream stream_1 = new Stream("Stream1", testSystem); + + MixerInterface mixer = new StaticMixer("Mixer 1"); + mixer.addStream(stream_1); + StreamInterface stream_3 = mixer.getOutletStream(); + stream_3.setName("stream3"); + + Separator separator = new Separator("Separator 1", stream_3); + StreamInterface stream_2 = separator.getGasOutStream(); + stream_2.setName("stream2"); + + Compressor comp1 = new Compressor("comp1", stream_2); + comp1.setOutletPressure(50.0); + + Cooler cooler1 = new Cooler("cooler1", comp1.getOutletStream()); + cooler1.setOutTemperature(283.15 + 30); + + // mixer.addStream(stream_2); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(stream_2); + operations.add(mixer); + operations.add(stream_3); + operations.add(separator); + operations.add(comp1); + operations.add(cooler1); + + neqsim.thermo.system.SystemInterface testSystem2 = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 20.00); + testSystem2.addComponent("methane", 400.00); + testSystem2.addComponent("ethane", 4.00); + testSystem2.addComponent("CO2", 100.00); + testSystem2.addComponent("water", 100.0); + testSystem2.createDatabase(true); + testSystem2.setMixingRule(2); + + ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); + testOps2.TPflash(); + + Stream stream_22 = new Stream("Stream1", testSystem2); + + MixerInterface mixer2 = new StaticMixer("Mixer 1"); + mixer2.addStream(stream_22); + StreamInterface stream_32 = mixer2.getOutletStream(); + stream_32.setName("stream32"); + + Separator separator2 = new Separator("Separator 1", stream_32); + StreamInterface stream_222 = separator2.getGasOutStream(); + stream_222.setName("stream222"); + + Compressor comp12 = new Compressor("comp22", stream_222); + comp12.setOutletPressure(45.0); + + Cooler cooler12 = new Cooler("cooler12", comp12.getOutletStream()); + cooler12.setOutTemperature(283.15 + 30); + + Separator separator3 = new Separator("Separator 122", cooler12.getOutletStream()); + + Recycle resyc = new Recycle("resyc"); + resyc.addStream(separator3.getLiquidOutStream()); + + mixer2.addStream(resyc.getOutletStream()); + + // mixer2.addStream(stream_222); + neqsim.processSimulation.processSystem.ProcessSystem operations2 = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations2.add(stream_22); + operations2.add(mixer2); + operations2.add(stream_32); + operations2.add(separator2); + operations2.add(comp12); + operations2.add(cooler12); + operations2.add(separator3); + operations2.add(resyc); + + long time = System.currentTimeMillis(); + + for (int i = 0; i < 1; i++) { + // operations.run(); + // operations2.run(); + Thread processThread1 = new Thread(operations); + Thread processThread2 = new Thread(operations2); + + processThread1.start(); + processThread2.start(); + + try { + processThread1.join(1000); + processThread2.join(1000); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } + // } while (processThread1.isAlive()); // && processThread2.isAlive()); + + logger.info("Time taken for simulation = " + (System.currentTimeMillis() - time)); + + ((Compressor) operations.getUnit("comp1")).displayResult(); + ((Compressor) operations2.getUnit("comp22")).displayResult(); + // operations2.displayResult(); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/oxygenRemovalWater.java b/src/test/java/neqsim/processSimulation/util/example/oxygenRemovalWater.java index 6b75c72090..ae1d10817f 100644 --- a/src/test/java/neqsim/processSimulation/util/example/oxygenRemovalWater.java +++ b/src/test/java/neqsim/processSimulation/util/example/oxygenRemovalWater.java @@ -5,6 +5,7 @@ import neqsim.processSimulation.processEquipment.separator.Separator; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.thermo.ThermodynamicConstantsInterface; /** *

oxygenRemovalWater class.

@@ -20,15 +21,15 @@ public class oxygenRemovalWater { * @param args an array of {@link java.lang.String} objects */ public static void main(String[] args) { - neqsim.thermo.Fluid.setHasWater(true); - neqsim.thermo.system.SystemInterface fluid1 = - neqsim.thermo.Fluid.create("air").autoSelectModel(); + neqsim.thermo.Fluid fluidCreator = new neqsim.thermo.Fluid(); + fluidCreator.setHasWater(true); + neqsim.thermo.system.SystemInterface fluid1 = fluidCreator.create("air").autoSelectModel(); fluid1.setMultiPhaseCheck(true); - neqsim.thermo.system.SystemInterface fluid2 = neqsim.thermo.Fluid.create("water"); - fluid1.setPressure(1.01325); + neqsim.thermo.system.SystemInterface fluid2 = fluidCreator.create("water"); + fluid1.setPressure(ThermodynamicConstantsInterface.referencePressure); fluid1.setTemperature(273.15 + 10); fluid1.setTotalFlowRate(1.0, "kg/hr"); - fluid2.setPressure(1.01325); + fluid2.setPressure(ThermodynamicConstantsInterface.referencePressure); fluid2.setTemperature(273.15 + 10); fluid2.setTotalFlowRate(3500.0, "kg/hr"); diff --git a/src/test/java/neqsim/processSimulation/util/example/process1Test.java b/src/test/java/neqsim/processSimulation/util/example/process1Test.java index 44463b71fb..7395fe6103 100644 --- a/src/test/java/neqsim/processSimulation/util/example/process1Test.java +++ b/src/test/java/neqsim/processSimulation/util/example/process1Test.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import neqsim.processSimulation.processEquipment.stream.Stream; -class process1Test { +class process1Test extends neqsim.NeqSimTest { static neqsim.thermo.system.SystemInterface testSystem; static neqsim.processSimulation.processSystem.ProcessSystem operations; diff --git a/src/test/java/neqsim/processSimulation/util/example/shtokman.java b/src/test/java/neqsim/processSimulation/util/example/shtokman.java index 9a74ecf9f8..4a6e1e0ad1 100644 --- a/src/test/java/neqsim/processSimulation/util/example/shtokman.java +++ b/src/test/java/neqsim/processSimulation/util/example/shtokman.java @@ -5,76 +5,76 @@ import neqsim.processSimulation.processEquipment.stream.StreamInterface; /** - *

shtokman class.

+ *

+ * shtokman class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class shtokman { - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - neqsim.thermo.system.SystemInterface testSystem = new neqsim.thermo.system.SystemSrkCPAs((273.15 + 35.0), - 135.00); + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkCPAs((273.15 + 35.0), 135.00); - // testSystem.addComponent("MEG", 30.0); - testSystem.addComponent("CO2", 10.44); - testSystem.addComponent("methane", 0.1); - // testSystem.addComponent("ethane", 2.0); + // testSystem.addComponent("MEG", 30.0); + testSystem.addComponent("CO2", 10.44); + testSystem.addComponent("methane", 0.1); + // testSystem.addComponent("ethane", 2.0); - testSystem.addComponent("TEG", 11.0); + testSystem.addComponent("TEG", 11.0); - testSystem.addComponent("water", 0.101); + testSystem.addComponent("water", 0.101); - testSystem.createDatabase(true); - testSystem.setMixingRule(7); + testSystem.createDatabase(true); + testSystem.setMixingRule(7); - // ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); - // ops.TPflash(); - // testSystem.display(); - Stream stream_1 = new Stream("Stream1", testSystem); + // ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + // ops.TPflash(); + // testSystem.display(); + Stream stream_1 = new Stream("Stream1", testSystem); - Separator separator = new Separator("Separator 1", stream_1); - StreamInterface stream_2 = separator.getGasOutStream(); + Separator separator = new Separator("Separator 1", stream_1); + StreamInterface stream_2 = separator.getGasOutStream(); - neqsim.processSimulation.processEquipment.heatExchanger.Heater heater = - new neqsim.processSimulation.processEquipment.heatExchanger.Heater("heater", - stream_2); - heater.setOutTemperature(273.15 + 35); - heater.setPressureDrop(134); - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(separator); - operations.add(stream_2); - operations.add(heater); - operations.run(); - operations.displayResult(); + neqsim.processSimulation.processEquipment.heatExchanger.Heater heater = + new neqsim.processSimulation.processEquipment.heatExchanger.Heater("heater", stream_2); + heater.setOutTemperature(273.15 + 35); + heater.setPressureDrop(134); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(separator); + operations.add(stream_2); + operations.add(heater); + operations.run(); + operations.displayResult(); - // stream_2.getThermoSystem().setPressure(30.0); - // stream_2.getThermoSystem().setTemperature(273.15 - 0); - // stream_2.getThermoSystem().setHydrateCheck(true); - // stream_2.getThermoSystem().init(0); - // ThermodynamicOperations ops = new ThermodynamicOperations(stream_2.getThermoSystem()); - /* - * try { // ops.TPflash(); - * - * ops.waterPrecipitationTemperature(); stream_2.getThermoSystem().display(); - * stream_2.getThermoSystem().init(0); ops.hydrateFormationTemperature(2); - * stream_2.getThermoSystem().display(); // stream_2.getThermoSystem().display(); // - * stream_2.getThermoSystem().setTemperature(250.0); // ops.dewPointTemperatureFlash(); } - * catch (Exception ex) { ex.printStackTrace(); } double wtMEG = - * stream_2.getThermoSystem().getPhase(1).getComponent("MEG").getx()*stream_2. - * getThermoSystem().getPhase(1).getComponent("MEG").getMolarMass(); double wtwater = - * stream_2.getThermoSystem().getPhase(1).getComponent("water").getx()*stream_2. - * getThermoSystem().getPhase(1).getComponent("water").getMolarMass(); - * - * System.out.println("wt% MEG " + wtMEG/(wtMEG+wtwater)*100); // - * operations.displayResult(); - */ - } + // stream_2.getThermoSystem().setPressure(30.0); + // stream_2.getThermoSystem().setTemperature(273.15 - 0); + // stream_2.getThermoSystem().setHydrateCheck(true); + // stream_2.getThermoSystem().init(0); + // ThermodynamicOperations ops = new ThermodynamicOperations(stream_2.getThermoSystem()); + /* + * try { // ops.TPflash(); + * + * ops.waterPrecipitationTemperature(); stream_2.getThermoSystem().display(); + * stream_2.getThermoSystem().init(0); ops.hydrateFormationTemperature(2); + * stream_2.getThermoSystem().display(); // stream_2.getThermoSystem().display(); // + * stream_2.getThermoSystem().setTemperature(250.0); // ops.dewPointTemperatureFlash(); } catch + * (Exception ex) { logger.error(ex.getMessage(), ex); } double wtMEG = + * stream_2.getThermoSystem().getPhase(1).getComponent("MEG").getx()*stream_2. + * getThermoSystem().getPhase(1).getComponent("MEG").getMolarMass(); double wtwater = + * stream_2.getThermoSystem().getPhase(1).getComponent("water").getx()*stream_2. + * getThermoSystem().getPhase(1).getComponent("water").getMolarMass(); + * + * System.out.println("wt% MEG " + wtMEG/(wtMEG+wtwater)*100); // operations.displayResult(); + */ + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/shtokman_MEG.java b/src/test/java/neqsim/processSimulation/util/example/shtokman_MEG.java index 8bf0246bc1..6254feacf6 100644 --- a/src/test/java/neqsim/processSimulation/util/example/shtokman_MEG.java +++ b/src/test/java/neqsim/processSimulation/util/example/shtokman_MEG.java @@ -1,63 +1,69 @@ package neqsim.processSimulation.util.example; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.separator.Separator; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

shtokman_MEG class.

+ *

+ * shtokman_MEG class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class shtokman_MEG { - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkCPAstatoil((273.15 + 42.0), 130.00); - testSystem.addComponent("methane", 1.0); - // testSystem.addComponent("ethane", 10.039); - // testSystem.addComponent("propane", 5.858); - testSystem.addComponent("water", 0.7); - testSystem.addComponent("MEG", 0.3); - testSystem.createDatabase(true); - testSystem.setMixingRule(9); - - Stream stream_1 = new Stream("Stream1", testSystem); - - Separator separator = new Separator("Separator 1", stream_1); - StreamInterface stream_2 = separator.getGasOutStream(); - - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - try { - operations.add(separator); - } finally { - } - operations.add(stream_2); - - operations.run(); - - stream_2.getThermoSystem().setPressure(130.0); - stream_2.getThermoSystem().setTemperature(273.15 + 39.0); - stream_2.getThermoSystem().init(0); - ThermodynamicOperations ops = new ThermodynamicOperations(stream_2.getThermoSystem()); - try { - ops.TPflash(); - // stream_2.getThermoSystem().display(); - // stream_2.getThermoSystem().setTemperature(250.0); - // ops.dewPointTemperatureFlash(); - } catch (Exception ex) { - ex.printStackTrace(); - } - System.out.println("temp " + stream_2.getThermoSystem().getTemperature()); - operations.displayResult(); + static Logger logger = LogManager.getLogger(shtokman_MEG.class); + + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkCPAstatoil((273.15 + 42.0), 130.00); + testSystem.addComponent("methane", 1.0); + // testSystem.addComponent("ethane", 10.039); + // testSystem.addComponent("propane", 5.858); + testSystem.addComponent("water", 0.7); + testSystem.addComponent("MEG", 0.3); + testSystem.createDatabase(true); + testSystem.setMixingRule(9); + + Stream stream_1 = new Stream("Stream1", testSystem); + + Separator separator = new Separator("Separator 1", stream_1); + StreamInterface stream_2 = separator.getGasOutStream(); + + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + try { + operations.add(separator); + } finally { + } + operations.add(stream_2); + + operations.run(); + + stream_2.getThermoSystem().setPressure(130.0); + stream_2.getThermoSystem().setTemperature(273.15 + 39.0); + stream_2.getThermoSystem().init(0); + ThermodynamicOperations ops = new ThermodynamicOperations(stream_2.getThermoSystem()); + try { + ops.TPflash(); + // stream_2.getThermoSystem().display(); + // stream_2.getThermoSystem().setTemperature(250.0); + // ops.dewPointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + System.out.println("temp " + stream_2.getThermoSystem().getTemperature()); + operations.displayResult(); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/simpleGasScrubber.java b/src/test/java/neqsim/processSimulation/util/example/simpleGasScrubber.java index 8da90b91aa..fcc028f209 100644 --- a/src/test/java/neqsim/processSimulation/util/example/simpleGasScrubber.java +++ b/src/test/java/neqsim/processSimulation/util/example/simpleGasScrubber.java @@ -5,51 +5,53 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

simpleGasScrubber class.

+ *

+ * simpleGasScrubber class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class simpleGasScrubber { - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 20.00); - testSystem.addComponent("methane", 1200.00); - testSystem.addComponent("water", 1200.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 25.0), 20.00); + testSystem.addComponent("methane", 1200.00); + testSystem.addComponent("water", 1200.0); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); - Stream stream_1 = new Stream("Stream1", testSystem); + Stream stream_1 = new Stream("Stream1", testSystem); - GasScrubberSimple gasScrubber = new GasScrubberSimple("Scrubber", stream_1); - // gasScrubber.addScrubberSection("mesh"); - // gasScrubber.addScrubberSection("mesh2"); - Stream stream_2 = new Stream("gas from scrubber", gasScrubber.getGasOutStream()); - Stream stream_3 = new Stream("liquid from scrubber", gasScrubber.getLiquidOutStream()); + GasScrubberSimple gasScrubber = new GasScrubberSimple("Scrubber", stream_1); + // gasScrubber.addScrubberSection("mesh"); + // gasScrubber.addScrubberSection("mesh2"); + Stream stream_2 = new Stream("gas from scrubber", gasScrubber.getGasOutStream()); + Stream stream_3 = new Stream("liquid from scrubber", gasScrubber.getLiquidOutStream()); - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(gasScrubber); - operations.add(stream_2); - operations.add(stream_3); - operations.run(); - // operations.displayResult(); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(gasScrubber); + operations.add(stream_2); + operations.add(stream_3); + operations.run(); + // operations.displayResult(); - operations.getSystemMechanicalDesign().setCompanySpecificDesignStandards("StatoilTR"); + // operations.getSystemMechanicalDesign().setCompanySpecificDesignStandards("StatoilTR"); - // gasScrubber.getMechanicalDesign().calcDesign(); - // gasScrubber.getMechanicalDesign().displayResults(); - operations.getSystemMechanicalDesign().runDesignCalculation(); - double vol = operations.getSystemMechanicalDesign().getTotalVolume(); - } + // gasScrubber.getMechanicalDesign().calcDesign(); + // gasScrubber.getMechanicalDesign().displayResults(); + // operations.getSystemMechanicalDesign().runDesignCalculation(); + // double vol = operations.getSystemMechanicalDesign().getTotalVolume(); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/simpleTopSideProcess2.java b/src/test/java/neqsim/processSimulation/util/example/simpleTopSideProcess2.java index a25343fe69..cfc79998e0 100644 --- a/src/test/java/neqsim/processSimulation/util/example/simpleTopSideProcess2.java +++ b/src/test/java/neqsim/processSimulation/util/example/simpleTopSideProcess2.java @@ -8,67 +8,68 @@ import neqsim.processSimulation.processEquipment.util.Recycle; /** - *

simpleTopSideProcess2 class.

+ *

+ * simpleTopSideProcess2 class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class simpleTopSideProcess2 { - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - neqsim.thermo.Fluid.setHasWater(true); - neqsim.thermo.system.SystemInterface fluid = neqsim.thermo.Fluid.create("gas condensate"); - fluid.setTemperature(45.0, "C"); - fluid.setPressure(5.0, "bara"); - Stream stream_inlet = new Stream("Stream1", fluid); + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + neqsim.thermo.Fluid fluidCreator = new neqsim.thermo.Fluid(); + fluidCreator.setHasWater(true); + neqsim.thermo.system.SystemInterface fluid = fluidCreator.create("gas condensate"); + fluid.setTemperature(45.0, "C"); + fluid.setPressure(5.0, "bara"); + Stream stream_inlet = new Stream("Stream1", fluid); - Mixer mixer_inlet = - new neqsim.processSimulation.processEquipment.mixer.StaticMixer("Mixer HP"); - mixer_inlet.addStream(stream_inlet); + Mixer mixer_inlet = new neqsim.processSimulation.processEquipment.mixer.StaticMixer("Mixer HP"); + mixer_inlet.addStream(stream_inlet); - ThreePhaseSeparator separator_inlet = - new ThreePhaseSeparator("Separator 1", mixer_inlet.getOutletStream()); + ThreePhaseSeparator separator_inlet = + new ThreePhaseSeparator("Separator 1", mixer_inlet.getOutletStream()); - Stream stream_gasFromSep = - new Stream("stream_gasFromSep", separator_inlet.getGasOutStream()); + Stream stream_gasFromSep = new Stream("stream_gasFromSep", separator_inlet.getGasOutStream()); - Heater cooler1 = new Heater("cooler1", stream_gasFromSep); - cooler1.setOutTemperature(285.25); + Heater cooler1 = new Heater("cooler1", stream_gasFromSep); + cooler1.setOutTemperature(285.25); - Separator scrubber = new Separator("Scrubber 1", cooler1.getOutletStream()); + Separator scrubber = new Separator("Scrubber 1", cooler1.getOutletStream()); - Recycle recyleOp = new Recycle("resyc"); - recyleOp.addStream(scrubber.getLiquidOutStream()); - mixer_inlet.addStream(recyleOp.getOutStream()); + Recycle recyleOp = new Recycle("resyc"); + recyleOp.addStream(scrubber.getLiquidOutStream()); + mixer_inlet.addStream(recyleOp.getOutletStream()); - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_inlet); - operations.add(mixer_inlet); - operations.add(separator_inlet); - operations.add(stream_gasFromSep); - operations.add(cooler1); - operations.add(scrubber); - operations.add(recyleOp); - operations.run(); - scrubber.displayResult(); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_inlet); + operations.add(mixer_inlet); + operations.add(separator_inlet); + operations.add(stream_gasFromSep); + operations.add(cooler1); + operations.add(scrubber); + operations.add(recyleOp); + operations.run(); + scrubber.displayResult(); - stream_inlet.getThermoSystem().setTemperature(273.15 + 35.0); - operations.run(); + stream_inlet.getThermoSystem().setTemperature(273.15 + 35.0); + operations.run(); - // scrubber.displayResult(); + // scrubber.displayResult(); - stream_inlet.getThermoSystem().setTemperature(273.15 + 30.0); - operations.run(); - // scrubber.displayResult(); + stream_inlet.getThermoSystem().setTemperature(273.15 + 30.0); + operations.run(); + // scrubber.displayResult(); - stream_inlet.getThermoSystem().setTemperature(273.15 + 16.0); - operations.run(); - // scrubber.displayResult(); - } + stream_inlet.getThermoSystem().setTemperature(273.15 + 16.0); + operations.run(); + // scrubber.displayResult(); + } } diff --git a/src/test/java/neqsim/processSimulation/util/example/testGasScrubber.java b/src/test/java/neqsim/processSimulation/util/example/testGasScrubber.java index 1b1b59caba..6a602a7d72 100644 --- a/src/test/java/neqsim/processSimulation/util/example/testGasScrubber.java +++ b/src/test/java/neqsim/processSimulation/util/example/testGasScrubber.java @@ -1,109 +1,117 @@ package neqsim.processSimulation.util.example; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.processSimulation.processEquipment.pipeline.AdiabaticPipe; import neqsim.processSimulation.processEquipment.separator.GasScrubberSimple; import neqsim.processSimulation.processEquipment.stream.Stream; import neqsim.processSimulation.processEquipment.stream.StreamInterface; /** - *

testGasScrubber class.

+ *

+ * testGasScrubber class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class testGasScrubber { - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - neqsim.thermo.system.SystemInterface testSystem = - new neqsim.thermo.system.SystemSrkEos((273.15 + 20.0), 66.00); - testSystem.addComponent("methane", 600e3, "kg/hr"); - testSystem.addComponent("ethane", 7.00e3, "kg/hr"); - testSystem.addComponent("propane", 12.0e3, "kg/hr"); - testSystem.addComponent("water", 10.0e3, "kg/hr"); - // testSystem.addComponent("water", 20.00e3, "kg/hr"); - // testSystem.addComponent("water", 2000.00, "kg/hr"); - testSystem.createDatabase(true); - testSystem.setMultiPhaseCheck(true); - testSystem.setMixingRule(2); + static Logger logger = LogManager.getLogger(testGasScrubber.class); - Stream stream_1 = new Stream("Stream1", testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemSrkEos((273.15 + 20.0), 66.00); + testSystem.addComponent("methane", 600e3, "kg/hr"); + testSystem.addComponent("ethane", 7.00e3, "kg/hr"); + testSystem.addComponent("propane", 12.0e3, "kg/hr"); + testSystem.addComponent("water", 10.0e3, "kg/hr"); + // testSystem.addComponent("water", 20.00e3, "kg/hr"); + // testSystem.addComponent("water", 2000.00, "kg/hr"); + testSystem.createDatabase(true); + testSystem.setMultiPhaseCheck(true); + testSystem.setMixingRule(2); - GasScrubberSimple scrubber = new GasScrubberSimple("scrubber", stream_1); - scrubber.setInternalDiameter(3.750); - scrubber.setSeparatorLength(4.0); - scrubber.getMechanicalDesign().setMaxOperationPressure(70.0); + Stream stream_1 = new Stream("Stream1", testSystem); - scrubber.addSeparatorSection("bottom manway", "manway"); - scrubber.addSeparatorSection("dp nozzle 1", "nozzle"); - scrubber.getSeparatorSection("dp nozzle 1").getMechanicalDesign().setNominalSize("DN 100"); - scrubber.addSeparatorSection("dp nozzle 2", "nozzle"); - scrubber.getSeparatorSection("dp nozzle 2").getMechanicalDesign().setNominalSize("DN 100"); - scrubber.addSeparatorSection("inlet vane", "vane"); - scrubber.getSeparatorSection("inlet vane").setCalcEfficiency(true); - scrubber.addSeparatorSection("top mesh", "meshpad"); - scrubber.getSeparatorSection(1).setCalcEfficiency(true); - scrubber.addSeparatorSection("top manway", "manway"); - scrubber.getSeparatorSection("top manway").getMechanicalDesign().setANSIclass(300); - scrubber.getSeparatorSection("top manway").getMechanicalDesign().setNominalSize("DN 500"); + GasScrubberSimple scrubber = new GasScrubberSimple("scrubber", stream_1); + scrubber.setInternalDiameter(3.750); + scrubber.setSeparatorLength(4.0); + scrubber.getMechanicalDesign().setMaxOperationPressure(70.0); - Stream stream_2 = new Stream("stream_2", scrubber.getGasOutStream()); + scrubber.addSeparatorSection("bottom manway", "manway"); + scrubber.addSeparatorSection("dp nozzle 1", "nozzle"); + scrubber.getSeparatorSection("dp nozzle 1").getMechanicalDesign().setNominalSize("DN 100"); + scrubber.addSeparatorSection("dp nozzle 2", "nozzle"); + scrubber.getSeparatorSection("dp nozzle 2").getMechanicalDesign().setNominalSize("DN 100"); + scrubber.addSeparatorSection("inlet vane", "vane"); + scrubber.getSeparatorSection("inlet vane").setCalcEfficiency(true); + scrubber.addSeparatorSection("top mesh", "meshpad"); + scrubber.getSeparatorSection(1).setCalcEfficiency(true); + scrubber.addSeparatorSection("top manway", "manway"); + scrubber.getSeparatorSection("top manway").getMechanicalDesign().setANSIclass(300); + scrubber.getSeparatorSection("top manway").getMechanicalDesign().setNominalSize("DN 500"); - AdiabaticPipe pipe = new AdiabaticPipe("pipe", stream_2); - pipe.setDiameter(0.4); - pipe.setLength(10); + Stream stream_2 = new Stream("stream_2", scrubber.getGasOutStream()); - StreamInterface stream_3 = pipe.getOutletStream(); + AdiabaticPipe pipe = new AdiabaticPipe("pipe", stream_2); + pipe.setDiameter(0.4); + pipe.setLength(10); - neqsim.processSimulation.processSystem.ProcessSystem operations = - new neqsim.processSimulation.processSystem.ProcessSystem(); - operations.add(stream_1); - operations.add(scrubber); - operations.add(stream_2); - operations.add(pipe); - operations.add(stream_3); - operations.run(); - operations.displayResult(); - scrubber.getGasLoadFactor(); + StreamInterface stream_3 = pipe.getOutletStream(); - // do design of process - operations.getSystemMechanicalDesign().setCompanySpecificDesignStandards("StatoilTR"); + neqsim.processSimulation.processSystem.ProcessSystem operations = + new neqsim.processSimulation.processSystem.ProcessSystem(); + operations.add(stream_1); + operations.add(scrubber); + operations.add(stream_2); + operations.add(pipe); + operations.add(stream_3); + operations.run(); + operations.displayResult(); + scrubber.getGasLoadFactor(); - // operations.runProcessDesignCalculation(); - // prosessdesign do: calculate flow rates of TEG, amine, calculates heat duty - // requirements, compressor power requirements, number of trays, packing height, - // numner of theoretical stages, - // operations.runMechanicalDesignCalculation(); - // calculates diameters of colums, wall thickness, weight, size of equipment, - // tray spacing - operations.getSystemMechanicalDesign().runDesignCalculation(); - operations.getSystemMechanicalDesign().setDesign(); - operations.run(); - scrubber.getGasLoadFactor(); - // operations.calcDesign(); - scrubber.getMechanicalDesign().calcDesign(); - // scrubber.getMechanicalDesign().setDesignStandard("ASME - Pressure Vessel - // Code"); - // scrubber.getMechanicalDesign().setDesignStandard("BS 5500 - Pressure - // Vessel"); + // do design of process + // operations.getSystemMechanicalDesign().setCompanySpecificDesignStandards("StatoilTR"); - System.out.println("vane top veight " + scrubber.getSeparatorSection("inlet vane") - .getMechanicalDesign().getTotalWeight()); + // operations.runProcessDesignCalculation(); + // prosessdesign do: calculate flow rates of TEG, amine, calculates heat duty + // requirements, compressor power requirements, number of trays, packing height, + // numner of theoretical stages, + // operations.runMechanicalDesignCalculation(); + // calculates diameters of colums, wall thickness, weight, size of equipment, + // tray spacing + // operations.getSystemMechanicalDesign().runDesignCalculation(); + // operations.getSystemMechanicalDesign().setDesign(); + operations.run(); + scrubber.getGasLoadFactor(); + // operations.calcDesign(); + scrubber.getMechanicalDesign().calcDesign(); + // scrubber.getMechanicalDesign().setDesignStandard("ASME - Pressure Vessel + // Code"); + // scrubber.getMechanicalDesign().setDesignStandard("BS 5500 - Pressure + // Vessel"); - System.out.println("curryover " + scrubber.calcLiquidCarryoverFraction()); - System.out.println("gas vel " + scrubber.getGasSuperficialVelocity()); - System.out.println("gas load factor oil " + scrubber.getGasLoadFactor()); - // System.out.println("gas load factor water " + scrubber.getGasLoadFactor(2)); - System.out.println("derated gas load factor oil " + scrubber.getDeRatedGasLoadFactor()); - // System.out.println("derated gas load factor water " + - // scrubber.getDeRatedGasLoadFactor(2)); + logger.info("vane top veight " + + scrubber.getSeparatorSection("inlet vane").getMechanicalDesign().getTotalWeight()); - System.out.println("minimum liquid seal height " - + scrubber.getSeparatorSection(0).getMinimumLiquidSealHeight()); - scrubber.getMechanicalDesign().displayResults(); - } + logger.info("curryover " + scrubber.calcLiquidCarryoverFraction()); + logger.info("gas vel " + scrubber.getGasSuperficialVelocity()); + logger.info("gas load factor oil " + scrubber.getGasLoadFactor()); + // logger.info("gas load factor water " + scrubber.getGasLoadFactor(2)); + logger.info("derated gas load factor oil " + scrubber.getDeRatedGasLoadFactor()); + // logger.info("derated gas load factor water " + + // scrubber.getDeRatedGasLoadFactor(2)); + + logger.info("minimum liquid seal height " + + scrubber.getSeparatorSection(0).getMinimumLiquidSealHeight()); + scrubber.getMechanicalDesign().displayResults(); + } } diff --git a/src/test/java/neqsim/processSimulation/util/monitor/SeparatorResponseTest.java b/src/test/java/neqsim/processSimulation/util/monitor/SeparatorResponseTest.java new file mode 100644 index 0000000000..2bed73840c --- /dev/null +++ b/src/test/java/neqsim/processSimulation/util/monitor/SeparatorResponseTest.java @@ -0,0 +1,64 @@ +package neqsim.processSimulation.util.monitor; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import neqsim.processSimulation.processEquipment.heatExchanger.HeatExchanger; +import neqsim.processSimulation.processEquipment.pump.Pump; +import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processSystem.ProcessSystem; +import neqsim.thermo.system.SystemSrkEos; + +public class SeparatorResponseTest { + @Test + void testWrite() { + SystemSrkEos testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("n-heptane", 100.0); + testSystem.addComponent("water", 100.0); + testSystem.setMixingRule("classic"); + testSystem.setMultiPhaseCheck(true); + + ProcessSystem processOps = new ProcessSystem(); + + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("feed stream"); + inletStream.setPressure(10.0, "bara"); + inletStream.setTemperature(20.0, "C"); + inletStream.setFlowRate(290.0, "kg/hr"); + + Separator separator = new Separator("two phase separator", inletStream); + separator.setInternalDiameter(0.05); + + ThreePhaseSeparator separator3phase = + new ThreePhaseSeparator("three phase separator", inletStream); + separator3phase.setInternalDiameter(0.05); + + HeatExchanger hx1 = new HeatExchanger("E-100", separator3phase.getGasOutStream()); + hx1.setGuessOutTemperature(273.15 + 35.0); + hx1.setUAvalue(444000.2); + hx1.setFeedStream(1, separator3phase.getOilOutStream()); + + Pump pump1 = new Pump("pump", separator3phase.getOilOutStream()); + pump1.setOutletPressure(100.0); + + processOps.add(inletStream); + processOps.add(separator); + processOps.add(separator3phase); + // processOps.add(hx1); + processOps.add(pump1); + processOps.run(); + + String sepjson = separator.toJson(); + String sep3json = separator3phase.toJson(); + String hxjson = hx1.toJson(); + String pumpjson = pump1.toJson(); + JsonObject jsonObject = JsonParser.parseString(sep3json).getAsJsonObject(); + Double reldens = jsonObject.getAsJsonObject("feed").getAsJsonObject("properties") + .getAsJsonObject("oil").getAsJsonObject("relative density").get("value").getAsDouble(); + assertEquals(0.688292615281, reldens, 0.01); + } +} diff --git a/src/test/java/neqsim/processSimulation/util/report/FluidCompinentReportTest.java b/src/test/java/neqsim/processSimulation/util/report/FluidCompinentReportTest.java new file mode 100644 index 0000000000..6e62020a1d --- /dev/null +++ b/src/test/java/neqsim/processSimulation/util/report/FluidCompinentReportTest.java @@ -0,0 +1,21 @@ +package neqsim.processSimulation.util.report; + +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemSrkEos; + +public class FluidCompinentReportTest { + @Test + void testWrite() { + SystemSrkEos testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("n-heptane", 100.0); + testSystem.setMixingRule("classic"); + testSystem.setMultiPhaseCheck(true); + + String report = testSystem.toCompJson(); + // System.out.println(report); + neqsim.util.unit.Units.activateFieldUnits(); + report = testSystem.toCompJson(); + // System.out.println(report); + } +} diff --git a/src/test/java/neqsim/processSimulation/util/report/FluidReportTest.java b/src/test/java/neqsim/processSimulation/util/report/FluidReportTest.java new file mode 100644 index 0000000000..9e62b209aa --- /dev/null +++ b/src/test/java/neqsim/processSimulation/util/report/FluidReportTest.java @@ -0,0 +1,24 @@ +package neqsim.processSimulation.util.report; + +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class FluidReportTest { + @Test + void testWrite() { + SystemSrkEos testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("n-heptane", 100.0); + testSystem.setMixingRule("classic"); + testSystem.setMultiPhaseCheck(true); + ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + ops.TPflash(); + + String report = testSystem.toJson(); + // System.out.println(report); + neqsim.util.unit.Units.activateFieldUnits(); + report = testSystem.toJson(); + // System.out.println(report); + } +} diff --git a/src/test/java/neqsim/processSimulation/util/report/ReportTest.java b/src/test/java/neqsim/processSimulation/util/report/ReportTest.java new file mode 100644 index 0000000000..da176a1998 --- /dev/null +++ b/src/test/java/neqsim/processSimulation/util/report/ReportTest.java @@ -0,0 +1,59 @@ +package neqsim.processSimulation.util.report; + +import org.junit.jupiter.api.Test; +import neqsim.processSimulation.processEquipment.compressor.Compressor; +import neqsim.processSimulation.processEquipment.mixer.Mixer; +import neqsim.processSimulation.processEquipment.separator.Separator; +import neqsim.processSimulation.processEquipment.stream.Stream; +import neqsim.processSimulation.processEquipment.valve.ThrottlingValve; +import neqsim.processSimulation.processSystem.ProcessSystem; +import neqsim.thermo.system.SystemSrkEos; + +public class ReportTest { + @Test + void testWrite() { + SystemSrkEos testSystem = new SystemSrkEos(298.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("n-heptane", 100.0); + testSystem.setMixingRule("classic"); + testSystem.setMultiPhaseCheck(true); + + ProcessSystem processOps = new ProcessSystem(); + + Stream inletStream = new Stream("inletStream", testSystem); + inletStream.setName("feed stream"); + inletStream.setPressure(10.0, "bara"); + inletStream.setTemperature(20.0, "C"); + inletStream.setFlowRate(100.0, "kg/hr"); + + Separator separator = new Separator("two phase separator", inletStream); + + Compressor compressor = new Compressor("gas compressor", separator.getGasOutStream()); + compressor.setOutletPressure(20.0, "bara"); + + ThrottlingValve valve = new ThrottlingValve("valve 1", separator.getLiquidOutStream()); + valve.setOutletPressure(1.0, "bara"); + + Mixer mixer1 = new Mixer("mixer 1"); + mixer1.addStream(valve.getOutletStream()); + + processOps.add(inletStream); + processOps.add(separator); + processOps.add(compressor); + processOps.add(valve); + processOps.add(mixer1); + processOps.run(); + + Report report = new Report(processOps); + String obj = report.generateJsonReport(); + neqsim.util.unit.Units.activateFieldUnits(); + String obj2 = report.generateJsonReport(); + // System.out.println(obj2); + neqsim.util.unit.Units.activateSIUnits(); + // reporting from process Object + String processreportasjson = processOps.getReport_json(); + // System.out.println(processreportasjson); + // report stream + String streamreportasjson = inletStream.getReport_json(); + } +} diff --git a/src/test/java/neqsim/standards/gasQuality/Standard_ISO15403Test.java b/src/test/java/neqsim/standards/gasQuality/Standard_ISO15403Test.java new file mode 100644 index 0000000000..900771490f --- /dev/null +++ b/src/test/java/neqsim/standards/gasQuality/Standard_ISO15403Test.java @@ -0,0 +1,68 @@ +package neqsim.standards.gasQuality; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class Standard_ISO15403Test { + private static SystemInterface testSystem = null; + private static Standard_ISO15403 ISO15403 = null; + + /** + * @throws java.lang.Exception + */ + @BeforeAll + static void setUpBeforeClass() throws Exception { + testSystem = new SystemSrkEos(273.15 + 20.0, 1.0); + testSystem.addComponent("methane", 0.82); + testSystem.addComponent("ethane", 0.1); + testSystem.addComponent("propane", 0.01); + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.setMixingRule("classic"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + + ISO15403 = new Standard_ISO15403(testSystem); + ISO15403.calculate(); + } + + @Test + void testCalculate() { + ISO15403.calculate(); + } + + @Test + void testGetUnit() { + assertEquals("", ISO15403.getUnit("MON")); + assertEquals("", ISO15403.getUnit("NM")); + } + + @Test + void testGetValue() { + assertEquals(75.8729229473, ISO15403.getValue("NM"), 1e-6); + assertEquals(124.078147368421, ISO15403.getValue("MON"), 1e-6); + + assertEquals(75.8729229473, ISO15403.getValue("NM", "-"), 1e-6); + assertEquals(124.078147368421, ISO15403.getValue("MON", "-"), 1e-6); + } + + @Test + void testIsOnSpec() { + assertEquals(true, ISO15403.isOnSpec()); + } + + @Test + @Disabled + void testDisplay() { + Standard_ISO15403 s = new Standard_ISO15403(null); + s.display("test"); + + s = new Standard_ISO15403(testSystem); + s.display("test"); + } +} diff --git a/src/test/java/neqsim/standards/gasQuality/Standard_ISO6578Test.java b/src/test/java/neqsim/standards/gasQuality/Standard_ISO6578Test.java index 3a8f3b8473..3f8b77a9c2 100644 --- a/src/test/java/neqsim/standards/gasQuality/Standard_ISO6578Test.java +++ b/src/test/java/neqsim/standards/gasQuality/Standard_ISO6578Test.java @@ -1,37 +1,64 @@ package neqsim.standards.gasQuality; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; -public class Standard_ISO6578Test extends neqsim.NeqSimTest{ - @Test - void testCalculate() { - SystemInterface testSystem = new SystemSrkEos(273.15 - 160.0, 1.0); - testSystem.addComponent("nitrogen", 0.006538); - testSystem.addComponent("methane", 0.91863); - testSystem.addComponent("ethane", 0.058382); - testSystem.addComponent("propane", 0.011993); - // testSystem.addComponent("i-butane", 0.00); - testSystem.addComponent("n-butane", 0.003255); - testSystem.addComponent("i-pentane", 0.000657); - testSystem.addComponent("n-pentane", 0.000545); - - testSystem.createDatabase(true); - // testSystem.setMultiphaseWaxCheck(true); - testSystem.setMixingRule(2); - - testSystem.init(0); - Standard_ISO6578 standard = new Standard_ISO6578(testSystem);// testSystem); - standard.calculate(); - //testSystem.display(); - - Assertions.assertEquals(0.30930700620842033, standard.getCorrFactor1()); - // ((Standard_ISO6578) standard).useISO6578VolumeCorrectionFacotrs(false); - - standard.calculate(); - Assertions.assertEquals(0.30930700620842033, standard.getCorrFactor1()); - // testSystem.display(); - } +public class Standard_ISO6578Test extends neqsim.NeqSimTest { + SystemInterface testSystem; + + @BeforeEach + void setUp() { + testSystem = new SystemSrkEos(273.15 - 160.0, 1.0); + testSystem.addComponent("nitrogen", 0.006538); + testSystem.addComponent("methane", 0.91863); + testSystem.addComponent("ethane", 0.058382); + testSystem.addComponent("propane", 0.011993); + // testSystem.addComponent("i-butane", 0.00); + testSystem.addComponent("n-butane", 0.003255); + testSystem.addComponent("i-pentane", 0.000657); + testSystem.addComponent("n-pentane", 0.000545); + } + + @Test + void testCalculate() { + SystemInterface testSystem = new SystemSrkEos(273.15 - 160.0, 1.0); + testSystem.addComponent("nitrogen", 0.006538); + testSystem.addComponent("methane", 0.91863); + testSystem.addComponent("ethane", 0.058382); + testSystem.addComponent("propane", 0.011993); + // testSystem.addComponent("i-butane", 0.00); + testSystem.addComponent("n-butane", 0.003255); + testSystem.addComponent("i-pentane", 0.000657); + testSystem.addComponent("n-pentane", 0.000545); + + testSystem.createDatabase(true); + // testSystem.setMultiphaseWaxCheck(true); + testSystem.setMixingRule(2); + + testSystem.init(0); + Standard_ISO6578 standard = new Standard_ISO6578(testSystem); // testSystem); + standard.calculate(); + // testSystem.display(); + + Assertions.assertEquals(0.30930700620842033, standard.getCorrFactor1()); + // ((Standard_ISO6578) standard).useISO6578VolumeCorrectionFacotrs(false); + + standard.calculate(); + Assertions.assertEquals(0.30930700620842033, standard.getCorrFactor1()); + // testSystem.display(); + } + + @Test + @Disabled + void testDisplay() { + Standard_ISO6578 s = new Standard_ISO6578(null); + s.display("test"); + + s = new Standard_ISO6578(testSystem); + s.display("test"); + } } diff --git a/src/test/java/neqsim/standards/gasQuality/Standard_ISO6976Test.java b/src/test/java/neqsim/standards/gasQuality/Standard_ISO6976Test.java index 161b3f3cf3..076cb9ae3a 100644 --- a/src/test/java/neqsim/standards/gasQuality/Standard_ISO6976Test.java +++ b/src/test/java/neqsim/standards/gasQuality/Standard_ISO6976Test.java @@ -1,11 +1,9 @@ -/** - * - */ package neqsim.standards.gasQuality; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; @@ -13,7 +11,6 @@ /** * @author ESOL - * */ class Standard_ISO6976Test extends neqsim.NeqSimTest { static SystemInterface testSystem = null; @@ -48,6 +45,32 @@ void testCalculate() { assertEquals(44.61477915805513, WI, 0.01); } + /** + * Test method for {@link neqsim.standards.gasQuality.Standard_ISO6976#calculate()} if wrong + * reference state is gven. Valid reference states should be 0, 15 and 20 C and 15F (15.55C). If + * wrong reference state is given, the program should use standard conditions (15C). + */ + @Test + void testCalculateWithWrongReferenceState() { + double volumeReferenceState = 0; + double energyReferenceState = 15.55; + Standard_ISO6976 standard = + new Standard_ISO6976(testSystem, volumeReferenceState, energyReferenceState, "volume"); + standard.setReferenceState("real"); + standard.setReferenceType("volume"); + standard.calculate(); + double GCV = standard.getValue("GCV"); + standard.getValue("WI"); + assertEquals(39614.56783352743, GCV, 0.01); + energyReferenceState = 15.15; // example of wrong reference condition + volumeReferenceState = 1.15; // example of wrong volume reference condition + standard.setEnergyRefT(energyReferenceState); + standard.setVolRefT(volumeReferenceState); + standard.calculate(); + GCV = standard.getValue("GCV"); + assertEquals(37499.35392575905, GCV, 0.01); + } + /** * Test method for {@link neqsim.standards.gasQuality.Standard_ISO6976#calculate()}. */ @@ -67,7 +90,7 @@ void testCalculateWithPSeudo() { standard.setReferenceType("volume"); standard.calculate(); double GCV = standard.getValue("GCV"); - double WI = standard.getValue("WI"); + standard.getValue("WI"); assertEquals(42377.76099372482, GCV, 0.01); } @@ -88,16 +111,13 @@ void testCalculate2() { * testSystem.addComponent("22-dim-C3", 0.001015); testSystem.addComponent("n-hexane", * 0.002865); testSystem.addComponent("nitrogen", 0.01023); testSystem.addComponent("CO2", * 0.015236); - * */ /* - * * testSystem.addComponent("methane", 0.9247); testSystem.addComponent("ethane", 0.035); * testSystem.addComponent("propane", 0.0098); testSystem.addComponent("n-butane", 0.0022); * testSystem.addComponent("i-butane", 0.0034); testSystem.addComponent("n-pentane", 0.0006); * testSystem.addComponent("nitrogen", 0.0175); testSystem.addComponent("CO2", 0.0068); - * */ // testSystem.addComponent("water", 0.016837); @@ -106,7 +126,7 @@ void testCalculate2() { * testSystem.addComponent("n-hexane", 0.0); testSystem.addComponent("n-heptane", 0.0); * testSystem.addComponent("n-octane", 0.0); testSystem.addComponent("n-nonane", 0.0); * testSystem.addComponent("nC10", 0.0); - * + * * testSystem.addComponent("CO2", 0.68); testSystem.addComponent("H2S", 0.0); * testSystem.addComponent("water", 0.0); testSystem.addComponent("oxygen", 0.0); * testSystem.addComponent("carbonmonoxide", 0.0); testSystem.addComponent("nitrogen", 1.75); @@ -135,13 +155,19 @@ void testCalculate2() { // standard.display("test"); /* * StandardInterface standardUK = new UKspecifications_ICF_SI(testSystem); - * standardUK.calculate(); System.out.println("ICF " + + * standardUK.calculate(); logger.info("ICF " + * standardUK.getValue("IncompleteCombustionFactor", "")); - * - * System.out.println("HID " + testSystem.getPhase(0).getComponent("methane").getHID(273.15 - - * 150.0)); System.out.println("Hres " + - * testSystem.getPhase(0).getComponent("methane").getHresTP(273.15 - 150.0)); + * + * logger.info("HID " + testSystem.getPhase(0).getComponent("methane").getHID(273.15 - 150.0)); + * logger.info("Hres " + testSystem.getPhase(0).getComponent("methane").getHresTP(273.15 - + * 150.0)); */ } + @Test + @Disabled + void testDisplay() { + Standard_ISO6976 s = new Standard_ISO6976(testSystem); + s.display("test"); + } } diff --git a/src/test/java/neqsim/standards/gasQuality/Standard_ISO6976_2016_Test.java b/src/test/java/neqsim/standards/gasQuality/Standard_ISO6976_2016_Test.java new file mode 100644 index 0000000000..645ff2638e --- /dev/null +++ b/src/test/java/neqsim/standards/gasQuality/Standard_ISO6976_2016_Test.java @@ -0,0 +1,141 @@ +package neqsim.standards.gasQuality; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + * @author ESOL + */ +class Standard_ISO6976_2016_Test extends neqsim.NeqSimTest { + static SystemInterface testSystem = null; + + /** + * @throws java.lang.Exception + */ + @BeforeAll + static void setUpBeforeClass() throws Exception { + testSystem = new SystemSrkEos(273.15 + 20.0, 1.0); + testSystem.addComponent("methane", 0.931819); + testSystem.addComponent("ethane", 0.025618); + testSystem.addComponent("nitrogen", 0.010335); + testSystem.addComponent("CO2", 0.015391); + testSystem.setMixingRule("classic"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + } + + /** + * Test method for {@link neqsim.standards.gasQuality.Standard_ISO6976#calculate()}. + */ + @Test + void testCalculate() { + Standard_ISO6976_2016 standard = new Standard_ISO6976_2016(testSystem, 0, 15.55, "volume"); + standard.setReferenceState("real"); + standard.setReferenceType("volume"); + standard.calculate(); + double GCV = standard.getValue("GCV"); + double WI = standard.getValue("WI"); + assertEquals(39612.08330867018, GCV, 0.01); + assertEquals(44.61477915805513, WI, 0.01); + } + + /** + * Test method for {@link neqsim.standards.gasQuality.Standard_ISO6976#calculate()} if wrong + * reference state is gven. Valid reference states should be 0, 15 and 20 C and 15F (15.55C). If + * wrong reference state is given, the program should use standard conditions (15C). + */ + @Test + void testCalculateWithWrongReferenceState() { + double volumeReferenceState = 0; + double energyReferenceState = 15.55; + Standard_ISO6976_2016 standard = + new Standard_ISO6976_2016(testSystem, volumeReferenceState, energyReferenceState, "volume"); + standard.setReferenceState("real"); + standard.setReferenceType("volume"); + standard.calculate(); + double GCV = standard.getValue("GCV"); + standard.getValue("WI"); + assertEquals(39612.08330867018, GCV, 0.01); + energyReferenceState = 15.15; // example of wrong reference condition + volumeReferenceState = 1.15; // example of wrong volume reference condition + standard.setEnergyRefT(energyReferenceState); + standard.setVolRefT(volumeReferenceState); + standard.calculate(); + GCV = standard.getValue("GCV"); + assertEquals(37496.955002184994, GCV, 0.01); + } + + /** + * Test method for {@link neqsim.standards.gasQuality.Standard_ISO6976#calculate()}. + */ + @Test + void testCalculateWithPSeudo() { + SystemSrkEos testSystem = new SystemSrkEos(273.15 + 20.0, 1.0); + testSystem.addComponent("methane", 0.931819); + testSystem.addComponent("ethane", 0.025618); + testSystem.addComponent("nitrogen", 0.010335); + testSystem.addComponent("CO2", 0.015391); + testSystem.addTBPfraction("C10", 0.015391, 90.0 / 1000.0, 0.82); + testSystem.setMixingRule("classic"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + Standard_ISO6976_2016 standard = new Standard_ISO6976_2016(testSystem, 0, 15.55, "volume"); + standard.setReferenceState("real"); + standard.setReferenceType("volume"); + standard.calculate(); + double GCV = standard.getValue("GCV"); + standard.getValue("WI"); + assertEquals(42374.88507879093, GCV, 0.01); + } + + @Test + void testCalculate2() { + SystemInterface testSystem = new SystemSrkEos(273.15 - 150.0, 1.0); + testSystem.addComponent("methane", 0.931819); + testSystem.addComponent("ethane", 0.025618); + testSystem.addComponent("nitrogen", 0.010335); + testSystem.addComponent("CO2", 0.015391); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + + testSystem.init(0); + Standard_ISO6976_2016 standard = new Standard_ISO6976_2016(testSystem, 0, 15.55, "volume"); + standard.setReferenceState("real"); + standard.setReferenceType("volume"); + standard.calculate(); + Assertions.assertEquals(0.9974581843581334, standard.getValue("CompressionFactor"), 1e-5); + Assertions.assertEquals(35693.5928445084, standard.getValue("InferiorCalorificValue"), 1e-5); + Assertions.assertEquals(39612.08330867018, standard.getValue("GCV")); + + Assertions.assertEquals(51698.75555489656, standard.getValue("SuperiorWobbeIndex")); + Assertions.assertEquals(46584.63219328704, standard.getValue("InferiorWobbeIndex")); + + Assertions.assertEquals(0.5870771657884608, standard.getValue("RelativeDensity")); + Assertions.assertEquals(0.9974581843581334, standard.getValue("CompressionFactor")); + Assertions.assertEquals(16.97159718679405, standard.getValue("MolarMass")); + + // standard.display("test"); + /* + * StandardInterface standardUK = new UKspecifications_ICF_SI(testSystem); + * standardUK.calculate(); logger.info("ICF " + + * standardUK.getValue("IncompleteCombustionFactor", "")); + * + * logger.info("HID " + testSystem.getPhase(0).getComponent("methane").getHID(273.15 - 150.0)); + * logger.info("Hres " + testSystem.getPhase(0).getComponent("methane").getHresTP(273.15 - + * 150.0)); + */ + } + + @Test + @Disabled + void testDisplay() { + Standard_ISO6976_2016 s = new Standard_ISO6976_2016(testSystem); + s.display("test"); + } +} diff --git a/src/test/java/neqsim/standards/oilQuality/Standard_ASTM_D6377Test.java b/src/test/java/neqsim/standards/oilQuality/Standard_ASTM_D6377Test.java new file mode 100644 index 0000000000..413c620b9b --- /dev/null +++ b/src/test/java/neqsim/standards/oilQuality/Standard_ASTM_D6377Test.java @@ -0,0 +1,52 @@ +package neqsim.standards.oilQuality; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class Standard_ASTM_D6377Test { + @Test + void testCalculate() { + SystemInterface testSystem = new SystemSrkEos(273.15 + 2.0, 1.0); + testSystem.addComponent("methane", 0.0006538); + testSystem.addComponent("ethane", 0.006538); + testSystem.addComponent("propane", 0.06538); + testSystem.addComponent("n-pentane", 0.1545); + testSystem.addComponent("nC10", 0.545); + testSystem.setMixingRule(2); + testSystem.init(0); + Standard_ASTM_D6377 standard = new Standard_ASTM_D6377(testSystem); + standard.setReferenceTemperature(37.8, "C"); + standard.calculate(); + Assertions.assertEquals(1.10455465, standard.getValue("RVP", "bara"), 1e-3); + Assertions.assertEquals(1.666298367, standard.getValue("TVP", "bara"), 1e-3); + } + + @Test + void testCalculate2() { + SystemInterface testSystem = new SystemSrkEos(273.15 + 2.0, 1.0); + testSystem.addComponent("methane", 0.026538); + testSystem.addComponent("ethane", 0.16538); + testSystem.addComponent("propane", 0.26538); + testSystem.addComponent("n-pentane", 0.545); + testSystem.addComponent("nC10", 0.545); + testSystem.addTBPfraction("C11", 0.545, 145.0 / 1000.0, 0.82); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.setPressure(100.0); + Standard_ASTM_D6377 standard = new Standard_ASTM_D6377(testSystem); + standard.setMethodRVP("VPCR4"); + standard.setReferenceTemperature(37.8, "C"); + standard.calculate(); + Assertions.assertEquals(3.6145219653041623, standard.getValue("RVP", "bara"), 1e-3); + Assertions.assertEquals(7.867696779327479, standard.getValue("TVP", "bara"), 1e-3); + + standard.setMethodRVP("RVP_ASTM_D6377"); + standard.setReferenceTemperature(37.8, "C"); + standard.calculate(); + Assertions.assertEquals(3.014511319063671, standard.getValue("RVP", "bara"), 1e-3); + Assertions.assertEquals(7.867696779327479 + , standard.getValue("TVP", "bara"), 1e-3); + } +} diff --git a/src/test/java/neqsim/standards/salesContract/BaseContractTest.java b/src/test/java/neqsim/standards/salesContract/BaseContractTest.java index 1f72960e39..5b4cec7959 100644 --- a/src/test/java/neqsim/standards/salesContract/BaseContractTest.java +++ b/src/test/java/neqsim/standards/salesContract/BaseContractTest.java @@ -1,31 +1,62 @@ package neqsim.standards.salesContract; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import neqsim.thermo.system.SystemGERGwaterEos; import neqsim.thermo.system.SystemInterface; -public class BaseContractTest extends neqsim.NeqSimTest{ - @Test - void testRunCheck() { - SystemInterface testSystem = new SystemGERGwaterEos(273.15 - 5.0, 20.0); +/** + * @author ESOL + */ +class BaseContractTest extends neqsim.NeqSimTest { + static SystemInterface testSystem = null; + static ContractInterface standard = null; - testSystem.addComponent("methane", 0.9); - testSystem.addComponent("ethane", 0.04); - testSystem.addComponent("propane", 0.02); - testSystem.addComponent("n-heptane", 0.00012); - testSystem.addComponent("H2S", 0.000012); - testSystem.addComponent("water", 0.0000071); - testSystem.addComponent("oxygen", 0.0012); - testSystem.addComponent("CO2", 0.0022); - testSystem.addComponent("nitrogen", 0.022); - testSystem.createDatabase(true); - testSystem.setMixingRule(8); + /** + * @throws java.lang.Exception + */ + @BeforeAll + static void testRunCheck() throws Exception { + testSystem = new SystemGERGwaterEos(273.15 - 5.0, 20.0); + testSystem.addComponent("methane", 0.9); + testSystem.addComponent("ethane", 0.04); + testSystem.addComponent("propane", 0.02); + testSystem.addComponent("n-heptane", 0.00012); + testSystem.addComponent("H2S", 0.000012); + testSystem.addComponent("water", 0.000071); + testSystem.addComponent("oxygen", 0.0012); + testSystem.addComponent("CO2", 0.022); + testSystem.addComponent("nitrogen", 0.022); + testSystem.setMixingRule(8); + testSystem.init(0); + standard = new BaseContract(testSystem, "UK-GSMR1996", "UK"); + } - testSystem.init(0); + /** + * Test method + */ + @Test + void testUKGSMR1996() { + standard.runCheck(); + // standard.prettyPrint(); + } - // ContractInterface standard = new BaseContract(testSystem, "EASEE-GAS-CBP", - // "EUROPE"); - //ContractInterface standard = new BaseContract(testSystem, "UK-GSMR1996", "UK"); - //standard.runCheck(); - } + @Test + void testUKGSMR19962() { + standard = new BaseContract(testSystem, "central", "Brazil"); + standard.runCheck(); + assertEquals(2.18817727816606, Double.parseDouble(standard.getResultTable()[1][1]), 1e-6); + // standard.prettyPrint(); + } + + @Test + @Disabled + void testDisplay() { + standard.display(); + + BaseContract bc = new BaseContract(); + bc.display(); + } } diff --git a/src/test/java/neqsim/statistics/dataanalysis/datasmoothing/DataSmootherTest.java b/src/test/java/neqsim/statistics/dataanalysis/datasmoothing/DataSmootherTest.java new file mode 100644 index 0000000000..c8dcae9156 --- /dev/null +++ b/src/test/java/neqsim/statistics/dataanalysis/datasmoothing/DataSmootherTest.java @@ -0,0 +1,20 @@ +package neqsim.statistics.dataanalysis.datasmoothing; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class DataSmootherTest { + @Test + void testgetSmoothedNumbers() { + double[] numbers = {10, 11, 12, 13, 14, 15, 15.5, 15, 19, 14, 14, 13, 12, 12, 11, 10, 9, 8}; + DataSmoother test = new DataSmoother(numbers, 3, 3, 0, 4); + Assertions.assertArrayEquals(numbers, test.getSmoothedNumbers()); + + double[] expected = {10.000000, 11.000000, 12.000000, 12.567099567099579, 13.567099567099582, + 14.556277056277072, 15.305194805194823, 15.389610389610409, 16.66233766233768, + 17.149350649350666, 13.350649350649375, 13.627705627705646, 12.432900432900452, + 11.89177489177491, 11.541125541125552, 10.000000, 9.000000, 8.000000}; + test.runSmoothing(); + Assertions.assertArrayEquals(expected, test.getSmoothedNumbers()); + } +} diff --git a/src/test/java/neqsim/thermo/FluidCreatorTest.java b/src/test/java/neqsim/thermo/FluidCreatorTest.java new file mode 100644 index 0000000000..890c6928e7 --- /dev/null +++ b/src/test/java/neqsim/thermo/FluidCreatorTest.java @@ -0,0 +1,28 @@ +package neqsim.thermo; + +import org.junit.jupiter.api.Test; + +/** + * Class for testing FluidCreator. + */ +public class FluidCreatorTest { + @Test + void testCreate() { + String[] componentNames = new String[] {"methane", "ethane"}; + FluidCreator.create(componentNames); + } + + @Test + void testCreate2() { + String fluidType = "air"; + FluidCreator.create(fluidType); + } + + @Test + void testCreate3() { + String[] componentNames = new String[] {"methane", "ethane"}; + double[] rate = new double[] {1.0, 1.0}; + String unit = "kg/sec"; + FluidCreator.create(componentNames, rate, unit); + } +} diff --git a/src/test/java/neqsim/thermo/atomElement/ElementTest.java b/src/test/java/neqsim/thermo/atomElement/ElementTest.java new file mode 100644 index 0000000000..6bc2782ea9 --- /dev/null +++ b/src/test/java/neqsim/thermo/atomElement/ElementTest.java @@ -0,0 +1,30 @@ +package neqsim.thermo.atomElement; + +import java.util.ArrayList; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ElementTest { + @Test + public void testExistingElement() { + ArrayList names = Element.getAllElementComponentNames(); + + Assertions.assertTrue(names.size() > 0); + + Element a = new Element(names.get(0)); + Assertions.assertEquals(a.getName(), names.get(0)); + } + + @Test + public void testNonExistingElement() { + ArrayList names = Element.getAllElementComponentNames(); + + String nonExistingElement = "DUMMY_ELEMENT"; + + Assertions.assertFalse(names.contains(nonExistingElement)); + + Element e = new Element(nonExistingElement); + Assertions.assertNull(e.getElementNames()); + Assertions.assertNull(e.getElementCoefs()); + } +} diff --git a/src/test/java/neqsim/thermo/characterization/CharacteriseTest.java b/src/test/java/neqsim/thermo/characterization/CharacteriseTest.java new file mode 100644 index 0000000000..a7c5f9bf0b --- /dev/null +++ b/src/test/java/neqsim/thermo/characterization/CharacteriseTest.java @@ -0,0 +1,41 @@ +package neqsim.thermo.characterization; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class CharacteriseTest extends neqsim.NeqSimTest { + static SystemInterface thermoSystem = null; + + @Test + void testCharacterisePlusFraction() { + thermoSystem = new SystemSrkEos(298.0, 10.0); + thermoSystem.addComponent("methane", 51.0); + thermoSystem.addComponent("ethane", 1.0); + thermoSystem.addComponent("propane", 1.0); + thermoSystem.addTBPfraction("C6", 1.0, 90.0 / 1000.0, 0.7); + thermoSystem.addTBPfraction("C7", 1.0, 110.0 / 1000.0, 0.73); + thermoSystem.addTBPfraction("C8", 1.0, 120.0 / 1000.0, 0.76); + thermoSystem.addTBPfraction("C9", 1.0, 140.0 / 1000.0, 0.79); + thermoSystem.addPlusFraction("C10", 11.0, 290.0 / 1000.0, 0.82); + thermoSystem.getCharacterization().setLumpingModel("no lumping"); + thermoSystem.getCharacterization().characterisePlusFraction(); + // logger.info("number of components " + thermoSystem.getNumberOfComponents()); + assertEquals(77, thermoSystem.getNumberOfComponents()); + + thermoSystem = new SystemSrkEos(298.0, 10.0); + thermoSystem.addComponent("methane", 51.0); + thermoSystem.addComponent("ethane", 1.0); + thermoSystem.addComponent("propane", 1.0); + thermoSystem.addTBPfraction("C6", 1.0, 90.0 / 1000.0, 0.7); + thermoSystem.addTBPfraction("C7", 1.0, 110.0 / 1000.0, 0.73); + thermoSystem.addTBPfraction("C8", 1.0, 120.0 / 1000.0, 0.76); + thermoSystem.addTBPfraction("C9", 1.0, 140.0 / 1000.0, 0.79); + thermoSystem.addPlusFraction("C10", 11.0, 290.0 / 1000.0, 0.82); + thermoSystem.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(12); + thermoSystem.getCharacterization().setLumpingModel("PVTlumpingModel"); + thermoSystem.getCharacterization().characterisePlusFraction(); + assertEquals(15, thermoSystem.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/characterization/PlusFractionModelTest.java b/src/test/java/neqsim/thermo/characterization/PlusFractionModelTest.java new file mode 100644 index 0000000000..9aeb541864 --- /dev/null +++ b/src/test/java/neqsim/thermo/characterization/PlusFractionModelTest.java @@ -0,0 +1,148 @@ +package neqsim.thermo.characterization; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class PlusFractionModelTest { + + @Test + void testPedersenPlusModelCharacterization() { + SystemInterface thermoSystem = null; + thermoSystem = new SystemSrkEos(298.0, 10.0); + + thermoSystem.addComponent("CO2", 1.0); + thermoSystem.addComponent("methane", 51.0); + thermoSystem.addComponent("ethane", 1.0); + thermoSystem.addComponent("propane", 1.0); + + thermoSystem.getCharacterization().setTBPModel("PedersenSRK"); // this need to be set before + // adding oil components + + thermoSystem.addTBPfraction("C6", 1.0, 90.0 / 1000.0, 0.7); + thermoSystem.addTBPfraction("C7", 1.0, 110.0 / 1000.0, 0.73); + thermoSystem.addTBPfraction("C8", 1.0, 120.0 / 1000.0, 0.76); + thermoSystem.addTBPfraction("C9", 1.0, 140.0 / 1000.0, 0.79); + thermoSystem.addPlusFraction("C10", 11.0, 290.0 / 1000.0, 0.82); + + /* + * Specify that the Pedersen plus fraction model will be used for characterizing the plus + * component + */ + thermoSystem.getCharacterization().setPlusFractionModel("Pedersen"); + + thermoSystem.getCharacterization().setLumpingModel("PVTlumpingModel"); // this is default + // lumping model in + // neqsim. Needs to be + // set before calling + // characterisePlusFraction() + + thermoSystem.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(12); // specify + // numer + // of + // lumped + // components + // (C6-C80 + // components) + thermoSystem.getCharacterization().characterisePlusFraction(); + assertEquals(16, thermoSystem.getNumberOfComponents()); + + ThermodynamicOperations ops = new ThermodynamicOperations(thermoSystem); + ops.TPflash(); + + assertEquals(0.76652495787, thermoSystem.getBeta(), 1e-4); + + + } + + @Test + void testPedersenHeavyOilPlusModelCharacterization() { + SystemInterface thermoSystem = null; + thermoSystem = new SystemSrkEos(298.0, 10.0); + + thermoSystem.addComponent("CO2", 1.0); + thermoSystem.addComponent("methane", 51.0); + thermoSystem.addComponent("ethane", 1.0); + thermoSystem.addComponent("propane", 1.0); + + thermoSystem.getCharacterization().setTBPModel("PedersenSRK"); // this need to be set before + // adding oil components + + thermoSystem.addTBPfraction("C6", 1.0, 90.0 / 1000.0, 0.7); + thermoSystem.addTBPfraction("C7", 1.0, 110.0 / 1000.0, 0.73); + thermoSystem.addTBPfraction("C8", 1.0, 120.0 / 1000.0, 0.76); + thermoSystem.addTBPfraction("C9", 1.0, 140.0 / 1000.0, 0.79); + thermoSystem.addPlusFraction("C10", 11.0, 590.0 / 1000.0, 0.90); + + /* + * Specify that the Pedersen heavy oil plus fraction model will be used for characterizing the + * plus component + */ + thermoSystem.getCharacterization().setPlusFractionModel("Pedersen Heavy Oil"); + + thermoSystem.getCharacterization().setLumpingModel("PVTlumpingModel"); // this is default + // lumping model in + // neqsim. Needs to be + // set before calling + // characterisePlusFraction() + + thermoSystem.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(12); // specify + // numer + // of + // lumped + // components + // (C6-C80 + // components) + thermoSystem.getCharacterization().characterisePlusFraction(); + assertEquals(16, thermoSystem.getNumberOfComponents()); + + ThermodynamicOperations ops = new ThermodynamicOperations(thermoSystem); + ops.TPflash(); + + assertEquals(0.767085187, thermoSystem.getBeta(), 1e-4); + + + } + + @Test + void testGammaModelCharacterization() { + SystemInterface thermoSystem = null; + thermoSystem = new SystemSrkEos(298.0, 10.0); + + thermoSystem.addComponent("CO2", 1.0); + thermoSystem.addComponent("methane", 51.0); + thermoSystem.addComponent("ethane", 1.0); + thermoSystem.addComponent("propane", 1.0); + + thermoSystem.getCharacterization().setTBPModel("PedersenSRK"); // this need to be set before + // adding oil components + + thermoSystem.addTBPfraction("C6", 1.0, 90.0 / 1000.0, 0.7); + thermoSystem.addTBPfraction("C7", 1.0, 110.0 / 1000.0, 0.73); + thermoSystem.addTBPfraction("C8", 1.0, 120.0 / 1000.0, 0.76); + thermoSystem.addTBPfraction("C9", 1.0, 140.0 / 1000.0, 0.79); + thermoSystem.addPlusFraction("C10", 11.0, 290.0 / 1000.0, 0.82); + + thermoSystem.getCharacterization().setLumpingModel("PVTlumpingModel"); // this is default + // lumping model in + // neqsim. Needs to be + // set before calling + // characterisePlusFraction() + + thermoSystem.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(12); // specify + // numer + // of + // lumped + // components + // (C6-C80 + // components) + thermoSystem.getCharacterization().characterisePlusFraction(); + assertEquals(16, thermoSystem.getNumberOfComponents()); + + } + + + +} diff --git a/src/test/java/neqsim/thermo/characterization/TBPfractionModelTest.java b/src/test/java/neqsim/thermo/characterization/TBPfractionModelTest.java new file mode 100644 index 0000000000..6d9d2b9773 --- /dev/null +++ b/src/test/java/neqsim/thermo/characterization/TBPfractionModelTest.java @@ -0,0 +1,56 @@ +package neqsim.thermo.characterization; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemPrEos; +import neqsim.thermo.system.SystemSrkEos; + +public class TBPfractionModelTest { + @Test + void testTwuModel() { + SystemInterface thermoSystem = new SystemSrkEos(298.0, 10.0); + thermoSystem.getCharacterization().setTBPModel("Twu"); + thermoSystem.addTBPfraction("C7", 1.0, 110.0 / 1000.0, 0.73); + assertEquals(536.173400, thermoSystem.getComponent(0).getTC(), 1e-3); + assertEquals(26.52357312690, thermoSystem.getComponent(0).getPC(), 1e-3); + assertEquals(0.56001213933, thermoSystem.getComponent(0).getAcentricFactor(), 1e-3); + assertEquals(437.335493, thermoSystem.getComponent(0).getCriticalVolume(), 1e-3); + } + + @Test + void testLeeKeslerModel() { + SystemInterface thermoSystem = new SystemSrkEos(298.0, 10.0); + thermoSystem.getCharacterization().setTBPModel("Lee-Kesler"); + thermoSystem.addTBPfraction("C7", 1.0, 110.0 / 1000.0, 0.73); + assertEquals(562.4229803010662, thermoSystem.getComponent(0).getTC(), 1e-3); + assertEquals(28.322987349048354, thermoSystem.getComponent(0).getPC(), 1e-3); + assertEquals(0.3509842412742902, thermoSystem.getComponent(0).getAcentricFactor(), 1e-3); + assertEquals(427.99744457199, thermoSystem.getComponent(0).getCriticalVolume(), 1e-3); + } + + @Test + void testPedersenSRKModel() { + SystemInterface thermoSystem = new SystemSrkEos(298.0, 10.0); + thermoSystem.getCharacterization().setTBPModel("PedersenSRK"); + thermoSystem.addTBPfraction("C7", 1.0, 110.0 / 1000.0, 0.73); + assertEquals(281.1685637, thermoSystem.getComponent(0).getTC() - 273.15, 1e-3); + assertEquals(26.341015469211726 + , thermoSystem.getComponent(0).getPC(), 1e-3); + assertEquals(0.508241, thermoSystem.getComponent(0).getAcentricFactor(), 1e-3); + assertEquals(426.46717439, thermoSystem.getComponent(0).getCriticalVolume(), 1e-3); + assertEquals(122.93500, thermoSystem.getComponent(0).getNormalBoilingPoint("C"), 1e-3); + } + + @Test + void testPedersenPRModel() { + SystemInterface thermoSystem = new SystemPrEos(298.0, 10.0); + thermoSystem.getCharacterization().setTBPModel("PedersenPR"); + thermoSystem.addTBPfraction("C7", 1.0, 110.0 / 1000.0, 0.73); + assertEquals(560.546, thermoSystem.getComponent(0).getTC(), 1e-3); + assertEquals(26.16934428134274, thermoSystem.getComponent(0).getPC(), 1e-3); + assertEquals(0.3838836222383, thermoSystem.getComponent(0).getAcentricFactor(), 1e-3); + assertEquals(444.07282144, thermoSystem.getComponent(0).getCriticalVolume(), 1e-3); + assertEquals(122.93500, thermoSystem.getComponent(0).getNormalBoilingPoint("C"), 1e-3); + } +} diff --git a/src/test/java/neqsim/thermo/component/AmmoniaTest.java b/src/test/java/neqsim/thermo/component/AmmoniaTest.java new file mode 100644 index 0000000000..1c8ea75155 --- /dev/null +++ b/src/test/java/neqsim/thermo/component/AmmoniaTest.java @@ -0,0 +1,39 @@ +package neqsim.thermo.component; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class AmmoniaTest extends neqsim.NeqSimTest { + static SystemInterface thermoSystem = null; + + /** + * @throws java.lang.Exception + */ + @BeforeAll + static void setUpBeforeClass() throws Exception { + thermoSystem = new SystemSrkEos(298.0, ThermodynamicConstantsInterface.referencePressure); + thermoSystem.addComponent("ammonia", 1.0); + thermoSystem.init(0); + } + + @Test + public void bublePointTemperatureTest() { + ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem); + try { + testOps.bubblePointTemperatureFlash(); + } catch (Exception e) { + e.printStackTrace(); + } + assertEquals(-33.039831, thermoSystem.getTemperature("C"), 0.01); + } + + @Test + public void molarMassTest() { + assertEquals(0.017, thermoSystem.getMolarMass("kg/mol"), 0.01); + } +} diff --git a/src/test/java/neqsim/thermo/component/ComponentHydrateGFTest.java b/src/test/java/neqsim/thermo/component/ComponentHydrateGFTest.java index ce8f536938..97c69fefdb 100644 --- a/src/test/java/neqsim/thermo/component/ComponentHydrateGFTest.java +++ b/src/test/java/neqsim/thermo/component/ComponentHydrateGFTest.java @@ -1,10 +1,9 @@ -/** - * - */ package neqsim.thermo.component; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import neqsim.thermo.system.SystemInterface; @@ -13,39 +12,39 @@ /** * @author ESOL - * */ -class ComponentHydrateGFTest extends neqsim.NeqSimTest{ - static SystemInterface thermoSystem = null; +class ComponentHydrateGFTest extends neqsim.NeqSimTest { + static Logger logger = LogManager.getLogger(ComponentHydrateGFTest.class); - /** - * @throws java.lang.Exception - */ - @BeforeAll - static void setUpBeforeClass() throws Exception { - thermoSystem = new SystemSrkCPAstatoil(298.0, 100.0); - thermoSystem.addComponent("methane", 11.0); - thermoSystem.addComponent("CO2", 1.0); - thermoSystem.addComponent("water", 11.0); - thermoSystem.setMixingRule(10); - } + static SystemInterface thermoSystem = null; - /** - * Test method for {@link neqsim.thermo.component.ComponentHydrateGF#ComponentHydrateGF(java.lang.String, double, double, int)}. - */ - @Test - void testComponentHydrateGFStringDoubleDoubleInt() { - ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem); - try { - thermoSystem.setHydrateCheck(true); - testOps.hydrateFormationTemperature(); - } - catch(Exception e) { - e.printStackTrace(); - assertTrue(false); - return; - } - assertEquals(286.4105348944992,thermoSystem.getTemperature("K"), 0.001); - } + /** + * @throws java.lang.Exception + */ + @BeforeAll + static void setUpBeforeClass() throws Exception { + thermoSystem = new SystemSrkCPAstatoil(298.0, 100.0); + thermoSystem.addComponent("methane", 11.0); + thermoSystem.addComponent("CO2", 1.0); + thermoSystem.addComponent("water", 11.0); + thermoSystem.setMixingRule(10); + } + /** + * Test method for + * {@link neqsim.thermo.component.ComponentHydrateGF#ComponentHydrateGF(java.lang.String, double, double, int)}. + */ + @Test + void testComponentHydrateGFStringDoubleDoubleInt() { + ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem); + try { + thermoSystem.setHydrateCheck(true); + testOps.hydrateFormationTemperature(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + assertTrue(false); + return; + } + assertEquals(286.4105348955611, thermoSystem.getTemperature("K"), 0.01); + } } diff --git a/src/test/java/neqsim/thermo/component/ComponentTest.java b/src/test/java/neqsim/thermo/component/ComponentTest.java deleted file mode 100644 index 5679fa0b5e..0000000000 --- a/src/test/java/neqsim/thermo/component/ComponentTest.java +++ /dev/null @@ -1,58 +0,0 @@ -package neqsim.thermo.component; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import neqsim.thermo.system.SystemInterface; -import neqsim.thermo.system.SystemSrkEos; - -public class ComponentTest extends neqsim.NeqSimTest{ - static SystemInterface thermoSystem = null; - - /** - * @throws java.lang.Exception - */ - @BeforeAll - static void setUpBeforeClass() throws Exception { - thermoSystem = new SystemSrkEos(298.0, 100.0); - thermoSystem.addComponent("water", 1.0); - } - - @Test - public void testGetFlowRate() { - Assertions.assertEquals(thermoSystem.getComponent("water").getFlowRate("kg/min"), - 60 * thermoSystem.getComponent("water").getFlowRate("kg/sec")); - Assertions.assertEquals(thermoSystem.getComponent("water").getFlowRate("kg/hr"), - 60 * thermoSystem.getComponent("water").getFlowRate("kg/min")); - - Assertions.assertEquals(thermoSystem.getComponent("water").getFlowRate("m3/min"), - 60 * thermoSystem.getComponent("water").getFlowRate("m3/sec")); - Assertions.assertEquals(thermoSystem.getComponent("water").getFlowRate("m3/hr"), - 60 * thermoSystem.getComponent("water").getFlowRate("m3/min")); - - Assertions.assertEquals(thermoSystem.getComponent("water").getFlowRate("mole/min"), - 60 * thermoSystem.getComponent("water").getFlowRate("mole/sec")); - Assertions.assertEquals(thermoSystem.getComponent("water").getFlowRate("mole/hr"), - 60 * thermoSystem.getComponent("water").getFlowRate("mole/min")); - // throw new RuntimeException("failed.. unit: " + flowunit + " not supported"); - } - - @Test - public void testGetTotalFlowRate() { - Assertions.assertEquals(thermoSystem.getComponent("water").getTotalFlowRate("kg/min"), - 60 * thermoSystem.getComponent("water").getTotalFlowRate("kg/sec")); - Assertions.assertEquals(thermoSystem.getComponent("water").getTotalFlowRate("kg/hr"), - 60 * thermoSystem.getComponent("water").getTotalFlowRate("kg/min")); - - // Assertions.assertEquals(thermoSystem.getComponent("water").getTotalFlowRate("m3/min"),60 - // * thermoSystem.getComponent("water").getTotalFlowRate("m3/sec")); - // Assertions.assertEquals(thermoSystem.getComponent("water").getTotalFlowRate("m3/hr"),60 * - // thermoSystem.getComponent("water").getTotalFlowRate("m3/min")); - - Assertions.assertEquals(thermoSystem.getComponent("water").getTotalFlowRate("mole/min"), - 60 * thermoSystem.getComponent("water").getTotalFlowRate("mole/sec")); - Assertions.assertEquals(thermoSystem.getComponent("water").getTotalFlowRate("mole/hr"), - 60 * thermoSystem.getComponent("water").getTotalFlowRate("mole/min")); - // throw new RuntimeException("failed.. unit: " + flowunit + " not supported"); - } -} diff --git a/src/test/java/neqsim/thermo/component/NewComponentTest.java b/src/test/java/neqsim/thermo/component/NewComponentTest.java new file mode 100644 index 0000000000..bf88df7738 --- /dev/null +++ b/src/test/java/neqsim/thermo/component/NewComponentTest.java @@ -0,0 +1,119 @@ +package neqsim.thermo.component; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.phase.PhaseSrkEos; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemPrEos; +import neqsim.thermo.system.SystemSrkEos; + +public class NewComponentTest extends neqsim.NeqSimTest { + static SystemInterface thermoSystem = null; + + /** + * @throws java.lang.Exception + */ + @BeforeAll + static void setUpBeforeClass() throws Exception {} + + @Test + public void createComponentTest() { + PhaseSrkEos p = new PhaseSrkEos(); + RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, () -> { + p.addComponent("", 0, 0, 0); + }); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: PhaseSrkEos:addcomponent - Input name can not be empty.", + thrown.getMessage()); + + RuntimeException thrown_2 = Assertions.assertThrows(RuntimeException.class, () -> { + p.addComponent(null, 0, 0, 0); + }); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: PhaseSrkEos:addcomponent - Input name can not be null", + thrown_2.getMessage()); + + RuntimeException thrown_3 = Assertions.assertThrows(RuntimeException.class, () -> { + p.addComponent("ethane", 0, 0, -1); + }); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: PhaseSrkEos:addComponent - Input compNumber must be valid index, i.e., between 0 and 100.", + thrown_3.getMessage()); + + p.addComponent("ethane", 0, 0, 0); + RuntimeException thrown_4 = Assertions.assertThrows(RuntimeException.class, () -> { + p.addComponent("methane", 0, 0, 0); + }); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: PhaseSrkEos:addComponent - Input compNumber number is already in use.", + thrown_4.getMessage()); + } + + @Test + public void newComponentTest() { + thermoSystem = new SystemSrkEos(298.0, ThermodynamicConstantsInterface.referencePressure); + thermoSystem.addComponent("ammonia", 1.0); + thermoSystem.init(0); + assertEquals(0.01703052, thermoSystem.getMolarMass("kg/mol"), 0.01); + assertEquals(405.4, thermoSystem.getComponent(0).getTC(), 0.01); + } + + @Test + public void newComponentIsoButeneTest() { + thermoSystem = new SystemSrkEos(298.0, ThermodynamicConstantsInterface.referencePressure); + thermoSystem.addComponent("iso-butene", 1.0); + thermoSystem.init(0); + assertEquals(56.10632e-3, thermoSystem.getMolarMass("kg/mol"), 0.01); + } + + @Test + public void setTCPC_test() { + thermoSystem = new SystemSrkEos(298.0, ThermodynamicConstantsInterface.referencePressure); + thermoSystem.addComponent("iso-butene", 1.0); + thermoSystem.init(0); + thermoSystem.getPhase(0).getComponent(0).setTC(190.0); + assertEquals(190.0, thermoSystem.getPhase(0).getComponent(0).getTC(), 0.01); + + thermoSystem.getPhase(0).getComponent(0).setTC(190.0, "R"); + assertEquals(190.0, thermoSystem.getPhase(0).getComponent(0).getTC("R"), 0.01); + + thermoSystem.getPhase(0).getComponent(0).setTC(190.0, "R"); + assertEquals(105.55555, thermoSystem.getPhase(0).getComponent(0).getTC("K"), 0.01); + + thermoSystem.getPhase(0).getComponent(0).setPC(1290.0, "psia"); + assertEquals(1290.0, thermoSystem.getPhase(0).getComponent(0).getPC("psia"), 0.01); + assertEquals(88.9423690, thermoSystem.getPhase(0).getComponent(0).getPC("bara"), 0.01); + + thermoSystem.getPhase(0).getComponent(0).setMolarMass(0.090); + assertEquals(0.09, thermoSystem.getPhase(0).getComponent(0).getMolarMass(), 0.01); + assertEquals(90.0, thermoSystem.getPhase(0).getComponent(0).getMolarMass("gr/mol"), 0.01); + assertEquals(90.0, thermoSystem.getPhase(0).getComponent(0).getMolarMass("lbm/lbmol"), 0.01); + + thermoSystem.getPhase(0).getComponent(0).setMolarMass(85.0, "lbm/lbmol"); + assertEquals(85.0, thermoSystem.getPhase(0).getComponent(0).getMolarMass("gr/mol"), 0.01); + + } + + @Test + public void volTransTtest() { + thermoSystem = new SystemPrEos(318.0, 20.01325); + thermoSystem.addComponent("CO2", 1.0); + thermoSystem.init(0); + thermoSystem.init(1); + thermoSystem.initPhysicalProperties("density"); + assertEquals(36.68212551, thermoSystem.getDensity("kg/m3"), 0.01); + + thermoSystem.getComponent("CO2").setVolumeCorrectionT(0.2); + + thermoSystem.initPhysicalProperties("density"); + assertEquals(37.6425616, thermoSystem.getDensity("kg/m3"), 0.01); + + thermoSystem.getComponent("CO2").setRacketZ(0.3); + + thermoSystem.initPhysicalProperties("density"); + assertEquals(37.557573, thermoSystem.getDensity("kg/m3"), 0.01); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseBWRSEosTest.java b/src/test/java/neqsim/thermo/phase/PhaseBWRSEosTest.java new file mode 100644 index 0000000000..3671e40d39 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseBWRSEosTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseBWRSEosTest { + static PhaseBWRSEos p; + + @BeforeEach + void setUp() { + p = new PhaseBWRSEos(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseCSPsrkEosTest.java b/src/test/java/neqsim/thermo/phase/PhaseCSPsrkEosTest.java new file mode 100644 index 0000000000..98b03d6cbe --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseCSPsrkEosTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseCSPsrkEosTest { + static PhaseCSPsrkEos p; + + @BeforeEach + void setUp() { + p = new PhaseCSPsrkEos(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseDesmukhMatherTest.java b/src/test/java/neqsim/thermo/phase/PhaseDesmukhMatherTest.java new file mode 100644 index 0000000000..e2d9263bcc --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseDesmukhMatherTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseDesmukhMatherTest { + static PhaseDesmukhMather p; + + @BeforeEach + void setUp() { + p = new PhaseDesmukhMather(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseDuanSunTest.java b/src/test/java/neqsim/thermo/phase/PhaseDuanSunTest.java new file mode 100644 index 0000000000..2d233b9829 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseDuanSunTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseDuanSunTest { + static PhaseDuanSun p; + + @BeforeEach + void setUp() { + p = new PhaseDuanSun(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPAOldTest.java b/src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPAOldTest.java new file mode 100644 index 0000000000..e520e086f2 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPAOldTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseElectrolyteCPAOldTest { + static PhaseElectrolyteCPAOld p; + + @BeforeEach + void setUp() { + p = new PhaseElectrolyteCPAOld(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPATest.java b/src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPATest.java new file mode 100644 index 0000000000..e25f080f82 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPATest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseElectrolyteCPATest { + static PhaseElectrolyteCPA p; + + @BeforeEach + void setUp() { + p = new PhaseElectrolyteCPA(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPAstatoilTest.java b/src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPAstatoilTest.java new file mode 100644 index 0000000000..ee8d32855f --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseElectrolyteCPAstatoilTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseElectrolyteCPAstatoilTest { + static PhaseElectrolyteCPAstatoil p; + + @BeforeEach + void setUp() { + p = new PhaseElectrolyteCPAstatoil(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseGENRTLTest.java b/src/test/java/neqsim/thermo/phase/PhaseGENRTLTest.java new file mode 100644 index 0000000000..7301e653fe --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseGENRTLTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseGENRTLTest { + static PhaseGENRTL p; + + @BeforeEach + void setUp() { + p = new PhaseGENRTL(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseGENRTLmodifiedHVTest.java b/src/test/java/neqsim/thermo/phase/PhaseGENRTLmodifiedHVTest.java new file mode 100644 index 0000000000..8cc24b389f --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseGENRTLmodifiedHVTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseGENRTLmodifiedHVTest { + static PhaseGENRTLmodifiedHV p; + + @BeforeEach + void setUp() { + p = new PhaseGENRTLmodifiedHV(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseGENRTLmodifiedWSTest.java b/src/test/java/neqsim/thermo/phase/PhaseGENRTLmodifiedWSTest.java new file mode 100644 index 0000000000..a3250c82da --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseGENRTLmodifiedWSTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseGENRTLmodifiedWSTest { + static PhaseGENRTLmodifiedWS p; + + @BeforeEach + void setUp() { + p = new PhaseGENRTLmodifiedWS(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseGERG2004EosTest.java b/src/test/java/neqsim/thermo/phase/PhaseGERG2004EosTest.java new file mode 100644 index 0000000000..0a7a81f80b --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseGERG2004EosTest.java @@ -0,0 +1,9 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Test; + +public class PhaseGERG2004EosTest { + @Test + void testAddcomponent() { + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseGEUnifacPSRKTest.java b/src/test/java/neqsim/thermo/phase/PhaseGEUnifacPSRKTest.java new file mode 100644 index 0000000000..13a20df50e --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseGEUnifacPSRKTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseGEUnifacPSRKTest { + static PhaseGEUnifacPSRK p; + + @BeforeEach + void setUp() { + p = new PhaseGEUnifacPSRK(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseGEUnifacTest.java b/src/test/java/neqsim/thermo/phase/PhaseGEUnifacTest.java new file mode 100644 index 0000000000..d3062a9e2f --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseGEUnifacTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseGEUnifacTest { + static PhaseGEUnifac p; + + @BeforeEach + void setUp() { + p = new PhaseGEUnifac(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRUTest.java b/src/test/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRUTest.java new file mode 100644 index 0000000000..430badb6e2 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseGEUnifacUMRPRUTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseGEUnifacUMRPRUTest { + static PhaseGEUnifacUMRPRU p; + + @BeforeEach + void setUp() { + p = new PhaseGEUnifacUMRPRU(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseGEUniquacTest.java b/src/test/java/neqsim/thermo/phase/PhaseGEUniquacTest.java new file mode 100644 index 0000000000..991efd9076 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseGEUniquacTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseGEUniquacTest { + static PhaseGEUniquac p; + + @BeforeEach + void setUp() { + p = new PhaseGEUniquac(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseGEUniquacmodifiedHVTest.java b/src/test/java/neqsim/thermo/phase/PhaseGEUniquacmodifiedHVTest.java new file mode 100644 index 0000000000..469aa27573 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseGEUniquacmodifiedHVTest.java @@ -0,0 +1,9 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Test; + +public class PhaseGEUniquacmodifiedHVTest { + @Test + void testAddcomponent() { + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseGEWilsonTest.java b/src/test/java/neqsim/thermo/phase/PhaseGEWilsonTest.java new file mode 100644 index 0000000000..e5fe86d5e3 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseGEWilsonTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseGEWilsonTest { + static PhaseGEWilson p; + + @BeforeEach + void setUp() { + p = new PhaseGEWilson(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseHydrateTest.java b/src/test/java/neqsim/thermo/phase/PhaseHydrateTest.java new file mode 100644 index 0000000000..7964934a99 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseHydrateTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseHydrateTest { + static PhaseHydrate p; + + @BeforeEach + void setUp() { + p = new PhaseHydrate(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseKentEisenbergTest.java b/src/test/java/neqsim/thermo/phase/PhaseKentEisenbergTest.java new file mode 100644 index 0000000000..a2d66172ed --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseKentEisenbergTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseKentEisenbergTest { + static PhaseKentEisenberg p; + + @BeforeEach + void setUp() { + p = new PhaseKentEisenberg(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosMod2004Test.java b/src/test/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosMod2004Test.java new file mode 100644 index 0000000000..2b95a0e5e2 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosMod2004Test.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseModifiedFurstElectrolyteEosMod2004Test { + static PhaseModifiedFurstElectrolyteEosMod2004 p; + + @BeforeEach + void setUp() { + p = new PhaseModifiedFurstElectrolyteEosMod2004(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosTest.java b/src/test/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosTest.java new file mode 100644 index 0000000000..9d65b2f1a9 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseModifiedFurstElectrolyteEosTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseModifiedFurstElectrolyteEosTest { + static PhaseModifiedFurstElectrolyteEos p; + + @BeforeEach + void setUp() { + p = new PhaseModifiedFurstElectrolyteEos(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhasePCSAFTRahmatTest.java b/src/test/java/neqsim/thermo/phase/PhasePCSAFTRahmatTest.java new file mode 100644 index 0000000000..1485258f1a --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhasePCSAFTRahmatTest.java @@ -0,0 +1,398 @@ +package neqsim.thermo.phase; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemPCSAFT; + +public class PhasePCSAFTRahmatTest { + static PhasePCSAFTRahmat p; + static PhasePCSAFTRahmat p2; + static SystemPCSAFT testSystem; + + @BeforeEach + void setUp() { + testSystem = new SystemPCSAFT(150.0, 10.0); + testSystem.addComponent("methane", 100.0); + testSystem.addComponent("n-hexane", 1000.0001); + testSystem.setMixingRule(1); + testSystem.createDatabase(true); + testSystem.init(0); + testSystem.init(3); + + p = (PhasePCSAFTRahmat) testSystem.getPhase(0); + } + + @Test + void testAddcomponent() { + p2 = new PhasePCSAFTRahmat(); + + Assertions.assertEquals(0, p2.getNumberOfComponents()); + + p2.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p2.getNumberOfComponents()); + + p2.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p2.getNumberOfComponents()); + } + + @Test + void testF_DISP1_SAFT() { + double value = p.F_DISP1_SAFT(); + assertEquals(-2656.5606478696354, value); + } + + @Test + void testF_DISP2_SAFT() { + double value = p.F_DISP2_SAFT(); + assertEquals(-1929.2979666587207, value); + } + + @Test + void testF_HC_SAFT() { + double value = p.F_HC_SAFT(); + assertEquals(501.428925899878, value); + } + + @Test + void testCalcF1dispI1() { + double value = p.calcF1dispI1(); + assertEquals(0.7447173911719432, value); + } + + @Test + void testCalcF1dispI1dN() { + double value = p.calcF1dispI1dN(); + assertEquals(0.8885712115632445, value); + } + + @Test + void testCalcF1dispI1dNdN() { + double value = p.calcF1dispI1dNdN(); + assertEquals(-0.3783996289387171, value); + } + + @Test + void testCalcF1dispI1dNdNdN() { + double value = p.calcF1dispI1dNdNdN(); + assertEquals(-19.504810659834753, value); + } + + @Test + void testCalcF1dispI1dm() { + double value = p.calcF1dispI1dm(); + assertEquals(-0.04871346995167202, value); + } + + @Test + void testCalcF1dispSumTerm() { + double value = p.calcF1dispSumTerm(); + assertEquals(7.022486947548597E-28, value); + } + + @Test + void testCalcF2dispI2() { + double value = p.calcF2dispI2(); + assertEquals(0.5114103946892024, value); + } + + @Test + void testCalcF2dispI2dN() { + double value = p.calcF2dispI2dN(); + assertEquals(2.075396158614915, value); + } + + @Test + void testCalcF2dispI2dNdN() { + double value = p.calcF2dispI2dNdN(); + assertEquals(-10.085652314796853, value); + } + + @Test + void testCalcF2dispI2dNdNdN() { + double value = p.calcF2dispI2dNdNdN(); + assertEquals(53.904528812197945, value); + } + + @Test + void testCalcF2dispI2dm() { + double value = p.calcF2dispI2dm(); + assertEquals(-0.05282097926626965, value); + } + + @Test + void testCalcF2dispSumTerm() { + double value = p.calcF2dispSumTerm(); + assertEquals(1.0974418484311756E-27, value); + } + + @Test + void testCalcF2dispZHC() { + double value = p.calcF2dispZHC(); + assertEquals(0.47149436306641834, value); + } + + @Test + void testCalcF2dispZHCdN() { + double value = p.calcF2dispZHCdN(); + assertEquals(-5.447711889103666, value); + } + + @Test + void testCalcF2dispZHCdNdN() { + double value = p.calcF2dispZHCdNdN(); + assertEquals(75.24049982033125, value); + } + + @Test + void testCalcF2dispZHCdNdNdN() { + double value = p.calcF2dispZHCdNdNdN(); + assertEquals(279935.2725213402, value, 0.001); + } + + @Test + void testCalcF2dispZHCdm() { + double value = p.calcF2dispZHCdm(); + assertEquals(-0.06098259714, value, 0.001); + } + + @Test + void testCalcdF1dispI1dT() { + double value = p.calcdF1dispI1dT(); + assertEquals(-2.467132676347459E-24, value, 1e-20); + } + + @Test + void testCalcdF1dispSumTermdT() { + double value = p.calcdF1dispSumTermdT(); + assertEquals(-4.6816579650323984E-30, value); + } + + @Test + void testCalcdF2dispI2dT() { + double value = p.calcdF2dispI2dT(); + assertEquals(-5.762371785911064E-24, value); + } + + @Test + void testCalcdF2dispSumTermdT() { + double value = p.calcdF2dispSumTermdT(); + assertEquals(-1.4632557979082342E-29, value); + } + + @Test + void testCalcdF2dispZHCdT() { + double value = p.calcdF2dispZHCdT(); + assertEquals(1.51244510048084E-23, value); + } + + @Test + void testCalcdSAFT() { + double value = p.calcdSAFT(); + assertEquals(1.5637585192262192E-28, value); + } + + @Test + void testCalcdmeanSAFT() { + double value = p.calcdmeanSAFT(); + assertEquals(3.7908367828047096E-10, value); + } + + @Test + void testCalcmSAFT() { + double value = p.calcmSAFT(); + assertEquals(2.8705454715504115, value); + } + + @Test + void testCalcmdSAFT() { + double value = p.calcmdSAFT(); + assertEquals(1.5637585192262194E-28, value); + } + + @Test + void testCalcmmin1SAFT() { + double value = p.calcmmin1SAFT(); + assertEquals(1.8705454715504115, value); + } + + @Test + void testDF_DISP1_SAFTdT() {} + + @Test + void testDF_DISP1_SAFTdV() {} + + @Test + void testDF_DISP1_SAFTdVdV() {} + + @Test + void testDF_DISP1_SAFTdVdVdV() {} + + @Test + void testDF_DISP2_SAFTdT() {} + + @Test + void testDF_DISP2_SAFTdV() {} + + @Test + void testDF_DISP2_SAFTdVdV() {} + + @Test + void testDF_DISP2_SAFTdVdVdV() {} + + @Test + void testDF_HC_SAFTdT() {} + + @Test + void testDF_HC_SAFTdV() {} + + @Test + void testDF_HC_SAFTdVdV() {} + + @Test + void testDF_HC_SAFTdVdVdV() {} + + @Test + void testDFdT() {} + + @Test + void testDFdV() {} + + @Test + void testDFdVdV() {} + + @Test + void testDFdVdVdV() {} + + @Test + void testGetAHSSAFT() {} + + @Test + void testGetDSAFT() {} + + @Test + void testGetDgHSSAFTdN() {} + + @Test + void testGetDmeanSAFT() {} + + @Test + void testGetDnSAFTdV() {} + + @Test + void testGetF() {} + + @Test + void testGetF1dispI1() {} + + @Test + void testGetF1dispSumTerm() {} + + @Test + void testGetF1dispVolTerm() {} + + @Test + void testGetF2dispI2() {} + + @Test + void testGetF2dispSumTerm() {} + + @Test + void testGetF2dispZHC() {} + + @Test + void testGetF2dispZHCdN() {} + + @Test + void testGetF2dispZHCdm() {} + + @Test + void testGetGhsSAFT() {} + + @Test + void testGetMmin1SAFT() {} + + @Test + void testGetNSAFT() {} + + @Test + void testGetNmSAFT() {} + + @Test + void testGetVolumeSAFT() {} + + @Test + void testGetaSAFT() {} + + @Test + void testGetaSAFTdm() {} + + @Test + void testGetdDSAFTdT() {} + + @Test + void testGetmSAFT() {} + + @Test + void testGetmdSAFT() {} + + @Test + void testInit() { + p.init(); + } + + @Test + void testMolarVolume() {} + + @Test + void testSetAHSSAFT() {} + + @Test + void testSetDSAFT() {} + + @Test + void testSetDgHSSAFTdN() {} + + @Test + void testSetDmeanSAFT() {} + + @Test + void testSetDnSAFTdV() {} + + @Test + void testSetF1dispVolTerm() {} + + @Test + void testSetF2dispI2() {} + + @Test + void testSetF2dispSumTerm() {} + + @Test + void testSetF2dispZHC() {} + + @Test + void testSetF2dispZHCdm() {} + + @Test + void testSetGhsSAFT() {} + + @Test + void testSetMmin1SAFT() {} + + @Test + void testSetNSAFT() {} + + @Test + void testSetNmSAFT() {} + + @Test + void testSetVolumeSAFT() {} + + @Test + void testSetmSAFT() {} + + @Test + void testSetmdSAFT() {} +} diff --git a/src/test/java/neqsim/thermo/phase/PhasePCSAFTTest.java b/src/test/java/neqsim/thermo/phase/PhasePCSAFTTest.java new file mode 100644 index 0000000000..dcfbca06c3 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhasePCSAFTTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhasePCSAFTTest { + static PhasePCSAFT p; + + @BeforeEach + void setUp() { + p = new PhasePCSAFT(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhasePCSAFTaTest.java b/src/test/java/neqsim/thermo/phase/PhasePCSAFTaTest.java new file mode 100644 index 0000000000..f1e8708a74 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhasePCSAFTaTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhasePCSAFTaTest { + static PhasePCSAFTa p; + + @BeforeEach + void setUp() { + p = new PhasePCSAFTa(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhasePrCPATest.java b/src/test/java/neqsim/thermo/phase/PhasePrCPATest.java new file mode 100644 index 0000000000..61365244b3 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhasePrCPATest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhasePrCPATest { + static PhasePrCPA p; + + @BeforeEach + void setUp() { + p = new PhasePrCPA(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhasePrEosTest.java b/src/test/java/neqsim/thermo/phase/PhasePrEosTest.java new file mode 100644 index 0000000000..b77d9388c7 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhasePrEosTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhasePrEosTest { + static PhasePrEos p; + + @BeforeEach + void setUp() { + p = new PhasePrEos(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhasePrEosvolcorTest.java b/src/test/java/neqsim/thermo/phase/PhasePrEosvolcorTest.java new file mode 100644 index 0000000000..dad4efa572 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhasePrEosvolcorTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhasePrEosvolcorTest { + static PhasePrEosvolcor p; + + @BeforeEach + void setUp() { + p = new PhasePrEosvolcor(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseRKTest.java b/src/test/java/neqsim/thermo/phase/PhaseRKTest.java new file mode 100644 index 0000000000..c2004dfa40 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseRKTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseRKTest { + static PhaseRK p; + + @BeforeEach + void setUp() { + p = new PhaseRK(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseSrkCPA_proceduralMatricesTest.java b/src/test/java/neqsim/thermo/phase/PhaseSrkCPA_proceduralMatricesTest.java new file mode 100644 index 0000000000..900df3df69 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseSrkCPA_proceduralMatricesTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseSrkCPA_proceduralMatricesTest { + static PhaseSrkCPA_proceduralMatrices p; + + @BeforeEach + void setUp() { + p = new PhaseSrkCPA_proceduralMatrices(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseSrkCPAojAlgoTest.java b/src/test/java/neqsim/thermo/phase/PhaseSrkCPAojAlgoTest.java new file mode 100644 index 0000000000..5da225d401 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseSrkCPAojAlgoTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseSrkCPAojAlgoTest { + static PhaseSrkCPAojAlgo p; + + @BeforeEach + void setUp() { + p = new PhaseSrkCPAojAlgo(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseSrkCPAsOldTest.java b/src/test/java/neqsim/thermo/phase/PhaseSrkCPAsOldTest.java new file mode 100644 index 0000000000..e3e52c750f --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseSrkCPAsOldTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseSrkCPAsOldTest { + static PhaseSrkCPAsOld p; + + @BeforeEach + void setUp() { + p = new PhaseSrkCPAsOld(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseSrkCPAsTest.java b/src/test/java/neqsim/thermo/phase/PhaseSrkCPAsTest.java new file mode 100644 index 0000000000..9d23b14f46 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseSrkCPAsTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseSrkCPAsTest { + static PhaseSrkCPAs p; + + @BeforeEach + void setUp() { + p = new PhaseSrkCPAs(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseSrkEosTest.java b/src/test/java/neqsim/thermo/phase/PhaseSrkEosTest.java new file mode 100644 index 0000000000..1472cafaed --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseSrkEosTest.java @@ -0,0 +1,62 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseSrkEosTest { + static PhaseSrkEos p; + + @BeforeEach + void setUp() { + p = new PhaseSrkEos(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + Assertions.assertFalse(p.hasComponent("ethane")); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + Assertions.assertTrue(p.hasComponent("ethane")); + + // Expects True because C2 normalized -> ethane + Assertions.assertTrue(p.hasComponent("C2")); + // Expects True because was created as ethane + Assertions.assertTrue(p.hasComponent("ethane", false)); + // expects False because C2 is not equal to ethane + Assertions.assertFalse(p.hasComponent("C2", false)); + + try { + p.addComponent("methane", 0, 0, 0); + } catch (Exception e) { + // Do nothing. + } + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + String[] d = p.getComponentNames(); + Assertions.assertTrue(d[0].equals("ethane")); + Assertions.assertTrue(d[1].equals("methane")); + } + + @Test + void testClone() { + PhaseSrkEos p2 = null; + + for (PhaseType pt : PhaseType.values()) { + // System.out.println("Set phase type to " + pt); + p.setType(pt); + p2 = p.clone(); + Assertions.assertEquals(p.getType(), p2.getType()); + } + + p.setType(PhaseType.GAS); + p2.setType(PhaseType.LIQUID); + + Assertions.assertNotEquals(p.getType(), p2.getType()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseSrkPenelouxEosTest.java b/src/test/java/neqsim/thermo/phase/PhaseSrkPenelouxEosTest.java new file mode 100644 index 0000000000..b7715920ea --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseSrkPenelouxEosTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseSrkPenelouxEosTest { + static PhaseSrkPenelouxEos p; + + @BeforeEach + void setUp() { + p = new PhaseSrkPenelouxEos(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseTSTEosTest.java b/src/test/java/neqsim/thermo/phase/PhaseTSTEosTest.java new file mode 100644 index 0000000000..196a189208 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseTSTEosTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseTSTEosTest { + static PhaseTSTEos p; + + @BeforeEach + void setUp() { + p = new PhaseTSTEos(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseTypeTest.java b/src/test/java/neqsim/thermo/phase/PhaseTypeTest.java new file mode 100644 index 0000000000..6261c84b74 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseTypeTest.java @@ -0,0 +1,17 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class PhaseTypeTest { + @SuppressWarnings("deprecation") + @Test + void testValues() { + for (PhaseType pt : PhaseType.values()) { + // System.out.println("Phase type: " + pt); + + Assertions.assertTrue(pt.getValue() >= 0); + Assertions.assertTrue(pt.getDesc().length() > 0); + } + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseUMRCPATest.java b/src/test/java/neqsim/thermo/phase/PhaseUMRCPATest.java new file mode 100644 index 0000000000..d1e8dedb67 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseUMRCPATest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseUMRCPATest { + static PhaseUMRCPA p; + + @BeforeEach + void setUp() { + p = new PhaseUMRCPA(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/PhaseWaxTest.java b/src/test/java/neqsim/thermo/phase/PhaseWaxTest.java new file mode 100644 index 0000000000..7bd9a42786 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/PhaseWaxTest.java @@ -0,0 +1,25 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PhaseWaxTest { + static PhaseWax p; + + @BeforeEach + void setUp() { + p = new PhaseWax(); + } + + @Test + void testAddcomponent() { + Assertions.assertEquals(0, p.getNumberOfComponents()); + + p.addComponent("ethane", 0, 0, 0); + Assertions.assertEquals(1, p.getNumberOfComponents()); + + p.addComponent("methane", 0, 0, 1); + Assertions.assertEquals(2, p.getNumberOfComponents()); + } +} diff --git a/src/test/java/neqsim/thermo/phase/StateOfMatterTest.java b/src/test/java/neqsim/thermo/phase/StateOfMatterTest.java new file mode 100644 index 0000000000..f4bebc35b4 --- /dev/null +++ b/src/test/java/neqsim/thermo/phase/StateOfMatterTest.java @@ -0,0 +1,55 @@ +package neqsim.thermo.phase; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class StateOfMatterTest { + @Test + void testFromPhaseType() { + Assertions.assertEquals(StateOfMatter.GAS, StateOfMatter.fromPhaseType(PhaseType.GAS)); + Assertions.assertEquals(StateOfMatter.LIQUID, StateOfMatter.fromPhaseType(PhaseType.LIQUID)); + Assertions.assertEquals(StateOfMatter.LIQUID, StateOfMatter.fromPhaseType(PhaseType.OIL)); + Assertions.assertEquals(StateOfMatter.LIQUID, StateOfMatter.fromPhaseType(PhaseType.AQUEOUS)); + Assertions.assertEquals(StateOfMatter.SOLID, StateOfMatter.fromPhaseType(PhaseType.SOLID)); + Assertions.assertEquals(StateOfMatter.SOLID, + StateOfMatter.fromPhaseType(PhaseType.SOLIDCOMPLEX)); + Assertions.assertEquals(StateOfMatter.SOLID, StateOfMatter.fromPhaseType(PhaseType.HYDRATE)); + Assertions.assertEquals(StateOfMatter.SOLID, StateOfMatter.fromPhaseType(PhaseType.WAX)); + } + + @Test + void testIsGas() { + Assertions.assertTrue(StateOfMatter.isGas(PhaseType.GAS)); + Assertions.assertFalse(StateOfMatter.isGas(PhaseType.LIQUID)); + Assertions.assertFalse(StateOfMatter.isGas(PhaseType.OIL)); + Assertions.assertFalse(StateOfMatter.isGas(PhaseType.AQUEOUS)); + Assertions.assertFalse(StateOfMatter.isGas(PhaseType.SOLID)); + Assertions.assertFalse(StateOfMatter.isGas(PhaseType.SOLIDCOMPLEX)); + Assertions.assertFalse(StateOfMatter.isGas(PhaseType.HYDRATE)); + Assertions.assertFalse(StateOfMatter.isGas(PhaseType.WAX)); + } + + @Test + void testIsLiquid() { + Assertions.assertFalse(StateOfMatter.isLiquid(PhaseType.GAS)); + Assertions.assertTrue(StateOfMatter.isLiquid(PhaseType.LIQUID)); + Assertions.assertTrue(StateOfMatter.isLiquid(PhaseType.OIL)); + Assertions.assertTrue(StateOfMatter.isLiquid(PhaseType.AQUEOUS)); + Assertions.assertFalse(StateOfMatter.isLiquid(PhaseType.SOLID)); + Assertions.assertFalse(StateOfMatter.isLiquid(PhaseType.SOLIDCOMPLEX)); + Assertions.assertFalse(StateOfMatter.isLiquid(PhaseType.HYDRATE)); + Assertions.assertFalse(StateOfMatter.isLiquid(PhaseType.WAX)); + } + + @Test + void testIsSolid() { + Assertions.assertFalse(StateOfMatter.isSolid(PhaseType.GAS)); + Assertions.assertFalse(StateOfMatter.isSolid(PhaseType.LIQUID)); + Assertions.assertFalse(StateOfMatter.isSolid(PhaseType.OIL)); + Assertions.assertFalse(StateOfMatter.isSolid(PhaseType.AQUEOUS)); + Assertions.assertTrue(StateOfMatter.isSolid(PhaseType.SOLID)); + Assertions.assertTrue(StateOfMatter.isSolid(PhaseType.SOLIDCOMPLEX)); + Assertions.assertTrue(StateOfMatter.isSolid(PhaseType.HYDRATE)); + Assertions.assertTrue(StateOfMatter.isSolid(PhaseType.WAX)); + } +} diff --git a/src/test/java/neqsim/thermo/system/SystemElectrolyteCPATest.java b/src/test/java/neqsim/thermo/system/SystemElectrolyteCPATest.java index 32cd782b23..df3558a0b1 100644 --- a/src/test/java/neqsim/thermo/system/SystemElectrolyteCPATest.java +++ b/src/test/java/neqsim/thermo/system/SystemElectrolyteCPATest.java @@ -1,9 +1,12 @@ package neqsim.thermo.system; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import neqsim.thermo.phase.PhaseType; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** @@ -15,56 +18,113 @@ * @version $Id: $Id * @since 2.2.3 */ -public class SystemElectrolyteCPATest extends neqsim.NeqSimTest{ - static SystemElectrolyteCPA thermoSystem; +public class SystemElectrolyteCPATest extends neqsim.NeqSimTest { + static SystemInterface thermoSystem; + static ThermodynamicOperations testOps; + static neqsim.thermo.ThermodynamicModelTest testModel = null; - /** - *

- * setUp. - *

- */ - @BeforeAll - public static void setUp() { - thermoSystem = new SystemElectrolyteCPA(298.15, 1.01325); - thermoSystem.addComponent("water", 1.0); - thermoSystem.addComponent("methane", 0.1); - thermoSystem.addComponent("Na+", 0.001); - thermoSystem.addComponent("Cl-", 0.001); - thermoSystem.setMixingRule(4); - } + /** + *

+ * setUp. + *

+ */ + @BeforeAll + public static void setUp() { + thermoSystem = new SystemElectrolyteCPAstatoil(298.15, 10.01325); + thermoSystem.addComponent("methane", 0.1); + thermoSystem.addComponent("water", 1.0); + thermoSystem.addComponent("Na+", 0.001); + thermoSystem.addComponent("Cl-", 0.001); + thermoSystem.setMixingRule(10); + testModel = new neqsim.thermo.ThermodynamicModelTest(thermoSystem); + testModel.setMaxError(1e-10); + testOps = new ThermodynamicOperations(thermoSystem); + testOps.TPflash(); + thermoSystem.initProperties(); + } - /** - *

- * tearDown. - *

- */ - @AfterAll - public static void tearDown() {} + /** + *

+ * tearDown. + *

+ */ + @AfterAll + public static void tearDown() {} - /** - *

- * testTPflash. - *

- */ - @Test - public void testTPflash() { - ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem); - thermoSystem.init(0); - thermoSystem.initPhysicalProperties(); + /** + *

+ * testTPflash. + *

+ */ + @Test + public void testTPflash() { + assertEquals(2, thermoSystem.getNumberOfPhases()); + } - testOps.TPflash(); - assertEquals(2, thermoSystem.getNumberOfPhases()); - } + /** + *

+ * testinitPhysicalProperties. + *

+ */ + @Test + public void testDensity() { + assertEquals(6.594232943612613, thermoSystem.getPhase(PhaseType.GAS).getDensity("kg/m3"), 0.01); + assertEquals(996.5046667778549, thermoSystem.getPhase(PhaseType.AQUEOUS).getDensity("kg/m3"), + 0.01); + } - /** - *

- * initPhysicalProperties. - *

- */ - @Test - public void initPhysicalProperties() { - thermoSystem.initPhysicalProperties(); - assertEquals(thermoSystem.getPhase(0).getPhysicalProperties().getDensity(), - thermoSystem.getPhase(0).getPhysicalProperties().getDensity()); - } + /** + *

+ * testFugacityCoefficients. + *

+ */ + @Test + @DisplayName("test the fugacity coefficients calculated") + public void testFugacityCoefficients() { + assertTrue(testModel.checkFugacityCoefficients()); + } + + /** + *

+ * checkFugacityCoefficientsDP. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to pressure") + public void checkFugacityCoefficientsDP() { + assertTrue(testModel.checkFugacityCoefficientsDP()); + } + + /** + *

+ * checkFugacityCoefficientsDT. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to temperature") + public void checkFugacityCoefficientsDT() { + assertTrue(testModel.checkFugacityCoefficientsDT()); + } + + /** + *

+ * checkFugacityCoefficientsDn. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to composition") + public void checkFugacityCoefficientsDn() { + assertTrue(testModel.checkFugacityCoefficientsDn()); + } + + /** + *

+ * checkFugacityCoefficientsDn2. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to composition (2nd method)") + public void checkFugacityCoefficientsDn2() { + assertTrue(testModel.checkFugacityCoefficientsDn2()); + } } diff --git a/src/test/java/neqsim/thermo/system/SystemFurstElectrolyteEosTest.java b/src/test/java/neqsim/thermo/system/SystemFurstElectrolyteEosTest.java index 29049c8ef3..a37accbf09 100644 --- a/src/test/java/neqsim/thermo/system/SystemFurstElectrolyteEosTest.java +++ b/src/test/java/neqsim/thermo/system/SystemFurstElectrolyteEosTest.java @@ -1,7 +1,11 @@ package neqsim.thermo.system; -import org.junit.jupiter.api.AfterAll; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import neqsim.thermodynamicOperations.ThermodynamicOperations; /** *

@@ -12,29 +16,103 @@ * @version $Id: $Id * @since 2.2.3 */ -public class SystemFurstElectrolyteEosTest extends neqsim.NeqSimTest{ - static SystemFurstElectrolyteEos thermoSystem; - - /** - *

- * setUp. - *

- */ - @BeforeAll - public static void setUp() { - thermoSystem = new SystemFurstElectrolyteEos(298.15, 10.01325); - thermoSystem.addComponent("methane", 1.0); - thermoSystem.addComponent("water", 1.0); - thermoSystem.addComponent("Na+", 0.01); - thermoSystem.addComponent("Cl-", 0.01); - thermoSystem.setMixingRule(4); - } - - /** - *

- * tearDown. - *

- */ - @AfterAll - public static void tearDown() {} +public class SystemFurstElectrolyteEosTest extends neqsim.NeqSimTest { + static SystemInterface thermoSystem; + static ThermodynamicOperations testOps; + static neqsim.thermo.ThermodynamicModelTest testModel = null; + + /** + *

+ * setUp. + *

+ */ + @BeforeAll + public static void setUp() { + thermoSystem = new SystemFurstElectrolyteEos(298.15, 10.01325); + thermoSystem.addComponent("methane", 0.1); + thermoSystem.addComponent("water", 1.0); + thermoSystem.addComponent("Na+", 0.001); + thermoSystem.addComponent("Cl-", 0.001); + thermoSystem.setMixingRule(4); + testModel = new neqsim.thermo.ThermodynamicModelTest(thermoSystem); + testOps = new ThermodynamicOperations(thermoSystem); + testOps.TPflash(); + thermoSystem.initProperties(); + } + + /** + *

+ * testTPflash. + *

+ */ + @Test + public void testTPflash() { + assertEquals(2, thermoSystem.getNumberOfPhases()); + } + + /** + *

+ * testinitPhysicalProperties. + *

+ */ + @Test + public void testinitPhysicalProperties() { + assertEquals(thermoSystem.getPhase(0).getPhysicalProperties().getDensity(), + thermoSystem.getPhase(0).getPhysicalProperties().getDensity()); + } + + /** + *

+ * testFugacityCoefficients. + *

+ */ + @Test + @DisplayName("test the fugacity coefficients calculated") + public void testFugacityCoefficients() { + assertTrue(testModel.checkFugacityCoefficients()); + } + + /** + *

+ * checkFugacityCoefficientsDP. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to pressure") + public void checkFugacityCoefficientsDP() { + assertTrue(testModel.checkFugacityCoefficientsDP()); + } + + /** + *

+ * checkFugacityCoefficientsDT. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to temperature") + public void checkFugacityCoefficientsDT() { + assertTrue(testModel.checkFugacityCoefficientsDT()); + } + + /** + *

+ * checkFugacityCoefficientsDn. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to composition") + public void checkFugacityCoefficientsDn() { + assertTrue(testModel.checkFugacityCoefficientsDn()); + } + + /** + *

+ * checkFugacityCoefficientsDn2. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to composition (2nd method)") + public void checkFugacityCoefficientsDn2() { + assertTrue(testModel.checkFugacityCoefficientsDn2()); + } } diff --git a/src/test/java/neqsim/thermo/system/SystemPCSAFTTest.java b/src/test/java/neqsim/thermo/system/SystemPCSAFTTest.java new file mode 100644 index 0000000000..6fccbe38de --- /dev/null +++ b/src/test/java/neqsim/thermo/system/SystemPCSAFTTest.java @@ -0,0 +1,22 @@ +package neqsim.thermo.system; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class SystemPCSAFTTest { + @Test + public void testInit() { + SystemInterface testSystem = new SystemPCSAFT(250.0, 10.0); + testSystem.addComponent("methane", 1.0); + testSystem.addComponent("n-hexane", 1.0); + testSystem.setMixingRule(1); + ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + ops.TPflash(); + testSystem.initProperties(); + System.out.println("test"); + double cp = testSystem.getCp(); + assertEquals(208.85116193406583, cp, 0.1); + + } +} diff --git a/src/test/java/neqsim/thermo/system/SystemPrEoSTest.java b/src/test/java/neqsim/thermo/system/SystemPrEoSTest.java new file mode 100644 index 0000000000..df738c0566 --- /dev/null +++ b/src/test/java/neqsim/thermo/system/SystemPrEoSTest.java @@ -0,0 +1,217 @@ +package neqsim.thermo.system; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class SystemPrEoSTest extends neqsim.NeqSimTest { + static neqsim.thermo.system.SystemInterface testSystem = null; + static neqsim.thermo.ThermodynamicModelTest testModel = null; + + /** + *

+ * setUp. + *

+ */ + @BeforeAll + public static void setUp() { + testSystem = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.addComponent("methane", 0.68); + testSystem.addComponent("ethane", 0.1); + testSystem.addComponent("n-heptane", 0.2); + testSystem.setMixingRule("classic"); + testModel = new neqsim.thermo.ThermodynamicModelTest(testSystem); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + } + + /** + *

+ * testMolarVolume. + *

+ */ + @Test + @DisplayName("test molarVolume calculation as well as unit conerters") + public void testMolarVolume() { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemPrEos(298.0, 1.0); + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.addComponent("methane", 0.68); + testSystem.addComponent("ethane", 0.1); + testSystem.setMixingRule("classic"); + testModel = new neqsim.thermo.ThermodynamicModelTest(testSystem); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + assertEquals(testSystem.getMolarVolume("m3/mol"), + testSystem.getMolarMass("kg/mol") / testSystem.getDensity("kg/m3")); + } + + /** + *

+ * testTPflash2. + *

+ */ + @Test + @DisplayName("test a TPflash2") + public void testTPflash2() { + assertEquals(2, testSystem.getNumberOfPhases()); + } + + /** + *

+ * testTPflash. + *

+ */ + @Test + @DisplayName("test a TPflash of the fluid (should return two phases)") + public void testTPflash() { + assertEquals(2, testSystem.getNumberOfPhases()); + } + + /** + *

+ * testFugacityCoefficients. + *

+ */ + @Test + @DisplayName("test the fugacity coefficients calculated") + public void testFugacityCoefficients() { + assertTrue(testModel.checkFugacityCoefficients()); + } + + /** + *

+ * checkFugacityCoefficientsDP. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to pressure") + public void checkFugacityCoefficientsDP() { + assertTrue(testModel.checkFugacityCoefficientsDP()); + } + + /** + *

+ * checkFugacityCoefficientsDT. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to temperature") + public void checkFugacityCoefficientsDT() { + assertTrue(testModel.checkFugacityCoefficientsDT()); + } + + /** + *

+ * checkFugacityCoefficientsDn. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to composition") + public void checkFugacityCoefficientsDn() { + assertTrue(testModel.checkFugacityCoefficientsDn()); + } + + /** + *

+ * checkFugacityCoefficientsDn2. + *

+ */ + @Test + @DisplayName("test derivative of fugacity coefficients with respect to composition (2nd method)") + public void checkFugacityCoefficientsDn2() { + assertTrue(testModel.checkFugacityCoefficientsDn2()); + } + + /** + *

+ * checkCompressibility. + *

+ */ + @Test + @DisplayName("calculate compressibility of gas phase") + public void checkCompressibility() { + assertEquals(0.9708455641951108, testSystem.getPhase("gas").getZ(), 1e-5); + } + + /** + *

+ * calcProperties. + *

+ */ + @Test + @DisplayName("calculate properties when flow rate is 0") + public void calcProperties() { + testSystem.setTotalFlowRate(1.0, "mol/sec"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + assertEquals(-165.60627184389855, testSystem.getEnthalpy("kJ/kg"), + Math.abs(-165.60627184389855 / 1000.0)); + } + + /** + *

+ * checkKappa. + *

+ */ + @Test + @DisplayName("check kappa of fluid and phase is the same") + public void checkKappa() { + neqsim.thermo.system.SystemPrEos testSystem = new neqsim.thermo.system.SystemPrEos(298.0, 75.0); + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.addComponent("methane", 0.68); + testSystem.addComponent("ethane", 0.1); + testSystem.setMixingRule("classic"); + testSystem.useVolumeCorrection(true); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + testSystem.getKappa(); + testSystem.getPhase("gas").getKappa(); + assertEquals(testSystem.getKappa(), testSystem.getPhase("gas").getKappa(), 1e-5); + assertEquals(0.817374332, testSystem.getZ(), 1e-6); + assertEquals(0.833031816, testSystem.getZvolcorr(), 1e-6); + assertEquals(0.833031816, testSystem.getPhase("gas").getZvolcorr(), 1e-6); + } + + /** + *

+ * checCompressibilityFunctions. + *

+ */ + @Test + @DisplayName("check compressibility functions") + public void checkCompressibilityFunctions() { + neqsim.thermo.system.SystemPrEos testSystem = new neqsim.thermo.system.SystemPrEos(298.0, 75.0); + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.addComponent("methane", 0.68); + testSystem.addComponent("ethane", 0.1); + testSystem.setMixingRule("classic"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + + double isoThermComp = testSystem.getPhase("gas").getIsothermalCompressibility(); + assertEquals(0.01566013036971859, isoThermComp, 1e-5); + + double isobaricThermalExpansivity = testSystem.getPhase("gas").getIsobaricThermalExpansivity(); + assertEquals(0.006177715706274527, isobaricThermalExpansivity, 1e-5); + + double compressibilityX = testSystem.getPhase("gas").getCompressibilityX(); + assertEquals(-1.8409592804698092, compressibilityX, 1e-5); + + double compressibilityY = testSystem.getPhase("gas").getCompressibilityY(); + assertEquals(-1.1745097777288942, compressibilityY, 1e-5); + } +} diff --git a/src/test/java/neqsim/thermo/system/SystemPrEosTest.java b/src/test/java/neqsim/thermo/system/SystemPrEosTest.java deleted file mode 100644 index 22e5a818ff..0000000000 --- a/src/test/java/neqsim/thermo/system/SystemPrEosTest.java +++ /dev/null @@ -1,162 +0,0 @@ -package neqsim.thermo.system; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import neqsim.thermodynamicOperations.ThermodynamicOperations; - -class SystemPrEoSTest extends neqsim.NeqSimTest{ - static neqsim.thermo.system.SystemInterface testSystem = null; - static neqsim.thermo.ThermodynamicModelTest testModel = null; - - /** - *

- * setUp. - *

- */ - @BeforeAll - public static void setUp() { - testSystem = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); - testSystem.addComponent("nitrogen", 0.01); - testSystem.addComponent("CO2", 0.01); - testSystem.addComponent("methane", 0.68); - testSystem.addComponent("ethane", 0.1); - testSystem.addComponent("n-heptane", 0.2); - testSystem.setMixingRule("classic"); - testModel = new neqsim.thermo.ThermodynamicModelTest(testSystem); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - testSystem.initProperties(); - } - - /** - *

- * testTPflash2. - *

- */ - @Test - @DisplayName("test a TPflash2") - public void testTPflash2() { - - - - assertEquals(2, testSystem.getNumberOfPhases()); - } - - /** - *

- * testTPflash. - *

- */ - @Test - @DisplayName("test a TPflash of the fluid (should return two phases)") - public void testTPflash() { - assertEquals(2, testSystem.getNumberOfPhases()); - } - - /** - *

- * testFugacityCoefficients. - *

- */ - @Test - @DisplayName("test the fugacity coefficients calculated") - public void testFugacityCoefficients() { - assertTrue(testModel.checkFugacityCoefficients()); - } - - /** - *

- * checkFugacityCoefficientsDP. - *

- */ - @Test - @DisplayName("test derivative of fugacity coefficients with respect to pressure") - public void checkFugacityCoefficientsDP() { - assertTrue(testModel.checkFugacityCoefficientsDP()); - } - - /** - *

- * checkFugacityCoefficientsDT. - *

- */ - @Test - @DisplayName("test derivative of fugacity coefficients with respect to temperature") - public void checkFugacityCoefficientsDT() { - assertTrue(testModel.checkFugacityCoefficientsDT()); - } - - /** - *

- * checkFugacityCoefficientsDn. - *

- */ - @Test - @DisplayName("test derivative of fugacity coefficients with respect to composition") - public void checkFugacityCoefficientsDn() { - assertTrue(testModel.checkFugacityCoefficientsDn()); - } - - /** - *

- * checkFugacityCoefficientsDn2. - *

- */ - @Test - @DisplayName("test derivative of fugacity coefficients with respect to composition (2nd method)") - public void checkFugacityCoefficientsDn2() { - assertTrue(testModel.checkFugacityCoefficientsDn2()); - } - - /** - *

- * checkCompressibility. - *

- */ - @Test - @DisplayName("calculate compressibility of gas phase") - public void checkCompressibility() { - assertEquals(0.9708455641951108, testSystem.getPhase("gas").getZ(), 1e-5); - } - - /** - *

- * calcProperties. - *

- */ - @Test - @DisplayName("calculate properties when flow rate is 0") - public void calcProperties() { - testSystem.setTotalFlowRate(1.0, "mol/sec"); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - testSystem.initProperties(); - assertEquals(-165.60627184389855, testSystem.getEnthalpy("kJ/kg"), - Math.abs(-165.60627184389855 / 1000.0)); - } - - /** - *

- * checkKappa. - *

- */ - @Test - @DisplayName("check kappa of fluid and phase is the same") - public void checkKappa() { - neqsim.thermo.system.SystemPrEos testSystem = new neqsim.thermo.system.SystemPrEos(298.0, 75.0); - testSystem.addComponent("nitrogen", 0.01); - testSystem.addComponent("CO2", 0.01); - testSystem.addComponent("methane", 0.68); - testSystem.addComponent("ethane", 0.1); - testSystem.setMixingRule("classic"); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - testSystem.initProperties(); - testSystem.getKappa(); - testSystem.getPhase("gas").getKappa(); - assertEquals(testSystem.getKappa(), testSystem.getPhase("gas").getKappa(), 1e-5); - } -} diff --git a/src/test/java/neqsim/thermo/system/SystemSrkCPAstatoilTest.java b/src/test/java/neqsim/thermo/system/SystemSrkCPAstatoilTest.java index f873055cec..a123c11885 100644 --- a/src/test/java/neqsim/thermo/system/SystemSrkCPAstatoilTest.java +++ b/src/test/java/neqsim/thermo/system/SystemSrkCPAstatoilTest.java @@ -47,11 +47,11 @@ public void testTPflash() { /** *

- * initPhysicalProperties. + * testinitPhysicalProperties. *

*/ @Test - public void initPhysicalProperties() { + public void testinitPhysicalProperties() { thermoSystem.initPhysicalProperties(); assertEquals(thermoSystem.getPhase(0).getPhysicalProperties().getDensity(), thermoSystem.getPhase(0).getPhysicalProperties().getDensity()); diff --git a/src/test/java/neqsim/thermo/system/SystemSrkSchwartzentruberEosTest.java b/src/test/java/neqsim/thermo/system/SystemSrkSchwartzentruberEosTest.java index 1b6fe239c8..2e943e39af 100644 --- a/src/test/java/neqsim/thermo/system/SystemSrkSchwartzentruberEosTest.java +++ b/src/test/java/neqsim/thermo/system/SystemSrkSchwartzentruberEosTest.java @@ -1,6 +1,7 @@ package neqsim.thermo.system; import org.junit.jupiter.api.BeforeAll; +import neqsim.thermo.ThermodynamicConstantsInterface; /** *

@@ -19,7 +20,8 @@ public class SystemSrkSchwartzentruberEosTest extends ModelBaseTest { */ @BeforeAll public static void setUp() { - thermoSystem = new SystemSrkSchwartzentruberEos(298.15, 1.01325); + thermoSystem = new SystemSrkSchwartzentruberEos(298.15, + ThermodynamicConstantsInterface.referencePressure); thermoSystem.addComponent("methanol", 1.0); thermoSystem.addComponent("water", 1.0); thermoSystem.createDatabase(true); diff --git a/src/test/java/neqsim/thermo/system/SystemThermoAddComponentTest.java b/src/test/java/neqsim/thermo/system/SystemThermoAddComponentTest.java index ae6c459dbe..7f5ffab634 100644 --- a/src/test/java/neqsim/thermo/system/SystemThermoAddComponentTest.java +++ b/src/test/java/neqsim/thermo/system/SystemThermoAddComponentTest.java @@ -20,7 +20,6 @@ void setup() { */ } - @Test void testAddComponent() { // Assure that System contains no components diff --git a/src/test/java/neqsim/thermo/system/SystemThermoSetMolarCompositionTest.java b/src/test/java/neqsim/thermo/system/SystemThermoSetMolarCompositionTest.java index 3530ce5a2f..ae619dec85 100644 --- a/src/test/java/neqsim/thermo/system/SystemThermoSetMolarCompositionTest.java +++ b/src/test/java/neqsim/thermo/system/SystemThermoSetMolarCompositionTest.java @@ -1,87 +1,104 @@ package neqsim.thermo.system; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -public class SystemThermoSetMolarCompositionTest extends neqsim.NeqSimTest{ - SystemInterface sys; - - @BeforeEach - void setup() { - sys = new SystemSrkEos(298.0, 300.0); - sys.addComponent("nitrogen", 0.64); - sys.addTBPfraction("C7", 1.06, 92.2 / 1000.0, 0.7324); - sys.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.88); - } - - @Test - void testSetMolarComposition() { - sys.setMolarComposition(new double[] { 1, 1.5, 1.75 }); - double[] molarComposition = sys.getMolarComposition(); - Assertions.assertEquals(0.23529411764705882, molarComposition[0], 0.0000001); - Assertions.assertEquals(0.35294117647058826, molarComposition[1], 0.0000001); - Assertions.assertEquals(0.411764705882353, molarComposition[2], 0.0000001); - - System.out.println(sys); - } - - @Test - void setMolarCompositionPlus() { - sys.getCharacterization().characterisePlusFraction(); - sys.setMolarCompositionPlus(new double[] { 1, 1.5, 1.75 }); - double[] molarComposition = sys.getMolarComposition(); - - Assertions.assertEquals(0.3999998435802131, molarComposition[0], 0.0000001); - Assertions.assertEquals(0.17255098326920942, molarComposition[1], 0.0000001); - Assertions.assertEquals(0.1310217963111427, molarComposition[2], 0.0000001); - System.out.println(sys); - } - - @Test - void testSetMolarCompositionOfPlusFluid() { - sys.setMolarCompositionOfPlusFluid(new double[] { 1, 1.5, 1.75 }); - double[] molarComposition = sys.getMolarComposition(); - - Assertions.assertEquals(0.39999999999999997, molarComposition[0], 0.0000001); - Assertions.assertEquals(0.6, molarComposition[1], 0.0000001); - Assertions.assertEquals(0.0, molarComposition[2], 0.0000001); - System.out.println(sys); - } - - @Test - void testNoFlow() { - sys.reset(); - RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, - () -> { - sys.setMolarComposition(new double[] { 1, 1.5, 1.75 }); - }); - Assertions.assertEquals( - "neqsim.util.exception.InvalidInputException: SystemSrkEos:setMolarComposition - Input totalFlow must be larger than 0 (1e-100) when setting molar composition", - thrown.getMessage()); - } - - @Test - void testNoFlowPlus() { - sys.reset(); - RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, - () -> { - sys.setMolarCompositionPlus(new double[] { 1, 1.5, 1.75 }); - }); - Assertions.assertEquals( - "neqsim.util.exception.InvalidInputException: SystemSrkEos:setMolarComposition - Input totalFlow must be larger than 0 (1e-100) when setting molar composition", - thrown.getMessage()); - } - - @Test - void testNoFlowPlusFluid() { - sys.reset(); - RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, - () -> { - sys.setMolarCompositionOfPlusFluid(new double[] { 1, 1.5, 1.75 }); - }); - Assertions.assertEquals( - "neqsim.util.exception.InvalidInputException: SystemSrkEos:setMolarComposition - Input totalFlow must be larger than 0 (1e-100) when setting molar composition", - thrown.getMessage()); - } +public class SystemThermoSetMolarCompositionTest extends neqsim.NeqSimTest { + static Logger logger = LogManager.getLogger(SystemThermoSetMolarCompositionTest.class); + + SystemInterface sys; + + @BeforeEach + void setup() { + sys = new SystemSrkEos(298.0, 300.0); + sys.addComponent("nitrogen", 0.64); + sys.addTBPfraction("C7", 1.06, 92.2 / 1000.0, 0.7324); + sys.addPlusFraction("C20", 10.62, 381.0 / 1000.0, 0.88); + } + + @Test + void testSetMolarComposition() { + sys.setMolarComposition(new double[] {1, 1.5, 1.75}); + double[] molarComposition = sys.getMolarComposition(); + Assertions.assertEquals(0.23529411764705882, molarComposition[0], 0.0000001); + Assertions.assertEquals(0.35294117647058826, molarComposition[1], 0.0000001); + Assertions.assertEquals(0.411764705882353, molarComposition[2], 0.0000001); + + logger.info(sys); + } + + @Test + void setMolarCompositionPlus() { + sys.getCharacterization().characterisePlusFraction(); + sys.setMolarCompositionPlus(new double[] {1, 1.5, 1.75}); + double[] molarComposition = sys.getMolarComposition(); + + Assertions.assertEquals(0.3999998435802131, molarComposition[0], 0.0000001); + Assertions.assertEquals(0.17255098326920942, molarComposition[1], 0.0000001); + Assertions.assertEquals(0.1310217963111427, molarComposition[2], 0.0000001); + logger.info(sys); + } + + @Test + void testSetMolarCompositionOfPlusFluid() { + sys.setMolarCompositionOfPlusFluid(new double[] {1, 1.5, 1.75}); + double[] molarComposition = sys.getMolarComposition(); + + Assertions.assertEquals(0.39999999999999997, molarComposition[0], 0.0000001); + Assertions.assertEquals(0.6, molarComposition[1], 0.0000001); + Assertions.assertEquals(0.0, molarComposition[2], 0.0000001); + logger.info(sys); + } + + @Test + void testNoFlow() { + sys.reset(); + RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, () -> { + sys.setMolarComposition(new double[] {1, 1.5, 1.75}); + }); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: SystemSrkEos:setMolarComposition - Input totalFlow must be larger than 0 (1e-100) when setting molar composition", + thrown.getMessage()); + } + + @Test + void testNoFlowPlus() { + sys.reset(); + RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, () -> { + sys.setMolarCompositionPlus(new double[] {1, 1.5, 1.75}); + }); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: SystemSrkEos:setMolarComposition - Input totalFlow must be larger than 0 (1e-100) when setting molar composition", + thrown.getMessage()); + } + + @Test + void testNoFlowPlusFluid() { + sys.reset(); + RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, () -> { + sys.setMolarCompositionOfPlusFluid(new double[] {1, 1.5, 1.75}); + }); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: SystemSrkEos:setMolarComposition - Input totalFlow must be larger than 0 (1e-100) when setting molar composition", + thrown.getMessage()); + } + + @Test + void setFlowRateTest() { + sys.init(0); + double liqDensity = sys.getIdealLiquidDensity("gr/cm3"); + assertEquals(0.8762236458342041, liqDensity, 1e-3); + liqDensity = sys.getIdealLiquidDensity("kg/m3"); + assertEquals(876.2236458342041, liqDensity, 1e-3); + + sys.setTotalFlowRate(1000.0, "idSm3/hr"); + + double flowRate = sys.getFlowRate("kg/hr"); + + assertEquals(876223.6458342039, flowRate, 1e-3); + } } diff --git a/src/test/java/neqsim/thermo/system/SystemThermoTest.java b/src/test/java/neqsim/thermo/system/SystemThermoTest.java new file mode 100644 index 0000000000..2d6e940e35 --- /dev/null +++ b/src/test/java/neqsim/thermo/system/SystemThermoTest.java @@ -0,0 +1,121 @@ +package neqsim.thermo.system; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +class SystemThermoTest extends neqsim.NeqSimTest { + static neqsim.thermo.system.SystemInterface testSystem = null; + + /** + *

+ * setUp. + *

+ */ + @BeforeAll + public static void setUp() { + testSystem = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.addComponent("methane", 0.68); + testSystem.setMixingRule("classic"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + } + + /** + *

+ * setUp. + *

+ */ + @Test + public void testCp() { + neqsim.thermo.system.SystemPrEos testSystem = + new neqsim.thermo.system.SystemPrEos(273.15 + 40.0, 1.0); + testSystem.addComponent("methane", 10.01); + testSystem.addTBPfraction("C20", 10.68, 0.3, 0.85); + testSystem.setMixingRule("classic"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + assertEquals(2.00406932521, testSystem.getPhase(1).getCp("kJ/kgK"), 1e-6); + } + + /** + *

+ * test setPressure + *

+ */ + @Test + @DisplayName("test setPressure") + public void testTPflash2() { + assertEquals(10.0, testSystem.getPressure("bara")); + testSystem.setPressure(110000.0, "Pa"); + assertEquals(1.1, testSystem.getPressure()); + } + + /** + *

+ * testAddFluids + *

+ */ + @Test + @DisplayName("test addFluids with pseudo component") + public void testAddFluids() { + neqsim.thermo.system.SystemPrEos fluid1 = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); + fluid1.addComponent("methane", 1.0); + fluid1.addTBPfraction("C7", 1.0, 0.09, 0.81); + + neqsim.thermo.system.SystemPrEos fluid2 = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); + fluid2.addComponent("methane", 1.0); + fluid2.addTBPfraction("C7", 1.0, 0.09, 0.81); + + fluid1.addFluid(fluid2); + + assertEquals(2.0, fluid1.getComponent(0).getNumberOfmoles()); + assertEquals(2.0, fluid1.getComponent(1).getNumberOfmoles()); + + assertEquals(2.0, fluid1.getComponent("methane").getNumberOfmoles()); + assertEquals(2.0, fluid1.getComponent("C7_PC").getNumberOfmoles()); + + neqsim.thermo.system.SystemPrEos fluid3 = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); + fluid3.addComponent("nitrogen", 1.0); + fluid3.addTBPfraction("C8", 1.0, 0.092, 0.82); + + fluid1.addFluid(fluid3); + + assertEquals(2.0, fluid1.getComponent("methane").getNumberOfmoles()); + assertEquals(1.0, fluid1.getComponent("nitrogen").getNumberOfmoles()); + assertEquals(1.0, fluid1.getComponent("C8_PC").getNumberOfmoles()); + } + + /** + *

+ * testSetPressure + *

+ */ + @Test + public void testSetPressure() { + neqsim.thermo.system.SystemPrEos fluid = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); + fluid.addComponent("nitrogen", 1.0); + fluid.setPressure(0.0, "barg"); + + assertEquals(ThermodynamicConstantsInterface.referencePressure, fluid.getPressure("bara"), + 1e-4); + assertEquals(0.0, fluid.getPressure("barg"), 1e-4); + } + + @Test + @Disabled + void testDisplay() { + testSystem.display(); + + SystemEos s = new SystemPrEos(); + s.display(); + } +} diff --git a/src/test/java/neqsim/thermo/system/SystemUMRCPAEoStest.java b/src/test/java/neqsim/thermo/system/SystemUMRCPAEoStest.java index 4a43afb9ff..14c83345c3 100644 --- a/src/test/java/neqsim/thermo/system/SystemUMRCPAEoStest.java +++ b/src/test/java/neqsim/thermo/system/SystemUMRCPAEoStest.java @@ -21,36 +21,34 @@ class SystemUMRCPAEoStest extends neqsim.NeqSimTest { @BeforeAll public static void setUp() { // testSystem = new neqsim.thermo.system.SystemUMRPRUMCEos(298.0, 10.0); - //testSystem = new neqsim.thermo.system.SystemSrkCPA(400.0, 500.0); - //testSystem = new neqsim.thermo.system.SystemSrkCPA(400.0, 500.0); + // testSystem = new neqsim.thermo.system.SystemSrkCPA(400.0, 500.0); + // testSystem = new neqsim.thermo.system.SystemSrkCPA(400.0, 500.0); testSystem = new neqsim.thermo.system.SystemUMRCPAEoS(800, 110); // testSystem = new neqsim.thermo.system.SystemSrkEos(298.0, 10.0); - //testSystem.addComponent("nitrogen", 1); + // testSystem.addComponent("nitrogen", 1); testSystem.addComponent("water", 1); - //testSystem.addComponent("CO2", 0.01); - //testSystem.addComponent("methane", 0.68); - //testSystem.addComponent("ethane", 0.1); + // testSystem.addComponent("CO2", 0.01); + // testSystem.addComponent("methane", 0.68); + // testSystem.addComponent("ethane", 0.1); // testSystem.addComponent("n-heptane", 0.2); // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - //testSystem.setMixingRule(1); + // testSystem.setMixingRule(1); testModel = new neqsim.thermo.ThermodynamicModelTest(testSystem); // testModel = new neqsim.thermo.ThermodynamicModelTest(testSystem); ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); testSystem.init(0); testOps.TPflash(); testSystem.init(3); - //testSystem.initProperties(); + // testSystem.initProperties(); // testSystem.i } - - /** *

* testFugasities. *

*/ - //@Test + // @Test public void testFugasities() { testSystem.init(0); testSystem.init(1); @@ -61,7 +59,6 @@ public void testFugasities() { assertEquals(-0.002884922, fucoef, 1e-6); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); testOps.TPflash(); testSystem.initProperties(); @@ -81,14 +78,14 @@ public void testCompressibility() { // testSystem = new neqsim.thermo.system.SystemPr(298.0, 10.0); // testSystem = new SystemSrkEos(298.0, 10.0); // testSystem = new neqsim.thermo.system.SystemUMRPRUMCEos(298.0, 10.0); - //testSystem = new neqsim.thermo.system.SystemSrkCPA(400, 500); + // testSystem = new neqsim.thermo.system.SystemSrkCPA(400, 500); testSystem = new neqsim.thermo.system.SystemUMRCPAEoS(800, 110); testSystem.addComponent("water", 1); // testSystem.addComponent("CO2", 0.01); - //testSystem.addComponent("methane", 0.68); - //testSystem.addComponent("ethane", 0.1); + // testSystem.addComponent("methane", 0.68); + // testSystem.addComponent("ethane", 0.1); // testSystem.addComponent("n-heptane", 0.2); - //testSystem.setMixingRule(1); + // testSystem.setMixingRule(1); testModel = new neqsim.thermo.ThermodynamicModelTest(testSystem); // testModel = new neqsim.thermo.ThermodynamicModelTest(testSystem); ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); @@ -96,20 +93,24 @@ public void testCompressibility() { testOps.TPflash(); testSystem.init(3); testSystem.init(3); - System.out.println("molar volume gas+oil is " + testSystem.getMolarVolume()); - System.out.println("molar volume gas is " + testSystem.getPhase(0).getMolarVolume()); - System.out.println("fugacity of gas phase " + testSystem.getPhase(0).getFugacity(0)); - System.out.println("residual enthalpy of gas phase is " + testSystem.getPhase(0).getHresTP()); - System.out.println("isochoric heat capacity of gas phase is " + testSystem.getPhase(0).getCv("J/mol")); - System.out.println("isobaric heat capacity of gas phase is " + testSystem.getPhase(0).getCp("J/mol")); - System.out.println("internal energy of gas phase is " + testSystem.getPhase(0).getInternalEnergy()); - System.out.println("molar volume liquid is " + testSystem.getPhase(1).getMolarVolume()); - System.out.println("fugacity of gas phase " + testSystem.getPhase(1).getFugacity(0)); - System.out.println("enthalpy of gas phase is " + testSystem.getPhase(1).getEnthalpy("J/mol")); - System.out.println("isochoric heat capacity of gas phase is " + testSystem.getPhase(1).getCv("J/mol")); - //ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - //testOps.TPflash(); - + /* + * System.out.println("molar volume gas+oil is " + testSystem.getMolarVolume()); + * System.out.println("molar volume gas is " + testSystem.getPhase(0).getMolarVolume()); + * System.out.println("fugacity of gas phase " + testSystem.getPhase(0).getFugacity(0)); + * System.out.println("residual enthalpy of gas phase is " + + * testSystem.getPhase(0).getHresTP()); System.out.println( + * "isochoric heat capacity of gas phase is " + testSystem.getPhase(0).getCv("J/mol")); + * System.out .println("isobaric heat capacity of gas phase is " + + * testSystem.getPhase(0).getCp("J/mol")); System.out + * .println("internal energy of gas phase is " + testSystem.getPhase(0).getInternalEnergy()); + * System.out.println("molar volume liquid is " + testSystem.getPhase(1).getMolarVolume()); + * System.out.println("fugacity of gas phase " + testSystem.getPhase(1).getFugacity(0)); + * System.out.println("enthalpy of gas phase is " + + * testSystem.getPhase(1).getEnthalpy("J/mol")); System.out.println( + * "isochoric heat capacity of gas phase is " + testSystem.getPhase(1).getCv("J/mol")); // + * ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); // + * testOps.TPflash(); + */ // testSystem.initProperties(); // assertEquals(0.9711401538454589, testSystem.getPhase(0).getZ(), 0.001); } @@ -160,8 +161,8 @@ public void testFugacityCoefficients() { @Test @DisplayName("test derivative of fugacity coefficients with respect to pressure") public void checkFugacityCoefficientsDP() { - //testSystem.init(0); - //testSystem.init(3); + // testSystem.init(0); + // testSystem.init(3); assertTrue(testModel.checkFugacityCoefficientsDP()); } @@ -171,7 +172,7 @@ public void checkFugacityCoefficientsDP() { *

*/ - @Test + @Test @DisplayName("test derivative of fugacity coefficients with respect to temperature") public void checkFugacityCoefficientsDT() { assertTrue(testModel.checkFugacityCoefficientsDT()); @@ -182,7 +183,7 @@ public void checkFugacityCoefficientsDT() { * checkFugacityCoefficientsDn. *

*/ - //@Test + // @Test @DisplayName("test derivative of fugacity coefficients with respect to composition") public void checkFugacityCoefficientsDn() { assertTrue(testModel.checkFugacityCoefficientsDn()); @@ -193,18 +194,17 @@ public void checkFugacityCoefficientsDn() { * checkFugacityCoefficientsDn2. *

*/ - //@Test + // @Test @DisplayName("test derivative of fugacity coefficients with respect to composition (2nd method)") public void checkFugacityCoefficientsDn2() { assertTrue(testModel.checkFugacityCoefficientsDn2()); } - /** *

* checkPhaseEnvelope. *

- * + * * @throws Exception */ // @Test @@ -222,11 +222,11 @@ public void checkPhaseEnvelope() throws Exception { ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); try { testOps.calcPTphaseEnvelope(); - System.out.println("Cricondenbar " + (testOps.get("cricondenbar")[0] - 273.15) + " " - + testOps.get("cricondenbar")[1]); - } catch (Exception e) { + // System.out.println("Cricondenbar " + (testOps.get("cricondenbar")[0] - 273.15) + " " + // + testOps.get("cricondenbar")[1]); + } catch (Exception ex) { assertTrue(false); - throw new Exception(e); + throw new Exception(ex); } assertEquals(testOps.get("cricondenbar")[1], 130.686140727503, 0.02); } diff --git a/src/test/java/neqsim/thermo/system/SystemUMRPRUMCEosNewTest.java b/src/test/java/neqsim/thermo/system/SystemUMRPRUMCEosNewTest.java index 07c42ca571..14af4075e1 100644 --- a/src/test/java/neqsim/thermo/system/SystemUMRPRUMCEosNewTest.java +++ b/src/test/java/neqsim/thermo/system/SystemUMRPRUMCEosNewTest.java @@ -2,13 +2,18 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import neqsim.PVTsimulation.simulation.SaturationPressure; import neqsim.thermodynamicOperations.ThermodynamicOperations; class SystemUMRPRUMCEosNewTest extends neqsim.NeqSimTest { + static Logger logger = LogManager.getLogger(SystemUMRPRUMCEosNewTest.class); + static neqsim.thermo.system.SystemInterface testSystem = null; static neqsim.thermo.ThermodynamicModelTest testModel = null; neqsim.thermo.ThermodynamicModelTest fugTest; @@ -22,10 +27,10 @@ class SystemUMRPRUMCEosNewTest extends neqsim.NeqSimTest { public static void setUp() { // testSystem = new neqsim.thermo.system.SystemUMRPRUMCEos(298.0, 10.0); testSystem = new neqsim.thermo.system.SystemUMRPRUMCEosNew(298.0, 10.0); - //testSystem = new neqsim.thermo.system.SystemSrkEos(298.0, 10.0); + // testSystem = new neqsim.thermo.system.SystemSrkEos(298.0, 10.0); testSystem.addComponent("nitrogen", 0.7); - //testSystem.addComponent("CO2", 0.01); - //testSystem.addComponent("methane", 0.68); + // testSystem.addComponent("CO2", 0.01); + // testSystem.addComponent("methane", 0.68); testSystem.addComponent("ethane", 0.3); // testSystem.addComponent("n-heptane", 0.2); // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); @@ -36,13 +41,11 @@ public static void setUp() { ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); testOps.TPflash(); testSystem.init(0); - testSystem.init(3); - //testSystem.initProperties(); + testSystem.init(3); + // testSystem.initProperties(); // testSystem.i } - - /** *

* testFugasities. @@ -59,7 +62,6 @@ public void testFugasities() { assertEquals(-0.002884922, fucoef, 1e-6); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); testOps.TPflash(); testSystem.initProperties(); @@ -82,17 +84,17 @@ public void testCompressibility() { testSystem = new neqsim.thermo.system.SystemUMRPRUMCEosNew(298, 10); testSystem.addComponent("nitrogen", 0.7); // testSystem.addComponent("CO2", 0.01); - //testSystem.addComponent("methane", 0.68); - testSystem.addComponent("ethane", 0.3); + // testSystem.addComponent("methane", 0.68); + testSystem.addComponent("ethane", 0.3); // testSystem.addComponent("n-heptane", 0.2); - //testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); + // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); testSystem.setMixingRule(0); testSystem.init(0); // testSystem.init(1); testSystem.init(3); - System.out.println("molar volume gas+oil is " + testSystem.getMolarVolume()); - System.out.println("molar volume gas is " + testSystem.getPhase(0).getMolarVolume()); - System.out.println("molar volume liquid is " + testSystem.getPhase(1).getMolarVolume()); + logger.info("molar volume gas+oil is " + testSystem.getMolarVolume()); + logger.info("molar volume gas is " + testSystem.getPhase(0).getMolarVolume()); + logger.info("molar volume liquid is " + testSystem.getPhase(1).getMolarVolume()); // ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); // testOps.TPflash(); @@ -134,7 +136,7 @@ public void testTPflash() { public void testFugacityCoefficients() { assertTrue(testModel.checkFugacityCoefficients()); - // System.out.println("molar volume liquid is " + testSystem.((PhasePrEosvolcor) + // logger.info("molar volume liquid is " + testSystem.((PhasePrEosvolcor) // phase).getFC()); } @@ -146,7 +148,6 @@ public void testFugacityCoefficients() { @Test @DisplayName("test derivative of fugacity coefficients with respect to pressure") public void checkFugacityCoefficientsDP() { - assertTrue(testModel.checkFugacityCoefficientsDP()); } @@ -156,7 +157,7 @@ public void checkFugacityCoefficientsDP() { *

*/ - @Test + @Test @DisplayName("test derivative of fugacity coefficients with respect to temperature") public void checkFugacityCoefficientsDT() { assertTrue(testModel.checkFugacityCoefficientsDT()); @@ -167,7 +168,7 @@ public void checkFugacityCoefficientsDT() { * checkFugacityCoefficientsDn. *

*/ - @Test + @Test @DisplayName("test derivative of fugacity coefficients with respect to composition") public void checkFugacityCoefficientsDn() { assertTrue(testModel.checkFugacityCoefficientsDn()); @@ -178,21 +179,20 @@ public void checkFugacityCoefficientsDn() { * checkFugacityCoefficientsDn2. *

*/ - @Test + @Test @DisplayName("test derivative of fugacity coefficients with respect to composition (2nd method)") public void checkFugacityCoefficientsDn2() { assertTrue(testModel.checkFugacityCoefficientsDn2()); } - /** *

* checkPhaseEnvelope. *

- * + * * @throws Exception */ - @Test + @Test @DisplayName("calculate phase envelope using UMR") public void checkPhaseEnvelope() throws Exception { testSystem = new neqsim.thermo.system.SystemUMRPRUMCEos(298.0, 10.0); @@ -207,12 +207,68 @@ public void checkPhaseEnvelope() throws Exception { ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); try { testOps.calcPTphaseEnvelope(); - System.out.println("Cricondenbar " + (testOps.get("cricondenbar")[0] - 273.15) + " " + logger.info("Cricondenbar " + (testOps.get("cricondenbar")[0] - 273.15) + " " + testOps.get("cricondenbar")[1]); - } catch (Exception e) { + } catch (Exception ex) { assertTrue(false); - throw new Exception(e); + throw new Exception(ex); } assertEquals(testOps.get("cricondenbar")[1], 130.686140727503, 0.02); } + + /** + *

+ * checkPhaseEnvelope2. + *

+ * + * @throws Exception + */ + @Test + @DisplayName("calculate phase envelope using UMR") + public void checkPhaseEnvelope2() throws Exception { + testSystem = new neqsim.thermo.system.SystemUMRPRUMCEos(298.0, 10.0); + testSystem.addComponent("N2", 0.00675317857); + testSystem.addComponent("CO2", .02833662296); + testSystem.addComponent("methane", 0.8363194562); + testSystem.addComponent("ethane", 0.06934307324); + testSystem.addComponent("propane", 0.03645246567); + testSystem.addComponent("i-butane", 0.0052133558); + testSystem.addComponent("n-butane", 0.01013260919); + testSystem.addComponent("i-pentane", 0.00227310164); + testSystem.addComponent("n-pentane", 0.00224658464); + testSystem.addComponent("2-m-C5", 0.00049491); + testSystem.addComponent("3-m-C5", 0.00025783); + testSystem.addComponent("n-hexane", 0.00065099); + testSystem.addComponent("c-hexane", .00061676); + testSystem.addComponent("n-heptane", 0.00038552); + testSystem.addComponent("benzene", 0.00016852); + testSystem.addComponent("n-octane", 0.00007629); + testSystem.addComponent("c-C7", 0.0002401); + testSystem.addComponent("toluene", 0.0000993); + testSystem.addComponent("n-nonane", 0.00001943); + testSystem.addComponent("c-C8", 0.00001848); + testSystem.addComponent("m-Xylene", 0.00002216); + testSystem.addComponent("nC10", 0.00000905); + testSystem.addComponent("nC11", 0.000000001); + testSystem.addComponent("nC12", 0.000000001); + + testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); + testSystem.init(0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.calcPTphaseEnvelope(); + logger.info("Cricondenbar " + (testOps.get("cricondenbar")[0] - 273.15) + " " + + testOps.get("cricondenbar")[1]); + } catch (Exception ex) { + assertTrue(false); + throw new Exception(ex); + } + assertEquals((testOps.get("cricondenbar")[0] - 273.15), -11.09948347, 0.02); + assertEquals(testOps.get("cricondenbar")[1], 104.75329137038476, 0.02); + + testSystem.setTemperature(-11.09948347, "C"); + SaturationPressure satPresSim = new SaturationPressure(testSystem); + satPresSim.run(); + assertEquals(satPresSim.getThermoSystem().getPressure(), 104.7532, 0.001); + } } diff --git a/src/test/java/neqsim/thermo/util/example/ActivityCalc.java b/src/test/java/neqsim/thermo/util/example/ActivityCalc.java index a1c15e1d87..cc8db77078 100644 --- a/src/test/java/neqsim/thermo/util/example/ActivityCalc.java +++ b/src/test/java/neqsim/thermo/util/example/ActivityCalc.java @@ -3,45 +3,52 @@ * * Created on 5. mars 2002, 15:17 */ + package neqsim.thermo.util.example; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

ActivityCalc class.

+ *

+ * ActivityCalc class. + *

* * @author esol * @since 2.2.3 * @version $Id: $Id */ public class ActivityCalc { - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 42, 1.01325); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - testSystem.addComponent("TEG", 0.99); - testSystem.addComponent("water", 0.01); - - testSystem.createDatabase(true); - - testSystem.setMixingRule(10); - testSystem.init(0); - testSystem.init(1); - - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - } - - //testSystem.display(); - System.out.println("activity water " + testSystem.getPhase(1).getActivityCoefficient(1)); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = + new SystemSrkCPAstatoil(273.15 + 42, ThermodynamicConstantsInterface.referencePressure); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + + testSystem.addComponent("TEG", 0.99); + testSystem.addComponent("water", 0.01); + + testSystem.createDatabase(true); + + testSystem.setMixingRule(10); + testSystem.init(0); + testSystem.init(1); + + try { + testOps.bubblePointPressureFlash(false); + } catch (Exception ex) { } + + // testSystem.display(); + System.out.println("activity water " + testSystem.getPhase(1).getActivityCoefficient(1)); + } } diff --git a/src/test/java/neqsim/thermo/util/example/AmineFlash.java b/src/test/java/neqsim/thermo/util/example/AmineFlash.java index 0dbda2b11b..8bf2c09e33 100644 --- a/src/test/java/neqsim/thermo/util/example/AmineFlash.java +++ b/src/test/java/neqsim/thermo/util/example/AmineFlash.java @@ -2,56 +2,63 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemFurstElectrolyteEos; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

AmineFlash class.

+ *

+ * AmineFlash class. + *

* * @author esol * @since 2.2.3 * @version $Id: $Id */ public class AmineFlash { - static Logger logger = LogManager.getLogger(AmineFlash.class); + static Logger logger = LogManager.getLogger(AmineFlash.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemFurstElectrolyteEos(273.15 + 50, 1.01325); - // SystemInterface testSystem = new SystemElectrolyteCPA(273.15+40, 1.01325); - double molMDEA = 0.1; - double loading = 0.4; - double density = 1088; + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemFurstElectrolyteEos(273.15 + 50, + ThermodynamicConstantsInterface.referencePressure); + // SystemInterface testSystem = new SystemElectrolyteCPA(273.15+40, + // ThermodynamicConstantsInterface.referencePressure); + double molMDEA = 0.1; + double loading = 0.4; + double density = 1088; - // testSystem.addComponent("methane", loading*molMDEA*0.001); - testSystem.addComponent("CO2", loading * molMDEA); - testSystem.addComponent("water", 1.0 - molMDEA); - // testSystem.addComponent("Piperazine", 0.1*molMDEA); - testSystem.addComponent("MDEA", molMDEA); - testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - testSystem.init(1); + // testSystem.addComponent("methane", loading*molMDEA*0.001); + testSystem.addComponent("CO2", loading * molMDEA); + testSystem.addComponent("water", 1.0 - molMDEA); + // testSystem.addComponent("Piperazine", 0.1*molMDEA); + testSystem.addComponent("MDEA", molMDEA); + testSystem.chemicalReactionInit(); + // testSystem.createDatabase(true); + testSystem.setMixingRule(4); + testSystem.init(0); + testSystem.init(1); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error("err " + e.toString()); - } - double molprMDEA = (molMDEA / (1.0 + 0.30 * molMDEA)); - logger.info("mol % MDEA " + molprMDEA); - logger.info("molCO2/liter " - + loading * molprMDEA / testSystem.getPhase(1).getMolarMass() * density / 1e3); - logger.info("pressure " + testSystem.getPressure()); - logger.info("pH " + testSystem.getPhase(1).getpH()); - logger.info("Henrys Constant CO2 " + testSystem.calcHenrysConstant("CO2")); - testSystem.display(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error("err ", ex); } + double molprMDEA = (molMDEA / (1.0 + 0.30 * molMDEA)); + logger.info("mol % MDEA " + molprMDEA); + logger.info("molCO2/liter " + + loading * molprMDEA / testSystem.getPhase(1).getMolarMass() * density / 1e3); + logger.info("pressure " + testSystem.getPressure()); + logger.info("pH " + testSystem.getPhase(1).getpH()); + logger.info("Henrys Constant CO2 " + testSystem.calcHenrysConstant("CO2")); + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/BubbleFlash.java b/src/test/java/neqsim/thermo/util/example/BubbleFlash.java index 95208c8819..692b047cc2 100644 --- a/src/test/java/neqsim/thermo/util/example/BubbleFlash.java +++ b/src/test/java/neqsim/thermo/util/example/BubbleFlash.java @@ -16,44 +16,44 @@ * @version $Id: $Id */ public class BubbleFlash { - static Logger logger = LogManager.getLogger(BubbleFlash.class); + static Logger logger = LogManager.getLogger(BubbleFlash.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 25.0, 1.0); - // SystemInterface testSystem = new SystemSrkEos(288, 26.9); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 25.0, 1.0); + // SystemInterface testSystem = new SystemSrkEos(288, 26.9); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("PG", 0.05175); - // testSystem.addComponent("n-butane", 0.5175); - // testSystem.addComponent("TEG", 0.0000000225); + testSystem.addComponent("PG", 0.05175); + // testSystem.addComponent("n-butane", 0.5175); + // testSystem.addComponent("TEG", 0.0000000225); - // testSystem.addComponent("MEG", 30); - testSystem.createDatabase(true); - // 1- orginal no interaction 2- classic w interaction - // 3- Huron-Vidal 4- Wong-Sandler - testSystem.setMixingRule(10); - // testSystem.setMixingRule("HV", "UNIFAC_PSRK"); - try { - // testOps.dewPointPressureFlash(); - // testOps.bubblePointTemperatureFlash(); - testOps.TPflash(); - // testSystem.display(); - // testOps.constantPhaseFractionPressureFlash(1.0); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + // testSystem.addComponent("MEG", 30); + testSystem.createDatabase(true); + // 1- orginal no interaction 2- classic w interaction + // 3- Huron-Vidal 4- Wong-Sandler + testSystem.setMixingRule(10); + // testSystem.setMixingRule("HV", "UNIFAC_PSRK"); + try { + // testOps.dewPointPressureFlash(); + // testOps.bubblePointTemperatureFlash(); + testOps.TPflash(); + // testSystem.display(); + // testOps.constantPhaseFractionPressureFlash(1.0); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } - // System.out.println("wt% MEG " + - // 100*testSystem.getPhase(1).getComponent("MEG").getx()*testSystem.getPhase(1).getComponent("MEG").getMolarMass()/testSystem.getPhase(1).getMolarMass()); + // System.out.println("wt% MEG " + + // 100*testSystem.getPhase(1).getComponent("MEG").getx()*testSystem.getPhase(1).getComponent("MEG").getMolarMass()/testSystem.getPhase(1).getMolarMass()); - // testSystem.display(); - } + // testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/BubbleFlashCPA.java b/src/test/java/neqsim/thermo/util/example/BubbleFlashCPA.java index 129ab11196..33f06f01ef 100644 --- a/src/test/java/neqsim/thermo/util/example/BubbleFlashCPA.java +++ b/src/test/java/neqsim/thermo/util/example/BubbleFlashCPA.java @@ -16,72 +16,72 @@ * @version $Id: $Id */ public class BubbleFlashCPA { - static Logger logger = LogManager.getLogger(BubbleFlashCPA.class); + static Logger logger = LogManager.getLogger(BubbleFlashCPA.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 - 36.6, 63.2); - // SystemInterface testSystem = new SystemSrkEos(273.15- 50.6, 63.2); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 - 36.6, 63.2); + // SystemInterface testSystem = new SystemSrkEos(273.15- 50.6, 63.2); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // double x =0.99581 + // double x =0.99581 - testSystem.addComponent("nitrogen", 24856.5, "kg/hr"); - testSystem.addComponent("methane", 479618.17, "kg/hr"); - testSystem.addComponent("ethane", 65819, "kg/hr"); - testSystem.addComponent("propane", 51950, "kg/hr"); - testSystem.addComponent("i-butane", 6697, "kg/hr"); - testSystem.addComponent("n-butane", 6461, "kg/hr"); - testSystem.addComponent("n-pentane", 16.73, "kg/hr"); - testSystem.addComponent("i-pentane", 51.4, "kg/hr"); - // testSystem.addComponent("1-propanol", 17.9, "Nlitre/min"); - testSystem.addComponent("water", 0.9, "Nlitre/min"); + testSystem.addComponent("nitrogen", 24856.5, "kg/hr"); + testSystem.addComponent("methane", 479618.17, "kg/hr"); + testSystem.addComponent("ethane", 65819, "kg/hr"); + testSystem.addComponent("propane", 51950, "kg/hr"); + testSystem.addComponent("i-butane", 6697, "kg/hr"); + testSystem.addComponent("n-butane", 6461, "kg/hr"); + testSystem.addComponent("n-pentane", 16.73, "kg/hr"); + testSystem.addComponent("i-pentane", 51.4, "kg/hr"); + // testSystem.addComponent("1-propanol", 17.9, "Nlitre/min"); + testSystem.addComponent("water", 0.9, "Nlitre/min"); - testSystem.addComponent("MEG", 100.0); - testSystem.addComponent("TEG", 100.0); - /* - * testSystem.addComponent("methane", 69.243); - * - * testSystem.addComponent("CO2", 4.113); testSystem.addComponent("ethane", 8.732); - * testSystem.addComponent("propane", 4.27); testSystem.addComponent("n-pentane", 1.641); - * testSystem.addComponent("i-pentane", 0.877); - * - * testSystem.addComponent("benzene", 1.27); - * - * testSystem.addTBPfraction("C6", 1.49985, 86.178 / 1000.0, 0.664); - * testSystem.addTBPfraction("C7", 1.359864, 96.0 / 1000.0, 0.738); - * testSystem.addTBPfraction("C8", 0.939906, 107.0 / 1000.0, 0.765); - * testSystem.addTBPfraction("C9", 0.879912, 121.0 / 1000.0, 0.781); - * testSystem.addTBPfraction("C10", 0.45, 134.0 / 1000.0, 0.792); - */ - // testSystem.addPlusFraction("C11+", 3.44, 231.0/1000, 0.87); - // testSystem.getCharacterization().characterisePlusFraction(); + testSystem.addComponent("MEG", 100.0); + testSystem.addComponent("TEG", 100.0); + /* + * testSystem.addComponent("methane", 69.243); + * + * testSystem.addComponent("CO2", 4.113); testSystem.addComponent("ethane", 8.732); + * testSystem.addComponent("propane", 4.27); testSystem.addComponent("n-pentane", 1.641); + * testSystem.addComponent("i-pentane", 0.877); + * + * testSystem.addComponent("benzene", 1.27); + * + * testSystem.addTBPfraction("C6", 1.49985, 86.178 / 1000.0, 0.664); + * testSystem.addTBPfraction("C7", 1.359864, 96.0 / 1000.0, 0.738); + * testSystem.addTBPfraction("C8", 0.939906, 107.0 / 1000.0, 0.765); + * testSystem.addTBPfraction("C9", 0.879912, 121.0 / 1000.0, 0.781); + * testSystem.addTBPfraction("C10", 0.45, 134.0 / 1000.0, 0.792); + */ + // testSystem.addPlusFraction("C11+", 3.44, 231.0/1000, 0.87); + // testSystem.getCharacterization().characterisePlusFraction(); - testSystem.setMultiPhaseCheck(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - try { - // testOps.bubblePointTemperatureFlash(); - // testOps.dewPointTemperatureFlash(); - // testOps.bubblePointPressureFlash(false); - testOps.TPflash(); - } catch (Exception e) { - logger.error(e.toString()); - } + testSystem.setMultiPhaseCheck(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + try { + // testOps.bubblePointTemperatureFlash(); + // testOps.dewPointTemperatureFlash(); + // testOps.bubblePointPressureFlash(false); + testOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } - testSystem.saveFluid(37); - testSystem.display(); - testSystem.clone(); - logger.info("activity " + testSystem.getPhase(1).getActivityCoefficient(0)); + testSystem.saveFluid(37); + testSystem.display(); + testSystem.clone(); + logger.info("activity " + testSystem.getPhase(1).getActivityCoefficient(0)); - // thermo.ThermodynamicModelTest testModel = new - // thermo.ThermodynamicModelTest(testSystem); - // testModel.runTest(); - } + // thermo.ThermodynamicModelTest testModel = new + // thermo.ThermodynamicModelTest(testSystem); + // testModel.runTest(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/CricondenbarTest.java b/src/test/java/neqsim/thermo/util/example/CricondenbarTest.java index f1476701d8..28c92fb8e5 100644 --- a/src/test/java/neqsim/thermo/util/example/CricondenbarTest.java +++ b/src/test/java/neqsim/thermo/util/example/CricondenbarTest.java @@ -7,44 +7,48 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

CricondenbarTest class.

+ *

+ * CricondenbarTest class. + *

* * @author ESOL * @version $Id: $Id * @since 2.2.3 */ public class CricondenbarTest { - static Logger logger = LogManager.getLogger(CricondenbarTest.class); + static Logger logger = LogManager.getLogger(CricondenbarTest.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(249.02, 50.0); - testSystem.addComponent("methane", 0.943); - testSystem.addComponent("ethane", 0.027); - testSystem.addComponent("propane", 0.0074); - testSystem.addComponent("n-butane", 0.00049); - testSystem.addComponent("n-pentane", 0.001); - testSystem.addComponent("n-hexane", 0.0027); - testSystem.addComponent("nitrogen", 0.014); - // testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.init(0); - testSystem.init(1); - testSystem.display(); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(249.02, 50.0); + testSystem.addComponent("methane", 0.943); + testSystem.addComponent("ethane", 0.027); + testSystem.addComponent("propane", 0.0074); + testSystem.addComponent("n-butane", 0.00049); + testSystem.addComponent("n-pentane", 0.001); + testSystem.addComponent("n-hexane", 0.0027); + testSystem.addComponent("nitrogen", 0.014); + // testSystem.chemicalReactionInit(); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.init(0); + testSystem.init(1); + testSystem.display(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - // testSystem.setTemperature(250.0); - testOps.calcCricondenBar(); - // 8 testOps.TPflash(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); + try { + // testSystem.setTemperature(250.0); + testOps.calcCricondenBar(); + // 8 testOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/DewPointCurve.java b/src/test/java/neqsim/thermo/util/example/DewPointCurve.java index 14bf4f2ca2..81d6eb1416 100644 --- a/src/test/java/neqsim/thermo/util/example/DewPointCurve.java +++ b/src/test/java/neqsim/thermo/util/example/DewPointCurve.java @@ -16,83 +16,82 @@ * @version $Id: $Id */ public class DewPointCurve { - static Logger logger = LogManager.getLogger(DewPointCurve.class); + static Logger logger = LogManager.getLogger(DewPointCurve.class); - /** - *

- * main. - *

+ /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemPrEos(260.0, 5.0); + // testSystem = new SystemCSPsrkEos(290,50.6); + // SystemInterface testSystem = new SystemSrkEos(195.9488, 47.0); + // testSystem = new SystemPrEos(290,50.6); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("nitrogen", 14.0); + // testSystem.addComponent("methane", 93.505); + testSystem.addComponent("methane", 0.3371); + testSystem.addComponent("ethane", 0.3745); + testSystem.addComponent("propane", 0.1); + testSystem.addComponent("n-butane", 0.7153); + // testSystem2.addComponent("propane", 1.008); + // testSystem.addComponent("i-butane", 1.050); + testSystem.addComponent("n-butane", 10.465); + /* + * testSystem.addComponent("n-pentane", 2653); * - * @param args an array of {@link java.lang.String} objects + * testSystem.addComponent("n-hexane", 514.2); testSystem.addComponent("benzene", 61.03); + * testSystem.addComponent("toluene", 24.63); testSystem.addComponent("c-hexane", 45.23); + * testSystem.addComponent("n-heptane", 93.83); testSystem.addComponent("n-octane", 12.17); + * testSystem.addComponent("n-nonane", 0.03); testSystem.addComponent("nC10", 0.01); */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemPrEos(260.0, 5.0); - // testSystem = new SystemCSPsrkEos(290,50.6); - // SystemInterface testSystem = new SystemSrkEos(195.9488, 47.0); - // testSystem = new SystemPrEos(290,50.6); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("nitrogen", 14.0); - // testSystem.addComponent("methane", 93.505); - testSystem.addComponent("methane", 0.3371); - testSystem.addComponent("ethane", 0.3745); - testSystem.addComponent("propane", 0.1); - testSystem.addComponent("n-butane", 0.7153); - // testSystem2.addComponent("propane", 1.008); - // testSystem.addComponent("i-butane", 1.050); - testSystem.addComponent("n-butane", 10.465); - /* - * testSystem.addComponent("n-pentane", 2653); - * - * testSystem.addComponent("n-hexane", 514.2); testSystem.addComponent("benzene", 61.03); - * testSystem.addComponent("toluene", 24.63); testSystem.addComponent("c-hexane", 45.23); - * testSystem.addComponent("n-heptane", 93.83); testSystem.addComponent("n-octane", 12.17); - * testSystem.addComponent("n-nonane", 0.03); testSystem.addComponent("nC10", 0.01); - */ - // testSystem.addComponent("CO2", 1.0); - // testSystem.addComponent("water", 200.0e-4); - // testSystem.addComponent("i-butane", 0.6013); - testSystem.addComponent("n-butane", 1.018); - // testSystem.addComponent("n-hexane", 0.1018); - // testSystem.addComponent("n-heptane", 0.1757); - - testSystem.createDatabase(true); - // 1- orginal no interaction 2- classic w interaction - // 3- Huron-Vidal 4- Wong-Sandler - testSystem.setMixingRule(2); - // testSystem.setMixingRule("HV", "UNIFAC_PSRK"); - testSystem.init(0); + // testSystem.addComponent("CO2", 1.0); + // testSystem.addComponent("water", 200.0e-4); + // testSystem.addComponent("i-butane", 0.6013); + testSystem.addComponent("n-butane", 1.018); + // testSystem.addComponent("n-hexane", 0.1018); + // testSystem.addComponent("n-heptane", 0.1757); - try { - testOps.calcPTphaseEnvelope(true); - testOps.displayResult(); - // testOps.TPflash(); - // testOps.dewPointTemperatureFlash(); - // testSystem.display(); - // System.out.println("condensation rate: " + - // testOps.dewPointTemperatureCondensationRate() * 1e6 + " mg/K/Sm^3"); - // System.out.println("condensation rate: " + - // testOps.dewPointTemperatureCondensationRate() * 1e6 * 1.0 / - // testSystem.getPressure() * testSystem.getPhase(0).getZ() * - // testSystem.getTemperature() / 288.15 + " mg/K/Sm^3"); - } catch (Exception e) { - logger.error(e.toString()); - } + testSystem.createDatabase(true); + // 1- orginal no interaction 2- classic w interaction + // 3- Huron-Vidal 4- Wong-Sandler + testSystem.setMixingRule(2); + // testSystem.setMixingRule("HV", "UNIFAC_PSRK"); + testSystem.init(0); - // testSystem.dewPointCondensationRate() - /* - * System.out.println("temp " + (testSystem.getTemperature() - 273.15)); for (int i = 0; i < - * testSystem.getPhase(0).getNumberOfComponents(); i++) { - * System.out.println("unsymetric activity coeff " + - * testSystem.getPhase(1).getComponent(i).getName() + " " + - * testSystem.getPhase(1).getActivityCoefficientUnSymetric(i)); } for (int i = 0; i < - * testSystem.getPhase(0).getNumberOfComponents(); i++) { - * System.out.println("symetric activity coeff " + - * testSystem.getPhase(1).getComponent(i).getName() + " " + - * testSystem.getPhase(1).getActivityCoefficientSymetric(i)); } - * System.out.println("activity coeff " + testSystem.getPhase(1).getComponent(1).getName() + - * " " + testSystem.getPhase(1).getActivityCoefficient(1, 0)); - * - */ + try { + testOps.calcPTphaseEnvelope(true); + testOps.displayResult(); + // testOps.TPflash(); + // testOps.dewPointTemperatureFlash(); + // testSystem.display(); + // System.out.println("condensation rate: " + + // testOps.dewPointTemperatureCondensationRate() * 1e6 + " mg/K/Sm^3"); + // System.out.println("condensation rate: " + + // testOps.dewPointTemperatureCondensationRate() * 1e6 * 1.0 / + // testSystem.getPressure() * testSystem.getPhase(0).getZ() * + // testSystem.getTemperature() / 288.15 + " mg/K/Sm^3"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + + // testSystem.dewPointCondensationRate() + /* + * System.out.println("temp " + (testSystem.getTemperature() - 273.15)); for (int i = 0; i < + * testSystem.getPhase(0).getNumberOfComponents(); i++) { + * System.out.println("unsymetric activity coeff " + + * testSystem.getPhase(1).getComponent(i).getName() + " " + + * testSystem.getPhase(1).getActivityCoefficientUnSymetric(i)); } for (int i = 0; i < + * testSystem.getPhase(0).getNumberOfComponents(); i++) { + * System.out.println("symetric activity coeff " + + * testSystem.getPhase(1).getComponent(i).getName() + " " + + * testSystem.getPhase(1).getActivityCoefficientSymetric(i)); } + * System.out.println("activity coeff " + testSystem.getPhase(1).getComponent(1).getName() + " " + * + testSystem.getPhase(1).getActivityCoefficient(1, 0)); + */ + } } diff --git a/src/test/java/neqsim/thermo/util/example/FlashGasTest.java b/src/test/java/neqsim/thermo/util/example/FlashGasTest.java index 114e99d091..c48a2d418b 100644 --- a/src/test/java/neqsim/thermo/util/example/FlashGasTest.java +++ b/src/test/java/neqsim/thermo/util/example/FlashGasTest.java @@ -61,7 +61,7 @@ public void testPHflash() { fluid1.setPressure(P_bar[i]); thermoOps.PHflash(enthalpy[i]); errH[i] = fluid1.getTemperature() - T_C[i] - 273.15; - // System.out.println("err Enthalpy " + errH[i]); + // logger.info("err Enthalpy " + errH[i]); assertTrue(Math.abs(errH[i]) < 1e-2); } } @@ -75,7 +75,7 @@ public void testPSflash() { fluid1.setPressure(P_bar[i]); thermoOps.PSflash(entropy[i]); errS[i] = fluid1.getTemperature() - T_C[i] - 273.15; - // System.out.println("err " + errS[i]); + // logger.info("err " + errS[i]); assertTrue(Math.abs(errS[i]) < 1e-2); } } diff --git a/src/test/java/neqsim/thermo/util/example/FlashOilTest.java b/src/test/java/neqsim/thermo/util/example/FlashOilTest.java index 2065dc27c0..f7cd948e5f 100644 --- a/src/test/java/neqsim/thermo/util/example/FlashOilTest.java +++ b/src/test/java/neqsim/thermo/util/example/FlashOilTest.java @@ -79,7 +79,7 @@ public void testPHflash() { fluid1.setPressure(P_bar[i]); thermoOps.PHflash(enthalpy[i]); errH[i] = fluid1.getTemperature() - T_C[i] - 273.15; - // System.out.println("err " + errH[i]); + // logger.info("err " + errH[i]); assertTrue(Math.abs(errH[i]) < 1e-2); } } @@ -93,7 +93,7 @@ public void testPSflash() { fluid1.setPressure(P_bar[i]); thermoOps.PSflash(entropy[i]); errS[i] = fluid1.getTemperature() - T_C[i] - 273.15; - // System.out.println("err " + errS[i]); + // logger.info("err " + errS[i]); assertTrue(Math.abs(errS[i]) < 1e-2); } } diff --git a/src/test/java/neqsim/thermo/util/example/FlashWaterTest.java b/src/test/java/neqsim/thermo/util/example/FlashWaterTest.java index 3b008281c1..7e77a4aac4 100644 --- a/src/test/java/neqsim/thermo/util/example/FlashWaterTest.java +++ b/src/test/java/neqsim/thermo/util/example/FlashWaterTest.java @@ -52,7 +52,7 @@ public void testPHflash() { waterSystem.setPressure(P_bar[i]); thermoOps.PHflash(enthalpy[i]); errH[i] = waterSystem.getTemperature() - T_C[i] - 273.15; - // System.out.println("err " + errH[i]); + // logger.info("err " + errH[i]); assertTrue(Math.abs(errH[i]) < 1e-2); } } @@ -66,7 +66,7 @@ public void testPSflash() { waterSystem.setPressure(P_bar[i]); thermoOps.PSflash(entropy[i]); errS[i] = waterSystem.getTemperature() - T_C[i] - 273.15; - // System.out.println("err " + errS[i]); + // logger.info("err " + errS[i]); assertTrue(Math.abs(errS[i]) < 1e-2); } } diff --git a/src/test/java/neqsim/thermo/util/example/FreezeMEGwater.java b/src/test/java/neqsim/thermo/util/example/FreezeMEGwater.java index 195969e2b8..e3fc00351a 100644 --- a/src/test/java/neqsim/thermo/util/example/FreezeMEGwater.java +++ b/src/test/java/neqsim/thermo/util/example/FreezeMEGwater.java @@ -2,64 +2,65 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import neqsim.dataPresentation.dataHandeling; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

FreezeMEGwater class.

+ *

+ * FreezeMEGwater class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class FreezeMEGwater { - static Logger logger = LogManager.getLogger(FreezeMEGwater.class); + static Logger logger = LogManager.getLogger(FreezeMEGwater.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 10.0, 1.0); - // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15-23.0, 1.0); - // testSystem.setMultiPhaseCheck(true); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - dataHandeling output = new dataHandeling(); - testSystem.addComponent("methane", 1.1); - // testSystem.addComponent("ethane", 15.0); - testSystem.addComponent("MEG", 0.9); - // testSystem.addComponent("methanol", 0.5); - // testSystem.addComponent("n-heptane", 5.0); - testSystem.addComponent("TEG", 0.1); - // testSystem.addComponent("MEG", 1.0 - 0.1); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 10.0, 1.0); + // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15-23.0, 1.0); + // testSystem.setMultiPhaseCheck(true); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 1.1); + // testSystem.addComponent("ethane", 15.0); + testSystem.addComponent("MEG", 0.9); + // testSystem.addComponent("methanol", 0.5); + // testSystem.addComponent("n-heptane", 5.0); + testSystem.addComponent("TEG", 0.1); + // testSystem.addComponent("MEG", 1.0 - 0.1); - // testSystem.setMultiPhaseCheck(true); + // testSystem.setMultiPhaseCheck(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.setSolidPhaseCheck("MEG"); - testSystem.init(0); - try { - // testOps.TPflash(); - testOps.freezingPointTemperatureFlash(); - // testOps.calcSolidComlexTemperature("TEG", "water"); - } catch (Exception e) { - logger.error("error", e); - } - testSystem.display(); - // System.out.println("temperature " + (testSystem.getTemperature() - 273.15)); - // System.out.println("act water " + testSystem.getPhase(1).getActivityCoefficient(1)); - // System.out.println("act MEG " + testSystem.getPhase(1).getActivityCoefficient(0)); - // try{ - // testOps.bubblePointPressureFlash(false); - // } - // catch(Exception e){ - // System.out.println("error"); - // } - // testSystem.display(); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.setSolidPhaseCheck("MEG"); + testSystem.init(0); + try { + // testOps.TPflash(); + testOps.freezingPointTemperatureFlash(); + // testOps.calcSolidComlexTemperature("TEG", "water"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + // System.out.println("temperature " + (testSystem.getTemperature() - 273.15)); + // System.out.println("act water " + testSystem.getPhase(1).getActivityCoefficient(1)); + // System.out.println("act MEG " + testSystem.getPhase(1).getActivityCoefficient(0)); + // try{ + // testOps.bubblePointPressureFlash(false); + // } + // catch(Exception ex){ + // System.out.println("error"); + // } + // testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/FreezingPoint.java b/src/test/java/neqsim/thermo/util/example/FreezingPoint.java index 8cda227101..059458db1b 100644 --- a/src/test/java/neqsim/thermo/util/example/FreezingPoint.java +++ b/src/test/java/neqsim/thermo/util/example/FreezingPoint.java @@ -2,82 +2,88 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

FreezingPoint class.

+ *

+ * FreezingPoint class. + *

* * @author esol * @since 2.2.3 * @version $Id: $Id */ public class FreezingPoint { - static Logger logger = LogManager.getLogger(FreezingPoint.class); + static Logger logger = LogManager.getLogger(FreezingPoint.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(260.15,19.00); - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 - 1, 1.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(260.15,19.00); + SystemInterface testSystem = + new SystemSrkCPAstatoil(273.15 - 1, ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - SystemInterface testSystem2 = new SystemSrkCPAstatoil(273.15 + 100, 1.01325); - ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); + SystemInterface testSystem2 = + new SystemSrkCPAstatoil(273.15 + 100, ThermodynamicConstantsInterface.referencePressure); + ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); - testSystem.addComponent("methane", 0.00882); - // testSystem.addComponent("ethane",0.0836); - // testSystem.addComponent("propane",0.0176); - // testSystem.addComponent("i-butane",1.0-0.882-0.0836-0.0176); - // testSystem.addComponent("n-butane",0.00576); - // testSystem.addComponent("n-heptane",10.0); - testSystem.addComponent("methanol", 40, "kg/min"); - testSystem.addComponent("water", 60, "kg/min"); + testSystem.addComponent("methane", 0.00882); + // testSystem.addComponent("ethane",0.0836); + // testSystem.addComponent("propane",0.0176); + // testSystem.addComponent("i-butane",1.0-0.882-0.0836-0.0176); + // testSystem.addComponent("n-butane",0.00576); + // testSystem.addComponent("n-heptane",10.0); + testSystem.addComponent("methanol", 40, "kg/min"); + testSystem.addComponent("water", 60, "kg/min"); - testSystem2.addComponent("methanol", 40, "kg/min"); - testSystem2.addComponent("water", 60, "kg/min"); + testSystem2.addComponent("methanol", 40, "kg/min"); + testSystem2.addComponent("water", 60, "kg/min"); - testSystem.createDatabase(true); - // testSystem.setSolidPhaseCheck(true); - testSystem.setHydrateCheck(true); - // testSystem.setMultiPhaseCheck(true); - testSystem.setMixingRule(7); - testSystem.init(0); - testSystem.init(2); + testSystem.createDatabase(true); + // testSystem.setSolidPhaseCheck(true); + testSystem.setHydrateCheck(true); + // testSystem.setMultiPhaseCheck(true); + testSystem.setMixingRule(7); + testSystem.init(0); + testSystem.init(2); - testSystem2.createDatabase(true); - testSystem2.setMixingRule(7); - testSystem2.init(0); - testSystem2.init(1); + testSystem2.createDatabase(true); + testSystem2.setMixingRule(7); + testSystem2.init(0); + testSystem2.init(1); - logger.info("activity coefficient water in teg " - + testSystem.getPhase(1).getActivityCoefficient(1)); - try { - // testOps.freezingPointTemperatureFlash(); - // testOps.waterDewPointTemperatureFlash(); - // testOps.dewPointTemperatureFlash(); - // testOps.bubblePointPressureFlash(false); - // testOps.TPflash(); - testOps.hydrateFormationTemperature(0); - testSystem.display(); - // testOps.dewPointTemperatureFlash(); - testSystem2.init(0); - testOps2.bubblePointTemperatureFlash(); - testSystem2.display(); - } catch (Exception e) { - logger.error(e.toString(), e); - } - logger.info("wt% methanol " + 100 * testSystem.getPhase(1).getComponent("methanol").getx() - * testSystem.getPhase(1).getComponent("methanol").getMolarMass() - / (testSystem.getPhase(1).getComponent("methanol").getx() - * testSystem.getPhase(1).getComponent("methanol").getMolarMass() - + testSystem.getPhase(1).getComponent("water").getx() - * testSystem.getPhase(1).getComponent("water").getMolarMass())); - logger.info( - "mol% methanol " + 100 * testSystem.getPhase(1).getComponent("methanol").getx()); + logger.info( + "activity coefficient water in teg " + testSystem.getPhase(1).getActivityCoefficient(1)); + try { + // testOps.freezingPointTemperatureFlash(); + // testOps.waterDewPointTemperatureFlash(); + // testOps.dewPointTemperatureFlash(); + // testOps.bubblePointPressureFlash(false); + // testOps.TPflash(); + testOps.hydrateFormationTemperature(0); + testSystem.display(); + // testOps.dewPointTemperatureFlash(); + testSystem2.init(0); + testOps2.bubblePointTemperatureFlash(); + testSystem2.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + logger.info("wt% methanol " + 100 * testSystem.getPhase(1).getComponent("methanol").getx() + * testSystem.getPhase(1).getComponent("methanol").getMolarMass() + / (testSystem.getPhase(1).getComponent("methanol").getx() + * testSystem.getPhase(1).getComponent("methanol").getMolarMass() + + testSystem.getPhase(1).getComponent("water").getx() + * testSystem.getPhase(1).getComponent("water").getMolarMass())); + logger.info("mol% methanol " + 100 * testSystem.getPhase(1).getComponent("methanol").getx()); + } } diff --git a/src/test/java/neqsim/thermo/util/example/H2Sdistribution.java b/src/test/java/neqsim/thermo/util/example/H2Sdistribution.java index 35678c339b..6dc20ca7c4 100644 --- a/src/test/java/neqsim/thermo/util/example/H2Sdistribution.java +++ b/src/test/java/neqsim/thermo/util/example/H2Sdistribution.java @@ -7,46 +7,50 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

H2Sdistribution class.

+ *

+ * H2Sdistribution class. + *

* * @author esol * @since 2.2.3 * @version $Id: $Id */ public class H2Sdistribution { - static Logger logger = LogManager.getLogger(H2Sdistribution.class); + static Logger logger = LogManager.getLogger(H2Sdistribution.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemElectrolyteCPAstatoil(308.3, 32.8); - testSystem.addComponent("H2S", 3100.0e-6); - testSystem.addComponent("methane", 70.0); - testSystem.addComponent("ethane", 8.0); - testSystem.addComponent("propane", 8.0); - testSystem.addTBPfraction("C6", 0.428, 86.178 / 1000.0, 0.664); - testSystem.addTBPfraction("C7", 0.626, 96.00 / 1000.0, 0.738); - testSystem.addTBPfraction("C8", 0.609, 107.000000000000 / 1000.0, 0.765); - testSystem.addTBPfraction("C9", 0.309, 121.000000000000 / 1000.0, 0.781); - testSystem.addTBPfraction("C12", 0.137, 161.000000000000 / 1000.0, 0.804900024); - testSystem.addComponent("water", 50.00); - testSystem.addComponent("Na+", 0.200); - testSystem.addComponent("Cl+", 0.190); - testSystem.addComponent("OH-", 3100.0e-8); - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMultiPhaseCheck(true); - testSystem.setMixingRule(10); - ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemElectrolyteCPAstatoil(308.3, 32.8); + testSystem.addComponent("H2S", 3100.0e-6); + testSystem.addComponent("methane", 70.0); + testSystem.addComponent("ethane", 8.0); + testSystem.addComponent("propane", 8.0); + testSystem.addTBPfraction("C6", 0.428, 86.178 / 1000.0, 0.664); + testSystem.addTBPfraction("C7", 0.626, 96.00 / 1000.0, 0.738); + testSystem.addTBPfraction("C8", 0.609, 107.000000000000 / 1000.0, 0.765); + testSystem.addTBPfraction("C9", 0.309, 121.000000000000 / 1000.0, 0.781); + testSystem.addTBPfraction("C12", 0.137, 161.000000000000 / 1000.0, 0.804900024); + testSystem.addComponent("water", 50.00); + testSystem.addComponent("Na+", 0.200); + testSystem.addComponent("Cl+", 0.190); + testSystem.addComponent("OH-", 3100.0e-8); + testSystem.chemicalReactionInit(); + testSystem.createDatabase(true); + testSystem.setMultiPhaseCheck(true); + testSystem.setMixingRule(10); + ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); - try { - ops.TPflash(); - } catch (Exception e) { - } - testSystem.display(); - System.out.println("pH " + testSystem.getPhase("aqueous").getpH()); + try { + ops.TPflash(); + } catch (Exception ex) { } + testSystem.display(); + // System.out.println("pH " + testSystem.getPhase("aqueous").getpH()); + } } diff --git a/src/test/java/neqsim/thermo/util/example/HeatOfVaporization.java b/src/test/java/neqsim/thermo/util/example/HeatOfVaporization.java index 2adbecc43b..5dc299efdb 100644 --- a/src/test/java/neqsim/thermo/util/example/HeatOfVaporization.java +++ b/src/test/java/neqsim/thermo/util/example/HeatOfVaporization.java @@ -16,28 +16,30 @@ * @since 2.2.3 */ public class HeatOfVaporization { - static Logger logger = LogManager.getLogger(HeatOfVaporization.class); + static Logger logger = LogManager.getLogger(HeatOfVaporization.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkCPAstatoil(288.15000000, 0.001);// - testSystem.addComponent("TEG", 1); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.init(0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointPressureFlash(false); - testSystem.display(); - double heatVap = testSystem.getHeatOfVaporization(); - logger.info("heat of vaporization " + heatVap + " J/mol"); - logger.info("heat of vaporization " + (heatVap / testSystem.getMolarMass()) + " J/kg"); - } catch (Exception e) { - logger.error(e.toString()); - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkCPAstatoil(288.15000000, 0.001); + testSystem.addComponent("TEG", 1); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.init(0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.bubblePointPressureFlash(false); + testSystem.display(); + double heatVap = testSystem.getHeatOfVaporization(); + logger.info("heat of vaporization " + heatVap + " J/mol"); + logger.info("heat of vaporization " + (heatVap / testSystem.getMolarMass()) + " J/kg"); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermo/util/example/HenryConstantCalc.java b/src/test/java/neqsim/thermo/util/example/HenryConstantCalc.java index b68be9b736..baa356f705 100644 --- a/src/test/java/neqsim/thermo/util/example/HenryConstantCalc.java +++ b/src/test/java/neqsim/thermo/util/example/HenryConstantCalc.java @@ -14,43 +14,43 @@ * @version $Id: $Id */ public class HenryConstantCalc { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemElectrolyteCPA(273.15 + 40.0, 10.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("CO2", 0.5); - testSystem.addComponent("water", 10.0); - testSystem.addComponent("MDEA", 1.0); - testSystem.chemicalReactionInit(); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemElectrolyteCPA(273.15 + 40.0, 10.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("CO2", 0.5); + testSystem.addComponent("water", 10.0); + testSystem.addComponent("MDEA", 1.0); + testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(7); - testSystem.init(0); + testSystem.createDatabase(true); + testSystem.setMixingRule(7); + testSystem.init(0); - try { - testOps.bubblePointPressureFlash(false); - testSystem.display(); - // testOps.hydrateFormationTemperature(0); - } catch (Exception e) { - } - - // testSystem.getChemicalReactionOperations().solveChemEq(1); - // System.out.println("Henrys Constant " + - // testSystem.getPhase(0).getComponent("CO2").getx()/testSystem.getPhase(1).getComponent("CO2").getx()*testSystem.getPressure()); - // System.out.println("Henrys Constant2 " + - // testSystem.calcHenrysConstant("CO2")); - // System.out.println("activity MDEA " + - // testSystem.getPhase(1).getActivityCoefficient(0)); - // double meanact2 = testSystem.getPhase(1).getMeanIonicActivity(0,1); - // System.out.println("mean ionic-activity: " + meanact2); - // double osm = testSystem.getPhase(1).getOsmoticCoefficientOfWater(); - // System.out.println("osm: " + osm); - testSystem.display(); + try { + testOps.bubblePointPressureFlash(false); + testSystem.display(); + // testOps.hydrateFormationTemperature(0); + } catch (Exception ex) { } + + // testSystem.getChemicalReactionOperations().solveChemEq(1); + // System.out.println("Henrys Constant " + + // testSystem.getPhase(0).getComponent("CO2").getx()/testSystem.getPhase(1).getComponent("CO2").getx()*testSystem.getPressure()); + // System.out.println("Henrys Constant2 " + + // testSystem.calcHenrysConstant("CO2")); + // System.out.println("activity MDEA " + + // testSystem.getPhase(1).getActivityCoefficient(0)); + // double meanact2 = testSystem.getPhase(1).getMeanIonicActivity(0,1); + // System.out.println("mean ionic-activity: " + meanact2); + // double osm = testSystem.getPhase(1).getOsmoticCoefficientOfWater(); + // System.out.println("osm: " + osm); + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/HydrateFlash.java b/src/test/java/neqsim/thermo/util/example/HydrateFlash.java index 725e8acd17..a7c4d5639b 100644 --- a/src/test/java/neqsim/thermo/util/example/HydrateFlash.java +++ b/src/test/java/neqsim/thermo/util/example/HydrateFlash.java @@ -7,166 +7,168 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

HydrateFlash class.

+ *

+ * HydrateFlash class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class HydrateFlash { - static Logger logger = LogManager.getLogger(HydrateFlash.class); + static Logger logger = LogManager.getLogger(HydrateFlash.class); + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemSrkCPAstatoil(288.15, 10.450); + SystemInterface testSystem = new SystemSrkEos(273.15 + 10.5, 51.0); + // SystemInterface testSystem = new SystemUMRPRUEos(273.15 - 10.5, 5.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("CO2", 1.5); + // testSystem.addComponent("H2S", 1.5); + // testSystem.addComponent("nitrogen", 0); + testSystem.addComponent("methane", 10.0); + // testSystem.addComponent("ethane", 3.0); + // testSystem.addComponent("propane", 1.0); + /* + * testSystem.addComponent("propane", 1.88); testSystem.addComponent("i-butane", 0.08); + * testSystem.addComponent("n-butane", 0.12); testSystem.addComponent("n-pentane", 1.64); + * testSystem.addComponent("n-heptane", 1.64); + */ - /** - *

main.

+ // testSystem.addComponent("MEG", 1); + + testSystem.addTBPfraction("C6", 3.29, 86.178 / 1000.0, 0.6640); + testSystem.addTBPfraction("C7", 2.22, 96.0 / 1000.0, 0.7380); + testSystem.addTBPfraction("C8", 0.32, 107.0 / 1000.0, 0.7650); + testSystem.addTBPfraction("C9", 0.177, 121.0 / 1000.0, 0.7810); + // testSystem.addTBPfraction("C10", 1.22, 184.0 / 1000.0, 0.81020); + // testSystem.addTBPfraction("C11", 4.93, 147.0 / 1000.0, 0.7960); + // testSystem.addTBPfraction("C12", 3.84, 161.0 / 1000.0, 0.8100); + // testSystem.addTBPfraction("C13", 2.74, 175.0 / 1000.0, 0.8250); + testSystem.addTBPfraction("C14", 2.19, 290.0 / 1000.0, 0.8360); + + // testSystem.addTBPfraction("C15", 3.0, 291.0 / 1000.0, 0.85790282291); + // testSystem.addTBPfraction("C15", 2.64, 206.0 / 1000.0, 0.8420); + + // testSystem.addComponent("TEG", 0.5); + + // testSystem.addComponent("CO2", 1.5); + // testSystem.addComponent("MEG", 8.3); + + // testSystem.addComponent("NaCl", 12.4); + // testSystem.addComponent("Na+", 6.2); + // testSystem.addComponent("Cl-", 6.2); + // testSystem.addComponent("MEG", 1.517); + // testSystem.setSolidPhaseCheck("TEG"); + // testSystem.setSolidPhaseCheck("MEG"); + // testSystem.addSolidComplexPhase("MEG"); + // testSystem.addSolidComplexPhase("wax"); + testSystem.setHeavyTBPfractionAsPlusFraction(); + + testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(8); + testSystem.getCharacterization().characterisePlusFraction(); + + // testSystem.addComponent("MEG", 1.015); + testSystem.addComponent("water", 10.015); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); + testSystem.setHydrateCheck(true); + // testSystem.setMultiPhaseCheck(true); + testSystem.init(0); + // testSystem = testSystem.autoSelectModel(); + testOps = new ThermodynamicOperations(testSystem); + // testSystem.setSolidPhaseCheck("water"); + + try { + // testOps.TPflash(); + testOps.hydrateFormationTemperature(); + // testOps.calcTOLHydrateFormationTemperature(); + // double[] temp = {288.15, 285.2, 283.5}; //, 277.3}; //, 285.15}; //, 284.0}; //, + // 283.5, 283.0}; //, 280.15}; // , 268.15, 288.0, 274.6, 274.2, 273.7, + // 273.15}; //, 297.8, 297.5}; + // double[] pres = {100.0, 100.0, 100.0, 100, 100, 100}; //, 100, 100, + // 100,100,100}; + // testOps.calcImobilePhaseHydrateTemperature(temp, pres); + // testOps.dewPointTemperatureFlash(); + // testSystem.init(0); + // testSystem.setHydrateCheck(true); + // testSystem.setMultiPhaseCheck(true); + // System.out.println("temperature1 " + (testSystem.getTemperature() - 273.15)); + // testOps.setRunAsThread(true); + + // // testSystem.setSolidPhaseCheck("water"); + // testOps.freezingPointTemperatureFlash(); + // testSystem.setSolidPhaseCheck(false); + // testSystem.setHydrateCheck(false); + // testSystem.init(0); + for (int i = 0; i < 1; i++) { + // testOps.hydrateFormationTemperature(); + } + // testOps.TPflash(); + // System.out.println("temperature2 " + (testSystem.getTemperature() - 273.15)); + // boolean isFinished = testOps.waitAndCheckForFinishedCalculation(1000000); + // System.out.println("finished? " + isFinished); + + // testOps.freezingPointTemperatureFlash(); + // testOps.calcSolidComlexTemperature(); + // testOps.TPflash(); + // testOps.calcWAT(); + // testOps.TPSolidflash(); + // testOps.dewPointTemperatureFlash(); + // testOps.waterDewPointTemperatureFlash(); + // testOps.hydrateFormationTemperature(0); + + // testOps.TPflash(); + // testOps.dewPointTemperatureFlash(); + // testOps.freezingPointTemperatureFlash(); + // testOps.bubblePointPressureFlash(false); + // testOps.hydrateFormationTemperature(1); + // testOps.waterPrecipitationTemperature(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + testSystem.display(); + // System.out.println("temperature " + (testSystem.getTemperature() - 273.15)); + // System.out.println("activity coef water " + + // testSystem.getPhase(1).getActivityCoefficientSymetric(testSystem.getPhase(1).getComponent("water").getComponentNumber())); + + // System.out.println("wt% TEG " + 100 * + // testSystem.getPhase(1).getComponent("TEG").getx() * + // testSystem.getPhase(1).getComponent("TEG").getMolarMass() / + // (testSystem.getPhase(1).getComponent("TEG").getx() * + // testSystem.getPhase(1).getComponent("TEG").getMolarMass() + + // testSystem.getPhase(1).getComponent("water").getx() * + // testSystem.getPhase(1).getComponent("water").getMolarMass())); + // testSystem.display(); + // System.out.println("kg vann/MSm^3 gas " + + // (testSystem.getPhase(0).getComponent("water").getx() * + // testSystem.getPhase(0).getComponent("water").getMolarMass() + // *ThermodynamicConstantsInterface.atm / + // ThermodynamicConstantsInterface.R / 288.15) * 1.0e6); + // System.out.println("activity coef water " + + // testSystem.getPhase(1).getActivityCoefficientSymetric(1)); + // int n = testSystem.getNumberOfPhases()-1; + // double megwtfrac = + // testSystem.getPhase(n).getComponent("MEG").getMolarMass()*testSystem.getPhase(n).getComponent("MEG").getx()/testSystem.getPhase(n).getMolarMass(); + // System.out.println("wt % MEG " + megwtfrac*100); + /* + * SystemInterface testSystem2 = new SystemSrkCPAstatoil(273.0 - 12, 60.0); + * testSystem2.addComponent("methane", 1.0 - + * testSystem.getPhase(0).getComponent("water").getx()); testSystem2.addComponent("water", + * testSystem.getPhase(0).getComponent("water").getx()); testSystem2.createDatabase(true); * - * @param args an array of {@link java.lang.String} objects + * testSystem2.setMixingRule(7); testSystem2.init(0); testSystem2.init(1); + * ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); try { + * testOps2.waterDewPointTemperatureFlash(); } catch (Exception ex) { + * logger.error(ex.getMessage()) } testSystem2.display(); */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemSrkCPAstatoil(288.15, 10.450); - SystemInterface testSystem = new SystemSrkEos(273.15 + 10.5, 51.0); - // SystemInterface testSystem = new SystemUMRPRUEos(273.15 - 10.5, 5.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("CO2", 1.5); - // testSystem.addComponent("H2S", 1.5); - // testSystem.addComponent("nitrogen", 0); - testSystem.addComponent("methane", 10.0); - // testSystem.addComponent("ethane", 3.0); - // testSystem.addComponent("propane", 1.0); - /* - * testSystem.addComponent("propane", 1.88); testSystem.addComponent("i-butane", 0.08); - * testSystem.addComponent("n-butane", 0.12); testSystem.addComponent("n-pentane", 1.64); - * testSystem.addComponent("n-heptane", 1.64); - */ - - // testSystem.addComponent("MEG", 1); - - testSystem.addTBPfraction("C6", 3.29, 86.178 / 1000.0, 0.6640); - testSystem.addTBPfraction("C7", 2.22, 96.0 / 1000.0, 0.7380); - testSystem.addTBPfraction("C8", 0.32, 107.0 / 1000.0, 0.7650); - testSystem.addTBPfraction("C9", 0.177, 121.0 / 1000.0, 0.7810); - // testSystem.addTBPfraction("C10", 1.22, 184.0 / 1000.0, 0.81020); - // testSystem.addTBPfraction("C11", 4.93, 147.0 / 1000.0, 0.7960); - // testSystem.addTBPfraction("C12", 3.84, 161.0 / 1000.0, 0.8100); - // testSystem.addTBPfraction("C13", 2.74, 175.0 / 1000.0, 0.8250); - testSystem.addTBPfraction("C14", 2.19, 290.0 / 1000.0, 0.8360); - - // testSystem.addTBPfraction("C15", 3.0, 291.0 / 1000.0, 0.85790282291); - // testSystem.addTBPfraction("C15", 2.64, 206.0 / 1000.0, 0.8420); - - // testSystem.addComponent("TEG", 0.5); - - // testSystem.addComponent("CO2", 1.5); - // testSystem.addComponent("MEG", 8.3); - - // testSystem.addComponent("NaCl", 12.4); - // testSystem.addComponent("Na+", 6.2); - // testSystem.addComponent("Cl-", 6.2); - // testSystem.addComponent("MEG", 1.517); - // testSystem.setSolidPhaseCheck("TEG"); - // testSystem.setSolidPhaseCheck("MEG"); - // testSystem.addSolidComplexPhase("MEG"); - // testSystem.addSolidComplexPhase("wax"); - testSystem.setHeavyTBPfractionAsPlusFraction(); - - testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(8); - testSystem.getCharacterization().characterisePlusFraction(); - - // testSystem.addComponent("MEG", 1.015); - testSystem.addComponent("water", 10.015); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - testSystem.setHydrateCheck(true); - // testSystem.setMultiPhaseCheck(true); - testSystem.init(0); - // testSystem = testSystem.autoSelectModel(); - testOps = new ThermodynamicOperations(testSystem); - // testSystem.setSolidPhaseCheck("water"); - - try { - // testOps.TPflash(); - testOps.hydrateFormationTemperature(); - // testOps.calcTOLHydrateFormationTemperature(); - // double[] temp = {288.15, 285.2, 283.5};//, 277.3};//, 285.15};//, 284.0};//, - // 283.5, 283.0};//, 280.15};// , 268.15, 288.0, 274.6, 274.2, 273.7, - // 273.15};//, 297.8, 297.5}; - // double[] pres = {100.0, 100.0, 100.0, 100, 100, 100};//, 100, 100, - // 100,100,100}; - // testOps.calcImobilePhaseHydrateTemperature(temp, pres); - // testOps.dewPointTemperatureFlash(); - // testSystem.init(0); - // testSystem.setHydrateCheck(true); - // testSystem.setMultiPhaseCheck(true); - // System.out.println("temperature1 " + (testSystem.getTemperature() - 273.15)); - // testOps.setRunAsThread(true); - - // // testSystem.setSolidPhaseCheck("water"); - // testOps.freezingPointTemperatureFlash(); - // testSystem.setSolidPhaseCheck(false); - // testSystem.setHydrateCheck(false); - // testSystem.init(0); - for (int i = 0; i < 1; i++) { - // testOps.hydrateFormationTemperature(); - } - // testOps.TPflash(); - // System.out.println("temperature2 " + (testSystem.getTemperature() - 273.15)); - // boolean isFinished = testOps.waitAndCheckForFinishedCalculation(1000000); - // System.out.println("finished? " + isFinished); - - // testOps.freezingPointTemperatureFlash(); - // testOps.calcSolidComlexTemperature(); - // testOps.TPflash(); - // testOps.calcWAT(); - // testOps.TPSolidflash(); - // testOps.dewPointTemperatureFlash(); - // testOps.waterDewPointTemperatureFlash(); - // testOps.hydrateFormationTemperature(0); - - // testOps.TPflash(); - // testOps.dewPointTemperatureFlash(); - // testOps.freezingPointTemperatureFlash(); - // testOps.bubblePointPressureFlash(false); - // testOps.hydrateFormationTemperature(1); - // testOps.waterPrecipitationTemperature(); - } catch (Exception e) { - logger.error(e.toString(), e); - } - testSystem.display(); - // System.out.println("temperature " + (testSystem.getTemperature() - 273.15)); - // System.out.println("activity coef water " + - // testSystem.getPhase(1).getActivityCoefficientSymetric(testSystem.getPhase(1).getComponent("water").getComponentNumber())); - - // System.out.println("wt% TEG " + 100 * - // testSystem.getPhase(1).getComponent("TEG").getx() * - // testSystem.getPhase(1).getComponent("TEG").getMolarMass() / - // (testSystem.getPhase(1).getComponent("TEG").getx() * - // testSystem.getPhase(1).getComponent("TEG").getMolarMass() + - // testSystem.getPhase(1).getComponent("water").getx() * - // testSystem.getPhase(1).getComponent("water").getMolarMass())); - // testSystem.display(); - // System.out.println("kg vann/MSm^3 gas " + - // (testSystem.getPhase(0).getComponent("water").getx() * - // testSystem.getPhase(0).getComponent("water").getMolarMass() * 101325.0 / - // 8.314 / 288.15) * 1.0e6); - // System.out.println("activity coef water " + - // testSystem.getPhase(1).getActivityCoefficientSymetric(1)); - // int n = testSystem.getNumberOfPhases()-1; - // double megwtfrac = - // testSystem.getPhase(n).getComponent("MEG").getMolarMass()*testSystem.getPhase(n).getComponent("MEG").getx()/testSystem.getPhase(n).getMolarMass(); - // System.out.println("wt % MEG " + megwtfrac*100); - /* - * SystemInterface testSystem2 = new SystemSrkCPAstatoil(273.0 - 12, 60.0); - * testSystem2.addComponent("methane", 1.0 - - * testSystem.getPhase(0).getComponent("water").getx()); testSystem2.addComponent("water", - * testSystem.getPhase(0).getComponent("water").getx()); testSystem2.createDatabase(true); - * - * testSystem2.setMixingRule(7); testSystem2.init(0); testSystem2.init(1); - * ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); try { - * testOps2.waterDewPointTemperatureFlash(); - * - * } catch (Exception e) { e.printStackTrace(); System.out.println(e.toString()); } - * testSystem2.display(); - * - */ - } + } } diff --git a/src/test/java/neqsim/thermo/util/example/HydrateFlash2.java b/src/test/java/neqsim/thermo/util/example/HydrateFlash2.java index 0851a3dd30..3bfdd6fb78 100644 --- a/src/test/java/neqsim/thermo/util/example/HydrateFlash2.java +++ b/src/test/java/neqsim/thermo/util/example/HydrateFlash2.java @@ -16,123 +16,123 @@ * @since 2.2.3 */ public class HydrateFlash2 { - static Logger logger = LogManager.getLogger(HydrateFlash2.class); + static Logger logger = LogManager.getLogger(HydrateFlash2.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 10, 122.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 10, 122.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("water", 400e-4); + // testSystem.addComponent("water", 400e-4); - // testSystem.addComponent("CO2", 9.02); - testSystem.addComponent("methane", 1.0); - // testSystem.addComponent("ethane", 1.0); - // testSystem.addComponent("propane", 4.0); - // testSystem.addComponent("i-butane", 0.5); - // testSystem.addComponent("n-butane", 0.5); + // testSystem.addComponent("CO2", 9.02); + testSystem.addComponent("methane", 1.0); + // testSystem.addComponent("ethane", 1.0); + // testSystem.addComponent("propane", 4.0); + // testSystem.addComponent("i-butane", 0.5); + // testSystem.addComponent("n-butane", 0.5); - // testSystem.addTBPfraction("C6",0.06,86.178/1000.0,0.664); - // testSystem.addTBPfraction("C7",0.06,96.0/1000.0,0.738); - // testSystem.addTBPfraction("C8",0.05,107.0/1000.0,0.765); - // testSystem.addTBPfraction("C9",0.05,121.0/1000.0,0.781); - // testSystem.addTBPfraction("C10",0.04,134.0/1000.0,0.792); - // testSystem.addTBPfraction("C13",0.04,184.0/1000.0,0.883); - // testSystem.addComponent("TEG", 0.5e-4); - // testSystem.addSalt("NaCl", 0.01); - // testSystem.addComponent("MEG", 0.1); - testSystem.addComponent("water", 1); - testSystem.createDatabase(true); - testSystem.setMixingRule(9); + // testSystem.addTBPfraction("C6",0.06,86.178/1000.0,0.664); + // testSystem.addTBPfraction("C7",0.06,96.0/1000.0,0.738); + // testSystem.addTBPfraction("C8",0.05,107.0/1000.0,0.765); + // testSystem.addTBPfraction("C9",0.05,121.0/1000.0,0.781); + // testSystem.addTBPfraction("C10",0.04,134.0/1000.0,0.792); + // testSystem.addTBPfraction("C13",0.04,184.0/1000.0,0.883); + // testSystem.addComponent("TEG", 0.5e-4); + // testSystem.addSalt("NaCl", 0.01); + // testSystem.addComponent("MEG", 0.1); + testSystem.addComponent("water", 1); + testSystem.createDatabase(true); + testSystem.setMixingRule(9); - testSystem.setPressure(100); - testSystem.init(0); - // testSystem.setSolidPhaseCheck("water"); - testSystem.setMultiPhaseCheck(true); - testSystem.setHydrateCheck(true); + testSystem.setPressure(100); + testSystem.init(0); + // testSystem.setSolidPhaseCheck("water"); + testSystem.setMultiPhaseCheck(true); + testSystem.setHydrateCheck(true); - // testSystem.setMultiPhaseCheck(true); - try { - // testOps.dewPointTemperatureFlash(); - // testOps.waterDewPointTemperatureFlash(); - testOps.setRunAsThread(true); - testOps.hydrateEquilibriumLine(10.0, 200.0); - boolean isFinished = testOps.waitAndCheckForFinishedCalculation(100000); - logger.info("finished? " + isFinished); - // testSystem.setTemperature(240.0); - // testOps.freezingPointTemperatureFlash(); - // testSystem.display(); - testOps.TPflash(); - } catch (Exception e) { - e.toString(); - } - testSystem.display(); + // testSystem.setMultiPhaseCheck(true); + try { + // testOps.dewPointTemperatureFlash(); + // testOps.waterDewPointTemperatureFlash(); + testOps.setRunAsThread(true); + testOps.hydrateEquilibriumLine(10.0, 200.0); + boolean isFinished = testOps.waitAndCheckForFinishedCalculation(100000); + logger.info("finished? " + isFinished); + // testSystem.setTemperature(240.0); + // testOps.freezingPointTemperatureFlash(); + // testSystem.display(); + testOps.TPflash(); + } catch (Exception ex) { + ex.toString(); + } + testSystem.display(); - // SystemInterface testSystem2 = new SystemSrkCPAs(273.15+0.0, 100.0); - // testSystem2.addComponent("methane", - // testSystem.getPhase(0).getComponent("methane").getx()); - // testSystem2.addComponent("ethane", testSystem.getPhase(0).getComponent("ethane").getx()); - // testSystem2.addComponent("propane", - // testSystem.getPhase(0).getComponent("propane").getx()); - // testSystem2.addComponent("nitrogen", - // testSystem.getPhase(0).getComponent("nitrogen").getx()); - // testSystem2.addComponent("i-butane", - // testSystem.getPhase(0).getComponent("i-butane").getx()); - // testSystem2.addComponent("n-butane", - // testSystem.getPhase(0).getComponent("n-butane").getx()); - // testSystem2.addComponent("iC5", testSystem.getPhase(0).getComponent("iC5").getx()); - // testSystem2.addComponent("n-pentane", - // testSystem.getPhase(0).getComponent("n-pentane").getx()); + // SystemInterface testSystem2 = new SystemSrkCPAs(273.15+0.0, 100.0); + // testSystem2.addComponent("methane", + // testSystem.getPhase(0).getComponent("methane").getx()); + // testSystem2.addComponent("ethane", testSystem.getPhase(0).getComponent("ethane").getx()); + // testSystem2.addComponent("propane", + // testSystem.getPhase(0).getComponent("propane").getx()); + // testSystem2.addComponent("nitrogen", + // testSystem.getPhase(0).getComponent("nitrogen").getx()); + // testSystem2.addComponent("i-butane", + // testSystem.getPhase(0).getComponent("i-butane").getx()); + // testSystem2.addComponent("n-butane", + // testSystem.getPhase(0).getComponent("n-butane").getx()); + // testSystem2.addComponent("iC5", testSystem.getPhase(0).getComponent("iC5").getx()); + // testSystem2.addComponent("n-pentane", + // testSystem.getPhase(0).getComponent("n-pentane").getx()); - // testSystem2.addTBPfraction("C6",testSystem.getPhase(0).getComponent("C6_DefaultName").getx(),86.178/1000.0,0.664); - // testSystem2.addTBPfraction("C7",testSystem.getPhase(0).getComponent("C7_DefaultName").getx(),96.0/1000.0,0.738); - // testSystem2.addTBPfraction("C8",testSystem.getPhase(0).getComponent("C8_DefaultName").getx(),107.0/1000.0,0.765); - // testSystem2.addTBPfraction("C9",testSystem.getPhase(0).getComponent("C9_DefaultName").getx(),121.0/1000.0,0.781); - // testSystem2.addTBPfraction("C10",testSystem.getPhase(0).getComponent("C10_DefaultName").getx(),134.0/1000.0,0.792); - // testSystem2.addTBPfraction("C13",testSystem.getPhase(0).getComponent("C13_DefaultName").getx(),184.0/1000.0,0.883); + // testSystem2.addTBPfraction("C6",testSystem.getPhase(0).getComponent("C6_DefaultName").getx(),86.178/1000.0,0.664); + // testSystem2.addTBPfraction("C7",testSystem.getPhase(0).getComponent("C7_DefaultName").getx(),96.0/1000.0,0.738); + // testSystem2.addTBPfraction("C8",testSystem.getPhase(0).getComponent("C8_DefaultName").getx(),107.0/1000.0,0.765); + // testSystem2.addTBPfraction("C9",testSystem.getPhase(0).getComponent("C9_DefaultName").getx(),121.0/1000.0,0.781); + // testSystem2.addTBPfraction("C10",testSystem.getPhase(0).getComponent("C10_DefaultName").getx(),134.0/1000.0,0.792); + // testSystem2.addTBPfraction("C13",testSystem.getPhase(0).getComponent("C13_DefaultName").getx(),184.0/1000.0,0.883); - // testSystem2.addComponent("water", - // testSystem.getPhase(0).getComponent("water").getx()); - // testSystem2.addComponent("MEG", - // testSystem.getPhase(0).getComponent("MEG").getx()); + // testSystem2.addComponent("water", + // testSystem.getPhase(0).getComponent("water").getx()); + // testSystem2.addComponent("MEG", + // testSystem.getPhase(0).getComponent("MEG").getx()); - // SystemInterface testSystem2 = testSystem.phaseToSystem(testSystem.getPhase(0)); - // testSystem2.createDatabase(true); - // testSystem2.setMixingRule(7); - // testSystem2.setTemperature(273.15-4.0); - // testSystem2.setPressure(120.0); - // testSystem2.setMultiPhaseCheck(true); - // testSystem2.setHydrateCheck(true); + // SystemInterface testSystem2 = testSystem.phaseToSystem(testSystem.getPhase(0)); + // testSystem2.createDatabase(true); + // testSystem2.setMixingRule(7); + // testSystem2.setTemperature(273.15-4.0); + // testSystem2.setPressure(120.0); + // testSystem2.setMultiPhaseCheck(true); + // testSystem2.setHydrateCheck(true); - // ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); + // ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); - /* - * try{ // testOps2.TPflash(); //testSystem2.display(); // - * testOps2.hydrateFormationTemperature(2); //testOps2.dewPointTemperatureFlash(); - * //testOps.freezingPointTemperatureFlash(); //testOps.bubblePointPressureFlash(false); - * //testOps.hydrateFormationPressure(); //testOps2.hydrateFormationTemperature(2); // - * testOps.TPflash(); // testSystem.display(); } catch(Exception e){ e.printStackTrace(); - * System.out.println(e.toString()); } /* //testSystem2.display(); int phase = 0; double x1 - * = testSystem2.getPhase(0).getMolarVolume()*testSystem2.getBeta(0); double x2 = - * testSystem2.getPhase(1).getMolarVolume()*testSystem2.getBeta(1); - * - * double x3 = x1/(x1+x2); double x4 = x2/(x1+x2); System.out.println("vol gas % " + - * x3*100); System.out.println("vol liq % " + x4*100); int n = - * testSystem.getNumberOfPhases()-1; double megwtfracInit = - * testSystem.getPhase(n).getComponent("MEG").getMolarMass()*testSystem.getPhase - * (n).getComponent("MEG").getx()/testSystem.getPhase(n).getMolarMass(); - * System.out.println("wt % MEG init " + megwtfracInit*100); n = - * testSystem2.getNumberOfPhases()-1; double megwtfrac = - * testSystem2.getPhase(n).getComponent("MEG").getMolarMass()*testSystem2. - * getPhase(n).getComponent("MEG").getx()/testSystem2.getPhase(n).getMolarMass() ; - * System.out.println("wt % MEG " + megwtfrac*100); testSystem2.display(); - */ - } + /* + * try{ // testOps2.TPflash(); //testSystem2.display(); // + * testOps2.hydrateFormationTemperature(2); //testOps2.dewPointTemperatureFlash(); + * //testOps.freezingPointTemperatureFlash(); //testOps.bubblePointPressureFlash(false); + * //testOps.hydrateFormationPressure(); //testOps2.hydrateFormationTemperature(2); // + * testOps.TPflash(); // testSystem.display(); } catch(Exception ex){ + * logger.error(ex.getMessage(), ex); System.out.println(ex.toString()); } /* + * //testSystem2.display(); int phase = 0; double x1 = + * testSystem2.getPhase(0).getMolarVolume()*testSystem2.getBeta(0); double x2 = + * testSystem2.getPhase(1).getMolarVolume()*testSystem2.getBeta(1); + * + * double x3 = x1/(x1+x2); double x4 = x2/(x1+x2); System.out.println("vol gas % " + x3*100); + * System.out.println("vol liq % " + x4*100); int n = testSystem.getNumberOfPhases()-1; double + * megwtfracInit = testSystem.getPhase(n).getComponent("MEG").getMolarMass()*testSystem.getPhase + * (n).getComponent("MEG").getx()/testSystem.getPhase(n).getMolarMass(); + * System.out.println("wt % MEG init " + megwtfracInit*100); n = + * testSystem2.getNumberOfPhases()-1; double megwtfrac = + * testSystem2.getPhase(n).getComponent("MEG").getMolarMass()*testSystem2. + * getPhase(n).getComponent("MEG").getx()/testSystem2.getPhase(n).getMolarMass() ; + * System.out.println("wt % MEG " + megwtfrac*100); testSystem2.display(); + */ + } } diff --git a/src/test/java/neqsim/thermo/util/example/KlabFlashBugTest.java b/src/test/java/neqsim/thermo/util/example/KlabFlashBugTest.java index 3021b9f79a..d1325061e1 100644 --- a/src/test/java/neqsim/thermo/util/example/KlabFlashBugTest.java +++ b/src/test/java/neqsim/thermo/util/example/KlabFlashBugTest.java @@ -61,7 +61,7 @@ public void testPHflash() { fluid1.setPressure(P_bar[i]); thermoOps.PHflash(enthalpy[i]); errH[i] = fluid1.getTemperature() - T_C[i] - 273.15; - // System.out.println("err Enthalpy " + errH[i]); + // logger.info("err Enthalpy " + errH[i]); assertTrue(Math.abs(errH[i]) < 1e-2); } } @@ -75,7 +75,7 @@ public void testPSflash() { fluid1.setPressure(P_bar[i]); thermoOps.PSflash(entropy[i]); errS[i] = fluid1.getTemperature() - T_C[i] - 273.15; - // System.out.println("err " + errS[i]); + // logger.info("err " + errS[i]); assertTrue(Math.abs(errS[i]) < 1e-2); } } diff --git a/src/test/java/neqsim/thermo/util/example/LNGFlash.java b/src/test/java/neqsim/thermo/util/example/LNGFlash.java index 3b9dd190b1..ea57a444f5 100644 --- a/src/test/java/neqsim/thermo/util/example/LNGFlash.java +++ b/src/test/java/neqsim/thermo/util/example/LNGFlash.java @@ -7,63 +7,65 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

LNGFlash class.

+ *

+ * LNGFlash class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class LNGFlash { - static Logger logger = LogManager.getLogger(LNGFlash.class); + static Logger logger = LogManager.getLogger(LNGFlash.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(20, 5.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(20, 5.0); - testSystem.addComponent("methane", 110.02); - // testSystem.addComponent("n-pentane", 1e-10); - testSystem.addComponent("n-hexane", 1.00001); - // testSystem.addTBPfraction("C7", 0.1, 86.0/1000.0, 0.7); + testSystem.addComponent("methane", 110.02); + // testSystem.addComponent("n-pentane", 1e-10); + testSystem.addComponent("n-hexane", 1.00001); + // testSystem.addTBPfraction("C7", 0.1, 86.0/1000.0, 0.7); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.initProperties(); - // testSystem.setSolidPhaseCheck("n-hexane"); - // testSystem.addSolidComplexPhase("wax"); - testSystem.display(); - testSystem.init(0); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.initProperties(); + // testSystem.setSolidPhaseCheck("n-hexane"); + // testSystem.addSolidComplexPhase("wax"); + testSystem.display(); + testSystem.init(0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointTemperatureFlash(); - testSystem.display(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.bubblePointTemperatureFlash(); + testSystem.display(); - testOps.dewPointTemperatureFlash(); - testSystem.display(); + testOps.dewPointTemperatureFlash(); + testSystem.display(); - // testOps.TPflash(); - // testSystem.display(); - // testSystem.setMolarComposition(new double[] {0.1,0.1,0.1}); - // testOps.TPflash(); - // testOps.dewPointTemperatureFlash(); - // testSystem.display(); - // testOps.freezingPointTemperatureFlash(); - // testOps.calcWAT(); - } catch (Exception e) { - logger.error("error", e); - } - /* - * testSystem.reset(); testSystem.addComponent("methane", 1.0); - * testSystem.addComponent("n-hexane", 0.000000009); testOps = new - * ThermodynamicOperations(testSystem); try { testOps.TPflash(); // testSystem.display(); // - * testOps.freezingPointTemperatureFlash(); // testOps.calcWAT(); testSystem.display(); } - * catch (Exception e) { logger.error("error",e); } } - * - * - */ + // testOps.TPflash(); + // testSystem.display(); + // testSystem.setMolarComposition(new double[] {0.1,0.1,0.1}); + // testOps.TPflash(); + // testOps.dewPointTemperatureFlash(); + // testSystem.display(); + // testOps.freezingPointTemperatureFlash(); + // testOps.calcWAT(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + /* + * testSystem.reset(); testSystem.addComponent("methane", 1.0); + * testSystem.addComponent("n-hexane", 0.000000009); testOps = new + * ThermodynamicOperations(testSystem); try { testOps.TPflash(); // testSystem.display(); // + * testOps.freezingPointTemperatureFlash(); // testOps.calcWAT(); testSystem.display(); } catch + * (Exception ex) { logger.error(ex.getMessage(),e); } } + */ + } } diff --git a/src/test/java/neqsim/thermo/util/example/LNGfilling.java b/src/test/java/neqsim/thermo/util/example/LNGfilling.java index 4a93be3897..ecc0f0705e 100644 --- a/src/test/java/neqsim/thermo/util/example/LNGfilling.java +++ b/src/test/java/neqsim/thermo/util/example/LNGfilling.java @@ -16,55 +16,55 @@ * @since 2.2.3 */ public class LNGfilling { - static Logger logger = LogManager.getLogger(LNGfilling.class); + static Logger logger = LogManager.getLogger(LNGfilling.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem2 = - // util.serialization.SerializationManager.open("c:/test.fluid"); - // testSystem2.display(); - // SystemInterface testSystem = new SystemElectrolyteCPAstatoil(293.15, 1.0); - SystemInterface testSystem = new SystemSrkCPAs(273.15 + 10.0, 450.0); - // SystemInterface testSystem = new SystemSrkEos(273.15+0.0, 0.1); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // SystemInterface testSystem = new SystemSrkCPAs(273.15+68.0, 170.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem2 = + // util.serialization.SerializationManager.open("c:/test.fluid"); + // testSystem2.display(); + // SystemInterface testSystem = new SystemElectrolyteCPAstatoil(293.15, 1.0); + SystemInterface testSystem = new SystemSrkCPAs(273.15 + 10.0, 450.0); + // SystemInterface testSystem = new SystemSrkEos(273.15+0.0, 0.1); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // SystemInterface testSystem = new SystemSrkCPAs(273.15+68.0, 170.0); - testSystem.addComponent("nitrogen", 0.616); - testSystem.addComponent("water", 0.616); - // testSystem.addComponent("TEG", 5.9622); + testSystem.addComponent("nitrogen", 0.616); + testSystem.addComponent("water", 0.616); + // testSystem.addComponent("TEG", 5.9622); - // testSystem.addComponent("methanol", 4.0378); - // testSystem.addComponent("CO2", 4.0378); - testSystem.createDatabase(true); - // testSystem = testSystem.autoSelectModel(); - // testSystem.chemicalReactionInit(); - // testSystem.createDatabase(true); - testSystem.setMixingRule(7); + // testSystem.addComponent("methanol", 4.0378); + // testSystem.addComponent("CO2", 4.0378); + testSystem.createDatabase(true); + // testSystem = testSystem.autoSelectModel(); + // testSystem.chemicalReactionInit(); + // testSystem.createDatabase(true); + testSystem.setMixingRule(7); - // testSystem.setMultiPhaseCheck(true); - testSystem.setHydrateCheck(true); + // testSystem.setMultiPhaseCheck(true); + testSystem.setHydrateCheck(true); - try { - // testSystem = testSystem.autoSelectModel(); - // testOps = new ThermodynamicOperations(testSystem); - // testOps.TPflash(); - testOps.hydrateFormationTemperature(2); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } - // System.out.println("JT " + testSystem.getPhase(0).getJouleThomsonCoefficient()); - // System.out.println("wt%MEG " + - // testSystem.getPhase(1).getComponent("MEG").getMolarMass()*testSystem.getPhase(1).getComponent("MEG").getx()/testSystem.getPhase(1).getMolarMass()); - // System.out.println("fug" - // +testSystem.getPhase(0).getComponent("water").getx()*testSystem.getPhase(0).getPressure()*testSystem.getPhase(0).getComponent(0).getFugacityCoefficient()); + try { + // testSystem = testSystem.autoSelectModel(); + // testOps = new ThermodynamicOperations(testSystem); + // testOps.TPflash(); + testOps.hydrateFormationTemperature(2); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + // System.out.println("JT " + testSystem.getPhase(0).getJouleThomsonCoefficient()); + // System.out.println("wt%MEG " + + // testSystem.getPhase(1).getComponent("MEG").getMolarMass()*testSystem.getPhase(1).getComponent("MEG").getx()/testSystem.getPhase(1).getMolarMass()); + // System.out.println("fug" + // +testSystem.getPhase(0).getComponent("water").getx()*testSystem.getPhase(0).getPressure()*testSystem.getPhase(0).getComponent(0).getFugacityCoefficient()); + } } // testSystem = testSystem.setModel("GERG-water"); // testSystem.setMixingRule(8); @@ -79,8 +79,8 @@ public static void main(String args[]) { // testOps.TPflash(); // testSystem.display(); // } -// catch(Exception e){ -// System.out.println(e.toString()); +// catch(Exception ex){ +// System.out.println(ex.toString()); // } // } // } diff --git a/src/test/java/neqsim/thermo/util/example/LNGfreezing.java b/src/test/java/neqsim/thermo/util/example/LNGfreezing.java index f07e6d5bf6..0732222e3a 100644 --- a/src/test/java/neqsim/thermo/util/example/LNGfreezing.java +++ b/src/test/java/neqsim/thermo/util/example/LNGfreezing.java @@ -7,63 +7,67 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

LNGfreezing class.

+ *

+ * LNGfreezing class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class LNGfreezing { - static Logger logger = LogManager.getLogger(LNGfreezing.class); + static Logger logger = LogManager.getLogger(LNGfreezing.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15 - 152.8, 5); - // SystemInterface testSystem = new SystemSrkTwuCoonEos(162, 59.7); - // SystemInterface testSystem = new SystemPCSAFT(159, 50.0); - testSystem.addComponent("CO2", 0.17000); - testSystem.addComponent("nitrogen", 1.101268581777448); - testSystem.addComponent("methane", 0.324059461687833); - testSystem.addComponent("ethane", 0.274475926106361); - testSystem.addComponent("propane", 0.0305789847160361); - // testSystem.addComponent("i-butane", 0.0050000); - // testSystem.addComponent("n-butane", 0.269617045712322); - // testSystem.addComponent("i-pentane", 0.0012000); - // testSystem.addComponent("n-pentane", 0.12000); - // testSystem.addComponent("benzene", 0.0002000); - // testSystem.addComponent("n-hexane", 0.0002000); - // testSystem.addComponent("water", 0.0000000551); - // testSystem.addComponent("propane", 1.715); - // testSystem.addComponent("nitrogen", 2.5); - // testSystem.addComponent("22-dim-C3", 500e-4); - // testSystem.addComponent("n-hexane", 0.01); - // testSystem.addComponent("nitrogen", 0.05); - // testSystem.addComponent("CO2", 10.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15 - 152.8, 5); + // SystemInterface testSystem = new SystemSrkTwuCoonEos(162, 59.7); + // SystemInterface testSystem = new SystemPCSAFT(159, 50.0); + testSystem.addComponent("CO2", 0.17000); + testSystem.addComponent("nitrogen", 1.101268581777448); + testSystem.addComponent("methane", 0.324059461687833); + testSystem.addComponent("ethane", 0.274475926106361); + testSystem.addComponent("propane", 0.0305789847160361); + // testSystem.addComponent("i-butane", 0.0050000); + // testSystem.addComponent("n-butane", 0.269617045712322); + // testSystem.addComponent("i-pentane", 0.0012000); + // testSystem.addComponent("n-pentane", 0.12000); + // testSystem.addComponent("benzene", 0.0002000); + // testSystem.addComponent("n-hexane", 0.0002000); + // testSystem.addComponent("water", 0.0000000551); + // testSystem.addComponent("propane", 1.715); + // testSystem.addComponent("nitrogen", 2.5); + // testSystem.addComponent("22-dim-C3", 500e-4); + // testSystem.addComponent("n-hexane", 0.01); + // testSystem.addComponent("nitrogen", 0.05); + // testSystem.addComponent("CO2", 10.0); - // testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - testSystem.setSolidPhaseCheck("CO2"); - testSystem.init(0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - // testOps.TPflash(); - // testOps.bubblePointPressureFlash(false); - // thermodynamicOperations.flashOps.saturationOps.freezingPointTemperatureFlash - // operation = new - // thermodynamicOperations.flashOps.saturationOps.freezingPointTemperatureFlash(testSystem); - // System.out.println("funk " + operation.calcFunc()); - testOps.freezingPointTemperatureFlash(); - // System.out.println("freeze temperature " + (testSystem.getTemperature() - - // 273.15)); - // testOps.TPSolidflash(); - testSystem.display(); - } catch (Exception e) { - logger.error("error", e); - } + // testSystem.createDatabase(true); + testSystem.setMixingRule(2); + // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); + testSystem.setSolidPhaseCheck("CO2"); + testSystem.init(0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + // testOps.TPflash(); + // testOps.bubblePointPressureFlash(false); + // thermodynamicOperations.flashOps.saturationOps.freezingPointTemperatureFlash + // operation = new + // thermodynamicOperations.flashOps.saturationOps.freezingPointTemperatureFlash(testSystem); + // System.out.println("funk " + operation.calcFunc()); + testOps.freezingPointTemperatureFlash(); + // System.out.println("freeze temperature " + (testSystem.getTemperature() - + // 273.15)); + // testOps.TPSolidflash(); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermo/util/example/LNGfreezingTestSolid1.java b/src/test/java/neqsim/thermo/util/example/LNGfreezingTestSolid1.java index a89964ac28..7ce628cdae 100644 --- a/src/test/java/neqsim/thermo/util/example/LNGfreezingTestSolid1.java +++ b/src/test/java/neqsim/thermo/util/example/LNGfreezingTestSolid1.java @@ -7,62 +7,66 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

LNGfreezingTestSolid1 class.

+ *

+ * LNGfreezingTestSolid1 class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class LNGfreezingTestSolid1 { - static Logger logger = LogManager.getLogger(LNGfreezingTestSolid1.class); + static Logger logger = LogManager.getLogger(LNGfreezingTestSolid1.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemUMRPRUMCEos(225.8488, 10.0); - SystemInterface testSystem = new SystemSrkEos(245.0, 10.0); - // testSystem.addComponent("nitrogen", 0.379); - testSystem.addComponent("methane", 99.9); - testSystem.addComponent("benzene", 0.1); - // testSystem.addComponent("n-hexane", 2.0); - // testSystem.addComponent("propane", 10); - // testSystem.addComponent("benzene", 0.083); - // testSystem.addComponent("ethane", 2.359); - // testSystem.addComponent("propane", 3.1); - // testSystem.addComponent("i-butane", 0.504); - // testSystem.addComponent("n-butane", 0.85); - // testSystem.addComponent("i-pentane", 0.323); - // testSystem.addComponent("n-pentane", 0.231); - // testSystem.addComponent("n-hexane", 0.173); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemUMRPRUMCEos(225.8488, 10.0); + SystemInterface testSystem = new SystemSrkEos(245.0, 10.0); + // testSystem.addComponent("nitrogen", 0.379); + testSystem.addComponent("methane", 99.9); + testSystem.addComponent("benzene", 0.1); + // testSystem.addComponent("n-hexane", 2.0); + // testSystem.addComponent("propane", 10); + // testSystem.addComponent("benzene", 0.083); + // testSystem.addComponent("ethane", 2.359); + // testSystem.addComponent("propane", 3.1); + // testSystem.addComponent("i-butane", 0.504); + // testSystem.addComponent("n-butane", 0.85); + // testSystem.addComponent("i-pentane", 0.323); + // testSystem.addComponent("n-pentane", 0.231); + // testSystem.addComponent("n-hexane", 0.173); - // testSystem.addComponent("n-hexane", 0.01); + // testSystem.addComponent("n-hexane", 0.01); - // testSystem.addComponent("c-hexane", 0.0048); + // testSystem.addComponent("c-hexane", 0.0048); - testSystem.createDatabase(true); - // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - testSystem.setMixingRule(2); - testSystem.setSolidPhaseCheck("benzene"); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.createDatabase(true); + // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); + testSystem.setMixingRule(2); + testSystem.setSolidPhaseCheck("benzene"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.getPhase(3).getComponent("benzene").setHeatOfFusion(6000); - try { - // System.out.println("heat of fusion " + - // testSystem.getPhase(3).getComponent("benzene").getHeatOfFusion()); + testSystem.getPhase(3).getComponent("benzene").setHeatOfFusion(6000); + try { + // System.out.println("heat of fusion " + + // testSystem.getPhase(3).getComponent("benzene").getHeatOfFusion()); - testOps.TPSolidflash(); - // System.out.println("heat of fusion " + - // testSystem.getPhase(3).getComponent("benzene").getHeatOfFusion()); - // testOps.displayResult(); - // testOps.freezingPointTemperatureFlash(); - testSystem.display(); - // testOps.freezingPointTemperatureFlash(); - // testOps.TPflash(); - } catch (Exception e) { - logger.error("error", e); - } + testOps.TPSolidflash(); + // System.out.println("heat of fusion " + + // testSystem.getPhase(3).getComponent("benzene").getHeatOfFusion()); + // testOps.displayResult(); + // testOps.freezingPointTemperatureFlash(); + testSystem.display(); + // testOps.freezingPointTemperatureFlash(); + // testOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermo/util/example/ModelTest.java b/src/test/java/neqsim/thermo/util/example/ModelTest.java index 01c0cec9e5..e905e668e2 100644 --- a/src/test/java/neqsim/thermo/util/example/ModelTest.java +++ b/src/test/java/neqsim/thermo/util/example/ModelTest.java @@ -33,7 +33,8 @@ public static void main(String args[]) { // SystemInterface testSystem = new SystemFurstElectrolyteEos(273.14 + 12, // 61.0); // SystemInterface testSystem = new SystemUMRPRUMCEos(300.0, 10.0); - // SystemInterface testSystem = new SystemSrkEos(298.15, 1.01325); + // SystemInterface testSystem = new SystemSrkEos(298.15, + // ThermodynamicConstantsInterface.referencePressure); ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); //testSystem.addComponent("methane", 100); @@ -48,7 +49,7 @@ public static void main(String args[]) { // testSystem.addComponent("Cl-", 0.1); // testSystem.addComponent("MEG", 2.1); testSystem.addComponent("methanol", 20); - /// testSystem.addComponent("MEG", 5.3); + // testSystem.addComponent("MEG", 5.3); // testSystem.addComponent("MEG", 10.0); // testSystem.addTBPfraction("C8", 10.1, 90.0 / 1000.0, 0.8); //testSystem.addComponent("MEG", 10.5); diff --git a/src/test/java/neqsim/thermo/util/example/OsmoticCoefficient.java b/src/test/java/neqsim/thermo/util/example/OsmoticCoefficient.java index 7cc59d06fc..22e5599766 100644 --- a/src/test/java/neqsim/thermo/util/example/OsmoticCoefficient.java +++ b/src/test/java/neqsim/thermo/util/example/OsmoticCoefficient.java @@ -1,5 +1,6 @@ package neqsim.thermo.util.example; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemElectrolyteCPAstatoil; import neqsim.thermo.system.SystemInterface; @@ -22,11 +23,13 @@ public class OsmoticCoefficient { */ @SuppressWarnings("unused") public static void main(String args[]) { - SystemInterface testSystem = new SystemElectrolyteCPAstatoil(298.0, 1.01325); - // SystemInterface testSystem = new SystemElectrolyteCPA(298.15,1.01325201325); - // SystemInterface testSystem = new SystemSrkCPAs(298.15,1.01325); + SystemInterface testSystem = + new SystemElectrolyteCPAstatoil(298.0, ThermodynamicConstantsInterface.referencePressure); + // SystemInterface testSystem = new SystemElectrolyteCPA(298.15,1.01325201325); // SystemInterface testSystem = new - // SystemSrkSchwartzentruberEos(298.15,1.01325); + // SystemSrkCPAs(298.15,ThermodynamicConstantsInterface.referencePressure); + // SystemInterface testSystem = new + // SystemSrkSchwartzentruberEos(298.15,ThermodynamicConstantsInterface.referencePressure); // creates a 0.1 molar solution 0.0018 testSystem.addComponent("methane", 10.0); @@ -53,7 +56,7 @@ public static void main(String args[]) { // try{ // // testOps.TPflash(); // // testOps.calcSaltSaturation("NaCl"); - // } catch(Exception e){ + // } catch(Exception ex){ // } testSystem.display(); diff --git a/src/test/java/neqsim/thermo/util/example/OsmoticCoefficient_1.java b/src/test/java/neqsim/thermo/util/example/OsmoticCoefficient_1.java index 6524b92ba6..c5362907ed 100644 --- a/src/test/java/neqsim/thermo/util/example/OsmoticCoefficient_1.java +++ b/src/test/java/neqsim/thermo/util/example/OsmoticCoefficient_1.java @@ -1,5 +1,6 @@ package neqsim.thermo.util.example; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemFurstElectrolyteEos; import neqsim.thermo.system.SystemInterface; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -14,58 +15,61 @@ * @version $Id: $Id */ public class OsmoticCoefficient_1 { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - SystemInterface testSystem = new SystemFurstElectrolyteEos(298.15, 1.01325); - // SystemInterface testSystem = new SystemElectrolyteCPA(298.15,1.01325); - // SystemInterface testSystem = new SystemSrkCPAs(298.15,1.01325); - // SystemInterface testSystem = new - // SystemSrkSchwartzentruberEos(298.15,1.01325); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + SystemInterface testSystem = + new SystemFurstElectrolyteEos(298.15, ThermodynamicConstantsInterface.referencePressure); + // SystemInterface testSystem = new + // SystemElectrolyteCPA(298.15,ThermodynamicConstantsInterface.referencePressure); + // SystemInterface testSystem = new + // SystemSrkCPAs(298.15,ThermodynamicConstantsInterface.referencePressure); + // SystemInterface testSystem = new + // SystemSrkSchwartzentruberEos(298.15,ThermodynamicConstantsInterface.referencePressure); - // creates a 0.1 molar solution 0.0018 - testSystem.addComponent("CO2", 0.1); - testSystem.addComponent("water", 10.0); - // testSystem.addComponent("HCO3-", 0.18018); - // testSystem.addComponent("CO2", 0.0018018); - // testSystem.addComponent("BrMinus", 0.018018); - // testSystem.addComponent("H3Oplus", 0.00018018); - testSystem.addComponent("MDEA", 1.0); + // creates a 0.1 molar solution 0.0018 + testSystem.addComponent("CO2", 0.1); + testSystem.addComponent("water", 10.0); + // testSystem.addComponent("HCO3-", 0.18018); + // testSystem.addComponent("CO2", 0.0018018); + // testSystem.addComponent("BrMinus", 0.018018); + // testSystem.addComponent("H3Oplus", 0.00018018); + testSystem.addComponent("MDEA", 1.0); - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); + testSystem.chemicalReactionInit(); + testSystem.createDatabase(true); - testSystem.setMixingRule(7); - testSystem.init(0); - testSystem.init(3); - // // System.out.println("volume " + testSystem.getPhase(1).getMolarVolume()); - // double meanact2 = testSystem.getPhase(1).getActivityCoefficient(2); + testSystem.setMixingRule(7); + testSystem.init(0); + testSystem.init(3); + // // System.out.println("volume " + testSystem.getPhase(1).getMolarVolume()); + // double meanact2 = testSystem.getPhase(1).getActivityCoefficient(2); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.bubblePointPressureFlash(false); - // testOps.calcSaltSaturation("PbCl2"); - } catch (Exception e) { - } - testSystem.display(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.bubblePointPressureFlash(false); + // testOps.calcSaltSaturation("PbCl2"); + } catch (Exception ex) { + } + testSystem.display(); - double osmCoef = testSystem.getPhase(1).getOsmoticCoefficientOfWater(); - double meanact = testSystem.getPhase(1).getMeanIonicActivity(2, 3); - double meanact2 = testSystem.getPhase(1).getActivityCoefficient(4, 1); - // testSystem.getPhase(1).getActivityCoefficient(3); - // testSystem.getPhase(1).getActivityCoefficient(3); - // System.out.println("mean ionic activity: " + meanact); - // System.out.println("Na+ ionic activity: " + meanact2); - // System.out.println("osmotic coefficient: " + osmCoef); + double osmCoef = testSystem.getPhase(1).getOsmoticCoefficientOfWater(); + double meanact = testSystem.getPhase(1).getMeanIonicActivity(2, 3); + double meanact2 = testSystem.getPhase(1).getActivityCoefficient(4, 1); + // testSystem.getPhase(1).getActivityCoefficient(3); + // testSystem.getPhase(1).getActivityCoefficient(3); + // System.out.println("mean ionic activity: " + meanact); + // System.out.println("Na+ ionic activity: " + meanact2); + // System.out.println("osmotic coefficient: " + osmCoef); - // thermo.ThermodynamicModelTest testModel = new - // thermo.ThermodynamicModelTest(testSystem); - // testModel.runTest(); - } + // thermo.ThermodynamicModelTest testModel = new + // thermo.ThermodynamicModelTest(testSystem); + // testModel.runTest(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/PS_PH_flash.java b/src/test/java/neqsim/thermo/util/example/PS_PH_flash.java index 0cb44cafa7..c31fd705d7 100644 --- a/src/test/java/neqsim/thermo/util/example/PS_PH_flash.java +++ b/src/test/java/neqsim/thermo/util/example/PS_PH_flash.java @@ -5,99 +5,100 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

PS_PH_flash class.

+ *

+ * PS_PH_flash class. + *

* * @author esol * @since 2.2.3 * @version $Id: $Id */ public class PS_PH_flash { - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - // SystemInterface testSystem = new SystemSrkMathiasCopeman(273.15 + 5, 80); - SystemInterface testSystem = new SystemSrkEos(273.15 + 15.0, 100.0); - // SystemInterface testSystem = new SystemGERG2004Eos(277.59,689.474483); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(350.15,30.00); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + // SystemInterface testSystem = new SystemSrkMathiasCopeman(273.15 + 5, 80); + SystemInterface testSystem = new SystemSrkEos(273.15 + 15.0, 100.0); + // SystemInterface testSystem = new SystemGERG2004Eos(277.59,689.474483); + // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(350.15,30.00); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("water", 51.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("water", 51.0); - testSystem.addComponent("nitrogen", 1.08263303991407E-05); - testSystem.addComponent("CO2", 0.00019008457660675); - testSystem.addComponent("methane", 0.00305547803640366); - testSystem.addComponent("ethane", 0.00200786963105202); - testSystem.addComponent("propane", 0.00389420658349991); - testSystem.addComponent("n-butane", 0.00179276615381241); - testSystem.addComponent("i-butane", 0.00255768150091171); - testSystem.addComponent("i-pentane", 0.00205287128686905); - testSystem.addComponent("n-pentane", 0.00117853358387947); - /* - * testSystem.addTBPfraction("CH2", 0.000867870151996613, 0.0810000000000000, - * 0.72122997045517); testSystem.addTBPfraction("CH3", 0.04819875717163090, - * 0.0987799987792969, 0.754330039024353); testSystem.addTBPfraction("CH4", - * 0.0972084712982178, 0.1412200012207030, 0.81659996509552); - * testSystem.addTBPfraction("CH5", 0.16517408370, 0.1857899932861330, 0.861050009727478); - * testSystem.addTBPfraction("CH6", 0.279571933746338, 0.2410899963378910, - * 0.902539968490601); testSystem.addTBPfraction("CH7", 0.2404942512512, 0.4045100097656250, - * 0.955269992351531); testSystem.addTBPfraction("CH8", 0.1131200218, 0.9069699, - * 1.0074599981308); // testSystem.addComponent("ethane", 0.05); - * testSystem.addComponent("water", 1.19299e-1); // testSystem.addComponent("n-butane", - * 3.53465e-1); // testSystem.addComponent("propane", 50); //testSystem.addComponent("CO2", - * 50); //testSystem.addComponent("water", 20); - */ - // 1- orginal no interaction 2- classic w interaction - // 3- Huron-Vidal 4- Wong-Sandler - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - try { - testOps.TPflash(); - // testOps.bubblePointTemperatureFlash(); - } catch (Exception e) { - } - testSystem.init(3); - // testSystem.display(); + testSystem.addComponent("nitrogen", 1.08263303991407E-05); + testSystem.addComponent("CO2", 0.00019008457660675); + testSystem.addComponent("methane", 0.00305547803640366); + testSystem.addComponent("ethane", 0.00200786963105202); + testSystem.addComponent("propane", 0.00389420658349991); + testSystem.addComponent("n-butane", 0.00179276615381241); + testSystem.addComponent("i-butane", 0.00255768150091171); + testSystem.addComponent("i-pentane", 0.00205287128686905); + testSystem.addComponent("n-pentane", 0.00117853358387947); + /* + * testSystem.addTBPfraction("CH2", 0.000867870151996613, 0.0810000000000000, 0.72122997045517); + * testSystem.addTBPfraction("CH3", 0.04819875717163090, 0.0987799987792969, 0.754330039024353); + * testSystem.addTBPfraction("CH4", 0.0972084712982178, 0.1412200012207030, 0.81659996509552); + * testSystem.addTBPfraction("CH5", 0.16517408370, 0.1857899932861330, 0.861050009727478); + * testSystem.addTBPfraction("CH6", 0.279571933746338, 0.2410899963378910, 0.902539968490601); + * testSystem.addTBPfraction("CH7", 0.2404942512512, 0.4045100097656250, 0.955269992351531); + * testSystem.addTBPfraction("CH8", 0.1131200218, 0.9069699, 1.0074599981308); // + * testSystem.addComponent("ethane", 0.05); testSystem.addComponent("water", 1.19299e-1); // + * testSystem.addComponent("n-butane", 3.53465e-1); // testSystem.addComponent("propane", 50); + * //testSystem.addComponent("CO2", 50); //testSystem.addComponent("water", 20); + */ + // 1- orginal no interaction 2- classic w interaction + // 3- Huron-Vidal 4- Wong-Sandler + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + try { + testOps.TPflash(); + // testOps.bubblePointTemperatureFlash(); + } catch (Exception ex) { + } + testSystem.init(3); + // testSystem.display(); - // testSystem.setPressure(testSystem.getPressure() - 1.2); - // double entropy = testSystem.getEntropy(); - // System.out.println("entropy spec" + entropy); - double enthalpy = testSystem.getEnthalpy(); - // System.out.println("enthalpy spec" + enthalpy); + // testSystem.setPressure(testSystem.getPressure() - 1.2); + // double entropy = testSystem.getEntropy(); + // System.out.println("entropy spec" + entropy); + double enthalpy = testSystem.getEnthalpy(); + // System.out.println("enthalpy spec" + enthalpy); - double entropy = testSystem.getEntropy(); - /* - * testSystem.setTemperature(273.15 + 0.0); testSystem.setPressure(100.0); try { - * testOps.TPflash(); // testOps.bubblePointTemperatureFlash(); } catch (Exception e) { - * - * } testSystem.init(2); testSystem.setPressure(100.0); // System.out.println("entropy spec" - * + entropy); - * - * // testSystem.setPressure(20.894745); - */ - testSystem.setPressure(10.0); - testOps.PSflash(entropy); - // testOps.PHflash(enthalpy); - // testSystem.display(); + double entropy = testSystem.getEntropy(); + /* + * testSystem.setTemperature(273.15 + 0.0); testSystem.setPressure(100.0); try { + * testOps.TPflash(); // testOps.bubblePointTemperatureFlash(); } catch (Exception ex) { } + * testSystem.init(2); testSystem.setPressure(100.0); // System.out.println("entropy spec" + + * entropy); + * + * // testSystem.setPressure(20.894745); + */ + testSystem.setPressure(10.0); + testOps.PSflash(entropy); + // testOps.PHflash(enthalpy); + // testSystem.display(); - // testOps.PSflash(entropy); - // testSystem.display(); - // testSystem.display(); - // testSystem.setTemperature(273.15 + 30.0); - // testSystem.setPressure(200.0); - try { - // testOps.TPflash(); - // testOps.bubblePointTemperatureFlash(); - } catch (Exception e) { - } - // testSystem.init(2); - // testSystem.setPressure(1.0); - // testOps.PSflash(entropy); - testSystem.display(); - // System.out.println("enthalpy spec" + testSystem.getEnthalpy()); + // testOps.PSflash(entropy); + // testSystem.display(); + // testSystem.display(); + // testSystem.setTemperature(273.15 + 30.0); + // testSystem.setPressure(200.0); + try { + // testOps.TPflash(); + // testOps.bubblePointTemperatureFlash(); + } catch (Exception ex) { } + // testSystem.init(2); + // testSystem.setPressure(1.0); + // testOps.PSflash(entropy); + testSystem.display(); + // System.out.println("enthalpy spec" + testSystem.getEnthalpy()); + } } diff --git a/src/test/java/neqsim/thermo/util/example/PhaseEnvelope.java b/src/test/java/neqsim/thermo/util/example/PhaseEnvelope.java index a7bb6ccb01..fb958e0187 100644 --- a/src/test/java/neqsim/thermo/util/example/PhaseEnvelope.java +++ b/src/test/java/neqsim/thermo/util/example/PhaseEnvelope.java @@ -18,138 +18,137 @@ * @version $Id: $Id */ public class PhaseEnvelope { - static Logger logger = LogManager.getLogger(PhaseEnvelope.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - // SystemInterface testSystem = new SystemUMRPRUEos(225.65, 1.00); - // SystemInterface testSystem = new SystemPrEos1978(223.15,50.00); - // SystemInterface testSystem = new SystemPrGassemEos(253.15,50.00); - SystemInterface testSystem = new SystemUMRPRUMCEos(280.0, 41.00); - // SystemInterface testSystem = new SystemPrDanesh(273.15+80.0,100.00); - // SystemInterface testSystem = new SystemPrEosDelft1998(223.15,50.00); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - testSystem.addComponent("nitrogen", 1.1427); - testSystem.addComponent("CO2", 0.5364); - testSystem.addComponent("methane", 95.2399); - testSystem.addComponent("ethane", 2.2126); - testSystem.addComponent("propane", 0.3236); - testSystem.addComponent("i-butane", 0.1342); - testSystem.addComponent("n-butane", 0.0812); - // testSystem.addComponent("22-dim-C3", 1.7977); - testSystem.addComponent("i-pentane", 0.0684); - testSystem.addComponent("n-pentane", 0.0344); - // testSystem.addComponent("c-C5", 0.0112); - // testSystem.addComponent("22-dim-C4", 0.0022); - /// testSystem.addComponent("23-dim-C4", 0.0027); - testSystem.addComponent("2-m-C5", 0.0341); - testSystem.addComponent("3-m-C5", 0.0105); - testSystem.addComponent("n-hexane", 0.0172); - testSystem.addComponent("c-hexane", 0.0701); - testSystem.addComponent("benzene", 0.0016); - testSystem.addComponent("n-heptane", 0.0124); - testSystem.addComponent("toluene", 0.0042); - testSystem.addComponent("c-C7", 0.0504); - testSystem.addComponent("n-octane", 0.0037); - testSystem.addComponent("m-Xylene", 0.0032); - testSystem.addComponent("c-C8", 0.0095); - testSystem.addComponent("n-nonane", 0.0033); - // testSystem.addTBPfraction("C10", 0.0053, 134.0/1000.0, 0.79); - // testSystem.addTBPfraction("C11", 0.0004, 147.0/1000.0, 0.8); - - testSystem.addComponent("nC10", 0.0058); - testSystem.addComponent("nC11", 0.0005); - // testSystem.addComponent("nC12", 0.0004); - - // testSystem.addComponent("m-Xylene", 0.0000000000); - - // testSystem.addComponent("nC10", 1e-4); - - // testSystem.addComponent("n-octane", 0.027); - // testSystem.addComponent("nC13", .3); - // testSystem.addTBPfraction("C6", 1.587, 86.178 / 1000.0, 0.70255); - // testSystem.addTBPfraction("C7", 2.566, 91.5 / 1000.0, 0.738); - // testSystem.addTBPfraction("C8", 2.764, 101.2 / 1000.0, 0.765); - // testSystem.addTBPfraction("C9", 1.71, 119.1 / 1000.0, 0.781); - // testSystem.addTBPfraction("C10", 1.647, 254.9 / 1000.0, 0.894871); - - // testSystem.addComponent("water", 100.2); - // testSystem.addPlusFraction("C11", 0.01, 256.2 / 1000.0, 0.92787278398); - // testSystem.getCharacterization(). - - // testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(12); - // testSystem.getCharacterization().characterisePlusFraction(); - - // testSystem.createDatabase(true); - - testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - // testSystem.setMultiPhaseCheck(true); - // 1- orginal no interaction 2- classic w interaction - // 3- Huron-Vidal 4- Wong-Sandler - // testSystem.setMixingRule(2);//"UNIFAC_UMRPRU"); - // testSystem.setHydrateCheck(true); - // testSystem.setBmixType(0); - - // Calculates the phase envelope for the mixture - // testOps.calcPTphaseEnvelope(true); - - // Calculates the phase envelope for pashe fraction x and 1-x - // calcPTphaseEnvelope(minimum pressure, phase fraction); - try { - /* - * testOps.setRunAsThread(true); testOps.waterDewPointLine(10, 200); boolean isFinished - * = testOps.waitAndCheckForFinishedCalculation(50000); double[][] waterData = - * testOps.getData(); - * - * testOps.hydrateEquilibriumLine(10, 200); isFinished = - * testOps.waitAndCheckForFinishedCalculation(50000); double[][] hydData = - * testOps.getData(); - * - * testSystem.addComponent("water", - * -testSystem.getPhase(0).getComponent("water").getNumberOfmoles()); - */ - // testOps.calcPTphaseEnvelope();//true); - // testOps.displayResult(); - // logger.info("Cricondenbar " + testOps.get("cricondenbar")[0] + " " + - // testOps.get("cricondenbar")[1]); - // logger.info("Cricondentherm " + testOps.get("cricondentherm")[0] + " " + - // testOps.get("cricondentherm")[1]); - // isFinished = testOps.waitAndCheckForFinishedCalculation(10000); - // testOps.addData("water", waterData); - // testOps.addData("hydrate", hydData); - // testOps.calcPTphaseEnvelopeNew(); - // testOps.displayResult(); - - testSystem.setTemperature(273.15 - 0.0); - testSystem.setPressure(50.0); - SimulationInterface satPresSim = new SaturationPressure(testSystem); - satPresSim.run(); - satPresSim.getThermoSystem().display(); - // testOps.getJfreeChart(); - // testOps.dewPointPressureFlash(); - // testOps.bubblePointTemperatureFlash(); - // JFreeChart jfreeObj = testOps.getJfreeChart(); - // BufferedImage buf = jfreeObj.createBufferedImage(640, 400, null); - } catch (Exception e) { - logger.error("error", e); - } - - // testSystem.display(); - // testOps.get("DewT"); - // thermo.ThermodynamicModelTest testModel = new - // thermo.ThermodynamicModelTest(testSystem); - // testModel.runTest(); - - // System.out.println("tempeerature " + (testSystem.getTemperature() - 273.15)); - // testOps.displayResult(); + static Logger logger = LogManager.getLogger(PhaseEnvelope.class); + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + // SystemInterface testSystem = new SystemUMRPRUEos(225.65, 1.00); + // SystemInterface testSystem = new SystemPrEos1978(223.15,50.00); + // SystemInterface testSystem = new SystemPrGassemEos(253.15,50.00); + SystemInterface testSystem = new SystemUMRPRUMCEos(280.0, 41.00); + // SystemInterface testSystem = new SystemPrDanesh(273.15+80.0,100.00); + // SystemInterface testSystem = new SystemPrEosDelft1998(223.15,50.00); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + + testSystem.addComponent("nitrogen", 1.1427); + testSystem.addComponent("CO2", 0.5364); + testSystem.addComponent("methane", 95.2399); + testSystem.addComponent("ethane", 2.2126); + testSystem.addComponent("propane", 0.3236); + testSystem.addComponent("i-butane", 0.1342); + testSystem.addComponent("n-butane", 0.0812); + // testSystem.addComponent("22-dim-C3", 1.7977); + testSystem.addComponent("i-pentane", 0.0684); + testSystem.addComponent("n-pentane", 0.0344); + // testSystem.addComponent("c-C5", 0.0112); + // testSystem.addComponent("22-dim-C4", 0.0022); + // testSystem.addComponent("23-dim-C4", 0.0027); + testSystem.addComponent("2-m-C5", 0.0341); + testSystem.addComponent("3-m-C5", 0.0105); + testSystem.addComponent("n-hexane", 0.0172); + testSystem.addComponent("c-hexane", 0.0701); + testSystem.addComponent("benzene", 0.0016); + testSystem.addComponent("n-heptane", 0.0124); + testSystem.addComponent("toluene", 0.0042); + testSystem.addComponent("c-C7", 0.0504); + testSystem.addComponent("n-octane", 0.0037); + testSystem.addComponent("m-Xylene", 0.0032); + testSystem.addComponent("c-C8", 0.0095); + testSystem.addComponent("n-nonane", 0.0033); + // testSystem.addTBPfraction("C10", 0.0053, 134.0/1000.0, 0.79); + // testSystem.addTBPfraction("C11", 0.0004, 147.0/1000.0, 0.8); + + testSystem.addComponent("nC10", 0.0058); + testSystem.addComponent("nC11", 0.0005); + // testSystem.addComponent("nC12", 0.0004); + + // testSystem.addComponent("m-Xylene", 0.0000000000); + + // testSystem.addComponent("nC10", 1e-4); + + // testSystem.addComponent("n-octane", 0.027); + // testSystem.addComponent("nC13", .3); + // testSystem.addTBPfraction("C6", 1.587, 86.178 / 1000.0, 0.70255); + // testSystem.addTBPfraction("C7", 2.566, 91.5 / 1000.0, 0.738); + // testSystem.addTBPfraction("C8", 2.764, 101.2 / 1000.0, 0.765); + // testSystem.addTBPfraction("C9", 1.71, 119.1 / 1000.0, 0.781); + // testSystem.addTBPfraction("C10", 1.647, 254.9 / 1000.0, 0.894871); + + // testSystem.addComponent("water", 100.2); + // testSystem.addPlusFraction("C11", 0.01, 256.2 / 1000.0, 0.92787278398); + // testSystem.getCharacterization(). + + // testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(12); + // testSystem.getCharacterization().characterisePlusFraction(); + + // testSystem.createDatabase(true); + + testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); + // testSystem.setMultiPhaseCheck(true); + // 1- orginal no interaction 2- classic w interaction + // 3- Huron-Vidal 4- Wong-Sandler + // testSystem.setMixingRule(2); //"UNIFAC_UMRPRU"); + // testSystem.setHydrateCheck(true); + // testSystem.setBmixType(0); + + // Calculates the phase envelope for the mixture + // testOps.calcPTphaseEnvelope(true); + + // Calculates the phase envelope for pashe fraction x and 1-x + // calcPTphaseEnvelope(minimum pressure, phase fraction); + try { + /* + * testOps.setRunAsThread(true); testOps.waterDewPointLine(10, 200); boolean isFinished = + * testOps.waitAndCheckForFinishedCalculation(50000); double[][] waterData = + * testOps.getData(); + * + * testOps.hydrateEquilibriumLine(10, 200); isFinished = + * testOps.waitAndCheckForFinishedCalculation(50000); double[][] hydData = testOps.getData(); + * + * testSystem.addComponent("water", + * -testSystem.getPhase(0).getComponent("water").getNumberOfmoles()); + */ + // testOps.calcPTphaseEnvelope(); //true); + // testOps.displayResult(); + // logger.info("Cricondenbar " + testOps.get("cricondenbar")[0] + " " + + // testOps.get("cricondenbar")[1]); + // logger.info("Cricondentherm " + testOps.get("cricondentherm")[0] + " " + + // testOps.get("cricondentherm")[1]); + // isFinished = testOps.waitAndCheckForFinishedCalculation(10000); + // testOps.addData("water", waterData); + // testOps.addData("hydrate", hydData); + // testOps.calcPTphaseEnvelopeNew(); + // testOps.displayResult(); + + testSystem.setTemperature(273.15 - 0.0); + testSystem.setPressure(50.0); + SimulationInterface satPresSim = new SaturationPressure(testSystem); + satPresSim.run(); + satPresSim.getThermoSystem().display(); + // testOps.getJfreeChart(); + // testOps.dewPointPressureFlash(); + // testOps.bubblePointTemperatureFlash(); + // JFreeChart jfreeObj = testOps.getJfreeChart(); + // BufferedImage buf = jfreeObj.createBufferedImage(640, 400, null); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + + // testSystem.display(); + // testOps.get("DewT"); + // thermo.ThermodynamicModelTest testModel = new + // thermo.ThermodynamicModelTest(testSystem); + // testModel.runTest(); + + // System.out.println("tempeerature " + (testSystem.getTemperature() - 273.15)); + // testOps.displayResult(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/PhaseEnvelope2.java b/src/test/java/neqsim/thermo/util/example/PhaseEnvelope2.java index 03c0e58419..ec774eed31 100644 --- a/src/test/java/neqsim/thermo/util/example/PhaseEnvelope2.java +++ b/src/test/java/neqsim/thermo/util/example/PhaseEnvelope2.java @@ -7,36 +7,40 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

PhaseEnvelope2 class.

+ *

+ * PhaseEnvelope2 class. + *

* * @author evensolbraa * @version $Id: $Id * @since 2.2.3 */ public class PhaseEnvelope2 { - static Logger logger = LogManager.getLogger(PhaseEnvelope2.class); + static Logger logger = LogManager.getLogger(PhaseEnvelope2.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(280.0, 1.00); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(280.0, 1.00); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 90.0); - testSystem.addComponent("propane", 3.0); - testSystem.addComponent("i-butane", 1.8); - testSystem.addComponent("n-butane", 1.433); - testSystem.addComponent("n-hexane", 1.433); - testSystem.setMixingRule(2); - try { - testOps.calcPTphaseEnvelope(); - testOps.displayResult(); - } catch (Exception e) { - logger.error("error", e); - } + testSystem.addComponent("methane", 90.0); + testSystem.addComponent("propane", 3.0); + testSystem.addComponent("i-butane", 1.8); + testSystem.addComponent("n-butane", 1.433); + testSystem.addComponent("n-hexane", 1.433); + testSystem.setMixingRule(2); + try { + testOps.calcPTphaseEnvelope(); + testOps.displayResult(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermo/util/example/PressureLoadingCurve.java b/src/test/java/neqsim/thermo/util/example/PressureLoadingCurve.java index 9488fab173..a5b00d6111 100644 --- a/src/test/java/neqsim/thermo/util/example/PressureLoadingCurve.java +++ b/src/test/java/neqsim/thermo/util/example/PressureLoadingCurve.java @@ -7,68 +7,68 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

PressureLoadingCurve class.

+ *

+ * PressureLoadingCurve class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class PressureLoadingCurve { - static Logger logger = LogManager.getLogger(PressureLoadingCurve.class); + static Logger logger = LogManager.getLogger(PressureLoadingCurve.class); - /** - * This method is just meant to test the thermo package. - * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - double[][] points; - SystemInterface testSystem = new SystemFurstElectrolyteEos((273.15 + 75.0), 1.3); + /** + * This method is just meant to test the thermo package. + * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + double[][] points; + SystemInterface testSystem = new SystemFurstElectrolyteEos((273.15 + 75.0), 1.3); - double loading = 0.65; - double molProsMDEA = 11.21; - testSystem.addComponent("CO2", loading * molProsMDEA); - testSystem.addComponent("water", 100.0 - molProsMDEA - loading * molProsMDEA); - testSystem.addComponent("MDEA", molProsMDEA); - // testSystem.addComponent("Piperazine", loading*molProsMDEA*0.1); - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - testSystem.init(0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testOps.calcPloadingCurve(); - long time = System.currentTimeMillis(); + double loading = 0.65; + double molProsMDEA = 11.21; + testSystem.addComponent("CO2", loading * molProsMDEA); + testSystem.addComponent("water", 100.0 - molProsMDEA - loading * molProsMDEA); + testSystem.addComponent("MDEA", molProsMDEA); + // testSystem.addComponent("Piperazine", loading*molProsMDEA*0.1); + testSystem.chemicalReactionInit(); + testSystem.createDatabase(true); + testSystem.setMixingRule(4); + testSystem.init(0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testOps.calcPloadingCurve(); + long time = System.currentTimeMillis(); - try { - testOps.bubblePointPressureFlash(true); - } catch (Exception e) { - logger.error(e.toString()); - } - logger.info("Time taken for benchmark flash = " + (System.currentTimeMillis() - time)); - testSystem.display(); - logger.info("pressure " + testSystem.getPressure()); - int reactionNumber = 0; - logger.info("K " + testSystem.getChemicalReactionOperations().getReactionList() - .getReaction(reactionNumber).calcK(testSystem, 1)); - logger.info("Kx " + testSystem.getChemicalReactionOperations().getReactionList() - .getReaction(reactionNumber).calcKx(testSystem, 1)); - logger.info("Kgamma " + testSystem.getChemicalReactionOperations().getReactionList() - .getReaction(reactionNumber).calcKgamma(testSystem, 1)); - testSystem.setPressure(100.0); - testSystem.getChemicalReactionOperations().solveChemEq(1); - logger.info("K " + testSystem.getChemicalReactionOperations().getReactionList() - .getReaction(reactionNumber).calcK(testSystem, 1)); - logger.info("Kx " + testSystem.getChemicalReactionOperations().getReactionList() - .getReaction(reactionNumber).calcKx(testSystem, 1)); - logger.info("Kgamma " + testSystem.getChemicalReactionOperations().getReactionList() - .getReaction(reactionNumber).calcKgamma(testSystem, 1)); - - testSystem.display(); - // thermo.ThermodynamicModelTest testModel = new - // thermo.ThermodynamicModelTest(testSystem); - // testModel.runTest(); - // write data to netcdf - // testOps.writeNetCDF("c:/testloading.nc"); + try { + testOps.bubblePointPressureFlash(true); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + logger.info("Time taken for benchmark flash = " + (System.currentTimeMillis() - time)); + testSystem.display(); + logger.info("pressure " + testSystem.getPressure()); + int reactionNumber = 0; + logger.info("K " + testSystem.getChemicalReactionOperations().getReactionList() + .getReaction(reactionNumber).calcK(testSystem, 1)); + logger.info("Kx " + testSystem.getChemicalReactionOperations().getReactionList() + .getReaction(reactionNumber).calcKx(testSystem, 1)); + logger.info("Kgamma " + testSystem.getChemicalReactionOperations().getReactionList() + .getReaction(reactionNumber).calcKgamma(testSystem, 1)); + testSystem.setPressure(100.0); + testSystem.getChemicalReactionOperations().solveChemEq(1); + logger.info("K " + testSystem.getChemicalReactionOperations().getReactionList() + .getReaction(reactionNumber).calcK(testSystem, 1)); + logger.info("Kx " + testSystem.getChemicalReactionOperations().getReactionList() + .getReaction(reactionNumber).calcKx(testSystem, 1)); + logger.info("Kgamma " + testSystem.getChemicalReactionOperations().getReactionList() + .getReaction(reactionNumber).calcKgamma(testSystem, 1)); + + testSystem.display(); + // thermo.ThermodynamicModelTest testModel = new + // thermo.ThermodynamicModelTest(testSystem); + // testModel.runTest(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/ReactiveDesmukhMather.java b/src/test/java/neqsim/thermo/util/example/ReactiveDesmukhMather.java index 8655ff5c24..5165a92825 100644 --- a/src/test/java/neqsim/thermo/util/example/ReactiveDesmukhMather.java +++ b/src/test/java/neqsim/thermo/util/example/ReactiveDesmukhMather.java @@ -5,36 +5,40 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

ReactiveDesmukhMather class.

+ *

+ * ReactiveDesmukhMather class. + *

* * @author esol * @since 2.2.3 * @version $Id: $Id */ public class ReactiveDesmukhMather { - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemDesmukhMather(290.0, 5.1); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemDesmukhMather(290.0, 5.1); - testSystem.addComponent("CO2", 0.9000509251997); - testSystem.addComponent("MDEA", 1.0); - testSystem.addComponent("water", 9.0); + testSystem.addComponent("CO2", 0.9000509251997); + testSystem.addComponent("MDEA", 1.0); + testSystem.addComponent("water", 9.0); - testSystem.chemicalReactionInit(); - testSystem.setMixingRule(2); - testSystem.createDatabase(true); - // testSystem.setPhysicalPropertyModel(3); + testSystem.chemicalReactionInit(); + testSystem.setMixingRule(2); + testSystem.createDatabase(true); + // testSystem.setPhysicalPropertyModel(3); - ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); - try { - ops.bubblePointPressureFlash(false); - } catch (Exception e) { - } - testSystem.display(); + try { + ops.bubblePointPressureFlash(false); + } catch (Exception ex) { } + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/ReactiveKentEisenberg.java b/src/test/java/neqsim/thermo/util/example/ReactiveKentEisenberg.java index e0c976e5e4..61483069a4 100644 --- a/src/test/java/neqsim/thermo/util/example/ReactiveKentEisenberg.java +++ b/src/test/java/neqsim/thermo/util/example/ReactiveKentEisenberg.java @@ -7,48 +7,52 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

ReactiveKentEisenberg class.

+ *

+ * ReactiveKentEisenberg class. + *

* * @author esol * @since 2.2.3 * @version $Id: $Id */ public class ReactiveKentEisenberg { - static Logger logger = LogManager.getLogger(ReactiveKentEisenberg.class); + static Logger logger = LogManager.getLogger(ReactiveKentEisenberg.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemKentEisenberg(326.0, 1.1); - SystemInterface testSystem = new SystemFurstElectrolyteEos(326.0, 0.1); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemKentEisenberg(326.0, 1.1); + SystemInterface testSystem = new SystemFurstElectrolyteEos(326.0, 0.1); - // testSystem.addComponent("methane", 0.01); - testSystem.addComponent("H2S", 0.01); - testSystem.addComponent("water", 9.0); - testSystem.addComponent("MDEA", 0.1); - // testSystem.addComponent("Piperazine", 0.1); + // testSystem.addComponent("methane", 0.01); + testSystem.addComponent("H2S", 0.01); + testSystem.addComponent("water", 9.0); + testSystem.addComponent("MDEA", 0.1); + // testSystem.addComponent("Piperazine", 0.1); - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - // testSystem.setPhysicalPropertyModel(3); + testSystem.chemicalReactionInit(); + testSystem.createDatabase(true); + testSystem.setMixingRule(4); + // testSystem.setPhysicalPropertyModel(3); - ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); - try { - for (int i = 0; i < 1; i++) { - testSystem.addComponent("H2S", 0.01); - ops.bubblePointPressureFlash(false); - logger.info("pres H2S " + testSystem.getPressure() - * testSystem.getPhase(0).getComponent("H2S").getx()); - } - // ops.TPflash(); - } catch (Exception e) { - } - testSystem.display(); - logger.info("pH " + testSystem.getPhase(1).getpH()); + try { + for (int i = 0; i < 1; i++) { + testSystem.addComponent("H2S", 0.01); + ops.bubblePointPressureFlash(false); + logger.info("pres H2S " + + testSystem.getPressure() * testSystem.getPhase(0).getComponent("H2S").getx()); + } + // ops.TPflash(); + } catch (Exception ex) { } + testSystem.display(); + logger.info("pH " + testSystem.getPhase(1).getpH()); + } } diff --git a/src/test/java/neqsim/thermo/util/example/ReactiveTPflash.java b/src/test/java/neqsim/thermo/util/example/ReactiveTPflash.java index 977e81b87a..2fc07cb1e8 100644 --- a/src/test/java/neqsim/thermo/util/example/ReactiveTPflash.java +++ b/src/test/java/neqsim/thermo/util/example/ReactiveTPflash.java @@ -16,72 +16,72 @@ * @version $Id: $Id */ public class ReactiveTPflash { - static Logger logger = LogManager.getLogger(ReactiveTPflash.class); + static Logger logger = LogManager.getLogger(ReactiveTPflash.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemFurstElectrolyteEosMod2004(423.2, - // 24.4); - SystemInterface testSystem = new SystemElectrolyteCPAstatoil(308.3, 3.8); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemFurstElectrolyteEosMod2004(423.2, + // 24.4); + SystemInterface testSystem = new SystemElectrolyteCPAstatoil(308.3, 3.8); - testSystem.addComponent("methane", 99.0); - testSystem.addComponent("CO2", 1.0e-6); - // testSystem.addComponent("H2S", 0.10); - // testSystem.addComponent("MDEA", 13.0); - // testSystem.addComponent("nC10", 1.00); - testSystem.addComponent("water", 11.00, "kg/sec"); - // testSystem.addComponent("Na+", 1.200); - // testSystem.addComponent("OH-", 1.200); - // testSystem.addComponent("MDEA", 1.100, "mol/sec"); - // testSystem.addComponent("HCO3-", 0.100, "mol/sec"); - // testSystem.addComponent("Piperazine", 0.1e-4); + testSystem.addComponent("methane", 99.0); + testSystem.addComponent("CO2", 1.0e-6); + // testSystem.addComponent("H2S", 0.10); + // testSystem.addComponent("MDEA", 13.0); + // testSystem.addComponent("nC10", 1.00); + testSystem.addComponent("water", 11.00, "kg/sec"); + // testSystem.addComponent("Na+", 1.200); + // testSystem.addComponent("OH-", 1.200); + // testSystem.addComponent("MDEA", 1.100, "mol/sec"); + // testSystem.addComponent("HCO3-", 0.100, "mol/sec"); + // testSystem.addComponent("Piperazine", 0.1e-4); - testSystem.chemicalReactionInit(); - // testSystem.useVolumeCorrection(true); - testSystem.createDatabase(true); - testSystem.setMultiPhaseCheck(true); - testSystem.setMixingRule(10); - // testSystem. - ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); - testSystem.init(0); - testSystem.init(1); - // testSystem.init(1); - // System.out.println("wt% MDEA " + - // 100*testSystem.getPhase(1).getComponent("MDEA").getx()*testSystem.getPhase(1).getComponent("MDEA").getMolarMass()/(testSystem.getPhase(1).getComponent("MDEA").getx()*testSystem.getPhase(1).getComponent("MDEA").getMolarMass()+testSystem.getPhase(1).getComponent("water").getx()*testSystem.getPhase(1).getComponent("water").getMolarMass())); - // System.out.println("wt% Piperazine " + - // testSystem.getPhase(1).getComponent("Piperazine").getx()*testSystem.getPhase(1).getComponent("Piperazine").getMolarMass()/testSystem.getPhase(1).getMolarMass()); + testSystem.chemicalReactionInit(); + // testSystem.useVolumeCorrection(true); + testSystem.createDatabase(true); + testSystem.setMultiPhaseCheck(true); + testSystem.setMixingRule(10); + // testSystem. + ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + testSystem.init(0); + testSystem.init(1); + // testSystem.init(1); + // System.out.println("wt% MDEA " + + // 100*testSystem.getPhase(1).getComponent("MDEA").getx()*testSystem.getPhase(1).getComponent("MDEA").getMolarMass()/(testSystem.getPhase(1).getComponent("MDEA").getx()*testSystem.getPhase(1).getComponent("MDEA").getMolarMass()+testSystem.getPhase(1).getComponent("water").getx()*testSystem.getPhase(1).getComponent("water").getMolarMass())); + // System.out.println("wt% Piperazine " + + // testSystem.getPhase(1).getComponent("Piperazine").getx()*testSystem.getPhase(1).getComponent("Piperazine").getMolarMass()/testSystem.getPhase(1).getMolarMass()); - try { - // testSystem.getChemicalReactionOperations().solveChemEq(1, 0); - // testSystem.getChemicalReactionOperations().solveChemEq(1, 1); - // ops.bubblePointPressureFlash(false); - // // ops.bubblePointPressureFlash(false); - ops.TPflash(); - // ops.dewPointTemperatureFlash(); - } catch (Exception e) { - } - testSystem.display(); - System.out.println("pH " + testSystem.getPhase(1).getpH()); - logger.info("pH " + testSystem.getPhase(1).getpH()); - logger.info("activity coefficiet water " - + testSystem.getPhase("aqueous").getActivityCoefficient(2)); + try { + // testSystem.getChemicalReactionOperations().solveChemEq(1, 0); + // testSystem.getChemicalReactionOperations().solveChemEq(1, 1); + // ops.bubblePointPressureFlash(false); + // // ops.bubblePointPressureFlash(false); + ops.TPflash(); + // ops.dewPointTemperatureFlash(); + } catch (Exception ex) { + } + testSystem.display(); + // System.out.println("pH " + testSystem.getPhase(1).getpH()); + logger.info("pH " + testSystem.getPhase(1).getpH()); + logger.info( + "activity coefficiet water " + testSystem.getPhase("aqueous").getActivityCoefficient(2)); - // for(int i=0;i<23;i++){ - // try{ - // ops.bubblePointPressureFlash(false); - // // testSystem.display(); - // //ops.TPflash(); - // } catch(Exception e){} + // for(int i=0;i<23;i++){ + // try{ + // ops.bubblePointPressureFlash(false); + // // testSystem.display(); + // //ops.TPflash(); + // } catch(Exception ex){} - // System.out.println("loading " + (0.0005+0.05*i)+ " PCO2 " + - // testSystem.getPhase(0).getComponent("CO2").getx()*testSystem.getPressure()); - // testSystem.addComponent("CO2", 0.05*(6.45+1.78)); - // } - } + // System.out.println("loading " + (0.0005+0.05*i)+ " PCO2 " + + // testSystem.getPhase(0).getComponent("CO2").getx()*testSystem.getPressure()); + // testSystem.addComponent("CO2", 0.05*(6.45+1.78)); + // } + } } diff --git a/src/test/java/neqsim/thermo/util/example/ReactiveTPflash2.java b/src/test/java/neqsim/thermo/util/example/ReactiveTPflash2.java index 1b26b0475b..7573c63185 100644 --- a/src/test/java/neqsim/thermo/util/example/ReactiveTPflash2.java +++ b/src/test/java/neqsim/thermo/util/example/ReactiveTPflash2.java @@ -23,113 +23,111 @@ * @version $Id: $Id */ public class ReactiveTPflash2 { - static Logger logger = LogManager.getLogger(ReactiveTPflash2.class); + static Logger logger = LogManager.getLogger(ReactiveTPflash2.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemFurstElectrolyteEos(373.15, 10.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemFurstElectrolyteEos(373.15, 10.0); - try (FileWriter out = new FileWriter(new File("c:/temp/Wt50T25P10.txt"))) { - out.write("wt% = 50, T = 40 C and P = 10 bar" + "\n"); - out.write("\n"); - out.write("wt% MDEA" + "\t\t" + "x_H2O(l)" + "\t\t\t" + "x_MDEA(l)" + "\t\t\t" - + "x_CO2(l)" + "\t\t\t" + "x_CH4(l)" + "\t\t\t" + "x_MDEA+(l)" + "\t\t\t" - + "x_HCO3-(l)" + "\t\t\t" + "x_CO3--(l)" + "\t\t\t" + "x_OH-(l)" + "\t\t\t" - + "x_H3O+(l)" + "\t\t\t" + "x_H2O(g)" + "\t\t\t" + "x_MDEA(g)" + "\t\t\t" - + "x_CO2(g)" + "\t\t\t" + "x_CH4(g)" + "\n"); + try (FileWriter out = new FileWriter(new File("c:/temp/Wt50T25P10.txt"))) { + out.write("wt% = 50, T = 40 C and P = 10 bar" + "\n"); + out.write("\n"); + out.write("wt% MDEA" + "\t\t" + "x_H2O(l)" + "\t\t\t" + "x_MDEA(l)" + "\t\t\t" + "x_CO2(l)" + + "\t\t\t" + "x_CH4(l)" + "\t\t\t" + "x_MDEA+(l)" + "\t\t\t" + "x_HCO3-(l)" + "\t\t\t" + + "x_CO3--(l)" + "\t\t\t" + "x_OH-(l)" + "\t\t\t" + "x_H3O+(l)" + "\t\t\t" + "x_H2O(g)" + + "\t\t\t" + "x_MDEA(g)" + "\t\t\t" + "x_CO2(g)" + "\t\t\t" + "x_CH4(g)" + "\n"); - int imax = 3; - double max = 15; - double min = 0.01; + int imax = 3; + double max = 15; + double min = 0.01; - for (int i = 0; i < imax; i++) { - // Adding components - double den = imax - 1.0; - double methane = max - (max - min) / den * i; - double co2 = min + (max - min) / den * i; - // System.out.println(methane); - // System.out.println(co2); - testSystem.addComponent("methane", methane); - testSystem.addComponent("CO2", co2); - testSystem.addComponent("water", 50.0); - // testSystem.addComponent("Piperazine", 1.78); - testSystem.addComponent("MDEA", 7.5585298); + for (int i = 0; i < imax; i++) { + // Adding components + double den = imax - 1.0; + double methane = max - (max - min) / den * i; + double co2 = min + (max - min) / den * i; + // System.out.println(methane); + // System.out.println(co2); + testSystem.addComponent("methane", methane); + testSystem.addComponent("CO2", co2); + testSystem.addComponent("water", 50.0); + // testSystem.addComponent("Piperazine", 1.78); + testSystem.addComponent("MDEA", 7.5585298); - // Initialization of etc - testSystem.chemicalReactionInit(); - testSystem.useVolumeCorrection(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(4); - ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); - testSystem.init(0); - // System.out.println("wt% Piperazine " + - // testSystem.getPhase(1).getComponent("Piperazine").getx()*testSystem.getPhase(1).getComponent("Piperazine").getMolarMass()/testSystem.getPhase(1).getMolarMass()); + // Initialization of etc + testSystem.chemicalReactionInit(); + testSystem.useVolumeCorrection(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(4); + ThermodynamicOperations ops = new ThermodynamicOperations(testSystem); + testSystem.init(0); + // System.out.println("wt% Piperazine " + + // testSystem.getPhase(1).getComponent("Piperazine").getx()*testSystem.getPhase(1).getComponent("Piperazine").getMolarMass()/testSystem.getPhase(1).getMolarMass()); - // Flash calculation - try { - // ops.bubblePointPressureFlash(false); - ops.TPflash(); - } catch (Exception e) { - } - - // Write to screen - // testSystem.display(); - // System.out.println("CO2 loading " + - // (testSystem.getPhase(1).getComponent("CO2").getx()+testSystem.getPhase(1).getComponent("HCO3-").getx()+testSystem.getPhase(1).getComponent("CO3--").getx())/(testSystem.getPhase(1).getComponent("MDEA+").getx()+testSystem.getPhase(1).getComponent("MDEA").getx())); - // System.out.println("Partial pressure CO2 " + - // testSystem.getPressure()*testSystem.getPhase(0).getComponent("CO2").getx()); - // System.out.println("wt% MDEA " + - // 100*(testSystem.getPhase(1).getComponent("MDEA+").getx()+testSystem.getPhase(1).getComponent("MDEA").getx())*testSystem.getPhase(1).getComponent("MDEA").getMolarMass()/((testSystem.getPhase(1).getComponent("water").getx()+testSystem.getPhase(1).getComponent("CO3--").getx()+testSystem.getPhase(1).getComponent("HCO3-").getx())*testSystem.getPhase(1).getComponent("water").getMolarMass()+(testSystem.getPhase(1).getComponent("MDEA+").getx()+testSystem.getPhase(1).getComponent("MDEA").getx())*testSystem.getPhase(1).getComponent("MDEA").getMolarMass())); - - // Writing to file - out.write("" + 100 - * (testSystem.getPhase(1).getComponent("MDEA+").getx() - + testSystem.getPhase(1).getComponent("MDEA").getx()) - * testSystem.getPhase(1).getComponent("MDEA").getMolarMass() - / ((testSystem.getPhase(1).getComponent("water").getx() - + testSystem.getPhase(1).getComponent("CO3--").getx() - + testSystem.getPhase(1).getComponent("HCO3-").getx()) - * testSystem.getPhase(1).getComponent("water").getMolarMass() - + (testSystem.getPhase(1).getComponent("MDEA+").getx() - + testSystem.getPhase(1).getComponent("MDEA").getx()) - * testSystem.getPhase(1).getComponent("MDEA") - .getMolarMass())); - out.write("\t" + testSystem.getPhase(1).getComponent("water").getx() + "\t" - + testSystem.getPhase(1).getComponent("MDEA").getx() + "\t" - + testSystem.getPhase(1).getComponent("CO2").getx() + "\t" - + testSystem.getPhase(1).getComponent("methane").getx() + "\t" - + testSystem.getPhase(1).getComponent("MDEA+").getx() + "\t" - + testSystem.getPhase(1).getComponent("HCO3-").getx() + "\t" - + testSystem.getPhase(1).getComponent("CO3--").getx() + "\t" - + testSystem.getPhase(1).getComponent("OH-").getx() + "\t" - + testSystem.getPhase(1).getComponent("H3O+").getx() + "\t" - + testSystem.getPhase(0).getComponent("water").getx() + "\t" - + testSystem.getPhase(0).getComponent("MDEA").getx() + "\t" - + testSystem.getPhase(0).getComponent("CO2").getx() + "\t" - + testSystem.getPhase(0).getComponent("methane").getx()); - out.write("\n"); - } // end for-loop - out.flush(); - } catch (Exception e) { - logger.error(e.toString()); + // Flash calculation + try { + // ops.bubblePointPressureFlash(false); + ops.TPflash(); + } catch (Exception ex) { } - // for(int i=0;i<23;i++){ - // try{ - // ops.bubblePointPressureFlash(false); - // // testSystem.display(); - // //ops.TPflash(); - // } catch(Exception e){} + // Write to screen + // testSystem.display(); + // System.out.println("CO2 loading " + + // (testSystem.getPhase(1).getComponent("CO2").getx()+testSystem.getPhase(1).getComponent("HCO3-").getx()+testSystem.getPhase(1).getComponent("CO3--").getx())/(testSystem.getPhase(1).getComponent("MDEA+").getx()+testSystem.getPhase(1).getComponent("MDEA").getx())); + // System.out.println("Partial pressure CO2 " + + // testSystem.getPressure()*testSystem.getPhase(0).getComponent("CO2").getx()); + // System.out.println("wt% MDEA " + + // 100*(testSystem.getPhase(1).getComponent("MDEA+").getx()+testSystem.getPhase(1).getComponent("MDEA").getx())*testSystem.getPhase(1).getComponent("MDEA").getMolarMass()/((testSystem.getPhase(1).getComponent("water").getx()+testSystem.getPhase(1).getComponent("CO3--").getx()+testSystem.getPhase(1).getComponent("HCO3-").getx())*testSystem.getPhase(1).getComponent("water").getMolarMass()+(testSystem.getPhase(1).getComponent("MDEA+").getx()+testSystem.getPhase(1).getComponent("MDEA").getx())*testSystem.getPhase(1).getComponent("MDEA").getMolarMass())); - // System.out.println("loading " + (0.0005+0.05*i)+ " PCO2 " + - // testSystem.getPhase(0).getComponent("CO2").getx()*testSystem.getPressure()); - // testSystem.addComponent("CO2", 0.05*(6.45+1.78)); - // } + // Writing to file + out.write("" + 100 + * (testSystem.getPhase(1).getComponent("MDEA+").getx() + + testSystem.getPhase(1).getComponent("MDEA").getx()) + * testSystem.getPhase(1).getComponent("MDEA").getMolarMass() + / ((testSystem.getPhase(1).getComponent("water").getx() + + testSystem.getPhase(1).getComponent("CO3--").getx() + + testSystem.getPhase(1).getComponent("HCO3-").getx()) + * testSystem.getPhase(1).getComponent("water").getMolarMass() + + (testSystem.getPhase(1).getComponent("MDEA+").getx() + + testSystem.getPhase(1).getComponent("MDEA").getx()) + * testSystem.getPhase(1).getComponent("MDEA").getMolarMass())); + out.write("\t" + testSystem.getPhase(1).getComponent("water").getx() + "\t" + + testSystem.getPhase(1).getComponent("MDEA").getx() + "\t" + + testSystem.getPhase(1).getComponent("CO2").getx() + "\t" + + testSystem.getPhase(1).getComponent("methane").getx() + "\t" + + testSystem.getPhase(1).getComponent("MDEA+").getx() + "\t" + + testSystem.getPhase(1).getComponent("HCO3-").getx() + "\t" + + testSystem.getPhase(1).getComponent("CO3--").getx() + "\t" + + testSystem.getPhase(1).getComponent("OH-").getx() + "\t" + + testSystem.getPhase(1).getComponent("H3O+").getx() + "\t" + + testSystem.getPhase(0).getComponent("water").getx() + "\t" + + testSystem.getPhase(0).getComponent("MDEA").getx() + "\t" + + testSystem.getPhase(0).getComponent("CO2").getx() + "\t" + + testSystem.getPhase(0).getComponent("methane").getx()); + out.write("\n"); + } // end for-loop + out.flush(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + + // for(int i=0;i<23;i++){ + // try{ + // ops.bubblePointPressureFlash(false); + // // testSystem.display(); + // //ops.TPflash(); + // } catch(Exception ex){} + + // System.out.println("loading " + (0.0005+0.05*i)+ " PCO2 " + + // testSystem.getPhase(0).getComponent("CO2").getx()*testSystem.getPressure()); + // testSystem.addComponent("CO2", 0.05*(6.45+1.78)); + // } + } } diff --git a/src/test/java/neqsim/thermo/util/example/ReadFluidData.java b/src/test/java/neqsim/thermo/util/example/ReadFluidData.java index 3d17ec9235..546eea38e9 100644 --- a/src/test/java/neqsim/thermo/util/example/ReadFluidData.java +++ b/src/test/java/neqsim/thermo/util/example/ReadFluidData.java @@ -16,42 +16,42 @@ * @since 2.2.3 */ public class ReadFluidData { - static Logger logger = LogManager.getLogger(ReadFluidData.class); + static Logger logger = LogManager.getLogger(ReadFluidData.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 25.0, 1.8);// - // testSystem.addComponent("nitrogen", 12.681146444); - testSystem.addComponent("methane", 90.681146444); - testSystem.addComponent("CO2", 12.185242497); - testSystem.addComponent("n-hexane", 100.681146444); - // testSystem.addComponent("water", 78.0590685); - testSystem.createDatabase(true); - // testSystem.init(0); - // testSystem.init(1); - testSystem.setMixingRule(2); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 25.0, 1.8); + // testSystem.addComponent("nitrogen", 12.681146444); + testSystem.addComponent("methane", 90.681146444); + testSystem.addComponent("CO2", 12.185242497); + testSystem.addComponent("n-hexane", 100.681146444); + // testSystem.addComponent("water", 78.0590685); + testSystem.createDatabase(true); + // testSystem.init(0); + // testSystem.init(1); + testSystem.setMixingRule(2); - // testSystem.saveFluid(55); - // testSystem.readFluid("AsgardB"); - // testSystem = testSystem.readObject(55); - // testSystem.setMultiPhaseCheck(true); - // testSystem.getCharacterization().characterisePlusFraction(); + // testSystem.saveFluid(55); + // testSystem.readFluid("AsgardB"); + // testSystem = testSystem.readObject(55); + // testSystem.setMultiPhaseCheck(true); + // testSystem.getCharacterization().characterisePlusFraction(); - // testSystem.createDatabase(true); - // testSystem.setMixingRule(2); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.createDatabase(true); + // testSystem.setMixingRule(2); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.calcPTphaseEnvelope(true); - testOps.displayResult(); - } catch (Exception e) { - logger.error(e.toString()); - } + try { + testOps.calcPTphaseEnvelope(true); + testOps.displayResult(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermo/util/example/ReadFluidData2.java b/src/test/java/neqsim/thermo/util/example/ReadFluidData2.java index 6473c486e1..64cfb4d9dc 100644 --- a/src/test/java/neqsim/thermo/util/example/ReadFluidData2.java +++ b/src/test/java/neqsim/thermo/util/example/ReadFluidData2.java @@ -18,47 +18,49 @@ * @since 2.2.3 */ public class ReadFluidData2 { - static Logger logger = LogManager.getLogger(ReadFluidData.class); + static Logger logger = LogManager.getLogger(ReadFluidData.class); - /** - *

main.

+ /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 30.0, 10.0); + // testSystem.readObjectFromFile("C:/temp/neqsimfluids/-65919.68493879325.neqsim", + testSystem = testSystem.readObjectFromFile("c:/temp/neqsimfluidwater.neqsim", ""); + testSystem.init(0); + testSystem.display(); + Stream stream_1 = new Stream("Stream1", testSystem); + ThreePhaseSeparator separator = new ThreePhaseSeparator("Separator", stream_1); + stream_1.run(); + separator.run(); + separator.displayResult(); + separator.run(); + StreamInterface gas = separator.getGasOutStream(); + StreamInterface oil = separator.getOilOutStream(); + StreamInterface water = separator.getWaterOutStream(); + // gas.run(); + gas.displayResult(); + StreamInterface str1 = separator.getGasOutStream(); + + // testSystem.getPhase(1).getN; + /* + * testSystem.init(0); testSystem.setPressure(100.0); testSystem.setTemperature(273.15 + 15.0); + * // // ""); // testSystem.addComponent("water", 1.0); testSystem.setMixingRule(2); // + * testSystem.setMultiPhaseCheck(true); //testSystem.setMultiPhaseCheck(false); + * ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); * - * @param args an array of {@link java.lang.String} objects + * try { testOps.TPflash(); testSystem.display(); testOps.PSflash(-123.108602625942); + * testSystem.display(); testSystem.setPressure(100.0); testOps.PSflash(-119.003271056256); + * testSystem.display(); System.out.println("entropy " + testSystem.getEntropy()); + * //testSystem.setPressure(100.0); //testOps.PSflash(-1.503016881785468e+02); + * //testSystem.display(); //testSystem.setPressure(100.0); + * testOps.PSflash(-1.266377583884310e+02); } catch (Exception ex) { + * logger.error(ex.getMessage(), ex); } */ - @SuppressWarnings("unused") - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 30.0, 10.0); - // testSystem.readObjectFromFile("C:/temp/neqsimfluids/-65919.68493879325.neqsim", - testSystem = testSystem.readObjectFromFile("c:/temp/neqsimfluidwater.neqsim", ""); - testSystem.init(0); - testSystem.display(); - Stream stream_1 = new Stream("Stream1", testSystem); - ThreePhaseSeparator separator = new ThreePhaseSeparator("Separator", stream_1); - stream_1.run(); - separator.run(); - separator.displayResult(); - separator.run(); - StreamInterface gas = separator.getGasOutStream(); - StreamInterface oil = separator.getOilOutStream(); - StreamInterface water = separator.getWaterOutStream(); - // gas.run(); - gas.displayResult(); - StreamInterface str1 = separator.getGasOutStream(); - - // testSystem.getPhase(1).getN; - /* - * testSystem.init(0); testSystem.setPressure(100.0); testSystem.setTemperature(273.15 + - * 15.0); // // ""); // testSystem.addComponent("water", 1.0); testSystem.setMixingRule(2); - * // testSystem.setMultiPhaseCheck(true); //testSystem.setMultiPhaseCheck(false); - * ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - * - * try { testOps.TPflash(); testSystem.display(); testOps.PSflash(-123.108602625942); - * testSystem.display(); testSystem.setPressure(100.0); testOps.PSflash(-119.003271056256); - * testSystem.display(); System.out.println("entropy " + testSystem.getEntropy()); - * //testSystem.setPressure(100.0); //testOps.PSflash(-1.503016881785468e+02); - * //testSystem.display(); //testSystem.setPressure(100.0); - * testOps.PSflash(-1.266377583884310e+02); } catch (Exception e) { - * logger.error(e.toString()); } - */ - } + } } diff --git a/src/test/java/neqsim/thermo/util/example/ScalePotentialCheck.java b/src/test/java/neqsim/thermo/util/example/ScalePotentialCheck.java index 1d795e8751..3e21b17d03 100644 --- a/src/test/java/neqsim/thermo/util/example/ScalePotentialCheck.java +++ b/src/test/java/neqsim/thermo/util/example/ScalePotentialCheck.java @@ -3,6 +3,7 @@ * * Created on 19. desember 2005, 14:39 */ + package neqsim.thermo.util.example; import org.apache.logging.log4j.LogManager; @@ -12,72 +13,76 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

ScalePotentialCheck class.

+ *

+ * ScalePotentialCheck class. + *

* * @author ESOL * @version $Id: $Id * @since 2.2.3 */ public class ScalePotentialCheck { - static Logger logger = LogManager.getLogger(ScalePotentialCheck.class); + static Logger logger = LogManager.getLogger(ScalePotentialCheck.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // SystemInterface testSystem = new Ele(273.15+10.0,10.0); - SystemInterface testSystem = new SystemElectrolyteCPAstatoil(273.15 + 25.0, 10.0); - // SystemInterface testSystem = new SystemFurstElectrolyteEosMod2004(273.15 + - // 15.0, 1.0); - // SystemInterface testSystem = new SystemSrkEos(273.15 + 50.0, 10.0); - // testSystem.addComponent("Cl-",0.001); - // testSystem.addComponent("CO3--",0.00000095); - // testSystem.addComponent("HCO3-",0.0001); - testSystem.addComponent("methane", 90); - // testSystem.addComponent("ethane", 10.5); - testSystem.addComponent("CO2", 0.1); - testSystem.addComponent("H2S", 0.01); - // testSystem.addComponent("n-heptane", 15.2); - // testSystem.addComponent("nC10", 0.52); - // testSystem.addComponent("MEG", 0.1); - // testSystem.addComponent("MDEA", 1); - testSystem.addComponent("water", 1, "kg/sec"); - // testSystem.addComponent("Mg++", 0.07);// * 24.31); - testSystem.addComponent("Na+", 4e-5); - testSystem.addComponent("Cl-", 4e-5); - // testSystem.addComponent("Hg++", 4e-7); - testSystem.addComponent("OH-", 220e-5); - testSystem.addComponent("Fe++", 110.1e-5); - // testSystem.addComponent("OH-", 0.07*2);// * 17.001); - // testSystem.addComponent("Cl-", (1000 - 100) * 1e-3); - // testSystem.addComponent("Ca++",0.002); - // testSystem.addComponent("CO3--",14.0E-6); - // testSystem = testSystem.autoSelectModel(); - testSystem.chemicalReactionInit(); - // testSystem.isChemicalSystem(false); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.setMultiPhaseCheck(true); - // testSystem.isChemicalSystem(false); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - testSystem.display(); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // SystemInterface testSystem = new Ele(273.15+10.0,10.0); + SystemInterface testSystem = new SystemElectrolyteCPAstatoil(273.15 + 25.0, 10.0); + // SystemInterface testSystem = new SystemFurstElectrolyteEosMod2004(273.15 + + // 15.0, 1.0); + // SystemInterface testSystem = new SystemSrkEos(273.15 + 50.0, 10.0); + // testSystem.addComponent("Cl-",0.001); + // testSystem.addComponent("CO3--",0.00000095); + // testSystem.addComponent("HCO3-",0.0001); + testSystem.addComponent("methane", 90); + // testSystem.addComponent("ethane", 10.5); + testSystem.addComponent("CO2", 0.1); + testSystem.addComponent("H2S", 0.01); + // testSystem.addComponent("n-heptane", 15.2); + // testSystem.addComponent("nC10", 0.52); + // testSystem.addComponent("MEG", 0.1); + // testSystem.addComponent("MDEA", 1); + testSystem.addComponent("water", 1, "kg/sec"); + // testSystem.addComponent("Mg++", 0.07); // * 24.31); + testSystem.addComponent("Na+", 4e-5); + testSystem.addComponent("Cl-", 4e-5); + // testSystem.addComponent("Hg++", 4e-7); + testSystem.addComponent("OH-", 220e-5); + testSystem.addComponent("Fe++", 110.1e-5); + // testSystem.addComponent("OH-", 0.07*2); // * 17.001); + // testSystem.addComponent("Cl-", (1000 - 100) * 1e-3); + // testSystem.addComponent("Ca++",0.002); + // testSystem.addComponent("CO3--",14.0E-6); + // testSystem = testSystem.autoSelectModel(); + testSystem.chemicalReactionInit(); + // testSystem.isChemicalSystem(false); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.setMultiPhaseCheck(true); + // testSystem.isChemicalSystem(false); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.TPflash(); + testSystem.display(); - testOps.calcIonComposition(testSystem.getPhaseNumberOfPhase("aqueous")); - testOps.display(); + testOps.calcIonComposition(testSystem.getPhaseNumberOfPhase("aqueous")); + testOps.display(); - testOps.checkScalePotential(testSystem.getPhaseNumberOfPhase("aqueous")); - testOps.display(); - // testOps.addIonToScaleSaturation(1,"FeCO3","Fe++"); - // testOps.display(); - logger.info(testOps.getResultTable()); - } catch (Exception e) { - logger.error("error", e); - } - logger.info("pH " + testSystem.getPhase("aqueous").getpH()); - // testSystem.display(); + testOps.checkScalePotential(testSystem.getPhaseNumberOfPhase("aqueous")); + testOps.display(); + // testOps.addIonToScaleSaturation(1,"FeCO3","Fe++"); + // testOps.display(); + logger.info(testOps.getResultTable()); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + logger.info("pH " + testSystem.getPhase("aqueous").getpH()); + // testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/SolidFlash.java b/src/test/java/neqsim/thermo/util/example/SolidFlash.java index 5b1d5a3e6d..dbdfdf1ae3 100644 --- a/src/test/java/neqsim/thermo/util/example/SolidFlash.java +++ b/src/test/java/neqsim/thermo/util/example/SolidFlash.java @@ -7,69 +7,73 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

SolidFlash class.

+ *

+ * SolidFlash class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class SolidFlash { - static Logger logger = LogManager.getLogger(SolidFlash.class); + static Logger logger = LogManager.getLogger(SolidFlash.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(269.671, 1.00); - // SystemInterface testSystem = new SystemSrkTwuCoonEos(273.15 - 165, 1.0); - // SystemInterface testSystem = new SystemPrEos(91.617,1.1168013258); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // dataHandeling output = new dataHandeling(); - // testSystem.addComponent("water", 1.0-0.1525); - testSystem.addComponent("methane", 121.8); - // testSystem.addComponent("ethane", 0.05); - // testSystem.addComponent("propane", 0.03); - // testSystem.addComponent("n-hexane", 10.01); - // testSystem.addComponent("nitrogen", 0.05); - testSystem.addComponent("MEG", 0.0916); - testSystem.addComponent("water", 10.916); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkCPAstatoil(269.671, 1.00); + // SystemInterface testSystem = new SystemSrkTwuCoonEos(273.15 - 165, 1.0); + // SystemInterface testSystem = new SystemPrEos(91.617,1.1168013258); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // dataHandeling output = new dataHandeling(); + // testSystem.addComponent("water", 1.0-0.1525); + testSystem.addComponent("methane", 121.8); + // testSystem.addComponent("ethane", 0.05); + // testSystem.addComponent("propane", 0.03); + // testSystem.addComponent("n-hexane", 10.01); + // testSystem.addComponent("nitrogen", 0.05); + testSystem.addComponent("MEG", 0.0916); + testSystem.addComponent("water", 10.916); - // testSystem.addComponent("propane", 2.6844); - // testSystem.addComponent("i-butane", 0.415); - // testSystem.addComponent("n-butane", 0.8188); - // testSystem.addComponent("iC5", 0.1814); - // testSystem.addComponent("n-pentane", 0.1702); - // testSystem.addComponent("n-hexane", 0.1003); - //// testSystem.addComponent("n-heptane", 0.0449); - // testSystem.addComponent("benzene", 180.0e-4); - // testSystem.addComponent("H2S", 10.0); - // testSystem.addComponent("nitrogen", 10e-6); - // testSystem.addComponent("ethane" , 0.1); + // testSystem.addComponent("propane", 2.6844); + // testSystem.addComponent("i-butane", 0.415); + // testSystem.addComponent("n-butane", 0.8188); + // testSystem.addComponent("iC5", 0.1814); + // testSystem.addComponent("n-pentane", 0.1702); + // testSystem.addComponent("n-hexane", 0.1003); + // testSystem.addComponent("n-heptane", 0.0449); + // testSystem.addComponent("benzene", 180.0e-4); + // testSystem.addComponent("H2S", 10.0); + // testSystem.addComponent("nitrogen", 10e-6); + // testSystem.addComponent("ethane" , 0.1); - testSystem.setMultiPhaseCheck(true); + testSystem.setMultiPhaseCheck(true); - // testSystem.setSolidPhaseCheck("water"); - testSystem.createDatabase(true); - testSystem.setMixingRule(9); - testSystem.useVolumeCorrection(true); + // testSystem.setSolidPhaseCheck("water"); + testSystem.createDatabase(true); + testSystem.setMixingRule(9); + testSystem.useVolumeCorrection(true); - testSystem.setSolidPhaseCheck("water"); - // testSystem.setSolidPhaseCheck("CO2"); - testSystem.init(0); - try { - testOps.freezingPointTemperatureFlash(); - // testOps.TPSolidflash(); - // testSystem.display(); - // testOps.waterDewPointTemperatureFlash(); - // testOps.bubblePointTemperatureFlash(); - testSystem.display(); - // testOps.dewPointTemperatureFlash(); - // testSystem.display(); - // testOps.TPflash(); - } catch (Exception e) { - logger.error("error", e); - } + testSystem.setSolidPhaseCheck("water"); + // testSystem.setSolidPhaseCheck("CO2"); + testSystem.init(0); + try { + testOps.freezingPointTemperatureFlash(); + // testOps.TPSolidflash(); + // testSystem.display(); + // testOps.waterDewPointTemperatureFlash(); + // testOps.bubblePointTemperatureFlash(); + testSystem.display(); + // testOps.dewPointTemperatureFlash(); + // testSystem.display(); + // testOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermo/util/example/SrkEoSTest.java b/src/test/java/neqsim/thermo/util/example/SrkEoSTest.java index d7ffaeb0e4..7f71890ba8 100644 --- a/src/test/java/neqsim/thermo/util/example/SrkEoSTest.java +++ b/src/test/java/neqsim/thermo/util/example/SrkEoSTest.java @@ -2,11 +2,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; - import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; - import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -67,11 +65,11 @@ public void testSaturateWIthWater() { /** *

- * initPhysicalProperties. + * testinitPhysicalProperties. *

*/ @Test - public void initPhysicalProperties() { + public void testinitPhysicalProperties() { thermoSystem.initPhysicalProperties(); assertEquals(thermoSystem.getPhase(0).getPhysicalProperties().getDensity(), thermoSystem.getPhase(0).getPhysicalProperties().getDensity()); diff --git a/src/test/java/neqsim/thermo/util/example/SrkOilCharacterizationTest.java b/src/test/java/neqsim/thermo/util/example/SrkOilCharacterizationTest.java index de27700fa4..ea421aa416 100644 --- a/src/test/java/neqsim/thermo/util/example/SrkOilCharacterizationTest.java +++ b/src/test/java/neqsim/thermo/util/example/SrkOilCharacterizationTest.java @@ -1,10 +1,8 @@ package neqsim.thermo.util.example; import static org.junit.jupiter.api.Assertions.assertEquals; - import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; - import neqsim.thermo.system.SystemInterface; // import junit.framework.TestCase; import neqsim.thermo.system.SystemSrkEos; @@ -52,10 +50,12 @@ public void testTPflash() { } /** - *

initPhysicalProperties.

+ *

+ * testinitPhysicalProperties. + *

*/ @Test - public void initPhysicalProperties() { + public void testinitPhysicalProperties() { thermoSystem.initPhysicalProperties(); assertEquals(thermoSystem.getPhase(0).getPhysicalProperties().getDensity(), thermoSystem.getPhase(0).getPhysicalProperties().getDensity()); diff --git a/src/test/java/neqsim/thermo/util/example/SulfureDeposition.java b/src/test/java/neqsim/thermo/util/example/SulfureDeposition.java index 5f353a9ed5..37c889e1f5 100644 --- a/src/test/java/neqsim/thermo/util/example/SulfureDeposition.java +++ b/src/test/java/neqsim/thermo/util/example/SulfureDeposition.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -16,150 +17,145 @@ * @version $Id: $Id */ public class SulfureDeposition { - static Logger logger = LogManager.getLogger(SulfureDeposition.class); + static Logger logger = LogManager.getLogger(SulfureDeposition.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemSrkTwuCoonEos(220.15, 6.0); - SystemInterface testSystem = new SystemSrkEos(273.15 + 65.0, 12.0); - // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 62.5, 12); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("methane", 1); - // testSystem.addComponent("CO2",100-79.9); - // testSystem.addComponent("water", 0.91); - // testSystem.addComponent("n-heptane", 0.91); - // testSystem.addComponent("oxygen", 1.1); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemSrkTwuCoonEos(220.15, 6.0); + SystemInterface testSystem = new SystemSrkEos(273.15 + 65.0, 12.0); + // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 62.5, 12); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("methane", 1); + // testSystem.addComponent("CO2",100-79.9); + // testSystem.addComponent("water", 0.91); + // testSystem.addComponent("n-heptane", 0.91); + // testSystem.addComponent("oxygen", 1.1); - // Vigdis 3 stage - /* - * testSystem.addComponent("nitrogen", 0.000001); testSystem.addComponent("CO2", 0.000053); - * testSystem.addComponent("methane", 0.001125); testSystem.addComponent("ethane", - * 0.007257); testSystem.addComponent("propane", 0.028675); - * testSystem.addComponent("i-butane", 0.009183); testSystem.addComponent("n-butane", - * 0.034027); testSystem.addComponent("i-pentane", 0.017530); - * testSystem.addComponent("n-pentane", 0.028188); testSystem.addComponent("n-hexane", - * 0.045485); testSystem.addTBPfraction("Vigdis_C7-C8", 0.143218, 99.07 / 1000.0, 0.75111); - * testSystem.addTBPfraction("Vigdis_C9-C12", 0.208009, 138.64 / 1000.0, 0.80122); - * testSystem.addTBPfraction("Vigdis_C13-C18", 0.217329, 213.76 / 1000.0, 0.85103); - * testSystem.addTBPfraction("Vigdis_C19-C29", 0.156069, 333.84 / 1000.0, 0.89639); - * testSystem.addTBPfraction("Vigdis_C30-C80", 0.076902, 525.0 / 1000.0, 0.94072); - */ - // Vigdis 2 stage - /* - * testSystem.addComponent("nitrogen", 0.000301); testSystem.addComponent("CO2", 0.000171); - * testSystem.addComponent("methane", 0.023407); testSystem.addComponent("ethane", - * 0.005422); testSystem.addComponent("propane", 0.005413); - * testSystem.addComponent("i-butane", 0.00095); testSystem.addComponent("n-butane", - * 0.003003); testSystem.addComponent("i-pentane", 0.001173); - * testSystem.addComponent("n-pentane", 0.001785); testSystem.addComponent("n-hexane", - * 0.002514); testSystem.addTBPfraction("Vigdis_C7-C8", 0.0075, 99.07 / 1000.0, 0.75111); - * testSystem.addTBPfraction("Vigdis_C9-C12", 0.010572, 138.64 / 1000.0, 0.80122); - * testSystem.addTBPfraction("Vigdis_C13-C18", 0.011015, 213.76 / 1000.0, 0.85103); - * testSystem.addTBPfraction("Vigdis_C19-C29", 0.00791, 333.84 / 1000.0, 0.89639); - * testSystem.addTBPfraction("Vigdis_C30-C80", 0.003898, 525.0 / 1000.0, 0.94072); // - * testSystem.addComponent("water", 0.2514); - */ - // snorre - /* - * testSystem.addComponent("nitrogen", 0.000501); testSystem.addComponent("CO2", 0.000172); - * testSystem.addComponent("methane", 0.018972); testSystem.addComponent("ethane", - * 0.007619); testSystem.addComponent("propane", 0.010628); - * testSystem.addComponent("i-butane", 0.001855); testSystem.addComponent("n-butane", - * 0.006983); testSystem.addComponent("i-pentane", 0.002583); - * testSystem.addComponent("n-pentane", 0.003948); testSystem.addComponent("n-hexane", - * 0.000302); testSystem.addTBPfraction("Snorre_C6", 0.004846, 86 / 1000.0, 0.664); - * testSystem.addTBPfraction("Snorre_C7", 0.006924, 96 / 1000.0, 0.738); - * testSystem.addTBPfraction("Snorre_C8", 0.006924, 107.0 / 1000.0, 0.765); - * testSystem.addTBPfraction("Snorre_C9", 0.00426, 121.0 / 1000.0, 0.781); - * testSystem.addTBPfraction("Snorre_C10-C13", 0.010273, 152.0 / 1000.0, 0.809); - * testSystem.addTBPfraction("Snorre_C14-C16", 0.005681, 205.0 / 1000.0, 0.835); - * testSystem.addTBPfraction("Snorre_C17-C20", 0.005613, 255.0 / 1000.0, 0.854); - * testSystem.addTBPfraction("Snorre_C21-C24", 0.003976, 309.0 / 1000.0, 0.871); - * testSystem.addTBPfraction("Snorre_C25-C28", 0.002817, 365.0 / 1000.0, 0.885); - * testSystem.addTBPfraction("Snorre_C29-C34", 0.002762, 433.0 / 1000.0, 0.899); - * testSystem.addTBPfraction("Snorre_C35-C41", 0.001847, 523.0 / 1000.0, 0.915); - * testSystem.addTBPfraction("Snorre_C42-C52", 0.001367, 643.0 / 1000.0, 0.931); - * testSystem.addTBPfraction("Snorre_C53-C80", 0.000787, 867.0 / 1000.0, 0.955); - */ - // testSystem.addComponent("propane",1.05); - // testSystem.addComponent("n-butane",0.06); - //// testSystem.addComponent("i-butane",0.6); - // testSystem.addComponent("n-pentane",0.01); - // testSystem.addComponent("i-pentane",0.07); - // testSystem.addComponent("benzene",79.9); - // testSystem.addComponent("water",150.0e-6); - // testSystem.addComponent("n-hexane",0.23); - // testSystem.addComponent("n-heptane",0.08); - // testSystem.addComponent("n-octane",0.03); - // testSystem.addComponent("S8", 30e-9 * 100); - // testSystem.addComponent("water", 0.0301); - // testSystem.addPlusFraction("C6+", 0.58, 172.0/1000, 0.95); - // if(testSystem.characterizePlusFraction()){ - // testSystem.getCharacterization().setPseudocomponents(true); - // testSystem.addPlusFraction(7,15); - // } - // testSystem.addComponent("water", 0.00301); - // testSystem.addComponent("S8", 0.00000048028452962001990); - // testSystem.createDatabase(true); - testSystem.addComponent("nitrogen", 5.84704017689321e-003); - testSystem.addComponent("CO2", 0.021); - testSystem.addComponent("methane", 0.63); - testSystem.addComponent("ethane", 0.134769062252199); - testSystem.addComponent("propane", 9.11979242318279e-002); - testSystem.addComponent("i-butane", 0.020654078469792); - testSystem.addComponent("n-butane", 3.74972131983075e-002); - testSystem.addComponent("i-pentane", 1.13683864588619e-002); - testSystem.addComponent("n-pentane", 1.03129901150887e-002); - testSystem.addComponent("n-hexane", 6.103129901150887e-002); - testSystem.addComponent("S8", 10.0077E-06); - testSystem.setMixingRule(2); + // Vigdis 3 stage + /* + * testSystem.addComponent("nitrogen", 0.000001); testSystem.addComponent("CO2", 0.000053); + * testSystem.addComponent("methane", 0.001125); testSystem.addComponent("ethane", 0.007257); + * testSystem.addComponent("propane", 0.028675); testSystem.addComponent("i-butane", 0.009183); + * testSystem.addComponent("n-butane", 0.034027); testSystem.addComponent("i-pentane", + * 0.017530); testSystem.addComponent("n-pentane", 0.028188); + * testSystem.addComponent("n-hexane", 0.045485); testSystem.addTBPfraction("Vigdis_C7-C8", + * 0.143218, 99.07 / 1000.0, 0.75111); testSystem.addTBPfraction("Vigdis_C9-C12", 0.208009, + * 138.64 / 1000.0, 0.80122); testSystem.addTBPfraction("Vigdis_C13-C18", 0.217329, 213.76 / + * 1000.0, 0.85103); testSystem.addTBPfraction("Vigdis_C19-C29", 0.156069, 333.84 / 1000.0, + * 0.89639); testSystem.addTBPfraction("Vigdis_C30-C80", 0.076902, 525.0 / 1000.0, 0.94072); + */ + // Vigdis 2 stage + /* + * testSystem.addComponent("nitrogen", 0.000301); testSystem.addComponent("CO2", 0.000171); + * testSystem.addComponent("methane", 0.023407); testSystem.addComponent("ethane", 0.005422); + * testSystem.addComponent("propane", 0.005413); testSystem.addComponent("i-butane", 0.00095); + * testSystem.addComponent("n-butane", 0.003003); testSystem.addComponent("i-pentane", + * 0.001173); testSystem.addComponent("n-pentane", 0.001785); + * testSystem.addComponent("n-hexane", 0.002514); testSystem.addTBPfraction("Vigdis_C7-C8", + * 0.0075, 99.07 / 1000.0, 0.75111); testSystem.addTBPfraction("Vigdis_C9-C12", 0.010572, 138.64 + * / 1000.0, 0.80122); testSystem.addTBPfraction("Vigdis_C13-C18", 0.011015, 213.76 / 1000.0, + * 0.85103); testSystem.addTBPfraction("Vigdis_C19-C29", 0.00791, 333.84 / 1000.0, 0.89639); + * testSystem.addTBPfraction("Vigdis_C30-C80", 0.003898, 525.0 / 1000.0, 0.94072); // + * testSystem.addComponent("water", 0.2514); + */ + // snorre + /* + * testSystem.addComponent("nitrogen", 0.000501); testSystem.addComponent("CO2", 0.000172); + * testSystem.addComponent("methane", 0.018972); testSystem.addComponent("ethane", 0.007619); + * testSystem.addComponent("propane", 0.010628); testSystem.addComponent("i-butane", 0.001855); + * testSystem.addComponent("n-butane", 0.006983); testSystem.addComponent("i-pentane", + * 0.002583); testSystem.addComponent("n-pentane", 0.003948); + * testSystem.addComponent("n-hexane", 0.000302); testSystem.addTBPfraction("Snorre_C6", + * 0.004846, 86 / 1000.0, 0.664); testSystem.addTBPfraction("Snorre_C7", 0.006924, 96 / 1000.0, + * 0.738); testSystem.addTBPfraction("Snorre_C8", 0.006924, 107.0 / 1000.0, 0.765); + * testSystem.addTBPfraction("Snorre_C9", 0.00426, 121.0 / 1000.0, 0.781); + * testSystem.addTBPfraction("Snorre_C10-C13", 0.010273, 152.0 / 1000.0, 0.809); + * testSystem.addTBPfraction("Snorre_C14-C16", 0.005681, 205.0 / 1000.0, 0.835); + * testSystem.addTBPfraction("Snorre_C17-C20", 0.005613, 255.0 / 1000.0, 0.854); + * testSystem.addTBPfraction("Snorre_C21-C24", 0.003976, 309.0 / 1000.0, 0.871); + * testSystem.addTBPfraction("Snorre_C25-C28", 0.002817, 365.0 / 1000.0, 0.885); + * testSystem.addTBPfraction("Snorre_C29-C34", 0.002762, 433.0 / 1000.0, 0.899); + * testSystem.addTBPfraction("Snorre_C35-C41", 0.001847, 523.0 / 1000.0, 0.915); + * testSystem.addTBPfraction("Snorre_C42-C52", 0.001367, 643.0 / 1000.0, 0.931); + * testSystem.addTBPfraction("Snorre_C53-C80", 0.000787, 867.0 / 1000.0, 0.955); + */ + // testSystem.addComponent("propane",1.05); + // testSystem.addComponent("n-butane",0.06); + // testSystem.addComponent("i-butane",0.6); + // testSystem.addComponent("n-pentane",0.01); + // testSystem.addComponent("i-pentane",0.07); + // testSystem.addComponent("benzene",79.9); + // testSystem.addComponent("water",150.0e-6); + // testSystem.addComponent("n-hexane",0.23); + // testSystem.addComponent("n-heptane",0.08); + // testSystem.addComponent("n-octane",0.03); + // testSystem.addComponent("S8", 30e-9 * 100); + // testSystem.addComponent("water", 0.0301); + // testSystem.addPlusFraction("C6+", 0.58, 172.0/1000, 0.95); + // if(testSystem.characterizePlusFraction()){ + // testSystem.getCharacterization().setPseudocomponents(true); + // testSystem.addPlusFraction(7,15); + // } + // testSystem.addComponent("water", 0.00301); + // testSystem.addComponent("S8", 0.00000048028452962001990); + // testSystem.createDatabase(true); + testSystem.addComponent("nitrogen", 5.84704017689321e-003); + testSystem.addComponent("CO2", 0.021); + testSystem.addComponent("methane", 0.63); + testSystem.addComponent("ethane", 0.134769062252199); + testSystem.addComponent("propane", 9.11979242318279e-002); + testSystem.addComponent("i-butane", 0.020654078469792); + testSystem.addComponent("n-butane", 3.74972131983075e-002); + testSystem.addComponent("i-pentane", 1.13683864588619e-002); + testSystem.addComponent("n-pentane", 1.03129901150887e-002); + testSystem.addComponent("n-hexane", 6.103129901150887e-002); + testSystem.addComponent("S8", 10.0077E-06); + testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - // testSystem.setSolidPhaseCheck("S8"); + testSystem.setMultiPhaseCheck(true); + // testSystem.setSolidPhaseCheck("S8"); - try { - // testOps.TPflash(); - testOps.TPSolidflash(); - // testOps.bubblePointPressureFlash(); - // testOps.calcPTphaseEnvelope(); - // testOps.displayResult(); - // testOps.bubblePointTemperatureFlash(); - // testOps.calcPTphaseEnvelope(); - // testOps.displayResult(); - // testOps.freezingPointTemperatureFlash(); - // ((thermo.phase.PhaseEosInterface) - // testSystem.getPhase(0)).displayInteractionCoefficients(""); + try { + // testOps.TPflash(); + testOps.TPSolidflash(); + // testOps.bubblePointPressureFlash(); + // testOps.calcPTphaseEnvelope(); + // testOps.displayResult(); + // testOps.bubblePointTemperatureFlash(); + // testOps.calcPTphaseEnvelope(); + // testOps.displayResult(); + // testOps.freezingPointTemperatureFlash(); + // ((thermo.phase.PhaseEosInterface) + // testSystem.getPhase(0)).displayInteractionCoefficients(""); - logger.info("temperature " + (testSystem.getTemperature() - 273.15)); - logger.info("mol S8/mol gas (ppb) " - + testSystem.getPhase(0).getComponent("S8").getx() * 1e9); - logger.info("mg S8/Sm^3 gas " + testSystem.getPhase(0).getComponent("S8").getx() - * testSystem.getPhase(0).getComponent("S8").getMolarMass() * 1e6 - * (101325 / (8.315 * 288.15))); + logger.info("temperature " + (testSystem.getTemperature() - 273.15)); + logger.info("mol S8/mol gas (ppb) " + testSystem.getPhase(0).getComponent("S8").getx() * 1e9); + logger.info("mg S8/Sm^3 gas " + testSystem.getPhase(0).getComponent("S8").getx() + * testSystem.getPhase(0).getComponent("S8").getMolarMass() * 1e6 + * (101325 / (ThermodynamicConstantsInterface.R * 288.15))); - logger.info("wt% S8 in gas " + testSystem.getPhase(0).getComponent("S8").getx() - * testSystem.getPhase(0).getComponent("S8").getMolarMass() - / testSystem.getPhase(0).getMolarMass() * 100); - logger.info("wt% S8 in oil " + testSystem.getPhase(1).getComponent("S8").getx() - * testSystem.getPhase(0).getComponent("S8").getMolarMass() - / testSystem.getPhase(1).getMolarMass() * 100); - // logger.info("ppb (wt) S8 in water " + - // testSystem.getPhase(2).getComponent("S8").getx() * - // testSystem.getPhase(0).getComponent("S8").getMolarMass() / - // testSystem.getPhase(2).getMolarMass() * 1e9); - logger.info("ppm (wt) S8 total " + testSystem.getPhase(0).getComponent("S8").getz() - * testSystem.getPhase(0).getComponent("S8").getMolarMass() - / testSystem.getMolarMass() * 1e6); - } catch (Exception e) { - logger.error("error", e); - logger.error(e.toString()); - } - testSystem.display(); + logger.info("wt% S8 in gas " + testSystem.getPhase(0).getComponent("S8").getx() + * testSystem.getPhase(0).getComponent("S8").getMolarMass() + / testSystem.getPhase(0).getMolarMass() * 100); + logger.info("wt% S8 in oil " + testSystem.getPhase(1).getComponent("S8").getx() + * testSystem.getPhase(0).getComponent("S8").getMolarMass() + / testSystem.getPhase(1).getMolarMass() * 100); + // logger.info("ppb (wt) S8 in water " + + // testSystem.getPhase(2).getComponent("S8").getx() * + // testSystem.getPhase(0).getComponent("S8").getMolarMass() / + // testSystem.getPhase(2).getMolarMass() * 1e9); + logger.info("ppm (wt) S8 total " + testSystem.getPhase(0).getComponent("S8").getz() + * testSystem.getPhase(0).getComponent("S8").getMolarMass() / testSystem.getMolarMass() + * 1e6); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TPMultiFlash.java b/src/test/java/neqsim/thermo/util/example/TPMultiFlash.java index 89d01fe833..f51bdfa325 100644 --- a/src/test/java/neqsim/thermo/util/example/TPMultiFlash.java +++ b/src/test/java/neqsim/thermo/util/example/TPMultiFlash.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -16,119 +17,119 @@ * @version $Id: $Id */ public class TPMultiFlash { - static Logger logger = LogManager.getLogger(TPMultiFlash.class); + static Logger logger = LogManager.getLogger(TPMultiFlash.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - // SystemInterface testSystem = new SystemPrEos1978(273.15,100.0); - // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15,100.0); - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 40, 80.4); - // SystemInterface testSystem = new SystemSrkMathiasCopeman(273.15+20., 1000.0); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(273.15+0.0, - // 1.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("CO2", 3.59); - testSystem.addComponent("nitrogen", 0.34); - - testSystem.addComponent("methane", 167.42); - /* - * testSystem.addComponent("ethane", 29.02); testSystem.addComponent("propane", 14.31); - * testSystem.addComponent("i-butane", 0.93); testSystem.addComponent("n-butane", 1.71); - * testSystem.addComponent("i-pentane", 0.74); testSystem.addComponent("n-pentane", 0.85); - * testSystem.addComponent("n-hexane", 1.38); testSystem.addTBPfraction("C7", 15.5, 59.00 / - * 1000.0, 0.73); testSystem.addTBPfraction("C8", 5.69, 112.20 / 1000.0, 0.77); - * testSystem.addTBPfraction("C9", 10.14, 87.5 / 1000.0, 0.755); - * testSystem.addTBPfraction("C10", 0.8, 114.3 / 1000.0, 0.77); - * testSystem.addPlusFraction("C11", 4.58, 236.2 / 1000.0, 0.8398); - * testSystem.addPlusFraction("C11", 4.58, 266.2 / 1000.0, 0.8398); - */ - // testSystem.addComponent("toluene", 0.009); - // testSystem.addTBPfraction("C7",0.626, 96.00/1000.0, 0.738); - // testSystem.addComponent("MDEA", 0.54); - testSystem.addComponent("water", 0.01); - // testSystem.addComponent("propane", 4.0062); - // testSystem.addComponent("i-butane", 0.6 4205); - // testSystem.addComponent("methane", 10.0); - // testSystem.addComponent("ethane", 9.24); - // testSystem.addComponent("propane", 2.57); - // testSystem.addComponent("CO2", 5.19); - // testSystem.addComponent("CO2", 30.4107); - // testSystem.addComponent("MEG", 30.0); - // testSystem.addComponent("MEG", 7.00); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + // SystemInterface testSystem = new SystemPrEos1978(273.15,100.0); + // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15,100.0); + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 40, 80.4); + // SystemInterface testSystem = new SystemSrkMathiasCopeman(273.15+20., 1000.0); + // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(273.15+0.0, + // 1.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("CO2", 3.59); + testSystem.addComponent("nitrogen", 0.34); - testSystem.setMultiPhaseCheck(true); + testSystem.addComponent("methane", 167.42); + /* + * testSystem.addComponent("ethane", 29.02); testSystem.addComponent("propane", 14.31); + * testSystem.addComponent("i-butane", 0.93); testSystem.addComponent("n-butane", 1.71); + * testSystem.addComponent("i-pentane", 0.74); testSystem.addComponent("n-pentane", 0.85); + * testSystem.addComponent("n-hexane", 1.38); testSystem.addTBPfraction("C7", 15.5, 59.00 / + * 1000.0, 0.73); testSystem.addTBPfraction("C8", 5.69, 112.20 / 1000.0, 0.77); + * testSystem.addTBPfraction("C9", 10.14, 87.5 / 1000.0, 0.755); + * testSystem.addTBPfraction("C10", 0.8, 114.3 / 1000.0, 0.77); + * testSystem.addPlusFraction("C11", 4.58, 236.2 / 1000.0, 0.8398); + * testSystem.addPlusFraction("C11", 4.58, 266.2 / 1000.0, 0.8398); + */ + // testSystem.addComponent("toluene", 0.009); + // testSystem.addTBPfraction("C7",0.626, 96.00/1000.0, 0.738); + // testSystem.addComponent("MDEA", 0.54); + testSystem.addComponent("water", 0.01); + // testSystem.addComponent("propane", 4.0062); + // testSystem.addComponent("i-butane", 0.6 4205); + // testSystem.addComponent("methane", 10.0); + // testSystem.addComponent("ethane", 9.24); + // testSystem.addComponent("propane", 2.57); + // testSystem.addComponent("CO2", 5.19); + // testSystem.addComponent("CO2", 30.4107); + // testSystem.addComponent("MEG", 30.0); + // testSystem.addComponent("MEG", 7.00); - // testSystem.setSolidPhaseCheck(true); - // testSystem.setHydrateCheck(true); - // testSystem.getCharacterization().characterisePlusFraction(); - testSystem.createDatabase(true); - // testSystem.useVolumeCorrection(true); - testSystem.setMixingRule(10); + testSystem.setMultiPhaseCheck(true); - // System.out.println("activity water " + - // testSystem.getPhase(1).getActivityCoefficient(2)); - // 1- orginal no interaction 2- classic w interaction - // 3- Huron-Vidal 4- Wong-Sandler - // testSystem.setMixingRule(1); + // testSystem.setSolidPhaseCheck(true); + // testSystem.setHydrateCheck(true); + // testSystem.getCharacterization().characterisePlusFraction(); + testSystem.createDatabase(true); + // testSystem.useVolumeCorrection(true); + testSystem.setMixingRule(10); - try { - int phase = 0; + // System.out.println("activity water " + + // testSystem.getPhase(1).getActivityCoefficient(2)); + // 1- orginal no interaction 2- classic w interaction + // 3- Huron-Vidal 4- Wong-Sandler + // testSystem.setMixingRule(1); - testSystem.init(0); - testSystem.useVolumeCorrection(true); - testSystem.setNumberOfPhases(1); - testSystem.setMaxNumberOfPhases(1); + try { + int phase = 0; - for (int i = 0; i < 100000; i++) { - double[] x = testSystem.getMolarComposition(); - testSystem.setMolarComposition(x); - testSystem.init(0, 0); - testSystem.setTemperature(298); - testSystem.setPressure(10); - if (phase == 1) { - phase = 0; - } else { - phase = 1; - } + testSystem.init(0); + testSystem.useVolumeCorrection(true); + testSystem.setNumberOfPhases(1); + testSystem.setMaxNumberOfPhases(1); - testSystem.setPhaseType(0, phase); - testSystem.init(2, 0); - testSystem.initPhysicalProperties(); - } - // testOps.TPflash(); - // testOps.saturateWithWater(); - // testOps.calcPTphaseEnvelope(); - // testOps.displayResult(); - // testSystem.display(); - // SystemInterface newSyst = testSystem.phaseToSystem(testSystem.getPhase(1)); - // newSyst.setPressure(1.4); - // newSyst.setTemperature(273 + 40.0); - // ThermodynamicOperations testOps2 = new ThermodynamicOperations(newSyst); - // testOps2.TPflash(); - // newSyst.display(); - // testOps.bubblePointPressureFlash(); - } catch (Exception e) { - logger.error("error", e); + for (int i = 0; i < 100000; i++) { + double[] x = testSystem.getMolarComposition(); + testSystem.setMolarComposition(x); + testSystem.init(0, 0); + testSystem.setTemperature(298); + testSystem.setPressure(10); + if (phase == 1) { + phase = 0; + } else { + phase = 1; } - // System.out.println("Henrys Constant " + - // 1.0/testSystem.getPhase(1).getComponent("CO2").getx()*testSystem.getPressure()); - // System.out.println("water fugacity " + - // testSystem.getPhase(0).getComponent("water").getx()*testSystem.getPhase(0).getComponent("water").getFugacityCoefficient()*testSystem.getPressure()); - // System.out.println("partial pressure water " + - // testSystem.getPhase(0).getComponent("water").getx()*testSystem.getPressure()); - // System.out.println("activity water " + - // testSystem.getPhase(1).getActivityCoefficient(2)); - // System.out.println("wt%MEG " + - // testSystem.getPhase(1).getComponent("MEG").getMolarMass() * - // testSystem.getPhase(1).getComponent("MEG").getx() / - // testSystem.getPhase(1).getMolarMass() * 1e2); - testSystem.display(); + + testSystem.setPhaseType(0, PhaseType.byValue(phase)); + testSystem.init(2, 0); + testSystem.initPhysicalProperties(); + } + // testOps.TPflash(); + // testOps.saturateWithWater(); + // testOps.calcPTphaseEnvelope(); + // testOps.displayResult(); + // testSystem.display(); + // SystemInterface newSyst = testSystem.phaseToSystem(testSystem.getPhase(1)); + // newSyst.setPressure(1.4); + // newSyst.setTemperature(273 + 40.0); + // ThermodynamicOperations testOps2 = new ThermodynamicOperations(newSyst); + // testOps2.TPflash(); + // newSyst.display(); + // testOps.bubblePointPressureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + // System.out.println("Henrys Constant " + + // 1.0/testSystem.getPhase(1).getComponent("CO2").getx()*testSystem.getPressure()); + // System.out.println("water fugacity " + + // testSystem.getPhase(0).getComponent("water").getx()*testSystem.getPhase(0).getComponent("water").getFugacityCoefficient()*testSystem.getPressure()); + // System.out.println("partial pressure water " + + // testSystem.getPhase(0).getComponent("water").getx()*testSystem.getPressure()); + // System.out.println("activity water " + + // testSystem.getPhase(1).getActivityCoefficient(2)); + // System.out.println("wt%MEG " + + // testSystem.getPhase(1).getComponent("MEG").getMolarMass() * + // testSystem.getPhase(1).getComponent("MEG").getx() / + // testSystem.getPhase(1).getMolarMass() * 1e2); + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TPflash.java b/src/test/java/neqsim/thermo/util/example/TPflash.java index 9bc24030b8..ae044a6929 100644 --- a/src/test/java/neqsim/thermo/util/example/TPflash.java +++ b/src/test/java/neqsim/thermo/util/example/TPflash.java @@ -1,5 +1,7 @@ package neqsim.thermo.util.example; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -14,59 +16,63 @@ * @since 2.2.3 */ public class TPflash { - /** - *

main.

+ static Logger logger = LogManager.getLogger(TPflash.class); + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 42.498, 19.2875); + testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(5); + testSystem.addComponent("water", 40.0); + testSystem.addComponent("TEG", 40.0); + testSystem.addComponent("nitrogen", 40.0); + testSystem.addComponent("CO2", 40.0); + testSystem.addComponent("methane", 14); + testSystem.addComponent("ethane", 14); + testSystem.addComponent("propane", 14); + testSystem.addComponent("n-butane", 14); + testSystem.addComponent("i-butane", 14); + testSystem.addComponent("ethane", 14); + testSystem.addComponent("n-pentane", 14); + testSystem.addComponent("i-pentane", 14); + /* + * testSystem.addTBPfraction("C6", 1.0, 85.0253 / 1000.0, 0.667229); + * testSystem.addTBPfraction("C7", 1.0, 90.3717 / 1000.0, 746.3681 / 1000.0); + * testSystem.addTBPfraction("C8", 1.0, 102.4695 / 1000.0, 770.9114 / 1000.0); + * testSystem.addTBPfraction("C9", 1.0, 115.6 / 1000.0, 790.1 / 1000.0); + * testSystem.addTBPfraction("C10", 1.0, 225.5046 / 1000.0, 841.1014 / 1000.0); + * testSystem.setMolarComposition(new double[] { 0.829, 0, 0.0007, 0.002, 0.0707, 0.0072, + * 0.0051, 0.0019, 0.0062, 0.0048, 0.006, 0.0074, 0.0109, 0.0109, 0.0062, 0.031 }); * - * @param args an array of {@link java.lang.String} objects + * testSystem.setHeavyTBPfractionAsPlusFraction(); + * testSystem.getCharacterization().characterisePlusFraction(); */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 42.498, 19.2875); - testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(5); - testSystem.addComponent("water", 40.0); - testSystem.addComponent("TEG", 40.0); - testSystem.addComponent("nitrogen", 40.0); - testSystem.addComponent("CO2", 40.0); - testSystem.addComponent("methane", 14); - testSystem.addComponent("ethane", 14); - testSystem.addComponent("propane", 14); - testSystem.addComponent("n-butane", 14); - testSystem.addComponent("i-butane", 14); - testSystem.addComponent("ethane", 14); - testSystem.addComponent("n-pentane", 14); - testSystem.addComponent("i-pentane", 14); - /* - * testSystem.addTBPfraction("C6", 1.0, 85.0253 / 1000.0, 0.667229); - * testSystem.addTBPfraction("C7", 1.0, 90.3717 / 1000.0, 746.3681 / 1000.0); - * testSystem.addTBPfraction("C8", 1.0, 102.4695 / 1000.0, 770.9114 / 1000.0); - * testSystem.addTBPfraction("C9", 1.0, 115.6 / 1000.0, 790.1 / 1000.0); - * testSystem.addTBPfraction("C10", 1.0, 225.5046 / 1000.0, 841.1014 / 1000.0); - * testSystem.setMolarComposition(new double[] { 0.829, 0, 0.0007, 0.002, 0.0707, 0.0072, - * 0.0051, 0.0019, 0.0062, 0.0048, 0.006, 0.0074, 0.0109, 0.0109, 0.0062, 0.031 }); - * - * testSystem.setHeavyTBPfractionAsPlusFraction(); - * testSystem.getCharacterization().characterisePlusFraction(); - */ - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); - try { - testOps.TPflash(); - } catch (Exception e) { - } + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // ObjectMapper om = new ObjectMapper(new YAMLFactory()); - // om.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + try { + testOps.TPflash(); + } catch (Exception ex) { + } - try { - // om.writeValue(new File("c:/temp/person2.yaml"), - // testSystem.getPhase(0).getComponent(0)); - } catch (Exception e) { - e.printStackTrace(); - } + // ObjectMapper om = new ObjectMapper(new YAMLFactory()); + // om.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - testSystem.display(); - // testSystem.displayPDF(); + try { + // om.writeValue(new File("c:/temp/person2.yaml"), + // testSystem.getPhase(0).getComponent(0)); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + + testSystem.display(); + // testSystem.displayPDF(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TPflash1.java b/src/test/java/neqsim/thermo/util/example/TPflash1.java index 296550aa78..0931b35e5e 100644 --- a/src/test/java/neqsim/thermo/util/example/TPflash1.java +++ b/src/test/java/neqsim/thermo/util/example/TPflash1.java @@ -7,52 +7,56 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TPflash1 class.

+ *

+ * TPflash1 class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class TPflash1 { - static Logger logger = LogManager.getLogger(TPflash1.class); + static Logger logger = LogManager.getLogger(TPflash1.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // SystemInterface testSystem = new SystemSrkEos(288.15 + 5, 165.01325); - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 100.0, 0.5); - // testSystem.addComponent("CO2", 10.01); - testSystem.addComponent("water", 10.000083156844); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // SystemInterface testSystem = new SystemSrkEos(288.15 + 5, 165.01325); + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 100.0, 0.5); + // testSystem.addComponent("CO2", 10.01); + testSystem.addComponent("water", 10.000083156844); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.setMultiPhaseCheck(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.setMultiPhaseCheck(true); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testOps.TPflash(); - // long time = System.currentTimeMillis(); - // testOps.TPflash(); - for (int i = 0; i < 1; i++) { - // testOps.TPflash(); - try { - testOps.bubblePointPressureFlash(false); - // testOps.waterDewPointTemperatureMultiphaseFlash(); - } catch (Exception e) { - logger.error("error", e); - } - // testSystem.init(0); - // testSystem.init(1); - } - - // testSystem.init(2); - // System.out.print("gas enthalpy " + - // testSystem.getPhase(0).getEnthalpy("kJ/kg")); - // System.out.print("liquid enthalpy " + - // testSystem.getPhase(1).getEnthalpy("kJ/kg")); - testSystem.display(); + // testOps.TPflash(); + // long time = System.currentTimeMillis(); + // testOps.TPflash(); + for (int i = 0; i < 1; i++) { + // testOps.TPflash(); + try { + testOps.bubblePointPressureFlash(false); + // testOps.waterDewPointTemperatureMultiphaseFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + // testSystem.init(0); + // testSystem.init(1); } + + // testSystem.init(2); + // System.out.print("gas enthalpy " + + // testSystem.getPhase(0).getEnthalpy("kJ/kg")); + // System.out.print("liquid enthalpy " + + // testSystem.getPhase(1).getEnthalpy("kJ/kg")); + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TPflash2.java b/src/test/java/neqsim/thermo/util/example/TPflash2.java index a6aeb4e4cc..3adcb4eb01 100644 --- a/src/test/java/neqsim/thermo/util/example/TPflash2.java +++ b/src/test/java/neqsim/thermo/util/example/TPflash2.java @@ -2,53 +2,60 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkCPAstatoil; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TPflash2 class.

+ *

+ * TPflash2 class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class TPflash2 { - static Logger logger = LogManager.getLogger(TPflash2.class); + static Logger logger = LogManager.getLogger(TPflash2.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 80.0, 1.01325);// - testSystem.addComponent("nitrogen", 8.71604938); - // testSystem.addComponent("oxygen", 22.71604938); - testSystem.addComponent("water", 110.234567901); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - // testSystem.setMultiPhaseCheck(true); - SystemInterface testSystem2 = new SystemSrkCPAstatoil(273.15 + 80.0, 1.01325); - testSystem2.addComponent("nitrogen", 8.71604938); - // testSystem.addComponent("oxygen", 22.71604938); - testSystem2.addComponent("MEG", 110.234567901); - testSystem2.createDatabase(true); - testSystem2.setMixingRule(10); - testSystem.addFluid(testSystem2); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = + new SystemSrkCPAstatoil(273.15 + 80.0, ThermodynamicConstantsInterface.referencePressure); + testSystem.addComponent("nitrogen", 8.71604938); + // testSystem.addComponent("oxygen", 22.71604938); + testSystem.addComponent("water", 110.234567901); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + // testSystem.setMultiPhaseCheck(true); + SystemInterface testSystem2 = + new SystemSrkCPAstatoil(273.15 + 80.0, ThermodynamicConstantsInterface.referencePressure); + testSystem2.addComponent("nitrogen", 8.71604938); + // testSystem.addComponent("oxygen", 22.71604938); + testSystem2.addComponent("MEG", 110.234567901); + testSystem2.createDatabase(true); + testSystem2.setMixingRule(10); + testSystem.addFluid(testSystem2); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testOps.TPflash(); + // testOps.TPflash(); - try { - testOps.TPflash(); - // testOps.waterDewPointTemperatureMultiphaseFlash(); - } catch (Exception e) { - logger.error("error", e); - } - // testSystem.init(0); - // testSystem.init(1); - - testSystem.display(); + try { + testOps.TPflash(); + // testOps.waterDewPointTemperatureMultiphaseFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + // testSystem.init(0); + // testSystem.init(1); + + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TPflashCAPEOPEN.java b/src/test/java/neqsim/thermo/util/example/TPflashCAPEOPEN.java index bc96cca15c..7dd8de0b8a 100644 --- a/src/test/java/neqsim/thermo/util/example/TPflashCAPEOPEN.java +++ b/src/test/java/neqsim/thermo/util/example/TPflashCAPEOPEN.java @@ -1,5 +1,6 @@ package neqsim.thermo.util.example; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -52,14 +53,14 @@ public static void main(String[] args) { testSystem.setMolarComposition( new double[] {0.0, 0.01, 0.01, 7.2, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0}); testSystem.init(0, 0); - testSystem.setPhaseType(0, "gas"); + testSystem.setPhaseType(0, PhaseType.GAS); testSystem.init(3); testSystem.initPhysicalProperties(); testSystem.setMolarComposition( new double[] {0.0, 0.01, 0.01, 7.2, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0}); testSystem.init(0, 0); - testSystem.setPhaseType(0, "liquid"); + testSystem.setPhaseType(0, PhaseType.LIQUID); testSystem.init(3); testSystem.initPhysicalProperties(); } diff --git a/src/test/java/neqsim/thermo/util/example/TPflashDehyd.java b/src/test/java/neqsim/thermo/util/example/TPflashDehyd.java index 0b7265e11e..ed8f2e83a3 100644 --- a/src/test/java/neqsim/thermo/util/example/TPflashDehyd.java +++ b/src/test/java/neqsim/thermo/util/example/TPflashDehyd.java @@ -17,197 +17,192 @@ * @since 2.2.3 */ public class TPflashDehyd { - static Logger logger = LogManager.getLogger(TPflashDehyd.class); + static Logger logger = LogManager.getLogger(TPflashDehyd.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - // SystemInterface testSystem = new SystemSrkEos(288.15 + 5, 165.01325);// - SystemInterface testSystem2 = new SystemSrkEos(298, 10);// - testSystem2 = testSystem2.readObject(30); - // testSystem2.addComponent("methane", 1.0, "kg/sec"); - // testSystem2.addComponent("ethane", 0.1, "kg/sec"); - // testSystem2.addComponent("water", 30.0e-6, "kg/sec"); - // testSystem2.addComponent("MEG", 30.0e-16, "kg/sec"); - testSystem2.createDatabase(true); - testSystem2.setMixingRule(10); - testSystem2.init(0); - - SystemInterface testSystem = new SystemSrkCPAstatoil(298, 10); - // testSystem.addComponent("methane", 1.0e-10, "kg/sec"); - testSystem = testSystem.readObject(37); - testSystem.addComponent("water", 0.5, "kg/sec"); - testSystem.addComponent("MEG", 9.5, "kg/sec"); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.setMultiPhaseCheck(true); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + // SystemInterface testSystem = new SystemSrkEos(288.15 + 5, 165.01325); + SystemInterface testSystem2 = new SystemSrkEos(298, 10); // + testSystem2 = testSystem2.readObject(30); + // testSystem2.addComponent("methane", 1.0, "kg/sec"); + // testSystem2.addComponent("ethane", 0.1, "kg/sec"); + // testSystem2.addComponent("water", 30.0e-6, "kg/sec"); + // testSystem2.addComponent("MEG", 30.0e-16, "kg/sec"); + testSystem2.createDatabase(true); + testSystem2.setMixingRule(10); + testSystem2.init(0); - for (int i = 0; i < 24; i++) { - testSystem2.setTotalFlowRate(0.1 * 3600, "MSm3/day"); - testSystem2.init(1); - testSystem.addFluid(testSystem2); - testOps.TPflash(); - // testSystem.display(); - logger.info("ppm water" + testSystem.getPhase(0).getComponent("water").getx() * 1e6); - testSystem = testSystem.phaseToSystem(1); - testOps = new ThermodynamicOperations(testSystem); - logger.info("nuber of moles " + testSystem.getNumberOfMoles() + " moleFrac MEG " - + testSystem.getPhase(0).getComponent("MEG").getx()); - } + SystemInterface testSystem = new SystemSrkCPAstatoil(298, 10); + // testSystem.addComponent("methane", 1.0e-10, "kg/sec"); + testSystem = testSystem.readObject(37); + testSystem.addComponent("water", 0.5, "kg/sec"); + testSystem.addComponent("MEG", 9.5, "kg/sec"); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.setMultiPhaseCheck(true); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.display(); - // testSystem.display(); - // testSystem.init(3); - // thermo.ThermodynamicModelTest testModel = new - // thermo.ThermodynamicModelTest(testSystem); - // testModel.runTest(); - // testSystem.display(); - // System.out.println("water activity " + - // testSystem.getPhase(1).getActivityCoefficient(2)); - // testSystem.init(0); - // testSystem.setPhaseType(0, 1); - // testSystem.init(1); - /* - * testSystem.init(2); - * - * // testSystem.init(1); // testSystem.init(2); // testSystem.init(3); // - * System.out.println("heat cap " + (testSystem.getPhase(1).getCp())); // - * testOps.calcPTphaseEnvelope(); testSystem.display(); // testSystem.getPhase(0).getCp(); } - * catch (Exception e) { System.out.println(e.toString()); } - * - * /* System.out.println("gas density " + (testSystem.getPhase(0).getDensity())); - * System.out.println("gas density " + (1.0 / (testSystem.getPhase(0).getDensity() / - * testSystem.getPhase(0).getMolarMass()))); - * - * System.out.println("liq density " + (testSystem.getPhase(1).getDensity())); - * System.out.println("liq density " + (1.0 / (testSystem.getPhase(1).getDensity() / - * testSystem.getPhase(1).getMolarMass()))); - * - * testSystem.initPhysicalProperties(); testSystem.init(1); - * - * System.out.println("start....."); testSystem.removeMoles(); - * testSystem.setMolarComposition(new double[]{1.0, 1e-20, 1e-20}); testSystem.init(0, 0); - * testSystem.init(1); testSystem.display(); - * - * System.out.println("end....."); testSystem.setMolarComposition(new double[]{0.000001, - * 0.00001, 1e-20}); // testSystem.init(1); testSystem.init(0, 0); testSystem.init(1); // - * testSystem.display(); - * - * /* testSystem.initPhysicalProperties(); double rho1 = - * testSystem.getPhase(0).getPhysicalProperties().getDensity(); System.out.println("drhodP " - * + testSystem.getPhase(0).getdrhodP()); System.out.println("drhodT " + - * testSystem.getPhase(0).getdrhodP()); - * testSystem.setPressure(testSystem.getPressure()+0.01); - * testSystem.setPressure(testSystem.getPressure() + 0.001); testSystem.init(1); // - * testSystem.display(); // testSystem.initPhysicalProperties(); double rho2 = - * testSystem.getPhase(0).getPhysicalProperties().getDensity(); - * - * //System.out.println("drhodPnum " + (rho2 - rho1) / 0.01); - * System.out.println("drhodTnum " + (rho2 - rho1) / 0.001); - * - * testSystem.saveFluid(2327); testSystem.saveFluid(2301); // - * testSystem.setNumberOfPhases(1); // testSystem.setTemperature(299.0); // - * testSystem.init(1); // testSystem.getPhase(0).getEntropy(); // - * System.out.println("enthalpy " + testSystem.getPhase(0).getEntropy()); - * //testSystem.setTemperature(299.0); testSystem.init(1); - * System.out.println("water activity " + testSystem.getPhase(1).getActivityCoefficient(1)); - * // testSystem.getPhase(0).getEntropydP(); System.out.println("Cp " + - * testSystem.getPhase(0).getCp()); System.out.println("enthalpy " + - * testSystem.getPhase(0).getEnthalpy()); System.out.println("entropy " + - * testSystem.getPhase(0).getEntropy()); - * - * - * testSystem.init(2); System.out.println("Cp " + testSystem.getPhase(0).getCp()); - * System.out.println("enthalpy " + testSystem.getPhase(0).getEnthalpy()); - * System.out.println("entropy " + testSystem.getPhase(0).getEntropy()); testSystem.init(3); - * System.out.println("Cp " + testSystem.getPhase(0).getCp()); - * System.out.println("enthalpy " + testSystem.getPhase(0).getEnthalpy()); - * System.out.println("entropy " + testSystem.getPhase(0).getEntropy()); // - * testSystem.setPhysicalPropertyModel(4); //testSystem.setSolidPhaseCheck("CO2");9 // - * testSystem.getInterphaseProperties().setInterfacialTensionModel(3); testOps = new - * ThermodynamicOperations(testSystem); try { // testOps.freezingPointTemperatureFlash(); - * testOps.TPflash(); // testOps.calcPTphaseEnvelope(); // testOps.display(); // - * testSystem.display(); } catch (Exception e) { System.out.println(e.toString()); } - * - * /* double h1 = testSystem.getPhase(0).getEntropy(); System.out.println("H " + - * testSystem.getPhase(0).getEntropy()); System.out.println("H dP " + - * testSystem.getPhase(0).getEntropydT()); - * testSystem.setTemperature(testSystem.getTemperature() + 1); testSystem.init(3); double h2 - * = testSystem.getPhase(0).getEntropy(); System.out.println("H " + - * testSystem.getPhase(0).getEntropy()); System.out.println("H dP " + - * testSystem.getPhase(0).getEntropydT()); - */ - // System.out.println("dhdp " + (h2 - h1)); - /* - * double seletivity = testSystem.getPhase(1).getComponent("CO2").getx() / - * testSystem.getPhase(0).getComponent("CO2").getx() / - * (testSystem.getPhase(1).getComponent("methane").getx() / - * testSystem.getPhase(0).getComponent("methane").getx()); - * System.out.println("selectivity CO2/methane " + seletivity); - * - * double seletivity2 = testSystem.getPhase(1).getComponent("CO2").getx() / - * testSystem.getPhase(0).getComponent("CO2").getx() / - * (testSystem.getPhase(1).getComponent("ethane").getx() / - * testSystem.getPhase(0).getComponent("ethane").getx()); - * System.out.println("selectivity CO2/ethane " + seletivity2); - */ - // testSystem.saveObject(2201); - // System.out.println("activity coef MDEA " + - // testSystem.getPhase(1).getActivityCoefficient(1)); - /* - * testSystem.saveObject(928); testSystem.display(); System.out.println("wt " + - * testSystem.getPhase(2).getWtFraction(testSystem) + - * testSystem.getPhase(1).getWtFraction(testSystem) + - * testSystem.getPhase(0).getWtFraction(testSystem)); - * - * double a = testSystem.getPhase(0).getBeta() * testSystem.getPhase(0).getMolarMass() / - * testSystem.getMolarMass(); double seletivity = - * testSystem.getPhase(1).getComponent("CO2").getx() / - * testSystem.getPhase(0).getComponent("CO2").getx() / - * (testSystem.getPhase(1).getComponent("methane").getx() / - * testSystem.getPhase(0).getComponent("methane").getx()); - * - * - * double solubility = testSystem.getPhase(1).getComponent("CO2").getx() * 8.314 * 298.15 / - * 101325.0 / (testSystem.getPhase(1).getMolarMass()) * 1000; - * - * System.out.println("selectivity " + seletivity); System.out.println("CO2 solubility " + - * solubility); System.out.println("Z " + testSystem.getPhase(0).getZ()); // - * testSystem.getPhase(0).getComponentWithIndex(1); // testSystem.saveObject(300); // - * System.out.println("ethanol activity " + - * testSystem.getPhase(0).getActivityCoefficient(0)); - * - * //testSystem. // System.out.println("water activity " + - * testSystem.getPhase(1).getActivityCoefficient(1)); // System.out.println("TEG activity " - * + testSystem.getPhase(1).getActivityCoefficient(0)); // testSystem.display(); - * //System.out.println("fugacitycoefficient " + - * testSystem.getPhase(1).getComponent("water").getLogFugacityCoefficient()); /* - * System.out.println("fugacitycoefficientdp " + - * testSystem.getPhase(0).getComponent("MEG").getdfugdp()); - * System.out.println("fugacitycoefficientdp " + - * testSystem.getPhase(0).getComponent("water").getdfugdp()); - * System.out.println("fugacitycoefficientdt " + - * testSystem.getPhase(0).getComponent("MEG").getdfugdt()); - * System.out.println("fugacitycoefficientdt " + - * testSystem.getPhase(0).getComponent("water").getdfugdt()); - * System.out.println("fugacitycoefficientdn " + - * testSystem.getPhase(0).getComponent("MEG").getdfugdn(1)); - * System.out.println("fugacitycoefficientdn " + - * testSystem.getPhase(0).getComponent("water").getdfugdn(0)); - * - * System.out.println("Hres " + testSystem.getPhase(0).getHresTP() / - * thermo.ThermodynamicConstantsInterface.R); System.out.println("Sres " + - * testSystem.getPhase(0).getSresTP() / thermo.ThermodynamicConstantsInterface.R); - * System.out.println("Cpres " + testSystem.getPhase(0).getCpres() / - * thermo.ThermodynamicConstantsInterface.R); System.out.println("Gibbs gas " + - * testSystem.getPhase(0).getGibbsEnergy()); System.out.println("Gibbs liquid " + - * testSystem.getPhase(1).getGibbsEnergy()); - */ + for (int i = 0; i < 24; i++) { + testSystem2.setTotalFlowRate(0.1 * 3600, "MSm3/day"); + testSystem2.init(1); + testSystem.addFluid(testSystem2); + testOps.TPflash(); + // testSystem.display(); + logger.info("ppm water" + testSystem.getPhase(0).getComponent("water").getx() * 1e6); + testSystem = testSystem.phaseToSystem(1); + testOps = new ThermodynamicOperations(testSystem); + logger.info("nuber of moles " + testSystem.getNumberOfMoles() + " moleFrac MEG " + + testSystem.getPhase(0).getComponent("MEG").getx()); } + + // testSystem.display(); + // testSystem.display(); + // testSystem.init(3); + // thermo.ThermodynamicModelTest testModel = new + // thermo.ThermodynamicModelTest(testSystem); + // testModel.runTest(); + // testSystem.display(); + // System.out.println("water activity " + + // testSystem.getPhase(1).getActivityCoefficient(2)); + // testSystem.init(0); + // testSystem.setPhaseType(0, 1); + // testSystem.init(1); + /* + * testSystem.init(2); + * + * // testSystem.init(1); // testSystem.init(2); // testSystem.init(3); // + * System.out.println("heat cap " + (testSystem.getPhase(1).getCp())); // + * testOps.calcPTphaseEnvelope(); testSystem.display(); // testSystem.getPhase(0).getCp(); } + * catch (Exception ex) { System.out.println(ex.toString()); } + * + * /* System.out.println("gas density " + (testSystem.getPhase(0).getDensity())); + * System.out.println("gas density " + (1.0 / (testSystem.getPhase(0).getDensity() / + * testSystem.getPhase(0).getMolarMass()))); + * + * System.out.println("liq density " + (testSystem.getPhase(1).getDensity())); + * System.out.println("liq density " + (1.0 / (testSystem.getPhase(1).getDensity() / + * testSystem.getPhase(1).getMolarMass()))); + * + * testSystem.initPhysicalProperties(); testSystem.init(1); + * + * System.out.println("start....."); testSystem.setEmptyFluid(); + * testSystem.setMolarComposition(new double[]{1.0, 1e-20, 1e-20}); testSystem.init(0, 0); + * testSystem.init(1); testSystem.display(); + * + * System.out.println("end....."); testSystem.setMolarComposition(new double[]{0.000001, + * 0.00001, 1e-20}); // testSystem.init(1); testSystem.init(0, 0); testSystem.init(1); // + * testSystem.display(); + * + * /* testSystem.initPhysicalProperties(); double rho1 = + * testSystem.getPhase(0).getPhysicalProperties().getDensity(); System.out.println("drhodP " + + * testSystem.getPhase(0).getdrhodP()); System.out.println("drhodT " + + * testSystem.getPhase(0).getdrhodP()); testSystem.setPressure(testSystem.getPressure()+0.01); + * testSystem.setPressure(testSystem.getPressure() + 0.001); testSystem.init(1); // + * testSystem.display(); // testSystem.initPhysicalProperties(); double rho2 = + * testSystem.getPhase(0).getPhysicalProperties().getDensity(); + * + * //System.out.println("drhodPnum " + (rho2 - rho1) / 0.01); System.out.println("drhodTnum " + + * (rho2 - rho1) / 0.001); + * + * testSystem.saveFluid(2327); testSystem.saveFluid(2301); // testSystem.setNumberOfPhases(1); + * // testSystem.setTemperature(299.0); // testSystem.init(1); // + * testSystem.getPhase(0).getEntropy(); // System.out.println("enthalpy " + + * testSystem.getPhase(0).getEntropy()); //testSystem.setTemperature(299.0); testSystem.init(1); + * System.out.println("water activity " + testSystem.getPhase(1).getActivityCoefficient(1)); // + * testSystem.getPhase(0).getEntropydP(); System.out.println("Cp " + + * testSystem.getPhase(0).getCp()); System.out.println("enthalpy " + + * testSystem.getPhase(0).getEnthalpy()); System.out.println("entropy " + + * testSystem.getPhase(0).getEntropy()); + * + * testSystem.init(2); System.out.println("Cp " + testSystem.getPhase(0).getCp()); + * System.out.println("enthalpy " + testSystem.getPhase(0).getEnthalpy()); + * System.out.println("entropy " + testSystem.getPhase(0).getEntropy()); testSystem.init(3); + * System.out.println("Cp " + testSystem.getPhase(0).getCp()); System.out.println("enthalpy " + + * testSystem.getPhase(0).getEnthalpy()); System.out.println("entropy " + + * testSystem.getPhase(0).getEntropy()); // testSystem.setPhysicalPropertyModel(4); + * //testSystem.setSolidPhaseCheck("CO2");9 // + * testSystem.getInterphaseProperties().setInterfacialTensionModel(3); testOps = new + * ThermodynamicOperations(testSystem); try { // testOps.freezingPointTemperatureFlash(); + * testOps.TPflash(); // testOps.calcPTphaseEnvelope(); // testOps.display(); // + * testSystem.display(); } catch (Exception ex) { System.out.println(ex.toString()); } + * + * /* double h1 = testSystem.getPhase(0).getEntropy(); System.out.println("H " + + * testSystem.getPhase(0).getEntropy()); System.out.println("H dP " + + * testSystem.getPhase(0).getEntropydT()); testSystem.setTemperature(testSystem.getTemperature() + * + 1); testSystem.init(3); double h2 = testSystem.getPhase(0).getEntropy(); + * System.out.println("H " + testSystem.getPhase(0).getEntropy()); System.out.println("H dP " + + * testSystem.getPhase(0).getEntropydT()); + */ + // System.out.println("dhdp " + (h2 - h1)); + /* + * double seletivity = testSystem.getPhase(1).getComponent("CO2").getx() / + * testSystem.getPhase(0).getComponent("CO2").getx() / + * (testSystem.getPhase(1).getComponent("methane").getx() / + * testSystem.getPhase(0).getComponent("methane").getx()); + * System.out.println("selectivity CO2/methane " + seletivity); + * + * double seletivity2 = testSystem.getPhase(1).getComponent("CO2").getx() / + * testSystem.getPhase(0).getComponent("CO2").getx() / + * (testSystem.getPhase(1).getComponent("ethane").getx() / + * testSystem.getPhase(0).getComponent("ethane").getx()); + * System.out.println("selectivity CO2/ethane " + seletivity2); + */ + // testSystem.saveObject(2201); + // System.out.println("activity coef MDEA " + + // testSystem.getPhase(1).getActivityCoefficient(1)); + /* + * testSystem.saveObject(928); testSystem.display(); System.out.println("wt " + + * testSystem.getPhase(2).getWtFraction(testSystem) + + * testSystem.getPhase(1).getWtFraction(testSystem) + + * testSystem.getPhase(0).getWtFraction(testSystem)); + * + * double a = testSystem.getPhase(0).getBeta() * testSystem.getPhase(0).getMolarMass() / + * testSystem.getMolarMass(); double seletivity = + * testSystem.getPhase(1).getComponent("CO2").getx() / + * testSystem.getPhase(0).getComponent("CO2").getx() / + * (testSystem.getPhase(1).getComponent("methane").getx() / + * testSystem.getPhase(0).getComponent("methane").getx()); + * + * double solubility = testSystem.getPhase(1).getComponent("CO2").getx() * + * ThermodynamicConstantsInterface.R * 298.15 /ThermodynamicConstantsInterface.atm / + * (testSystem.getPhase(1).getMolarMass()) * 1000; + * + * System.out.println("selectivity " + seletivity); System.out.println("CO2 solubility " + + * solubility); System.out.println("Z " + testSystem.getPhase(0).getZ()); // + * testSystem.getPhase(0).getComponentWithIndex(1); // testSystem.saveObject(300); // + * System.out.println("ethanol activity " + testSystem.getPhase(0).getActivityCoefficient(0)); + * + * //testSystem. // System.out.println("water activity " + + * testSystem.getPhase(1).getActivityCoefficient(1)); // System.out.println("TEG activity " + + * testSystem.getPhase(1).getActivityCoefficient(0)); // testSystem.display(); + * //System.out.println("fugacitycoefficient " + + * testSystem.getPhase(1).getComponent("water").getLogFugacityCoefficient()); /* + * System.out.println("fugacitycoefficientdp " + + * testSystem.getPhase(0).getComponent("MEG").getdfugdp()); + * System.out.println("fugacitycoefficientdp " + + * testSystem.getPhase(0).getComponent("water").getdfugdp()); + * System.out.println("fugacitycoefficientdt " + + * testSystem.getPhase(0).getComponent("MEG").getdfugdt()); + * System.out.println("fugacitycoefficientdt " + + * testSystem.getPhase(0).getComponent("water").getdfugdt()); + * System.out.println("fugacitycoefficientdn " + + * testSystem.getPhase(0).getComponent("MEG").getdfugdn(1)); + * System.out.println("fugacitycoefficientdn " + + * testSystem.getPhase(0).getComponent("water").getdfugdn(0)); + * + * System.out.println("Hres " + testSystem.getPhase(0).getHresTP() / + * thermo.ThermodynamicConstantsInterface.R); System.out.println("Sres " + + * testSystem.getPhase(0).getSresTP() / thermo.ThermodynamicConstantsInterface.R); + * System.out.println("Cpres " + testSystem.getPhase(0).getCpres() / + * thermo.ThermodynamicConstantsInterface.R); System.out.println("Gibbs gas " + + * testSystem.getPhase(0).getGibbsEnergy()); System.out.println("Gibbs liquid " + + * testSystem.getPhase(1).getGibbsEnergy()); + */ + } } diff --git a/src/test/java/neqsim/thermo/util/example/TPflashGR.java b/src/test/java/neqsim/thermo/util/example/TPflashGR.java index 7e51b97130..e5be7666a1 100644 --- a/src/test/java/neqsim/thermo/util/example/TPflashGR.java +++ b/src/test/java/neqsim/thermo/util/example/TPflashGR.java @@ -16,95 +16,96 @@ * @since 2.2.3 */ public class TPflashGR { - static Logger logger = LogManager.getLogger(TPflashGR.class); + static Logger logger = LogManager.getLogger(TPflashGR.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - // String[] components = new String[]{"water", "nitrogen", "CO2", "methane", - // "ethane", "propane", "i-butane","n-butane","i-pentane", "n-pentane", - // "CHCmp_1", "CHCmp_2", "CHCmp_3", "CHCmp_4" - // ,"CHCmp_5","CHCmp_6","CHCmp_7","CHCmp_8","CHCmp_9","CHCmp_10","CHCmp_11","CHCmp_12","CHCmp_13"}; - // double[] fractions1 = new double[] {0.0304006958007813, 4.73001127829775E-07, - // 0.000380391739308834, 0.00102935172617435, 0.00350199580192566, - // 0.0149815678596497, 0.00698469817638397 , 0.0226067280769348, - // 0.0143046414852142, 0.0203909373283386, 0.0352155113220215, - // 0.0705802822113037,0.0850765609741211,0.0605201292037964, 0.1793018150329590, - // 0.1033354282379150, 0.0706664896011353, - // 0.0626348257064819,0.0488108015060425,0.0484040451049805,0.0417061710357666,0.0425787830352783,0.0365876793861389 - // }; - // double[] molarmass = new double[] {0.0386243104934692, 1.08263303991407E-05, - // 0.00019008457660675, 0.00305547803640366, 0.00200786963105202, - // 0.00389420658349991,0.00179276615381241 , 0.00255768150091171, - // 0.00205287128686905, 0.00117853358387947 , - // 0.0854749984741211,0.0890039978027344,0.1021979980468750,0.1156969985961910,0.1513029937744140,0.2105240020751950,0.2728500061035160,0.3172810058593750,0.3585450134277340,0.4076000061035160,0.4698110046386720,0.5629600219726560, - // 0.7858560180664060 }; - // double[] density = new double[] {0.0386243104934692, 1.08263303991407E-05, - // 0.00019008457660675, 0.00305547803640366, 0.00200786963105202, - // 0.00389420658349991,0.00179276615381241 , 0.00255768150091171, - // 0.00205287128686905, 0.00117853358387947, - // 0.664700031280518,0.757499992847443,0.778400003910065,0.792500019073486,0.82480001449585,0.869700014591217,0.881599962711334,0.89300000667572,0.90200001001358,0.911700010299683, - // 0.923400044441223,0.939900040626526,0.979299962520599}; + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + // String[] components = new String[]{"water", "nitrogen", "CO2", "methane", + // "ethane", "propane", "i-butane","n-butane","i-pentane", "n-pentane", + // "CHCmp_1", "CHCmp_2", "CHCmp_3", "CHCmp_4" + // ,"CHCmp_5","CHCmp_6","CHCmp_7","CHCmp_8","CHCmp_9","CHCmp_10","CHCmp_11","CHCmp_12","CHCmp_13"}; + // double[] fractions1 = new double[] {0.0304006958007813, 4.73001127829775E-07, + // 0.000380391739308834, 0.00102935172617435, 0.00350199580192566, + // 0.0149815678596497, 0.00698469817638397 , 0.0226067280769348, + // 0.0143046414852142, 0.0203909373283386, 0.0352155113220215, + // 0.0705802822113037,0.0850765609741211,0.0605201292037964, 0.1793018150329590, + // 0.1033354282379150, 0.0706664896011353, + // 0.0626348257064819,0.0488108015060425,0.0484040451049805,0.0417061710357666,0.0425787830352783,0.0365876793861389 + // }; + // double[] molarmass = new double[] {0.0386243104934692, 1.08263303991407E-05, + // 0.00019008457660675, 0.00305547803640366, 0.00200786963105202, + // 0.00389420658349991,0.00179276615381241 , 0.00255768150091171, + // 0.00205287128686905, 0.00117853358387947 , + // 0.0854749984741211,0.0890039978027344,0.1021979980468750,0.1156969985961910,0.1513029937744140,0.2105240020751950,0.2728500061035160,0.3172810058593750,0.3585450134277340,0.4076000061035160,0.4698110046386720,0.5629600219726560, + // 0.7858560180664060 }; + // double[] density = new double[] {0.0386243104934692, 1.08263303991407E-05, + // 0.00019008457660675, 0.00305547803640366, 0.00200786963105202, + // 0.00389420658349991,0.00179276615381241 , 0.00255768150091171, + // 0.00205287128686905, 0.00117853358387947, + // 0.664700031280518,0.757499992847443,0.778400003910065,0.792500019073486,0.82480001449585,0.869700014591217,0.881599962711334,0.89300000667572,0.90200001001358,0.911700010299683, + // 0.923400044441223,0.939900040626526,0.979299962520599}; - String[] components = new String[] {"water", "nitrogen", "CO2", "methane", "ethane", - "propane", "i-butane", "n-butane", "i-pentane", "n-pentane", "C6", "C7", "C8", "C9", - "C10"};// ,"CHCmp_6","CHCmp_7","CHCmp_8"};//,"CHCmp_9","CHCmp_10","CHCmp_11","CHCmp_12","CHCmp_13"}; - double[] fractions1 = new double[] {0.691986417509639, 0.001518413245518, 0.004876419074493, - 0.177034951950947, 0.016102566295901, 0.008162056735947, 0.002489557955828, - 0.008657117478144, 0.006116331881632, 0.007300146475110, 0.008772462741648, - 0.012794973584387, 0.012834050157103, 0.007273111871068, - 0.014261799565032 + 0.010199184799741 + 0.005722681071876 + 0.003897757605989}; - double[] molarmass = new double[] {18.0153, 28.0135, 44.0098, 16.0429, 30.0698, 44.0968, - 58.1239, 58.1239, 72.1510, 72.1510, 86.1776 / 1000.0, 90.1140 / 1000.0, - 102.0386 / 1000.0, 117.4548 / 1000.0, 205.5306 / 1000.0}; - double[] density = new double[] {1.0, -1.0000e+19, -1.0000e+19, -1.0000e+19, -1.0000e+19, - -1.0000e+19, -1.0000e+19, -1.0000e+19, -1.0000e+19, -1.0000e+19, 667.4991 / 1000.0, - 746.5672 / 1000.0, 787.1960 / 1000.0, 776.5150 / 1000.0, 849.9863 / 1000.0,}; + String[] components = new String[] {"water", "nitrogen", "CO2", "methane", "ethane", "propane", + "i-butane", "n-butane", "i-pentane", "n-pentane", "C6", "C7", "C8", "C9", "C10"}; // ,"CHCmp_6","CHCmp_7","CHCmp_8"}; + // //,"CHCmp_9","CHCmp_10","CHCmp_11","CHCmp_12","CHCmp_13"}; + double[] fractions1 = new double[] {0.691986417509639, 0.001518413245518, 0.004876419074493, + 0.177034951950947, 0.016102566295901, 0.008162056735947, 0.002489557955828, + 0.008657117478144, 0.006116331881632, 0.007300146475110, 0.008772462741648, + 0.012794973584387, 0.012834050157103, 0.007273111871068, + 0.014261799565032 + 0.010199184799741 + 0.005722681071876 + 0.003897757605989}; + double[] molarmass = new double[] {18.0153, 28.0135, 44.0098, 16.0429, 30.0698, 44.0968, + 58.1239, 58.1239, 72.1510, 72.1510, 86.1776 / 1000.0, 90.1140 / 1000.0, 102.0386 / 1000.0, + 117.4548 / 1000.0, 205.5306 / 1000.0}; + double[] density = new double[] {1.0, -1.0000e+19, -1.0000e+19, -1.0000e+19, -1.0000e+19, + -1.0000e+19, -1.0000e+19, -1.0000e+19, -1.0000e+19, -1.0000e+19, 667.4991 / 1000.0, + 746.5672 / 1000.0, 787.1960 / 1000.0, 776.5150 / 1000.0, 849.9863 / 1000.0,}; - double[] P_bar = new double[] {43.991, 1, 1, 1, 10, 10, 10, 10, 100, 100, 100, 100}; - double[] T_C = - new double[] {330.54 - 273.15, 0, 15, 30, 100, 0, 15, 30, 100, 0, 15, 30, 100}; + double[] P_bar = new double[] {43.991, 1, 1, 1, 10, 10, 10, 10, 100, 100, 100, 100}; + double[] T_C = new double[] {330.54 - 273.15, 0, 15, 30, 100, 0, 15, 30, 100, 0, 15, 30, 100}; - double[] enthalpy = new double[P_bar.length]; - double[] entropy = new double[P_bar.length]; + double[] enthalpy = new double[P_bar.length]; + double[] entropy = new double[P_bar.length]; - double[] errH = new double[P_bar.length]; - double[] errS = new double[P_bar.length]; - SystemInterface fluid1 = new SystemSrkEos(298.0, 10.0); - fluid1.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(8); - for (int i = 0; i < components.length; i++) { - if (components[i].startsWith("C") && !components[i].startsWith("CO2")) { - fluid1.addTBPfraction(components[i], fractions1[i], molarmass[i], density[i]); - } else { - fluid1.addComponent(components[i], fractions1[i]); - } - } - fluid1.setHeavyTBPfractionAsPlusFraction(); - fluid1.getCharacterization().characterisePlusFraction(); + double[] errH = new double[P_bar.length]; + double[] errS = new double[P_bar.length]; + SystemInterface fluid1 = new SystemSrkEos(298.0, 10.0); + fluid1.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(8); + for (int i = 0; i < components.length; i++) { + if (components[i].startsWith("C") && !components[i].startsWith("CO2")) { + fluid1.addTBPfraction(components[i], fractions1[i], molarmass[i], density[i]); + } else { + fluid1.addComponent(components[i], fractions1[i]); + } + } + fluid1.setHeavyTBPfractionAsPlusFraction(); + fluid1.getCharacterization().characterisePlusFraction(); - fluid1.createDatabase(true); - fluid1.setMixingRule(2); - fluid1.setMultiPhaseCheck(true); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(fluid1); - for (int i = 0; i < P_bar.length; i++) { - fluid1.setTemperature(T_C[i] + 273.15); - fluid1.setPressure(P_bar[i]); - thermoOps.TPflash(); - fluid1.init(2); - fluid1.initPhysicalProperties(); - enthalpy[i] = fluid1.getEnthalpy(); - entropy[i] = fluid1.getEntropy(); - System.out.println("enthalpy " + enthalpy[i]); - fluid1.display(); - } - /* - * for (int i = 0; i < P_bar.length; i++) { fluid1.setPressure(P_bar[i]); - * thermoOps.PHflash(enthalpy[i]); errH[i] = fluid1.getTemperature() - T_C[i] - 273.15; - * System.out.println("err " + errH[i]); //assertTrue(Math.abs(errH[i]) < 1e-2); } - */ + fluid1.createDatabase(true); + fluid1.setMixingRule(2); + fluid1.setMultiPhaseCheck(true); + ThermodynamicOperations thermoOps = new ThermodynamicOperations(fluid1); + for (int i = 0; i < P_bar.length; i++) { + fluid1.setTemperature(T_C[i] + 273.15); + fluid1.setPressure(P_bar[i]); + thermoOps.TPflash(); + fluid1.init(2); + fluid1.initPhysicalProperties(); + enthalpy[i] = fluid1.getEnthalpy(); + entropy[i] = fluid1.getEntropy(); + logger.debug("enthalpy " + enthalpy[i]); + fluid1.display(); } + /* + * for (int i = 0; i < P_bar.length; i++) { fluid1.setPressure(P_bar[i]); + * thermoOps.PHflash(enthalpy[i]); errH[i] = fluid1.getTemperature() - T_C[i] - 273.15; + * System.out.println("err " + errH[i]); //assertTrue(Math.abs(errH[i]) < 1e-2); } + */ + } } diff --git a/src/test/java/neqsim/thermo/util/example/TPflashMembrane.java b/src/test/java/neqsim/thermo/util/example/TPflashMembrane.java index 708e56d8f9..4696a02b50 100644 --- a/src/test/java/neqsim/thermo/util/example/TPflashMembrane.java +++ b/src/test/java/neqsim/thermo/util/example/TPflashMembrane.java @@ -2,6 +2,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -16,45 +18,46 @@ * @since 2.2.3 */ public class TPflashMembrane { - static Logger logger = LogManager.getLogger(TPflashMembrane.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem2 = - // util.serialization.SerializationManager.open("c:/test.fluid"); - // testSystem2.display(); - SystemInterface testSystem = new SystemSrkEos(298, 1.01325); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - testSystem.addComponent("CO2", 10.0); - testSystem.addComponent("propane", 100.0, 0); - testSystem.addComponent("propane", 100.0, 1); - - testSystem.createDatabase(true); - // 1- orginal no interaction 2- classic w interaction - // 3- Huron-Vidal 4- Wong-Sandler - testSystem.setMixingRule(2); - - testSystem.init_x_y(); - testSystem.getPhase(0).setPressure(30.0); - testSystem.getPhase(1).setPressure(2.0); - testSystem.setPhaseType("all", 1); - testSystem.allowPhaseShift(false); - - try { - String[] comps = {"CO2"}; - testOps.dTPflash(comps); - // testOps.TPflash(); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + static Logger logger = LogManager.getLogger(TPflashMembrane.class); + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem2 = + // util.serialization.SerializationManager.open("c:/test.fluid"); + // testSystem2.display(); + SystemInterface testSystem = + new SystemSrkEos(298, ThermodynamicConstantsInterface.referencePressure); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + + testSystem.addComponent("CO2", 10.0); + testSystem.addComponent("propane", 100.0, 0); + testSystem.addComponent("propane", 100.0, 1); + + testSystem.createDatabase(true); + // 1- orginal no interaction 2- classic w interaction + // 3- Huron-Vidal 4- Wong-Sandler + testSystem.setMixingRule(2); + + testSystem.init_x_y(); + testSystem.getPhase(0).setPressure(30.0); + testSystem.getPhase(1).setPressure(2.0); + testSystem.setAllPhaseType(PhaseType.byValue(1)); + testSystem.allowPhaseShift(false); + + try { + String[] comps = {"CO2"}; + testOps.dTPflash(comps); + // testOps.TPflash(); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermo/util/example/TPflashMethanolWaterPropane.java b/src/test/java/neqsim/thermo/util/example/TPflashMethanolWaterPropane.java index a767f37f95..04da438fc9 100644 --- a/src/test/java/neqsim/thermo/util/example/TPflashMethanolWaterPropane.java +++ b/src/test/java/neqsim/thermo/util/example/TPflashMethanolWaterPropane.java @@ -16,35 +16,36 @@ * @since 2.2.3 */ public class TPflashMethanolWaterPropane { - static Logger logger = LogManager.getLogger(TPflashMethanolWaterPropane.class); + static Logger logger = LogManager.getLogger(TPflashMethanolWaterPropane.class); - /** - *

main.

+ /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkCPA(300, 10.01325); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /* + * testSystem.addComponent("methane", 150.0e-2); testSystem.addComponent("propane", 150.0e-3); + * testSystem.addComponent("methanol", 0.5); testSystem.addComponent("water", 0.5); * - * @param args an array of {@link java.lang.String} objects + * testSystem.createDatabase(true); testSystem.setMixingRule(10); + * testSystem.setMultiPhaseCheck(true); */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPA(300, 10.01325); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - /* - * testSystem.addComponent("methane", 150.0e-2); testSystem.addComponent("propane", - * 150.0e-3); testSystem.addComponent("methanol", 0.5); testSystem.addComponent("water", - * 0.5); - * - * testSystem.createDatabase(true); testSystem.setMixingRule(10); - * testSystem.setMultiPhaseCheck(true); - */ - testSystem = testSystem.readObject(100); - testOps = new ThermodynamicOperations(testSystem); - testSystem.init(0); - try { - testOps.TPflash(); - // testOps.bubblePointPressureFlash(false); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } - // testSystem.saveFluid(3019); + testSystem = testSystem.readObject(100); + testOps = new ThermodynamicOperations(testSystem); + testSystem.init(0); + try { + testOps.TPflash(); + // testOps.bubblePointPressureFlash(false); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + // testSystem.saveFluid(3019); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TPflashTestPablo.java b/src/test/java/neqsim/thermo/util/example/TPflashTestPablo.java index 53621f651c..22bf856432 100644 --- a/src/test/java/neqsim/thermo/util/example/TPflashTestPablo.java +++ b/src/test/java/neqsim/thermo/util/example/TPflashTestPablo.java @@ -14,72 +14,74 @@ * @since 2.2.3 */ public class TPflashTestPablo { - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface fluid = new SystemSrkCPAstatoil(273.15 + 35.0, 90.0); - fluid.addComponent("water", 0.0078); - fluid.addComponent("MEG", 0.0042); - fluid.addComponent("nitrogen", 2.205); - fluid.addComponent("CO2", 6.078); - fluid.addComponent("methane", 81.479); - fluid.addComponent("ethane", 4.455); - fluid.addComponent("propane", 1.967); - fluid.addTBPfraction("C6", 0.244, 85.2 / 1000, .6671); - fluid.addTBPfraction("C7", 0.316, 91.9 / 1000, .7432); - fluid.addTBPfraction("C8", 0.288, 104.8 / 1000, .7665); - fluid.addTBPfraction("C9", 0.150, 120.1 / 1000, .7779); - fluid.addTBPfraction("C10", 0.068, 133.5 / 1000, .7861); - fluid.addTBPfraction("C11", 0.050, 147.0 / 1000, .7924); - fluid.addTBPfraction("C12", 0.042, 159.9 / 1000, .8016); - fluid.addTBPfraction("C13", 0.032, 173.9 / 1000, .8114); - fluid.addTBPfraction("C14", 0.022, 188.9 / 1000, .8198); - fluid.addTBPfraction("C15", 0.017, 203.8 / 1000, .8264); - fluid.addTBPfraction("C16", 0.011, 217.4 / 1000, .8331); - fluid.addTBPfraction("C17", 0.030, 269.9 / 1000, .8523); - fluid.addTBPfraction("C18", 0.008, 299.5 / 1000, .8577); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface fluid = new SystemSrkCPAstatoil(273.15 + 35.0, 90.0); + fluid.addComponent("water", 0.0078); + fluid.addComponent("MEG", 0.0042); + fluid.addComponent("nitrogen", 2.205); + fluid.addComponent("CO2", 6.078); + fluid.addComponent("methane", 81.479); + fluid.addComponent("ethane", 4.455); + fluid.addComponent("propane", 1.967); + fluid.addTBPfraction("C6", 0.244, 85.2 / 1000, .6671); + fluid.addTBPfraction("C7", 0.316, 91.9 / 1000, .7432); + fluid.addTBPfraction("C8", 0.288, 104.8 / 1000, .7665); + fluid.addTBPfraction("C9", 0.150, 120.1 / 1000, .7779); + fluid.addTBPfraction("C10", 0.068, 133.5 / 1000, .7861); + fluid.addTBPfraction("C11", 0.050, 147.0 / 1000, .7924); + fluid.addTBPfraction("C12", 0.042, 159.9 / 1000, .8016); + fluid.addTBPfraction("C13", 0.032, 173.9 / 1000, .8114); + fluid.addTBPfraction("C14", 0.022, 188.9 / 1000, .8198); + fluid.addTBPfraction("C15", 0.017, 203.8 / 1000, .8264); + fluid.addTBPfraction("C16", 0.011, 217.4 / 1000, .8331); + fluid.addTBPfraction("C17", 0.030, 269.9 / 1000, .8523); + fluid.addTBPfraction("C18", 0.008, 299.5 / 1000, .8577); - fluid.createDatabase(true); - fluid.setMixingRule(10); - fluid.setMultiPhaseCheck(true); - ThermodynamicOperations testOps = new ThermodynamicOperations(fluid); - try { - testOps.TPflash(); - fluid.display(); - } catch (Exception e) { - } + fluid.createDatabase(true); + fluid.setMixingRule(10); + fluid.setMultiPhaseCheck(true); + ThermodynamicOperations testOps = new ThermodynamicOperations(fluid); + try { + testOps.TPflash(); + fluid.display(); + } catch (Exception ex) { + } - SystemInterface oilstream = fluid.phaseToSystem("aqueous"); - oilstream.setTotalFlowRate(0.013 * 1 * oilstream.getDensity(), "kg/hr"); + SystemInterface oilstream = fluid.phaseToSystem("aqueous"); + oilstream.setTotalFlowRate(0.013 * 1 * oilstream.getDensity(), "kg/hr"); - ThermodynamicOperations testOps3 = new ThermodynamicOperations(oilstream); - try { - testOps3.TPflash(); - oilstream.display(); - } catch (Exception e) { - } + ThermodynamicOperations testOps3 = new ThermodynamicOperations(oilstream); + try { + testOps3.TPflash(); + oilstream.display(); + } catch (Exception ex) { + } - SystemInterface newstream = fluid.phaseToSystem("gas"); - newstream.setTotalFlowRate(1.0, "MSm^3/hr"); - newstream.setTemperature(35.1, "C"); - ThermodynamicOperations testOps4 = new ThermodynamicOperations(newstream); - try { - testOps4.TPflash(); - newstream.display(); - } catch (Exception e) { - } + SystemInterface newstream = fluid.phaseToSystem("gas"); + newstream.setTotalFlowRate(1.0, "MSm^3/hr"); + newstream.setTemperature(35.1, "C"); + ThermodynamicOperations testOps4 = new ThermodynamicOperations(newstream); + try { + testOps4.TPflash(); + newstream.display(); + } catch (Exception ex) { + } - newstream.addFluid(oilstream); - newstream.init(0); - ThermodynamicOperations testOps2 = new ThermodynamicOperations(newstream); + newstream.addFluid(oilstream); + newstream.init(0); + ThermodynamicOperations testOps2 = new ThermodynamicOperations(newstream); - try { - testOps2.TPflash(); - newstream.display(); - } catch (Exception e) { - } + try { + testOps2.TPflash(); + newstream.display(); + } catch (Exception ex) { } + } } diff --git a/src/test/java/neqsim/thermo/util/example/TVPexample.java b/src/test/java/neqsim/thermo/util/example/TVPexample.java index 9e44d3c141..ed92f1db91 100644 --- a/src/test/java/neqsim/thermo/util/example/TVPexample.java +++ b/src/test/java/neqsim/thermo/util/example/TVPexample.java @@ -7,45 +7,49 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TVPexample class.

+ *

+ * TVPexample class. + *

* * @author MLLU * @version $Id: $Id * @since 2.2.3 */ public class TVPexample { - static Logger logger = LogManager.getLogger(TVPexample.class); + static Logger logger = LogManager.getLogger(TVPexample.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(275.15 + 37.7778, 1.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 0.1); - testSystem.addComponent("ethane", 0.2); - testSystem.addComponent("propane", 0.3); - testSystem.addComponent("i-butane", 0.3); - testSystem.addComponent("n-butane", 0.1); - testSystem.addComponent("i-pentane", 0.1); - testSystem.addComponent("n-pentane", 100.0); - testSystem.addComponent("n-hexane", 100.0); - testSystem.addComponent("n-heptane", 100.0); - testSystem.addComponent("n-octane", 100.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(275.15 + 37.7778, 1.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 0.1); + testSystem.addComponent("ethane", 0.2); + testSystem.addComponent("propane", 0.3); + testSystem.addComponent("i-butane", 0.3); + testSystem.addComponent("n-butane", 0.1); + testSystem.addComponent("i-pentane", 0.1); + testSystem.addComponent("n-pentane", 100.0); + testSystem.addComponent("n-hexane", 100.0); + testSystem.addComponent("n-heptane", 100.0); + testSystem.addComponent("n-octane", 100.0); - testSystem.createDatabase(true); - // testSystem.setMixingRule(10); + testSystem.createDatabase(true); + // testSystem.setMixingRule(10); - testOps.TPflash(); - testSystem.display(); + testOps.TPflash(); + testSystem.display(); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error("Exception thrown in bubble point flash"); - } - testSystem.display(); + try { + testOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error("Exception thrown in bubble point flash"); } + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestCSPsrk.java b/src/test/java/neqsim/thermo/util/example/TestCSPsrk.java index 27ad14adda..e7021306e6 100644 --- a/src/test/java/neqsim/thermo/util/example/TestCSPsrk.java +++ b/src/test/java/neqsim/thermo/util/example/TestCSPsrk.java @@ -16,48 +16,50 @@ * @since 2.2.3 */ public class TestCSPsrk { - static Logger logger = LogManager.getLogger(TestCSPsrk.class); + static Logger logger = LogManager.getLogger(TestCSPsrk.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemCSPsrkEos(158, 5.662); - // SystemInterface testSystem = new SystemSrkEos(110.0, 1.262); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemCSPsrkEos(158, 5.662); + // SystemInterface testSystem = new SystemSrkEos(110.0, 1.262); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("nitrogen", 1.17); - testSystem.addComponent("methane", 94.14); - testSystem.addComponent("ethane", 5.33); - testSystem.addComponent("propane", 1.1); - // testSystem.addComponent("n-butane", 0.41); - // testSystem.addComponent("n-pentane", 0.6); - // testSystem.addComponent("n-hexane", 0.6); - // testSystem.addComponent("n-heptane", 0.24); - // testSystem.addComponent("n-octane", 0.14); - // testSystem.addComponent("CO2", 1.06); + testSystem.addComponent("nitrogen", 1.17); + testSystem.addComponent("methane", 94.14); + testSystem.addComponent("ethane", 5.33); + testSystem.addComponent("propane", 1.1); + // testSystem.addComponent("n-butane", 0.41); + // testSystem.addComponent("n-pentane", 0.6); + // testSystem.addComponent("n-hexane", 0.6); + // testSystem.addComponent("n-heptane", 0.24); + // testSystem.addComponent("n-octane", 0.14); + // testSystem.addComponent("CO2", 1.06); - // testSystem.setTemperature(120); - // testSystem.setPressure(4.43); - // testSystem.addComponent("nitrogen", 4.25); - // testSystem.addComponent("methane", 81.3); - // testSystem.addComponent("ethane", 4.75); - // testSystem.addComponent("propane", 4.87); - // testSystem.addComponent("i-butane", 2.41); - // testSystem.addComponent("n-butane", 2.42); + // testSystem.setTemperature(120); + // testSystem.setPressure(4.43); + // testSystem.addComponent("nitrogen", 4.25); + // testSystem.addComponent("methane", 81.3); + // testSystem.addComponent("ethane", 4.75); + // testSystem.addComponent("propane", 4.87); + // testSystem.addComponent("i-butane", 2.41); + // testSystem.addComponent("n-butane", 2.42); - // testSystem.createDatabase(true); - testSystem.setMixingRule(2); + // testSystem.createDatabase(true); + testSystem.setMixingRule(2); - try { - // testOps.TPflash(); - testOps.bubblePointPressureFlash(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); - logger.info(testSystem.getTemperature() - 273.15); + try { + // testOps.TPflash(); + testOps.bubblePointPressureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + logger.info(testSystem.getTemperature() - 273.15); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestCharacterizationCPA.java b/src/test/java/neqsim/thermo/util/example/TestCharacterizationCPA.java index 8b9a0242b3..349a7a63ef 100644 --- a/src/test/java/neqsim/thermo/util/example/TestCharacterizationCPA.java +++ b/src/test/java/neqsim/thermo/util/example/TestCharacterizationCPA.java @@ -16,114 +16,116 @@ * @since 2.2.3 */ public class TestCharacterizationCPA { - static Logger logger = LogManager.getLogger(TestCharacterizationCPA.class); + static Logger logger = LogManager.getLogger(TestCharacterizationCPA.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 20.0, 31.0); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(273.15+20.0, - // 31.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("nitrogen", 0.372); - testSystem.addComponent("CO2", 3.344); - testSystem.addComponent("H2S", 3.344); - testSystem.addComponent("methane", 82.224); - testSystem.addComponent("ethane", 6.812); - testSystem.addComponent("propane", 2.771); - testSystem.addComponent("i-butane", 0.434); - testSystem.addComponent("n-butane", 0.9); - testSystem.addComponent("22-dim-C3", 0.9); - testSystem.addComponent("i-pentane", 0.303); - testSystem.addComponent("n-pentane", 0.356); - testSystem.addComponent("n-hexane", 0.356); - testSystem.addComponent("n-heptane", 0.356); - testSystem.addComponent("n-octane", 0.356); - testSystem.addComponent("n-nonane", 0.356); - testSystem.addComponent("nC10", 0.356); - testSystem.addComponent("nC12", 0.356); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 20.0, 31.0); + // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(273.15+20.0, + // 31.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("nitrogen", 0.372); + testSystem.addComponent("CO2", 3.344); + testSystem.addComponent("H2S", 3.344); + testSystem.addComponent("methane", 82.224); + testSystem.addComponent("ethane", 6.812); + testSystem.addComponent("propane", 2.771); + testSystem.addComponent("i-butane", 0.434); + testSystem.addComponent("n-butane", 0.9); + testSystem.addComponent("22-dim-C3", 0.9); + testSystem.addComponent("i-pentane", 0.303); + testSystem.addComponent("n-pentane", 0.356); + testSystem.addComponent("n-hexane", 0.356); + testSystem.addComponent("n-heptane", 0.356); + testSystem.addComponent("n-octane", 0.356); + testSystem.addComponent("n-nonane", 0.356); + testSystem.addComponent("nC10", 0.356); + testSystem.addComponent("nC12", 0.356); - testSystem.addTBPfraction("ST_C13-C14", 0.428, 181.977005004883 / 1000.0, 0.830299988); - testSystem.addTBPfraction("ST_C16", 0.626, 222.000000000000 / 1000.0, 0.849); - testSystem.addTBPfraction("ST_C17-C19", 0.609, 253.000000000000 / 1000.0, 0.853299988); - testSystem.addTBPfraction("ST_C21", 0.309, 291.000000000000 / 1000.0, 0.868); - testSystem.addTBPfraction("ST_C24", 0.254, 331.000000000000 / 1000.0, 0.881); - testSystem.addTBPfraction("ST_C28", 0.137, 388.000000000000 / 1000.0, 0.897); - testSystem.addTBPfraction("ST_C38", 0.067, 528.000000000000 / 1000.0, 0.927); + testSystem.addTBPfraction("ST_C13-C14", 0.428, 181.977005004883 / 1000.0, 0.830299988); + testSystem.addTBPfraction("ST_C16", 0.626, 222.000000000000 / 1000.0, 0.849); + testSystem.addTBPfraction("ST_C17-C19", 0.609, 253.000000000000 / 1000.0, 0.853299988); + testSystem.addTBPfraction("ST_C21", 0.309, 291.000000000000 / 1000.0, 0.868); + testSystem.addTBPfraction("ST_C24", 0.254, 331.000000000000 / 1000.0, 0.881); + testSystem.addTBPfraction("ST_C28", 0.137, 388.000000000000 / 1000.0, 0.897); + testSystem.addTBPfraction("ST_C38", 0.067, 528.000000000000 / 1000.0, 0.927); - testSystem.addTBPfraction("LP_C17", 0.03, 238.779998779297 / 1000.0, 0.84325); - testSystem.addTBPfraction("LP_C24", 0.017, 327.040008544922 / 1000.0, 0.879969971); - testSystem.addTBPfraction("LP_C32", 0.005, 440.910003662109 / 1000.0, 0.914400024); - testSystem.addTBPfraction("LP_C48", 0.005, 665.849975585938 / 1000.0, 0.962919983); + testSystem.addTBPfraction("LP_C17", 0.03, 238.779998779297 / 1000.0, 0.84325); + testSystem.addTBPfraction("LP_C24", 0.017, 327.040008544922 / 1000.0, 0.879969971); + testSystem.addTBPfraction("LP_C32", 0.005, 440.910003662109 / 1000.0, 0.914400024); + testSystem.addTBPfraction("LP_C48", 0.005, 665.849975585938 / 1000.0, 0.962919983); - testSystem.addTBPfraction("C6", 0.428, 86.178 / 1000.0, 0.664); - testSystem.addTBPfraction("C7", 0.626, 96.00 / 1000.0, 0.738); - testSystem.addTBPfraction("C8", 0.609, 107.000000000000 / 1000.0, 0.765); - testSystem.addTBPfraction("C9", 0.309, 121.000000000000 / 1000.0, 0.781); - testSystem.addTBPfraction("C12", 0.137, 161.000000000000 / 1000.0, 0.804900024); + testSystem.addTBPfraction("C6", 0.428, 86.178 / 1000.0, 0.664); + testSystem.addTBPfraction("C7", 0.626, 96.00 / 1000.0, 0.738); + testSystem.addTBPfraction("C8", 0.609, 107.000000000000 / 1000.0, 0.765); + testSystem.addTBPfraction("C9", 0.309, 121.000000000000 / 1000.0, 0.781); + testSystem.addTBPfraction("C12", 0.137, 161.000000000000 / 1000.0, 0.804900024); - testSystem.addTBPfraction("C10-C11", 0.03, 140.089996337891 / 1000.0, 0.793599976); - testSystem.addTBPfraction("C13-C14", 0.428, 182.026000976563 / 1000.0, 0.814599976); - testSystem.addTBPfraction("C15-C16", 0.626, 213.494995117188 / 1000.0, 0.826099976); - testSystem.addTBPfraction("C17-C18", 0.609, 243.557998657227 / 1000.0, 0.836200012); - testSystem.addTBPfraction("C19-C21", 0.309, 275.160003662109 / 1000.0, 0.847099976); - testSystem.addTBPfraction("C22-C24", 0.254, 316.907012939453 / 1000.0, 0.858799988); - testSystem.addTBPfraction("C25-C31", 0.137, 380.630004882813 / 1000.0, 0.874099976); - testSystem.addTBPfraction("C32-C80", 0.067, 546.447998046875 / 1000.0, 0.904799988); + testSystem.addTBPfraction("C10-C11", 0.03, 140.089996337891 / 1000.0, 0.793599976); + testSystem.addTBPfraction("C13-C14", 0.428, 182.026000976563 / 1000.0, 0.814599976); + testSystem.addTBPfraction("C15-C16", 0.626, 213.494995117188 / 1000.0, 0.826099976); + testSystem.addTBPfraction("C17-C18", 0.609, 243.557998657227 / 1000.0, 0.836200012); + testSystem.addTBPfraction("C19-C21", 0.309, 275.160003662109 / 1000.0, 0.847099976); + testSystem.addTBPfraction("C22-C24", 0.254, 316.907012939453 / 1000.0, 0.858799988); + testSystem.addTBPfraction("C25-C31", 0.137, 380.630004882813 / 1000.0, 0.874099976); + testSystem.addTBPfraction("C32-C80", 0.067, 546.447998046875 / 1000.0, 0.904799988); - testSystem.addTBPfraction("Undecanes", 0.017, 147 / 1000.0, 0.793); - testSystem.addTBPfraction("Dodecanes", 0.005, 161 / 1000.0, 0.804); - testSystem.addTBPfraction("Tridecanes", 0.428, 175 / 1000.0, 0.815); - testSystem.addTBPfraction("Tetradecanes", 0.626, 190 / 1000.0, 0.826); - testSystem.addTBPfraction("Pentadecanes", 0.609, 206 / 1000.0, 0.836); - testSystem.addTBPfraction("Hexadecanes", 0.309, 222 / 1000.0, 0.843); - testSystem.addTBPfraction("Heptadecanes", 0.254, 237 / 1000.0, 0.851); - testSystem.addTBPfraction("Octadecanes", 0.137, 251 / 1000.0, 0.856); - testSystem.addTBPfraction("Nonadecanes", 0.067, 263 / 1000.0, 0.861); - testSystem.addTBPfraction("Eicosanes", 0.03, 275 / 1000.0, 0.866); + testSystem.addTBPfraction("Undecanes", 0.017, 147 / 1000.0, 0.793); + testSystem.addTBPfraction("Dodecanes", 0.005, 161 / 1000.0, 0.804); + testSystem.addTBPfraction("Tridecanes", 0.428, 175 / 1000.0, 0.815); + testSystem.addTBPfraction("Tetradecanes", 0.626, 190 / 1000.0, 0.826); + testSystem.addTBPfraction("Pentadecanes", 0.609, 206 / 1000.0, 0.836); + testSystem.addTBPfraction("Hexadecanes", 0.309, 222 / 1000.0, 0.843); + testSystem.addTBPfraction("Heptadecanes", 0.254, 237 / 1000.0, 0.851); + testSystem.addTBPfraction("Octadecanes", 0.137, 251 / 1000.0, 0.856); + testSystem.addTBPfraction("Nonadecanes", 0.067, 263 / 1000.0, 0.861); + testSystem.addTBPfraction("Eicosanes", 0.03, 275 / 1000.0, 0.866); - testSystem.addTBPfraction("C21", 0.017, 291 / 1000.0, 0.871); - testSystem.addTBPfraction("C22", 0.017, 300 / 1000.0, 0.876); - testSystem.addTBPfraction("C23", 0.017, 312 / 1000.0, 0.881); - testSystem.addTBPfraction("C24", 0.017, 324 / 1000.0, 0.885); + testSystem.addTBPfraction("C21", 0.017, 291 / 1000.0, 0.871); + testSystem.addTBPfraction("C22", 0.017, 300 / 1000.0, 0.876); + testSystem.addTBPfraction("C23", 0.017, 312 / 1000.0, 0.881); + testSystem.addTBPfraction("C24", 0.017, 324 / 1000.0, 0.885); - testSystem.addTBPfraction("C25", 0.017, 337 / 1000.0, 0.888); - testSystem.addTBPfraction("C26", 0.017, 349 / 1000.0, 0.892); - testSystem.addTBPfraction("C27", 0.017, 360 / 1000.0, 0.896); - testSystem.addTBPfraction("C28", 0.017, 372 / 1000.0, 0.899); - testSystem.addTBPfraction("C29", 0.017, 382 / 1000.0, 0.902); - testSystem.addTBPfraction("C30", 0.017, 394 / 1000.0, 0.905); - testSystem.addTBPfraction("C31", 0.017, 404 / 1000.0, 0.909); - testSystem.addTBPfraction("C32", 0.017, 415 / 1000.0, 0.912); - testSystem.addTBPfraction("C33", 0.017, 426 / 1000.0, 0.915); - testSystem.addTBPfraction("C34", 0.017, 437 / 1000.0, 0.917); - testSystem.addTBPfraction("C35", 0.017, 445 / 1000.0, 0.92); - testSystem.addTBPfraction("C36+", 0.017, 600 / 1000.0, 0.95); + testSystem.addTBPfraction("C25", 0.017, 337 / 1000.0, 0.888); + testSystem.addTBPfraction("C26", 0.017, 349 / 1000.0, 0.892); + testSystem.addTBPfraction("C27", 0.017, 360 / 1000.0, 0.896); + testSystem.addTBPfraction("C28", 0.017, 372 / 1000.0, 0.899); + testSystem.addTBPfraction("C29", 0.017, 382 / 1000.0, 0.902); + testSystem.addTBPfraction("C30", 0.017, 394 / 1000.0, 0.905); + testSystem.addTBPfraction("C31", 0.017, 404 / 1000.0, 0.909); + testSystem.addTBPfraction("C32", 0.017, 415 / 1000.0, 0.912); + testSystem.addTBPfraction("C33", 0.017, 426 / 1000.0, 0.915); + testSystem.addTBPfraction("C34", 0.017, 437 / 1000.0, 0.917); + testSystem.addTBPfraction("C35", 0.017, 445 / 1000.0, 0.92); + testSystem.addTBPfraction("C36+", 0.017, 600 / 1000.0, 0.95); - // testSystem.addTBPfraction("water", 10.005, 303.531/1000.0, 0.8551); - testSystem.addComponent("water", 0.303); - // testSystem.addComponent("MEG", 1.0e-10); - testSystem.addComponent("TEG", 1.0e-10); - testSystem.setMultiPhaseCheck(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); + // testSystem.addTBPfraction("water", 10.005, 303.531/1000.0, 0.8551); + testSystem.addComponent("water", 0.303); + // testSystem.addComponent("MEG", 1.0e-10); + testSystem.addComponent("TEG", 1.0e-10); + testSystem.setMultiPhaseCheck(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); - try { - testOps.TPflash(); - // testOps.calcPTphaseEnvelope(false); - // testOps.displayResult(); - // testOps.bubblePointPressureFlash(false); - // testOps.dewPointPressureFlash(); - } catch (Exception e) { - logger.error(e.toString()); - } + try { + testOps.TPflash(); + // testOps.calcPTphaseEnvelope(false); + // testOps.displayResult(); + // testOps.bubblePointPressureFlash(false); + // testOps.dewPointPressureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } - // testSystem.saveObject(96); - // testSystem.saveFluid(1947); + // testSystem.saveObject(96); + // testSystem.saveFluid(1947); - testSystem.display(); - } + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestCharacterizationCondensate.java b/src/test/java/neqsim/thermo/util/example/TestCharacterizationCondensate.java index b5cee1661a..654c1104f8 100644 --- a/src/test/java/neqsim/thermo/util/example/TestCharacterizationCondensate.java +++ b/src/test/java/neqsim/thermo/util/example/TestCharacterizationCondensate.java @@ -16,104 +16,107 @@ * @since 2.2.3 */ public class TestCharacterizationCondensate { - static Logger logger = LogManager.getLogger(TestCharacterizationCondensate.class); + static Logger logger = LogManager.getLogger(TestCharacterizationCondensate.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 25.0, 50.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 25.0, 50.0); - testSystem.setFluidName("AsgardB"); + testSystem.setFluidName("AsgardB"); - // testSystem.getCharacterization().setTBPModel("PedersenSRKHeavyOil");//(RiaziDaubert - // PedersenPR PedersenSRK - // testSystem.getCharacterization().setPlusFractionModel("heavyOil"); - // testSystem.getCharacterization().setLumpingModel("PVTlumpingModel"); - // //"abLumping"; - testSystem.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(12); - // testSystem.addComponent("water", 0.5); - // testSystem.addComponent("TEG", 0.5); - testSystem.addComponent("nitrogen", 0.002); - testSystem.addComponent("CO2", 0.005); - testSystem.addComponent("methane", 0.4); - testSystem.addComponent("ethane", 0.03); - testSystem.addComponent("propane", 0.01); - testSystem.addComponent("n-butane", 0.002); - testSystem.addComponent("i-butane", 0.006); - testSystem.addComponent("n-pentane", 0.004); - testSystem.addComponent("i-pentane", 0.005); + // testSystem.getCharacterization().setTBPModel("PedersenSRKHeavyOil"); //(RiaziDaubert + // PedersenPR PedersenSRK + // testSystem.getCharacterization().setPlusFractionModel("heavyOil"); + // testSystem.getCharacterization().setLumpingModel("PVTlumpingModel"); + // //"abLumping"; + testSystem.getCharacterization().getLumpingModel().setNumberOfPseudoComponents(12); + // testSystem.addComponent("water", 0.5); + // testSystem.addComponent("TEG", 0.5); + testSystem.addComponent("nitrogen", 0.002); + testSystem.addComponent("CO2", 0.005); + testSystem.addComponent("methane", 0.4); + testSystem.addComponent("ethane", 0.03); + testSystem.addComponent("propane", 0.01); + testSystem.addComponent("n-butane", 0.002); + testSystem.addComponent("i-butane", 0.006); + testSystem.addComponent("n-pentane", 0.004); + testSystem.addComponent("i-pentane", 0.005); - testSystem.addTBPfraction("C6", 0.004, 85.0253 / 1000.0, 0.667229); - testSystem.addTBPfraction("C7", 0.001, 90.3717 / 1000.0, 0.7463691); - testSystem.addTBPfraction("C8", 0.001, 102.46950 / 1000.0, 0.7709114); - testSystem.addTBPfraction("C9", 0.001, 115.6 / 1000.0, 0.7901); - testSystem.addTBPfraction("C10", 0.001, 125.5046 / 1000.0, 0.80411014); + testSystem.addTBPfraction("C6", 0.004, 85.0253 / 1000.0, 0.667229); + testSystem.addTBPfraction("C7", 0.001, 90.3717 / 1000.0, 0.7463691); + testSystem.addTBPfraction("C8", 0.001, 102.46950 / 1000.0, 0.7709114); + testSystem.addTBPfraction("C9", 0.001, 115.6 / 1000.0, 0.7901); + testSystem.addTBPfraction("C10", 0.001, 125.5046 / 1000.0, 0.80411014); - testSystem.addTBPfraction("C11", 0.004, 135.0253 / 1000.0, 0.8167229); - testSystem.addTBPfraction("C12", 0.001, 145.3717 / 1000.0, 0.8263691); - testSystem.addTBPfraction("C13", 0.001, 158.46950 / 1000.0, 0.827709114); - testSystem.addTBPfraction("C14", 0.001, 168.6 / 1000.0, 0.827901); - testSystem.addTBPfraction("C15", 0.001, 172.5046 / 1000.0, 0.8311014); + testSystem.addTBPfraction("C11", 0.004, 135.0253 / 1000.0, 0.8167229); + testSystem.addTBPfraction("C12", 0.001, 145.3717 / 1000.0, 0.8263691); + testSystem.addTBPfraction("C13", 0.001, 158.46950 / 1000.0, 0.827709114); + testSystem.addTBPfraction("C14", 0.001, 168.6 / 1000.0, 0.827901); + testSystem.addTBPfraction("C15", 0.001, 172.5046 / 1000.0, 0.8311014); - testSystem.addTBPfraction("C16", 0.004, 190.0253 / 1000.0, 0.83667229); - testSystem.addTBPfraction("C17", 0.001, 211.3717 / 1000.0, 0.8363691); - testSystem.addTBPfraction("C18", 0.001, 220.46950 / 1000.0, 0.827709114); - testSystem.addTBPfraction("C19", 0.001, 245.6 / 1000.0, 0.8401); - testSystem.addTBPfraction("C20", 0.03, 391.5046 / 1000.0, 0.8617411014); + testSystem.addTBPfraction("C16", 0.004, 190.0253 / 1000.0, 0.83667229); + testSystem.addTBPfraction("C17", 0.001, 211.3717 / 1000.0, 0.8363691); + testSystem.addTBPfraction("C18", 0.001, 220.46950 / 1000.0, 0.827709114); + testSystem.addTBPfraction("C19", 0.001, 245.6 / 1000.0, 0.8401); + testSystem.addTBPfraction("C20", 0.03, 391.5046 / 1000.0, 0.8617411014); - // testSystem.addComponent("water", 10.87); - // testSystem.addPlusFraction("C11", 1.44, 231.0 / 1000, 0.87); - testSystem.setHeavyTBPfractionAsPlusFraction(); - testSystem.getCharacterization().characterisePlusFraction(); - // testSystem.setHydrateCheck(true); - testSystem.createDatabase(true); - logger.info("start benchmark TPflash......"); - long time = System.currentTimeMillis(); - testSystem.setMixingRule(2); - logger.info("Time taken for benchmark flash = " + (System.currentTimeMillis() - time)); - testSystem.setMultiPhaseCheck(true); - testSystem.setTotalFlowRate(1.0, "kg/sec"); - // testSystem.initPhysicalProperties(); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("water", 10.87); + // testSystem.addPlusFraction("C11", 1.44, 231.0 / 1000, 0.87); + testSystem.setHeavyTBPfractionAsPlusFraction(); + testSystem.getCharacterization().characterisePlusFraction(); + System.out.println("number of components " + testSystem.getNumberOfComponents()); + // testSystem.setHydrateCheck(true); + testSystem.createDatabase(true); + logger.info("start benchmark TPflash......"); + long time = System.currentTimeMillis(); + testSystem.setMixingRule(2); + logger.info("Time taken for benchmark flash = " + (System.currentTimeMillis() - time)); + testSystem.setMultiPhaseCheck(true); + testSystem.setTotalFlowRate(1.0, "kg/sec"); + // testSystem.initPhysicalProperties(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - // testOps.hydrateFormationTemperature(); - // testOps.dewPointTemperatureFlash(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); - - // double[] molaFrac = new double[]{0.01, 0.01, 0.6, 0.1, 0.02, 0.02, 0.01, - // 0.001, 0.002, 0.01, 0.001, 0.001,0.001, 0.4}; - // testSystem.setMolarCompositionPlus(molaFrac); - try { - testOps.TPflash(); - // testOps.hydrateFormationTemperature(); - // testOps.dewPointTemperatureFlash(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); - // System.out.println("number of lumped components " + - // testSystem.getCharacterization().getLumpingModel().getNumberOfLumpedComponents()); - // System.out.println("number of pseudo components " + - // testSystem.getCharacterization().getLumpingModel().getNumberOfPseudoComponents()); - // System.out.println("lumped component " + - // testSystem.getCharacterization().getLumpingModel().getLumpedComponentName(3)); + try { + testOps.TPflash(); + // testOps.hydrateFormationTemperature(); + // testOps.dewPointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + testSystem.display(); - /* - * System.out.println("molar mass " - * +testSystem.getPhase(0).getComponent("PC4_PC").getMolarMass() ); - * - * testSystem.setMolarCompositionOfPlusFluid(new double[]{0.02, 0.005, 0.4, 0.01, 0.01, - * 0.02, 0.02, 0.01 ,0.01, 0.01, 0.01 ,0.01, 0.01, 0.2 }); try { testOps.TPflash(); // - * testOps.hydrateFormationTemperature(); // testOps.dewPointTemperatureFlash(); } catch - * (Exception e) { logger.error(e.toString()); } testSystem.display(); - */ + // double[] molaFrac = new double[]{0.01, 0.01, 0.6, 0.1, 0.02, 0.02, 0.01, + // 0.001, 0.002, 0.01, 0.001, 0.001,0.001, 0.4}; + // testSystem.setMolarCompositionPlus(molaFrac); + try { + testOps.TPflash(); + // testOps.hydrateFormationTemperature(); + // testOps.dewPointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + // System.out.println("number of lumped components " + + // testSystem.getCharacterization().getLumpingModel().getNumberOfLumpedComponents()); + // System.out.println("number of pseudo components " + + // testSystem.getCharacterization().getLumpingModel().getNumberOfPseudoComponents()); + // System.out.println("lumped component " + + // testSystem.getCharacterization().getLumpingModel().getLumpedComponentName(3)); + + /* + * System.out.println("molar mass " + * +testSystem.getPhase(0).getComponent("PC4_PC").getMolarMass() ); + * + * testSystem.setMolarCompositionOfPlusFluid(new double[]{0.02, 0.005, 0.4, 0.01, 0.01, 0.02, + * 0.02, 0.01 ,0.01, 0.01, 0.01 ,0.01, 0.01, 0.2 }); try { testOps.TPflash(); // + * testOps.hydrateFormationTemperature(); // testOps.dewPointTemperatureFlash(); } catch + * (Exception ex) { logger.error(ex.toString()); } testSystem.display(); + */ + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestCharacterizationCondensate1.java b/src/test/java/neqsim/thermo/util/example/TestCharacterizationCondensate1.java index 98526d9b9c..3b15f51a6e 100644 --- a/src/test/java/neqsim/thermo/util/example/TestCharacterizationCondensate1.java +++ b/src/test/java/neqsim/thermo/util/example/TestCharacterizationCondensate1.java @@ -17,74 +17,74 @@ * @since 2.2.3 */ public class TestCharacterizationCondensate1 { - static Logger logger = LogManager.getLogger(TestCharacterizationCondensate1.class); + static Logger logger = LogManager.getLogger(TestCharacterizationCondensate1.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 30, 50); - // SystemInterface testSystem = new SystemSrkCPAs(293.65, 79.3); - testSystem.getCharacterization().setTBPModel("PedersenSRK");// (RiaziDaubert PedersenPR - // PedersenSRK - testSystem.getCharacterization().setPlusFractionModel("heavyOil"); - // testSystem.getCharacterization().setTBPModel("PedersenSRK");//(RiaziDaubert - // PedersenPR PedersenSRK + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 30, 50); + // SystemInterface testSystem = new SystemSrkCPAs(293.65, 79.3); + testSystem.getCharacterization().setTBPModel("PedersenSRK"); // (RiaziDaubert PedersenPR + // PedersenSRK + testSystem.getCharacterization().setPlusFractionModel("heavyOil"); + // testSystem.getCharacterization().setTBPModel("PedersenSRK"); //(RiaziDaubert + // PedersenPR PedersenSRK - // testSystem.addComponent("C20", 0.006, 430, 12, 0.9); //TC PC OMEGA - // Haklang - testSystem.addComponent("methane", 50); - // testSystem.addComponent("PC-C6", 0.13); - // testSystem.addComponent("PC-C7", 0.22); - // testSystem.addComponent("PC-C8", 0.213); - // testSystem.addComponent("PC-C9", 0.096); - // testSystem.addComponent("PC-C10", 0.04); - /* - * testSystem.addComponent("PC-C11", 0.031); testSystem.addComponent("PC-C12", 0.025); - * testSystem.addComponent("PC-C13", 0.02); testSystem.addComponent("PC-C14", 0.016); - * testSystem.addComponent("PC-C15-C16", 0.023); testSystem.addComponent("PC-C17-C18", - * 0.014); testSystem.addComponent("PC-C19-C22", 0.015); - * testSystem.addComponent("PC-C23-C58", 0.01); - */ - testSystem.addPlusFraction("C7", 5, 100.0 / 1000.0, 0.72); - testSystem.addPlusFraction("C8", 50, 200.0 / 1000.0, 0.82); - testSystem.addPlusFraction("C8", 34, 200.0 / 1000.0, 0.82); - // testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(12); - testSystem.getCharacterization().characterisePlusFraction(); - /* - * testSystem.getInterphaseProperties().setInterfacialTensionModel(0); - */ - testSystem.useVolumeCorrection(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("C20", 0.006, 430, 12, 0.9); //TC PC OMEGA + // Haklang + testSystem.addComponent("methane", 50); + // testSystem.addComponent("PC-C6", 0.13); + // testSystem.addComponent("PC-C7", 0.22); + // testSystem.addComponent("PC-C8", 0.213); + // testSystem.addComponent("PC-C9", 0.096); + // testSystem.addComponent("PC-C10", 0.04); + /* + * testSystem.addComponent("PC-C11", 0.031); testSystem.addComponent("PC-C12", 0.025); + * testSystem.addComponent("PC-C13", 0.02); testSystem.addComponent("PC-C14", 0.016); + * testSystem.addComponent("PC-C15-C16", 0.023); testSystem.addComponent("PC-C17-C18", 0.014); + * testSystem.addComponent("PC-C19-C22", 0.015); testSystem.addComponent("PC-C23-C58", 0.01); + */ + testSystem.addTBPfraction("C7", 5, 100.0 / 1000.0, 0.72); + testSystem.addPlusFraction("C8", 50, 230.0 / 1000.0, 0.84); + // testSystem.addPlusFraction("C8", 34, 200.0 / 1000.0, 0.82); + testSystem.getCharacterization().getLumpingModel().setNumberOfLumpedComponents(12); + testSystem.getCharacterization().characterisePlusFraction(); + /* + * testSystem.getInterphaseProperties().setInterfacialTensionModel(0); + */ + // System.out.println("number of components " + testSystem.getNumberOfComponents()); + testSystem.useVolumeCorrection(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + // System.out.println("number of components " + testSystem.getNumberOfComponents()); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - testSystem.display(); + try { + testOps.TPflash(); + testSystem.display(); - testSystem.resetCharacterisation(); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - testOps = new ThermodynamicOperations(testSystem); + testSystem.resetCharacterisation(); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - testSystem.display(); - // testOps.hydrateFormationTemperature(); - // testOps.dewPointTemperatureFlash(); - } catch (Exception e) { - logger.error(e.toString()); - } - System.out.println( - "activity coefficient " + testSystem.getPhase(1).getActivityCoefficient(1)); - testSystem.display(); - ((PhaseEosInterface) testSystem.getPhase(0)).displayInteractionCoefficients(""); - testSystem.getPhase(0).getComponent(1).getAcentricFactor(); + testOps.TPflash(); + testSystem.display(); + // testOps.hydrateFormationTemperature(); + // testOps.dewPointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + System.out.println("activity coefficient " + testSystem.getPhase(1).getActivityCoefficient(1)); + testSystem.display(); + ((PhaseEosInterface) testSystem.getPhase(0)).displayInteractionCoefficients(""); + testSystem.getPhase(0).getComponent(1).getAcentricFactor(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestElectrolyteCPAstatoil.java b/src/test/java/neqsim/thermo/util/example/TestElectrolyteCPAstatoil.java index 9fe23f9ab5..3cf29d1c43 100644 --- a/src/test/java/neqsim/thermo/util/example/TestElectrolyteCPAstatoil.java +++ b/src/test/java/neqsim/thermo/util/example/TestElectrolyteCPAstatoil.java @@ -16,56 +16,57 @@ * @since 2.2.3 */ public class TestElectrolyteCPAstatoil { - static Logger logger = LogManager.getLogger(TestElectrolyteCPAstatoil.class); + static Logger logger = LogManager.getLogger(TestElectrolyteCPAstatoil.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 4.0, 100); - // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 10.0, 3.0); - // SystemInterface testSystem = new - // SystemFurstElectrolyteEosMod2004(273.15+40.0, 33.0); - SystemInterface testSystem = new SystemElectrolyteCPAstatoil(273.15 + 40.0, 33.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 4.0, 100); + // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 10.0, 3.0); + // SystemInterface testSystem = new + // SystemFurstElectrolyteEosMod2004(273.15+40.0, 33.0); + SystemInterface testSystem = new SystemElectrolyteCPAstatoil(273.15 + 40.0, 33.0); - // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15+10.0, 3.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 111.0); - testSystem.addComponent("CO2", 119.0); - // testSystem.addComponent("H2S", 0.01001); - // testSystem.addComponent("nC10", 11.0); - testSystem.addComponent("water", 18.02 * 1000); - // testSystem.addComponent("MDEA", 0.01); - testSystem.addComponent("Na+", 40); - testSystem.addComponent("CL-", 40); - // testSystem.addComponent("OH-", 10.0e-3); + // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15+10.0, 3.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 111.0); + testSystem.addComponent("CO2", 119.0); + // testSystem.addComponent("H2S", 0.01001); + // testSystem.addComponent("nC10", 11.0); + testSystem.addComponent("water", 18.02 * 1000); + // testSystem.addComponent("MDEA", 0.01); + testSystem.addComponent("Na+", 40); + testSystem.addComponent("CL-", 40); + // testSystem.addComponent("OH-", 10.0e-3); - // testSystem.addComponent("Fe++", 3.0e-4); - // testSystem.addComponent("Ca++", 1.0e-4); - testSystem.chemicalReactionInit(); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - // testSystem.setMixingRule(4); - // testSystem.setHydrateCheck(true); - testSystem.setMultiPhaseCheck(true); - try { - // testOps.hydrateFormationTemperature(1); - testOps.TPflash(); - testSystem.display(); - // testOps.checkScalePotential(1); - } catch (Exception e) { - logger.error(e.toString()); - } - logger.info("pH" + testSystem.getPhase(1).getpH()); - // System.out.println("Mean ionic activity coefficient Na+Cl- " + - // testSystem.getPhase(1).getMeanIonicActivity(2, 3)); - // System.out.println("Osmotic coefficient " + - // testSystem.getPhase(1).getOsmoticCoefficientOfWater()); - logger.info( - "water activity coefficient " + testSystem.getPhase(1).getActivityCoefficient(1)); - logger.info("water activity coefficient " - + testSystem.getPhase(1).getActivityCoefficient(1, 2)); + // testSystem.addComponent("Fe++", 3.0e-4); + // testSystem.addComponent("Ca++", 1.0e-4); + testSystem.chemicalReactionInit(); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + // testSystem.setMixingRule(4); + // testSystem.setHydrateCheck(true); + testSystem.setMultiPhaseCheck(true); + try { + // testOps.hydrateFormationTemperature(1); + testOps.TPflash(); + testSystem.display(); + // testOps.checkScalePotential(1); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + logger.info("pH" + testSystem.getPhase(1).getpH()); + // System.out.println("Mean ionic activity coefficient Na+Cl- " + + // testSystem.getPhase(1).getMeanIonicActivity(2, 3)); + // System.out.println("Osmotic coefficient " + + // testSystem.getPhase(1).getOsmoticCoefficientOfWater()); + logger.info("water activity coefficient " + testSystem.getPhase(1).getActivityCoefficient(1)); + logger + .info("water activity coefficient " + testSystem.getPhase(1).getActivityCoefficient(1, 2)); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestFlash.java b/src/test/java/neqsim/thermo/util/example/TestFlash.java index 3106962cb7..42cca14137 100644 --- a/src/test/java/neqsim/thermo/util/example/TestFlash.java +++ b/src/test/java/neqsim/thermo/util/example/TestFlash.java @@ -4,6 +4,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import neqsim.api.ioc.CalculationResult; +import neqsim.thermo.phase.PhaseType; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -18,328 +19,293 @@ * @since 2.2.3 */ public class TestFlash { - static Logger logger = LogManager.getLogger(TestFlash.class); + static Logger logger = LogManager.getLogger(TestFlash.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String[] args) { - int phaseNumber; + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String[] args) { + int phaseNumber; - Double[][] fluidProperties; - int fluidNumber = 1; - int flashMode = 1; - Double[] spec1 = {1.0, 23.2, 24.23, 25.98, 25.23, 26.1, 27.3, 28.7, 23.5, 1.0}; - Double[] spec2 = {288.15, 290.1, 295.1, 301.2, 299.3, 310.2, 315.3, 310.0, 305.2, 312.7}; // Temperatures - // double[] - // spec2={-470.0,-480.0,-475.0,-471.0,-474.0,-450.0,-480.0,-473.0,-471.0,-477.0}; - // // Enthalpies - // double[] spec2={-18.0,-19.0,-18.5,-18.0,-15.0,-19.5,-22.0,-21.0,-18.7,-18.0}; - // // Entropies + Double[][] fluidProperties; + int fluidNumber = 1; + int flashMode = 1; + Double[] spec1 = {1.0, 23.2, 24.23, 25.98, 25.23, 26.1, 27.3, 28.7, 23.5, 1.0}; + Double[] spec2 = {288.15, 290.1, 295.1, 301.2, 299.3, 310.2, 315.3, 310.0, 305.2, 312.7}; // Temperatures + // double[] + // spec2={-470.0,-480.0,-475.0,-471.0,-474.0,-450.0,-480.0,-473.0,-471.0,-477.0}; + // // Enthalpies + // double[] spec2={-18.0,-19.0,-18.5,-18.0,-15.0,-19.5,-22.0,-21.0,-18.7,-18.0}; + // // Entropies - // Fractions for use with fluid number 1 - double[] fractions = {0.01, 0.02, 0.03, 0.01, 0.80, 0.04, 0.03, 0.02, 0.01, 0.01, 0.01, - 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - // double[] fractions={0.01, 0.02, +.03, 0.01, 0.70, 0.14, 0.03, 0.02, 0.01, - // 0.01, 0.01, 0.01}; - // Normalize fractions sum fractions = 1 + // Fractions for use with fluid number 1 + double[] fractions = {0.01, 0.02, 0.03, 0.01, 0.80, 0.04, 0.03, 0.02, 0.01, 0.01, 0.01, 0.01, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + // double[] fractions={0.01, 0.02, +.03, 0.01, 0.70, 0.14, 0.03, 0.02, 0.01, + // 0.01, 0.01, 0.01}; + // Normalize fractions sum fractions = 1 - SystemInterface fluid = new SystemSrkEos(273.15 + 45.0, 22.0); - ThermodynamicOperations fluidOps = new ThermodynamicOperations(fluid); + SystemInterface fluid = new SystemSrkEos(273.15 + 45.0, 22.0); + ThermodynamicOperations fluidOps = new ThermodynamicOperations(fluid); - if (fluidNumber == 1) { - // Fluid gas - fluid.addComponent("water", 0.01); - fluid.addComponent("nitrogen", 0.02); - fluid.addComponent("CO2", 0.03); - fluid.addComponent("H2S", 0.01); - fluid.addComponent("methane", 0.80); - fluid.addComponent("ethane", 0.04); - fluid.addComponent("propane", 0.03); - fluid.addComponent("i-butane", 0.02); - fluid.addComponent("n-butane", 0.01); - fluid.addComponent("i-pentane", 0.01); - fluid.addComponent("n-pentane", 0.01); - fluid.addComponent("n-hexane", 0.01); - fluid.createDatabase(true); - fluid.setMixingRule(2); - fluid.useVolumeCorrection(true); - fluid.setMultiPhaseCheck(true); - } else if (fluidNumber == 2) { // example to show property calc for pure phase - // (without - // flash) - // Fluid air - fluid.addComponent("nitrogen", 0.79); - fluid.addComponent("oxygen", 0.21); - fluid.createDatabase(true); - fluid.setMixingRule(2); - fluid.useVolumeCorrection(true); - fluid.init(0); // careful: this method will reset forced phase types - fluid.setMaxNumberOfPhases(1); - fluid.setForcePhaseTypes(true); - fluid.setPhaseType(0, "gas"); - } else if (fluidNumber == 3) { - // Fluid water - fluid.addComponent("water", 1.0); - fluid.createDatabase(true); - fluid.setMixingRule(2); - fluid.useVolumeCorrection(true); - fluid.setMultiPhaseCheck(true); - } else if (fluidNumber == 4) { - // Fluid extended gas - fluid.addComponent("water", 0.01); - fluid.addComponent("helium", 0.01); - fluid.addComponent("hydrogen", 0.01); - fluid.addComponent("nitrogen", 0.01); - fluid.addComponent("argon", 0.01); - fluid.addComponent("oxygen", 0.01); - fluid.addComponent("CO2", 0.01); - fluid.addComponent("H2S", 0.01); - fluid.addComponent("methane", 0.80); - fluid.addComponent("ethane", 0.04); - fluid.addComponent("propane", 0.03); - fluid.addComponent("i-butane", 0.02); - fluid.addComponent("n-butane", 0.01); - fluid.addComponent("i-pentane", 0.01); - fluid.addComponent("n-pentane", 0.01); - fluid.addComponent("n-hexane", 0.01); - fluid.addComponent("n-heptane", 0.01); - fluid.addComponent("n-octane", 0.01); - fluid.addComponent("n-nonane", 0.01); - fluid.addComponent("n-decane", 0.01); - fluid.addComponent("C11", 1); - fluid.createDatabase(true); - fluid.setMixingRule(2); - fluid.useVolumeCorrection(true); - fluid.setMultiPhaseCheck(true); - } else if (fluidNumber == 5) { - // ?sgard B export oil - fluid.addComponent("water", 1.63588003488258E-06); - fluid.addComponent("nitrogen", 9.69199026590317E-14); - fluid.addComponent("CO2", 4.56441011920106E-07); - fluid.addComponent("methane", 2.34691992773151E-08); - fluid.addComponent("ethane", 0.000086150337010622); - fluid.addComponent("propane", 0.0186985325813293); - fluid.addComponent("i-butane", 0.0239006042480469); - fluid.addComponent("n-butane", 0.0813478374481201); - fluid.addComponent("i-pentane", 0.0550192785263062); - fluid.addComponent("n-pentane", 0.0722700452804565); - fluid.addTBPfraction("CHCmp_1", 0.11058749198913600, 0.0861780014038086, - 0.662663996219635); - fluid.addTBPfraction("CHCmp_2", 0.17813117980957000, 0.0909560012817383, - 0.740698456764221); - fluid.addTBPfraction("CHCmp_3", 0.14764604568481400, 0.1034290008544920, - 0.769004046916962); - fluid.addTBPfraction("CHCmp_4", 0.10463774681091300, 0.1171869964599610, - 0.789065659046173); - fluid.addTBPfraction("CHCmp_5", 0.08433451652526860, 0.1458090057373050, - 0.80481481552124); - fluid.addTBPfraction("CHCmp_6", 0.03788370132446290, 0.1813300018310550, - 0.825066685676575); - fluid.addTBPfraction("CHCmp_7", 0.02444351673126220, 0.2122779998779300, - 0.837704122066498); - fluid.addTBPfraction("CHCmp_8", 0.01481210947036740, 0.2481419982910160, - 0.849904119968414); - fluid.addTBPfraction("CHCmp_9", 0.01158336877822880, 0.2892170104980470, - 0.863837122917175); - fluid.addTBPfraction("CHCmp_10", 0.01286722421646120, 0.3303389892578130, - 0.875513017177582); - fluid.addTBPfraction("CHCmp_11", 0.00838199377059937, 0.3846969909667970, - 0.888606309890747); - fluid.addTBPfraction("CHCmp_12", 0.00746552944183350, 0.4711579895019530, - 0.906100511550903); - fluid.addTBPfraction("CHCmp_13", 0.00590102910995483, 0.6624600219726560, - 0.936200380325317); - fluid.createDatabase(true); - fluid.setMixingRule(2); - fluid.useVolumeCorrection(true); - fluid.setMultiPhaseCheck(true); - } else if (fluidNumber == 6) { - // Grane export oil - fluid.addComponent("water", 0.0386243104934692); - fluid.addComponent("nitrogen", 1.08263303991407E-05); - fluid.addComponent("CO2", 0.00019008457660675); - fluid.addComponent("methane", 0.00305547803640366); - fluid.addComponent("ethane", 0.00200786963105202); - fluid.addComponent("propane", 0.00389420658349991); - fluid.addComponent("i-butane", 0.00179276615381241); - fluid.addComponent("n-butane", 0.00255768150091171); - fluid.addComponent("i-pentane", 0.00205287128686905); - fluid.addComponent("n-pentane", 0.00117853358387947); - fluid.addTBPfraction("CHCmp_1", 0.000867870151996613, 0.0810000000000000, - 0.72122997045517); - fluid.addTBPfraction("CHCmp_2", 0.048198757171630900, 0.0987799987792969, - 0.754330039024353); - fluid.addTBPfraction("CHCmp_3", 0.097208471298217800, 0.1412200012207030, - 0.81659996509552); - fluid.addTBPfraction("CHCmp_4", 0.165174083709717000, 0.1857899932861330, - 0.861050009727478); - fluid.addTBPfraction("CHCmp_5", 0.279571933746338000, 0.2410899963378910, - 0.902539968490601); - fluid.addTBPfraction("CHCmp_6", 0.240494251251221000, 0.4045100097656250, - 0.955269992351531); - fluid.addTBPfraction("CHCmp_7", 0.113120021820068000, 0.9069699707031250, - 1.0074599981308); - fluid.createDatabase(true); - fluid.setMixingRule(2); - fluid.useVolumeCorrection(true); - fluid.setMultiPhaseCheck(true); - } else if (fluidNumber == 7) { - // Gina Krog export oil - fluid.addComponent("water", 0.0304006958007813); - fluid.addComponent("nitrogen", 4.73001127829775E-07); - fluid.addComponent("CO2", 0.000380391739308834); - fluid.addComponent("methane", 0.00102935172617435); - fluid.addComponent("ethane", 0.00350199580192566); - fluid.addComponent("propane", 0.0149815678596497); - fluid.addComponent("i-butane", 0.00698469817638397); - fluid.addComponent("n-butane", 0.0226067280769348); - fluid.addComponent("i-pentane", 0.0143046414852142); - fluid.addComponent("n-pentane", 0.0203909373283386); - fluid.addTBPfraction("CHCmp_1", 0.0352155113220215, 0.0854749984741211, - 0.664700031280518); - fluid.addTBPfraction("CHCmp_2", 0.0705802822113037, 0.0890039978027344, - 0.757499992847443); - fluid.addTBPfraction("CHCmp_3", 0.0850765609741211, 0.1021979980468750, - 0.778400003910065); - fluid.addTBPfraction("CHCmp_4", 0.0605201292037964, 0.1156969985961910, - 0.792500019073486); - fluid.addTBPfraction("CHCmp_5", 0.1793018150329590, 0.1513029937744140, - 0.82480001449585); - fluid.addTBPfraction("CHCmp_6", 0.1033354282379150, 0.2105240020751950, - 0.869700014591217); - fluid.addTBPfraction("CHCmp_7", 0.0706664896011353, 0.2728500061035160, - 0.881599962711334); - fluid.addTBPfraction("CHCmp_8", 0.0626348257064819, 0.3172810058593750, - 0.89300000667572); - fluid.addTBPfraction("CHCmp_9", 0.0488108015060425, 0.3585450134277340, - 0.90200001001358); - fluid.addTBPfraction("CHCmp_10", 0.0484040451049805, 0.4076000061035160, - 0.911700010299683); - fluid.addTBPfraction("CHCmp_11", 0.0417061710357666, 0.4698110046386720, - 0.923400044441223); - fluid.addTBPfraction("CHCmp_12", 0.0425787830352783, 0.5629600219726560, - 0.939900040626526); - fluid.addTBPfraction("CHCmp_13", 0.0365876793861389, 0.7858560180664060, - 0.979299962520599); - fluid.createDatabase(true); - fluid.setMixingRule(2); - fluid.useVolumeCorrection(true); - fluid.setMultiPhaseCheck(true); - } - - // Set fractions for gas - // fluid.setMolarComposition(fractions); + if (fluidNumber == 1) { + // Fluid gas + fluid.addComponent("water", 0.01); + fluid.addComponent("nitrogen", 0.02); + fluid.addComponent("CO2", 0.03); + fluid.addComponent("H2S", 0.01); + fluid.addComponent("methane", 0.80); + fluid.addComponent("ethane", 0.04); + fluid.addComponent("propane", 0.03); + fluid.addComponent("i-butane", 0.02); + fluid.addComponent("n-butane", 0.01); + fluid.addComponent("i-pentane", 0.01); + fluid.addComponent("n-pentane", 0.01); + fluid.addComponent("n-hexane", 0.01); + fluid.createDatabase(true); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.setMultiPhaseCheck(true); + } else if (fluidNumber == 2) { // example to show property calc for pure phase + // (without + // flash) + // Fluid air + fluid.addComponent("nitrogen", 0.79); + fluid.addComponent("oxygen", 0.21); + fluid.createDatabase(true); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.init(0); // careful: this method will reset forced phase types + fluid.setMaxNumberOfPhases(1); + fluid.setForcePhaseTypes(true); + fluid.setPhaseType(0, PhaseType.GAS); + } else if (fluidNumber == 3) { + // Fluid water + fluid.addComponent("water", 1.0); + fluid.createDatabase(true); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.setMultiPhaseCheck(true); + } else if (fluidNumber == 4) { + // Fluid extended gas + fluid.addComponent("water", 0.01); + fluid.addComponent("helium", 0.01); + fluid.addComponent("hydrogen", 0.01); + fluid.addComponent("nitrogen", 0.01); + fluid.addComponent("argon", 0.01); + fluid.addComponent("oxygen", 0.01); + fluid.addComponent("CO2", 0.01); + fluid.addComponent("H2S", 0.01); + fluid.addComponent("methane", 0.80); + fluid.addComponent("ethane", 0.04); + fluid.addComponent("propane", 0.03); + fluid.addComponent("i-butane", 0.02); + fluid.addComponent("n-butane", 0.01); + fluid.addComponent("i-pentane", 0.01); + fluid.addComponent("n-pentane", 0.01); + fluid.addComponent("n-hexane", 0.01); + fluid.addComponent("n-heptane", 0.01); + fluid.addComponent("n-octane", 0.01); + fluid.addComponent("n-nonane", 0.01); + fluid.addComponent("nC10", 0.01); + fluid.addComponent("nC11", 1); + fluid.createDatabase(true); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.setMultiPhaseCheck(true); + } else if (fluidNumber == 5) { + // ?sgard B export oil + fluid.addComponent("water", 1.63588003488258E-06); + fluid.addComponent("nitrogen", 9.69199026590317E-14); + fluid.addComponent("CO2", 4.56441011920106E-07); + fluid.addComponent("methane", 2.34691992773151E-08); + fluid.addComponent("ethane", 0.000086150337010622); + fluid.addComponent("propane", 0.0186985325813293); + fluid.addComponent("i-butane", 0.0239006042480469); + fluid.addComponent("n-butane", 0.0813478374481201); + fluid.addComponent("i-pentane", 0.0550192785263062); + fluid.addComponent("n-pentane", 0.0722700452804565); + fluid.addTBPfraction("CHCmp_1", 0.11058749198913600, 0.0861780014038086, 0.662663996219635); + fluid.addTBPfraction("CHCmp_2", 0.17813117980957000, 0.0909560012817383, 0.740698456764221); + fluid.addTBPfraction("CHCmp_3", 0.14764604568481400, 0.1034290008544920, 0.769004046916962); + fluid.addTBPfraction("CHCmp_4", 0.10463774681091300, 0.1171869964599610, 0.789065659046173); + fluid.addTBPfraction("CHCmp_5", 0.08433451652526860, 0.1458090057373050, 0.80481481552124); + fluid.addTBPfraction("CHCmp_6", 0.03788370132446290, 0.1813300018310550, 0.825066685676575); + fluid.addTBPfraction("CHCmp_7", 0.02444351673126220, 0.2122779998779300, 0.837704122066498); + fluid.addTBPfraction("CHCmp_8", 0.01481210947036740, 0.2481419982910160, 0.849904119968414); + fluid.addTBPfraction("CHCmp_9", 0.01158336877822880, 0.2892170104980470, 0.863837122917175); + fluid.addTBPfraction("CHCmp_10", 0.01286722421646120, 0.3303389892578130, 0.875513017177582); + fluid.addTBPfraction("CHCmp_11", 0.00838199377059937, 0.3846969909667970, 0.888606309890747); + fluid.addTBPfraction("CHCmp_12", 0.00746552944183350, 0.4711579895019530, 0.906100511550903); + fluid.addTBPfraction("CHCmp_13", 0.00590102910995483, 0.6624600219726560, 0.936200380325317); + fluid.createDatabase(true); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.setMultiPhaseCheck(true); + } else if (fluidNumber == 6) { + // Grane export oil + fluid.addComponent("water", 0.0386243104934692); + fluid.addComponent("nitrogen", 1.08263303991407E-05); + fluid.addComponent("CO2", 0.00019008457660675); + fluid.addComponent("methane", 0.00305547803640366); + fluid.addComponent("ethane", 0.00200786963105202); + fluid.addComponent("propane", 0.00389420658349991); + fluid.addComponent("i-butane", 0.00179276615381241); + fluid.addComponent("n-butane", 0.00255768150091171); + fluid.addComponent("i-pentane", 0.00205287128686905); + fluid.addComponent("n-pentane", 0.00117853358387947); + fluid.addTBPfraction("CHCmp_1", 0.000867870151996613, 0.0810000000000000, 0.72122997045517); + fluid.addTBPfraction("CHCmp_2", 0.048198757171630900, 0.0987799987792969, 0.754330039024353); + fluid.addTBPfraction("CHCmp_3", 0.097208471298217800, 0.1412200012207030, 0.81659996509552); + fluid.addTBPfraction("CHCmp_4", 0.165174083709717000, 0.1857899932861330, 0.861050009727478); + fluid.addTBPfraction("CHCmp_5", 0.279571933746338000, 0.2410899963378910, 0.902539968490601); + fluid.addTBPfraction("CHCmp_6", 0.240494251251221000, 0.4045100097656250, 0.955269992351531); + fluid.addTBPfraction("CHCmp_7", 0.113120021820068000, 0.9069699707031250, 1.0074599981308); + fluid.createDatabase(true); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.setMultiPhaseCheck(true); + } else if (fluidNumber == 7) { + // Gina Krog export oil + fluid.addComponent("water", 0.0304006958007813); + fluid.addComponent("nitrogen", 4.73001127829775E-07); + fluid.addComponent("CO2", 0.000380391739308834); + fluid.addComponent("methane", 0.00102935172617435); + fluid.addComponent("ethane", 0.00350199580192566); + fluid.addComponent("propane", 0.0149815678596497); + fluid.addComponent("i-butane", 0.00698469817638397); + fluid.addComponent("n-butane", 0.0226067280769348); + fluid.addComponent("i-pentane", 0.0143046414852142); + fluid.addComponent("n-pentane", 0.0203909373283386); + fluid.addTBPfraction("CHCmp_1", 0.0352155113220215, 0.0854749984741211, 0.664700031280518); + fluid.addTBPfraction("CHCmp_2", 0.0705802822113037, 0.0890039978027344, 0.757499992847443); + fluid.addTBPfraction("CHCmp_3", 0.0850765609741211, 0.1021979980468750, 0.778400003910065); + fluid.addTBPfraction("CHCmp_4", 0.0605201292037964, 0.1156969985961910, 0.792500019073486); + fluid.addTBPfraction("CHCmp_5", 0.1793018150329590, 0.1513029937744140, 0.82480001449585); + fluid.addTBPfraction("CHCmp_6", 0.1033354282379150, 0.2105240020751950, 0.869700014591217); + fluid.addTBPfraction("CHCmp_7", 0.0706664896011353, 0.2728500061035160, 0.881599962711334); + fluid.addTBPfraction("CHCmp_8", 0.0626348257064819, 0.3172810058593750, 0.89300000667572); + fluid.addTBPfraction("CHCmp_9", 0.0488108015060425, 0.3585450134277340, 0.90200001001358); + fluid.addTBPfraction("CHCmp_10", 0.0484040451049805, 0.4076000061035160, 0.911700010299683); + fluid.addTBPfraction("CHCmp_11", 0.0417061710357666, 0.4698110046386720, 0.923400044441223); + fluid.addTBPfraction("CHCmp_12", 0.0425787830352783, 0.5629600219726560, 0.939900040626526); + fluid.addTBPfraction("CHCmp_13", 0.0365876793861389, 0.7858560180664060, 0.979299962520599); + fluid.createDatabase(true); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.setMultiPhaseCheck(true); + } - long time = System.currentTimeMillis(); + // Set fractions for gas + // fluid.setMolarComposition(fractions); - ThermodynamicOperations thermoOps = new ThermodynamicOperations(fluid); + long time = System.currentTimeMillis(); - CalculationResult s = - thermoOps.propertyFlash(Arrays.asList(spec1), Arrays.asList(spec2), 3, null, null); - fluidProperties = s.fluidProperties; + ThermodynamicOperations thermoOps = new ThermodynamicOperations(fluid); - logger.info("Time taken for 10 flash calcs [ms] = " + (System.currentTimeMillis() - time)); + CalculationResult s = + thermoOps.propertyFlash(Arrays.asList(spec1), Arrays.asList(spec2), 3, null, null); + fluidProperties = s.fluidProperties; - int t = 0; - int k = 0; - logger.info("Mix Number of Phases " + fluidProperties[t][k++]); - logger.info("Mix Pressure [Pa] " + fluidProperties[t][k++]); - logger.info("Mix Temperature [K] " + fluidProperties[t][k++]); - logger.info("Mix Mole Percent " + fluidProperties[t][k++]); - logger.info("Mix Weight Percent " + fluidProperties[t][k++]); - logger.info("Mix Molar Volume [m3/mol] " + fluidProperties[t][k++]); - logger.info("Mix Volume Percent " + fluidProperties[t][k++]); - logger.info("Mix Density [kg/m3] " + fluidProperties[t][k++]); - logger.info("Mix Z Factor " + fluidProperties[t][k++]); - logger.info("Mix Molecular Weight [g/mol] " + fluidProperties[t][k++]); - logger.info("Mix Enthalpy [J/mol] " + fluidProperties[t][k++]); - logger.info("Mix Entropy [J/molK] " + fluidProperties[t][k++]); - logger.info("Mix Heat Capacity-Cp [J/molK] " + fluidProperties[t][k++]); - logger.info("Mix Heat Capacity-Cv [J/molK] " + fluidProperties[t][k++]); - logger.info("Mix Mix Kappa (Cp/Cv) " + fluidProperties[t][k++]); - logger.info("Mix JT Coefficient [K/Pa] " + fluidProperties[t][k++]); - logger.info("Mix Velocity of Sound [m/s] " + fluidProperties[t][k++]); - logger.info("Mix Viscosity [Pa s] eller [kg/(m*s)] " + fluidProperties[t][k++]); - logger.info("Mix Thermal Conductivity W/mK] " + fluidProperties[t][k++]); - // logger.info("\n"); - logger.info("Gas Mole Percent " + fluidProperties[t][k++]); - logger.info("Gas Weight Percent " + fluidProperties[t][k++]); - logger.info("Gas Molar Volume [m3/mol] " + fluidProperties[t][k++]); - logger.info("Gas Volume Percent " + fluidProperties[t][k++]); - logger.info("Gas Density [kg/m3] " + fluidProperties[t][k++]); - logger.info("Gas Z Factor " + fluidProperties[t][k++]); - logger.info("Gas Molecular Weight [g/mol] " + fluidProperties[t][k++]); - logger.info("Gas Enthalpy [J/mol] " + fluidProperties[t][k++]); - logger.info("Gas Entropy [J/molK] " + fluidProperties[t][k++]); - logger.info("Gas Heat Capacity-Cp [J/molK] " + fluidProperties[t][k++]); - logger.info("Gas Heat Capacity-Cv [J/molK] " + fluidProperties[t][k++]); - logger.info("Gas Gas Kappa (Cp/Cv) " + fluidProperties[t][k++]); - logger.info("Gas JT Coefficient [K/Pa] " + fluidProperties[t][k++]); - logger.info("Gas Velocity of Sound [m/s] " + fluidProperties[t][k++]); - logger.info("Gas Viscosity [Pa s] eller [kg/(m*s)] " + fluidProperties[t][k++]); - logger.info("Gas Thermal Conductivity [W/mK] " + fluidProperties[t][k++]); - // logger.info("\n"); - logger.info("Liquid Mole Percent " + fluidProperties[t][k++]); - logger.info("Liquid Weight Percent " + fluidProperties[t][k++]); - logger.info("Liquid Molar Volume [m3/mol] " + fluidProperties[t][k++]); - logger.info("Liquid Volume Percent " + fluidProperties[t][k++]); - logger.info("Liquid Density [kg/m3] " + fluidProperties[t][k++]); - logger.info("Liquid Z Factor " + fluidProperties[t][k++]); - logger.info("Liquid Molecular Weight [g/mol] " + fluidProperties[t][k++]); - logger.info("Liquid Enthalpy [J/mol] " + fluidProperties[t][k++]); - logger.info("Liquid Entropy [J/molK] " + fluidProperties[t][k++]); - logger.info("Liquid Heat Capacity-Cp [J/molK] " + fluidProperties[t][k++]); - logger.info("Liquid Heat Capacity-Cv [J/molK] " + fluidProperties[t][k++]); - logger.info("Liquid Liquid Kappa (Cp/Cv) " + fluidProperties[t][k++]); - logger.info("Liquid JT Coefficient [K/Pa] " + fluidProperties[t][k++]); - logger.info("Liquid Velocity of Sound [m/s] " + fluidProperties[t][k++]); - logger.info("Liquid Viscosity [Pa s] eller [kg/(m*s)] " + fluidProperties[t][k++]); - logger.info("Liquid Thermal Conductivity [W/mK] " + fluidProperties[t][k++]); - // logger.info("\n"); - logger.info("Aqueous Mole Percent " + fluidProperties[t][k++]); - logger.info("Aqueous Weight Percent " + fluidProperties[t][k++]); - logger.info("Aqueous Molar Volume [m3/mol] " + fluidProperties[t][k++]); - logger.info("Aqueous Volume Percent " + fluidProperties[t][k++]); - logger.info("Aqueous Density [kg/m3] " + fluidProperties[t][k++]); - logger.info("Aqueous Z Factor " + fluidProperties[t][k++]); - logger.info("Aqueous Molecular Weight [g/mol] " + fluidProperties[t][k++]); - logger.info("Aqueous Enthalpy [J/mol] " + fluidProperties[t][k++]); - logger.info("Aqueous Entropy [J/molK] " + fluidProperties[t][k++]); - logger.info("Aqueous Heat Capacity-Cp [J/molK] " + fluidProperties[t][k++]); - logger.info("Aqueous Heat Capacity-Cv [J/molK] " + fluidProperties[t][k++]); - logger.info("Aqueous Aqueous Kappa (Cp/Cv) " + fluidProperties[t][k++]); - logger.info("Aqueous JT Coefficient [K/Pa] " + fluidProperties[t][k++]); - logger.info("Aqueous Velocity of Sound [m/s] " + fluidProperties[t][k++]); - logger.info("Aqueous Viscosity [Pa s] eller [kg/(m*s)] " + fluidProperties[t][k++]); - logger.info("Aqueous Thermal Conductivity [W/mK] " + fluidProperties[t][k++]); + logger.info("Time taken for 10 flash calcs [ms] = " + (System.currentTimeMillis() - time)); - double interfacialtensiongasoil = Double.NaN, interfacialtensiongasaqueous = Double.NaN, - interfacialtensionoilaqueous = Double.NaN; + int t = 0; + int k = 0; + logger.info("Mix Number of Phases " + fluidProperties[t][k++]); + logger.info("Mix Pressure [Pa] " + fluidProperties[t][k++]); + logger.info("Mix Temperature [K] " + fluidProperties[t][k++]); + logger.info("Mix Mole Percent " + fluidProperties[t][k++]); + logger.info("Mix Weight Percent " + fluidProperties[t][k++]); + logger.info("Mix Molar Volume [m3/mol] " + fluidProperties[t][k++]); + logger.info("Mix Volume Percent " + fluidProperties[t][k++]); + logger.info("Mix Density [kg/m3] " + fluidProperties[t][k++]); + logger.info("Mix Z Factor " + fluidProperties[t][k++]); + logger.info("Mix Molecular Weight [g/mol] " + fluidProperties[t][k++]); + logger.info("Mix Enthalpy [J/mol] " + fluidProperties[t][k++]); + logger.info("Mix Entropy [J/molK] " + fluidProperties[t][k++]); + logger.info("Mix Heat Capacity-Cp [J/molK] " + fluidProperties[t][k++]); + logger.info("Mix Heat Capacity-Cv [J/molK] " + fluidProperties[t][k++]); + logger.info("Mix Mix Kappa (Cp/Cv) " + fluidProperties[t][k++]); + logger.info("Mix JT Coefficient [K/Pa] " + fluidProperties[t][k++]); + logger.info("Mix Velocity of Sound [m/s] " + fluidProperties[t][k++]); + logger.info("Mix Viscosity [Pa s] eller [kg/(m*s)] " + fluidProperties[t][k++]); + logger.info("Mix Thermal Conductivity W/mK] " + fluidProperties[t][k++]); + // logger.info("\n"); + logger.info("Gas Mole Percent " + fluidProperties[t][k++]); + logger.info("Gas Weight Percent " + fluidProperties[t][k++]); + logger.info("Gas Molar Volume [m3/mol] " + fluidProperties[t][k++]); + logger.info("Gas Volume Percent " + fluidProperties[t][k++]); + logger.info("Gas Density [kg/m3] " + fluidProperties[t][k++]); + logger.info("Gas Z Factor " + fluidProperties[t][k++]); + logger.info("Gas Molecular Weight [g/mol] " + fluidProperties[t][k++]); + logger.info("Gas Enthalpy [J/mol] " + fluidProperties[t][k++]); + logger.info("Gas Entropy [J/molK] " + fluidProperties[t][k++]); + logger.info("Gas Heat Capacity-Cp [J/molK] " + fluidProperties[t][k++]); + logger.info("Gas Heat Capacity-Cv [J/molK] " + fluidProperties[t][k++]); + logger.info("Gas Gas Kappa (Cp/Cv) " + fluidProperties[t][k++]); + logger.info("Gas JT Coefficient [K/Pa] " + fluidProperties[t][k++]); + logger.info("Gas Velocity of Sound [m/s] " + fluidProperties[t][k++]); + logger.info("Gas Viscosity [Pa s] eller [kg/(m*s)] " + fluidProperties[t][k++]); + logger.info("Gas Thermal Conductivity [W/mK] " + fluidProperties[t][k++]); + // logger.info("\n"); + logger.info("Liquid Mole Percent " + fluidProperties[t][k++]); + logger.info("Liquid Weight Percent " + fluidProperties[t][k++]); + logger.info("Liquid Molar Volume [m3/mol] " + fluidProperties[t][k++]); + logger.info("Liquid Volume Percent " + fluidProperties[t][k++]); + logger.info("Liquid Density [kg/m3] " + fluidProperties[t][k++]); + logger.info("Liquid Z Factor " + fluidProperties[t][k++]); + logger.info("Liquid Molecular Weight [g/mol] " + fluidProperties[t][k++]); + logger.info("Liquid Enthalpy [J/mol] " + fluidProperties[t][k++]); + logger.info("Liquid Entropy [J/molK] " + fluidProperties[t][k++]); + logger.info("Liquid Heat Capacity-Cp [J/molK] " + fluidProperties[t][k++]); + logger.info("Liquid Heat Capacity-Cv [J/molK] " + fluidProperties[t][k++]); + logger.info("Liquid Liquid Kappa (Cp/Cv) " + fluidProperties[t][k++]); + logger.info("Liquid JT Coefficient [K/Pa] " + fluidProperties[t][k++]); + logger.info("Liquid Velocity of Sound [m/s] " + fluidProperties[t][k++]); + logger.info("Liquid Viscosity [Pa s] eller [kg/(m*s)] " + fluidProperties[t][k++]); + logger.info("Liquid Thermal Conductivity [W/mK] " + fluidProperties[t][k++]); + // logger.info("\n"); + logger.info("Aqueous Mole Percent " + fluidProperties[t][k++]); + logger.info("Aqueous Weight Percent " + fluidProperties[t][k++]); + logger.info("Aqueous Molar Volume [m3/mol] " + fluidProperties[t][k++]); + logger.info("Aqueous Volume Percent " + fluidProperties[t][k++]); + logger.info("Aqueous Density [kg/m3] " + fluidProperties[t][k++]); + logger.info("Aqueous Z Factor " + fluidProperties[t][k++]); + logger.info("Aqueous Molecular Weight [g/mol] " + fluidProperties[t][k++]); + logger.info("Aqueous Enthalpy [J/mol] " + fluidProperties[t][k++]); + logger.info("Aqueous Entropy [J/molK] " + fluidProperties[t][k++]); + logger.info("Aqueous Heat Capacity-Cp [J/molK] " + fluidProperties[t][k++]); + logger.info("Aqueous Heat Capacity-Cv [J/molK] " + fluidProperties[t][k++]); + logger.info("Aqueous Aqueous Kappa (Cp/Cv) " + fluidProperties[t][k++]); + logger.info("Aqueous JT Coefficient [K/Pa] " + fluidProperties[t][k++]); + logger.info("Aqueous Velocity of Sound [m/s] " + fluidProperties[t][k++]); + logger.info("Aqueous Viscosity [Pa s] eller [kg/(m*s)] " + fluidProperties[t][k++]); + logger.info("Aqueous Thermal Conductivity [W/mK] " + fluidProperties[t][k++]); - if (fluid.hasPhaseType("gas") && fluid.hasPhaseType("oil")) { - interfacialtensiongasoil = fluid.getInterfacialTension("gas", "oil"); - } + double interfacialtensiongasoil = Double.NaN; + double interfacialtensiongasaqueous = Double.NaN; + double interfacialtensionoilaqueous = Double.NaN; + if (fluid.hasPhaseType("gas") && fluid.hasPhaseType("oil")) { + interfacialtensiongasoil = fluid.getInterfacialTension("gas", "oil"); + } - if (fluid.hasPhaseType("gas") && fluid.hasPhaseType("aqueous")) { - interfacialtensiongasaqueous = fluid.getInterfacialTension("gas", "aqueous"); - } + if (fluid.hasPhaseType("gas") && fluid.hasPhaseType("aqueous")) { + interfacialtensiongasaqueous = fluid.getInterfacialTension("gas", "aqueous"); + } - if (fluid.hasPhaseType("oil") && fluid.hasPhaseType("aqueous")) { - interfacialtensionoilaqueous = fluid.getInterfacialTension("oil", "aqueous"); - } + if (fluid.hasPhaseType("oil") && fluid.hasPhaseType("aqueous")) { + interfacialtensionoilaqueous = fluid.getInterfacialTension("oil", "aqueous"); + } - logger.info("Interfacial Tension Gas-Oil [N/m] " + interfacialtensiongasoil); - logger.info( - "Interfacial Tension Gas-Aqueous [N/m] " + interfacialtensiongasaqueous); - logger.info( - "Interfacial Tension Oil-Aqueous [N/m] " + interfacialtensionoilaqueous); + logger.info("Interfacial Tension Gas-Oil [N/m] " + interfacialtensiongasoil); + logger.info("Interfacial Tension Gas-Aqueous [N/m] " + interfacialtensiongasaqueous); + logger.info("Interfacial Tension Oil-Aqueous [N/m] " + interfacialtensionoilaqueous); - fluid.display(); - } + fluid.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestFluidIssues.java b/src/test/java/neqsim/thermo/util/example/TestFluidIssues.java index 7c5971e928..9bf29fe417 100644 --- a/src/test/java/neqsim/thermo/util/example/TestFluidIssues.java +++ b/src/test/java/neqsim/thermo/util/example/TestFluidIssues.java @@ -26,7 +26,7 @@ public static void main(String args[]) { // SystemInterface testSystem = new SystemSrkEos(303.15, 10.01325); SystemInterface testSystem = new SystemSrkCPAstatoil(303.15, 15.0); // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(298.15, - // 1.01325); + // ThermodynamicConstantsInterface.referencePressure); ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); testSystem.addComponent("methane", 100.0); // testSystem.addComponent("water", 100.0); diff --git a/src/test/java/neqsim/thermo/util/example/TestGEHenry.java b/src/test/java/neqsim/thermo/util/example/TestGEHenry.java index 5d1353cafb..a0b7a14c0d 100644 --- a/src/test/java/neqsim/thermo/util/example/TestGEHenry.java +++ b/src/test/java/neqsim/thermo/util/example/TestGEHenry.java @@ -7,38 +7,42 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TestGEHenry class.

+ *

+ * TestGEHenry class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class TestGEHenry { - static Logger logger = LogManager.getLogger(TestGEHenry.class); + static Logger logger = LogManager.getLogger(TestGEHenry.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemGEWilson(273.15 + 55.0, 1.301325); - // SystemInterface testSystem = new SystemNRTL(273.15 + 55.0,1.301325); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemGEWilson(273.15 + 55.0, 1.301325); + // SystemInterface testSystem = new SystemNRTL(273.15 + 55.0,1.301325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 10.0); - // testSystem.addComponent("methanol", 1.0); - testSystem.addComponent("water", 10.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.init(0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 10.0); + // testSystem.addComponent("methanol", 1.0); + testSystem.addComponent("water", 10.0); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.init(0); - try { - testOps.TPflash(); - // testOps.bubblePointPressureFlash(false);//(false); - } catch (Exception e) { - logger.error(e.toString(), e); - } - testSystem.display(); + try { + testOps.TPflash(); + // testOps.bubblePointPressureFlash(false); //(false); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestGERG2004EOS.java b/src/test/java/neqsim/thermo/util/example/TestGERG2004EOS.java index 5858911004..da1ba03f54 100644 --- a/src/test/java/neqsim/thermo/util/example/TestGERG2004EOS.java +++ b/src/test/java/neqsim/thermo/util/example/TestGERG2004EOS.java @@ -7,61 +7,65 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TestGERG2004EOS class.

+ *

+ * TestGERG2004EOS class. + *

* * @author esol * @since 2.2.3 * @version $Id: $Id */ public class TestGERG2004EOS { - static Logger logger = LogManager.getLogger(TestGERG2004EOS.class); + static Logger logger = LogManager.getLogger(TestGERG2004EOS.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemGERG2004Eos(29.74536 + 273.15, 90.66201); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("nitrogen", 0.795203479); - testSystem.addComponent("CO2", 1.729916572); - testSystem.addComponent("methane", 92.03665177); - testSystem.addComponent("ethane", 4.819934221); - testSystem.addComponent("propane", 0.533168289); - testSystem.addComponent("i-butane", 0.013320409); - testSystem.addComponent("n-butane", 0.048501779); - // testSystem.addComponent("n-butane", 0.07218); - // testSystem.addComponent("i-butane", 0.003749); - // testSystem.addComponent("n-pentane", 0.001920); - // testSystem.addComponent("iC5", 0.001850); - // testSystem.addComponent("n-hexane", 0.001160); - // testSystem.addComponent("n-heptane", 0.000460); - // testSystem.addComponent("n-octane", 0.000225); - // testSystem.addComponent("hydrogen", 0.1); - // testSystem.addComponent("oxygen", 0.1); - // testSystem.addComponent("CO", 0.1); - // testSystem.addComponent("water", 0.000800); - // testSystem.addComponent("helium", 0.1); - // testSystem.addComponent("argon", 1.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemGERG2004Eos(29.74536 + 273.15, 90.66201); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("nitrogen", 0.795203479); + testSystem.addComponent("CO2", 1.729916572); + testSystem.addComponent("methane", 92.03665177); + testSystem.addComponent("ethane", 4.819934221); + testSystem.addComponent("propane", 0.533168289); + testSystem.addComponent("i-butane", 0.013320409); + testSystem.addComponent("n-butane", 0.048501779); + // testSystem.addComponent("n-butane", 0.07218); + // testSystem.addComponent("i-butane", 0.003749); + // testSystem.addComponent("n-pentane", 0.001920); + // testSystem.addComponent("iC5", 0.001850); + // testSystem.addComponent("n-hexane", 0.001160); + // testSystem.addComponent("n-heptane", 0.000460); + // testSystem.addComponent("n-octane", 0.000225); + // testSystem.addComponent("hydrogen", 0.1); + // testSystem.addComponent("oxygen", 0.1); + // testSystem.addComponent("CO", 0.1); + // testSystem.addComponent("water", 0.000800); + // testSystem.addComponent("helium", 0.1); + // testSystem.addComponent("argon", 1.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // testSystem.setSolidPhaseCheck("CO2"); - testSystem.init(0); - testSystem.init(1); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + // testSystem.setSolidPhaseCheck("CO2"); + testSystem.init(0); + testSystem.init(1); - try { - testOps.TPflash(); - // testOps.bubblePointTemperatureFlash(); - // testOps.freezingPointTemperatureFlash(); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } - - // standards.gasQuality.Draft_GERG2004 temp2 = new - // standards.gasQuality.Draft_GERG2004(testSystem); - // temp2.calculate(); + try { + testOps.TPflash(); + // testOps.bubblePointTemperatureFlash(); + // testOps.freezingPointTemperatureFlash(); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + + // standards.gasQuality.Draft_GERG2004 temp2 = new + // standards.gasQuality.Draft_GERG2004(testSystem); + // temp2.calculate(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestGERGwater.java b/src/test/java/neqsim/thermo/util/example/TestGERGwater.java index dcda08f63c..2715646756 100644 --- a/src/test/java/neqsim/thermo/util/example/TestGERGwater.java +++ b/src/test/java/neqsim/thermo/util/example/TestGERGwater.java @@ -16,44 +16,44 @@ * @version $Id: $Id */ public class TestGERGwater { - static Logger logger = LogManager.getLogger(TestGERGwater.class); + static Logger logger = LogManager.getLogger(TestGERGwater.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemGERGwaterEos(273.15-20.0, 100.0); - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 - 20.0, 100.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemGERGwaterEos(273.15-20.0, 100.0); + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 - 20.0, 100.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 80.6); - testSystem.addComponent("ethane", 9.46); - testSystem.addComponent("propane", 4.6); - testSystem.addComponent("i-butane", 100.0 - 80.6 - 9.46 - 4.6 - 2.6 - 0.6); - testSystem.addComponent("CO2", 2.6); - testSystem.addComponent("nitrogen", 0.6); - // testSystem.addComponent("ethane", 0.08); - // testSystem.addComponent("propane", 0.02); - testSystem.addComponent("water", 178.3e-4); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 80.6); + testSystem.addComponent("ethane", 9.46); + testSystem.addComponent("propane", 4.6); + testSystem.addComponent("i-butane", 100.0 - 80.6 - 9.46 - 4.6 - 2.6 - 0.6); + testSystem.addComponent("CO2", 2.6); + testSystem.addComponent("nitrogen", 0.6); + // testSystem.addComponent("ethane", 0.08); + // testSystem.addComponent("propane", 0.02); + testSystem.addComponent("water", 178.3e-4); - testSystem.createDatabase(true); - // 1- orginal no interaction 2- classic w interaction - // 3- Huron-Vidal 4- Wong-Sandler - testSystem.setMixingRule(7); - // testSystem.setMixingRule("HV", "UNIFAC_PSRK"); - testSystem.init(0); + testSystem.createDatabase(true); + // 1- orginal no interaction 2- classic w interaction + // 3- Huron-Vidal 4- Wong-Sandler + testSystem.setMixingRule(7); + // testSystem.setMixingRule("HV", "UNIFAC_PSRK"); + testSystem.init(0); - try { - // testOps.TPflash(); - // testOps.dewPointTemperatureFlash(); - testOps.waterDewPointTemperatureFlash(); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + try { + // testOps.TPflash(); + // testOps.dewPointTemperatureFlash(); + testOps.waterDewPointTemperatureFlash(); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestISO1982.java b/src/test/java/neqsim/thermo/util/example/TestISO1982.java index ba0e1d8c19..7bbbdfed2c 100644 --- a/src/test/java/neqsim/thermo/util/example/TestISO1982.java +++ b/src/test/java/neqsim/thermo/util/example/TestISO1982.java @@ -3,6 +3,7 @@ * * Created on 13. juni 2004, 23:49 */ + package neqsim.thermo.util.example; import org.apache.logging.log4j.LogManager; @@ -21,27 +22,27 @@ * @since 2.2.3 */ public class TestISO1982 { - static Logger logger = LogManager.getLogger(TestISO1982.class); + static Logger logger = LogManager.getLogger(TestISO1982.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(290.15, 30.00); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(290.15, 30.00); - testSystem.addComponent("methane", 50); - testSystem.addComponent("ethane", 50); - testSystem.addComponent("propane", 50); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + testSystem.addComponent("methane", 50); + testSystem.addComponent("ethane", 50); + testSystem.addComponent("propane", 50); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); - logger.info("ISO calc: " + testSystem.getStandard("ISO1982").getValue("Energy", "KJ/Sm3")); - } + logger.info("ISO calc: " + testSystem.getStandard("ISO1982").getValue("Energy", "KJ/Sm3")); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestMBWR32.java b/src/test/java/neqsim/thermo/util/example/TestMBWR32.java index c9e377d7c0..c4f77a46ed 100644 --- a/src/test/java/neqsim/thermo/util/example/TestMBWR32.java +++ b/src/test/java/neqsim/thermo/util/example/TestMBWR32.java @@ -16,37 +16,37 @@ * @since 2.2.3 */ public class TestMBWR32 { - static Logger logger = LogManager.getLogger(TestMBWR32.class); + static Logger logger = LogManager.getLogger(TestMBWR32.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemBWRSEos(298.15, 0.101); - // SystemInterface testSystem = new SystemSrkEos(111.15, 5.01); - // SystemInterface testSystem = new SystemPrEos(111.0, 1.0523); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemBWRSEos(298.15, 0.101); + // SystemInterface testSystem = new SystemSrkEos(111.15, 5.01); + // SystemInterface testSystem = new SystemPrEos(111.0, 1.0523); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 1.0); + testSystem.addComponent("methane", 1.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(1); + testSystem.createDatabase(true); + testSystem.setMixingRule(1); - testSystem.init(0); - testSystem.init(3); - logger.info("Z " + testSystem.getLowestGibbsEnergyPhase().getZ()); + testSystem.init(0); + testSystem.init(3); + logger.info("Z " + testSystem.getLowestGibbsEnergyPhase().getZ()); - try { - // testOps.TPflash(); - testOps.bubblePointTemperatureFlash(); - // testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.info(e.toString()); - } - testSystem.display(); + try { + // testOps.TPflash(); + testOps.bubblePointTemperatureFlash(); + // testOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.info(ex.toString()); } + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestMEGFlash.java b/src/test/java/neqsim/thermo/util/example/TestMEGFlash.java index 886f0219c8..d4e05223c8 100644 --- a/src/test/java/neqsim/thermo/util/example/TestMEGFlash.java +++ b/src/test/java/neqsim/thermo/util/example/TestMEGFlash.java @@ -16,64 +16,64 @@ * @since 2.2.3 */ public class TestMEGFlash { - static Logger logger = LogManager.getLogger(TestMEGFlash.class); + static Logger logger = LogManager.getLogger(TestMEGFlash.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAs(273.15 + 20, 10.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkCPAs(273.15 + 20, 10.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("CO2", 0.02); - // testSystem.addComponent("H2S", 0.00666); - // testSystem.addComponent("nitrogen", 0.03412); - testSystem.addComponent("nitrogen", 7.37e-6); - // testSystem.addComponent("ethane", 0.053); - // testSystem.addComponent("propane", 0.021); - // testSystem.addComponent("i-butane", 0.00442); - // testSystem.addComponent("n-butane", 0.007); - // testSystem.addComponent("iC5", 0.003); - // testSystem.addComponent("n-pentane", 0.003); - // testSystem.addComponent("n-hexane", 0.003); - // testSystem.addComponent("benzene", 1.6e-4); - // testSystem.addComponent("c-C6", 3.24e-4); - // testSystem.addComponent("n-heptane", 0.002961); - // testSystem.addComponent("toluene", 2.21e-4); - // testSystem.addComponent("n-octane", 0.002906); - // testSystem.addComponent("p-Xylene", 0.000995); - // testSystem.addComponent("n-nonane", 0.002193); - // testSystem.addComponent("nC10", 0.001616); - // testSystem.addComponent("nC12", 0.003254); + // testSystem.addComponent("CO2", 0.02); + // testSystem.addComponent("H2S", 0.00666); + // testSystem.addComponent("nitrogen", 0.03412); + testSystem.addComponent("nitrogen", 7.37e-6); + // testSystem.addComponent("ethane", 0.053); + // testSystem.addComponent("propane", 0.021); + // testSystem.addComponent("i-butane", 0.00442); + // testSystem.addComponent("n-butane", 0.007); + // testSystem.addComponent("iC5", 0.003); + // testSystem.addComponent("n-pentane", 0.003); + // testSystem.addComponent("n-hexane", 0.003); + // testSystem.addComponent("benzene", 1.6e-4); + // testSystem.addComponent("c-C6", 3.24e-4); + // testSystem.addComponent("n-heptane", 0.002961); + // testSystem.addComponent("toluene", 2.21e-4); + // testSystem.addComponent("n-octane", 0.002906); + // testSystem.addComponent("p-Xylene", 0.000995); + // testSystem.addComponent("n-nonane", 0.002193); + // testSystem.addComponent("nC10", 0.001616); + // testSystem.addComponent("nC12", 0.003254); - // testSystem.addComponent("MEG", 1.17/3.0*0.0453); - testSystem.addComponent("water", 1.0); + // testSystem.addComponent("MEG", 1.17/3.0*0.0453); + testSystem.addComponent("water", 1.0); - // testSystem.setSolidPhaseCheck("water"); - // testSystem.setHydrateCheck(true); + // testSystem.setSolidPhaseCheck("water"); + // testSystem.setHydrateCheck(true); - // testSystem.createDatabase(true); - testSystem.setMixingRule(7); - // testSystem.setMultiPhaseCheck(true); - try { - testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error("error", e); - } - testSystem.display(); - - // int n = testSystem.getNumberOfPhases()-1; - // double megwtfracInit = - // testSystem.getPhase(n).getComponent("MEG").getMolarMass()*testSystem.getPhase(n).getComponent("MEG").getx()/testSystem.getPhase(n).getMolarMass(); - // System.out.println("wt % MEG " + megwtfracInit*100); - // n = testSystem.getNumberOfPhases()-2; - // megwtfracInit = - // testSystem.getPhase(n).getComponent("MEG").getMolarMass()*testSystem.getPhase(n).getComponent("MEG").getx()/testSystem.getPhase(n).getMolarMass(); - // System.out.println("wt % MEG " + megwtfracInit*100); + // testSystem.createDatabase(true); + testSystem.setMixingRule(7); + // testSystem.setMultiPhaseCheck(true); + try { + testOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + + // int n = testSystem.getNumberOfPhases()-1; + // double megwtfracInit = + // testSystem.getPhase(n).getComponent("MEG").getMolarMass()*testSystem.getPhase(n).getComponent("MEG").getx()/testSystem.getPhase(n).getMolarMass(); + // System.out.println("wt % MEG " + megwtfracInit*100); + // n = testSystem.getNumberOfPhases()-2; + // megwtfracInit = + // testSystem.getPhase(n).getComponent("MEG").getMolarMass()*testSystem.getPhase(n).getComponent("MEG").getx()/testSystem.getPhase(n).getMolarMass(); + // System.out.println("wt % MEG " + megwtfracInit*100); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestNeqSimBug.java b/src/test/java/neqsim/thermo/util/example/TestNeqSimBug.java index e63abe50bd..b5e0610257 100644 --- a/src/test/java/neqsim/thermo/util/example/TestNeqSimBug.java +++ b/src/test/java/neqsim/thermo/util/example/TestNeqSimBug.java @@ -23,7 +23,6 @@ public class TestNeqSimBug { * @param args an array of {@link java.lang.String} objects */ public static void main(String[] args) { - // double[] spec1 = {1.0}; // salt water Pressure // double[] spec2 = { -39678.555}; // salt water Enthalpy diff --git a/src/test/java/neqsim/thermo/util/example/TestPCSAFT.java b/src/test/java/neqsim/thermo/util/example/TestPCSAFT.java index 766d9970ab..646c2d83fd 100644 --- a/src/test/java/neqsim/thermo/util/example/TestPCSAFT.java +++ b/src/test/java/neqsim/thermo/util/example/TestPCSAFT.java @@ -17,61 +17,60 @@ * @since 2.2.3 */ public class TestPCSAFT { - static Logger logger = LogManager.getLogger(TestPCSAFT.class); + static Logger logger = LogManager.getLogger(TestPCSAFT.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - // SystemInterface testSystem = new SystemSrkEos(273.14, 50.00); - // SystemInterface testSystem = new SystemGERG2004Eos(273.14-55, 75.00); - // SystemInterface testSystem = new SystemGERG2004Eos(260.0, 50.00); - SystemInterface testSystem = new SystemSrkCPAstatoil(353, 10.00); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("methane", 1.9894305); - testSystem.addComponent("n-heptane", 10.006343739); - // testSystem.addComponent("nC15", 0.004225765); - // testSystem.addComponent("i-butane", 1.05); - // testSystem.addComponent("n-butane", 1.465); - // testSystem.addTBPfraction("C7", 0.1, 110.0, 0.7); - // testSystem.addTBPfraction("C8", 1.1, 120.0, 0.75); - // testSystem.addTBPfraction("C9", 0.1, 140.0, 0.77); - // testSystem.addComponent("methanol", 10.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(1); - testSystem.init(0); - try { - testOps.TPflash(); - // testOps.dewPointTemperatureFlash(); - ThermodynamicModelTest test = new ThermodynamicModelTest(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + // SystemInterface testSystem = new SystemSrkEos(273.14, 50.00); + // SystemInterface testSystem = new SystemGERG2004Eos(273.14-55, 75.00); + // SystemInterface testSystem = new SystemGERG2004Eos(260.0, 50.00); + SystemInterface testSystem = new SystemSrkCPAstatoil(353, 10.00); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("methane", 1.9894305); + testSystem.addComponent("n-heptane", 10.006343739); + // testSystem.addComponent("nC15", 0.004225765); + // testSystem.addComponent("i-butane", 1.05); + // testSystem.addComponent("n-butane", 1.465); + // testSystem.addTBPfraction("C7", 0.1, 110.0, 0.7); + // testSystem.addTBPfraction("C8", 1.1, 120.0, 0.75); + // testSystem.addTBPfraction("C9", 0.1, 140.0, 0.77); + // testSystem.addComponent("methanol", 10.0); + testSystem.createDatabase(true); + testSystem.setMixingRule(1); + testSystem.init(0); + try { + testOps.TPflash(); + // testOps.dewPointTemperatureFlash(); + ThermodynamicModelTest test = new ThermodynamicModelTest(testSystem); - // test.runTest(); - // testOps.bubblePointPressureFlash(false); - } catch (Exception e) { - logger.error(e.toString(), e); - } - testSystem.display(); - double entropy = testSystem.getEntropy(); - testSystem.setPressure(testSystem.getPressure() + 50.0); - // double oldEnthalpy = testSystem.getEnthalpy(); - // testSystem.setTemperature(testSystem.getTemperature() + 10.0); - try { - // testOps.PHflash(oldEnthalpy-10000, 0); - testOps.PSflash(entropy); - } catch (Exception e) { - logger.error(e.toString()); - e.printStackTrace(); - } - testSystem.display(); - // System.out.println("enthalpy " + (testSystem.getEnthalpy() - oldEnthalpy)); - logger.info("fuagcity gas" + testSystem.getPhase(0).getFugacity(0)); - logger.info("fuagcity liquid" + testSystem.getPhase(1).getFugacity(0)); - logger.info("K " + testSystem.getPhase(1).getComponent(0).getFugacityCoefficient() - / testSystem.getPhase(0).getComponent(0).getFugacityCoefficient()); + // test.runTest(); + // testOps.bubblePointPressureFlash(false); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + double entropy = testSystem.getEntropy(); + testSystem.setPressure(testSystem.getPressure() + 50.0); + // double oldEnthalpy = testSystem.getEnthalpy(); + // testSystem.setTemperature(testSystem.getTemperature() + 10.0); + try { + // testOps.PHflash(oldEnthalpy-10000, 0); + testOps.PSflash(entropy); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + testSystem.display(); + // System.out.println("enthalpy " + (testSystem.getEnthalpy() - oldEnthalpy)); + logger.info("fugacity gas" + testSystem.getPhase(0).getFugacity(0)); + logger.info("fugacity liquid" + testSystem.getPhase(1).getFugacity(0)); + logger.info("K " + testSystem.getPhase(1).getComponent(0).getFugacityCoefficient() + / testSystem.getPhase(0).getComponent(0).getFugacityCoefficient()); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestPCSAFT1.java b/src/test/java/neqsim/thermo/util/example/TestPCSAFT1.java index 7641a00fca..399999d82d 100644 --- a/src/test/java/neqsim/thermo/util/example/TestPCSAFT1.java +++ b/src/test/java/neqsim/thermo/util/example/TestPCSAFT1.java @@ -7,86 +7,89 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TestPCSAFT1 class.

+ *

+ * TestPCSAFT1 class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class TestPCSAFT1 { - static Logger logger = LogManager.getLogger(TestPCSAFT1.class); + static Logger logger = LogManager.getLogger(TestPCSAFT1.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - double pressure = 0.0; - // String[] componentName = {"nitrogen", "CO2", "methane", "ethane", "propane", - // "i-butane", "n-butane", "22-dim-C3", "iC5", "n-pentane", "22-dim-C4", "c-C5", - // "23-dim-C4", "2-m-C5", "3-m-C5", "n-hexane", "n-heptane", "c-C6", "benzene", - // "n-octane", "c-C7", "toluene", "n-nonane", "c-C8", "m-Xylene"}; + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + double pressure = 0.0; + // String[] componentName = {"nitrogen", "CO2", "methane", "ethane", "propane", + // "i-butane", "n-butane", "22-dim-C3", "iC5", "n-pentane", "22-dim-C4", "c-C5", + // "23-dim-C4", "2-m-C5", "3-m-C5", "n-hexane", "n-heptane", "c-C6", "benzene", + // "n-octane", "c-C7", "toluene", "n-nonane", "c-C8", "m-Xylene"}; - // double[] compositions = {0.5108, 1.8922, 86.6295, 6.1903, 2.7941, 0.4635, - // 0.7524, 0.0160, 0.2109, 0.1837, 0.0055, 0.0164, 0.0094, 0.0402, 0.0221, - // 0.0503};//, 0.0297, 0.0866, 0.03262, 0.0039, 0.0317, 0.0209, 0.0006, 0.0008, - // 0.0023}; - // String[] componentName = {"nitrogen", "CO2", "methane", "ethane", "propane", - // "i-butane", "n-butane", "22-dim-C3", "iC5", "n-pentane", "22-dim-C4", "c-C5", - // "23-dim-C4", "2-m-C5", "3-m-C5", "n-hexane"};//, "n-heptane", "c-C6", - // "benzene", "n-octane", "c-C7", "toluene", "c-C8"}; + // double[] compositions = {0.5108, 1.8922, 86.6295, 6.1903, 2.7941, 0.4635, + // 0.7524, 0.0160, 0.2109, 0.1837, 0.0055, 0.0164, 0.0094, 0.0402, 0.0221, + // 0.0503}; //, 0.0297, 0.0866, 0.03262, 0.0039, 0.0317, 0.0209, 0.0006, 0.0008, + // 0.0023}; + // String[] componentName = {"nitrogen", "CO2", "methane", "ethane", "propane", + // "i-butane", "n-butane", "22-dim-C3", "iC5", "n-pentane", "22-dim-C4", "c-C5", + // "23-dim-C4", "2-m-C5", "3-m-C5", "n-hexane"}; //, "n-heptane", "c-C6", + // "benzene", "n-octane", "c-C7", "toluene", "c-C8"}; - String[] componentName = {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", - "n-butane", "22-dim-C3", "iC5", "n-pentane", "22-dim-C4", "c-C5", "23-dim-C4", - "2-m-C5", "3-m-C5", "n-hexane"}; + String[] componentName = + {"nitrogen", "CO2", "methane", "ethane", "propane", "i-butane", "n-butane", "22-dim-C3", + "iC5", "n-pentane", "22-dim-C4", "c-C5", "23-dim-C4", "2-m-C5", "3-m-C5", "n-hexane"}; - double[] compositions = {1.6298, 0.3207, 93.2144, 3.7328, 0.5654, 0.2906, 0.0653, 0.0042, - 0.0483, 0.0167, 0.0042, 0.0092, 0.0065, 0.0165, 0.0089, 0.0038,}; + double[] compositions = {1.6298, 0.3207, 93.2144, 3.7328, 0.5654, 0.2906, 0.0653, 0.0042, + 0.0483, 0.0167, 0.0042, 0.0092, 0.0065, 0.0165, 0.0089, 0.0038,}; - double[] uncertcompositions = {0.0655, 0.0240, 1.061, 0.2144, 0.0968, 0.0217, 0.0353, - 0.0011, 0.011, 0.007, 0.0005, 0.0011, 0.0008, 0.0028, 0.0015, 0.0035, 0.0021, 0.006, - 0.0025, 0.0003, 0.0022, 0.0014, 0.0001, 0.0002, 0.0007}; - double[] runcompositions = new double[componentName.length]; - SystemInterface testSystem = new SystemSrkEos(273.14, pressure); - // SystemInterface testSystem = new SystemPCSAFT(273.14, pressure); - double pres = 0.0; - testSystem = new SystemSrkEos(testSystem.getTemperature(), pres); + double[] uncertcompositions = {0.0655, 0.0240, 1.061, 0.2144, 0.0968, 0.0217, 0.0353, 0.0011, + 0.011, 0.007, 0.0005, 0.0011, 0.0008, 0.0028, 0.0015, 0.0035, 0.0021, 0.006, 0.0025, 0.0003, + 0.0022, 0.0014, 0.0001, 0.0002, 0.0007}; + double[] runcompositions = new double[componentName.length]; + SystemInterface testSystem = new SystemSrkEos(273.14, pressure); + // SystemInterface testSystem = new SystemPCSAFT(273.14, pressure); + double pres = 0.0; + testSystem = new SystemSrkEos(testSystem.getTemperature(), pres); - for (int i = 0; i < componentName.length; i++) { - double newVar = - cern.jet.random.Normal.staticNextDouble(compositions[i], uncertcompositions[i]); - newVar = cern.jet.random.Normal.staticNextDouble(compositions[i], - uncertcompositions[i]); - runcompositions[i] = compositions[i] + 0 * newVar; - testSystem.addComponent(componentName[i], runcompositions[i]); - } - testSystem.addTBPfraction("C7", 0.0477, 88.435 / 1000.0, 746.9 / 1000.0); - testSystem.addTBPfraction("C8", 0.0147, 101.948 / 1000.0, 763.7 / 1000.0); - testSystem.addTBPfraction("C9", 0.0004, 116.170 / 1000.0, 783.9 / 1000.0); - testSystem.init(0); - testSystem.init(1); - // if (testSystem.characterize()) { - // testSystem.getCharacterization().removeTBPfraction(); - // testSystem.getCharacterization().addTBPFractions(); - // } - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.init(0); - for (int p = 0; p < 1; p++) { - pres += 1.0; - testSystem.setPressure(pres); - try { - // testOps.dewPointTemperatureFlash(); - testOps.calcPTphaseEnvelope(false); - testOps.displayResult(); - // testSystem.display(); - logger.info("pressure " + testSystem.getPressure() + " dew point " - + testSystem.getTemperature()); - } catch (Exception e) { - logger.error(e.toString(), e); - } - } + for (int i = 0; i < componentName.length; i++) { + double newVar = + cern.jet.random.Normal.staticNextDouble(compositions[i], uncertcompositions[i]); + newVar = cern.jet.random.Normal.staticNextDouble(compositions[i], uncertcompositions[i]); + runcompositions[i] = compositions[i] + 0 * newVar; + testSystem.addComponent(componentName[i], runcompositions[i]); } + testSystem.addTBPfraction("C7", 0.0477, 88.435 / 1000.0, 746.9 / 1000.0); + testSystem.addTBPfraction("C8", 0.0147, 101.948 / 1000.0, 763.7 / 1000.0); + testSystem.addTBPfraction("C9", 0.0004, 116.170 / 1000.0, 783.9 / 1000.0); + testSystem.init(0); + testSystem.init(1); + // if (testSystem.characterize()) { + // testSystem.getCharacterization().removeTBPfraction(); + // testSystem.getCharacterization().addTBPFractions(); + // } + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.init(0); + for (int p = 0; p < 1; p++) { + pres += 1.0; + testSystem.setPressure(pres); + try { + // testOps.dewPointTemperatureFlash(); + testOps.calcPTphaseEnvelope(false); + testOps.displayResult(); + // testSystem.display(); + logger.info( + "pressure " + testSystem.getPressure() + " dew point " + testSystem.getTemperature()); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestPCSAFT1_1.java b/src/test/java/neqsim/thermo/util/example/TestPCSAFT1_1.java index b83a7f7c77..ba95a24069 100644 --- a/src/test/java/neqsim/thermo/util/example/TestPCSAFT1_1.java +++ b/src/test/java/neqsim/thermo/util/example/TestPCSAFT1_1.java @@ -16,48 +16,46 @@ * @since 2.2.3 */ public class TestPCSAFT1_1 { - static Logger logger = LogManager.getLogger(TestPCSAFT1_1.class); + static Logger logger = LogManager.getLogger(TestPCSAFT1_1.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - double pressure = 5.0; - String[] componentName = - {"methane", "ethane", "propane", "i-butane", "n-butane", "benzene"}; - double[] compositions = {93.121, 3.04830, 0.9936, 1.0323, 1.5099, 0.2948}; - double[] uncertcompositions = {1.1405, 0.1056, 0.0466, 0.0358, 0.0523, 0.0138}; - double[] runcompositions = new double[componentName.length]; - SystemInterface testSystem = new SystemSrkEos(273.14, pressure); - double pres = 0.0; - for (int p = 0; p < 1; p++) { - pres += 5.0; - for (int k = 0; k < 1; k++) { - testSystem = new SystemSrkEos(testSystem.getTemperature(), pres); - for (int i = 0; i < componentName.length; i++) { - double newVar = cern.jet.random.Normal.staticNextDouble(compositions[i], - uncertcompositions[i]); - newVar = cern.jet.random.Normal.staticNextDouble(compositions[i], - uncertcompositions[i]); - runcompositions[i] = compositions[i] + newVar; - testSystem.addComponent(componentName[i], runcompositions[i]); - } - // testSystem.createDatabase(true); - // testSystem.setMixingRule(1); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.init(0); - try { - testOps.dewPointTemperatureFlash(); - logger.info("pressure " + testSystem.getPressure() + " dew point " - + testSystem.getTemperature()); - } catch (Exception e) { - logger.error(e.toString(), e); - } - } + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + double pressure = 5.0; + String[] componentName = {"methane", "ethane", "propane", "i-butane", "n-butane", "benzene"}; + double[] compositions = {93.121, 3.04830, 0.9936, 1.0323, 1.5099, 0.2948}; + double[] uncertcompositions = {1.1405, 0.1056, 0.0466, 0.0358, 0.0523, 0.0138}; + double[] runcompositions = new double[componentName.length]; + SystemInterface testSystem = new SystemSrkEos(273.14, pressure); + double pres = 0.0; + for (int p = 0; p < 1; p++) { + pres += 5.0; + for (int k = 0; k < 1; k++) { + testSystem = new SystemSrkEos(testSystem.getTemperature(), pres); + for (int i = 0; i < componentName.length; i++) { + double newVar = + cern.jet.random.Normal.staticNextDouble(compositions[i], uncertcompositions[i]); + newVar = cern.jet.random.Normal.staticNextDouble(compositions[i], uncertcompositions[i]); + runcompositions[i] = compositions[i] + newVar; + testSystem.addComponent(componentName[i], runcompositions[i]); } + // testSystem.createDatabase(true); + // testSystem.setMixingRule(1); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.init(0); + try { + testOps.dewPointTemperatureFlash(); + logger.info( + "pressure " + testSystem.getPressure() + " dew point " + testSystem.getTemperature()); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } } + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestPSRK.java b/src/test/java/neqsim/thermo/util/example/TestPSRK.java index 9ec8a5c400..532728a0da 100644 --- a/src/test/java/neqsim/thermo/util/example/TestPSRK.java +++ b/src/test/java/neqsim/thermo/util/example/TestPSRK.java @@ -16,55 +16,57 @@ * @since 2.2.3 */ public class TestPSRK { - static Logger logger = LogManager.getLogger(TestPSRK.class); + static Logger logger = LogManager.getLogger(TestPSRK.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemSrkEos(325.8, 10.0); - // SystemInterface testSystem = new SystemCSPsrkEos(245.8, 70.0); - // SystemInterface testSystem = new SystemSrkEos(265.8, 20.0); - SystemInterface testSystem = new SystemPsrkEos(255.32, 5); - // SystemInterface testSystem = new SystemPrEos(240,50.0301325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemSrkEos(325.8, 10.0); + // SystemInterface testSystem = new SystemCSPsrkEos(245.8, 70.0); + // SystemInterface testSystem = new SystemSrkEos(265.8, 20.0); + SystemInterface testSystem = new SystemPsrkEos(255.32, 5); + // SystemInterface testSystem = new SystemPrEos(240,50.0301325); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("CO2", 84.29); - // testSystem.addComponent("MDEA", 10.09); - testSystem.addComponent("H2S", 0.99); - testSystem.addComponent("methane", 0.01); - // testSystem.addComponent("ethane", 0.02972); - // testSystem.addComponent("propane", 1.01008); - // testSystem.addComponent("i-butane", 0.0105); - // testSystem.addComponent("n-butane", 1.01465); - // testSystem.addComponent("nC10", 1.01465); + // testSystem.addComponent("CO2", 84.29); + // testSystem.addComponent("MDEA", 10.09); + testSystem.addComponent("H2S", 0.99); + testSystem.addComponent("methane", 0.01); + // testSystem.addComponent("ethane", 0.02972); + // testSystem.addComponent("propane", 1.01008); + // testSystem.addComponent("i-butane", 0.0105); + // testSystem.addComponent("n-butane", 1.01465); + // testSystem.addComponent("nC10", 1.01465); - // testSystem.addComponent("nitrogen", 10.2); - // testSystem.addComponent("nitrogen", 10.01); - // testSystem.addTBPfraction("C7", 1.01,100.0, 0.98); - // testSystem.addTBPfraction("C8", 1.01,120.0, 1.01); - testSystem.createDatabase(true); - // testSystem.setMixingRule(1); - // testSystem.set - testSystem.setMixingRule("HV", "UNIFAC_PSRK"); - // testSystem.setMixingRule("WS","UNIFAC_PSRK"); - testSystem.init(0); - testSystem.init(2); + // testSystem.addComponent("nitrogen", 10.2); + // testSystem.addComponent("nitrogen", 10.01); + // testSystem.addTBPfraction("C7", 1.01,100.0, 0.98); + // testSystem.addTBPfraction("C8", 1.01,120.0, 1.01); + testSystem.createDatabase(true); + // testSystem.setMixingRule(1); + // testSystem.set + testSystem.setMixingRule("HV", "UNIFAC_PSRK"); + // testSystem.setMixingRule("WS","UNIFAC_PSRK"); + testSystem.init(0); + testSystem.init(2); - // thermo.ThermodynamicModelTest testModel = new - // thermo.ThermodynamicModelTest(testSystem); - // testModel.runTest(); + // thermo.ThermodynamicModelTest testModel = new + // thermo.ThermodynamicModelTest(testSystem); + // testModel.runTest(); - try { - testOps.dewPointPressureFlash();// (false); - // testOps.dewPointTemperatureFlash(); - // testOps.calcPTphaseEnvelope(0.0005, 0.0001); testOps.displayResult(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); - logger.info(testSystem.getTemperature() - 273.15); + try { + testOps.dewPointPressureFlash(); // (false); + // testOps.dewPointTemperatureFlash(); + // testOps.calcPTphaseEnvelope(0.0005, 0.0001); testOps.displayResult(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + logger.info(testSystem.getTemperature() - 273.15); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestSRKWS.java b/src/test/java/neqsim/thermo/util/example/TestSRKWS.java index 743a2c06e0..e4ad97ca70 100644 --- a/src/test/java/neqsim/thermo/util/example/TestSRKWS.java +++ b/src/test/java/neqsim/thermo/util/example/TestSRKWS.java @@ -16,40 +16,42 @@ * @since 2.2.3 */ public class TestSRKWS { - static Logger logger = LogManager.getLogger(TestSRKWS.class); + static Logger logger = LogManager.getLogger(TestSRKWS.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemSrkEos(245.8, 50.0); - SystemInterface testSystem = new SystemPsrkEos(245.8, 50.0); - // SystemInterface testSystem = new SystemCSPsrkEos(245.8, 70.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemSrkEos(245.8, 50.0); + SystemInterface testSystem = new SystemPsrkEos(245.8, 50.0); + // SystemInterface testSystem = new SystemCSPsrkEos(245.8, 70.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 84.29); - testSystem.addComponent("ethane", 10.09); - testSystem.addComponent("propane", 4.0); - testSystem.addComponent("i-butane", 0.59); - testSystem.addComponent("n-butane", 1.02); + testSystem.addComponent("methane", 84.29); + testSystem.addComponent("ethane", 10.09); + testSystem.addComponent("propane", 4.0); + testSystem.addComponent("i-butane", 0.59); + testSystem.addComponent("n-butane", 1.02); - testSystem.createDatabase(true); - // testSystem.setMixingRule(2); - // testSystem.setMixingRule("HV","UNIFAC_PSRK"); - testSystem.setMixingRule("WS", "UNIFAC_PSRK"); - testSystem.init(0); - testSystem.init(3); + testSystem.createDatabase(true); + // testSystem.setMixingRule(2); + // testSystem.setMixingRule("HV","UNIFAC_PSRK"); + testSystem.setMixingRule("WS", "UNIFAC_PSRK"); + testSystem.init(0); + testSystem.init(3); - try { - testOps.dewPointTemperatureFlash();// (false); - // testOps.bubblePointTemperatureFlash(); - // testOps.calcPTphaseEnvelope(0.0005, 0.0001); testOps.displayResult(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); - logger.info(testSystem.getTemperature() - 273.15); + try { + testOps.dewPointTemperatureFlash(); // (false); + // testOps.bubblePointTemperatureFlash(); + // testOps.calcPTphaseEnvelope(0.0005, 0.0001); testOps.displayResult(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + logger.info(testSystem.getTemperature() - 273.15); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestSurfaceTenison.java b/src/test/java/neqsim/thermo/util/example/TestSurfaceTenison.java index 06a39c0670..56a088dd59 100644 --- a/src/test/java/neqsim/thermo/util/example/TestSurfaceTenison.java +++ b/src/test/java/neqsim/thermo/util/example/TestSurfaceTenison.java @@ -7,45 +7,49 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

TestSurfaceTenison class.

+ *

+ * TestSurfaceTenison class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class TestSurfaceTenison { - static Logger logger = LogManager.getLogger(TestSurfaceTenison.class); + static Logger logger = LogManager.getLogger(TestSurfaceTenison.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(310.95, 20.00); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 0.736); - // testSystem.addComponent("CO2", 91.681); - // testSystem.addComponent("etbhane", 0.251); - // testSystem.addComponent("propane", 0.332); - testSystem.addComponent("n-butane", 0.264); - testSystem.addComponent("n-pentane", 0.344); - // testSystem.addComponent("n-hexane", 0.272); - // testSystem.addComponent("n-heptane", 4); - // testSystem.addComponent("n-octane", 0.419); - // testSystem.addComponent("nC10", 1.4); - // testSystem.addComponent("nC14", 0.6); - testSystem.useVolumeCorrection(false); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(310.95, 20.00); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 0.736); + // testSystem.addComponent("CO2", 91.681); + // testSystem.addComponent("etbhane", 0.251); + // testSystem.addComponent("propane", 0.332); + testSystem.addComponent("n-butane", 0.264); + testSystem.addComponent("n-pentane", 0.344); + // testSystem.addComponent("n-hexane", 0.272); + // testSystem.addComponent("n-heptane", 4); + // testSystem.addComponent("n-octane", 0.419); + // testSystem.addComponent("nC10", 1.4); + // testSystem.addComponent("nC14", 0.6); + testSystem.useVolumeCorrection(false); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - try { - testOps.TPflash(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); - testSystem.display(); - testSystem.display(); + try { + testOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + testSystem.display(); + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestUMRPRU.java b/src/test/java/neqsim/thermo/util/example/TestUMRPRU.java index 68114280fe..8b052a110d 100644 --- a/src/test/java/neqsim/thermo/util/example/TestUMRPRU.java +++ b/src/test/java/neqsim/thermo/util/example/TestUMRPRU.java @@ -16,94 +16,96 @@ * @since 2.2.3 */ public class TestUMRPRU { - static Logger logger = LogManager.getLogger(TestUMRPRU.class); + static Logger logger = LogManager.getLogger(TestUMRPRU.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 - 3.5, 33.0); - // SystemInterface testSystem = new SystemUMRPRUMCEos(273.15 + 20.5, 70.0); - // SystemInterface testSystem = new SystemPsrkEos(273.15 - 133.85, 8.557); - SystemInterface testSystem = new SystemUMRPRUMCEos(273.15 + 15, 10.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("nitrogen", 1); - // testSystem.addComponent("CO2", 1); - testSystem.addComponent("methane", 80); - // testSystem.addComponent("ethane", 15); - // testSystem.addComponent("propane", 1); - // testSystem.addComponent("i-butane", 0.1); - // testSystem.addComponent("n-butane", 0.1); - // testSystem.addComponent("i-pentane", 0.05); - // testSystem.addComponent("n-pentane", 0.05); - testSystem.addComponent("n-heptane", 22.05); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 - 3.5, 33.0); + // SystemInterface testSystem = new SystemUMRPRUMCEos(273.15 + 20.5, 70.0); + // SystemInterface testSystem = new SystemPsrkEos(273.15 - 133.85, 8.557); + SystemInterface testSystem = new SystemUMRPRUMCEos(273.15 + 15, 10.0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("nitrogen", 1); + // testSystem.addComponent("CO2", 1); + testSystem.addComponent("methane", 80); + // testSystem.addComponent("ethane", 15); + // testSystem.addComponent("propane", 1); + // testSystem.addComponent("i-butane", 0.1); + // testSystem.addComponent("n-butane", 0.1); + // testSystem.addComponent("i-pentane", 0.05); + // testSystem.addComponent("n-pentane", 0.05); + testSystem.addComponent("n-heptane", 22.05); - testSystem.addTBPfraction("C7", .0010, 85.5 / 1000.0, 0.66533); - testSystem.addTBPfraction("C8", .0010, 91.06 / 1000.0, 0.74433); - testSystem.addTBPfraction("C9", .0010, 103.61 / 1000.0, 0.76833); - testSystem.addTBPfraction("C10", 0.001, 117.2 / 1000.0, 0.785); - testSystem.addTBPfraction("C11", 0.001, 155.04 / 1000.0, 0.800); - testSystem.addTBPfraction("C12", .01, 249.98 / 1000.0, 0.84566); - testSystem.addTBPfraction("C13", .01, 458.76 / 1000.0, 0.89767); + testSystem.addTBPfraction("C7", .0010, 85.5 / 1000.0, 0.66533); + testSystem.addTBPfraction("C8", .0010, 91.06 / 1000.0, 0.74433); + testSystem.addTBPfraction("C9", .0010, 103.61 / 1000.0, 0.76833); + testSystem.addTBPfraction("C10", 0.001, 117.2 / 1000.0, 0.785); + testSystem.addTBPfraction("C11", 0.001, 155.04 / 1000.0, 0.800); + testSystem.addTBPfraction("C12", .01, 249.98 / 1000.0, 0.84566); + testSystem.addTBPfraction("C13", .01, 458.76 / 1000.0, 0.89767); - testSystem.addComponent("water", 10.1); - // testSystem.addComponent("MEG", 10.1); - // testSystem.addComponent("TEG", 10.1); - // testSystem.addTBPfraction("C10", 0.1, 117.2 / 1000.0, 0.785); - testSystem.createDatabase(true); - // testSystem.setMixingRule(2); + testSystem.addComponent("water", 10.1); + // testSystem.addComponent("MEG", 10.1); + // testSystem.addComponent("TEG", 10.1); + // testSystem.addTBPfraction("C10", 0.1, 117.2 / 1000.0, 0.785); + testSystem.createDatabase(true); + // testSystem.setMixingRule(2); - testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - testSystem.setMultiPhaseCheck(true); - // testSystem.setMultiPhaseCheck(true); - // testSystem.setMixingRule("HV", "UNIFAC_PSRK"); - // testSystem.setMixingRule(2); - // testSystem.setBmixType(1); - testSystem.init(0); - // testSystem.saveObject(2043); - // testSystem.init(3,1); - try { - // testOps.dewPointTemperatureFlash(); - for (int i = 0; i < 1; i++) { - testOps.TPflash(); - } - // testSystem.display(); - // double enthalpy = testSystem.getEnthalpy(); - // testSystem.setPressure(20.0); - // testOps.PHflash(enthalpy, 0); - // testSystem.display(); - // testOps.setRunAsThread(true); - // testOps.calcPTphaseEnvelope(true);//true); - // boolean isFinished = testOps.waitAndCheckForFinishedCalculation(10000); + testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); + testSystem.setMultiPhaseCheck(true); + // testSystem.setMultiPhaseCheck(true); + // testSystem.setMixingRule("HV", "UNIFAC_PSRK"); + // testSystem.setMixingRule(2); + // testSystem.setBmixType(1); + testSystem.init(0); + // testSystem.saveObject(2043); + // testSystem.init(3,1); + try { + // testOps.dewPointTemperatureFlash(); + for (int i = 0; i < 1; i++) { + testOps.TPflash(); + } + // testSystem.display(); + // double enthalpy = testSystem.getEnthalpy(); + // testSystem.setPressure(20.0); + // testOps.PHflash(enthalpy, 0); + // testSystem.display(); + // testOps.setRunAsThread(true); + // testOps.calcPTphaseEnvelope(true); //true); + // boolean isFinished = testOps.waitAndCheckForFinishedCalculation(10000); - // testOps.displayResult(); - } catch (Exception e) { - logger.error(e.toString()); - } - // testSystem.saveObject(880); - // testSystem.saveFluid(30, "Norne"); - testSystem.display(); - testSystem.init(3); - double cp = testSystem.getPhase(1).getCp(); + // testOps.displayResult(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + // testSystem.saveObject(880); + // testSystem.saveFluid(30, "Norne"); + testSystem.display(); + testSystem.init(3); + double cp = testSystem.getPhase(1).getCp(); - testSystem.setTemperature(testSystem.getTemperature() + 0.001); - testSystem.init(3); - double ent1 = testSystem.getPhase(1).getEnthalpy(); + testSystem.setTemperature(testSystem.getTemperature() + 0.001); + testSystem.init(3); + double ent1 = testSystem.getPhase(1).getEnthalpy(); - testSystem.setTemperature(testSystem.getTemperature() - 0.002); - testSystem.init(3); - double ent2 = testSystem.getPhase(1).getEnthalpy(); + testSystem.setTemperature(testSystem.getTemperature() - 0.002); + testSystem.init(3); + double ent2 = testSystem.getPhase(1).getEnthalpy(); - double numCp = (ent1 - ent2) / 0.002; + double numCp = (ent1 - ent2) / 0.002; - System.out.println("Cp " + cp + " numCp " + numCp); - System.out.println("entropy " + testSystem.getPhase(1).getEntropy()); + //System.out.println("Cp " + cp + " numCp " + numCp); + //System.out.println("entropy " + testSystem.getPhase(1).getEntropy()); - // thermo.ThermodynamicModelTest testModel = new - // thermo.ThermodynamicModelTest(testSystem); - // testModel.runTest(); - // testSystem.display(); - } + // thermo.ThermodynamicModelTest testModel = new + // thermo.ThermodynamicModelTest(testSystem); + // testModel.runTest(); + // testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestUMRPRUMC.java b/src/test/java/neqsim/thermo/util/example/TestUMRPRUMC.java index dc453e4691..a2b24cb239 100644 --- a/src/test/java/neqsim/thermo/util/example/TestUMRPRUMC.java +++ b/src/test/java/neqsim/thermo/util/example/TestUMRPRUMC.java @@ -16,110 +16,109 @@ * @since 2.2.3 */ public class TestUMRPRUMC { - static Logger logger = LogManager.getLogger(TestUMRPRUMC.class); + static Logger logger = LogManager.getLogger(TestUMRPRUMC.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem = new SystemUMRPRUMCEos(273.15 + 20, 10.0); - SystemInterface testSystem = new SystemSrkEos(273.15 + 20, 15.0); - // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 20, 1.0); - // testSystem.getCharacterization().setTBPModel("PedersenPR");//(RiaziDaubert - // PedersenPR PedersenSRK - // testSystem.addComponent("CO2", 0.1) - testSystem.addComponent("nitrogen", 1.1472); - testSystem.addComponent("CO2", 0.5339); - testSystem.addComponent("methane", 95.2412); - testSystem.addComponent("ethane", 2.2029); - testSystem.addComponent("propane", 0.3231); - testSystem.addComponent("i-butane", 0.1341); - testSystem.addComponent("n-butane", 0.0827); - // testSystem.addComponent("22-dim-C3", 10.0); - // testSystem.addComponent("i-pentane", 0.0679); - // testSystem.addComponent("n-pentane", 0.0350); - // testSystem.addComponent("c-C5", 0.0291185); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem = new SystemUMRPRUMCEos(273.15 + 20, 10.0); + SystemInterface testSystem = new SystemSrkEos(273.15 + 20, 15.0); + // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 20, 1.0); + // testSystem.getCharacterization().setTBPModel("PedersenPR"); //(RiaziDaubert + // PedersenPR PedersenSRK + // testSystem.addComponent("CO2", 0.1) + testSystem.addComponent("nitrogen", 1.1472); + testSystem.addComponent("CO2", 0.5339); + testSystem.addComponent("methane", 95.2412); + testSystem.addComponent("ethane", 2.2029); + testSystem.addComponent("propane", 0.3231); + testSystem.addComponent("i-butane", 0.1341); + testSystem.addComponent("n-butane", 0.0827); + // testSystem.addComponent("22-dim-C3", 10.0); + // testSystem.addComponent("i-pentane", 0.0679); + // testSystem.addComponent("n-pentane", 0.0350); + // testSystem.addComponent("c-C5", 0.0291185); - // testSystem.addComponent("22-dim-C4", 0.00297); - // testSystem.addComponent("23-dim-C4", 0.00689); - // testSystem.addComponent("2-m-C5", 0.0352); - // testSystem.addComponent("3-m-C5", 0.0108); + // testSystem.addComponent("22-dim-C4", 0.00297); + // testSystem.addComponent("23-dim-C4", 0.00689); + // testSystem.addComponent("2-m-C5", 0.0352); + // testSystem.addComponent("3-m-C5", 0.0108); - // testSystem.addComponent("2-m-C5", 10.0); - // testSystem.addComponent("n-hexane", 0.0176); - // testSystem.addComponent("c-hexane", 0.0720); - // testSystem.addComponent("benzene", 0.0017); + // testSystem.addComponent("2-m-C5", 10.0); + // testSystem.addComponent("n-hexane", 0.0176); + // testSystem.addComponent("c-hexane", 0.0720); + // testSystem.addComponent("benzene", 0.0017); - // testSystem.addComponent("n-heptane", 0.0128); - // testSystem.addComponent("toluene", 0.0043); - // testSystem.addComponent("c-C7", 0.0518); - // testSystem.addComponent("n-octane", 0.0038); - // testSystem.addComponent("m-Xylene", 0.0031); - // testSystem.addComponent("c-C8", 0.0098); - // testSystem.addComponent("n-nonane", 0.0034); - // testSystem.addComponent("nC10", 0.0053); - // testSystem.addComponent("nC11", 0.0004); - /* - * testSystem.addComponent("c-hexane", 10.0); testSystem.addComponent("c-hexane", 10.0); - * testSystem.addComponent("223-TM-C4", 10.0); testSystem.addComponent("n-heptane", 10.0); - * testSystem.addComponent("n-heptane", 10.0); testSystem.addComponent("M-cy-C6", 10.0); - * testSystem.addComponent("toluene", 10.0); testSystem.addComponent("33-DM-C6", 10.0); - * testSystem.addComponent("n-octane", 10.0); testSystem.addComponent("ethylcyclohexane", - * 10.0); testSystem.addComponent("m-Xylene", 10.0); testSystem.addComponent("3-M-C8", - * 10.0); testSystem.addComponent("n-nonane", 10.0); testSystem.addComponent("n-Bcychexane", - * 10.0); testSystem.addComponent("Pent-CC6", 10.0); // testSystem.addComponent("methanol", - * 10.0); - */ - // testSystem.addComponent("water", 10.0); - // testSystem.addComponent("n-octane", 10.0); + // testSystem.addComponent("n-heptane", 0.0128); + // testSystem.addComponent("toluene", 0.0043); + // testSystem.addComponent("c-C7", 0.0518); + // testSystem.addComponent("n-octane", 0.0038); + // testSystem.addComponent("m-Xylene", 0.0031); + // testSystem.addComponent("c-C8", 0.0098); + // testSystem.addComponent("n-nonane", 0.0034); + // testSystem.addComponent("nC10", 0.0053); + // testSystem.addComponent("nC11", 0.0004); + /* + * testSystem.addComponent("c-hexane", 10.0); testSystem.addComponent("c-hexane", 10.0); + * testSystem.addComponent("223-TM-C4", 10.0); testSystem.addComponent("n-heptane", 10.0); + * testSystem.addComponent("n-heptane", 10.0); testSystem.addComponent("M-cy-C6", 10.0); + * testSystem.addComponent("toluene", 10.0); testSystem.addComponent("33-DM-C6", 10.0); + * testSystem.addComponent("n-octane", 10.0); testSystem.addComponent("ethylcyclohexane", 10.0); + * testSystem.addComponent("m-Xylene", 10.0); testSystem.addComponent("3-M-C8", 10.0); + * testSystem.addComponent("n-nonane", 10.0); testSystem.addComponent("n-Bcychexane", 10.0); + * testSystem.addComponent("Pent-CC6", 10.0); // testSystem.addComponent("methanol", 10.0); + */ + // testSystem.addComponent("water", 10.0); + // testSystem.addComponent("n-octane", 10.0); - // testSystem.addTBPfraction("C8", 1.0, 100.0 / 1000.0, 0.8); - // testSystem.addTBPfraction("LP_C17", 0.03, 238.779998779297 / 1000.0, - // 0.84325); - // testSystem.addComponent("ethane", 1.0); - // testSystem.addComponent("water", 7.0); - // testSystem.addComponent("CO2", 1.0e-10); - // testSystem.addComponent("MEG", 3.0); - // testSystem.addComponent("ethane", 0.375); - // // testSystem.addComponent("ethane", 99.9); - // testSystem.addComponent("nC27", 0.25); - testSystem.createDatabase(true); - // testSystem.setHydrateCheck(true); - // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); - // testSystem.setMixingRule(2); - // testSystem.setMultiPhaseCheck(true); - testSystem.init(0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addTBPfraction("C8", 1.0, 100.0 / 1000.0, 0.8); + // testSystem.addTBPfraction("LP_C17", 0.03, 238.779998779297 / 1000.0, + // 0.84325); + // testSystem.addComponent("ethane", 1.0); + // testSystem.addComponent("water", 7.0); + // testSystem.addComponent("CO2", 1.0e-10); + // testSystem.addComponent("MEG", 3.0); + // testSystem.addComponent("ethane", 0.375); + // // testSystem.addComponent("ethane", 99.9); + // testSystem.addComponent("nC27", 0.25); + testSystem.createDatabase(true); + // testSystem.setHydrateCheck(true); + // testSystem.setMixingRule("HV", "UNIFAC_UMRPRU"); + // testSystem.setMixingRule(2); + // testSystem.setMultiPhaseCheck(true); + testSystem.init(0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.setAttractiveTerm(13); - try { - testOps.TPflash(); - testSystem.display(); - // for (int i = 0; i < 1; i++) { - // testOps.TPflash(); - // testSystem.init(3); - // testOps.hydrateFormationTemperature(); - // testSystem.init(3); - // } - testOps.calcPTphaseEnvelope(); - testOps.displayResult(); - // testOps.bubblePointPressureFlash(false); - // testOps.dewPointTemperatureFlash(false); - // testOps.calcPTphaseEnvelope(false); + // testSystem.setAttractiveTerm(13); + try { + testOps.TPflash(); + testSystem.display(); + // for (int i = 0; i < 1; i++) { + // testOps.TPflash(); + // testSystem.init(3); + // testOps.hydrateFormationTemperature(); + // testSystem.init(3); + // } + testOps.calcPTphaseEnvelope(); + testOps.displayResult(); + // testOps.bubblePointPressureFlash(false); + // testOps.dewPointTemperatureFlash(false); + // testOps.calcPTphaseEnvelope(false); - // testOps.displayResult(); - } catch (Exception e) { - logger.error(e.toString()); - } - // System.out.println("activity coefficient water " + - // testSystem.getPhase(1).getActivityCoefficient(1)); - // testSystem.display(); - // testSystem.saveObjectToFile("C:\\Users\\esol\\AppData\\Roaming\\neqsim\\fluids\\testUMR.neqsim",""); - // testSystem.saveFluid(30); - // testSystem.saveObject(2187); + // testOps.displayResult(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + // System.out.println("activity coefficient water " + + // testSystem.getPhase(1).getActivityCoefficient(1)); + // testSystem.display(); + // testSystem.saveObjectToFile("C:\\Users\\esol\\AppData\\Roaming\\neqsim\\fluids\\testUMR.neqsim",""); + // testSystem.saveFluid(30); + // testSystem.saveObject(2187); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestUNIFAC.java b/src/test/java/neqsim/thermo/util/example/TestUNIFAC.java index 7fd0274394..ba0c3614ca 100644 --- a/src/test/java/neqsim/thermo/util/example/TestUNIFAC.java +++ b/src/test/java/neqsim/thermo/util/example/TestUNIFAC.java @@ -16,48 +16,50 @@ * @since 2.2.3 */ public class TestUNIFAC { - static Logger logger = LogManager.getLogger(TestUNIFAC.class); + static Logger logger = LogManager.getLogger(TestUNIFAC.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemPsrkEos(273.15 + 120.0, 0.15); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(273.15 + 25.0, - // 1.01325301325); - // SystemInterface testSystem = new SystemNRTL(273.15 + 174.0,1.301325); - // SystemInterface testSystem = new SystemPsrkEos(273.15 + 74.0,1.301325); - // SystemInterface testSystem = new SystemSrkEos(143.15,1.301325); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(193.15 - // ,10.301325); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemPsrkEos(273.15 + 120.0, 0.15); + // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(273.15 + 25.0, + // 1.01325301325); + // SystemInterface testSystem = new SystemNRTL(273.15 + 174.0,1.301325); + // SystemInterface testSystem = new SystemPsrkEos(273.15 + 74.0,1.301325); + // SystemInterface testSystem = new SystemSrkEos(143.15,1.301325); + // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(193.15 + // ,10.301325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("acetone", 100.0); - // testSystem.addComponent("n-pentane", 100.00047); - // testSystem.addComponent("c-C6", 90.0); - // testSystem.addComponent("methane", 10.0); - // testSystem.addComponent("ethane", 10.0); - testSystem.addComponent("TEG", 0.05); - testSystem.addComponent("MDEA", 0.95); - // testSystem.addComponent("water", 10.0); - testSystem.createDatabase(true); - // testSystem.setMixingRule(4); - testSystem.setMixingRule("HV", "UNIFAC_PSRK"); - testSystem.init(0); - testSystem.init(1); - logger.info(testSystem.getPhase(1).getActivityCoefficient(0)); - logger.info("gibbs " + testSystem.getPhase(1).getExessGibbsEnergy()); - try { - // testOps.bubblePointPressureFlash(false); - testOps.dewPointPressureFlash(); - // testOps.bubblePointTemperatureFlash(); - } catch (Exception e) { - logger.error(e.toString(), e); - } - testSystem.display(); - logger.info(testSystem.getPhase(1).getActivityCoefficient(0)); - logger.info("gibbs " + testSystem.getPhase(1).getGibbsEnergy()); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("acetone", 100.0); + // testSystem.addComponent("n-pentane", 100.00047); + // testSystem.addComponent("c-C6", 90.0); + // testSystem.addComponent("methane", 10.0); + // testSystem.addComponent("ethane", 10.0); + testSystem.addComponent("TEG", 0.05); + testSystem.addComponent("MDEA", 0.95); + // testSystem.addComponent("water", 10.0); + testSystem.createDatabase(true); + // testSystem.setMixingRule(4); + testSystem.setMixingRule("HV", "UNIFAC_PSRK"); + testSystem.init(0); + testSystem.init(1); + logger.info(testSystem.getPhase(1).getActivityCoefficient(0)); + logger.info("gibbs " + testSystem.getPhase(1).getExcessGibbsEnergy()); + try { + // testOps.bubblePointPressureFlash(false); + testOps.dewPointPressureFlash(); + // testOps.bubblePointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + logger.info(testSystem.getPhase(1).getActivityCoefficient(0)); + logger.info("gibbs " + testSystem.getPhase(1).getGibbsEnergy()); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestUNIFAC_1.java b/src/test/java/neqsim/thermo/util/example/TestUNIFAC_1.java index 19c85cbd08..80f294d804 100644 --- a/src/test/java/neqsim/thermo/util/example/TestUNIFAC_1.java +++ b/src/test/java/neqsim/thermo/util/example/TestUNIFAC_1.java @@ -16,107 +16,102 @@ * @since 2.2.3 */ public class TestUNIFAC_1 { - static Logger logger = LogManager.getLogger(TestUNIFAC_1.class); + static Logger logger = LogManager.getLogger(TestUNIFAC_1.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - SystemInterface testSystem = new SystemPsrkEos(273.15 + 120.0, 0.15); - SystemInterface testSystem2 = new SystemPsrkEos(273.15 + 120.0, 0.15); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(273.15 + 25.0, - // 1.01325301325); - // SystemInterface testSystem = new SystemNRTL(273.15 + 174.0,1.301325); - // SystemInterface testSystem = new SystemPsrkEos(273.15 + 74.0,1.301325); - // SystemInterface testSystem = new SystemSrkEos(143.15,1.301325); - // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(193.15 - // ,10.301325); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + SystemInterface testSystem = new SystemPsrkEos(273.15 + 120.0, 0.15); + SystemInterface testSystem2 = new SystemPsrkEos(273.15 + 120.0, 0.15); + // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(273.15 + 25.0, + // 1.01325301325); + // SystemInterface testSystem = new SystemNRTL(273.15 + 174.0,1.301325); + // SystemInterface testSystem = new SystemPsrkEos(273.15 + 74.0,1.301325); + // SystemInterface testSystem = new SystemSrkEos(143.15,1.301325); + // SystemInterface testSystem = new SystemSrkSchwartzentruberEos(193.15 + // ,10.301325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("acetone", 100.0); - // testSystem.addComponent("n-pentane", 100.00047); - // testSystem.addComponent("c-C6", 90.0); - // testSystem.addComponent("methane", 10.0); - // testSystem.addComponent("ethane", 10.0); - testSystem.addComponent("TEG", 0.02); - testSystem.addComponent("MDEA", 0.1); - testSystem.addComponent("Piperazine", 0.015); - testSystem.addComponent("water", 0.765); - testSystem.createDatabase(true); - // testSystem.setMixingRule(4); - testSystem.setMixingRule("HV", "UNIFAC_PSRK"); - testSystem.init(0); - testSystem.init(1); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("acetone", 100.0); + // testSystem.addComponent("n-pentane", 100.00047); + // testSystem.addComponent("c-C6", 90.0); + // testSystem.addComponent("methane", 10.0); + // testSystem.addComponent("ethane", 10.0); + testSystem.addComponent("TEG", 0.02); + testSystem.addComponent("MDEA", 0.1); + testSystem.addComponent("Piperazine", 0.015); + testSystem.addComponent("water", 0.765); + testSystem.createDatabase(true); + // testSystem.setMixingRule(4); + testSystem.setMixingRule("HV", "UNIFAC_PSRK"); + testSystem.init(0); + testSystem.init(1); - logger.info("wt% TEG " + (testSystem.getPhase(1).getComponent(0).getx() - * testSystem.getPhase(1).getComponent(0).getMolarMass() - / testSystem.getPhase(1).getMolarMass() * 100.0)); - logger.info("wt% MDEA " + (testSystem.getPhase(1).getComponent(1).getx() - * testSystem.getPhase(1).getComponent(1).getMolarMass() - / testSystem.getPhase(1).getMolarMass() * 100.0)); - logger.info("wt% Piperazine " + (testSystem.getPhase(1).getComponent(2).getx() - * testSystem.getPhase(1).getComponent(2).getMolarMass() - / testSystem.getPhase(1).getMolarMass() * 100.0)); - logger.info("wt% water " + (testSystem.getPhase(1).getComponent(3).getx() - * testSystem.getPhase(1).getComponent(3).getMolarMass() - / testSystem.getPhase(1).getMolarMass() * 100.0)); + logger.info("wt% TEG " + (testSystem.getPhase(1).getComponent(0).getx() + * testSystem.getPhase(1).getComponent(0).getMolarMass() + / testSystem.getPhase(1).getMolarMass() * 100.0)); + logger.info("wt% MDEA " + (testSystem.getPhase(1).getComponent(1).getx() + * testSystem.getPhase(1).getComponent(1).getMolarMass() + / testSystem.getPhase(1).getMolarMass() * 100.0)); + logger.info("wt% Piperazine " + (testSystem.getPhase(1).getComponent(2).getx() + * testSystem.getPhase(1).getComponent(2).getMolarMass() + / testSystem.getPhase(1).getMolarMass() * 100.0)); + logger.info("wt% water " + (testSystem.getPhase(1).getComponent(3).getx() + * testSystem.getPhase(1).getComponent(3).getMolarMass() + / testSystem.getPhase(1).getMolarMass() * 100.0)); - logger.info(testSystem.getPhase(1).getActivityCoefficient(0)); - logger.info("gibbs " + testSystem.getPhase(1).getExessGibbsEnergy()); - for (int i = 0; i < 2000; i++) { - try { - // testOps.bubblePointPressureFlash(false); - testOps.bubblePointPressureFlash(false); - testSystem2.addComponent("TEG", - testSystem.getPhase(0).getComponent(0).getx() / 2.0e3); - testSystem2.addComponent("MDEA", - testSystem.getPhase(0).getComponent(1).getx() / 2.0e3); - testSystem2.addComponent("Piperazine", - testSystem.getPhase(0).getComponent(2).getx() / 2.0e3); - testSystem2.addComponent("water", - testSystem.getPhase(0).getComponent(3).getx() / 2.0e3); - testSystem.addComponent("TEG", - -testSystem.getPhase(0).getComponent(0).getx() / 2.0e3); - testSystem.addComponent("MDEA", - -testSystem.getPhase(0).getComponent(1).getx() / 2.0e3); - testSystem.addComponent("Piperazine", - -testSystem.getPhase(0).getComponent(2).getx() / 2.0e3); - testSystem.addComponent("water", - -testSystem.getPhase(0).getComponent(3).getx() / 2.0e3); - testSystem2.init(0); - testSystem2.init(1); - testSystem.init(1); - logger.info("teg act " + testSystem.getPhase(1).getActivityCoefficient(0)); - logger.info("MDEA act " + testSystem.getPhase(1).getActivityCoefficient(1)); - logger.info("Piperazine act " + testSystem.getPhase(1).getActivityCoefficient(2)); - logger.info("water act " + testSystem.getPhase(1).getActivityCoefficient(3)); - double percentBack = - (testSystem2.getPhase(0).getComponent(1).getNumberOfmoles()) / 0.1 * 100.0; - double percentBackPip = (testSystem2.getPhase(0).getComponent(2).getNumberOfmoles()) - / 0.015 * 100.0; - double percentBackWater = - (testSystem2.getPhase(0).getComponent(3).getNumberOfmoles()) / 0.765 - * 100.0; + logger.info(testSystem.getPhase(1).getActivityCoefficient(0)); + logger.info("gibbs " + testSystem.getPhase(1).getExcessGibbsEnergy()); + for (int i = 0; i < 2000; i++) { + try { + // testOps.bubblePointPressureFlash(false); + testOps.bubblePointPressureFlash(false); + testSystem2.addComponent("TEG", testSystem.getPhase(0).getComponent(0).getx() / 2.0e3); + testSystem2.addComponent("MDEA", testSystem.getPhase(0).getComponent(1).getx() / 2.0e3); + testSystem2.addComponent("Piperazine", + testSystem.getPhase(0).getComponent(2).getx() / 2.0e3); + testSystem2.addComponent("water", testSystem.getPhase(0).getComponent(3).getx() / 2.0e3); + testSystem.addComponent("TEG", -testSystem.getPhase(0).getComponent(0).getx() / 2.0e3); + testSystem.addComponent("MDEA", -testSystem.getPhase(0).getComponent(1).getx() / 2.0e3); + testSystem.addComponent("Piperazine", + -testSystem.getPhase(0).getComponent(2).getx() / 2.0e3); + testSystem.addComponent("water", -testSystem.getPhase(0).getComponent(3).getx() / 2.0e3); + testSystem2.init(0); + testSystem2.init(1); + testSystem.init(1); + logger.info("teg act " + testSystem.getPhase(1).getActivityCoefficient(0)); + logger.info("MDEA act " + testSystem.getPhase(1).getActivityCoefficient(1)); + logger.info("Piperazine act " + testSystem.getPhase(1).getActivityCoefficient(2)); + logger.info("water act " + testSystem.getPhase(1).getActivityCoefficient(3)); + double percentBack = + (testSystem2.getPhase(0).getComponent(1).getNumberOfmoles()) / 0.1 * 100.0; + double percentBackPip = + (testSystem2.getPhase(0).getComponent(2).getNumberOfmoles()) / 0.015 * 100.0; + double percentBackWater = + (testSystem2.getPhase(0).getComponent(3).getNumberOfmoles()) / 0.765 * 100.0; - // logger.info("Pressure " + testSystem.getPressure() + " " + - // (testSystem.getPhase(1).getComponent(0).getx()*testSystem.getPhase(1).getComponent(0).getMolarMass()/testSystem.getPhase(1).getMolarMass()*100.0) - // + " " + - // (testSystem2.getPhase(1).getComponent(0).getx()*testSystem2.getPhase(1).getComponent(0).getMolarMass()/testSystem2.getPhase(1).getMolarMass()*100.0) - // + " percent MDEA succefully reclaimed "+ percentBack+ " percent - // Piperazine - // succefully reclaimed "+ percentBackPip+ " percent water - // succefully reclaimed - // "+ percentBackWater); - // testOps.bubblePointTemperatureFlash(); - } catch (Exception e) { - logger.error(e.toString(), e); - } - } - testSystem.display(); - logger.info(testSystem.getPhase(1).getActivityCoefficient(0)); - logger.info("gibbs " + testSystem.getPhase(1).getGibbsEnergy()); + // logger.info("Pressure " + testSystem.getPressure() + " " + + // (testSystem.getPhase(1).getComponent(0).getx()*testSystem.getPhase(1).getComponent(0).getMolarMass()/testSystem.getPhase(1).getMolarMass()*100.0) + // + " " + + // (testSystem2.getPhase(1).getComponent(0).getx()*testSystem2.getPhase(1).getComponent(0).getMolarMass()/testSystem2.getPhase(1).getMolarMass()*100.0) + // + " percent MDEA succefully reclaimed "+ percentBack+ " percent + // Piperazine + // succefully reclaimed "+ percentBackPip+ " percent water + // succefully reclaimed + // "+ percentBackWater); + // testOps.bubblePointTemperatureFlash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } } + testSystem.display(); + logger.info(testSystem.getPhase(1).getActivityCoefficient(0)); + logger.info("gibbs " + testSystem.getPhase(1).getGibbsEnergy()); + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestUniSimsFlash.java b/src/test/java/neqsim/thermo/util/example/TestUniSimsFlash.java index 6058122fc1..9ed4964bd2 100644 --- a/src/test/java/neqsim/thermo/util/example/TestUniSimsFlash.java +++ b/src/test/java/neqsim/thermo/util/example/TestUniSimsFlash.java @@ -14,48 +14,48 @@ * @since 2.2.3 */ public class TestUniSimsFlash { - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(288.15 + 5, 15.01325); - // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 15.0, 25.0);// - testSystem.addComponent("CO2", 0.0214); - testSystem.addComponent("nitrogen", 0.00892); - testSystem.addComponent("methane", 0.858); - testSystem.addComponent("nC10", 0.00892); - testSystem.addComponent("water", 0.1); - - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - for (int i = 0; i < 1; i++) { - testOps.TPflash(); - } - testSystem.display(); - - double[] composition = new double[] {0.1, 0.0, 1.1, 1.0, 1.0}; - // testSystem.removeMoles(); - testSystem.setMolarComposition(composition); - testSystem.init(0); - // testSystem.setMultiPhaseCheck(true); - - for (int i = 0; i < 1; i++) { - testOps.TPflash(); - } - testSystem.display(); - - /* - * composition = new double[]{0.1, 0.0, 1.1, 1.0, 1.0}; testSystem.removeMoles(); - * testSystem.setMolarComposition(composition); for (int i = 0; i < 1; i++) { - * testOps.TPflash(); } testSystem.display(); - */ + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(288.15 + 5, 15.01325); + // SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 15.0, 25.0); + testSystem.addComponent("CO2", 0.0214); + testSystem.addComponent("nitrogen", 0.00892); + testSystem.addComponent("methane", 0.858); + testSystem.addComponent("nC10", 0.00892); + testSystem.addComponent("water", 0.1); + + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + + for (int i = 0; i < 1; i++) { + testOps.TPflash(); + } + testSystem.display(); + + double[] composition = new double[] {0.1, 0.0, 1.1, 1.0, 1.0}; + // testSystem.setEmptyFluid(); + testSystem.setMolarComposition(composition); + testSystem.init(0); + // testSystem.setMultiPhaseCheck(true); + + for (int i = 0; i < 1; i++) { + testOps.TPflash(); } + testSystem.display(); + + /* + * composition = new double[]{0.1, 0.0, 1.1, 1.0, 1.0}; testSystem.setEmptyFluid(); + * testSystem.setMolarComposition(composition); for (int i = 0; i < 1; i++) { testOps.TPflash(); + * } testSystem.display(); + */ + } } diff --git a/src/test/java/neqsim/thermo/util/example/TestVHflash.java b/src/test/java/neqsim/thermo/util/example/TestVHflash.java index 8d078c3197..9ad56b3f51 100644 --- a/src/test/java/neqsim/thermo/util/example/TestVHflash.java +++ b/src/test/java/neqsim/thermo/util/example/TestVHflash.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; @@ -16,87 +17,88 @@ * @since 2.2.3 */ public class TestVHflash { - static Logger logger = LogManager.getLogger(TestVHflash.class); + static Logger logger = LogManager.getLogger(TestVHflash.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - double pressureInTank = 1.01325; // Pa - double temperatureInTank = 293.15; - double totalMolesInTank = 136000 * pressureInTank * 1.0e5 / 8.314 / temperatureInTank; - double molefractionNitrogenInTank = 0.95; + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + double pressureInTank = ThermodynamicConstantsInterface.referencePressure; // Pa + double temperatureInTank = 293.15; + double totalMolesInTank = + 136000 * pressureInTank * 1.0e5 / ThermodynamicConstantsInterface.R / temperatureInTank; + double molefractionNitrogenInTank = 0.95; - double molesInjectedLNG = 200000.0; - double molesInjecedVacumBreakerGas = - 18 * pressureInTank * 1.0e5 / 8.314 / temperatureInTank; + double molesInjectedLNG = 200000.0; + double molesInjecedVacumBreakerGas = + 18 * pressureInTank * 1.0e5 / ThermodynamicConstantsInterface.R / temperatureInTank; - SystemInterface testSystem = new SystemSrkEos(temperatureInTank, pressureInTank); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", totalMolesInTank * (1.0 - molefractionNitrogenInTank)); - testSystem.addComponent("nitrogen", totalMolesInTank * molefractionNitrogenInTank); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + SystemInterface testSystem = new SystemSrkEos(temperatureInTank, pressureInTank); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", totalMolesInTank * (1.0 - molefractionNitrogenInTank)); + testSystem.addComponent("nitrogen", totalMolesInTank * molefractionNitrogenInTank); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - SystemInterface testSystem2 = new SystemSrkEos(273.15 - 165.0, pressureInTank); - ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); - testSystem2.addComponent("methane", molesInjectedLNG); - testSystem2.createDatabase(true); - testSystem2.setMixingRule(2); + SystemInterface testSystem2 = new SystemSrkEos(273.15 - 165.0, pressureInTank); + ThermodynamicOperations testOps2 = new ThermodynamicOperations(testSystem2); + testSystem2.addComponent("methane", molesInjectedLNG); + testSystem2.createDatabase(true); + testSystem2.setMixingRule(2); - SystemInterface testSystem3 = new SystemSrkEos(temperatureInTank, pressureInTank); - ThermodynamicOperations testOps3 = new ThermodynamicOperations(testSystem3); - testSystem3.addComponent("methane", - totalMolesInTank * (1.0 - molefractionNitrogenInTank) + molesInjectedLNG); - testSystem3.addComponent("nitrogen", totalMolesInTank * molefractionNitrogenInTank); - testSystem3.createDatabase(true); - testSystem3.setMixingRule(2); + SystemInterface testSystem3 = new SystemSrkEos(temperatureInTank, pressureInTank); + ThermodynamicOperations testOps3 = new ThermodynamicOperations(testSystem3); + testSystem3.addComponent("methane", + totalMolesInTank * (1.0 - molefractionNitrogenInTank) + molesInjectedLNG); + testSystem3.addComponent("nitrogen", totalMolesInTank * molefractionNitrogenInTank); + testSystem3.createDatabase(true); + testSystem3.setMixingRule(2); - SystemInterface testSystem4 = new SystemSrkEos(temperatureInTank, pressureInTank); - ThermodynamicOperations testOps4 = new ThermodynamicOperations(testSystem4); - testSystem4.addComponent("nitrogen", molesInjecedVacumBreakerGas); - testSystem4.createDatabase(true); - testSystem4.setMixingRule(2); + SystemInterface testSystem4 = new SystemSrkEos(temperatureInTank, pressureInTank); + ThermodynamicOperations testOps4 = new ThermodynamicOperations(testSystem4); + testSystem4.addComponent("nitrogen", molesInjecedVacumBreakerGas); + testSystem4.createDatabase(true); + testSystem4.setMixingRule(2); - try { - testOps.TPflash(); - testOps2.TPflash(); - testOps3.TPflash(); - testOps4.TPflash(); - testSystem.display(); - testSystem2.display(); - testSystem3.display(); - testSystem4.display(); - // logger.info("Cp " + - // testSystem.getPhase(0).getCp()/testSystem.getPhase(0).getNumberOfMolesInPhase()); + try { + testOps.TPflash(); + testOps2.TPflash(); + testOps3.TPflash(); + testOps4.TPflash(); + testSystem.display(); + testSystem2.display(); + testSystem3.display(); + testSystem4.display(); + // logger.info("Cp " + + // testSystem.getPhase(0).getCp()/testSystem.getPhase(0).getNumberOfMolesInPhase()); - logger.info("Volume Nitrogen " - + testSystem.getPhase(0).getMolarMass() * testSystem.getNumberOfMoles() - / testSystem.getPhase(0).getPhysicalProperties().getDensity()); - logger.info("Volume Liquid Methane " - + testSystem2.getPhase(0).getMolarMass() * testSystem2.getNumberOfMoles() - / testSystem2.getPhase(0).getPhysicalProperties().getDensity()); - logger.info("Volume Nitrogen from vacum breaker system " - + testSystem4.getPhase(0).getMolarMass() * testSystem4.getNumberOfMoles() - / testSystem4.getPhase(0).getPhysicalProperties().getDensity()); + logger.info( + "Volume Nitrogen " + testSystem.getPhase(0).getMolarMass() * testSystem.getNumberOfMoles() + / testSystem.getPhase(0).getPhysicalProperties().getDensity()); + logger.info("Volume Liquid Methane " + + testSystem2.getPhase(0).getMolarMass() * testSystem2.getNumberOfMoles() + / testSystem2.getPhase(0).getPhysicalProperties().getDensity()); + logger.info("Volume Nitrogen from vacum breaker system " + + testSystem4.getPhase(0).getMolarMass() * testSystem4.getNumberOfMoles() + / testSystem4.getPhase(0).getPhysicalProperties().getDensity()); - testOps3.VHflash(testSystem.getVolume(), - testSystem.getEnthalpy() + testSystem2.getEnthalpy()); - testSystem3.display(); - // logger.info("total number of moles " + testSystem3.getTotalNumberOfMoles() ); - } catch (Exception e) { - logger.error(e.toString()); - } - // logger.info("JT " + testSystem.getPhase(0).getJouleThomsonCoefficient()); - // logger.info("wt%MEG " + - // testSystem.getPhase(1).getComponent("MEG").getMolarMass()*testSystem.getPhase(1).getComponent("MEG").getx()/testSystem.getPhase(1).getMolarMass()); - // logger.info("fug" - // +testSystem.getPhase(0).getComponent("water").getx()*testSystem.getPhase(0).getPressure()*testSystem.getPhase(0).getComponent(0).getFugacityCoefficient()); + testOps3.VHflash(testSystem.getVolume(), + testSystem.getEnthalpy() + testSystem2.getEnthalpy()); + testSystem3.display(); + // logger.info("total number of moles " + testSystem3.getTotalNumberOfMoles() ); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + // logger.info("JT " + testSystem.getPhase(0).getJouleThomsonCoefficient()); + // logger.info("wt%MEG " + + // testSystem.getPhase(1).getComponent("MEG").getMolarMass()*testSystem.getPhase(1).getComponent("MEG").getx()/testSystem.getPhase(1).getMolarMass()); + // logger.info("fug" + // +testSystem.getPhase(0).getComponent("water").getx()*testSystem.getPhase(0).getPressure()*testSystem.getPhase(0).getComponent(0).getFugacityCoefficient()); + } } // testSystem = testSystem.setModel("GERG-water"); // testSystem.setMixingRule(8); @@ -111,8 +113,8 @@ public static void main(String args[]) { // testOps.TPflash(); // testSystem.display(); // } -// catch(Exception e){ -// logger.info(e.toString()); +// catch(Exception ex){ +// logger.info(ex.toString()); // } // } // } diff --git a/src/test/java/neqsim/thermo/util/example/TestmercuryTPflash.java b/src/test/java/neqsim/thermo/util/example/TestmercuryTPflash.java index 5694b5a52c..281536d204 100644 --- a/src/test/java/neqsim/thermo/util/example/TestmercuryTPflash.java +++ b/src/test/java/neqsim/thermo/util/example/TestmercuryTPflash.java @@ -16,40 +16,42 @@ * @since 2.2.3 */ public class TestmercuryTPflash { - static Logger logger = LogManager.getLogger(TestmercuryTPflash.class); + static Logger logger = LogManager.getLogger(TestmercuryTPflash.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkTwuCoonStatoilEos(273.15 - 172.0, 1.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkTwuCoonStatoilEos(273.15 - 172.0, 1.0); - testSystem.addComponent("nitrogen", 2.97007999748152e-002); - testSystem.addComponent("methane", 0.902244); - testSystem.addComponent("ethane", 0.053167); - testSystem.addComponent("propane", 0.010742); - testSystem.addComponent("i-butane", 0.000902); - testSystem.addComponent("n-heptane", 0.02692); - testSystem.addComponent("mercury", 2.12608096955523e-10); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + testSystem.addComponent("nitrogen", 2.97007999748152e-002); + testSystem.addComponent("methane", 0.902244); + testSystem.addComponent("ethane", 0.053167); + testSystem.addComponent("propane", 0.010742); + testSystem.addComponent("i-butane", 0.000902); + testSystem.addComponent("n-heptane", 0.02692); + testSystem.addComponent("mercury", 2.12608096955523e-10); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); - // testSystem.setSolidPhaseCheck("mercury"); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - // testOps.freezingPointTemperatureFlash("mercury"); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } - // ((PhaseEosInterface)testSystem.getPhase(0)).displayInteractionCoefficients(""); - System.out.println("vapour pressure " - + testSystem.getPhase(0).getComponent("mercury").getx() * testSystem.getPressure()); - System.out.println("Ttrip " - + testSystem.getPhase(0).getComponent("mercury").getTriplePointTemperature()); + testSystem.setMultiPhaseCheck(true); + // testSystem.setSolidPhaseCheck("mercury"); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.TPflash(); + // testOps.freezingPointTemperatureFlash("mercury"); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + // ((PhaseEosInterface)testSystem.getPhase(0)).displayInteractionCoefficients(""); + System.out.println("vapour pressure " + + testSystem.getPhase(0).getComponent("mercury").getx() * testSystem.getPressure()); + System.out.println( + "Ttrip " + testSystem.getPhase(0).getComponent("mercury").getTriplePointTemperature()); + } } diff --git a/src/test/java/neqsim/thermo/util/example/VapourPressureTTest.java b/src/test/java/neqsim/thermo/util/example/VapourPressureTTest.java index 916af90052..824f57b96b 100644 --- a/src/test/java/neqsim/thermo/util/example/VapourPressureTTest.java +++ b/src/test/java/neqsim/thermo/util/example/VapourPressureTTest.java @@ -17,40 +17,40 @@ * @since 2.2.3 */ public class VapourPressureTTest { - static SystemInterface thermoSystem = null; + static SystemInterface thermoSystem = null; - /** - *

- * setUp. - *

- */ - @BeforeAll - public static void setUp() { - thermoSystem = new SystemSrkCPAstatoil(313.0, 1.0); - thermoSystem.addComponent("propane", 10.0); - thermoSystem.setMixingRule(10); - } - - /** - *

- * testDewBubblePointT. - *

- */ - @Test - public void testDewBubblePointT() { - ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem); - double startTemp = thermoSystem.getTemperature(); - double bubblePointT = 0.0, dewPointT = 10.0; - thermoSystem.setPressure(10.0); - try { - testOps.bubblePointTemperatureFlash(); - bubblePointT = thermoSystem.getTemperature(); - thermoSystem.setTemperature(startTemp); - testOps.dewPointTemperatureFlash(false); - dewPointT = thermoSystem.getTemperature(); - } catch (Exception e) { - } + /** + *

+ * setUp. + *

+ */ + @BeforeAll + public static void setUp() { + thermoSystem = new SystemSrkCPAstatoil(313.0, 1.0); + thermoSystem.addComponent("propane", 10.0); + thermoSystem.setMixingRule(10); + } - assertTrue(Math.abs(bubblePointT - dewPointT) < 1e-2); + /** + *

+ * testDewBubblePointT. + *

+ */ + @Test + public void testDewBubblePointT() { + ThermodynamicOperations testOps = new ThermodynamicOperations(thermoSystem); + double startTemp = thermoSystem.getTemperature(); + double bubblePointT = 0.0, dewPointT = 10.0; + thermoSystem.setPressure(10.0); + try { + testOps.bubblePointTemperatureFlash(); + bubblePointT = thermoSystem.getTemperature(); + thermoSystem.setTemperature(startTemp); + testOps.dewPointTemperatureFlash(false); + dewPointT = thermoSystem.getTemperature(); + } catch (Exception ex) { } + + assertTrue(Math.abs(bubblePointT - dewPointT) < 1e-2); + } } diff --git a/src/test/java/neqsim/thermo/util/example/WaxFlash.java b/src/test/java/neqsim/thermo/util/example/WaxFlash.java index 2f1d2b0290..ef2fd89916 100644 --- a/src/test/java/neqsim/thermo/util/example/WaxFlash.java +++ b/src/test/java/neqsim/thermo/util/example/WaxFlash.java @@ -8,66 +8,70 @@ import neqsim.util.database.NeqSimDataBase; /** - *

WaxFlash class.

+ *

+ * WaxFlash class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class WaxFlash { - static Logger logger = LogManager.getLogger(WaxFlash.class); + static Logger logger = LogManager.getLogger(WaxFlash.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - NeqSimDataBase.setConnectionString( - "jdbc:derby:C:/Users/esol/OneDrive - Equinor/temp/neqsimthermodatabase"); - NeqSimDataBase.setCreateTemporaryTables(true); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + NeqSimDataBase.setConnectionString( + "jdbc:derby:C:/Users/esol/OneDrive - Equinor/temp/neqsimthermodatabase"); + NeqSimDataBase.setCreateTemporaryTables(true); - SystemInterface testSystem = new SystemSrkEos(273.0 + 30, 50.0); - testSystem.addComponent("CO2", 0.018); - testSystem.addComponent("nitrogen", 0.333); - testSystem.addComponent("methane", 96.702); - testSystem.addComponent("ethane", 1.773); - testSystem.addComponent("propane", 0.496); - testSystem.addComponent("i-butane", 0.099); - testSystem.addComponent("n-butane", 0.115); - testSystem.addComponent("i-pentane", 0.004); - testSystem.addComponent("n-pentane", 0.024); - testSystem.addComponent("n-heptane", 0.324); - // testSystem.addComponent("ethane", 4.5); - // testSystem.addTBPfraction("C7", 10.0, 93.30 / 1000.0, 0.73); - // testSystem.addTBPfraction("C8", 10.0, 106.60 / 1000.0, 0.7533); - testSystem.addPlusFraction("C9", 0.095, 207.0 / 1000.0, 0.8331); - testSystem.getCharacterization().characterisePlusFraction(); - testSystem.getWaxModel().addTBPWax(); + SystemInterface testSystem = new SystemSrkEos(273.0 + 30, 50.0); + testSystem.addComponent("CO2", 0.018); + testSystem.addComponent("nitrogen", 0.333); + testSystem.addComponent("methane", 96.702); + testSystem.addComponent("ethane", 1.773); + testSystem.addComponent("propane", 0.496); + testSystem.addComponent("i-butane", 0.099); + testSystem.addComponent("n-butane", 0.115); + testSystem.addComponent("i-pentane", 0.004); + testSystem.addComponent("n-pentane", 0.024); + testSystem.addComponent("n-heptane", 0.324); + // testSystem.addComponent("ethane", 4.5); + // testSystem.addTBPfraction("C7", 10.0, 93.30 / 1000.0, 0.73); + // testSystem.addTBPfraction("C8", 10.0, 106.60 / 1000.0, 0.7533); + testSystem.addPlusFraction("C9", 0.095, 207.0 / 1000.0, 0.8331); + testSystem.getCharacterization().characterisePlusFraction(); + testSystem.getWaxModel().addTBPWax(); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.addSolidComplexPhase("wax"); - // testSystem.setSolidPhaseCheck("nC14"); - testSystem.setMultiphaseWaxCheck(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.addSolidComplexPhase("wax"); + // testSystem.setSolidPhaseCheck("nC14"); + testSystem.setMultiphaseWaxCheck(true); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.calcWAT(); - // testOps.TPflash(); - testSystem.display(); - } catch (Exception e) { - logger.error("error", e); - } - double waxVOlumeFrac = 0; - if (testSystem.hasPhaseType("wax")) { - waxVOlumeFrac = testSystem.getWtFraction(testSystem.getPhaseIndexOfPhase("wax")); - } - // testSystem.getPhase("oil").getPhysicalProperties().getViscosityOfWaxyOil(waxVOlumeFrac, - // 1000.0); - // System.out.println("viscosity wax-oil suspesion " + - // testSystem.getPhase("oil").getPhysicalProperties().getViscosityOfWaxyOil(waxVOlumeFrac, - // 1000.0)); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.calcWAT(); + // testOps.TPflash(); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + double waxVOlumeFrac = 0; + if (testSystem.hasPhaseType("wax")) { + waxVOlumeFrac = testSystem.getWtFraction(testSystem.getPhaseIndex("wax")); + } + // testSystem.getPhase("oil").getPhysicalProperties().getViscosityOfWaxyOil(waxVOlumeFrac, + // 1000.0); + // System.out.println("viscosity wax-oil suspesion " + + // testSystem.getPhase("oil").getPhysicalProperties().getViscosityOfWaxyOil(waxVOlumeFrac, + // 1000.0)); + } } diff --git a/src/test/java/neqsim/thermo/util/example/longman/Problem15102009LNGfreezing.java b/src/test/java/neqsim/thermo/util/example/longman/Problem15102009LNGfreezing.java index a72b946b15..efa0a441ab 100644 --- a/src/test/java/neqsim/thermo/util/example/longman/Problem15102009LNGfreezing.java +++ b/src/test/java/neqsim/thermo/util/example/longman/Problem15102009LNGfreezing.java @@ -7,48 +7,52 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

Problem15102009LNGfreezing class.

+ *

+ * Problem15102009LNGfreezing class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class Problem15102009LNGfreezing { - static Logger logger = LogManager.getLogger(Problem15102009LNGfreezing.class); + static Logger logger = LogManager.getLogger(Problem15102009LNGfreezing.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(200, 11.44); - testSystem.addComponent("methane", 100 - 33.4); - // testSystem.addComponent("ethane", 0.0197); - // testSystem.addComponent("propane", 0.03); - // testSystem.addComponent("benzene",0.002); - testSystem.addComponent("CO2", 33.4); - // testSystem.addComponent("nitrogen", 1 - 0.452); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(200, 11.44); + testSystem.addComponent("methane", 100 - 33.4); + // testSystem.addComponent("ethane", 0.0197); + // testSystem.addComponent("propane", 0.03); + // testSystem.addComponent("benzene",0.002); + testSystem.addComponent("CO2", 33.4); + // testSystem.addComponent("nitrogen", 1 - 0.452); - // testSystem.addComponent("n-hexane", 0.01); + // testSystem.addComponent("n-hexane", 0.01); - // testSystem.addComponent("c-hexane", 0.0048); + // testSystem.addComponent("c-hexane", 0.0048); - testSystem.setMultiPhaseCheck(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setSolidPhaseCheck("CO2"); - // testSystem.setSolidPhaseCheck("methane"); - testSystem.init(0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - // testSystem.display(); - // testOps.bubblePointPressureFlash(false); - testOps.freezingPointTemperatureFlash(); - testSystem.display(); - } catch (Exception e) { - logger.error("error", e); - } + testSystem.setMultiPhaseCheck(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setSolidPhaseCheck("CO2"); + // testSystem.setSolidPhaseCheck("methane"); + testSystem.init(0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.TPflash(); + // testSystem.display(); + // testOps.bubblePointPressureFlash(false); + testOps.freezingPointTemperatureFlash(); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermo/util/example/longman/Problem280809LNGfreezing.java b/src/test/java/neqsim/thermo/util/example/longman/Problem280809LNGfreezing.java index 1d5fa172ba..5a4584e009 100644 --- a/src/test/java/neqsim/thermo/util/example/longman/Problem280809LNGfreezing.java +++ b/src/test/java/neqsim/thermo/util/example/longman/Problem280809LNGfreezing.java @@ -7,47 +7,51 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

Problem280809LNGfreezing class.

+ *

+ * Problem280809LNGfreezing class. + *

* * @author asmund * @version $Id: $Id * @since 2.2.3 */ public class Problem280809LNGfreezing { - static Logger logger = LogManager.getLogger(Problem280809LNGfreezing.class); + static Logger logger = LogManager.getLogger(Problem280809LNGfreezing.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemGERG2004Eos(170, 1); - testSystem.addComponent("methane", 0.97); - // testSystem.addComponent("ethane", 0.0197); - // testSystem.addComponent("propane", 0.03); - // testSystem.addComponent("benzene",0.002); - testSystem.addComponent("CO2", 0.03); - // testSystem.addComponent("nitrogen", 0.1); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemGERG2004Eos(170, 1); + testSystem.addComponent("methane", 0.97); + // testSystem.addComponent("ethane", 0.0197); + // testSystem.addComponent("propane", 0.03); + // testSystem.addComponent("benzene",0.002); + testSystem.addComponent("CO2", 0.03); + // testSystem.addComponent("nitrogen", 0.1); - // testSystem.addComponent("n-hexane", 0.01); + // testSystem.addComponent("n-hexane", 0.01); - // testSystem.addComponent("c-hexane", 0.0048); + // testSystem.addComponent("c-hexane", 0.0048); - testSystem.createDatabase(true); - // testSystem.setMixingRule(2); - // testSystem.setSolidPhaseCheck("benzene"); - // testSystem.setSolidPhaseCheck("CO2"); - testSystem.init(0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - testSystem.display(); - // testOps.bubblePointPressureFlash(false); - // testOps.freezingPointTemperatureFlash(); - // testSystem.display(); - } catch (Exception e) { - logger.error("error", e); - } + testSystem.createDatabase(true); + // testSystem.setMixingRule(2); + // testSystem.setSolidPhaseCheck("benzene"); + // testSystem.setSolidPhaseCheck("CO2"); + testSystem.init(0); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.TPflash(); + testSystem.display(); + // testOps.bubblePointPressureFlash(false); + // testOps.freezingPointTemperatureFlash(); + // testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermo/util/example/longman/Problem280809LNGphaseEnvelope.java b/src/test/java/neqsim/thermo/util/example/longman/Problem280809LNGphaseEnvelope.java index 12a736c793..1467f78f53 100644 --- a/src/test/java/neqsim/thermo/util/example/longman/Problem280809LNGphaseEnvelope.java +++ b/src/test/java/neqsim/thermo/util/example/longman/Problem280809LNGphaseEnvelope.java @@ -7,44 +7,48 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

Problem280809LNGphaseEnvelope class.

+ *

+ * Problem280809LNGphaseEnvelope class. + *

* * @author lozhang * @version $Id: $Id * @since 2.2.3 */ public class Problem280809LNGphaseEnvelope { - static Logger logger = LogManager.getLogger(Problem280809LNGphaseEnvelope.class); + static Logger logger = LogManager.getLogger(Problem280809LNGphaseEnvelope.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemGERG2004Eos(230, 50.00); - testSystem.addComponent("methane", 0.80); - testSystem.addComponent("ethane", 0.05); - testSystem.addComponent("propane", 0.03); - testSystem.addComponent("CO2", 0.06); - testSystem.addComponent("nitrogen", 0.05); - // testSystem.addComponent("benzene",0.01); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemGERG2004Eos(230, 50.00); + testSystem.addComponent("methane", 0.80); + testSystem.addComponent("ethane", 0.05); + testSystem.addComponent("propane", 0.03); + testSystem.addComponent("CO2", 0.06); + testSystem.addComponent("nitrogen", 0.05); + // testSystem.addComponent("benzene",0.01); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.calcPTphaseEnvelope(true);// 0.05, 0.000005); - testOps.displayResult(); - } catch (Exception e) { - logger.error("error", e); - } - testSystem.display(); - // System.out.println("tempeerature " + (testSystem.getTemperature() - 273.15)); - // testOps.displayResult(); - // System.out.println("Cricondenbar " + testOps.get("cricondenbar")[0] + " " + - // testOps.get("cricondenbar")[1]); + try { + testOps.calcPTphaseEnvelope(true); // 0.05, 0.000005); + testOps.displayResult(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + // System.out.println("tempeerature " + (testSystem.getTemperature() - 273.15)); + // testOps.displayResult(); + // System.out.println("Cricondenbar " + testOps.get("cricondenbar")[0] + " " + + // testOps.get("cricondenbar")[1]); + } } diff --git a/src/test/java/neqsim/thermo/util/readwrite/A-1.E300 b/src/test/java/neqsim/thermo/util/readwrite/A-1.E300 new file mode 100644 index 0000000000..f7f1e1c43b --- /dev/null +++ b/src/test/java/neqsim/thermo/util/readwrite/A-1.E300 @@ -0,0 +1,434 @@ +-- Dummy EOS for FluidMagic Test case +-- +-- Copyright (C) 2022 Equinor + +-- Units +METRIC +-- Number of components: +NCOMPS +22 / +-- Equation of state +EOS +PR / +PRCORR + +-- Reservoir temperature (C) +RTEMP + 90.00 / + +-- Standard Conditions (C and bara) +STCOND + 15.00000 1.01325 / + +-- Component names +CNAMES +N2 +CO2 +C1 +C2 +C3 +iC4 +C4 +iC5 +C5 +C6 +C7 +C8 +C9 +C10-C12 +C13-C14 +C15-C17 +C18-C21 +C22-C28 +C29-C36 +C37-C45 +C46-C58 +C59-C80 / +-- Tc (K) +TCRIT + 126.200 + 304.200 + 190.600 + 305.400 + 369.800 + 408.100 + 425.200 + 460.400 + 469.600 + 507.400 + 548.083 + 568.470 + 592.686 + 631.845 + 680.299 + 727.035 + 774.284 + 851.846 + 943.373 + 1038.592 + 1152.236 + 1317.304 / +-- Pc (Bar) +PCRIT + 33.9439 + 73.7646 + 46.0015 + 48.8387 + 42.4552 + 36.4770 + 37.9969 + 33.8426 + 33.7412 + 29.6882 + 29.4519 + 27.6423 + 25.5535 + 22.7296 + 20.0143 + 18.1224 + 16.7108 + 15.1759 + 14.0297 + 13.2891 + 12.7370 + 12.2645 +/ +-- Omega +ACF + 0.04000 + 0.22500 + 0.00800 + 0.09800 + 0.15200 + 0.17600 + 0.19300 + 0.22700 + 0.25100 + 0.29600 + 0.33744 + 0.37547 + 0.42325 + 0.50535 + 0.61393 + 0.72473 + 0.83712 + 1.00708 + 1.15740 + 1.21951 + 1.12382 + 0.62590 / +-- OmegaA +OMEGAA + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 / +-- OmegaB +OMEGAB + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 / +-- Molecular weights +MW + 28.0135 + 44.0098 + 16.0429 + 30.0698 + 44.0968 + 58.1237 + 58.1237 + 72.1507 + 72.1506 + 86.1776 + 96.0000 + 107.0000 + 121.0000 + 145.7094 + 181.9678 + 220.6919 + 264.4041 + 342.9118 + 447.3217 + 565.3735 + 714.4236 + 942.2227 / +-- Boiling points (K) +TBOIL + 77.400 + 194.650 + 111.600 + 184.600 + 231.100 + 261.400 + 272.700 + 301.000 + 309.200 + 341.900 + 365.100 + 389.900 + 415.400 + 459.042 + 509.712 + 555.777 + 599.945 + 669.261 + 738.465 + 799.356 + 865.446 + 950.674 / +-- Critical volumes (m3/kg-mole) +VCRIT + 0.08980 + 0.09400 + 0.09900 + 0.14800 + 0.20300 + 0.26300 + 0.25500 + 0.30600 + 0.30400 + 0.37000 + 0.47555 + 0.48784 + 0.52918 + 0.62175 + 0.75937 + 0.92679 + 1.12076 + 1.49307 + 2.00337 + 2.60288 + 3.39260 + 4.64881 / +-- Critical Z-factors +ZCRIT + 0.29049 + 0.27414 + 0.28737 + 0.28465 + 0.28029 + 0.28272 + 0.27406 + 0.27052 + 0.26270 + 0.26037 + 0.30733 + 0.28530 + 0.27440 + 0.26900 + 0.26869 + 0.27784 + 0.29091 + 0.31991 + 0.35833 + 0.40055 + 0.45103 + 0.52054 / +-- Volume translation/co-volume +SSHIFT + -0.175888 + -0.049181 + -0.194020 + -0.143142 + -0.112702 + -0.099214 + -0.089659 + -0.070455 + -0.056872 + 0.012573 + 0.074067 + 0.085121 + 0.081268 + 0.069060 + 0.048755 + 0.018239 + -0.017443 + -0.077518 + -0.156174 + -0.235730 + -0.320950 + -0.420868 / +-- Parachors (dyn/cm) +PARACHOR + 41.000 + 78.000 + 77.300 + 108.900 + 151.900 + 181.500 + 191.700 + 225.000 + 233.900 + 271.000 + 283.940 + 309.680 + 342.440 + 402.209 + 485.824 + 577.490 + 679.641 + 866.931 + 1111.372 + 1387.629 + 1739.859 + 2282.641 / +-- Overall dummy oil composition +ZI + 0.003912 + 0.003010 + 0.403275 + 0.076341 + 0.079752 + 0.011938 + 0.040929 + 0.013944 + 0.021568 + 0.027988 + 0.042936 + 0.043237 + 0.030898 + 0.043939 + 0.045143 + 0.022571 + 0.025180 + 0.021188 + 0.014111 + 0.012845 + 0.008955 + 0.006340 / +-- Binary interaction coefficients for PR +BIC + -0.0170 + 0.0311 0.1200 + 0.0515 0.1200 0.0000 + 0.0852 0.1200 0.0000 0.0000 + 0.1033 0.1200 0.0000 0.0000 0.0000 + 0.0800 0.1200 0.0000 0.0000 0.0000 0.0000 + 0.0922 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.1000 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 +/ +BICS + -0.0170 + 0.0311 0.1200 + 0.0515 0.1200 0.0000 + 0.0852 0.1200 0.0000 0.0000 + 0.1033 0.1200 0.0000 0.0000 0.0000 + 0.0800 0.1200 0.0000 0.0000 0.0000 0.0000 + 0.0922 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.1000 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 +/ +-- LBC coefficients +LBCCOEF + 0.1023000 0.0233640 0.0585330 -0.0407580 0.0093324 / + +-- Volume translation/co-volume at surface conditions +SSHIFTS + -0.175888 + -0.061524 + -0.194020 + -0.143142 + -0.112702 + -0.099214 + -0.089659 + -0.070455 + -0.056872 + 0.012573 + 0.073289 + 0.087351 + 0.090562 + 0.088354 + 0.076389 + 0.053077 + 0.022966 + -0.030899 + -0.104022 + -0.179642 + -0.262040 + -0.361298 / diff --git a/src/test/java/neqsim/thermo/util/readwrite/EclipseFluidReadWriteTest.java b/src/test/java/neqsim/thermo/util/readwrite/EclipseFluidReadWriteTest.java index 24f8039ef4..d51d42d922 100644 --- a/src/test/java/neqsim/thermo/util/readwrite/EclipseFluidReadWriteTest.java +++ b/src/test/java/neqsim/thermo/util/readwrite/EclipseFluidReadWriteTest.java @@ -1,6 +1,3 @@ -/** - * - */ package neqsim.thermo.util.readwrite; import java.io.File; @@ -11,72 +8,99 @@ /** * @author ESOL - * */ -class EclipseFluidReadWriteTest { - - static neqsim.thermo.system.SystemInterface testSystem = null; - - File file = new File("src/test/java/neqsim/thermo/util/readwrite"); - String fileA13 = file.getAbsolutePath() + "/A-13.E300"; - String fileA17 = file.getAbsolutePath() + "/A-17.E300"; - String fileA19 = file.getAbsolutePath() + "/A-19.E300"; - - /** - * @throws java.lang.Exception - */ - @BeforeAll - static void setUpBeforeClass() throws Exception { - - } - - /** - * Test method for - * {@link neqsim.thermo.util.readwrite.EclipseFluidReadWrite#read(java.lang.String)}. - * - * @throws IOException - */ - @Test - void testRead() throws IOException { - EclipseFluidReadWrite.pseudoName = "_A13"; - testSystem = EclipseFluidReadWrite.read(fileA13); - } - - @Test - void testReadAndAddFluids() throws IOException { - EclipseFluidReadWrite.pseudoName = "_A19"; - testSystem = EclipseFluidReadWrite.read(fileA19); - - EclipseFluidReadWrite.pseudoName = "_A17"; - neqsim.thermo.system.SystemInterface testSystem2 = EclipseFluidReadWrite.read(fileA17); - testSystem.addFluid(testSystem2); - - EclipseFluidReadWrite.pseudoName = "_A13"; - neqsim.thermo.system.SystemInterface testSystem3 = EclipseFluidReadWrite.read(fileA13); - testSystem.addFluid(testSystem3); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - - } - - @Test - void testSetComposition() throws IOException { - EclipseFluidReadWrite.pseudoName = "_A19"; - testSystem = EclipseFluidReadWrite.read(fileA19); - - EclipseFluidReadWrite.pseudoName = "_A17"; - neqsim.thermo.system.SystemInterface testSystem2 = EclipseFluidReadWrite.read(fileA17); - testSystem.addFluid(testSystem2); - - EclipseFluidReadWrite.pseudoName = "_A13"; - neqsim.thermo.system.SystemInterface testSystem3 = EclipseFluidReadWrite.read(fileA13); - testSystem.addFluid(testSystem3); - - EclipseFluidReadWrite.pseudoName = "_A13"; - EclipseFluidReadWrite.setComposition(testSystem, fileA13); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - } - +class EclipseFluidReadWriteTest extends neqsim.NeqSimTest { + static neqsim.thermo.system.SystemInterface testSystem = null; + + File file = new File("src/test/java/neqsim/thermo/util/readwrite"); + String fileFluid1 = file.getAbsolutePath() + "/fluid1.e300"; + String fileA1 = file.getAbsolutePath() + "/A-1.E300"; + String fileA13 = file.getAbsolutePath() + "/A-13.E300"; + String fileA17 = file.getAbsolutePath() + "/A-17.E300"; + String fileA19 = file.getAbsolutePath() + "/A-19.E300"; + + /** + * @throws java.lang.Exception + */ + @BeforeAll + static void setUpBeforeClass() throws Exception {} + + /** + * Test method for + * {@link neqsim.thermo.util.readwrite.EclipseFluidReadWrite#read(java.lang.String)}. + * + * @throws IOException + */ + @Test + void testRead() throws IOException { + EclipseFluidReadWrite.pseudoName = "_A13"; + testSystem = EclipseFluidReadWrite.read(fileA13); + } + + @Test + void testReadAndAddFluids() throws IOException { + EclipseFluidReadWrite.pseudoName = "_A19"; + testSystem = EclipseFluidReadWrite.read(fileA19); + + EclipseFluidReadWrite.pseudoName = "_A17"; + neqsim.thermo.system.SystemInterface testSystem2 = EclipseFluidReadWrite.read(fileA17); + testSystem.addFluid(testSystem2); + + EclipseFluidReadWrite.pseudoName = "_A13"; + neqsim.thermo.system.SystemInterface testSystem3 = EclipseFluidReadWrite.read(fileA13); + testSystem.addFluid(testSystem3); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + } + + @Test + void testReadAndAddFluids2() throws IOException { + EclipseFluidReadWrite.pseudoName = "_A1"; + testSystem = EclipseFluidReadWrite.read(fileA1); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.setPressure(100.0, "bara"); + testSystem.setTemperature(25.0, "C"); + testOps.TPflash(); + + // neqsim.thermo.util.readwrite.TablePrinter.printTable((((PhaseEos + // )testSystem.getPhase(0)).getMixingRule().getBinaryInteractionParameters())); + } + + @Test + void testSetComposition() throws IOException { + EclipseFluidReadWrite.pseudoName = "_A19"; + testSystem = EclipseFluidReadWrite.read(fileA19); + + EclipseFluidReadWrite.pseudoName = "_A17"; + neqsim.thermo.system.SystemInterface testSystem2 = EclipseFluidReadWrite.read(fileA17); + testSystem.addFluid(testSystem2); + + EclipseFluidReadWrite.pseudoName = "_A13"; + neqsim.thermo.system.SystemInterface testSystem3 = EclipseFluidReadWrite.read(fileA13); + testSystem.addFluid(testSystem3); + + EclipseFluidReadWrite.pseudoName = "_A13"; + EclipseFluidReadWrite.setComposition(testSystem, fileA13); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + } + + @Test + void testReadFluid1() throws IOException { + testSystem = EclipseFluidReadWrite.read(fileFluid1); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.setPressure(50.0, "bara"); + testSystem.setTemperature(50.0, "C"); + testOps.TPflash(); + + // neqsim.thermo.util.readwrite.TablePrinter.printTable( + // (((PhaseEos) testSystem.getPhase(0)).getMixingRule().getBinaryInteractionParameters())); + + // for (int i = 0; i < testSystem.getNumberOfComponents(); i++) { + // System.out.println(testSystem.getComponent(i).getName() + " TC " + // + (testSystem.getComponent(i).getVolumeCorrectionConst())); + // } + } } diff --git a/src/test/java/neqsim/thermo/util/readwrite/fluid1.e300 b/src/test/java/neqsim/thermo/util/readwrite/fluid1.e300 new file mode 100644 index 0000000000..476a1374c8 --- /dev/null +++ b/src/test/java/neqsim/thermo/util/readwrite/fluid1.e300 @@ -0,0 +1,424 @@ +-- Generated +METRIC +-- Number of components: +NCOMPS +22 / +-- Equation of state +EOS +PR / +PRCORR +-- Reservoir temperature (C) +RTEMP + 112.30 / +-- Standard Conditions (C and bara) +STCOND + 15.00000 1.01325 / +-- Component names +CNAMES +N2 +CO2 +C1 +C2 +C3 +iC4 +C4 +iC5 +C5 +C6 +C7 +C8 +C9 +C10-C12 +C13-C14 +C15-C16 +C17-C19 +C20-C22 +C23-C25 +C26-C28 +C29-C33 +C34-C80 / +-- Tc (K) +TCRIT + 126.200 + 304.200 + 190.600 + 305.400 + 369.800 + 408.100 + 425.200 + 460.400 + 469.600 + 507.400 + 527.669 + 553.949 + 579.636 + 622.942 + 666.834 + 706.246 + 747.081 + 786.847 + 821.763 + 855.619 + 894.027 + 1061.556 / +-- Pc (Bar) +PCRIT + 33.9439 + 73.7646 + 46.0015 + 48.8387 + 42.4552 + 36.4770 + 37.9969 + 33.8426 + 33.7412 + 29.6882 + 30.7250 + 27.8786 + 25.1398 + 21.6669 + 19.1244 + 17.4631 + 16.1506 + 15.1782 + 14.5255 + 14.0013 + 13.5329 + 12.5974 / +-- Omega +ACF + 0.04000 + 0.22500 + 0.00800 + 0.09800 + 0.15200 + 0.17600 + 0.19300 + 0.22700 + 0.25100 + 0.29600 + 0.32171 + 0.36663 + 0.41648 + 0.50584 + 0.60076 + 0.69007 + 0.78285 + 0.87002 + 0.94131 + 1.00419 + 1.06491 + 1.04501 / +-- OmegaA +OMEGAA + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 + 0.45724 / +-- OmegaB +OMEGAB + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 + 0.07780 / +-- Molecular weights +MW + 28.0135 + 44.0098 + 16.0429 + 30.0698 + 44.0968 + 58.1237 + 58.1237 + 72.1506 + 72.1506 + 85.1000 + 91.3000 + 104.7000 + 119.8000 + 147.7631 + 180.7557 + 213.2724 + 249.8889 + 288.2513 + 323.6568 + 359.5848 + 401.4829 + 565.6066 / +-- Boiling points (K) +TBOIL + 77.400 + 194.650 + 111.600 + 184.600 + 231.100 + 261.400 + 272.700 + 301.000 + 309.200 + 341.900 + 365.100 + 389.900 + 415.400 + 462.297 + 508.144 + 547.043 + 585.667 + 623.616 + 658.686 + 691.204 + 725.969 + 817.977 / +-- Critical volumes (m3/kg-mole) +VCRIT + 0.08980 + 0.09400 + 0.09900 + 0.14800 + 0.20300 + 0.26300 + 0.25500 + 0.30600 + 0.30400 + 0.37000 + 0.45436 + 0.48019 + 0.53302 + 0.63683 + 0.75711 + 0.88963 + 1.05005 + 1.22386 + 1.38886 + 1.56097 + 1.76832 + 2.86516 / +-- Critical Z-factors +ZCRIT + 0.29049 + 0.27414 + 0.28737 + 0.28465 + 0.28029 + 0.28272 + 0.27406 + 0.27052 + 0.26270 + 0.26037 + 0.31819 + 0.29064 + 0.27804 + 0.26639 + 0.26114 + 0.26456 + 0.27301 + 0.28393 + 0.29525 + 0.30721 + 0.32192 + 0.40892 / +-- Volume translation/co-volume +SSHIFT + -0.175888 + -0.045511 + -0.194020 + -0.143142 + -0.112702 + -0.099214 + -0.089659 + -0.070455 + -0.056872 + 0.012573 + 0.073720 + 0.085173 + 0.083037 + 0.082231 + 0.077598 + 0.064618 + 0.043364 + 0.018779 + -0.003316 + -0.027041 + -0.053010 + -0.100845 / +-- Parachors (dyn/cm) +PARACHOR + 41.000 + 78.000 + 77.300 + 108.900 + 151.900 + 181.500 + 191.700 + 225.000 + 233.900 + 271.000 + 272.942 + 304.298 + 339.632 + 407.069 + 482.957 + 559.054 + 645.090 + 734.682 + 817.404 + 901.299 + 1000.122 + 1473.547 / +-- Overall composition +ZI + 0.003570 + 0.010280 + 0.571653 + 0.045892 + 0.027131 + 0.005420 + 0.013881 + 0.005730 + 0.008050 + 0.011760 + 0.022521 + 0.025721 + 0.018431 + 0.045402 + 0.029981 + 0.025641 + 0.033021 + 0.026731 + 0.021591 + 0.016941 + 0.018971 + 0.011680 / +-- Binary interaction coefficients for PR +BIC + -0.0170 + 0.0311 0.1200 + 0.0515 0.1200 0.0000 + 0.0852 0.1200 0.0000 0.0000 + 0.1033 0.1200 0.0000 0.0000 0.0000 + 0.0800 0.1200 0.0000 0.0000 0.0000 0.0000 + 0.0922 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.1000 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 +/ +BICS + -0.0170 + 0.0311 0.1200 + 0.0515 0.1200 0.0000 + 0.0852 0.1200 0.0000 0.0000 + 0.1033 0.1200 0.0000 0.0000 0.0000 + 0.0800 0.1200 0.0000 0.0000 0.0000 0.0000 + 0.0922 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.1000 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1200 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0800 0.1000 0.0447 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 +/ +-- Viscosity correlation +PEDERSEN +-- Volume translation/co-volume at surface conditions +SSHIFTS + -0.175888 + -0.061524 + -0.194020 + -0.143142 + -0.112702 + -0.099214 + -0.089659 + -0.070455 + -0.056872 + 0.012573 + 0.056615 + 0.079972 + 0.090897 + 0.104318 + 0.108036 + 0.101240 + 0.085802 + 0.065887 + 0.046875 + 0.026036 + 0.002593 + -0.045217 / diff --git a/src/test/java/neqsim/thermodynamicOperations/ThermodynamicOperationsTest.java b/src/test/java/neqsim/thermodynamicOperations/ThermodynamicOperationsTest.java index a4a3197ac7..e39bb89528 100644 --- a/src/test/java/neqsim/thermodynamicOperations/ThermodynamicOperationsTest.java +++ b/src/test/java/neqsim/thermodynamicOperations/ThermodynamicOperationsTest.java @@ -1,16 +1,131 @@ package neqsim.thermodynamicOperations; +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Type; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; import java.util.List; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import neqsim.api.ioc.CalculationResult; +import neqsim.thermo.ThermodynamicConstantsInterface; import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemProperties; import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations.FlashType; -public class ThermodynamicOperationsTest { +public class ThermodynamicOperationsTest extends neqsim.NeqSimTest { + @Test + void testFlash() { + SystemInterface thermoSystem = new neqsim.thermo.system.SystemSrkEos(280.0, 10.0); + thermoSystem.addComponent("methane", 0.7); + thermoSystem.addComponent("ethane", 0.3); + ThermodynamicOperations ops = new ThermodynamicOperations(thermoSystem); + + double P = 10; + double T = 20; + String unitP = "bara"; + String unitT = "C"; + + ops.flash(FlashType.PT, P, T, unitP, unitT); + ops.system.init(2); + ops.system.initPhysicalProperties(); + Double[] PTfluidProperties = ops.system.getProperties().getValues(); + + // Test that the operations are stable, i.e., do the same flash on the same system with the same + // components and at the same conditions and assert that the result is the same. + ops.system.init(0); + ops.flash(FlashType.TP, T, P, unitT, unitP); + ops.system.init(2); + ops.system.initPhysicalProperties(); + Double[] TPfluidProperties = ops.system.getProperties().getValues(); + + for (int k = 0; k < PTfluidProperties.length; k++) { + Assertions.assertEquals(PTfluidProperties[k], TPfluidProperties[k]); + } + } + + @Test + void testFluidDefined() { + double[] fractions = new double[] {98.0, 2.0}; + List Sp1 = + Arrays.asList(new Double[] {22.1, 23.2, 24.23, 25.98, 25.23, 26.1, 27.3, 28.7, 23.5, 22.7}); + List Sp2 = Arrays.asList( + new Double[] {288.1, 290.1, 295.1, 301.2, 299.3, 310.2, 315.3, 310.0, 305.2, 312.7}); + List components = Arrays.asList(new String[] {"O2", "N2"}); + List> onlineFractions = new ArrayList>(); + + for (double d : fractions) { + ArrayList l = new ArrayList(); + for (int i = 0; i < Sp1.size(); i++) { + l.add(d); + } + onlineFractions.add(l); + } + + SystemInterface fluid_static = new SystemSrkEos(273.15 + 45.0, 22.0); + fluid_static.addComponent("N2", fractions[0]); + fluid_static.addComponent("O2", fractions[1]); + fluid_static.setMixingRule(2); + fluid_static.useVolumeCorrection(true); + fluid_static.setMultiPhaseCheck(true); + // fluid_static.init(0); + + ThermodynamicOperations fluidOps_static = new ThermodynamicOperations(fluid_static); + CalculationResult res_static = fluidOps_static.propertyFlash(Sp1, Sp2, 1, null, null); + + for (String err : res_static.calculationError) { + Assertions.assertEquals(err, + "Sum of fractions must be approximately to 1 or 100, currently (0.0). Have you called init(0)?"); + } + // fluid_static.setTotalNumberOfMoles(1); + fluid_static.init(0); + res_static = fluidOps_static.propertyFlash(Sp1, Sp2, 1, null, null); + for (String err : res_static.calculationError) { + Assertions.assertEquals(err, null); + } + + SystemInterface fluid = new SystemSrkEos(273.15 + 45.0, 22.0); + fluid.addComponent("nitrogen", 0.79); + fluid.addComponent("oxygen", 0.21); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.setMultiPhaseCheck(true); + + ThermodynamicOperations fluidOps = new ThermodynamicOperations(fluid); + CalculationResult res = fluidOps.propertyFlash(Sp1, Sp2, 1, components, onlineFractions); + Assertions.assertEquals(Sp1.size(), res.calculationError.length); + for (String err : res.calculationError) { + Assertions.assertNull(err); + } + + fluid = new SystemSrkEos(273.15 + 45.0, 22.0); + fluid.addComponent("N2", 0.79); + fluid.addComponent("O2", 0.21); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.setMultiPhaseCheck(true); + + fluidOps = new ThermodynamicOperations(fluid); + CalculationResult res2 = fluidOps.propertyFlash(Sp1, Sp2, 1, components, onlineFractions); + Assertions.assertEquals(Sp1.size(), res2.calculationError.length); + for (String err : res2.calculationError) { + Assertions.assertNull(err); + } + + Assertions.assertEquals(res, res2); + // todo: why does below not work? + + // Assertions.assertArrayEquals(res_static.fluidProperties[0], res.fluidProperties[0]); + } @Test void testNeqSimPython() { @@ -24,15 +139,28 @@ void testNeqSimPython() { List jP = Arrays.asList(new Double[] {10.0}); List jT = Arrays.asList(new Double[] {280.0}); CalculationResult res = thermoOps.propertyFlash(jP, jT, 1, null, null); + + // Verify some basic properties Assertions.assertEquals(1.0, res.fluidProperties[0][0], "Number of phases mismatch"); - Assertions.assertEquals(thermoSystem.getPressure("Pa"), res.fluidProperties[0][1], 1e-5, + Assertions.assertEquals(thermoSystem.getPressure("Pa"), res.fluidProperties[0][1], "Pressure mismatch"); - Assertions.assertEquals(thermoSystem.getTemperature("K"), res.fluidProperties[0][2], 1e-5, + Assertions.assertEquals(thermoSystem.getTemperature("K"), res.fluidProperties[0][2], "Temperature mismatch"); CalculationResult res2 = thermoOps.propertyFlash(jP, jT, 0, null, null); Assertions.assertEquals(res2.calculationError[0], - "neqsim.util.exception.InvalidInputException: ThermodynamicOperations:propertyFlash - Input mode must be 1, 2 or 3"); + "neqsim.util.exception.InvalidInputException: ThermodynamicOperations:propertyFlash - Input FlashMode must be 1, 2 or 3"); + + Assertions.assertFalse(res2 == null); + Assertions.assertEquals(res2, res2); + Assertions.assertNotEquals(res2, null); + Assertions.assertNotEquals(res2, new Object()); + Assertions.assertEquals(res2.hashCode(), res2.hashCode()); + Assertions.assertFalse(res2 == res); + + CalculationResult res2_copy = + new CalculationResult(res2.fluidProperties, res2.calculationError); + Assertions.assertEquals(res2, res2_copy); } @Test @@ -50,26 +178,61 @@ void testNeqSimPython2() { thermoSystem.init(0); ThermodynamicOperations thermoOps = new neqsim.thermodynamicOperations.ThermodynamicOperations(thermoSystem); - List jP = Arrays.asList(new Double[] {60.0 + 1.013}); - List jT = Arrays.asList(new Double[] {373.15}); + + double temp = 373.15; + double press = 60.0 + ThermodynamicConstantsInterface.referencePressure; + + List jP = Arrays.asList(new Double[] {press}); + List jT = Arrays.asList(new Double[] {temp}); CalculationResult res = thermoOps.propertyFlash(jP, jT, 1, null, null); + // Assert no calculation failed + for (String errorMessage : res.calculationError) { + Assertions.assertNull(errorMessage, "Calculation returned: " + errorMessage); + } + + String[] propNames = SystemProperties.getPropertyNames(); + Assertions.assertEquals(res.fluidProperties[0].length, propNames.length); + + // Redo propertyFlash with online fractions, but still only one data point + List> onlineFractions = createDummyRequest(thermoSystem.getMolarComposition(), 1); + CalculationResult res1 = thermoOps.propertyFlash(jP, jT, 1, null, onlineFractions); + // Assert no calculation failed + for (String errorMessage : res1.calculationError) { + Assertions.assertNull(errorMessage, "Calculation returned: " + errorMessage); + } - int numFrac = 2; - List> onlineFractions = + // Assert all properties are the same with online fraction and without + for (int i = 0; i < res.fluidProperties[0].length; i++) { + Assertions.assertEquals(res.fluidProperties[0][i], res1.fluidProperties[0][i], + "Property " + i + " : " + SystemProperties.getPropertyNames()[i]); + } + + Assertions.assertArrayEquals(res.fluidProperties[0], res1.fluidProperties[0]); + + int numFrac = 3; + List> onlineFractions2 = createDummyRequest(thermoSystem.getMolarComposition(), numFrac); - List jP2 = Arrays.asList(new Double[] {60.0 + 1.013, 60.0 + 1.013}); - List jT2 = Arrays.asList(new Double[] {373.15, 373.15}); + List jP2 = Arrays.asList(new Double[] {press, press}); + List jT2 = Arrays.asList(new Double[] {temp, temp}); SystemInterface thermoSystem2 = new neqsim.thermo.system.SystemSrkEos(273.15, 0.0); thermoSystem2.addComponents(components, fractions2); ThermodynamicOperations thermoOps2 = new neqsim.thermodynamicOperations.ThermodynamicOperations(thermoSystem2); - CalculationResult res2 = thermoOps2.propertyFlash(jP2, jT2, 1, null, onlineFractions); + CalculationResult res2 = thermoOps2.propertyFlash(jP2, jT2, 1, null, onlineFractions2); + // Assert no calculation failed + for (String errorMessage : res.calculationError) { + Assertions.assertNull(errorMessage, "Calculation returned: " + errorMessage); + } - Assertions.assertArrayEquals(res.fluidProperties[0], res2.fluidProperties[0]); + // Assert all properties are the same with online fraction and without + for (int i = 0; i < res.fluidProperties[0].length; i++) { + Assertions.assertEquals(res.fluidProperties[0][i], res2.fluidProperties[0][i], + "Property " + i + " : " + SystemProperties.getPropertyNames()[i]); + } - String[] propNames = SystemProperties.getPropertyNames(); - Assertions.assertEquals(res.fluidProperties[0].length, propNames.length); + // Verify stability + Assertions.assertArrayEquals(res2.fluidProperties[0], res2.fluidProperties[1]); } @Test @@ -181,6 +344,120 @@ void testpropertyFlashOnlineSingle() { Assertions.assertEquals(len, s.fluidProperties.length); } + @Test + void testpropertyFlashOnlineTooFewInputComponents() { + String[] components = {"nitrogen", "oxygen"}; + double[] fractions = {0.79, 0.21}; + int len = 10; + List> onlineFractions = createDummyRequest(fractions, len); + + Double[] pressure = {1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 4.0, 3.5, 3.0, 2.5}; + Double[] temperature = {301.0, 301.5, 302.0, 302.5, 303.0, 304.0, 304.0, 303.5, 303.0, 302.5}; + + SystemInterface fluid = new SystemSrkEos(298, 1.0); + // Add extra component C1 + fluid.addComponent("C1"); + fluid.addComponents(components); + // Add extra component iC4 + fluid.addComponent("iC4"); + + ThermodynamicOperations ops = new ThermodynamicOperations(fluid); + CalculationResult s = ops.propertyFlash(Arrays.asList(pressure), Arrays.asList(temperature), 1, + Arrays.asList(components), onlineFractions); + Assertions.assertEquals(len, s.fluidProperties.length); + Assertions.assertNull(s.calculationError[0]); + } + + @Test + void testPropertyFlashTooManyInputComponents() { + int len = 10; + String[] components_too_many = {"nitrogen", "oxygen", "water"}; + double[] fractions_to_many = {0.79, 0.21, 0.01}; + + Double[] pressure = {1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 4.0, 3.5, 3.0, 2.5}; + Double[] temperature = {301.0, 301.5, 302.0, 302.5, 303.0, 304.0, 304.0, 303.5, 303.0, 302.5}; + + List> onlineFractions_too_many = createDummyRequest(fractions_to_many, len); + SystemInterface fluid = new SystemSrkEos(298, 1.0); + + // Add only two components to fluid + String[] components = {"nitrogen", "oxygen"}; + fluid.addComponents(components); + ThermodynamicOperations ops = new ThermodynamicOperations(fluid); + CalculationResult s = ops.propertyFlash(Arrays.asList(pressure), Arrays.asList(temperature), 1, + Arrays.asList(components_too_many), onlineFractions_too_many); + Assertions.assertEquals(len, s.fluidProperties.length); + Assertions.assertEquals("Input component list does not match fluid component list.", + s.calculationError[0]); + } + + @Disabled + @Test + @SuppressWarnings("unchecked") + void testpropertyFlashRegressions() throws IOException { + // TODO: make these tests work + // make output log of differences per failing test and see check if it is related to change in + // component input data + Collection testData = getTestData(); + + for (TestData test : testData) { + HashMap inputData = test.getInput(); + + SystemInterface fluid = new SystemSrkEos(273.15 + 45.0, 22.0); + + ArrayList compNames = (ArrayList) inputData.get("components"); + ArrayList fractions = (ArrayList) inputData.get("fractions"); + + if (compNames == null) { + // System.out.println("Skips test " + test.toString()); + /* + * for (int k = 0; k < fractions.size(); k++) { fluid.addComponent(k, fractions.get(k)); } + */ + continue; + } else { + for (int k = 0; k < compNames.size(); k++) { + fluid.addComponent(compNames.get(k), fractions.get(k)); + } + } + + fluid.init(0); + + ArrayList sp1 = (ArrayList) inputData.get("Sp1"); + ArrayList sp2 = (ArrayList) inputData.get("Sp2"); + + ThermodynamicOperations ops = new ThermodynamicOperations(fluid); + int flashMode = (int) inputData.get("FlashMode"); + CalculationResult s = ops.propertyFlash(sp1, sp2, flashMode, compNames, null); + for (String errorMessage : s.calculationError) { + Assertions.assertNull(errorMessage, "Calculation returned: " + errorMessage); + } + + CalculationResult expected = test.getOutput(); + + for (int nSamp = 0; nSamp < s.fluidProperties.length; nSamp++) { + for (int nProp = 0; nProp < s.fluidProperties[nSamp].length; nProp++) { + if (Double.isNaN(expected.fluidProperties[nSamp][nProp])) { + Assertions.assertEquals(expected.fluidProperties[nSamp][nProp], + s.fluidProperties[nSamp][nProp], + "Test " + (nSamp + 1) + " Property " + SystemProperties.getPropertyNames()[nProp]); + } else { + Assertions.assertEquals(expected.fluidProperties[nSamp][nProp], + s.fluidProperties[nSamp][nProp], 1e-5, + "Test " + (nSamp + 1) + " Property " + SystemProperties.getPropertyNames()[nProp]); + } + } + } + // Assertions.assertEquals(expected, s); + } + } + + @Test + @Disabled + void testDisplay() { + ThermodynamicOperations ops = new ThermodynamicOperations(); + ops.display(); + } + private List> createDummyRequest(double[] fractions, int len) { List> onlineFractions = new ArrayList>(); @@ -194,4 +471,109 @@ private List> createDummyRequest(double[] fractions, int len) { return onlineFractions; } + + private Collection getTestData() throws IOException { + ClassLoader classLoader = getClass().getClassLoader(); + File folder = + new File(classLoader.getResource("neqsim/thermodynamicOperations/testcases").getFile()); + + HashMap testData = new HashMap<>(); + + File[] directoryListing = folder.listFiles(); + for (File child : directoryListing) { + String[] n = child.getName().split("_"); + + if (testData.get(n[0]) == null) { + testData.put(n[0], new TestData(n[0])); + } + + if ("I.json".equals(n[1])) { + testData.get(n[0]).setInputFile(child.getAbsolutePath()); + } else if ("O.json".equals(n[1])) { + testData.get(n[0]).setOutputFile(child.getAbsolutePath()); + } + } + + return testData.values(); + } + + private class TestData { + private final String name; + private String inputFile; + private String outputFile; + private HashMap input; + + public TestData(String name) { + this.name = name; + } + + public void setInputFile(String inputFile) throws IOException { + this.setInput(inputFile); + this.inputFile = inputFile; + } + + public String getOutputFile() { + return outputFile; + } + + public void setOutputFile(String outputFile) { + this.outputFile = outputFile; + } + + @SuppressWarnings("unchecked") + private void setInput(String inputFile) throws IOException { + String fileContents = new String(Files.readAllBytes(Paths.get(inputFile))); + Gson gson = new Gson(); + Type type = new TypeToken>() {}.getType(); + + input = gson.fromJson(fileContents, type); + + input.replace("fn", Math.toIntExact(Math.round((double) input.get("fn")))); + input.replace("FlashMode", Math.toIntExact(Math.round((double) input.get("FlashMode")))); + + ArrayList sp_in_pa = (ArrayList) input.get("Sp1"); + ArrayList sp1 = new ArrayList(); + + for (int k = 0; k < sp_in_pa.size(); k++) { + sp1.add(sp_in_pa.get(k) / 1e5); + } + input.replace("Sp1", sp1); + } + + private HashMap getInput() { + return input; + } + + @SuppressWarnings("unchecked") + public CalculationResult getOutput() throws IOException { + String fileContents = new String(Files.readAllBytes(Paths.get(this.getOutputFile()))); + Gson gson = new Gson(); + Type type = new TypeToken>() {}.getType(); + + HashMap outputData = gson.fromJson(fileContents, type); + ArrayList> calcresult = + (ArrayList>) outputData.get("calcresult"); + + Double[][] calcResult = new Double[calcresult.size()][]; + for (int kSample = 0; kSample < calcresult.size(); kSample++) { + calcResult[kSample] = new Double[calcresult.get(kSample).size()]; + for (int kProp = 0; kProp < calcresult.get(kSample).size(); kProp++) { + try { + calcResult[kSample][kProp] = calcresult.get(kSample).get(kProp); + } catch (Exception e) { + calcResult[kSample][kProp] = Double.NaN; + } + } + } + + ArrayList calcerrors = (ArrayList) outputData.get("calcerrors"); + + return new CalculationResult(calcResult, calcerrors.toArray(new String[0])); + } + + @Override + public String toString() { + return "TestData{" + "name=" + name + ", input=" + inputFile + ", output=" + outputFile + '}'; + } + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/Degasser.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/Degasser.java new file mode 100644 index 0000000000..38d7fbe4cd --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/Degasser.java @@ -0,0 +1,200 @@ +package neqsim.thermodynamicOperations.flashOps; + +import java.util.ArrayList; +import java.util.List; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import neqsim.thermo.phase.PhaseEosInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + * @author ESOL + */ +class Degasser { + static neqsim.thermo.system.SystemInterface testSystem = null; + static ThermodynamicOperations testOps = null; + + /** + * @throws java.lang.Exception + */ + @BeforeEach + void setUp() throws Exception { + testSystem = new neqsim.thermo.system.SystemPrEos(243.15, 300.0); + testSystem.addComponent("methane", 90.0); + testSystem.addComponent("ethane", 0.0); + testSystem.addComponent("propane", 0.0); + testSystem.addComponent("i-butane", 0.0); + testSystem.addComponent("n-butane", 0.0); + testSystem.addComponent("i-pentane", 0.0); + testSystem.addComponent("n-pentane", 0.0); + testSystem.addComponent("n-hexane", 0.0); + testSystem.addComponent("nitrogen", 10.0); + testSystem.setMixingRule("classic"); + } + + /** + * Test method for + */ + @Test + void testRun() { + neqsim.thermo.system.SystemInterface fluid1 = + new neqsim.thermo.system.SystemSrkCPAstatoil(273.15 + 42.0, 10.00); + + fluid1.addComponent("nitrogen", 0.110282450914383); + fluid1.addComponent("CO2", 8.92014980316162); + fluid1.addComponent("methane", 72.3870849609375); + fluid1.addComponent("ethane", 5.19349813461304); + fluid1.addComponent("propane", 5.20273065567017); + fluid1.addComponent("i-butane", 0.436239510774612); + fluid1.addComponent("n-butane", 1.39356422424316); + fluid1.addComponent("i-pentane", 0.769362509250641); + fluid1.addComponent("n-pentane", 0.543137490749359); + fluid1.addComponent("n-hexane", 3.90587639808655); + fluid1.addComponent("n-heptane", 3.90587639808655); + fluid1.addComponent("water", 40.0); + fluid1.setMixingRule(10); + fluid1.setMultiPhaseCheck(true); + + ThermodynamicOperations testOps = new ThermodynamicOperations(fluid1); + + testOps.TPflash(); + + double[] intParameter = {-0.24, // "CO2" + + -0.721, // "methane" + + 0.11, // "ethane" + + 0.205, // "propane" + + 0.081, // "i-butane" + + 0.17, // "n-butane" + + 0.051, // "i-pentane" + + 0.1135, // "n-pentane" + + 0.0832, // "n-hexane" + + 0.0535 // "n-heptane" + + }; + + String[] componentNames = fluid1.getComponentNames(); + + for (int i = 0; i < intParameter.length; i++) { + int componentIndex = findComponentIndex(componentNames, componentNames[i + 1]);// except + // nitrogen 0 + int waterIndex = findComponentIndex(componentNames, "water"); + + if (componentIndex != -1 && waterIndex != -1) { + ((PhaseEosInterface) fluid1.getPhases()[0]).getMixingRule() + .setBinaryInteractionParameter(componentIndex, waterIndex, intParameter[i]); + + ((PhaseEosInterface) fluid1.getPhases()[1]).getMixingRule() + .setBinaryInteractionParameter(componentIndex, waterIndex, intParameter[i]); + } else { + } + } + + testOps.TPflash(); + // fluid1.prettyPrint(); + + List molarComposition = new ArrayList<>(); + molarComposition.add(0.07649963805789309); + molarComposition.add(10.028287212684818); + molarComposition.add(49.52052228615394); + molarComposition.add(3.64093888905641); + molarComposition.add(3.6620992636511893); + molarComposition.add(0.2995511776378937); + molarComposition.add(0.9605423088257289); + molarComposition.add(0.5032398365065283); + molarComposition.add(0.36145746378993904); + molarComposition.add(0.2364703087561068); + molarComposition.add(2.732003176453634); + molarComposition.add(27.978388438425913); + + double[] molarCompositionArray = + molarComposition.stream().mapToDouble(Double::doubleValue).toArray(); + + neqsim.thermo.system.SystemInterface fluid_test_separator = fluid1.clone(); + fluid_test_separator.setMolarComposition(molarCompositionArray); + + neqsim.processSimulation.processEquipment.stream.Stream inlet_stream_test_sep = + new neqsim.processSimulation.processEquipment.stream.Stream("TEST_SEPARATOR_INLET", + fluid_test_separator); + inlet_stream_test_sep.setTemperature(72.6675872802734, "C"); + inlet_stream_test_sep.setPressure(10.6767892837524, "bara"); + inlet_stream_test_sep.setFlowRate(721.3143271348611, "kg/hr"); + inlet_stream_test_sep.run(); + + neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator test_separator = + new neqsim.processSimulation.processEquipment.separator.ThreePhaseSeparator( + "TEST_SEPARATOR", inlet_stream_test_sep); + test_separator.run(); + test_separator.getWaterOutStream().getThermoSystem().prettyPrint(); + + neqsim.processSimulation.processEquipment.heatExchanger.Heater heater_TP_setter_test_stream = + new neqsim.processSimulation.processEquipment.heatExchanger.Heater( + "TP_SETTER_FOR_THE_DEGASSER_TEST_SEP_STREAM", test_separator.getWaterOutStream()); + heater_TP_setter_test_stream.setOutPressure(5.9061164855957 - 0.01, "bara"); + heater_TP_setter_test_stream.setOutTemperature(79.8487854003906, "C"); + heater_TP_setter_test_stream.run(); + // System.out.println("Gas out from degasser " + heater_TP_setter_test_stream.getOutStream() + // .getFluid().getPhase("gas").getFlowRate("kg/hr")); + heater_TP_setter_test_stream.getOutletStream().getThermoSystem().prettyPrint(); + + neqsim.processSimulation.processEquipment.heatExchanger.Heater heater_TP_setter_test_stream2 = + new neqsim.processSimulation.processEquipment.heatExchanger.Heater( + "TP_SETTER_FOR_THE_DEGASSER_TEST_SEP_STREAM", test_separator.getWaterOutStream()); + heater_TP_setter_test_stream2.setOutPressure(5.9061164855957, "bara"); + heater_TP_setter_test_stream2.setOutTemperature(79.8487854003906, "C"); + heater_TP_setter_test_stream2.run(); + + // System.out.println("Gas out from degasser2 " + heater_TP_setter_test_stream2.getOutStream() + // .getFluid().getPhase("gas").getFlowRate("kg/hr")); + } + + private int findComponentIndex(String[] componentNames, String componentName) { + for (int i = 0; i < componentNames.length; i++) { + if (componentNames[i].equals(componentName)) { + return i; + } + } + + return -1; // Component not found + } + + /** + * Test method for + */ + void testRun2() { + /* + * XStream xstream = new XStream(); xstream.addPermission(AnyTypePermission.ANY); // Specify the + * file path to read Path filePath = Paths.get( + * "/workspaces/neqsim/src/test/java/neqsim/thermodynamicOperations/flashOps/my_process.xml"); + * String xmlContents = ""; try { //xmlContents = Files.readString(filePath); } catch + * (IOException e) { e.printStackTrace(); } + * + * // Deserialize from xml neqsim.processSimulation.processSystem.ProcessSystem operationsCopy = + * (neqsim.processSimulation.processSystem.ProcessSystem) xstream.fromXML(xmlContents); + * operationsCopy.run(); neqsim.processSimulation.processEquipment.separator.Separator + * VD02Separator = (neqsim.processSimulation.processEquipment.separator.Separator) + * operationsCopy .getUnit("Separator after CFU gas"); + * neqsim.processSimulation.processEquipment.separator.Separator VD01Separator = + * (neqsim.processSimulation.processEquipment.separator.Separator) operationsCopy + * .getUnit("Separator after degasser gas"); + * neqsim.processSimulation.processEquipment.separator.Separator Degasser = + * (neqsim.processSimulation.processEquipment.separator.Separator) operationsCopy + * .getUnit("Degasser"); + * System.out.println("The gas flow rate should be < 200 kg/hr, the actual value is " + + * Degasser.getGasOutStream().getFlowRate("kg/hr")); + * System.out.println("The gas flow rate should be < 200 kg/hr, the actual value is " + + * VD01Separator.getGasOutStream().getFlowRate("kg/hr")); VD02Separator.getGasOutStream().run(); + * System.out.println("The gas flow rate should be < 200 kg/hr, the actual value is " + + * VD02Separator.getGasOutStream().getFlowRate("kg/hr")); + */ + + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashCPATest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashCPATest.java new file mode 100644 index 0000000000..898ef5d1a8 --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashCPATest.java @@ -0,0 +1,43 @@ +package neqsim.thermodynamicOperations.flashOps; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + * @author ESOL + */ +class PHFlashCPATest { + static neqsim.thermo.system.SystemInterface testSystem = null; + static ThermodynamicOperations testOps = null; + + @Test + void testRun() { + testSystem = new neqsim.thermo.system.SystemSrkCPAstatoil(323.15, 100.0); + testSystem.addComponent("CO2", 9.0); + testSystem.addComponent("methane", 90.0); + testSystem.addComponent("ethane", 12.0); + testSystem.addComponent("propane", 1.0); + testSystem.addComponent("i-butane", 1.0); + testSystem.addComponent("n-butane", 1.0); + testSystem.addComponent("i-pentane", 1.0); + testSystem.addComponent("n-pentane", 1.0); + testSystem.addComponent("n-hexane", 0.001); + testSystem.addComponent("water", 10.0); + testSystem.addComponent("MEG", 10.0); + testSystem.setMixingRule(10); + testSystem.setMultiPhaseCheck(true); + + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + double enthalpy = testSystem.getEnthalpy(); + double entropy = testSystem.getEntropy(); + testSystem.setPressure(50.0); + testOps.PHflash(enthalpy); + assertEquals(enthalpy, testSystem.getEnthalpy(), 1e-2); + assertEquals(307.5036701214, testSystem.getTemperature(), 1e-2); + testOps.PSflash(entropy); + assertEquals(287.0197047, testSystem.getTemperature(), 1e-2); + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashGERG2008Test.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashGERG2008Test.java index a5e0987e89..731e7d5f63 100644 --- a/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashGERG2008Test.java +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashGERG2008Test.java @@ -1,56 +1,46 @@ -/** - * - */ package neqsim.thermodynamicOperations.flashOps; -import static org.junit.jupiter.api.Assertions.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - import neqsim.thermodynamicOperations.ThermodynamicOperations; /** * @author ESOL - * */ class PHFlashGERG2008Test { - - static neqsim.thermo.system.SystemInterface testSystem = null; - static ThermodynamicOperations testOps = null; - - /** - * @throws java.lang.Exception - */ - @BeforeEach - void setUp() throws Exception { - testSystem = new neqsim.thermo.system.SystemPrEos(298.0, 50.0); - testSystem.addComponent("nitrogen", 0.01); - testSystem.addComponent("CO2", 0.01); - testSystem.addComponent("methane", 0.98); - testSystem.setMixingRule("classic"); - testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - testSystem.initProperties(); - } + static neqsim.thermo.system.SystemInterface testSystem = null; + static ThermodynamicOperations testOps = null; + + /** + * @throws java.lang.Exception + */ + @BeforeEach + void setUp() throws Exception { + testSystem = new neqsim.thermo.system.SystemPrEos(298.0, 50.0); + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.addComponent("methane", 0.98); + testSystem.setMixingRule("classic"); + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + } - /** - * Test method for {@link neqsim.thermodynamicOperations.flashOps.PHFlashGERG2008#run()}. - */ - @Test - void testRun() { - double[] gergProps = testSystem.getPhase(0).getProperties_GERG2008(); - double gergEnthalpy = gergProps[7]*testSystem.getPhase(0).getNumberOfMolesInPhase(); // J/mol K - testSystem.setPressure(10.0); - testOps.PHflashGERG2008(gergEnthalpy); - gergProps = testSystem.getPhase(0).getProperties_GERG2008(); - double gergEnthalpy2 = gergProps[7]*testSystem.getPhase(0).getNumberOfMolesInPhase(); - assertEquals(gergEnthalpy, gergEnthalpy2, Math.abs(gergEnthalpy2)/1000.0); - - testOps.PHflashGERG2008(gergEnthalpy+100.0); - gergProps = testSystem.getPhase(0).getProperties_GERG2008(); - double gergEnthalpy3 = gergProps[7]*testSystem.getPhase(0).getNumberOfMolesInPhase(); - assertEquals(gergEnthalpy3, gergEnthalpy2+100.0, Math.abs(gergEnthalpy2)/1000.0); - } + @Test + void testRun() { + double[] gergProps = testSystem.getPhase(0).getProperties_GERG2008(); + double gergEnthalpy = gergProps[7] * testSystem.getPhase(0).getNumberOfMolesInPhase(); // J/mol + // K + testSystem.setPressure(10.0); + testOps.PHflashGERG2008(gergEnthalpy); + gergProps = testSystem.getPhase(0).getProperties_GERG2008(); + double gergEnthalpy2 = gergProps[7] * testSystem.getPhase(0).getNumberOfMolesInPhase(); + assertEquals(gergEnthalpy, gergEnthalpy2, Math.abs(gergEnthalpy2) / 1000.0); + testOps.PHflashGERG2008(gergEnthalpy + 100.0); + gergProps = testSystem.getPhase(0).getProperties_GERG2008(); + double gergEnthalpy3 = gergProps[7] * testSystem.getPhase(0).getNumberOfMolesInPhase(); + assertEquals(gergEnthalpy3, gergEnthalpy2 + 100.0, Math.abs(gergEnthalpy2) / 1000.0); + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashTest.java index ffb12eedcb..f2239b838a 100644 --- a/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashTest.java +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/PHFlashTest.java @@ -1,54 +1,43 @@ -/** - * - */ package neqsim.thermodynamicOperations.flashOps; -import static org.junit.jupiter.api.Assertions.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - import neqsim.thermodynamicOperations.ThermodynamicOperations; /** * @author ESOL - * */ class PHFlashTest { - - static neqsim.thermo.system.SystemInterface testSystem = null; - static ThermodynamicOperations testOps = null; - - /** - * @throws java.lang.Exception - */ - @BeforeEach - void setUp() throws Exception { - testSystem = new neqsim.thermo.system.SystemPrEos(243.15, 300.0); - testSystem.addComponent("methane", 90.0); - testSystem.addComponent("ethane", 0.0); - testSystem.addComponent("propane", 0.0); - testSystem.addComponent("i-butane", 0.0); - testSystem.addComponent("n-butane", 0.0); - testSystem.addComponent("i-pentane", 0.0); - testSystem.addComponent("n-pentane", 0.0); - testSystem.addComponent("n-hexane", 0.0); - testSystem.addComponent("nitrogen", 10.0); - testSystem.setMixingRule("classic"); - } + static neqsim.thermo.system.SystemInterface testSystem = null; + static ThermodynamicOperations testOps = null; - /** - * Test method for {@link neqsim.thermodynamicOperations.flashOps.PHFlash#run()}. - */ - @Test - void testRun() { - testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - testSystem.initProperties(); - double enthalpy = testSystem.getEnthalpy(); - testSystem.setPressure(4.0); - testOps.PHflash(enthalpy); - assertEquals(enthalpy, testSystem.getEnthalpy(), 1e-2); - } + /** + * @throws java.lang.Exception + */ + @BeforeEach + void setUp() throws Exception { + testSystem = new neqsim.thermo.system.SystemPrEos(243.15, 300.0); + testSystem.addComponent("methane", 90.0); + testSystem.addComponent("ethane", 0.0); + testSystem.addComponent("propane", 0.0); + testSystem.addComponent("i-butane", 0.0); + testSystem.addComponent("n-butane", 0.0); + testSystem.addComponent("i-pentane", 0.0); + testSystem.addComponent("n-pentane", 0.0); + testSystem.addComponent("n-hexane", 0.0); + testSystem.addComponent("nitrogen", 10.0); + testSystem.setMixingRule("classic"); + } + @Test + void testRun() { + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + double enthalpy = testSystem.getEnthalpy(); + testSystem.setPressure(4.0); + testOps.PHflash(enthalpy); + assertEquals(enthalpy, testSystem.getEnthalpy(), 1e-2); + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/PSFlashGERG2008Test.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/PSFlashGERG2008Test.java index 1794544195..d7345039c1 100644 --- a/src/test/java/neqsim/thermodynamicOperations/flashOps/PSFlashGERG2008Test.java +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/PSFlashGERG2008Test.java @@ -1,51 +1,43 @@ -/** - * - */ package neqsim.thermodynamicOperations.flashOps; -import static org.junit.jupiter.api.Assertions.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - import neqsim.thermodynamicOperations.ThermodynamicOperations; /** * @author ESOL - * */ class PSFlashGERG2008Test { - - static neqsim.thermo.system.SystemInterface testSystem = null; - static ThermodynamicOperations testOps = null; - - /** - * @throws java.lang.Exception - */ - @BeforeEach - void setUp() throws Exception { - testSystem = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); - testSystem.addComponent("nitrogen", 0.01); - testSystem.addComponent("CO2", 0.01); - testSystem.addComponent("methane", 0.98); - testSystem.setMixingRule("classic"); - testOps = new ThermodynamicOperations(testSystem); - testOps.TPflash(); - testSystem.initProperties(); - } + static neqsim.thermo.system.SystemInterface testSystem = null; + static ThermodynamicOperations testOps = null; - /** - * Test method for {@link neqsim.thermodynamicOperations.flashOps.PSFlashGERG2008#run()}. - */ - @Test - void testRun() { - double[] gergProps = testSystem.getPhase(0).getProperties_GERG2008(); - double gergEntropy = gergProps[8]*testSystem.getPhase(0).getNumberOfMolesInPhase(); // J/mol K - testSystem.setPressure(20.0); - testOps.PSflashGERG2008(gergEntropy); - gergProps = testSystem.getPhase(0).getProperties_GERG2008(); - double gergEntropy2 = gergProps[8]*testSystem.getPhase(0).getNumberOfMolesInPhase(); - assertEquals(gergEntropy, gergEntropy2, Math.abs(gergEntropy2)/1000.0); - } + /** + * @throws java.lang.Exception + */ + @BeforeEach + void setUp() throws Exception { + testSystem = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.addComponent("methane", 0.98); + testSystem.setMixingRule("classic"); + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + } + /** + * Test method for {@link neqsim.thermodynamicOperations.flashOps.PSFlashGERG2008#run()}. + */ + @Test + void testRun() { + double[] gergProps = testSystem.getPhase(0).getProperties_GERG2008(); + double gergEntropy = gergProps[8] * testSystem.getPhase(0).getNumberOfMolesInPhase(); // J/mol K + testSystem.setPressure(20.0); + testOps.PSflashGERG2008(gergEntropy); + gergProps = testSystem.getPhase(0).getProperties_GERG2008(); + double gergEntropy2 = gergProps[8] * testSystem.getPhase(0).getNumberOfMolesInPhase(); + assertEquals(gergEntropy, gergEntropy2, Math.abs(gergEntropy2) / 1000.0); + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/RachfordRiceTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/RachfordRiceTest.java new file mode 100644 index 0000000000..9f7db4f95c --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/RachfordRiceTest.java @@ -0,0 +1,41 @@ +package neqsim.thermodynamicOperations.flashOps; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class RachfordRiceTest { + @Test + void testCalcBeta() { + double[] z = new double[] {0.7, 0.3}; + double[] K = new double[] {2.0, 0.01}; + + try { + RachfordRice rachfordRice = new RachfordRice(); + Assertions.assertEquals(0.407070707, rachfordRice.calcBeta(K, z), 1e-6); + } catch (Exception e) { + e.printStackTrace(); + } + + try { + RachfordRice rachfordRice = new RachfordRice(); + rachfordRice.setMethod("Nielsen2023"); + Assertions.assertEquals(0.407070707, rachfordRice.calcBeta(K, z), 1e-6); + rachfordRice.setMethod("Michelsen2001"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Test + void testCalcBetaMethod2() { + double[] z = new double[] {0.7, 0.3}; + double[] K = new double[] {2.0, 0.01}; + + try { + RachfordRice rachfordRice = new RachfordRice(); + Assertions.assertEquals(0.407070707, rachfordRice.calcBeta(K, z), 1e-6); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/SaturateWithWaterTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/SaturateWithWaterTest.java new file mode 100644 index 0000000000..fac2ef054e --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/SaturateWithWaterTest.java @@ -0,0 +1,91 @@ +package neqsim.thermodynamicOperations.flashOps; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemPrEos; +import neqsim.thermo.system.SystemSrkCPAstatoil; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class SaturateWithWaterTest { + static Logger logger = LogManager.getLogger(SaturateWithWaterTest.class); + + @Test + void testRun() { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 70.0, 150.0); + + testSystem.addComponent("methane", 75.0); + testSystem.addComponent("ethane", 7.5); + testSystem.addComponent("propane", 4.0); + testSystem.addComponent("n-butane", 1.0); + testSystem.addComponent("i-butane", 0.6); + testSystem.addComponent("n-hexane", 0.3); + testSystem.addPlusFraction("C6", 1.3, 100.3 / 1000.0, 0.8232); + testSystem.setMixingRule(10); + testSystem.setMultiPhaseCheck(true); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.saturateWithWater(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + assertEquals(0.0029033655101811814, testSystem.getComponent("water").getz(), 1e-5); + } + + @Test + void testRun2() { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 70.0, 150.0); + + testSystem.addComponent("methane", 75.0); + testSystem.addComponent("ethane", 7.5); + testSystem.addComponent("propane", 4.0); + testSystem.setMixingRule(10); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.saturateWithWater(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + assertEquals(0.002891748277007660, testSystem.getComponent("water").getz(), 1e-5); + } + + @Test + void testRun3() { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 20.0, 150.0); + + testSystem.addComponent("methane", 2.0); + testSystem.addComponent("n-heptane", 75.0); + testSystem.setMixingRule(10); + testSystem.setMultiPhaseCheck(true); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.saturateWithWater(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + assertEquals(2.8465024974919816E-4, testSystem.getComponent("water").getz(), 1e-5); + } + + @Test + void testRun4() { + SystemInterface testSystem = new SystemPrEos(273.15 + 20.0, 150.0); + + testSystem.addComponent("methane", 2.0); + testSystem.addComponent("n-heptane", 75.0); + testSystem.setMixingRule("classic"); + testSystem.setMultiPhaseCheck(true); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.saturateWithWater(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + assertEquals(2.4301370485671443E-4, testSystem.getComponent("water").getz(), 1e-5); + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTest.java index 6ce26e05b3..fb3a5e9e65 100644 --- a/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTest.java +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTest.java @@ -1,6 +1,3 @@ -/** - * - */ package neqsim.thermodynamicOperations.flashOps; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -10,10 +7,8 @@ /** * @author ESOL - * */ class TPFlashTest { - static neqsim.thermo.system.SystemInterface testSystem = null; static ThermodynamicOperations testOps = null; @@ -56,7 +51,9 @@ void testRun2() { testOps = new ThermodynamicOperations(testSystem); testOps.TPflash(); testSystem.initProperties(); - assertEquals(-359394.2117634512, testSystem.getEnthalpy(), 1e-2); + double expected = -359377.5331957406; + double deviation = Math.abs((testSystem.getEnthalpy() - expected) / expected * 100); + assertEquals(0.0, deviation, 0.5); } @Test @@ -67,7 +64,9 @@ void testRun3() { testOps = new ThermodynamicOperations(testSystem); testOps.TPflash(); testSystem.initProperties(); - assertEquals(-552568.2810227782, testSystem.getEnthalpy(), 1e-2); + double expected = -552558.80195817; + double deviation = Math.abs((testSystem.getEnthalpy() - expected) / expected * 100); + assertEquals(0.0, deviation, 0.5); } // @Test @@ -100,4 +99,74 @@ void testRun5() { double beta = testSystem5.getBeta(); assertEquals(6.272876522701802E-7, beta, 1e-5); } + + @Test + void testRun6() { + neqsim.thermo.system.SystemInterface testSystem5 = + new neqsim.thermo.system.SystemSrkCPAstatoil(243.15, 300.0); + testSystem5.addComponent("water", 50.0); + testSystem5.addComponent("nitrogen", 0.58419764); + testSystem5.addComponent("CO2", 0.070499); + testSystem5.addComponent("methane", 64.04974); + testSystem5.addComponent("ethane", 8.148467); + testSystem5.addComponent("propane", 4.985780239); + testSystem5.addComponent("i-butane", 0.966896117); + testSystem5.addComponent("n-butane", 1.923792362); + testSystem5.addComponent("i-pentane", 0.725197077); + testSystem5.addComponent("n-pentane", 0.856096566); + testSystem5.addComponent("n-hexane", 0.968696); + testSystem5.addTBPfraction("C7", 1.357195, 98.318 / 1000, 736.994 / 1000); + testSystem5.addTBPfraction("C8", 1.507094, 112.273 / 1000, 758.73 / 1000); + testSystem5.addTBPfraction("C9", 1.216195, 126.266 / 1000, 775.35 / 1000); + testSystem5.addTBPfraction("C11", 1.624694, 146.891006469727 / 1000, 0.794530808925629); + testSystem5.addTBPfraction("C13", 1.4131942987442, 174.875 / 1000, 0.814617037773132); + testSystem5.addTBPfraction("C15", 1.22939503192902, 202.839004516602 / 1000, 0.830620348453522); + testSystem5.addTBPfraction("C18", 1.55159378051758, 237.324005126953 / 1000, 0.846814215183258); + testSystem5.addTBPfraction("C20", 0.868496537208557, 272.686004638672 / 1000, + 0.860718548297882); + testSystem5.addTBPfraction("C23", 1.0966956615448, 307.141998291016 / 1000, 0.872339725494385); + testSystem5.addTBPfraction("C29", 1.61579358577728, 367.554992675781 / 1000, 0.889698147773743); + testSystem5.addTBPfraction("C30", 3.24028706550598, 594.625 / 1000, 0.935410261154175); + + testSystem5.setMixingRule(10); + testSystem5.setMultiPhaseCheck(true); + testSystem5.setPressure(300.0, "bara"); + testSystem5.setTemperature(343.15, "K"); + testOps = new ThermodynamicOperations(testSystem5); + testOps.TPflash(); + testSystem5.initProperties(); + assertEquals(0.2838675588923609 + , testSystem5.getBeta(), 1e-6); + assertEquals(3, testSystem5.getNumberOfPhases()); + } + + @Test + void testTPflash1() { + testSystem = new neqsim.thermo.system.SystemSrkEos(273.15 + 290, 400.0); + testSystem.addComponent("water", 65.93229747922976); + testSystem.addComponent("NaCl", 0.784426208131475); + testSystem.addComponent("nitrogen", 0.578509157534656); + testSystem.addComponent("methane", 22.584113183429718); + testSystem.addComponent("ethane", 3.43870686718215); + testSystem.addComponent("propane", 0.26487350163523365); + testSystem.addComponent("i-butane", 0.04039429848533373); + testSystem.addComponent("n-butane", 0.1543856425679738); + testSystem.addComponent("i-pentane", 0.04039429848533373); + testSystem.addComponent("n-pentane", 0.1543856425679738); + testSystem.addTBPfraction("C6", 0.568724470114871, 84.93298402237961 / 1000.0, + 666.591171644071 / 1000.0); + testSystem.addTBPfraction("C7", 0.9478147516962493, 90.01311937418495 / 1000.0, + 746.9101810251765 / 1000.0); + testSystem.addTBPfraction("C8", 0.974840433764089, 102.34691375809437 / 1000.0, + 776.2927119017166 / 1000.0); + testSystem.addTBPfraction("C9", 0.5505907716430188, 116.06055719132209 / 1000.0, + 791.2983315058531 / 1000.0); + testSystem.addTBPfraction("C10", 1.9704404325720026, 221.831957 / 1000.0, 842.802708 / 1000.0); + testSystem.setMixingRule("classic"); + testSystem.setMultiPhaseCheck(true); + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + assertEquals(2, testSystem.getNumberOfPhases()); + // testSystem.prettyPrint(); + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTestHighTemp.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTestHighTemp.java new file mode 100644 index 0000000000..4dac61a32a --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTestHighTemp.java @@ -0,0 +1,71 @@ +package neqsim.thermodynamicOperations.flashOps; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + * @author ESOL + */ +class TPFlashTestHighTemp { + static neqsim.thermo.system.SystemInterface testSystem = null; + static ThermodynamicOperations testOps = null; + + @BeforeEach + void setUp() { + testSystem = new neqsim.thermo.system.SystemSrkEos(243.15, 300.0); + testSystem.addComponent("nitrogen", 1.64e-3); + testSystem.addComponent("CO2", 1.64e-3); + testSystem.addComponent("H2S", 1.64e-3); + testSystem.addComponent("methane", 90.0); + testSystem.addComponent("ethane", 2.0); + testSystem.addComponent("propane", 1.0); + testSystem.addComponent("i-butane", 1.0); + testSystem.addComponent("n-butane", 1.0); + testSystem.addComponent("i-pentane", 1.0); + testSystem.addComponent("n-pentane", 1.0); + testSystem.addComponent("n-hexane", 1.0); + testSystem.addComponent("n-heptane", 1.0); + testSystem.addComponent("n-octane", 1.0); + testSystem.addComponent("n-nonane", 1.0); + testSystem.addComponent("nC10", 1.0); + testSystem.addComponent("nC11", 1.0); + testSystem.addComponent("nC12", 1.0); + testSystem.addComponent("nC13", 1.0); + testSystem.addComponent("nC14", 1.0); + testSystem.addComponent("nC15", 1.0); + testSystem.addComponent("nC16", 1.0); + testSystem.addComponent("nC17", 1.0); + testSystem.addComponent("nC18", 1.0); + testSystem.addComponent("nC19", 1.0); + + testSystem.setMixingRule("classic"); + testSystem.setMolarComposition(new double[] {1.63e-3, 3.23e-3, 0, 3e-1, 4.6e-2, 1.4e-2, 2.2e-2, + 3.9e-3, 8.8e-3, 2.6e-3, 3.2e-2, 1.2e-1, 1.5e-1, 9.8e-2, 7.6e-2, 4.1e-2, 2.5e-2, 1.6e-2, + 1e-2, 5.6e-3, 2.7e-3, 1.3e-3, 8.7e-4, 3.8e-4}); + testSystem.setMultiPhaseCheck(true); + } + + @Test + void testRun() { + testSystem.setPressure(88, "bara"); + + for (int i = 0; i < 400; i++) { + testSystem.setTemperature(0.0 + i * 1, "C"); + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + System.out.print(testSystem.getPhaseFraction("gas", "mole") + " numerofphases " + + testSystem.getNumberOfPhases() + " temp " + testSystem.getTemperature("C") + " hasoil " + + testSystem.hasPhaseType("oil") + " gibbs energy " + testSystem.getGibbsEnergy() + + " gibbs energy " + " density " + testSystem.getDensity("kg/m3") + " \n"); + } + + testSystem.setTemperature(268.0, "C"); + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + assertEquals(0.006832557441121211, testSystem.getPhaseFraction("gas", "mole"), 0.001); + } +} + diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTestWellFluid.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTestWellFluid.java index 3af1b0eeb1..bdca57ff62 100644 --- a/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTestWellFluid.java +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/TPFlashTestWellFluid.java @@ -1,6 +1,3 @@ -/** - * - */ package neqsim.thermodynamicOperations.flashOps; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -10,10 +7,8 @@ /** * @author ESOL - * */ class TPFlashTestWellFluid { - static neqsim.thermo.system.SystemInterface wellFluid = null; static ThermodynamicOperations testOps = null; @@ -74,6 +69,7 @@ void testTPflashComp2() { 8.96e-3, 1.539e-3, 5.9921e-1}); testOps = new ThermodynamicOperations(wellFluid); testOps.TPflash(); - assertEquals(1.4292538950216407, wellFluid.getPhase(0).getDensity(), 1e-5); + assertEquals(1.432253736300898 + , wellFluid.getPhase(0).getDensity(), 1e-5); } } diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/TPsolidFlash.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/TPsolidFlash.java new file mode 100644 index 0000000000..e48224bf55 --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/TPsolidFlash.java @@ -0,0 +1,89 @@ +package neqsim.thermodynamicOperations.flashOps; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; +import neqsim.thermo.phase.PhaseType; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + * @author ESOL + */ +class TPsolidFlash { + @Test + void testSolidFLash() { + neqsim.thermo.system.SystemPrEos testSystem = + new neqsim.thermo.system.SystemPrEos(283.15, 20.0); + testSystem.addComponent("CO2", 1.0); + testSystem.addComponent("methane", 80.0); + testSystem.addComponent("ethane", 5.0); + testSystem.addTBPfraction("C11", 0.01, 150.0 / 1000.0, 0.82); + testSystem.addTBPfraction("C12", 0.01, 170.0 / 1000.0, 0.84); + testSystem.addComponent("S8", 10.0); + testSystem.setMixingRule("classic"); + testSystem.setMultiPhaseCheck(true); + testSystem.setSolidPhaseCheck("S8"); + ThermodynamicOperations thermoops = new ThermodynamicOperations(testSystem); + // thermoops.TPflash(); + thermoops.TPSolidflash(); + // testSystem.prettyPrint(); + assertEquals(3, testSystem.getNumberOfPhases()); + assertTrue(testSystem.hasPhaseType(PhaseType.SOLID)); + + // System.out.println( + // "kg S8 per kg HC " + (testSystem.getPhase(0).getComponent("S8").getFlowRate("kg/hr") + // + testSystem.getPhase(1).getComponent("S8").getFlowRate("kg/hr")) + // / (testSystem.getPhase(0).getFlowRate("kg/hr") + // + testSystem.getPhase(1).getFlowRate("kg/hr"))); + + } + + @Test + void testSolidFLash2() { + neqsim.thermo.system.SystemPrEos testSystem = + new neqsim.thermo.system.SystemPrEos(283.15, 100.0); + testSystem.addComponent("nitrogen", 1.75); + testSystem.addComponent("CO2", 0.23); + testSystem.addComponent("methane", 93.84); + testSystem.addComponent("ethane", 3.54); + testSystem.addComponent("propane", 0.585); + testSystem.addComponent("i-butane", 0.41); + testSystem.addComponent("n-butane", 0.13); + testSystem.addComponent("i-pentane", 0.0945); + testSystem.addComponent("n-pentane", 0.033); + testSystem.addTBPfraction("C6", 0.1, 82.23 / 1000.0, 0.6762); + testSystem.addTBPfraction("C7", 0.185, 88.65 / 1000.0, 0.757); + testSystem.addTBPfraction("C8", 0.118, 103.65 / 1000.0, 0.761); + testSystem.addTBPfraction("C9", 0.051, 120.65 / 1000.0, 0.775); + testSystem.addTBPfraction("C10", 0.0222, 134.65 / 1000.0, 0.795); + testSystem.addTBPfraction("C11", 0.0145, 147.65 / 1000.0, 0.813); + testSystem.addTBPfraction("C12", 0.0095, 161.65 / 1000.0, 0.83); + testSystem.addTBPfraction("C13", 0.0062, 175.65 / 1000.0, 0.845); + testSystem.addTBPfraction("C14", 0.004, 190.65 / 1000.0, 0.859); + testSystem.addTBPfraction("C15", 0.0026, 206.65 / 1000.0, 0.872); + testSystem.addTBPfraction("C16", 0.003, 222.65 / 1000.0, 0.885); + testSystem.addTBPfraction("C17", 0.0017, 222.65 / 1000.0, 0.885); + testSystem.addTBPfraction("C18", 0.0011, 237.65 / 1000.0, 0.898); + testSystem.addTBPfraction("C98", 0.0007, 251.65 / 1000.0, 0.907); + testSystem.addTBPfraction("C20", 0.0005, 263.65 / 1000.0, 0.918); + testSystem.addTBPfraction("C21", 0.0009, 301.65 / 1000.0, 0.945); + testSystem.addComponent("S8", 1.0e-5); + testSystem.setMixingRule("classic"); + testSystem.setMultiPhaseCheck(true); + testSystem.setTotalFlowRate(1.0, "MSm3/hr"); + testSystem.addComponent("S8", 100.0, "kg/hr"); + testSystem.setSolidPhaseCheck("S8"); + ThermodynamicOperations thermoops = new ThermodynamicOperations(testSystem); + thermoops.TPflash(); + // thermoops.TPSolidflash(); + //testSystem.prettyPrint(); + assertEquals(3, testSystem.getNumberOfPhases()); + assertTrue(testSystem.hasPhaseType(PhaseType.SOLID)); + + //System.out.println( + // "kg S8 per MSm3 gas " + (testSystem.getPhase(0).getComponent("S8").getFlowRate("kg/hr") + // + testSystem.getPhase(1).getComponent("S8").getFlowRate("kg/hr"))); + //System.out.println("m3 oil per MSm3 " + (testSystem.getPhase(PhaseType.OIL).getFlowRate("m3/hr") + // * 24 / testSystem.getPhase(PhaseType.GAS).getFlowRate("MSm3/day"))); + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/TVFlashTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/TVFlashTest.java index a396e02a5d..9d4596f77c 100644 --- a/src/test/java/neqsim/thermodynamicOperations/flashOps/TVFlashTest.java +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/TVFlashTest.java @@ -1,24 +1,25 @@ -/** - * - */ package neqsim.thermodynamicOperations.flashOps; import static org.junit.jupiter.api.Assertions.assertEquals; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - * @author ESOL - * + * Test TVFlash. */ class TVFlashTest { + static Logger logger = LogManager.getLogger(TVFlashTest.class); static neqsim.thermo.system.SystemInterface testSystem = null; static neqsim.thermo.system.SystemInterface testSystem2 = null; static ThermodynamicOperations testOps = null; /** + * Sets up test system. + * * @throws java.lang.Exception */ @BeforeEach @@ -35,7 +36,7 @@ void setUp() throws Exception { testSystem.setTotalFlowRate(1.0, "kg/sec"); testOps.TPflash(); testSystem.initProperties(); - + testSystem2 = new neqsim.thermo.system.SystemUMRPRUMCEos(293.15, 0.1); testSystem2.addComponent("methane", 8.5E-1); testSystem2.addComponent("ethane", 1.5E-1); @@ -49,24 +50,47 @@ void setUp() throws Exception { testOps.TPflash(); testSystem2.initProperties(); } - + @Test void testTVflash() { double total_rig_volume = 0.998; - - for(int i=0;i<50;i++) { + + for (int i = 0; i < 50; i++) { testSystem.addFluid(testSystem2); ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); try { - testOps.TVflash(total_rig_volume, "m3"); + testOps.TVflash(total_rig_volume, "m3"); + } catch (Exception ex) { + logger.info("error iterations " + i); + logger.error(ex.getMessage(), ex); } - catch(Exception e) { - System.out.println("error iterations " + i); - e.printStackTrace(); - } - } - assertEquals(235263.80103781424, testSystem.getEnthalpy(), 1e-2); - } - + } + assertEquals(235310.3670621656, testSystem.getEnthalpy(), 1.0); } + @Test + void testLiquidThermalExpansion() { + testSystem = new neqsim.thermo.system.SystemPrEos(273.15 - 60.0, 40.0); + testSystem.addComponent("CO2", 1.0); + testSystem.addComponent("methane", 10.0); + testSystem.addComponent("ethane", 20.0); + testSystem.addComponent("propane", 20.0); + testSystem.addComponent("n-butane", 20.0); + testSystem.setMixingRule("classic"); + + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + + double isothermalCompressibility = testSystem.getPhase(0).getIsothermalCompressibility(); + double isobaricThermalExpansivity = testSystem.getPhase(0).getIsobaricThermalExpansivity(); + + assertEquals(2.1655529052373845E-4, isothermalCompressibility, 1e-6); + assertEquals(0.0019761208438481767, isobaricThermalExpansivity, 1e-6); + + double volume = testSystem.getVolume("m3"); + testSystem.setTemperature(20.0, "C"); + testOps.TVflash(volume, "m3"); + assertEquals(747.12062, testSystem.getPressure("bara"), 1.0); + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/VUFlashTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/VUFlashTest.java new file mode 100644 index 0000000000..6a09ad7d7e --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/VUFlashTest.java @@ -0,0 +1,46 @@ +package neqsim.thermodynamicOperations.flashOps; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +/** + * Test VUFlash. + */ +class VUFlashTest { + static Logger logger = LogManager.getLogger(VUFlashTest.class); + + static neqsim.thermo.system.SystemInterface testSystem = null; + static neqsim.thermo.system.SystemInterface testSystem2 = null; + static ThermodynamicOperations testOps = null; + + /** + * Sets up test system. + * + * @throws java.lang.Exception + */ + @BeforeEach + void setUp() throws Exception {} + + @Test + void testVUflash() { + testSystem = new neqsim.thermo.system.SystemUMRPRUMCEos(293.15, 23.5); + testSystem.addComponent("methane", 1.0); + testSystem.addComponent("ethane", 0.01); + testSystem.addComponent("n-pentane", 0.01); + testSystem.setMixingRule("classic"); + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + + double volume = testSystem.getVolume("m3"); + double internalenergy = testSystem.getInternalEnergy("J"); + + testOps.VUflash(volume * 1.1, internalenergy, "m3", "J"); + + assertEquals(21.387, testSystem.getPressure(), 0.01); + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/WaxFlashTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/WaxFlashTest.java index f9b22040c6..c93f01a0ed 100644 --- a/src/test/java/neqsim/thermodynamicOperations/flashOps/WaxFlashTest.java +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/WaxFlashTest.java @@ -1,23 +1,19 @@ -/** - * - */ package neqsim.thermodynamicOperations.flashOps; -import static org.junit.jupiter.api.Assertions.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import neqsim.thermo.system.SystemInterface; import neqsim.thermo.system.SystemSrkEos; import neqsim.thermodynamicOperations.ThermodynamicOperations; import neqsim.util.database.NeqSimDataBase; /** * @author ESOL - * */ class WaxFlashTest { + static Logger logger = LogManager.getLogger(WaxFlashTest.class); static neqsim.thermo.system.SystemInterface testSystem = null; static ThermodynamicOperations testOps = null; @@ -27,9 +23,7 @@ class WaxFlashTest { */ @BeforeEach void setUp() throws Exception { - NeqSimDataBase.setConnectionString("jdbc:derby:C:/Users/esol/OneDrive - Equinor/programming/neqsim/src/main/resources/data/neqsimtestdatabase"); NeqSimDataBase.setCreateTemporaryTables(true); - testSystem = new SystemSrkEos(273.0 + 30, 50.0); testSystem.addComponent("CO2", 0.018); testSystem.addComponent("nitrogen", 0.333); @@ -47,30 +41,30 @@ void setUp() throws Exception { testSystem.createDatabase(true); testSystem.setMixingRule(2); testSystem.addSolidComplexPhase("wax"); - // testSystem.setSolidPhaseCheck("nC14"); testSystem.setMultiphaseWaxCheck(true); - NeqSimDataBase.setConnectionString("jdbc:derby:classpath:data/neqsimthermodatabase"); NeqSimDataBase.setCreateTemporaryTables(false); - //testSystem.display(); } /** - * Test method for {@link neqsim.thermodynamicOperations.flashOps.PHFlash#run()}. + * Test method for {@link neqsim.thermodynamicOperations.flashOps.saturationOps.WATcalc#run()}. */ @Test - @Disabled void testRun() { testOps = new ThermodynamicOperations(testSystem); + double waxT = 0.0; try { - testOps.calcWAT(); - testOps.TPflash(); - } catch (Exception e) { - e.printStackTrace(); + testOps.calcWAT(); + waxT = testSystem.getTemperature("C"); + testSystem.setTemperature(waxT - 10.0, "C"); + testOps.TPflash(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } double waxVolumeFrac = 0; if (testSystem.hasPhaseType("wax")) { - waxVolumeFrac = testSystem.getWtFraction(testSystem.getPhaseIndexOfPhase("wax")); + waxVolumeFrac = testSystem.getWtFraction(testSystem.getPhaseIndex("wax")); } + assertEquals(30.323689017118397, waxT, 0.001); + assertEquals(3.236072552269342E-4, waxVolumeFrac, 0.0001); } - } diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorwtFlashTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorwtFlashTest.java new file mode 100644 index 0000000000..bf1044044d --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/HydrateInhibitorwtFlashTest.java @@ -0,0 +1,49 @@ +package neqsim.thermodynamicOperations.flashOps.saturationOps; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkCPAstatoil; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class HydrateInhibitorwtFlashTest { + @Test + void testRun() { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 0, 100.0); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + + testSystem.addComponent("nitrogen", 79.0); + testSystem.addComponent("oxygen", 21.0); + // testSystem.addComponent("ethane", 0.10); + // testSystem.addComponent("propane", 0.050); + // testSystem.addComponent("i-butane", 0.0050); + testSystem.addComponent("MEG", 0.000001); + testSystem.addComponent("water", 0.0010); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + + testSystem.init(0); + testSystem.setMultiPhaseCheck(true); + testSystem.setHydrateCheck(true); + + try { + // creates HydrateInhibitorwtFlash object and calls run on it. + testOps.hydrateInhibitorConcentrationSet("MEG", 0.99); + double cons = 100 * testSystem.getPhase(0).getComponent("MEG").getNumberOfmoles() + * testSystem.getPhase(0).getComponent("MEG").getMolarMass() + / (testSystem.getPhase(0).getComponent("MEG").getNumberOfmoles() + * testSystem.getPhase(0).getComponent("MEG").getMolarMass() + + testSystem.getPhase(0).getComponent("water").getNumberOfmoles() + * testSystem.getPhase(0).getComponent("water").getMolarMass()); + Assertions.assertEquals(98.54736778391424, cons, 1e-12); + } catch (Exception ex) { + ex.toString(); + } + // testSystem.display(); + + assertEquals(0.019690143220139962, + testSystem.getPhase(0).getComponent("MEG").getNumberOfmoles(), 1e-12); + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlashTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlashTest.java new file mode 100644 index 0000000000..78f9820386 --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointPressureFlashTest.java @@ -0,0 +1,29 @@ +package neqsim.thermodynamicOperations.flashOps.saturationOps; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class bubblePointPressureFlashTest { + @Test + void testRun() { + SystemSrkEos fluid0_HC = new SystemSrkEos(); + fluid0_HC.addComponent("methane", 0.7); + fluid0_HC.addComponent("ethane", 0.1); + fluid0_HC.addComponent("propane", 0.1); + fluid0_HC.addComponent("n-butane", 0.1); + fluid0_HC.setMixingRule("classic"); + + fluid0_HC.setPressure(10.0, "bara"); + fluid0_HC.setTemperature(-50.0, "C"); + + ThermodynamicOperations ops = new ThermodynamicOperations(fluid0_HC); + try { + ops.bubblePointPressureFlash(false); + } catch (Exception e) { + e.printStackTrace(); + } + assertEquals(65.150271897839, fluid0_HC.getPressure(), 1e-2); + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureFlashTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureFlashTest.java new file mode 100644 index 0000000000..1e94ace143 --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/bubblePointTemperatureFlashTest.java @@ -0,0 +1,29 @@ +package neqsim.thermodynamicOperations.flashOps.saturationOps; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class bubblePointTemperatureFlashTest { + @Test + void testRun() { + SystemSrkEos fluid0_HC = new SystemSrkEos(); + fluid0_HC.addComponent("methane", 0.7); + fluid0_HC.addComponent("ethane", 0.1); + fluid0_HC.addComponent("propane", 0.1); + fluid0_HC.addComponent("n-butane", 0.1); + fluid0_HC.setMixingRule("classic"); + + fluid0_HC.setPressure(10.0, "bara"); + fluid0_HC.setTemperature(-150.0, "C"); + + ThermodynamicOperations ops = new ThermodynamicOperations(fluid0_HC); + try { + ops.bubblePointTemperatureFlash(); + } catch (Exception e) { + e.printStackTrace(); + } + assertEquals(-117.7205968083, fluid0_HC.getTemperature("C"), 1e-2); + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointPressureFlashTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointPressureFlashTest.java new file mode 100644 index 0000000000..8764e39d70 --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointPressureFlashTest.java @@ -0,0 +1,29 @@ +package neqsim.thermodynamicOperations.flashOps.saturationOps; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class dewPointPressureFlashTest { + @Test + void testRun() { + SystemSrkEos fluid0_HC = new SystemSrkEos(); + fluid0_HC.addComponent("methane", 0.7); + fluid0_HC.addComponent("ethane", 0.1); + fluid0_HC.addComponent("propane", 0.1); + fluid0_HC.addComponent("n-butane", 0.1); + fluid0_HC.setMixingRule("classic"); + + fluid0_HC.setPressure(10.0, "bara"); + fluid0_HC.setTemperature(0.0, "C"); + + ThermodynamicOperations ops = new ThermodynamicOperations(fluid0_HC); + try { + ops.dewPointPressureFlash(); + } catch (Exception e) { + e.printStackTrace(); + } + assertEquals(9.332383561, fluid0_HC.getPressure(), 1e-2); + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlashTest.java b/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlashTest.java new file mode 100644 index 0000000000..35d1b1f86f --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/flashOps/saturationOps/dewPointTemperatureFlashTest.java @@ -0,0 +1,30 @@ +package neqsim.thermodynamicOperations.flashOps.saturationOps; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemSrkEos; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class dewPointTemperatureFlashTest { + @Test + void testRun() { + SystemSrkEos fluid0_HC = new SystemSrkEos(); + fluid0_HC.addComponent("methane", 0.7); + fluid0_HC.addComponent("ethane", 0.1); + fluid0_HC.addComponent("propane", 0.1); + fluid0_HC.addComponent("n-butane", 0.1); + fluid0_HC.setMixingRule("classic"); + + fluid0_HC.setPressure(10.0, "bara"); + fluid0_HC.setTemperature(0.0, "C"); + + ThermodynamicOperations ops = new ThermodynamicOperations(fluid0_HC); + try { + ops.dewPointTemperatureFlash(); + } catch (Exception e) { + e.printStackTrace(); + } + assertEquals(1.7007677589821242, fluid0_HC.getTemperature("C"), 1e-2); + + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/PTPhaseEnvelopeTest.java b/src/test/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/PTPhaseEnvelopeTest.java new file mode 100644 index 0000000000..887f064f59 --- /dev/null +++ b/src/test/java/neqsim/thermodynamicOperations/phaseEnvelopeOps/multicomponentEnvelopeOps/PTPhaseEnvelopeTest.java @@ -0,0 +1,178 @@ +package neqsim.thermodynamicOperations.phaseEnvelopeOps.multicomponentEnvelopeOps; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class PTPhaseEnvelopeTest { + static neqsim.thermo.system.SystemInterface testSystem = null; + static ThermodynamicOperations testOps = null; + + @BeforeEach + void setUp() { + testSystem = new neqsim.thermo.system.SystemSrkEos(298.0, 50.0); + } + + /** + * Test method for + * {@link neqsim.thermodynamicOperations.phaseEnvelopeOps.multicomponentEnvelopeOps.pTphaseEnvelope}. + */ + @Test + void testDewP() { + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.addComponent("methane", 0.98); + testSystem.setMixingRule("classic"); + + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + testOps.calcPTphaseEnvelope(); + double[] dewPointPressures = testOps.get("dewP"); + double[] expectedDewPointPressures = + new double[] {1.1051709180756477, 1.2214027581601699, 1.3498588075760032, + 1.4918246976412703, 1.6652911949458864, 1.8794891289619104, 2.1418131227502055, + 2.4690864123141987, 2.881197018974799, 3.404779997613969, 4.075230307874481, + 4.938583914869986, 6.051801019586486, 7.477304695462727, 9.260793952051571, + 11.364101185282063, 13.480106047577934, 14.53423776629387, 13.607498029406681, + 11.181207439509638, 9.189487040488075, 9.612827246459474, 10.706126846063928, + 12.501491987760147, 15.075672692089958, 18.51283799420178, 23.330378296334104, + 29.71319711031059, 37.25532259549197, 43.660805656603934, 45.75836660678656, + 46.42490219574348, 46.83203503669948, 46.869568345957006, 46.903557772489435}; + // System.out.println(Arrays.toString(dewPointPressures)); + assertArrayEquals(expectedDewPointPressures, dewPointPressures, 10E-10); + } + + @Test + void testFailingCaseWithWater() { + testSystem.addComponent("nitrogen", 0.04); + testSystem.addComponent("CO2", 0.06); + testSystem.addComponent("methane", 0.80); + testSystem.addComponent("water", 0.00000000001); + + testSystem.setMixingRule("classic"); + + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + + Exception exception = + assertThrows(ArrayIndexOutOfBoundsException.class, () -> testOps.calcPTphaseEnvelope()); + } + + @Test + void testSimpleCase() { + testSystem.addComponent("nitrogen", 0.88); + testSystem.addComponent("CO2", 5.7); + testSystem.addComponent("methane", 86.89); + testSystem.addComponent("ethane", 3.59); + testSystem.addComponent("propane", 1.25); + testSystem.addComponent("i-butane", 0.19); + testSystem.addComponent("n-butane", 0.35); + testSystem.addComponent("i-pentane", 0.12); + testSystem.addComponent("n-pentane", 0.12); + testSystem.setMixingRule("classic"); + testSystem.setMixingRule("classic"); + + testOps = new ThermodynamicOperations(testSystem); + testOps.calcPTphaseEnvelope2(); + double[] dewPointPressures = testOps.get("dewP"); + double[] dewPointTemperautres = testOps.get("dewT"); + double[] bubblePointPressures = testOps.get("bubP"); + double[] bubblePointTemperautres = testOps.get("bubT"); + double[] cricondenbar = testOps.get("cricondenbar"); + double[] criticalPoint1 = testOps.get("criticalPoint1"); + + + assertTrue(dewPointTemperautres.length > 20); + assertTrue(bubblePointTemperautres.length > 10); + + } + + + @Test + void testFailingCase1() { + // testSystem.setTemperature(40, "C"); + // testSystem.setPressure(50, "bara"); + testSystem.addComponent("nitrogen", 0.88); + testSystem.addComponent("CO2", 5.7); + testSystem.addComponent("methane", 86.89); + testSystem.addComponent("ethane", 3.59); + testSystem.addComponent("propane", 1.25); + testSystem.addComponent("i-butane", 0.19); + testSystem.addComponent("n-butane", 0.35); + testSystem.addComponent("i-pentane", 0.12); + testSystem.addComponent("n-pentane", 0.12); + testSystem.addTBPfraction("C6", 0.15, 86 / 1000.0, 0.672); + testSystem.addTBPfraction("C7", 0.2, 96 / 1000.0, 0.737); + testSystem.addTBPfraction("C8", 0.22, 106 / 1000.0, 0.767); + testSystem.addTBPfraction("C9", 0.13, 121 / 1000.0, 0.783); + testSystem.addPlusFraction("C10+", 0.21, 172 / 1000.0, 0.818); + testSystem.setMixingRule("classic"); + testSystem.setMultiPhaseCheck(true); + testSystem.useVolumeCorrection(true); + testSystem.initPhysicalProperties(); + testSystem.setMixingRule("classic"); + + testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + testSystem.initProperties(); + + testOps.calcPTphaseEnvelope2(); + double[] dewPointPressures = testOps.get("dewP"); + double[] dewPointTemperautres = testOps.get("dewT"); + double[] bubblePointPressures = testOps.get("bubP"); + double[] bubblePointTemperautres = testOps.get("bubT"); + double[] cricondenbar = testOps.get("cricondenbar"); + double[] criticalPoint1 = testOps.get("criticalPoint1"); + + + assertTrue(dewPointTemperautres.length > 20); + assertTrue(bubblePointTemperautres.length > 10); + + } + + @Test + void testFailingCase2() { + // testSystem.setTemperature(40, "C"); + // testSystem.setPressure(50, "bara"); + neqsim.thermo.system.SystemInterface fluid0_HC = + new neqsim.thermo.system.SystemUMRPRUMCEos(298.0, 50.0); + fluid0_HC.addComponent("nitrogen", 2.5); + fluid0_HC.addComponent("CO2", 4.5); + fluid0_HC.addComponent("methane", 79.45); + fluid0_HC.addComponent("ethane", 10); + fluid0_HC.addComponent("propane", 2.5); + fluid0_HC.addComponent("i-butane", 0.3); + fluid0_HC.addComponent("n-butane", 0.5); + fluid0_HC.addComponent("22-dim-C3", 0.01); + fluid0_HC.addComponent("i-pentane", 0.05); + fluid0_HC.addComponent("n-pentane", 0.05); + fluid0_HC.addComponent("n-hexane", 0.05); + fluid0_HC.addComponent("benzene", 0.02); + fluid0_HC.addComponent("c-hexane", 0.02); + fluid0_HC.addComponent("n-heptane", 0.02); + fluid0_HC.addComponent("toluene", 0.01); + fluid0_HC.addComponent("n-octane", 0.01); + fluid0_HC.setMixingRule("HV", "UNIFAC_UMRPRU"); + testOps = new ThermodynamicOperations(fluid0_HC); + testOps.calcPTphaseEnvelope2(); + double[] dewPointPressures = testOps.get("dewP"); + double[] dewPointTemperautres = testOps.get("dewT"); + double[] bubblePointPressures = testOps.get("bubP"); + double[] bubblePointTemperautres = testOps.get("bubT"); + double[] bubblePointEnthalpies = testOps.get("bubH"); + double[] bubblePointVolumes = testOps.get("bubDens"); + double[] cricondenbar = testOps.get("cricondenbar"); + double[] criticalPoint1 = testOps.get("criticalPoint1"); + + assertTrue(dewPointTemperautres.length > 20); + assertTrue(bubblePointTemperautres.length > 20); + assertTrue(bubblePointEnthalpies.length > 20); + assertTrue(bubblePointVolumes.length > 20); + + } +} diff --git a/src/test/java/neqsim/thermodynamicOperations/util/example/CompGradientFlash.java b/src/test/java/neqsim/thermodynamicOperations/util/example/CompGradientFlash.java index 3dccae1cd8..28ed7a29c1 100644 --- a/src/test/java/neqsim/thermodynamicOperations/util/example/CompGradientFlash.java +++ b/src/test/java/neqsim/thermodynamicOperations/util/example/CompGradientFlash.java @@ -16,45 +16,47 @@ * @since 2.2.3 */ public class CompGradientFlash { - static Logger logger = LogManager.getLogger(CompGradientFlash.class); - - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 0, 80.0);// 30.01325); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 11.0); - // testSystem.addComponent("ethane", 4.0); - testSystem.addComponent("n-heptane", 0.03); - // testSystem.addComponent("n-octane", 0.0001); - - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - - testSystem.init(0); - testSystem.init(3); - logger.info("enthalpy " + testSystem.getPhase(1).getEnthalpy()); - - SystemInterface newSystem = null; - try { - testOps.dewPointTemperatureFlash(); - testSystem.display(); - double dewTemp = testSystem.getTemperature(); - testSystem.setTemperature(dewTemp + 10.1); - testSystem.init(0); - newSystem = testOps.TPgradientFlash(0.0001, dewTemp).phaseToSystem(0); - newSystem.init(0); - ThermodynamicOperations testOps2 = new ThermodynamicOperations(newSystem); - testOps2.dewPointTemperatureFlash(); - newSystem.display(); - - // testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + static Logger logger = LogManager.getLogger(CompGradientFlash.class); + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 0, 80.0); // 30.01325); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 11.0); + // testSystem.addComponent("ethane", 4.0); + testSystem.addComponent("n-heptane", 0.03); + // testSystem.addComponent("n-octane", 0.0001); + + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + + testSystem.init(0); + testSystem.init(3); + logger.info("enthalpy " + testSystem.getPhase(1).getEnthalpy()); + + SystemInterface newSystem = null; + try { + testOps.dewPointTemperatureFlash(); + testSystem.display(); + double dewTemp = testSystem.getTemperature(); + testSystem.setTemperature(dewTemp + 10.1); + testSystem.init(0); + newSystem = testOps.TPgradientFlash(0.0001, dewTemp).phaseToSystem(0); + newSystem.init(0); + ThermodynamicOperations testOps2 = new ThermodynamicOperations(newSystem); + testOps2.dewPointTemperatureFlash(); + newSystem.display(); + + // testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/util/example/CriticalPointFlash.java b/src/test/java/neqsim/thermodynamicOperations/util/example/CriticalPointFlash.java index 78fcae27c4..bb56cf9d43 100644 --- a/src/test/java/neqsim/thermodynamicOperations/util/example/CriticalPointFlash.java +++ b/src/test/java/neqsim/thermodynamicOperations/util/example/CriticalPointFlash.java @@ -7,39 +7,43 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

CriticalPointFlash class.

+ *

+ * CriticalPointFlash class. + *

* * @author esol * @version $Id: $Id * @since 2.2.3 */ public class CriticalPointFlash { - static Logger logger = LogManager.getLogger(CriticalPointFlash.class); + static Logger logger = LogManager.getLogger(CriticalPointFlash.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String[] args) { - SystemInterface testSystem = new SystemSrkEos(300, 80.01325); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String[] args) { + SystemInterface testSystem = new SystemSrkEos(300, 80.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - // testSystem.addComponent("water", 0.9); - testSystem.addComponent("methane", 0.1); - testSystem.addComponent("propane", 0.1); - // testSystem.addComponent("i-butane", 0.1); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.init(0); - try { - testOps.calcCricondenBar(); - // testOps.criticalPointFlash(); - // testOps.calcPTphaseEnvelope(true); - // testOps.displayResult(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.display(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + // testSystem.addComponent("water", 0.9); + testSystem.addComponent("methane", 0.1); + testSystem.addComponent("propane", 0.1); + // testSystem.addComponent("i-butane", 0.1); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.init(0); + try { + testOps.calcCricondenBar(); + // testOps.criticalPointFlash(); + // testOps.calcPTphaseEnvelope(true); + // testOps.displayResult(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/util/example/MEGwaterComplexFlash.java b/src/test/java/neqsim/thermodynamicOperations/util/example/MEGwaterComplexFlash.java index 0544774d5e..cdaea5701b 100644 --- a/src/test/java/neqsim/thermodynamicOperations/util/example/MEGwaterComplexFlash.java +++ b/src/test/java/neqsim/thermodynamicOperations/util/example/MEGwaterComplexFlash.java @@ -16,44 +16,44 @@ * @since 2.2.3 */ public class MEGwaterComplexFlash { - static Logger logger = LogManager.getLogger(MEGwaterComplexFlash.class); + static Logger logger = LogManager.getLogger(MEGwaterComplexFlash.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 50, 1.0); - testSystem.addComponent("methane", 0.01); - // testSystem.addComponent("ethane", 0.10); - // testSystem.addComponent("n-heptane", 0.5); - // testSystem.addComponent("MEG", 0.139664804); - testSystem.addComponent("TEG", 0.01); - testSystem.addComponent("water", 1.0 - 0.01); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkCPAstatoil(273.15 + 50, 1.0); + testSystem.addComponent("methane", 0.01); + // testSystem.addComponent("ethane", 0.10); + // testSystem.addComponent("n-heptane", 0.5); + // testSystem.addComponent("MEG", 0.139664804); + testSystem.addComponent("TEG", 0.01); + testSystem.addComponent("water", 1.0 - 0.01); - testSystem.createDatabase(true); - testSystem.setMixingRule(10); - testSystem.init(0); - // logger.info("fug " - // +Math.log(testSystem.getPhase(1).getComponent("TEG").getFugacityCoefficient())); - testSystem.setSolidPhaseCheck("water"); - // testSystem.setMultiPhaseCheck(true); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.createDatabase(true); + testSystem.setMixingRule(10); + testSystem.init(0); + // logger.info("fug " + // +Math.log(testSystem.getPhase(1).getComponent("TEG").getFugacityCoefficient())); + testSystem.setSolidPhaseCheck("water"); + // testSystem.setMultiPhaseCheck(true); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - // testOps.TPflash(); - // testSystem.display(); - // testOps.freezingPointTemperatureFlash(); - testOps.calcSolidComlexTemperature("TEG", "water"); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString(), e); - } - logger.info("temperature " + (testSystem.getTemperature() - 273.15)); - logger.info("activity water " + testSystem.getPhase(1).getActivityCoefficient(2)); - logger.info("activity TEG " + testSystem.getPhase(1).getActivityCoefficient(1)); + try { + // testOps.TPflash(); + // testSystem.display(); + // testOps.freezingPointTemperatureFlash(); + testOps.calcSolidComlexTemperature("TEG", "water"); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + logger.info("temperature " + (testSystem.getTemperature() - 273.15)); + logger.info("activity water " + testSystem.getPhase(1).getActivityCoefficient(2)); + logger.info("activity TEG " + testSystem.getPhase(1).getActivityCoefficient(1)); + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/util/example/OLGApropGenerator.java b/src/test/java/neqsim/thermodynamicOperations/util/example/OLGApropGenerator.java index 4f77e4de54..833e85d025 100644 --- a/src/test/java/neqsim/thermodynamicOperations/util/example/OLGApropGenerator.java +++ b/src/test/java/neqsim/thermodynamicOperations/util/example/OLGApropGenerator.java @@ -16,57 +16,57 @@ * @since 2.2.3 */ public class OLGApropGenerator { - static Logger logger = LogManager.getLogger(OLGApropGenerator.class); + static Logger logger = LogManager.getLogger(OLGApropGenerator.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15, 10.0); - testSystem.addComponent("nitrogen", 0.01848); - testSystem.addComponent("CO2", 0.837478); - testSystem.addComponent("methane", 2.135464); - testSystem.addComponent("ethane", 0.6941); - testSystem.addComponent("propane", 0.46402); - testSystem.addComponent("i-butane", 0.302664); - testSystem.addComponent("n-butane", 0.2696); - testSystem.addComponent("i-pentane", 0.18108); - testSystem.addComponent("n-pentane", 0.422286); - testSystem.addTBPfraction("C6_PC", 0.01753, 86.178 / 1000.0, 0.66399); - testSystem.addTBPfraction("C7_PC", 0.0231839, 96.0 / 1000.0, 0.738); - testSystem.addTBPfraction("C8_PC", 0.006674, 107.0 / 1000.0, 0.8097); - testSystem.addTBPfraction("C9_PC", 0.000660625, 120.99 / 1000.0, 0.8863); - testSystem.addTBPfraction("C10_PC", 8.07355e-5, 144.178 / 1000.0, 0.8526); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15, 10.0); + testSystem.addComponent("nitrogen", 0.01848); + testSystem.addComponent("CO2", 0.837478); + testSystem.addComponent("methane", 2.135464); + testSystem.addComponent("ethane", 0.6941); + testSystem.addComponent("propane", 0.46402); + testSystem.addComponent("i-butane", 0.302664); + testSystem.addComponent("n-butane", 0.2696); + testSystem.addComponent("i-pentane", 0.18108); + testSystem.addComponent("n-pentane", 0.422286); + testSystem.addTBPfraction("C6_PC", 0.01753, 86.178 / 1000.0, 0.66399); + testSystem.addTBPfraction("C7_PC", 0.0231839, 96.0 / 1000.0, 0.738); + testSystem.addTBPfraction("C8_PC", 0.006674, 107.0 / 1000.0, 0.8097); + testSystem.addTBPfraction("C9_PC", 0.000660625, 120.99 / 1000.0, 0.8863); + testSystem.addTBPfraction("C10_PC", 8.07355e-5, 144.178 / 1000.0, 0.8526); - // testSystem.addComponent("water", 28.97100); - // testSystem.addComponent("TEG",65.65524299); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + // testSystem.addComponent("water", 28.97100); + // testSystem.addComponent("TEG",65.65524299); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); + testSystem.setMultiPhaseCheck(true); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - // testSystem.setTemperature(380.0); - // testSystem.setPressure(80.0); - // testOps.TPflash(); - // testSystem.display(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + // testSystem.setTemperature(380.0); + // testSystem.setPressure(80.0); + // testOps.TPflash(); + // testSystem.display(); - testSystem.setTemperature(273.15 + 20.85); - testSystem.setPressure(13); - testOps.TPflash(); - testSystem.display(); + testSystem.setTemperature(273.15 + 20.85); + testSystem.setPressure(13); + testOps.TPflash(); + testSystem.display(); - String fileName = "c:/temp//OLGAneqsim.tab"; - testOps.OLGApropTable(273.15, 273.15 + 50.0, 40, 1.0, 220.0, 40, fileName, 0); - testOps.displayResult(); - } catch (Exception e) { - testSystem.display(); - logger.error(e.toString()); - } + String fileName = "c:/temp//OLGAneqsim.tab"; + testOps.OLGApropTable(273.15, 273.15 + 50.0, 40, 1.0, 220.0, 40, fileName, 0); + testOps.displayResult(); + } catch (Exception ex) { + testSystem.display(); + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/util/example/OLGApropGeneratorPH.java b/src/test/java/neqsim/thermodynamicOperations/util/example/OLGApropGeneratorPH.java index ff4f18d7c1..33b31c5e56 100644 --- a/src/test/java/neqsim/thermodynamicOperations/util/example/OLGApropGeneratorPH.java +++ b/src/test/java/neqsim/thermodynamicOperations/util/example/OLGApropGeneratorPH.java @@ -16,44 +16,44 @@ * @since 2.2.3 */ public class OLGApropGeneratorPH { - static Logger logger = LogManager.getLogger(OLGApropGeneratorPH.class); + static Logger logger = LogManager.getLogger(OLGApropGeneratorPH.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(383.15, 1.0); - // testSystem.addComponent("ethane", 10.0); - testSystem.addComponent("water", 10.0); - // testSystem.addComponent("n-heptane", 1.0); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(383.15, 1.0); + // testSystem.addComponent("ethane", 10.0); + testSystem.addComponent("water", 10.0); + // testSystem.addComponent("n-heptane", 1.0); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); + testSystem.setMultiPhaseCheck(true); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.dewPointTemperatureFlash(); - // testOps.TPflash(); - testSystem.display(); - double maxEnthalpy = testSystem.getEnthalpy(); - logger.info(" maxEnthalpy " + maxEnthalpy); - testOps.bubblePointTemperatureFlash(); - testSystem.display(); - double minEnthalpy = testSystem.getEnthalpy(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.dewPointTemperatureFlash(); + // testOps.TPflash(); + testSystem.display(); + double maxEnthalpy = testSystem.getEnthalpy(); + logger.info(" maxEnthalpy " + maxEnthalpy); + testOps.bubblePointTemperatureFlash(); + testSystem.display(); + double minEnthalpy = testSystem.getEnthalpy(); - // testOps.PHflash(maxEnthalpy + 49560, 0); - String fileName = "c:/Appl/OLGAneqsim.tab"; - testOps.OLGApropTablePH(minEnthalpy, maxEnthalpy, 41, testSystem.getPressure(), 2, 41, - fileName, 0); - testOps.displayResult(); - } catch (Exception e) { - testSystem.display(); - logger.error(e.toString()); - } + // testOps.PHflash(maxEnthalpy + 49560, 0); + String fileName = "c:/Appl/OLGAneqsim.tab"; + testOps.OLGApropTablePH(minEnthalpy, maxEnthalpy, 41, testSystem.getPressure(), 2, 41, + fileName, 0); + testOps.displayResult(); + } catch (Exception ex) { + testSystem.display(); + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/util/example/PhaseEnvelope.java b/src/test/java/neqsim/thermodynamicOperations/util/example/PhaseEnvelope.java index 57a95ae48e..5cc91bae76 100644 --- a/src/test/java/neqsim/thermodynamicOperations/util/example/PhaseEnvelope.java +++ b/src/test/java/neqsim/thermodynamicOperations/util/example/PhaseEnvelope.java @@ -8,200 +8,196 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /* - *

- * PhaseEnvelope class. - * Created on 27. september 2001, 10:21 Updated on May 2019 by Nefeli - *

- * + *

PhaseEnvelope class. Created on 27. september 2001, 10:21 Updated on May 2019 by Nefeli

+ * * @author esol + * * @version $Id: $Id + * * @since 2.2.3 */ public class PhaseEnvelope { - static Logger logger = LogManager.getLogger(PhaseEnvelope.class); - - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - @SuppressWarnings("unused") - public static void main(String args[]) { - // String[] components=neqsim.util.database.NeqSimDataBase.getComponentNames(); - - SystemInterface testSystem = new SystemSrkEos(180, 4.00); - - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - - int sstms = 1; - - System.out.println(sstms); - - if (sstms == 1) { - // TEST SYSTEM 1 - testSystem.addComponent("methane", 90.465); - testSystem.addComponent("ethane", 5.58); - testSystem.addComponent("propane", 0.1736); - testSystem.addComponent("i-butane", 0.008); - testSystem.addComponent("n-pentane", 1.033); - testSystem.addComponent("n-heptane", 1.033); - } else if (sstms == 2) { - // TEST SYSTEM 2 - testSystem.addComponent("methane", 60.465); - testSystem.addComponent("ethane", 5.58); - testSystem.addComponent("propane", 0.1736); - testSystem.addComponent("i-butane", 0.008); - testSystem.addComponent("n-pentane", 10.033); - testSystem.addComponent("n-heptane", 10.033); - } else if (sstms == 3) { - // TEST SYSTEM 3 - testSystem.addComponent("methane", 80); - testSystem.addComponent("ethane", 12); - testSystem.addComponent("propane", 6); - testSystem.addComponent("i-butane", 3); - testSystem.addComponent("n-pentane", 2); - testSystem.addComponent("n-heptane", 1); - } else if (sstms == 4) { - // TEST SYSTEM 4 - testSystem.addComponent("methane", 60); - testSystem.addComponent("ethane", 12); - testSystem.addComponent("propane", 6); - testSystem.addComponent("i-butane", 3); - testSystem.addComponent("n-pentane", 2); - testSystem.addComponent("n-heptane", 1); - } else if (sstms == 5) { - // TEST SYSTEM 5 - testSystem.addComponent("methane", 60); - testSystem.addComponent("ethane", 12); - testSystem.addComponent("propane", 6); - testSystem.addComponent("i-butane", 3); - testSystem.addComponent("n-pentane", 20); - testSystem.addComponent("n-heptane", 10); - } else if (sstms == 6) { - // TEST SYSTEM 6 - testSystem.addComponent("methane", 10); - testSystem.addComponent("ethane", 12); - testSystem.addComponent("propane", 6); - testSystem.addComponent("i-butane", 3); - testSystem.addComponent("n-pentane", 20); - testSystem.addComponent("n-heptane", 10); - } else if (sstms == 7) { - // TEST SYSTEM 7 - testSystem.addComponent("methane", 200); - testSystem.addComponent("ethane", 20); - testSystem.addComponent("propane", 6); - testSystem.addComponent("i-butane", 3); - testSystem.addComponent("n-pentane", 20); - } else if (sstms == 8) { - // TEST SYSTEM 8 - testSystem.addComponent("methane", 80); - testSystem.addComponent("ethane", 15); - testSystem.addComponent("n-octane", 5); - } else if (sstms == 9) { - // TEST SYSTEM 9 - testSystem.addComponent("methane", 80); - testSystem.addComponent("ethane", 15); - testSystem.addComponent("n-octane", 5); - testSystem.addComponent("nC10", 5); - testSystem.addComponent("nC16", 5); - } else if (sstms == 10) { - // TEST SYSTEM 10 : typical rich gas Even - testSystem.addComponent("CO2", 2.1); - testSystem.addComponent("nitrogen", 1); - testSystem.addComponent("methane", 80); - testSystem.addComponent("ethane", 5); - testSystem.addComponent("propane", 1); - testSystem.addComponent("n-butane", 1); - testSystem.addComponent("i-butane", 1); - testSystem.addComponent("n-hexane", 0.1); - testSystem.addComponent("n-heptane", 0.1); - testSystem.addComponent("n-octane", 0.05); - testSystem.addComponent("nC10", 0.01); - testSystem.addComponent("nC12", 0.001); - // testSystem.addComponent("water", 0.000001); - } else if (sstms == 11) { - // TEST SYSTEM 11 : open ended phase envelope Even - testSystem.addComponent("methane", 87); - testSystem.addComponent("ethane", 4.35); - testSystem.addComponent("propane", 1); - testSystem.addComponent("n-butane", 1); - testSystem.addComponent("i-butane", 1); - testSystem.addTBPfraction("C7", 5.5, 0.25, 0.900); - } else if (sstms == 12) { - // TEST SYSTEM 12 - testSystem.addComponent("methane", 100); - testSystem.addComponent("ethane", 15); - testSystem.addComponent("n-octane", 5); - testSystem.addComponent("nC10", 5); - testSystem.addComponent("nC16", 5); - } else if (sstms == 13) { - // TEST SYSTEM 13 - testSystem.addComponent("methane", 80); - testSystem.addComponent("ethane", 10); - testSystem.addComponent("n-octane", 5); - testSystem.addComponent("nC10", 1); - testSystem.addComponent("nC16", 1); - } else if (sstms == 15) { - testSystem.addComponent("CO2", 2.7); - testSystem.addComponent("methane", 80); - testSystem.addComponent("ethane", 8.35); - testSystem.addComponent("propane", 4.5); - testSystem.addComponent("n-butane", 2.0); - testSystem.addComponent("i-butane", 1.0); - testSystem.addComponent("n-hexane", 0.5); - testSystem.addPlusFraction("C7", 10.1, 0.19, 0.850); - // testSystem.getCharacterization().characterisePlusFraction(); - } else if (sstms == 16) { - testSystem.addComponent("methane", 76.0); - testSystem.addComponent("n-hexane", 4.5); - testSystem.addComponent("n-nonane", 4.5); - } - - testSystem.setMixingRule(2); - - try { - // from bubble point side - // testOps.calcPTphaseEnvelope(true, 1.); + static Logger logger = LogManager.getLogger(PhaseEnvelope.class); + + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + @SuppressWarnings("unused") + public static void main(String args[]) { + // String[] components=neqsim.util.database.NeqSimDataBase.getComponentNames(); + + SystemInterface testSystem = new SystemSrkEos(180, 4.00); + + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + + int sstms = 1; + if (sstms == 1) { + // TEST SYSTEM 1 + testSystem.addComponent("methane", 90.465); + testSystem.addComponent("ethane", 5.58); + testSystem.addComponent("propane", 0.1736); + testSystem.addComponent("i-butane", 0.008); + testSystem.addComponent("n-pentane", 1.033); + testSystem.addComponent("n-heptane", 1.033); + } else if (sstms == 2) { + // TEST SYSTEM 2 + testSystem.addComponent("methane", 60.465); + testSystem.addComponent("ethane", 5.58); + testSystem.addComponent("propane", 0.1736); + testSystem.addComponent("i-butane", 0.008); + testSystem.addComponent("n-pentane", 10.033); + testSystem.addComponent("n-heptane", 10.033); + } else if (sstms == 3) { + // TEST SYSTEM 3 + testSystem.addComponent("methane", 80); + testSystem.addComponent("ethane", 12); + testSystem.addComponent("propane", 6); + testSystem.addComponent("i-butane", 3); + testSystem.addComponent("n-pentane", 2); + testSystem.addComponent("n-heptane", 1); + } else if (sstms == 4) { + // TEST SYSTEM 4 + testSystem.addComponent("methane", 60); + testSystem.addComponent("ethane", 12); + testSystem.addComponent("propane", 6); + testSystem.addComponent("i-butane", 3); + testSystem.addComponent("n-pentane", 2); + testSystem.addComponent("n-heptane", 1); + } else if (sstms == 5) { + // TEST SYSTEM 5 + testSystem.addComponent("methane", 60); + testSystem.addComponent("ethane", 12); + testSystem.addComponent("propane", 6); + testSystem.addComponent("i-butane", 3); + testSystem.addComponent("n-pentane", 20); + testSystem.addComponent("n-heptane", 10); + } else if (sstms == 6) { + // TEST SYSTEM 6 + testSystem.addComponent("methane", 10); + testSystem.addComponent("ethane", 12); + testSystem.addComponent("propane", 6); + testSystem.addComponent("i-butane", 3); + testSystem.addComponent("n-pentane", 20); + testSystem.addComponent("n-heptane", 10); + } else if (sstms == 7) { + // TEST SYSTEM 7 + testSystem.addComponent("methane", 200); + testSystem.addComponent("ethane", 20); + testSystem.addComponent("propane", 6); + testSystem.addComponent("i-butane", 3); + testSystem.addComponent("n-pentane", 20); + } else if (sstms == 8) { + // TEST SYSTEM 8 + testSystem.addComponent("methane", 80); + testSystem.addComponent("ethane", 15); + testSystem.addComponent("n-octane", 5); + } else if (sstms == 9) { + // TEST SYSTEM 9 + testSystem.addComponent("methane", 80); + testSystem.addComponent("ethane", 15); + testSystem.addComponent("n-octane", 5); + testSystem.addComponent("nC10", 5); + testSystem.addComponent("nC16", 5); + } else if (sstms == 10) { + // TEST SYSTEM 10 : typical rich gas Even + testSystem.addComponent("CO2", 2.1); + testSystem.addComponent("nitrogen", 1); + testSystem.addComponent("methane", 80); + testSystem.addComponent("ethane", 5); + testSystem.addComponent("propane", 1); + testSystem.addComponent("n-butane", 1); + testSystem.addComponent("i-butane", 1); + testSystem.addComponent("n-hexane", 0.1); + testSystem.addComponent("n-heptane", 0.1); + testSystem.addComponent("n-octane", 0.05); + testSystem.addComponent("nC10", 0.01); + testSystem.addComponent("nC12", 0.001); + // testSystem.addComponent("water", 0.000001); + } else if (sstms == 11) { + // TEST SYSTEM 11 : open ended phase envelope Even + testSystem.addComponent("methane", 87); + testSystem.addComponent("ethane", 4.35); + testSystem.addComponent("propane", 1); + testSystem.addComponent("n-butane", 1); + testSystem.addComponent("i-butane", 1); + testSystem.addTBPfraction("C7", 5.5, 0.25, 0.900); + } else if (sstms == 12) { + // TEST SYSTEM 12 + testSystem.addComponent("methane", 100); + testSystem.addComponent("ethane", 15); + testSystem.addComponent("n-octane", 5); + testSystem.addComponent("nC10", 5); + testSystem.addComponent("nC16", 5); + } else if (sstms == 13) { + // TEST SYSTEM 13 + testSystem.addComponent("methane", 80); + testSystem.addComponent("ethane", 10); + testSystem.addComponent("n-octane", 5); + testSystem.addComponent("nC10", 1); + testSystem.addComponent("nC16", 1); + } else if (sstms == 15) { + testSystem.addComponent("CO2", 2.7); + testSystem.addComponent("methane", 80); + testSystem.addComponent("ethane", 8.35); + testSystem.addComponent("propane", 4.5); + testSystem.addComponent("n-butane", 2.0); + testSystem.addComponent("i-butane", 1.0); + testSystem.addComponent("n-hexane", 0.5); + testSystem.addPlusFraction("C7", 10.1, 0.19, 0.850); + // testSystem.getCharacterization().characterisePlusFraction(); + } else if (sstms == 16) { + testSystem.addComponent("methane", 76.0); + testSystem.addComponent("n-hexane", 4.5); + testSystem.addComponent("n-nonane", 4.5); + } - // from dew point side - testOps.setRunAsThread(true); - testOps.calcPTphaseEnvelope(false, 1.); - // testOps.displayResult(); - testOps.waitAndCheckForFinishedCalculation(15000); - testOps.getJfreeChart(); - org.jfree.chart.JFreeChart chart = testOps.getJfreeChart(); + testSystem.setMixingRule(2); - // testOps.displayResult(); + try { + // from bubble point side + // testOps.calcPTphaseEnvelope(true, 1.); - java.awt.image.BufferedImage buf = chart.createBufferedImage(640, 400, null); - File file = new File("c:/temp/img.jpg"); - javax.imageio.ImageIO.write(buf, "jpeg", file); + // from dew point side + testOps.setRunAsThread(true); + testOps.calcPTphaseEnvelope(false, 1.); + // testOps.displayResult(); + testOps.waitAndCheckForFinishedCalculation(15000); + testOps.getJfreeChart(); + org.jfree.chart.JFreeChart chart = testOps.getJfreeChart(); - chart.createBufferedImage(640, 400, null); - } catch (Exception e) { - logger.error("error", e); - // testOps.displayResult(); - } + // testOps.displayResult(); - try { - double[] cricondenBar = testOps.get("cricondenbar"); - double[] cricondenBarX = testOps.get("cricondenbarX"); - double[] cricondenBarY = testOps.get("cricondenbarY"); + java.awt.image.BufferedImage buf = chart.createBufferedImage(640, 400, null); + File file = new File("c:/temp/img.jpg"); + javax.imageio.ImageIO.write(buf, "jpeg", file); - double[] cricondenTherm = testOps.get("cricondentherm"); - double[] cricondenThermX = testOps.get("cricondenthermX"); - double[] cricondenThermY = testOps.get("cricondenthermY"); + chart.createBufferedImage(640, 400, null); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + // testOps.displayResult(); + } - // testOps.calcCricoP( cricondenBar, cricondenBarX , cricondenBarY) ; - logger.info("Cricondenbar Direct " + testOps.get("cricondenbar")[0] + " " - + testOps.get("cricondenbar")[1]); - // testOps.calcCricoT( cricondenTherm, cricondenThermX , cricondenThermY) ; - logger.info("Cricondentherm Direct " + testOps.get("cricondentherm")[0] + " " - + testOps.get("cricondentherm")[1]); - } catch (Exception e333) { - logger.error("error", e333); - } + try { + double[] cricondenBar = testOps.get("cricondenbar"); + double[] cricondenBarX = testOps.get("cricondenbarX"); + double[] cricondenBarY = testOps.get("cricondenbarY"); + + double[] cricondenTherm = testOps.get("cricondentherm"); + double[] cricondenThermX = testOps.get("cricondenthermX"); + double[] cricondenThermY = testOps.get("cricondenthermY"); + + // testOps.calcCricoP( cricondenBar, cricondenBarX , cricondenBarY) ; + logger.info("Cricondenbar Direct " + testOps.get("cricondenbar")[0] + " " + + testOps.get("cricondenbar")[1]); + // testOps.calcCricoT( cricondenTherm, cricondenThermX , cricondenThermY) ; + logger.info("Cricondentherm Direct " + testOps.get("cricondentherm")[0] + " " + + testOps.get("cricondentherm")[1]); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/util/example/SolidFlash.java b/src/test/java/neqsim/thermodynamicOperations/util/example/SolidFlash.java index 06b3961a4f..7a7a0d6d6a 100644 --- a/src/test/java/neqsim/thermodynamicOperations/util/example/SolidFlash.java +++ b/src/test/java/neqsim/thermodynamicOperations/util/example/SolidFlash.java @@ -16,50 +16,50 @@ * @since 2.2.3 */ public class SolidFlash { - static Logger logger = LogManager.getLogger(SolidFlash.class); + static Logger logger = LogManager.getLogger(SolidFlash.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemUMRPRUMCEos(273.15 - 30, 18.0); - // testSystem.addComponent("nitrogen", 83.33); - // testSystem.addComponent("oxygen", 8.49); - // testSystem.addComponent("argon", 0.87); - // testSystem.addComponent("CO2", 7.3); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemUMRPRUMCEos(273.15 - 30, 18.0); + // testSystem.addComponent("nitrogen", 83.33); + // testSystem.addComponent("oxygen", 8.49); + // testSystem.addComponent("argon", 0.87); + // testSystem.addComponent("CO2", 7.3); - // testSystem.addComponent("nitrogen", 8.33); - // testSystem.addComponent("methane", 0.17); - // testSystem.addComponent("ethane", 0.87); - testSystem.addComponent("CO2", 1.83); + // testSystem.addComponent("nitrogen", 8.33); + // testSystem.addComponent("methane", 0.17); + // testSystem.addComponent("ethane", 0.87); + testSystem.addComponent("CO2", 1.83); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - // testSystem.setMixingRule("HV", null); - testSystem.setSolidPhaseCheck("CO2"); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + // testSystem.setMixingRule("HV", null); + testSystem.setSolidPhaseCheck("CO2"); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - try { - testOps.TPflash(); - testSystem.display(); - testSystem.initProperties(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + try { + testOps.TPflash(); + testSystem.display(); + testSystem.initProperties(); - double enthalpy = testSystem.getEnthalpy(); + double enthalpy = testSystem.getEnthalpy(); - testSystem.setPressure(1.0); + testSystem.setPressure(1.0); - testOps.PHflash(enthalpy); - // testOps.TPflash(); - // testOps.PHsolidFlash(enthalpy); - // // testOps.TPSolidflash(); - // testOps.freezingPointTemperatureFlash(); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + testOps.PHflash(enthalpy); + // testOps.TPflash(); + // testOps.PHsolidFlash(enthalpy); + // // testOps.TPSolidflash(); + // testOps.freezingPointTemperatureFlash(); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/util/example/TVflash.java b/src/test/java/neqsim/thermodynamicOperations/util/example/TVflash.java index 7198c64d4b..f026b64ad7 100644 --- a/src/test/java/neqsim/thermodynamicOperations/util/example/TVflash.java +++ b/src/test/java/neqsim/thermodynamicOperations/util/example/TVflash.java @@ -16,45 +16,45 @@ * @since 2.2.3 */ public class TVflash { - static Logger logger = LogManager.getLogger(TVflash.class); + static Logger logger = LogManager.getLogger(TVflash.class); - /** - *

- * main. - *

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - // SystemInterface testSystem2 = - // util.serialization.SerializationManager.open("c:/test.fluid"); - // testSystem2.display(); - SystemInterface testSystem = new SystemSrkEos(273.15 + 5, 1.0); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + // SystemInterface testSystem2 = + // util.serialization.SerializationManager.open("c:/test.fluid"); + // testSystem2.display(); + SystemInterface testSystem = new SystemSrkEos(273.15 + 5, 1.0); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("nitrogen", 90.0); - // testSystem.addComponent("ethane", 4.0); - testSystem.addComponent("oxygen", 10.2); - testSystem.addComponent("water", 1.5); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("nitrogen", 90.0); + // testSystem.addComponent("ethane", 4.0); + testSystem.addComponent("oxygen", 10.2); + testSystem.addComponent("water", 1.5); - // 1500 m3 vann + // 1500 m3 vann - // testSystem.addComponent("water", 1.0); - testSystem.createDatabase(true); - // 1- orginal no interaction 2- classic w interaction - // 3- Huron-Vidal 4- Wong-Sandler - testSystem.setMixingRule(2); - // testSystem.setMultiPhaseCheck(true); - testSystem.init(0); - try { - testOps.TPflash(); - testSystem.display(); - testSystem.setTemperature(273.15 + 55.1); - testOps.TVflash(testSystem.getVolume()); - testSystem.display(); - // testOps.PVrefluxFlash(0.05, 1); - } catch (Exception e) { - logger.error(e.toString()); - } + // testSystem.addComponent("water", 1.0); + testSystem.createDatabase(true); + // 1- orginal no interaction 2- classic w interaction + // 3- Huron-Vidal 4- Wong-Sandler + testSystem.setMixingRule(2); + // testSystem.setMultiPhaseCheck(true); + testSystem.init(0); + try { + testOps.TPflash(); + testSystem.display(); + testSystem.setTemperature(273.15 + 55.1); + testOps.TVflash(testSystem.getVolume()); + testSystem.display(); + // testOps.PVrefluxFlash(0.05, 1); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/util/example/VLSolidTPFLash.java b/src/test/java/neqsim/thermodynamicOperations/util/example/VLSolidTPFLash.java index 937919d3c5..af8b089743 100644 --- a/src/test/java/neqsim/thermodynamicOperations/util/example/VLSolidTPFLash.java +++ b/src/test/java/neqsim/thermodynamicOperations/util/example/VLSolidTPFLash.java @@ -7,71 +7,75 @@ import neqsim.thermodynamicOperations.ThermodynamicOperations; /** - *

VLSolidTPFLash class.

+ *

+ * VLSolidTPFLash class. + *

* * @author ESOL * @version $Id: $Id * @since 2.2.3 */ public class VLSolidTPFLash { - static Logger logger = LogManager.getLogger(VLSolidTPFLash.class); + static Logger logger = LogManager.getLogger(VLSolidTPFLash.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemPrEos(208.2, 18.34); - testSystem.addComponent("nitrogen", 0.379); - testSystem.addComponent("CO2", 100); - testSystem.addComponent("methane", 85.299); - testSystem.addComponent("ethane", 7.359); - testSystem.addComponent("propane", 3.1); - testSystem.addComponent("i-butane", 0.504); - testSystem.addComponent("n-butane", 0.85); - testSystem.addComponent("i-pentane", 0.323); - testSystem.addComponent("n-pentane", 0.231); - testSystem.addComponent("n-hexane", 0.173); - testSystem.addComponent("n-heptane", 0.078); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemPrEos(208.2, 18.34); + testSystem.addComponent("nitrogen", 0.379); + testSystem.addComponent("CO2", 100); + testSystem.addComponent("methane", 85.299); + testSystem.addComponent("ethane", 7.359); + testSystem.addComponent("propane", 3.1); + testSystem.addComponent("i-butane", 0.504); + testSystem.addComponent("n-butane", 0.85); + testSystem.addComponent("i-pentane", 0.323); + testSystem.addComponent("n-pentane", 0.231); + testSystem.addComponent("n-hexane", 0.173); + testSystem.addComponent("n-heptane", 0.078); - testSystem.createDatabase(true); - // 1- orginal no interaction 2- classic w interaction - // 3- Huron-Vidal 4- Wong-Sandler - testSystem.setMixingRule(2); - // testSystem.setMultiPhaseCheck(true); - testSystem.init(0); - testSystem.setSolidPhaseCheck("CO2"); - // testSystem.display(); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - double entalp = 0; - try { - testOps.TPflash(); - // testOps.dewPointTemperatureFlash(); - testSystem.display(); + testSystem.createDatabase(true); + // 1- orginal no interaction 2- classic w interaction + // 3- Huron-Vidal 4- Wong-Sandler + testSystem.setMixingRule(2); + // testSystem.setMultiPhaseCheck(true); + testSystem.init(0); + testSystem.setSolidPhaseCheck("CO2"); + // testSystem.display(); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + double entalp = 0; + try { + testOps.TPflash(); + // testOps.dewPointTemperatureFlash(); + testSystem.display(); - // testOps.freezingPointTemperatureFlash(); - // testSystem.display(); - testSystem.init(3); - entalp = testSystem.getEnthalpy(); - // testSystem.setNumberOfPhases(3); - // testSystem.setPressure(18.0); - // testOps.TPflash(); - // testSystem.display(); - testOps.PHsolidFlash(entalp - 1000.0); - // testOps.PHflash(entalp, 0); - // testSystem.display(); - // testOps.freezingPointTemperatureFlash(); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } - testSystem.init(3); - // testSystem.display(); - // logger.info("enthalpy CO2 solid " + testSystem.getPhase(2).getEnthalpy() + " - // index " + testSystem.getPhaseIndex(2)); - logger.info("total enthalpy " + (testSystem.getEnthalpy() - entalp)); - logger.info("out temperature " + (testSystem.getTemperature() - 273.15)); - // testSystem.display(); + // testOps.freezingPointTemperatureFlash(); + // testSystem.display(); + testSystem.init(3); + entalp = testSystem.getEnthalpy(); + // testSystem.setNumberOfPhases(3); + // testSystem.setPressure(18.0); + // testOps.TPflash(); + // testSystem.display(); + testOps.PHsolidFlash(entalp - 1000.0); + // testOps.PHflash(entalp, 0); + // testSystem.display(); + // testOps.freezingPointTemperatureFlash(); + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + testSystem.init(3); + // testSystem.display(); + // logger.info("enthalpy CO2 solid " + testSystem.getPhase(2).getEnthalpy() + " + // index " + testSystem.getPhaseIndex(2)); + logger.info("total enthalpy " + (testSystem.getEnthalpy() - entalp)); + logger.info("out temperature " + (testSystem.getTemperature() - 273.15)); + // testSystem.display(); + } } diff --git a/src/test/java/neqsim/thermodynamicOperations/util/example/VUflash.java b/src/test/java/neqsim/thermodynamicOperations/util/example/VUflash.java index c6bf6fe38c..9f15833968 100644 --- a/src/test/java/neqsim/thermodynamicOperations/util/example/VUflash.java +++ b/src/test/java/neqsim/thermodynamicOperations/util/example/VUflash.java @@ -16,44 +16,46 @@ * @since 2.2.3 */ public class VUflash { - static Logger logger = LogManager.getLogger(VUflash.class); + static Logger logger = LogManager.getLogger(VUflash.class); - /** - *

main.

- * - * @param args an array of {@link java.lang.String} objects - */ - public static void main(String args[]) { - SystemInterface testSystem = new SystemSrkEos(273.15 + 15, 10.01325); + /** + *

+ * main. + *

+ * + * @param args an array of {@link java.lang.String} objects + */ + public static void main(String args[]) { + SystemInterface testSystem = new SystemSrkEos(273.15 + 15, 10.01325); - ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); - testSystem.addComponent("methane", 11.0); - // testSystem.addComponent("ethane", 4.0); - // testSystem.addComponent("n-heptane", 10.5); - testSystem.addComponent("water", 10.5); - // testSystem.addComponent("TEG", 0.000000); - // testSystem.setMultiPhaseCheck(true); - testSystem.createDatabase(true); - testSystem.setMixingRule(2); - testSystem.setMultiPhaseCheck(true); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testSystem.addComponent("methane", 11.0); + // testSystem.addComponent("ethane", 4.0); + // testSystem.addComponent("n-heptane", 10.5); + testSystem.addComponent("water", 10.5); + // testSystem.addComponent("TEG", 0.000000); + // testSystem.setMultiPhaseCheck(true); + testSystem.createDatabase(true); + testSystem.setMixingRule(2); + testSystem.setMultiPhaseCheck(true); - testSystem.init(0); - testSystem.display(); - try { - testOps.TPflash(); - testSystem.display(); + testSystem.init(0); + testSystem.display(); + try { + testOps.TPflash(); + testSystem.display(); - logger.info("Volume " + testSystem.getVolume() * 1.1 + " internalEnergy " - + testSystem.getInternalEnergy()); - // testSystem.setPressure(5); - // testOps.PHflash(testSystem.getEnthalpy(), 0); - testOps.VUflash(testSystem.getVolume() * 1.1, testSystem.getInternalEnergy()); - logger.info("Volume " + testSystem.getVolume() + " internalEnergy " - + testSystem.getInternalEnergy()); + logger.info("Volume " + testSystem.getVolume() * 1.1 + " internalEnergy " + + testSystem.getInternalEnergy()); + // testSystem.setPressure(5); + // testOps.PHflash(testSystem.getEnthalpy(), 0); + testOps.VUflash(testSystem.getVolume() * 1.1, testSystem.getInternalEnergy()); + logger.info( + "Volume " + testSystem.getVolume() + " internalEnergy " + testSystem.getInternalEnergy()); - testSystem.display(); - } catch (Exception e) { - logger.error(e.toString()); - } + testSystem.display(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); } + } } diff --git a/src/test/java/neqsim/util/database/AspenIP21DatabaseTest.java b/src/test/java/neqsim/util/database/AspenIP21DatabaseTest.java new file mode 100644 index 0000000000..ac1a4faa39 --- /dev/null +++ b/src/test/java/neqsim/util/database/AspenIP21DatabaseTest.java @@ -0,0 +1,29 @@ +package neqsim.util.database; + +import java.sql.ResultSet; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +public class AspenIP21DatabaseTest { + Logger logger = LogManager.getFormatterLogger(NeqSimFluidDataBaseTest.class); + + @Disabled + @Test + void testMain() { + boolean failed = true; + AspenIP21Database database = new AspenIP21Database(); + try (ResultSet dataSet = database.getResultSet("Karsto", "....'")) { + while (dataSet.next()) { + // System.out.println("dataset " + dataSet.getString(4)); + // System.out.println("dataset value " + dataSet.getDouble("...")); + } + failed = false; + } catch (Exception ex) { + System.out.println("failed "); + } + Assertions.assertFalse(failed, "Failed getting properties from FluidDatabase"); + } +} diff --git a/src/test/java/neqsim/util/database/NeqSimContractDataBaseTest.java b/src/test/java/neqsim/util/database/NeqSimContractDataBaseTest.java new file mode 100644 index 0000000000..041ae78ba1 --- /dev/null +++ b/src/test/java/neqsim/util/database/NeqSimContractDataBaseTest.java @@ -0,0 +1,11 @@ +package neqsim.util.database; + +import org.junit.jupiter.api.Test; + +public class NeqSimContractDataBaseTest { + @Test + void testInitH2DatabaseFromCSVfiles() {} + + @Test + void testUpdateTable() {} +} diff --git a/src/test/java/neqsim/util/database/NeqSimDataBaseTest.java b/src/test/java/neqsim/util/database/NeqSimDataBaseTest.java new file mode 100644 index 0000000000..333a6b431f --- /dev/null +++ b/src/test/java/neqsim/util/database/NeqSimDataBaseTest.java @@ -0,0 +1,59 @@ +package neqsim.util.database; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import java.sql.ResultSet; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import neqsim.NeqSimTest; + +public class NeqSimDataBaseTest extends NeqSimTest { + Logger logger = LogManager.getFormatterLogger(NeqSimFluidDataBaseTest.class); + + @Test + void testHasComponent() { + assertTrue(neqsim.util.database.NeqSimDataBase.hasComponent("methane"), + "Could not load component methane"); + } + + @Test + void testReplaceTable() { + neqsim.util.database.NeqSimDataBase.replaceTable("COMP", "src/main/resources/data/COMP.csv"); + RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, + () -> neqsim.util.database.NeqSimDataBase.replaceTable("COMP", "file_does_not_exist.csv")); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: NeqSimDataBase:replaceTable - Input path - Resource file_does_not_exist.csv not found", + thrown.getMessage()); + } + + @Test + void testUpdateTable() { + neqsim.util.database.NeqSimDataBase.updateTable("COMP"); + RuntimeException thrown = Assertions.assertThrows(RuntimeException.class, + () -> neqsim.util.database.NeqSimDataBase.updateTable("COMP", "file_does_not_exist.csv")); + Assertions.assertEquals( + "neqsim.util.exception.InvalidInputException: NeqSimDataBase:updateTable - Input path - Resource file_does_not_exist.csv not found", + thrown.getMessage()); + } + + @Test + void testMain() { + boolean failed = true; + // NeqSimDataBase.initH2DatabaseFromCSVfiles(); + double molmass = 0.0; + try (NeqSimDataBase database = new NeqSimDataBase(); + ResultSet dataSet = database.getResultSet("SELECT * FROM comp WHERE NAME='methane'")) { + dataSet.next(); + molmass = Double.valueOf(dataSet.getString("molarmass")); + dataSet.close(); + failed = false; + } catch (Exception ex) { + System.out.println(ex.getMessage()); + System.out.println("DB test failed "); + } + // Assertions.assertTrue(testHasMethane, "Methane component found in database"); + Assertions.assertEquals(16.04, molmass, 0.1); + Assertions.assertFalse(failed, "Failed getting data from NeqsimDataBase"); + } +} diff --git a/src/test/java/neqsim/util/database/NeqSimFluidDataBaseTest.java b/src/test/java/neqsim/util/database/NeqSimFluidDataBaseTest.java new file mode 100644 index 0000000000..6d02c8c845 --- /dev/null +++ b/src/test/java/neqsim/util/database/NeqSimFluidDataBaseTest.java @@ -0,0 +1,28 @@ +package neqsim.util.database; + +import java.sql.ResultSet; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +public class NeqSimFluidDataBaseTest { + Logger logger = LogManager.getFormatterLogger(NeqSimFluidDataBaseTest.class); + + @Disabled + @Test + void testMain() { + boolean failed = true; + NeqSimFluidDataBase database = new NeqSimFluidDataBase(); + try (ResultSet dataSet = + database.getResultSet("FluidDatabase", "SELECT * FROM comp where name='water'")) { + dataSet.next(); + // System.out.println("dataset " + dataSet.getString("molarmass")); + failed = false; + } catch (Exception ex) { + System.out.println("failed"); + } + Assertions.assertFalse(failed, "Failed getting properties from FluidDatabase"); + } +} diff --git a/src/test/java/neqsim/util/generator/PropertyGeneratorTest.java b/src/test/java/neqsim/util/generator/PropertyGeneratorTest.java new file mode 100644 index 0000000000..94a1cd0f81 --- /dev/null +++ b/src/test/java/neqsim/util/generator/PropertyGeneratorTest.java @@ -0,0 +1,33 @@ +package neqsim.util.generator; + +import org.junit.jupiter.api.Test; +import neqsim.thermo.system.SystemInterface; +import neqsim.thermo.system.SystemSrkEos; + +public class PropertyGeneratorTest { + @Test + void testCalculate() { + SystemInterface fluid = new SystemSrkEos(273.15 + 45.0, 22.0); + fluid.addComponent("water", 0.1); + fluid.addComponent("nitrogen", 0.02); + fluid.addComponent("CO2", 0.03); + fluid.addComponent("H2S", 0.01); + fluid.addComponent("methane", 0.80); + fluid.addComponent("ethane", 0.04); + fluid.addComponent("propane", 0.03); + fluid.addComponent("i-butane", 0.02); + fluid.addComponent("n-butane", 0.01); + fluid.addComponent("i-pentane", 0.01); + fluid.addComponent("n-pentane", 0.01); + fluid.addComponent("n-hexane", 0.01); + fluid.addComponent("nC10", 0.1); + fluid.setMixingRule(2); + fluid.useVolumeCorrection(true); + fluid.setMultiPhaseCheck(true); + + double[] temps = new double[] {280.0, 290.0}; + double[] pres = new double[] {10.0, 20.0}; + PropertyGenerator generator = new PropertyGenerator(fluid, temps, pres); + generator.calculate(); + } +} diff --git a/src/test/java/neqsim/util/unit/PressureUnitTest.java b/src/test/java/neqsim/util/unit/PressureUnitTest.java new file mode 100644 index 0000000000..7eec0479f8 --- /dev/null +++ b/src/test/java/neqsim/util/unit/PressureUnitTest.java @@ -0,0 +1,51 @@ +package neqsim.util.unit; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +class PressureUnitTest extends neqsim.NeqSimTest { + /** + *

+ * testSetPressure + *

+ */ + @Test + public void testSetPressure() { + neqsim.thermo.system.SystemPrEos fluid = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); + fluid.addComponent("nitrogen", 1.0); + fluid.addComponent("water", 1.0); + fluid.setPressure(0.0, "barg"); + + ThermodynamicOperations testOps = new ThermodynamicOperations(fluid); + testOps.TPflash(); + fluid.initProperties(); + + assertEquals(ThermodynamicConstantsInterface.referencePressure, fluid.getPressure("bara"), + 1e-4); + assertEquals(0.0, fluid.getPressure("barg"), 1e-4); + assertEquals(1.01325, fluid.getPressure("bara"), 1e-4); + assertEquals(101325.0, fluid.getPressure("Pa"), 1e-4); + assertEquals(101.3250, fluid.getPressure("kPa"), 1e-4); + assertEquals(1.0, fluid.getPressure("atm"), 1e-4); + assertEquals(14.6959488, fluid.getPressure("psi"), 1e-4); + assertEquals(14.6959488, fluid.getPressure("psia"), 1e-4); + assertEquals(-0.0040512245077, fluid.getPressure("psig"), 1e-4); + + fluid.setPressure(11.0, "bara"); + testOps.TPflash(); + + assertEquals(11.0, fluid.getPressure(), 1e-4); + assertEquals(11.0 - 1.01325, fluid.getPressure("barg"), 1e-4); + assertEquals(11.0, fluid.getPressure("bara"), 1e-4); + assertEquals(11.0e5, fluid.getPressure("Pa"), 1e-4); + assertEquals(11e2, fluid.getPressure("kPa"), 1e-4); + assertEquals(10.856155933, fluid.getPressure("atm"), 1e-4); + assertEquals(159.54151180, fluid.getPressure("psi"), 1e-4); + assertEquals(159.54151180, fluid.getPressure("psia"), 1e-4); + assertEquals(144.841511503000, fluid.getPressure("psig"), 1e-4); + + } +} + diff --git a/src/test/java/neqsim/util/unit/TemperatureUnitTest.java b/src/test/java/neqsim/util/unit/TemperatureUnitTest.java new file mode 100644 index 0000000000..64a002fda3 --- /dev/null +++ b/src/test/java/neqsim/util/unit/TemperatureUnitTest.java @@ -0,0 +1,54 @@ +package neqsim.util.unit; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import neqsim.thermo.ThermodynamicConstantsInterface; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +class TemperatureUnitTest extends neqsim.NeqSimTest { + /** + *

+ * testSetPressure + *

+ */ + @Test + public void testSetTemperature() { + neqsim.thermo.system.SystemPrEos fluid = new neqsim.thermo.system.SystemPrEos(298.0, 10.0); + fluid.addComponent("nitrogen", 10.0); + fluid.addComponent("nC10", 10.0); + fluid.setPressure(0.0, "barg"); + + ThermodynamicOperations testOps = new ThermodynamicOperations(fluid); + testOps.TPflash(); + fluid.initProperties(); + + assertEquals(ThermodynamicConstantsInterface.referencePressure, fluid.getPressure("bara"), + 1e-4); + assertEquals(24.850000000000, fluid.getTemperature("C"), 1e-4); + assertEquals(76.7300000, fluid.getTemperature("F"), 1e-4); + assertEquals(536.4, fluid.getTemperature("R"), 1e-4); + + fluid.setTemperature(11.0, "F"); + testOps.TPflash(); + + assertEquals(470.67, fluid.getTemperature("R"), 1e-4); + assertEquals(-11.6666666666, fluid.getTemperature("C"), 1e-4); + assertEquals(261.483333333, fluid.getTemperature("K"), 1e-4); + + fluid.setTemperature(527.67, "R"); + testOps.TPflash(); + + assertEquals(68.0, fluid.getTemperature("F"), 1e-4); + assertEquals(20.0, fluid.getTemperature("C"), 1e-4); + assertEquals(293.15, fluid.getTemperature("K"), 1e-4); + + fluid.setTemperature(25.25, "C"); + testOps.TPflash(); + + assertEquals(77.4499999999, fluid.getTemperature("F"), 1e-4); + assertEquals(537.12, fluid.getTemperature("R"), 1e-4); + assertEquals(298.4, fluid.getTemperature("K"), 1e-4); + + } +} + diff --git a/src/test/java/neqsim/util/unit/UnitsTest.java b/src/test/java/neqsim/util/unit/UnitsTest.java new file mode 100644 index 0000000000..0d321c4c2a --- /dev/null +++ b/src/test/java/neqsim/util/unit/UnitsTest.java @@ -0,0 +1,29 @@ +package neqsim.util.unit; + +import org.junit.jupiter.api.Test; +import neqsim.thermodynamicOperations.ThermodynamicOperations; + +public class UnitsTest { + @Test + void testActivateUnits() { + neqsim.thermo.system.SystemInterface testSystem = + new neqsim.thermo.system.SystemPrEos(298.0, 10.0); + testSystem.addComponent("nitrogen", 0.01); + testSystem.addComponent("CO2", 0.01); + testSystem.addComponent("methane", 0.68); + testSystem.addComponent("ethane", 0.1); + testSystem.setMixingRule("classic"); + neqsim.thermo.ThermodynamicModelTest testModel = + new neqsim.thermo.ThermodynamicModelTest(testSystem); + ThermodynamicOperations testOps = new ThermodynamicOperations(testSystem); + testOps.TPflash(); + neqsim.util.unit.Units.activateDefaultUnits(); + testSystem.createTable("results"); + neqsim.util.unit.Units.activateFieldUnits(); + testSystem.createTable("results"); + neqsim.util.unit.Units.activateSIUnits(); + testSystem.createTable("results"); + neqsim.util.unit.Units.activateMetricUnits(); + testSystem.createTable("results"); + } +} diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties new file mode 100644 index 0000000000..d0c0e1089c --- /dev/null +++ b/src/test/resources/log4j.properties @@ -0,0 +1,21 @@ +status = warn +dest = out +name = NeqSimTestConfig + +filters = threshold + +filter.threshold.type = ThresholdFilter +filter.threshold.level = debug + +appenders = console + +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + + +# Define the root logger with appender file - see https://www.tutorialspoint.com/log4j/log4j_logging_levels.htm +rootLogger.level = warn +rootLogger.appenderRefs = stdout +rootLogger.appenderRef.stdout.ref = STDOUT diff --git a/src/test/resources/neqsim/thermodynamicOperations/COMP.csv b/src/test/resources/neqsim/thermodynamicOperations/COMP.csv new file mode 100755 index 0000000000..7fd97ee1d5 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/COMP.csv @@ -0,0 +1,192 @@ +1,"methane","74-82-8","HC",1,"CH4 ",16.043,0.422182073,-82.59,45.99,0.0115,-161.55,16.043,99.0,"Classic ",2.6,37.978352,-0.07461815,3.0188134E-4,-2.8325798E-7,9.070574E-11,"pow10",3.7687,395.744,266.682,0.0,0.0,0.0,0.0,0.0,0.0,2.52,155.8090060223,0.4069986258,3,-26.87,1150.0,0.187,-5.21E-4,-50500.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",900.0,0.0,0.0,0.0,0.0,0.0,0.0,0.303,-6.05E-4,-3.2E-6,77.3,941.0,452.0,0.116656057,90.69,90.65,-74520.0,186.0,33.022,-0.01587,-1.55E-4,0.0,0.0,2.92,0.29,191.0,0.289,0.0,8170.0,0.0,0.0,0.0,0.0,0.1,0.5857,-0.7206,1.2899,0.0,0.0,0.0,0.122841598,0.914470789,2.741978611,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.18626,1,1.0,-6.68082,0.0,9700,1.5293E-5,0.04792,1594.0,0.01244,2952.0,0.002317,2777.0,1.076,1323.0,"yes",1.0,3.703900119,150.029998779297,0.0,0.0,3.1907109417,155.8090060223,0.4069986258,1.0,0,900.0,6.21E-4,2760.0,0.421,1963.1,0.00404868,2636.75,0.29527,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.39234,0.0,0.0,77.3 +2,"ethane ","74-84-0","HC",2,"C2H6 ",30.07,0.544459352,32.17,48.72,0.0995,-88.55,30.07,148.0,"Classic ",9761.1,34.735892,-0.036806078,4.705724E-4,-5.5296414E-7,2.0676918E-10,"pow10",3.95405,663.72,256.681,0.0,0.0,1.7,0.0,0.0,0.0,3.2646730658,176.7019972478,0.5138421358,3,-10.23,668.0,0.0439,-9.59E-5,-31900.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",0.0,0.0,0.0,0.0,0.002582841,12.53829052,-18.38097379,-0.384,0.00525,-6.37E-6,108.9,2860.0,652.0,1.14028E-5,90.35,89.95,-84680.0,229.0,25.263,-0.01095,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14703.0,0.0,0.0,0.0,0.0,0.1,0.654848544,-0.184389171,0.26016005,0.0,0.0,0.0,0.299607318,0.876626839,1.6792384,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.04609,1,1.0,-3.33355,0.0,20500,2.17562E-5,0.0,0.0,0.002999,3861.0,0.0,0.0,0.007362,4000.0,"yes",1.6069,3.5206,191.42,0.0,0.0,3.2646730658,176.7019972478,0.5138421358,1.0,0,3363.0,0.0,0.0,0.1098,2854.94,0.0,0.0,0.0893861,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.52005,0.0043,0.10292,108.9 +3,"Cl- ","74-82-8","ion",3,"Cl- ",35.45,0.797,444.15,290.89,0.344,64.55,99.45,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.6,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,-1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.6,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +4,"Na+ ","74-82-8","ion",4,"Na+ ",22.99,0.797,444.15,290.89,0.344,64.55,22.99,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,5.68,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.038,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.68,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +5,"Mg++ ","74-82-8","ion",5,"Mg++",24.31,0.797,444.15,290.89,0.344,64.55,24.31,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,6.94,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,2,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.038,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,6.94,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +6,"MDEA ","74-82-8","amine",6,"MDEA ",119.1632,1.038,403.85,38.76,1.242,140.0,119.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.260355682,0.0,4.5,481.8,0.0,3,-75.19,12680.0,0.1573,-1.225E-4,57900.0,8.16976,8989.3,0.0,0.0,0.0,0,"solvent",0.0,0.0,0.0,0.0,0.521291873,-1.152080748,-0.013889882,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,2.2986015393,-2.1597631778,1.5370964612,0.0,0.0,0.0,0.0,0.0,0.0,4,"4C",0.0,0.0,0.018008483,12276.3826,342400.6001,10.82873753955,1.03285479,376276.884,10.78358585,1.258298307,0.0,1,17.38710706,1.76274587,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,4.5,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +7,"MDEA+ ","74-82-8","ion",7,"CH4O ",120.1632,1.038,403.85,38.76,1.242,64.55,120.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,4.5,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,0.0,0.0,0.0,0.0,0.0,0.0,1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,4.5,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +8,"H3O+ ","74-82-8","ion",8,"H3O",19.02,0.797,444.15,290.89,0.344,64.55,19.02,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,4.06,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,0.0,0.0,0.0,0.0,0.0,0.0,1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,4.06,481.8,0.0,9.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +9,"propane ","74-98-6","HC",9,"CH4O ",44.097,0.0,96.68,42.48,0.1523,-42.05,44.097,203.0,"Classic ",19519.6,31.983958,0.042659134,4.9975454E-4,-6.5622402E-7,2.5598806E-10,"pow10",3.92828,803.997,229.86,0.0,0.0,0.0,0.0,0.0,0.0,3.3205773626,205.8859461427,0.6623796853,3,-7.764,722.0,0.0238,-4.67E-5,-24400.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",0.0,0.0,0.0,0.0,-0.015069991,-4.344143673,4.007325591,-0.384,0.00525,-6.37E-6,151.9,6000.0,1000.0,1.71089E-9,85.47,85.5,-103840.0,189.0,18.861,-0.020332,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,15700.0,0.0,0.0,0.0,0.0,0.1,0.721211486,-0.099216642,0.181829227,0.0,0.0,0.0,0.435825883,0.866132179,1.395432818,0,"0",0.0,0.0,0.0,0.0,91187.5,5.7834,0.6307,0.0,0.0,0.0,5.24869,1,1.0,-11.1254,0.0,28500,2.49734E-5,0.0,0.0,0.0,0.0,0.0,0.0,0.008264,4521.0,"yes",2.002,3.6184,208.11,0.0,0.0,3.3205773626,205.8859461427,0.6623796853,1.0,0,3885.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0799,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.61838,-0.16071,0.48785,151.9 +10,"CO2","124-38-9","inert",10,"CO2 ",44.01,1.1,31.04,73.815,0.2276,-78.5,44.01,94.0,"Classic ",19459.1,27.095326,0.011273784,1.2487628E-4,-1.9737436E-7,8.779584E-11,"pow10",7.5322,835.06,268.223,0.0,0.0,0.0,0.0,0.0,0.0,2.34,168.77,0.6805,2,-7.811,3140.0,0.0,0.0,-394000.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",94.4914,-6789.04,-11.4519,-0.010454,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,78.0,9018.9693,1000.0,5.185,216.58,216.592,-393500.0,189.0,32.939,0.06842,-2.847E-4,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14490.0,0.0,0.0,0.0,0.0,0.1,0.88173893,-0.856255022,3.094939327,0.0,0.0,0.0,1.413601068,-0.605965449,1.101814948,2,"2A",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,6.81228,-1301.679,-3.494,26100,3.76872E-5,4.856E-11,7470.0,0.09862,2617.0,6.082E-5,3691.0,0.1683,2591.0,"yes",1.3097,3.2507,92.15,0.0,0.0,3.03720716,170.1623828321,0.68463388,1.0,0,2119.56,7.58596E-4,2500.0,0.231198,2419.56,0.00724496,2330.0,0.139898,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.71369,-0.44764,2.43752,78.0 +11,"methanol ","67-56-1","alcohol",11,"CH4O ",32.042,0.797,239.49,80.96,0.559,64.55,32.042,99.0,"Classic ",11133.0,39.192196,-0.058081604,3.5010254E-4,-3.6939102E-7,1.276199E-10,"pow10",5.20277,1580.08,239.5,0.0,0.0,1.7,0.215,0.2,0.0,3.626,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,57900.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,73.0694890672,3177.0,1000.0,0.00611,175.5,175.5,-242000.0,189.0,30.585,0.0,0.0,0.0,0.0,2.288,0.2685,512.64,0.2453,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,1.4371,-0.79942,0.3278,0.0,0.0,0.0,0.0,0.0,0.0,2,"2B",0.0,0.0,0.0161,24591.0,40531.0,3.0978,0.43102,47052.0,3.3,0.9037,0.0449,1,17.38710706,-7582.40622,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",1.5255,3.23,188.9,0.035176,24106.443,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-12706.0,958.78,-5.2332,0.013152,0.0,105800.0,-362.23,0.9379,0.0,0.0,1.224003,-0.2735,-0.39823,87.5438528188 +12,"MEG ","107-21-1","glycol",12,"C2H6O2 ",62.069,1.117,446.85,90.0,0.5347,197.35,62.069,186.0,"Classic ",32022.6,35.7,0.2484,-1.497E-4,3.011E-8,0.0,"exp",13.6299,6022.18,-28.25,0.0,0.0,2.3082,0.215,0.2488,0.0,3.626,481.8,0.0,3,-23.155244944416,5694.4842125338,0.0230815095562115,0.0,57900.0,-19.29054,29814.53,-0.0196785,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.654009012,-3.955117195,3.671191916,0.5173389545,-7.981692E-4,6.48E-8,133.32865,9958.0,904.0,2.42E-6,260.15,260.15,-388000.0,324.0,21.4,0.0,0.0,0.0,0.0,1.3151,0.25125,719.7,0.2187,0.0,8.29E7,0.427,0.0,0.0,0.0,1.117,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4,"4C",0.0,0.0,0.0141,19752.0,108190.0,5.14,0.6744,108190.0,5.14,0.6744,0.0514,1,17.090887,-7800.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,35540.0,436.78,-0.18486,0.0,0.0,35540.0,436.78,-0.18486,0.0,0.0,0.91003,1.34996,-1.89002,151.817427819 +13,"oxygen ","7782-44-7","inert",13,"O2 ",31.999,0.0,-118.55,50.46,0.021,-182.95,31.999,73.4,"Classic ",11103.1,30.17982,-0.014915316,5.470612E-5,-4.996714E-8,1.488206E-11,"log",-6.28275,1.73619,-1.81349,-0.0254,0.0,0.0,0.0,0.0,0.0,3.467,106.7,0.0,3,-4.771,215.0,0.0139,-6.26E-5,57900.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,0.0,6000.0,1000.0,0.0014633,56.36,273.0,-242000.0,189.0,53.0,-0.00784,0.0,0.0,0.0,5.46,0.305,647.0,0.081,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.01717,2016.2,0.05696,1662.3,0.09799,1045.9,0.002681,2563.9,"yes",0.0,0.0,0.0,0.0,0.0,3.467,106.7,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +14,"TEG ","112-27-6","glycol",14,"C6H14O4 ",150.175,1.127,496.35,33.13,1.2874,278.3,150.175,450.0,"Classic ",93317.4,86.4,0.6008,-3.622E-4,7.285E-8,0.0,"exp",6.7568,3715.222,-1.299,0.0,0.0,2.2,0.215,0.2427735786,0.0,3.626,481.8,0.0,3,-53.92523,9741.992,0.106066,-7.580229E-5,-394370.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.394142583,-5.478362E-4,0.0,358.332712,15900.0,1000.0,0.00611,268.25,268.25,-242000.0,189.0,8.89,-0.00784,0.0,0.0,0.0,0.5966,0.26227,769.5,0.2455,0.0,5.21E7,0.32,-0.212,0.258,0.0,1.127,1.3769060876,1.7889215262,-4.378737499,0.0,0.0,0.0,0.0,0.0,0.0,4,"4C",0.284542457230047,-0.0044236042659463,0.0188,14337.0,391260.0,13.21,1.1692,391260.0,13.21,1.1692,0.0188,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,153800.0,587.0,0.0,0.0,0.0,153800.0,587.0,0.0,0.0,0.0,1.55075,-0.7778,0.31779,349.636060455 +15,"DEG ","111-46-6","glycol",15,"C4H10O3 ",106.122,1.119,471.45,46.61,1.2011,245.85,106.122,316.0,"Classic ",62670.0,73.1,0.3462,-1.468E-4,1.846E-8,0.0,"exp",10.4124,4122.52,-122.5,0.0,0.0,2.2,0.215,0.2489,0.0,3.626,481.8,0.0,4,1385.09,495.54,0.0,0.0,-394370.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,0.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,12.6,-0.00784,0.0,0.0,0.0,0.83692,0.26112,744.6,0.2422,0.0,5.21E7,0.32,-0.212,0.258,0.0,1.119,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4,"4C",0.0,0.0,0.0064,19684.0,264080.0,9.21,0.7991,264080.0,9.21,0.7991,0.0064,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,177000.0,0.0,0.0,0.0,0.0,125410.0,400.58,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +16,"nitrogen ","7727-37-9","inert",16,"N2 ",28.0135,0.80796486,-147.05,33.944,0.0403,-195.75,28.014,89.8,"Classic ",8330.8,29.423246,-0.002169954,5.8198E-7,1.305298E-8,-8.23086E-12,"pow10",5.73921,167.93,254.481,0.0,0.0,0.0,0.0,0.0,0.0,3.1325067483,126.5783867132,0.3591889027,2,-7.811,3140.0,0.0,0.0,-394370.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solute ",0.0,0.0,0.0,0.0,0.055118857,-2.346353896,1.5681216,-0.384,0.00525,-6.37E-6,41.0,720.0,870.0,0.12508,63.15,63.3,0.0,192.0,37.87,-0.060272,0.0,0.0,0.0,3.21,0.286,126.0,0.297,0.0,7490000.0,0.404,-0.317,0.273,0.0,0.1,0.574258329,-0.322594876,0.590654497,0.0,0.0,0.0,0.112629607,0.902199715,2.874960678,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.601899073,1,1.0,-21.24548045,0.0,0,1.74179E-5,0.0528,932.3,0.03415,2240.0,0.007507,2004.0,0.09477,1596.0,"yes",1.2053,3.313,90.96,0.0,0.0,3.1325067483,126.5783867132,0.3591889027,1.0,0,1150.0,0.011645,2159.0,0.4001,1037.18,0.00718,2090.0,0.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.436354704,0.0,0.0,41.0 +17,"n-butane ","106-97-8","HC",17,"C4H10 ",58.123,0.0,151.97,37.96,0.2002,-0.45,58.124,255.0,"Classic ",29278.1,46.117758,0.046026304,6.6985898E-4,-8.7887294E-7,3.4370076E-10,"pow10",3.93266,935.773,238.789,0.0,0.0,0.0,0.0,0.0,0.0,2.9125,209.0,0.9379,2,-7.811,3140.0,0.0,0.0,-394370.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solute ",0.0,0.0,0.0,0.0,-0.018486492,-4.921574519,4.858186966,-0.384,0.00525,-6.37E-6,191.7,6000.0,1000.0,6.76236E-6,134.86,138.15,-126150.0,189.0,15.194,-0.006886,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.808063555,-0.212724945,0.362961475,0.0,0.0,0.0,0.331800583,0.854692733,1.865828858,0,"0",0.0,0.0,0.0,0.0,131427.4,7.2081,0.70771,0.0,0.0,0.0,5.76447,1,1.0,-13.4385,0.0,35900,2.57682E-5,0.0,0.0,0.0,0.0,0.0,0.0,0.001262,4580.0,"yes",2.3316,3.7086,222.86,0.0,0.0,2.9125,209.0,0.9379,1.0,0,2691.0,0.0,0.0,0.0,0.0,0.0,0.0,1.05298,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.67123,-0.03803,0.21886,191.7 +18,"HCO3-","74-82-8","ion",18,"HCO3",61.0,0.797,444.15,290.89,0.344,64.55,61.0,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.12,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,-1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.12,481.8,0.0,4.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +19,"Li+ ","74-82-8","ion",19,"Li ",6.941,0.797,444.15,290.89,0.344,64.55,6.941,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,4.76,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,4.76,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +20,"K+ ","74-82-8","ion",20,"K ",39.1,0.797,444.15,290.89,0.344,64.55,39.1,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,2.5,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.5,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +21,"Ca++","74-82-8","ion",21,"Ca2 ",40.08,0.797,444.15,290.89,0.344,64.55,40.08,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,6.2,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,2,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,6.2,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +22,"I- ","74-82-8","ion",22,"I ",126.9,0.797,444.15,290.89,0.344,64.55,126.9,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,4.32,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,-1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,4.32,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +23,"Sr++ ","74-82-8","ion",23,"Sr",87.62,0.797,444.15,290.89,0.344,64.55,32.042,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,6.2,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,2,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,6.2,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +24,"Ba++ ","74-82-8","ion",24,"Ba ",137.3,0.797,444.15,290.89,0.344,64.55,137.3,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,5.8,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,2,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,5.8,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +25,"OH-","74-82-8","ion",25,"OH",17.001,0.797,444.15,290.89,0.344,64.55,17.001,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.52,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-157000.0,0.0,0.0,0.0,0.0,0.0,-1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.52,481.8,0.0,3.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +26,"CO3--","74-82-8","ion",26,"CO3minus2 ",59.982,0.797,444.15,290.89,0.344,64.55,59.982,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.7,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,-2,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.7,481.8,0.0,5.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +27,"NH4+ ","74-82-8","ion",27,"NH4 ",18.01,0.797,444.15,290.89,0.344,64.55,18.01,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"loglog",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,2.5,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.5,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +28,"Br- ","74-82-8","ion",28,"Br ",79.9,0.797,444.15,290.89,0.344,64.55,79.9,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.9,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,-1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.9,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +29,"n-pentane ","109-66-0","HC",29,"nC5 ",72.15,0.0,196.55,33.7,0.2515,36.05,72.151,304.0,"Classic ",39036.6,62.803956,-0.003059552,9.8487644E-4,-1.24202846E-6,4.7830442E-10,"pow10",6.85296,1064.84,232.012,0.0,0.0,0.0,0.0,0.0,0.0,5.784,341.1,0.0,2,-7.811,3140.0,0.0,0.0,-394370.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solute ",0.0,0.0,0.0,0.0,0.0789,-1.34,0.043,-0.384,0.00525,-6.37E-6,233.9,8401.5,1000.0,6.8642E-7,143.42,143.42,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.903861134,-0.358553152,0.663885221,0.0,0.0,0.0,0.319903,0.847895,2.10201,0,"0",0.0,0.0,0.0,0.0,181980.0,9.1008,0.79858,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,42000,2.58651E-5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.6896,3.7729,231.2,0.0,0.0,5.784,341.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.7518036461,-0.128503978575,0.49677415,233.9 +30,"n-hexane ","110-54-3","HC",30,"C6H14 ",86.177,0.664,234.45,30.25,0.3013,68.75,86.178,370.0,"Classic ",48795.1,73.420934,-0.001380124,0.00118906828,-1.52262596E-6,5.9228936E-10,"log",3.45604,1044.038,-53.893,1000.0,0.0,0.0,0.0,0.0,0.0,5.949,399.3,0.0,2,-7.811,3140.0,0.0,0.0,-394370.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solute ",0.0,0.0,0.0,0.0,0.0789,-1.34,0.043,-0.384,0.00525,-6.37E-6,271.0,13080.0,1000.0,1.1707133997481E-5,177.83,177.83,-167190.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.1061,-1.4411,2.9173,0.0,0.0,0.0,0.175874,0.865924,3.53648,0,"0",0.0,0.0,0.0,0.0,236810.0,10.789,0.8313,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,2.57841E-5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0576,3.7983,236.77,0.0,0.0,5.949,399.3,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.8347,-0.31803,1.02085,271.0 +31,"benzene ","71-43-2","HC",31,"C6H6 ",78.114,0.886,289.01,48.98,0.2108,80.15,78.114,259.0,"Classic ",43185.0,29.523014,-0.051413776,0.0011943061,-1.64675398E-6,6.8457476E-10,"pow10",3.98523,1184.24,217.572,0.0,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,205.9,9200.0,1000.0,0.0483790701452074,278.5,278.5,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.8356,-0.375,0.9715,0.0,0.0,0.0,0.0,0.0,0.0,1,"1A",0.0,0.0,0.11347,0.0,178760.0,7.499,0.7576,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,45000,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.628E-4,5951.0,"no",2.4653,3.6478,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.68309,-0.10519,0.66711,205.9 +32,"toluene","108-88-3","HC",32,"C7H8 ",92.141,0.871,318.64,41.086,0.2641,110.65,92.141,316.0,"Classic ",52943.5,32.141924,0.029581212,0.00111041784,-1.55130926E-6,6.393466E-10,"pow10",6.95087,1342.31,219.187,0.0,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.9469,-0.5896,1.2132,0.0,0.0,0.0,0.0,0.0,0.0,1,"1A",0.0,0.0,0.1251,0.0,233750.0,9.214,0.8037,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.8149,3.7169,285.69,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.76465,-0.09737,0.42565,207.0 +33,"n-heptane ","142-82-5","HC",33,"C7H16 ",100.205,0.69,267.05,27.4,0.3495,98.45,100.205,432.0,"Classic ",58553.6,80.097076,0.034552984,0.00128817116,-1.66828724E-6,6.459978E-10,"pow10",6.89677,1264.9,216.544,0.0,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,2.0,0.0,0.0,0.0,0.0,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,311.0,14100.0,1000.0,0.00611,182.57,182.57,-187800.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.1605,-1.2606,2.5517,0.0,0.0,0.0,0.423359,0.83515,1.98292,0,"0",0.0,0.0,0.0,0.0,291780.0,12.535,0.9137,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.4831,3.8049,238.4,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.86479,0.07156,0.06692,311.0 +34,"n-octane ","111-65-9","HC",34,"C8H18 ",114.232,0.708,295.55,24.9,0.3996,125.65,114.232,492.0,"Classic ",68312.1,89.990736,0.041428662,0.00147581814,-1.92361018E-6,7.465972E-10,"pow10",6.91868,1351.99,209.155,0.0,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,351.0,6000.0,1000.0,0.00611,216.37,216.37,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.9975,0.5804,-1.2075,0.0,0.0,0.0,0.367046,0.833616,2.36585,0,"0",0.0,0.0,0.0,0.0,348750.0,14.244,0.99415,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.8176,3.8373,242.78,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.96331,-0.2563,0.8864,351.0 +35,"nC10 ","124-18-5","HC",35,"C10H22 ",142.285,0.734,344.55,21.1,0.4923,174.15,142.285,603.0,"Classic ",87828.4,111.964638,0.034411646,0.00192277878,-2.53385778E-6,9.951858E-10,"pow10",6.94363,1495.17,193.858,0.0,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,431.0,9300.0,1000.0,0.00611,243.45,243.45,-249700.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.1406,0.5867,-1.361,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,473890.0,17.865,1.13243,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",4.6627,3.8384,243.87,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.06818,-0.07245,0.43641,431.0 +36,"n-nonane","111-84-2","HC",36,"C9H20 ",128.258,0.722,322.5,23.056,0.4377,150.85,128.258,548.0,"Classic ",78069.9,101.031728,0.03803655,0.00169738624,-2.22623978E-6,8.700601E-10,"pow10",6.93893,1431.82,202.11,0.0,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,391.0,6000.0,1000.0,0.00611,219.6,219.6,-228300.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,412506.1,16.035,1.04628,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,2.57928E-5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",4.2079,3.8448,244.51,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.04122,-0.22919,0.64752,391.0 +37,"hydrogen ","1333-74-0","HC",37,"hydrogen ",2.016,0.0,-239.95,12.97,-0.22,-252.75,2.016,65.0,"Classic ",-9755.9,23.969262,0.030603834,-6.418408E-5,5.753288E-8,-1.770882E-11,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +38,"argon ","7440-37-1","HC",38,"argon ",39.948,0.0,-122.35,48.74,-0.004,-185.85,39.948,74.9,"Classic ",16633.2,20.785,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.6895,83.8,83.8,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +39,"i-butane ","75-28-5","HC",39,"C4H10 ",58.123,0.0,134.99,36.48,0.177,-11.75,58.124,263.0,"Classic ",29278.1,27.860214,0.148679262,4.5535778E-4,-6.7335086E-7,2.6962302E-10,"log",100.18,-4841.9,-13.541,0.020063,1.0,1.8,0.076,0.0,0.0,3.0810162204,225.1504438988,0.8708186545,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,181.5,6000.0,1000.0,1.4051E-7,113.54,273.0,-134510.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.78038836,-0.273389543,0.659787119,0.0,0.0,0.0,0.21797128,0.848891073,2.284036968,0,"0",0.0,0.0,0.0,0.0,129094.0,7.47,0.7021,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,24540,2.71155E-5,0.0,0.0,0.08189,4013.0,0.0,0.0,0.08189,4013.0,"yes",2.2616,3.7574,216.53,0.0,0.0,3.0810162204,225.1504438988,0.8708186545,1.0,0,4000.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08164,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.65617,-0.1387,0.50392,181.5 +40,"c-propane ","74-98-6","HC",40,"C3H6 ",42.081,0.0,124.65,54.92,0.264,-32.75,42.081,170.0,"Classic ",18117.1,37.354802,-0.150458458,0.00105953616,-1.33431386E-6,5.3425764E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,132.5,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,132.5 +41,"Cs+","74-82-8","ion",41,"Cs+",32.042,0.797,444.15,290.89,0.344,64.55,32.042,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,2.38,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.38,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +42,"Rb+","74-82-8","ion",42,"Rb+",32.042,0.797,444.15,290.89,0.344,64.55,32.042,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,2.36,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.36,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +43,"ice","74-82-8","ice",43,"H2O ",18.015,0.999,374.15,220.89,0.344,100.0,18.015,56.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-57.71,7647.0,0.1442,-1.357E-4,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.08292841,-1.243257568,-0.253919105,-0.384,0.00525,-6.37E-6,207.0,2700.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.09,-0.638,0.635,0.0,0.0,0.0,0.0,0.0,0.0,4,"0",0.0,0.0,0.070118289,16201.0,11253.99427,1.629710202,1.170113583,13855.59696,1.456360879,0.664155324,0.046473789,1,17.38710706,-6141.762746,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +44,"nC11","1120-21-4","HC",44,"C11H24",156.3,0.7432,365.85,19.5,0.5303,195.95,156.3,660.0,"Classic",97578.5,-8.39,1.053,-5.799E-4,1.236E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,471.0,22180.0,6860.0,0.00611,247.58,247.58,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.1559,-0.30621,0.94119,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,552201.0,19.7909,1.1437,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",4.9082,3.8893,248.82,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.1559,-0.30621,0.94119,471.0 +45,"nC12","112-40-3","HC",45,"C12H26",170.3,0.7513,384.85,18.2,0.5764,216.35,170.3,713.0000207901,"Classic",107318.2,143.241906,-0.060209988,0.00265399508,-3.51865108E-6,1.41520908E-9,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,511.0,36820.0,1000.0,0.00611,263.57,263.57,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.20587,-0.32361,1.07634,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,624030.0,21.624,1.19531,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",5.306,3.8959,249.21,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.20587,-0.32361,1.07634,511.0 +46,"nC13","629-50-5","HC",46,"C13H28",184.4,0.758,401.85,16.8,0.6174,235.45,184.4,780.0,"Classic",117127.5,154.191444,-0.063485704,0.00287697656,-3.82261092E-6,1.53883826E-9,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,554.3,28501.0,1000.0,0.00611,267.79,267.79,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.29116,-0.53347,1.48318,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,766180.0,25.053,1.29057,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",5.6877,3.9143,249.78,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.29116,-0.53347,1.48318,554.3 +47,"nC14","629-59-4","HC",47,"C14H30",198.4,0.7639,419.85,15.7,0.643,253.55,198.4,830.0,"Classic",126867.2,152.76975,0.05474769,0.00268600398,-3.54700182E-6,1.3792926E-9,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,594.6,45070.0,1000.0,0.00611,279.02,279.02,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.29426,0.02029,0.10428,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",5.9002,3.9396,254.21,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.29426,0.02029,0.10428,594.6 +48,"nC15","629-62-9","HC",48,"C15H32",212.4,0.7691,434.85,14.8,0.6863,270.65,212.4,880.0,"Classic",136606.9,176.09052,-0.070037136,0.00332302266,-4.4305306E-6,1.78601348E-9,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,556.3,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.41472,-0.6389,1.60314,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",6.2855,3.9531,254.14,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.41472,-0.6389,1.60314,556.3 +49,"nC16","544-76-3","HC",49,"C16H34",226.4,0.7738,443.85,14.19,0.742,286.85,226.4,920.0,"Classic",146346.6,330.456558,-1.713947728,0.00954563596,-1.293226072E-5,5.61477676E-9,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,675.2,47545.0,1000.0,0.00611,291.3,291.3,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.43076,-0.45415,1.19557,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",6.6485,3.9552,254.7,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,675.2 +50,"nC17","629-78-7","HC",50,"C17H36",240.47,0.778,462.35,13.63,0.6572,302.05,240.5,1000.0,"Classic",156155.9,197.981282,-0.07657194,0.00376898562,-5.03836714E-6,2.0331887E-9,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,715.5,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.46392,-0.45071,1.65812,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",6.9809,3.9675,255.65,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.46392,-0.45071,1.65812,715.5 +51,"nC18","593-45-3","HC",51,"C18H38",254.5,0.7819,473.85,12.7,0.811,316.35,254.5,1030.0,"Classic",165895.6,208.93082,-0.079839342,0.0039919671,-5.34224384E-6,2.15681788E-9,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,755.8,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.54389,-0.70593,1.69458,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",7.3271,3.9668,256.2,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.54389,-0.70593,1.69458,755.8 +52,"nC19","629-92-5","HC",52,"C19H40",268.0,0.7854,486.95,12.47,0.7073,329.95,268.5,1085.0,"Classic",175635.3,219.880358,-0.083123372,0.00421494858,-5.64620368E-6,2.28036392E-9,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,796.1,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.4672,-0.0584,1.40634,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",7.7175,3.9721,256.0,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.4672,-0.0584,1.40634,796.1 +53,"nC20","112-95-8","HC",53,"C20H42",282.6,0.7881,493.85,11.15,0.907,343.85,282.6,1140.0,"Classic",185444.6,230.829896,-0.086374146,0.00443793006,-5.95008038E-6,2.40390996E-9,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,836.4,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.78174,-1.48886,3.12278,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",7.9849,3.9869,257.75,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,836.4 +54,"nC21","629-94-7","HC",54,"C21H44",296.582,0.7911,506.45,10.74,0.861,357.55,296.582,1195.0,"Classic",195171.8,230.829896,-0.086374146,0.00443793006,95.008038,0.040390996,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,876.7,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.8290973024,-1.0021297228,1.0257662,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,876.7 +55,"nC22","629-97-0","HC",55,"C22H46",310.0,0.7937,519.05,11.16,0.777,369.55,310.609,1250.0,"Classic",204930.3,230.829896,-0.086374146,0.00443793006,95.008038,0.040390996,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,917.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.8804058364,-1.0707116583,1.0495153,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,917.0 +56,"nC23","638-67-5","HC",56,"C23H48",324.636,0.7961,528.75,10.82,0.799,381.05,324.636,1305.0,"Classic",214688.8,230.829896,-0.086374146,0.00443793006,95.008038,0.040390996,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,957.3,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.969047395504,-1.194287269788,1.09027182,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,957.3 +57,"nC24","646-31-1","HC",57,"C24H50",338.662,0.7984,533.15,9.32,0.95,391.95,338.662,1360.0,"Classic",224446.6,230.829896,-0.086374146,0.00443793006,95.008038,0.040390996,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,997.6,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,2.0442706956,-1.3041142207,1.1245931,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,997.6 +58,"22-dim-C3","463-82-1","HC",58,"C5H12",72.151,0.6539999,160.63,31.992,0.1964,49.75,72.151,303.0,"Classic",39036.6,-95.012392,1.297291618,-0.00277546262,3.33615878E-6,-1.48039084E-9,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,225.9,10810.0,1000.0,0.00611,256.76,256.76,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,33200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.3543,3.955,225.69,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.67267,-0.17915,0.8146,225.9 +59,"22-dim-C4","75-83-2","HC",59,"C6H14",86.178,0.654,215.63,30.8,0.2339,49.75,86.178,359.0,"Classic",48795.1,25.000198,0.324736526,4.0331214E-4,-6.8532302E-7,2.7993238E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,265.9,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.6008,4.0042,243.51,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.69886,0.1119,-0.06355,265.9 +60,"23-dim-C4","79-29-8","HC",60,"C6H14",86.178,0.667,226.83,31.268,0.2475,58.05,86.178,358.0,"Classic",48795.1,-18.407196,0.618162528,-3.0736858E-4,2.269722E-8,2.560712E-11,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,266.6,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.6853,3.9545,246.07,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.72927,0.01322,0.18875,266.6 +85,"22-DM-C6","74-82-8","HC",85,"C7H16",114.231,0.667,276.65,25.3,0.339,58.05,86.178,358.0,"Classic",0.0,28.699928,0.459115708,5.0432724E-4,-9.3707094E-7,3.6348808E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +86,"E-cy-C5","74-82-8","HC",86,"C7H16",98.188,0.667,296.37,33.977,0.2715,58.05,86.178,358.0,"Classic",57151.1,48.611958,-3.99072E-4,0.00145553198,-1.8702343E-6,7.1965984E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,289.1,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.76425,-0.01317,0.28776,289.1 +87,"25-DM-C6","74-82-8","HC",87,"C7H16",114.231,0.667,280.35,25.6,0.344,58.05,86.178,358.0,"Classic",0.0,-11.365238,0.72568749,-1.4956886E-4,-2.7793702E-7,1.5439098E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +61,"2-m-C5","107-83-5","HC",61,"C6H14",86.178,0.658,224.35,30.102,0.2781,60.25,86.178,367.0,"Classic",48795.1,17.426144,0.385927566,2.5972936E-4,-5.6776306E-7,2.4127228E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,268.8,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.9317,3.8535,235.58,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.76714,0.07053,0.05336,268.8 +62,"3-m-C5","96-14-0","HC",62,"C6H14",86.178,0.669,231.28,31.24,0.2737,63.25,86.178,367.0,"Classic",48795.1,3.599962,0.092642902,6.06922E-5,-1.3402168E-7,5.73666E-11,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,267.4,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.8852,3.8605,240.48,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.81181,-0.42693,1.21385,267.4 +63,"c-C5","287-92-3","HC",63,"C5H8",70.135,0.669,238.61,45.023,0.1943,49.25,70.135,260.0,"Classic",37634.1,41.727966,-0.164068476,0.00148961938,-1.80380544E-6,6.829951E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,203.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01161,5479.0,"no",2.3655,3.7114,265.83,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.65461,0.02574,0.19252,203.0 +64,"default","74-82-8","HC",64,"default",16.043,0.422182073,-82.586,45.389,0.008,-161.55,16.043,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-6.00435,1.1885,-0.83408,-1.22833,0.0,0.0,0.0,0.0,0.0,3.165,154.54,0.3834,3,-26.87,1150.0,0.187,-5.21E-4,-50500.0,2.0,0.0,0.0,0.0,0.0,0,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.303,-6.05E-4,-3.2E-6,207.0,941.0,452.0,0.117,849.15,849.15,-74500.0,186.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.02E7,0.261,-0.147,0.222,0.0,0.1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.562,3.8296,230.75,0.0,0.0,3.165,154.54,0.3834,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +65,"Piperazine","74-82-8","amine",65,"Piperazine",86.137,1.038,364.85,55.3,0.414,146.0,119.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",172.78,-13492.0,-21.91,1.378E-5,2.0,1.7,0.0,0.0,0.0,3.96,481.8,0.0,3,-75.19,12680.0,0.1573,-1.225E-4,57900.0,148.9,0.0,-0.62491,7.71E-4,0.0,0,"solute",0.0,0.0,0.0,0.0,-0.19842,-2.857,2.0373,0.0,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,1.0744775927,0.229022552,-0.421330787,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,17.38710706,1.76274587,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.96,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +66,"Piperazine+","74-82-8","ion",66,"Piperazine+",87.137,1.038,364.84,55.3,0.414,146.0,119.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",172.78,-13492.0,-21.91,1.378E-5,2.0,1.7,0.0,0.0,0.0,7.0,481.8,0.0,3,-75.19,12680.0,0.1573,-1.225E-4,0.0,0.0,0.0,0.0,0.0,0.0,1,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,7.0,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +67,"PZCOO-","74-82-8","ion",67,"PiperazineCarbamate",129.147,1.038,364.84,55.3,0.414,146.0,119.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",172.78,-13492.0,-21.91,1.378E-5,2.0,1.7,0.0,0.0,0.0,5.5,481.8,0.0,3,-75.19,12680.0,0.1573,-1.225E-4,0.0,0.0,0.0,0.0,0.0,0.0,-1,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,5.5,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +68,"H+PZCOO-","74-82-8","ion",68,"PiperazineCarbamate",130.147,1.038,729.68,110.6,0.414,292.0,119.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",172.78,-13492.0,-21.91,1.378E-5,2.0,1.7,0.0,0.0,0.0,5.4,481.8,0.0,3,-75.19,12680.0,0.1573,-1.225E-4,57900.0,148.9,0.0,-0.62491,7.71E-4,0.0,0,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,5.4,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +69,"-OOCPZCOO-","74-82-8","ion",69,"PiperazineCarbamate",172.157,1.038,364.84,55.3,0.414,146.0,119.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",172.78,-13492.0,-21.91,1.378E-5,2.0,1.7,0.0,0.0,0.0,7.0,481.8,0.0,3,-75.19,12680.0,0.1573,-1.225E-4,0.0,0.0,0.0,0.0,0.0,0.0,-2,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,7.0,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +70,"c-hexane","110-82-7","HC",70,"C6H8",84.161,0.783,280.39,40.748,0.2118,80.75,84.161,260.0,"Classic",47392.6,33.54699,-0.036855962,0.00139957876,-1.7272335E-6,6.4400244E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,240.8,6000.0,1000.0,0.053397292,279.7,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,212570.0,9.0838,0.74265,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,43200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.365E-4,5951.0,"no",2.5303,3.8499,278.11,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.68054,-0.06898,0.57648,240.8 +71,"22-DM-C5","590-35-2","HC",71,"C7H16",100.204,0.667,247.25,27.7,0.287,58.05,86.178,358.0,"Classic",0.0,10.93291,0.502681068,2.3387282E-4,-6.335268E-7,2.8550276E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +72,"M-cy-C5","96-37-7","HC",72,"C7H16",84.161,0.667,259.64,37.845,0.2302,100.9,86.178,358.0,"Classic",47392.6,44.721006,-0.068657012,0.00143774002,-1.79964844E-6,6.8698582E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,258.5,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.74952,-0.39012,1.16613,258.5 +73,"24-DM-C5","74-82-8","HC",73,"C7H16",100.204,0.667,246.64,27.368,0.3018,58.05,86.178,358.0,"Classic",0.0,-26.047762,0.814131822,-5.7466368E-4,2.0153136E-7,-2.0785E-11,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.82681,-0.1848,0.7108,207.0 +74,"223-TM-C4","594-82-1","HC",74,"C8H18",100.204,0.667,257.95,29.5,0.25,58.05,86.178,358.0,"Classic",58553.6,-5.911254,0.611594468,-8.372198E-5,-2.5091652E-7,1.3161062E-10,"loglog",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +75,"33-DM-C5","74-82-8","HC",75,"C7H16",100.204,0.667,263.15,29.5,0.269,58.05,86.178,358.0,"Classic",58553.6,-3.99072,0.61037231,-6.15236E-5,-2.9614468E-7,1.5148108E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +76,"2-M-C6","591-76-4","HC",76,"C7H16",100.204,0.667,257.22,27.338,0.3282,58.05,86.178,358.0,"Classic",58552.2,28.699928,0.385545122,4.5278044E-4,-8.210075E-7,3.3995946E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.8684,-0.21384,0.7284,207.0 +77,"23-DM-C5","74-82-8","HC",77,"C7H16",100.204,0.667,264.15,29.1,0.297,58.05,86.178,358.0,"Classic",0.0,-35.866596,0.804030312,-5.3658556E-4,1.8515278E-7,-2.602282E-11,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,,,207.0 +78,"11-DM-cy-C5","74-82-8","HC",78,"C7H16",100.204,0.667,226.75,31.31,0.247,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +79,"3-M-C6","589-34-4","HC",79,"C7H16",100.204,0.667,262.1,28.138,0.3216,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"loglog",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,293.8,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.86124,-0.23903,0.78278,293.8 +80,"cis-13-DM-cy-C5","74-82-8","HC",80,"C7H16",98.188,0.667,277.85,34.0,0.276,58.05,86.178,358.0,"Classic",57150.4,-20.967908,0.503312932,2.2472742E-4,-6.2953608E-7,2.7943354E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +81,"trans-13-DM-cy-C5","74-82-8","HC",81,"C7H16",98.188,0.667,279.85,34.0,0.253,58.05,86.178,358.0,"Classic",57150.4,-20.967908,0.503312932,2.2472742E-4,-6.2953608E-7,2.7943354E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +82,"trans-12-DM-cy-C5","74-82-8","HC",82,"C7H16",98.188,0.667,279.85,34.0,0.253,58.05,86.178,358.0,"Classic",57150.4,-54.5,0.7592,-4.48E-4,1.017E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +83,"224-TM-C5","74-82-8","HC",83,"C7H16",114.231,0.667,270.13,25.7,0.304,58.05,86.178,358.0,"Classic",0.0,3.192576,0.640668526,5.52881E-5,-4.626741E-7,2.1774366E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +84,"113-TM-cy-C5","74-82-8","HC",84,"C7H16",114.231,0.667,270.13,25.7,0.304,58.05,86.178,358.0,"Classic",66908.2,-7.49,0.6301,-2.54E-4,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +88,"24-DM-C6","74-82-8","HC",88,"C7H16",114.231,0.667,280.35,25.6,0.3436,58.05,86.178,358.0,"Classic",0.0,-28.034808,0.90327453,-6.0417838E-4,1.8091264E-7,-8.56342E-12,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.88252,-0.20999,0.80415,207.0 +89,"cis-13-DM-cy-C6","74-82-8","HC",89,"C7H16",114.231,0.667,318.0,29.384,0.2366,58.05,86.178,358.0,"Classic",66908.2,-65.2,0.8839,-4.932E-4,1.02E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.6313,0.68239,-0.76823,207.0 +90,"3-M-C7","589-81-1","HC",90,"C7H16",114.231,0.667,290.52,25.463,0.3716,58.05,86.178,358.0,"Classic",68310.7,-9.22,0.786,-4.4E-4,9.698E-8,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,326.6,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.92772,-0.27605,0.94295,326.6 +91,"3-E-C6","74-82-8","HC",91,"C7H16",114.231,0.667,292.25,26.1,0.362,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +92,"ethylbenzene","100-41-4","HC",92,"C7H16",106.168,0.871,344.02,36.094,0.3036,58.05,86.178,358.0,"Classic",62702.0,37.778816,0.087945492,0.00113436216,-1.60260664E-6,6.555589E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,285.9,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,288600.0,10.872,0.8539,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.82853,-0.18209,0.65157,285.9 +93,"m-Xylene","108-38-3","HC",93,"C7H16",106.17,0.868,343.9,35.412,0.326,139.12,106.167,358.0,"Classic",62702.0,33.272628,0.145802618,8.804526E-4,-1.25017618E-6,4.9950512E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,301.4,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,"1A",0.0,0.0,0.12,0.0,290860.0,10.872,0.8681,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.1861,3.7563,283.98,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.86653,-0.1874,0.49412,301.4 +94,"p-Xylene","106-42-3","HC",94,"C7H16",106.17,0.667,343.08,35.108,0.3259,138.36,106.167,358.0,"Classic",62702.0,34.195482,0.123953426,9.818834E-4,-1.39043336E-6,5.6003104E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,301.4,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,"1A",0.0,0.0,0.12,0.0,293166.3,10.98,0.86256,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.87223,-0.31779,0.80879,301.4 +95,"o-Xylene","95-47-6","HC",95,"C7H16",106.167,0.667,357.22,37.342,0.3127,139.15,106.167,358.0,"Classic",62702.0,27.344746,0.283873216,4.1478546E-4,-6.929719E-7,2.7752132E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,301.4,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,"1A",0.0,0.0,0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.84452,-0.2051,0.61154,301.4 +97,"2-M-C8","3221-61-2","HC",97,"C7H16",100.204,0.667,313.6,22.9,0.4217,58.05,86.178,358.0,"Classic",78069.2,49.168996,0.391082246,8.6357518E-4,-1.38727404E-6,5.6967528E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,359.4,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,359.4 +98,"ethylcyclohexane","1678-91-7","HC",98,"C8H16",100.204,0.667,336.0,30.398,0.2455,58.05,86.178,358.0,"Classic",66908.2,-63.9,0.8894,-5.108E-4,1.103E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.63637,0.72751,-0.81316,207.0 +99,"i-pentane","78-78-4","HC",99,"iC5",72.151,0.0,187.28,33.812,0.2275,27.8,72.151,306.0,"Classic ",39036.6,16.287126,0.317519974,2.0236276E-4,-4.302495E-7,1.799981E-10,"log",72.35,-5010.9,-7.883,8.9795E-6,2.0,0.0,0.0,0.0,0.0,5.784,341.1,0.0,2,-7.811,3140.0,0.0,0.0,-394370.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solute ",0.0,0.0,0.0,0.0,-0.030486678,-4.461903736,4.285718649,-0.384,0.00525,-6.37E-6,225.0,6000.0,1000.0,1.18976E-9,113.25,113.45,-242000.0,189.0,12.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.857887409,-0.267638226,0.458642756,0.0,0.0,0.0,0.342669912,0.851893781,1.921875279,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.34755,1,1.0,-17.0852,0.0,0,2.75073E-5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,5.784,341.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.71582,-0.10058,0.38314,225.0 +100,"H2S","7783-06-4","inert",100,"H2S",34.08,1.1,100.38,89.607,0.0942,-59.65,34.08,98.5,"Classic ",12550.9,35.467524,-0.028583532,1.0966166E-4,-1.1065934E-7,4.057232E-11,"log",-6.95626,1.19695,-3.12614,2.99448,0.0,0.0,0.0,0.0,0.0,3.62,195.2,0.0,2,-7.811,3140.0,0.0,0.0,-394000.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",0.0,0.0,0.0,0.059565,0.01857,0.0,-2.078,-0.384,0.00525,-6.37E-6,80.1,6000.0,1000.0,0.232,187.66,187.66,-242000.0,189.0,53.0,-0.00784,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.5507,0.4534,-0.5841,0.0,0.0,0.0,0.0,0.0,0.0,2,"2A",0.0,0.0,0.001160489,5000.0,44505.0,2.85,0.60265,0.0,0.0,0.0,0.0,1,4.43681,-829.439,-25.412,0,0.0,0.009928,2999.0,0.01613,3737.0,2.684E-4,4242.0,0.8553,2325.0,"yes",1.6941,3.0214,226.79,0.0,0.0,3.941,195.2,0.0,1.0,0,4119.56,0.004,3141.6,0.295855,2936.13,0.00124496,2778.0,0.339898,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.50909,-0.002814,0.36215,80.1 +101,"S8","74-82-8","other",101,"S8",256.48,0.99,885.0,63.0,0.2059,444.6,256.48,449.5,"Classic",68312.1,89.990736,0.041428662,0.00147581814,-1.92361018E-6,7.465972E-10,"log",5.2012,1936.281,-20.143,1000.0,0.0,0.0,0.0,0.0,0.0,6.0,454.0,0.3834,3,-24.71,4210.0,0.0453,-3.38E-5,-50000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,351.0,12860.0,1000.0,3.9662E-5,392.75,392.75,0.0,0.0,12.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.99,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,8.046,-4600.0,-144.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,1.2,132.0,0.3834,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,351.0 +102,"AceticAcid","74-82-8","acid",102,"Hac",60.053,0.99,319.55,57.86,0.462,117.89,60.05,171.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",4.68206,1642.54,-39.764,0.0,0.0,0.0,0.0,0.0,0.0,3.82,132.0,0.3834,3,-24.0,1122.0,0.2,0.0,-50000.0,6.2,0.0,0.0,0.0,0.0,0,"solute",0.0,0.0,0.0,0.0,0.1032,0.00365,-2.064,0.0,0.0,0.0,0.0,0.0,1000.0,3.9662E-5,250.0,250.0,0.0,0.0,12.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.99,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,8.046,-4600.0,-144.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.82,132.0,0.3834,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +103,"Ac-","74-82-8","ion",103,"Ac-",59.053,0.99,319.55,57.86,0.462,117.89,59.053,171.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",4.68206,1642.54,-39.764,0.0,0.0,0.0,0.0,0.0,0.0,3.82,132.0,0.3834,3,-24.0,1122.0,0.2,0.0,-50000.0,0.0,0.0,0.0,0.0,0.0,-1,"solute",0.0,0.0,0.0,0.0,0.1032,0.00365,-2.064,0.0,0.0,0.0,0.0,0.0,1000.0,3.9662E-5,250.0,250.0,0.0,0.0,12.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.99,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,8.046,-4600.0,-144.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.82,132.0,0.3834,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +104,"neon","74-82-8","inert",104,"Ne",20.18,0.65,-228.75,26.652,-0.376,-248.7,18.05,25.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",29.755,-271.06,-2.6081,5.27E-4,2.0,1.8,0.076,0.0,0.0,0.0,0.0,0.0,2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"solute",0.0,0.0,0.0,0.0,0.004662711,-207.8880732,167.1564974,0.0,0.0,0.0,207.0,6000.0,1000.0,0.438,24.56,24.45,-242000.0,189.0,74.691,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.484453999,-0.508813922,0.722394513,0.0,0.0,0.0,0.088380472,0.940022294,3.401190177,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.75641,1,1.0,-1.503,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +105,"acetone","67-64-1","other",105,"Acetone",58.08,0.9,234.95,48.0,0.559,64.55,32.042,99.0,"Classic ",0.0,42.617564,0.012562454,4.7647534E-4,-5.9669578E-7,2.2680592E-10,"pow10",7.6313,1566.69,273.419,0.0,0.0,1.7,0.215,0.0,0.0,3.626,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,57900.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",,,,,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,1.4371,-0.79942,0.3278,0.0,0.0,0.0,0.0,0.0,0.0,2,"2B",0.0,0.0,0.0154,24476.0,40220.0,3.12,0.4623,47052.0,3.3,0.9037,0.0449,1,17.38710706,-7582.40622,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +106,"HS-","74-82-8","ion",106,"HS-",33.08,1.1,100.05,89.37,0.1,-59.65,34.08,98.5,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-6.95626,1.19695,-3.12614,2.99448,0.0,0.0,0.0,0.0,0.0,3.6,195.2,0.0,2,-7.811,3140.0,0.0,0.0,-394000.0,2.0,0.0,0.0,0.0,0.0,-1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.232,187.66,187.66,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.8252,0.2515,-1.7039,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0011604894,5000.0,34369.093554,2.7063578765,0.8047829596,0.0,0.0,0.0,0.0,1,4.43681,-829.439,-25.412,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.6,195.2,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +107,"S--","74-82-8","ion",107,"S--",32.08,1.1,100.05,89.37,0.1,-59.65,34.08,98.5,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-6.95626,1.19695,-3.12614,2.99448,0.0,0.0,0.0,0.0,0.0,3.5,195.2,0.0,2,-7.811,3140.0,0.0,0.0,-394000.0,2.0,0.0,0.0,0.0,0.0,-2,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.232,187.66,187.66,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.8252,0.2515,-1.7039,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,4.43681,-829.439,-25.412,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.5,195.2,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +108,"ethanol","64-17-5","alcohol",108,"CH4O ",46.06922,0.797,240.77,61.4,0.644,64.55,32.042,99.0,"Classic ",20891.5,36.548344,0.005221192,4.6109444E-4,-5.8397536E-7,2.232309E-10,"pow10",5.33675,1648.22,230.918,0.0,0.0,1.7,0.215,0.0,0.0,3.626,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,57900.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,0.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,1.4371,-0.79942,0.3278,0.0,0.0,0.0,0.0,0.0,0.0,2,"2B",0.0,0.0,0.008,21532.01,86716.09,4.908,0.7369,47052.0,3.3,0.9037,0.0449,1,17.38710706,-7582.40622,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.3827,3.1771,198.24,0.03238,22060.3676,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +109,"DEA","74-82-8","amine",109,"DEA",119.1632,1.038,240.75,61.4,0.644,140.0,119.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.0,0.0,0.0,4.5,481.8,0.0,3,-75.19,12680.0,0.1573,-1.225E-4,57900.0,-5.95,9276.38,-6.21E-6,0.0,0.0,0,"solvent ",0.0,0.0,0.0,0.0,0.07598,-1.3555,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4,"0",0.0,0.0,0.054120713,12000.0,258457.0977,10.75100889,1.364219207,376276.884,10.78358585,1.258298307,0.0,1,17.38710706,1.76274587,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,4.5,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +110,"DEA+","74-82-8","ion",110,"CH4O ",120.1632,1.038,403.85,38.76,1.242,64.55,119.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.0,0.0,0.0,4.4,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,0.0,0.0,0.0,0.0,0.0,0.0,1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,4.4,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +111,"DEACOO-","74-82-8","ion",111,"PiperazineCarbamate",121.0,1.038,364.85,68.7,0.8,140.0,119.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.0,0.0,0.0,6.0,481.8,0.0,3,-75.19,12680.0,0.1573,-1.225E-4,57900.0,8.16976,8989.3,0.0,0.0,0.0,-1,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4,"0",0.0,0.0,0.054120713,12000.0,258457.0977,10.75100889,1.364219207,376276.884,10.78358585,1.258298307,0.0,1,17.38710706,1.76274587,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,6.0,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +112,"Piperazine++","74-82-8","ion",112,"Piperazine++",88.137,1.038,364.85,68.7,0.8,140.0,119.16,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.0,0.0,0.0,3.0,481.8,0.0,3,-75.19,12680.0,0.1573,-1.225E-4,57900.0,8.16976,8989.3,0.0,0.0,0.0,2,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4,"0",0.0,0.0,0.054120713,12000.0,258457.0977,10.75100889,1.364219207,376276.884,10.78358585,1.258298307,0.0,1,17.38710706,1.76274587,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.0,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +113,"CaCO3","74-82-8","other",113,"CaCO3",124.0,0.797,400.0,220.0,0.3,64.55,32.042,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.0,0.0,0.0,6.2,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,6.2,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +114,"water","7732-18-5","water",114,"H2O",18.015,0.999,374.15,220.89,0.344,100.0,18.015,56.0,"Classic ",1374.6,36.54003,-0.034802404,1.168117E-4,-1.3003096E-7,5.254448E-11,"pow10",5.11564,1687.537,230.17,-1.23303,0.0,1.8,0.076,0.235662374,0.0,2.52,809.1,0.0,3,-27.9527578282,4665.2259299302,0.0523233421,-3.83562E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0547834254,0.0946785127,-2.2673294034,-0.384,0.00525,-6.37E-6,52.8786226,6010.0,1000.0,0.00611,273.16,273.15,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,5.459,0.30542,647.13,0.081,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.087,-0.638,0.635,0.0,0.0,0.0,0.168272437065587,0.908482584277346,5.24042737227478,4,"4C",0.0,0.0,0.0692,16655.0,12277.0,1.4515,0.67359,13855.59696,1.456360879,0.664155324,0.046473789,1,17.38710706,-6141.762746,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",1.0656,3.0007,366.51,0.034868,20790.8198,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-262.49,140.52,0.0,0.0,0.0,276370.0,-2090.1,8.125,-0.014116,9.3701E-6,0.923656,-0.37937,0.442429,52.4198672663 +115,"F-","74-82-8","ion",115,"F-",19.0,1.0,444.15,290.89,0.344,64.55,19.0,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,2.72,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-157000.0,0.0,0.0,0.0,0.0,0.0,-1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.72,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +116,"Fe++","74-82-8","ion",116,"Fe++",55.85,0.797,444.15,290.89,0.344,55.85,40.08,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,6.0,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,2,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,6.0,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +117,"Rb+","74-82-8","ion",117,"Rb+",85.47,0.797,444.15,290.89,0.344,64.55,85.47,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,2.36,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,1.038,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.36,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +118,"Pb++","74-82-8","ion",118,"Pb++",207.2,0.797,444.15,290.89,0.344,64.55,207.2,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,5.66,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,2,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,1.038,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,5.66,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +119,"NO3-","74-82-8","ion",119,"NO3-",62.0,0.797,444.15,290.89,0.344,62.0,126.9,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.12,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,-1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.12,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +120,"ClO4-","74-82-8","ion",120,"ClO4-",99.45,0.797,444.15,290.89,0.344,62.0,99.45,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.64,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,-1,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.64,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +121,"SO4--","74-82-8","ion",121,"SO4--",96.07,0.797,444.15,290.89,0.344,62.0,96.07,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.41,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,-2,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.41,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +123,"helium","7440-59-7","inert",123,"helium",4.003,0.0,-267.95999994278,2.27,-0.39003199338913,-268.940009975433,39.948,74.9,"Classic ",0.0,20.785,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +124,"c-C7","291-64-5","HC",124,"C7H14",98.189,0.813,331.15,38.402,0.243,118.45,98.189,353.0,"Classic",57151.1,-76.2,0.7868,-4.204E-4,7.562E-8,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,289.1,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.6637,3.9993,283.33,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.73833,-0.22055,0.87688,289.1 +125,"c-C8","292-64-8","HC",125,"C8H16",112.216,0.837,366.85,34.8,0.2904,148.85,112.216,410.0,"Classic",66909.6,35.218104,0.109071366,0.00135626282,-1.75192608E-6,6.6403918E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,321.9,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.8256,4.1039,294.04,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.70573,0.27206,-0.18774,321.9 +126,"CO","630-08-0","inert",126,"CO",28.011,1.1,-140.200994873047,34.9875,0.0930000022053719,-191.450399780273,44.01,94.0,"Classic ",0.0,32.524368,-0.032532682,9.827148E-5,-1.0824828E-7,4.28171E-11,"log",140.54,-4735.0,-21.268,0.040909,1.0,0.0,0.0,0.0,0.0,2.34,168.77,0.6805,2,-7.811,3140.0,0.0,0.0,-394000.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",94.4914,-6789.04,-11.4519,-0.010454,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,5.204412066,216.58,216.592,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.88173893,-0.856255022,3.094939327,0.0,0.0,0.0,1.413601068,-0.605965449,1.101814948,1,"1A",0.0,0.0,0.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,6.81228,-1301.679,-3.494,26100,3.76872E-5,4.856E-11,7196.9,0.09862,2343.9,6.082E-5,3417.9,0.1683,2317.9,"yes",1.3097,3.2507,92.15,0.0,0.0,2.34,168.77,0.6805,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +127,"methanolPVTsim","74-82-8","alcohol",127,"CH4O ",32.042,0.797,239.45,80.96,0.559,64.55,32.042,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.2,0.0,3.626,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,57900.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,0.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,1.4371,-0.79942,0.3278,0.0,0.0,0.0,0.0,0.0,0.0,2,"2B",0.0,0.0,0.0161,24591.0,40531.0,3.0978,0.43102,47052.0,3.3,0.9037,0.0449,1,17.38710706,-7582.40622,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",1.5255,3.23,188.9,0.035176,24106.443,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +128,"MEGPVTsim18","74-82-8","glycol",128,"C2H6O2 ",62.069,1.117,446.85,90.0,0.5347,197.35,62.069,186.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"exp",13.6299,6022.18,-28.25,0.0,0.0,2.3082,0.215,0.2488,0.0,3.626,481.8,0.0,2,-7.811,3140.0,0.0,0.0,57900.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.654009012,-3.955117195,3.671191916,0.5173389545,-7.981692E-4,6.48E-8,0.0,9960.0,904.0,2.42E-6,260.0,260.0,-388000.0,324.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,8.29E7,0.427,0.0,0.0,0.0,1.117,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4,"4C",0.0,0.0,0.0141,19752.0,108190.0,5.14,0.6744,108190.0,5.14,0.6744,0.0514,1,17.090887,-7800.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +129,"MEGPVTsim19","74-82-8","glycol",129,"C2H6O2 ",62.069,1.117,446.85,90.0,0.5347,197.35,62.069,186.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"exp",13.6299,6022.18,-28.25,0.0,0.0,2.3082,0.215,0.2488,0.0,3.626,481.8,0.0,2,-7.811,3140.0,0.0,0.0,57900.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.654009012,-3.955117195,3.671191916,0.5173389545,-7.981692E-4,6.48E-8,0.0,9960.0,904.0,2.42E-6,260.0,260.0,-388000.0,324.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,8.29E7,0.427,0.0,0.0,0.0,1.117,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4,"4C",0.0,0.0,0.0141,19752.0,108190.0,5.14,0.6744,108190.0,5.14,0.6744,0.0514,1,17.090887,-7800.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +130,"propanePVTsim","74-82-8","HC",130,"CH4O ",44.097,0.0,96.65,42.46,0.152,-42.05,44.097,203.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",59.078,-3492.6,-6.0669,1.0919E-5,2.0,0.0,0.0,0.0,0.0,3.3205773626,205.8859461427,0.6623796853,3,-7.764,722.0,0.0238,-4.67E-5,-24400.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",0.0,0.0,0.0,0.0,-0.015069991,-4.344143673,4.007325591,-0.384,0.00525,-6.37E-6,151.9,6000.0,1000.0,1.71089E-9,85.47,85.5,-103840.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.721211486,-0.099216642,0.181829227,0.0,0.0,0.0,0.435825883,0.866132179,1.395432818,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.24869,1,1.0,-11.1254,0.0,28500,2.49734E-5,0.0,0.0,0.0,0.0,0.0,0.0,0.008264,4521.0,"yes",2.002,3.6184,208.11,0.0,0.0,3.3205773626,205.8859461427,0.6623796853,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,151.9 +131,"ethanolPVTsim","74-82-8","alcohol",131,"CH4O ",46.06922,0.797,240.75,61.4,0.644,64.55,32.042,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.626,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,57900.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,0.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,1.4371,-0.79942,0.3278,0.0,0.0,0.0,0.0,0.0,0.0,2,"2B",0.0,0.0,0.008,21500.0,85164.0,4.91,0.7502,47052.0,3.3,0.9037,0.0449,1,17.38710706,-7582.40622,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.3827,3.1771,198.24,0.03238,22060.3676,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +132,"nbutanePVTsim","74-82-8","HC",132,"C4H10 ",58.124,0.0,152.05,37.99688,0.193,-0.45,58.124,255.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",66.343,-4363.2,-7.046,9.4509E-6,2.0,0.0,0.0,0.0,0.0,2.9125,209.0,0.9379,2,-7.811,3140.0,0.0,0.0,-394370.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solute ",0.0,0.0,0.0,0.0,-0.018486492,-4.921574519,4.858186966,-0.384,0.00525,-6.37E-6,191.7,6000.0,1000.0,6.76236E-6,134.86,138.15,-126150.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.808063555,-0.212724945,0.362961475,0.0,0.0,0.0,0.331800583,0.854692733,1.865828858,0,"0",0.0,0.0,0.008,21532.01,0.0,0.0,0.0,0.0,0.0,0.0,5.76447,1,1.0,-13.4385,0.0,35900,2.57682E-5,0.0,0.0,0.0,0.0,0.0,0.0,0.001262,4580.0,"yes",2.3316,3.7086,222.86,0.0,0.0,2.9125,209.0,0.9379,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,191.7 +133,"mercury","7439-97-6","other",133,"Hg",200.6,13.5,1462.0,1608.0,-0.1645,356.6,200.6,56.35,"Classic",0.0,20.8,0.0,0.0,0.0,0.0,"log",-6.0,1.0,-0.3,-1.223,0.0,0.0,0.0,0.0,0.0,1.2,132.0,0.3834,3,-24.0,1122.0,0.2,0.0,-50000.0,2.0,0.0,0.0,0.0,0.0,0,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1000.0,3.9662E-5,250.0,250.0,0.0,0.0,12.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.99,0.0,0.0,0.0,0.0,0.0,0.0,0.09245,0.9784,2.244,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,8.046,-4600.0,-144.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,1.2,132.0,0.3834,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1491,-0.1652,0.1447,0.0 +134,"propylbenzene","103-65-1","HC",134,"C9H12",106.168,0.871,365.23,36.09,0.304,58.05,86.178,358.0,"Classic",0.0,39.566326,0.199170184,9.8595726E-4,-1.44605402E-6,5.8730096E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +136,"NaCl","74-82-8","NaCl",136,"H2O ",29.2215,0.999,375.15,220.89,0.344,100.0,58.443,56.0,"Classic ",29500.0,-2290.0,12.78,-0.02144,0.0,0.0,"log10",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.235662374,0.0,2.52,809.1,0.0,3,-57.71,7647.0,0.1442,-1.357E-4,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solute",0.0,0.0,0.0,0.0,0.0547834254,0.0946785127,-2.2673294034,-0.384,0.00525,-6.37E-6,207.0,6010.0,1000.0,0.00611,273.16,273.15,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.087,-0.638,0.635,0.0,0.0,0.0,0.0,0.0,0.0,4,"4C",0.0,0.0,0.0692,166550.0,12277.0,1.4515,0.67359,13855.59696,1.456360879,0.664155324,0.046473789,1,17.38710706,-6141.762746,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",1.0656,3.0007,366.51,0.034868,20790.8198,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +137,"CaCl2","74-82-8","CaCl2",137,"H2O ",110.9848,0.999,375.15,220.89,0.344,100.0,110.9848,56.0,"Classic ",66053.9,-1550.0,7.22,-0.001958,0.0,0.0,"log10",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.235662374,0.0,2.52,809.1,0.0,3,-57.71,7647.0,0.1442,-1.357E-4,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solute",0.0,0.0,0.0,0.0,0.0547834254,0.0946785127,-2.2673294034,-0.384,0.00525,-6.37E-6,207.0,6010.0,1000.0,0.00611,273.16,273.15,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.087,-0.638,0.635,0.0,0.0,0.0,0.0,0.0,0.0,4,"4C",0.0,0.0,0.0692,166550.0,12277.0,1.4515,0.67359,13855.59696,1.456360879,0.664155324,0.046473789,1,17.38710706,-6141.762746,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",1.0656,3.0007,366.51,0.034868,20790.8198,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +139,"SF6","74-82-8","inert",139,"SF6",146.0,1.1,45.85,37.6,0.21,-68.25,34.08,98.5,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-6.95626,1.19695,-3.12614,2.99448,0.0,0.0,0.0,0.0,0.0,3.62,195.2,0.0,2,-7.811,3140.0,0.0,0.0,-394000.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",0.0,0.0,0.0,0.059565,0.01857,0.0,-2.078,-0.384,0.00525,-6.37E-6,80.1,6000.0,1000.0,0.232,187.66,187.66,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.8252,0.2515,-1.7039,0.0,0.0,0.0,0.0,0.0,0.0,2,"2A",0.0,0.0,0.001160489,5000.0,44505.0,2.85,0.60265,0.0,0.0,0.0,0.0,1,4.43681,-829.439,-25.412,0,0.0,0.009928,2999.0,0.01613,3737.0,2.684E-4,4242.0,0.8553,2325.0,"yes",1.6941,3.0214,226.79,0.0,0.0,3.941,195.2,0.0,1.0,0,4119.56,0.004,3141.6,0.295855,2936.13,0.00124496,2778.0,0.339898,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,80.1 +140,"R12","74-82-8","inert",140,"SF6",121.0,1.1,111.85,41.4,0.176,-30.15,34.08,98.5,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-6.95626,1.19695,-3.12614,2.99448,0.0,0.0,0.0,0.0,0.0,3.62,195.2,0.0,2,-7.811,3140.0,0.0,0.0,-394000.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",0.0,0.0,0.0,0.059565,0.01857,0.0,-2.078,-0.384,0.00525,-6.37E-6,80.1,6000.0,1000.0,0.232,187.66,187.66,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.8252,0.2515,-1.7039,0.0,0.0,0.0,0.0,0.0,0.0,2,"2A",0.0,0.0,0.001160489,5000.0,44505.0,2.85,0.60265,0.0,0.0,0.0,0.0,1,4.43681,-829.439,-25.412,0,0.0,0.009928,2999.0,0.01613,3737.0,2.684E-4,4242.0,0.8553,2325.0,"yes",1.6941,3.0214,226.79,0.0,0.0,3.941,195.2,0.0,1.0,0,4119.56,0.004,3141.6,0.295855,2936.13,0.00124496,2778.0,0.339898,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,80.1 +141,"R134a","74-82-8","inert",141,"SF6",102.0,1.1,100.85,40.7,0.332,-26.55,34.08,98.5,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-6.95626,1.19695,-3.12614,2.99448,0.0,0.0,0.0,0.0,0.0,3.62,195.2,0.0,2,-7.811,3140.0,0.0,0.0,-394000.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",0.0,0.0,0.0,0.059565,0.01857,0.0,-2.078,-0.384,0.00525,-6.37E-6,80.1,6000.0,1000.0,0.232,187.66,187.66,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.8252,0.2515,-1.7039,0.0,0.0,0.0,0.0,0.0,0.0,2,"2A",0.0,0.0,0.001160489,5000.0,44505.0,2.85,0.60265,0.0,0.0,0.0,0.0,1,4.43681,-829.439,-25.412,0,0.0,0.009928,2999.0,0.01613,3737.0,2.684E-4,4242.0,0.8553,2325.0,"yes",1.6941,3.0214,226.79,0.0,0.0,3.941,195.2,0.0,1.0,0,4119.56,0.004,3141.6,0.295855,2936.13,0.00124496,2778.0,0.339898,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,80.1 +142,"COS","74-82-8","inert",142,"COS",60.0751,1.1,105.65,63.49,0.0970119,-191.5,44.01,94.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",140.54,-4735.0,-21.268,0.040909,1.0,0.0,0.0,0.0,0.0,2.34,168.77,0.6805,2,-7.811,3140.0,0.0,0.0,-394000.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",94.4914,-6789.04,-11.4519,-0.010454,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,78.0,9018.9693,1000.0,5.185,216.58,216.592,-393500.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.1,0.88173893,-0.856255022,3.094939327,0.0,0.0,0.0,1.413601068,-0.605965449,1.101814948,2,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,6.81228,-1301.679,-3.494,26100,3.76872E-5,4.856E-11,7470.0,0.09862,2617.0,6.082E-5,3691.0,0.1683,2591.0,"yes",1.3097,3.2507,92.15,0.0,0.0,3.03720716,170.1623828321,0.68463388,1.0,0,2119.56,7.58596E-4,2500.0,0.231198,2419.56,0.00724496,2330.0,0.139898,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,78.0 +143,"2-M-C7","592-27-8","HC",143,"C8H18",114.23,0.422182073,286.49,24.845,0.3769,117.7,16.043,99.0,"Classic ",68310.7,43.706698,0.342437032,8.0970046E-4,-1.30463288E-6,5.462298E-10,"log",39.205,-1324.4,-3.4366,3.1019E-5,2.0,0.0,0.0,0.0,0.0,2.52,155.8090060223,0.4069986258,3,-26.87,1150.0,0.187,-5.21E-4,-50500.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",900.0,0.0,0.0,0.0,0.0,0.0,0.0,0.303,-6.05E-4,-3.2E-6,77.3,941.0,452.0,0.116656057,90.69,90.65,-74520.0,186.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.02E7,0.261,-0.147,0.222,0.0,0.1,0.5857,-0.7206,1.2899,0.0,0.0,0.0,0.122841598,0.914470789,2.741978611,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.18626,1,1.0,-6.68082,0.0,9700,1.5293E-5,0.04792,1594.0,0.01244,2952.0,0.002317,2777.0,1.076,1323.0,"yes",1.0,3.703900119,150.029998779297,0.0,0.0,3.1907109417,155.8090060223,0.4069986258,1.0,0,900.0,6.21E-4,2760.0,0.421,1963.1,0.00404868,2636.75,0.29527,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.9327,-0.2154,0.7747,77.3 +144,"M-cy-C6","108-87-2","HC",144,"C7H14",98.19,0.422182073,299.04,34.714,0.235,100.9,16.043,99.0,"Classic ",57151.1,26.172472,0.153293532,0.00113269936,-1.56245002E-6,6.1224296E-10,"log",39.205,-1324.4,-3.4366,3.1019E-5,2.0,0.0,0.0,0.0,0.0,2.52,155.8090060223,0.4069986258,3,-26.87,1150.0,0.187,-5.21E-4,-50500.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",900.0,0.0,0.0,0.0,0.0,0.0,0.0,0.303,-6.05E-4,-3.2E-6,77.3,941.0,452.0,0.116656057,90.69,90.65,-74520.0,186.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.02E7,0.261,-0.147,0.222,0.0,0.1,0.5857,-0.7206,1.2899,0.0,0.0,0.0,0.122841598,0.914470789,2.741978611,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.18626,1,1.0,-6.68082,0.0,9700,1.5293E-5,0.04792,1594.0,0.01244,2952.0,0.002317,2777.0,1.076,1323.0,"yes",1.0,3.703900119,150.029998779297,0.0,0.0,3.1907109417,155.8090060223,0.4069986258,1.0,0,900.0,6.21E-4,2760.0,0.421,1963.1,0.00404868,2636.75,0.29527,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.71619,-0.02043,0.33964,77.3 +145,"i-p-cy-C5","3875-51-2","HC",145,"C8H16",112.22,0.422182073,320.1,30.408,0.3029,126.4,16.043,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",39.205,-1324.4,-3.4366,3.1019E-5,2.0,0.0,0.0,0.0,0.0,2.52,155.8090060223,0.4069986258,3,-26.87,1150.0,0.187,-5.21E-4,-50500.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",900.0,0.0,0.0,0.0,0.0,0.0,0.0,0.303,-6.05E-4,-3.2E-6,77.3,941.0,452.0,0.116656057,90.69,90.65,-74520.0,186.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.02E7,0.261,-0.147,0.222,0.0,0.1,0.5857,-0.7206,1.2899,0.0,0.0,0.0,0.122841598,0.914470789,2.741978611,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.18626,1,1.0,-6.68082,0.0,9700,1.5293E-5,0.04792,1594.0,0.01244,2952.0,0.002317,2777.0,1.076,1323.0,"yes",1.0,3.703900119,150.029998779297,0.0,0.0,3.1907109417,155.8090060223,0.4069986258,1.0,0,900.0,6.21E-4,2760.0,0.421,1963.1,0.00404868,2636.75,0.29527,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.61778,0.84354,-1.06637,77.3 +146,"cis-12-DM-cy-C6","2207-01-4","HC",146,"C",112.22,0.422182073,333.0,29.384,0.2324,129.7,16.043,99.0,"Classic ",66909.6,-68.4,0.8973,-5.137E-4,1.099E-7,0.0,"log",39.205,-1324.4,-3.4366,3.1019E-5,2.0,0.0,0.0,0.0,0.0,2.52,155.8090060223,0.4069986258,3,-26.87,1150.0,0.187,-5.21E-4,-50500.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",900.0,0.0,0.0,0.0,0.0,0.0,0.0,0.303,-6.05E-4,-3.2E-6,77.3,941.0,452.0,0.116656057,90.69,90.65,-74520.0,186.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.02E7,0.261,-0.147,0.222,0.0,0.1,0.5857,-0.7206,1.2899,0.0,0.0,0.0,0.122841598,0.914470789,2.741978611,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.18626,1,1.0,-6.68082,0.0,9700,1.5293E-5,0.04792,1594.0,0.01244,2952.0,0.002317,2777.0,1.076,1323.0,"yes",1.0,3.703900119,150.029998779297,0.0,0.0,3.1907109417,155.8090060223,0.4069986258,1.0,0,900.0,6.21E-4,2760.0,0.421,1963.1,0.00404868,2636.75,0.29527,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.62882,0.70114,-0.78437,77.3 +147,"234-TM-C5","565-75-3","HC",147,"C8H18",114.23,0.422182073,293.15,27.3,0.3161,113.5,16.043,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",39.205,-1324.4,-3.4366,3.1019E-5,2.0,0.0,0.0,0.0,0.0,2.52,155.8090060223,0.4069986258,3,-26.87,1150.0,0.187,-5.21E-4,-50500.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",900.0,0.0,0.0,0.0,0.0,0.0,0.0,0.303,-6.05E-4,-3.2E-6,77.3,941.0,452.0,0.116656057,90.69,90.65,-74520.0,186.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.02E7,0.261,-0.147,0.222,0.0,0.1,0.5857,-0.7206,1.2899,0.0,0.0,0.0,0.122841598,0.914470789,2.741978611,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.18626,1,1.0,-6.68082,0.0,9700,1.5293E-5,0.04792,1594.0,0.01244,2952.0,0.002317,2777.0,1.076,1323.0,"yes",1.0,3.703900119,150.029998779297,0.0,0.0,3.1907109417,155.8090060223,0.4069986258,1.0,0,900.0,6.21E-4,2760.0,0.421,1963.1,0.00404868,2636.75,0.29527,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.85119,-0.24212,0.78234,77.3 +148,"1.2-DM-cyC5","74-82-8","HC",148,"C",98.0,0.871,280.0,34.45,0.2698,58.05,86.178,358.0,"Classic",57150.4,-54.5,0.7592,-4.48E-4,1.017E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.79536,-0.29923,0.78021,207.0 +149,"1.3-dDM-cyC5","74-82-8","HC",149,"C",98.0,0.871,283.32,34.37,0.271,58.05,86.178,358.0,"Classic",57150.4,-5.75,0.553,-2.22E-4,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.79817,-0.32005,0.80553,207.0 +150,"1.cis-2.trans-4-TMcyC5","4850-28-6","HC",150,"C",112.0,0.871,309.06,28.54,0.265,116.7,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.63403,0.76147,-0.91274,207.0 +151,"2.3-DM-C6","584-94-1","HC",151,"C",114.23,0.871,290.25,26.3,0.3472,115.6,86.178,358.0,"Classic",0.0,-29.880516,0.839572662,-4.057232E-4,-2.843388E-8,6.559746E-11,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.89621,-0.27464,0.89089,207.0 +152,"3-M-C8","2216-33-3","HC",152,"C",106.168,0.871,365.23,36.09,0.304,144.2,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +153,"2.2-DM-C7","1071-26-7","HC",153,"C",128.26,0.871,303.65,23.5,0.3899,132.7,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +154,"2.6-DM-C7","1072-05-5","HC",154,"C",128.26,0.871,305.85,23.0,0.3927,135.2,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +155,"1.1.3-TM-cy-C6","3073-66-3","HC",155,"C",126.24,0.871,338.91,28.75,0.267,136.6,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +156,"1.2.3-TMcyC6","2","HC",156,"C",126.0,0.871,348.16,27.4,0.29,142.0,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +157,"4-M-C8","2216-34-4","HC",157,"C",128.26,0.871,314.5,23.406,0.413,142.4,86.178,358.0,"Classic",78069.2,12.3,0.7551,-2.9E-4,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +158,"o-E-toluene","74-82-8","HC",158,"C",120.0,0.871,378.0,30.397,0.2932,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +159,"1.2.3-TM-Benzene","526-73-8","HC",159,"CH4",120.19,0.871,391.38,34.54,0.3664,176.1,86.178,358.0,"Classic",72460.5,33.605188,0.258997728,8.467809E-4,-1.35202268E-6,5.7549508E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.91646,-0.12804,0.26993,207.0 +160,"cy-C9","293-55-0","HC",160,"C",126.24,0.871,408.89,33.44,0.268,178.4,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +161,"2-E-p-xylene","1758-88-9","HC",161,"C",134.0,0.871,389.85,28.8,0.4114,186.8,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +162,"nC5-Benzene","74-82-8","HC",162,"C",148.25,0.871,406.8,26.06,0.4376,478.61,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +163,"nC6-Benzene","74-82-8","HC",163,"C",162.0,0.871,424.35,23.8,0.48,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +164,"nC7-Benzene","74-82-8","HC",164,"C",176.0,0.871,440.85,21.8,0.5287,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +165,"nC10-cy-C5","74-82-8","HC",165,"C",210.4,0.871,459.23,17.09,0.6314,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.30127,-0.29103,1.09992,207.0 +166,"nC8-Benzene","74-82-8","HC",166,"C",190.0,0.871,455.0,20.34,0.5909,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +167,"nC9-Benzene","74-82-8","HC",167,"C",204.0,0.871,467.7,18.96,0.6523,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +168,"3-M-4.4-DE-heptane","3","HC",168,"C",170.3,0.871,380.36,18.22,0.461,204.0,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +169,"nC12-cy-C5","74-82-8","HC",169,"C",238.46,0.871,485.74,15.198,0.7163,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +170,"nC10-Benzene","74-82-8","HC",170,"C",218.0,0.871,479.85,17.7,0.6812,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +171,"nC14-cy-C5","74-82-8","HC",171,"C",266.51,0.871,509.19,13.685,0.7949,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +172,"nC17-cy-C5","74-82-8","HC",172,"C",308.59,0.871,538.01,11.906,0.906,58.05,86.178,358.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +173,"nC27","593-49-7","HC",173,"C",380.0,0.871,563.15,9.75,0.8813,422.1,86.178,358.0,"Classic",253722.1,-22.4,2.57,-0.001448,3.165E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,2.15113610938143,-1.46777049825312,1.17294244791581,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +174,"nC34","1","HC",174,"C",478.0,0.871,587.5,5.43,1.435,482.0,86.178,358.0,"Classic",322031.5,-28.4,3.233,-0.001827,4.006E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,2.67504251,-2.3917921575,1.4034535,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +175,"nC39","74-82-8","HC",175,"C",548.0,0.871,638.85,8.21,1.0889,58.05,86.178,358.0,"Classic",370824.0,-32.7,3.706,-0.002098,4.607E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,2.80662923078573,-2.65360568316249,1.45975656119742,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +176,"1.2.4-TMcyC6","74-82-8","HC",176,"C",126.0,0.871,340.6,26.75,0.2619,58.05,86.178,358.0,"Classic",0.0,32.239,0.00191,1.06E-5,-3.6E-9,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +177,"nC30","638-68-6","HC",177,"C30H62",422.8,0.871,589.9,8.68,1.307,449.7,86.178,358.0,"Classic",282997.5,-25.0,2.854,-0.00161,3.526E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,2.434590893936,-1.943459444892,1.29895746,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +178,"1-propanol","71-23-8","alcohol",178,"CH4O ",60.096,0.803,263.63,51.7497,0.6218,64.55,60.096,99.0,"Classic ",20891.5,36.548344,0.005221192,4.6109444E-4,-5.8397536E-7,2.232309E-10,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.626,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,57900.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,0.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,1.4371,-0.79942,0.3278,0.0,0.0,0.0,0.0,0.0,0.0,2,"2B",0.0,0.0,0.0081,21000.00004,119102.0047,6.411,0.91709,47052.0,3.3,0.9037,0.0449,1,17.38710706,-7582.40622,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.3827,3.1771,198.24,0.03238,22060.3676,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +179,"i-propanol","67-63-0","alcohol",179,"CH4O ",60.096,0.797,235.15,47.6197,0.6677,64.55,32.042,99.0,"Classic ",20891.5,36.548344,0.005221192,4.6109444E-4,-5.8397536E-7,2.232309E-10,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,3.626,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,57900.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,0.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,1.4371,-0.79942,0.3278,0.0,0.0,0.0,0.0,0.0,0.0,2,"2B",0.0,0.0,0.0091,21000.00004,106018.9945,6.411,0.9468,47052.0,3.3,0.9037,0.0449,1,17.38710706,-7582.40622,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",2.3827,3.1771,198.24,0.03238,22060.3676,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +180,"c-C4","287-23-0","HC",180,"C4H8",56.108,0.669,186.75,49.85,0.209,12.55,56.108,210.0,"Classic",27875.6,-50.3,0.5024,0.5024,-1.80380544E-6,6.829951E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,203.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01161,5479.0,"no",2.3655,3.7114,265.83,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.65461,0.02574,0.19252,203.0 +181,"33-DM-C6","563-16-6","HC",181,"C8H18",114.232002258301,0.7128,288.87001953125,26.536201171875,0.32600000500679,111.972009277345,114.232002258301,443.0,"Classic",58553.6,-3.99072,0.61037231,-6.15236E-5,-2.9614468E-7,1.5148108E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +182,"n-Bcychexane","1678-93-9","HC",182,"C10H20",140.268005371094,0.8014,393.889001464844,31.508701171875,0.361990004777908,180.981011962891,140.268005371094,534.1,"Classic",58553.6,-3.99072,0.61037231,-6.15236E-5,-2.9614468E-7,1.5148108E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +183,"Pent-CC6","4292-92-6","HC",183,"C11H22",154.300003051758,0.8068,400.85,23.3,0.412999004125595,203.748010253906,154.300003051758,584.5,"Classic",58553.6,-3.99072,0.61037231,-6.15236E-5,-2.9614468E-7,1.5148108E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +184,"nC25","629-99-2","HC",184,"C25H52",352.68,0.871,583.85,9.5,1.1053,402.0,86.178,358.0,"Classic",0.0,-46.5,0.309,0.00287,-7.09E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,2.10222,-1.39176,1.15087,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +185,"nC26","630-01-3","HC",185,"C26H54",366.707,0.871,545.85,9.1,1.1544,412.0,86.178,358.0,"Classic",0.0,-49.6,0.315,0.00287,-7.1E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,2.18571,-1.5226,1.18849,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +186,"nC28","630-02-4","HC",186,"C28H58",394.769,0.871,558.85,8.5,1.2375,431.0,86.178,358.0,"Classic",0.0,-55.0,0.324,0.00287,-7.11E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,2.3284693125,-1.758470734375,1.25214875,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +187,"nC29","630-03-5","HC",187,"C29H60",408.8,0.871,562.55,6.918,1.2005,431.0,86.178,358.0,"Classic",0.0,-55.0,0.324,0.00287,-7.11E-7,0.0,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,2.26474817448993,-1.65132004792827,1.22383187065084,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,348210.0,12.685,0.9117,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",3.0799,3.7974,287.35,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +1116,"Hg++","74-82-8","ion",116,"Hg++",55.85,0.797,444.15,290.89,0.344,55.85,40.08,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.0,0.0,6.0,481.8,0.0,3,-39.35,4826.0,0.1091,-1.13E-4,-587000.0,0.0,0.0,0.0,0.0,0.0,2,"solute ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,6.0,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,207.0 +1143,"glycerol","112-27-6","glycol",14,"C6H14O4 ",150.175,1.127,492.95,33.13,1.2874,278.3,150.175,450.0,"Classic ",93317.4,86.4,0.6008,-3.622E-4,7.285E-8,0.0,"log",6.7568,3715.222,-1.299,0.0,0.0,2.2,0.215,0.2427735786,0.0,3.626,481.8,0.0,3,-53.92523,9741.992,0.106066,-7.580229E-5,-394370.0,-19.2905,29814.5,-0.019678,0.013189,0.031144,0,"solvent ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.394142583,-5.478362E-4,0.0,358.332712,15900.0,1000.0,0.00611,268.25,268.25,-242000.0,189.0,8.89,-0.00784,0.0,0.0,0.0,0.5966,0.26227,769.5,0.2455,0.0,5.21E7,0.32,-0.212,0.258,0.0,1.127,1.3769060876,1.7889215262,-4.378737499,0.0,0.0,0.0,0.0,0.0,0.0,4,"4C",0.284542457230047,-0.0044236042659463,0.025,14036.0,228000.0,7.06,1.18,391260.0,13.21,1.1692,0.0188,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,3.626,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,153800.0,587.0,0.0,0.0,0.0,153800.0,587.0,0.0,0.0,0.0,0.0,0.0,0.0,358.332712 +1151,"sulfur(S8)","74-82-8","other",101,"sulfur(S8)",256.48,0.99,885.0,63.0,0.2059,444.6,256.48,449.5,"Classic",68312.1,89.990736,0.041428662,0.00147581814,-1.92361018E-6,7.465972E-10,"log",5.2012,1936.281,-20.143,1000.0,0.0,0.0,0.0,0.0,0.0,6.0,454.0,0.3834,3,-24.71,4210.0,0.0453,-3.38E-5,-50000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solute",0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.384,0.00525,-6.37E-6,351.0,12860.0,1000.0,3.9662E-5,392.75,392.75,0.0,0.0,12.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.99,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,8.046,-4600.0,-144.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,1.2,132.0,0.3834,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,351.0 +1152,"seawater","7732-18-5","seawater",114,"H2O",18.015,0.999,374.15,220.89,0.344,100.0,18.015,56.0,"Classic ",1374.6,28.686314623798,-0.0521084495945917,9.11588816510247E-5,-1.01893871296E-7,0.0,"pow10",5.11564,1687.537,230.17,0.0,0.0,1.8,0.076,0.2313235662374,0.0,2.52,809.1,0.0,3,-27.9527578282,4665.2259299302,0.0523233421,-3.83562E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0547834254,0.0946785127,-2.2673294034,-0.384,0.00525,-6.37E-6,52.8786226,6010.0,1000.0,0.00611,273.16,273.15,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,5.459,0.30542,647.13,0.081,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,1.087,-0.638,0.635,0.0,0.0,0.0,0.168272437065587,0.908482584277346,5.24042737227478,4,"4C",0.0,0.0,0.0692,16655.0,12277.0,1.4515,0.67359,13855.59696,1.456360879,0.664155324,0.046473789,1,17.38710706,-6141.762746,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",1.0656,3.0007,366.51,0.034868,20790.8198,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-262.49,140.52,0.0,0.0,0.0,276370.0,-2090.1,8.125,-0.014116,9.3701E-6,0.923656,-0.37937,0.442429,52.4198672663 +1181,"naphthalene","91-20-3","HC",179,"C10H8",128.174,0.669,475.25,40.5,0.302,217.95,128.174,413.0,"Classic",27875.6,-50.3,0.5024,0.5024,-1.80380544E-6,6.829951E-10,"log",-7.76451,1.45838,-2.7758,-1.23303,0.0,1.8,0.076,0.0,0.0,2.52,809.1,0.0,3,-24.71,4210.0,0.0453,-3.38E-5,-229000.0,-19.2905,29814.5,-0.019678,1.32E-4,-3.11E-7,0,"solvent ",0.0,0.0,0.0,0.0,0.0789,-1.16,0.0,-0.384,0.00525,-6.37E-6,203.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.999,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01161,5479.0,"no",2.3655,3.7114,265.83,0.0,0.0,2.52,809.1,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.65461,0.02574,0.19252,0.0 +1182,"MEA","141-43-5","amine",182,"MEA",61.0831,1.038,364.85,68.7,0.7966,170.85,61.0831,99.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,"log",-8.54796,0.76982,-3.1085,1.54481,0.0,1.7,0.215,0.260355682,0.0,4.5,481.8,0.0,3,-75.19,12680.0,0.1573,-1.225E-4,57900.0,8.16976,8989.3,0.0,0.0,0.0,0,"solvent",0.0,0.0,0.0,0.0,0.521291873,-1.152080748,-0.013889882,-0.384,0.00525,-6.37E-6,207.0,6000.0,1000.0,0.00611,273.0,273.0,-242000.0,189.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.21E7,0.32,-0.212,0.258,0.0,0.797,2.2986015393,-2.1597631778,1.5370964612,0.0,0.0,0.0,0.0,0.0,0.0,4,"4C",0.0,0.0,0.018008483,12276.3826,342400.6001,10.82873753955,1.03285479,376276.884,10.78358585,1.258298307,0.0,1,17.38710706,1.76274587,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,"no",0.0,0.0,0.0,0.0,0.0,4.5,481.8,0.0,1.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +1183,"trans-12-DM-cy-C6","6876-23-9","HC",147,"C",112.22,0.422182073,322.777001953125,29.64,0.3304,123.428,16.043,99.0,"Classic ",66909.6,-68.4,0.8973,-5.137E-4,1.099E-7,0.0,"log",39.205,-1324.4,-3.4366,3.1019E-5,2.0,0.0,0.0,0.0,0.0,2.52,155.8090060223,0.4069986258,3,-26.87,1150.0,0.187,-5.21E-4,-50500.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",900.0,0.0,0.0,0.0,0.0,0.0,0.0,0.303,-6.05E-4,-3.2E-6,77.3,941.0,452.0,0.116656057,90.69,90.65,-74520.0,186.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.02E7,0.261,-0.147,0.222,0.0,0.1,0.5857,-0.7206,1.2899,0.0,0.0,0.0,0.122841598,0.914470789,2.741978611,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.18626,1,1.0,-6.68082,0.0,9700,1.5293E-5,0.04792,1594.0,0.01244,2952.0,0.002317,2777.0,1.076,1323.0,"yes",1.0,3.703900119,150.029998779297,0.0,0.0,3.1907109417,155.8090060223,0.4069986258,1.0,0,900.0,6.21E-4,2760.0,0.421,1963.1,0.00404868,2636.75,0.29527,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.62882,0.70114,-0.78437,0.0 +1184,"cis-14-DM-cy-C6","624-29-3","HC",147,"C",112.22,0.422182073,325.0,29.64,0.233980000019073,124.326013183594,16.043,99.0,"Classic ",66909.6,-68.4,0.8973,-5.137E-4,1.099E-7,0.0,"log",39.205,-1324.4,-3.4366,3.1019E-5,2.0,0.0,0.0,0.0,0.0,2.52,155.8090060223,0.4069986258,3,-26.87,1150.0,0.187,-5.21E-4,-50500.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",900.0,0.0,0.0,0.0,0.0,0.0,0.0,0.303,-6.05E-4,-3.2E-6,77.3,941.0,452.0,0.116656057,90.69,90.65,-74520.0,186.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.02E7,0.261,-0.147,0.222,0.0,0.1,0.5857,-0.7206,1.2899,0.0,0.0,0.0,0.122841598,0.914470789,2.741978611,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.18626,1,1.0,-6.68082,0.0,9700,1.5293E-5,0.04792,1594.0,0.01244,2952.0,0.002317,2777.0,1.076,1323.0,"yes",1.0,3.703900119,150.029998779297,0.0,0.0,3.1907109417,155.8090060223,0.4069986258,1.0,0,900.0,6.21E-4,2760.0,0.421,1963.1,0.00404868,2636.75,0.29527,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.62882,0.70114,-0.78437,0.0 +1185,"trans-14-DM-cy-C6","2207-04-7","HC",147,"C",112.22,0.422182073,316.667016601563,29.64,0.233980000019073,119.356011962891,16.043,99.0,"Classic ",66909.6,-68.4,0.8973,-5.137E-4,1.099E-7,0.0,"log",39.205,-1324.4,-3.4366,3.1019E-5,2.0,0.0,0.0,0.0,0.0,2.52,155.8090060223,0.4069986258,3,-26.87,1150.0,0.187,-5.21E-4,-50500.0,2.0,0.0,0.0,0.0,0.0,0,"solute ",900.0,0.0,0.0,0.0,0.0,0.0,0.0,0.303,-6.05E-4,-3.2E-6,77.3,941.0,452.0,0.116656057,90.69,90.65,-74520.0,186.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.02E7,0.261,-0.147,0.222,0.0,0.1,0.5857,-0.7206,1.2899,0.0,0.0,0.0,0.122841598,0.914470789,2.741978611,0,"0",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.18626,1,1.0,-6.68082,0.0,9700,1.5293E-5,0.04792,1594.0,0.01244,2952.0,0.002317,2777.0,1.076,1323.0,"yes",1.0,3.703900119,150.029998779297,0.0,0.0,3.1907109417,155.8090060223,0.4069986258,1.0,0,900.0,6.21E-4,2760.0,0.421,1963.1,0.00404868,2636.75,0.29527,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.62882,0.70114,-0.78437,0.0 diff --git a/src/test/resources/neqsim/thermodynamicOperations/INTER.csv b/src/test/resources/neqsim/thermodynamicOperations/INTER.csv new file mode 100755 index 0000000000..2a961f9b15 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/INTER.csv @@ -0,0 +1,1367 @@ +6933,"water ","methane ","HV ",0.45,0.0,0,0.651,-1.385,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"WS ",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,-0.827413423948976,0.0026055,-0.827413423948976,-0.827413423948976,0.161199631,0.0,0.0,0.0,0,0.0,0.0 +6935,"ethanol ","methane ","HV ",0.13,0.0,0,0.13,0.0,0.0,0.395,1610.0,255.0,0,0.0,0.0,0.0,"WS ",0.5,0.0,521.5,-2.056,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6936,"MEG ","methane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.5,0.0,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.134,0.0,0.13143824226,0.07021285,0.134,0.0,0.0,0.0,0,0.0,0.0 +6937,"DEG ","methane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.5,0.0,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6938,"TEG ","methane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.5,0.0,-328.6,-2.056,-15.0,0.0,0.0,0.0,0.0,0.13,0.0,0.162,0.13,0.0,0.0,0.0,0.0,0,0.0,0.0 +6939,"NaCl ","methane ","HV ",2.02,0.0,0,2.02,0.0,0.0,0.084,7623.0,5281.0,0,0.0,0.0,0.0,"WS ",0.5,0.0,7623.0,5281.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6940,"KCl","methane ","Classic ",1.64,0.0,0,1.64,0.0,0.0,0.097,6733.0,4007.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,6733.0,4007.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6941,"CaCl2 ","methane ","HV ",2.07,0.0,0,2.07,0.0,0.0,0.055,8790.0,14765.0,0,0.0,0.0,0.0,"WS ",0.5,0.0,8790.0,14765.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6942,"HCOONa ","methane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6943,"HCOOK ","methane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6944,"HCOOCs ","methane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6945,"helium ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6946,"hydrogen ","methane ","Classic ",0.01,0.0,0,0.01,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01,0.0,0.01,0.01,0.01,0.0,0.0,0.0,0,0.0,0.0 +6947,"nitrogen ","methane ","Classic ",0.0319,0.0,0,0.0319,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.02,0.0,0.02,0.02,0.02,0.0,0.0,0.0,0,0.0,0.0 +6948,"argon","methane ","Classic ",0.0252,0.0,0,0.0252,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0252,0.0,0.0252,0.0252,0.0252,0.0,0.0,0.0,0,0.0,0.0 +6949,"oxygen ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6950,"CO2 ","methane ","Classic ",0.0973,0.0,0,0.0973,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0973,0.0,0.0973,0.0973,0.0956,0.0,0.0,0.0,1,0.085,0.0 +6951,"H2S ","methane ","Classic ",0.085,0.0,0,0.08,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +6952,"ethane ","methane ","Classic ",0.00295295,0.0,0,0.00295295,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.029890022,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00295295,0.0,0.00295295,0.00295295,0.00295295,0.0,0.0,0.0,0,0.0,0.0 +6953,"propane ","methane ","Classic ",0.00747722,0.0,0,0.00747722,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.131666934,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00747722,0.0,0.00747722,0.00747722,0.00747722,0.0,0.0,0.0,0,0.0,0.0 +6954,"c-propane ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6955,"i-butane ","methane ","Classic ",0.01369935,0.0,0,0.01369935,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.245598745,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6956,"n-butane ","methane ","Classic ",0.01289789,0.0,0,0.01289789,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.222563826,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6957,"2,2-diom C3 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6958,"c-C4 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6959,"i-pentane ","methane ","Classic ",0.01817552,0.0,0,0.01817552,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6960,"n-pentane ","methane ","Classic ",0.01847102,0.0,0,0.01847102,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6961,"c-pentane ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6962,"2,2-dim-C4 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6963,"2,3-dimC4 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6964,"2-m-C5 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6965,"3-m-C5 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6966,"n-hexane ","methane ","Classic ",0.0234740674495697,0.0,0,0.0234740674495697,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6968,"m-c-C5 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6969,"benzene ","methane ","Classic ",0.0209,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0209,0.0,0.0209,0.0209,0.0,0.0,0.0,0.0,0,0.0,0.0 +6970,"c-hexane ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6971,"223-tm-C4 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6972,"3,3-dim-C5 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6973,"n-heptane","methane ","Classic ",0.0307000000029802,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6974,"m-c-C6 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6975,"et-c-C5 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6976,"toluene ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6977,"c-c7 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6978,"11-dm-c-C6 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6979,"c-c8 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6980,"c-12-dmcC6 ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6981,"et-benzene ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6982,"MDEA+ ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,1,1.23E-4,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6983,"H3O+ ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6984,"MDEA ","methane ","Classic",0.599959902,0.0,0,0.646504377,0.0,0.0,0.122,2467.0,274.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6985,"HCO3- ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6986,"OH- ","methane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +6987,"Na+ ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6988,"Cl- ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6989,"Ca++ ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6990,"Li+ ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6991,"Br- ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6992,"NH4+ ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6993,"CO3-- ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6994,"DEACOO- ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6995,"DEA ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6996,"DEA+ ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6997,"BEA ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6998,"BEA+ ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +6999,"BEACOO- ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7000,"K+ ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7001,"HS- ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7002,"S-- ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7003,"I- ","methane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7004,"Mg++ ","methane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7005,"Ba++ ","methane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7006,"Sr++ ","methane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7007,"methanol ","ethane ","HV ",0.19,0.0,0,0.19,0.0,0.0,0.395,2005.0,494.0,0,0.0,0.0,0.0,"WS ",0.19,0.395,2005.0,494.0,0.0,0.0,0.0,0.0,0.0,0.014,0.0,0.014,0.014,0.014,0.0,0.0,0.0,0,0.0,0.0 +7008,"ethanol ","ethane ","HV ",0.19,0.0,0,0.19,0.0,0.0,0.395,2005.0,494.0,0,0.0,0.0,0.0,"WS ",0.19,0.395,2005.0,494.0,0.0,0.0,0.0,0.0,0.0,-0.055,0.0,-0.055,-0.055,-0.055,0.0,0.0,0.0,0,0.0,0.0 +7009,"MEG ","ethane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.1153,0.0,0.1153,0.1153,0.1153,0.0,0.0,0.0,0,0.0,0.0 +7010,"DEG ","ethane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7011,"TEG ","ethane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.11,0.0,0.11,0.11,0.11,0.0,0.0,0.0,0,0.0,0.0 +7012,"NaCl ","ethane ","Classic ",0.78,0.0,0,0.78,0.0,0.0,0.062,12235.0,4227.0,0,0.0,0.0,0.0,"Classic ",0.78,0.062,12235.0,4227.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7013,"KCl ","ethane ","Classic ",1.33,0.0,0,1.33,0.0,0.0,0.021,24788.0,50127.0,0,0.0,0.0,0.0,"Classic ",1.33,0.021,24788.0,50127.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7014,"CaCl2 ","ethane ","Classic ",1.18,0.0,0,1.18,0.0,0.0,0.0364,99000.0,3080.0,0,0.0,0.0,0.0,"Classic ",1.18,0.0364,99000.0,3080.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7015,"HCOONa ","ethane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7016,"HCOOK ","ethane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7017,"HCOOCs ","ethane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7018,"helium ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7019,"hydrogen ","ethane ","Classic ",0.0367,0.0,0,0.0367,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0367,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0367,0.0,0.0367,0.0367,0.0367,0.0,0.0,0.0,0,0.0,0.0 +7020,"nitrogen ","ethane ","Classic ",0.0388,0.0,0,0.0388,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.06,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.031899,0.0,0.031899,0.031899,0.031899,0.0,0.0,0.0,0,0.0,0.0 +7021,"Ar ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7022,"oxygen ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7023,"CO2 ","ethane ","Classic ",0.1346,0.0,0,0.12980001,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12,0.0,0.12,0.12,0.12,0.0,0.0,0.0,0,0.0,0.0 +7024,"H2S ","ethane ","Classic ",0.0829,0.0,0,0.07,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.07,0.0,0.07,0.07,0.07,0.0,0.0,0.0,0,0.0,0.0 +7025,"propane ","ethane ","Classic ",0.00185286,0.0,0,0.00185286,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.048134573,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00185286,0.0,0.00185286,0.00185286,0.00185286,0.0,0.0,0.0,0,0.0,0.0 +7026,"c-propane ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7027,"i-butane ","ethane ","Classic ",0.00511365,0.0,0,0.00511365,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.138621605,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7028,"n-butane ","ethane ","Classic ",0.00464288,0.0,0,0.00464288,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.137552316,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7029,"2,2-diom C3 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7030,"c-C4 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7031,"i-pentane ","ethane ","Classic ",0.00791956,0.0,0,0.00791956,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7032,"n-pentane ","ethane ","Classic ",0.00811359,0.0,0,0.00811359,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7033,"c-pentane ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7034,"2,2-dim-C4 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7035,"2,3-dimC4 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7036,"2-m-C5 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7037,"3-m-C5 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7038,"n-hexane ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7040,"m-c-C5 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7041,"benzene ","ethane ","Classic ",0.0289,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7042,"c-hexane ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7043,"223-tm-C4 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7044,"3,3-dim-C5 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7045,"n-heptane","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7046,"m-c-C6 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7047,"et-c-C5 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7048,"toluene ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7049,"c-c7 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7050,"11-dm-c-C6 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7051,"c-c8 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7052,"c-12-dmcC6 ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7053,"et-benzene ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7054,"MDEA+ ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7055,"H3O+ ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7056,"MDEA ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7057,"HCO3- ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7058,"OH- ","ethane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7059,"Na+ ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7060,"Cl- ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7061,"Ca++ ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7062,"Li+ ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7063,"Br- ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7064,"NH4+ ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7065,"CO3-- ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7066,"DEACOO- ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7067,"DEA ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7068,"DEA+ ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7069,"BEA ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7070,"BEA+ ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7071,"BEACOO- ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7072,"K+ ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7073,"HS- ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7074,"S-- ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7075,"I- ","ethane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7076,"Mg++ ","ethane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7077,"Ba++ ","ethane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7078,"Sr++ ","ethane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7079,"methanol ","CO2 ","HV",0.0148,0.0,0,0.023,0.0,0.0,0.68,-92.26,-546.3,0,0.0,0.0,0.0,"WS ",0.5,0.395,3307.0,276.0,0.0,0.97,5.0,0.0,0.0,0.068,0.0,0.068,0.068,0.0,0.0,0.0,0.0,1,0.0386,0.0 +7080,"ethanol ","CO2 ","HV",0.5,0.0,0,0.5,0.0,0.0,0.395,3307.0,276.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,3307.0,276.0,0.0,0.0,0.0,0.0,0.0,0.1131,0.0,0.1131,0.1131,0.0,0.0,0.0,0.0,1,0.0627,0.0 +7081,"MEG ","CO2 ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,-0.028353,6.2E-4,-0.028353,-0.028353,0.0,0.0,0.0,0.0,1,0.055,0.0 +7082,"DEG ","CO2 ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,-0.2674,0.0014,-0.2674,-0.2674,0.0,0.0,0.0,0.0,1,0.085,0.0 +7083,"TEG ","CO2 ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0157,4.0E-4,0.0157,0.0157,0.0,0.0,0.0,0.0,1,0.085,0.0 +7084,"NaCl ","CO2 ","HV ",2.1,0.0,0,2.1,0.0,0.0,-0.007,0.07,3087.0,0,0.0,0.0,0.0,"WS ",2.1,-0.007,0.07,3087.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7085,"KCl ","CO2 ","HV ",1.79,0.0,0,1.79,0.0,0.0,-0.1218,1865.0,1137.0,0,0.0,0.0,0.0,"WS ",1.79,-0.1218,1865.0,1137.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7086,"CaCl2 ","CO2 ","HV ",2.23,0.0,0,2.23,0.0,0.0,-0.111,628.0,1721.0,0,0.0,0.0,0.0,"WS ",2.23,-0.111,628.0,1721.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7087,"HCOONa ","CO2 ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7088,"HCOOK ","CO2 ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7089,"HCOOCs ","CO2 ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7090,"helium ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7091,"hydrogen ","CO2 ","Classic ",0.0362,0.0,0,0.0362,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0362,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0362,0.0,0.0362,0.0362,0.0362,0.0,0.0,0.0,0,0.0,0.0 +7093,"argon","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7094,"oxygen ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7095,"H2S ","CO2 ","Classic ",0.102,0.0,0,0.12,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12,0.0,0.12,0.12,0.12,0.0,0.0,0.0,0,0.0,0.0 +7097,"propane ","CO2 ","Classic ",0.1018,0.0,0,0.13500001,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12,0.0,0.12,0.12,0.12,0.0,0.0,0.0,0,0.0,0.0 +7098,"c-propane ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7099,"i-butane ","CO2 ","Classic ",0.13680001,0.0,0,0.12980001,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12,0.0,0.12,0.12,0.12,0.0,0.0,0.0,0,0.0,0.0 +7100,"n-butane ","CO2 ","Classic ",0.1474,0.0,0,0.12980001,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12,0.0,0.12,0.12,0.12,0.0,0.0,0.0,0,0.0,0.0 +7101,"2,2-diom C3 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7102,"c-C4 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7103,"i-pentane ","CO2 ","Classic ",0.12970001,0.0,0,0.125,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12,0.0,0.12,0.12,0.12,0.0,0.0,0.0,0,0.0,0.0 +7104,"n-pentane ","CO2 ","Classic ",0.1278,0.0,0,0.125,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12,0.0,0.12,0.12,0.12,0.0,0.0,0.0,0,0.0,0.0 +7105,"c-pentane ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7106,"2,2-dim-C4 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7107,"2,3-dimC4 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7108,"2-m-C5 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7109,"3-m-C5 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7110,"n-hexane ","CO2 ","Classic ",0.12,0.0,0,0.12,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.12,0.0,0.12,0.12,0.12,0.0,0.0,0.0,0,0.0,0.0 +7112,"m-c-C5 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7113,"benzene ","CO2 ","Classic ",0.0767000019550323,0.0,0,0.081,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7114,"c-hexane ","CO2 ","Classic ",0.1087,0.0,0,0.1087,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7115,"223-tm-C4 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7116,"3,3-dim-C5 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7117,"n-heptane","CO2 ","Classic ",0.109999991953373,0.0,0,0.1,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.1,0.1,0.1,0.0,0.0,0.0,0,0.0,0.0 +7118,"m-c-C6 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7119,"et-c-C5 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7120,"toluene ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7121,"c-c7 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7122,"11-dm-c-C6 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7123,"c-c8 ","CO2 ","Classic ",0.1,0.0,0,0.1,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.1,0.1,0.1,0.0,0.0,0.0,0,0.0,0.0 +7124,"c-12-dmcC6 ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7125,"et-benzene ","CO2 ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7126,"MDEA+ ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,1,-1.660156E-4,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0678732,0.0,0,0.0,0.0 +7127,"H3O+ ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7128,"CO2","MDEA","Classic",0.5,0.0,0,0.1,0.0,0.0,0.239,3204.3057406,-2753.7379912,0,0.0,0.0,0.0,"WS ",1.6,0.3,-713.0,-393.0,0.0,-12.47283302,13.015037932,0.0,0.0,0.3,0.0,0.3,0.3,0.0,0.0,0.0,0.0,0,0.0,0.0 +7129,"HCO3- ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7130,"OH- ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7131,"Na+ ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7132,"Cl- ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7133,"Ca++ ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7134,"Li+ ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7135,"Br- ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7136,"NH4+ ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7137,"CO3-- ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7138,"DEACOO- ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7139,"DEA ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7140,"DEA+ ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7141,"BEA ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7142,"BEA+ ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7143,"BEACOO- ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7144,"K+ ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7145,"HS- ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7146,"S-- ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7147,"I- ","CO2 ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7148,"Mg++ ","CO2 ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7149,"Ba++ ","CO2 ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7150,"Sr++ ","CO2 ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7151,"water ","propane ","HV ",0.53,0.0,0,0.53,0.0,0.0,0.07,-1584.0,3517.0,0,0.0,0.0,0.0,"WS ",0.53,0.122,2467.0,274.0,0.0,-0.44,-0.1,0.0,0.0,0.11,0.0,0.11,0.11,0.1135,0.0,0.0,0.0,0,0.0,0.0 +7152,"methanol ","propane ","HV ",0.22,0.0,0,0.22,0.0,0.0,0.395,895.0,435.0,0,0.0,0.0,0.0,"WS ",0.22,0.395,895.0,435.0,0.0,0.0,0.0,0.0,0.0,0.026,0.0,0.026,0.026,0.0,0.0,0.0,0.0,0,0.0,0.0 +7153,"ethanol ","propane ","HV ",0.22,0.0,0,0.22,0.0,0.0,0.395,895.0,435.0,0,0.0,0.0,0.0,"WS ",0.22,0.395,895.0,435.0,0.0,0.0,0.0,0.0,0.0,0.038,0.0,0.038,0.038,0.0,0.0,0.0,0.0,0,0.0,0.0 +7154,"MEG ","propane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.1132,0.0,0.1132,0.1132,0.1132,0.0,0.0,0.0,0,0.0,0.0 +7155,"DEG ","propane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7156,"TEG ","propane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.13,0.0,0.13,0.13,0.13,0.0,0.0,0.0,0,0.0,0.0 +7157,"NaCl ","propane ","Classic ",0.72,0.0,0,0.72,0.0,0.0,0.0592,10539.0,4777.0,0,0.0,0.0,0.0,"Classic ",0.72,0.0592,10539.0,4777.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7158,"KCl ","propane ","Classic ",1.36,0.0,0,1.36,0.0,0.0,0.0441,60604.0,7490.0,0,0.0,0.0,0.0,"Classic ",1.36,0.0441,60604.0,7490.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7159,"CaCl2 ","propane ","Classic ",1.18,0.0,0,1.18,0.0,0.0,0.0364,99000.0,3080.0,0,0.0,0.0,0.0,"Classic ",1.18,0.0364,99000.0,3080.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7160,"HCOONa ","propane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7161,"HCOOK ","propane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7162,"HCOOCs ","propane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7163,"helium ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7164,"hydrogen ","propane ","Classic ",0.0799,0.0,0,0.0799,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0799,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0799,0.0,0.0799,0.0799,0.0799,0.0,0.0,0.0,0,0.0,0.0 +7165,"nitrogen ","propane ","Classic ",0.0886,0.0,0,0.079998,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.08,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0886,0.0,0.0886,0.0886,0.0886,0.0,0.0,0.0,0,0.0,0.0 +7166,"argon","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7167,"oxygen ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7169,"H2S ","propane ","Classic ",0.0831,0.0,0,0.07,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.07,0.0,0.07,0.07,0.07,0.0,0.0,0.0,0,0.0,0.0 +7171,"c-propane ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7172,"i-butane ","propane ","Classic ",0.00153851,0.0,0,0.00153851,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.028532064,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7173,"n-butane ","propane ","Classic ",0.00132268,0.0,0,0.00132268,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.028532064,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7174,"2,2-diom C3 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7175,"c-C4 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7176,"i-pentane ","propane ","Classic ",0.00305075,0.0,0,0.00305075,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7177,"n-pentane ","propane ","Classic ",0.00316586,0.0,0,0.00316586,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7178,"c-pentane ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7179,"2,2-dim-C4 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7180,"2,3-dimC4 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7181,"2-m-C5 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7182,"3-m-C5 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7183,"n-hexane ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7185,"m-c-C5 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7186,"benzene ","propane ","Classic ",0.02,0.0,0,0.02,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7187,"c-hexane ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7188,"223-tm-C4 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7189,"3,3-dim-C5 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7190,"n-heptane","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7191,"m-c-C6 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7192,"et-c-C5 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7193,"toluene ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7194,"c-c7 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7195,"11-dm-c-C6 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7196,"c-c8 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7197,"c-12-dmcC6 ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7198,"et-benzene ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7199,"MDEA+ ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7200,"H3O+ ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7201,"MDEA ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7202,"HCO3- ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7203,"OH- ","propane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7204,"Na+ ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7205,"Cl- ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7206,"Ca++ ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7207,"Li+ ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7208,"Br- ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7209,"NH4+ ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7210,"CO3-- ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7211,"DEACOO- ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7212,"DEA ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7213,"DEA+ ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7214,"BEA ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7215,"BEA+ ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7216,"BEACOO- ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7217,"K+ ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7218,"HS- ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7219,"S-- ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7220,"I- ","propane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7221,"Mg++ ","propane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7222,"Ba++ ","propane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7223,"Sr++ ","propane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7225,"methanol ","water ","HV ",-0.0789,0.0,0,-0.0789,0.0,0.0,0.357,410.67,-169.63,0,0.0,0.0,0.0,"WS ",0.093103947,0.303,-48.68,610.6,0.0,1.89,-1.11,0.0,0.0,-0.153,0.0,-0.153,-0.153,-0.153,0.0,0.0,0.0,0,0.0,0.0 +7226,"ethanol ","water ","HV ",0.0,0.0,0,0.0,0.0,0.0,0.2245,2207.03,-2612.51,0,0.0,0.0,0.0,"WS ",0.0,0.3791,-268.88,885.99,0.0,-4.6,7.3,0.0,0.0,-0.11,0.0,-0.11,-0.11,-0.11,0.0,0.0,0.0,0,0.0,0.0 +7227,"water","MEG","HV ",0.0,0.0,0,-0.0385,0.0,0.0,-0.0145,1506.3,-863.3,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,-0.4533093188,4.11,-0.603,0.0,0.0,-0.115,0.0,-0.115,-0.115,-0.115,0.0,0.0,0.0,0,0.0,0.0 +7228,"DEG ","water ","HV ",-0.1259,0.0,0,-0.1259,0.0,0.0,0.4739,-624.62,715.5,0,0.0,0.0,0.0,"WS ",-0.1259,0.4739,-624.62,715.5,0.0,0.0,0.0,0.0,0.0,-0.115,0.0,-0.115,-0.115,-0.115,0.0,0.0,0.0,1,0.0,0.0 +7229,"TEG ","water ","HV ",-0.2035,0.0,0,-0.2035,0.0,0.0,0.1967,-2913.94,2497.41,0,0.0,0.0,0.0,"WS ",0.2035,0.3,-777.0,1915.0,0.8,0.0,0.0,0.0,0.0,-0.27,0.0,0.0,0.0,-0.27,0.0,0.0,0.0,1,0.0,0.0 +7231,"KCl ","water ","HV ",0.0,0.0,0,0.0,0.0,0.0,-0.8262,650.82,92.26,0,0.0,0.0,0.0,"WS ",0.0,-0.8262,650.82,92.26,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7233,"HCOONa ","water ","HV ",0.0,0.0,0,0.0,0.0,0.0,-0.7911,-26.58,114.0,0,0.0,0.0,0.0,"WS ",0.0,-0.7911,-26.58,114.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7234,"HCOOK ","water ","HV ",0.0,0.0,0,0.0,0.0,0.0,-0.8954,-10.98,90.11,0,0.0,0.0,0.0,"WS ",0.0,-0.8954,-10.98,90.11,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7235,"HCOOCs ","water ","HV ",0.0,0.0,0,0.0,0.0,0.0,-2.401,-14.88,63.62,0,0.0,0.0,0.0,"WS ",0.0,-2.401,-14.88,63.62,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7236,"helium ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7237,"hydrogen ","water ","Classic ",0.5322,0.0,0,0.5322,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5322,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7238,"nitrogen ","water ","HV ",0.48,0.0,0,0.48,0.0,0.0,0.08,4898.64,-111.76,0,0.0,0.0,0.0,"WS ",-0.48,0.0768,-388.0,4911.0,0.0,-6.9,2.06,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7239,"argon","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7240,"oxygen ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7241,"CO2","water","HV ",0.1,0.0,0,0.184,0.236,0.0,0.03,5251.7374371982,-3121.2788585,0,0.0,0.0,0.0,"WS ",1.6,0.3,-393.0,-713.0,0.0,-0.8420253536,-0.5123316046,0.96,3.96,-0.27686,0.001121,-0.27686,-0.27686,0.0,0.0,0.0,0.0,1,0.075,0.0 +7242,"H2S ","water ","HV ",0.03,0.0,0,0.03,0.0,0.0,0.10448,26082.0,-2148.0,0,0.0,0.0,0.0,"WS ",0.03,0.0653,-1082.0,2579.6,0.0,-18.45,5.67,0.0,0.0,0.1913,0.0,0.1913,0.1913,0.0,0.0,0.0,0.0,1,0.0624,10878.0 +7243,"water","ethane","HV ",0.45,0.0,0,0.635,-0.93,0.0,0.122,-1479.91,5173.65,0,0.0,0.0,0.0,"WS ",0.45,0.122,274.0,2467.0,0.0,3.46,-6.56,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7244,"c-propane ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7245,"i-butane ","water ","HV ",0.52,0.0,0,0.52,0.0,0.0,0.145,681.0,2507.0,0,0.0,0.0,0.0,"WS ",0.52,0.145,681.0,2507.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7246,"2,2-diom C3 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7247,"c-C4 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7248,"i-pentane ","water ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.145,681.0,2507.0,0,0.0,0.0,0.0,"WS ",0.5,0.145,681.0,2507.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7249,"n-pentane ","water ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.145,681.0,2507.0,0,0.0,0.0,0.0,"WS ",0.5,0.145,681.0,2507.0,0.0,0.0,0.0,0.0,0.0,0.0615,0.0,0.0615,0.0615,0.0,0.0,0.0,0.0,0,0.0,0.0 +7250,"c-pentane ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7251,"2,2-dim-C4 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7252,"2,3-dimC4 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7253,"2-m-C5 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7254,"3-m-C5 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7256,"n-hexane","water ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.145,681.0,2507.0,0,0.0,0.0,0.0,"WS ",0.5,0.145,681.0,2507.0,0.0,0.0,0.0,0.0,0.0,0.0355,0.0,0.0355,0.0355,0.0,0.0,0.0,0.0,0,0.0,0.0 +7257,"m-c-C5 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7258,"benzene ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0355,0.0,0.0355,0.0355,0.0,0.0,0.0,0.0,1,0.079,0.0 +7259,"c-hexane ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7260,"223-tm-C4 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7261,"3,3-dim-C5 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7262,"n-heptane","water ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.145,681.0,2507.0,0,0.0,0.0,0.0,"WS ",0.5,0.145,681.0,2507.0,0.0,0.0,0.0,0.0,0.0,0.0095,0.0,0.0095,0.0095,0.0,0.0,0.0,0.0,0,0.0,0.0 +7263,"m-c-C6 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7264,"et-c-C5 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7265,"toluene ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0095,0.0,0.0095,0.0095,0.0,0.0,0.0,0.0,1,0.06,0.0 +7266,"c-c7 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7267,"11-dm-c-C6 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7268,"c-c8 ","water ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.145,681.0,2507.0,0,0.0,0.0,0.0,"WS ",0.5,0.145,681.0,2507.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7269,"c-12-dmcC6 ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7270,"et-benzene ","water ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.0165,0.0,-0.0165,-0.0165,0.0,0.0,0.0,0.0,1,0.051,0.0 +7271,"MDEA+ ","water ","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,1,-6.8587E-6,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7272,"H3O+ ","water ","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7273,"MDEA-even","water","HV ",0.0,0.0,0,0.0,0.0,0.0,0.213103518,-1460.679072,1200.644717,0,0.0,0.0,0.0,"WS ",0.0,0.386,-401.57,803.41,0.0,5.892995488,-7.240070673,0.0,0.0,-0.149289356,0.0,-0.149289356,-0.149289356,0.0,0.0,0.0,0.0,0,0.0,0.0 +7274,"HCO3- ","water ","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7275,"OH- ","water ","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7276,"Na+ ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7277,"Cl- ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7278,"Ca++ ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7279,"Li+ ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7280,"Br- ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7281,"NH4+ ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7282,"CO3-- ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7283,"DEACOO- ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7284,"DEA ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7285,"DEA+ ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7286,"BEA ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7287,"BEA+ ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7288,"BEACOO- ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7289,"K+ ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7290,"HS- ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7291,"S-- ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7292,"I- ","water ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7293,"Mg++ ","water ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7294,"Ba++ ","water ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7295,"Sr++ ","water ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7296,"methanol ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7297,"ethanol ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7298,"MEG ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7299,"DEG ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7300,"TEG ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7301,"NaCl ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7302,"KCl ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7303,"CaCl2 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7304,"HCOONa ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7305,"HCOOK ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7306,"HCOOCs ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7307,"helium ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7308,"hydrogen ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7309,"nitrogen ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7310,"Ar ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7311,"oxygen ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7312,"H2S ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,-0.90671648,669.6378677,352.1342502,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,-0.2940267,-1.817715182,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7313,"propane ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7314,"c-propane ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7315,"i-butane ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7316,"n-butane ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7317,"2,2-diom C3 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7318,"c-C4 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7319,"i-pentane ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7320,"n-pentane ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7321,"c-pentane ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7322,"2,2-dim-C4 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7323,"2,3-dimC4 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7324,"2-m-C5 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7325,"3-m-C5 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7326,"n-hexane ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7328,"m-c-C5 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7329,"benzene ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7330,"c-hexane ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7331,"223-tm-C4 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7332,"3,3-dim-C5 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7333,"n-heptane","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7334,"m-c-C6 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7335,"et-c-C5 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7336,"toluene ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7337,"c-c7 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7338,"11-dm-c-C6 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7339,"c-c8 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7340,"c-12-dmcC6 ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7341,"et-benzene ","MDEA ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7342,"H3O+ ","MDEA ","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,1,0.0015,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7343,"HCO3- ","MDEA ","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,-0.00144,0.0,0,0.0,0.0 +7344,"OH- ","MDEA ","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7345,"Na+ ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7346,"Cl- ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7347,"Ca++ ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7348,"Li+ ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7349,"Br- ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7350,"NH4+ ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7351,"CO3-- ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.18554,0.0,0,0.0,0.0 +7352,"DEACOO- ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7353,"DEA ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7354,"DEA+ ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7355,"BEA ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7356,"BEA+ ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7357,"BEACOO- ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7358,"K+ ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7359,"HS- ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7360,"S-- ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7361,"I- ","MDEA ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7362,"Mg++ ","MDEA ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7363,"Ba++ ","MDEA ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7364,"Sr++ ","MDEA ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7365,"methanol ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7366,"ethanol ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7367,"MEG ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7368,"DEG ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7369,"TEG ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7370,"NaCl ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7371,"KCl ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7372,"CaCl2 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7373,"HCOONa ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7374,"HCOOK ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7375,"HCOOCs ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7376,"helium ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7377,"hydrogen ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7378,"nitrogen ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7379,"Ar ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7380,"oxygen ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7381,"H2S ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,1,4.8841E-4,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7383,"ethane ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7384,"propane ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7385,"c-propane ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7386,"i-butane ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7387,"n-butane ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7388,"2,2-diom C3 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7389,"c-C4 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7390,"i-pentane ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7391,"n-pentane ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7392,"c-pentane ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7393,"2,2-dim-C4 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7394,"2,3-dimC4 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7395,"2-m-C5 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7396,"3-m-C5 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7397,"n-hexane ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7399,"m-c-C5 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7400,"benzene ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7401,"c-hexane ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7402,"223-tm-C4 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7403,"3,3-dim-C5 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7404,"n-heptane","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7405,"m-c-C6 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7406,"et-c-C5 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7407,"toluene ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7408,"c-c7 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7409,"11-dm-c-C6 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7410,"c-c8 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7411,"c-12-dmcC6 ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7412,"et-benzene ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7413,"H3O+ ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7414,"MDEA ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,1,-6.035675E-4,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7415,"HCO3- ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,1,-2.16497E-4,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,-0.00144,0.0,0,0.0,0.0 +7416,"OH- ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7417,"Na+ ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7418,"Cl- ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7419,"Ca++ ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7420,"Li+ ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7421,"Br- ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7422,"NH4+ ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7423,"CO3-- ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,-2.74132E-4,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7424,"DEACOO- ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7425,"DEA ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7426,"DEA+ ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7427,"BEA ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7428,"BEA+ ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7429,"BEACOO- ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7430,"K+ ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7431,"HS- ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,-1.49475E-4,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7432,"S-- ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7433,"I- ","MDEA+ ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7434,"Mg++ ","MDEA+ ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7435,"Ba++ ","MDEA+ ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7436,"Sr++ ","MDEA+ ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7438,"ethanol ","nitrogen ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.395,308.0,364.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,1610.0,255.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7439,"MEG ","nitrogen ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.5,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7440,"DEG ","nitrogen ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.5,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7441,"TEG ","nitrogen ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.5,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7442,"NaCl ","nitrogen ","HV ",3.2,0.0,0,3.2,0.0,0.0,0.0105,94947.0,1773.0,0,0.0,0.0,0.0,"WS ",0.5,0.084,7623.0,5281.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7443,"KCl ","nitrogen ","HV ",5.24,0.0,0,5.24,0.0,0.0,0.0078,41212.0,2335.0,0,0.0,0.0,0.0,"Classic ",0.5,0.097,6733.0,4007.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7444,"CaCl2 ","nitrogen ","Classic ",2.29,0.0,0,2.29,0.0,0.0,0.0174,80541.0,2200.0,0,0.0,0.0,0.0,"WS ",0.5,0.055,8790.0,14765.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7445,"HCOONa ","nitrogen ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7446,"HCOOK ","nitrogen ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7447,"HCOOCs ","nitrogen ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7448,"helium ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7449,"hydrogen ","nitrogen ","Classic ",0.0071,0.0,0,0.0071,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0071,0.0,0.0071,0.0071,0.0071,0.0,0.0,0.0,0,0.0,0.0 +7450,"argon","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7451,"oxygen ","nitrogen ","Classic ",-0.0078,0.0,0,-0.0078,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.0078,0.0,-0.0078,-0.0078,-0.0078,0.0,0.0,0.0,0,0.0,0.0 +7452,"CO2 ","nitrogen ","Classic ",-0.0171,0.0,0,-0.019997,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7453,"H2S ","nitrogen ","Classic ",0.14,0.0,0,0.14,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7454,"c-propane ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7455,"i-butane ","nitrogen ","Classic ",0.13150001,0.0,0,0.094999,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +7456,"n-butane ","nitrogen ","Classic ",0.1007,0.0,0,0.1007,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +7457,"2,2-diom C3 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7458,"c-C4 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7459,"i-pentane ","nitrogen ","Classic ",0.093,0.0,0,0.094999,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +7460,"n-pentane ","nitrogen ","Classic ",0.093598,0.0,0,0.1,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +7461,"c-pentane ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7462,"2,2-dim-C4 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7463,"2,3-dimC4 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7464,"2-m-C5 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7465,"3-m-C5 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7466,"n-hexane ","nitrogen ","Classic ",0.08,0.0,0,0.08,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +7468,"m-c-C5 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7469,"benzene ","nitrogen ","Classic ",0.2131,0.0,0,0.2131,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7470,"c-hexane ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7471,"223-tm-C4 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7472,"3,3-dim-C5 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7473,"n-heptane","nitrogen ","Classic ",0.142199993133545,0.0,0,0.142199993133545,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +7474,"m-c-C6 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7475,"et-c-C5 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7476,"toluene ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7477,"c-c7 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7478,"11-dm-c-C6 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7479,"c-c8 ","nitrogen ","Classic ",0.08,0.0,0,0.08,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +7480,"c-12-dmcC6 ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7481,"et-benzene ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7482,"MDEA+ ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7483,"H3O+ ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7484,"MDEA ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7485,"HCO3- ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7486,"OH- ","nitrogen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7487,"Na+ ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7488,"Cl- ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7489,"Ca++ ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7490,"Li+ ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7491,"Br- ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7492,"NH4+ ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7493,"CO3-- ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7494,"DEACOO- ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7495,"DEA ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7496,"DEA+ ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7497,"BEA ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7498,"BEA+ ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7499,"BEACOO- ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7500,"K+ ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7501,"HS- ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7502,"S-- ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7503,"I- ","nitrogen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7504,"Mg++ ","nitrogen ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7505,"Ba++ ","nitrogen ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7506,"Sr++ ","nitrogen ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7508,"methanol ","H2S ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.395,965.0,45.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7509,"ethanol ","H2S ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.395,965.0,45.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7511,"DEG ","H2S ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7512,"TEG ","H2S ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7513,"NaCl ","H2S ","HV ",0.8,0.0,0,0.8,0.0,0.0,-0.1379,1809.48,658.64,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7514,"KCl ","H2S ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7515,"CaCl2 ","H2S ","HV ",0.5,0.0,0,0.5,0.0,0.0,-0.1872,-1646.0,1195.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7516,"HCOONa ","H2S ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7517,"HCOOK ","H2S ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7518,"HCOOCs ","H2S ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7519,"helium ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7520,"hydrogen ","H2S ","Classic ",0.0831,0.0,0,0.0831,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0831,0.0,0.0831,0.0831,0.0831,0.0,0.0,0.0,0,0.0,0.0 +7522,"Ar ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7523,"oxygen ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7529,"c-propane ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7530,"i-butane ","H2S ","Classic ",0.06,0.0,0,0.06,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06,0.0,0.06,0.06,0.06,0.0,0.0,0.0,0,0.0,0.0 +7531,"n-butane ","H2S ","Classic ",0.06,0.0,0,0.06,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06,0.0,0.06,0.06,0.06,0.0,0.0,0.0,0,0.0,0.0 +7532,"2,2-diom C3 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7533,"c-C4 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7534,"i-pentane ","H2S ","Classic ",0.0697,0.0,0,0.06,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06,0.0,0.06,0.06,0.06,0.0,0.0,0.0,0,0.0,0.0 +7535,"n-pentane ","H2S ","Classic ",0.0697,0.0,0,0.06,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06,0.0,0.06,0.06,0.06,0.0,0.0,0.0,0,0.0,0.0 +7536,"c-pentane ","H2S ","Classic ",0.0697,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7537,"2,2-dim-C4 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7538,"2,3-dimC4 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7539,"2-m-C5 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7540,"3-m-C5 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7541,"n-hexane ","H2S ","Classic ",0.05,0.0,0,0.05,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +7543,"m-c-C5 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7544,"benzene ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7545,"c-hexane ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7546,"223-tm-C4 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7547,"3,3-dim-C5 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7549,"m-c-C6 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7550,"et-c-C5 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7551,"toluene ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7552,"c-c7 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7553,"11-dm-c-C6 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7554,"c-c8 ","H2S ","Classic ",0.04,0.0,0,0.04,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.04,0.0,0.04,0.04,0.04,0.0,0.0,0.0,0,0.0,0.0 +7555,"c-12-dmcC6 ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7556,"et-benzene ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7557,"MDEA+ ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7558,"H3O+ ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7559,"MDEA ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,-0.9067,2928.0,5567.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,-2.44,15.11,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7560,"HCO3- ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7561,"OH- ","H2S ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7562,"Na+ ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7563,"Cl- ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7564,"Ca++ ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7565,"Li+ ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7566,"Br- ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7567,"NH4+ ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7568,"CO3-- ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7569,"DEACOO- ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7570,"DEA ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7571,"DEA+ ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7572,"BEA ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7573,"BEA+ ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7574,"BEACOO- ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7575,"K+ ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7576,"HS- ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7577,"S-- ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7578,"I- ","H2S ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7579,"Mg++ ","H2S ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7580,"Ba++ ","H2S ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7581,"Sr++ ","H2S ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7583,"ethanol ","methanol ","Classic ",0.0504,0.0,0,0.0504,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0504,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7584,"MEG ","methanol ","Classic ",0.074,0.0,0,0.074,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.074,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7585,"DEG ","methanol ","Classic ",0.0882,0.0,0,0.0882,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0882,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0882,0.0,0.0882,0.0882,0.0882,0.0,0.0,0.0,0,0.0,0.0 +7586,"TEG ","methanol ","Classic ",0.1817,0.0,0,0.1817,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.1817,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7587,"NaCl ","methanol ","Classic ",0.1221,0.0,0,0.1221,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.1221,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1221,0.0,0.1221,0.1221,0.1221,0.0,0.0,0.0,0,0.0,0.0 +7588,"KCl ","methanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7589,"CaCl2 ","methanol ","Classic ",0.2045,0.0,0,0.2045,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2045,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2045,0.0,0.2045,0.2045,0.2045,0.0,0.0,0.0,0,0.0,0.0 +7590,"HCOONa ","methanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7591,"HCOOK ","methanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7592,"HCOOCs ","methanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7593,"helium ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.0,0.0,0,0.0,0.0 +7594,"hydrogen ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7595,"nitrogen ","methanol ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.395,364.0,308.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,364.0,308.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7596,"Ar ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7597,"oxygen ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7598,"H2S ","methanol ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.395,45.0,965.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,45.0,965.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7599,"methane ","methanol ","HV ",0.13,0.0,0,0.13,0.0,0.0,0.395,255.0,1610.0,0,0.0,0.0,0.0,"WS ",0.13,0.395,255.0,1610.0,0.0,0.0,0.0,0.0,0.0,0.0134,0.0,0.0134,0.0134,0.0134,0.0,0.0,0.0,0,0.0,0.0 +7601,"c-propane ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7602,"i-butane ","methanol ","HV ",0.25,0.0,0,0.25,0.0,0.0,0.395,1603.0,1135.0,0,0.0,0.0,0.0,"WS ",0.25,0.395,1603.0,1135.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7604,"2,2-diom C3 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7605,"c-C4 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7606,"i-pentane ","methanol ","HV ",0.26,0.0,0,0.26,0.0,0.0,0.395,744.0,1071.0,0,0.0,0.0,0.0,"WS ",0.26,0.395,744.0,1071.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7607,"n-pentane ","methanol ","HV ",0.26,0.0,0,0.26,0.0,0.0,0.395,1230.0,1186.0,0,0.0,0.0,0.0,"WS ",0.26,0.395,1230.0,1186.0,0.0,0.0,0.0,0.0,0.0,0.051,0.0,0.051,0.051,0.0,0.0,0.0,0.0,0,0.0,0.0 +7608,"c-pentane ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7609,"2,2-dim-C4 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7610,"2,3-dimC4 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7611,"2-m-C5 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7612,"3-m-C5 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7613,"n-hexane ","methanol ","HV ",0.28,0.0,0,0.28,0.0,0.0,0.395,758.0,1276.0,0,0.0,0.0,0.0,"WS ",0.28,0.395,758.0,1276.0,0.0,0.0,0.0,0.0,0.0,0.001,0.0,0.001,0.001,0.0,0.0,0.0,0.0,0,0.0,0.0 +7615,"m-c-C5 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7616,"benzene ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.006,0.0,0.006,0.006,0.0,0.0,0.0,0.0,0,0.0,0.0 +7617,"c-hexane ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7618,"223-tm-C4 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7619,"3,3-dim-C5 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7621,"m-c-C6 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7622,"et-c-C5 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7623,"toluene ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7624,"c-c7 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7625,"11-dm-c-C6 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7626,"c-c8 ","methanol ","Classic ",0.31,0.0,0,0.31,0.0,0.0,0.395,758.0,1276.0,0,0.0,0.0,0.0,"Classic ",0.31,0.395,758.0,1276.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7627,"c-12-dmcC6 ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7628,"et-benzene ","methanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7629,"MDEA+ ","methanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7630,"H3O+ ","methanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7631,"MDEA ","methanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7632,"HCO3- ","methanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7633,"OH- ","methanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7634,"Na+ ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7635,"Cl- ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7636,"Ca++ ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7637,"Li+ ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7638,"Br- ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7639,"NH4+ ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7640,"CO3-- ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7641,"DEACOO- ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7642,"DEA ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7643,"DEA+ ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7644,"BEA ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7645,"BEA+ ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7646,"BEACOO- ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7647,"K+ ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7648,"HS- ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7649,"S-- ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7650,"I- ","methanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7651,"Mg++ ","methanol ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7652,"Ba++ ","methanol ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7653,"Sr++ ","methanol ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7654,"methanol ","MEG ","Classic ",0.074,0.0,0,0.074,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.074,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7655,"ethanol ","MEG ","Classic ",0.1626,0.0,0,0.1626,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.1626,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7657,"DEG ","MEG ","Classic ",0.0301,0.0,0,0.0301,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0301,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7658,"TEG ","MEG ","Classic ",0.0059,0.0,0,0.0059,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0059,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.025,0.0,-0.01,-0.01,0.0,0.0,0.0,0.0,1,0.0,0.0 +7660,"KCl ","MEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7662,"HCOONa ","MEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7663,"HCOOK ","MEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7664,"HCOOCs ","MEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7665,"helium ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7666,"hydrogen ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7667,"Ar ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7668,"oxygen ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7670,"H2S ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7671,"c-propane ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7672,"i-butane ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7673,"n-butane ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7674,"2,2-diom C3 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7675,"c-C4 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7676,"i-pentane ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7677,"n-pentane ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7678,"c-pentane ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7679,"2,2-dim-C4 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7680,"2,3-dimC4 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7681,"2-m-C5 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7682,"3-m-C5 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7683,"n-hexane ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.059,0.0,0.059,0.059,0.0,0.0,0.0,0.0,0,0.0,0.0 +7685,"m-c-C5 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7686,"benzene ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.049,0.0,0.049,0.049,0.0,0.0,0.0,0.0,1,0.04,0.0 +7687,"c-hexane ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7688,"223-tm-C4 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7689,"3,3-dim-C5 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7691,"m-c-C6 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7692,"et-c-C5 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7693,"toluene ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.051,0.0,0.051,0.051,0.0,0.0,0.0,0.0,1,0.042,0.0 +7694,"c-c7 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7695,"11-dm-c-C6 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7696,"c-c8 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7697,"c-12-dmcC6 ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7698,"et-benzene ","MEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7699,"MDEA+ ","MEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7700,"H3O+ ","MEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7701,"MDEA ","MEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7702,"HCO3- ","MEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7703,"OH- ","MEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7704,"Na+ ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7705,"Cl- ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7706,"Ca++ ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7707,"Li+ ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7708,"Br- ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7709,"NH4+ ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7710,"CO3-- ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7711,"DEACOO- ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7712,"DEA ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7713,"DEA+ ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7714,"BEA ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7715,"BEA+ ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7716,"BEACOO- ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7717,"K+ ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7718,"HS- ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7719,"S-- ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7720,"I- ","MEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7721,"Mg++ ","MEG ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7722,"Ba++ ","MEG ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7723,"Sr++ ","MEG ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7725,"ethanol ","TEG ","Classic ",0.2876,0.0,0,0.2876,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.1626,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7727,"DEG ","TEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0301,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7728,"NaCl ","TEG ","Classic ",0.365,0.0,0,0.365,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0588,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7729,"KCl ","TEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7730,"CaCl2 ","TEG ","HV ",0.13,0.0,0,0.13,0.0,0.0,-3.054,352.3,206.9,0,0.0,0.0,0.0,"Classic ",0.0842,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7731,"HCOONa ","TEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7732,"HCOOK ","TEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7733,"HCOOCs ","TEG ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7734,"helium ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7735,"hydrogen ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7737,"Ar ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7738,"oxygen ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7743,"c-propane ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7744,"i-butane ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7746,"2,2-diom C3 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7747,"c-C4 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7748,"i-pentane ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7750,"c-pentane ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7751,"2,2-dim-C4 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7752,"2,3-dimC4 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7753,"2-m-C5 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7754,"3-m-C5 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7755,"n-hexane ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.07,0.0,0.07,0.07,0.0,0.0,0.0,0.0,0,0.0,0.0 +7757,"m-c-C5 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7758,"benzene ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.032,0.0,0.032,0.032,0.0,0.0,0.0,0.0,1,0.083,0.0 +7759,"c-hexane ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7760,"223-tm-C4 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7761,"3,3-dim-C5 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7763,"m-c-C6 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7764,"et-c-C5 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7765,"toluene ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.038,0.0,0.038,0.038,0.0,0.0,0.0,0.0,1,0.048,0.0 +7766,"c-c7 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7767,"11-dm-c-C6 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7768,"c-c8 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,601.7,2063.0,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,601.7,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7769,"c-12-dmcC6 ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7770,"et-benzene ","TEG ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7771,"MDEA+ ","TEG ","HV ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7772,"H3O+ ","TEG ","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7773,"MDEA ","TEG ","HV ",0.0,0.0,0,0.0,0.0,0.0,0.386,-1124.83,763.56,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7774,"HCO3- ","TEG ","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7775,"OH- ","TEG ","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7776,"Na+ ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7777,"Cl- ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7778,"Ca++ ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7779,"Li+ ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7780,"Br- ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7781,"NH4+ ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7782,"CO3-- ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7783,"DEACOO- ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7784,"DEA ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7785,"DEA+ ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7786,"BEA ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7787,"BEA+ ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7788,"BEACOO- ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7789,"K+ ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7790,"HS- ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7791,"S-- ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7792,"I- ","TEG ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7793,"Mg++ ","TEG ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7794,"Ba++ ","TEG ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7795,"Sr++ ","TEG ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7797,"methanol ","oxygen ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,1610.0,255.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7798,"ethanol ","oxygen ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,1610.0,255.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7799,"MEG ","oxygen ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7800,"DEG ","oxygen ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7801,"TEG ","oxygen ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7802,"NaCl ","oxygen ","Classic ",0.8,0.0,0,0.8,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"WS ",0.5,0.084,7623.0,5281.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7803,"KCl ","oxygen ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.097,6733.0,4007.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7804,"CaCl2 ","oxygen ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"WS ",0.5,0.055,8790.0,14765.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7805,"HCOONa ","oxygen ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7806,"HCOOK ","oxygen ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7807,"HCOOCs ","oxygen ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +7808,"helium ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7809,"hydrogen ","oxygen ","Classic ",0.0079,0.0,0,0.0079,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0079,0.0,0.0079,0.0079,0.0079,0.0,0.0,0.0,0,0.0,0.0 +7810,"nitrogen ","oxygen ","Classic ",-0.0078,0.0,0,-0.0078,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.0078,0.0,-0.0078,-0.0078,-0.0078,0.0,0.0,0.0,0,0.0,0.0 +7811,"Ar ","oxygen ","Classic ",0.0178,0.0,0,0.0178,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0178,0.0,0.0178,0.0178,0.0178,0.0,0.0,0.0,0,0.0,0.0 +7812,"oxygen ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0301,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7813,"CO2 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7814,"H2S ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7815,"methane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7816,"ethane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7817,"propane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7818,"c-propane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7819,"i-butane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7820,"n-butane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7821,"2,2-diom C3 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7822,"c-C4 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7823,"i-pentane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7824,"n-pentane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7825,"c-pentane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7826,"2,2-dim-C4 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7827,"2,3-dimC4 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7828,"2-m-C5 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7829,"3-m-C5 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7830,"n-hexane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7831,"hexane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7832,"m-c-C5 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7833,"benzene ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7834,"c-hexane ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7835,"223-tm-C4 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7836,"3,3-dim-C5 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7837,"n-heptane","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7838,"m-c-C6 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7839,"et-c-C5 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7840,"toluene ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7841,"c-c7 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7842,"11-dm-c-C6 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7843,"c-c8 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7844,"c-12-dmcC6 ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7845,"et-benzene ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7846,"MDEA+ ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7847,"H3O+ ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7848,"MDEA ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7849,"HCO3- ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7850,"OH- ","oxygen ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7851,"Na+ ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7852,"Cl- ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7853,"Ca++ ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7854,"Li+ ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7855,"Br- ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7856,"NH4+ ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7857,"CO3-- ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7858,"DEACOO- ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7859,"DEA ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7860,"DEA+ ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7861,"BEA ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7862,"BEA+ ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7863,"BEACOO- ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7864,"K+ ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7865,"HS- ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7866,"S-- ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7867,"I- ","oxygen ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7868,"Mg++ ","oxygen ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7869,"Ba++ ","oxygen ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7870,"Sr++ ","oxygen ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7871,"water ","n-butane ","HV ",0.52,0.0,0,0.52,0.0,0.0,0.12,-567.8,3181.0,0,0.0,0.0,0.0,"WS ",0.53,0.122,2467.0,274.0,0.0,1.97,-1.93,0.0,0.0,0.0875,0.0,0.0875,0.0875,0.0,0.0,0.0,0.0,0,0.0,0.0 +7872,"methanol ","n-butane ","HV ",0.25,0.0,0,0.25,0.0,0.0,0.395,1135.0,1603.0,0,0.0,0.0,0.0,"WS ",0.22,0.395,895.0,435.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.05,0.05,0.0,0.0,0.0,0.0,0,0.0,0.0 +7873,"ethanol ","n-butane ","HV ",0.25,0.0,0,0.25,0.0,0.0,0.395,1135.0,1603.0,0,0.0,0.0,0.0,"WS ",0.22,0.395,895.0,435.0,0.0,0.0,0.0,0.0,0.0,0.005,0.0,0.005,0.005,0.0,0.0,0.0,0.0,0,0.0,0.0 +7874,"MEG ","n-butane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7875,"DEG ","n-butane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7876,"TEG ","n-butane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.1,0.1,0.0,0.0,0.0,0.0,0,0.0,0.0 +7877,"NaCl ","n-butane ","Classic ",0.7,0.0,0,0.7,0.0,0.0,0.0369,20193.0,3528.0,0,0.0,0.0,0.0,"Classic ",0.72,0.0592,10539.0,4777.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7878,"KCl ","n-butane ","Classic ",1.35,0.0,0,1.35,0.0,0.0,0.0078,-48374.0,35311.0,0,0.0,0.0,0.0,"Classic ",1.36,0.0441,60604.0,7490.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7879,"CaCl2 ","n-butane ","Classic ",1.18,0.0,0,1.18,0.0,0.0,0.0364,99000.0,3080.0,0,0.0,0.0,0.0,"Classic ",1.18,0.0364,99000.0,3080.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7880,"HCOONa ","n-butane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7881,"HCOOK ","n-butane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7882,"HCOOCs ","n-butane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7883,"helium ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7884,"hydrogen ","n-butane ","Classic ",0.1446,0.0,0,0.1446,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0799,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1446,0.0,0.1446,0.1446,0.1446,0.0,0.0,0.0,0,0.0,0.0 +7885,"nitrogen ","n-butane ","Classic ",0.0597,0.0,0,0.09,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.08,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0597,0.0,0.0597,0.0597,0.09,0.0,0.0,0.0,0,0.0,0.0 +7886,"Ar ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7887,"oxygen ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7888,"CO2 ","n-butane ","Classic ",0.14120001,0.0,0,0.12980001,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.14120001,0.0,0.14120001,0.14120001,0.12980001,0.0,0.0,0.0,0,0.0,0.0 +7889,"H2S ","n-butane ","Classic ",0.06,0.0,0,0.06,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06,0.0,0.06,0.06,0.06,0.0,0.0,0.0,0,0.0,0.0 +7890,"c-propane ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7891,"i-butane ","n-butane ","Classic ",4.7251E-4,0.0,0,4.7251E-4,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",-0.6500216,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7892,"n-butane ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7893,"2,2-diom C3 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7894,"c-C4 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7895,"i-pentane ","n-butane ","Classic ",9.2632E-4,0.0,0,9.2632E-4,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9.2632E-4,0.0,9.2632E-4,9.2632E-4,0.0,0.0,0.0,0.0,0,0.0,0.0 +7896,"n-pentane ","n-butane ","Classic ",9.7665E-4,0.0,0,9.7665E-4,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9.7665E-4,0.0,9.7665E-4,9.7665E-4,0.0,0.0,0.0,0.0,0,0.0,0.0 +7897,"c-pentane ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7898,"2,2-dim-C4 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7899,"2,3-dimC4 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7900,"2-m-C5 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7901,"3-m-C5 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7902,"n-hexane ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7903,"hexane ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7904,"m-c-C5 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7905,"benzene ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7906,"c-hexane ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7907,"223-tm-C4 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7908,"3,3-dim-C5 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7909,"n-heptane","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7910,"m-c-C6 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7911,"et-c-C5 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7912,"toluene ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7913,"c-c7 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7914,"11-dm-c-C6 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7915,"c-c8 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7916,"c-12-dmcC6 ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7917,"et-benzene ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7918,"MDEA+ ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7919,"H3O+ ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7920,"MDEA ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7921,"HCO3- ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7922,"OH- ","n-butane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7923,"Na+ ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7924,"Cl- ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7925,"Ca++ ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7926,"Li+ ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7927,"Br- ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7928,"NH4+ ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7929,"CO3-- ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7930,"DEACOO- ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7931,"DEA ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7932,"DEA+ ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7933,"BEA ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7934,"BEA+ ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7935,"BEACOO- ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7936,"K+ ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7937,"HS- ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7938,"S-- ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7939,"I- ","n-butane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7940,"Mg++ ","n-butane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7941,"Ba++ ","n-butane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7942,"Sr++ ","n-butane ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7943,"methanol ","ethanol ","Classic ",0.0504,0.0,0,0.0504,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0504,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7945,"MEG ","ethanol ","Classic ",0.074,0.0,0,0.074,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.074,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7946,"DEG ","ethanol ","Classic ",0.0882,0.0,0,0.0882,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0882,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7947,"TEG ","ethanol ","Classic ",0.1817,0.0,0,0.1817,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.1817,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7948,"NaCl ","ethanol ","Classic ",0.1221,0.0,0,0.1221,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.1221,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7949,"KCl ","ethanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7950,"CaCl2 ","ethanol ","Classic ",0.2045,0.0,0,0.2045,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2045,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7951,"HCOONa ","ethanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7952,"HCOOK ","ethanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7953,"HCOOCs ","ethanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7954,"helium ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7955,"hydrogen ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7956,"nitrogen ","ethanol ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.395,364.0,308.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,364.0,308.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7957,"Ar ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7958,"oxygen ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7959,"CO2 ","ethanol ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.395,276.0,3307.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,276.0,3307.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7960,"H2S ","ethanol ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.395,45.0,965.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,45.0,965.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7964,"c-propane ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7965,"i-butane ","ethanol ","HV ",0.25,0.0,0,0.25,0.0,0.0,0.395,1603.0,1135.0,0,0.0,0.0,0.0,"WS ",0.25,0.395,1603.0,1135.0,0.0,0.0,0.0,0.0,0.0,0.018,0.0,0.018,0.018,0.0,0.0,0.0,0.0,0,0.0,0.0 +7967,"2,2-diom C3 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7968,"c-C4 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7969,"i-pentane ","ethanol ","HV ",0.26,0.0,0,0.26,0.0,0.0,0.395,744.0,1071.0,0,0.0,0.0,0.0,"WS ",0.26,0.395,744.0,1071.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7970,"n-pentane ","ethanol ","HV ",0.26,0.0,0,0.26,0.0,0.0,0.395,1230.0,1186.0,0,0.0,0.0,0.0,"WS ",0.26,0.395,1230.0,1186.0,0.0,0.0,0.0,0.0,0.0,0.045,0.0,0.045,0.045,0.0,0.0,0.0,0.0,0,0.0,0.0 +7971,"c-pentane ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7972,"2,2-dim-C4 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7973,"2,3-dimC4 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7974,"2-m-C5 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7975,"3-m-C5 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7976,"n-hexane ","ethanol ","HV ",0.28,0.0,0,0.28,0.0,0.0,0.395,758.0,1276.0,0,0.0,0.0,0.0,"WS ",0.28,0.395,758.0,1276.0,0.0,0.0,0.0,0.0,0.0,0.01,0.0,0.01,0.01,0.01,0.0,0.0,0.0,0,0.0,0.0 +7978,"m-c-C5 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7979,"benzene ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.022,0.0,0.022,0.022,0.022,0.0,0.0,0.0,1,0.002,0.0 +7980,"c-hexane ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.033,0.0,0.033,0.033,0.033,0.0,0.0,0.0,0,0.0,0.0 +7981,"223-tm-C4 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7982,"3,3-dim-C5 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7983,"n-heptane","ethanol ","Classic ",0.29,0.0,0,0.29,0.0,0.0,0.395,758.0,1276.0,0,0.0,0.0,0.0,"Classic ",0.29,0.395,758.0,1276.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7984,"m-c-C6 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7985,"et-c-C5 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7986,"toluene ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.02,0.0,0.02,0.02,0.02,0.0,0.0,0.0,1,0.003,0.0 +7987,"c-c7 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7988,"11-dm-c-C6 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7989,"c-c8 ","ethanol ","Classic ",0.31,0.0,0,0.31,0.0,0.0,0.395,758.0,1276.0,0,0.0,0.0,0.0,"Classic ",0.31,0.395,758.0,1276.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7990,"c-12-dmcC6 ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7991,"et-benzene ","ethanol ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7992,"MDEA+ ","ethanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7993,"H3O+ ","ethanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7994,"MDEA ","ethanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7995,"HCO3- ","ethanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7996,"OH- ","ethanol ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +7997,"Na+ ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7998,"Cl- ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +7999,"Ca++ ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8000,"Li+ ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8001,"Br- ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8002,"NH4+ ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8003,"CO3-- ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8004,"DEACOO- ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8005,"DEA ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8006,"DEA+ ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8007,"BEA ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8008,"BEA+ ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8009,"BEACOO- ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8010,"K+ ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8011,"HS- ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8012,"S-- ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8013,"I- ","ethanol ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8014,"Mg++ ","ethanol ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8015,"Ba++ ","ethanol ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8016,"Sr++ ","ethanol ","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8019,"ethanol ","n-pentane ","HV ",0.26,0.0,0,0.26,0.0,0.0,0.395,1186.0,1230.0,0,0.0,0.0,0.0,"WS ",0.26,0.26,0.395,1186.0,0.0,0.0,0.0,0.0,0.0,-0.008,0.0,-0.008,-0.008,0.0,0.0,0.0,0.0,0,0.0,0.0 +8020,"MEG ","n-pentane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.2,0.3656,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8021,"DEG ","n-pentane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.2,0.3656,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8022,"TEG ","n-pentane ","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.2,0.3656,2063.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8023,"NaCl ","n-pentane ","Classic ",0.7,0.0,0,0.7,0.0,0.0,0.0369,20193.0,3528.0,0,0.0,0.0,0.0,"Classic ",0.7,0.7,0.0369,20193.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8024,"KCl ","n-pentane ","Classic ",1.35,0.0,0,1.35,0.0,0.0,0.0078,-48374.0,35311.0,0,0.0,0.0,0.0,"Classic ",1.35,1.35,0.0078,-48374.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8025,"CaCl2 ","n-pentane ","Classic ",1.18,0.0,0,1.18,0.0,0.0,0.0364,99000.0,3080.0,0,0.0,0.0,0.0,"Classic ",1.18,1.18,0.0364,99000.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8026,"HCOONa ","n-pentane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8027,"HCOOK ","n-pentane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8028,"HCOOCs ","n-pentane ","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8029,"helium ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8030,"hydrogen ","n-pentane ","Classic ",0.2166,0.0,0,0.2166,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2166,0.2166,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8032,"Ar ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8033,"oxygen ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8035,"H2S ","n-pentane ","Classic ",0.06,0.0,0,0.06,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.06,0.06,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8039,"c-propane ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8040,"i-butane ","n-pentane ","Classic ",8.1462E-4,0.0,0,8.1462E-4,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8042,"2,2-diom C3 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8043,"c-C4 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8044,"i-pentane ","n-pentane ","Classic ",3.9999E-4,0.0,0,3.9999E-4,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8045,"n-pentane ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8046,"c-pentane ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8047,"2,2-dim-C4 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8048,"2,3-dimC4 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8049,"2-m-C5 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8050,"3-m-C5 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8051,"n-hexane ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8052,"hexane ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8053,"m-c-C5 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8054,"benzene ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8055,"c-hexane ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8056,"223-tm-C4 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8057,"3,3-dim-C5 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8058,"n-heptane","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8059,"m-c-C6 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8060,"et-c-C5 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8061,"toluene ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8062,"c-c7 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8063,"11-dm-c-C6 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8064,"c-c8 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8065,"c-12-dmcC6 ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8066,"et-benzene ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8067,"MDEA+ ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8068,"H3O+ ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8069,"MDEA ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8070,"HCO3- ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8071,"OH- ","n-pentane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8072,"Na+ ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8073,"Cl- ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8074,"Ca++ ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8075,"Li+ ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8076,"Br- ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8077,"NH4+ ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8078,"CO3-- ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8079,"DEACOO- ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8080,"DEA ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8081,"DEA+ ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8082,"BEA ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8083,"BEA+ ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8084,"BEACOO- ","n-pentane ","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8086,"methanol ","n-heptane","HV ",0.26,0.0,0,0.26,0.0,0.0,0.395,1186.0,1230.0,0,0.0,0.0,0.0,"WS ",0.26,0.26,0.395,1186.0,0.0,0.0,0.0,0.0,0.0,-0.002,0.0,-0.002,-0.002,-0.002,0.0,0.0,0.0,0,0.0,0.0 +8087,"ethanol ","n-heptane","HV ",0.26,0.0,0,0.26,0.0,0.0,0.395,1186.0,1230.0,0,0.0,0.0,0.0,"WS ",0.26,0.26,0.395,1186.0,0.0,0.0,0.0,0.0,0.0,0.008,0.0,0.008,0.008,0.008,0.0,0.0,0.0,0,0.0,0.0 +8088,"MEG ","n-heptane","Classic",0.2,0.0,0,0.08,0.0,0.0,0.39867,4938.4,-1924.0,0,0.0,0.0,0.0,"WS",-0.393091937,0.39867,4938.0,1924.3,0.0,0.76,-7.79,-7.9586,0.76,0.047,0.0,0.047,0.047,0.047,0.0,0.0,0.0,0,0.0,0.0 +8089,"DEG ","n-heptane","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.2,0.3656,2063.0,0.0,0.0,0.0,0.0,0.0,0.065,0.0,0.065,0.065,0.065,0.0,0.0,0.0,0,0.0,0.0 +8090,"TEG ","n-heptane","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.2,0.3656,2063.0,0.0,0.0,0.0,0.0,0.0,0.11,0.0,0.11,0.11,0.094,0.0,0.0,0.0,0,0.0,0.0 +8091,"NaCl ","n-heptane","Classic ",0.7,0.0,0,0.7,0.0,0.0,0.0369,20193.0,3528.0,0,0.0,0.0,0.0,"Classic ",0.7,0.7,0.0369,20193.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8092,"KCl ","n-heptane","Classic ",1.35,0.0,0,1.35,0.0,0.0,0.0078,-48374.0,35311.0,0,0.0,0.0,0.0,"Classic ",1.35,1.35,0.0078,-48374.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8093,"CaCl2 ","n-heptane","Classic ",1.18,0.0,0,1.18,0.0,0.0,0.0364,99000.0,3080.0,0,0.0,0.0,0.0,"Classic ",1.18,1.18,0.0364,99000.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8094,"HCOONa ","n-heptane","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8095,"HCOOK ","n-heptane","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8096,"HCOOCs ","n-heptane","Classic ",0.5,0.0,0,0.5,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8097,"helium ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8098,"hydrogen ","n-heptane","Classic ",0.2166,0.0,0,0.2166,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.2166,0.2166,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8099,"nitrogen ","n-heptane","Classic ",0.08,0.0,0,0.08,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.08,0.08,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8100,"Ar ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8101,"oxygen ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8102,"CO2 ","n-heptane","Classic ",0.12,0.0,0,0.12,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.12,0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8103,"H2S ","n-heptane","Classic ",0.0737,0.0,0,0.0737,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.06,0.06,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8105,"ethane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8106,"propane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8107,"c-propane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8108,"i-butane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8109,"n-butane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8110,"2,2-diom C3 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8111,"c-C4 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8112,"i-pentane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8113,"n-pentane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8114,"c-pentane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8115,"2,2-dim-C4 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8116,"2,3-dimC4 ","n-heptane ","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8117,"2-m-C5 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8118,"3-m-C5 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8119,"n-hexane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8120,"hexane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8121,"m-c-C5 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8122,"benzene ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8123,"c-hexane ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8124,"223-tm-C4 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8125,"3,3-dim-C5 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8127,"m-c-C6 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8128,"et-c-C5 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8129,"toluene ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8130,"c-c7 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8131,"11-dm-c-C6 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8132,"c-c8 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8133,"c-12-dmcC6 ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8134,"et-benzene ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8135,"MDEA+ ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8136,"H3O+ ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8137,"MDEA ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8138,"HCO3- ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8139,"OH- ","n-heptane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8140,"Na+ ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8141,"Cl- ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8142,"Ca++ ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8143,"Li+ ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8144,"Br- ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8145,"NH4+ ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8146,"CO3-- ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8147,"DEACOO- ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8148,"DEA ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8149,"DEA+ ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8150,"BEA ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8151,"BEA+ ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8152,"BEACOO- ","n-heptane","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8153,"S8","methane ","Classic",0.1,0.0,0,0.1,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.1,0.0,0.1,0.1,0.1,0.0,0.0,0.0,0,0.0,0.0 +8154,"S8","n-hexane","Classic",0.05,0.0,0,-0.08,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8155,"S8","n-pentane","Classic",0.05,0.0,0,-0.08,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8156,"S8","i-pentane","Classic",0.05,0.0,0,-0.08,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8158,"S8","n-heptane","Classic",0.05,0.0,0,-0.08,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8159,"S8","n-octane","Classic",0.05,0.0,0,-0.08,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8160,"S8","i-butane","Classic",0.05,0.0,0,-0.08,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8161,"S8","n-butane","Classic",0.05,0.0,0,-0.08,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8162,"c-hexane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8163,"c-c7 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8164,"hexane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +8165,"HCO3- ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8166,"MDEA ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8167,"H3O+ ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8168,"MDEA+ ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8169,"et-benzene ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8170,"c-12-dmcC6 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8171,"Na+ ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8172,"11-dm-c-C6 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8173,"Cl- ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8174,"toluene ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8175,"et-c-C5 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8176,"m-c-C6 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8177,"n-heptane","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +8178,"3,3-dim-C5 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8179,"223-tm-C4 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8180,"benzene ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8181,"c-c8 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +8182,"DEA+ ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8183,"Sr++ ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8184,"Ba++ ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8185,"m-c-C5 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8186,"I- ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8187,"HS- ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8188,"K+ ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8189,"BEACOO- ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8190,"OH- ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8191,"BEA ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8192,"S-- ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8193,"DEA ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8194,"DEACOO- ","neon","Classic ",1.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8195,"CO3-- ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8196,"NH4+ ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8197,"Br- ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8198,"Li+ ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8199,"Ca++ ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8200,"BEA+ ","neon","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8201,"CaCl2 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0174,80541.0,2200.0,0,0.0,0.0,0.0,"WS ",0.5,0.055,8790.0,14765.0,0.0,0.0,0.0,0.0,0.0,2.29,0.0,2.29,2.29,2.29,0.0,0.0,0.0,0,0.0,0.0 +8202,"oxygen ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.0078,0.0,-0.0078,-0.0078,-0.0078,0.0,0.0,0.0,0,0.0,0.0 +8203,"Ar ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8204,"nitrogen ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8205,"hydrogen ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0071,0.0,0.0071,0.0071,0.0071,0.0,0.0,0.0,0,0.0,0.0 +8206,"helium ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8207,"HCOOCs ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +8208,"n-hexane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +8209,"HCOONa ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +8210,"methane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.02,0.0,0.02,0.02,0.02,0.0,0.0,0.0,0,0.0,0.0 +8211,"KCl ","neon","HV ",0.0,0.0,0,0.0,0.0,0.0,0.0078,41212.0,2335.0,0,0.0,0.0,0.0,"Classic ",0.5,0.097,6733.0,4007.0,0.0,0.0,0.0,0.0,0.0,5.24,0.0,5.24,5.24,5.24,0.0,0.0,0.0,0,0.0,0.0 +8212,"NaCl ","neon","HV ",0.0,0.0,0,0.0,0.0,0.0,0.0105,94947.0,1773.0,0,0.0,0.0,0.0,"WS ",0.5,0.084,7623.0,5281.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8213,"TEG ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.5,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8214,"DEG ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.5,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8215,"MEG ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.5,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8216,"ethanol ","neon","HV ",0.0,0.0,0,0.0,0.0,0.0,0.395,308.0,364.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,1610.0,255.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +8217,"HCOOK ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +8218,"c-C4 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8219,"3-m-C5 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8220,"Mg++ ","neon","Classic ",0.0,0.0,0,1.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8221,"2-m-C5 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8222,"2,3-dimC4 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8223,"2,2-dim-C4 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8224,"c-pentane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8225,"CO2 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8226,"i-pentane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +8227,"H2S ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8228,"2,2-diom C3 ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8229,"n-butane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +8230,"i-butane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +8231,"c-propane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8232,"propane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +8233,"ethane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06,0.0,0.06,0.06,0.06,0.0,0.0,0.0,0,0.0,0.0 +8234,"methanol ","neon","HV ",0.0,0.0,0,0.0,0.0,0.0,0.395,308.0,364.0,0,0.0,0.0,0.0,"WS ",0.5,0.395,1610.0,255.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0,0.0,0.0 +8235,"n-pentane ","neon","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +8236,"water","AceticAcid","HV",-0.1481,0.0,0,0.0,0.0,0.0,-2.349,-121.68,-287.28,0,0.0,0.0,0.0,"HV",0.0,0.0,0.0,0.0,0.0,1.288,0.95,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8237,"CO2","AceticAcid","HV",0.0,0.0,0,0.0,0.0,0.0,-0.0133,4368.69,-2346.43,0,0.0,0.0,0.0,"HV",0.0,0.3,0.0,0.0,0.0,-5.277,4.042,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8238,"methane","AceticAcid","HV",0.112898,0.0,0,0.0,0.0,0.0,0.0,3161.4,-921.76,0,0.0,0.0,0.0,"HV",0.0,0.3,0.0,0.0,0.0,-2.1938,1.2181,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8239,"CO2","Ac-","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8240,"Ac-","water ","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8241,"AceticAcid","HCO3-","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8242,"AceticAcid","Ac-","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8243,"MDEA","Ac-","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8244,"HCO3-","Ac-","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8245,"AceticAcid","MDEA+","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8246,"AceticAcid","MDEA","HV",0.2,0.0,0,0.0,0.0,0.0,0.0,600.0,300.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8247,"Ac-","MDEA+","Classic ",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0,0.0,0.0 +8248,"Piperazine-n","water-n","HV",0.2,0.0,0,0.0,0.0,0.0,0.36498,2622.533,-1705.0208,0,0.0,0.0,0.0,"Classic",0.5,0.0,0.0,0.0,0.0,-2.7049,0.7156,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8249,"CO2","Piperazine","Classic",-1.031953999,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8250,"CO2","Piperazine+","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,1,-5.97E-5,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8251,"CO2","PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8252,"CO2","H+PZCOO-","Classic",-0.219549307,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8253,"CO2","-OOCPZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8254,"water","Piperazine+","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8255,"water","PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8256,"water","H+PZCOO-","Classic",-0.199480972,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8257,"water","-OOCPZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8258,"Piperazine","HCO3-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8259,"Piperazine","Piperazine+","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8260,"Piperazine","PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8261,"Piperazine","H+PZCOO-","Classic",-0.27882929,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8262,"Piperazine","-OOCPZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8263,"HCO3-","Piperazine+","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8264,"HCO3-","PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8265,"HCO3-","H+PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8266,"HCO3-","-OOCPZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8267,"Piperazine+","PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8268,"Piperazine+","H+PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8269,"Piperazine+","-OOCPZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8270,"PZCOO-","H+PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8271,"PZCOO-","-OOCPZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8272,"H+PZCOO-","-OOCPZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8273,"OH-","Piperazine","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8274,"OH-","Piperazine+","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8275,"OH-","HCO3-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8276,"OH-","H+PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8277,"OH-","PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8278,"OH-","-OOCPZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8279,"Piperazine","water","HV",0.2,0.0,0,0.0,0.0,0.0,0.36498,2622.533,-1705.0208,0,0.0,0.0,0.0,"Classic",0.5,0.0,0.0,0.0,0.0,-2.7049,0.7156,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8280,"MDEA","Piperazine","Classic",-0.34688711,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8281,"MDEA","Piperazine+","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8282,"MDEA","PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8283,"MDEA","H+PZCOO-","Classic",-0.2,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8284,"MDEA","-OOCPZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8285,"MDEA+","Piperazine","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8286,"MDEA+","Piperazine+","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8287,"MDEA+","PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8288,"MDEA+","H+PZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8289,"MDEA+","-OOCPZCOO-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8290,"MDEA","water","HV",0.0,0.0,0,0.0,0.0,0.0,0.21,-1461.0,1201.0,0,0.0,0.0,0.0,"WS ",0.0,0.386,-401.57,803.41,0.0,5.89,-7.24,0.0,0.0,-0.25,0.0,-0.25,-0.25,0.0,0.0,0.0,0.0,0,0.0,0.0 +8291,"OH-","CO3--","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8292,"HCO3-","CO3--","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8293,"AceticAcid","CO3--","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8294,"AceticAcid","OH-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8295,"Ac-","CO3--","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.386,-401.57,803.41,0.0,5.093855611,-6.006005569,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8296,"Ac-","OH-","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8297,"CO3--","Piperazine+","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8298,"Piperazine","MDEA+","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8299,"methane","H+PZCOO-","Classic",0.760482,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8300,"methane","Piperazine+","Classic",1.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,6.30096E-4,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8301,"Piperazine","methane ","Classic",0.599959902,0.0,0,0.0,0.0,0.0,0.122,2467.0,274.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.646504377,0.0,0.646504377,0.646504377,0.646504377,0.0,0.0,0.0,0,0.0,0.0 +8302,"n-octane","water ","Classic",0.5,0.0,0,0.5,0.0,0.0,0.145,681.0,2507.0,0,0.0,0.0,0.0,"WS ",0.5,0.145,681.0,2507.0,0.0,0.0,0.0,0.0,0.0,-0.0165,0.0,-0.0165,-0.0165,0.0,0.0,0.0,0.0,0,0.0,0.0 +8303,"n-nonane","water ","Classic",0.5,0.0,0,0.5,0.0,0.0,0.145,681.0,2507.0,0,0.0,0.0,0.0,"WS ",0.5,0.145,681.0,2507.0,0.0,0.0,0.0,0.0,0.0,-0.0425,0.0,-0.0425,-0.0425,0.0,0.0,0.0,0.0,0,0.0,0.0 +8304,"n-decane","water ","Classic",0.5,0.0,0,0.5,0.0,0.0,0.145,681.0,2507.0,0,0.0,0.0,0.0,"WS ",0.5,0.145,681.0,2507.0,0.0,0.0,0.0,0.0,0.0,-0.0685,0.0,-0.0685,-0.0685,0.0,0.0,0.0,0.0,0,0.0,0.0 +8306,"methanolPVTsim","water ","HV ",-0.0789,0.0,0,-0.0789,0.0,0.0,0.25,549.8,-407.2,0,0.0,0.0,0.0,"WS ",0.093103947,0.303,-48.68,610.6,0.0,1.54,-1.02,0.0,0.0,-0.09,0.093103947,-0.09,-0.09,-0.09,0.093103947,0.0,0.0,0,0.0,0.0 +8307,"water","MEGPVTsim18","HV ",0.0,0.0,0,-0.0385,0.0,0.0,0.3226,-256.39,-60.79,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,0.0,0.51,0.78,0.0,0.0,-0.115,0.0,-0.115,-0.115,-0.115,0.0,0.0,0.0,0,0.0,0.0 +8308,"water","MEGPVTsim19","HV ",0.0,-0.63,,-0.0385,0.0,0.0,0.004,2673.0,-957.6,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,0.0,0.0,0.0,0.0,0.0,-0.115,0.0,-0.115,-0.115,-0.115,0.0,0.0,0.0,0,0.0,0.0 +8309,"methanolPVTsim","propanePVTsim","HV ",0.14,0.0,0,0.14,0.0,0.0,0.42,183.0,848.0,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,0.0,0.83,0.86,0.0,0.0,-0.115,0.0,-0.115,-0.115,-0.115,0.0,0.0,0.0,0,0.0,0.0 +8310,"ethanolPVTsim","propanePVTsim","HV ",0.0256,0.0,0,0.0256,0.0,0.0,0.395,435.0,895.0,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,0.0,0.0,0.0,0.0,0.0,-0.115,0.0,-0.115,-0.115,-0.115,0.0,0.0,0.0,0,0.0,0.0 +8311,"methanolPVTsim","nbutanePVTsim","HV ",0.18,0.0,0,0.18,0.0,0.0,0.42,1191.0,1148.0,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,0.0,0.0,0.0,0.0,0.0,-0.115,0.0,-0.115,-0.115,-0.115,0.0,0.0,0.0,0,0.0,0.0 +8312,"ethanolPVTsim","nbutanePVTsim","HV ",0.26,0.0,0,0.26,0.0,0.0,0.395,1230.0,1186.0,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,0.0,0.0,0.0,0.0,0.0,-0.115,0.0,-0.115,-0.115,-0.115,0.0,0.0,0.0,0,0.0,0.0 +8313,"mercury","methane ","Classic",0.0497,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8314,"mercury","n-pentane","Classic",0.057,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.02,0.0,0.02,0.02,0.0,0.0,0.0,0.0,0,0.0,0.0 +8315,"mercury","n-hexane","Classic",0.0264,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.075,0.0,-0.075,-0.075,0.0,0.0,0.0,0.0,0,0.0,0.0 +8316,"mercury","n-heptane","Classic",0.0045,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.1,0.0,-0.1,-0.1,0.0,0.0,0.0,0.0,0,0.0,0.0 +8768,"water","NaCl","HV",0.0,0.0,0,-0.0385,0.0,0.0,-0.0145,1506.3,-863.3,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,0.0,4.11,-0.603,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8769,"MEG","NaCl","HV ",0.0,0.0,0,-0.0385,0.0,0.0,-0.0145,1506.3,-863.3,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,0.0,4.11,-0.603,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8770,"water","CaCl2","HV",0.0,0.0,0,-0.0385,0.0,0.0,-0.0145,1506.3,-863.3,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,0.0,4.11,-0.603,0.0,0.0,-0.115,0.0,-0.115,-0.115,-0.115,0.0,0.0,0.0,0,0.0,0.0 +8771,"MEG","CaCl2","HV ",0.0,0.0,0,-0.0385,0.0,0.0,-0.0145,1506.3,-863.3,0,0.0,0.0,0.0,"WS ",0.407748,0.327,1229.0,-946.4,0.0,4.11,-0.603,0.0,0.0,-0.115,0.0,-0.115,-0.115,-0.115,0.0,0.0,0.0,0,0.0,0.0 +8772,"n-nonane","H2S ","Classic ",0.0542,0.0,0,0.0542,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8773,"nC10","nitrogen ","Classic ",0.1293,0.0,0,0.1293,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.08,0.0,0.0,0.0,0,0.0,0.0 +8774,"nC11","nC13","Classic ",-0.05,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8775,"nC14","nC16","Classic ",-0.015,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8776,"n-octane","TEG","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.109,0.0,0.109,0.109,0.0,0.0,0.0,0.0,0,0.0,0.0 +8777,"n-nonane","TEG","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.1,0.1,0.0,0.0,0.0,0.0,0,0.0,0.0 +8778,"nC10","TEG","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.091,0.0,0.091,0.091,0.0,0.0,0.0,0.0,0,0.0,0.0 +8779,"COS","TEG","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08,0.0,0.08,0.08,0.0,0.0,0.0,0.0,0,0.0,0.0 +8780,"COS","MEG","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.1,0.1,0.0,0.0,0.0,0.0,0,0.0,0.0 +8781,"COS","methane","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01,0.0,0.01,0.01,0.0,0.0,0.0,0.0,0,0.0,0.0 +8782,"M-cy-C6","MEG","Classic ",0.0,0.0,0,0.0,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.3656,2063.0,601.7,0.0,0.0,0.0,0.0,0.0,0.061,0.0,0.061,0.061,0.061,0.0,0.0,0.0,0,0.0,0.0 +8784,"DEG ","benzene","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.2,0.3656,2063.0,0.0,0.0,0.0,0.0,0.0,0.028,0.0,0.028,0.028,0.028,0.0,0.0,0.0,1,0.035,0.0 +8785,"DEG ","toluene","Classic ",0.2,0.0,0,0.2,0.0,0.0,0.3656,2063.0,601.7,0,0.0,0.0,0.0,"Classic ",0.2,0.2,0.3656,2063.0,0.0,0.0,0.0,0.0,0.0,0.046,0.0,0.046,0.046,0.046,0.0,0.0,0.0,1,0.033,0.0 +8786,"i-propanol","water ","Classic",0.0,0.0,0,0.0,0.0,0.0,0.2245,2207.03,-2612.51,0,0.0,0.0,0.0,"WS ",0.0,0.3791,-268.88,885.99,0.0,-4.6,7.3,0.0,0.0,-0.08,0.0,-0.08,-0.08,-0.08,0.0,0.0,0.0,0,0.0,0.0 +8787,"1-propanol","water ","Classic",0.0,0.0,0,0.0,0.0,0.0,0.2245,2207.03,-2612.51,0,0.0,0.0,0.0,"WS ",0.0,0.3791,-268.88,885.99,0.0,-4.6,7.3,0.0,0.0,-0.16,0.0,-0.16,-0.16,-0.16,0.0,0.0,0.0,0,0.0,0.0 +8788,"1-propanol","n-hexane","Classic",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"WS ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.017,0.0,0.017,0.017,0.017,0.0,0.0,0.0,0,0.0,0.0 +8789,"1-propanol","c-hexane","Classic",0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"WS ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.029,0.0,0.029,0.029,0.029,0.0,0.0,0.0,0,0.0,0.0 +8790,"mercury","o-xylene","Classic",0.0583,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8791,"mercury","c-hexane","Classic",0.0483,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8792,"methane","1-propanol","Classic",0.19,0.0,0,0.19,0.0,0.0,0.395,2005.0,494.0,0,0.0,0.0,0.0,"WS ",0.19,0.395,2005.0,494.0,0.0,0.0,0.0,0.0,0.0,-0.04,0.0,-0.04,-0.04,0.0,0.0,0.0,0.0,0,0.0,0.0 +8793,"ethane","1-propanol","Classic",0.19,0.0,0,0.19,0.0,0.0,0.395,2005.0,494.0,0,0.0,0.0,0.0,"WS ",0.19,0.395,2005.0,494.0,0.0,0.0,0.0,0.0,0.0,-0.3,0.0,-0.3,-0.3,0.0,0.0,0.0,0.0,0,0.0,0.0 +8794,"mercury","i-butane","Classic",0.05,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8795,"S8","benzene","Classic",0.05,0.0,0,0.05,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8796,"S8","toluene","Classic",0.05,0.0,0,0.05,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8797,"S8","ethane","Classic",0.05,0.0,0,0.05,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8798,"S8","propane","Classic",0.05,0.0,0,0.05,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.05,0.0,0.05,0.05,0.05,0.0,0.0,0.0,0,0.0,0.0 +8799,"S8","water","Classic",0.05,0.0,0,0.2,0.0,0.0,0.15,-123.6011438,4875.094236,0,0.0,0.0,0.0,"Classic",0.5,0.0,26.6,-142.2,0.0,2.137853939,-6.549655038,0.0,0.0,0.2,0.0,0.2,0.2,0.2,0.0,0.0,0.0,0,0.0,0.0 +8800,"mercury","ethane","Classic",0.0704,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8801,"mercury","propane","Classic",0.0674,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8803,"mercury","n-butane","Classic",0.073,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8804,"mercury","benzene","Classic",0.1177,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8805,"mercury","toluene","Classic",0.0704,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8806,"mercury","MEG","Classic",0.2965,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8807,"mercury","water","Classic",0.6896,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8808,"mercury","nitrogen","Classic",0.0165,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8809,"mercury","CO2","Classic",0.3674,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8810,"mercury","n-octane","Classic",-0.0176,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8811,"mercury","nC10","Classic",-0.0534,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8812,"mercury","M-cy-C6","Classic",0.0292,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic",0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8813,"n-octane","methane ","Classic ",0.0447999984025955,0.0,0,0.0447999984025955,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8814,"n-nonane","methane ","Classic ",0.0447999984025955,0.0,0,0.0447999984025955,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8815,"nC10","methane ","Classic ",0.0410999990999699,0.0,0,0.0410999990999699,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8816,"n-octane","CO2","Classic ",0.100000001490116,0.0,0,0.100000001490116,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8817,"n-nonane","CO2","Classic ",0.100000001490116,0.0,0,0.100000001490116,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8818,"nC10","CO2","Classic ",0.130400002002716,0.0,0,0.130400002002716,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8819,"n-octane","nitrogen","Classic ",0.0799999982118607,0.0,0,0.0799999982118607,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8820,"n-nonane","nitrogen","Classic ",0.0799999982118607,0.0,0,0.0799999982118607,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8821,"nC10","nitrogen","Classic ",0.0799999982118607,0.0,0,0.0799999982118607,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,"Classic ",0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 +8822,"n-butane","water ","HV ",0.5,0.0,0,0.5,0.0,0.0,0.145,681.0,2507.0,0,0.0,0.0,0.0,"WS ",0.52,0.145,681.0,2507.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0 diff --git a/src/test/resources/neqsim/thermodynamicOperations/neqsimdb.sql b/src/test/resources/neqsim/thermodynamicOperations/neqsimdb.sql new file mode 100644 index 0000000000..1c1db2fdf4 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/neqsimdb.sql @@ -0,0 +1,24113 @@ +SET DB_CLOSE_DELAY 120; +SET DB_CLOSE_DELAY 120; +SET CACHE_SIZE 131072; +; +CREATE USER IF NOT EXISTS SA SALT '41f89a8af251b8ef' HASH '7f3d8c23e59b48ab81dd8742f353148146bfb91d4fd114f1e7e55228bbf9b846' ADMIN; +CREATE SEQUENCE PUBLIC.SYSTEM_SEQUENCE_8921578E_C8B6_401B_9D5D_98221DE14086 START WITH 1152 BELONGS_TO_TABLE; +CREATE CACHED TABLE PUBLIC.ACETICACIDDATA( + ID INT DEFAULT NULL, + COMP VARCHAR(50) DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + LDENSITY DOUBLE DEFAULT NULL, + VDENSITY DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 59 +/- SELECT COUNT(*) FROM PUBLIC.ACETICACIDDATA; +INSERT INTO PUBLIC.ACETICACIDDATA(ID, COMP, TEMPERATURE, PRESSURE, LDENSITY, VDENSITY, REFERENCE) VALUES +(17, 'AceticAcid', 463.16, 6.309, 841.3, 16.81, 'Vargaftik'), +(18, 'AceticAcid', 473.16, 7.775, 826.5, 20.52, 'Vargaftik'), +(19, 'AceticAcid', 483.16, 9.497, 810.9, 24.88, 'Vargaftik'), +(20, 'AceticAcid', 493.16, 11.52, 794.1, 30.21, 'Vargaftik'), +(21, 'AceticAcid', 503.16, 13.87, 776.4, 36.26, 'Vargaftik'), +(22, 'AceticAcid', 513.16, 16.66, 757.1, 42.27, 'Vargaftik'), +(23, 'AceticAcid', 523.16, 19.81, 736.4, 51.63, 'Vargaftik'), +(24, 'AceticAcid', 533.16, 23.43, 713.6, 61.65, 'Vargaftik'), +(25, 'AceticAcid', 543.16, 27.52, 690.0, 73.65, 'Vargaftik'), +(26, 'AceticAcid', 553.16, 32.15, 662.9, 88.3, 'Vargaftik'), +(27, 'AceticAcid', 573.16, 42.72, 595.0, 133.1, 'Vargaftik'), +(28, 'AceticAcid', 583.16, 49.24, 542.3, 171.8, 'Vargaftik'), +(30, 'AceticAcid', 594.76, 58.84, 350.6, 350.6, 'Vargaftik'), +(29, 'AceticAcid', 593.16, 56.72, 461.5, NULL, 'Vargaftik'), +(31, 'AceticAcid', 273.16, 0.0047, NULL, NULL, 'Ullmann'), +(32, 'AceticAcid', 283.16, 0.0085, NULL, NULL, 'Ullmann'), +(33, 'AceticAcid', 293.16, 0.0157, NULL, NULL, 'Ullmann'), +(34, 'AceticAcid', 303.16, 0.0265, NULL, NULL, 'Ullmann'), +(35, 'AceticAcid', 313.16, 0.0453, NULL, NULL, 'Ullmann'), +(36, 'AceticAcid', 323.16, 0.0749, NULL, NULL, 'Ullmann'), +(37, 'AceticAcid', 333.16, 0.1177, NULL, NULL, 'Ullmann'), +(38, 'AceticAcid', 343.16, 0.1828, NULL, NULL, 'Ullmann'), +(39, 'AceticAcid', 353.16, 0.2694, NULL, NULL, 'Ullmann'), +(40, 'AceticAcid', 363.16, 0.3904, NULL, NULL, 'Ullmann'), +(41, 'AceticAcid', 373.16, 0.5553, NULL, NULL, 'Ullmann'), +(42, 'AceticAcid', 383.16, 0.7767, NULL, NULL, 'Ullmann'), +(43, 'AceticAcid', 391.36, 1.013, NULL, NULL, 'Ullmann'), +(44, 'AceticAcid', 403.16, 1.3865, NULL, NULL, 'Ullmann'), +(45, 'AceticAcid', 413.16, 1.8411, NULL, NULL, 'Ullmann'), +(46, 'AceticAcid', 423.16, 2.4611, NULL, NULL, 'Ullmann'), +(47, 'AceticAcid', 433.16, 3.16, NULL, NULL, 'Ullmann'), +(48, 'AceticAcid', 443.16, 4.041, NULL, NULL, 'Ullmann'), +(49, 'AceticAcid', 453.16, 5.091, NULL, NULL, 'Ullmann'), +(50, 'AceticAcid', 463.16, 6.333, NULL, NULL, 'Ullmann'), +(51, 'AceticAcid', 473.16, 7.813, NULL, NULL, 'Ullmann'), +(52, 'AceticAcid', 483.16, 9.612, NULL, NULL, 'Ullmann'), +(53, 'AceticAcid', 493.16, 11.733, NULL, NULL, 'Ullmann'), +(54, 'AceticAcid', 503.16, 14.249, NULL, NULL, 'Ullmann'), +(55, 'AceticAcid', 513.16, 17.057, NULL, NULL, 'Ullmann'), +(56, 'AceticAcid', 523.16, 20.21, NULL, NULL, 'Ullmann'), +(57, 'AceticAcid', 533.16, 23.854, NULL, NULL, 'Ullmann'), +(58, 'AceticAcid', 543.16, 28.077, NULL, NULL, 'Ullmann'), +(59, 'AceticAcid', 553.16, 32.801, NULL, NULL, 'Ullmann'), +(0, 'AceticAcid', 293.16, 0.015327064, 1049.1, 0.0764, 'Vargaftik'), +(1, 'AceticAcid', 303.16, 0.025848184, 1039.2, 0.1264, 'Vargaftik'), +(2, 'AceticAcid', 313.16, 0.044162727, 1028.4, 0.2012, 'Vargaftik'), +(3, 'AceticAcid', 323.16, 0.072998389, 1017.5, 0.31, 'Vargaftik'), +(4, 'AceticAcid', 333.16, 0.114693199, 1006.0, 0.4221, 'Vargaftik'), +(5, 'AceticAcid', 343.16, 0.178079701, 994.8, 0.673, 'Vargaftik'), +(6, 'AceticAcid', 353.16, 0.262508443, 983.5, 0.959, 'Vargaftik'), +(7, 'AceticAcid', 363.16, 0.380319011, 971.8, 1.338, 'Vargaftik'), +(8, 'AceticAcid', 373.16, 0.540993402, 959.9, 1.833, 'Vargaftik'), +(9, 'AceticAcid', 383.16, 0.75674131, 948.3, 2.468, 'Vargaftik'), +(11, 'AceticAcid', 403.16, 1.386, 926.5, 4.275, 'Vargaftik'), +(12, 'AceticAcid', 413.16, 1.841, 909.1, 5.515, 'Vargaftik'), +(13, 'AceticAcid', 423.16, 2.499, 896.3, 7.03, 'Vargaftik'), +(14, 'AceticAcid', 433.16, 3.211, 882.9, 8.87, 'Vargaftik'), +(15, 'AceticAcid', 443.16, 4.076, 869.4, 10.84, 'Vargaftik'), +(16, 'AceticAcid', 453.16, 5.109, 855.5, 13.7, 'Vargaftik'); +CREATE CACHED TABLE PUBLIC.ACTIVITYCOEFFICIENTTABLE( + ID INT NOT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + PHASETYPE VARCHAR(50) DEFAULT NULL, + COMPONENT1 VARCHAR(50) DEFAULT NULL, + COMPONENT2 VARCHAR(50) DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + GAMMA1 DOUBLE DEFAULT '0', + GAMMA2 DOUBLE DEFAULT '0', + STDDEVIATION1 DOUBLE DEFAULT '0', + STDDEVIATION2 DOUBLE DEFAULT '0', + REFERENCEID VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.ACTIVITYCOEFFICIENTTABLE ADD CONSTRAINT PUBLIC.CONSTRAINT_7 PRIMARY KEY(ID); +-- 54 +/- SELECT COUNT(*) FROM PUBLIC.ACTIVITYCOEFFICIENTTABLE; +INSERT INTO PUBLIC.ACTIVITYCOEFFICIENTTABLE(ID, TEMPERATURE, PRESSURE, PHASETYPE, COMPONENT1, COMPONENT2, X1, X2, GAMMA1, GAMMA2, STDDEVIATION1, STDDEVIATION2, REFERENCEID) VALUES +(1, 313.15, 1.0, 'liquid', 'MDEA', 'water', 0.01, 0.99, 0.34, 1.0, 0.01, 0.02, 'Posey1996'), +(2, 313.15, 1.0, 'liquid', 'MDEA', 'water', 0.2, 0.8, 0.5, 0.97, 0.01, 0.02, 'Posey1996'), +(3, 313.15, 1.0, 'liquid', 'MDEA', 'water', 0.4, 0.6, 0.7, 0.8, 0.02, 0.02, 'Posey1996'), +(4, 313.15, 1.0, 'liquid', 'MDEA', 'water', 0.6, 0.4, 0.87, 0.65, 0.02, 0.02, 'Posey1996'), +(5, 313.15, 1.0, 'liquid', 'MDEA', 'water', 0.8, 0.2, 0.95, 0.45, 0.02, 0.02, 'Posey1996'), +(19, 270.83, 1.0, 'liquid', 'MDEA', 'water', 0.02, 0.98, 0.9978, 1.2372, 0.01, 0.01, 'Chang1993'), +(20, 268.2, 1.0, 'liquid', 'MDEA', 'water', 0.04, 0.96, 0.9912, 1.5329, 0.01, 0.01, 'Chang1993'), +(21, 264.99, 1.0, 'liquid', 'MDEA', 'water', 0.06, 0.94, 0.9802, 1.8953, 0.01, 0.01, 'Chang1993'), +(22, 256.53, 1.0, 'liquid', 'MDEA', 'water', 0.1, 0.9, 0.946, 2.8527, 0.01, 0.01, 'Chang1993'), +(23, 260.85, 1.0, 'liquid', 'MDEA', 'water', 0.08, 0.92, 0.965, 2.3326, 0.01, 0.01, 'Chang1993'), +(24, 343.15, 1.0, 'liquid', 'MDEA', 'water', 0.01, 0.99, 0.62, 1.01, 0.02, 0.02, 'Posey1996'), +(25, 343.15, 1.0, 'liquid', 'MDEA', 'water', 0.2, 0.8, 0.56, 1.05, 0.02, 0.02, 'Posey1996'), +(26, 343.15, 1.0, 'liquid', 'MDEA', 'water', 0.6, 0.4, 0.85, 0.65, 0.02, 0.02, 'Posey1996'), +(28, 313.15, 1.01, 'liquid', 'MDEA', 'water', 0.05, 0.95, 0.36, 0.99, 0.02, 0.02, 'Posey1996'), +(29, 313.15, 1.01, 'liquid', 'MDEA', 'water', 0.1, 0.9, 0.4, 0.98, 0.02, 0.02, 'Posey1996'), +(30, 343.15, 1.01, 'liquid', 'MDEA', 'water', 0.05, 0.95, 0.59, 1.03, 0.02, 0.02, 'Posey1996'), +(31, 343.15, 1.01, 'liquid', 'MDEA', 'water', 0.15, 0.85, 0.57, 1.0, 0.02, 0.02, 'Posey1996'), +(32, 343.15, 1.01, 'liquid', 'MDEA', 'water', 0.02, 0.98, 0.61, 1.01, 0.02, 0.02, 'Posey1996'), +(33, 343.15, 1.0, 'liquid', 'MDEA', 'water', 0.8, 0.2, 0.95, 0.4, 0.02, 0.02, 'Posey1996'), +(34, 343.15, 1.0, 'liquid', 'MDEA', 'water', 0.95, 0.05, 1.0, 0.38, 0.02, 0.02, 'Posey1996'), +(35, 343.15, 1.0, 'liquid', 'MDEA', 'water', 0.99, 0.01, 1.0, 0.38, 0.02, 0.02, 'Posey1996'), +(36, 393.15, 1.01, 'liquid', 'MDEA', 'water', 0.01, 0.99, 1.4, 1.0, 0.02, 0.02, 'Posey1996'), +(37, 393.15, 1.01, 'liquid', 'MDEA', 'water', 0.1, 0.9, 0.85, 1.04, 0.02, 0.02, 'Posey1996'), +(38, 393.15, 1.01325, 'Liquid', 'MDEA', 'Water', 0.2, 0.8, 0.7, 1.07, 0.02, 0.02, 'Posey1996'), +(39, 393.15, 1.01, 'liquid', 'MDEA', 'Water', 0.6, 0.4, 0.87, 0.8, 0.02, 0.02, 'Posey1996'), +(40, 393.15, 1.01, 'Liquid', 'MDEA', 'Water', 0.8, 0.2, 0.95, 0.7, 0.02, 0.02, 'Posey1996'), +(41, 393.15, 1.01, 'Liquid', 'MDEA', 'Water', 0.9, 0.1, 0.98, 0.7, 0.02, 0.02, 'Posey1996'), +(42, 393.15, 1.01, 'Liquid', 'MDEA', 'Water', 0.05, 0.95, 1.1, 1.0, 0.02, 0.02, 'Posey1996'), +(43, 393.15, 1.01, 'Liquid', 'MDEA', 'Water', 0.3, 0.7, 0.7, 1.1, 0.02, 0.02, 'Posey1996'), +(44, 393.15, 1.01, 'Liquid', 'MDEA', 'Water', 0.4, 0.6, 0.75, 1.0, 0.02, 0.02, 'Posey1996'), +(45, 393.15, 1.01, 'Liquid', 'MDEA', 'Water', 0.5, 0.5, 0.8, 0.9, 0.02, 0.02, 'Posey1996'), +(46, 313.15, 1.0, 'liquid', 'MDEA', 'water', 0.3, 0.7, 0.58, 0.83, 0.02, 0.02, 'Posey1996'), +(47, 313.15, 1.0, 'liquid', 'MDEA', 'water', 0.5, 0.5, 0.78, 0.78, 0.02, 0.02, 'Posey1996'), +(48, 343.15, 1.01, 'liquid', 'MDEA', 'water', 0.1, 0.9, 0.58, 1.0, 0.02, 0.02, 'Posey1996'), +(49, 343.15, 1.01, 'liquid', 'MDEA', 'water', 0.3, 0.7, 0.64, 0.97, 0.02, 0.02, 'Posey1996'), +(50, 313.15, 1.0, 'liquid', 'MDEA', 'water', 0.99, 0.01, 1.0, 0.4, 0.02, 0.02, 'Posey1996'), +(51, 332.65, 1.01, 'Liquid', 'TEG', 'water', 0.5, 0.5, 1.0, 0.83, 0.0, 0.0083, 'Ali et al.'), +(52, 332.65, 1.01, 'Liquid', 'TEG', 'water', 0.8, 0.2, 1.0, 0.77, 0.0, 0.0077, 'Ali et al.'), +(53, 332.65, 1.01, 'Liquid', 'TEG', 'water', 0.2, 0.8, 1.0, 0.94, 0.0, 0.0094, 'Ali et al.'), +(54, 332.65, 1.01, 'Liquid', 'TEG', 'water', 0.95, 0.05, 1.0, 0.72, 0.0, 0.0072, 'Ali et al.'), +(55, 297.65, 1.01, 'Liquid', 'TEG', 'water', 0.5, 0.5, 1.0, 0.74, 0.0, 0.0074, 'Ali et al.'), +(56, 297.65, 1.01, 'Liquid', 'TEG', 'water', 0.8, 0.2, 1.0, 0.66, 0.0, 0.0066, 'Ali et al.'); +INSERT INTO PUBLIC.ACTIVITYCOEFFICIENTTABLE(ID, TEMPERATURE, PRESSURE, PHASETYPE, COMPONENT1, COMPONENT2, X1, X2, GAMMA1, GAMMA2, STDDEVIATION1, STDDEVIATION2, REFERENCEID) VALUES +(57, 297.65, 1.01, 'Liquid', 'TEG', 'water', 0.2, 0.8, 1.0, 0.88, 0.0, 0.0088, 'Ali et al.'), +(58, 297.65, 1.01, 'Liquid', 'TEG', 'water', 0.95, 0.05, 1.0, 0.64, 0.0, 0.0064, 'Ali et al.'), +(59, 232.2741067, 1.01, 'Liquid', 'TEG', 'water', 0.1525, 0.8475, 1.0, 0.78811, 0.0, 0.0078811, 'Ali et al.'), +(60, 213.84775, 1.01, 'Liquid', 'TEG', 'water', 0.225, 0.775, 1.0, 0.7176816, 0.0, 0.007176816, 'Ali et al.'), +(61, 255.786, 1.01, 'Liquid', 'water', 'TEG', 0.3049, 0.6951, 0.9, 1.0, 0.0, 0.00611157851, 'Ali et al.'), +(63, 251.86, 1.01, 'Liquid', 'water', 'TEG', 0.3, 0.7, 0.87, 1.0, 0.006, 0.00611157851, 'Ali et al.'), +(88, 273.15, 1.01, 'Liquid', 'TEG', 'water', 0.99, 0.01, 1.0, 0.5, 0.006, 0.00611157851, 'shell'), +(89, 298.15, 1.01, 'Liquid', 'TEG', 'water', 0.99, 0.01, 1.0, 0.58, 0.006, 0.00611157851, 'shell'), +(90, 323.15, 1.01, 'Liquid', 'TEG', 'water', 0.99, 0.01, 1.0, 0.6, 0.006, 0.00611157851, 'shell'), +(91, 373.15, 1.01, 'Liquid', 'TEG', 'water', 0.99, 0.01, 1.0, 0.7, 0.006, 0.00611157851, 'shell'), +(92, 473.15, 1.01, 'Liquid', 'TEG', 'water', 0.99, 0.01, 1.0, 0.85, 0.006, 0.00611157851, 'shell'), +(93, 423.15, 1.01, 'Liquid', 'TEG', 'water', 0.99, 0.01, 1.0, 0.8, 0.006, 0.00611157851, 'shell'); +CREATE CACHED TABLE PUBLIC.ADSORPTIONPARAMETERS( + ID INT NOT NULL, + NAME VARCHAR(50) DEFAULT NULL, + SOLID VARCHAR(50) DEFAULT NULL, + EPS DOUBLE DEFAULT '0', + Z0 DOUBLE DEFAULT '0', + BETA DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.ADSORPTIONPARAMETERS ADD CONSTRAINT PUBLIC.CONSTRAINT_7C PRIMARY KEY(ID); +-- 8 +/- SELECT COUNT(*) FROM PUBLIC.ADSORPTIONPARAMETERS; +INSERT INTO PUBLIC.ADSORPTIONPARAMETERS(ID, NAME, SOLID, EPS, Z0, BETA) VALUES +(1, 'methane', 'AC Calgon F400', 7.458, 0.298, 2.0), +(2, 'CO2', 'AC Calgon F400', 7.76, 0.298, 2.0), +(3, 'nitrogen', 'AC Calgon F400', 6.01, 0.298, 2.0), +(4, 'methane', 'AC Norit R1', 8.06, 0.362, 2.0), +(6, 'argon', 'AC Norit R1', 5.8, 0.362, 2.0), +(7, 'methane', 'AC', 7.18, 0.367, 2.0), +(8, 'CO2', 'AC', 7.51, 0.367, 2.0), +(9, 'nitrogen', 'AC Norit R1', 0.05, 0.362, 2.0); +CREATE CACHED TABLE PUBLIC.BINARYBUBBLEDEWPOINTPRESSURE( + ID INT NOT NULL, + COMPONENTSOLVENT VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT2 VARCHAR(50) DEFAULT NULL, + X DOUBLE DEFAULT '0', + Y DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + STDDEV DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.BINARYBUBBLEDEWPOINTPRESSURE ADD CONSTRAINT PUBLIC.CONSTRAINT_E PRIMARY KEY(ID); +-- 102 +/- SELECT COUNT(*) FROM PUBLIC.BINARYBUBBLEDEWPOINTPRESSURE; +INSERT INTO PUBLIC.BINARYBUBBLEDEWPOINTPRESSURE(ID, COMPONENTSOLVENT, COMPONENTSOLVENT2, X, Y, PRESSURE, STDDEV, TEMPERATURE, REFERENCE) VALUES +(85, 'CO2', 'propane', 0.0, 0.0, 26.462, 0.26462, 344.3, 'DECHEMA VOL6'), +(86, 'CO2', 'propane', 0.0099, 0.0315, 27.5786, 0.275786, 344.3, 'DECHEMA VOL6'), +(87, 'CO2', 'propane', 0.0409, 0.1153, 31.0259, 0.310259, 344.3, 'DECHEMA VOL6'), +(88, 'CO2', 'propane', 0.0726, 0.1832, 34.4732, 0.344732, 344.3, 'DECHEMA VOL6'), +(89, 'CO2', 'propane', 0.1043, 0.2377, 37.921, 0.37921, 344.3, 'DECHEMA VOL6'), +(90, 'CO2', 'propane', 0.137, 0.284, 41.368, 0.41368, 344.3, 'DECHEMA VOL6'), +(91, 'CO2', 'propane', 0.1698, 0.3218, 44.815, 0.44815, 344.3, 'DECHEMA VOL6'), +(92, 'CO2', 'propane', 0.2019, 0.3513, 48.262, 0.48262, 344.3, 'DECHEMA VOL6'), +(93, 'CO2', 'propane', 0.2338, 0.3743, 51.7099, 0.517099, 344.3, 'DECHEMA VOL6'), +(94, 'CO2', 'propane', 0.2666, 0.393, 55.1572, 0.551572, 344.3, 'DECHEMA VOL6'), +(95, 'CO2', 'propane', 0.2998, 0.4068, 58.604, 0.58604, 344.3, 'DECHEMA VOL6'), +(96, 'CO2', 'propane', 0.3735, 0.4202, 65.4992, 0.654992, 344.3, 'DECHEMA VOL6'), +(97, 'CO2', 'propane', 0.407, 0.407, 67.292, 0.67292, 344.3, 'DECHEMA VOL6'), +(98, 'CO2', 'propane', 0.0, 0.0, 13.01, 0.1301, 310.9, 'DECHEMA VOL6'), +(99, 'CO2', 'propane', 0.0081, 0.0472, 13.789, 0.13789, 310.9, 'DECHEMA VOL6'), +(100, 'CO2', 'propane', 0.0495, 0.2281, 17.237, 0.17237, 310.9, 'DECHEMA VOL6'), +(101, 'CO2', 'propane', 0.0926, 0.3511, 20.684, 0.20684, 310.9, 'DECHEMA VOL6'), +(102, 'CO2', 'propane', 0.1361, 0.437, 24.13, 0.2413, 310.9, 'DECHEMA VOL6'), +(103, 'CO2', 'propane', 0.1799, 0.4994, 27.578, 0.27578, 310.9, 'DECHEMA VOL6'), +(104, 'CO2', 'propane', 0.2248, 0.5481, 31.02, 0.3102, 310.9, 'DECHEMA VOL6'), +(105, 'CO2', 'propane', 0.2709, 0.5876, 34.473, 0.34473, 310.9, 'DECHEMA VOL6'), +(106, 'CO2', 'propane', 0.3191, 0.6213, 37.92, 0.3792, 310.9, 'DECHEMA VOL6'), +(107, 'CO2', 'propane', 0.3693, 0.6514, 41.368, 0.41368, 310.9, 'DECHEMA VOL6'), +(108, 'CO2', 'propane', 0.4212, 0.6781, 44.815, 0.44815, 310.9, 'DECHEMA VOL6'), +(109, 'CO2', 'propane', 0.4735, 0.7013, 48.262, 0.48262, 310.9, 'DECHEMA VOL6'), +(110, 'CO2', 'propane', 0.5272, 0.7238, 51.71, 0.5171, 310.9, 'DECHEMA VOL6'), +(111, 'CO2', 'propane', 0.5814, 0.7448, 55.157, 0.55157, 310.9, 'DECHEMA VOL6'), +(112, 'CO2', 'propane', 0.6346, 0.7647, 58.604, 0.58604, 310.9, 'DECHEMA VOL6'), +(113, 'CO2', 'propane', 0.6861, 0.7801, 62.0518, 0.620518, 310.9, 'DECHEMA VOL6'), +(114, 'CO2', 'propane', 0.736, 0.7908, 65.4992, 0.654992, 310.9, 'DECHEMA VOL6'), +(115, 'CO2', 'propane', 0.79, 0.7972, 68.9465, 0.689465, 310.9, 'DECHEMA VOL6'), +(116, 'CO2', 'propane', 1.0E-5, 1.0E-5, 5.447, 0.05447, 277.15, 'DECHEMA VOL6'), +(117, 'CO2', 'propane', 0.0247, 0.2056, 6.8946, 0.068946, 277.15, 'DECHEMA VOL6'), +(118, 'CO2', 'propane', 0.0884, 0.4676, 10.342, 0.10342, 277.15, 'DECHEMA VOL6'), +(119, 'CO2', 'propane', 0.1602, 0.6036, 13.789, 0.13789, 277.15, 'DECHEMA VOL6'), +(120, 'CO2', 'propane', 0.2402, 0.6864, 17.237, 0.17237, 277.15, 'DECHEMA VOL6'), +(121, 'CO2', 'propane', 0.3316, 0.7431, 20.68, 0.2068, 277.15, 'DECHEMA VOL6'), +(122, 'CO2', 'propane', 0.4361, 0.7876, 24.13, 0.2413, 277.15, 'DECHEMA VOL6'), +(123, 'CO2', 'propane', 0.5532, 0.8309, 27.58, 0.2758, 277.15, 'DECHEMA VOL6'), +(124, 'CO2', 'propane', 0.6714, 0.8688, 31.03, 0.3103, 277.15, 'DECHEMA VOL6'), +(125, 'CO2', 'propane', 0.7956, 0.9102, 34.47, 0.3447, 277.15, 'DECHEMA VOL6'), +(126, 'CO2', 'propane', 0.9401, 0.9702, 37.92, 0.3792, 277.15, 'DECHEMA VOL6'), +(127, 'CO2', 'methanol', 0.0828, 0.994, 0.6895, 0.006895, 273.0, 'DECHEMA VOL6'), +(128, 'CO2', 'methanol', 0.1692, 0.997, 1.3789, 0.013789, 273.0, 'DECHEMA VOL6'), +(129, 'CO2', 'methanol', 0.221, 0.9975, 1.7237, 0.017237, 273.0, 'DECHEMA VOL6'), +(130, 'CO2', 'methanol', 0.271, 0.9978, 2.0684, 0.020684, 273.0, 'DECHEMA VOL6'), +(131, 'CO2', 'methanol', 0.4163, 0.9985, 2.7579, 0.027579, 273.0, 'DECHEMA VOL6'), +(132, 'CO2', 'methanol', 0.5394, 0.9985, 3.082, 0.03082, 273.0, 'DECHEMA VOL6'), +(133, 'CO2', 'methanol', 0.768, 0.9985, 3.3026, 0.033026, 273.0, 'DECHEMA VOL6'), +(134, 'CO2', 'methanol', 0.816, 0.9985, 3.3233, 0.033233, 273.0, 'DECHEMA VOL6'); +INSERT INTO PUBLIC.BINARYBUBBLEDEWPOINTPRESSURE(ID, COMPONENTSOLVENT, COMPONENTSOLVENT2, X, Y, PRESSURE, STDDEV, TEMPERATURE, REFERENCE) VALUES +(135, 'CO2', 'methanol', 0.8754, 0.9986, 3.3371, 0.033371, 273.0, 'DECHEMA VOL6'), +(136, 'CO2', 'methanol', 0.9865, 0.9994, 3.4474, 0.034474, 273.0, 'DECHEMA VOL6'), +(137, 'CO2', 'methanol', 1.0E-4, 1.0E-4, 0.665, 0.00665, 394.0, 'DECHEMA VOL6'), +(138, 'CO2', 'methanol', 0.087, 0.3328, 1.03, 0.0103, 394.0, 'DECHEMA VOL6'), +(139, 'CO2', 'methanol', 0.0446, 0.659, 2.68, 0.0268, 394.0, 'DECHEMA VOL6'), +(140, 'CO2', 'methanol', 0.068, 0.7458, 3.7, 0.037, 394.0, 'DECHEMA VOL6'), +(141, 'CO2', 'methanol', 0.1243, 0.8202, 6.01, 0.0601, 394.0, 'DECHEMA VOL6'), +(142, 'CO2', 'methanol', 0.2307, 0.8407, 10.15, 0.1015, 394.0, 'DECHEMA VOL6'), +(143, 'CO2', 'methanol', 0.3693, 0.7916, 13.91, 0.1391, 394.0, 'DECHEMA VOL6'), +(144, 'CO2', 'methanol', 0.4469, 0.7613, 15.28, 0.1528, 394.0, 'DECHEMA VOL6'), +(145, 'CO2', 'methanol', 0.5493, 0.6621, 16.29, 0.1629, 394.0, 'DECHEMA VOL6'), +(146, 'CO2', 'methanol', 0.605, 0.605, 16.5, 0.165, 394.0, 'DECHEMA VOL6'), +(147, 'CO2', 'methanol', 1.0E-4, 1.0E-4, 4.41, 0.0441, 477.0, 'DECHEMA VOL6'), +(148, 'CO2', 'methanol', 0.0173, 0.1283, 5.29, 0.0529, 477.0, 'DECHEMA VOL6'), +(149, 'CO2', 'methanol', 0.0179, 0.1452, 5.44, 0.0544, 477.0, 'DECHEMA VOL6'), +(150, 'CO2', 'methanol', 0.0384, 0.1854, 6.33, 0.0633, 477.0, 'DECHEMA VOL6'), +(151, 'CO2', 'methanol', 0.0769, 0.3001, 8.36, 0.0836, 477.0, 'DECHEMA VOL6'), +(152, 'CO2', 'methanol', 0.1422, 0.3378, 10.94, 0.1094, 477.0, 'DECHEMA VOL6'), +(153, 'CO2', 'methanol', 0.1842, 0.3112, 12.1, 0.121, 477.0, 'DECHEMA VOL6'), +(154, 'CO2', 'methanol', 0.2131, 0.2928, 12.51, 0.1251, 477.0, 'DECHEMA VOL6'), +(155, 'CO2', 'methanol', 0.25, 0.25, 12.75, 0.1275, 477.0, 'DECHEMA VOL6'), +(156, 'CO2', 'benzene', 0.1238, 0.99, 0.826, 0.00826, 273.0, 'DECHEMA VOL6'), +(157, 'CO2', 'benzene', 0.2354, 0.99, 1.43, 0.0143, 273.0, 'DECHEMA VOL6'), +(158, 'CO2', 'benzene', 0.4726, 0.99, 2.305, 0.02305, 273.0, 'DECHEMA VOL6'), +(159, 'CO2', 'benzene', 0.5954, 0.99, 2.567, 0.02567, 273.0, 'DECHEMA VOL6'), +(160, 'CO2', 'benzene', 0.7079, 0.99, 2.758, 0.02758, 273.0, 'DECHEMA VOL6'), +(161, 'CO2', 'benzene', 0.8243, 0.99, 2.954, 0.02954, 273.0, 'DECHEMA VOL6'), +(162, 'CO2', 'benzene', 0.9282, 0.99, 3.2, 0.032, 273.0, 'DECHEMA VOL6'), +(163, 'CO2', 'benzene', 0.056, 0.967, 0.74, 0.0074, 313.0, 'DECHEMA VOL6'), +(164, 'CO2', 'benzene', 0.115, 0.981, 1.39, 0.0139, 313.0, 'DECHEMA VOL6'), +(165, 'CO2', 'benzene', 0.183, 0.986, 2.135, 0.02135, 313.0, 'DECHEMA VOL6'), +(166, 'CO2', 'benzene', 0.253, 0.988, 2.79, 0.0279, 313.0, 'DECHEMA VOL6'), +(167, 'CO2', 'benzene', 0.318, 0.989, 3.43, 0.0343, 313.0, 'DECHEMA VOL6'), +(168, 'CO2', 'benzene', 0.38, 0.989, 4.025, 0.04025, 313.0, 'DECHEMA VOL6'), +(169, 'CO2', 'benzene', 0.439, 0.99, 4.51, 0.0451, 313.0, 'DECHEMA VOL6'), +(170, 'CO2', 'benzene', 0.504, 0.99, 4.99, 0.0499, 313.0, 'DECHEMA VOL6'), +(171, 'CO2', 'benzene', 0.575, 0.99, 5.4, 0.054, 313.0, 'DECHEMA VOL6'), +(172, 'CO2', 'benzene', 0.643, 0.991, 5.8, 0.058, 313.0, 'DECHEMA VOL6'), +(173, 'CO2', 'benzene', 0.727, 0.99, 6.26, 0.0626, 313.0, 'DECHEMA VOL6'), +(174, 'CO2', 'benzene', 0.808, 0.99, 6.71, 0.0671, 313.0, 'DECHEMA VOL6'), +(175, 'CO2', 'benzene', 0.873, 0.989, 7.025, 0.07025, 313.0, 'DECHEMA VOL6'), +(176, 'CO2', 'benzene', 0.904, 0.989, 7.28, 0.0728, 313.0, 'DECHEMA VOL6'), +(177, 'CO2', 'benzene', 0.948, 0.989, 7.72, 0.0772, 313.0, 'DECHEMA VOL6'), +(178, 'CO2', 'benzene', 0.0, 1.0E-4, 0.305, 0.00305, 393.0, 'DECHEMA VOL6'), +(179, 'CO2', 'benzene', 0.064, 0.99, 1.815, 0.01815, 393.0, 'DECHEMA VOL6'), +(180, 'CO2', 'benzene', 0.106, 0.99, 2.78, 0.0278, 393.0, 'DECHEMA VOL6'), +(181, 'CO2', 'benzene', 0.202, 0.99, 4.935, 0.04935, 393.0, 'DECHEMA VOL6'), +(182, 'CO2', 'benzene', 0.308, 0.99, 7.345, 0.07345, 393.0, 'DECHEMA VOL6'), +(183, 'CO2', 'benzene', 0.315, 0.99, 7.475, 0.07475, 393.0, 'DECHEMA VOL6'), +(184, 'CO2', 'benzene', 0.417, 0.99, 9.685, 0.09685, 393.0, 'DECHEMA VOL6'), +(185, 'CO2', 'benzene', 0.505, 0.99, 11.395, 0.11395, 393.0, 'DECHEMA VOL6'), +(186, 'CO2', 'benzene', 0.616, 0.99, 13.295, 0.13295, 393.0, 'DECHEMA VOL6'); +CREATE CACHED TABLE PUBLIC.BINARYCOMPONENTSURFACETENSION( + ID INT NOT NULL, + COMPONENTNAME1 VARCHAR(50) DEFAULT NULL, + COMPONENTNAME2 VARCHAR(255) DEFAULT NULL, + SURFACETENSION DOUBLE DEFAULT NULL, + STANDARDDEVIATION DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + PHASETYPE VARCHAR(255) DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL, + INCLUDE INT DEFAULT '0' +); +ALTER TABLE PUBLIC.BINARYCOMPONENTSURFACETENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_E4 PRIMARY KEY(ID); +-- 634 +/- SELECT COUNT(*) FROM PUBLIC.BINARYCOMPONENTSURFACETENSION; +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(1, 'methane', 'propane', 12.13, 0.18877, 258.15, 2.9, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(2, 'methane', 'propane', 8.64, 0.1628, 258.15, 21.65, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 1), +(3, 'methane', 'propane', 5.56, 0.16328, 258.15, 41.37, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 1), +(4, 'methane', 'propane', 2.88, 0.1449, 258.15, 61.16, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.1986', 1), +(5, 'methane', 'propane', 1.51, 0.142, 258.15, 71.5, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.1986', 1), +(6, 'methane', 'propane', 1.23, 0.15026, 258.15, 74.43, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 1), +(7, 'methane', 'propane', 0.5, 0.139, 283.15, 83.43, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239. 1986', 0), +(8, 'methane', 'propane', 0.98, 0.1406, 283.15, 76.46, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239. 1986', 0), +(9, 'methane', 'propane', 2.04, 0.1408, 283.15, 63.16, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(10, 'methane', 'propane', 2.97, 0.1387, 283.15, 53.3, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.1986', 0), +(11, 'methane', 'propane', 4.46, 0.1389, 283.15, 39.65, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 1), +(12, 'methane', 'propane', 6.19, 0.1381, 283.15, 25.86, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 1), +(13, 'methane', 'propane', 7.74, 0.1336, 283.15, 13.86, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 1), +(14, 'methane', 'propane', 8.52, 0.1315, 283.15, 6.48, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 1), +(15, 'methane', 'propane', 0.19, 0.13707, 303.15, 84.81, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(16, 'methane', 'propane', 0.82, 0.12371, 303.15, 71.64, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(17, 'methane', 'propane', 1.11, 0.2708, 303.15, 67.71, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(18, 'methane', 'propane', 1.3, 0.2668, 303.15, 65.36, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(19, 'methane', 'propane', 1.73, 0.2648, 303.15, 59.16, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(20, 'methane', 'propane', 2.14, 0.264, 303.15, 55.71, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(21, 'methane', 'propane', 2.34, 0.26, 303.15, 51.3, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(22, 'methane', 'propane', 3.37, 0.2596, 303.15, 40.2, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(23, 'methane', 'propane', 3.83, 0.2574, 303.15, 35.16, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(24, 'methane', 'propane', 4.43, 0.2567, 303.15, 28.89, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(25, 'methane', 'propane', 5.25, 0.2551, 303.15, 21.44, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(26, 'methane', 'propane', 5.91, 0.2538, 303.15, 15.17, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(27, 'methane', 'propane', 6.39, 0.2534, 303.15, 11.24, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(28, 'methane', 'propane', 0.64, 0.25, 318.15, 67.71, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(29, 'methane', 'propane', 0.97, 0.2496, 318.15, 61.57, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(30, 'methane', 'propane', 1.06, 0.2448, 318.15, 60.12, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(31, 'methane', 'propane', 1.3, 0.2454, 318.15, 56.61, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(32, 'methane', 'propane', 1.68, 0.2437, 318.15, 50.54, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(33, 'methane', 'propane', 1.7, 0.242, 318.15, 50.19, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(34, 'methane', 'propane', 1.87, 0.2392, 318.15, 47.71, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(35, 'methane', 'propane', 2.23, 0.2372, 318.15, 42.95, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(36, 'methane', 'propane', 2.3, 0.2282, 318.15, 42.68, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(37, 'methane', 'propane', 2.79, 0.2175, 318.15, 35.72, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(38, 'methane', 'propane', 3.78, 0.2168, 318.15, 23.99, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(39, 'methane', 'propane', 4.58, 0.2116, 318.15, 15.31, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(40, 'methane', 'propane', 0.22, 0.2071, 338.15, 64.47, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(41, 'methane', 'propane', 0.54, 0.2046, 338.15, 57.23, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(42, 'methane', 'propane', 0.87, 0.1986, 338.15, 49.5, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(43, 'methane', 'propane', 1.28, 0.195, 338.15, 42.4, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(44, 'methane', 'propane', 1.87, 0.1928, 338.15, 33.1, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(45, 'methane', 'propane', 2.05, 0.1831, 338.15, 29.99, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(46, 'methane', 'propane', 2.57, 0.1784, 338.15, 23.44, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(47, 'methane', 'propane', 0.35, 0.1663, 363.15, 37.71, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(48, 'methane', 'propane', 9.29, 0.1619, 283.15, 6.48, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(49, 'methane', 'propane', 9.08, 0.1709, 283.15, 6.48, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(50, 'methane', 'propane', 8.09, 0.1534, 283.15, 13.86, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(51, 'methane', 'propane', 6.64, 0.1359, 283.15, 25.86, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(52, 'methane', 'propane', 6.64, 0.1184, 283.15, 25.86, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(53, 'methane', 'propane', 4.76, 0.1009, 283.15, 39.65, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(54, 'methane', 'propane', 4.75, 0.1018, 283.15, 39.65, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(55, 'methane', 'propane', 3.25, 0.0931, 283.15, 53.3, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(56, 'methane', 'propane', 3.23, 0.1006, 283.15, 53.3, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(57, 'methane', 'propane', 2.25, 0.0905, 283.15, 63.16, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(58, 'methane', 'propane', 2.22, 0.0835, 283.15, 63.16, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(59, 'methane', 'propane', 6.57, 0.088, 303.15, 11.24, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(60, 'methane', 'propane', 5.4, 0.817, 303.15, 21.44, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(61, 'methane', 'propane', 4.57, 0.0768, 303.15, 28.89, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(62, 'methane', 'propane', 3.44, 0.0762, 303.15, 40.2, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(63, 'methane', 'propane', 2.13, 0.0749, 303.15, 55.71, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(64, 'methane', 'propane', 4.97, 0.787, 318.15, 15.31, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(65, 'methane', 'propane', 4.12, 0.747, 318.15, 23.99, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(66, 'methane', 'propane', 3.14, 0.0722, 318.15, 35.72, 'liquid+gas', 'Weinaug, C. F. and Katz, D. L.: \"Surface Tension of Methane-Propane Mixtures\", Ind. Eng. Chem. (1943) Vol. 35, 239.', 0), +(68, 'methane', 'n-butane', 0.011, 0.0722, 310.93, 131.0, 'liquid+gas', 'B.F. Pennington', 0), +(69, 'methane', 'n-butane', 0.038, 0.0688, 310.93, 129.35, 'liquid+gas', 'B.F. Pennington', 0), +(70, 'methane', 'n-butane', 0.07, 0.677, 310.93, 127.55, 'liquid+gas', 'B.F. Pennington', 0), +(71, 'methane', 'n-butane', 0.074, 0.0663, 310.93, 127.35, 'liquid+gas', 'B.F. Pennington', 0), +(72, 'methane', 'n-butane', 0.128, 0.0615, 310.93, 124.8, 'liquid+gas', 'B.F. Pennington', 0), +(73, 'methane', 'n-butane', 0.144, 0.622, 310.93, 124.11, 'liquid+gas', 'B.F. Pennington', 0), +(74, 'methane', 'n-butane', 0.219, 0.0621, 310.93, 121.42, 'liquid+gas', 'B.F. Pennington', 0), +(75, 'methane', 'n-butane', 0.243, 0.556, 310.93, 120.66, 'liquid+gas', 'B.F. Pennington', 0), +(76, 'methane', 'n-butane', 0.372, 0.0584, 310.93, 117.21, 'liquid+gas', 'B.F. Pennington', 0), +(77, 'methane', 'n-butane', 0.377, 0.495, 310.93, 117.07, 'liquid+gas', 'B.F. Pennington', 0), +(78, 'methane', 'n-butane', 0.53, 0.2331, 310.93, 113.76, 'liquid+gas', 'B.F. Pennington', 0), +(79, 'methane', 'n-butane', 0.716, 0.209, 310.93, 110.32, 'liquid+gas', 'B.F. Pennington', 0), +(80, 'methane', 'n-butane', 0.93, 0.1922, 310.93, 106.87, 'liquid+gas', 'B.F. Pennington', 0), +(81, 'methane', 'n-butane', 1.15, 0.1821, 310.93, 103.42, 'liquid+gas', 'B.F. Pennington', 0), +(82, 'methane', 'n-butane', 1.39, 0.1728, 310.93, 99.97, 'liquid+gas', 'B.F. Pennington', 0), +(83, 'methane', 'n-butane', 1.64, 0.1695, 310.93, 96.53, 'liquid+gas', 'B.F. Pennington', 0), +(84, 'methane', 'n-butane', 1.91, 0.1672, 310.93, 93.08, 'liquid+gas', 'B.F. Pennington', 0), +(85, 'methane', 'n-butane', 2.18, 0.1601, 262.75, 89.63, 'liquid+gas', 'B.F. Pennington', 0), +(87, 'methane', 'n-butane', 0.017, 0.1521, 327.59, 127.55, 'liquid+gas', 'B.F. Pennington', 0), +(88, 'methane', 'n-butane', 0.019, 0.1488, 327.59, 127.35, 'liquid+gas', 'B.F. Pennington', 0), +(89, 'methane', 'n-butane', 0.05, 0.154, 327.59, 124.8, 'liquid+gas', 'B.F. Pennington', 0), +(90, 'methane', 'n-butane', 0.06, 0.151, 327.59, 124.11, 'liquid+gas', 'B.F. Pennington', 0), +(91, 'methane', 'n-butane', 0.107, 0.1366, 327.59, 121.42, 'liquid+gas', 'B.F. Pennington', 0), +(92, 'methane', 'n-butane', 0.122, 0.1364, 327.59, 120.66, 'liquid+gas', 'B.F. Pennington', 0), +(93, 'methane', 'n-butane', 0.203, 0.143, 327.59, 117.21, 'liquid+gas', 'B.F. Pennington', 0), +(94, 'methane', 'n-butane', 0.206, 0.139, 327.59, 117.07, 'liquid+gas', 'B.F. Pennington', 0), +(95, 'methane', 'n-butane', 0.313, 0.136, 327.59, 113.76, 'liquid+gas', 'B.F. Pennington', 0), +(96, 'methane', 'n-butane', 0.448, 0.1258, 327.59, 110.32, 'liquid+gas', 'B.F. Pennington', 0), +(97, 'methane', 'n-butane', 0.605, 0.1246, 327.59, 106.87, 'liquid+gas', 'B.F. Pennington', 0), +(98, 'methane', 'n-butane', 0.765, 0.128, 327.59, 103.42, 'liquid+gas', 'B.F. Pennington', 0), +(99, 'methane', 'n-butane', 0.93, 0.129, 327.59, 99.97, 'liquid+gas', 'B.F. Pennington', 0), +(100, 'methane', 'n-butane', 1.16, 0.128, 327.59, 96.53, 'liquid+gas', 'B.F. Pennington', 0), +(101, 'methane', 'n-butane', 1.37, 0.128, 327.59, 93.08, 'liquid+gas', 'B.F. Pennington', 0), +(102, 'methane', 'n-butane', 1.58, 0.1167, 327.59, 89.63, 'liquid+gas', 'B.F. Pennington', 0), +(104, 'methane', 'n-butane', 0.02, 0.122, 335.93, 124.8, 'liquid+gas', 'B.F. Pennington', 0), +(105, 'methane', 'n-butane', 0.027, 0.123, 335.93, 124.11, 'liquid+gas', 'B.F. Pennington', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(106, 'methane', 'n-butane', 0.059, 0.1128, 335.93, 121.42, 'liquid+gas', 'B.F. Pennington', 0), +(107, 'methane', 'n-butane', 0.07, 0.122, 335.93, 120.66, 'liquid+gas', 'B.F. Pennington', 0), +(108, 'methane', 'n-butane', 0.13, 0.106, 335.93, 117.21, 'liquid+gas', 'B.F. Pennington', 0), +(109, 'methane', 'n-butane', 0.133, 0.173, 335.93, 117.07, 'liquid+gas', 'B.F. Pennington', 0), +(110, 'methane', 'n-butane', 0.213, 0.1655, 335.93, 113.76, 'liquid+gas', 'B.F. Pennington', 0), +(111, 'methane', 'n-butane', 0.324, 0.1596, 335.93, 110.32, 'liquid+gas', 'B.F. Pennington', 0), +(112, 'methane', 'n-butane', 0.451, 0.1507, 335.93, 106.87, 'liquid+gas', 'B.F. Pennington', 0), +(113, 'methane', 'n-butane', 0.591, 0.148, 335.93, 103.42, 'liquid+gas', 'B.F. Pennington', 0), +(114, 'methane', 'n-butane', 0.745, 0.1401, 335.93, 99.97, 'liquid+gas', 'B.F. Pennington', 0), +(115, 'methane', 'n-butane', 0.912, 0.1381, 335.93, 96.53, 'liquid+gas', 'B.F. Pennington', 0), +(116, 'methane', 'n-butane', 1.12, 0.123, 335.93, 93.08, 'liquid+gas', 'B.F. Pennington', 0), +(117, 'methane', 'n-butane', 1.32, 0.1301, 335.93, 89.63, 'liquid+gas', 'B.F. Pennington', 0), +(118, 'methane', 'n-butane', 12.31, 0.1231, 335.93, 99.97, 'liquid+gas', 'B.F. Pennington', 0), +(119, 'methane', 'n-butane', 12.07, 0.1207, 335.93, 96.53, 'liquid+gas', 'B.F. Pennington', 0), +(120, 'methane', 'n-butane', 11.61, 0.1161, 335.93, 93.08, 'liquid+gas', 'B.F. Pennington', 0), +(121, 'methane', 'n-butane', 11.39, 0.1139, 335.93, 89.63, 'liquid+gas', 'B.F. Pennington', 0), +(123, 'methane', 'n-butane', 0.003, 3.0E-5, 344.26, 124.11, 'liquid+gas', 'B.F. Pennington', 0), +(124, 'methane', 'n-butane', 0.021, 2.1E-4, 344.26, 121.42, 'liquid+gas', 'B.F. Pennington', 0), +(125, 'methane', 'n-butane', 0.028, 2.8E-4, 344.26, 120.66, 'liquid+gas', 'B.F. Pennington', 0), +(126, 'methane', 'n-butane', 0.068, 6.8E-4, 344.26, 117.21, 'liquid+gas', 'B.F. Pennington', 0), +(127, 'methane', 'n-butane', 0.07, 7.0E-4, 344.26, 117.07, 'liquid+gas', 'B.F. Pennington', 0), +(128, 'methane', 'n-butane', 0.125, 0.00125, 344.26, 113.76, 'liquid+gas', 'B.F. Pennington', 0), +(129, 'methane', 'n-butane', 0.21, 0.0021, 344.26, 110.32, 'liquid+gas', 'B.F. Pennington', 0), +(130, 'methane', 'n-butane', 0.309, 0.00309, 344.26, 106.87, 'liquid+gas', 'B.F. Pennington', 0), +(131, 'methane', 'n-butane', 0.428, 0.00428, 344.26, 103.42, 'liquid+gas', 'B.F. Pennington', 0), +(132, 'methane', 'n-butane', 0.562, 0.00562, 344.26, 99.97, 'liquid+gas', 'B.F. Pennington', 0), +(133, 'methane', 'n-butane', 0.71, 0.0071, 344.26, 96.53, 'liquid+gas', 'B.F. Pennington', 0), +(134, 'methane', 'n-butane', 0.869, 0.00869, 344.26, 93.08, 'liquid+gas', 'B.F. Pennington', 0), +(135, 'methane', 'n-butane', 1.03, 0.0103, 344.26, 89.63, 'liquid+gas', 'B.F. Pennington', 0), +(137, 'methane', 'n-butane', 0.002, 2.0E-5, 352.59, 120.66, 'liquid+gas', 'B.F. Pennington', 0), +(138, 'methane', 'n-butane', 0.023, 2.3E-4, 352.59, 117.21, 'liquid+gas', 'B.F. Pennington', 0), +(139, 'methane', 'n-butane', 0.024, 2.4E-4, 352.59, 117.07, 'liquid+gas', 'B.F. Pennington', 0), +(140, 'methane', 'n-butane', 0.06, 6.0E-4, 352.59, 113.76, 'liquid+gas', 'B.F. Pennington', 0), +(141, 'methane', 'n-butane', 0.116, 0.00116, 352.59, 110.32, 'liquid+gas', 'B.F. Pennington', 0), +(142, 'methane', 'n-butane', 0.19, 0.0019, 352.59, 106.87, 'liquid+gas', 'B.F. Pennington', 0), +(143, 'methane', 'n-butane', 0.28, 0.0028, 352.59, 103.42, 'liquid+gas', 'B.F. Pennington', 0), +(144, 'methane', 'n-butane', 0.388, 0.00388, 352.59, 99.97, 'liquid+gas', 'B.F. Pennington', 0), +(145, 'methane', 'n-butane', 0.512, 0.00512, 352.59, 96.53, 'liquid+gas', 'B.F. Pennington', 0), +(146, 'methane', 'n-butane', 0.645, 0.00645, 352.59, 93.08, 'liquid+gas', 'B.F. Pennington', 0), +(147, 'methane', 'n-butane', 0.784, 0.00784, 352.59, 89.63, 'liquid+gas', 'B.F. Pennington', 0), +(149, 'methane', 'n-butane', 0.017, 1.7E-4, 360.93, 113.76, 'liquid+gas', 'B.F. Pennington', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(150, 'methane', 'n-butane', 0.049, 4.9E-4, 360.93, 110.32, 'liquid+gas', 'B.F. Pennington', 0), +(151, 'methane', 'n-butane', 0.094, 9.4E-4, 360.93, 106.87, 'liquid+gas', 'B.F. Pennington', 0), +(152, 'methane', 'n-butane', 0.16, 0.0016, 360.93, 103.42, 'liquid+gas', 'B.F. Pennington', 0), +(153, 'methane', 'n-butane', 0.241, 0.00241, 360.93, 99.97, 'liquid+gas', 'B.F. Pennington', 0), +(154, 'methane', 'n-butane', 0.336, 0.00336, 360.93, 96.53, 'liquid+gas', 'B.F. Pennington', 0), +(155, 'methane', 'n-butane', 0.442, 0.00442, 360.93, 93.08, 'liquid+gas', 'B.F. Pennington', 0), +(156, 'methane', 'n-butane', 0.56, 0.0056, 360.93, 89.63, 'liquid+gas', 'B.F. Pennington', 0), +(157, 'methane', 'n-butane', 0.008, 8.0E-5, 310.95, 127.6, 'liquid+gas', 'Fathollah Gozalpour et al. 2005', 0), +(158, 'methane', 'n-butane', 0.036, 3.6E-4, 310.95, 126.9, 'liquid+gas', 'Fathollah Gozalpour et al. 2005', 0), +(159, 'methane', 'n-butane', 0.112, 0.00112, 310.95, 124.1, 'liquid+gas', 'Fathollah Gozalpour et al. 2005', 0), +(160, 'methane', 'n-butane', 0.149, 0.00149, 310.95, 123.4, 'liquid+gas', 'Fathollah Gozalpour et al. 2005', 0), +(161, 'methane', 'n-butane', 0.85, 0.0085, 310.95, 100.8, 'liquid+gas', 'Fathollah Gozalpour et al. 2005', 0), +(162, NULL, 'c1+nc5', 6.838, 0.06838, 310.93, 61.23, 'liquid+gas', 'Stegemerier 1959', 0), +(163, NULL, 'c1+nc5', 6.749, 0.06749, 310.93, 61.23, 'liquid+gas', 'Stegemerier 1959', 0), +(164, NULL, 'c1+nc5', 6.371, 0.06371, 310.93, 67.22, 'liquid+gas', 'Stegemerier 1959', 0), +(165, NULL, 'c1+nc5', 6.49, 0.0649, 310.93, 69.5, 'liquid+gas', 'Stegemerier 1959', 0), +(166, NULL, 'c1+nc5', 4.743, 0.04743, 310.93, 81.98, 'liquid+gas', 'Stegemerier 1959', 0), +(167, NULL, 'c1+nc5', 4.679, 0.04679, 310.93, 81.98, 'liquid+gas', 'Stegemerier 1959', 0), +(168, NULL, 'c1+nc5', 5.245, 0.05245, 310.93, 82.12, 'liquid+gas', 'Stegemerier 1959', 0), +(169, NULL, 'c1+nc5', 5.175, 0.05175, 310.93, 82.12, 'liquid+gas', 'Stegemerier 1959', 0), +(170, NULL, 'c1+nc5', 4.249, 0.04249, 310.93, 96.11, 'liquid+gas', 'Stegemerier 1959', 0), +(171, NULL, 'c1+nc5', 3.731, 0.03731, 310.93, 96.11, 'liquid+gas', 'Stegemerier 1959', 0), +(172, NULL, 'c1+nc5', 3.025, 0.03025, 310.93, 109.77, 'liquid+gas', 'Stegemerier 1959', 0), +(173, NULL, 'c1+nc5', 3.016, 0.03016, 310.93, 109.7, 'liquid+gas', 'Stegemerier 1959', 0), +(174, NULL, 'c1+nc5', 1.871, 0.01871, 310.93, 124.93, 'liquid+gas', 'Stegemerier 1959', 0), +(175, NULL, 'c1+nc5', 1.856, 0.01856, 310.93, 124.93, 'liquid+gas', 'Stegemerier 1959', 0), +(176, NULL, 'c1+nc5', 1.301, 0.01301, 310.93, 134.17, 'liquid+gas', 'Stegemerier 1959', 0), +(177, NULL, 'c1+nc5', 1.335, 0.01335, 310.93, 134.24, 'liquid+gas', 'Stegemerier 1959', 0), +(178, NULL, 'c1+nc5', 0.943, 0.00943, 310.93, 141.0, 'liquid+gas', 'Stegemerier 1959', 0), +(179, NULL, 'c1+nc5', 0.905, 0.00905, 310.93, 141.07, 'liquid+gas', 'Stegemerier 1959', 0), +(180, NULL, 'c1+nc5', 0.572, 0.00572, 310.93, 146.45, 'liquid+gas', 'Stegemerier 1959', 0), +(181, NULL, 'c1+nc5', 0.569, 0.00569, 310.93, 146.45, 'liquid+gas', 'Stegemerier 1959', 0), +(182, NULL, 'c1+nc5', 0.403, 0.00403, 310.93, 150.65, 'liquid+gas', 'Stegemerier 1959', 0), +(183, NULL, 'c1+nc5', 0.381, 0.00381, 310.93, 150.65, 'liquid+gas', 'Stegemerier 1959', 0), +(184, NULL, 'c1+nc5', 0.301, 0.00301, 310.93, 153.89, 'liquid+gas', 'Stegemerier 1959', 0), +(185, NULL, 'c1+nc5', 0.292, 0.00292, 310.93, 153.89, 'liquid+gas', 'Stegemerier 1959', 0), +(186, NULL, 'c1+nc5', 0.215, 0.00215, 310.93, 156.93, 'liquid+gas', 'Stegemerier 1959', 0), +(187, NULL, 'c1+nc5', 0.13, 0.0013, 310.93, 159.89, 'liquid+gas', 'Stegemerier 1959', 0), +(188, NULL, 'c1+nc5', 0.12, 0.0012, 310.93, 159.89, 'liquid+gas', 'Stegemerier 1959', 0), +(189, NULL, 'c1+nc5', 0.076, 7.6E-4, 310.93, 162.03, 'liquid+gas', 'Stegemerier 1959', 0), +(190, NULL, 'c1+nc5', 0.075, 7.5E-4, 310.93, 162.03, 'liquid+gas', 'Stegemerier 1959', 0), +(191, NULL, 'c1+nc5', 8.439, 0.08439, 338.71, 29.23, 'liquid+gas', 'Stegemerier 1959', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(192, NULL, 'c1+nc5', 8.314, 0.08314, 338.71, 29.23, 'liquid+gas', 'Stegemerier 1959', 0), +(193, NULL, 'c1+nc5', 7.962, 0.07962, 338.71, 40.13, 'liquid+gas', 'Stegemerier 1959', 0), +(194, NULL, 'c1+nc5', 7.917, 0.07917, 338.71, 40.13, 'liquid+gas', 'Stegemerier 1959', 0), +(195, NULL, 'c1+nc5', 6.404, 0.06404, 338.71, 50.68, 'liquid+gas', 'Stegemerier 1959', 0), +(196, NULL, 'c1+nc5', 6.382, 0.06382, 338.71, 50.68, 'liquid+gas', 'Stegemerier 1959', 0), +(197, NULL, 'c1+nc5', 5.447, 0.05447, 338.71, 61.23, 'liquid+gas', 'Stegemerier 1959', 0), +(198, NULL, 'c1+nc5', 5.17, 0.0517, 338.71, 61.23, 'liquid+gas', 'Stegemerier 1959', 0), +(199, NULL, 'c1+nc5', 4.733, 0.04733, 338.71, 72.4, 'liquid+gas', 'Stegemerier 1959', 0), +(200, NULL, 'c1+nc5', 4.704, 0.04704, 338.71, 72.4, 'liquid+gas', 'Stegemerier 1959', 0), +(201, NULL, 'c1+nc5', 3.965, 0.03965, 338.71, 82.67, 'liquid+gas', 'Stegemerier 1959', 0), +(202, NULL, 'c1+nc5', 3.016, 0.03016, 338.71, 96.32, 'liquid+gas', 'Stegemerier 1959', 0), +(203, NULL, 'c1+nc5', 2.875, 0.02875, 338.71, 96.32, 'liquid+gas', 'Stegemerier 1959', 0), +(204, NULL, 'c1+nc5', 2.08, 0.0208, 338.71, 111.35, 'liquid+gas', 'Stegemerier 1959', 0), +(205, NULL, 'c1+nc5', 1.732, 0.01732, 338.71, 117.83, 'liquid+gas', 'Stegemerier 1959', 0), +(206, NULL, 'c1+nc5', 1.693, 0.01693, 338.71, 117.83, 'liquid+gas', 'Stegemerier 1959', 0), +(207, NULL, 'c1+nc5', 1.332, 0.01332, 338.71, 124.38, 'liquid+gas', 'Stegemerier 1959', 0), +(208, NULL, 'c1+nc5', 1.257, 0.01257, 338.71, 124.38, 'liquid+gas', 'Stegemerier 1959', 0), +(209, NULL, 'c1+nc5', 0.595, 0.00595, 338.71, 139.07, 'liquid+gas', 'Stegemerier 1959', 0), +(210, NULL, 'c1+nc5', 0.594, 0.00594, 338.71, 139.07, 'liquid+gas', 'Stegemerier 1959', 0), +(211, NULL, 'c1+nc5', 0.446, 0.00446, 338.71, 143.55, 'liquid+gas', 'Stegemerier 1959', 0), +(212, NULL, 'c1+nc5', 0.426, 0.00426, 338.71, 143.55, 'liquid+gas', 'Stegemerier 1959', 0), +(213, NULL, 'c1+nc5', 0.413, 0.00413, 338.71, 144.58, 'liquid+gas', 'Stegemerier 1959', 0), +(214, NULL, 'c1+nc5', 0.41, 0.0041, 338.71, 144.58, 'liquid+gas', 'Stegemerier 1959', 0), +(215, NULL, 'c1+nc5', 0.317, 0.00317, 338.71, 146.86, 'liquid+gas', 'Stegemerier 1959', 0), +(216, NULL, 'c1+nc5', 0.309, 0.00309, 338.71, 146.86, 'liquid+gas', 'Stegemerier 1959', 0), +(217, NULL, 'c1+nc5', 0.219, 0.00219, 338.71, 150.1, 'liquid+gas', 'Stegemerier 1959', 0), +(218, NULL, 'c1+nc5', 0.21, 0.0021, 338.71, 150.1, 'liquid+gas', 'Stegemerier 1959', 0), +(219, NULL, 'c1+nc5', 0.201, 0.00201, 338.71, 151.27, 'liquid+gas', 'Stegemerier 1959', 0), +(220, NULL, 'c1+nc5', 0.183, 0.00183, 338.71, 151.27, 'liquid+gas', 'Stegemerier 1959', 0), +(221, NULL, 'c1+nc5', 0.163, 0.00163, 338.71, 152.31, 'liquid+gas', 'Stegemerier 1959', 0), +(222, NULL, 'c1+nc5', 0.159, 0.00159, 338.71, 152.31, 'liquid+gas', 'Stegemerier 1959', 0), +(223, NULL, 'c1+nc5', 0.121, 0.00121, 338.71, 154.17, 'liquid+gas', 'Stegemerier 1959', 0), +(224, NULL, 'c1+nc5', 0.12, 0.0012, 338.71, 154.17, 'liquid+gas', 'Stegemerier 1959', 0), +(225, NULL, 'c1+nc5', 0.082, 8.2E-4, 338.71, 155.68, 'liquid+gas', 'Stegemerier 1959', 0), +(226, NULL, 'c1+nc5', 0.076, 7.6E-4, 338.71, 155.68, 'liquid+gas', 'Stegemerier 1959', 0), +(227, NULL, 'c1+nc5', 0.072, 7.2E-4, 338.71, 156.79, 'liquid+gas', 'Stegemerier 1959', 0), +(228, NULL, 'c1+nc5', 0.071, 7.1E-4, 338.71, 156.86, 'liquid+gas', 'Stegemerier 1959', 0), +(229, NULL, 'c1+nc5', 0.05, 5.0E-4, 338.71, 157.89, 'liquid+gas', 'Stegemerier 1959', 0), +(230, NULL, 'c1+nc5', 0.023, 2.3E-4, 338.71, 159.68, 'liquid+gas', 'Stegemerier 1959', 0), +(231, NULL, 'c1+nc5', 0.007, 7.0E-5, 338.71, 161.48, 'liquid+gas', 'Stegemerier 1959', 0), +(232, NULL, 'c1+nc5', 7.829, 0.07829, 344.26, 29.72, 'liquid+gas', 'Stegemerier 1959', 0), +(233, NULL, 'c1+nc5', 7.944, 0.07944, 344.26, 29.72, 'liquid+gas', 'Stegemerier 1959', 0), +(234, NULL, 'c1+nc5', 7.372, 0.07372, 344.26, 39.37, 'liquid+gas', 'Stegemerier 1959', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(235, NULL, 'c1+nc5', 7.232, 0.07232, 344.26, 39.37, 'liquid+gas', 'Stegemerier 1959', 0), +(236, NULL, 'c1+nc5', 5.128, 0.05128, 344.26, 70.33, 'liquid+gas', 'Stegemerier 1959', 0), +(237, NULL, 'c1+nc5', 4.521, 0.04521, 344.26, 70.33, 'liquid+gas', 'Stegemerier 1959', 0), +(238, NULL, 'c1+nc5', 3.578, 0.03578, 344.26, 82.19, 'liquid+gas', 'Stegemerier 1959', 0), +(239, NULL, 'c1+nc5', 2.548, 0.02548, 344.26, 98.32, 'liquid+gas', 'Stegemerier 1959', 0), +(240, NULL, 'c1+nc5', 1.991, 0.01991, 344.26, 111.08, 'liquid+gas', 'Stegemerier 1959', 0), +(241, NULL, 'c1+nc5', 1.985, 0.01985, 344.26, 111.49, 'liquid+gas', 'Stegemerier 1959', 0), +(242, NULL, 'c1+nc5', 1.257, 0.01257, 344.26, 124.73, 'liquid+gas', 'Stegemerier 1959', 0), +(243, NULL, 'c1+nc5', 1.189, 0.01189, 344.26, 124.73, 'liquid+gas', 'Stegemerier 1959', 0), +(244, NULL, 'c1+nc5', 0.767, 0.00767, 344.26, 131.9, 'liquid+gas', 'Stegemerier 1959', 0), +(245, NULL, 'c1+nc5', 0.525, 0.00525, 344.26, 138.17, 'liquid+gas', 'Stegemerier 1959', 0), +(246, NULL, 'c1+nc5', 0.519, 0.00519, 344.26, 138.17, 'liquid+gas', 'Stegemerier 1959', 0), +(247, NULL, 'c1+nc5', 0.447, 0.00447, 344.26, 140.65, 'liquid+gas', 'Stegemerier 1959', 0), +(248, NULL, 'c1+nc5', 0.419, 0.00419, 344.26, 140.65, 'liquid+gas', 'Stegemerier 1959', 0), +(249, NULL, 'c1+nc5', 0.436, 0.00436, 344.26, 141.34, 'liquid+gas', 'Stegemerier 1959', 0), +(250, NULL, 'c1+nc5', 0.425, 0.00425, 344.26, 141.34, 'liquid+gas', 'Stegemerier 1959', 0), +(251, NULL, 'c1+nc5', 0.319, 0.00319, 344.26, 143.55, 'liquid+gas', 'Stegemerier 1959', 0), +(252, NULL, 'c1+nc5', 0.313, 0.00313, 344.26, 143.83, 'liquid+gas', 'Stegemerier 1959', 0), +(253, NULL, 'c1+nc5', 0.355, 0.00355, 344.26, 143.89, 'liquid+gas', 'Stegemerier 1959', 0), +(254, NULL, 'c1+nc5', 0.326, 0.00326, 344.26, 144.24, 'liquid+gas', 'Stegemerier 1959', 0), +(255, NULL, 'c1+nc5', 0.317, 0.00317, 344.26, 144.79, 'liquid+gas', 'Stegemerier 1959', 0), +(256, NULL, 'c1+nc5', 0.287, 0.00287, 344.26, 145.55, 'liquid+gas', 'Stegemerier 1959', 0), +(257, NULL, 'c1+nc5', 0.286, 0.00286, 344.26, 145.55, 'liquid+gas', 'Stegemerier 1959', 0), +(258, NULL, 'c1+nc5', 0.212, 0.00212, 344.26, 148.38, 'liquid+gas', 'Stegemerier 1959', 0), +(259, NULL, 'c1+nc5', 0.209, 0.00209, 344.26, 148.38, 'liquid+gas', 'Stegemerier 1959', 0), +(260, NULL, 'c1+nc5', 0.157, 0.00157, 344.26, 150.17, 'liquid+gas', 'Stegemerier 1959', 0), +(261, NULL, 'c1+nc5', 0.157, 0.00157, 344.26, 150.17, 'liquid+gas', 'Stegemerier 1959', 0), +(262, NULL, 'c1+nc5', 0.093, 9.3E-4, 344.26, 152.44, 'liquid+gas', 'Stegemerier 1959', 0), +(263, NULL, 'c1+nc5', 0.103, 0.0988, 344.26, 152.72, 'liquid+gas', 'Stegemerier 1959', 0), +(264, NULL, 'c1+nc5', 0.103, 0.1001, 344.26, 152.72, 'liquid+gas', 'Stegemerier 1959', 0), +(265, NULL, 'c1+nc5', 0.095, 0.0907, 344.26, 152.79, 'liquid+gas', 'Stegemerier 1959', 0), +(266, NULL, 'c1+nc5', 0.079, 0.0828, 344.26, 152.86, 'liquid+gas', 'Stegemerier 1959', 0), +(267, NULL, 'c1+nc5', 0.059, 0.075, 344.26, 154.79, 'liquid+gas', 'Stegemerier 1959', 0), +(268, NULL, 'c1+nc5', 0.057, 0.0683, 344.26, 154.79, 'liquid+gas', 'Stegemerier 1959', 0), +(269, NULL, 'c1+nc5', 0.067, 0.0674, 344.26, 154.93, 'liquid+gas', 'Stegemerier 1959', 0), +(270, NULL, 'c1+nc5', 0.032, 0.0599, 344.26, 157.2, 'liquid+gas', 'Stegemerier 1959', 0), +(271, NULL, 'c1+nc5', 0.014, 0.0525, 344.26, 158.24, 'liquid+gas', 'Stegemerier 1959', 0), +(272, NULL, 'c1+nc5', 7.748, 0.07748, 349.82, 29.03, 'liquid+gas', 'Stegemerier 1959', 0), +(273, NULL, 'c1+nc5', 7.661, 0.07661, 349.82, 29.03, 'liquid+gas', 'Stegemerier 1959', 0), +(274, NULL, 'c1+nc5', 4.495, 0.04495, 349.82, 61.43, 'liquid+gas', 'Stegemerier 1959', 0), +(275, NULL, 'c1+nc5', 4.31, 0.0431, 349.82, 61.43, 'liquid+gas', 'Stegemerier 1959', 0), +(276, NULL, 'c1+nc5', 4.742, 0.04742, 349.82, 68.26, 'liquid+gas', 'Stegemerier 1959', 0), +(277, NULL, 'c1+nc5', 4.502, 0.04502, 349.82, 68.26, 'liquid+gas', 'Stegemerier 1959', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(278, NULL, 'c1+nc5', 4.26, 0.0426, 349.82, 72.05, 'liquid+gas', 'Stegemerier 1959', 0), +(279, NULL, 'c1+nc5', 4.154, 0.04154, 349.82, 72.05, 'liquid+gas', 'Stegemerier 1959', 0), +(280, NULL, 'c1+nc5', 3.601, 0.03601, 349.82, 82.05, 'liquid+gas', 'Stegemerier 1959', 0), +(281, NULL, 'c1+nc5', 3.586, 0.03586, 349.82, 82.32, 'liquid+gas', 'Stegemerier 1959', 0), +(282, NULL, 'c1+nc5', 3.518, 0.03518, 349.82, 82.32, 'liquid+gas', 'Stegemerier 1959', 0), +(283, NULL, 'c1+nc5', 2.62, 0.0262, 349.82, 96.67, 'liquid+gas', 'Stegemerier 1959', 0), +(284, NULL, 'c1+nc5', 2.61, 0.0261, 349.82, 96.67, 'liquid+gas', 'Stegemerier 1959', 0), +(285, NULL, 'c1+nc5', 1.85, 0.0185, 349.82, 110.25, 'liquid+gas', 'Stegemerier 1959', 0), +(286, NULL, 'c1+nc5', 1.839, 0.01839, 349.82, 110.25, 'liquid+gas', 'Stegemerier 1959', 0), +(287, NULL, 'c1+nc5', 1.142, 0.01142, 349.82, 123.49, 'liquid+gas', 'Stegemerier 1959', 0), +(288, NULL, 'c1+nc5', 1.09, 0.0109, 349.82, 123.49, 'liquid+gas', 'Stegemerier 1959', 0), +(289, NULL, 'c1+nc5', 0.818, 0.00818, 349.82, 129.69, 'liquid+gas', 'Stegemerier 1959', 0), +(290, NULL, 'c1+nc5', 0.783, 0.00783, 349.82, 129.69, 'liquid+gas', 'Stegemerier 1959', 0), +(291, NULL, 'c1+nc5', 0.464, 0.00464, 349.82, 138.65, 'liquid+gas', 'Stegemerier 1959', 0), +(292, NULL, 'c1+nc5', 0.461, 0.00461, 349.82, 138.65, 'liquid+gas', 'Stegemerier 1959', 0), +(293, NULL, 'c1+nc5', 0.347, 0.00347, 349.82, 142.24, 'liquid+gas', 'Stegemerier 1959', 0), +(294, NULL, 'c1+nc5', 0.342, 0.00342, 349.82, 142.24, 'liquid+gas', 'Stegemerier 1959', 0), +(295, NULL, 'c1+nc5', 0.277, 0.00277, 349.82, 144.52, 'liquid+gas', 'Stegemerier 1959', 0), +(296, NULL, 'c1+nc5', 0.268, 0.00268, 349.82, 144.65, 'liquid+gas', 'Stegemerier 1959', 0), +(297, NULL, 'c1+nc5', 0.23, 0.0023, 349.82, 145.62, 'liquid+gas', 'Stegemerier 1959', 0), +(298, NULL, 'c1+nc5', 0.232, 0.00232, 349.82, 145.69, 'liquid+gas', 'Stegemerier 1959', 0), +(299, NULL, 'c1+nc5', 0.214, 0.00214, 349.82, 147.07, 'liquid+gas', 'Stegemerier 1959', 0), +(300, NULL, 'c1+nc5', 0.208, 0.00208, 349.82, 147.07, 'liquid+gas', 'Stegemerier 1959', 0), +(301, NULL, 'c1+nc5', 0.143, 0.00143, 349.82, 148.86, 'liquid+gas', 'Stegemerier 1959', 0), +(302, NULL, 'c1+nc5', 0.136, 0.00136, 349.82, 148.86, 'liquid+gas', 'Stegemerier 1959', 0), +(303, NULL, 'c1+nc5', 0.136, 0.00136, 349.82, 149.13, 'liquid+gas', 'Stegemerier 1959', 0), +(304, NULL, 'c1+nc5', 0.107, 0.00107, 349.82, 151.07, 'liquid+gas', 'Stegemerier 1959', 0), +(305, NULL, 'c1+nc5', 0.069, 6.9E-4, 349.82, 152.93, 'liquid+gas', 'Stegemerier 1959', 0), +(306, NULL, 'c1+nc5', 0.059, 5.9E-4, 349.82, 152.93, 'liquid+gas', 'Stegemerier 1959', 0), +(307, NULL, 'c1+nc5', 0.414, 0.00414, 360.93, 134.45, 'liquid+gas', 'Stegemerier 1959', 0), +(308, NULL, 'c1+nc5', 0.412, 0.00412, 360.93, 134.45, 'liquid+gas', 'Stegemerier 1959', 0), +(309, NULL, 'c1+nc5', 0.254, 0.00254, 360.93, 139.83, 'liquid+gas', 'Stegemerier 1959', 0), +(310, NULL, 'c1+nc5', 0.251, 0.00251, 360.93, 139.83, 'liquid+gas', 'Stegemerier 1959', 0), +(311, NULL, 'c1+nc5', 0.16, 0.0016, 360.93, 144.52, 'liquid+gas', 'Stegemerier 1959', 0), +(312, NULL, 'c1+nc5', 0.13, 0.0013, 360.93, 145.27, 'liquid+gas', 'Stegemerier 1959', 0), +(313, NULL, 'c1+nc5', 0.125, 0.00125, 360.93, 147.0, 'liquid+gas', 'Stegemerier 1959', 0), +(314, NULL, 'c1+nc5', 6.019, 0.06019, 366.48, 36.06, 'liquid+gas', 'Stegemerier 1959', 0), +(315, NULL, 'c1+nc5', 5.422, 0.05422, 366.48, 41.23, 'liquid+gas', 'Stegemerier 1959', 0), +(316, NULL, 'c1+nc5', 5.271, 0.05271, 366.48, 41.23, 'liquid+gas', 'Stegemerier 1959', 0), +(317, NULL, 'c1+nc5', 4.432, 0.04432, 366.48, 54.4, 'liquid+gas', 'Stegemerier 1959', 0), +(318, NULL, 'c1+nc5', 4.431, 0.04431, 366.48, 54.4, 'liquid+gas', 'Stegemerier 1959', 0), +(319, NULL, 'c1+nc5', 3.678, 0.03678, 366.48, 65.02, 'liquid+gas', 'Stegemerier 1959', 0), +(320, NULL, 'c1+nc5', 1.699, 0.01699, 366.48, 103.35, 'liquid+gas', 'Stegemerier 1959', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(321, NULL, 'c1+nc5', 1.648, 0.01648, 366.48, 103.35, 'liquid+gas', 'Stegemerier 1959', 0), +(322, NULL, 'c1+nc5', 1.134, 0.01134, 366.48, 113.28, 'liquid+gas', 'Stegemerier 1959', 0), +(323, NULL, 'c1+nc5', 0.723, 0.00723, 366.48, 123.693, 'liquid+gas', 'Stegemerier 1959', 0), +(324, NULL, 'c1+nc5', 0.713, 0.00713, 366.48, 123.693, 'liquid+gas', 'Stegemerier 1959', 0), +(325, NULL, 'c1+nc5', 0.639, 0.00639, 366.48, 125.623, 'liquid+gas', 'Stegemerier 1959', 0), +(326, 'methane', 'n-pentane', 12.03, 0.1203, 310.93, 27.58, 'liquid+gas', 'Amin et al. 1997', 1), +(327, 'methane', 'n-pentane', 9.28, 0.0928, 310.93, 41.37, 'liquid+gas', 'Amin et al. 1997', 1), +(328, NULL, 'c1+nc5', 7.35, 0.0735, 310.93, 55.16, 'liquid+gas', 'Amin et al. 1997', 0), +(329, NULL, 'c1+nc5', 5.82, 0.0582, 310.93, 68.95, 'liquid+gas', 'Amin et al. 1997', 0), +(330, NULL, 'c1+nc5', 4.91, 0.0491, 310.93, 82.74, 'liquid+gas', 'Amin et al. 1997', 0), +(331, NULL, 'c1+nc5', 3.56, 0.0356, 310.93, 96.53, 'liquid+gas', 'Amin et al. 1997', 0), +(332, NULL, 'c1+nc5', 3.07, 0.0307, 310.93, 103.42, 'liquid+gas', 'Amin et al. 1997', 0), +(333, NULL, 'c1+nc5', 2.66, 0.0266, 310.93, 110.32, 'liquid+gas', 'Amin et al. 1997', 0), +(334, NULL, 'c1+nc5', 2.22, 0.0222, 310.93, 117.21, 'liquid+gas', 'Amin et al. 1997', 0), +(335, NULL, 'c1+nc5', 1.86, 0.0186, 310.93, 124.11, 'liquid+gas', 'Amin et al. 1997', 0), +(336, NULL, 'c1+nc5', 1.48, 0.0148, 310.93, 131.0, 'liquid+gas', 'Amin et al. 1997', 0), +(337, NULL, 'c1+nc5', 0.96, 0.0096, 310.93, 137.9, 'liquid+gas', 'Amin et al. 1997', 0), +(338, NULL, 'c1+nc5', 0.78, 0.0078, 310.93, 144.79, 'liquid+gas', 'Amin et al. 1997', 0), +(339, NULL, 'c1+nc5', 0.41, 0.0041, 310.93, 151.69, 'liquid+gas', 'Amin et al. 1997', 0), +(340, NULL, 'c1+nc5', 0.21, 0.0021, 310.93, 158.58, 'liquid+gas', 'Amin et al. 1997', 0), +(341, NULL, 'c1+nc5', 10.61, 0.1061, 366.48, 27.58, 'liquid+gas', 'Amin et al. 1997', 0), +(342, NULL, 'c1+nc5', 8.13, 0.0813, 366.48, 41.37, 'liquid+gas', 'Amin et al. 1997', 0), +(343, NULL, 'c1+nc5', 6.4, 0.064, 366.48, 55.16, 'liquid+gas', 'Amin et al. 1997', 0), +(344, NULL, 'c1+nc5', 5.0, 0.1998, 366.48, 68.95, 'liquid+gas', 'Amin et al. 1997', 0), +(345, NULL, 'c1+nc5', 3.9, 0.1881, 366.48, 82.74, 'liquid+gas', 'Amin et al. 1997', 0), +(346, NULL, 'c1+nc5', 2.92, 0.1765, 366.48, 96.53, 'liquid+gas', 'Amin et al. 1997', 0), +(347, NULL, 'c1+nc5', 2.51, 0.3021, 366.48, 103.42, 'liquid+gas', 'Amin et al. 1997', 0), +(348, NULL, 'c1+nc5', 2.1, 0.2888, 366.48, 110.32, 'liquid+gas', 'Amin et al. 1997', 0), +(349, NULL, 'c1+nc5', 1.73, 0.2756, 366.48, 117.21, 'liquid+gas', 'Amin et al. 1997', 0), +(350, NULL, 'c1+nc5', 1.4, 0.2625, 366.48, 124.11, 'liquid+gas', 'Amin et al. 1997', 0), +(351, NULL, 'c1+nc5', 1.0, 0.2496, 366.48, 131.0, 'liquid+gas', 'Amin et al. 1997', 0), +(352, NULL, 'c1+nc5', 0.73, 0.2367, 366.48, 137.9, 'liquid+gas', 'Amin et al. 1997', 0), +(353, NULL, 'c1+nc5', 0.43, 0.224, 366.48, 144.79, 'liquid+gas', 'Amin et al. 1997', 0), +(354, NULL, 'c1+nc5', 0.14, 0.212, 366.48, 151.69, 'liquid+gas', 'Amin et al. 1997', 0), +(355, NULL, 'c1+nc5', 7.89, 0.0789, 410.93, 27.58, 'liquid+gas', 'Amin et al. 1997', 0), +(356, NULL, 'c1+nc5', 5.91, 0.0591, 410.93, 41.37, 'liquid+gas', 'Amin et al. 1997', 0), +(357, NULL, 'c1+nc5', 4.6, 0.046, 410.93, 55.16, 'liquid+gas', 'Amin et al. 1997', 0), +(358, NULL, 'c1+nc5', 3.61, 0.0361, 410.93, 68.95, 'liquid+gas', 'Amin et al. 1997', 0), +(359, NULL, 'c1+nc5', 2.8, 0.028, 410.93, 82.74, 'liquid+gas', 'Amin et al. 1997', 0), +(360, NULL, 'c1+nc5', 2.0, 0.02, 410.93, 96.53, 'liquid+gas', 'Amin et al. 1997', 0), +(361, NULL, 'c1+nc5', 1.73, 0.0173, 410.93, 103.42, 'liquid+gas', 'Amin et al. 1997', 0), +(362, NULL, 'c1+nc5', 1.44, 0.0144, 410.93, 110.32, 'liquid+gas', 'Amin et al. 1997', 0), +(363, NULL, 'c1+nc5', 1.15, 0.0115, 410.93, 117.21, 'liquid+gas', 'Amin et al. 1997', 0), +(364, NULL, 'c1+nc5', 0.9, 0.009, 410.93, 124.11, 'liquid+gas', 'Amin et al. 1997', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(365, NULL, 'c1+nc5', 0.6, 0.006, 410.93, 131.0, 'liquid+gas', 'Amin et al. 1997', 0), +(366, NULL, 'c1+nc5', 0.41, 0.0041, 410.93, 137.9, 'liquid+gas', 'Amin et al. 1997', 0), +(367, NULL, 'c1+nc5', 0.17, 0.0017, 410.93, 144.79, 'liquid+gas', 'Amin et al. 1997', 0), +(368, NULL, 'c1+nc5', 0.09, 9.0E-4, 410.93, 151.69, 'liquid+gas', 'Amin et al. 1997', 0), +(369, NULL, 'c1+nc7', 14.31, 0.1431, 310.93, 27.58, 'liquid+gas', 'Amin et al. 1997', 0), +(370, NULL, 'c1+nc7', 11.12, 0.1112, 310.93, 55.16, 'liquid+gas', 'Amin et al. 1997', 0), +(371, NULL, 'c1+nc7', 8.45, 0.0845, 310.93, 82.74, 'liquid+gas', 'Amin et al. 1997', 0), +(372, NULL, 'c1+nc7', 6.0, 0.06, 310.93, 110.32, 'liquid+gas', 'Amin et al. 1997', 0), +(373, NULL, 'c1+nc7', 4.1, 0.041, 310.93, 137.9, 'liquid+gas', 'Amin et al. 1997', 0), +(374, NULL, 'c1+nc7', 3.25, 0.0325, 310.93, 151.69, 'liquid+gas', 'Amin et al. 1997', 0), +(375, NULL, 'c1+nc7', 2.6, 0.026, 310.93, 165.48, 'liquid+gas', 'Amin et al. 1997', 0), +(376, NULL, 'c1+nc7', 1.8, 0.018, 310.93, 179.26, 'liquid+gas', 'Amin et al. 1997', 0), +(377, NULL, 'c1+nc7', 1.2, 0.012, 310.93, 193.05, 'liquid+gas', 'Amin et al. 1997', 0), +(378, NULL, 'c1+nc7', 0.72, 0.0072, 310.93, 206.84, 'liquid+gas', 'Amin et al. 1997', 0), +(379, NULL, 'c1+nc7', 0.52, 0.0052, 310.93, 213.74, 'liquid+gas', 'Amin et al. 1997', 0), +(380, NULL, 'c1+nc7', 0.33, 0.0033, 310.93, 220.63, 'liquid+gas', 'Amin et al. 1997', 0), +(381, NULL, 'c1+nc7', 0.21, 0.0021, 310.93, 227.53, 'liquid+gas', 'Amin et al. 1997', 0), +(382, NULL, 'c1+nc7', 0.13, 0.0013, 310.93, 234.42, 'liquid+gas', 'Amin et al. 1997', 0), +(383, NULL, 'c1+nc7', 0.07, 7.0E-4, 310.93, 241.32, 'liquid+gas', 'Amin et al. 1997', 0), +(384, NULL, 'c1+nc7', 0.01, 1.0E-4, 310.93, 248.21, 'liquid+gas', 'Amin et al. 1997', 0), +(385, NULL, 'c1+nc7', 12.86, 0.1286, 338.71, 27.58, 'liquid+gas', 'Amin et al. 1997', 0), +(386, NULL, 'c1+nc7', 10.13, 0.1013, 338.71, 55.16, 'liquid+gas', 'Amin et al. 1997', 0), +(387, NULL, 'c1+nc7', 7.64, 0.0764, 338.71, 82.74, 'liquid+gas', 'Amin et al. 1997', 0), +(388, NULL, 'c1+nc7', 5.6, 0.056, 338.71, 110.32, 'liquid+gas', 'Amin et al. 1997', 0), +(389, NULL, 'c1+nc7', 3.9, 0.039, 338.71, 137.9, 'liquid+gas', 'Amin et al. 1997', 0), +(390, NULL, 'c1+nc7', 2.95, 0.0295, 338.71, 151.69, 'liquid+gas', 'Amin et al. 1997', 0), +(391, NULL, 'c1+nc7', 2.4, 0.024, 338.71, 165.48, 'liquid+gas', 'Amin et al. 1997', 0), +(392, NULL, 'c1+nc7', 1.71, 0.0171, 338.71, 179.26, 'liquid+gas', 'Amin et al. 1997', 0), +(393, NULL, 'c1+nc7', 1.01, 0.0101, 338.71, 193.05, 'liquid+gas', 'Amin et al. 1997', 0), +(394, NULL, 'c1+nc7', 0.68, 0.0068, 338.71, 206.84, 'liquid+gas', 'Amin et al. 1997', 0), +(395, NULL, 'c1+nc7', 0.44, 0.0044, 338.71, 213.74, 'liquid+gas', 'Amin et al. 1997', 0), +(396, NULL, 'c1+nc7', 0.3, 0.003, 338.71, 220.63, 'liquid+gas', 'Amin et al. 1997', 0), +(397, NULL, 'c1+nc7', 0.18, 0.0018, 338.71, 227.53, 'liquid+gas', 'Amin et al. 1997', 0), +(398, NULL, 'c1+nc7', 0.1, 0.001, 338.71, 234.42, 'liquid+gas', 'Amin et al. 1997', 0), +(399, NULL, 'c1+nc7', 0.06, 6.0E-4, 338.71, 241.32, 'liquid+gas', 'Amin et al. 1997', 0), +(400, NULL, 'c1+nc7', 10.95, 0.1095, 366.48, 27.58, 'liquid+gas', 'Amin et al. 1997', 0), +(401, NULL, 'c1+nc7', 8.56, 0.0856, 366.48, 55.16, 'liquid+gas', 'Amin et al. 1997', 0), +(402, NULL, 'c1+nc7', 6.47, 0.0647, 366.48, 82.74, 'liquid+gas', 'Amin et al. 1997', 0), +(403, NULL, 'c1+nc7', 4.87, 0.0487, 366.48, 110.32, 'liquid+gas', 'Amin et al. 1997', 0), +(404, NULL, 'c1+nc7', 3.37, 0.0337, 366.48, 137.9, 'liquid+gas', 'Amin et al. 1997', 0), +(405, NULL, 'c1+nc7', 2.49, 0.0249, 366.48, 151.69, 'liquid+gas', 'Amin et al. 1997', 0), +(406, NULL, 'c1+nc7', 2.0, 0.02, 366.48, 165.48, 'liquid+gas', 'Amin et al. 1997', 0), +(407, NULL, 'c1+nc7', 1.35, 0.0135, 366.48, 179.26, 'liquid+gas', 'Amin et al. 1997', 0), +(408, NULL, 'c1+nc7', 0.9, 0.009, 366.48, 193.05, 'liquid+gas', 'Amin et al. 1997', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(409, NULL, 'c1+nc7', 0.48, 0.0048, 366.48, 206.84, 'liquid+gas', 'Amin et al. 1997', 0), +(410, NULL, 'c1+nc7', 0.27, 0.0027, 366.48, 213.74, 'liquid+gas', 'Amin et al. 1997', 0), +(411, NULL, 'c1+nc7', 0.19, 0.0019, 366.48, 220.63, 'liquid+gas', 'Amin et al. 1997', 0), +(412, NULL, 'c1+nc7', 0.1, 0.001, 366.48, 227.53, 'liquid+gas', 'Amin et al. 1997', 0), +(413, NULL, 'c1+nc7', 8.46, 0.0846, 394.26, 27.58, 'liquid+gas', 'Amin et al. 1997', 0), +(414, NULL, 'c1+nc7', 6.71, 0.0671, 394.26, 55.16, 'liquid+gas', 'Amin et al. 1997', 0), +(415, NULL, 'c1+nc7', 5.11, 0.0511, 394.26, 82.74, 'liquid+gas', 'Amin et al. 1997', 0), +(416, NULL, 'c1+nc7', 3.59, 0.0359, 394.26, 110.32, 'liquid+gas', 'Amin et al. 1997', 0), +(417, NULL, 'c1+nc7', 2.41, 0.0241, 394.26, 137.9, 'liquid+gas', 'Amin et al. 1997', 0), +(418, NULL, 'c1+nc7', 1.82, 0.0182, 394.26, 151.69, 'liquid+gas', 'Amin et al. 1997', 0), +(419, NULL, 'c1+nc7', 1.23, 0.0123, 394.26, 165.48, 'liquid+gas', 'Amin et al. 1997', 0), +(420, NULL, 'c1+nc7', 0.8, 0.008, 394.26, 179.26, 'liquid+gas', 'Amin et al. 1997', 0), +(421, NULL, 'c1+nc7', 0.4, 0.004, 394.26, 193.05, 'liquid+gas', 'Amin et al. 1997', 0), +(422, 'methane', 'nC10', 20.5, 0.205, 310.93, 27.58, 'liquid+gas', 'Amin et al. 1997', 1), +(423, 'methane', 'nC10', 14.84, 0.1484, 310.93, 55.16, 'liquid+gas', 'Amin et al. 1997', 1), +(424, 'methane', 'nC10', 11.52, 0.1152, 310.93, 82.74, 'liquid+gas', 'Amin et al. 1997', 1), +(425, 'methane', 'nC10', 10.27, 0.1027, 310.93, 96.53, 'liquid+gas', 'Amin et al. 1997', 1), +(426, 'methane', 'nC10', 9.17, 0.0917, 310.93, 110.32, 'liquid+gas', 'Amin et al. 1997', 0), +(427, 'methane', 'nC10', 8.21, 0.0821, 310.93, 124.11, 'liquid+gas', 'Amin et al. 1997', 0), +(428, NULL, 'c1+nc10', 7.35, 0.0735, 310.93, 137.9, 'liquid+gas', 'Amin et al. 1997', 0), +(429, NULL, 'c1+nc10', 6.57, 0.0657, 310.93, 151.69, 'liquid+gas', 'Amin et al. 1997', 0), +(430, NULL, 'c1+nc10', 5.86, 0.0586, 310.93, 165.48, 'liquid+gas', 'Amin et al. 1997', 0), +(431, NULL, 'c1+nc10', 5.21, 0.0521, 310.93, 179.26, 'liquid+gas', 'Amin et al. 1997', 0), +(432, NULL, 'c1+nc10', 4.6, 0.046, 310.93, 193.05, 'liquid+gas', 'Amin et al. 1997', 0), +(433, NULL, 'c1+nc10', 4.04, 0.0404, 310.93, 206.84, 'liquid+gas', 'Amin et al. 1997', 0), +(434, NULL, 'c1+nc10', 3.72, 0.0372, 310.93, 220.63, 'liquid+gas', 'Amin et al. 1997', 0), +(435, NULL, 'c1+nc10', 3.04, 0.0304, 310.93, 234.42, 'liquid+gas', 'Amin et al. 1997', 0), +(436, NULL, 'c1+nc10', 2.58, 0.0258, 310.93, 248.21, 'liquid+gas', 'Amin et al. 1997', 0), +(437, NULL, 'c1+nc10', 2.14, 0.0214, 310.93, 262.0, 'liquid+gas', 'Amin et al. 1997', 0), +(438, NULL, 'c1+nc10', 1.69, 0.0169, 310.93, 275.79, 'liquid+gas', 'Amin et al. 1997', 0), +(439, NULL, 'c1+nc10', 0.732, 0.00732, 310.93, 310.27, 'liquid+gas', 'Amin et al. 1997', 0), +(440, NULL, 'c1+nc10', 0.12, 0.0012, 310.93, 344.74, 'liquid+gas', 'Amin et al. 1997', 0), +(441, NULL, 'c1+nc10', 19.4, 0.194, 366.48, 27.58, 'liquid+gas', 'Amin et al. 1997', 0), +(442, NULL, 'c1+nc10', 14.8, 0.148, 366.48, 55.16, 'liquid+gas', 'Amin et al. 1997', 0), +(443, NULL, 'c1+nc10', 10.8, 0.108, 366.48, 82.74, 'liquid+gas', 'Amin et al. 1997', 0), +(444, NULL, 'c1+nc10', 9.6, 0.096, 366.48, 96.53, 'liquid+gas', 'Amin et al. 1997', 0), +(445, NULL, 'c1+nc10', 8.5, 0.085, 366.48, 110.32, 'liquid+gas', 'Amin et al. 1997', 0), +(446, NULL, 'c1+nc10', 7.6, 0.076, 366.48, 124.11, 'liquid+gas', 'Amin et al. 1997', 0), +(447, NULL, 'c1+nc10', 6.8, 0.068, 366.48, 137.9, 'liquid+gas', 'Amin et al. 1997', 0), +(448, NULL, 'c1+nc10', 6.01, 0.0601, 366.48, 151.69, 'liquid+gas', 'Amin et al. 1997', 0), +(449, NULL, 'c1+nc10', 5.36, 0.0536, 366.48, 165.48, 'liquid+gas', 'Amin et al. 1997', 0), +(450, NULL, 'c1+nc10', 4.74, 0.0474, 366.48, 179.26, 'liquid+gas', 'Amin et al. 1997', 0), +(451, NULL, 'c1+nc10', 4.15, 0.0415, 366.48, 193.05, 'liquid+gas', 'Amin et al. 1997', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(452, NULL, 'c1+nc10', 3.66, 0.0366, 366.48, 206.84, 'liquid+gas', 'Amin et al. 1997', 0), +(453, NULL, 'c1+nc10', 3.07, 0.0307, 366.48, 220.63, 'liquid+gas', 'Amin et al. 1997', 0), +(454, NULL, 'c1+nc10', 2.597, 0.02597, 366.48, 234.42, 'liquid+gas', 'Amin et al. 1997', 0), +(455, NULL, 'c1+nc10', 2.147, 0.02147, 366.48, 248.21, 'liquid+gas', 'Amin et al. 1997', 0), +(456, NULL, 'c1+nc10', 1.722, 0.01722, 366.48, 262.0, 'liquid+gas', 'Amin et al. 1997', 0), +(457, NULL, 'c1+nc10', 1.34, 0.0134, 366.48, 275.79, 'liquid+gas', 'Amin et al. 1997', 0), +(458, NULL, 'c1+nc10', 0.416, 0.00416, 366.48, 310.27, 'liquid+gas', 'Amin et al. 1997', 0), +(459, NULL, 'c1+nc10', 14.65, 0.1465, 410.93, 27.58, 'liquid+gas', 'Amin et al. 1997', 0), +(460, NULL, 'c1+nc10', 10.45, 0.1045, 410.93, 55.16, 'liquid+gas', 'Amin et al. 1997', 0), +(461, NULL, 'c1+nc10', 8.0, 0.08, 410.93, 82.74, 'liquid+gas', 'Amin et al. 1997', 0), +(462, NULL, 'c1+nc10', 7.05, 0.0705, 410.93, 96.53, 'liquid+gas', 'Amin et al. 1997', 0), +(463, NULL, 'c1+nc10', 6.24, 0.0624, 410.93, 110.32, 'liquid+gas', 'Amin et al. 1997', 0), +(464, NULL, 'c1+nc10', 5.53, 0.0553, 410.93, 124.11, 'liquid+gas', 'Amin et al. 1997', 0), +(465, NULL, 'c1+nc10', 4.89, 0.0489, 410.93, 137.9, 'liquid+gas', 'Amin et al. 1997', 0), +(466, NULL, 'c1+nc10', 4.31, 0.0431, 410.93, 151.69, 'liquid+gas', 'Amin et al. 1997', 0), +(467, NULL, 'c1+nc10', 3.7, 0.037, 410.93, 165.48, 'liquid+gas', 'Amin et al. 1997', 0), +(468, NULL, 'c1+nc10', 3.31, 0.0331, 410.93, 179.26, 'liquid+gas', 'Amin et al. 1997', 0), +(469, NULL, 'c1+nc10', 2.85, 0.0285, 410.93, 193.05, 'liquid+gas', 'Amin et al. 1997', 0), +(470, NULL, 'c1+nc10', 2.43, 0.0243, 410.93, 206.84, 'liquid+gas', 'Amin et al. 1997', 0), +(471, NULL, 'c1+nc10', 2.03, 0.0203, 410.93, 220.63, 'liquid+gas', 'Amin et al. 1997', 0), +(472, NULL, 'c1+nc10', 1.66, 0.0166, 410.93, 234.42, 'liquid+gas', 'Amin et al. 1997', 0), +(473, NULL, 'c1+nc10', 1.32, 0.0132, 410.93, 248.21, 'liquid+gas', 'Amin et al. 1997', 0), +(474, NULL, 'c1+nc10', 0.99, 0.0099, 410.93, 262.0, 'liquid+gas', 'Amin et al. 1997', 0), +(475, NULL, 'c1+nc10', 0.68, 0.0068, 410.93, 275.79, 'liquid+gas', 'Amin et al. 1997', 0), +(476, NULL, 'c1+nc10', 0.02, 2.0E-4, 410.93, 310.27, 'liquid+gas', 'Amin et al. 1997', 0), +(477, NULL, 'c1+nc10', 10.713, 0.10713, 310.93, 97.91, 'liquid+gas', 'Stegemerier 1959', 0), +(478, NULL, 'c1+nc10', 10.745, 0.10745, 310.93, 97.91, 'liquid+gas', 'Stegemerier 1959', 0), +(479, NULL, 'c1+nc10', 8.677, 0.08677, 310.93, 123.69, 'liquid+gas', 'Stegemerier 1959', 0), +(480, NULL, 'c1+nc10', 8.629, 0.08629, 310.93, 123.69, 'liquid+gas', 'Stegemerier 1959', 0), +(481, NULL, 'c1+nc10', 7.366, 0.07366, 310.93, 137.07, 'liquid+gas', 'Stegemerier 1959', 0), +(482, NULL, 'c1+nc10', 7.336, 0.07336, 310.93, 137.07, 'liquid+gas', 'Stegemerier 1959', 0), +(483, NULL, 'c1+nc10', 6.198, 0.06198, 310.93, 155.55, 'liquid+gas', 'Stegemerier 1959', 0), +(484, NULL, 'c1+nc10', 6.033, 0.06033, 310.93, 155.55, 'liquid+gas', 'Stegemerier 1959', 0), +(485, NULL, 'c1+nc10', 5.038, 0.05038, 310.93, 176.64, 'liquid+gas', 'Stegemerier 1959', 0), +(486, NULL, 'c1+nc10', 5.085, 0.05085, 310.93, 176.64, 'liquid+gas', 'Stegemerier 1959', 0), +(487, NULL, 'c1+nc10', 4.286, 0.04286, 310.93, 192.3, 'liquid+gas', 'Stegemerier 1959', 0), +(488, NULL, 'c1+nc10', 3.798, 0.03798, 310.93, 202.5, 'liquid+gas', 'Stegemerier 1959', 0), +(489, NULL, 'c1+nc10', 3.805, 0.03805, 310.93, 202.5, 'liquid+gas', 'Stegemerier 1959', 0), +(490, NULL, 'c1+nc10', 3.292, 0.03292, 310.93, 213.19, 'liquid+gas', 'Stegemerier 1959', 0), +(491, NULL, 'c1+nc10', 2.989, 0.02989, 310.93, 223.6, 'liquid+gas', 'Stegemerier 1959', 0), +(492, NULL, 'c1+nc10', 3.011, 0.03011, 310.93, 223.6, 'liquid+gas', 'Stegemerier 1959', 0), +(493, NULL, 'c1+nc10', 2.615, 0.02615, 310.93, 233.25, 'liquid+gas', 'Stegemerier 1959', 0), +(494, NULL, 'c1+nc10', 2.388, 0.02388, 310.93, 241.94, 'liquid+gas', 'Stegemerier 1959', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(495, NULL, 'c1+nc10', 2.388, 0.02388, 310.93, 241.94, 'liquid+gas', 'Stegemerier 1959', 0), +(496, NULL, 'c1+nc10', 2.127, 0.02127, 310.93, 247.66, 'liquid+gas', 'Stegemerier 1959', 0), +(497, NULL, 'c1+nc10', 2.184, 0.02184, 310.93, 247.66, 'liquid+gas', 'Stegemerier 1959', 0), +(498, NULL, 'c1+nc10', 1.948, 0.01948, 310.93, 253.45, 'liquid+gas', 'Stegemerier 1959', 0), +(499, NULL, 'c1+nc10', 1.994, 0.01994, 310.93, 253.45, 'liquid+gas', 'Stegemerier 1959', 0), +(500, NULL, 'c1+nc10', 1.866, 0.01866, 310.93, 259.38, 'liquid+gas', 'Stegemerier 1959', 0), +(501, NULL, 'c1+nc10', 1.869, 0.01869, 310.93, 259.38, 'liquid+gas', 'Stegemerier 1959', 0), +(502, NULL, 'c1+nc10', 1.713, 0.01713, 310.93, 264.62, 'liquid+gas', 'Stegemerier 1959', 0), +(503, NULL, 'c1+nc10', 1.705, 0.01705, 310.93, 264.62, 'liquid+gas', 'Stegemerier 1959', 0), +(504, NULL, 'c1+nc10', 1.46, 0.0146, 310.93, 273.24, 'liquid+gas', 'Stegemerier 1959', 0), +(505, NULL, 'c1+nc10', 1.321, 0.01321, 310.93, 280.07, 'liquid+gas', 'Stegemerier 1959', 0), +(506, NULL, 'c1+nc10', 1.345, 0.01345, 310.93, 280.07, 'liquid+gas', 'Stegemerier 1959', 0), +(507, NULL, 'c1+nc10', 1.207, 0.01207, 310.93, 284.55, 'liquid+gas', 'Stegemerier 1959', 0), +(508, NULL, 'c1+nc10', 1.158, 0.01158, 310.93, 284.55, 'liquid+gas', 'Stegemerier 1959', 0), +(509, NULL, 'c1+nc10', 1.107, 0.01107, 310.93, 290.27, 'liquid+gas', 'Stegemerier 1959', 0), +(510, NULL, 'c1+nc10', 1.119, 0.01119, 310.93, 290.27, 'liquid+gas', 'Stegemerier 1959', 0), +(511, NULL, 'c1+nc10', 0.932, 0.00932, 310.93, 297.3, 'liquid+gas', 'Stegemerier 1959', 0), +(512, NULL, 'c1+nc10', 0.873, 0.00873, 310.93, 300.34, 'liquid+gas', 'Stegemerier 1959', 0), +(513, NULL, 'c1+nc10', 0.902, 0.00902, 310.93, 300.34, 'liquid+gas', 'Stegemerier 1959', 0), +(514, NULL, 'c1+nc10', 0.879, 0.00879, 310.93, 303.72, 'liquid+gas', 'Stegemerier 1959', 0), +(515, NULL, 'c1+nc10', 0.886, 0.00886, 310.93, 303.72, 'liquid+gas', 'Stegemerier 1959', 0), +(516, NULL, 'c1+nc10', 0.755, 0.00755, 310.93, 307.85, 'liquid+gas', 'Stegemerier 1959', 0), +(517, NULL, 'c1+nc10', 0.748, 0.00748, 310.93, 307.85, 'liquid+gas', 'Stegemerier 1959', 0), +(518, NULL, 'c1+nc10', 0.704, 0.00704, 310.93, 311.16, 'liquid+gas', 'Stegemerier 1959', 0), +(519, NULL, 'c1+nc10', 0.628, 0.00628, 310.93, 314.26, 'liquid+gas', 'Stegemerier 1959', 0), +(520, NULL, 'c1+nc10', 0.638, 0.00638, 310.93, 314.26, 'liquid+gas', 'Stegemerier 1959', 0), +(521, NULL, 'c1+nc10', 0.568, 0.00568, 310.93, 317.71, 'liquid+gas', 'Stegemerier 1959', 0), +(522, NULL, 'c1+nc10', 0.569, 0.00569, 310.93, 317.71, 'liquid+gas', 'Stegemerier 1959', 0), +(523, NULL, 'c1+nc10', 0.498, 0.00498, 310.93, 321.09, 'liquid+gas', 'Stegemerier 1959', 0), +(524, NULL, 'c1+nc10', 0.403, 0.00403, 310.93, 327.43, 'liquid+gas', 'Stegemerier 1959', 0), +(525, NULL, 'c1+nc10', 0.395, 0.00395, 310.93, 327.43, 'liquid+gas', 'Stegemerier 1959', 0), +(526, NULL, 'c1+nc10', 0.322, 0.00322, 310.93, 333.02, 'liquid+gas', 'Stegemerier 1959', 0), +(527, NULL, 'c1+nc10', 0.223, 0.00223, 310.93, 340.26, 'liquid+gas', 'Stegemerier 1959', 0), +(528, NULL, 'c1+nc10', 0.155, 0.00155, 310.93, 344.6, 'liquid+gas', 'Stegemerier 1959', 0), +(529, NULL, 'c1+nc10', 0.11, 0.0011, 310.93, 349.5, 'liquid+gas', 'Stegemerier 1959', 0), +(530, NULL, 'c1+nc10', 0.075, 7.5E-4, 310.93, 352.94, 'liquid+gas', 'Stegemerier 1959', 0), +(531, NULL, 'c1+nc10', 0.075, 7.5E-4, 310.93, 352.94, 'liquid+gas', 'Stegemerier 1959', 0), +(532, NULL, 'c1+nc10', 9.83, 0.0983, 327.59, 99.56, 'liquid+gas', 'Stegemerier 1959', 0), +(533, NULL, 'c1+nc10', 8.526, 0.08526, 327.59, 123.28, 'liquid+gas', 'Stegemerier 1959', 0), +(534, NULL, 'c1+nc10', 8.474, 0.08474, 327.59, 123.28, 'liquid+gas', 'Stegemerier 1959', 0), +(535, NULL, 'c1+nc10', 7.149, 0.07149, 327.59, 145.27, 'liquid+gas', 'Stegemerier 1959', 0), +(536, NULL, 'c1+nc10', 7.094, 0.07094, 327.59, 145.27, 'liquid+gas', 'Stegemerier 1959', 0), +(537, NULL, 'c1+nc10', 5.986, 0.05986, 327.59, 167.75, 'liquid+gas', 'Stegemerier 1959', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(538, NULL, 'c1+nc10', 5.836, 0.05836, 327.59, 167.75, 'liquid+gas', 'Stegemerier 1959', 0), +(539, NULL, 'c1+nc10', 4.806, 0.04806, 327.59, 186.02, 'liquid+gas', 'Stegemerier 1959', 0), +(540, NULL, 'c1+nc10', 3.936, 0.03936, 327.59, 186.02, 'liquid+gas', 'Stegemerier 1959', 0), +(541, NULL, 'c1+nc10', 4.242, 0.04242, 327.59, 200.57, 'liquid+gas', 'Stegemerier 1959', 0), +(542, NULL, 'c1+nc10', 4.15, 0.0415, 327.59, 200.57, 'liquid+gas', 'Stegemerier 1959', 0), +(543, NULL, 'c1+nc10', 3.426, 0.03426, 327.59, 217.67, 'liquid+gas', 'Stegemerier 1959', 0), +(544, NULL, 'c1+nc10', 3.377, 0.03377, 327.59, 217.67, 'liquid+gas', 'Stegemerier 1959', 0), +(545, NULL, 'c1+nc10', 2.92, 0.0292, 327.59, 231.46, 'liquid+gas', 'Stegemerier 1959', 0), +(546, NULL, 'c1+nc10', 2.853, 0.02853, 327.59, 231.46, 'liquid+gas', 'Stegemerier 1959', 0), +(547, NULL, 'c1+nc10', 2.229, 0.02229, 327.59, 247.25, 'liquid+gas', 'Stegemerier 1959', 0), +(548, NULL, 'c1+nc10', 2.197, 0.02197, 327.59, 247.25, 'liquid+gas', 'Stegemerier 1959', 0), +(549, NULL, 'c1+nc10', 1.904, 0.01904, 327.59, 260.07, 'liquid+gas', 'Stegemerier 1959', 0), +(550, NULL, 'c1+nc10', 1.888, 0.01888, 327.59, 260.07, 'liquid+gas', 'Stegemerier 1959', 0), +(551, NULL, 'c1+nc10', 1.634, 0.01634, 327.59, 273.93, 'liquid+gas', 'Stegemerier 1959', 0), +(552, NULL, 'c1+nc10', 1.493, 0.01493, 327.59, 273.93, 'liquid+gas', 'Stegemerier 1959', 0), +(553, NULL, 'c1+nc10', 1.193, 0.01193, 327.59, 285.17, 'liquid+gas', 'Stegemerier 1959', 0), +(554, NULL, 'c1+nc10', 0.974, 0.00974, 327.59, 295.03, 'liquid+gas', 'Stegemerier 1959', 0), +(555, NULL, 'c1+nc10', 0.75, 0.0075, 327.59, 304.41, 'liquid+gas', 'Stegemerier 1959', 0), +(556, NULL, 'c1+nc10', 0.735, 0.00735, 327.59, 304.41, 'liquid+gas', 'Stegemerier 1959', 0), +(557, NULL, 'c1+nc10', 0.541, 0.00541, 327.59, 316.95, 'liquid+gas', 'Stegemerier 1959', 0), +(558, NULL, 'c1+nc10', 0.536, 0.00536, 327.59, 316.95, 'liquid+gas', 'Stegemerier 1959', 0), +(559, NULL, 'c1+nc10', 0.486, 0.00486, 327.59, 320.82, 'liquid+gas', 'Stegemerier 1959', 0), +(560, NULL, 'c1+nc10', 0.481, 0.00481, 327.59, 320.82, 'liquid+gas', 'Stegemerier 1959', 0), +(561, NULL, 'c1+nc10', 0.388, 0.00388, 327.59, 325.78, 'liquid+gas', 'Stegemerier 1959', 0), +(562, NULL, 'c1+nc10', 0.387, 0.00387, 327.59, 325.78, 'liquid+gas', 'Stegemerier 1959', 0), +(563, NULL, 'c1+nc10', 0.275, 0.00275, 327.59, 331.43, 'liquid+gas', 'Stegemerier 1959', 0), +(564, NULL, 'c1+nc10', 0.307, 0.00307, 327.59, 331.85, 'liquid+gas', 'Stegemerier 1959', 0), +(565, NULL, 'c1+nc10', 0.302, 0.00302, 327.59, 331.85, 'liquid+gas', 'Stegemerier 1959', 0), +(566, NULL, 'c1+nc10', 0.236, 0.00236, 327.59, 335.71, 'liquid+gas', 'Stegemerier 1959', 0), +(567, NULL, 'c1+nc10', 0.203, 0.00203, 327.59, 338.81, 'liquid+gas', 'Stegemerier 1959', 0), +(568, NULL, 'c1+nc10', 0.2, 0.002, 327.59, 338.81, 'liquid+gas', 'Stegemerier 1959', 0), +(569, NULL, 'c1+nc10', 0.139, 0.00139, 327.59, 342.6, 'liquid+gas', 'Stegemerier 1959', 0), +(570, NULL, 'c1+nc10', 0.137, 0.00137, 327.59, 342.6, 'liquid+gas', 'Stegemerier 1959', 0), +(571, NULL, 'c1+nc10', 0.113, 0.00113, 327.59, 346.12, 'liquid+gas', 'Stegemerier 1959', 0), +(572, NULL, 'c1+nc10', 0.094, 9.4E-4, 327.59, 347.36, 'liquid+gas', 'Stegemerier 1959', 0), +(573, NULL, 'c1+nc10', 9.839, 0.09839, 344.26, 104.59, 'liquid+gas', 'Stegemerier 1959', 0), +(574, NULL, 'c1+nc10', 9.647, 0.09647, 344.26, 104.59, 'liquid+gas', 'Stegemerier 1959', 0), +(575, NULL, 'c1+nc10', 7.235, 0.07235, 344.26, 139.83, 'liquid+gas', 'Stegemerier 1959', 0), +(576, NULL, 'c1+nc10', 7.155, 0.07155, 344.26, 139.83, 'liquid+gas', 'Stegemerier 1959', 0), +(577, NULL, 'c1+nc10', 5.517, 0.05517, 344.26, 172.92, 'liquid+gas', 'Stegemerier 1959', 0), +(578, NULL, 'c1+nc10', 5.471, 0.05471, 344.26, 172.92, 'liquid+gas', 'Stegemerier 1959', 0), +(579, NULL, 'c1+nc10', 4.453, 0.04453, 344.26, 192.85, 'liquid+gas', 'Stegemerier 1959', 0), +(580, NULL, 'c1+nc10', 4.432, 0.04432, 344.26, 192.85, 'liquid+gas', 'Stegemerier 1959', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(581, NULL, 'c1+nc10', 3.533, 0.03533, 344.26, 213.95, 'liquid+gas', 'Stegemerier 1959', 0), +(582, NULL, 'c1+nc10', 3.482, 0.03482, 344.26, 213.95, 'liquid+gas', 'Stegemerier 1959', 0), +(583, NULL, 'c1+nc10', 2.743, 0.02743, 344.26, 232.01, 'liquid+gas', 'Stegemerier 1959', 0), +(584, NULL, 'c1+nc10', 2.726, 0.02726, 344.26, 232.01, 'liquid+gas', 'Stegemerier 1959', 0), +(585, NULL, 'c1+nc10', 2.133, 0.02133, 344.26, 250.83, 'liquid+gas', 'Stegemerier 1959', 0), +(586, NULL, 'c1+nc10', 1.356, 0.01356, 344.26, 250.83, 'liquid+gas', 'Stegemerier 1959', 0), +(587, NULL, 'c1+nc10', 0.952, 0.00952, 344.26, 276.41, 'liquid+gas', 'Stegemerier 1959', 0), +(588, NULL, 'c1+nc10', 0.95, 0.0095, 344.26, 293.86, 'liquid+gas', 'Stegemerier 1959', 0), +(589, NULL, 'c1+nc10', 0.765, 0.00765, 344.26, 293.86, 'liquid+gas', 'Stegemerier 1959', 0), +(590, NULL, 'c1+nc10', 0.764, 0.00764, 344.26, 301.51, 'liquid+gas', 'Stegemerier 1959', 0), +(591, NULL, 'c1+nc10', 0.646, 0.00646, 344.26, 301.51, 'liquid+gas', 'Stegemerier 1959', 0), +(592, NULL, 'c1+nc10', 0.646, 0.00646, 344.26, 307.71, 'liquid+gas', 'Stegemerier 1959', 0), +(593, NULL, 'c1+nc10', 0.539, 0.00539, 344.26, 307.71, 'liquid+gas', 'Stegemerier 1959', 0), +(594, NULL, 'c1+nc10', 0.538, 0.00538, 344.26, 313.92, 'liquid+gas', 'Stegemerier 1959', 0), +(595, NULL, 'c1+nc10', 0.423, 0.00423, 344.26, 320.33, 'liquid+gas', 'Stegemerier 1959', 0), +(596, NULL, 'c1+nc10', 0.414, 0.00414, 344.26, 320.33, 'liquid+gas', 'Stegemerier 1959', 0), +(597, NULL, 'c1+nc10', 0.334, 0.00334, 344.26, 325.5, 'liquid+gas', 'Stegemerier 1959', 0), +(598, NULL, 'c1+nc10', 0.253, 0.00253, 344.26, 330.61, 'liquid+gas', 'Stegemerier 1959', 0), +(599, NULL, 'c1+nc10', 0.203, 0.00203, 344.26, 334.6, 'liquid+gas', 'Stegemerier 1959', 0), +(600, NULL, 'c1+nc10', 0.185, 0.00185, 344.26, 334.6, 'liquid+gas', 'Stegemerier 1959', 0), +(601, NULL, 'c1+nc10', 0.158, 0.00158, 344.26, 337.16, 'liquid+gas', 'Stegemerier 1959', 0), +(602, NULL, 'c1+nc10', 0.112, 0.00112, 344.26, 341.78, 'liquid+gas', 'Stegemerier 1959', 0), +(603, NULL, 'c1+nc10', 0.105, 0.00105, 344.26, 341.5, 'liquid+gas', 'Stegemerier 1959', 0), +(604, NULL, 'c1+nc10', 0.103, 0.00103, 344.26, 341.5, 'liquid+gas', 'Stegemerier 1959', 0), +(605, NULL, 'c1+nc10', 0.097, 9.7E-4, 344.26, 341.98, 'liquid+gas', 'Stegemerier 1959', 0), +(606, NULL, 'c1+nc10', 0.096, 9.6E-4, 344.26, 341.98, 'liquid+gas', 'Stegemerier 1959', 0), +(607, NULL, 'c1+nc10', 0.43, 0.0043, 360.93, 315.64, 'liquid+gas', 'Stegemerier 1959', 0), +(608, NULL, 'c1+nc10', 0.748, 0.00748, 360.93, 315.64, 'liquid+gas', 'Stegemerier 1959', 0), +(609, NULL, 'c1+nc10', 0.332, 0.00332, 360.93, 320.95, 'liquid+gas', 'Stegemerier 1959', 0), +(610, NULL, 'c1+nc10', 0.332, 0.00332, 360.93, 320.95, 'liquid+gas', 'Stegemerier 1959', 0), +(611, NULL, 'c1+nc10', 0.256, 0.00256, 360.93, 325.57, 'liquid+gas', 'Stegemerier 1959', 0), +(612, NULL, 'c1+nc10', 0.256, 0.00256, 360.93, 325.57, 'liquid+gas', 'Stegemerier 1959', 0), +(613, NULL, 'c1+nc10', 0.205, 0.00205, 360.93, 329.43, 'liquid+gas', 'Stegemerier 1959', 0), +(614, NULL, 'c1+nc10', 0.138, 0.00138, 360.93, 333.98, 'liquid+gas', 'Stegemerier 1959', 0), +(615, NULL, 'c1+nc10', 0.138, 0.00138, 360.93, 333.85, 'liquid+gas', 'Stegemerier 1959', 0), +(616, NULL, 'c1+nc10', 0.082, 8.2E-4, 360.93, 338.05, 'liquid+gas', 'Stegemerier 1959', 0), +(617, 'methane', 'n-pentane', 11.88, 0.1188, 294.15, 18.95, 'liquid+gas', 'Our ift result 2010 ', 1), +(618, 'methane', 'n-pentane', 10.82, 0.1082, 294.15, 25.78, 'liquid+gas', 'Our ift result 2010 ', 1), +(619, 'methane', 'n-pentane', 9.94, 0.0994, 294.15, 33.66, 'liquid+gas', 'Our ift result 2010 ', 1), +(620, 'methane', 'n-pentane', 9.3, 0.093, 294.15, 37.15, 'liquid+gas', 'Our ift result 2010 ', 1), +(621, 'methane', 'n-pentane', 8.42, 0.0842, 294.15, 44.48, 'liquid+gas', 'Our ift result 2010 ', 0), +(622, 'methane', 'n-pentane', 7.65, 0.0765, 294.15, 50.66, 'liquid+gas', 'Our ift result 2010 ', 0); +INSERT INTO PUBLIC.BINARYCOMPONENTSURFACETENSION(ID, COMPONENTNAME1, COMPONENTNAME2, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE, INCLUDE) VALUES +(623, 'methane', 'n-pentane', 6.8, 0.068, 294.15, 56.87, 'liquid+gas', 'Our ift result 2010 ', 0), +(624, 'methane', 'n-pentane', 6.24, 0.0624, 294.15, 58.87, 'liquid+gas', 'Our ift result 2010 ', 0), +(625, 'methane', 'n-pentane', 6.07, 0.0607, 294.15, 64.61, 'liquid+gas', 'Our ift result 2010 ', 0), +(626, 'methane', 'n-pentane', 5.34, 0.0534, 294.15, 69.61, 'liquid+gas', 'Our ift result 2010 ', 0), +(627, 'methane', 'n-pentane', 4.95, 0.0495, 294.15, 74.51, 'liquid+gas', 'Our ift result 2010 ', 0), +(628, 'methane', 'n-pentane', 4.35, 0.0435, 294.15, 82.28, 'liquid+gas', 'Our ift result 2010 ', 0), +(629, 'methane', 'n-pentane', 3.83, 0.0383, 294.15, 88.88, 'liquid+gas', 'Our ift result 2010 ', 0), +(630, 'methane', 'n-pentane', 3.33, 0.0333, 294.15, 96.63, 'liquid+gas', 'Our ift result 2010 ', 0), +(631, 'methane', 'n-pentane', 2.7, 0.027, 294.15, 106.65, 'liquid+gas', 'Our ift result 2010 ', 0), +(632, 'ethane', 'n-pentane', 10.84, 0.1084, 294.15, 5.9, 'liquid+gas', 'Our ift result 2010 ', 1), +(633, 'ethane', 'n-pentane', 10.55, 0.1055, 294.15, 7.11, 'liquid+gas', 'Our ift result 2010 ', 1), +(634, 'ethane', 'n-pentane', 8.79, 0.0879, 294.15, 11.56, 'liquid+gas', 'Our ift result 2010 ', 1), +(635, 'ethane', 'n-pentane', 7.18, 0.0718, 294.15, 16.03, 'liquid+gas', 'Our ift result 2010 ', 0), +(636, 'ethane', 'n-pentane', 5.64, 0.0564, 294.15, 20.38, 'liquid+gas', 'Our ift result 2010 ', 0), +(637, 'ethane', 'n-pentane', 5.08, 0.0508, 294.15, 22.05, 'liquid+gas', 'Our ift result 2010 ', 0), +(638, 'ethane', 'n-pentane', 4.56, 0.0456, 294.15, 24.08, 'liquid+gas', 'Our ift result 2010 ', 0), +(639, 'ethane', 'n-pentane', 3.36, 0.0336, 294.15, 27.74, 'liquid+gas', 'Our ift result 2010 ', 0), +(640, 'ethane', 'n-pentane', 2.74, 0.0274, 294.15, 29.87, 'liquid+gas', 'Our ift result 2010 ', 0); +CREATE CACHED TABLE PUBLIC.BINARYEQUILIBRIUMDATA( + ID INT NOT NULL, + COMPONENT1 VARCHAR(50) DEFAULT NULL, + COMPONENT2 VARCHAR(50) DEFAULT NULL, + PRESSURE DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + Y1 DOUBLE DEFAULT '0', + Y2 DOUBLE DEFAULT '0', + PHASE1DENSITY DOUBLE DEFAULT '0', + PHASE2DENSITY DOUBLE DEFAULT '0', + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.BINARYEQUILIBRIUMDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_3 PRIMARY KEY(ID); +-- 17 +/- SELECT COUNT(*) FROM PUBLIC.BINARYEQUILIBRIUMDATA; +INSERT INTO PUBLIC.BINARYEQUILIBRIUMDATA(ID, COMPONENT1, COMPONENT2, PRESSURE, TEMPERATURE, X1, X2, Y1, Y2, PHASE1DENSITY, PHASE2DENSITY, REFERENCE) VALUES +(1, 'MDEA', 'CO2', 5.0, 298.0, 0.99, 0.01, 0.001, 0.999, 0.0, 0.0, 'unknown'), +(2, 'CO2', 'water', 3.0, 298.0, 0.001, 0.99, 0.001, 0.99, 1013.0, 0.1, 'unknown'), +(3, 'methane', 'ethane', 1.01325, 143.15, 0.1091, 0.89085, 0.954194, 0.0458, 894.0, 1.448, 'unknown'), +(4, 'methane', 'ethane', 1.01325, 147.15, 0.08904, 0.90195, 0.9322, 0.067745, 888.9, 1.43376, 'unknown'), +(5, 'methane', 'ethane', 1.01325, 150.15, 0.0766318, 0.923368, 0.910726, 0.0892741, 884.0, 1.429, 'unknown'), +(6, 'methane', 'MEG', 25.0, 293.15, NULL, NULL, 0.999996458, 3.54247E-6, NULL, NULL, 'Folas2007'), +(7, 'methane', 'MEG', 50.0, 273.15, NULL, NULL, 0.999999628, 3.71813E-7, NULL, NULL, 'Folas2007'), +(8, 'methane', 'MEG', 50.0, 283.15, NULL, NULL, 0.999998899, 1.10123E-6, NULL, NULL, 'Folas2007'), +(9, 'methane', 'MEG', 50.0, 293.15, NULL, NULL, 0.999997177, 2.82342711816894E-6, NULL, NULL, 'Folas2007'), +(10, 'methane', 'MEG', 100.0, 273.15, NULL, NULL, 0.99999938, 6.19725E-7, NULL, NULL, 'Folas2007'), +(11, 'methane', 'MEG', 100.0, 283.15, NULL, NULL, 0.999998607, 1.39308E-6, NULL, NULL, 'Folas2007'), +(12, 'methane', 'MEG', 100.0, 293.15, NULL, NULL, 0.999996834, 3.16623E-6, NULL, NULL, 'Folas2007'), +(13, 'methane', 'MEG', 100.0, 298.15, NULL, NULL, 0.999995323, 4.6767E-6, NULL, NULL, 'Folas2007'), +(14, 'methane', 'MEG', 150.0, 273.15, NULL, NULL, 0.999998935, 1.06505E-6, NULL, NULL, 'Folas2007'), +(15, 'methane', 'MEG', 150.0, 283.15, NULL, NULL, 0.999997978, 2.02179E-6, NULL, NULL, 'Folas2007'), +(16, 'methane', 'MEG', 150.0, 293.15, NULL, NULL, 0.999995718, 4.28231E-6, NULL, NULL, 'Folas2007'), +(17, 'methane', 'MEG', 150.0, 298.15, NULL, NULL, 0.999993714, 6.28554E-6, NULL, NULL, 'Folas2007'); +CREATE CACHED TABLE PUBLIC.BINARYFREEZINGPOINTDATA( + ID INT NOT NULL, + COMPONENTSOLVENT1 VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT2 VARCHAR(50) DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + FREEZINGTEMPERATURE DOUBLE DEFAULT '0', + FREEZINGTEMPDEPRESSION DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT '0', + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.BINARYFREEZINGPOINTDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_F PRIMARY KEY(ID); +-- 24 +/- SELECT COUNT(*) FROM PUBLIC.BINARYFREEZINGPOINTDATA; +INSERT INTO PUBLIC.BINARYFREEZINGPOINTDATA(ID, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, FREEZINGTEMPERATURE, FREEZINGTEMPDEPRESSION, STANDARDDEVIATION, PRESSURE, REFERENCE) VALUES +(150, 'MEG', 'water', 100.0, 1.0, 260.45, 0.0, 0.1, 1.0, 'Statoil'), +(151, 'MEG', 'water', 84.7, 15.3, 252.15, 0.0, 0.1, 1.0, 'Statoil'), +(152, 'MEG', 'water', 72.3, 27.7, 244.45, 0.0, 0.1, 1.0, 'Statoil'), +(153, 'MEG', 'water', 62.2, 37.8, 236.45, 0.0, 0.1, 1.0, 'Statoil'), +(154, 'MEG', 'water', 60.4, 39.6, 234.95, 0.0, 0.1, 1.0, 'Statoil'), +(155, 'MDEA', 'water', 1.768, 55.49389567, 269.86, 3.29, 0.15, 1.0, 'Chang1993'), +(156, 'MDEA', 'water', 1.85, 55.49389567, 269.71, 3.44, 0.15, 1.0, 'Chang1993'), +(157, 'MDEA', 'water', 2.18, 55.49389567, 269.09, 4.06, 0.15, 1.0, 'Chang1993'), +(158, 'MDEA', 'water', 2.154, 55.49389567, 269.14, 4.01, 0.15, 1.0, 'Chang1993'), +(159, 'MDEA', 'water', 2.581, 55.49389567, 268.35, 4.8, 0.15, 1.0, 'Chang1993'), +(160, 'MDEA', 'water', 3.089, 55.49389567, 267.4, 5.75, 0.15, 1.0, 'Chang1993'), +(161, 'MDEA', 'water', 3.565, 55.49389567, 266.52, 6.63, 0.15, 1.0, 'Chang1993'), +(162, 'MDEA', 'water', 3.182, 55.49389567, 267.23, 5.92, 0.15, 1.0, 'Chang1993'), +(163, 'MDEA', 'water', 3.015, 55.49389567, 267.54, 5.61, 0.15, 1.0, 'Chang1993'), +(164, 'MDEA', 'water', 2.2026, 55.49389567, 269.38, 3.77, 0.15, 1.0, 'Chang1993'), +(165, 'MDEA', 'water', 2.236, 55.49389567, 268.99, 4.16, 0.15, 1.0, 'Chang1993'), +(166, 'MDEA', 'water', 4.227, 55.49389567, 265.29, 7.86, 0.15, 1.0, 'Chang1993'), +(167, 'MDEA', 'water', 5.485, 55.49389567, 262.95, 10.2, 0.15, 1.0, 'Chang1993'), +(168, 'MDEA', 'water', 4.387, 55.49389567, 264.99, 8.16, 0.15, 1.0, 'Chang1993'), +(169, 'MDEA', 'water', 5.003, 55.49389567, 263.84, 9.31, 0.15, 1.0, 'Chang1993'), +(170, 'TEG', 'water', 100.0, 1.0, 268.0, 0.0, 0.1, 1.0, 'Statoil'), +(171, 'TEG', 'water', 84.7, 15.3, 266.0, 0.0, 0.1, 1.0, 'Statoil'), +(172, 'TEG', 'water', 72.3, 27.7, 264.0, 0.0, 0.1, 1.0, 'Statoil'), +(173, 'TEG', 'water', 70.0, 30.0, 263.0, 0.0, 0.1, 1.0, 'Statoil'); +CREATE CACHED TABLE PUBLIC.BINARYGASDIFFUSIONCOEFFICIENTDATA( + ID INT NOT NULL, + COMPONENTSOLUTE VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT VARCHAR(50) DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + DIFFUSIONCOEFFICIENT DOUBLE DEFAULT '0', + REFERENCE VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.BINARYGASDIFFUSIONCOEFFICIENTDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_C PRIMARY KEY(ID); +-- 1 +/- SELECT COUNT(*) FROM PUBLIC.BINARYGASDIFFUSIONCOEFFICIENTDATA; +INSERT INTO PUBLIC.BINARYGASDIFFUSIONCOEFFICIENTDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, TEMPERATURE, PRESSURE, DIFFUSIONCOEFFICIENT, REFERENCE) VALUES +(1, 'CO2', 'water', 298.0, 1.01325, 1.0E-9, 'unknown'); +CREATE CACHED TABLE PUBLIC.BINARYLIQUIDDIFFUSIONCOEFFICIENTDATA( + ID INT NOT NULL, + COMPONENTSOLUTE VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT VARCHAR(50) DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + DIFFUSIONCOEFFICIENT DOUBLE DEFAULT '0', + REFERENCE VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.BINARYLIQUIDDIFFUSIONCOEFFICIENTDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_6 PRIMARY KEY(ID); +-- 49 +/- SELECT COUNT(*) FROM PUBLIC.BINARYLIQUIDDIFFUSIONCOEFFICIENTDATA; +INSERT INTO PUBLIC.BINARYLIQUIDDIFFUSIONCOEFFICIENTDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, X2, TEMPERATURE, PRESSURE, DIFFUSIONCOEFFICIENT, REFERENCE) VALUES +(1, 'CO2', 'water', 0.0, 0.0, 273.0, 1.01325, 0.96, 'Versteeg1988'), +(3, 'CO2', 'water', 0.0, 0.0, 283.0, 0.0, 1.46, 'Versteeg1988'), +(4, 'CO2', 'water', 0.0, 0.0, 288.0, 0.0, 1.6, 'Versteeg1988'), +(5, 'CO2', 'water', 0.0, 0.0, 288.0, 0.0, 1.39, 'Versteeg1988'), +(6, 'CO2', 'water', 0.0, 0.0, 289.0, 0.0, 1.57, 'Versteeg1988'), +(7, 'CO2', 'water', 0.0, 0.0, 291.0, 0.0, 1.71, 'Versteeg1988'), +(8, 'CO2', 'water', 0.0, 0.0, 291.5, 0.0, 1.65, 'Versteeg1988'), +(9, 'CO2', 'water', 0.0, 0.0, 292.5, 0.0, 1.68, 'Versteeg1988'), +(10, 'CO2', 'water', 0.0, 0.0, 293.0, 0.0, 1.64, 'Versteeg1988'), +(11, 'CO2', 'water', 0.0, 0.0, 293.0, 0.0, 1.6, 'Versteeg1988'), +(12, 'CO2', 'water', 0.0, 0.0, 293.0, 0.0, 1.76, 'Versteeg1988'), +(13, 'CO2', 'water', 0.0, 0.0, 293.0, 0.0, 1.98, 'Versteeg1988'), +(14, 'CO2', 'water', 0.0, 0.0, 298.0, 0.0, 1.87, 'Versteeg1988'), +(15, 'CO2', 'water', 0.0, 0.0, 298.0, 0.0, 1.98, 'Versteeg1988'), +(16, 'CO2', 'water', 0.0, 0.0, 298.0, 0.0, 2.05, 'Versteeg1988'), +(17, 'CO2', 'water', 0.0, 0.0, 298.0, 0.0, 1.85, 'Versteeg1988'), +(18, 'CO2', 'water', 0.0, 0.0, 298.0, 0.0, 2.0, 'Versteeg1988'), +(19, 'CO2', 'water', 0.0, 0.0, 298.0, 0.0, 1.87, 'Versteeg1988'), +(20, 'CO2', 'water', 0.0, 0.0, 298.0, 0.0, 1.9, 'Versteeg1988'), +(21, 'CO2', 'water', 0.0, 0.0, 298.0, 0.0, 1.74, 'Versteeg1988'), +(22, 'CO2', 'water', 0.0, 0.0, 298.0, 0.0, 1.94, 'Versteeg1988'), +(23, 'CO2', 'water', 0.0, 0.0, 303.0, 0.0, 2.29, 'Versteeg1988'), +(24, 'CO2', 'water', 0.0, 0.0, 303.0, 0.0, 2.15, 'Versteeg1988'), +(25, 'CO2', 'water', 0.0, 0.0, 307.7, 0.0, 2.51, 'Versteeg1988'), +(26, 'CO2', 'water', 0.0, 0.0, 308.0, 0.0, 2.18, 'Versteeg1988'), +(27, 'CO2', 'water', 0.0, 0.0, 313.0, 0.0, 2.8, 'Versteeg1988'), +(28, 'CO2', 'water', 0.0, 0.0, 318.0, 0.0, 3.03, 'Versteeg1988'), +(29, 'CO2', 'water', 0.0, 0.0, 325.0, 0.0, 3.61, 'Versteeg1988'), +(30, 'CO2', 'water', 0.0, 0.0, 327.9, 0.0, 3.68, 'Versteeg1988'), +(31, 'CO2', 'water', 0.0, 0.0, 338.0, 0.0, 4.4, 'Versteeg1988'), +(32, 'CO2', 'water', 0.0, 0.0, 338.0, 0.0, 4.3, 'Versteeg1988'), +(33, 'N2O', 'water', 0.0, 0.0, 288.0, 0.0, 1.39, 'Versteeg1988'), +(35, 'N2O', 'water', 0.0, 0.0, 289.7, 0.0, 1.7, 'Versteeg1988'), +(36, 'N2O', 'water', 0.0, 0.0, 291.1, 0.0, 1.47, 'Versteeg1988'), +(37, 'N2O', 'water', 0.0, 0.0, 292.0, 0.0, 1.56, 'Versteeg1988'), +(38, 'N2O', 'water', 0.0, 0.0, 292.9, 0.0, 1.48, 'Versteeg1988'), +(39, 'N2O', 'water', 0.0, 0.0, 293.0, 0.0, 1.52, 'Versteeg1988'), +(40, 'N2O', 'water', 0.0, 0.0, 293.0, 0.0, 1.92, 'Versteeg1988'), +(41, 'N2O', 'water', 0.0, 0.0, 293.0, 0.0, 1.74, 'Versteeg1988'), +(42, 'N2O', 'water', 0.0, 0.0, 293.0, 0.0, 1.45, 'Versteeg1988'), +(43, 'N2O', 'water', 0.0, 0.0, 293.0, 0.0, 1.65, 'Versteeg1988'), +(44, 'N2O', 'water', 0.0, 0.0, 297.9, 0.0, 2.09, 'Versteeg1988'), +(45, 'N2O', 'water', 0.0, 0.0, 298.0, 0.0, 1.86, 'Versteeg1988'), +(46, 'N2O', 'water', 0.0, 0.0, 302.9, 0.0, 2.27, 'Versteeg1988'), +(47, 'N2O', 'water', 0.0, 0.0, 313.0, 0.0, 2.58, 'Versteeg1988'), +(48, 'N2O', 'water', 0.0, 0.0, 322.7, 0.0, 2.85, 'Versteeg1988'), +(49, 'N2O', 'water', 0.0, 0.0, 340.0, 0.0, 5.33, 'Versteeg1988'), +(50, 'N2O', 'water', 0.0, 0.0, 353.0, 0.0, 6.32, 'Versteeg1988'), +(51, 'N2O', 'water', 0.0, 0.0, 322.7, 0.0, 2.85, 'Versteeg1988'); +CREATE CACHED TABLE PUBLIC.BINARYSOLUBILITYDATA( + ID INT NOT NULL, + COMPONENTSOLUTE VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT VARCHAR(50) DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + STANDARDDEVIATION VARCHAR(50) DEFAULT NULL, + X2 DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + VAPOURPRESSURE2 DOUBLE DEFAULT '0', + TYPE VARCHAR(50) DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.BINARYSOLUBILITYDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_8 PRIMARY KEY(ID); +-- 518 +/- SELECT COUNT(*) FROM PUBLIC.BINARYSOLUBILITYDATA; +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(1, 'CO2', 'water', 9.85E-4, '0.0000197', 0.0, 1.01325, 0.0, 'VLE', 283.15, 'Houghton1957'), +(2, 'CO2', 'water', 0.001946, '0.000023892', 0.0, 2.0265, 0.0, 'VLE', 283.15, 'Houghton1957'), +(3, 'CO2', 'water', 0.0038, '0.000076', 0.0, 4.053, 0.0, 'VLE', 283.15, 'Houghton1957'), +(4, 'CO2', 'water', 0.00556, '0.0001112', 0.0, 6.0795, 0.0, 'VLE', 283.15, 'Houghton1957'), +(5, 'CO2', 'water', 0.00723, '0.0001446', 0.0, 8.106, 0.0, 'VLE', 283.15, 'Houghton1957'), +(6, 'CO2', 'water', 0.00881, '0.000206', 0.0, 10.1325, 0.0, 'VLE', 283.15, 'Houghton1957'), +(7, 'CO2', 'water', 0.0103, '0.000234', 0.0, 12.159, 0.0, 'VLE', 283.15, 'Houghton1957'), +(8, 'CO2', 'water', 0.0117, '0.0002604', 0.0, 14.1855, 0.0, 'VLE', 283.15, 'Houghton1957'), +(9, 'CO2', 'water', 0.01424, '0.0002848', 0.0, 18.2385, 0.0, 'VLE', 283.15, 'Houghton1957'), +(10, 'CO2', 'water', 0.01538, '0.0003076', 0.0, 20.265, 0.0, 'VLE', 283.15, 'Houghton1957'), +(11, 'CO2', 'water', 0.01644, '0.0003288', 0.0, 22.2915, 0.0, 'VLE', 283.15, 'Houghton1957'), +(12, 'CO2', 'water', 0.00688364, '0.000137673', 0.0, 10.12, 0.0, 'VLE', 293.15, 'Addicks2001'), +(13, 'CO2', 'water', 0.00944248, '0.00018885', 0.0, 15.07, 0.0, 'VLE', 293.15, 'Addicks2001'), +(14, 'CO2', 'water', 0.01236172, '0.000247234', 0.0, 20.2, 0.0, 'VLE', 293.15, 'Addicks2001'), +(15, 'CO2', 'water', 0.0149025, '0.00029805', 0.0, 25.33, 0.0, 'VLE', 293.15, 'Addicks2001'), +(16, 'CO2', 'water', 0.001445, '0.0000289', 0.0, 1.01325, 0.0, 'VLE', 273.15, 'Houghton1957'), +(17, 'CO2', 'water', 0.00289, '0.0000578', 0.0, 2.02065, 0.0, 'VLE', 273.15, 'Houghton1957'), +(18, 'CO2', 'water', 0.0056, '0.000112', 0.0, 4.053, 0.0, 'VLE', 273.15, 'Houghton1957'), +(19, 'CO2', 'water', 0.00814, '0.0001628', 0.0, 6.0795, 0.0, 'VLE', 273.15, 'Houghton1957'), +(20, 'CO2', 'water', 0.01271, '0.0002542', 0.0, 10.1325, 0.0, 'VLE', 273.15, 'Houghton1957'), +(21, 'CO2', 'water', 0.01474, '0.0002948', 0.0, 12.159, 0.0, 'VLE', 273.15, 'Houghton1957'), +(22, 'CO2', 'water', 0.0166, '0.000332', 0.0, 14.1855, 0.0, 'VLE', 273.15, 'Houghton1957'), +(23, 'CO2', 'water', 0.01831, '0.0003662', 0.0, 18.23, 0.0, 'VLE', 273.15, 'Houghton1957'), +(24, 'CO2', 'water', 0.02123, '0.0004246', 0.0, 20.265, 0.0, 'VLE', 273.15, 'Houghton1957'), +(25, 'CO2', 'water', 8.02E-4, '0.00001604', 0.0, 1.01325, 0.0, 'VLE', 288.15, 'Houghton1957'), +(26, 'CO2', 'water', 0.001587, '0.00003174', 0.0, 2.02, 0.0, 'VLE', 288.15, 'Houghton1957'), +(27, 'CO2', 'water', 0.00311, '0.0000622', 0.0, 4.053, 0.0, 'VLE', 288.15, 'Houghton1957'), +(28, 'CO2', 'water', 0.00458, '0.0000916', 0.0, 6.0795, 0.0, 'VLE', 288.15, 'Houghton1957'), +(29, 'CO2', 'water', 0.00598, '0.0001196', 0.0, 8.106, 0.0, 'VLE', 288.15, 'Houghton1957'), +(30, 'CO2', 'water', 0.00732, '0.0001464', 0.0, 10.1325, 0.0, 'VLE', 288.15, 'Houghton1957'), +(31, 'CO2', 'water', 0.0086, '0.000172', 0.0, 12.159, 0.0, 'VLE', 288.15, 'Houghton1957'), +(32, 'CO2', 'water', 0.00982, '0.0001964', 0.0, 14.1855, 0.0, 'VLE', 288.15, 'Houghton1957'), +(33, 'CO2', 'water', 0.01099, '0.0002198', 0.0, 16.212, 0.0, 'VLE', 288.15, 'Houghton1957'), +(34, 'CO2', 'water', 0.01209, '0.0002418', 0.0, 18.2385, 0.0, 'VLE', 288.15, 'Houghton1957'), +(35, 'CO2', 'water', 0.01313, '0.0002626', 0.0, 20.265, 0.0, 'VLE', 288.15, 'Houghton1957'), +(36, 'CO2', 'water', 6.92E-4, '0.00001384', 0.0, 1.01325, 0.0, 'VLE', 293.15, 'Houghton1957'), +(37, 'CO2', 'water', 0.001374, '0.00002748', 0.0, 2.02, 0.0, 'VLE', 293.15, 'Houghton1957'), +(38, 'CO2', 'water', 0.0027, '0.000054', 0.0, 4.053, 0.0, 'VLE', 293.15, 'Houghton1957'), +(39, 'CO2', 'water', 0.00399, '0.0000798', 0.0, 6.0795, 0.0, 'VLE', 293.15, 'Houghton1957'), +(40, 'CO2', 'water', 0.00524, '0.0001048', 0.0, 8.106, 0.0, 'VLE', 293.15, 'Houghton1957'), +(41, 'CO2', 'water', 0.00644, '0.0001288', 0.0, 10.1325, 0.0, 'VLE', 293.15, 'Houghton1957'), +(42, 'CO2', 'water', 0.0076, '0.000152', 0.0, 12.159, 0.0, 'VLE', 293.15, 'Houghton1957'), +(43, 'CO2', 'water', 0.00872, '0.0001744', 0.0, 14.1855, 0.0, 'VLE', 293.15, 'Houghton1957'); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(44, 'CO2', 'water', 0.00981, '0.0001962', 0.0, 16.212, 0.0, 'VLE', 293.15, 'Houghton1957'), +(45, 'CO2', 'water', 0.01084, '0.0002168', 0.0, 18.2385, 0.0, 'VLE', 293.15, 'Houghton1957'), +(46, 'CO2', 'water', 0.01184, '0.0002368', 0.0, 20.265, 0.0, 'VLE', 293.15, 'Houghton1957'), +(47, 'CO2', 'water', 6.08E-4, '0.00001216', 0.0, 1.01325, 0.0, 'VLE', 298.15, 'Houghton1957'), +(48, 'CO2', 'water', 0.001207, '0.00002414', 0.0, 2.02, 0.0, 'VLE', 298.15, 'Houghton1957'), +(49, 'CO2', 'water', 0.00239, '0.0000478', 0.0, 4.053, 0.0, 'VLE', 298.15, 'Houghton1957'), +(50, 'CO2', 'water', 0.00353, '0.0000706', 0.0, 6.0795, 0.0, 'VLE', 298.15, 'Houghton1957'), +(51, 'CO2', 'water', 0.00465, '0.000093', 0.0, 8.106, 0.0, 'VLE', 298.15, 'Houghton1957'), +(52, 'CO2', 'water', 0.00574, '0.0001148', 0.0, 10.1325, 0.0, 'VLE', 298.15, 'Houghton1957'), +(53, 'CO2', 'water', 0.0068, '0.000136', 0.0, 12.159, 0.0, 'VLE', 298.15, 'Houghton1957'), +(54, 'CO2', 'water', 0.00783, '0.0001566', 0.0, 14.1855, 0.0, 'VLE', 298.15, 'Houghton1957'), +(55, 'CO2', 'water', 0.00883, '0.0001766', 0.0, 16.212, 0.0, 'VLE', 298.15, 'Houghton1957'), +(56, 'CO2', 'water', 0.0098, '0.000196', 0.0, 18.2385, 0.0, 'VLE', 298.15, 'Houghton1957'), +(57, 'CO2', 'water', 4.73E-4, '0.00000946', 0.0, 1.01325, 0.0, 'VLE', 308.15, 'Houghton1957'), +(58, 'CO2', 'water', 9.43E-4, '0.00001886', 0.0, 2.0265, 0.0, 'VLE', 308.15, 'Houghton1957'), +(59, 'CO2', 'water', 0.001868, '0.00003736', 0.0, 4.053, 0.0, 'VLE', 308.15, 'Houghton1957'), +(60, 'CO2', 'water', 0.00278, '0.0000556', 0.0, 6.0795, 0.0, 'VLE', 308.15, 'Houghton1957'), +(61, 'CO2', 'water', 0.00367, '0.0000734', 0.0, 8.106, 0.0, 'VLE', 308.15, 'Houghton1957'), +(62, 'CO2', 'water', 0.00454, '0.0000908', 0.0, 10.1325, 0.0, 'VLE', 308.15, 'Houghton1957'), +(63, 'CO2', 'water', 0.00539, '0.0001078', 0.0, 12.159, 0.0, 'VLE', 308.15, 'Houghton1957'), +(64, 'CO2', 'water', 3.42E-4, '0.00000684', 0.0, 1.01325, 0.0, 'VLE', 323.15, 'Houghton1957'), +(65, 'CO2', 'water', 6.83E-4, '0.00001366', 0.0, 2.02, 0.0, 'VLE', 323.15, 'Houghton1957'), +(66, 'CO2', 'water', 0.001354, '0.00002708', 0.0, 4.053, 0.0, 'VLE', 323.15, 'Houghton1957'), +(67, 'CO2', 'water', 0.00202, '0.0000404', 0.0, 6.0795, 0.0, 'VLE', 323.15, 'Houghton1957'), +(68, 'CO2', 'water', 0.00266, '0.0000532', 0.0, 8.106, 0.0, 'VLE', 323.15, 'Houghton1957'), +(69, 'CO2', 'water', 0.0033, '0.000066', 0.0, 10.1325, 0.0, 'VLE', 323.15, 'Houghton1957'), +(70, 'CO2', 'water', 0.00393, '0.0000786', 0.0, 12.159, 0.0, 'VLE', 323.15, 'Houghton1957'), +(71, 'CO2', 'water', 0.00455, '0.000091', 0.0, 14.1855, 0.0, 'VLE', 323.15, 'Houghton1957'), +(72, 'CO2', 'water', 0.00515, '0.000103', 0.0, 16.212, 0.0, 'VLE', 323.15, 'Houghton1957'), +(73, 'CO2', 'water', 0.00575, '0.000115', 0.0, 18.2385, 0.0, 'VLE', 323.15, 'Houghton1957'), +(74, 'CO2', 'water', 0.00634, '0.0001268', 0.0, 20.265, 0.0, 'VLE', 323.15, 'Houghton1957'), +(75, 'CO2', 'water', 0.00691, '0.0001382', 0.0, 22.2915, 0.0, 'VLE', 323.15, 'Houghton1957'), +(76, 'CO2', 'water', 2.48E-4, '0.00000496', 0.0, 1.01325, 0.0, 'VLE', 348.15, 'Houghton1957'), +(77, 'CO2', 'water', 4.95E-4, '0.0000099', 0.0, 2.0265, 0.0, 'VLE', 348.15, 'Houghton1957'), +(78, 'CO2', 'water', 9.84E-4, '0.00001968', 0.0, 4.053, 0.0, 'VLE', 348.15, 'Houghton1957'), +(79, 'CO2', 'water', 0.001465, '0.0000293', 0.0, 6.0795, 0.0, 'VLE', 348.15, 'Houghton1957'), +(80, 'CO2', 'water', 0.001941, '0.00003882', 0.0, 8.106, 0.0, 'VLE', 348.15, 'Houghton1957'), +(81, 'CO2', 'water', 0.00241, '0.0000482', 0.0, 10.1325, 0.0, 'VLE', 348.15, 'Houghton1957'), +(82, 'CO2', 'water', 0.00287, '0.0000574', 0.0, 12.159, 0.0, 'VLE', 348.15, 'Houghton1957'), +(83, 'CO2', 'water', 0.00333, '0.0000666', 0.0, 14.1855, 0.0, 'VLE', 348.15, 'Houghton1957'), +(84, 'CO2', 'water', 0.00378, '0.0000756', 0.0, 16.212, 0.0, 'VLE', 348.15, 'Houghton1957'), +(85, 'CO2', 'water', 1.87E-4, '0.00000374', 0.0, 1.01325, 0.0, 'VLE', 373.15, 'Houghton1957'), +(86, 'CO2', 'water', 3.73E-4, '0.00000746', 0.0, 2.02, 0.0, 'VLE', 373.15, 'Houghton1957'); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(87, 'CO2', 'water', 7.43E-4, '0.00001486', 0.0, 4.053, 0.0, 'VLE', 373.15, 'Houghton1957'), +(88, 'CO2', 'water', 0.001111, '0.00002222', 0.0, 6.0795, 0.0, 'VLE', 373.15, 'Houghton1957'), +(89, 'CO2', 'water', 0.001477, '0.00002954', 0.0, 8.106, 0.0, 'VLE', 373.15, 'Houghton1957'), +(90, 'CO2', 'water', 0.001841, '0.00003682', 0.0, 10.1325, 0.0, 'VLE', 373.15, 'Houghton1957'), +(91, 'CO2', 'water', 0.0022, '0.000044', 0.0, 12.159, 0.0, 'VLE', 373.15, 'Houghton1957'), +(92, 'CO2', 'water', 5.00381E-4, '1.00076E-05', 0.0, 1.54, 0.0, 'VLE', 323.15, 'Zawisza1981'), +(93, 'CO2', 'water', 0.001602981, '3.20596E-05', 0.0, 4.88, 0.0, 'VLE', 323.15, 'Zawisza1981'), +(94, 'CO2', 'water', 0.0025069, '0.000050138', 0.0, 7.62, 0.0, 'VLE', 323.15, 'Zawisza1981'), +(95, 'CO2', 'water', 0.0030098, '0.000060196', 0.0, 8.92, 0.0, 'VLE', 323.15, 'Zawisza1981'), +(96, 'CO2', 'water', 0.00462247, '9.24494E-05', 0.0, 14.41, 0.0, 'VLE', 323.15, 'Zawisza1981'), +(97, 'CO2', 'water', 0.0076601, '0.000153202', 0.0, 25.05, 0.0, 'VLE', 323.15, 'Zawisza1981'), +(98, 'CO2', 'water', 5.0038E-4, '1.00076E-05', 0.0, 2.37, 0.0, 'VLE', 348.15, 'Zawisza1981'), +(99, 'CO2', 'water', 0.00462247, '9.24494E-05', 0.0, 21.0, 0.0, 'VLE', 348.15, 'Zawisza1981'), +(100, 'CO2', 'water', 0.007660193, '0.000153204', 0.0, 35.91, 0.0, 'VLE', 348.15, 'Zawisza1981'), +(101, 'CO2', 'water', 5.0038E-4, '1.00076E-05', 0.0, 3.56, 0.0, 'VLE', 373.15, 'Zawisza1981'), +(102, 'CO2', 'water', 0.00462247, '9.24494E-05', 0.0, 27.01, 0.0, 'VLE', 373.15, 'Zawisza1981'), +(103, 'CO2', 'water', 0.00472124, '9.44248E-05', 0.0, 2.33, 0.0, 'VLE', 353.65, 'Nighswander1989'), +(104, 'CO2', 'water', 0.01133458, '0.000226692', 0.0, 6.11, 0.0, 'VLE', 353.65, 'Nighswander1989'), +(105, 'CO2', 'water', 0.01389342, '0.000277868', 0.0, 7.76, 0.0, 'VLE', 353.65, 'Nighswander1989'), +(106, 'CO2', 'water', 0.01400154, '0.000280031', 0.0, 7.84, 0.0, 'VLE', 353.65, 'Nighswander1989'), +(107, 'CO2', 'water', 0.00857752, '0.00017155', 0.0, 4.31, 0.0, 'VLE', 353.35, 'Nighswander1989'), +(108, 'CO2', 'water', 0.0084694, '0.000169388', 0.0, 4.34, 0.0, 'VLE', 353.75, 'Nighswander1989'), +(109, 'CO2', 'water', 0.0166685, '0.00033337', 0.0, 10.16, 0.0, 'VLE', 353.45, 'Nighswander1989'), +(110, 'CO2', 'water', 0.01688474, '0.000337695', 0.0, 10.18, 0.0, 'VLE', 352.85, 'Nighswander1989'), +(111, 'CO2', 'water', 0.0012028, '0.000024056', 0.0, 0.914347, 0.0, 'VLE', 273.15, 'Morgan1931'), +(112, 'CO2', 'water', 0.00151, '0.0000302', 0.0, 1.14326, 0.0, 'VLE', 273.15, 'Morgan1931'), +(113, 'CO2', 'water', 9.829E-5, '1.9658E-06', 0.0, 0.12103, 0.0, 'VLE', 283.15, 'Morgan1931'), +(114, 'CO2', 'water', 2.5032E-4, '5.0064E-06', 0.0, 0.286891, 0.0, 'VLE', 283.15, 'Morgan1931'), +(115, 'CO2', 'water', 5.3175E-4, '0.000010635', 0.0, 0.57753, 0.0, 'VLE', 283.15, 'Morgan1931'), +(116, 'CO2', 'water', 8.102693E-4, '1.62054E-05', 0.0, 0.871776, 0.0, 'VLE', 283.15, 'Morgan1931'), +(117, 'CO2', 'water', 0.0010159, '0.000020318', 0.0, 1.12616, 0.0, 'VLE', 283.15, 'Morgan1931'), +(118, 'CO2', 'water', 8.846E-5, '1.7692E-06', 0.0, 0.143432, 0.0, 'VLE', 291.15, 'Morgan1931'), +(119, 'CO2', 'water', 2.3762E-4, '4.7524E-06', 0.0, 0.32675, 0.0, 'VLE', 291.15, 'Morgan1931'), +(120, 'CO2', 'water', 4.673E-4, '0.000009346', 0.0, 0.67552, 0.0, 'VLE', 291.15, 'Morgan1931'), +(121, 'CO2', 'water', 7.13689E-4, '1.42738E-05', 0.0, 1.01296, 0.0, 'VLE', 291.15, 'Morgan1931'), +(122, 'CO2', 'water', 8.19E-5, '0.000001638', 0.0, 0.163145, 0.0, 'VLE', 298.15, 'Morgan1931'), +(123, 'CO2', 'water', 2.0564E-4, '4.1128E-06', 0.0, 0.368862, 0.0, 'VLE', 298.15, 'Morgan1931'), +(124, 'CO2', 'water', 4.2011E-4, '8.4022E-06', 0.0, 0.75123, 0.0, 'VLE', 298.15, 'Morgan1931'), +(125, 'CO2', 'water', 6.393E-4, '0.000012786', 0.0, 1.112747, 0.0, 'VLE', 298.15, 'Morgan1931'), +(126, 'CO2', 'water', 0.0013334, '0.000026668', 0.0, 1.0, 0.0, 'VLE', 274.19, 'Murray1971'), +(127, 'CO2', 'water', 0.00114905, '0.000022981', 0.0, 1.0, 0.0, 'VLE', 278.15, 'Murray1971'); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(128, 'CO2', 'water', 9.65001E-4, '1.93E-05', 0.0, 1.0, 0.0, 'VLE', 283.15, 'Murray1971'), +(129, 'CO2', 'water', 8.1745E-4, '0.000016349', 0.0, 1.0, 0.0, 'VLE', 288.15, 'Murray1971'), +(130, 'CO2', 'water', 7.0066E-4, '1.40132E-05', 0.0, 1.0, 0.0, 'VLE', 293.15, 'Murray1971'), +(131, 'CO2', 'water', 6.0943E-4, '1.21886E-05', 0.0, 1.0, 0.0, 'VLE', 298.15, 'Murray1971'), +(132, 'CO2', 'water', 5.14386E-4, '1.02877E-05', 0.0, 1.0, 0.0, 'VLE', 305.15, 'Murray1971'), +(133, 'CO2', 'water', 4.798E-4, '0.000009596', 0.0, 1.0, 0.0, 'VLE', 308.15, 'Murray1971'), +(134, 'methane', 'water', 0.00156, '0.1', 0.99844, 73.6, 0.0, 'VLE', 293.15, 'Addicks2001'), +(135, 'methane', 'water', 0.00201, '0.1', 0.99799, 102.2, 0.0, 'VLE', 293.15, 'Addicks2001'), +(136, 'methane', 'water', 0.0024, '0.1', 0.9976, 139.2, 0.0, 'VLE', 293.15, 'Addicks2001'), +(137, 'methane', 'water', 0.00274, '0.1', 0.99726, 178.2, 0.0, 'VLE', 293.15, 'Addicks2001'), +(138, 'methane', 'MDEA', 7.5E-4, '0.1', 0.99925, 25.0, 0.0, 'VLE', 348.15, 'Otto????'), +(139, 'methane', 'MDEA', 0.0014, NULL, 0.9986, 50.0, 0.0, 'VLE', 348.15, 'Otto????'), +(140, 'methane', 'MDEA', 0.00182, NULL, 0.99818, 73.0, 0.0, 'VLE', 348.15, 'Otto????'), +(141, 'methane', 'MDEA', 0.00225, NULL, 0.99775, 93.0, 0.0, 'VLE', 348.15, 'Otto????'), +(142, 'methane', 'MDEA', 0.0026, NULL, 0.9974, 115.0, 0.0, 'VLE', 348.15, 'Otto????'), +(143, 'ethane', 'MDEA', 4.0E-4, NULL, 9.5E-4, 10.0, 0.0, 'VLE', 348.15, 'Otto????'), +(144, 'ethane', 'MDEA', 9.5E-4, NULL, 0.99905, 25.0, 0.0, 'VLE', 348.15, 'Otto????'), +(145, 'ethane', 'MDEA', 0.0016, NULL, 0.9984, 52.0, 0.0, 'VLE', 348.15, 'Otto????'), +(146, 'ethane', 'MDEA', 0.0018, NULL, 0.9982, 65.0, 0.0, 'VLE', 348.15, 'Otto????'), +(147, 'ethane', 'MDEA', 0.002, NULL, 0.998, 85.0, 0.0, 'VLE', 348.15, 'Otto????'), +(148, 'ethane', 'MDEA', 0.0022, NULL, 0.9978, 135.0, 0.0, 'VLE', 348.15, 'Otto????'), +(150, 'methane', 'water', 3.323E-5, '0.000000332', 0.99996677, 1.0, 1.0, 'VLE', 283.15, 'Perry1998'), +(151, 'methane', 'water', 2.6248E-5, '0.000000262', 0.999973752, 1.0, 1.0, 'VLE', 293.15, 'Perry1998'), +(152, 'methane', 'water', 2.198E-5, '0.000000220', 0.99997802, 1.0, 1.0, 'VLE', 303.15, 'Perry1998'), +(153, 'methane', 'water', 1.8979E-5, '0.000000190', 0.999981021, 1.0, 1.0, 'VLE', 313.15, 'Perry1998'), +(154, 'methane', 'water', 1.7104E-5, '0.000000171', 0.999982896, 1.0, 1.0, 'VLE', 323.15, 'Perry1998'), +(155, 'methane', 'water', 1.5766E-5, '0.000000158', 0.999984234, 1.0, 1.0, 'VLE', 333.15, 'Perry1998'), +(156, 'methane', 'water', 1.4819E-5, '0.000000148', 0.999985181, 1.0, 1.0, 'VLE', 343.15, 'Perry1998'), +(157, 'methane', 'water', 6.6459E-5, '0.000000665', 0.999933541, 2.0, 2.0, 'VLE', 283.15, 'Perry1998'), +(158, 'methane', 'water', 5.2496E-5, '0.000000525', 0.999947504, 2.0, 2.0, 'VLE', 293.15, 'Perry1998'), +(159, 'methane', 'water', 4.3961E-5, '0.000000440', 0.999956039, 2.0, 2.0, 'VLE', 303.15, 'Perry1998'), +(160, 'methane', 'water', 3.7959E-5, '0.000000380', 0.999962041, 2.0, 2.0, 'VLE', 313.15, 'Perry1998'), +(161, 'methane', 'water', 3.4209E-5, '0.000000342', 0.999965791, 2.0, 2.0, 'VLE', 323.15, 'Perry1998'), +(162, 'methane', 'water', 3.1531E-5, '0.000000315', 0.999968469, 2.0, 2.0, 'VLE', 333.15, 'Perry1998'), +(163, 'methane', 'water', 2.9637E-5, '0.000000296', 0.999970363, 2.0, 2.0, 'VLE', 343.15, 'Perry1998'), +(164, 'methane', 'water', 1.66149E-4, '0.000001661', 0.999833851, 5.0, 5.0, 'VLE', 283.15, 'Perry1998'), +(165, 'methane', 'water', 1.3124E-4, '0.000001312', 0.99986876, 5.0, 5.0, 'VLE', 293.15, 'Perry1998'), +(166, 'methane', 'water', 1.09902E-4, '0.000001099', 0.999890098, 5.0, 5.0, 'VLE', 303.15, 'Perry1998'), +(167, 'methane', 'water', 9.4896E-5, '0.000000949', 0.999905104, 5.0, 5.0, 'VLE', 313.15, 'Perry1998'), +(168, 'methane', 'water', 8.5522E-5, '0.000000855', 0.999914478, 5.0, 5.0, 'VLE', 323.15, 'Perry1998'), +(169, 'methane', 'water', 7.8828E-5, '0.000000788', 0.999921172, 5.0, 5.0, 'VLE', 333.15, 'Perry1998'); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(170, 'methane', 'water', 7.4093E-5, '0.000000741', 0.999925907, 5.0, 5.0, 'VLE', 343.15, 'Perry1998'), +(171, 'methane', 'water', 3.32297E-4, '0.000003323', 0.999667703, 10.0, 10.0, 'VLE', 283.15, 'Perry1998'), +(172, 'methane', 'water', 2.6248E-4, '0.000002625', 0.99973752, 10.0, 10.0, 'VLE', 293.15, 'Perry1998'), +(173, 'methane', 'water', 2.19805E-4, '0.000002198', 0.999780195, 10.0, 10.0, 'VLE', 303.15, 'Perry1998'), +(174, 'methane', 'water', 1.89793E-4, '0.000001898', 0.999810207, 10.0, 10.0, 'VLE', 313.15, 'Perry1998'), +(175, 'methane', 'water', 1.71044E-4, '0.000001710', 0.999828956, 10.0, 10.0, 'VLE', 323.15, 'Perry1998'), +(176, 'methane', 'water', 1.57655E-4, '0.000001577', 0.999842345, 10.0, 10.0, 'VLE', 333.15, 'Perry1998'), +(177, 'methane', 'water', 1.48187E-4, '0.000001482', 0.999851813, 10.0, 10.0, 'VLE', 343.15, 'Perry1998'), +(178, 'methane', 'water', 6.64595E-4, '0.000006646', 0.999335405, 20.0, 20.0, 'VLE', 283.15, 'Perry1998'), +(179, 'methane', 'water', 5.24959E-4, '0.000005250', 0.999475041, 20.0, 20.0, 'VLE', 293.15, 'Perry1998'), +(180, 'methane', 'water', 4.39609E-4, '0.000004396', 0.999560391, 20.0, 20.0, 'VLE', 303.15, 'Perry1998'), +(181, 'methane', 'water', 3.79586E-4, '0.000003796', 0.999620414, 20.0, 20.0, 'VLE', 313.15, 'Perry1998'), +(182, 'methane', 'water', 3.42088E-4, '0.000003421', 0.999657912, 20.0, 20.0, 'VLE', 323.15, 'Perry1998'), +(183, 'methane', 'water', 3.15311E-4, '0.000003153', 0.999684689, 20.0, 20.0, 'VLE', 333.15, 'Perry1998'), +(184, 'methane', 'water', 2.96373E-4, '0.000002964', 0.999703627, 20.0, 20.0, 'VLE', 343.15, 'Perry1998'), +(185, 'methane', 'water', 0.001661487, '0.000016615', 0.998338513, 50.0, 50.0, 'VLE', 283.15, 'Perry1998'), +(186, 'methane', 'water', 0.001312398, '0.000013124', 0.998687602, 50.0, 50.0, 'VLE', 293.15, 'Perry1998'), +(187, 'methane', 'water', 0.001099024, '0.000010990', 0.998900976, 50.0, 50.0, 'VLE', 303.15, 'Perry1998'), +(188, 'methane', 'water', 9.48965E-4, '0.000009490', 0.999051035, 50.0, 50.0, 'VLE', 313.15, 'Perry1998'), +(189, 'methane', 'water', 8.55219E-4, '0.000008552', 0.999144781, 50.0, 50.0, 'VLE', 323.15, 'Perry1998'), +(190, 'methane', 'water', 7.88277E-4, '0.000007883', 0.999211723, 50.0, 50.0, 'VLE', 333.15, 'Perry1998'), +(191, 'methane', 'water', 7.40933E-4, '0.000007409', 0.999259067, 50.0, 50.0, 'VLE', 343.15, 'Perry1998'), +(192, 'methane', 'water', 0.003322974, '0.000033230', 0.996677026, 100.0, 100.0, 'VLE', 283.15, 'Perry1998'), +(193, 'methane', 'water', 0.002624796, '0.000026248', 0.997375204, 100.0, 100.0, 'VLE', 293.15, 'Perry1998'), +(194, 'methane', 'water', 0.002198047, '0.000021980', 0.997801953, 100.0, 100.0, 'VLE', 303.15, 'Perry1998'), +(195, 'methane', 'water', 0.001897929, '0.000018979', 0.998102071, 100.0, 100.0, 'VLE', 313.15, 'Perry1998'), +(196, 'methane', 'water', 0.001710439, '0.000017104', 0.998289561, 100.0, 100.0, 'VLE', 323.15, 'Perry1998'), +(197, 'methane', 'water', 0.001576555, '0.000015766', 0.998423445, 100.0, 100.0, 'VLE', 333.15, 'Perry1998'), +(198, 'methane', 'water', 0.001481867, '0.000014819', 0.998518133, 100.0, 100.0, 'VLE', 343.15, 'Perry1998'), +(199, 'benzene', 'MEG', 0.04664, '0.0004664', 0.00106, 1.01325, 1.01325, 'LLE', 279.2, 'Folas2005'), +(200, 'benzene', 'MEG', 0.04878, '0.0004664', 0.00155, 1.01325, 1.01325, 'LLE', 288.5, 'Folas2005'), +(201, 'benzene', 'MEG', 0.005005, '0.0004664', 0.00299, 1.01325, 1.01325, 'LLE', 303.3, 'Folas2005'), +(202, 'benzene', 'MEG', 0.005105, '0.0004664', 0.00463, 1.01325, 1.01325, 'LLE', 318.1, 'Folas2005'), +(203, 'methane', 'MEG', 0.00595, '0.0000595', 0.99405, 50.0, 50.0, 'VLE', 283.29, 'Folas2007'), +(204, 'methane', 'MEG', 0.00595, '0.0000595', 0.99405, 50.2, 50.2, 'VLE', 298.33, 'Folas2007'), +(205, 'methane', 'MEG', 0.00606, '0.0000606', 0.99394, 50.2, 50.2, 'VLE', 323.35, 'Folas2007'), +(206, 'methane', 'MEG', 0.0116, '0.000116', 0.9884, 99.8, 99.8, 'VLE', 323.35, 'Folas2007'), +(207, 'methane', 'MEG', 0.01149, '0.0001149', 0.98851, 100.2, 100.2, 'VLE', 323.35, 'Folas2007'); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(208, 'methane', 'MEG', 0.01146, '0.0001146', 0.98854, 100.8, 100.8, 'VLE', 323.45, 'Folas2007'), +(209, 'methane', 'MEG', 0.003, '0.00003', 0.997, 23.9, 23.9, 'VLE', 323.15, 'Zheng1999'), +(210, 'methane', 'MEG', 0.003, '0.00003', 0.997, 23.7, 23.7, 'VLE', 323.15, 'Zheng1999'), +(211, 'methane', 'MEG', 0.0066, '0.000066', 0.9934, 59.8, 59.8, 'VLE', 323.15, 'Zheng1999'), +(212, 'methane', 'MEG', 0.011, '0.00011', 0.989, 103.0, 103.0, 'VLE', 323.15, 'Zheng1999'), +(213, 'methane', 'MEG', 0.0148, '0.000148', 0.9852, 159.0, 159.0, 'VLE', 323.15, 'Zheng1999'), +(214, 'methane', 'MEG', 0.0174, '0.000174', 0.9826, 198.0, 198.0, 'VLE', 323.15, 'Zheng1999'), +(215, 'methane', 'MEG', 0.0179, '0.000179', 0.9821, 200.0, 200.0, 'VLE', 323.15, 'Zheng1999'), +(216, 'methane', 'MEG', 0.0207, '0.000207', 0.9793, 253.0, 253.0, 'VLE', 323.15, 'Zheng1999'), +(217, 'methane', 'MEG', 0.0224, '0.000224', 0.9776, 292.0, 292.0, 'VLE', 323.15, 'Zheng1999'), +(218, 'methane', 'MEG', 0.0249, '0.000249', 0.9751, 341.0, 341.0, 'VLE', 323.15, 'Zheng1999'), +(219, 'methane', 'MEG', 0.0268, '0.000268', 0.9732, 395.0, 395.0, 'VLE', 323.15, 'Zheng1999'), +(220, 'methane', 'MEG', 3.0E-4, '0.000003', 0.9997, 2.0, 2.0, 'VLE', 373.15, 'Zheng1999'), +(221, 'methane', 'MEG', 0.0039, '0.000039', 0.9961, 29.1, 29.1, 'VLE', 373.15, 'Zheng1999'), +(222, 'methane', 'MEG', 0.0081, '0.000081', 0.9919, 66.3, 66.3, 'VLE', 373.15, 'Zheng1999'), +(223, 'methane', 'MEG', 0.0123, '0.000123', 0.9877, 103.8, 103.8, 'VLE', 373.15, 'Zheng1999'), +(224, 'methane', 'MEG', 0.0162, '0.000162', 0.9838, 146.25, 146.25, 'VLE', 373.15, 'Zheng1999'), +(225, 'methane', 'MEG', 0.0204, '0.000204', 0.9796, 194.1, 194.1, 'VLE', 373.15, 'Zheng1999'), +(226, 'methane', 'MEG', 0.0238, '0.000238', 0.9762, 246.7, 246.7, 'VLE', 373.15, 'Zheng1999'), +(227, 'methane', 'MEG', 0.0273, '0.000273', 0.9727, 303.52, 303.52, 'VLE', 373.15, 'Zheng1999'), +(228, 'methane', 'MEG', 0.0299, '0.000299', 0.9701, 347.0, 347.0, 'VLE', 373.15, 'Zheng1999'), +(229, 'methane', 'MEG', 0.0322, '0.000322', 0.9678, 396.17, 396.17, 'VLE', 373.15, 'Zheng1999'), +(230, 'methane', 'MEG', 5.0E-4, '0.000005', 0.9995, 3.3, 3.3, 'VLE', 398.15, 'Zheng1999'), +(231, 'methane', 'MEG', 5.0E-4, '0.000005', 0.9995, 3.3, 3.3, 'VLE', 398.15, 'Zheng1999'), +(232, 'methane', 'MEG', 0.005, '0.00005', 0.995, 32.5, 32.5, 'VLE', 398.15, 'Zheng1999'), +(233, 'methane', 'MEG', 0.0104, '0.000104', 0.9896, 76.0, 76.0, 'VLE', 398.15, 'Zheng1999'), +(234, 'methane', 'MEG', 0.0178, '0.000178', 0.9822, 139.5, 139.5, 'VLE', 398.15, 'Zheng1999'), +(235, 'methane', 'MEG', 0.0244, '0.000244', 0.9756, 202.5, 202.5, 'VLE', 398.15, 'Zheng1999'), +(236, 'methane', 'MEG', 0.0292, '0.000292', 0.9708, 248.7, 248.7, 'VLE', 398.15, 'Zheng1999'), +(237, 'methane', 'MEG', 0.0339, '0.000339', 0.9661, 300.0, 300.0, 'VLE', 398.15, 'Zheng1999'), +(238, 'methane', 'MEG', 0.0382, '0.000382', 0.9618, 345.9, 345.9, 'VLE', 398.15, 'Zheng1999'), +(239, 'methane', 'MEG', 0.0421, '0.000421', 0.9579, 396.0, 396.0, 'VLE', 398.15, 'Zheng1999'), +(240, 'methane', 'MEG', 2.17E-4, '0.00000217', 0.999783, 1.35, 1.35, 'VLE', 298.15, 'Jou1994'), +(241, 'methane', 'MEG', 9.32E-4, '0.00000932', 0.999068, 6.19, 6.19, 'VLE', 298.15, 'Jou1994'), +(242, 'methane', 'MEG', 0.00334, '0.0000334', 0.99666, 23.8, 23.8, 'VLE', 298.15, 'Jou1994'), +(243, 'methane', 'MEG', 0.00759, '0.0000759', 0.99241, 59.4, 59.4, 'VLE', 298.15, 'Jou1994'), +(244, 'methane', 'MEG', 0.0121, '0.000121', 0.9879, 107.4, 107.4, 'VLE', 298.15, 'Jou1994'), +(245, 'methane', 'MEG', 0.0153, '0.000153', 0.9847, 155.3, 155.3, 'VLE', 298.15, 'Jou1994'), +(246, 'methane', 'MEG', 0.0182, '0.000182', 0.9818, 203.5, 203.5, 'VLE', 298.15, 'Jou1994'), +(247, 'methane', 'MEG', 1.64E-4, '0.00000164', 0.999836, 1.05, 1.05, 'VLE', 323.15, 'Jou1994'), +(248, 'methane', 'MEG', 0.00112, '0.0000112', 0.99888, 7.49, 7.49, 'VLE', 323.15, 'Jou1994'), +(249, 'methane', 'MEG', 0.00362, '0.0000362', 0.99638, 25.9, 25.9, 'VLE', 323.15, 'Jou1994'); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(250, 'methane', 'MEG', 0.00741, '0.0000741', 0.99259, 59.2, 59.2, 'VLE', 323.15, 'Jou1994'), +(251, 'methane', 'MEG', 0.0117, '0.000117', 0.9883, 103.3, 103.3, 'VLE', 323.15, 'Jou1994'), +(252, 'methane', 'MEG', 0.0158, '0.000158', 0.9842, 154.9, 154.9, 'VLE', 323.15, 'Jou1994'), +(253, 'methane', 'MEG', 0.0183, '0.000183', 0.9817, 197.0, 197.0, 'VLE', 323.15, 'Jou1994'), +(254, 'methane', 'MEG', 2.24E-4, '0.00000224', 0.999776, 1.5, 1.5, 'VLE', 348.15, 'Jou1994'), +(255, 'methane', 'MEG', 0.0011, '0.000011', 0.9989, 7.83, 7.83, 'VLE', 348.15, 'Jou1994'), +(256, 'methane', 'MEG', 0.00368, '0.0000368', 0.99632, 26.2, 26.2, 'VLE', 348.15, 'Jou1994'), +(257, 'methane', 'MEG', 0.00872, '0.0000872', 0.99128, 68.3, 68.3, 'VLE', 348.15, 'Jou1994'), +(258, 'methane', 'MEG', 0.0128, '0.000128', 0.9872, 108.7, 108.7, 'VLE', 348.15, 'Jou1994'), +(259, 'methane', 'MEG', 0.0164, '0.000164', 0.9836, 148.6, 148.6, 'VLE', 348.15, 'Jou1994'), +(260, 'methane', 'MEG', 0.0194, '0.000194', 0.9806, 190.1, 190.1, 'VLE', 348.15, 'Jou1994'), +(261, 'methane', 'MEG', 2.29E-4, '0.00000229', 0.999771, 1.58, 1.58, 'VLE', 373.15, 'Jou1994'), +(262, 'methane', 'MEG', 7.49E-4, '0.00000749', 0.999251, 4.97, 4.97, 'VLE', 373.15, 'Jou1994'), +(263, 'methane', 'MEG', 0.00438, '0.0000438', 0.99562, 31.2, 31.2, 'VLE', 373.15, 'Jou1994'), +(264, 'methane', 'MEG', 0.00833, '0.0000833', 0.99167, 64.6, 64.6, 'VLE', 373.15, 'Jou1994'), +(265, 'methane', 'MEG', 0.013, '0.00013', 0.987, 102.5, 102.5, 'VLE', 373.15, 'Jou1994'), +(266, 'methane', 'MEG', 0.0174, '0.000174', 0.9826, 145.9, 145.9, 'VLE', 373.15, 'Jou1994'), +(267, 'methane', 'MEG', 0.0203, '0.000203', 0.9797, 182.9, 182.9, 'VLE', 373.15, 'Jou1994'), +(268, 'methane', 'MEG', 2.09E-4, '0.0000209', 0.99791, 1.35, 1.35, 'VLE', 398.15, 'Jou1994'), +(269, 'methane', 'MEG', 0.00101, '0.0000101', 0.99899, 6.66, 6.66, 'VLE', 398.15, 'Jou1994'), +(270, 'methane', 'MEG', 0.00521, '0.0000521', 0.99479, 35.3, 35.3, 'VLE', 398.15, 'Jou1994'), +(271, 'methane', 'MEG', 0.0122, '0.000122', 0.9878, 85.8, 85.8, 'VLE', 398.15, 'Jou1994'), +(272, 'methane', 'MEG', 0.0179, '0.000179', 0.9821, 135.2, 135.2, 'VLE', 398.15, 'Jou1994'), +(273, 'methane', 'MEG', 0.0224, '0.000224', 0.9776, 181.7, 181.7, 'VLE', 398.15, 'Jou1994'), +(430, 'mercury', 'n-pentane', 1.9E-7, '0.0000000019', 0.99999981, 2.01325, 0.0, 'VLE', 278.15, 'Jou1994'), +(431, 'mercury', 'n-pentane', 2.7E-7, '0.0000000027', 0.99999973, 2.01325, 0.0, 'VLE', 283.15, 'Jou1994'), +(432, 'mercury', 'n-pentane', 3.6E-7, '0.0000000036', 0.99999964, 2.01325, 0.0, 'VLE', 288.15, 'Jou1994'), +(433, 'mercury', 'n-pentane', 4.6E-7, '0.0000000046', 0.99999954, 2.01325, 0.0, 'VLE', 293.15, 'Jou1994'), +(434, 'mercury', 'n-pentane', 6.8E-7, '0.0000000068', 0.99999932, 2.01325, 0.0, 'VLE', 298.15, 'Jou1994'), +(435, 'mercury', 'n-pentane', 9.3E-7, '0.0000000093', 0.99999907, 2.01325, 0.0, 'VLE', 303.15, 'Jou1994'), +(436, 'mercury', 'n-pentane', 1.2E-6, '0.000000012', 0.9999988, 2.01325, 0.0, 'VLE', 308.15, 'Jou1994'), +(437, 'mercury', 'n-pentane', 1.6E-6, '0.000000016', 0.9999984, 2.01325, 0.0, 'VLE', 313.15, 'Jou1994'), +(438, 'mercury', 'n-hexane', 1.8E-7, '0.0000000018', 0.99999982, 2.01325, 0.0, 'VLE', 273.15, 'Jou1994'), +(439, 'mercury', 'n-hexane', 2.4E-7, '0.0000000024', 0.99999976, 2.01325, 0.0, 'VLE', 278.15, 'Jou1994'), +(440, 'mercury', 'n-hexane', 3.4E-7, '0.0000000034', 0.99999966, 2.01325, 0.0, 'VLE', 283.15, 'Jou1994'), +(441, 'mercury', 'n-hexane', 4.6E-7, '0.0000000046', 0.99999954, 2.01325, 0.0, 'VLE', 288.15, 'Jou1994'), +(442, 'mercury', 'n-hexane', 5.9E-7, '0.0000000059', 0.99999941, 2.01325, 0.0, 'VLE', 293.15, 'Jou1994'), +(443, 'mercury', 'n-hexane', 8.3E-7, '0.0000000083', 0.99999917, 2.01325, 0.0, 'VLE', 298.15, 'Jou1994'), +(444, 'mercury', 'n-hexane', 8.4072E-7, '0.0000000084072', 0.99999915928, 2.01325, 0.0, 'VLE', 298.15, 'Jou1994'), +(445, 'mercury', 'n-hexane', 1.1E-6, '0.000000011', 0.9999989, 2.01325, 0.0, 'VLE', 303.15, 'Jou1994'); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(446, 'mercury', 'n-hexane', 1.42E-6, '0.0000000142', 0.99999858, 2.01325, 0.0, 'VLE', 308.15, 'Jou1994'), +(447, 'mercury', 'n-hexane', 1.81127E-6, '0.0000000181127', 0.99999818873, 2.01325, 0.0, 'VLE', 313.15, 'Jou1994'), +(448, 'mercury', 'n-hexane', 1.9E-6, '0.000000019', 0.9999981, 2.01325, 0.0, 'VLE', 313.15, 'Jou1994'), +(449, 'mercury', 'n-hexane', 2.38E-6, '0.0000000238', 0.99999762, 2.01325, 0.0, 'VLE', 318.15, 'Jou1994'), +(450, 'mercury', 'n-hexane', 3.03E-6, '0.0000000303', 0.99999697, 2.01325, 0.0, 'VLE', 323.15, 'Jou1994'), +(451, 'mercury', 'n-hexane', 3.84E-6, '0.0000000384', 0.99999616, 2.01325, 0.0, 'VLE', 328.15, 'Jou1994'), +(452, 'mercury', 'n-hexane', 4.83E-6, '0.0000000483', 0.99999517, 2.01325, 0.0, 'VLE', 333.15, 'Jou1994'), +(453, 'mercury', 'n-hexane', 6.03E-6, '0.0000000603', 0.99999397, 3.01325, 0.0, 'VLE', 338.15, 'Jou1994'), +(454, 'mercury', 'n-heptane', 2.0E-7, '0.000000002', 0.9999998, 1.01325, 0.014499039, 'VLE', 273.15, NULL), +(455, 'mercury', 'n-heptane', 2.9E-7, '0.0000000029', 0.99999971, 1.01325, 0.019642913, 'VLE', 278.15, NULL), +(456, 'mercury', 'n-heptane', 3.7E-7, '0.0000000037', 0.99999963, 1.01325, 0.026274056, 'VLE', 283.15, NULL), +(457, 'mercury', 'n-heptane', 5.4E-7, '0.0000000054', 0.99999946, 1.01325, 0.034723345, 'VLE', 288.15, NULL), +(458, 'mercury', 'n-heptane', 7.0E-7, '0.000000007', 0.9999993, 1.01325, 0.04537172, 'VLE', 293.15, NULL), +(459, 'mercury', 'n-heptane', 9.7E-7, '0.0000000097', 0.99999903, 1.01325, 0.058653471, 'VLE', 298.15, NULL), +(460, 'mercury', 'n-heptane', 1.26E-6, '0.0000000126', 0.99999874, 1.01325, 0.075059149, 'VLE', 303.15, NULL), +(461, 'mercury', 'n-heptane', 1.63E-6, '0.0000000163', 0.99999837, 1.01325, 0.095138078, 'VLE', 308.15, NULL), +(462, 'mercury', 'n-heptane', 2.2E-6, '0.000000022', 0.9999978, 1.01325, 0.119500418, 'VLE', 313.15, NULL), +(463, 'mercury', 'n-octane', 2.5E-7, '0.0000000025', 0.99999975, 1.01325, 0.0, 'VLE', 273.15, NULL), +(464, 'mercury', 'n-octane', 3.3E-7, '0.0000000033', 0.99999967, 1.01325, 0.0, 'VLE', 278.15, NULL), +(465, 'mercury', 'n-octane', 4.7E-7, '0.0000000047', 0.99999953, 1.01325, 0.0, 'VLE', 283.15, NULL), +(466, 'mercury', 'n-octane', 6.1E-7, '0.0000000061', 0.99999939, 1.01325, 0.0, 'VLE', 288.15, NULL), +(467, 'mercury', 'n-octane', 7.9E-7, '0.0000000079', 0.99999921, 1.01325, 0.0, 'VLE', 293.15, NULL), +(468, 'mercury', 'n-octane', 1.1E-6, '0.000000011', 0.9999989, 1.01325, 0.0, 'VLE', 298.15, NULL), +(469, 'mercury', 'n-octane', 1.4E-6, '0.000000014', 0.9999986, 1.01325, 0.0, 'VLE', 303.15, NULL), +(470, 'mercury', 'n-octane', 1.78E-6, '0.0000000178', 0.99999822, 1.01325, 0.0, 'VLE', 308.15, NULL), +(471, 'mercury', 'n-octane', 2.3E-6, '0.000000023', 0.9999977, 1.01325, 0.0, 'VLE', 313.15, NULL), +(472, 'mercury', 'n-decane', 4.0E-7, '0.000000004', 0.9999996, 1.01325, 0.0, 'VLE', 273.15, NULL), +(473, 'mercury', 'n-decane', 4.9E-7, '0.0000000049', 0.99999951, 1.01325, 0.0, 'VLE', 278.15, NULL), +(474, 'mercury', 'n-decane', 5.8E-7, '0.0000000058', 0.99999942, 1.01325, 0.0, 'VLE', 283.15, NULL), +(475, 'mercury', 'n-decane', 8.7E-7, '0.0000000087', 0.99999913, 1.01325, 0.0, 'VLE', 288.15, NULL), +(476, 'mercury', 'n-decane', 9.6E-7, '0.0000000096', 0.99999904, 1.01325, 0.0, 'VLE', 293.15, NULL), +(477, 'mercury', 'n-decane', 1.37E-6, '0.0000000137', 0.99999863, 1.01325, 0.0, 'VLE', 298.15, NULL), +(478, 'mercury', 'n-decane', 1.69E-6, '0.0000000169', 0.99999831, 1.01325, 0.0, 'VLE', 303.15, NULL), +(479, 'mercury', 'n-decane', 2.04E-6, '0.0000000204', 0.9999981, 1.01325, 0.0, 'VLE', 308.15, NULL), +(480, 'mercury', 'n-decane', 2.52E-6, '0.0000000252', 0.99999748, 1.01325, 0.0, 'VLE', 313.15, NULL), +(481, 'mercury', 'n-decane', 3.09E-6, '0.0000000309', 0.99999734, 1.01325, 0.0, 'VLE', 318.15, NULL), +(482, 'mercury', '2,2-dm-C4', 1.7E-7, '0.0000000017', 0.99999983, 1.01325, 0.0, 'VLE', 273.15, NULL), +(483, 'mercury', '2,2-dm-C4', 3.7E-7, '0.0000000037', 0.99999963, 1.01325, 0.0, 'VLE', 288.15, NULL); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(484, 'mercury', '2,2-dm-C4', 4.9E-7, '0.0000000049', 0.99999951, 1.01325, 0.0, 'VLE', 293.15, NULL), +(485, 'mercury', '2,2-dm-C4', 6.3E-7, '0.0000000063', 0.99999933, 1.01325, 0.0, 'VLE', 298.15, NULL), +(486, 'mercury', '2,2-dm-C4', 8.1E-7, '0.0000000081', 0.99999919, 1.01325, 0.0, 'VLE', 303.15, NULL), +(487, 'mercury', '2,2-dm-C4', 9.9E-7, '0.0000000099', 0.99999901, 1.01325, 0.0, 'VLE', 308.15, NULL), +(488, 'mercury', '2,2,4-tm-C5', 1.6E-7, '0.0000000016', 0.99999984, 1.01325, 0.0, 'VLE', 273.15, NULL), +(489, 'mercury', '2,2,4-tm-C5', 3.4E-7, '0.0000000034', 0.99999966, 1.01325, 0.0, 'VLE', 286.65, NULL), +(490, 'mercury', '2,2,4-tm-C5', 3.6E-7, '0.0000000036', 0.99999964, 1.01325, 0.0, 'VLE', 288.15, NULL), +(491, 'mercury', '2,2,4-tm-C5', 5.4E-7, '0.0000000054', 0.99999946, 1.01325, 0.0, 'VLE', 293.15, NULL), +(492, 'mercury', '2,2,4-tm-C5', 7.0E-7, '0.000000007', 0.9999993, 1.01325, 0.0, 'VLE', 298.15, NULL), +(493, 'mercury', '2,2,4-tm-C5', 8.9E-7, '0.0000000089', 0.99999911, 1.01325, 0.0, 'VLE', 303.15, NULL), +(494, 'mercury', '2,2,4-tm-C5', 1.11E-6, '0.0000000111', 0.99999889, 1.01325, 0.0, 'VLE', 308.15, NULL), +(495, 'mercury', 'cy-C6', 8.2E-7, '0.0000000082', 0.99999918, 1.01325, 0.0, 'VLE', 288.15, NULL), +(496, 'mercury', 'cy-C6', 1.02E-6, '0.0000000102', 0.99999898, 1.01325, 0.0, 'VLE', 293.15, NULL), +(497, 'mercury', 'cy-C6', 1.32E-6, '0.0000000132', 0.99999868, 1.01325, 0.0, 'VLE', 298.15, NULL), +(498, 'mercury', 'cy-C6', 1.19746E-6, '0.0000000119746', 0.99999880254, 1.01325, 0.0, 'VLE', 298.15, NULL), +(499, 'mercury', 'cy-C6', 1.62E-6, '0.0000000162', 0.99999838, 1.01325, 0.0, 'VLE', 303.15, NULL), +(500, 'mercury', 'cy-C6', 1.92E-6, '0.0000000192', 0.99999808, 1.01325, 0.0, 'VLE', 308.15, NULL), +(501, 'mercury', 'cy-C6', 2.47E-6, '0.0000000247', 0.99999753, 1.01325, 0.0, 'VLE', 313.15, NULL), +(502, 'mercury', 'm-cy-C6', 2.7E-7, '0.0000000027', 0.99999973, 1.01325, 0.0, 'VLE', 273.15, NULL), +(503, 'mercury', 'm-cy-C6', 6.6E-7, '0.0000000066', 0.99999934, 1.01325, 0.0, 'VLE', 288.15, NULL), +(504, 'mercury', 'm-cy-C6', 8.8E-7, '0.0000000088', 0.99999912, 1.01325, 0.0, 'VLE', 293.15, NULL), +(505, 'mercury', 'm-cy-C6', 1.17E-6, '0.0000000117', 0.99999883, 1.01325, 0.0, 'VLE', 298.15, NULL), +(506, 'mercury', 'm-cy-C6', 1.46E-6, '0.0000000146', 0.99999854, 1.01325, 0.0, 'VLE', 303.15, NULL), +(507, 'mercury', 'm-cy-C6', 1.88E-6, '0.0000000188', 0.99999812, 1.01325, 0.0, 'VLE', 308.15, NULL), +(508, 'mercury', 'benzene', 5.8E-7, '0.0000000058', 0.99999942, 2.01325, 0.0, 'VLE', 288.15, NULL), +(509, 'mercury', 'benzene', 7.9E-7, '0.0000000079', 0.99999921, 2.01325, 0.0, 'VLE', 293.15, NULL), +(510, 'mercury', 'benzene', 9.27E-7, '0.00000000927', 0.999999073, 2.01325, 0.0, 'VLE', 295.15, NULL), +(511, 'mercury', 'benzene', 1.06E-6, '0.0000000106', 0.99999894, 2.01325, 0.0, 'VLE', 298.15, NULL), +(512, 'mercury', 'benzene', 1.07382E-6, '0.0000000107382', 0.99999892618, 2.01325, 0.0, 'VLE', 298.15, NULL), +(513, 'mercury', 'benzene', 1.37E-6, '0.0000000137', 0.99999863, 2.01325, 0.0, 'VLE', 303.15, NULL), +(514, 'mercury', 'benzene', 1.91E-6, '0.0000000191', 0.99999809, 2.01325, 0.0, 'VLE', 308.15, NULL), +(515, 'mercury', 'toluene', 3.2E-7, '0.0000000032', 0.99999968, 1.01325, 0.0, 'VLE', 273.15, NULL), +(516, 'mercury', 'toluene', 6.9E-7, '0.0000000069', 0.99999931, 1.01325, 0.0, 'VLE', 288.15, NULL), +(517, 'mercury', 'toluene', 1.03E-6, '0.0000000103', 0.99999897, 1.01325, 0.0, 'VLE', 293.15, NULL), +(518, 'mercury', 'toluene', 1.28E-6, '0.0000000128', 0.99999872, 1.01325, 0.0, 'VLE', 298.15, NULL), +(519, 'mercury', 'toluene', 1.33195E-6, '0.0000000133195', 0.99999866805, 1.01325, 0.0, 'VLE', 298.15, NULL), +(520, 'mercury', 'toluene', 1.73E-6, '0.0000000173', 0.99999827, 1.01325, 0.0, 'VLE', 303.15, NULL), +(521, 'mercury', 'toluene', 2.14E-6, '0.0000000214', 0.99999786, 1.01325, 0.0, 'VLE', 308.15, NULL), +(522, 'mercury', 'o-xylene', 3.1E-7, '0.0000000031', 0.99999969, 2.01325, 0.0, 'VLE', 273.15, NULL); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(523, 'mercury', 'o-xylene', 1.12E-6, '0.0000000112', 0.99999888, 2.01325, 0.0, 'VLE', 293.15, NULL), +(524, 'mercury', 'o-xylene', 1.45E-6, '0.0000000145', 0.99999855, 2.01325, 0.0, 'VLE', 298.15, NULL), +(525, 'mercury', 'o-xylene', 1.89E-6, '0.0000000189', 0.99999811, 2.01325, 0.0, 'VLE', 303.15, NULL), +(526, 'mercury', 'o-xylene', 2.62E-6, '0.0000000262', 0.99999738, 2.01325, 0.0, 'VLE', 308.15, NULL), +(527, 'mercury', 'cis-1,2-dm-cy-C6', 8.1E-7, '0.0000000081', 0.99999919, 1.01325, 0.0, 'VLE', 289.15, NULL), +(528, 'mercury', 'cis-1,2-dm-cy-C6', 1.06E-6, '0.0000000106', 0.99999894, 1.01325, 0.0, 'VLE', 293.15, NULL), +(529, 'mercury', 'cis-1,2-dm-cy-C6', 1.356E-6, '0.00000001356', 0.999998644, 1.01325, 0.0, 'VLE', 298.15, NULL), +(530, 'mercury', 'cis-1,2-dm-cy-C6', 1.71E-6, '0.0000000171', 0.99999829, 1.01325, 0.0, 'VLE', 303.15, NULL), +(531, 'mercury', 'cis-1,2-dm-cy-C6', 2.06E-6, '0.0000000206', 0.99999794, 1.01325, 0.0, 'VLE', 308.15, NULL), +(532, 'mercury', 'cis-1,4-dm-cy-C61', 7.4E-7, '0.0000000074', 0.99999926, 1.01325, 0.0, 'VLE', 288.15, NULL), +(533, 'mercury', 'cis-1,4-dm-cy-C62', 1.02E-6, '0.0000000102', 0.99999898, 1.01325, 0.0, 'VLE', 293.15, NULL), +(534, 'mercury', 'cis-1,4-dm-cy-C63', 1.326E-6, '0.00000001326', 0.999998674, 1.01325, 0.0, 'VLE', 298.15, NULL), +(535, 'mercury', 'cis-1,4-dm-cy-C64', 1.64E-6, '0.0000000164', 0.99999836, 1.01325, 0.0, 'VLE', 303.15, NULL), +(536, 'mercury', 'cis-1,4-dm-cy-C65', 2.11E-6, '0.0000000211', 0.99999789, 1.01325, 0.0, 'VLE', 308.15, NULL), +(537, 'mercury', 'trans-1,2-dm-cy-C6', 6.9E-7, '0.0000000069', 0.99999931, 1.01325, 0.0, 'VLE', 288.15, NULL), +(538, 'mercury', 'trans-1,2-dm-cy-C6', 9.1E-7, '0.0000000091', 0.99999909, 1.01325, 0.0, 'VLE', 293.15, NULL), +(539, 'mercury', 'trans-1,2-dm-cy-C6', 1.234E-6, '0.00000001234', 0.999998766, 1.01325, 0.0, 'VLE', 298.15, NULL), +(540, 'mercury', 'trans-1,2-dm-cy-C6', 1.55E-6, '0.0000000155', 0.99999845, 1.01325, 0.0, 'VLE', 303.15, NULL), +(541, 'mercury', 'trans-1,2-dm-cy-C6', 1.85E-6, '0.0000000185', 0.99999815, 1.01325, 0.0, 'VLE', 308.15, NULL), +(542, 'mercury', 'trans-1,4-dm-cy-C6', 6.9E-7, '0.0000000069', 0.99999931, 1.01325, 0.0, 'VLE', 288.15, NULL), +(543, 'mercury', 'trans-1,4-dm-cy-C6', 9.1E-7, '0.0000000091', 0.99999909, 1.01325, 0.0, 'VLE', 293.15, NULL), +(544, 'mercury', 'trans-1,4-dm-cy-C6', 1.219E-6, '0.00000001219', 0.999998781, 1.01325, 0.0, 'VLE', 298.15, NULL), +(545, 'mercury', 'trans-1,4-dm-cy-C6', 1.55E-6, '0.0000000155', 0.99999845, 1.01325, 0.0, 'VLE', 303.15, NULL), +(546, 'mercury', 'trans-1,4-dm-cy-C6', 1.86E-6, '0.0000000186', 0.99999814, 1.01325, 0.0, 'VLE', 308.15, NULL), +(547, 'mercury', 'propane0', 1.0, '0.01', 0.0, 0.01347689, 0.0, 'VLE', 457.15, NULL), +(548, 'mercury', 'propane', 0.001396, '0.00001396', 0.998604, 9.93034, 0.0, 'VLE', 457.15, NULL), +(549, 'mercury', 'propane', 7.47E-4, '0.00000747', 0.999253, 19.15137, 0.0, 'VLE', 457.15, NULL), +(550, 'mercury', 'propane0', 1.0, '0.01', 0.0, 0.04032934, 0.0, 'VLE', 491.15, NULL), +(551, 'mercury', 'propane', 0.003844, '0.00003844', 0.996156, 10.74098, 0.0, 'VLE', 491.15, NULL), +(552, 'mercury', 'propane', 0.002035, '0.00002035', 0.997965, 20.87398, 0.0, 'VLE', 491.15, NULL), +(553, 'mercury', 'propane', 0.001429, '0.00001429', 0.998571, 29.79102, 0.0, 'VLE', 491.15, NULL), +(554, 'mercury', 'propane0', 1.0, '0.01', 0.0, 0.11592152, 0.0, 'VLE', 529.15, NULL), +(555, 'mercury', 'propane', 0.010039, '0.00010039', 0.989961, 11.75428, 0.0, 'VLE', 529.15, NULL), +(556, 'mercury', 'propane', 0.005274, '0.00005274', 0.994726, 22.79925, 0.0, 'VLE', 529.15, NULL), +(557, 'mercury', 'propane', 0.00369, '0.0000369', 0.99631, 32.93225, 0.0, 'VLE', 529.15, NULL), +(558, 'mercury', 'butane0', 1.0, '0.01', 0.0, 0.01347689, 0.0, 'VLE', 457.15, NULL), +(559, 'mercury', 'butane', 0.001426, '0.00001426', 0.998574, 9.72768, 0.0, 'VLE', 457.15, NULL), +(560, 'mercury', 'butane', 7.78E-4, '0.00000778', 0.999222, 18.03674, 0.0, 'VLE', 457.15, NULL); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(561, 'mercury', 'butane', 5.71E-4, '0.00000571', 0.999429, 24.4193, 0.0, 'VLE', 457.15, NULL), +(562, 'mercury', 'butane0', 1.0, '0.01', 0.0, 0.04032934, 0.0, 'VLE', 491.15, NULL), +(563, 'mercury', 'butane', 0.003913, '0.00003913', 0.996087, 10.63965, 0.0, 'VLE', 491.15, NULL), +(564, 'mercury', 'butane', 0.002107, '0.00002107', 0.997893, 19.86068, 0.0, 'VLE', 491.15, NULL), +(565, 'mercury', 'butane', 0.001527, '0.00001527', 0.998473, 27.56176, 0.0, 'VLE', 491.15, NULL), +(566, 'mercury', 'butane0', 1.0, '0.01', 0.0, 0.11592152, 0.0, 'VLE', 529.15, NULL), +(567, 'mercury', 'butane', 0.01025, '0.0001025', 0.98975, 11.65295, 0.0, 'VLE', 529.15, NULL), +(568, 'mercury', 'butane', 0.005487, '0.00005487', 0.994513, 22.19127, 0.0, 'VLE', 529.15, NULL), +(569, 'mercury', 'butane', 0.003902, '0.00003902', 0.996098, 31.00698, 0.0, 'VLE', 529.15, NULL), +(579, 'mercury', 'methane', 9.1E-10, '0.0000000000091', 1.0, 27.578988, 0.0, 'VLE', 248.15, NULL), +(580, 'mercury', 'methane', 2.65E-9, '0.0000000000265', 2.0, 27.578988, 1.0, 'VLE', 258.15, NULL), +(581, 'mercury', 'methane', 7.7E-9, '0.000000000077', 3.0, 27.578988, 2.0, 'VLE', 268.15, NULL), +(582, 'mercury', 'methane', 1.29E-8, '0.000000000129', 4.0, 27.578988, 3.0, 'VLE', 273.15, NULL), +(583, 'mercury', 'methane', 2.0E-8, '0.0000000002', 5.0, 27.578988, 4.0, 'VLE', 278.15, NULL), +(584, 'mercury', 'methane', 5.01E-8, '0.000000000501', 6.0, 27.578988, 5.0, 'VLE', 288.15, NULL), +(585, 'mercury', 'methane', 7.74E-8, '0.000000000774', 7.0, 27.578988, 6.0, 'VLE', 293.15, NULL), +(586, 'mercury', 'methane', 2.26E-9, '0.0000000000226', 9.0, 34.473735, 8.0, 'VLE', 258.15, NULL), +(587, 'mercury', 'methane', 6.63E-9, '0.0000000000663', 10.0, 34.473735, 9.0, 'VLE', 268.15, NULL), +(588, 'mercury', 'methane', 1.12E-8, '0.000000000112', 11.0, 34.473735, 10.0, 'VLE', 273.15, NULL), +(589, 'mercury', 'methane', 1.72E-8, '0.000000000172', 12.0, 34.473735, 11.0, 'VLE', 278.15, NULL), +(590, 'mercury', 'methane', 4.2E-8, '0.00000000042', 13.0, 34.473735, 12.0, 'VLE', 288.15, NULL), +(591, 'mercury', 'methane', 6.48E-8, '0.000000000648', 14.0, 34.473735, 13.0, 'VLE', 293.15, NULL), +(592, 'mercury', 'methane', 1.95E-9, '0.0000000000195', 16.0, 68.94747, 15.0, 'VLE', 258.15, NULL), +(593, 'mercury', 'methane', 4.86E-9, '0.0000000000486', 17.0, 68.94747, 16.0, 'VLE', 268.15, NULL), +(594, 'mercury', 'methane', 8.03E-9, '0.0000000000803', 18.0, 68.94747, 17.0, 'VLE', 273.15, NULL), +(595, 'mercury', 'methane', 1.17E-8, '0.000000000117', 19.0, 68.94747, 18.0, 'VLE', 278.15, NULL), +(596, 'mercury', 'methane', 2.83E-8, '0.000000000283', 20.0, 68.94747, 19.0, 'VLE', 288.15, NULL), +(597, 'mercury', 'methane', 4.28E-8, '0.000000000428', 21.0, 68.94747, 20.0, 'VLE', 293.15, NULL), +(598, 'mercury', 'ethane', 5.2E-8, '0.00000000052', 1.0, 54.81323865, 0.0, 'VLE', 273.15, NULL), +(599, 'mercury', 'ethane', 7.31E-8, '0.000000000731', 2.0, 54.26165889, 1.0, 'VLE', 278.15, NULL), +(600, 'mercury', 'ethane', 1.01E-7, '0.00000000101', 3.0, 53.64113166, 2.0, 'VLE', 283.15, NULL), +(601, 'mercury', 'ethane', 1.01E-7, '0.00000000101', 4.0, 53.98586901, 3.0, 'VLE', 283.15, NULL), +(602, 'mercury', 'ethane', 1.38E-7, '0.00000000138', 5.0, 51.15902274, 4.0, 'VLE', 288.15, NULL), +(603, 'mercury', 'ethane', 1.38E-7, '0.00000000138', 6.0, 55.157976, 5.0, 'VLE', 288.15, NULL), +(604, 'mercury', 'ethane', 1.81E-7, '0.00000000181', 7.0, 67.5685206, 6.0, 'VLE', 293.15, NULL), +(605, 'mercury', 'ethane', 5.19E-8, '0.000000000519', 9.0, 82.87485894, 8.0, 'VLE', 273.15, NULL), +(606, 'mercury', 'ethane', 7.33E-8, '0.000000000733', 10.0, 83.01275388, 9.0, 'VLE', 278.15, NULL), +(607, 'mercury', 'ethane', 1.02E-7, '0.00000000102', 11.0, 82.66801653, 10.0, 'VLE', 283.15, NULL), +(608, 'mercury', 'ethane', 1.02E-7, '0.00000000102', 12.0, 82.59906906, 11.0, 'VLE', 283.15, NULL), +(609, 'mercury', 'ethane', 1.4E-7, '0.0000000014', 13.0, 81.49590954, 12.0, 'VLE', 288.15, NULL), +(610, 'mercury', 'ethane', 1.39E-7, '0.00000000139', 14.0, 81.3580146, 13.0, 'VLE', 288.15, NULL); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(611, 'mercury', 'ethane', 1.85E-7, '0.00000000185', 15.0, 82.66801653, 14.0, 'VLE', 293.15, NULL), +(612, 'mercury', 'ethanegas', 1.83E-8, '0.000000000183', 17.0, 23.78687715, 16.0, 'VLE', 273.15, NULL), +(613, 'mercury', 'ethanegas', 1.94E-8, '0.000000000194', 18.0, 23.71792968, 17.0, 'VLE', 273.15, NULL), +(614, 'mercury', 'ethanegas', 2.73E-8, '0.000000000273', 19.0, 26.82056583, 18.0, 'VLE', 278.15, NULL), +(615, 'mercury', 'ethanegas', 2.85E-8, '0.000000000285', 20.0, 26.68267089, 19.0, 'VLE', 278.15, NULL), +(616, 'mercury', 'ethanegas', 4.17E-8, '0.000000000417', 21.0, 29.92320198, 20.0, 'VLE', 283.15, NULL), +(617, 'mercury', 'ethanegas', 4.15E-8, '0.000000000415', 22.0, 30.26793933, 21.0, 'VLE', 283.15, NULL), +(618, 'mercury', 'ethanegas', 6.26E-8, '0.000000000626', 23.0, 33.57741789, 22.0, 'VLE', 288.15, NULL), +(619, 'mercury', 'ethanegas', 6.27E-8, '0.000000000627', 24.0, 33.92215524, 23.0, 'VLE', 288.15, NULL), +(620, 'mercury', 'ethanegas', 9.15E-8, '0.000000000915', 25.0, 37.36952874, 24.0, 'VLE', 293.15, NULL), +(621, 'mercury', 'ethanesat', 5.14E-8, '0.000000000514', 25.0, 23.92477209, 24.0, 'VLE', 273.0, NULL), +(622, 'mercury', 'ethanesat', 7.25E-8, '0.000000000725', 26.0, 26.8895133, 25.0, 'VLE', 278.0, NULL), +(623, 'mercury', 'ethanesat', 1.01E-7, '0.00000000101', 27.0, 30.19899186, 26.0, 'VLE', 283.0, NULL), +(624, 'mercury', 'ethanesat', 1.38E-7, '0.00000000138', 28.0, 33.85320777, 27.0, 'VLE', 288.0, NULL), +(625, 'mercury', 'ethanesat', 1.81E-7, '0.00000000181', 29.0, 37.64531862, 28.0, 'VLE', 293.0, NULL), +(626, 'mercury', 'ethanesat', 1.88E-8, '0.000000000188', 33.0, 23.92477209, 32.0, 'VLE', 273.0, NULL), +(627, 'mercury', 'ethanesat', 2.78E-8, '0.000000000278', 34.0, 26.8895133, 33.0, 'VLE', 278.0, NULL), +(628, 'mercury', 'ethanesat', 4.16E-8, '0.000000000416', 35.0, 30.19899186, 34.0, 'VLE', 283.0, NULL), +(629, 'mercury', 'ethanesat', 6.28E-8, '0.000000000628', 36.0, 33.85320777, 35.0, 'VLE', 288.0, NULL), +(630, 'mercury', 'ethanesat', 9.13E-8, '0.000000000913', 37.0, 37.64531862, 36.0, 'VLE', 293.0, NULL), +(651, 'mercury', 'propane', 9.25E-8, '0.000000000925', 1.0, 48.263229, 0.0, 'VLE', 273.15, NULL), +(652, 'mercury', 'propane', 1.3E-7, '0.0000000013', 2.0, 48.263229, 1.0, 'VLE', 278.15, NULL), +(653, 'mercury', 'propane', 1.77E-7, '0.00000000177', 3.0, 48.263229, 2.0, 'VLE', 283.15, NULL), +(654, 'mercury', 'propane', 2.39E-7, '0.00000000239', 4.0, 48.263229, 3.0, 'VLE', 288.15, NULL), +(655, 'mercury', 'propane', 3.29E-7, '0.00000000329', 5.0, 48.263229, 4.0, 'VLE', 293.15, NULL), +(656, 'mercury', 'propane', 9.14E-8, '0.000000000914', 7.0, 68.94747, 6.0, 'VLE', 273.15, NULL), +(657, 'mercury', 'propane', 1.27E-7, '0.00000000127', 8.0, 68.94747, 7.0, 'VLE', 278.15, NULL), +(658, 'mercury', 'propane', 1.75E-7, '0.00000000175', 9.0, 68.94747, 8.0, 'VLE', 283.15, NULL), +(659, 'mercury', 'propane', 2.37E-7, '0.00000000237', 10.0, 68.94747, 9.0, 'VLE', 288.15, NULL), +(660, 'mercury', 'propane', 3.28E-7, '0.00000000328', 11.0, 68.94747, 10.0, 'VLE', 293.15, NULL), +(661, 'mercury', 'propanegas', 7.33E-8, '0.000000000733', 13.0, 4.27474314, 12.0, 'VLE', 273.15, NULL), +(662, 'mercury', 'propanegas', 1.03E-7, '0.00000000103', 14.0, 5.03316531, 13.0, 'VLE', 278.15, NULL), +(663, 'mercury', 'propanegas', 1.41E-7, '0.00000000141', 15.0, 5.86053495, 14.0, 'VLE', 283.15, NULL), +(664, 'mercury', 'propanegas', 1.91E-7, '0.00000000191', 16.0, 6.82579953, 15.0, 'VLE', 288.15, NULL), +(665, 'mercury', 'propanegas', 2.53E-7, '0.00000000253', 17.0, 7.99790652, 16.0, 'VLE', 293.15, NULL), +(666, 'mercury', 'CO2', 1.24E-8, '0.000000000124', 1.0, 82.736964, 0.0, 'VLE', 273.15, NULL), +(667, 'mercury', 'CO2', 1.83E-8, '0.000000000183', 2.0, 82.736964, 1.0, 'VLE', 278.15, NULL), +(668, 'mercury', 'CO2', 2.76E-8, '0.000000000276', 3.0, 82.736964, 2.0, 'VLE', 283.15, NULL), +(669, 'mercury', 'CO2', 4.06E-8, '0.000000000406', 4.0, 82.736964, 3.0, 'VLE', 288.15, NULL), +(670, 'mercury', 'CO2', 5.86E-8, '0.000000000586', 5.0, 82.736964, 4.0, 'VLE', 293.15, NULL); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, X1, STANDARDDEVIATION, X2, PRESSURE, VAPOURPRESSURE2, TYPE, TEMPERATURE, REFERENCE) VALUES +(671, 'mercury', 'CO2', 1.22E-8, '0.000000000122', 7.0, 103.421205, 6.0, 'VLE', 273.15, NULL), +(672, 'mercury', 'CO2', 1.79E-8, '0.000000000179', 8.0, 103.421205, 7.0, 'VLE', 278.15, NULL), +(673, 'mercury', 'CO2', 2.68E-8, '0.000000000268', 9.0, 103.421205, 8.0, 'VLE', 283.15, NULL), +(674, 'mercury', 'CO2', 3.93E-8, '0.000000000393', 10.0, 103.421205, 9.0, 'VLE', 288.15, NULL), +(675, 'mercury', 'CO2', 5.71E-8, '0.000000000571', 11.0, 103.421205, 10.0, 'VLE', 293.15, NULL), +(676, 'mercury', 'CO2gas', 1.08E-8, '0.000000000108', 13.0, 34.74952488, 12.0, 'VLE', 273.15, NULL), +(677, 'mercury', 'CO2gas', 1.57E-8, '0.000000000157', 14.0, 39.50690031, 13.0, 'VLE', 278.15, NULL), +(678, 'mercury', 'CO2gas', 2.31E-8, '0.000000000231', 15.0, 44.74690803, 14.0, 'VLE', 283.15, NULL), +(679, 'mercury', 'CO2gas', 3.36E-8, '0.000000000336', 16.0, 50.53849551, 15.0, 'VLE', 288.15, NULL), +(680, 'mercury', 'CO2gas', 4.91E-8, '0.000000000491', 17.0, 57.01955769, 16.0, 'VLE', 293.15, NULL), +(681, 'mercury', 'nitrogen', 4.08E-8, '0.000000000408', 1.0, 6.846483771, 0.0, 'VLE', 273.0, NULL), +(682, 'mercury', 'nitrogen', 4.0E-8, '0.0000000004', 2.0, 6.96369447, 1.0, 'VLE', 273.0, NULL), +(683, 'mercury', 'nitrogen', 1.71E-8, '0.000000000171', 3.0, 17.09897256, 2.0, 'VLE', 273.0, NULL), +(684, 'mercury', 'nitrogen', 8.97E-9, '0.0000000000897', 4.0, 34.81847235, 3.0, 'VLE', 273.0, NULL), +(685, 'mercury', 'nitrogen', 6.48E-9, '0.0000000000648', 5.0, 51.77954997, 4.0, 'VLE', 273.0, NULL), +(686, 'mercury', 'nitrogen', 5.31E-9, '0.0000000000531', 6.0, 69.29220735, 5.0, 'VLE', 273.0, NULL), +(707, 'mercury', 'i-butane', 5.25E-8, '0.000000000525', 0.9999999475, 48.263229, 48.263229, 'VLE', 263.15, NULL), +(708, 'mercury', 'i-butane', 5.03E-8, '0.000000000503', 0.9999999497, 82.736964, 82.736964, 'VLE', 263.15, NULL), +(709, 'mercury', 'i-butane', 7.5E-8, '0.00000000075', 0.999999925, 48.263229, 48.263229, 'VLE', 268.15, NULL), +(710, 'mercury', 'i-butane', 7.35E-8, '0.000000000735', 0.9999999265, 82.736964, 82.736964, 'VLE', 268.15, NULL), +(711, 'mercury', 'i-butane', 1.07E-7, '0.00000000107', 0.999999893, 48.263229, 48.263229, 'VLE', 273.15, NULL), +(712, 'mercury', 'i-butane', 1.06E-7, '0.00000000106', 0.999999894, 82.736964, 82.736964, 'VLE', 273.15, NULL), +(713, 'mercury', 'i-butane', 1.53E-7, '0.00000000153', 0.999999847, 48.263229, 48.263229, 'VLE', 278.15, NULL), +(714, 'mercury', 'i-butane', 1.48E-7, '0.00000000148', 0.999999852, 82.736964, 82.736964, 'VLE', 278.15, NULL), +(715, 'mercury', 'i-butane', 2.09E-7, '0.00000000209', 0.999999791, 48.263229, 48.263229, 'VLE', 283.15, NULL), +(716, 'mercury', 'i-butane', 2.03E-7, '0.00000000203', 0.999999797, 82.736964, 82.736964, 'VLE', 283.15, NULL), +(717, 'mercury', 'n-pentane', 4.43E-8, '0.000000000443', 1.0, 17.85739473, 0.0, 'VLE', 258.15, NULL), +(718, 'mercury', 'n-pentane', 6.82E-8, '0.000000000682', 1.0, 18.40897449, 1.0, 'VLE', 263.15, NULL), +(719, 'mercury', 'n-pentane', 9.22E-8, '0.000000000922', 1.0, 18.47792196, 2.0, 'VLE', 268.15, NULL), +(720, 'mercury', 'n-pentane', 1.32E-7, '0.00000000132', 1.0, 18.40897449, 3.0, 'VLE', 273.15, NULL), +(721, 'mercury', 'n-pentane', 1.71E-7, '0.00000000171', 1.0, 17.37476244, 4.0, 'VLE', 278.15, NULL), +(722, 'mercury', 'n-pentane', 2.44E-7, '0.00000000244', 1.0, 18.68476437, 5.0, 'VLE', 283.15, NULL), +(723, 'mercury', 'n-pentane', 3.4E-7, '0.0000000034', 1.0, 22.40792775, 6.0, 'VLE', 288.15, NULL), +(724, 'mercury', 'n-pentane', 4.64E-7, '0.00000000464', 1.0, 20.684241, 7.0, 'VLE', 293.15, NULL); +CREATE CACHED TABLE PUBLIC.BINARYSOLUBILITYDATAEINAR( + ID DOUBLE NOT NULL, + COMPONENTSOLUTE VARCHAR(255) DEFAULT NULL, + COMPONENTSOLVENT VARCHAR(255) DEFAULT NULL, + FIELD4 DOUBLE DEFAULT NULL, + X1 DOUBLE DEFAULT NULL, + FIELD6 DOUBLE DEFAULT NULL, + STANDARDDEVIATION DOUBLE DEFAULT NULL, + X2 VARCHAR(255) DEFAULT NULL, + PRESSURE1 DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + VAPOURPRESSURE2 VARCHAR(255) DEFAULT NULL, + FIELD12 DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL, + FIELD15 VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.BINARYSOLUBILITYDATAEINAR ADD CONSTRAINT PUBLIC.CONSTRAINT_60 PRIMARY KEY(ID); +-- 90 +/- SELECT COUNT(*) FROM PUBLIC.BINARYSOLUBILITYDATAEINAR; +INSERT INTO PUBLIC.BINARYSOLUBILITYDATAEINAR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, FIELD4, X1, FIELD6, STANDARDDEVIATION, X2, PRESSURE1, PRESSURE, VAPOURPRESSURE2, FIELD12, TEMPERATURE, REFERENCE, FIELD15) VALUES +(1.0, 'Methane', 'Water', 35.6, 3.56E-5, 1.6, 1.6E-6, NULL, 40.0, 4000000.0, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(2.0, 'Methane', 'Water', 77.3, 7.73E-5, 0.45, 4.5E-7, NULL, 40.0, 4000000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(3.0, 'Methane', 'Water', 156.5, 1.565E-4, 0.2, 2.0E-7, NULL, 40.0, 4000000.0, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(4.0, 'Methane', 'Water', 313.9, 3.139E-4, 1.29, 1.29E-6, NULL, 40.0, 4000000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(5.0, 'Methane', 'Water', 593.5, 5.935E-4, 1.17, 1.17E-6, NULL, 40.0, 4000000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(6.0, 'Methane', 'Water', 303.1, 3.031E-4, 0.63, 6.3E-7, NULL, 100.0, 1.0E7, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(7.0, 'Methane', 'Water', 173.8, 1.738E-4, 2.22, 2.22E-6, NULL, 100.0, 1.0E7, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(8.0, 'Methane', 'Water', 428.1, 4.281E-4, 1.32, 1.32E-6, NULL, 60.0, 6000000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(9.0, 'Methane', 'Water', 240.2, 2.402E-4, 2.45, 2.45E-6, NULL, 60.0, 6000000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(10.0, 'Methane', 'Water', 134.7, 1.347E-4, 1.78, 1.78E-6, NULL, 60.0, 6000000.0, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(11.0, 'Methane', 'Water', 415.7, 4.157E-4, 8.97, 8.97E-6, NULL, 15.0, 1500000.0, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(12.0, 'Methane', 'Water', 203.1, 2.031E-4, 2.44, 2.44E-6, NULL, 15.0, 1500000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(13.0, 'Methane', 'Water', 87.8, 8.78E-5, 1.3, 1.3E-6, NULL, 15.0, 1500000.0, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(14.0, 'Methane', 'Water', 795.8, 7.958E-4, 5.88, 5.88E-6, NULL, 15.0, 1500000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(15.0, 'Methane', 'Water', 1502.9, 0.0015029, 34.0, 3.4E-5, NULL, 15.0, 1500000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(16.0, 'Methane', 'Water', 853.0, 8.53E-4, 14.7, 1.47E-5, NULL, 15.0, 1500000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(17.0, 'Methane', 'Water', 254.4, 2.544E-4, 3.77, 3.77E-6, NULL, 180.0, 1.8E7, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(18.0, 'Methane', 'Water', 150.4, 1.504E-4, 3.89, 3.89E-6, NULL, 180.0, 1.8E7, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(19.0, 'Methane', 'Water', 137.3, 1.373E-4, 3.36, 3.36E-6, NULL, 140.0, 1.4E7, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(20.0, 'Methane', 'Water', 39.8, 3.98E-5, 0.69, 6.9E-7, NULL, 140.0, 1.4E7, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(21.0, 'Methane', 'Water', 50.6, 5.06E-5, 1.16, 1.16E-6, NULL, 140.0, 1.4E7, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(22.0, 'Methane', 'Water', 96.8, 9.68E-5, 0.96, 9.6E-7, NULL, 100.0, 1.0E7, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(23.0, 'Methane', 'Water', 46.9, 4.69E-5, 0.9, 9.0E-7, NULL, 100.0, 1.0E7, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(24.0, 'Methane', 'Water', 30.5, 3.05E-5, 0.31, 3.1E-7, NULL, 60.0, 6000000.0, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(25.0, 'Methane', 'Water', 55.2, 5.52E-5, 0.33, 3.3E-7, NULL, 60.0, 6000000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(26.0, 'Nitrogen', 'Water', 316.1, 3.161E-4, 0.84, 8.4E-7, NULL, 50.0, 5000000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(27.0, 'Nitrogen', 'Water', 222.8, 2.228E-4, 1.72, 1.72E-6, NULL, 50.0, 5000000.0, NULL, 5.0, 278.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(28.0, 'Nitrogen', 'Water', 60.8, 6.08E-5, 0.93, 9.3E-7, NULL, 75.0, 7500000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATAEINAR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, FIELD4, X1, FIELD6, STANDARDDEVIATION, X2, PRESSURE1, PRESSURE, VAPOURPRESSURE2, FIELD12, TEMPERATURE, REFERENCE, FIELD15) VALUES +(29.0, 'Nitrogen', 'Water', 41.0, 4.1E-5, 0.36, 3.6E-7, NULL, 50.0, 5000000.0, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(30.0, 'Nitrogen', 'Water', 66.0, 6.6E-5, 1.15, 1.15E-6, NULL, 50.0, 5000000.0, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(31.0, 'Nitrogen', 'Water', 345.6, 3.456E-4, 4.54, 4.54E-6, NULL, 5.0, 500000.0, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(32.0, 'Nitrogen', 'Water', 1466.8, 0.0014668, 15.3, 1.53E-5, NULL, 5.0, 500000.0, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(33.0, 'Nitrogen', 'Water', 296.0, 2.96E-4, 3.6, 3.6E-6, NULL, 25.0, 2500000.0, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(34.0, 'Nitrogen', 'Water', 43.6, 4.36E-5, 0.44, 4.4E-7, NULL, 50.0, 5000000.0, NULL, -15.0, 258.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(35.0, 'Nitrogen', 'Water', 32.0, 3.2E-5, 0.23, 2.3E-7, NULL, 75.0, 7500000.0, NULL, -15.0, 258.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(36.0, 'Nitrogen', 'Water', 629.0, 6.29E-4, 3.48, 3.48E-6, NULL, 5.0, 500000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(37.0, 'Nitrogen', 'Water', 903.8, 9.038E-4, 10.9, 1.09E-5, NULL, 5.0, 500000.0, NULL, -5.0, 268.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(38.0, 'Nitrogen', 'Water', 1839.3, 0.0018393, 27.5, 2.75E-5, NULL, 5.0, 500000.0, NULL, 5.0, 278.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(39.0, 'Nitrogen', 'Water', 2556.8, 0.0025568, 22.3, 2.23E-5, NULL, 5.0, 500000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(40.0, 'Nitrogen', 'Water', 3477.3, 0.0034773, 20.2, 2.02E-5, NULL, 5.0, 500000.0, NULL, 15.0, 288.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(41.0, 'Nitrogen', 'Water', 4723.6, 0.0047236, 95.3, 9.53E-5, NULL, 5.0, 500000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(42.0, 'Nitrogen', 'Water', 985.2, 9.852E-4, 22.2, 2.22E-5, NULL, 25.0, 2500000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(43.0, 'Nitrogen', 'Water', 721.8, 7.218E-4, 14.8, 1.48E-5, NULL, 25.0, 2500000.0, NULL, 15.0, 288.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(44.0, 'Nitrogen', 'Water', 522.8, 5.228E-4, 3.16, 3.16E-6, NULL, 25.0, 2500000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(45.0, 'Nitrogen', 'Water', 530.3, 5.303E-4, 2.45, 2.45E-6, NULL, 50.0, 5000000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(46.0, 'Nitrogen', 'Water', 391.2, 3.912E-4, 1.7, 1.7E-6, NULL, 50.0, 5000000.0, NULL, 15.0, 288.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(47.0, 'Nitrogen', 'Water', 227.9, 2.279E-4, 2.26, 2.26E-6, NULL, 75.0, 7500000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(48.0, 'Nitrogen', 'Water', 181.0, 1.81E-4, 5.0, 5.0E-6, NULL, 25.0, 2500000.0, NULL, -5.0, 268.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(49.0, 'Nitrogen', 'Water', 138.5, 1.385E-4, 5.42, 5.42E-6, NULL, 25.0, 2500000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(50.0, 'Nitrogen', 'Water', 65.3, 6.53E-5, 0.8, 8.0E-7, NULL, 50.0, 5000000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(51.0, 'Nitrogen', 'Water', 93.5, 9.35E-5, 1.16, 1.16E-6, NULL, 50.0, 5000000.0, NULL, -5.0, 268.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(52.0, 'Nitrogen', 'Water', 142.4, 1.424E-4, 4.97, 4.97E-6, NULL, 50.0, 5000000.0, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(53.0, 'Nitrogen', 'Water', 182.3, 1.823E-4, 1.86, 1.86E-6, NULL, 100.0, 1.0E7, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(54.0, 'Nitrogen', 'Water', 309.5, 3.095E-4, 2.84, 2.84E-6, NULL, 100.0, 1.0E7, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(55.0, 'Nitrogen', 'Water', 101.1, 1.011E-4, 2.89, 2.89E-6, NULL, 100.0, 1.0E7, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(56.0, 'Nitrogen', 'Water', 52.4, 5.24E-5, 0.46, 4.6E-7, NULL, 100.0, 1.0E7, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATAEINAR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, FIELD4, X1, FIELD6, STANDARDDEVIATION, X2, PRESSURE1, PRESSURE, VAPOURPRESSURE2, FIELD12, TEMPERATURE, REFERENCE, FIELD15) VALUES +(57.0, 'Nitrogen', 'Water', 27.3, 2.73E-5, 0.4, 4.0E-7, NULL, 100.0, 1.0E7, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(58.0, 'Nitrogen', 'Water', 17.5, 1.75E-5, 0.07, 7.0E-8, NULL, 200.0, 2.0E7, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(59.0, 'Nitrogen', 'Water', 30.1, 3.01E-5, 0.15, 1.5E-7, NULL, 200.0, 2.0E7, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(60.0, 'Nitrogen', 'Water', 59.5, 5.95E-5, 0.81, 8.1E-7, NULL, 200.0, 2.0E7, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(61.0, 'Nitrogen', 'Water', 105.0, 1.05E-4, 0.62, 6.2E-7, NULL, 200.0, 2.0E7, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(62.0, 'Nitrogen', 'Water', 390.1, 3.901E-4, 3.81, 3.81E-6, NULL, 75.0, 7500000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(63.0, 'Nitrogen', 'Water', 35.4, 3.54E-5, 1.1, 1.1E-6, NULL, 75.0, 7500000.0, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(64.0, 'Nitrogen', 'Water', 85.9, 8.59E-5, 1.2, 1.2E-6, NULL, 25.0, 2500000.0, NULL, -15.0, 258.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(65.0, 'Nitrogen', 'Water', 407.5, 4.075E-4, 2.7, 2.7E-6, NULL, 5.0, 500000.0, NULL, -15.0, 258.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(66.0, 'Nitrogen', 'Water', 428.4, 4.284E-4, 3.0, 3.0E-6, NULL, 25.0, 2500000.0, NULL, 5.0, 278.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(67.0, 'CO2', 'Water', 1409.4, 0.0014094, 24.1, 2.41E-5, NULL, 5.0, 500000.0, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(68.0, 'CO2', 'Water', 948.0, 9.48E-4, 5.5, 5.5E-6, NULL, 5.0, 500000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(69.0, 'CO2', 'Water', 634.2, 6.342E-4, 1.85, 1.85E-6, NULL, 5.0, 500000.0, NULL, -15.0, 258.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(70.0, 'CO2', 'Water', 2615.9, 0.0026159, 13.6, 1.36E-5, NULL, 5.0, 500000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(71.0, 'CO2', 'Water', 588.1, 5.881E-4, 15.5, 1.55E-5, NULL, 40.0, 4000000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(72.0, 'CO2', 'Water', 900.0, 9.0E-4, 3.05, 3.05E-6, NULL, 40.0, 4000000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(73.0, 'CO2', 'Water', 936.0, 9.36E-4, 5.93, 5.93E-6, NULL, 15.0, 1500000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(74.0, 'CO2', 'Water', 1605.9, 0.0016059, 6.1, 6.1E-6, NULL, 15.0, 1500000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(75.0, 'CO2', 'Water', 1239.0, 0.001239, 3.33, 3.33E-6, NULL, 15.0, 1500000.0, NULL, 15.0, 288.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(76.0, 'CO2', 'Water', 409.9, 4.099E-4, 0.86, 8.6E-7, NULL, 15.0, 1500000.0, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(77.0, 'CO2', 'Water', 257.3, 2.573E-4, 1.55, 1.55E-6, NULL, 15.0, 1500000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(78.0, 'CO2', 'Water', 86.1, 8.61E-5, 1.21, 1.21E-6, NULL, 15.0, 1500000.0, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(79.0, 'CO3', 'Water', 553.7, 5.537E-4, 4.68, 4.68E-6, NULL, 40.0, 4000000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(80.0, 'CO4', 'Water', 867.7, 8.677E-4, 23.6, 2.36E-5, NULL, 40.0, 4000000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(81.0, 'CO5', 'Water', 118.9, 1.189E-4, 3.05, 3.05E-6, NULL, 15.0, 1500000.0, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(82.0, 'CO6', 'Water', 203.0, 2.03E-4, 4.82, 4.82E-6, NULL, 15.0, 1500000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(83.0, 'CO7', 'Water', 435.1, 4.351E-4, 8.34, 8.34E-6, NULL, 15.0, 1500000.0, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(84.0, 'CO8', 'Water', 843.6, 8.436E-4, 20.1, 2.01E-5, NULL, 15.0, 1500000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL); +INSERT INTO PUBLIC.BINARYSOLUBILITYDATAEINAR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT, FIELD4, X1, FIELD6, STANDARDDEVIATION, X2, PRESSURE1, PRESSURE, VAPOURPRESSURE2, FIELD12, TEMPERATURE, REFERENCE, FIELD15) VALUES +(85.0, 'CO9', 'Water', 1578.5, 0.0015785, 10.6, 1.06E-5, NULL, 15.0, 1500000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(86.0, 'CO10', 'Water', 285.6, 2.856E-4, 5.07, 5.07E-6, NULL, 5.0, 500000.0, NULL, -20.0, 253.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(87.0, 'CO11', 'Water', 558.3, 5.583E-4, 17.3, 1.73E-5, NULL, 5.0, 500000.0, NULL, -10.0, 263.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(88.0, 'CO12', 'Water', 1210.0, 0.00121, 14.9, 1.49E-5, NULL, 5.0, 500000.0, NULL, 0.0, 273.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(89.0, 'CO13', 'Water', 2404.6, 0.0024046, 31.7, 3.17E-5, NULL, 5.0, 500000.0, NULL, 10.0, 283.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL), +(90.0, 'CO14', 'Water', 4534.0, 0.004534, 46.7, 4.67E-5, NULL, 5.0, 500000.0, NULL, 20.0, 293.15, STRINGDECODE('Fr\u00f8yna, 2004'), NULL); +CREATE CACHED TABLE PUBLIC.BINARYSYSTEMVISCOSITY( + ID INT NOT NULL, + COMPONENTNAME1 VARCHAR(50) NOT NULL, + COMPONENTNAME2 VARCHAR(50) NOT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + VISCOSITY DOUBLE DEFAULT '0', + STDDEV DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + PHASETYPE VARCHAR(50) DEFAULT NULL, + COMMENT VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.BINARYSYSTEMVISCOSITY ADD CONSTRAINT PUBLIC.CONSTRAINT_4 PRIMARY KEY(ID); +-- 28 +/- SELECT COUNT(*) FROM PUBLIC.BINARYSYSTEMVISCOSITY; +INSERT INTO PUBLIC.BINARYSYSTEMVISCOSITY(ID, COMPONENTNAME1, COMPONENTNAME2, X1, X2, VISCOSITY, STDDEV, TEMPERATURE, PRESSURE, PHASETYPE, COMMENT, REFERENCE) VALUES +(46, '2', '1', 0.0079, 0.9921, 1.059, 0.01059, 298.15, 1.01325, '2', 'mPa*s', '30'), +(47, '2', '1', 0.0176, 0.9824, 1.301, 0.01301, 298.15, 1.01325, '2', 'mPa*s', '30'), +(48, '2', '1', 0.0364, 0.9636, 1.901, 0.01901, 298.15, 1.01325, '2', 'mPa*s', '30'), +(49, '2', '1', 0.0612, 0.9388, 3.057, 0.03057, 298.15, 1.01325, '2', 'mPa*s', '30'), +(50, '2', '1', 0.0923, 0.9077, 5.172, 0.05172, 298.15, 1.01325, '2', 'mPa*s', '30'), +(51, '2', '1', 0.1322, 0.8678, 9.172, 0.09172, 298.15, 1.01325, '2', 'mPa*s', '30'), +(52, '2', '1', 0.1859, 0.8141, 17.02, 0.1702, 298.15, 1.01325, '2', 'mPa*s', '30'), +(53, '2', '1', 0.2526, 0.7474, 32.11, 0.3211, 298.15, 1.01325, '2', 'mPa*s', '30'), +(54, '2', '1', 0.3021, 0.6979, 43.51, 0.4351, 298.15, 1.01325, '2', 'mPa*s', '30'), +(55, '2', '1', 0.3658, 0.6342, 56.06, 0.5606, 298.15, 1.01325, '2', 'mPa*s', '30'), +(56, '2', '1', 0.5026, 0.4974, 74.16, 0.7416, 298.15, 1.01325, '2', 'mPa*s', '30'), +(57, '2', '1', 0.5653, 0.4347, 81.05, 0.8105, 298.15, 1.01325, '2', 'mPa*s', '30'), +(58, '2', '1', 0.696, 0.304, 82.37, 0.8237, 298.15, 1.01325, '2', 'mPa*s', '30'), +(59, '2', '1', 0.8989, 0.1011, 78.87, 0.7887, 298.15, 1.01325, '2', 'mPa*s', '30'), +(62, '2', '1', 0.0079, 0.9921, 0.756, 0.00756, 313.15, 1.01325, '2', 'mPa*s', '30'), +(63, '2', '1', 0.0176, 0.9824, 0.902, 0.00902, 313.15, 1.01325, '2', 'mPa*s', '30'), +(64, '2', '1', 0.0364, 0.9636, 1.26, 0.0126, 313.15, 1.01325, '2', 'mPa*s', '30'), +(65, '2', '1', 0.0612, 0.9388, 1.893, 0.01893, 313.15, 1.01325, '2', 'mPa*s', '30'), +(66, '2', '1', 0.0923, 0.9077, 2.995, 0.02995, 313.15, 1.01325, '2', 'mPa*s', '30'), +(67, '2', '1', 0.1322, 0.8678, 5.219, 0.05219, 313.15, 1.01325, '2', 'mPa*s', '30'), +(68, '2', '1', 0.1859, 0.8141, 8.843, 0.08843, 313.15, 1.01325, '2', 'mPa*s', '30'), +(69, '2', '1', 0.2526, 0.7474, 14.32, 0.1432, 313.15, 1.01325, '2', 'mPa*s', '30'), +(70, '2', '1', 0.3021, 0.6979, 18.62, 0.1862, 313.15, 1.01325, '2', 'mPa*s', '30'), +(71, '2', '1', 0.3658, 0.6342, 23.58, 0.2358, 313.15, 1.01325, '2', 'mPa*s', '30'), +(72, '2', '1', 0.5026, 0.4974, 31.33, 0.3133, 313.15, 1.01325, '2', 'mPa*s', '30'), +(73, '2', '1', 0.5653, 0.4347, 33.63, 0.3363, 313.15, 1.01325, '2', 'mPa*s', '30'), +(74, '2', '1', 0.696, 0.304, 35.36, 0.3536, 313.15, 1.01325, '2', 'mPa*s', '30'), +(75, '2', '1', 0.8989, 0.1011, 34.89, 0.3489, 313.15, 1.01325, '2', 'mPa*s', '30'); +CREATE CACHED TABLE PUBLIC.CH4ACOHDATA( + ID INT DEFAULT NULL, + X DOUBLE DEFAULT NULL, + Y DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 46 +/- SELECT COUNT(*) FROM PUBLIC.CH4ACOHDATA; +INSERT INTO PUBLIC.CH4ACOHDATA(ID, X, Y, TEMPERATURE, PRESSURE, REFERENCE) VALUES +(1, 0.0, 0.0, 298.16, 0.02096, 'Jonasson, 1998'), +(2, 0.0016, 0.907, 298.16, 2.8, 'Jonasson, 1998'), +(3, 0.0022, 0.932, 298.16, 3.8, 'Jonasson, 1998'), +(4, 0.0029, 0.952, 298.16, 5.2, 'Jonasson, 1998'), +(5, 0.0042, 0.959, 298.16, 7.3, 'Jonasson, 1998'), +(6, 0.0059, 0.962, 298.16, 10.2, 'Jonasson, 1998'), +(7, 0.0079, 0.973, 298.16, 13.6, 'Jonasson, 1998'), +(8, 0.0101, 0.975, 298.16, 17.8, 'Jonasson, 1998'), +(9, 0.0131, 0.978, 298.16, 23.2, 'Jonasson, 1998'), +(10, 0.0156, 0.978, 298.16, 28.2, 'Jonasson, 1998'), +(11, 0.0179, 0.979, 298.16, 34.2, 'Jonasson, 1998'), +(12, 0.0212, 0.98, 298.16, 39.3, 'Jonasson, 1998'), +(13, 0.024, 0.981, 298.16, 45.7, 'Jonasson, 1998'), +(14, 0.0278, 0.983, 298.16, 50.8, 'Jonasson, 1998'), +(15, 0.0318, 0.983, 298.16, 55.4, 'Jonasson, 1998'), +(16, 0.0346, 0.984, 298.16, 61.9, 'Jonasson, 1998'), +(17, 0.0, 0.0, 323.16, 0.076, 'Jonasson, 1998'), +(18, 0.0015, 0.905, 323.16, 2.6, 'Jonasson, 1998'), +(19, 0.0023, 0.938, 323.16, 4.2, 'Jonasson, 1998'), +(20, 0.0032, 0.958, 323.16, 6.2, 'Jonasson, 1998'), +(21, 0.0048, 0.968, 323.16, 9.2, 'Jonasson, 1998'), +(22, 0.0069, 0.971, 323.16, 13.0, 'Jonasson, 1998'), +(23, 0.0088, 0.978, 323.16, 16.8, 'Jonasson, 1998'), +(24, 0.0114, 0.98, 323.16, 21.6, 'Jonasson, 1998'), +(25, 0.0163, 0.984, 323.16, 30.4, 'Jonasson, 1998'), +(26, 0.0189, 0.982, 323.16, 35.9, 'Jonasson, 1998'), +(27, 0.0221, 0.981, 323.16, 41.4, 'Jonasson, 1998'), +(28, 0.0248, 0.98, 323.16, 46.9, 'Jonasson, 1998'), +(29, 0.028, 0.982, 323.16, 52.6, 'Jonasson, 1998'), +(30, 0.0313, 0.98, 323.16, 58.0, 'Jonasson, 1998'), +(31, 0.0347, 0.979, 323.16, 64.1, 'Jonasson, 1998'), +(32, 0.0382, 0.977, 323.16, 70.2, 'Jonasson, 1998'), +(33, 0.0, 0.0, 348.16, 0.2242, 'Jonasson, 1998'), +(34, 0.0012, 0.859, 348.16, 3.1, 'Jonasson, 1998'), +(35, 0.0029, 0.898, 348.16, 6.1, 'Jonasson, 1998'), +(36, 0.0043, 0.919, 348.16, 8.9, 'Jonasson, 1998'), +(37, 0.007, 0.947, 348.16, 13.4, 'Jonasson, 1998'), +(38, 0.009, 0.953, 348.16, 18.1, 'Jonasson, 1998'), +(39, 0.0119, 0.963, 348.16, 23.3, 'Jonasson, 1998'), +(40, 0.014, 0.971, 348.16, 28.3, 'Jonasson, 1998'), +(41, 0.0176, 0.971, 348.16, 34.3, 'Jonasson, 1998'), +(42, 0.02, 0.972, 348.16, 39.9, 'Jonasson, 1998'), +(43, 0.0225, 0.973, 348.16, 45.7, 'Jonasson, 1998'), +(44, 0.0256, 0.975, 348.16, 51.4, 'Jonasson, 1998'), +(45, 0.0293, 0.975, 348.16, 57.2, 'Jonasson, 1998'), +(46, 0.0314, 0.974, 348.16, 62.5, 'Jonasson, 1998'); +CREATE CACHED TABLE PUBLIC.CH4MDEA( + ID INT DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + X1 DOUBLE DEFAULT NULL, + X2 DOUBLE DEFAULT NULL, + X3 DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 44 +/- SELECT COUNT(*) FROM PUBLIC.CH4MDEA; +INSERT INTO PUBLIC.CH4MDEA(ID, TEMPERATURE, PRESSURE, X1, X2, X3, REFERENCE) VALUES +(1, 298.16, 132.1, 0.003030241, 0.92278354, 0.074186218, 'Otto, 1998'), +(2, 298.16, 112.1, 0.002768686, 0.923025633, 0.074205681, 'Otto, 1998'), +(3, 298.16, 90.7, 0.002329066, 0.92343254, 0.074238394, 'Otto, 1998'), +(4, 298.16, 71.1, 0.001995916, 0.923740899, 0.074263184, 'Otto, 1998'), +(5, 298.16, 52.2, 0.001497048, 0.924202646, 0.074300306, 'Otto, 1998'), +(6, 298.16, 31.7, 9.21203E-4, 0.924735642, 0.074343155, 'Otto, 1998'), +(7, 298.16, 11.8, 4.36571E-4, 0.925184211, 0.074379218, 'Otto, 1998'), +(8, 298.16, 3.37, 1.17478E-4, 0.92547956, 0.074402962, 'Otto, 1998'), +(9, 298.16, 0.95, 3.34584E-5, 0.925557328, 0.074409214, 'Otto, 1998'), +(10, 313.16, 127.8, 0.002657088, 0.92238571, 0.074957202, 'Otto, 1998'), +(11, 313.16, 105.5, 0.002302775, 0.922713393, 0.074983831, 'Otto, 1998'), +(12, 313.16, 88.2, 0.002027309, 0.922968157, 0.075004534, 'Otto, 1998'), +(13, 313.16, 70.2, 0.001677655, 0.923291532, 0.075030813, 'Otto, 1998'), +(14, 313.16, 51.2, 0.001289431, 0.923650578, 0.075059991, 'Otto, 1998'), +(15, 313.16, 33.5, 9.00906E-4, 0.924009903, 0.075089191, 'Otto, 1998'), +(16, 313.16, 9.31, 2.58665E-4, 0.924603875, 0.07513746, 'Otto, 1998'), +(17, 313.16, 2.53, 7.58205E-5, 0.924772977, 0.075151202, 'Otto, 1998'), +(18, 343.16, 112.1, 0.002441008, 0.920661921, 0.076897072, 'Otto, 1998'), +(19, 343.16, 80.3, 0.001860162, 0.921197992, 0.076941846, 'Otto, 1998'), +(20, 343.16, 63.7, 0.001523168, 0.921509009, 0.076967824, 'Otto, 1998'), +(21, 343.16, 44.4, 0.001147318, 0.921855886, 0.076996796, 'Otto, 1998'), +(22, 343.16, 24.7, 6.83551E-4, 0.922283903, 0.077032546, 'Otto, 1998'), +(23, 343.16, 8.62, 2.41284E-4, 0.922692078, 0.077066638, 'Otto, 1998'), +(24, 343.16, 2.44, 6.32355E-5, 0.922856402, 0.077080363, 'Otto, 1998'), +(25, 348.16, 131.1, 0.002912616, 0.919845904, 0.07724148, 'Otto, 1998'), +(26, 348.16, 113.0, 0.002604117, 0.920130504, 0.077265378, 'Otto, 1998'), +(27, 348.16, 93.8, 0.002256828, 0.92045089, 0.077292282, 'Otto, 1998'), +(28, 348.16, 72.9, 0.001811429, 0.920861785, 0.077326786, 'Otto, 1998'), +(29, 348.16, 52.2, 0.001399145, 0.921242131, 0.077358724, 'Otto, 1998'), +(30, 348.16, 25.2, 7.46526E-4, 0.921844193, 0.077409281, 'Otto, 1998'), +(31, 348.16, 8.48, 2.41904E-4, 0.922309724, 0.077448372, 'Otto, 1998'), +(32, 348.16, 2.44, 6.82411E-5, 0.922469934, 0.077461825, 'Otto, 1998'), +(33, 373.16, 111.4, 0.002911661, 0.917656104, 0.079432235, 'Otto, 1998'), +(34, 373.16, 86.4, 0.00227878, 0.918238567, 0.079482653, 'Otto, 1998'), +(35, 373.16, 59.5, 0.001736043, 0.918738068, 0.07952589, 'Otto, 1998'), +(36, 373.16, 30.5, 9.37744E-4, 0.919472771, 0.079589486, 'Otto, 1998'), +(37, 373.16, 10.0, 3.0496E-4, 0.920055144, 0.079639896, 'Otto, 1998'), +(38, 373.16, 3.19, 7.58664E-5, 0.920265987, 0.079658146, 'Otto, 1998'), +(39, 403.16, 109.9, 0.003369113, 0.913911782, 0.082719105, 'Otto, 1998'), +(40, 403.16, 89.1, 0.002949216, 0.914296829, 0.082753956, 'Otto, 1998'), +(41, 403.16, 67.1, 0.002247724, 0.914940097, 0.082812179, 'Otto, 1998'), +(42, 403.16, 34.2, 0.001213394, 0.915888579, 0.082898027, 'Otto, 1998'), +(43, 403.16, 10.47, 3.40575E-4, 0.916688955, 0.08297047, 'Otto, 1998'), +(44, 403.16, 4.7, 9.13708E-5, 0.916917476, 0.082991153, 'Otto, 1998'); +CREATE CACHED TABLE PUBLIC.CO2ACOHDATA( + ID DOUBLE DEFAULT NULL, + X DOUBLE DEFAULT '0', + Y DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + SDP VARCHAR(50) DEFAULT NULL, + SDT VARCHAR(50) DEFAULT NULL, + SDX VARCHAR(50) DEFAULT NULL, + SDY VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 113 +/- SELECT COUNT(*) FROM PUBLIC.CO2ACOHDATA; +INSERT INTO PUBLIC.CO2ACOHDATA(ID, X, Y, TEMPERATURE, PRESSURE, SDP, SDT, SDX, SDY, REFERENCE) VALUES +(21.0, 0.0405, 0.961, 323.16, 5.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(22.0, 0.0533, 0.959, 323.16, 7.7, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(23.0, 0.0682, 0.968, 323.16, 9.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(24.0, 0.0847, 0.97, 323.16, 12.2, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(25.0, 0.1051, 0.967, 323.16, 14.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(26.0, 0.1283, 0.962, 323.16, 17.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(27.0, 0.1493, 0.975, 323.16, 20.5, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(28.0, 0.1816, 0.975, 323.16, 24.6, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(29.0, 0.2139, 0.978, 323.16, 28.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(30.0, 0.2557, 0.979, 323.16, 33.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(31.0, 0.2999, 0.979, 323.16, 38.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(32.0, 0.3465, 0.978, 323.16, 44.1, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(33.0, 0.4047, 0.977, 323.16, 50.1, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(34.0, 0.4723, 0.978, 323.16, 56.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(35.0, 0.5392, 0.973, 323.16, 62.9, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(36.0, 0.601, 0.971, 323.16, 68.6, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(37.0, 0.6642, 0.953, 323.16, 74.1, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(38.0, 0.0, 0.0, 348.16, 0.2242, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(39.0, 0.012, 0.878, 348.16, 2.7, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(40.0, 0.0174, 0.926, 348.16, 3.9, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(41.0, 0.0254, 0.933, 348.16, 5.6, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(42.0, 0.0354, 0.954, 348.16, 7.7, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(43.0, 0.0504, 0.958, 348.16, 10.9, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(44.0, 0.0693, 0.958, 348.16, 14.5, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(45.0, 0.0901, 0.973, 348.16, 18.5, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(46.0, 0.1146, 0.975, 348.16, 23.5, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(47.0, 0.1452, 0.978, 348.16, 28.9, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(48.0, 0.1681, 0.982, 348.16, 33.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(49.0, 0.1961, 0.982, 348.16, 38.6, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(50.0, 0.2239, 0.983, 348.16, 43.5, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(51.0, 0.2558, 0.982, 348.16, 49.0, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(52.0, 0.2915, 0.981, 348.16, 54.7, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(53.0, 0.3268, 0.98, 348.16, 60.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(54.0, 0.0964, 0.9889, 313.2, 11.0, '0.03', '0.1', '0.0023', '0.0003', 'Bamberger, 2000'), +(55.0, 0.1923, 0.9934, 314.2, 21.0, '0.02', '1.1', '0.0019', '0.0002', 'Bamberger, 2000'), +(56.0, 0.2947, 0.9942, 315.2, 31.0, '0.03', '2.1', '0.0023', '0.0001', 'Bamberger, 2000'), +(57.0, 0.3996, 0.9939, 316.2, 41.0, '0.03', '3.1', '0.003', '0.0002', 'Bamberger, 2000'), +(58.0, 0.512, 0.9952, 317.2, 51.0, '0.02', '4.1', '0.0039', '0.0001', 'Bamberger, 2000'), +(59.0, 0.6482, 0.9931, 318.2, 61.0, '0.03', '5.1', '0.0035', '0.0002', 'Bamberger, 2000'), +(60.0, 0.2061, 0.9874, 320.2, 31.0, '0.02', '7.1', '0.002', '0.0003', 'Bamberger, 2000'), +(61.0, 0.2756, 0.9881, 321.2, 41.0, '0.02', '8.1', '0.0023', '0.0003', 'Bamberger, 2000'), +(62.0, 0.3504, 0.988, 322.2, 51.0, '0.02', '9.1', '0.0024', '0.0003', 'Bamberger, 2000'), +(63.0, 0.4309, 0.9865, 323.2, 61.0, '0.03', '10.1', '0.0031', '0.0003', 'Bamberger, 2000'), +(64.0, 0.5195, 0.9856, 324.2, 71.0, '0.03', '11.1', '0.005', '0.0003', 'Bamberger, 2000'), +(65.0, 0.6042, 0.9819, 325.2, 81.0, '0.03', '12.1', '0.0029', '0.0004', 'Bamberger, 2000'), +(66.0, 0.7098, 0.9748, 326.2, 91.0, '0.02', '13.1', '0.002', '0.0006', 'Bamberger, 2000'), +(67.0, 0.1062, 0.9684, 328.2, 21.0, '0.02', '15.1', '0.0015', '0.0007', 'Bamberger, 2000'), +(68.0, 0.1859, 0.9758, 329.2, 36.0, '0.01', '16.1', '0.0019', '0.0006', 'Bamberger, 2000'), +(69.0, 0.2617, 0.9762, 330.2, 51.0, '0.02', '17.1', '0.0022', '0.0006', 'Bamberger, 2000'); +INSERT INTO PUBLIC.CO2ACOHDATA(ID, X, Y, TEMPERATURE, PRESSURE, SDP, SDT, SDX, SDY, REFERENCE) VALUES +(70.0, 0.3477, 0.9751, 331.2, 66.0, '0.02', '18.1', '0.0025', '0.006', 'Bamberger, 2000'), +(71.0, 0.4471, 0.9712, 332.2, 81.0, '0.02', '19.1', '0.0027', '0.0007', 'Bamberger, 2000'), +(72.0, 0.5389, 0.9637, 333.2, 96.0, '0.05', '20.1', '0.0026', '0.009', 'Bamberger, 2000'), +(73.0, 0.6568, 0.948, 334.2, 111.0, '0.05', '21.1', '0.0024', '0.0012', 'Bamberger, 2000'), +(74.0, 0.168, NULL, 313.16, 27.6, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(75.0, 0.409, NULL, 313.16, 45.1, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(76.0, 0.59, NULL, 313.16, 59.3, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(77.0, 0.712, NULL, 313.16, 66.8, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(78.0, 0.791, NULL, 313.16, 70.6, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(79.0, 0.815, NULL, 313.16, 73.0, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(80.0, 0.833, NULL, 313.16, 74.1, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(81.0, 0.855, NULL, 313.16, 74.1, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(82.0, 0.874, NULL, 313.16, 76.8, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(83.0, 0.909, NULL, 313.16, 78.6, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(84.0, 0.924, NULL, 313.16, 79.6, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(85.0, 0.939, NULL, 313.16, 80.6, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(86.0, 0.953, NULL, 313.16, 82.0, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(87.0, 0.97, NULL, 313.16, 82.3, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(88.0, 0.168, NULL, 333.16, 33.7, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(89.0, 0.409, NULL, 333.16, 60.3, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(90.0, 0.59, NULL, 333.16, 80.6, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(91.0, 0.712, NULL, 333.16, 91.0, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(92.0, 0.791, NULL, 333.16, 96.1, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(93.0, 0.815, NULL, 333.16, 99.2, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(94.0, 0.833, NULL, 333.16, 100.3, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(95.0, 0.855, NULL, 333.16, 101.9, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(96.0, 0.874, NULL, 333.16, 102.0, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(97.0, 0.909, NULL, 333.16, 104.5, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(98.0, 0.924, NULL, 333.16, 104.4, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(99.0, 0.168, NULL, 353.16, 39.6, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(100.0, 0.409, NULL, 353.16, 78.2, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(101.0, 0.59, NULL, 353.16, 104.4, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(102.0, 0.712, NULL, 353.16, 118.2, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(103.0, 0.791, NULL, 353.16, 123.0, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(104.0, 0.815, NULL, 353.16, 124.4, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(105.0, 0.833, NULL, 353.16, 125.4, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(106.0, 0.855, NULL, 353.16, 127.1, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(107.0, 0.168, NULL, 373.16, 46.5, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(108.0, 0.409, NULL, 373.16, 96.8, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(109.0, 0.59, NULL, 373.16, 126.5, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(110.0, 0.712, NULL, 373.16, 141.6, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(111.0, 0.791, NULL, 373.16, 145.7, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(112.0, 0.815, NULL, 373.16, 147.1, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(113.0, 0.833, NULL, 373.16, 148.4, NULL, NULL, NULL, NULL, 'Byun, 2000'), +(1.0, 0.0, 0.0, 298.16, 0.02096, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(2.0, 0.0344, 0.965, 298.16, 3.4, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(3.0, 0.0445, 0.967, 298.16, 4.4, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(4.0, 0.0623, 0.975, 298.16, 6.0, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(5.0, 0.0688, 0.976, 298.16, 6.6, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(6.0, 0.0828, 0.977, 298.16, 7.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(7.0, 0.1006, 0.981, 298.16, 9.4, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(8.0, 0.1227, 0.984, 298.16, 11.4, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(9.0, 0.1509, 0.984, 298.16, 13.9, NULL, NULL, NULL, NULL, 'Jonasson, 1998'); +INSERT INTO PUBLIC.CO2ACOHDATA(ID, X, Y, TEMPERATURE, PRESSURE, SDP, SDT, SDX, SDY, REFERENCE) VALUES +(10.0, 0.1885, 0.984, 298.16, 16.8, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(11.0, 0.2315, 0.986, 298.16, 20.4, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(12.0, 0.2875, 0.99, 298.16, 24.6, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(13.0, 0.35, 0.988, 298.16, 29.2, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(14.0, 0.4127, 0.988, 298.16, 33.9, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(15.0, 0.4915, 0.988, 298.16, 38.5, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(16.0, 0.5872, 0.988, 298.16, 44.3, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(17.0, 0.6834, 0.989, 298.16, 49.7, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(18.0, 0.7541, 0.989, 298.16, 53.7, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(19.0, 0.0, 0.0, 323.16, 0.076, NULL, NULL, NULL, NULL, 'Jonasson, 1998'), +(20.0, 0.0272, 0.945, 323.16, 3.9, NULL, NULL, NULL, NULL, 'Jonasson, 1998'); +CREATE CACHED TABLE PUBLIC.CO2CH4MDEA( + ID1 INT NOT NULL, + GASS1 VARCHAR(255) DEFAULT NULL, + GASS2 VARCHAR(255) DEFAULT NULL, + LIQUID1 VARCHAR(255) DEFAULT NULL, + LIQUID2 VARCHAR(255) DEFAULT NULL, + LOADING DOUBLE DEFAULT NULL, + MOLCH4 DOUBLE DEFAULT NULL, + MOLCO2 DOUBLE DEFAULT NULL, + MOLMDEA DOUBLE DEFAULT NULL, + MOLWATER DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + Y1 DOUBLE DEFAULT NULL, + Y2 DOUBLE DEFAULT NULL, + Y3 DOUBLE DEFAULT NULL, + Y4 DOUBLE DEFAULT NULL, + STDDEV DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + WT DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.CO2CH4MDEA ADD CONSTRAINT PUBLIC.CONSTRAINT_5 PRIMARY KEY(ID1); +-- 31 +/- SELECT COUNT(*) FROM PUBLIC.CO2CH4MDEA; +INSERT INTO PUBLIC.CO2CH4MDEA(ID1, GASS1, GASS2, LIQUID1, LIQUID2, LOADING, MOLCH4, MOLCO2, MOLMDEA, MOLWATER, PRESSURE, Y1, Y2, Y3, Y4, STDDEV, TEMPERATURE, WT, REFERENCE) VALUES +(1, 'CO2', 'methane', 'MDEA', 'water', 0.2586, 0.0264, 0.2586, 1.0, 15.4338051623647, 100.0, 0.0011, 0.9989, 0.0, 0.0, 3.33333333333333, 313.15, 30.0, 'Addicks2001'), +(2, 'CO2', 'methane', 'MDEA', 'water', 0.6203, 0.0257, 0.6203, 1.0, 15.4338051623647, 100.0, 0.0048, 0.9952, 0.0, 0.0, 3.33333333333333, 313.15, 30.0, 'Addicks2001'), +(3, 'CO2', 'methane', 'MDEA', 'water', 0.6256, 0.0331, 0.6256, 1.0, 15.4338051623647, 150.0, 0.0039, 0.9961, 0.0, 0.0, 3.33333333333333, 313.15, 30.0, 'Addicks2001'), +(4, 'CO2', 'methane', 'MDEA', 'water', 0.9887, 0.0256, 0.9887, 1.0, 15.4338051623647, 150.0, 0.1411, 0.8589, 0.0, 0.0, 3.33333333333333, 313.15, 30.0, 'Addicks2001'), +(5, 'CO2', 'methane', 'MDEA', 'water', 1.0062, 0.0247, 1.0062, 1.0, 15.4338051623647, 150.0, 0.1424, 0.8576, 0.0, 0.0, 3.33333333333333, 313.15, 30.0, 'Addicks2001'), +(6, 'CO2', 'methane', 'MDEA', 'water', 1.0285, 0.0295, 1.0285, 1.0, 15.4338051623647, 200.0, 0.1365, 0.8635, 0.0, 0.0, 3.33333333333333, 313.15, 30.0, 'Addicks2001'), +(7, 'CO2', 'methane', 'MDEA', 'water', 1.0243, 0.0284, 1.0243, 1.0, 15.4338051623647, 200.0, 0.1428, 0.8572, 0.0, 0.0, 3.33333333333333, 313.15, 30.0, 'Addicks2001'), +(8, 'CO2', 'methane', 'MDEA', 'water', 0.9086, 0.0353, 0.9086, 1.0, 15.4338051623647, 200.0, 0.0298, 0.9702, 0.0, 0.0, 3.33333333333333, 313.15, 30.0, 'Addicks2001'), +(9, 'CO2', 'methane', 'MDEA', 'water', 0.9687, 0.0339, 0.9687, 1.0, 15.4338051623647, 200.0, 0.0544, 0.9456, 0.0, 0.0, 3.33333333333333, 313.15, 30.0, 'Addicks2001'), +(10, 'CO2', 'methane', 'MDEA', 'water', 0.6895, 0.0234, 0.6895, 1.0, 15.4338051623647, 100.0, 0.0778, 0.9222, 0.0, 0.0, 3.33333333333333, 353.15, 30.0, 'Addicks2001'), +(11, 'CO2', 'methane', 'MDEA', 'water', 0.7713, 0.0222, 0.7713, 1.0, 15.4338051623647, 100.0, 0.1056, 0.8944, 0.0, 0.0, 3.33333333333333, 353.15, 30.0, 'Addicks2001'), +(12, 'CO2', 'methane', 'MDEA', 'water', 0.8347, 0.0206, 0.8347, 1.0, 15.4338051623647, 100.0, 0.1441, 0.8559, 0.0, 0.0, 3.33333333333333, 353.15, 30.0, 'Addicks2001'), +(13, 'CO2', 'methane', 'MDEA', 'water', 0.7365, 0.0323, 0.7365, 1.0, 15.4338051623647, 150.0, 0.0631, 0.9369, 0.0, 0.0, 3.33333333333333, 353.15, 30.0, 'Addicks2001'), +(14, 'CO2', 'methane', 'MDEA', 'water', 0.8736, 0.0289, 0.8736, 1.0, 15.4338051623647, 150.0, 0.1343, 0.8657, 0.0, 0.0, 3.33333333333333, 353.15, 30.0, 'Addicks2001'), +(15, 'CO2', 'methane', 'MDEA', 'water', 0.7593, 0.0367, 0.7593, 1.0, 15.4338051623647, 200.0, 0.0594, 0.9406, 0.0, 0.0, 3.33333333333333, 353.15, 30.0, 'Addicks2001'), +(16, 'CO2', 'methane', 'MDEA', 'water', 0.8122, 0.0311, 0.8122, 1.0, 15.4338051623647, 150.0, 0.0928, 0.9072, 0.0, 0.0, 3.33333333333333, 353.15, 30.0, 'Addicks2001'), +(17, 'CO2', 'methane', 'MDEA', 'water', 0.5815, 0.0114, 0.5815, 1.0, 6.61448792672773, 100.0, 0.0124, 0.9876, 0.0, 0.0, 3.33333333333333, 313.15, 50.0, 'Addicks2001'), +(18, 'CO2', 'methane', 'MDEA', 'water', 0.8128, 0.0158, 0.8128, 1.0, 6.61448792672773, 200.0, 0.0488, 0.9512, 0.0, 0.0, 3.33333333333333, 313.15, 50.0, 'Addicks2001'), +(19, 'CO2', 'methane', 'MDEA', 'water', 0.9232, 0.0074, 0.9232, 1.0, 6.61448792672773, 100.0, 0.2627, 0.7373, 0.0, 0.0, 3.33333333333333, 313.15, 50.0, 'Addicks2001'), +(20, 'CO2', 'methane', 'MDEA', 'water', 0.9426, 0.0116, 0.9426, 1.0, 6.61448792672773, 200.0, 0.2533, 0.7457, 0.0, 0.0, 3.33333333333333, 313.15, 50.0, 'Addicks2001'), +(21, 'CO2', 'methane', 'MDEA', 'water', 0.2762, 0.0188, 0.2762, 1.0, 6.61448792672773, 100.0, 0.0243, 0.9757, 0.0, 0.0, 3.33333333333333, 353.15, 50.0, 'Addicks2001'), +(22, 'CO2', 'methane', 'MDEA', 'water', 0.2935, 0.0257, 0.2935, 1.0, 6.61448792672773, 150.0, 0.0187, 0.9813, 0.0, 0.0, 3.33333333333333, 353.15, 50.0, 'Addicks2001'), +(23, 'CO2', 'methane', 'MDEA', 'water', 0.3037, 0.0315, 0.3037, 1.0, 6.61448792672773, 200.0, 0.0159, 0.9841, 0.0, 0.0, 3.33333333333333, 353.15, 50.0, 'Addicks2001'), +(24, 'CO2', 'methane', 'MDEA', 'water', 0.4091, 0.0187, 0.4091, 1.0, 6.61448792672773, 100.0, 0.0467, 0.9533, 0.0, 0.0, 3.33333333333333, 353.15, 50.0, 'Addicks2001'); +INSERT INTO PUBLIC.CO2CH4MDEA(ID1, GASS1, GASS2, LIQUID1, LIQUID2, LOADING, MOLCH4, MOLCO2, MOLMDEA, MOLWATER, PRESSURE, Y1, Y2, Y3, Y4, STDDEV, TEMPERATURE, WT, REFERENCE) VALUES +(25, 'CO2', 'methane', 'MDEA', 'water', 0.4364, 0.027, 0.4364, 1.0, 6.61448792672773, 200.0, 0.0314, 0.9686, 0.0, 0.0, 3.33333333333333, 353.15, 50.0, 'Addicks2001'), +(26, 'CO2', 'methane', 'MDEA', 'water', 0.5713, 0.0112, 0.5713, 1.0, 6.61448792672773, 100.0, 0.0948, 0.9052, 0.0, 0.0, 3.33333333333333, 353.15, 50.0, 'Addicks2001'), +(27, 'CO2', 'methane', 'MDEA', 'water', 0.6134, 0.0204, 0.6134, 1.0, 6.61448792672773, 200.0, 0.0687, 0.9313, 0.0, 0.0, 3.33333333333333, 353.15, 50.0, 'Addicks2001'), +(28, 'CO2', 'methane', 'MDEA', 'water', 0.7026, 0.0114, 0.7026, 1.0, 6.61448792672773, 100.0, 0.1712, 0.8288, 0.0, 0.0, 3.33333333333333, 353.15, 50.0, 'Addicks2001'), +(29, 'CO2', 'methane', 'MDEA', 'water', 0.7569, 0.0209, 0.7569, 1.0, 6.61448792672773, 200.0, 0.1364, 0.8636, 0.0, 0.0, 3.33333333333333, 353.15, 50.0, 'Addicks2001'), +(30, 'CO2', 'methane', 'MDEA', 'water', 0.8288, 0.0378, 0.8288, 1.0, 15.4338051623647, 200.0, 0.0875, 0.9125, 0.0, 0.0, 3.33333333333333, 353.15, 30.0, 'Addicks2001'), +(31, 'CO2', 'methane', 'MDEA', 'water', 0.969, 0.0275, 0.969, 1.0, 15.4338051623647, 200.0, 0.1455, 0.8545, 0.0, 0.0, 3.33333333333333, 353.15, 30.0, 'Addicks2001'); +CREATE CACHED TABLE PUBLIC.CO2KURCOR( + ID INT NOT NULL, + COMPONENTSOLUTE VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT1 VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT2 VARCHAR(50) DEFAULT NULL, + LOADING DOUBLE DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + X3 DOUBLE DEFAULT '0', + VAPOURPRESSURE1 DOUBLE DEFAULT '0', + VAPOURPRESSURE2 DOUBLE DEFAULT '0', + VAPOURPRESSURE3 DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + WTMDEA DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.CO2KURCOR ADD CONSTRAINT PUBLIC.CONSTRAINT_B PRIMARY KEY(ID); +-- 475 +/- SELECT COUNT(*) FROM PUBLIC.CO2KURCOR; +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1482, 'CO2', 'MDEA', 'water', 0.0171, 0.0171, 1.0, 21.37742035, 2.0E-4, 0.0, 0.0, 6.67E-6, 297.7, 23.63, 'Lemoine2000'), +(1483, 'CO2', 'MDEA', 'water', 0.0342, 0.0342, 1.0, 21.37742035, 6.2E-4, 0.0, 0.0, 2.07E-5, 297.7, 23.63, 'Lemoine2000'), +(1484, 'CO2', 'MDEA', 'water', 0.0512, 0.0512, 1.0, 21.37742035, 0.00114, 0.0, 0.0, 3.8E-5, 297.72, 23.63, 'Lemoine2000'), +(1485, 'CO2', 'MDEA', 'water', 0.0648, 0.0648, 1.0, 21.37742035, 0.00165, 0.0, 0.0, 5.5E-5, 297.71, 23.63, 'Lemoine2000'), +(1486, 'CO2', 'MDEA', 'water', 0.0853, 0.0853, 1.0, 21.37742035, 0.00256, 0.0, 0.0, 8.53E-5, 297.71, 23.63, 'Lemoine2000'), +(1487, 'CO2', 'MDEA', 'water', 0.0971, 0.0971, 1.0, 21.37742035, 0.00304, 0.0, 0.0, 1.01E-4, 297.71, 23.63, 'Lemoine2000'), +(1488, 'CO2', 'MDEA', 'water', 0.1126, 0.1126, 1.0, 21.37742035, 0.00402, 0.0, 0.0, 1.34E-4, 297.71, 23.63, 'Lemoine2000'), +(1489, 'CO2', 'MDEA', 'water', 0.1295, 0.1295, 1.0, 21.37742035, 0.00477, 0.0, 0.0, 1.59E-4, 297.71, 23.63, 'Lemoine2000'), +(1490, 'CO2', 'MDEA', 'water', 0.1361, 0.1361, 1.0, 21.37742035, 0.00546, 0.0, 0.0, 1.82E-4, 297.71, 23.63, 'Lemoine2000'), +(1491, 'CO2', 'MDEA', 'water', 0.1617, 0.1617, 1.0, 21.37742035, 0.00716, 0.0, 0.0, 2.39E-4, 297.71, 23.63, 'Lemoine2000'), +(1492, 'CO2', 'MDEA', 'water', 0.2042, 0.2042, 1.0, 21.37742035, 0.0108, 0.0, 0.0, 3.58E-4, 297.71, 23.63, 'Lemoine2000'), +(1493, 'CO2', 'MDEA', 'water', 0.255, 0.255, 1.0, 21.37742035, 0.0159, 0.0, 0.0, 5.31E-4, 297.71, 23.63, 'Lemoine2000'), +(1494, 'CO2', 'MDEA', 'water', 0.2625, 0.2625, 1.0, 21.37742035, 0.0164, 0.0, 0.0, 5.45E-4, 297.71, 23.63, 'Lemoine2000'), +(1495, 'CO2', 'MDEA', 'water', 0.005, 0.005, 1.0, 21.6525545, 1.0E-5, 0.0, 0.0, 3.33E-7, 298.15, 23.4, 'Jou1982'), +(1496, 'CO2', 'MDEA', 'water', 0.0166, 0.0166, 1.0, 21.6525545, 6.88E-5, 0.0, 0.0, 2.29E-6, 298.15, 23.4, 'Jou1982'), +(1497, 'CO2', 'MDEA', 'water', 0.0329, 0.0329, 1.0, 21.6525545, 2.18E-4, 0.0, 0.0, 7.27E-6, 298.15, 23.4, 'Jou1982'), +(1498, 'CO2', 'MDEA', 'water', 0.0402, 0.0402, 1.0, 21.6525545, 2.95E-4, 0.0, 0.0, 9.83E-6, 298.15, 23.4, 'Jou1982'), +(1499, 'CO2', 'MDEA', 'water', 0.334, 0.334, 1.0, 21.6525545, 0.0155, 0.0, 0.0, 5.17E-4, 298.15, 23.4, 'Jou1982'), +(1500, 'CO2', 'MDEA', 'water', 0.452, 0.452, 1.0, 21.6525545, 0.0422, 0.0, 0.0, 0.00141, 298.15, 23.4, 'Jou1982'), +(1501, 'CO2', 'MDEA', 'water', 0.638, 0.638, 1.0, 21.6525545, 0.0926, 0.0, 0.0, 0.00309, 298.15, 23.4, 'Jou1982'), +(1502, 'CO2', 'MDEA', 'water', 1.025, 1.025, 1.0, 21.6525545, 1.81, 0.0, 0.0, 0.0603, 298.15, 23.4, 'Jou1982'), +(1503, 'CO2', 'MDEA', 'water', 1.146, 1.146, 1.0, 21.6525545, 6.98, 0.0, 0.0, 0.233, 298.15, 23.4, 'Jou1982'), +(1504, 'CO2', 'MDEA', 'water', 1.308, 1.308, 1.0, 21.6525545, 20.4, 0.0, 0.0, 0.68, 298.15, 23.4, 'Jou1982'), +(1505, 'CO2', 'MDEA', 'water', 1.479, 1.479, 1.0, 21.6525545, 35.5, 0.0, 0.0, 1.18, 298.15, 23.4, 'Jou1982'), +(1506, 'CO2', 'MDEA', 'water', 1.587, 1.587, 1.0, 21.6525545, 45.7, 0.0, 0.0, 1.52, 298.15, 23.4, 'Jou1982'), +(1507, 'CO2', 'MDEA', 'water', 1.676, 1.676, 1.0, 21.6525545, 52.6, 0.0, 0.0, 1.75, 298.15, 23.4, 'Jou1982'), +(1508, 'CO2', 'MDEA', 'water', 0.003, 0.003, 1.0, 21.6525545, 2.17E-5, 0.0, 0.0, 7.23E-7, 313.15, 23.4, 'Jou1982'), +(1509, 'CO2', 'MDEA', 'water', 0.00429, 0.00429, 1.0, 21.6525545, 3.06E-5, 0.0, 0.0, 1.02E-6, 313.15, 23.4, 'Jou1982'), +(1510, 'CO2', 'MDEA', 'water', 0.00504, 0.00504, 1.0, 21.6525545, 3.69E-5, 0.0, 0.0, 1.23E-6, 313.15, 23.4, 'Jou1982'), +(1511, 'CO2', 'MDEA', 'water', 0.012, 0.012, 1.0, 21.6525545, 1.32E-4, 0.0, 0.0, 4.4E-6, 313.15, 23.4, 'Jou1982'), +(1512, 'CO2', 'MDEA', 'water', 0.0676, 0.0676, 1.0, 21.6525545, 0.00184, 0.0, 0.0, 6.13E-5, 313.15, 23.4, 'Jou1982'), +(1513, 'CO2', 'MDEA', 'water', 0.224, 0.224, 1.0, 21.6525545, 0.0238, 0.0, 0.0, 7.93E-4, 313.15, 23.4, 'Jou1982'), +(1514, 'CO2', 'MDEA', 'water', 0.441, 0.441, 1.0, 21.6525545, 0.112, 0.0, 0.0, 0.00373, 313.15, 23.4, 'Jou1982'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1515, 'CO2', 'MDEA', 'water', 0.866, 0.866, 1.0, 21.6525545, 1.01, 0.0, 0.0, 0.0337, 313.15, 23.4, 'Jou1982'), +(1516, 'CO2', 'MDEA', 'water', 0.99, 0.99, 1.0, 21.6525545, 2.94, 0.0, 0.0, 0.098, 313.15, 23.4, 'Jou1982'), +(1517, 'CO2', 'MDEA', 'water', 1.083, 1.083, 1.0, 21.6525545, 6.4, 0.0, 0.0, 0.213, 313.15, 23.4, 'Jou1982'), +(1518, 'CO2', 'MDEA', 'water', 1.204, 1.204, 1.0, 21.6525545, 23.6, 0.0, 0.0, 0.787, 313.15, 23.4, 'Jou1982'), +(1519, 'CO2', 'MDEA', 'water', 1.268, 1.268, 1.0, 21.6525545, 32.0, 0.0, 0.0, 1.07, 313.15, 23.4, 'Jou1982'), +(1520, 'CO2', 'MDEA', 'water', 1.467, 1.467, 1.0, 21.6525545, 48.0, 0.0, 0.0, 1.6, 313.15, 23.4, 'Jou1982'), +(1521, 'CO2', 'MDEA', 'water', 1.639, 1.639, 1.0, 21.6525545, 63.3, 0.0, 0.0, 2.21, 313.15, 23.4, 'Jou1982'), +(1522, 'CO2', 'MDEA', 'water', 0.00601, 0.00601, 1.0, 21.6525545, 5.6E-5, 0.0, 0.0, 1.87E-6, 313.15, 23.4, 'Austgen1991'), +(1523, 'CO2', 'MDEA', 'water', 0.0117, 0.0117, 1.0, 21.6525545, 1.51E-4, 0.0, 0.0, 5.03E-6, 313.15, 23.4, 'Austgen1991'), +(1524, 'CO2', 'MDEA', 'water', 0.0215, 0.0215, 1.0, 21.6525545, 4.52E-4, 0.0, 0.0, 1.51E-5, 313.15, 23.4, 'Austgen1991'), +(1525, 'CO2', 'MDEA', 'water', 0.0444, 0.0444, 1.0, 21.6525545, 0.00177, 0.0, 0.0, 5.9E-5, 313.15, 23.4, 'Austgen1991'), +(1526, 'CO2', 'MDEA', 'water', 0.074, 0.074, 1.0, 21.6525545, 0.00419, 0.0, 0.0, 1.4E-4, 313.15, 23.4, 'Austgen1991'), +(1527, 'CO2', 'MDEA', 'water', 0.113, 0.113, 1.0, 21.6525545, 0.00887, 0.0, 0.0, 2.96E-4, 313.15, 23.4, 'Austgen1991'), +(1528, 'CO2', 'MDEA', 'water', 0.362, 0.362, 1.0, 21.6525545, 0.0695, 0.0, 0.0, 0.00232, 313.15, 23.4, 'Austgen1991'), +(1529, 'CO2', 'MDEA', 'water', 0.842, 0.842, 1.0, 21.6525545, 0.928, 0.0, 0.0, 0.0309, 313.15, 23.4, 'Austgen1991'), +(1530, 'CO2', 'MDEA', 'water', 0.00314, 0.00314, 1.0, 6.884467026, 1.02E-4, 0.0, 0.0, 3.4E-6, 313.15, 49.0, 'Austgen1991'), +(1531, 'CO2', 'MDEA', 'water', 0.014, 0.014, 1.0, 6.884467026, 0.00118, 0.0, 0.0, 3.93E-5, 313.15, 49.0, 'Austgen1991'), +(1532, 'CO2', 'MDEA', 'water', 0.0367, 0.0367, 1.0, 6.884467026, 0.00585, 0.0, 0.0, 1.95E-4, 313.15, 49.0, 'Austgen1991'), +(1533, 'CO2', 'MDEA', 'water', 0.105, 0.105, 1.0, 6.884467026, 0.0304, 0.0, 0.0, 0.00101, 313.15, 49.0, 'Austgen1991'), +(1534, 'CO2', 'MDEA', 'water', 0.671, 0.671, 1.0, 6.884467026, 0.936, 0.0, 0.0, 0.0312, 313.15, 49.0, 'Austgen1991'), +(1535, 'CO2', 'MDEA', 'water', 0.652, 0.652, 1.0, 6.884467026, 0.936, 0.0, 0.0, 0.0312, 313.15, 49.0, 'Austgen1991'), +(1536, 'CO2', 'MDEA', 'water', 9.0E-4, 9.0E-4, 1.0, 21.6525545, 2.08E-5, 0.0, 0.0, 6.93E-7, 343.15, 23.4, 'Jou1982'), +(1537, 'CO2', 'MDEA', 'water', 0.00129, 0.00129, 1.0, 21.6525545, 3.35E-5, 0.0, 0.0, 1.12E-6, 343.15, 23.4, 'Jou1982'), +(1538, 'CO2', 'MDEA', 'water', 0.0056, 0.0056, 1.0, 21.6525545, 4.8E-4, 0.0, 0.0, 1.6E-5, 343.15, 23.4, 'Jou1982'), +(1539, 'CO2', 'MDEA', 'water', 0.0208, 0.0208, 1.0, 21.6525545, 0.00305, 0.0, 0.0, 1.02E-4, 343.15, 23.4, 'Jou1982'), +(1540, 'CO2', 'MDEA', 'water', 0.0439, 0.0439, 1.0, 21.6525545, 0.00951, 0.0, 0.0, 3.17E-4, 343.15, 23.4, 'Jou1982'), +(1541, 'CO2', 'MDEA', 'water', 0.369, 0.369, 1.0, 21.6525545, 0.409, 0.0, 0.0, 0.0136, 343.15, 23.4, 'Jou1982'), +(1542, 'CO2', 'MDEA', 'water', 0.841, 0.841, 1.0, 21.6525545, 4.47, 0.0, 0.0, 0.149, 343.15, 23.4, 'Jou1982'), +(1543, 'CO2', 'MDEA', 'water', 1.011, 1.011, 1.0, 21.6525545, 9.93, 0.0, 0.0, 0.331, 343.15, 23.4, 'Jou1982'), +(1544, 'CO2', 'MDEA', 'water', 1.147, 1.147, 1.0, 21.6525545, 23.2, 0.0, 0.0, 0.773, 343.15, 23.4, 'Jou1982'), +(1545, 'CO2', 'MDEA', 'water', 1.182, 1.182, 1.0, 21.6525545, 27.3, 0.0, 0.0, 0.91, 343.15, 23.4, 'Jou1982'), +(1546, 'CO2', 'MDEA', 'water', 1.235, 1.235, 1.0, 21.6525545, 42.3, 0.0, 0.0, 1.41, 343.15, 23.4, 'Jou1982'), +(1547, 'CO2', 'MDEA', 'water', 1.397, 1.397, 1.0, 21.6525545, 60.2, 0.0, 0.0, 2.01, 343.15, 23.4, 'Jou1982'), +(1548, 'CO2', 'MDEA', 'water', 0.00218, 0.00218, 1.0, 21.6525545, 4.68E-4, 0.0, 0.0, 1.56E-5, 373.15, 23.4, 'Jou1982'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1549, 'CO2', 'MDEA', 'water', 0.00376, 0.00376, 1.0, 21.6525545, 0.00128, 0.0, 0.0, 4.27E-5, 373.15, 23.4, 'Jou1982'), +(1550, 'CO2', 'MDEA', 'water', 0.13, 0.13, 1.0, 21.6525545, 0.308, 0.0, 0.0, 0.0103, 373.15, 23.4, 'Jou1982'), +(1551, 'CO2', 'MDEA', 'water', 0.502, 0.502, 1.0, 21.6525545, 3.73, 0.0, 0.0, 0.124, 373.15, 23.4, 'Jou1982'), +(1552, 'CO2', 'MDEA', 'water', 0.564, 0.564, 1.0, 21.6525545, 5.73, 0.0, 0.0, 0.191, 373.15, 23.4, 'Jou1982'), +(1553, 'CO2', 'MDEA', 'water', 1.009, 1.009, 1.0, 21.6525545, 26.0, 0.0, 0.0, 0.867, 373.15, 23.4, 'Jou1982'), +(1554, 'CO2', 'MDEA', 'water', 1.161, 1.161, 1.0, 21.6525545, 42.0, 0.0, 0.0, 1.4, 373.15, 23.4, 'Jou1982'), +(1555, 'CO2', 'MDEA', 'water', 1.218, 1.218, 1.0, 21.6525545, 55.3, 0.0, 0.0, 1.84, 373.15, 23.4, 'Jou1982'), +(1556, 'CO2', 'MDEA', 'water', 0.00124, 0.00124, 1.0, 21.6525545, 7.25E-4, 0.0, 0.0, 2.42E-5, 393.15, 23.4, 'Jou1982'), +(1557, 'CO2', 'MDEA', 'water', 0.00166, 0.00166, 1.0, 21.6525545, 0.00116, 0.0, 0.0, 3.87E-5, 393.15, 23.4, 'Jou1982'), +(1558, 'CO2', 'MDEA', 'water', 0.0133, 0.0133, 1.0, 21.6525545, 0.0384, 0.0, 0.0, 0.00128, 393.15, 23.4, 'Jou1982'), +(1559, 'CO2', 'MDEA', 'water', 0.0973, 0.0973, 1.0, 21.6525545, 0.577, 0.0, 0.0, 0.0192, 393.15, 23.4, 'Jou1982'), +(1560, 'CO2', 'MDEA', 'water', 0.336, 0.336, 1.0, 21.6525545, 4.93, 0.0, 0.0, 0.164, 393.15, 23.4, 'Jou1982'), +(1561, 'CO2', 'MDEA', 'water', 0.689, 0.689, 1.0, 21.6525545, 19.3, 0.0, 0.0, 0.643, 393.15, 23.4, 'Jou1982'), +(1562, 'CO2', 'MDEA', 'water', 0.91, 0.91, 1.0, 21.6525545, 33.8, 0.0, 0.0, 1.13, 393.15, 23.4, 'Jou1982'), +(1563, 'CO2', 'MDEA', 'water', 1.043, 1.043, 1.0, 21.6525545, 46.6, 0.0, 0.0, 1.55, 393.15, 23.4, 'Jou1982'), +(1564, 'CO2', 'MDEA', 'water', 1.152, 1.152, 1.0, 21.6525545, 54.9, 0.0, 0.0, 1.83, 393.15, 23.4, 'Jou1982'), +(1565, 'CO2', 'MDEA', 'water', 0.00621, 0.00621, 1.0, 6.884467026, 3.85E-5, 0.0, 0.0, 1.28E-6, 298.15, 49.0, 'Jou1982'), +(1566, 'CO2', 'MDEA', 'water', 0.0103, 0.0103, 1.0, 6.884467026, 8.59E-5, 0.0, 0.0, 2.86E-6, 298.15, 49.0, 'Jou1982'), +(1567, 'CO2', 'MDEA', 'water', 0.0191, 0.0191, 1.0, 6.884467026, 3.41E-4, 0.0, 0.0, 1.14E-5, 298.15, 49.0, 'Jou1982'), +(1568, 'CO2', 'MDEA', 'water', 0.0306, 0.0306, 1.0, 6.884467026, 8.57E-4, 0.0, 0.0, 2.86E-5, 298.15, 49.0, 'Jou1982'), +(1569, 'CO2', 'MDEA', 'water', 0.072, 0.072, 1.0, 6.884467026, 0.00384, 0.0, 0.0, 1.28E-4, 298.15, 49.0, 'Jou1982'), +(1570, 'CO2', 'MDEA', 'water', 0.318, 0.318, 1.0, 6.884467026, 0.053, 0.0, 0.0, 0.00177, 298.15, 49.0, 'Jou1982'), +(1571, 'CO2', 'MDEA', 'water', 0.784, 0.784, 1.0, 6.884467026, 0.481, 0.0, 0.0, 0.016, 298.15, 49.0, 'Jou1982'), +(1572, 'CO2', 'MDEA', 'water', 0.93, 0.93, 1.0, 6.884467026, 1.11, 0.0, 0.0, 0.037, 298.15, 49.0, 'Jou1982'), +(1573, 'CO2', 'MDEA', 'water', 0.996, 0.996, 1.0, 6.884467026, 2.35, 0.0, 0.0, 0.0783, 298.15, 49.0, 'Jou1982'), +(1574, 'CO2', 'MDEA', 'water', 1.115, 1.115, 1.0, 6.884467026, 11.9, 0.0, 0.0, 0.397, 298.15, 49.0, 'Jou1982'), +(1575, 'CO2', 'MDEA', 'water', 1.3, 1.3, 1.0, 6.884467026, 39.4, 0.0, 0.0, 1.31, 298.15, 49.0, 'Jou1982'), +(1576, 'CO2', 'MDEA', 'water', 1.37, 1.37, 1.0, 6.884467026, 54.3, 0.0, 0.0, 1.81, 298.15, 49.0, 'Jou1982'), +(1577, 'CO2', 'MDEA', 'water', 1.381, 1.381, 1.0, 6.884467026, 63.7, 0.0, 0.0, 2.12, 298.15, 49.0, 'Jou1982'), +(1578, 'CO2', 'MDEA', 'water', 0.00202, 0.00202, 1.0, 6.884467026, 2.31E-5, 0.0, 0.0, 7.7E-7, 313.15, 49.0, 'Jou1982'), +(1579, 'CO2', 'MDEA', 'water', 0.00381, 0.00381, 1.0, 6.884467026, 7.67E-5, 0.0, 0.0, 2.56E-6, 313.15, 49.0, 'Jou1982'), +(1580, 'CO2', 'MDEA', 'water', 0.0057, 0.0057, 1.0, 6.884467026, 1.09E-4, 0.0, 0.0, 3.63E-6, 313.15, 49.0, 'Jou1982'), +(1581, 'CO2', 'MDEA', 'water', 0.0104, 0.0104, 1.0, 6.884467026, 3.01E-4, 0.0, 0.0, 1.0E-5, 313.15, 49.0, 'Jou1982'), +(1582, 'CO2', 'MDEA', 'water', 0.0609, 0.0609, 1.0, 6.884467026, 0.00703, 0.0, 0.0, 2.34E-4, 313.15, 49.0, 'Jou1982'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1583, 'CO2', 'MDEA', 'water', 0.136, 0.136, 1.0, 6.884467026, 0.0267, 0.0, 0.0, 8.9E-4, 313.15, 49.0, 'Jou1982'), +(1584, 'CO2', 'MDEA', 'water', 0.2845, 0.2845, 1.0, 6.884467026, 0.133, 0.0, 0.0, 0.00443, 313.15, 49.0, 'Jou1982'), +(1585, 'CO2', 'MDEA', 'water', 0.7, 0.7, 1.0, 6.884467026, 0.834, 0.0, 0.0, 0.0278, 313.15, 49.0, 'Jou1982'), +(1586, 'CO2', 'MDEA', 'water', 0.71, 0.71, 1.0, 6.884467026, 1.06, 0.0, 0.0, 0.0353, 313.15, 49.0, 'Jou1982'), +(1587, 'CO2', 'MDEA', 'water', 0.936, 0.936, 1.0, 6.884467026, 4.13, 0.0, 0.0, 0.138, 313.15, 49.0, 'Jou1982'), +(1588, 'CO2', 'MDEA', 'water', 1.1, 1.1, 1.0, 6.884467026, 14.2, 0.0, 0.0, 0.473, 313.15, 49.0, 'Jou1982'), +(1589, 'CO2', 'MDEA', 'water', 1.17, 1.17, 1.0, 6.884467026, 28.0, 0.0, 0.0, 0.933, 313.15, 49.0, 'Jou1982'), +(1590, 'CO2', 'MDEA', 'water', 1.218, 1.218, 1.0, 6.884467026, 40.7, 0.0, 0.0, 1.36, 313.15, 49.0, 'Jou1982'), +(1591, 'CO2', 'MDEA', 'water', 1.272, 1.272, 1.0, 6.884467026, 55.5, 0.0, 0.0, 1.85, 313.15, 49.0, 'Jou1982'), +(1592, 'CO2', 'MDEA', 'water', 1.29, 1.29, 1.0, 6.884467026, 65.7, 0.0, 0.0, 2.19, 313.15, 49.0, 'Jou1982'), +(1593, 'CO2', 'MDEA', 'water', 3.7E-4, 3.7E-4, 1.0, 6.884467026, 1.61E-5, 0.0, 0.0, 5.37E-7, 343.15, 49.0, 'Jou1982'), +(1594, 'CO2', 'MDEA', 'water', 8.8E-4, 8.8E-4, 1.0, 6.884467026, 4.85E-5, 0.0, 0.0, 1.62E-6, 343.15, 49.0, 'Jou1982'), +(1595, 'CO2', 'MDEA', 'water', 0.00128, 0.00128, 1.0, 6.884467026, 9.63E-5, 0.0, 0.0, 3.21E-6, 343.15, 49.0, 'Jou1982'), +(1596, 'CO2', 'MDEA', 'water', 0.00228, 0.00228, 1.0, 6.884467026, 1.83E-4, 0.0, 0.0, 6.1E-6, 343.15, 49.0, 'Jou1982'), +(1597, 'CO2', 'MDEA', 'water', 0.0078, 0.0078, 1.0, 6.884467026, 0.0017, 0.0, 0.0, 5.67E-5, 343.15, 49.0, 'Jou1982'), +(1598, 'CO2', 'MDEA', 'water', 0.021, 0.021, 1.0, 6.884467026, 0.00918, 0.0, 0.0, 3.06E-4, 343.15, 49.0, 'Jou1982'), +(1599, 'CO2', 'MDEA', 'water', 0.189, 0.189, 1.0, 6.884467026, 0.403, 0.0, 0.0, 0.0134, 343.15, 49.0, 'Jou1982'), +(1600, 'CO2', 'MDEA', 'water', 0.74, 0.74, 1.0, 6.884467026, 7.05, 0.0, 0.0, 0.235, 343.15, 49.0, 'Jou1982'), +(1601, 'CO2', 'MDEA', 'water', 0.941, 0.941, 1.0, 6.884467026, 16.2, 0.0, 0.0, 0.54, 343.15, 49.0, 'Jou1982'), +(1602, 'CO2', 'MDEA', 'water', 1.11, 1.11, 1.0, 6.884467026, 28.9, 0.0, 0.0, 0.963, 343.15, 49.0, 'Jou1982'), +(1603, 'CO2', 'MDEA', 'water', 1.159, 1.159, 1.0, 6.884467026, 43.0, 0.0, 0.0, 1.43, 343.15, 49.0, 'Jou1982'), +(1604, 'CO2', 'MDEA', 'water', 1.187, 1.187, 1.0, 6.884467026, 55.9, 0.0, 0.0, 1.86, 343.15, 49.0, 'Jou1982'), +(1605, 'CO2', 'MDEA', 'water', 1.232, 1.232, 1.0, 6.884467026, 62.8, 0.0, 0.0, 2.09, 343.15, 49.0, 'Jou1982'), +(1606, 'CO2', 'MDEA', 'water', 0.001, 0.001, 1.0, 6.884467026, 4.01E-4, 0.0, 0.0, 1.34E-5, 373.15, 49.0, 'Jou1982'), +(1607, 'CO2', 'MDEA', 'water', 0.00135, 0.00135, 1.0, 6.884467026, 5.54E-4, 0.0, 0.0, 1.85E-5, 373.15, 49.0, 'Jou1982'), +(1608, 'CO2', 'MDEA', 'water', 0.00151, 0.00151, 1.0, 6.884467026, 7.12E-4, 0.0, 0.0, 2.37E-5, 373.15, 49.0, 'Jou1982'), +(1609, 'CO2', 'MDEA', 'water', 0.00291, 0.00291, 1.0, 6.884467026, 0.00174, 0.0, 0.0, 5.8E-5, 373.15, 49.0, 'Jou1982'), +(1610, 'CO2', 'MDEA', 'water', 0.00376, 0.00376, 1.0, 6.884467026, 0.00277, 0.0, 0.0, 9.23E-5, 373.15, 49.0, 'Jou1982'), +(1611, 'CO2', 'MDEA', 'water', 0.0276, 0.0276, 1.0, 6.884467026, 0.0769, 0.0, 0.0, 0.00256, 373.15, 49.0, 'Jou1982'), +(1612, 'CO2', 'MDEA', 'water', 0.0947, 0.0947, 1.0, 6.884467026, 0.631, 0.0, 0.0, 0.021, 373.15, 49.0, 'Jou1982'), +(1613, 'CO2', 'MDEA', 'water', 0.256, 0.256, 1.0, 6.884467026, 3.31, 0.0, 0.0, 0.11, 373.15, 49.0, 'Jou1982'), +(1614, 'CO2', 'MDEA', 'water', 0.532, 0.532, 1.0, 6.884467026, 13.1, 0.0, 0.0, 0.437, 373.15, 49.0, 'Jou1982'), +(1615, 'CO2', 'MDEA', 'water', 0.784, 0.784, 1.0, 6.884467026, 26.8, 0.0, 0.0, 0.893, 373.15, 49.0, 'Jou1982'), +(1616, 'CO2', 'MDEA', 'water', 0.941, 0.941, 1.0, 6.884467026, 40.1, 0.0, 0.0, 1.34, 373.15, 49.0, 'Jou1982'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1617, 'CO2', 'MDEA', 'water', 1.096, 1.096, 1.0, 6.884467026, 55.9, 0.0, 0.0, 1.86, 373.15, 49.0, 'Jou1982'), +(1618, 'CO2', 'MDEA', 'water', 0.00105, 0.00105, 1.0, 6.884467026, 0.00143, 0.0, 0.0, 4.77E-5, 393.15, 49.0, 'Jou1982'), +(1619, 'CO2', 'MDEA', 'water', 0.00129, 0.00129, 1.0, 6.884467026, 0.00183, 0.0, 0.0, 6.1E-5, 393.15, 49.0, 'Jou1982'), +(1620, 'CO2', 'MDEA', 'water', 0.00225, 0.00225, 1.0, 6.884467026, 0.00479, 0.0, 0.0, 1.6E-4, 393.15, 49.0, 'Jou1982'), +(1621, 'CO2', 'MDEA', 'water', 0.0186, 0.0186, 1.0, 6.884467026, 0.143, 0.0, 0.0, 0.00477, 393.15, 49.0, 'Jou1982'), +(1622, 'CO2', 'MDEA', 'water', 0.0553, 0.0553, 1.0, 6.884467026, 0.691, 0.0, 0.0, 0.023, 393.15, 49.0, 'Jou1982'), +(1623, 'CO2', 'MDEA', 'water', 0.128, 0.128, 1.0, 6.884467026, 2.48, 0.0, 0.0, 0.0827, 393.15, 49.0, 'Jou1982'), +(1624, 'CO2', 'MDEA', 'water', 0.279, 0.279, 1.0, 6.884467026, 8.57, 0.0, 0.0, 0.286, 393.15, 49.0, 'Jou1982'), +(1625, 'CO2', 'MDEA', 'water', 0.525, 0.525, 1.0, 6.884467026, 29.2, 0.0, 0.0, 0.973, 393.15, 49.0, 'Jou1982'), +(1626, 'CO2', 'MDEA', 'water', 0.743, 0.743, 1.0, 6.884467026, 52.9, 0.0, 0.0, 1.76, 393.15, 49.0, 'Jou1982'), +(1627, 'CO2', 'MDEA', 'water', 0.002, 0.002, 1.0, 12.28404901, 4.0E-5, 0.0, 0.0, 1.33E-6, 313.15, 35.0, 'Jou1993'), +(1628, 'CO2', 'MDEA', 'water', 0.0036, 0.0036, 1.0, 12.28404901, 6.3E-5, 0.0, 0.0, 2.1E-6, 313.15, 35.0, 'Jou1993'), +(1629, 'CO2', 'MDEA', 'water', 0.0051, 0.0051, 1.0, 12.28404901, 9.0E-5, 0.0, 0.0, 3.0E-6, 313.15, 35.0, 'Jou1993'), +(1630, 'CO2', 'MDEA', 'water', 0.011, 0.011, 1.0, 12.28404901, 3.3E-4, 0.0, 0.0, 1.1E-5, 313.15, 35.0, 'Jou1993'), +(1631, 'CO2', 'MDEA', 'water', 0.013, 0.013, 1.0, 12.28404901, 4.0E-4, 0.0, 0.0, 1.33E-5, 313.15, 35.0, 'Jou1993'), +(1632, 'CO2', 'MDEA', 'water', 0.016, 0.016, 1.0, 12.28404901, 5.6E-4, 0.0, 0.0, 1.87E-5, 313.15, 35.0, 'Jou1993'), +(1633, 'CO2', 'MDEA', 'water', 0.017, 0.017, 1.0, 12.28404901, 6.9E-4, 0.0, 0.0, 2.3E-5, 313.15, 35.0, 'Jou1993'), +(1634, 'CO2', 'MDEA', 'water', 0.027, 0.027, 1.0, 12.28404901, 0.00146, 0.0, 0.0, 4.87E-5, 313.15, 35.0, 'Jou1993'), +(1635, 'CO2', 'MDEA', 'water', 0.039, 0.039, 1.0, 12.28404901, 0.00224, 0.0, 0.0, 7.47E-5, 313.15, 35.0, 'Jou1993'), +(1636, 'CO2', 'MDEA', 'water', 0.059, 0.059, 1.0, 12.28404901, 0.00415, 0.0, 0.0, 1.38E-4, 313.15, 35.0, 'Jou1993'), +(1637, 'CO2', 'MDEA', 'water', 0.077, 0.077, 1.0, 12.28404901, 0.00719, 0.0, 0.0, 2.4E-4, 313.15, 35.0, 'Jou1993'), +(1638, 'CO2', 'MDEA', 'water', 0.106, 0.106, 1.0, 12.28404901, 0.011, 0.0, 0.0, 3.67E-4, 313.15, 35.0, 'Jou1993'), +(1639, 'CO2', 'MDEA', 'water', 0.118, 0.118, 1.0, 12.28404901, 0.0126, 0.0, 0.0, 4.2E-4, 313.15, 35.0, 'Jou1993'), +(1640, 'CO2', 'MDEA', 'water', 0.166, 0.166, 1.0, 12.28404901, 0.0216, 0.0, 0.0, 7.2E-4, 313.15, 35.0, 'Jou1993'), +(1641, 'CO2', 'MDEA', 'water', 0.23, 0.23, 1.0, 12.28404901, 0.0382, 0.0, 0.0, 0.00127, 313.15, 35.0, 'Jou1993'), +(1642, 'CO2', 'MDEA', 'water', 0.249, 0.249, 1.0, 12.28404901, 0.0443, 0.0, 0.0, 0.00148, 313.15, 35.0, 'Jou1993'), +(1643, 'CO2', 'MDEA', 'water', 0.296, 0.296, 1.0, 12.28404901, 0.0589, 0.0, 0.0, 0.00196, 313.15, 35.0, 'Jou1993'), +(1644, 'CO2', 'MDEA', 'water', 0.336, 0.336, 1.0, 12.28404901, 0.0829, 0.0, 0.0, 0.00276, 313.15, 35.0, 'Jou1993'), +(1645, 'CO2', 'MDEA', 'water', 0.394, 0.394, 1.0, 12.28404901, 0.12, 0.0, 0.0, 0.004, 313.15, 35.0, 'Jou1993'), +(1646, 'CO2', 'MDEA', 'water', 0.519, 0.519, 1.0, 12.28404901, 0.191, 0.0, 0.0, 0.00637, 313.15, 35.0, 'Jou1993'), +(1647, 'CO2', 'MDEA', 'water', 0.57, 0.57, 1.0, 12.28404901, 0.251, 0.0, 0.0, 0.00837, 313.15, 35.0, 'Jou1993'), +(1648, 'CO2', 'MDEA', 'water', 0.795, 0.795, 1.0, 12.28404901, 1.0, 0.0, 0.0, 0.0333, 313.15, 35.0, 'Jou1993'), +(1649, 'CO2', 'MDEA', 'water', 0.0077, 0.0077, 1.0, 12.28404901, 0.00963, 0.0, 0.0, 3.21E-4, 373.15, 35.0, 'Jou1993'), +(1650, 'CO2', 'MDEA', 'water', 0.0094, 0.0094, 1.0, 12.28404901, 0.0135, 0.0, 0.0, 4.5E-4, 373.15, 35.0, 'Jou1993'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1651, 'CO2', 'MDEA', 'water', 0.013, 0.013, 1.0, 12.28404901, 0.0172, 0.0, 0.0, 5.73E-4, 373.15, 35.0, 'Jou1993'), +(1652, 'CO2', 'MDEA', 'water', 0.025, 0.025, 1.0, 12.28404901, 0.0556, 0.0, 0.0, 0.00185, 373.15, 35.0, 'Jou1993'), +(1653, 'CO2', 'MDEA', 'water', 0.027, 0.027, 1.0, 12.28404901, 0.0502, 0.0, 0.0, 0.00167, 373.15, 35.0, 'Jou1993'), +(1654, 'CO2', 'MDEA', 'water', 0.034, 0.034, 1.0, 12.28404901, 0.0984, 0.0, 0.0, 0.00328, 373.15, 35.0, 'Jou1993'), +(1655, 'CO2', 'MDEA', 'water', 0.048, 0.048, 1.0, 12.28404901, 0.156, 0.0, 0.0, 0.0052, 373.15, 35.0, 'Jou1993'), +(1656, 'CO2', 'MDEA', 'water', 0.064, 0.064, 1.0, 12.28404901, 0.191, 0.0, 0.0, 0.00637, 373.15, 35.0, 'Jou1993'), +(1657, 'CO2', 'MDEA', 'water', 0.087, 0.087, 1.0, 12.28404901, 0.365, 0.0, 0.0, 0.0122, 373.15, 35.0, 'Jou1993'), +(1658, 'CO2', 'MDEA', 'water', 0.107, 0.107, 1.0, 12.28404901, 0.659, 0.0, 0.0, 0.022, 373.15, 35.0, 'Jou1993'), +(1659, 'CO2', 'MDEA', 'water', 0.134, 0.134, 1.0, 12.28404901, 1.03, 0.0, 0.0, 0.0343, 373.15, 35.0, 'Jou1993'), +(1660, 'CO2', 'MDEA', 'water', 0.16, 0.16, 1.0, 12.28404901, 1.25, 0.0, 0.0, 0.0417, 373.15, 35.0, 'Jou1993'), +(1661, 'CO2', 'MDEA', 'water', 0.219, 0.219, 1.0, 12.28404901, 2.17, 0.0, 0.0, 0.0723, 373.15, 35.0, 'Jou1993'), +(1662, 'CO2', 'MDEA', 'water', 0.231, 0.231, 1.0, 12.28404901, 2.62, 0.0, 0.0, 0.0873, 373.15, 35.0, 'Jou1993'), +(1663, 'CO2', 'MDEA', 'water', 0.271, 0.271, 1.0, 12.28404901, 2.36, 0.0, 0.0, 0.0787, 373.15, 35.0, 'Jou1993'), +(1664, 'CO2', 'MDEA', 'water', 0.785384693, 1.5659, 1.9938, 55.50929781, 0.67, 0.0, 0.0, 0.0247, 313.24, 19.19722168, 'Kuranov1996'), +(1665, 'CO2', 'MDEA', 'water', 0.929029993, 1.8523, 1.9938, 55.50929781, 2.149, 0.0, 0.0, 0.0716, 313.12, 19.19722168, 'Kuranov1996'), +(1666, 'CO2', 'MDEA', 'water', 0.974671482, 1.9433, 1.9938, 55.50929781, 3.47, 0.0, 0.0, 0.116, 313.13, 19.19722168, 'Kuranov1996'), +(1667, 'CO2', 'MDEA', 'water', 1.04263216, 2.0788, 1.9938, 55.50929781, 7.192, 0.0, 0.0, 0.24, 313.15, 19.19722168, 'Kuranov1996'), +(1668, 'CO2', 'MDEA', 'water', 1.042732471, 2.079, 1.9938, 55.50929781, 7.098, 0.0, 0.0, 0.237, 313.15, 19.19722168, 'Kuranov1996'), +(1669, 'CO2', 'MDEA', 'water', 1.126893369, 2.2468, 1.9938, 55.50929781, 14.079, 0.0, 0.0, 0.469, 313.25, 19.19722168, 'Kuranov1996'), +(1670, 'CO2', 'MDEA', 'water', 1.157287592, 2.3074, 1.9938, 55.50929781, 17.652, 0.0, 0.0, 0.588, 313.19, 19.19722168, 'Kuranov1996'), +(1671, 'CO2', 'MDEA', 'water', 1.230614906, 2.4536, 1.9938, 55.50929781, 25.273, 0.0, 0.0, 0.842, 313.2, 19.19722168, 'Kuranov1996'), +(1672, 'CO2', 'MDEA', 'water', 1.231668171, 2.4557, 1.9938, 55.50929781, 25.185, 0.0, 0.0, 0.84, 313.11, 19.19722168, 'Kuranov1996'), +(1673, 'CO2', 'MDEA', 'water', 1.279946648, 2.495, 1.9493, 55.50929781, 27.852, 0.0, 0.0, 0.928, 313.13, 18.84951912, 'Kuranov1996'), +(1674, 'CO2', 'MDEA', 'water', 1.34612425, 2.624, 1.9493, 55.50929781, 35.982, 0.0, 0.0, 1.2, 313.16, 18.84951912, 'Kuranov1996'), +(1675, 'CO2', 'MDEA', 'water', 0.701739086, 1.3679, 1.9493, 55.50929781, 1.195, 0.0, 0.0, 0.0465, 333.16, 18.84951912, 'Kuranov1996'), +(1676, 'CO2', 'MDEA', 'water', 0.857333402, 1.6712, 1.9493, 55.50929781, 3.017, 0.0, 0.0, 0.107, 333.16, 18.84951912, 'Kuranov1996'), +(1677, 'CO2', 'MDEA', 'water', 0.942389576, 1.837, 1.9493, 55.50929781, 5.695, 0.0, 0.0, 0.2, 333.16, 18.84951912, 'Kuranov1996'), +(1678, 'CO2', 'MDEA', 'water', 0.986200174, 1.9224, 1.9493, 55.50929781, 8.101, 0.0, 0.0, 0.277, 333.16, 18.84951912, 'Kuranov1996'), +(1679, 'CO2', 'MDEA', 'water', 1.056994819, 2.0604, 1.9493, 55.50929781, 13.716, 0.0, 0.0, 0.464, 333.16, 18.84951912, 'Kuranov1996'), +(1680, 'CO2', 'MDEA', 'water', 1.099215103, 2.1427, 1.9493, 55.50929781, 18.471, 0.0, 0.0, 0.622, 333.16, 18.84951912, 'Kuranov1996'), +(1681, 'CO2', 'MDEA', 'water', 1.253424306, 2.4433, 1.9493, 55.50929781, 40.248, 0.0, 0.0, 1.34, 333.16, 18.84951912, 'Kuranov1996'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1682, 'CO2', 'MDEA', 'water', 0.297183604, 0.5793, 1.9493, 55.50929781, 1.269, 0.0, 0.0, 0.0756, 373.15, 18.84951912, 'Kuranov1996'), +(1683, 'CO2', 'MDEA', 'water', 0.499153542, 0.973, 1.9493, 55.50929781, 4.686, 0.0, 0.0, 0.156, 373.15, 18.84951912, 'Kuranov1996'), +(1684, 'CO2', 'MDEA', 'water', 0.667932078, 1.302, 1.9493, 55.50929781, 8.596, 0.0, 0.0, 0.287, 373.15, 18.84951912, 'Kuranov1996'), +(1685, 'CO2', 'MDEA', 'water', 0.806443339, 1.572, 1.9493, 55.50929781, 14.744, 0.0, 0.0, 0.491, 373.15, 18.84951912, 'Kuranov1996'), +(1686, 'CO2', 'MDEA', 'water', 0.82527061, 1.6087, 1.9493, 55.50929781, 15.977, 0.0, 0.0, 0.533, 373.15, 18.84951912, 'Kuranov1996'), +(1687, 'CO2', 'MDEA', 'water', 0.862104345, 1.6805, 1.9493, 55.50929781, 18.372, 0.0, 0.0, 0.612, 373.15, 18.84951912, 'Kuranov1996'), +(1688, 'CO2', 'MDEA', 'water', 0.944031191, 1.8402, 1.9493, 55.50929781, 25.554, 0.0, 0.0, 0.852, 373.15, 18.84951912, 'Kuranov1996'), +(1689, 'CO2', 'MDEA', 'water', 1.043451495, 2.034, 1.9493, 55.50929781, 37.831, 0.0, 0.0, 1.26, 373.15, 18.84951912, 'Kuranov1996'), +(1690, 'CO2', 'MDEA', 'water', 1.062483969, 2.0711, 1.9493, 55.50929781, 40.808, 0.0, 0.0, 1.36, 373.15, 18.84951912, 'Kuranov1996'), +(1692, 'CO2', 'MDEA', 'water', 0.209049402, 0.4075, 1.9493, 55.50929781, 3.717, 0.0, 0.0, 0.124, 393.17, 18.84951912, 'Kuranov1996'), +(1693, 'CO2', 'MDEA', 'water', 0.37141538, 0.724, 1.9493, 55.50929781, 6.964, 0.0, 0.0, 0.232, 393.17, 18.84951912, 'Kuranov1996'), +(1694, 'CO2', 'MDEA', 'water', 0.491048069, 0.9572, 1.9493, 55.50929781, 10.735, 0.0, 0.0, 0.358, 393.17, 18.84951912, 'Kuranov1996'), +(1695, 'CO2', 'MDEA', 'water', 0.676755758, 1.3192, 1.9493, 55.50929781, 19.87, 0.0, 0.0, 0.662, 393.17, 18.84951912, 'Kuranov1996'), +(1696, 'CO2', 'MDEA', 'water', 0.86923511, 1.6944, 1.9493, 55.50929781, 36.732, 0.0, 0.0, 1.22, 393.17, 18.84951912, 'Kuranov1996'), +(1697, 'CO2', 'MDEA', 'water', 0.975529677, 1.9016, 1.9493, 55.50929781, 50.367, 0.0, 0.0, 1.68, 393.17, 18.84951912, 'Kuranov1996'), +(1699, 'CO2', 'MDEA', 'water', 0.183399169, 0.3575, 1.9493, 55.50929781, 6.969, 0.0, 0.0, 0.232, 413.16, 18.84951912, 'Kuranov1996'), +(1700, 'CO2', 'MDEA', 'water', 0.286872211, 0.5592, 1.9493, 55.50929781, 10.798, 0.0, 0.0, 0.36, 413.16, 18.84951912, 'Kuranov1996'), +(1701, 'CO2', 'MDEA', 'water', 0.441235315, 0.8601, 1.9493, 55.50929781, 18.931, 0.0, 0.0, 0.631, 413.16, 18.84951912, 'Kuranov1996'), +(1702, 'CO2', 'MDEA', 'water', 0.476837839, 0.9295, 1.9493, 55.50929781, 21.328, 0.0, 0.0, 0.711, 413.16, 18.84951912, 'Kuranov1996'), +(1703, 'CO2', 'MDEA', 'water', 0.615143898, 1.1991, 1.9493, 55.50929781, 32.247, 0.0, 0.0, 1.07, 413.16, 18.84951912, 'Kuranov1996'), +(1704, 'CO2', 'MDEA', 'water', 0.685630739, 1.3365, 1.9493, 55.50929781, 39.329, 0.0, 0.0, 1.31, 413.16, 18.84951912, 'Kuranov1996'), +(1705, 'CO2', 'MDEA', 'water', 0.673155867, 2.6729, 3.9707, 55.50929781, 0.665, 0.0, 0.0, 0.0245, 313.15, 32.11818605, 'Kuranov1996'), +(1706, 'CO2', 'MDEA', 'water', 0.85884101, 3.4102, 3.9707, 55.50929781, 2.023, 0.0, 0.0, 0.0674, 313.15, 32.11818605, 'Kuranov1996'), +(1707, 'CO2', 'MDEA', 'water', 0.888508323, 3.528, 3.9707, 55.50929781, 2.545, 0.0, 0.0, 0.0848, 313.15, 32.11818605, 'Kuranov1996'), +(1708, 'CO2', 'MDEA', 'water', 0.972246707, 3.8605, 3.9707, 55.50929781, 5.931, 0.0, 0.0, 0.198, 313.15, 32.11818605, 'Kuranov1996'), +(1709, 'CO2', 'MDEA', 'water', 0.980884982, 3.8948, 3.9707, 55.50929781, 6.738, 0.0, 0.0, 0.225, 313.15, 32.11818605, 'Kuranov1996'), +(1710, 'CO2', 'MDEA', 'water', 1.051980759, 4.1771, 3.9707, 55.50929781, 16.054, 0.0, 0.0, 0.535, 313.15, 32.11818605, 'Kuranov1996'), +(1711, 'CO2', 'MDEA', 'water', 1.058251694, 4.202, 3.9707, 55.50929781, 15.858, 0.0, 0.0, 0.529, 313.15, 32.11818605, 'Kuranov1996'), +(1712, 'CO2', 'MDEA', 'water', 1.079935528, 4.2881, 3.9707, 55.50929781, 19.732, 0.0, 0.0, 0.658, 313.15, 32.11818605, 'Kuranov1996'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1713, 'CO2', 'MDEA', 'water', 1.125645352, 4.4696, 3.9707, 55.50929781, 28.862, 0.0, 0.0, 0.962, 313.15, 32.11818605, 'Kuranov1996'), +(1714, 'CO2', 'MDEA', 'water', 1.157226685, 4.595, 3.9707, 55.50929781, 36.608, 0.0, 0.0, 1.22, 313.15, 32.11818605, 'Kuranov1996'), +(1715, 'CO2', 'MDEA', 'water', 0.669126351, 2.6569, 3.9707, 55.50929781, 1.854, 0.0, 0.0, 0.0685, 333.15, 32.11818605, 'Kuranov1996'), +(1716, 'CO2', 'MDEA', 'water', 0.772861208, 3.0688, 3.9707, 55.50929781, 3.152, 0.0, 0.0, 0.112, 333.15, 32.11818605, 'Kuranov1996'), +(1717, 'CO2', 'MDEA', 'water', 0.895962928, 3.5576, 3.9707, 55.50929781, 6.744, 0.0, 0.0, 0.231, 333.15, 32.11818605, 'Kuranov1996'), +(1718, 'CO2', 'MDEA', 'water', 0.920240764, 3.654, 3.9707, 55.50929781, 8.323, 0.0, 0.0, 0.284, 333.15, 32.11818605, 'Kuranov1996'), +(1719, 'CO2', 'MDEA', 'water', 0.95673307, 3.7989, 3.9707, 55.50929781, 11.588, 0.0, 0.0, 0.386, 333.15, 32.11818605, 'Kuranov1996'), +(1720, 'CO2', 'MDEA', 'water', 0.973203717, 3.8643, 3.9707, 55.50929781, 14.966, 0.0, 0.0, 0.499, 333.15, 32.11818605, 'Kuranov1996'), +(1721, 'CO2', 'MDEA', 'water', 0.974538494, 3.8696, 3.9707, 55.50929781, 13.566, 0.0, 0.0, 0.452, 333.15, 32.11818605, 'Kuranov1996'), +(1722, 'CO2', 'MDEA', 'water', 1.005011711, 3.9906, 3.9707, 55.50929781, 17.909, 0.0, 0.0, 0.597, 333.15, 32.11818605, 'Kuranov1996'), +(1723, 'CO2', 'MDEA', 'water', 1.082554713, 4.2985, 3.9707, 55.50929781, 33.63, 0.0, 0.0, 1.12, 333.15, 32.11818605, 'Kuranov1996'), +(1724, 'CO2', 'MDEA', 'water', 0.345833228, 1.3732, 3.9707, 55.50929781, 4.397, 0.0, 0.0, 0.147, 373.15, 32.11818605, 'Kuranov1996'), +(1725, 'CO2', 'MDEA', 'water', 0.464829879, 1.8457, 3.9707, 55.50929781, 6.856, 0.0, 0.0, 0.229, 373.15, 32.11818605, 'Kuranov1996'), +(1726, 'CO2', 'MDEA', 'water', 0.530510993, 2.1065, 3.9707, 55.50929781, 8.932, 0.0, 0.0, 0.298, 373.15, 32.11818605, 'Kuranov1996'), +(1727, 'CO2', 'MDEA', 'water', 0.637595386, 2.5317, 3.9707, 55.50929781, 13.344, 0.0, 0.0, 0.445, 373.15, 32.11818605, 'Kuranov1996'), +(1728, 'CO2', 'MDEA', 'water', 0.698919586, 2.7752, 3.9707, 55.50929781, 17.099, 0.0, 0.0, 0.57, 373.15, 32.11818605, 'Kuranov1996'), +(1729, 'CO2', 'MDEA', 'water', 0.749666306, 2.9767, 3.9707, 55.50929781, 20.722, 0.0, 0.0, 0.691, 373.15, 32.11818605, 'Kuranov1996'), +(1730, 'CO2', 'MDEA', 'water', 0.827637444, 3.2863, 3.9707, 55.50929781, 29.238, 0.0, 0.0, 0.975, 373.15, 32.11818605, 'Kuranov1996'), +(1731, 'CO2', 'MDEA', 'water', 0.892084519, 3.5422, 3.9707, 55.50929781, 38.705, 0.0, 0.0, 1.29, 373.15, 32.11818605, 'Kuranov1996'), +(1733, 'CO2', 'MDEA', 'water', 0.194676002, 0.773, 3.9707, 55.50929781, 5.242, 0.0, 0.0, 0.175, 393.15, 32.11818605, 'Kuranov1996'), +(1734, 'CO2', 'MDEA', 'water', 0.251718841, 0.9995, 3.9707, 55.50929781, 7.025, 0.0, 0.0, 0.234, 393.15, 32.11818605, 'Kuranov1996'), +(1735, 'CO2', 'MDEA', 'water', 0.373385045, 1.4826, 3.9707, 55.50929781, 12.053, 0.0, 0.0, 0.402, 393.15, 32.11818605, 'Kuranov1996'), +(1736, 'CO2', 'MDEA', 'water', 0.459692246, 1.8253, 3.9707, 55.50929781, 16.825, 0.0, 0.0, 0.561, 393.15, 32.11818605, 'Kuranov1996'), +(1737, 'CO2', 'MDEA', 'water', 0.545495756, 2.166, 3.9707, 55.50929781, 22.893, 0.0, 0.0, 0.763, 393.15, 32.11818605, 'Kuranov1996'), +(1738, 'CO2', 'MDEA', 'water', 0.614299746, 2.4392, 3.9707, 55.50929781, 29.055, 0.0, 0.0, 0.969, 393.15, 32.11818605, 'Kuranov1996'), +(1739, 'CO2', 'MDEA', 'water', 0.700808422, 2.7827, 3.9707, 55.50929781, 38.962, 0.0, 0.0, 1.3, 393.15, 32.11818605, 'Kuranov1996'), +(1741, 'CO2', 'MDEA', 'water', 0.105145189, 0.4175, 3.9707, 55.50929781, 6.601, 0.0, 0.0, 0.22, 413.15, 32.11818605, 'Kuranov1996'), +(1742, 'CO2', 'MDEA', 'water', 0.21615836, 0.8583, 3.9707, 55.50929781, 12.956, 0.0, 0.0, 0.432, 413.15, 32.11818605, 'Kuranov1996'), +(1743, 'CO2', 'MDEA', 'water', 0.254615055, 1.011, 3.9707, 55.50929781, 15.467, 0.0, 0.0, 0.516, 413.15, 32.11818605, 'Kuranov1996'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1744, 'CO2', 'MDEA', 'water', 0.387689828, 1.5394, 3.9707, 55.50929781, 27.447, 0.0, 0.0, 0.915, 413.15, 32.11818605, 'Kuranov1996'), +(1745, 'CO2', 'MDEA', 'water', 0.438260256, 1.7402, 3.9707, 55.50929781, 33.961, 0.0, 0.0, 1.13, 413.15, 32.11818605, 'Kuranov1996'), +(1746, 'CO2', 'MDEA', 'water', 0.95, 0.95, 1.0, 6.912072251, 49.3, 0.0, 0.0, 1.64, 373.15, 48.9, 'Chakma1987'), +(1747, 'CO2', 'MDEA', 'water', 0.792, 0.792, 1.0, 6.912072251, 31.72, 0.0, 0.0, 1.06, 373.15, 48.9, 'Chakma1987'), +(1748, 'CO2', 'MDEA', 'water', 0.643, 0.643, 1.0, 6.912072251, 21.03, 0.0, 0.0, 0.701, 373.15, 48.9, 'Chakma1987'), +(1749, 'CO2', 'MDEA', 'water', 0.497, 0.497, 1.0, 6.912072251, 14.13, 0.0, 0.0, 0.471, 373.15, 48.9, 'Chakma1987'), +(1750, 'CO2', 'MDEA', 'water', 0.384, 0.384, 1.0, 6.912072251, 8.96, 0.0, 0.0, 0.299, 373.15, 48.9, 'Chakma1987'), +(1751, 'CO2', 'MDEA', 'water', 0.314, 0.314, 1.0, 6.912072251, 5.86, 0.0, 0.0, 0.195, 373.15, 48.9, 'Chakma1987'), +(1752, 'CO2', 'MDEA', 'water', 0.213, 0.213, 1.0, 6.912072251, 2.76, 0.0, 0.0, 0.092, 373.15, 48.9, 'Chakma1987'), +(1753, 'CO2', 'MDEA', 'water', 0.139, 0.139, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 373.15, 48.9, 'Chakma1987'), +(1754, 'CO2', 'MDEA', 'water', 0.337, 0.337, 1.0, 6.912072251, 45.16, 0.0, 0.0, 1.51, 413.15, 48.9, 'Chakma1987'), +(1755, 'CO2', 'MDEA', 'water', 0.288, 0.288, 1.0, 6.912072251, 36.2, 0.0, 0.0, 1.21, 413.15, 48.9, 'Chakma1987'), +(1756, 'CO2', 'MDEA', 'water', 0.228, 0.228, 1.0, 6.912072251, 25.17, 0.0, 0.0, 0.839, 413.15, 48.9, 'Chakma1987'), +(1757, 'CO2', 'MDEA', 'water', 0.157, 0.157, 1.0, 6.912072251, 14.13, 0.0, 0.0, 0.471, 413.15, 48.9, 'Chakma1987'), +(1758, 'CO2', 'MDEA', 'water', 0.106, 0.106, 1.0, 6.912072251, 7.24, 0.0, 0.0, 0.241, 413.15, 48.9, 'Chakma1987'), +(1759, 'CO2', 'MDEA', 'water', 0.066, 0.066, 1.0, 6.912072251, 3.1, 0.0, 0.0, 0.103, 413.15, 48.9, 'Chakma1987'), +(1760, 'CO2', 'MDEA', 'water', 0.04, 0.04, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 413.15, 48.9, 'Chakma1987'), +(1761, 'CO2', 'MDEA', 'water', 0.21, 0.21, 1.0, 6.912072251, 41.37, 0.0, 0.0, 1.38, 433.15, 48.9, 'Chakma1987'), +(1762, 'CO2', 'MDEA', 'water', 0.166, 0.166, 1.0, 6.912072251, 30.34, 0.0, 0.0, 1.01, 433.15, 48.9, 'Chakma1987'), +(1763, 'CO2', 'MDEA', 'water', 0.106, 0.106, 1.0, 6.912072251, 15.17, 0.0, 0.0, 0.506, 433.15, 48.9, 'Chakma1987'), +(1764, 'CO2', 'MDEA', 'water', 0.064, 0.064, 1.0, 6.912072251, 6.89, 0.0, 0.0, 0.23, 433.15, 48.9, 'Chakma1987'), +(1765, 'CO2', 'MDEA', 'water', 0.038, 0.038, 1.0, 6.912072251, 2.76, 0.0, 0.0, 0.092, 433.15, 48.9, 'Chakma1987'), +(1766, 'CO2', 'MDEA', 'water', 0.025, 0.025, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 433.15, 48.9, 'Chakma1987'), +(1767, 'CO2', 'MDEA', 'water', 0.164, 0.164, 1.0, 6.912072251, 45.5, 0.0, 0.0, 1.52, 453.15, 48.9, 'Chakma1987'), +(1768, 'CO2', 'MDEA', 'water', 0.148, 0.148, 1.0, 6.912072251, 39.3, 0.0, 0.0, 1.31, 453.15, 48.9, 'Chakma1987'), +(1769, 'CO2', 'MDEA', 'water', 0.127, 0.127, 1.0, 6.912072251, 32.4, 0.0, 0.0, 1.08, 453.15, 48.9, 'Chakma1987'), +(1770, 'CO2', 'MDEA', 'water', 0.104, 0.104, 1.0, 6.912072251, 24.88, 0.0, 0.0, 0.829, 453.15, 48.9, 'Chakma1987'), +(1771, 'CO2', 'MDEA', 'water', 0.073, 0.073, 1.0, 6.912072251, 15.17, 0.0, 0.0, 0.506, 453.15, 48.9, 'Chakma1987'), +(1772, 'CO2', 'MDEA', 'water', 0.049, 0.049, 1.0, 6.912072251, 7.93, 0.0, 0.0, 0.264, 453.15, 48.9, 'Chakma1987'), +(1773, 'CO2', 'MDEA', 'water', 0.035, 0.035, 1.0, 6.912072251, 4.14, 0.0, 0.0, 0.138, 453.15, 48.9, 'Chakma1987'), +(1774, 'CO2', 'MDEA', 'water', 0.017, 0.017, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 453.15, 48.9, 'Chakma1987'), +(1775, 'CO2', 'MDEA', 'water', 0.107, 0.107, 1.0, 6.912072251, 35.58, 0.0, 0.0, 1.19, 473.15, 48.9, 'Chakma1987'), +(1776, 'CO2', 'MDEA', 'water', 0.087, 0.087, 1.0, 6.912072251, 27.33, 0.0, 0.0, 0.911, 473.15, 48.9, 'Chakma1987'), +(1777, 'CO2', 'MDEA', 'water', 0.069, 0.069, 1.0, 6.912072251, 20.34, 0.0, 0.0, 0.678, 473.15, 48.9, 'Chakma1987'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1778, 'CO2', 'MDEA', 'water', 0.05, 0.05, 1.0, 6.912072251, 13.44, 0.0, 0.0, 0.448, 473.15, 48.9, 'Chakma1987'), +(1779, 'CO2', 'MDEA', 'water', 0.031, 0.031, 1.0, 6.912072251, 6.21, 0.0, 0.0, 0.207, 473.15, 48.9, 'Chakma1987'), +(1780, 'CO2', 'MDEA', 'water', 0.021, 0.021, 1.0, 6.912072251, 3.45, 0.0, 0.0, 0.115, 473.15, 48.9, 'Chakma1987'), +(1781, 'CO2', 'MDEA', 'water', 0.013, 0.013, 1.0, 6.912072251, 1.72, 0.0, 0.0, 0.0573, 473.15, 48.9, 'Chakma1987'), +(1782, 'CO2', 'MDEA', 'water', 1.304, 1.304, 1.0, 26.79201675, 49.3, 0.0, 0.0, 1.64, 373.15, 19.8, 'Chakma1987'), +(1783, 'CO2', 'MDEA', 'water', 1.233, 1.233, 1.0, 26.79201675, 39.3, 0.0, 0.0, 1.31, 373.15, 19.8, 'Chakma1987'), +(1784, 'CO2', 'MDEA', 'water', 1.12, 1.12, 1.0, 26.79201675, 27.58, 0.0, 0.0, 0.919, 373.15, 19.8, 'Chakma1987'), +(1785, 'CO2', 'MDEA', 'water', 1.016, 1.016, 1.0, 26.79201675, 20.0, 0.0, 0.0, 0.667, 373.15, 19.8, 'Chakma1987'), +(1786, 'CO2', 'MDEA', 'water', 0.904, 0.904, 1.0, 26.79201675, 13.1, 0.0, 0.0, 0.437, 373.15, 19.8, 'Chakma1987'), +(1787, 'CO2', 'MDEA', 'water', 0.694, 0.694, 1.0, 26.79201675, 7.58, 0.0, 0.0, 0.253, 373.15, 19.8, 'Chakma1987'), +(1788, 'CO2', 'MDEA', 'water', 0.523, 0.523, 1.0, 26.79201675, 5.17, 0.0, 0.0, 0.172, 373.15, 19.8, 'Chakma1987'), +(1789, 'CO2', 'MDEA', 'water', 0.378, 0.378, 1.0, 26.79201675, 2.76, 0.0, 0.0, 0.092, 373.15, 19.8, 'Chakma1987'), +(1790, 'CO2', 'MDEA', 'water', 0.274, 0.274, 1.0, 26.79201675, 1.38, 0.0, 0.0, 0.046, 373.15, 19.8, 'Chakma1987'), +(1791, 'CO2', 'MDEA', 'water', 1.003, 1.003, 1.0, 26.79201675, 43.09, 0.0, 0.0, 1.44, 413.15, 19.8, 'Chakma1987'), +(1792, 'CO2', 'MDEA', 'water', 0.679, 0.679, 1.0, 26.79201675, 26.89, 0.0, 0.0, 0.896, 413.15, 19.8, 'Chakma1987'), +(1793, 'CO2', 'MDEA', 'water', 0.484, 0.484, 1.0, 26.79201675, 18.27, 0.0, 0.0, 0.609, 413.15, 19.8, 'Chakma1987'), +(1794, 'CO2', 'MDEA', 'water', 0.355, 0.355, 1.0, 26.79201675, 11.72, 0.0, 0.0, 0.391, 413.15, 19.8, 'Chakma1987'), +(1795, 'CO2', 'MDEA', 'water', 0.301, 0.301, 1.0, 26.79201675, 9.31, 0.0, 0.0, 0.31, 413.15, 19.8, 'Chakma1987'), +(1796, 'CO2', 'MDEA', 'water', 0.261, 0.261, 1.0, 26.79201675, 7.24, 0.0, 0.0, 0.241, 413.15, 19.8, 'Chakma1987'), +(1797, 'CO2', 'MDEA', 'water', 0.204, 0.204, 1.0, 26.79201675, 4.48, 0.0, 0.0, 0.149, 413.15, 19.8, 'Chakma1987'), +(1798, 'CO2', 'MDEA', 'water', 0.141, 0.141, 1.0, 26.79201675, 2.07, 0.0, 0.0, 0.069, 413.15, 19.8, 'Chakma1987'), +(1799, 'CO2', 'MDEA', 'water', 0.095, 0.095, 1.0, 26.79201675, 1.03, 0.0, 0.0, 0.0343, 413.15, 19.8, 'Chakma1987'), +(1800, 'CO2', 'MDEA', 'water', 0.71, 0.71, 1.0, 26.79201675, 42.75, 0.0, 0.0, 1.43, 433.15, 19.8, 'Chakma1987'), +(1801, 'CO2', 'MDEA', 'water', 0.495, 0.495, 1.0, 26.79201675, 29.65, 0.0, 0.0, 0.988, 433.15, 19.8, 'Chakma1987'), +(1802, 'CO2', 'MDEA', 'water', 0.38, 0.38, 1.0, 26.79201675, 20.68, 0.0, 0.0, 0.689, 433.15, 19.8, 'Chakma1987'), +(1803, 'CO2', 'MDEA', 'water', 0.305, 0.305, 1.0, 26.79201675, 15.17, 0.0, 0.0, 0.506, 433.15, 19.8, 'Chakma1987'), +(1804, 'CO2', 'MDEA', 'water', 0.236, 0.236, 1.0, 26.79201675, 10.0, 0.0, 0.0, 0.333, 433.15, 19.8, 'Chakma1987'), +(1805, 'CO2', 'MDEA', 'water', 0.188, 0.188, 1.0, 26.79201675, 6.89, 0.0, 0.0, 0.23, 433.15, 19.8, 'Chakma1987'), +(1806, 'CO2', 'MDEA', 'water', 0.147, 0.147, 1.0, 26.79201675, 4.14, 0.0, 0.0, 0.138, 433.15, 19.8, 'Chakma1987'), +(1807, 'CO2', 'MDEA', 'water', 0.084, 0.084, 1.0, 26.79201675, 1.38, 0.0, 0.0, 0.046, 433.15, 19.8, 'Chakma1987'), +(1808, 'CO2', 'MDEA', 'water', 0.504, 0.504, 1.0, 26.79201675, 41.37, 0.0, 0.0, 1.38, 453.15, 19.8, 'Chakma1987'), +(1809, 'CO2', 'MDEA', 'water', 0.364, 0.364, 1.0, 26.79201675, 28.96, 0.0, 0.0, 0.965, 453.15, 19.8, 'Chakma1987'), +(1810, 'CO2', 'MDEA', 'water', 0.283, 0.283, 1.0, 26.79201675, 20.68, 0.0, 0.0, 0.689, 453.15, 19.8, 'Chakma1987'), +(1811, 'CO2', 'MDEA', 'water', 0.218, 0.218, 1.0, 26.79201675, 13.79, 0.0, 0.0, 0.46, 453.15, 19.8, 'Chakma1987'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1812, 'CO2', 'MDEA', 'water', 0.158, 0.158, 1.0, 26.79201675, 8.27, 0.0, 0.0, 0.276, 453.15, 19.8, 'Chakma1987'), +(1813, 'CO2', 'MDEA', 'water', 0.127, 0.127, 1.0, 26.79201675, 5.52, 0.0, 0.0, 0.184, 453.15, 19.8, 'Chakma1987'), +(1814, 'CO2', 'MDEA', 'water', 0.089, 0.089, 1.0, 26.79201675, 2.76, 0.0, 0.0, 0.092, 453.15, 19.8, 'Chakma1987'), +(1815, 'CO2', 'MDEA', 'water', 0.066, 0.066, 1.0, 26.79201675, 1.38, 0.0, 0.0, 0.046, 453.15, 19.8, 'Chakma1987'), +(1816, 'CO2', 'MDEA', 'water', 0.349, 0.349, 1.0, 26.79201675, 35.85, 0.0, 0.0, 1.2, 473.15, 19.8, 'Chakma1987'), +(1817, 'CO2', 'MDEA', 'water', 0.26, 0.26, 1.0, 26.79201675, 24.82, 0.0, 0.0, 0.827, 473.15, 19.8, 'Chakma1987'), +(1818, 'CO2', 'MDEA', 'water', 0.213, 0.213, 1.0, 26.79201675, 17.93, 0.0, 0.0, 0.598, 473.15, 19.8, 'Chakma1987'), +(1819, 'CO2', 'MDEA', 'water', 0.156, 0.156, 1.0, 26.79201675, 11.03, 0.0, 0.0, 0.368, 473.15, 19.8, 'Chakma1987'), +(1820, 'CO2', 'MDEA', 'water', 0.118, 0.118, 1.0, 26.79201675, 6.89, 0.0, 0.0, 0.23, 473.15, 19.8, 'Chakma1987'), +(1821, 'CO2', 'MDEA', 'water', 0.096, 0.096, 1.0, 26.79201675, 4.14, 0.0, 0.0, 0.138, 473.15, 19.8, 'Chakma1987'), +(1822, 'CO2', 'MDEA', 'water', 0.068, 0.068, 1.0, 125.6752706, 0.01051, 0.0, 0.0, 3.5E-4, 323.15, 5.0, 'Rho1997'), +(1823, 'CO2', 'MDEA', 'water', 0.01495, 0.1495, 1.0, 125.6752706, 0.02051, 0.0, 0.0, 6.84E-4, 323.15, 5.0, 'Rho1997'), +(1824, 'CO2', 'MDEA', 'water', 0.2375, 0.2375, 1.0, 125.6752706, 0.0275, 0.0, 0.0, 9.17E-4, 323.15, 5.0, 'Rho1997'), +(1825, 'CO2', 'MDEA', 'water', 0.3362, 0.3362, 1.0, 125.6752706, 0.04249, 0.0, 0.0, 0.00142, 323.15, 5.0, 'Rho1997'), +(1826, 'CO2', 'MDEA', 'water', 0.4287, 0.4287, 1.0, 125.6752706, 0.06847, 0.0, 0.0, 0.00228, 323.15, 5.0, 'Rho1997'), +(1827, 'CO2', 'MDEA', 'water', 0.5019, 0.5019, 1.0, 125.6752706, 0.08945, 0.0, 0.0, 0.00298, 323.15, 5.0, 'Rho1997'), +(1828, 'CO2', 'MDEA', 'water', 0.5585, 0.5585, 1.0, 125.6752706, 0.1184, 0.0, 0.0, 0.00395, 323.15, 5.0, 'Rho1997'), +(1829, 'CO2', 'MDEA', 'water', 0.6266, 0.6266, 1.0, 125.6752706, 0.1594, 0.0, 0.0, 0.00531, 323.15, 5.0, 'Rho1997'), +(1830, 'CO2', 'MDEA', 'water', 0.6843, 0.6843, 1.0, 125.6752706, 0.2063, 0.0, 0.0, 0.00688, 323.15, 5.0, 'Rho1997'), +(1831, 'CO2', 'MDEA', 'water', 0.0451, 0.0451, 1.0, 25.65130684, 0.01141, 0.0, 0.0, 3.8E-4, 323.15, 20.5, 'Rho1997'), +(1832, 'CO2', 'MDEA', 'water', 0.1185, 0.1185, 1.0, 25.65130684, 0.0334, 0.0, 0.0, 0.00111, 323.15, 20.5, 'Rho1997'), +(1833, 'CO2', 'MDEA', 'water', 0.2223, 0.2223, 1.0, 25.65130684, 0.05738, 0.0, 0.0, 0.00191, 323.15, 20.5, 'Rho1997'), +(1834, 'CO2', 'MDEA', 'water', 0.3368, 0.3368, 1.0, 25.65130684, 0.1133, 0.0, 0.0, 0.00378, 323.15, 20.5, 'Rho1997'), +(1835, 'CO2', 'MDEA', 'water', 0.4332, 0.4332, 1.0, 25.65130684, 0.1942, 0.0, 0.0, 0.00647, 323.15, 20.5, 'Rho1997'), +(1836, 'CO2', 'MDEA', 'water', 0.4933, 0.4933, 1.0, 25.65130684, 0.2542, 0.0, 0.0, 0.00847, 323.15, 20.5, 'Rho1997'), +(1837, 'CO2', 'MDEA', 'water', 0.5899, 0.5899, 1.0, 25.65130684, 0.3971, 0.0, 0.0, 0.0132, 323.15, 20.5, 'Rho1997'), +(1838, 'CO2', 'MDEA', 'water', 0.6117, 0.6117, 1.0, 25.65130684, 0.5549, 0.0, 0.0, 0.0185, 323.15, 20.5, 'Rho1997'), +(1839, 'CO2', 'MDEA', 'water', 0.7149, 0.7149, 1.0, 25.65130684, 0.7218, 0.0, 0.0, 0.0241, 323.15, 20.5, 'Rho1997'), +(1840, 'CO2', 'MDEA', 'water', 0.7857, 0.7857, 1.0, 25.65130684, 1.06, 0.0, 0.0, 0.0353, 323.15, 20.5, 'Rho1997'), +(1841, 'CO2', 'MDEA', 'water', 0.8478, 0.8478, 1.0, 25.65130684, 1.468, 0.0, 0.0, 0.0489, 323.15, 20.5, 'Rho1997'), +(1842, 'CO2', 'MDEA', 'water', 0.015, 0.015, 1.0, 6.614487927, 0.00775, 0.0, 0.0, 2.58E-4, 323.15, 50.0, 'Rho1997'), +(1843, 'CO2', 'MDEA', 'water', 0.0442, 0.0442, 1.0, 6.614487927, 0.02474, 0.0, 0.0, 8.25E-4, 323.15, 50.0, 'Rho1997'), +(1844, 'CO2', 'MDEA', 'water', 0.074, 0.074, 1.0, 6.614487927, 0.04872, 0.0, 0.0, 0.00162, 323.15, 50.0, 'Rho1997'), +(1845, 'CO2', 'MDEA', 'water', 0.1315, 0.1315, 1.0, 6.614487927, 0.1166, 0.0, 0.0, 0.00389, 323.15, 50.0, 'Rho1997'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1846, 'CO2', 'MDEA', 'water', 0.1916, 0.1916, 1.0, 6.614487927, 0.1736, 0.0, 0.0, 0.00579, 323.15, 50.0, 'Rho1997'), +(1847, 'CO2', 'MDEA', 'water', 0.242, 0.242, 1.0, 6.614487927, 0.2445, 0.0, 0.0, 0.00815, 323.15, 50.0, 'Rho1997'), +(1848, 'CO2', 'MDEA', 'water', 0.319, 0.319, 1.0, 6.614487927, 0.3874, 0.0, 0.0, 0.0129, 323.15, 50.0, 'Rho1997'), +(1849, 'CO2', 'MDEA', 'water', 0.3854, 0.3854, 1.0, 6.614487927, 0.5303, 0.0, 0.0, 0.0177, 323.15, 50.0, 'Rho1997'), +(1850, 'CO2', 'MDEA', 'water', 0.4529, 0.4529, 1.0, 6.614487927, 0.7092, 0.0, 0.0, 0.0236, 323.15, 50.0, 'Rho1997'), +(1851, 'CO2', 'MDEA', 'water', 0.026, 0.026, 1.0, 2.204829309, 0.1004, 0.0, 0.0, 0.00335, 323.15, 75.0, 'Rho1997'), +(1852, 'CO2', 'MDEA', 'water', 0.0708, 0.0708, 1.0, 2.204829309, 0.2483, 0.0, 0.0, 0.00828, 323.15, 75.0, 'Rho1997'), +(1853, 'CO2', 'MDEA', 'water', 0.1075, 0.1075, 1.0, 2.204829309, 0.4442, 0.0, 0.0, 0.0148, 323.15, 75.0, 'Rho1997'), +(1854, 'CO2', 'MDEA', 'water', 0.1457, 0.1457, 1.0, 2.204829309, 0.622, 0.0, 0.0, 0.0207, 323.15, 75.0, 'Rho1997'), +(1855, 'CO2', 'MDEA', 'water', 0.1842, 0.1842, 1.0, 2.204829309, 0.8209, 0.0, 0.0, 0.0274, 323.15, 75.0, 'Rho1997'), +(1856, 'CO2', 'MDEA', 'water', 0.2246, 0.2246, 1.0, 2.204829309, 1.06, 0.0, 0.0, 0.0353, 323.15, 75.0, 'Rho1997'), +(1857, 'CO2', 'MDEA', 'water', 0.2728, 0.2728, 1.0, 2.204829309, 1.392, 0.0, 0.0, 0.0464, 323.15, 75.0, 'Rho1997'), +(1858, 'CO2', 'MDEA', 'water', 0.0592, 0.0592, 1.0, 125.6752706, 0.01139, 0.0, 0.0, 3.8E-4, 348.15, 5.0, 'Rho1997'), +(1859, 'CO2', 'MDEA', 'water', 0.132, 0.132, 1.0, 125.6752706, 0.02938, 0.0, 0.0, 9.79E-4, 348.15, 5.0, 'Rho1997'), +(1860, 'CO2', 'MDEA', 'water', 0.2015, 0.2015, 1.0, 125.6752706, 0.05735, 0.0, 0.0, 0.00191, 348.15, 5.0, 'Rho1997'), +(1861, 'CO2', 'MDEA', 'water', 0.2655, 0.2655, 1.0, 125.6752706, 0.09432, 0.0, 0.0, 0.00314, 348.15, 5.0, 'Rho1997'), +(1862, 'CO2', 'MDEA', 'water', 0.3133, 0.3133, 1.0, 125.6752706, 0.1342, 0.0, 0.0, 0.00447, 348.15, 5.0, 'Rho1997'), +(1863, 'CO2', 'MDEA', 'water', 0.3796, 0.3796, 1.0, 125.6752706, 0.1922, 0.0, 0.0, 0.00641, 348.15, 5.0, 'Rho1997'), +(1864, 'CO2', 'MDEA', 'water', 0.4605, 0.4605, 1.0, 125.6752706, 0.2801, 0.0, 0.0, 0.00934, 348.15, 5.0, 'Rho1997'), +(1865, 'CO2', 'MDEA', 'water', 0.5354, 0.5354, 1.0, 125.6752706, 0.397, 0.0, 0.0, 0.0132, 348.15, 5.0, 'Rho1997'), +(1866, 'CO2', 'MDEA', 'water', 0.071, 0.071, 1.0, 25.65130684, 0.04526, 0.0, 0.0, 0.00151, 348.15, 20.5, 'Rho1997'), +(1867, 'CO2', 'MDEA', 'water', 0.1258, 0.1258, 1.0, 25.65130684, 0.09922, 0.0, 0.0, 0.00331, 348.15, 20.5, 'Rho1997'), +(1868, 'CO2', 'MDEA', 'water', 0.1938, 0.1938, 1.0, 25.65130684, 0.1801, 0.0, 0.0, 0.006, 348.15, 20.5, 'Rho1997'), +(1869, 'CO2', 'MDEA', 'water', 0.2429, 0.2429, 1.0, 25.65130684, 0.263, 0.0, 0.0, 0.00877, 348.15, 20.5, 'Rho1997'), +(1870, 'CO2', 'MDEA', 'water', 0.2526, 0.2526, 1.0, 25.65130684, 0.271, 0.0, 0.0, 0.00903, 348.15, 20.5, 'Rho1997'), +(1871, 'CO2', 'MDEA', 'water', 0.2906, 0.2906, 1.0, 25.65130684, 0.36, 0.0, 0.0, 0.012, 348.15, 20.5, 'Rho1997'), +(1872, 'CO2', 'MDEA', 'water', 0.3415, 0.3415, 1.0, 25.65130684, 0.4839, 0.0, 0.0, 0.0161, 348.15, 20.5, 'Rho1997'), +(1873, 'CO2', 'MDEA', 'water', 0.3873, 0.3873, 1.0, 25.65130684, 0.6128, 0.0, 0.0, 0.0204, 348.15, 20.5, 'Rho1997'), +(1874, 'CO2', 'MDEA', 'water', 0.4432, 0.4432, 1.0, 25.65130684, 0.7966, 0.0, 0.0, 0.0266, 348.15, 20.5, 'Rho1997'), +(1875, 'CO2', 'MDEA', 'water', 0.5026, 0.5026, 1.0, 25.65130684, 1.047, 0.0, 0.0, 0.0349, 348.15, 20.5, 'Rho1997'), +(1876, 'CO2', 'MDEA', 'water', 0.5551, 0.5551, 1.0, 25.65130684, 1.325, 0.0, 0.0, 0.0442, 348.15, 20.5, 'Rho1997'), +(1877, 'CO2', 'MDEA', 'water', 0.6199, 0.6199, 1.0, 25.65130684, 1.734, 0.0, 0.0, 0.0578, 348.15, 20.5, 'Rho1997'), +(1878, 'CO2', 'MDEA', 'water', 0.0162, 0.0162, 1.0, 6.614487927, 0.03624, 0.0, 0.0, 0.00121, 348.15, 50.0, 'Rho1997'), +(1879, 'CO2', 'MDEA', 'water', 0.0334, 0.0334, 1.0, 6.614487927, 0.0792, 0.0, 0.0, 0.00264, 348.15, 50.0, 'Rho1997'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1880, 'CO2', 'MDEA', 'water', 0.042, 0.042, 1.0, 6.614487927, 0.09721, 0.0, 0.0, 0.00324, 348.15, 50.0, 'Rho1997'), +(1881, 'CO2', 'MDEA', 'water', 0.0537, 0.0537, 1.0, 6.614487927, 0.1371, 0.0, 0.0, 0.00457, 348.15, 50.0, 'Rho1997'), +(1882, 'CO2', 'MDEA', 'water', 0.077, 0.077, 1.0, 6.614487927, 0.2131, 0.0, 0.0, 0.0071, 348.15, 50.0, 'Rho1997'), +(1883, 'CO2', 'MDEA', 'water', 0.101, 0.101, 1.0, 6.614487927, 0.311, 0.0, 0.0, 0.0104, 348.15, 50.0, 'Rho1997'), +(1884, 'CO2', 'MDEA', 'water', 0.133, 0.133, 1.0, 6.614487927, 0.4539, 0.0, 0.0, 0.0151, 348.15, 50.0, 'Rho1997'), +(1885, 'CO2', 'MDEA', 'water', 0.1656, 0.1656, 1.0, 6.614487927, 0.6188, 0.0, 0.0, 0.0206, 348.15, 50.0, 'Rho1997'), +(1886, 'CO2', 'MDEA', 'water', 0.1945, 0.1945, 1.0, 6.614487927, 0.7886, 0.0, 0.0, 0.0263, 348.15, 50.0, 'Rho1997'), +(1887, 'CO2', 'MDEA', 'water', 0.0179, 0.0179, 1.0, 2.204829309, 0.1743, 0.0, 0.0, 0.00581, 348.15, 75.0, 'Rho1997'), +(1888, 'CO2', 'MDEA', 'water', 0.0326, 0.0326, 1.0, 2.204829309, 0.3921, 0.0, 0.0, 0.0131, 348.15, 75.0, 'Rho1997'), +(1889, 'CO2', 'MDEA', 'water', 0.0525, 0.0525, 1.0, 2.204829309, 0.7209, 0.0, 0.0, 0.024, 348.15, 75.0, 'Rho1997'), +(1890, 'CO2', 'MDEA', 'water', 0.075, 0.075, 1.0, 2.204829309, 1.121, 0.0, 0.0, 0.0374, 348.15, 75.0, 'Rho1997'), +(1891, 'CO2', 'MDEA', 'water', 0.0952, 0.0952, 1.0, 2.204829309, 1.513, 0.0, 0.0, 0.0504, 348.15, 75.0, 'Rho1997'), +(1892, 'CO2', 'MDEA', 'water', 0.1103, 0.1103, 1.0, 2.204829309, 1.842, 0.0, 0.0, 0.0614, 348.15, 75.0, 'Rho1997'), +(1893, 'CO2', 'MDEA', 'water', 0.1271, 0.1271, 1.0, 2.204829309, 2.207, 0.0, 0.0, 0.0736, 348.15, 75.0, 'Rho1997'), +(1894, 'CO2', 'MDEA', 'water', 0.148, 0.148, 1.0, 2.204829309, 2.683, 0.0, 0.0, 0.0894, 348.15, 75.0, 'Rho1997'), +(1895, 'CO2', 'MDEA', 'water', 0.03, 0.03, 1.0, 125.6752706, 0.01841, 0.0, 0.0, 6.14E-4, 373.15, 5.0, 'Rho1997'), +(1896, 'CO2', 'MDEA', 'water', 0.0448, 0.0448, 1.0, 125.6752706, 0.03939, 0.0, 0.0, 0.00131, 373.15, 5.0, 'Rho1997'), +(1897, 'CO2', 'MDEA', 'water', 0.0905, 0.0905, 1.0, 125.6752706, 0.07336, 0.0, 0.0, 0.00245, 373.15, 5.0, 'Rho1997'), +(1898, 'CO2', 'MDEA', 'water', 0.1196, 0.1196, 1.0, 125.6752706, 0.1033, 0.0, 0.0, 0.00344, 373.15, 5.0, 'Rho1997'), +(1899, 'CO2', 'MDEA', 'water', 0.1475, 0.1475, 1.0, 125.6752706, 0.1473, 0.0, 0.0, 0.00491, 373.15, 5.0, 'Rho1997'), +(1900, 'CO2', 'MDEA', 'water', 0.2273, 0.2273, 1.0, 125.6752706, 0.2682, 0.0, 0.0, 0.00894, 373.15, 5.0, 'Rho1997'), +(1901, 'CO2', 'MDEA', 'water', 0.026, 0.026, 1.0, 25.65130684, 0.03314, 0.0, 0.0, 0.0011, 373.15, 20.5, 'Rho1997'), +(1902, 'CO2', 'MDEA', 'water', 0.0547, 0.0547, 1.0, 25.65130684, 0.09609, 0.0, 0.0, 0.0032, 373.15, 20.5, 'Rho1997'), +(1903, 'CO2', 'MDEA', 'water', 0.0877, 0.0877, 1.0, 25.65130684, 0.205, 0.0, 0.0, 0.00683, 373.15, 20.5, 'Rho1997'), +(1904, 'CO2', 'MDEA', 'water', 0.1164, 0.1164, 1.0, 25.65130684, 0.3029, 0.0, 0.0, 0.0101, 373.15, 20.5, 'Rho1997'), +(1905, 'CO2', 'MDEA', 'water', 0.1586, 0.1586, 1.0, 25.65130684, 0.4837, 0.0, 0.0, 0.0161, 373.15, 20.5, 'Rho1997'), +(1906, 'CO2', 'MDEA', 'water', 0.1937, 0.1937, 1.0, 25.65130684, 0.6806, 0.0, 0.0, 0.0227, 373.15, 20.5, 'Rho1997'), +(1907, 'CO2', 'MDEA', 'water', 0.2359, 0.2359, 1.0, 25.65130684, 0.9614, 0.0, 0.0, 0.032, 373.15, 20.5, 'Rho1997'), +(1908, 'CO2', 'MDEA', 'water', 0.2853, 0.2853, 1.0, 25.65130684, 1.327, 0.0, 0.0, 0.0442, 373.15, 20.5, 'Rho1997'), +(1909, 'CO2', 'MDEA', 'water', 0.3259, 0.3259, 1.0, 25.65130684, 1.672, 0.0, 0.0, 0.0557, 373.15, 20.5, 'Rho1997'), +(1910, 'CO2', 'MDEA', 'water', 0.0087, 0.0087, 1.0, 6.614487927, 0.05003, 0.0, 0.0, 0.00167, 373.15, 50.0, 'Rho1997'), +(1911, 'CO2', 'MDEA', 'water', 0.0164, 0.0164, 1.0, 6.614487927, 0.1139, 0.0, 0.0, 0.0038, 373.15, 50.0, 'Rho1997'), +(1912, 'CO2', 'MDEA', 'water', 0.0261, 0.0261, 1.0, 6.614487927, 0.2029, 0.0, 0.0, 0.00676, 373.15, 50.0, 'Rho1997'), +(1913, 'CO2', 'MDEA', 'water', 0.035, 0.035, 1.0, 6.614487927, 0.3038, 0.0, 0.0, 0.0101, 373.15, 50.0, 'Rho1997'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1914, 'CO2', 'MDEA', 'water', 0.0476, 0.0476, 1.0, 6.614487927, 0.4527, 0.0, 0.0, 0.0151, 373.15, 50.0, 'Rho1997'), +(1915, 'CO2', 'MDEA', 'water', 0.0656, 0.0656, 1.0, 6.614487927, 0.6845, 0.0, 0.0, 0.0228, 373.15, 50.0, 'Rho1997'), +(1916, 'CO2', 'MDEA', 'water', 0.0827, 0.0827, 1.0, 6.614487927, 0.9583, 0.0, 0.0, 0.0319, 373.15, 50.0, 'Rho1997'), +(1917, 'CO2', 'MDEA', 'water', 0.108, 0.108, 1.0, 6.614487927, 1.403, 0.0, 0.0, 0.0468, 373.15, 50.0, 'Rho1997'), +(1918, 'CO2', 'MDEA', 'water', 0.0643, 0.0643, 1.0, 2.204829309, 0.2171, 0.0, 0.0, 0.00724, 373.15, 75.0, 'Rho1997'), +(1919, 'CO2', 'MDEA', 'water', 0.0126, 0.0126, 1.0, 2.204829309, 0.4729, 0.0, 0.0, 0.0158, 373.15, 75.0, 'Rho1997'), +(1920, 'CO2', 'MDEA', 'water', 0.0202, 0.0202, 1.0, 2.204829309, 0.8346, 0.0, 0.0, 0.0278, 373.15, 75.0, 'Rho1997'), +(1921, 'CO2', 'MDEA', 'water', 0.028, 0.028, 1.0, 2.204829309, 1.129, 0.0, 0.0, 0.0376, 373.15, 75.0, 'Rho1997'), +(1922, 'CO2', 'MDEA', 'water', 0.0342, 0.0342, 1.0, 2.204829309, 1.549, 0.0, 0.0, 0.0516, 373.15, 75.0, 'Rho1997'), +(1923, 'CO2', 'MDEA', 'water', 0.041, 0.041, 1.0, 2.204829309, 1.888, 0.0, 0.0, 0.0629, 373.15, 75.0, 'Rho1997'), +(1924, 'CO2', 'MDEA', 'water', 0.0492, 0.0492, 1.0, 2.204829309, 2.355, 0.0, 0.0, 0.0785, 373.15, 75.0, 'Rho1997'), +(1961, 'CO2', 'MDEA', 'water', 1.3458, 1.3458, 1.0, 21.6525545, 48.67560547, 0.0, 0.0, 1.62, 298.15, 23.4, 'Bahiri1984'), +(1962, 'CO2', 'MDEA', 'water', 1.3411, 1.3411, 1.0, 21.6525545, 48.43153107, 0.0, 0.0, 1.61, 298.15, 23.4, 'Bahiri1984'), +(1963, 'CO2', 'MDEA', 'water', 1.2559, 1.2559, 1.0, 21.6525545, 35.29977689, 0.0, 0.0, 1.18, 298.15, 23.4, 'Bahiri1984'), +(1964, 'CO2', 'MDEA', 'water', 1.2822, 1.2822, 1.0, 21.6525545, 34.473785, 0.0, 0.0, 1.15, 298.15, 23.4, 'Bahiri1984'), +(1965, 'CO2', 'MDEA', 'water', 1.1888, 1.1888, 1.0, 21.6525545, 18.16078994, 0.0, 0.0, 0.605, 298.15, 23.4, 'Bahiri1984'), +(1966, 'CO2', 'MDEA', 'water', 1.1648, 1.1648, 1.0, 21.6525545, 14.69272717, 0.0, 0.0, 0.49, 298.15, 23.4, 'Bahiri1984'), +(1967, 'CO2', 'MDEA', 'water', 1.1492, 1.1492, 1.0, 21.6525545, 13.2448282, 0.0, 0.0, 0.441, 298.15, 23.4, 'Bahiri1984'), +(1968, 'CO2', 'MDEA', 'water', 1.1446, 1.1446, 1.0, 21.6525545, 10.27525636, 0.0, 0.0, 0.343, 298.15, 23.4, 'Bahiri1984'), +(1969, 'CO2', 'MDEA', 'water', 1.1192, 1.1192, 1.0, 21.6525545, 9.22449539, 0.0, 0.0, 0.307, 298.15, 23.4, 'Bahiri1984'), +(1970, 'CO2', 'MDEA', 'water', 1.101, 1.101, 1.0, 21.6525545, 5.091778044, 0.0, 0.0, 0.17, 298.15, 23.4, 'Bahiri1984'), +(1971, 'CO2', 'MDEA', 'water', 1.071, 1.071, 1.0, 21.6525545, 4.560881755, 0.0, 0.0, 0.152, 298.15, 23.4, 'Bahiri1984'), +(1972, 'CO2', 'MDEA', 'water', 0.9866, 0.9866, 1.0, 21.6525545, 1.292766937, 0.0, 0.0, 0.0431, 298.15, 23.4, 'Bahiri1984'), +(1973, 'CO2', 'MDEA', 'water', 0.9909, 0.9909, 1.0, 21.6525545, 1.263119482, 0.0, 0.0, 0.0421, 298.15, 23.4, 'Bahiri1984'), +(1974, 'CO2', 'MDEA', 'water', 0.8878, 0.8878, 1.0, 21.6525545, 0.645349255, 0.0, 0.0, 0.0215, 298.15, 23.4, 'Bahiri1984'), +(1975, 'CO2', 'MDEA', 'water', 0.7895, 0.7895, 1.0, 21.6525545, 0.337153617, 0.0, 0.0, 0.0112, 298.15, 23.4, 'Bahiri1984'), +(1976, 'CO2', 'MDEA', 'water', 0.6941, 0.6941, 1.0, 21.6525545, 0.212358516, 0.0, 0.0, 0.00708, 298.15, 23.4, 'Bahiri1984'), +(1977, 'CO2', 'MDEA', 'water', 0.6117, 0.6117, 1.0, 21.6525545, 0.18271106, 0.0, 0.0, 0.00609, 298.15, 23.4, 'Bahiri1984'), +(1978, 'CO2', 'MDEA', 'water', 0.5459, 0.5459, 1.0, 21.6525545, 0.159958362, 0.0, 0.0, 0.00533, 298.15, 23.4, 'Bahiri1984'), +(1979, 'CO2', 'MDEA', 'water', 0.4305, 0.4305, 1.0, 21.6525545, 0.124105626, 0.0, 0.0, 0.00414, 298.15, 23.4, 'Bahiri1984'), +(1980, 'CO2', 'MDEA', 'water', 0.3549, 0.3549, 1.0, 21.6525545, 0.111005588, 0.0, 0.0, 0.0037, 298.15, 23.4, 'Bahiri1984'), +(1981, 'CO2', 'MDEA', 'water', 1.2222, 1.2222, 1.0, 21.6525545, 46.518236, 0.0, 0.0, 1.55, 323.15, 23.4, 'Bahiri1984'), +(1982, 'CO2', 'MDEA', 'water', 1.2284, 1.2284, 1.0, 21.6525545, 46.03422406, 0.0, 0.0, 1.53, 323.15, 23.4, 'Bahiri1984'); +INSERT INTO PUBLIC.CO2KURCOR(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1983, 'CO2', 'MDEA', 'water', 1.235, 1.235, 1.0, 21.6525545, 45.34474836, 0.0, 0.0, 1.51, 323.15, 23.4, 'Bahiri1984'), +(1984, 'CO2', 'MDEA', 'water', 1.1715, 1.1715, 1.0, 21.6525545, 32.86523819, 0.0, 0.0, 1.1, 323.15, 23.4, 'Bahiri1984'), +(1985, 'CO2', 'MDEA', 'water', 1.1743, 1.1743, 1.0, 21.6525545, 30.41759946, 0.0, 0.0, 1.01, 323.15, 23.4, 'Bahiri1984'), +(1986, 'CO2', 'MDEA', 'water', 1.0963, 1.0963, 1.0, 21.6525545, 17.86569434, 0.0, 0.0, 0.596, 323.15, 23.4, 'Bahiri1984'), +(1987, 'CO2', 'MDEA', 'water', 1.079, 1.079, 1.0, 21.6525545, 15.34221328, 0.0, 0.0, 0.511, 323.15, 23.4, 'Bahiri1984'), +(1988, 'CO2', 'MDEA', 'water', 1.0697, 1.0697, 1.0, 21.6525545, 12.3340308, 0.0, 0.0, 0.411, 323.15, 23.4, 'Bahiri1984'), +(1989, 'CO2', 'MDEA', 'water', 1.0499, 1.0499, 1.0, 21.6525545, 8.990763128, 0.0, 0.0, 0.3, 323.15, 23.4, 'Bahiri1984'), +(1990, 'CO2', 'MDEA', 'water', 1.0194, 1.0194, 1.0, 21.6525545, 6.565187615, 0.0, 0.0, 0.219, 323.15, 23.4, 'Bahiri1984'), +(1991, 'CO2', 'MDEA', 'water', 0.9799, 0.9799, 1.0, 21.6525545, 4.301638892, 0.0, 0.0, 0.143, 323.15, 23.4, 'Bahiri1984'), +(1992, 'CO2', 'MDEA', 'water', 0.8969, 0.8969, 1.0, 21.6525545, 2.198738007, 0.0, 0.0, 0.0733, 323.15, 23.4, 'Bahiri1984'), +(1993, 'CO2', 'MDEA', 'water', 0.8568, 0.8568, 1.0, 21.6525545, 1.681631232, 0.0, 0.0, 0.0561, 323.15, 23.4, 'Bahiri1984'), +(1994, 'CO2', 'MDEA', 'water', 0.6668, 0.6668, 1.0, 21.6525545, 0.757044319, 0.0, 0.0, 0.0252, 323.15, 23.4, 'Bahiri1984'), +(1995, 'CO2', 'MDEA', 'water', 0.6011, 0.6011, 1.0, 21.6525545, 0.525380483, 0.0, 0.0, 0.0175, 323.15, 23.4, 'Bahiri1984'), +(1996, 'CO2', 'MDEA', 'water', 0.5351, 0.5351, 1.0, 21.6525545, 0.441264448, 0.0, 0.0, 0.0147, 323.15, 23.4, 'Bahiri1984'); +CREATE CACHED TABLE PUBLIC.CO2MDEA( + ID INT DEFAULT '0', + TEMPERATURE VARCHAR(50) DEFAULT NULL, + PRESSURE INT DEFAULT NULL, + X1 VARCHAR(50) DEFAULT NULL, + X2 VARCHAR(50) DEFAULT NULL, + X3 DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 142 +/- SELECT COUNT(*) FROM PUBLIC.CO2MDEA; +INSERT INTO PUBLIC.CO2MDEA(ID, TEMPERATURE, PRESSURE, X1, X2, X3, REFERENCE) VALUES +(1, '303.16', 1, '0.000626865', '0.938545249', 0.060827886, 'Li'), +(2, '308.16', 1, '0.000584706', '0.938584842', 0.060830452, 'Li'), +(3, '313.16', 1, '0.000530998', '0.938635281', 0.060833721, 'Li'), +(4, '288.16', 1, '0.000849981', '0.982638929', 0.01651109, 'Al-Ghawas'), +(5, '293.16', 1, '0.000763887', '0.982723601', 0.016512513, 'Al-Ghawas'), +(6, '298.16', 1, '0.000675684', '0.982810346', 0.01651397, 'Al-Ghawas'), +(7, '303.16', 1, '0.000607808', '0.9828771', 0.016515092, 'Al-Ghawas'), +(8, '308.16', 1, '0.000555596', '0.982928449', 0.016515955, 'Al-Ghawas'), +(9, '313.16', 1, '0.000530239', '0.982953387', 0.016516374, 'Al-Ghawas'), +(10, '323.16', 1, '0.000499574', '0.982983545', 0.016516881, 'Al-Ghawas'), +(11, '288.16', 1, '0.000879179', '0.962723786', 0.036397035, 'Al-Ghawas'), +(12, '293.16', 1, '0.000797004', '0.962802968', 0.036400028, 'Al-Ghawas'), +(13, '298.16', 1, '0.000687315', '0.962908661', 0.036404024, 'Al-Ghawas'), +(14, '303.16', 1, '0.000608213', '0.962984882', 0.036406906, 'Al-Ghawas'), +(15, '308.16', 1, '0.000579638', '0.963012415', 0.036407947, 'Al-Ghawas'), +(16, '313.16', 1, '0.000535619', '0.963054831', 0.03640955, 'Al-Ghawas'), +(17, '323.16', 1, '0.000519955', '0.963069924', 0.036410121, 'Al-Ghawas'), +(18, '288.16', 1, '0.000868056', '0.938318738', 0.060813206, 'Al-Ghawas'), +(19, '293.16', 1, '0.000795949', '0.938386457', 0.060817594, 'Al-Ghawas'), +(20, '298.16', 1, '0.000712376', '0.938464943', 0.060822681, 'Al-Ghawas'), +(21, '303.16', 1, '0.000643653', '0.938529483', 0.060826864, 'Al-Ghawas'), +(22, '308.16', 1, '0.000615432', '0.938555987', 0.060828582, 'Al-Ghawas'), +(23, '313.16', 1, '0.000564457', '0.938603859', 0.060831684, 'Al-Ghawas'), +(24, '323.16', 1, '0.000552349', '0.93861523', 0.060832421, 'Al-Ghawas'), +(25, '288.16', 1, '0.000878065', '0.907618696', 0.091503239, 'Al-Ghawas'), +(26, '293.16', 1, '0.000826227', '0.907665786', 0.091507986, 'Al-Ghawas'), +(27, '298.16', 1, '0.000751199', '0.907733944', 0.091514858, 'Al-Ghawas'), +(28, '303.16', 1, '0.000676448', '0.907801849', 0.091521704, 'Al-Ghawas'), +(29, '308.16', 1, '0.000653204', '0.907822964', 0.091523832, 'Al-Ghawas'), +(30, '313.16', 1, '0.000600471', '0.907870867', 0.091528662, 'Al-Ghawas'), +(31, '323.16', 1, '0.000604127', '0.907867546', 0.091528327, 'Al-Ghawas'), +(32, '288.16', 1, '0.000970224', '0.867796968', 0.131232808, 'Al-Ghawas'), +(33, '293.16', 1, '0.000885707', '0.867870383', 0.13124391, 'Al-Ghawas'), +(34, '298.16', 1, '0.000791537', '0.867952183', 0.13125628, 'Al-Ghawas'), +(35, '303.16', 1, '0.000742751', '0.86799456', 0.131262689, 'Al-Ghawas'), +(36, '308.16', 1, '0.000706504', '0.868026046', 0.13126745, 'Al-Ghawas'), +(37, '313.16', 1, '0.000660875', '0.868065681', 0.131273444, 'Al-Ghawas'), +(38, '323.16', 1, '0.000672649', '0.868055454', 0.131271897, 'Al-Ghawas'), +(39, '288.16', 1, '0.000822458', '0.982665997', 0.016511545, 'Haimour'), +(40, '288.16', 1, '0.00084106', '0.973187668', 0.025971272, 'Haimour'), +(41, '288.16', 1, '0.000849678', '0.962752213', 0.036398109, 'Haimour'), +(42, '293.16', 1, '0.000729454', '0.982757464', 0.016513082, 'Haimour'), +(43, '293.16', 1, '0.000746101', '0.973280158', 0.02597374, 'Haimour'), +(44, '293.16', 1, '0.000761617', '0.962837065', 0.036401317, 'Haimour'), +(45, '298.16', 1, '0.000632141', '0.982853169', 0.01651469, 'Haimour'), +(46, '298.16', 1, '0.00064002', '0.973383482', 0.025976498, 'Haimour'), +(47, '298.16', 1, '0.000645915', '0.962948553', 0.036405532, 'Haimour'), +(48, '308.16', 1, '0.000496232', '0.982986832', 0.016516936, 'Haimour'), +(49, '308.16', 1, '0.000511528', '0.973508634', 0.025979838, 'Haimour'), +(50, '308.16', 1, '0.000519244', '0.96307061', 0.036410147, 'Haimour'), +(51, '293', 1, '0.000665516', '0.982820346', 0.016514138, 'Jamal'), +(52, '303', 1, '0.000520318', '0.982963144', 0.016516538, 'Jamal'), +(53, '313', 1, '0.000424914', '0.983056971', 0.016518114, 'Jamal'), +(54, '323', 1, '0.000369555', '0.983111416', 0.016519029, 'Jamal'), +(55, '333', 1, '0.000310662', '0.983169336', 0.016520002, 'Jamal'); +INSERT INTO PUBLIC.CO2MDEA(ID, TEMPERATURE, PRESSURE, X1, X2, X3, REFERENCE) VALUES +(56, '353', 1, '0.000242831', '0.983236046', 0.016521123, 'Jamal'), +(57, '373', 1, '0.000204233', '0.983274006', 0.016521761, 'Jamal'), +(58, '393', 1, '0.000183308', '0.983294585', 0.016522107, 'Jamal'), +(59, '293', 1, '0.000699843', '0.962896589', 0.036403568, 'Jamal'), +(60, '303', 1, '0.000591283', '0.963001195', 0.036407523, 'Jamal'), +(61, '313', 1, '0.000464216', '0.963123632', 0.036412151, 'Jamal'), +(62, '323', 1, '0.000396625', '0.963188761', 0.036414614, 'Jamal'), +(63, '333', 1, '0.000348691', '0.963234949', 0.03641636, 'Jamal'), +(64, '353', 1, '0.000287263', '0.96329414', 0.036418598, 'Jamal'), +(65, '373', 1, '0.000255429', '0.963324814', 0.036419757, 'Jamal'), +(66, '393', 1, '0.00021723', '0.963361621', 0.036421149, 'Jamal'), +(67, '293', 1, '0.00074695', '0.938432474', 0.060820577, 'Jamal'), +(68, '303', 1, '0.00062547', '0.938546559', 0.060827971, 'Jamal'), +(69, '313', 1, '0.000541668', '0.938625261', 0.060833071, 'Jamal'), +(70, '323', 1, '0.00048911', '0.938674619', 0.06083627, 'Jamal'), +(71, '333', 1, '0.000399448', '0.938758824', 0.060841728, 'Jamal'), +(72, '353', 1, '0.000326294', '0.938827525', 0.06084618, 'Jamal'), +(73, '373', 1, '0.000279937', '0.938871061', 0.060849002, 'Jamal'), +(74, '393', 1, '0.000252177', '0.938897131', 0.060850692, 'Jamal'), +(75, '293', 1, '0.00070453', '0.99281079', 0.00648468, 'Versteeg'), +(76, '293', 1, '0.000704841', '0.991512979', 0.00778218, 'Versteeg'), +(77, '293', 1, '0.000710451', '0.985471167', 0.013818382, 'Versteeg'), +(78, '293', 1, '0.00071147', '0.983869444', 0.015419087, 'Versteeg'), +(79, '293', 1, '0.00072255', '0.979500127', 0.019777324, 'Versteeg'), +(80, '293', 1, '0.000726799', '0.97718375', 0.022089452, 'Versteeg'), +(81, '293', 1, '0.000728569', '0.970679497', 0.028591934, 'Versteeg'), +(82, '293', 1, '0.000742484', '0.967731314', 0.031526202, 'Versteeg'), +(83, '293', 1, '0.000756374', '0.958448111', 0.040795515, 'Versteeg'), +(84, '293', 1, '0.00074439', '0.93670733', 0.062548281, 'Versteeg'), +(85, '298', 1, '0.000615174', '0.987634067', 0.011750759, 'Versteeg'), +(86, '298', 1, '0.000639941', '0.982800475', 0.016559584, 'Versteeg'), +(87, '298', 1, '0.000641797', '0.974227293', 0.02513091, 'Versteeg'), +(88, '298', 1, '0.000621702', '0.973833893', 0.025544405, 'Versteeg'), +(89, '298', 1, '0.000635492', '0.964561842', 0.034802666, 'Versteeg'), +(90, '298', 1, '0.000639512', '0.963933813', 0.035426675, 'Versteeg'), +(91, '298', 1, '0.000651074', '0.962258955', 0.037089971, 'Versteeg'), +(92, '298', 1, '0.000644223', '0.958657377', 0.0406984, 'Versteeg'), +(93, '298', 1, '0.000627734', '0.958122519', 0.041249747, 'Versteeg'), +(94, '298', 1, '0.000648301', '0.943319749', 0.056031949, 'Versteeg'), +(95, '298', 1, '0.000642649', '0.94048075', 0.058876601, 'Versteeg'), +(96, '298', 1, '0.000540607', '0.933258724', 0.06620067, 'Versteeg'), +(97, '308', 1, '0.000491819', '0.987493413', 0.012014769, 'Versteeg'), +(98, '308', 1, '0.000499035', '0.983497416', 0.016003549, 'Versteeg'), +(99, '308', 1, '0.000500535', '0.979617132', 0.019882333, 'Versteeg'), +(100, '308', 1, '0.000514707', '0.973886235', 0.025599058, 'Versteeg'), +(101, '308', 1, '0.000516162', '0.972280005', 0.027203833, 'Versteeg'), +(102, '308', 1, '0.000520204', '0.969020804', 0.030458992, 'Versteeg'), +(103, '308', 1, '0.000528715', '0.967752417', 0.031718868, 'Versteeg'), +(104, '308', 1, '0.000525465', '0.963638761', 0.035835774, 'Versteeg'), +(105, '308', 1, '0.000528017', '0.960929669', 0.038542314, 'Versteeg'), +(106, '308', 1, '0.000529597', '0.959158782', 0.040311621, 'Versteeg'), +(107, '308', 1, '0.000535992', '0.958390015', 0.041073992, 'Versteeg'), +(108, '308', 1, '0.000554315', '0.936359167', 0.063086518, 'Versteeg'), +(109, '318', 1, '0.000419828', '0.990284485', 0.009295687, 'Versteeg'), +(110, '318', 1, '0.00037819', '0.990146051', 0.009475759, 'Versteeg'), +(111, '318', 1, '0.000418312', '0.98072915', 0.018852538, 'Versteeg'), +(112, '318', 1, '0.000389999', '0.979637955', 0.019972047, 'Versteeg'), +(113, '318', 1, '0.000436219', '0.958264061', 0.041299719, 'Versteeg'); +INSERT INTO PUBLIC.CO2MDEA(ID, TEMPERATURE, PRESSURE, X1, X2, X3, REFERENCE) VALUES +(114, '318', 1, '0.000474991', '0.937692497', 0.061832512, 'Versteeg'), +(115, '318', 1, '0.000452851', '0.936038612', 0.063508537, 'Versteeg'), +(116, '333', 1, '0.000299546', '0.99015207', 0.009548383, 'Versteeg'), +(117, '333', 1, '0.000316428', '0.98461311', 0.015070462, 'Versteeg'), +(118, '333', 1, '0.000312888', '0.979550499', 0.020136614, 'Versteeg'), +(119, '333', 1, '0.000314157', '0.972895262', 0.026790581, 'Versteeg'), +(120, '333', 1, '0.000345138', '0.967488568', 0.032166294, 'Versteeg'), +(121, '333', 1, '0.000351762', '0.957946973', 0.041701265, 'Versteeg'), +(122, '333', 1, '0.000366297', '0.952704338', 0.046929365, 'Versteeg'), +(123, '333', 1, '0.000382831', '0.936953678', 0.062663491, 'Versteeg'), +(124, '333', 1, '0.000370598', '0.935390296', 0.064239106, 'Versteeg'), +(125, '293', 1, '0.000744416', '0.982742749', 0.016512835, 'Pawlak'), +(126, '293', 1, '0.000752933', '0.962845434', 0.036401634, 'Pawlak'), +(127, '293', 1, '0.00078307', '0.938398552', 0.060818378, 'Pawlak'), +(128, '293', 1, '0.000892378', '0.867864589', 0.131243034, 'Pawlak'), +(129, '293', 1, '0.001080634', '0.814222803', 0.184696562, 'Pawlak'), +(130, '293', 1, '0.001377682', '0.738157037', 0.260465281, 'Pawlak'), +(131, '293', 1, '0.002493647', '0.537176601', 0.460329752, 'Pawlak'), +(132, '293', 1, '0.00345911', '0.422079379', 0.574461511, 'Pawlak'), +(133, '298.338', 1, '0.000722551', '0.907759968', 0.091517481, 'Jou'), +(134, '323.005', 1, '0.00047477', '0.907985056', 0.091540174, 'Jou'), +(135, '347.959', 1, '0.000367058', '0.908082903', 0.091550039, 'Jou'), +(136, '373.21', 1, '0.000309105', '0.908135549', 0.091555346, 'Jou'), +(137, '398.28', 1, '0.000279714', '0.908162248', 0.091558038, 'Jou'), +(138, '298.057', 1, '0.00064769', '0.962946843', 0.036405468, 'Jou'), +(139, '323.137', 1, '0.000393403', '0.963191866', 0.036414731, 'Jou'), +(140, '347.771', 1, '0.000286923', '0.963294467', 0.03641861, 'Jou'), +(141, '372.909', 1, '0.000222487', '0.963356556', 0.036420957, 'Jou'), +(142, '398.17', 1, '0.000193574', '0.963384415', 0.036422011, 'Jou'); +CREATE CACHED TABLE PUBLIC.CO2MDEADATA( + ID INT NOT NULL, + COMPONENTSOLUTE VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT1 VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT2 VARCHAR(50) DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + X3 DOUBLE DEFAULT '0', + VAPOURPRESSURE1 DOUBLE DEFAULT '0', + VAPOURPRESSURE2 DOUBLE DEFAULT '0', + VAPOURPRESSURE3 DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + WTMDEA DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.CO2MDEADATA ADD CONSTRAINT PUBLIC.CONSTRAINT_1 PRIMARY KEY(ID); +-- 479 +/- SELECT COUNT(*) FROM PUBLIC.CO2MDEADATA; +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(706, 'CO2', 'MDEA', 'water', 0.0171, 1.0, 21.37742035, 2.0E-4, 0.0, 0.0, 6.67E-6, 297.7, 23.63, 'Lemoine2000'), +(707, 'CO2', 'MDEA', 'water', 0.0342, 1.0, 21.37742035, 6.2E-4, 0.0, 0.0, 2.07E-5, 297.7, 23.63, 'Lemoine2000'), +(708, 'CO2', 'MDEA', 'water', 0.0512, 1.0, 21.37742035, 0.00114, 0.0, 0.0, 3.8E-5, 297.72, 23.63, 'Lemoine2000'), +(709, 'CO2', 'MDEA', 'water', 0.0648, 1.0, 21.37742035, 0.00165, 0.0, 0.0, 5.5E-5, 297.71, 23.63, 'Lemoine2000'), +(710, 'CO2', 'MDEA', 'water', 0.0853, 1.0, 21.37742035, 0.00256, 0.0, 0.0, 8.53E-5, 297.71, 23.63, 'Lemoine2000'), +(711, 'CO2', 'MDEA', 'water', 0.0971, 1.0, 21.37742035, 0.00304, 0.0, 0.0, 1.01E-4, 297.71, 23.63, 'Lemoine2000'), +(712, 'CO2', 'MDEA', 'water', 0.1126, 1.0, 21.37742035, 0.00402, 0.0, 0.0, 1.34E-4, 297.71, 23.63, 'Lemoine2000'), +(713, 'CO2', 'MDEA', 'water', 0.1295, 1.0, 21.37742035, 0.00477, 0.0, 0.0, 1.59E-4, 297.71, 23.63, 'Lemoine2000'), +(714, 'CO2', 'MDEA', 'water', 0.1361, 1.0, 21.37742035, 0.00546, 0.0, 0.0, 1.82E-4, 297.71, 23.63, 'Lemoine2000'), +(715, 'CO2', 'MDEA', 'water', 0.1617, 1.0, 21.37742035, 0.00716, 0.0, 0.0, 2.39E-4, 297.71, 23.63, 'Lemoine2000'), +(716, 'CO2', 'MDEA', 'water', 0.2042, 1.0, 21.37742035, 0.0108, 0.0, 0.0, 3.58E-4, 297.71, 23.63, 'Lemoine2000'), +(717, 'CO2', 'MDEA', 'water', 0.255, 1.0, 21.37742035, 0.0159, 0.0, 0.0, 5.31E-4, 297.71, 23.63, 'Lemoine2000'), +(718, 'CO2', 'MDEA', 'water', 0.2625, 1.0, 21.37742035, 0.0164, 0.0, 0.0, 5.45E-4, 297.71, 23.63, 'Lemoine2000'), +(719, 'CO2', 'MDEA', 'water', 0.005, 1.0, 21.6525545, 1.0E-5, 0.0, 0.0, 3.33E-7, 298.15, 23.4, 'Jou1982'), +(720, 'CO2', 'MDEA', 'water', 0.0166, 1.0, 21.6525545, 6.88E-5, 0.0, 0.0, 2.29E-6, 298.15, 23.4, 'Jou1982'), +(721, 'CO2', 'MDEA', 'water', 0.0329, 1.0, 21.6525545, 2.18E-4, 0.0, 0.0, 7.27E-6, 298.15, 23.4, 'Jou1982'), +(722, 'CO2', 'MDEA', 'water', 0.0402, 1.0, 21.6525545, 2.95E-4, 0.0, 0.0, 9.83E-6, 298.15, 23.4, 'Jou1982'), +(723, 'CO2', 'MDEA', 'water', 0.334, 1.0, 21.6525545, 0.0155, 0.0, 0.0, 5.17E-4, 298.15, 23.4, 'Jou1982'), +(724, 'CO2', 'MDEA', 'water', 0.452, 1.0, 21.6525545, 0.0422, 0.0, 0.0, 0.00141, 298.15, 23.4, 'Jou1982'), +(725, 'CO2', 'MDEA', 'water', 0.638, 1.0, 21.6525545, 0.0926, 0.0, 0.0, 0.00309, 298.15, 23.4, 'Jou1982'), +(726, 'CO2', 'MDEA', 'water', 1.025, 1.0, 21.6525545, 1.81, 0.0, 0.0, 0.0603, 298.15, 23.4, 'Jou1982'), +(727, 'CO2', 'MDEA', 'water', 1.146, 1.0, 21.6525545, 6.98, 0.0, 0.0, 0.233, 298.15, 23.4, 'Jou1982'), +(728, 'CO2', 'MDEA', 'water', 1.308, 1.0, 21.6525545, 20.4, 0.0, 0.0, 0.68, 298.15, 23.4, 'Jou1982'), +(729, 'CO2', 'MDEA', 'water', 1.479, 1.0, 21.6525545, 35.5, 0.0, 0.0, 1.18, 298.15, 23.4, 'Jou1982'), +(730, 'CO2', 'MDEA', 'water', 1.587, 1.0, 21.6525545, 45.7, 0.0, 0.0, 1.52, 298.15, 23.4, 'Jou1982'), +(731, 'CO2', 'MDEA', 'water', 1.676, 1.0, 21.6525545, 52.6, 0.0, 0.0, 1.75, 298.15, 23.4, 'Jou1982'), +(732, 'CO2', 'MDEA', 'water', 0.003, 1.0, 21.6525545, 2.17E-5, 0.0, 0.0, 7.23E-7, 313.15, 23.4, 'Jou1982'), +(733, 'CO2', 'MDEA', 'water', 0.00429, 1.0, 21.6525545, 3.06E-5, 0.0, 0.0, 1.02E-6, 313.15, 23.4, 'Jou1982'), +(734, 'CO2', 'MDEA', 'water', 0.00504, 1.0, 21.6525545, 3.69E-5, 0.0, 0.0, 1.23E-6, 313.15, 23.4, 'Jou1982'), +(735, 'CO2', 'MDEA', 'water', 0.012, 1.0, 21.6525545, 1.32E-4, 0.0, 0.0, 4.4E-6, 313.15, 23.4, 'Jou1982'), +(736, 'CO2', 'MDEA', 'water', 0.0676, 1.0, 21.6525545, 0.00184, 0.0, 0.0, 6.13E-5, 313.15, 23.4, 'Jou1982'), +(737, 'CO2', 'MDEA', 'water', 0.224, 1.0, 21.6525545, 0.0238, 0.0, 0.0, 7.93E-4, 313.15, 23.4, 'Jou1982'), +(738, 'CO2', 'MDEA', 'water', 0.441, 1.0, 21.6525545, 0.112, 0.0, 0.0, 0.00373, 313.15, 23.4, 'Jou1982'), +(739, 'CO2', 'MDEA', 'water', 0.866, 1.0, 21.6525545, 1.01, 0.0, 0.0, 0.0337, 313.15, 23.4, 'Jou1982'), +(740, 'CO2', 'MDEA', 'water', 0.99, 1.0, 21.6525545, 2.94, 0.0, 0.0, 0.098, 313.15, 23.4, 'Jou1982'), +(741, 'CO2', 'MDEA', 'water', 1.083, 1.0, 21.6525545, 6.4, 0.0, 0.0, 0.213, 313.15, 23.4, 'Jou1982'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(742, 'CO2', 'MDEA', 'water', 1.204, 1.0, 21.6525545, 23.6, 0.0, 0.0, 0.787, 313.15, 23.4, 'Jou1982'), +(743, 'CO2', 'MDEA', 'water', 1.268, 1.0, 21.6525545, 32.0, 0.0, 0.0, 1.07, 313.15, 23.4, 'Jou1982'), +(744, 'CO2', 'MDEA', 'water', 1.467, 1.0, 21.6525545, 48.0, 0.0, 0.0, 1.6, 313.15, 23.4, 'Jou1982'), +(745, 'CO2', 'MDEA', 'water', 1.639, 1.0, 21.6525545, 66.3, 0.0, 0.0, 2.21, 313.15, 23.4, 'Jou1982'), +(746, 'CO2', 'MDEA', 'water', 0.00601, 1.0, 21.6525545, 5.6E-5, 0.0, 0.0, 1.87E-6, 313.15, 23.4, 'Austgen1991'), +(747, 'CO2', 'MDEA', 'water', 0.0117, 1.0, 21.6525545, 1.51E-4, 0.0, 0.0, 5.03E-6, 313.15, 23.4, 'Austgen1991'), +(748, 'CO2', 'MDEA', 'water', 0.0215, 1.0, 21.6525545, 4.52E-4, 0.0, 0.0, 1.51E-5, 313.15, 23.4, 'Austgen1991'), +(749, 'CO2', 'MDEA', 'water', 0.0444, 1.0, 21.6525545, 0.00177, 0.0, 0.0, 5.9E-5, 313.15, 23.4, 'Austgen1991'), +(750, 'CO2', 'MDEA', 'water', 0.074, 1.0, 21.6525545, 0.00419, 0.0, 0.0, 1.4E-4, 313.15, 23.4, 'Austgen1991'), +(751, 'CO2', 'MDEA', 'water', 0.113, 1.0, 21.6525545, 0.00887, 0.0, 0.0, 2.96E-4, 313.15, 23.4, 'Austgen1991'), +(752, 'CO2', 'MDEA', 'water', 0.362, 1.0, 21.6525545, 0.0695, 0.0, 0.0, 0.00232, 313.15, 23.4, 'Austgen1991'), +(753, 'CO2', 'MDEA', 'water', 0.842, 1.0, 21.6525545, 0.928, 0.0, 0.0, 0.0309, 313.15, 23.4, 'Austgen1991'), +(754, 'CO2', 'MDEA', 'water', 0.00314, 1.0, 6.884467026, 1.02E-4, 0.0, 0.0, 3.4E-6, 313.15, 49.0, 'Austgen1991'), +(755, 'CO2', 'MDEA', 'water', 0.014, 1.0, 6.884467026, 0.00118, 0.0, 0.0, 3.93E-5, 313.15, 49.0, 'Austgen1991'), +(756, 'CO2', 'MDEA', 'water', 0.0367, 1.0, 6.884467026, 0.00585, 0.0, 0.0, 1.95E-4, 313.15, 49.0, 'Austgen1991'), +(757, 'CO2', 'MDEA', 'water', 0.105, 1.0, 6.884467026, 0.0304, 0.0, 0.0, 0.00101, 313.15, 49.0, 'Austgen1991'), +(758, 'CO2', 'MDEA', 'water', 0.671, 1.0, 6.884467026, 0.936, 0.0, 0.0, 0.0312, 313.15, 49.0, 'Austgen1991'), +(759, 'CO2', 'MDEA', 'water', 0.652, 1.0, 6.884467026, 0.936, 0.0, 0.0, 0.0312, 313.15, 49.0, 'Austgen1991'), +(760, 'CO2', 'MDEA', 'water', 9.0E-4, 1.0, 21.6525545, 2.08E-5, 0.0, 0.0, 6.93E-7, 343.15, 23.4, 'Jou1982'), +(761, 'CO2', 'MDEA', 'water', 0.00129, 1.0, 21.6525545, 3.35E-5, 0.0, 0.0, 1.12E-6, 343.15, 23.4, 'Jou1982'), +(762, 'CO2', 'MDEA', 'water', 0.0056, 1.0, 21.6525545, 4.8E-4, 0.0, 0.0, 1.6E-5, 343.15, 23.4, 'Jou1982'), +(763, 'CO2', 'MDEA', 'water', 0.0208, 1.0, 21.6525545, 0.00305, 0.0, 0.0, 1.02E-4, 343.15, 23.4, 'Jou1982'), +(764, 'CO2', 'MDEA', 'water', 0.0439, 1.0, 21.6525545, 0.00951, 0.0, 0.0, 3.17E-4, 343.15, 23.4, 'Jou1982'), +(765, 'CO2', 'MDEA', 'water', 0.369, 1.0, 21.6525545, 0.409, 0.0, 0.0, 0.0136, 343.15, 23.4, 'Jou1982'), +(766, 'CO2', 'MDEA', 'water', 0.841, 1.0, 21.6525545, 4.47, 0.0, 0.0, 0.149, 343.15, 23.4, 'Jou1982'), +(767, 'CO2', 'MDEA', 'water', 1.011, 1.0, 21.6525545, 9.93, 0.0, 0.0, 0.331, 343.15, 23.4, 'Jou1982'), +(768, 'CO2', 'MDEA', 'water', 1.147, 1.0, 21.6525545, 23.2, 0.0, 0.0, 0.773, 343.15, 23.4, 'Jou1982'), +(769, 'CO2', 'MDEA', 'water', 1.182, 1.0, 21.6525545, 27.3, 0.0, 0.0, 0.91, 343.15, 23.4, 'Jou1982'), +(770, 'CO2', 'MDEA', 'water', 1.235, 1.0, 21.6525545, 42.3, 0.0, 0.0, 1.41, 343.15, 23.4, 'Jou1982'), +(771, 'CO2', 'MDEA', 'water', 1.397, 1.0, 21.6525545, 60.2, 0.0, 0.0, 2.01, 343.15, 23.4, 'Jou1982'), +(772, 'CO2', 'MDEA', 'water', 0.00218, 1.0, 21.6525545, 4.68E-4, 0.0, 0.0, 1.56E-5, 373.15, 23.4, 'Jou1982'), +(773, 'CO2', 'MDEA', 'water', 0.00376, 1.0, 21.6525545, 0.00128, 0.0, 0.0, 4.27E-5, 373.15, 23.4, 'Jou1982'), +(774, 'CO2', 'MDEA', 'water', 0.13, 1.0, 21.6525545, 0.308, 0.0, 0.0, 0.0103, 373.15, 23.4, 'Jou1982'), +(775, 'CO2', 'MDEA', 'water', 0.502, 1.0, 21.6525545, 3.73, 0.0, 0.0, 0.124, 373.15, 23.4, 'Jou1982'), +(776, 'CO2', 'MDEA', 'water', 0.564, 1.0, 21.6525545, 5.73, 0.0, 0.0, 0.191, 373.15, 23.4, 'Jou1982'), +(777, 'CO2', 'MDEA', 'water', 1.009, 1.0, 21.6525545, 26.0, 0.0, 0.0, 0.867, 373.15, 23.4, 'Jou1982'), +(778, 'CO2', 'MDEA', 'water', 1.161, 1.0, 21.6525545, 42.0, 0.0, 0.0, 1.4, 373.15, 23.4, 'Jou1982'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(779, 'CO2', 'MDEA', 'water', 1.218, 1.0, 21.6525545, 55.3, 0.0, 0.0, 1.84, 373.15, 23.4, 'Jou1982'), +(780, 'CO2', 'MDEA', 'water', 0.00124, 1.0, 21.6525545, 7.25E-4, 0.0, 0.0, 2.42E-5, 393.15, 23.4, 'Jou1982'), +(781, 'CO2', 'MDEA', 'water', 0.00166, 1.0, 21.6525545, 0.00116, 0.0, 0.0, 3.87E-5, 393.15, 23.4, 'Jou1982'), +(782, 'CO2', 'MDEA', 'water', 0.0133, 1.0, 21.6525545, 0.0384, 0.0, 0.0, 0.00128, 393.15, 23.4, 'Jou1982'), +(783, 'CO2', 'MDEA', 'water', 0.0973, 1.0, 21.6525545, 0.577, 0.0, 0.0, 0.0192, 393.15, 23.4, 'Jou1982'), +(784, 'CO2', 'MDEA', 'water', 0.336, 1.0, 21.6525545, 4.93, 0.0, 0.0, 0.164, 393.15, 23.4, 'Jou1982'), +(785, 'CO2', 'MDEA', 'water', 0.689, 1.0, 21.6525545, 19.3, 0.0, 0.0, 0.643, 393.15, 23.4, 'Jou1982'), +(786, 'CO2', 'MDEA', 'water', 0.91, 1.0, 21.6525545, 33.8, 0.0, 0.0, 1.13, 393.15, 23.4, 'Jou1982'), +(787, 'CO2', 'MDEA', 'water', 1.043, 1.0, 21.6525545, 46.6, 0.0, 0.0, 1.55, 393.15, 23.4, 'Jou1982'), +(788, 'CO2', 'MDEA', 'water', 1.152, 1.0, 21.6525545, 54.9, 0.0, 0.0, 1.83, 393.15, 23.4, 'Jou1982'), +(789, 'CO2', 'MDEA', 'water', 0.00621, 1.0, 6.884467026, 3.85E-5, 0.0, 0.0, 1.28E-6, 298.15, 49.0, 'Jou1982'), +(790, 'CO2', 'MDEA', 'water', 0.0103, 1.0, 6.884467026, 8.59E-5, 0.0, 0.0, 2.86E-6, 298.15, 49.0, 'Jou1982'), +(791, 'CO2', 'MDEA', 'water', 0.0191, 1.0, 6.884467026, 3.41E-4, 0.0, 0.0, 1.14E-5, 298.15, 49.0, 'Jou1982'), +(792, 'CO2', 'MDEA', 'water', 0.0306, 1.0, 6.884467026, 8.57E-4, 0.0, 0.0, 2.86E-5, 298.15, 49.0, 'Jou1982'), +(793, 'CO2', 'MDEA', 'water', 0.072, 1.0, 6.884467026, 0.00384, 0.0, 0.0, 1.28E-4, 298.15, 49.0, 'Jou1982'), +(794, 'CO2', 'MDEA', 'water', 0.318, 1.0, 6.884467026, 0.053, 0.0, 0.0, 0.00177, 298.15, 49.0, 'Jou1982'), +(795, 'CO2', 'MDEA', 'water', 0.784, 1.0, 6.884467026, 0.481, 0.0, 0.0, 0.016, 298.15, 49.0, 'Jou1982'), +(796, 'CO2', 'MDEA', 'water', 0.93, 1.0, 6.884467026, 1.11, 0.0, 0.0, 0.037, 298.15, 49.0, 'Jou1982'), +(797, 'CO2', 'MDEA', 'water', 0.996, 1.0, 6.884467026, 2.35, 0.0, 0.0, 0.0783, 298.15, 49.0, 'Jou1982'), +(798, 'CO2', 'MDEA', 'water', 1.115, 1.0, 6.884467026, 11.9, 0.0, 0.0, 0.397, 298.15, 49.0, 'Jou1982'), +(799, 'CO2', 'MDEA', 'water', 1.3, 1.0, 6.884467026, 39.4, 0.0, 0.0, 1.31, 298.15, 49.0, 'Jou1982'), +(800, 'CO2', 'MDEA', 'water', 1.37, 1.0, 6.884467026, 54.3, 0.0, 0.0, 1.81, 298.15, 49.0, 'Jou1982'), +(801, 'CO2', 'MDEA', 'water', 1.381, 1.0, 6.884467026, 63.7, 0.0, 0.0, 2.12, 298.15, 49.0, 'Jou1982'), +(802, 'CO2', 'MDEA', 'water', 0.00202, 1.0, 6.884467026, 2.31E-5, 0.0, 0.0, 7.7E-7, 313.15, 49.0, 'Jou1982'), +(803, 'CO2', 'MDEA', 'water', 0.00381, 1.0, 6.884467026, 7.67E-5, 0.0, 0.0, 2.56E-6, 313.15, 49.0, 'Jou1982'), +(804, 'CO2', 'MDEA', 'water', 0.0057, 1.0, 6.884467026, 1.09E-4, 0.0, 0.0, 3.63E-6, 313.15, 49.0, 'Jou1982'), +(805, 'CO2', 'MDEA', 'water', 0.0104, 1.0, 6.884467026, 3.01E-4, 0.0, 0.0, 1.0E-5, 313.15, 49.0, 'Jou1982'), +(806, 'CO2', 'MDEA', 'water', 0.0609, 1.0, 6.884467026, 0.00703, 0.0, 0.0, 2.34E-4, 313.15, 49.0, 'Jou1982'), +(807, 'CO2', 'MDEA', 'water', 0.136, 1.0, 6.884467026, 0.0267, 0.0, 0.0, 8.9E-4, 313.15, 49.0, 'Jou1982'), +(808, 'CO2', 'MDEA', 'water', 0.2845, 1.0, 6.884467026, 0.133, 0.0, 0.0, 0.00443, 313.15, 49.0, 'Jou1982'), +(809, 'CO2', 'MDEA', 'water', 0.7, 1.0, 6.884467026, 0.834, 0.0, 0.0, 0.0278, 313.15, 49.0, 'Jou1982'), +(810, 'CO2', 'MDEA', 'water', 0.71, 1.0, 6.884467026, 1.06, 0.0, 0.0, 0.0353, 313.15, 49.0, 'Jou1982'), +(811, 'CO2', 'MDEA', 'water', 0.936, 1.0, 6.884467026, 4.13, 0.0, 0.0, 0.138, 313.15, 49.0, 'Jou1982'), +(812, 'CO2', 'MDEA', 'water', 1.1, 1.0, 6.884467026, 14.2, 0.0, 0.0, 0.473, 313.15, 49.0, 'Jou1982'), +(813, 'CO2', 'MDEA', 'water', 1.17, 1.0, 6.884467026, 28.0, 0.0, 0.0, 0.933, 313.15, 49.0, 'Jou1982'), +(814, 'CO2', 'MDEA', 'water', 1.218, 1.0, 6.884467026, 40.7, 0.0, 0.0, 1.36, 313.15, 49.0, 'Jou1982'), +(815, 'CO2', 'MDEA', 'water', 1.272, 1.0, 6.884467026, 55.5, 0.0, 0.0, 1.85, 313.15, 49.0, 'Jou1982'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(816, 'CO2', 'MDEA', 'water', 1.29, 1.0, 6.884467026, 65.7, 0.0, 0.0, 2.19, 313.15, 49.0, 'Jou1982'), +(817, 'CO2', 'MDEA', 'water', 3.7E-4, 1.0, 6.884467026, 1.61E-5, 0.0, 0.0, 5.37E-7, 343.15, 49.0, 'Jou1982'), +(818, 'CO2', 'MDEA', 'water', 8.8E-4, 1.0, 6.884467026, 4.85E-5, 0.0, 0.0, 1.62E-6, 343.15, 49.0, 'Jou1982'), +(819, 'CO2', 'MDEA', 'water', 0.00128, 1.0, 6.884467026, 9.63E-5, 0.0, 0.0, 3.21E-6, 343.15, 49.0, 'Jou1982'), +(820, 'CO2', 'MDEA', 'water', 0.00228, 1.0, 6.884467026, 1.83E-4, 0.0, 0.0, 6.1E-6, 343.15, 49.0, 'Jou1982'), +(821, 'CO2', 'MDEA', 'water', 0.0078, 1.0, 6.884467026, 0.0017, 0.0, 0.0, 5.67E-5, 343.15, 49.0, 'Jou1982'), +(822, 'CO2', 'MDEA', 'water', 0.021, 1.0, 6.884467026, 0.00918, 0.0, 0.0, 3.06E-4, 343.15, 49.0, 'Jou1982'), +(823, 'CO2', 'MDEA', 'water', 0.189, 1.0, 6.884467026, 0.403, 0.0, 0.0, 0.0134, 343.15, 49.0, 'Jou1982'), +(824, 'CO2', 'MDEA', 'water', 0.74, 1.0, 6.884467026, 7.05, 0.0, 0.0, 0.235, 343.15, 49.0, 'Jou1982'), +(825, 'CO2', 'MDEA', 'water', 0.941, 1.0, 6.884467026, 16.2, 0.0, 0.0, 0.54, 343.15, 49.0, 'Jou1982'), +(826, 'CO2', 'MDEA', 'water', 1.11, 1.0, 6.884467026, 28.9, 0.0, 0.0, 0.963, 343.15, 49.0, 'Jou1982'), +(827, 'CO2', 'MDEA', 'water', 1.159, 1.0, 6.884467026, 43.0, 0.0, 0.0, 1.43, 343.15, 49.0, 'Jou1982'), +(828, 'CO2', 'MDEA', 'water', 1.187, 1.0, 6.884467026, 55.9, 0.0, 0.0, 1.86, 343.15, 49.0, 'Jou1982'), +(829, 'CO2', 'MDEA', 'water', 1.232, 1.0, 6.884467026, 62.8, 0.0, 0.0, 2.09, 343.15, 49.0, 'Jou1982'), +(830, 'CO2', 'MDEA', 'water', 0.001, 1.0, 6.884467026, 4.01E-4, 0.0, 0.0, 1.34E-5, 373.15, 49.0, 'Jou1982'), +(831, 'CO2', 'MDEA', 'water', 0.00135, 1.0, 6.884467026, 5.54E-4, 0.0, 0.0, 1.85E-5, 373.15, 49.0, 'Jou1982'), +(832, 'CO2', 'MDEA', 'water', 0.00151, 1.0, 6.884467026, 7.12E-4, 0.0, 0.0, 2.37E-5, 373.15, 49.0, 'Jou1982'), +(833, 'CO2', 'MDEA', 'water', 0.00291, 1.0, 6.884467026, 0.00174, 0.0, 0.0, 5.8E-5, 373.15, 49.0, 'Jou1982'), +(834, 'CO2', 'MDEA', 'water', 0.00376, 1.0, 6.884467026, 0.00277, 0.0, 0.0, 9.23E-5, 373.15, 49.0, 'Jou1982'), +(835, 'CO2', 'MDEA', 'water', 0.0276, 1.0, 6.884467026, 0.0769, 0.0, 0.0, 0.00256, 373.15, 49.0, 'Jou1982'), +(836, 'CO2', 'MDEA', 'water', 0.0947, 1.0, 6.884467026, 0.631, 0.0, 0.0, 0.021, 373.15, 49.0, 'Jou1982'), +(837, 'CO2', 'MDEA', 'water', 0.256, 1.0, 6.884467026, 3.31, 0.0, 0.0, 0.11, 373.15, 49.0, 'Jou1982'), +(838, 'CO2', 'MDEA', 'water', 0.532, 1.0, 6.884467026, 13.1, 0.0, 0.0, 0.437, 373.15, 49.0, 'Jou1982'), +(839, 'CO2', 'MDEA', 'water', 0.784, 1.0, 6.884467026, 26.8, 0.0, 0.0, 0.893, 373.15, 49.0, 'Jou1982'), +(840, 'CO2', 'MDEA', 'water', 0.941, 1.0, 6.884467026, 40.1, 0.0, 0.0, 1.34, 373.15, 49.0, 'Jou1982'), +(841, 'CO2', 'MDEA', 'water', 1.096, 1.0, 6.884467026, 55.9, 0.0, 0.0, 1.86, 373.15, 49.0, 'Jou1982'), +(842, 'CO2', 'MDEA', 'water', 0.00105, 1.0, 6.884467026, 0.00143, 0.0, 0.0, 4.77E-5, 393.15, 49.0, 'Jou1982'), +(843, 'CO2', 'MDEA', 'water', 0.00129, 1.0, 6.884467026, 0.00183, 0.0, 0.0, 6.1E-5, 393.15, 49.0, 'Jou1982'), +(844, 'CO2', 'MDEA', 'water', 0.00225, 1.0, 6.884467026, 0.00479, 0.0, 0.0, 1.6E-4, 393.15, 49.0, 'Jou1982'), +(845, 'CO2', 'MDEA', 'water', 0.0186, 1.0, 6.884467026, 0.143, 0.0, 0.0, 0.00477, 393.15, 49.0, 'Jou1982'), +(846, 'CO2', 'MDEA', 'water', 0.0553, 1.0, 6.884467026, 0.691, 0.0, 0.0, 0.023, 393.15, 49.0, 'Jou1982'), +(847, 'CO2', 'MDEA', 'water', 0.128, 1.0, 6.884467026, 2.48, 0.0, 0.0, 0.0827, 393.15, 49.0, 'Jou1982'), +(848, 'CO2', 'MDEA', 'water', 0.279, 1.0, 6.884467026, 8.57, 0.0, 0.0, 0.286, 393.15, 49.0, 'Jou1982'), +(849, 'CO2', 'MDEA', 'water', 0.525, 1.0, 6.884467026, 29.2, 0.0, 0.0, 0.973, 393.15, 49.0, 'Jou1982'), +(850, 'CO2', 'MDEA', 'water', 0.743, 1.0, 6.884467026, 52.9, 0.0, 0.0, 1.76, 393.15, 49.0, 'Jou1982'), +(851, 'CO2', 'MDEA', 'water', 0.002, 1.0, 12.28404901, 4.0E-5, 0.0, 0.0, 1.33E-6, 313.15, 35.0, 'Jou1993'), +(852, 'CO2', 'MDEA', 'water', 0.0036, 1.0, 12.28404901, 6.3E-5, 0.0, 0.0, 2.1E-6, 313.15, 35.0, 'Jou1993'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(853, 'CO2', 'MDEA', 'water', 0.0051, 1.0, 12.28404901, 9.0E-5, 0.0, 0.0, 3.0E-6, 313.15, 35.0, 'Jou1993'), +(854, 'CO2', 'MDEA', 'water', 0.011, 1.0, 12.28404901, 3.3E-4, 0.0, 0.0, 1.1E-5, 313.15, 35.0, 'Jou1993'), +(855, 'CO2', 'MDEA', 'water', 0.013, 1.0, 12.28404901, 4.0E-4, 0.0, 0.0, 1.33E-5, 313.15, 35.0, 'Jou1993'), +(856, 'CO2', 'MDEA', 'water', 0.016, 1.0, 12.28404901, 5.6E-4, 0.0, 0.0, 1.87E-5, 313.15, 35.0, 'Jou1993'), +(857, 'CO2', 'MDEA', 'water', 0.017, 1.0, 12.28404901, 6.9E-4, 0.0, 0.0, 2.3E-5, 313.15, 35.0, 'Jou1993'), +(858, 'CO2', 'MDEA', 'water', 0.027, 1.0, 12.28404901, 0.00146, 0.0, 0.0, 4.87E-5, 313.15, 35.0, 'Jou1993'), +(859, 'CO2', 'MDEA', 'water', 0.039, 1.0, 12.28404901, 0.00224, 0.0, 0.0, 7.47E-5, 313.15, 35.0, 'Jou1993'), +(860, 'CO2', 'MDEA', 'water', 0.059, 1.0, 12.28404901, 0.00415, 0.0, 0.0, 1.38E-4, 313.15, 35.0, 'Jou1993'), +(861, 'CO2', 'MDEA', 'water', 0.077, 1.0, 12.28404901, 0.00719, 0.0, 0.0, 2.4E-4, 313.15, 35.0, 'Jou1993'), +(862, 'CO2', 'MDEA', 'water', 0.106, 1.0, 12.28404901, 0.011, 0.0, 0.0, 3.67E-4, 313.15, 35.0, 'Jou1993'), +(863, 'CO2', 'MDEA', 'water', 0.118, 1.0, 12.28404901, 0.0126, 0.0, 0.0, 4.2E-4, 313.15, 35.0, 'Jou1993'), +(864, 'CO2', 'MDEA', 'water', 0.166, 1.0, 12.28404901, 0.0216, 0.0, 0.0, 7.2E-4, 313.15, 35.0, 'Jou1993'), +(865, 'CO2', 'MDEA', 'water', 0.23, 1.0, 12.28404901, 0.0382, 0.0, 0.0, 0.00127, 313.15, 35.0, 'Jou1993'), +(866, 'CO2', 'MDEA', 'water', 0.249, 1.0, 12.28404901, 0.0443, 0.0, 0.0, 0.00148, 313.15, 35.0, 'Jou1993'), +(867, 'CO2', 'MDEA', 'water', 0.296, 1.0, 12.28404901, 0.0589, 0.0, 0.0, 0.00196, 313.15, 35.0, 'Jou1993'), +(868, 'CO2', 'MDEA', 'water', 0.336, 1.0, 12.28404901, 0.0829, 0.0, 0.0, 0.00276, 313.15, 35.0, 'Jou1993'), +(869, 'CO2', 'MDEA', 'water', 0.394, 1.0, 12.28404901, 0.12, 0.0, 0.0, 0.004, 313.15, 35.0, 'Jou1993'), +(870, 'CO2', 'MDEA', 'water', 0.519, 1.0, 12.28404901, 0.191, 0.0, 0.0, 0.00637, 313.15, 35.0, 'Jou1993'), +(871, 'CO2', 'MDEA', 'water', 0.57, 1.0, 12.28404901, 0.251, 0.0, 0.0, 0.00837, 313.15, 35.0, 'Jou1993'), +(872, 'CO2', 'MDEA', 'water', 0.795, 1.0, 12.28404901, 1.0, 0.0, 0.0, 0.0333, 313.15, 35.0, 'Jou1993'), +(873, 'CO2', 'MDEA', 'water', 0.0077, 1.0, 12.28404901, 0.00963, 0.0, 0.0, 3.21E-4, 373.15, 35.0, 'Jou1993'), +(874, 'CO2', 'MDEA', 'water', 0.0094, 1.0, 12.28404901, 0.0135, 0.0, 0.0, 4.5E-4, 373.15, 35.0, 'Jou1993'), +(875, 'CO2', 'MDEA', 'water', 0.013, 1.0, 12.28404901, 0.0172, 0.0, 0.0, 5.73E-4, 373.15, 35.0, 'Jou1993'), +(876, 'CO2', 'MDEA', 'water', 0.025, 1.0, 12.28404901, 0.0556, 0.0, 0.0, 0.00185, 373.15, 35.0, 'Jou1993'), +(877, 'CO2', 'MDEA', 'water', 0.027, 1.0, 12.28404901, 0.0502, 0.0, 0.0, 0.00167, 373.15, 35.0, 'Jou1993'), +(878, 'CO2', 'MDEA', 'water', 0.034, 1.0, 12.28404901, 0.0984, 0.0, 0.0, 0.00328, 373.15, 35.0, 'Jou1993'), +(879, 'CO2', 'MDEA', 'water', 0.048, 1.0, 12.28404901, 0.156, 0.0, 0.0, 0.0052, 373.15, 35.0, 'Jou1993'), +(880, 'CO2', 'MDEA', 'water', 0.064, 1.0, 12.28404901, 0.191, 0.0, 0.0, 0.00637, 373.15, 35.0, 'Jou1993'), +(881, 'CO2', 'MDEA', 'water', 0.087, 1.0, 12.28404901, 0.365, 0.0, 0.0, 0.0122, 373.15, 35.0, 'Jou1993'), +(882, 'CO2', 'MDEA', 'water', 0.107, 1.0, 12.28404901, 0.659, 0.0, 0.0, 0.022, 373.15, 35.0, 'Jou1993'), +(883, 'CO2', 'MDEA', 'water', 0.134, 1.0, 12.28404901, 1.03, 0.0, 0.0, 0.0343, 373.15, 35.0, 'Jou1993'), +(884, 'CO2', 'MDEA', 'water', 0.16, 1.0, 12.28404901, 1.25, 0.0, 0.0, 0.0417, 373.15, 35.0, 'Jou1993'), +(885, 'CO2', 'MDEA', 'water', 0.219, 1.0, 12.28404901, 2.17, 0.0, 0.0, 0.0723, 373.15, 35.0, 'Jou1993'), +(886, 'CO2', 'MDEA', 'water', 0.231, 1.0, 12.28404901, 2.62, 0.0, 0.0, 0.0873, 373.15, 35.0, 'Jou1993'), +(887, 'CO2', 'MDEA', 'water', 0.271, 1.0, 12.28404901, 2.36, 0.0, 0.0, 0.0787, 373.15, 35.0, 'Jou1993'), +(1185, 'CO2', 'MDEA', 'water', 1.5659, 1.9938, 55.50929781, 0.74, 0.0, 0.0, 0.0247, 313.24, 19.19722168, 'Kuranov1996'), +(1186, 'CO2', 'MDEA', 'water', 1.8523, 1.9938, 55.50929781, 2.149, 0.0, 0.0, 0.0716, 313.12, 19.19722168, 'Kuranov1996'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1187, 'CO2', 'MDEA', 'water', 1.9433, 1.9938, 55.50929781, 3.47, 0.0, 0.0, 0.116, 313.13, 19.19722168, 'Kuranov1996'), +(1188, 'CO2', 'MDEA', 'water', 2.0788, 1.9938, 55.50929781, 7.192, 0.0, 0.0, 0.24, 313.15, 19.19722168, 'Kuranov1996'), +(1189, 'CO2', 'MDEA', 'water', 2.079, 1.9938, 55.50929781, 7.098, 0.0, 0.0, 0.237, 313.15, 19.19722168, 'Kuranov1996'), +(1190, 'CO2', 'MDEA', 'water', 2.2468, 1.9938, 55.50929781, 14.079, 0.0, 0.0, 0.469, 313.25, 19.19722168, 'Kuranov1996'), +(1191, 'CO2', 'MDEA', 'water', 2.3074, 1.9938, 55.50929781, 17.652, 0.0, 0.0, 0.588, 313.19, 19.19722168, 'Kuranov1996'), +(1192, 'CO2', 'MDEA', 'water', 2.4536, 1.9938, 55.50929781, 25.273, 0.0, 0.0, 0.842, 313.2, 19.19722168, 'Kuranov1996'), +(1193, 'CO2', 'MDEA', 'water', 2.4557, 1.9938, 55.50929781, 25.185, 0.0, 0.0, 0.84, 313.11, 19.19722168, 'Kuranov1996'), +(1194, 'CO2', 'MDEA', 'water', 2.495, 1.9493, 55.50929781, 27.852, 0.0, 0.0, 0.928, 313.13, 18.84951912, 'Kuranov1996'), +(1195, 'CO2', 'MDEA', 'water', 2.624, 1.9493, 55.50929781, 35.982, 0.0, 0.0, 1.2, 313.16, 18.84951912, 'Kuranov1996'), +(1196, 'CO2', 'MDEA', 'water', 1.3679, 1.9493, 55.50929781, 1.395, 0.0, 0.0, 0.0465, 333.16, 18.84951912, 'Kuranov1996'), +(1197, 'CO2', 'MDEA', 'water', 1.6712, 1.9493, 55.50929781, 3.217, 0.0, 0.0, 0.107, 333.16, 18.84951912, 'Kuranov1996'), +(1198, 'CO2', 'MDEA', 'water', 1.837, 1.9493, 55.50929781, 5.985, 0.0, 0.0, 0.2, 333.16, 18.84951912, 'Kuranov1996'), +(1199, 'CO2', 'MDEA', 'water', 1.9224, 1.9493, 55.50929781, 8.301, 0.0, 0.0, 0.277, 333.16, 18.84951912, 'Kuranov1996'), +(1200, 'CO2', 'MDEA', 'water', 2.0604, 1.9493, 55.50929781, 13.916, 0.0, 0.0, 0.464, 333.16, 18.84951912, 'Kuranov1996'), +(1201, 'CO2', 'MDEA', 'water', 2.1427, 1.9493, 55.50929781, 18.671, 0.0, 0.0, 0.622, 333.16, 18.84951912, 'Kuranov1996'), +(1202, 'CO2', 'MDEA', 'water', 2.4433, 1.9493, 55.50929781, 40.248, 0.0, 0.0, 1.34, 333.16, 18.84951912, 'Kuranov1996'), +(1203, 'CO2', 'MDEA', 'water', 0.5793, 1.9493, 55.50929781, 2.269, 0.0, 0.0, 0.0756, 373.15, 18.84951912, 'Kuranov1996'), +(1204, 'CO2', 'MDEA', 'water', 0.973, 1.9493, 55.50929781, 4.686, 0.0, 0.0, 0.156, 373.15, 18.84951912, 'Kuranov1996'), +(1205, 'CO2', 'MDEA', 'water', 1.302, 1.9493, 55.50929781, 8.596, 0.0, 0.0, 0.287, 373.15, 18.84951912, 'Kuranov1996'), +(1206, 'CO2', 'MDEA', 'water', 1.572, 1.9493, 55.50929781, 14.744, 0.0, 0.0, 0.491, 373.15, 18.84951912, 'Kuranov1996'), +(1207, 'CO2', 'MDEA', 'water', 1.6087, 1.9493, 55.50929781, 15.977, 0.0, 0.0, 0.533, 373.15, 18.84951912, 'Kuranov1996'), +(1208, 'CO2', 'MDEA', 'water', 1.6805, 1.9493, 55.50929781, 18.372, 0.0, 0.0, 0.612, 373.15, 18.84951912, 'Kuranov1996'), +(1209, 'CO2', 'MDEA', 'water', 1.8402, 1.9493, 55.50929781, 25.554, 0.0, 0.0, 0.852, 373.15, 18.84951912, 'Kuranov1996'), +(1210, 'CO2', 'MDEA', 'water', 2.034, 1.9493, 55.50929781, 37.831, 0.0, 0.0, 1.26, 373.15, 18.84951912, 'Kuranov1996'), +(1211, 'CO2', 'MDEA', 'water', 2.0711, 1.9493, 55.50929781, 40.808, 0.0, 0.0, 1.36, 373.15, 18.84951912, 'Kuranov1996'), +(1212, 'CO2', 'MDEA', 'water', 0.0, 1.9493, 55.50929781, 1.909, 0.0, 0.0, 0.0636, 393.17, 18.84951912, 'Kuranov1996'), +(1213, 'CO2', 'MDEA', 'water', 0.4075, 1.9493, 55.50929781, 3.717, 0.0, 0.0, 0.124, 393.17, 18.84951912, 'Kuranov1996'), +(1214, 'CO2', 'MDEA', 'water', 0.724, 1.9493, 55.50929781, 6.964, 0.0, 0.0, 0.232, 393.17, 18.84951912, 'Kuranov1996'), +(1215, 'CO2', 'MDEA', 'water', 0.9572, 1.9493, 55.50929781, 10.735, 0.0, 0.0, 0.358, 393.17, 18.84951912, 'Kuranov1996'), +(1216, 'CO2', 'MDEA', 'water', 1.3192, 1.9493, 55.50929781, 19.87, 0.0, 0.0, 0.662, 393.17, 18.84951912, 'Kuranov1996'), +(1217, 'CO2', 'MDEA', 'water', 1.6944, 1.9493, 55.50929781, 36.732, 0.0, 0.0, 1.22, 393.17, 18.84951912, 'Kuranov1996'), +(1218, 'CO2', 'MDEA', 'water', 1.9016, 1.9493, 55.50929781, 50.367, 0.0, 0.0, 1.68, 393.17, 18.84951912, 'Kuranov1996'), +(1219, 'CO2', 'MDEA', 'water', 0.0, 1.9493, 55.50929781, 3.464, 0.0, 0.0, 0.115, 413.16, 18.84951912, 'Kuranov1996'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1220, 'CO2', 'MDEA', 'water', 0.3575, 1.9493, 55.50929781, 6.969, 0.0, 0.0, 0.232, 413.16, 18.84951912, 'Kuranov1996'), +(1221, 'CO2', 'MDEA', 'water', 0.5592, 1.9493, 55.50929781, 10.798, 0.0, 0.0, 0.36, 413.16, 18.84951912, 'Kuranov1996'), +(1222, 'CO2', 'MDEA', 'water', 0.8601, 1.9493, 55.50929781, 18.931, 0.0, 0.0, 0.631, 413.16, 18.84951912, 'Kuranov1996'), +(1223, 'CO2', 'MDEA', 'water', 0.9295, 1.9493, 55.50929781, 21.328, 0.0, 0.0, 0.711, 413.16, 18.84951912, 'Kuranov1996'), +(1224, 'CO2', 'MDEA', 'water', 1.1991, 1.9493, 55.50929781, 32.247, 0.0, 0.0, 1.07, 413.16, 18.84951912, 'Kuranov1996'), +(1225, 'CO2', 'MDEA', 'water', 1.3365, 1.9493, 55.50929781, 39.329, 0.0, 0.0, 1.31, 413.16, 18.84951912, 'Kuranov1996'), +(1226, 'CO2', 'MDEA', 'water', 2.6729, 3.9707, 55.50929781, 0.735, 0.0, 0.0, 0.0245, 313.15, 32.11818605, 'Kuranov1996'), +(1227, 'CO2', 'MDEA', 'water', 3.4102, 3.9707, 55.50929781, 2.023, 0.0, 0.0, 0.0674, 313.15, 32.11818605, 'Kuranov1996'), +(1228, 'CO2', 'MDEA', 'water', 3.528, 3.9707, 55.50929781, 2.545, 0.0, 0.0, 0.0848, 313.15, 32.11818605, 'Kuranov1996'), +(1229, 'CO2', 'MDEA', 'water', 3.8605, 3.9707, 55.50929781, 5.931, 0.0, 0.0, 0.198, 313.15, 32.11818605, 'Kuranov1996'), +(1230, 'CO2', 'MDEA', 'water', 3.8948, 3.9707, 55.50929781, 6.738, 0.0, 0.0, 0.225, 313.15, 32.11818605, 'Kuranov1996'), +(1231, 'CO2', 'MDEA', 'water', 4.1771, 3.9707, 55.50929781, 16.054, 0.0, 0.0, 0.535, 313.15, 32.11818605, 'Kuranov1996'), +(1232, 'CO2', 'MDEA', 'water', 4.202, 3.9707, 55.50929781, 15.858, 0.0, 0.0, 0.529, 313.15, 32.11818605, 'Kuranov1996'), +(1233, 'CO2', 'MDEA', 'water', 4.2881, 3.9707, 55.50929781, 19.732, 0.0, 0.0, 0.658, 313.15, 32.11818605, 'Kuranov1996'), +(1234, 'CO2', 'MDEA', 'water', 4.4696, 3.9707, 55.50929781, 28.862, 0.0, 0.0, 0.962, 313.15, 32.11818605, 'Kuranov1996'), +(1235, 'CO2', 'MDEA', 'water', 4.595, 3.9707, 55.50929781, 36.608, 0.0, 0.0, 1.22, 313.15, 32.11818605, 'Kuranov1996'), +(1236, 'CO2', 'MDEA', 'water', 2.6569, 3.9707, 55.50929781, 2.054, 0.0, 0.0, 0.0685, 333.15, 32.11818605, 'Kuranov1996'), +(1237, 'CO2', 'MDEA', 'water', 3.0688, 3.9707, 55.50929781, 3.352, 0.0, 0.0, 0.112, 333.15, 32.11818605, 'Kuranov1996'), +(1238, 'CO2', 'MDEA', 'water', 3.5576, 3.9707, 55.50929781, 6.944, 0.0, 0.0, 0.231, 333.15, 32.11818605, 'Kuranov1996'), +(1239, 'CO2', 'MDEA', 'water', 3.654, 3.9707, 55.50929781, 8.523, 0.0, 0.0, 0.284, 333.15, 32.11818605, 'Kuranov1996'), +(1240, 'CO2', 'MDEA', 'water', 3.7989, 3.9707, 55.50929781, 11.588, 0.0, 0.0, 0.386, 333.15, 32.11818605, 'Kuranov1996'), +(1241, 'CO2', 'MDEA', 'water', 3.8643, 3.9707, 55.50929781, 14.966, 0.0, 0.0, 0.499, 333.15, 32.11818605, 'Kuranov1996'), +(1242, 'CO2', 'MDEA', 'water', 3.8696, 3.9707, 55.50929781, 13.566, 0.0, 0.0, 0.452, 333.15, 32.11818605, 'Kuranov1996'), +(1243, 'CO2', 'MDEA', 'water', 3.9906, 3.9707, 55.50929781, 17.909, 0.0, 0.0, 0.597, 333.15, 32.11818605, 'Kuranov1996'), +(1244, 'CO2', 'MDEA', 'water', 4.2985, 3.9707, 55.50929781, 33.63, 0.0, 0.0, 1.12, 333.15, 32.11818605, 'Kuranov1996'), +(1245, 'CO2', 'MDEA', 'water', 1.3732, 3.9707, 55.50929781, 4.397, 0.0, 0.0, 0.147, 373.15, 32.11818605, 'Kuranov1996'), +(1246, 'CO2', 'MDEA', 'water', 1.8457, 3.9707, 55.50929781, 6.856, 0.0, 0.0, 0.229, 373.15, 32.11818605, 'Kuranov1996'), +(1247, 'CO2', 'MDEA', 'water', 2.1065, 3.9707, 55.50929781, 8.932, 0.0, 0.0, 0.298, 373.15, 32.11818605, 'Kuranov1996'), +(1248, 'CO2', 'MDEA', 'water', 2.5317, 3.9707, 55.50929781, 13.344, 0.0, 0.0, 0.445, 373.15, 32.11818605, 'Kuranov1996'), +(1249, 'CO2', 'MDEA', 'water', 2.7752, 3.9707, 55.50929781, 17.099, 0.0, 0.0, 0.57, 373.15, 32.11818605, 'Kuranov1996'), +(1250, 'CO2', 'MDEA', 'water', 2.9767, 3.9707, 55.50929781, 20.722, 0.0, 0.0, 0.691, 373.15, 32.11818605, 'Kuranov1996'), +(1251, 'CO2', 'MDEA', 'water', 3.2863, 3.9707, 55.50929781, 29.238, 0.0, 0.0, 0.975, 373.15, 32.11818605, 'Kuranov1996'), +(1252, 'CO2', 'MDEA', 'water', 3.5422, 3.9707, 55.50929781, 38.705, 0.0, 0.0, 1.29, 373.15, 32.11818605, 'Kuranov1996'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1253, 'CO2', 'MDEA', 'water', 0.0, 3.9707, 55.50929781, 1.862, 0.0, 0.0, 0.0621, 393.15, 32.11818605, 'Kuranov1996'), +(1254, 'CO2', 'MDEA', 'water', 0.773, 3.9707, 55.50929781, 5.242, 0.0, 0.0, 0.175, 393.15, 32.11818605, 'Kuranov1996'), +(1255, 'CO2', 'MDEA', 'water', 0.9995, 3.9707, 55.50929781, 7.025, 0.0, 0.0, 0.234, 393.15, 32.11818605, 'Kuranov1996'), +(1256, 'CO2', 'MDEA', 'water', 1.4826, 3.9707, 55.50929781, 12.053, 0.0, 0.0, 0.402, 393.15, 32.11818605, 'Kuranov1996'), +(1257, 'CO2', 'MDEA', 'water', 1.8253, 3.9707, 55.50929781, 16.825, 0.0, 0.0, 0.561, 393.15, 32.11818605, 'Kuranov1996'), +(1258, 'CO2', 'MDEA', 'water', 2.166, 3.9707, 55.50929781, 22.893, 0.0, 0.0, 0.763, 393.15, 32.11818605, 'Kuranov1996'), +(1259, 'CO2', 'MDEA', 'water', 2.4392, 3.9707, 55.50929781, 29.055, 0.0, 0.0, 0.969, 393.15, 32.11818605, 'Kuranov1996'), +(1260, 'CO2', 'MDEA', 'water', 2.7827, 3.9707, 55.50929781, 38.962, 0.0, 0.0, 1.3, 393.15, 32.11818605, 'Kuranov1996'), +(1261, 'CO2', 'MDEA', 'water', 0.0, 3.9707, 55.50929781, 3.386, 0.0, 0.0, 0.113, 413.15, 32.11818605, 'Kuranov1996'), +(1262, 'CO2', 'MDEA', 'water', 0.4175, 3.9707, 55.50929781, 6.601, 0.0, 0.0, 0.22, 413.15, 32.11818605, 'Kuranov1996'), +(1263, 'CO2', 'MDEA', 'water', 0.8583, 3.9707, 55.50929781, 12.956, 0.0, 0.0, 0.432, 413.15, 32.11818605, 'Kuranov1996'), +(1264, 'CO2', 'MDEA', 'water', 1.011, 3.9707, 55.50929781, 15.467, 0.0, 0.0, 0.516, 413.15, 32.11818605, 'Kuranov1996'), +(1265, 'CO2', 'MDEA', 'water', 1.5394, 3.9707, 55.50929781, 27.447, 0.0, 0.0, 0.915, 413.15, 32.11818605, 'Kuranov1996'), +(1266, 'CO2', 'MDEA', 'water', 1.7402, 3.9707, 55.50929781, 33.961, 0.0, 0.0, 1.13, 413.15, 32.11818605, 'Kuranov1996'), +(1267, 'CO2', 'MDEA', 'water', 0.95, 1.0, 6.912072251, 49.3, 0.0, 0.0, 1.64, 373.15, 48.9, 'Chakma1987'), +(1268, 'CO2', 'MDEA', 'water', 0.792, 1.0, 6.912072251, 31.72, 0.0, 0.0, 1.06, 373.15, 48.9, 'Chakma1987'), +(1269, 'CO2', 'MDEA', 'water', 0.643, 1.0, 6.912072251, 21.03, 0.0, 0.0, 0.701, 373.15, 48.9, 'Chakma1987'), +(1270, 'CO2', 'MDEA', 'water', 0.497, 1.0, 6.912072251, 14.13, 0.0, 0.0, 0.471, 373.15, 48.9, 'Chakma1987'), +(1271, 'CO2', 'MDEA', 'water', 0.384, 1.0, 6.912072251, 8.96, 0.0, 0.0, 0.299, 373.15, 48.9, 'Chakma1987'), +(1272, 'CO2', 'MDEA', 'water', 0.314, 1.0, 6.912072251, 5.86, 0.0, 0.0, 0.195, 373.15, 48.9, 'Chakma1987'), +(1273, 'CO2', 'MDEA', 'water', 0.213, 1.0, 6.912072251, 2.76, 0.0, 0.0, 0.092, 373.15, 48.9, 'Chakma1987'), +(1274, 'CO2', 'MDEA', 'water', 0.139, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 373.15, 48.9, 'Chakma1987'), +(1275, 'CO2', 'MDEA', 'water', 0.337, 1.0, 6.912072251, 45.16, 0.0, 0.0, 1.51, 413.15, 48.9, 'Chakma1987'), +(1276, 'CO2', 'MDEA', 'water', 0.288, 1.0, 6.912072251, 36.2, 0.0, 0.0, 1.21, 413.15, 48.9, 'Chakma1987'), +(1277, 'CO2', 'MDEA', 'water', 0.228, 1.0, 6.912072251, 25.17, 0.0, 0.0, 0.839, 413.15, 48.9, 'Chakma1987'), +(1278, 'CO2', 'MDEA', 'water', 0.157, 1.0, 6.912072251, 14.13, 0.0, 0.0, 0.471, 413.15, 48.9, 'Chakma1987'), +(1279, 'CO2', 'MDEA', 'water', 0.106, 1.0, 6.912072251, 7.24, 0.0, 0.0, 0.241, 413.15, 48.9, 'Chakma1987'), +(1280, 'CO2', 'MDEA', 'water', 0.066, 1.0, 6.912072251, 3.1, 0.0, 0.0, 0.103, 413.15, 48.9, 'Chakma1987'), +(1281, 'CO2', 'MDEA', 'water', 0.04, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 413.15, 48.9, 'Chakma1987'), +(1282, 'CO2', 'MDEA', 'water', 0.21, 1.0, 6.912072251, 41.37, 0.0, 0.0, 1.38, 433.15, 48.9, 'Chakma1987'), +(1283, 'CO2', 'MDEA', 'water', 0.166, 1.0, 6.912072251, 30.34, 0.0, 0.0, 1.01, 433.15, 48.9, 'Chakma1987'), +(1284, 'CO2', 'MDEA', 'water', 0.106, 1.0, 6.912072251, 15.17, 0.0, 0.0, 0.506, 433.15, 48.9, 'Chakma1987'), +(1285, 'CO2', 'MDEA', 'water', 0.064, 1.0, 6.912072251, 6.89, 0.0, 0.0, 0.23, 433.15, 48.9, 'Chakma1987'), +(1286, 'CO2', 'MDEA', 'water', 0.038, 1.0, 6.912072251, 2.76, 0.0, 0.0, 0.092, 433.15, 48.9, 'Chakma1987'), +(1287, 'CO2', 'MDEA', 'water', 0.025, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 433.15, 48.9, 'Chakma1987'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1288, 'CO2', 'MDEA', 'water', 0.164, 1.0, 6.912072251, 45.5, 0.0, 0.0, 1.52, 453.15, 48.9, 'Chakma1987'), +(1289, 'CO2', 'MDEA', 'water', 0.148, 1.0, 6.912072251, 39.3, 0.0, 0.0, 1.31, 453.15, 48.9, 'Chakma1987'), +(1290, 'CO2', 'MDEA', 'water', 0.127, 1.0, 6.912072251, 32.4, 0.0, 0.0, 1.08, 453.15, 48.9, 'Chakma1987'), +(1291, 'CO2', 'MDEA', 'water', 0.104, 1.0, 6.912072251, 24.88, 0.0, 0.0, 0.829, 453.15, 48.9, 'Chakma1987'), +(1292, 'CO2', 'MDEA', 'water', 0.073, 1.0, 6.912072251, 15.17, 0.0, 0.0, 0.506, 453.15, 48.9, 'Chakma1987'), +(1293, 'CO2', 'MDEA', 'water', 0.049, 1.0, 6.912072251, 7.93, 0.0, 0.0, 0.264, 453.15, 48.9, 'Chakma1987'), +(1294, 'CO2', 'MDEA', 'water', 0.035, 1.0, 6.912072251, 4.14, 0.0, 0.0, 0.138, 453.15, 48.9, 'Chakma1987'), +(1295, 'CO2', 'MDEA', 'water', 0.017, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 453.15, 48.9, 'Chakma1987'), +(1296, 'CO2', 'MDEA', 'water', 0.107, 1.0, 6.912072251, 35.58, 0.0, 0.0, 1.19, 473.15, 48.9, 'Chakma1987'), +(1297, 'CO2', 'MDEA', 'water', 0.087, 1.0, 6.912072251, 27.33, 0.0, 0.0, 0.911, 473.15, 48.9, 'Chakma1987'), +(1298, 'CO2', 'MDEA', 'water', 0.069, 1.0, 6.912072251, 20.34, 0.0, 0.0, 0.678, 473.15, 48.9, 'Chakma1987'), +(1299, 'CO2', 'MDEA', 'water', 0.05, 1.0, 6.912072251, 13.44, 0.0, 0.0, 0.448, 473.15, 48.9, 'Chakma1987'), +(1300, 'CO2', 'MDEA', 'water', 0.031, 1.0, 6.912072251, 6.21, 0.0, 0.0, 0.207, 473.15, 48.9, 'Chakma1987'), +(1301, 'CO2', 'MDEA', 'water', 0.021, 1.0, 6.912072251, 3.45, 0.0, 0.0, 0.115, 473.15, 48.9, 'Chakma1987'), +(1302, 'CO2', 'MDEA', 'water', 0.013, 1.0, 6.912072251, 1.72, 0.0, 0.0, 0.0573, 473.15, 48.9, 'Chakma1987'), +(1303, 'CO2', 'MDEA', 'water', 1.304, 1.0, 26.79201675, 49.3, 0.0, 0.0, 1.64, 373.15, 19.8, 'Chakma1987'), +(1304, 'CO2', 'MDEA', 'water', 1.233, 1.0, 26.79201675, 39.3, 0.0, 0.0, 1.31, 373.15, 19.8, 'Chakma1987'), +(1305, 'CO2', 'MDEA', 'water', 1.12, 1.0, 26.79201675, 27.58, 0.0, 0.0, 0.919, 373.15, 19.8, 'Chakma1987'), +(1306, 'CO2', 'MDEA', 'water', 1.016, 1.0, 26.79201675, 20.0, 0.0, 0.0, 0.667, 373.15, 19.8, 'Chakma1987'), +(1307, 'CO2', 'MDEA', 'water', 0.904, 1.0, 26.79201675, 13.1, 0.0, 0.0, 0.437, 373.15, 19.8, 'Chakma1987'), +(1308, 'CO2', 'MDEA', 'water', 0.694, 1.0, 26.79201675, 7.58, 0.0, 0.0, 0.253, 373.15, 19.8, 'Chakma1987'), +(1309, 'CO2', 'MDEA', 'water', 0.523, 1.0, 26.79201675, 5.17, 0.0, 0.0, 0.172, 373.15, 19.8, 'Chakma1987'), +(1310, 'CO2', 'MDEA', 'water', 0.378, 1.0, 26.79201675, 2.76, 0.0, 0.0, 0.092, 373.15, 19.8, 'Chakma1987'), +(1311, 'CO2', 'MDEA', 'water', 0.274, 1.0, 26.79201675, 1.38, 0.0, 0.0, 0.046, 373.15, 19.8, 'Chakma1987'), +(1312, 'CO2', 'MDEA', 'water', 1.003, 1.0, 26.79201675, 43.09, 0.0, 0.0, 1.44, 413.15, 19.8, 'Chakma1987'), +(1313, 'CO2', 'MDEA', 'water', 0.679, 1.0, 26.79201675, 26.89, 0.0, 0.0, 0.896, 413.15, 19.8, 'Chakma1987'), +(1314, 'CO2', 'MDEA', 'water', 0.484, 1.0, 26.79201675, 18.27, 0.0, 0.0, 0.609, 413.15, 19.8, 'Chakma1987'), +(1315, 'CO2', 'MDEA', 'water', 0.355, 1.0, 26.79201675, 11.72, 0.0, 0.0, 0.391, 413.15, 19.8, 'Chakma1987'), +(1316, 'CO2', 'MDEA', 'water', 0.301, 1.0, 26.79201675, 9.31, 0.0, 0.0, 0.31, 413.15, 19.8, 'Chakma1987'), +(1317, 'CO2', 'MDEA', 'water', 0.261, 1.0, 26.79201675, 7.24, 0.0, 0.0, 0.241, 413.15, 19.8, 'Chakma1987'), +(1318, 'CO2', 'MDEA', 'water', 0.204, 1.0, 26.79201675, 4.48, 0.0, 0.0, 0.149, 413.15, 19.8, 'Chakma1987'), +(1319, 'CO2', 'MDEA', 'water', 0.141, 1.0, 26.79201675, 2.07, 0.0, 0.0, 0.069, 413.15, 19.8, 'Chakma1987'), +(1320, 'CO2', 'MDEA', 'water', 0.095, 1.0, 26.79201675, 1.03, 0.0, 0.0, 0.0343, 413.15, 19.8, 'Chakma1987'), +(1321, 'CO2', 'MDEA', 'water', 0.71, 1.0, 26.79201675, 42.75, 0.0, 0.0, 1.43, 433.15, 19.8, 'Chakma1987'), +(1322, 'CO2', 'MDEA', 'water', 0.495, 1.0, 26.79201675, 29.65, 0.0, 0.0, 0.988, 433.15, 19.8, 'Chakma1987'), +(1323, 'CO2', 'MDEA', 'water', 0.38, 1.0, 26.79201675, 20.68, 0.0, 0.0, 0.689, 433.15, 19.8, 'Chakma1987'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1324, 'CO2', 'MDEA', 'water', 0.305, 1.0, 26.79201675, 15.17, 0.0, 0.0, 0.506, 433.15, 19.8, 'Chakma1987'), +(1325, 'CO2', 'MDEA', 'water', 0.236, 1.0, 26.79201675, 10.0, 0.0, 0.0, 0.333, 433.15, 19.8, 'Chakma1987'), +(1326, 'CO2', 'MDEA', 'water', 0.188, 1.0, 26.79201675, 6.89, 0.0, 0.0, 0.23, 433.15, 19.8, 'Chakma1987'), +(1327, 'CO2', 'MDEA', 'water', 0.147, 1.0, 26.79201675, 4.14, 0.0, 0.0, 0.138, 433.15, 19.8, 'Chakma1987'), +(1328, 'CO2', 'MDEA', 'water', 0.084, 1.0, 26.79201675, 1.38, 0.0, 0.0, 0.046, 433.15, 19.8, 'Chakma1987'), +(1329, 'CO2', 'MDEA', 'water', 0.504, 1.0, 26.79201675, 41.37, 0.0, 0.0, 1.38, 453.15, 19.8, 'Chakma1987'), +(1330, 'CO2', 'MDEA', 'water', 0.364, 1.0, 26.79201675, 28.96, 0.0, 0.0, 0.965, 453.15, 19.8, 'Chakma1987'), +(1331, 'CO2', 'MDEA', 'water', 0.283, 1.0, 26.79201675, 20.68, 0.0, 0.0, 0.689, 453.15, 19.8, 'Chakma1987'), +(1332, 'CO2', 'MDEA', 'water', 0.218, 1.0, 26.79201675, 13.79, 0.0, 0.0, 0.46, 453.15, 19.8, 'Chakma1987'), +(1333, 'CO2', 'MDEA', 'water', 0.158, 1.0, 26.79201675, 8.27, 0.0, 0.0, 0.276, 453.15, 19.8, 'Chakma1987'), +(1334, 'CO2', 'MDEA', 'water', 0.127, 1.0, 26.79201675, 5.52, 0.0, 0.0, 0.184, 453.15, 19.8, 'Chakma1987'), +(1335, 'CO2', 'MDEA', 'water', 0.089, 1.0, 26.79201675, 2.76, 0.0, 0.0, 0.092, 453.15, 19.8, 'Chakma1987'), +(1336, 'CO2', 'MDEA', 'water', 0.066, 1.0, 26.79201675, 1.38, 0.0, 0.0, 0.046, 453.15, 19.8, 'Chakma1987'), +(1337, 'CO2', 'MDEA', 'water', 0.349, 1.0, 26.79201675, 35.85, 0.0, 0.0, 1.2, 473.15, 19.8, 'Chakma1987'), +(1338, 'CO2', 'MDEA', 'water', 0.26, 1.0, 26.79201675, 24.82, 0.0, 0.0, 0.827, 473.15, 19.8, 'Chakma1987'), +(1339, 'CO2', 'MDEA', 'water', 0.213, 1.0, 26.79201675, 17.93, 0.0, 0.0, 0.598, 473.15, 19.8, 'Chakma1987'), +(1340, 'CO2', 'MDEA', 'water', 0.156, 1.0, 26.79201675, 11.03, 0.0, 0.0, 0.368, 473.15, 19.8, 'Chakma1987'), +(1341, 'CO2', 'MDEA', 'water', 0.118, 1.0, 26.79201675, 6.89, 0.0, 0.0, 0.23, 473.15, 19.8, 'Chakma1987'), +(1342, 'CO2', 'MDEA', 'water', 0.096, 1.0, 26.79201675, 4.14, 0.0, 0.0, 0.138, 473.15, 19.8, 'Chakma1987'), +(1343, 'CO2', 'MDEA', 'water', 0.068, 1.0, 125.6752706, 0.01051, 0.0, 0.0, 3.5E-4, 323.15, 5.0, 'Rho1997'), +(1344, 'CO2', 'MDEA', 'water', 0.01495, 1.0, 125.6752706, 0.02051, 0.0, 0.0, 6.84E-4, 323.15, 5.0, 'Rho1997'), +(1345, 'CO2', 'MDEA', 'water', 0.2375, 1.0, 125.6752706, 0.0275, 0.0, 0.0, 9.17E-4, 323.15, 5.0, 'Rho1997'), +(1346, 'CO2', 'MDEA', 'water', 0.3362, 1.0, 125.6752706, 0.04249, 0.0, 0.0, 0.00142, 323.15, 5.0, 'Rho1997'), +(1347, 'CO2', 'MDEA', 'water', 0.4287, 1.0, 125.6752706, 0.06847, 0.0, 0.0, 0.00228, 323.15, 5.0, 'Rho1997'), +(1348, 'CO2', 'MDEA', 'water', 0.5019, 1.0, 125.6752706, 0.08945, 0.0, 0.0, 0.00298, 323.15, 5.0, 'Rho1997'), +(1349, 'CO2', 'MDEA', 'water', 0.5585, 1.0, 125.6752706, 0.1184, 0.0, 0.0, 0.00395, 323.15, 5.0, 'Rho1997'), +(1350, 'CO2', 'MDEA', 'water', 0.6266, 1.0, 125.6752706, 0.1594, 0.0, 0.0, 0.00531, 323.15, 5.0, 'Rho1997'), +(1351, 'CO2', 'MDEA', 'water', 0.6843, 1.0, 125.6752706, 0.2063, 0.0, 0.0, 0.00688, 323.15, 5.0, 'Rho1997'), +(1352, 'CO2', 'MDEA', 'water', 0.0451, 1.0, 25.65130684, 0.01141, 0.0, 0.0, 3.8E-4, 323.15, 20.5, 'Rho1997'), +(1353, 'CO2', 'MDEA', 'water', 0.1185, 1.0, 25.65130684, 0.0334, 0.0, 0.0, 0.00111, 323.15, 20.5, 'Rho1997'), +(1354, 'CO2', 'MDEA', 'water', 0.2223, 1.0, 25.65130684, 0.05738, 0.0, 0.0, 0.00191, 323.15, 20.5, 'Rho1997'), +(1355, 'CO2', 'MDEA', 'water', 0.3368, 1.0, 25.65130684, 0.1133, 0.0, 0.0, 0.00378, 323.15, 20.5, 'Rho1997'), +(1356, 'CO2', 'MDEA', 'water', 0.4332, 1.0, 25.65130684, 0.1942, 0.0, 0.0, 0.00647, 323.15, 20.5, 'Rho1997'), +(1357, 'CO2', 'MDEA', 'water', 0.4933, 1.0, 25.65130684, 0.2542, 0.0, 0.0, 0.00847, 323.15, 20.5, 'Rho1997'), +(1358, 'CO2', 'MDEA', 'water', 0.5899, 1.0, 25.65130684, 0.3971, 0.0, 0.0, 0.0132, 323.15, 20.5, 'Rho1997'), +(1359, 'CO2', 'MDEA', 'water', 0.6117, 1.0, 25.65130684, 0.5549, 0.0, 0.0, 0.0185, 323.15, 20.5, 'Rho1997'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1360, 'CO2', 'MDEA', 'water', 0.7149, 1.0, 25.65130684, 0.7218, 0.0, 0.0, 0.0241, 323.15, 20.5, 'Rho1997'), +(1361, 'CO2', 'MDEA', 'water', 0.7857, 1.0, 25.65130684, 1.06, 0.0, 0.0, 0.0353, 323.15, 20.5, 'Rho1997'), +(1362, 'CO2', 'MDEA', 'water', 0.8478, 1.0, 25.65130684, 1.468, 0.0, 0.0, 0.0489, 323.15, 20.5, 'Rho1997'), +(1363, 'CO2', 'MDEA', 'water', 0.015, 1.0, 6.614487927, 0.00775, 0.0, 0.0, 2.58E-4, 323.15, 50.0, 'Rho1997'), +(1364, 'CO2', 'MDEA', 'water', 0.0442, 1.0, 6.614487927, 0.02474, 0.0, 0.0, 8.25E-4, 323.15, 50.0, 'Rho1997'), +(1365, 'CO2', 'MDEA', 'water', 0.074, 1.0, 6.614487927, 0.04872, 0.0, 0.0, 0.00162, 323.15, 50.0, 'Rho1997'), +(1366, 'CO2', 'MDEA', 'water', 0.1315, 1.0, 6.614487927, 0.1166, 0.0, 0.0, 0.00389, 323.15, 50.0, 'Rho1997'), +(1367, 'CO2', 'MDEA', 'water', 0.1916, 1.0, 6.614487927, 0.1736, 0.0, 0.0, 0.00579, 323.15, 50.0, 'Rho1997'), +(1368, 'CO2', 'MDEA', 'water', 0.242, 1.0, 6.614487927, 0.2445, 0.0, 0.0, 0.00815, 323.15, 50.0, 'Rho1997'), +(1369, 'CO2', 'MDEA', 'water', 0.319, 1.0, 6.614487927, 0.3874, 0.0, 0.0, 0.0129, 323.15, 50.0, 'Rho1997'), +(1370, 'CO2', 'MDEA', 'water', 0.3854, 1.0, 6.614487927, 0.5303, 0.0, 0.0, 0.0177, 323.15, 50.0, 'Rho1997'), +(1371, 'CO2', 'MDEA', 'water', 0.4529, 1.0, 6.614487927, 0.7092, 0.0, 0.0, 0.0236, 323.15, 50.0, 'Rho1997'), +(1372, 'CO2', 'MDEA', 'water', 0.026, 1.0, 2.204829309, 0.1004, 0.0, 0.0, 0.00335, 323.15, 75.0, 'Rho1997'), +(1373, 'CO2', 'MDEA', 'water', 0.0708, 1.0, 2.204829309, 0.2483, 0.0, 0.0, 0.00828, 323.15, 75.0, 'Rho1997'), +(1374, 'CO2', 'MDEA', 'water', 0.1075, 1.0, 2.204829309, 0.4442, 0.0, 0.0, 0.0148, 323.15, 75.0, 'Rho1997'), +(1375, 'CO2', 'MDEA', 'water', 0.1457, 1.0, 2.204829309, 0.622, 0.0, 0.0, 0.0207, 323.15, 75.0, 'Rho1997'), +(1376, 'CO2', 'MDEA', 'water', 0.1842, 1.0, 2.204829309, 0.8209, 0.0, 0.0, 0.0274, 323.15, 75.0, 'Rho1997'), +(1377, 'CO2', 'MDEA', 'water', 0.2246, 1.0, 2.204829309, 1.06, 0.0, 0.0, 0.0353, 323.15, 75.0, 'Rho1997'), +(1378, 'CO2', 'MDEA', 'water', 0.2728, 1.0, 2.204829309, 1.392, 0.0, 0.0, 0.0464, 323.15, 75.0, 'Rho1997'), +(1379, 'CO2', 'MDEA', 'water', 0.0592, 1.0, 125.6752706, 0.01139, 0.0, 0.0, 3.8E-4, 348.15, 5.0, 'Rho1997'), +(1380, 'CO2', 'MDEA', 'water', 0.132, 1.0, 125.6752706, 0.02938, 0.0, 0.0, 9.79E-4, 348.15, 5.0, 'Rho1997'), +(1381, 'CO2', 'MDEA', 'water', 0.2015, 1.0, 125.6752706, 0.05735, 0.0, 0.0, 0.00191, 348.15, 5.0, 'Rho1997'), +(1382, 'CO2', 'MDEA', 'water', 0.2655, 1.0, 125.6752706, 0.09432, 0.0, 0.0, 0.00314, 348.15, 5.0, 'Rho1997'), +(1383, 'CO2', 'MDEA', 'water', 0.3133, 1.0, 125.6752706, 0.1342, 0.0, 0.0, 0.00447, 348.15, 5.0, 'Rho1997'), +(1384, 'CO2', 'MDEA', 'water', 0.3796, 1.0, 125.6752706, 0.1922, 0.0, 0.0, 0.00641, 348.15, 5.0, 'Rho1997'), +(1385, 'CO2', 'MDEA', 'water', 0.4605, 1.0, 125.6752706, 0.2801, 0.0, 0.0, 0.00934, 348.15, 5.0, 'Rho1997'), +(1386, 'CO2', 'MDEA', 'water', 0.5354, 1.0, 125.6752706, 0.397, 0.0, 0.0, 0.0132, 348.15, 5.0, 'Rho1997'), +(1387, 'CO2', 'MDEA', 'water', 0.071, 1.0, 25.65130684, 0.04526, 0.0, 0.0, 0.00151, 348.15, 20.5, 'Rho1997'), +(1388, 'CO2', 'MDEA', 'water', 0.1258, 1.0, 25.65130684, 0.09922, 0.0, 0.0, 0.00331, 348.15, 20.5, 'Rho1997'), +(1389, 'CO2', 'MDEA', 'water', 0.1938, 1.0, 25.65130684, 0.1801, 0.0, 0.0, 0.006, 348.15, 20.5, 'Rho1997'), +(1390, 'CO2', 'MDEA', 'water', 0.2429, 1.0, 25.65130684, 0.263, 0.0, 0.0, 0.00877, 348.15, 20.5, 'Rho1997'), +(1391, 'CO2', 'MDEA', 'water', 0.2526, 1.0, 25.65130684, 0.271, 0.0, 0.0, 0.00903, 348.15, 20.5, 'Rho1997'), +(1392, 'CO2', 'MDEA', 'water', 0.2906, 1.0, 25.65130684, 0.36, 0.0, 0.0, 0.012, 348.15, 20.5, 'Rho1997'), +(1393, 'CO2', 'MDEA', 'water', 0.3415, 1.0, 25.65130684, 0.4839, 0.0, 0.0, 0.0161, 348.15, 20.5, 'Rho1997'), +(1394, 'CO2', 'MDEA', 'water', 0.3873, 1.0, 25.65130684, 0.6128, 0.0, 0.0, 0.0204, 348.15, 20.5, 'Rho1997'), +(1395, 'CO2', 'MDEA', 'water', 0.4432, 1.0, 25.65130684, 0.7966, 0.0, 0.0, 0.0266, 348.15, 20.5, 'Rho1997'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1396, 'CO2', 'MDEA', 'water', 0.5026, 1.0, 25.65130684, 1.047, 0.0, 0.0, 0.0349, 348.15, 20.5, 'Rho1997'), +(1397, 'CO2', 'MDEA', 'water', 0.5551, 1.0, 25.65130684, 1.325, 0.0, 0.0, 0.0442, 348.15, 20.5, 'Rho1997'), +(1398, 'CO2', 'MDEA', 'water', 0.6199, 1.0, 25.65130684, 1.734, 0.0, 0.0, 0.0578, 348.15, 20.5, 'Rho1997'), +(1399, 'CO2', 'MDEA', 'water', 0.0162, 1.0, 6.614487927, 0.03624, 0.0, 0.0, 0.00121, 348.15, 50.0, 'Rho1997'), +(1400, 'CO2', 'MDEA', 'water', 0.0334, 1.0, 6.614487927, 0.0792, 0.0, 0.0, 0.00264, 348.15, 50.0, 'Rho1997'), +(1401, 'CO2', 'MDEA', 'water', 0.042, 1.0, 6.614487927, 0.09721, 0.0, 0.0, 0.00324, 348.15, 50.0, 'Rho1997'), +(1402, 'CO2', 'MDEA', 'water', 0.0537, 1.0, 6.614487927, 0.1371, 0.0, 0.0, 0.00457, 348.15, 50.0, 'Rho1997'), +(1403, 'CO2', 'MDEA', 'water', 0.077, 1.0, 6.614487927, 0.2131, 0.0, 0.0, 0.0071, 348.15, 50.0, 'Rho1997'), +(1404, 'CO2', 'MDEA', 'water', 0.101, 1.0, 6.614487927, 0.311, 0.0, 0.0, 0.0104, 348.15, 50.0, 'Rho1997'), +(1405, 'CO2', 'MDEA', 'water', 0.133, 1.0, 6.614487927, 0.4539, 0.0, 0.0, 0.0151, 348.15, 50.0, 'Rho1997'), +(1406, 'CO2', 'MDEA', 'water', 0.1656, 1.0, 6.614487927, 0.6188, 0.0, 0.0, 0.0206, 348.15, 50.0, 'Rho1997'), +(1407, 'CO2', 'MDEA', 'water', 0.1945, 1.0, 6.614487927, 0.7886, 0.0, 0.0, 0.0263, 348.15, 50.0, 'Rho1997'), +(1408, 'CO2', 'MDEA', 'water', 0.0179, 1.0, 2.204829309, 0.1743, 0.0, 0.0, 0.00581, 348.15, 75.0, 'Rho1997'), +(1409, 'CO2', 'MDEA', 'water', 0.0326, 1.0, 2.204829309, 0.3921, 0.0, 0.0, 0.0131, 348.15, 75.0, 'Rho1997'), +(1410, 'CO2', 'MDEA', 'water', 0.0525, 1.0, 2.204829309, 0.7209, 0.0, 0.0, 0.024, 348.15, 75.0, 'Rho1997'), +(1411, 'CO2', 'MDEA', 'water', 0.075, 1.0, 2.204829309, 1.121, 0.0, 0.0, 0.0374, 348.15, 75.0, 'Rho1997'), +(1412, 'CO2', 'MDEA', 'water', 0.0952, 1.0, 2.204829309, 1.513, 0.0, 0.0, 0.0504, 348.15, 75.0, 'Rho1997'), +(1413, 'CO2', 'MDEA', 'water', 0.1103, 1.0, 2.204829309, 1.842, 0.0, 0.0, 0.0614, 348.15, 75.0, 'Rho1997'), +(1414, 'CO2', 'MDEA', 'water', 0.1271, 1.0, 2.204829309, 2.207, 0.0, 0.0, 0.0736, 348.15, 75.0, 'Rho1997'), +(1415, 'CO2', 'MDEA', 'water', 0.148, 1.0, 2.204829309, 2.683, 0.0, 0.0, 0.0894, 348.15, 75.0, 'Rho1997'), +(1416, 'CO2', 'MDEA', 'water', 0.03, 1.0, 125.6752706, 0.01841, 0.0, 0.0, 6.14E-4, 373.15, 5.0, 'Rho1997'), +(1417, 'CO2', 'MDEA', 'water', 0.0448, 1.0, 125.6752706, 0.03939, 0.0, 0.0, 0.00131, 373.15, 5.0, 'Rho1997'), +(1418, 'CO2', 'MDEA', 'water', 0.0905, 1.0, 125.6752706, 0.07336, 0.0, 0.0, 0.00245, 373.15, 5.0, 'Rho1997'), +(1419, 'CO2', 'MDEA', 'water', 0.1196, 1.0, 125.6752706, 0.1033, 0.0, 0.0, 0.00344, 373.15, 5.0, 'Rho1997'), +(1420, 'CO2', 'MDEA', 'water', 0.1475, 1.0, 125.6752706, 0.1473, 0.0, 0.0, 0.00491, 373.15, 5.0, 'Rho1997'), +(1421, 'CO2', 'MDEA', 'water', 0.2273, 1.0, 125.6752706, 0.2682, 0.0, 0.0, 0.00894, 373.15, 5.0, 'Rho1997'), +(1422, 'CO2', 'MDEA', 'water', 0.026, 1.0, 25.65130684, 0.03314, 0.0, 0.0, 0.0011, 373.15, 20.5, 'Rho1997'), +(1423, 'CO2', 'MDEA', 'water', 0.0547, 1.0, 25.65130684, 0.09609, 0.0, 0.0, 0.0032, 373.15, 20.5, 'Rho1997'), +(1424, 'CO2', 'MDEA', 'water', 0.0877, 1.0, 25.65130684, 0.205, 0.0, 0.0, 0.00683, 373.15, 20.5, 'Rho1997'), +(1425, 'CO2', 'MDEA', 'water', 0.1164, 1.0, 25.65130684, 0.3029, 0.0, 0.0, 0.0101, 373.15, 20.5, 'Rho1997'), +(1426, 'CO2', 'MDEA', 'water', 0.1586, 1.0, 25.65130684, 0.4837, 0.0, 0.0, 0.0161, 373.15, 20.5, 'Rho1997'), +(1427, 'CO2', 'MDEA', 'water', 0.1937, 1.0, 25.65130684, 0.6806, 0.0, 0.0, 0.0227, 373.15, 20.5, 'Rho1997'), +(1428, 'CO2', 'MDEA', 'water', 0.2359, 1.0, 25.65130684, 0.9614, 0.0, 0.0, 0.032, 373.15, 20.5, 'Rho1997'), +(1429, 'CO2', 'MDEA', 'water', 0.2853, 1.0, 25.65130684, 1.327, 0.0, 0.0, 0.0442, 373.15, 20.5, 'Rho1997'), +(1430, 'CO2', 'MDEA', 'water', 0.3259, 1.0, 25.65130684, 1.672, 0.0, 0.0, 0.0557, 373.15, 20.5, 'Rho1997'), +(1431, 'CO2', 'MDEA', 'water', 0.0087, 1.0, 6.614487927, 0.05003, 0.0, 0.0, 0.00167, 373.15, 50.0, 'Rho1997'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1432, 'CO2', 'MDEA', 'water', 0.0164, 1.0, 6.614487927, 0.1139, 0.0, 0.0, 0.0038, 373.15, 50.0, 'Rho1997'), +(1433, 'CO2', 'MDEA', 'water', 0.0261, 1.0, 6.614487927, 0.2029, 0.0, 0.0, 0.00676, 373.15, 50.0, 'Rho1997'), +(1434, 'CO2', 'MDEA', 'water', 0.035, 1.0, 6.614487927, 0.3038, 0.0, 0.0, 0.0101, 373.15, 50.0, 'Rho1997'), +(1435, 'CO2', 'MDEA', 'water', 0.0476, 1.0, 6.614487927, 0.4527, 0.0, 0.0, 0.0151, 373.15, 50.0, 'Rho1997'), +(1436, 'CO2', 'MDEA', 'water', 0.0656, 1.0, 6.614487927, 0.6845, 0.0, 0.0, 0.0228, 373.15, 50.0, 'Rho1997'), +(1437, 'CO2', 'MDEA', 'water', 0.0827, 1.0, 6.614487927, 0.9583, 0.0, 0.0, 0.0319, 373.15, 50.0, 'Rho1997'), +(1438, 'CO2', 'MDEA', 'water', 0.108, 1.0, 6.614487927, 1.403, 0.0, 0.0, 0.0468, 373.15, 50.0, 'Rho1997'), +(1439, 'CO2', 'MDEA', 'water', 0.0643, 1.0, 2.204829309, 0.2171, 0.0, 0.0, 0.00724, 373.15, 75.0, 'Rho1997'), +(1440, 'CO2', 'MDEA', 'water', 0.0126, 1.0, 2.204829309, 0.4729, 0.0, 0.0, 0.0158, 373.15, 75.0, 'Rho1997'), +(1441, 'CO2', 'MDEA', 'water', 0.0202, 1.0, 2.204829309, 0.8346, 0.0, 0.0, 0.0278, 373.15, 75.0, 'Rho1997'), +(1442, 'CO2', 'MDEA', 'water', 0.028, 1.0, 2.204829309, 1.129, 0.0, 0.0, 0.0376, 373.15, 75.0, 'Rho1997'), +(1443, 'CO2', 'MDEA', 'water', 0.0342, 1.0, 2.204829309, 1.549, 0.0, 0.0, 0.0516, 373.15, 75.0, 'Rho1997'), +(1444, 'CO2', 'MDEA', 'water', 0.041, 1.0, 2.204829309, 1.888, 0.0, 0.0, 0.0629, 373.15, 75.0, 'Rho1997'), +(1445, 'CO2', 'MDEA', 'water', 0.0492, 1.0, 2.204829309, 2.355, 0.0, 0.0, 0.0785, 373.15, 75.0, 'Rho1997'), +(1446, 'CO2', 'MDEA', 'water', 1.3458, 1.0, 21.6525545, 48.69973712, 0.0, 0.0, 1.62, 298.15, 23.4, 'Bahiri1984'), +(1447, 'CO2', 'MDEA', 'water', 1.3411, 1.0, 21.6525545, 48.45566272, 0.0, 0.0, 1.62, 298.15, 23.4, 'Bahiri1984'), +(1448, 'CO2', 'MDEA', 'water', 1.2559, 1.0, 21.6525545, 35.32390854, 0.0, 0.0, 1.18, 298.15, 23.4, 'Bahiri1984'), +(1449, 'CO2', 'MDEA', 'water', 1.2822, 1.0, 21.6525545, 34.4965377, 0.0, 0.0, 1.15, 298.15, 23.4, 'Bahiri1984'), +(1450, 'CO2', 'MDEA', 'water', 1.1888, 1.0, 21.6525545, 18.18492159, 0.0, 0.0, 0.606, 298.15, 23.4, 'Bahiri1984'), +(1451, 'CO2', 'MDEA', 'water', 1.1648, 1.0, 21.6525545, 14.71685882, 0.0, 0.0, 0.491, 298.15, 23.4, 'Bahiri1984'), +(1452, 'CO2', 'MDEA', 'water', 1.1492, 1.0, 21.6525545, 13.26895985, 0.0, 0.0, 0.442, 298.15, 23.4, 'Bahiri1984'), +(1453, 'CO2', 'MDEA', 'water', 1.1446, 1.0, 21.6525545, 10.29938801, 0.0, 0.0, 0.343, 298.15, 23.4, 'Bahiri1984'), +(1454, 'CO2', 'MDEA', 'water', 1.1192, 1.0, 21.6525545, 9.24862704, 0.0, 0.0, 0.308, 298.15, 23.4, 'Bahiri1984'), +(1455, 'CO2', 'MDEA', 'water', 1.101, 1.0, 21.6525545, 5.115909694, 0.0, 0.0, 0.171, 298.15, 23.4, 'Bahiri1984'), +(1456, 'CO2', 'MDEA', 'water', 1.071, 1.0, 21.6525545, 4.585013405, 0.0, 0.0, 0.153, 298.15, 23.4, 'Bahiri1984'), +(1457, 'CO2', 'MDEA', 'water', 0.9866, 1.0, 21.6525545, 1.316898587, 0.0, 0.0, 0.0439, 298.15, 23.4, 'Bahiri1984'), +(1458, 'CO2', 'MDEA', 'water', 0.9909, 1.0, 21.6525545, 1.287251132, 0.0, 0.0, 0.0429, 298.15, 23.4, 'Bahiri1984'), +(1459, 'CO2', 'MDEA', 'water', 0.8878, 1.0, 21.6525545, 0.669480905, 0.0, 0.0, 0.0223, 298.15, 23.4, 'Bahiri1984'), +(1460, 'CO2', 'MDEA', 'water', 0.7895, 1.0, 21.6525545, 0.361285267, 0.0, 0.0, 0.012, 298.15, 23.4, 'Bahiri1984'), +(1461, 'CO2', 'MDEA', 'water', 0.6941, 1.0, 21.6525545, 0.236490165, 0.0, 0.0, 0.00788, 298.15, 23.4, 'Bahiri1984'), +(1462, 'CO2', 'MDEA', 'water', 0.6117, 1.0, 21.6525545, 0.20684271, 0.0, 0.0, 0.00689, 298.15, 23.4, 'Bahiri1984'), +(1463, 'CO2', 'MDEA', 'water', 0.5459, 1.0, 21.6525545, 0.184090012, 0.0, 0.0, 0.00614, 298.15, 23.4, 'Bahiri1984'), +(1464, 'CO2', 'MDEA', 'water', 0.4305, 1.0, 21.6525545, 0.148237275, 0.0, 0.0, 0.00494, 298.15, 23.4, 'Bahiri1984'), +(1465, 'CO2', 'MDEA', 'water', 0.3549, 1.0, 21.6525545, 0.135137237, 0.0, 0.0, 0.0045, 298.15, 23.4, 'Bahiri1984'), +(1466, 'CO2', 'MDEA', 'water', 1.2222, 1.0, 21.6525545, 46.62441526, 0.0, 0.0, 1.55, 323.15, 23.4, 'Bahiri1984'); +INSERT INTO PUBLIC.CO2MDEADATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1467, 'CO2', 'MDEA', 'water', 1.2284, 1.0, 21.6525545, 46.14040332, 0.0, 0.0, 1.54, 323.15, 23.4, 'Bahiri1984'), +(1468, 'CO2', 'MDEA', 'water', 1.235, 1.0, 21.6525545, 45.45092762, 0.0, 0.0, 1.52, 323.15, 23.4, 'Bahiri1984'), +(1469, 'CO2', 'MDEA', 'water', 1.1715, 1.0, 21.6525545, 33.04036502, 0.0, 0.0, 1.1, 323.15, 23.4, 'Bahiri1984'), +(1470, 'CO2', 'MDEA', 'water', 1.1743, 1.0, 21.6525545, 30.52377871, 0.0, 0.0, 1.02, 323.15, 23.4, 'Bahiri1984'), +(1471, 'CO2', 'MDEA', 'water', 1.0963, 1.0, 21.6525545, 17.9718736, 0.0, 0.0, 0.599, 323.15, 23.4, 'Bahiri1984'), +(1472, 'CO2', 'MDEA', 'water', 1.079, 1.0, 21.6525545, 15.49320845, 0.0, 0.0, 0.516, 323.15, 23.4, 'Bahiri1984'), +(1473, 'CO2', 'MDEA', 'water', 1.0697, 1.0, 21.6525545, 12.44021005, 0.0, 0.0, 0.415, 323.15, 23.4, 'Bahiri1984'), +(1474, 'CO2', 'MDEA', 'water', 1.0499, 1.0, 21.6525545, 9.045231708, 0.0, 0.0, 0.302, 323.15, 23.4, 'Bahiri1984'), +(1475, 'CO2', 'MDEA', 'water', 1.0194, 1.0, 21.6525545, 6.671366873, 0.0, 0.0, 0.222, 323.15, 23.4, 'Bahiri1984'), +(1476, 'CO2', 'MDEA', 'water', 0.9799, 1.0, 21.6525545, 4.40781815, 0.0, 0.0, 0.147, 323.15, 23.4, 'Bahiri1984'), +(1477, 'CO2', 'MDEA', 'water', 0.8969, 1.0, 21.6525545, 2.304917265, 0.0, 0.0, 0.0768, 323.15, 23.4, 'Bahiri1984'), +(1478, 'CO2', 'MDEA', 'water', 0.8568, 1.0, 21.6525545, 1.78781049, 0.0, 0.0, 0.0596, 323.15, 23.4, 'Bahiri1984'), +(1479, 'CO2', 'MDEA', 'water', 0.6668, 1.0, 21.6525545, 0.863223576, 0.0, 0.0, 0.0288, 323.15, 23.4, 'Bahiri1984'), +(1480, 'CO2', 'MDEA', 'water', 0.6011, 1.0, 21.6525545, 0.631559741, 0.0, 0.0, 0.0211, 323.15, 23.4, 'Bahiri1984'), +(1481, 'CO2', 'MDEA', 'water', 0.5351, 1.0, 21.6525545, 0.547443706, 0.0, 0.0, 0.0182, 323.15, 23.4, 'Bahiri1984'); +CREATE CACHED TABLE PUBLIC.CO2MDEANEW( + ID INT NOT NULL, + COMPONENTSOLUTE VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT1 VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT2 VARCHAR(50) DEFAULT NULL, + LOADING DOUBLE DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + X3 DOUBLE DEFAULT '0', + VAPOURPRESSURE1 DOUBLE DEFAULT '0', + VAPOURPRESSURE2 DOUBLE DEFAULT '0', + VAPOURPRESSURE3 DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + WTMDEA DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.CO2MDEANEW ADD CONSTRAINT PUBLIC.CONSTRAINT_5B PRIMARY KEY(ID); +-- 479 +/- SELECT COUNT(*) FROM PUBLIC.CO2MDEANEW; +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1482, 'CO2', 'MDEA', 'water', 0.0171, 0.0171, 1.0, 21.37742035, 2.0E-4, 0.0, 0.0, 6.67E-6, 297.7, 23.63, 'Lemoine2000'), +(1483, 'CO2', 'MDEA', 'water', 0.0342, 0.0342, 1.0, 21.37742035, 6.2E-4, 0.0, 0.0, 2.07E-5, 297.7, 23.63, 'Lemoine2000'), +(1484, 'CO2', 'MDEA', 'water', 0.0512, 0.0512, 1.0, 21.37742035, 0.00114, 0.0, 0.0, 3.8E-5, 297.72, 23.63, 'Lemoine2000'), +(1485, 'CO2', 'MDEA', 'water', 0.0648, 0.0648, 1.0, 21.37742035, 0.00165, 0.0, 0.0, 5.5E-5, 297.71, 23.63, 'Lemoine2000'), +(1486, 'CO2', 'MDEA', 'water', 0.0853, 0.0853, 1.0, 21.37742035, 0.00256, 0.0, 0.0, 8.53E-5, 297.71, 23.63, 'Lemoine2000'), +(1487, 'CO2', 'MDEA', 'water', 0.0971, 0.0971, 1.0, 21.37742035, 0.00304, 0.0, 0.0, 1.01E-4, 297.71, 23.63, 'Lemoine2000'), +(1488, 'CO2', 'MDEA', 'water', 0.1126, 0.1126, 1.0, 21.37742035, 0.00402, 0.0, 0.0, 1.34E-4, 297.71, 23.63, 'Lemoine2000'), +(1489, 'CO2', 'MDEA', 'water', 0.1295, 0.1295, 1.0, 21.37742035, 0.00477, 0.0, 0.0, 1.59E-4, 297.71, 23.63, 'Lemoine2000'), +(1490, 'CO2', 'MDEA', 'water', 0.1361, 0.1361, 1.0, 21.37742035, 0.00546, 0.0, 0.0, 1.82E-4, 297.71, 23.63, 'Lemoine2000'), +(1491, 'CO2', 'MDEA', 'water', 0.1617, 0.1617, 1.0, 21.37742035, 0.00716, 0.0, 0.0, 2.39E-4, 297.71, 23.63, 'Lemoine2000'), +(1492, 'CO2', 'MDEA', 'water', 0.2042, 0.2042, 1.0, 21.37742035, 0.0108, 0.0, 0.0, 3.58E-4, 297.71, 23.63, 'Lemoine2000'), +(1493, 'CO2', 'MDEA', 'water', 0.255, 0.255, 1.0, 21.37742035, 0.0159, 0.0, 0.0, 5.31E-4, 297.71, 23.63, 'Lemoine2000'), +(1494, 'CO2', 'MDEA', 'water', 0.2625, 0.2625, 1.0, 21.37742035, 0.0164, 0.0, 0.0, 5.45E-4, 297.71, 23.63, 'Lemoine2000'), +(1495, 'CO2', 'MDEA', 'water', 0.005, 0.005, 1.0, 21.6525545, 1.0E-5, 0.0, 0.0, 3.33E-7, 298.15, 23.4, 'Jou1982'), +(1496, 'CO2', 'MDEA', 'water', 0.0166, 0.0166, 1.0, 21.6525545, 6.88E-5, 0.0, 0.0, 2.29E-6, 298.15, 23.4, 'Jou1982'), +(1497, 'CO2', 'MDEA', 'water', 0.0329, 0.0329, 1.0, 21.6525545, 2.18E-4, 0.0, 0.0, 7.27E-6, 298.15, 23.4, 'Jou1982'), +(1498, 'CO2', 'MDEA', 'water', 0.0402, 0.0402, 1.0, 21.6525545, 2.95E-4, 0.0, 0.0, 9.83E-6, 298.15, 23.4, 'Jou1982'), +(1499, 'CO2', 'MDEA', 'water', 0.334, 0.334, 1.0, 21.6525545, 0.0155, 0.0, 0.0, 5.17E-4, 298.15, 23.4, 'Jou1982'), +(1500, 'CO2', 'MDEA', 'water', 0.452, 0.452, 1.0, 21.6525545, 0.0422, 0.0, 0.0, 0.00141, 298.15, 23.4, 'Jou1982'), +(1501, 'CO2', 'MDEA', 'water', 0.638, 0.638, 1.0, 21.6525545, 0.0926, 0.0, 0.0, 0.00309, 298.15, 23.4, 'Jou1982'), +(1502, 'CO2', 'MDEA', 'water', 1.025, 1.025, 1.0, 21.6525545, 1.81, 0.0, 0.0, 0.0603, 298.15, 23.4, 'Jou1982'), +(1503, 'CO2', 'MDEA', 'water', 1.146, 1.146, 1.0, 21.6525545, 6.98, 0.0, 0.0, 0.233, 298.15, 23.4, 'Jou1982'), +(1504, 'CO2', 'MDEA', 'water', 1.308, 1.308, 1.0, 21.6525545, 20.4, 0.0, 0.0, 0.68, 298.15, 23.4, 'Jou1982'), +(1505, 'CO2', 'MDEA', 'water', 1.479, 1.479, 1.0, 21.6525545, 35.5, 0.0, 0.0, 1.18, 298.15, 23.4, 'Jou1982'), +(1506, 'CO2', 'MDEA', 'water', 1.587, 1.587, 1.0, 21.6525545, 45.7, 0.0, 0.0, 1.52, 298.15, 23.4, 'Jou1982'), +(1507, 'CO2', 'MDEA', 'water', 1.676, 1.676, 1.0, 21.6525545, 52.6, 0.0, 0.0, 1.75, 298.15, 23.4, 'Jou1982'), +(1508, 'CO2', 'MDEA', 'water', 0.003, 0.003, 1.0, 21.6525545, 2.17E-5, 0.0, 0.0, 7.23E-7, 313.15, 23.4, 'Jou1982'), +(1509, 'CO2', 'MDEA', 'water', 0.00429, 0.00429, 1.0, 21.6525545, 3.06E-5, 0.0, 0.0, 1.02E-6, 313.15, 23.4, 'Jou1982'), +(1510, 'CO2', 'MDEA', 'water', 0.00504, 0.00504, 1.0, 21.6525545, 3.69E-5, 0.0, 0.0, 1.23E-6, 313.15, 23.4, 'Jou1982'), +(1511, 'CO2', 'MDEA', 'water', 0.012, 0.012, 1.0, 21.6525545, 1.32E-4, 0.0, 0.0, 4.4E-6, 313.15, 23.4, 'Jou1982'), +(1512, 'CO2', 'MDEA', 'water', 0.0676, 0.0676, 1.0, 21.6525545, 0.00184, 0.0, 0.0, 6.13E-5, 313.15, 23.4, 'Jou1982'), +(1513, 'CO2', 'MDEA', 'water', 0.224, 0.224, 1.0, 21.6525545, 0.0238, 0.0, 0.0, 7.93E-4, 313.15, 23.4, 'Jou1982'), +(1514, 'CO2', 'MDEA', 'water', 0.441, 0.441, 1.0, 21.6525545, 0.112, 0.0, 0.0, 0.00373, 313.15, 23.4, 'Jou1982'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1515, 'CO2', 'MDEA', 'water', 0.866, 0.866, 1.0, 21.6525545, 1.01, 0.0, 0.0, 0.0337, 313.15, 23.4, 'Jou1982'), +(1516, 'CO2', 'MDEA', 'water', 0.99, 0.99, 1.0, 21.6525545, 2.94, 0.0, 0.0, 0.098, 313.15, 23.4, 'Jou1982'), +(1517, 'CO2', 'MDEA', 'water', 1.083, 1.083, 1.0, 21.6525545, 6.4, 0.0, 0.0, 0.213, 313.15, 23.4, 'Jou1982'), +(1518, 'CO2', 'MDEA', 'water', 1.204, 1.204, 1.0, 21.6525545, 23.6, 0.0, 0.0, 0.787, 313.15, 23.4, 'Jou1982'), +(1519, 'CO2', 'MDEA', 'water', 1.268, 1.268, 1.0, 21.6525545, 32.0, 0.0, 0.0, 1.07, 313.15, 23.4, 'Jou1982'), +(1520, 'CO2', 'MDEA', 'water', 1.467, 1.467, 1.0, 21.6525545, 48.0, 0.0, 0.0, 1.6, 313.15, 23.4, 'Jou1982'), +(1521, 'CO2', 'MDEA', 'water', 1.639, 1.639, 1.0, 21.6525545, 63.3, 0.0, 0.0, 2.21, 313.15, 23.4, 'Jou1982'), +(1522, 'CO2', 'MDEA', 'water', 0.00601, 0.00601, 1.0, 21.6525545, 5.6E-5, 0.0, 0.0, 1.87E-6, 313.15, 23.4, 'Austgen1991'), +(1523, 'CO2', 'MDEA', 'water', 0.0117, 0.0117, 1.0, 21.6525545, 1.51E-4, 0.0, 0.0, 5.03E-6, 313.15, 23.4, 'Austgen1991'), +(1524, 'CO2', 'MDEA', 'water', 0.0215, 0.0215, 1.0, 21.6525545, 4.52E-4, 0.0, 0.0, 1.51E-5, 313.15, 23.4, 'Austgen1991'), +(1525, 'CO2', 'MDEA', 'water', 0.0444, 0.0444, 1.0, 21.6525545, 0.00177, 0.0, 0.0, 5.9E-5, 313.15, 23.4, 'Austgen1991'), +(1526, 'CO2', 'MDEA', 'water', 0.074, 0.074, 1.0, 21.6525545, 0.00419, 0.0, 0.0, 1.4E-4, 313.15, 23.4, 'Austgen1991'), +(1527, 'CO2', 'MDEA', 'water', 0.113, 0.113, 1.0, 21.6525545, 0.00887, 0.0, 0.0, 2.96E-4, 313.15, 23.4, 'Austgen1991'), +(1528, 'CO2', 'MDEA', 'water', 0.362, 0.362, 1.0, 21.6525545, 0.0695, 0.0, 0.0, 0.00232, 313.15, 23.4, 'Austgen1991'), +(1529, 'CO2', 'MDEA', 'water', 0.842, 0.842, 1.0, 21.6525545, 0.928, 0.0, 0.0, 0.0309, 313.15, 23.4, 'Austgen1991'), +(1530, 'CO2', 'MDEA', 'water', 0.00314, 0.00314, 1.0, 6.884467026, 1.02E-4, 0.0, 0.0, 3.4E-6, 313.15, 49.0, 'Austgen1991'), +(1531, 'CO2', 'MDEA', 'water', 0.014, 0.014, 1.0, 6.884467026, 0.00118, 0.0, 0.0, 3.93E-5, 313.15, 49.0, 'Austgen1991'), +(1532, 'CO2', 'MDEA', 'water', 0.0367, 0.0367, 1.0, 6.884467026, 0.00585, 0.0, 0.0, 1.95E-4, 313.15, 49.0, 'Austgen1991'), +(1533, 'CO2', 'MDEA', 'water', 0.105, 0.105, 1.0, 6.884467026, 0.0304, 0.0, 0.0, 0.00101, 313.15, 49.0, 'Austgen1991'), +(1534, 'CO2', 'MDEA', 'water', 0.671, 0.671, 1.0, 6.884467026, 0.936, 0.0, 0.0, 0.0312, 313.15, 49.0, 'Austgen1991'), +(1535, 'CO2', 'MDEA', 'water', 0.652, 0.652, 1.0, 6.884467026, 0.936, 0.0, 0.0, 0.0312, 313.15, 49.0, 'Austgen1991'), +(1536, 'CO2', 'MDEA', 'water', 9.0E-4, 9.0E-4, 1.0, 21.6525545, 2.08E-5, 0.0, 0.0, 6.93E-7, 343.15, 23.4, 'Jou1982'), +(1537, 'CO2', 'MDEA', 'water', 0.00129, 0.00129, 1.0, 21.6525545, 3.35E-5, 0.0, 0.0, 1.12E-6, 343.15, 23.4, 'Jou1982'), +(1538, 'CO2', 'MDEA', 'water', 0.0056, 0.0056, 1.0, 21.6525545, 4.8E-4, 0.0, 0.0, 1.6E-5, 343.15, 23.4, 'Jou1982'), +(1539, 'CO2', 'MDEA', 'water', 0.0208, 0.00208, 1.0, 21.6525545, 0.00305, 0.0, 0.0, 1.02E-4, 343.15, 23.4, 'Jou1982'), +(1540, 'CO2', 'MDEA', 'water', 0.0439, 0.0439, 1.0, 21.6525545, 0.00951, 0.0, 0.0, 3.17E-4, 343.15, 23.4, 'Jou1982'), +(1541, 'CO2', 'MDEA', 'water', 0.369, 0.369, 1.0, 21.6525545, 0.409, 0.0, 0.0, 0.0136, 343.15, 23.4, 'Jou1982'), +(1542, 'CO2', 'MDEA', 'water', 0.841, 0.841, 1.0, 21.6525545, 4.47, 0.0, 0.0, 0.149, 343.15, 23.4, 'Jou1982'), +(1543, 'CO2', 'MDEA', 'water', 1.011, 1.011, 1.0, 21.6525545, 9.93, 0.0, 0.0, 0.331, 343.15, 23.4, 'Jou1982'), +(1544, 'CO2', 'MDEA', 'water', 1.147, 1.147, 1.0, 21.6525545, 23.2, 0.0, 0.0, 0.773, 343.15, 23.4, 'Jou1982'), +(1545, 'CO2', 'MDEA', 'water', 1.182, 1.182, 1.0, 21.6525545, 27.3, 0.0, 0.0, 0.91, 343.15, 23.4, 'Jou1982'), +(1546, 'CO2', 'MDEA', 'water', 1.235, 1.235, 1.0, 21.6525545, 42.3, 0.0, 0.0, 1.41, 343.15, 23.4, 'Jou1982'), +(1547, 'CO2', 'MDEA', 'water', 1.397, 1.397, 1.0, 21.6525545, 60.2, 0.0, 0.0, 2.01, 343.15, 23.4, 'Jou1982'), +(1548, 'CO2', 'MDEA', 'water', 0.00218, 0.00218, 1.0, 21.6525545, 4.68E-4, 0.0, 0.0, 1.56E-5, 373.15, 23.4, 'Jou1982'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1549, 'CO2', 'MDEA', 'water', 0.00376, 0.00376, 1.0, 21.6525545, 0.00128, 0.0, 0.0, 4.27E-5, 373.15, 23.4, 'Jou1982'), +(1550, 'CO2', 'MDEA', 'water', 0.13, 0.13, 1.0, 21.6525545, 0.308, 0.0, 0.0, 0.0103, 373.15, 23.4, 'Jou1982'), +(1551, 'CO2', 'MDEA', 'water', 0.502, 0.502, 1.0, 21.6525545, 3.73, 0.0, 0.0, 0.124, 373.15, 23.4, 'Jou1982'), +(1552, 'CO2', 'MDEA', 'water', 0.564, 0.564, 1.0, 21.6525545, 5.73, 0.0, 0.0, 0.191, 373.15, 23.4, 'Jou1982'), +(1553, 'CO2', 'MDEA', 'water', 1.009, 1.009, 1.0, 21.6525545, 26.0, 0.0, 0.0, 0.867, 373.15, 23.4, 'Jou1982'), +(1554, 'CO2', 'MDEA', 'water', 1.161, 1.161, 1.0, 21.6525545, 42.0, 0.0, 0.0, 1.4, 373.15, 23.4, 'Jou1982'), +(1555, 'CO2', 'MDEA', 'water', 1.218, 1.218, 1.0, 21.6525545, 55.3, 0.0, 0.0, 1.84, 373.15, 23.4, 'Jou1982'), +(1556, 'CO2', 'MDEA', 'water', 0.00124, 0.00124, 1.0, 21.6525545, 7.25E-4, 0.0, 0.0, 2.42E-5, 393.15, 23.4, 'Jou1982'), +(1557, 'CO2', 'MDEA', 'water', 0.00166, 0.00166, 1.0, 21.6525545, 0.00116, 0.0, 0.0, 3.87E-5, 393.15, 23.4, 'Jou1982'), +(1558, 'CO2', 'MDEA', 'water', 0.0133, 0.0133, 1.0, 21.6525545, 0.0384, 0.0, 0.0, 0.00128, 393.15, 23.4, 'Jou1982'), +(1559, 'CO2', 'MDEA', 'water', 0.0973, 0.0973, 1.0, 21.6525545, 0.577, 0.0, 0.0, 0.0192, 393.15, 23.4, 'Jou1982'), +(1560, 'CO2', 'MDEA', 'water', 0.336, 0.336, 1.0, 21.6525545, 4.93, 0.0, 0.0, 0.164, 393.15, 23.4, 'Jou1982'), +(1561, 'CO2', 'MDEA', 'water', 0.689, 0.689, 1.0, 21.6525545, 19.3, 0.0, 0.0, 0.643, 393.15, 23.4, 'Jou1982'), +(1562, 'CO2', 'MDEA', 'water', 0.91, 0.91, 1.0, 21.6525545, 33.8, 0.0, 0.0, 1.13, 393.15, 23.4, 'Jou1982'), +(1563, 'CO2', 'MDEA', 'water', 1.043, 1.043, 1.0, 21.6525545, 46.6, 0.0, 0.0, 1.55, 393.15, 23.4, 'Jou1982'), +(1564, 'CO2', 'MDEA', 'water', 1.152, 1.152, 1.0, 21.6525545, 54.9, 0.0, 0.0, 1.83, 393.15, 23.4, 'Jou1982'), +(1565, 'CO2', 'MDEA', 'water', 0.00621, 0.00621, 1.0, 6.884467026, 3.85E-5, 0.0, 0.0, 1.28E-6, 298.15, 49.0, 'Jou1982'), +(1566, 'CO2', 'MDEA', 'water', 0.0103, 0.0103, 1.0, 6.884467026, 8.59E-5, 0.0, 0.0, 2.86E-6, 298.15, 49.0, 'Jou1982'), +(1567, 'CO2', 'MDEA', 'water', 0.0191, 0.0191, 1.0, 6.884467026, 3.41E-4, 0.0, 0.0, 1.14E-5, 298.15, 49.0, 'Jou1982'), +(1568, 'CO2', 'MDEA', 'water', 0.0306, 0.0306, 1.0, 6.884467026, 8.57E-4, 0.0, 0.0, 2.86E-5, 298.15, 49.0, 'Jou1982'), +(1569, 'CO2', 'MDEA', 'water', 0.072, 0.072, 1.0, 6.884467026, 0.00384, 0.0, 0.0, 1.28E-4, 298.15, 49.0, 'Jou1982'), +(1570, 'CO2', 'MDEA', 'water', 0.318, 0.318, 1.0, 6.884467026, 0.053, 0.0, 0.0, 0.00177, 298.15, 49.0, 'Jou1982'), +(1571, 'CO2', 'MDEA', 'water', 0.784, 0.784, 1.0, 6.884467026, 0.481, 0.0, 0.0, 0.016, 298.15, 49.0, 'Jou1982'), +(1572, 'CO2', 'MDEA', 'water', 0.93, 0.93, 1.0, 6.884467026, 1.11, 0.0, 0.0, 0.037, 298.15, 49.0, 'Jou1982'), +(1573, 'CO2', 'MDEA', 'water', 0.996, 0.996, 1.0, 6.884467026, 2.35, 0.0, 0.0, 0.0783, 298.15, 49.0, 'Jou1982'), +(1574, 'CO2', 'MDEA', 'water', 1.115, 1.115, 1.0, 6.884467026, 11.9, 0.0, 0.0, 0.397, 298.15, 49.0, 'Jou1982'), +(1575, 'CO2', 'MDEA', 'water', 1.3, 1.3, 1.0, 6.884467026, 39.4, 0.0, 0.0, 1.31, 298.15, 49.0, 'Jou1982'), +(1576, 'CO2', 'MDEA', 'water', 1.37, 1.37, 1.0, 6.884467026, 54.3, 0.0, 0.0, 1.81, 298.15, 49.0, 'Jou1982'), +(1577, 'CO2', 'MDEA', 'water', 1.381, 1.381, 1.0, 6.884467026, 63.7, 0.0, 0.0, 2.12, 298.15, 49.0, 'Jou1982'), +(1578, 'CO2', 'MDEA', 'water', 0.00202, 0.00202, 1.0, 6.884467026, 2.31E-5, 0.0, 0.0, 7.7E-7, 313.15, 49.0, 'Jou1982'), +(1579, 'CO2', 'MDEA', 'water', 0.00381, 0.00381, 1.0, 6.884467026, 7.67E-5, 0.0, 0.0, 2.56E-6, 313.15, 49.0, 'Jou1982'), +(1580, 'CO2', 'MDEA', 'water', 0.0057, 0.0057, 1.0, 6.884467026, 1.09E-4, 0.0, 0.0, 3.63E-6, 313.15, 49.0, 'Jou1982'), +(1581, 'CO2', 'MDEA', 'water', 0.0104, 0.0104, 1.0, 6.884467026, 3.01E-4, 0.0, 0.0, 1.0E-5, 313.15, 49.0, 'Jou1982'), +(1582, 'CO2', 'MDEA', 'water', 0.0609, 0.0609, 1.0, 6.884467026, 0.00703, 0.0, 0.0, 2.34E-4, 313.15, 49.0, 'Jou1982'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1583, 'CO2', 'MDEA', 'water', 0.136, 0.136, 1.0, 6.884467026, 0.0267, 0.0, 0.0, 8.9E-4, 313.15, 49.0, 'Jou1982'), +(1584, 'CO2', 'MDEA', 'water', 0.2845, 0.2845, 1.0, 6.884467026, 0.133, 0.0, 0.0, 0.00443, 313.15, 49.0, 'Jou1982'), +(1585, 'CO2', 'MDEA', 'water', 0.7, 0.7, 1.0, 6.884467026, 0.834, 0.0, 0.0, 0.0278, 313.15, 49.0, 'Jou1982'), +(1586, 'CO2', 'MDEA', 'water', 0.71, 0.71, 1.0, 6.884467026, 1.06, 0.0, 0.0, 0.0353, 313.15, 49.0, 'Jou1982'), +(1587, 'CO2', 'MDEA', 'water', 0.936, 0.936, 1.0, 6.884467026, 4.13, 0.0, 0.0, 0.138, 313.15, 49.0, 'Jou1982'), +(1588, 'CO2', 'MDEA', 'water', 1.1, 1.1, 1.0, 6.884467026, 14.2, 0.0, 0.0, 0.473, 313.15, 49.0, 'Jou1982'), +(1589, 'CO2', 'MDEA', 'water', 1.17, 1.17, 1.0, 6.884467026, 28.0, 0.0, 0.0, 0.933, 313.15, 49.0, 'Jou1982'), +(1590, 'CO2', 'MDEA', 'water', 1.218, 1.218, 1.0, 6.884467026, 40.7, 0.0, 0.0, 1.36, 313.15, 49.0, 'Jou1982'), +(1591, 'CO2', 'MDEA', 'water', 1.272, 1.272, 1.0, 6.884467026, 55.5, 0.0, 0.0, 1.85, 313.15, 49.0, 'Jou1982'), +(1592, 'CO2', 'MDEA', 'water', 1.29, 1.29, 1.0, 6.884467026, 65.7, 0.0, 0.0, 2.19, 313.15, 49.0, 'Jou1982'), +(1593, 'CO2', 'MDEA', 'water', 3.7E-4, 3.7E-4, 1.0, 6.884467026, 1.61E-5, 0.0, 0.0, 5.37E-7, 343.15, 49.0, 'Jou1982'), +(1594, 'CO2', 'MDEA', 'water', 8.8E-4, 8.8E-4, 1.0, 6.884467026, 4.85E-5, 0.0, 0.0, 1.62E-6, 343.15, 49.0, 'Jou1982'), +(1595, 'CO2', 'MDEA', 'water', 0.00128, 0.00128, 1.0, 6.884467026, 9.63E-5, 0.0, 0.0, 3.21E-6, 343.15, 49.0, 'Jou1982'), +(1596, 'CO2', 'MDEA', 'water', 0.00228, 0.00228, 1.0, 6.884467026, 1.83E-4, 0.0, 0.0, 6.1E-6, 343.15, 49.0, 'Jou1982'), +(1597, 'CO2', 'MDEA', 'water', 0.0078, 0.0078, 1.0, 6.884467026, 0.0017, 0.0, 0.0, 5.67E-5, 343.15, 49.0, 'Jou1982'), +(1598, 'CO2', 'MDEA', 'water', 0.021, 0.021, 1.0, 6.884467026, 0.00918, 0.0, 0.0, 3.06E-4, 343.15, 49.0, 'Jou1982'), +(1599, 'CO2', 'MDEA', 'water', 0.189, 0.189, 1.0, 6.884467026, 0.403, 0.0, 0.0, 0.0134, 343.15, 49.0, 'Jou1982'), +(1600, 'CO2', 'MDEA', 'water', 0.74, 0.74, 1.0, 6.884467026, 7.05, 0.0, 0.0, 0.235, 343.15, 49.0, 'Jou1982'), +(1601, 'CO2', 'MDEA', 'water', 0.941, 0.941, 1.0, 6.884467026, 16.2, 0.0, 0.0, 0.54, 343.15, 49.0, 'Jou1982'), +(1602, 'CO2', 'MDEA', 'water', 1.11, 1.11, 1.0, 6.884467026, 28.9, 0.0, 0.0, 0.963, 343.15, 49.0, 'Jou1982'), +(1603, 'CO2', 'MDEA', 'water', 1.159, 1.159, 1.0, 6.884467026, 43.0, 0.0, 0.0, 1.43, 343.15, 49.0, 'Jou1982'), +(1604, 'CO2', 'MDEA', 'water', 1.187, 1.187, 1.0, 6.884467026, 55.9, 0.0, 0.0, 1.86, 343.15, 49.0, 'Jou1982'), +(1605, 'CO2', 'MDEA', 'water', 1.232, 1.232, 1.0, 6.884467026, 62.8, 0.0, 0.0, 2.09, 343.15, 49.0, 'Jou1982'), +(1606, 'CO2', 'MDEA', 'water', 0.001, 0.001, 1.0, 6.884467026, 4.01E-4, 0.0, 0.0, 1.34E-5, 373.15, 49.0, 'Jou1982'), +(1607, 'CO2', 'MDEA', 'water', 0.00135, 0.00135, 1.0, 6.884467026, 5.54E-4, 0.0, 0.0, 1.85E-5, 373.15, 49.0, 'Jou1982'), +(1608, 'CO2', 'MDEA', 'water', 0.00151, 0.00151, 1.0, 6.884467026, 7.12E-4, 0.0, 0.0, 2.37E-5, 373.15, 49.0, 'Jou1982'), +(1609, 'CO2', 'MDEA', 'water', 0.00291, 0.00291, 1.0, 6.884467026, 0.00174, 0.0, 0.0, 5.8E-5, 373.15, 49.0, 'Jou1982'), +(1610, 'CO2', 'MDEA', 'water', 0.00376, 0.00376, 1.0, 6.884467026, 0.00277, 0.0, 0.0, 9.23E-5, 373.15, 49.0, 'Jou1982'), +(1611, 'CO2', 'MDEA', 'water', 0.0276, 0.0276, 1.0, 6.884467026, 0.0769, 0.0, 0.0, 0.00256, 373.15, 49.0, 'Jou1982'), +(1612, 'CO2', 'MDEA', 'water', 0.0947, 0.0947, 1.0, 6.884467026, 0.631, 0.0, 0.0, 0.021, 373.15, 49.0, 'Jou1982'), +(1613, 'CO2', 'MDEA', 'water', 0.256, 0.256, 1.0, 6.884467026, 3.31, 0.0, 0.0, 0.11, 373.15, 49.0, 'Jou1982'), +(1614, 'CO2', 'MDEA', 'water', 0.532, 0.532, 1.0, 6.884467026, 13.1, 0.0, 0.0, 0.437, 373.15, 49.0, 'Jou1982'), +(1615, 'CO2', 'MDEA', 'water', 0.784, 0.784, 1.0, 6.884467026, 26.8, 0.0, 0.0, 0.893, 373.15, 49.0, 'Jou1982'), +(1616, 'CO2', 'MDEA', 'water', 0.941, 0.941, 1.0, 6.884467026, 40.1, 0.0, 0.0, 1.34, 373.15, 49.0, 'Jou1982'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1617, 'CO2', 'MDEA', 'water', 1.096, 1.096, 1.0, 6.884467026, 55.9, 0.0, 0.0, 1.86, 373.15, 49.0, 'Jou1982'), +(1618, 'CO2', 'MDEA', 'water', 0.00105, 0.00105, 1.0, 6.884467026, 0.00143, 0.0, 0.0, 4.77E-5, 393.15, 49.0, 'Jou1982'), +(1619, 'CO2', 'MDEA', 'water', 0.00129, 0.00129, 1.0, 6.884467026, 0.00183, 0.0, 0.0, 6.1E-5, 393.15, 49.0, 'Jou1982'), +(1620, 'CO2', 'MDEA', 'water', 0.00225, 0.00225, 1.0, 6.884467026, 0.00479, 0.0, 0.0, 1.6E-4, 393.15, 49.0, 'Jou1982'), +(1621, 'CO2', 'MDEA', 'water', 0.0186, 0.0186, 1.0, 6.884467026, 0.143, 0.0, 0.0, 0.00477, 393.15, 49.0, 'Jou1982'), +(1622, 'CO2', 'MDEA', 'water', 0.0553, 0.0553, 1.0, 6.884467026, 0.691, 0.0, 0.0, 0.023, 393.15, 49.0, 'Jou1982'), +(1623, 'CO2', 'MDEA', 'water', 0.128, 0.128, 1.0, 6.884467026, 2.48, 0.0, 0.0, 0.0827, 393.15, 49.0, 'Jou1982'), +(1624, 'CO2', 'MDEA', 'water', 0.279, 0.279, 1.0, 6.884467026, 8.57, 0.0, 0.0, 0.286, 393.15, 49.0, 'Jou1982'), +(1625, 'CO2', 'MDEA', 'water', 0.525, 0.525, 1.0, 6.884467026, 29.2, 0.0, 0.0, 0.973, 393.15, 49.0, 'Jou1982'), +(1626, 'CO2', 'MDEA', 'water', 0.743, 0.743, 1.0, 6.884467026, 52.9, 0.0, 0.0, 1.76, 393.15, 49.0, 'Jou1982'), +(1627, 'CO2', 'MDEA', 'water', 0.002, 0.002, 1.0, 12.28404901, 4.0E-5, 0.0, 0.0, 1.33E-6, 313.15, 35.0, 'Jou1993'), +(1628, 'CO2', 'MDEA', 'water', 0.0036, 0.0036, 1.0, 12.28404901, 6.3E-5, 0.0, 0.0, 2.1E-6, 313.15, 35.0, 'Jou1993'), +(1629, 'CO2', 'MDEA', 'water', 0.0051, 0.0051, 1.0, 12.28404901, 9.0E-5, 0.0, 0.0, 3.0E-6, 313.15, 35.0, 'Jou1993'), +(1630, 'CO2', 'MDEA', 'water', 0.011, 0.011, 1.0, 12.28404901, 3.3E-4, 0.0, 0.0, 1.1E-5, 313.15, 35.0, 'Jou1993'), +(1631, 'CO2', 'MDEA', 'water', 0.013, 0.013, 1.0, 12.28404901, 4.0E-4, 0.0, 0.0, 1.33E-5, 313.15, 35.0, 'Jou1993'), +(1632, 'CO2', 'MDEA', 'water', 0.016, 0.016, 1.0, 12.28404901, 5.6E-4, 0.0, 0.0, 1.87E-5, 313.15, 35.0, 'Jou1993'), +(1633, 'CO2', 'MDEA', 'water', 0.017, 0.017, 1.0, 12.28404901, 6.9E-4, 0.0, 0.0, 2.3E-5, 313.15, 35.0, 'Jou1993'), +(1634, 'CO2', 'MDEA', 'water', 0.027, 0.027, 1.0, 12.28404901, 0.00146, 0.0, 0.0, 4.87E-5, 313.15, 35.0, 'Jou1993'), +(1635, 'CO2', 'MDEA', 'water', 0.039, 0.039, 1.0, 12.28404901, 0.00224, 0.0, 0.0, 7.47E-5, 313.15, 35.0, 'Jou1993'), +(1636, 'CO2', 'MDEA', 'water', 0.059, 0.059, 1.0, 12.28404901, 0.00415, 0.0, 0.0, 1.38E-4, 313.15, 35.0, 'Jou1993'), +(1637, 'CO2', 'MDEA', 'water', 0.077, 0.077, 1.0, 12.28404901, 0.00719, 0.0, 0.0, 2.4E-4, 313.15, 35.0, 'Jou1993'), +(1638, 'CO2', 'MDEA', 'water', 0.106, 0.106, 1.0, 12.28404901, 0.011, 0.0, 0.0, 3.67E-4, 313.15, 35.0, 'Jou1993'), +(1639, 'CO2', 'MDEA', 'water', 0.118, 0.118, 1.0, 12.28404901, 0.0126, 0.0, 0.0, 4.2E-4, 313.15, 35.0, 'Jou1993'), +(1640, 'CO2', 'MDEA', 'water', 0.166, 0.166, 1.0, 12.28404901, 0.0216, 0.0, 0.0, 7.2E-4, 313.15, 35.0, 'Jou1993'), +(1641, 'CO2', 'MDEA', 'water', 0.23, 0.23, 1.0, 12.28404901, 0.0382, 0.0, 0.0, 0.00127, 313.15, 35.0, 'Jou1993'), +(1642, 'CO2', 'MDEA', 'water', 0.249, 0.249, 1.0, 12.28404901, 0.0443, 0.0, 0.0, 0.00148, 313.15, 35.0, 'Jou1993'), +(1643, 'CO2', 'MDEA', 'water', 0.296, 0.296, 1.0, 12.28404901, 0.0589, 0.0, 0.0, 0.00196, 313.15, 35.0, 'Jou1993'), +(1644, 'CO2', 'MDEA', 'water', 0.336, 0.336, 1.0, 12.28404901, 0.0829, 0.0, 0.0, 0.00276, 313.15, 35.0, 'Jou1993'), +(1645, 'CO2', 'MDEA', 'water', 0.394, 0.394, 1.0, 12.28404901, 0.12, 0.0, 0.0, 0.004, 313.15, 35.0, 'Jou1993'), +(1646, 'CO2', 'MDEA', 'water', 0.519, 0.519, 1.0, 12.28404901, 0.191, 0.0, 0.0, 0.00637, 313.15, 35.0, 'Jou1993'), +(1647, 'CO2', 'MDEA', 'water', 0.57, 0.57, 1.0, 12.28404901, 0.251, 0.0, 0.0, 0.00837, 313.15, 35.0, 'Jou1993'), +(1648, 'CO2', 'MDEA', 'water', 0.795, 0.795, 1.0, 12.28404901, 1.0, 0.0, 0.0, 0.0333, 313.15, 35.0, 'Jou1993'), +(1649, 'CO2', 'MDEA', 'water', 0.0077, 0.0077, 1.0, 12.28404901, 0.00963, 0.0, 0.0, 3.21E-4, 373.15, 35.0, 'Jou1993'), +(1650, 'CO2', 'MDEA', 'water', 0.0094, 0.0094, 1.0, 12.28404901, 0.0135, 0.0, 0.0, 4.5E-4, 373.15, 35.0, 'Jou1993'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1651, 'CO2', 'MDEA', 'water', 0.013, 0.013, 1.0, 12.28404901, 0.0172, 0.0, 0.0, 5.73E-4, 373.15, 35.0, 'Jou1993'), +(1652, 'CO2', 'MDEA', 'water', 0.025, 0.025, 1.0, 12.28404901, 0.0556, 0.0, 0.0, 0.00185, 373.15, 35.0, 'Jou1993'), +(1653, 'CO2', 'MDEA', 'water', 0.027, 0.027, 1.0, 12.28404901, 0.0502, 0.0, 0.0, 0.00167, 373.15, 35.0, 'Jou1993'), +(1654, 'CO2', 'MDEA', 'water', 0.034, 0.034, 1.0, 12.28404901, 0.0984, 0.0, 0.0, 0.00328, 373.15, 35.0, 'Jou1993'), +(1655, 'CO2', 'MDEA', 'water', 0.048, 0.048, 1.0, 12.28404901, 0.156, 0.0, 0.0, 0.0052, 373.15, 35.0, 'Jou1993'), +(1656, 'CO2', 'MDEA', 'water', 0.064, 0.064, 1.0, 12.28404901, 0.191, 0.0, 0.0, 0.00637, 373.15, 35.0, 'Jou1993'), +(1657, 'CO2', 'MDEA', 'water', 0.087, 0.087, 1.0, 12.28404901, 0.365, 0.0, 0.0, 0.0122, 373.15, 35.0, 'Jou1993'), +(1658, 'CO2', 'MDEA', 'water', 0.107, 0.107, 1.0, 12.28404901, 0.659, 0.0, 0.0, 0.022, 373.15, 35.0, 'Jou1993'), +(1659, 'CO2', 'MDEA', 'water', 0.134, 0.134, 1.0, 12.28404901, 1.03, 0.0, 0.0, 0.0343, 373.15, 35.0, 'Jou1993'), +(1660, 'CO2', 'MDEA', 'water', 0.16, 0.16, 1.0, 12.28404901, 1.25, 0.0, 0.0, 0.0417, 373.15, 35.0, 'Jou1993'), +(1661, 'CO2', 'MDEA', 'water', 0.219, 0.219, 1.0, 12.28404901, 2.17, 0.0, 0.0, 0.0723, 373.15, 35.0, 'Jou1993'), +(1662, 'CO2', 'MDEA', 'water', 0.231, 0.231, 1.0, 12.28404901, 2.62, 0.0, 0.0, 0.0873, 373.15, 35.0, 'Jou1993'), +(1663, 'CO2', 'MDEA', 'water', 0.271, 0.271, 1.0, 12.28404901, 2.36, 0.0, 0.0, 0.0787, 373.15, 35.0, 'Jou1993'), +(1664, 'CO2', 'MDEA', 'water', 0.785384693, 1.5659, 1.9938, 55.50929781, 0.74, 0.0, 0.0, 0.0247, 313.24, 19.19722168, 'Kuranov1996'), +(1665, 'CO2', 'MDEA', 'water', 0.929029993, 1.8523, 1.9938, 55.50929781, 2.149, 0.0, 0.0, 0.0716, 313.12, 19.19722168, 'Kuranov1996'), +(1666, 'CO2', 'MDEA', 'water', 0.974671482, 1.9433, 1.9938, 55.50929781, 3.47, 0.0, 0.0, 0.116, 313.13, 19.19722168, 'Kuranov1996'), +(1667, 'CO2', 'MDEA', 'water', 1.04263216, 2.0788, 1.9938, 55.50929781, 7.192, 0.0, 0.0, 0.24, 313.15, 19.19722168, 'Kuranov1996'), +(1668, 'CO2', 'MDEA', 'water', 1.042732471, 2.079, 1.9938, 55.50929781, 7.098, 0.0, 0.0, 0.237, 313.15, 19.19722168, 'Kuranov1996'), +(1669, 'CO2', 'MDEA', 'water', 1.126893369, 2.2468, 1.9938, 55.50929781, 14.079, 0.0, 0.0, 0.469, 313.25, 19.19722168, 'Kuranov1996'), +(1670, 'CO2', 'MDEA', 'water', 1.157287592, 2.3074, 1.9938, 55.50929781, 17.652, 0.0, 0.0, 0.588, 313.19, 19.19722168, 'Kuranov1996'), +(1671, 'CO2', 'MDEA', 'water', 1.230614906, 2.4536, 1.9938, 55.50929781, 25.273, 0.0, 0.0, 0.842, 313.2, 19.19722168, 'Kuranov1996'), +(1672, 'CO2', 'MDEA', 'water', 1.231668171, 2.4557, 1.9938, 55.50929781, 25.185, 0.0, 0.0, 0.84, 313.11, 19.19722168, 'Kuranov1996'), +(1673, 'CO2', 'MDEA', 'water', 1.279946648, 2.495, 1.9493, 55.50929781, 27.852, 0.0, 0.0, 0.928, 313.13, 18.84951912, 'Kuranov1996'), +(1674, 'CO2', 'MDEA', 'water', 1.34612425, 2.624, 1.9493, 55.50929781, 35.982, 0.0, 0.0, 1.2, 313.16, 18.84951912, 'Kuranov1996'), +(1675, 'CO2', 'MDEA', 'water', 0.701739086, 1.3679, 1.9493, 55.50929781, 1.395, 0.0, 0.0, 0.0465, 333.16, 18.84951912, 'Kuranov1996'), +(1676, 'CO2', 'MDEA', 'water', 0.857333402, 1.6712, 1.9493, 55.50929781, 3.217, 0.0, 0.0, 0.107, 333.16, 18.84951912, 'Kuranov1996'), +(1677, 'CO2', 'MDEA', 'water', 0.942389576, 1.837, 1.9493, 55.50929781, 5.895, 0.0, 0.0, 0.2, 333.16, 18.84951912, 'Kuranov1996'), +(1678, 'CO2', 'MDEA', 'water', 0.986200174, 1.9224, 1.9493, 55.50929781, 8.301, 0.0, 0.0, 0.277, 333.16, 18.84951912, 'Kuranov1996'), +(1679, 'CO2', 'MDEA', 'water', 1.056994819, 2.0604, 1.9493, 55.50929781, 13.716, 0.0, 0.0, 0.464, 333.16, 18.84951912, 'Kuranov1996'), +(1680, 'CO2', 'MDEA', 'water', 1.099215103, 2.1427, 1.9493, 55.50929781, 18.471, 0.0, 0.0, 0.622, 333.16, 18.84951912, 'Kuranov1996'), +(1681, 'CO2', 'MDEA', 'water', 1.253424306, 2.4433, 1.9493, 55.50929781, 40.248, 0.0, 0.0, 1.34, 333.16, 18.84951912, 'Kuranov1996'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1682, 'CO2', 'MDEA', 'water', 0.297183604, 0.5793, 1.9493, 55.50929781, 2.269, 0.0, 0.0, 0.0756, 373.15, 18.84951912, 'Kuranov1996'), +(1683, 'CO2', 'MDEA', 'water', 0.499153542, 0.973, 1.9493, 55.50929781, 4.686, 0.0, 0.0, 0.156, 373.15, 18.84951912, 'Kuranov1996'), +(1684, 'CO2', 'MDEA', 'water', 0.667932078, 1.302, 1.9493, 55.50929781, 8.596, 0.0, 0.0, 0.287, 373.15, 18.84951912, 'Kuranov1996'), +(1685, 'CO2', 'MDEA', 'water', 0.806443339, 1.572, 1.9493, 55.50929781, 14.744, 0.0, 0.0, 0.491, 373.15, 18.84951912, 'Kuranov1996'), +(1686, 'CO2', 'MDEA', 'water', 0.82527061, 1.6087, 1.9493, 55.50929781, 15.977, 0.0, 0.0, 0.533, 373.15, 18.84951912, 'Kuranov1996'), +(1687, 'CO2', 'MDEA', 'water', 0.862104345, 1.6805, 1.9493, 55.50929781, 18.372, 0.0, 0.0, 0.612, 373.15, 18.84951912, 'Kuranov1996'), +(1688, 'CO2', 'MDEA', 'water', 0.944031191, 1.8402, 1.9493, 55.50929781, 25.554, 0.0, 0.0, 0.852, 373.15, 18.84951912, 'Kuranov1996'), +(1689, 'CO2', 'MDEA', 'water', 1.043451495, 2.034, 1.9493, 55.50929781, 37.831, 0.0, 0.0, 1.26, 373.15, 18.84951912, 'Kuranov1996'), +(1690, 'CO2', 'MDEA', 'water', 1.062483969, 2.0711, 1.9493, 55.50929781, 40.808, 0.0, 0.0, 1.36, 373.15, 18.84951912, 'Kuranov1996'), +(1691, 'CO2', 'MDEA', 'water', 0.0, 0.0, 1.9493, 55.50929781, 1.909, 0.0, 0.0, 0.0636, 393.17, 18.84951912, 'Kuranov1996'), +(1692, 'CO2', 'MDEA', 'water', 0.209049402, 0.4075, 1.9493, 55.50929781, 3.717, 0.0, 0.0, 0.124, 393.17, 18.84951912, 'Kuranov1996'), +(1693, 'CO2', 'MDEA', 'water', 0.37141538, 0.724, 1.9493, 55.50929781, 6.964, 0.0, 0.0, 0.232, 393.17, 18.84951912, 'Kuranov1996'), +(1694, 'CO2', 'MDEA', 'water', 0.491048069, 0.9572, 1.9493, 55.50929781, 10.735, 0.0, 0.0, 0.358, 393.17, 18.84951912, 'Kuranov1996'), +(1695, 'CO2', 'MDEA', 'water', 0.676755758, 1.3192, 1.9493, 55.50929781, 19.87, 0.0, 0.0, 0.662, 393.17, 18.84951912, 'Kuranov1996'), +(1696, 'CO2', 'MDEA', 'water', 0.86923511, 1.6944, 1.9493, 55.50929781, 36.732, 0.0, 0.0, 1.22, 393.17, 18.84951912, 'Kuranov1996'), +(1697, 'CO2', 'MDEA', 'water', 0.975529677, 1.9016, 1.9493, 55.50929781, 50.367, 0.0, 0.0, 1.68, 393.17, 18.84951912, 'Kuranov1996'), +(1698, 'CO2', 'MDEA', 'water', 0.0, 0.0, 1.9493, 55.50929781, 3.464, 0.0, 0.0, 0.115, 413.16, 18.84951912, 'Kuranov1996'), +(1699, 'CO2', 'MDEA', 'water', 0.183399169, 0.3575, 1.9493, 55.50929781, 6.969, 0.0, 0.0, 0.232, 413.16, 18.84951912, 'Kuranov1996'), +(1700, 'CO2', 'MDEA', 'water', 0.286872211, 0.5592, 1.9493, 55.50929781, 10.798, 0.0, 0.0, 0.36, 413.16, 18.84951912, 'Kuranov1996'), +(1701, 'CO2', 'MDEA', 'water', 0.441235315, 0.8601, 1.9493, 55.50929781, 18.931, 0.0, 0.0, 0.631, 413.16, 18.84951912, 'Kuranov1996'), +(1702, 'CO2', 'MDEA', 'water', 0.476837839, 0.9295, 1.9493, 55.50929781, 21.328, 0.0, 0.0, 0.711, 413.16, 18.84951912, 'Kuranov1996'), +(1703, 'CO2', 'MDEA', 'water', 0.615143898, 1.1991, 1.9493, 55.50929781, 32.247, 0.0, 0.0, 1.07, 413.16, 18.84951912, 'Kuranov1996'), +(1704, 'CO2', 'MDEA', 'water', 0.685630739, 1.3365, 1.9493, 55.50929781, 39.329, 0.0, 0.0, 1.31, 413.16, 18.84951912, 'Kuranov1996'), +(1705, 'CO2', 'MDEA', 'water', 0.673155867, 2.6729, 3.9707, 55.50929781, 0.735, 0.0, 0.0, 0.0245, 313.15, 32.11818605, 'Kuranov1996'), +(1706, 'CO2', 'MDEA', 'water', 0.85884101, 3.4102, 3.9707, 55.50929781, 2.023, 0.0, 0.0, 0.0674, 313.15, 32.11818605, 'Kuranov1996'), +(1707, 'CO2', 'MDEA', 'water', 0.888508323, 3.528, 3.9707, 55.50929781, 2.545, 0.0, 0.0, 0.0848, 313.15, 32.11818605, 'Kuranov1996'), +(1708, 'CO2', 'MDEA', 'water', 0.972246707, 3.8605, 3.9707, 55.50929781, 5.931, 0.0, 0.0, 0.198, 313.15, 32.11818605, 'Kuranov1996'), +(1709, 'CO2', 'MDEA', 'water', 0.980884982, 3.8948, 3.9707, 55.50929781, 6.738, 0.0, 0.0, 0.225, 313.15, 32.11818605, 'Kuranov1996'), +(1710, 'CO2', 'MDEA', 'water', 1.051980759, 4.1771, 3.9707, 55.50929781, 16.054, 0.0, 0.0, 0.535, 313.15, 32.11818605, 'Kuranov1996'), +(1711, 'CO2', 'MDEA', 'water', 1.058251694, 4.202, 3.9707, 55.50929781, 15.858, 0.0, 0.0, 0.529, 313.15, 32.11818605, 'Kuranov1996'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1712, 'CO2', 'MDEA', 'water', 1.079935528, 4.2881, 3.9707, 55.50929781, 19.732, 0.0, 0.0, 0.658, 313.15, 32.11818605, 'Kuranov1996'), +(1713, 'CO2', 'MDEA', 'water', 1.125645352, 4.4696, 3.9707, 55.50929781, 28.862, 0.0, 0.0, 0.962, 313.15, 32.11818605, 'Kuranov1996'), +(1714, 'CO2', 'MDEA', 'water', 1.157226685, 4.595, 3.9707, 55.50929781, 36.608, 0.0, 0.0, 1.22, 313.15, 32.11818605, 'Kuranov1996'), +(1715, 'CO2', 'MDEA', 'water', 0.669126351, 2.6569, 3.9707, 55.50929781, 2.054, 0.0, 0.0, 0.0685, 333.15, 32.11818605, 'Kuranov1996'), +(1716, 'CO2', 'MDEA', 'water', 0.772861208, 3.0688, 3.9707, 55.50929781, 3.352, 0.0, 0.0, 0.112, 333.15, 32.11818605, 'Kuranov1996'), +(1717, 'CO2', 'MDEA', 'water', 0.895962928, 3.5576, 3.9707, 55.50929781, 6.944, 0.0, 0.0, 0.231, 333.15, 32.11818605, 'Kuranov1996'), +(1718, 'CO2', 'MDEA', 'water', 0.920240764, 3.654, 3.9707, 55.50929781, 8.523, 0.0, 0.0, 0.284, 333.15, 32.11818605, 'Kuranov1996'), +(1719, 'CO2', 'MDEA', 'water', 0.95673307, 3.7989, 3.9707, 55.50929781, 11.588, 0.0, 0.0, 0.386, 333.15, 32.11818605, 'Kuranov1996'), +(1720, 'CO2', 'MDEA', 'water', 0.973203717, 3.8643, 3.9707, 55.50929781, 14.966, 0.0, 0.0, 0.499, 333.15, 32.11818605, 'Kuranov1996'), +(1721, 'CO2', 'MDEA', 'water', 0.974538494, 3.8696, 3.9707, 55.50929781, 13.566, 0.0, 0.0, 0.452, 333.15, 32.11818605, 'Kuranov1996'), +(1722, 'CO2', 'MDEA', 'water', 1.005011711, 3.9906, 3.9707, 55.50929781, 17.909, 0.0, 0.0, 0.597, 333.15, 32.11818605, 'Kuranov1996'), +(1723, 'CO2', 'MDEA', 'water', 1.082554713, 4.2985, 3.9707, 55.50929781, 33.63, 0.0, 0.0, 1.12, 333.15, 32.11818605, 'Kuranov1996'), +(1724, 'CO2', 'MDEA', 'water', 0.345833228, 1.3732, 3.9707, 55.50929781, 4.397, 0.0, 0.0, 0.147, 373.15, 32.11818605, 'Kuranov1996'), +(1725, 'CO2', 'MDEA', 'water', 0.464829879, 1.8457, 3.9707, 55.50929781, 6.856, 0.0, 0.0, 0.229, 373.15, 32.11818605, 'Kuranov1996'), +(1726, 'CO2', 'MDEA', 'water', 0.530510993, 2.1065, 3.9707, 55.50929781, 8.932, 0.0, 0.0, 0.298, 373.15, 32.11818605, 'Kuranov1996'), +(1727, 'CO2', 'MDEA', 'water', 0.637595386, 2.5317, 3.9707, 55.50929781, 13.344, 0.0, 0.0, 0.445, 373.15, 32.11818605, 'Kuranov1996'), +(1728, 'CO2', 'MDEA', 'water', 0.698919586, 2.7752, 3.9707, 55.50929781, 17.099, 0.0, 0.0, 0.57, 373.15, 32.11818605, 'Kuranov1996'), +(1729, 'CO2', 'MDEA', 'water', 0.749666306, 2.9767, 3.9707, 55.50929781, 20.722, 0.0, 0.0, 0.691, 373.15, 32.11818605, 'Kuranov1996'), +(1730, 'CO2', 'MDEA', 'water', 0.827637444, 3.2863, 3.9707, 55.50929781, 29.238, 0.0, 0.0, 0.975, 373.15, 32.11818605, 'Kuranov1996'), +(1731, 'CO2', 'MDEA', 'water', 0.892084519, 3.5422, 3.9707, 55.50929781, 38.705, 0.0, 0.0, 1.29, 373.15, 32.11818605, 'Kuranov1996'), +(1732, 'CO2', 'MDEA', 'water', 0.0, 0.0, 3.9707, 55.50929781, 1.862, 0.0, 0.0, 0.0621, 393.15, 32.11818605, 'Kuranov1996'), +(1733, 'CO2', 'MDEA', 'water', 0.194676002, 0.773, 3.9707, 55.50929781, 5.242, 0.0, 0.0, 0.175, 393.15, 32.11818605, 'Kuranov1996'), +(1734, 'CO2', 'MDEA', 'water', 0.251718841, 0.9995, 3.9707, 55.50929781, 7.025, 0.0, 0.0, 0.234, 393.15, 32.11818605, 'Kuranov1996'), +(1735, 'CO2', 'MDEA', 'water', 0.373385045, 1.4826, 3.9707, 55.50929781, 12.053, 0.0, 0.0, 0.402, 393.15, 32.11818605, 'Kuranov1996'), +(1736, 'CO2', 'MDEA', 'water', 0.459692246, 1.8253, 3.9707, 55.50929781, 16.825, 0.0, 0.0, 0.561, 393.15, 32.11818605, 'Kuranov1996'), +(1737, 'CO2', 'MDEA', 'water', 0.545495756, 2.166, 3.9707, 55.50929781, 22.893, 0.0, 0.0, 0.763, 393.15, 32.11818605, 'Kuranov1996'), +(1738, 'CO2', 'MDEA', 'water', 0.614299746, 2.4392, 3.9707, 55.50929781, 29.055, 0.0, 0.0, 0.969, 393.15, 32.11818605, 'Kuranov1996'), +(1739, 'CO2', 'MDEA', 'water', 0.700808422, 2.7827, 3.9707, 55.50929781, 38.962, 0.0, 0.0, 1.3, 393.15, 32.11818605, 'Kuranov1996'), +(1740, 'CO2', 'MDEA', 'water', 0.0, 0.0, 3.9707, 55.50929781, 3.386, 0.0, 0.0, 0.113, 413.15, 32.11818605, 'Kuranov1996'), +(1741, 'CO2', 'MDEA', 'water', 0.105145189, 0.4175, 3.9707, 55.50929781, 6.601, 0.0, 0.0, 0.22, 413.15, 32.11818605, 'Kuranov1996'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1742, 'CO2', 'MDEA', 'water', 0.21615836, 0.8583, 3.9707, 55.50929781, 12.956, 0.0, 0.0, 0.432, 413.15, 32.11818605, 'Kuranov1996'), +(1743, 'CO2', 'MDEA', 'water', 0.254615055, 1.011, 3.9707, 55.50929781, 15.467, 0.0, 0.0, 0.516, 413.15, 32.11818605, 'Kuranov1996'), +(1744, 'CO2', 'MDEA', 'water', 0.387689828, 1.5394, 3.9707, 55.50929781, 27.447, 0.0, 0.0, 0.915, 413.15, 32.11818605, 'Kuranov1996'), +(1745, 'CO2', 'MDEA', 'water', 0.438260256, 1.7402, 3.9707, 55.50929781, 33.961, 0.0, 0.0, 1.13, 413.15, 32.11818605, 'Kuranov1996'), +(1746, 'CO2', 'MDEA', 'water', 0.95, 0.95, 1.0, 6.912072251, 49.3, 0.0, 0.0, 1.64, 373.15, 48.9, 'Chakma1987'), +(1747, 'CO2', 'MDEA', 'water', 0.792, 0.792, 1.0, 6.912072251, 31.72, 0.0, 0.0, 1.06, 373.15, 48.9, 'Chakma1987'), +(1748, 'CO2', 'MDEA', 'water', 0.643, 0.643, 1.0, 6.912072251, 21.03, 0.0, 0.0, 0.701, 373.15, 48.9, 'Chakma1987'), +(1749, 'CO2', 'MDEA', 'water', 0.497, 0.497, 1.0, 6.912072251, 14.13, 0.0, 0.0, 0.471, 373.15, 48.9, 'Chakma1987'), +(1750, 'CO2', 'MDEA', 'water', 0.384, 0.384, 1.0, 6.912072251, 8.96, 0.0, 0.0, 0.299, 373.15, 48.9, 'Chakma1987'), +(1751, 'CO2', 'MDEA', 'water', 0.314, 0.314, 1.0, 6.912072251, 5.86, 0.0, 0.0, 0.195, 373.15, 48.9, 'Chakma1987'), +(1752, 'CO2', 'MDEA', 'water', 0.213, 0.213, 1.0, 6.912072251, 2.76, 0.0, 0.0, 0.092, 373.15, 48.9, 'Chakma1987'), +(1753, 'CO2', 'MDEA', 'water', 0.139, 0.139, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 373.15, 48.9, 'Chakma1987'), +(1754, 'CO2', 'MDEA', 'water', 0.337, 0.337, 1.0, 6.912072251, 45.16, 0.0, 0.0, 1.51, 413.15, 48.9, 'Chakma1987'), +(1755, 'CO2', 'MDEA', 'water', 0.288, 0.288, 1.0, 6.912072251, 36.2, 0.0, 0.0, 1.21, 413.15, 48.9, 'Chakma1987'), +(1756, 'CO2', 'MDEA', 'water', 0.228, 0.228, 1.0, 6.912072251, 25.17, 0.0, 0.0, 0.839, 413.15, 48.9, 'Chakma1987'), +(1757, 'CO2', 'MDEA', 'water', 0.157, 0.157, 1.0, 6.912072251, 14.13, 0.0, 0.0, 0.471, 413.15, 48.9, 'Chakma1987'), +(1758, 'CO2', 'MDEA', 'water', 0.106, 0.106, 1.0, 6.912072251, 7.24, 0.0, 0.0, 0.241, 413.15, 48.9, 'Chakma1987'), +(1759, 'CO2', 'MDEA', 'water', 0.066, 0.066, 1.0, 6.912072251, 3.1, 0.0, 0.0, 0.103, 413.15, 48.9, 'Chakma1987'), +(1760, 'CO2', 'MDEA', 'water', 0.04, 0.04, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 413.15, 48.9, 'Chakma1987'), +(1761, 'CO2', 'MDEA', 'water', 0.21, 0.21, 1.0, 6.912072251, 41.37, 0.0, 0.0, 1.38, 433.15, 48.9, 'Chakma1987'), +(1762, 'CO2', 'MDEA', 'water', 0.166, 0.166, 1.0, 6.912072251, 30.34, 0.0, 0.0, 1.01, 433.15, 48.9, 'Chakma1987'), +(1763, 'CO2', 'MDEA', 'water', 0.106, 0.106, 1.0, 6.912072251, 15.17, 0.0, 0.0, 0.506, 433.15, 48.9, 'Chakma1987'), +(1764, 'CO2', 'MDEA', 'water', 0.064, 0.064, 1.0, 6.912072251, 6.89, 0.0, 0.0, 0.23, 433.15, 48.9, 'Chakma1987'), +(1765, 'CO2', 'MDEA', 'water', 0.038, 0.038, 1.0, 6.912072251, 2.76, 0.0, 0.0, 0.092, 433.15, 48.9, 'Chakma1987'), +(1766, 'CO2', 'MDEA', 'water', 0.025, 0.025, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 433.15, 48.9, 'Chakma1987'), +(1767, 'CO2', 'MDEA', 'water', 0.164, 0.164, 1.0, 6.912072251, 45.5, 0.0, 0.0, 1.52, 453.15, 48.9, 'Chakma1987'), +(1768, 'CO2', 'MDEA', 'water', 0.148, 0.148, 1.0, 6.912072251, 39.3, 0.0, 0.0, 1.31, 453.15, 48.9, 'Chakma1987'), +(1769, 'CO2', 'MDEA', 'water', 0.127, 0.127, 1.0, 6.912072251, 32.4, 0.0, 0.0, 1.08, 453.15, 48.9, 'Chakma1987'), +(1770, 'CO2', 'MDEA', 'water', 0.104, 0.104, 1.0, 6.912072251, 24.88, 0.0, 0.0, 0.829, 453.15, 48.9, 'Chakma1987'), +(1771, 'CO2', 'MDEA', 'water', 0.073, 0.073, 1.0, 6.912072251, 15.17, 0.0, 0.0, 0.506, 453.15, 48.9, 'Chakma1987'), +(1772, 'CO2', 'MDEA', 'water', 0.049, 0.049, 1.0, 6.912072251, 7.93, 0.0, 0.0, 0.264, 453.15, 48.9, 'Chakma1987'), +(1773, 'CO2', 'MDEA', 'water', 0.035, 0.035, 1.0, 6.912072251, 4.14, 0.0, 0.0, 0.138, 453.15, 48.9, 'Chakma1987'), +(1774, 'CO2', 'MDEA', 'water', 0.017, 0.017, 1.0, 6.912072251, 1.38, 0.0, 0.0, 0.046, 453.15, 48.9, 'Chakma1987'), +(1775, 'CO2', 'MDEA', 'water', 0.107, 0.107, 1.0, 6.912072251, 35.58, 0.0, 0.0, 1.19, 473.15, 48.9, 'Chakma1987'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1776, 'CO2', 'MDEA', 'water', 0.087, 0.087, 1.0, 6.912072251, 27.33, 0.0, 0.0, 0.911, 473.15, 48.9, 'Chakma1987'), +(1777, 'CO2', 'MDEA', 'water', 0.069, 0.069, 1.0, 6.912072251, 20.34, 0.0, 0.0, 0.678, 473.15, 48.9, 'Chakma1987'), +(1778, 'CO2', 'MDEA', 'water', 0.05, 0.05, 1.0, 6.912072251, 13.44, 0.0, 0.0, 0.448, 473.15, 48.9, 'Chakma1987'), +(1779, 'CO2', 'MDEA', 'water', 0.031, 0.031, 1.0, 6.912072251, 6.21, 0.0, 0.0, 0.207, 473.15, 48.9, 'Chakma1987'), +(1780, 'CO2', 'MDEA', 'water', 0.021, 0.021, 1.0, 6.912072251, 3.45, 0.0, 0.0, 0.115, 473.15, 48.9, 'Chakma1987'), +(1781, 'CO2', 'MDEA', 'water', 0.013, 0.013, 1.0, 6.912072251, 1.72, 0.0, 0.0, 0.0573, 473.15, 48.9, 'Chakma1987'), +(1782, 'CO2', 'MDEA', 'water', 1.304, 1.304, 1.0, 26.79201675, 49.3, 0.0, 0.0, 1.64, 373.15, 19.8, 'Chakma1987'), +(1783, 'CO2', 'MDEA', 'water', 1.233, 1.233, 1.0, 26.79201675, 39.3, 0.0, 0.0, 1.31, 373.15, 19.8, 'Chakma1987'), +(1784, 'CO2', 'MDEA', 'water', 1.12, 1.12, 1.0, 26.79201675, 27.58, 0.0, 0.0, 0.919, 373.15, 19.8, 'Chakma1987'), +(1785, 'CO2', 'MDEA', 'water', 1.016, 1.016, 1.0, 26.79201675, 20.0, 0.0, 0.0, 0.667, 373.15, 19.8, 'Chakma1987'), +(1786, 'CO2', 'MDEA', 'water', 0.904, 0.904, 1.0, 26.79201675, 13.1, 0.0, 0.0, 0.437, 373.15, 19.8, 'Chakma1987'), +(1787, 'CO2', 'MDEA', 'water', 0.694, 0.694, 1.0, 26.79201675, 7.58, 0.0, 0.0, 0.253, 373.15, 19.8, 'Chakma1987'), +(1788, 'CO2', 'MDEA', 'water', 0.523, 0.523, 1.0, 26.79201675, 5.17, 0.0, 0.0, 0.172, 373.15, 19.8, 'Chakma1987'), +(1789, 'CO2', 'MDEA', 'water', 0.378, 0.378, 1.0, 26.79201675, 2.76, 0.0, 0.0, 0.092, 373.15, 19.8, 'Chakma1987'), +(1790, 'CO2', 'MDEA', 'water', 0.274, 0.274, 1.0, 26.79201675, 1.38, 0.0, 0.0, 0.046, 373.15, 19.8, 'Chakma1987'), +(1791, 'CO2', 'MDEA', 'water', 1.003, 1.003, 1.0, 26.79201675, 43.09, 0.0, 0.0, 1.44, 413.15, 19.8, 'Chakma1987'), +(1792, 'CO2', 'MDEA', 'water', 0.679, 0.679, 1.0, 26.79201675, 26.89, 0.0, 0.0, 0.896, 413.15, 19.8, 'Chakma1987'), +(1793, 'CO2', 'MDEA', 'water', 0.484, 0.484, 1.0, 26.79201675, 18.27, 0.0, 0.0, 0.609, 413.15, 19.8, 'Chakma1987'), +(1794, 'CO2', 'MDEA', 'water', 0.355, 0.355, 1.0, 26.79201675, 11.72, 0.0, 0.0, 0.391, 413.15, 19.8, 'Chakma1987'), +(1795, 'CO2', 'MDEA', 'water', 0.301, 0.301, 1.0, 26.79201675, 9.31, 0.0, 0.0, 0.31, 413.15, 19.8, 'Chakma1987'), +(1796, 'CO2', 'MDEA', 'water', 0.261, 0.261, 1.0, 26.79201675, 7.24, 0.0, 0.0, 0.241, 413.15, 19.8, 'Chakma1987'), +(1797, 'CO2', 'MDEA', 'water', 0.204, 0.204, 1.0, 26.79201675, 4.48, 0.0, 0.0, 0.149, 413.15, 19.8, 'Chakma1987'), +(1798, 'CO2', 'MDEA', 'water', 0.141, 0.141, 1.0, 26.79201675, 2.07, 0.0, 0.0, 0.069, 413.15, 19.8, 'Chakma1987'), +(1799, 'CO2', 'MDEA', 'water', 0.095, 0.095, 1.0, 26.79201675, 1.03, 0.0, 0.0, 0.0343, 413.15, 19.8, 'Chakma1987'), +(1800, 'CO2', 'MDEA', 'water', 0.71, 0.71, 1.0, 26.79201675, 42.75, 0.0, 0.0, 1.43, 433.15, 19.8, 'Chakma1987'), +(1801, 'CO2', 'MDEA', 'water', 0.495, 0.495, 1.0, 26.79201675, 29.65, 0.0, 0.0, 0.988, 433.15, 19.8, 'Chakma1987'), +(1802, 'CO2', 'MDEA', 'water', 0.38, 0.38, 1.0, 26.79201675, 20.68, 0.0, 0.0, 0.689, 433.15, 19.8, 'Chakma1987'), +(1803, 'CO2', 'MDEA', 'water', 0.305, 0.305, 1.0, 26.79201675, 15.17, 0.0, 0.0, 0.506, 433.15, 19.8, 'Chakma1987'), +(1804, 'CO2', 'MDEA', 'water', 0.236, 0.236, 1.0, 26.79201675, 10.0, 0.0, 0.0, 0.333, 433.15, 19.8, 'Chakma1987'), +(1805, 'CO2', 'MDEA', 'water', 0.188, 0.188, 1.0, 26.79201675, 6.89, 0.0, 0.0, 0.23, 433.15, 19.8, 'Chakma1987'), +(1806, 'CO2', 'MDEA', 'water', 0.147, 0.147, 1.0, 26.79201675, 4.14, 0.0, 0.0, 0.138, 433.15, 19.8, 'Chakma1987'), +(1807, 'CO2', 'MDEA', 'water', 0.084, 0.084, 1.0, 26.79201675, 1.38, 0.0, 0.0, 0.046, 433.15, 19.8, 'Chakma1987'), +(1808, 'CO2', 'MDEA', 'water', 0.504, 0.504, 1.0, 26.79201675, 41.37, 0.0, 0.0, 1.38, 453.15, 19.8, 'Chakma1987'), +(1809, 'CO2', 'MDEA', 'water', 0.364, 0.364, 1.0, 26.79201675, 28.96, 0.0, 0.0, 0.965, 453.15, 19.8, 'Chakma1987'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1810, 'CO2', 'MDEA', 'water', 0.283, 0.283, 1.0, 26.79201675, 20.68, 0.0, 0.0, 0.689, 453.15, 19.8, 'Chakma1987'), +(1811, 'CO2', 'MDEA', 'water', 0.218, 0.218, 1.0, 26.79201675, 13.79, 0.0, 0.0, 0.46, 453.15, 19.8, 'Chakma1987'), +(1812, 'CO2', 'MDEA', 'water', 0.158, 0.158, 1.0, 26.79201675, 8.27, 0.0, 0.0, 0.276, 453.15, 19.8, 'Chakma1987'), +(1813, 'CO2', 'MDEA', 'water', 0.127, 0.127, 1.0, 26.79201675, 5.52, 0.0, 0.0, 0.184, 453.15, 19.8, 'Chakma1987'), +(1814, 'CO2', 'MDEA', 'water', 0.089, 0.089, 1.0, 26.79201675, 2.76, 0.0, 0.0, 0.092, 453.15, 19.8, 'Chakma1987'), +(1815, 'CO2', 'MDEA', 'water', 0.066, 0.066, 1.0, 26.79201675, 1.38, 0.0, 0.0, 0.046, 453.15, 19.8, 'Chakma1987'), +(1816, 'CO2', 'MDEA', 'water', 0.349, 0.349, 1.0, 26.79201675, 35.85, 0.0, 0.0, 1.2, 473.15, 19.8, 'Chakma1987'), +(1817, 'CO2', 'MDEA', 'water', 0.26, 0.26, 1.0, 26.79201675, 24.82, 0.0, 0.0, 0.827, 473.15, 19.8, 'Chakma1987'), +(1818, 'CO2', 'MDEA', 'water', 0.213, 0.213, 1.0, 26.79201675, 17.93, 0.0, 0.0, 0.598, 473.15, 19.8, 'Chakma1987'), +(1819, 'CO2', 'MDEA', 'water', 0.156, 0.156, 1.0, 26.79201675, 11.03, 0.0, 0.0, 0.368, 473.15, 19.8, 'Chakma1987'), +(1820, 'CO2', 'MDEA', 'water', 0.118, 0.118, 1.0, 26.79201675, 6.89, 0.0, 0.0, 0.23, 473.15, 19.8, 'Chakma1987'), +(1821, 'CO2', 'MDEA', 'water', 0.096, 0.096, 1.0, 26.79201675, 4.14, 0.0, 0.0, 0.138, 473.15, 19.8, 'Chakma1987'), +(1822, 'CO2', 'MDEA', 'water', 0.068, 0.068, 1.0, 125.6752706, 0.01051, 0.0, 0.0, 3.5E-4, 323.15, 5.0, 'Rho1997'), +(1823, 'CO2', 'MDEA', 'water', 0.01495, 0.1495, 1.0, 125.6752706, 0.02051, 0.0, 0.0, 6.84E-4, 323.15, 5.0, 'Rho1997'), +(1824, 'CO2', 'MDEA', 'water', 0.2375, 0.2375, 1.0, 125.6752706, 0.0275, 0.0, 0.0, 9.17E-4, 323.15, 5.0, 'Rho1997'), +(1825, 'CO2', 'MDEA', 'water', 0.3362, 0.3362, 1.0, 125.6752706, 0.04249, 0.0, 0.0, 0.00142, 323.15, 5.0, 'Rho1997'), +(1826, 'CO2', 'MDEA', 'water', 0.4287, 0.4287, 1.0, 125.6752706, 0.06847, 0.0, 0.0, 0.00228, 323.15, 5.0, 'Rho1997'), +(1827, 'CO2', 'MDEA', 'water', 0.5019, 0.5019, 1.0, 125.6752706, 0.08945, 0.0, 0.0, 0.00298, 323.15, 5.0, 'Rho1997'), +(1828, 'CO2', 'MDEA', 'water', 0.5585, 0.5585, 1.0, 125.6752706, 0.1184, 0.0, 0.0, 0.00395, 323.15, 5.0, 'Rho1997'), +(1829, 'CO2', 'MDEA', 'water', 0.6266, 0.6266, 1.0, 125.6752706, 0.1594, 0.0, 0.0, 0.00531, 323.15, 5.0, 'Rho1997'), +(1830, 'CO2', 'MDEA', 'water', 0.6843, 0.6843, 1.0, 125.6752706, 0.2063, 0.0, 0.0, 0.00688, 323.15, 5.0, 'Rho1997'), +(1831, 'CO2', 'MDEA', 'water', 0.0451, 0.0451, 1.0, 25.65130684, 0.01141, 0.0, 0.0, 3.8E-4, 323.15, 20.5, 'Rho1997'), +(1832, 'CO2', 'MDEA', 'water', 0.1185, 0.1185, 1.0, 25.65130684, 0.0334, 0.0, 0.0, 0.00111, 323.15, 20.5, 'Rho1997'), +(1833, 'CO2', 'MDEA', 'water', 0.2223, 0.2223, 1.0, 25.65130684, 0.05738, 0.0, 0.0, 0.00191, 323.15, 20.5, 'Rho1997'), +(1834, 'CO2', 'MDEA', 'water', 0.3368, 0.3368, 1.0, 25.65130684, 0.1133, 0.0, 0.0, 0.00378, 323.15, 20.5, 'Rho1997'), +(1835, 'CO2', 'MDEA', 'water', 0.4332, 0.4332, 1.0, 25.65130684, 0.1942, 0.0, 0.0, 0.00647, 323.15, 20.5, 'Rho1997'), +(1836, 'CO2', 'MDEA', 'water', 0.4933, 0.4933, 1.0, 25.65130684, 0.2542, 0.0, 0.0, 0.00847, 323.15, 20.5, 'Rho1997'), +(1837, 'CO2', 'MDEA', 'water', 0.5899, 0.5899, 1.0, 25.65130684, 0.3971, 0.0, 0.0, 0.0132, 323.15, 20.5, 'Rho1997'), +(1838, 'CO2', 'MDEA', 'water', 0.6117, 0.6117, 1.0, 25.65130684, 0.5549, 0.0, 0.0, 0.0185, 323.15, 20.5, 'Rho1997'), +(1839, 'CO2', 'MDEA', 'water', 0.7149, 0.7149, 1.0, 25.65130684, 0.7218, 0.0, 0.0, 0.0241, 323.15, 20.5, 'Rho1997'), +(1840, 'CO2', 'MDEA', 'water', 0.7857, 0.7857, 1.0, 25.65130684, 1.06, 0.0, 0.0, 0.0353, 323.15, 20.5, 'Rho1997'), +(1841, 'CO2', 'MDEA', 'water', 0.8478, 0.8478, 1.0, 25.65130684, 1.468, 0.0, 0.0, 0.0489, 323.15, 20.5, 'Rho1997'), +(1842, 'CO2', 'MDEA', 'water', 0.015, 0.015, 1.0, 6.614487927, 0.00775, 0.0, 0.0, 2.58E-4, 323.15, 50.0, 'Rho1997'), +(1843, 'CO2', 'MDEA', 'water', 0.0442, 0.0442, 1.0, 6.614487927, 0.02474, 0.0, 0.0, 8.25E-4, 323.15, 50.0, 'Rho1997'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1844, 'CO2', 'MDEA', 'water', 0.074, 0.074, 1.0, 6.614487927, 0.04872, 0.0, 0.0, 0.00162, 323.15, 50.0, 'Rho1997'), +(1845, 'CO2', 'MDEA', 'water', 0.1315, 0.1315, 1.0, 6.614487927, 0.1166, 0.0, 0.0, 0.00389, 323.15, 50.0, 'Rho1997'), +(1846, 'CO2', 'MDEA', 'water', 0.1916, 0.1916, 1.0, 6.614487927, 0.1736, 0.0, 0.0, 0.00579, 323.15, 50.0, 'Rho1997'), +(1847, 'CO2', 'MDEA', 'water', 0.242, 0.242, 1.0, 6.614487927, 0.2445, 0.0, 0.0, 0.00815, 323.15, 50.0, 'Rho1997'), +(1848, 'CO2', 'MDEA', 'water', 0.319, 0.319, 1.0, 6.614487927, 0.3874, 0.0, 0.0, 0.0129, 323.15, 50.0, 'Rho1997'), +(1849, 'CO2', 'MDEA', 'water', 0.3854, 0.3854, 1.0, 6.614487927, 0.5303, 0.0, 0.0, 0.0177, 323.15, 50.0, 'Rho1997'), +(1850, 'CO2', 'MDEA', 'water', 0.4529, 0.4529, 1.0, 6.614487927, 0.7092, 0.0, 0.0, 0.0236, 323.15, 50.0, 'Rho1997'), +(1851, 'CO2', 'MDEA', 'water', 0.026, 0.026, 1.0, 2.204829309, 0.1004, 0.0, 0.0, 0.00335, 323.15, 75.0, 'Rho1997'), +(1852, 'CO2', 'MDEA', 'water', 0.0708, 0.0708, 1.0, 2.204829309, 0.2483, 0.0, 0.0, 0.00828, 323.15, 75.0, 'Rho1997'), +(1853, 'CO2', 'MDEA', 'water', 0.1075, 0.1075, 1.0, 2.204829309, 0.4442, 0.0, 0.0, 0.0148, 323.15, 75.0, 'Rho1997'), +(1854, 'CO2', 'MDEA', 'water', 0.1457, 0.1457, 1.0, 2.204829309, 0.622, 0.0, 0.0, 0.0207, 323.15, 75.0, 'Rho1997'), +(1855, 'CO2', 'MDEA', 'water', 0.1842, 0.1842, 1.0, 2.204829309, 0.8209, 0.0, 0.0, 0.0274, 323.15, 75.0, 'Rho1997'), +(1856, 'CO2', 'MDEA', 'water', 0.2246, 0.2246, 1.0, 2.204829309, 1.06, 0.0, 0.0, 0.0353, 323.15, 75.0, 'Rho1997'), +(1857, 'CO2', 'MDEA', 'water', 0.2728, 0.2728, 1.0, 2.204829309, 1.392, 0.0, 0.0, 0.0464, 323.15, 75.0, 'Rho1997'), +(1858, 'CO2', 'MDEA', 'water', 0.0592, 0.0592, 1.0, 125.6752706, 0.01139, 0.0, 0.0, 3.8E-4, 348.15, 5.0, 'Rho1997'), +(1859, 'CO2', 'MDEA', 'water', 0.132, 0.132, 1.0, 125.6752706, 0.02938, 0.0, 0.0, 9.79E-4, 348.15, 5.0, 'Rho1997'), +(1860, 'CO2', 'MDEA', 'water', 0.2015, 0.2015, 1.0, 125.6752706, 0.05735, 0.0, 0.0, 0.00191, 348.15, 5.0, 'Rho1997'), +(1861, 'CO2', 'MDEA', 'water', 0.2655, 0.2655, 1.0, 125.6752706, 0.09432, 0.0, 0.0, 0.00314, 348.15, 5.0, 'Rho1997'), +(1862, 'CO2', 'MDEA', 'water', 0.3133, 0.3133, 1.0, 125.6752706, 0.1342, 0.0, 0.0, 0.00447, 348.15, 5.0, 'Rho1997'), +(1863, 'CO2', 'MDEA', 'water', 0.3796, 0.3796, 1.0, 125.6752706, 0.1922, 0.0, 0.0, 0.00641, 348.15, 5.0, 'Rho1997'), +(1864, 'CO2', 'MDEA', 'water', 0.4605, 0.4605, 1.0, 125.6752706, 0.2801, 0.0, 0.0, 0.00934, 348.15, 5.0, 'Rho1997'), +(1865, 'CO2', 'MDEA', 'water', 0.5354, 0.5354, 1.0, 125.6752706, 0.397, 0.0, 0.0, 0.0132, 348.15, 5.0, 'Rho1997'), +(1866, 'CO2', 'MDEA', 'water', 0.071, 0.071, 1.0, 25.65130684, 0.04526, 0.0, 0.0, 0.00151, 348.15, 20.5, 'Rho1997'), +(1867, 'CO2', 'MDEA', 'water', 0.1258, 0.1258, 1.0, 25.65130684, 0.09922, 0.0, 0.0, 0.00331, 348.15, 20.5, 'Rho1997'), +(1868, 'CO2', 'MDEA', 'water', 0.1938, 0.1938, 1.0, 25.65130684, 0.1801, 0.0, 0.0, 0.006, 348.15, 20.5, 'Rho1997'), +(1869, 'CO2', 'MDEA', 'water', 0.2429, 0.2429, 1.0, 25.65130684, 0.263, 0.0, 0.0, 0.00877, 348.15, 20.5, 'Rho1997'), +(1870, 'CO2', 'MDEA', 'water', 0.2526, 0.2526, 1.0, 25.65130684, 0.271, 0.0, 0.0, 0.00903, 348.15, 20.5, 'Rho1997'), +(1871, 'CO2', 'MDEA', 'water', 0.2906, 0.2906, 1.0, 25.65130684, 0.36, 0.0, 0.0, 0.012, 348.15, 20.5, 'Rho1997'), +(1872, 'CO2', 'MDEA', 'water', 0.3415, 0.3415, 1.0, 25.65130684, 0.4839, 0.0, 0.0, 0.0161, 348.15, 20.5, 'Rho1997'), +(1873, 'CO2', 'MDEA', 'water', 0.3873, 0.3873, 1.0, 25.65130684, 0.6128, 0.0, 0.0, 0.0204, 348.15, 20.5, 'Rho1997'), +(1874, 'CO2', 'MDEA', 'water', 0.4432, 0.4432, 1.0, 25.65130684, 0.7966, 0.0, 0.0, 0.0266, 348.15, 20.5, 'Rho1997'), +(1875, 'CO2', 'MDEA', 'water', 0.5026, 0.5026, 1.0, 25.65130684, 1.047, 0.0, 0.0, 0.0349, 348.15, 20.5, 'Rho1997'), +(1876, 'CO2', 'MDEA', 'water', 0.5551, 0.5551, 1.0, 25.65130684, 1.325, 0.0, 0.0, 0.0442, 348.15, 20.5, 'Rho1997'), +(1877, 'CO2', 'MDEA', 'water', 0.6199, 0.6199, 1.0, 25.65130684, 1.734, 0.0, 0.0, 0.0578, 348.15, 20.5, 'Rho1997'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1878, 'CO2', 'MDEA', 'water', 0.0162, 0.0162, 1.0, 6.614487927, 0.03624, 0.0, 0.0, 0.00121, 348.15, 50.0, 'Rho1997'), +(1879, 'CO2', 'MDEA', 'water', 0.0334, 0.0334, 1.0, 6.614487927, 0.0792, 0.0, 0.0, 0.00264, 348.15, 50.0, 'Rho1997'), +(1880, 'CO2', 'MDEA', 'water', 0.042, 0.042, 1.0, 6.614487927, 0.09721, 0.0, 0.0, 0.00324, 348.15, 50.0, 'Rho1997'), +(1881, 'CO2', 'MDEA', 'water', 0.0537, 0.0537, 1.0, 6.614487927, 0.1371, 0.0, 0.0, 0.00457, 348.15, 50.0, 'Rho1997'), +(1882, 'CO2', 'MDEA', 'water', 0.077, 0.077, 1.0, 6.614487927, 0.2131, 0.0, 0.0, 0.0071, 348.15, 50.0, 'Rho1997'), +(1883, 'CO2', 'MDEA', 'water', 0.101, 0.101, 1.0, 6.614487927, 0.311, 0.0, 0.0, 0.0104, 348.15, 50.0, 'Rho1997'), +(1884, 'CO2', 'MDEA', 'water', 0.133, 0.133, 1.0, 6.614487927, 0.4539, 0.0, 0.0, 0.0151, 348.15, 50.0, 'Rho1997'), +(1885, 'CO2', 'MDEA', 'water', 0.1656, 0.1656, 1.0, 6.614487927, 0.6188, 0.0, 0.0, 0.0206, 348.15, 50.0, 'Rho1997'), +(1886, 'CO2', 'MDEA', 'water', 0.1945, 0.1945, 1.0, 6.614487927, 0.7886, 0.0, 0.0, 0.0263, 348.15, 50.0, 'Rho1997'), +(1887, 'CO2', 'MDEA', 'water', 0.0179, 0.0179, 1.0, 2.204829309, 0.1743, 0.0, 0.0, 0.00581, 348.15, 75.0, 'Rho1997'), +(1888, 'CO2', 'MDEA', 'water', 0.0326, 0.0326, 1.0, 2.204829309, 0.3921, 0.0, 0.0, 0.0131, 348.15, 75.0, 'Rho1997'), +(1889, 'CO2', 'MDEA', 'water', 0.0525, 0.0525, 1.0, 2.204829309, 0.7209, 0.0, 0.0, 0.024, 348.15, 75.0, 'Rho1997'), +(1890, 'CO2', 'MDEA', 'water', 0.075, 0.075, 1.0, 2.204829309, 1.121, 0.0, 0.0, 0.0374, 348.15, 75.0, 'Rho1997'), +(1891, 'CO2', 'MDEA', 'water', 0.0952, 0.0952, 1.0, 2.204829309, 1.513, 0.0, 0.0, 0.0504, 348.15, 75.0, 'Rho1997'), +(1892, 'CO2', 'MDEA', 'water', 0.1103, 0.1103, 1.0, 2.204829309, 1.842, 0.0, 0.0, 0.0614, 348.15, 75.0, 'Rho1997'), +(1893, 'CO2', 'MDEA', 'water', 0.1271, 0.1271, 1.0, 2.204829309, 2.207, 0.0, 0.0, 0.0736, 348.15, 75.0, 'Rho1997'), +(1894, 'CO2', 'MDEA', 'water', 0.148, 0.148, 1.0, 2.204829309, 2.683, 0.0, 0.0, 0.0894, 348.15, 75.0, 'Rho1997'), +(1895, 'CO2', 'MDEA', 'water', 0.03, 0.03, 1.0, 125.6752706, 0.01841, 0.0, 0.0, 6.14E-4, 373.15, 5.0, 'Rho1997'), +(1896, 'CO2', 'MDEA', 'water', 0.0448, 0.0448, 1.0, 125.6752706, 0.03939, 0.0, 0.0, 0.00131, 373.15, 5.0, 'Rho1997'), +(1897, 'CO2', 'MDEA', 'water', 0.0905, 0.0905, 1.0, 125.6752706, 0.07336, 0.0, 0.0, 0.00245, 373.15, 5.0, 'Rho1997'), +(1898, 'CO2', 'MDEA', 'water', 0.1196, 0.1196, 1.0, 125.6752706, 0.1033, 0.0, 0.0, 0.00344, 373.15, 5.0, 'Rho1997'), +(1899, 'CO2', 'MDEA', 'water', 0.1475, 0.1475, 1.0, 125.6752706, 0.1473, 0.0, 0.0, 0.00491, 373.15, 5.0, 'Rho1997'), +(1900, 'CO2', 'MDEA', 'water', 0.2273, 0.2273, 1.0, 125.6752706, 0.2682, 0.0, 0.0, 0.00894, 373.15, 5.0, 'Rho1997'), +(1901, 'CO2', 'MDEA', 'water', 0.026, 0.026, 1.0, 25.65130684, 0.03314, 0.0, 0.0, 0.0011, 373.15, 20.5, 'Rho1997'), +(1902, 'CO2', 'MDEA', 'water', 0.0547, 0.0547, 1.0, 25.65130684, 0.09609, 0.0, 0.0, 0.0032, 373.15, 20.5, 'Rho1997'), +(1903, 'CO2', 'MDEA', 'water', 0.0877, 0.0877, 1.0, 25.65130684, 0.205, 0.0, 0.0, 0.00683, 373.15, 20.5, 'Rho1997'), +(1904, 'CO2', 'MDEA', 'water', 0.1164, 0.1164, 1.0, 25.65130684, 0.3029, 0.0, 0.0, 0.0101, 373.15, 20.5, 'Rho1997'), +(1905, 'CO2', 'MDEA', 'water', 0.1586, 0.1586, 1.0, 25.65130684, 0.4837, 0.0, 0.0, 0.0161, 373.15, 20.5, 'Rho1997'), +(1906, 'CO2', 'MDEA', 'water', 0.1937, 0.1937, 1.0, 25.65130684, 0.6806, 0.0, 0.0, 0.0227, 373.15, 20.5, 'Rho1997'), +(1907, 'CO2', 'MDEA', 'water', 0.2359, 0.2359, 1.0, 25.65130684, 0.9614, 0.0, 0.0, 0.032, 373.15, 20.5, 'Rho1997'), +(1908, 'CO2', 'MDEA', 'water', 0.2853, 0.2853, 1.0, 25.65130684, 1.327, 0.0, 0.0, 0.0442, 373.15, 20.5, 'Rho1997'), +(1909, 'CO2', 'MDEA', 'water', 0.3259, 0.3259, 1.0, 25.65130684, 1.672, 0.0, 0.0, 0.0557, 373.15, 20.5, 'Rho1997'), +(1910, 'CO2', 'MDEA', 'water', 0.0087, 0.0087, 1.0, 6.614487927, 0.05003, 0.0, 0.0, 0.00167, 373.15, 50.0, 'Rho1997'), +(1911, 'CO2', 'MDEA', 'water', 0.0164, 0.0164, 1.0, 6.614487927, 0.1139, 0.0, 0.0, 0.0038, 373.15, 50.0, 'Rho1997'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1912, 'CO2', 'MDEA', 'water', 0.0261, 0.0261, 1.0, 6.614487927, 0.2029, 0.0, 0.0, 0.00676, 373.15, 50.0, 'Rho1997'), +(1913, 'CO2', 'MDEA', 'water', 0.035, 0.035, 1.0, 6.614487927, 0.3038, 0.0, 0.0, 0.0101, 373.15, 50.0, 'Rho1997'), +(1914, 'CO2', 'MDEA', 'water', 0.0476, 0.0476, 1.0, 6.614487927, 0.4527, 0.0, 0.0, 0.0151, 373.15, 50.0, 'Rho1997'), +(1915, 'CO2', 'MDEA', 'water', 0.0656, 0.0656, 1.0, 6.614487927, 0.6845, 0.0, 0.0, 0.0228, 373.15, 50.0, 'Rho1997'), +(1916, 'CO2', 'MDEA', 'water', 0.0827, 0.0827, 1.0, 6.614487927, 0.9583, 0.0, 0.0, 0.0319, 373.15, 50.0, 'Rho1997'), +(1917, 'CO2', 'MDEA', 'water', 0.108, 0.108, 1.0, 6.614487927, 1.403, 0.0, 0.0, 0.0468, 373.15, 50.0, 'Rho1997'), +(1918, 'CO2', 'MDEA', 'water', 0.0643, 0.0643, 1.0, 2.204829309, 0.2171, 0.0, 0.0, 0.00724, 373.15, 75.0, 'Rho1997'), +(1919, 'CO2', 'MDEA', 'water', 0.0126, 0.0126, 1.0, 2.204829309, 0.4729, 0.0, 0.0, 0.0158, 373.15, 75.0, 'Rho1997'), +(1920, 'CO2', 'MDEA', 'water', 0.0202, 0.0202, 1.0, 2.204829309, 0.8346, 0.0, 0.0, 0.0278, 373.15, 75.0, 'Rho1997'), +(1921, 'CO2', 'MDEA', 'water', 0.028, 0.028, 1.0, 2.204829309, 1.129, 0.0, 0.0, 0.0376, 373.15, 75.0, 'Rho1997'), +(1922, 'CO2', 'MDEA', 'water', 0.0342, 0.0342, 1.0, 2.204829309, 1.549, 0.0, 0.0, 0.0516, 373.15, 75.0, 'Rho1997'), +(1923, 'CO2', 'MDEA', 'water', 0.041, 0.041, 1.0, 2.204829309, 1.888, 0.0, 0.0, 0.0629, 373.15, 75.0, 'Rho1997'), +(1924, 'CO2', 'MDEA', 'water', 0.0492, 0.0492, 1.0, 2.204829309, 2.355, 0.0, 0.0, 0.0785, 373.15, 75.0, 'Rho1997'), +(1925, 'CO2', 'MDEA', 'water', 1.3458, 1.3458, 1.0, 21.6525545, 48.69973712, 0.0, 0.0, 1.62, 298.15, 23.4, 'Bahiri1984'), +(1926, 'CO2', 'MDEA', 'water', 1.3411, 1.3411, 1.0, 21.6525545, 48.45566272, 0.0, 0.0, 1.62, 298.15, 23.4, 'Bahiri1984'), +(1927, 'CO2', 'MDEA', 'water', 1.2559, 1.2559, 1.0, 21.6525545, 35.32390854, 0.0, 0.0, 1.18, 298.15, 23.4, 'Bahiri1984'), +(1928, 'CO2', 'MDEA', 'water', 1.2822, 1.2822, 1.0, 21.6525545, 34.4965377, 0.0, 0.0, 1.15, 298.15, 23.4, 'Bahiri1984'), +(1929, 'CO2', 'MDEA', 'water', 1.1888, 1.1888, 1.0, 21.6525545, 18.18492159, 0.0, 0.0, 0.606, 298.15, 23.4, 'Bahiri1984'), +(1930, 'CO2', 'MDEA', 'water', 1.1648, 1.1648, 1.0, 21.6525545, 14.71685882, 0.0, 0.0, 0.491, 298.15, 23.4, 'Bahiri1984'), +(1931, 'CO2', 'MDEA', 'water', 1.1492, 1.1492, 1.0, 21.6525545, 13.26895985, 0.0, 0.0, 0.442, 298.15, 23.4, 'Bahiri1984'), +(1932, 'CO2', 'MDEA', 'water', 1.1446, 1.1446, 1.0, 21.6525545, 10.29938801, 0.0, 0.0, 0.343, 298.15, 23.4, 'Bahiri1984'), +(1933, 'CO2', 'MDEA', 'water', 1.1192, 1.1192, 1.0, 21.6525545, 9.24862704, 0.0, 0.0, 0.308, 298.15, 23.4, 'Bahiri1984'), +(1934, 'CO2', 'MDEA', 'water', 1.101, 1.101, 1.0, 21.6525545, 5.115909694, 0.0, 0.0, 0.171, 298.15, 23.4, 'Bahiri1984'), +(1935, 'CO2', 'MDEA', 'water', 1.071, 1.071, 1.0, 21.6525545, 4.585013405, 0.0, 0.0, 0.153, 298.15, 23.4, 'Bahiri1984'), +(1936, 'CO2', 'MDEA', 'water', 0.9866, 0.9866, 1.0, 21.6525545, 1.316898587, 0.0, 0.0, 0.0439, 298.15, 23.4, 'Bahiri1984'), +(1937, 'CO2', 'MDEA', 'water', 0.9909, 0.9909, 1.0, 21.6525545, 1.287251132, 0.0, 0.0, 0.0429, 298.15, 23.4, 'Bahiri1984'), +(1938, 'CO2', 'MDEA', 'water', 0.8878, 0.8878, 1.0, 21.6525545, 0.669480905, 0.0, 0.0, 0.0223, 298.15, 23.4, 'Bahiri1984'), +(1939, 'CO2', 'MDEA', 'water', 0.7895, 0.7895, 1.0, 21.6525545, 0.361285267, 0.0, 0.0, 0.012, 298.15, 23.4, 'Bahiri1984'), +(1940, 'CO2', 'MDEA', 'water', 0.6941, 0.6941, 1.0, 21.6525545, 0.236490165, 0.0, 0.0, 0.00788, 298.15, 23.4, 'Bahiri1984'), +(1941, 'CO2', 'MDEA', 'water', 0.6117, 0.6117, 1.0, 21.6525545, 0.20684271, 0.0, 0.0, 0.00689, 298.15, 23.4, 'Bahiri1984'), +(1942, 'CO2', 'MDEA', 'water', 0.5459, 0.5459, 1.0, 21.6525545, 0.184090012, 0.0, 0.0, 0.00614, 298.15, 23.4, 'Bahiri1984'), +(1943, 'CO2', 'MDEA', 'water', 0.4305, 0.4305, 1.0, 21.6525545, 0.148237275, 0.0, 0.0, 0.00494, 298.15, 23.4, 'Bahiri1984'), +(1944, 'CO2', 'MDEA', 'water', 0.3549, 0.3549, 1.0, 21.6525545, 0.135137237, 0.0, 0.0, 0.0045, 298.15, 23.4, 'Bahiri1984'); +INSERT INTO PUBLIC.CO2MDEANEW(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, LOADING, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, WTMDEA, REFERENCE) VALUES +(1945, 'CO2', 'MDEA', 'water', 1.2222, 1.2222, 1.0, 21.6525545, 46.62441526, 0.0, 0.0, 1.55, 323.15, 23.4, 'Bahiri1984'), +(1946, 'CO2', 'MDEA', 'water', 1.2284, 1.2284, 1.0, 21.6525545, 46.14040332, 0.0, 0.0, 1.54, 323.15, 23.4, 'Bahiri1984'), +(1947, 'CO2', 'MDEA', 'water', 1.235, 1.235, 1.0, 21.6525545, 45.45092762, 0.0, 0.0, 1.52, 323.15, 23.4, 'Bahiri1984'), +(1948, 'CO2', 'MDEA', 'water', 1.1715, 1.1715, 1.0, 21.6525545, 33.04036502, 0.0, 0.0, 1.1, 323.15, 23.4, 'Bahiri1984'), +(1949, 'CO2', 'MDEA', 'water', 1.1743, 1.1743, 1.0, 21.6525545, 30.52377871, 0.0, 0.0, 1.02, 323.15, 23.4, 'Bahiri1984'), +(1950, 'CO2', 'MDEA', 'water', 1.0963, 1.0963, 1.0, 21.6525545, 17.9718736, 0.0, 0.0, 0.599, 323.15, 23.4, 'Bahiri1984'), +(1951, 'CO2', 'MDEA', 'water', 1.079, 1.079, 1.0, 21.6525545, 15.49320845, 0.0, 0.0, 0.516, 323.15, 23.4, 'Bahiri1984'), +(1952, 'CO2', 'MDEA', 'water', 1.0697, 1.0697, 1.0, 21.6525545, 12.44021005, 0.0, 0.0, 0.415, 323.15, 23.4, 'Bahiri1984'), +(1953, 'CO2', 'MDEA', 'water', 1.0499, 1.0499, 1.0, 21.6525545, 9.045231708, 0.0, 0.0, 0.302, 323.15, 23.4, 'Bahiri1984'), +(1954, 'CO2', 'MDEA', 'water', 1.0194, 1.0194, 1.0, 21.6525545, 6.671366873, 0.0, 0.0, 0.222, 323.15, 23.4, 'Bahiri1984'), +(1955, 'CO2', 'MDEA', 'water', 0.9799, 0.9799, 1.0, 21.6525545, 4.40781815, 0.0, 0.0, 0.147, 323.15, 23.4, 'Bahiri1984'), +(1956, 'CO2', 'MDEA', 'water', 0.8969, 0.8969, 1.0, 21.6525545, 2.304917265, 0.0, 0.0, 0.0768, 323.15, 23.4, 'Bahiri1984'), +(1957, 'CO2', 'MDEA', 'water', 0.8568, 0.8568, 1.0, 21.6525545, 1.78781049, 0.0, 0.0, 0.0596, 323.15, 23.4, 'Bahiri1984'), +(1958, 'CO2', 'MDEA', 'water', 0.6668, 0.6668, 1.0, 21.6525545, 0.863223576, 0.0, 0.0, 0.0288, 323.15, 23.4, 'Bahiri1984'), +(1959, 'CO2', 'MDEA', 'water', 0.6011, 0.6011, 1.0, 21.6525545, 0.631559741, 0.0, 0.0, 0.0211, 323.15, 23.4, 'Bahiri1984'), +(1960, 'CO2', 'MDEA', 'water', 0.5351, 0.5351, 1.0, 21.6525545, 0.547443706, 0.0, 0.0, 0.0182, 323.15, 23.4, 'Bahiri1984'); +CREATE CACHED TABLE PUBLIC.CO2WATERMDEA( + ID INT DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + PRESSURECO2 DOUBLE DEFAULT '0', + X1 VARCHAR(50) DEFAULT NULL, + X2 VARCHAR(50) DEFAULT NULL, + X3 VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 340 +/- SELECT COUNT(*) FROM PUBLIC.CO2WATERMDEA; +INSERT INTO PUBLIC.CO2WATERMDEA(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(12, NULL, NULL, NULL, '0.011267023', '0.944548573', '0.044184404', 'Lemoine2000'), +(13, NULL, NULL, NULL, '0.011594564', '0.94423567', '0.044169767', 'Lemoine2000'), +(14, NULL, NULL, NULL, '0.000265242', '0.955601336', '0.044133422', 'Austgen1991'), +(15, NULL, NULL, NULL, '0.000516231', '0.955361426', '0.044122343', 'Austgen1991'), +(16, NULL, NULL, NULL, '0.00094822', '0.954948507', '0.044103272', 'Austgen1991'), +(17, NULL, NULL, NULL, '0.00195621', '0.953985016', '0.044058774', 'Austgen1991'), +(18, NULL, NULL, NULL, '0.003256103', '0.952742507', '0.044001391', 'Austgen1991'), +(19, NULL, NULL, NULL, '0.004963639', '0.95111035', '0.043926011', 'Austgen1991'), +(20, NULL, NULL, NULL, '0.015729177', '0.940820058', '0.043450765', 'Austgen1991'), +(21, NULL, NULL, NULL, '0.035838092', '0.921598854', '0.042563054', 'Austgen1991'), +(22, NULL, NULL, NULL, '0.000398093', '0.872820743', '0.126781164', 'Austgen1991'), +(23, NULL, NULL, NULL, '0.001772496', '0.871620658', '0.126606846', 'Austgen1991'), +(24, NULL, NULL, NULL, '0.004633156', '0.86912282', '0.126244024', 'Austgen1991'), +(25, NULL, NULL, NULL, '0.013142303', '0.861692902', '0.125164795', 'Austgen1991'), +(26, NULL, NULL, NULL, '0.078429383', '0.804686291', '0.116884326', 'Austgen1991'), +(27, NULL, NULL, NULL, '0.076378202', '0.806477317', '0.117144481', 'Austgen1991'), +(28, NULL, NULL, NULL, '0.000536518', '0.991573517', '0.007889965', 'Rho1997'), +(29, NULL, NULL, NULL, '0.000118004', '0.991988727', '0.007893269', 'Rho1997'), +(30, NULL, NULL, NULL, '0.001871364', '0.990249208', '0.007879428', 'Rho1997'), +(31, NULL, NULL, NULL, '0.002647005', '0.98947969', '0.007873305', 'Rho1997'), +(32, NULL, NULL, NULL, '0.003372829', '0.988759596', '0.007867575', 'Rho1997'), +(33, NULL, NULL, NULL, '0.003946463', '0.988190491', '0.007863046', 'Rho1997'), +(34, NULL, NULL, NULL, '0.004389558', '0.987750894', '0.007859549', 'Rho1997'), +(35, NULL, NULL, NULL, '0.004922159', '0.987222497', '0.007855344', 'Rho1997'), +(36, NULL, NULL, NULL, '0.005372977', '0.986775238', '0.007851785', 'Rho1997'), +(37, NULL, NULL, NULL, '0.001689366', '0.96085241', '0.037458224', 'Rho1997'), +(38, NULL, NULL, NULL, '0.004426629', '0.958217853', '0.037355518', 'Rho1997'), +(39, NULL, NULL, NULL, '0.008272057', '0.954516712', '0.037211231', 'Rho1997'), +(40, NULL, NULL, NULL, '0.012479571', '0.95046707', '0.037053359', 'Rho1997'), +(41, NULL, NULL, NULL, '0.015994384', '0.947084139', '0.036921477', 'Rho1997'), +(42, NULL, NULL, NULL, '0.018173039', '0.94498723', '0.03683973', 'Rho1997'), +(43, NULL, NULL, NULL, '0.021654694', '0.941636213', '0.036709093', 'Rho1997'), +(44, NULL, NULL, NULL, '0.022436997', '0.940883263', '0.03667974', 'Rho1997'), +(45, NULL, NULL, NULL, '0.02612346', '0.937335122', '0.036541418', 'Rho1997'), +(46, NULL, NULL, NULL, '0.028636506', '0.93491637', '0.036447124', 'Rho1997'), +(47, NULL, NULL, NULL, '0.030830092', '0.93280509', '0.036364817', 'Rho1997'), +(48, NULL, NULL, NULL, '0.001966056', '0.866963549', '0.131070395', 'Rho1997'), +(49, NULL, NULL, NULL, '0.005771224', '0.863658108', '0.130570668', 'Rho1997'), +(50, NULL, NULL, NULL, '0.009624779', '0.860310635', '0.130064586', 'Rho1997'), +(51, NULL, NULL, NULL, '0.01697653', '0.853924379', '0.129099091', 'Rho1997'), +(52, NULL, NULL, NULL, '0.024544945', '0.847349913', '0.128105142', 'Rho1997'), +(53, NULL, NULL, NULL, '0.030802568', '0.841914096', '0.127283337', 'Rho1997'), +(54, NULL, NULL, NULL, '0.0402093', '0.833742736', '0.126047964', 'Rho1997'), +(55, NULL, NULL, NULL, '0.048175675', '0.826822574', '0.125001751', 'Rho1997'), +(56, NULL, NULL, NULL, '0.056139609', '0.819904533', '0.123955859', 'Rho1997'), +(57, NULL, NULL, NULL, '0.008047469', '0.682434477', '0.309518054', 'Rho1997'), +(58, NULL, NULL, NULL, '0.021614167', '0.673100983', '0.305284849', 'Rho1997'), +(59, NULL, NULL, NULL, '0.032454503', '0.665643148', '0.301902349', 'Rho1997'), +(60, NULL, NULL, NULL, '0.043485666', '0.658054028', '0.298460305', 'Rho1997'), +(61, NULL, NULL, NULL, '0.054351846', '0.650578413', '0.295069741', 'Rho1997'); +INSERT INTO PUBLIC.CO2WATERMDEA(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(62, NULL, NULL, NULL, '0.065491946', '0.642914348', '0.291593706', 'Rho1997'), +(63, NULL, NULL, NULL, '0.078444243', '0.634003545', '0.287552212', 'Rho1997'), +(64, NULL, NULL, NULL, '0.000467118', '0.991642369', '0.007890513', 'Rho1997'), +(65, NULL, NULL, NULL, '0.00104095', '0.991073067', '0.007885983', 'Rho1997'), +(66, NULL, NULL, NULL, '0.001588155', '0.990530181', '0.007881663', 'Rho1997'), +(67, NULL, NULL, NULL, '0.002091527', '0.990030784', '0.00787769', 'Rho1997'), +(68, NULL, NULL, NULL, '0.002467151', '0.989658124', '0.007874724', 'Rho1997'), +(69, NULL, NULL, NULL, '0.002987686', '0.989141699', '0.007870615', 'Rho1997'), +(70, NULL, NULL, NULL, '0.003622112', '0.988512281', '0.007865607', 'Rho1997'), +(71, NULL, NULL, NULL, '0.004208766', '0.987930258', '0.007860976', 'Rho1997'), +(72, NULL, NULL, NULL, '0.002656956', '0.959921125', '0.037421919', 'Rho1997'), +(73, NULL, NULL, NULL, '0.004698043', '0.957956623', '0.037345334', 'Rho1997'), +(74, NULL, NULL, NULL, '0.007219193', '0.955530071', '0.037250736', 'Rho1997'), +(75, NULL, NULL, NULL, '0.009031685', '0.953785586', '0.037182729', 'Rho1997'), +(76, NULL, NULL, NULL, '0.009388971', '0.953441706', '0.037169323', 'Rho1997'), +(77, NULL, NULL, NULL, '0.01078617', '0.952096932', '0.037116898', 'Rho1997'), +(78, NULL, NULL, NULL, '0.012651519', '0.950301574', '0.037046907', 'Rho1997'), +(79, NULL, NULL, NULL, '0.014323963', '0.948691883', '0.036984154', 'Rho1997'), +(80, NULL, NULL, NULL, '0.016357559', '0.946734591', '0.03690785', 'Rho1997'), +(81, NULL, NULL, NULL, '0.018509307', '0.94466358', '0.036827113', 'Rho1997'), +(82, NULL, NULL, NULL, '0.020403282', '0.94284067', '0.036756048', 'Rho1997'), +(83, NULL, NULL, NULL, '0.022730934', '0.940600355', '0.036668711', 'Rho1997'), +(84, NULL, NULL, NULL, '0.002123006', '0.86682721', '0.131049783', 'Rho1997'), +(85, NULL, NULL, NULL, '0.004367219', '0.864877727', '0.130755054', 'Rho1997'), +(86, NULL, NULL, NULL, '0.005485544', '0.86390627', '0.130608186', 'Rho1997'), +(87, NULL, NULL, NULL, '0.007002958', '0.862588136', '0.130408906', 'Rho1997'), +(88, NULL, NULL, NULL, '0.010011067', '0.859975078', '0.130013856', 'Rho1997'), +(89, NULL, NULL, NULL, '0.013090553', '0.857300016', '0.129609431', 'Rho1997'), +(90, NULL, NULL, NULL, '0.017166855', '0.853759049', '0.129074096', 'Rho1997'), +(91, NULL, NULL, NULL, '0.021285106', '0.850181642', '0.128533252', 'Rho1997'), +(92, NULL, NULL, NULL, '0.024907197', '0.847035235', '0.128057568', 'Rho1997'), +(93, NULL, NULL, NULL, '0.005554298', '0.684149706', '0.310295996', 'Rho1997'), +(94, NULL, NULL, NULL, '0.010069718', '0.681043229', '0.308887053', 'Rho1997'), +(95, NULL, NULL, NULL, '0.016117498', '0.676882532', '0.30699997', 'Rho1997'), +(96, NULL, NULL, NULL, '0.022867044', '0.672239041', '0.304893915', 'Rho1997'), +(97, NULL, NULL, NULL, '0.028848229', '0.66812416', '0.303027612', 'Rho1997'), +(98, NULL, NULL, NULL, '0.033271704', '0.665080938', '0.301647359', 'Rho1997'), +(99, NULL, NULL, NULL, '0.038146067', '0.661727517', '0.300126415', 'Rho1997'), +(100, NULL, NULL, NULL, '0.044141824', '0.657602611', '0.298255565', 'Rho1997'), +(101, NULL, NULL, NULL, '0.00023677', '0.991870899', '0.007892332', 'Rho1997'), +(102, NULL, NULL, NULL, '0.000353535', '0.991755055', '0.00789141', 'Rho1997'), +(103, NULL, NULL, NULL, '0.000713915', '0.99139752', '0.007888565', 'Rho1997'), +(104, NULL, NULL, NULL, '0.000943256', '0.99116999', '0.007886754', 'Rho1997'), +(105, NULL, NULL, NULL, '0.00116304', '0.99095194', '0.007885019', 'Rho1997'), +(106, NULL, NULL, NULL, '0.001791138', '0.990328801', '0.007880061', 'Rho1997'), +(107, NULL, NULL, NULL, '0.000974611', '0.961540346', '0.037485043', 'Rho1997'), +(108, NULL, NULL, NULL, '0.002048228', '0.960507012', '0.037444759', 'Rho1997'), +(109, NULL, NULL, NULL, '0.003279853', '0.959321601', '0.037398547', 'Rho1997'), +(110, NULL, NULL, NULL, '0.004348523', '0.958293028', '0.037358449', 'Rho1997'), +(111, NULL, NULL, NULL, '0.005915724', '0.956784632', '0.037299645', 'Rho1997'), +(112, NULL, NULL, NULL, '0.007215495', '0.95553363', '0.037250875', 'Rho1997'); +INSERT INTO PUBLIC.CO2WATERMDEA(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(113, NULL, NULL, NULL, '0.008773689', '0.954033901', '0.037192409', 'Rho1997'), +(114, NULL, NULL, NULL, '0.010591534', '0.952284265', '0.037124201', 'Rho1997'), +(115, NULL, NULL, NULL, '0.012080569', '0.950851102', '0.03706833', 'Rho1997'), +(116, NULL, NULL, NULL, '0.001141255', '0.86768003', '0.131178715', 'Rho1997'), +(117, NULL, NULL, NULL, '0.00214916', '0.866804491', '0.131046349', 'Rho1997'), +(118, NULL, NULL, NULL, '0.003415967', '0.865704052', '0.130879981', 'Rho1997'), +(119, NULL, NULL, NULL, '0.00457547', '0.864696825', '0.130727705', 'Rho1997'), +(120, NULL, NULL, NULL, '0.006212406', '0.863274866', '0.130512728', 'Rho1997'), +(121, NULL, NULL, NULL, '0.008541569', '0.861251589', '0.130206843', 'Rho1997'), +(122, NULL, NULL, NULL, '0.010744184', '0.85933824', '0.129917576', 'Rho1997'), +(123, NULL, NULL, NULL, '0.01398513', '0.856522922', '0.129491947', 'Rho1997'), +(124, NULL, NULL, NULL, '0.019668846', '0.674439308', '0.305891846', 'Rho1997'), +(125, NULL, NULL, NULL, '0.00391617', '0.685276691', '0.310807139', 'Rho1997'), +(126, NULL, NULL, NULL, '0.006263509', '0.68366179', '0.310074701', 'Rho1997'), +(127, NULL, NULL, NULL, '0.008661144', '0.682012287', '0.30932657', 'Rho1997'), +(128, NULL, NULL, NULL, '0.010558719', '0.68070681', '0.308734471', 'Rho1997'), +(129, NULL, NULL, NULL, '0.012631595', '0.679280732', '0.308087673', 'Rho1997'), +(130, NULL, NULL, NULL, '0.015119716', '0.677568977', '0.307311307', 'Rho1997'), +(131, NULL, NULL, NULL, '0.000144288', '0.956655603', '0.043200109', 'GPA'), +(132, NULL, NULL, NULL, '0.00081162', '0.956017104', '0.043171276', 'GPA'), +(133, NULL, NULL, NULL, '0.009839677', '0.947379116', '0.042781206', 'GPA'), +(134, NULL, NULL, NULL, '0.039108639', '0.91937476', '0.041516602', 'GPA'), +(135, NULL, NULL, NULL, '0.043397845', '0.915270875', '0.041331281', 'GPA'), +(136, NULL, NULL, NULL, '0.044582504', '0.9141374', '0.041280096', 'GPA'), +(137, NULL, NULL, NULL, '0.04811894', '0.91075376', '0.041127299', 'GPA'), +(138, NULL, NULL, NULL, '0.048510262', '0.910379346', '0.041110392', 'GPA'), +(139, NULL, NULL, NULL, '0.054727943', '0.904430308', '0.040841749', 'GPA'), +(140, NULL, NULL, NULL, '0.000305376', '0.956501476', '0.043193149', 'GPA'), +(141, NULL, NULL, NULL, '0.000841814', '0.955988214', '0.043169971', 'GPA'), +(142, NULL, NULL, NULL, '0.008779537', '0.948393452', '0.042827011', 'GPA'), +(143, NULL, NULL, NULL, '0.028500971', '0.929524109', '0.04197492', 'GPA'), +(144, NULL, NULL, NULL, '0.038509872', '0.919947656', '0.041542472', 'GPA'), +(145, NULL, NULL, NULL, '0.044976738', '0.913760199', '0.041263062', 'GPA'), +(146, NULL, NULL, NULL, '0.050072338', '0.908884761', '0.0410429', 'GPA'), +(147, NULL, NULL, NULL, '0.000158974', '0.956641552', '0.043199474', 'GPA'), +(148, NULL, NULL, NULL, '0.000733969', '0.956091401', '0.043174631', 'GPA'), +(149, NULL, NULL, NULL, '0.01422563', '0.943182665', '0.042591705', 'GPA'), +(150, NULL, NULL, NULL, '0.026989816', '0.930969973', '0.042040212', 'GPA'), +(151, NULL, NULL, NULL, '0.036428356', '0.921939237', '0.041632407', 'GPA'), +(152, NULL, NULL, NULL, '0.044187943', '0.914514913', '0.041297143', 'GPA'), +(153, NULL, NULL, NULL, '0.000304512', '0.956502302', '0.043193186', 'GPA'), +(154, NULL, NULL, NULL, '0.000561367', '0.956256545', '0.043182088', 'GPA'), +(155, NULL, NULL, NULL, '0.007929789', '0.949206485', '0.042863726', 'GPA'), +(156, NULL, NULL, NULL, '0.010305421', '0.946933496', '0.042761083', 'GPA'), +(157, NULL, NULL, NULL, '0.018323136', '0.939262197', '0.042414667', 'GPA'), +(158, NULL, NULL, NULL, '0.029071536', '0.928978196', '0.041950268', 'GPA'), +(159, NULL, NULL, NULL, '0.037550291', '0.920865777', '0.041583932', 'GPA'), +(160, NULL, NULL, NULL, '0.000337393', '0.868381384', '0.131281223', 'GPA'), +(161, NULL, NULL, NULL, '0.000406943', '0.868320967', '0.131272089', 'GPA'), +(162, NULL, NULL, NULL, '0.002332143', '0.866648596', '0.131019261', 'GPA'), +(163, NULL, NULL, NULL, '0.003376758', '0.865741166', '0.130882077', 'GPA'), +(164, NULL, NULL, NULL, '0.0200755', '0.851235394', '0.128689106', 'GPA'); +INSERT INTO PUBLIC.CO2WATERMDEA(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(165, NULL, NULL, NULL, '0.033262806', '0.839779918', '0.126957276', 'GPA'), +(166, NULL, NULL, NULL, '0.092591869', '0.788242276', '0.119165855', 'GPA'), +(167, NULL, NULL, NULL, '0.113817999', '0.769803679', '0.116378322', 'GPA'), +(168, NULL, NULL, NULL, '0.123205666', '0.761648853', '0.115145482', 'GPA'), +(169, NULL, NULL, NULL, '0.132198771', '0.753836772', '0.113964458', 'GPA'), +(170, NULL, NULL, NULL, '0.000294083', '0.868419007', '0.131286911', 'GPA'), +(171, NULL, NULL, NULL, '0.00030852', '0.868406465', '0.131285015', 'GPA'), +(172, NULL, NULL, NULL, '0.002188337', '0.866773516', '0.131038147', 'GPA'), +(173, NULL, NULL, NULL, '0.0172933', '0.85365222', '0.129054479', 'GPA'), +(174, NULL, NULL, NULL, '0.030184678', '0.842453809', '0.127361512', 'GPA'), +(175, NULL, NULL, NULL, '0.046338823', '0.828421117', '0.125240061', 'GPA'), +(176, NULL, NULL, NULL, '0.087043413', '0.793062078', '0.119894509', 'GPA'), +(177, NULL, NULL, NULL, '0.108422464', '0.774490643', '0.117086894', 'GPA'), +(178, NULL, NULL, NULL, '0.1201664', '0.764288985', '0.115544615', 'GPA'), +(179, NULL, NULL, NULL, '0.000307207', '0.868407606', '0.131285187', 'GPA'), +(180, NULL, NULL, NULL, '0.002279855', '0.866694017', '0.131026128', 'GPA'), +(181, NULL, NULL, NULL, '0.002502042', '0.866501009', '0.130996949', 'GPA'), +(182, NULL, NULL, NULL, '0.01754688', '0.853431942', '0.129021178', 'GPA'), +(183, NULL, NULL, NULL, '0.014495257', '0.856082809', '0.129421934', 'GPA'), +(184, NULL, NULL, NULL, '0.044304068', '0.830188656', '0.125507276', 'GPA'), +(185, NULL, NULL, NULL, '0.072701451', '0.805520574', '0.121777975', 'GPA'), +(186, NULL, NULL, NULL, '0.094641737', '0.786461608', '0.118896655', 'GPA'), +(187, NULL, NULL, NULL, '0.000156253', '0.868538736', '0.131305011', 'GPA'), +(188, NULL, NULL, NULL, '0.000189073', '0.868510226', '0.131300701', 'GPA'), +(189, NULL, NULL, NULL, '0.000262582', '0.86844637', '0.131291048', 'GPA'), +(190, NULL, NULL, NULL, '0.001625789', '0.867262187', '0.131112024', 'GPA'), +(191, NULL, NULL, NULL, '0.00171741', '0.867182599', '0.131099992', 'GPA'), +(192, NULL, NULL, NULL, '0.007649838', '0.86202925', '0.130320912', 'GPA'), +(193, NULL, NULL, NULL, '0.012437479', '0.857870348', '0.129692173', 'GPA'), +(194, NULL, NULL, NULL, '0.022716581', '0.848941155', '0.128342264', 'GPA'), +(195, NULL, NULL, NULL, '0.044543902', '0.829980318', '0.12547578', 'GPA'), +(196, NULL, NULL, NULL, '0.067820135', '0.809760849', '0.122419016', 'GPA'), +(197, NULL, NULL, NULL, '2.55343E-05', '0.956769226', '0.04320524', 'Rogers, 1998'), +(198, NULL, NULL, NULL, '4.49326E-05', '0.956750666', '0.043204401', 'Rogers, 1998'), +(199, NULL, NULL, NULL, '6.13492E-05', '0.956734959', '0.043203692', 'Rogers, 1998'), +(200, NULL, NULL, NULL, '8.81332E-05', '0.956709332', '0.043202535', 'Rogers, 1998'), +(201, NULL, NULL, NULL, '0.000137377', '0.956662215', '0.043200407', 'Rogers, 1998'), +(202, NULL, NULL, NULL, '0.000239306', '0.956564691', '0.043196003', 'Rogers, 1998'), +(203, NULL, NULL, NULL, '0.000253989', '0.956550642', '0.043195369', 'Rogers, 1998'), +(204, NULL, NULL, NULL, '0.000513891', '0.956301969', '0.04318414', 'Rogers, 1998'), +(205, NULL, NULL, NULL, '0.000745186', '0.956080668', '0.043174146', 'Rogers, 1998'), +(206, NULL, NULL, NULL, '0.001136761', '0.955706011', '0.043157228', 'Rogers, 1998'), +(207, NULL, NULL, NULL, '0.002593844', '0.954311883', '0.043094272', 'Rogers, 1998'), +(208, NULL, NULL, NULL, '0.002623931', '0.954283097', '0.043092972', 'Rogers, 1998'), +(209, NULL, NULL, NULL, '0.004400558', '0.952583231', '0.043016211', 'Rogers, 1998'), +(210, NULL, NULL, NULL, '0.005059656', '0.95195261', '0.042987734', 'Rogers, 1998'), +(211, NULL, NULL, NULL, '3.2699E-05', '0.868646064', '0.131321237', 'Rogers, 1998'), +(212, NULL, NULL, NULL, '7.05168E-05', '0.868613213', '0.131316271', 'Rogers, 1998'), +(213, NULL, NULL, NULL, '8.28595E-05', '0.868602491', '0.13131465', 'Rogers, 1998'), +(214, NULL, NULL, NULL, '0.000179884', '0.868518208', '0.131301908', 'Rogers, 1998'), +(215, NULL, NULL, NULL, '0.000188417', '0.868510796', '0.131300787', 'Rogers, 1998'); +INSERT INTO PUBLIC.CO2WATERMDEA(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(216, NULL, NULL, NULL, '0.000324269', '0.868392785', '0.131282947', 'Rogers, 1998'), +(217, NULL, NULL, NULL, '0.000511907', '0.868229788', '0.131258305', 'Rogers, 1998'), +(218, NULL, NULL, NULL, '0.00057881', '0.868171671', '0.131249519', 'Rogers, 1998'), +(219, NULL, NULL, NULL, '0.000876486', '0.867913088', '0.131210426', 'Rogers, 1998'), +(220, NULL, NULL, NULL, '0.00133118', '0.867518107', '0.131150713', 'Rogers, 1998'), +(221, NULL, NULL, NULL, '0.001848268', '0.867068926', '0.131082807', 'Rogers, 1998'), +(222, NULL, NULL, NULL, '0.002064108', '0.866881431', '0.131054461', 'Rogers, 1998'), +(223, NULL, NULL, NULL, '0.003860456', '0.86532099', '0.130818555', 'Rogers, 1998'), +(224, NULL, NULL, NULL, '0.004842051', '0.864468302', '0.130689646', 'Rogers, 1998'), +(225, NULL, NULL, NULL, '4.53646E-05', '0.956750253', '0.043204383', 'Rogers, 1998'), +(226, NULL, NULL, NULL, '8.03573E-05', '0.956716772', '0.043202871', 'Rogers, 1998'), +(227, NULL, NULL, NULL, '0.000163725', '0.956637006', '0.043199269', 'Rogers, 1998'), +(228, NULL, NULL, NULL, '0.000475476', '0.956338725', '0.043185799', 'Rogers, 1998'), +(229, NULL, NULL, NULL, '0.001291496', '0.955557962', '0.043150542', 'Rogers, 1998'), +(230, NULL, NULL, NULL, '0.003093051', '0.953834246', '0.043072703', 'Rogers, 1998'), +(231, NULL, NULL, NULL, '0.053151768', '0.88388775', '0.062960482', 'Kamps, 2001'), +(232, NULL, NULL, NULL, '0.055242827', '0.881935735', '0.062821438', 'Kamps, 2001'), +(233, NULL, NULL, NULL, '0.061520205', '0.876075771', '0.062404025', 'Kamps, 2001'), +(234, NULL, NULL, NULL, '0.071253085', '0.866990076', '0.061756839', 'Kamps, 2001'), +(235, NULL, NULL, NULL, '0.076331256', '0.862249577', '0.061419167', 'Kamps, 2001'), +(236, NULL, NULL, NULL, '0.091073954', '0.794507503', '0.114418543', 'Kamps, 2001'), +(237, NULL, NULL, NULL, '0.096916453', '0.789400477', '0.11368307', 'Kamps, 2001'), +(238, NULL, NULL, NULL, '0.104203258', '0.783030958', '0.112765784', 'Kamps, 2001'), +(239, NULL, NULL, NULL, '0.108741879', '0.779063673', '0.112194448', 'Kamps, 2001'), +(240, NULL, NULL, NULL, '0.110477197', '0.777546803', '0.111976', 'Kamps, 2001'), +(241, NULL, NULL, NULL, '0.117694792', '0.771237782', '0.111067426', 'Kamps, 2001'), +(242, NULL, NULL, NULL, '0.123491556', '0.766170733', '0.110337711', 'Kamps, 2001'), +(243, NULL, NULL, NULL, '0.126865973', '0.763221099', '0.109912928', 'Kamps, 2001'), +(244, NULL, NULL, NULL, '0.038139208', '0.840778653', '0.12108214', 'Kamps, 2001'), +(245, NULL, NULL, NULL, '0.047802339', '0.832331948', '0.119865714', 'Kamps, 2001'), +(246, NULL, NULL, NULL, '0.06515598', '0.817162838', '0.117681181', 'Kamps, 2001'), +(247, NULL, NULL, NULL, '0.079626307', '0.804514083', '0.11585961', 'Kamps, 2001'), +(248, NULL, NULL, NULL, '0.088726194', '0.796559719', '0.114714087', 'Kamps, 2001'), +(249, NULL, NULL, NULL, '0.094353483', '0.791640811', '0.114005705', 'Kamps, 2001'), +(250, NULL, NULL, NULL, '0.101236552', '0.785624205', '0.113139242', 'Kamps, 2001'), +(251, NULL, NULL, NULL, '0.106308574', '0.781190666', '0.11250076', 'Kamps, 2001'), +(252, NULL, NULL, NULL, '0.015609911', '0.860471889', '0.1239182', 'Kamps, 2001'), +(253, NULL, NULL, NULL, '0.024830968', '0.852411609', '0.122757424', 'Kamps, 2001'), +(254, NULL, NULL, NULL, '0.039157954', '0.839888149', '0.120953897', 'Kamps, 2001'), +(255, NULL, NULL, NULL, '0.049512584', '0.830836994', '0.119650422', 'Kamps, 2001'), +(256, NULL, NULL, NULL, '0.056783161', '0.82448166', '0.118735179', 'Kamps, 2001'), +(257, NULL, NULL, NULL, '0.065348609', '0.816994459', '0.117656932', 'Kamps, 2001'), +(258, NULL, NULL, NULL, '0.069743631', '0.813152696', '0.117103673', 'Kamps, 2001'), +(259, NULL, NULL, NULL, '0.03413831', '0.922394698', '0.043466992', 'Kuranov1996'), +(260, NULL, NULL, NULL, '0.040131564', '0.91667116', '0.043197275', 'Kuranov1996'), +(261, NULL, NULL, NULL, '0.042020306', '0.914867419', '0.043112276', 'Kuranov1996'), +(262, NULL, NULL, NULL, '0.044818928', '0.912194743', '0.042986328', 'Kuranov1996'), +(263, NULL, NULL, NULL, '0.044823047', '0.91219081', '0.042986143', 'Kuranov1996'); +INSERT INTO PUBLIC.CO2WATERMDEA(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(264, NULL, NULL, NULL, '0.048266184', '0.908902625', '0.04283119', 'Kuranov1996'), +(265, NULL, NULL, NULL, '0.04950356', '0.907720935', '0.042775504', 'Kuranov1996'), +(266, NULL, NULL, NULL, '0.052475578', '0.904882669', '0.042641754', 'Kuranov1996'), +(267, NULL, NULL, NULL, '0.052518132', '0.90484203', '0.042639839', 'Kuranov1996'), +(268, NULL, NULL, NULL, '0.053313801', '0.904082168', '0.042604031', 'Kuranov1996'), +(269, NULL, NULL, NULL, '0.055916173', '0.901596912', '0.042486915', 'Kuranov1996'), +(270, NULL, NULL, NULL, '0.029788081', '0.927762979', '0.04244894', 'Kuranov1996'), +(271, NULL, NULL, NULL, '0.036154103', '0.921675484', '0.042170413', 'Kuranov1996'), +(272, NULL, NULL, NULL, '0.039598922', '0.918381384', '0.042019694', 'Kuranov1996'), +(273, NULL, NULL, NULL, '0.041363683', '0.916693835', '0.041942482', 'Kuranov1996'), +(274, NULL, NULL, NULL, '0.044201738', '0.913979951', '0.041818311', 'Kuranov1996'), +(275, NULL, NULL, NULL, '0.045886303', '0.91236909', '0.041744607', 'Kuranov1996'), +(276, NULL, NULL, NULL, '0.051989031', '0.90653337', '0.041477599', 'Kuranov1996'), +(277, NULL, NULL, NULL, '0.012835553', '0.943973795', '0.043190651', 'Kuranov1996'), +(278, NULL, NULL, NULL, '0.021372331', '0.93581052', '0.042817148', 'Kuranov1996'), +(279, NULL, NULL, NULL, '0.028393756', '0.929096299', '0.042509945', 'Kuranov1996'), +(280, NULL, NULL, NULL, '0.034081189', '0.923657704', '0.042261107', 'Kuranov1996'), +(281, NULL, NULL, NULL, '0.034849122', '0.92292337', '0.042227509', 'Kuranov1996'), +(282, NULL, NULL, NULL, '0.036347983', '0.921490087', '0.04216193', 'Kuranov1996'), +(283, NULL, NULL, NULL, '0.039665166', '0.918318038', '0.042016796', 'Kuranov1996'), +(284, NULL, NULL, NULL, '0.043660106', '0.914497885', '0.041842008', 'Kuranov1996'), +(285, NULL, NULL, NULL, '0.044421088', '0.913770198', '0.041808714', 'Kuranov1996'), +(286, NULL, NULL, NULL, '0', '0.956247764', '0.043752236', 'Kuranov1996'), +(287, NULL, NULL, NULL, '0.009063481', '0.947580831', '0.043355688', 'Kuranov1996'), +(288, NULL, NULL, NULL, '0.015990405', '0.940956975', '0.04305262', 'Kuranov1996'), +(289, NULL, NULL, NULL, '0.021032577', '0.936135409', '0.042832013', 'Kuranov1996'), +(290, NULL, NULL, NULL, '0.028758063', '0.928747931', '0.042494006', 'Kuranov1996'), +(291, NULL, NULL, NULL, '0.036637615', '0.921213127', '0.042149258', 'Kuranov1996'), +(292, NULL, NULL, NULL, '0.040934456', '0.917104282', '0.041961262', 'Kuranov1996'), +(293, NULL, NULL, NULL, '0', '0.956247764', '0.043752236', 'Kuranov1996'), +(294, NULL, NULL, NULL, '0.00796025', '0.948635794', '0.043403957', 'Kuranov1996'), +(295, NULL, NULL, NULL, '0.012395718', '0.944394387', '0.043209895', 'Kuranov1996'), +(296, NULL, NULL, NULL, '0.018939406', '0.938137', '0.042923594', 'Kuranov1996'), +(1, NULL, NULL, NULL, '0.00076358', '0.95458264', '0.044653781', 'Lemoine2000'), +(2, NULL, NULL, NULL, '0.001525994', '0.953854296', '0.04461971', 'Lemoine2000'), +(3, NULL, NULL, NULL, '0.002282798', '0.953131312', '0.04458589', 'Lemoine2000'), +(4, NULL, NULL, NULL, '0.002887415', '0.952553714', '0.044558871', 'Lemoine2000'), +(5, NULL, NULL, NULL, '0.003797403', '0.951684392', '0.044518205', 'Lemoine2000'), +(6, NULL, NULL, NULL, '0.004320448', '0.95118472', '0.044494832', 'Lemoine2000'), +(7, NULL, NULL, NULL, '0.005006665', '0.950529169', '0.044464166', 'Lemoine2000'), +(8, NULL, NULL, NULL, '0.005753786', '0.949815435', '0.044430779', 'Lemoine2000'), +(9, NULL, NULL, NULL, '0.006045256', '0.94953699', '0.044417754', 'Lemoine2000'), +(10, NULL, NULL, NULL, '0.007174193', '0.948458503', '0.044367304', 'Lemoine2000'), +(11, NULL, NULL, NULL, '0.009042752', '0.946673446', '0.044283802', 'Lemoine2000'), +(297, NULL, NULL, NULL, '0.020436363', '0.936705538', '0.042858099', 'Kuranov1996'), +(298, NULL, NULL, NULL, '0.026208546', '0.931185901', '0.042605553', 'Kuranov1996'), +(299, NULL, NULL, NULL, '0.029124213', '0.928397801', '0.042477986', 'Kuranov1996'), +(300, NULL, NULL, NULL, '0.07449422', '0.814841632', '0.110664148', 'Kuranov1996'); +INSERT INTO PUBLIC.CO2WATERMDEA(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(301, NULL, NULL, NULL, '0.093129225', '0.798434843', '0.108435932', 'Kuranov1996'), +(302, NULL, NULL, NULL, '0.096037276', '0.795874513', '0.108088212', 'Kuranov1996'), +(303, NULL, NULL, NULL, '0.104145771', '0.788735563', '0.107118666', 'Kuranov1996'), +(304, NULL, NULL, NULL, '0.104973957', '0.788006405', '0.107019639', 'Kuranov1996'), +(305, NULL, NULL, NULL, '0.111732468', '0.782056018', '0.106211513', 'Kuranov1996'), +(306, NULL, NULL, NULL, '0.112323701', '0.78153548', '0.106140819', 'Kuranov1996'), +(307, NULL, NULL, NULL, '0.114362032', '0.779740876', '0.105897092', 'Kuranov1996'), +(308, NULL, NULL, NULL, '0.118628345', '0.775984693', '0.105386963', 'Kuranov1996'), +(309, NULL, NULL, NULL, '0.121552049', '0.77341058', '0.105037371', 'Kuranov1996'), +(310, NULL, NULL, NULL, '0.074081332', '0.815205151', '0.110713517', 'Kuranov1996'), +(311, NULL, NULL, NULL, '0.084594626', '0.805948947', '0.109456427', 'Kuranov1996'), +(312, NULL, NULL, NULL, '0.096765062', '0.795233749', '0.108001189', 'Kuranov1996'), +(313, NULL, NULL, NULL, '0.099127182', '0.793154072', '0.107718747', 'Kuranov1996'), +(314, NULL, NULL, NULL, '0.102654562', '0.790048466', '0.107296972', 'Kuranov1996'), +(315, NULL, NULL, NULL, '0.104237599', '0.788654715', '0.107107686', 'Kuranov1996'), +(316, NULL, NULL, NULL, '0.104365643', '0.788541981', '0.107092376', 'Kuranov1996'), +(317, NULL, NULL, NULL, '0.107278992', '0.785976985', '0.106744022', 'Kuranov1996'), +(318, NULL, NULL, NULL, '0.114607608', '0.779524663', '0.105867728', 'Kuranov1996'), +(319, NULL, NULL, NULL, '0.039709741', '0.845466878', '0.114823381', 'Kuranov1996'), +(320, NULL, NULL, NULL, '0.052653897', '0.834070474', '0.113275629', 'Kuranov1996'), +(321, NULL, NULL, NULL, '0.059650165', '0.827910761', '0.112439074', 'Kuranov1996'), +(322, NULL, NULL, NULL, '0.070837716', '0.818060923', '0.111101362', 'Kuranov1996'), +(323, NULL, NULL, NULL, '0.077125446', '0.812525026', '0.110349528', 'Kuranov1996'), +(324, NULL, NULL, NULL, '0.082264651', '0.808000323', '0.109735025', 'Kuranov1996'), +(325, NULL, NULL, NULL, '0.090050331', '0.80114559', '0.10880408', 'Kuranov1996'), +(326, NULL, NULL, NULL, '0.096386563', '0.795566991', '0.108046447', 'Kuranov1996'), +(327, NULL, NULL, NULL, '0', '0.880428464', '0.119571536', 'Kuranov1996'), +(328, NULL, NULL, NULL, '0.022748183', '0.860400316', '0.116851501', 'Kuranov1996'), +(329, NULL, NULL, NULL, '0.029218964', '0.854703256', '0.11607778', 'Kuranov1996'), +(330, NULL, NULL, NULL, '0.042738127', '0.8428006', '0.114461273', 'Kuranov1996'), +(331, NULL, NULL, NULL, '0.05210225', '0.83455616', '0.11334159', 'Kuranov1996'), +(332, NULL, NULL, NULL, '0.06123187', '0.826518183', '0.112249947', 'Kuranov1996'), +(333, NULL, NULL, NULL, '0.068426638', '0.820183704', '0.111389658', 'Kuranov1996'), +(334, NULL, NULL, NULL, '0.077317763', '0.812355705', '0.110326532', 'Kuranov1996'), +(335, NULL, NULL, NULL, '0', '0.880428464', '0.119571536', 'Kuranov1996'), +(336, NULL, NULL, NULL, '0.01241627', '0.869496827', '0.118086904', 'Kuranov1996'), +(337, NULL, NULL, NULL, '0.025195183', '0.858245908', '0.116558909', 'Kuranov1996'), +(338, NULL, NULL, NULL, '0.029545218', '0.854416013', '0.116038769', 'Kuranov1996'), +(339, NULL, NULL, NULL, '0.044302932', '0.841422902', '0.114274166', 'Kuranov1996'), +(340, NULL, NULL, NULL, '0.049794071', '0.836588347', '0.113617583', 'Kuranov1996'); +CREATE CACHED TABLE PUBLIC.CO2WATERMDEA2( + ID INT DEFAULT '0', + TEMPERATURE VARCHAR(50) DEFAULT NULL, + PRESSURE VARCHAR(50) DEFAULT NULL, + PRESSURECO2 VARCHAR(255) DEFAULT NULL, + X1 VARCHAR(50) DEFAULT NULL, + X2 VARCHAR(50) DEFAULT NULL, + X3 VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 340 +/- SELECT COUNT(*) FROM PUBLIC.CO2WATERMDEA2; +INSERT INTO PUBLIC.CO2WATERMDEA2(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(12, '297.71', NULL, '0.0159', '0.011267023', '0.944548573', '0.044184404', 'Lemoine2000'), +(13, '297.71', NULL, '0.0164', '0.011594564', '0.94423567', '0.044169767', 'Lemoine2000'), +(14, '313.15', NULL, '0.000056', '0.000265242', '0.955601336', '0.044133422', 'Austgen1991'), +(15, '313.15', NULL, '0.000151', '0.000516231', '0.955361426', '0.044122343', 'Austgen1991'), +(16, '313.15', NULL, '0.000452', '0.00094822', '0.954948507', '0.044103272', 'Austgen1991'), +(17, '313.15', NULL, '0.00177', '0.00195621', '0.953985016', '0.044058774', 'Austgen1991'), +(18, '313.15', NULL, '0.00419', '0.003256103', '0.952742507', '0.044001391', 'Austgen1991'), +(19, '313.15', NULL, '0.00887', '0.004963639', '0.95111035', '0.043926011', 'Austgen1991'), +(20, '313.15', NULL, '0.0695', '0.015729177', '0.940820058', '0.043450765', 'Austgen1991'), +(21, '313.15', NULL, '0.928', '0.035838092', '0.921598854', '0.042563054', 'Austgen1991'), +(22, '313.15', NULL, '0.000102', '0.000398093', '0.872820743', '0.126781164', 'Austgen1991'), +(23, '313.15', NULL, '0.00118', '0.001772496', '0.871620658', '0.126606846', 'Austgen1991'), +(24, '313.15', NULL, '0.00585', '0.004633156', '0.86912282', '0.126244024', 'Austgen1991'), +(25, '313.15', NULL, '0.0304', '0.013142303', '0.861692902', '0.125164795', 'Austgen1991'), +(26, '313.15', NULL, '0.936', '0.078429383', '0.804686291', '0.116884326', 'Austgen1991'), +(27, '313.15', NULL, '0.936', '0.076378202', '0.806477317', '0.117144481', 'Austgen1991'), +(28, '323.15', NULL, '0.01051', '0.000536518', '0.991573517', '0.007889965', 'Rho1997'), +(29, '323.15', NULL, '0.02051', '0.000118004', '0.991988727', '0.007893269', 'Rho1997'), +(30, '323.15', NULL, '0.0275', '0.001871364', '0.990249208', '0.007879428', 'Rho1997'), +(31, '323.15', NULL, '0.04249', '0.002647005', '0.98947969', '0.007873305', 'Rho1997'), +(32, '323.15', NULL, '0.06847', '0.003372829', '0.988759596', '0.007867575', 'Rho1997'), +(33, '323.15', NULL, '0.08945', '0.003946463', '0.988190491', '0.007863046', 'Rho1997'), +(34, '323.15', NULL, '0.1184', '0.004389558', '0.987750894', '0.007859549', 'Rho1997'), +(35, '323.15', NULL, '0.1594', '0.004922159', '0.987222497', '0.007855344', 'Rho1997'), +(36, '323.15', NULL, '0.2063', '0.005372977', '0.986775238', '0.007851785', 'Rho1997'), +(37, '323.15', NULL, '0.01141', '0.001689366', '0.96085241', '0.037458224', 'Rho1997'), +(38, '323.15', NULL, '0.0334', '0.004426629', '0.958217853', '0.037355518', 'Rho1997'), +(39, '323.15', NULL, '0.05738', '0.008272057', '0.954516712', '0.037211231', 'Rho1997'), +(40, '323.15', NULL, '0.1133', '0.012479571', '0.95046707', '0.037053359', 'Rho1997'), +(41, '323.15', NULL, '0.1942', '0.015994384', '0.947084139', '0.036921477', 'Rho1997'), +(42, '323.15', NULL, '0.2542', '0.018173039', '0.94498723', '0.03683973', 'Rho1997'), +(43, '323.15', NULL, '0.3971', '0.021654694', '0.941636213', '0.036709093', 'Rho1997'), +(44, '323.15', NULL, '0.5549', '0.022436997', '0.940883263', '0.03667974', 'Rho1997'), +(45, '323.15', NULL, '0.7218', '0.02612346', '0.937335122', '0.036541418', 'Rho1997'), +(46, '323.15', NULL, '1.06', '0.028636506', '0.93491637', '0.036447124', 'Rho1997'), +(47, '323.15', NULL, '1.468', '0.030830092', '0.93280509', '0.036364817', 'Rho1997'), +(48, '323.15', NULL, '0.00775', '0.001966056', '0.866963549', '0.131070395', 'Rho1997'), +(49, '323.15', NULL, '0.02474', '0.005771224', '0.863658108', '0.130570668', 'Rho1997'), +(50, '323.15', NULL, '0.04872', '0.009624779', '0.860310635', '0.130064586', 'Rho1997'), +(51, '323.15', NULL, '0.1166', '0.01697653', '0.853924379', '0.129099091', 'Rho1997'), +(52, '323.15', NULL, '0.1736', '0.024544945', '0.847349913', '0.128105142', 'Rho1997'), +(53, '323.15', NULL, '0.2445', '0.030802568', '0.841914096', '0.127283337', 'Rho1997'), +(54, '323.15', NULL, '0.3874', '0.0402093', '0.833742736', '0.126047964', 'Rho1997'), +(55, '323.15', NULL, '0.5303', '0.048175675', '0.826822574', '0.125001751', 'Rho1997'), +(56, '323.15', NULL, '0.7092', '0.056139609', '0.819904533', '0.123955859', 'Rho1997'); +INSERT INTO PUBLIC.CO2WATERMDEA2(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(57, '323.15', NULL, '0.1004', '0.008047469', '0.682434477', '0.309518054', 'Rho1997'), +(58, '323.15', NULL, '0.2483', '0.021614167', '0.673100983', '0.305284849', 'Rho1997'), +(59, '323.15', NULL, '0.4442', '0.032454503', '0.665643148', '0.301902349', 'Rho1997'), +(60, '323.15', NULL, '0.622', '0.043485666', '0.658054028', '0.298460305', 'Rho1997'), +(61, '323.15', NULL, '0.8209', '0.054351846', '0.650578413', '0.295069741', 'Rho1997'), +(62, '323.15', NULL, '1.06', '0.065491946', '0.642914348', '0.291593706', 'Rho1997'), +(63, '323.15', NULL, '1.392', '0.078444243', '0.634003545', '0.287552212', 'Rho1997'), +(64, '348.15', NULL, '0.01139', '0.000467118', '0.991642369', '0.007890513', 'Rho1997'), +(65, '348.15', NULL, '0.02938', '0.00104095', '0.991073067', '0.007885983', 'Rho1997'), +(66, '348.15', NULL, '0.05735', '0.001588155', '0.990530181', '0.007881663', 'Rho1997'), +(67, '348.15', NULL, '0.09432', '0.002091527', '0.990030784', '0.00787769', 'Rho1997'), +(68, '348.15', NULL, '0.1342', '0.002467151', '0.989658124', '0.007874724', 'Rho1997'), +(69, '348.15', NULL, '0.1922', '0.002987686', '0.989141699', '0.007870615', 'Rho1997'), +(70, '348.15', NULL, '0.2801', '0.003622112', '0.988512281', '0.007865607', 'Rho1997'), +(71, '348.15', NULL, '0.397', '0.004208766', '0.987930258', '0.007860976', 'Rho1997'), +(72, '348.15', NULL, '0.04526', '0.002656956', '0.959921125', '0.037421919', 'Rho1997'), +(73, '348.15', NULL, '0.09922', '0.004698043', '0.957956623', '0.037345334', 'Rho1997'), +(74, '348.15', NULL, '0.1801', '0.007219193', '0.955530071', '0.037250736', 'Rho1997'), +(75, '348.15', NULL, '0.263', '0.009031685', '0.953785586', '0.037182729', 'Rho1997'), +(76, '348.15', NULL, '0.271', '0.009388971', '0.953441706', '0.037169323', 'Rho1997'), +(77, '348.15', NULL, '0.36', '0.01078617', '0.952096932', '0.037116898', 'Rho1997'), +(78, '348.15', NULL, '0.4839', '0.012651519', '0.950301574', '0.037046907', 'Rho1997'), +(79, '348.15', NULL, '0.6128', '0.014323963', '0.948691883', '0.036984154', 'Rho1997'), +(80, '348.15', NULL, '0.7966', '0.016357559', '0.946734591', '0.03690785', 'Rho1997'), +(81, '348.15', NULL, '1.047', '0.018509307', '0.94466358', '0.036827113', 'Rho1997'), +(82, '348.15', NULL, '1.325', '0.020403282', '0.94284067', '0.036756048', 'Rho1997'), +(83, '348.15', NULL, '1.734', '0.022730934', '0.940600355', '0.036668711', 'Rho1997'), +(84, '348.15', NULL, '0.03624', '0.002123006', '0.86682721', '0.131049783', 'Rho1997'), +(85, '348.15', NULL, '0.0792', '0.004367219', '0.864877727', '0.130755054', 'Rho1997'), +(86, '348.15', NULL, '0.09721', '0.005485544', '0.86390627', '0.130608186', 'Rho1997'), +(87, '348.15', NULL, '0.1371', '0.007002958', '0.862588136', '0.130408906', 'Rho1997'), +(88, '348.15', NULL, '0.2131', '0.010011067', '0.859975078', '0.130013856', 'Rho1997'), +(89, '348.15', NULL, '0.311', '0.013090553', '0.857300016', '0.129609431', 'Rho1997'), +(90, '348.15', NULL, '0.4539', '0.017166855', '0.853759049', '0.129074096', 'Rho1997'), +(91, '348.15', NULL, '0.6188', '0.021285106', '0.850181642', '0.128533252', 'Rho1997'), +(92, '348.15', NULL, '0.7886', '0.024907197', '0.847035235', '0.128057568', 'Rho1997'), +(93, '348.15', NULL, '0.1743', '0.005554298', '0.684149706', '0.310295996', 'Rho1997'), +(94, '348.15', NULL, '0.3921', '0.010069718', '0.681043229', '0.308887053', 'Rho1997'), +(95, '348.15', NULL, '0.7209', '0.016117498', '0.676882532', '0.30699997', 'Rho1997'), +(96, '348.15', NULL, '1.121', '0.022867044', '0.672239041', '0.304893915', 'Rho1997'), +(97, '348.15', NULL, '1.513', '0.028848229', '0.66812416', '0.303027612', 'Rho1997'), +(98, '348.15', NULL, '1.842', '0.033271704', '0.665080938', '0.301647359', 'Rho1997'), +(99, '348.15', NULL, '2.207', '0.038146067', '0.661727517', '0.300126415', 'Rho1997'), +(100, '348.15', NULL, '2.683', '0.044141824', '0.657602611', '0.298255565', 'Rho1997'), +(101, '373.15', NULL, '0.01841', '0.00023677', '0.991870899', '0.007892332', 'Rho1997'), +(102, '373.15', NULL, '0.03939', '0.000353535', '0.991755055', '0.00789141', 'Rho1997'); +INSERT INTO PUBLIC.CO2WATERMDEA2(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(103, '373.15', NULL, '0.07336', '0.000713915', '0.99139752', '0.007888565', 'Rho1997'), +(104, '373.15', NULL, '0.1033', '0.000943256', '0.99116999', '0.007886754', 'Rho1997'), +(105, '373.15', NULL, '0.1473', '0.00116304', '0.99095194', '0.007885019', 'Rho1997'), +(106, '373.15', NULL, '0.2682', '0.001791138', '0.990328801', '0.007880061', 'Rho1997'), +(107, '373.15', NULL, '0.03314', '0.000974611', '0.961540346', '0.037485043', 'Rho1997'), +(108, '373.15', NULL, '0.09609', '0.002048228', '0.960507012', '0.037444759', 'Rho1997'), +(109, '373.15', NULL, '0.205', '0.003279853', '0.959321601', '0.037398547', 'Rho1997'), +(110, '373.15', NULL, '0.3029', '0.004348523', '0.958293028', '0.037358449', 'Rho1997'), +(111, '373.15', NULL, '0.4837', '0.005915724', '0.956784632', '0.037299645', 'Rho1997'), +(112, '373.15', NULL, '0.6806', '0.007215495', '0.95553363', '0.037250875', 'Rho1997'), +(113, '373.15', NULL, '0.9614', '0.008773689', '0.954033901', '0.037192409', 'Rho1997'), +(114, '373.15', NULL, '1.327', '0.010591534', '0.952284265', '0.037124201', 'Rho1997'), +(115, '373.15', NULL, '1.672', '0.012080569', '0.950851102', '0.03706833', 'Rho1997'), +(116, '373.15', NULL, '0.05003', '0.001141255', '0.86768003', '0.131178715', 'Rho1997'), +(117, '373.15', NULL, '0.1139', '0.00214916', '0.866804491', '0.131046349', 'Rho1997'), +(118, '373.15', NULL, '0.2029', '0.003415967', '0.865704052', '0.130879981', 'Rho1997'), +(119, '373.15', NULL, '0.3038', '0.00457547', '0.864696825', '0.130727705', 'Rho1997'), +(120, '373.15', NULL, '0.4527', '0.006212406', '0.863274866', '0.130512728', 'Rho1997'), +(121, '373.15', NULL, '0.6845', '0.008541569', '0.861251589', '0.130206843', 'Rho1997'), +(122, '373.15', NULL, '0.9583', '0.010744184', '0.85933824', '0.129917576', 'Rho1997'), +(123, '373.15', NULL, '1.403', '0.01398513', '0.856522922', '0.129491947', 'Rho1997'), +(124, '373.15', NULL, '0.2171', '0.019668846', '0.674439308', '0.305891846', 'Rho1997'), +(125, '373.15', NULL, '0.4729', '0.00391617', '0.685276691', '0.310807139', 'Rho1997'), +(126, '373.15', NULL, '0.8346', '0.006263509', '0.68366179', '0.310074701', 'Rho1997'), +(127, '373.15', NULL, '1.129', '0.008661144', '0.682012287', '0.30932657', 'Rho1997'), +(128, '373.15', NULL, '1.549', '0.010558719', '0.68070681', '0.308734471', 'Rho1997'), +(129, '373.15', NULL, '1.888', '0.012631595', '0.679280732', '0.308087673', 'Rho1997'), +(130, '373.15', NULL, '2.355', '0.015119716', '0.677568977', '0.307311307', 'Rho1997'), +(131, '313.16', '2.746', '0.00002', '0.000144288', '0.956655603', '0.043200109', 'GPA'), +(132, '313.16', '2.321', '0.000414', '0.00081162', '0.956017104', '0.043171276', 'GPA'), +(133, '313.16', '1.963', '0.0271', '0.009839677', '0.947379116', '0.042781206', 'GPA'), +(134, '313.16', '1.792', '1.72', '0.039108639', '0.91937476', '0.041516602', 'GPA'), +(135, '313.16', '8.066', '7.99', '0.043397845', '0.915270875', '0.041331281', 'GPA'), +(136, '313.16', '9.94', '9.87', '0.044582504', '0.9141374', '0.041280096', 'GPA'), +(137, '313.16', '21.68', '21.61', '0.04811894', '0.91075376', '0.041127299', 'GPA'), +(138, '313.16', '22.73', '22.66', '0.048510262', '0.910379346', '0.041110392', 'GPA'), +(139, '313.16', '52.73', '52.65', '0.054727943', '0.904430308', '0.040841749', 'GPA'), +(140, '343.16', '2.386', '0.000656', '0.000305376', '0.956501476', '0.043193149', 'GPA'), +(141, '343.16', '2.657', '0.00282', '0.000841814', '0.955988214', '0.043169971', 'GPA'), +(142, '343.16', '2.653', '0.179', '0.008779537', '0.948393452', '0.042827011', 'GPA'), +(143, '343.16', '1.974', '1.67', '0.028500971', '0.929524109', '0.04197492', 'GPA'), +(144, '343.16', '8.455', '8.15', '0.038509872', '0.919947656', '0.041542472', 'GPA'), +(145, '343.16', '23.28', '22.97', '0.044976738', '0.913760199', '0.041263062', 'GPA'), +(146, '343.16', '51.44', '51.14', '0.050072338', '0.908884761', '0.0410429', 'GPA'), +(147, '373.16', '5.074', '0.00113', '0.000158974', '0.956641552', '0.043199474', 'GPA'), +(148, '373.16', '4.401', '0.0142', '0.000733969', '0.956091401', '0.043174631', 'GPA'); +INSERT INTO PUBLIC.CO2WATERMDEA2(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(149, '373.16', '2.414', '1.43', '0.01422563', '0.943182665', '0.042591705', 'GPA'), +(150, '373.16', '9.275', '8.29', '0.026989816', '0.930969973', '0.042040212', 'GPA'), +(151, '373.16', '23.68', '22.7', '0.036428356', '0.921939237', '0.041632407', 'GPA'), +(152, '373.16', '52.51', '51.52', '0.044187943', '0.914514913', '0.041297143', 'GPA'), +(153, '393.16', '5.004', '0.0109', '0.000304512', '0.956502302', '0.043193186', 'GPA'), +(154, '393.16', '7.147', '0.0296', '0.000561367', '0.956256545', '0.043182088', 'GPA'), +(155, '393.16', '3.04', '1.11', '0.007929789', '0.949206485', '0.042863726', 'GPA'), +(156, '393.16', '4.042', '2.11', '0.010305421', '0.946933496', '0.042761083', 'GPA'), +(157, '393.16', '9.676', '7.74', '0.018323136', '0.939262197', '0.042414667', 'GPA'), +(158, '393.16', '24.76', '22.83', '0.029071536', '0.928978196', '0.041950268', 'GPA'), +(159, '393.16', '52.34', '50.4', '0.037550291', '0.920865777', '0.041583932', 'GPA'), +(160, '313.16', '1.947', '0.000112', '0.000337393', '0.868381384', '0.131281223', 'GPA'), +(161, '313.16', '1.959', '0.000105', '0.000406943', '0.868320967', '0.131272089', 'GPA'), +(162, '313.16', '1.967', '0.00219', '0.002332143', '0.866648596', '0.131019261', 'GPA'), +(163, '313.16', '2.278', '0.00275', '0.003376758', '0.865741166', '0.130882077', 'GPA'), +(164, '313.16', '1.961', '0.057', '0.0200755', '0.851235394', '0.128689106', 'GPA'), +(165, '313.16', '1.967', '0.105', '0.033262806', '0.839779918', '0.126957276', 'GPA'), +(166, '313.16', '1.797', '1.73', '0.092591869', '0.788242276', '0.119165855', 'GPA'), +(167, '313.16', '8.07', '8.01', '0.113817999', '0.769803679', '0.116378322', 'GPA'), +(168, '313.16', '21.48', '21.42', '0.123205666', '0.761648853', '0.115145482', 'GPA'), +(169, '313.16', '53.33', '53.27', '0.132198771', '0.753836772', '0.113964458', 'GPA'), +(170, '343.16', '2.66', '0.00082', '0.000294083', '0.868419007', '0.131286911', 'GPA'), +(171, '343.16', '2.312', '0.000949', '0.00030852', '0.868406465', '0.131285015', 'GPA'), +(172, '343.16', '1.995', '0.0161', '0.002188337', '0.866773516', '0.131038147', 'GPA'), +(173, '343.16', '1.967', '0.359', '0.0172933', '0.85365222', '0.129054479', 'GPA'), +(174, '343.16', '1.961', '0.714', '0.030184678', '0.842453809', '0.127361512', 'GPA'), +(175, '343.16', '1.947', '1.68', '0.046338823', '0.828421117', '0.125240061', 'GPA'), +(176, '343.16', '8.221', '7.95', '0.087043413', '0.793062078', '0.119894509', 'GPA'), +(177, '343.16', '23.01', '22.74', '0.108422464', '0.774490643', '0.117086894', 'GPA'), +(178, '343.16', '51.54', '51.27', '0.1201664', '0.764288985', '0.115544615', 'GPA'), +(179, '373.16', '3.19', '0.00403', '0.000307207', '0.868407606', '0.131285187', 'GPA'), +(180, '373.16', '3.346', '0.0837', '0.002279855', '0.866694017', '0.131026128', 'GPA'), +(181, '373.16', '3.644', '0.094', '0.002502042', '0.866501009', '0.130996949', 'GPA'), +(182, '373.16', '4.381', '1.828', '0.01754688', '0.853431942', '0.129021178', 'GPA'), +(183, '373.16', '2.344', '1.464', '0.014495257', '0.856082809', '0.129421934', 'GPA'), +(184, '373.16', '9.139', '8.259', '0.044304068', '0.830188656', '0.125507276', 'GPA'), +(185, '373.16', '23.41', '22.53', '0.072701451', '0.805520574', '0.121777975', 'GPA'), +(186, '373.16', '52.66', '51.78', '0.094641737', '0.786461608', '0.118896655', 'GPA'), +(187, '393.16', '3.001', '0.00448', '0.000156253', '0.868538736', '0.131305011', 'GPA'), +(188, '393.16', '4.918', '0.00595', '0.000189073', '0.868510226', '0.131300701', 'GPA'), +(189, '393.16', '4.237', '0.0108', '0.000262582', '0.86844637', '0.131291048', 'GPA'), +(190, '393.16', '5.077', '0.162', '0.001625789', '0.867262187', '0.131112024', 'GPA'), +(191, '393.16', '5.048', '0.175', '0.00171741', '0.867182599', '0.131099992', 'GPA'), +(192, '393.16', '3.184', '1.46', '0.007649838', '0.86202925', '0.130320912', 'GPA'), +(193, '393.16', '6.794', '3.58', '0.012437479', '0.857870348', '0.129692173', 'GPA'), +(194, '393.16', '9.534', '7.81', '0.022716581', '0.848941155', '0.128342264', 'GPA'); +INSERT INTO PUBLIC.CO2WATERMDEA2(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(195, '393.16', '24.38', '22.65', '0.044543902', '0.829980318', '0.12547578', 'GPA'), +(196, '393.16', '53.61', '51.88', '0.067820135', '0.809760849', '0.122419016', 'GPA'), +(197, '313.15', NULL, '0.0000007', '2.55343E-05', '0.956769226', '0.04320524', 'Rogers, 1998'), +(198, '313.15', NULL, '0.0000014', '4.49326E-05', '0.956750666', '0.043204401', 'Rogers, 1998'), +(199, '313.15', NULL, '0.0000028', '6.13492E-05', '0.956734959', '0.043203692', 'Rogers, 1998'), +(200, '313.15', NULL, '0.0000041', '8.81332E-05', '0.956709332', '0.043202535', 'Rogers, 1998'), +(201, '313.15', NULL, '0.0000117', '0.000137377', '0.956662215', '0.043200407', 'Rogers, 1998'), +(202, '313.15', NULL, '0.000031', '0.000239306', '0.956564691', '0.043196003', 'Rogers, 1998'), +(203, '313.15', NULL, '0.0000386', '0.000253989', '0.956550642', '0.043195369', 'Rogers, 1998'), +(204, '313.15', NULL, '0.0001551', '0.000513891', '0.956301969', '0.04318414', 'Rogers, 1998'), +(205, '313.15', NULL, '0.0002703', '0.000745186', '0.956080668', '0.043174146', 'Rogers, 1998'), +(206, '313.15', NULL, '0.000669', '0.001136761', '0.955706011', '0.043157228', 'Rogers, 1998'), +(207, '313.15', NULL, '0.002841', '0.002593844', '0.954311883', '0.043094272', 'Rogers, 1998'), +(208, '313.15', NULL, '0.002958', '0.002623931', '0.954283097', '0.043092972', 'Rogers, 1998'), +(209, '313.15', NULL, '0.00664', '0.004400558', '0.952583231', '0.043016211', 'Rogers, 1998'), +(210, '313.15', NULL, '0.00906', '0.005059656', '0.95195261', '0.042987734', 'Rogers, 1998'), +(211, '313.15', NULL, '0.0000007', '3.2699E-05', '0.868646064', '0.131321237', 'Rogers, 1998'), +(212, '313.15', NULL, '0.0000034', '7.05168E-05', '0.868613213', '0.131316271', 'Rogers, 1998'), +(213, '313.15', NULL, '0.0000041', '8.28595E-05', '0.868602491', '0.13131465', 'Rogers, 1998'), +(214, '313.15', NULL, '0.00002', '0.000179884', '0.868518208', '0.131301908', 'Rogers, 1998'), +(215, '313.15', NULL, '0.0000234', '0.000188417', '0.868510796', '0.131300787', 'Rogers, 1998'), +(216, '313.15', NULL, '0.0000634', '0.000324269', '0.868392785', '0.131282947', 'Rogers, 1998'), +(217, '313.15', NULL, '0.0001717', '0.000511907', '0.868229788', '0.131258305', 'Rogers, 1998'), +(218, '313.15', NULL, '0.0001917', '0.00057881', '0.868171671', '0.131249519', 'Rogers, 1998'), +(219, '313.15', NULL, '0.0004213', '0.000876486', '0.867913088', '0.131210426', 'Rogers, 1998'), +(220, '313.15', NULL, '0.0008763', '0.00133118', '0.867518107', '0.131150713', 'Rogers, 1998'), +(221, '313.15', NULL, '0.001682', '0.001848268', '0.867068926', '0.131082807', 'Rogers, 1998'), +(222, '313.15', NULL, '0.001965', '0.002064108', '0.866881431', '0.131054461', 'Rogers, 1998'), +(223, '313.15', NULL, '0.005564', '0.003860456', '0.86532099', '0.130818555', 'Rogers, 1998'), +(224, '313.15', NULL, '0.010018', '0.004842051', '0.864468302', '0.130689646', 'Rogers, 1998'), +(225, '323.15', NULL, '0.0000028', '4.53646E-05', '0.956750253', '0.043204383', 'Rogers, 1998'), +(226, '323.15', NULL, '0.0000076', '8.03573E-05', '0.956716772', '0.043202871', 'Rogers, 1998'), +(227, '323.15', NULL, '0.0000269', '0.000163725', '0.956637006', '0.043199269', 'Rogers, 1998'), +(228, '323.15', NULL, '0.000233', '0.000475476', '0.956338725', '0.043185799', 'Rogers, 1998'), +(229, '323.15', NULL, '0.001551', '0.001291496', '0.955557962', '0.043150542', 'Rogers, 1998'), +(230, '323.15', NULL, '0.008019', '0.003093051', '0.953834246', '0.043072703', 'Rogers, 1998'), +(231, '313.09', '1.765', NULL, '0.053151768', '0.88388775', '0.062960482', 'Kamps, 2001'), +(232, '313.1', '2.293', NULL, '0.055242827', '0.881935735', '0.062821438', 'Kamps, 2001'), +(233, '313.15', '7.09', NULL, '0.061520205', '0.876075771', '0.062404025', 'Kamps, 2001'), +(234, '313.11', '36.9', NULL, '0.071253085', '0.866990076', '0.061756839', 'Kamps, 2001'), +(235, '313.13', '64.69', NULL, '0.076331256', '0.862249577', '0.061419167', 'Kamps, 2001'), +(236, '313.11', '2.28', NULL, '0.091073954', '0.794507503', '0.114418543', 'Kamps, 2001'), +(237, '313.18', '3.759', NULL, '0.096916453', '0.789400477', '0.11368307', 'Kamps, 2001'); +INSERT INTO PUBLIC.CO2WATERMDEA2(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(238, '313.13', '6.5', NULL, '0.104203258', '0.783030958', '0.112765784', 'Kamps, 2001'), +(239, '313.14', '11.47', NULL, '0.108741879', '0.779063673', '0.112194448', 'Kamps, 2001'), +(240, '313.14', '14.56', NULL, '0.110477197', '0.777546803', '0.111976', 'Kamps, 2001'), +(241, '313.15', '30.82', NULL, '0.117694792', '0.771237782', '0.111067426', 'Kamps, 2001'), +(242, '313.15', '60.15', NULL, '0.123491556', '0.766170733', '0.110337711', 'Kamps, 2001'), +(243, '313.13', '75.65', NULL, '0.126865973', '0.763221099', '0.109912928', 'Kamps, 2001'), +(244, '353.17', '2.931', NULL, '0.038139208', '0.840778653', '0.12108214', 'Kamps, 2001'), +(245, '353.17', '4.216', NULL, '0.047802339', '0.832331948', '0.119865714', 'Kamps, 2001'), +(246, '353.17', '7.86', NULL, '0.06515598', '0.817162838', '0.117681181', 'Kamps, 2001'), +(247, '353.16', '13.43', NULL, '0.079626307', '0.804514083', '0.11585961', 'Kamps, 2001'), +(248, '353.17', '19.99', NULL, '0.088726194', '0.796559719', '0.114714087', 'Kamps, 2001'), +(249, '353.18', '26.14', NULL, '0.094353483', '0.791640811', '0.114005705', 'Kamps, 2001'), +(250, '353.15', '39.2', NULL, '0.101236552', '0.785624205', '0.113139242', 'Kamps, 2001'), +(251, '353.16', '54.03', NULL, '0.106308574', '0.781190666', '0.11250076', 'Kamps, 2001'), +(252, '393.11', '6.85', NULL, '0.015609911', '0.860471889', '0.1239182', 'Kamps, 2001'), +(253, '393.17', '11.1', NULL, '0.024830968', '0.852411609', '0.122757424', 'Kamps, 2001'), +(254, '393.12', '21', NULL, '0.039157954', '0.839888149', '0.120953897', 'Kamps, 2001'), +(255, '393.16', '31.37', NULL, '0.049512584', '0.830836994', '0.119650422', 'Kamps, 2001'), +(256, '393.12', '40.46', NULL, '0.056783161', '0.82448166', '0.118735179', 'Kamps, 2001'), +(257, '393.11', '53.1', NULL, '0.065348609', '0.816994459', '0.117656932', 'Kamps, 2001'), +(258, '393.12', '61.17', NULL, '0.069743631', '0.813152696', '0.117103673', 'Kamps, 2001'), +(259, '313.24', '0.74', NULL, '0.03413831', '0.922394698', '0.043466992', 'Kuranov1996'), +(260, '313.12', '2.149', NULL, '0.040131564', '0.91667116', '0.043197275', 'Kuranov1996'), +(261, '313.13', '3.47', NULL, '0.042020306', '0.914867419', '0.043112276', 'Kuranov1996'), +(262, '313.15', '7.192', NULL, '0.044818928', '0.912194743', '0.042986328', 'Kuranov1996'), +(263, '313.15', '7.098', NULL, '0.044823047', '0.91219081', '0.042986143', 'Kuranov1996'), +(264, '313.25', '14.079', NULL, '0.048266184', '0.908902625', '0.04283119', 'Kuranov1996'), +(265, '313.19', '17.652', NULL, '0.04950356', '0.907720935', '0.042775504', 'Kuranov1996'), +(266, '313.2', '25.273', NULL, '0.052475578', '0.904882669', '0.042641754', 'Kuranov1996'), +(267, '313.11', '25.185', NULL, '0.052518132', '0.90484203', '0.042639839', 'Kuranov1996'), +(268, '313.13', '27.852', NULL, '0.053313801', '0.904082168', '0.042604031', 'Kuranov1996'), +(269, '313.16', '35.982', NULL, '0.055916173', '0.901596912', '0.042486915', 'Kuranov1996'), +(270, '333.13', '1.395', NULL, '0.029788081', '0.927762979', '0.04244894', 'Kuranov1996'), +(271, '333.16', '3.217', NULL, '0.036154103', '0.921675484', '0.042170413', 'Kuranov1996'), +(272, '333.16', '5.895', NULL, '0.039598922', '0.918381384', '0.042019694', 'Kuranov1996'), +(273, '333.15', '8.301', NULL, '0.041363683', '0.916693835', '0.041942482', 'Kuranov1996'), +(274, '333.15', '13.916', NULL, '0.044201738', '0.913979951', '0.041818311', 'Kuranov1996'), +(275, '333.15', '18.671', NULL, '0.045886303', '0.91236909', '0.041744607', 'Kuranov1996'), +(276, '333.15', '40.248', NULL, '0.051989031', '0.90653337', '0.041477599', 'Kuranov1996'), +(277, '373.16', '2.269', NULL, '0.012835553', '0.943973795', '0.043190651', 'Kuranov1996'), +(278, '373.14', '4.686', NULL, '0.021372331', '0.93581052', '0.042817148', 'Kuranov1996'), +(279, '373.14', '8.596', NULL, '0.028393756', '0.929096299', '0.042509945', 'Kuranov1996'), +(280, '373.15', '14.744', NULL, '0.034081189', '0.923657704', '0.042261107', 'Kuranov1996'), +(281, '373.15', '15.977', NULL, '0.034849122', '0.92292337', '0.042227509', 'Kuranov1996'); +INSERT INTO PUBLIC.CO2WATERMDEA2(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(282, '373.15', '18.372', NULL, '0.036347983', '0.921490087', '0.04216193', 'Kuranov1996'), +(283, '373.15', '25.554', NULL, '0.039665166', '0.918318038', '0.042016796', 'Kuranov1996'), +(284, '373.15', '37.831', NULL, '0.043660106', '0.914497885', '0.041842008', 'Kuranov1996'), +(285, '373.16', '40.808', NULL, '0.044421088', '0.913770198', '0.041808714', 'Kuranov1996'), +(286, '393.17', '1.909', NULL, '0', '0.956247764', '0.043752236', 'Kuranov1996'), +(287, '393.15', '3.717', NULL, '0.009063481', '0.947580831', '0.043355688', 'Kuranov1996'), +(288, '393.14', '6.964', NULL, '0.015990405', '0.940956975', '0.04305262', 'Kuranov1996'), +(289, '393.13', '10.735', NULL, '0.021032577', '0.936135409', '0.042832013', 'Kuranov1996'), +(290, '393.14', '19.87', NULL, '0.028758063', '0.928747931', '0.042494006', 'Kuranov1996'), +(291, '393.14', '36.732', NULL, '0.036637615', '0.921213127', '0.042149258', 'Kuranov1996'), +(292, '393.13', '50.367', NULL, '0.040934456', '0.917104282', '0.041961262', 'Kuranov1996'), +(293, '413.15', '3.464', NULL, '0', '0.956247764', '0.043752236', 'Kuranov1996'), +(294, '413.16', '6.969', NULL, '0.00796025', '0.948635794', '0.043403957', 'Kuranov1996'), +(295, '413.16', '10.798', NULL, '0.012395718', '0.944394387', '0.043209895', 'Kuranov1996'), +(296, '413.14', '18.931', NULL, '0.018939406', '0.938137', '0.042923594', 'Kuranov1996'), +(1, '297.7', NULL, '0.0002', '0.00076358', '0.95458264', '0.044653781', 'Lemoine2000'), +(2, '297.7', NULL, '0.00062', '0.001525994', '0.953854296', '0.04461971', 'Lemoine2000'), +(3, '297.72', NULL, '0.00114', '0.002282798', '0.953131312', '0.04458589', 'Lemoine2000'), +(4, '297.71', NULL, '0.00165', '0.002887415', '0.952553714', '0.044558871', 'Lemoine2000'), +(5, '297.71', NULL, '0.00256', '0.003797403', '0.951684392', '0.044518205', 'Lemoine2000'), +(6, '297.71', NULL, '0.00304', '0.004320448', '0.95118472', '0.044494832', 'Lemoine2000'), +(7, '297.71', NULL, '0.00402', '0.005006665', '0.950529169', '0.044464166', 'Lemoine2000'), +(8, '297.71', NULL, '0.00477', '0.005753786', '0.949815435', '0.044430779', 'Lemoine2000'), +(9, '297.71', NULL, '0.00546', '0.006045256', '0.94953699', '0.044417754', 'Lemoine2000'), +(10, '297.71', NULL, '0.00716', '0.007174193', '0.948458503', '0.044367304', 'Lemoine2000'), +(11, '297.71', NULL, '0.0108', '0.009042752', '0.946673446', '0.044283802', 'Lemoine2000'), +(297, '413.13', '21.328', NULL, '0.020436363', '0.936705538', '0.042858099', 'Kuranov1996'), +(298, '413.16', '32.247', NULL, '0.026208546', '0.931185901', '0.042605553', 'Kuranov1996'), +(299, '413.15', '39.329', NULL, '0.029124213', '0.928397801', '0.042477986', 'Kuranov1996'), +(300, '313.15', '0.735', NULL, '0.07449422', '0.814841632', '0.110664148', 'Kuranov1996'), +(301, '313.16', '2.023', NULL, '0.093129225', '0.798434843', '0.108435932', 'Kuranov1996'), +(302, '313.15', '2.545', NULL, '0.096037276', '0.795874513', '0.108088212', 'Kuranov1996'), +(303, '313.14', '5.931', NULL, '0.104145771', '0.788735563', '0.107118666', 'Kuranov1996'), +(304, '313.15', '6.738', NULL, '0.104973957', '0.788006405', '0.107019639', 'Kuranov1996'), +(305, '313.13', '16.054', NULL, '0.111732468', '0.782056018', '0.106211513', 'Kuranov1996'), +(306, '313.15', '15.858', NULL, '0.112323701', '0.78153548', '0.106140819', 'Kuranov1996'), +(307, '313.14', '19.732', NULL, '0.114362032', '0.779740876', '0.105897092', 'Kuranov1996'), +(308, '313.14', '28.862', NULL, '0.118628345', '0.775984693', '0.105386963', 'Kuranov1996'), +(309, '313.15', '36.608', NULL, '0.121552049', '0.77341058', '0.105037371', 'Kuranov1996'), +(310, '333.15', '2.054', NULL, '0.074081332', '0.815205151', '0.110713517', 'Kuranov1996'), +(311, '333.15', '3.352', NULL, '0.084594626', '0.805948947', '0.109456427', 'Kuranov1996'), +(312, '333.16', '6.944', NULL, '0.096765062', '0.795233749', '0.108001189', 'Kuranov1996'), +(313, '333.16', '8.523', NULL, '0.099127182', '0.793154072', '0.107718747', 'Kuranov1996'), +(314, '333.13', '11.588', NULL, '0.102654562', '0.790048466', '0.107296972', 'Kuranov1996'); +INSERT INTO PUBLIC.CO2WATERMDEA2(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(315, '333.14', '14.966', NULL, '0.104237599', '0.788654715', '0.107107686', 'Kuranov1996'), +(316, '333.15', '13.566', NULL, '0.104365643', '0.788541981', '0.107092376', 'Kuranov1996'), +(317, '333.14', '17.909', NULL, '0.107278992', '0.785976985', '0.106744022', 'Kuranov1996'), +(318, '333.14', '33.63', NULL, '0.114607608', '0.779524663', '0.105867728', 'Kuranov1996'), +(319, '373.15', '4.397', NULL, '0.039709741', '0.845466878', '0.114823381', 'Kuranov1996'), +(320, '373.14', '6.856', NULL, '0.052653897', '0.834070474', '0.113275629', 'Kuranov1996'), +(321, '373.15', '8.932', NULL, '0.059650165', '0.827910761', '0.112439074', 'Kuranov1996'), +(322, '373.17', '13.344', NULL, '0.070837716', '0.818060923', '0.111101362', 'Kuranov1996'), +(323, '373.15', '17.099', NULL, '0.077125446', '0.812525026', '0.110349528', 'Kuranov1996'), +(324, '373.15', '20.722', NULL, '0.082264651', '0.808000323', '0.109735025', 'Kuranov1996'), +(325, '373.16', '29.238', NULL, '0.090050331', '0.80114559', '0.10880408', 'Kuranov1996'), +(326, '373.14', '38.705', NULL, '0.096386563', '0.795566991', '0.108046447', 'Kuranov1996'), +(327, '393.15', '1.862', NULL, '0', '0.880428464', '0.119571536', 'Kuranov1996'), +(328, '393.12', '5.242', NULL, '0.022748183', '0.860400316', '0.116851501', 'Kuranov1996'), +(329, '393.14', '7.025', NULL, '0.029218964', '0.854703256', '0.11607778', 'Kuranov1996'), +(330, '393.16', '12.053', NULL, '0.042738127', '0.8428006', '0.114461273', 'Kuranov1996'), +(331, '393.14', '16.825', NULL, '0.05210225', '0.83455616', '0.11334159', 'Kuranov1996'), +(332, '393.14', '22.893', NULL, '0.06123187', '0.826518183', '0.112249947', 'Kuranov1996'), +(333, '393.14', '29.055', NULL, '0.068426638', '0.820183704', '0.111389658', 'Kuranov1996'), +(334, '393.13', '38.962', NULL, '0.077317763', '0.812355705', '0.110326532', 'Kuranov1996'), +(335, '413.15', '3.386', NULL, '0', '0.880428464', '0.119571536', 'Kuranov1996'), +(336, '413.16', '6.601', NULL, '0.01241627', '0.869496827', '0.118086904', 'Kuranov1996'), +(337, '413.14', '12.956', NULL, '0.025195183', '0.858245908', '0.116558909', 'Kuranov1996'), +(338, '413.15', '15.467', NULL, '0.029545218', '0.854416013', '0.116038769', 'Kuranov1996'), +(339, '413.16', '27.447', NULL, '0.044302932', '0.841422902', '0.114274166', 'Kuranov1996'), +(340, '413.15', '33.961', NULL, '0.049794071', '0.836588347', '0.113617583', 'Kuranov1996'); +CREATE CACHED TABLE PUBLIC.CO2WATERMDEAPIPERAZINE( + ID INT DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + PRESSURECO2 DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + X1 DOUBLE DEFAULT NULL, + X2 DOUBLE DEFAULT NULL, + X3 DOUBLE DEFAULT NULL, + X4 DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 178 +/- SELECT COUNT(*) FROM PUBLIC.CO2WATERMDEAPIPERAZINE; +INSERT INTO PUBLIC.CO2WATERMDEAPIPERAZINE(ID, PRESSURE, PRESSURECO2, TEMPERATURE, X1, X2, X3, X4, REFERENCE) VALUES +(1, NULL, 0.038346, 343.0, 0.006643986, 0.863657889, 0.126648601, 0.003049524, 'Xu'), +(2, NULL, 0.13074, 343.0, 0.0104164, 0.860378022, 0.126167635, 0.003037943, 'Xu'), +(3, NULL, 0.35951, 343.0, 0.01988128, 0.85214893, 0.124960904, 0.003008887, 'Xu'), +(4, NULL, 0.54509, 343.0, 0.025313458, 0.847426008, 0.124268324, 0.00299221, 'Xu'), +(5, NULL, 0.7677, 343.0, 0.029414302, 0.843860593, 0.123745485, 0.002979621, 'Xu'), +(6, NULL, 0.14058, 343.0, 0.01522015, 0.852143985, 0.124960179, 0.007675687, 'Xu'), +(7, NULL, 0.36859, 343.0, 0.024339668, 0.844252737, 0.123802989, 0.007604606, 'Xu'), +(8, NULL, 0.7677, 343.0, 0.031176433, 0.838336787, 0.122935462, 0.007551318, 'Xu'), +(9, NULL, 0.11365, 343.0, 0.018814291, 0.841868449, 0.123453352, 0.015863907, 'Xu'), +(10, NULL, 0.32254, 343.0, 0.025108784, 0.836467703, 0.122661376, 0.015762137, 'Xu'), +(11, NULL, 0.76574, 343.0, 0.035168328, 0.8278365, 0.121395678, 0.015599494, 'Xu'), +(12, NULL, 0.2118, 323.16, 0.016622173, 0.947860363, 0.031931566, 0.003585898, 'Liu'), +(13, NULL, 0.44, 323.16, 0.020830266, 0.943804258, 0.031794924, 0.003570553, 'Liu'), +(14, NULL, 0.8944, 323.16, 0.02452158, 0.940246266, 0.031675062, 0.003557093, 'Liu'), +(15, NULL, 2.719, 323.16, 0.029819718, 0.935139484, 0.031503024, 0.003537773, 'Liu'), +(16, NULL, 6.694, 323.16, 0.034185454, 0.93093143, 0.031361263, 0.003521853, 'Liu'), +(17, NULL, 0.3543, 343.16, 0.013784917, 0.950595144, 0.032023695, 0.003596244, 'Liu'), +(18, NULL, 0.7129, 343.16, 0.017459709, 0.947053077, 0.03190437, 0.003582844, 'Liu'), +(19, NULL, 1.488, 343.16, 0.022627658, 0.942071783, 0.03173656, 0.003563999, 'Liu'), +(20, NULL, 4.188, 343.16, 0.028457974, 0.936452045, 0.031547242, 0.003542738, 'Liu'), +(21, NULL, 6.888, 343.16, 0.030668872, 0.934321, 0.031475451, 0.003534676, 'Liu'), +(22, NULL, 0.1778, 323.16, 0.017657807, 0.947026579, 0.02797952, 0.007336094, 'Liu'), +(23, NULL, 0.4114, 323.16, 0.021424737, 0.943395072, 0.027872229, 0.007307962, 'Liu'), +(24, NULL, 0.8943, 323.16, 0.024786938, 0.940153743, 0.027776465, 0.007282854, 'Liu'), +(25, NULL, 5.094, 323.16, 0.032554159, 0.932665757, 0.027555236, 0.007224848, 'Liu'), +(26, NULL, 5.869, 323.16, 0.033193046, 0.932049839, 0.027537039, 0.007220077, 'Liu'), +(27, NULL, 0.176, 343.16, 0.012391227, 0.952103823, 0.028129525, 0.007375424, 'Liu'), +(28, NULL, 0.3207, 343.16, 0.015118744, 0.949474362, 0.028051839, 0.007355055, 'Liu'), +(29, NULL, 0.7126, 343.16, 0.019665831, 0.945090744, 0.027922327, 0.007321098, 'Liu'), +(30, NULL, 2.438, 343.16, 0.026561599, 0.938442882, 0.027725918, 0.007269601, 'Liu'), +(31, NULL, 2.963, 343.16, 0.0276165, 0.937425905, 0.027695872, 0.007261723, 'Liu'), +(32, NULL, 0.1673, 303.16, 0.041620541, 0.871124655, 0.07846655, 0.008788254, 'Liu'), +(33, NULL, 0.5424, 303.16, 0.055222543, 0.858761036, 0.077352897, 0.008663524, 'Liu'), +(34, NULL, 0.9747, 303.16, 0.061037707, 0.853475307, 0.076876785, 0.0086102, 'Liu'), +(35, NULL, 2.475, 303.16, 0.06883872, 0.846384531, 0.076238084, 0.008538665, 'Liu'), +(36, NULL, 4.075, 303.16, 0.071200937, 0.84423738, 0.076044679, 0.008517004, 'Liu'), +(37, NULL, 0.2395, 323.16, 0.033184613, 0.878792542, 0.079157235, 0.00886561, 'Liu'), +(38, NULL, 0.4297, 323.16, 0.039777292, 0.872800087, 0.078617465, 0.008805156, 'Liu'), +(39, NULL, 0.9011, 323.16, 0.049581684, 0.863888328, 0.077814738, 0.008715251, 'Liu'), +(40, NULL, 2.001, 323.16, 0.057087979, 0.857065436, 0.077200166, 0.008646419, 'Liu'), +(41, NULL, 4.226, 323.16, 0.063918528, 0.850856769, 0.07664092, 0.008583783, 'Liu'), +(42, NULL, 0.3386, 343.16, 0.025464286, 0.885809978, 0.079789331, 0.008936405, 'Liu'), +(43, NULL, 0.4808, 343.16, 0.028653075, 0.88291151, 0.079528251, 0.008907164, 'Liu'), +(44, NULL, 1.78, 343.16, 0.041034821, 0.871657049, 0.078514506, 0.008793625, 'Liu'), +(45, NULL, 3.68, 343.16, 0.051059696, 0.86254488, 0.077693727, 0.008701697, 'Liu'), +(46, NULL, 5.73, 343.16, 0.059187882, 0.855156717, 0.077028238, 0.008627163, 'Liu'), +(47, NULL, 0.1988, 363.16, 0.013206732, 0.896951554, 0.080792908, 0.009048806, 'Liu'); +INSERT INTO PUBLIC.CO2WATERMDEAPIPERAZINE(ID, PRESSURE, PRESSURECO2, TEMPERATURE, X1, X2, X3, X4, REFERENCE) VALUES +(48, NULL, 0.3754, 363.16, 0.017092201, 0.893419834, 0.080474788, 0.009013176, 'Liu'), +(49, NULL, 0.8254, 363.16, 0.021993312, 0.888964941, 0.080073514, 0.008968234, 'Liu'), +(50, NULL, 3.125, 363.16, 0.035730944, 0.876478039, 0.078948756, 0.008842261, 'Liu'), +(51, NULL, 4.825, 363.16, 0.042706411, 0.870137647, 0.078377645, 0.008778296, 'Liu'), +(52, NULL, 0.156, 303.16, 0.043418746, 0.870773456, 0.068708986, 0.017098812, 'Liu'), +(53, NULL, 0.4843, 303.16, 0.054853973, 0.860363999, 0.067887621, 0.016894408, 'Liu'), +(54, NULL, 0.9745, 303.16, 0.06169539, 0.854136274, 0.067396218, 0.016772118, 'Liu'), +(55, NULL, 2.025, 303.16, 0.066410113, 0.849844474, 0.06705757, 0.016687843, 'Liu'), +(56, NULL, 4.6, 303.16, 0.07316291, 0.84369742, 0.066572533, 0.016567137, 'Liu'), +(57, NULL, 0.1898, 323.16, 0.035473411, 0.878006074, 0.069279681, 0.017240834, 'Liu'), +(58, NULL, 0.496, 323.16, 0.04620142, 0.868240395, 0.068509113, 0.017049072, 'Liu'), +(59, NULL, 0.9017, 323.16, 0.052443901, 0.862557881, 0.068060731, 0.016937488, 'Liu'), +(60, NULL, 1.951, 323.16, 0.058605201, 0.856949265, 0.067618179, 0.016827355, 'Liu'), +(61, NULL, 3.801, 323.16, 0.064451415, 0.851627471, 0.067198259, 0.016722854, 'Liu'), +(62, NULL, 0.1924, 343.16, 0.023988893, 0.888460401, 0.070104587, 0.017446119, 'Liu'), +(63, NULL, 0.5264, 343.16, 0.03178752, 0.881361331, 0.06954443, 0.017306719, 'Liu'), +(64, NULL, 0.7314, 343.16, 0.035473411, 0.878006074, 0.069279681, 0.017240834, 'Liu'), +(65, NULL, 1.778, 343.16, 0.046283018, 0.868166116, 0.068503252, 0.017047613, 'Liu'), +(66, NULL, 9.353, 343.16, 0.064294364, 0.851770434, 0.06720954, 0.016725662, 'Liu'), +(67, NULL, 0.1737, 363.16, 0.017451157, 0.894411685, 0.070574177, 0.01756298, 'Liu'), +(68, NULL, 0.2537, 363.16, 0.019438906, 0.892602243, 0.070431402, 0.017527449, 'Liu'), +(69, NULL, 0.3719, 363.16, 0.022276886, 0.890018836, 0.070227557, 0.017476721, 'Liu'), +(70, NULL, 1.572, 363.16, 0.034721764, 0.878690296, 0.06933367, 0.01725427, 'Liu'), +(71, NULL, 4.122, 363.16, 0.04620142, 0.868240395, 0.068509113, 0.017049072, 'Liu'), +(72, NULL, 0.4251, 323.16, 0.053985872, 0.776247234, 0.152846141, 0.016920753, 'Liu'), +(73, NULL, 0.9115, 323.16, 0.069311875, 0.763671558, 0.15036994, 0.016646627, 'Liu'), +(75, NULL, 5.087, 323.16, 0.112448495, 0.728276017, 0.143400419, 0.015875069, 'Liu'), +(76, NULL, 7.537, 323.16, 0.120017119, 0.72206562, 0.142177567, 0.015739694, 'Liu'), +(77, NULL, 0.3583, 343.16, 0.033475387, 0.793077012, 0.15615999, 0.017287611, 'Liu'), +(78, NULL, 0.7561, 343.16, 0.043266036, 0.785043343, 0.154578129, 0.017112492, 'Liu'), +(79, NULL, 2.031, 343.16, 0.066349107, 0.766102643, 0.150848631, 0.01669962, 'Liu'), +(80, NULL, 4.606, 343.16, 0.086700987, 0.749403008, 0.147560407, 0.016335599, 'Liu'), +(81, NULL, 7.131, 343.16, 0.096034832, 0.741744167, 0.146052351, 0.01616865, 'Liu'), +(92, NULL, 3.3E-4, 313.0, 0.003514348, 0.866324627, 0.120796923, 0.009364103, 'Bishnoi'), +(93, NULL, 0.00115, 313.0, 0.00790484, 0.862507621, 0.120264694, 0.009322845, 'Bishnoi'), +(94, NULL, 0.00236, 313.0, 0.009445203, 0.861168461, 0.120077967, 0.00930837, 'Bishnoi'), +(95, NULL, 0.00367, 313.0, 0.011491594, 0.859389369, 0.119829897, 0.009289139, 'Bishnoi'), +(96, NULL, 0.0114, 313.0, 0.017958408, 0.853767251, 0.119045971, 0.00922837, 'Bishnoi'), +(97, NULL, 0.01335, 313.0, 0.017958408, 0.853767251, 0.119045971, 0.00922837, 'Bishnoi'), +(98, NULL, 0.0255, 313.0, 0.023968001, 0.848542631, 0.118317471, 0.009171897, 'Bishnoi'), +(99, NULL, 0.0748, 313.0, 0.035890629, 0.838177338, 0.116872174, 0.009059858, 'Bishnoi'), +(100, NULL, 3.4E-4, 343.0, 7.83107E-4, 0.868699113, 0.121128012, 0.009389768, 'Bishnoi'), +(101, NULL, 0.00241, 343.0, 0.001825343, 0.867793014, 0.121001669, 0.009379974, 'Bishnoi'), +(102, NULL, 0.00491, 343.0, 0.002605595, 0.867114679, 0.120907084, 0.009372642, 'Bishnoi'), +(103, NULL, 0.0078, 343.0, 0.005972636, 0.86418744, 0.120498922, 0.009341002, 'Bishnoi'), +(104, NULL, 0.036, 343.0, 0.012001872, 0.858945744, 0.11976804, 0.009284344, 'Bishnoi'); +INSERT INTO PUBLIC.CO2WATERMDEAPIPERAZINE(ID, PRESSURE, PRESSURECO2, TEMPERATURE, X1, X2, X3, X4, REFERENCE) VALUES +(105, NULL, 1.1, 313.16, 0.083217207, 0.787735185, 0.111545481, 0.017502127, 'Statoil'), +(106, NULL, 1.1, 313.16, 0.082652797, 0.789569752, 0.110199943, 0.017577508, 'Statoil'), +(107, NULL, 3.0, 313.16, 0.09840262, 0.775494045, 0.108585282, 0.017518053, 'Statoil'), +(108, NULL, 7.0, 313.16, 0.101813305, 0.773227273, 0.107527267, 0.017432155, 'Statoil'), +(109, NULL, 0.8, 313.16, 0.079874278, 0.794610308, 0.108499881, 0.017015532, 'Statoil'), +(110, NULL, 1.1, 313.16, 0.08339116, 0.788386871, 0.110350414, 0.017871555, 'Statoil'), +(111, NULL, 3.0, 313.16, 0.100936847, 0.773532454, 0.108311039, 0.017219661, 'Statoil'), +(112, NULL, 7.0, 313.16, 0.109264081, 0.765817665, 0.107681383, 0.017236871, 'Statoil'), +(113, NULL, 10.0, 313.16, 0.112707288, 0.764288884, 0.10620983, 0.016793999, 'Statoil'), +(114, NULL, 15.0, 313.16, 0.117826583, 0.75947409, 0.105873159, 0.016826168, 'Statoil'), +(115, NULL, 1.1, 333.16, 0.061344472, 0.806294113, 0.114438083, 0.017923331, 'Statoil'), +(116, NULL, 3.0, 333.16, 0.083291227, 0.788008078, 0.111022506, 0.017678188, 'Statoil'), +(117, NULL, 7.0, 333.16, 0.097569836, 0.776631696, 0.108102879, 0.017695589, 'Statoil'), +(118, NULL, 10.0, 333.16, 0.103175793, 0.772722773, 0.107021171, 0.017080263, 'Statoil'), +(119, NULL, 15.0, 333.16, 0.109225101, 0.767865867, 0.105541256, 0.017367776, 'Statoil'), +(120, NULL, 1.4, 353.16, 0.04415386, 0.812421806, 0.123703265, 0.019721069, 'Statoil'), +(121, NULL, 3.0, 353.16, 0.062040149, 0.799022478, 0.119854572, 0.019082801, 'Statoil'), +(122, NULL, 7.0, 353.16, 0.081431466, 0.783327384, 0.11644525, 0.0187959, 'Statoil'), +(123, NULL, 10.0, 353.16, 0.086681822, 0.787503544, 0.108763642, 0.017050992, 'Statoil'), +(124, NULL, 15.0, 353.16, 0.093414927, 0.785086668, 0.104930581, 0.016567824, 'Statoil'), +(125, NULL, 1.4, 313.16, 0.089099597, 0.786845328, 0.106695342, 0.017359733, 'Statoil'), +(126, NULL, 3.0, 313.16, 0.10008946, 0.777172006, 0.105977452, 0.016761082, 'Statoil'), +(127, NULL, 7.1, 313.16, 0.108267143, 0.769467573, 0.105009982, 0.017255302, 'Statoil'), +(128, NULL, 10.1, 313.16, 0.112443497, 0.76711306, 0.104104432, 0.01633901, 'Statoil'), +(129, NULL, 15.0, 313.16, 0.115011785, 0.763937725, 0.104102562, 0.016947928, 'Statoil'), +(130, NULL, 1.1, 333.16, 0.060971904, 0.805353549, 0.115617934, 0.018056613, 'Statoil'), +(131, NULL, 3.0, 333.16, 0.081481501, 0.787725464, 0.112823873, 0.017969162, 'Statoil'), +(132, NULL, 7.0, 333.16, 0.098891511, 0.773782785, 0.109933925, 0.017391779, 'Statoil'), +(133, NULL, 10.0, 333.16, 0.102498643, 0.773418754, 0.106992082, 0.01709052, 'Statoil'), +(134, NULL, 15.0, 333.16, 0.106512379, 0.769792452, 0.105632713, 0.018062457, 'Statoil'), +(135, NULL, 1.1, 313.16, 0.094691917, 0.77460167, 0.096529788, 0.034176626, 'Statoil'), +(136, NULL, 3.0, 313.16, 0.106507366, 0.763423219, 0.095335753, 0.034733662, 'Statoil'), +(137, NULL, 7.0, 313.16, 0.110930384, 0.761759825, 0.092470474, 0.034839317, 'Statoil'), +(138, NULL, 10.0, 313.16, 0.119255971, 0.753817819, 0.093852084, 0.033074126, 'Statoil'), +(139, NULL, 15.0, 313.16, 0.118774082, 0.753945837, 0.094087276, 0.033192805, 'Statoil'), +(140, NULL, 1.1, 333.16, 0.073566822, 0.788195653, 0.101087464, 0.037150061, 'Statoil'), +(141, NULL, 3.0, 333.16, 0.092137581, 0.772741391, 0.09901611, 0.036104918, 'Statoil'), +(142, NULL, 7.0, 333.16, 0.105208022, 0.762262912, 0.097358448, 0.035170618, 'Statoil'), +(143, NULL, 10.0, 333.16, 0.105963629, 0.766258326, 0.091794395, 0.03598365, 'Statoil'), +(144, NULL, 15.0, 333.16, 0.112736451, 0.760058202, 0.090931276, 0.036274072, 'Statoil'), +(145, NULL, 1.1, 353.16, 0.053983049, 0.799834286, 0.106858726, 0.039323939, 'Statoil'), +(146, NULL, 3.0, 353.16, 0.073716715, 0.783635785, 0.104307796, 0.038339704, 'Statoil'), +(147, NULL, 7.0, 353.16, 0.0903609, 0.771960154, 0.100817594, 0.036861353, 'Statoil'), +(148, NULL, 10.0, 353.16, 0.096144218, 0.770095689, 0.098034544, 0.035725548, 'Statoil'), +(149, NULL, 14.5, 353.16, 0.10213055, 0.765811485, 0.096755167, 0.035302797, 'Statoil'); +INSERT INTO PUBLIC.CO2WATERMDEAPIPERAZINE(ID, PRESSURE, PRESSURECO2, TEMPERATURE, X1, X2, X3, X4, REFERENCE) VALUES +(150, NULL, 1.2, 313.16, 0.093997873, 0.776706967, 0.097884026, 0.031411134, 'Statoil'), +(151, NULL, 3.0, 313.16, 0.10561107, 0.766653233, 0.097305478, 0.030430219, 'Statoil'), +(152, NULL, 7.0, 313.16, 0.109470413, 0.762995283, 0.097091585, 0.030442719, 'Statoil'), +(153, NULL, 10.0, 313.16, 0.114012009, 0.759663735, 0.096135825, 0.03018843, 'Statoil'), +(154, NULL, 15.0, 313.16, 0.120221164, 0.7532044, 0.096227199, 0.030347236, 'Statoil'), +(155, NULL, 1.1, 333.16, 0.071148956, 0.793109077, 0.107343835, 0.028398132, 'Statoil'), +(156, NULL, 3.0, 333.16, 0.087636107, 0.7772442, 0.10296897, 0.032150723, 'Statoil'), +(157, NULL, 7.0, 333.16, 0.101935184, 0.766214485, 0.100634595, 0.031215736, 'Statoil'), +(158, NULL, 10.0, 333.16, 0.105585706, 0.764622467, 0.098878394, 0.030913433, 'Statoil'), +(159, NULL, 15.0, 333.16, 0.110207628, 0.759947474, 0.098683215, 0.031161682, 'Statoil'), +(160, NULL, 1.3, 353.16, 0.053035177, 0.802653939, 0.110018283, 0.034292601, 'Statoil'), +(161, NULL, 3.0, 353.16, 0.0701628, 0.787609249, 0.108329107, 0.033898844, 'Statoil'), +(162, NULL, 7.0, 353.16, 0.087756443, 0.775535419, 0.104049061, 0.032659077, 'Statoil'), +(163, NULL, 10.0, 353.16, 0.092859273, 0.773746614, 0.101644358, 0.031749756, 'Statoil'), +(164, NULL, 15.0, 353.16, 0.100567891, 0.767572375, 0.100421986, 0.031437748, 'Statoil'), +(165, NULL, 1.4, 313.16, 0.090667527, 0.782692231, 0.100108641, 0.0265316, 'Statoil'), +(166, NULL, 3.0, 313.16, 0.102212111, 0.773460506, 0.09821177, 0.026115613, 'Statoil'), +(167, NULL, 7.0, 313.16, 0.109115245, 0.767798321, 0.09766908, 0.025417354, 'Statoil'), +(168, NULL, 10.0, 313.16, 0.109805118, 0.764853095, 0.098779431, 0.026562357, 'Statoil'), +(169, NULL, 15.0, 313.16, 0.11513319, 0.760018795, 0.0982025, 0.026645515, 'Statoil'), +(170, NULL, 1.1, 333.16, 0.06607346, 0.799666392, 0.106152432, 0.028107716, 'Statoil'), +(171, NULL, 3.0, 333.16, 0.08477582, 0.783171984, 0.104046258, 0.028005938, 'Statoil'), +(172, NULL, 7.0, 333.16, 0.097876466, 0.773240895, 0.101765871, 0.027116768, 'Statoil'), +(173, NULL, 10.0, 333.16, 0.103093179, 0.769418831, 0.100499086, 0.026988905, 'Statoil'), +(174, NULL, 15.0, 333.16, 0.108223964, 0.765318447, 0.099627436, 0.026830154, 'Statoil'), +(175, NULL, 1.3, 353.16, 0.04821503, 0.809136338, 0.112830864, 0.029817768, 'Statoil'), +(176, NULL, 3.0, 353.16, 0.065700227, 0.795178708, 0.109887996, 0.029233069, 'Statoil'), +(177, NULL, 7.0, 353.16, 0.083384398, 0.781994181, 0.106368848, 0.028252573, 'Statoil'), +(178, NULL, 10.0, 353.16, 0.089451673, 0.779622857, 0.10322832, 0.027697151, 'Statoil'), +(179, NULL, 15.0, 353.16, 0.09627682, 0.774892636, 0.101679085, 0.027151459, 'Statoil'), +(180, 1.807, NULL, 353.14, 0.040757515, 0.895653661, 0.03186702, 0.031721803, 'PSK'), +(181, 2.896, NULL, 353.14, 0.045378418, 0.891339081, 0.031713509, 0.031568992, 'PSK'), +(182, 7.345, NULL, 353.14, 0.05329847, 0.883944055, 0.031450397, 0.031307078, 'PSK'), +(183, 19.29, NULL, 353.14, 0.060331324, 0.877377413, 0.031216758, 0.031074505, 'PSK'), +(184, 24.96, NULL, 353.14, 0.062701707, 0.875164164, 0.031138012, 0.030996117, 'PSK'), +(185, 27.68, NULL, 353.14, 0.063838197, 0.874103013, 0.031100256, 0.030958534, 'PSK'), +(186, 40.5, NULL, 353.14, 0.0659562, 0.872125414, 0.031029894, 0.030888492, 'PSK'), +(187, 53.75, NULL, 353.14, 0.06813768, 0.870088546, 0.030957423, 0.030816351, 'PSK'), +(188, 57.73, NULL, 353.14, 0.068896605, 0.869379931, 0.030932211, 0.030791254, 'PSK'), +(189, 64.0, NULL, 353.14, 0.070047225, 0.868305586, 0.030893986, 0.030753203, 'PSK'); +CREATE CACHED TABLE PUBLIC.CO2WATERPZ( + ID INT DEFAULT '0', + TEMPERATURE VARCHAR(50) DEFAULT NULL, + PRESSURE VARCHAR(50) DEFAULT NULL, + PRESSURECO2 VARCHAR(50) DEFAULT NULL, + X1 VARCHAR(50) DEFAULT NULL, + X2 VARCHAR(50) DEFAULT NULL, + X3 VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 155 +/- SELECT COUNT(*) FROM PUBLIC.CO2WATERPZ; +INSERT INTO PUBLIC.CO2WATERPZ(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(1, '298.15', NULL, '0.0030963', '0.008047243', '0.980524043', '0.011428714', 'Peter'), +(2, '298.15', NULL, '0.0040976', '0.007776732', '0.981802955', '0.010420313', 'Peter'), +(3, '298.15', NULL, '0.0071989', '0.009238827', '0.979366609', '0.011394565', 'Peter'), +(4, '298.15', NULL, '0.029506', '0.010111935', '0.978498441', '0.011389623', 'Peter'), +(5, '298.15', NULL, '0.10915', '0.01088911', '0.977979563', '0.011131327', 'Peter'), +(6, '298.15', NULL, '0.6698', '0.011698795', '0.976894188', '0.011407017', 'Peter'), +(7, '298.15', NULL, '1.0393', '0.012053509', '0.976543568', '0.011402923', 'Peter'), +(8, '298.15', NULL, '1.1137', '0.012168041', '0.976527048', '0.011304911', 'Peter'), +(9, '313.15', NULL, '0.003714', '0.007270181', '0.981389299', '0.01134052', 'Peter'), +(10, '313.15', NULL, '0.0082108', '0.008052975', '0.98084491', '0.011102115', 'Peter'), +(11, '313.15', NULL, '0.016247', '0.008584914', '0.98009979', '0.011315295', 'Peter'), +(12, '313.15', NULL, '0.032674', '0.008538278', '0.980446437', '0.011015285', 'Peter'), +(13, '313.15', NULL, '0.040915', '0.009145109', '0.979866673', '0.010988218', 'Peter'), +(14, '313.15', NULL, '0.059883', '0.009908195', '0.978761032', '0.011330773', 'Peter'), +(69, '313.13', '0.133', NULL, '0.024634848', '0.941517685', '0.033847467', 'PSK'), +(70, '313.13', '14.86', NULL, '0.042312956', '0.92445305', '0.033233995', 'PSK'), +(71, '313.13', '28.59', NULL, '0.047769781', '0.919185589', '0.03304463', 'PSK'), +(72, '313.13', '37.02', NULL, '0.0512741', '0.915802878', '0.032923022', 'PSK'), +(73, '333.14', '0.308', NULL, '0.023441921', '0.942669215', '0.033888864', 'PSK'), +(74, '333.14', '1.016', NULL, '0.030114437', '0.936228251', '0.033657312', 'PSK'), +(75, '333.14', '5.144', NULL, '0.034868946', '0.931638735', '0.033492319', 'PSK'), +(76, '333.14', '16.16', NULL, '0.03944869', '0.927217918', '0.033333391', 'PSK'), +(77, '333.14', '21.58', NULL, '0.041066943', '0.925655823', '0.033277234', 'PSK'), +(78, '333.14', '35.33', NULL, '0.044557166', '0.922286719', '0.033156115', 'PSK'), +(79, '333.14', '39.78', NULL, '0.045841642', '0.921046817', '0.033111541', 'PSK'), +(80, '333.14', '71.47', NULL, '0.052056285', '0.915047837', '0.032895878', 'PSK'), +(81, '333.14', '4.82', NULL, '0.035023628', '0.930841753', '0.034134619', 'PSK'), +(82, '333.14', '14.35', NULL, '0.038876705', '0.927124973', '0.033998322', 'PSK'), +(83, '333.14', '40.39', NULL, '0.046349023', '0.919916977', '0.033733999', 'PSK'), +(84, '333.14', '50.07', NULL, '0.047943021', '0.918379365', '0.033677614', 'PSK'), +(85, '333.14', '76.83', NULL, '0.0525996', '0.913887506', '0.033512895', 'PSK'), +(86, '333.14', '91.31', NULL, '0.054903086', '0.911665502', '0.033431412', 'PSK'), +(87, '353.16', '0.63', NULL, '0.021930013', '0.944128656', '0.033941331', 'PSK'), +(88, '353.16', '1.385', NULL, '0.028081199', '0.938190931', '0.03372787', 'PSK'), +(89, '353.16', '2.627', NULL, '0.030850203', '0.935518017', '0.033631779', 'PSK'), +(90, '353.16', '3.736', NULL, '0.031568541', '0.934824608', '0.033606851', 'PSK'), +(91, '353.16', '11.51', NULL, '0.034560996', '0.931935998', '0.033503006', 'PSK'), +(92, '353.16', '18.27', NULL, '0.03693845', '0.929641047', '0.033420503', 'PSK'), +(93, '353.16', '26.7', NULL, '0.038999098', '0.927651908', '0.033348993', 'PSK'), +(94, '353.16', '26.78', NULL, '0.039095475', '0.927558876', '0.033345649', 'PSK'), +(95, '353.16', '40.38', NULL, '0.041354772', '0.925377982', '0.033267246', 'PSK'), +(96, '353.16', '50.63', NULL, '0.043364748', '0.923437757', '0.033197495', 'PSK'), +(97, '353.16', '58.01', NULL, '0.044398348', '0.922440025', '0.033161627', 'PSK'), +(98, '353.16', '71.37', NULL, '0.046980503', '0.919947477', '0.03307202', 'PSK'), +(99, '353.16', '84.21', NULL, '0.048400262', '0.918576987', '0.033022751', 'PSK'), +(100, '373.15', '1.556', NULL, '0.02269604', '0.942733271', '0.034570689', 'PSK'), +(101, '373.15', '3.851', NULL, '0.028767798', '0.936876292', '0.034355909', 'PSK'), +(102, '373.15', '5.257', NULL, '0.030355691', '0.935344569', '0.03429974', 'PSK'); +INSERT INTO PUBLIC.CO2WATERPZ(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(103, '373.15', '16.3', NULL, '0.034780773', '0.931076018', '0.034143209', 'PSK'), +(104, '373.15', '20.53', NULL, '0.035864582', '0.930030547', '0.034104871', 'PSK'), +(105, '373.15', '22.06', NULL, '0.03625222', '0.929656621', '0.034091159', 'PSK'), +(106, '373.15', '36.36', NULL, '0.039005146', '0.927001076', '0.033993778', 'PSK'), +(107, '373.15', '59.52', NULL, '0.042667273', '0.923468491', '0.033864236', 'PSK'), +(108, '373.15', '74.92', NULL, '0.044828981', '0.921383251', '0.033787769', 'PSK'), +(109, '373.15', '85.92', NULL, '0.046586093', '0.919688293', '0.033725613', 'PSK'), +(110, '393.15', '2.74', NULL, '0.018912684', '0.946382796', '0.03470452', 'PSK'), +(111, '393.15', '6.65', NULL, '0.027092436', '0.938492391', '0.034415173', 'PSK'), +(112, '393.15', '13.7', NULL, '0.031677691', '0.934069333', '0.034252976', 'PSK'), +(113, '393.15', '26.99', NULL, '0.034894121', '0.930966679', '0.0341392', 'PSK'), +(114, '393.15', '42.22', NULL, '0.037461583', '0.928490037', '0.03404838', 'PSK'), +(115, '393.15', '58.59', NULL, '0.040047459', '0.925995633', '0.033956908', 'PSK'), +(116, '393.15', '66.05', NULL, '0.04107153', '0.925007787', '0.033920683', 'PSK'), +(117, '393.15', '75.1', NULL, '0.042284779', '0.923837454', '0.033877766', 'PSK'), +(118, '393.15', '84.33', NULL, '0.043606273', '0.922562706', '0.03383102', 'PSK'), +(119, '333.16', '9.225', NULL, '0.065463855', '0.872231531', '0.062304615', 'PSK'), +(120, '333.16', '11.7', NULL, '0.066490932', '0.871272927', '0.06223614', 'PSK'), +(121, '333.16', '18.32', NULL, '0.068902991', '0.869021678', '0.062075331', 'PSK'), +(122, '333.16', '26.09', NULL, '0.071694106', '0.866416644', '0.06188925', 'PSK'), +(123, '333.16', '31.85', NULL, '0.07337231', '0.864850324', '0.061777366', 'PSK'), +(124, '333.16', '53.46', NULL, '0.078242123', '0.860305177', '0.0614527', 'PSK'), +(125, '333.16', '54.35', NULL, '0.078898983', '0.85969211', '0.061408908', 'PSK'), +(126, '333.16', '68.2', NULL, '0.080835538', '0.857884663', '0.0612798', 'PSK'), +(127, '333.16', '78.52', NULL, '0.082296783', '0.856520837', '0.06118238', 'PSK'), +(128, '333.16', '81.6', NULL, '0.082537513', '0.856296156', '0.061166331', 'PSK'), +(129, '333.16', '85.98', NULL, '0.082820563', '0.856031977', '0.06114746', 'PSK'), +(130, '353.15', '1.487', NULL, '0.053472875', '0.883423084', '0.063104042', 'PSK'), +(131, '353.15', '3.404', NULL, '0.057090392', '0.880046742', '0.062862865', 'PSK'), +(132, '353.15', '6.899', NULL, '0.060472566', '0.876890055', '0.062637379', 'PSK'), +(133, '353.15', '16.66', NULL, '0.064714131', '0.872931271', '0.062354598', 'PSK'), +(134, '353.15', '31.87', NULL, '0.068830081', '0.869089727', '0.062080192', 'PSK'), +(135, '353.15', '51.82', NULL, '0.072620763', '0.865551767', '0.061827471', 'PSK'), +(136, '353.15', '72.79', NULL, '0.07587827', '0.862511434', '0.061610296', 'PSK'), +(137, '353.15', '95.6', NULL, '0.079027389', '0.859572264', '0.061400347', 'PSK'), +(138, '373.16', '1.756', NULL, '0.046439706', '0.890196964', '0.06336333', 'PSK'), +(139, '373.16', '3.054', NULL, '0.050233355', '0.8866554', '0.063111245', 'PSK'), +(140, '373.16', '6.459', NULL, '0.05485429', '0.882341523', '0.062804187', 'PSK'), +(141, '373.16', '13.31', NULL, '0.059117842', '0.87836128', '0.062520878', 'PSK'), +(142, '373.16', '27.87', NULL, '0.063461158', '0.874306574', '0.062232268', 'PSK'), +(143, '373.16', '43.84', NULL, '0.06672539', '0.871259248', '0.062015362', 'PSK'), +(144, '373.16', '52.58', NULL, '0.067998418', '0.870070812', '0.06193077', 'PSK'), +(145, '373.16', '65.23', NULL, '0.070126978', '0.868083693', '0.061789329', 'PSK'), +(146, '373.16', '70.8', NULL, '0.070882749', '0.867378142', '0.061739109', 'PSK'), +(147, '373.16', '88.46', NULL, '0.073027081', '0.865376299', '0.06159662', 'PSK'), +(148, '393.15', '2.325', NULL, '0.032250767', '0.903443059', '0.064306174', 'PSK'), +(149, '393.15', '4.472', NULL, '0.04455453', '0.891956872', '0.063488598', 'PSK'), +(150, '393.15', '8.936', NULL, '0.050961194', '0.885975926', '0.06306288', 'PSK'), +(151, '393.15', '17.41', NULL, '0.05581508', '0.881444576', '0.062740343', 'PSK'); +INSERT INTO PUBLIC.CO2WATERPZ(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(152, '393.15', '30.76', NULL, '0.059995671', '0.877541782', '0.062462547', 'PSK'), +(153, '393.15', '47.12', NULL, '0.063298823', '0.874458122', '0.062243055', 'PSK'), +(154, '393.15', '69.06', NULL, '0.066710737', '0.871272927', '0.062016336', 'PSK'), +(155, '393.15', '89.99', NULL, '0.069442818', '0.86872239', '0.061834791', 'PSK'), +(15, '313.15', NULL, '0.10082', '0.010430846', '0.978101583', '0.011467572', 'Peter'), +(16, '313.15', NULL, '0.10405', '0.010493382', '0.978335246', '0.011171372', 'Peter'), +(17, '313.15', NULL, '0.3961', '0.010865665', '0.978023068', '0.011111267', 'Peter'), +(18, '313.15', NULL, '0.9281', '0.011384133', '0.977510424', '0.011105443', 'Peter'), +(19, '313.15', NULL, '1.047', '0.011452489', '0.977437758', '0.011109753', 'Peter'), +(20, '343.15', NULL, '0.0027452', '0.003737322', '0.985794869', '0.010467809', 'Peter'), +(21, '343.15', NULL, '0.017247', '0.005906147', '0.983130861', '0.010962992', 'Peter'), +(22, '343.15', NULL, '0.031915', '0.006307876', '0.983443413', '0.010248711', 'Peter'), +(23, '343.15', NULL, '0.03861', '0.007017137', '0.981658873', '0.01132399', 'Peter'), +(24, '343.15', NULL, '0.045346', '0.007767995', '0.981299714', '0.010932292', 'Peter'), +(25, '343.15', NULL, '0.053369', '0.00722396', '0.982203178', '0.010572861', 'Peter'), +(26, '343.15', NULL, '0.073087', '0.007315351', '0.98231508', '0.010369569', 'Peter'), +(27, '343.15', NULL, '0.1041', '0.008219502', '0.980944593', '0.010835906', 'Peter'), +(28, '343.15', NULL, '0.5021', '0.009758155', '0.97942275', '0.010819095', 'Peter'), +(29, '343.15', NULL, '0.8207', '0.010370265', '0.97836028', '0.011269455', 'Peter'), +(30, '343.15', NULL, '0.9401', '0.010373221', '0.978814404', '0.010812375', 'Peter'), +(31, '298.15', NULL, '0.0044965', '0.002972822', '0.993351331', '0.003675846', 'Peter'), +(32, '298.15', NULL, '0.0063992', '0.003099342', '0.993215879', '0.00368478', 'Peter'), +(33, '298.15', NULL, '0.010002', '0.003226528', '0.993136145', '0.003637327', 'Peter'), +(34, '298.15', NULL, '0.017013', '0.003361454', '0.992982924', '0.003655622', 'Peter'), +(35, '298.15', NULL, '0.029432', '0.003493948', '0.992805815', '0.003700237', 'Peter'), +(36, '298.15', NULL, '0.0538204', '0.003675923', '0.99260572', '0.003718357', 'Peter'), +(37, '298.15', NULL, '0.085042', '0.003628112', '0.992660872', '0.003711016', 'Peter'), +(38, '298.15', NULL, '1.0723', '0.004567107', '0.991725374', '0.003707519', 'Peter'), +(39, '313.15', NULL, '0.0038394', '0.002389715', '0.993845708', '0.003764576', 'Peter'), +(40, '313.15', NULL, '0.0088474', '0.00273891', '0.99363702', '0.003624071', 'Peter'), +(41, '313.15', NULL, '0.026292', '0.00319915', '0.993182208', '0.003618641', 'Peter'), +(42, '313.15', NULL, '0.10112', '0.00344249', '0.993042972', '0.003514538', 'Peter'), +(43, '313.15', NULL, '0.6851', '0.004153872', '0.991967811', '0.003878317', 'Peter'), +(44, '313.15', NULL, '1.0171', '0.004168368', '0.992160194', '0.003671439', 'Peter'), +(45, '343.15', NULL, '0.005063007', '0.001612306', '0.99496998', '0.003417714', 'Peter'), +(46, '343.15', NULL, '0.011769', '0.002031756', '0.994495672', '0.003472572', 'Peter'), +(47, '343.15', NULL, '0.02565', '0.00253482', '0.993862921', '0.003602259', 'Peter'), +(48, '343.15', NULL, '0.05028', '0.00282218', '0.993546534', '0.003631285', 'Peter'), +(49, '343.15', NULL, '0.4531', '0.003540519', '0.992804516', '0.003654965', 'Peter'), +(50, '343.15', NULL, '0.805', '0.00377591', '0.992551205', '0.003672885', 'Peter'), +(51, '343.15', NULL, '0.8781', '0.003763955', '0.9925819', '0.003654146', 'Peter'), +(52, '313', NULL, '0.00032', '0.003579196', '0.985235816', '0.011184988', 'Bishnoi'), +(53, '313', NULL, '0.00042', '0.003579196', '0.985235816', '0.011184988', 'Bishnoi'), +(54, '313', NULL, '0.0008', '0.005248139', '0.983585607', '0.011166254', 'Bishnoi'), +(55, '313', NULL, '0.0011', '0.005359203', '0.983475789', '0.011165007', 'Bishnoi'), +(56, '313', NULL, '0.0025', '0.006135958', '0.982707754', '0.011156288', 'Bishnoi'), +(57, '313', NULL, '0.0045', '0.006800783', '0.982050391', '0.011148825', 'Bishnoi'); +INSERT INTO PUBLIC.CO2WATERPZ(ID, TEMPERATURE, PRESSURE, PRESSURECO2, X1, X2, X3, REFERENCE) VALUES +(58, '313', NULL, '0.0085', '0.008017322', '0.980847509', '0.011135169', 'Bishnoi'), +(59, '313', NULL, '0.0095', '0.008017322', '0.980847509', '0.011135169', 'Bishnoi'), +(60, '313', NULL, '0.03', '0.009120683', '0.979756533', '0.011122784', 'Bishnoi'), +(61, '313', NULL, '0.4', '0.010661271', '0.978233238', '0.011105491', 'Bishnoi'), +(62, '343', NULL, '0.00063', '0.001792807', '0.987002153', '0.011205041', 'Bishnoi'), +(63, '343', NULL, '0.00132', '0.002463453', '0.986339035', '0.011197513', 'Bishnoi'), +(64, '343', NULL, '0.00448', '0.003913433', '0.984905331', '0.011181236', 'Bishnoi'), +(65, '343', NULL, '0.00648', '0.004692447', '0.984135062', '0.011172492', 'Bishnoi'), +(66, '343', NULL, '0.0144', '0.005248139', '0.983585607', '0.011166254', 'Bishnoi'), +(67, '343', NULL, '0.0343', '0.006579274', '0.982269414', '0.011151312', 'Bishnoi'), +(68, '343', NULL, '0.07875', '0.008017322', '0.980847509', '0.011135169', 'Bishnoi'); +CREATE CACHED TABLE PUBLIC.CO2WATERSOLUBILITY( + ID INT NOT NULL, + TEMPERATUREC DOUBLE DEFAULT NULL, + PRESSUREMPA DOUBLE DEFAULT NULL, + XCO2 DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.CO2WATERSOLUBILITY ADD CONSTRAINT PUBLIC.CONSTRAINT_2 PRIMARY KEY(ID); +-- 520 +/- SELECT COUNT(*) FROM PUBLIC.CO2WATERSOLUBILITY; +INSERT INTO PUBLIC.CO2WATERSOLUBILITY(ID, TEMPERATUREC, PRESSUREMPA, XCO2, REFERENCE) VALUES +(1, 0.0, 0.507, 0.6951, '[17]'), +(2, 0.0, 1.013, 1.281, '[17]'), +(3, 0.0, 1.52, 1.7456, '[17]'), +(4, 0.0, 2.027, 2.1117, '[17]'), +(5, 0.0, 2.533, 2.4128, '[17]'), +(6, 0.0, 3.04, 2.6578, '[17]'), +(7, 12.4, 0.507, 0.4158, '[17]'), +(8, 12.4, 1.013, 0.7758, '[17]'), +(9, 12.4, 1.52, 1.0932, '[17]'), +(10, 12.4, 2.027, 1.3647, '[17]'), +(11, 12.4, 2.533, 1.6189, '[17]'), +(12, 12.4, 3.04, 1.8482, '[17]'), +(13, 1.0, 0.076, 0.0993, '[18]'), +(14, 1.0, 0.251, 0.3213, '[18]'), +(15, 1.0, 0.472, 0.606, '[18]'), +(16, 1.0, 0.775, 0.9597, '[18]'), +(17, 1.0, 1.056, 1.276, '[18]'), +(18, 1.0, 1.362, 1.601, '[18]'), +(19, 3.0, 0.079, 0.0965, '[18]'), +(20, 3.0, 0.262, 0.312, '[18]'), +(21, 3.0, 0.495, 0.586, '[18]'), +(22, 3.0, 0.809, 0.9297, '[18]'), +(23, 3.0, 1.1, 1.239, '[18]'), +(24, 3.0, 1.42, 1.549, '[18]'), +(25, 5.0, 0.083, 0.0936, '[18]'), +(26, 5.0, 0.274, 0.3033, '[18]'), +(27, 5.0, 0.516, 0.5696, '[18]'), +(28, 5.0, 0.842, 0.9023, '[18]'), +(29, 5.0, 1.146, 1.2, '[18]'), +(30, 5.0, 1.479, 1.498, '[18]'), +(31, 5.0, 1.858, 1.772, '[18]'), +(32, 7.0, 0.086, 0.0912, '[18]'), +(33, 7.0, 0.285, 0.2944, '[18]'), +(34, 7.0, 0.538, 0.5519, '[18]'), +(35, 7.0, 0.876, 0.873, '[18]'), +(36, 7.0, 1.194, 1.16, '[18]'), +(37, 7.0, 1.538, 1.447, '[18]'), +(38, 7.0, 1.924, 1.714, '[18]'), +(39, 9.0, 0.09, 0.0883, '[18]'), +(40, 9.0, 0.297, 0.2855, '[18]'), +(41, 9.0, 0.56, 0.5349, '[18]'), +(42, 9.0, 0.906, 0.8493, '[18]'), +(43, 9.0, 1.237, 1.125, '[18]'), +(44, 9.0, 1.589, 1.405, '[18]'), +(45, 9.0, 1.982, 1.666, '[18]'), +(46, 11.0, 0.094, 0.0852, '[18]'), +(47, 11.0, 0.309, 0.277, '[18]'), +(48, 11.0, 0.58, 0.5201, '[18]'), +(49, 11.0, 0.94, 0.8215, '[18]'), +(50, 11.0, 1.289, 1.082, '[18]'), +(51, 11.0, 1.641, 1.363, '[18]'), +(52, 11.0, 2.051, 1.606, '[18]'), +(53, 13.0, 0.097, 0.0829, '[18]'), +(54, 13.0, 0.32, 0.2688, '[18]'), +(55, 13.0, 0.6, 0.5052, '[18]'), +(56, 13.0, 0.971, 0.797, '[18]'), +(57, 13.0, 1.336, 1.045, '[18]'), +(58, 13.0, 1.696, 1.318, '[18]'), +(59, 13.0, 2.113, 1.554, '[18]'), +(60, 15.0, 0.101, 0.0803, '[18]'), +(61, 15.0, 0.332, 0.2604, '[18]'), +(62, 15.0, 0.62, 0.4901, '[18]'), +(63, 15.0, 0.998, 0.7771, '[18]'), +(64, 15.0, 1.376, 1.015, '[18]'), +(65, 15.0, 1.748, 1.278, '[18]'), +(66, 15.0, 2.179, 1.5, '[18]'), +(67, 20.0, 2.45, 0.547, '[19]'), +(68, 20.0, 2.94, 0.608, '[19]'), +(69, 20.0, 3.92, 0.649, '[19]'), +(70, 20.0, 4.9, 0.87, '[19]'), +(71, 20.0, 5.39, 0.962, '[19]'), +(72, 35.0, 2.94, 0.862, '[19]'), +(73, 35.0, 2.94, 0.827, '[19]'), +(74, 35.0, 3.92, 1.083, '[19]'), +(75, 35.0, 3.92, 1.306, '[19]'), +(76, 35.0, 4.9, 1.381, '[19]'), +(77, 35.0, 4.9, 1.604, '[19]'), +(78, 35.0, 5.88, 1.663, '[19]'), +(79, 35.0, 5.88, 1.43, '[19]'), +(80, 35.0, 6.86, 1.968, '[19]'), +(81, 35.0, 6.86, 1.824, '[19]'), +(82, 35.0, 7.85, 2.127, '[19]'), +(83, 60.0, 3.92, 0.74, '[19]'), +(84, 60.0, 3.92, 0.591, '[19]'), +(85, 60.0, 4.9, 0.831, '[19]'), +(86, 60.0, 4.9, 0.825, '[19]'), +(87, 60.0, 5.88, 0.981, '[19]'), +(88, 60.0, 5.88, 0.93, '[19]'), +(89, 60.0, 6.86, 1.138, '[19]'), +(90, 60.0, 6.86, 1.075, '[19]'), +(91, 60.0, 7.85, 1.357, '[19]'), +(92, 60.0, 7.85, 1.391, '[19]'), +(93, 60.0, 8.83, 1.535, '[19]'), +(94, 60.0, 8.83, 1.321, '[19]'), +(95, 60.0, 9.81, 1.764, '[19]'), +(96, 60.0, 9.81, 1.704, '[19]'), +(97, 60.0, 10.79, 1.973, '[19]'), +(98, 60.0, 10.79, 1.717, '[19]'), +(99, 60.0, 11.77, 2.027, '[19]'), +(100, 60.0, 11.77, 2.09, '[19]'), +(101, 20.01, 2.533, 1.3, '[20]'), +(102, 20.01, 3.04, 1.45, '[20]'), +(103, 20.01, 4.053, 1.74, '[20]'), +(104, 20.01, 4.56, 1.88, '[20]'), +(105, 20.01, 5.066, 2.04, '[20]'), +(106, 25.01, 3.546, 1.27, '[20]'), +(107, 25.01, 4.053, 1.34, '[20]'), +(108, 25.01, 4.458, 1.55, '[20]'), +(109, 25.01, 5.066, 1.72, '[20]'), +(110, 25.01, 5.573, 1.87, '[20]'), +(111, 25.01, 6.08, 2.03, '[20]'), +(112, 35.01, 3.546, 0.81, '[20]'), +(113, 35.01, 4.053, 0.99, '[20]'), +(114, 35.01, 4.56, 1.12, '[20]'), +(115, 35.01, 5.066, 1.31, '[20]'), +(116, 35.01, 5.573, 1.48, '[20]'), +(117, 35.01, 6.08, 1.63, '[20]'), +(118, 35.01, 6.586, 1.81, '[20]'), +(119, 35.01, 7.093, 1.96, '[20]'), +(120, 35.01, 7.599, 2.14, '[20]'); +INSERT INTO PUBLIC.CO2WATERSOLUBILITY(ID, TEMPERATUREC, PRESSUREMPA, XCO2, REFERENCE) VALUES +(121, 20.0, 0.486, 0.3223, '[21]'), +(122, 20.0, 0.75, 0.5131, '[21]'), +(123, 20.0, 0.983, 0.6264, '[21]'), +(124, 20.0, 1.469, 0.9207, '[21]'), +(125, 20.0, 1.966, 1.1852, '[21]'), +(126, 20.0, 2.938, 1.6387, '[21]'), +(127, 30.0, 0.486, 0.2776, '[21]'), +(128, 30.0, 1.469, 0.7758, '[21]'), +(129, 30.0, 1.966, 0.9929, '[21]'), +(130, 30.0, 2.938, 1.492, '[21]'), +(131, 15.6, 5.07, 2.5971, '[22]'), +(132, 25.0, 5.07, 2.1133, '[22]'), +(133, 29.4, 5.52, 2.0435, '[22]'), +(134, 31.1, 0.69, 0.3332, '[22]'), +(135, 31.1, 2.53, 1.0632, '[22]'), +(136, 31.1, 5.07, 1.8287, '[22]'), +(137, 75.0, 0.69, 0.15, '[22]'), +(138, 75.0, 2.53, 0.5456, '[22]'), +(139, 75.0, 5.07, 1.0125, '[22]'), +(140, 75.0, 10.14, 1.6263, '[22]'), +(141, 75.0, 20.27, 2.104, '[22]'), +(142, 93.3, 0.69, 0.0977, '[22]'), +(143, 93.3, 2.53, 0.4379, '[22]'), +(144, 93.3, 5.07, 0.8513, '[22]'), +(145, 93.3, 10.14, 1.4592, '[22]'), +(146, 93.3, 20.27, 2.0738, '[22]'), +(147, 0.0, 0.507, 0.6992, '[23]'), +(148, 0.0, 1.013, 1.269, '[23]'), +(149, 0.0, 1.52, 1.7377, '[23]'), +(150, 0.0, 2.027, 2.1039, '[23]'), +(151, 0.0, 2.533, 2.405, '[23]'), +(152, 0.0, 3.04, 2.65, '[23]'), +(153, 0.0, 3.546, 2.8861, '[23]'), +(154, 0.0, 3.85, 2.9748, '[23]'), +(155, 15.0, 0.507, 0.3711, '[23]'), +(156, 15.0, 1.013, 0.6749, '[23]'), +(157, 15.0, 1.52, 0.9488, '[23]'), +(158, 15.0, 2.027, 1.2171, '[23]'), +(159, 15.0, 2.533, 1.4085, '[23]'), +(160, 15.0, 3.546, 1.789, '[23]'), +(161, 15.0, 4.053, 1.9388, '[23]'), +(162, 15.0, 4.56, 2.0293, '[23]'), +(163, 15.0, 5.066, 2.1431, '[23]'), +(164, 15.0, 5.269, 2.1901, '[23]'), +(165, 0.0, 1.013, 1.267, '[24]'), +(166, 0.0, 2.533, 2.394, '[24]'), +(167, 0.0, 3.04, 2.637, '[24]'), +(168, 5.0, 1.013, 1.055, '[24]'), +(169, 5.0, 2.026, 1.806, '[24]'), +(170, 5.0, 3.85, 2.532, '[24]'), +(171, 10.0, 1.013, 0.8535, '[24]'), +(172, 10.0, 2.026, 1.533, '[24]'), +(173, 10.0, 3.85, 2.185, '[24]'), +(174, 12.4, 4.56, 2.204, '[24]'), +(175, 25.0, 2.026, 1.026, '[24]'), +(176, 25.0, 4.56, 1.655, '[24]'), +(177, 3.9, 2.0, 1.81, '[25]'), +(178, 4.9, 2.0, 1.83, '[25]'), +(179, 7.3, 2.0, 1.7, '[25]'), +(180, 8.4, 3.0, 2.22, '[25]'), +(181, 8.5, 3.7, 2.45, '[25]'), +(182, 9.1, 2.0, 1.56, '[25]'), +(183, 9.4, 4.2, 2.56, '[25]'), +(184, 9.9, 3.0, 2.1, '[25]'), +(185, 10.0, 3.7, 2.34, '[25]'), +(186, 8.0, 3.3, 0.372, '[26]'), +(187, 4.85, 6.44, 2.93, '[27]'), +(188, 4.85, 9.87, 3.08, '[27]'), +(189, 4.85, 14.77, 3.2, '[27]'), +(190, 4.85, 19.68, 3.31, '[27]'), +(191, 4.85, 24.58, 3.41, '[27]'), +(192, 4.85, 29.49, 3.49, '[27]'), +(193, 9.85, 6.44, 2.79, '[27]'), +(194, 9.85, 9.87, 2.94, '[27]'), +(195, 9.85, 14.77, 3.05, '[27]'), +(196, 9.85, 19.68, 3.16, '[27]'), +(197, 9.85, 24.58, 3.26, '[27]'), +(198, 9.85, 29.49, 3.34, '[27]'), +(199, 14.85, 6.44, 2.69, '[27]'), +(200, 14.85, 9.87, 2.8, '[27]'), +(201, 14.85, 14.77, 2.96, '[27]'), +(202, 14.85, 19.68, 3.09, '[27]'), +(203, 14.85, 24.58, 3.19, '[27]'), +(204, 14.85, 29.49, 3.27, '[27]'), +(205, 19.85, 6.44, 2.5, '[27]'), +(206, 19.85, 9.87, 2.58, '[27]'), +(207, 19.85, 14.77, 2.75, '[27]'), +(208, 19.85, 19.68, 2.93, '[27]'), +(209, 19.85, 24.58, 3.04, '[27]'), +(210, 19.85, 29.49, 3.12, '[27]'), +(211, 50.0, 10.0, 1.999, '[28]'), +(212, 50.0, 20.0, 2.293, '[28]'), +(213, 50.0, 40.0, 2.655, '[28]'), +(214, 50.0, 60.0, 2.854, '[28]'), +(215, 100.0, 10.0, 1.444, '[28]'), +(216, 100.0, 20.0, 2.03, '[28]'), +(217, 100.0, 40.0, 2.509, '[28]'), +(218, 100.0, 60.0, 2.907, '[28]'), +(219, 100.0, 80.0, 3.521, '[28]'), +(220, 10.0, 1.0, 0.8823, '[29]'), +(221, 10.0, 2.5, 2.007, '[29]'), +(222, 10.0, 3.5, 2.5248, '[29]'), +(223, 25.0, 1.0, 0.5272, '[29]'), +(224, 25.0, 2.5, 1.2506, '[29]'), +(225, 25.0, 3.5, 1.6553, '[29]'), +(226, 25.0, 5.0, 2.1211, '[29]'), +(227, 50.0, 1.0, 0.3234, '[29]'), +(228, 50.0, 2.5, 0.7669, '[29]'), +(229, 50.0, 3.5, 1.0291, '[29]'), +(230, 50.0, 5.0, 1.357, '[29]'), +(231, 50.0, 7.5, 1.7725, '[29]'), +(232, 50.0, 10.0, 2.014, '[29]'), +(233, 50.0, 13.0, 2.1304, '[29]'), +(234, 50.0, 16.0, 2.2156, '[29]'), +(235, 70.0, 1.0, 0.2422, '[29]'), +(236, 70.0, 2.5, 0.5672, '[29]'), +(237, 70.0, 3.5, 0.7732, '[29]'); +INSERT INTO PUBLIC.CO2WATERSOLUBILITY(ID, TEMPERATUREC, PRESSUREMPA, XCO2, REFERENCE) VALUES +(238, 70.0, 5.0, 1.037, '[29]'), +(239, 70.0, 7.5, 1.4042, '[29]'), +(240, 70.0, 10.0, 1.6733, '[29]'), +(241, 70.0, 13.0, 1.8848, '[29]'), +(242, 70.0, 16.0, 2.014, '[29]'), +(243, 25.14, 7.69, 2.5, '[31]'), +(244, 25.16, 2.17, 1.24, '[31]'), +(245, 25.16, 3.05, 1.57, '[31]'), +(246, 25.16, 3.08, 1.65, '[31]'), +(247, 25.17, 4.12, 1.97, '[31]'), +(248, 25.17, 4.15, 2.02, '[31]'), +(249, 25.17, 7.2, 2.54, '[31]'), +(250, 25.29, 5.26, 2.26, '[31]'), +(251, 25.42, 5.33, 2.2, '[31]'), +(252, 0.0, 1.084, 1.332, '[32]'), +(253, 0.0, 1.595, 1.81, '[32]'), +(254, 0.0, 2.986, 2.639, '[32]'), +(255, 25.0, 1.11, 0.6386, '[32]'), +(256, 25.0, 1.113, 0.6106, '[32]'), +(257, 25.0, 1.113, 0.6226, '[32]'), +(258, 25.0, 1.118, 0.6234, '[32]'), +(259, 25.0, 2.204, 1.183, '[32]'), +(260, 25.0, 2.322, 1.2399, '[32]'), +(261, 25.0, 2.498, 1.2714, '[32]'), +(262, 25.0, 2.5, 1.2714, '[32]'), +(263, 25.0, 2.51, 1.2849, '[32]'), +(264, 25.0, 2.634, 1.3427, '[32]'), +(265, 25.0, 3.182, 1.557, '[32]'), +(266, 25.0, 3.482, 1.6604, '[32]'), +(267, 25.0, 3.492, 1.6643, '[32]'), +(268, 25.0, 3.934, 1.8541, '[32]'), +(269, 25.0, 3.97, 1.8635, '[32]'), +(270, 25.0, 4.468, 2.0348, '[32]'), +(271, 25.0, 4.565, 2.0378, '[32]'), +(272, 25.0, 5.68, 2.2943, '[32]'), +(273, 25.0, 5.689, 2.3004, '[32]'), +(274, 25.0, 6.373, 2.4032, '[32]'), +(275, 50.0, 1.939, 0.6226, '[32]'), +(276, 50.0, 1.939, 0.6322, '[32]'), +(277, 50.0, 1.941, 0.6146, '[32]'), +(278, 50.0, 3.3, 0.9961, '[32]'), +(279, 50.0, 3.301, 0.977, '[32]'), +(280, 50.0, 3.321, 1.016, '[32]'), +(281, 50.0, 3.323, 0.9858, '[32]'), +(282, 50.0, 4.742, 1.273, '[32]'), +(283, 50.0, 4.75, 1.2817, '[32]'), +(284, 50.0, 4.75, 1.3258, '[32]'), +(285, 50.0, 5.776, 1.5233, '[32]'), +(286, 50.0, 6.11, 1.597, '[32]'), +(287, 50.0, 6.173, 1.6166, '[32]'), +(288, 50.0, 6.191, 1.6236, '[32]'), +(289, 50.0, 6.282, 1.6338, '[32]'), +(290, 50.0, 7.419, 1.7957, '[32]'), +(291, 50.0, 7.48, 1.8487, '[32]'), +(292, 50.0, 7.549, 1.8277, '[32]'), +(293, 50.0, 9.079, 2.0611, '[32]'), +(294, 50.0, 9.271, 2.0363, '[32]'), +(295, 50.0, 9.322, 2.0503, '[32]'), +(296, 75.0, 1.907, 0.4456, '[32]'), +(297, 75.0, 1.911, 0.4368, '[32]'), +(298, 75.0, 1.925, 0.4296, '[32]'), +(299, 75.0, 1.925, 0.4384, '[32]'), +(300, 75.0, 3.263, 0.7168, '[32]'), +(301, 75.0, 3.271, 0.7232, '[32]'), +(302, 75.0, 3.311, 0.7272, '[32]'), +(303, 75.0, 4.722, 0.985, '[32]'), +(304, 75.0, 4.724, 0.971, '[32]'), +(305, 75.0, 6.107, 1.2185, '[32]'), +(306, 75.0, 6.173, 1.2043, '[32]'), +(307, 75.0, 6.184, 1.2083, '[32]'), +(308, 75.0, 6.203, 1.2193, '[32]'), +(309, 75.0, 7.67, 1.4062, '[32]'), +(310, 75.0, 7.694, 1.436, '[32]'), +(311, 75.0, 7.736, 1.4227, '[32]'), +(312, 75.0, 9.327, 1.6064, '[32]'), +(313, 75.0, 9.446, 1.6111, '[32]'), +(314, 100.0, 1.934, 0.3477, '[32]'), +(315, 100.0, 1.936, 0.346, '[32]'), +(316, 100.0, 1.953, 0.346, '[32]'), +(317, 100.0, 3.249, 0.5738, '[32]'), +(318, 100.0, 3.301, 0.5898, '[32]'), +(319, 100.0, 3.31, 0.5826, '[32]'), +(320, 100.0, 3.313, 0.581, '[32]'), +(321, 100.0, 3.321, 0.5778, '[32]'), +(322, 100.0, 4.671, 0.8013, '[32]'), +(323, 100.0, 4.736, 0.8117, '[32]'), +(324, 100.0, 4.739, 0.8149, '[32]'), +(325, 100.0, 4.751, 0.7942, '[32]'), +(326, 100.0, 6.171, 1.0833, '[32]'), +(327, 100.0, 6.176, 0.981, '[32]'), +(328, 100.0, 6.181, 1.046, '[32]'), +(329, 100.0, 6.211, 1.0825, '[32]'), +(330, 100.0, 7.599, 1.24, '[32]'), +(331, 100.0, 9.119, 1.448, '[32]'), +(332, 25.0, 4.955, 2.2252, '[33]'), +(333, 25.0, 4.955, 2.2327, '[33]'), +(334, 25.0, 4.955, 2.2374, '[33]'), +(335, 50.0, 4.955, 1.3662, '[33]'), +(336, 50.0, 4.955, 1.3717, '[33]'), +(337, 50.0, 4.955, 1.3719, '[33]'), +(338, 50.0, 4.955, 1.3734, '[33]'), +(339, 75.0, 4.955, 0.9877, '[33]'), +(340, 75.0, 4.955, 0.9936, '[33]'), +(341, 75.0, 4.955, 0.9961, '[33]'), +(342, 75.0, 4.955, 0.997, '[33]'), +(343, 25.0, 4.955, 2.2078, '[34]'), +(344, 25.0, 4.955, 2.21, '[34]'), +(345, 25.0, 4.955, 2.2104, '[34]'), +(346, 25.0, 4.955, 2.2209, '[34]'), +(347, 100.0, 4.955, 0.8012, '[34]'), +(348, 100.0, 4.955, 0.8046, '[34]'), +(349, 100.0, 4.955, 0.805, '[34]'), +(350, 12.0, 5.066, 2.7955, '[35]'); +INSERT INTO PUBLIC.CO2WATERSOLUBILITY(ID, TEMPERATUREC, PRESSUREMPA, XCO2, REFERENCE) VALUES +(351, 12.0, 7.599, 2.894, '[35]'), +(352, 12.0, 10.133, 2.8895, '[35]'), +(353, 12.0, 15.199, 3.0129, '[35]'), +(354, 12.0, 20.265, 3.1179, '[35]'), +(355, 12.0, 30.398, 3.2165, '[35]'), +(356, 18.0, 2.533, 1.5542, '[35]'), +(357, 18.0, 5.066, 2.5264, '[35]'), +(358, 18.0, 7.599, 2.6661, '[35]'), +(359, 18.0, 10.133, 2.6761, '[35]'), +(360, 18.0, 15.199, 2.6585, '[35]'), +(361, 18.0, 20.265, 2.92, '[35]'), +(362, 18.0, 30.398, 3.0829, '[35]'), +(363, 25.0, 5.066, 2.156, '[35]'), +(364, 25.0, 7.599, 2.4602, '[35]'), +(365, 25.0, 10.133, 2.5049, '[35]'), +(366, 25.0, 40.53, 3.0304, '[35]'), +(367, 25.0, 50.663, 3.1156, '[35]'), +(368, 31.04, 2.533, 1.1344, '[35]'), +(369, 31.04, 5.066, 1.9168, '[35]'), +(370, 31.04, 7.599, 2.3184, '[35]'), +(371, 31.04, 10.133, 2.3832, '[35]'), +(372, 31.04, 15.199, 2.4926, '[35]'), +(373, 31.04, 20.265, 2.584, '[35]'), +(374, 31.04, 40.53, 2.8902, '[35]'), +(375, 31.04, 50.663, 3.0342, '[35]'), +(376, 35.0, 2.533, 1.0371, '[35]'), +(377, 35.0, 5.066, 1.7655, '[35]'), +(378, 35.0, 7.599, 2.2032, '[35]'), +(379, 35.0, 10.133, 2.3029, '[35]'), +(380, 35.0, 15.199, 2.4102, '[35]'), +(381, 35.0, 20.265, 2.4702, '[35]'), +(382, 35.0, 40.53, 2.81, '[35]'), +(383, 35.0, 50.663, 2.9825, '[35]'), +(384, 40.0, 2.533, 0.9315, '[35]'), +(385, 40.0, 5.066, 1.6201, '[35]'), +(386, 40.0, 7.599, 2.0458, '[35]'), +(387, 40.0, 10.133, 2.2009, '[35]'), +(388, 40.0, 12.666, 2.2705, '[35]'), +(389, 40.0, 15.199, 2.323, '[35]'), +(390, 40.0, 20.265, 2.4271, '[35]'), +(391, 40.0, 40.53, 2.7443, '[35]'), +(392, 40.0, 50.663, 2.8864, '[35]'), +(393, 50.0, 2.533, 0.7796, '[35]'), +(394, 50.0, 5.066, 1.3767, '[35]'), +(395, 50.0, 7.599, 1.7905, '[35]'), +(396, 50.0, 10.133, 2.0318, '[35]'), +(397, 50.0, 12.666, 2.1203, '[35]'), +(398, 50.0, 15.199, 2.1877, '[35]'), +(399, 50.0, 20.265, 2.3037, '[35]'), +(400, 50.0, 30.398, 2.4733, '[35]'), +(401, 50.0, 40.53, 2.6232, '[35]'), +(402, 50.0, 70.928, 3.0091, '[35]'), +(403, 75.0, 2.533, 0.5488, '[35]'), +(404, 75.0, 5.066, 1.0085, '[35]'), +(405, 75.0, 7.599, 1.3601, '[35]'), +(406, 75.0, 10.133, 1.6404, '[35]'), +(407, 75.0, 15.199, 1.9502, '[35]'), +(408, 75.0, 20.265, 2.1118, '[35]'), +(409, 75.0, 30.398, 2.3323, '[35]'), +(410, 75.0, 40.53, 2.5149, '[35]'), +(411, 75.0, 70.928, 2.952, '[35]'), +(412, 100.0, 2.533, 0.4327, '[35]'), +(413, 100.0, 5.066, 0.817, '[35]'), +(414, 100.0, 7.599, 1.1431, '[35]'), +(415, 100.0, 10.133, 1.3861, '[35]'), +(416, 100.0, 15.199, 1.8061, '[35]'), +(417, 100.0, 20.265, 2.0365, '[35]'), +(418, 100.0, 30.398, 2.3338, '[35]'), +(419, 100.0, 40.53, 2.5541, '[35]'), +(420, 100.0, 70.928, 3.0213, '[35]'), +(421, 10.0, 0.101, 0.0966, '[37]'), +(422, 10.0, 0.507, 0.4676, '[37]'), +(423, 10.0, 1.013, 0.8972, '[37]'), +(424, 10.0, 1.52, 1.2911, '[37]'), +(425, 10.0, 2.027, 1.6527, '[37]'), +(426, 20.0, 0.101, 0.0707, '[37]'), +(427, 20.0, 0.507, 0.3417, '[37]'), +(428, 20.0, 1.013, 0.6585, '[37]'), +(429, 20.0, 1.52, 0.9533, '[37]'), +(430, 20.0, 2.027, 1.232, '[37]'), +(431, 30.0, 0.101, 0.054, '[37]'), +(432, 30.0, 0.507, 0.2634, '[37]'), +(433, 30.0, 1.013, 0.5108, '[37]'), +(434, 30.0, 1.52, 0.7437, '[37]'), +(435, 30.0, 2.027, 0.9619, '[37]'), +(436, 30.0, 0.993, 0.4975, '[38]'), +(437, 30.0, 1.925, 0.9309, '[38]'), +(438, 30.0, 2.999, 1.365, '[38]'), +(439, 30.0, 3.891, 1.7329, '[38]'), +(440, 50.0, 0.993, 0.3334, '[38]'), +(441, 50.0, 1.915, 0.6088, '[38]'), +(442, 50.0, 2.989, 0.937, '[38]'), +(443, 50.0, 3.901, 1.2097, '[38]'), +(444, 80.0, 0.882, 0.1973, '[38]'), +(445, 80.0, 0.983, 0.2183, '[38]'), +(446, 80.0, 1.885, 0.413, '[38]'), +(447, 80.0, 2.979, 0.6244, '[38]'), +(448, 80.0, 3.881, 0.799, '[38]'), +(449, 50.0, 0.488, 0.16, '[39]'), +(450, 50.0, 0.762, 0.25, '[39]'), +(451, 50.0, 0.892, 0.3, '[39]'), +(452, 50.0, 1.441, 0.46, '[39]'), +(453, 50.0, 2.505, 0.76, '[39]'), +(454, 75.0, 2.1, 0.46, '[39]'), +(455, 75.0, 3.591, 0.76, '[39]'), +(456, 100.0, 2.71, 0.46, '[39]'), +(457, 100.0, 4.56, 0.76, '[39]'), +(458, 100.0, 0.325, 0.045, '[40]'), +(459, 100.0, 0.6, 0.098, '[40]'), +(460, 100.0, 0.92, 0.159, '[40]'), +(461, 100.0, 1.191, 0.208, '[40]'); +INSERT INTO PUBLIC.CO2WATERSOLUBILITY(ID, TEMPERATUREC, PRESSUREMPA, XCO2, REFERENCE) VALUES +(462, 100.0, 1.452, 0.261, '[40]'), +(463, 100.0, 1.816, 0.328, '[40]'), +(464, 100.0, 2.307, 0.414, '[40]'), +(465, 15.0, 6.08, 2.658, '[41]'), +(466, 15.0, 7.09, 2.716, '[41]'), +(467, 15.0, 7.6, 2.729, '[41]'), +(468, 15.0, 10.13, 2.757, '[41]'), +(469, 15.0, 12.16, 2.828, '[41]'), +(470, 15.0, 13.17, 2.84, '[41]'), +(471, 15.0, 15.2, 2.886, '[41]'), +(472, 15.0, 15.71, 2.902, '[41]'), +(473, 15.0, 17.73, 2.96, '[41]'), +(474, 15.0, 20.27, 3.013, '[41]'), +(475, 15.0, 24.32, 3.07, '[41]'), +(476, 20.0, 6.59, 2.531, '[41]'), +(477, 20.0, 7.6, 2.563, '[41]'), +(478, 20.0, 9.63, 2.597, '[41]'), +(479, 20.0, 10.13, 2.625, '[41]'), +(480, 20.0, 13.68, 2.689, '[41]'), +(481, 20.0, 14.69, 2.727, '[41]'), +(482, 20.0, 15.2, 2.743, '[41]'), +(483, 20.0, 17.73, 2.807, '[41]'), +(484, 20.0, 20.27, 2.847, '[41]'), +(485, 20.0, 21.79, 2.945, '[41]'), +(486, 25.0, 7.6, 2.445, '[41]'), +(487, 25.0, 10.13, 2.51, '[41]'), +(488, 25.0, 13.68, 2.582, '[41]'), +(489, 25.0, 15.2, 2.603, '[41]'), +(490, 25.0, 17.73, 2.672, '[41]'), +(491, 25.0, 20.27, 2.734, '[41]'), +(492, 50.05, 4.05, 1.09, '[42]'), +(493, 50.05, 5.06, 1.37, '[42]'), +(494, 50.05, 6.06, 1.61, '[42]'), +(495, 50.05, 7.08, 1.76, '[42]'), +(496, 50.05, 8.08, 1.9, '[42]'), +(497, 50.05, 9.09, 2.0, '[42]'), +(498, 50.05, 10.09, 2.05, '[42]'), +(499, 50.05, 11.1, 2.1, '[42]'), +(500, 50.05, 12.2, 2.14, '[42]'), +(501, 50.05, 14.11, 2.17, '[42]'), +(502, 60.05, 4.05, 0.96, '[42]'), +(503, 60.05, 5.06, 1.21, '[42]'), +(504, 60.05, 6.06, 1.38, '[42]'), +(505, 60.05, 7.08, 1.57, '[42]'), +(506, 60.05, 8.08, 1.66, '[42]'), +(507, 60.05, 9.09, 1.79, '[42]'), +(508, 60.05, 10.09, 1.86, '[42]'), +(509, 60.05, 11.1, 1.95, '[42]'), +(510, 60.05, 12.1, 2.01, '[42]'), +(511, 60.05, 14.11, 2.08, '[42]'), +(512, 79.95, 4.05, 0.8, '[42]'), +(513, 79.95, 6.06, 1.14, '[42]'), +(514, 79.95, 7.08, 1.28, '[42]'), +(515, 79.95, 8.08, 1.4, '[42]'), +(516, 79.95, 9.09, 1.51, '[42]'), +(517, 79.95, 10.09, 1.6, '[42]'), +(518, 79.95, 11.1, 1.72, '[42]'), +(519, 79.95, 12.1, 1.76, '[42]'), +(520, 79.95, 13.1, 1.84, '[42]'); +CREATE CACHED TABLE PUBLIC.CO2WATION( + ID INT NOT NULL, + POINT DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + COMP1 VARCHAR(255) DEFAULT NULL, + COMP2 VARCHAR(255) DEFAULT NULL, + COMP3 VARCHAR(255) DEFAULT NULL, + COMP4 VARCHAR(255) DEFAULT NULL, + "x1-molfrac" DOUBLE DEFAULT NULL, + "x2-kg" DOUBLE DEFAULT NULL, + "x3-molal" DOUBLE DEFAULT NULL, + "x4-molal" DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL, + COMMENT VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.CO2WATION ADD CONSTRAINT PUBLIC.CONSTRAINT_C9 PRIMARY KEY(ID); +-- 152 +/- SELECT COUNT(*) FROM PUBLIC.CO2WATION; +INSERT INTO PUBLIC.CO2WATION(ID, POINT, PRESSURE, TEMPERATURE, COMP1, COMP2, COMP3, COMP4, "x1-molfrac", "x2-kg", "x3-molal", "x4-molal", REFERENCE, COMMENT) VALUES +(1, 1.0, 0.9815, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 3.3E-4, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(2, 2.0, 3.85, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.00136, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(3, 3.0, 5.0943, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.0018, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(4, 4.0, 8.8662, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.00315, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(5, 5.0, 19.982, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.00675, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(6, 6.0, 31.504, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.01032, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(7, 7.0, 36.818, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.01182, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(8, 8.0, 46.213, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.01427, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(9, 9.0, 56.247, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.01659, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(10, 10.0, 67.763, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.01883, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(11, 11.0, 84.343, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.02112, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(12, 12.0, 2.0815, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 5.1E-4, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(13, 13.0, 5.0125, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 0.00124, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(14, 14.0, 8.1823, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 0.00201, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(15, 15.0, 12.44, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 0.00304, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(16, 16.0, 18.6, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 0.00446, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(17, 17.0, 26.35, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 0.00617, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(18, 18.0, 38.441, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 0.00861, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(19, 19.0, 51.372, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 0.01089, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(20, 20.0, 63.73, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 0.01272, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(21, 21.0, 77.885, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 0.01431, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(22, 22.0, 91.289, 313.31, 'CO2', 'water', 'Na+', 'Cl-', 0.01517, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(23, 23.0, 1.8932, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 3.3E-4, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(24, 24.0, 3.7998, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 6.8E-4, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(25, 25.0, 5.6098, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.00101, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(26, 26.0, 8.3566, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.00149, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(27, 27.0, 12.5, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.00222, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(28, 28.0, 23.35, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.00403, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(29, 29.0, 40.266, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.00657, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(30, 30.0, 59.779, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.00898, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(31, 31.0, 73.779, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.01029, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(32, 32.0, 81.221, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.0108, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(33, 33.0, 90.612, 313.38, 'CO2', 'water', 'Na+', 'Cl-', 0.0112, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(34, 34.0, 2.22719, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 3.7E-4, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(35, 35.0, 5.4726, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 0.00101, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(36, 36.0, 8.7725, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 0.00168, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(37, 37.0, 14.039, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 0.00273, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'); +INSERT INTO PUBLIC.CO2WATION(ID, POINT, PRESSURE, TEMPERATURE, COMP1, COMP2, COMP3, COMP4, "x1-molfrac", "x2-kg", "x3-molal", "x4-molal", REFERENCE, COMMENT) VALUES +(38, 38.0, 19.589, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 0.00383, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(39, 39.0, 26.698, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 0.00522, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(40, 40.0, 36.332, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 0.00706, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(41, 41.0, 56.923, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 0.0108, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(42, 42.0, 83.348, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 0.01507, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(43, 43.0, 92.395, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 0.01636, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(44, 44.0, 101.0, 353.08, 'CO2', 'water', 'Na+', 'Cl-', 0.01751, 1.0, 0.52, 0.52, 'Kiepe2002', 'x1-nosalt'), +(45, 45.0, 4.5382, 353.07, 'CO2', 'water', 'Na+', 'Cl-', 5.9E-4, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(46, 46.0, 7.644, 353.07, 'CO2', 'water', 'Na+', 'Cl-', 0.00101, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(47, 47.0, 12.604, 353.07, 'CO2', 'water', 'Na+', 'Cl-', 0.00172, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(48, 48.0, 20.042, 353.07, 'CO2', 'water', 'Na+', 'Cl-', 0.00272, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(49, 49.0, 26.54, 353.07, 'CO2', 'water', 'Na+', 'Cl-', 0.00357, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(50, 50.0, 40.823, 353.07, 'CO2', 'water', 'Na+', 'Cl-', 0.00532, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(51, 51.0, 52.21, 353.07, 'CO2', 'water', 'Na+', 'Cl-', 0.0066, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(52, 52.0, 64.697, 353.07, 'CO2', 'water', 'Na+', 'Cl-', 0.00789, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(53, 53.0, 76.787, 353.07, 'CO2', 'water', 'Na+', 'Cl-', 0.00902, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(54, 54.0, 100.061, 353.07, 'CO2', 'water', 'Na+', 'Cl-', 0.01091, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(55, 55.0, 5.4588, 352.77, 'CO2', 'water', 'Na+', 'Cl-', 5.3E-4, 1.0, 4.34, 4.34, 'Kiepe2002', 'x1-nosalt'), +(56, 56.0, 9.5025, 352.77, 'CO2', 'water', 'Na+', 'Cl-', 9.4E-4, 1.0, 4.34, 4.34, 'Kiepe2002', 'x1-nosalt'), +(57, 57.0, 13.619, 352.77, 'CO2', 'water', 'Na+', 'Cl-', 0.00136, 1.0, 4.34, 4.34, 'Kiepe2002', 'x1-nosalt'), +(58, 58.0, 18.656, 352.77, 'CO2', 'water', 'Na+', 'Cl-', 0.00186, 1.0, 4.34, 4.34, 'Kiepe2002', 'x1-nosalt'), +(59, 59.0, 25.587, 352.77, 'CO2', 'water', 'Na+', 'Cl-', 0.00253, 1.0, 4.34, 4.34, 'Kiepe2002', 'x1-nosalt'), +(60, 60.0, 38.013, 352.77, 'CO2', 'water', 'Na+', 'Cl-', 0.00365, 1.0, 4.34, 4.34, 'Kiepe2002', 'x1-nosalt'), +(61, 61.0, 47.98, 352.77, 'CO2', 'water', 'Na+', 'Cl-', 0.00449, 1.0, 4.34, 4.34, 'Kiepe2002', 'x1-nosalt'), +(62, 62.0, 62.413, 352.77, 'CO2', 'water', 'Na+', 'Cl-', 0.00561, 1.0, 4.34, 4.34, 'Kiepe2002', 'x1-nosalt'), +(63, 63.0, 83.541, 352.77, 'CO2', 'water', 'Na+', 'Cl-', 0.00703, 1.0, 4.34, 4.34, 'Kiepe2002', 'x1-nosalt'), +(64, 64.0, 100.1, 352.77, 'CO2', 'water', 'Na+', 'Cl-', 0.00795, 1.0, 4.34, 4.34, 'Kiepe2002', 'x1-nosalt'), +(65, 65.0, 0.92, 313.31, 'CO2', 'water', 'K+', 'Cl-', 3.1E-4, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(66, 66.0, 1.9656, 313.31, 'CO2', 'water', 'K+', 'Cl-', 6.9E-4, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(67, 67.0, 4.1811, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.00148, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(68, 68.0, 6.4775, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.0023, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(69, 69.0, 8.4626, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.003, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(70, 70.0, 11.13, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.00392, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(71, 71.0, 16.643, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.0058, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(72, 72.0, 39.38, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.01281, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(73, 73.0, 53.14, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.01639, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(74, 74.0, 66.116, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.01918, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'); +INSERT INTO PUBLIC.CO2WATION(ID, POINT, PRESSURE, TEMPERATURE, COMP1, COMP2, COMP3, COMP4, "x1-molfrac", "x2-kg", "x3-molal", "x4-molal", REFERENCE, COMMENT) VALUES +(75, 75.0, 82.79, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.02174, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(76, 76.0, 1.2655, 313.31, 'CO2', 'water', 'K+', 'Cl-', 3.9E-4, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(77, 77.0, 2.956, 313.31, 'CO2', 'water', 'K+', 'Cl-', 9.4E-4, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(78, 78.0, 4.7215, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.00151, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(79, 79.0, 6.7637, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.00217, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(80, 80.0, 9.096, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.00291, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(81, 81.0, 11.823, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.00377, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(82, 82.0, 18.31, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.00577, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(83, 83.0, 35.828, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.01076, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(84, 84.0, 59.691, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.01637, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(85, 85.0, 86.961, 313.31, 'CO2', 'water', 'K+', 'Cl-', 0.02031, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(86, 86.0, 2.7722, 313.16, 'CO2', 'water', 'K+', 'Cl-', 8.5E-4, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(87, 87.0, 4.1854, 313.16, 'CO2', 'water', 'K+', 'Cl-', 0.00129, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(88, 88.0, 6.0662, 313.16, 'CO2', 'water', 'K+', 'Cl-', 0.00186, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(89, 89.0, 8.2395, 313.16, 'CO2', 'water', 'K+', 'Cl-', 0.00252, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(90, 90.0, 10.569, 313.16, 'CO2', 'water', 'K+', 'Cl-', 0.00322, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(91, 91.0, 16.65, 313.16, 'CO2', 'water', 'K+', 'Cl-', 0.00499, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(92, 92.0, 39.549, 313.16, 'CO2', 'water', 'K+', 'Cl-', 0.01091, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(93, 93.0, 52.677, 313.16, 'CO2', 'water', 'K+', 'Cl-', 0.01371, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(94, 94.0, 72.103, 313.16, 'CO2', 'water', 'K+', 'Cl-', 0.01693, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(95, 95.0, 83.534, 313.16, 'CO2', 'water', 'K+', 'Cl-', 0.0182, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(96, 96.0, 97.091, 313.16, 'CO2', 'water', 'K+', 'Cl-', 0.01901, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(97, 97.0, 3.5577, 313.37, 'CO2', 'water', 'K+', 'Cl-', 7.6E-4, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(98, 98.0, 6.2586, 313.37, 'CO2', 'water', 'K+', 'Cl-', 0.00135, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(99, 99.0, 8.5274, 313.37, 'CO2', 'water', 'K+', 'Cl-', 0.00185, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(100, 100.0, 11.986, 313.37, 'CO2', 'water', 'K+', 'Cl-', 0.00261, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(101, 101.0, 16.387, 313.37, 'CO2', 'water', 'K+', 'Cl-', 0.00357, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(102, 102.0, 24.86, 313.37, 'CO2', 'water', 'K+', 'Cl-', 0.0054, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(103, 103.0, 33.726, 313.37, 'CO2', 'water', 'K+', 'Cl-', 0.00727, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(104, 104.0, 43.0, 313.37, 'CO2', 'water', 'K+', 'Cl-', 0.00917, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(105, 105.0, 56.607, 313.37, 'CO2', 'water', 'K+', 'Cl-', 0.01174, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(106, 106.0, 69.878, 313.37, 'CO2', 'water', 'K+', 'Cl-', 0.01388, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(107, 107.0, 89.658, 313.37, 'CO2', 'water', 'K+', 'Cl-', 0.0158, 1.0, 3.96, 3.96, 'Kiepe2002', 'x1-nosalt'), +(108, 108.0, 1.9918, 353.08, 'CO2', 'water', 'K+', 'Cl-', 3.5E-4, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(109, 109.0, 4.2742, 353.08, 'CO2', 'water', 'K+', 'Cl-', 9.1E-4, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(110, 110.0, 14.235, 353.08, 'CO2', 'water', 'K+', 'Cl-', 0.00312, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(111, 111.0, 19.16, 353.08, 'CO2', 'water', 'K+', 'Cl-', 0.00419, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'); +INSERT INTO PUBLIC.CO2WATION(ID, POINT, PRESSURE, TEMPERATURE, COMP1, COMP2, COMP3, COMP4, "x1-molfrac", "x2-kg", "x3-molal", "x4-molal", REFERENCE, COMMENT) VALUES +(112, 112.0, 23.568, 353.08, 'CO2', 'water', 'K+', 'Cl-', 0.00514, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(113, 113.0, 28.456, 353.08, 'CO2', 'water', 'K+', 'Cl-', 0.00616, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(114, 114.0, 40.172, 353.08, 'CO2', 'water', 'K+', 'Cl-', 0.00851, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(115, 115.0, 53.136, 353.08, 'CO2', 'water', 'K+', 'Cl-', 0.01093, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(116, 116.0, 70.646, 353.08, 'CO2', 'water', 'K+', 'Cl-', 0.01388, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(117, 117.0, 87.473, 353.08, 'CO2', 'water', 'K+', 'Cl-', 0.01636, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(118, 118.0, 99.137, 353.08, 'CO2', 'water', 'K+', 'Cl-', 0.01787, 1.0, 0.5, 0.5, 'Kiepe2002', 'x1-nosalt'), +(119, 119.0, 3.033, 352.55, 'CO2', 'water', 'K+', 'Cl-', 5.6E-4, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(120, 120.0, 5.7497, 352.55, 'CO2', 'water', 'K+', 'Cl-', 0.00114, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(121, 121.0, 9.4564, 352.55, 'CO2', 'water', 'K+', 'Cl-', 0.00192, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(122, 122.0, 13.799, 352.55, 'CO2', 'water', 'K+', 'Cl-', 0.00283, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(123, 123.0, 18.353, 352.55, 'CO2', 'water', 'K+', 'Cl-', 0.00376, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(124, 124.0, 26.731, 352.55, 'CO2', 'water', 'K+', 'Cl-', 0.00542, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(125, 125.0, 41.286, 352.55, 'CO2', 'water', 'K+', 'Cl-', 0.00814, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(126, 126.0, 56.33, 352.55, 'CO2', 'water', 'K+', 'Cl-', 0.01072, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(127, 127.0, 69.073, 352.55, 'CO2', 'water', 'K+', 'Cl-', 0.01271, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(128, 128.0, 81.418, 352.55, 'CO2', 'water', 'K+', 'Cl-', 0.01446, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(129, 129.0, 94.483, 352.55, 'CO2', 'water', 'K+', 'Cl-', 0.0161, 1.0, 1.0, 1.0, 'Kiepe2002', 'x1-nosalt'), +(130, 130.0, 2.3723, 353.09, 'CO2', 'water', 'K+', 'Cl-', 3.3E-4, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(131, 131.0, 4.8739, 353.09, 'CO2', 'water', 'K+', 'Cl-', 7.5E-4, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(132, 132.0, 7.043, 353.09, 'CO2', 'water', 'K+', 'Cl-', 0.00111, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(133, 133.0, 9.0081, 353.09, 'CO2', 'water', 'K+', 'Cl-', 0.00144, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(134, 134.0, 12.619, 353.09, 'CO2', 'water', 'K+', 'Cl-', 0.00204, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(135, 135.0, 21.905, 353.09, 'CO2', 'water', 'K+', 'Cl-', 0.00352, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(136, 136.0, 35.494, 353.09, 'CO2', 'water', 'K+', 'Cl-', 0.00557, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(137, 137.0, 51.833, 353.09, 'CO2', 'water', 'K+', 'Cl-', 0.00783, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(138, 138.0, 66.006, 353.09, 'CO2', 'water', 'K+', 'Cl-', 0.0096, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(139, 139.0, 82.942, 353.09, 'CO2', 'water', 'K+', 'Cl-', 0.01147, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(140, 140.0, 105.08, 353.09, 'CO2', 'water', 'K+', 'Cl-', 0.0135, 1.0, 2.5, 2.5, 'Kiepe2002', 'x1-nosalt'), +(141, 141.0, 3.156, 353.4, 'CO2', 'water', 'K+', 'Cl-', 3.4E-4, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(142, 142.0, 5.3094, 353.4, 'CO2', 'water', 'K+', 'Cl-', 6.2E-4, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(143, 143.0, 7.882, 353.4, 'CO2', 'water', 'K+', 'Cl-', 9.4E-4, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(144, 144.0, 11.201, 353.4, 'CO2', 'water', 'K+', 'Cl-', 0.00135, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(145, 145.0, 15.666, 353.4, 'CO2', 'water', 'K+', 'Cl-', 0.00189, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(146, 146.0, 19.115, 353.4, 'CO2', 'water', 'K+', 'Cl-', 0.00231, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(147, 147.0, 36.421, 353.4, 'CO2', 'water', 'K+', 'Cl-', 0.00425, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(148, 148.0, 52.322, 353.4, 'CO2', 'water', 'K+', 'Cl-', 0.00586, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'); +INSERT INTO PUBLIC.CO2WATION(ID, POINT, PRESSURE, TEMPERATURE, COMP1, COMP2, COMP3, COMP4, "x1-molfrac", "x2-kg", "x3-molal", "x4-molal", REFERENCE, COMMENT) VALUES +(149, 149.0, 61.674, 353.4, 'CO2', 'water', 'K+', 'Cl-', 0.00672, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(150, 150.0, 71.322, 353.4, 'CO2', 'water', 'K+', 'Cl-', 0.00755, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(151, 151.0, 86.383, 353.4, 'CO2', 'water', 'K+', 'Cl-', 0.0087, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'), +(152, 152.0, 95.268, 353.4, 'CO2', 'water', 'K+', 'Cl-', 0.00931, 1.0, 4.0, 4.0, 'Kiepe2002', 'x1-nosalt'); +CREATE CACHED TABLE PUBLIC.COMLEXSOLIDFREEZINGDATA( + ID INT NOT NULL, + COMPONENT1 VARCHAR(255) DEFAULT NULL, + COMPONENT2 VARCHAR(255) DEFAULT NULL, + X1 DOUBLE DEFAULT NULL, + X2 DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + STANDARDDEVIATION DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL, + F10 VARCHAR(255) DEFAULT NULL, + F11 VARCHAR(255) DEFAULT NULL, + F12 VARCHAR(255) DEFAULT NULL, + F13 VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.COMLEXSOLIDFREEZINGDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_6E PRIMARY KEY(ID); +-- 5 +/- SELECT COUNT(*) FROM PUBLIC.COMLEXSOLIDFREEZINGDATA; +INSERT INTO PUBLIC.COMLEXSOLIDFREEZINGDATA(ID, COMPONENT1, COMPONENT2, X1, X2, TEMPERATURE, PRESSURE, STANDARDDEVIATION, REFERENCE, F10, F11, F12, F13) VALUES +(1, 'TEG', 'water', 0.5004, 0.4996, 244.85, 1.0, 1.0, 'Folas', NULL, NULL, NULL, NULL), +(2, 'TEG', 'water', 0.45, 0.55, 241.45, 1.0, 1.0, 'Folas', NULL, NULL, NULL, NULL), +(3, 'TEG', 'water', 0.4048, 0.5952, 234.95, 1.0, 1.0, 'Folas', NULL, NULL, NULL, NULL), +(4, 'TEG', 'water', 0.35, 0.65, 229.05, 1.0, 1.0, 'Folas', NULL, NULL, NULL, NULL), +(5, 'TEG', 'water', 0.3, 0.7, 218.55, 1.0, 1.0, 'Folas', NULL, NULL, NULL, NULL); +CREATE CACHED TABLE PUBLIC.COMP( + ID DOUBLE NOT NULL, + NAME VARCHAR(50) DEFAULT NULL, + CASNUMBER VARCHAR(50) DEFAULT NULL, + COMPTYPE VARCHAR(50) DEFAULT NULL, + COMPINDEX INT DEFAULT NULL, + FORMULA VARCHAR(50) DEFAULT NULL, + MOLARMASS DOUBLE DEFAULT NULL, + LIQDENS DOUBLE DEFAULT NULL, + TC DOUBLE DEFAULT NULL, + PC DOUBLE DEFAULT NULL, + ACSFACT DOUBLE DEFAULT NULL, + NORMBOIL DOUBLE DEFAULT NULL, + MWAVG DOUBLE DEFAULT NULL, + CRITVOL DOUBLE DEFAULT NULL, + PVMODEL VARCHAR(255) DEFAULT '0', + HREF DOUBLE DEFAULT '0', + CPA DOUBLE DEFAULT NULL, + CPB DOUBLE DEFAULT NULL, + CPC DOUBLE DEFAULT NULL, + CPD DOUBLE DEFAULT NULL, + CPE DOUBLE DEFAULT NULL, + ANTOINEVAPPRESLIQTYPE VARCHAR(50) DEFAULT NULL, + ANTOINEA DOUBLE DEFAULT NULL, + ANTOINEB DOUBLE DEFAULT NULL, + ANTOINEC DOUBLE DEFAULT NULL, + ANTOINED DOUBLE DEFAULT NULL, + ANTOINEE DOUBLE DEFAULT '0', + DIPOLEMOMENT DOUBLE DEFAULT NULL, + VISCFACT DOUBLE DEFAULT NULL, + RACKETZ DOUBLE DEFAULT NULL, + VOLCORRSRK_T DOUBLE DEFAULT '0', + LJDIAMETER DOUBLE DEFAULT NULL, + LJEPS DOUBLE DEFAULT NULL, + SPHERICALCORERADIUS DOUBLE DEFAULT '0', + LIQVISCMODEL INT DEFAULT NULL, + LIQVISC1 DOUBLE DEFAULT NULL, + LIQVISC2 DOUBLE DEFAULT NULL, + LIQVISC3 DOUBLE DEFAULT NULL, + LIQVISC4 DOUBLE DEFAULT NULL, + GIBBSENERGYOFFORMATION DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER1 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER2 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER3 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER4 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER5 DOUBLE DEFAULT NULL, + IONICCHARGE INT DEFAULT NULL, + REFERENCESTATETYPE VARCHAR(255) DEFAULT NULL, + HENRYCOEF1 DOUBLE DEFAULT NULL, + HENRYCOEF2 DOUBLE DEFAULT '0', + HENRYCOEF3 DOUBLE DEFAULT NULL, + HENRYCOEF4 DOUBLE DEFAULT '0', + SCHWARTZENTRUBER1 DOUBLE DEFAULT NULL, + SCHWARTZENTRUBER2 DOUBLE DEFAULT NULL, + SCHWARTZENTRUBER3 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY1 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY2 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY3 DOUBLE DEFAULT NULL, + PARACHOR DOUBLE DEFAULT NULL, + HEATOFFUSION DOUBLE DEFAULT NULL, + TRIPLEPOINTDENSITY DOUBLE DEFAULT NULL, + TRIPLEPOINTPRESSURE DOUBLE DEFAULT NULL, + TRIPLEPOINTTEMPERATURE DOUBLE DEFAULT NULL, + MELTINGPOINTTEMPERATURE DOUBLE DEFAULT NULL, + ENTHALPYOFFORMATION DOUBLE DEFAULT NULL, + ABSOLUTEENTROPY DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS1 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS2 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS3 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS4 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS5 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS1 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS2 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS3 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS4 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS5 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS1 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS2 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS3 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS4 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS5 DOUBLE DEFAULT NULL, + STDDENS DOUBLE DEFAULT NULL, + MC1 DOUBLE DEFAULT NULL, + MC2 DOUBLE DEFAULT NULL, + MC3 DOUBLE DEFAULT NULL, + MC1SOLID DOUBLE DEFAULT NULL, + MC2SOLID DOUBLE DEFAULT NULL, + MC3SOLID DOUBLE DEFAULT NULL, + TWUCOON1 DOUBLE DEFAULT '0', + TWUCOON2 DOUBLE DEFAULT '0', + TWUCOON3 DOUBLE DEFAULT '0', + ASSOCIATIONSITES INT DEFAULT '0', + ASSOCIATIONSCHEME VARCHAR(50) DEFAULT NULL, + RACKETZCPA DOUBLE DEFAULT '0', + VOLCORRCPA_T DOUBLE DEFAULT '0', + ASSOCIATIONBOUNDINGVOLUME_SRK DOUBLE DEFAULT '0', + ASSOCIATIONENERGY DOUBLE DEFAULT '0', + ACPA_SRK DOUBLE DEFAULT '0', + BCPA_SRK DOUBLE DEFAULT '0', + MCPA_SRK DOUBLE DEFAULT '0', + ACPA_PR DOUBLE DEFAULT NULL, + BCPA_PR DOUBLE DEFAULT NULL, + MCPA_PR DOUBLE DEFAULT NULL, + ASSOCIATIONBOUNDINGVOLUME_PR DOUBLE DEFAULT NULL, + CALCACTIVITY INT DEFAULT '1', + ANTOINESOLIDA DOUBLE DEFAULT '0', + ANTOINESOLIDB DOUBLE DEFAULT NULL, + ANTOINESOLIDC DOUBLE DEFAULT '0', + HSUB INT DEFAULT '0', + CRITICALVISCOSITY DOUBLE DEFAULT NULL, + HYDRATEA1SMALL DOUBLE DEFAULT '0', + HYDRATEB1SMALL DOUBLE DEFAULT '0', + HYDRATEA1LARGE DOUBLE DEFAULT '0', + HYDRATEB1LARGE DOUBLE DEFAULT '0', + HYDRATEA2SMALL DOUBLE DEFAULT '0', + HYDRATEB2SMALL DOUBLE DEFAULT '0', + HYDRATEA2LARGE DOUBLE DEFAULT '0', + HYDRATEB2LARGE DOUBLE DEFAULT '0', + HYDRATEFORMER VARCHAR(50) DEFAULT NULL, + MSAFT DOUBLE DEFAULT '0', + SIGMASAFT DOUBLE DEFAULT '0', + EPSIKSAFT DOUBLE DEFAULT '0', + ASSOCIATIONBOUNDINGVOLUME_PCSAFT DOUBLE DEFAULT '0', + ASSOCIATIONENERGY_PCSAFT DOUBLE DEFAULT '0', + LJDIAMETERHYDRATE DOUBLE DEFAULT NULL, + LJEPSHYDRATE DOUBLE DEFAULT NULL, + SPHERICALCORERADIUSHYDRATE DOUBLE DEFAULT '0', + DESHMATIONICDIAMETER DOUBLE DEFAULT '0', + WAXFORMER INT DEFAULT '0', + B2_LARGEGF DOUBLE DEFAULT '0', + A1_SMALLGF DOUBLE DEFAULT '0', + B1_SMALLGF DOUBLE DEFAULT '0', + A1_LARGEGF DOUBLE DEFAULT '0', + B1_LARGEGF DOUBLE DEFAULT '0', + A2_SMALLGF DOUBLE DEFAULT '0', + B2_SMALLGF DOUBLE DEFAULT '0', + A2_LARGEGF DOUBLE DEFAULT '0', + CPSOLID1 DOUBLE DEFAULT '0', + CPSOLID2 DOUBLE DEFAULT '0', + CPSOLID3 DOUBLE DEFAULT '0', + CPSOLID4 DOUBLE DEFAULT '0', + CPSOLID5 DOUBLE DEFAULT '0', + CPLIQUID1 DOUBLE DEFAULT '0', + CPLIQUID2 DOUBLE DEFAULT '0', + CPLIQUID3 DOUBLE DEFAULT '0', + CPLIQUID4 DOUBLE DEFAULT '0', + CPLIQUID5 DOUBLE DEFAULT '0', + MCPR1 DOUBLE DEFAULT '0', + MCPR2 DOUBLE DEFAULT '0', + MCPR3 DOUBLE DEFAULT '0', + PARACHOR_CPA DOUBLE DEFAULT '0' +); + +CREATE CACHED TABLE PUBLIC.COMP32( + ID INT NOT NULL, + NAME VARCHAR(255) DEFAULT NULL, + INDEX INT DEFAULT NULL, + FORMULA VARCHAR(255) DEFAULT NULL, + MOLARMASS DOUBLE DEFAULT NULL, + LIQDENS DOUBLE DEFAULT NULL, + TC DOUBLE DEFAULT NULL, + PC DOUBLE DEFAULT NULL, + ACSFACT DOUBLE DEFAULT NULL, + NORMBOIL DOUBLE DEFAULT NULL, + MWAVG DOUBLE DEFAULT NULL, + CRITVOL DOUBLE DEFAULT NULL, + PVMODEL VARCHAR(255) DEFAULT NULL, + CPA DOUBLE DEFAULT NULL, + CPB DOUBLE DEFAULT NULL, + CPC DOUBLE DEFAULT NULL, + CPD DOUBLE DEFAULT NULL, + ANTOINEA DOUBLE DEFAULT NULL, + ANTOINEB DOUBLE DEFAULT NULL, + ANTOINEC DOUBLE DEFAULT NULL, + ANTOINED DOUBLE DEFAULT NULL, + DIPOLEMOMENT DOUBLE DEFAULT NULL, + VISCFACT DOUBLE DEFAULT NULL, + RACKETZ DOUBLE DEFAULT NULL, + LJDIAMETER DOUBLE DEFAULT NULL, + LJEPS DOUBLE DEFAULT NULL, + SPHERICALCORERADIUS DOUBLE DEFAULT '0', + LIQVISCMODEL INT DEFAULT NULL, + LIQVISC1 DOUBLE DEFAULT NULL, + LIQVISC2 DOUBLE DEFAULT NULL, + LIQVISC3 DOUBLE DEFAULT NULL, + LIQVISC4 DOUBLE DEFAULT NULL, + GIBBSENERGYOFFORMATION DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER1 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER2 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER3 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER4 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER5 DOUBLE DEFAULT NULL, + IONICCHARGE INT DEFAULT NULL, + REFERENCESTATETYPE VARCHAR(255) DEFAULT NULL, + SCHWARTZENTRUBER1 DOUBLE DEFAULT NULL, + SCHWARTZENTRUBER2 DOUBLE DEFAULT NULL, + SCHWARTZENTRUBER3 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY1 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY2 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY3 DOUBLE DEFAULT NULL, + PARACHOR DOUBLE DEFAULT NULL, + HEATOFFUSION DOUBLE DEFAULT NULL, + TRIPLEPOINTDENSITY DOUBLE DEFAULT NULL, + TRIPLEPOINTPRESSURE DOUBLE DEFAULT NULL, + TRIPLEPOINTTEMPERATURE DOUBLE DEFAULT NULL, + MELTINGPOINTTEMPERATURE DOUBLE DEFAULT NULL, + ENTHALPYOFFORMATION DOUBLE DEFAULT NULL, + ABSOLUTEENTROPY DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS1 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS2 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS3 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS4 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS5 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS1 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS2 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS3 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS4 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS5 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS1 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS2 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS3 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS4 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS5 DOUBLE DEFAULT NULL, + ELECTROLYTEINTERACTIONTYPE VARCHAR(255) DEFAULT NULL, + STDDENS DOUBLE DEFAULT NULL, + MC1 DOUBLE DEFAULT NULL, + MC2 DOUBLE DEFAULT NULL, + MC3 DOUBLE DEFAULT NULL, + ASSOCIATIONSITES INT DEFAULT '0', + ASSOCIATIONSCHEME VARCHAR(50) DEFAULT NULL, + ASSOCIATIONBOUNDINGVOLUME DOUBLE DEFAULT '0', + ASSOCIATIONENERGY DOUBLE DEFAULT '0', + ACPA DOUBLE DEFAULT '0', + BCPA DOUBLE DEFAULT '0', + MCPA DOUBLE DEFAULT '0', + ANTOINESOLIDA DOUBLE DEFAULT '0', + ANTOINESOLIDB DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.COMP32 ADD CONSTRAINT PUBLIC.CONSTRAINT_76 PRIMARY KEY(ID); +-- 43 +/- SELECT COUNT(*) FROM PUBLIC.COMP32; +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(1, 'water ', 1, 'H2O ', 18.015, 0.999, 374.15, 220.89, 0.344, 100.0, 18.015, 56.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -57.71, 7647.0, 0.1442, -1.357E-4, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0829284103, -1.2432575684, -0.2539191045, -0.384, 0.00525, -6.37E-6, 207.0, 2700.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 1.09, -0.638, 0.635, 4, NULL, 0.0692, 16655.0, 12277.0, 1.4515, 0.67359, 17.38710706, -6141.7627458702), +(2, 'Cl- ', 100, 'Cl- ', 35.45, 0.797, 444.15, 290.89, 0.344, 64.55, 35.453, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.6, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 12277.0, 1.45, 0.0, 0.0, 0.0), +(3, 'Na+ ', 99, 'Na+ ', 22.99, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.68, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.038, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(4, 'Mg++ ', 116, 'Mg++ Mg++', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 6.94, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.038, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(5, 'MDEA ', 96, 'MDEA ', 119.1632, 1.038, 403.85, 38.76, 1.242, 140.0, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.2, 4.5, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, 8.16976, 8989.3, 0.0, 0.0, 0.0, 0, 'solvent ', 0.0381776215, 33.1315952807, -46.9784551908, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'fitted ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6, 'MDEA+ ', 94, 'CH4O ', 120.1632, 1.038, 403.85, 38.76, 1.242, 64.55, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 4.5, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7, 'H3O+ ', 95, 'CH4O ', 19.0, 0.797, 444.15, 290.89, 0.344, 64.55, 19.0, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 5.06, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8, 'propane ', 22, 'CH4O ', 44.097, 0.0, 96.65, 42.46, 0.152, -42.05, 44.097, 203.0, 'Classic ', -4.224, 0.306, -1.59E-4, 3.21E-8, -6.72219, 1.33236, -2.13868, -1.38551, 0.0, 0.0, 0.2, 5.118, 237.1, 0.0, 3, -7.764, 722.0, 0.0238, -4.67E-5, -24400.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.1, 0.773, -0.509, 1.03, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(9, 'CO2 ', 18, 'CO2 ', 44.01, 1.1, 31.05, 73.76, 0.225, -78.5, 44.01, 94.0, 'Classic ', 19.793, 0.0734, -5.6E-5, 1.72E-8, -6.95626, 1.19695, -3.12614, 2.99448, 0.0, 0.0, 0.0, 3.941, 195.2, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394000.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.04136, -3.9551171949, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.1, 0.865, -0.439, 1.35, 4, NULL, 0.0436644095, 657.4, 33774.01431, 2.7426129881, 0.8220309417, 0.0, 0.0), +(10, 'ethane ', 21, 'C2H6 ', 30.07, 0.544459352, 32.25, 48.84, 0.098, -88.55, 30.07, 148.0, 'Classic ', 5.409, 0.178, -6.94E-5, 8.71E-9, -6.34307, 1.0163, -1.19116, -2.03539, 0.0, 0.0, 0.2, 4.443, 215.7, 0.0, 3, -10.23, 668.0, 0.0439, -9.59E-5, -31900.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 2860.0, 652.0, 1.13E-5, 90.4, 90.4, -83800.0, 229.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.1, 0.685, -0.428, 0.738, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(11, 'methane ', 20, 'CH4 ', 16.043, 0.422182073, -82.586, 45.389, 0.008, -161.55, 16.043, 99.0, 'Classic ', 19.249, 0.0521, 1.2E-5, -1.13E-8, -6.00435, 1.1885, -0.83408, -1.22833, 0.0, 0.0, 0.0, 3.165, 154.54, 0.3834, 3, -26.87, 1150.0, 0.187, -5.21E-4, -50500.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, 0.303, -6.05E-4, -3.2E-6, 207.0, 941.0, 452.0, 0.117, 90.7, 90.7, -74500.0, 186.0, 33.0, -0.0159, -1.55E-5, 0.0, 0.0, 2.92, 0.29, 191.0, 0.289, 0.0, 1.02E7, 0.261, -0.147, 0.222, 0.0, 'calculate ', 0.1, 0.547, -0.399, 0.575, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(12, 'methanol ', 2, 'CH4O ', 32.042, 0.797, 239.45, 80.96, 0.559, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.2, 3.626, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 1.45, -0.815, 0.249, 4, NULL, 0.0161, 24591.0, 40531.0, 3.0978, 0.43102, 17.38710706, -7582.4062196343); +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(13, 'MEG ', 4, 'C2H6O2 ', 62.069, 1.117, 446.55, 77.1, 0.487, 197.35, 62.069, 186.0, 'Classic ', 35.701, 0.248, -1.5E-4, 3.01E-8, 13.6299, 6022.18, -28.25, 0.0, 2.3082, 0.215, 0.2488, 3.626, 481.8, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.6540090117, -3.9551171949, 3.671191916, -0.384, 0.00525, -6.37E-6, 207.0, 9960.0, 904.0, 2.42E-6, 260.0, 260.0, -388000.0, 324.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 1.32, 0.251, 720.0, 0.219, 0.0, 8.29E7, 0.427, 0.0, 0.0, 0.0, 'calculate ', 1.117, 0.0, 0.0, 0.0, 0, NULL, 5.14E-5, 19752.0, 10819.0, 5.14, 0.6744, 17.38710706, -7566.84658558), +(14, 'oxygen ', 17, 'O2 ', 31.999, 0.0, -118.55, 50.46, 0.021, -182.95, 31.999, 73.4, 'Classic ', 28.103, -3.68E-6, 1.75E-5, -1.07E-8, -6.28275, 1.73619, -1.81349, -0.0254, 0.0, 0.0, 0.2905, 3.467, 106.7, 0.0, 3, -4.771, 215.0, 0.0139, -6.26E-5, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.1, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(15, 'TEG ', 6, 'C6H14O4 ', 150.175, 1.127, 437.0, 33.13, 1.2874, 278.3, 150.175, 450.0, 'Classic ', 86.363, 0.601, -3.62E-4, 7.28E-8, 6.7568, 3715.222, -1.299, 0.0, 2.2, 0.215, 0.2462, 3.626, 481.8, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.127, 2.49, -1.46, -2.63, 0, NULL, 1.88E-5, 14337.0, 39126.0, 13.21, 1.1692, 0.0, 0.0), +(16, 'DEG ', 5, 'C4H10O3 ', 106.122, 1.119, 407.85, 46.61, 1.2011, 245.85, 106.122, 316.0, 'Classic ', 73.051, 0.346, -1.47E-4, 1.85E-8, 10.4124, 4122.52, -122.5, 0.0, 2.2, 0.215, 0.2489, 3.626, 481.8, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.119, 0.0, 0.0, 0.0, 0, NULL, 6.4E-6, 19684.0, 26408.0, 9.21, 0.7991, 0.0, 0.0); +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(17, 'nitrogen ', 15, 'N2 ', 28.014, 0.80796486, -146.95, 33.94, 0.04, -195.75, 28.014, 89.8, 'Classic ', 31.146, -0.0136, 2.68E-5, -1.17E-8, -6.09676, 1.1367, -1.04072, -1.93306, 0.0, 0.0, 0.2, 3.798, 71.4, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 720.0, 870.0, 0.125, 63.1, 63.1, 0.0, 192.0, 37.9, -0.0603, 0.0, 0.0, 0.0, 3.21, 0.286, 126.0, 0.297, 0.0, 7490000.0, 0.404, -0.317, 0.273, 0.0, 'calculate ', 0.1, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, 'n-butane ', 25, 'C4H10 ', 58.124, 0.0, 152.05, 38.0, 0.193, -0.45, 58.124, 255.0, 'Classic ', 9.486, 0.331, -1.11E-4, -2.82E-9, -6.88709, 1.15157, -1.99873, -3.13003, 0.0, 0.0, 0.2, 4.687, 531.4, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.1, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(19, 'HCO3- ', 97, 'CH4O ', 61.0, 0.797, 444.15, 290.89, 0.344, 64.55, 61.0, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.36, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(20, 'Li+ ', 102, 'Li ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 4.76, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(21, 'K+ ', 112, 'K ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 2.5, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(22, 'Ca++ ', 101, 'Ca2 ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 6.2, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 'I- ', 115, 'I ', 35.453, 0.797, 444.15, 290.89, 0.344, 64.55, 35.453, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 4.32, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, 'Sr++ ', 118, 'Na ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 6.2, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(25, 'Ba++ ', 117, 'Ba ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 5.8, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, 'OH- ', 98, 'CH4O ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.626, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -157000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 'CO3-- ', 105, 'CO3minus2 ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.36, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 'NH4+ ', 104, 'NH4 ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 2.5, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(29, 'Br- ', 103, 'Br ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.9, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 'n-pentane ', 29, 'nC5 ', 72.151, 0.0, 196.45, 33.74, 0.251, 36.05, 72.151, 304.0, 'Classic ', -3.625, 0.487, -2.58E-4, 5.3E-8, -7.28936, 1.53679, -3.08367, -1.02456, 0.0, 0.0, 0.2684, 5.784, 341.1, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0789, -1.34, 0.043, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 'n-hexane ', 35, 'C6H14 ', 86.178, 0.664, 234.25, 29.69, 0.296, 68.75, 86.178, 370.0, 'Classic ', -4.412, 0.582, -3.12E-4, 6.49E-8, -7.46765, 1.44211, -3.2822, -2.50941, 0.0, 0.0, 0.2635, 5.949, 399.3, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0789, -1.34, 0.043, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, 'benzene ', 38, 'C6H6 ', 78.114, 0.886, 288.95, 48.94, 0.212, 80.15, 78.114, 259.0, 'Classic ', -33.913, 0.474, -3.02E-4, 7.13E-8, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(33, 'toluene ', 45, 'C7H8 ', 92.141, 0.871, 318.55, 41.14, 0.257, 110.65, 92.141, 316.0, 'Classic ', -24.352, 0.512, -2.77E-4, 4.91E-8, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, 'n-heptane ', 42, 'C7H16 ', 100.205, 0.69, 267.05, 27.36, 0.351, 98.45, 100.205, 432.0, 'Classic ', -5.145, 0.676, -3.65E-4, 7.66E-8, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 'n-octane ', 48, 'C8H18 ', 114.232, 0.708, 295.65, 24.82, 0.394, 125.65, 114.232, 492.0, 'Classic ', -6.095, 0.771, -4.2E-4, 8.85E-8, -7.91211, 1.38007, -3.80435, -4.50132, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 'nC10 ', 111, 'C10H22 ', 142.285, 0.734, 344.45, 21.08, 0.49, 174.15, 142.285, 603.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(37, 'n-nonane ', 111, 'C9H20 ', 128.258, 0.722, 321.45, 23.1, 0.44, 150.85, 128.258, 548.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 'hydrogen ', 14, 'hydrogen ', 2.016, 0.0, -239.95, 12.97, -0.22, -252.75, 2.016, 65.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 'argon ', 16, 'argon ', 39.948, 0.0, -122.35, 48.74, -0.004, -185.85, 39.948, 74.9, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 'i-butane ', 24, 'C4H10 ', 58.124, 0.0, 134.95, 36.48, 0.176, -11.75, 58.124, 263.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMP32(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME, ASSOCIATIONENERGY, ACPA, BCPA, MCPA, ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(41, 'c-propane ', 23, 'C3H6 ', 42.081, 0.0, 124.65, 54.92, 0.264, -32.75, 42.081, 170.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 'Cs+', 99, 'Cs+', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 2.38, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 'Rb+', 99, 'Rb+', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 2.36, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.COMPEVEN( + ID INT NOT NULL, + NAME VARCHAR(50) DEFAULT NULL, + COMPTYPE VARCHAR(50) DEFAULT NULL, + COMPINDEX INT DEFAULT NULL, + FORMULA VARCHAR(255) DEFAULT NULL, + MOLARMASS DOUBLE DEFAULT NULL, + LIQDENS DOUBLE DEFAULT NULL, + TC DOUBLE DEFAULT NULL, + PC DOUBLE DEFAULT NULL, + ACSFACT DOUBLE DEFAULT NULL, + NORMBOIL DOUBLE DEFAULT NULL, + MWAVG DOUBLE DEFAULT NULL, + CRITVOL DOUBLE DEFAULT NULL, + PVMODEL VARCHAR(255) DEFAULT NULL, + CPA DOUBLE DEFAULT NULL, + CPB DOUBLE DEFAULT NULL, + CPC DOUBLE DEFAULT NULL, + CPD DOUBLE DEFAULT NULL, + ANTOINEVAPPRESLIQTYPE VARCHAR(50) DEFAULT NULL, + ANTOINEA DOUBLE DEFAULT NULL, + ANTOINEB DOUBLE DEFAULT NULL, + ANTOINEC DOUBLE DEFAULT NULL, + ANTOINED DOUBLE DEFAULT NULL, + ANTOINEE DOUBLE DEFAULT '0', + DIPOLEMOMENT DOUBLE DEFAULT NULL, + VISCFACT DOUBLE DEFAULT NULL, + RACKETZ DOUBLE DEFAULT NULL, + LJDIAMETER DOUBLE DEFAULT NULL, + LJEPS DOUBLE DEFAULT NULL, + SPHERICALCORERADIUS DOUBLE DEFAULT '0', + LIQVISCMODEL INT DEFAULT NULL, + LIQVISC1 DOUBLE DEFAULT NULL, + LIQVISC2 DOUBLE DEFAULT NULL, + LIQVISC3 DOUBLE DEFAULT NULL, + LIQVISC4 DOUBLE DEFAULT NULL, + GIBBSENERGYOFFORMATION DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER1 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER2 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER3 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER4 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER5 DOUBLE DEFAULT NULL, + IONICCHARGE INT DEFAULT NULL, + REFERENCESTATETYPE VARCHAR(255) DEFAULT NULL, + HENRYCOEF1 DOUBLE DEFAULT NULL, + HENRYCOEF2 DOUBLE DEFAULT '0', + HENRYCOEF3 DOUBLE DEFAULT NULL, + HENRYCOEF4 DOUBLE DEFAULT '0', + SCHWARTZENTRUBER1 DOUBLE DEFAULT NULL, + SCHWARTZENTRUBER2 DOUBLE DEFAULT NULL, + SCHWARTZENTRUBER3 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY1 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY2 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY3 DOUBLE DEFAULT NULL, + PARACHOR DOUBLE DEFAULT NULL, + HEATOFFUSION DOUBLE DEFAULT NULL, + TRIPLEPOINTDENSITY DOUBLE DEFAULT NULL, + TRIPLEPOINTPRESSURE DOUBLE DEFAULT NULL, + TRIPLEPOINTTEMPERATURE DOUBLE DEFAULT NULL, + MELTINGPOINTTEMPERATURE DOUBLE DEFAULT NULL, + ENTHALPYOFFORMATION DOUBLE DEFAULT NULL, + ABSOLUTEENTROPY DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS1 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS2 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS3 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS4 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS5 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS1 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS2 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS3 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS4 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS5 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS1 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS2 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS3 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS4 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS5 DOUBLE DEFAULT NULL, + ELECTROLYTEINTERACTIONTYPE VARCHAR(255) DEFAULT NULL, + STDDENS DOUBLE DEFAULT NULL, + MC1 DOUBLE DEFAULT NULL, + MC2 DOUBLE DEFAULT NULL, + MC3 DOUBLE DEFAULT NULL, + MC1SOLID DOUBLE DEFAULT NULL, + MC2SOLID DOUBLE DEFAULT NULL, + MC3SOLID DOUBLE DEFAULT NULL, + TWUCOON1 DOUBLE DEFAULT '0', + TWUCOON2 DOUBLE DEFAULT '0', + TWUCOON3 DOUBLE DEFAULT '0', + ASSOCIATIONSITES INT DEFAULT '0', + ASSOCIATIONSCHEME VARCHAR(50) DEFAULT NULL, + ASSOCIATIONBOUNDINGVOLUME_SRK DOUBLE DEFAULT '0', + ASSOCIATIONENERGY DOUBLE DEFAULT '0', + ACPA_SRK DOUBLE DEFAULT '0', + BCPA_SRK DOUBLE DEFAULT '0', + MCPA_SRK DOUBLE DEFAULT '0', + ACPA_PR DOUBLE DEFAULT NULL, + BCPA_PR DOUBLE DEFAULT NULL, + MCPA_PR DOUBLE DEFAULT NULL, + ASSOCIATIONBOUNDINGVOLUME_PR DOUBLE DEFAULT NULL, + CALCACTIVITY INT DEFAULT '1', + ANTOINESOLIDA DOUBLE DEFAULT '0', + ANTOINESOLIDB DOUBLE DEFAULT NULL, + ANTOINESOLIDC DOUBLE DEFAULT '0', + HSUB INT DEFAULT '0', + CRITICALVISCOSITY DOUBLE DEFAULT NULL +); +ALTER TABLE PUBLIC.COMPEVEN ADD CONSTRAINT PUBLIC.CONSTRAINT_A PRIMARY KEY(ID); +-- 116 +/- SELECT COUNT(*) FROM PUBLIC.COMPEVEN; +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(1, 'water', 'water', 1, 'H2O ', 18.015, 0.999, 374.15, 220.89, 0.344, 100.0, 18.015, 56.0, 'Classic ', 32.239, 0.001907, 1.055E-5, -3.596E-9, 'log10', 72.55, -7206.7, -7.1385, 4.04E-6, 2.0, 1.8, 0.0, 0.2338, 2.52, 809.1, 0.0, 3, -57.71, 7647.0, 0.1442, -1.357E-4, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0740384246, -0.9453851756, -0.6987591275, -0.384, 0.00525, -6.37E-6, 207.0, 2700.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 1.087, -0.638, 0.635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '4C', 0.0692, 16655.0, 12277.0, 1.4515, 0.67359, 13855.596964, 1.4563608786, 0.6641553237, 0.0464737892, 1, 17.38710706, -6141.7627458702, 0.0, 0, 0.0), +(2, 'Cl-', 'ion', 100, 'Cl- ', 35.45, 0.797, 444.15, 290.89, 0.344, 64.55, 35.453, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.6, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 12277.0, 1.45, 0.0, 12277.0, 1.45, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(3, 'Na+', 'ion', 99, 'Na+ ', 22.99, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.68, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.038, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(4, 'Mg++', 'ion', 116, 'Mg++ Mg++', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 6.94, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.038, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(5, 'MDEA', 'amine', 96, 'MDEA ', 119.1632, 1.038, 403.85, 38.76, 1.242, 140.0, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', 26.137, -7588.5, 1.0E-10, 1.0E-10, 1.0E-10, 1.7, 0.0, 0.260355, 4.5, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, 8.16976, 8989.3, 0.0, 0.0, 0.0, 0, 'solute', 0.0, 0.0, 0.0, 0.0, 0.5212918734, -1.1520807481, -0.013889882, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0541207125, 12000.0, 258457.097739, 10.7510088868, 1.3642192066, 376276.883971, 10.7835858502, 1.2582983073, 0.0, 1, 17.38710706, 1.7627458702, 0.0, 0, 0.0), +(6, 'MDEA+', 'ion', 94, 'CH4O ', 120.1632, 1.038, 403.85, 38.76, 1.242, 64.55, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 4.5, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(7, 'H3O+', 'ion', 95, 'CH4O ', 19.02, 0.797, 444.15, 290.89, 0.344, 64.55, 19.0, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 4.06, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(8, 'propane', 'HC', 22, 'CH4O ', 44.09676, 0.7, 96.64999, 42.45518, 0.152, -42.04999, 44.09676, 203.0, 'Classic ', -4.223981, 0.3062282, -1.586191E-4, 3.214244E-8, 'log', 59.078, -3492.6, -6.0669, 1.0919E-5, 2.0, 0.0, 0.0, 0.0, 3.3093, 203.31, 0.6502, 3, -7.764, 722.0, 0.0238, -4.67E-5, -24400.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, -0.0150699905, -4.344143673, 4.0073255906, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 1.71089348780884E-9, 85.47, 85.5, -242000.0, 189.0, 18.861, -0.020332, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.1, 0.8653, -0.4386, 1.3447, 0.0, 0.0, 0.0, 0.435825883187995, 0.866132178874755, 1.39543281827291, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.24869, 1, 1.0, -11.1254, 0.0, 28500, 2.49734E-5), +(9, 'CO2', 'inert', 18, 'CO2 ', 44.0098, 1.1, 31.05002, 73.7646, 0.225, -78.5, 44.0098, 94.0, 'Classic ', 19.79285, 0.07342778, -5.601276E-5, 1.715129E-8, 'log', 140.54, -4735.0, -21.268, 0.040909, 1.0, 0.0, 0.0, 0.0, 3.941, 195.2, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394000.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 170.7126, -8477.711, -21.9574, 0.005781, 0.0335767142, -1.3034082208, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 5.20441206565714, 216.58, 216.592, -242000.0, 189.0, 32.939, 0.06842, -2.847E-4, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.1, 0.88173892991005, -0.856255021731479, 3.09493932734887, 0.0, 0.0, 0.0, 1.41360106822881, -0.605965448515158, 1.10181494831638, 2, 'CO2', 0.02, 900.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 6.81228, -1301.679, -3.494, 26100, 3.76872E-5); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(10, 'ethane', 'HC', 21, 'C2H6 ', 30.06982, 0.544459352, 32.25, 48.83865, 0.098, -88.54999, 30.06982, 148.0, 'Classic ', 5.408706, 0.1780854, -6.936707E-5, 8.7117E-9, 'log', 51.857, -2598.7, -5.1283, 1.4913E-5, 2.0, 0.0, 0.0, 0.0, 3.2641, 176.4, 0.5651, 3, -10.23, 668.0, 0.0439, -9.59E-5, -31900.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0025828409, 12.5382905195, -18.3809737878, -0.384, 0.00525, -6.37E-6, 207.0, 2860.0, 652.0, 1.14027678583216E-5, 90.35, 89.95, -83800.0, 229.0, 25.263, -0.01095, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.1, 0.6853, -0.4284, 0.7382, 0.0, 0.0, 0.0, 0.299607318144098, 0.876626838893321, 1.67923840048711, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.04609, 1, 1.0, -3.33355, 0.0, 20500, 2.17562E-5), +(11, 'methane', 'HC', 20, 'CH4 ', 16.04288, 0.422182073, -82.54999, 46.00155, 0.008, -161.55, 16.04288, 99.0, 'Classic ', 19.249, 0.0521, 1.1975E-5, -1.132E-8, 'log', 39.205, -1324.4, -3.4366, 3.1019E-5, 2.0, 0.0, 0.0, 0.0, 3.165, 154.54, 0.3834, 3, -26.87, 1150.0, 0.187, -5.21E-4, -50500.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 900.0, 0.0, 0.0, 0.0, 0.0144887467, 1.7952740857, -4.2300325392, 0.303, -6.05E-4, -3.2E-6, 207.0, 941.0, 452.0, 0.116656056826767, 90.69, 90.65, -74500.0, 186.0, 33.022, -0.01587, -1.55E-4, 0.0, 0.0, 2.92, 0.29, 191.0, 0.289, 0.0, 1.02E7, 0.261, -0.147, 0.222, 0.0, 'calculate ', 0.1, 0.5472, -0.3992, 0.5751, 0.0, 0.0, 0.0, 0.122841597930773, 0.914470789028427, 2.74197861113463, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.18626, 1, 1.0, -6.68082, 0.0, 9700, 1.5293E-5), +(12, 'methanol', 'alcohol', 2, 'CH4O ', 32.04228, 0.7969999, 239.45, 80.95868, 0.559, 64.55002, 32.04228, 99.00002, 'Classic ', 21.14921, 0.070916, 2.587E-5, 2.586718E-5, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.626, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 1.445, -0.815, 0.2486, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, '2B', 0.0161, 24591.0, 40531.0, 3.0978, 0.43102, 47052.0, 3.3, 0.9037, 0.0449, 1, 17.38710706, -7582.4062196343, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(13, 'MEG', 'glycol', 4, 'C2H6O2 ', 62.069, 1.117, 371.85, 77.1, 1.1464, 197.35, 62.069, 186.0, 'Classic ', 35.701, 0.2483, -1.497E-4, -2.851292E-8, 'log', 13.6299, 6022.18, -28.25, 0.0, 0.0, 2.3082, 0.0, 0.2488, 3.626, 481.8, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.6540090117, -3.9551171949, 3.671191916, -0.384, 0.00525, -6.37E-6, 207.0, 9960.0, 904.0, 2.42E-6, 260.0, 260.0, -388000.0, 324.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 1.32, 0.251, 720.0, 0.219, 0.0, 8.29E7, 0.427, 0.0, 0.0, 0.0, 'calculate ', 1.117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '4C', 0.0141, 19752.0, 108190.0, 5.14, 0.6744, 108190.0, 5.14, 0.6744, 0.0514, 1, 17.38710706, -7566.84658558, 0.0, 0, 0.0), +(14, 'oxygen', 'inert', 17, 'O2 ', 31.999, 0.9, -118.55, 50.46, 0.021, -182.95, 31.999, 73.4, 'Classic ', 28.103, -3.68E-6, 1.75E-5, -1.07E-8, 'log', -6.28275, 1.73619, -1.81349, -0.0254, 0.0, 0.0, 0.0, 0.0, 3.467, 106.7, 0.0, 3, -4.771, 215.0, 0.0139, -6.26E-5, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(15, 'TEG', 'glycol', 6, 'C6H14O4 ', 150.175, 1.127, 437.0, 33.13, 1.2874, 278.3, 150.175, 450.0, 'Classic ', 86.363, 0.601, -3.62E-4, 7.28E-8, 'log', 6.7568, 3715.222, -1.299, 0.0, 0.0, 2.2, 0.0, 0.2462, 3.626, 481.8, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.127, 2.49, -1.46, -2.63, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '4C', 0.0188, 14337.0, 391260.0, 13.21, 1.1692, 391260.0, 13.21, 1.1692, 0.0188, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(16, 'DEG', 'glycol', 5, 'C4H10O3 ', 106.122, 1.119, 407.85, 46.61, 1.2011, 245.85, 106.122, 316.0, 'Classic ', 31.146, -0.01356, 2.679E-5, -1.168E-8, 'log', 10.4124, 4122.52, -122.5, 0.0, 0.0, 2.2, 0.0, 0.2489, 3.626, 481.8, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.119, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0064, 19684.0, 264080.0, 9.21, 0.7991, 264080.0, 9.21, 0.7991, 0.0064, 1, 0.0, 0.0, 0.0, 0, 0.0), +(17, 'nitrogen', 'inert', 15, 'N2 ', 28.014, 0.80796486, -146.95, 33.906, 0.035671, -195.75, 28.014, 89.8, 'Classic ', 31.146, -0.0136, 2.68E-5, -1.17E-8, 'log', 58.282, -1084.1, -8.3144, 0.044127, 1.0, 0.0, 0.0, 0.0, 3.798, 71.4, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0551188565, -2.3463538958, 1.5681216003, -0.384, 0.00525, -6.37E-6, 207.0, 720.0, 870.0, 0.12508, 63.15, 63.3, 0.0, 192.0, 37.87, -0.060272, 0.0, 0.0, 0.0, 3.21, 0.286, 126.0, 0.297, 0.0, 7490000.0, 0.404, -0.317, 0.273, 0.0, 'calculate ', 0.1, 0.574258328861063, -0.322594876107937, 0.590654497168663, 0.0, 0.0, 0.0, 0.112629606941906, 0.902199714673755, 2.87496067802609, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.60189907255993, 1, 1.0, -21.2454804523503, 0.0, 0, 1.74179E-5), +(18, 'n-butane', 'HC', 25, 'C4H10 ', 58.124, 0.8, 151.97, 37.69, 0.19716, -0.45, 58.124, 255.0, 'Classic ', 9.486, 0.3313, -1.108E-4, -2.822E-9, 'log', 66.343, -4363.2, -7.046, 9.4509E-6, 2.0, 0.0, 0.0, 0.0, 4.687, 531.4, 0.7, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, -0.0184864922, -4.9215745194, 4.8581869663, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 6.76236044881146E-6, 134.86, 138.15, -242000.0, 189.0, 15.194, -0.006886, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.1, 0.808063554971883, -0.212724944854601, 0.362961475375516, 0.0, 0.0, 0.0, 0.331800583244216, 0.854692733311106, 1.86582885769644, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.76447, 1, 1.0, -13.4385, 0.0, 35900, 2.57682E-5); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(19, 'HCO3-', 'ion', 97, 'CH4O ', 61.0, 0.797, 444.15, 290.89, 0.344, 64.55, 61.0, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.12, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(20, 'Li+', 'ion', 102, 'Li ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 4.76, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(21, 'K+', 'ion', 112, 'K ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 2.5, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(22, 'Ca++', 'ion', 101, 'Ca2 ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 6.2, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(23, 'I-', 'ion', 115, 'I ', 35.453, 0.797, 444.15, 290.89, 0.344, 64.55, 35.453, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 4.32, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(24, 'Sr++', 'ion', 118, 'Na ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 6.2, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(25, 'Ba++', 'ion', 117, 'Ba ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 5.8, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(26, 'OH-', 'ion', 98, 'CH4O ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.52, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -157000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(27, 'CO3--', 'ion', 105, 'CO3minus2 ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.7, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(28, 'NH4+', 'ion', 104, 'NH4 ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'loglog', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 2.5, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(29, 'Br-', 'ion', 103, 'Br ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.9, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(30, 'n-pentane', 'HC', 29, 'nC5 ', 72.151, 0.8, 196.55, 33.64, 0.251, 36.05, 72.151, 304.0, 'Classic ', -3.625, 0.4873, -2.58E-4, 5.304E-8, 'log', 78.741, -5420.3, -8.8253, 9.6171E-6, 2.0, 0.0, 0.0, 0.0, 5.784, 341.1, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.34, 0.043, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 6.8642E-7, 143.42, 273.0, -242000.0, 189.0, 13.533, -0.0060608, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.90386113412537, -0.358553151859421, 0.66388522136048, 0.0, 0.0, 0.0, 0.272876106418605, 0.850310122197748, 2.34072886485686, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 42000, 2.58651E-5), +(31, 'n-hexane', 'HC', 35, 'C6H14 ', 86.178, 0.664, 234.25, 29.69, 0.296, 68.75, 86.178, 370.0, 'Classic ', -4.412, 0.5819, -3.118E-4, 6.493E-8, 'log', -7.46765, 1.44211, -3.2822, -2.50941, 0.0, 0.0, 0.0, 0.0, 5.949, 399.3, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.34, 0.043, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 1.1061, -1.4411, 2.9173, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 2.57841E-5), +(32, 'benzene', 'HC', 38, 'C6H6 ', 78.114, 0.886, 288.95, 48.93997, 0.212, 80.14999, 78.114, 259.0, 'Classic ', -33.91325, 0.4743083, -3.016651E-4, 7.129277E-8, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.8457, -0.3856, 0.8843, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(33, 'toluene', 'HC', 45, 'C7H8 ', 92.141, 0.871, 318.55, 41.13795, 0.257, 110.65, 92.141, 316.0, 'Classic ', -24.35173, 0.5124037, -2.765054E-4, 4.910535E-8, 'loglog', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.9469, -0.5896, 1.2132, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(34, 'n-heptane', 'HC', 42, 'C7H16 ', 100.205, 0.69, 267.05, 27.35775, 0.351, 98.45, 100.205, 432.0, 'Classic ', -5.144968, 0.6760882, -3.650457E-4, 7.656751E-8, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 1.0874, -0.7465, 1.5765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 291780.0, 12.535, 0.9137, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(35, 'n-octane', 'HC', 48, 'C8H18 ', 114.2315, 0.708, 295.65, 24.82463, 0.394, 125.65, 114.232, 492.0, 'Classic ', -6.095259, 0.7711173, -4.194677E-4, 8.854035E-8, 'log', -7.91211, 1.38007, -3.80435, -4.50132, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 1.0736, 0.0656, -0.272, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(36, 'nC10', 'HC', 111, 'C10H22 ', 142.285, 0.734, 344.45, 21.08, 0.49, 174.15, 142.285, 603.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 1.2407, -0.34943, 0.7327, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(37, 'n-nonane', 'HC', 111, 'C9H20 ', 128.2584, 0.7223, 321.45, 23.1021, 0.44, 150.85, 128.258, 548.0, 'Classic ', 3.143914, 0.6773441, -1.928212E-4, -2.981067E-8, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 2.57928E-5), +(38, 'hydrogen', 'HC', 14, 'hydrogen ', 2.016, 0.8, -239.95, 12.97, -0.22, -252.75, 2.016, 65.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 1.1365, 0.0786, -0.3464, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(39, 'argon', 'HC', 16, 'argon ', 39.948, 0.8, -122.35, 48.74, -0.004, -185.85, 39.948, 74.9, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(40, 'i-butane', 'HC', 24, 'C4H10 ', 58.124, 0.8, 134.99, 36.199, 0.176, -11.75, 58.124, 263.0, 'Classic ', -1.39, 0.3847, -1.846E-4, 2.895E-8, 'log', 100.18, -4841.9, -13.541, 0.020063, 1.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.6, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 1.4051E-7, 113.54, 273.0, -242000.0, 189.0, 14.7, 0.0, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.78038835977862, -0.273389543395276, 0.65978711855078, 0.0, 0.0, 0.0, 0.2179712800665, 0.848891072851582, 2.28403696829083, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 24540, 2.71155E-5), +(41, 'c-propane', 'HC', 23, 'C3H6 ', 42.081, 0.8, 124.65, 54.92, 0.264, -32.75, 42.081, 170.0, 'Classic ', -35.236, 0.3813, -2.881E-4, 9.034E-8, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(42, 'Cs+', 'ion', 99, 'Cs+', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 2.38, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(43, 'Rb+', 'ion', 99, 'Rb+', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 2.36, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(44, 'ice', 'ice', 1, 'H2O ', 18.015, 0.999, 374.15, 220.89, 0.344, 100.0, 18.015, 56.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -57.71, 7647.0, 0.1442, -1.357E-4, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0829284103, -1.2432575684, -0.2539191045, -0.384, 0.00525, -6.37E-6, 207.0, 2700.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 1.09, -0.638, 0.635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0701182891, 16201.0, 11253.994266, 1.6297102017, 1.170113583, 13855.596964, 1.4563608786, 0.6641553237, 0.0464737892, 1, 17.38710706, -6141.7627458702, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(64, 'nC11', 'HC', 100, 'C11H24', 156.3, 0.7432, 365.65, 19.66, 0.535, 195.95, 156.3, 660.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(65, 'nC12', 'HC', 101, 'C12H26', 170.3, 0.7513, 385.15, 18.24, 0.562, 216.35, 170.3, 713.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(66, 'nC13', 'HC', 102, 'C13H28', 184.4, 0.758, 402.65, 17.23, 0.623, 235.45, 184.4, 780.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(67, 'nC14', 'HC', 103, 'C14H30', 198.4, 0.7639, 420.85, 16.21, 0.679, 253.55, 198.4, 830.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(68, 'nC15', 'HC', 104, 'C15H32', 212.4, 0.7691, 433.85, 15.2, 0.706, 270.65, 212.4, 880.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(69, 'nC16', 'HC', 105, 'C16H34', 226.4, 0.7738, 443.85, 14.19, 0.742, 286.85, 226.4, 920.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(70, 'nC17', 'HC', 106, 'C17H36', 240.5, 0.778, 459.85, 13.17, 0.77, 302.05, 240.5, 1000.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(71, 'nC18', 'HC', 107, 'C18H38', 254.5, 0.7819, 471.85, 12.06, 0.79, 316.35, 254.5, 1030.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(72, 'nC19', 'HC', 108, 'C19H40', 268.5, 0.7854, 482.85, 11.15, 0.827, 329.95, 268.5, 1085.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(73, 'nC20', 'HC', 109, 'C20H42', 282.6, 0.7881, 493.85, 11.15, 0.907, 343.85, 282.6, 1140.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(74, 'nC21', 'HC', 110, 'C21H44', 296.582, 0.7911, 506.45, 10.74, 0.861, 357.55, 296.582, 1195.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(75, 'nC22', 'HC', 111, 'C22H46', 310.609, 0.7937, 515.85, 10.23, 0.891, 369.55, 310.609, 1250.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(76, 'nC23', 'HC', 112, 'C23H48', 324.636, 0.7961, 524.75, 9.83, 0.921, 381.05, 324.636, 1305.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(77, 'nC24', 'HC', 113, 'C24H50', 338.662, 0.7984, 533.15, 9.32, 0.95, 391.95, 338.662, 1360.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(78, '22-dim-C3', 'HC', 114, 'C5H12', 72.151, 0.654, 160.65, 32.02, 0.197, 9.45, 72.151, 303.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(79, '22-dim-C4', 'HC', 115, 'C6H14', 86.178, 0.654, 215.55, 30.8, 0.231, 49.75, 86.178, 359.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(80, '23-dim-C4', 'HC', 116, 'C6H14', 86.178, 0.667, 226.75, 31.31, 0.247, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(81, '2-m-C5', 'HC', 117, 'C6H14', 86.178, 0.658, 224.35, 30.09, 0.279, 60.25, 86.178, 367.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(82, '3-m-C5', 'HC', 118, 'C6H14', 86.178, 0.669, 231.25, 31.21, 0.275, 63.25, 86.178, 367.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(83, 'c-C5', 'HC', 119, 'C5H8', 70.135, 0.669, 238.45, 45.09, 0.192, 49.25, 70.135, 260.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(90, 'iC5', 'HC', 119, 'C5H12', 72.151, 0.669, 187.25, 33.84, 0.227, 27.85, 72.151, 306.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(91, 'default', 'HC', 120, 'default', 16.043, 0.422182073, -82.586, 45.389, 0.008, -161.55, 16.043, 99.0, 'Classic ', 19.249, 0.0521, 1.2E-5, -1.13E-8, 'log', -6.00435, 1.1885, -0.83408, -1.22833, 0.0, 0.0, 0.0, 0.0, 3.165, 154.54, 0.3834, 3, -26.87, 1150.0, 0.187, -5.21E-4, -50500.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solvent solvent', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.303, -6.05E-4, -3.2E-6, 207.0, 941.0, 452.0, 0.117, 849.15, 849.15, -74500.0, 186.0, 33.0, -0.0159, -1.55E-5, 0.0, 0.0, 2.92, 0.29, 191.0, 0.289, 0.0, 1.02E7, 0.261, -0.147, 0.222, 0.0, 'calculate ', 0.1, 0.547, -0.399, 0.575, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(93, 'Piperazine', 'amine', 122, 'Piperazine', 86.137, 1.038, 364.85, 55.3, 0.414, 140.0, 86.137, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', 172.78, -13492.0, -21.91, 1.378E-5, 2.0, 1.7, 0.0, 0.2, 3.96, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, 118.061947164, 0.0, -0.410402915, 4.11201E-4, 0.0, 0, 'solvent', 0.0, 0.0, 0.0, 0.0, 1.745E-7, -1.492, -0.3435, 0.0, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0541207125, 12000.0, 258457.097739, 10.7510088868, 1.3642192066, 376276.883971, 10.7835858502, 1.2582983073, 0.0, 1, 17.38710706, 1.7627458702, 0.0, 0, 0.0), +(94, 'Piperazine+', 'ion', 123, 'Piperazine+', 87.137, 1.038, 364.85, 68.7, 0.8, 140.0, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.9, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, 8.16976, 8989.3, 0.0, 0.0, 0.0, 1, 'solute', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0541207125, 12000.0, 258457.097739, 10.7510088868, 1.3642192066, 376276.883971, 10.7835858502, 1.2582983073, 0.0, 0, 17.38710706, 1.7627458702, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(95, 'PZCOO-', 'ion', 124, 'PiperazineCarbamate', 129.147, 1.038, 364.85, 68.7, 0.8, 140.0, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 5.5, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, 8.16976, 8989.3, 0.0, 0.0, 0.0, -1, 'solute', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0541207125, 12000.0, 258457.097739, 10.7510088868, 1.3642192066, 376276.883971, 10.7835858502, 1.2582983073, 0.0, 0, 17.38710706, 1.7627458702, 0.0, 0, 0.0), +(96, 'H+PZCOO-', 'ion', 125, 'PiperazineZwitterion', 130.147, 1.038, 364.85, 68.7, 0.8, 140.0, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 5.4, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, 8.16976, 8989.3, 0.0, 0.0, 0.0, 0, 'solute', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0541207125, 12000.0, 258457.097739, 10.7510088868, 1.3642192066, 376276.883971, 10.7835858502, 1.2582983073, 0.0, 0, 17.38710706, 1.7627458702, 0.0, 0, 0.0), +(97, '-OOCPZCOO-', 'ion', 126, 'PiperazineDiCarbamate', 172.157, 1.038, 729.68, 110.6, 0.414, 140.0, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 7.0, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, 8.16976, 8989.3, 0.0, 0.0, 0.0, -2, 'solute', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0541207125, 12000.0, 258457.097739, 10.7510088868, 1.3642192066, 376276.883971, 10.7835858502, 1.2582983073, 0.0, 0, 17.38710706, 1.7627458702, 0.0, 0, 0.0), +(123, 'c-hexane', 'HC', 120, 'default', 58.08, 0.422182073, 234.95, 47.0, 0.307, 119.07, 16.043, 99.0, 'Classic ', 19.249, 0.0521, 1.2E-5, -1.13E-8, 'log', -6.00435, 1.1885, -0.83408, -1.22833, 0.0, 0.0, 0.0, 0.0, 3.165, 154.54, 0.3834, 3, -26.87, 1150.0, 0.187, -5.21E-4, -50500.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.303, -6.05E-4, -3.2E-6, 207.0, 941.0, 452.0, 0.117, 90.7, 90.7, -74500.0, 186.0, 33.0, -0.0159, -1.55E-5, 0.0, 0.0, 2.92, 0.29, 191.0, 0.289, 0.0, 1.02E7, 0.261, -0.147, 0.222, 0.0, 'calculate ', 0.1, 0.547, -0.399, 0.575, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(124, 'c-C6', 'HC', 119, 'C6H8', 84.161, 0.669, 280.35, 40.73, 0.211, 49.25, 70.135, 260.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(125, '22-DM-C5', 'HC', 116, 'C7H16', 100.204, 0.667, 247.25, 27.7, 0.287, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(126, 'M-cy-C5', 'HC', 116, 'C7H16', 84.161, 0.667, 259.64, 37.84, 0.227, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(127, '24-DM-C5', 'HC', 116, 'C7H16', 100.204, 0.667, 246.55, 27.4, 0.304, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(128, '223-TM-C4', 'HC', 116, 'C7H16', 100.204, 0.667, 257.95, 29.5, 0.25, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'loglog', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(129, '33-DM-C5', 'HC', 116, 'C7H16', 100.204, 0.667, 263.15, 29.5, 0.269, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(131, '2-M-C6', 'HC', 116, 'C7H16', 100.204, 0.667, 256.95, 27.3, 0.331, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(132, '23-DM-C5', 'HC', 116, 'C7H16', 100.204, 0.667, 264.15, 29.1, 0.297, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(133, '11-DM-cy-C5', 'HC', 116, 'C7H16', 100.204, 0.667, 226.75, 31.31, 0.247, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(134, '3-M-C6', 'HC', 116, 'C7H16', 100.204, 0.667, 262.05, 28.1, 0.323, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'loglog', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(141, 'cis-13-DM-cy-C5', 'HC', 116, 'C7H16', 98.188, 0.667, 277.85, 34.0, 0.276, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(142, 'trans-13-DM-cy-C5', 'HC', 116, 'C7H16', 98.188, 0.667, 279.85, 34.0, 0.253, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(143, 'trans-12-DM-cy-C5', 'HC', 116, 'C7H16', 98.188, 0.667, 279.85, 34.0, 0.253, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(144, '224-TM-C5', 'HC', 116, 'C7H16', 114.231, 0.667, 270.13, 25.7, 0.304, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(145, '113-TM-cy-C5', 'HC', 116, 'C7H16', 114.231, 0.667, 270.13, 25.7, 0.304, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(146, '22-DM-C6', 'HC', 116, 'C7H16', 114.231, 0.667, 276.65, 25.3, 0.339, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(147, 'E-cy-C5', 'HC', 116, 'C7H16', 98.188, 0.667, 296.35, 33.97, 0.27, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(148, '25-DM-C6', 'HC', 116, 'C7H16', 114.231, 0.667, 280.35, 25.6, 0.344, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(149, '24-DM-C6', 'HC', 116, 'C7H16', 114.231, 0.667, 276.85, 24.9, 0.357, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(150, 'cis-13-DM-cy-C6', 'HC', 116, 'C7H16', 114.231, 0.667, 276.85, 24.9, 0.357, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(151, '3-M-C7', 'HC', 116, 'C7H16', 114.231, 0.667, 290.45, 25.5, 0.371, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(152, '3-E-C6', 'HC', 116, 'C7H16', 114.231, 0.667, 292.25, 26.1, 0.362, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(153, 'ethylbenzene', 'HC', 116, 'C7H16', 106.167, 0.667, 344.0, 36.09, 0.304, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(154, 'm-Xylene', 'HC', 116, 'C7H16', 106.167, 0.667, 343.85, 35.41, 0.327, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(155, 'p-Xylene', 'HC', 116, 'C7H16', 106.167, 0.667, 343.05, 35.41, 0.322, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(156, 'o-Xylene', 'HC', 116, 'C7H16', 106.167, 0.667, 343.05, 35.41, 0.322, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(157, '4-M-C8', 'HC', 116, 'C7H16', 100.204, 0.667, 226.75, 31.31, 0.247, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(158, '2-M-C8', 'HC', 116, 'C7H16', 100.204, 0.667, 226.75, 31.31, 0.247, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(159, 'ethylcyclohexane', 'HC', 116, 'C7H16', 100.204, 0.667, 226.75, 31.31, 0.247, 58.05, 86.178, 358.0, 'Classic', 32.239, 0.00191, 1.06E-5, -3.6E-9, 'log', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.0, 0.0, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(164, 'i-pentane', 'HC', 29, 'iC5', 72.151, 0.8, 187.27, 33.709, 0.2262, 27.8, 72.151, 304.0, 'Classic ', -3.625, 0.487, -2.58E-4, 5.3E-8, 'log', 72.35, -5010.9, -7.883, 8.9795E-6, 2.0, 0.0, 0.0, 0.0, 5.784, 341.1, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, -0.0304866784, -4.4619037362, 4.285718649, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 1.1897633204279E-9, 113.25, 113.45, -242000.0, 189.0, 12.7, 0.0, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.857887408721744, -0.267638226140201, 0.458642755792979, 0.0, 0.0, 0.0, 0.342669911642088, 0.851893781346349, 1.92187527898623, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.34755, 1, 1.0, -17.0852, 0.0, 0, 2.75073E-5), +(165, 'H2S', 'inert', 18, 'H2S', 34.08, 1.1, 100.05, 89.37, 0.1, -59.65, 34.08, 98.5, 'Classic ', 31.937, 0.001436, 2.432E-5, 1.176E-8, 'log', -6.95626, 1.19695, -3.12614, 2.99448, 0.0, 0.0, 0.0, 0.0, 3.941, 195.2, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394000.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 358.138, -13236.8, -55.0551, 0.059565, 0.01857, 0.0, -2.078, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.232, 187.66, 187.66, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.1, 0.8252, 0.2515, -1.7039, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0011604894, 5000.0, 34369.093554, 2.7063578765, 0.8047829596, 0.0, 0.0, 0.0, 0.0, 1, 4.43681, -829.439, -25.412, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(166, 'S8', 'other', 121, 'S8', 256.48, 0.99, 885.0, 63.0, 0.2059, 112.8, 256.48, 449.5, 'Classic', 19.0, 0.5, 1.2E-5, 0.0, 'log', -6.0, 1.0, -0.3, -1.223, 0.0, 0.0, 0.0, 0.0, 1.2, 132.0, 0.3834, 3, -24.0, 1122.0, 0.2, 0.0, -50000.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000.0, 3.9662E-5, 250.0, 250.0, 0.0, 0.0, 12.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'calculate', 0.99, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 8.046, -4600.0, -144.0, 0, 0.0), +(169, 'AceticAcid', 'acid', 122, 'Hac', 60.05, 0.99, 320.0, 57.81, 0.462, 117.89, 60.05, 171.0, 'Classic', 19.0, 0.5, 1.2E-5, 0.0, 'log', 4.68206, 1642.54, -39.764, 10000.0, 0.0, 0.0, 0.0, 0.0, 3.82, 132.0, 0.3834, 3, -24.0, 1122.0, 0.2, 0.0, -50000.0, 6.2, 0.0, 0.0, 0.0, 0.0, 0, 'solute', 0.0, 0.0, 0.0, 0.0, 0.1032, 0.00365, -2.064, 0.0, 0.0, 0.0, 0.0, 0.0, 1000.0, 3.9662E-5, 250.0, 250.0, 0.0, 0.0, 12.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'calculate', 0.99, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 8.046, -4600.0, -144.0, 0, 0.0), +(170, 'Ac-', 'ion', 100, 'Ac-', 35.45, 0.797, 444.15, 290.89, 0.344, 64.55, 35.453, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.6, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 12277.0, 1.45, 0.0, 12277.0, 1.45, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0), +(171, 'neon', 'inert', 130, 'Ne', 20.18, 0.65, -228.75, 26.652, -0.376, -248.7, 18.05, 25.0, 'Classic', 20.785, 0.0, 0.0, 0.0, 'log', 29.755, -271.06, -2.6081, 5.27E-4, 2.0, 1.8, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute', 0.0, 0.0, 0.0, 0.0, 0.004662711, -207.8880732072, 167.1564973523, 0.0, 0.0, 0.0, 207.0, 6000.0, 1000.0, 0.438, 24.56, 24.45, -242000.0, 189.0, 74.691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'calculated', 0.0, 0.484453999023659, -0.508813922053586, 0.722394512955936, 0.0, 0.0, 0.0, 0.088380471695009, 0.940022293752574, 3.40119017707003, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.75641, 1, 1.0, -1.503, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(172, 'acetone', 'other', 131, 'Acetone', 58.08, 0.9, 234.95, 48.0, 0.559, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.626, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', NULL, NULL, NULL, NULL, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 1.4371, -0.79942, 0.3278, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, '2B', 0.0154, 24476.0, 40220.0, 3.12, 0.4623, 47052.0, 3.3, 0.9037, 0.0449, 1, 17.38710706, -7582.4062196343, 0.0, 0, 0.0), +(175, 'HS-', 'ion', 18, 'HS-', 34.08, 1.1, 100.05, 89.37, 0.1, -59.65, 34.08, 98.5, 'Classic ', 31.937, 0.001436, 2.432E-5, 1.176E-8, 'log', -6.95626, 1.19695, -3.12614, 2.99448, 0.0, 0.0, 0.0, 0.0, 3.6, 195.2, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394000.0, 2.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0245568959, -1.2607398014, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.232, 187.66, 187.66, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.1, 0.8252, 0.2515, -1.7039, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0011604894, 5000.0, 34369.093554, 2.7063578765, 0.8047829596, 0.0, 0.0, 0.0, 0.0, 1, 4.43681, -829.439, -25.412, 0, 0.0), +(176, 'S--', 'ion', 18, 'S--', 34.08, 1.1, 100.05, 89.37, 0.1, -59.65, 34.08, 98.5, 'Classic ', 31.937, 0.001436, 2.432E-5, 1.176E-8, 'log', -6.95626, 1.19695, -3.12614, 2.99448, 0.0, 0.0, 0.0, 0.0, 3.5, 195.2, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394000.0, 2.0, 0.0, 0.0, 0.0, 0.0, -2, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0245568959, -1.2607398014, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.232, 187.66, 187.66, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.1, 0.8252, 0.2515, -1.7039, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0011604894, 5000.0, 34369.093554, 2.7063578765, 0.8047829596, 0.0, 0.0, 0.0, 0.0, 1, 4.43681, -829.439, -25.412, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(399, 'ethanol', 'alcohol', 2, 'CH4O ', 32.042, 0.797, 239.45, 80.96, 0.559, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.07092, 2.587E-5, -2.851E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.626, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 1.4371, -0.79942, 0.3278, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, '2B', 0.008, 21500.0, 85164.0, 4.91, 0.7502, 47052.0, 3.3, 0.9037, 0.0449, 1, 17.38710706, -7582.4062196343, 0.0, 0, 0.0), +(416, 'DEA', 'amine', 96, 'DEA', 119.1632, 1.038, 441.15, 32.7, 0.1, 140.0, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.2, 4.5, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, -5.95, 9276.38, -6.21E-6, 0.0, 0.0, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.07598, -1.3555, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'fitted ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0541207125, 12000.0, 258457.097739, 10.7510088868, 1.3642192066, 376276.883971, 10.7835858502, 1.2582983073, 0.0, 1, 17.38710706, 1.7627458702, 0.0, 0, 0.0), +(417, 'DEA+', 'ion', 94, 'CH4O ', 120.1632, 1.038, 403.85, 38.76, 1.242, 64.55, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 4.4, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 0.0); +INSERT INTO PUBLIC.COMPEVEN(ID, NAME, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY) VALUES +(418, 'DEACOO-', 'ion', 124, 'PiperazineCarbamate', 121.0, 1.038, 364.85, 68.7, 0.8, 140.0, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 6.0, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, 8.16976, 8989.3, 0.0, 0.0, 0.0, -1, 'solute', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0541207125, 12000.0, 258457.097739, 10.7510088868, 1.3642192066, 376276.883971, 10.7835858502, 1.2582983073, 0.0, 0, 17.38710706, 1.7627458702, 0.0, 0, 0.0), +(419, 'Piperazine++', 'ion', 123, 'Piperazine++', 88.137, 1.038, 364.85, 68.7, 0.8, 140.0, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 3.0, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, 8.16976, 8989.3, 0.0, 0.0, 0.0, 2, 'solute', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4, '0', 0.0541207125, 12000.0, 258457.097739, 10.7510088868, 1.3642192066, 376276.883971, 10.7835858502, 1.2582983073, 0.0, 0, 17.38710706, 1.7627458702, 0.0, 0, 0.0), +(422, 'CaCO3', 'other', 125, 'CaCO3', 124.0, 0.797, 400.0, 220.0, 0.3, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, 'log', -8.54796, 0.76982, -3.1085, 1.54481, 0.0, 1.7, 0.0, 0.0, 6.2, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0, 0.0); +CREATE CACHED TABLE PUBLIC.COMPONENTSTABLE( + ID INT NOT NULL, + NAME VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.COMPONENTSTABLE ADD CONSTRAINT PUBLIC.CONSTRAINT_48 PRIMARY KEY(ID); +-- 23 +/- SELECT COUNT(*) FROM PUBLIC.COMPONENTSTABLE; +INSERT INTO PUBLIC.COMPONENTSTABLE(ID, NAME) VALUES +(1, 'water'), +(2, 'MDEA'), +(3, 'CO2'), +(4, 'H2S'), +(5, 'methane'), +(6, 'ethane'), +(7, 'propane'), +(8, 'Selexol'), +(9, 'Cl-'), +(10, 'H3O+'), +(11, 'Na+'), +(12, 'Ca++'), +(13, 'I-'), +(14, 'K+'), +(15, 'Li+'), +(16, 'Br-'), +(17, 'Ba++'), +(18, 'Mg++'), +(19, 'Sr++'), +(20, 'NH4+'), +(21, 'n-butane'), +(22, 'Rb+'), +(23, 'Cs+'); +CREATE CACHED TABLE PUBLIC.COMPREF( + ID INT NOT NULL, + NAME VARCHAR(255) DEFAULT NULL, + INDEX VARCHAR(50) DEFAULT NULL, + FORMULA VARCHAR(255) DEFAULT NULL, + MOLARMASS VARCHAR(50) DEFAULT NULL, + LIQDENS VARCHAR(50) DEFAULT NULL, + TC VARCHAR(50) DEFAULT NULL, + PC VARCHAR(50) DEFAULT NULL, + ACSFACT VARCHAR(50) DEFAULT NULL, + NORMBOIL VARCHAR(50) DEFAULT NULL, + MWAVG VARCHAR(50) DEFAULT NULL, + CRITVOL VARCHAR(50) DEFAULT NULL, + PVMODEL VARCHAR(50) DEFAULT NULL, + CPA VARCHAR(50) DEFAULT NULL, + CPB VARCHAR(50) DEFAULT NULL, + CPC VARCHAR(50) DEFAULT NULL, + CPD VARCHAR(50) DEFAULT NULL, + ANTOINEVAPPRESLIQTYPE VARCHAR(50) DEFAULT NULL, + ANTOINEA VARCHAR(50) DEFAULT NULL, + ANTOINEB VARCHAR(50) DEFAULT NULL, + ANTOINEC VARCHAR(50) DEFAULT NULL, + ANTOINED VARCHAR(50) DEFAULT NULL, + ANTOINEE VARCHAR(50) DEFAULT NULL, + DIPOLEMOMENT VARCHAR(50) DEFAULT NULL, + VISCFACT VARCHAR(50) DEFAULT NULL, + RACKETZ VARCHAR(50) DEFAULT NULL, + LJDIAMETER VARCHAR(50) DEFAULT NULL, + LJEPS VARCHAR(50) DEFAULT NULL, + SPHERICALCORERADIUS VARCHAR(50) DEFAULT NULL, + LIQVISCMODEL VARCHAR(50) DEFAULT NULL, + LIQVISC1 VARCHAR(50) DEFAULT NULL, + LIQVISC2 VARCHAR(50) DEFAULT NULL, + LIQVISC3 VARCHAR(50) DEFAULT NULL, + LIQVISC4 VARCHAR(50) DEFAULT NULL, + GIBBSENERGYOFFORMATION VARCHAR(50) DEFAULT NULL, + DIELECTRICPARAMETER1 VARCHAR(50) DEFAULT NULL, + DIELECTRICPARAMETER2 VARCHAR(50) DEFAULT NULL, + DIELECTRICPARAMETER3 VARCHAR(50) DEFAULT NULL, + DIELECTRICPARAMETER4 VARCHAR(50) DEFAULT NULL, + DIELECTRICPARAMETER5 VARCHAR(50) DEFAULT NULL, + IONICCHARGE VARCHAR(50) DEFAULT NULL, + REFERENCESTATETYPE VARCHAR(50) DEFAULT NULL, + HENRYCOEF1 VARCHAR(50) DEFAULT NULL, + HENRYCOEF2 VARCHAR(50) DEFAULT NULL, + HENRYCOEF3 VARCHAR(50) DEFAULT NULL, + HENRYCOEF4 VARCHAR(50) DEFAULT NULL, + SCHWARTZENTRUBER1 VARCHAR(50) DEFAULT NULL, + SCHWARTZENTRUBER2 VARCHAR(50) DEFAULT NULL, + SCHWARTZENTRUBER3 VARCHAR(50) DEFAULT NULL, + LIQUIDCONDUCTIVITY1 VARCHAR(50) DEFAULT NULL, + LIQUIDCONDUCTIVITY2 VARCHAR(50) DEFAULT NULL, + LIQUIDCONDUCTIVITY3 VARCHAR(50) DEFAULT NULL, + PARACHOR VARCHAR(50) DEFAULT NULL, + HEATOFFUSION VARCHAR(50) DEFAULT NULL, + TRIPLEPOINTDENSITY VARCHAR(50) DEFAULT NULL, + TRIPLEPOINTPRESSURE VARCHAR(50) DEFAULT NULL, + TRIPLEPOINTTEMPERATURE VARCHAR(50) DEFAULT NULL, + MELTINGPOINTTEMPERATURE VARCHAR(50) DEFAULT NULL, + ENTHALPYOFFORMATION VARCHAR(50) DEFAULT NULL, + ABSOLUTEENTROPY VARCHAR(50) DEFAULT NULL, + SOLIDDENSITYCOEFS1 VARCHAR(50) DEFAULT NULL, + SOLIDDENSITYCOEFS2 VARCHAR(50) DEFAULT NULL, + SOLIDDENSITYCOEFS3 VARCHAR(50) DEFAULT NULL, + SOLIDDENSITYCOEFS4 VARCHAR(50) DEFAULT NULL, + SOLIDDENSITYCOEFS5 VARCHAR(50) DEFAULT NULL, + LIQUIDDENSITYCOEFS1 VARCHAR(50) DEFAULT NULL, + LIQUIDDENSITYCOEFS2 VARCHAR(50) DEFAULT NULL, + LIQUIDDENSITYCOEFS3 VARCHAR(50) DEFAULT NULL, + LIQUIDDENSITYCOEFS4 VARCHAR(50) DEFAULT NULL, + LIQUIDDENSITYCOEFS5 VARCHAR(50) DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS1 VARCHAR(50) DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS2 VARCHAR(50) DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS3 VARCHAR(50) DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS4 VARCHAR(50) DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS5 VARCHAR(50) DEFAULT NULL, + ELECTROLYTEINTERACTIONTYPE VARCHAR(50) DEFAULT NULL, + STDDENS VARCHAR(50) DEFAULT NULL, + MC1 VARCHAR(50) DEFAULT NULL, + MC2 VARCHAR(50) DEFAULT NULL, + MC3 VARCHAR(50) DEFAULT NULL, + MC1SOLID VARCHAR(50) DEFAULT NULL, + MC2SOLID VARCHAR(50) DEFAULT NULL, + MC3SOLID VARCHAR(50) DEFAULT NULL, + TWUCOON1 VARCHAR(50) DEFAULT NULL, + TWUCOON2 VARCHAR(50) DEFAULT NULL, + TWUCOON3 VARCHAR(50) DEFAULT NULL, + ASSOCIATIONSITES VARCHAR(50) DEFAULT NULL, + ASSOCIATIONSCHEME VARCHAR(50) DEFAULT NULL, + "associationboundingvolume-SRK" VARCHAR(50) DEFAULT NULL, + ASSOCIATIONENERGY VARCHAR(50) DEFAULT NULL, + "aCPA-SRK" VARCHAR(50) DEFAULT NULL, + "bCPA-SRK" VARCHAR(50) DEFAULT NULL, + "mCPA-SRK" VARCHAR(50) DEFAULT NULL, + "aCPA-PR" VARCHAR(50) DEFAULT NULL, + "bCPA-PR" VARCHAR(50) DEFAULT NULL, + "mCPA-PR" VARCHAR(50) DEFAULT NULL, + "associationboundingvolume-PR" VARCHAR(50) DEFAULT NULL, + CALCACTIVITY VARCHAR(50) DEFAULT NULL, + ANTOINESOLIDA VARCHAR(50) DEFAULT NULL, + ANTOINESOLIDB VARCHAR(50) DEFAULT NULL, + ANTOINESOLIDC VARCHAR(50) DEFAULT NULL, + HSUB VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.COMPREF ADD CONSTRAINT PUBLIC.CONSTRAINT_63 PRIMARY KEY(ID); +-- 110 +/- SELECT COUNT(*) FROM PUBLIC.COMPREF; +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(1, 'water', NULL, 'H2O ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Solbraa2002', 'Solbraa2002', 'Solbraa2002', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(2, 'Cl- ', '100', 'Cl- ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(3, 'Na+ ', '99', 'Na+ ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(4, 'Mg++ ', '116', 'Mg++ Mg++', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(5, 'MDEA ', '96', 'MDEA ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Bishnoi2000', 'Bishnoi2000', 'Bishnoi2000', 'Bishnoi2000', 'Bishnoi2000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(6, 'MDEA+ ', '94', 'CH4O ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(7, 'H3O+ ', '95', 'CH4O ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(8, 'propane ', '22', 'CH4O ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(9, 'CO2 ', '18', 'CO2 ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Austgen1989', 'Austgen1989', 'Austgen1989', 'Austgen1989', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10, 'ethane ', '21', 'C2H6 ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(11, 'methane ', '20', 'CH4 ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(12, 'methanol ', '2', 'CH4O ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(13, 'MEG ', '4', 'C2H6O2 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(14, 'oxygen ', '17', 'O2 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(15, 'TEG ', '6', 'C6H14O4 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(16, 'DEG ', '5', 'C4H10O3 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(17, 'nitrogen ', '15', 'N2 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(18, 'n-butane ', '25', 'C4H10 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(19, 'HCO3- ', '97', 'CH4O ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(20, 'Li+ ', '102', 'Li ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(21, 'K+ ', '112', 'K ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(22, 'Ca++ ', '101', 'Ca2 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(23, 'I- ', '115', 'I ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(24, 'Sr++ ', '118', 'Na ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(25, 'Ba++ ', '117', 'Ba ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(26, 'OH- ', '98', 'CH4O ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(27, 'CO3--', '105', 'CO3minus2 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(28, 'NH4+ ', '104', 'NH4 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(29, 'Br- ', '103', 'Br ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(30, 'n-pentane ', '29', 'nC5 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(31, 'n-hexane ', '35', 'C6H14 ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(32, 'benzene ', '38', 'C6H6 ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(33, 'toluene', '45', 'C7H8 ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(34, 'n-heptane ', '42', 'C7H16 ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(35, 'n-octane ', '48', 'C8H18 ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(36, 'nC10 ', '111', 'C10H22 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(37, 'n-nonane ', '111', 'C9H20 ', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'PVTsim 13', 'PVTsim 13', 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(38, 'hydrogen ', '14', 'hydrogen ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(39, 'argon ', '16', 'argon ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(40, 'i-butane ', '24', 'C4H10 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(41, 'c-propane ', '23', 'C3H6 ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(42, 'Cs+', '99', 'Cs+', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(43, 'Rb+', '99', 'Rb+', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(44, 'ice', '1', 'H2O ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(64, 'nC11', '100', 'C11H24', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(65, 'nC12', '101', 'C12H26', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(66, 'nC13', '102', 'C13H28', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(67, 'nC14', '103', 'C14H30', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(68, 'nC15', '104', 'C15H32', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(69, 'nC16', '105', 'C16H34', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(70, 'nC17', '106', 'C17H36', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(71, 'nC18', '107', 'C18H38', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(72, 'nC19', '108', 'C19H40', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(73, 'nC20', '109', 'C20H42', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(74, 'nC21', '110', 'C21H44', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(75, 'nC22', '111', 'C22H46', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(76, 'nC23', '112', 'C23H48', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(77, 'nC24', '113', 'C24H50', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(78, '22-dim-C3', '114', 'C5H12', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(79, '22-dim-C4', '115', 'C6H14', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(80, '23-dim-C4', '116', 'C6H14', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(81, '2-m-C5', '117', 'C6H14', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(82, '3-m-C5', '118', 'C6H14', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(83, 'c-C5', '119', 'C5H8', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(90, 'iC5', '119', 'C5H12', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(91, 'default', '120', 'default', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(93, 'Piperazine', '122', 'Piperazine', 'Bishnoi2000', NULL, 'Bishnoi2000', 'Bishnoi2000', 'Bishnoi2000', NULL, 'Bishnoi2000', NULL, NULL, NULL, NULL, NULL, NULL, 'Bishnoi2000', 'Bishnoi2000', 'Bishnoi2000', 'Bishnoi2000', 'Bishnoi2000', 'Bishnoi2000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'fittedBishnoy2000', 'fittedBishnoy2000', 'fittedBishnoy2000', 'fittedBishnoy2000', 'fittedBishnoy2000', NULL, NULL, NULL, NULL, NULL, NULL, 'fittedToAntoineEven', 'fittedToAntoineEven', 'fittedToAntoineEven', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(94, 'Piperazine+', '123', 'Piperazine+', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(95, 'PZCOO-', '124', 'PiperazineCarbamate', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(96, 'H+PZCOO-', '125', 'PiperazineCarbamate', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(97, '-OOCPZCOO-', '126', 'PiperazineCarbamate', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(123, 'c-hexane', '120', 'default', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(124, 'c-C6', '119', 'C6H8', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(125, '22-DM-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(126, 'M-cy-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(127, '24-DM-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(128, '223-TM-C4', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(129, '33-DM-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(131, '2-M-C6', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(132, '23-DM-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(133, '11-DM-cy-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(134, '3-M-C6', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(141, 'cis-13-DM-cy-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(142, 'trans-13-DM-cy-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(143, 'trans-12-DM-cy-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(144, '224-TM-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(145, '113-TM-cy-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(146, '22-DM-C6', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(147, 'E-cy-C5', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(148, '25-DM-C6', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(149, '24-DM-C6', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(150, 'cis-13-DM-cy-C6', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(151, '3-M-C7', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(152, '3-E-C6', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(153, 'ethylbenzene', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(154, 'm-Xylene', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(155, 'p-Xylene', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(156, 'o-Xylene', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(157, '4-M-C8', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(158, '2-M-C8', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(159, 'ethylcyclohexane', '116', 'C7H16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(164, 'i-pentane', '29', 'iC5', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(165, 'H2S', '18', 'H2S', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Austgen1989', 'Austgen1989', 'Austgen1989', 'Austgen1989', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(166, 'S8', '121', 'S8', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(169, 'AceticAcid', '122', 'Hac', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(170, 'Ac-', '100', 'Ac-', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(171, 'neon', '130', 'Ne', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(172, 'acetone', '131', 'Acetone', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.COMPREF(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB) VALUES +(175, 'HS-', '18', 'HS-', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(176, 'S--', '18', 'S--', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +CREATE CACHED TABLE PUBLIC.COMPSALT( + ID INT NOT NULL, + SALTNAME VARCHAR(50) DEFAULT NULL, + ION1 VARCHAR(50) DEFAULT NULL, + ION2 VARCHAR(50) DEFAULT NULL, + STOC1 DOUBLE DEFAULT '0', + STOC2 DOUBLE DEFAULT '0', + "Ksp-water" DOUBLE DEFAULT NULL, + "Ksp-water2" DOUBLE DEFAULT NULL, + "Ksp-water3" DOUBLE DEFAULT NULL, + "Ksp-water4" DOUBLE DEFAULT NULL, + "Ksp-water5" DOUBLE DEFAULT '0' +); +-- 16 +/- SELECT COUNT(*) FROM PUBLIC.COMPSALT; +INSERT INTO PUBLIC.COMPSALT(ID, SALTNAME, ION1, ION2, STOC1, STOC2, "Ksp-water", "Ksp-water2", "Ksp-water3", "Ksp-water4", "Ksp-water5") VALUES +(1, 'NaCl', 'Na+', 'Cl-', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(3, 'FeCO3', 'Fe++', 'CO3--', 1.0, 1.0, 129.97, -50.205, 7.1334, -0.052913, 0.0), +(4, 'CaCO3', 'Ca++', 'CO3--', 1.0, 1.0, -170410.0, 3044.27, -475.704, 0.376097, 9149500.0), +(5, 'CaSO4_A', 'Ca++', 'SO4--', 1.0, 1.0, -2234.4, 11.6592, 0.0, -0.482309, 0.0), +(6, 'CaSO4_G', 'Ca++', 'SO4--', 1.0, 1.0, -26309.9, 815.978, -138.361, 0.167863, 18.6143), +(7, 'BaSO4', 'Ba++', 'SO4--', 1.0, 1.0, 37588.0, -747.61, 119.28, -0.16283, -2880000.0), +(8, 'SrSO4', 'Sr++', 'SO4--', 1.0, 1.0, 46550.0, -434.76, 55.44, -0.062931, -4496200.0), +(9, 'FeS', 'Fe++', 'HS-', 1.0, 1.0, -6813.35, 50.19636, -3.36, -0.0553772, 0.0), +(10, 'Na2CO3', 'Na+', 'CO3--', 2.0, 1.0, -17483.0, 462.07, -70.047, -0.0015459, -0.0042439), +(11, 'KHCO3', 'K+', 'HCO3-', 1.0, 1.0, 2.2403, 69.658, -17.016, 0.092964, 0.0), +(12, 'NaHCO3', 'Na+', 'HCO3-', 1.0, 1.0, -3.6367, -77.25, 14.575, -0.022468, 0.0), +(13, 'KCl', 'K+', 'Cl-', 1.0, 1.0, 494.26, -5.8585, 0.024552, -4.2553E-5, 2.6066E-8), +(14, 'K2CO3', 'K+', 'CO3--', 2.0, 1.0, -39.805, -1160.4, 244.78, -0.68681, 0.0), +(15, 'BaCO3', 'Ba+', 'CO3--', 2.0, 1.0, -46077.0, 1399.1, -236.68, 0.28289, 0.0), +(16, 'SrCO3', 'Sr-', 'CO3--', 2.0, 1.0, -16669.0, 362.71, -57.996, 0.008317, 0.0), +(17, 'Mg(OH)2', 'Mg++', 'OH-', 1.0, 2.0, -10621.0, 240.71, -40.444, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.COMPT2( + ID INT NOT NULL, + NAME VARCHAR(255) DEFAULT NULL, + INDEX INT DEFAULT NULL, + FORMULA VARCHAR(255) DEFAULT NULL, + MOLARMASS DOUBLE DEFAULT NULL, + LIQDENS DOUBLE DEFAULT NULL, + TC DOUBLE DEFAULT NULL, + PC DOUBLE DEFAULT NULL, + ACSFACT DOUBLE DEFAULT NULL, + NORMBOIL DOUBLE DEFAULT NULL, + MWAVG DOUBLE DEFAULT NULL, + CRITVOL DOUBLE DEFAULT NULL, + PVMODEL VARCHAR(255) DEFAULT NULL, + CPA DOUBLE DEFAULT NULL, + CPB DOUBLE DEFAULT NULL, + CPC DOUBLE DEFAULT NULL, + CPD DOUBLE DEFAULT NULL, + ANTOINEA DOUBLE DEFAULT NULL, + ANTOINEB DOUBLE DEFAULT NULL, + ANTOINEC DOUBLE DEFAULT NULL, + ANTOINED DOUBLE DEFAULT NULL, + DIPOLEMOMENT DOUBLE DEFAULT NULL, + VISCFACT DOUBLE DEFAULT NULL, + RACKETZ DOUBLE DEFAULT NULL, + LJDIAMETER DOUBLE DEFAULT NULL, + LJEPS DOUBLE DEFAULT NULL, + SPHERICALCORERADIUS DOUBLE DEFAULT '0', + LIQVISCMODEL INT DEFAULT NULL, + LIQVISC1 DOUBLE DEFAULT NULL, + LIQVISC2 DOUBLE DEFAULT NULL, + LIQVISC3 DOUBLE DEFAULT NULL, + LIQVISC4 DOUBLE DEFAULT NULL, + GIBBSENERGYOFFORMATION DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER1 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER2 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER3 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER4 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER5 DOUBLE DEFAULT NULL, + IONICCHARGE INT DEFAULT NULL, + REFERENCESTATETYPE VARCHAR(255) DEFAULT NULL, + SCHWARTZENTRUBER1 DOUBLE DEFAULT NULL, + SCHWARTZENTRUBER2 DOUBLE DEFAULT NULL, + SCHWARTZENTRUBER3 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY1 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY2 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY3 DOUBLE DEFAULT NULL, + PARACHOR DOUBLE DEFAULT NULL, + HEATOFFUSION DOUBLE DEFAULT NULL, + TRIPLEPOINTDENSITY DOUBLE DEFAULT NULL, + TRIPLEPOINTPRESSURE DOUBLE DEFAULT NULL, + TRIPLEPOINTTEMPERATURE DOUBLE DEFAULT NULL, + MELTINGPOINTTEMPERATURE DOUBLE DEFAULT NULL, + ENTHALPYOFFORMATION DOUBLE DEFAULT NULL, + ABSOLUTEENTROPY DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS1 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS2 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS3 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS4 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS5 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS1 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS2 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS3 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS4 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS5 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS1 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS2 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS3 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS4 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS5 DOUBLE DEFAULT NULL, + ELECTROLYTEINTERACTIONTYPE VARCHAR(255) DEFAULT NULL, + STDDENS DOUBLE DEFAULT NULL, + MC1 DOUBLE DEFAULT NULL, + MC2 DOUBLE DEFAULT NULL, + MC3 DOUBLE DEFAULT NULL, + ASSOCIATIONSITES INT DEFAULT '0', + "associationboundingvolume-SRK" DOUBLE DEFAULT '0', + ASSOCIATIONENERGY DOUBLE DEFAULT '0', + "aCPA-SRK" DOUBLE DEFAULT '0', + "bCPA-SRK" DOUBLE DEFAULT '0', + "mCPA-SRK" DOUBLE DEFAULT '0', + "aCPA-PR" DOUBLE DEFAULT NULL, + "bCPA-PR" DOUBLE DEFAULT NULL, + "mCPA-PR" DOUBLE DEFAULT NULL, + "associationboundingvolume-PR" DOUBLE DEFAULT NULL, + ANTOINESOLIDA DOUBLE DEFAULT '0', + ANTOINESOLIDB DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.COMPT2 ADD CONSTRAINT PUBLIC.CONSTRAINT_76D PRIMARY KEY(ID); +-- 43 +/- SELECT COUNT(*) FROM PUBLIC.COMPT2; +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(1, 'water ', 1, 'H2O ', 18.015, 0.999, 374.15, 220.89, 0.344, 100.0, 18.015, 56.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -57.71, 7647.0, 0.1442, -1.357E-4, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0829284103, -1.2432575684, -0.2539191045, -0.384, 0.00525, -6.37E-6, 207.0, 2700.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 1.09, -0.638, 0.635, 4, 0.0692, 16655.0, 12277.0, 1.4515, 0.67359, 13855.596964, 1.4563608786, 0.6641553237, 0.0464737892, 17.38710706, -6141.7627458702), +(2, 'Cl- ', 100, 'Cl- ', 35.45, 0.797, 444.15, 290.89, 0.344, 64.55, 35.453, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.6, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 12277.0, 1.45, 0.0, 12277.0, 1.45, 0.0, 0.0, 0.0, 0.0), +(3, 'Na+ ', 99, 'Na+ ', 22.99, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.68, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.038, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(4, 'Mg++ ', 116, 'Mg++ Mg++', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 6.94, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.038, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(5, 'MDEA ', 96, 'MDEA ', 119.1632, 1.038, 403.85, 38.76, 1.242, 140.0, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.2, 4.5, 481.8, 0.0, 3, -75.19, 12680.0, 0.1573, -1.225E-4, 57900.0, 8.16976, 8989.3, 0.0, 0.0, 0.0, 0, 'solvent ', 0.0381776215, 33.1315952807, -46.9784551908, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'fitted ', 0.797, 0.0, 0.0, 0.0, 4, 0.0125648891, 10655.0, 351371.916429, 10.8433539035, 1.0897173208, 376276.883971, 10.7835858502, 1.2582983073, 0.0, 17.38710706, 1.7627458702), +(6, 'MDEA+ ', 94, 'CH4O ', 120.1632, 1.038, 403.85, 38.76, 1.242, 64.55, 119.16, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 4.5, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7, 'H3O+ ', 95, 'CH4O ', 19.0, 0.797, 444.15, 290.89, 0.344, 64.55, 19.0, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 5.06, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8, 'propane ', 22, 'CH4O ', 44.097, 0.0, 96.65, 42.46, 0.152, -42.05, 44.097, 203.0, 'Classic ', -4.224, 0.306, -1.59E-4, 3.21E-8, -6.72219, 1.33236, -2.13868, -1.38551, 0.0, 0.0, 0.2, 5.118, 237.1, 0.0, 3, -7.764, 722.0, 0.0238, -4.67E-5, -24400.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.1, 0.773, -0.509, 1.03, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(9, 'CO2 ', 18, 'CO2 ', 44.01, 1.1, 31.05, 73.76, 0.225, -78.5, 44.01, 94.0, 'Classic ', 19.793, 0.0734, -5.6E-5, 1.72E-8, -6.95626, 1.19695, -3.12614, 2.99448, 0.0, 0.0, 0.0, 3.941, 195.2, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394000.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.04136, -3.9551171949, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.1, 0.865, -0.439, 1.35, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(10, 'ethane ', 21, 'C2H6 ', 30.07, 0.544459352, 32.25, 48.84, 0.098, -88.55, 30.07, 148.0, 'Classic ', 5.409, 0.178, -6.94E-5, 8.71E-9, -6.34307, 1.0163, -1.19116, -2.03539, 0.0, 0.0, 0.2, 4.443, 215.7, 0.0, 3, -10.23, 668.0, 0.0439, -9.59E-5, -31900.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 2860.0, 652.0, 1.13E-5, 90.4, 90.4, -83800.0, 229.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.1, 0.685, -0.428, 0.738, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(11, 'methane ', 20, 'CH4 ', 16.043, 0.422182073, -82.586, 45.389, 0.008, -161.55, 16.043, 99.0, 'Classic ', 19.249, 0.0521, 1.2E-5, -1.13E-8, -6.00435, 1.1885, -0.83408, -1.22833, 0.0, 0.0, 0.0, 3.165, 154.54, 0.3834, 3, -26.87, 1150.0, 0.187, -5.21E-4, -50500.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, 0.303, -6.05E-4, -3.2E-6, 207.0, 941.0, 452.0, 0.117, 90.7, 90.7, -74500.0, 186.0, 33.0, -0.0159, -1.55E-5, 0.0, 0.0, 2.92, 0.29, 191.0, 0.289, 0.0, 1.02E7, 0.261, -0.147, 0.222, 0.0, 'calculate ', 0.1, 0.547, -0.399, 0.575, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(12, 'methanol ', 2, 'CH4O ', 32.042, 0.797, 239.45, 80.96, 0.559, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.2, 3.626, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 1.45, -0.815, 0.249, 2, 0.0154, 24476.0, 40220.0, 3.12, 0.4623, 40531.0, 3.0978, 0.43102, 0.0161, 17.38710706, -7582.4062196343); +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(13, 'MEG ', 4, 'C2H6O2 ', 62.069, 1.117, 446.55, 77.1, 0.487, 197.35, 62.069, 186.0, 'Classic ', 35.701, 0.248, -1.5E-4, 3.01E-8, 13.6299, 6022.18, -28.25, 0.0, 2.3082, 0.215, 0.2488, 3.626, 481.8, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.6540090117, -3.9551171949, 3.671191916, -0.384, 0.00525, -6.37E-6, 207.0, 9960.0, 904.0, 2.42E-6, 260.0, 260.0, -388000.0, 324.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 1.32, 0.251, 720.0, 0.219, 0.0, 8.29E7, 0.427, 0.0, 0.0, 0.0, 'calculate ', 1.117, 0.0, 0.0, 0.0, 4, 0.0063462374, 19752.0, 126519.920554, 5.2313853467, 0.5439839271, 108190.0, 5.14, 0.6744, 0.0514, 17.38710706, -7566.84658558), +(14, 'oxygen ', 17, 'O2 ', 31.999, 0.0, -118.55, 50.46, 0.021, -182.95, 31.999, 73.4, 'Classic ', 28.103, -3.68E-6, 1.75E-5, -1.07E-8, -6.28275, 1.73619, -1.81349, -0.0254, 0.0, 0.0, 0.2905, 3.467, 106.7, 0.0, 3, -4.771, 215.0, 0.0139, -6.26E-5, 57900.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.1, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(15, 'TEG ', 6, 'C6H14O4 ', 150.175, 1.127, 437.0, 33.13, 1.2874, 278.3, 150.175, 450.0, 'Classic ', 86.363, 0.601, -3.62E-4, 7.28E-8, 6.7568, 3715.222, -1.299, 0.0, 2.2, 0.215, 0.2462, 3.626, 481.8, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.127, 2.49, -1.46, -2.63, 4, 0.0188, 14337.0, 391260.0, 13.21, 1.1692, 391260.0, 13.21, 1.1692, 0.0188, 0.0, 0.0), +(16, 'DEG ', 5, 'C4H10O3 ', 106.122, 1.119, 407.85, 46.61, 1.2011, 245.85, 106.122, 316.0, 'Classic ', 73.051, 0.346, -1.47E-4, 1.85E-8, 10.4124, 4122.52, -122.5, 0.0, 2.2, 0.215, 0.2489, 3.626, 481.8, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solvent ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 1.119, 0.0, 0.0, 0.0, 4, 0.0064, 19684.0, 264080.0, 9.21, 0.7991, 264080.0, 9.21, 0.7991, 0.0064, 0.0, 0.0); +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(17, 'nitrogen ', 15, 'N2 ', 28.014, 0.80796486, -146.95, 33.94, 0.04, -195.75, 28.014, 89.8, 'Classic ', 31.146, -0.0136, 2.68E-5, -1.17E-8, -6.09676, 1.1367, -1.04072, -1.93306, 0.0, 0.0, 0.2, 3.798, 71.4, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 720.0, 870.0, 0.125, 63.1, 63.1, 0.0, 192.0, 37.9, -0.0603, 0.0, 0.0, 0.0, 3.21, 0.286, 126.0, 0.297, 0.0, 7490000.0, 0.404, -0.317, 0.273, 0.0, 'calculate ', 0.1, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, 'n-butane ', 25, 'C4H10 ', 58.124, 0.0, 152.05, 38.0, 0.193, -0.45, 58.124, 255.0, 'Classic ', 9.486, 0.331, -1.11E-4, -2.82E-9, -6.88709, 1.15157, -1.99873, -3.13003, 0.0, 0.0, 0.2, 4.687, 531.4, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.1, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(19, 'HCO3- ', 97, 'CH4O ', 61.0, 0.797, 444.15, 290.89, 0.344, 64.55, 61.0, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.36, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(20, 'Li+ ', 102, 'Li ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 4.76, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(21, 'K+ ', 112, 'K ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 2.5, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(22, 'Ca++ ', 101, 'Ca2 ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 6.2, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 'I- ', 115, 'I ', 35.453, 0.797, 444.15, 290.89, 0.344, 64.55, 35.453, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 4.32, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, 'Sr++ ', 118, 'Na ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 6.2, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(25, 'Ba++ ', 117, 'Ba ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 5.8, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, 'OH- ', 98, 'CH4O ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.626, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -157000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculated ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 'CO3-- ', 105, 'CO3minus2 ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.36, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 'NH4+ ', 104, 'NH4 ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 2.5, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(29, 'Br- ', 103, 'Br ', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 3.9, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 'n-pentane ', 29, 'nC5 ', 72.151, 0.0, 196.45, 33.74, 0.251, 36.05, 72.151, 304.0, 'Classic ', -3.625, 0.487, -2.58E-4, 5.3E-8, -7.28936, 1.53679, -3.08367, -1.02456, 0.0, 0.0, 0.2684, 5.784, 341.1, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0789, -1.34, 0.043, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 'n-hexane ', 35, 'C6H14 ', 86.178, 0.664, 234.25, 29.69, 0.296, 68.75, 86.178, 370.0, 'Classic ', -4.412, 0.582, -3.12E-4, 6.49E-8, -7.46765, 1.44211, -3.2822, -2.50941, 0.0, 0.0, 0.2635, 5.949, 399.3, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0789, -1.34, 0.043, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, 'benzene ', 38, 'C6H6 ', 78.114, 0.886, 288.95, 48.94, 0.212, 80.15, 78.114, 259.0, 'Classic ', -33.913, 0.474, -3.02E-4, 7.13E-8, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(33, 'toluene ', 45, 'C7H8 ', 92.141, 0.871, 318.55, 41.14, 0.257, 110.65, 92.141, 316.0, 'Classic ', -24.352, 0.512, -2.77E-4, 4.91E-8, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, 'n-heptane ', 42, 'C7H16 ', 100.205, 0.69, 267.05, 27.36, 0.351, 98.45, 100.205, 432.0, 'Classic ', -5.145, 0.676, -3.65E-4, 7.66E-8, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 291780.0, 12.535, 0.9137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 'n-octane ', 48, 'C8H18 ', 114.232, 0.708, 295.65, 24.82, 0.394, 125.65, 114.232, 492.0, 'Classic ', -6.095, 0.771, -4.2E-4, 8.85E-8, -7.91211, 1.38007, -3.80435, -4.50132, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 'nC10 ', 111, 'C10H22 ', 142.285, 0.734, 344.45, 21.08, 0.49, 174.15, 142.285, 603.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(37, 'n-nonane ', 111, 'C9H20 ', 128.258, 0.722, 321.45, 23.1, 0.44, 150.85, 128.258, 548.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 'hydrogen ', 14, 'hydrogen ', 2.016, 0.0, -239.95, 12.97, -0.22, -252.75, 2.016, 65.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 'argon ', 16, 'argon ', 39.948, 0.0, -122.35, 48.74, -0.004, -185.85, 39.948, 74.9, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 'i-butane ', 24, 'C4H10 ', 58.124, 0.0, 134.95, 36.48, 0.176, -11.75, 58.124, 263.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.COMPT2(ID, NAME, INDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, CPA, CPB, CPC, CPD, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, DIPOLEMOMENT, VISCFACT, RACKETZ, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, ELECTROLYTEINTERACTIONTYPE, STDDENS, MC1, MC2, MC3, ASSOCIATIONSITES, "associationboundingvolume-SRK", ASSOCIATIONENERGY, "aCPA-SRK", "bCPA-SRK", "mCPA-SRK", "aCPA-PR", "bCPA-PR", "mCPA-PR", "associationboundingvolume-PR", ANTOINESOLIDA, ANTOINESOLIDB) VALUES +(41, 'c-propane ', 23, 'C3H6 ', 42.081, 0.0, 124.65, 54.92, 0.264, -32.75, 42.081, 170.0, 'Classic ', 32.239, 0.00191, 1.06E-5, -3.6E-9, -7.76451, 1.45838, -2.7758, -1.23303, 1.8, 0.076, 0.2338, 2.52, 809.1, 0.0, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.999, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 'Cs+', 99, 'Cs+', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 2.38, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 'Rb+', 99, 'Rb+', 32.042, 0.797, 444.15, 290.89, 0.344, 64.55, 32.042, 99.0, 'Classic ', 21.149, 0.0709, 2.59E-5, -2.85E-8, -8.54796, 0.76982, -3.1085, 1.54481, 1.7, 0.215, 0.0, 2.36, 481.8, 0.0, 3, -39.35, 4826.0, 0.1091, -1.13E-4, -587000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 'solute ', 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 207.0, 6000.0, 1000.0, 0.00611, 273.0, 273.0, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 5.46, 0.305, 647.0, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 'calculate ', 0.797, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.COMPTEMP( + ID INT DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_8921578E_C8B6_401B_9D5D_98221DE14086) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_8921578E_C8B6_401B_9D5D_98221DE14086, + NAME VARCHAR(50) DEFAULT NULL, + CASNUMBER VARCHAR(50) DEFAULT NULL, + COMPTYPE VARCHAR(50) DEFAULT NULL, + COMPINDEX INT DEFAULT NULL, + FORMULA VARCHAR(50) DEFAULT NULL, + MOLARMASS DOUBLE DEFAULT NULL, + LIQDENS DOUBLE DEFAULT NULL, + TC DOUBLE DEFAULT NULL, + PC DOUBLE DEFAULT NULL, + ACSFACT DOUBLE DEFAULT NULL, + NORMBOIL DOUBLE DEFAULT NULL, + MWAVG DOUBLE DEFAULT NULL, + CRITVOL DOUBLE DEFAULT NULL, + PVMODEL VARCHAR(255) DEFAULT '0', + HREF DOUBLE DEFAULT '0', + CPA DOUBLE DEFAULT NULL, + CPB DOUBLE DEFAULT NULL, + CPC DOUBLE DEFAULT NULL, + CPD DOUBLE DEFAULT NULL, + CPE DOUBLE DEFAULT NULL, + ANTOINEVAPPRESLIQTYPE VARCHAR(50) DEFAULT NULL, + ANTOINEA DOUBLE DEFAULT NULL, + ANTOINEB DOUBLE DEFAULT NULL, + ANTOINEC DOUBLE DEFAULT NULL, + ANTOINED DOUBLE DEFAULT NULL, + ANTOINEE DOUBLE DEFAULT '0', + DIPOLEMOMENT DOUBLE DEFAULT NULL, + VISCFACT DOUBLE DEFAULT NULL, + RACKETZ DOUBLE DEFAULT NULL, + VOLCORRSRK_T DOUBLE DEFAULT '0', + LJDIAMETER DOUBLE DEFAULT NULL, + LJEPS DOUBLE DEFAULT NULL, + SPHERICALCORERADIUS DOUBLE DEFAULT '0', + LIQVISCMODEL INT DEFAULT NULL, + LIQVISC1 DOUBLE DEFAULT NULL, + LIQVISC2 DOUBLE DEFAULT NULL, + LIQVISC3 DOUBLE DEFAULT NULL, + LIQVISC4 DOUBLE DEFAULT NULL, + GIBBSENERGYOFFORMATION DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER1 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER2 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER3 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER4 DOUBLE DEFAULT NULL, + DIELECTRICPARAMETER5 DOUBLE DEFAULT NULL, + IONICCHARGE INT DEFAULT NULL, + REFERENCESTATETYPE VARCHAR(255) DEFAULT NULL, + HENRYCOEF1 DOUBLE DEFAULT NULL, + HENRYCOEF2 DOUBLE DEFAULT '0', + HENRYCOEF3 DOUBLE DEFAULT NULL, + HENRYCOEF4 DOUBLE DEFAULT '0', + SCHWARTZENTRUBER1 DOUBLE DEFAULT NULL, + SCHWARTZENTRUBER2 DOUBLE DEFAULT NULL, + SCHWARTZENTRUBER3 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY1 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY2 DOUBLE DEFAULT NULL, + LIQUIDCONDUCTIVITY3 DOUBLE DEFAULT NULL, + PARACHOR DOUBLE DEFAULT NULL, + HEATOFFUSION DOUBLE DEFAULT NULL, + TRIPLEPOINTDENSITY DOUBLE DEFAULT NULL, + TRIPLEPOINTPRESSURE DOUBLE DEFAULT NULL, + TRIPLEPOINTTEMPERATURE DOUBLE DEFAULT NULL, + MELTINGPOINTTEMPERATURE DOUBLE DEFAULT NULL, + ENTHALPYOFFORMATION DOUBLE DEFAULT NULL, + ABSOLUTEENTROPY DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS1 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS2 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS3 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS4 DOUBLE DEFAULT NULL, + SOLIDDENSITYCOEFS5 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS1 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS2 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS3 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS4 DOUBLE DEFAULT NULL, + LIQUIDDENSITYCOEFS5 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS1 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS2 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS3 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS4 DOUBLE DEFAULT NULL, + HEATOFVAPORIZATIONCOEFS5 DOUBLE DEFAULT NULL, + STDDENS DOUBLE DEFAULT NULL, + MC1 DOUBLE DEFAULT NULL, + MC2 DOUBLE DEFAULT NULL, + MC3 DOUBLE DEFAULT NULL, + MC1SOLID DOUBLE DEFAULT NULL, + MC2SOLID DOUBLE DEFAULT NULL, + MC3SOLID DOUBLE DEFAULT NULL, + TWUCOON1 DOUBLE DEFAULT '0', + TWUCOON2 DOUBLE DEFAULT '0', + TWUCOON3 DOUBLE DEFAULT '0', + ASSOCIATIONSITES INT DEFAULT '0', + ASSOCIATIONSCHEME VARCHAR(50) DEFAULT NULL, + RACKETZCPA DOUBLE DEFAULT '0', + VOLCORRCPA_T DOUBLE DEFAULT '0', + ASSOCIATIONBOUNDINGVOLUME_SRK DOUBLE DEFAULT '0', + ASSOCIATIONENERGY DOUBLE DEFAULT '0', + ACPA_SRK DOUBLE DEFAULT '0', + BCPA_SRK DOUBLE DEFAULT '0', + MCPA_SRK DOUBLE DEFAULT '0', + ACPA_PR DOUBLE DEFAULT NULL, + BCPA_PR DOUBLE DEFAULT NULL, + MCPA_PR DOUBLE DEFAULT NULL, + ASSOCIATIONBOUNDINGVOLUME_PR DOUBLE DEFAULT NULL, + CALCACTIVITY INT DEFAULT '1', + ANTOINESOLIDA DOUBLE DEFAULT '0', + ANTOINESOLIDB DOUBLE DEFAULT NULL, + ANTOINESOLIDC DOUBLE DEFAULT '0', + HSUB INT DEFAULT '0', + CRITICALVISCOSITY DOUBLE DEFAULT NULL, + HYDRATEA1SMALL DOUBLE DEFAULT '0', + HYDRATEB1SMALL DOUBLE DEFAULT '0', + HYDRATEA1LARGE DOUBLE DEFAULT '0', + HYDRATEB1LARGE DOUBLE DEFAULT '0', + HYDRATEA2SMALL DOUBLE DEFAULT '0', + HYDRATEB2SMALL DOUBLE DEFAULT '0', + HYDRATEA2LARGE DOUBLE DEFAULT '0', + HYDRATEB2LARGE DOUBLE DEFAULT '0', + HYDRATEFORMER VARCHAR(50) DEFAULT NULL, + MSAFT DOUBLE DEFAULT '0', + SIGMASAFT DOUBLE DEFAULT '0', + EPSIKSAFT DOUBLE DEFAULT '0', + ASSOCIATIONBOUNDINGVOLUME_PCSAFT DOUBLE DEFAULT '0', + ASSOCIATIONENERGY_PCSAFT DOUBLE DEFAULT '0', + LJDIAMETERHYDRATE DOUBLE DEFAULT NULL, + LJEPSHYDRATE DOUBLE DEFAULT NULL, + SPHERICALCORERADIUSHYDRATE DOUBLE DEFAULT '0', + DESHMATIONICDIAMETER DOUBLE DEFAULT '0', + WAXFORMER INT DEFAULT '0', + B2_LARGEGF DOUBLE DEFAULT '0', + A1_SMALLGF DOUBLE DEFAULT '0', + B1_SMALLGF DOUBLE DEFAULT '0', + A1_LARGEGF DOUBLE DEFAULT '0', + B1_LARGEGF DOUBLE DEFAULT '0', + A2_SMALLGF DOUBLE DEFAULT '0', + B2_SMALLGF DOUBLE DEFAULT '0', + A2_LARGEGF DOUBLE DEFAULT '0', + CPSOLID1 DOUBLE DEFAULT '0', + CPSOLID2 DOUBLE DEFAULT '0', + CPSOLID3 DOUBLE DEFAULT '0', + CPSOLID4 DOUBLE DEFAULT '0', + CPSOLID5 DOUBLE DEFAULT '0', + CPLIQUID1 DOUBLE DEFAULT '0', + CPLIQUID2 DOUBLE DEFAULT '0', + CPLIQUID3 DOUBLE DEFAULT '0', + CPLIQUID4 DOUBLE DEFAULT '0', + CPLIQUID5 DOUBLE DEFAULT '0', + MCPR1 DOUBLE DEFAULT '0', + MCPR2 DOUBLE DEFAULT '0', + MCPR3 DOUBLE DEFAULT '0', + PARACHOR_CPA DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.COMPTEMP ADD CONSTRAINT PUBLIC.CONSTRAINT_AE PRIMARY KEY(ID); +-- 12 +/- SELECT COUNT(*) FROM PUBLIC.COMPTEMP; +INSERT INTO PUBLIC.COMPTEMP(ID, NAME, CASNUMBER, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, HREF, CPA, CPB, CPC, CPD, CPE, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, VOLCORRSRK_T, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, RACKETZCPA, VOLCORRCPA_T, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY, HYDRATEA1SMALL, HYDRATEB1SMALL, HYDRATEA1LARGE, HYDRATEB1LARGE, HYDRATEA2SMALL, HYDRATEB2SMALL, HYDRATEA2LARGE, HYDRATEB2LARGE, HYDRATEFORMER, MSAFT, SIGMASAFT, EPSIKSAFT, ASSOCIATIONBOUNDINGVOLUME_PCSAFT, ASSOCIATIONENERGY_PCSAFT, LJDIAMETERHYDRATE, LJEPSHYDRATE, SPHERICALCORERADIUSHYDRATE, DESHMATIONICDIAMETER, WAXFORMER, B2_LARGEGF, A1_SMALLGF, B1_SMALLGF, A1_LARGEGF, B1_LARGEGF, A2_SMALLGF, B2_SMALLGF, A2_LARGEGF, CPSOLID1, CPSOLID2, CPSOLID3, CPSOLID4, CPSOLID5, CPLIQUID1, CPLIQUID2, CPLIQUID3, CPLIQUID4, CPLIQUID5, MCPR1, MCPR2, MCPR3, PARACHOR_CPA) VALUES +(1, 'methane', '74-82-8', 'HC', 1, 'CH4 ', 16.043, 0.422182073, -82.59, 45.99, 0.0115, -161.55, 16.043, 99.0, 'Classic ', 2.6, 37.978352, -0.07461815, 3.0188134E-4, -2.8325798E-7, 9.070574E-11, 'log', 39.205, -1324.4, -3.4366, 3.1019E-5, 2.0, 0.0, 0.0, 0.0, 0.0, 2.52, 155.8090060223, 0.4069986258, 3, -26.87, 1150.0, 0.187, -5.21E-4, -50500.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 900.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.303, -6.05E-4, -3.2E-6, 77.3, 941.0, 452.0, 0.116656057, 90.69, 90.65, -74520.0, 186.0, 33.022, -0.01587, -1.55E-4, 0.0, 0.0, 2.92, 0.29, 191.0, 0.289, 0.0, 1.02E7, 0.261, -0.147, 0.222, 0.0, 0.1, 0.5857, -0.7206, 1.2899, 0.0, 0.0, 0.0, 0.122841598, 0.914470789, 2.741978611, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.18626, 1, 1.0, -6.68082, 0.0, 9700, 1.5293E-5, 0.04792, 1594.0, 0.01244, 2952.0, 0.002317, 2777.0, 1.076, 1323.0, 'yes', 1.0, 3.703900119, 150.029998779297, 0.0, 0.0, 3.1907109417, 155.8090060223, 0.4069986258, 1.0, 0, 900.0, 6.21E-4, 2760.0, 0.421, 1963.1, 0.00404868, 2636.75, 0.29527, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.39234, 0.0, 0.0, 77.3), +(2, 'ethane', '74-84-0', 'HC', 2, 'C2H6 ', 30.07, 0.544459352, 32.17, 48.72, 0.0995, -88.55, 30.07, 148.0, 'Classic ', 9761.1, 34.735892, -0.036806078, 4.705724E-4, -5.5296414E-7, 2.0676918E-10, 'log', 51.857, -2598.7, -5.1283, 1.4913E-5, 2.0, 0.0, 0.0, 0.0, 0.0, 3.2646730658, 176.7019972478, 0.5138421358, 3, -10.23, 668.0, 0.0439, -9.59E-5, -31900.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.002582841, 12.53829052, -18.38097379, -0.384, 0.00525, -6.37E-6, 108.9, 2860.0, 652.0, 1.14028E-5, 90.35, 89.95, -84680.0, 229.0, 25.263, -0.01095, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 0.1, 0.654848544, -0.184389171, 0.26016005, 0.0, 0.0, 0.0, 0.299607318, 0.876626839, 1.6792384, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.04609, 1, 1.0, -3.33355, 0.0, 20500, 2.17562E-5, 0.0, 0.0, 0.002999, 3861.0, 0.0, 0.0, 0.007362, 4000.0, 'yes', 1.6069, 3.5206, 191.42, 0.0, 0.0, 3.2646730658, 176.7019972478, 0.5138421358, 1.0, 0, 3363.0, 0.0, 0.0, 0.1098, 2854.94, 0.0, 0.0, 0.0893861, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.52005, 0.0043, 0.10292, 108.9); +INSERT INTO PUBLIC.COMPTEMP(ID, NAME, CASNUMBER, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, HREF, CPA, CPB, CPC, CPD, CPE, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, VOLCORRSRK_T, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, RACKETZCPA, VOLCORRCPA_T, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY, HYDRATEA1SMALL, HYDRATEB1SMALL, HYDRATEA1LARGE, HYDRATEB1LARGE, HYDRATEA2SMALL, HYDRATEB2SMALL, HYDRATEA2LARGE, HYDRATEB2LARGE, HYDRATEFORMER, MSAFT, SIGMASAFT, EPSIKSAFT, ASSOCIATIONBOUNDINGVOLUME_PCSAFT, ASSOCIATIONENERGY_PCSAFT, LJDIAMETERHYDRATE, LJEPSHYDRATE, SPHERICALCORERADIUSHYDRATE, DESHMATIONICDIAMETER, WAXFORMER, B2_LARGEGF, A1_SMALLGF, B1_SMALLGF, A1_LARGEGF, B1_LARGEGF, A2_SMALLGF, B2_SMALLGF, A2_LARGEGF, CPSOLID1, CPSOLID2, CPSOLID3, CPSOLID4, CPSOLID5, CPLIQUID1, CPLIQUID2, CPLIQUID3, CPLIQUID4, CPLIQUID5, MCPR1, MCPR2, MCPR3, PARACHOR_CPA) VALUES +(9, 'propane', '74-98-6', 'HC', 9, 'CH4O ', 44.097, 0.0, 96.68, 42.48, 0.1523, -42.05, 44.097, 203.0, 'Classic ', 19519.6, 31.983958, 0.042659134, 4.9975454E-4, -6.5622402E-7, 2.5598806E-10, 'log', 59.078, -3492.6, -6.0669, 1.0919E-5, 2.0, 0.0, 0.0, 0.0, 0.0, 3.3205773626, 205.8859461427, 0.6623796853, 3, -7.764, 722.0, 0.0238, -4.67E-5, -24400.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, -0.015069991, -4.344143673, 4.007325591, -0.384, 0.00525, -6.37E-6, 151.9, 6000.0, 1000.0, 1.71089E-9, 85.47, 85.5, -103840.0, 189.0, 18.861, -0.020332, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 0.1, 0.721211486, -0.099216642, 0.181829227, 0.0, 0.0, 0.0, 0.435825883, 0.866132179, 1.395432818, 0, '0', 0.0, 0.0, 0.0, 0.0, 91187.5, 5.7834, 0.6307, 0.0, 0.0, 0.0, 5.24869, 1, 1.0, -11.1254, 0.0, 28500, 2.49734E-5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.008264, 4521.0, 'yes', 2.002, 3.6184, 208.11, 0.0, 0.0, 3.3205773626, 205.8859461427, 0.6623796853, 1.0, 0, 3885.27, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.61838, -0.16071, 0.48785, 151.9), +(10, 'CO2', '124-38-9', 'inert', 10, 'CO2 ', 44.01, 1.1, 31.04, 73.815, 0.2276, -78.5, 44.01, 94.0, 'Classic ', 19459.1, 27.095326, 0.011273784, 1.2487628E-4, -1.9737436E-7, 8.779584E-11, 'log', 140.54, -4735.0, -21.268, 0.040909, 1.0, 0.0, 0.0, 0.0, 0.0, 2.34, 168.77, 0.6805, 2, -7.811, 3140.0, 0.0, 0.0, -394000.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 94.4914, -6789.04, -11.4519, -0.010454, 0.0, 0.0, 0.0, -0.384, 0.00525, -6.37E-6, 78.0, 9018.9693, 1000.0, 5.185, 216.58, 216.592, -393500.0, 189.0, 32.939, 0.06842, -2.847E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 0.1, 0.88173893, -0.856255022, 3.094939327, 0.0, 0.0, 0.0, 1.413601068, -0.605965449, 1.101814948, 2, '2A', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 6.81228, -1301.679, -3.494, 26100, 3.76872E-5, 4.856E-11, 7470.0, 0.09862, 2617.0, 6.082E-5, 3691.0, 0.1683, 2591.0, 'yes', 1.3097, 3.2507, 92.15, 0.0, 0.0, 3.03720716, 170.1623828321, 0.68463388, 1.0, 0, 2119.56, 7.58596E-4, 2500.0, 0.231198, 2419.56, 0.00724496, 2330.0, 0.139898, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.71369, -0.44764, 2.43752, 78.0); +INSERT INTO PUBLIC.COMPTEMP(ID, NAME, CASNUMBER, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, HREF, CPA, CPB, CPC, CPD, CPE, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, VOLCORRSRK_T, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, RACKETZCPA, VOLCORRCPA_T, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY, HYDRATEA1SMALL, HYDRATEB1SMALL, HYDRATEA1LARGE, HYDRATEB1LARGE, HYDRATEA2SMALL, HYDRATEB2SMALL, HYDRATEA2LARGE, HYDRATEB2LARGE, HYDRATEFORMER, MSAFT, SIGMASAFT, EPSIKSAFT, ASSOCIATIONBOUNDINGVOLUME_PCSAFT, ASSOCIATIONENERGY_PCSAFT, LJDIAMETERHYDRATE, LJEPSHYDRATE, SPHERICALCORERADIUSHYDRATE, DESHMATIONICDIAMETER, WAXFORMER, B2_LARGEGF, A1_SMALLGF, B1_SMALLGF, A1_LARGEGF, B1_LARGEGF, A2_SMALLGF, B2_SMALLGF, A2_LARGEGF, CPSOLID1, CPSOLID2, CPSOLID3, CPSOLID4, CPSOLID5, CPLIQUID1, CPLIQUID2, CPLIQUID3, CPLIQUID4, CPLIQUID5, MCPR1, MCPR2, MCPR3, PARACHOR_CPA) VALUES +(16, 'nitrogen', '7727-37-9', 'inert', 16, 'N2 ', 28.0135, 0.80796486, -147.05, 33.944, 0.0403, -195.75, 28.014, 89.8, 'Classic ', 8330.8, 29.423246, -0.002169954, 5.8198E-7, 1.305298E-8, -8.23086E-12, 'log', 58.282, -1084.1, -8.3144, 0.044127, 1.0, 0.0, 0.0, 0.2, 0.0, 3.1325067483, 126.5783867132, 0.3591889027, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.055118857, -2.346353896, 1.5681216, -0.384, 0.00525, -6.37E-6, 41.0, 720.0, 870.0, 0.12508, 63.15, 63.3, 0.0, 192.0, 37.87, -0.060272, 0.0, 0.0, 0.0, 3.21, 0.286, 126.0, 0.297, 0.0, 7490000.0, 0.404, -0.317, 0.273, 0.0, 0.1, 0.574258329, -0.322594876, 0.590654497, 0.0, 0.0, 0.0, 0.112629607, 0.902199715, 2.874960678, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.601899073, 1, 1.0, -21.24548045, 0.0, 0, 1.74179E-5, 0.0528, 932.3, 0.03415, 2240.0, 0.007507, 2004.0, 0.09477, 1596.0, 'yes', 1.2053, 3.313, 90.96, 0.0, 0.0, 3.1325067483, 126.5783867132, 0.3591889027, 1.0, 0, 1150.0, 0.011645, 2159.0, 0.4001, 1037.18, 0.00718, 2090.0, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.436354704, 0.0, 0.0, 41.0), +(17, 'n-butane', '106-97-8', 'HC', 17, 'C4H10 ', 58.123, 0.0, 151.97, 37.96, 0.2002, -0.45, 58.124, 255.0, 'Classic ', 29278.1, 46.117758, 0.046026304, 6.6985898E-4, -8.7887294E-7, 3.4370076E-10, 'log', 66.343, -4363.2, -7.046, 9.4509E-6, 2.0, 0.0, 0.0, 0.0, 0.0, 2.9125, 209.0, 0.9379, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, -0.018486492, -4.921574519, 4.858186966, -0.384, 0.00525, -6.37E-6, 191.7, 6000.0, 1000.0, 6.76236E-6, 134.86, 138.15, -126150.0, 189.0, 15.194, -0.006886, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 0.1, 0.808063555, -0.212724945, 0.362961475, 0.0, 0.0, 0.0, 0.331800583, 0.854692733, 1.865828858, 0, '0', 0.0, 0.0, 0.0, 0.0, 131427.4, 7.2081, 0.70771, 0.0, 0.0, 0.0, 5.76447, 1, 1.0, -13.4385, 0.0, 35900, 2.57682E-5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.001262, 4580.0, 'yes', 2.3316, 3.7086, 222.86, 0.0, 0.0, 2.9125, 209.0, 0.9379, 1.0, 0, 2691.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.67123, -0.03803, 0.21886, 191.7); +INSERT INTO PUBLIC.COMPTEMP(ID, NAME, CASNUMBER, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, HREF, CPA, CPB, CPC, CPD, CPE, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, VOLCORRSRK_T, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, RACKETZCPA, VOLCORRCPA_T, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY, HYDRATEA1SMALL, HYDRATEB1SMALL, HYDRATEA1LARGE, HYDRATEB1LARGE, HYDRATEA2SMALL, HYDRATEB2SMALL, HYDRATEA2LARGE, HYDRATEB2LARGE, HYDRATEFORMER, MSAFT, SIGMASAFT, EPSIKSAFT, ASSOCIATIONBOUNDINGVOLUME_PCSAFT, ASSOCIATIONENERGY_PCSAFT, LJDIAMETERHYDRATE, LJEPSHYDRATE, SPHERICALCORERADIUSHYDRATE, DESHMATIONICDIAMETER, WAXFORMER, B2_LARGEGF, A1_SMALLGF, B1_SMALLGF, A1_LARGEGF, B1_LARGEGF, A2_SMALLGF, B2_SMALLGF, A2_LARGEGF, CPSOLID1, CPSOLID2, CPSOLID3, CPSOLID4, CPSOLID5, CPLIQUID1, CPLIQUID2, CPLIQUID3, CPLIQUID4, CPLIQUID5, MCPR1, MCPR2, MCPR3, PARACHOR_CPA) VALUES +(29, 'n-pentane', '109-66-0', 'HC', 29, 'nC5 ', 72.15, 0.0, 196.55, 33.7, 0.2515, 36.05, 72.151, 304.0, 'Classic ', 39036.6, 62.803956, -0.003059552, 9.8487644E-4, -1.24202846E-6, 4.7830442E-10, 'log', 78.741, -5420.3, -8.8253, 9.6171E-6, 2.0, 0.0, 0.0, 0.0, 0.0, 5.784, 341.1, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.34, 0.043, -0.384, 0.00525, -6.37E-6, 233.9, 8401.5, 1000.0, 6.8642E-7, 143.42, 143.42, -242000.0, 189.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 0.999, 0.903861134, -0.358553152, 0.663885221, 0.0, 0.0, 0.0, 0.319903, 0.847895, 2.10201, 0, '0', 0.0, 0.0, 0.0, 0.0, 181980.0, 9.1008, 0.79858, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 42000, 2.58651E-5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'no', 2.6896, 3.7729, 231.2, 0.0, 0.0, 5.784, 341.1, 0.0, 1.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7518036461, -0.128503978575, 0.49677415, 233.9), +(30, 'n-hexane', '110-54-3', 'HC', 30, 'C6H14 ', 86.177, 0.664, 234.45, 30.25, 0.3013, 68.75, 86.178, 370.0, 'Classic ', 48795.1, 73.420934, -0.001380124, 0.00118906828, -1.52262596E-6, 5.9228936E-10, 'log', 3.45604, 1044.038, -53.893, 1000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.949, 399.3, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.34, 0.043, -0.384, 0.00525, -6.37E-6, 271.0, 13080.0, 1000.0, 1.1707133997481E-5, 177.83, 177.83, -167190.0, 189.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 0.999, 1.1061, -1.4411, 2.9173, 0.0, 0.0, 0.0, 0.175874, 0.865924, 3.53648, 0, '0', 0.0, 0.0, 0.0, 0.0, 236810.0, 10.789, 0.8313, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0, 2.57841E-5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'no', 3.0576, 3.7983, 236.77, 0.0, 0.0, 5.949, 399.3, 0.0, 1.0, 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8347, -0.31803, 1.02085, 271.0); +INSERT INTO PUBLIC.COMPTEMP(ID, NAME, CASNUMBER, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, HREF, CPA, CPB, CPC, CPD, CPE, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, VOLCORRSRK_T, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, RACKETZCPA, VOLCORRCPA_T, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY, HYDRATEA1SMALL, HYDRATEB1SMALL, HYDRATEA1LARGE, HYDRATEB1LARGE, HYDRATEA2SMALL, HYDRATEB2SMALL, HYDRATEA2LARGE, HYDRATEB2LARGE, HYDRATEFORMER, MSAFT, SIGMASAFT, EPSIKSAFT, ASSOCIATIONBOUNDINGVOLUME_PCSAFT, ASSOCIATIONENERGY_PCSAFT, LJDIAMETERHYDRATE, LJEPSHYDRATE, SPHERICALCORERADIUSHYDRATE, DESHMATIONICDIAMETER, WAXFORMER, B2_LARGEGF, A1_SMALLGF, B1_SMALLGF, A1_LARGEGF, B1_LARGEGF, A2_SMALLGF, B2_SMALLGF, A2_LARGEGF, CPSOLID1, CPSOLID2, CPSOLID3, CPSOLID4, CPSOLID5, CPLIQUID1, CPLIQUID2, CPLIQUID3, CPLIQUID4, CPLIQUID5, MCPR1, MCPR2, MCPR3, PARACHOR_CPA) VALUES +(39, 'i-butane', '75-28-5', 'HC', 39, 'C4H10 ', 58.123, 0.0, 134.99, 36.48, 0.177, -11.75, 58.124, 263.0, 'Classic ', 29278.1, 27.860214, 0.148679262, 4.5535778E-4, -6.7335086E-7, 2.6962302E-10, 'log', 100.18, -4841.9, -13.541, 0.020063, 1.0, 1.8, 0.076, 0.0, 0.0, 3.0810162204, 225.1504438988, 0.8708186545, 3, -24.71, 4210.0, 0.0453, -3.38E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0789, -1.16, 0.0, -0.384, 0.00525, -6.37E-6, 181.5, 6000.0, 1000.0, 1.4051E-7, 113.54, 273.0, -134510.0, 189.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 0.999, 0.78038836, -0.273389543, 0.659787119, 0.0, 0.0, 0.0, 0.21797128, 0.848891073, 2.284036968, 0, '0', 0.0, 0.0, 0.0, 0.0, 129094.0, 7.47, 0.7021, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 24540, 2.71155E-5, 0.0, 0.0, 0.08189, 4013.0, 0.0, 0.0, 0.08189, 4013.0, 'yes', 2.2616, 3.7574, 216.53, 0.0, 0.0, 3.0810162204, 225.1504438988, 0.8708186545, 1.0, 0, 4000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08164, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.65617, -0.1387, 0.50392, 181.5), +(99, 'i-pentane', '78-78-4', 'HC', 99, 'iC5', 72.151, 0.0, 187.28, 33.812, 0.2275, 27.8, 72.151, 306.0, 'Classic ', 39036.6, 16.287126, 0.317519974, 2.0236276E-4, -4.302495E-7, 1.799981E-10, 'log', 72.35, -5010.9, -7.883, 8.9795E-6, 2.0, 0.0, 0.0, 0.0, 0.0, 5.784, 341.1, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394370.0, -19.2905, 29814.5, -0.019678, 0.013189, 0.031144, 0, 'solute ', 0.0, 0.0, 0.0, 0.0, -0.030486678, -4.461903736, 4.285718649, -0.384, 0.00525, -6.37E-6, 225.0, 6000.0, 1000.0, 1.18976E-9, 113.25, 113.45, -242000.0, 189.0, 12.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 0.999, 0.857887409, -0.267638226, 0.458642756, 0.0, 0.0, 0.0, 0.342669912, 0.851893781, 1.921875279, 0, '0', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.34755, 1, 1.0, -17.0852, 0.0, 0, 2.75073E-5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'no', 0.0, 0.0, 0.0, 0.0, 0.0, 5.784, 341.1, 0.0, 1.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.71582, -0.10058, 0.38314, 225.0); +INSERT INTO PUBLIC.COMPTEMP(ID, NAME, CASNUMBER, COMPTYPE, COMPINDEX, FORMULA, MOLARMASS, LIQDENS, TC, PC, ACSFACT, NORMBOIL, MWAVG, CRITVOL, PVMODEL, HREF, CPA, CPB, CPC, CPD, CPE, ANTOINEVAPPRESLIQTYPE, ANTOINEA, ANTOINEB, ANTOINEC, ANTOINED, ANTOINEE, DIPOLEMOMENT, VISCFACT, RACKETZ, VOLCORRSRK_T, LJDIAMETER, LJEPS, SPHERICALCORERADIUS, LIQVISCMODEL, LIQVISC1, LIQVISC2, LIQVISC3, LIQVISC4, GIBBSENERGYOFFORMATION, DIELECTRICPARAMETER1, DIELECTRICPARAMETER2, DIELECTRICPARAMETER3, DIELECTRICPARAMETER4, DIELECTRICPARAMETER5, IONICCHARGE, REFERENCESTATETYPE, HENRYCOEF1, HENRYCOEF2, HENRYCOEF3, HENRYCOEF4, SCHWARTZENTRUBER1, SCHWARTZENTRUBER2, SCHWARTZENTRUBER3, LIQUIDCONDUCTIVITY1, LIQUIDCONDUCTIVITY2, LIQUIDCONDUCTIVITY3, PARACHOR, HEATOFFUSION, TRIPLEPOINTDENSITY, TRIPLEPOINTPRESSURE, TRIPLEPOINTTEMPERATURE, MELTINGPOINTTEMPERATURE, ENTHALPYOFFORMATION, ABSOLUTEENTROPY, SOLIDDENSITYCOEFS1, SOLIDDENSITYCOEFS2, SOLIDDENSITYCOEFS3, SOLIDDENSITYCOEFS4, SOLIDDENSITYCOEFS5, LIQUIDDENSITYCOEFS1, LIQUIDDENSITYCOEFS2, LIQUIDDENSITYCOEFS3, LIQUIDDENSITYCOEFS4, LIQUIDDENSITYCOEFS5, HEATOFVAPORIZATIONCOEFS1, HEATOFVAPORIZATIONCOEFS2, HEATOFVAPORIZATIONCOEFS3, HEATOFVAPORIZATIONCOEFS4, HEATOFVAPORIZATIONCOEFS5, STDDENS, MC1, MC2, MC3, MC1SOLID, MC2SOLID, MC3SOLID, TWUCOON1, TWUCOON2, TWUCOON3, ASSOCIATIONSITES, ASSOCIATIONSCHEME, RACKETZCPA, VOLCORRCPA_T, ASSOCIATIONBOUNDINGVOLUME_SRK, ASSOCIATIONENERGY, ACPA_SRK, BCPA_SRK, MCPA_SRK, ACPA_PR, BCPA_PR, MCPA_PR, ASSOCIATIONBOUNDINGVOLUME_PR, CALCACTIVITY, ANTOINESOLIDA, ANTOINESOLIDB, ANTOINESOLIDC, HSUB, CRITICALVISCOSITY, HYDRATEA1SMALL, HYDRATEB1SMALL, HYDRATEA1LARGE, HYDRATEB1LARGE, HYDRATEA2SMALL, HYDRATEB2SMALL, HYDRATEA2LARGE, HYDRATEB2LARGE, HYDRATEFORMER, MSAFT, SIGMASAFT, EPSIKSAFT, ASSOCIATIONBOUNDINGVOLUME_PCSAFT, ASSOCIATIONENERGY_PCSAFT, LJDIAMETERHYDRATE, LJEPSHYDRATE, SPHERICALCORERADIUSHYDRATE, DESHMATIONICDIAMETER, WAXFORMER, B2_LARGEGF, A1_SMALLGF, B1_SMALLGF, A1_LARGEGF, B1_LARGEGF, A2_SMALLGF, B2_SMALLGF, A2_LARGEGF, CPSOLID1, CPSOLID2, CPSOLID3, CPSOLID4, CPSOLID5, CPLIQUID1, CPLIQUID2, CPLIQUID3, CPLIQUID4, CPLIQUID5, MCPR1, MCPR2, MCPR3, PARACHOR_CPA) VALUES +(100, 'H2S', '7783-06-4', 'inert', 100, 'H2S', 34.08, 1.1, 100.38, 89.607, 0.0942, -59.65, 34.08, 98.5, 'Classic ', 12550.9, 35.467524, -0.028583532, 1.0966166E-4, -1.1065934E-7, 4.057232E-11, 'log', -6.95626, 1.19695, -3.12614, 2.99448, 0.0, 0.0, 0.0, 0.0, 0.0, 3.62, 195.2, 0.0, 2, -7.811, 3140.0, 0.0, 0.0, -394000.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0, 'solute ', 0.0, 0.0, 0.0, 0.059565, 0.01857, 0.0, -2.078, -0.384, 0.00525, -6.37E-6, 80.1, 6000.0, 1000.0, 0.232, 187.66, 187.66, -242000.0, 189.0, 53.0, -0.00784, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 0.1, 0.5507, 0.4534, -0.5841, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2, '2A', 0.0, 0.0, 0.001160489, 5000.0, 44505.0, 2.85, 0.60265, 0.0, 0.0, 0.0, 0.0, 1, 4.43681, -829.439, -25.412, 0, 0.0, 0.009928, 2999.0, 0.01613, 3737.0, 2.684E-4, 4242.0, 0.8553, 2325.0, 'yes', 1.6941, 3.0214, 226.79, 0.0, 0.0, 3.941, 195.2, 0.0, 1.0, 0, 4119.56, 0.004, 3141.6, 0.295855, 2936.13, 0.00124496, 2778.0, 0.339898, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.50909, -0.002814, 0.36215, 80.1), +(114, 'water', '7732-18-5', 'water', 114, 'H2O', 18.015, 0.999, 374.15, 220.89, 0.344, 100.0, 18.015, 56.0, 'Classic ', 1374.6, 36.54003, -0.034802404, 1.168117E-4, -1.3003096E-7, 5.254448E-11, 'log10', -7.76451, 1.45838, -2.7758, -1.23303, 0.0, 1.8, 0.076, 0.235662374, 0.0, 2.52, 809.1, 0.0, 3, -27.9527578282, 4665.2259299302, 0.0523233421, -3.83562E-5, -229000.0, -19.2905, 29814.5, -0.019678, 1.32E-4, -3.11E-7, 0, 'solvent ', 0.0, 0.0, 0.0, 0.0, 0.0547834254, 0.0946785127, -2.2673294034, -0.384, 0.00525, -6.37E-6, 52.8786226, 6010.0, 1000.0, 0.00611, 273.16, 273.15, -242000.0, 189.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.459, 0.30542, 647.13, 0.081, 0.0, 5.21E7, 0.32, -0.212, 0.258, 0.0, 0.999, 1.087, -0.638, 0.635, 0.0, 0.0, 0.0, 0.168272437065587, 0.908482584277346, 5.24042737227478, 4, '4C', 0.0, 0.0, 0.0692, 16655.0, 12277.0, 1.4515, 0.67359, 13855.59696, 1.456360879, 0.664155324, 0.046473789, 1, 17.38710706, -6141.762746, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'no', 1.0656, 3.0007, 366.51, 0.034868, 20790.8198, 2.52, 809.1, 0.0, 1.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -262.49, 140.52, 0.0, 0.0, 0.0, 276370.0, -2090.1, 8.125, -0.014116, 9.3701E-6, 0.923656, -0.37937, 0.442429, 52.4198672663); +CREATE CACHED TABLE PUBLIC.DEWPOINTDATASYNTHHC( + ID DOUBLE NOT NULL, + COMP1 VARCHAR(255) DEFAULT NULL, + COMP2 VARCHAR(255) DEFAULT NULL, + COMP3 VARCHAR(255) DEFAULT NULL, + COMP4 VARCHAR(255) DEFAULT NULL, + COMP5 VARCHAR(255) DEFAULT NULL, + COMP6 VARCHAR(255) DEFAULT NULL, + COMP7 VARCHAR(255) DEFAULT NULL, + COMP8 VARCHAR(255) DEFAULT NULL, + COMP9 VARCHAR(255) DEFAULT NULL, + X1 DOUBLE DEFAULT NULL, + X2 DOUBLE DEFAULT NULL, + X3 DOUBLE DEFAULT NULL, + X4 DOUBLE DEFAULT NULL, + X5 DOUBLE DEFAULT NULL, + X6 DOUBLE DEFAULT NULL, + X7 DOUBLE DEFAULT NULL, + X8 DOUBLE DEFAULT NULL, + X9 DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + STDTEMPDEV DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.DEWPOINTDATASYNTHHC ADD CONSTRAINT PUBLIC.CONSTRAINT_36 PRIMARY KEY(ID); +-- 100 +/- SELECT COUNT(*) FROM PUBLIC.DEWPOINTDATASYNTHHC; +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHC(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(1.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 253.7, 12.7, 1.0, 'Blanco????'), +(2.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 254.0, 12.9, 1.0, 'Blanco????'), +(3.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 254.3, 13.1, 1.0, 'Blanco????'), +(4.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 254.5, 13.3, 1.0, 'Blanco????'), +(5.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 254.7, 13.5, 1.0, 'Blanco????'), +(6.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 255.0, 13.7, 1.0, 'Blanco????'), +(7.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 255.2, 13.8, 1.0, 'Blanco????'), +(8.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 255.4, 14.0, 1.0, 'Blanco????'), +(9.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 255.6, 14.2, 1.0, 'Blanco????'), +(10.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 255.9, 14.4, 1.0, 'Blanco????'), +(11.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 256.1, 14.6, 1.0, 'Blanco????'), +(12.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 256.3, 14.8, 1.0, 'Blanco????'), +(13.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 256.5, 15.0, 1.0, 'Blanco????'), +(14.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 256.7, 15.2, 1.0, 'Blanco????'), +(15.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 256.9, 15.3, 1.0, 'Blanco????'), +(16.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 257.1, 15.5, 1.0, 'Blanco????'), +(17.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 257.3, 15.7, 1.0, 'Blanco????'), +(18.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 257.6, 15.9, 1.0, 'Blanco????'), +(19.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 257.8, 16.1, 1.0, 'Blanco????'), +(20.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 258.6, 17.0, 1.0, 'Blanco????'); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHC(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(21.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 259.0, 17.4, 1.0, 'Blanco????'), +(22.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 259.8, 18.2, 1.0, 'Blanco????'), +(23.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 260.7, 19.3, 1.0, 'Blanco????'), +(24.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 261.5, 20.3, 1.0, 'Blanco????'), +(25.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 262.3, 21.3, 1.0, 'Blanco????'), +(28.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 263.1, 22.3, 1.0, 'Blanco????'), +(29.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 263.8, 23.4, 1.0, 'Blanco????'), +(30.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 264.5, 24.5, 1.0, 'Blanco????'), +(31.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 265.2, 25.5, 1.0, 'Blanco????'), +(32.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 265.8, 26.6, 1.0, 'Blanco????'), +(33.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 266.4, 27.6, 1.0, 'Blanco????'), +(34.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 266.9, 28.7, 1.0, 'Blanco????'), +(35.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 267.4, 29.8, 1.0, 'Blanco????'), +(36.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 268.0, 30.9, 1.0, 'Blanco????'), +(37.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 268.4, 31.9, 1.0, 'Blanco????'), +(38.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 268.8, 33.0, 1.0, 'Blanco????'), +(39.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 269.2, 34.0, 1.0, 'Blanco????'), +(40.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 269.6, 35.1, 1.0, 'Blanco????'), +(41.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 270.0, 36.1, 1.0, 'Blanco????'), +(42.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 270.3, 37.1, 1.0, 'Blanco????'); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHC(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(43.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 270.7, 38.2, 1.0, 'Blanco????'), +(44.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 270.9, 39.3, 1.0, 'Blanco????'), +(45.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 271.1, 40.1, 1.0, 'Blanco????'), +(46.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 271.3, 41.0, 1.0, 'Blanco????'), +(47.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 271.5, 41.9, 1.0, 'Blanco????'), +(48.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 271.8, 42.8, 1.0, 'Blanco????'), +(49.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 271.9, 43.7, 1.0, 'Blanco????'), +(50.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.1, 44.7, 1.0, 'Blanco????'), +(51.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.3, 45.7, 1.0, 'Blanco????'), +(52.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.5, 46.7, 1.0, 'Blanco????'), +(53.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.6, 47.7, 1.0, 'Blanco????'), +(54.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.7, 48.7, 1.0, 'Blanco????'), +(55.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.8, 49.7, 1.0, 'Blanco????'), +(56.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.9, 50.5, 1.0, 'Blanco????'), +(57.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.0, 51.4, 1.0, 'Blanco????'), +(58.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.1, 52.2, 1.0, 'Blanco????'), +(59.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.1, 53.1, 1.0, 'Blanco????'), +(60.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.2, 54.0, 1.0, 'Blanco????'), +(61.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.2, 55.0, 1.0, 'Blanco????'), +(62.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.3, 55.9, 1.0, 'Blanco????'); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHC(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(63.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.3, 56.9, 1.0, 'Blanco????'), +(64.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.3, 57.8, 1.0, 'Blanco????'), +(65.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.3, 58.7, 1.0, 'Blanco????'), +(66.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.3, 59.6, 1.0, 'Blanco????'), +(67.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.3, 60.6, 1.0, 'Blanco????'), +(68.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.3, 61.5, 1.0, 'Blanco????'), +(69.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.3, 62.4, 1.0, 'Blanco????'), +(70.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.2, 63.4, 1.0, 'Blanco????'), +(71.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.2, 64.4, 1.0, 'Blanco????'), +(72.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.1, 65.3, 1.0, 'Blanco????'), +(73.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 273.0, 66.2, 1.0, 'Blanco????'), +(74.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.9, 67.1, 1.0, 'Blanco????'), +(75.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.9, 68.0, 1.0, 'Blanco????'), +(76.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.7, 69.0, 1.0, 'Blanco????'), +(77.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.7, 69.9, 1.0, 'Blanco????'), +(78.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.6, 70.8, 1.0, 'Blanco????'), +(79.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.4, 71.7, 1.0, 'Blanco????'), +(80.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.2, 72.7, 1.0, 'Blanco????'), +(81.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 272.1, 73.6, 1.0, 'Blanco????'), +(82.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 271.9, 74.6, 1.0, 'Blanco????'); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHC(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(83.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 271.8, 75.5, 1.0, 'Blanco????'), +(84.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 271.6, 76.4, 1.0, 'Blanco????'), +(85.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 271.4, 77.3, 1.0, 'Blanco????'), +(86.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 271.2, 78.2, 1.0, 'Blanco????'), +(87.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 270.9, 79.2, 1.0, 'Blanco????'), +(88.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 270.7, 80.1, 1.0, 'Blanco????'), +(89.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 270.5, 80.9, 1.0, 'Blanco????'), +(90.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 270.2, 81.9, 1.0, 'Blanco????'), +(91.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 269.9, 82.8, 1.0, 'Blanco????'), +(92.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 269.6, 83.7, 1.0, 'Blanco????'), +(93.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 269.3, 84.6, 1.0, 'Blanco????'), +(94.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 268.9, 85.5, 1.0, 'Blanco????'), +(95.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 268.5, 86.4, 1.0, 'Blanco????'), +(96.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 268.1, 87.3, 1.0, 'Blanco????'), +(97.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 267.7, 88.2, 1.0, 'Blanco????'), +(98.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 267.3, 89.1, 1.0, 'Blanco????'), +(99.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 266.9, 90.0, 1.0, 'Blanco????'), +(101.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 266.6, 90.8, 1.0, 'Blanco????'), +(103.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 266.1, 91.7, 1.0, 'Blanco????'), +(104.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene ', 'n-heptane ', 0.891, 0.07, 0.0, 0.0399, 0.0, 0.0, 0.0, 0.0, 0.0, 265.8, 92.5, 1.0, 'Blanco????'); +CREATE CACHED TABLE PUBLIC.DEWPOINTDATASYNTHHCSTATOIL( + ID DOUBLE NOT NULL, + COMP1 VARCHAR(255) DEFAULT NULL, + COMP2 VARCHAR(255) DEFAULT NULL, + COMP3 VARCHAR(255) DEFAULT NULL, + COMP4 VARCHAR(255) DEFAULT NULL, + COMP5 VARCHAR(255) DEFAULT NULL, + COMP6 VARCHAR(255) DEFAULT NULL, + COMP7 VARCHAR(255) DEFAULT NULL, + COMP8 VARCHAR(255) DEFAULT NULL, + COMP9 VARCHAR(255) DEFAULT NULL, + X1 DOUBLE DEFAULT NULL, + X2 DOUBLE DEFAULT NULL, + X3 DOUBLE DEFAULT NULL, + X4 DOUBLE DEFAULT NULL, + X5 DOUBLE DEFAULT NULL, + X6 DOUBLE DEFAULT NULL, + X7 DOUBLE DEFAULT NULL, + X8 DOUBLE DEFAULT NULL, + X9 DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + STDTEMPDEV DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.DEWPOINTDATASYNTHHCSTATOIL ADD CONSTRAINT PUBLIC.CONSTRAINT_4E PRIMARY KEY(ID); +-- 339 +/- SELECT COUNT(*) FROM PUBLIC.DEWPOINTDATASYNTHHCSTATOIL; +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(79.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 266.85, 40.82, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(80.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 266.05, 36.22, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(81.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 264.45, 31.02, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(82.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 262.25, 25.62, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(83.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 258.95, 20.42, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(84.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 254.95, 15.42, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(85.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 262.45, 97.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(86.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 261.95, 97.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(87.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 263.05, 96.6, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(88.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 263.55, 96.8, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(89.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 263.25, 96.8, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(90.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 265.05, 95.8, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(91.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 264.75, 96.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(92.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 264.25, 96.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(93.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 265.45, 95.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(94.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 265.55, 95.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(95.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 266.45, 94.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(96.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 267.85, 94.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(97.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 267.15, 94.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(98.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 267.05, 94.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(99.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 268.85, 93.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(100.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 268.65, 93.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(101.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 270.65, 92.1, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(102.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 270.55, 92.1, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(103.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 270.95, 91.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(104.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 271.35, 91.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(1.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 246.15, 89.22, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(2.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 247.85, 86.22, 1.0, STRINGDECODE('M\u00f8rch2004gas1')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(3.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 250.55, 81.32, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(4.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 253.15, 75.02, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(5.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 254.25, 71.02, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(6.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 255.35, 66.12, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(7.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 256.05, 61.32, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(8.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 255.75, 61.42, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(9.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 256.25, 56.02, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(10.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 256.25, 51.12, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(11.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 255.85, 46.12, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(12.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 255.15, 41.12, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(13.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 253.85, 36.22, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(14.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 252.35, 31.02, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(15.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 249.85, 26.02, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(16.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 246.85, 21.02, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(17.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.50513537, 2.971844157, 1.000765606, 1.464712949, 1.049737029, 0.0, 0.0, 0.0, 0.0, 242.85, 16.02, 1.0, STRINGDECODE('M\u00f8rch2004gas1')), +(18.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 264.05, 98.82, 1.0, STRINGDECODE('M\u00f8rch2004gas2')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(19.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 267.15, 95.22, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(20.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 270.15, 91.12, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(21.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 272.55, 86.02, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(22.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 273.95, 83.52, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(23.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 274.95, 80.82, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(24.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 276.85, 75.52, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(25.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 276.85, 74.82, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(26.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 277.85, 71.12, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(27.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 279.25, 66.02, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(28.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 280.15, 61.02, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(29.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 280.85, 55.72, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(30.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 281.25, 51.52, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(31.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 281.35, 46.32, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(32.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 280.95, 41.12, 1.0, STRINGDECODE('M\u00f8rch2004gas2')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(33.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 280.45, 35.92, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(34.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 279.75, 31.02, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(35.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 278.35, 26.02, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(36.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 276.35, 20.82, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(37.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.3663663953908, 3.0063871174555, 0.968266328355189, 1.35291837040479, 1.00725993055693, 0.0, 0.298801857836779, 0.0, 0.0, 273.25, 15.92, 1.0, STRINGDECODE('M\u00f8rch2004gas2')), +(38.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 257.25, 102.22, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(39.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 261.45, 98.62, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(40.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 267.15, 92.62, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(41.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 270.95, 86.82, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(42.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 274.65, 77.42, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(43.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 277.85, 67.42, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(44.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 279.65, 56.42, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(45.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 280.05, 46.02, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(46.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 279.35, 36.02, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(47.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 276.05, 21.02, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(48.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 273.75, 16.22, 1.0, STRINGDECODE('M\u00f8rch2004gas3')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(49.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 270.85, 11.02, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(50.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.12095, 3.04829, 0.99365, 1.50992, 1.03235, 0.0, 0.0, 0.29485, 0.0, 265.75, 6.22, 1.0, STRINGDECODE('M\u00f8rch2004gas3')), +(51.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 253.35, 105.22, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(52.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 266.05, 97.62, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(53.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 275.35, 86.32, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(54.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 278.25, 81.22, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(55.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 280.45, 76.02, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(56.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 282.15, 70.52, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(57.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 283.35, 66.32, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(58.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 284.55, 61.02, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(59.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 285.15, 56.12, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(60.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 285.95, 51.12, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(61.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 286.35, 46.02, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(62.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 286.55, 41.12, 1.0, STRINGDECODE('M\u00f8rch2004gas4')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(63.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 286.15, 36.52, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(64.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 285.55, 31.32, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(65.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 284.55, 26.12, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(66.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 282.95, 21.22, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(67.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 93.175678277012, 3.06422282921538, 1.0138804108263, 1.52135816924189, 1.02664427399782, 0.0, 0.0, 0.0, 0.198216039706642, 280.15, 15.82, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(68.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 276.35, 10.82, 1.0, STRINGDECODE('M\u00f8rch2004gas4')), +(69.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 257.35, 91.32, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(70.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 260.45, 86.02, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(71.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 262.55, 80.72, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(72.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 263.95, 76.42, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(73.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 265.55, 71.12, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(74.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 266.55, 65.72, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(75.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 267.45, 61.32, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(76.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 267.65, 56.32, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(77.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 267.75, 50.62, 1.0, STRINGDECODE('M\u00f8rch2004gas5')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(78.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 96.6111087352078, 0.0, 0.0, 1.47526068392003, 1.52746075273878, 0.384770050950734, 0.0, 0.0, 0.0, 267.75, 46.22, 1.0, STRINGDECODE('M\u00f8rch2004gas5')), +(105.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 271.25, 91.3, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(106.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 272.15, 90.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(107.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 272.05, 90.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(108.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 272.35, 89.8, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(109.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 272.55, 89.8, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(110.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 273.15, 88.8, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(111.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 273.25, 88.8, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(112.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 273.75, 87.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(113.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 273.75, 87.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(114.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 274.65, 86.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(115.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 274.75, 86.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(116.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 275.35, 85.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(117.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 275.65, 85.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(118.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 277.75, 83.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(119.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 277.15, 83.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(120.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 276.95, 83.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(121.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 277.65, 82.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(122.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 277.55, 82.6, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(123.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 278.45, 80.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(124.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 278.35, 80.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(125.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 279.05, 78.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(126.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 279.05, 78.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(127.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 279.55, 76.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(128.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 279.85, 76.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(129.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 280.95, 74.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(130.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 280.95, 74.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(131.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 282.25, 72.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(132.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 281.95, 72.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(133.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 282.25, 70.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(134.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 282.15, 70.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(135.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 283.05, 68.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(136.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 282.75, 68.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(137.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 282.85, 65.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(138.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 282.95, 65.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(139.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 283.85, 64.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(140.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 284.15, 64.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(141.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 284.35, 62.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(142.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 284.45, 62.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(143.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 284.75, 60.9, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(144.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 284.75, 60.9, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(145.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 284.95, 59.1, 1.0, STRINGDECODE('M\u00f8rch2004gas6')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(146.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.05, 59.1, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(147.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.25, 57.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(148.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.25, 57.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(149.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.75, 55.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(150.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.65, 55.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(151.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.75, 53.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(152.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.95, 52.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(153.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.13, 51.6, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(154.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.15, 50.6, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(155.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.25, 49.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(156.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.25, 48.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(157.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.25, 47.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(158.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.35, 46.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(159.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.05, 44.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(160.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.1, 42.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(161.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.25, 42.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(162.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.25, 40.5, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(163.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.0, 39.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(164.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 286.05, 37.3, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(165.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.65, 35.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(166.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.35, 33.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(167.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.35, 31.4, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(168.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 285.05, 29.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(169.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 284.45, 27.2, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(170.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 283.55, 23.1, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(171.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 282.45, 20.0, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(172.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 279.85, 14.9, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(173.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 276.85, 11.1, 1.0, STRINGDECODE('M\u00f8rch2004gas6')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(174.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0960355305134, 9.9552707047147, 4.1103033002207, 1.02725680838539, 0.610257880344545, 0.0, 0.0, 0.0, 0.200875775821234, 270.35, 5.6, 1.0, STRINGDECODE('M\u00f8rch2004gas6')), +(175.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 260.85, 97.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(176.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 264.45, 95.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(177.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 265.75, 94.3, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(178.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 265.75, 94.3, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(179.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 269.45, 90.6, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(180.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 272.45, 87.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(181.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 274.35, 83.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(182.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 275.75, 80.1, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(183.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 276.35, 78.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(184.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 277.35, 76.5, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(185.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 278.15, 73.5, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(186.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 278.75, 71.3, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(187.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 279.25, 70.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(188.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 279.45, 69.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(189.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 279.85, 67.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(190.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.15, 65.6, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(191.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.65, 63.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(192.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.75, 62.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(193.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.15, 61.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(194.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.45, 59.5, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(195.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.65, 57.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(196.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.95, 54.1, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(197.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.95, 51.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(198.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.25, 49.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(199.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.05, 46.9, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(200.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.85, 43.9, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(201.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.95, 41.5, 1.0, STRINGDECODE('M\u00f8rch2004gas7')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(202.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.45, 39.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(203.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.55, 36.7, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(204.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 279.35, 34.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(205.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 278.75, 30.7, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(206.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 277.75, 25.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(207.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 276.65, 20.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(208.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 269.85, 12.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(209.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 264.9, 7.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(210.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 260.75, 98.3, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(211.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 272.85, 87.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(212.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 277.75, 77.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(213.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.45, 63.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(214.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 282.45, 61.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(215.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 282.35, 59.6, 1.0, STRINGDECODE('M\u00f8rch2004gas7')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(216.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 282.95, 55.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(217.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 283.05, 42.3, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(218.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 283.05, 39.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(219.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 277.05, 21.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(220.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 252.75, 99.5, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(221.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 259.35, 98.6, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(222.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 263.65, 96.5, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(223.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 265.35, 95.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(224.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 267.55, 93.5, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(225.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 268.65, 92.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(226.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 270.85, 89.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(227.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 272.35, 87.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(228.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 273.75, 84.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(229.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 275.25, 82.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(230.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 276.05, 79.6, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(231.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 277.15, 77.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(232.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 278.05, 74.6, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(233.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 279.15, 71.9, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(234.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 279.75, 69.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(235.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.25, 66.7, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(236.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.65, 64.7, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(237.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.85, 61.9, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(238.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.25, 59.6, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(239.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.55, 57.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(240.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.85, 55.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(241.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.75, 54.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(242.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.85, 52.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(243.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.95, 51.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(244.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.85, 50.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(245.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 282.05, 48.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(246.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.85, 47.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(247.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.65, 46.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(248.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.65, 44.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(249.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.65, 42.5, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(250.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 281.55, 40.0, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(251.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.85, 37.3, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(252.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 280.55, 34.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(253.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 279.95, 31.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(254.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 279.25, 28.9, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(255.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 278.55, 26.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(256.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 277.25, 23.4, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(257.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 276.25, 20.8, 1.0, STRINGDECODE('M\u00f8rch2004gas7')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(258.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 272.95, 15.6, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(259.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 269.35, 11.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(260.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 262.35, 6.2, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(261.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 83.9403319799395, 10.0158652383781, 4.1087766010086, 1.03139694622025, 0.601177994304209, 0.0, 0.302451240149317, 0.0, 0.0, 256.05, 3.6, 1.0, STRINGDECODE('M\u00f8rch2004gas7')), +(262.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 254.45, 88.6, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(263.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 256.15, 87.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(264.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 256.65, 86.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(265.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 257.55, 85.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(266.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 257.35, 85.2, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(267.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 257.75, 84.2, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(268.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 257.75, 83.8, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(269.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 257.95, 83.9, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(270.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 258.35, 83.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(271.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 258.25, 83.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(272.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 258.55, 82.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(273.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 258.85, 82.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(274.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 259.05, 80.9, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(275.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 258.95, 80.9, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(276.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 255.55, 88.2, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(277.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 257.25, 84.8, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(278.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 258.95, 81.3, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(279.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 259.55, 79.4, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(280.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 260.35, 77.4, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(281.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 260.65, 75.3, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(282.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.05, 72.6, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(283.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.45, 70.7, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(284.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.75, 69.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(285.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 262.05, 67.2, 1.0, STRINGDECODE('M\u00f8rch2004gas8')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(286.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 262.15, 66.6, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(287.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 262.35, 65.9, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(288.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.85, 66.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(289.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.95, 65.5, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(290.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 262.05, 65.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(291.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.85, 64.5, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(292.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.75, 63.9, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(293.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.75, 63.2, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(294.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.95, 62.4, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(295.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 262.15, 61.6, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(296.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 262.05, 60.1, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(297.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 262.15, 58.1, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(298.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.55, 55.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(299.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 261.15, 52.2, 1.0, STRINGDECODE('M\u00f8rch2004gas8')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(300.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 260.95, 49.4, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(301.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 260.35, 46.2, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(302.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 259.45, 42.7, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(303.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 257.85, 37.8, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(304.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 256.65, 34.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(305.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 254.75, 30.2, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(306.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 251.75, 25.0, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(307.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.2801844427805, 10.0669603529432, 4.02793661156086, 1.02820614436966, 0.596712448345822, 0.0, 0.0, 0.0, 0.0, 247.85, 19.6, 1.0, STRINGDECODE('M\u00f8rch2004gas8')), +(308.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 259.35, 95.5, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(309.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 261.05, 94.4, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(310.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 262.85, 93.2, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(311.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 264.15, 92.0, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(312.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 265.45, 90.8, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(313.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 266.05, 89.4, 1.0, STRINGDECODE('M\u00f8rch2004gas9')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(314.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 266.75, 88.7, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(315.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 268.15, 86.8, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(316.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 268.55, 85.7, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(317.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 269.15, 84.3, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(318.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 269.5, 83.6, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(319.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 270.45, 82.0, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(320.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 271.35, 79.4, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(321.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 272.95, 76.0, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(322.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 273.55, 73.1, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(323.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 274.55, 70.5, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(324.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 275.05, 68.2, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(325.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 275.25, 66.3, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(326.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 275.95, 64.8, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(327.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 271.35, 16.9, 1.0, STRINGDECODE('M\u00f8rch2004gas9')); +INSERT INTO PUBLIC.DEWPOINTDATASYNTHHCSTATOIL(ID, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, COMP7, COMP8, COMP9, X1, X2, X3, X4, X5, X6, X7, X8, X9, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(328.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 269.35, 14.0, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(329.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 268.05, 12.1, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(330.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 264.85, 8.8, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(331.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 259.95, 5.4, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(332.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 255.15, 2.9, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(333.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 276.85, 59.2, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(334.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 277.35, 55.2, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(335.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 277.35, 50.8, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(336.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 277.55, 46.0, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(337.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 276.95, 35.6, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(338.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 275.95, 27.2, 1.0, STRINGDECODE('M\u00f8rch2004gas9')), +(339.0, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 'n-pentane', 'c-hexane', 'benzene', 'n-heptane', 84.0794971068527, 9.972989456298, 4.03648487297648, 1.01219059754193, 0.602893303766899, 0.0, 0.0, 0.295944662564003, 0.0, 271.85, 17.1, 1.0, STRINGDECODE('M\u00f8rch2004gas9')); +CREATE CACHED TABLE PUBLIC.DEWPOINTQUATERNARY( + ID INT NOT NULL, + COMP1 VARCHAR(50) DEFAULT NULL, + COMP2 VARCHAR(50) DEFAULT NULL, + COMP3 VARCHAR(50) DEFAULT NULL, + COMP4 VARCHAR(50) DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + X3 DOUBLE DEFAULT '0', + X4 DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + STDTEMPDEV DOUBLE DEFAULT '0', + REFERENCE VARCHAR(100) DEFAULT NULL +); +-- 67 +/- SELECT COUNT(*) FROM PUBLIC.DEWPOINTQUATERNARY; +INSERT INTO PUBLIC.DEWPOINTQUATERNARY(ID, COMP1, COMP2, COMP3, COMP4, X1, X2, X3, X4, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(1, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 250.92, 4.91, 1.0, 'Blanco????'), +(2, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 256.64, 10.0, 1.0, 'Blanco????'), +(3, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 260.07, 14.9, 1.0, 'Blanco????'), +(4, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 264.15, 20.11, 1.0, 'Blanco????'), +(5, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 266.87, 25.09, 1.0, 'Blanco????'), +(6, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 269.04, 29.94, 1.0, 'Blanco????'), +(7, 'methane', 'ethane', 'n-butane', 'water', 0.89087526, 0.0699902, 0.039894414, 1.4E-4, 254.77, 7.69, 1.0, 'Blanco????'), +(8, 'methane', 'ethane', 'n-butane', 'water', 0.89087526, 0.0699902, 0.039894414, 1.4E-4, 261.25, 15.1, 1.0, 'Blanco????'), +(9, 'methane', 'ethane', 'n-butane', 'water', 0.89087526, 0.0699902, 0.039894414, 1.4E-4, 266.81, 24.96, 1.0, 'Blanco????'), +(10, 'methane', 'ethane', 'n-butane', 'water', 0.89087526, 0.0699902, 0.039894414, 1.4E-4, 270.78, 34.96, 1.0, 'Blanco????'), +(11, 'methane', 'ethane', 'n-butane', 'water', 0.89087526, 0.0699902, 0.039894414, 1.4E-4, 273.91, 44.9, 1.0, 'Blanco????'), +(12, 'methane', 'ethane', 'n-butane', 'water', 0.89087526, 0.0699902, 0.039894414, 1.4E-4, 276.55, 54.92, 1.0, 'Blanco????'), +(13, 'methane', 'ethane', 'n-butane', 'water', 0.89087526, 0.0699902, 0.039894414, 1.4E-4, 278.2, 64.95, 1.0, 'Blanco????'), +(14, 'methane', 'ethane', 'n-butane', 'water', 0.89087526, 0.0699902, 0.039894414, 1.4E-4, 279.07, 72.95, 1.0, 'Blanco????'), +(15, 'methane', 'ethane', 'n-butane', 'water', 0.89083962, 0.0699874, 0.039892818, 1.8E-4, 253.65, 4.93, 1.0, 'Blanco????'), +(16, 'methane', 'ethane', 'n-butane', 'water', 0.89083962, 0.0699874, 0.039892818, 1.8E-4, 259.18, 9.99, 1.0, 'Blanco????'), +(17, 'methane', 'ethane', 'n-butane', 'water', 0.89083962, 0.0699874, 0.039892818, 1.8E-4, 264.6, 15.15, 1.0, 'Blanco????'), +(18, 'methane', 'ethane', 'n-butane', 'water', 0.89083962, 0.0699874, 0.039892818, 1.8E-4, 267.9, 19.98, 1.0, 'Blanco????'), +(19, 'methane', 'ethane', 'n-butane', 'water', 0.89083962, 0.0699874, 0.039892818, 1.8E-4, 270.15, 24.9, 1.0, 'Blanco????'), +(20, 'methane', 'ethane', 'n-butane', 'water', 0.89083962, 0.0699874, 0.039892818, 1.8E-4, 272.56, 29.92, 1.0, 'Blanco????'), +(21, 'methane', 'ethane', 'n-butane', 'water', 0.89083962, 0.0699874, 0.039892818, 1.8E-4, 274.26, 35.04, 1.0, 'Blanco????'), +(22, 'methane', 'ethane', 'n-butane', 'water', 0.89083962, 0.0699874, 0.039892818, 1.8E-4, 275.65, 39.88, 1.0, 'Blanco????'), +(23, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 270.91, 34.92, 1.0, 'Blanco????'), +(24, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 272.41, 39.89, 1.0, 'Blanco????'), +(25, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 273.15, 44.96, 1.0, 'Blanco????'), +(26, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 273.71, 49.88, 1.0, 'Blanco????'), +(27, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 274.64, 54.99, 1.0, 'Blanco????'), +(28, 'methane', 'ethane', 'n-butane', 'water', 0.89089308, 0.0699916, 0.039895212, 1.2E-4, 275.47, 59.84, 1.0, 'Blanco????'), +(29, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 255.37, 4.77, 1.0, 'Blanco????'), +(30, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 261.8, 9.98, 1.0, 'Blanco????'), +(31, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 266.92, 15.57, 1.0, 'Blanco????'), +(32, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 269.42, 20.25, 1.0, 'Blanco????'); +INSERT INTO PUBLIC.DEWPOINTQUATERNARY(ID, COMP1, COMP2, COMP3, COMP4, X1, X2, X3, X4, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(33, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 272.17, 25.21, 1.0, 'Blanco????'), +(34, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 273.5, 30.32, 1.0, 'Blanco????'), +(35, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 274.91, 35.2, 1.0, 'Blanco????'), +(36, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 276.53, 40.04, 1.0, 'Blanco????'), +(37, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 278.08, 46.59, 1.0, 'Blanco????'), +(38, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 280.02, 54.89, 1.0, 'Blanco????'), +(39, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 281.06, 60.35, 1.0, 'Blanco????'), +(40, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 281.85, 65.16, 1.0, 'Blanco????'), +(41, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 282.56, 70.02, 1.0, 'Blanco????'), +(42, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 283.3, 74.87, 1.0, 'Blanco????'), +(43, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 284.13, 79.96, 1.0, 'Blanco????'), +(44, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 284.78, 85.12, 1.0, 'Blanco????'), +(45, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 285.4, 89.92, 1.0, 'Blanco????'), +(46, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 285.84, 94.69, 1.0, 'Blanco????'), +(47, 'methane', 'ethane', 'n-butane', 'water', 0.89081289, 0.0699853, 0.039891621, 2.1E-4, 286.16, 99.45, 1.0, 'Blanco????'), +(48, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 256.53, 4.98, 1.0, 'Blanco????'), +(49, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 263.15, 9.68, 1.0, 'Blanco????'), +(50, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 268.11, 15.36, 1.0, 'Blanco????'), +(51, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 270.54, 19.91, 1.0, 'Blanco????'), +(52, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 272.62, 24.98, 1.0, 'Blanco????'), +(53, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 274.72, 29.67, 1.0, 'Blanco????'), +(54, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 276.97, 34.86, 1.0, 'Blanco????'), +(55, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 278.47, 39.43, 1.0, 'Blanco????'), +(56, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 280.22, 44.9, 1.0, 'Blanco????'), +(57, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 281.72, 49.75, 1.0, 'Blanco????'), +(58, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 282.74, 51.26, 1.0, 'Blanco????'), +(59, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 283.95, 60.09, 1.0, 'Blanco????'), +(60, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 284.44, 64.93, 1.0, 'Blanco????'), +(61, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 284.99, 69.65, 1.0, 'Blanco????'), +(62, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 285.35, 74.95, 1.0, 'Blanco????'), +(63, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 286.11, 79.21, 1.0, 'Blanco????'), +(64, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 286.81, 84.84, 1.0, 'Blanco????'); +INSERT INTO PUBLIC.DEWPOINTQUATERNARY(ID, COMP1, COMP2, COMP3, COMP4, X1, X2, X3, X4, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(65, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 287.38, 88.84, 1.0, 'Blanco????'), +(66, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 288.35, 95.3, 1.0, 'Blanco????'), +(67, 'methane', 'ethane', 'n-butane', 'water', 0.89072379, 0.0699783, 0.039887631, 3.1E-4, 288.54, 97.05, 1.0, 'Blanco????'); +CREATE CACHED TABLE PUBLIC.DEWPOINTTERNARY( + ID INT NOT NULL, + COMP1 VARCHAR(50) DEFAULT NULL, + COMP2 VARCHAR(50) DEFAULT NULL, + COMP3 VARCHAR(50) DEFAULT NULL, + COMP4 VARCHAR(50) DEFAULT NULL, + COMP5 VARCHAR(50) DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + X3 DOUBLE DEFAULT '0', + X4 DOUBLE DEFAULT '0', + X5 DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + STDTEMPDEV DOUBLE DEFAULT '0', + REFERENCE VARCHAR(100) DEFAULT NULL +); +-- 101 +/- SELECT COUNT(*) FROM PUBLIC.DEWPOINTTERNARY; +INSERT INTO PUBLIC.DEWPOINTTERNARY(ID, COMP1, COMP2, COMP3, COMP4, COMP5, X1, X2, X3, X4, X5, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(1, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 253.7, 12.7, 1.0, 'Blanco????'), +(2, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 254.0, 12.9, 1.0, 'Blanco????'), +(3, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 254.3, 13.1, 1.0, 'Blanco????'), +(4, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 254.5, 13.3, 1.0, 'Blanco????'), +(5, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 254.7, 13.5, 1.0, 'Blanco????'), +(6, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 255.0, 13.7, 1.0, 'Blanco????'), +(7, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 255.2, 13.8, 1.0, 'Blanco????'), +(8, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 255.4, 14.0, 1.0, 'Blanco????'), +(9, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 255.6, 14.2, 1.0, 'Blanco????'), +(10, 'methane', 'ethane', 'propane', 'n-butane', 'i-butanei-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 255.9, 14.4, 1.0, 'Blanco????'), +(12, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 256.3, 14.8, 1.0, 'Blanco????'), +(13, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 256.5, 15.0, 1.0, 'Blanco????'), +(14, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 256.7, 15.2, 1.0, 'Blanco????'), +(15, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 256.9, 15.3, 1.0, 'Blanco????'), +(16, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 257.1, 15.5, 1.0, 'Blanco????'), +(17, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 257.3, 15.7, 1.0, 'Blanco????'), +(18, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 257.6, 15.9, 1.0, 'Blanco????'), +(19, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 257.8, 16.1, 1.0, 'Blanco????'), +(20, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 258.6, 17.0, 1.0, 'Blanco????'), +(21, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 259.0, 17.4, 1.0, 'Blanco????'), +(22, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 259.8, 18.2, 1.0, 'Blanco????'), +(23, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 260.7, 19.3, 1.0, 'Blanco????'), +(24, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 261.5, 20.3, 1.0, 'Blanco????'), +(25, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 262.3, 21.3, 1.0, 'Blanco????'), +(28, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 263.1, 22.3, 1.0, 'Blanco????'), +(29, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 263.8, 23.4, 1.0, 'Blanco????'), +(30, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 264.5, 24.5, 1.0, 'Blanco????'), +(31, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 265.2, 25.5, 1.0, 'Blanco????'), +(32, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 265.8, 26.6, 1.0, 'Blanco????'), +(33, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 266.4, 27.6, 1.0, 'Blanco????'), +(34, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 266.9, 28.7, 1.0, 'Blanco????'), +(35, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 267.4, 29.8, 1.0, 'Blanco????'), +(36, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 268.0, 30.9, 1.0, 'Blanco????'); +INSERT INTO PUBLIC.DEWPOINTTERNARY(ID, COMP1, COMP2, COMP3, COMP4, COMP5, X1, X2, X3, X4, X5, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(37, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 268.4, 31.9, 1.0, 'Blanco????'), +(38, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 268.8, 33.0, 1.0, 'Blanco????'), +(39, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 269.2, 34.0, 1.0, 'Blanco????'), +(40, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 269.6, 35.1, 1.0, 'Blanco????'), +(41, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 270.0, 36.1, 1.0, 'Blanco????'), +(42, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 270.3, 37.1, 1.0, 'Blanco????'), +(43, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 270.7, 38.2, 1.0, 'Blanco????'), +(44, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 270.9, 39.3, 1.0, 'Blanco????'), +(45, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 271.1, 40.1, 1.0, 'Blanco????'), +(46, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 271.3, 41.0, 1.0, 'Blanco????'), +(47, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 271.5, 41.9, 1.0, 'Blanco????'), +(48, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 271.8, 42.8, 1.0, 'Blanco????'), +(49, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 271.9, 43.7, 1.0, 'Blanco????'), +(50, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.1, 44.7, 1.0, 'Blanco????'), +(51, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.3, 45.7, 1.0, 'Blanco????'), +(52, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.5, 46.7, 1.0, 'Blanco????'), +(53, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.6, 47.7, 1.0, 'Blanco????'), +(54, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.7, 48.7, 1.0, 'Blanco????'), +(55, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.8, 49.7, 1.0, 'Blanco????'), +(56, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.9, 50.5, 1.0, 'Blanco????'), +(57, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.0, 51.4, 1.0, 'Blanco????'), +(58, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.1, 52.2, 1.0, 'Blanco????'), +(59, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.1, 53.1, 1.0, 'Blanco????'), +(60, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.2, 54.0, 1.0, 'Blanco????'), +(61, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.2, 55.0, 1.0, 'Blanco????'), +(62, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.3, 55.9, 1.0, 'Blanco????'), +(63, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.3, 56.9, 1.0, 'Blanco????'), +(64, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.3, 57.8, 1.0, 'Blanco????'), +(65, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.3, 58.7, 1.0, 'Blanco????'), +(66, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.3, 59.6, 1.0, 'Blanco????'), +(67, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.3, 60.6, 1.0, 'Blanco????'), +(68, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.3, 61.5, 1.0, 'Blanco????'), +(69, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.3, 62.4, 1.0, 'Blanco????'); +INSERT INTO PUBLIC.DEWPOINTTERNARY(ID, COMP1, COMP2, COMP3, COMP4, COMP5, X1, X2, X3, X4, X5, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(70, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.2, 63.4, 1.0, 'Blanco????'), +(71, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.2, 64.4, 1.0, 'Blanco????'), +(72, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.1, 665.3, 1.0, 'Blanco????'), +(73, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 273.0, 66.2, 1.0, 'Blanco????'), +(74, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.9, 67.1, 1.0, 'Blanco????'), +(75, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.9, 68.0, 1.0, 'Blanco????'), +(76, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.7, 69.0, 1.0, 'Blanco????'), +(77, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.7, 69.9, 1.0, 'Blanco????'), +(78, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.6, 70.8, 1.0, 'Blanco????'), +(79, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.4, 71.7, 1.0, 'Blanco????'), +(80, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.2, 72.7, 1.0, 'Blanco????'), +(81, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 272.1, 73.6, 1.0, 'Blanco????'), +(82, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 271.9, 74.6, 1.0, 'Blanco????'), +(83, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 271.8, 75.5, 1.0, 'Blanco????'), +(84, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 271.6, 76.4, 1.0, 'Blanco????'), +(85, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 271.4, 77.3, 1.0, 'Blanco????'), +(86, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 271.2, 78.2, 1.0, 'Blanco????'), +(87, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 270.9, 79.2, 1.0, 'Blanco????'), +(88, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 270.7, 80.1, 1.0, 'Blanco????'), +(89, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 270.5, 80.9, 1.0, 'Blanco????'), +(90, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 270.2, 81.9, 1.0, 'Blanco????'), +(91, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 269.9, 82.8, 1.0, 'Blanco????'), +(92, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 269.6, 83.7, 1.0, 'Blanco????'), +(93, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 269.3, 84.6, 1.0, 'Blanco????'), +(94, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 268.9, 85.5, 1.0, 'Blanco????'), +(95, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 268.5, 86.4, 1.0, 'Blanco????'), +(96, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 268.1, 87.3, 1.0, 'Blanco????'), +(97, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 267.7, 88.2, 1.0, 'Blanco????'), +(98, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 267.3, 89.1, 1.0, 'Blanco????'), +(99, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 266.9, 90.0, 1.0, 'Blanco????'), +(101, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 266.6, 90.8, 1.0, 'Blanco????'), +(104, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 265.8, 92.5, 1.0, 'Blanco????'), +(11, 'methane', 'ethane', 'propane', 'n-butane', NULL, 0.891, 0.07, 0.0, 0.0399, NULL, 256.1, 14.6, 1.0, 'Blanco????'); +INSERT INTO PUBLIC.DEWPOINTTERNARY(ID, COMP1, COMP2, COMP3, COMP4, COMP5, X1, X2, X3, X4, X5, TEMPERATURE, PRESSURE, STDTEMPDEV, REFERENCE) VALUES +(103, 'methane', 'ethane', 'propane', 'n-butane', 'i-butane', 0.891, 0.07, 0.0, 0.0399, NULL, 266.1, 91.7, 1.0, 'Blanco????'), +(106, NULL, NULL, NULL, NULL, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL); +CREATE CACHED TABLE PUBLIC.ELEMENT( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(255) DEFAULT NULL, + ATOMELEMENT VARCHAR(255) DEFAULT NULL, + NUMBER INT DEFAULT NULL +); +ALTER TABLE PUBLIC.ELEMENT ADD CONSTRAINT PUBLIC.CONSTRAINT_C7 PRIMARY KEY(ID); +-- 66 +/- SELECT COUNT(*) FROM PUBLIC.ELEMENT; +INSERT INTO PUBLIC.ELEMENT(ID, COMPONENTNAME, ATOMELEMENT, NUMBER) VALUES +(1, 'CO2', 'C', 1), +(2, 'CO2', 'O', 2), +(3, 'water', 'H', 2), +(4, 'water', 'O', 1), +(5, 'MDEA', 'H', 13), +(6, 'MDEA', 'O', 2), +(7, 'MDEA', 'C', 5), +(8, 'MDEA+', 'H', 14), +(9, 'MDEA+', 'C', 5), +(10, 'MDEA+', 'O', 2), +(11, 'H3O+', 'H', 3), +(12, 'H3O+', 'O', 1), +(13, 'OH-', 'H', 1), +(14, 'OH-', 'O', 1), +(15, 'HCO3-', 'H', 1), +(16, 'HCO3-', 'C', 1), +(17, 'HCO3-', 'O', 3), +(18, 'H2S', 'H', 2), +(19, 'H2S', 'S', 1), +(20, 'HS-', 'H', 1), +(21, 'HS-', 'S', 1), +(22, 'S--', 'S', 1), +(23, 'CO3--', 'C', 1), +(24, 'CO3--', 'O', 3), +(25, 'Piperazine', 'C', 4), +(27, 'Piperazine', 'H', 10), +(28, 'Piperazine', 'N', 2), +(30, 'Piperazine+', 'H', 11), +(32, 'Piperazine+', 'C', 4), +(33, 'Piperazine+', 'N', 2), +(34, 'MDEA', 'N', 1), +(35, 'MDEA+', 'N', 1), +(36, 'PZCOO-', 'C', 5), +(37, 'PZCOO-', 'H', 9), +(38, 'PZCOO-', 'O', 2), +(39, 'PZCOO-', 'N', 2), +(40, 'H+PZCOO-', 'C', 5), +(41, 'H+PZCOO-', 'H', 10), +(42, 'H+PZCOO-', 'O', 2), +(43, 'H+PZCOO-', 'N', 2), +(44, '-OOCPZCOO-', 'C', 6), +(45, '-OOCPZCOO-', 'H', 8), +(46, '-OOCPZCOO-', 'O', 4), +(47, '-OOCPZCOO-', 'N', 2), +(50, 'DEA', 'H', 11), +(51, 'DEA', 'O', 2), +(52, 'DEA', 'C', 4), +(53, 'DEAH+', 'H', 12), +(54, 'DEAH+', 'O', 2), +(55, 'DEAH+', 'C', 4), +(56, 'DEACOO-', 'H', 11), +(57, 'DEACOO-', 'C', 5), +(58, 'DEACOO-', 'O', 4), +(59, 'Piperazine++', 'H', 12), +(60, 'Piperazine++', 'C', 4), +(61, 'Piperazine++', 'N', 2), +(62, 'CaCO3', 'Ca', 1), +(63, 'CaCO3', 'C', 1), +(64, 'CaCO3', 'O', 3), +(65, 'Ca++', 'Ca', 1), +(66, 'AceticAcid', 'C', 2), +(67, 'AceticAcid', 'H', 4), +(68, 'AceticAcid', 'O', 2), +(69, 'Ac-', 'C', 2), +(70, 'Ac-', 'H', 3), +(71, 'Ac-', 'O', 2); +CREATE CACHED TABLE PUBLIC.FIELDDEWPOINT( + ID INT NOT NULL, + FIELDNAME VARCHAR(50) DEFAULT NULL, + TEPERATURE INT DEFAULT '0', + PRESSURE INT DEFAULT '0', + REFERENCE VARCHAR(50) DEFAULT NULL, + COMMENTS VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.FIELDDEWPOINT ADD CONSTRAINT PUBLIC.CONSTRAINT_E5 PRIMARY KEY(ID); +-- 0 +/- SELECT COUNT(*) FROM PUBLIC.FIELDDEWPOINT; +CREATE CACHED TABLE PUBLIC.FITTINGS( + ID INT NOT NULL, + TYPE VARCHAR(255) DEFAULT NULL, + NAME VARCHAR(255) DEFAULT NULL, + LTOD DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL +); +-- 10 +/- SELECT COUNT(*) FROM PUBLIC.FITTINGS; +INSERT INTO PUBLIC.FITTINGS(ID, TYPE, NAME, LTOD, REFERENCE) VALUES +(1, 'Valve', 'Gate Valve, full bore, full open', 8.0, 'Statoil Process Design Handbook'), +(2, 'Valve', 'Gate Valve, reduced bore, 50 mm and larger', 17.0, 'Statoil Process Design Handbook'), +(3, 'Valve', 'Gate Valve, reduced bore, 40 mm and smaller', 65.0, 'Statoil Process Design Handbook'), +(4, 'Valve', 'Gate Valve, full bore, half open', 400.0, 'Statoil Process Design Handbook'), +(5, 'Valve', 'Globe Valve, full bore, full open', 340.0, 'Statoil Process Design Handbook'), +(6, 'Valve', 'Globe Valve, reduced bore, full open', 750.0, 'Statoil Process Design Handbook'), +(7, 'Valve', 'Angle Valve 180deg, full bore, full open', 55.0, 'Statoil Process Design Handbook'), +(8, 'Valve', 'Angle Valve 180deg, reduced bore, full open', 120.0, 'Statoil Process Design Handbook'), +(9, 'Elbow', 'Standard elbow (R=1.5D), 90deg', 30.0, 'Statoil Process Design Handbook'), +(10, 'Elbow', 'Standard elbow (R=1.5D), 45deg', 16.0, 'Statoil Process Design Handbook'); +CREATE CACHED TABLE PUBLIC.FLUIDINFO( + ID INT DEFAULT '0' NOT NULL, + USERID INT DEFAULT '0', + FIELD VARCHAR(50) DEFAULT NULL, + WELL VARCHAR(100) DEFAULT NULL, + TEST VARCHAR(100) DEFAULT NULL, + SAMPLE VARCHAR(100) DEFAULT NULL, + TEXT VARCHAR(100) DEFAULT NULL, + HISTORY VARCHAR(250) DEFAULT NULL, + COMPOSITIONTYPE VARCHAR(50) DEFAULT NULL, + METHANE DOUBLE DEFAULT '0' NOT NULL, + ETHANE DOUBLE DEFAULT '0' NOT NULL, + PROPANE DOUBLE DEFAULT '0' NOT NULL, + CO2 DOUBLE DEFAULT '0' NOT NULL, + H2S DOUBLE DEFAULT '0' NOT NULL, + NITROGEN DOUBLE DEFAULT '0' NOT NULL, + IBUTANE DOUBLE DEFAULT '0' NOT NULL, + NBUTANE DOUBLE DEFAULT '0' NOT NULL, + PENTANE DOUBLE DEFAULT '0' NOT NULL, + NHEXANE DOUBLE DEFAULT '0' NOT NULL, + CYCPENTANE DOUBLE DEFAULT '0' NOT NULL, + CYCHEXANE DOUBLE DEFAULT '0' NOT NULL, + NHEPTANE DOUBLE DEFAULT '0' NOT NULL, + NOCTANE DOUBLE DEFAULT '0' NOT NULL, + NNONANE DOUBLE DEFAULT '0' NOT NULL, + NDECANE DOUBLE DEFAULT '0' NOT NULL, + BENZENE DOUBLE DEFAULT '0' NOT NULL, + TOLUENE DOUBLE DEFAULT '0' NOT NULL, + MXYLENE DOUBLE DEFAULT '0' NOT NULL, + PXYLENE DOUBLE DEFAULT '0' NOT NULL, + OXYLENE DOUBLE DEFAULT '0' NOT NULL, + WATER DOUBLE DEFAULT '0' NOT NULL, + METHANOL DOUBLE DEFAULT '0' NOT NULL, + MEG DOUBLE DEFAULT '0' NOT NULL, + TEG DOUBLE DEFAULT '0' NOT NULL, + DEG DOUBLE DEFAULT '0' NOT NULL, + MDEA DOUBLE DEFAULT '0' NOT NULL, + PIPERAZINE DOUBLE DEFAULT '0' NOT NULL, + ACETICACID DOUBLE DEFAULT '0' NOT NULL, + PROPIONICACID DOUBLE DEFAULT '0' NOT NULL, + NAPLUS DOUBLE DEFAULT '0' NOT NULL, + FEPLUS DOUBLE DEFAULT '0' NOT NULL, + CAPLUS DOUBLE DEFAULT '0' NOT NULL, + H3OPLUS DOUBLE DEFAULT '0' NOT NULL, + OHMINUS DOUBLE DEFAULT '0' NOT NULL, + CO3MINUS DOUBLE DEFAULT '0' NOT NULL, + CLMINUS DOUBLE DEFAULT '0' NOT NULL, + C6 DOUBLE DEFAULT '0' NOT NULL, + C6MOLARMASS DOUBLE DEFAULT '0' NOT NULL, + C6DENSITY DOUBLE DEFAULT '0' NOT NULL, + C7 DOUBLE DEFAULT '0' NOT NULL, + C7MOLARMASS DOUBLE DEFAULT '0' NOT NULL, + C7DENSITY DOUBLE DEFAULT '0' NOT NULL, + C8 DOUBLE DEFAULT '0' NOT NULL, + C8MOLARMASS DOUBLE DEFAULT '0' NOT NULL, + C8DENSITY DOUBLE DEFAULT '0' NOT NULL, + C9 DOUBLE DEFAULT '0' NOT NULL, + C9MOLARMASS DOUBLE DEFAULT '0' NOT NULL, + C9DENSITY DOUBLE DEFAULT '0' NOT NULL, + C10 DOUBLE DEFAULT '0' NOT NULL, + C10MOLARMASS DOUBLE DEFAULT '0' NOT NULL, + C10DENSITY DOUBLE DEFAULT '0' NOT NULL, + C11 DOUBLE DEFAULT '0' NOT NULL, + C11MOLARMASS DOUBLE DEFAULT '0' NOT NULL, + C11DENSITY DOUBLE DEFAULT '0' NOT NULL, + C12 DOUBLE DEFAULT '0' NOT NULL, + C12MOLARMASS DOUBLE DEFAULT '0' NOT NULL, + C12DENSITY DOUBLE DEFAULT '0' NOT NULL, + C13 DOUBLE DEFAULT '0' NOT NULL, + C13MOLARMASS DOUBLE DEFAULT '0' NOT NULL, + C13DENSITY DOUBLE DEFAULT '0' NOT NULL, + CPLUS DOUBLE DEFAULT '0' NOT NULL, + CPLUSMOLARMASS DOUBLE DEFAULT '0' NOT NULL, + CPLUSDENSITY DOUBLE DEFAULT '0' NOT NULL, + SHARED INT DEFAULT '0' +); +ALTER TABLE PUBLIC.FLUIDINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_72 PRIMARY KEY(ID); +-- 5 +/- SELECT COUNT(*) FROM PUBLIC.FLUIDINFO; +INSERT INTO PUBLIC.FLUIDINFO(ID, USERID, FIELD, WELL, TEST, SAMPLE, TEXT, HISTORY, COMPOSITIONTYPE, METHANE, ETHANE, PROPANE, CO2, H2S, NITROGEN, IBUTANE, NBUTANE, PENTANE, NHEXANE, CYCPENTANE, CYCHEXANE, NHEPTANE, NOCTANE, NNONANE, NDECANE, BENZENE, TOLUENE, MXYLENE, PXYLENE, OXYLENE, WATER, METHANOL, MEG, TEG, DEG, MDEA, PIPERAZINE, ACETICACID, PROPIONICACID, NAPLUS, FEPLUS, CAPLUS, H3OPLUS, OHMINUS, CO3MINUS, CLMINUS, C6, C6MOLARMASS, C6DENSITY, C7, C7MOLARMASS, C7DENSITY, C8, C8MOLARMASS, C8DENSITY, C9, C9MOLARMASS, C9DENSITY, C10, C10MOLARMASS, C10DENSITY, C11, C11MOLARMASS, C11DENSITY, C12, C12MOLARMASS, C12DENSITY, C13, C13MOLARMASS, C13DENSITY, CPLUS, CPLUSMOLARMASS, CPLUSDENSITY, SHARED) VALUES +(1, 1, STRINGDECODE('\u00c5sgard'), STRINGDECODE('Sm\u00f8rbukk'), 'Test separator', 'Test separator S1', 'Analysis done on GC', 'Sample taken 31/1-2006', 'Detailed', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1), +(2, 1, 'Gullfaks', 'Gullfaks', 'Test separator', NULL, NULL, NULL, 'Detailed', 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1), +(3, 2, 'Statfjord', 'test', 'test', 'test', NULL, NULL, 'Detailed', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1), +(4, 2, 'default', 'default', 'default', 'default', 'default', 'default', 'Characterized', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1), +(30, 0, NULL, NULL, NULL, NULL, 'Norne', NULL, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0); +CREATE CACHED TABLE PUBLIC."gas/oil-fields"( + ID INT NOT NULL, + FIELDNAME VARCHAR(50) DEFAULT NULL, + POSITION VARCHAR(50) DEFAULT NULL, + TYPE VARCHAR(50) DEFAULT NULL, + COMMENTS VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC."gas/oil-fields" ADD CONSTRAINT PUBLIC.CONSTRAINT_9 PRIMARY KEY(ID); +-- 4 +/- SELECT COUNT(*) FROM PUBLIC."gas/oil-fields"; +INSERT INTO PUBLIC."gas/oil-fields"(ID, FIELDNAME, POSITION, TYPE, COMMENTS) VALUES +(1, 'Norne', '1', '1', '1'), +(2, 'Heidrun', NULL, NULL, NULL), +(3, STRINGDECODE('\u00c5sgardB'), NULL, NULL, NULL), +(4, 'Draugen', NULL, NULL, NULL); +CREATE CACHED TABLE PUBLIC.GASCONTRACTSPECIFICATIONS( + ID INT DEFAULT '0' NOT NULL, + NAME VARCHAR(100) DEFAULT NULL, + COUNTRY VARCHAR(50) DEFAULT NULL, + TERMINAL VARCHAR(50) DEFAULT NULL, + SPECIFICATION VARCHAR(50) DEFAULT NULL, + MINVALUE DOUBLE DEFAULT '0', + MAXVALUE DOUBLE DEFAULT '0', + UNIT VARCHAR(50) DEFAULT NULL, + METHOD VARCHAR(50) DEFAULT NULL, + REFERENCETDEGC DOUBLE DEFAULT '0', + REFERENCEPBAR DOUBLE DEFAULT '0', + COMMENTS VARCHAR(250) DEFAULT NULL +); +ALTER TABLE PUBLIC.GASCONTRACTSPECIFICATIONS ADD CONSTRAINT PUBLIC.CONSTRAINT_BF PRIMARY KEY(ID); +-- 7 +/- SELECT COUNT(*) FROM PUBLIC.GASCONTRACTSPECIFICATIONS; +INSERT INTO PUBLIC.GASCONTRACTSPECIFICATIONS(ID, NAME, COUNTRY, TERMINAL, SPECIFICATION, MINVALUE, MAXVALUE, UNIT, METHOD, REFERENCETDEGC, REFERENCEPBAR, COMMENTS) VALUES +(0, 'TROLLGASSALE', 'NORWAY', NULL, 'waterdewpointTemperature', -1000.0, -10.0, 'degC', 'ISO18453', 0.0, 70.0, NULL), +(1, 'TROLLGASSALE', 'NORWAY', NULL, 'hydrocarbondewpointTemperature', -1000.0, -10.0, 'degC', 'StatoilBestPracticeHydrocarbonDewPoint', 0.0, 70.0, NULL), +(2, 'TROLLGASSALE', 'NORWAY', NULL, 'GCV', 30000.0, 40000.0, 'kJ/Sm^3', 'ISO6976', 0.0, 1.01325, 'reference temperature of compustion=0C and reference temperature volume=15C'), +(3, 'TROLLGASSALE', 'NORWAY', NULL, 'H2S content', 0.0, 5.0, 'ppm', 'SulfurSpecificationMethod', 0.0, 1.01325, NULL), +(4, 'TROLLGASSALE', 'NORWAY', NULL, 'Total sulfur content', 0.0, 30.0, 'microg/Sm3', 'SulfurSpecificationMethod', 0.0, 1.01325, NULL), +(5, 'TROLLGASSALE', 'NORWAY', NULL, 'SuperiorWobbeIndex', 20000.0, 40000.0, 'kJ/Sm^3', 'ISO6976', 0.0, 1.01325, NULL), +(6, 'TROLLGASSALE', 'NORWAY', NULL, 'RelativeDensity', 0.6, 1.0, 'kg/Sm^3', 'ISO6976', 0.0, 1.01325, NULL); +CREATE CACHED TABLE PUBLIC.HCGLYCOLLLDATA( + ID1 INT NOT NULL, + ID DOUBLE DEFAULT NULL, + COMP1 VARCHAR(255) DEFAULT NULL, + COMP2 VARCHAR(255) DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + "x-glyinhc" DOUBLE DEFAULT NULL, + "x-hcinglyc" DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.HCGLYCOLLLDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_4D PRIMARY KEY(ID1); +-- 14 +/- SELECT COUNT(*) FROM PUBLIC.HCGLYCOLLLDATA; +INSERT INTO PUBLIC.HCGLYCOLLLDATA(ID1, ID, COMP1, COMP2, TEMPERATURE, PRESSURE, "x-glyinhc", "x-hcinglyc", REFERENCE) VALUES +(8, 0.0, 'n-heptane', 'MEG', 42.8, 1.01325, 3.19615E-4, 9.16018E-4, 'Derawi2002'), +(9, 1.0, 'n-heptane', 'MEG', 49.6, 1.01325, 4.63255E-4, 9.49505E-4, 'Derawi2002'), +(10, 2.0, 'n-heptane', 'MEG', 56.6, 1.01325, 6.43993E-4, 0.00109091, 'Derawi2002'), +(11, 3.0, 'n-heptane', 'MEG', 63.4, 1.01325, 8.92467E-4, 0.001179611, 'Derawi2002'), +(12, 4.0, 'n-heptane', 'MEG', 68.0, 1.01325, 0.001092503, 0.001254673, 'Derawi2002'), +(13, 5.0, 'n-heptane', 'MEG', 73.8, 1.01325, 0.001398951, 0.001313611, 'Derawi2002'), +(14, 6.0, 'n-heptane', 'MEG', 78.7, 1.01325, 0.001719838, 0.001387444, 'Derawi2002'), +(15, 7.0, 'n-heptane', 'MEG', 20.45, 1.01325, 4.84315E-5, 7.26284E-4, 'Lindboe2002'), +(16, 8.0, 'n-heptane', 'MEG', 25.25, 1.01325, 6.45749E-5, 7.57284E-4, 'Lindboe2002'), +(17, 9.0, 'n-heptane', 'MEG', 30.1, 1.01325, 6.61893E-5, 8.6207E-4, 'Lindboe2002'), +(18, 10.0, 'n-heptane', 'MEG', 39.7, 1.01325, 1.8403E-4, 8.67651E-4, 'Lindboe2002'), +(19, 11.0, 'n-heptane', 'MEG', 49.2, 1.01325, 3.29299E-4, 9.63769E-4, 'Lindboe2002'), +(20, 12.0, 'n-heptane', 'MEG', 49.25, 1.01325, 3.63193E-4, 9.6811E-4, 'Lindboe2002'), +(21, 13.0, 'n-heptane', 'MEG', 58.7, 1.01325, 4.81007E-4, 0.001019585, 'Lindboe2002'); +CREATE CACHED TABLE PUBLIC.HYDRATEDATA( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + TYPE VARCHAR(50) DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 17 +/- SELECT COUNT(*) FROM PUBLIC.HYDRATEDATA; +INSERT INTO PUBLIC.HYDRATEDATA(ID, COMPONENTNAME, TYPE, TEMPERATURE, PRESSURE, REFERENCE) VALUES +(1, 'methane', 'LHV', 273.15, 27.7, 'deaton1946'), +(2, 'methane', 'LHV', 274.3, 29.0, 'deaton1946'), +(3, 'methane', 'LHV', 275.4, 32.4, 'deaton1946'), +(4, 'methane', 'LHV', 275.9, 34.2, 'deaton1946'), +(5, 'methane', 'LHV', 275.9, 34.3, 'deaton1946'), +(6, 'methane', 'LHV', 277.1, 38.1, 'deaton1946'), +(7, 'methane', 'LHV', 279.3, 47.7, 'deaton1946'), +(8, 'methane', 'LHV', 280.4, 53.5, 'deaton1946'), +(9, 'methane', 'LHV', 280.9, 57.1, 'deaton1946'), +(10, 'methane', 'LHV', 281.5, 60.6, 'deaton1946'), +(11, 'methane', 'LHV', 282.6, 67.6, 'deaton1946'), +(12, 'methane', 'LHV', 284.3, 81.2, 'deaton1946'), +(13, 'methane', 'LHV', 285.9, 97.8, 'deaton1946'), +(14, 'methane', 'LHV', 295.72, 339.92, 'kobayashi1949'), +(15, 'methane', 'LHV', 295.89, 253.02, 'kobayashi1949'), +(16, 'methane', 'LHV', 301.0, 648.12, 'kobayashi1949'), +(17, 'methane', 'LHV', 302.0, 774.99, 'kobayashi1949'); +CREATE CACHED TABLE PUBLIC.HYDRATEPURECOMP( + ID INT NOT NULL, + GUESTMOLECULE VARCHAR(255) DEFAULT NULL, + TYPE VARCHAR(255) DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.HYDRATEPURECOMP ADD CONSTRAINT PUBLIC.CONSTRAINT_20 PRIMARY KEY(ID); +-- 142 +/- SELECT COUNT(*) FROM PUBLIC.HYDRATEPURECOMP; +INSERT INTO PUBLIC.HYDRATEPURECOMP(ID, GUESTMOLECULE, TYPE, TEMPERATURE, PRESSURE, REFERENCE) VALUES +(14, 'ethane', 'LHV', 273.7, 5.1, 'Deaton1946'), +(15, 'ethane', 'LHV', 273.7, 5.03, 'Deaton1946'), +(16, 'ethane', 'LHV', 274.8, 5.79, 'Deaton1946'), +(17, 'ethane', 'LHV', 275.9, 6.62, 'Deaton1946'), +(18, 'ethane', 'LHV', 277.6, 8.14, 'Deaton1946'), +(19, 'ethane', 'LHV', 278.7, 9.31, 'Deaton1946'), +(20, 'ethane', 'LHV', 278.7, 9.31, 'Deaton1946'), +(21, 'ethane', 'LHV', 279.3, 10.07, 'Deaton1946'), +(22, 'ethane', 'LHV', 279.8, 10.83, 'Deaton1946'), +(23, 'ethane', 'LHV', 280.4, 11.65, 'Deaton1946'), +(24, 'ethane', 'LHV', 280.4, 11.65, 'Deaton1946'), +(25, 'ethane', 'LHV', 280.9, 12.55, 'Deaton1946'), +(26, 'ethane', 'LHV', 281.5, 13.45, 'Deaton1946'), +(27, 'ethane', 'LHV', 282.1, 14.48, 'Deaton1946'), +(28, 'ethane', 'LHV', 282.6, 15.58, 'Deaton1946'), +(29, 'ethane', 'LHV', 283.2, 16.89, 'Deaton1946'), +(30, 'ethane', 'LHV', 284.3, 19.86, 'Deaton1946'), +(31, 'ethane', 'LHV', 285.4, 23.03, 'Deaton1946'), +(32, 'ethane', 'LHV', 285.4, 23.1, 'Deaton1946'), +(33, 'ethane', 'LHV', 286.5, 27.3, 'Deaton1946'), +(34, 'methane', 'LHV', 273.15, 27.7, 'deaton1946'), +(35, 'methane', 'LHV', 274.3, 29.0, 'deaton1946'), +(36, 'methane', 'LHV', 275.4, 32.4, 'deaton1946'), +(37, 'methane', 'LHV', 275.9, 34.2, 'deaton1946'), +(38, 'methane', 'LHV', 275.9, 34.3, 'deaton1946'), +(39, 'methane', 'LHV', 277.1, 38.1, 'deaton1946'), +(40, 'methane', 'LHV', 279.3, 47.7, 'deaton1946'), +(41, 'methane', 'LHV', 280.4, 53.5, 'deaton1946'), +(42, 'methane', 'LHV', 280.9, 57.1, 'deaton1946'), +(43, 'methane', 'LHV', 281.5, 60.6, 'deaton1946'), +(44, 'methane', 'LHV', 282.6, 67.6, 'deaton1946'), +(45, 'methane', 'LHV', 284.3, 81.2, 'deaton1946'), +(46, 'methane', 'LHV', 285.9, 97.8, 'deaton1946'), +(47, 'methane', 'LHV', 295.72, 339.92, 'kobayashi1949'), +(48, 'methane', 'LHV', 295.89, 353.02, 'kobayashi1949'), +(49, 'methane', 'LHV', 301.0, 648.12, 'kobayashi1949'), +(50, 'methane', 'LHV', 302.0, 774.99, 'kobayashi1949'), +(51, 'methane', 'LHV', 285.7, 96.2, 'Campbell1961'), +(52, 'methane', 'LHV', 286.1, 101.0, 'Campbell1961'), +(53, 'methane', 'LHV', 292.1, 211.3, 'Campbell1961'), +(54, 'methane', 'LHV', 295.9, 347.5, 'Campbell1961'), +(55, 'methane', 'LHV', 298.7, 486.8, 'Campbell1961'), +(56, 'ethane', 'LHV', 287.7, 49.09, 'Roberts1940'), +(57, 'ethane', 'LHV', 288.1, 68.4, 'Roberts1940'), +(58, 'CO2', 'LHV', 271.8, 1.048, 'Larson1955'), +(59, 'CO2', 'LHV', 271.9, 1.048, 'Larson1955'), +(60, 'CO2', 'LHV', 275.0, 15.1, 'Larson1955'), +(61, 'CO2', 'LHV', 277.2, 19.51, 'Larson1955'), +(62, 'CO2', 'LHV', 273.1, 12.0, 'Larson1955'), +(63, 'CO2', 'LHV', 278.0, 21.65, 'Larson1955'), +(64, 'CO2', 'LHV', 280.1, 28.61, 'Larson1955'), +(65, 'CO2', 'LHV', 281.1, 32.82, 'Larson1955'), +(66, 'CO2', 'LHV', 282.0, 36.89, 'Larson1955'), +(67, 'CO2', 'LHV', 283.1, 44.68, 'Larson1955'), +(68, 'CO2', 'LHV', 283.2, 45.02, 'Larson1955'), +(71, 'methane', 'IHV', 259.1, 16.48, 'Roberts1940'), +(72, 'methane', 'IHV', 262.4, 17.9, 'Deaton1946'), +(73, 'methane', 'IHV', 264.2, 19.0, 'Deaton1946'), +(74, 'methane', 'IHV', 266.5, 20.8, 'Deaton1946'), +(75, 'methane', 'IHV', 268.6, 22.2, 'Deaton1946'), +(76, 'methane', 'IHV', 270.9, 23.9, 'Deaton1946'), +(77, 'methane', 'LHV', 285.7, 96.2, 'McLeod1961'), +(78, 'methane', 'LHV', 286.3, 103.1, 'McLeod1961'), +(79, 'methane', 'LHV', 286.1, 101.0, 'McLeod1961'), +(80, 'methane', 'LHV', 292.1, 211.3, 'McLeod1961'), +(81, 'methane', 'LHV', 295.9, 347.5, 'McLeod1961'), +(82, 'methane', 'LHV', 298.7, 486.8, 'McLeod1961'), +(83, 'ethane', 'IHV', 260.8, 2.94, 'Roberts1940'), +(84, 'ethane', 'IHV', 260.9, 2.9, 'Roberts1940'), +(85, 'ethane', 'IHV', 269.3, 4.41, 'Roberts1940'), +(87, 'ethane', 'IHV', 272.0, 4.57, 'Deaton1946'), +(88, 'ethane', 'IHV', 263.6, 3.13, 'Deaton1946'), +(89, 'ethane', 'IHV', 266.5, 3.57, 'Deaton1946'), +(90, 'ethane', 'IHV', 269.3, 4.05, 'Deaton1946'), +(91, 'nitrogen', 'LHV', 272.05, 144.8, 'vanCleeff1960'), +(92, 'nitrogen', 'LHV', 273.15, 160.1, 'vanCleeff1960'), +(93, 'nitrogen', 'LHV', 274.15, 177.3, 'vanCleeff1960'), +(94, 'nitrogen', 'LHV', 275.25, 196.6, 'vanCleeff1960'), +(95, 'nitrogen', 'LHV', 276.25, 223.9, 'vanCleeff1960'); +INSERT INTO PUBLIC.HYDRATEPURECOMP(ID, GUESTMOLECULE, TYPE, TEMPERATURE, PRESSURE, REFERENCE) VALUES +(96, 'nitrogen', 'LHV', 278.25, 279.7, 'vanCleeff1960'), +(97, 'nitrogen', 'LHV', 279.25, 303.0, 'vanCleeff1960'), +(98, 'nitrogen', 'LHV', 280.25, 339.4, 'vanCleeff1960'), +(99, 'nitrogen', 'LHV', 281.25, 374.9, 'vanCleeff1960'), +(100, 'nitrogen', 'LHV', 282.25, 414.4, 'vanCleeff1960'), +(101, 'nitrogen', 'LHV', 283.25, 459.0, 'vanCleeff1960'), +(102, 'nitrogen', 'LHV', 284.25, 506.6, 'vanCleeff1960'), +(103, 'nitrogen', 'LHV', 285.25, 554.3, 'vanCleeff1960'), +(104, 'nitrogen', 'LHV', 291.55, 1019.8, 'Marshall1964'), +(105, 'nitrogen', 'LHV', 296.56, 1534.8, 'Marshall1964'), +(107, 'propane', 'LHL', 278.6, 12.96, 'Wilcox1941'), +(108, 'propane', 'LHL', 278.6, 17.58, 'Wilcox1941'), +(109, 'propane', 'LHL', 278.8, 20.34, 'Wilcox1941'), +(110, 'propane', 'LHL', 279.2, 29.02, 'Wilcox1941'), +(111, 'propane', 'LHL', 278.8, 42.47, 'Wilcox1941'), +(112, 'propane', 'LHL', 278.9, 61.15, 'Wilcox1941'), +(113, 'propane', 'LHV', 273.2, 1.65, 'Miller1945'), +(114, 'propane', 'LHV', 273.4, 1.72, 'Miller1945'), +(115, 'propane', 'LHV', 273.5, 1.76, 'Miller1945'), +(116, 'propane', 'LHV', 276.8, 3.65, 'Miller1945'), +(117, 'propane', 'LHV', 277.1, 3.9, 'Miller1945'), +(118, 'propane', 'LHV', 277.2, 3.93, 'Miller1945'), +(119, 'propane', 'LHV', 273.7, 1.86, 'Miller1945'), +(120, 'propane', 'LHV', 273.9, 1.9, 'Miller1945'), +(121, 'propane', 'LHV', 274.6, 2.21, 'Miller1945'), +(122, 'propane', 'LHV', 275.9, 2.93, 'Miller1945'), +(123, 'propane', 'LHV', 276.2, 3.17, 'Miller1945'), +(124, 'propane', 'LHV', 276.7, 3.45, 'Miller1945'), +(125, 'propane', 'LHV', 277.8, 4.59, 'Miller1945'), +(126, 'propane', 'LHV', 278.0, 4.72, 'Miller1945'), +(127, 'propane', 'LHV', 278.1, 4.79, 'Miller1945'), +(128, 'propane', 'LHV', 278.8, 5.48, 'Miller1945'), +(129, 'propane', 'LHV', 278.9, 5.65, 'Miller1945'), +(130, 'propane', 'IHV', 261.2, 1.0, 'Deaton1946'), +(131, 'propane', 'IHV', 264.2, 1.15, 'Deaton1946'), +(132, 'propane', 'IHV', 267.4, 1.32, 'Deaton1946'), +(133, 'propane', 'IHV', 267.6, 1.35, 'Deaton1946'), +(134, 'propane', 'IHV', 269.8, 1.49, 'Deaton1946'), +(135, 'propane', 'IHV', 272.2, 1.67, 'Deaton1946'), +(136, 'propane', 'IHV', 272.9, 1.72, 'Deaton1946'), +(137, 'i-butane', 'IHV', 273.1, 1.09, 'Schneider1968'), +(138, 'i-butane', 'IHV', 273.1, 1.09, 'Schneider1968'), +(139, 'i-butane', 'IHV', 272.3, 1.05, 'Schneider1968'), +(140, 'i-butane', 'IHV', 272.2, 1.03, 'Schneider1968'), +(141, 'i-butane', 'IHV', 272.8, 1.09, 'Schneider1968'), +(142, 'i-butane', 'IHV', 272.8, 1.02, 'Schneider1968'), +(143, 'i-butane', 'IHV', 271.2, 0.95, 'Schneider1968'), +(144, 'i-butane', 'LHV', 275.1, 1.67, 'Schneider1968'), +(145, 'i-butane', 'LHV', 275.0, 1.65, 'Schneider1968'), +(146, 'i-butane', 'LHV', 274.9, 1.63, 'Schneider1968'), +(147, 'i-butane', 'LHV', 274.4, 1.41, 'Schneider1968'), +(148, 'i-butane', 'LHV', 274.2, 1.37, 'Schneider1968'), +(149, 'i-butane', 'LHV', 273.9, 1.3, 'Schneider1968'), +(150, 'i-butane', 'LHV', 273.6, 1.23, 'Schneider1968'), +(151, 'i-butane', 'LHV', 273.4, 1.17, 'Schneider1968'), +(152, 'i-butane', 'LHV', 273.2, 1.09, 'Schneider1968'), +(153, 'i-butane', 'LHV', 273.2, 1.1, 'Schneider1968'), +(154, 'i-butane', 'LHL', 275.4, 2.26, 'Wu1976'), +(155, 'i-butane', 'LHL', 275.4, 3.57, 'Wu1976'), +(156, 'i-butane', 'LHL', 275.4, 9.03, 'Wu1976'), +(157, 'i-butane', 'LHL', 275.5, 24.1, 'Wu1976'), +(158, 'i-butane', 'LHL', 275.6, 56.5, 'Wu1976'), +(159, 'i-butane', 'LHL', 275.8, 142.7, 'Wu1976'); +CREATE CACHED TABLE PUBLIC.INTER( + ID INT NOT NULL SELECTIVITY 100, + COMP1 VARCHAR(255) DEFAULT NULL SELECTIVITY 7, + COMP2 VARCHAR(255) DEFAULT NULL SELECTIVITY 1, + HVTYPE VARCHAR(255) DEFAULT NULL SELECTIVITY 1, + KIJSRK DOUBLE DEFAULT NULL SELECTIVITY 11, + KIJTSRK DOUBLE DEFAULT NULL SELECTIVITY 1, + KIJTTYPE INT DEFAULT '0' SELECTIVITY 1, + KIJPR DOUBLE DEFAULT NULL SELECTIVITY 10, + KIJTPR DOUBLE DEFAULT '0' SELECTIVITY 1, + KIJPCSAFT DOUBLE DEFAULT '0' SELECTIVITY 1, + HVALPHA DOUBLE DEFAULT NULL SELECTIVITY 4, + HVGIJ DOUBLE DEFAULT NULL SELECTIVITY 6, + HVGJI DOUBLE DEFAULT NULL SELECTIVITY 6, + CALCWIJ INT DEFAULT '0' SELECTIVITY 1, + W1 DOUBLE DEFAULT NULL SELECTIVITY 1, + W2 DOUBLE DEFAULT NULL SELECTIVITY 1, + W3 DOUBLE DEFAULT NULL SELECTIVITY 1, + WSTYPE VARCHAR(255) DEFAULT NULL SELECTIVITY 1, + KIJWS DOUBLE DEFAULT NULL SELECTIVITY 5, + NRTLALPHA DOUBLE DEFAULT NULL SELECTIVITY 2, + NRTLGIJ DOUBLE DEFAULT NULL SELECTIVITY 4, + NRTLGJI DOUBLE DEFAULT NULL SELECTIVITY 4, + GIJVISC DOUBLE DEFAULT NULL SELECTIVITY 1, + HVGIJT DOUBLE DEFAULT NULL SELECTIVITY 1, + HVGJIT DOUBLE DEFAULT NULL SELECTIVITY 1, + WSGIJT DOUBLE DEFAULT NULL SELECTIVITY 1, + WSGJIT DOUBLE DEFAULT NULL SELECTIVITY 1, + CPAKIJ_SRK DOUBLE DEFAULT NULL SELECTIVITY 7, + CPAKIJT_SRK DOUBLE DEFAULT NULL SELECTIVITY 1, + CPAKIJX_SRK DOUBLE DEFAULT '0' SELECTIVITY 7, + CPAKJIX_SRK DOUBLE DEFAULT NULL SELECTIVITY 7, + CPAKIJ_PR DOUBLE DEFAULT '0' SELECTIVITY 4, + KIJWSUNIFAC DOUBLE DEFAULT NULL SELECTIVITY 1, + AIJDESMATH DOUBLE DEFAULT '0' SELECTIVITY 1, + BIJDESMATH DOUBLE DEFAULT '0' SELECTIVITY 1, + CPAASSOSIATIONTYPE INT DEFAULT '0' SELECTIVITY 1, + CPABETACROSS DOUBLE DEFAULT '0' SELECTIVITY 1, + CPAEPSCROSS DOUBLE DEFAULT '0' SELECTIVITY 1 +); + +CREATE INDEX PUBLIC.INTER_COMP ON PUBLIC.INTER(COMP1); +CREATE INDEX PUBLIC.INTER_COMP2 ON PUBLIC.INTER(COMP1, COMP2); +CREATE CACHED TABLE PUBLIC.INTER1( + ID INT NOT NULL, + COMP1 VARCHAR(255) DEFAULT NULL, + COMP2 VARCHAR(255) DEFAULT NULL, + HVTYPE VARCHAR(255) DEFAULT NULL, + KIJSRK DOUBLE DEFAULT NULL, + KIJPR DOUBLE DEFAULT NULL, + HVALPHA DOUBLE DEFAULT NULL, + HVGIJ DOUBLE DEFAULT NULL, + HVGJI DOUBLE DEFAULT NULL, + W1 DOUBLE DEFAULT NULL, + W2 DOUBLE DEFAULT NULL, + W3 DOUBLE DEFAULT NULL, + WSTYPE VARCHAR(255) DEFAULT NULL, + KIJWS DOUBLE DEFAULT NULL, + NRTLALPHA DOUBLE DEFAULT NULL, + NRTLGIJ DOUBLE DEFAULT NULL, + NRTLGJI DOUBLE DEFAULT NULL, + GIJVISC DOUBLE DEFAULT NULL, + HVGIJT DOUBLE DEFAULT NULL, + HVGJIT DOUBLE DEFAULT NULL, + WSGIJT DOUBLE DEFAULT NULL, + WSGJIT DOUBLE DEFAULT NULL, + "cpakij-SRK" DOUBLE DEFAULT NULL, + "cpakij-PR" DOUBLE DEFAULT '0', + KIJWSUNIFAC DOUBLE DEFAULT NULL +); +ALTER TABLE PUBLIC.INTER1 ADD CONSTRAINT PUBLIC.CONSTRAINT_81 PRIMARY KEY(ID); +-- 1253 +/- SELECT COUNT(*) FROM PUBLIC.INTER1; +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1, 'water ', 'methane ', 'HV ', 0.45, 0.45, 0.15, -123.6011438188, 4875.0942356587, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.5496550381, 0.0, 0.0, 0.0459393339, 0.1611996305, 0.0), +(2, 'methanol ', 'methane ', 'HV ', 0.13, 0.13, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 646.5, -2.056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(3, 'ethanol ', 'methane ', 'HV ', 0.13, 0.13, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 521.5, -2.056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(4, 'MEG ', 'methane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(5, 'DEG ', 'methane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(6, 'TEG ', 'methane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, -328.6, -2.056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(7, 'NaCl ', 'methane ', 'HV ', 2.02, 2.02, 0.084, 7623.0, 5281.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 7623.0, 5281.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02, 2.02, 0.0), +(8, 'KCl ', 'methane ', 'Classic ', 1.64, 1.64, 0.097, 6733.0, 4007.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 6733.0, 4007.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64, 1.64, 0.0), +(9, 'CaCl2 ', 'methane ', 'HV ', 2.07, 2.07, 0.055, 8790.0, 14765.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 8790.0, 14765.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.07, 2.07, 0.0), +(10, 'HCOONa ', 'methane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(11, 'HCOOK ', 'methane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(12, 'HCOOCs ', 'methane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(13, 'helium ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(14, 'hydrogen ', 'methane ', 'Classic ', 0.01, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.01, 0.0), +(15, 'nitrogen ', 'methane ', 'Classic ', 0.031199, 0.03599, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.02, 0.0), +(16, 'Ar ', 'methane ', 'Classic ', 0.0252, 0.0252, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0252, 0.0252, 0.0), +(17, 'oxygen ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, 'CO2 ', 'methane ', 'Classic ', 0.0956, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.141215983, -0.141215983, 0.0), +(19, 'H2S ', 'methane ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(20, 'methane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(21, 'ethane ', 'methane ', 'Classic ', 0.00295295, 0.00295295, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(22, 'propane ', 'methane ', 'Classic ', 0.00747722, 0.00747722, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 'c-propane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, 'i-butane ', 'methane ', 'Classic ', 0.01369935, 0.01369935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(25, 'n-butane ', 'methane ', 'Classic ', 0.01289789, 0.01289789, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, '2,2-diom C3 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 'c-C4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 'i-pentane ', 'methane ', 'Classic ', 0.01817552, 0.01817552, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 'n-pentane ', 'methane ', 'Classic ', 0.01847102, 0.01847102, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 'c-pentane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, '2,2-dim-C4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, '2,3-dimC4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(33, '2-m-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, '3-m-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 'n-hexane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 'hexane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(37, 'm-c-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 'benzene ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 'c-hexane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, '223-tm-C4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(41, '3,3-dim-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 'n-C7 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 'm-c-C6 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(44, 'et-c-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(45, 'toluene ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 'c-c7 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, '11-dm-c-C6 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 'c-c8 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(49, 'c-12-dmcC6 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(50, 'et-benzene ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 'MDEA+ ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(52, 'H3O+ ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 'MDEA ', 'methane ', 'Classic', 0.6465043774, 0.6465043774, 0.122, 2467.0, 274.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.646504377, 0.646504377, 0.0), +(54, 'HCO3- ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(55, 'OH- ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(56, 'Na+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(57, 'Cl- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(58, 'Ca++ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(59, 'Li+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(60, 'Br- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(61, 'NH4+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(62, 'CO3-- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(63, 'DEACOO- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(64, 'DEA ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(65, 'DEA+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(66, 'BEA ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(67, 'BEA+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(68, 'BEACOO- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(69, 'K+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(70, 'HS- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(71, 'S-- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(72, 'I- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(73, 'Mg++ ', 'methane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(74, 'Ba++ ', 'methane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(75, 'Sr++ ', 'methane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(77, 'methanol ', 'ethane ', 'HV ', 0.19, 0.19, 0.395, 2005.0, 494.0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 2005.0, 494.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.19, 0.19, 0.0), +(78, 'ethanol ', 'ethane ', 'HV ', 0.19, 0.19, 0.395, 2005.0, 494.0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 2005.0, 494.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.19, 0.19, 0.0), +(79, 'MEG ', 'ethane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(80, 'DEG ', 'ethane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(81, 'TEG ', 'ethane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(82, 'NaCl ', 'ethane ', 'Classic ', 0.78, 0.78, 0.062, 12235.0, 4227.0, 0.0, 0.0, 0.0, 'Classic ', 0.78, 0.062, 12235.0, 4227.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.78, 0.78, 0.0), +(83, 'KCl ', 'ethane ', 'Classic ', 1.33, 1.33, 0.021, 24788.0, 50127.0, 0.0, 0.0, 0.0, 'Classic ', 1.33, 0.021, 24788.0, 50127.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33, 1.33, 0.0), +(84, 'CaCl2 ', 'ethane ', 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.18, 1.18, 0.0), +(85, 'HCOONa ', 'ethane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(86, 'HCOOK ', 'ethane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(87, 'HCOOCs ', 'ethane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(88, 'helium ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(89, 'hydrogen ', 'ethane ', 'Classic ', 0.0367, 0.0367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0367, 0.0367, 0.0), +(90, 'nitrogen ', 'ethane ', 'Classic ', 0.031899, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(91, 'Ar ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(92, 'oxygen ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(93, 'CO2 ', 'ethane ', 'Classic ', 0.1401, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(94, 'H2S ', 'ethane ', 'Classic ', 0.07, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0), +(96, 'ethane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(97, 'propane ', 'ethane ', 'Classic ', 0.00185286, 0.00185286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(98, 'c-propane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(99, 'i-butane ', 'ethane ', 'Classic ', 0.00511365, 0.00511365, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(100, 'n-butane ', 'ethane ', 'Classic ', 0.00464288, 0.00464288, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(101, '2,2-diom C3 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(102, 'c-C4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(103, 'i-pentane ', 'ethane ', 'Classic ', 0.00791956, 0.00791956, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(104, 'n-pentane ', 'ethane ', 'Classic ', 0.00811359, 0.00811359, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(105, 'c-pentane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(106, '2,2-dim-C4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(107, '2,3-dimC4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(108, '2-m-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(109, '3-m-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(110, 'n-hexane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(111, 'hexane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(112, 'm-c-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(113, 'benzene ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(114, 'c-hexane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(115, '223-tm-C4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(116, '3,3-dim-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(117, 'n-C7 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(118, 'm-c-C6 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(119, 'et-c-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(120, 'toluene ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(121, 'c-c7 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(122, '11-dm-c-C6 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(123, 'c-c8 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(124, 'c-12-dmcC6 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(125, 'et-benzene ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(126, 'MDEA+ ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(127, 'H3O+ ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(128, 'MDEA ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(129, 'HCO3- ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(130, 'OH- ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(131, 'Na+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(132, 'Cl- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(133, 'Ca++ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(134, 'Li+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(135, 'Br- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(136, 'NH4+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(137, 'CO3-- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(138, 'DEACOO- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(139, 'DEA ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(140, 'DEA+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(141, 'BEA ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(142, 'BEA+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(143, 'BEACOO- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(144, 'K+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(145, 'HS- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(146, 'S-- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(147, 'I- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(148, 'Mg++ ', 'ethane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(149, 'Ba++ ', 'ethane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(150, 'Sr++ ', 'ethane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(152, 'methanol ', 'CO2 ', 'HV', 0.0148, 0.023, 0.68, -92.26, -546.3, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 3307.0, 276.0, 0.0, 0.97, 5.0, 0.0, 0.0, 0.0148, 0.0148, 0.0), +(153, 'ethanol ', 'CO2 ', 'HV', 0.5, 0.5, 0.395, 3307.0, 276.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 3307.0, 276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(154, 'MEG ', 'CO2 ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(155, 'DEG ', 'CO2 ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(156, 'TEG ', 'CO2 ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(157, 'NaCl ', 'CO2 ', 'HV ', 2.1, 2.1, -0.007, 0.07, 3087.0, 0.0, 0.0, 0.0, 'WS ', 2.1, -0.007, 0.07, 3087.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1, 2.1, 0.0), +(158, 'KCl ', 'CO2 ', 'HV ', 1.79, 1.79, -0.1218, 1865.0, 1137.0, 0.0, 0.0, 0.0, 'WS ', 1.79, -0.1218, 1865.0, 1137.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.79, 1.79, 0.0), +(159, 'CaCl2 ', 'CO2 ', 'HV ', 2.23, 2.23, -0.111, 628.0, 1721.0, 0.0, 0.0, 0.0, 'WS ', 2.23, -0.111, 628.0, 1721.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.23, 2.23, 0.0), +(160, 'HCOONa ', 'CO2 ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(161, 'HCOOK ', 'CO2 ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(162, 'HCOOCs ', 'CO2 ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(163, 'helium ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(164, 'hydrogen ', 'CO2 ', 'Classic ', 0.0362, 0.0362, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0362, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0362, 0.0362, 0.0), +(165, 'nitrogen ', 'CO2 ', 'Classic ', -0.0171, -0.019997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(166, 'Ar ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(167, 'oxygen ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(168, 'CO2 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(169, 'H2S ', 'CO2 ', 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(171, 'ethane ', 'CO2 ', 'Classic ', 0.1401, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(172, 'propane ', 'CO2 ', 'Classic ', 0.13680001, 0.13500001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(173, 'c-propane ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(174, 'i-butane ', 'CO2 ', 'Classic ', 0.13680001, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(175, 'n-butane ', 'CO2 ', 'Classic ', 0.14120001, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(176, '2,2-diom C3 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(177, 'c-C4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(178, 'i-pentane ', 'CO2 ', 'Classic ', 0.12970001, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(179, 'n-pentane ', 'CO2 ', 'Classic ', 0.1347, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(180, 'c-pentane ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(181, '2,2-dim-C4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(182, '2,3-dimC4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(183, '2-m-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(184, '3-m-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(185, 'n-hexane ', 'CO2 ', 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(186, 'hexane ', 'CO2 ', 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(187, 'm-c-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(188, 'benzene ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(189, 'c-hexane ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(190, '223-tm-C4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(191, '3,3-dim-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(192, 'n-C7 ', 'CO2 ', 'Classic ', 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0), +(193, 'm-c-C6 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(194, 'et-c-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(195, 'toluene ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(196, 'c-c7 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(197, '11-dm-c-C6 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(198, 'c-c8 ', 'CO2 ', 'Classic ', 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0), +(199, 'c-12-dmcC6 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(200, 'et-benzene ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(201, 'MDEA+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(202, 'H3O+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(203, 'MDEA ', 'CO2 ', 'HV ', 0.1, 0.1, 0.239, -2753.7379912645, 3204.3057406886, 0.0, 0.0, 0.0, 'WS ', 1.6, 0.3, -713.0, -393.0, 0.0, 13.0150379323, -12.4728330162, 3.96, 0.96, 0.0, 0.0, 0.0), +(204, 'HCO3- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(205, 'OH- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(206, 'Na+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(207, 'Cl- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(208, 'Ca++ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(209, 'Li+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(210, 'Br- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(211, 'NH4+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(212, 'CO3-- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(213, 'DEACOO- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(214, 'DEA ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(215, 'DEA+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(216, 'BEA ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(217, 'BEA+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(218, 'BEACOO- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(219, 'K+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(220, 'HS- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(221, 'S-- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(222, 'I- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(223, 'Mg++ ', 'CO2 ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(224, 'Ba++ ', 'CO2 ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(225, 'Sr++ ', 'CO2 ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(226, 'water ', 'propane ', 'HV ', 0.53, 0.53, 0.07, -1584.0, 3517.0, 0.0, 0.0, 0.0, 'WS ', 0.53, 0.122, 2467.0, 274.0, 0.0, -0.44, -0.1, 0.0, 0.0, 0.055112588, 0.13287685, 0.0), +(227, 'methanol ', 'propane ', 'HV ', 0.22, 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.22, 0.22, 0.0), +(228, 'ethanol ', 'propane ', 'HV ', 0.22, 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.22, 0.22, 0.0), +(229, 'MEG ', 'propane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(230, 'DEG ', 'propane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(231, 'TEG ', 'propane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(232, 'NaCl ', 'propane ', 'Classic ', 0.72, 0.72, 0.0592, 10539.0, 4777.0, 0.0, 0.0, 0.0, 'Classic ', 0.72, 0.0592, 10539.0, 4777.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.72, 0.72, 0.0), +(233, 'KCl ', 'propane ', 'Classic ', 1.36, 1.36, 0.0441, 60604.0, 7490.0, 0.0, 0.0, 0.0, 'Classic ', 1.36, 0.0441, 60604.0, 7490.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.36, 1.36, 0.0), +(234, 'CaCl2 ', 'propane ', 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.18, 1.18, 0.0), +(235, 'HCOONa ', 'propane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(236, 'HCOOK ', 'propane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(237, 'HCOOCs ', 'propane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(238, 'helium ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(239, 'hydrogen ', 'propane ', 'Classic ', 0.0799, 0.0799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0799, 0.0799, 0.0), +(240, 'nitrogen ', 'propane ', 'Classic ', 0.0886, 0.079998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(241, 'Ar ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(242, 'oxygen ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(243, 'CO2 ', 'propane ', 'Classic ', 0.13680001, 0.13500001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(244, 'H2S ', 'propane ', 'Classic ', 0.07, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0), +(245, 'methane ', 'propane ', 'Classic ', 0.00747722, 0.00747722, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(246, 'ethane ', 'propane ', 'Classic ', 0.00185286, 0.00185286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(247, 'propane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(248, 'c-propane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(249, 'i-butane ', 'propane ', 'Classic ', 0.00153851, 0.00153851, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(250, 'n-butane ', 'propane ', 'Classic ', 0.00132268, 0.00132268, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(251, '2,2-diom C3 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(252, 'c-C4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(253, 'i-pentane ', 'propane ', 'Classic ', 0.00305075, 0.00305075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(254, 'n-pentane ', 'propane ', 'Classic ', 0.00316586, 0.00316586, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(255, 'c-pentane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(256, '2,2-dim-C4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(257, '2,3-dimC4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(258, '2-m-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(259, '3-m-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(260, 'n-hexane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(261, 'hexane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(262, 'm-c-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(263, 'benzene ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(264, 'c-hexane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(265, '223-tm-C4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(266, '3,3-dim-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(267, 'n-C7 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(268, 'm-c-C6 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(269, 'et-c-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(270, 'toluene ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(271, 'c-c7 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(272, '11-dm-c-C6 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(273, 'c-c8 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(274, 'c-12-dmcC6 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(275, 'et-benzene ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(276, 'MDEA+ ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(277, 'H3O+ ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(278, 'MDEA ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(279, 'HCO3- ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(280, 'OH- ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(281, 'Na+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(282, 'Cl- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(283, 'Ca++ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(284, 'Li+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(285, 'Br- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(286, 'NH4+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(287, 'CO3-- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(288, 'DEACOO- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(289, 'DEA ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(290, 'DEA+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(291, 'BEA ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(292, 'BEA+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(293, 'BEACOO- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(294, 'K+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(295, 'HS- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(296, 'S-- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(297, 'I- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(298, 'Mg++ ', 'propane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(299, 'Ba++ ', 'propane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(300, 'Sr++ ', 'propane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(301, 'water ', 'water ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(302, 'methanol ', 'water ', 'HV ', -0.0789, -0.0789, 0.357, 410.67, -169.63, 0.0, 0.0, 0.0, 'WS ', 0.0931039474415679, 0.303, -48.68, 610.6, 0.0, 1.89, -1.11, 0.0, 0.0, -0.0789, -0.0789, 0.093103947441567), +(303, 'ethanol ', 'water ', 'HV ', 0.0, 0.0, 0.2245, 2207.03, -2612.51, 0.0, 0.0, 0.0, 'WS ', 0.0, 0.3791, -268.88, 885.99, 0.0, -4.6, 7.3, 0.0, 0.0, 0.0, 0.0, 0.0), +(304, 'water', 'MEG', 'HV ', 0.0, -0.0385, 0.3475, -520.98, 707.85, 0.0, 0.0, 0.0, 'WS ', 0.407748, 0.327, 1229.0, -946.4, 0.0, -1.33, 1.15, 0.0, 0.0, 0.0, 0.0, 0.0), +(305, 'DEG ', 'water ', 'HV ', -0.1259, -0.1259, 0.4739, -624.62, 715.5, 0.0, 0.0, 0.0, 'WS ', -0.1259, 0.4739, -624.62, 715.5, 0.0, 0.0, 0.0, 0.0, 0.0, -0.1259, -0.1259, 0.0), +(306, 'TEG ', 'water ', 'HV ', -0.2035, -0.2035, 0.1967, -2913.94, 2497.41, 0.0, 0.0, 0.0, 'WS ', 0.2035, 0.3, -777.0, 1915.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2035, -0.2035, 0.0), +(307, 'NaCl ', 'water ', 'HV ', -0.2169, -0.2169, -0.7335, -11.7, 95.12, 0.0, 0.0, 0.0, 'WS ', -0.2169, -0.7335, -11.7, 95.12, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2169, -0.2169, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(308, 'KCl ', 'water ', 'HV ', 0.0, 0.0, -0.8262, 650.82, 92.26, 0.0, 0.0, 0.0, 'WS ', 0.0, -0.8262, 650.82, 92.26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(309, 'CaCl2 ', 'water ', 'HV ', 0.0, 0.0, -2.104, 170.53, 66.88, 0.0, 0.0, 0.0, 'WS ', 0.0, -2.104, 170.53, 66.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(310, 'HCOONa ', 'water ', 'HV ', 0.0, 0.0, -0.7911, -26.58, 114.0, 0.0, 0.0, 0.0, 'WS ', 0.0, -0.7911, -26.58, 114.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(311, 'HCOOK ', 'water ', 'HV ', 0.0, 0.0, -0.8954, -10.98, 90.11, 0.0, 0.0, 0.0, 'WS ', 0.0, -0.8954, -10.98, 90.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(312, 'HCOOCs ', 'water ', 'HV ', 0.0, 0.0, -2.401, -14.88, 63.62, 0.0, 0.0, 0.0, 'WS ', 0.0, -2.401, -14.88, 63.62, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(313, 'helium ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(314, 'hydrogen ', 'water ', 'Classic ', 0.5322, 0.5322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5322, 0.5322, 0.0), +(315, 'nitrogen ', 'water ', 'HV ', -0.48, -0.48, 0.08, 4643.0, -64.5, 0.0, 0.0, 0.0, 'WS ', -0.48, 0.0768, -388.0, 4911.0, 0.0, -2.1, -1.05, 0.0, 0.0, -0.0592019341, 0.241399241, 0.0), +(316, 'Ar ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(317, 'oxygen ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(318, 'CO2', 'water', 'HV ', 0.1, 0.1, 0.03, 3625.894514452, -2241.2916342019, 0.0, 0.0, 0.0, 'WS ', 1.6, 0.3, -393.0, -713.0, 0.0, 3.9121943388, -3.1637627212, 0.96, 3.96, -0.0586254634, 0.0143208, 0.0), +(319, 'H2S ', 'water ', 'HV ', 0.03, 0.03, 0.0653, -1082.0, 2579.6, 0.0, 0.0, 0.0, 'WS ', 0.03, 0.0653, -1082.0, 2579.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.03, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(320, 'water', 'ethane', 'HV ', 0.45, 0.45, 0.122, -1479.91, 5173.65, 0.0, 0.0, 0.0, 'WS ', 0.45, 0.122, 274.0, 2467.0, 0.0, 3.46, -6.56, 0.0, 0.0, 0.1565688628, 0.209643045, 0.0), +(322, 'c-propane ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(323, 'i-butane ', 'water ', 'HV ', 0.52, 0.52, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.52, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.52, 0.52, 0.0), +(325, '2,2-diom C3 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(326, 'c-C4 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(327, 'i-pentane ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(328, 'n-pentane ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(329, 'c-pentane ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(330, '2,2-dim-C4 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(331, '2,3-dimC4 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(332, '2-m-C5 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(333, '3-m-C5 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(334, 'n-hexane ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(335, 'hexane ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(336, 'm-c-C5 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(337, 'benzene ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(338, 'c-hexane ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(339, '223-tm-C4 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(340, '3,3-dim-C5 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(341, 'n-C7 ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(342, 'm-c-C6 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(343, 'et-c-C5 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(344, 'toluene ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(345, 'c-c7 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(346, '11-dm-c-C6 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(347, 'c-c8 ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(348, 'c-12-dmcC6 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(349, 'et-benzene ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(350, 'MDEA+ ', 'water ', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(351, 'H3O+ ', 'water ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(352, 'MDEA ', 'water ', 'HV ', 0.0, 0.0, 0.2131035181, -1460.679072303, 1200.644717087, 0.0, 0.0, 0.0, 'WS ', 0.0, 0.386, -401.57, 803.41, 0.0, 5.8929954883, -7.2400706727, 0.0, 0.0, -0.1492893555, 0.0, 0.0), +(353, 'HCO3- ', 'water ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(354, 'OH- ', 'water ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(355, 'Na+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(356, 'Cl- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(357, 'Ca++ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(358, 'Li+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(359, 'Br- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(360, 'NH4+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(361, 'CO3-- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(362, 'DEACOO- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(363, 'DEA ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(364, 'DEA+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(365, 'BEA ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(366, 'BEA+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(367, 'BEACOO- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(368, 'K+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(369, 'HS- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(370, 'S-- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(371, 'I- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(372, 'Mg++ ', 'water ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(373, 'Ba++ ', 'water ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(374, 'Sr++ ', 'water ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(376, 'methanol ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(377, 'ethanol ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(378, 'MEG ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(379, 'DEG ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(380, 'TEG ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(381, 'NaCl ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(382, 'KCl ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(383, 'CaCl2 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(384, 'HCOONa ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(385, 'HCOOK ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(386, 'HCOOCs ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(387, 'helium ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(388, 'hydrogen ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(389, 'nitrogen ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(390, 'Ar ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(391, 'oxygen ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(393, 'H2S ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(394, 'propane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(395, 'c-propane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(396, 'i-butane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(397, 'n-butane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(398, '2,2-diom C3 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(399, 'c-C4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(400, 'i-pentane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(401, 'n-pentane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(402, 'c-pentane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(403, '2,2-dim-C4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(404, '2,3-dimC4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(405, '2-m-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(406, '3-m-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(407, 'n-hexane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(408, 'hexane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(409, 'm-c-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(410, 'benzene ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(411, 'c-hexane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(412, '223-tm-C4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(413, '3,3-dim-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(414, 'n-C7 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(415, 'm-c-C6 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(416, 'et-c-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(417, 'toluene ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(418, 'c-c7 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(419, '11-dm-c-C6 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(420, 'c-c8 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(421, 'c-12-dmcC6 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(422, 'et-benzene ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(423, 'MDEA+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(424, 'H3O+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(425, 'MDEA ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(426, 'HCO3- ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(427, 'OH- ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(428, 'Na+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(429, 'Cl- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(430, 'Ca++ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(431, 'Li+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(432, 'Br- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(433, 'NH4+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(434, 'CO3-- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(435, 'DEACOO- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(436, 'DEA ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(437, 'DEA+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(438, 'BEA ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(439, 'BEA+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(440, 'BEACOO- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(441, 'K+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(442, 'HS- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(443, 'S-- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(444, 'I- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(445, 'Mg++ ', 'MDEA ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(446, 'Ba++ ', 'MDEA ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(447, 'Sr++ ', 'MDEA ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(449, 'methanol ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(450, 'ethanol ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(451, 'MEG ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(452, 'DEG ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(453, 'TEG ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(454, 'NaCl ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(455, 'KCl ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(456, 'CaCl2 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(457, 'HCOONa ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(458, 'HCOOK ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(459, 'HCOOCs ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(460, 'helium ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(461, 'hydrogen ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(462, 'nitrogen ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(463, 'Ar ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(464, 'oxygen ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(465, 'CO2 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(466, 'H2S ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(467, 'methane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(468, 'ethane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(469, 'propane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(470, 'c-propane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(471, 'i-butane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(472, 'n-butane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(473, '2,2-diom C3 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(474, 'c-C4 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(475, 'i-pentane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(476, 'n-pentane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(477, 'c-pentane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(478, '2,2-dim-C4 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(479, '2,3-dimC4 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(480, '2-m-C5 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(481, '3-m-C5 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(482, 'n-hexane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(483, 'hexane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(484, 'm-c-C5 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(485, 'benzene ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(486, 'c-hexane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(487, '223-tm-C4 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(488, '3,3-dim-C5 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(489, 'n-C7 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(490, 'm-c-C6 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(491, 'et-c-C5 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(492, 'toluene ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(493, 'c-c7 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(494, '11-dm-c-C6 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(495, 'c-c8 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(496, 'c-12-dmcC6 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(497, 'et-benzene ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(498, 'MDEA+ ', 'MDEA+ ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(499, 'H3O+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(500, 'MDEA ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(501, 'HCO3- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(502, 'OH- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(503, 'Na+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(504, 'Cl- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(505, 'Ca++ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(506, 'Li+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(507, 'Br- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(508, 'NH4+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(509, 'CO3-- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(510, 'DEACOO- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(511, 'DEA ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(512, 'DEA+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(513, 'BEA ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(514, 'BEA+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(515, 'BEACOO- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(516, 'K+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(517, 'HS- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(518, 'S-- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(519, 'I- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(520, 'Mg++ ', 'MDEA+ ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(521, 'Ba++ ', 'MDEA+ ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(522, 'Sr++ ', 'MDEA+ ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(524, 'methanol ', 'nitrogen ', 'HV ', 0.5, 0.5, 0.395, 308.0, 364.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(525, 'ethanol ', 'nitrogen ', 'HV ', 0.5, 0.5, 0.395, 308.0, 364.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(526, 'MEG ', 'nitrogen ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(527, 'DEG ', 'nitrogen ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(528, 'TEG ', 'nitrogen ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(529, 'NaCl ', 'nitrogen ', 'HV ', 3.2, 3.2, 0.0105, 94947.0, 1773.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.084, 7623.0, 5281.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(530, 'KCl ', 'nitrogen ', 'HV ', 5.24, 5.24, 0.0078, 41212.0, 2335.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.097, 6733.0, 4007.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.24, 5.24, 0.0), +(531, 'CaCl2 ', 'nitrogen ', 'Classic ', 2.29, 2.29, 0.0174, 80541.0, 2200.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.055, 8790.0, 14765.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29, 2.29, 0.0), +(532, 'HCOONa ', 'nitrogen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(533, 'HCOOK ', 'nitrogen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(534, 'HCOOCs ', 'nitrogen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(535, 'helium ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(536, 'hydrogen ', 'nitrogen ', 'Classic ', 0.0071, 0.0071, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0071, 0.0071, 0.0), +(537, 'nitrogen ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(538, 'Ar ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(539, 'oxygen ', 'nitrogen ', 'Classic ', -0.0078, -0.0078, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0078, -0.0078, 0.0), +(540, 'CO2 ', 'nitrogen ', 'Classic ', -0.0171, -0.019997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(541, 'H2S ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(542, 'methane ', 'nitrogen ', 'Classic ', 0.031199, 0.035999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.02, 0.0), +(543, 'ethane ', 'nitrogen ', 'Classic ', 0.031899, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(544, 'propane ', 'nitrogen ', 'Classic ', 0.0886, 0.079998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(545, 'c-propane ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(546, 'i-butane ', 'nitrogen ', 'Classic ', 0.13150001, 0.094999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(547, 'n-butane ', 'nitrogen ', 'Classic ', 0.0597, 0.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(548, '2,2-diom C3 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(549, 'c-C4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(550, 'i-pentane ', 'nitrogen ', 'Classic ', 0.093, 0.094999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(551, 'n-pentane ', 'nitrogen ', 'Classic ', 0.093598, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(552, 'c-pentane ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(553, '2,2-dim-C4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(554, '2,3-dimC4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(555, '2-m-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(556, '3-m-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(557, 'n-hexane ', 'nitrogen ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(558, 'hexane ', 'nitrogen ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(559, 'm-c-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(560, 'benzene ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(561, 'c-hexane ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(562, '223-tm-C4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(563, '3,3-dim-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(564, 'n-C7 ', 'nitrogen ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(565, 'm-c-C6 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(566, 'et-c-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(567, 'toluene ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(568, 'c-c7 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(569, '11-dm-c-C6 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(570, 'c-c8 ', 'nitrogen ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(571, 'c-12-dmcC6 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(572, 'et-benzene ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(573, 'MDEA+ ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(574, 'H3O+ ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(575, 'MDEA ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(576, 'HCO3- ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(577, 'OH- ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(578, 'Na+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(579, 'Cl- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(580, 'Ca++ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(581, 'Li+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(582, 'Br- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(583, 'NH4+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(584, 'CO3-- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(585, 'DEACOO- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(586, 'DEA ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(587, 'DEA+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(588, 'BEA ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(589, 'BEA+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(590, 'BEACOO- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(591, 'K+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(592, 'HS- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(593, 'S-- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(594, 'I- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(595, 'Mg++ ', 'nitrogen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(596, 'Ba++ ', 'nitrogen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(597, 'Sr++ ', 'nitrogen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(598, 'water ', 'H2S ', 'HV ', 0.03, 0.03, 0.0653, 2579.6, -1082.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.03, 0.0), +(599, 'methanol ', 'H2S ', 'HV ', 0.5, 0.5, 0.395, 965.0, 45.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(600, 'ethanol ', 'H2S ', 'HV ', 0.5, 0.5, 0.395, 965.0, 45.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(601, 'MEG ', 'H2S ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(602, 'DEG ', 'H2S ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(603, 'TEG ', 'H2S ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(604, 'NaCl ', 'H2S ', 'HV ', 0.8, 0.8, -0.1379, 1809.48, 658.64, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.8, 0.0), +(605, 'KCl ', 'H2S ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(606, 'CaCl2 ', 'H2S ', 'HV ', 0.5, 0.5, -0.1872, -1646.0, 1195.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(607, 'HCOONa ', 'H2S ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(608, 'HCOOK ', 'H2S ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(609, 'HCOOCs ', 'H2S ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(610, 'helium ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(611, 'hydrogen ', 'H2S ', 'Classic ', 0.0831, 0.0831, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0831, 0.0831, 0.0), +(612, 'nitrogen ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(613, 'Ar ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(614, 'oxygen ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(615, 'CO2 ', 'H2S ', 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(616, 'H2S ', 'H2S ', 'HV ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(617, 'methane ', 'H2S ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(618, 'ethane ', 'H2S ', 'Classic ', 0.07, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0), +(619, 'propane ', 'H2S ', 'Classic ', 0.07, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0), +(620, 'c-propane ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(621, 'i-butane ', 'H2S ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(622, 'n-butane ', 'H2S ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(623, '2,2-diom C3 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(624, 'c-C4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(625, 'i-pentane ', 'H2S ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(626, 'n-pentane ', 'H2S ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(627, 'c-pentane ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(628, '2,2-dim-C4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(629, '2,3-dimC4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(630, '2-m-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(631, '3-m-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(632, 'n-hexane ', 'H2S ', 'Classic ', 0.05, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05, 0.05, 0.0), +(633, 'hexane ', 'H2S ', 'Classic ', 0.05, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05, 0.05, 0.0), +(634, 'm-c-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(635, 'benzene ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(636, 'c-hexane ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(637, '223-tm-C4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(638, '3,3-dim-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(639, 'n-C7 ', 'H2S ', 'Classic ', 0.04, 0.04, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.04, 0.0), +(640, 'm-c-C6 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(641, 'et-c-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(642, 'toluene ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(643, 'c-c7 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(644, '11-dm-c-C6 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(645, 'c-c8 ', 'H2S ', 'Classic ', 0.04, 0.04, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.04, 0.0), +(646, 'c-12-dmcC6 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(647, 'et-benzene ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(648, 'MDEA+ ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(649, 'H3O+ ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(650, 'MDEA ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(651, 'HCO3- ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(652, 'OH- ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(653, 'Na+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(654, 'Cl- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(655, 'Ca++ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(656, 'Li+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(657, 'Br- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(658, 'NH4+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(659, 'CO3-- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(660, 'DEACOO- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(661, 'DEA ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(662, 'DEA+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(663, 'BEA ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(664, 'BEA+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(665, 'BEACOO- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(666, 'K+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(667, 'HS- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(668, 'S-- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(669, 'I- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(670, 'Mg++ ', 'H2S ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(671, 'Ba++ ', 'H2S ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(672, 'Sr++ ', 'H2S ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(673, 'methanol ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(674, 'ethanol ', 'methanol ', 'Classic ', 0.0504, 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0504, 0.0504, 0.0), +(675, 'MEG ', 'methanol ', 'Classic ', 0.074, 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.074, 0.074, 0.0), +(676, 'DEG ', 'methanol ', 'Classic ', 0.0882, 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0882, 0.0882, 0.0), +(677, 'TEG ', 'methanol ', 'Classic ', 0.1817, 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1817, 0.1817, 0.0), +(678, 'NaCl ', 'methanol ', 'Classic ', 0.1221, 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1221, 0.1221, 0.0), +(679, 'KCl ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(680, 'CaCl2 ', 'methanol ', 'Classic ', 0.2045, 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2045, 0.2045, 0.0), +(681, 'HCOONa ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(682, 'HCOOK ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(683, 'HCOOCs ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(684, 'helium ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(685, 'hydrogen ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(686, 'nitrogen ', 'methanol ', 'HV ', 0.5, 0.5, 0.395, 364.0, 308.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 364.0, 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(687, 'Ar ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(688, 'oxygen ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(690, 'H2S ', 'methanol ', 'HV ', 0.5, 0.5, 0.395, 45.0, 965.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 45.0, 965.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(691, 'methane ', 'methanol ', 'HV ', 0.13, 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 'WS ', 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(692, 'ethane ', 'methanol ', 'HV ', 0.19, 0.19, 0.395, 494.0, 2005.0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 494.0, 2005.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.19, 0.19, 0.0), +(693, 'propane ', 'methanol ', 'HV ', 0.22, 0.22, 0.395, 435.0, 895.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 435.0, 895.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.22, 0.22, 0.0), +(694, 'c-propane ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(695, 'i-butane ', 'methanol ', 'HV ', 0.25, 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(696, 'n-butane ', 'methanol ', 'HV ', 0.25, 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(697, '2,2-diom C3 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(698, 'c-C4 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(699, 'i-pentane ', 'methanol ', 'HV ', 0.26, 0.26, 0.395, 744.0, 1071.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 744.0, 1071.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0), +(700, 'n-pentane ', 'methanol ', 'HV ', 0.26, 0.26, 0.395, 1230.0, 1186.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 1230.0, 1186.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0), +(701, 'c-pentane ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(702, '2,2-dim-C4 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(703, '2,3-dimC4 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(704, '2-m-C5 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(705, '3-m-C5 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(706, 'n-hexane ', 'methanol ', 'HV ', 0.28, 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0), +(707, 'hexane ', 'methanol ', 'HV ', 0.28, 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0), +(708, 'm-c-C5 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(709, 'benzene ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(710, 'c-hexane ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(711, '223-tm-C4 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(712, '3,3-dim-C5 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(713, 'n-C7 ', 'methanol ', 'Classic ', 0.29, 0.29, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'Classic ', 0.29, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.29, 0.29, 0.0), +(714, 'm-c-C6 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(715, 'et-c-C5 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(716, 'toluene ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(717, 'c-c7 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(718, '11-dm-c-C6 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(719, 'c-c8 ', 'methanol ', 'Classic ', 0.31, 0.31, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'Classic ', 0.31, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.31, 0.31, 0.0), +(720, 'c-12-dmcC6 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(721, 'et-benzene ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(722, 'MDEA+ ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(723, 'H3O+ ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(724, 'MDEA ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(725, 'HCO3- ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(726, 'OH- ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(727, 'Na+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(728, 'Cl- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(729, 'Ca++ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(730, 'Li+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(731, 'Br- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(732, 'NH4+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(733, 'CO3-- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(734, 'DEACOO- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(735, 'DEA ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(736, 'DEA+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(737, 'BEA ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(738, 'BEA+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(739, 'BEACOO- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(740, 'K+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(741, 'HS- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(742, 'S-- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(743, 'I- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(744, 'Mg++ ', 'methanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(745, 'Ba++ ', 'methanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(746, 'Sr++ ', 'methanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(747, 'methanol ', 'MEG ', 'Classic ', 0.074, 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.074, 0.074, 0.0), +(748, 'ethanol ', 'MEG ', 'Classic ', 0.1626, 0.1626, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1626, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1626, 0.1626, 0.0), +(749, 'MEG ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(750, 'DEG ', 'MEG ', 'Classic ', 0.0301, 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0301, 0.0301, 0.0), +(751, 'TEG ', 'MEG ', 'Classic ', 0.0059, 0.0059, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0059, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0059, 0.0059, 0.0), +(752, 'NaCl ', 'MEG ', 'Classic ', 0.0588, 0.0588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0588, 0.0588, 0.0), +(753, 'KCl ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(754, 'CaCl2 ', 'MEG ', 'Classic ', 0.0842, 0.0842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0842, 0.0842, 0.0), +(755, 'HCOONa ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(756, 'HCOOK ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(757, 'HCOOCs ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(758, 'helium ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(759, 'hydrogen ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(761, 'Ar ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(762, 'oxygen ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(763, 'CO2 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(764, 'H2S ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(765, 'methane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(766, 'ethane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(767, 'propane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(768, 'c-propane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(769, 'i-butane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(770, 'n-butane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(771, '2,2-diom C3 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(772, 'c-C4 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(773, 'i-pentane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(774, 'n-pentane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(775, 'c-pentane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(776, '2,2-dim-C4 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(777, '2,3-dimC4 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(778, '2-m-C5 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(779, '3-m-C5 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(780, 'n-hexane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(781, 'hexane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(782, 'm-c-C5 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(783, 'benzene ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(784, 'c-hexane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(785, '223-tm-C4 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(786, '3,3-dim-C5 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(787, 'n-C7 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(788, 'm-c-C6 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(789, 'et-c-C5 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(790, 'toluene ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(791, 'c-c7 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(792, '11-dm-c-C6 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(793, 'c-c8 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(794, 'c-12-dmcC6 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(795, 'et-benzene ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(796, 'MDEA+ ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(797, 'H3O+ ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(798, 'MDEA ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(799, 'HCO3- ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(800, 'OH- ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(801, 'Na+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(802, 'Cl- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(803, 'Ca++ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(804, 'Li+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(805, 'Br- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(806, 'NH4+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(807, 'CO3-- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(808, 'DEACOO- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(809, 'DEA ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(810, 'DEA+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(811, 'BEA ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(812, 'BEA+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(813, 'BEACOO- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(814, 'K+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(815, 'HS- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(816, 'S-- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(817, 'I- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(818, 'Mg++ ', 'MEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(819, 'Ba++ ', 'MEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(820, 'Sr++ ', 'MEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(821, 'methanol ', 'TEG ', 'Classic ', 0.1817, 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1817, 0.1817, 0.0), +(822, 'ethanol ', 'TEG ', 'Classic ', 0.2876, 0.2876, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1626, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2876, 0.2876, 0.0), +(823, 'MEG ', 'TEG ', 'Classic ', 0.0059, 0.0059, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0059, 0.0059, 0.0), +(824, 'DEG ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(825, 'TEG ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(826, 'NaCl ', 'TEG ', 'Classic ', 0.365, 0.365, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.365, 0.365, 0.0), +(827, 'KCl ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(828, 'CaCl2 ', 'TEG ', 'HV ', 0.13, 0.13, -3.054, 352.3, 206.9, 0.0, 0.0, 0.0, 'Classic ', 0.0842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(829, 'HCOONa ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(830, 'HCOOK ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(831, 'HCOOCs ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(832, 'helium ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(833, 'hydrogen ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(834, 'nitrogen ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(835, 'Ar ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(836, 'oxygen ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(837, 'CO2 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(838, 'H2S ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(839, 'methane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(840, 'ethane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(841, 'propane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(842, 'c-propane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(843, 'i-butane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(844, 'n-butane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(845, '2,2-diom C3 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(846, 'c-C4 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(847, 'i-pentane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(848, 'n-pentane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(849, 'c-pentane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(850, '2,2-dim-C4 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(851, '2,3-dimC4 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(852, '2-m-C5 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(853, '3-m-C5 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(854, 'n-hexane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(855, 'hexane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(856, 'm-c-C5 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(857, 'benzene ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(858, 'c-hexane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(859, '223-tm-C4 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(860, '3,3-dim-C5 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(861, 'n-C7 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(862, 'm-c-C6 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(863, 'et-c-C5 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(864, 'toluene ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(865, 'c-c7 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(866, '11-dm-c-C6 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(867, 'c-c8 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(868, 'c-12-dmcC6 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(869, 'et-benzene ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(870, 'MDEA+ ', 'TEG ', 'HV ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(871, 'H3O+ ', 'TEG ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(872, 'MDEA ', 'TEG ', 'HV ', 0.0, 0.0, 0.386, -1124.83, 763.56, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(873, 'HCO3- ', 'TEG ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(874, 'OH- ', 'TEG ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(875, 'Na+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(876, 'Cl- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(877, 'Ca++ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(878, 'Li+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(879, 'Br- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(880, 'NH4+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(881, 'CO3-- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(882, 'DEACOO- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(883, 'DEA ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(884, 'DEA+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(885, 'BEA ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(886, 'BEA+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(887, 'BEACOO- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(888, 'K+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(889, 'HS- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(890, 'S-- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(891, 'I- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(892, 'Mg++ ', 'TEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(893, 'Ba++ ', 'TEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(894, 'Sr++ ', 'TEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(895, 'water ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.122, 2467.0, 274.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(896, 'methanol ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(897, 'ethanol ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(898, 'MEG ', 'oxygen ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(899, 'DEG ', 'oxygen ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(900, 'TEG ', 'oxygen ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(901, 'NaCl ', 'oxygen ', 'Classic ', 0.8, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.084, 7623.0, 5281.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.8, 0.0), +(902, 'KCl ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.097, 6733.0, 4007.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(903, 'CaCl2 ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.055, 8790.0, 14765.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(904, 'HCOONa ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(905, 'HCOOK ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(906, 'HCOOCs ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(907, 'helium ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(908, 'hydrogen ', 'oxygen ', 'Classic ', 0.0079, 0.0079, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0079, 0.0079, 0.0), +(909, 'nitrogen ', 'oxygen ', 'Classic ', -0.0078, -0.0078, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0078, -0.0078, 0.0), +(910, 'Ar ', 'oxygen ', 'Classic ', 0.0178, 0.0178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0178, 0.0178, 0.0), +(911, 'oxygen ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(912, 'CO2 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(913, 'H2S ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(914, 'methane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(915, 'ethane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(916, 'propane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(917, 'c-propane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(918, 'i-butane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(919, 'n-butane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(920, '2,2-diom C3 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(921, 'c-C4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(922, 'i-pentane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(923, 'n-pentane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(924, 'c-pentane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(925, '2,2-dim-C4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(926, '2,3-dimC4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(927, '2-m-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(928, '3-m-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(929, 'n-hexane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(930, 'hexane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(931, 'm-c-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(932, 'benzene ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(933, 'c-hexane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(934, '223-tm-C4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(935, '3,3-dim-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(936, 'n-C7 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(937, 'm-c-C6 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(938, 'et-c-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(939, 'toluene ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(940, 'c-c7 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(941, '11-dm-c-C6 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(942, 'c-c8 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(943, 'c-12-dmcC6 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(944, 'et-benzene ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(945, 'MDEA+ ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(946, 'H3O+ ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(947, 'MDEA ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(948, 'HCO3- ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(949, 'OH- ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(950, 'Na+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(951, 'Cl- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(952, 'Ca++ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(953, 'Li+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(954, 'Br- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(955, 'NH4+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(956, 'CO3-- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(957, 'DEACOO- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(958, 'DEA ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(959, 'DEA+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(960, 'BEA ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(961, 'BEA+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(962, 'BEACOO- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(963, 'K+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(964, 'HS- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(965, 'S-- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(966, 'I- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(967, 'Mg++ ', 'oxygen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(968, 'Ba++ ', 'oxygen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(969, 'Sr++ ', 'oxygen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(970, 'water ', 'n-butane ', 'HV ', 0.52, 0.52, 0.12, -567.8, 3181.0, 0.0, 0.0, 0.0, 'WS ', 0.53, 0.122, 2467.0, 274.0, 0.0, 1.97, -1.93, 0.0, 0.0, 0.52, 0.52, 0.0), +(971, 'methanol ', 'n-butane ', 'HV ', 0.25, 0.25, 0.395, 1135.0, 1603.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(972, 'ethanol ', 'n-butane ', 'HV ', 0.25, 0.25, 0.395, 1135.0, 1603.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(973, 'MEG ', 'n-butane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(974, 'DEG ', 'n-butane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(975, 'TEG ', 'n-butane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(976, 'NaCl ', 'n-butane ', 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 'Classic ', 0.72, 0.0592, 10539.0, 4777.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.7, 0.0), +(977, 'KCl ', 'n-butane ', 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 'Classic ', 1.36, 0.0441, 60604.0, 7490.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.35, 1.35, 0.0), +(978, 'CaCl2 ', 'n-butane ', 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.18, 1.18, 0.0), +(979, 'HCOONa ', 'n-butane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(980, 'HCOOK ', 'n-butane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(981, 'HCOOCs ', 'n-butane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(982, 'helium ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(983, 'hydrogen ', 'n-butane ', 'Classic ', 0.1446, 0.1446, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1446, 0.1446, 0.0), +(984, 'nitrogen ', 'n-butane ', 'Classic ', 0.0597, 0.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(985, 'Ar ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(986, 'oxygen ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(987, 'CO2 ', 'n-butane ', 'Classic ', 0.14120001, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(988, 'H2S ', 'n-butane ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(989, 'methane ', 'n-butane ', 'Classic ', 0.01289789, 0.01289789, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(990, 'ethane ', 'n-butane ', 'Classic ', 0.00464288, 0.00464288, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(991, 'propane ', 'n-butane ', 'Classic ', 0.00132268, 0.00132268, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(992, 'c-propane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(993, 'i-butane ', 'n-butane ', 'Classic ', 4.7251E-4, 4.7251E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(994, 'n-butane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(995, '2,2-diom C3 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(996, 'c-C4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(997, 'i-pentane ', 'n-butane ', 'Classic ', 9.2632E-4, 9.2632E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(998, 'n-pentane ', 'n-butane ', 'Classic ', 9.7665E-4, 9.7665E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(999, 'c-pentane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1000, '2,2-dim-C4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1001, '2,3-dimC4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1002, '2-m-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1003, '3-m-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1004, 'n-hexane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1005, 'hexane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1006, 'm-c-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1007, 'benzene ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1008, 'c-hexane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1009, '223-tm-C4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1010, '3,3-dim-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1011, 'n-C7 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1012, 'm-c-C6 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1013, 'et-c-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1014, 'toluene ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1015, 'c-c7 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1016, '11-dm-c-C6 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1017, 'c-c8 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1018, 'c-12-dmcC6 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1019, 'et-benzene ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1020, 'MDEA+ ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1021, 'H3O+ ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1022, 'MDEA ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1023, 'HCO3- ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1024, 'OH- ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1025, 'Na+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1026, 'Cl- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1027, 'Ca++ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1028, 'Li+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1029, 'Br- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1030, 'NH4+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1031, 'CO3-- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1032, 'DEACOO- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1033, 'DEA ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1034, 'DEA+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1035, 'BEA ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1036, 'BEA+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1037, 'BEACOO- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1038, 'K+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1039, 'HS- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1040, 'S-- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1041, 'I- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1042, 'Mg++ ', 'n-butane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1043, 'Ba++ ', 'n-butane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1044, 'Sr++ ', 'n-butane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1046, 'methanol ', 'ethanol ', 'Classic ', 0.0504, 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0504, 0.0504, 0.0), +(1047, 'ethanol ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1048, 'MEG ', 'ethanol ', 'Classic ', 0.074, 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.074, 0.074, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1049, 'DEG ', 'ethanol ', 'Classic ', 0.0882, 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0882, 0.0882, 0.0), +(1050, 'TEG ', 'ethanol ', 'Classic ', 0.1817, 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1817, 0.1817, 0.0), +(1051, 'NaCl ', 'ethanol ', 'Classic ', 0.1221, 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1221, 0.1221, 0.0), +(1052, 'KCl ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1053, 'CaCl2 ', 'ethanol ', 'Classic ', 0.2045, 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2045, 0.2045, 0.0), +(1054, 'HCOONa ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1055, 'HCOOK ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1056, 'HCOOCs ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1057, 'helium ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1058, 'hydrogen ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1059, 'nitrogen ', 'ethanol ', 'HV ', 0.5, 0.5, 0.395, 364.0, 308.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 364.0, 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1060, 'Ar ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1061, 'oxygen ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1062, 'CO2 ', 'ethanol ', 'HV ', 0.5, 0.5, 0.395, 276.0, 3307.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 276.0, 3307.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1063, 'H2S ', 'ethanol ', 'HV ', 0.5, 0.5, 0.395, 45.0, 965.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 45.0, 965.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1064, 'methane ', 'ethanol ', 'HV ', 0.13, 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 'WS ', 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(1065, 'ethane ', 'ethanol ', 'HV ', 0.19, 0.19, 0.395, 494.0, 2005.0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 494.0, 2005.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.19, 0.19, 0.0), +(1066, 'propane ', 'ethanol ', 'HV ', 0.22, 0.22, 0.395, 435.0, 895.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 435.0, 895.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.22, 0.22, 0.0), +(1067, 'c-propane ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1068, 'i-butane ', 'ethanol ', 'HV ', 0.25, 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(1069, 'n-butane ', 'ethanol ', 'HV ', 0.25, 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(1070, '2,2-diom C3 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1071, 'c-C4 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1072, 'i-pentane ', 'ethanol ', 'HV ', 0.26, 0.26, 0.395, 744.0, 1071.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 744.0, 1071.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1073, 'n-pentane ', 'ethanol ', 'HV ', 0.26, 0.26, 0.395, 1230.0, 1186.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 1230.0, 1186.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0), +(1074, 'c-pentane ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1075, '2,2-dim-C4 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1076, '2,3-dimC4 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1077, '2-m-C5 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1078, '3-m-C5 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1079, 'n-hexane ', 'ethanol ', 'HV ', 0.28, 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0), +(1080, 'hexane ', 'ethanol ', 'HV ', 0.28, 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0), +(1081, 'm-c-C5 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1082, 'benzene ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1083, 'c-hexane ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1084, '223-tm-C4 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1085, '3,3-dim-C5 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1086, 'n-C7 ', 'ethanol ', 'Classic ', 0.29, 0.29, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'Classic ', 0.29, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.29, 0.29, 0.0), +(1087, 'm-c-C6 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1088, 'et-c-C5 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1089, 'toluene ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1090, 'c-c7 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1091, '11-dm-c-C6 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1092, 'c-c8 ', 'ethanol ', 'Classic ', 0.31, 0.31, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'Classic ', 0.31, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.31, 0.31, 0.0), +(1093, 'c-12-dmcC6 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1094, 'et-benzene ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1095, 'MDEA+ ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1096, 'H3O+ ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1097, 'MDEA ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1098, 'HCO3- ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1099, 'OH- ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1100, 'Na+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1101, 'Cl- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1102, 'Ca++ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1103, 'Li+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1104, 'Br- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1105, 'NH4+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1106, 'CO3-- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1107, 'DEACOO- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1108, 'DEA ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1109, 'DEA+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1110, 'BEA ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1111, 'BEA+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1112, 'BEACOO- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1113, 'K+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1114, 'HS- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1115, 'S-- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1116, 'I- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1117, 'Mg++ ', 'ethanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1118, 'Ba++ ', 'ethanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1119, 'Sr++ ', 'ethanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1120, 'water ', 'n-pentane ', 'HV ', 0.5, 0.5, 0.145, 2507.0, 681.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.5, 0.145, 2507.0, 681.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1121, 'methanol ', 'n-pentane ', 'HV ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0), +(1122, 'ethanol ', 'n-pentane ', 'HV ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0), +(1123, 'MEG ', 'n-pentane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(1124, 'DEG ', 'n-pentane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(1125, 'TEG ', 'n-pentane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(1126, 'NaCl ', 'n-pentane ', 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.7, 0.0), +(1127, 'KCl ', 'n-pentane ', 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 0.0, 1.35, 1.35, 0.0), +(1128, 'CaCl2 ', 'n-pentane ', 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 1.18, 1.18, 0.0), +(1129, 'HCOONa ', 'n-pentane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1130, 'HCOOK ', 'n-pentane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1131, 'HCOOCs ', 'n-pentane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1132, 'helium ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1133, 'hydrogen ', 'n-pentane ', 'Classic ', 0.2166, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2166, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2166, 0.2166, 0.0), +(1134, 'nitrogen ', 'n-pentane ', 'Classic ', 0.0597, 0.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(1135, 'Ar ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1136, 'oxygen ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1137, 'CO2 ', 'n-pentane ', 'Classic ', 0.1347, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(1138, 'H2S ', 'n-pentane ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(1139, 'methane ', 'n-pentane ', 'Classic ', 0.01847102, 0.01847102, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1140, 'ethane ', 'n-pentane ', 'Classic ', 0.00811359, 0.00811359, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1141, 'propane ', 'n-pentane ', 'Classic ', 0.00316586, 0.00316586, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1142, 'c-propane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1143, 'i-butane ', 'n-pentane ', 'Classic ', 8.1462E-4, 8.1462E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1144, 'n-butane ', 'n-pentane ', 'Classic ', 9.7665E-4, 9.7665E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1145, '2,2-diom C3 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1146, 'c-C4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1147, 'i-pentane ', 'n-pentane ', 'Classic ', 3.9999E-4, 3.9999E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1148, 'n-pentane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1149, 'c-pentane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1150, '2,2-dim-C4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1151, '2,3-dimC4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1152, '2-m-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1153, '3-m-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1154, 'n-hexane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1155, 'hexane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1156, 'm-c-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1157, 'benzene ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1158, 'c-hexane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1159, '223-tm-C4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1160, '3,3-dim-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1161, 'n-C7 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1162, 'm-c-C6 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1163, 'et-c-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1164, 'toluene ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1165, 'c-c7 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1166, '11-dm-c-C6 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1167, 'c-c8 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1168, 'c-12-dmcC6 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1169, 'et-benzene ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1170, 'MDEA+ ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1171, 'H3O+ ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1172, 'MDEA ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1173, 'HCO3- ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1174, 'OH- ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1175, 'Na+ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1176, 'Cl- ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1177, 'Ca++ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1178, 'Li+ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1179, 'Br- ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1180, 'NH4+ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1181, 'CO3-- ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1182, 'DEACOO- ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1183, 'DEA ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1184, 'DEA+ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1185, 'BEA ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1186, 'BEA+ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1187, 'BEACOO- ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1188, 'water ', 'n-heptane', 'HV ', 0.5, 0.5, 0.145, 2507.0, 681.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.5, 0.145, 2507.0, 681.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1189, 'methanol ', 'n-heptane', 'HV ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1190, 'ethanol ', 'n-heptane', 'HV ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1191, 'MEG ', 'n-heptane', 'Classic', 0.2, 0.08, 0.39867, 4938.4, -1924.0, 0.0, 0.0, 0.0, 'WS', -0.393091937413432, 0.39867, 4938.0, 1924.3, 601.7, 0.76, -7.79, -7.9586, 0.76, 0.0555761258, 0.047, 0.0), +(1192, 'DEG ', 'n-heptane', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.065, 0.065, 0.0), +(1193, 'TEG ', 'n-heptane', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.094, 0.094, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1194, 'NaCl ', 'n-heptane', 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1195, 'KCl ', 'n-heptane', 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1196, 'CaCl2 ', 'n-heptane', 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1197, 'HCOONa ', 'n-heptane', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1198, 'HCOOK ', 'n-heptane', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1199, 'HCOOCs ', 'n-heptane', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1200, 'helium ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1201, 'hydrogen ', 'n-heptane', 'Classic ', 0.2166, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2166, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1202, 'nitrogen ', 'n-heptane', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1203, 'Ar ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1204, 'oxygen ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1205, 'CO2 ', 'n-heptane', 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1206, 'H2S ', 'n-heptane', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1207, 'methane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1208, 'ethane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1209, 'propane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1210, 'c-propane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1211, 'i-butane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1212, 'n-butane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1213, '2,2-diom C3 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1214, 'c-C4 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1215, 'i-pentane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1216, 'n-pentane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1217, 'c-pentane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1218, '2,2-dim-C4 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1219, '2,3-dimC4 ', 'n-heptane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1220, '2-m-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1221, '3-m-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1222, 'n-hexane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1223, 'hexane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1224, 'm-c-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1225, 'benzene ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1226, 'c-hexane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1227, '223-tm-C4 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1228, '3,3-dim-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1229, 'n-C7 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1230, 'm-c-C6 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1231, 'et-c-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1232, 'toluene ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1233, 'c-c7 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1234, '11-dm-c-C6 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1235, 'c-c8 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1236, 'c-12-dmcC6 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1237, 'et-benzene ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1238, 'MDEA+ ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1239, 'H3O+ ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1240, 'MDEA ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1241, 'HCO3- ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1242, 'OH- ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1243, 'Na+ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1244, 'Cl- ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1245, 'Ca++ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1246, 'Li+ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1247, 'Br- ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1248, 'NH4+ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1249, 'CO3-- ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER1(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1250, 'DEACOO- ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1251, 'DEA ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1252, 'DEA+ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1253, 'BEA ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1254, 'BEA+ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1255, 'BEACOO- ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1260, 'S8', 'methane ', 'Classic', 0.05, 0.05, 0.15, -123.6011438188, 4875.0942356587, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.5496550381, 0.0, 0.0, 0.0459393339, 0.1611996305, 0.0), +(1261, 'argon', 'methane', 'Classic', 0.01, 0.05, 0.15, -123.6011438188, 4875.0942356587, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.5496550381, 0.0, 0.0, 0.0459393339, 0.1611996305, 0.0), +(1262, 'nitrogen', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1263, 'CO2', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1264, 'methane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1265, 'ethane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1266, 'propane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1267, 'n-butane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1268, 'i-butane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1269, 'n-pentane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1270, 'i-pentane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.INTER2( + ID INT NOT NULL, + COMP1 VARCHAR(255) DEFAULT NULL, + COMP2 VARCHAR(255) DEFAULT NULL, + HVTYPE VARCHAR(255) DEFAULT NULL, + KIJSRK DOUBLE DEFAULT NULL, + KIJPR DOUBLE DEFAULT NULL, + HVALPHA DOUBLE DEFAULT NULL, + HVGIJ DOUBLE DEFAULT NULL, + HVGJI DOUBLE DEFAULT NULL, + W1 DOUBLE DEFAULT NULL, + W2 DOUBLE DEFAULT NULL, + W3 DOUBLE DEFAULT NULL, + WSTYPE VARCHAR(255) DEFAULT NULL, + KIJWS DOUBLE DEFAULT NULL, + NRTLALPHA DOUBLE DEFAULT NULL, + NRTLGIJ DOUBLE DEFAULT NULL, + NRTLGJI DOUBLE DEFAULT NULL, + GIJVISC DOUBLE DEFAULT NULL, + HVGIJT DOUBLE DEFAULT NULL, + HVGJIT DOUBLE DEFAULT NULL, + WSGIJT DOUBLE DEFAULT NULL, + WSGJIT DOUBLE DEFAULT NULL, + "cpakij-SRK" DOUBLE DEFAULT NULL, + "cpakij-PR" DOUBLE DEFAULT '0', + KIJWSUNIFAC DOUBLE DEFAULT NULL +); +ALTER TABLE PUBLIC.INTER2 ADD CONSTRAINT PUBLIC.CONSTRAINT_810 PRIMARY KEY(ID); +-- 1267 +/- SELECT COUNT(*) FROM PUBLIC.INTER2; +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1, 'water ', 'methane ', 'HV ', 0.45, 0.45, 0.15, -123.6011438188, 4875.0942356587, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.5496550381, 0.0, 0.0, 0.0459393339, 0.1611996305, 0.0), +(2, 'methanol ', 'methane ', 'HV ', 0.13, 0.13, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 646.5, -2.056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(3, 'ethanol ', 'methane ', 'HV ', 0.13, 0.13, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 521.5, -2.056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(4, 'MEG ', 'methane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(5, 'DEG ', 'methane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(6, 'TEG ', 'methane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, -328.6, -2.056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(7, 'NaCl ', 'methane ', 'HV ', 2.02, 2.02, 0.084, 7623.0, 5281.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 7623.0, 5281.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02, 2.02, 0.0), +(8, 'KCl ', 'methane ', 'Classic ', 1.64, 1.64, 0.097, 6733.0, 4007.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 6733.0, 4007.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64, 1.64, 0.0), +(9, 'CaCl2 ', 'methane ', 'HV ', 2.07, 2.07, 0.055, 8790.0, 14765.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 8790.0, 14765.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.07, 2.07, 0.0), +(10, 'HCOONa ', 'methane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(11, 'HCOOK ', 'methane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(12, 'HCOOCs ', 'methane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(13, 'helium ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(14, 'hydrogen ', 'methane ', 'Classic ', 0.01, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.01, 0.0), +(15, 'nitrogen ', 'methane ', 'Classic ', 0.031199, 0.03599, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.02, 0.0), +(16, 'Ar ', 'methane ', 'Classic ', 0.0252, 0.0252, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0252, 0.0252, 0.0), +(17, 'oxygen ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, 'CO2 ', 'methane ', 'Classic ', 0.0956, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.141215983, -0.141215983, 0.0), +(19, 'H2S ', 'methane ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(20, 'methane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(21, 'ethane ', 'methane ', 'Classic ', 0.00295295, 0.00295295, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(22, 'propane ', 'methane ', 'Classic ', 0.00747722, 0.00747722, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 'c-propane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, 'i-butane ', 'methane ', 'Classic ', 0.01369935, 0.01369935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(25, 'n-butane ', 'methane ', 'Classic ', 0.01289789, 0.01289789, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, '2,2-diom C3 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 'c-C4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 'i-pentane ', 'methane ', 'Classic ', 0.01817552, 0.01817552, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 'n-pentane ', 'methane ', 'Classic ', 0.01847102, 0.01847102, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 'c-pentane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, '2,2-dim-C4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, '2,3-dimC4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(33, '2-m-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, '3-m-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 'n-hexane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 'hexane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(37, 'm-c-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 'benzene ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 'c-hexane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, '223-tm-C4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(41, '3,3-dim-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 'n-C7 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 'm-c-C6 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(44, 'et-c-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(45, 'toluene ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 'c-c7 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, '11-dm-c-C6 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 'c-c8 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(49, 'c-12-dmcC6 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(50, 'et-benzene ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 'MDEA+ ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(52, 'H3O+ ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 'MDEA ', 'methane ', 'Classic', 0.6465043774, 0.6465043774, 0.122, 2467.0, 274.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.646504377, 0.646504377, 0.0), +(54, 'HCO3- ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(55, 'OH- ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(56, 'Na+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(57, 'Cl- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(58, 'Ca++ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(59, 'Li+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(60, 'Br- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(61, 'NH4+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(62, 'CO3-- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(63, 'DEACOO- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(64, 'DEA ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(65, 'DEA+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(66, 'BEA ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(67, 'BEA+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(68, 'BEACOO- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(69, 'K+ ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(70, 'HS- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(71, 'S-- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(72, 'I- ', 'methane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(73, 'Mg++ ', 'methane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(74, 'Ba++ ', 'methane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(75, 'Sr++ ', 'methane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(77, 'methanol ', 'ethane ', 'HV ', 0.19, 0.19, 0.395, 2005.0, 494.0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 2005.0, 494.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.19, 0.19, 0.0), +(78, 'ethanol ', 'ethane ', 'HV ', 0.19, 0.19, 0.395, 2005.0, 494.0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 2005.0, 494.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.19, 0.19, 0.0), +(79, 'MEG ', 'ethane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(80, 'DEG ', 'ethane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(81, 'TEG ', 'ethane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(82, 'NaCl ', 'ethane ', 'Classic ', 0.78, 0.78, 0.062, 12235.0, 4227.0, 0.0, 0.0, 0.0, 'Classic ', 0.78, 0.062, 12235.0, 4227.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.78, 0.78, 0.0), +(83, 'KCl ', 'ethane ', 'Classic ', 1.33, 1.33, 0.021, 24788.0, 50127.0, 0.0, 0.0, 0.0, 'Classic ', 1.33, 0.021, 24788.0, 50127.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33, 1.33, 0.0), +(84, 'CaCl2 ', 'ethane ', 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.18, 1.18, 0.0), +(85, 'HCOONa ', 'ethane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(86, 'HCOOK ', 'ethane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(87, 'HCOOCs ', 'ethane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(88, 'helium ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(89, 'hydrogen ', 'ethane ', 'Classic ', 0.0367, 0.0367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0367, 0.0367, 0.0), +(90, 'nitrogen ', 'ethane ', 'Classic ', 0.031899, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(91, 'Ar ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(92, 'oxygen ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(93, 'CO2 ', 'ethane ', 'Classic ', 0.1401, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(94, 'H2S ', 'ethane ', 'Classic ', 0.07, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0), +(96, 'ethane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(97, 'propane ', 'ethane ', 'Classic ', 0.00185286, 0.00185286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(98, 'c-propane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(99, 'i-butane ', 'ethane ', 'Classic ', 0.00511365, 0.00511365, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(100, 'n-butane ', 'ethane ', 'Classic ', 0.00464288, 0.00464288, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(101, '2,2-diom C3 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(102, 'c-C4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(103, 'i-pentane ', 'ethane ', 'Classic ', 0.00791956, 0.00791956, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(104, 'n-pentane ', 'ethane ', 'Classic ', 0.00811359, 0.00811359, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(105, 'c-pentane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(106, '2,2-dim-C4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(107, '2,3-dimC4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(108, '2-m-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(109, '3-m-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(110, 'n-hexane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(111, 'hexane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(112, 'm-c-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(113, 'benzene ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(114, 'c-hexane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(115, '223-tm-C4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(116, '3,3-dim-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(117, 'n-C7 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(118, 'm-c-C6 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(119, 'et-c-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(120, 'toluene ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(121, 'c-c7 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(122, '11-dm-c-C6 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(123, 'c-c8 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(124, 'c-12-dmcC6 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(125, 'et-benzene ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(126, 'MDEA+ ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(127, 'H3O+ ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(128, 'MDEA ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(129, 'HCO3- ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(130, 'OH- ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(131, 'Na+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(132, 'Cl- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(133, 'Ca++ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(134, 'Li+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(135, 'Br- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(136, 'NH4+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(137, 'CO3-- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(138, 'DEACOO- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(139, 'DEA ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(140, 'DEA+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(141, 'BEA ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(142, 'BEA+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(143, 'BEACOO- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(144, 'K+ ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(145, 'HS- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(146, 'S-- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(147, 'I- ', 'ethane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(148, 'Mg++ ', 'ethane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(149, 'Ba++ ', 'ethane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(150, 'Sr++ ', 'ethane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(152, 'methanol ', 'CO2 ', 'HV', 0.0148, 0.023, 0.68, -92.26, -546.3, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 3307.0, 276.0, 0.0, 0.97, 5.0, 0.0, 0.0, 0.0148, 0.0148, 0.0), +(153, 'ethanol ', 'CO2 ', 'HV', 0.5, 0.5, 0.395, 3307.0, 276.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 3307.0, 276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(154, 'MEG ', 'CO2 ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(155, 'DEG ', 'CO2 ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(156, 'TEG ', 'CO2 ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(157, 'NaCl ', 'CO2 ', 'HV ', 2.1, 2.1, -0.007, 0.07, 3087.0, 0.0, 0.0, 0.0, 'WS ', 2.1, -0.007, 0.07, 3087.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1, 2.1, 0.0), +(158, 'KCl ', 'CO2 ', 'HV ', 1.79, 1.79, -0.1218, 1865.0, 1137.0, 0.0, 0.0, 0.0, 'WS ', 1.79, -0.1218, 1865.0, 1137.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.79, 1.79, 0.0), +(159, 'CaCl2 ', 'CO2 ', 'HV ', 2.23, 2.23, -0.111, 628.0, 1721.0, 0.0, 0.0, 0.0, 'WS ', 2.23, -0.111, 628.0, 1721.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.23, 2.23, 0.0), +(160, 'HCOONa ', 'CO2 ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(161, 'HCOOK ', 'CO2 ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(162, 'HCOOCs ', 'CO2 ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(163, 'helium ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(164, 'hydrogen ', 'CO2 ', 'Classic ', 0.0362, 0.0362, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0362, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0362, 0.0362, 0.0), +(165, 'nitrogen ', 'CO2 ', 'Classic ', -0.0171, -0.019997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(166, 'Ar ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(167, 'oxygen ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(168, 'CO2 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(169, 'H2S ', 'CO2 ', 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(171, 'ethane ', 'CO2 ', 'Classic ', 0.1401, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(172, 'propane ', 'CO2 ', 'Classic ', 0.13680001, 0.13500001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(173, 'c-propane ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(174, 'i-butane ', 'CO2 ', 'Classic ', 0.13680001, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(175, 'n-butane ', 'CO2 ', 'Classic ', 0.14120001, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(176, '2,2-diom C3 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(177, 'c-C4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(178, 'i-pentane ', 'CO2 ', 'Classic ', 0.12970001, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(179, 'n-pentane ', 'CO2 ', 'Classic ', 0.1347, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(180, 'c-pentane ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(181, '2,2-dim-C4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(182, '2,3-dimC4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(183, '2-m-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(184, '3-m-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(185, 'n-hexane ', 'CO2 ', 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(186, 'hexane ', 'CO2 ', 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(187, 'm-c-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(188, 'benzene ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(189, 'c-hexane ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(190, '223-tm-C4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(191, '3,3-dim-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(192, 'n-C7 ', 'CO2 ', 'Classic ', 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0), +(193, 'm-c-C6 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(194, 'et-c-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(195, 'toluene ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(196, 'c-c7 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(197, '11-dm-c-C6 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(198, 'c-c8 ', 'CO2 ', 'Classic ', 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0), +(199, 'c-12-dmcC6 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(200, 'et-benzene ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(201, 'MDEA+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(202, 'H3O+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(203, 'MDEA ', 'CO2 ', 'HV ', 0.1, 0.1, 0.239, -2753.7379912645, 3204.3057406886, 0.0, 0.0, 0.0, 'WS ', 1.6, 0.3, -713.0, -393.0, 0.0, 13.0150379323, -12.4728330162, 3.96, 0.96, 0.0, 0.0, 0.0), +(204, 'HCO3- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(205, 'OH- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(206, 'Na+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(207, 'Cl- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(208, 'Ca++ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(209, 'Li+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(210, 'Br- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(211, 'NH4+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(212, 'CO3-- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(213, 'DEACOO- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(214, 'DEA ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(215, 'DEA+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(216, 'BEA ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(217, 'BEA+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(218, 'BEACOO- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(219, 'K+ ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(220, 'HS- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(221, 'S-- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(222, 'I- ', 'CO2 ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(223, 'Mg++ ', 'CO2 ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(224, 'Ba++ ', 'CO2 ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(225, 'Sr++ ', 'CO2 ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(226, 'water ', 'propane ', 'HV ', 0.53, 0.53, 0.07, -1584.0, 3517.0, 0.0, 0.0, 0.0, 'WS ', 0.53, 0.122, 2467.0, 274.0, 0.0, -0.44, -0.1, 0.0, 0.0, 0.055112588, 0.13287685, 0.0), +(227, 'methanol ', 'propane ', 'HV ', 0.22, 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.22, 0.22, 0.0), +(228, 'ethanol ', 'propane ', 'HV ', 0.22, 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.22, 0.22, 0.0), +(229, 'MEG ', 'propane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(230, 'DEG ', 'propane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(231, 'TEG ', 'propane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(232, 'NaCl ', 'propane ', 'Classic ', 0.72, 0.72, 0.0592, 10539.0, 4777.0, 0.0, 0.0, 0.0, 'Classic ', 0.72, 0.0592, 10539.0, 4777.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.72, 0.72, 0.0), +(233, 'KCl ', 'propane ', 'Classic ', 1.36, 1.36, 0.0441, 60604.0, 7490.0, 0.0, 0.0, 0.0, 'Classic ', 1.36, 0.0441, 60604.0, 7490.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.36, 1.36, 0.0), +(234, 'CaCl2 ', 'propane ', 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.18, 1.18, 0.0), +(235, 'HCOONa ', 'propane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(236, 'HCOOK ', 'propane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(237, 'HCOOCs ', 'propane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(238, 'helium ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(239, 'hydrogen ', 'propane ', 'Classic ', 0.0799, 0.0799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0799, 0.0799, 0.0), +(240, 'nitrogen ', 'propane ', 'Classic ', 0.0886, 0.079998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(241, 'Ar ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(242, 'oxygen ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(243, 'CO2 ', 'propane ', 'Classic ', 0.13680001, 0.13500001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(244, 'H2S ', 'propane ', 'Classic ', 0.07, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0), +(245, 'methane ', 'propane ', 'Classic ', 0.00747722, 0.00747722, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(246, 'ethane ', 'propane ', 'Classic ', 0.00185286, 0.00185286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(247, 'propane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(248, 'c-propane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(249, 'i-butane ', 'propane ', 'Classic ', 0.00153851, 0.00153851, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(250, 'n-butane ', 'propane ', 'Classic ', 0.00132268, 0.00132268, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(251, '2,2-diom C3 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(252, 'c-C4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(253, 'i-pentane ', 'propane ', 'Classic ', 0.00305075, 0.00305075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(254, 'n-pentane ', 'propane ', 'Classic ', 0.00316586, 0.00316586, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(255, 'c-pentane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(256, '2,2-dim-C4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(257, '2,3-dimC4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(258, '2-m-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(259, '3-m-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(260, 'n-hexane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(261, 'hexane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(262, 'm-c-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(263, 'benzene ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(264, 'c-hexane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(265, '223-tm-C4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(266, '3,3-dim-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(267, 'n-C7 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(268, 'm-c-C6 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(269, 'et-c-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(270, 'toluene ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(271, 'c-c7 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(272, '11-dm-c-C6 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(273, 'c-c8 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(274, 'c-12-dmcC6 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(275, 'et-benzene ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(276, 'MDEA+ ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(277, 'H3O+ ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(278, 'MDEA ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(279, 'HCO3- ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(280, 'OH- ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(281, 'Na+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(282, 'Cl- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(283, 'Ca++ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(284, 'Li+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(285, 'Br- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(286, 'NH4+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(287, 'CO3-- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(288, 'DEACOO- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(289, 'DEA ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(290, 'DEA+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(291, 'BEA ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(292, 'BEA+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(293, 'BEACOO- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(294, 'K+ ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(295, 'HS- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(296, 'S-- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(297, 'I- ', 'propane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(298, 'Mg++ ', 'propane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(299, 'Ba++ ', 'propane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(300, 'Sr++ ', 'propane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(301, 'water ', 'water ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(302, 'methanol ', 'water ', 'HV ', -0.0789, -0.0789, 0.357, 410.67, -169.63, 0.0, 0.0, 0.0, 'WS ', 0.0931039474415679, 0.303, -48.68, 610.6, 0.0, 1.89, -1.11, 0.0, 0.0, -0.0789, -0.0789, 0.093103947441567), +(303, 'ethanol ', 'water ', 'HV ', 0.0, 0.0, 0.2245, 2207.03, -2612.51, 0.0, 0.0, 0.0, 'WS ', 0.0, 0.3791, -268.88, 885.99, 0.0, -4.6, 7.3, 0.0, 0.0, 0.0, 0.0, 0.0), +(304, 'water', 'MEG', 'HV ', 0.0, -0.0385, 0.3475, -520.98, 707.85, 0.0, 0.0, 0.0, 'WS ', 0.407748, 0.327, 1229.0, -946.4, 0.0, -1.33, 1.15, 0.0, 0.0, 0.0, 0.0, 0.0), +(305, 'DEG ', 'water ', 'HV ', -0.1259, -0.1259, 0.4739, -624.62, 715.5, 0.0, 0.0, 0.0, 'WS ', -0.1259, 0.4739, -624.62, 715.5, 0.0, 0.0, 0.0, 0.0, 0.0, -0.1259, -0.1259, 0.0), +(306, 'TEG ', 'water ', 'HV ', -0.2035, -0.2035, 0.1967, -2913.94, 2497.41, 0.0, 0.0, 0.0, 'WS ', 0.2035, 0.3, -777.0, 1915.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2035, -0.2035, 0.0), +(307, 'NaCl ', 'water ', 'HV ', -0.2169, -0.2169, -0.7335, -11.7, 95.12, 0.0, 0.0, 0.0, 'WS ', -0.2169, -0.7335, -11.7, 95.12, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2169, -0.2169, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(308, 'KCl ', 'water ', 'HV ', 0.0, 0.0, -0.8262, 650.82, 92.26, 0.0, 0.0, 0.0, 'WS ', 0.0, -0.8262, 650.82, 92.26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(309, 'CaCl2 ', 'water ', 'HV ', 0.0, 0.0, -2.104, 170.53, 66.88, 0.0, 0.0, 0.0, 'WS ', 0.0, -2.104, 170.53, 66.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(310, 'HCOONa ', 'water ', 'HV ', 0.0, 0.0, -0.7911, -26.58, 114.0, 0.0, 0.0, 0.0, 'WS ', 0.0, -0.7911, -26.58, 114.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(311, 'HCOOK ', 'water ', 'HV ', 0.0, 0.0, -0.8954, -10.98, 90.11, 0.0, 0.0, 0.0, 'WS ', 0.0, -0.8954, -10.98, 90.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(312, 'HCOOCs ', 'water ', 'HV ', 0.0, 0.0, -2.401, -14.88, 63.62, 0.0, 0.0, 0.0, 'WS ', 0.0, -2.401, -14.88, 63.62, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(313, 'helium ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(314, 'hydrogen ', 'water ', 'Classic ', 0.5322, 0.5322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5322, 0.5322, 0.0), +(315, 'nitrogen ', 'water ', 'HV ', -0.48, -0.48, 0.08, 4643.0, -64.5, 0.0, 0.0, 0.0, 'WS ', -0.48, 0.0768, -388.0, 4911.0, 0.0, -2.1, -1.05, 0.0, 0.0, -0.0592019341, 0.241399241, 0.0), +(316, 'Ar ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(317, 'oxygen ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(318, 'CO2', 'water', 'HV ', 0.1, 0.1, 0.03, 3625.894514452, -2241.2916342019, 0.0, 0.0, 0.0, 'WS ', 1.6, 0.3, -393.0, -713.0, 0.0, 3.9121943388, -3.1637627212, 0.96, 3.96, -0.0586254634, 0.0143208, 0.0), +(319, 'H2S ', 'water ', 'HV ', 0.03, 0.03, 0.0653, -1082.0, 2579.6, 0.0, 0.0, 0.0, 'WS ', 0.03, 0.0653, -1082.0, 2579.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.03, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(320, 'water', 'ethane', 'HV ', 0.45, 0.45, 0.122, -1479.91, 5173.65, 0.0, 0.0, 0.0, 'WS ', 0.45, 0.122, 274.0, 2467.0, 0.0, 3.46, -6.56, 0.0, 0.0, 0.1565688628, 0.209643045, 0.0), +(322, 'c-propane ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(323, 'i-butane ', 'water ', 'HV ', 0.52, 0.52, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.52, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.52, 0.52, 0.0), +(325, '2,2-diom C3 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(326, 'c-C4 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(327, 'i-pentane ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(328, 'n-pentane ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(329, 'c-pentane ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(330, '2,2-dim-C4 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(331, '2,3-dimC4 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(332, '2-m-C5 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(333, '3-m-C5 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(334, 'n-hexane ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(335, 'hexane ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(336, 'm-c-C5 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(337, 'benzene ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(338, 'c-hexane ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(339, '223-tm-C4 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(340, '3,3-dim-C5 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(341, 'n-C7 ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(342, 'm-c-C6 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(343, 'et-c-C5 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(344, 'toluene ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(345, 'c-c7 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(346, '11-dm-c-C6 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(347, 'c-c8 ', 'water ', 'HV ', 0.5, 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(348, 'c-12-dmcC6 ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(349, 'et-benzene ', 'water ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(350, 'MDEA+ ', 'water ', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(351, 'H3O+ ', 'water ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(352, 'MDEA ', 'water ', 'HV ', 0.0, 0.0, 0.2131035181, -1460.679072303, 1200.644717087, 0.0, 0.0, 0.0, 'WS ', 0.0, 0.386, -401.57, 803.41, 0.0, 5.8929954883, -7.2400706727, 0.0, 0.0, -0.1492893555, 0.0, 0.0), +(353, 'HCO3- ', 'water ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(354, 'OH- ', 'water ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(355, 'Na+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(356, 'Cl- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(357, 'Ca++ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(358, 'Li+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(359, 'Br- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(360, 'NH4+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(361, 'CO3-- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(362, 'DEACOO- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(363, 'DEA ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(364, 'DEA+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(365, 'BEA ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(366, 'BEA+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(367, 'BEACOO- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(368, 'K+ ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(369, 'HS- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(370, 'S-- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(371, 'I- ', 'water ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(372, 'Mg++ ', 'water ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(373, 'Ba++ ', 'water ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(374, 'Sr++ ', 'water ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(376, 'methanol ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(377, 'ethanol ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(378, 'MEG ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(379, 'DEG ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(380, 'TEG ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(381, 'NaCl ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(382, 'KCl ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(383, 'CaCl2 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(384, 'HCOONa ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(385, 'HCOOK ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(386, 'HCOOCs ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(387, 'helium ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(388, 'hydrogen ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(389, 'nitrogen ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(390, 'Ar ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(391, 'oxygen ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(393, 'H2S ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(394, 'propane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(395, 'c-propane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(396, 'i-butane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(397, 'n-butane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(398, '2,2-diom C3 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(399, 'c-C4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(400, 'i-pentane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(401, 'n-pentane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(402, 'c-pentane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(403, '2,2-dim-C4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(404, '2,3-dimC4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(405, '2-m-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(406, '3-m-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(407, 'n-hexane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(408, 'hexane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(409, 'm-c-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(410, 'benzene ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(411, 'c-hexane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(412, '223-tm-C4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(413, '3,3-dim-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(414, 'n-C7 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(415, 'm-c-C6 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(416, 'et-c-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(417, 'toluene ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(418, 'c-c7 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(419, '11-dm-c-C6 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(420, 'c-c8 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(421, 'c-12-dmcC6 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(422, 'et-benzene ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(423, 'MDEA+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(424, 'H3O+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(425, 'MDEA ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(426, 'HCO3- ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(427, 'OH- ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(428, 'Na+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(429, 'Cl- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(430, 'Ca++ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(431, 'Li+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(432, 'Br- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(433, 'NH4+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(434, 'CO3-- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(435, 'DEACOO- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(436, 'DEA ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(437, 'DEA+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(438, 'BEA ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(439, 'BEA+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(440, 'BEACOO- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(441, 'K+ ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(442, 'HS- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(443, 'S-- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(444, 'I- ', 'MDEA ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(445, 'Mg++ ', 'MDEA ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(446, 'Ba++ ', 'MDEA ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(447, 'Sr++ ', 'MDEA ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(449, 'methanol ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(450, 'ethanol ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(451, 'MEG ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(452, 'DEG ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(453, 'TEG ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(454, 'NaCl ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(455, 'KCl ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(456, 'CaCl2 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(457, 'HCOONa ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(458, 'HCOOK ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(459, 'HCOOCs ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(460, 'helium ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(461, 'hydrogen ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(462, 'nitrogen ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(463, 'Ar ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(464, 'oxygen ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(465, 'CO2 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(466, 'H2S ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(467, 'methane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(468, 'ethane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(469, 'propane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(470, 'c-propane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(471, 'i-butane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(472, 'n-butane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(473, '2,2-diom C3 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(474, 'c-C4 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(475, 'i-pentane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(476, 'n-pentane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(477, 'c-pentane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(478, '2,2-dim-C4 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(479, '2,3-dimC4 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(480, '2-m-C5 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(481, '3-m-C5 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(482, 'n-hexane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(483, 'hexane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(484, 'm-c-C5 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(485, 'benzene ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(486, 'c-hexane ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(487, '223-tm-C4 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(488, '3,3-dim-C5 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(489, 'n-C7 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(490, 'm-c-C6 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(491, 'et-c-C5 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(492, 'toluene ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(493, 'c-c7 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(494, '11-dm-c-C6 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(495, 'c-c8 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(496, 'c-12-dmcC6 ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(497, 'et-benzene ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(498, 'MDEA+ ', 'MDEA+ ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(499, 'H3O+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(500, 'MDEA ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(501, 'HCO3- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(502, 'OH- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(503, 'Na+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(504, 'Cl- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(505, 'Ca++ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(506, 'Li+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(507, 'Br- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(508, 'NH4+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(509, 'CO3-- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(510, 'DEACOO- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(511, 'DEA ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(512, 'DEA+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(513, 'BEA ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(514, 'BEA+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(515, 'BEACOO- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(516, 'K+ ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(517, 'HS- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(518, 'S-- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(519, 'I- ', 'MDEA+ ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(520, 'Mg++ ', 'MDEA+ ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(521, 'Ba++ ', 'MDEA+ ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(522, 'Sr++ ', 'MDEA+ ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(524, 'methanol ', 'nitrogen ', 'HV ', 0.5, 0.5, 0.395, 308.0, 364.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(525, 'ethanol ', 'nitrogen ', 'HV ', 0.5, 0.5, 0.395, 308.0, 364.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(526, 'MEG ', 'nitrogen ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(527, 'DEG ', 'nitrogen ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(528, 'TEG ', 'nitrogen ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(529, 'NaCl ', 'nitrogen ', 'HV ', 3.2, 3.2, 0.0105, 94947.0, 1773.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.084, 7623.0, 5281.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(530, 'KCl ', 'nitrogen ', 'HV ', 5.24, 5.24, 0.0078, 41212.0, 2335.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.097, 6733.0, 4007.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.24, 5.24, 0.0), +(531, 'CaCl2 ', 'nitrogen ', 'Classic ', 2.29, 2.29, 0.0174, 80541.0, 2200.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.055, 8790.0, 14765.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29, 2.29, 0.0), +(532, 'HCOONa ', 'nitrogen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(533, 'HCOOK ', 'nitrogen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(534, 'HCOOCs ', 'nitrogen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(535, 'helium ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(536, 'hydrogen ', 'nitrogen ', 'Classic ', 0.0071, 0.0071, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0071, 0.0071, 0.0), +(537, 'nitrogen ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(538, 'Ar ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(539, 'oxygen ', 'nitrogen ', 'Classic ', -0.0078, -0.0078, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0078, -0.0078, 0.0), +(540, 'CO2 ', 'nitrogen ', 'Classic ', -0.0171, -0.019997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(541, 'H2S ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(542, 'methane ', 'nitrogen ', 'Classic ', 0.031199, 0.035999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.02, 0.0), +(543, 'ethane ', 'nitrogen ', 'Classic ', 0.031899, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(544, 'propane ', 'nitrogen ', 'Classic ', 0.0886, 0.079998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(545, 'c-propane ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(546, 'i-butane ', 'nitrogen ', 'Classic ', 0.13150001, 0.094999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(547, 'n-butane ', 'nitrogen ', 'Classic ', 0.0597, 0.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(548, '2,2-diom C3 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(549, 'c-C4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(550, 'i-pentane ', 'nitrogen ', 'Classic ', 0.093, 0.094999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(551, 'n-pentane ', 'nitrogen ', 'Classic ', 0.093598, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(552, 'c-pentane ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(553, '2,2-dim-C4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(554, '2,3-dimC4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(555, '2-m-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(556, '3-m-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(557, 'n-hexane ', 'nitrogen ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(558, 'hexane ', 'nitrogen ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(559, 'm-c-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(560, 'benzene ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(561, 'c-hexane ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(562, '223-tm-C4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(563, '3,3-dim-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(564, 'n-C7 ', 'nitrogen ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(565, 'm-c-C6 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(566, 'et-c-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(567, 'toluene ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(568, 'c-c7 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(569, '11-dm-c-C6 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(570, 'c-c8 ', 'nitrogen ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(571, 'c-12-dmcC6 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(572, 'et-benzene ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(573, 'MDEA+ ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(574, 'H3O+ ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(575, 'MDEA ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(576, 'HCO3- ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(577, 'OH- ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(578, 'Na+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(579, 'Cl- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(580, 'Ca++ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(581, 'Li+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(582, 'Br- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(583, 'NH4+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(584, 'CO3-- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(585, 'DEACOO- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(586, 'DEA ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(587, 'DEA+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(588, 'BEA ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(589, 'BEA+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(590, 'BEACOO- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(591, 'K+ ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(592, 'HS- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(593, 'S-- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(594, 'I- ', 'nitrogen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(595, 'Mg++ ', 'nitrogen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(596, 'Ba++ ', 'nitrogen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(597, 'Sr++ ', 'nitrogen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(598, 'water ', 'H2S ', 'HV ', 0.03, 0.03, 0.0653, 2579.6, -1082.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.03, 0.0), +(599, 'methanol ', 'H2S ', 'HV ', 0.5, 0.5, 0.395, 965.0, 45.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(600, 'ethanol ', 'H2S ', 'HV ', 0.5, 0.5, 0.395, 965.0, 45.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(601, 'MEG ', 'H2S ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(602, 'DEG ', 'H2S ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(603, 'TEG ', 'H2S ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(604, 'NaCl ', 'H2S ', 'HV ', 0.8, 0.8, -0.1379, 1809.48, 658.64, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.8, 0.0), +(605, 'KCl ', 'H2S ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(606, 'CaCl2 ', 'H2S ', 'HV ', 0.5, 0.5, -0.1872, -1646.0, 1195.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(607, 'HCOONa ', 'H2S ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(608, 'HCOOK ', 'H2S ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(609, 'HCOOCs ', 'H2S ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(610, 'helium ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(611, 'hydrogen ', 'H2S ', 'Classic ', 0.0831, 0.0831, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0831, 0.0831, 0.0), +(612, 'nitrogen ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(613, 'Ar ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(614, 'oxygen ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(615, 'CO2 ', 'H2S ', 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(616, 'H2S ', 'H2S ', 'HV ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(617, 'methane ', 'H2S ', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(618, 'ethane ', 'H2S ', 'Classic ', 0.07, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0), +(619, 'propane ', 'H2S ', 'Classic ', 0.07, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0), +(620, 'c-propane ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(621, 'i-butane ', 'H2S ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(622, 'n-butane ', 'H2S ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(623, '2,2-diom C3 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(624, 'c-C4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(625, 'i-pentane ', 'H2S ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(626, 'n-pentane ', 'H2S ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(627, 'c-pentane ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(628, '2,2-dim-C4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(629, '2,3-dimC4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(630, '2-m-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(631, '3-m-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(632, 'n-hexane ', 'H2S ', 'Classic ', 0.05, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05, 0.05, 0.0), +(633, 'hexane ', 'H2S ', 'Classic ', 0.05, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05, 0.05, 0.0), +(634, 'm-c-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(635, 'benzene ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(636, 'c-hexane ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(637, '223-tm-C4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(638, '3,3-dim-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(639, 'n-C7 ', 'H2S ', 'Classic ', 0.04, 0.04, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.04, 0.0), +(640, 'm-c-C6 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(641, 'et-c-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(642, 'toluene ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(643, 'c-c7 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(644, '11-dm-c-C6 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(645, 'c-c8 ', 'H2S ', 'Classic ', 0.04, 0.04, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.04, 0.0), +(646, 'c-12-dmcC6 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(647, 'et-benzene ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(648, 'MDEA+ ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(649, 'H3O+ ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(650, 'MDEA ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(651, 'HCO3- ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(652, 'OH- ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(653, 'Na+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(654, 'Cl- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(655, 'Ca++ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(656, 'Li+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(657, 'Br- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(658, 'NH4+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(659, 'CO3-- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(660, 'DEACOO- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(661, 'DEA ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(662, 'DEA+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(663, 'BEA ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(664, 'BEA+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(665, 'BEACOO- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(666, 'K+ ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(667, 'HS- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(668, 'S-- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(669, 'I- ', 'H2S ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(670, 'Mg++ ', 'H2S ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(671, 'Ba++ ', 'H2S ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(672, 'Sr++ ', 'H2S ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(673, 'methanol ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(674, 'ethanol ', 'methanol ', 'Classic ', 0.0504, 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0504, 0.0504, 0.0), +(675, 'MEG ', 'methanol ', 'Classic ', 0.074, 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.074, 0.074, 0.0), +(676, 'DEG ', 'methanol ', 'Classic ', 0.0882, 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0882, 0.0882, 0.0), +(677, 'TEG ', 'methanol ', 'Classic ', 0.1817, 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1817, 0.1817, 0.0), +(678, 'NaCl ', 'methanol ', 'Classic ', 0.1221, 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1221, 0.1221, 0.0), +(679, 'KCl ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(680, 'CaCl2 ', 'methanol ', 'Classic ', 0.2045, 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2045, 0.2045, 0.0), +(681, 'HCOONa ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(682, 'HCOOK ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(683, 'HCOOCs ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(684, 'helium ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(685, 'hydrogen ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(686, 'nitrogen ', 'methanol ', 'HV ', 0.5, 0.5, 0.395, 364.0, 308.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 364.0, 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(687, 'Ar ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(688, 'oxygen ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(690, 'H2S ', 'methanol ', 'HV ', 0.5, 0.5, 0.395, 45.0, 965.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 45.0, 965.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(691, 'methane ', 'methanol ', 'HV ', 0.13, 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 'WS ', 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(692, 'ethane ', 'methanol ', 'HV ', 0.19, 0.19, 0.395, 494.0, 2005.0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 494.0, 2005.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.19, 0.19, 0.0), +(693, 'propane ', 'methanol ', 'HV ', 0.22, 0.22, 0.395, 435.0, 895.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 435.0, 895.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.22, 0.22, 0.0), +(694, 'c-propane ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(695, 'i-butane ', 'methanol ', 'HV ', 0.25, 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(696, 'n-butane ', 'methanol ', 'HV ', 0.25, 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(697, '2,2-diom C3 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(698, 'c-C4 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(699, 'i-pentane ', 'methanol ', 'HV ', 0.26, 0.26, 0.395, 744.0, 1071.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 744.0, 1071.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0), +(700, 'n-pentane ', 'methanol ', 'HV ', 0.26, 0.26, 0.395, 1230.0, 1186.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 1230.0, 1186.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0), +(701, 'c-pentane ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(702, '2,2-dim-C4 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(703, '2,3-dimC4 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(704, '2-m-C5 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(705, '3-m-C5 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(706, 'n-hexane ', 'methanol ', 'HV ', 0.28, 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0), +(707, 'hexane ', 'methanol ', 'HV ', 0.28, 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0), +(708, 'm-c-C5 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(709, 'benzene ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(710, 'c-hexane ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(711, '223-tm-C4 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(712, '3,3-dim-C5 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(713, 'n-C7 ', 'methanol ', 'Classic ', 0.29, 0.29, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'Classic ', 0.29, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.29, 0.29, 0.0), +(714, 'm-c-C6 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(715, 'et-c-C5 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(716, 'toluene ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(717, 'c-c7 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(718, '11-dm-c-C6 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(719, 'c-c8 ', 'methanol ', 'Classic ', 0.31, 0.31, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'Classic ', 0.31, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.31, 0.31, 0.0), +(720, 'c-12-dmcC6 ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(721, 'et-benzene ', 'methanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(722, 'MDEA+ ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(723, 'H3O+ ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(724, 'MDEA ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(725, 'HCO3- ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(726, 'OH- ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(727, 'Na+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(728, 'Cl- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(729, 'Ca++ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(730, 'Li+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(731, 'Br- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(732, 'NH4+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(733, 'CO3-- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(734, 'DEACOO- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(735, 'DEA ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(736, 'DEA+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(737, 'BEA ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(738, 'BEA+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(739, 'BEACOO- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(740, 'K+ ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(741, 'HS- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(742, 'S-- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(743, 'I- ', 'methanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(744, 'Mg++ ', 'methanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(745, 'Ba++ ', 'methanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(746, 'Sr++ ', 'methanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(747, 'methanol ', 'MEG ', 'Classic ', 0.074, 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.074, 0.074, 0.0), +(748, 'ethanol ', 'MEG ', 'Classic ', 0.1626, 0.1626, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1626, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1626, 0.1626, 0.0), +(749, 'MEG ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(750, 'DEG ', 'MEG ', 'Classic ', 0.0301, 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0301, 0.0301, 0.0), +(751, 'TEG ', 'MEG ', 'Classic ', 0.0059, 0.0059, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0059, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0059, 0.0059, 0.0), +(752, 'NaCl ', 'MEG ', 'Classic ', 0.0588, 0.0588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0588, 0.0588, 0.0), +(753, 'KCl ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(754, 'CaCl2 ', 'MEG ', 'Classic ', 0.0842, 0.0842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0842, 0.0842, 0.0), +(755, 'HCOONa ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(756, 'HCOOK ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(757, 'HCOOCs ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(758, 'helium ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(759, 'hydrogen ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(761, 'Ar ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(762, 'oxygen ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(763, 'CO2 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(764, 'H2S ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(765, 'methane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(766, 'ethane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(767, 'propane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(768, 'c-propane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(769, 'i-butane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(770, 'n-butane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(771, '2,2-diom C3 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(772, 'c-C4 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(773, 'i-pentane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(774, 'n-pentane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(775, 'c-pentane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(776, '2,2-dim-C4 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(777, '2,3-dimC4 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(778, '2-m-C5 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(779, '3-m-C5 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(780, 'n-hexane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(781, 'hexane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(782, 'm-c-C5 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(783, 'benzene ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(784, 'c-hexane ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(785, '223-tm-C4 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(786, '3,3-dim-C5 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(787, 'n-C7 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(788, 'm-c-C6 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(789, 'et-c-C5 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(790, 'toluene ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(791, 'c-c7 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(792, '11-dm-c-C6 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(793, 'c-c8 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(794, 'c-12-dmcC6 ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(795, 'et-benzene ', 'MEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(796, 'MDEA+ ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(797, 'H3O+ ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(798, 'MDEA ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(799, 'HCO3- ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(800, 'OH- ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(801, 'Na+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(802, 'Cl- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(803, 'Ca++ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(804, 'Li+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(805, 'Br- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(806, 'NH4+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(807, 'CO3-- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(808, 'DEACOO- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(809, 'DEA ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(810, 'DEA+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(811, 'BEA ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(812, 'BEA+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(813, 'BEACOO- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(814, 'K+ ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(815, 'HS- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(816, 'S-- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(817, 'I- ', 'MEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(818, 'Mg++ ', 'MEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(819, 'Ba++ ', 'MEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(820, 'Sr++ ', 'MEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(821, 'methanol ', 'TEG ', 'Classic ', 0.1817, 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1817, 0.1817, 0.0), +(822, 'ethanol ', 'TEG ', 'Classic ', 0.2876, 0.2876, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1626, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2876, 0.2876, 0.0), +(823, 'MEG ', 'TEG ', 'Classic ', 0.0059, 0.0059, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0059, 0.0059, 0.0), +(824, 'DEG ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(825, 'TEG ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(826, 'NaCl ', 'TEG ', 'Classic ', 0.365, 0.365, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.365, 0.365, 0.0), +(827, 'KCl ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(828, 'CaCl2 ', 'TEG ', 'HV ', 0.13, 0.13, -3.054, 352.3, 206.9, 0.0, 0.0, 0.0, 'Classic ', 0.0842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(829, 'HCOONa ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(830, 'HCOOK ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(831, 'HCOOCs ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(832, 'helium ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(833, 'hydrogen ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(834, 'nitrogen ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(835, 'Ar ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(836, 'oxygen ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(837, 'CO2 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(838, 'H2S ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(839, 'methane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(840, 'ethane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(841, 'propane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(842, 'c-propane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(843, 'i-butane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(844, 'n-butane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(845, '2,2-diom C3 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(846, 'c-C4 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(847, 'i-pentane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(848, 'n-pentane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(849, 'c-pentane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(850, '2,2-dim-C4 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(851, '2,3-dimC4 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(852, '2-m-C5 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(853, '3-m-C5 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(854, 'n-hexane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(855, 'hexane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(856, 'm-c-C5 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(857, 'benzene ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(858, 'c-hexane ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(859, '223-tm-C4 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(860, '3,3-dim-C5 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(861, 'n-C7 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(862, 'm-c-C6 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(863, 'et-c-C5 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(864, 'toluene ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(865, 'c-c7 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(866, '11-dm-c-C6 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(867, 'c-c8 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(868, 'c-12-dmcC6 ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(869, 'et-benzene ', 'TEG ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(870, 'MDEA+ ', 'TEG ', 'HV ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(871, 'H3O+ ', 'TEG ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(872, 'MDEA ', 'TEG ', 'HV ', 0.0, 0.0, 0.386, -1124.83, 763.56, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(873, 'HCO3- ', 'TEG ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(874, 'OH- ', 'TEG ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(875, 'Na+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(876, 'Cl- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(877, 'Ca++ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(878, 'Li+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(879, 'Br- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(880, 'NH4+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(881, 'CO3-- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(882, 'DEACOO- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(883, 'DEA ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(884, 'DEA+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(885, 'BEA ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(886, 'BEA+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(887, 'BEACOO- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(888, 'K+ ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(889, 'HS- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(890, 'S-- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(891, 'I- ', 'TEG ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(892, 'Mg++ ', 'TEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(893, 'Ba++ ', 'TEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(894, 'Sr++ ', 'TEG ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(895, 'water ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.122, 2467.0, 274.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(896, 'methanol ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(897, 'ethanol ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(898, 'MEG ', 'oxygen ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(899, 'DEG ', 'oxygen ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(900, 'TEG ', 'oxygen ', 'Classic ', 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(901, 'NaCl ', 'oxygen ', 'Classic ', 0.8, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.084, 7623.0, 5281.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.8, 0.0), +(902, 'KCl ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.097, 6733.0, 4007.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(903, 'CaCl2 ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.055, 8790.0, 14765.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(904, 'HCOONa ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(905, 'HCOOK ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(906, 'HCOOCs ', 'oxygen ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(907, 'helium ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(908, 'hydrogen ', 'oxygen ', 'Classic ', 0.0079, 0.0079, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0079, 0.0079, 0.0), +(909, 'nitrogen ', 'oxygen ', 'Classic ', -0.0078, -0.0078, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0078, -0.0078, 0.0), +(910, 'Ar ', 'oxygen ', 'Classic ', 0.0178, 0.0178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0178, 0.0178, 0.0), +(911, 'oxygen ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(912, 'CO2 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(913, 'H2S ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(914, 'methane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(915, 'ethane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(916, 'propane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(917, 'c-propane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(918, 'i-butane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(919, 'n-butane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(920, '2,2-diom C3 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(921, 'c-C4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(922, 'i-pentane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(923, 'n-pentane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(924, 'c-pentane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(925, '2,2-dim-C4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(926, '2,3-dimC4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(927, '2-m-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(928, '3-m-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(929, 'n-hexane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(930, 'hexane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(931, 'm-c-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(932, 'benzene ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(933, 'c-hexane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(934, '223-tm-C4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(935, '3,3-dim-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(936, 'n-C7 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(937, 'm-c-C6 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(938, 'et-c-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(939, 'toluene ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(940, 'c-c7 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(941, '11-dm-c-C6 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(942, 'c-c8 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(943, 'c-12-dmcC6 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(944, 'et-benzene ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(945, 'MDEA+ ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(946, 'H3O+ ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(947, 'MDEA ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(948, 'HCO3- ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(949, 'OH- ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(950, 'Na+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(951, 'Cl- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(952, 'Ca++ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(953, 'Li+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(954, 'Br- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(955, 'NH4+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(956, 'CO3-- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(957, 'DEACOO- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(958, 'DEA ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(959, 'DEA+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(960, 'BEA ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(961, 'BEA+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(962, 'BEACOO- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(963, 'K+ ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(964, 'HS- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(965, 'S-- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(966, 'I- ', 'oxygen ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(967, 'Mg++ ', 'oxygen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(968, 'Ba++ ', 'oxygen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(969, 'Sr++ ', 'oxygen ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(970, 'water ', 'n-butane ', 'HV ', 0.52, 0.52, 0.12, -567.8, 3181.0, 0.0, 0.0, 0.0, 'WS ', 0.53, 0.122, 2467.0, 274.0, 0.0, 1.97, -1.93, 0.0, 0.0, 0.52, 0.52, 0.0), +(971, 'methanol ', 'n-butane ', 'HV ', 0.25, 0.25, 0.395, 1135.0, 1603.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(972, 'ethanol ', 'n-butane ', 'HV ', 0.25, 0.25, 0.395, 1135.0, 1603.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(973, 'MEG ', 'n-butane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(974, 'DEG ', 'n-butane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(975, 'TEG ', 'n-butane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(976, 'NaCl ', 'n-butane ', 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 'Classic ', 0.72, 0.0592, 10539.0, 4777.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.7, 0.0), +(977, 'KCl ', 'n-butane ', 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 'Classic ', 1.36, 0.0441, 60604.0, 7490.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.35, 1.35, 0.0), +(978, 'CaCl2 ', 'n-butane ', 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.18, 1.18, 0.0), +(979, 'HCOONa ', 'n-butane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(980, 'HCOOK ', 'n-butane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(981, 'HCOOCs ', 'n-butane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(982, 'helium ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(983, 'hydrogen ', 'n-butane ', 'Classic ', 0.1446, 0.1446, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1446, 0.1446, 0.0), +(984, 'nitrogen ', 'n-butane ', 'Classic ', 0.0597, 0.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(985, 'Ar ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(986, 'oxygen ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(987, 'CO2 ', 'n-butane ', 'Classic ', 0.14120001, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(988, 'H2S ', 'n-butane ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(989, 'methane ', 'n-butane ', 'Classic ', 0.01289789, 0.01289789, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(990, 'ethane ', 'n-butane ', 'Classic ', 0.00464288, 0.00464288, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(991, 'propane ', 'n-butane ', 'Classic ', 0.00132268, 0.00132268, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(992, 'c-propane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(993, 'i-butane ', 'n-butane ', 'Classic ', 4.7251E-4, 4.7251E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(994, 'n-butane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(995, '2,2-diom C3 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(996, 'c-C4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(997, 'i-pentane ', 'n-butane ', 'Classic ', 9.2632E-4, 9.2632E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(998, 'n-pentane ', 'n-butane ', 'Classic ', 9.7665E-4, 9.7665E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(999, 'c-pentane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1000, '2,2-dim-C4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1001, '2,3-dimC4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1002, '2-m-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1003, '3-m-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1004, 'n-hexane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1005, 'hexane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1006, 'm-c-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1007, 'benzene ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1008, 'c-hexane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1009, '223-tm-C4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1010, '3,3-dim-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1011, 'n-C7 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1012, 'm-c-C6 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1013, 'et-c-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1014, 'toluene ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1015, 'c-c7 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1016, '11-dm-c-C6 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1017, 'c-c8 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1018, 'c-12-dmcC6 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1019, 'et-benzene ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1020, 'MDEA+ ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1021, 'H3O+ ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1022, 'MDEA ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1023, 'HCO3- ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1024, 'OH- ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1025, 'Na+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1026, 'Cl- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1027, 'Ca++ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1028, 'Li+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1029, 'Br- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1030, 'NH4+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1031, 'CO3-- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1032, 'DEACOO- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1033, 'DEA ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1034, 'DEA+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1035, 'BEA ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1036, 'BEA+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1037, 'BEACOO- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1038, 'K+ ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1039, 'HS- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1040, 'S-- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1041, 'I- ', 'n-butane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1042, 'Mg++ ', 'n-butane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1043, 'Ba++ ', 'n-butane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1044, 'Sr++ ', 'n-butane ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1046, 'methanol ', 'ethanol ', 'Classic ', 0.0504, 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0504, 0.0504, 0.0), +(1047, 'ethanol ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1048, 'MEG ', 'ethanol ', 'Classic ', 0.074, 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.074, 0.074, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1049, 'DEG ', 'ethanol ', 'Classic ', 0.0882, 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0882, 0.0882, 0.0), +(1050, 'TEG ', 'ethanol ', 'Classic ', 0.1817, 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1817, 0.1817, 0.0), +(1051, 'NaCl ', 'ethanol ', 'Classic ', 0.1221, 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1221, 0.1221, 0.0), +(1052, 'KCl ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1053, 'CaCl2 ', 'ethanol ', 'Classic ', 0.2045, 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2045, 0.2045, 0.0), +(1054, 'HCOONa ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1055, 'HCOOK ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1056, 'HCOOCs ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1057, 'helium ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1058, 'hydrogen ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1059, 'nitrogen ', 'ethanol ', 'HV ', 0.5, 0.5, 0.395, 364.0, 308.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 364.0, 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1060, 'Ar ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1061, 'oxygen ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1062, 'CO2 ', 'ethanol ', 'HV ', 0.5, 0.5, 0.395, 276.0, 3307.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 276.0, 3307.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1063, 'H2S ', 'ethanol ', 'HV ', 0.5, 0.5, 0.395, 45.0, 965.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 45.0, 965.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1064, 'methane ', 'ethanol ', 'HV ', 0.13, 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 'WS ', 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(1065, 'ethane ', 'ethanol ', 'HV ', 0.19, 0.19, 0.395, 494.0, 2005.0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 494.0, 2005.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.19, 0.19, 0.0), +(1066, 'propane ', 'ethanol ', 'HV ', 0.22, 0.22, 0.395, 435.0, 895.0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 435.0, 895.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.22, 0.22, 0.0), +(1067, 'c-propane ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1068, 'i-butane ', 'ethanol ', 'HV ', 0.25, 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(1069, 'n-butane ', 'ethanol ', 'HV ', 0.25, 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0), +(1070, '2,2-diom C3 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1071, 'c-C4 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1072, 'i-pentane ', 'ethanol ', 'HV ', 0.26, 0.26, 0.395, 744.0, 1071.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 744.0, 1071.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1073, 'n-pentane ', 'ethanol ', 'HV ', 0.26, 0.26, 0.395, 1230.0, 1186.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 1230.0, 1186.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0), +(1074, 'c-pentane ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1075, '2,2-dim-C4 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1076, '2,3-dimC4 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1077, '2-m-C5 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1078, '3-m-C5 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1079, 'n-hexane ', 'ethanol ', 'HV ', 0.28, 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0), +(1080, 'hexane ', 'ethanol ', 'HV ', 0.28, 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0), +(1081, 'm-c-C5 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1082, 'benzene ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1083, 'c-hexane ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1084, '223-tm-C4 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1085, '3,3-dim-C5 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1086, 'n-C7 ', 'ethanol ', 'Classic ', 0.29, 0.29, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'Classic ', 0.29, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.29, 0.29, 0.0), +(1087, 'm-c-C6 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1088, 'et-c-C5 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1089, 'toluene ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1090, 'c-c7 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1091, '11-dm-c-C6 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1092, 'c-c8 ', 'ethanol ', 'Classic ', 0.31, 0.31, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 'Classic ', 0.31, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.31, 0.31, 0.0), +(1093, 'c-12-dmcC6 ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1094, 'et-benzene ', 'ethanol ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1095, 'MDEA+ ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1096, 'H3O+ ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1097, 'MDEA ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1098, 'HCO3- ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1099, 'OH- ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1100, 'Na+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1101, 'Cl- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1102, 'Ca++ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1103, 'Li+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1104, 'Br- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1105, 'NH4+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1106, 'CO3-- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1107, 'DEACOO- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1108, 'DEA ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1109, 'DEA+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1110, 'BEA ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1111, 'BEA+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1112, 'BEACOO- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1113, 'K+ ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1114, 'HS- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1115, 'S-- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1116, 'I- ', 'ethanol ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1117, 'Mg++ ', 'ethanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1118, 'Ba++ ', 'ethanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1119, 'Sr++ ', 'ethanol ', 'Classic ', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1120, 'water ', 'n-pentane ', 'HV ', 0.5, 0.5, 0.145, 2507.0, 681.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.5, 0.145, 2507.0, 681.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1121, 'methanol ', 'n-pentane ', 'HV ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0), +(1122, 'ethanol ', 'n-pentane ', 'HV ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0), +(1123, 'MEG ', 'n-pentane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(1124, 'DEG ', 'n-pentane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(1125, 'TEG ', 'n-pentane ', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(1126, 'NaCl ', 'n-pentane ', 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.7, 0.0), +(1127, 'KCl ', 'n-pentane ', 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 0.0, 1.35, 1.35, 0.0), +(1128, 'CaCl2 ', 'n-pentane ', 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 1.18, 1.18, 0.0), +(1129, 'HCOONa ', 'n-pentane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1130, 'HCOOK ', 'n-pentane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1131, 'HCOOCs ', 'n-pentane ', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0), +(1132, 'helium ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1133, 'hydrogen ', 'n-pentane ', 'Classic ', 0.2166, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2166, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2166, 0.2166, 0.0), +(1134, 'nitrogen ', 'n-pentane ', 'Classic ', 0.0597, 0.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(1135, 'Ar ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1136, 'oxygen ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1137, 'CO2 ', 'n-pentane ', 'Classic ', 0.1347, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0), +(1138, 'H2S ', 'n-pentane ', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0), +(1139, 'methane ', 'n-pentane ', 'Classic ', 0.01847102, 0.01847102, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1140, 'ethane ', 'n-pentane ', 'Classic ', 0.00811359, 0.00811359, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1141, 'propane ', 'n-pentane ', 'Classic ', 0.00316586, 0.00316586, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1142, 'c-propane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1143, 'i-butane ', 'n-pentane ', 'Classic ', 8.1462E-4, 8.1462E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1144, 'n-butane ', 'n-pentane ', 'Classic ', 9.7665E-4, 9.7665E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1145, '2,2-diom C3 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1146, 'c-C4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1147, 'i-pentane ', 'n-pentane ', 'Classic ', 3.9999E-4, 3.9999E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1148, 'n-pentane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1149, 'c-pentane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1150, '2,2-dim-C4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1151, '2,3-dimC4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1152, '2-m-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1153, '3-m-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1154, 'n-hexane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1155, 'hexane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1156, 'm-c-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1157, 'benzene ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1158, 'c-hexane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1159, '223-tm-C4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1160, '3,3-dim-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1161, 'n-C7 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1162, 'm-c-C6 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1163, 'et-c-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1164, 'toluene ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1165, 'c-c7 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1166, '11-dm-c-C6 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1167, 'c-c8 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1168, 'c-12-dmcC6 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1169, 'et-benzene ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1170, 'MDEA+ ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1171, 'H3O+ ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1172, 'MDEA ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1173, 'HCO3- ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1174, 'OH- ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1175, 'Na+ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1176, 'Cl- ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1177, 'Ca++ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1178, 'Li+ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1179, 'Br- ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1180, 'NH4+ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1181, 'CO3-- ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1182, 'DEACOO- ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1183, 'DEA ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1184, 'DEA+ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1185, 'BEA ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1186, 'BEA+ ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1187, 'BEACOO- ', 'n-pentane ', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1188, 'water ', 'n-heptane', 'HV ', 0.5, 0.5, 0.145, 2507.0, 681.0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.5, 0.145, 2507.0, 681.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1189, 'methanol ', 'n-heptane', 'HV ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1190, 'ethanol ', 'n-heptane', 'HV ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1191, 'MEG ', 'n-heptane', 'Classic', 0.2, 0.08, 0.39867, 4938.4, -1924.0, 0.0, 0.0, 0.0, 'WS', -0.393091937413432, 0.39867, 4938.0, 1924.3, 601.7, 0.76, -7.79, -7.9586, 0.76, 0.0555761258, 0.047, 0.0), +(1192, 'DEG ', 'n-heptane', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.065, 0.065, 0.0), +(1193, 'TEG ', 'n-heptane', 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.094, 0.094, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1194, 'NaCl ', 'n-heptane', 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1195, 'KCl ', 'n-heptane', 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1196, 'CaCl2 ', 'n-heptane', 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1197, 'HCOONa ', 'n-heptane', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1198, 'HCOOK ', 'n-heptane', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1199, 'HCOOCs ', 'n-heptane', 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1200, 'helium ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1201, 'hydrogen ', 'n-heptane', 'Classic ', 0.2166, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2166, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1202, 'nitrogen ', 'n-heptane', 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1203, 'Ar ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1204, 'oxygen ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1205, 'CO2 ', 'n-heptane', 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1206, 'H2S ', 'n-heptane', 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1207, 'methane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1208, 'ethane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1209, 'propane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1210, 'c-propane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1211, 'i-butane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1212, 'n-butane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1213, '2,2-diom C3 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1214, 'c-C4 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1215, 'i-pentane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1216, 'n-pentane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1217, 'c-pentane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1218, '2,2-dim-C4 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1219, '2,3-dimC4 ', 'n-heptane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1220, '2-m-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1221, '3-m-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1222, 'n-hexane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1223, 'hexane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1224, 'm-c-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1225, 'benzene ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1226, 'c-hexane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1227, '223-tm-C4 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1228, '3,3-dim-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1229, 'n-C7 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1230, 'm-c-C6 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1231, 'et-c-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1232, 'toluene ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1233, 'c-c7 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1234, '11-dm-c-C6 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1235, 'c-c8 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1236, 'c-12-dmcC6 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1237, 'et-benzene ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1238, 'MDEA+ ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1239, 'H3O+ ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1240, 'MDEA ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1241, 'HCO3- ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1242, 'OH- ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1243, 'Na+ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1244, 'Cl- ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1245, 'Ca++ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1246, 'Li+ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1247, 'Br- ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1248, 'NH4+ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1249, 'CO3-- ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1250, 'DEACOO- ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1251, 'DEA ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1252, 'DEA+ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1253, 'BEA ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1254, 'BEA+ ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1255, 'BEACOO- ', 'n-heptane', 'Classic ', 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1260, 'S8', 'methane ', 'Classic', 0.05, 0.05, 0.15, -123.6011438188, 4875.0942356587, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.5496550381, 0.0, 0.0, 0.0459393339, 0.1611996305, 0.0), +(1261, 'argon', 'methane', 'Classic', 0.01, 0.05, 0.15, -123.6011438188, 4875.0942356587, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.5496550381, 0.0, 0.0, 0.0459393339, 0.1611996305, 0.0), +(1262, 'nitrogen', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1263, 'CO2', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1264, 'methane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1265, 'ethane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1266, 'propane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1267, 'n-butane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1268, 'i-butane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1269, 'n-pentane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1270, 'i-pentane', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1271, 'neon', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1272, 'neon', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTER2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1273, 'neon', 'MDEA+ ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0), +(1274, 'neon', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(1275, 'neon', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.02, 0.0), +(1276, 'neon', 'methanol ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(1277, 'neon', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1278, 'neon', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1279, 'neon', 'ethanol ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0), +(1280, 'neon', 'neon', 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1281, 'neon', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0), +(1282, 'neon', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0), +(1283, 'neon', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(1284, 'neon', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.INTERREF( + ID INT NOT NULL, + COMP1 VARCHAR(255) DEFAULT NULL, + COMP2 VARCHAR(255) DEFAULT NULL, + HVTYPE VARCHAR(255) DEFAULT NULL, + KIJSRK VARCHAR(50) DEFAULT NULL, + KIJTSRK VARCHAR(50) DEFAULT NULL, + KIJPR VARCHAR(50) DEFAULT NULL, + KIJTPR VARCHAR(50) DEFAULT NULL, + HVALPHA VARCHAR(50) DEFAULT NULL, + HVGIJ VARCHAR(50) DEFAULT NULL, + HVGJI VARCHAR(50) DEFAULT NULL, + W1 VARCHAR(50) DEFAULT NULL, + W2 VARCHAR(50) DEFAULT NULL, + W3 VARCHAR(50) DEFAULT NULL, + WSTYPE VARCHAR(50) DEFAULT NULL, + KIJWS VARCHAR(50) DEFAULT NULL, + NRTLALPHA VARCHAR(50) DEFAULT NULL, + NRTLGIJ VARCHAR(50) DEFAULT NULL, + NRTLGJI VARCHAR(50) DEFAULT NULL, + GIJVISC VARCHAR(50) DEFAULT NULL, + HVGIJT VARCHAR(50) DEFAULT NULL, + HVGJIT VARCHAR(50) DEFAULT NULL, + WSGIJT VARCHAR(50) DEFAULT NULL, + WSGJIT VARCHAR(50) DEFAULT NULL, + "cpakij-SRK" VARCHAR(50) DEFAULT NULL, + "cpakij-PR" VARCHAR(50) DEFAULT NULL, + KIJWSUNIFAC VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.INTERREF ADD CONSTRAINT PUBLIC.CONSTRAINT_50 PRIMARY KEY(ID); +-- 1325 +/- SELECT COUNT(*) FROM PUBLIC.INTERREF; +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1, 'water ', 'methane ', 'HV ', 'PVTsim 13', 'SolbraaPriv2004', 'PVTsim 13', 'SolbraaPriv2004', 'Solbraa2002', 'Solbraa2002', 'Solbraa2002', 'Solbraa2002', 'Solbraa2002', 'Solbraa2002', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Solbraa2002', 'Solbraa2002', NULL), +(2, 'methanol ', 'methane ', 'HV ', 'PVTsim 13', NULL, 'PVTsim 13', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(3, 'ethanol ', 'methane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(4, 'MEG ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(5, 'DEG ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(6, 'TEG ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(7, 'NaCl ', 'methane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(8, 'KCl ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(9, 'CaCl2 ', 'methane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10, 'HCOONa ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(11, 'HCOOK ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(12, 'HCOOCs ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(13, 'helium ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(14, 'hydrogen ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(15, 'nitrogen ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(16, 'Ar ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(17, 'oxygen ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(18, 'CO2 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(19, 'H2S ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(20, 'methane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(21, 'ethane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(22, 'propane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(23, 'c-propane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(24, 'i-butane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(25, 'n-butane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(26, '2,2-diom C3 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(27, 'c-C4 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(28, 'i-pentane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(29, 'n-pentane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(30, 'c-pentane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(31, '2,2-dim-C4 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(32, '2,3-dimC4 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(33, '2-m-C5 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(34, '3-m-C5 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(35, 'n-hexane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(36, 'hexane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(37, 'm-c-C5 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(38, 'benzene ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(39, 'c-hexane ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(40, '223-tm-C4 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(41, '3,3-dim-C5 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(42, 'n-C7 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(43, 'm-c-C6 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(44, 'et-c-C5 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(45, 'toluene ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(46, 'c-c7 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(47, '11-dm-c-C6 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(48, 'c-c8 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(49, 'c-12-dmcC6 ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(50, 'et-benzene ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(51, 'MDEA+ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(52, 'H3O+ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(53, 'MDEA ', 'methane ', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(54, 'HCO3- ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(55, 'OH- ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(56, 'Na+ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(57, 'Cl- ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(58, 'Ca++ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(59, 'Li+ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(60, 'Br- ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(61, 'NH4+ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(62, 'CO3-- ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(63, 'DEACOO- ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(64, 'DEA ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(65, 'DEA+ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(66, 'BEA ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(67, 'BEA+ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(68, 'BEACOO- ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(69, 'K+ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(70, 'HS- ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(71, 'S-- ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(72, 'I- ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(73, 'Mg++ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(74, 'Ba++ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(75, 'Sr++ ', 'methane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(77, 'methanol ', 'ethane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(78, 'ethanol ', 'ethane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(79, 'MEG ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(80, 'DEG ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(81, 'TEG ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(82, 'NaCl ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(83, 'KCl ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(84, 'CaCl2 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(85, 'HCOONa ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(86, 'HCOOK ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(87, 'HCOOCs ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(88, 'helium ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(89, 'hydrogen ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(90, 'nitrogen ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(91, 'Ar ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(92, 'oxygen ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(93, 'CO2 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(94, 'H2S ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(96, 'ethane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(97, 'propane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(98, 'c-propane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(99, 'i-butane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(100, 'n-butane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(101, '2,2-diom C3 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(102, 'c-C4 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(103, 'i-pentane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(104, 'n-pentane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(105, 'c-pentane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(106, '2,2-dim-C4 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(107, '2,3-dimC4 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(108, '2-m-C5 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(109, '3-m-C5 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(110, 'n-hexane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(111, 'hexane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(112, 'm-c-C5 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(113, 'benzene ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(114, 'c-hexane ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(115, '223-tm-C4 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(116, '3,3-dim-C5 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(117, 'n-C7 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(118, 'm-c-C6 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(119, 'et-c-C5 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(120, 'toluene ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(121, 'c-c7 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(122, '11-dm-c-C6 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(123, 'c-c8 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(124, 'c-12-dmcC6 ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(125, 'et-benzene ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(126, 'MDEA+ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(127, 'H3O+ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(128, 'MDEA ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(129, 'HCO3- ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(130, 'OH- ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(131, 'Na+ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(132, 'Cl- ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(133, 'Ca++ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(134, 'Li+ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(135, 'Br- ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(136, 'NH4+ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(137, 'CO3-- ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(138, 'DEACOO- ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(139, 'DEA ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(140, 'DEA+ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(141, 'BEA ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(142, 'BEA+ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(143, 'BEACOO- ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(144, 'K+ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(145, 'HS- ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(146, 'S-- ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(147, 'I- ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(148, 'Mg++ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(149, 'Ba++ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(150, 'Sr++ ', 'ethane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(152, 'methanol ', 'CO2 ', 'HV', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(153, 'ethanol ', 'CO2 ', 'HV', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(154, 'MEG ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(155, 'DEG ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(156, 'TEG ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(157, 'NaCl ', 'CO2 ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(158, 'KCl ', 'CO2 ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(159, 'CaCl2 ', 'CO2 ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(160, 'HCOONa ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(161, 'HCOOK ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(162, 'HCOOCs ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(163, 'helium ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(164, 'hydrogen ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(165, 'nitrogen ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(166, 'Ar ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(167, 'oxygen ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(168, 'CO2 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(169, 'H2S ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(171, 'ethane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(172, 'propane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(173, 'c-propane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(174, 'i-butane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(175, 'n-butane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(176, '2,2-diom C3 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(177, 'c-C4 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(178, 'i-pentane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(179, 'n-pentane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(180, 'c-pentane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(181, '2,2-dim-C4 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(182, '2,3-dimC4 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(183, '2-m-C5 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(184, '3-m-C5 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(185, 'n-hexane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(186, 'hexane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(187, 'm-c-C5 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(188, 'benzene ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(189, 'c-hexane ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(190, '223-tm-C4 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(191, '3,3-dim-C5 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(192, 'n-C7 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(193, 'm-c-C6 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(194, 'et-c-C5 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(195, 'toluene ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(196, 'c-c7 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(197, '11-dm-c-C6 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(198, 'c-c8 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(199, 'c-12-dmcC6 ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(200, 'et-benzene ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(201, 'MDEA+ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(202, 'H3O+ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(203, 'MDEA ', 'CO2 ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(204, 'HCO3- ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(205, 'OH- ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(206, 'Na+ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(207, 'Cl- ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(208, 'Ca++ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(209, 'Li+ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(210, 'Br- ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(211, 'NH4+ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(212, 'CO3-- ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(213, 'DEACOO- ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(214, 'DEA ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(215, 'DEA+ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(216, 'BEA ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(217, 'BEA+ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(218, 'BEACOO- ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(219, 'K+ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(220, 'HS- ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(221, 'S-- ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(222, 'I- ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(223, 'Mg++ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(224, 'Ba++ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(225, 'Sr++ ', 'CO2 ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(226, 'water ', 'propane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(227, 'methanol ', 'propane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(228, 'ethanol ', 'propane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(229, 'MEG ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(230, 'DEG ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(231, 'TEG ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(232, 'NaCl ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(233, 'KCl ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(234, 'CaCl2 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(235, 'HCOONa ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(236, 'HCOOK ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(237, 'HCOOCs ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(238, 'helium ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(239, 'hydrogen ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(240, 'nitrogen ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(241, 'Ar ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(242, 'oxygen ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(243, 'CO2 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(244, 'H2S ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(245, 'methane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(246, 'ethane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(247, 'propane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(248, 'c-propane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(249, 'i-butane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(250, 'n-butane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(251, '2,2-diom C3 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(252, 'c-C4 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(253, 'i-pentane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(254, 'n-pentane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(255, 'c-pentane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(256, '2,2-dim-C4 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(257, '2,3-dimC4 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(258, '2-m-C5 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(259, '3-m-C5 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(260, 'n-hexane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(261, 'hexane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(262, 'm-c-C5 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(263, 'benzene ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(264, 'c-hexane ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(265, '223-tm-C4 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(266, '3,3-dim-C5 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(267, 'n-C7 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(268, 'm-c-C6 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(269, 'et-c-C5 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(270, 'toluene ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(271, 'c-c7 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(272, '11-dm-c-C6 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(273, 'c-c8 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(274, 'c-12-dmcC6 ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(275, 'et-benzene ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(276, 'MDEA+ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(277, 'H3O+ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(278, 'MDEA ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(279, 'HCO3- ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(280, 'OH- ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(281, 'Na+ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(282, 'Cl- ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(283, 'Ca++ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(284, 'Li+ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(285, 'Br- ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(286, 'NH4+ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(287, 'CO3-- ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(288, 'DEACOO- ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(289, 'DEA ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(290, 'DEA+ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(291, 'BEA ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(292, 'BEA+ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(293, 'BEACOO- ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(294, 'K+ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(295, 'HS- ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(296, 'S-- ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(297, 'I- ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(298, 'Mg++ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(299, 'Ba++ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(300, 'Sr++ ', 'propane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(301, 'water ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(302, 'methanol ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(303, 'ethanol ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(304, 'water', 'MEG', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(305, 'DEG ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(306, 'TEG ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(307, 'NaCl ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(308, 'KCl ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(309, 'CaCl2 ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(310, 'HCOONa ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(311, 'HCOOK ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(312, 'HCOOCs ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(313, 'helium ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(314, 'hydrogen ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(315, 'nitrogen ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(316, 'Ar ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(317, 'oxygen ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(318, 'CO2', 'water', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(319, 'H2S ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(320, 'water', 'ethane', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(322, 'c-propane ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(323, 'i-butane ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(325, '2,2-diom C3 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(326, 'c-C4 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(327, 'i-pentane ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(328, 'n-pentane ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(329, 'c-pentane ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(330, '2,2-dim-C4 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(331, '2,3-dimC4 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(332, '2-m-C5 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(333, '3-m-C5 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(334, 'n-hexane ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(335, 'hexane ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(336, 'm-c-C5 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(337, 'benzene ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(338, 'c-hexane ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(339, '223-tm-C4 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(340, '3,3-dim-C5 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(341, 'n-C7 ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(342, 'm-c-C6 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(343, 'et-c-C5 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(344, 'toluene ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(345, 'c-c7 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(346, '11-dm-c-C6 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(347, 'c-c8 ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(348, 'c-12-dmcC6 ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(349, 'et-benzene ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(350, 'MDEA+ ', 'water ', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(351, 'H3O+ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(352, 'MDEA ', 'water ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(353, 'HCO3- ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(354, 'OH- ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(355, 'Na+ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(356, 'Cl- ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(357, 'Ca++ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(358, 'Li+ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(359, 'Br- ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(360, 'NH4+ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(361, 'CO3-- ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(362, 'DEACOO- ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(363, 'DEA ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(364, 'DEA+ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(365, 'BEA ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(366, 'BEA+ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(367, 'BEACOO- ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(368, 'K+ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(369, 'HS- ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(370, 'S-- ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(371, 'I- ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(372, 'Mg++ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(373, 'Ba++ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(374, 'Sr++ ', 'water ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(376, 'methanol ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(377, 'ethanol ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(378, 'MEG ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(379, 'DEG ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(380, 'TEG ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(381, 'NaCl ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(382, 'KCl ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(383, 'CaCl2 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(384, 'HCOONa ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(385, 'HCOOK ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(386, 'HCOOCs ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(387, 'helium ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(388, 'hydrogen ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(389, 'nitrogen ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(390, 'Ar ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(391, 'oxygen ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(393, 'H2S ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(394, 'propane ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(395, 'c-propane ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(396, 'i-butane ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(397, 'n-butane ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(398, '2,2-diom C3 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(399, 'c-C4 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(400, 'i-pentane ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(401, 'n-pentane ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(402, 'c-pentane ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(403, '2,2-dim-C4 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(404, '2,3-dimC4 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(405, '2-m-C5 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(406, '3-m-C5 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(407, 'n-hexane ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(408, 'hexane ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(409, 'm-c-C5 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(410, 'benzene ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(411, 'c-hexane ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(412, '223-tm-C4 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(413, '3,3-dim-C5 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(414, 'n-C7 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(415, 'm-c-C6 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(416, 'et-c-C5 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(417, 'toluene ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(418, 'c-c7 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(419, '11-dm-c-C6 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(420, 'c-c8 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(421, 'c-12-dmcC6 ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(422, 'et-benzene ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(423, 'MDEA+ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(424, 'H3O+ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(425, 'MDEA ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(426, 'HCO3- ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(427, 'OH- ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(428, 'Na+ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(429, 'Cl- ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(430, 'Ca++ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(431, 'Li+ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(432, 'Br- ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(433, 'NH4+ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(434, 'CO3-- ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(435, 'DEACOO- ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(436, 'DEA ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(437, 'DEA+ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(438, 'BEA ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(439, 'BEA+ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(440, 'BEACOO- ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(441, 'K+ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(442, 'HS- ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(443, 'S-- ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(444, 'I- ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(445, 'Mg++ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(446, 'Ba++ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(447, 'Sr++ ', 'MDEA ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(449, 'methanol ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(450, 'ethanol ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(451, 'MEG ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(452, 'DEG ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(453, 'TEG ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(454, 'NaCl ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(455, 'KCl ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(456, 'CaCl2 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(457, 'HCOONa ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(458, 'HCOOK ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(459, 'HCOOCs ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(460, 'helium ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(461, 'hydrogen ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(462, 'nitrogen ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(463, 'Ar ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(464, 'oxygen ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(465, 'CO2 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(466, 'H2S ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(467, 'methane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(468, 'ethane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(469, 'propane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(470, 'c-propane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(471, 'i-butane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(472, 'n-butane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(473, '2,2-diom C3 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(474, 'c-C4 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(475, 'i-pentane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(476, 'n-pentane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(477, 'c-pentane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(478, '2,2-dim-C4 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(479, '2,3-dimC4 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(480, '2-m-C5 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(481, '3-m-C5 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(482, 'n-hexane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(483, 'hexane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(484, 'm-c-C5 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(485, 'benzene ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(486, 'c-hexane ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(487, '223-tm-C4 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(488, '3,3-dim-C5 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(489, 'n-C7 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(490, 'm-c-C6 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(491, 'et-c-C5 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(492, 'toluene ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(493, 'c-c7 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(494, '11-dm-c-C6 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(495, 'c-c8 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(496, 'c-12-dmcC6 ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(497, 'et-benzene ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(498, 'MDEA+ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(499, 'H3O+ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(500, 'MDEA ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(501, 'HCO3- ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(502, 'OH- ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(503, 'Na+ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(504, 'Cl- ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(505, 'Ca++ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(506, 'Li+ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(507, 'Br- ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(508, 'NH4+ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(509, 'CO3-- ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(510, 'DEACOO- ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(511, 'DEA ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(512, 'DEA+ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(513, 'BEA ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(514, 'BEA+ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(515, 'BEACOO- ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(516, 'K+ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(517, 'HS- ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(518, 'S-- ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(519, 'I- ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(520, 'Mg++ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(521, 'Ba++ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(522, 'Sr++ ', 'MDEA+ ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(524, 'methanol ', 'nitrogen ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(525, 'ethanol ', 'nitrogen ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(526, 'MEG ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(527, 'DEG ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(528, 'TEG ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(529, 'NaCl ', 'nitrogen ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(530, 'KCl ', 'nitrogen ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(531, 'CaCl2 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(532, 'HCOONa ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(533, 'HCOOK ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(534, 'HCOOCs ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(535, 'helium ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(536, 'hydrogen ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(537, 'nitrogen ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(538, 'Ar ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(539, 'oxygen ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(540, 'CO2 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(541, 'H2S ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(542, 'methane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(543, 'ethane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(544, 'propane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(545, 'c-propane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(546, 'i-butane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(547, 'n-butane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(548, '2,2-diom C3 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(549, 'c-C4 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(550, 'i-pentane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(551, 'n-pentane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(552, 'c-pentane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(553, '2,2-dim-C4 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(554, '2,3-dimC4 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(555, '2-m-C5 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(556, '3-m-C5 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(557, 'n-hexane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(558, 'hexane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(559, 'm-c-C5 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(560, 'benzene ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(561, 'c-hexane ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(562, '223-tm-C4 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(563, '3,3-dim-C5 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(564, 'n-C7 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(565, 'm-c-C6 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(566, 'et-c-C5 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(567, 'toluene ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(568, 'c-c7 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(569, '11-dm-c-C6 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(570, 'c-c8 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(571, 'c-12-dmcC6 ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(572, 'et-benzene ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(573, 'MDEA+ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(574, 'H3O+ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(575, 'MDEA ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(576, 'HCO3- ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(577, 'OH- ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(578, 'Na+ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(579, 'Cl- ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(580, 'Ca++ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(581, 'Li+ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(582, 'Br- ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(583, 'NH4+ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(584, 'CO3-- ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(585, 'DEACOO- ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(586, 'DEA ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(587, 'DEA+ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(588, 'BEA ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(589, 'BEA+ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(590, 'BEACOO- ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(591, 'K+ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(592, 'HS- ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(593, 'S-- ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(594, 'I- ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(595, 'Mg++ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(596, 'Ba++ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(597, 'Sr++ ', 'nitrogen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(598, 'water ', 'H2S ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(599, 'methanol ', 'H2S ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(600, 'ethanol ', 'H2S ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(601, 'MEG ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(602, 'DEG ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(603, 'TEG ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(604, 'NaCl ', 'H2S ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(605, 'KCl ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(606, 'CaCl2 ', 'H2S ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(607, 'HCOONa ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(608, 'HCOOK ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(609, 'HCOOCs ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(610, 'helium ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(611, 'hydrogen ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(612, 'nitrogen ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(613, 'Ar ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(614, 'oxygen ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(615, 'CO2 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(616, 'H2S ', 'H2S ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(617, 'methane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(618, 'ethane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(619, 'propane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(620, 'c-propane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(621, 'i-butane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(622, 'n-butane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(623, '2,2-diom C3 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(624, 'c-C4 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(625, 'i-pentane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(626, 'n-pentane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(627, 'c-pentane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(628, '2,2-dim-C4 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(629, '2,3-dimC4 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(630, '2-m-C5 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(631, '3-m-C5 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(632, 'n-hexane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(633, 'hexane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(634, 'm-c-C5 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(635, 'benzene ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(636, 'c-hexane ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(637, '223-tm-C4 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(638, '3,3-dim-C5 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(639, 'n-C7 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(640, 'm-c-C6 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(641, 'et-c-C5 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(642, 'toluene ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(643, 'c-c7 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(644, '11-dm-c-C6 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(645, 'c-c8 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(646, 'c-12-dmcC6 ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(647, 'et-benzene ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(648, 'MDEA+ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(649, 'H3O+ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(650, 'MDEA ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(651, 'HCO3- ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(652, 'OH- ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(653, 'Na+ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(654, 'Cl- ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(655, 'Ca++ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(656, 'Li+ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(657, 'Br- ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(658, 'NH4+ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(659, 'CO3-- ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(660, 'DEACOO- ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(661, 'DEA ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(662, 'DEA+ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(663, 'BEA ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(664, 'BEA+ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(665, 'BEACOO- ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(666, 'K+ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(667, 'HS- ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(668, 'S-- ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(669, 'I- ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(670, 'Mg++ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(671, 'Ba++ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(672, 'Sr++ ', 'H2S ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(673, 'methanol ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(674, 'ethanol ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(675, 'MEG ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(676, 'DEG ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(677, 'TEG ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(678, 'NaCl ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(679, 'KCl ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(680, 'CaCl2 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(681, 'HCOONa ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(682, 'HCOOK ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(683, 'HCOOCs ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(684, 'helium ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(685, 'hydrogen ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(686, 'nitrogen ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(687, 'Ar ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(688, 'oxygen ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(690, 'H2S ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(691, 'methane ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(692, 'ethane ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(693, 'propane ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(694, 'c-propane ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(695, 'i-butane ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(696, 'n-butane ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(697, '2,2-diom C3 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(698, 'c-C4 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(699, 'i-pentane ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(700, 'n-pentane ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(701, 'c-pentane ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(702, '2,2-dim-C4 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(703, '2,3-dimC4 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(704, '2-m-C5 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(705, '3-m-C5 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(706, 'n-hexane ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(707, 'hexane ', 'methanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(708, 'm-c-C5 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(709, 'benzene ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(710, 'c-hexane ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(711, '223-tm-C4 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(712, '3,3-dim-C5 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(713, 'n-C7 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(714, 'm-c-C6 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(715, 'et-c-C5 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(716, 'toluene ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(717, 'c-c7 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(718, '11-dm-c-C6 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(719, 'c-c8 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(720, 'c-12-dmcC6 ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(721, 'et-benzene ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(722, 'MDEA+ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(723, 'H3O+ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(724, 'MDEA ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(725, 'HCO3- ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(726, 'OH- ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(727, 'Na+ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(728, 'Cl- ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(729, 'Ca++ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(730, 'Li+ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(731, 'Br- ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(732, 'NH4+ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(733, 'CO3-- ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(734, 'DEACOO- ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(735, 'DEA ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(736, 'DEA+ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(737, 'BEA ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(738, 'BEA+ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(739, 'BEACOO- ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(740, 'K+ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(741, 'HS- ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(742, 'S-- ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(743, 'I- ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(744, 'Mg++ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(745, 'Ba++ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(746, 'Sr++ ', 'methanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(747, 'methanol ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(748, 'ethanol ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(749, 'MEG ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(750, 'DEG ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(751, 'TEG ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(752, 'NaCl ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(753, 'KCl ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(754, 'CaCl2 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(755, 'HCOONa ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(756, 'HCOOK ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(757, 'HCOOCs ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(758, 'helium ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(759, 'hydrogen ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(761, 'Ar ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(762, 'oxygen ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(763, 'CO2 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(764, 'H2S ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(765, 'methane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(766, 'ethane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(767, 'propane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(768, 'c-propane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(769, 'i-butane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(770, 'n-butane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(771, '2,2-diom C3 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(772, 'c-C4 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(773, 'i-pentane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(774, 'n-pentane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(775, 'c-pentane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(776, '2,2-dim-C4 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(777, '2,3-dimC4 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(778, '2-m-C5 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(779, '3-m-C5 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(780, 'n-hexane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(781, 'hexane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(782, 'm-c-C5 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(783, 'benzene ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(784, 'c-hexane ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(785, '223-tm-C4 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(786, '3,3-dim-C5 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(787, 'n-C7 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(788, 'm-c-C6 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(789, 'et-c-C5 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(790, 'toluene ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(791, 'c-c7 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(792, '11-dm-c-C6 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(793, 'c-c8 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(794, 'c-12-dmcC6 ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(795, 'et-benzene ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(796, 'MDEA+ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(797, 'H3O+ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(798, 'MDEA ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(799, 'HCO3- ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(800, 'OH- ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(801, 'Na+ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(802, 'Cl- ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(803, 'Ca++ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(804, 'Li+ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(805, 'Br- ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(806, 'NH4+ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(807, 'CO3-- ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(808, 'DEACOO- ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(809, 'DEA ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(810, 'DEA+ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(811, 'BEA ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(812, 'BEA+ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(813, 'BEACOO- ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(814, 'K+ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(815, 'HS- ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(816, 'S-- ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(817, 'I- ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(818, 'Mg++ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(819, 'Ba++ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(820, 'Sr++ ', 'MEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(821, 'methanol ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(822, 'ethanol ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(823, 'MEG ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(824, 'DEG ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(825, 'TEG ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(826, 'NaCl ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(827, 'KCl ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(828, 'CaCl2 ', 'TEG ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(829, 'HCOONa ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(830, 'HCOOK ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(831, 'HCOOCs ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(832, 'helium ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(833, 'hydrogen ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(834, 'nitrogen ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(835, 'Ar ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(836, 'oxygen ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(837, 'CO2 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(838, 'H2S ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(839, 'methane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(840, 'ethane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(841, 'propane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(842, 'c-propane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(843, 'i-butane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(844, 'n-butane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(845, '2,2-diom C3 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(846, 'c-C4 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(847, 'i-pentane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(848, 'n-pentane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(849, 'c-pentane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(850, '2,2-dim-C4 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(851, '2,3-dimC4 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(852, '2-m-C5 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(853, '3-m-C5 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(854, 'n-hexane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(855, 'hexane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(856, 'm-c-C5 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(857, 'benzene ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(858, 'c-hexane ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(859, '223-tm-C4 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(860, '3,3-dim-C5 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(861, 'n-C7 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(862, 'm-c-C6 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(863, 'et-c-C5 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(864, 'toluene ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(865, 'c-c7 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(866, '11-dm-c-C6 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(867, 'c-c8 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(868, 'c-12-dmcC6 ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(869, 'et-benzene ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(870, 'MDEA+ ', 'TEG ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(871, 'H3O+ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(872, 'MDEA ', 'TEG ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(873, 'HCO3- ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(874, 'OH- ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(875, 'Na+ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(876, 'Cl- ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(877, 'Ca++ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(878, 'Li+ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(879, 'Br- ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(880, 'NH4+ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(881, 'CO3-- ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(882, 'DEACOO- ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(883, 'DEA ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(884, 'DEA+ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(885, 'BEA ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(886, 'BEA+ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(887, 'BEACOO- ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(888, 'K+ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(889, 'HS- ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(890, 'S-- ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(891, 'I- ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(892, 'Mg++ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(893, 'Ba++ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(894, 'Sr++ ', 'TEG ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(895, 'water ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(896, 'methanol ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(897, 'ethanol ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(898, 'MEG ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(899, 'DEG ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(900, 'TEG ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(901, 'NaCl ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(902, 'KCl ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(903, 'CaCl2 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(904, 'HCOONa ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(905, 'HCOOK ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(906, 'HCOOCs ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(907, 'helium ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(908, 'hydrogen ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(909, 'nitrogen ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(910, 'Ar ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(911, 'oxygen ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(912, 'CO2 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(913, 'H2S ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(914, 'methane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(915, 'ethane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(916, 'propane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(917, 'c-propane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(918, 'i-butane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(919, 'n-butane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(920, '2,2-diom C3 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(921, 'c-C4 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(922, 'i-pentane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(923, 'n-pentane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(924, 'c-pentane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(925, '2,2-dim-C4 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(926, '2,3-dimC4 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(927, '2-m-C5 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(928, '3-m-C5 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(929, 'n-hexane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(930, 'hexane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(931, 'm-c-C5 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(932, 'benzene ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(933, 'c-hexane ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(934, '223-tm-C4 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(935, '3,3-dim-C5 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(936, 'n-C7 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(937, 'm-c-C6 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(938, 'et-c-C5 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(939, 'toluene ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(940, 'c-c7 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(941, '11-dm-c-C6 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(942, 'c-c8 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(943, 'c-12-dmcC6 ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(944, 'et-benzene ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(945, 'MDEA+ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(946, 'H3O+ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(947, 'MDEA ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(948, 'HCO3- ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(949, 'OH- ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(950, 'Na+ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(951, 'Cl- ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(952, 'Ca++ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(953, 'Li+ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(954, 'Br- ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(955, 'NH4+ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(956, 'CO3-- ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(957, 'DEACOO- ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(958, 'DEA ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(959, 'DEA+ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(960, 'BEA ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(961, 'BEA+ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(962, 'BEACOO- ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(963, 'K+ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(964, 'HS- ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(965, 'S-- ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(966, 'I- ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(967, 'Mg++ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(968, 'Ba++ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(969, 'Sr++ ', 'oxygen ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(970, 'water ', 'n-butane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(971, 'methanol ', 'n-butane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(972, 'ethanol ', 'n-butane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(973, 'MEG ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(974, 'DEG ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(975, 'TEG ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(976, 'NaCl ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(977, 'KCl ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(978, 'CaCl2 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(979, 'HCOONa ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(980, 'HCOOK ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(981, 'HCOOCs ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(982, 'helium ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(983, 'hydrogen ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(984, 'nitrogen ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(985, 'Ar ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(986, 'oxygen ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(987, 'CO2 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(988, 'H2S ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(989, 'methane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(990, 'ethane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(991, 'propane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(992, 'c-propane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(993, 'i-butane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(994, 'n-butane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(995, '2,2-diom C3 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(996, 'c-C4 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(997, 'i-pentane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(998, 'n-pentane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(999, 'c-pentane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1000, '2,2-dim-C4 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1001, '2,3-dimC4 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1002, '2-m-C5 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1003, '3-m-C5 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1004, 'n-hexane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1005, 'hexane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1006, 'm-c-C5 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1007, 'benzene ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1008, 'c-hexane ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1009, '223-tm-C4 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1010, '3,3-dim-C5 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1011, 'n-C7 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1012, 'm-c-C6 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1013, 'et-c-C5 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1014, 'toluene ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1015, 'c-c7 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1016, '11-dm-c-C6 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1017, 'c-c8 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1018, 'c-12-dmcC6 ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1019, 'et-benzene ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1020, 'MDEA+ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1021, 'H3O+ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1022, 'MDEA ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1023, 'HCO3- ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1024, 'OH- ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1025, 'Na+ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1026, 'Cl- ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1027, 'Ca++ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1028, 'Li+ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1029, 'Br- ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1030, 'NH4+ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1031, 'CO3-- ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1032, 'DEACOO- ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1033, 'DEA ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1034, 'DEA+ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1035, 'BEA ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1036, 'BEA+ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1037, 'BEACOO- ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1038, 'K+ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1039, 'HS- ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1040, 'S-- ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1041, 'I- ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1042, 'Mg++ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1043, 'Ba++ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1044, 'Sr++ ', 'n-butane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1046, 'methanol ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1047, 'ethanol ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1048, 'MEG ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1049, 'DEG ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1050, 'TEG ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1051, 'NaCl ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1052, 'KCl ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1053, 'CaCl2 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1054, 'HCOONa ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1055, 'HCOOK ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1056, 'HCOOCs ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1057, 'helium ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1058, 'hydrogen ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1059, 'nitrogen ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1060, 'Ar ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1061, 'oxygen ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1062, 'CO2 ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1063, 'H2S ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1064, 'methane ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1065, 'ethane ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1066, 'propane ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1067, 'c-propane ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1068, 'i-butane ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1069, 'n-butane ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1070, '2,2-diom C3 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1071, 'c-C4 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1072, 'i-pentane ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1073, 'n-pentane ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1074, 'c-pentane ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1075, '2,2-dim-C4 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1076, '2,3-dimC4 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1077, '2-m-C5 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1078, '3-m-C5 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1079, 'n-hexane ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1080, 'hexane ', 'ethanol ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1081, 'm-c-C5 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1082, 'benzene ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1083, 'c-hexane ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1084, '223-tm-C4 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1085, '3,3-dim-C5 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1086, 'n-C7 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1087, 'm-c-C6 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1088, 'et-c-C5 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1089, 'toluene ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1090, 'c-c7 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1091, '11-dm-c-C6 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1092, 'c-c8 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1093, 'c-12-dmcC6 ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1094, 'et-benzene ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1095, 'MDEA+ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1096, 'H3O+ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1097, 'MDEA ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1098, 'HCO3- ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1099, 'OH- ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1100, 'Na+ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1101, 'Cl- ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1102, 'Ca++ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1103, 'Li+ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1104, 'Br- ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1105, 'NH4+ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1106, 'CO3-- ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1107, 'DEACOO- ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1108, 'DEA ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1109, 'DEA+ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1110, 'BEA ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1111, 'BEA+ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1112, 'BEACOO- ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1113, 'K+ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1114, 'HS- ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1115, 'S-- ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1116, 'I- ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1117, 'Mg++ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1118, 'Ba++ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1119, 'Sr++ ', 'ethanol ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1120, 'water ', 'n-pentane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1121, 'methanol ', 'n-pentane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1122, 'ethanol ', 'n-pentane ', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1123, 'MEG ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1124, 'DEG ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1125, 'TEG ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1126, 'NaCl ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1127, 'KCl ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1128, 'CaCl2 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1129, 'HCOONa ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1130, 'HCOOK ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1131, 'HCOOCs ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1132, 'helium ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1133, 'hydrogen ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1134, 'nitrogen ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1135, 'Ar ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1136, 'oxygen ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1137, 'CO2 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1138, 'H2S ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1139, 'methane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1140, 'ethane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1141, 'propane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1142, 'c-propane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1143, 'i-butane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1144, 'n-butane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1145, '2,2-diom C3 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1146, 'c-C4 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1147, 'i-pentane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1148, 'n-pentane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1149, 'c-pentane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1150, '2,2-dim-C4 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1151, '2,3-dimC4 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1152, '2-m-C5 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1153, '3-m-C5 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1154, 'n-hexane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1155, 'hexane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1156, 'm-c-C5 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1157, 'benzene ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1158, 'c-hexane ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1159, '223-tm-C4 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1160, '3,3-dim-C5 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1161, 'n-C7 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1162, 'm-c-C6 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1163, 'et-c-C5 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1164, 'toluene ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1165, 'c-c7 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1166, '11-dm-c-C6 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1167, 'c-c8 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1168, 'c-12-dmcC6 ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1169, 'et-benzene ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1170, 'MDEA+ ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1171, 'H3O+ ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1172, 'MDEA ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1173, 'HCO3- ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1174, 'OH- ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1175, 'Na+ ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1176, 'Cl- ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1177, 'Ca++ ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1178, 'Li+ ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1179, 'Br- ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1180, 'NH4+ ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1181, 'CO3-- ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1182, 'DEACOO- ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1183, 'DEA ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1184, 'DEA+ ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1185, 'BEA ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1186, 'BEA+ ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1187, 'BEACOO- ', 'n-pentane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1188, 'water ', 'n-heptane', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1189, 'methanol ', 'n-heptane', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1190, 'ethanol ', 'n-heptane', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1191, 'MEG ', 'n-heptane', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1192, 'DEG ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1193, 'TEG ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1194, 'NaCl ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1195, 'KCl ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1196, 'CaCl2 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1197, 'HCOONa ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1198, 'HCOOK ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1199, 'HCOOCs ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1200, 'helium ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1201, 'hydrogen ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1202, 'nitrogen ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1203, 'Ar ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1204, 'oxygen ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1205, 'CO2 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1206, 'H2S ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1207, 'methane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1208, 'ethane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1209, 'propane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1210, 'c-propane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1211, 'i-butane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1212, 'n-butane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1213, '2,2-diom C3 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1214, 'c-C4 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1215, 'i-pentane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1216, 'n-pentane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1217, 'c-pentane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1218, '2,2-dim-C4 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1219, '2,3-dimC4 ', 'n-heptane ', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1220, '2-m-C5 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1221, '3-m-C5 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1222, 'n-hexane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1223, 'hexane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1224, 'm-c-C5 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1225, 'benzene ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1226, 'c-hexane ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1227, '223-tm-C4 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1228, '3,3-dim-C5 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1229, 'n-C7 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1230, 'm-c-C6 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1231, 'et-c-C5 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1232, 'toluene ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1233, 'c-c7 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1234, '11-dm-c-C6 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1235, 'c-c8 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1236, 'c-12-dmcC6 ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1237, 'et-benzene ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1238, 'MDEA+ ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1239, 'H3O+ ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1240, 'MDEA ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1241, 'HCO3- ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1242, 'OH- ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1243, 'Na+ ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1244, 'Cl- ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1245, 'Ca++ ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1246, 'Li+ ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1247, 'Br- ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1248, 'NH4+ ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1249, 'CO3-- ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1250, 'DEACOO- ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1251, 'DEA ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1252, 'DEA+ ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1253, 'BEA ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1254, 'BEA+ ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1255, 'BEACOO- ', 'n-heptane', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1260, 'S8', 'methane ', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1261, 'S8', 'n-hexane', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1262, 'S8', 'n-pentane', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1263, 'S8', 'i-pentane', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1264, 'S8', 'n-hexane', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1265, 'S8', 'n-heptane', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1266, 'S8', 'n-octane', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1267, 'S8', 'i-butane', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1268, 'S8', 'n-butane', 'Classic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1347, 'c-hexane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1348, 'c-c7 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1349, 'hexane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1350, 'HCO3- ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1351, 'MDEA ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1352, 'H3O+ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1353, 'MDEA+ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1354, 'et-benzene ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1355, 'c-12-dmcC6 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1356, 'Na+ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1357, '11-dm-c-C6 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1358, 'Cl- ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1359, 'toluene ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1360, 'et-c-C5 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1361, 'm-c-C6 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1362, 'n-C7 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1363, '3,3-dim-C5 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1364, '223-tm-C4 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1365, 'benzene ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1366, 'c-c8 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1367, 'DEA+ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1368, 'Sr++ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1369, 'Ba++ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1370, 'm-c-C5 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1371, 'I- ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1372, 'HS- ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1373, 'K+ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1374, 'BEACOO- ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1375, 'OH- ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1376, 'BEA ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1377, 'S-- ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1378, 'DEA ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1379, 'DEACOO- ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1380, 'CO3-- ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1381, 'NH4+ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1382, 'Br- ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1383, 'Li+ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1384, 'Ca++ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1385, 'BEA+ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1386, 'CaCl2 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1387, 'oxygen ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1388, 'Ar ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1389, 'nitrogen ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1390, 'hydrogen ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1391, 'helium ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1392, 'HCOOCs ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1393, 'n-hexane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1394, 'HCOONa ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1395, 'methane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1396, 'KCl ', 'neon', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1397, 'NaCl ', 'neon', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1398, 'TEG ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1399, 'DEG ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1400, 'MEG ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1401, 'ethanol ', 'neon', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1402, 'HCOOK ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1403, 'c-C4 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1404, '3-m-C5 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1405, 'Mg++ ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1406, '2-m-C5 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1407, '2,3-dimC4 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1408, '2,2-dim-C4 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1409, 'c-pentane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1410, 'CO2 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1411, 'i-pentane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1412, 'H2S ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1413, '2,2-diom C3 ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1414, 'n-butane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1415, 'i-butane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1416, 'c-propane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1417, 'propane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1418, 'ethane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1419, 'methanol ', 'neon', 'HV ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO PUBLIC.INTERREF(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, HVALPHA, HVGIJ, HVGJI, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, "cpakij-SRK", "cpakij-PR", KIJWSUNIFAC) VALUES +(1420, 'n-pentane ', 'neon', 'Classic ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +CREATE CACHED TABLE PUBLIC.INTERSRK( + ID INT NOT NULL, + COMP1 VARCHAR(255) DEFAULT NULL, + COMP2 VARCHAR(255) DEFAULT NULL, + HVTYPE VARCHAR(255) DEFAULT NULL, + KIJSRK DOUBLE DEFAULT NULL, + KIJTSRK DOUBLE DEFAULT NULL, + KIJPR DOUBLE DEFAULT NULL, + KIJTPR DOUBLE DEFAULT '0', + KIJPCSAFT DOUBLE DEFAULT '0', + HVALPHA DOUBLE DEFAULT NULL, + HVGIJ DOUBLE DEFAULT NULL, + HVGJI DOUBLE DEFAULT NULL, + CALCWIJ INT DEFAULT '0', + W1 DOUBLE DEFAULT NULL, + W2 DOUBLE DEFAULT NULL, + W3 DOUBLE DEFAULT NULL, + WSTYPE VARCHAR(255) DEFAULT NULL, + KIJWS DOUBLE DEFAULT NULL, + NRTLALPHA DOUBLE DEFAULT NULL, + NRTLGIJ DOUBLE DEFAULT NULL, + NRTLGJI DOUBLE DEFAULT NULL, + GIJVISC DOUBLE DEFAULT NULL, + HVGIJT DOUBLE DEFAULT NULL, + HVGJIT DOUBLE DEFAULT NULL, + WSGIJT DOUBLE DEFAULT NULL, + WSGJIT DOUBLE DEFAULT NULL, + CPAKIJ_SRK DOUBLE DEFAULT NULL, + CPAKIJ_PR DOUBLE DEFAULT '0', + KIJWSUNIFAC DOUBLE DEFAULT NULL, + AIJDESMATH DOUBLE DEFAULT '0', + BIJDESMATH DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.INTERSRK ADD CONSTRAINT PUBLIC.CONSTRAINT_50A PRIMARY KEY(ID); +-- 1365 +/- SELECT COUNT(*) FROM PUBLIC.INTERSRK; +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(6933, 'water ', 'methane ', 'HV ', 0.45, 0.0, 0.651, -1.385, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, -0.045, 0.161199631, 0.0, 0.0, 0.0), +(6934, 'methanol ', 'methane ', 'HV ', 0.13, 0.0, 0.13, 0.0, 0.0, 0.395, 1610.0, 255.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 646.5, -2.056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6935, 'ethanol ', 'methane ', 'HV ', 0.13, 0.0, 0.13, 0.0, 0.0, 0.395, 1610.0, 255.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 521.5, -2.056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6936, 'MEG ', 'methane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6937, 'DEG ', 'methane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6938, 'TEG ', 'methane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, -328.6, -2.056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0), +(6939, 'NaCl ', 'methane ', 'HV ', 2.02, 0.0, 2.02, 0.0, 0.0, 0.084, 7623.0, 5281.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 7623.0, 5281.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6940, 'KCl', 'methane ', 'Classic ', 1.64, 0.0, 1.64, 0.0, 0.0, 0.097, 6733.0, 4007.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 6733.0, 4007.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6941, 'CaCl2 ', 'methane ', 'HV ', 2.07, 0.0, 2.07, 0.0, 0.0, 0.055, 8790.0, 14765.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 8790.0, 14765.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6942, 'HCOONa ', 'methane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6943, 'HCOOK ', 'methane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(6944, 'HCOOCs ', 'methane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6945, 'helium ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6946, 'hydrogen ', 'methane ', 'Classic ', 0.01, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.01, 0.0, 0.0, 0.0), +(6947, 'nitrogen ', 'methane ', 'Classic ', 0.031199, 0.0, 0.03599, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.02, 0.0, 0.0, 0.0), +(6948, 'argon', 'methane ', 'Classic ', 0.0252, 0.0, 0.0252, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0252, 0.0252, 0.0, 0.0, 0.0), +(6949, 'oxygen ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6950, 'CO2 ', 'methane ', 'Classic ', 0.0956, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0956, 0.0956, 0.0, 0.0, 0.0), +(6951, 'H2S ', 'methane ', 'Classic ', 0.08, 0.0, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(6952, 'ethane ', 'methane ', 'Classic ', 0.00295295, 0.0, 0.00295295, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.029890022, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00295295, 0.00295295, 0.0, 0.0, 0.0), +(6953, 'propane ', 'methane ', 'Classic ', 0.00747722, 0.0, 0.00747722, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.131666934, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00747722, 0.00747722, 0.0, 0.0, 0.0), +(6954, 'c-propane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(6955, 'i-butane ', 'methane ', 'Classic ', 0.01369935, 0.0, 0.01369935, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.245598745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6956, 'n-butane ', 'methane ', 'Classic ', 0.01289789, 0.0, 0.01289789, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.222563826, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6957, '2,2-diom C3 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6958, 'c-C4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6959, 'i-pentane ', 'methane ', 'Classic ', 0.01817552, 0.0, 0.01817552, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6960, 'n-pentane ', 'methane ', 'Classic ', 0.01847102, 0.0, 0.01847102, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6961, 'c-pentane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6962, '2,2-dim-C4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6963, '2,3-dimC4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6964, '2-m-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6965, '3-m-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(6966, 'n-hexane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6967, 'hexane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6968, 'm-c-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6969, 'benzene ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6970, 'c-hexane ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6971, '223-tm-C4 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6972, '3,3-dim-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6973, 'n-C7 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6974, 'm-c-C6 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6975, 'et-c-C5 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6976, 'toluene ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(6977, 'c-c7 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6978, '11-dm-c-C6 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6979, 'c-c8 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6980, 'c-12-dmcC6 ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6981, 'et-benzene ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6982, 'MDEA+ ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 5.76617E-4, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6983, 'H3O+ ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6984, 'MDEA ', 'methane ', 'Classic', 0.599959902, 0.0, 0.646504377, 0.0, 0.0, 0.122, 2467.0, 274.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6985, 'HCO3- ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6986, 'OH- ', 'methane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6987, 'Na+ ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(6988, 'Cl- ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(6989, 'Ca++ ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(6990, 'Li+ ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(6991, 'Br- ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(6992, 'NH4+ ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(6993, 'CO3-- ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(6994, 'DEACOO- ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(6995, 'DEA ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(6996, 'DEA+ ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(6997, 'BEA ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(6998, 'BEA+ ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(6999, 'BEACOO- ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(7000, 'K+ ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(7001, 'HS- ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(7002, 'S-- ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(7003, 'I- ', 'methane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0), +(7004, 'Mg++ ', 'methane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7005, 'Ba++ ', 'methane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7006, 'Sr++ ', 'methane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7007, 'methanol ', 'ethane ', 'HV ', 0.19, 0.0, 0.19, 0.0, 0.0, 0.395, 2005.0, 494.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 2005.0, 494.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7008, 'ethanol ', 'ethane ', 'HV ', 0.19, 0.0, 0.19, 0.0, 0.0, 0.395, 2005.0, 494.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 2005.0, 494.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7009, 'MEG ', 'ethane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7010, 'DEG ', 'ethane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7011, 'TEG ', 'ethane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7012, 'NaCl ', 'ethane ', 'Classic ', 0.78, 0.0, 0.78, 0.0, 0.0, 0.062, 12235.0, 4227.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.78, 0.062, 12235.0, 4227.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7013, 'KCl ', 'ethane ', 'Classic ', 1.33, 0.0, 1.33, 0.0, 0.0, 0.021, 24788.0, 50127.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.33, 0.021, 24788.0, 50127.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7014, 'CaCl2 ', 'ethane ', 'Classic ', 1.18, 0.0, 1.18, 0.0, 0.0, 0.0364, 99000.0, 3080.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7015, 'HCOONa ', 'ethane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7016, 'HCOOK ', 'ethane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7017, 'HCOOCs ', 'ethane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7018, 'helium ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7019, 'hydrogen ', 'ethane ', 'Classic ', 0.0367, 0.0, 0.0367, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0367, 0.0367, 0.0, 0.0, 0.0), +(7020, 'nitrogen ', 'ethane ', 'Classic ', 0.031899, 0.0, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.031899, 0.031899, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7021, 'Ar ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7022, 'oxygen ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7023, 'CO2 ', 'ethane ', 'Classic ', 0.1401, 0.0, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7024, 'H2S ', 'ethane ', 'Classic ', 0.07, 0.0, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0, 0.0, 0.0), +(7025, 'propane ', 'ethane ', 'Classic ', 0.00185286, 0.0, 0.00185286, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.048134573, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00185286, 0.00185286, 0.0, 0.0, 0.0), +(7026, 'c-propane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7027, 'i-butane ', 'ethane ', 'Classic ', 0.00511365, 0.0, 0.00511365, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.138621605, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7028, 'n-butane ', 'ethane ', 'Classic ', 0.00464288, 0.0, 0.00464288, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.137552316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7029, '2,2-diom C3 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7030, 'c-C4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7031, 'i-pentane ', 'ethane ', 'Classic ', 0.00791956, 0.0, 0.00791956, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7032, 'n-pentane ', 'ethane ', 'Classic ', 0.00811359, 0.0, 0.00811359, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7033, 'c-pentane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7034, '2,2-dim-C4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7035, '2,3-dimC4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7036, '2-m-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7037, '3-m-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7038, 'n-hexane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7039, 'hexane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7040, 'm-c-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7041, 'benzene ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7042, 'c-hexane ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7043, '223-tm-C4 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7044, '3,3-dim-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7045, 'n-C7 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7046, 'm-c-C6 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7047, 'et-c-C5 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7048, 'toluene ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7049, 'c-c7 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7050, '11-dm-c-C6 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7051, 'c-c8 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7052, 'c-12-dmcC6 ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7053, 'et-benzene ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7054, 'MDEA+ ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7055, 'H3O+ ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7056, 'MDEA ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7057, 'HCO3- ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7058, 'OH- ', 'ethane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7059, 'Na+ ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7060, 'Cl- ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7061, 'Ca++ ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7062, 'Li+ ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7063, 'Br- ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7064, 'NH4+ ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7065, 'CO3-- ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7066, 'DEACOO- ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7067, 'DEA ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7068, 'DEA+ ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7069, 'BEA ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7070, 'BEA+ ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7071, 'BEACOO- ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7072, 'K+ ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7073, 'HS- ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7074, 'S-- ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7075, 'I- ', 'ethane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7076, 'Mg++ ', 'ethane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7077, 'Ba++ ', 'ethane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7078, 'Sr++ ', 'ethane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7079, 'methanol ', 'CO2 ', 'HV', 0.0148, 0.0, 0.023, 0.0, 0.0, 0.68, -92.26, -546.3, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 3307.0, 276.0, 0.0, 0.97, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7080, 'ethanol ', 'CO2 ', 'HV', 0.5, 0.0, 0.5, 0.0, 0.0, 0.395, 3307.0, 276.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 3307.0, 276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7081, 'MEG ', 'CO2 ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.3, 0.0, 0.0, 0.0), +(7082, 'DEG ', 'CO2 ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7083, 'TEG ', 'CO2 ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.09, 0.0, 0.0, 0.0, 0.0), +(7084, 'NaCl ', 'CO2 ', 'HV ', 2.1, 0.0, 2.1, 0.0, 0.0, -0.007, 0.07, 3087.0, 0, 0.0, 0.0, 0.0, 'WS ', 2.1, -0.007, 0.07, 3087.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7085, 'KCl ', 'CO2 ', 'HV ', 1.79, 0.0, 1.79, 0.0, 0.0, -0.1218, 1865.0, 1137.0, 0, 0.0, 0.0, 0.0, 'WS ', 1.79, -0.1218, 1865.0, 1137.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7086, 'CaCl2 ', 'CO2 ', 'HV ', 2.23, 0.0, 2.23, 0.0, 0.0, -0.111, 628.0, 1721.0, 0, 0.0, 0.0, 0.0, 'WS ', 2.23, -0.111, 628.0, 1721.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7087, 'HCOONa ', 'CO2 ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7088, 'HCOOK ', 'CO2 ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7089, 'HCOOCs ', 'CO2 ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7090, 'helium ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7091, 'hydrogen ', 'CO2 ', 'Classic ', 0.0362, 0.0, 0.0362, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0362, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0362, 0.0362, 0.0, 0.0, 0.0), +(7092, 'nitrogen ', 'CO2 ', 'Classic ', -0.0171, 0.0, -0.019997, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7093, 'argon', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7094, 'oxygen ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7095, 'H2S ', 'CO2 ', 'Classic ', 0.12, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7096, 'ethane ', 'CO2 ', 'Classic ', 0.1401, 0.0, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7097, 'propane ', 'CO2 ', 'Classic ', 0.13680001, 0.0, 0.13500001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7098, 'c-propane ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7099, 'i-butane ', 'CO2 ', 'Classic ', 0.13680001, 0.0, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7100, 'n-butane ', 'CO2 ', 'Classic ', 0.14120001, 0.0, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7101, '2,2-diom C3 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7102, 'c-C4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7103, 'i-pentane ', 'CO2 ', 'Classic ', 0.12970001, 0.0, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7104, 'n-pentane ', 'CO2 ', 'Classic ', 0.1347, 0.0, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7105, 'c-pentane ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7106, '2,2-dim-C4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7107, '2,3-dimC4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7108, '2-m-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7109, '3-m-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7110, 'n-hexane ', 'CO2 ', 'Classic ', 0.12, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7111, 'hexane ', 'CO2 ', 'Classic ', 0.12, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7112, 'm-c-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7113, 'benzene ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7114, 'c-hexane ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7115, '223-tm-C4 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7116, '3,3-dim-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7117, 'n-C7 ', 'CO2 ', 'Classic ', 0.1, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.0), +(7118, 'm-c-C6 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7119, 'et-c-C5 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7120, 'toluene ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7121, 'c-c7 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7122, '11-dm-c-C6 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7123, 'c-c8 ', 'CO2 ', 'Classic ', 0.1, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.0), +(7124, 'c-12-dmcC6 ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7125, 'et-benzene ', 'CO2 ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7126, 'MDEA+ ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 2.98023E-4, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 6.17E-5, -1.93E-7), +(7127, 'H3O+ ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7128, 'CO2', 'MDEA', 'HV', 0.441894719, 0.0, 0.1, 0.0, 0.0, 0.239, 3204.3057406, -2753.7379912, 0, 0.0, 0.0, 0.0, 'WS ', 1.6, 0.3, -713.0, -393.0, 0.0, -12.47283302, 13.015037932, 0.0, 0.0, 0.3, 0.0, 0.0, 3.34E-5, -2.71E-7), +(7129, 'HCO3- ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.178, -4.39E-8), +(7130, 'OH- ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7131, 'Na+ ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7132, 'Cl- ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7133, 'Ca++ ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7134, 'Li+ ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7135, 'Br- ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7136, 'NH4+ ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7137, 'CO3-- ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 9.58E-4, -4.7E-5), +(7138, 'DEACOO- ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7139, 'DEA ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7140, 'DEA+ ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7141, 'BEA ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7142, 'BEA+ ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7143, 'BEACOO- ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7144, 'K+ ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7145, 'HS- ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7146, 'S-- ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7147, 'I- ', 'CO2 ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7148, 'Mg++ ', 'CO2 ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7149, 'Ba++ ', 'CO2 ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7150, 'Sr++ ', 'CO2 ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7151, 'water ', 'propane ', 'HV ', 0.53, 0.0, 0.53, 0.0, 0.0, 0.07, -1584.0, 3517.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.53, 0.122, 2467.0, 274.0, 0.0, -0.44, -0.1, 0.0, 0.0, 0.11, 0.13287685, 0.0, 0.0, 0.0), +(7152, 'methanol ', 'propane ', 'HV ', 0.22, 0.0, 0.22, 0.0, 0.0, 0.395, 895.0, 435.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7153, 'ethanol ', 'propane ', 'HV ', 0.22, 0.0, 0.22, 0.0, 0.0, 0.395, 895.0, 435.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7154, 'MEG ', 'propane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7155, 'DEG ', 'propane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7156, 'TEG ', 'propane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7157, 'NaCl ', 'propane ', 'Classic ', 0.72, 0.0, 0.72, 0.0, 0.0, 0.0592, 10539.0, 4777.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.72, 0.0592, 10539.0, 4777.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7158, 'KCl ', 'propane ', 'Classic ', 1.36, 0.0, 1.36, 0.0, 0.0, 0.0441, 60604.0, 7490.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.36, 0.0441, 60604.0, 7490.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7159, 'CaCl2 ', 'propane ', 'Classic ', 1.18, 0.0, 1.18, 0.0, 0.0, 0.0364, 99000.0, 3080.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7160, 'HCOONa ', 'propane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7161, 'HCOOK ', 'propane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7162, 'HCOOCs ', 'propane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7163, 'helium ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7164, 'hydrogen ', 'propane ', 'Classic ', 0.0799, 0.0, 0.0799, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0799, 0.0799, 0.0, 0.0, 0.0), +(7165, 'nitrogen ', 'propane ', 'Classic ', 0.0886, 0.0, 0.079998, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0886, 0.0886, 0.0, 0.0, 0.0), +(7166, 'argon', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7167, 'oxygen ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7168, 'CO2 ', 'propane ', 'Classic ', 0.13680001, 0.0, 0.13500001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7169, 'H2S ', 'propane ', 'Classic ', 0.07, 0.0, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0, 0.0, 0.0), +(7171, 'c-propane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7172, 'i-butane ', 'propane ', 'Classic ', 0.00153851, 0.0, 0.00153851, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.028532064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7173, 'n-butane ', 'propane ', 'Classic ', 0.00132268, 0.0, 0.00132268, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.028532064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7174, '2,2-diom C3 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7175, 'c-C4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7176, 'i-pentane ', 'propane ', 'Classic ', 0.00305075, 0.0, 0.00305075, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7177, 'n-pentane ', 'propane ', 'Classic ', 0.00316586, 0.0, 0.00316586, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7178, 'c-pentane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7179, '2,2-dim-C4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7180, '2,3-dimC4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7181, '2-m-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7182, '3-m-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7183, 'n-hexane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7184, 'hexane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7185, 'm-c-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7186, 'benzene ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7187, 'c-hexane ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7188, '223-tm-C4 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7189, '3,3-dim-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7190, 'n-C7 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7191, 'm-c-C6 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7192, 'et-c-C5 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7193, 'toluene ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7194, 'c-c7 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7195, '11-dm-c-C6 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7196, 'c-c8 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7197, 'c-12-dmcC6 ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7198, 'et-benzene ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7199, 'MDEA+ ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7200, 'H3O+ ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7201, 'MDEA ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7202, 'HCO3- ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7203, 'OH- ', 'propane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7204, 'Na+ ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7205, 'Cl- ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7206, 'Ca++ ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7207, 'Li+ ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7208, 'Br- ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7209, 'NH4+ ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7210, 'CO3-- ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7211, 'DEACOO- ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7212, 'DEA ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7213, 'DEA+ ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7214, 'BEA ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7215, 'BEA+ ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7216, 'BEACOO- ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7217, 'K+ ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7218, 'HS- ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7219, 'S-- ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7220, 'I- ', 'propane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7221, 'Mg++ ', 'propane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7222, 'Ba++ ', 'propane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7223, 'Sr++ ', 'propane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7224, 'water ', 'water ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7225, 'methanol ', 'water ', 'HV ', -0.0789, 0.0, -0.0789, 0.0, 0.0, 0.357, 410.67, -169.63, 0, 0.0, 0.0, 0.0, 'WS ', 0.093103947, 0.303, -48.68, 610.6, 0.0, 1.89, -1.11, 0.0, 0.0, -0.1, -0.1, 0.093103947, 0.0, 0.0), +(7226, 'ethanol ', 'water ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.2245, 2207.03, -2612.51, 0, 0.0, 0.0, 0.0, 'WS ', 0.0, 0.3791, -268.88, 885.99, 0.0, -4.6, 7.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7227, 'water', 'MEG', 'HV ', 0.0, 0.0, -0.0385, 0.0, 0.0, 0.3226, -256.39, -61.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.407748, 0.327, 1229.0, -946.4, 0.0, 0.51, 0.78, 0.0, 0.0, -0.115, -0.115, 0.0, 0.0, 0.0), +(7228, 'DEG ', 'water ', 'HV ', -0.1259, 0.0, -0.1259, 0.0, 0.0, 0.4739, -624.62, 715.5, 0, 0.0, 0.0, 0.0, 'WS ', -0.1259, 0.4739, -624.62, 715.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7229, 'TEG ', 'water ', 'HV ', -0.2035, 0.0, -0.2035, 0.0, 0.0, 0.1967, -2913.94, 2497.41, 0, 0.0, 0.0, 0.0, 'WS ', 0.2035, 0.3, -777.0, 1915.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.35, -0.35, 0.0, 0.0, 0.0), +(7230, 'NaCl ', 'water ', 'HV ', -0.2169, 0.0, -0.2169, 0.0, 0.0, -0.7335, -11.7, 95.12, 0, 0.0, 0.0, 0.0, 'WS ', -0.2169, -0.7335, -11.7, 95.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7231, 'KCl ', 'water ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, -0.8262, 650.82, 92.26, 0, 0.0, 0.0, 0.0, 'WS ', 0.0, -0.8262, 650.82, 92.26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7232, 'CaCl2 ', 'water ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, -2.104, 170.53, 66.88, 0, 0.0, 0.0, 0.0, 'WS ', 0.0, -2.104, 170.53, 66.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7233, 'HCOONa ', 'water ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, -0.7911, -26.58, 114.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.0, -0.7911, -26.58, 114.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7234, 'HCOOK ', 'water ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, -0.8954, -10.98, 90.11, 0, 0.0, 0.0, 0.0, 'WS ', 0.0, -0.8954, -10.98, 90.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7235, 'HCOOCs ', 'water ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, -2.401, -14.88, 63.62, 0, 0.0, 0.0, 0.0, 'WS ', 0.0, -2.401, -14.88, 63.62, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7236, 'helium ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7237, 'hydrogen ', 'water ', 'Classic ', 0.5322, 0.0, 0.5322, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7238, 'nitrogen ', 'water ', 'HV ', 0.48, 0.0, 0.48, 0.0, 0.0, 0.08, 4898.64, -111.76, 0, 0.0, 0.0, 0.0, 'WS ', -0.48, 0.0768, -388.0, 4911.0, 0.0, -6.9, 2.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7239, 'argon', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7240, 'oxygen ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7241, 'CO2', 'water', 'HV ', 0.1, 0.0, 0.184, 0.236, 0.0, 0.03, 3625.894514, -2241.291634, 0, 0.0, 0.0, 0.0, 'WS ', 1.6, 0.3, -393.0, -713.0, 0.0, 3.912194339, -3.163762721, 0.96, 3.96, 0.05, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7242, 'H2S ', 'water ', 'HV ', 0.03, 0.0, 0.03, 0.0, 0.0, 0.0653, -1082.0, 2579.6, 0, 0.0, 0.0, 0.0, 'WS ', 0.03, 0.0653, -1082.0, 2579.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7243, 'water', 'ethane', 'HV ', 0.45, 0.0, 0.635, -0.93, 0.0, 0.122, -1479.91, 5173.65, 0, 0.0, 0.0, 0.0, 'WS ', 0.45, 0.122, 274.0, 2467.0, 0.0, 3.46, -6.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7244, 'c-propane ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7245, 'i-butane ', 'water ', 'HV ', 0.52, 0.0, 0.52, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.52, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7246, '2,2-diom C3 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7247, 'c-C4 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7248, 'i-pentane ', 'water ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7249, 'n-pentane ', 'water ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0615, 0.0, 0.0, 0.0, 0.0), +(7250, 'c-pentane ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7251, '2,2-dim-C4 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7252, '2,3-dimC4 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7253, '2-m-C5 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7254, '3-m-C5 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7256, 'hexane ', 'water ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0355, 0.0, 0.0, 0.0, 0.0), +(7257, 'm-c-C5 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7258, 'benzene ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7259, 'c-hexane ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7260, '223-tm-C4 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7261, '3,3-dim-C5 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7262, 'n-heptane', 'water ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0095, 0.0, 0.0, 0.0, 0.0), +(7263, 'm-c-C6 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7264, 'et-c-C5 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7265, 'toluene ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7266, 'c-c7 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7267, '11-dm-c-C6 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7268, 'c-c8 ', 'water ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7269, 'c-12-dmcC6 ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7270, 'et-benzene ', 'water ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7271, 'MDEA+ ', 'water ', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 4.70924E-4, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7272, 'H3O+ ', 'water ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7273, 'MDEA-even', 'water', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.213103518, -1460.679072, 1200.644717, 0, 0.0, 0.0, 0.0, 'WS ', 0.0, 0.386, -401.57, 803.41, 0.0, 5.892995488, -7.240070673, 0.0, 0.0, -0.149289356, 0.0, 0.0, 0.0, 0.0), +(7274, 'HCO3- ', 'water ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7275, 'OH- ', 'water ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7276, 'Na+ ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7277, 'Cl- ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7278, 'Ca++ ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7279, 'Li+ ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7280, 'Br- ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7281, 'NH4+ ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7282, 'CO3-- ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7283, 'DEACOO- ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7284, 'DEA ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7285, 'DEA+ ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7286, 'BEA ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7287, 'BEA+ ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7288, 'BEACOO- ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7289, 'K+ ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7290, 'HS- ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7291, 'S-- ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7292, 'I- ', 'water ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7293, 'Mg++ ', 'water ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7294, 'Ba++ ', 'water ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7295, 'Sr++ ', 'water ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7296, 'methanol ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7297, 'ethanol ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7298, 'MEG ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7299, 'DEG ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7300, 'TEG ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7301, 'NaCl ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7302, 'KCl ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7303, 'CaCl2 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7304, 'HCOONa ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7305, 'HCOOK ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7306, 'HCOOCs ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7307, 'helium ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7308, 'hydrogen ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7309, 'nitrogen ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7310, 'Ar ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7311, 'oxygen ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7312, 'H2S ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, -0.90671648, 669.6378677, 352.1342502, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, -0.2940267, -1.817715182, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7313, 'propane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7314, 'c-propane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7315, 'i-butane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7316, 'n-butane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7317, '2,2-diom C3 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7318, 'c-C4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7319, 'i-pentane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7320, 'n-pentane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7321, 'c-pentane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7322, '2,2-dim-C4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7323, '2,3-dimC4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7324, '2-m-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7325, '3-m-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7326, 'n-hexane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7327, 'hexane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7328, 'm-c-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7329, 'benzene ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7330, 'c-hexane ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7331, '223-tm-C4 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7332, '3,3-dim-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7333, 'n-C7 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7334, 'm-c-C6 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7335, 'et-c-C5 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7336, 'toluene ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7337, 'c-c7 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7338, '11-dm-c-C6 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7339, 'c-c8 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7340, 'c-12-dmcC6 ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7341, 'et-benzene ', 'MDEA ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7342, 'H3O+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7343, 'HCO3- ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.172, -4.67E-6), +(7344, 'OH- ', 'MDEA ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7345, 'Na+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7346, 'Cl- ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7347, 'Ca++ ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7348, 'Li+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7349, 'Br- ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7350, 'NH4+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7351, 'CO3-- ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.972, -0.00276), +(7352, 'DEACOO- ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7353, 'DEA ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7354, 'DEA+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7355, 'BEA ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7356, 'BEA+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7357, 'BEACOO- ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7358, 'K+ ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7359, 'HS- ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7360, 'S-- ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7361, 'I- ', 'MDEA ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7362, 'Mg++ ', 'MDEA ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7363, 'Ba++ ', 'MDEA ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7364, 'Sr++ ', 'MDEA ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7365, 'methanol ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7366, 'ethanol ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7367, 'MEG ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7368, 'DEG ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7369, 'TEG ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7370, 'NaCl ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7371, 'KCl ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7372, 'CaCl2 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7373, 'HCOONa ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7374, 'HCOOK ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7375, 'HCOOCs ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7376, 'helium ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7377, 'hydrogen ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7378, 'nitrogen ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7379, 'Ar ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7380, 'oxygen ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7381, 'H2S ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 4.8841E-4, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7382, 'methane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7383, 'ethane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7384, 'propane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7385, 'c-propane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7386, 'i-butane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7387, 'n-butane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7388, '2,2-diom C3 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7389, 'c-C4 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7390, 'i-pentane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7391, 'n-pentane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7392, 'c-pentane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7393, '2,2-dim-C4 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7394, '2,3-dimC4 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7395, '2-m-C5 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7396, '3-m-C5 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7397, 'n-hexane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7398, 'hexane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7399, 'm-c-C5 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7400, 'benzene ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7401, 'c-hexane ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7402, '223-tm-C4 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7403, '3,3-dim-C5 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7404, 'n-C7 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7405, 'm-c-C6 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7406, 'et-c-C5 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7407, 'toluene ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7408, 'c-c7 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7409, '11-dm-c-C6 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7410, 'c-c8 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7411, 'c-12-dmcC6 ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7412, 'et-benzene ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7413, 'H3O+ ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7414, 'MDEA ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.002309605, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7415, 'HCO3- ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, -1.32475E-4, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.024, -0.00284), +(7416, 'OH- ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7417, 'Na+ ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7418, 'Cl- ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7419, 'Ca++ ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7420, 'Li+ ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7421, 'Br- ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7422, 'NH4+ ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7423, 'CO3-- ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, -2.74132E-4, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.725, -0.00335), +(7424, 'DEACOO- ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7425, 'DEA ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7426, 'DEA+ ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7427, 'BEA ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7428, 'BEA+ ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7429, 'BEACOO- ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7430, 'K+ ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7431, 'HS- ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, -1.49475E-4, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7432, 'S-- ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7433, 'I- ', 'MDEA+ ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7434, 'Mg++ ', 'MDEA+ ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7435, 'Ba++ ', 'MDEA+ ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7436, 'Sr++ ', 'MDEA+ ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7437, 'methanol ', 'nitrogen ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.395, 308.0, 364.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7438, 'ethanol ', 'nitrogen ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.395, 308.0, 364.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7439, 'MEG ', 'nitrogen ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7440, 'DEG ', 'nitrogen ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7441, 'TEG ', 'nitrogen ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7442, 'NaCl ', 'nitrogen ', 'HV ', 3.2, 0.0, 3.2, 0.0, 0.0, 0.0105, 94947.0, 1773.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.084, 7623.0, 5281.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7443, 'KCl ', 'nitrogen ', 'HV ', 5.24, 0.0, 5.24, 0.0, 0.0, 0.0078, 41212.0, 2335.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.097, 6733.0, 4007.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7444, 'CaCl2 ', 'nitrogen ', 'Classic ', 2.29, 0.0, 2.29, 0.0, 0.0, 0.0174, 80541.0, 2200.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.055, 8790.0, 14765.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7445, 'HCOONa ', 'nitrogen ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7446, 'HCOOK ', 'nitrogen ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7447, 'HCOOCs ', 'nitrogen ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7448, 'helium ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7449, 'hydrogen ', 'nitrogen ', 'Classic ', 0.0071, 0.0, 0.0071, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0071, 0.0071, 0.0, 0.0, 0.0), +(7450, 'argon', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7451, 'oxygen ', 'nitrogen ', 'Classic ', -0.0078, 0.0, -0.0078, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0078, -0.0078, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7452, 'CO2 ', 'nitrogen ', 'Classic ', -0.0171, 0.0, -0.019997, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7453, 'H2S ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7454, 'c-propane ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7455, 'i-butane ', 'nitrogen ', 'Classic ', 0.13150001, 0.0, 0.094999, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(7456, 'n-butane ', 'nitrogen ', 'Classic ', 0.0597, 0.0, 0.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(7457, '2,2-diom C3 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7458, 'c-C4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7459, 'i-pentane ', 'nitrogen ', 'Classic ', 0.093, 0.0, 0.094999, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(7460, 'n-pentane ', 'nitrogen ', 'Classic ', 0.093598, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(7461, 'c-pentane ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7462, '2,2-dim-C4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7463, '2,3-dimC4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7464, '2-m-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7465, '3-m-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7466, 'n-hexane ', 'nitrogen ', 'Classic ', 0.08, 0.0, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(7467, 'hexane ', 'nitrogen ', 'Classic ', 0.08, 0.0, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(7468, 'm-c-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7469, 'benzene ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7470, 'c-hexane ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7471, '223-tm-C4 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7472, '3,3-dim-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7473, 'n-C7 ', 'nitrogen ', 'Classic ', 0.08, 0.0, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7474, 'm-c-C6 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7475, 'et-c-C5 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7476, 'toluene ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7477, 'c-c7 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7478, '11-dm-c-C6 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7479, 'c-c8 ', 'nitrogen ', 'Classic ', 0.08, 0.0, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(7480, 'c-12-dmcC6 ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7481, 'et-benzene ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7482, 'MDEA+ ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7483, 'H3O+ ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7484, 'MDEA ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7485, 'HCO3- ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7486, 'OH- ', 'nitrogen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7487, 'Na+ ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7488, 'Cl- ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7489, 'Ca++ ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7490, 'Li+ ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7491, 'Br- ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7492, 'NH4+ ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7493, 'CO3-- ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7494, 'DEACOO- ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7495, 'DEA ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7496, 'DEA+ ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7497, 'BEA ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7498, 'BEA+ ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7499, 'BEACOO- ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7500, 'K+ ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7501, 'HS- ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7502, 'S-- ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7503, 'I- ', 'nitrogen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7504, 'Mg++ ', 'nitrogen ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7505, 'Ba++ ', 'nitrogen ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7506, 'Sr++ ', 'nitrogen ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7507, 'water ', 'H2S ', 'HV ', 0.03, 0.0, 0.03, 0.0, 0.0, 0.0653, 2579.6, -1082.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7508, 'methanol ', 'H2S ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.395, 965.0, 45.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7509, 'ethanol ', 'H2S ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.395, 965.0, 45.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7510, 'MEG ', 'H2S ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7511, 'DEG ', 'H2S ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7512, 'TEG ', 'H2S ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7513, 'NaCl ', 'H2S ', 'HV ', 0.8, 0.0, 0.8, 0.0, 0.0, -0.1379, 1809.48, 658.64, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7514, 'KCl ', 'H2S ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7515, 'CaCl2 ', 'H2S ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, -0.1872, -1646.0, 1195.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7516, 'HCOONa ', 'H2S ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7517, 'HCOOK ', 'H2S ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7518, 'HCOOCs ', 'H2S ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7519, 'helium ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7520, 'hydrogen ', 'H2S ', 'Classic ', 0.0831, 0.0, 0.0831, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0831, 0.0831, 0.0, 0.0, 0.0), +(7521, 'nitrogen ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7522, 'Ar ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7523, 'oxygen ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7524, 'CO2 ', 'H2S ', 'Classic ', 0.12, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7525, 'H2S ', 'H2S ', 'HV ', 0.12, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.0, 0.0, 0.0), +(7526, 'methane ', 'H2S ', 'Classic ', 0.08, 0.0, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(7527, 'ethane ', 'H2S ', 'Classic ', 0.07, 0.0, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0, 0.0, 0.0), +(7528, 'propane ', 'H2S ', 'Classic ', 0.07, 0.0, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.07, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7529, 'c-propane ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7530, 'i-butane ', 'H2S ', 'Classic ', 0.06, 0.0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0, 0.0, 0.0), +(7531, 'n-butane ', 'H2S ', 'Classic ', 0.06, 0.0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0, 0.0, 0.0), +(7532, '2,2-diom C3 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7533, 'c-C4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7534, 'i-pentane ', 'H2S ', 'Classic ', 0.06, 0.0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0, 0.0, 0.0), +(7535, 'n-pentane ', 'H2S ', 'Classic ', 0.06, 0.0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0, 0.0, 0.0), +(7536, 'c-pentane ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7537, '2,2-dim-C4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7538, '2,3-dimC4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7539, '2-m-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7540, '3-m-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7541, 'n-hexane ', 'H2S ', 'Classic ', 0.05, 0.0, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05, 0.05, 0.0, 0.0, 0.0), +(7542, 'hexane ', 'H2S ', 'Classic ', 0.05, 0.0, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05, 0.05, 0.0, 0.0, 0.0), +(7543, 'm-c-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7544, 'benzene ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7545, 'c-hexane ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7546, '223-tm-C4 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7547, '3,3-dim-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7548, 'n-C7 ', 'H2S ', 'Classic ', 0.04, 0.0, 0.04, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.04, 0.0, 0.0, 0.0), +(7549, 'm-c-C6 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7550, 'et-c-C5 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7551, 'toluene ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7552, 'c-c7 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7553, '11-dm-c-C6 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7554, 'c-c8 ', 'H2S ', 'Classic ', 0.04, 0.0, 0.04, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.04, 0.0, 0.0, 0.0), +(7555, 'c-12-dmcC6 ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7556, 'et-benzene ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7557, 'MDEA+ ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7558, 'H3O+ ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7559, 'MDEA ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7560, 'HCO3- ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7561, 'OH- ', 'H2S ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7562, 'Na+ ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7563, 'Cl- ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7564, 'Ca++ ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7565, 'Li+ ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7566, 'Br- ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7567, 'NH4+ ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7568, 'CO3-- ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7569, 'DEACOO- ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7570, 'DEA ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7571, 'DEA+ ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7572, 'BEA ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7573, 'BEA+ ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7574, 'BEACOO- ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7575, 'K+ ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7576, 'HS- ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7577, 'S-- ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7578, 'I- ', 'H2S ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7579, 'Mg++ ', 'H2S ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7580, 'Ba++ ', 'H2S ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7581, 'Sr++ ', 'H2S ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7582, 'methanol ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7583, 'ethanol ', 'methanol ', 'Classic ', 0.0504, 0.0, 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7584, 'MEG ', 'methanol ', 'Classic ', 0.074, 0.0, 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7585, 'DEG ', 'methanol ', 'Classic ', 0.0882, 0.0, 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0882, 0.0882, 0.0, 0.0, 0.0), +(7586, 'TEG ', 'methanol ', 'Classic ', 0.1817, 0.0, 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7587, 'NaCl ', 'methanol ', 'Classic ', 0.1221, 0.0, 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1221, 0.1221, 0.0, 0.0, 0.0), +(7588, 'KCl ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7589, 'CaCl2 ', 'methanol ', 'Classic ', 0.2045, 0.0, 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2045, 0.2045, 0.0, 0.0, 0.0), +(7590, 'HCOONa ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7591, 'HCOOK ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7592, 'HCOOCs ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7593, 'helium ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7594, 'hydrogen ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7595, 'nitrogen ', 'methanol ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.395, 364.0, 308.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 364.0, 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7596, 'Ar ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7597, 'oxygen ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7598, 'H2S ', 'methanol ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.395, 45.0, 965.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 45.0, 965.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7599, 'methane ', 'methanol ', 'HV ', 0.13, 0.0, 0.13, 0.0, 0.0, 0.395, 255.0, 1610.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0, 0.0, 0.0), +(7600, 'ethane ', 'methanol ', 'HV ', 0.19, 0.0, 0.19, 0.0, 0.0, 0.395, 494.0, 2005.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 494.0, 2005.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.19, 0.19, 0.0, 0.0, 0.0), +(7601, 'c-propane ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7602, 'i-butane ', 'methanol ', 'HV ', 0.25, 0.0, 0.25, 0.0, 0.0, 0.395, 1603.0, 1135.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0, 0.0, 0.0), +(7603, 'n-butane ', 'methanol ', 'HV ', 0.25, 0.0, 0.25, 0.0, 0.0, 0.395, 1603.0, 1135.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0, 0.0, 0.0), +(7604, '2,2-diom C3 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7605, 'c-C4 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7606, 'i-pentane ', 'methanol ', 'HV ', 0.26, 0.0, 0.26, 0.0, 0.0, 0.395, 744.0, 1071.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 744.0, 1071.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0, 0.0, 0.0), +(7607, 'n-pentane ', 'methanol ', 'HV ', 0.26, 0.0, 0.26, 0.0, 0.0, 0.395, 1230.0, 1186.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 1230.0, 1186.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.26, 0.26, 0.0, 0.0, 0.0), +(7608, 'c-pentane ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7609, '2,2-dim-C4 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7610, '2,3-dimC4 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7611, '2-m-C5 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7612, '3-m-C5 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7613, 'n-hexane ', 'methanol ', 'HV ', 0.28, 0.0, 0.28, 0.0, 0.0, 0.395, 758.0, 1276.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0, 0.0, 0.0), +(7614, 'hexane ', 'methanol ', 'HV ', 0.28, 0.0, 0.28, 0.0, 0.0, 0.395, 758.0, 1276.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0, 0.0, 0.0), +(7615, 'm-c-C5 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7616, 'benzene ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7617, 'c-hexane ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7618, '223-tm-C4 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7619, '3,3-dim-C5 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7620, 'n-C7 ', 'methanol ', 'Classic ', 0.29, 0.0, 0.29, 0.0, 0.0, 0.395, 758.0, 1276.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.29, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.29, 0.29, 0.0, 0.0, 0.0), +(7621, 'm-c-C6 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7622, 'et-c-C5 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7623, 'toluene ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7624, 'c-c7 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7625, '11-dm-c-C6 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7626, 'c-c8 ', 'methanol ', 'Classic ', 0.31, 0.0, 0.31, 0.0, 0.0, 0.395, 758.0, 1276.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.31, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.31, 0.31, 0.0, 0.0, 0.0), +(7627, 'c-12-dmcC6 ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7628, 'et-benzene ', 'methanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7629, 'MDEA+ ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7630, 'H3O+ ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7631, 'MDEA ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7632, 'HCO3- ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7633, 'OH- ', 'methanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7634, 'Na+ ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7635, 'Cl- ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7636, 'Ca++ ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7637, 'Li+ ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7638, 'Br- ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7639, 'NH4+ ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7640, 'CO3-- ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7641, 'DEACOO- ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7642, 'DEA ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7643, 'DEA+ ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7644, 'BEA ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7645, 'BEA+ ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7646, 'BEACOO- ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7647, 'K+ ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7648, 'HS- ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7649, 'S-- ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7650, 'I- ', 'methanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7651, 'Mg++ ', 'methanol ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7652, 'Ba++ ', 'methanol ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7653, 'Sr++ ', 'methanol ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7654, 'methanol ', 'MEG ', 'Classic ', 0.074, 0.0, 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7655, 'ethanol ', 'MEG ', 'Classic ', 0.1626, 0.0, 0.1626, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.1626, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7656, 'MEG ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7657, 'DEG ', 'MEG ', 'Classic ', 0.0301, 0.0, 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7658, 'TEG ', 'MEG ', 'Classic ', 0.0059, 0.0, 0.0059, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0059, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7659, 'NaCl ', 'MEG ', 'Classic ', 0.0588, 0.0, 0.0588, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7660, 'KCl ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7661, 'CaCl2 ', 'MEG ', 'Classic ', 0.0842, 0.0, 0.0842, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7662, 'HCOONa ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7663, 'HCOOK ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7664, 'HCOOCs ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7665, 'helium ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7666, 'hydrogen ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7667, 'Ar ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7668, 'oxygen ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7670, 'H2S ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7671, 'c-propane ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7672, 'i-butane ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7673, 'n-butane ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7674, '2,2-diom C3 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7675, 'c-C4 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7676, 'i-pentane ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7677, 'n-pentane ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7678, 'c-pentane ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7679, '2,2-dim-C4 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7680, '2,3-dimC4 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7681, '2-m-C5 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7682, '3-m-C5 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7683, 'n-hexane ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7684, 'hexane ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7685, 'm-c-C5 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7686, 'benzene ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.049, 0.0, 0.0, 0.0, 0.0), +(7687, 'c-hexane ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7688, '223-tm-C4 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7689, '3,3-dim-C5 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7690, 'n-C7 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7691, 'm-c-C6 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7692, 'et-c-C5 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7693, 'toluene ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.055, 0.0, 0.0, 0.0, 0.0), +(7694, 'c-c7 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7695, '11-dm-c-C6 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7696, 'c-c8 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7697, 'c-12-dmcC6 ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7698, 'et-benzene ', 'MEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7699, 'MDEA+ ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7700, 'H3O+ ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7701, 'MDEA ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7702, 'HCO3- ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7703, 'OH- ', 'MEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7704, 'Na+ ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7705, 'Cl- ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7706, 'Ca++ ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7707, 'Li+ ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7708, 'Br- ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7709, 'NH4+ ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7710, 'CO3-- ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7711, 'DEACOO- ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0), +(7712, 'DEA ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7713, 'DEA+ ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7714, 'BEA ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7715, 'BEA+ ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7716, 'BEACOO- ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7717, 'K+ ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7718, 'HS- ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7719, 'S-- ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7720, 'I- ', 'MEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7721, 'Mg++ ', 'MEG ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7722, 'Ba++ ', 'MEG ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7723, 'Sr++ ', 'MEG ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7724, 'methanol ', 'TEG ', 'Classic ', 0.1817, 0.0, 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7725, 'ethanol ', 'TEG ', 'Classic ', 0.2876, 0.0, 0.2876, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.1626, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7726, 'MEG ', 'TEG ', 'Classic ', 0.0059, 0.0, 0.0059, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7727, 'DEG ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7728, 'NaCl ', 'TEG ', 'Classic ', 0.365, 0.0, 0.365, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.365, 0.365, 0.0, 0.0, 0.0), +(7729, 'KCl ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7730, 'CaCl2 ', 'TEG ', 'HV ', 0.13, 0.0, 0.13, 0.0, 0.0, -3.054, 352.3, 206.9, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0, 0.0, 0.0), +(7731, 'HCOONa ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7732, 'HCOOK ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7733, 'HCOOCs ', 'TEG ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7734, 'helium ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7735, 'hydrogen ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7736, 'nitrogen ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7737, 'Ar ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7738, 'oxygen ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7740, 'H2S ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7741, 'ethane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7742, 'propane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7743, 'c-propane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7744, 'i-butane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7745, 'n-butane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7746, '2,2-diom C3 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7747, 'c-C4 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7748, 'i-pentane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7749, 'n-pentane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7750, 'c-pentane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7751, '2,2-dim-C4 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7752, '2,3-dimC4 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7753, '2-m-C5 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7754, '3-m-C5 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7755, 'n-hexane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7756, 'hexane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7757, 'm-c-C5 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7758, 'benzene ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7759, 'c-hexane ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7760, '223-tm-C4 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7761, '3,3-dim-C5 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7762, 'n-C7 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7763, 'm-c-C6 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7764, 'et-c-C5 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7765, 'toluene ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7766, 'c-c7 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7767, '11-dm-c-C6 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7768, 'c-c8 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 601.7, 2063.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 601.7, 2063.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7769, 'c-12-dmcC6 ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7770, 'et-benzene ', 'TEG ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7771, 'MDEA+ ', 'TEG ', 'HV ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7772, 'H3O+ ', 'TEG ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7773, 'MDEA ', 'TEG ', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.386, -1124.83, 763.56, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7774, 'HCO3- ', 'TEG ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7775, 'OH- ', 'TEG ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7776, 'Na+ ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7777, 'Cl- ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7778, 'Ca++ ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7779, 'Li+ ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7780, 'Br- ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7781, 'NH4+ ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7782, 'CO3-- ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7783, 'DEACOO- ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7784, 'DEA ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7785, 'DEA+ ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7786, 'BEA ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7787, 'BEA+ ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7788, 'BEACOO- ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7789, 'K+ ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7790, 'HS- ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7791, 'S-- ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7792, 'I- ', 'TEG ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7793, 'Mg++ ', 'TEG ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7794, 'Ba++ ', 'TEG ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7795, 'Sr++ ', 'TEG ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7797, 'methanol ', 'oxygen ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7798, 'ethanol ', 'oxygen ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7799, 'MEG ', 'oxygen ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7800, 'DEG ', 'oxygen ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7801, 'TEG ', 'oxygen ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7802, 'NaCl ', 'oxygen ', 'Classic ', 0.8, 0.0, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.084, 7623.0, 5281.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7803, 'KCl ', 'oxygen ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.097, 6733.0, 4007.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7804, 'CaCl2 ', 'oxygen ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.055, 8790.0, 14765.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7805, 'HCOONa ', 'oxygen ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7806, 'HCOOK ', 'oxygen ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7807, 'HCOOCs ', 'oxygen ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7808, 'helium ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7809, 'hydrogen ', 'oxygen ', 'Classic ', 0.0079, 0.0, 0.0079, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0079, 0.0079, 0.0, 0.0, 0.0), +(7810, 'nitrogen ', 'oxygen ', 'Classic ', -0.0078, 0.0, -0.0078, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0078, -0.0078, 0.0, 0.0, 0.0), +(7811, 'Ar ', 'oxygen ', 'Classic ', 0.0178, 0.0, 0.0178, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0178, 0.0178, 0.0, 0.0, 0.0), +(7812, 'oxygen ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0301, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7813, 'CO2 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7814, 'H2S ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7815, 'methane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7816, 'ethane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7817, 'propane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7818, 'c-propane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7819, 'i-butane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7820, 'n-butane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7821, '2,2-diom C3 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7822, 'c-C4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7823, 'i-pentane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7824, 'n-pentane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7825, 'c-pentane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7826, '2,2-dim-C4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7827, '2,3-dimC4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7828, '2-m-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7829, '3-m-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7830, 'n-hexane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7831, 'hexane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7832, 'm-c-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7833, 'benzene ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7834, 'c-hexane ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7835, '223-tm-C4 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7836, '3,3-dim-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7837, 'n-C7 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7838, 'm-c-C6 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7839, 'et-c-C5 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7840, 'toluene ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7841, 'c-c7 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7842, '11-dm-c-C6 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7843, 'c-c8 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7844, 'c-12-dmcC6 ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7845, 'et-benzene ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7846, 'MDEA+ ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7847, 'H3O+ ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7848, 'MDEA ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7849, 'HCO3- ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7850, 'OH- ', 'oxygen ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7851, 'Na+ ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7852, 'Cl- ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7853, 'Ca++ ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7854, 'Li+ ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7855, 'Br- ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7856, 'NH4+ ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7857, 'CO3-- ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7858, 'DEACOO- ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7859, 'DEA ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7860, 'DEA+ ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7861, 'BEA ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7862, 'BEA+ ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7863, 'BEACOO- ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7864, 'K+ ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7865, 'HS- ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7866, 'S-- ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7867, 'I- ', 'oxygen ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7868, 'Mg++ ', 'oxygen ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7869, 'Ba++ ', 'oxygen ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7870, 'Sr++ ', 'oxygen ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7871, 'water ', 'n-butane ', 'HV ', 0.52, 0.0, 0.52, 0.0, 0.0, 0.12, -567.8, 3181.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.53, 0.122, 2467.0, 274.0, 0.0, 1.97, -1.93, 0.0, 0.0, 0.0875, 0.0, 0.0, 0.0, 0.0), +(7872, 'methanol ', 'n-butane ', 'HV ', 0.25, 0.0, 0.25, 0.0, 0.0, 0.395, 1135.0, 1603.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7873, 'ethanol ', 'n-butane ', 'HV ', 0.25, 0.0, 0.25, 0.0, 0.0, 0.395, 1135.0, 1603.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 895.0, 435.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7874, 'MEG ', 'n-butane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7875, 'DEG ', 'n-butane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7876, 'TEG ', 'n-butane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7877, 'NaCl ', 'n-butane ', 'Classic ', 0.7, 0.0, 0.7, 0.0, 0.0, 0.0369, 20193.0, 3528.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.72, 0.0592, 10539.0, 4777.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7878, 'KCl ', 'n-butane ', 'Classic ', 1.35, 0.0, 1.35, 0.0, 0.0, 0.0078, -48374.0, 35311.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.36, 0.0441, 60604.0, 7490.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7879, 'CaCl2 ', 'n-butane ', 'Classic ', 1.18, 0.0, 1.18, 0.0, 0.0, 0.0364, 99000.0, 3080.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7880, 'HCOONa ', 'n-butane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7881, 'HCOOK ', 'n-butane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7882, 'HCOOCs ', 'n-butane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7883, 'helium ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7884, 'hydrogen ', 'n-butane ', 'Classic ', 0.1446, 0.0, 0.1446, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1446, 0.1446, 0.0, 0.0, 0.0), +(7885, 'nitrogen ', 'n-butane ', 'Classic ', 0.0597, 0.0, 0.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0597, 0.09, 0.0, 0.0, 0.0), +(7886, 'Ar ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7887, 'oxygen ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7888, 'CO2 ', 'n-butane ', 'Classic ', 0.14120001, 0.0, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.14120001, 0.12980001, 0.0, 0.0, 0.0), +(7889, 'H2S ', 'n-butane ', 'Classic ', 0.06, 0.0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0, 0.0, 0.0), +(7890, 'c-propane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7891, 'i-butane ', 'n-butane ', 'Classic ', 4.7251E-4, 0.0, 4.7251E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', -0.6500216, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7892, 'n-butane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7893, '2,2-diom C3 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7894, 'c-C4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7895, 'i-pentane ', 'n-butane ', 'Classic ', 9.2632E-4, 0.0, 9.2632E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.2632E-4, 0.0, 0.0, 0.0, 0.0), +(7896, 'n-pentane ', 'n-butane ', 'Classic ', 9.7665E-4, 0.0, 9.7665E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.7665E-4, 0.0, 0.0, 0.0, 0.0), +(7897, 'c-pentane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7898, '2,2-dim-C4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7899, '2,3-dimC4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7900, '2-m-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7901, '3-m-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7902, 'n-hexane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7903, 'hexane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7904, 'm-c-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7905, 'benzene ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7906, 'c-hexane ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7907, '223-tm-C4 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7908, '3,3-dim-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7909, 'n-C7 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7910, 'm-c-C6 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7911, 'et-c-C5 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7912, 'toluene ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7913, 'c-c7 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7914, '11-dm-c-C6 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7915, 'c-c8 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7916, 'c-12-dmcC6 ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7917, 'et-benzene ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7918, 'MDEA+ ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7919, 'H3O+ ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7920, 'MDEA ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7921, 'HCO3- ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7922, 'OH- ', 'n-butane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7923, 'Na+ ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7924, 'Cl- ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7925, 'Ca++ ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7926, 'Li+ ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7927, 'Br- ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7928, 'NH4+ ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7929, 'CO3-- ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7930, 'DEACOO- ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7931, 'DEA ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7932, 'DEA+ ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7933, 'BEA ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7934, 'BEA+ ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7935, 'BEACOO- ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7936, 'K+ ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7937, 'HS- ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7938, 'S-- ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7939, 'I- ', 'n-butane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7940, 'Mg++ ', 'n-butane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7941, 'Ba++ ', 'n-butane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7942, 'Sr++ ', 'n-butane ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7943, 'methanol ', 'ethanol ', 'Classic ', 0.0504, 0.0, 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0504, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7944, 'ethanol ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7945, 'MEG ', 'ethanol ', 'Classic ', 0.074, 0.0, 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7946, 'DEG ', 'ethanol ', 'Classic ', 0.0882, 0.0, 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0882, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7947, 'TEG ', 'ethanol ', 'Classic ', 0.1817, 0.0, 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.1817, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7948, 'NaCl ', 'ethanol ', 'Classic ', 0.1221, 0.0, 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.1221, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7949, 'KCl ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7950, 'CaCl2 ', 'ethanol ', 'Classic ', 0.2045, 0.0, 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7951, 'HCOONa ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7952, 'HCOOK ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7953, 'HCOOCs ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7954, 'helium ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7955, 'hydrogen ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7956, 'nitrogen ', 'ethanol ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.395, 364.0, 308.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 364.0, 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7957, 'Ar ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7958, 'oxygen ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7959, 'CO2 ', 'ethanol ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.395, 276.0, 3307.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 276.0, 3307.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7960, 'H2S ', 'ethanol ', 'HV ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.395, 45.0, 965.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 45.0, 965.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7961, 'methane ', 'ethanol ', 'HV ', 0.13, 0.0, 0.13, 0.0, 0.0, 0.395, 255.0, 1610.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7962, 'ethane ', 'ethanol ', 'HV ', 0.19, 0.0, 0.19, 0.0, 0.0, 0.395, 494.0, 2005.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.19, 0.395, 494.0, 2005.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7963, 'propane ', 'ethanol ', 'HV ', 0.22, 0.0, 0.22, 0.0, 0.0, 0.395, 435.0, 895.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.22, 0.395, 435.0, 895.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7964, 'c-propane ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7965, 'i-butane ', 'ethanol ', 'HV ', 0.25, 0.0, 0.25, 0.0, 0.0, 0.395, 1603.0, 1135.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7966, 'n-butane ', 'ethanol ', 'HV ', 0.25, 0.0, 0.25, 0.0, 0.0, 0.395, 1603.0, 1135.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.25, 0.395, 1603.0, 1135.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7967, '2,2-diom C3 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7968, 'c-C4 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7969, 'i-pentane ', 'ethanol ', 'HV ', 0.26, 0.0, 0.26, 0.0, 0.0, 0.395, 744.0, 1071.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 744.0, 1071.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7970, 'n-pentane ', 'ethanol ', 'HV ', 0.26, 0.0, 0.26, 0.0, 0.0, 0.395, 1230.0, 1186.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.395, 1230.0, 1186.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7971, 'c-pentane ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7972, '2,2-dim-C4 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7973, '2,3-dimC4 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7974, '2-m-C5 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7975, '3-m-C5 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7976, 'n-hexane ', 'ethanol ', 'HV ', 0.28, 0.0, 0.28, 0.0, 0.0, 0.395, 758.0, 1276.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7977, 'hexane ', 'ethanol ', 'HV ', 0.28, 0.0, 0.28, 0.0, 0.0, 0.395, 758.0, 1276.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.28, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.28, 0.0, 0.0, 0.0), +(7978, 'm-c-C5 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7979, 'benzene ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7980, 'c-hexane ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7981, '223-tm-C4 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7982, '3,3-dim-C5 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7983, 'n-C7 ', 'ethanol ', 'Classic ', 0.29, 0.0, 0.29, 0.0, 0.0, 0.395, 758.0, 1276.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.29, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.29, 0.29, 0.0, 0.0, 0.0), +(7984, 'm-c-C6 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7985, 'et-c-C5 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7986, 'toluene ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7987, 'c-c7 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7988, '11-dm-c-C6 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7989, 'c-c8 ', 'ethanol ', 'Classic ', 0.31, 0.0, 0.31, 0.0, 0.0, 0.395, 758.0, 1276.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.31, 0.395, 758.0, 1276.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.31, 0.31, 0.0, 0.0, 0.0), +(7990, 'c-12-dmcC6 ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7991, 'et-benzene ', 'ethanol ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(7992, 'MDEA+ ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7993, 'H3O+ ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(7994, 'MDEA ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7995, 'HCO3- ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7996, 'OH- ', 'ethanol ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7997, 'Na+ ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7998, 'Cl- ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(7999, 'Ca++ ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8000, 'Li+ ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8001, 'Br- ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8002, 'NH4+ ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8003, 'CO3-- ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8004, 'DEACOO- ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8005, 'DEA ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8006, 'DEA+ ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8007, 'BEA ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8008, 'BEA+ ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8009, 'BEACOO- ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8010, 'K+ ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8011, 'HS- ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8012, 'S-- ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8013, 'I- ', 'ethanol ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8014, 'Mg++ ', 'ethanol ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8015, 'Ba++ ', 'ethanol ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8016, 'Sr++ ', 'ethanol ', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8018, 'methanol ', 'n-pentane ', 'HV ', 0.26, 0.0, 0.26, 0.0, 0.0, 0.395, 1186.0, 1230.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8019, 'ethanol ', 'n-pentane ', 'HV ', 0.26, 0.0, 0.26, 0.0, 0.0, 0.395, 1186.0, 1230.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8020, 'MEG ', 'n-pentane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8021, 'DEG ', 'n-pentane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8022, 'TEG ', 'n-pentane ', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8023, 'NaCl ', 'n-pentane ', 'Classic ', 0.7, 0.0, 0.7, 0.0, 0.0, 0.0369, 20193.0, 3528.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8024, 'KCl ', 'n-pentane ', 'Classic ', 1.35, 0.0, 1.35, 0.0, 0.0, 0.0078, -48374.0, 35311.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8025, 'CaCl2 ', 'n-pentane ', 'Classic ', 1.18, 0.0, 1.18, 0.0, 0.0, 0.0364, 99000.0, 3080.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8026, 'HCOONa ', 'n-pentane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8027, 'HCOOK ', 'n-pentane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8028, 'HCOOCs ', 'n-pentane ', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8029, 'helium ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8030, 'hydrogen ', 'n-pentane ', 'Classic ', 0.2166, 0.0, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2166, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8031, 'nitrogen ', 'n-pentane ', 'Classic ', 0.0597, 0.0, 0.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8032, 'Ar ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8033, 'oxygen ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8034, 'CO2 ', 'n-pentane ', 'Classic ', 0.1347, 0.0, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8035, 'H2S ', 'n-pentane ', 'Classic ', 0.06, 0.0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8036, 'methane ', 'n-pentane ', 'Classic ', 0.01847102, 0.0, 0.01847102, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8037, 'ethane ', 'n-pentane ', 'Classic ', 0.00811359, 0.0, 0.00811359, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8038, 'propane ', 'n-pentane ', 'Classic ', 0.00316586, 0.0, 0.00316586, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8039, 'c-propane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8040, 'i-butane ', 'n-pentane ', 'Classic ', 8.1462E-4, 0.0, 8.1462E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8041, 'n-butane ', 'n-pentane ', 'Classic ', 9.7665E-4, 0.0, 9.7665E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8042, '2,2-diom C3 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8043, 'c-C4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8044, 'i-pentane ', 'n-pentane ', 'Classic ', 3.9999E-4, 0.0, 3.9999E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8045, 'n-pentane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8046, 'c-pentane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8047, '2,2-dim-C4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8048, '2,3-dimC4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8049, '2-m-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8050, '3-m-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8051, 'n-hexane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8052, 'hexane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8053, 'm-c-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8054, 'benzene ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8055, 'c-hexane ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8056, '223-tm-C4 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8057, '3,3-dim-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8058, 'n-C7 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8059, 'm-c-C6 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8060, 'et-c-C5 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8061, 'toluene ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8062, 'c-c7 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8063, '11-dm-c-C6 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8064, 'c-c8 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8065, 'c-12-dmcC6 ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8066, 'et-benzene ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8067, 'MDEA+ ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8068, 'H3O+ ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8069, 'MDEA ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8070, 'HCO3- ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8071, 'OH- ', 'n-pentane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8072, 'Na+ ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8073, 'Cl- ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8074, 'Ca++ ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8075, 'Li+ ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8076, 'Br- ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8077, 'NH4+ ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8078, 'CO3-- ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8079, 'DEACOO- ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8080, 'DEA ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8081, 'DEA+ ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8082, 'BEA ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8083, 'BEA+ ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8084, 'BEACOO- ', 'n-pentane ', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8086, 'methanol ', 'n-heptane', 'HV ', 0.26, 0.0, 0.26, 0.0, 0.0, 0.395, 1186.0, 1230.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8087, 'ethanol ', 'n-heptane', 'HV ', 0.26, 0.0, 0.26, 0.0, 0.0, 0.395, 1186.0, 1230.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.26, 0.26, 0.395, 1186.0, 1230.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8088, 'MEG ', 'n-heptane', 'Classic', 0.2, 0.0, 0.08, 0.0, 0.0, 0.39867, 4938.4, -1924.0, 0, 0.0, 0.0, 0.0, 'WS', -0.393091937, 0.39867, 4938.0, 1924.3, 601.7, 0.76, -7.79, -7.9586, 0.76, 0.055576126, 0.047, 0.0, 0.0, 0.0), +(8089, 'DEG ', 'n-heptane', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.065, 0.065, 0.0, 0.0, 0.0), +(8090, 'TEG ', 'n-heptane', 'Classic ', 0.2, 0.0, 0.2, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2, 0.2, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.094, 0.094, 0.0, 0.0, 0.0), +(8091, 'NaCl ', 'n-heptane', 'Classic ', 0.7, 0.0, 0.7, 0.0, 0.0, 0.0369, 20193.0, 3528.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.7, 0.7, 0.0369, 20193.0, 3528.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8092, 'KCl ', 'n-heptane', 'Classic ', 1.35, 0.0, 1.35, 0.0, 0.0, 0.0078, -48374.0, 35311.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.35, 1.35, 0.0078, -48374.0, 35311.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8093, 'CaCl2 ', 'n-heptane', 'Classic ', 1.18, 0.0, 1.18, 0.0, 0.0, 0.0364, 99000.0, 3080.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.18, 1.18, 0.0364, 99000.0, 3080.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8094, 'HCOONa ', 'n-heptane', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8095, 'HCOOK ', 'n-heptane', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8096, 'HCOOCs ', 'n-heptane', 'Classic ', 0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8097, 'helium ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8098, 'hydrogen ', 'n-heptane', 'Classic ', 0.2166, 0.0, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.2166, 0.2166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8099, 'nitrogen ', 'n-heptane', 'Classic ', 0.08, 0.0, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8100, 'Ar ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8101, 'oxygen ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8102, 'CO2 ', 'n-heptane', 'Classic ', 0.12, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8103, 'H2S ', 'n-heptane', 'Classic ', 0.06, 0.0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8104, 'methane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8105, 'ethane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8106, 'propane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8107, 'c-propane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8108, 'i-butane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8109, 'n-butane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8110, '2,2-diom C3 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8111, 'c-C4 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8112, 'i-pentane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8113, 'n-pentane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8114, 'c-pentane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8115, '2,2-dim-C4 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8116, '2,3-dimC4 ', 'n-heptane ', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8117, '2-m-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8118, '3-m-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8119, 'n-hexane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8120, 'hexane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8121, 'm-c-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8122, 'benzene ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8123, 'c-hexane ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8124, '223-tm-C4 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8125, '3,3-dim-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8126, 'n-C7 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8127, 'm-c-C6 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8128, 'et-c-C5 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8129, 'toluene ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8130, 'c-c7 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8131, '11-dm-c-C6 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8132, 'c-c8 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8133, 'c-12-dmcC6 ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8134, 'et-benzene ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8135, 'MDEA+ ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8136, 'H3O+ ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8137, 'MDEA ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8138, 'HCO3- ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8139, 'OH- ', 'n-heptane', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8140, 'Na+ ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8141, 'Cl- ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8142, 'Ca++ ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8143, 'Li+ ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8144, 'Br- ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8145, 'NH4+ ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8146, 'CO3-- ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8147, 'DEACOO- ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8148, 'DEA ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8149, 'DEA+ ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8150, 'BEA ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8151, 'BEA+ ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8152, 'BEACOO- ', 'n-heptane', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8153, 'S8', 'methane ', 'Classic', 0.05, 0.0, 0.05, 0.0, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, 0.045939334, 0.161199631, 0.0, 0.0, 0.0), +(8154, 'S8', 'n-hexane', 'Classic', -0.05, 0.0, -0.08, 0.0, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, 0.045939334, 0.161199631, 0.0, 0.0, 0.0), +(8155, 'S8', 'n-pentane', 'Classic', -0.05, 0.0, -0.08, 0.0, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, 0.045939334, 0.161199631, 0.0, 0.0, 0.0), +(8156, 'S8', 'i-pentane', 'Classic', -0.05, 0.0, -0.08, 0.0, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, 0.045939334, 0.161199631, 0.0, 0.0, 0.0), +(8157, 'S8', 'n-hexane', 'Classic', -0.05, 0.0, -0.08, 0.0, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, 0.045939334, 0.161199631, 0.0, 0.0, 0.0), +(8158, 'S8', 'n-heptane', 'Classic', -0.05, 0.0, -0.08, 0.0, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, 0.045939334, 0.161199631, 0.0, 0.0, 0.0), +(8159, 'S8', 'n-octane', 'Classic', -0.05, 0.0, -0.08, 0.0, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, 0.045939334, 0.161199631, 0.0, 0.0, 0.0), +(8160, 'S8', 'i-butane', 'Classic', -0.05, 0.0, -0.08, 0.0, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, 0.045939334, 0.161199631, 0.0, 0.0, 0.0), +(8161, 'S8', 'n-butane', 'Classic', -0.05, 0.0, -0.08, 0.0, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, 0.045939334, 0.161199631, 0.0, 0.0, 0.0), +(8162, 'c-hexane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8163, 'c-c7 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8164, 'hexane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(8165, 'HCO3- ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8166, 'MDEA ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8167, 'H3O+ ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8168, 'MDEA+ ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8169, 'et-benzene ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8170, 'c-12-dmcC6 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8171, 'Na+ ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8172, '11-dm-c-C6 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8173, 'Cl- ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8174, 'toluene ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8175, 'et-c-C5 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8176, 'm-c-C6 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8177, 'n-C7 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(8178, '3,3-dim-C5 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8179, '223-tm-C4 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8180, 'benzene ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8181, 'c-c8 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(8182, 'DEA+ ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8183, 'Sr++ ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8184, 'Ba++ ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8185, 'm-c-C5 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8186, 'I- ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8187, 'HS- ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8188, 'K+ ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8189, 'BEACOO- ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8190, 'OH- ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8191, 'BEA ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8192, 'S-- ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8193, 'DEA ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8194, 'DEACOO- ', 'neon', 'Classic ', 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8195, 'CO3-- ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8196, 'NH4+ ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8197, 'Br- ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8198, 'Li+ ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8199, 'Ca++ ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8200, 'BEA+ ', 'neon', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8201, 'CaCl2 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0174, 80541.0, 2200.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.055, 8790.0, 14765.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29, 2.29, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8202, 'oxygen ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0078, -0.0078, 0.0, 0.0, 0.0), +(8203, 'Ar ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8204, 'nitrogen ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8205, 'hydrogen ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0071, 0.0071, 0.0, 0.0, 0.0), +(8206, 'helium ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8207, 'HCOOCs ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(8208, 'n-hexane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(8209, 'HCOONa ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(8210, 'methane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.02, 0.0, 0.0, 0.0), +(8211, 'KCl ', 'neon', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0078, 41212.0, 2335.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.097, 6733.0, 4007.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.24, 5.24, 0.0, 0.0, 0.0), +(8212, 'NaCl ', 'neon', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0105, 94947.0, 1773.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.084, 7623.0, 5281.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8213, 'TEG ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8214, 'DEG ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8215, 'MEG ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.3656, 2063.0, 601.7, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.3656, 2063.0, 601.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8216, 'ethanol ', 'neon', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.395, 308.0, 364.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(8217, 'HCOOK ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(8218, 'c-C4 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8219, '3-m-C5 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8220, 'Mg++ ', 'neon', 'Classic ', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8221, '2-m-C5 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8222, '2,3-dimC4 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8223, '2,2-dim-C4 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8224, 'c-pentane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8225, 'CO2 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8226, 'i-pentane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(8227, 'H2S ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8228, '2,2-diom C3 ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8229, 'n-butane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(8230, 'i-butane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(8231, 'c-propane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8232, 'propane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(8233, 'ethane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.06, 0.0, 0.0, 0.0), +(8234, 'methanol ', 'neon', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.395, 308.0, 364.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.395, 1610.0, 255.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0), +(8235, 'n-pentane ', 'neon', 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.0), +(8236, 'water', 'AceticAcid', 'HV', -0.1481, 0.0, 0.0, 0.0, 0.0, -2.349, -121.68, -287.28, 0, 0.0, 0.0, 0.0, 'HV', 0.0, 0.0, 0.0, 0.0, 0.0, 1.288, 0.95, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8237, 'CO2', 'AceticAcid', 'HV', 0.0, 0.0, 0.0, 0.0, 0.0, -0.0133, 4368.69, -2346.43, 0, 0.0, 0.0, 0.0, 'HV', 0.0, 0.3, 0.0, 0.0, 0.0, -5.277, 4.042, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8238, 'methane', 'AceticAcid', 'HV', 0.112898, 0.0, 0.0, 0.0, 0.0, 0.0, 3161.4, -921.76, 0, 0.0, 0.0, 0.0, 'HV', 0.0, 0.3, 0.0, 0.0, 0.0, -2.1938, 1.2181, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8239, 'CO2', 'Ac-', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8240, 'Ac-', 'water ', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8241, 'AceticAcid', 'HCO3-', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8242, 'AceticAcid', 'Ac-', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8243, 'MDEA', 'Ac-', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8244, 'HCO3-', 'Ac-', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8245, 'AceticAcid', 'MDEA+', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8246, 'AceticAcid', 'MDEA', 'HV', 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 600.0, 300.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8247, 'Ac-', 'MDEA+', 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0), +(8248, 'Piperazine-n', 'water-n', 'HV', 0.2, 0.0, 0.0, 0.0, 0.0, 0.36498, 2622.533, -1705.0208, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 0.0, 0.0, 0.0, -2.7049, 0.7156, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8249, 'CO2', 'Piperazine', 'Classic', -1.031953999, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8250, 'CO2', 'Piperazine+', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, -5.97E-5, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8251, 'CO2', 'PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8252, 'CO2', 'H+PZCOO-', 'Classic', -0.219549307, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8253, 'CO2', '-OOCPZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8254, 'water', 'Piperazine+', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 1.782E-4, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8255, 'water', 'PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8256, 'water', 'H+PZCOO-', 'Classic', -0.199480972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8257, 'water', '-OOCPZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8258, 'Piperazine', 'HCO3-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8259, 'Piperazine', 'Piperazine+', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 8.613E-4, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8260, 'Piperazine', 'PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8261, 'Piperazine', 'H+PZCOO-', 'Classic', -0.27882929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8262, 'Piperazine', '-OOCPZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8263, 'HCO3-', 'Piperazine+', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, -3.34E-4, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8264, 'HCO3-', 'PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8265, 'HCO3-', 'H+PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8266, 'HCO3-', '-OOCPZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8267, 'Piperazine+', 'PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, -6.51E-4, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8268, 'Piperazine+', 'H+PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 3.68299E-4, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8269, 'Piperazine+', '-OOCPZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, -4.5056E-4, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8270, 'PZCOO-', 'H+PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8271, 'PZCOO-', '-OOCPZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8272, 'H+PZCOO-', '-OOCPZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8273, 'OH-', 'Piperazine', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8274, 'OH-', 'Piperazine+', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8275, 'OH-', 'HCO3-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8276, 'OH-', 'H+PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8277, 'OH-', 'PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8278, 'OH-', '-OOCPZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8279, 'Piperazine', 'water', 'HV', 0.2, 0.0, 0.0, 0.0, 0.0, 0.36498, 2622.533, -1705.0208, 0, 0.0, 0.0, 0.0, 'Classic', 0.5, 0.0, 0.0, 0.0, 0.0, -2.7049, 0.7156, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8280, 'MDEA', 'Piperazine', 'Classic', -0.34688711, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8281, 'MDEA', 'Piperazine+', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 3.29114E-4, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8282, 'MDEA', 'PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8283, 'MDEA', 'H+PZCOO-', 'Classic', -0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8284, 'MDEA', '-OOCPZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8285, 'MDEA+', 'Piperazine', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.001169238, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8286, 'MDEA+', 'Piperazine+', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8287, 'MDEA+', 'PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, -0.001790346, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8288, 'MDEA+', 'H+PZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 2.20016E-4, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8289, 'MDEA+', '-OOCPZCOO-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, -0.001338701, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8290, 'MDEA', 'water', 'HV ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.20826367, -1100.336238, 733.1497652, 0, 0.0, 0.0, 0.0, 'WS ', 0.0, 0.386, -401.57, 803.41, 0.0, 5.093855611, -6.006005569, 0.0, 0.0, -0.25, 0.0, 0.0, 0.0, 0.0), +(8291, 'OH-', 'CO3--', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8292, 'HCO3-', 'CO3--', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8293, 'AceticAcid', 'CO3--', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8294, 'AceticAcid', 'OH-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8295, 'Ac-', 'CO3--', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.386, -401.57, 803.41, 0.0, 5.093855611, -6.006005569, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8296, 'Ac-', 'OH-', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8297, 'CO3--', 'Piperazine+', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8298, 'Piperazine', 'MDEA+', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.001169238, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8299, 'methane', 'H+PZCOO-', 'Classic', 0.760482, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8300, 'methane', 'Piperazine+', 'Classic', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 6.30096E-4, 0.0, 0.0, 'Classic', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(8301, 'Piperazine', 'methane ', 'Classic', 0.599959902, 0.0, 0.0, 0.0, 0.0, 0.122, 2467.0, 274.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.646504377, 0.646504377, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERSRK(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(8302, 'n-octane', 'water ', 'Classic', 0.5, 0.0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0165, 0.0, 0.0, 0.0, 0.0), +(8303, 'n-nonane', 'water ', 'Classic', 0.5, 0.0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0425, 0.0, 0.0, 0.0, 0.0), +(8304, 'n-decane', 'water ', 'Classic', 0.5, 0.0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0685, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.INTERTEMP( + ID INT NOT NULL, + COMP1 VARCHAR(255) DEFAULT NULL, + COMP2 VARCHAR(255) DEFAULT NULL, + HVTYPE VARCHAR(255) DEFAULT NULL, + KIJSRK DOUBLE DEFAULT NULL, + KIJTSRK DOUBLE DEFAULT NULL, + KIJTTYPE INT DEFAULT '0', + KIJPR DOUBLE DEFAULT NULL, + KIJTPR DOUBLE DEFAULT '0', + KIJPCSAFT DOUBLE DEFAULT '0', + HVALPHA DOUBLE DEFAULT NULL, + HVGIJ DOUBLE DEFAULT NULL, + HVGJI DOUBLE DEFAULT NULL, + CALCWIJ INT DEFAULT '0', + W1 DOUBLE DEFAULT NULL, + W2 DOUBLE DEFAULT NULL, + W3 DOUBLE DEFAULT NULL, + WSTYPE VARCHAR(255) DEFAULT NULL, + KIJWS DOUBLE DEFAULT NULL, + NRTLALPHA DOUBLE DEFAULT NULL, + NRTLGIJ DOUBLE DEFAULT NULL, + NRTLGJI DOUBLE DEFAULT NULL, + GIJVISC DOUBLE DEFAULT NULL, + HVGIJT DOUBLE DEFAULT NULL, + HVGJIT DOUBLE DEFAULT NULL, + WSGIJT DOUBLE DEFAULT NULL, + WSGJIT DOUBLE DEFAULT NULL, + CPAKIJ_SRK DOUBLE DEFAULT NULL, + CPAKIJT_SRK DOUBLE DEFAULT NULL, + CPAKIJX_SRK DOUBLE DEFAULT '0', + CPAKJIX_SRK DOUBLE DEFAULT NULL, + CPAKIJ_PR DOUBLE DEFAULT '0', + KIJWSUNIFAC DOUBLE DEFAULT NULL, + AIJDESMATH DOUBLE DEFAULT '0', + BIJDESMATH DOUBLE DEFAULT '0', + CPAASSOSIATIONTYPE INT DEFAULT '0', + CPABETACROSS DOUBLE DEFAULT '0', + CPAEPSCROSS DOUBLE DEFAULT '0' +); +-- 68 +/- SELECT COUNT(*) FROM PUBLIC.INTERTEMP; +INSERT INTO PUBLIC.INTERTEMP(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJTTYPE, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJT_SRK, CPAKIJX_SRK, CPAKJIX_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH, CPAASSOSIATIONTYPE, CPABETACROSS, CPAEPSCROSS) VALUES +(7020, 'nitrogen', 'ethane', 'Classic ', 0.0388, 0.0, 0, 0.0388, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.031899, 0.0, 0.031899, 0.031899, 0.031899, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6947, 'nitrogen', 'methane', 'Classic ', 0.0319, 0.0, 0, 0.0319, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.0, 0.02, 0.02, 0.02, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7242, 'H2S', 'water', 'HV ', 0.03, 0.0, 0, 0.03, 0.0, 0.0, 0.10448, 26082.0, -2148.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.03, 0.0653, -1082.0, 2579.6, 0.0, -18.45, 5.67, 0.0, 0.0, 0.1913, 0.0, 0.1913, 0.1913, 0.0, 0.0, 0.0, 0.0, 1, 0.0624, 10878.0), +(7023, 'CO2', 'ethane', 'Classic ', 0.1346, 0.0, 0, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.12, 0.12, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7885, 'nitrogen', 'n-butane', 'Classic ', 0.0597, 0.0, 0, 0.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0597, 0.0, 0.0597, 0.0597, 0.09, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7888, 'CO2', 'n-butane', 'Classic ', 0.14120001, 0.0, 0, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.14120001, 0.0, 0.14120001, 0.14120001, 0.12980001, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(8044, 'i-pentane', 'n-pentane', 'Classic ', 3.9999E-4, 0.0, 0, 3.9999E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7256, 'n-hexane', 'water', 'HV ', 0.5, 0.0, 0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0355, 0.0, 0.0355, 0.0355, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6955, 'i-butane', 'methane', 'Classic ', 0.01369935, 0.0, 0, 0.01369935, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.245598745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7095, 'H2S', 'CO2', 'Classic ', 0.102, 0.0, 0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.12, 0.12, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7169, 'H2S', 'propane', 'Classic ', 0.0831, 0.0, 0, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.0, 0.07, 0.07, 0.07, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7176, 'i-pentane', 'propane', 'Classic ', 0.00305075, 0.0, 0, 0.00305075, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERTEMP(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJTTYPE, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJT_SRK, CPAKIJX_SRK, CPAKJIX_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH, CPAASSOSIATIONTYPE, CPABETACROSS, CPAEPSCROSS) VALUES +(7535, 'n-pentane', 'H2S', 'Classic ', 0.0697, 0.0, 0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.0, 0.06, 0.06, 0.06, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7891, 'i-butane', 'n-butane', 'Classic ', 4.7251E-4, 0.0, 0, 4.7251E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', -0.6500216, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7031, 'i-pentane', 'ethane', 'Classic ', 0.00791956, 0.0, 0, 0.00791956, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7243, 'water', 'ethane', 'HV ', 0.45, 0.0, 0, 0.635, -0.93, 0.0, 0.122, -1479.91, 5173.65, 0, 0.0, 0.0, 0.0, 'WS ', 0.45, 0.122, 274.0, 2467.0, 0.0, 3.46, -6.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6950, 'CO2', 'methane', 'Classic ', 0.0973, 0.0, 0, 0.0973, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0973, 0.0, 0.0973, 0.0973, 0.0956, 0.0, 0.0, 0.0, 1, 0.085, 0.0), +(7032, 'n-pentane', 'ethane', 'Classic ', 0.00811359, 0.0, 0, 0.00811359, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7151, 'water', 'propane', 'HV ', 0.53, 0.0, 0, 0.53, 0.0, 0.0, 0.07, -1584.0, 3517.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.53, 0.122, 2467.0, 274.0, 0.0, -0.44, -0.1, 0.0, 0.0, 0.11, 0.0, 0.11, 0.11, 0.1135, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7027, 'i-butane', 'ethane', 'Classic ', 0.00511365, 0.0, 0, 0.00511365, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.138621605, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7173, 'n-butane', 'propane', 'Classic ', 0.00132268, 0.0, 0, 0.00132268, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.028532064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(8040, 'i-butane', 'n-pentane', 'Classic ', 8.1462E-4, 0.0, 0, 8.1462E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6956, 'n-butane', 'methane', 'Classic ', 0.01289789, 0.0, 0, 0.01289789, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.222563826, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7110, 'n-hexane', 'CO2', 'Classic ', 0.12, 0.0, 0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.12, 0.12, 0.0, 0.0, 0.0, 0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERTEMP(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJTTYPE, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJT_SRK, CPAKIJX_SRK, CPAKJIX_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH, CPAASSOSIATIONTYPE, CPABETACROSS, CPAEPSCROSS) VALUES +(7025, 'propane', 'ethane', 'Classic ', 0.00185286, 0.0, 0, 0.00185286, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.048134573, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00185286, 0.0, 0.00185286, 0.00185286, 0.00185286, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7024, 'H2S', 'ethane', 'Classic ', 0.0829, 0.0, 0, 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07, 0.0, 0.07, 0.07, 0.07, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7177, 'n-pentane', 'propane', 'Classic ', 0.00316586, 0.0, 0, 0.00316586, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7165, 'nitrogen', 'propane', 'Classic ', 0.0886, 0.0, 0, 0.079998, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0886, 0.0, 0.0886, 0.0886, 0.0886, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7455, 'i-butane', 'nitrogen', 'Classic ', 0.13150001, 0.0, 0, 0.094999, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.0, 0.08, 0.08, 0.08, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6953, 'propane', 'methane', 'Classic ', 0.00747722, 0.0, 0, 0.00747722, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.131666934, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00747722, 0.0, 0.00747722, 0.00747722, 0.00747722, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7895, 'i-pentane', 'n-butane', 'Classic ', 9.2632E-4, 0.0, 0, 9.2632E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.2632E-4, 0.0, 9.2632E-4, 9.2632E-4, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6952, 'ethane', 'methane', 'Classic ', 0.00295295, 0.0, 0, 0.00295295, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.029890022, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00295295, 0.0, 0.00295295, 0.00295295, 0.00295295, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(8051, 'n-hexane', 'n-pentane', 'Classic ', 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7466, 'n-hexane', 'nitrogen', 'Classic ', 0.08, 0.0, 0, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.0, 0.08, 0.08, 0.08, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7028, 'n-butane', 'ethane', 'Classic ', 0.00464288, 0.0, 0, 0.00464288, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.137552316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7092, 'nitrogen', 'CO2', 'Classic ', -0.0171, 0.0, 0, -0.019997, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERTEMP(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJTTYPE, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJT_SRK, CPAKIJX_SRK, CPAKJIX_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH, CPAASSOSIATIONTYPE, CPABETACROSS, CPAEPSCROSS) VALUES +(7241, 'CO2', 'water', 'HV ', 0.1, 0.0, 0, 0.184, 0.236, 0.0, 0.03, 5251.7374371982, -3121.2788585, 0, 0.0, 0.0, 0.0, 'WS ', 1.6, 0.3, -393.0, -713.0, 0.0, -0.8420253536, -0.5123316046, 0.96, 3.96, -0.27686, 0.001121, -0.27686, -0.27686, 0.0, 0.0, 0.0, 0.0, 1, 0.075, 0.0), +(7245, 'i-butane', 'water', 'HV ', 0.52, 0.0, 0, 0.52, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.52, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7531, 'n-butane', 'H2S', 'Classic ', 0.06, 0.0, 0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.0, 0.06, 0.06, 0.06, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7104, 'n-pentane', 'CO2', 'Classic ', 0.1278, 0.0, 0, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.12, 0.12, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7099, 'i-butane', 'CO2', 'Classic ', 0.13680001, 0.0, 0, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.12, 0.12, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7183, 'n-hexane', 'propane', 'Classic ', 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7530, 'i-butane', 'H2S', 'Classic ', 0.06, 0.0, 0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.0, 0.06, 0.06, 0.06, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7238, 'nitrogen', 'water', 'HV ', 0.48, 0.0, 0, 0.48, 0.0, 0.0, 0.08, 4898.64, -111.76, 0, 0.0, 0.0, 0.0, 'WS ', -0.48, 0.0768, -388.0, 4911.0, 0.0, -6.9, 2.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6959, 'i-pentane', 'methane', 'Classic ', 0.01817552, 0.0, 0, 0.01817552, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7248, 'i-pentane', 'water', 'HV ', 0.5, 0.0, 0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6933, 'water', 'methane', 'HV ', 0.45, 0.0, 0, 0.651, -1.385, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, -0.827413423948976, 0.0026055, -0.827413423948976, -0.827413423948976, 0.161199631, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7541, 'n-hexane', 'H2S', 'Classic ', 0.05, 0.0, 0, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05, 0.0, 0.05, 0.05, 0.05, 0.0, 0.0, 0.0, 0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERTEMP(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJTTYPE, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJT_SRK, CPAKIJX_SRK, CPAKJIX_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH, CPAASSOSIATIONTYPE, CPABETACROSS, CPAEPSCROSS) VALUES +(7460, 'n-pentane', 'nitrogen', 'Classic ', 0.093598, 0.0, 0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.0, 0.08, 0.08, 0.08, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(8035, 'H2S', 'n-pentane', 'Classic ', 0.06, 0.0, 0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.06, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7902, 'n-hexane', 'n-butane', 'Classic ', 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7889, 'H2S', 'n-butane', 'Classic ', 0.06, 0.0, 0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.0, 0.06, 0.06, 0.06, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7097, 'propane', 'CO2', 'Classic ', 0.1018, 0.0, 0, 0.13500001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.12, 0.12, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7103, 'i-pentane', 'CO2', 'Classic ', 0.12970001, 0.0, 0, 0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.12, 0.12, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7456, 'n-butane', 'nitrogen', 'Classic ', 0.1007, 0.0, 0, 0.1007, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.0, 0.08, 0.08, 0.08, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7453, 'H2S', 'nitrogen', 'Classic ', 0.14, 0.0, 0, 0.14, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7871, 'water', 'n-butane', 'HV ', 0.52, 0.0, 0, 0.52, 0.0, 0.0, 0.12, -567.8, 3181.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.53, 0.122, 2467.0, 274.0, 0.0, 1.97, -1.93, 0.0, 0.0, 0.0875, 0.0, 0.0875, 0.0875, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7172, 'i-butane', 'propane', 'Classic ', 0.00153851, 0.0, 0, 0.00153851, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.028532064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6951, 'H2S', 'methane', 'Classic ', 0.085, 0.0, 0, 0.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.0, 0.08, 0.08, 0.08, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7896, 'n-pentane', 'n-butane', 'Classic ', 9.7665E-4, 0.0, 0, 9.7665E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.7665E-4, 0.0, 9.7665E-4, 9.7665E-4, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6966, 'n-hexane', 'methane', 'Classic ', 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0); +INSERT INTO PUBLIC.INTERTEMP(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJTTYPE, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJT_SRK, CPAKIJX_SRK, CPAKJIX_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH, CPAASSOSIATIONTYPE, CPABETACROSS, CPAEPSCROSS) VALUES +(7534, 'i-pentane', 'H2S', 'Classic ', 0.0697, 0.0, 0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.0, 0.06, 0.06, 0.06, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7459, 'i-pentane', 'nitrogen', 'Classic ', 0.093, 0.0, 0, 0.094999, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08, 0.0, 0.08, 0.08, 0.08, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7452, 'CO2', 'nitrogen', 'Classic ', -0.0171, 0.0, 0, -0.019997, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7038, 'n-hexane', 'ethane', 'Classic ', 0.0, 0.0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7100, 'n-butane', 'CO2', 'Classic ', 0.1474, 0.0, 0, 0.12980001, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.12, 0.12, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(7249, 'n-pentane', 'water', 'HV ', 0.5, 0.0, 0, 0.5, 0.0, 0.0, 0.145, 681.0, 2507.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.145, 681.0, 2507.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0615, 0.0, 0.0615, 0.0615, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0), +(6960, 'n-pentane', 'methane', 'Classic ', 0.01847102, 0.0, 0, 0.01847102, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 0.0, 'Classic ', 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.INTERTEMP2( + ID INT NOT NULL, + COMP1 VARCHAR(255) DEFAULT NULL, + COMP2 VARCHAR(255) DEFAULT NULL, + HVTYPE VARCHAR(255) DEFAULT NULL, + KIJSRK DOUBLE DEFAULT NULL, + KIJTSRK DOUBLE DEFAULT NULL, + KIJPR DOUBLE DEFAULT NULL, + KIJTPR DOUBLE DEFAULT '0', + KIJPCSAFT DOUBLE DEFAULT '0', + HVALPHA DOUBLE DEFAULT NULL, + HVGIJ DOUBLE DEFAULT NULL, + HVGJI DOUBLE DEFAULT NULL, + CALCWIJ INT DEFAULT '0', + W1 DOUBLE DEFAULT NULL, + W2 DOUBLE DEFAULT NULL, + W3 DOUBLE DEFAULT NULL, + WSTYPE VARCHAR(255) DEFAULT NULL, + KIJWS DOUBLE DEFAULT NULL, + NRTLALPHA DOUBLE DEFAULT NULL, + NRTLGIJ DOUBLE DEFAULT NULL, + NRTLGJI DOUBLE DEFAULT NULL, + GIJVISC DOUBLE DEFAULT NULL, + HVGIJT DOUBLE DEFAULT NULL, + HVGJIT DOUBLE DEFAULT NULL, + WSGIJT DOUBLE DEFAULT NULL, + WSGJIT DOUBLE DEFAULT NULL, + CPAKIJ_SRK DOUBLE DEFAULT NULL, + CPAKIJ_PR DOUBLE DEFAULT '0', + KIJWSUNIFAC DOUBLE DEFAULT NULL, + AIJDESMATH DOUBLE DEFAULT '0', + BIJDESMATH DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.INTERTEMP2 ADD CONSTRAINT PUBLIC.CONSTRAINT_BE PRIMARY KEY(ID); +-- 4 +/- SELECT COUNT(*) FROM PUBLIC.INTERTEMP2; +INSERT INTO PUBLIC.INTERTEMP2(ID, COMP1, COMP2, HVTYPE, KIJSRK, KIJTSRK, KIJPR, KIJTPR, KIJPCSAFT, HVALPHA, HVGIJ, HVGJI, CALCWIJ, W1, W2, W3, WSTYPE, KIJWS, NRTLALPHA, NRTLGIJ, NRTLGJI, GIJVISC, HVGIJT, HVGJIT, WSGIJT, WSGJIT, CPAKIJ_SRK, CPAKIJ_PR, KIJWSUNIFAC, AIJDESMATH, BIJDESMATH) VALUES +(6933, 'water ', 'methane ', 'HV ', 0.45, 0.0, 0.651, -1.385, 0.0, 0.15, -123.6011438, 4875.094236, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 26.6, -142.2, 0.0, 2.137853939, -6.549655038, 0.0, 0.0, -0.045, 0.161199631, 0.0, 0.0, 0.0), +(6934, 'methanol ', 'methane ', 'HV ', 0.13, 0.0, 0.13, 0.0, 0.0, 0.395, 1610.0, 255.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.5, 0.0, 646.5, -2.056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7225, 'methanol ', 'water ', 'HV ', -0.0789, 0.0, -0.0789, 0.0, 0.0, 0.357, 410.67, -169.63, 0, 0.0, 0.0, 0.0, 'WS ', 0.093103947, 0.303, -48.68, 610.6, 0.0, 1.89, -1.11, 0.0, 0.0, -0.09, -0.09, 0.093103947, 0.0, 0.0), +(7599, 'methane ', 'methanol ', 'HV ', 0.13, 0.0, 0.13, 0.0, 0.0, 0.395, 255.0, 1610.0, 0, 0.0, 0.0, 0.0, 'WS ', 0.13, 0.395, 255.0, 1610.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.13, 0.13, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.IONICDATA( + ID INT NOT NULL, + COMPONENTSOLVENT VARCHAR(50) DEFAULT NULL, + ION1 VARCHAR(50) DEFAULT NULL, + STOC1 INT DEFAULT '0', + ION2 VARCHAR(50) DEFAULT NULL, + STOC2 INT DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + X3 DOUBLE DEFAULT '0', + OSMOTICCOEFFICIENT DOUBLE DEFAULT '0', + IONICACTIVITY DOUBLE DEFAULT NULL, + STDDEV1 DOUBLE DEFAULT '0', + STDDEV2 DOUBLE DEFAULT NULL, + DESCRIPTION VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.IONICDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_F4 PRIMARY KEY(ID); +-- 569 +/- SELECT COUNT(*) FROM PUBLIC.IONICDATA; +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(323, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.932, 0.778, 0.00932, 0.00778, 'NaCl', 'Robinson1955'), +(324, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.925, 0.735, 0.00925, 0.00735, 'NaCl', 'Robinson1955'), +(325, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.922, 0.71, 0.00922, 0.0071, 'NaCl', 'Robinson1955'), +(326, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.92, 0.693, 0.0092, 0.00693, 'NaCl', 'Robinson1955'), +(327, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.921, 0.681, 0.00921, 0.00681, 'NaCl', 'Robinson1955'), +(328, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.923, 0.673, 0.00923, 0.00673, 'NaCl', 'Robinson1955'), +(329, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.926, 0.667, 0.00926, 0.00667, 'NaCl', 'Robinson1955'), +(330, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.929, 0.662, 0.00929, 0.00662, 'NaCl', 'Robinson1955'), +(331, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.932, 0.659, 0.00932, 0.00659, 'NaCl', 'Robinson1955'), +(332, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.936, 0.657, 0.00936, 0.00657, 'NaCl', 'Robinson1955'), +(333, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.943, 0.654, 0.00943, 0.00654, 'NaCl', 'Robinson1955'), +(334, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.951, 0.655, 0.00951, 0.00655, 'NaCl', 'Robinson1955'), +(335, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.962, 0.657, 0.00962, 0.00657, 'NaCl', 'Robinson1955'), +(336, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.972, 0.662, 0.00972, 0.00662, 'NaCl', 'Robinson1955'), +(337, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.983, 0.668, 0.00983, 0.00668, 'NaCl', 'Robinson1955'), +(338, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 1.013, 0.688, 0.01013, 0.00688, 'NaCl', 'Robinson1955'), +(339, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 1.045, 0.714, 0.01045, 0.00714, 'NaCl', 'Robinson1955'), +(340, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 1.08, 0.746, 0.0108, 0.00746, 'NaCl', 'Robinson1955'), +(341, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 1.116, 0.783, 0.01116, 0.00783, 'NaCl', 'Robinson1955'), +(342, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 1.153, 0.826, 0.01153, 0.00826, 'NaCl', 'Robinson1955'), +(343, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 1.192, 0.874, 0.01192, 0.00874, 'NaCl', 'Robinson1955'), +(344, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.09911, 0.09911, 1.231, 0.928, 0.01231, 0.00928, 'NaCl', 'Robinson1955'), +(345, 'water', 'Na+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.10812, 0.10812, 1.271, 0.986, 0.01271, 0.00986, 'NaCl', 'Robinson1955'), +(346, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.943, 0.796, 0.00943, 0.00796, 'HCl', 'Robinson1955'), +(347, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.945, 0.767, 0.00945, 0.00767, 'HCl', 'Robinson1955'), +(348, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.952, 0.756, 0.00952, 0.00756, 'HCl', 'Robinson1955'), +(349, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.963, 0.755, 0.00963, 0.00755, 'HCl', 'Robinson1955'), +(350, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.974, 0.757, 0.00974, 0.00757, 'HCl', 'Robinson1955'), +(351, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.986, 0.763, 0.00986, 0.00763, 'HCl', 'Robinson1955'), +(352, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.998, 0.772, 0.00998, 0.00772, 'HCl', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(353, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 1.011, 0.783, 0.01011, 0.00783, 'HCl', 'Robinson1955'), +(354, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 1.025, 0.795, 0.01025, 0.00795, 'HCl', 'Robinson1955'), +(355, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 1.039, 0.809, 0.01039, 0.00809, 'HCl', 'Robinson1955'), +(356, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 1.067, 0.84, 0.01067, 0.0084, 'HCl', 'Robinson1955'), +(357, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 1.096, 0.876, 0.01096, 0.00876, 'HCl', 'Robinson1955'), +(358, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 1.126, 0.916, 0.01126, 0.00916, 'HCl', 'Robinson1955'), +(359, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 1.157, 0.96, 0.01157, 0.0096, 'HCl', 'Robinson1955'), +(360, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 1.188, 1.009, 0.01188, 0.01009, 'HCl', 'Robinson1955'), +(361, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 1.266, 1.147, 0.01266, 0.01147, 'HCl', 'Robinson1955'), +(362, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 1.348, 1.316, 0.01348, 0.01316, 'HCl', 'Robinson1955'), +(363, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 1.431, 1.518, 0.01431, 0.01518, 'HCl', 'Robinson1955'), +(364, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 1.517, 1.762, 0.01517, 0.01762, 'HCl', 'Robinson1955'), +(365, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 1.598, 2.04, 0.01598, 0.0204, 'HCl', 'Robinson1955'), +(366, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 1.68, 2.38, 0.0168, 0.0238, 'HCl', 'Robinson1955'), +(367, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.09911, 0.09911, 1.763, 2.77, 0.01763, 0.0277, 'HCl', 'Robinson1955'), +(368, 'water', 'H3O+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.10812, 0.10812, 1.845, 3.22, 0.01845, 0.0322, 'HCl', 'Robinson1955'), +(369, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.939, 0.79, 0.00939, 0.0079, 'LiCl', 'Robinson1955'), +(370, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.939, 0.757, 0.00939, 0.00757, 'LiCl', 'Robinson1955'), +(371, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.945, 0.744, 0.00945, 0.00744, 'LiCl', 'Robinson1955'), +(372, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.954, 0.74, 0.00954, 0.0074, 'LiCl', 'Robinson1955'), +(373, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.963, 0.739, 0.00963, 0.00739, 'LiCl', 'Robinson1955'), +(374, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.973, 0.743, 0.00973, 0.00743, 'LiCl', 'Robinson1955'), +(375, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.984, 0.748, 0.00984, 0.00748, 'LiCl', 'Robinson1955'), +(376, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.995, 0.755, 0.00995, 0.00755, 'LiCl', 'Robinson1955'), +(377, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 1.006, 0.764, 0.01006, 0.00764, 'LiCl', 'Robinson1955'), +(378, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 1.018, 0.774, 0.01018, 0.00774, 'LiCl', 'Robinson1955'), +(379, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 1.041, 0.769, 0.01041, 0.00769, 'LiCl', 'Robinson1955'), +(380, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 1.066, 0.823, 0.01066, 0.00823, 'LiCl', 'Robinson1955'), +(381, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 1.091, 0.853, 0.01091, 0.00853, 'LiCl', 'Robinson1955'), +(382, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 1.116, 0.885, 0.01116, 0.00885, 'LiCl', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(383, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 1.142, 0.921, 0.01142, 0.00921, 'LiCl', 'Robinson1955'), +(384, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 1.212, 1.026, 0.01212, 0.01026, 'LiCl', 'Robinson1955'), +(385, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 1.286, 1.156, 0.01286, 0.01156, 'LiCl', 'Robinson1955'), +(386, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 1.366, 1.317, 0.01366, 0.01317, 'LiCl', 'Robinson1955'), +(387, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 1.449, 1.51, 0.01449, 0.0151, 'LiCl', 'Robinson1955'), +(388, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 1.533, 1.741, 0.01533, 0.01741, 'LiCl', 'Robinson1955'), +(389, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 1.619, 2.02, 0.01619, 0.0202, 'LiCl', 'Robinson1955'), +(390, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.09911, 0.09911, 1.705, 2.34, 0.01705, 0.0234, 'LiCl', 'Robinson1955'), +(391, 'water', 'Li+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.10812, 0.10812, 1.791, 2.72, 0.01791, 0.0272, 'LiCl', 'Robinson1955'), +(392, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.943, 0.796, 0.00943, 0.00796, 'LiBr', 'Robinson1955'), +(393, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.944, 0.766, 0.00944, 0.00766, 'LiBr', 'Robinson1955'), +(394, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.952, 0.756, 0.00952, 0.00756, 'LiBr', 'Robinson1955'), +(395, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.96, 0.752, 0.0096, 0.00752, 'LiBr', 'Robinson1955'), +(396, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.97, 0.753, 0.0097, 0.00753, 'LiBr', 'Robinson1955'), +(397, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.981, 0.758, 0.00981, 0.00758, 'LiBr', 'Robinson1955'), +(398, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.993, 0.767, 0.00993, 0.00767, 'LiBr', 'Robinson1955'), +(399, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 1.007, 0.777, 0.01007, 0.00777, 'LiBr', 'Robinson1955'), +(400, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 1.021, 0.789, 0.01021, 0.00789, 'LiBr', 'Robinson1955'), +(401, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 1.035, 0.803, 0.01035, 0.00803, 'LiBr', 'Robinson1955'), +(402, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 1.067, 0.837, 0.01067, 0.00837, 'LiBr', 'Robinson1955'), +(403, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 1.098, 0.874, 0.01098, 0.00874, 'LiBr', 'Robinson1955'), +(404, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 1.13, 0.917, 0.0113, 0.00917, 'LiBr', 'Robinson1955'), +(405, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 1.163, 0.964, 0.01163, 0.00964, 'LiBr', 'Robinson1955'), +(406, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 1.196, 1.015, 0.01196, 0.01015, 'LiBr', 'Robinson1955'), +(407, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 1.278, 1.161, 0.01278, 0.01161, 'LiBr', 'Robinson1955'), +(408, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 1.364, 1.341, 0.01364, 0.01341, 'LiBr', 'Robinson1955'), +(409, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 1.467, 1.584, 0.01467, 0.01584, 'LiBr', 'Robinson1955'), +(410, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 1.578, 1.897, 0.01578, 0.01897, 'LiBr', 'Robinson1955'), +(411, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 1.687, 2.28, 0.01687, 0.0228, 'LiBr', 'Robinson1955'), +(412, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 1.793, 2.74, 0.01793, 0.0274, 'LiBr', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(413, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.09911, 0.09911, 1.891, 3.27, 0.01891, 0.0327, 'LiBr', 'Robinson1955'), +(414, 'water', 'Li+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.10812, 0.10812, 1.989, 3.92, 0.01989, 0.0392, 'LiBr', 'Robinson1955'), +(438, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.927, 0.77, 0.00927, 0.0077, 'KCl', 'Robinson1955'), +(439, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.913, 0.718, 0.00913, 0.00718, 'KCl', 'Robinson1955'), +(440, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.906, 0.688, 0.00906, 0.00688, 'KCl', 'Robinson1955'), +(441, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.902, 0.666, 0.00902, 0.00666, 'KCl', 'Robinson1955'), +(442, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.899, 0.649, 0.00899, 0.00649, 'KCl', 'Robinson1955'), +(443, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.898, 0.637, 0.00898, 0.00637, 'KCl', 'Robinson1955'), +(444, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.897, 0.626, 0.00897, 0.00626, 'KCl', 'Robinson1955'), +(445, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.897, 0.618, 0.00897, 0.00618, 'KCl', 'Robinson1955'), +(446, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.897, 0.61, 0.00897, 0.0061, 'KCl', 'Robinson1955'), +(447, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.897, 0.604, 0.00897, 0.00604, 'KCl', 'Robinson1955'), +(448, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.899, 0.593, 0.00899, 0.00593, 'KCl', 'Robinson1955'), +(449, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.901, 0.586, 0.00901, 0.00586, 'KCl', 'Robinson1955'), +(450, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.904, 0.58, 0.00904, 0.0058, 'KCl', 'Robinson1955'), +(451, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.908, 0.576, 0.00908, 0.00576, 'KCl', 'Robinson1955'), +(452, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.912, 0.573, 0.00912, 0.00573, 'KCl', 'Robinson1955'), +(453, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 0.924, 0.569, 0.00924, 0.00569, 'KCl', 'Robinson1955'), +(454, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 0.937, 0.569, 0.00937, 0.00569, 'KCl', 'Robinson1955'), +(455, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 0.95, 0.572, 0.0095, 0.00572, 'KCl', 'Robinson1955'), +(456, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 0.965, 0.577, 0.00965, 0.00577, 'KCl', 'Robinson1955'), +(457, 'water', 'K+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 0.98, 0.583, 0.0098, 0.00583, 'KCl', 'Robinson1955'), +(458, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.854, 0.518, 0.00852, 0.00518, 'Ca2Cl', 'Robinson1955'), +(459, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.862, 0.472, 0.00862, 0.00472, 'Ca2Cl', 'Robinson1955'), +(460, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.876, 0.455, 0.00876, 0.00455, 'Ca2Cl', 'Robinson1955'), +(461, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.894, 0.448, 0.00894, 0.00448, 'Ca2Cl', 'Robinson1955'), +(462, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 0.917, 0.448, 0.00917, 0.00448, 'Ca2Cl', 'Robinson1955'), +(463, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 0.94, 0.453, 0.0094, 0.00453, 'Ca2Cl', 'Robinson1955'), +(464, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 0.963, 0.46, 0.00963, 0.0046, 'Ca2Cl', 'Robinson1955'), +(465, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 0.988, 0.47, 0.00988, 0.0047, 'Ca2Cl', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(466, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 1.017, 0.484, 0.01017, 0.00484, 'Ca2Cl', 'Robinson1955'), +(467, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.046, 0.5, 0.01046, 0.005, 'Ca2Cl', 'Robinson1955'), +(468, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.107, 0.539, 0.01107, 0.00539, 'Ca2Cl', 'Robinson1955'), +(469, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.171, 0.587, 0.01171, 0.00587, 'Ca2Cl', 'Robinson1955'), +(470, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.237, 0.644, 0.01237, 0.00644, 'Ca2Cl', 'Robinson1955'), +(471, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.305, 0.712, 0.01305, 0.00712, 'Ca2Cl', 'Robinson1955'), +(472, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.03604, 0.07208, 1.376, 0.792, 0.01376, 0.00792, 'Ca2Cl', 'Robinson1955'), +(473, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.04505, 0.0901, 1.568, 1.063, 0.01568, 0.01063, 'Ca2Cl', 'Robinson1955'), +(474, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.05406, 0.10812, 1.779, 1.483, 0.01779, 0.01483, 'Ca2Cl', 'Robinson1955'), +(475, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.06307, 0.12614, 1.981, 2.08, 0.01981, 0.0208, 'Ca2Cl', 'Robinson1955'), +(476, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.07208, 0.14416, 2.182, 2.93, 0.02182, 0.0293, 'Ca2Cl', 'Robinson1955'), +(477, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.08109, 0.16218, 2.383, 4.17, 0.02383, 0.0417, 'Ca2Cl', 'Robinson1955'), +(478, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.0901, 0.1802, 2.574, 5.89, 0.02574, 0.0589, 'Ca2Cl', 'Robinson1955'), +(479, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.09911, 0.19822, 2.743, 8.18, 0.02743, 0.0818, 'Ca2Cl', 'Robinson1955'), +(480, 'water', 'Ca++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.10812, 0.21624, 2.891, 11.11, 0.02891, 0.1111, 'Ca2Cl', 'Robinson1955'), +(481, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.88, 0.56, 0.0088, 0.0056, 'Ca2I', 'Robinson1955'), +(482, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.906, 0.531, 0.00906, 0.00531, 'Ca2I', 'Robinson1955'), +(483, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.935, 0.531, 0.00935, 0.00531, 'Ca2I', 'Robinson1955'), +(484, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.969, 0.543, 0.00969, 0.00543, 'Ca2I', 'Robinson1955'), +(485, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 1.008, 0.561, 0.01008, 0.00561, 'Ca2I', 'Robinson1955'), +(486, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 1.044, 0.584, 0.01044, 0.00584, 'Ca2I', 'Robinson1955'), +(487, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 1.083, 0.614, 0.01083, 0.00614, 'Ca2I', 'Robinson1955'), +(488, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 1.128, 0.65, 0.01128, 0.0065, 'Ca2I', 'Robinson1955'), +(489, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 1.173, 0.692, 0.01173, 0.00692, 'Ca2I', 'Robinson1955'), +(490, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.217, 0.741, 0.01217, 0.00741, 'Ca2I', 'Robinson1955'), +(491, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.31, 0.852, 0.0131, 0.00852, 'Ca2I', 'Robinson1955'), +(492, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.407, 0.992, 0.01407, 0.00992, 'Ca2I', 'Robinson1955'), +(493, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.504, 1.161, 0.01504, 0.01161, 'Ca2I', 'Robinson1955'), +(494, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.605, 1.375, 0.01605, 0.01375, 'Ca2I', 'Robinson1955'), +(495, 'water', 'Ca++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.03604, 0.07208, 1.71, 1.64, 0.0171, 0.0164, 'Ca2I', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(496, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.934, 0.782, 0.00934, 0.00782, 'NaBr', 'Robinson1955'), +(497, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.928, 0.741, 0.00928, 0.00741, 'NaBr', 'Robinson1955'), +(498, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.928, 0.719, 0.00928, 0.00719, 'NaBr', 'Robinson1955'), +(499, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.929, 0.704, 0.00929, 0.00704, 'NaBr', 'Robinson1955'), +(500, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.933, 0.697, 0.00933, 0.00697, 'NaBr', 'Robinson1955'), +(501, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.937, 0.692, 0.00937, 0.00692, 'NaBr', 'Robinson1955'), +(502, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.942, 0.689, 0.00942, 0.00689, 'NaBr', 'Robinson1955'), +(503, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.947, 0.687, 0.00947, 0.00687, 'NaBr', 'Robinson1955'), +(504, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.953, 0.687, 0.00953, 0.00687, 'NaBr', 'Robinson1955'), +(505, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.958, 0.687, 0.00958, 0.00687, 'NaBr', 'Robinson1955'), +(506, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.969, 0.692, 0.00969, 0.00692, 'NaBr', 'Robinson1955'), +(507, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.983, 0.699, 0.00983, 0.00699, 'NaBr', 'Robinson1955'), +(508, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.997, 0.706, 0.00997, 0.00706, 'NaBr', 'Robinson1955'), +(509, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 1.012, 0.718, 0.01012, 0.00718, 'NaBr', 'Robinson1955'), +(510, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 1.028, 0.731, 0.01028, 0.00731, 'NaBr', 'Robinson1955'), +(511, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 1.067, 0.768, 0.01067, 0.00768, 'NaBr', 'Robinson1955'), +(512, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 1.107, 0.812, 0.01107, 0.00812, 'NaBr', 'Robinson1955'), +(513, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 1.15, 0.865, 0.0115, 0.00865, 'NaBr', 'Robinson1955'), +(514, 'water', 'Na+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 1.199, 0.929, 0.01199, 0.00929, 'NaBr', 'Robinson1955'), +(515, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.85, 0.511, 0.0085, 0.00511, 'Sr2Cl', 'Robinson1955'), +(516, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.854, 0.462, 0.00854, 0.00462, 'Sr2Cl', 'Robinson1955'), +(517, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.864, 0.442, 0.00864, 0.00442, 'Sr2Cl', 'Robinson1955'), +(518, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.88, 0.433, 0.0088, 0.00433, 'Sr2Cl', 'Robinson1955'), +(519, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 0.899, 0.43, 0.00899, 0.0043, 'Sr2Cl', 'Robinson1955'), +(520, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 0.918, 0.431, 0.00918, 0.00431, 'Sr2Cl', 'Robinson1955'), +(521, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 0.937, 0.434, 0.00937, 0.00434, 'Sr2Cl', 'Robinson1955'), +(522, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 0.959, 0.441, 0.00959, 0.00441, 'Sr2Cl', 'Robinson1955'), +(523, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 0.983, 0.449, 0.00983, 0.00449, 'Sr2Cl', 'Robinson1955'), +(524, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.009, 0.461, 0.01009, 0.00461, 'Sr2Cl', 'Robinson1955'), +(525, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.061, 0.489, 0.01061, 0.00489, 'Sr2Cl', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(526, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.116, 0.524, 0.01116, 0.00524, 'Sr2Cl', 'Robinson1955'), +(527, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.173, 0.565, 0.01173, 0.00565, 'Sr2Cl', 'Robinson1955'), +(528, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.232, 0.614, 0.01232, 0.00614, 'Sr2Cl', 'Robinson1955'), +(529, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.03604, 0.07208, 1.292, 0.67, 0.01292, 0.0067, 'Sr2Cl', 'Robinson1955'), +(530, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.04505, 0.0901, 1.454, 0.855, 0.01454, 0.00855, 'Sr2Cl', 'Robinson1955'), +(531, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.05406, 0.10812, 1.631, 1.126, 0.01631, 0.01126, 'Sr2Cl', 'Robinson1955'), +(532, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.06307, 0.12614, 1.802, 1.492, 0.01802, 0.01492, 'Sr2Cl', 'Robinson1955'), +(533, 'water', 'Sr++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.07208, 0.14416, 1.966, 1.977, 0.01966, 0.01977, 'Sr2Cl', 'Robinson1955'), +(534, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.859, 0.526, 0.00859, 0.00526, 'Sr2Br', 'Robinson1955'), +(535, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.871, 0.483, 0.00871, 0.00483, 'Sr2Br', 'Robinson1955'), +(536, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.888, 0.468, 0.00888, 0.00468, 'Sr2Br', 'Robinson1955'), +(537, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.908, 0.465, 0.00908, 0.00465, 'Sr2Br', 'Robinson1955'), +(538, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 0.932, 0.467, 0.00932, 0.00467, 'Sr2Br', 'Robinson1955'), +(539, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 0.957, 0.473, 0.00957, 0.00473, 'Sr2Br', 'Robinson1955'), +(540, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 0.983, 0.484, 0.00983, 0.00484, 'Sr2Br', 'Robinson1955'), +(541, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 1.011, 0.497, 0.01011, 0.00497, 'Sr2Br', 'Robinson1955'), +(542, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 1.042, 0.515, 0.01042, 0.00515, 'Sr2Br', 'Robinson1955'), +(543, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.074, 0.535, 0.01074, 0.00535, 'Sr2Br', 'Robinson1955'), +(544, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.142, 0.583, 0.01142, 0.00583, 'Sr2Br', 'Robinson1955'), +(545, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.21, 0.643, 0.0121, 0.00643, 'Sr2Br', 'Robinson1955'), +(546, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.284, 0.715, 0.01284, 0.00715, 'Sr2Br', 'Robinson1955'), +(547, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.36, 0.8, 0.0136, 0.008, 'Sr2Br', 'Robinson1955'), +(548, 'water', 'Sr++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.03604, 0.07208, 1.44, 0.906, 0.0144, 0.00906, 'Sr2Br', 'Robinson1955'), +(549, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.843, 0.0, 0.00843, 0.0, 'Ba2Cl', 'Robinson1955'), +(550, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.837, 0.0, 0.00837, 0.0, 'Ba2Cl', 'Robinson1955'), +(551, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.843, 0.0, 0.00843, 0.0, 'Ba2Cl', 'Robinson1955'), +(552, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.853, 0.0, 0.00853, 0.0, 'Ba2Cl', 'Robinson1955'), +(553, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 0.864, 0.0, 0.00864, 0.0, 'Ba2Cl', 'Robinson1955'), +(554, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 0.877, 0.0, 0.00877, 0.0, 'Ba2Cl', 'Robinson1955'), +(555, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 0.89, 0.0, 0.0089, 0.0, 'Ba2Cl', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(556, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 0.904, 0.0, 0.00904, 0.0, 'Ba2Cl', 'Robinson1955'), +(557, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 0.918, 0.0, 0.00918, 0.0, 'Ba2Cl', 'Robinson1955'), +(558, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 0.934, 0.0, 0.00934, 0.0, 'Ba2Cl', 'Robinson1955'), +(559, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 0.967, 0.0, 0.00967, 0.0, 'Ba2Cl', 'Robinson1955'), +(560, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.002, 0.0, 0.01002, 0.0, 'Ba2Cl', 'Robinson1955'), +(561, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.034, 0.0, 0.01034, 0.0, 'Ba2Cl', 'Robinson1955'), +(562, 'water', 'Ba++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.065, 0.0, 0.01065, 0.0, 'Ba2Cl', 'Robinson1955'), +(563, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.861, 0.529, 0.00861, 0.00529, 'Mg2Cl', 'Robinson1955'), +(564, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.877, 0.489, 0.00877, 0.00489, 'Mg2Cl', 'Robinson1955'), +(565, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.895, 0.477, 0.00895, 0.00477, 'Mg2Cl', 'Robinson1955'), +(566, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.919, 0.475, 0.00919, 0.00475, 'Mg2Cl', 'Robinson1955'), +(567, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 0.947, 0.481, 0.00974, 0.00481, 'Mg2Cl', 'Robinson1955'), +(568, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 0.976, 0.491, 0.00976, 0.00491, 'Mg2Cl', 'Robinson1955'), +(569, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 1.004, 0.505, 0.01004, 0.00505, 'Mg2Cl', 'Robinson1955'), +(570, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 1.036, 0.522, 0.01036, 0.00522, 'Mg2Cl', 'Robinson1955'), +(571, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 1.071, 0.544, 0.01071, 0.00544, 'Mg2Cl', 'Robinson1955'), +(572, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.108, 0.57, 0.01108, 0.0057, 'Mg2Cl', 'Robinson1955'), +(573, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.184, 0.631, 0.01184, 0.00631, 'Mg2Cl', 'Robinson1955'), +(574, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.264, 0.709, 0.01264, 0.00709, 'Mg2Cl', 'Robinson1955'), +(575, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.347, 0.804, 0.01347, 0.00804, 'Mg2Cl', 'Robinson1955'), +(576, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.434, 0.916, 0.01434, 0.00916, 'Mg2Cl', 'Robinson1955'), +(577, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.03604, 0.07208, 1.523, 1.053, 0.01523, 0.01053, 'Mg2Cl', 'Robinson1955'), +(578, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.04505, 0.0901, 1.762, 1.541, 0.01762, 0.01541, 'Mg2Cl', 'Robinson1955'), +(579, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.05406, 0.10812, 2.01, 2.32, 0.0201, 0.0232, 'Mg2Cl', 'Robinson1955'), +(580, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.06307, 0.12614, 2.264, 3.56, 0.02264, 0.0356, 'Mg2Cl', 'Robinson1955'), +(581, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.07208, 0.14416, 2.521, 5.54, 0.02521, 0.0554, 'Mg2Cl', 'Robinson1955'), +(582, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.08109, 0.16218, 2.783, 8.74, 0.02783, 0.0874, 'Mg2Cl', 'Robinson1955'), +(583, 'water', 'Mg++', 1, 'Cl-', 2, 298.15, 1.01325, 1.0, 0.0901, 0.1802, 3.048, 13.95, 0.03048, 0.1395, 'Mg2Cl', 'Robinson1955'), +(584, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.876, 0.553, 0.00876, 0.0, 'Sr2I', 'Robinson1955'), +(585, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.899, 0.52, 0.00899, 0.0, 'Sr2I', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(586, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.925, 0.517, 0.00925, 0.0, 'Sr2I', 'Robinson1955'), +(587, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.955, 0.524, 0.00955, 0.0, 'Sr2I', 'Robinson1955'), +(588, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 0.987, 0.536, 0.00987, 0.0, 'Sr2I', 'Robinson1955'), +(589, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 1.021, 0.555, 0.01021, 0.0, 'Sr2I', 'Robinson1955'), +(590, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 1.056, 0.578, 0.01056, 0.0, 'Sr2I', 'Robinson1955'), +(591, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 1.095, 0.608, 0.01095, 0.0, 'Sr2I', 'Robinson1955'), +(592, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 1.136, 0.624, 0.01136, 0.0, 'Sr2I', 'Robinson1955'), +(593, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.177, 0.68, 0.01177, 0.0, 'Sr2I', 'Robinson1955'), +(594, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.264, 0.773, 0.01264, 0.0, 'Sr2I', 'Robinson1955'), +(595, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.352, 0.885, 0.01352, 0.0, 'Sr2I', 'Robinson1955'), +(596, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.443, 1.021, 0.01443, 0.0, 'Sr2I', 'Robinson1955'), +(597, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.54, 1.191, 0.0154, 0.0, 'Sr2I', 'Robinson1955'), +(598, 'water', 'Sr++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.03604, 0.07208, 1.641, 1.407, 0.01641, 0.0, 'Sr2I', 'Robinson1955'), +(599, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.892, 0.58, 0.00892, 0.0058, 'Mg2I', 'Robinson1955'), +(600, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.921, 0.558, 0.00921, 0.00558, 'Mg2I', 'Robinson1955'), +(601, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.957, 0.567, 0.00957, 0.00567, 'Mg2I', 'Robinson1955'), +(602, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.998, 0.584, 0.00998, 0.00584, 'Mg2I', 'Robinson1955'), +(603, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 1.044, 0.614, 0.01044, 0.00614, 'Mg2I', 'Robinson1955'), +(604, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 1.09, 0.653, 0.0109, 0.00653, 'Mg2I', 'Robinson1955'), +(605, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 1.139, 0.698, 0.01139, 0.00698, 'Mg2I', 'Robinson1955'), +(606, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 1.192, 0.753, 0.01192, 0.00753, 'Mg2I', 'Robinson1955'), +(607, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 1.249, 0.817, 0.01249, 0.00817, 'Mg2I', 'Robinson1955'), +(608, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.306, 0.892, 0.01306, 0.00892, 'Mg2I', 'Robinson1955'), +(609, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.421, 1.069, 0.01421, 0.01069, 'Mg2I', 'Robinson1955'), +(610, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.537, 1.291, 0.01537, 0.01291, 'Mg2I', 'Robinson1955'), +(611, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.66, 1.58, 0.0166, 0.0158, 'Mg2I', 'Robinson1955'), +(612, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.784, 1.957, 0.01784, 0.01957, 'Mg2I', 'Robinson1955'), +(613, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.03604, 0.07208, 1.912, 2.43, 0.01912, 0.0243, 'Mg2I', 'Robinson1955'), +(614, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.04505, 0.0901, 2.25, 4.33, 0.0225, 0.0433, 'Mg2I', 'Robinson1955'), +(615, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.05406, 0.10812, 2.6, 7.93, 0.026, 0.0793, 'Mg2I', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(616, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.06307, 0.12614, 2.96, 15.0, 0.0296, 0.15, 'Mg2I', 'Robinson1955'), +(617, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.07208, 0.14416, 3.34, 29.0, 0.0334, 0.29, 'Mg2I', 'Robinson1955'), +(618, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.08109, 0.16218, 3.72, 57.6, 0.0372, 0.576, 'Mg2I', 'Robinson1955'), +(619, 'water', 'Mg++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.0901, 0.1802, 4.11, 115.0, 0.0411, 1.15, 'Mg2I', 'Robinson1955'), +(620, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.927, 0.0, 0.00927, 0.0, 'NH4Cl', 'Robinson1955'), +(621, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.913, 0.0, 0.00913, 0.0, 'NH4Cl', 'Robinson1955'), +(622, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.906, 0.0, 0.00906, 0.0, 'NH4Cl', 'Robinson1955'), +(623, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.901, 0.0, 0.00901, 0.0, 'NH4Cl', 'Robinson1955'), +(624, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.899, 0.0, 0.00899, 0.0, 'NH4Cl', 'Robinson1955'), +(625, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.897, 0.0, 0.00897, 0.0, 'NH4Cl', 'Robinson1955'), +(626, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.896, 0.0, 0.00896, 0.0, 'NH4Cl', 'Robinson1955'), +(627, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.896, 0.0, 0.00896, 0.0, 'NH4Cl', 'Robinson1955'), +(628, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.896, 0.0, 0.00896, 0.0, 'NH4Cl', 'Robinson1955'), +(629, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.897, 0.0, 0.00897, 0.0, 'NH4Cl', 'Robinson1955'), +(630, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.898, 0.0, 0.00898, 0.0, 'NH4Cl', 'Robinson1955'), +(631, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.9, 0.0, 0.009, 0.0, 'NH4Cl', 'Robinson1955'), +(632, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.903, 0.0, 0.00903, 0.0, 'NH4Cl', 'Robinson1955'), +(633, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.906, 0.0, 0.00906, 0.0, 'NH4Cl', 'Robinson1955'), +(634, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.909, 0.0, 0.00909, 0.0, 'NH4Cl', 'Robinson1955'), +(635, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 0.918, 0.0, 0.00918, 0.0, 'NH4Cl', 'Robinson1955'), +(636, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 0.926, 0.0, 0.00926, 0.0, 'NH4Cl', 'Robinson1955'), +(637, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 0.936, 0.0, 0.00936, 0.0, 'NH4Cl', 'Robinson1955'), +(638, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 0.945, 0.0, 0.00945, 0.0, 'NH4Cl', 'Robinson1955'), +(639, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 0.953, 0.0, 0.00953, 0.0, 'NH4Cl', 'Robinson1955'), +(640, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 0.958, 0.0, 0.00958, 0.0, 'NH4Cl', 'Robinson1955'), +(641, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.09911, 0.09911, 0.963, 0.0, 0.00963, 0.0, 'NH4Cl', 'Robinson1955'), +(642, 'water', 'NH4+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.10812, 0.10812, 0.969, 0.0, 0.00969, 0.0, 'NH4Cl', 'Robinson1955'), +(644, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.952, 0.79, 0.00939, 0.0079, 'LiI', 'Robinson1955'), +(645, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.966, 0.757, 0.00939, 0.00757, 'LiI', 'Robinson1955'), +(646, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.98, 0.744, 0.00945, 0.00744, 'LiI', 'Robinson1955'), +(647, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.995, 0.74, 0.00954, 0.0074, 'LiI', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(648, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 1.008, 0.739, 0.00963, 0.00739, 'LiI', 'Robinson1955'), +(649, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 1.022, 0.743, 0.00973, 0.00743, 'LiI', 'Robinson1955'), +(650, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 1.034, 0.748, 0.00984, 0.00748, 'LiI', 'Robinson1955'), +(651, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 1.049, 0.755, 0.00995, 0.00755, 'LiI', 'Robinson1955'), +(652, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 1.063, 0.764, 0.01006, 0.00764, 'LiI', 'Robinson1955'), +(653, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 1.08, 0.774, 0.01018, 0.00774, 'LiI', 'Robinson1955'), +(654, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 1.111, 0.769, 0.01041, 0.00769, 'LiI', 'Robinson1955'), +(655, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 1.143, 0.823, 0.01066, 0.00823, 'LiI', 'Robinson1955'), +(656, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 1.176, 0.853, 0.01091, 0.00853, 'LiI', 'Robinson1955'), +(657, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 1.212, 0.885, 0.01116, 0.00885, 'LiI', 'Robinson1955'), +(658, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 1.25, 0.921, 0.01142, 0.00921, 'LiI', 'Robinson1955'), +(659, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 1.351, 1.026, 0.01212, 0.01026, 'LiI', 'Robinson1955'), +(660, 'water', 'Li+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 1.467, 1.156, 0.01286, 0.01156, 'LiI', 'Robinson1955'), +(663, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.938, 0.79, 0.00939, 0.0079, 'NaI', 'Robinson1955'), +(664, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.936, 0.757, 0.00939, 0.00757, 'NaI', 'Robinson1955'), +(665, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.939, 0.744, 0.00945, 0.00744, 'NaI', 'Robinson1955'), +(666, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.945, 0.74, 0.00954, 0.0074, 'NaI', 'Robinson1955'), +(667, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.952, 0.739, 0.00963, 0.00739, 'NaI', 'Robinson1955'), +(668, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.959, 0.743, 0.00973, 0.00743, 'NaI', 'Robinson1955'), +(669, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.967, 0.748, 0.00984, 0.00748, 'NaI', 'Robinson1955'), +(670, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.975, 0.755, 0.00995, 0.00755, 'NaI', 'Robinson1955'), +(671, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.983, 0.764, 0.01006, 0.00764, 'NaI', 'Robinson1955'), +(672, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.991, 0.774, 0.01018, 0.00774, 'NaI', 'Robinson1955'), +(673, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 1.007, 0.769, 0.01041, 0.00769, 'NaI', 'Robinson1955'), +(674, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 1.025, 0.823, 0.01066, 0.00823, 'NaI', 'Robinson1955'), +(675, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 1.043, 0.853, 0.01091, 0.00853, 'NaI', 'Robinson1955'), +(676, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 1.061, 0.885, 0.01116, 0.00885, 'NaI', 'Robinson1955'), +(677, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 1.079, 0.921, 0.01142, 0.00921, 'NaI', 'Robinson1955'), +(678, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 1.129, 1.026, 0.01212, 0.01026, 'NaI', 'Robinson1955'), +(679, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 1.188, 1.156, 0.01286, 0.01156, 'NaI', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(680, 'water', 'Na+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 1.243, 1.156, 0.01286, 0.01156, 'NaI', 'Robinson1955'), +(681, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.928, 0.778, 0.00932, 0.00778, 'KBr', 'Robinson1955'), +(682, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.916, 0.735, 0.00925, 0.00735, 'KBr', 'Robinson1955'), +(683, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.91, 0.71, 0.00922, 0.0071, 'KBr', 'Robinson1955'), +(684, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.906, 0.693, 0.0092, 0.00693, 'KBr', 'Robinson1955'), +(685, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.904, 0.681, 0.00921, 0.00681, 'KBr', 'Robinson1955'), +(686, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.904, 0.673, 0.00923, 0.00673, 'KBr', 'Robinson1955'), +(687, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.904, 0.667, 0.00926, 0.00667, 'KBr', 'Robinson1955'), +(688, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.905, 0.662, 0.00929, 0.00662, 'KBr', 'Robinson1955'), +(689, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.906, 0.659, 0.00932, 0.00659, 'KBr', 'Robinson1955'), +(690, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.907, 0.657, 0.00936, 0.00657, 'KBr', 'Robinson1955'), +(691, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.91, 0.654, 0.00943, 0.00654, 'KBr', 'Robinson1955'), +(692, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.914, 0.655, 0.00951, 0.00655, 'KBr', 'Robinson1955'), +(693, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.917, 0.657, 0.00962, 0.00657, 'KBr', 'Robinson1955'), +(694, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.922, 0.662, 0.00972, 0.00662, 'KBr', 'Robinson1955'), +(695, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.927, 0.668, 0.00983, 0.00668, 'KBr', 'Robinson1955'), +(696, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 0.941, 0.688, 0.01013, 0.00688, 'KBr', 'Robinson1955'), +(697, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 0.955, 0.714, 0.01045, 0.00714, 'KBr', 'Robinson1955'), +(698, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 0.969, 0.746, 0.0108, 0.00746, 'KBr', 'Robinson1955'), +(699, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 0.984, 0.783, 0.01116, 0.00783, 'KBr', 'Robinson1955'), +(700, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 1.0, 0.826, 0.01153, 0.00826, 'KBr', 'Robinson1955'), +(701, 'water', 'K+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 1.015, 0.874, 0.01192, 0.00874, 'KBr', 'Robinson1955'), +(705, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.932, 0.778, 0.00932, 0.00778, 'KI', 'Robinson1955'), +(706, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.922, 0.735, 0.00925, 0.00735, 'KI', 'Robinson1955'), +(707, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.918, 0.71, 0.00922, 0.0071, 'KI', 'Robinson1955'), +(708, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.917, 0.693, 0.0092, 0.00693, 'KI', 'Robinson1955'), +(709, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.917, 0.681, 0.00921, 0.00681, 'KI', 'Robinson1955'), +(710, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.918, 0.673, 0.00923, 0.00673, 'KI', 'Robinson1955'), +(711, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.919, 0.667, 0.00926, 0.00667, 'KI', 'Robinson1955'), +(712, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.922, 0.662, 0.00929, 0.00662, 'KI', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(713, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.924, 0.659, 0.00932, 0.00659, 'KI', 'Robinson1955'), +(714, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.926, 0.657, 0.00936, 0.00657, 'KI', 'Robinson1955'), +(715, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.931, 0.654, 0.00943, 0.00654, 'KI', 'Robinson1955'), +(716, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.937, 0.655, 0.00951, 0.00655, 'KI', 'Robinson1955'), +(717, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.943, 0.657, 0.00962, 0.00657, 'KI', 'Robinson1955'), +(718, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.95, 0.662, 0.00972, 0.00662, 'KI', 'Robinson1955'), +(719, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.957, 0.668, 0.00983, 0.00668, 'KI', 'Robinson1955'), +(720, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 0.974, 0.688, 0.01013, 0.00688, 'KI', 'Robinson1955'), +(721, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 0.99, 0.714, 0.01045, 0.00714, 'KI', 'Robinson1955'), +(722, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 1.006, 0.746, 0.0108, 0.00746, 'KI', 'Robinson1955'), +(723, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 1.021, 0.783, 0.01116, 0.00783, 'KI', 'Robinson1955'), +(724, 'water', 'K+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 1.032, 0.826, 0.01153, 0.00826, 'KI', 'Robinson1955'), +(726, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.923, 0.778, 0.00932, 0.00778, 'RbCl', 'Robinson1955'), +(727, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.907, 0.735, 0.00925, 0.00735, 'RbCl', 'Robinson1955'), +(728, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.898, 0.71, 0.00922, 0.0071, 'RbCl', 'Robinson1955'), +(729, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.893, 0.693, 0.0092, 0.00693, 'RbCl', 'Robinson1955'), +(730, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.889, 0.681, 0.00921, 0.00681, 'RbCl', 'Robinson1955'), +(731, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.887, 0.673, 0.00923, 0.00673, 'RbCl', 'Robinson1955'), +(732, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.886, 0.667, 0.00926, 0.00667, 'RbCl', 'Robinson1955'), +(733, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.886, 0.662, 0.00929, 0.00662, 'RbCl', 'Robinson1955'), +(734, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.885, 0.659, 0.00932, 0.00659, 'RbCl', 'Robinson1955'), +(735, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.885, 0.657, 0.00936, 0.00657, 'RbCl', 'Robinson1955'), +(736, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.886, 0.654, 0.00943, 0.00654, 'RbCl', 'Robinson1955'), +(737, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.888, 0.655, 0.00951, 0.00655, 'RbCl', 'Robinson1955'), +(738, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.89, 0.657, 0.00962, 0.00657, 'RbCl', 'Robinson1955'), +(739, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.893, 0.662, 0.00972, 0.00662, 'RbCl', 'Robinson1955'), +(740, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.896, 0.668, 0.00983, 0.00668, 'RbCl', 'Robinson1955'), +(741, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 0.905, 0.688, 0.01013, 0.00688, 'RbCl', 'Robinson1955'), +(742, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 0.916, 0.714, 0.01045, 0.00714, 'RbCl', 'Robinson1955'), +(743, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 0.928, 0.746, 0.0108, 0.00746, 'RbCl', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(744, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 0.941, 0.783, 0.01116, 0.00783, 'RbCl', 'Robinson1955'), +(745, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 0.952, 0.826, 0.01153, 0.00826, 'RbCl', 'Robinson1955'), +(746, 'water', 'Rb+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 0.966, 0.874, 0.01192, 0.00874, 'RbCl', 'Robinson1955'), +(750, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.922, 0.778, 0.00932, 0.00778, 'RbBr', 'Robinson1955'), +(751, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.905, 0.735, 0.00925, 0.00735, 'RbBr', 'Robinson1955'), +(752, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.897, 0.71, 0.00922, 0.0071, 'RbBr', 'Robinson1955'), +(753, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.892, 0.693, 0.0092, 0.00693, 'RbBr', 'Robinson1955'), +(754, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.888, 0.681, 0.00921, 0.00681, 'RbBr', 'Robinson1955'), +(755, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.886, 0.673, 0.00923, 0.00673, 'RbBr', 'Robinson1955'), +(756, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.884, 0.667, 0.00926, 0.00667, 'RbBr', 'Robinson1955'), +(757, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.882, 0.662, 0.00929, 0.00662, 'RbBr', 'Robinson1955'), +(758, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.881, 0.659, 0.00932, 0.00659, 'RbBr', 'Robinson1955'), +(759, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.881, 0.657, 0.00936, 0.00657, 'RbBr', 'Robinson1955'), +(760, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.88, 0.654, 0.00943, 0.00654, 'RbBr', 'Robinson1955'), +(761, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.881, 0.655, 0.00951, 0.00655, 'RbBr', 'Robinson1955'), +(762, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.882, 0.657, 0.00962, 0.00657, 'RbBr', 'Robinson1955'), +(763, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.884, 0.662, 0.00972, 0.00662, 'RbBr', 'Robinson1955'), +(764, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.887, 0.668, 0.00983, 0.00668, 'RbBr', 'Robinson1955'), +(765, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 0.893, 0.688, 0.01013, 0.00688, 'RbBr', 'Robinson1955'), +(766, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 0.899, 0.714, 0.01045, 0.00714, 'RbBr', 'Robinson1955'), +(767, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 0.907, 0.746, 0.0108, 0.00746, 'RbBr', 'Robinson1955'), +(768, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 0.916, 0.783, 0.01116, 0.00783, 'RbBr', 'Robinson1955'), +(769, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 0.924, 0.826, 0.01153, 0.00826, 'RbBr', 'Robinson1955'), +(770, 'water', 'Rb+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 0.934, 0.874, 0.01192, 0.00874, 'RbBr', 'Robinson1955'), +(775, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.921, 0.778, 0.00932, 0.00778, 'RbI', 'Robinson1955'), +(776, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.904, 0.735, 0.00925, 0.00735, 'RbI', 'Robinson1955'), +(777, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.896, 0.71, 0.00922, 0.0071, 'RbI', 'Robinson1955'), +(778, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.89, 0.693, 0.0092, 0.00693, 'RbI', 'Robinson1955'), +(779, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.886, 0.681, 0.00921, 0.00681, 'RbI', 'Robinson1955'), +(780, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.884, 0.673, 0.00923, 0.00673, 'RbI', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(781, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.881, 0.667, 0.00926, 0.00667, 'RbI', 'Robinson1955'), +(782, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.88, 0.662, 0.00929, 0.00662, 'RbI', 'Robinson1955'), +(783, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.879, 0.659, 0.00932, 0.00659, 'RbI', 'Robinson1955'), +(784, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.878, 0.657, 0.00936, 0.00657, 'RbI', 'Robinson1955'), +(785, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.878, 0.654, 0.00943, 0.00654, 'RbI', 'Robinson1955'), +(786, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.878, 0.655, 0.00951, 0.00655, 'RbI', 'Robinson1955'), +(787, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.88, 0.657, 0.00962, 0.00657, 'RbI', 'Robinson1955'), +(788, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.882, 0.662, 0.00972, 0.00662, 'RbI', 'Robinson1955'), +(789, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.886, 0.668, 0.00983, 0.00668, 'RbI', 'Robinson1955'), +(790, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 0.893, 0.688, 0.01013, 0.00688, 'RbI', 'Robinson1955'), +(791, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 0.901, 0.714, 0.01045, 0.00714, 'RbI', 'Robinson1955'), +(792, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 0.911, 0.746, 0.0108, 0.00746, 'RbI', 'Robinson1955'), +(793, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 0.921, 0.783, 0.01116, 0.00783, 'RbI', 'Robinson1955'), +(794, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 0.931, 0.826, 0.01153, 0.00826, 'RbI', 'Robinson1955'), +(795, 'water', 'Rb+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 0.94, 0.874, 0.01192, 0.00874, 'RbI', 'Robinson1955'), +(799, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.917, 0.778, 0.00932, 0.00778, 'CsCl', 'Robinson1955'), +(800, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.897, 0.735, 0.00925, 0.00735, 'CsCl', 'Robinson1955'), +(801, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.885, 0.71, 0.00922, 0.0071, 'CsCl', 'Robinson1955'), +(802, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.875, 0.693, 0.0092, 0.00693, 'CsCl', 'Robinson1955'), +(803, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.869, 0.681, 0.00921, 0.00681, 'CsCl', 'Robinson1955'), +(804, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.864, 0.673, 0.00923, 0.00673, 'CsCl', 'Robinson1955'), +(805, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.861, 0.667, 0.00926, 0.00667, 'CsCl', 'Robinson1955'), +(806, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.859, 0.662, 0.00929, 0.00662, 'CsCl', 'Robinson1955'), +(807, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.858, 0.659, 0.00932, 0.00659, 'CsCl', 'Robinson1955'), +(808, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.857, 0.657, 0.00936, 0.00657, 'CsCl', 'Robinson1955'), +(809, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.856, 0.654, 0.00943, 0.00654, 'CsCl', 'Robinson1955'), +(810, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.856, 0.655, 0.00951, 0.00655, 'CsCl', 'Robinson1955'), +(811, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.857, 0.657, 0.00962, 0.00657, 'CsCl', 'Robinson1955'), +(812, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.859, 0.662, 0.00972, 0.00662, 'CsCl', 'Robinson1955'), +(813, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.864, 0.668, 0.00983, 0.00668, 'CsCl', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(814, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 0.871, 0.688, 0.01013, 0.00688, 'CsCl', 'Robinson1955'), +(815, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 0.88, 0.714, 0.01045, 0.00714, 'CsCl', 'Robinson1955'), +(816, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 0.891, 0.746, 0.0108, 0.00746, 'CsCl', 'Robinson1955'), +(817, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 0.901, 0.783, 0.01116, 0.00783, 'CsCl', 'Robinson1955'), +(818, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 0.913, 0.826, 0.01153, 0.00826, 'CsCl', 'Robinson1955'), +(819, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 0.923, 0.874, 0.01192, 0.00874, 'CsCl', 'Robinson1955'), +(820, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.09911, 0.09911, 0.934, 0.928, 0.01231, 0.00928, 'CsCl', 'Robinson1955'), +(821, 'water', 'Cs+', 1, 'Cl-', 1, 298.15, 1.01325, 1.0, 0.10812, 0.10812, 0.945, 0.986, 0.01271, 0.00986, 'CsCl', 'Robinson1955'), +(822, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.917, 0.778, 0.00932, 0.00778, 'CsBr', 'Robinson1955'), +(823, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.896, 0.735, 0.00925, 0.00735, 'CsBr', 'Robinson1955'), +(824, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.882, 0.71, 0.00922, 0.0071, 'CsBr', 'Robinson1955'), +(825, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.873, 0.693, 0.0092, 0.00693, 'CsBr', 'Robinson1955'), +(826, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.865, 0.681, 0.00921, 0.00681, 'CsBr', 'Robinson1955'), +(827, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.861, 0.673, 0.00923, 0.00673, 'CsBr', 'Robinson1955'), +(828, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.857, 0.667, 0.00926, 0.00667, 'CsBr', 'Robinson1955'), +(829, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.854, 0.662, 0.00929, 0.00662, 'CsBr', 'Robinson1955'), +(830, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.852, 0.659, 0.00932, 0.00659, 'CsBr', 'Robinson1955'), +(831, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.85, 0.657, 0.00936, 0.00657, 'CsBr', 'Robinson1955'), +(832, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.849, 0.654, 0.00943, 0.00654, 'CsBr', 'Robinson1955'), +(833, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.848, 0.655, 0.00951, 0.00655, 'CsBr', 'Robinson1955'), +(834, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.848, 0.657, 0.00962, 0.00657, 'CsBr', 'Robinson1955'), +(835, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.85, 0.662, 0.00972, 0.00662, 'CsBr', 'Robinson1955'), +(836, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.852, 0.668, 0.00983, 0.00668, 'CsBr', 'Robinson1955'), +(837, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 0.859, 0.688, 0.01013, 0.00688, 'CsBr', 'Robinson1955'), +(838, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 0.866, 0.714, 0.01045, 0.00714, 'CsBr', 'Robinson1955'), +(839, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.06307, 0.06307, 0.874, 0.746, 0.0108, 0.00746, 'CsBr', 'Robinson1955'), +(840, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.07208, 0.07208, 0.884, 0.783, 0.01116, 0.00783, 'CsBr', 'Robinson1955'), +(841, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.08109, 0.08109, 0.892, 0.826, 0.01153, 0.00826, 'CsBr', 'Robinson1955'), +(842, 'water', 'Cs+', 1, 'Br-', 1, 298.15, 1.01325, 1.0, 0.0901, 0.0901, 0.901, 0.874, 0.01192, 0.00874, 'CsBr', 'Robinson1955'), +(846, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.001802, 0.001802, 0.916, 0.778, 0.00932, 0.00778, 'CsI', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(847, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.003604, 0.003604, 0.895, 0.735, 0.00925, 0.00735, 'CsI', 'Robinson1955'), +(848, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.005406, 0.005406, 0.88, 0.71, 0.00922, 0.0071, 'CsI', 'Robinson1955'), +(849, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.007208, 0.007208, 0.87, 0.693, 0.0092, 0.00693, 'CsI', 'Robinson1955'), +(850, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.00901, 0.00901, 0.863, 0.681, 0.00921, 0.00681, 'CsI', 'Robinson1955'), +(851, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.010812, 0.010812, 0.858, 0.673, 0.00923, 0.00673, 'CsI', 'Robinson1955'), +(852, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.012614, 0.012614, 0.855, 0.667, 0.00926, 0.00667, 'CsI', 'Robinson1955'), +(853, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.014416, 0.014416, 0.852, 0.662, 0.00929, 0.00662, 'CsI', 'Robinson1955'), +(854, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.016218, 0.016218, 0.849, 0.659, 0.00932, 0.00659, 'CsI', 'Robinson1955'), +(855, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.01802, 0.01802, 0.846, 0.657, 0.00936, 0.00657, 'CsI', 'Robinson1955'), +(856, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.021624, 0.021624, 0.842, 0.654, 0.00943, 0.00654, 'CsI', 'Robinson1955'), +(857, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.025228, 0.025228, 0.839, 0.655, 0.00951, 0.00655, 'CsI', 'Robinson1955'), +(858, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.028832, 0.028832, 0.836, 0.657, 0.00962, 0.00657, 'CsI', 'Robinson1955'), +(859, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.032436, 0.032436, 0.834, 0.662, 0.00972, 0.00662, 'CsI', 'Robinson1955'), +(860, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.03604, 0.03604, 0.832, 0.668, 0.00983, 0.00668, 'CsI', 'Robinson1955'), +(861, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.04505, 0.04505, 0.827, 0.688, 0.01013, 0.00688, 'CsI', 'Robinson1955'), +(862, 'water', 'Cs+', 1, 'I-', 1, 298.15, 1.01325, 1.0, 0.05406, 0.05406, 0.822, 0.714, 0.01045, 0.00714, 'CsI', 'Robinson1955'), +(869, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.874, 0.529, 0.00861, 0.00529, 'Mg2Br', 'Robinson1955'), +(870, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.898, 0.489, 0.00877, 0.00489, 'Mg2Br', 'Robinson1955'), +(871, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.928, 0.477, 0.00895, 0.00477, 'Mg2Br', 'Robinson1955'), +(872, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.963, 0.475, 0.00919, 0.00475, 'Mg2Br', 'Robinson1955'), +(873, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 1.004, 0.481, 0.00974, 0.00481, 'Mg2Br', 'Robinson1955'), +(874, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 1.042, 0.491, 0.00976, 0.00491, 'Mg2Br', 'Robinson1955'), +(875, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 1.082, 0.505, 0.01004, 0.00505, 'Mg2Br', 'Robinson1955'), +(876, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 1.127, 0.522, 0.01036, 0.00522, 'Mg2Br', 'Robinson1955'), +(877, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 1.172, 0.544, 0.01071, 0.00544, 'Mg2Br', 'Robinson1955'), +(878, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.218, 0.57, 0.01108, 0.0057, 'Mg2Br', 'Robinson1955'), +(879, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.314, 0.631, 0.01184, 0.00631, 'Mg2Br', 'Robinson1955'), +(880, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.41, 0.709, 0.01264, 0.00709, 'Mg2Br', 'Robinson1955'), +(881, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.51, 0.804, 0.01347, 0.00804, 'Mg2Br', 'Robinson1955'), +(882, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.61, 0.916, 0.01434, 0.00916, 'Mg2Br', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(883, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.03604, 0.07208, 1.715, 1.053, 0.01523, 0.01053, 'Mg2Br', 'Robinson1955'), +(884, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.04505, 0.0901, 1.999, 1.541, 0.01762, 0.01541, 'Mg2Br', 'Robinson1955'), +(885, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.05406, 0.10812, 2.29, 2.32, 0.0201, 0.0232, 'Mg2Br', 'Robinson1955'), +(886, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.06307, 0.12614, 2.59, 3.56, 0.02264, 0.0356, 'Mg2Br', 'Robinson1955'), +(887, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.07208, 0.14416, 2.89, 5.54, 0.02521, 0.0554, 'Mg2Br', 'Robinson1955'), +(888, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.08109, 0.16218, 3.19, 8.74, 0.02783, 0.0874, 'Mg2Br', 'Robinson1955'), +(889, 'water', 'Mg++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.0901, 0.1802, 3.5, 13.95, 0.03048, 0.1395, 'Mg2Br', 'Robinson1955'), +(914, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.863, 0.518, 0.00852, 0.00518, 'Ca2Br', 'Robinson1955'), +(915, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.878, 0.472, 0.00862, 0.00472, 'Ca2Br', 'Robinson1955'), +(916, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.9, 0.455, 0.00876, 0.00455, 'Ca2Br', 'Robinson1955'), +(917, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.927, 0.448, 0.00894, 0.00448, 'Ca2Br', 'Robinson1955'), +(918, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 0.958, 0.448, 0.00917, 0.00448, 'Ca2Br', 'Robinson1955'), +(919, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 0.99, 0.453, 0.0094, 0.00453, 'Ca2Br', 'Robinson1955'), +(920, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 1.022, 0.46, 0.00963, 0.0046, 'Ca2Br', 'Robinson1955'), +(921, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 1.057, 0.47, 0.00988, 0.0047, 'Ca2Br', 'Robinson1955'), +(922, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 1.093, 0.484, 0.01017, 0.00484, 'Ca2Br', 'Robinson1955'), +(923, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.131, 0.5, 0.01046, 0.005, 'Ca2Br', 'Robinson1955'), +(924, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.207, 0.539, 0.01107, 0.00539, 'Ca2Br', 'Robinson1955'), +(925, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.286, 0.587, 0.01171, 0.00587, 'Ca2Br', 'Robinson1955'), +(926, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.37, 0.644, 0.01237, 0.00644, 'Ca2Br', 'Robinson1955'), +(927, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.455, 0.712, 0.01305, 0.00712, 'Ca2Br', 'Robinson1955'), +(928, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.03604, 0.07208, 1.547, 0.792, 0.01376, 0.00792, 'Ca2Br', 'Robinson1955'), +(929, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.04505, 0.0901, 1.79, 1.063, 0.01568, 0.01063, 'Ca2Br', 'Robinson1955'), +(930, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.05406, 0.10812, 2.048, 1.483, 0.01779, 0.01483, 'Ca2Br', 'Robinson1955'), +(931, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.06307, 0.12614, 2.297, 2.08, 0.01981, 0.0208, 'Ca2Br', 'Robinson1955'), +(932, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.07208, 0.14416, 2.584, 2.93, 0.02182, 0.0293, 'Ca2Br', 'Robinson1955'), +(933, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.08109, 0.16218, 2.908, 4.17, 0.02383, 0.0417, 'Ca2Br', 'Robinson1955'), +(934, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.0901, 0.1802, 3.239, 5.89, 0.02574, 0.0589, 'Ca2Br', 'Robinson1955'), +(935, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.09911, 0.19822, 3.564, 8.18, 0.02743, 0.0818, 'Ca2Br', 'Robinson1955'), +(936, 'water', 'Ca++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.10812, 0.21624, 3.88, 11.11, 0.02891, 0.1111, 'Ca2Br', 'Robinson1955'); +INSERT INTO PUBLIC.IONICDATA(ID, COMPONENTSOLVENT, ION1, STOC1, ION2, STOC2, TEMPERATURE, PRESSURE, X1, X2, X3, OSMOTICCOEFFICIENT, IONICACTIVITY, STDDEV1, STDDEV2, DESCRIPTION, REFERENCE) VALUES +(938, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.851, 0.0, 0.00843, 0.0, 'Ba2Br', 'Robinson1955'), +(939, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.857, 0.0, 0.00837, 0.0, 'Ba2Br', 'Robinson1955'), +(940, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.869, 0.0, 0.00843, 0.0, 'Ba2Br', 'Robinson1955'), +(941, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.884, 0.0, 0.00853, 0.0, 'Ba2Br', 'Robinson1955'), +(942, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 0.906, 0.0, 0.00864, 0.0, 'Ba2Br', 'Robinson1955'), +(943, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 0.926, 0.0, 0.00877, 0.0, 'Ba2Br', 'Robinson1955'), +(944, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 0.945, 0.0, 0.0089, 0.0, 'Ba2Br', 'Robinson1955'), +(945, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 0.965, 0.0, 0.00904, 0.0, 'Ba2Br', 'Robinson1955'), +(946, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 0.989, 0.0, 0.00918, 0.0, 'Ba2Br', 'Robinson1955'), +(947, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.013, 0.0, 0.00934, 0.0, 'Ba2Br', 'Robinson1955'), +(948, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.063, 0.0, 0.00967, 0.0, 'Ba2Br', 'Robinson1955'), +(949, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.112, 0.0, 0.01002, 0.0, 'Ba2Br', 'Robinson1955'), +(950, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.162, 0.0, 0.01034, 0.0, 'Ba2Br', 'Robinson1955'), +(951, 'water', 'Ba++', 1, 'Br-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.212, 0.0, 0.01065, 0.0, 'Ba2Br', 'Robinson1955'), +(953, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.001802, 0.003604, 0.869, 0.0, 0.00843, 0.0, 'Ba2I', 'Robinson1955'), +(954, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.003604, 0.007208, 0.891, 0.0, 0.00837, 0.0, 'Ba2I', 'Robinson1955'), +(955, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.005406, 0.010812, 0.918, 0.0, 0.00843, 0.0, 'Ba2I', 'Robinson1955'), +(956, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.007208, 0.014416, 0.949, 0.0, 0.00853, 0.0, 'Ba2I', 'Robinson1955'), +(957, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.00901, 0.01802, 0.985, 0.0, 0.00864, 0.0, 'Ba2I', 'Robinson1955'), +(958, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.010812, 0.021624, 1.017, 0.0, 0.00877, 0.0, 'Ba2I', 'Robinson1955'), +(959, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.012614, 0.025228, 1.05, 0.0, 0.0089, 0.0, 'Ba2I', 'Robinson1955'), +(960, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.014416, 0.028832, 1.085, 0.0, 0.00904, 0.0, 'Ba2I', 'Robinson1955'), +(961, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.016218, 0.032436, 1.122, 0.0, 0.00918, 0.0, 'Ba2I', 'Robinson1955'), +(962, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.01802, 0.03604, 1.159, 0.0, 0.00934, 0.0, 'Ba2I', 'Robinson1955'), +(963, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.021624, 0.043248, 1.231, 0.0, 0.00967, 0.0, 'Ba2I', 'Robinson1955'), +(964, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.025228, 0.050456, 1.308, 0.0, 0.01002, 0.0, 'Ba2I', 'Robinson1955'), +(965, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.028832, 0.057664, 1.388, 0.0, 0.01034, 0.0, 'Ba2I', 'Robinson1955'), +(966, 'water', 'Ba++', 1, 'I-', 2, 298.15, 1.01325, 1.0, 0.032436, 0.064872, 1.47, 0.0, 0.01065, 0.0, 'Ba2I', 'Robinson1955'); +CREATE CACHED TABLE PUBLIC.ISO6976CONSTANTS( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + MOLARMASS DOUBLE DEFAULT '0', + Z0 DOUBLE DEFAULT '0', + Z15 DOUBLE DEFAULT '0', + Z20 DOUBLE DEFAULT '0', + SRTB0 DOUBLE DEFAULT '0', + SRTB15 DOUBLE DEFAULT '0', + SRTB20 DOUBLE DEFAULT '0', + HSUPMOLAR0 DOUBLE DEFAULT '0', + HSUPMOLAR15 DOUBLE DEFAULT '0', + HSUPMOLAR20 DOUBLE DEFAULT '0', + HSUPMOLAR25 DOUBLE DEFAULT '0', + HSUPMOLAR60F DOUBLE DEFAULT '0', + HINFMOLAR0 DOUBLE DEFAULT '0', + HINFMOLAR15 DOUBLE DEFAULT '0', + HINFMOLAR20 DOUBLE DEFAULT '0', + HINFMOLAR25 DOUBLE DEFAULT '0', + HINFMOLAR60F DOUBLE DEFAULT '0', + NUMBEROFCARBON INT DEFAULT '0' +); +-- 55 +/- SELECT COUNT(*) FROM PUBLIC.ISO6976CONSTANTS; +INSERT INTO PUBLIC.ISO6976CONSTANTS(ID, COMPONENTNAME, MOLARMASS, Z0, Z15, Z20, SRTB0, SRTB15, SRTB20, HSUPMOLAR0, HSUPMOLAR15, HSUPMOLAR20, HSUPMOLAR25, HSUPMOLAR60F, HINFMOLAR0, HINFMOLAR15, HINFMOLAR20, HINFMOLAR25, HINFMOLAR60F, NUMBEROFCARBON) VALUES +(1, 'methane', 16.043, 0.9976, 0.998, 0.9981, 0.049, 0.0447, 0.0436, 892.97, 891.56, 891.09, 890.63, 891.51, 802.82, 802.69, 802.65, 802.6, 802.69, 1), +(2, 'ethane', 30.07, 0.99, 0.9915, 0.992, 0.1, 0.0922, 0.0894, 1564.34, 1562.14, 1561.41, 1560.69, 1562.06, 1429.12, 1428.84, 1428.74, 1428.64, 1428.83, 2), +(3, 'propane', 44.097, 0.9789, 0.9821, 0.9834, 0.1453, 0.1338, 0.1288, 2224.01, 2221.1, 2220.13, 2219.17, 2220.99, 2043.71, 2043.37, 2043.23, 2043.11, 2043.35, 3), +(4, 'n-butane', 58.123, 0.9572, 0.965, 0.9682, 0.2069, 0.1871, 0.1783, 2883.82, 2879.76, 2878.57, 2877.4, 2879.63, 2658.45, 2657.6, 2657.45, 2657.32, 2657.58, 4), +(6, 'i-butane', 58.123, 0.958, 0.968, 0.971, 0.2049, 0.1789, 0.1703, 2874.2, 2870.58, 2869.38, 2868.2, 2870.45, 2648.83, 2648.42, 2648.26, 2648.12, 2648.4, 4), +(7, 'n-pentane', 72.15, 0.918, 0.937, 0.945, 0.2864, 0.251, 0.2345, 3542.89, 3538.6, 3537.17, 3535.77, 3538.44, 3272.45, 3272.0, 3271.83, 3271.67, 3271.98, 5), +(8, 'iC5', 72.15, 0.937, 0.948, 0.953, 0.251, 0.228, 0.2168, 3535.98, 3531.68, 3530.24, 3528.83, 3531.52, 3265.54, 3265.08, 3264.89, 3264.73, 3265.06, 5), +(9, '22-dim-C3', 72.15, 0.943, 0.955, 0.959, 0.2387, 0.2121, 0.2025, 3521.72, 3517.43, 3516.01, 3514.61, 3517.27, 3251.28, 3250.83, 3250.67, 3250.51, 3250.81, 5), +(11, 'n-hexane', 86.177, 0.892, 0.913, 0.919, 0.3286, 0.295, 0.2846, 4203.23, 4198.24, 4196.58, 4194.95, 4198.06, 3887.71, 3887.21, 3887.01, 3886.84, 3887.19, 6), +(12, '2-m-C5', 86.177, 0.898, 0.914, 0.926, 0.3194, 0.2933, 0.272, 4195.61, 4190.62, 4188.95, 4187.32, 4190.43, 3880.09, 3879.59, 3879.38, 3879.21, 3879.57, 6), +(13, '3-m-C5', 86.177, 0.898, 0.917, 0.928, 0.3194, 0.2881, 0.2683, 4198.24, 4193.22, 4191.54, 4189.9, 4193.03, 3882.72, 3882.19, 3881.97, 3881.79, 3882.17, 6), +(14, '22-dim-C4', 86.177, 0.916, 0.931, 0.935, 0.2898, 0.2627, 0.255, 4185.84, 4180.83, 4179.15, 4177.52, 4180.64, 3870.32, 3869.8, 3869.59, 3869.41, 3869.78, 6), +(15, '23-dim-C4', 86.177, 0.91, 0.925, 0.934, 0.3, 0.2739, 0.2569, 4193.63, 4188.6, 4186.93, 4185.28, 4188.41, 3878.11, 3877.57, 3877.36, 3877.17, 3877.55, 6), +(16, 'n-heptane', 100.204, 0.83, 0.866, 0.876, 0.4123, 0.3661, 0.3521, 4862.87, 4857.18, 4855.29, 4853.43, 4856.97, 4502.28, 4501.72, 4501.49, 4501.3, 4501.69, 7), +(17, 'n-octane', 114.231, 0.742, 0.802, 0.817, 0.5079, 0.445, 0.4278, 5522.4, 5516.01, 5513.88, 5511.8, 5515.77, 5116.73, 5116.11, 5115.87, 5115.66, 5116.08, 8), +(18, 'n-nonane', 128.258, 0.613, 0.71, 0.735, 0.6221, 0.5385, 0.5148, 6182.91, 6175.82, 6173.46, 6171.15, 6175.56, 5732.17, 5731.49, 5731.22, 5730.99, 5731.46, 9), +(19, 'nC10', 142.285, 0.434, 0.584, 0.623, 0.7523, 0.645, 0.614, 6842.69, 6834.9, 6832.31, 6829.77, 6834.61, 6346.88, 6346.14, 6345.85, 6345.59, 6346.11, 10), +(20, 'Ethylene', 28.054, 0.9925, 0.9936, 0.994, 0.0866, 0.08, 0.0775, 1413.51, 1412.11, 1411.65, 1411.18, 1412.06, 1323.36, 1323.24, 1323.2, 1323.15, 1323.24, 3), +(21, 'Propylene', 42.081, 0.981, 0.984, 0.985, 0.1378, 0.1265, 0.1225, 2061.57, 2059.43, 2058.72, 2058.02, 2059.35, 1926.35, 1926.13, 1926.05, 1925.97, 1926.12, 3), +(22, '1-Butene', 56.108, 0.965, 0.97, 0.972, 0.1871, 0.1732, 0.1673, 2721.55, 2718.7, 2717.75, 2716.82, 2718.59, 2541.25, 2540.97, 2540.86, 2540.76, 2540.96, 3), +(23, 'cis-2-Butene', 56.108, 0.961, 0.967, 0.969, 0.1975, 0.1817, 0.1761, 2714.9, 2711.9, 2711.0, 2710.0, 2711.8, 2534.6, 2534.2, 2534.1, 2533.9, 2534.2, 3), +(24, 'trans-2-Butene', 56.108, 0.961, 0.968, 0.969, 0.1975, 0.1789, 0.1761, 2711.1, 2708.3, 2707.4, 2706.4, 2708.3, 2530.8, 2530.5, 2530.5, 2530.3, 2530.5, 3), +(25, '2-Methylpropene', 56.108, 0.965, 0.971, 0.972, 0.1871, 0.1703, 0.1673, 2704.8, 2702.0, 2701.1, 2700.2, 2702.0, 2524.5, 2524.3, 2524.2, 2524.1, 2524.3, 3), +(26, '1-Pentene', 70.134, 0.938, 0.949, 0.952, 0.249, 0.2258, 0.2191, 3381.29, 3377.75, 3376.57, 3375.42, 3377.75, 3155.92, 3155.59, 3155.45, 3155.34, 3155.59, 3); +INSERT INTO PUBLIC.ISO6976CONSTANTS(ID, COMPONENTNAME, MOLARMASS, Z0, Z15, Z20, SRTB0, SRTB15, SRTB20, HSUPMOLAR0, HSUPMOLAR15, HSUPMOLAR20, HSUPMOLAR25, HSUPMOLAR60F, HINFMOLAR0, HINFMOLAR15, HINFMOLAR20, HINFMOLAR25, HINFMOLAR60F, NUMBEROFCARBON) VALUES +(27, 'Propadiene', 40.065, 0.98, 0.983, 0.984, 0.1414, 0.1304, 0.1265, 1945.25, 1943.96, 1943.53, 1943.11, 1943.96, 1855.1, 1855.09, 1855.08, 1855.08, 1855.09, 3), +(28, '1,2-Butadiene', 54.092, 0.955, 0.963, 0.965, 0.2121, 0.1924, 0.1871, 2597.13, 2595.12, 2594.45, 2593.79, 2595.12, 2461.91, 2461.82, 2461.78, 2461.74, 2461.82, 3), +(29, '1,3-Butadiene', 54.092, 0.966, 0.971, 0.973, 0.1844, 0.1703, 0.1643, 2544.13, 2542.1, 2541.43, 2540.77, 2542.1, 2408.91, 2408.8, 2408.76, 2408.72, 2408.8, 3), +(30, 'acetylene', 26.038, 0.991, 0.993, 0.993, 0.0949, 0.0837, 0.0837, 1301.86, 1301.37, 1301.21, 1301.05, 1301.37, 1256.79, 1256.94, 1256.98, 1257.03, 1256.94, 3), +(31, 'c-C5', 70.134, 0.935, 0.947, 0.95, 0.255, 0.2302, 0.2236, 3326.14, 3322.19, 3320.88, 3319.59, 3322.19, 3100.77, 3100.03, 3099.76, 3099.51, 3100.03, 5), +(32, 'M-cy-C5', 84.161, 0.902, 0.921, 0.927, 0.313, 0.2811, 0.2702, 3977.04, 3972.46, 3970.93, 3969.44, 3972.46, 3706.6, 3705.86, 3705.59, 3705.34, 3705.86, 6), +(33, 'E-cy-C5', 98.188, 0.841, 0.876, 0.885, 0.3987, 0.3521, 0.3391, 4637.27, 4631.95, 4630.19, 4628.47, 4631.95, 4321.75, 4320.92, 4320.63, 4320.36, 4320.92, 6), +(34, 'c-hexane', 84.161, 0.897, 0.918, 0.924, 0.3209, 0.2864, 0.2757, 3960.67, 3956.02, 3954.47, 3952.96, 3956.02, 3690.23, 3689.42, 3689.13, 3688.86, 3689.42, 6), +(35, 'Methylcyclohexane', 98.188, 0.855, 0.886, 0.894, 0.3808, 0.3376, 0.3256, 4609.34, 4604.09, 4602.35, 4600.64, 4604.09, 4293.82, 4293.06, 4292.78, 4292.53, 4293.06, 7), +(36, 'ethylcyclohexane', 112.215, 0.77, 0.824, 0.838, 0.4796, 0.4195, 0.4025, 5272.88, 5266.95, 5264.98, 5263.05, 5266.95, 4912.29, 4911.49, 4911.19, 4910.92, 4911.49, 7), +(37, 'benzene', 78.114, 0.909, 0.926, 0.936, 0.3017, 0.272, 0.253, 3305.03, 3302.86, 3302.15, 3301.43, 3302.86, 3169.81, 3169.56, 3169.48, 3169.38, 3169.56, 6), +(38, 'toluene', 92.141, 0.849, 0.883, 0.892, 0.3886, 0.3421, 0.3286, 3952.72, 3949.81, 3948.84, 3947.89, 3949.81, 3772.42, 3772.08, 3771.95, 3771.83, 3772.08, 7), +(39, 'ethylbenzene', 106.167, 0.764, 0.823, 0.837, 0.4858, 0.4207, 0.4037, 4613.14, 4609.53, 4608.32, 4607.15, 4609.53, 4387.77, 4387.37, 4387.2, 4387.07, 4387.37, 8), +(40, 'o-Xylene', 106.167, 0.737, 0.804, 0.821, 0.5128, 0.4427, 0.4231, 4602.17, 4598.64, 4597.46, 4596.31, 4598.64, 4376.8, 4376.48, 4376.34, 4376.23, 4376.48, 8), +(41, 'methanol', 32.042, 0.773, 0.872, 0.892, 0.4764, 0.3578, 0.3286, 766.59, 765.09, 764.59, 764.09, 765.09, 676.44, 676.22, 676.14, 676.06, 676.22, 3), +(42, 'Methanethiol', 48.109, 0.972, 0.977, 0.978, 0.1673, 0.1517, 0.1483, 1241.63, 1240.28, 1239.83, 1239.39, 1240.28, 1151.48, 1151.41, 1151.39, 1151.36, 1151.41, 3), +(43, 'hydrogen', 2.0159, 1.0006, 1.0006, 1.0006, 0.0, 0.0, 0.0, 286.63, 286.15, 285.99, 285.83, 286.15, 241.56, 241.72, 241.76, 241.81, 241.72, 0), +(44, 'water', 18.0153, 0.93, 0.945, 0.952, 0.2646, 0.2345, 0.2191, 45.074, 44.433, 44.224, 44.016, 44.433, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(45, 'H2S', 34.082, 0.99, 0.99, 0.99, 0.1, 0.1, 0.1, 562.94, 562.38, 562.19, 562.01, 562.38, 517.87, 517.95, 517.97, 517.99, 517.95, 0), +(46, 'Ammonia', 17.0306, 0.985, 0.988, 0.989, 0.1225, 0.1095, 0.1049, 384.57, 383.51, 383.16, 382.81, 383.51, 316.96, 316.86, 316.82, 316.79, 316.86, 0), +(47, 'hydrogencyanide', 27.026, 0.887, 0.912, 0.92, 0.3362, 0.2966, 0.2828, 671.9, 671.7, 671.6, 671.5, 671.7, 649.4, 649.5, 649.5, 649.5, 649.5, 0), +(48, 'carbonmonoxide', 28.01, 0.9993, 0.9995, 0.9996, 0.0265, 0.0224, 0.02, 282.8, 282.91, 282.95, 282.98, 282.91, 282.8, 282.91, 282.95, 282.98, 282.91, 0), +(49, 'carbonylsulfide', 60.076, 0.985, 0.987, 0.988, 0.1225, 0.114, 0.1095, 548.01, 548.15, 548.19, 548.23, 548.15, 548.01, 548.15, 548.19, 548.23, 548.15, 0), +(50, 'carbondisulfide', 76.143, 0.954, 0.962, 0.965, 0.2145, 0.1949, 0.1871, 1104.06, 1104.32, 1104.41, 1104.49, 1104.32, 1104.06, 1104.32, 1104.41, 1104.49, 1104.32, 0); +INSERT INTO PUBLIC.ISO6976CONSTANTS(ID, COMPONENTNAME, MOLARMASS, Z0, Z15, Z20, SRTB0, SRTB15, SRTB20, HSUPMOLAR0, HSUPMOLAR15, HSUPMOLAR20, HSUPMOLAR25, HSUPMOLAR60F, HINFMOLAR0, HINFMOLAR15, HINFMOLAR20, HINFMOLAR25, HINFMOLAR60F, NUMBEROFCARBON) VALUES +(51, 'helium', 4.0026, 1.0005, 1.0005, 1.0005, 6.0E-4, 2.0E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(52, 'Neon', 20.1797, 1.0005, 1.0005, 1.0005, 6.0E-4, 2.0E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(53, 'argon', 39.948, 0.999, 0.9992, 0.9993, 0.0316, 0.0283, 0.0265, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(54, 'nitrogen', 28.0135, 0.9995, 0.9997, 0.9997, 0.0224, 0.0173, 0.0173, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(55, 'oxygen', 31.9988, 0.999, 0.9992, 0.9993, 0.0316, 0.0283, 0.0265, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(56, 'CO2', 44.01, 0.9933, 0.9944, 0.9947, 0.0819, 0.0748, 0.0728, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(57, 'SulfurDioxide', 64.065, 0.976, 0.979, 0.98, 0.1549, 0.1449, 0.1414, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0); +CREATE CACHED TABLE PUBLIC.ISO6976CONSTANTS2016( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + MOLARMASS DOUBLE DEFAULT '0', + Z0 DOUBLE DEFAULT '0', + Z15 DOUBLE DEFAULT '0', + Z60F DOUBLE DEFAULT '0', + Z20 DOUBLE DEFAULT '0', + SRTB0 DOUBLE DEFAULT '0', + SRTB15 DOUBLE DEFAULT '0', + SRTB60F DOUBLE DEFAULT '0', + SRTB20 DOUBLE DEFAULT '0', + HSUPMOLAR0 DOUBLE DEFAULT '0', + HSUPMOLAR15 DOUBLE DEFAULT '0', + HSUPMOLAR20 DOUBLE DEFAULT '0', + HSUPMOLAR25 DOUBLE DEFAULT '0', + HSUPMOLAR60F DOUBLE DEFAULT '0', + HINFMOLAR0 DOUBLE DEFAULT '0', + HINFMOLAR15 DOUBLE DEFAULT '0', + HINFMOLAR20 DOUBLE DEFAULT '0', + HINFMOLAR25 DOUBLE DEFAULT '0', + HINFMOLAR60F DOUBLE DEFAULT '0', + NUMBEROFCARBON INT DEFAULT '0' +); +-- 56 +/- SELECT COUNT(*) FROM PUBLIC.ISO6976CONSTANTS2016; +INSERT INTO PUBLIC.ISO6976CONSTANTS2016(ID, COMPONENTNAME, MOLARMASS, Z0, Z15, Z60F, Z20, SRTB0, SRTB15, SRTB60F, SRTB20, HSUPMOLAR0, HSUPMOLAR15, HSUPMOLAR20, HSUPMOLAR25, HSUPMOLAR60F, HINFMOLAR0, HINFMOLAR15, HINFMOLAR20, HINFMOLAR25, HINFMOLAR60F, NUMBEROFCARBON) VALUES +(1, 'methane', 16.04246, 0.99762, 0.99802, 0.99804, 0.99814, 0.04886, 0.04452, 0.04437, 0.04317, 892.92, 891.51, 891.05, 890.58, 891.46, 802.82, 802.69, 802.65, 802.6, 802.69, 1), +(2, 'ethane', 30.06904, 0.9901, 0.99153, 0.99158, 0.99197, 0.0997, 0.0919, 0.0916, 0.0895, 1564.35, 1562.14, 1561.42, 1560.69, 1562.06, 1429.12, 1428.84, 1428.74, 1428.64, 1428.83, 2), +(3, 'propane', 44.09562, 0.9787, 0.9821, 0.98221, 0.98306, 0.1465, 0.1344, 0.134, 0.1308, 2224.03, 2221.1, 2220.13, 2219.17, 2220.99, 2043.71, 2043.37, 2043.23, 2043.11, 2043.35, 3), +(4, 'n-butane', 58.1222, 0.95949, 0.9665, 0.96672, 0.96845, 0.2022, 0.184, 0.1834, 0.1785, 2883.35, 2879.76, 2878.58, 2877.4, 2879.63, 2658.45, 2657.6, 2657.45, 2657.32, 2657.58, 4), +(6, 'i-butane', 58.1222, 0.96428, 0.9703, 0.97049, 0.97199, 0.1885, 0.1722, 0.177, 0.1673, 2874.21, 2870.58, 2869.39, 2868.2, 2870.45, 2648.83, 2648.42, 2648.26, 2648.12, 2648.4, 4), +(7, 'n-pentane', 72.14878, 0.918, 0.937, 0.937, 0.945, 0.2586, 0.2361, 0.2354, 0.2295, 3542.91, 3538.6, 3537.19, 3535.77, 3538.45, 3272.45, 3272.0, 3271.83, 3271.67, 3271.98, 5), +(8, 'i-pentane', 72.14878, 0.937, 0.948, 0.948, 0.953, 0.2458, 0.2251, 0.2244, 0.2189, 3536.01, 3531.68, 3530.25, 3528.83, 3531.52, 3265.54, 3265.08, 3264.89, 3264.73, 3265.06, 5), +(9, '22-dim-C3', 72.14878, 0.943, 0.955, 0.955, 0.959, 0.2245, 0.204, 0.2033, 0.1979, 3521.75, 3517.44, 3516.02, 3514.61, 3517.28, 3251.28, 3250.83, 3250.67, 3250.51, 3250.81, 5), +(11, 'n-hexane', 86.17536, 0.892, 0.913, 0.913, 0.919, 0.3319, 0.3001, 0.299, 0.2907, 4203.24, 4198.24, 4196.6, 4194.95, 4198.06, 3887.71, 3887.21, 3887.01, 3886.84, 3887.19, 6), +(12, '2-m-C5', 86.17536, 0.898, 0.914, 0.914, 0.926, 0.3114, 0.2826, 0.2816, 0.274, 4195.64, 4190.62, 4188.97, 4187.32, 4190.44, 3880.09, 3879.59, 3879.38, 3879.21, 3879.57, 6), +(13, '3-m-C5', 86.17536, 0.898, 0.917, 0.917, 0.928, 0.2997, 0.2762, 0.2754, 0.269, 4198.27, 4193.22, 4191.56, 4189.9, 4193.04, 3882.72, 3882.19, 3881.97, 3881.79, 3882.17, 6), +(14, '22-dim-C4', 86.17536, 0.916, 0.931, 0.931, 0.935, 0.253, 0.235, 0.2344, 0.2295, 4185.86, 4180.83, 4179.17, 4177.52, 4180.65, 3870.32, 3869.8, 3869.59, 3869.41, 3869.78, 6), +(15, '23-dim-C4', 86.17536, 0.91, 0.925, 0.925, 0.934, 0.2836, 0.2632, 0.2625, 0.2569, 4193.68, 4188.61, 4186.94, 4185.28, 4188.43, 3878.11, 3877.57, 3877.36, 3877.17, 3877.55, 6), +(16, 'n-heptane', 100.20194, 0.83, 0.866, 0.866, 0.876, 0.4076, 0.3668, 0.3654, 0.3547, 4862.88, 4857.18, 4855.31, 4853.43, 4856.98, 4502.28, 4501.72, 4501.49, 4501.3, 4501.69, 7), +(17, 'n-octane', 114.22852, 0.742, 0.802, 0.802, 0.817, 0.4845, 0.4346, 0.4329, 0.4198, 5522.41, 5516.01, 5513.9, 5511.8, 5515.78, 5116.73, 5116.11, 5115.87, 5115.66, 5116.08, 8), +(18, 'n-nonane', 128.2551, 0.613, 0.71, 0.71, 0.735, 0.5617, 0.503, 0.501, 0.4856, 6182.92, 6175.82, 6173.48, 6171.15, 6175.56, 5732.17, 5731.49, 5731.22, 5730.99, 5731.46, 9), +(19, 'nC10', 42.28168, 0.434, 0.584, 0.584, 0.623, 0.6713, 0.5991, 0.5967, 0.5778, 6842.69, 6834.9, 6832.33, 6829.77, 6834.62, 6346.88, 6346.14, 6345.85, 6345.59, 6346.11, 10), +(20, 'Ethylene', 28.054, 0.9925, 0.9936, 0.9936, 0.994, 0.0866, 0.08, 0.08, 0.0775, 1413.51, 1412.11, 1411.65, 1411.18, 1412.06, 1323.36, 1323.24, 1323.2, 1323.15, 1323.24, 3), +(21, 'Propylene', 42.081, 0.981, 0.984, 0.984, 0.985, 0.1378, 0.1265, 0.1265, 0.1225, 2061.57, 2059.43, 2058.72, 2058.02, 2059.35, 1926.35, 1926.13, 1926.05, 1925.97, 1926.12, 3), +(22, '1-Butene', 56.108, 0.965, 0.97, 0.97, 0.972, 0.1871, 0.1732, 0.1732, 0.1673, 2721.55, 2718.7, 2717.75, 2716.82, 2718.59, 2541.25, 2540.97, 2540.86, 2540.76, 2540.96, 3), +(23, 'cis-2-Butene', 56.108, 0.961, 0.967, 0.967, 0.969, 0.1975, 0.1817, 0.1817, 0.1761, 2714.9, 2711.9, 2711.0, 2710.0, 2711.8, 2534.6, 2534.2, 2534.1, 2533.9, 2534.2, 3), +(24, 'trans-2-Butene', 56.108, 0.961, 0.968, 0.968, 0.969, 0.1975, 0.1789, 0.1789, 0.1761, 2711.1, 2708.3, 2707.4, 2706.4, 2708.3, 2530.8, 2530.5, 2530.5, 2530.3, 2530.5, 3); +INSERT INTO PUBLIC.ISO6976CONSTANTS2016(ID, COMPONENTNAME, MOLARMASS, Z0, Z15, Z60F, Z20, SRTB0, SRTB15, SRTB60F, SRTB20, HSUPMOLAR0, HSUPMOLAR15, HSUPMOLAR20, HSUPMOLAR25, HSUPMOLAR60F, HINFMOLAR0, HINFMOLAR15, HINFMOLAR20, HINFMOLAR25, HINFMOLAR60F, NUMBEROFCARBON) VALUES +(25, '2-Methylpropene', 56.108, 0.965, 0.971, 0.971, 0.972, 0.1871, 0.1703, 0.1703, 0.1673, 2704.8, 2702.0, 2701.1, 2700.2, 2702.0, 2524.5, 2524.3, 2524.2, 2524.1, 2524.3, 3), +(26, '1-Pentene', 70.134, 0.938, 0.949, 0.949, 0.952, 0.249, 0.2258, 0.2258, 0.2191, 3381.29, 3377.75, 3376.57, 3375.42, 3377.75, 3155.92, 3155.59, 3155.45, 3155.34, 3155.59, 3), +(27, 'Propadiene', 40.065, 0.98, 0.983, 0.983, 0.984, 0.1414, 0.1304, 0.1304, 0.1265, 1945.25, 1943.96, 1943.53, 1943.11, 1943.96, 1855.1, 1855.09, 1855.08, 1855.08, 1855.09, 3), +(28, '1,2-Butadiene', 54.092, 0.955, 0.963, 0.963, 0.965, 0.2121, 0.1924, 0.1924, 0.1871, 2597.13, 2595.12, 2594.45, 2593.79, 2595.12, 2461.91, 2461.82, 2461.78, 2461.74, 2461.82, 3), +(29, '1,3-Butadiene', 54.092, 0.966, 0.971, 0.971, 0.973, 0.1844, 0.1703, 0.1703, 0.1643, 2544.13, 2542.1, 2541.43, 2540.77, 2542.1, 2408.91, 2408.8, 2408.76, 2408.72, 2408.8, 3), +(30, 'acetylene', 26.038, 0.991, 0.993, 0.993, 0.993, 0.0949, 0.0837, 0.0837, 0.0837, 1301.86, 1301.37, 1301.21, 1301.05, 1301.37, 1256.79, 1256.94, 1256.98, 1257.03, 1256.94, 3), +(31, 'c-C5', 70.134, 0.935, 0.947, 0.947, 0.95, 0.255, 0.2302, 0.2302, 0.2236, 3326.14, 3322.19, 3320.88, 3319.59, 3322.19, 3100.77, 3100.03, 3099.76, 3099.51, 3100.03, 5), +(32, 'M-cy-C5', 84.161, 0.902, 0.921, 0.921, 0.927, 0.313, 0.2811, 0.2811, 0.2702, 3977.04, 3972.46, 3970.93, 3969.44, 3972.46, 3706.6, 3705.86, 3705.59, 3705.34, 3705.86, 6), +(33, 'E-cy-C5', 98.188, 0.841, 0.876, 0.876, 0.885, 0.3987, 0.3521, 0.3521, 0.3391, 4637.27, 4631.95, 4630.19, 4628.47, 4631.95, 4321.75, 4320.92, 4320.63, 4320.36, 4320.92, 6), +(34, 'c-hexane', 84.161, 0.897, 0.918, 0.918, 0.924, 0.3209, 0.2864, 0.2864, 0.2757, 3960.67, 3956.02, 3954.47, 3952.96, 3956.02, 3690.23, 3689.42, 3689.13, 3688.86, 3689.42, 6), +(35, 'Methylcyclohexane', 98.188, 0.855, 0.886, 0.886, 0.894, 0.3808, 0.3376, 0.3376, 0.3256, 4609.34, 4604.09, 4602.35, 4600.64, 4604.09, 4293.82, 4293.06, 4292.78, 4292.53, 4293.06, 7), +(36, 'ethylcyclohexane', 112.215, 0.77, 0.824, 0.824, 0.838, 0.4796, 0.4195, 0.4195, 0.4025, 5272.88, 5266.95, 5264.98, 5263.05, 5266.95, 4912.29, 4911.49, 4911.19, 4910.92, 4911.49, 7), +(37, 'benzene', 78.114, 0.909, 0.926, 0.926, 0.936, 0.3017, 0.272, 0.272, 0.253, 3305.03, 3302.86, 3302.15, 3301.43, 3302.86, 3169.81, 3169.56, 3169.48, 3169.38, 3169.56, 6), +(38, 'toluene', 92.141, 0.849, 0.883, 0.883, 0.892, 0.3886, 0.3421, 0.3421, 0.3286, 3952.72, 3949.81, 3948.84, 3947.89, 3949.81, 3772.42, 3772.08, 3771.95, 3771.83, 3772.08, 7), +(39, 'ethylbenzene', 106.167, 0.764, 0.823, 0.823, 0.837, 0.4858, 0.4207, 0.4207, 0.4037, 4613.14, 4609.53, 4608.32, 4607.15, 4609.53, 4387.77, 4387.37, 4387.2, 4387.07, 4387.37, 8), +(40, 'o-Xylene', 106.167, 0.737, 0.804, 0.804, 0.821, 0.5128, 0.4427, 0.4427, 0.4231, 4602.17, 4598.64, 4597.46, 4596.31, 4598.64, 4376.8, 4376.48, 4376.34, 4376.23, 4376.48, 8), +(41, 'methanol', 32.042, 0.773, 0.872, 0.872, 0.892, 0.4764, 0.3578, 0.3578, 0.3286, 766.59, 765.09, 764.59, 764.09, 765.09, 676.44, 676.22, 676.14, 676.06, 676.22, 3), +(42, 'Methanethiol', 48.109, 0.972, 0.977, 0.977, 0.978, 0.1673, 0.1517, 0.1517, 0.1483, 1241.63, 1240.28, 1239.83, 1239.39, 1240.28, 1151.48, 1151.41, 1151.39, 1151.36, 1151.41, 3), +(43, 'hydrogen', 2.0159, 1.0006, 1.0006, 1.0006, 1.0006, 0.0, 0.0, 0.0, 0.0, 286.63, 286.15, 285.99, 285.83, 286.15, 241.56, 241.72, 241.76, 241.81, 241.72, 0), +(44, 'water', 18.01528, 0.93, 0.945, 0.945, 0.952, 0.2646, 0.2345, 0.2345, 0.2191, 45.064, 44.431, 44.222, 44.013, 44.408, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(45, 'H2S', 34.082, 0.99, 0.99, 0.99, 0.99, 0.1, 0.1, 0.1, 0.1, 562.94, 562.38, 562.19, 562.01, 562.38, 517.87, 517.95, 517.97, 517.99, 517.95, 0), +(46, 'Ammonia', 17.0306, 0.985, 0.988, 0.988, 0.989, 0.1225, 0.1095, 0.1095, 0.1049, 384.57, 383.51, 383.16, 382.81, 383.51, 316.96, 316.86, 316.82, 316.79, 316.86, 0); +INSERT INTO PUBLIC.ISO6976CONSTANTS2016(ID, COMPONENTNAME, MOLARMASS, Z0, Z15, Z60F, Z20, SRTB0, SRTB15, SRTB60F, SRTB20, HSUPMOLAR0, HSUPMOLAR15, HSUPMOLAR20, HSUPMOLAR25, HSUPMOLAR60F, HINFMOLAR0, HINFMOLAR15, HINFMOLAR20, HINFMOLAR25, HINFMOLAR60F, NUMBEROFCARBON) VALUES +(47, 'hydrogencyanide', 27.026, 0.887, 0.912, 0.912, 0.92, 0.3362, 0.2966, 0.2966, 0.2828, 671.9, 671.7, 671.6, 671.5, 671.7, 649.4, 649.5, 649.5, 649.5, 649.5, 0), +(48, 'carbonmonoxide', 28.01, 0.9993, 0.9995, 0.9995, 0.9996, 0.0265, 0.0224, 0.0224, 0.02, 282.8, 282.91, 282.95, 282.98, 282.91, 282.8, 282.91, 282.95, 282.98, 282.91, 0), +(49, 'carbonylsulfide', 60.076, 0.985, 0.987, 0.987, 0.988, 0.1225, 0.114, 0.114, 0.1095, 548.01, 548.15, 548.19, 548.23, 548.15, 548.01, 548.15, 548.19, 548.23, 548.15, 0), +(50, 'carbondisulfide', 76.143, 0.954, 0.962, 0.962, 0.965, 0.2145, 0.1949, 0.1949, 0.1871, 1104.06, 1104.32, 1104.41, 1104.49, 1104.32, 1104.06, 1104.32, 1104.41, 1104.49, 1104.32, 0), +(51, 'helium', 4.0026, 1.0005, 1.0005, 1.0005, 1.0005, 6.0E-4, 2.0E-4, 2.0E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(52, 'Neon', 20.1797, 1.0005, 1.0005, 1.0005, 1.0005, 6.0E-4, 2.0E-4, 2.0E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(53, 'argon', 39.948, 0.999, 0.9992, 0.9992, 0.9993, 0.0316, 0.0283, 0.0283, 0.0265, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(54, 'nitrogen', 28.0134, 0.99955, 0.99971, 0.99972, 0.99976, 0.0214, 0.017, 0.0169, 0.0156, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(55, 'oxygen', 31.9988, 0.999, 0.9992, 0.9992, 0.9993, 0.0316, 0.0283, 0.0283, 0.0265, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(56, 'CO2', 44.0095, 0.99325, 0.99434, 0.99438, 0.99466, 0.0821, 0.0752, 0.0749, 0.073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(57, 'SulfurDioxide', 64.065, 0.976, 0.979, 0.979, 0.98, 0.1549, 0.1449, 0.1449, 0.1414, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0), +(58, 'iC5', 72.14878, 0.937, 0.948, 0.948, 0.953, 0.2458, 0.2251, 0.2244, 0.2189, 3536.01, 3531.68, 3530.25, 3528.83, 3531.52, 3265.54, 3265.08, 3264.89, 3264.73, 3265.06, 5); +CREATE CACHED TABLE PUBLIC.LITERATUREANDARTICLESTABLE( + ID INT NOT NULL, + AUTHOR VARCHAR(100) DEFAULT NULL, + NAME VARCHAR(255) DEFAULT NULL, + JOURNAL VARCHAR(100) DEFAULT NULL, + VOLUME INT DEFAULT '0', + PAGES INT DEFAULT '0', + "YEAR" INT DEFAULT '0', + REFERENCEID VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.LITERATUREANDARTICLESTABLE ADD CONSTRAINT PUBLIC.CONSTRAINT_E0 PRIMARY KEY(ID); +-- 39 +/- SELECT COUNT(*) FROM PUBLIC.LITERATUREANDARTICLESTABLE; +INSERT INTO PUBLIC.LITERATUREANDARTICLESTABLE(ID, AUTHOR, NAME, JOURNAL, VOLUME, PAGES, "YEAR", REFERENCEID) VALUES +(1, 'Posey, Mark Leon', 'Thermodynamic Model For Acid Gas Loaded Aqueous Alkanolamine Solutions', 'Ph.D Dissertation', 1, NULL, 1996, 'Posey1996'), +(2, 'Zuo, You-Xiang, Furst, Walter', 'Prediction of Vapor pressure for nonaqueous electrolyte solutins using an electrolyte equation of state', 'Fluid Phase Equilibria', 138, 87, 1997, 'Zuo1997'), +(3, 'Shapiro, J.N, Moran, M.J', 'Fundamentals of Engineering Thermodynamics', 'Book', 0, 0, 1993, 'Shapiro1993'), +(4, 'Noll, O., Valtz, A., Richon, D., Getachew-Sawaya, T., Mokbel, I., Jose, J.', 'Vapor pressures and liquid densities of N-methylethanoleamine, diethanoleamine, and N-methyldiethanoleamine', 'The International Electronic Journal of Physico-Chemical Data', 4, 105, 1998, 'Noll1998'), +(5, 'Lemoine, B., Yi-Gui, L., Cadours, R., Bouallou, C., Richon, D.', 'Partial vapor pressure of CO2 and H2S over aqueos methyldiethanoleamine solutions', 'Fluid Phase Equilibria', 172, 261, 2000, 'Lemoine2000'), +(6, 'Borgnakke1996', '???', '???', 0, 0, 0, 'Borgnakke1997'), +(7, 'Jou, F.Y, Caroll, J., Mather, A.E, Otto, F.D', 'The solubility of Carbondioxide and hydrogensulfide in a 35wt% aqueous Solution of methyldiethanolamine', 'The Canacian journal of chemical engineering', 71, 264, 1993, 'Jou1993'), +(8, 'Hougton, G., McLean, A.M., Ritchie, P.D', 'Compressibility, fugacity, and water-solubility of carbon dioxide in the region 0-36 atm. And 0-100 C', 'Chemical Engineering Science', 6, 132, 1957, 'Houghton1957'), +(9, 'Maham, Y., Mather, A.E', 'Surface thermodyanmics of aqueous solutions of alkylethanolamines', 'Fluid Phase Equilibria', 182, 325, 2001, 'Maham2001'), +(10, 'DlGullio, R.M, Lee, R.J, Schaeffer, S.T, Brasher, L., Teja, A.S', 'Densities and Viscosities of the Ethanolamines', 'J.Chem.Eng.Data', 37, 239, 1992, 'DiGullio1992a'), +(11, 'DlGullio, R.M, McGregor, W.L, Teja, A.S', 'Thermal Conductivities of the Ethanolamines', 'J.Chem.Eng.Data', 37, 242, 1992, 'DiGullio1992b'), +(12, 'Teng, T.T, Maham, Y., Hepler, LG., Mather, A.E, Hakin, A.W, Marriott, R.A', 'Molar heat capacities of alkanolamines', 'J.Chem,Soc., Faraday.Trans.', 93, 1747, 1997, 'Teng1997'), +(13, 'Chang, H.T, Possey, M., Rochelle, G.T', 'Thermodyanmics of Alkanolamine-Water Solutions from Freezing Point Meassurements', 'Ind.Eng.Chem.Res', 32, 2324, 1993, 'Chang1993'), +(14, 'Addicks, J., Owren, G., Tangvik, K.', 'Solubility of Carbon Dioxide and Methane in Aqueous Methyldiethanoleamine Solutions', 'Paper, IGRC conference 2001', 0, 0, 2001, 'Addicks2001'), +(16, 'Harned and Davies', '?', '?', 0, 0, 1943, 'Harned1943'), +(17, 'Matous', '?', '?', 0, 0, 1969, 'Matous1969'), +(18, 'Morgan and Maas', '?', NULL, 0, 0, 1931, 'Morgan1931'), +(19, 'Nighswander', '?', '?', 0, 0, 1989, 'Nighswander1989'), +(20, 'Zawisza and Malesinska', '?', NULL, 0, 0, 1981, 'Zawisza1981'), +(21, 'Murray and Riley', '?', '?', 0, 0, 1971, 'Murray1971'), +(22, 'Perry, R.H, Green, D.W', 'Perrys Chemical Engineers Handbook', NULL, 7, 62, 1998, 'Perry1998'), +(23, 'Austgen, D.M., Rochelle, G.T, Chen, C.C.', 'Model of Vapor-Liquid Equilibriua for Aqueous Acid Gas-Alkanolamine Systems. 2. Representation of H2S and CO2 Solubility in Aqueous MDEA and CO2 Solubility in Aqueous Mixtures of MDEA with MEA or DEA', 'Ind.Eng.Chem', 30, 543, 1991, 'Austgen1991'), +(24, 'Jou, F.Y., Mather, A.E., Otto, D.', 'Solubility of H2S and CO2 in Aqueous Methyldiethanolamine Solutions', 'Ind.Eng.Chem', 21, 539, 1982, 'Jou1982'), +(25, 'Pitzer, K..S', 'Thermodyanmics', '3.ed', 3, 269, 1995, 'Pitzer1995'), +(26, 'Rho, S.W, Yoo, K.P, Lee, J.S., Nam, S.C., Min, B.M.', 'Solubility of CO2 in Aqueous Methyldiethanoleamine Solutions', 'J.Chem.Eng.Data', 42, 1161, 1997, 'Rho1997'), +(27, 'Kuranov, G., Rumpf, B., Smirnova, N.,A., Maurer, G.', 'Solubility of Single Gases Carbondioxide and Hydrogen Sulfide in Aqueous Soutions of N-Methyldiethanolamine in the Temperature range 313-413 K at Pressures up to 5 Mpa', 'Ind.Chem.Chem.Res', 35, 1959, 1996, 'Kuranov1996'), +(28, 'Bahiri, A.', 'Experimental Equilibrium between Acid Gases and Ethanoleamine Solutions', 'Ph.D thesis', 0, 0, 1984, 'Bahiri1984'); +INSERT INTO PUBLIC.LITERATUREANDARTICLESTABLE(ID, AUTHOR, NAME, JOURNAL, VOLUME, PAGES, "YEAR", REFERENCEID) VALUES +(29, 'Chakma, A., Miesen, A.', 'Solubility of CO2 in Aqueous Methyldiethanoleamine and N,N-Bis(hyroxyethyl)piprazine Solutions', 'Ind.Eng.Chem.Res', 26, 2461, 1987, 'Chakma1987'), +(30, 'Teng, T.T, Maham, Y., Hepler, L.G, Mather, A.E', 'Viscosity of Aqueous Solutions of N-Methyldiethanoleamine and of Diethanoleamine', 'J.Chem.Eng.Data', 39, 290, 1994, 'Teng1994'), +(31, 'DECHEMA VOL6', 'DECHEMA VOL6', 'DECHEMA Database', 0, 0, 0, 'DECHEMA VOL6'), +(32, 'Otto, F.D, Mather, A.E., Jou, F.Y., Lal, D.', 'Solubility of light hydrocarbons in gas treating solvents', 'AiChE meeting - unknown year', 0, 0, 0, 'Otto????'), +(33, 'Blanco, S.T., Avila, S., Rauzy, E. Otin, S.', 'Dew points of ternary methane + ethane + butane and quaternary methane + ethane + butane + water mixtures. Measurements and correlation.', 'Fluid Phase Equilibria', 0, 0, 0, 'Blanco????'), +(34, 'Versteeg, G.F, Van Swaaij, W.P.M', 'On the Kineticks between CO2 and alkanolamines both in aqueous and non-aqueous solutions - ternary amines', 'Chem.eng.sci', 43, 587, 1988, 'Versteeg1988'), +(35, 'Culberson, O.L., McKetta, J.J', 'Phase Equilibria in Hydrocarbon-water systems \r\nIII - The solubility of Methane in Water ar pressures to 10.000 PSIA', 'Petroleum Transactions, AIME', 192, 1951, 1951, 'Culberson1951'), +(36, 'Kiepe, J., Horstmann, S., Fisher, K., Gmehling, J.', ' Experimental Determination and Prediction of Gas Solubility Data for CO2 + H2O Mixtures Containing NaCl or KCl at Temperatures between 313 and 393 K and Pressures up to 10 Mpa', 'Ind. Eng. Chem. Res.', 41, 4393, 2002, 'Kiepe2002'), +(37, 'PVTsim 13', 'PVTsim 13 - Method Documentation', 'Computer program', 0, 0, 0, 'PVTsim 13'), +(38, 'Solbraa, Even', 'Equilibrium and Non-equilibrium thermodynamics of natural gas processing', 'Thesis, NTNIU', 0, 0, 2002, 'Solbraa2002'), +(39, 'Solbraa, Even', 'undocumented personal work', 'undocumented personal work', 0, 0, 0, 'SolbraaPriv2004'), +(40, 'Ryberg, Tomas', 'undocumented personal work', 'undocumented personal work', 0, 0, 0, 'RybergPriv2004'); +CREATE CACHED TABLE PUBLIC.LUCIADATA( + ID INT NOT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + PHASE VARCHAR(255) DEFAULT NULL, + COMPONENT VARCHAR(255) DEFAULT NULL, + Y DOUBLE DEFAULT NULL, + L1 VARCHAR(255) DEFAULT NULL, + L2 DOUBLE DEFAULT NULL, + REF VARCHAR(255) DEFAULT NULL, + FIELD9 VARCHAR(255) DEFAULT NULL, + FIELD10 DOUBLE DEFAULT NULL, + FIELD11 DOUBLE DEFAULT NULL, + FIELD12 VARCHAR(255) DEFAULT NULL, + FIELD13 VARCHAR(255) DEFAULT NULL, + FIELD14 DOUBLE DEFAULT NULL, + FIELD15 VARCHAR(255) DEFAULT NULL, + FIELD16 DOUBLE DEFAULT NULL, + FIELD17 VARCHAR(255) DEFAULT NULL, + FIELD18 VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.LUCIADATA ADD CONSTRAINT PUBLIC.CONSTRAINT_D PRIMARY KEY(ID); +-- 589 +/- SELECT COUNT(*) FROM PUBLIC.LUCIADATA; +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1, 323.19, 1378951.4, 'T', 'methane', 0.99036, NULL, 2.22E-4, '1.1.1', NULL, 122.0, 200.0, 'T', 'methane', NULL, NULL, 0.0222, '1.1.1', NULL), +(2, 323.19, 1378951.4, 'T', 'water', 0.00964, NULL, 0.999778, '1.1.1', NULL, 122.0, 200.0, 'T', 'water', 0.964, NULL, NULL, '1.1.1', NULL), +(3, 323.19, 6205281.3, 'T', 'methane', 0.99755, NULL, 9.45E-4, '1.1.2', NULL, 122.0, 900.0, 'T', 'methane', NULL, NULL, 0.0945, '1.1.2', NULL), +(4, 323.19, 6205281.3, 'T', 'water', 0.00245, NULL, 0.99823, '1.1.2', NULL, 122.0, 900.0, 'T', 'water', 0.245, NULL, NULL, '1.1.2', NULL), +(5, 323.19, 1.3789514E7, 'T', 'methane', 0.99864, NULL, 0.00177, '1.1.3', NULL, 122.0, 2000.0, 'T', 'methane', NULL, NULL, 0.177, '1.1.3', NULL), +(6, 323.19, 1.3789514E7, 'T', 'water', 0.00136, NULL, 0.99823, '1.1.3', NULL, 122.0, 2000.0, 'T', 'water', 0.136, NULL, NULL, '1.1.3', NULL), +(7, 348.21, 1378951.4, 'T', 'methane', 0.97065, NULL, 1.88E-4, '1.1.4', NULL, 167.0, 200.0, 'T', 'methane', NULL, NULL, 0.0188, '1.1.4', NULL), +(8, 348.21, 1378951.4, 'T', 'water', 0.02935, NULL, 0.999812, '1.1.4', NULL, 167.0, 200.0, 'T', 'water', 2.935, NULL, NULL, '1.1.4', NULL), +(9, 348.21, 6205281.3, 'T', 'methane', 0.9929, NULL, 8.42E-4, '1.1.5', NULL, 167.0, 900.0, 'T', 'methane', NULL, NULL, 0.0842, '1.1.5', NULL), +(10, 348.21, 6205281.3, 'T', 'water', 0.0071, NULL, 0.999158, '1.1.5', NULL, 167.0, 900.0, 'T', 'water', 0.71, NULL, NULL, '1.1.5', NULL), +(11, 348.21, 1.3789514E7, 'T', 'methane', 0.99634, NULL, 0.00164, '1.1.6', NULL, 167.0, 2000.0, 'T', 'methane', NULL, NULL, 0.164, '1.1.6', NULL), +(12, 348.21, 1.3789514E7, 'T', 'water', 0.00366, NULL, 0.99836, '1.1.6', NULL, 167.0, 2000.0, 'T', 'water', 0.366, NULL, NULL, '1.1.6', NULL), +(13, 423.27, 1378951.4, 'T', 'methane', 0.6454, NULL, 1.73E-4, '1.1.7', NULL, 302.0, 200.0, 'T', 'methane', NULL, NULL, 0.0173, '1.1.7', NULL), +(14, 423.27, 1378951.4, 'T', 'water', 0.3546, NULL, 0.999827, '1.1.7', NULL, 302.0, 200.0, 'T', 'water', 35.46, NULL, NULL, '1.1.7', NULL), +(15, 423.27, 6205281.3, 'T', 'methane', 0.915, NULL, 0.001, '1.1.8', NULL, 302.0, 900.0, 'T', 'methane', NULL, NULL, 0.1, '1.1.8', NULL), +(16, 423.27, 6205281.3, 'T', 'water', 0.085, NULL, 0.999, '1.1.8', NULL, 302.0, 900.0, 'T', 'water', 8.5, NULL, NULL, '1.1.8', NULL), +(17, 423.27, 1.3789514E7, 'T', 'methane', 0.957, NULL, 0.00209, '1.1.9', NULL, 302.0, 2000.0, 'T', 'methane', NULL, NULL, 0.209, '1.1.9', NULL), +(18, 423.27, 1.3789514E7, 'T', 'water', 0.043, NULL, 0.99791, '1.1.9', NULL, 302.0, 2000.0, 'T', 'water', 4.3, NULL, NULL, '1.1.9', NULL), +(19, 477.758, 6205281.3, 'T', 'methane', 0.6964, NULL, 0.00126, '1.1.10', NULL, 400.0, 900.0, 'T', 'methane', NULL, NULL, 0.126, '1.1.10', NULL), +(20, 477.758, 6205281.3, 'T', 'water', 0.3036, NULL, 0.99874, '1.1.10', NULL, 400.0, 900.0, 'T', 'water', 30.36, NULL, NULL, '1.1.10', NULL), +(21, 477.758, 1.03421355E7, 'T', 'methane', 0.7995, NULL, 0.00233, '1.1.11', NULL, 400.0, 1500.0, 'T', 'methane', NULL, NULL, 0.233, '1.1.11', NULL), +(22, 477.758, 1.03421355E7, 'T', 'water', 0.2005, NULL, 0.99767, '1.1.11', NULL, 400.0, 1500.0, 'T', 'water', 20.05, NULL, NULL, '1.1.11', NULL), +(23, 477.758, 1.3789514E7, 'T', 'methane', 0.839, NULL, 0.00317, '1.1.12', NULL, 400.0, 2000.0, 'T', 'methane', NULL, NULL, 0.317, '1.1.12', NULL), +(24, 477.758, 1.3789514E7, 'T', 'water', 0.161, NULL, 0.99683, '1.1.12', NULL, 400.0, 2000.0, 'T', 'water', 16.1, NULL, NULL, '1.1.12', NULL), +(25, 533.358, 1.03421355E7, 'T', 'methane', 0.4904, NULL, 0.00284, '1.1.13', NULL, 500.0, 1500.0, 'T', 'methane', NULL, NULL, 0.284, '1.1.13', NULL), +(26, 533.358, 1.03421355E7, 'T', 'water', 0.5096, NULL, 0.99716, '1.1.13', NULL, 500.0, 1500.0, 'T', 'water', 50.96, NULL, NULL, '1.1.13', NULL), +(27, 533.358, 1.3789514E7, 'T', 'methane', 0.5979, NULL, 0.00445, '1.1.14', NULL, 500.0, 2000.0, 'T', 'methane', NULL, NULL, 0.445, '1.1.14', NULL), +(28, 533.358, 1.3789514E7, 'T', 'water', 0.4021, NULL, 0.99555, '1.1.14', NULL, 500.0, 2000.0, 'T', 'water', 40.21, NULL, NULL, '1.1.14', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(29, 588.958, 1.3789514E7, 'T', 'methane', 0.1678, NULL, 0.00337, '1.1.15', NULL, 600.0, 2000.0, 'T', 'methane', NULL, NULL, 0.337, '1.1.15', NULL), +(30, 588.958, 1.3789514E7, 'T', 'water', 0.8322, NULL, 0.99663, '1.1.15', NULL, 600.0, 2000.0, 'T', 'water', 83.22, NULL, NULL, '1.1.15', NULL), +(31, 588.958, 1.689215465E7, 'T', 'methane', 0.254, NULL, 0.00676, '1.1.16', NULL, 600.0, 2450.0, 'T', 'methane', NULL, NULL, 0.676, '1.1.16', NULL), +(32, 588.958, 1.689215465E7, 'T', 'water', 0.746, NULL, 0.99324, '1.1.16', NULL, 600.0, 2450.0, 'T', 'water', 74.6, NULL, NULL, '1.1.16', NULL), +(33, 288.718, 5067646.395, 'T', 'CO2', 0.999181, NULL, 0.0258, '1.3.1', NULL, 60.0, 735.0, 'T', 'CO2', NULL, NULL, 2.58, '1.3.1', NULL), +(34, 288.718, 5067646.395, 'T', 'water', 8.19E-4, NULL, 0.9742, '1.3.1', NULL, 60.0, 735.0, 'T', 'water', 0.0819, NULL, NULL, '1.3.1', NULL), +(35, 288.718, 1.013529279E7, 'L', 'CO2', NULL, '0.99722', 0.0242, '1.3.2', NULL, 60.0, 1470.0, 'L', 'CO2', NULL, NULL, 2.42, '1.3.2', NULL), +(36, 288.718, 1.013529279E7, 'L', 'water', NULL, '0.00278', 0.9758, '1.3.2', NULL, 60.0, 1470.0, 'L', 'water', NULL, '0.278', NULL, '1.3.2', NULL), +(37, 288.718, 2.027058558E7, 'L', 'CO2', NULL, '0.99708', 0.0261, '1.3.3', NULL, 60.0, 2940.0, 'L', 'CO2', NULL, NULL, 2.61, '1.3.3', NULL), +(38, 288.718, 2.027058558E7, 'L', 'water', NULL, '0.00292', 0.9739, '1.3.3', NULL, 60.0, 2940.0, 'L', 'water', NULL, '0.292', NULL, '1.3.3', NULL), +(39, 298.17, 5067646.395, 'T', 'CO2', 0.99872, NULL, 0.021, '1.3.4', NULL, 77.0, 735.0, 'T', 'CO2', NULL, NULL, 2.1, '1.3.4', NULL), +(40, 298.17, 5067646.395, 'T', 'water', 0.00128, NULL, 0.979, '1.3.4', NULL, 77.0, 735.0, 'T', 'water', 0.128, NULL, NULL, '1.3.4', NULL), +(41, 298.17, 1.013529279E7, 'L', 'CO2', NULL, '0.99664', 0.0249, '1.3.5', NULL, 77.0, 1470.0, 'L', 'CO2', NULL, NULL, 2.49, '1.3.5', NULL), +(42, 298.17, 1.013529279E7, 'L', 'water', NULL, '0.00336', 0.9751, '1.3.5', NULL, 77.0, 1470.0, 'L', 'water', NULL, '0.336', NULL, '1.3.5', NULL), +(43, 298.17, 2.027058558E7, 'L', 'CO2', NULL, '0.99624', 0.0257, '1.3.6', NULL, 77.0, 2940.0, 'L', 'CO2', NULL, NULL, 2.57, '1.3.6', NULL), +(44, 298.17, 2.027058558E7, 'L', 'water', NULL, '0.00376', 0.9743, '1.3.6', NULL, 77.0, 2940.0, 'L', 'water', NULL, '0.376', NULL, '1.3.6', NULL), +(45, 302.618, 5515805.6, 'T', 'CO2', 0.99843, NULL, 0.0203, '1.3.7', NULL, 85.0, 800.0, 'T', 'CO2', NULL, NULL, 2.03, '1.3.7', NULL), +(46, 302.618, 5515805.6, 'T', 'water', 0.00157, NULL, 0.9797, '1.3.7', NULL, 85.0, 800.0, 'T', 'water', 0.157, NULL, NULL, '1.3.7', NULL), +(47, 302.618, 1.013529279E7, 'L', 'CO2', NULL, '0.99611', 0.0239, '1.3.8', NULL, 85.0, 1470.0, 'L', 'CO2', NULL, NULL, 2.39, '1.3.8', NULL), +(48, 302.618, 1.013529279E7, 'L', 'water', NULL, '0.00389', 0.9761, '1.3.8', NULL, 85.0, 1470.0, 'L', 'water', NULL, '0.389', NULL, '1.3.8', NULL), +(49, 302.618, 2.027058558E7, 'L', 'CO2', NULL, '0.99564', 0.0263, '1.3.9', NULL, 85.0, 2940.0, 'L', 'CO2', NULL, NULL, 2.63, '1.3.9', NULL), +(50, 302.618, 2.027058558E7, 'L', 'water', NULL, '0.00436', 0.9737, '1.3.9', NULL, 85.0, 2940.0, 'L', 'water', NULL, '0.436', NULL, '1.3.9', NULL), +(51, 304.2304, 689475.7, 'T', 'CO2', 0.9306, NULL, 0.00331, '1.3.10', NULL, 87.9, 100.0, 'T', 'CO2', NULL, NULL, 0.331, '1.3.10', NULL), +(52, 304.2304, 689475.7, 'T', 'water', 0.0694, NULL, 0.99669, '1.3.10', NULL, 87.9, 100.0, 'T', 'water', 0.694, NULL, NULL, '1.3.10', NULL), +(53, 304.2304, 2533823.1975, 'T', 'CO2', 0.99761, NULL, 0.01056, '1.3.11', NULL, 87.9, 367.5, 'T', 'CO2', NULL, NULL, 1.056, '1.3.11', NULL), +(54, 304.2304, 2533823.1975, 'T', 'water', 0.00239, NULL, 0.98944, '1.3.11', NULL, 87.9, 367.5, 'T', 'water', 0.239, NULL, NULL, '1.3.11', NULL), +(55, 304.2304, 5067646.395, 'T', 'CO2', 0.99837, NULL, 0.01817, '1.3.12', NULL, 87.9, 735.0, 'T', 'CO2', NULL, NULL, 1.817, '1.3.12', NULL), +(56, 304.2304, 5067646.395, 'T', 'water', 0.00163, NULL, 0.98183, '1.3.12', NULL, 87.9, 735.0, 'T', 'water', 0.163, NULL, NULL, '1.3.12', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(57, 304.2304, 1.013529279E7, 'L', 'CO2', NULL, '0.99592', 0.0241, '1.3.13', NULL, 87.9, 1470.0, 'L', 'CO2', NULL, NULL, 2.41, '1.3.13', NULL), +(58, 304.2304, 1.013529279E7, 'L', 'water', NULL, '0.00408', 0.9759, '1.3.13', NULL, 87.9, 1470.0, 'L', 'water', NULL, '0.408', NULL, '1.3.13', NULL), +(59, 304.2304, 2.027058558E7, 'L', 'CO2', NULL, '0.9955', 0.0262, '1.3.14', NULL, 87.9, 2940.0, 'L', 'CO2', NULL, NULL, 2.62, '1.3.14', NULL), +(60, 304.2304, 2.027058558E7, 'L', 'water', NULL, '0.0045', 0.9738, '1.3.14', NULL, 87.9, 2940.0, 'L', 'water', NULL, '0.45', NULL, '1.3.14', NULL), +(61, 348.21, 689475.7, 'T', 'CO2', 0.993986, NULL, 0.00149, '1.3.15', NULL, 167.0, 100.0, 'T', 'CO2', NULL, NULL, 0.149, '1.3.15', NULL), +(62, 348.21, 689475.7, 'T', 'water', 0.006014, NULL, 0.99851, '1.3.15', NULL, 167.0, 100.0, 'T', 'water', 6.014, NULL, NULL, '1.3.15', NULL), +(63, 348.21, 2533823.1975, 'T', 'CO2', 0.98184, NULL, 0.00542, '1.3.16', NULL, 167.0, 367.5, 'T', 'CO2', NULL, NULL, 0.542, '1.3.16', NULL), +(64, 348.21, 2533823.1975, 'T', 'water', 0.01816, NULL, 0.99458, '1.3.16', NULL, 167.0, 367.5, 'T', 'water', 1.816, NULL, NULL, '1.3.16', NULL), +(65, 348.21, 5067646.395, 'T', 'CO2', 0.98913, NULL, 0.01006, '1.3.17', NULL, 167.0, 735.0, 'T', 'CO2', NULL, NULL, 1.006, '1.3.17', NULL), +(66, 348.21, 5067646.395, 'T', 'water', 0.01087, NULL, 0.98994, '1.3.17', NULL, 167.0, 735.0, 'T', 'water', 1.087, NULL, NULL, '1.3.17', NULL), +(67, 348.21, 1.013529279E7, 'T', 'CO2', 0.99273, NULL, 0.01616, '1.3.18', NULL, 167.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.616, '1.3.18', NULL), +(68, 348.21, 1.013529279E7, 'T', 'water', 0.00727, NULL, 0.98384, '1.3.18', NULL, 167.0, 1470.0, 'T', 'water', 0.727, NULL, NULL, '1.3.18', NULL), +(69, 348.21, 2.027058558E7, 'T', 'CO2', 0.99062, NULL, 0.0209, '1.3.19', NULL, 167.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.09, '1.3.19', NULL), +(70, 348.21, 2.027058558E7, 'T', 'water', 0.00938, NULL, 0.9791, '1.3.19', NULL, 167.0, 2940.0, 'T', 'water', 0.938, NULL, NULL, '1.3.19', NULL), +(71, 366.558, 689475.7, 'T', 'CO2', 0.8797, NULL, 9.73E-4, '1.3.20', NULL, 200.0, 100.0, 'T', 'CO2', NULL, NULL, 0.0973, '1.3.20', NULL), +(72, 366.558, 689475.7, 'T', 'water', 0.1203, NULL, 0.999027, '1.3.20', NULL, 200.0, 100.0, 'T', 'water', 12.03, NULL, NULL, '1.3.20', NULL), +(73, 366.558, 2533823.1975, 'T', 'CO2', 0.96529, NULL, 0.00435, '1.3.21', NULL, 200.0, 367.5, 'T', 'CO2', NULL, NULL, 0.435, '1.3.21', NULL), +(74, 366.558, 2533823.1975, 'T', 'water', 0.03471, NULL, 0.99565, '1.3.21', NULL, 200.0, 367.5, 'T', 'water', 3.471, NULL, NULL, '1.3.21', NULL), +(75, 366.558, 5067646.395, 'T', 'CO2', 0.9803, NULL, 0.00846, '1.3.22', NULL, 200.0, 735.0, 'T', 'CO2', NULL, NULL, 0.846, '1.3.22', NULL), +(76, 366.558, 5067646.395, 'T', 'water', 0.0197, NULL, 0.99154, '13.322', NULL, 200.0, 735.0, 'T', 'water', 1.97, NULL, NULL, '13.322', NULL), +(77, 366.558, 1.013529279E7, 'T', 'CO2', 0.98626, NULL, 0.0145, '1.3.23', NULL, 200.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.45, '1.3.23', NULL), +(78, 366.558, 1.013529279E7, 'T', 'water', 0.01374, NULL, 0.9855, '1.3.23', NULL, 200.0, 1470.0, 'T', 'water', 1.374, NULL, NULL, '1.3.23', NULL), +(79, 366.558, 2.027058558E7, 'T', 'CO2', 0.98568, NULL, 0.0206, '1.3.24', NULL, 200.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.06, '1.3.24', NULL), +(80, 366.558, 2.027058558E7, 'T', 'water', 0.01432, NULL, 0.9794, '1.3.24', NULL, 200.0, 2940.0, 'T', 'water', 1.432, NULL, NULL, '1.3.24', NULL), +(81, 394.358, 689475.7, 'T', 'CO2', 0.6889, NULL, 8.93E-4, '1.3.25', NULL, 250.0, 100.0, 'T', 'CO2', NULL, NULL, 0.0893, '1.3.25', NULL), +(82, 394.358, 689475.7, 'T', 'water', 0.3111, NULL, 0.999107, '1.3.25', NULL, 250.0, 100.0, 'T', 'water', 31.11, NULL, NULL, '1.3.25', NULL), +(83, 394.358, 2533823.1975, 'T', 'CO2', 0.9078, NULL, 0.00361, '1.3.26', NULL, 250.0, 367.5, 'T', 'CO2', NULL, NULL, 0.361, '1.3.26', NULL), +(84, 394.358, 2533823.1975, 'T', 'water', 0.0922, NULL, 0.99639, '1.3.26', NULL, 250.0, 367.5, 'T', 'water', 9.22, NULL, NULL, '1.3.26', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(85, 394.358, 5067646.395, 'T', 'CO2', 0.9483, NULL, 0.00731, '1.3.27', NULL, 250.0, 735.0, 'T', 'CO2', NULL, NULL, 0.731, '1.3.27', NULL), +(86, 394.358, 5067646.395, 'T', 'water', 0.0517, NULL, 0.99269, '1.3.27', NULL, 250.0, 735.0, 'T', 'water', 5.17, NULL, NULL, '1.3.27', NULL), +(87, 394.358, 1.013529279E7, 'T', 'CO2', 0.9677, NULL, 0.01316, '1.3.28', NULL, 250.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.316, '1.3.28', NULL), +(88, 394.358, 1.013529279E7, 'T', 'water', 0.0323, NULL, 0.98684, '1.3.28', NULL, 250.0, 1470.0, 'T', 'water', 3.23, NULL, NULL, '1.3.28', NULL), +(89, 394.358, 2.027058558E7, 'T', 'CO2', 0.9728, NULL, 0.0205, '1.3.29', NULL, 250.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.05, '1.3.29', NULL), +(90, 394.358, 2.027058558E7, 'T', 'water', 0.0272, NULL, 0.9795, '1.3.29', NULL, 250.0, 2940.0, 'T', 'water', 2.72, NULL, NULL, '1.3.29', NULL), +(91, 422.158, 689475.7, 'T', 'CO2', 0.326, NULL, 4.99E-4, '1.3.30', NULL, 300.0, 100.0, 'T', 'CO2', NULL, NULL, 0.0499, '1.3.30', NULL), +(92, 422.158, 689475.7, 'T', 'water', 0.674, NULL, 0.999501, '1.3.30', NULL, 300.0, 100.0, 'T', 'water', 67.4, NULL, NULL, '1.3.30', NULL), +(93, 422.158, 2533823.1975, 'T', 'CO2', 0.7991, NULL, 0.00316, '1.3.31', NULL, 300.0, 367.5, 'T', 'CO2', NULL, NULL, 0.316, '1.3.31', NULL), +(94, 422.158, 2533823.1975, 'T', 'water', 0.2009, NULL, 0.99684, '1.3.31', NULL, 300.0, 367.5, 'T', 'water', 20.09, NULL, NULL, '1.3.31', NULL), +(95, 422.158, 5067646.395, 'T', 'CO2', 0.8902, NULL, 0.00646, '1.3.32', NULL, 300.0, 735.0, 'T', 'CO2', NULL, NULL, 0.646, '1.3.32', NULL), +(96, 422.158, 5067646.395, 'T', 'water', 0.1098, NULL, 0.99354, '1.3.32', NULL, 300.0, 735.0, 'T', 'water', 10.98, NULL, NULL, '1.3.32', NULL), +(97, 422.158, 1.013529279E7, 'T', 'CO2', 0.9342, NULL, 0.01241, '1.3.33', NULL, 300.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.241, '1.3.33', NULL), +(98, 422.158, 1.013529279E7, 'T', 'water', 0.0658, NULL, 0.98759, '1.3.33', NULL, 300.0, 1470.0, 'T', 'water', 6.58, NULL, NULL, '1.3.33', NULL), +(99, 422.158, 2.027058558E7, 'T', 'CO2', 0.9503, NULL, 0.0205, '1.3.34', NULL, 300.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.05, '1.3.34', NULL), +(100, 422.158, 2.027058558E7, 'T', 'water', 0.0497, NULL, 0.9795, '1.3.34', NULL, 300.0, 2940.0, 'T', 'water', 4.97, NULL, NULL, '1.3.34', NULL), +(101, 477.758, 2533823.1975, 'T', 'CO2', 0.3242, NULL, 0.00136, '1.3.35', NULL, 400.0, 367.5, 'T', 'CO2', NULL, NULL, 0.136, '1.3.35', NULL), +(102, 477.758, 2533823.1975, 'T', 'water', 0.6758, NULL, 0.99864, '1.3.35', NULL, 400.0, 367.5, 'T', 'water', 67.58, NULL, NULL, '1.3.35', NULL), +(103, 477.758, 5067646.395, 'T', 'CO2', 0.6239, NULL, 0.00501, '1.3.36', NULL, 400.0, 735.0, 'T', 'CO2', NULL, NULL, 0.501, '1.3.36', NULL), +(104, 477.758, 5067646.395, 'T', 'water', 0.3761, NULL, 0.99499, '1.3.36', NULL, 400.0, 735.0, 'T', 'water', 37.61, NULL, NULL, '1.3.36', NULL), +(105, 477.758, 1.013529279E7, 'T', 'CO2', 0.7758, NULL, 0.0123, '1.3.37', NULL, 400.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.23, '1.3.37', NULL), +(106, 477.758, 1.013529279E7, 'T', 'water', 0.2242, NULL, 0.9877, '1.3.37', NULL, 400.0, 1470.0, 'T', 'water', 22.42, NULL, NULL, '1.3.37', NULL), +(107, 477.758, 2.027058558E7, 'T', 'CO2', 0.8526, NULL, 0.0205, '1.3.38', NULL, 400.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.05, '1.3.38', NULL), +(108, 477.758, 2.027058558E7, 'T', 'water', 0.1474, NULL, 0.9795, '1.3.38', NULL, 400.0, 2940.0, 'T', 'water', 14.74, NULL, NULL, '1.3.38', NULL), +(109, 533.358, 1.013529279E7, 'T', 'CO2', 0.4368, NULL, 0.01015, '1.3.39', NULL, 500.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.015, '1.3.39', NULL), +(110, 533.358, 1.013529279E7, 'T', 'water', 0.5632, NULL, 0.98985, '1.3.39', NULL, 500.0, 1470.0, 'T', 'water', 56.32, NULL, NULL, '1.3.39', NULL), +(111, 533.358, 2.027058558E7, 'T', 'CO2', 0.6282, NULL, 0.0239, '1.3.40', NULL, 500.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.39, '1.3.40', NULL), +(112, 533.358, 2.027058558E7, 'T', 'water', 0.3718, NULL, 0.9761, '1.3.40', NULL, 500.0, 2940.0, 'T', 'water', 37.18, NULL, NULL, '1.3.40', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(113, 310.958, 4136854.2, 'L', 'H2S', NULL, '0.9816', 0.0335, '1.5.1', NULL, 100.0, 600.0, 'L', 'H2S', NULL, NULL, 3.35, '1.5.1', NULL), +(114, 310.958, 4136854.2, 'L', 'water', NULL, '0.0184', 0.9665, '1.5.1', NULL, 100.0, 600.0, 'L', 'water', NULL, '1.84', NULL, '1.5.1', NULL), +(115, 310.958, 6894757.0, 'L', 'H2S', NULL, '0.982', 0.0338, '1.5.2', NULL, 100.0, 1000.0, 'L', 'H2S', NULL, NULL, 3.38, '1.5.2', NULL), +(116, 310.958, 6894757.0, 'L', 'water', NULL, '0.018', 0.9662, '1.5.2', NULL, 100.0, 1000.0, 'L', 'water', NULL, '1.8', NULL, '1.5.2', NULL), +(117, 310.958, 1.03421355E7, 'L', 'H2S', NULL, '0.9819', 0.0351, '1.5.3', NULL, 100.0, 1500.0, 'L', 'H2S', NULL, NULL, 3.51, '1.5.3', NULL), +(118, 310.958, 1.03421355E7, 'L', 'water', NULL, '0.0181', 0.9649, '1.5.3', NULL, 100.0, 1500.0, 'L', 'water', NULL, '1.81', NULL, '1.5.3', NULL), +(119, 310.958, 1.3789514E7, 'L', 'H2S', NULL, '0.9821', 0.0344, '1.5.4', NULL, 100.0, 2000.0, 'L', 'H2S', NULL, NULL, 3.44, '1.5.4', NULL), +(120, 310.958, 1.3789514E7, 'L', 'water', NULL, '0.0179', 0.9656, '1.5.4', NULL, 100.0, 2000.0, 'L', 'water', NULL, '1.79', NULL, '1.5.4', NULL), +(121, 310.958, 2.0684271E7, 'L', 'H2S', NULL, '0.9817', 0.0359, '1.5.5', NULL, 100.0, 3000.0, 'L', 'H2S', NULL, NULL, 3.59, '1.5.5', NULL), +(122, 310.958, 2.0684271E7, 'L', 'water', NULL, '0.0183', 0.9641, '1.5.5', NULL, 100.0, 3000.0, 'L', 'water', NULL, '1.83', NULL, '1.5.5', NULL), +(123, 344.318, 6894757.0, 'L', 'H2S', NULL, '0.9684', 0.0398, '1.5.6', NULL, 160.0, 1000.0, 'L', 'H2S', NULL, NULL, 3.98, '1.5.6', NULL), +(124, 344.318, 6894757.0, 'L', 'water', NULL, '0.0316', 0.9602, '1.5.6', NULL, 160.0, 1000.0, 'L', 'water', NULL, '3.16', NULL, '1.5.6', NULL), +(125, 344.318, 1.03421355E7, 'L', 'H2S', NULL, '0.9671', 0.0393, '1.5.7', NULL, 160.0, 1500.0, 'L', 'H2S', NULL, NULL, 3.93, '1.5.7', NULL), +(126, 344.318, 1.03421355E7, 'L', 'water', NULL, '0.0329', 0.9607, '1.5.7', NULL, 160.0, 1500.0, 'L', 'water', NULL, '3.29', NULL, '1.5.7', NULL), +(127, 344.318, 1.3789514E7, 'L', 'H2S', NULL, '0.9657', 0.0417, '1.5.8', NULL, 160.0, 2000.0, 'L', 'H2S', NULL, NULL, 4.17, '1.5.8', NULL), +(128, 344.318, 1.3789514E7, 'L', 'water', NULL, '0.0343', 0.9583, '1.5.8', NULL, 160.0, 2000.0, 'L', 'water', NULL, '3.43', NULL, '1.5.8', NULL), +(129, 344.318, 2.0684271E7, 'L', 'H2S', NULL, '0.9643', 0.0406, '1.5.9', NULL, 160.0, 3000.0, 'L', 'H2S', NULL, NULL, 4.06, '1.5.9', NULL), +(130, 344.318, 2.0684271E7, 'L', 'water', NULL, '0.0357', 0.9594, '1.5.9', NULL, 160.0, 3000.0, 'L', 'water', NULL, '3.57', NULL, '1.5.9', NULL), +(131, 366.558, 8963184.1, 'L', 'H2S', NULL, '0.9536', 0.0441, '1.5.10', NULL, 200.0, 1300.0, 'L', 'H2S', NULL, NULL, 4.41, '1.5.10', NULL), +(132, 366.558, 8963184.1, 'L', 'water', NULL, '0.0464', 0.9559, '1.5.10', NULL, 200.0, 1300.0, 'L', 'water', NULL, '4.64', NULL, '1.5.10', NULL), +(133, 366.558, 1.03421355E7, 'L', 'H2S', NULL, '0.9529', 0.0433, '1.5.11', NULL, 200.0, 1500.0, 'L', 'H2S', NULL, NULL, 4.33, '1.5.11', NULL), +(134, 366.558, 1.03421355E7, 'L', 'water', NULL, '0.0471', 0.9567, '1.5.11', NULL, 200.0, 1500.0, 'L', 'water', NULL, '4.71', NULL, '1.5.11', NULL), +(135, 366.558, 1.3789514E7, 'L', 'H2S', NULL, '0.949', 0.0455, '1.5.12', NULL, 200.0, 2000.0, 'L', 'H2S', NULL, NULL, 4.55, '1.5.12', NULL), +(136, 366.558, 1.3789514E7, 'L', 'water', NULL, '0.051', 0.9545, '1.5.12', NULL, 200.0, 2000.0, 'L', 'water', NULL, '5.1', NULL, '1.5.12', NULL), +(137, 366.558, 2.0684271E7, 'L', 'H2S', NULL, '0.9456', 0.0466, '1.5.13', NULL, 200.0, 3000.0, 'L', 'H2S', NULL, NULL, 4.66, '1.5.13', NULL), +(138, 366.558, 2.0684271E7, 'L', 'water', NULL, '0.0544', 0.9534, '1.5.13', NULL, 200.0, 3000.0, 'L', 'water', NULL, '5.44', NULL, '1.5.13', NULL), +(139, 372.118, 1.03421355E7, 'L', 'H2S', NULL, '0.9503', 0.0443, '1.5.14', NULL, 210.0, 1500.0, 'L', 'H2S', NULL, NULL, 4.43, '1.5.14', NULL), +(140, 372.118, 1.03421355E7, 'L', 'water', NULL, '0.0497', 0.9557, '1.5.14', NULL, 210.0, 1500.0, 'L', 'water', NULL, '4.97', NULL, '1.5.14', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(141, 372.118, 1.3789514E7, 'L', 'H2S', NULL, '0.9464', 0.047, '1.5.15', NULL, 210.0, 2000.0, 'L', 'H2S', NULL, NULL, 4.7, '1.5.15', NULL), +(142, 372.118, 1.3789514E7, 'L', 'water', NULL, '0.0536', 0.953, '1.5.15', NULL, 210.0, 2000.0, 'L', 'water', NULL, '5.36', NULL, '1.5.15', NULL), +(143, 372.118, 2.0684271E7, 'L', 'H2S', NULL, '0.9418', 0.0501, '1.5.16', NULL, 210.0, 3000.0, 'L', 'H2S', NULL, NULL, 5.01, '1.5.16', NULL), +(144, 372.118, 2.0684271E7, 'L', 'water', NULL, '0.0582', 0.9499, '1.5.16', NULL, 210.0, 3000.0, 'L', 'water', NULL, '5.82', NULL, '1.5.16', NULL), +(145, 373.6192, 1.03421355E7, 'L', 'H2S', NULL, '0.949', 0.0436, '1.5.17', NULL, 212.7, 1500.0, 'L', 'H2S', NULL, NULL, 4.36, '1.5.17', NULL), +(146, 373.6192, 1.03421355E7, 'L', 'water', NULL, '0.051', 0.9564, '1.5.17', NULL, 212.7, 1500.0, 'L', 'water', NULL, '5.1', NULL, '1.5.17', NULL), +(147, 373.6192, 1.3789514E7, 'L', 'H2S', NULL, '0.9437', 0.0463, '1.5.18', NULL, 212.7, 2000.0, 'L', 'H2S', NULL, NULL, 4.63, '1.5.18', NULL), +(148, 373.6192, 1.3789514E7, 'L', 'water', NULL, '0.0563', 0.9537, '1.5.18', NULL, 212.7, 2000.0, 'L', 'water', NULL, '5.63', NULL, '1.5.18', NULL), +(149, 373.6192, 2.0684271E7, 'L', 'H2S', NULL, '0.9406', 0.0506, '1.5.19', NULL, 212.7, 3000.0, 'L', 'H2S', NULL, NULL, 5.06, '1.5.19', NULL), +(150, 373.6192, 2.0684271E7, 'L', 'water', NULL, '0.0594', 0.9494, '1.5.19', NULL, 212.7, 3000.0, 'L', 'water', NULL, '5.94', NULL, '1.5.19', NULL), +(151, 422.158, 1.3789514E7, 'T', 'H2S', 0.9213, NULL, 0.058, '1.5.20', NULL, 300.0, 2000.0, 'T', 'H2S', NULL, NULL, 5.8, '1.5.20', NULL), +(152, 422.158, 1.3789514E7, 'T', 'water', 0.0787, NULL, 0.942, '1.5.20', NULL, 300.0, 2000.0, 'T', 'water', 7.87, NULL, NULL, '1.5.20', NULL), +(153, 422.158, 2.0684271E7, 'T', 'H2S', 0.882, NULL, 0.0706, '1.5.21', NULL, 300.0, 3000.0, 'T', 'H2S', NULL, NULL, 7.06, '1.5.21', NULL), +(154, 422.158, 2.0684271E7, 'T', 'water', 0.118, NULL, 0.9294, '1.5.21', NULL, 300.0, 3000.0, 'T', 'water', 11.8, NULL, NULL, '1.5.21', NULL), +(155, 477.758, 1.03421355E7, 'T', 'H2S', 0.762, NULL, 0.0387, '1.5.22', NULL, 400.0, 1500.0, 'T', 'H2S', NULL, NULL, 3.87, '1.5.22', NULL), +(156, 477.758, 1.03421355E7, 'T', 'water', 0.238, NULL, 0.9613, '1.5.22', NULL, 400.0, 1500.0, 'T', 'water', 23.8, NULL, NULL, '1.5.22', NULL), +(157, 477.758, 1.3789514E7, 'T', 'H2S', 0.793, NULL, 0.0595, '1.5.23', NULL, 400.0, 2000.0, 'T', 'H2S', NULL, NULL, 5.95, '1.5.23', NULL), +(158, 477.758, 1.3789514E7, 'T', 'water', 0.207, NULL, 0.9405, '1.5.23', NULL, 400.0, 2000.0, 'T', 'water', 20.7, NULL, NULL, '1.5.23', NULL), +(159, 477.758, 2.0684271E7, 'T', 'H2S', 0.786, NULL, 0.0972, '1.5.24', NULL, 400.0, 3000.0, 'T', 'H2S', NULL, NULL, 9.72, '1.5.24', NULL), +(160, 477.758, 2.0684271E7, 'T', 'water', 0.214, NULL, 0.9028, '1.5.24', NULL, 400.0, 3000.0, 'T', 'water', 21.4, NULL, NULL, '1.5.24', NULL), +(161, 533.358, 5515805.6, 'T', 'H2S', 0.121, NULL, 0.00439, '1.5.25', NULL, 500.0, 800.0, 'T', 'H2S', NULL, NULL, 0.439, '1.5.25', NULL), +(162, 533.358, 5515805.6, 'T', 'water', 0.879, NULL, 0.99561, '1.5.25', NULL, 500.0, 800.0, 'T', 'water', 87.9, NULL, NULL, '1.5.25', NULL), +(163, 533.358, 1.03421355E7, 'T', 'H2S', 0.441, NULL, 0.02911, '1.5.26', NULL, 500.0, 1500.0, 'T', 'H2S', NULL, NULL, 2.911, '1.5.26', NULL), +(164, 533.358, 1.03421355E7, 'T', 'water', 0.559, NULL, 0.97089, '1.5.26', NULL, 500.0, 1500.0, 'T', 'water', 55.9, NULL, NULL, '1.5.26', NULL), +(165, 533.358, 2.0684271E7, 'T', 'H2S', 0.58, NULL, 0.094, '1.5.27', NULL, 500.0, 3000.0, 'T', 'H2S', NULL, NULL, 9.4, '1.5.27', NULL), +(166, 533.358, 2.0684271E7, 'T', 'water', 0.42, NULL, 0.906, '1.5.27', NULL, 500.0, 3000.0, 'T', 'water', 42.0, NULL, NULL, '1.5.27', NULL), +(167, 588.958, 1.3789514E7, 'T', 'H2S', 0.148, NULL, 0.0249, '1.5.28', NULL, 600.0, 2000.0, 'T', 'H2S', NULL, NULL, 2.49, '1.5.28', NULL), +(168, 588.958, 1.3789514E7, 'T', 'water', 0.852, NULL, 0.9751, '1.5.28', NULL, 600.0, 2000.0, 'T', 'water', 85.2, NULL, NULL, '1.5.28', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(169, 588.958, 1.72368925E7, 'T', 'H2S', 0.271, NULL, 0.0491, '1.5.29', NULL, 600.0, 2500.0, 'T', 'H2S', NULL, NULL, 4.91, '1.5.29', NULL), +(170, 588.958, 1.72368925E7, 'T', 'water', 0.729, NULL, 0.9509, '1.5.29', NULL, 600.0, 2500.0, 'T', 'water', 72.9, NULL, NULL, '1.5.29', NULL), +(171, 588.958, 2.0684271E7, 'T', 'H2S', 0.341, NULL, 0.0727, '1.5.30', NULL, 600.0, 3000.0, 'T', 'H2S', NULL, NULL, 7.27, '1.5.30', NULL), +(172, 588.958, 2.0684271E7, 'T', 'water', 0.659, NULL, 0.9273, '1.5.30', NULL, 600.0, 3000.0, 'T', 'water', 65.9, NULL, NULL, '1.5.30', NULL), +(290, 310.958, 1.37157401001E7, 'V', 'methane', 0.999329, NULL, NULL, '2.1.1', NULL, 100.0, 1989.3, 'V', 'methane', NULL, NULL, NULL, '2.1.1', 'Reference 2: compositions in mole fraction of water x10^3'), +(291, 310.958, 1.37157401001E7, 'V', 'water', 6.71E-4, NULL, NULL, '2.1.1', NULL, 100.0, 1989.3, 'V', 'water', 0.671, NULL, NULL, '2.1.1', NULL), +(292, 310.958, 1.34854552163E7, 'V', 'methane', 0.999329, NULL, NULL, '2.1.2', NULL, 100.0, 1955.9, 'V', 'methane', NULL, NULL, NULL, '2.1.2', NULL), +(293, 310.958, 1.34854552163E7, 'V', 'water', 6.71E-4, NULL, NULL, '2.1.2', NULL, 100.0, 1955.9, 'V', 'water', 0.671, NULL, NULL, '2.1.2', NULL), +(294, 310.958, 2.08621557306E7, 'V', 'methane', 0.99937, NULL, NULL, '2.1.3', NULL, 100.0, 3025.8, 'V', 'methane', NULL, NULL, NULL, '2.1.3', NULL), +(296, 310.958, 2.08180292858E7, 'V', 'methane', 0.999355, NULL, NULL, '2.1.4', NULL, 100.0, 3019.4, 'V', 'methane', NULL, NULL, NULL, '2.1.4', NULL), +(297, 310.958, 2.08180292858E7, 'V', 'water', 6.45E-4, NULL, NULL, '2.1.4', NULL, 100.0, 3019.4, 'V', 'water', 0.645, NULL, NULL, '2.1.4', NULL), +(298, 310.958, 8615688.3472, 'V', 'methane', 0.998533, NULL, NULL, '2.1.5', NULL, 100.0, 1249.6, 'V', 'methane', NULL, NULL, NULL, '2.1.5', NULL), +(299, 310.958, 8615688.3472, 'V', 'water', 0.001467, NULL, NULL, '2.1.5', NULL, 100.0, 1249.6, 'V', 'water', 1.467, NULL, NULL, '2.1.5', NULL), +(300, 310.958, 8310940.0878, 'V', 'methane', 0.998722, NULL, NULL, '2.1.6', NULL, 100.0, 1205.4, 'V', 'methane', NULL, NULL, NULL, '2.1.6', NULL), +(301, 310.958, 8310940.0878, 'V', 'water', 0.001278, NULL, NULL, '2.1.6', NULL, 100.0, 1205.4, 'V', 'water', 1.278, NULL, NULL, '2.1.6', NULL), +(302, 310.958, 4.17119008986E7, 'V', 'methane', 0.999516, NULL, NULL, '2.1.7', NULL, 100.0, 6049.8, 'V', 'methane', NULL, NULL, NULL, '2.1.7', NULL), +(303, 310.958, 4.17119008986E7, 'V', 'water', 4.84E-4, NULL, NULL, '2.1.7', NULL, 100.0, 6049.8, 'V', 'water', 0.484, NULL, NULL, '2.1.7', NULL), +(304, 310.958, 3.46647697689E7, 'V', 'methane', 0.999494, NULL, NULL, '2.1.8', NULL, 100.0, 5027.7, 'V', 'methane', NULL, NULL, NULL, '2.1.8', NULL), +(305, 310.958, 3.46647697689E7, 'V', 'water', 5.06E-4, NULL, NULL, '2.1.8', NULL, 100.0, 5027.7, 'V', 'water', 0.506, NULL, NULL, '2.1.8', NULL), +(306, 310.958, 2.79175605687E7, 'V', 'methane', 0.999577, NULL, NULL, '2.1.9', NULL, 100.0, 4049.1, 'V', 'methane', NULL, NULL, NULL, '2.1.9', NULL), +(307, 310.958, 2.79175605687E7, 'V', 'water', 4.23E-4, NULL, NULL, '2.1.9', NULL, 100.0, 4049.1, 'V', 'water', 0.423, NULL, NULL, '2.1.9', NULL), +(308, 310.958, 6.23451506968E7, 'V', 'methane', 0.999592, NULL, NULL, '2.1.10', NULL, 100.0, 9042.4, 'V', 'methane', NULL, NULL, NULL, '2.1.10', NULL), +(309, 310.958, 6.23451506968E7, 'V', 'water', 4.08E-4, NULL, NULL, '2.1.10', NULL, 100.0, 9042.4, 'V', 'water', 0.408, NULL, NULL, '2.1.10', NULL), +(310, 310.958, 5.53628302829E7, 'V', 'methane', 0.999573, NULL, NULL, '2.1.11', NULL, 100.0, 8029.7, 'V', 'methane', NULL, NULL, NULL, '2.1.11', NULL), +(311, 310.958, 5.53628302829E7, 'V', 'water', 4.27E-4, NULL, NULL, '2.1.11', NULL, 100.0, 8029.7, 'V', 'water', 0.427, NULL, NULL, '2.1.11', NULL), +(312, 310.958, 4.85218523875E7, 'V', 'methane', 0.999577, NULL, NULL, '2.1.12', NULL, 100.0, 7037.5, 'V', 'methane', NULL, NULL, NULL, '2.1.12', NULL), +(313, 310.958, 4.85218523875E7, 'V', 'water', 4.23E-4, NULL, NULL, '2.1.12', NULL, 100.0, 7037.5, 'V', 'water', 0.423, NULL, NULL, '2.1.12', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(314, 344.318, 6.8154672945E7, 'V', 'methane', 0.998308, NULL, NULL, '2.1.13', NULL, 160.0, 9885.0, 'V', 'methane', NULL, NULL, NULL, '2.1.13', NULL), +(315, 344.318, 6.8154672945E7, 'V', 'water', 0.001692, NULL, NULL, '2.1.13', NULL, 160.0, 9885.0, 'V', 'water', 1.692, NULL, NULL, '2.1.13', NULL), +(316, 344.318, 4.17939485069E7, 'V', 'methane', 0.99811, NULL, NULL, '2.1.14', NULL, 160.0, 6061.7, 'V', 'methane', NULL, NULL, NULL, '2.1.14', NULL), +(317, 344.318, 4.17939485069E7, 'V', 'water', 0.00189, NULL, NULL, '2.1.14', NULL, 160.0, 6061.7, 'V', 'water', 1.89, NULL, NULL, '2.1.14', NULL), +(318, 344.318, 3.51522290888E7, 'V', 'methane', 0.997872, NULL, NULL, '2.1.15', NULL, 160.0, 5098.4, 'V', 'methane', NULL, NULL, NULL, '2.1.15', NULL), +(319, 344.318, 3.51522290888E7, 'V', 'water', 0.002128, NULL, NULL, '2.1.15', NULL, 160.0, 5098.4, 'V', 'water', 2.128, NULL, NULL, '2.1.15', NULL), +(320, 344.318, 2.82050719356E7, 'V', 'methane', 0.997699, NULL, NULL, '2.1.16', NULL, 160.0, 4090.8, 'V', 'methane', NULL, NULL, NULL, '2.1.16', NULL), +(321, 344.318, 2.82050719356E7, 'V', 'water', 0.002301, NULL, NULL, '2.1.16', NULL, 160.0, 4090.8, 'V', 'water', 2.301, NULL, NULL, '2.1.16', NULL), +(322, 344.318, 2.1063482635E7, 'V', 'methane', 0.997279, NULL, NULL, '2.1.17', NULL, 160.0, 3055.0, 'V', 'methane', NULL, NULL, NULL, '2.1.17', NULL), +(323, 344.318, 2.1063482635E7, 'V', 'water', 0.002721, NULL, NULL, '2.1.17', NULL, 160.0, 3055.0, 'V', 'water', 2.721, NULL, NULL, '2.1.17', NULL), +(324, 344.318, 1.43990105188E7, 'V', 'methane', 0.996606, NULL, NULL, '2.1.18', NULL, 160.0, 2088.4, 'V', 'methane', NULL, NULL, NULL, '2.1.18', NULL), +(325, 344.318, 1.43990105188E7, 'V', 'water', 0.003394, NULL, NULL, '2.1.18', NULL, 160.0, 2088.4, 'V', 'water', 3.394, NULL, NULL, '2.1.18', NULL), +(326, 344.318, 9645075.5673, 'V', 'methane', 0.995497, NULL, NULL, '2.1.19', NULL, 160.0, 1398.9, 'V', 'methane', NULL, NULL, NULL, '2.1.19', NULL), +(327, 344.318, 9645075.5673, 'V', 'water', 0.004503, NULL, NULL, '2.1.19', NULL, 160.0, 1398.9, 'V', 'water', 4.503, NULL, NULL, '2.1.19', NULL), +(328, 344.318, 6289397.3354, 'V', 'methane', 0.993583, NULL, NULL, '2.1.20', NULL, 160.0, 912.2, 'V', 'methane', NULL, NULL, NULL, '2.1.20', NULL), +(329, 344.318, 6289397.3354, 'V', 'water', 0.006417, NULL, NULL, '2.1.20', NULL, 160.0, 912.2, 'V', 'water', 6.417, NULL, NULL, '2.1.20', NULL), +(330, 344.318, 2672407.8132, 'V', 'methane', 0.98665, NULL, NULL, '2.1.21', NULL, 160.0, 387.6, 'V', 'methane', NULL, NULL, NULL, '2.1.21', NULL), +(331, 344.318, 2672407.8132, 'V', 'water', 0.01335, NULL, NULL, '2.1.21', NULL, 160.0, 387.6, 'V', 'water', 13.35, NULL, NULL, '2.1.21', NULL), +(332, 377.678, 2.79010131519E7, 'V', 'methane', 0.992877, NULL, NULL, '2.1.22', NULL, 220.0, 4046.7, 'V', 'methane', NULL, NULL, NULL, '2.1.22', NULL), +(333, 377.678, 2.79010131519E7, 'V', 'water', 0.007123, NULL, NULL, '2.1.22', NULL, 220.0, 4046.7, 'V', 'water', 7.123, NULL, NULL, '2.1.22', NULL), +(334, 377.678, 2.09228295922E7, 'V', 'methane', 0.991541, NULL, NULL, '2.1.23', NULL, 220.0, 3034.6, 'V', 'methane', NULL, NULL, NULL, '2.1.23', NULL), +(335, 377.678, 2.09228295922E7, 'V', 'water', 0.008459, NULL, NULL, '2.1.23', NULL, 220.0, 3034.6, 'V', 'water', 8.459, NULL, NULL, '2.1.23', NULL), +(336, 377.678, 1.3810198271E7, 'V', 'methane', 0.9888, NULL, NULL, '2.1.24', NULL, 220.0, 2003.0, 'V', 'methane', NULL, NULL, NULL, '2.1.24', NULL), +(337, 377.678, 1.3810198271E7, 'V', 'water', 0.0112, NULL, NULL, '2.1.24', NULL, 220.0, 2003.0, 'V', 'water', 11.2, NULL, NULL, '2.1.24', NULL), +(338, 377.678, 6590698.2163, 'V', 'methane', 0.97931, NULL, NULL, '2.1.25', NULL, 220.0, 955.9, 'V', 'methane', NULL, NULL, NULL, '2.1.25', NULL), +(339, 377.678, 6590698.2163, 'V', 'water', 0.02069, NULL, NULL, '2.1.25', NULL, 220.0, 955.9, 'V', 'water', 20.69, NULL, NULL, '2.1.25', NULL), +(340, 377.678, 6.83877157316E7, 'V', 'methane', 0.995278, NULL, NULL, '2.1.26', NULL, 220.0, 9918.8, 'V', 'methane', NULL, NULL, NULL, '2.1.26', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(341, 377.678, 6.83877157316E7, 'V', 'water', 0.004722, NULL, NULL, '2.1.26', NULL, 220.0, 9918.8, 'V', 'water', 4.722, NULL, NULL, '2.1.26', NULL), +(342, 377.678, 6.23313611828E7, 'V', 'methane', 0.99538, NULL, NULL, '2.1.27', NULL, 220.0, 9040.4, 'V', 'methane', NULL, NULL, NULL, '2.1.27', NULL), +(343, 377.678, 6.23313611828E7, 'V', 'water', 0.00462, NULL, NULL, '2.1.27', NULL, 220.0, 9040.4, 'V', 'water', 4.62, NULL, NULL, '2.1.27', NULL), +(344, 377.678, 5.47250652604E7, 'V', 'methane', 0.994762, NULL, NULL, '2.1.28', NULL, 220.0, 7937.2, 'V', 'methane', NULL, NULL, NULL, '2.1.28', NULL), +(345, 377.678, 5.47250652604E7, 'V', 'water', 0.005238, NULL, NULL, '2.1.28', NULL, 220.0, 7937.2, 'V', 'water', 5.238, NULL, NULL, '2.1.28', NULL), +(346, 377.678, 4.82605410972E7, 'V', 'methane', 0.994664, NULL, NULL, '2.1.29', NULL, 220.0, 6999.6, 'V', 'methane', NULL, NULL, NULL, '2.1.29', NULL), +(347, 377.678, 4.82605410972E7, 'V', 'water', 0.005336, NULL, NULL, '2.1.29', NULL, 220.0, 6999.6, 'V', 'water', 5.336, NULL, NULL, '2.1.29', NULL), +(348, 377.678, 4.17815379443E7, 'V', 'methane', 0.994212, NULL, NULL, '2.1.30', NULL, 220.0, 6059.9, 'V', 'methane', NULL, NULL, NULL, '2.1.30', NULL), +(349, 377.678, 4.17815379443E7, 'V', 'water', 0.005788, NULL, NULL, '2.1.30', NULL, 220.0, 6059.9, 'V', 'water', 5.788, NULL, NULL, '2.1.30', NULL), +(350, 377.678, 3.5411471952E7, 'V', 'methane', 0.993747, NULL, NULL, '2.1.31', NULL, 220.0, 5136.0, 'V', 'methane', NULL, NULL, NULL, '2.1.31', NULL), +(351, 377.678, 3.5411471952E7, 'V', 'water', 0.006253, NULL, NULL, '2.1.31', NULL, 220.0, 5136.0, 'V', 'water', 6.253, NULL, NULL, '2.1.31', NULL), +(352, 377.678, 6.22541399044E7, 'V', 'methane', 0.995118, NULL, NULL, '2.1.32', NULL, 220.0, 9029.2, 'V', 'methane', NULL, NULL, NULL, '2.1.32', NULL), +(353, 377.678, 6.22541399044E7, 'V', 'water', 0.004882, NULL, NULL, '2.1.32', NULL, 220.0, 9029.2, 'V', 'water', 4.882, NULL, NULL, '2.1.32', NULL), +(354, 377.678, 5.58799370579E7, 'V', 'methane', 0.995057, NULL, NULL, '2.1.33', NULL, 220.0, 8104.7, 'V', 'methane', NULL, NULL, NULL, '2.1.33', NULL), +(355, 377.678, 5.58799370579E7, 'V', 'water', 0.004943, NULL, NULL, '2.1.33', NULL, 220.0, 8104.7, 'V', 'water', 4.943, NULL, NULL, '2.1.33', NULL), +(356, 377.678, 9315506.1827, 'V', 'methane', 0.98455, NULL, NULL, '2.1.34', NULL, 220.0, 1351.1, 'V', 'methane', NULL, NULL, NULL, '2.1.34', NULL), +(357, 377.678, 9315506.1827, 'V', 'water', 0.01545, NULL, NULL, '2.1.34', NULL, 220.0, 1351.1, 'V', 'water', 15.45, NULL, NULL, '2.1.34', NULL), +(358, 377.678, 2986808.7324, 'V', 'methane', 0.95719, NULL, NULL, '2.1.35', NULL, 220.0, 433.2, 'V', 'methane', NULL, NULL, NULL, '2.1.35', NULL), +(359, 377.678, 2986808.7324, 'V', 'water', 0.04281, NULL, NULL, '2.1.35', NULL, 220.0, 433.2, 'V', 'water', 42.81, NULL, NULL, '2.1.35', NULL), +(360, 411.038, 6.88606960618E7, 'V', 'methane', 0.98794, NULL, NULL, '2.1.36', NULL, 280.0, 9987.4, 'V', 'methane', NULL, NULL, NULL, '2.1.36', NULL), +(361, 411.038, 6.88606960618E7, 'V', 'water', 0.01206, NULL, NULL, '2.1.36', NULL, 280.0, 9987.4, 'V', 'water', 12.06, NULL, NULL, '2.1.36', NULL), +(362, 411.038, 6.2204497654E7, 'V', 'methane', 0.98747, NULL, NULL, '2.1.37', NULL, 280.0, 9022.0, 'V', 'methane', NULL, NULL, NULL, '2.1.37', NULL), +(363, 411.038, 6.2204497654E7, 'V', 'water', 0.01253, NULL, NULL, '2.1.37', NULL, 280.0, 9022.0, 'V', 'water', 12.53, NULL, NULL, '2.1.37', NULL), +(364, 411.038, 5.54600463566E7, 'V', 'methane', 0.98655, NULL, NULL, '2.1.38', NULL, 280.0, 8043.8, 'V', 'methane', NULL, NULL, NULL, '2.1.38', NULL), +(365, 411.038, 5.54600463566E7, 'V', 'water', 0.01345, NULL, NULL, '2.1.38', NULL, 280.0, 8043.8, 'V', 'water', 13.45, NULL, NULL, '2.1.38', NULL), +(366, 411.038, 4.83350044728E7, 'V', 'methane', 0.98563, NULL, NULL, '2.1.39', NULL, 280.0, 7010.4, 'V', 'methane', NULL, NULL, NULL, '2.1.39', NULL), +(367, 411.038, 4.83350044728E7, 'V', 'water', 0.01437, NULL, NULL, '2.1.39', NULL, 280.0, 7010.4, 'V', 'water', 14.37, NULL, NULL, '2.1.39', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(368, 411.038, 4.21069704747E7, 'V', 'methane', 0.98455, NULL, NULL, '2.1.40', NULL, 280.0, 6107.1, 'V', 'methane', NULL, NULL, NULL, '2.1.40', NULL), +(369, 411.038, 4.21069704747E7, 'V', 'water', 0.01545, NULL, NULL, '2.1.40', NULL, 280.0, 6107.1, 'V', 'water', 15.45, NULL, NULL, '2.1.40', NULL), +(370, 411.038, 3.55865987798E7, 'V', 'methane', 0.98329, NULL, NULL, '2.1.41', NULL, 280.0, 5161.4, 'V', 'methane', NULL, NULL, NULL, '2.1.41', NULL), +(371, 411.038, 3.55865987798E7, 'V', 'water', 0.01671, NULL, NULL, '2.1.41', NULL, 280.0, 5161.4, 'V', 'water', 16.71, NULL, NULL, '2.1.41', NULL), +(372, 411.038, 2.81616349665E7, 'V', 'methane', 0.98102, NULL, NULL, '2.1.42', NULL, 280.0, 4084.5, 'V', 'methane', NULL, NULL, NULL, '2.1.42', NULL), +(373, 411.038, 2.81616349665E7, 'V', 'water', 0.01898, NULL, NULL, '2.1.42', NULL, 280.0, 4084.5, 'V', 'water', 18.98, NULL, NULL, '2.1.42', NULL), +(374, 411.038, 1.40659937557E7, 'V', 'methane', 0.96848, NULL, NULL, '2.1.43', NULL, 280.0, 2040.1, 'V', 'methane', NULL, NULL, NULL, '2.1.43', NULL), +(375, 411.038, 1.40659937557E7, 'V', 'water', 0.03152, NULL, NULL, '2.1.43', NULL, 280.0, 2040.1, 'V', 'water', 31.52, NULL, NULL, '2.1.43', NULL), +(376, 411.038, 9869844.6455, 'V', 'methane', 0.95855, NULL, NULL, '2.1.44', NULL, 280.0, 1431.5, 'V', 'methane', NULL, NULL, NULL, '2.1.44', NULL), +(377, 411.038, 9869844.6455, 'V', 'water', 0.04145, NULL, NULL, '2.1.44', NULL, 280.0, 1431.5, 'V', 'water', 41.45, NULL, NULL, '2.1.44', NULL), +(378, 411.038, 6545882.2958, 'V', 'methane', 0.94101, NULL, NULL, '2.1.45', NULL, 280.0, 949.4, 'V', 'methane', NULL, NULL, NULL, '2.1.45', NULL), +(379, 411.038, 6545882.2958, 'V', 'water', 0.05899, NULL, NULL, '2.1.45', NULL, 280.0, 949.4, 'V', 'water', 58.99, NULL, NULL, '2.1.45', NULL), +(380, 411.038, 3406009.958, 'V', 'methane', 0.88917, NULL, NULL, '2.1.46', NULL, 280.0, 494.0, 'V', 'methane', NULL, NULL, NULL, '2.1.46', NULL), +(381, 411.038, 3406009.958, 'V', 'water', 0.11083, NULL, NULL, '2.1.46', NULL, 280.0, 494.0, 'V', 'water', 110.83, NULL, NULL, '2.1.46', NULL), +(382, 444.398, 3.45778958307E7, 'V', 'methane', 0.96165, NULL, NULL, '2.1.47', NULL, 340.0, 5015.1, 'V', 'methane', NULL, NULL, NULL, '2.1.47', NULL), +(383, 444.398, 3.45778958307E7, 'V', 'water', 0.03835, NULL, NULL, '2.1.47', NULL, 340.0, 5015.1, 'V', 'water', 38.35, NULL, NULL, '2.1.47', NULL), +(384, 444.398, 2.81595665394E7, 'V', 'methane', 0.95616, NULL, NULL, '2.1.48', NULL, 340.0, 4084.2, 'V', 'methane', NULL, NULL, NULL, '2.1.48', NULL), +(385, 444.398, 2.81595665394E7, 'V', 'water', 0.04384, NULL, NULL, '2.1.48', NULL, 340.0, 4084.2, 'V', 'water', 43.84, NULL, NULL, '2.1.48', NULL), +(386, 444.398, 2.1180693504E7, 'V', 'methane', 0.94638, NULL, NULL, '2.1.49', NULL, 340.0, 3072.0, 'V', 'methane', NULL, NULL, NULL, '2.1.49', NULL), +(387, 444.398, 2.1180693504E7, 'V', 'water', 0.05362, NULL, NULL, '2.1.49', NULL, 340.0, 3072.0, 'V', 'water', 53.62, NULL, NULL, '2.1.49', NULL), +(388, 444.398, 1.42369837293E7, 'V', 'methane', 0.92894, NULL, NULL, '2.1.50', NULL, 340.0, 2064.9, 'V', 'methane', NULL, NULL, NULL, '2.1.50', NULL), +(389, 444.398, 1.42369837293E7, 'V', 'water', 0.07106, NULL, NULL, '2.1.50', NULL, 340.0, 2064.9, 'V', 'water', 71.06, NULL, NULL, '2.1.50', NULL), +(390, 444.398, 8744620.3031, 'V', 'methane', 0.89065, NULL, NULL, '2.1.51', NULL, 340.0, 1268.3, 'V', 'methane', NULL, NULL, NULL, '2.1.51', NULL), +(391, 444.398, 8744620.3031, 'V', 'water', 0.10935, NULL, NULL, '2.1.51', NULL, 340.0, 1268.3, 'V', 'water', 109.35, NULL, NULL, '2.1.51', NULL), +(392, 444.398, 3441862.6944, 'V', 'methane', 0.74666, NULL, NULL, '2.1.52', NULL, 340.0, 499.2, 'V', 'methane', NULL, NULL, NULL, '2.1.52', NULL), +(393, 444.398, 3441862.6944, 'V', 'water', 0.25334, NULL, NULL, '2.1.52', NULL, 340.0, 499.2, 'V', 'water', 253.34, NULL, NULL, '2.1.52', NULL), +(394, 444.398, 6.88751750515E7, 'V', 'methane', 0.97384, NULL, NULL, '2.1.53', NULL, 340.0, 9989.5, 'V', 'methane', NULL, NULL, NULL, '2.1.53', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(395, 444.398, 6.88751750515E7, 'V', 'water', 0.02616, NULL, NULL, '2.1.53', NULL, 340.0, 9989.5, 'V', 'water', 26.16, NULL, NULL, '2.1.53', NULL), +(396, 444.398, 6.65854262518E7, 'V', 'methane', 0.97235, NULL, NULL, '2.1.54', NULL, 340.0, 9657.4, 'V', 'methane', NULL, NULL, NULL, '2.1.54', NULL), +(397, 444.398, 6.65854262518E7, 'V', 'water', 0.02765, NULL, NULL, '2.1.54', NULL, 340.0, 9657.4, 'V', 'water', 27.65, NULL, NULL, '2.1.54', NULL), +(398, 444.398, 5.57572103833E7, 'V', 'methane', 0.97029, NULL, NULL, '2.1.55', NULL, 340.0, 8086.9, 'V', 'methane', NULL, NULL, NULL, '2.1.55', NULL), +(399, 444.398, 5.57572103833E7, 'V', 'water', 0.02971, NULL, NULL, '2.1.55', NULL, 340.0, 8086.9, 'V', 'water', 29.71, NULL, NULL, '2.1.55', NULL), +(400, 444.398, 4.87645478339E7, 'V', 'methane', 0.96846, NULL, NULL, '2.1.56', NULL, 340.0, 7072.7, 'V', 'methane', NULL, NULL, NULL, '2.1.56', NULL), +(401, 444.398, 4.87645478339E7, 'V', 'water', 0.03154, NULL, NULL, '2.1.56', NULL, 340.0, 7072.7, 'V', 'water', 31.54, NULL, NULL, '2.1.56', NULL), +(402, 444.398, 4.1871859261E7, 'V', 'methane', 0.96543, NULL, NULL, '2.1.57', NULL, 340.0, 6073.0, 'V', 'methane', NULL, NULL, NULL, '2.1.57', NULL), +(403, 444.398, 4.1871859261E7, 'V', 'water', 0.03457, NULL, NULL, '2.1.57', NULL, 340.0, 6073.0, 'V', 'water', 34.57, NULL, NULL, '2.1.57', NULL), +(404, 477.758, 3.48012859575E7, 'V', 'methane', 0.92039, NULL, NULL, '2.1.58', NULL, 400.0, 5047.5, 'V', 'methane', NULL, NULL, NULL, '2.1.58', NULL), +(405, 477.758, 3.48012859575E7, 'V', 'water', 0.07961, NULL, NULL, '2.1.58', NULL, 400.0, 5047.5, 'V', 'water', 79.61, NULL, NULL, '2.1.58', NULL), +(406, 477.758, 2.07911397335E7, 'V', 'methane', 0.8864, NULL, NULL, '2.1.59', NULL, 400.0, 3015.5, 'V', 'methane', NULL, NULL, NULL, '2.1.59', NULL), +(407, 477.758, 2.07911397335E7, 'V', 'water', 0.1136, NULL, NULL, '2.1.59', NULL, 400.0, 3015.5, 'V', 'water', 113.6, NULL, NULL, '2.1.59', NULL), +(408, 477.758, 1.40453094847E7, 'V', 'methane', 0.84582, NULL, NULL, '2.1.60', NULL, 400.0, 2037.1, 'V', 'methane', NULL, NULL, NULL, '2.1.60', NULL), +(409, 477.758, 1.40453094847E7, 'V', 'water', 0.15418, NULL, NULL, '2.1.60', NULL, 400.0, 2037.1, 'V', 'water', 154.18, NULL, NULL, '2.1.60', NULL), +(410, 477.758, 8825978.4357, 'V', 'methane', 0.77173, NULL, NULL, '2.1.61', NULL, 400.0, 1280.1, 'V', 'methane', NULL, NULL, NULL, '2.1.61', NULL), +(411, 477.758, 8825978.4357, 'V', 'water', 0.22827, NULL, NULL, '2.1.61', NULL, 400.0, 1280.1, 'V', 'water', 228.27, NULL, NULL, '2.1.61', NULL), +(412, 477.758, 6413502.9614, 'V', 'methane', 0.69733, NULL, NULL, '2.1.62', NULL, 400.0, 930.2, 'V', 'methane', NULL, NULL, NULL, '2.1.62', NULL), +(413, 477.758, 6413502.9614, 'V', 'water', 0.30267, NULL, NULL, '2.1.62', NULL, 400.0, 930.2, 'V', 'water', 302.67, NULL, NULL, '2.1.62', NULL), +(414, 477.758, 3363262.4646, 'V', 'methane', 0.44443, NULL, NULL, '2.1.63', NULL, 400.0, 487.8, 'V', 'methane', NULL, NULL, NULL, '2.1.63', NULL), +(415, 477.758, 3363262.4646, 'V', 'water', 0.55557, NULL, NULL, '2.1.63', NULL, 400.0, 487.8, 'V', 'water', 555.57, NULL, NULL, '2.1.63', NULL), +(416, 477.758, 6.8733832533E7, 'V', 'methane', 0.94672, NULL, NULL, '2.1.64', NULL, 400.0, 9969.0, 'V', 'methane', NULL, NULL, NULL, '2.1.64', NULL), +(417, 477.758, 6.8733832533E7, 'V', 'water', 0.05328, NULL, NULL, '2.1.64', NULL, 400.0, 9969.0, 'V', 'water', 53.28, NULL, NULL, '2.1.64', NULL), +(418, 477.758, 6.25802619105E7, 'V', 'methane', 0.9437, NULL, NULL, '2.1.65', NULL, 400.0, 9076.5, 'V', 'methane', NULL, NULL, NULL, '2.1.65', NULL), +(419, 477.758, 6.25802619105E7, 'V', 'water', 0.0563, NULL, NULL, '2.1.65', NULL, 400.0, 9076.5, 'V', 'water', 56.3, NULL, NULL, '2.1.65', NULL), +(420, 477.758, 5.56744732993E7, 'V', 'methane', 0.93918, NULL, NULL, '2.1.66', NULL, 400.0, 8074.9, 'V', 'methane', NULL, NULL, NULL, '2.1.66', NULL), +(421, 477.758, 5.56744732993E7, 'V', 'water', 0.06082, NULL, NULL, '2.1.66', NULL, 400.0, 8074.9, 'V', 'water', 60.82, NULL, NULL, '2.1.66', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(422, 477.758, 4.86638843817E7, 'V', 'methane', 0.93481, NULL, NULL, '2.1.67', NULL, 400.0, 7058.1, 'V', 'methane', NULL, NULL, NULL, '2.1.67', NULL), +(423, 477.758, 4.86638843817E7, 'V', 'water', 0.06519, NULL, NULL, '2.1.67', NULL, 400.0, 7058.1, 'V', 'water', 65.19, NULL, NULL, '2.1.67', NULL), +(424, 477.758, 4.14319737644E7, 'V', 'methane', 0.92976, NULL, NULL, '2.1.68', NULL, 400.0, 6009.2, 'V', 'methane', NULL, NULL, NULL, '2.1.68', NULL), +(425, 477.758, 4.14319737644E7, 'V', 'water', 0.07024, NULL, NULL, '2.1.68', NULL, 400.0, 6009.2, 'V', 'water', 70.24, NULL, NULL, '2.1.68', NULL), +(426, 511.118, 5.39431998166E7, 'V', 'methane', 0.88811, NULL, NULL, '2.1.69', NULL, 460.0, 7823.8, 'V', 'methane', NULL, NULL, NULL, '2.1.69', NULL), +(427, 511.118, 5.39431998166E7, 'V', 'water', 0.11189, NULL, NULL, '2.1.69', NULL, 460.0, 7823.8, 'V', 'water', 111.89, NULL, NULL, '2.1.69', NULL), +(428, 511.118, 6.24995932536E7, 'V', 'methane', 0.89359, NULL, NULL, '2.1.70', NULL, 460.0, 9064.8, 'V', 'methane', NULL, NULL, NULL, '2.1.70', NULL), +(429, 511.118, 6.24995932536E7, 'V', 'water', 0.10641, NULL, NULL, '2.1.70', NULL, 460.0, 9064.8, 'V', 'water', 106.41, NULL, NULL, '2.1.70', NULL), +(430, 511.118, 4.8532194523E7, 'V', 'methane', 0.87609, NULL, NULL, '2.1.71', NULL, 460.0, 7039.0, 'V', 'methane', NULL, NULL, NULL, '2.1.71', NULL), +(431, 511.118, 4.8532194523E7, 'V', 'water', 0.12391, NULL, NULL, '2.1.71', NULL, 460.0, 7039.0, 'V', 'water', 123.91, NULL, NULL, '2.1.71', NULL), +(432, 511.118, 4.16932850547E7, 'V', 'methane', 0.86612, NULL, NULL, '2.1.72', NULL, 460.0, 6047.1, 'V', 'methane', NULL, NULL, NULL, '2.1.72', NULL), +(433, 511.118, 4.16932850547E7, 'V', 'water', 0.13388, NULL, NULL, '2.1.72', NULL, 460.0, 6047.1, 'V', 'water', 133.88, NULL, NULL, '2.1.72', NULL), +(434, 511.118, 3.56031461966E7, 'V', 'methane', 0.85111, NULL, NULL, '2.1.73', NULL, 460.0, 5163.8, 'V', 'methane', NULL, NULL, NULL, '2.1.73', NULL), +(435, 511.118, 3.56031461966E7, 'V', 'water', 0.14889, NULL, NULL, '2.1.73', NULL, 460.0, 5163.8, 'V', 'water', 148.89, NULL, NULL, '2.1.73', NULL), +(436, 511.118, 2.76852072578E7, 'V', 'methane', 0.82435, NULL, NULL, '2.1.74', NULL, 460.0, 4015.4, 'V', 'methane', NULL, NULL, NULL, '2.1.74', NULL), +(437, 511.118, 2.76852072578E7, 'V', 'water', 0.17565, NULL, NULL, '2.1.74', NULL, 460.0, 4015.4, 'V', 'water', 175.65, NULL, NULL, '2.1.74', NULL), +(438, 511.118, 2.10062561519E7, 'V', 'methane', 0.78713, NULL, NULL, '2.1.75', NULL, 460.0, 3046.7, 'V', 'methane', NULL, NULL, NULL, '2.1.75', NULL), +(439, 511.118, 2.10062561519E7, 'V', 'water', 0.21287, NULL, NULL, '2.1.75', NULL, 460.0, 3046.7, 'V', 'water', 212.87, NULL, NULL, '2.1.75', NULL), +(440, 511.118, 1.44390001094E7, 'V', 'methane', 0.7149, NULL, NULL, '2.1.76', NULL, 460.0, 2094.2, 'V', 'methane', NULL, NULL, NULL, '2.1.76', NULL), +(441, 511.118, 1.44390001094E7, 'V', 'water', 0.2851, NULL, NULL, '2.1.76', NULL, 460.0, 2094.2, 'V', 'water', 285.1, NULL, NULL, '2.1.76', NULL), +(442, 511.118, 9509938.3301, 'V', 'methane', 0.59967, NULL, NULL, '2.1.77', NULL, 460.0, 1379.3, 'V', 'methane', NULL, NULL, NULL, '2.1.77', NULL), +(443, 511.118, 9509938.3301, 'V', 'water', 0.40033, NULL, NULL, '2.1.77', NULL, 460.0, 1379.3, 'V', 'water', 400.33, NULL, NULL, '2.1.77', NULL), +(444, 511.118, 5317926.0741, 'V', 'methane', 0.34541, NULL, NULL, '2.1.78', NULL, 460.0, 771.3, 'V', 'methane', NULL, NULL, NULL, '2.1.78', NULL), +(445, 511.118, 5317926.0741, 'V', 'water', 0.65459, NULL, NULL, '2.1.78', NULL, 460.0, 771.3, 'V', 'water', 654.59, NULL, NULL, '2.1.78', NULL), +(446, 298.15, 2500000.0, 'T', 'methane', 0.99746, NULL, 5.99E-4, '3.1.1', NULL, 25.0, 2.5, 'T', 'methane', NULL, NULL, 5.99E-4, '3.1.1', 'Reference 3:temperature in Celsius,pressure in MPa and compositions in molar fraction'), +(447, 298.15, 2500000.0, 'T', 'water', 0.00254, NULL, 0.999401, '3.1.1', NULL, 25.0, 2.5, 'T', 'water', 0.00254, NULL, NULL, '3.1.1', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(448, 298.15, 5000000.0, 'T', 'methane', 0.99854, NULL, 0.00112, '3.1.2', NULL, 25.0, 5.0, 'T', 'methane', NULL, NULL, 0.00112, '3.1.2', NULL), +(449, 298.15, 5000000.0, 'T', 'water', 0.00146, NULL, 0.99888, '3.1.2', NULL, 25.0, 5.0, 'T', 'water', 0.00146, NULL, NULL, '3.1.2', NULL), +(450, 298.15, 7500000.0, 'T', 'methane', 0.999066, NULL, 0.00146, '3.1.3', NULL, 25.0, 7.5, 'T', 'methane', NULL, NULL, 0.00146, '3.1.3', NULL), +(451, 298.15, 7500000.0, 'T', 'water', 9.34E-4, NULL, 0.99854, '3.1.3', NULL, 25.0, 7.5, 'T', 'water', 9.34E-4, NULL, NULL, '3.1.3', NULL), +(452, 298.15, 1.0E7, 'T', 'methane', 0.99918, NULL, 0.0019, '3.1.4', NULL, 25.0, 10.0, 'T', 'methane', NULL, NULL, 0.0019, '3.1.4', NULL), +(453, 298.15, 1.0E7, 'T', 'water', 8.2E-4, NULL, 0.9981, '3.1.4', NULL, 25.0, 10.0, 'T', 'water', 8.2E-4, NULL, NULL, '3.1.4', NULL), +(454, 298.15, 1.25E7, 'T', 'methane', 0.999416, NULL, 0.00221, '3.1.5', NULL, 25.0, 12.5, 'T', 'methane', NULL, NULL, 0.00221, '3.1.5', NULL), +(455, 298.15, 1.25E7, 'T', 'water', 5.84E-4, NULL, 0.99779, '3.1.5', NULL, 25.0, 12.5, 'T', 'water', 5.84E-4, NULL, NULL, '3.1.5', NULL), +(456, 313.15, 2500000.0, 'T', 'methane', 0.99697, NULL, 4.9E-4, '3.1.6', NULL, 40.0, 2.5, 'T', 'methane', NULL, NULL, 4.9E-4, '3.1.6', NULL), +(457, 313.15, 2500000.0, 'T', 'water', 0.00303, NULL, 0.99951, '3.1.6', NULL, 40.0, 2.5, 'T', 'water', 0.00303, NULL, NULL, '3.1.6', NULL), +(458, 313.15, 5000000.0, 'T', 'methane', 0.99813, NULL, 9.29E-4, '3.1.7', NULL, 40.0, 5.0, 'T', 'methane', NULL, NULL, 9.29E-4, '3.1.7', NULL), +(459, 313.15, 5000000.0, 'T', 'water', 0.00187, NULL, 0.999071, '3.1.7', NULL, 40.0, 5.0, 'T', 'water', 0.00187, NULL, NULL, '3.1.7', NULL), +(460, 313.15, 7500000.0, 'T', 'methane', 0.99866, NULL, 0.00127, '3.1.8', NULL, 40.0, 7.5, 'T', 'methane', NULL, NULL, 0.00127, '3.1.8', NULL), +(461, 313.15, 7500000.0, 'T', 'water', 0.00134, NULL, 0.99873, '3.1.8', NULL, 40.0, 7.5, 'T', 'water', 0.00134, NULL, NULL, '3.1.8', NULL), +(462, 313.15, 1.0E7, 'T', 'methane', 0.99888, NULL, 0.00164, '3.1.9', NULL, 40.0, 10.0, 'T', 'methane', NULL, NULL, 0.00164, '3.1.9', NULL), +(463, 313.15, 1.0E7, 'T', 'water', 0.00112, NULL, 0.99836, '3.1.9', NULL, 40.0, 10.0, 'T', 'water', 0.00112, NULL, NULL, '3.1.9', NULL), +(464, 313.15, 1.25E7, 'T', 'methane', 0.999074, NULL, 0.00187, '3.1.10', NULL, 40.0, 12.5, 'T', 'methane', NULL, NULL, 0.00187, '3.1.10', NULL), +(465, 313.15, 1.25E7, 'T', 'water', 9.26E-4, NULL, 0.99813, '3.1.10', NULL, 40.0, 12.5, 'T', 'water', 9.26E-4, NULL, NULL, '3.1.10', NULL), +(466, 338.15, 2500000.0, 'T', 'methane', 0.99017, NULL, 4.05E-4, '3.1.11', NULL, 65.0, 2.5, 'T', 'methane', NULL, NULL, 4.05E-4, '3.1.11', NULL), +(467, 338.15, 2500000.0, 'T', 'water', 0.00983, NULL, 0.999595, '3.1.11', NULL, 65.0, 2.5, 'T', 'water', 0.00983, NULL, NULL, '3.1.11', NULL), +(468, 338.15, 5000000.0, 'T', 'methane', 0.99391, NULL, 7.71E-4, '3.1.12', NULL, 65.0, 5.0, 'T', 'methane', NULL, NULL, 7.71E-4, '3.1.12', NULL), +(469, 338.15, 5000000.0, 'T', 'water', 0.00609, NULL, 0.999229, '3.1.12', NULL, 65.0, 5.0, 'T', 'water', 0.00609, NULL, NULL, '3.1.12', NULL), +(470, 338.15, 7500000.0, 'T', 'methane', 0.99552, NULL, 0.0011, '3.1.13', NULL, 65.0, 7.5, 'T', 'methane', NULL, NULL, 0.0011, '3.1.13', NULL), +(471, 338.15, 7500000.0, 'T', 'water', 0.00448, NULL, 0.9989, '3.1.13', NULL, 65.0, 7.5, 'T', 'water', 0.00448, NULL, NULL, '3.1.13', NULL), +(472, 338.15, 1.0E7, 'T', 'methane', 0.99652, NULL, 0.00136, '3.1.14', NULL, 65.0, 10.0, 'T', 'methane', NULL, NULL, 0.00136, '3.1.14', NULL), +(473, 338.15, 1.0E7, 'T', 'water', 0.00348, NULL, 0.99864, '3.1.14', NULL, 65.0, 10.0, 'T', 'water', 0.00348, NULL, NULL, '3.1.14', NULL), +(474, 338.15, 1.25E7, 'T', 'methane', 0.99702, NULL, 0.00162, '3.1.15', NULL, 65.0, 12.5, 'T', 'methane', NULL, NULL, 0.00162, '3.1.15', NULL), +(475, 338.15, 1.25E7, 'T', 'water', 0.00298, NULL, 0.99838, '3.1.15', NULL, 65.0, 12.5, 'T', 'water', 0.00298, NULL, NULL, '3.1.15', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(476, 298.15, 2353779.75, 'T', 'methane', 0.998517, NULL, NULL, '4.1.1', NULL, 25.0, 23.23, 'T', 'methane', NULL, NULL, NULL, '4.1.1', 'Reference 4: temperature in Celsius, pressure in atm and compositions in mole fractions (Y *10^3)'), +(477, 298.15, 2353779.75, 'T', 'water', 0.001483, NULL, NULL, '4.1.1', NULL, 25.0, 23.23, 'T', 'water', 0.001483, NULL, NULL, '4.1.1', NULL), +(478, 298.15, 3050895.75, 'T', 'methane', 0.998825, NULL, NULL, '4.1.2', NULL, 25.0, 30.11, 'T', 'methane', NULL, NULL, NULL, '4.1.2', NULL), +(479, 298.15, 3050895.75, 'T', 'water', 0.001175, NULL, NULL, '4.1.2', NULL, 25.0, 30.11, 'T', 'water', 0.001175, NULL, NULL, '4.1.2', NULL), +(480, 298.15, 4055026.5, 'T', 'methane', 0.999085, NULL, NULL, '4.1.3', NULL, 25.0, 40.02, 'T', 'methane', NULL, NULL, NULL, '4.1.3', NULL), +(481, 298.15, 4055026.5, 'T', 'water', 9.15E-4, NULL, NULL, '4.1.3', NULL, 25.0, 40.02, 'T', 'water', 9.15E-4, NULL, NULL, '4.1.3', NULL), +(482, 323.15, 3014418.75, 'T', 'methane', 0.995526, NULL, NULL, '4.1.4', NULL, 50.0, 29.75, 'T', 'methane', NULL, NULL, NULL, '4.1.4', NULL), +(483, 323.15, 3014418.75, 'T', 'water', 0.004474, NULL, NULL, '4.1.4', NULL, 50.0, 29.75, 'T', 'water', 0.004474, NULL, NULL, '4.1.4', NULL), +(484, 323.15, 4838268.75, 'T', 'methane', 0.997079, NULL, NULL, '4.1.5', NULL, 50.0, 47.75, 'T', 'methane', NULL, NULL, NULL, '4.1.5', NULL), +(485, 323.15, 4838268.75, 'T', 'water', 0.002921, NULL, NULL, '4.1.5', NULL, 50.0, 47.75, 'T', 'water', 0.002921, NULL, NULL, '4.1.5', NULL), +(486, 323.15, 6817146.0, 'T', 'methane', 0.997815, NULL, NULL, '4.1.6', NULL, 50.0, 67.28, 'T', 'methane', NULL, NULL, NULL, '4.1.6', NULL), +(487, 323.15, 6817146.0, 'T', 'water', 0.002185, NULL, NULL, '4.1.6', NULL, 50.0, 67.28, 'T', 'water', 0.002185, NULL, NULL, '4.1.6', NULL), +(488, 348.15, 3120810.0, 'T', 'methane', 0.98665, NULL, NULL, '4.1.7', NULL, 75.0, 30.8, 'T', 'methane', NULL, NULL, NULL, '4.1.7', NULL), +(489, 348.15, 3120810.0, 'T', 'water', 0.01335, NULL, NULL, '4.1.7', NULL, 75.0, 30.8, 'T', 'water', 0.01335, NULL, NULL, '4.1.7', NULL), +(490, 348.15, 5472563.25, 'T', 'methane', 0.99197, NULL, NULL, '4.1.8', NULL, 75.0, 54.01, 'T', 'methane', NULL, NULL, NULL, '4.1.8', NULL), +(491, 348.15, 5472563.25, 'T', 'water', 0.00803, NULL, NULL, '4.1.8', NULL, 75.0, 54.01, 'T', 'water', 0.00803, NULL, NULL, '4.1.8', NULL), +(492, 348.15, 6726966.75, 'T', 'methane', 0.99329, NULL, NULL, '4.1.9', NULL, 75.0, 66.39, 'T', 'methane', NULL, NULL, NULL, '4.1.9', NULL), +(493, 348.15, 6726966.75, 'T', 'water', 0.00671, NULL, NULL, '4.1.9', NULL, 75.0, 66.39, 'T', 'water', 0.00671, NULL, NULL, '4.1.9', NULL), +(494, 373.15, 5741074.5, 'T', 'methane', 0.98008, NULL, NULL, '4.1.10', NULL, 100.0, 56.66, 'T', 'methane', NULL, NULL, NULL, '4.1.10', NULL), +(495, 373.15, 5741074.5, 'T', 'water', 0.01992, NULL, NULL, '4.1.10', NULL, 100.0, 56.66, 'T', 'water', 0.01992, NULL, NULL, '4.1.10', NULL), +(496, 373.15, 7189008.75, 'T', 'methane', 0.98357, NULL, NULL, '4.1.11', NULL, 100.0, 70.95, 'T', 'methane', NULL, NULL, NULL, '4.1.11', NULL), +(497, 373.15, 7189008.75, 'T', 'water', 0.01643, NULL, NULL, '4.1.11', NULL, 100.0, 70.95, 'T', 'water', 0.01643, NULL, NULL, '4.1.11', NULL), +(498, 373.15, 9347231.25, 'T', 'methane', 0.98691, NULL, NULL, '4.1.12', NULL, 100.0, 92.25, 'T', 'methane', NULL, NULL, NULL, '4.1.12', NULL), +(499, 373.15, 9347231.25, 'T', 'water', 0.01309, NULL, NULL, '4.1.12', NULL, 100.0, 92.25, 'T', 'water', 0.01309, NULL, NULL, '4.1.12', NULL), +(500, 298.15, 3000000.0, 'T', 'methane', 0.998817777777778, NULL, 6.804E-4, '5.1.1', NULL, 298.15, 3.0, 'T', 'methane', NULL, NULL, 0.0378, '5.1.1', 'Reference 5: temperature in K, pressure in Mpa, Y in (mg of H2O/g of CH4), L2 in mol of CH4/1000 g of soln'), +(501, 298.15, 3000000.0, 'T', 'water', 0.00118222222222222, NULL, 0.9993196, '5.2.1', NULL, 298.15, 3.0, 'T', 'water', 1.33, NULL, NULL, '5.2.1', NULL), +(502, 298.15, 5000000.0, 'T', 'methane', 0.999258666666667, NULL, 0.00108, '5.1.2', NULL, 298.15, 5.0, 'T', 'methane', NULL, NULL, 0.06, '5.1.2', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(503, 298.15, 5000000.0, 'T', 'water', 7.41333333333333E-4, NULL, 0.99892, '5.2.2', NULL, 298.15, 5.0, 'T', 'water', 0.834, NULL, NULL, '5.2.2', NULL), +(504, 298.15, 8000000.0, 'T', 'methane', 0.999569777777778, NULL, 0.0016218, '5.1.3', NULL, 298.15, 8.0, 'T', 'methane', NULL, NULL, 0.0901, '5.1.3', NULL), +(506, 323.15, 3000000.0, 'T', 'methane', 0.99552, NULL, 5.094E-4, '5.1.4', NULL, 323.15, 3.0, 'T', 'methane', NULL, NULL, 0.0283, '5.1.4', NULL), +(507, 323.15, 3000000.0, 'T', 'water', 0.00448, NULL, 0.9994906, '5.2.4', NULL, 323.15, 3.0, 'T', 'water', 5.04, NULL, NULL, '5.2.4', NULL), +(508, 323.15, 5000000.0, 'T', 'methane', 0.997208888888889, NULL, 7.92E-4, '5.1.5', NULL, 323.15, 5.0, 'T', 'methane', NULL, NULL, 0.044, '5.1.5', NULL), +(509, 323.15, 5000000.0, 'T', 'water', 0.00279111111111111, NULL, 0.999208, '5.2.5', NULL, 323.15, 5.0, 'T', 'water', 3.14, NULL, NULL, '5.2.5', NULL), +(510, 323.15, 8000000.0, 'T', 'methane', 0.997893333333333, NULL, 0.0012096, '5.1.6', NULL, 323.15, 8.0, 'T', 'methane', NULL, NULL, 0.0672, '5.1.6', NULL), +(511, 323.15, 8000000.0, 'T', 'water', 0.00210666666666667, NULL, 0.9987904, '5.2.6', NULL, 323.15, 8.0, 'T', 'water', 2.37, NULL, NULL, '5.2.6', NULL), +(612, 274.29, 2532000.0, 'T', 'methane', NULL, NULL, 9.6E-4, '7.1.1', NULL, 274.29, 25.32, 'T', 'methane', NULL, NULL, 9.6E-4, '7.1.1', 'Reference 7: temp in K, pressure in bar, solubility in mole-fraction'), +(613, 274.19, 2481000.0, 'T', 'methane', NULL, NULL, 9.66E-4, '7.1.2', NULL, 274.19, 24.81, 'T', 'methane', NULL, NULL, 9.66E-4, '7.1.2', NULL), +(614, 274.29, 2515000.0, 'T', 'methane', NULL, NULL, 9.78E-4, '7.1.3', NULL, 274.29, 25.15, 'T', 'methane', NULL, NULL, 9.78E-4, '7.1.3', NULL), +(615, 274.28, 1765000.0, 'T', 'methane', NULL, NULL, 7.35E-4, '7.1.4', NULL, 274.28, 17.65, 'T', 'methane', NULL, NULL, 7.35E-4, '7.1.4', NULL), +(616, 274.38, 2806000.0, 'T', 'methane', NULL, NULL, 0.001142, '7.1.5', NULL, 274.38, 28.06, 'T', 'methane', NULL, NULL, 0.001142, '7.1.5', NULL), +(617, 274.4, 567000.0, 'T', 'methane', NULL, NULL, 2.58E-4, '7.1.6', NULL, 274.4, 5.67, 'T', 'methane', NULL, NULL, 2.58E-4, '7.1.6', NULL), +(618, 274.48, 1005000.0, 'T', 'methane', NULL, NULL, 3.99E-4, '7.1.7', NULL, 274.48, 10.05, 'T', 'methane', NULL, NULL, 3.99E-4, '7.1.7', NULL), +(619, 274.48, 1505000.0, 'T', 'methane', NULL, NULL, 5.92E-4, '7.1.8', NULL, 274.48, 15.05, 'T', 'methane', NULL, NULL, 5.92E-4, '7.1.8', NULL), +(620, 285.68, 9082000.0, 'T', 'methane', NULL, NULL, 0.002002, '7.1.9', NULL, 285.68, 90.82, 'T', 'methane', NULL, NULL, 0.002002, '7.1.9', NULL), +(621, 285.67, 8789000.0, 'T', 'methane', NULL, NULL, 0.001881, '7.1.10', NULL, 285.67, 87.89, 'T', 'methane', NULL, NULL, 0.001881, '7.1.10', NULL), +(622, 285.37, 7058000.0, 'T', 'methane', NULL, NULL, 0.001639, '7.1.11', NULL, 285.37, 70.58, 'T', 'methane', NULL, NULL, 0.001639, '7.1.11', NULL), +(623, 285.65, 2798000.0, 'T', 'methane', NULL, NULL, 7.78E-4, '7.1.12', NULL, 285.65, 27.98, 'T', 'methane', NULL, NULL, 7.78E-4, '7.1.12', NULL), +(624, 285.67, 2331000.0, 'T', 'methane', NULL, NULL, 6.56E-4, '7.1.13', NULL, 285.67, 23.31, 'T', 'methane', NULL, NULL, 6.56E-4, '7.1.13', NULL), +(625, 279.38, 4630000.0, 'T', 'methane', NULL, NULL, 0.001378, '7.1.14', NULL, 279.38, 46.3, 'T', 'methane', NULL, NULL, 0.001378, '7.1.14', NULL), +(626, 283.37, 7046000.0, 'T', 'methane', NULL, NULL, 0.001851, '7.1.15', NULL, 283.37, 70.46, 'T', 'methane', NULL, NULL, 0.001851, '7.1.15', NULL), +(627, 283.37, 4599000.0, 'T', 'methane', NULL, NULL, 0.001123, '7.1.16', NULL, 283.37, 45.99, 'T', 'methane', NULL, NULL, 0.001123, '7.1.16', NULL), +(628, 283.37, 2799000.0, 'T', 'methane', NULL, NULL, 8.32E-4, '7.1.17', NULL, 283.37, 27.99, 'T', 'methane', NULL, NULL, 8.32E-4, '7.1.17', NULL), +(629, 283.37, 1765000.0, 'T', 'methane', NULL, NULL, 5.62E-4, '7.1.18', NULL, 283.37, 17.65, 'T', 'methane', NULL, NULL, 5.62E-4, '7.1.18', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(633, 333.7, 1327000.0, 'T', 'water', 0.984, NULL, 0.9997876, '8.1.2', NULL, 333.7, 1.327, 'T', 'water', 0.984, NULL, NULL, '8.1.2', NULL), +(640, 473.2, 3210000.0, 'T', 'methane', 0.5127, NULL, 4.146E-4, '8.1.6', NULL, 473.2, 3.21, 'T', 'methane', NULL, NULL, 4.146, '8.1.6', NULL), +(641, 473.2, 3210000.0, 'T', 'water', 0.4873, NULL, 0.9995854, '8.1.6', NULL, 473.2, 3.21, 'T', 'water', 0.4873, NULL, NULL, '8.1.6', NULL), +(644, 310.958, 1476788.00183, 'V', 'methane', 0.99484, NULL, NULL, '9.7-1.1', NULL, 100.0, 214.19, 'V', 'methane', NULL, NULL, NULL, '9.7-1.1', 'Reference 9: temp in F, pressure in psia and composition in mole fraction'), +(645, 310.958, 1476788.00183, 'V', 'water', 0.00516, NULL, NULL, '9.7-1.1', NULL, 100.0, 214.19, 'V', 'water', 0.00516, NULL, NULL, '9.7-1.1', NULL), +(646, 310.958, 4234759.7494, 'V', 'methane', 0.998118, NULL, NULL, '9.7-1.2', NULL, 100.0, 614.2, 'V', 'methane', NULL, NULL, NULL, '9.7-1.2', NULL), +(647, 310.958, 4234759.7494, 'V', 'water', 0.001882, NULL, NULL, '9.7-1.2', NULL, 100.0, 614.2, 'V', 'water', 0.001882, NULL, NULL, '9.7-1.2', NULL), +(648, 310.958, 6992248.86398, 'V', 'methane', 0.998659, NULL, NULL, '9.7-1.3', NULL, 100.0, 1014.14, 'V', 'methane', NULL, NULL, NULL, '9.7-1.3', NULL), +(649, 310.958, 6992248.86398, 'V', 'water', 0.001341, NULL, NULL, '9.7-1.3', NULL, 100.0, 1014.14, 'V', 'water', 0.001341, NULL, NULL, '9.7-1.3', NULL), +(650, 310.958, 1.043948946884E7, 'V', 'methane', 0.999081, NULL, NULL, '9.7-1.4', NULL, 100.0, 1514.12, 'V', 'methane', NULL, NULL, NULL, '9.7-1.4', NULL), +(651, 310.958, 1.043948946884E7, 'V', 'water', 9.19E-4, NULL, NULL, '9.7-1.4', NULL, 100.0, 1514.12, 'V', 'water', 9.19E-4, NULL, NULL, '9.7-1.4', NULL), +(652, 310.958, 1.38867300737E7, 'V', 'methane', 0.999246, NULL, NULL, '9.7-1.5', NULL, 100.0, 2014.1, 'V', 'methane', NULL, NULL, NULL, '9.7-1.5', NULL), +(653, 310.958, 1.38867300737E7, 'V', 'water', 7.54E-4, NULL, NULL, '9.7-1.5', NULL, 100.0, 2014.1, 'V', 'water', 7.54E-4, NULL, NULL, '9.7-1.5', NULL), +(654, 327.638, 1475753.78828, 'V', 'methane', 0.9887, NULL, NULL, '9.7-1.6', NULL, 130.0, 214.04, 'V', 'methane', NULL, NULL, NULL, '9.7-1.6', NULL), +(655, 327.638, 1475753.78828, 'V', 'water', 0.0113, NULL, NULL, '9.7-1.6', NULL, 130.0, 214.04, 'V', 'water', 0.0113, NULL, NULL, '9.7-1.6', NULL), +(656, 327.638, 4234070.2737, 'V', 'methane', 0.9957, NULL, NULL, '9.7-1.7', NULL, 130.0, 614.1, 'V', 'methane', NULL, NULL, NULL, '9.7-1.7', NULL), +(657, 327.638, 4234070.2737, 'V', 'water', 0.0043, NULL, NULL, '9.7-1.7', NULL, 130.0, 614.1, 'V', 'water', 0.0043, NULL, NULL, '9.7-1.7', NULL), +(658, 327.638, 6991973.0737, 'V', 'methane', 0.99721, NULL, NULL, '9.7-1.8', NULL, 130.0, 1014.1, 'V', 'methane', NULL, NULL, NULL, '9.7-1.8', NULL), +(659, 327.638, 6991973.0737, 'V', 'water', 0.00279, NULL, NULL, '9.7-1.8', NULL, 130.0, 1014.1, 'V', 'water', 0.00279, NULL, NULL, '9.7-1.8', NULL), +(660, 327.638, 1.04393515737E7, 'V', 'methane', 0.99807, NULL, NULL, '9.7-1.9', NULL, 130.0, 1514.1, 'V', 'methane', NULL, NULL, NULL, '9.7-1.9', NULL), +(661, 327.638, 1.04393515737E7, 'V', 'water', 0.00193, NULL, NULL, '9.7-1.9', NULL, 130.0, 1514.1, 'V', 'water', 0.00193, NULL, NULL, '9.7-1.9', NULL), +(662, 327.638, 1.436984569669E7, 'V', 'methane', 0.99829, NULL, NULL, '9.7-1.10', NULL, 130.0, 2084.17, 'V', 'methane', NULL, NULL, NULL, '9.7-1.10', NULL), +(663, 327.638, 1.436984569669E7, 'V', 'water', 0.00171, NULL, NULL, '9.7-1.10', NULL, 130.0, 2084.17, 'V', 'water', 0.00171, NULL, NULL, '9.7-1.10', NULL), +(664, 344.318, 1475822.73585, 'V', 'methane', 0.97435, NULL, NULL, '9.7-1.11', NULL, 160.0, 214.05, 'V', 'methane', NULL, NULL, NULL, '9.7-1.11', NULL), +(665, 344.318, 1475822.73585, 'V', 'water', 0.02565, NULL, NULL, '9.7-1.11', NULL, 160.0, 214.05, 'V', 'water', 0.02565, NULL, NULL, '9.7-1.11', NULL), +(666, 344.318, 4234346.06398, 'V', 'methane', 0.99067, NULL, NULL, '9.7-1.12', NULL, 160.0, 614.14, 'V', 'methane', NULL, NULL, NULL, '9.7-1.12', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(667, 344.318, 4234346.06398, 'V', 'water', 0.00933, NULL, NULL, '9.7-1.12', NULL, 160.0, 614.14, 'V', 'water', 0.00933, NULL, NULL, '9.7-1.12', NULL), +(668, 344.318, 6992248.86398, 'V', 'methane', 0.9945, NULL, NULL, '9.7-1.13', NULL, 160.0, 1014.14, 'V', 'methane', NULL, NULL, NULL, '9.7-1.13', NULL), +(669, 344.318, 6992248.86398, 'V', 'water', 0.0055, NULL, NULL, '9.7-1.13', NULL, 160.0, 1014.14, 'V', 'water', 0.0055, NULL, NULL, '9.7-1.13', NULL), +(670, 344.318, 1.043948946884E7, 'V', 'methane', 0.99575, NULL, NULL, '9.7-1.14', NULL, 160.0, 1514.12, 'V', 'methane', NULL, NULL, NULL, '9.7-1.14', NULL), +(671, 344.318, 1.043948946884E7, 'V', 'water', 0.00425, NULL, NULL, '9.7-1.14', NULL, 160.0, 1514.12, 'V', 'water', 0.00425, NULL, NULL, '9.7-1.14', NULL), +(672, 344.318, 1.388700586398E7, 'V', 'methane', 0.99632, NULL, NULL, '9.7-1.15', NULL, 160.0, 2014.14, 'V', 'methane', NULL, NULL, NULL, '9.7-1.15', NULL), +(673, 344.318, 1.388700586398E7, 'V', 'water', 0.00368, NULL, NULL, '9.7-1.15', NULL, 160.0, 2014.14, 'V', 'water', 0.00368, NULL, NULL, '9.7-1.15', NULL), +(674, 298.17, 2349490.0, 'T', 'methane', NULL, NULL, 4.97E-4, '10.1.1', NULL, 77.0, 341.0, 'T', 'methane', NULL, NULL, 4.97E-4, '10.1.1', 'Reference 10: temp in F,pressure in psia,composition in mole fraction'), +(675, 298.17, 2349490.0, 'T', 'water', NULL, NULL, 0.999503, '10.1.1', NULL, 77.0, 341.0, 'T', 'water', NULL, NULL, NULL, '10.1.1', NULL), +(676, 298.17, 3782610.0, 'T', 'methane', NULL, NULL, 7.17E-4, '10.1.2', NULL, 77.0, 549.0, 'T', 'methane', NULL, NULL, 7.17E-4, '10.1.2', NULL), +(677, 298.17, 3782610.0, 'T', 'water', NULL, NULL, 0.999283, '10.1.2', NULL, 77.0, 549.0, 'T', 'water', NULL, NULL, NULL, '10.1.2', NULL), +(678, 298.17, 4540510.0, 'T', 'methane', NULL, NULL, 0.001, '10.1.3', NULL, 77.0, 659.0, 'T', 'methane', NULL, NULL, 0.001, '10.1.3', NULL), +(679, 298.17, 4540510.0, 'T', 'water', NULL, NULL, 0.999, '10.1.3', NULL, 77.0, 659.0, 'T', 'water', NULL, NULL, NULL, '10.1.3', NULL), +(680, 298.17, 6435260.0, 'T', 'methane', NULL, NULL, 0.001317, '10.1.4', NULL, 77.0, 934.0, 'T', 'methane', NULL, NULL, 0.001317, '10.1.4', NULL), +(681, 298.17, 6435260.0, 'T', 'water', NULL, NULL, 0.998683, '10.1.4', NULL, 77.0, 934.0, 'T', 'water', NULL, NULL, NULL, '10.1.4', NULL), +(682, 298.17, 8888100.0, 'T', 'methane', NULL, NULL, 0.001678, '10.1.5', NULL, 77.0, 1290.0, 'T', 'methane', NULL, NULL, 0.001678, '10.1.5', NULL), +(683, 298.17, 8888100.0, 'T', 'water', NULL, NULL, 0.998322, '10.1.5', NULL, 77.0, 1290.0, 'T', 'water', NULL, NULL, NULL, '10.1.5', NULL), +(684, 298.17, 1.32977E7, 'T', 'methane', NULL, NULL, 0.002235, '10.1.6', NULL, 77.0, 1930.0, 'T', 'methane', NULL, NULL, 0.002235, '10.1.6', NULL), +(685, 298.17, 1.32977E7, 'T', 'water', NULL, NULL, 0.997765, '10.1.6', NULL, 77.0, 1930.0, 'T', 'water', NULL, NULL, NULL, '10.1.6', NULL), +(686, 298.17, 1.719055E7, 'T', 'methane', NULL, NULL, 0.002585, '10.1.7', NULL, 77.0, 2495.0, 'T', 'methane', NULL, NULL, 0.002585, '10.1.7', NULL), +(687, 298.17, 1.719055E7, 'T', 'water', NULL, NULL, 0.997415, '10.1.7', NULL, 77.0, 2495.0, 'T', 'water', NULL, NULL, NULL, '10.1.7', NULL), +(688, 298.17, 2.421835E7, 'T', 'methane', NULL, NULL, 0.00311, '10.1.8', NULL, 77.0, 3515.0, 'T', 'methane', NULL, NULL, 0.00311, '10.1.8', NULL), +(689, 298.17, 2.421835E7, 'T', 'water', NULL, NULL, 0.99689, '10.1.8', NULL, 77.0, 3515.0, 'T', 'water', NULL, NULL, NULL, '10.1.8', NULL), +(690, 298.17, 3.31409E7, 'T', 'methane', NULL, NULL, 0.00366, '10.1.9', NULL, 77.0, 4810.0, 'T', 'methane', NULL, NULL, 0.00366, '10.1.9', NULL), +(691, 298.17, 3.31409E7, 'T', 'water', NULL, NULL, 0.99634, '10.1.9', NULL, 77.0, 4810.0, 'T', 'water', NULL, NULL, NULL, '10.1.9', NULL), +(692, 298.17, 4.43716E7, 'T', 'methane', NULL, NULL, 0.00417, '10.1.10', NULL, 77.0, 6440.0, 'T', 'methane', NULL, NULL, 0.00417, '10.1.10', NULL), +(693, 298.17, 4.43716E7, 'T', 'water', NULL, NULL, 0.99583, '10.1.10', NULL, 77.0, 6440.0, 'T', 'water', NULL, NULL, NULL, '10.1.10', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(694, 298.17, 5.370755E7, NULL, 'methane', NULL, NULL, 0.00437, '10.1.11', NULL, 77.0, 7795.0, 'M', 'methane', NULL, NULL, 0.00437, '10.1.11', 'non-equilibrium solubilities determined when the liquid phase co-existed with vapor and hydrate phases'), +(695, 298.17, 5.370755E7, NULL, 'water', NULL, NULL, 0.99563, '10.1.11', NULL, 77.0, 7795.0, 'M', 'water', NULL, NULL, NULL, '10.1.11', NULL), +(696, 298.17, 6.4077E7, NULL, 'methane', NULL, NULL, 0.00445, '10.1.12', NULL, 77.0, 9300.0, 'M', 'methane', NULL, NULL, 0.00445, '10.1.12', NULL), +(697, 298.17, 6.4077E7, NULL, 'water', NULL, NULL, 0.99555, '10.1.12', NULL, 77.0, 9300.0, 'M', 'water', NULL, NULL, NULL, '10.1.12', NULL), +(698, 310.958, 2273700.0, NULL, 'methane', NULL, NULL, 4.4E-4, '10.1.13', NULL, 100.0, 330.0, 'T', 'methane', NULL, NULL, 4.4E-4, '10.1.13', NULL), +(699, 310.958, 2273700.0, NULL, 'water', NULL, NULL, 0.99956, '10.1.13', NULL, 100.0, 330.0, 'T', 'water', NULL, NULL, NULL, '10.1.13', NULL), +(700, 310.958, 3286530.0, NULL, 'methane', NULL, NULL, 6.19E-4, '10.1.14', NULL, 100.0, 477.0, 'T', 'methane', NULL, NULL, 6.19E-4, '10.1.14', NULL), +(701, 310.958, 3286530.0, NULL, 'water', NULL, NULL, 0.999381, '10.1.14', NULL, 100.0, 477.0, 'T', 'water', NULL, NULL, NULL, '10.1.14', NULL), +(702, 310.958, 4574960.0, NULL, 'methane', NULL, NULL, 8.39E-4, '10.1.15', NULL, 100.0, 664.0, 'T', 'methane', NULL, NULL, 8.39E-4, '10.1.15', NULL), +(703, 310.958, 4574960.0, NULL, 'water', NULL, NULL, 0.999161, '10.1.15', NULL, 100.0, 664.0, 'T', 'water', NULL, NULL, NULL, '10.1.15', NULL), +(704, 310.958, 6545500.0, NULL, 'methane', NULL, NULL, 0.001123, '10.1.16', NULL, 100.0, 950.0, 'T', 'methane', NULL, NULL, 0.001123, '10.1.16', NULL), +(705, 310.958, 6545500.0, NULL, 'water', NULL, NULL, 0.998877, '10.1.16', NULL, 100.0, 950.0, 'T', 'water', NULL, NULL, NULL, '10.1.16', NULL), +(706, 310.958, 8750300.0, NULL, 'methane', NULL, NULL, 0.00144, '10.1.17', NULL, 100.0, 1270.0, 'T', 'methane', NULL, NULL, 0.00144, '10.1.17', NULL), +(707, 310.958, 8750300.0, NULL, 'water', NULL, NULL, 0.99856, '10.1.17', NULL, 100.0, 1270.0, 'T', 'water', NULL, NULL, NULL, '10.1.17', NULL), +(708, 310.958, 1.3091E7, NULL, 'methane', NULL, NULL, 0.00189, '10.1.18', NULL, 100.0, 1900.0, 'T', 'methane', NULL, NULL, 0.00189, '10.1.18', NULL), +(709, 310.958, 1.3091E7, NULL, 'water', NULL, NULL, 0.99811, '10.1.18', NULL, 100.0, 1900.0, 'T', 'water', NULL, NULL, NULL, '10.1.18', NULL), +(710, 310.958, 1.774175E7, NULL, 'methane', NULL, NULL, 0.00229, '10.1.19', NULL, 100.0, 2575.0, 'T', 'methane', NULL, NULL, 0.00229, '10.1.19', NULL), +(711, 310.958, 1.774175E7, NULL, 'water', NULL, NULL, 0.99771, '10.1.19', NULL, 100.0, 2575.0, 'T', 'water', NULL, NULL, NULL, '10.1.19', NULL), +(712, 310.958, 2.435615E7, NULL, 'methane', NULL, NULL, 0.00276, '10.1.20', NULL, 100.0, 3535.0, 'T', 'methane', NULL, NULL, 0.00276, '10.1.20', NULL), +(713, 310.958, 2.435615E7, NULL, 'water', NULL, NULL, 0.99724, '10.1.20', NULL, 100.0, 3535.0, 'T', 'water', NULL, NULL, NULL, '10.1.20', NULL), +(714, 310.958, 3.38299E7, NULL, 'methane', NULL, NULL, 0.00333, '10.1.21', NULL, 100.0, 4910.0, 'T', 'methane', NULL, NULL, 0.00333, '10.1.21', NULL), +(715, 310.958, 3.38299E7, NULL, 'water', NULL, NULL, 0.99667, '10.1.21', NULL, 100.0, 4910.0, 'T', 'water', NULL, NULL, NULL, '10.1.21', NULL), +(716, 310.958, 4.495725E7, NULL, 'methane', NULL, NULL, 0.00391, '10.1.22', NULL, 100.0, 6525.0, 'T', 'methane', NULL, NULL, 0.00391, '10.1.22', NULL), +(717, 310.958, 4.495725E7, NULL, 'water', NULL, NULL, 0.99609, '10.1.22', NULL, 100.0, 6525.0, 'T', 'water', NULL, NULL, NULL, '10.1.22', NULL), +(718, 310.958, 5.42243E7, NULL, 'methane', NULL, NULL, 0.00417, '10.1.23', NULL, 100.0, 7870.0, 'T', 'methane', NULL, NULL, 0.00417, '10.1.23', NULL), +(719, 310.958, 5.42243E7, NULL, 'water', NULL, NULL, 0.99583, '10.1.23', NULL, 100.0, 7870.0, 'T', 'water', NULL, NULL, NULL, '10.1.23', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(720, 310.958, 6.817655E7, NULL, 'methane', NULL, NULL, 0.00465, '10.1.24', NULL, 100.0, 9895.0, 'T', 'methane', NULL, NULL, 0.00465, '10.1.24', NULL), +(721, 310.958, 6.817655E7, NULL, 'water', NULL, NULL, 0.99535, '10.1.24', NULL, 100.0, 9895.0, 'T', 'water', NULL, NULL, NULL, '10.1.24', NULL), +(722, 344.318, 2280590.0, NULL, 'methane', NULL, NULL, 3.4E-4, '10.1.25', NULL, 160.0, 331.0, 'T', 'methane', NULL, NULL, 3.4E-4, '10.1.25', NULL), +(723, 344.318, 2280590.0, NULL, 'water', NULL, NULL, 0.99966, '10.1.25', NULL, 160.0, 331.0, 'T', 'water', NULL, NULL, NULL, '10.1.25', NULL), +(724, 344.318, 3217630.0, NULL, 'methane', NULL, NULL, 4.7E-4, '10.1.26', NULL, 160.0, 467.0, 'T', 'methane', NULL, NULL, 4.7E-4, '10.1.26', NULL), +(725, 344.318, 3217630.0, NULL, 'water', NULL, NULL, 0.99953, '10.1.26', NULL, 160.0, 467.0, 'T', 'water', NULL, NULL, NULL, '10.1.26', NULL), +(726, 344.318, 4540510.0, NULL, 'methane', NULL, NULL, 6.32E-4, '10.1.27', NULL, 160.0, 659.0, 'T', 'methane', NULL, NULL, 6.32E-4, '10.1.27', NULL), +(727, 344.318, 4540510.0, NULL, 'water', NULL, NULL, 0.999368, '10.1.27', NULL, 160.0, 659.0, 'T', 'water', NULL, NULL, NULL, '10.1.27', NULL), +(728, 344.318, 6497270.0, NULL, 'methane', NULL, NULL, 9.09E-4, '10.1.28', NULL, 160.0, 943.0, 'T', 'methane', NULL, NULL, 9.09E-4, '10.1.28', NULL), +(729, 344.318, 6497270.0, NULL, 'water', NULL, NULL, 0.999091, '10.1.28', NULL, 160.0, 943.0, 'T', 'water', NULL, NULL, NULL, '10.1.28', NULL), +(730, 344.318, 9094800.0, NULL, 'methane', NULL, NULL, 0.001183, '10.1.29', NULL, 160.0, 1320.0, 'T', 'methane', NULL, NULL, 0.001183, '10.1.29', NULL), +(731, 344.318, 9094800.0, NULL, 'water', NULL, NULL, 0.998817, '10.1.29', NULL, 160.0, 1320.0, 'T', 'water', NULL, NULL, NULL, '10.1.29', NULL), +(732, 344.318, 1.29532E7, NULL, 'methane', NULL, NULL, 0.0015, '10.1.30', NULL, 160.0, 1880.0, 'T', 'methane', NULL, NULL, 0.0015, '10.1.30', NULL), +(733, 344.318, 1.29532E7, NULL, 'water', NULL, NULL, 0.9985, '10.1.30', NULL, 160.0, 1880.0, 'T', 'water', NULL, NULL, NULL, '10.1.30', NULL), +(734, 344.318, 1.760395E7, NULL, 'methane', NULL, NULL, 0.001924, '10.1.31', NULL, 160.0, 2555.0, 'T', 'methane', NULL, NULL, 0.001924, '10.1.31', NULL), +(735, 344.318, 1.760395E7, NULL, 'water', NULL, NULL, 0.998076, '10.1.31', NULL, 160.0, 2555.0, 'T', 'water', NULL, NULL, NULL, '10.1.31', NULL), +(736, 344.318, 2.435615E7, NULL, 'methane', NULL, NULL, 0.002385, '10.1.32', NULL, 160.0, 3535.0, 'T', 'methane', NULL, NULL, 0.002385, '10.1.32', NULL), +(737, 344.318, 2.435615E7, NULL, 'water', NULL, NULL, 0.997615, '10.1.32', NULL, 160.0, 3535.0, 'T', 'water', NULL, NULL, NULL, '10.1.32', NULL), +(738, 344.318, 3.393325E7, NULL, 'methane', NULL, NULL, 0.00277, '10.1.33', NULL, 160.0, 4925.0, 'T', 'methane', NULL, NULL, 0.00277, '10.1.33', NULL), +(739, 344.318, 3.393325E7, NULL, 'water', NULL, NULL, 0.99723, '10.1.33', NULL, 160.0, 4925.0, 'T', 'water', NULL, NULL, NULL, '10.1.33', NULL), +(740, 344.318, 4.495725E7, NULL, 'methane', NULL, NULL, 0.00342, '10.1.34', NULL, 160.0, 6525.0, 'T', 'methane', NULL, NULL, 0.00342, '10.1.34', NULL), +(741, 344.318, 4.495725E7, NULL, 'water', NULL, NULL, 0.99658, '10.1.34', NULL, 160.0, 6525.0, 'T', 'water', NULL, NULL, NULL, '10.1.34', NULL), +(742, 344.318, 5.66358E7, NULL, 'methane', NULL, NULL, 0.00375, '10.1.35', NULL, 160.0, 8220.0, 'T', 'methane', NULL, NULL, 0.00375, '10.1.35', NULL), +(743, 344.318, 5.66358E7, NULL, 'water', NULL, NULL, 0.99625, '10.1.35', NULL, 160.0, 8220.0, 'T', 'water', NULL, NULL, NULL, '10.1.35', NULL), +(744, 344.318, 6.796985E7, NULL, 'methane', NULL, NULL, 0.00424, '10.1.36', NULL, 160.0, 9865.0, 'T', 'methane', NULL, NULL, 0.00424, '10.1.36', NULL), +(745, 344.318, 6.796985E7, NULL, 'water', NULL, NULL, 0.99576, '10.1.36', NULL, 160.0, 9865.0, 'T', 'water', NULL, NULL, NULL, '10.1.36', NULL), +(746, 377.678, 2294370.0, NULL, 'methane', NULL, NULL, 3.23E-4, '10.1.37', NULL, 220.0, 333.0, 'T', 'methane', NULL, NULL, 3.23E-4, '10.1.37', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(747, 377.678, 2294370.0, NULL, 'water', NULL, NULL, 0.999677, '10.1.37', NULL, 220.0, 333.0, 'T', 'water', NULL, NULL, NULL, '10.1.37', NULL), +(748, 377.678, 3210740.0, NULL, 'methane', NULL, NULL, 4.32E-4, '10.1.38', NULL, 220.0, 466.0, 'T', 'methane', NULL, NULL, 4.32E-4, '10.1.38', NULL), +(749, 377.678, 3210740.0, NULL, 'water', NULL, NULL, 0.999568, '10.1.38', NULL, 220.0, 466.0, 'T', 'water', NULL, NULL, NULL, '10.1.38', NULL), +(750, 377.678, 3224520.0, NULL, 'methane', NULL, NULL, 4.72E-4, '10.1.39', NULL, 220.0, 468.0, 'T', 'methane', NULL, NULL, 4.72E-4, '10.1.39', NULL), +(751, 377.678, 3224520.0, NULL, 'water', NULL, NULL, 0.999528, '10.1.39', NULL, 220.0, 468.0, 'T', 'water', NULL, NULL, NULL, '10.1.39', NULL), +(752, 377.678, 4492280.0, NULL, 'methane', NULL, NULL, 6.11E-4, '10.1.40', NULL, 220.0, 652.0, 'T', 'methane', NULL, NULL, 6.11E-4, '10.1.40', NULL), +(753, 377.678, 4492280.0, NULL, 'water', NULL, NULL, 0.999389, '10.1.40', NULL, 220.0, 652.0, 'T', 'water', NULL, NULL, NULL, '10.1.40', NULL), +(754, 377.678, 6511050.0, NULL, 'methane', NULL, NULL, 8.86E-4, '10.1.41', NULL, 220.0, 945.0, 'T', 'methane', NULL, NULL, 8.86E-4, '10.1.41', NULL), +(755, 377.678, 6511050.0, NULL, 'water', NULL, NULL, 0.999114, '10.1.41', NULL, 220.0, 945.0, 'T', 'water', NULL, NULL, NULL, '10.1.41', NULL), +(756, 377.678, 9025900.0, NULL, 'methane', NULL, NULL, 0.001188, '10.1.42', NULL, 220.0, 1310.0, 'T', 'methane', NULL, NULL, 0.001188, '10.1.42', NULL), +(757, 377.678, 9025900.0, NULL, 'water', NULL, NULL, 0.998812, '10.1.42', NULL, 220.0, 1310.0, 'T', 'water', NULL, NULL, NULL, '10.1.42', NULL), +(758, 377.678, 1.3091E7, NULL, 'methane', NULL, NULL, 0.00156, '10.1.43', NULL, 220.0, 1900.0, 'T', 'methane', NULL, NULL, 0.00156, '10.1.43', NULL), +(759, 377.678, 1.3091E7, NULL, 'water', NULL, NULL, 0.99844, '10.1.43', NULL, 220.0, 1900.0, 'T', 'water', NULL, NULL, NULL, '10.1.43', NULL), +(760, 377.678, 1.746615E7, NULL, 'methane', NULL, NULL, 0.00198, '10.1.44', NULL, 220.0, 2535.0, 'T', 'methane', NULL, NULL, 0.00198, '10.1.44', NULL), +(761, 377.678, 1.746615E7, NULL, 'water', NULL, NULL, 0.99802, '10.1.44', NULL, 220.0, 2535.0, 'T', 'water', NULL, NULL, NULL, '10.1.44', NULL), +(762, 377.678, 2.45973E7, NULL, 'methane', NULL, NULL, 0.00251, '10.1.45', NULL, 220.0, 3570.0, 'T', 'methane', NULL, NULL, 0.00251, '10.1.45', NULL), +(763, 377.678, 2.45973E7, NULL, 'water', NULL, NULL, 0.99749, '10.1.45', NULL, 220.0, 3570.0, 'T', 'water', NULL, NULL, NULL, '10.1.45', NULL), +(764, 377.678, 3.420885E7, NULL, 'methane', NULL, NULL, 0.00314, '10.1.46', NULL, 220.0, 4965.0, 'T', 'methane', NULL, NULL, 0.00314, '10.1.46', NULL), +(765, 377.678, 3.420885E7, NULL, 'water', NULL, NULL, 0.99686, '10.1.46', NULL, 220.0, 4965.0, 'T', 'water', NULL, NULL, NULL, '10.1.46', NULL), +(766, 377.678, 4.495725E7, NULL, 'methane', NULL, NULL, 0.00361, '10.1.47', NULL, 220.0, 6525.0, 'T', 'methane', NULL, NULL, 0.00361, '10.1.47', NULL), +(767, 377.678, 4.495725E7, NULL, 'water', NULL, NULL, 0.99639, '10.1.47', NULL, 220.0, 6525.0, 'T', 'water', NULL, NULL, NULL, '10.1.47', NULL), +(768, 377.678, 5.64291E7, NULL, 'methane', NULL, NULL, 0.00408, '10.1.48', NULL, 220.0, 8190.0, 'T', 'methane', NULL, NULL, 0.00408, '10.1.48', NULL), +(769, 377.678, 5.64291E7, NULL, 'water', NULL, NULL, 0.99592, '10.1.48', NULL, 220.0, 8190.0, 'T', 'water', NULL, NULL, NULL, '10.1.48', NULL), +(770, 377.678, 6.803875E7, NULL, 'methane', NULL, NULL, 0.00451, '10.1.49', NULL, 220.0, 9875.0, 'T', 'methane', NULL, NULL, 0.00451, '10.1.49', NULL), +(771, 377.678, 6.803875E7, NULL, 'water', NULL, NULL, 0.99549, '10.1.49', NULL, 220.0, 9875.0, 'T', 'water', NULL, NULL, NULL, '10.1.49', NULL), +(772, 411.038, 2315040.0, NULL, 'methane', NULL, NULL, 3.26E-4, '10.1.50', NULL, 280.0, 336.0, 'T', 'methane', NULL, NULL, 3.26E-4, '10.1.50', NULL), +(773, 411.038, 2315040.0, NULL, 'water', NULL, NULL, 0.999674, '10.1.50', NULL, 280.0, 336.0, 'T', 'water', NULL, NULL, NULL, '10.1.50', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(774, 411.038, 3196960.0, NULL, 'methane', NULL, NULL, 4.6E-4, '10.1.51', NULL, 280.0, 464.0, 'T', 'methane', NULL, NULL, 4.6E-4, '10.1.51', NULL), +(775, 411.038, 3196960.0, NULL, 'water', NULL, NULL, 0.99954, '10.1.51', NULL, 280.0, 464.0, 'T', 'water', NULL, NULL, NULL, '10.1.51', NULL), +(776, 411.038, 4506060.0, NULL, 'methane', NULL, NULL, 6.73E-4, '10.1.52', NULL, 280.0, 654.0, 'T', 'methane', NULL, NULL, 6.73E-4, '10.1.52', NULL), +(777, 411.038, 4506060.0, NULL, 'water', NULL, NULL, 0.999327, '10.1.52', NULL, 280.0, 654.0, 'T', 'water', NULL, NULL, NULL, '10.1.52', NULL), +(778, 411.038, 6483490.0, NULL, 'methane', NULL, NULL, 9.38E-4, '10.1.53', NULL, 280.0, 941.0, 'T', 'methane', NULL, NULL, 9.38E-4, '10.1.53', NULL), +(779, 411.038, 6483490.0, NULL, 'water', NULL, NULL, 0.999062, '10.1.53', NULL, 280.0, 941.0, 'T', 'water', NULL, NULL, NULL, '10.1.53', NULL), +(780, 411.038, 9025900.0, NULL, 'methane', NULL, NULL, 0.001326, '10.1.54', NULL, 280.0, 1310.0, 'T', 'methane', NULL, NULL, 0.001326, '10.1.54', NULL), +(781, 411.038, 9025900.0, NULL, 'water', NULL, NULL, 0.998674, '10.1.54', NULL, 280.0, 1310.0, 'T', 'water', NULL, NULL, NULL, '10.1.54', NULL), +(782, 411.038, 1.3091E7, NULL, 'methane', NULL, NULL, 0.001857, '10.1.55', NULL, 280.0, 1900.0, 'T', 'methane', NULL, NULL, 0.001857, '10.1.55', NULL), +(783, 411.038, 1.3091E7, NULL, 'water', NULL, NULL, 0.998143, '10.1.55', NULL, 280.0, 1900.0, 'T', 'water', NULL, NULL, NULL, '10.1.55', NULL), +(784, 411.038, 1.70872E7, NULL, 'methane', NULL, NULL, 0.002346, '10.1.56', NULL, 280.0, 2480.0, 'T', 'methane', NULL, NULL, 0.002346, '10.1.56', NULL), +(785, 411.038, 1.70872E7, NULL, 'water', NULL, NULL, 0.997654, '10.1.56', NULL, 280.0, 2480.0, 'T', 'water', NULL, NULL, NULL, '10.1.56', NULL), +(786, 411.038, 2.449395E7, NULL, 'methane', NULL, NULL, 0.003015, '10.1.57', NULL, 280.0, 3555.0, 'T', 'methane', NULL, NULL, 0.003015, '10.1.57', NULL), +(787, 411.038, 2.449395E7, NULL, 'water', NULL, NULL, 0.996985, '10.1.57', NULL, 280.0, 3555.0, 'T', 'water', NULL, NULL, NULL, '10.1.57', NULL), +(788, 411.038, 3.427775E7, NULL, 'methane', NULL, NULL, 0.003805, '10.1.58', NULL, 280.0, 4975.0, 'T', 'methane', NULL, NULL, 0.003805, '10.1.58', NULL), +(789, 411.038, 3.427775E7, NULL, 'water', NULL, NULL, 0.996195, '10.1.58', NULL, 280.0, 4975.0, 'T', 'water', NULL, NULL, NULL, '10.1.58', NULL), +(790, 411.038, 4.495725E7, NULL, 'methane', NULL, NULL, 0.00449, '10.1.59', NULL, 280.0, 6525.0, 'T', 'methane', NULL, NULL, 0.00449, '10.1.59', NULL), +(791, 411.038, 4.495725E7, NULL, 'water', NULL, NULL, 0.99551, '10.1.59', NULL, 280.0, 6525.0, 'T', 'water', NULL, NULL, NULL, '10.1.59', NULL), +(792, 411.038, 5.69803E7, NULL, 'methane', NULL, NULL, 0.00518, '10.1.60', NULL, 280.0, 8270.0, 'T', 'methane', NULL, NULL, 0.00518, '10.1.60', NULL), +(793, 411.038, 5.69803E7, NULL, 'water', NULL, NULL, 0.99482, '10.1.60', NULL, 280.0, 8270.0, 'T', 'water', NULL, NULL, NULL, '10.1.60', NULL), +(794, 411.038, 6.776315E7, NULL, 'methane', NULL, NULL, 0.00574, '10.1.61', NULL, 280.0, 9835.0, 'T', 'methane', NULL, NULL, 0.00574, '10.1.61', NULL), +(795, 411.038, 6.776315E7, NULL, 'water', NULL, NULL, 0.99426, '10.1.61', NULL, 280.0, 9835.0, 'T', 'water', NULL, NULL, NULL, '10.1.61', NULL), +(796, 444.398, 2225470.0, NULL, 'methane', NULL, NULL, 3.23E-4, '10.1.62', NULL, 340.0, 323.0, 'T', 'methane', NULL, NULL, 3.23E-4, '10.1.62', NULL), +(797, 444.398, 2225470.0, NULL, 'water', NULL, NULL, 0.999677, '10.1.62', NULL, 340.0, 323.0, 'T', 'water', NULL, NULL, NULL, '10.1.62', NULL), +(798, 444.398, 3272750.0, NULL, 'methane', NULL, NULL, 5.35E-4, '10.1.63', NULL, 340.0, 475.0, 'T', 'methane', NULL, NULL, 5.35E-4, '10.1.63', NULL), +(799, 444.398, 3272750.0, NULL, 'water', NULL, NULL, 0.999465, '10.1.63', NULL, 340.0, 475.0, 'T', 'water', NULL, NULL, NULL, '10.1.63', NULL), +(800, 444.398, 4561180.0, NULL, 'methane', NULL, NULL, 7.89E-4, '10.1.64', NULL, 340.0, 662.0, 'T', 'methane', NULL, NULL, 7.89E-4, '10.1.64', NULL); +INSERT INTO PUBLIC.LUCIADATA(ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(801, 444.398, 4561180.0, NULL, 'water', NULL, NULL, 0.999211, '10.1.64', NULL, 340.0, 662.0, 'T', 'water', NULL, NULL, NULL, '10.1.64', NULL), +(802, 444.398, 6538610.0, NULL, 'methane', NULL, NULL, 0.00115, '10.1.65', NULL, 340.0, 949.0, 'T', 'methane', NULL, NULL, 0.00115, '10.1.65', NULL), +(803, 444.398, 6538610.0, NULL, 'water', NULL, NULL, 0.99885, '10.1.65', NULL, 340.0, 949.0, 'T', 'water', NULL, NULL, NULL, '10.1.65', NULL), +(804, 444.398, 9370400.0, NULL, 'methane', NULL, NULL, 0.001725, '10.1.66', NULL, 340.0, 1360.0, 'T', 'methane', NULL, NULL, 0.001725, '10.1.66', NULL), +(805, 444.398, 9370400.0, NULL, 'water', NULL, NULL, 0.998275, '10.1.66', NULL, 340.0, 1360.0, 'T', 'water', NULL, NULL, NULL, '10.1.66', NULL), +(806, 444.398, 1.32288E7, NULL, 'methane', NULL, NULL, 0.002355, '10.1.67', NULL, 340.0, 1920.0, 'T', 'methane', NULL, NULL, 0.002355, '10.1.67', NULL), +(807, 444.398, 1.32288E7, NULL, 'water', NULL, NULL, 0.997645, '10.1.67', NULL, 340.0, 1920.0, 'T', 'water', NULL, NULL, NULL, '10.1.67', NULL), +(808, 444.398, 1.77762E7, NULL, 'methane', NULL, NULL, 0.003025, '10.1.68', NULL, 340.0, 2580.0, 'T', 'methane', NULL, NULL, 0.003025, '10.1.68', NULL), +(809, 444.398, 1.77762E7, NULL, 'water', NULL, NULL, 0.996975, '10.1.68', NULL, 340.0, 2580.0, 'T', 'water', NULL, NULL, NULL, '10.1.68', NULL), +(810, 444.398, 2.46662E7, NULL, 'methane', NULL, NULL, 0.003835, '10.1.69', NULL, 340.0, 3580.0, 'T', 'methane', NULL, NULL, 0.003835, '10.1.69', NULL), +(811, 444.398, 2.46662E7, NULL, 'water', NULL, NULL, 0.996165, '10.1.69', NULL, 340.0, 3580.0, 'T', 'water', NULL, NULL, NULL, '10.1.69', NULL), +(812, 444.398, 3.476005E7, NULL, 'methane', NULL, NULL, 0.004875, '10.1.70', NULL, 340.0, 5045.0, 'T', 'methane', NULL, NULL, 0.004875, '10.1.70', NULL), +(813, 444.398, 3.476005E7, NULL, 'water', NULL, NULL, 0.995125, '10.1.70', NULL, 340.0, 5045.0, 'T', 'water', NULL, NULL, NULL, '10.1.70', NULL), +(814, 444.398, 4.495725E7, NULL, 'methane', NULL, NULL, 0.00595, '10.1.71', NULL, 340.0, 6525.0, 'T', 'methane', NULL, NULL, 0.00595, '10.1.71', NULL), +(815, 444.398, 4.495725E7, NULL, 'water', NULL, NULL, 0.99405, '10.1.71', NULL, 340.0, 6525.0, 'T', 'water', NULL, NULL, NULL, '10.1.71', NULL), +(816, 444.398, 5.65669E7, NULL, 'methane', NULL, NULL, 0.0068, '10.1.72', NULL, 340.0, 8210.0, 'T', 'methane', NULL, NULL, 0.0068, '10.1.72', NULL), +(817, 444.398, 5.65669E7, NULL, 'water', NULL, NULL, 0.9932, '10.1.72', NULL, 340.0, 8210.0, 'T', 'water', NULL, NULL, NULL, '10.1.72', NULL), +(818, 444.398, 6.886555E7, NULL, 'methane', NULL, NULL, 0.00775, '10.1.73', NULL, 340.0, 9995.0, 'T', 'methane', NULL, NULL, 0.00775, '10.1.73', NULL), +(819, 444.398, 6.886555E7, NULL, 'water', NULL, NULL, 0.99225, '10.1.73', NULL, 340.0, 9995.0, 'T', 'water', NULL, NULL, NULL, '10.1.73', NULL); +CREATE CACHED TABLE PUBLIC.LUCIADATA8( + ID1 INT NOT NULL SELECTIVITY 100, + ID DOUBLE DEFAULT NULL SELECTIVITY 100, + TEMPERATURE DOUBLE DEFAULT NULL SELECTIVITY 12, + PRESSURE DOUBLE DEFAULT NULL SELECTIVITY 31, + PHASE VARCHAR(255) DEFAULT NULL SELECTIVITY 1, + COMPONENT VARCHAR(255) DEFAULT NULL SELECTIVITY 1, + Y DOUBLE DEFAULT NULL SELECTIVITY 63, + L1 VARCHAR(255) DEFAULT NULL SELECTIVITY 5, + L2 DOUBLE DEFAULT NULL SELECTIVITY 44, + REF VARCHAR(255) DEFAULT NULL SELECTIVITY 50, + FIELD9 VARCHAR(255) DEFAULT NULL SELECTIVITY 1, + FIELD10 DOUBLE DEFAULT NULL SELECTIVITY 12, + FIELD11 DOUBLE DEFAULT NULL SELECTIVITY 30, + FIELD12 VARCHAR(255) DEFAULT NULL SELECTIVITY 1, + FIELD13 VARCHAR(255) DEFAULT NULL SELECTIVITY 1, + FIELD14 DOUBLE DEFAULT NULL SELECTIVITY 31, + FIELD15 VARCHAR(255) DEFAULT NULL SELECTIVITY 3, + FIELD16 DOUBLE DEFAULT NULL SELECTIVITY 23, + FIELD17 VARCHAR(255) DEFAULT NULL SELECTIVITY 50, + FIELD18 VARCHAR(255) DEFAULT NULL SELECTIVITY 1 +); +ALTER TABLE PUBLIC.LUCIADATA8 ADD CONSTRAINT PUBLIC.CONSTRAINT_78 PRIMARY KEY(ID1); +-- 2438 +/- SELECT COUNT(*) FROM PUBLIC.LUCIADATA8; +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1, 1.0, 323.19, 1378951.4, 'T', 'methane', 0.99036, NULL, 2.22E-4, '1.1.1', NULL, 122.0, 200.0, 'T', 'CH4', NULL, NULL, 0.0222, '1.1.1', NULL), +(2, 2.0, 323.19, 1378951.4, 'T', 'water', 0.00964, NULL, 0.999778, '1.1.1', NULL, 122.0, 200.0, 'T', 'H2O', 0.964, NULL, NULL, '1.1.1', NULL), +(3, 3.0, 323.19, 6205281.3, 'T', 'methane', 0.99755, NULL, 9.45E-4, '1.1.2', NULL, 122.0, 900.0, 'T', 'CH4', NULL, NULL, 0.0945, '1.1.2', NULL), +(4, 4.0, 323.19, 6205281.3, 'T', 'water', 0.00245, NULL, 0.99823, '1.1.2', NULL, 122.0, 900.0, 'T', 'H2O', 0.245, NULL, NULL, '1.1.2', NULL), +(5, 5.0, 323.19, 1.3789514E7, 'T', 'methane', 0.99864, NULL, 0.00177, '1.1.3', NULL, 122.0, 2000.0, 'T', 'CH4', NULL, NULL, 0.177, '1.1.3', NULL), +(6, 6.0, 323.19, 1.3789514E7, 'T', 'water', 0.00136, NULL, 0.99823, '1.1.3', NULL, 122.0, 2000.0, 'T', 'H2O', 0.136, NULL, NULL, '1.1.3', NULL), +(7, 7.0, 348.21, 1378951.4, 'T', 'methane', 0.97065, NULL, 1.88E-4, '1.1.4', NULL, 167.0, 200.0, 'T', 'CH4', NULL, NULL, 0.0188, '1.1.4', NULL), +(8, 8.0, 348.21, 1378951.4, 'T', 'water', 0.02935, NULL, 0.999812, '1.1.4', NULL, 167.0, 200.0, 'T', 'H2O', 2.935, NULL, NULL, '1.1.4', NULL), +(9, 9.0, 348.21, 6205281.3, 'T', 'methane', 0.9929, NULL, 8.42E-4, '1.1.5', NULL, 167.0, 900.0, 'T', 'CH4', NULL, NULL, 0.0842, '1.1.5', NULL), +(10, 10.0, 348.21, 6205281.3, 'T', 'water', 0.0071, NULL, 0.999158, '1.1.5', NULL, 167.0, 900.0, 'T', 'H2O', 0.71, NULL, NULL, '1.1.5', NULL), +(11, 11.0, 348.21, 1.3789514E7, 'T', 'methane', 0.99634, NULL, 0.00164, '1.1.6', NULL, 167.0, 2000.0, 'T', 'CH4', NULL, NULL, 0.164, '1.1.6', NULL), +(12, 12.0, 348.21, 1.3789514E7, 'T', 'water', 0.00366, NULL, 0.99836, '1.1.6', NULL, 167.0, 2000.0, 'T', 'H2O', 0.366, NULL, NULL, '1.1.6', NULL), +(13, 13.0, 423.27, 1378951.4, 'T', 'methane', 0.6454, NULL, 1.73E-4, '1.1.7', NULL, 302.0, 200.0, 'T', 'CH4', NULL, NULL, 0.0173, '1.1.7', NULL), +(14, 14.0, 423.27, 1378951.4, 'T', 'water', 0.3546, NULL, 0.999827, '1.1.7', NULL, 302.0, 200.0, 'T', 'H2O', 35.46, NULL, NULL, '1.1.7', NULL), +(15, 15.0, 423.27, 6205281.3, 'T', 'methane', 0.915, NULL, 0.001, '1.1.8', NULL, 302.0, 900.0, 'T', 'CH4', NULL, NULL, 0.1, '1.1.8', NULL), +(16, 16.0, 423.27, 6205281.3, 'T', 'water', 0.085, NULL, 0.999, '1.1.8', NULL, 302.0, 900.0, 'T', 'H2O', 8.5, NULL, NULL, '1.1.8', NULL), +(17, 17.0, 423.27, 1.3789514E7, 'T', 'methane', 0.957, NULL, 0.00209, '1.1.9', NULL, 302.0, 2000.0, 'T', 'CH4', NULL, NULL, 0.209, '1.1.9', NULL), +(18, 18.0, 423.27, 1.3789514E7, 'T', 'water', 0.043, NULL, 0.99791, '1.1.9', NULL, 302.0, 2000.0, 'T', 'H2O', 4.3, NULL, NULL, '1.1.9', NULL), +(19, 19.0, 477.758, 6205281.3, 'T', 'methane', 0.6964, NULL, 0.00126, '1.1.10', NULL, 400.0, 900.0, 'T', 'CH4', NULL, NULL, 0.126, '1.1.10', NULL), +(20, 20.0, 477.758, 6205281.3, 'T', 'water', 0.3036, NULL, 0.99874, '1.1.10', NULL, 400.0, 900.0, 'T', 'H2O', 30.36, NULL, NULL, '1.1.10', NULL), +(21, 21.0, 477.758, 1.03421355E7, 'T', 'methane', 0.7995, NULL, 0.00233, '1.1.11', NULL, 400.0, 1500.0, 'T', 'CH4', NULL, NULL, 0.233, '1.1.11', NULL), +(22, 22.0, 477.758, 1.03421355E7, 'T', 'water', 0.2005, NULL, 0.99767, '1.1.11', NULL, 400.0, 1500.0, 'T', 'H2O', 20.05, NULL, NULL, '1.1.11', NULL), +(23, 23.0, 477.758, 1.3789514E7, 'T', 'methane', 0.839, NULL, 0.00317, '1.1.12', NULL, 400.0, 2000.0, 'T', 'CH4', NULL, NULL, 0.317, '1.1.12', NULL), +(24, 24.0, 477.758, 1.3789514E7, 'T', 'water', 0.161, NULL, 0.99683, '1.1.12', NULL, 400.0, 2000.0, 'T', 'H2O', 16.1, NULL, NULL, '1.1.12', NULL), +(25, 25.0, 533.358, 1.03421355E7, 'T', 'methane', 0.4904, NULL, 0.00284, '1.1.13', NULL, 500.0, 1500.0, 'T', 'CH4', NULL, NULL, 0.284, '1.1.13', NULL), +(26, 26.0, 533.358, 1.03421355E7, 'T', 'water', 0.5096, NULL, 0.99716, '1.1.13', NULL, 500.0, 1500.0, 'T', 'H2O', 50.96, NULL, NULL, '1.1.13', NULL), +(27, 27.0, 533.358, 1.3789514E7, 'T', 'methane', 0.5979, NULL, 0.00445, '1.1.14', NULL, 500.0, 2000.0, 'T', 'CH4', NULL, NULL, 0.445, '1.1.14', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(28, 28.0, 533.358, 1.3789514E7, 'T', 'water', 0.4021, NULL, 0.99555, '1.1.14', NULL, 500.0, 2000.0, 'T', 'H2O', 40.21, NULL, NULL, '1.1.14', NULL), +(29, 29.0, 588.958, 1.3789514E7, 'T', 'methane', 0.1678, NULL, 0.00337, '1.1.15', NULL, 600.0, 2000.0, 'T', 'CH4', NULL, NULL, 0.337, '1.1.15', NULL), +(30, 30.0, 588.958, 1.3789514E7, 'T', 'water', 0.8322, NULL, 0.99663, '1.1.15', NULL, 600.0, 2000.0, 'T', 'H2O', 83.22, NULL, NULL, '1.1.15', NULL), +(31, 31.0, 588.958, 1.689215465E7, 'T', 'methane', 0.254, NULL, 0.00676, '1.1.16', NULL, 600.0, 2450.0, 'T', 'CH4', NULL, NULL, 0.676, '1.1.16', NULL), +(32, 32.0, 588.958, 1.689215465E7, 'T', 'water', 0.746, NULL, 0.99324, '1.1.16', NULL, 600.0, 2450.0, 'T', 'H2O', 74.6, NULL, NULL, '1.1.16', NULL), +(33, 33.0, 288.718, 5067646.395, 'T', 'CO2', 0.999181, NULL, 0.0258, '1.3.1', NULL, 60.0, 735.0, 'T', 'CO2', NULL, NULL, 2.58, '1.3.1', NULL), +(34, 34.0, 288.718, 5067646.395, 'T', 'water', 8.19E-4, NULL, 0.9742, '1.3.1', NULL, 60.0, 735.0, 'T', 'H2O', 0.0819, NULL, NULL, '1.3.1', NULL), +(35, 35.0, 288.718, 1.013529279E7, 'L', 'CO2', NULL, '0.99722', 0.0242, '1.3.2', NULL, 60.0, 1470.0, 'L', 'CO2', NULL, NULL, 2.42, '1.3.2', NULL), +(36, 36.0, 288.718, 1.013529279E7, 'L', 'water', NULL, '0.00278', 0.9758, '1.3.2', NULL, 60.0, 1470.0, 'L', 'H2O', NULL, '0.278', NULL, '1.3.2', NULL), +(37, 37.0, 288.718, 2.027058558E7, 'L', 'CO2', NULL, '0.99708', 0.0261, '1.3.3', NULL, 60.0, 2940.0, 'L', 'CO2', NULL, NULL, 2.61, '1.3.3', NULL), +(38, 38.0, 288.718, 2.027058558E7, 'L', 'water', NULL, '0.00292', 0.9739, '1.3.3', NULL, 60.0, 2940.0, 'L', 'H2O', NULL, '0.292', NULL, '1.3.3', NULL), +(39, 39.0, 298.17, 5067646.395, 'T', 'CO2', 0.99872, NULL, 0.021, '1.3.4', NULL, 77.0, 735.0, 'T', 'CO2', NULL, NULL, 2.1, '1.3.4', NULL), +(40, 40.0, 298.17, 5067646.395, 'T', 'water', 0.00128, NULL, 0.979, '1.3.4', NULL, 77.0, 735.0, 'T', 'H2O', 0.128, NULL, NULL, '1.3.4', NULL), +(41, 41.0, 298.17, 1.013529279E7, 'L', 'CO2', NULL, '0.99664', 0.0249, '1.3.5', NULL, 77.0, 1470.0, 'L', 'CO2', NULL, NULL, 2.49, '1.3.5', NULL), +(42, 42.0, 298.17, 1.013529279E7, 'L', 'water', NULL, '0.00336', 0.9751, '1.3.5', NULL, 77.0, 1470.0, 'L', 'H2O', NULL, '0.336', NULL, '1.3.5', NULL), +(43, 43.0, 298.17, 2.027058558E7, 'L', 'CO2', NULL, '0.99624', 0.0257, '1.3.6', NULL, 77.0, 2940.0, 'L', 'CO2', NULL, NULL, 2.57, '1.3.6', NULL), +(44, 44.0, 298.17, 2.027058558E7, 'L', 'water', NULL, '0.00376', 0.9743, '1.3.6', NULL, 77.0, 2940.0, 'L', 'H2O', NULL, '0.376', NULL, '1.3.6', NULL), +(45, 45.0, 302.618, 5515805.6, 'T', 'CO2', 0.99843, NULL, 0.0203, '1.3.7', NULL, 85.0, 800.0, 'T', 'CO2', NULL, NULL, 2.03, '1.3.7', NULL), +(46, 46.0, 302.618, 5515805.6, 'T', 'water', 0.00157, NULL, 0.9797, '1.3.7', NULL, 85.0, 800.0, 'T', 'H2O', 0.157, NULL, NULL, '1.3.7', NULL), +(47, 47.0, 302.618, 1.013529279E7, 'L', 'CO2', NULL, '0.99611', 0.0239, '1.3.8', NULL, 85.0, 1470.0, 'L', 'CO2', NULL, NULL, 2.39, '1.3.8', NULL), +(48, 48.0, 302.618, 1.013529279E7, 'L', 'water', NULL, '0.00389', 0.9761, '1.3.8', NULL, 85.0, 1470.0, 'L', 'H2O', NULL, '0.389', NULL, '1.3.8', NULL), +(49, 49.0, 302.618, 2.027058558E7, 'L', 'CO2', NULL, '0.99564', 0.0263, '1.3.9', NULL, 85.0, 2940.0, 'L', 'CO2', NULL, NULL, 2.63, '1.3.9', NULL), +(50, 50.0, 302.618, 2.027058558E7, 'L', 'water', NULL, '0.00436', 0.9737, '1.3.9', NULL, 85.0, 2940.0, 'L', 'H2O', NULL, '0.436', NULL, '1.3.9', NULL), +(51, 51.0, 304.2304, 689475.7, 'T', 'CO2', 0.99306, NULL, 0.00331, '1.3.10', NULL, 87.9, 100.0, 'T', 'CO2', NULL, NULL, 0.331, '1.3.10', NULL), +(52, 52.0, 304.2304, 689475.7, 'T', 'water', 0.00694, NULL, 0.99669, '1.3.10', NULL, 87.9, 100.0, 'T', 'H2O', 0.694, NULL, NULL, '1.3.10', NULL), +(53, 53.0, 304.2304, 2533823.1975, 'T', 'CO2', 0.99761, NULL, 0.01056, '1.3.11', NULL, 87.9, 367.5, 'T', 'CO2', NULL, NULL, 1.056, '1.3.11', NULL), +(54, 54.0, 304.2304, 2533823.1975, 'T', 'water', 0.00239, NULL, 0.98944, '1.3.11', NULL, 87.9, 367.5, 'T', 'H2O', 0.239, NULL, NULL, '1.3.11', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(55, 55.0, 304.2304, 5067646.395, 'T', 'CO2', 0.99837, NULL, 0.01817, '1.3.12', NULL, 87.9, 735.0, 'T', 'CO2', NULL, NULL, 1.817, '1.3.12', NULL), +(56, 56.0, 304.2304, 5067646.395, 'T', 'water', 0.00163, NULL, 0.98183, '1.3.12', NULL, 87.9, 735.0, 'T', 'H2O', 0.163, NULL, NULL, '1.3.12', NULL), +(57, 57.0, 304.2304, 1.013529279E7, 'L', 'CO2', NULL, '0.99592', 0.0241, '1.3.13', NULL, 87.9, 1470.0, 'L', 'CO2', NULL, NULL, 2.41, '1.3.13', NULL), +(58, 58.0, 304.2304, 1.013529279E7, 'L', 'water', NULL, '0.00408', 0.9759, '1.3.13', NULL, 87.9, 1470.0, 'L', 'H2O', NULL, '0.408', NULL, '1.3.13', NULL), +(59, 59.0, 304.2304, 2.027058558E7, 'L', 'CO2', NULL, '0.9955', 0.0262, '1.3.14', NULL, 87.9, 2940.0, 'L', 'CO2', NULL, NULL, 2.62, '1.3.14', NULL), +(60, 60.0, 304.2304, 2.027058558E7, 'L', 'water', NULL, '0.0045', 0.9738, '1.3.14', NULL, 87.9, 2940.0, 'L', 'H2O', NULL, '0.45', NULL, '1.3.14', NULL), +(61, 61.0, 348.21, 689475.7, 'T', 'CO2', 0.93986, NULL, 0.00149, '1.3.15', NULL, 167.0, 100.0, 'T', 'CO2', NULL, NULL, 0.149, '1.3.15', NULL), +(62, 62.0, 348.21, 689475.7, 'T', 'water', 0.06014, NULL, 0.99851, '1.3.15', NULL, 167.0, 100.0, 'T', 'H2O', 6.014, NULL, NULL, '1.3.15', NULL), +(63, 63.0, 348.21, 2533823.1975, 'T', 'CO2', 0.98184, NULL, 0.00542, '1.3.16', NULL, 167.0, 367.5, 'T', 'CO2', NULL, NULL, 0.542, '1.3.16', NULL), +(64, 64.0, 348.21, 2533823.1975, 'T', 'water', 0.01816, NULL, 0.99458, '1.3.16', NULL, 167.0, 367.5, 'T', 'H2O', 1.816, NULL, NULL, '1.3.16', NULL), +(65, 65.0, 348.21, 5067646.395, 'T', 'CO2', 0.98913, NULL, 0.01006, '1.3.17', NULL, 167.0, 735.0, 'T', 'CO2', NULL, NULL, 1.006, '1.3.17', NULL), +(66, 66.0, 348.21, 5067646.395, 'T', 'water', 0.01087, NULL, 0.98994, '1.3.17', NULL, 167.0, 735.0, 'T', 'H2O', 1.087, NULL, NULL, '1.3.17', NULL), +(67, 67.0, 348.21, 1.013529279E7, 'T', 'CO2', 0.99273, NULL, 0.01616, '1.3.18', NULL, 167.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.616, '1.3.18', NULL), +(68, 68.0, 348.21, 1.013529279E7, 'T', 'water', 0.00727, NULL, 0.98384, '1.3.18', NULL, 167.0, 1470.0, 'T', 'H2O', 0.727, NULL, NULL, '1.3.18', NULL), +(69, 69.0, 348.21, 2.027058558E7, 'T', 'CO2', 0.99062, NULL, 0.0209, '1.3.19', NULL, 167.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.09, '1.3.19', NULL), +(70, 70.0, 348.21, 2.027058558E7, 'T', 'water', 0.00938, NULL, 0.9791, '1.3.19', NULL, 167.0, 2940.0, 'T', 'H2O', 0.938, NULL, NULL, '1.3.19', NULL), +(71, 71.0, 366.558, 689475.7, 'T', 'CO2', 0.8797, NULL, 9.73E-4, '1.3.20', NULL, 200.0, 100.0, 'T', 'CO2', NULL, NULL, 0.0973, '1.3.20', NULL), +(72, 72.0, 366.558, 689475.7, 'T', 'water', 0.1203, NULL, 0.999027, '1.3.20', NULL, 200.0, 100.0, 'T', 'H2O', 12.03, NULL, NULL, '1.3.20', NULL), +(73, 73.0, 366.558, 2533823.1975, 'T', 'CO2', 0.96529, NULL, 0.00435, '1.3.21', NULL, 200.0, 367.5, 'T', 'CO2', NULL, NULL, 0.435, '1.3.21', NULL), +(74, 74.0, 366.558, 2533823.1975, 'T', 'water', 0.03471, NULL, 0.99565, '1.3.21', NULL, 200.0, 367.5, 'T', 'H2O', 3.471, NULL, NULL, '1.3.21', NULL), +(75, 75.0, 366.558, 5067646.395, 'T', 'CO2', 0.9803, NULL, 0.00846, '1.3.22', NULL, 200.0, 735.0, 'T', 'CO2', NULL, NULL, 0.846, '1.3.22', NULL), +(76, 76.0, 366.558, 5067646.395, 'T', 'water', 0.0197, NULL, 0.99154, '13.322', NULL, 200.0, 735.0, 'T', 'H2O', 1.97, NULL, NULL, '13.322', NULL), +(77, 77.0, 366.558, 1.013529279E7, 'T', 'CO2', 0.98626, NULL, 0.0145, '1.3.23', NULL, 200.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.45, '1.3.23', NULL), +(78, 78.0, 366.558, 1.013529279E7, 'T', 'water', 0.01374, NULL, 0.9855, '1.3.23', NULL, 200.0, 1470.0, 'T', 'H2O', 1.374, NULL, NULL, '1.3.23', NULL), +(79, 79.0, 366.558, 2.027058558E7, 'T', 'CO2', 0.98568, NULL, 0.0206, '1.3.24', NULL, 200.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.06, '1.3.24', NULL), +(80, 80.0, 366.558, 2.027058558E7, 'T', 'water', 0.01432, NULL, 0.9794, '1.3.24', NULL, 200.0, 2940.0, 'T', 'H2O', 1.432, NULL, NULL, '1.3.24', NULL), +(81, 81.0, 394.358, 689475.7, 'T', 'CO2', 0.6889, NULL, 8.93E-4, '1.3.25', NULL, 250.0, 100.0, 'T', 'CO2', NULL, NULL, 0.0893, '1.3.25', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(82, 82.0, 394.358, 689475.7, 'T', 'water', 0.3111, NULL, 0.999107, '1.3.25', NULL, 250.0, 100.0, 'T', 'H2O', 31.11, NULL, NULL, '1.3.25', NULL), +(83, 83.0, 394.358, 2533823.1975, 'T', 'CO2', 0.9078, NULL, 0.00361, '1.3.26', NULL, 250.0, 367.5, 'T', 'CO2', NULL, NULL, 0.361, '1.3.26', NULL), +(84, 84.0, 394.358, 2533823.1975, 'T', 'water', 0.0922, NULL, 0.99639, '1.3.26', NULL, 250.0, 367.5, 'T', 'H2O', 9.22, NULL, NULL, '1.3.26', NULL), +(85, 85.0, 394.358, 5067646.395, 'T', 'CO2', 0.9483, NULL, 0.00731, '1.3.27', NULL, 250.0, 735.0, 'T', 'CO2', NULL, NULL, 0.731, '1.3.27', NULL), +(86, 86.0, 394.358, 5067646.395, 'T', 'water', 0.0517, NULL, 0.99269, '1.3.27', NULL, 250.0, 735.0, 'T', 'H2O', 5.17, NULL, NULL, '1.3.27', NULL), +(87, 87.0, 394.358, 1.013529279E7, 'T', 'CO2', 0.9677, NULL, 0.01316, '1.3.28', NULL, 250.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.316, '1.3.28', NULL), +(88, 88.0, 394.358, 1.013529279E7, 'T', 'water', 0.0323, NULL, 0.98684, '1.3.28', NULL, 250.0, 1470.0, 'T', 'H2O', 3.23, NULL, NULL, '1.3.28', NULL), +(89, 89.0, 394.358, 2.027058558E7, 'T', 'CO2', 0.9728, NULL, 0.0205, '1.3.29', NULL, 250.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.05, '1.3.29', NULL), +(90, 90.0, 394.358, 2.027058558E7, 'T', 'water', 0.0272, NULL, 0.9795, '1.3.29', NULL, 250.0, 2940.0, 'T', 'H2O', 2.72, NULL, NULL, '1.3.29', NULL), +(91, 91.0, 422.158, 689475.7, 'T', 'CO2', 0.326, NULL, 4.99E-4, '1.3.30', NULL, 300.0, 100.0, 'T', 'CO2', NULL, NULL, 0.0499, '1.3.30', NULL), +(92, 92.0, 422.158, 689475.7, 'T', 'water', 0.674, NULL, 0.999501, '1.3.30', NULL, 300.0, 100.0, 'T', 'H2O', 67.4, NULL, NULL, '1.3.30', NULL), +(93, 93.0, 422.158, 2533823.1975, 'T', 'CO2', 0.7991, NULL, 0.00316, '1.3.31', NULL, 300.0, 367.5, 'T', 'CO2', NULL, NULL, 0.316, '1.3.31', NULL), +(94, 94.0, 422.158, 2533823.1975, 'T', 'water', 0.2009, NULL, 0.99684, '1.3.31', NULL, 300.0, 367.5, 'T', 'H2O', 20.09, NULL, NULL, '1.3.31', NULL), +(95, 95.0, 422.158, 5067646.395, 'T', 'CO2', 0.8902, NULL, 0.00646, '1.3.32', NULL, 300.0, 735.0, 'T', 'CO2', NULL, NULL, 0.646, '1.3.32', NULL), +(96, 96.0, 422.158, 5067646.395, 'T', 'water', 0.1098, NULL, 0.99354, '1.3.32', NULL, 300.0, 735.0, 'T', 'H2O', 10.98, NULL, NULL, '1.3.32', NULL), +(97, 97.0, 422.158, 1.013529279E7, 'T', 'CO2', 0.9342, NULL, 0.01241, '1.3.33', NULL, 300.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.241, '1.3.33', NULL), +(98, 98.0, 422.158, 1.013529279E7, 'T', 'water', 0.0658, NULL, 0.98759, '1.3.33', NULL, 300.0, 1470.0, 'T', 'H2O', 6.58, NULL, NULL, '1.3.33', NULL), +(99, 99.0, 422.158, 2.027058558E7, 'T', 'CO2', 0.9503, NULL, 0.0205, '1.3.34', NULL, 300.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.05, '1.3.34', NULL), +(100, 100.0, 422.158, 2.027058558E7, 'T', 'water', 0.0497, NULL, 0.9795, '1.3.34', NULL, 300.0, 2940.0, 'T', 'H2O', 4.97, NULL, NULL, '1.3.34', NULL), +(101, 101.0, 477.758, 2533823.1975, 'T', 'CO2', 0.3242, NULL, 0.00136, '1.3.35', NULL, 400.0, 367.5, 'T', 'CO2', NULL, NULL, 0.136, '1.3.35', NULL), +(102, 102.0, 477.758, 2533823.1975, 'T', 'water', 0.6758, NULL, 0.99864, '1.3.35', NULL, 400.0, 367.5, 'T', 'H2O', 67.58, NULL, NULL, '1.3.35', NULL), +(103, 103.0, 477.758, 5067646.395, 'T', 'CO2', 0.6239, NULL, 0.00501, '1.3.36', NULL, 400.0, 735.0, 'T', 'CO2', NULL, NULL, 0.501, '1.3.36', NULL), +(104, 104.0, 477.758, 5067646.395, 'T', 'water', 0.3761, NULL, 0.99499, '1.3.36', NULL, 400.0, 735.0, 'T', 'H2O', 37.61, NULL, NULL, '1.3.36', NULL), +(105, 105.0, 477.758, 1.013529279E7, 'T', 'CO2', 0.7758, NULL, 0.0123, '1.3.37', NULL, 400.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.23, '1.3.37', NULL), +(106, 106.0, 477.758, 1.013529279E7, 'T', 'water', 0.2242, NULL, 0.9877, '1.3.37', NULL, 400.0, 1470.0, 'T', 'H2O', 22.42, NULL, NULL, '1.3.37', NULL), +(107, 107.0, 477.758, 2.027058558E7, 'T', 'CO2', 0.8526, NULL, 0.0205, '1.3.38', NULL, 400.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.05, '1.3.38', NULL), +(108, 108.0, 477.758, 2.027058558E7, 'T', 'water', 0.1474, NULL, 0.9795, '1.3.38', NULL, 400.0, 2940.0, 'T', 'H2O', 14.74, NULL, NULL, '1.3.38', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(109, 109.0, 533.358, 1.013529279E7, 'T', 'CO2', 0.4368, NULL, 0.01015, '1.3.39', NULL, 500.0, 1470.0, 'T', 'CO2', NULL, NULL, 1.015, '1.3.39', NULL), +(110, 110.0, 533.358, 1.013529279E7, 'T', 'water', 0.5632, NULL, 0.98985, '1.3.39', NULL, 500.0, 1470.0, 'T', 'H2O', 56.32, NULL, NULL, '1.3.39', NULL), +(111, 111.0, 533.358, 2.027058558E7, 'T', 'CO2', 0.6282, NULL, 0.0239, '1.3.40', NULL, 500.0, 2940.0, 'T', 'CO2', NULL, NULL, 2.39, '1.3.40', NULL), +(112, 112.0, 533.358, 2.027058558E7, 'T', 'water', 0.3718, NULL, 0.9761, '1.3.40', NULL, 500.0, 2940.0, 'T', 'H2O', 37.18, NULL, NULL, '1.3.40', NULL), +(113, 113.0, 310.958, 4136854.2, 'L', 'H2S', NULL, '0.9816', 0.0335, '1.5.1', NULL, 100.0, 600.0, 'L', 'H2S', NULL, NULL, 3.35, '1.5.1', NULL), +(114, 114.0, 310.958, 4136854.2, 'L', 'water', NULL, '0.0184', 0.9665, '1.5.1', NULL, 100.0, 600.0, 'L', 'H2O', NULL, '1.84', NULL, '1.5.1', NULL), +(115, 115.0, 310.958, 6894757.0, 'L', 'H2S', NULL, '0.982', 0.0338, '1.5.2', NULL, 100.0, 1000.0, 'L', 'H2S', NULL, NULL, 3.38, '1.5.2', NULL), +(116, 116.0, 310.958, 6894757.0, 'L', 'water', NULL, '0.018', 0.9662, '1.5.2', NULL, 100.0, 1000.0, 'L', 'H2O', NULL, '1.8', NULL, '1.5.2', NULL), +(117, 117.0, 310.958, 1.03421355E7, 'L', 'H2S', NULL, '0.9819', 0.0351, '1.5.3', NULL, 100.0, 1500.0, 'L', 'H2S', NULL, NULL, 3.51, '1.5.3', NULL), +(118, 118.0, 310.958, 1.03421355E7, 'L', 'water', NULL, '0.0181', 0.9649, '1.5.3', NULL, 100.0, 1500.0, 'L', 'H2O', NULL, '1.81', NULL, '1.5.3', NULL), +(119, 119.0, 310.958, 1.3789514E7, 'L', 'H2S', NULL, '0.9821', 0.0344, '1.5.4', NULL, 100.0, 2000.0, 'L', 'H2S', NULL, NULL, 3.44, '1.5.4', NULL), +(120, 120.0, 310.958, 1.3789514E7, 'L', 'water', NULL, '0.0179', 0.9656, '1.5.4', NULL, 100.0, 2000.0, 'L', 'H2O', NULL, '1.79', NULL, '1.5.4', NULL), +(121, 121.0, 310.958, 2.0684271E7, 'L', 'H2S', NULL, '0.9817', 0.0359, '1.5.5', NULL, 100.0, 3000.0, 'L', 'H2S', NULL, NULL, 3.59, '1.5.5', NULL), +(122, 122.0, 310.958, 2.0684271E7, 'L', 'water', NULL, '0.0183', 0.9641, '1.5.5', NULL, 100.0, 3000.0, 'L', 'H2O', NULL, '1.83', NULL, '1.5.5', NULL), +(123, 123.0, 344.318, 6894757.0, 'L', 'H2S', NULL, '0.9684', 0.0398, '1.5.6', NULL, 160.0, 1000.0, 'L', 'H2S', NULL, NULL, 3.98, '1.5.6', NULL), +(124, 124.0, 344.318, 6894757.0, 'L', 'water', NULL, '0.0316', 0.9602, '1.5.6', NULL, 160.0, 1000.0, 'L', 'H2O', NULL, '3.16', NULL, '1.5.6', NULL), +(125, 125.0, 344.318, 1.03421355E7, 'L', 'H2S', NULL, '0.9671', 0.0393, '1.5.7', NULL, 160.0, 1500.0, 'L', 'H2S', NULL, NULL, 3.93, '1.5.7', NULL), +(126, 126.0, 344.318, 1.03421355E7, 'L', 'water', NULL, '0.0329', 0.9607, '1.5.7', NULL, 160.0, 1500.0, 'L', 'H2O', NULL, '3.29', NULL, '1.5.7', NULL), +(127, 127.0, 344.318, 1.3789514E7, 'L', 'H2S', NULL, '0.9657', 0.0417, '1.5.8', NULL, 160.0, 2000.0, 'L', 'H2S', NULL, NULL, 4.17, '1.5.8', NULL), +(128, 128.0, 344.318, 1.3789514E7, 'L', 'water', NULL, '0.0343', 0.9583, '1.5.8', NULL, 160.0, 2000.0, 'L', 'H2O', NULL, '3.43', NULL, '1.5.8', NULL), +(129, 129.0, 344.318, 2.0684271E7, 'L', 'H2S', NULL, '0.9643', 0.0406, '1.5.9', NULL, 160.0, 3000.0, 'L', 'H2S', NULL, NULL, 4.06, '1.5.9', NULL), +(130, 130.0, 344.318, 2.0684271E7, 'L', 'water', NULL, '0.0357', 0.9594, '1.5.9', NULL, 160.0, 3000.0, 'L', 'H2O', NULL, '3.57', NULL, '1.5.9', NULL), +(131, 131.0, 366.558, 8963184.1, 'L', 'H2S', NULL, '0.9536', 0.0441, '1.5.10', NULL, 200.0, 1300.0, 'L', 'H2S', NULL, NULL, 4.41, '1.5.10', NULL), +(132, 132.0, 366.558, 8963184.1, 'L', 'water', NULL, '0.0464', 0.9559, '1.5.10', NULL, 200.0, 1300.0, 'L', 'H2O', NULL, '4.64', NULL, '1.5.10', NULL), +(133, 133.0, 366.558, 1.03421355E7, 'L', 'H2S', NULL, '0.9529', 0.0433, '1.5.11', NULL, 200.0, 1500.0, 'L', 'H2S', NULL, NULL, 4.33, '1.5.11', NULL), +(134, 134.0, 366.558, 1.03421355E7, 'L', 'water', NULL, '0.0471', 0.9567, '1.5.11', NULL, 200.0, 1500.0, 'L', 'H2O', NULL, '4.71', NULL, '1.5.11', NULL), +(135, 135.0, 366.558, 1.3789514E7, 'L', 'H2S', NULL, '0.949', 0.0455, '1.5.12', NULL, 200.0, 2000.0, 'L', 'H2S', NULL, NULL, 4.55, '1.5.12', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(136, 136.0, 366.558, 1.3789514E7, 'L', 'water', NULL, '0.051', 0.9545, '1.5.12', NULL, 200.0, 2000.0, 'L', 'H2O', NULL, '5.1', NULL, '1.5.12', NULL), +(137, 137.0, 366.558, 2.0684271E7, 'L', 'H2S', NULL, '0.9456', 0.0466, '1.5.13', NULL, 200.0, 3000.0, 'L', 'H2S', NULL, NULL, 4.66, '1.5.13', NULL), +(138, 138.0, 366.558, 2.0684271E7, 'L', 'water', NULL, '0.0544', 0.9534, '1.5.13', NULL, 200.0, 3000.0, 'L', 'H2O', NULL, '5.44', NULL, '1.5.13', NULL), +(139, 139.0, 372.118, 1.03421355E7, 'L', 'H2S', NULL, '0.9503', 0.0443, '1.5.14', NULL, 210.0, 1500.0, 'L', 'H2S', NULL, NULL, 4.43, '1.5.14', NULL), +(140, 140.0, 372.118, 1.03421355E7, 'L', 'water', NULL, '0.0497', 0.9557, '1.5.14', NULL, 210.0, 1500.0, 'L', 'H2O', NULL, '4.97', NULL, '1.5.14', NULL), +(141, 141.0, 372.118, 1.3789514E7, 'L', 'H2S', NULL, '0.9464', 0.047, '1.5.15', NULL, 210.0, 2000.0, 'L', 'H2S', NULL, NULL, 4.7, '1.5.15', NULL), +(142, 142.0, 372.118, 1.3789514E7, 'L', 'water', NULL, '0.0536', 0.953, '1.5.15', NULL, 210.0, 2000.0, 'L', 'H2O', NULL, '5.36', NULL, '1.5.15', NULL), +(143, 143.0, 372.118, 2.0684271E7, 'L', 'H2S', NULL, '0.9418', 0.0501, '1.5.16', NULL, 210.0, 3000.0, 'L', 'H2S', NULL, NULL, 5.01, '1.5.16', NULL), +(144, 144.0, 372.118, 2.0684271E7, 'L', 'water', NULL, '0.0582', 0.9499, '1.5.16', NULL, 210.0, 3000.0, 'L', 'H2O', NULL, '5.82', NULL, '1.5.16', NULL), +(145, 145.0, 373.6192, 1.03421355E7, 'L', 'H2S', NULL, '0.949', 0.0436, '1.5.17', NULL, 212.7, 1500.0, 'L', 'H2S', NULL, NULL, 4.36, '1.5.17', NULL), +(146, 146.0, 373.6192, 1.03421355E7, 'L', 'water', NULL, '0.051', 0.9564, '1.5.17', NULL, 212.7, 1500.0, 'L', 'H2O', NULL, '5.1', NULL, '1.5.17', NULL), +(147, 147.0, 373.6192, 1.3789514E7, 'L', 'H2S', NULL, '0.9437', 0.0463, '1.5.18', NULL, 212.7, 2000.0, 'L', 'H2S', NULL, NULL, 4.63, '1.5.18', NULL), +(148, 148.0, 373.6192, 1.3789514E7, 'L', 'water', NULL, '0.0563', 0.9537, '1.5.18', NULL, 212.7, 2000.0, 'L', 'H2O', NULL, '5.63', NULL, '1.5.18', NULL), +(149, 149.0, 373.6192, 2.0684271E7, 'L', 'H2S', NULL, '0.9406', 0.0506, '1.5.19', NULL, 212.7, 3000.0, 'L', 'H2S', NULL, NULL, 5.06, '1.5.19', NULL), +(150, 150.0, 373.6192, 2.0684271E7, 'L', 'water', NULL, '0.0594', 0.9494, '1.5.19', NULL, 212.7, 3000.0, 'L', 'H2O', NULL, '5.94', NULL, '1.5.19', NULL), +(151, 151.0, 422.158, 1.3789514E7, 'T', 'H2S', 0.9213, NULL, 0.058, '1.5.20', NULL, 300.0, 2000.0, 'T', 'H2S', NULL, NULL, 5.8, '1.5.20', NULL), +(152, 152.0, 422.158, 1.3789514E7, 'T', 'water', 0.0787, NULL, 0.942, '1.5.20', NULL, 300.0, 2000.0, 'T', 'H2O', 7.87, NULL, NULL, '1.5.20', NULL), +(153, 153.0, 422.158, 2.0684271E7, 'T', 'H2S', 0.882, NULL, 0.0706, '1.5.21', NULL, 300.0, 3000.0, 'T', 'H2S', NULL, NULL, 7.06, '1.5.21', NULL), +(154, 154.0, 422.158, 2.0684271E7, 'T', 'water', 0.118, NULL, 0.9294, '1.5.21', NULL, 300.0, 3000.0, 'T', 'H2O', 11.8, NULL, NULL, '1.5.21', NULL), +(155, 155.0, 477.758, 1.03421355E7, 'T', 'H2S', 0.762, NULL, 0.0387, '1.5.22', NULL, 400.0, 1500.0, 'T', 'H2S', NULL, NULL, 3.87, '1.5.22', NULL), +(156, 156.0, 477.758, 1.03421355E7, 'T', 'water', 0.238, NULL, 0.9613, '1.5.22', NULL, 400.0, 1500.0, 'T', 'H2O', 23.8, NULL, NULL, '1.5.22', NULL), +(157, 157.0, 477.758, 1.3789514E7, 'T', 'H2S', 0.793, NULL, 0.0595, '1.5.23', NULL, 400.0, 2000.0, 'T', 'H2S', NULL, NULL, 5.95, '1.5.23', NULL), +(158, 158.0, 477.758, 1.3789514E7, 'T', 'water', 0.207, NULL, 0.9405, '1.5.23', NULL, 400.0, 2000.0, 'T', 'H2O', 20.7, NULL, NULL, '1.5.23', NULL), +(159, 159.0, 477.758, 2.0684271E7, 'T', 'H2S', 0.786, NULL, 0.0972, '1.5.24', NULL, 400.0, 3000.0, 'T', 'H2S', NULL, NULL, 9.72, '1.5.24', NULL), +(160, 160.0, 477.758, 2.0684271E7, 'T', 'water', 0.214, NULL, 0.9028, '1.5.24', NULL, 400.0, 3000.0, 'T', 'H2O', 21.4, NULL, NULL, '1.5.24', NULL), +(161, 161.0, 533.358, 5515805.6, 'T', 'H2S', 0.121, NULL, 0.00439, '1.5.25', NULL, 500.0, 800.0, 'T', 'H2S', NULL, NULL, 0.439, '1.5.25', NULL), +(162, 162.0, 533.358, 5515805.6, 'T', 'water', 0.879, NULL, 0.99561, '1.5.25', NULL, 500.0, 800.0, 'T', 'H2O', 87.9, NULL, NULL, '1.5.25', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(163, 163.0, 533.358, 1.03421355E7, 'T', 'H2S', 0.441, NULL, 0.02911, '1.5.26', NULL, 500.0, 1500.0, 'T', 'H2S', NULL, NULL, 2.911, '1.5.26', NULL), +(164, 164.0, 533.358, 1.03421355E7, 'T', 'water', 0.559, NULL, 0.97089, '1.5.26', NULL, 500.0, 1500.0, 'T', 'H2O', 55.9, NULL, NULL, '1.5.26', NULL), +(165, 165.0, 533.358, 2.0684271E7, 'T', 'H2S', 0.58, NULL, 0.094, '1.5.27', NULL, 500.0, 3000.0, 'T', 'H2S', NULL, NULL, 9.4, '1.5.27', NULL), +(166, 166.0, 533.358, 2.0684271E7, 'T', 'water', 0.42, NULL, 0.906, '1.5.27', NULL, 500.0, 3000.0, 'T', 'H2O', 42.0, NULL, NULL, '1.5.27', NULL), +(167, 167.0, 588.958, 1.3789514E7, 'T', 'H2S', 0.148, NULL, 0.0249, '1.5.28', NULL, 600.0, 2000.0, 'T', 'H2S', NULL, NULL, 2.49, '1.5.28', NULL), +(168, 168.0, 588.958, 1.3789514E7, 'T', 'water', 0.852, NULL, 0.9751, '1.5.28', NULL, 600.0, 2000.0, 'T', 'H2O', 85.2, NULL, NULL, '1.5.28', NULL), +(169, 169.0, 588.958, 1.72368925E7, 'T', 'H2S', 0.271, NULL, 0.0491, '1.5.29', NULL, 600.0, 2500.0, 'T', 'H2S', NULL, NULL, 4.91, '1.5.29', NULL), +(170, 170.0, 588.958, 1.72368925E7, 'T', 'water', 0.729, NULL, 0.9509, '1.5.29', NULL, 600.0, 2500.0, 'T', 'H2O', 72.9, NULL, NULL, '1.5.29', NULL), +(171, 171.0, 588.958, 2.0684271E7, 'T', 'H2S', 0.341, NULL, 0.0727, '1.5.30', NULL, 600.0, 3000.0, 'T', 'H2S', NULL, NULL, 7.27, '1.5.30', NULL), +(172, 172.0, 588.958, 2.0684271E7, 'T', 'water', 0.659, NULL, 0.9273, '1.5.30', NULL, 600.0, 3000.0, 'T', 'H2O', 65.9, NULL, NULL, '1.5.30', NULL), +(173, 173.0, 310.958, 827370.84, 'T', 'n-pentane', 0.999436, NULL, 1.39E-5, '1.7.1', NULL, 100.0, 120.0, 'T', 'n-pentane', NULL, NULL, 0.00139, '1.7.1', NULL), +(174, 174.0, 310.958, 827370.84, 'T', 'water', 5.64E-4, NULL, 0.9999861, '1.7.1', NULL, 100.0, 120.0, 'T', 'H2O', 0.0564, NULL, NULL, '1.7.1', NULL), +(175, 175.0, 310.958, 1.3789514E7, 'T', 'n-pentane', 0.99955, NULL, 1.28E-5, '1.7.2', NULL, 100.0, 2000.0, 'T', 'n-pentane', NULL, NULL, 0.00128, '1.7.2', NULL), +(176, 176.0, 310.958, 1.3789514E7, 'T', 'water', 4.5E-4, NULL, 0.9999872, '1.7.2', NULL, 100.0, 2000.0, 'T', 'H2O', 0.045, NULL, NULL, '1.7.2', NULL), +(177, 177.0, 366.558, 1310003.83, 'T', 'n-pentane', 0.99176, NULL, 2.85E-5, '1.7.3', NULL, 200.0, 190.0, 'T', 'n-pentane', NULL, NULL, 0.00285, '1.7.3', NULL), +(178, 178.0, 366.558, 1310003.83, 'T', 'water', 0.00824, NULL, 0.9999715, '1.7.3', NULL, 200.0, 190.0, 'T', 'H2O', 0.824, NULL, NULL, '1.7.3', NULL), +(179, 179.0, 366.558, 6205281.3, 'T', 'n-pentane', 1.0, NULL, 2.55E-5, '1.7.4', NULL, 200.0, 900.0, 'T', 'n-pentane', NULL, NULL, 0.00255, '1.7.4', NULL), +(180, 180.0, 366.558, 6205281.3, 'T', 'water', 0.0, NULL, 0.9999745, '1.7.4', NULL, 200.0, 900.0, 'T', 'H2O', NULL, NULL, NULL, '1.7.4', NULL), +(181, 181.0, 366.558, 1.3789514E7, 'T', 'n-pentane', 0.99188, NULL, 2.74E-5, '1.7.5', NULL, 200.0, 2000.0, 'T', 'n-pentane', NULL, NULL, 0.00274, '1.7.5', NULL), +(182, 182.0, 366.558, 1.3789514E7, 'T', 'water', 0.00812, NULL, 0.9999726, '1.7.5', NULL, 200.0, 2000.0, 'T', 'H2O', 0.812, NULL, NULL, '1.7.5', NULL), +(183, 183.0, 422.158, 2964745.51, 'T', 'n-pentane', 0.9629, NULL, 7.42E-5, '1.7.6', NULL, 300.0, 430.0, 'T', 'n-pentane', NULL, NULL, 0.00742, '1.7.6', NULL), +(184, 184.0, 422.158, 2964745.51, 'T', 'water', 0.0371, NULL, 0.9999258, '1.7.6', NULL, 300.0, 430.0, 'T', 'H2O', 3.71, NULL, NULL, '1.7.6', NULL), +(185, 185.0, 422.158, 1.3789514E7, 'T', 'n-pentane', 0.9691, NULL, 7.42E-5, '1.7.7', NULL, 300.0, 2000.0, 'T', 'n-pentane', NULL, NULL, 0.00742, '1.7.7', NULL), +(186, 186.0, 422.158, 1.3789514E7, 'T', 'water', 0.0309, NULL, 0.9999258, '1.7.7', NULL, 300.0, 2000.0, 'T', 'H2O', 3.09, NULL, NULL, '1.7.7', NULL), +(187, 187.0, 463.858, 3447378.5, 'T', 'n-pentane', 0.65, NULL, 0.0, '1.7.8', NULL, 375.0, 500.0, 'T', 'n-pentane', NULL, NULL, NULL, '1.7.8', NULL), +(188, 188.0, 463.858, 3447378.5, 'T', 'water', 0.35, NULL, 1.0, '1.7.8', NULL, 375.0, 500.0, 'T', 'H2O', 35.0, NULL, NULL, '1.7.8', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(189, 189.0, 463.858, 4136854.2, 'T', 'n-pentane', 0.75, NULL, 2.34E-4, '1.7.9', NULL, 375.0, 600.0, 'T', 'n-pentane', NULL, NULL, 0.0234, '1.7.9', NULL), +(190, 190.0, 463.858, 4136854.2, 'T', 'water', 0.25, NULL, 0.999766, '1.7.9', NULL, 375.0, 600.0, 'T', 'H2O', 25.0, NULL, NULL, '1.7.9', NULL), +(191, 191.0, 463.858, 5308962.89, 'T', 'n-pentane', 0.895, NULL, 2.58E-4, '1.7.10', NULL, 375.0, 770.0, 'T', 'n-pentane', NULL, NULL, 0.0258, '1.7.10', NULL), +(192, 192.0, 463.858, 5308962.89, 'T', 'water', 0.105, NULL, 0.999742, '1.7.10', NULL, 375.0, 770.0, 'T', 'H2O', 10.5, NULL, NULL, '1.7.10', NULL), +(193, 193.0, 463.858, 6205281.3, 'T', 'n-pentane', 0.9, NULL, 2.58E-4, '1.7.11', NULL, 375.0, 900.0, 'T', 'n-pentane', NULL, NULL, 0.0258, '1.7.11', NULL), +(194, 194.0, 463.858, 6205281.3, 'T', 'water', 0.1, NULL, 0.999742, '1.7.11', NULL, 375.0, 900.0, 'T', 'H2O', 10.0, NULL, NULL, '1.7.11', NULL), +(195, 195.0, 463.858, 1.03421355E7, 'T', 'n-pentane', 0.912, NULL, 2.68E-4, '1.7.12', NULL, 375.0, 1500.0, 'T', 'n-pentane', NULL, NULL, 0.0268, '1.7.12', NULL), +(196, 196.0, 463.858, 1.03421355E7, 'T', 'water', 0.088, NULL, 0.999732, '1.7.12', NULL, 375.0, 1500.0, 'T', 'H2O', 8.8, NULL, NULL, '1.7.12', NULL), +(197, 197.0, 463.858, 1.3789514E7, 'T', 'n-pentane', 0.9203, NULL, 2.61E-4, '1.7.13', NULL, 375.0, 2000.0, 'T', 'n-pentane', NULL, NULL, 0.0261, '1.7.13', NULL), +(198, 198.0, 463.858, 1.3789514E7, 'T', 'water', 0.0797, NULL, 0.999739, '1.7.13', NULL, 375.0, 2000.0, 'T', 'H2O', 7.97, NULL, NULL, '1.7.13', NULL), +(199, 199.0, 469.418, 4136854.2, 'T', 'n-pentane', 0.71, NULL, 2.52E-4, '1.7.14', NULL, 385.0, 600.0, 'T', 'n-pentane', NULL, NULL, 0.0252, '1.7.14', NULL), +(200, 200.0, 469.418, 4136854.2, 'T', 'water', 0.29, NULL, 0.999748, '1.7.14', NULL, 385.0, 600.0, 'T', 'H2O', 29.0, NULL, NULL, '1.7.14', NULL), +(201, 201.0, 469.418, 5860543.45, 'T', 'n-pentane', 0.881, NULL, 3.07E-4, '1.7.15', NULL, 385.0, 850.0, 'T', 'n-pentane', NULL, NULL, 0.0307, '1.7.15', NULL), +(202, 202.0, 469.418, 5860543.45, 'T', 'water', 0.119, NULL, 0.999693, '1.7.15', NULL, 385.0, 850.0, 'T', 'H2O', 11.9, NULL, NULL, '1.7.15', NULL), +(203, 203.0, 469.418, 6205281.3, 'T', 'n-pentane', 0.881, NULL, 2.86E-4, '1.7.16', NULL, 385.0, 900.0, 'T', 'n-pentane', NULL, NULL, 0.0286, '1.7.16', NULL), +(204, 204.0, 469.418, 6205281.3, 'T', 'water', 0.119, NULL, 0.999714, '1.7.16', NULL, 385.0, 900.0, 'T', 'H2O', 11.9, NULL, NULL, '1.7.16', NULL), +(205, 205.0, 469.418, 1.03421355E7, 'T', 'n-pentane', 0.9069, NULL, 2.99E-4, '1.7.17', NULL, 385.0, 1500.0, 'T', 'n-pentane', NULL, NULL, 0.0299, '1.7.17', NULL), +(206, 206.0, 469.418, 1.03421355E7, 'T', 'water', 0.0931, NULL, 0.999701, '1.7.17', NULL, 385.0, 1500.0, 'T', 'H2O', 9.31, NULL, NULL, '1.7.17', NULL), +(207, 207.0, 469.418, 1.3789514E7, 'T', 'n-pentane', 0.9089, NULL, 3.36E-4, '1.7.18', NULL, 385.0, 2000.0, 'T', 'n-pentane', NULL, NULL, 0.0336, '1.7.18', NULL), +(208, 208.0, 469.418, 1.3789514E7, 'T', 'water', 0.0911, NULL, 0.999664, '1.7.18', NULL, 385.0, 2000.0, 'T', 'H2O', 9.11, NULL, NULL, '1.7.18', NULL), +(209, 209.0, 477.758, 4826329.9, 'T', 'n-pentane', 0.683, NULL, 3.26E-4, '1.7.19', NULL, 400.0, 700.0, 'T', 'n-pentane', NULL, NULL, 0.0326, '1.7.19', NULL), +(210, 210.0, 477.758, 4826329.9, 'T', 'water', 0.317, NULL, 0.999674, '1.7.19', NULL, 400.0, 700.0, 'T', 'H2O', 31.7, NULL, NULL, '1.7.19', NULL), +(211, 211.0, 477.758, 6963704.57, 'T', 'n-pentane', 0.861, NULL, 3.62E-4, '1.7.20', NULL, 400.0, 1010.0, 'T', 'n-pentane', NULL, NULL, 0.0362, '1.7.20', NULL), +(212, 212.0, 477.758, 6963704.57, 'T', 'water', 0.139, NULL, 0.999638, '1.7.20', NULL, 400.0, 1010.0, 'T', 'H2O', 13.9, NULL, NULL, '1.7.20', NULL), +(213, 213.0, 477.758, 1.03421355E7, 'T', 'n-pentane', 0.892, NULL, 3.83E-4, '1.7.21', NULL, 400.0, 1500.0, 'T', 'n-pentane', NULL, NULL, 0.0383, '1.7.21', NULL), +(214, 214.0, 477.758, 1.03421355E7, 'T', 'water', 0.108, NULL, 0.999617, '1.7.21', NULL, 400.0, 1500.0, 'T', 'H2O', 10.8, NULL, NULL, '1.7.21', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(215, 215.0, 477.758, 1.3789514E7, 'T', 'n-pentane', 0.9, NULL, 4.0E-4, '1.7.22', NULL, 400.0, 2000.0, 'T', 'n-pentane', NULL, NULL, 0.04, '1.7.22', NULL), +(216, 216.0, 477.758, 1.3789514E7, 'T', 'water', 0.1, NULL, 0.9996, '1.7.22', NULL, 400.0, 2000.0, 'T', 'H2O', 10.0, NULL, NULL, '1.7.22', NULL), +(217, 217.0, 533.358, 6205281.3, 'T', 'n-pentane', 0.11, NULL, 5.63E-4, '1.7.23', NULL, 500.0, 900.0, 'T', 'n-pentane', NULL, NULL, 0.0563, '1.7.23', NULL), +(218, 218.0, 533.358, 6205281.3, 'T', 'water', 0.89, NULL, 0.999437, '1.7.23', NULL, 500.0, 900.0, 'T', 'H2O', 89.0, NULL, NULL, '1.7.23', '\"data points are questionable\"'), +(219, 219.0, 533.358, 1.03421355E7, 'T', 'n-pentane', 0.46, NULL, 0.00129, '1.7.24', NULL, 500.0, 1500.0, 'T', 'n-pentane', NULL, NULL, 0.129, '1.7.24', NULL), +(220, 220.0, 533.358, 1.03421355E7, 'T', 'water', 0.54, NULL, 0.99871, '1.7.24', NULL, 500.0, 1500.0, 'T', 'H2O', 54.0, NULL, NULL, '1.7.24', NULL), +(221, 221.0, 533.358, 1.3789514E7, 'T', 'n-pentane', 0.655, NULL, 0.00144, '1.7.25', NULL, 500.0, 2000.0, 'T', 'n-pentane', NULL, NULL, 0.144, '1.7.25', NULL), +(222, 222.0, 533.358, 1.3789514E7, 'T', 'water', 0.345, NULL, 0.99856, '1.7.25', NULL, 500.0, 2000.0, 'T', 'H2O', 34.5, NULL, NULL, '1.7.25', NULL), +(223, 223.0, 588.958, 1.3789514E7, 'T', 'n-pentane', 0.13, NULL, 0.00325, '1.7.26', NULL, 600.0, 2000.0, 'T', 'n-pentane', NULL, NULL, 0.325, '1.7.26', NULL), +(224, 224.0, 588.958, 1.3789514E7, 'T', 'water', 0.87, NULL, 0.99675, '1.7.26', NULL, 600.0, 2000.0, 'T', 'H2O', 87.0, NULL, NULL, '1.7.26', NULL), +(225, 225.0, 588.958, 2.0684271E7, 'T', 'n-pentane', 0.28, NULL, 0.00516, '1.7.27', NULL, 600.0, 3000.0, 'T', 'n-pentane', NULL, NULL, 0.516, '1.7.27', NULL), +(226, 226.0, 588.958, 2.0684271E7, 'T', 'water', 0.72, NULL, 0.99484, '1.7.27', NULL, 600.0, 3000.0, 'T', 'H2O', 72.0, NULL, NULL, '1.7.27', NULL), +(227, 227.0, 311.514, 118245.08255, 'M', 'n-pentane', 0.9363, '0.999598', 1.15E-5, '1.8.1', NULL, 101.0, 17.15, 'M', 'n-pentane', NULL, NULL, 0.00115, '1.8.1', NULL), +(228, 228.0, 311.514, 118245.08255, 'M', 'water', 0.0637, '0.000402', 0.9999885, '1.8.1', NULL, 101.0, 17.15, 'M', 'H2O', 6.37, '0.0402', NULL, '1.8.1', NULL), +(229, 229.0, 367.67, 617080.7515, 'M', 'n-pentane', 0.8477, '0.99586', 2.35E-5, '1.8.2', NULL, 202.0, 89.5, 'M', 'n-pentane', NULL, NULL, 0.00235, '1.8.2', NULL), +(230, 230.0, 367.67, 617080.7515, 'M', 'water', 0.1523, '0.00414', 0.9999765, '1.8.2', NULL, 202.0, 89.5, 'M', 'H2O', 15.23, '0.414', NULL, '1.8.2', NULL), +(231, 231.0, 423.4924, 2123585.156, 'M', 'n-pentane', 0.99586, '0.9678', 6.99E-5, '1.8.3', NULL, 302.4, 308.0, 'M', 'n-pentane', NULL, NULL, 0.00699, '1.8.3', NULL), +(232, 232.0, 423.4924, 2123585.156, 'M', 'water', 0.00414, '0.0322', 0.9999301, '1.8.3', NULL, 302.4, 308.0, 'M', 'H2O', 0.414, '3.22', NULL, '1.8.3', NULL), +(233, 290.0, 310.958, 1.37157401001E7, 'V', 'methane', 0.999329, NULL, NULL, '2.1.1', NULL, 100.0, 1989.3, 'V', 'CH4', NULL, NULL, NULL, '2.1.1', 'Reference 2: compositions in mole fraction of water x10^3'), +(234, 291.0, 310.958, 1.37157401001E7, 'V', 'water', 6.71E-4, NULL, NULL, '2.1.1', NULL, 100.0, 1989.3, 'V', 'H2O', 0.671, NULL, NULL, '2.1.1', NULL), +(235, 292.0, 310.958, 1.34854552163E7, 'V', 'methane', 0.999329, NULL, NULL, '2.1.2', NULL, 100.0, 1955.9, 'V', 'CH4', NULL, NULL, NULL, '2.1.2', NULL), +(236, 293.0, 310.958, 1.34854552163E7, 'V', 'water', 6.71E-4, NULL, NULL, '2.1.2', NULL, 100.0, 1955.9, 'V', 'H2O', 0.671, NULL, NULL, '2.1.2', NULL), +(237, 294.0, 310.958, 2.08621557306E7, 'V', 'methane', 0.99937, NULL, NULL, '2.1.3', NULL, 100.0, 3025.8, 'V', 'CH4', NULL, NULL, NULL, '2.1.3', NULL), +(238, 295.0, 310.958, 2.08621557306E7, 'V', 'water', 6.3E-4, NULL, NULL, '2.1.3', NULL, 100.0, 3025.8, 'V', 'H2O', 0.63, NULL, NULL, '2.1.3', NULL), +(239, 296.0, 310.958, 2.08180292858E7, 'V', 'methane', 0.999355, NULL, NULL, '2.1.4', NULL, 100.0, 3019.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.4', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(240, 297.0, 310.958, 2.08180292858E7, 'V', 'water', 6.45E-4, NULL, NULL, '2.1.4', NULL, 100.0, 3019.4, 'V', 'H2O', 0.645, NULL, NULL, '2.1.4', NULL), +(241, 298.0, 310.958, 8615688.3472, 'V', 'methane', 0.998533, NULL, NULL, '2.1.5', NULL, 100.0, 1249.6, 'V', 'CH4', NULL, NULL, NULL, '2.1.5', NULL), +(242, 299.0, 310.958, 8615688.3472, 'V', 'water', 0.001467, NULL, NULL, '2.1.5', NULL, 100.0, 1249.6, 'V', 'H2O', 1.467, NULL, NULL, '2.1.5', NULL), +(243, 300.0, 310.958, 8310940.0878, 'V', 'methane', 0.998722, NULL, NULL, '2.1.6', NULL, 100.0, 1205.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.6', NULL), +(244, 301.0, 310.958, 8310940.0878, 'V', 'water', 0.001278, NULL, NULL, '2.1.6', NULL, 100.0, 1205.4, 'V', 'H2O', 1.278, NULL, NULL, '2.1.6', NULL), +(245, 302.0, 310.958, 4.17119008986E7, 'V', 'methane', 0.999516, NULL, NULL, '2.1.7', NULL, 100.0, 6049.8, 'V', 'CH4', NULL, NULL, NULL, '2.1.7', NULL), +(246, 303.0, 310.958, 4.17119008986E7, 'V', 'water', 4.84E-4, NULL, NULL, '2.1.7', NULL, 100.0, 6049.8, 'V', 'H2O', 0.484, NULL, NULL, '2.1.7', NULL), +(247, 304.0, 310.958, 3.46647697689E7, 'V', 'methane', 0.999494, NULL, NULL, '2.1.8', NULL, 100.0, 5027.7, 'V', 'CH4', NULL, NULL, NULL, '2.1.8', NULL), +(248, 305.0, 310.958, 3.46647697689E7, 'V', 'water', 5.06E-4, NULL, NULL, '2.1.8', NULL, 100.0, 5027.7, 'V', 'H2O', 0.506, NULL, NULL, '2.1.8', NULL), +(249, 306.0, 310.958, 2.79175605687E7, 'V', 'methane', 0.999577, NULL, NULL, '2.1.9', NULL, 100.0, 4049.1, 'V', 'CH4', NULL, NULL, NULL, '2.1.9', NULL), +(250, 307.0, 310.958, 2.79175605687E7, 'V', 'water', 4.23E-4, NULL, NULL, '2.1.9', NULL, 100.0, 4049.1, 'V', 'H2O', 0.423, NULL, NULL, '2.1.9', NULL), +(251, 308.0, 310.958, 6.23451506968E7, 'V', 'methane', 0.999592, NULL, NULL, '2.1.10', NULL, 100.0, 9042.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.10', NULL), +(252, 309.0, 310.958, 6.23451506968E7, 'V', 'water', 4.08E-4, NULL, NULL, '2.1.10', NULL, 100.0, 9042.4, 'V', 'H2O', 0.408, NULL, NULL, '2.1.10', NULL), +(253, 310.0, 310.958, 5.53628302829E7, 'V', 'methane', 0.999573, NULL, NULL, '2.1.11', NULL, 100.0, 8029.7, 'V', 'CH4', NULL, NULL, NULL, '2.1.11', NULL), +(254, 311.0, 310.958, 5.53628302829E7, 'V', 'water', 4.27E-4, NULL, NULL, '2.1.11', NULL, 100.0, 8029.7, 'V', 'H2O', 0.427, NULL, NULL, '2.1.11', NULL), +(255, 312.0, 310.958, 4.85218523875E7, 'V', 'methane', 0.999577, NULL, NULL, '2.1.12', NULL, 100.0, 7037.5, 'V', 'CH4', NULL, NULL, NULL, '2.1.12', NULL), +(256, 313.0, 310.958, 4.85218523875E7, 'V', 'water', 4.23E-4, NULL, NULL, '2.1.12', NULL, 100.0, 7037.5, 'V', 'H2O', 0.423, NULL, NULL, '2.1.12', NULL), +(257, 314.0, 344.318, 6.8154672945E7, 'V', 'methane', 0.998308, NULL, NULL, '2.1.13', NULL, 160.0, 9885.0, 'V', 'CH4', NULL, NULL, NULL, '2.1.13', NULL), +(258, 315.0, 344.318, 6.8154672945E7, 'V', 'water', 0.001692, NULL, NULL, '2.1.13', NULL, 160.0, 9885.0, 'V', 'H2O', 1.692, NULL, NULL, '2.1.13', NULL), +(259, 316.0, 344.318, 4.17939485069E7, 'V', 'methane', 0.99811, NULL, NULL, '2.1.14', NULL, 160.0, 6061.7, 'V', 'CH4', NULL, NULL, NULL, '2.1.14', NULL), +(260, 317.0, 344.318, 4.17939485069E7, 'V', 'water', 0.00189, NULL, NULL, '2.1.14', NULL, 160.0, 6061.7, 'V', 'H2O', 1.89, NULL, NULL, '2.1.14', NULL), +(261, 318.0, 344.318, 3.51522290888E7, 'V', 'methane', 0.997872, NULL, NULL, '2.1.15', NULL, 160.0, 5098.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.15', NULL), +(262, 319.0, 344.318, 3.51522290888E7, 'V', 'water', 0.002128, NULL, NULL, '2.1.15', NULL, 160.0, 5098.4, 'V', 'H2O', 2.128, NULL, NULL, '2.1.15', NULL), +(263, 320.0, 344.318, 2.82050719356E7, 'V', 'methane', 0.997699, NULL, NULL, '2.1.16', NULL, 160.0, 4090.8, 'V', 'CH4', NULL, NULL, NULL, '2.1.16', NULL), +(264, 321.0, 344.318, 2.82050719356E7, 'V', 'water', 0.002301, NULL, NULL, '2.1.16', NULL, 160.0, 4090.8, 'V', 'H2O', 2.301, NULL, NULL, '2.1.16', NULL), +(265, 322.0, 344.318, 2.1063482635E7, 'V', 'methane', 0.997279, NULL, NULL, '2.1.17', NULL, 160.0, 3055.0, 'V', 'CH4', NULL, NULL, NULL, '2.1.17', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(266, 323.0, 344.318, 2.1063482635E7, 'V', 'water', 0.002721, NULL, NULL, '2.1.17', NULL, 160.0, 3055.0, 'V', 'H2O', 2.721, NULL, NULL, '2.1.17', NULL), +(267, 324.0, 344.318, 1.43990105188E7, 'V', 'methane', 0.996606, NULL, NULL, '2.1.18', NULL, 160.0, 2088.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.18', NULL), +(268, 325.0, 344.318, 1.43990105188E7, 'V', 'water', 0.003394, NULL, NULL, '2.1.18', NULL, 160.0, 2088.4, 'V', 'H2O', 3.394, NULL, NULL, '2.1.18', NULL), +(269, 326.0, 344.318, 9645075.5673, 'V', 'methane', 0.995497, NULL, NULL, '2.1.19', NULL, 160.0, 1398.9, 'V', 'CH4', NULL, NULL, NULL, '2.1.19', NULL), +(270, 327.0, 344.318, 9645075.5673, 'V', 'water', 0.004503, NULL, NULL, '2.1.19', NULL, 160.0, 1398.9, 'V', 'H2O', 4.503, NULL, NULL, '2.1.19', NULL), +(271, 328.0, 344.318, 6289397.3354, 'V', 'methane', 0.993583, NULL, NULL, '2.1.20', NULL, 160.0, 912.2, 'V', 'CH4', NULL, NULL, NULL, '2.1.20', NULL), +(272, 329.0, 344.318, 6289397.3354, 'V', 'water', 0.006417, NULL, NULL, '2.1.20', NULL, 160.0, 912.2, 'V', 'H2O', 6.417, NULL, NULL, '2.1.20', NULL), +(273, 330.0, 344.318, 2672407.8132, 'V', 'methane', 0.98665, NULL, NULL, '2.1.21', NULL, 160.0, 387.6, 'V', 'CH4', NULL, NULL, NULL, '2.1.21', NULL), +(274, 331.0, 344.318, 2672407.8132, 'V', 'water', 0.01335, NULL, NULL, '2.1.21', NULL, 160.0, 387.6, 'V', 'H2O', 13.35, NULL, NULL, '2.1.21', NULL), +(275, 332.0, 377.678, 2.79010131519E7, 'V', 'methane', 0.992877, NULL, NULL, '2.1.22', NULL, 220.0, 4046.7, 'V', 'CH4', NULL, NULL, NULL, '2.1.22', NULL), +(276, 333.0, 377.678, 2.79010131519E7, 'V', 'water', 0.007123, NULL, NULL, '2.1.22', NULL, 220.0, 4046.7, 'V', 'H2O', 7.123, NULL, NULL, '2.1.22', NULL), +(277, 334.0, 377.678, 2.09228295922E7, 'V', 'methane', 0.991541, NULL, NULL, '2.1.23', NULL, 220.0, 3034.6, 'V', 'CH4', NULL, NULL, NULL, '2.1.23', NULL), +(278, 335.0, 377.678, 2.09228295922E7, 'V', 'water', 0.008459, NULL, NULL, '2.1.23', NULL, 220.0, 3034.6, 'V', 'H2O', 8.459, NULL, NULL, '2.1.23', NULL), +(279, 336.0, 377.678, 1.3810198271E7, 'V', 'methane', 0.9888, NULL, NULL, '2.1.24', NULL, 220.0, 2003.0, 'V', 'CH4', NULL, NULL, NULL, '2.1.24', NULL), +(280, 337.0, 377.678, 1.3810198271E7, 'V', 'water', 0.0112, NULL, NULL, '2.1.24', NULL, 220.0, 2003.0, 'V', 'H2O', 11.2, NULL, NULL, '2.1.24', NULL), +(281, 338.0, 377.678, 6590698.2163, 'V', 'methane', 0.97931, NULL, NULL, '2.1.25', NULL, 220.0, 955.9, 'V', 'CH4', NULL, NULL, NULL, '2.1.25', NULL), +(282, 339.0, 377.678, 6590698.2163, 'V', 'water', 0.02069, NULL, NULL, '2.1.25', NULL, 220.0, 955.9, 'V', 'H2O', 20.69, NULL, NULL, '2.1.25', NULL), +(283, 340.0, 377.678, 6.83877157316E7, 'V', 'methane', 0.995278, NULL, NULL, '2.1.26', NULL, 220.0, 9918.8, 'V', 'CH4', NULL, NULL, NULL, '2.1.26', NULL), +(284, 341.0, 377.678, 6.83877157316E7, 'V', 'water', 0.004722, NULL, NULL, '2.1.26', NULL, 220.0, 9918.8, 'V', 'H2O', 4.722, NULL, NULL, '2.1.26', NULL), +(285, 342.0, 377.678, 6.23313611828E7, 'V', 'methane', 0.99538, NULL, NULL, '2.1.27', NULL, 220.0, 9040.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.27', NULL), +(286, 343.0, 377.678, 6.23313611828E7, 'V', 'water', 0.00462, NULL, NULL, '2.1.27', NULL, 220.0, 9040.4, 'V', 'H2O', 4.62, NULL, NULL, '2.1.27', NULL), +(287, 344.0, 377.678, 5.47250652604E7, 'V', 'methane', 0.994762, NULL, NULL, '2.1.28', NULL, 220.0, 7937.2, 'V', 'CH4', NULL, NULL, NULL, '2.1.28', NULL), +(288, 345.0, 377.678, 5.47250652604E7, 'V', 'water', 0.005238, NULL, NULL, '2.1.28', NULL, 220.0, 7937.2, 'V', 'H2O', 5.238, NULL, NULL, '2.1.28', NULL), +(289, 346.0, 377.678, 4.82605410972E7, 'V', 'methane', 0.994664, NULL, NULL, '2.1.29', NULL, 220.0, 6999.6, 'V', 'CH4', NULL, NULL, NULL, '2.1.29', NULL), +(290, 347.0, 377.678, 4.82605410972E7, 'V', 'water', 0.005336, NULL, NULL, '2.1.29', NULL, 220.0, 6999.6, 'V', 'H2O', 5.336, NULL, NULL, '2.1.29', NULL), +(291, 348.0, 377.678, 4.17815379443E7, 'V', 'methane', 0.994212, NULL, NULL, '2.1.30', NULL, 220.0, 6059.9, 'V', 'CH4', NULL, NULL, NULL, '2.1.30', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(292, 349.0, 377.678, 4.17815379443E7, 'V', 'water', 0.005788, NULL, NULL, '2.1.30', NULL, 220.0, 6059.9, 'V', 'H2O', 5.788, NULL, NULL, '2.1.30', NULL), +(293, 350.0, 377.678, 3.5411471952E7, 'V', 'methane', 0.993747, NULL, NULL, '2.1.31', NULL, 220.0, 5136.0, 'V', 'CH4', NULL, NULL, NULL, '2.1.31', NULL), +(294, 351.0, 377.678, 3.5411471952E7, 'V', 'water', 0.006253, NULL, NULL, '2.1.31', NULL, 220.0, 5136.0, 'V', 'H2O', 6.253, NULL, NULL, '2.1.31', NULL), +(295, 352.0, 377.678, 6.22541399044E7, 'V', 'methane', 0.995118, NULL, NULL, '2.1.32', NULL, 220.0, 9029.2, 'V', 'CH4', NULL, NULL, NULL, '2.1.32', NULL), +(296, 353.0, 377.678, 6.22541399044E7, 'V', 'water', 0.004882, NULL, NULL, '2.1.32', NULL, 220.0, 9029.2, 'V', 'H2O', 4.882, NULL, NULL, '2.1.32', NULL), +(297, 354.0, 377.678, 5.58799370579E7, 'V', 'methane', 0.995057, NULL, NULL, '2.1.33', NULL, 220.0, 8104.7, 'V', 'CH4', NULL, NULL, NULL, '2.1.33', NULL), +(298, 355.0, 377.678, 5.58799370579E7, 'V', 'water', 0.004943, NULL, NULL, '2.1.33', NULL, 220.0, 8104.7, 'V', 'H2O', 4.943, NULL, NULL, '2.1.33', NULL), +(299, 356.0, 377.678, 9315506.1827, 'V', 'methane', 0.98455, NULL, NULL, '2.1.34', NULL, 220.0, 1351.1, 'V', 'CH4', NULL, NULL, NULL, '2.1.34', NULL), +(300, 357.0, 377.678, 9315506.1827, 'V', 'water', 0.01545, NULL, NULL, '2.1.34', NULL, 220.0, 1351.1, 'V', 'H2O', 15.45, NULL, NULL, '2.1.34', NULL), +(301, 358.0, 377.678, 2986808.7324, 'V', 'methane', 0.95719, NULL, NULL, '2.1.35', NULL, 220.0, 433.2, 'V', 'CH4', NULL, NULL, NULL, '2.1.35', NULL), +(302, 359.0, 377.678, 2986808.7324, 'V', 'water', 0.04281, NULL, NULL, '2.1.35', NULL, 220.0, 433.2, 'V', 'H2O', 42.81, NULL, NULL, '2.1.35', NULL), +(303, 360.0, 411.038, 6.88606960618E7, 'V', 'methane', 0.98794, NULL, NULL, '2.1.36', NULL, 280.0, 9987.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.36', NULL), +(304, 361.0, 411.038, 6.88606960618E7, 'V', 'water', 0.01206, NULL, NULL, '2.1.36', NULL, 280.0, 9987.4, 'V', 'H2O', 12.06, NULL, NULL, '2.1.36', NULL), +(305, 362.0, 411.038, 6.2204497654E7, 'V', 'methane', 0.98747, NULL, NULL, '2.1.37', NULL, 280.0, 9022.0, 'V', 'CH4', NULL, NULL, NULL, '2.1.37', NULL), +(306, 363.0, 411.038, 6.2204497654E7, 'V', 'water', 0.01253, NULL, NULL, '2.1.37', NULL, 280.0, 9022.0, 'V', 'H2O', 12.53, NULL, NULL, '2.1.37', NULL), +(307, 364.0, 411.038, 5.54600463566E7, 'V', 'methane', 0.98655, NULL, NULL, '2.1.38', NULL, 280.0, 8043.8, 'V', 'CH4', NULL, NULL, NULL, '2.1.38', NULL), +(308, 365.0, 411.038, 5.54600463566E7, 'V', 'water', 0.01345, NULL, NULL, '2.1.38', NULL, 280.0, 8043.8, 'V', 'H2O', 13.45, NULL, NULL, '2.1.38', NULL), +(309, 366.0, 411.038, 4.83350044728E7, 'V', 'methane', 0.98563, NULL, NULL, '2.1.39', NULL, 280.0, 7010.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.39', NULL), +(310, 367.0, 411.038, 4.83350044728E7, 'V', 'water', 0.01437, NULL, NULL, '2.1.39', NULL, 280.0, 7010.4, 'V', 'H2O', 14.37, NULL, NULL, '2.1.39', NULL), +(311, 368.0, 411.038, 4.21069704747E7, 'V', 'methane', 0.98455, NULL, NULL, '2.1.40', NULL, 280.0, 6107.1, 'V', 'CH4', NULL, NULL, NULL, '2.1.40', NULL), +(312, 369.0, 411.038, 4.21069704747E7, 'V', 'water', 0.01545, NULL, NULL, '2.1.40', NULL, 280.0, 6107.1, 'V', 'H2O', 15.45, NULL, NULL, '2.1.40', NULL), +(313, 370.0, 411.038, 3.55865987798E7, 'V', 'methane', 0.98329, NULL, NULL, '2.1.41', NULL, 280.0, 5161.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.41', NULL), +(314, 371.0, 411.038, 3.55865987798E7, 'V', 'water', 0.01671, NULL, NULL, '2.1.41', NULL, 280.0, 5161.4, 'V', 'H2O', 16.71, NULL, NULL, '2.1.41', NULL), +(315, 372.0, 411.038, 2.81616349665E7, 'V', 'methane', 0.98102, NULL, NULL, '2.1.42', NULL, 280.0, 4084.5, 'V', 'CH4', NULL, NULL, NULL, '2.1.42', NULL), +(316, 373.0, 411.038, 2.81616349665E7, 'V', 'water', 0.01898, NULL, NULL, '2.1.42', NULL, 280.0, 4084.5, 'V', 'H2O', 18.98, NULL, NULL, '2.1.42', NULL), +(317, 374.0, 411.038, 1.40659937557E7, 'V', 'methane', 0.96848, NULL, NULL, '2.1.43', NULL, 280.0, 2040.1, 'V', 'CH4', NULL, NULL, NULL, '2.1.43', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(318, 375.0, 411.038, 1.40659937557E7, 'V', 'water', 0.03152, NULL, NULL, '2.1.43', NULL, 280.0, 2040.1, 'V', 'H2O', 31.52, NULL, NULL, '2.1.43', NULL), +(319, 376.0, 411.038, 9869844.6455, 'V', 'methane', 0.95855, NULL, NULL, '2.1.44', NULL, 280.0, 1431.5, 'V', 'CH4', NULL, NULL, NULL, '2.1.44', NULL), +(320, 377.0, 411.038, 9869844.6455, 'V', 'water', 0.04145, NULL, NULL, '2.1.44', NULL, 280.0, 1431.5, 'V', 'H2O', 41.45, NULL, NULL, '2.1.44', NULL), +(321, 378.0, 411.038, 6545882.2958, 'V', 'methane', 0.94101, NULL, NULL, '2.1.45', NULL, 280.0, 949.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.45', NULL), +(322, 379.0, 411.038, 6545882.2958, 'V', 'water', 0.05899, NULL, NULL, '2.1.45', NULL, 280.0, 949.4, 'V', 'H2O', 58.99, NULL, NULL, '2.1.45', NULL), +(323, 380.0, 411.038, 3406009.958, 'V', 'methane', 0.88917, NULL, NULL, '2.1.46', NULL, 280.0, 494.0, 'V', 'CH4', NULL, NULL, NULL, '2.1.46', NULL), +(324, 381.0, 411.038, 3406009.958, 'V', 'water', 0.11083, NULL, NULL, '2.1.46', NULL, 280.0, 494.0, 'V', 'H2O', 110.83, NULL, NULL, '2.1.46', NULL), +(325, 382.0, 444.398, 3.45778958307E7, 'V', 'methane', 0.96165, NULL, NULL, '2.1.47', NULL, 340.0, 5015.1, 'V', 'CH4', NULL, NULL, NULL, '2.1.47', NULL), +(326, 383.0, 444.398, 3.45778958307E7, 'V', 'water', 0.03835, NULL, NULL, '2.1.47', NULL, 340.0, 5015.1, 'V', 'H2O', 38.35, NULL, NULL, '2.1.47', NULL), +(327, 384.0, 444.398, 2.81595665394E7, 'V', 'methane', 0.95616, NULL, NULL, '2.1.48', NULL, 340.0, 4084.2, 'V', 'CH4', NULL, NULL, NULL, '2.1.48', NULL), +(328, 385.0, 444.398, 2.81595665394E7, 'V', 'water', 0.04384, NULL, NULL, '2.1.48', NULL, 340.0, 4084.2, 'V', 'H2O', 43.84, NULL, NULL, '2.1.48', NULL), +(329, 386.0, 444.398, 2.1180693504E7, 'V', 'methane', 0.94638, NULL, NULL, '2.1.49', NULL, 340.0, 3072.0, 'V', 'CH4', NULL, NULL, NULL, '2.1.49', NULL), +(330, 387.0, 444.398, 2.1180693504E7, 'V', 'water', 0.05362, NULL, NULL, '2.1.49', NULL, 340.0, 3072.0, 'V', 'H2O', 53.62, NULL, NULL, '2.1.49', NULL), +(331, 388.0, 444.398, 1.42369837293E7, 'V', 'methane', 0.92894, NULL, NULL, '2.1.50', NULL, 340.0, 2064.9, 'V', 'CH4', NULL, NULL, NULL, '2.1.50', NULL), +(332, 389.0, 444.398, 1.42369837293E7, 'V', 'water', 0.07106, NULL, NULL, '2.1.50', NULL, 340.0, 2064.9, 'V', 'H2O', 71.06, NULL, NULL, '2.1.50', NULL), +(333, 390.0, 444.398, 8744620.3031, 'V', 'methane', 0.89065, NULL, NULL, '2.1.51', NULL, 340.0, 1268.3, 'V', 'CH4', NULL, NULL, NULL, '2.1.51', NULL), +(334, 391.0, 444.398, 8744620.3031, 'V', 'water', 0.10935, NULL, NULL, '2.1.51', NULL, 340.0, 1268.3, 'V', 'H2O', 109.35, NULL, NULL, '2.1.51', NULL), +(335, 392.0, 444.398, 3441862.6944, 'V', 'methane', 0.74666, NULL, NULL, '2.1.52', NULL, 340.0, 499.2, 'V', 'CH4', NULL, NULL, NULL, '2.1.52', NULL), +(336, 393.0, 444.398, 3441862.6944, 'V', 'water', 0.25334, NULL, NULL, '2.1.52', NULL, 340.0, 499.2, 'V', 'H2O', 253.34, NULL, NULL, '2.1.52', NULL), +(337, 394.0, 444.398, 6.88751750515E7, 'V', 'methane', 0.97384, NULL, NULL, '2.1.53', NULL, 340.0, 9989.5, 'V', 'CH4', NULL, NULL, NULL, '2.1.53', NULL), +(338, 395.0, 444.398, 6.88751750515E7, 'V', 'water', 0.02616, NULL, NULL, '2.1.53', NULL, 340.0, 9989.5, 'V', 'H2O', 26.16, NULL, NULL, '2.1.53', NULL), +(339, 396.0, 444.398, 6.65854262518E7, 'V', 'methane', 0.97235, NULL, NULL, '2.1.54', NULL, 340.0, 9657.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.54', NULL), +(340, 397.0, 444.398, 6.65854262518E7, 'V', 'water', 0.02765, NULL, NULL, '2.1.54', NULL, 340.0, 9657.4, 'V', 'H2O', 27.65, NULL, NULL, '2.1.54', NULL), +(341, 398.0, 444.398, 5.57572103833E7, 'V', 'methane', 0.97029, NULL, NULL, '2.1.55', NULL, 340.0, 8086.9, 'V', 'CH4', NULL, NULL, NULL, '2.1.55', NULL), +(342, 399.0, 444.398, 5.57572103833E7, 'V', 'water', 0.02971, NULL, NULL, '2.1.55', NULL, 340.0, 8086.9, 'V', 'H2O', 29.71, NULL, NULL, '2.1.55', NULL), +(343, 400.0, 444.398, 4.87645478339E7, 'V', 'methane', 0.96846, NULL, NULL, '2.1.56', NULL, 340.0, 7072.7, 'V', 'CH4', NULL, NULL, NULL, '2.1.56', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(344, 401.0, 444.398, 4.87645478339E7, 'V', 'water', 0.03154, NULL, NULL, '2.1.56', NULL, 340.0, 7072.7, 'V', 'H2O', 31.54, NULL, NULL, '2.1.56', NULL), +(345, 402.0, 444.398, 4.1871859261E7, 'V', 'methane', 0.96543, NULL, NULL, '2.1.57', NULL, 340.0, 6073.0, 'V', 'CH4', NULL, NULL, NULL, '2.1.57', NULL), +(346, 403.0, 444.398, 4.1871859261E7, 'V', 'water', 0.03457, NULL, NULL, '2.1.57', NULL, 340.0, 6073.0, 'V', 'H2O', 34.57, NULL, NULL, '2.1.57', NULL), +(347, 404.0, 477.758, 3.48012859575E7, 'V', 'methane', 0.92039, NULL, NULL, '2.1.58', NULL, 400.0, 5047.5, 'V', 'CH4', NULL, NULL, NULL, '2.1.58', NULL), +(348, 405.0, 477.758, 3.48012859575E7, 'V', 'water', 0.07961, NULL, NULL, '2.1.58', NULL, 400.0, 5047.5, 'V', 'H2O', 79.61, NULL, NULL, '2.1.58', NULL), +(349, 406.0, 477.758, 2.07911397335E7, 'V', 'methane', 0.8864, NULL, NULL, '2.1.59', NULL, 400.0, 3015.5, 'V', 'CH4', NULL, NULL, NULL, '2.1.59', NULL), +(350, 407.0, 477.758, 2.07911397335E7, 'V', 'water', 0.1136, NULL, NULL, '2.1.59', NULL, 400.0, 3015.5, 'V', 'H2O', 113.6, NULL, NULL, '2.1.59', NULL), +(351, 408.0, 477.758, 1.40453094847E7, 'V', 'methane', 0.84582, NULL, NULL, '2.1.60', NULL, 400.0, 2037.1, 'V', 'CH4', NULL, NULL, NULL, '2.1.60', NULL), +(352, 409.0, 477.758, 1.40453094847E7, 'V', 'water', 0.15418, NULL, NULL, '2.1.60', NULL, 400.0, 2037.1, 'V', 'H2O', 154.18, NULL, NULL, '2.1.60', NULL), +(353, 410.0, 477.758, 8825978.4357, 'V', 'methane', 0.77173, NULL, NULL, '2.1.61', NULL, 400.0, 1280.1, 'V', 'CH4', NULL, NULL, NULL, '2.1.61', NULL), +(354, 411.0, 477.758, 8825978.4357, 'V', 'water', 0.22827, NULL, NULL, '2.1.61', NULL, 400.0, 1280.1, 'V', 'H2O', 228.27, NULL, NULL, '2.1.61', NULL), +(355, 412.0, 477.758, 6413502.9614, 'V', 'methane', 0.69733, NULL, NULL, '2.1.62', NULL, 400.0, 930.2, 'V', 'CH4', NULL, NULL, NULL, '2.1.62', NULL), +(356, 413.0, 477.758, 6413502.9614, 'V', 'water', 0.30267, NULL, NULL, '2.1.62', NULL, 400.0, 930.2, 'V', 'H2O', 302.67, NULL, NULL, '2.1.62', NULL), +(357, 414.0, 477.758, 3363262.4646, 'V', 'methane', 0.44443, NULL, NULL, '2.1.63', NULL, 400.0, 487.8, 'V', 'CH4', NULL, NULL, NULL, '2.1.63', NULL), +(358, 415.0, 477.758, 3363262.4646, 'V', 'water', 0.55557, NULL, NULL, '2.1.63', NULL, 400.0, 487.8, 'V', 'H2O', 555.57, NULL, NULL, '2.1.63', NULL), +(359, 416.0, 477.758, 6.8733832533E7, 'V', 'methane', 0.94672, NULL, NULL, '2.1.64', NULL, 400.0, 9969.0, 'V', 'CH4', NULL, NULL, NULL, '2.1.64', NULL), +(360, 417.0, 477.758, 6.8733832533E7, 'V', 'water', 0.05328, NULL, NULL, '2.1.64', NULL, 400.0, 9969.0, 'V', 'H2O', 53.28, NULL, NULL, '2.1.64', NULL), +(361, 418.0, 477.758, 6.25802619105E7, 'V', 'methane', 0.9437, NULL, NULL, '2.1.65', NULL, 400.0, 9076.5, 'V', 'CH4', NULL, NULL, NULL, '2.1.65', NULL), +(362, 419.0, 477.758, 6.25802619105E7, 'V', 'water', 0.0563, NULL, NULL, '2.1.65', NULL, 400.0, 9076.5, 'V', 'H2O', 56.3, NULL, NULL, '2.1.65', NULL), +(363, 420.0, 477.758, 5.56744732993E7, 'V', 'methane', 0.93918, NULL, NULL, '2.1.66', NULL, 400.0, 8074.9, 'V', 'CH4', NULL, NULL, NULL, '2.1.66', NULL), +(364, 421.0, 477.758, 5.56744732993E7, 'V', 'water', 0.06082, NULL, NULL, '2.1.66', NULL, 400.0, 8074.9, 'V', 'H2O', 60.82, NULL, NULL, '2.1.66', NULL), +(365, 422.0, 477.758, 4.86638843817E7, 'V', 'methane', 0.93481, NULL, NULL, '2.1.67', NULL, 400.0, 7058.1, 'V', 'CH4', NULL, NULL, NULL, '2.1.67', NULL), +(366, 423.0, 477.758, 4.86638843817E7, 'V', 'water', 0.06519, NULL, NULL, '2.1.67', NULL, 400.0, 7058.1, 'V', 'H2O', 65.19, NULL, NULL, '2.1.67', NULL), +(367, 424.0, 477.758, 4.14319737644E7, 'V', 'methane', 0.92976, NULL, NULL, '2.1.68', NULL, 400.0, 6009.2, 'V', 'CH4', NULL, NULL, NULL, '2.1.68', NULL), +(368, 425.0, 477.758, 4.14319737644E7, 'V', 'water', 0.07024, NULL, NULL, '2.1.68', NULL, 400.0, 6009.2, 'V', 'H2O', 70.24, NULL, NULL, '2.1.68', NULL), +(369, 426.0, 511.118, 5.39431998166E7, 'V', 'methane', 0.88811, NULL, NULL, '2.1.69', NULL, 460.0, 7823.8, 'V', 'CH4', NULL, NULL, NULL, '2.1.69', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(370, 427.0, 511.118, 5.39431998166E7, 'V', 'water', 0.11189, NULL, NULL, '2.1.69', NULL, 460.0, 7823.8, 'V', 'H2O', 111.89, NULL, NULL, '2.1.69', NULL), +(371, 428.0, 511.118, 6.24995932536E7, 'V', 'methane', 0.89359, NULL, NULL, '2.1.70', NULL, 460.0, 9064.8, 'V', 'CH4', NULL, NULL, NULL, '2.1.70', NULL), +(372, 429.0, 511.118, 6.24995932536E7, 'V', 'water', 0.10641, NULL, NULL, '2.1.70', NULL, 460.0, 9064.8, 'V', 'H2O', 106.41, NULL, NULL, '2.1.70', NULL), +(373, 430.0, 511.118, 4.8532194523E7, 'V', 'methane', 0.87609, NULL, NULL, '2.1.71', NULL, 460.0, 7039.0, 'V', 'CH4', NULL, NULL, NULL, '2.1.71', NULL), +(374, 431.0, 511.118, 4.8532194523E7, 'V', 'water', 0.12391, NULL, NULL, '2.1.71', NULL, 460.0, 7039.0, 'V', 'H2O', 123.91, NULL, NULL, '2.1.71', NULL), +(375, 432.0, 511.118, 4.16932850547E7, 'V', 'methane', 0.86612, NULL, NULL, '2.1.72', NULL, 460.0, 6047.1, 'V', 'CH4', NULL, NULL, NULL, '2.1.72', NULL), +(376, 433.0, 511.118, 4.16932850547E7, 'V', 'water', 0.13388, NULL, NULL, '2.1.72', NULL, 460.0, 6047.1, 'V', 'H2O', 133.88, NULL, NULL, '2.1.72', NULL), +(377, 434.0, 511.118, 3.56031461966E7, 'V', 'methane', 0.85111, NULL, NULL, '2.1.73', NULL, 460.0, 5163.8, 'V', 'CH4', NULL, NULL, NULL, '2.1.73', NULL), +(378, 435.0, 511.118, 3.56031461966E7, 'V', 'water', 0.14889, NULL, NULL, '2.1.73', NULL, 460.0, 5163.8, 'V', 'H2O', 148.89, NULL, NULL, '2.1.73', NULL), +(379, 436.0, 511.118, 2.76852072578E7, 'V', 'methane', 0.82435, NULL, NULL, '2.1.74', NULL, 460.0, 4015.4, 'V', 'CH4', NULL, NULL, NULL, '2.1.74', NULL), +(380, 437.0, 511.118, 2.76852072578E7, 'V', 'water', 0.17565, NULL, NULL, '2.1.74', NULL, 460.0, 4015.4, 'V', 'H2O', 175.65, NULL, NULL, '2.1.74', NULL), +(381, 438.0, 511.118, 2.10062561519E7, 'V', 'methane', 0.78713, NULL, NULL, '2.1.75', NULL, 460.0, 3046.7, 'V', 'CH4', NULL, NULL, NULL, '2.1.75', NULL), +(382, 439.0, 511.118, 2.10062561519E7, 'V', 'water', 0.21287, NULL, NULL, '2.1.75', NULL, 460.0, 3046.7, 'V', 'H2O', 212.87, NULL, NULL, '2.1.75', NULL), +(383, 440.0, 511.118, 1.44390001094E7, 'V', 'methane', 0.7149, NULL, NULL, '2.1.76', NULL, 460.0, 2094.2, 'V', 'CH4', NULL, NULL, NULL, '2.1.76', NULL), +(384, 441.0, 511.118, 1.44390001094E7, 'V', 'water', 0.2851, NULL, NULL, '2.1.76', NULL, 460.0, 2094.2, 'V', 'H2O', 285.1, NULL, NULL, '2.1.76', NULL), +(385, 442.0, 511.118, 9509938.3301, 'V', 'methane', 0.59967, NULL, NULL, '2.1.77', NULL, 460.0, 1379.3, 'V', 'CH4', NULL, NULL, NULL, '2.1.77', NULL), +(386, 443.0, 511.118, 9509938.3301, 'V', 'water', 0.40033, NULL, NULL, '2.1.77', NULL, 460.0, 1379.3, 'V', 'H2O', 400.33, NULL, NULL, '2.1.77', NULL), +(387, 444.0, 511.118, 5317926.0741, 'V', 'methane', 0.34541, NULL, NULL, '2.1.78', NULL, 460.0, 771.3, 'V', 'CH4', NULL, NULL, NULL, '2.1.78', NULL), +(388, 445.0, 511.118, 5317926.0741, 'V', 'water', 0.65459, NULL, NULL, '2.1.78', NULL, 460.0, 771.3, 'V', 'H2O', 654.59, NULL, NULL, '2.1.78', NULL), +(389, 446.0, 298.15, 2500000.0, 'T', 'methane', 0.99746, NULL, 5.99E-4, '3.1.1', NULL, 25.0, 2.5, 'T', 'CH4', NULL, NULL, 5.99E-4, '3.1.1', 'Reference 3:temperature in Celsius,pressure in MPa and compositions in molar fraction'), +(390, 447.0, 298.15, 2500000.0, 'T', 'water', 0.00254, NULL, 0.999401, '3.1.1', NULL, 25.0, 2.5, 'T', 'H2O', 0.00254, NULL, NULL, '3.1.1', NULL), +(391, 448.0, 298.15, 5000000.0, 'T', 'methane', 0.99854, NULL, 0.00112, '3.1.2', NULL, 25.0, 5.0, 'T', 'CH4', NULL, NULL, 0.00112, '3.1.2', NULL), +(392, 449.0, 298.15, 5000000.0, 'T', 'water', 0.00146, NULL, 0.99888, '3.1.2', NULL, 25.0, 5.0, 'T', 'H2O', 0.00146, NULL, NULL, '3.1.2', NULL), +(393, 450.0, 298.15, 7500000.0, 'T', 'methane', 0.999066, NULL, 0.00146, '3.1.3', NULL, 25.0, 7.5, 'T', 'CH4', NULL, NULL, 0.00146, '3.1.3', NULL), +(394, 451.0, 298.15, 7500000.0, 'T', 'water', 9.34E-4, NULL, 0.99854, '3.1.3', NULL, 25.0, 7.5, 'T', 'H2O', 9.34E-4, NULL, NULL, '3.1.3', NULL), +(395, 452.0, 298.15, 1.0E7, 'T', 'methane', 0.99918, NULL, 0.0019, '3.1.4', NULL, 25.0, 10.0, 'T', 'CH4', NULL, NULL, 0.0019, '3.1.4', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(396, 453.0, 298.15, 1.0E7, 'T', 'water', 8.2E-4, NULL, 0.9981, '3.1.4', NULL, 25.0, 10.0, 'T', 'H2O', 8.2E-4, NULL, NULL, '3.1.4', NULL), +(397, 454.0, 298.15, 1.25E7, 'T', 'methane', 0.999416, NULL, 0.00221, '3.1.5', NULL, 25.0, 12.5, 'T', 'CH4', NULL, NULL, 0.00221, '3.1.5', NULL), +(398, 455.0, 298.15, 1.25E7, 'T', 'water', 5.84E-4, NULL, 0.99779, '3.1.5', NULL, 25.0, 12.5, 'T', 'H2O', 5.84E-4, NULL, NULL, '3.1.5', NULL), +(399, 456.0, 313.15, 2500000.0, 'T', 'methane', 0.99697, NULL, 4.9E-4, '3.1.6', NULL, 40.0, 2.5, 'T', 'CH4', NULL, NULL, 4.9E-4, '3.1.6', NULL), +(400, 457.0, 313.15, 2500000.0, 'T', 'water', 0.00303, NULL, 0.99951, '3.1.6', NULL, 40.0, 2.5, 'T', 'H2O', 0.00303, NULL, NULL, '3.1.6', NULL), +(401, 458.0, 313.15, 5000000.0, 'T', 'methane', 0.99813, NULL, 9.29E-4, '3.1.7', NULL, 40.0, 5.0, 'T', 'CH4', NULL, NULL, 9.29E-4, '3.1.7', NULL), +(402, 459.0, 313.15, 5000000.0, 'T', 'water', 0.00187, NULL, 0.999071, '3.1.7', NULL, 40.0, 5.0, 'T', 'H2O', 0.00187, NULL, NULL, '3.1.7', NULL), +(403, 460.0, 313.15, 7500000.0, 'T', 'methane', 0.99866, NULL, 0.00127, '3.1.8', NULL, 40.0, 7.5, 'T', 'CH4', NULL, NULL, 0.00127, '3.1.8', NULL), +(404, 461.0, 313.15, 7500000.0, 'T', 'water', 0.00134, NULL, 0.99873, '3.1.8', NULL, 40.0, 7.5, 'T', 'H2O', 0.00134, NULL, NULL, '3.1.8', NULL), +(405, 462.0, 313.15, 1.0E7, 'T', 'methane', 0.99888, NULL, 0.00164, '3.1.9', NULL, 40.0, 10.0, 'T', 'CH4', NULL, NULL, 0.00164, '3.1.9', NULL), +(406, 463.0, 313.15, 1.0E7, 'T', 'water', 0.00112, NULL, 0.99836, '3.1.9', NULL, 40.0, 10.0, 'T', 'H2O', 0.00112, NULL, NULL, '3.1.9', NULL), +(407, 464.0, 313.15, 1.25E7, 'T', 'methane', 0.999074, NULL, 0.00187, '3.1.10', NULL, 40.0, 12.5, 'T', 'CH4', NULL, NULL, 0.00187, '3.1.10', NULL), +(408, 465.0, 313.15, 1.25E7, 'T', 'water', 9.26E-4, NULL, 0.99813, '3.1.10', NULL, 40.0, 12.5, 'T', 'H2O', 9.26E-4, NULL, NULL, '3.1.10', NULL), +(409, 466.0, 338.15, 2500000.0, 'T', 'methane', 0.99017, NULL, 4.05E-4, '3.1.11', NULL, 65.0, 2.5, 'T', 'CH4', NULL, NULL, 4.05E-4, '3.1.11', NULL), +(410, 467.0, 338.15, 2500000.0, 'T', 'water', 0.00983, NULL, 0.999595, '3.1.11', NULL, 65.0, 2.5, 'T', 'H2O', 0.00983, NULL, NULL, '3.1.11', NULL), +(411, 468.0, 338.15, 5000000.0, 'T', 'methane', 0.99391, NULL, 7.71E-4, '3.1.12', NULL, 65.0, 5.0, 'T', 'CH4', NULL, NULL, 7.71E-4, '3.1.12', NULL), +(412, 469.0, 338.15, 5000000.0, 'T', 'water', 0.00609, NULL, 0.999229, '3.1.12', NULL, 65.0, 5.0, 'T', 'H2O', 0.00609, NULL, NULL, '3.1.12', NULL), +(413, 470.0, 338.15, 7500000.0, 'T', 'methane', 0.99552, NULL, 0.0011, '3.1.13', NULL, 65.0, 7.5, 'T', 'CH4', NULL, NULL, 0.0011, '3.1.13', NULL), +(414, 471.0, 338.15, 7500000.0, 'T', 'water', 0.00448, NULL, 0.9989, '3.1.13', NULL, 65.0, 7.5, 'T', 'H2O', 0.00448, NULL, NULL, '3.1.13', NULL), +(415, 472.0, 338.15, 1.0E7, 'T', 'methane', 0.99652, NULL, 0.00136, '3.1.14', NULL, 65.0, 10.0, 'T', 'CH4', NULL, NULL, 0.00136, '3.1.14', NULL), +(416, 473.0, 338.15, 1.0E7, 'T', 'water', 0.00348, NULL, 0.99864, '3.1.14', NULL, 65.0, 10.0, 'T', 'H2O', 0.00348, NULL, NULL, '3.1.14', NULL), +(417, 474.0, 338.15, 1.25E7, 'T', 'methane', 0.99702, NULL, 0.00162, '3.1.15', NULL, 65.0, 12.5, 'T', 'CH4', NULL, NULL, 0.00162, '3.1.15', NULL), +(418, 475.0, 338.15, 1.25E7, 'T', 'water', 0.00298, NULL, 0.99838, '3.1.15', NULL, 65.0, 12.5, 'T', 'H2O', 0.00298, NULL, NULL, '3.1.15', NULL), +(419, 476.0, 298.15, 2353779.75, 'T', 'methane', 0.998517, NULL, NULL, '4.1.1', NULL, 25.0, 23.23, 'T', 'CH4', NULL, NULL, NULL, '4.1.1', 'Reference 4: temperature in Celsius, pressure in atm and compositions in mole fractions '), +(420, 477.0, 298.15, 2353779.75, 'T', 'water', 0.001483, NULL, NULL, '4.1.1', NULL, 25.0, 23.23, 'T', 'H2O', 0.001483, NULL, NULL, '4.1.1', NULL), +(421, 478.0, 298.15, 3050895.75, 'T', 'methane', 0.998825, NULL, NULL, '4.1.2', NULL, 25.0, 30.11, 'T', 'CH4', NULL, NULL, NULL, '4.1.2', NULL), +(422, 479.0, 298.15, 3050895.75, 'T', 'water', 0.001175, NULL, NULL, '4.1.2', NULL, 25.0, 30.11, 'T', 'H2O', 0.001175, NULL, NULL, '4.1.2', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(423, 480.0, 298.15, 4055026.5, 'T', 'methane', 0.999085, NULL, NULL, '4.1.3', NULL, 25.0, 40.02, 'T', 'CH4', NULL, NULL, NULL, '4.1.3', NULL), +(424, 481.0, 298.15, 4055026.5, 'T', 'water', 9.15E-4, NULL, NULL, '4.1.3', NULL, 25.0, 40.02, 'T', 'H2O', 9.15E-4, NULL, NULL, '4.1.3', NULL), +(425, 482.0, 323.15, 3014418.75, 'T', 'methane', 0.995526, NULL, NULL, '4.1.4', NULL, 50.0, 29.75, 'T', 'CH4', NULL, NULL, NULL, '4.1.4', NULL), +(426, 483.0, 323.15, 3014418.75, 'T', 'water', 0.004474, NULL, NULL, '4.1.4', NULL, 50.0, 29.75, 'T', 'H2O', 0.004474, NULL, NULL, '4.1.4', NULL), +(427, 484.0, 323.15, 4838268.75, 'T', 'methane', 0.997079, NULL, NULL, '4.1.5', NULL, 50.0, 47.75, 'T', 'CH4', NULL, NULL, NULL, '4.1.5', NULL), +(428, 485.0, 323.15, 4838268.75, 'T', 'water', 0.002921, NULL, NULL, '4.1.5', NULL, 50.0, 47.75, 'T', 'H2O', 0.002921, NULL, NULL, '4.1.5', NULL), +(429, 486.0, 323.15, 6817146.0, 'T', 'methane', 0.997815, NULL, NULL, '4.1.6', NULL, 50.0, 67.28, 'T', 'CH4', NULL, NULL, NULL, '4.1.6', NULL), +(430, 487.0, 323.15, 6817146.0, 'T', 'water', 0.002185, NULL, NULL, '4.1.6', NULL, 50.0, 67.28, 'T', 'H2O', 0.002185, NULL, NULL, '4.1.6', NULL), +(431, 488.0, 348.15, 3120810.0, 'T', 'methane', 0.98665, NULL, NULL, '4.1.7', NULL, 75.0, 30.8, 'T', 'CH4', NULL, NULL, NULL, '4.1.7', NULL), +(432, 489.0, 348.15, 3120810.0, 'T', 'water', 0.01335, NULL, NULL, '4.1.7', NULL, 75.0, 30.8, 'T', 'H2O', 0.01335, NULL, NULL, '4.1.7', NULL), +(433, 490.0, 348.15, 5472563.25, 'T', 'methane', 0.99197, NULL, NULL, '4.1.8', NULL, 75.0, 54.01, 'T', 'CH4', NULL, NULL, NULL, '4.1.8', NULL), +(434, 491.0, 348.15, 5472563.25, 'T', 'water', 0.00803, NULL, NULL, '4.1.8', NULL, 75.0, 54.01, 'T', 'H2O', 0.00803, NULL, NULL, '4.1.8', NULL), +(435, 492.0, 348.15, 6726966.75, 'T', 'methane', 0.99329, NULL, NULL, '4.1.9', NULL, 75.0, 66.39, 'T', 'CH4', NULL, NULL, NULL, '4.1.9', NULL), +(436, 493.0, 348.15, 6726966.75, 'T', 'water', 0.00671, NULL, NULL, '4.1.9', NULL, 75.0, 66.39, 'T', 'H2O', 0.00671, NULL, NULL, '4.1.9', NULL), +(437, 494.0, 373.15, 5741074.5, 'T', 'methane', 0.98008, NULL, NULL, '4.1.10', NULL, 100.0, 56.66, 'T', 'CH4', NULL, NULL, NULL, '4.1.10', NULL), +(438, 495.0, 373.15, 5741074.5, 'T', 'water', 0.01992, NULL, NULL, '4.1.10', NULL, 100.0, 56.66, 'T', 'H2O', 0.01992, NULL, NULL, '4.1.10', NULL), +(439, 496.0, 373.15, 7189008.75, 'T', 'methane', 0.98357, NULL, NULL, '4.1.11', NULL, 100.0, 70.95, 'T', 'CH4', NULL, NULL, NULL, '4.1.11', NULL), +(440, 497.0, 373.15, 7189008.75, 'T', 'water', 0.01643, NULL, NULL, '4.1.11', NULL, 100.0, 70.95, 'T', 'H2O', 0.01643, NULL, NULL, '4.1.11', NULL), +(441, 498.0, 373.15, 9347231.25, 'T', 'methane', 0.98691, NULL, NULL, '4.1.12', NULL, 100.0, 92.25, 'T', 'CH4', NULL, NULL, NULL, '4.1.12', NULL), +(442, 499.0, 373.15, 9347231.25, 'T', 'water', 0.01309, NULL, NULL, '4.1.12', NULL, 100.0, 92.25, 'T', 'H2O', 0.01309, NULL, NULL, '4.1.12', NULL), +(443, 500.0, 298.15, 3000000.0, 'T', 'methane', 0.998817777777778, NULL, 6.804E-4, '5.1.1', NULL, 298.15, 3.0, 'T', 'CH4', NULL, NULL, 0.0378, '5.1.1', 'Reference 5: temperature in K, pressure in Mpa, Y in (mg of H2O/g of CH4), L2 in mol of CH4/1000 g of soln'), +(444, 501.0, 298.15, 3000000.0, 'T', 'water', 0.00118222222222222, NULL, 0.9993196, '5.2.1', NULL, 298.15, 3.0, 'T', 'H2O', 1.33, NULL, NULL, '5.2.1', NULL), +(445, 502.0, 298.15, 5000000.0, 'T', 'methane', 0.999258666666667, NULL, 0.00108, '5.1.2', NULL, 298.15, 5.0, 'T', 'CH4', NULL, NULL, 0.06, '5.1.2', NULL), +(446, 503.0, 298.15, 5000000.0, 'T', 'water', 7.41333333333333E-4, NULL, 0.99892, '5.2.2', NULL, 298.15, 5.0, 'T', 'H2O', 0.834, NULL, NULL, '5.2.2', NULL), +(447, 504.0, 298.15, 8000000.0, 'T', 'methane', 0.999569777777778, NULL, 0.0016218, '5.1.3', NULL, 298.15, 8.0, 'T', 'CH4', NULL, NULL, 0.0901, '5.1.3', NULL), +(448, 505.0, 298.15, 8000000.0, 'T', 'water', 4.30222222222222E-4, NULL, 0.9983782, '5.2.3', NULL, 298.15, 8.0, 'T', 'H2O', 0.484, NULL, NULL, '5.2.3', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(449, 506.0, 323.15, 3000000.0, 'T', 'methane', 0.99552, NULL, 5.094E-4, '5.1.4', NULL, 323.15, 3.0, 'T', 'CH4', NULL, NULL, 0.0283, '5.1.4', NULL), +(450, 507.0, 323.15, 3000000.0, 'T', 'water', 0.00448, NULL, 0.9994906, '5.2.4', NULL, 323.15, 3.0, 'T', 'H2O', 5.04, NULL, NULL, '5.2.4', NULL), +(451, 508.0, 323.15, 5000000.0, 'T', 'methane', 0.997208888888889, NULL, 7.92E-4, '5.1.5', NULL, 323.15, 5.0, 'T', 'CH4', NULL, NULL, 0.044, '5.1.5', NULL), +(452, 509.0, 323.15, 5000000.0, 'T', 'water', 0.00279111111111111, NULL, 0.999208, '5.2.5', NULL, 323.15, 5.0, 'T', 'H2O', 3.14, NULL, NULL, '5.2.5', NULL), +(453, 510.0, 323.15, 8000000.0, 'T', 'methane', 0.997893333333333, NULL, 0.0012096, '5.1.6', NULL, 323.15, 8.0, 'T', 'CH4', NULL, NULL, 0.0672, '5.1.6', NULL), +(454, 511.0, 323.15, 8000000.0, 'T', 'water', 0.00210666666666667, NULL, 0.9987904, '5.2.6', NULL, 323.15, 8.0, 'T', 'H2O', 2.37, NULL, NULL, '5.2.6', NULL), +(455, 512.0, 253.15, 500000.0, 'T', 'methane', 0.999786705591562, NULL, NULL, '6.F1.1', NULL, -20.0, 5.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.1', 'Reference 6: temp in Celsius, pressure in bar, water content in mg/Nm3'), +(456, 513.0, 253.15, 500000.0, 'T', 'water', 2.13294408438194E-4, NULL, NULL, '6.F1.1', NULL, -20.0, 5.0, 'T', 'H2O', 171.3, NULL, NULL, '6.F1.1', NULL), +(457, 514.0, 253.15, 1500000.0, 'T', 'methane', 0.999927781227733, NULL, NULL, '6.F1.2', NULL, -20.0, 15.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.2', NULL), +(458, 515.0, 253.15, 1500000.0, 'T', 'water', 7.22187722674562E-5, NULL, NULL, '6.F1.2', NULL, -20.0, 15.0, 'T', 'H2O', 58.0, NULL, NULL, '6.F1.2', NULL), +(459, 516.0, 253.15, 4000000.0, 'T', 'methane', 0.999972357642339, NULL, NULL, '6.F1.3', NULL, -20.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.3', NULL), +(460, 517.0, 253.15, 4000000.0, 'T', 'water', 2.76423576609919E-5, NULL, NULL, '6.F1.3', NULL, -20.0, 40.0, 'T', 'H2O', 22.2, NULL, NULL, '6.F1.3', NULL), +(461, 518.0, 253.15, 6000000.0, 'T', 'methane', 0.999979330489317, NULL, NULL, '6.F1.4', NULL, -20.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.4', NULL), +(462, 519.0, 253.15, 6000000.0, 'T', 'water', 2.06695106834444E-5, NULL, NULL, '6.F1.4', NULL, -20.0, 60.0, 'T', 'H2O', 16.6, NULL, NULL, '6.F1.4', NULL), +(463, 520.0, 253.15, 8000000.0, 'T', 'methane', 0.999981198216186, NULL, NULL, '6.F1.5', NULL, -20.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.5', NULL), +(464, 521.0, 253.15, 8000000.0, 'T', 'water', 1.88017838144584E-5, NULL, NULL, '6.F1.5', NULL, -20.0, 80.0, 'T', 'H2O', 15.1, NULL, NULL, '6.F1.5', NULL), +(465, 522.0, 253.15, 1.0E7, 'T', 'methane', 0.999984809154799, NULL, NULL, '6.F1.6', NULL, -20.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.6', NULL), +(466, 523.0, 253.15, 1.0E7, 'T', 'water', 1.51908452010856E-5, NULL, NULL, '6.F1.6', NULL, -20.0, 100.0, 'T', 'H2O', 12.2, NULL, NULL, '6.F1.6', NULL), +(467, 524.0, 258.15, 500000.0, 'T', 'methane', 0.999692945702739, NULL, NULL, '6.F1.7', NULL, -15.0, 5.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.7', NULL), +(468, 525.0, 258.15, 500000.0, 'T', 'water', 3.07054297261288E-4, NULL, NULL, '6.F1.7', NULL, -15.0, 5.0, 'T', 'H2O', 246.6, NULL, NULL, '6.F1.7', NULL), +(469, 526.0, 258.15, 1500000.0, 'T', 'methane', 0.999888558963484, NULL, NULL, '6.F1.8', NULL, -15.0, 15.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.8', NULL), +(470, 527.0, 258.15, 1500000.0, 'T', 'water', 1.11441036516161E-4, NULL, NULL, '6.F1.8', NULL, -15.0, 15.0, 'T', 'H2O', 89.5, NULL, NULL, '6.F1.8', NULL), +(471, 528.0, 258.15, 4000000.0, 'T', 'methane', 0.999959159039131, NULL, NULL, '6.F1.9', NULL, -15.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.9', NULL), +(472, 529.0, 258.15, 4000000.0, 'T', 'water', 4.08409608684925E-5, NULL, NULL, '6.F1.9', NULL, -15.0, 40.0, 'T', 'H2O', 32.8, NULL, NULL, '6.F1.9', NULL), +(473, 530.0, 258.15, 6000000.0, 'T', 'methane', 0.999969991854972, NULL, NULL, '6.F1.10', NULL, -15.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.10', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(474, 531.0, 258.15, 6000000.0, 'T', 'water', 3.0008145028374E-5, NULL, NULL, '6.F1.10', NULL, -15.0, 60.0, 'T', 'H2O', 24.1, NULL, NULL, '6.F1.10', NULL), +(475, 532.0, 258.15, 8000000.0, 'T', 'methane', 0.999974847944831, NULL, NULL, '6.F1.11', NULL, -15.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.11', NULL), +(476, 533.0, 258.15, 8000000.0, 'T', 'water', 2.51520551690106E-5, NULL, NULL, '6.F1.11', NULL, -15.0, 80.0, 'T', 'H2O', 20.2, NULL, NULL, '6.F1.11', NULL), +(477, 534.0, 258.15, 1.0E7, 'T', 'methane', 0.99997833436832, NULL, NULL, '6.F1.12', NULL, -15.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.12', NULL), +(478, 535.0, 258.15, 1.0E7, 'T', 'water', 2.16656316802369E-5, NULL, NULL, '6.F1.12', NULL, -15.0, 100.0, 'T', 'H2O', 17.4, NULL, NULL, '6.F1.12', NULL), +(479, 536.0, 263.15, 500000.0, 'T', 'methane', 0.999475791325438, NULL, NULL, '6.F1.13', NULL, -10.0, 5.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.13', NULL), +(480, 537.0, 263.15, 500000.0, 'T', 'water', 5.24208674562053E-4, NULL, NULL, '6.F1.13', NULL, -10.0, 5.0, 'T', 'H2O', 421.0, NULL, NULL, '6.F1.13', NULL), +(481, 538.0, 263.15, 1500000.0, 'T', 'methane', 0.999813351828226, NULL, NULL, '6.F1.14', NULL, -10.0, 15.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.14', NULL), +(482, 539.0, 263.15, 1500000.0, 'T', 'water', 1.86648171773995E-4, NULL, NULL, '6.F1.14', NULL, -10.0, 15.0, 'T', 'H2O', 149.9, NULL, NULL, '6.F1.14', NULL), +(483, 540.0, 263.15, 4000000.0, 'T', 'methane', 0.999934505044461, NULL, NULL, '6.F1.15', NULL, -10.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.15', NULL), +(484, 541.0, 263.15, 4000000.0, 'T', 'water', 6.54949555391068E-5, NULL, NULL, '6.F1.15', NULL, -10.0, 40.0, 'T', 'H2O', 52.6, NULL, NULL, '6.F1.15', NULL), +(485, 542.0, 263.15, 6000000.0, 'T', 'methane', 0.999951439101406, NULL, NULL, '6.F1.16', NULL, -10.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.16', NULL), +(486, 543.0, 263.15, 6000000.0, 'T', 'water', 4.85608985936343E-5, NULL, NULL, '6.F1.16', NULL, -10.0, 60.0, 'T', 'H2O', 39.0, NULL, NULL, '6.F1.16', NULL), +(487, 544.0, 263.15, 8000000.0, 'T', 'methane', 0.999961649341623, NULL, NULL, '6.F1.17', NULL, -10.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.17', NULL), +(488, 545.0, 263.15, 8000000.0, 'T', 'water', 3.83506583765112E-5, NULL, NULL, '6.F1.17', NULL, -10.0, 80.0, 'T', 'H2O', 30.8, NULL, NULL, '6.F1.17', NULL), +(489, 546.0, 263.15, 1.0E7, 'T', 'methane', 0.999967750582729, NULL, NULL, '6.F1.18', NULL, -10.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.18', NULL), +(490, 547.0, 263.15, 1.0E7, 'T', 'water', 3.22494172711572E-5, NULL, NULL, '6.F1.18', NULL, -10.0, 100.0, 'T', 'H2O', 25.9, NULL, NULL, '6.F1.18', NULL), +(491, 548.0, 268.15, 500000.0, 'T', 'methane', 0.999169235088675, NULL, NULL, '6.F1.19', NULL, -5.0, 5.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.19', NULL), +(492, 549.0, 268.15, 500000.0, 'T', 'water', 8.30764911324944E-4, NULL, NULL, '6.F1.19', NULL, -5.0, 5.0, 'T', 'H2O', 667.2, NULL, NULL, '6.F1.19', NULL), +(493, 550.0, 268.15, 1500000.0, 'T', 'methane', 0.999719467424278, NULL, NULL, '6.F1.20', NULL, -5.0, 15.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.20', NULL), +(494, 551.0, 268.15, 1500000.0, 'T', 'water', 2.80532575721688E-4, NULL, NULL, '6.F1.20', NULL, -5.0, 15.0, 'T', 'H2O', 225.3, NULL, NULL, '6.F1.20', NULL), +(495, 552.0, 268.15, 4000000.0, 'T', 'methane', 0.999887936387861, NULL, NULL, '6.F1.21', NULL, -5.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.21', NULL), +(496, 553.0, 268.15, 4000000.0, 'T', 'water', 1.12063612139156E-4, NULL, NULL, '6.F1.21', NULL, -5.0, 40.0, 'T', 'H2O', 90.0, NULL, NULL, '6.F1.21', NULL), +(497, 554.0, 268.15, 6000000.0, 'T', 'methane', 0.999921555471503, NULL, NULL, '6.F1.22', NULL, -5.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.22', NULL), +(498, 555.0, 268.15, 6000000.0, 'T', 'water', 7.84445284974093E-5, NULL, NULL, '6.F1.22', NULL, -5.0, 60.0, 'T', 'H2O', 63.0, NULL, NULL, '6.F1.22', NULL), +(499, 556.0, 268.15, 8000000.0, 'T', 'methane', 0.999941353376314, NULL, NULL, '6.F1.23', NULL, -5.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.23', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(500, 557.0, 268.15, 8000000.0, 'T', 'water', 5.86466236861584E-5, NULL, NULL, '6.F1.23', NULL, -5.0, 80.0, 'T', 'H2O', 47.1, NULL, NULL, '6.F1.23', NULL), +(501, 558.0, 268.15, 1.0E7, 'T', 'methane', 0.999947454617419, NULL, NULL, '6.F1.24', NULL, -5.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.24', NULL), +(502, 559.0, 268.15, 1.0E7, 'T', 'water', 5.25453825808043E-5, NULL, NULL, '6.F1.24', NULL, -5.0, 100.0, 'T', 'H2O', 42.2, NULL, NULL, '6.F1.24', NULL), +(503, 560.0, 273.15, 500000.0, 'T', 'methane', 0.998762817721984, NULL, NULL, '6.F1.25', NULL, 0.0, 5.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.25', NULL), +(504, 561.0, 273.15, 500000.0, 'T', 'water', 0.00123718227801628, NULL, NULL, '6.F1.25', NULL, 0.0, 5.0, 'T', 'H2O', 993.6, NULL, NULL, '6.F1.25', NULL), +(505, 562.0, 273.15, 1500000.0, 'T', 'methane', 0.999573535698248, NULL, NULL, '6.F1.26', NULL, 0.0, 15.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.26', NULL), +(506, 563.0, 273.15, 1500000.0, 'T', 'water', 4.26464301751789E-4, NULL, NULL, '6.F1.26', NULL, 0.0, 15.0, 'T', 'H2O', 342.5, NULL, NULL, '6.F1.26', NULL), +(507, 564.0, 273.15, 4000000.0, 'T', 'methane', 0.999836885186775, NULL, NULL, '6.F1.27', NULL, 0.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.27', NULL), +(508, 565.0, 273.15, 4000000.0, 'T', 'water', 1.63114813224772E-4, NULL, NULL, '6.F1.27', NULL, 0.0, 40.0, 'T', 'H2O', 131.0, NULL, NULL, '6.F1.27', NULL), +(509, 566.0, 273.15, 6000000.0, 'T', 'methane', 0.999881835146755, NULL, NULL, '6.F1.28', NULL, 0.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.28', NULL), +(510, 567.0, 273.15, 6000000.0, 'T', 'water', 1.1816485324451E-4, NULL, NULL, '6.F1.28', NULL, 0.0, 60.0, 'T', 'H2O', 94.9, NULL, NULL, '6.F1.28', NULL), +(511, 568.0, 273.15, 8000000.0, 'T', 'methane', 0.999905493020429, NULL, NULL, '6.F1.29', NULL, 0.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.29', NULL), +(512, 569.0, 273.15, 8000000.0, 'T', 'water', 9.45069795706884E-5, NULL, NULL, '6.F1.29', NULL, 0.0, 80.0, 'T', 'H2O', 75.9, NULL, NULL, '6.F1.29', NULL), +(513, 570.0, 273.15, 1.0E7, 'T', 'methane', 0.999925166410116, NULL, NULL, '6.F1.30', NULL, 0.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.30', NULL), +(514, 571.0, 273.15, 1.0E7, 'T', 'water', 7.48335898840365E-5, NULL, NULL, '6.F1.30', NULL, 0.0, 100.0, 'T', 'H2O', 60.1, NULL, NULL, '6.F1.30', NULL), +(515, 572.0, 278.15, 500000.0, 'T', 'methane', 0.998241472895287, NULL, NULL, '6.F1.31', NULL, 5.0, 5.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.31', NULL), +(516, 573.0, 278.15, 500000.0, 'T', 'water', 0.00175852710471256, NULL, NULL, '6.F1.31', NULL, 5.0, 5.0, 'T', 'H2O', 1412.3, NULL, NULL, '6.F1.31', NULL), +(517, 574.0, 278.15, 1500000.0, 'T', 'methane', 0.999383027557612, NULL, NULL, '6.F1.32', NULL, 5.0, 15.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.32', NULL), +(518, 575.0, 278.15, 1500000.0, 'T', 'water', 6.16972442388354E-4, NULL, NULL, '6.F1.32', NULL, 5.0, 15.0, 'T', 'H2O', 495.5, NULL, NULL, '6.F1.32', NULL), +(519, 576.0, 278.15, 4000000.0, 'T', 'methane', 0.999750222660054, NULL, NULL, '6.F1.33', NULL, 5.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.33', NULL), +(520, 577.0, 278.15, 4000000.0, 'T', 'water', 2.49777339945719E-4, NULL, NULL, '6.F1.33', NULL, 5.0, 40.0, 'T', 'H2O', 200.6, NULL, NULL, '6.F1.33', NULL), +(521, 578.0, 278.15, 6000000.0, 'T', 'methane', 0.999824682704564, NULL, NULL, '6.F1.34', NULL, 5.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.34', NULL), +(522, 579.0, 278.15, 6000000.0, 'T', 'water', 1.7531729543548E-4, NULL, NULL, '6.F1.34', NULL, 5.0, 60.0, 'T', 'H2O', 140.8, NULL, NULL, '6.F1.34', NULL), +(523, 580.0, 278.15, 8000000.0, 'T', 'methane', 0.999860169515075, NULL, NULL, '6.F1.35', NULL, 5.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.35', NULL), +(524, 581.0, 278.15, 8000000.0, 'T', 'water', 1.39830484924747E-4, NULL, NULL, '6.F1.35', NULL, 5.0, 80.0, 'T', 'H2O', 112.3, NULL, NULL, '6.F1.35', NULL), +(525, 582.0, 278.15, 1.0E7, 'T', 'methane', 0.999888060902985, NULL, NULL, '6.F1.36', NULL, 5.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.36', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(526, 583.0, 278.15, 1.0E7, 'T', 'water', 1.11939097014557E-4, NULL, NULL, '6.F1.36', NULL, 5.0, 100.0, 'T', 'H2O', 89.9, NULL, NULL, '6.F1.36', NULL), +(527, 584.0, 283.15, 1500000.0, 'T', 'methane', 0.999148067517493, NULL, NULL, '6.F1.37', NULL, 10.0, 15.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.37', NULL), +(528, 585.0, 283.15, 1500000.0, 'T', 'water', 8.51932482506785E-4, NULL, NULL, '6.F1.37', NULL, 10.0, 15.0, 'T', 'H2O', 684.2, NULL, NULL, '6.F1.37', NULL), +(529, 586.0, 283.15, 4000000.0, 'T', 'methane', 0.999642641592401, NULL, NULL, '6.F1.38', NULL, 10.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.38', NULL), +(530, 587.0, 283.15, 4000000.0, 'T', 'water', 3.57358407599309E-4, NULL, NULL, '6.F1.38', NULL, 10.0, 40.0, 'T', 'H2O', 287.0, NULL, NULL, '6.F1.38', NULL), +(531, 588.0, 283.15, 6000000.0, 'T', 'methane', 0.999749226539058, NULL, NULL, '6.F1.39', NULL, 10.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.39', NULL), +(532, 589.0, 283.15, 6000000.0, 'T', 'water', 2.50773460942512E-4, NULL, NULL, '6.F1.39', NULL, 10.0, 60.0, 'T', 'H2O', 201.4, NULL, NULL, '6.F1.39', NULL), +(533, 590.0, 283.15, 8000000.0, 'T', 'methane', 0.99978882234868, NULL, NULL, '6.F1.40', NULL, 10.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.40', NULL), +(534, 591.0, 283.15, 8000000.0, 'T', 'water', 2.1117765132001E-4, NULL, NULL, '6.F1.40', NULL, 10.0, 80.0, 'T', 'H2O', 169.6, NULL, NULL, '6.F1.40', NULL), +(535, 592.0, 283.15, 1.0E7, 'T', 'methane', 0.999823686583568, NULL, NULL, '6.F1.41', NULL, 10.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.41', NULL), +(536, 593.0, 283.15, 1.0E7, 'T', 'water', 1.76313416432272E-4, NULL, NULL, '6.F1.41', NULL, 10.0, 100.0, 'T', 'H2O', 141.6, NULL, NULL, '6.F1.41', NULL), +(537, 594.0, 288.15, 1500000.0, 'T', 'methane', 0.998819596618801, NULL, NULL, '6.F1.42', NULL, 15.0, 15.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.42', NULL), +(538, 595.0, 288.15, 1500000.0, 'T', 'water', 0.00118040338119911, NULL, NULL, '6.F1.42', NULL, 15.0, 15.0, 'T', 'H2O', 948.0, NULL, NULL, '6.F1.42', NULL), +(539, 596.0, 288.15, 4000000.0, 'T', 'methane', 0.99951401746869, NULL, NULL, '6.F1.43', NULL, 15.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.43', NULL), +(540, 597.0, 288.15, 4000000.0, 'T', 'water', 4.85982531310141E-4, NULL, NULL, '6.F1.43', NULL, 15.0, 40.0, 'T', 'H2O', 390.3, NULL, NULL, '6.F1.43', NULL), +(541, 598.0, 288.15, 6000000.0, 'T', 'methane', 0.999649489924254, NULL, NULL, '6.F1.44', NULL, 15.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.44', NULL), +(542, 599.0, 288.15, 6000000.0, 'T', 'water', 3.50510075746361E-4, NULL, NULL, '6.F1.44', NULL, 15.0, 60.0, 'T', 'H2O', 281.5, NULL, NULL, '6.F1.44', NULL), +(543, 600.0, 288.15, 8000000.0, 'T', 'methane', 0.999715856485665, NULL, NULL, '6.F1.45', NULL, 15.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.45', NULL), +(544, 601.0, 288.15, 8000000.0, 'T', 'water', 2.8414351433506E-4, NULL, NULL, '6.F1.45', NULL, 15.0, 80.0, 'T', 'H2O', 228.2, NULL, NULL, '6.F1.45', NULL), +(545, 602.0, 288.15, 1.0E7, 'T', 'methane', 0.999755701325537, NULL, NULL, '6.F1.46', NULL, 15.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.46', NULL), +(546, 603.0, 288.15, 1.0E7, 'T', 'water', 2.4429867446336E-4, NULL, NULL, '6.F1.46', NULL, 15.0, 100.0, 'T', 'H2O', 196.2, NULL, NULL, '6.F1.46', NULL), +(547, 604.0, 293.15, 4000000.0, 'T', 'methane', 0.999333844083395, NULL, NULL, '6.F1.47', NULL, 20.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.47', NULL), +(548, 605.0, 293.15, 4000000.0, 'T', 'water', 6.66155916604984E-4, NULL, NULL, '6.F1.47', NULL, 20.0, 40.0, 'T', 'H2O', 535.0, NULL, NULL, '6.F1.47', NULL), +(549, 606.0, 293.15, 6000000.0, 'T', 'methane', 0.99952945734414, NULL, NULL, '6.F1.48', NULL, 20.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.48', NULL), +(550, 607.0, 293.15, 6000000.0, 'T', 'water', 4.70542655859857E-4, NULL, NULL, '6.F1.48', NULL, 20.0, 60.0, 'T', 'H2O', 377.9, NULL, NULL, '6.F1.48', NULL), +(551, 608.0, 293.15, 8000000.0, 'T', 'methane', 0.99961338053812, NULL, NULL, '6.F1.49', NULL, 20.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.49', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(552, 609.0, 293.15, 8000000.0, 'T', 'water', 3.86619461880089E-4, NULL, NULL, '6.F1.49', NULL, 20.0, 80.0, 'T', 'H2O', 310.5, NULL, NULL, '6.F1.49', NULL), +(553, 610.0, 293.15, 1.0E7, 'T', 'methane', 0.99966779364757, NULL, NULL, '6.F1.50', NULL, 20.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '6.F1.50', NULL), +(554, 611.0, 293.15, 1.0E7, 'T', 'water', 3.32206352430299E-4, NULL, NULL, '6.F1.50', NULL, 20.0, 100.0, 'T', 'H2O', 266.8, NULL, NULL, '6.F1.50', NULL), +(555, 612.0, 253.15, 500000.0, NULL, 'ethane', 0.99981509503997, NULL, NULL, '6.F1.51', NULL, -20.0, 5.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.51', NULL), +(556, 613.0, 253.15, 500000.0, NULL, 'water', 1.84904960029608E-4, NULL, NULL, '6.F1.51', NULL, -20.0, 5.0, 'T', 'H2O', 148.5, NULL, NULL, '6.F1.51', NULL), +(557, 614.0, 258.15, 500000.0, NULL, 'ethane', 0.999710751365556, NULL, NULL, '6.F1.52', NULL, -15.0, 5.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.52', NULL), +(558, 615.0, 258.15, 500000.0, NULL, 'water', 2.89248634443622E-4, NULL, NULL, '6.F1.52', NULL, -15.0, 5.0, 'T', 'H2O', 232.3, NULL, NULL, '6.F1.52', NULL), +(559, 616.0, 263.15, 500000.0, NULL, 'ethane', 0.999514391014064, NULL, NULL, '6.F1.53', NULL, -10.0, 5.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.53', NULL), +(560, 617.0, 263.15, 500000.0, NULL, 'water', 4.85608985936343E-4, NULL, NULL, '6.F1.53', NULL, -10.0, 5.0, 'T', 'H2O', 390.0, NULL, NULL, '6.F1.53', NULL), +(561, 618.0, 263.15, 1500000.0, NULL, 'ethane', 0.999859422424328, NULL, NULL, '6.F1.54', NULL, -10.0, 15.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.54', NULL), +(562, 619.0, 263.15, 1500000.0, NULL, 'water', 1.40577575672341E-4, NULL, NULL, '6.F1.54', NULL, -10.0, 15.0, 'T', 'H2O', 112.9, NULL, NULL, '6.F1.54', NULL), +(563, 620.0, 268.15, 500000.0, NULL, 'ethane', 0.999232862317345, NULL, NULL, '6.F1.55', NULL, -5.0, 5.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.55', NULL), +(564, 621.0, 268.15, 500000.0, NULL, 'water', 7.67137682654824E-4, NULL, NULL, '6.F1.55', NULL, -5.0, 5.0, 'T', 'H2O', 616.1, NULL, NULL, '6.F1.55', NULL), +(565, 622.0, 268.15, 1500000.0, NULL, 'ethane', 0.999771141200987, NULL, NULL, '6.F1.56', NULL, -5.0, 15.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.56', NULL), +(566, 623.0, 268.15, 1500000.0, NULL, 'water', 2.28858799013077E-4, NULL, NULL, '6.F1.56', NULL, -5.0, 15.0, 'T', 'H2O', 183.8, NULL, NULL, '6.F1.56', NULL), +(567, 624.0, 273.15, 500000.0, NULL, 'ethane', 0.998790211049395, NULL, NULL, '6.F1.57', NULL, 0.0, 5.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.57', NULL), +(568, 625.0, 273.15, 500000.0, NULL, 'water', 0.00120978895060449, NULL, NULL, '6.F1.57', NULL, 0.0, 5.0, 'T', 'H2O', 971.6, NULL, NULL, '6.F1.57', NULL), +(569, 626.0, 273.15, 1500000.0, NULL, 'ethane', 0.999612384417123, NULL, NULL, '6.F1.58', NULL, 0.0, 15.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.58', NULL), +(570, 627.0, 273.15, 1500000.0, NULL, 'water', 3.87615582876881E-4, NULL, NULL, '6.F1.58', NULL, 0.0, 15.0, 'T', 'H2O', 311.3, NULL, NULL, '6.F1.58', NULL), +(571, 628.0, 273.15, 2000000.0, NULL, 'ethane', 0.9997048991547, NULL, NULL, '6.F1.59', NULL, 0.0, 20.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.59', NULL), +(572, 629.0, 273.15, 2000000.0, NULL, 'water', 2.95100845299778E-4, NULL, NULL, '6.F1.59', NULL, 0.0, 20.0, 'T', 'H2O', 237.0, NULL, NULL, '6.F1.59', NULL), +(573, 630.0, 278.15, 500000.0, NULL, 'ethane', 0.99824209547091, NULL, NULL, '6.F1.60', NULL, 5.0, 5.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.60', NULL), +(574, 631.0, 278.15, 500000.0, NULL, 'water', 0.00175790452908956, NULL, NULL, '6.F1.60', NULL, 5.0, 5.0, 'T', 'H2O', 1411.8, NULL, NULL, '6.F1.60', NULL), +(575, 632.0, 278.15, 1500000.0, NULL, 'ethane', 0.99941764276225, NULL, NULL, '6.F1.61', NULL, 5.0, 15.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.61', NULL), +(576, 633.0, 278.15, 1500000.0, NULL, 'water', 5.82357237749815E-4, NULL, NULL, '6.F1.61', NULL, 5.0, 15.0, 'T', 'H2O', 467.7, NULL, NULL, '6.F1.61', NULL), +(577, 634.0, 278.15, 2000000.0, NULL, 'ethane', 0.999590469755194, NULL, NULL, '6.F1.62', NULL, 5.0, 20.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.62', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(578, 635.0, 278.15, 2000000.0, NULL, 'water', 4.09530244806316E-4, NULL, NULL, '6.F1.62', NULL, 5.0, 20.0, 'T', 'H2O', 328.9, NULL, NULL, '6.F1.62', NULL), +(579, 636.0, 278.15, 2500000.0, NULL, 'ethane', 0.999661816921589, NULL, NULL, '6.F1.63', NULL, 5.0, 25.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.63', NULL), +(580, 637.0, 278.15, 2500000.0, NULL, 'water', 3.38183078411054E-4, NULL, NULL, '6.F1.63', NULL, 5.0, 25.0, 'T', 'H2O', 271.6, NULL, NULL, '6.F1.63', NULL), +(581, 638.0, 283.15, 500000.0, NULL, 'ethane', 0.997549666863015, NULL, NULL, '6.F1.64', NULL, 10.0, 5.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.64', NULL), +(582, 639.0, 283.15, 500000.0, NULL, 'water', 0.00245033313698495, NULL, NULL, '6.F1.64', NULL, 10.0, 5.0, 'T', 'H2O', 1967.9, NULL, NULL, '6.F1.64', NULL), +(583, 640.0, 283.15, 1500000.0, NULL, 'ethane', 0.999188908478362, NULL, NULL, '6.F1.65', NULL, 10.0, 15.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.65', NULL), +(584, 641.0, 283.15, 1500000.0, NULL, 'water', 8.11091521638292E-4, NULL, NULL, '6.F1.65', NULL, 10.0, 15.0, 'T', 'H2O', 651.4, NULL, NULL, '6.F1.65', NULL), +(585, 642.0, 283.15, 2000000.0, NULL, 'ethane', 0.999401331280928, NULL, NULL, '6.F1.66', NULL, 10.0, 20.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.66', NULL), +(586, 643.0, 283.15, 2000000.0, NULL, 'water', 5.98668719072292E-4, NULL, NULL, '6.F1.66', NULL, 10.0, 20.0, 'T', 'H2O', 480.8, NULL, NULL, '6.F1.66', NULL), +(587, 644.0, 283.15, 2500000.0, NULL, 'ethane', 0.999518126467802, NULL, NULL, '6.F1.67', NULL, 10.0, 25.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.67', NULL), +(588, 645.0, 283.15, 2500000.0, NULL, 'water', 4.81873532198372E-4, NULL, NULL, '6.F1.67', NULL, 10.0, 25.0, 'T', 'H2O', 387.0, NULL, NULL, '6.F1.67', NULL), +(589, 646.0, 288.15, 1500000.0, NULL, 'ethane', 0.998874756818998, NULL, NULL, '6.F1.68', NULL, 15.0, 15.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.68', NULL), +(590, 647.0, 288.15, 1500000.0, NULL, 'water', 0.00112524318100173, NULL, NULL, '6.F1.68', NULL, 15.0, 15.0, 'T', 'H2O', 903.7, NULL, NULL, '6.F1.68', NULL), +(591, 648.0, 288.15, 2000000.0, NULL, 'ethane', 0.99916612221056, NULL, NULL, '6.F1.69', NULL, 15.0, 20.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.69', NULL), +(592, 649.0, 288.15, 2000000.0, NULL, 'water', 8.33877789439921E-4, NULL, NULL, '6.F1.69', NULL, 15.0, 20.0, 'T', 'H2O', 669.7, NULL, NULL, '6.F1.69', NULL), +(593, 650.0, 288.15, 2500000.0, NULL, 'ethane', 0.99933533826489, NULL, NULL, '6.F1.70', NULL, 15.0, 25.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.70', NULL), +(594, 651.0, 288.15, 2500000.0, NULL, 'water', 6.64661735109795E-4, NULL, NULL, '6.F1.70', NULL, 15.0, 25.0, 'T', 'H2O', 533.8, NULL, NULL, '6.F1.70', NULL), +(595, 652.0, 293.15, 1500000.0, NULL, 'ethane', 0.998449039607994, NULL, NULL, '6.F1.71', NULL, 20.0, 15.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.71', NULL), +(596, 653.0, 293.15, 1500000.0, NULL, 'water', 0.00155096039200592, NULL, NULL, '6.F1.71', NULL, 20.0, 15.0, 'T', 'H2O', 1245.6, NULL, NULL, '6.F1.71', NULL), +(597, 654.0, 293.15, 2000000.0, NULL, 'ethane', 0.998804903834098, NULL, NULL, '6.F1.72', NULL, 20.0, 20.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.72', NULL), +(598, 655.0, 293.15, 2000000.0, NULL, 'water', 0.0011950961659018, NULL, NULL, '6.F1.72', NULL, 20.0, 20.0, 'T', 'H2O', 959.8, NULL, NULL, '6.F1.72', NULL), +(599, 656.0, 293.15, 2500000.0, NULL, 'ethane', 0.999081202895584, NULL, NULL, '6.F1.73', NULL, 20.0, 25.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.73', NULL), +(600, 657.0, 293.15, 2500000.0, NULL, 'water', 9.18797104416481E-4, NULL, NULL, '6.F1.73', NULL, 20.0, 25.0, 'T', 'H2O', 737.9, NULL, NULL, '6.F1.73', NULL), +(601, 658.0, 293.15, 3000000.0, NULL, 'ethane', 0.999249173798668, NULL, NULL, '6.F1.74', NULL, 20.0, 30.0, 'T', 'C2H6', NULL, NULL, NULL, '6.F1.74', NULL), +(602, 659.0, 293.15, 3000000.0, NULL, 'water', 7.50826201332346E-4, NULL, NULL, '6.F1.74', NULL, 20.0, 30.0, 'T', 'H2O', 603.0, NULL, NULL, '6.F1.74', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(603, 660.0, 274.29, 2532000.0, 'T', 'methane', NULL, NULL, 9.6E-4, '7.1.1', NULL, 274.29, 25.32, 'T', 'CH4', NULL, NULL, 9.6E-4, '7.1.1', 'Reference 7: temp in K, pressure in bar, solubility in mole-fraction'), +(604, 661.0, 274.19, 2481000.0, 'T', 'methane', NULL, NULL, 9.66E-4, '7.1.2', NULL, 274.19, 24.81, 'T', 'CH4', NULL, NULL, 9.66E-4, '7.1.2', NULL), +(605, 662.0, 274.29, 2515000.0, 'T', 'methane', NULL, NULL, 9.78E-4, '7.1.3', NULL, 274.29, 25.15, 'T', 'CH4', NULL, NULL, 9.78E-4, '7.1.3', NULL), +(606, 663.0, 274.28, 1765000.0, 'T', 'methane', NULL, NULL, 7.35E-4, '7.1.4', NULL, 274.28, 17.65, 'T', 'CH4', NULL, NULL, 7.35E-4, '7.1.4', NULL), +(607, 664.0, 274.38, 2806000.0, 'T', 'methane', NULL, NULL, 0.001142, '7.1.5', NULL, 274.38, 28.06, 'T', 'CH4', NULL, NULL, 0.001142, '7.1.5', NULL), +(608, 665.0, 274.4, 567000.0, 'T', 'methane', NULL, NULL, 2.58E-4, '7.1.6', NULL, 274.4, 5.67, 'T', 'CH4', NULL, NULL, 2.58E-4, '7.1.6', NULL), +(609, 666.0, 274.48, 1005000.0, 'T', 'methane', NULL, NULL, 3.99E-4, '7.1.7', NULL, 274.48, 10.05, 'T', 'CH4', NULL, NULL, 3.99E-4, '7.1.7', NULL), +(610, 667.0, 274.48, 1505000.0, 'T', 'methane', NULL, NULL, 5.92E-4, '7.1.8', NULL, 274.48, 15.05, 'T', 'CH4', NULL, NULL, 5.92E-4, '7.1.8', NULL), +(611, 668.0, 285.68, 9082000.0, 'T', 'methane', NULL, NULL, 0.002002, '7.1.9', NULL, 285.68, 90.82, 'T', 'CH4', NULL, NULL, 0.002002, '7.1.9', NULL), +(612, 669.0, 285.67, 8789000.0, 'T', 'methane', NULL, NULL, 0.001881, '7.1.10', NULL, 285.67, 87.89, 'T', 'CH4', NULL, NULL, 0.001881, '7.1.10', NULL), +(613, 670.0, 285.37, 7058000.0, 'T', 'methane', NULL, NULL, 0.001639, '7.1.11', NULL, 285.37, 70.58, 'T', 'CH4', NULL, NULL, 0.001639, '7.1.11', NULL), +(614, 671.0, 285.65, 2798000.0, 'T', 'methane', NULL, NULL, 7.78E-4, '7.1.12', NULL, 285.65, 27.98, 'T', 'CH4', NULL, NULL, 7.78E-4, '7.1.12', NULL), +(615, 672.0, 285.67, 2331000.0, 'T', 'methane', NULL, NULL, 6.56E-4, '7.1.13', NULL, 285.67, 23.31, 'T', 'CH4', NULL, NULL, 6.56E-4, '7.1.13', NULL), +(616, 673.0, 279.38, 4630000.0, 'T', 'methane', NULL, NULL, 0.001378, '7.1.14', NULL, 279.38, 46.3, 'T', 'CH4', NULL, NULL, 0.001378, '7.1.14', NULL), +(617, 674.0, 283.37, 7046000.0, 'T', 'methane', NULL, NULL, 0.001851, '7.1.15', NULL, 283.37, 70.46, 'T', 'CH4', NULL, NULL, 0.001851, '7.1.15', NULL), +(618, 675.0, 283.37, 4599000.0, 'T', 'methane', NULL, NULL, 0.001123, '7.1.16', NULL, 283.37, 45.99, 'T', 'CH4', NULL, NULL, 0.001123, '7.1.16', NULL), +(619, 676.0, 283.37, 2799000.0, 'T', 'methane', NULL, NULL, 8.32E-4, '7.1.17', NULL, 283.37, 27.99, 'T', 'CH4', NULL, NULL, 8.32E-4, '7.1.17', NULL), +(620, 677.0, 283.37, 1765000.0, 'T', 'methane', NULL, NULL, 5.62E-4, '7.1.18', NULL, 283.37, 17.65, 'T', 'CH4', NULL, NULL, 5.62E-4, '7.1.18', NULL), +(621, 678.0, 297.5, 1861000.0, 'T', 'methane', NULL, NULL, 4.351E-4, '8.1.1', NULL, 297.5, 1.861, 'T', 'CH4', NULL, NULL, 4.351, '8.1.1', 'Reference 8: temp in K, pressure in MPa, compositions in mole fraction (L1*10^4)'), +(622, 679.0, 297.5, 1861000.0, 'T', 'water', NULL, NULL, 0.9995649, '8.1.1', NULL, 297.5, 1.861, 'T', 'H2O', NULL, NULL, NULL, '8.1.1', NULL), +(623, 680.0, 333.7, 1327000.0, 'T', 'methane', NULL, NULL, 2.124E-4, '8.1.2', NULL, 333.7, 1.327, 'T', 'CH4', NULL, NULL, 2.124, '8.1.2', NULL), +(624, 681.0, 333.7, 1327000.0, 'T', 'water', NULL, NULL, 0.9997876, '8.1.2', NULL, 333.7, 1.327, 'T', 'H2O', NULL, NULL, NULL, '8.1.2', NULL), +(625, 682.0, 385.3, 2092000.0, 'T', 'methane', NULL, NULL, 2.985E-4, '8.1.3', NULL, 385.3, 2.092, 'T', 'CH4', NULL, NULL, 2.985, '8.1.3', NULL), +(626, 683.0, 385.3, 2092000.0, 'T', 'water', NULL, NULL, 0.9997015, '8.1.3', NULL, 385.3, 2.092, 'T', 'H2O', NULL, NULL, NULL, '8.1.3', NULL), +(627, 684.0, 388.4, 2156000.0, 'T', 'methane', NULL, NULL, 3.085E-4, '8.1.4', NULL, 388.4, 2.156, 'T', 'CH4', NULL, NULL, 3.085, '8.1.4', NULL), +(628, 685.0, 388.4, 2156000.0, 'T', 'water', NULL, NULL, 0.9996915, '8.1.4', NULL, 388.4, 2.156, 'T', 'H2O', NULL, NULL, NULL, '8.1.4', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(629, 686.0, 430.6, 2131000.0, 'T', 'methane', NULL, NULL, 3.025E-4, '8.1.5', NULL, 430.6, 2.131, 'T', 'CH4', NULL, NULL, 3.025, '8.1.5', NULL), +(630, 687.0, 430.6, 2131000.0, 'T', 'water', NULL, NULL, 0.9996975, '8.1.5', NULL, 430.6, 2.131, 'T', 'H2O', NULL, NULL, NULL, '8.1.5', NULL), +(631, 688.0, 473.2, 3210000.0, 'T', 'methane', NULL, NULL, 4.146E-4, '8.1.6', NULL, 473.2, 3.21, 'T', 'CH4', NULL, NULL, 4.146, '8.1.6', NULL), +(632, 689.0, 473.2, 3210000.0, 'T', 'water', NULL, NULL, 0.9995854, '8.1.6', NULL, 473.2, 3.21, 'T', 'H2O', NULL, NULL, NULL, '8.1.6', NULL), +(633, 692.0, 310.958, 1476788.00183, 'V', 'methane', 0.99484, NULL, NULL, '9.7-1.1', NULL, 100.0, 214.19, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.1', 'Reference 9: temp in F, pressure in psia and composition in mole fraction'), +(634, 693.0, 310.958, 1476788.00183, 'V', 'water', 0.00516, NULL, NULL, '9.7-1.1', NULL, 100.0, 214.19, 'V', 'H2O', 0.00516, NULL, NULL, '9.7-1.1', NULL), +(635, 694.0, 310.958, 4234759.7494, 'V', 'methane', 0.998118, NULL, NULL, '9.7-1.2', NULL, 100.0, 614.2, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.2', NULL), +(636, 695.0, 310.958, 4234759.7494, 'V', 'water', 0.001882, NULL, NULL, '9.7-1.2', NULL, 100.0, 614.2, 'V', 'H2O', 0.001882, NULL, NULL, '9.7-1.2', NULL), +(637, 696.0, 310.958, 6992248.86398, 'V', 'methane', 0.998659, NULL, NULL, '9.7-1.3', NULL, 100.0, 1014.14, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.3', NULL), +(638, 697.0, 310.958, 6992248.86398, 'V', 'water', 0.001341, NULL, NULL, '9.7-1.3', NULL, 100.0, 1014.14, 'V', 'H2O', 0.001341, NULL, NULL, '9.7-1.3', NULL), +(639, 698.0, 310.958, 1.043948946884E7, 'V', 'methane', 0.999081, NULL, NULL, '9.7-1.4', NULL, 100.0, 1514.12, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.4', NULL), +(640, 699.0, 310.958, 1.043948946884E7, 'V', 'water', 9.19E-4, NULL, NULL, '9.7-1.4', NULL, 100.0, 1514.12, 'V', 'H2O', 9.19E-4, NULL, NULL, '9.7-1.4', NULL), +(641, 700.0, 310.958, 1.38867300737E7, 'V', 'methane', 0.999246, NULL, NULL, '9.7-1.5', NULL, 100.0, 2014.1, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.5', NULL), +(642, 701.0, 310.958, 1.38867300737E7, 'V', 'water', 7.54E-4, NULL, NULL, '9.7-1.5', NULL, 100.0, 2014.1, 'V', 'H2O', 7.54E-4, NULL, NULL, '9.7-1.5', NULL), +(643, 702.0, 327.638, 1475753.78828, 'V', 'methane', 0.9887, NULL, NULL, '9.7-1.6', NULL, 130.0, 214.04, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.6', NULL), +(644, 703.0, 327.638, 1475753.78828, 'V', 'water', 0.0113, NULL, NULL, '9.7-1.6', NULL, 130.0, 214.04, 'V', 'H2O', 0.0113, NULL, NULL, '9.7-1.6', NULL), +(645, 704.0, 327.638, 4234070.2737, 'V', 'methane', 0.9957, NULL, NULL, '9.7-1.7', NULL, 130.0, 614.1, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.7', NULL), +(646, 705.0, 327.638, 4234070.2737, 'V', 'water', 0.0043, NULL, NULL, '9.7-1.7', NULL, 130.0, 614.1, 'V', 'H2O', 0.0043, NULL, NULL, '9.7-1.7', NULL), +(647, 706.0, 327.638, 6991973.0737, 'V', 'methane', 0.99721, NULL, NULL, '9.7-1.8', NULL, 130.0, 1014.1, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.8', NULL), +(648, 707.0, 327.638, 6991973.0737, 'V', 'water', 0.00279, NULL, NULL, '9.7-1.8', NULL, 130.0, 1014.1, 'V', 'H2O', 0.00279, NULL, NULL, '9.7-1.8', NULL), +(649, 708.0, 327.638, 1.04393515737E7, 'V', 'methane', 0.99807, NULL, NULL, '9.7-1.9', NULL, 130.0, 1514.1, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.9', NULL), +(650, 709.0, 327.638, 1.04393515737E7, 'V', 'water', 0.00193, NULL, NULL, '9.7-1.9', NULL, 130.0, 1514.1, 'V', 'H2O', 0.00193, NULL, NULL, '9.7-1.9', NULL), +(651, 710.0, 327.638, 1.436984569669E7, 'V', 'methane', 0.99829, NULL, NULL, '9.7-1.10', NULL, 130.0, 2084.17, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.10', NULL), +(652, 711.0, 327.638, 1.436984569669E7, 'V', 'water', 0.00171, NULL, NULL, '9.7-1.10', NULL, 130.0, 2084.17, 'V', 'H2O', 0.00171, NULL, NULL, '9.7-1.10', NULL), +(653, 712.0, 344.318, 1475822.73585, 'V', 'methane', 0.97435, NULL, NULL, '9.7-1.11', NULL, 160.0, 214.05, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.11', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(654, 713.0, 344.318, 1475822.73585, 'V', 'water', 0.02565, NULL, NULL, '9.7-1.11', NULL, 160.0, 214.05, 'V', 'H2O', 0.02565, NULL, NULL, '9.7-1.11', NULL), +(655, 714.0, 344.318, 4234346.06398, 'V', 'methane', 0.99067, NULL, NULL, '9.7-1.12', NULL, 160.0, 614.14, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.12', NULL), +(656, 715.0, 344.318, 4234346.06398, 'V', 'water', 0.00933, NULL, NULL, '9.7-1.12', NULL, 160.0, 614.14, 'V', 'H2O', 0.00933, NULL, NULL, '9.7-1.12', NULL), +(657, 716.0, 344.318, 6992248.86398, 'V', 'methane', 0.9945, NULL, NULL, '9.7-1.13', NULL, 160.0, 1014.14, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.13', NULL), +(658, 717.0, 344.318, 6992248.86398, 'V', 'water', 0.0055, NULL, NULL, '9.7-1.13', NULL, 160.0, 1014.14, 'V', 'H2O', 0.0055, NULL, NULL, '9.7-1.13', NULL), +(659, 718.0, 344.318, 1.043948946884E7, 'V', 'methane', 0.99575, NULL, NULL, '9.7-1.14', NULL, 160.0, 1514.12, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.14', NULL), +(660, 719.0, 344.318, 1.043948946884E7, 'V', 'water', 0.00425, NULL, NULL, '9.7-1.14', NULL, 160.0, 1514.12, 'V', 'H2O', 0.00425, NULL, NULL, '9.7-1.14', NULL), +(661, 720.0, 344.318, 1.388700586398E7, 'V', 'methane', 0.99632, NULL, NULL, '9.7-1.15', NULL, 160.0, 2014.14, 'V', 'CH4', NULL, NULL, NULL, '9.7-1.15', NULL), +(662, 721.0, 344.318, 1.388700586398E7, 'V', 'water', 0.00368, NULL, NULL, '9.7-1.15', NULL, 160.0, 2014.14, 'V', 'H2O', 0.00368, NULL, NULL, '9.7-1.15', NULL), +(663, 722.0, 298.17, 2349490.0, 'T', 'methane', NULL, NULL, 4.97E-4, '10.1.1', NULL, 77.0, 341.0, 'T', 'CH4', NULL, NULL, 4.97E-4, '10.1.1', 'Reference 10: temp in F,pressure in psia,composition in mole fraction'), +(664, 723.0, 298.17, 2349490.0, 'T', 'water', NULL, NULL, 0.999503, '10.1.1', NULL, 77.0, 341.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.1', NULL), +(665, 724.0, 298.17, 3782610.0, 'T', 'methane', NULL, NULL, 7.17E-4, '10.1.2', NULL, 77.0, 549.0, 'T', 'CH4', NULL, NULL, 7.17E-4, '10.1.2', NULL), +(666, 725.0, 298.17, 3782610.0, 'T', 'water', NULL, NULL, 0.999283, '10.1.2', NULL, 77.0, 549.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.2', NULL), +(667, 726.0, 298.17, 4540510.0, 'T', 'methane', NULL, NULL, 0.001, '10.1.3', NULL, 77.0, 659.0, 'T', 'CH4', NULL, NULL, 0.001, '10.1.3', NULL), +(668, 727.0, 298.17, 4540510.0, 'T', 'water', NULL, NULL, 0.999, '10.1.3', NULL, 77.0, 659.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.3', NULL), +(669, 728.0, 298.17, 6435260.0, 'T', 'methane', NULL, NULL, 0.001317, '10.1.4', NULL, 77.0, 934.0, 'T', 'CH4', NULL, NULL, 0.001317, '10.1.4', NULL), +(670, 729.0, 298.17, 6435260.0, 'T', 'water', NULL, NULL, 0.998683, '10.1.4', NULL, 77.0, 934.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.4', NULL), +(671, 730.0, 298.17, 8888100.0, 'T', 'methane', NULL, NULL, 0.001678, '10.1.5', NULL, 77.0, 1290.0, 'T', 'CH4', NULL, NULL, 0.001678, '10.1.5', NULL), +(672, 731.0, 298.17, 8888100.0, 'T', 'water', NULL, NULL, 0.998322, '10.1.5', NULL, 77.0, 1290.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.5', NULL), +(673, 732.0, 298.17, 1.32977E7, 'T', 'methane', NULL, NULL, 0.002235, '10.1.6', NULL, 77.0, 1930.0, 'T', 'CH4', NULL, NULL, 0.002235, '10.1.6', NULL), +(674, 733.0, 298.17, 1.32977E7, 'T', 'water', NULL, NULL, 0.997765, '10.1.6', NULL, 77.0, 1930.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.6', NULL), +(675, 734.0, 298.17, 1.719055E7, 'T', 'methane', NULL, NULL, 0.002585, '10.1.7', NULL, 77.0, 2495.0, 'T', 'CH4', NULL, NULL, 0.002585, '10.1.7', NULL), +(676, 735.0, 298.17, 1.719055E7, 'T', 'water', NULL, NULL, 0.997415, '10.1.7', NULL, 77.0, 2495.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.7', NULL), +(677, 736.0, 298.17, 2.421835E7, 'T', 'methane', NULL, NULL, 0.00311, '10.1.8', NULL, 77.0, 3515.0, 'T', 'CH4', NULL, NULL, 0.00311, '10.1.8', NULL), +(678, 737.0, 298.17, 2.421835E7, 'T', 'water', NULL, NULL, 0.99689, '10.1.8', NULL, 77.0, 3515.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.8', NULL), +(679, 738.0, 298.17, 3.31409E7, 'T', 'methane', NULL, NULL, 0.00366, '10.1.9', NULL, 77.0, 4810.0, 'T', 'CH4', NULL, NULL, 0.00366, '10.1.9', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(680, 739.0, 298.17, 3.31409E7, 'T', 'water', NULL, NULL, 0.99634, '10.1.9', NULL, 77.0, 4810.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.9', NULL), +(681, 740.0, 298.17, 4.43716E7, 'T', 'methane', NULL, NULL, 0.00417, '10.1.10', NULL, 77.0, 6440.0, 'T', 'CH4', NULL, NULL, 0.00417, '10.1.10', NULL), +(682, 741.0, 298.17, 4.43716E7, 'T', 'water', NULL, NULL, 0.99583, '10.1.10', NULL, 77.0, 6440.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.10', NULL), +(683, 742.0, 298.17, 5.370755E7, 'M', 'methane', NULL, NULL, 0.00437, '10.1.11', NULL, 77.0, 7795.0, 'M', 'CH4', NULL, NULL, 0.00437, '10.1.11', 'non-equilibrium solubilities determined when the liquid phase co-existed with vapor and hydrate phases'), +(684, 743.0, 298.17, 5.370755E7, 'M', 'water', NULL, NULL, 0.99563, '10.1.11', NULL, 77.0, 7795.0, 'M', 'H2O', NULL, NULL, NULL, '10.1.11', NULL), +(685, 744.0, 298.17, 6.4077E7, 'M', 'methane', NULL, NULL, 0.00445, '10.1.12', NULL, 77.0, 9300.0, 'M', 'CH4', NULL, NULL, 0.00445, '10.1.12', NULL), +(686, 745.0, 298.17, 6.4077E7, 'M', 'water', NULL, NULL, 0.99555, '10.1.12', NULL, 77.0, 9300.0, 'M', 'H2O', NULL, NULL, NULL, '10.1.12', NULL), +(687, 746.0, 310.958, 2273700.0, 'T', 'methane', NULL, NULL, 4.4E-4, '10.1.13', NULL, 100.0, 330.0, 'T', 'CH4', NULL, NULL, 4.4E-4, '10.1.13', NULL), +(688, 747.0, 310.958, 2273700.0, 'T', 'water', NULL, NULL, 0.99956, '10.1.13', NULL, 100.0, 330.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.13', NULL), +(689, 748.0, 310.958, 3286530.0, 'T', 'methane', NULL, NULL, 6.19E-4, '10.1.14', NULL, 100.0, 477.0, 'T', 'CH4', NULL, NULL, 6.19E-4, '10.1.14', NULL), +(690, 749.0, 310.958, 3286530.0, 'T', 'water', NULL, NULL, 0.999381, '10.1.14', NULL, 100.0, 477.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.14', NULL), +(691, 750.0, 310.958, 4574960.0, 'T', 'methane', NULL, NULL, 8.39E-4, '10.1.15', NULL, 100.0, 664.0, 'T', 'CH4', NULL, NULL, 8.39E-4, '10.1.15', NULL), +(692, 751.0, 310.958, 4574960.0, 'T', 'water', NULL, NULL, 0.999161, '10.1.15', NULL, 100.0, 664.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.15', NULL), +(693, 752.0, 310.958, 6545500.0, 'T', 'methane', NULL, NULL, 0.001123, '10.1.16', NULL, 100.0, 950.0, 'T', 'CH4', NULL, NULL, 0.001123, '10.1.16', NULL), +(694, 753.0, 310.958, 6545500.0, 'T', 'water', NULL, NULL, 0.998877, '10.1.16', NULL, 100.0, 950.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.16', NULL), +(695, 754.0, 310.958, 8750300.0, 'T', 'methane', NULL, NULL, 0.00144, '10.1.17', NULL, 100.0, 1270.0, 'T', 'CH4', NULL, NULL, 0.00144, '10.1.17', NULL), +(696, 755.0, 310.958, 8750300.0, 'T', 'water', NULL, NULL, 0.99856, '10.1.17', NULL, 100.0, 1270.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.17', NULL), +(697, 756.0, 310.958, 1.3091E7, 'T', 'methane', NULL, NULL, 0.00189, '10.1.18', NULL, 100.0, 1900.0, 'T', 'CH4', NULL, NULL, 0.00189, '10.1.18', NULL), +(698, 757.0, 310.958, 1.3091E7, 'T', 'water', NULL, NULL, 0.99811, '10.1.18', NULL, 100.0, 1900.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.18', NULL), +(699, 758.0, 310.958, 1.774175E7, 'T', 'methane', NULL, NULL, 0.00229, '10.1.19', NULL, 100.0, 2575.0, 'T', 'CH4', NULL, NULL, 0.00229, '10.1.19', NULL), +(700, 759.0, 310.958, 1.774175E7, 'T', 'water', NULL, NULL, 0.99771, '10.1.19', NULL, 100.0, 2575.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.19', NULL), +(701, 760.0, 310.958, 2.435615E7, 'T', 'methane', NULL, NULL, 0.00276, '10.1.20', NULL, 100.0, 3535.0, 'T', 'CH4', NULL, NULL, 0.00276, '10.1.20', NULL), +(702, 761.0, 310.958, 2.435615E7, 'T', 'water', NULL, NULL, 0.99724, '10.1.20', NULL, 100.0, 3535.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.20', NULL), +(703, 762.0, 310.958, 3.38299E7, 'T', 'methane', NULL, NULL, 0.00333, '10.1.21', NULL, 100.0, 4910.0, 'T', 'CH4', NULL, NULL, 0.00333, '10.1.21', NULL), +(704, 763.0, 310.958, 3.38299E7, 'T', 'water', NULL, NULL, 0.99667, '10.1.21', NULL, 100.0, 4910.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.21', NULL), +(705, 764.0, 310.958, 4.495725E7, 'T', 'methane', NULL, NULL, 0.00391, '10.1.22', NULL, 100.0, 6525.0, 'T', 'CH4', NULL, NULL, 0.00391, '10.1.22', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(706, 765.0, 310.958, 4.495725E7, 'T', 'water', NULL, NULL, 0.99609, '10.1.22', NULL, 100.0, 6525.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.22', NULL), +(707, 766.0, 310.958, 5.42243E7, 'T', 'methane', NULL, NULL, 0.00417, '10.1.23', NULL, 100.0, 7870.0, 'T', 'CH4', NULL, NULL, 0.00417, '10.1.23', NULL), +(708, 767.0, 310.958, 5.42243E7, 'T', 'water', NULL, NULL, 0.99583, '10.1.23', NULL, 100.0, 7870.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.23', NULL), +(709, 768.0, 310.958, 6.817655E7, 'T', 'methane', NULL, NULL, 0.00465, '10.1.24', NULL, 100.0, 9895.0, 'T', 'CH4', NULL, NULL, 0.00465, '10.1.24', NULL), +(710, 769.0, 310.958, 6.817655E7, 'T', 'water', NULL, NULL, 0.99535, '10.1.24', NULL, 100.0, 9895.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.24', NULL), +(711, 770.0, 344.318, 2280590.0, 'T', 'methane', NULL, NULL, 3.4E-4, '10.1.25', NULL, 160.0, 331.0, 'T', 'CH4', NULL, NULL, 3.4E-4, '10.1.25', NULL), +(712, 771.0, 344.318, 2280590.0, 'T', 'water', NULL, NULL, 0.99966, '10.1.25', NULL, 160.0, 331.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.25', NULL), +(713, 772.0, 344.318, 3217630.0, 'T', 'methane', NULL, NULL, 4.7E-4, '10.1.26', NULL, 160.0, 467.0, 'T', 'CH4', NULL, NULL, 4.7E-4, '10.1.26', NULL), +(714, 773.0, 344.318, 3217630.0, 'T', 'water', NULL, NULL, 0.99953, '10.1.26', NULL, 160.0, 467.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.26', NULL), +(715, 774.0, 344.318, 4540510.0, 'T', 'methane', NULL, NULL, 6.32E-4, '10.1.27', NULL, 160.0, 659.0, 'T', 'CH4', NULL, NULL, 6.32E-4, '10.1.27', NULL), +(716, 775.0, 344.318, 4540510.0, 'T', 'water', NULL, NULL, 0.999368, '10.1.27', NULL, 160.0, 659.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.27', NULL), +(717, 776.0, 344.318, 6497270.0, 'T', 'methane', NULL, NULL, 9.09E-4, '10.1.28', NULL, 160.0, 943.0, 'T', 'CH4', NULL, NULL, 9.09E-4, '10.1.28', NULL), +(718, 777.0, 344.318, 6497270.0, 'T', 'water', NULL, NULL, 0.999091, '10.1.28', NULL, 160.0, 943.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.28', NULL), +(719, 778.0, 344.318, 9094800.0, 'T', 'methane', NULL, NULL, 0.001183, '10.1.29', NULL, 160.0, 1320.0, 'T', 'CH4', NULL, NULL, 0.001183, '10.1.29', NULL), +(720, 779.0, 344.318, 9094800.0, 'T', 'water', NULL, NULL, 0.998817, '10.1.29', NULL, 160.0, 1320.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.29', NULL), +(721, 780.0, 344.318, 1.29532E7, 'T', 'methane', NULL, NULL, 0.0015, '10.1.30', NULL, 160.0, 1880.0, 'T', 'CH4', NULL, NULL, 0.0015, '10.1.30', NULL), +(722, 781.0, 344.318, 1.29532E7, 'T', 'water', NULL, NULL, 0.9985, '10.1.30', NULL, 160.0, 1880.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.30', NULL), +(723, 782.0, 344.318, 1.760395E7, 'T', 'methane', NULL, NULL, 0.001924, '10.1.31', NULL, 160.0, 2555.0, 'T', 'CH4', NULL, NULL, 0.001924, '10.1.31', NULL), +(724, 783.0, 344.318, 1.760395E7, 'T', 'water', NULL, NULL, 0.998076, '10.1.31', NULL, 160.0, 2555.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.31', NULL), +(725, 784.0, 344.318, 2.435615E7, 'T', 'methane', NULL, NULL, 0.002385, '10.1.32', NULL, 160.0, 3535.0, 'T', 'CH4', NULL, NULL, 0.002385, '10.1.32', NULL), +(726, 785.0, 344.318, 2.435615E7, 'T', 'water', NULL, NULL, 0.997615, '10.1.32', NULL, 160.0, 3535.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.32', NULL), +(727, 786.0, 344.318, 3.393325E7, 'T', 'methane', NULL, NULL, 0.00277, '10.1.33', NULL, 160.0, 4925.0, 'T', 'CH4', NULL, NULL, 0.00277, '10.1.33', NULL), +(728, 787.0, 344.318, 3.393325E7, 'T', 'water', NULL, NULL, 0.99723, '10.1.33', NULL, 160.0, 4925.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.33', NULL), +(729, 788.0, 344.318, 4.495725E7, 'T', 'methane', NULL, NULL, 0.00342, '10.1.34', NULL, 160.0, 6525.0, 'T', 'CH4', NULL, NULL, 0.00342, '10.1.34', NULL), +(730, 789.0, 344.318, 4.495725E7, 'T', 'water', NULL, NULL, 0.99658, '10.1.34', NULL, 160.0, 6525.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.34', NULL), +(731, 790.0, 344.318, 5.66358E7, 'T', 'methane', NULL, NULL, 0.00375, '10.1.35', NULL, 160.0, 8220.0, 'T', 'CH4', NULL, NULL, 0.00375, '10.1.35', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(732, 791.0, 344.318, 5.66358E7, 'T', 'water', NULL, NULL, 0.99625, '10.1.35', NULL, 160.0, 8220.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.35', NULL), +(733, 792.0, 344.318, 6.796985E7, 'T', 'methane', NULL, NULL, 0.00424, '10.1.36', NULL, 160.0, 9865.0, 'T', 'CH4', NULL, NULL, 0.00424, '10.1.36', NULL), +(734, 793.0, 344.318, 6.796985E7, 'T', 'water', NULL, NULL, 0.99576, '10.1.36', NULL, 160.0, 9865.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.36', NULL), +(735, 794.0, 377.678, 2294370.0, 'T', 'methane', NULL, NULL, 3.23E-4, '10.1.37', NULL, 220.0, 333.0, 'T', 'CH4', NULL, NULL, 3.23E-4, '10.1.37', NULL), +(736, 795.0, 377.678, 2294370.0, 'T', 'water', NULL, NULL, 0.999677, '10.1.37', NULL, 220.0, 333.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.37', NULL), +(737, 796.0, 377.678, 3210740.0, 'T', 'methane', NULL, NULL, 4.32E-4, '10.1.38', NULL, 220.0, 466.0, 'T', 'CH4', NULL, NULL, 4.32E-4, '10.1.38', NULL), +(738, 797.0, 377.678, 3210740.0, 'T', 'water', NULL, NULL, 0.999568, '10.1.38', NULL, 220.0, 466.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.38', NULL), +(739, 798.0, 377.678, 3224520.0, 'T', 'methane', NULL, NULL, 4.72E-4, '10.1.39', NULL, 220.0, 468.0, 'T', 'CH4', NULL, NULL, 4.72E-4, '10.1.39', NULL), +(740, 799.0, 377.678, 3224520.0, 'T', 'water', NULL, NULL, 0.999528, '10.1.39', NULL, 220.0, 468.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.39', NULL), +(741, 800.0, 377.678, 4492280.0, 'T', 'methane', NULL, NULL, 6.11E-4, '10.1.40', NULL, 220.0, 652.0, 'T', 'CH4', NULL, NULL, 6.11E-4, '10.1.40', NULL), +(742, 801.0, 377.678, 4492280.0, 'T', 'water', NULL, NULL, 0.999389, '10.1.40', NULL, 220.0, 652.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.40', NULL), +(743, 802.0, 377.678, 6511050.0, 'T', 'methane', NULL, NULL, 8.86E-4, '10.1.41', NULL, 220.0, 945.0, 'T', 'CH4', NULL, NULL, 8.86E-4, '10.1.41', NULL), +(744, 803.0, 377.678, 6511050.0, 'T', 'water', NULL, NULL, 0.999114, '10.1.41', NULL, 220.0, 945.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.41', NULL), +(745, 804.0, 377.678, 9025900.0, 'T', 'methane', NULL, NULL, 0.001188, '10.1.42', NULL, 220.0, 1310.0, 'T', 'CH4', NULL, NULL, 0.001188, '10.1.42', NULL), +(746, 805.0, 377.678, 9025900.0, 'T', 'water', NULL, NULL, 0.998812, '10.1.42', NULL, 220.0, 1310.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.42', NULL), +(747, 806.0, 377.678, 1.3091E7, 'T', 'methane', NULL, NULL, 0.00156, '10.1.43', NULL, 220.0, 1900.0, 'T', 'CH4', NULL, NULL, 0.00156, '10.1.43', NULL), +(748, 807.0, 377.678, 1.3091E7, 'T', 'water', NULL, NULL, 0.99844, '10.1.43', NULL, 220.0, 1900.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.43', NULL), +(749, 808.0, 377.678, 1.746615E7, 'T', 'methane', NULL, NULL, 0.00198, '10.1.44', NULL, 220.0, 2535.0, 'T', 'CH4', NULL, NULL, 0.00198, '10.1.44', NULL), +(750, 809.0, 377.678, 1.746615E7, 'T', 'water', NULL, NULL, 0.99802, '10.1.44', NULL, 220.0, 2535.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.44', NULL), +(751, 810.0, 377.678, 2.45973E7, 'T', 'methane', NULL, NULL, 0.00251, '10.1.45', NULL, 220.0, 3570.0, 'T', 'CH4', NULL, NULL, 0.00251, '10.1.45', NULL), +(752, 811.0, 377.678, 2.45973E7, 'T', 'water', NULL, NULL, 0.99749, '10.1.45', NULL, 220.0, 3570.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.45', NULL), +(753, 812.0, 377.678, 3.420885E7, 'T', 'methane', NULL, NULL, 0.00314, '10.1.46', NULL, 220.0, 4965.0, 'T', 'CH4', NULL, NULL, 0.00314, '10.1.46', NULL), +(754, 813.0, 377.678, 3.420885E7, 'T', 'water', NULL, NULL, 0.99686, '10.1.46', NULL, 220.0, 4965.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.46', NULL), +(755, 814.0, 377.678, 4.495725E7, 'T', 'methane', NULL, NULL, 0.00361, '10.1.47', NULL, 220.0, 6525.0, 'T', 'CH4', NULL, NULL, 0.00361, '10.1.47', NULL), +(756, 815.0, 377.678, 4.495725E7, 'T', 'water', NULL, NULL, 0.99639, '10.1.47', NULL, 220.0, 6525.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.47', NULL), +(757, 816.0, 377.678, 5.64291E7, 'T', 'methane', NULL, NULL, 0.00408, '10.1.48', NULL, 220.0, 8190.0, 'T', 'CH4', NULL, NULL, 0.00408, '10.1.48', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(758, 817.0, 377.678, 5.64291E7, 'T', 'water', NULL, NULL, 0.99592, '10.1.48', NULL, 220.0, 8190.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.48', NULL), +(759, 818.0, 377.678, 6.803875E7, 'T', 'methane', NULL, NULL, 0.00451, '10.1.49', NULL, 220.0, 9875.0, 'T', 'CH4', NULL, NULL, 0.00451, '10.1.49', NULL), +(760, 819.0, 377.678, 6.803875E7, 'T', 'water', NULL, NULL, 0.99549, '10.1.49', NULL, 220.0, 9875.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.49', NULL), +(761, 820.0, 411.038, 2315040.0, 'T', 'methane', NULL, NULL, 3.26E-4, '10.1.50', NULL, 280.0, 336.0, 'T', 'CH4', NULL, NULL, 3.26E-4, '10.1.50', NULL), +(762, 821.0, 411.038, 2315040.0, 'T', 'water', NULL, NULL, 0.999674, '10.1.50', NULL, 280.0, 336.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.50', NULL), +(763, 822.0, 411.038, 3196960.0, 'T', 'methane', NULL, NULL, 4.6E-4, '10.1.51', NULL, 280.0, 464.0, 'T', 'CH4', NULL, NULL, 4.6E-4, '10.1.51', NULL), +(764, 823.0, 411.038, 3196960.0, 'T', 'water', NULL, NULL, 0.99954, '10.1.51', NULL, 280.0, 464.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.51', NULL), +(765, 824.0, 411.038, 4506060.0, 'T', 'methane', NULL, NULL, 6.73E-4, '10.1.52', NULL, 280.0, 654.0, 'T', 'CH4', NULL, NULL, 6.73E-4, '10.1.52', NULL), +(766, 825.0, 411.038, 4506060.0, 'T', 'water', NULL, NULL, 0.999327, '10.1.52', NULL, 280.0, 654.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.52', NULL), +(767, 826.0, 411.038, 6483490.0, 'T', 'methane', NULL, NULL, 9.38E-4, '10.1.53', NULL, 280.0, 941.0, 'T', 'CH4', NULL, NULL, 9.38E-4, '10.1.53', NULL), +(768, 827.0, 411.038, 6483490.0, 'T', 'water', NULL, NULL, 0.999062, '10.1.53', NULL, 280.0, 941.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.53', NULL), +(769, 828.0, 411.038, 9025900.0, 'T', 'methane', NULL, NULL, 0.001326, '10.1.54', NULL, 280.0, 1310.0, 'T', 'CH4', NULL, NULL, 0.001326, '10.1.54', NULL), +(770, 829.0, 411.038, 9025900.0, 'T', 'water', NULL, NULL, 0.998674, '10.1.54', NULL, 280.0, 1310.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.54', NULL), +(771, 830.0, 411.038, 1.3091E7, 'T', 'methane', NULL, NULL, 0.001857, '10.1.55', NULL, 280.0, 1900.0, 'T', 'CH4', NULL, NULL, 0.001857, '10.1.55', NULL), +(772, 831.0, 411.038, 1.3091E7, 'T', 'water', NULL, NULL, 0.998143, '10.1.55', NULL, 280.0, 1900.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.55', NULL), +(773, 832.0, 411.038, 1.70872E7, 'T', 'methane', NULL, NULL, 0.002346, '10.1.56', NULL, 280.0, 2480.0, 'T', 'CH4', NULL, NULL, 0.002346, '10.1.56', NULL), +(774, 833.0, 411.038, 1.70872E7, 'T', 'water', NULL, NULL, 0.997654, '10.1.56', NULL, 280.0, 2480.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.56', NULL), +(775, 834.0, 411.038, 2.449395E7, 'T', 'methane', NULL, NULL, 0.003015, '10.1.57', NULL, 280.0, 3555.0, 'T', 'CH4', NULL, NULL, 0.003015, '10.1.57', NULL), +(776, 835.0, 411.038, 2.449395E7, 'T', 'water', NULL, NULL, 0.996985, '10.1.57', NULL, 280.0, 3555.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.57', NULL), +(777, 836.0, 411.038, 3.427775E7, 'T', 'methane', NULL, NULL, 0.003805, '10.1.58', NULL, 280.0, 4975.0, 'T', 'CH4', NULL, NULL, 0.003805, '10.1.58', NULL), +(778, 837.0, 411.038, 3.427775E7, 'T', 'water', NULL, NULL, 0.996195, '10.1.58', NULL, 280.0, 4975.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.58', NULL), +(779, 838.0, 411.038, 4.495725E7, 'T', 'methane', NULL, NULL, 0.00449, '10.1.59', NULL, 280.0, 6525.0, 'T', 'CH4', NULL, NULL, 0.00449, '10.1.59', NULL), +(780, 839.0, 411.038, 4.495725E7, 'T', 'water', NULL, NULL, 0.99551, '10.1.59', NULL, 280.0, 6525.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.59', NULL), +(781, 840.0, 411.038, 5.69803E7, 'T', 'methane', NULL, NULL, 0.00518, '10.1.60', NULL, 280.0, 8270.0, 'T', 'CH4', NULL, NULL, 0.00518, '10.1.60', NULL), +(782, 841.0, 411.038, 5.69803E7, 'T', 'water', NULL, NULL, 0.99482, '10.1.60', NULL, 280.0, 8270.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.60', NULL), +(783, 842.0, 411.038, 6.776315E7, 'T', 'methane', NULL, NULL, 0.00574, '10.1.61', NULL, 280.0, 9835.0, 'T', 'CH4', NULL, NULL, 0.00574, '10.1.61', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(784, 843.0, 411.038, 6.776315E7, 'T', 'water', NULL, NULL, 0.99426, '10.1.61', NULL, 280.0, 9835.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.61', NULL), +(785, 844.0, 444.398, 2225470.0, 'T', 'methane', NULL, NULL, 3.23E-4, '10.1.62', NULL, 340.0, 323.0, 'T', 'CH4', NULL, NULL, 3.23E-4, '10.1.62', NULL), +(786, 845.0, 444.398, 2225470.0, 'T', 'water', NULL, NULL, 0.999677, '10.1.62', NULL, 340.0, 323.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.62', NULL), +(787, 846.0, 444.398, 3272750.0, 'T', 'methane', NULL, NULL, 5.35E-4, '10.1.63', NULL, 340.0, 475.0, 'T', 'CH4', NULL, NULL, 5.35E-4, '10.1.63', NULL), +(788, 847.0, 444.398, 3272750.0, 'T', 'water', NULL, NULL, 0.999465, '10.1.63', NULL, 340.0, 475.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.63', NULL), +(789, 848.0, 444.398, 4561180.0, 'T', 'methane', NULL, NULL, 7.89E-4, '10.1.64', NULL, 340.0, 662.0, 'T', 'CH4', NULL, NULL, 7.89E-4, '10.1.64', NULL), +(790, 849.0, 444.398, 4561180.0, 'T', 'water', NULL, NULL, 0.999211, '10.1.64', NULL, 340.0, 662.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.64', NULL), +(791, 850.0, 444.398, 6538610.0, 'T', 'methane', NULL, NULL, 0.00115, '10.1.65', NULL, 340.0, 949.0, 'T', 'CH4', NULL, NULL, 0.00115, '10.1.65', NULL), +(792, 851.0, 444.398, 6538610.0, 'T', 'water', NULL, NULL, 0.99885, '10.1.65', NULL, 340.0, 949.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.65', NULL), +(793, 852.0, 444.398, 9370400.0, 'T', 'methane', NULL, NULL, 0.001725, '10.1.66', NULL, 340.0, 1360.0, 'T', 'CH4', NULL, NULL, 0.001725, '10.1.66', NULL), +(794, 853.0, 444.398, 9370400.0, 'T', 'water', NULL, NULL, 0.998275, '10.1.66', NULL, 340.0, 1360.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.66', NULL), +(795, 854.0, 444.398, 1.32288E7, 'T', 'methane', NULL, NULL, 0.002355, '10.1.67', NULL, 340.0, 1920.0, 'T', 'CH4', NULL, NULL, 0.002355, '10.1.67', NULL), +(796, 855.0, 444.398, 1.32288E7, 'T', 'water', NULL, NULL, 0.997645, '10.1.67', NULL, 340.0, 1920.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.67', NULL), +(797, 856.0, 444.398, 1.77762E7, 'T', 'methane', NULL, NULL, 0.003025, '10.1.68', NULL, 340.0, 2580.0, 'T', 'CH4', NULL, NULL, 0.003025, '10.1.68', NULL), +(798, 857.0, 444.398, 1.77762E7, 'T', 'water', NULL, NULL, 0.996975, '10.1.68', NULL, 340.0, 2580.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.68', NULL), +(799, 858.0, 444.398, 2.46662E7, 'T', 'methane', NULL, NULL, 0.003835, '10.1.69', NULL, 340.0, 3580.0, 'T', 'CH4', NULL, NULL, 0.003835, '10.1.69', NULL), +(800, 859.0, 444.398, 2.46662E7, 'T', 'water', NULL, NULL, 0.996165, '10.1.69', NULL, 340.0, 3580.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.69', NULL), +(801, 860.0, 444.398, 3.476005E7, 'T', 'methane', NULL, NULL, 0.004875, '10.1.70', NULL, 340.0, 5045.0, 'T', 'CH4', NULL, NULL, 0.004875, '10.1.70', NULL), +(802, 861.0, 444.398, 3.476005E7, 'T', 'water', NULL, NULL, 0.995125, '10.1.70', NULL, 340.0, 5045.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.70', NULL), +(803, 862.0, 444.398, 4.495725E7, 'T', 'methane', NULL, NULL, 0.00595, '10.1.71', NULL, 340.0, 6525.0, 'T', 'CH4', NULL, NULL, 0.00595, '10.1.71', NULL), +(804, 863.0, 444.398, 4.495725E7, 'T', 'water', NULL, NULL, 0.99405, '10.1.71', NULL, 340.0, 6525.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.71', NULL), +(805, 864.0, 444.398, 5.65669E7, 'T', 'methane', NULL, NULL, 0.0068, '10.1.72', NULL, 340.0, 8210.0, 'T', 'CH4', NULL, NULL, 0.0068, '10.1.72', NULL), +(806, 865.0, 444.398, 5.65669E7, 'T', 'water', NULL, NULL, 0.9932, '10.1.72', NULL, 340.0, 8210.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.72', NULL), +(807, 866.0, 444.398, 6.886555E7, 'T', 'methane', NULL, NULL, 0.00775, '10.1.73', NULL, 340.0, 9995.0, 'T', 'CH4', NULL, NULL, 0.00775, '10.1.73', NULL), +(808, 867.0, 444.398, 6.886555E7, 'T', 'water', NULL, NULL, 0.99225, '10.1.73', NULL, 340.0, 9995.0, 'T', 'H2O', NULL, NULL, NULL, '10.1.73', NULL), +(929, 988.0, 298.15, 2249415.0, 'T', 'nitrogen', 0.998471, NULL, NULL, '4.1.1', NULL, 25.0, 22.2, 'T', 'N2', NULL, NULL, NULL, '4.1.1', 'Reference 4: temperature in Celsius, pressure in atm and compositions in mole fractions '); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(930, 989.0, 298.15, 2249415.0, 'T', 'water', 0.001529, NULL, NULL, '4.1.1', NULL, 25.0, 22.2, 'T', 'H2O', 0.001529, NULL, NULL, '4.1.1', NULL), +(931, 990.0, 298.15, 3090412.5, 'T', 'nitrogen', 0.998851, NULL, NULL, '4.1.2', NULL, 25.0, 30.5, 'T', 'N2', NULL, NULL, NULL, '4.1.2', NULL), +(932, 991.0, 298.15, 3090412.5, 'T', 'water', 0.001149, NULL, NULL, '4.1.2', NULL, 25.0, 30.5, 'T', 'H2O', 0.001149, NULL, NULL, '4.1.2', NULL), +(933, 992.0, 298.15, 3869601.75, 'T', 'nitrogen', 0.999059, NULL, NULL, '4.1.3', NULL, 25.0, 38.19, 'T', 'N2', NULL, NULL, NULL, '4.1.3', NULL), +(934, 993.0, 298.15, 3869601.75, 'T', 'water', 9.41E-4, NULL, NULL, '4.1.3', NULL, 25.0, 38.19, 'T', 'H2O', 9.41E-4, NULL, NULL, '4.1.3', NULL), +(935, 994.0, 323.15, 2108573.25, 'T', 'nitrogen', 0.99374, NULL, NULL, '4.1.4', NULL, 50.0, 20.81, 'T', 'N2', NULL, NULL, NULL, '4.1.4', NULL), +(936, 995.0, 323.15, 2108573.25, 'T', 'water', 0.00626, NULL, NULL, '4.1.4', NULL, 50.0, 20.81, 'T', 'H2O', 0.00626, NULL, NULL, '4.1.4', NULL), +(937, 996.0, 323.15, 3741932.25, 'T', 'nitrogen', 0.99632, NULL, NULL, '4.1.5', NULL, 50.0, 36.93, 'T', 'N2', NULL, NULL, NULL, '4.1.5', NULL), +(938, 997.0, 323.15, 3741932.25, 'T', 'water', 0.00368, NULL, NULL, '4.1.5', NULL, 50.0, 36.93, 'T', 'H2O', 0.00368, NULL, NULL, '4.1.5', NULL), +(939, 998.0, 323.15, 5982228.0, 'T', 'nitrogen', 0.99758, NULL, NULL, '4.1.6', NULL, 50.0, 59.04, 'T', 'N2', NULL, NULL, NULL, '4.1.6', NULL), +(940, 999.0, 323.15, 5982228.0, 'T', 'water', 0.00242, NULL, NULL, '4.1.6', NULL, 50.0, 59.04, 'T', 'H2O', 0.00242, NULL, NULL, '4.1.6', NULL), +(941, 1000.0, 323.15, 7699686.75, 'T', 'nitrogen', 0.998044, NULL, NULL, '4.1.7', NULL, 50.0, 75.99, 'T', 'N2', NULL, NULL, NULL, '4.1.7', NULL), +(942, 1001.0, 323.15, 7699686.75, 'T', 'water', 0.001956, NULL, NULL, '4.1.7', NULL, 50.0, 75.99, 'T', 'H2O', 0.001956, NULL, NULL, '4.1.7', NULL), +(943, 1002.0, 348.15, 4221199.5, 'T', 'nitrogen', 0.98991, NULL, NULL, '4.1.8', NULL, 75.0, 41.66, 'T', 'N2', NULL, NULL, NULL, '4.1.8', NULL), +(944, 1003.0, 348.15, 4221199.5, 'T', 'water', 0.01009, NULL, NULL, '4.1.8', NULL, 75.0, 41.66, 'T', 'H2O', 0.01009, NULL, NULL, '4.1.8', NULL), +(945, 1004.0, 348.15, 6114963.75, 'T', 'nitrogen', 0.99279, NULL, NULL, '4.1.9', NULL, 75.0, 60.35, 'T', 'N2', NULL, NULL, NULL, '4.1.9', NULL), +(946, 1005.0, 348.15, 6114963.75, 'T', 'water', 0.00721, NULL, NULL, '4.1.9', NULL, 75.0, 60.35, 'T', 'H2O', 0.00721, NULL, NULL, '4.1.9', NULL), +(947, 1006.0, 348.15, 8972328.75, 'T', 'nitrogen', 0.99477, NULL, NULL, '4.1.20', NULL, 75.0, 88.55, 'T', 'N2', NULL, NULL, NULL, '4.1.20', NULL), +(948, 1007.0, 373.15, 5716756.5, 'T', 'water', 0.00523, NULL, NULL, '4.1.20', NULL, 100.0, 56.42, 'T', 'H2O', 0.00523, NULL, NULL, '4.1.20', NULL), +(949, 1008.0, 373.15, 5716756.5, 'T', 'nitrogen', 0.98006, NULL, NULL, '4.1.21', NULL, 100.0, 56.42, 'T', 'N2', NULL, NULL, NULL, '4.1.21', NULL), +(950, 1009.0, 373.15, 7947933.0, 'T', 'water', 0.01994, NULL, NULL, '4.1.21', NULL, 100.0, 78.44, 'T', 'H2O', 0.01994, NULL, NULL, '4.1.21', NULL), +(951, 1010.0, 373.15, 7947933.0, 'T', 'nitrogen', 0.98497, NULL, NULL, '4.1.22', NULL, 100.0, 78.44, 'T', 'N2', NULL, NULL, NULL, '4.1.22', NULL), +(952, 1011.0, 373.15, 1.015175175E7, 'T', 'water', 0.01503, NULL, NULL, '4.1.22', NULL, 100.0, 100.19, 'T', 'H2O', 0.01503, NULL, NULL, '4.1.22', NULL), +(953, 1012.0, 373.15, 1.015175175E7, 'T', 'nitrogen', 0.98782, NULL, NULL, '4.1.23', NULL, 100.0, 100.19, 'T', 'N2', NULL, NULL, NULL, '4.1.23', NULL), +(954, 1013.0, 373.15, 1.015175175E7, 'T', 'water', 0.01218, NULL, NULL, '4.1.23', NULL, 100.0, 100.19, 'T', 'H2O', 0.01218, NULL, NULL, '4.1.23', NULL), +(955, 1014.0, 310.958, 344737.85, 'T', 'nitrogen', 0.9798, NULL, 3.59E-5, '12.1.1', NULL, 100.0, 50.0, 'T', 'N2', NULL, NULL, 0.0359, '12.1.1', 'Reference 12: temp in F, pressure in psia, mole fraction of gas in H20 (*10^-3) and mole percent of H20 in N2'); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(956, 1015.0, 310.958, 344737.85, 'T', 'water', 0.0202, NULL, 0.9999641, '12.1.1', NULL, 100.0, 50.0, 'T', 'H2O', 2.02, NULL, NULL, '12.1.1', NULL), +(957, 1016.0, 310.958, 1378951.4, 'T', 'nitrogen', 0.99498, NULL, 1.36E-4, '12.1.2', NULL, 100.0, 200.0, 'T', 'N2', NULL, NULL, 0.136, '12.1.2', NULL), +(958, 1017.0, 310.958, 1378951.4, 'T', 'water', 0.00502, NULL, 0.999864, '12.1.2', NULL, 100.0, 200.0, 'T', 'H2O', 0.502, NULL, NULL, '12.1.2', NULL), +(959, 1018.0, 310.958, 3102640.65, 'T', 'nitrogen', 0.99764, NULL, 3.0E-4, '12.1.3', NULL, 100.0, 450.0, 'T', 'N2', NULL, NULL, 0.3, '12.1.3', NULL), +(960, 1019.0, 310.958, 3102640.65, 'T', 'water', 0.00236, NULL, 0.9997, '12.1.3', NULL, 100.0, 450.0, 'T', 'H2O', 0.236, NULL, NULL, '12.1.3', NULL), +(961, 1020.0, 310.958, 6550019.15, 'T', 'nitrogen', 0.99878, NULL, 6.01E-4, '12.1.4', NULL, 100.0, 950.0, 'T', 'N2', NULL, NULL, 0.601, '12.1.4', NULL), +(962, 1021.0, 310.958, 6550019.15, 'T', 'water', 0.00122, NULL, 0.999399, '12.1.4', NULL, 100.0, 950.0, 'T', 'H2O', 0.122, NULL, NULL, '12.1.4', NULL), +(963, 1022.0, 310.958, 1.03421355E7, 'T', 'nitrogen', 0.99915, NULL, 9.03E-4, '12.1.5', NULL, 100.0, 1500.0, 'T', 'N2', NULL, NULL, 0.903, '12.1.5', NULL), +(964, 1023.0, 310.958, 1.03421355E7, 'T', 'water', 8.5E-4, NULL, 0.999097, '12.1.5', NULL, 100.0, 1500.0, 'T', 'H2O', 0.085, NULL, NULL, '12.1.5', 'interpolation from measured data'), +(965, 1024.0, 310.958, 1.3789514E7, 'T', 'nitrogen', 0.99931, NULL, 0.00116, '12.1.6', NULL, 100.0, 2000.0, 'T', 'N2', NULL, NULL, 1.16, '12.1.6', NULL), +(966, 1025.0, 310.958, 1.3789514E7, 'T', 'water', 6.9E-4, NULL, 0.99884, '12.1.6', NULL, 100.0, 2000.0, 'T', 'H2O', 0.069, NULL, NULL, '12.1.6', NULL), +(967, 1026.0, 366.558, 344737.85, 'T', 'nitrogen', 0.767, NULL, 2.3E-5, '12.1.7', NULL, 200.0, 50.0, 'T', 'N2', NULL, NULL, 0.023, '12.1.7', NULL), +(968, 1027.0, 366.558, 344737.85, 'T', 'water', 0.233, NULL, 0.999977, '12.1.7', NULL, 200.0, 50.0, 'T', 'H2O', 23.3, NULL, NULL, '12.1.7', NULL), +(969, 1028.0, 366.558, 1378951.4, 'T', 'nitrogen', 0.9395, NULL, 1.07E-4, '12.1.8', NULL, 200.0, 200.0, 'T', 'N2', NULL, NULL, 0.107, '12.1.8', NULL), +(970, 1029.0, 366.558, 1378951.4, 'T', 'water', 0.0605, NULL, 0.999893, '12.1.8', NULL, 200.0, 200.0, 'T', 'H2O', 6.05, NULL, NULL, '12.1.8', NULL), +(971, 1030.0, 366.558, 3102640.65, 'T', 'nitrogen', 0.9723, NULL, 2.48E-4, '12.1.9', NULL, 200.0, 450.0, 'T', 'N2', NULL, NULL, 0.248, '12.1.9', NULL), +(972, 1031.0, 366.558, 3102640.65, 'T', 'water', 0.0277, NULL, 0.999752, '12.1.9', NULL, 200.0, 450.0, 'T', 'H2O', 2.77, NULL, NULL, '12.1.9', NULL), +(973, 1032.0, 366.558, 6550019.15, 'T', 'nitrogen', 0.9863, NULL, 5.09E-4, '12.1.10', NULL, 200.0, 950.0, 'T', 'N2', NULL, NULL, 0.509, '12.1.10', NULL), +(974, 1033.0, 366.558, 6550019.15, 'T', 'water', 0.0137, NULL, 0.999491, '12.1.10', NULL, 200.0, 950.0, 'T', 'H2O', 1.37, NULL, NULL, '12.1.10', NULL), +(975, 1034.0, 366.558, 1.3789514E7, 'T', 'nitrogen', 0.99253, NULL, 0.001011, '12.1.11', NULL, 200.0, 2000.0, 'T', 'N2', NULL, NULL, 1.011, '12.1.11', NULL), +(976, 1035.0, 366.558, 1.3789514E7, 'T', 'water', 0.00747, NULL, 0.998989, '12.1.11', NULL, 200.0, 2000.0, 'T', 'H2O', 0.747, NULL, NULL, '12.1.11', NULL), +(977, 1036.0, 422.158, 6550019.15, 'T', 'nitrogen', 0.9214, NULL, 6.45E-4, '12.1.12', NULL, 300.0, 950.0, 'T', 'N2', NULL, NULL, 0.645, '12.1.12', NULL), +(978, 1037.0, 422.158, 6550019.15, 'T', 'water', 0.0786, NULL, 0.999355, '12.1.12', NULL, 300.0, 950.0, 'T', 'H2O', 7.86, NULL, NULL, '12.1.12', NULL), +(979, 1038.0, 477.758, 3102640.65, 'T', 'nitrogen', 0.4266, NULL, 2.63E-4, '12.1.13', NULL, 400.0, 450.0, 'T', 'N2', NULL, NULL, 0.263, '12.1.13', NULL), +(980, 1039.0, 477.758, 3102640.65, 'T', 'water', 0.5734, NULL, 0.999737, '12.1.13', NULL, 400.0, 450.0, 'T', 'H2O', 57.34, NULL, NULL, '12.1.13', NULL), +(981, 1040.0, 477.758, 6550019.15, 'T', 'nitrogen', 0.7055, NULL, 8.82E-4, '12.1.14', NULL, 400.0, 950.0, 'T', 'N2', NULL, NULL, 0.882, '12.1.14', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(982, 1041.0, 477.758, 6550019.15, 'T', 'water', 0.2945, NULL, 0.999118, '12.1.14', NULL, 400.0, 950.0, 'T', 'H2O', 29.45, NULL, NULL, '12.1.14', NULL), +(983, 1042.0, 477.758, 1.03421355E7, 'T', 'nitrogen', 0.8025, NULL, 0.001518, '12.1.15', NULL, 400.0, 1500.0, 'T', 'N2', NULL, NULL, 1.518, '12.1.15', NULL), +(984, 1043.0, 477.758, 1.03421355E7, 'T', 'water', 0.1975, NULL, 0.998482, '12.1.15', NULL, 400.0, 1500.0, 'T', 'H2O', 19.75, NULL, NULL, '12.1.15', NULL), +(985, 1044.0, 588.958, 1.3789514E7, 'T', 'nitrogen', 0.1445, NULL, 0.002935, '12.1.16', NULL, 600.0, 2000.0, 'T', 'N2', NULL, NULL, 2.935, '12.1.16', NULL), +(986, 1045.0, 588.958, 1.3789514E7, 'T', 'water', 0.8555, NULL, 0.997065, '12.1.16', NULL, 600.0, 2000.0, 'T', 'H2O', 85.55, NULL, NULL, '12.1.16', NULL), +(987, 1046.0, 253.17, 981000.0, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.1', NULL, 253.17, 9.81, 'T', 'N2', NULL, NULL, NULL, '13.2.1', 'Reference 13: temp in K, pressure in bar, composition in molar fraction'), +(988, 1047.0, 253.17, 981000.0, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.1', NULL, 253.17, 9.81, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.1', NULL), +(989, 1048.0, 259.64, 1974000.0, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.2', NULL, 259.64, 19.74, 'T', 'N2', NULL, NULL, NULL, '13.2.2', NULL), +(990, 1049.0, 259.64, 1974000.0, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.2', NULL, 259.64, 19.74, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.2', NULL), +(991, 1050.0, 263.39, 2949000.0, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.3', NULL, 263.39, 29.49, 'T', 'N2', NULL, NULL, NULL, '13.2.3', NULL), +(992, 1051.0, 263.39, 2949000.0, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.3', NULL, 263.39, 29.49, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.3', NULL), +(993, 1052.0, 266.3, 3963000.0, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.4', NULL, 266.3, 39.63, 'T', 'N2', NULL, NULL, NULL, '13.2.4', NULL), +(994, 1053.0, 266.3, 3963000.0, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.4', NULL, 266.3, 39.63, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.4', NULL), +(995, 1054.0, 268.34, 4915000.0, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.5', NULL, 268.34, 49.15, 'T', 'N2', NULL, NULL, NULL, '13.2.5', NULL), +(996, 1055.0, 268.34, 4915000.0, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.5', NULL, 268.34, 49.15, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.5', NULL), +(997, 1056.0, 270.23, 5994000.0, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.6', NULL, 270.23, 59.94, 'T', 'N2', NULL, NULL, NULL, '13.2.6', NULL), +(998, 1057.0, 270.23, 5994000.0, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.6', NULL, 270.23, 59.94, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.6', NULL), +(999, 1058.0, 271.71, 6980000.0, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.7', NULL, 271.71, 69.8, 'T', 'N2', NULL, NULL, NULL, '13.2.7', NULL), +(1000, 1059.0, 271.71, 6980000.0, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.7', NULL, 271.71, 69.8, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.7', NULL), +(1001, 1060.0, 273.04, 8004000.0, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.8', NULL, 273.04, 80.04, 'T', 'N2', NULL, NULL, NULL, '13.2.8', NULL), +(1002, 1061.0, 273.04, 8004000.0, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.8', NULL, 273.04, 80.04, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.8', NULL), +(1003, 1062.0, 274.1, 8911000.0, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.9', NULL, 274.1, 89.11, 'T', 'N2', NULL, NULL, NULL, '13.2.9', NULL), +(1004, 1063.0, 274.1, 8911000.0, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.9', NULL, 274.1, 89.11, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.9', NULL), +(1005, 1064.0, 275.2, 9971000.0, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.10', NULL, 275.2, 99.71, 'T', 'N2', NULL, NULL, NULL, '13.2.10', NULL), +(1006, 1065.0, 275.2, 9971000.0, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.10', NULL, 275.2, 99.71, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.10', NULL), +(1007, 1066.0, 276.13, 1.0961E7, 'T', 'nitrogen', 0.99992, NULL, NULL, '13.2.11', NULL, 276.13, 109.61, 'T', 'N2', NULL, NULL, NULL, '13.2.11', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1008, 1067.0, 276.13, 1.0961E7, 'T', 'water', 8.0E-5, NULL, NULL, '13.2.11', NULL, 276.13, 109.61, 'T', 'H2O', 8.0E-5, NULL, NULL, '13.2.11', NULL), +(1009, 1068.0, 249.8, 472000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.12', NULL, 249.8, 4.72, 'T', 'N2', NULL, NULL, NULL, '13.2.12', NULL), +(1010, 1069.0, 249.8, 472000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.12', NULL, 249.8, 4.72, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.12', NULL), +(1011, 1070.0, 255.63, 994000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.13', NULL, 255.63, 9.94, 'T', 'N2', NULL, NULL, NULL, '13.2.13', NULL), +(1012, 1071.0, 255.63, 994000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.13', NULL, 255.63, 9.94, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.13', NULL), +(1013, 1072.0, 259.77, 1493000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.14', NULL, 259.77, 14.93, 'T', 'N2', NULL, NULL, NULL, '13.2.14', NULL), +(1014, 1073.0, 259.77, 1493000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.1.4', NULL, 259.77, 14.93, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.1.4', NULL), +(1015, 1074.0, 262.52, 1972000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.15', NULL, 262.52, 19.72, 'T', 'N2', NULL, NULL, NULL, '13.2.15', NULL), +(1016, 1075.0, 262.52, 1972000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.15', NULL, 262.52, 19.72, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.15', NULL), +(1017, 1076.0, 264.67, 2480000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.16', NULL, 264.67, 24.8, 'T', 'N2', NULL, NULL, NULL, '13.2.16', NULL), +(1018, 1077.0, 264.67, 2480000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.16', NULL, 264.67, 24.8, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.16', NULL), +(1019, 1078.0, 266.64, 3007000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.17', NULL, 266.64, 30.07, 'T', 'N2', NULL, NULL, NULL, '13.2.17', NULL), +(1020, 1079.0, 266.64, 3007000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.17', NULL, 266.64, 30.07, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.17', NULL), +(1021, 1080.0, 268.2, 3489000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.18', NULL, 268.2, 34.89, 'T', 'N2', NULL, NULL, NULL, '13.2.18', NULL), +(1022, 1081.0, 268.2, 3489000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.18', NULL, 268.2, 34.89, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.18', NULL), +(1023, 1082.0, 269.81, 3975000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.19', NULL, 269.81, 39.75, 'T', 'N2', NULL, NULL, NULL, '13.2.19', NULL), +(1024, 1083.0, 269.81, 3975000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.19', NULL, 269.81, 39.75, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.19', NULL), +(1025, 1084.0, 272.08, 4952000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.20', NULL, 272.08, 49.52, 'T', 'N2', NULL, NULL, NULL, '13.2.20', NULL), +(1026, 1085.0, 272.08, 4952000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.20', NULL, 272.08, 49.52, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.20', NULL), +(1027, 1086.0, 274.32, 5975000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.21', NULL, 274.32, 59.75, 'T', 'N2', NULL, NULL, NULL, '13.2.21', NULL), +(1028, 1087.0, 274.32, 5975000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.21', NULL, 274.32, 59.75, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.21', NULL), +(1029, 1088.0, 275.78, 6961000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.22', NULL, 275.78, 69.61, 'T', 'N2', NULL, NULL, NULL, '13.2.22', NULL), +(1030, 1089.0, 275.78, 6961000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.22', NULL, 275.78, 69.61, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.22', NULL), +(1031, 1090.0, 277.09, 7965000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.23', NULL, 277.09, 79.65, 'T', 'N2', NULL, NULL, NULL, '13.2.23', NULL), +(1032, 1091.0, 277.09, 7965000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.23', NULL, 277.09, 79.65, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.23', NULL), +(1033, 1092.0, 278.43, 8977000.0, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.24', NULL, 278.43, 89.77, 'T', 'N2', NULL, NULL, NULL, '13.2.24', NULL), +(1034, 1093.0, 278.43, 8977000.0, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.24', NULL, 278.43, 89.77, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.24', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1035, 1094.0, 279.55, 1.0057E7, 'T', 'nitrogen', 0.9999, NULL, NULL, '13.2.25', NULL, 279.55, 100.57, 'T', 'N2', NULL, NULL, NULL, '13.2.25', NULL), +(1036, 1095.0, 279.55, 1.0057E7, 'T', 'water', 1.0E-4, NULL, NULL, '13.2.25', NULL, 279.55, 100.57, 'T', 'H2O', 1.0E-4, NULL, NULL, '13.2.25', NULL), +(1037, 1096.0, 252.61, 421000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.26', NULL, 252.61, 4.21, 'T', 'N2', NULL, NULL, NULL, '13.2.26', NULL), +(1038, 1097.0, 252.61, 421000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.26', NULL, 252.61, 4.21, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.26', NULL), +(1039, 1098.0, 260.02, 939000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.27', NULL, 260.02, 9.39, 'T', 'N2', NULL, NULL, NULL, '13.2.27', NULL), +(1040, 1099.0, 260.02, 939000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.27', NULL, 260.02, 9.39, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.27', NULL), +(1041, 1100.0, 264.25, 1505000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.28', NULL, 264.25, 15.05, 'T', 'N2', NULL, NULL, NULL, '13.2.28', NULL), +(1042, 1101.0, 264.25, 1505000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.28', NULL, 264.25, 15.05, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.28', NULL), +(1043, 1102.0, 267.26, 2019000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.29', NULL, 267.26, 20.19, 'T', 'N2', NULL, NULL, NULL, '13.2.29', NULL), +(1044, 1103.0, 267.26, 2019000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.29', NULL, 267.26, 20.19, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.29', NULL), +(1045, 1104.0, 269.5, 2531000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.30', NULL, 269.5, 25.31, 'T', 'N2', NULL, NULL, NULL, '13.2.30', NULL), +(1046, 1105.0, 269.5, 2531000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.30', NULL, 269.5, 25.31, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.30', NULL), +(1047, 1106.0, 271.48, 3006000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.31', NULL, 271.48, 30.06, 'T', 'N2', NULL, NULL, NULL, '13.2.31', NULL), +(1048, 1107.0, 271.48, 3006000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.31', NULL, 271.48, 30.06, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.31', NULL), +(1049, 1108.0, 272.85, 3509000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.32', NULL, 272.85, 35.09, 'T', 'N2', NULL, NULL, NULL, '13.2.32', NULL), +(1050, 1109.0, 272.85, 3509000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.32', NULL, 272.85, 35.09, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.32', NULL), +(1051, 1110.0, 274.06, 3989000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.33', NULL, 274.06, 39.89, 'T', 'N2', NULL, NULL, NULL, '13.2.33', NULL), +(1052, 1111.0, 274.06, 3989000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.33', NULL, 274.06, 39.89, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.33', NULL), +(1053, 1112.0, 275.47, 4556000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.34', NULL, 275.47, 45.56, 'T', 'N2', NULL, NULL, NULL, '13.2.34', NULL), +(1054, 1113.0, 275.47, 4556000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.34', NULL, 275.47, 45.56, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.34', NULL), +(1055, 1114.0, 276.72, 4999000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.35', NULL, 276.72, 49.99, 'T', 'N2', NULL, NULL, NULL, '13.2.35', NULL), +(1056, 1115.0, 276.72, 4999000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.35', NULL, 276.72, 49.99, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.35', NULL), +(1057, 1116.0, 277.9, 5447000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.36', NULL, 277.9, 54.47, 'T', 'N2', NULL, NULL, NULL, '13.2.36', NULL), +(1058, 1117.0, 277.9, 5447000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.36', NULL, 277.9, 54.47, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.36', NULL), +(1059, 1118.0, 278.7, 6000000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.37', NULL, 278.7, 60.0, 'T', 'N2', NULL, NULL, NULL, '13.2.37', NULL), +(1060, 1119.0, 278.7, 6000000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.37', NULL, 278.7, 60.0, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.37', NULL), +(1061, 1120.0, 279.74, 6446000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.38', NULL, 279.74, 64.46, 'T', 'N2', NULL, NULL, NULL, '13.2.38', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1062, 1121.0, 279.74, 6446000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.38', NULL, 279.74, 64.46, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.38', NULL), +(1063, 1122.0, 280.63, 6976000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.39', NULL, 280.63, 69.76, 'T', 'N2', NULL, NULL, NULL, '13.2.39', NULL), +(1064, 1123.0, 280.63, 6976000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.39', NULL, 280.63, 69.76, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.39', NULL), +(1065, 1124.0, 281.5, 7486000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.40', NULL, 281.5, 74.86, 'T', 'N2', NULL, NULL, NULL, '13.2.40', NULL), +(1066, 1125.0, 281.5, 7486000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.40', NULL, 281.5, 74.86, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.40', NULL), +(1067, 1126.0, 282.53, 8491000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.41', NULL, 282.53, 84.91, 'T', 'N2', NULL, NULL, NULL, '13.2.41', NULL), +(1068, 1127.0, 282.53, 8491000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.41', NULL, 282.53, 84.91, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.41', NULL), +(1069, 1128.0, 283.93, 9922000.0, 'T', 'nitrogen', 0.99986, NULL, NULL, '13.2.42', NULL, 283.93, 99.22, 'T', 'N2', NULL, NULL, NULL, '13.2.42', NULL), +(1070, 1129.0, 283.93, 9922000.0, 'T', 'water', 1.4E-4, NULL, NULL, '13.2.42', NULL, 283.93, 99.22, 'T', 'H2O', 1.4E-4, NULL, NULL, '13.2.42', NULL), +(1071, 1130.0, 257.44, 437000.0, 'T', 'nitrogen', 0.99974, NULL, NULL, '13.2.43', NULL, 257.44, 4.37, 'T', 'N2', NULL, NULL, NULL, '13.2.43', NULL), +(1072, 1131.0, 257.44, 437000.0, 'T', 'water', 2.6E-4, NULL, NULL, '13.2.43', NULL, 257.44, 4.37, 'T', 'H2O', 2.6E-4, NULL, NULL, '13.2.43', NULL), +(1073, 1132.0, 265.12, 988000.0, 'T', 'nitrogen', 0.99974, NULL, NULL, '13.2.44', NULL, 265.12, 9.88, 'T', 'N2', NULL, NULL, NULL, '13.2.44', NULL), +(1074, 1133.0, 265.12, 988000.0, 'T', 'water', 2.6E-4, NULL, NULL, '13.2.44', NULL, 265.12, 9.88, 'T', 'H2O', 2.6E-4, NULL, NULL, '13.2.44', NULL), +(1075, 1134.0, 269.29, 1491000.0, 'T', 'nitrogen', 0.99974, NULL, NULL, '13.2.45', NULL, 269.29, 14.91, 'T', 'N2', NULL, NULL, NULL, '13.2.45', NULL), +(1076, 1135.0, 269.29, 1491000.0, 'T', 'water', 2.6E-4, NULL, NULL, '13.2.45', NULL, 269.29, 14.91, 'T', 'H2O', 2.6E-4, NULL, NULL, '13.2.45', NULL), +(1077, 1136.0, 272.39, 1959000.0, 'T', 'nitrogen', 0.99974, NULL, NULL, '13.2.46', NULL, 272.39, 19.59, 'T', 'N2', NULL, NULL, NULL, '13.2.46', NULL), +(1078, 1137.0, 272.39, 1959000.0, 'T', 'water', 2.6E-4, NULL, NULL, '13.2.46', NULL, 272.39, 19.59, 'T', 'H2O', 2.6E-4, NULL, NULL, '13.2.46', NULL), +(1079, 1138.0, 275.07, 2471000.0, 'T', 'nitrogen', 0.99974, NULL, NULL, '13.2.47', NULL, 275.07, 24.71, 'T', 'N2', NULL, NULL, NULL, '13.2.47', NULL), +(1080, 1139.0, 275.07, 2471000.0, 'T', 'water', 2.6E-4, NULL, NULL, '13.2.47', NULL, 275.07, 24.71, 'T', 'H2O', 2.6E-4, NULL, NULL, '13.2.47', NULL), +(1081, 1140.0, 277.4, 2953000.0, 'T', 'nitrogen', 0.99974, NULL, NULL, '13.2.48', NULL, 277.4, 29.53, 'T', 'N2', NULL, NULL, NULL, '13.2.48', NULL), +(1082, 1141.0, 277.4, 2953000.0, 'T', 'water', 2.6E-4, NULL, NULL, '13.2.48', NULL, 277.4, 29.53, 'T', 'H2O', 2.6E-4, NULL, NULL, '13.2.48', NULL), +(1083, 1142.0, 279.27, 3455000.0, 'T', 'nitrogen', 0.99974, NULL, NULL, '13.2.49', NULL, 279.27, 34.55, 'T', 'N2', NULL, NULL, NULL, '13.2.49', NULL), +(1084, 1143.0, 279.27, 3455000.0, 'T', 'water', 2.6E-4, NULL, NULL, '13.2.49', NULL, 279.27, 34.55, 'T', 'H2O', 2.6E-4, NULL, NULL, '13.2.49', NULL), +(1085, 1144.0, 280.92, 3944000.0, 'T', 'nitrogen', 0.99974, NULL, NULL, '13.2.50', NULL, 280.92, 39.44, 'T', 'N2', NULL, NULL, NULL, '13.2.50', NULL), +(1086, 1145.0, 280.92, 3944000.0, 'T', 'water', 2.6E-4, NULL, NULL, '13.2.50', NULL, 280.92, 39.44, 'T', 'H2O', 2.6E-4, NULL, NULL, '13.2.50', NULL), +(1087, 1146.0, 282.34, 4444000.0, 'T', 'nitrogen', 0.99974, NULL, NULL, '13.2.51', NULL, 282.34, 44.44, 'T', 'N2', NULL, NULL, NULL, '13.2.51', NULL), +(1088, 1147.0, 282.34, 4444000.0, 'T', 'water', 2.6E-4, NULL, NULL, '13.2.51', NULL, 282.34, 44.44, 'T', 'H2O', 2.6E-4, NULL, NULL, '13.2.51', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1089, 1148.0, 283.24, 4921000.0, 'T', 'nitrogen', 0.99974, NULL, NULL, '13.2.52', NULL, 283.24, 49.21, 'T', 'N2', NULL, NULL, NULL, '13.2.52', NULL), +(1090, 1149.0, 283.24, 4921000.0, 'T', 'water', 2.6E-4, NULL, NULL, '13.2.52', NULL, 283.24, 49.21, 'T', 'H2O', 2.6E-4, NULL, NULL, '13.2.52', NULL), +(1091, 1150.0, 256.21, 101000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.1', NULL, 256.21, 1.01, 'T', 'C3H8', NULL, NULL, NULL, '13.3.1', NULL), +(1092, 1151.0, 256.21, 101000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.1', NULL, 256.21, 1.01, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.1', NULL), +(1093, 1152.0, 258.05, 121000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.2', NULL, 258.05, 1.21, 'T', 'C3H8', NULL, NULL, NULL, '13.3.2', NULL), +(1094, 1153.0, 258.05, 121000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.2', NULL, 258.05, 1.21, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.2', NULL), +(1095, 1154.0, 259.66, 141000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.3', NULL, 259.66, 1.41, 'T', 'C3H8', NULL, NULL, NULL, '13.3.3', NULL), +(1096, 1155.0, 259.66, 141000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.3', NULL, 259.66, 1.41, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.3', NULL), +(1097, 1156.0, 261.1, 161000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.4', NULL, 261.1, 1.61, 'T', 'C3H8', NULL, NULL, NULL, '13.3.4', NULL), +(1098, 1157.0, 261.1, 161000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.4', NULL, 261.1, 1.61, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.4', NULL), +(1099, 1158.0, 262.4, 181000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.5', NULL, 262.4, 1.81, 'T', 'C3H8', NULL, NULL, NULL, '13.3.5', NULL), +(1100, 1159.0, 262.4, 181000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.5', NULL, 262.4, 1.81, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.5', NULL), +(1101, 1160.0, 263.5, 201000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.6', NULL, 263.5, 2.01, 'T', 'C3H8', NULL, NULL, NULL, '13.3.6', NULL), +(1102, 1161.0, 263.5, 201000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.6', NULL, 263.5, 2.01, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.6', NULL), +(1103, 1162.0, 265.61, 241000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.7', NULL, 265.61, 2.41, 'T', 'C3H8', NULL, NULL, NULL, '13.3.7', NULL), +(1104, 1163.0, 265.61, 241000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.7', NULL, 265.61, 2.41, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.7', NULL), +(1105, 1164.0, 266.52, 261000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.8', NULL, 266.52, 2.61, 'T', 'C3H8', NULL, NULL, NULL, '13.3.8', NULL), +(1106, 1165.0, 266.52, 261000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.8', NULL, 266.52, 2.61, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.8', NULL), +(1107, 1166.0, 267.33, 280000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.9', NULL, 267.33, 2.8, 'T', 'C3H8', NULL, NULL, NULL, '13.3.9', NULL), +(1108, 1167.0, 267.33, 280000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.9', NULL, 267.33, 2.8, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.9', NULL), +(1109, 1168.0, 268.12, 300000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.10', NULL, 268.12, 3.0, 'T', 'C3H8', NULL, NULL, NULL, '13.3.10', NULL), +(1110, 1169.0, 268.12, 300000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.10', NULL, 268.12, 3.0, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.10', NULL), +(1111, 1170.0, 268.89, 321000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.11', NULL, 268.89, 3.21, 'T', 'C3H8', NULL, NULL, NULL, '13.3.11', NULL), +(1112, 1171.0, 268.89, 321000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.11', NULL, 268.89, 3.21, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.11', NULL), +(1113, 1172.0, 269.57, 340000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.12', NULL, 269.57, 3.4, 'T', 'C3H8', NULL, NULL, NULL, '13.3.12', NULL), +(1114, 1173.0, 269.57, 340000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.12', NULL, 269.57, 3.4, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.12', NULL), +(1115, 1174.0, 270.26, 361000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.13', NULL, 270.26, 3.61, 'T', 'C3H8', NULL, NULL, NULL, '13.3.13', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1116, 1175.0, 270.26, 361000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.13', NULL, 270.26, 3.61, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.13', NULL), +(1117, 1176.0, 270.88, 380000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.14', NULL, 270.88, 3.8, 'T', 'C3H8', NULL, NULL, NULL, '13.3.14', NULL), +(1118, 1177.0, 270.88, 380000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.14', NULL, 270.88, 3.8, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.14', NULL), +(1119, 1178.0, 271.31, 400000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.15', NULL, 271.31, 4.0, 'T', 'C3H8', NULL, NULL, NULL, '13.3.15', NULL), +(1120, 1179.0, 271.31, 400000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.15', NULL, 271.31, 4.0, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.15', NULL), +(1121, 1180.0, 272.07, 420000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.16', NULL, 272.07, 4.2, 'T', 'C3H8', NULL, NULL, NULL, '13.3.16', NULL), +(1122, 1181.0, 272.07, 420000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.16', NULL, 272.07, 4.2, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.16', NULL), +(1123, 1182.0, 272.7, 440000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.17', NULL, 272.7, 4.4, 'T', 'C3H8', NULL, NULL, NULL, '13.3.17', NULL), +(1124, 1183.0, 272.7, 440000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.17', NULL, 272.7, 4.4, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.17', NULL), +(1125, 1184.0, 273.33, 460000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.18', NULL, 273.33, 4.6, 'T', 'C3H8', NULL, NULL, NULL, '13.3.18', NULL), +(1126, 1185.0, 273.33, 460000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.18', NULL, 273.33, 4.6, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.18', NULL), +(1127, 1186.0, 273.63, 466000.0, 'T', 'propane', 0.99873, NULL, NULL, '13.3.19', NULL, 273.63, 4.66, 'T', 'C3H8', NULL, NULL, NULL, '13.3.19', NULL), +(1128, 1187.0, 273.63, 466000.0, 'T', 'water', 0.00127, NULL, NULL, '13.3.19', NULL, 273.63, 4.66, 'T', 'H2O', 0.00127, NULL, NULL, '13.3.19', NULL), +(1129, 1188.0, 257.45, 101000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.20', NULL, 257.45, 1.01, 'T', 'C3H8', NULL, NULL, NULL, '13.3.20', NULL), +(1130, 1189.0, 257.45, 101000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.20', NULL, 257.45, 1.01, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.20', NULL), +(1131, 1190.0, 259.22, 119000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.21', NULL, 259.22, 1.19, 'T', 'C3H8', NULL, NULL, NULL, '13.3.21', NULL), +(1132, 1191.0, 259.22, 119000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.21', NULL, 259.22, 1.19, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.21', NULL), +(1133, 1192.0, 260.9, 141000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.22', NULL, 260.9, 1.41, 'T', 'C3H8', NULL, NULL, NULL, '13.3.22', NULL), +(1134, 1193.0, 260.9, 141000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.22', NULL, 260.9, 1.41, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.22', NULL), +(1135, 1194.0, 262.46, 161000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.23', NULL, 262.46, 1.61, 'T', 'C3H8', NULL, NULL, NULL, '13.3.23', NULL), +(1136, 1195.0, 262.46, 161000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.23', NULL, 262.46, 1.61, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.23', NULL), +(1137, 1196.0, 263.78, 180000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.24', NULL, 263.78, 1.8, 'T', 'C3H8', NULL, NULL, NULL, '13.3.24', NULL), +(1138, 1197.0, 263.78, 180000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.24', NULL, 263.78, 1.8, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.24', NULL), +(1139, 1198.0, 264.99, 201000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.25', NULL, 264.99, 2.01, 'T', 'C3H8', NULL, NULL, NULL, '13.3.25', NULL), +(1140, 1199.0, 264.99, 201000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.25', NULL, 264.99, 2.01, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.25', NULL), +(1141, 1200.0, 265.99, 221000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.26', NULL, 265.99, 2.21, 'T', 'C3H8', NULL, NULL, NULL, '13.3.26', NULL), +(1142, 1201.0, 265.99, 221000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.26', NULL, 265.99, 2.21, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.26', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1143, 1202.0, 266.99, 241000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.27', NULL, 266.99, 2.41, 'T', 'C3H8', NULL, NULL, NULL, '13.3.27', NULL), +(1144, 1203.0, 266.99, 241000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.27', NULL, 266.99, 2.41, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.27', NULL), +(1145, 1204.0, 267.95, 260000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.28', NULL, 267.95, 2.6, 'T', 'C3H8', NULL, NULL, NULL, '13.3.28', NULL), +(1146, 1205.0, 267.95, 260000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.28', NULL, 267.95, 2.6, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.28', NULL), +(1147, 1206.0, 268.82, 281000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.29', NULL, 268.82, 2.81, 'T', 'C3H8', NULL, NULL, NULL, '13.3.29', NULL), +(1148, 1207.0, 268.82, 281000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.29', NULL, 268.82, 2.81, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.29', NULL), +(1149, 1208.0, 269.62, 301000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.30', NULL, 269.62, 3.01, 'T', 'C3H8', NULL, NULL, NULL, '13.3.30', NULL), +(1150, 1209.0, 269.62, 301000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.30', NULL, 269.62, 3.01, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.30', NULL), +(1151, 1210.0, 270.53, 321000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.31', NULL, 270.53, 3.21, 'T', 'C3H8', NULL, NULL, NULL, '13.3.31', NULL), +(1152, 1211.0, 270.53, 321000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.31', NULL, 270.53, 3.21, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.31', NULL), +(1153, 1212.0, 271.74, 361000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.32', NULL, 271.74, 3.61, 'T', 'C3H8', NULL, NULL, NULL, '13.3.32', NULL), +(1154, 1213.0, 271.74, 361000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.32', NULL, 271.74, 3.61, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.32', NULL), +(1155, 1214.0, 272.44, 380000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.33', NULL, 272.44, 3.8, 'T', 'C3H8', NULL, NULL, NULL, '13.3.33', NULL), +(1156, 1215.0, 272.44, 380000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.33', NULL, 272.44, 3.8, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.33', NULL), +(1157, 1216.0, 273.22, 401000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.34', NULL, 273.22, 4.01, 'T', 'C3H8', NULL, NULL, NULL, '13.3.34', NULL), +(1158, 1217.0, 273.22, 401000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.34', NULL, 273.22, 4.01, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.34', NULL), +(1159, 1218.0, 273.94, 421000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.35', NULL, 273.94, 4.21, 'T', 'C3H8', NULL, NULL, NULL, '13.3.35', NULL), +(1160, 1219.0, 273.94, 421000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.35', NULL, 273.94, 4.21, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.35', NULL), +(1161, 1220.0, 274.61, 441000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.36', NULL, 274.61, 4.41, 'T', 'C3H8', NULL, NULL, NULL, '13.3.36', NULL), +(1162, 1221.0, 274.61, 441000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.36', NULL, 274.61, 4.41, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.36', NULL), +(1163, 1222.0, 275.22, 460000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.37', NULL, 275.22, 4.6, 'T', 'C3H8', NULL, NULL, NULL, '13.3.37', NULL), +(1164, 1223.0, 275.22, 460000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.37', NULL, 275.22, 4.6, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.37', NULL), +(1165, 1224.0, 275.45, 468000.0, 'T', 'propane', 0.99853, NULL, NULL, '13.3.38', NULL, 275.45, 4.68, 'T', 'C3H8', NULL, NULL, NULL, '13.3.38', NULL), +(1166, 1225.0, 275.45, 468000.0, 'T', 'water', 0.00147, NULL, NULL, '13.3.38', NULL, 275.45, 4.68, 'T', 'H2O', 0.00147, NULL, NULL, '13.3.38', NULL), +(1167, 1226.0, 257.54, 104000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.39', NULL, 257.54, 1.04, 'T', 'C3H8', NULL, NULL, NULL, '13.3.39', NULL), +(1168, 1227.0, 257.54, 104000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.39', NULL, 257.54, 1.04, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.39', NULL), +(1169, 1228.0, 258.63, 115000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.40', NULL, 258.63, 1.15, 'T', 'C3H8', NULL, NULL, NULL, '13.3.40', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1170, 1229.0, 258.63, 115000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.40', NULL, 258.63, 1.15, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.40', NULL), +(1171, 1230.0, 260.71, 136000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.41', NULL, 260.71, 1.36, 'T', 'C3H8', NULL, NULL, NULL, '13.3.41', NULL), +(1172, 1231.0, 260.71, 136000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.41', NULL, 260.71, 1.36, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.41', NULL), +(1173, 1232.0, 262.43, 157000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.42', NULL, 262.43, 1.57, 'T', 'C3H8', NULL, NULL, NULL, '13.3.42', NULL), +(1174, 1233.0, 262.43, 157000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.42', NULL, 262.43, 1.57, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.42', NULL), +(1175, 1234.0, 263.96, 178000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.43', NULL, 263.96, 1.78, 'T', 'C3H8', NULL, NULL, NULL, '13.3.43', NULL), +(1176, 1235.0, 263.96, 178000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.43', NULL, 263.96, 1.78, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.43', NULL), +(1177, 1236.0, 265.43, 201000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.44', NULL, 265.43, 2.01, 'T', 'C3H8', NULL, NULL, NULL, '13.3.44', NULL), +(1178, 1237.0, 265.43, 201000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.44', NULL, 265.43, 2.01, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.44', NULL), +(1179, 1238.0, 266.45, 216000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.45', NULL, 266.45, 2.16, 'T', 'C3H8', NULL, NULL, NULL, '13.3.45', NULL), +(1180, 1239.0, 266.45, 216000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.45', NULL, 266.45, 2.16, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.45', NULL), +(1181, 1240.0, 268.65, 256000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.46', NULL, 268.65, 2.56, 'T', 'C3H8', NULL, NULL, NULL, '13.3.46', NULL), +(1182, 1241.0, 268.65, 256000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.46', NULL, 268.65, 2.56, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.46', NULL), +(1183, 1242.0, 269.62, 277000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.47', NULL, 269.62, 2.77, 'T', 'C3H8', NULL, NULL, NULL, '13.3.47', NULL), +(1184, 1243.0, 269.62, 277000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.47', NULL, 269.62, 2.77, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.47', NULL), +(1185, 1244.0, 270.57, 296000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.48', NULL, 270.57, 2.96, 'T', 'C3H8', NULL, NULL, NULL, '13.3.48', NULL), +(1186, 1245.0, 270.57, 296000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.48', NULL, 270.57, 2.96, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.48', NULL), +(1187, 1246.0, 271.49, 316000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.49', NULL, 271.49, 3.16, 'T', 'C3H8', NULL, NULL, NULL, '13.3.49', NULL), +(1188, 1247.0, 271.49, 316000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.49', NULL, 271.49, 3.16, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.49', NULL), +(1189, 1248.0, 272.43, 339000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.50', NULL, 272.43, 3.39, 'T', 'C3H8', NULL, NULL, NULL, '13.3.50', NULL), +(1190, 1249.0, 272.43, 339000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.50', NULL, 272.43, 3.39, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.50', NULL), +(1191, 1250.0, 273.35, 358000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.51', NULL, 273.35, 3.58, 'T', 'C3H8', NULL, NULL, NULL, '13.3.51', NULL), +(1192, 1251.0, 273.35, 358000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.51', NULL, 273.35, 3.58, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.51', NULL), +(1193, 1252.0, 274.14, 380000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.52', NULL, 274.14, 3.8, 'T', 'C3H8', NULL, NULL, NULL, '13.3.52', NULL), +(1194, 1253.0, 274.14, 380000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.52', NULL, 274.14, 3.8, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.52', NULL), +(1195, 1254.0, 274.91, 400000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.53', NULL, 274.91, 4.0, 'T', 'C3H8', NULL, NULL, NULL, '13.3.53', NULL), +(1196, 1255.0, 274.91, 400000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.53', NULL, 274.91, 4.0, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.53', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1197, 1256.0, 275.52, 420000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.54', NULL, 275.52, 4.2, 'T', 'C3H8', NULL, NULL, NULL, '13.3.54', NULL), +(1198, 1257.0, 275.52, 420000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.54', NULL, 275.52, 4.2, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.54', NULL), +(1199, 1258.0, 276.26, 440000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.55', NULL, 276.26, 4.4, 'T', 'C3H8', NULL, NULL, NULL, '13.3.55', NULL), +(1200, 1259.0, 276.26, 440000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.55', NULL, 276.26, 4.4, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.55', NULL), +(1201, 1260.0, 276.9, 460000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.56', NULL, 276.9, 4.6, 'T', 'C3H8', NULL, NULL, NULL, '13.3.56', NULL), +(1202, 1261.0, 276.9, 460000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.56', NULL, 276.9, 4.6, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.56', NULL), +(1203, 1262.0, 277.53, 480000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.57', NULL, 277.53, 4.8, 'T', 'C3H8', NULL, NULL, NULL, '13.3.57', NULL), +(1204, 1263.0, 277.53, 480000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.57', NULL, 277.53, 4.8, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.57', NULL), +(1205, 1264.0, 278.12, 499000.0, 'T', 'propane', 0.99822, NULL, NULL, '13.3.58', NULL, 278.12, 4.99, 'T', 'C3H8', NULL, NULL, NULL, '13.3.58', NULL), +(1206, 1265.0, 278.12, 499000.0, 'T', 'water', 0.00178, NULL, NULL, '13.3.58', NULL, 278.12, 4.99, 'T', 'H2O', 0.00178, NULL, NULL, '13.3.58', NULL), +(1207, 1266.0, 259.91, 102000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.59', NULL, 259.91, 1.02, 'T', 'C3H8', NULL, NULL, NULL, '13.3.59', NULL), +(1208, 1267.0, 259.91, 102000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.59', NULL, 259.91, 1.02, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.59', NULL), +(1209, 1268.0, 261.91, 121000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.60', NULL, 261.91, 1.21, 'T', 'C3H8', NULL, NULL, NULL, '13.3.60', NULL), +(1210, 1269.0, 261.91, 121000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.60', NULL, 261.91, 1.21, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.60', NULL), +(1211, 1270.0, 263.72, 140000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.61', NULL, 263.72, 1.4, 'T', 'C3H8', NULL, NULL, NULL, '13.3.61', NULL), +(1212, 1271.0, 263.72, 140000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.61', NULL, 263.72, 1.4, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.61', NULL), +(1213, 1272.0, 265.34, 160000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.62', NULL, 265.34, 1.6, 'T', 'C3H8', NULL, NULL, NULL, '13.3.62', NULL), +(1214, 1273.0, 265.34, 160000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.62', NULL, 265.34, 1.6, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.62', NULL), +(1215, 1274.0, 266.82, 180000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.63', NULL, 266.82, 1.8, 'T', 'C3H8', NULL, NULL, NULL, '13.3.63', NULL), +(1216, 1275.0, 266.82, 180000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.63', NULL, 266.82, 1.8, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.63', NULL), +(1217, 1276.0, 268.16, 200000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.64', NULL, 268.16, 2.0, 'T', 'C3H8', NULL, NULL, NULL, '13.3.64', NULL), +(1218, 1277.0, 268.16, 200000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.64', NULL, 268.16, 2.0, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.64', NULL), +(1219, 1278.0, 269.44, 220000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.65', NULL, 269.44, 2.2, 'T', 'C3H8', NULL, NULL, NULL, '13.3.65', NULL), +(1220, 1279.0, 269.44, 220000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.65', NULL, 269.44, 2.2, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.65', NULL), +(1221, 1280.0, 270.6, 240000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.66', NULL, 270.6, 2.4, 'T', 'C3H8', NULL, NULL, NULL, '13.3.66', NULL), +(1222, 1281.0, 270.6, 240000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.66', NULL, 270.6, 2.4, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.66', NULL), +(1223, 1282.0, 271.72, 260000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.67', NULL, 271.72, 2.6, 'T', 'C3H8', NULL, NULL, NULL, '13.3.67', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1224, 1283.0, 271.72, 260000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.67', NULL, 271.72, 2.6, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.67', NULL), +(1225, 1284.0, 272.72, 280000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.68', NULL, 272.72, 2.8, 'T', 'C3H8', NULL, NULL, NULL, '13.3.68', NULL), +(1226, 1285.0, 272.72, 280000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.68', NULL, 272.72, 2.8, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.68', NULL), +(1227, 1286.0, 273.67, 300000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.69', NULL, 273.67, 3.0, 'T', 'C3H8', NULL, NULL, NULL, '13.3.69', NULL), +(1228, 1287.0, 273.67, 300000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.69', NULL, 273.67, 3.0, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.69', NULL), +(1229, 1288.0, 274.59, 320000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.70', NULL, 274.59, 3.2, 'T', 'C3H8', NULL, NULL, NULL, '13.3.70', NULL), +(1230, 1289.0, 274.59, 320000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.70', NULL, 274.59, 3.2, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.70', NULL), +(1231, 1290.0, 275.38, 340000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.71', NULL, 275.38, 3.4, 'T', 'C3H8', NULL, NULL, NULL, '13.3.71', NULL), +(1232, 1291.0, 275.38, 340000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.71', NULL, 275.38, 3.4, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.71', NULL), +(1233, 1292.0, 276.23, 360000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.72', NULL, 276.23, 3.6, 'T', 'C3H8', NULL, NULL, NULL, '13.3.72', NULL), +(1234, 1293.0, 276.23, 360000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.72', NULL, 276.23, 3.6, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.72', NULL), +(1235, 1294.0, 277.02, 381000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.73', NULL, 277.02, 3.81, 'T', 'C3H8', NULL, NULL, NULL, '13.3.73', NULL), +(1236, 1295.0, 277.02, 381000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.73', NULL, 277.02, 3.81, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.73', NULL), +(1237, 1296.0, 277.69, 400000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.74', NULL, 277.69, 4.0, 'T', 'C3H8', NULL, NULL, NULL, '13.3.74', NULL), +(1238, 1297.0, 277.69, 400000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.74', NULL, 277.69, 4.0, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.74', NULL), +(1239, 1298.0, 278.49, 421000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.75', NULL, 278.49, 4.21, 'T', 'C3H8', NULL, NULL, NULL, '13.3.75', NULL), +(1240, 1299.0, 278.49, 421000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.75', NULL, 278.49, 4.21, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.75', NULL), +(1241, 1300.0, 279.06, 440000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.76', NULL, 279.06, 4.4, 'T', 'C3H8', NULL, NULL, NULL, '13.3.76', NULL), +(1242, 1301.0, 279.06, 440000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.76', NULL, 279.06, 4.4, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.76', NULL), +(1243, 1302.0, 279.71, 460000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.77', NULL, 279.71, 4.6, 'T', 'C3H8', NULL, NULL, NULL, '13.3.77', NULL), +(1244, 1303.0, 279.71, 460000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.77', NULL, 279.71, 4.6, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.77', NULL), +(1245, 1304.0, 280.46, 480000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.78', NULL, 280.46, 4.8, 'T', 'C3H8', NULL, NULL, NULL, '13.3.78', NULL), +(1246, 1305.0, 280.46, 480000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.78', NULL, 280.46, 4.8, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.78', NULL), +(1247, 1306.0, 280.87, 499000.0, 'T', 'propane', 0.99785, NULL, NULL, '13.3.79', NULL, 280.87, 4.99, 'T', 'C3H8', NULL, NULL, NULL, '13.3.79', NULL), +(1248, 1307.0, 280.87, 499000.0, 'T', 'water', 0.00215, NULL, NULL, '13.3.79', NULL, 280.87, 4.99, 'T', 'H2O', 0.00215, NULL, NULL, '13.3.79', NULL), +(1249, 1308.0, 262.29, 101000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.80', NULL, 262.29, 1.01, 'T', 'C3H8', NULL, NULL, NULL, '13.3.80', NULL), +(1250, 1309.0, 262.29, 101000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.80', NULL, 262.29, 1.01, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.80', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1251, 1310.0, 264.44, 121000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.81', NULL, 264.44, 1.21, 'T', 'C3H8', NULL, NULL, NULL, '13.3.81', NULL), +(1252, 1311.0, 264.44, 121000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.81', NULL, 264.44, 1.21, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.81', NULL), +(1253, 1312.0, 266.3, 140000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.82', NULL, 266.3, 1.4, 'T', 'C3H8', NULL, NULL, NULL, '13.3.82', NULL), +(1254, 1313.0, 266.3, 140000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.82', NULL, 266.3, 1.4, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.82', NULL), +(1255, 1314.0, 268.07, 160000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.83', NULL, 268.07, 1.6, 'T', 'C3H8', NULL, NULL, NULL, '13.3.83', NULL), +(1256, 1315.0, 268.07, 160000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.83', NULL, 268.07, 1.6, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.83', NULL), +(1257, 1316.0, 269.61, 181000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.84', NULL, 269.61, 1.81, 'T', 'C3H8', NULL, NULL, NULL, '13.3.84', NULL), +(1258, 1317.0, 269.61, 181000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.84', NULL, 269.61, 1.81, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.84', NULL), +(1259, 1318.0, 271.05, 200000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.85', NULL, 271.05, 2.0, 'T', 'C3H8', NULL, NULL, NULL, '13.3.85', NULL), +(1260, 1319.0, 271.05, 200000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.85', NULL, 271.05, 2.0, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.85', NULL), +(1261, 1320.0, 272.29, 221000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.86', NULL, 272.29, 2.21, 'T', 'C3H8', NULL, NULL, NULL, '13.3.86', NULL), +(1262, 1321.0, 272.29, 221000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.86', NULL, 272.29, 2.21, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.86', NULL), +(1263, 1322.0, 273.4, 240000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.87', NULL, 273.4, 2.4, 'T', 'C3H8', NULL, NULL, NULL, '13.3.87', NULL), +(1264, 1323.0, 273.4, 240000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.87', NULL, 273.4, 2.4, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.87', NULL), +(1265, 1324.0, 274.68, 261000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.88', NULL, 274.68, 2.61, 'T', 'C3H8', NULL, NULL, NULL, '13.3.88', NULL), +(1266, 1325.0, 274.68, 261000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.88', NULL, 274.68, 2.61, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.88', NULL), +(1267, 1326.0, 275.65, 280000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.89', NULL, 275.65, 2.8, 'T', 'C3H8', NULL, NULL, NULL, '13.3.89', NULL), +(1268, 1327.0, 275.65, 280000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.89', NULL, 275.65, 2.8, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.89', NULL), +(1269, 1328.0, 276.65, 300000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.90', NULL, 276.65, 3.0, 'T', 'C3H8', NULL, NULL, NULL, '13.3.90', NULL), +(1270, 1329.0, 276.65, 300000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.90', NULL, 276.65, 3.0, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.90', NULL), +(1271, 1330.0, 277.48, 320000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.91', NULL, 277.48, 3.2, 'T', 'C3H8', NULL, NULL, NULL, '13.3.91', NULL), +(1272, 1331.0, 277.48, 320000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.91', NULL, 277.48, 3.2, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.91', NULL), +(1273, 1332.0, 278.43, 340000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.92', NULL, 278.43, 3.4, 'T', 'C3H8', NULL, NULL, NULL, '13.3.92', NULL), +(1274, 1333.0, 278.43, 340000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.92', NULL, 278.43, 3.4, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.92', NULL), +(1275, 1334.0, 279.19, 361000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.93', NULL, 279.19, 3.61, 'T', 'C3H8', NULL, NULL, NULL, '13.3.93', NULL), +(1276, 1335.0, 279.19, 361000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.93', NULL, 279.19, 3.61, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.93', NULL), +(1277, 1336.0, 280.06, 381000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.94', NULL, 280.06, 3.81, 'T', 'C3H8', NULL, NULL, NULL, '13.3.94', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1278, 1337.0, 280.06, 381000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.94', NULL, 280.06, 3.81, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.94', NULL), +(1279, 1338.0, 280.84, 401000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.95', NULL, 280.84, 4.01, 'T', 'C3H8', NULL, NULL, NULL, '13.3.95', NULL), +(1280, 1339.0, 280.84, 401000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.95', NULL, 280.84, 4.01, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.95', NULL), +(1281, 1340.0, 281.47, 420000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.96', NULL, 281.47, 4.2, 'T', 'C3H8', NULL, NULL, NULL, '13.3.96', NULL), +(1282, 1341.0, 281.47, 420000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.96', NULL, 281.47, 4.2, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.96', NULL), +(1283, 1342.0, 282.16, 441000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.97', NULL, 282.16, 4.41, 'T', 'C3H8', NULL, NULL, NULL, '13.3.97', NULL), +(1284, 1343.0, 282.16, 441000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.97', NULL, 282.16, 4.41, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.97', NULL), +(1285, 1344.0, 282.83, 461000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.98', NULL, 282.83, 4.61, 'T', 'C3H8', NULL, NULL, NULL, '13.3.98', NULL), +(1286, 1345.0, 282.83, 461000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.98', NULL, 282.83, 4.61, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.98', NULL), +(1287, 1346.0, 283.55, 481000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.99', NULL, 283.55, 4.81, 'T', 'C3H8', NULL, NULL, NULL, '13.3.99', NULL), +(1288, 1347.0, 283.55, 481000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.99', NULL, 283.55, 4.81, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.99', NULL), +(1289, 1348.0, 283.84, 493000.0, 'T', 'propane', 0.99722, NULL, NULL, '13.3.100', NULL, 283.84, 4.93, 'T', 'C3H8', NULL, NULL, NULL, '13.3.100', NULL), +(1290, 1349.0, 283.84, 493000.0, 'T', 'water', 0.00278, NULL, NULL, '13.3.100', NULL, 283.84, 4.93, 'T', 'H2O', 0.00278, NULL, NULL, '13.3.100', NULL), +(1291, 1350.0, 310.958, 351632.607, 'T', 'methane', NULL, NULL, 6.4E-5, '14.1.1', NULL, 100.0, 51.0, 'T', 'CH4', NULL, NULL, 0.64, '14.1.1', 'Reference 14: temp in F, pressure in psia and mole frac. Methane x10^4'), +(1292, 1351.0, 310.958, 351632.607, 'T', 'water', NULL, NULL, 0.999936, '14.1.1', NULL, 100.0, 51.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.1', NULL), +(1293, 1352.0, 310.958, 675686.186, 'T', 'methane', NULL, NULL, 1.48E-4, '14.1.2', NULL, 100.0, 98.0, 'T', 'CH4', NULL, NULL, 1.48, '14.1.2', NULL), +(1294, 1353.0, 310.958, 675686.186, 'T', 'water', NULL, NULL, 0.999852, '14.1.2', NULL, 100.0, 98.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.2', NULL), +(1295, 1354.0, 310.958, 999739.765, 'T', 'methane', NULL, NULL, 2.26E-4, '14.1.3', NULL, 100.0, 145.0, 'T', 'CH4', NULL, NULL, 2.26, '14.1.3', NULL), +(1296, 1355.0, 310.958, 999739.765, 'T', 'water', NULL, NULL, 0.999774, '14.1.3', NULL, 100.0, 145.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.3', NULL), +(1297, 1356.0, 310.958, 1296214.316, 'T', 'methane', NULL, NULL, 2.78E-4, '14.1.4', NULL, 100.0, 188.0, 'T', 'CH4', NULL, NULL, 2.78, '14.1.4', NULL), +(1298, 1357.0, 310.958, 1296214.316, 'T', 'water', NULL, NULL, 0.999722, '14.1.4', NULL, 100.0, 188.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.4', NULL), +(1299, 1358.0, 310.958, 1716794.493, 'T', 'methane', NULL, NULL, 3.44E-4, '14.1.5', NULL, 100.0, 249.0, 'T', 'CH4', NULL, NULL, 3.44, '14.1.5', NULL), +(1300, 1359.0, 310.958, 1716794.493, 'T', 'water', NULL, NULL, 0.999656, '14.1.5', NULL, 100.0, 249.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.5', NULL), +(1301, 1360.0, 310.958, 1854689.633, 'T', 'methane', NULL, NULL, 3.68E-4, '14.1.6', NULL, 100.0, 269.0, 'T', 'CH4', NULL, NULL, 3.68, '14.1.6', NULL), +(1302, 1361.0, 310.958, 1854689.633, 'T', 'water', NULL, NULL, 0.999632, '14.1.6', NULL, 100.0, 269.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.6', NULL), +(1303, 1362.0, 310.958, 2454533.492, 'T', 'methane', NULL, NULL, 5.09E-4, '14.1.7', NULL, 100.0, 356.0, 'T', 'CH4', NULL, NULL, 5.09, '14.1.7', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1304, 1363.0, 310.958, 2454533.492, 'T', 'water', NULL, NULL, 0.999491, '14.1.7', NULL, 100.0, 356.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.7', NULL), +(1305, 1364.0, 310.958, 2861324.155, 'T', 'methane', NULL, NULL, 5.66E-4, '14.1.8', NULL, 100.0, 415.0, 'T', 'CH4', NULL, NULL, 5.66, '14.1.8', NULL), +(1306, 1365.0, 310.958, 2861324.155, 'T', 'water', NULL, NULL, 0.999434, '14.1.8', NULL, 100.0, 415.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.8', NULL), +(1307, 1366.0, 310.958, 2964745.51, 'T', 'methane', NULL, NULL, 5.88E-4, '14.1.9', NULL, 100.0, 430.0, 'T', 'CH4', NULL, NULL, 5.88, '14.1.9', NULL), +(1308, 1367.0, 310.958, 2964745.51, 'T', 'water', NULL, NULL, 0.999412, '14.1.9', NULL, 100.0, 430.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.9', NULL), +(1309, 1368.0, 327.638, 779107.541, 'T', 'methane', NULL, NULL, 1.28E-4, '14.1.10', NULL, 130.0, 113.0, 'T', 'CH4', NULL, NULL, 1.28, '14.1.10', NULL), +(1310, 1369.0, 327.638, 779107.541, 'T', 'water', NULL, NULL, 0.999872, '14.1.10', NULL, 130.0, 113.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.10', NULL), +(1311, 1370.0, 327.638, 854949.868, 'T', 'methane', NULL, NULL, 1.28E-4, '14.1.11', NULL, 130.0, 124.0, 'T', 'CH4', NULL, NULL, 1.28, '14.1.11', NULL), +(1312, 1371.0, 327.638, 854949.868, 'T', 'water', NULL, NULL, 0.999872, '14.1.11', NULL, 130.0, 124.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.11', NULL), +(1313, 1372.0, 327.638, 1572004.596, 'T', 'methane', NULL, NULL, 2.46E-4, '14.1.12', NULL, 130.0, 228.0, 'T', 'CH4', NULL, NULL, 2.46, '14.1.12', NULL), +(1314, 1373.0, 327.638, 1572004.596, 'T', 'water', NULL, NULL, 0.999754, '14.1.12', NULL, 130.0, 228.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.12', NULL), +(1315, 1374.0, 327.638, 2247690.782, 'T', 'methane', NULL, NULL, 3.59E-4, '14.1.13', NULL, 130.0, 326.0, 'T', 'CH4', NULL, NULL, 3.59, '14.1.13', NULL), +(1316, 1375.0, 327.638, 2247690.782, 'T', 'water', NULL, NULL, 0.999641, '14.1.13', NULL, 130.0, 326.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.13', NULL), +(1317, 1376.0, 327.638, 2682060.473, 'T', 'methane', NULL, NULL, 4.22E-4, '14.1.14', NULL, 130.0, 389.0, 'T', 'CH4', NULL, NULL, 4.22, '14.1.14', NULL), +(1318, 1377.0, 327.638, 2682060.473, 'T', 'water', NULL, NULL, 0.999578, '14.1.14', NULL, 130.0, 389.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.14', NULL), +(1319, 1378.0, 327.638, 2902692.697, 'T', 'methane', NULL, NULL, 4.63E-4, '14.1.15', NULL, 130.0, 421.0, 'T', 'CH4', NULL, NULL, 4.63, '14.1.15', NULL), +(1320, 1379.0, 327.638, 2902692.697, 'T', 'water', NULL, NULL, 0.999537, '14.1.15', NULL, 130.0, 421.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.15', NULL), +(1321, 1380.0, 327.638, 3178482.977, 'T', 'methane', NULL, NULL, 5.14E-4, '14.1.16', NULL, 130.0, 461.0, 'T', 'CH4', NULL, NULL, 5.14, '14.1.16', NULL), +(1322, 1381.0, 327.638, 3178482.977, 'T', 'water', NULL, NULL, 0.999486, '14.1.16', NULL, 130.0, 461.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.16', NULL), +(1323, 1382.0, 327.638, 3592168.397, 'T', 'methane', NULL, NULL, 5.64E-4, '14.1.17', NULL, 130.0, 521.0, 'T', 'CH4', NULL, NULL, 5.64, '14.1.17', NULL), +(1324, 1383.0, 327.638, 3592168.397, 'T', 'water', NULL, NULL, 0.999436, '14.1.17', NULL, 130.0, 521.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.17', NULL), +(1325, 1384.0, 344.318, 772212.784, 'T', 'methane', NULL, NULL, 1.05E-4, '14.1.18', NULL, 160.0, 112.0, 'T', 'CH4', NULL, NULL, 1.05, '14.1.18', NULL), +(1326, 1385.0, 344.318, 772212.784, 'T', 'water', NULL, NULL, 0.999895, '14.1.18', NULL, 160.0, 112.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.18', NULL), +(1327, 1386.0, 344.318, 1172108.69, 'T', 'methane', NULL, NULL, 1.76E-4, '14.1.19', NULL, 160.0, 170.0, 'T', 'CH4', NULL, NULL, 1.76, '14.1.19', NULL), +(1328, 1387.0, 344.318, 1172108.69, 'T', 'water', NULL, NULL, 0.999824, '14.1.19', NULL, 160.0, 170.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.19', NULL), +(1329, 1388.0, 344.318, 1310003.83, 'T', 'methane', NULL, NULL, 1.88E-4, '14.1.20', NULL, 160.0, 190.0, 'T', 'CH4', NULL, NULL, 1.88, '14.1.20', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1330, 1389.0, 344.318, 1310003.83, 'T', 'water', NULL, NULL, 0.999812, '14.1.20', NULL, 160.0, 190.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.20', NULL), +(1331, 1390.0, 344.318, 1716794.493, 'T', 'methane', NULL, NULL, 2.65E-4, '14.1.21', NULL, 160.0, 249.0, 'T', 'CH4', NULL, NULL, 2.65, '14.1.21', NULL), +(1332, 1391.0, 344.318, 1716794.493, 'T', 'water', NULL, NULL, 0.999735, '14.1.21', NULL, 160.0, 249.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.21', NULL), +(1333, 1392.0, 344.318, 2364901.651, 'T', 'methane', NULL, NULL, 3.5E-4, '14.1.22', NULL, 160.0, 343.0, 'T', 'CH4', NULL, NULL, 3.5, '14.1.22', NULL), +(1334, 1393.0, 344.318, 2364901.651, 'T', 'water', NULL, NULL, 0.99965, '14.1.22', NULL, 160.0, 343.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.22', NULL), +(1335, 1394.0, 344.318, 3137114.435, 'T', 'methane', NULL, NULL, 4.59E-4, '14.1.23', NULL, 160.0, 455.0, 'T', 'CH4', NULL, NULL, 4.59, '14.1.23', NULL), +(1336, 1395.0, 344.318, 3137114.435, 'T', 'water', NULL, NULL, 0.999541, '14.1.23', NULL, 160.0, 455.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.23', NULL), +(1337, 1396.0, 344.318, 3268114.818, 'T', 'methane', NULL, NULL, 4.77E-4, '14.1.24', NULL, 160.0, 474.0, 'T', 'CH4', NULL, NULL, 4.77, '14.1.24', NULL), +(1338, 1397.0, 344.318, 3268114.818, 'T', 'water', NULL, NULL, 0.999523, '14.1.24', NULL, 160.0, 474.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.24', NULL), +(1339, 1398.0, 360.998, 786002.298, 'T', 'methane', NULL, NULL, 1.26E-4, '14.1.25', NULL, 190.0, 114.0, 'T', 'CH4', NULL, NULL, 1.26, '14.1.25', NULL), +(1340, 1399.0, 360.998, 786002.298, 'T', 'water', NULL, NULL, 0.999874, '14.1.25', NULL, 190.0, 114.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.25', NULL), +(1341, 1400.0, 360.998, 937686.952, 'T', 'methane', NULL, NULL, 1.46E-4, '14.1.26', NULL, 190.0, 136.0, 'T', 'CH4', NULL, NULL, 1.46, '14.1.26', NULL), +(1342, 1401.0, 360.998, 937686.952, 'T', 'water', NULL, NULL, 0.999854, '14.1.26', NULL, 190.0, 136.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.26', NULL), +(1343, 1402.0, 360.998, 1158319.176, 'T', 'methane', NULL, NULL, 1.73E-4, '14.1.27', NULL, 190.0, 168.0, 'T', 'CH4', NULL, NULL, 1.73, '14.1.27', NULL), +(1344, 1403.0, 360.998, 1158319.176, 'T', 'water', NULL, NULL, 0.999827, '14.1.27', NULL, 190.0, 168.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.27', NULL), +(1345, 1404.0, 360.998, 1378951.4, 'T', 'methane', NULL, NULL, 2.13E-4, '14.1.28', NULL, 190.0, 200.0, 'T', 'CH4', NULL, NULL, 2.13, '14.1.28', NULL), +(1346, 1405.0, 360.998, 1378951.4, 'T', 'water', NULL, NULL, 0.999787, '14.1.28', NULL, 190.0, 200.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.28', NULL), +(1347, 1406.0, 360.998, 1509951.783, 'T', 'methane', NULL, NULL, 2.31E-4, '14.1.29', NULL, 190.0, 219.0, 'T', 'CH4', NULL, NULL, 2.31, '14.1.29', NULL), +(1348, 1407.0, 360.998, 1509951.783, 'T', 'water', NULL, NULL, 0.999769, '14.1.29', NULL, 190.0, 219.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.29', NULL), +(1349, 1408.0, 360.998, 1792636.82, 'T', 'methane', NULL, NULL, 2.89E-4, '14.1.30', NULL, 190.0, 260.0, 'T', 'CH4', NULL, NULL, 2.89, '14.1.30', NULL), +(1350, 1409.0, 360.998, 1792636.82, 'T', 'water', NULL, NULL, 0.999711, '14.1.30', NULL, 190.0, 260.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.30', NULL), +(1351, 1410.0, 360.998, 2158058.941, 'T', 'methane', NULL, NULL, 3.31E-4, '14.1.31', NULL, 190.0, 313.0, 'T', 'CH4', NULL, NULL, 3.31, '14.1.31', NULL), +(1352, 1411.0, 360.998, 2158058.941, 'T', 'water', NULL, NULL, 0.999669, '14.1.31', NULL, 190.0, 313.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.31', NULL), +(1353, 1412.0, 360.998, 2640691.931, 'T', 'methane', NULL, NULL, 3.97E-4, '14.1.32', NULL, 190.0, 383.0, 'T', 'CH4', NULL, NULL, 3.97, '14.1.32', NULL), +(1354, 1413.0, 360.998, 2640691.931, 'T', 'water', NULL, NULL, 0.999603, '14.1.32', NULL, 190.0, 383.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.32', NULL), +(1355, 1414.0, 360.998, 3702484.509, 'T', 'methane', NULL, NULL, 5.7E-4, '14.1.33', NULL, 190.0, 537.0, 'T', 'CH4', NULL, NULL, 5.7, '14.1.33', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1356, 1415.0, 360.998, 3702484.509, 'T', 'water', NULL, NULL, 0.99943, '14.1.33', NULL, 190.0, 537.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.33', NULL), +(1357, 1416.0, 377.678, 517106.775, 'T', 'methane', NULL, NULL, 6.4E-5, '14.1.34', NULL, 220.0, 75.0, 'T', 'CH4', NULL, NULL, 0.64, '14.1.34', NULL), +(1358, 1417.0, 377.678, 517106.775, 'T', 'water', NULL, NULL, 0.999936, '14.1.34', NULL, 220.0, 75.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.34', NULL), +(1359, 1418.0, 377.678, 820476.083, 'T', 'methane', NULL, NULL, 1.18E-4, '14.1.35', NULL, 220.0, 119.0, 'T', 'CH4', NULL, NULL, 1.18, '14.1.35', NULL), +(1360, 1419.0, 377.678, 820476.083, 'T', 'water', NULL, NULL, 0.999882, '14.1.35', NULL, 220.0, 119.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.35', NULL), +(1361, 1420.0, 377.678, 1489267.512, 'T', 'methane', NULL, NULL, 2.26E-4, '14.1.36', NULL, 220.0, 216.0, 'T', 'CH4', NULL, NULL, 2.26, '14.1.36', NULL), +(1362, 1421.0, 377.678, 1489267.512, 'T', 'water', NULL, NULL, 0.999774, '14.1.36', NULL, 220.0, 216.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.36', NULL), +(1363, 1422.0, 377.678, 1909847.689, 'T', 'methane', NULL, NULL, 3.0E-4, '14.1.37', NULL, 220.0, 277.0, 'T', 'CH4', NULL, NULL, 3.0, '14.1.37', NULL), +(1364, 1423.0, 377.678, 1909847.689, 'T', 'water', NULL, NULL, 0.9997, '14.1.37', NULL, 220.0, 277.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.37', NULL), +(1365, 1424.0, 377.678, 2551060.09, 'T', 'methane', NULL, NULL, 4.21E-4, '14.1.38', NULL, 220.0, 370.0, 'T', 'CH4', NULL, NULL, 4.21, '14.1.38', NULL), +(1366, 1425.0, 377.678, 2551060.09, 'T', 'water', NULL, NULL, 0.999579, '14.1.38', NULL, 220.0, 370.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.38', NULL), +(1367, 1426.0, 377.678, 2861324.155, 'T', 'methane', NULL, NULL, 4.71E-4, '14.1.39', NULL, 220.0, 415.0, 'T', 'CH4', NULL, NULL, 4.71, '14.1.39', NULL), +(1368, 1427.0, 377.678, 2861324.155, 'T', 'water', NULL, NULL, 0.999529, '14.1.39', NULL, 220.0, 415.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.39', NULL), +(1369, 1428.0, 377.678, 3268114.818, 'T', 'methane', NULL, NULL, 5.3E-4, '14.1.40', NULL, 220.0, 474.0, 'T', 'CH4', NULL, NULL, 5.3, '14.1.40', NULL), +(1370, 1429.0, 377.678, 3268114.818, 'T', 'water', NULL, NULL, 0.99947, '14.1.40', NULL, 220.0, 474.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.40', NULL), +(1371, 1430.0, 394.358, 696370.457, 'T', 'methane', NULL, NULL, 9.6E-5, '14.1.41', NULL, 250.0, 101.0, 'T', 'CH4', NULL, NULL, 0.96, '14.1.41', NULL), +(1372, 1431.0, 394.358, 696370.457, 'T', 'water', NULL, NULL, 0.999904, '14.1.41', NULL, 250.0, 101.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.41', NULL), +(1373, 1432.0, 394.358, 1461688.484, 'T', 'methane', NULL, NULL, 2.26E-4, '14.1.42', NULL, 250.0, 212.0, 'T', 'CH4', NULL, NULL, 2.26, '14.1.42', NULL), +(1374, 1433.0, 394.358, 1461688.484, 'T', 'water', NULL, NULL, 0.999774, '14.1.42', NULL, 250.0, 212.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.42', NULL), +(1375, 1434.0, 394.358, 2295954.081, 'T', 'methane', NULL, NULL, 3.74E-4, '14.1.43', NULL, 250.0, 333.0, 'T', 'CH4', NULL, NULL, 3.74, '14.1.43', NULL), +(1376, 1435.0, 394.358, 2295954.081, 'T', 'water', NULL, NULL, 0.999626, '14.1.43', NULL, 250.0, 333.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.43', NULL), +(1377, 1436.0, 394.358, 2826850.37, 'T', 'methane', NULL, NULL, 4.6E-4, '14.1.44', NULL, 250.0, 410.0, 'T', 'CH4', NULL, NULL, 4.6, '14.1.44', NULL), +(1378, 1437.0, 394.358, 2826850.37, 'T', 'water', NULL, NULL, 0.99954, '14.1.44', NULL, 250.0, 410.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.44', NULL), +(1379, 1438.0, 394.358, 3233641.033, 'T', 'methane', NULL, NULL, 5.23E-4, '14.1.45', NULL, 250.0, 469.0, 'T', 'CH4', NULL, NULL, 5.23, '14.1.45', NULL), +(1380, 1439.0, 394.358, 3233641.033, 'T', 'water', NULL, NULL, 0.999477, '14.1.45', NULL, 250.0, 469.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.45', NULL), +(1381, 1440.0, 394.358, 3840379.649, 'T', 'methane', NULL, NULL, 6.35E-4, '14.1.46', NULL, 250.0, 557.0, 'T', 'CH4', NULL, NULL, 6.35, '14.1.46', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1382, 1441.0, 394.358, 3840379.649, 'T', 'water', NULL, NULL, 0.999365, '14.1.46', NULL, 250.0, 557.0, 'T', 'H2O', NULL, NULL, NULL, '14.1.46', NULL), +(1383, 1442.0, 273.15, 1013250.0, 'T', 'methane', 0.99935, NULL, NULL, '15.1.1', NULL, 0.0, 10.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.1', 'reference 15: temp in Celsius, pressure in atm and X*10^4'), +(1384, 1443.0, 273.15, 1013250.0, 'T', 'water', 6.5E-4, NULL, NULL, '15.1.1', NULL, 0.0, 10.0, 'T', 'H2O', 6.5, NULL, NULL, '15.1.1', NULL), +(1385, 1444.0, 263.15, 1013250.0, 'T', 'methane', 0.999725, NULL, NULL, '15.1.2', NULL, -10.0, 10.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.2', NULL), +(1386, 1445.0, 263.15, 1013250.0, 'T', 'water', 2.75E-4, NULL, NULL, '15.1.2', NULL, -10.0, 10.0, 'T', 'H2O', 2.75, NULL, NULL, '15.1.2', NULL), +(1387, 1446.0, 253.15, 1013250.0, 'T', 'methane', 0.999893, NULL, NULL, '15.1.3', NULL, -20.0, 10.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.3', NULL), +(1388, 1447.0, 253.15, 1013250.0, 'T', 'water', 1.07E-4, NULL, NULL, '15.1.3', NULL, -20.0, 10.0, 'T', 'H2O', 1.07, NULL, NULL, '15.1.3', NULL), +(1389, 1448.0, 243.15, 1013250.0, 'T', 'methane', 0.999958, NULL, NULL, '15.1.4', NULL, -30.0, 10.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.4', NULL), +(1390, 1449.0, 243.15, 1013250.0, 'T', 'water', 4.2E-5, NULL, NULL, '15.1.4', NULL, -30.0, 10.0, 'T', 'H2O', 0.42, NULL, NULL, '15.1.4', NULL), +(1391, 1450.0, 233.15, 1013250.0, 'T', 'methane', 0.999986, NULL, NULL, '15.1.5', NULL, -40.0, 10.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.5', NULL), +(1392, 1451.0, 233.15, 1013250.0, 'T', 'water', 1.4E-5, NULL, NULL, '15.1.5', NULL, -40.0, 10.0, 'T', 'H2O', 0.14, NULL, NULL, '15.1.5', NULL), +(1393, 1452.0, 273.15, 2026500.0, 'T', 'methane', 0.99966, NULL, NULL, '15.1.6', NULL, 0.0, 20.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.6', NULL), +(1394, 1453.0, 273.15, 2026500.0, 'T', 'water', 3.4E-4, NULL, NULL, '15.1.6', NULL, 0.0, 20.0, 'T', 'H2O', 3.4, NULL, NULL, '15.1.6', NULL), +(1395, 1454.0, 263.15, 2026500.0, 'T', 'methane', 0.99986, NULL, NULL, '15.1.7', NULL, -10.0, 20.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.7', NULL), +(1396, 1455.0, 263.15, 2026500.0, 'T', 'water', 1.4E-4, NULL, NULL, '15.1.7', NULL, -10.0, 20.0, 'T', 'H2O', 1.4, NULL, NULL, '15.1.7', NULL), +(1397, 1456.0, 253.15, 2026500.0, 'T', 'methane', 0.999944, NULL, NULL, '15.1.8', NULL, -20.0, 20.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.8', NULL), +(1398, 1457.0, 253.15, 2026500.0, 'T', 'water', 5.6E-5, NULL, NULL, '15.1.8', NULL, -20.0, 20.0, 'T', 'H2O', 0.56, NULL, NULL, '15.1.8', NULL), +(1399, 1458.0, 243.15, 2026500.0, 'T', 'methane', 0.999978, NULL, NULL, '15.1.9', NULL, -30.0, 20.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.9', NULL), +(1400, 1459.0, 243.15, 2026500.0, 'T', 'water', 2.2E-5, NULL, NULL, '15.1.9', NULL, -30.0, 20.0, 'T', 'H2O', 0.22, NULL, NULL, '15.1.9', NULL), +(1401, 1460.0, 233.15, 2026500.0, 'T', 'methane', 0.999992, NULL, NULL, '15.1.10', NULL, -40.0, 20.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.10', NULL), +(1402, 1461.0, 233.15, 2026500.0, 'T', 'water', 8.0E-6, NULL, NULL, '15.1.10', NULL, -40.0, 20.0, 'T', 'H2O', 0.08, NULL, NULL, '15.1.10', NULL), +(1403, 1462.0, 273.15, 4053000.0, 'T', 'methane', 0.99982, NULL, NULL, '15.1.11', NULL, 0.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.11', NULL), +(1404, 1463.0, 273.15, 4053000.0, 'T', 'water', 1.8E-4, NULL, NULL, '15.1.11', NULL, 0.0, 40.0, 'T', 'H2O', 1.8, NULL, NULL, '15.1.11', NULL), +(1405, 1464.0, 263.15, 4053000.0, 'T', 'methane', 0.999925, NULL, NULL, '15.1.12', NULL, -10.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.12', NULL), +(1406, 1465.0, 263.15, 4053000.0, 'T', 'water', 7.5E-5, NULL, NULL, '15.1.12', NULL, -10.0, 40.0, 'T', 'H2O', 0.75, NULL, NULL, '15.1.12', NULL), +(1407, 1466.0, 253.15, 4053000.0, 'T', 'methane', 0.999969, NULL, NULL, '15.1.13', NULL, -20.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.13', NULL), +(1408, 1467.0, 253.15, 4053000.0, 'T', 'water', 3.1E-5, NULL, NULL, '15.1.13', NULL, -20.0, 40.0, 'T', 'H2O', 0.31, NULL, NULL, '15.1.13', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1409, 1468.0, 243.15, 4053000.0, 'T', 'methane', 0.999988, NULL, NULL, '15.1.14', NULL, -30.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.14', NULL), +(1410, 1469.0, 243.15, 4053000.0, 'T', 'water', 1.2E-5, NULL, NULL, '15.1.14', NULL, -30.0, 40.0, 'T', 'H2O', 0.12, NULL, NULL, '15.1.14', NULL), +(1411, 1470.0, 233.15, 4053000.0, 'T', 'methane', 0.999995, NULL, NULL, '15.1.15', NULL, -40.0, 40.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.15', NULL), +(1412, 1471.0, 233.15, 4053000.0, 'T', 'water', 5.0E-6, NULL, NULL, '15.1.15', NULL, -40.0, 40.0, 'T', 'H2O', 0.05, NULL, NULL, '15.1.15', NULL), +(1413, 1472.0, 273.15, 6079500.0, 'T', 'methane', 0.999875, NULL, NULL, '15.1.16', NULL, 0.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.16', NULL), +(1414, 1473.0, 273.15, 6079500.0, 'T', 'water', 1.25E-4, NULL, NULL, '15.1.16', NULL, 0.0, 60.0, 'T', 'H2O', 1.25, NULL, NULL, '15.1.16', NULL), +(1415, 1474.0, 263.15, 6079500.0, 'T', 'methane', 0.999944, NULL, NULL, '15.1.17', NULL, -10.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.17', NULL), +(1416, 1475.0, 263.15, 6079500.0, 'T', 'water', 5.6E-5, NULL, NULL, '15.1.17', NULL, -10.0, 60.0, 'T', 'H2O', 0.56, NULL, NULL, '15.1.17', NULL), +(1417, 1476.0, 253.15, 6079500.0, 'T', 'methane', 0.999977, NULL, NULL, '15.1.18', NULL, -20.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.18', NULL), +(1418, 1477.0, 253.15, 6079500.0, 'T', 'water', 2.3E-5, NULL, NULL, '15.1.18', NULL, -20.0, 60.0, 'T', 'H2O', 0.23, NULL, NULL, '15.1.18', NULL), +(1419, 1478.0, 243.15, 6079500.0, 'T', 'methane', 0.999991, NULL, NULL, '15.1.19', NULL, -30.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.19', NULL), +(1420, 1479.0, 243.15, 6079500.0, 'T', 'water', 9.0E-6, NULL, NULL, '15.1.19', NULL, -30.0, 60.0, 'T', 'H2O', 0.09, NULL, NULL, '15.1.19', NULL), +(1421, 1480.0, 233.15, 6079500.0, 'T', 'methane', 0.999997, NULL, NULL, '15.1.20', NULL, -40.0, 60.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.20', NULL), +(1422, 1481.0, 233.15, 6079500.0, 'T', 'water', 3.0E-6, NULL, NULL, '15.1.20', NULL, -40.0, 60.0, 'T', 'H2O', 0.03, NULL, NULL, '15.1.20', NULL), +(1423, 1482.0, 273.15, 8106000.0, 'T', 'methane', 0.9999, NULL, NULL, '15.1.21', NULL, 0.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.21', NULL), +(1424, 1483.0, 273.15, 8106000.0, 'T', 'water', 1.0E-4, NULL, NULL, '15.1.21', NULL, 0.0, 80.0, 'T', 'H2O', 1.0, NULL, NULL, '15.1.21', NULL), +(1425, 1484.0, 263.15, 8106000.0, 'T', 'methane', 0.999956, NULL, NULL, '15.1.22', NULL, -10.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.22', NULL), +(1426, 1485.0, 263.15, 8106000.0, 'T', 'water', 4.4E-5, NULL, NULL, '15.1.22', NULL, -10.0, 80.0, 'T', 'H2O', 0.44, NULL, NULL, '15.1.22', NULL), +(1427, 1486.0, 253.15, 8106000.0, 'T', 'methane', 0.999981, NULL, NULL, '15.1.23', NULL, -20.0, 80.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.23', NULL), +(1428, 1487.0, 253.15, 8106000.0, 'T', 'water', 1.9E-5, NULL, NULL, '15.1.23', NULL, -20.0, 80.0, 'T', 'H2O', 0.19, NULL, NULL, '15.1.23', NULL), +(1429, 1488.0, 273.15, 1.01325E7, 'T', 'methane', 0.999915, NULL, NULL, '15.1.24', NULL, 0.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.24', NULL), +(1430, 1489.0, 273.15, 1.01325E7, 'T', 'water', 8.5E-5, NULL, NULL, '15.1.24', NULL, 0.0, 100.0, 'T', 'H2O', 0.85, NULL, NULL, '15.1.24', NULL), +(1431, 1490.0, 263.15, 1.01325E7, 'T', 'methane', 0.999962, NULL, NULL, '15.1.25', NULL, -10.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.25', NULL), +(1432, 1491.0, 263.15, 1.01325E7, 'T', 'water', 3.8E-5, NULL, NULL, '15.1.25', NULL, -10.0, 100.0, 'T', 'H2O', 0.38, NULL, NULL, '15.1.25', NULL), +(1433, 1492.0, 253.15, 1.01325E7, 'T', 'methane', 0.999983, NULL, NULL, '15.1.26', NULL, -20.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.26', NULL), +(1434, 1493.0, 253.15, 1.01325E7, 'T', 'water', 1.7E-5, NULL, NULL, '15.1.26', NULL, -20.0, 100.0, 'T', 'H2O', 0.17, NULL, NULL, '15.1.26', NULL), +(1435, 1494.0, 243.15, 1.01325E7, 'T', 'methane', 0.999993, NULL, NULL, '15.1.27', NULL, -30.0, 100.0, 'T', 'CH4', NULL, NULL, NULL, '15.1.27', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1436, 1495.0, 243.15, 1.01325E7, 'T', 'water', 7.0E-6, NULL, NULL, '15.1.27', NULL, -30.0, 100.0, 'T', 'H2O', 0.07, NULL, NULL, '15.1.27', NULL), +(1437, 1496.0, 310.958, 6386613.4091, 'T', 'ethane', 0.99867, NULL, NULL, '16.1.1', NULL, 100.0, 926.3, 'T', 'C2H6', NULL, NULL, NULL, '16.1.1', 'Reference 16: temp in F, pressure in psia,mole fraction water x10^3'), +(1438, 1497.0, 310.958, 6386613.4091, 'T', 'water', 0.00133, NULL, NULL, '16.1.1', NULL, 100.0, 926.3, 'T', 'H2O', 1.33, NULL, NULL, '16.1.1', NULL), +(1439, 1498.0, 310.958, 6.21231395214E7, 'T', 'ethane', 0.999353, NULL, NULL, '16.1.2', NULL, 100.0, 9010.2, 'T', 'C2H6', NULL, NULL, NULL, '16.1.2', NULL), +(1440, 1499.0, 310.958, 6.21231395214E7, 'T', 'water', 6.47E-4, NULL, NULL, '16.1.2', NULL, 100.0, 9010.2, 'T', 'H2O', 0.647, NULL, NULL, '16.1.2', NULL), +(1441, 1500.0, 310.958, 5.522700357E7, 'T', 'ethane', 0.999344, NULL, NULL, '16.1.3', NULL, 100.0, 8010.0, 'T', 'C2H6', NULL, NULL, NULL, '16.1.3', NULL), +(1442, 1501.0, 310.958, 5.522700357E7, 'T', 'water', 6.56E-4, NULL, NULL, '16.1.3', NULL, 100.0, 8010.0, 'T', 'H2O', 0.656, NULL, NULL, '16.1.3', NULL), +(1443, 1502.0, 310.958, 4.81453986553E7, 'T', 'ethane', 0.99938, NULL, NULL, '16.1.4', NULL, 100.0, 6982.9, 'T', 'C2H6', NULL, NULL, NULL, '16.1.4', NULL), +(1444, 1503.0, 310.958, 4.81453986553E7, 'T', 'water', 6.2E-4, NULL, NULL, '16.1.4', NULL, 100.0, 6982.9, 'T', 'H2O', 0.62, NULL, NULL, '16.1.4', NULL), +(1445, 1504.0, 310.958, 3.56624411068E7, 'T', 'ethane', 0.999377, NULL, NULL, '16.1.5', NULL, 100.0, 5172.4, 'T', 'C2H6', NULL, NULL, NULL, '16.1.5', NULL), +(1446, 1505.0, 310.958, 3.56624411068E7, 'T', 'water', 6.23E-4, NULL, NULL, '16.1.5', NULL, 100.0, 5172.4, 'T', 'H2O', 0.623, NULL, NULL, '16.1.5', NULL), +(1447, 1506.0, 310.958, 2.1311693887E7, 'T', 'ethane', 0.999277, NULL, NULL, '16.1.6', NULL, 100.0, 3091.0, 'T', 'C2H6', NULL, NULL, NULL, '16.1.6', NULL), +(1448, 1507.0, 310.958, 2.1311693887E7, 'T', 'water', 7.23E-4, NULL, NULL, '16.1.6', NULL, 100.0, 3091.0, 'T', 'H2O', 0.723, NULL, NULL, '16.1.6', NULL), +(1449, 1508.0, 310.958, 1.36330030161E7, 'T', 'ethane', 0.999198, NULL, NULL, '16.1.7', NULL, 100.0, 1977.3, 'T', 'C2H6', NULL, NULL, NULL, '16.1.7', NULL), +(1450, 1509.0, 310.958, 1.36330030161E7, 'T', 'water', 8.02E-4, NULL, NULL, '16.1.7', NULL, 100.0, 1977.3, 'T', 'H2O', 0.802, NULL, NULL, '16.1.7', NULL), +(1451, 1510.0, 344.318, 6.1997654944E7, 'T', 'ethane', 0.99804, NULL, NULL, '16.1.8', NULL, 160.0, 8992.0, 'T', 'C2H6', NULL, NULL, NULL, '16.1.8', NULL), +(1452, 1511.0, 344.318, 6.1997654944E7, 'T', 'water', 0.00196, NULL, NULL, '16.1.8', NULL, 160.0, 8992.0, 'T', 'H2O', 1.96, NULL, NULL, '16.1.8', NULL), +(1453, 1512.0, 344.318, 4.82715727084E7, 'T', 'ethane', 0.99781, NULL, NULL, '16.1.9', NULL, 160.0, 7001.2, 'T', 'C2H6', NULL, NULL, NULL, '16.1.9', NULL), +(1454, 1513.0, 344.318, 4.82715727084E7, 'T', 'water', 0.00219, NULL, NULL, '16.1.9', NULL, 160.0, 7001.2, 'T', 'H2O', 2.19, NULL, NULL, '16.1.9', NULL), +(1455, 1514.0, 344.318, 4.14885107718E7, 'T', 'ethane', 0.997966, NULL, NULL, '16.1.10', NULL, 160.0, 6017.4, 'T', 'C2H6', NULL, NULL, NULL, '16.1.10', NULL), +(1456, 1515.0, 344.318, 4.14885107718E7, 'T', 'water', 0.002034, NULL, NULL, '16.1.10', NULL, 160.0, 6017.4, 'T', 'H2O', 2.034, NULL, NULL, '16.1.10', NULL), +(1457, 1516.0, 344.318, 2211838.0456, 'T', 'ethane', 0.98443, NULL, NULL, '16.1.11', NULL, 160.0, 320.8, 'T', 'C2H6', NULL, NULL, NULL, '16.1.11', NULL), +(1458, 1517.0, 344.318, 2211838.0456, 'T', 'water', 0.01557, NULL, NULL, '16.1.11', NULL, 160.0, 320.8, 'T', 'H2O', 15.57, NULL, NULL, '16.1.11', NULL), +(1459, 1518.0, 377.678, 4.88479743936E7, 'T', 'ethane', 0.994361, NULL, NULL, '16.1.12', NULL, 220.0, 7084.8, 'T', 'C2H6', NULL, NULL, NULL, '16.1.12', NULL), +(1460, 1519.0, 377.678, 4.88479743936E7, 'T', 'water', 0.005639, NULL, NULL, '16.1.12', NULL, 220.0, 7084.8, 'T', 'H2O', 5.639, NULL, NULL, '16.1.12', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1461, 1520.0, 377.678, 4.21035230962E7, 'T', 'ethane', 0.993654, NULL, NULL, '16.1.13', NULL, 220.0, 6106.6, 'T', 'C2H6', NULL, NULL, NULL, '16.1.13', NULL), +(1462, 1521.0, 377.678, 4.21035230962E7, 'T', 'water', 0.006346, NULL, NULL, '16.1.13', NULL, 220.0, 6106.6, 'T', 'H2O', 6.346, NULL, NULL, '16.1.13', NULL), +(1463, 1522.0, 377.678, 2.83884724718E7, 'T', 'ethane', 0.992776, NULL, NULL, '16.1.14', NULL, 220.0, 4117.4, 'T', 'C2H6', NULL, NULL, NULL, '16.1.14', NULL), +(1464, 1523.0, 377.678, 2.83884724718E7, 'T', 'water', 0.007224, NULL, NULL, '16.1.14', NULL, 220.0, 4117.4, 'T', 'H2O', 7.224, NULL, NULL, '16.1.14', NULL), +(1465, 1524.0, 377.678, 3699726.6062, 'T', 'ethane', 0.996638, NULL, NULL, '16.1.15', NULL, 220.0, 536.6, 'T', 'C2H6', NULL, NULL, NULL, '16.1.15', NULL), +(1466, 1525.0, 377.678, 3699726.6062, 'T', 'water', 0.003362, NULL, NULL, '16.1.15', NULL, 220.0, 536.6, 'T', 'H2O', 3.362, NULL, NULL, '16.1.15', NULL), +(1467, 1526.0, 411.038, 6.82036257197E7, 'T', 'ethane', 0.98732, NULL, NULL, '16.1.16', NULL, 280.0, 9892.1, 'T', 'C2H6', NULL, NULL, NULL, '16.1.16', NULL), +(1468, 1527.0, 411.038, 6.82036257197E7, 'T', 'water', 0.01268, NULL, NULL, '16.1.16', NULL, 280.0, 9892.1, 'T', 'H2O', 12.68, NULL, NULL, '16.1.16', NULL), +(1469, 1528.0, 411.038, 6.19500811207E7, 'T', 'ethane', 0.986804, NULL, NULL, '16.1.17', NULL, 280.0, 8985.1, 'T', 'C2H6', NULL, NULL, NULL, '16.1.17', NULL), +(1470, 1529.0, 411.038, 6.19500811207E7, 'T', 'water', 0.013196, NULL, NULL, '16.1.17', NULL, 280.0, 8985.1, 'T', 'H2O', 13.196, NULL, NULL, '16.1.17', NULL), +(1471, 1530.0, 411.038, 5.60102479652E7, 'T', 'ethane', 0.985596, NULL, NULL, '16.1.18', NULL, 280.0, 8123.6, 'T', 'C2H6', NULL, NULL, NULL, '16.1.18', NULL), +(1472, 1531.0, 411.038, 5.60102479652E7, 'T', 'water', 0.014404, NULL, NULL, '16.1.18', NULL, 280.0, 8123.6, 'T', 'H2O', 14.404, NULL, NULL, '16.1.18', NULL), +(1473, 1532.0, 411.038, 4.92196017959E7, 'T', 'ethane', 0.98501, NULL, NULL, '16.1.19', NULL, 280.0, 7138.7, 'T', 'C2H6', NULL, NULL, NULL, '16.1.19', NULL), +(1474, 1533.0, 411.038, 4.92196017959E7, 'T', 'water', 0.01499, NULL, NULL, '16.1.19', NULL, 280.0, 7138.7, 'T', 'H2O', 14.99, NULL, NULL, '16.1.19', NULL), +(1475, 1534.0, 411.038, 4.20359544776E7, 'T', 'ethane', 0.983994, NULL, NULL, '16.1.20', NULL, 280.0, 6096.8, 'T', 'C2H6', NULL, NULL, NULL, '16.1.20', NULL), +(1476, 1535.0, 411.038, 4.20359544776E7, 'T', 'water', 0.016006, NULL, NULL, '16.1.20', NULL, 280.0, 6096.8, 'T', 'H2O', 16.006, NULL, NULL, '16.1.20', NULL), +(1477, 1536.0, 411.038, 3.4797838579E7, 'T', 'ethane', 0.983765, NULL, NULL, '16.1.21', NULL, 280.0, 5047.0, 'T', 'C2H6', NULL, NULL, NULL, '16.1.21', NULL), +(1478, 1537.0, 411.038, 3.4797838579E7, 'T', 'water', 0.016235, NULL, NULL, '16.1.21', NULL, 280.0, 5047.0, 'T', 'H2O', 16.235, NULL, NULL, '16.1.21', NULL), +(1479, 1538.0, 411.038, 2.10276298986E7, 'T', 'ethane', 0.9782, NULL, NULL, '16.1.22', NULL, 280.0, 3049.8, 'T', 'C2H6', NULL, NULL, NULL, '16.1.22', NULL), +(1480, 1539.0, 411.038, 2.10276298986E7, 'T', 'water', 0.0218, NULL, NULL, '16.1.22', NULL, 280.0, 3049.8, 'T', 'H2O', 21.8, NULL, NULL, '16.1.22', NULL), +(1481, 1540.0, 411.038, 7127110.3109, 'T', 'ethane', 0.948018, NULL, NULL, '16.1.23', NULL, 280.0, 1033.7, 'T', 'C2H6', NULL, NULL, NULL, '16.1.23', NULL), +(1482, 1541.0, 411.038, 7127110.3109, 'T', 'water', 0.051982, NULL, NULL, '16.1.23', NULL, 280.0, 1033.7, 'T', 'H2O', 51.982, NULL, NULL, '16.1.23', NULL), +(1483, 1542.0, 444.398, 6.82325836991E7, 'T', 'ethane', 0.97204, NULL, NULL, '16.1.24', NULL, 340.0, 9896.3, 'T', 'C2H6', NULL, NULL, NULL, '16.1.24', NULL), +(1484, 1543.0, 444.398, 6.82325836991E7, 'T', 'water', 0.02796, NULL, NULL, '16.1.24', NULL, 340.0, 9896.3, 'T', 'H2O', 27.96, NULL, NULL, '16.1.24', NULL), +(1485, 1544.0, 444.398, 6.20741867467E7, 'T', 'ethane', 0.97037, NULL, NULL, '16.1.25', NULL, 340.0, 9003.1, 'T', 'C2H6', NULL, NULL, NULL, '16.1.25', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1486, 1545.0, 444.398, 6.20741867467E7, 'T', 'water', 0.02963, NULL, NULL, '16.1.25', NULL, 340.0, 9003.1, 'T', 'H2O', 29.63, NULL, NULL, '16.1.25', NULL), +(1487, 1546.0, 444.398, 3.51480922346E7, 'T', 'ethane', 0.96083, NULL, NULL, '16.1.26', NULL, 340.0, 5097.8, 'T', 'C2H6', NULL, NULL, NULL, '16.1.26', NULL), +(1488, 1547.0, 444.398, 3.51480922346E7, 'T', 'water', 0.03917, NULL, NULL, '16.1.26', NULL, 340.0, 5097.8, 'T', 'H2O', 39.17, NULL, NULL, '16.1.26', NULL), +(1489, 1548.0, 444.398, 2.79017026276E7, 'T', 'ethane', 0.95638, NULL, NULL, '16.1.27', NULL, 340.0, 4046.8, 'T', 'C2H6', NULL, NULL, NULL, '16.1.27', NULL), +(1490, 1549.0, 444.398, 2.79017026276E7, 'T', 'water', 0.04362, NULL, NULL, '16.1.27', NULL, 340.0, 4046.8, 'T', 'H2O', 43.62, NULL, NULL, '16.1.27', NULL), +(1491, 1550.0, 444.398, 2.06739288645E7, 'T', 'ethane', 0.94719, NULL, NULL, '16.1.28', NULL, 340.0, 2998.5, 'T', 'C2H6', NULL, NULL, NULL, '16.1.28', NULL), +(1492, 1551.0, 444.398, 2.06739288645E7, 'T', 'water', 0.05281, NULL, NULL, '16.1.28', NULL, 340.0, 2998.5, 'T', 'H2O', 52.81, NULL, NULL, '16.1.28', NULL), +(1493, 1552.0, 444.398, 7929660.0257, 'T', 'ethane', 0.88424, NULL, NULL, '16.1.29', NULL, 340.0, 1150.1, 'T', 'C2H6', NULL, NULL, NULL, '16.1.29', NULL), +(1494, 1553.0, 444.398, 7929660.0257, 'T', 'water', 0.11576, NULL, NULL, '16.1.29', NULL, 340.0, 1150.1, 'T', 'H2O', 115.76, NULL, NULL, '16.1.29', NULL), +(1495, 1554.0, 477.758, 3.41000891706E7, 'T', 'ethane', 0.91816, NULL, NULL, '16.1.30', NULL, 400.0, 4945.8, 'T', 'C2H6', NULL, NULL, NULL, '16.1.30', NULL), +(1496, 1555.0, 477.758, 3.41000891706E7, 'T', 'water', 0.08184, NULL, NULL, '16.1.30', NULL, 400.0, 4945.8, 'T', 'H2O', 81.84, NULL, NULL, '16.1.30', NULL), +(1497, 1556.0, 477.758, 2.75045646244E7, 'T', 'ethane', 0.90627, NULL, NULL, '16.1.31', NULL, 400.0, 3989.2, 'T', 'C2H6', NULL, NULL, NULL, '16.1.31', NULL), +(1498, 1557.0, 477.758, 2.75045646244E7, 'T', 'water', 0.09373, NULL, NULL, '16.1.31', NULL, 400.0, 3989.2, 'T', 'H2O', 93.73, NULL, NULL, '16.1.31', NULL), +(1499, 1558.0, 477.758, 6.78692300052E7, 'T', 'ethane', 0.94374, NULL, NULL, '16.1.32', NULL, 400.0, 9843.6, 'T', 'C2H6', NULL, NULL, NULL, '16.1.32', NULL), +(1500, 1559.0, 477.758, 6.78692300052E7, 'T', 'water', 0.05626, NULL, NULL, '16.1.32', NULL, 400.0, 9843.6, 'T', 'H2O', 56.26, NULL, NULL, '16.1.32', NULL), +(1501, 1560.0, 477.758, 6.23485980753E7, 'T', 'ethane', 0.94015, NULL, NULL, '16.1.33', NULL, 400.0, 9042.9, 'T', 'C2H6', NULL, NULL, NULL, '16.1.33', NULL), +(1502, 1561.0, 477.758, 6.23485980753E7, 'T', 'water', 0.05985, NULL, NULL, '16.1.33', NULL, 400.0, 9042.9, 'T', 'H2O', 59.85, NULL, NULL, '16.1.33', NULL), +(1503, 1562.0, 477.758, 5.50167134815E7, 'T', 'ethane', 0.93574, NULL, NULL, '16.1.34', NULL, 400.0, 7979.5, 'T', 'C2H6', NULL, NULL, NULL, '16.1.34', NULL), +(1504, 1563.0, 477.758, 5.50167134815E7, 'T', 'water', 0.06426, NULL, NULL, '16.1.34', NULL, 400.0, 7979.5, 'T', 'H2O', 64.26, NULL, NULL, '16.1.34', NULL), +(1505, 1564.0, 477.758, 4.72676960892E7, 'T', 'ethane', 0.93089, NULL, NULL, '16.1.35', NULL, 400.0, 6855.6, 'T', 'C2H6', NULL, NULL, NULL, '16.1.35', NULL), +(1506, 1565.0, 477.758, 4.72676960892E7, 'T', 'water', 0.06911, NULL, NULL, '16.1.35', NULL, 400.0, 6855.6, 'T', 'H2O', 69.11, NULL, NULL, '16.1.35', NULL), +(1507, 1566.0, 477.758, 4.12451258497E7, 'T', 'ethane', 0.92552, NULL, NULL, '16.1.36', NULL, 400.0, 5982.1, 'T', 'C2H6', NULL, NULL, NULL, '16.1.36', NULL), +(1508, 1567.0, 477.758, 4.12451258497E7, 'T', 'water', 0.07448, NULL, NULL, '16.1.36', NULL, 400.0, 5982.1, 'T', 'H2O', 74.48, NULL, NULL, '16.1.36', NULL), +(1509, 1568.0, 511.118, 6.65530208939E7, 'T', 'ethane', 0.88921, NULL, NULL, '16.1.37', NULL, 460.0, 9652.7, 'T', 'C2H6', NULL, NULL, NULL, '16.1.37', NULL), +(1510, 1569.0, 511.118, 6.65530208939E7, 'T', 'water', 0.11079, NULL, NULL, '16.1.37', NULL, 460.0, 9652.7, 'T', 'H2O', 110.79, NULL, NULL, '16.1.37', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1511, 1570.0, 511.118, 5.86316345766E7, 'T', 'ethane', 0.88229, NULL, NULL, '16.1.38', NULL, 460.0, 8503.8, 'T', 'C2H6', NULL, NULL, NULL, '16.1.38', NULL), +(1512, 1571.0, 511.118, 5.86316345766E7, 'T', 'water', 0.11771, NULL, NULL, '16.1.38', NULL, 460.0, 8503.8, 'T', 'H2O', 117.71, NULL, NULL, '16.1.38', NULL), +(1513, 1572.0, 511.118, 4.83101833476E7, 'T', 'ethane', 0.86819, NULL, NULL, '16.1.39', NULL, 460.0, 7006.8, 'T', 'C2H6', NULL, NULL, NULL, '16.1.39', NULL), +(1514, 1573.0, 511.118, 4.83101833476E7, 'T', 'water', 0.13181, NULL, NULL, '16.1.39', NULL, 460.0, 7006.8, 'T', 'H2O', 131.81, NULL, NULL, '16.1.39', NULL), +(1515, 1574.0, 511.118, 3.79404688196E7, 'T', 'ethane', 0.85129, NULL, NULL, '16.1.40', NULL, 460.0, 5502.8, 'T', 'C2H6', NULL, NULL, NULL, '16.1.40', NULL), +(1516, 1575.0, 511.118, 3.79404688196E7, 'T', 'water', 0.14871, NULL, NULL, '16.1.40', NULL, 460.0, 5502.8, 'T', 'H2O', 148.71, NULL, NULL, '16.1.40', NULL), +(1517, 1576.0, 511.118, 2.74659539852E7, 'T', 'ethane', 0.82005, NULL, NULL, '16.1.41', NULL, 460.0, 3983.6, 'T', 'C2H6', NULL, NULL, NULL, '16.1.41', NULL), +(1518, 1577.0, 511.118, 2.74659539852E7, 'T', 'water', 0.17995, NULL, NULL, '16.1.41', NULL, 460.0, 3983.6, 'T', 'H2O', 179.95, NULL, NULL, '16.1.41', NULL), +(1519, 1578.0, 310.958, 406790.663, 'T', 'ethane', NULL, NULL, 8.93E-5, '17.2.1', NULL, 100.0, 59.0, 'T', 'C2H6', NULL, NULL, 8.93E-5, '17.2.1', 'Reference 17: temp in F, pressure in psia, mol fraction ethane'), +(1520, 1579.0, 310.958, 406790.663, 'T', 'water', NULL, NULL, 0.9999107, '17.2.1', NULL, 100.0, 59.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.1', NULL), +(1521, 1580.0, 310.958, 758423.27, 'T', 'ethane', NULL, NULL, 2.04E-4, '17.2.2', NULL, 100.0, 110.0, 'T', 'C2H6', NULL, NULL, 2.04E-4, '17.2.2', NULL), +(1522, 1581.0, 310.958, 758423.27, 'T', 'water', NULL, NULL, 0.999796, '17.2.2', NULL, 100.0, 110.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.2', NULL), +(1523, 1582.0, 310.958, 1378951.4, 'T', 'ethane', NULL, NULL, 3.11E-4, '17.2.3', NULL, 100.0, 200.0, 'T', 'C2H6', NULL, NULL, 3.11E-4, '17.2.3', NULL), +(1524, 1583.0, 310.958, 1378951.4, 'T', 'water', NULL, NULL, 0.999689, '17.2.3', NULL, 100.0, 200.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.3', NULL), +(1525, 1584.0, 310.958, 2344217.38, 'T', 'ethane', NULL, NULL, 5.21E-4, '17.2.4', NULL, 100.0, 340.0, 'T', 'C2H6', NULL, NULL, 5.21E-4, '17.2.4', NULL), +(1526, 1585.0, 310.958, 2344217.38, 'T', 'water', NULL, NULL, 0.999479, '17.2.4', NULL, 100.0, 340.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.4', NULL), +(1527, 1586.0, 310.958, 3916221.976, 'T', 'ethane', NULL, NULL, 6.47E-4, '17.2.5', NULL, 100.0, 568.0, 'T', 'C2H6', NULL, NULL, 6.47E-4, '17.2.5', NULL), +(1528, 1587.0, 310.958, 3916221.976, 'T', 'water', NULL, NULL, 0.999353, '17.2.5', NULL, 100.0, 568.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.5', NULL), +(1529, 1588.0, 310.958, 5288278.619, 'T', 'ethane', NULL, NULL, 7.09E-4, '17.2.6', NULL, 100.0, 767.0, 'T', 'C2H6', NULL, NULL, 7.09E-4, '17.2.6', NULL), +(1530, 1589.0, 310.958, 5288278.619, 'T', 'water', NULL, NULL, 0.999291, '17.2.6', NULL, 100.0, 767.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.6', NULL), +(1531, 1590.0, 310.958, 7446337.56, 'T', 'ethane', NULL, NULL, 8.01E-4, '17.2.7', NULL, 100.0, 1080.0, 'T', 'C2H6', NULL, NULL, 8.01E-4, '17.2.7', NULL), +(1532, 1591.0, 310.958, 7446337.56, 'T', 'water', NULL, NULL, 0.999199, '17.2.7', NULL, 100.0, 1080.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.7', NULL), +(1533, 1592.0, 310.958, 1.3272407225E7, 'T', 'ethane', NULL, NULL, 8.21E-4, '17.2.8', NULL, 100.0, 1925.0, 'T', 'C2H6', NULL, NULL, 8.21E-4, '17.2.8', NULL), +(1534, 1593.0, 310.958, 1.3272407225E7, 'T', 'water', NULL, NULL, 0.999179, '17.2.8', NULL, 100.0, 1925.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.8', NULL), +(1535, 1594.0, 310.958, 2.1477168055E7, 'T', 'ethane', NULL, NULL, 8.9E-4, '17.2.9', NULL, 100.0, 3115.0, 'T', 'C2H6', NULL, NULL, 8.9E-4, '17.2.9', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1536, 1595.0, 310.958, 2.1477168055E7, 'T', 'water', NULL, NULL, 0.99911, '17.2.9', NULL, 100.0, 3115.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.9', NULL), +(1537, 1596.0, 310.958, 3.4715101495E7, 'T', 'ethane', NULL, NULL, 0.001018, '17.2.10', NULL, 100.0, 5035.0, 'T', 'C2H6', NULL, NULL, 0.001018, '17.2.10', NULL), +(1538, 1597.0, 310.958, 3.4715101495E7, 'T', 'water', NULL, NULL, 0.998982, '17.2.10', NULL, 100.0, 5035.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.10', NULL), +(1539, 1598.0, 310.958, 3.99895906E7, 'T', 'ethane', NULL, NULL, 0.001066, '17.2.11', NULL, 100.0, 5800.0, 'T', 'C2H6', NULL, NULL, 0.001066, '17.2.11', NULL), +(1540, 1599.0, 310.958, 3.99895906E7, 'T', 'water', NULL, NULL, 0.998934, '17.2.11', NULL, 100.0, 5800.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.11', NULL), +(1541, 1600.0, 310.958, 4.364381181E7, 'T', 'ethane', NULL, NULL, 0.001105, '17.2.12', NULL, 100.0, 6330.0, 'T', 'C2H6', NULL, NULL, 0.001105, '17.2.12', NULL), +(1542, 1601.0, 310.958, 4.364381181E7, 'T', 'water', NULL, NULL, 0.998895, '17.2.12', NULL, 100.0, 6330.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.12', NULL), +(1543, 1602.0, 310.958, 5.2434626985E7, 'T', 'ethane', NULL, NULL, 0.00106, '17.2.13', NULL, 100.0, 7605.0, 'T', 'C2H6', NULL, NULL, 0.00106, '17.2.13', NULL), +(1544, 1603.0, 310.958, 5.2434626985E7, 'T', 'water', NULL, NULL, 0.99894, '17.2.13', NULL, 100.0, 7605.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.13', NULL), +(1545, 1604.0, 310.958, 6.5189927435E7, 'T', 'ethane', NULL, NULL, 0.00113, '17.2.14', NULL, 100.0, 9455.0, 'T', 'C2H6', NULL, NULL, 0.00113, '17.2.14', NULL), +(1546, 1605.0, 310.958, 6.5189927435E7, 'T', 'water', NULL, NULL, 0.99887, '17.2.14', NULL, 100.0, 9455.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.14', NULL), +(1547, 1606.0, 344.318, 779107.541, 'T', 'ethane', NULL, NULL, 8.12E-5, '17.2.15', NULL, 160.0, 113.0, 'T', 'C2H6', NULL, NULL, 8.12E-5, '17.2.15', NULL), +(1548, 1607.0, 344.318, 779107.541, 'T', 'water', NULL, NULL, 0.9999188, '17.2.15', NULL, 160.0, 113.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.15', NULL), +(1549, 1608.0, 344.318, 1351372.372, 'T', 'ethane', NULL, NULL, 1.54E-4, '17.2.16', NULL, 160.0, 196.0, 'T', 'C2H6', NULL, NULL, 1.54E-4, '17.2.16', NULL), +(1550, 1609.0, 344.318, 1351372.372, 'T', 'water', NULL, NULL, 0.999846, '17.2.16', NULL, 160.0, 196.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.16', NULL), +(1551, 1610.0, 344.318, 2171848.455, 'T', 'ethane', NULL, NULL, 3.09E-4, '17.2.17', NULL, 160.0, 315.0, 'T', 'C2H6', NULL, NULL, 3.09E-4, '17.2.17', NULL), +(1552, 1611.0, 344.318, 2171848.455, 'T', 'water', NULL, NULL, 0.999691, '17.2.17', NULL, 160.0, 315.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.17', NULL), +(1553, 1612.0, 344.318, 3530115.584, 'T', 'ethane', NULL, NULL, 4.17E-4, '17.2.18', NULL, 160.0, 512.0, 'T', 'C2H6', NULL, NULL, 4.17E-4, '17.2.18', NULL), +(1554, 1613.0, 344.318, 3530115.584, 'T', 'water', NULL, NULL, 0.999583, '17.2.18', NULL, 160.0, 512.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.18', NULL), +(1555, 1614.0, 344.318, 5412384.245, 'T', 'ethane', NULL, NULL, 5.7E-4, '17.2.19', NULL, 160.0, 785.0, 'T', 'C2H6', NULL, NULL, 5.7E-4, '17.2.19', NULL), +(1556, 1615.0, 344.318, 5412384.245, 'T', 'water', NULL, NULL, 0.99943, '17.2.19', NULL, 160.0, 785.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.19', NULL), +(1557, 1616.0, 344.318, 8377129.755, 'T', 'ethane', NULL, NULL, 6.79E-4, '17.2.20', NULL, 160.0, 1215.0, 'T', 'C2H6', NULL, NULL, 6.79E-4, '17.2.20', NULL), +(1558, 1617.0, 344.318, 8377129.755, 'T', 'water', NULL, NULL, 0.999321, '17.2.20', NULL, 160.0, 1215.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.20', NULL), +(1559, 1618.0, 344.318, 1.3686092645E7, 'T', 'ethane', NULL, NULL, 7.88E-4, '17.2.21', NULL, 160.0, 1985.0, 'T', 'C2H6', NULL, NULL, 7.88E-4, '17.2.21', NULL), +(1560, 1619.0, 344.318, 1.3686092645E7, 'T', 'water', NULL, NULL, 0.999212, '17.2.21', NULL, 160.0, 1985.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.21', NULL), +(1561, 1620.0, 344.318, 2.2580329175E7, 'T', 'ethane', NULL, NULL, 8.95E-4, '17.2.22', NULL, 160.0, 3275.0, 'T', 'C2H6', NULL, NULL, 8.95E-4, '17.2.22', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1562, 1621.0, 344.318, 2.2580329175E7, 'T', 'water', NULL, NULL, 0.999105, '17.2.22', NULL, 160.0, 3275.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.22', NULL), +(1563, 1622.0, 344.318, 3.3680887945E7, 'T', 'ethane', NULL, NULL, 0.001011, '17.2.23', NULL, 160.0, 4885.0, 'T', 'C2H6', NULL, NULL, 0.001011, '17.2.23', NULL), +(1564, 1623.0, 344.318, 3.3680887945E7, 'T', 'water', NULL, NULL, 0.998989, '17.2.23', NULL, 160.0, 4885.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.23', NULL), +(1565, 1624.0, 344.318, 4.4712499145E7, 'T', 'ethane', NULL, NULL, 0.001078, '17.2.24', NULL, 160.0, 6485.0, 'T', 'C2H6', NULL, NULL, 0.001078, '17.2.24', NULL), +(1566, 1625.0, 344.318, 4.4712499145E7, 'T', 'water', NULL, NULL, 0.998922, '17.2.24', NULL, 160.0, 6485.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.24', NULL), +(1567, 1626.0, 344.318, 5.067646395E7, 'T', 'ethane', NULL, NULL, 0.0011, '17.2.25', NULL, 160.0, 7350.0, 'T', 'C2H6', NULL, NULL, 0.0011, '17.2.25', NULL), +(1568, 1627.0, 344.318, 5.067646395E7, 'T', 'water', NULL, NULL, 0.9989, '17.2.25', NULL, 160.0, 7350.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.25', NULL), +(1569, 1628.0, 344.318, 5.743332581E7, 'T', 'ethane', NULL, NULL, 0.001178, '17.2.26', NULL, 160.0, 8330.0, 'T', 'C2H6', NULL, NULL, 0.001178, '17.2.26', NULL), +(1570, 1629.0, 344.318, 5.743332581E7, 'T', 'water', NULL, NULL, 0.998822, '17.2.26', NULL, 160.0, 8330.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.26', NULL), +(1571, 1630.0, 344.318, 6.653440505E7, 'T', 'ethane', NULL, NULL, 0.001166, '17.2.27', NULL, 160.0, 9650.0, 'T', 'C2H6', NULL, NULL, 0.001166, '17.2.27', NULL), +(1572, 1631.0, 344.318, 6.653440505E7, 'T', 'water', NULL, NULL, 0.998834, '17.2.27', NULL, 160.0, 9650.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.27', NULL), +(1573, 1632.0, 377.678, 848055.111, 'T', 'ethane', NULL, NULL, 6.98E-5, '17.2.28', NULL, 220.0, 123.0, 'T', 'C2H6', NULL, NULL, 6.98E-5, '17.2.28', NULL), +(1574, 1633.0, 377.678, 848055.111, 'T', 'water', NULL, NULL, 0.9999302, '17.2.28', NULL, 220.0, 123.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.28', NULL), +(1575, 1634.0, 377.678, 1461688.484, 'T', 'ethane', NULL, NULL, 1.3E-4, '17.2.29', NULL, 220.0, 212.0, 'T', 'C2H6', NULL, NULL, 1.3E-4, '17.2.29', NULL), +(1576, 1635.0, 377.678, 1461688.484, 'T', 'water', NULL, NULL, 0.99987, '17.2.29', NULL, 220.0, 212.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.29', NULL), +(1577, 1636.0, 377.678, 2220111.754, 'T', 'ethane', NULL, NULL, 2.56E-4, '17.2.30', NULL, 220.0, 322.0, 'T', 'C2H6', NULL, NULL, 2.56E-4, '17.2.30', NULL), +(1578, 1637.0, 377.678, 2220111.754, 'T', 'water', NULL, NULL, 0.999744, '17.2.30', NULL, 220.0, 322.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.30', NULL), +(1579, 1638.0, 377.678, 3778326.836, 'T', 'ethane', NULL, NULL, 3.91E-4, '17.2.31', NULL, 220.0, 548.0, 'T', 'C2H6', NULL, NULL, 3.91E-4, '17.2.31', NULL), +(1580, 1639.0, 377.678, 3778326.836, 'T', 'water', NULL, NULL, 0.999609, '17.2.31', NULL, 220.0, 548.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.31', NULL), +(1581, 1640.0, 377.678, 5184857.264, 'T', 'ethane', NULL, NULL, 5.6E-4, '17.2.32', NULL, 220.0, 752.0, 'T', 'C2H6', NULL, NULL, 5.6E-4, '17.2.32', NULL), +(1582, 1641.0, 377.678, 5184857.264, 'T', 'water', NULL, NULL, 0.99944, '17.2.32', NULL, 220.0, 752.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.32', NULL), +(1583, 1642.0, 377.678, 7722127.84, 'T', 'ethane', NULL, NULL, 6.61E-4, '17.2.33', NULL, 220.0, 1120.0, 'T', 'C2H6', NULL, NULL, 6.61E-4, '17.2.33', NULL), +(1584, 1643.0, 377.678, 7722127.84, 'T', 'water', NULL, NULL, 0.999339, '17.2.33', NULL, 220.0, 1120.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.33', NULL), +(1585, 1644.0, 377.678, 1.3548197505E7, 'T', 'ethane', NULL, NULL, 9.44E-4, '17.2.34', NULL, 220.0, 1965.0, 'T', 'C2H6', NULL, NULL, 9.44E-4, '17.2.34', NULL), +(1586, 1645.0, 377.678, 1.3548197505E7, 'T', 'water', NULL, NULL, 0.999056, '17.2.34', NULL, 220.0, 1965.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.34', NULL), +(1587, 1646.0, 377.678, 1.399635671E7, 'T', 'ethane', NULL, NULL, 9.64E-4, '17.2.35', NULL, 220.0, 2030.0, 'T', 'C2H6', NULL, NULL, 9.64E-4, '17.2.35', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1588, 1647.0, 377.678, 1.399635671E7, 'T', 'water', NULL, NULL, 0.999036, '17.2.35', NULL, 220.0, 2030.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.35', NULL), +(1589, 1648.0, 377.678, 1.7478208995E7, 'T', 'ethane', NULL, NULL, 0.001042, '17.2.36', NULL, 220.0, 2535.0, 'T', 'C2H6', NULL, NULL, 0.001042, '17.2.36', NULL), +(1590, 1649.0, 377.678, 1.7478208995E7, 'T', 'water', NULL, NULL, 0.998958, '17.2.36', NULL, 220.0, 2535.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.36', NULL), +(1591, 1650.0, 377.678, 2.3821385435E7, 'T', 'ethane', NULL, NULL, 0.001132, '17.2.37', NULL, 220.0, 3455.0, 'T', 'C2H6', NULL, NULL, 0.001132, '17.2.37', NULL), +(1592, 1651.0, 377.678, 2.3821385435E7, 'T', 'water', NULL, NULL, 0.998868, '17.2.37', NULL, 220.0, 3455.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.37', NULL), +(1593, 1652.0, 377.678, 3.668010724E7, 'T', 'ethane', NULL, NULL, 0.001249, '17.2.38', NULL, 220.0, 5320.0, 'T', 'C2H6', NULL, NULL, 0.001249, '17.2.38', NULL), +(1594, 1653.0, 377.678, 3.668010724E7, 'T', 'water', NULL, NULL, 0.998751, '17.2.38', NULL, 220.0, 5320.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.38', NULL), +(1595, 1654.0, 377.678, 4.833224657E7, 'T', 'ethane', NULL, NULL, 0.001329, '17.2.39', NULL, 220.0, 7010.0, 'T', 'C2H6', NULL, NULL, 0.001329, '17.2.39', NULL), +(1596, 1655.0, 377.678, 4.833224657E7, 'T', 'water', NULL, NULL, 0.998671, '17.2.39', NULL, 220.0, 7010.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.39', NULL), +(1597, 1656.0, 377.678, 5.846753936E7, 'T', 'ethane', NULL, NULL, 0.001434, '17.2.40', NULL, 220.0, 8480.0, 'T', 'C2H6', NULL, NULL, 0.001434, '17.2.40', NULL), +(1598, 1657.0, 377.678, 5.846753936E7, 'T', 'water', NULL, NULL, 0.998566, '17.2.40', NULL, 220.0, 8480.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.40', NULL), +(1599, 1658.0, 377.678, 6.8499410795E7, 'T', 'ethane', NULL, NULL, 0.001514, '17.2.41', NULL, 220.0, 9935.0, 'T', 'C2H6', NULL, NULL, 0.001514, '17.2.41', NULL), +(1600, 1659.0, 377.678, 6.8499410795E7, 'T', 'water', NULL, NULL, 0.998486, '17.2.41', NULL, 220.0, 9935.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.41', NULL), +(1601, 1660.0, 411.038, 779107.541, 'T', 'ethane', NULL, NULL, 4.75E-5, '17.2.42', NULL, 280.0, 113.0, 'T', 'C2H6', NULL, NULL, 4.75E-5, '17.2.42', NULL), +(1602, 1661.0, 411.038, 779107.541, 'T', 'water', NULL, NULL, 0.9999525, '17.2.42', NULL, 280.0, 113.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.42', NULL), +(1603, 1662.0, 411.038, 1447898.97, 'T', 'ethane', NULL, NULL, 1.58E-4, '17.2.43', NULL, 280.0, 210.0, 'T', 'C2H6', NULL, NULL, 1.58E-4, '17.2.43', NULL), +(1604, 1663.0, 411.038, 1447898.97, 'T', 'water', NULL, NULL, 0.999842, '17.2.43', NULL, 280.0, 210.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.43', NULL), +(1605, 1664.0, 411.038, 2206322.24, 'T', 'ethane', NULL, NULL, 2.72E-4, '17.2.44', NULL, 280.0, 320.0, 'T', 'C2H6', NULL, NULL, 2.72E-4, '17.2.44', NULL), +(1606, 1665.0, 411.038, 2206322.24, 'T', 'water', NULL, NULL, 0.999728, '17.2.44', NULL, 280.0, 320.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.44', NULL), +(1607, 1666.0, 411.038, 3840379.649, 'T', 'ethane', NULL, NULL, 4.64E-4, '17.2.45', NULL, 280.0, 557.0, 'T', 'C2H6', NULL, NULL, 4.64E-4, '17.2.45', NULL), +(1608, 1667.0, 411.038, 3840379.649, 'T', 'water', NULL, NULL, 0.999536, '17.2.45', NULL, 280.0, 557.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.45', NULL), +(1609, 1668.0, 411.038, 5074541.152, 'T', 'ethane', NULL, NULL, 6.6E-4, '17.2.46', NULL, 280.0, 736.0, 'T', 'C2H6', NULL, NULL, 6.6E-4, '17.2.46', NULL), +(1610, 1669.0, 411.038, 5074541.152, 'T', 'water', NULL, NULL, 0.99934, '17.2.46', NULL, 280.0, 736.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.46', NULL), +(1611, 1670.0, 411.038, 6749967.103, 'T', 'ethane', NULL, NULL, 8.03E-4, '17.2.47', NULL, 280.0, 979.0, 'T', 'C2H6', NULL, NULL, 8.03E-4, '17.2.47', NULL), +(1612, 1671.0, 411.038, 6749967.103, 'T', 'water', NULL, NULL, 0.999197, '17.2.47', NULL, 280.0, 979.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.47', NULL), +(1613, 1672.0, 411.038, 1.013529279E7, 'T', 'ethane', NULL, NULL, 0.001065, '17.2.48', NULL, 280.0, 1470.0, 'T', 'C2H6', NULL, NULL, 0.001065, '17.2.48', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1614, 1673.0, 411.038, 1.013529279E7, 'T', 'water', NULL, NULL, 0.998935, '17.2.48', NULL, 280.0, 1470.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.48', NULL), +(1615, 1674.0, 411.038, 1.4513463485E7, 'T', 'ethane', NULL, NULL, 0.001208, '17.2.49', NULL, 280.0, 2105.0, 'T', 'C2H6', NULL, NULL, 0.001208, '17.2.49', NULL), +(1616, 1675.0, 411.038, 1.4513463485E7, 'T', 'water', NULL, NULL, 0.998792, '17.2.49', NULL, 280.0, 2105.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.49', NULL), +(1617, 1676.0, 411.038, 1.847794876E7, 'T', 'ethane', NULL, NULL, 0.001384, '17.2.50', NULL, 280.0, 2680.0, 'T', 'C2H6', NULL, NULL, 0.001384, '17.2.50', NULL), +(1618, 1677.0, 411.038, 1.847794876E7, 'T', 'water', NULL, NULL, 0.998616, '17.2.50', NULL, 280.0, 2680.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.50', NULL), +(1619, 1678.0, 411.038, 2.4717703845E7, 'T', 'ethane', NULL, NULL, 0.00153, '17.2.51', NULL, 280.0, 3585.0, 'T', 'C2H6', NULL, NULL, 0.00153, '17.2.51', NULL), +(1620, 1679.0, 411.038, 2.4717703845E7, 'T', 'water', NULL, NULL, 0.99847, '17.2.51', NULL, 280.0, 3585.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.51', NULL), +(1621, 1680.0, 411.038, 3.4784049065E7, 'T', 'ethane', NULL, NULL, 0.001703, '17.2.52', NULL, 280.0, 5045.0, 'T', 'C2H6', NULL, NULL, 0.001703, '17.2.52', NULL), +(1622, 1681.0, 411.038, 3.4784049065E7, 'T', 'water', NULL, NULL, 0.998297, '17.2.52', NULL, 280.0, 5045.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.52', NULL), +(1623, 1682.0, 411.038, 4.4574604005E7, 'T', 'ethane', NULL, NULL, 0.001867, '17.2.53', NULL, 280.0, 6465.0, 'T', 'C2H6', NULL, NULL, 0.001867, '17.2.53', NULL), +(1624, 1683.0, 411.038, 4.4574604005E7, 'T', 'water', NULL, NULL, 0.998133, '17.2.53', NULL, 280.0, 6465.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.53', NULL), +(1625, 1684.0, 411.038, 5.5537267635E7, 'T', 'ethane', NULL, NULL, 0.001901, '17.2.54', NULL, 280.0, 8055.0, 'T', 'C2H6', NULL, NULL, 0.001901, '17.2.54', NULL), +(1626, 1685.0, 411.038, 5.5537267635E7, 'T', 'water', NULL, NULL, 0.998099, '17.2.54', NULL, 280.0, 8055.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.54', NULL), +(1627, 1686.0, 411.038, 6.7396249675E7, 'T', 'ethane', NULL, NULL, 0.002005, '17.2.55', NULL, 280.0, 9775.0, 'T', 'C2H6', NULL, NULL, 0.002005, '17.2.55', NULL), +(1628, 1687.0, 411.038, 6.7396249675E7, 'T', 'water', NULL, NULL, 0.997995, '17.2.55', NULL, 280.0, 9775.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.55', NULL), +(1629, 1688.0, 444.398, 1558215.082, 'T', 'ethane', NULL, NULL, 1.4E-4, '17.2.56', NULL, 340.0, 226.0, 'T', 'C2H6', NULL, NULL, 1.4E-4, '17.2.56', NULL), +(1630, 1689.0, 444.398, 1558215.082, 'T', 'water', NULL, NULL, 0.99986, '17.2.56', NULL, 340.0, 226.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.56', NULL), +(1631, 1690.0, 444.398, 2302848.838, 'T', 'ethane', NULL, NULL, 2.61E-4, '17.2.57', NULL, 340.0, 334.0, 'T', 'C2H6', NULL, NULL, 2.61E-4, '17.2.57', NULL), +(1632, 1691.0, 444.398, 2302848.838, 'T', 'water', NULL, NULL, 0.999739, '17.2.57', NULL, 340.0, 334.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.57', NULL), +(1633, 1692.0, 444.398, 3647326.453, 'T', 'ethane', NULL, NULL, 5.03E-4, '17.2.58', NULL, 340.0, 529.0, 'T', 'C2H6', NULL, NULL, 5.03E-4, '17.2.58', NULL), +(1634, 1693.0, 444.398, 3647326.453, 'T', 'water', NULL, NULL, 0.999497, '17.2.58', NULL, 340.0, 529.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.58', NULL), +(1635, 1694.0, 444.398, 5081435.909, 'T', 'ethane', NULL, NULL, 7.7E-4, '17.2.59', NULL, 340.0, 737.0, 'T', 'C2H6', NULL, NULL, 7.7E-4, '17.2.59', NULL), +(1636, 1695.0, 444.398, 5081435.909, 'T', 'water', NULL, NULL, 0.99923, '17.2.59', NULL, 340.0, 737.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.59', NULL), +(1637, 1696.0, 444.398, 6839598.944, 'T', 'ethane', NULL, NULL, 0.001039, '17.2.60', NULL, 340.0, 992.0, 'T', 'C2H6', NULL, NULL, 0.001039, '17.2.60', NULL), +(1638, 1697.0, 444.398, 6839598.944, 'T', 'water', NULL, NULL, 0.998961, '17.2.60', NULL, 340.0, 992.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.60', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1639, 1698.0, 444.398, 9445817.09, 'T', 'ethane', NULL, NULL, 0.001311, '17.2.61', NULL, 340.0, 1370.0, 'T', 'C2H6', NULL, NULL, 0.001311, '17.2.61', NULL), +(1640, 1699.0, 444.398, 9445817.09, 'T', 'water', NULL, NULL, 0.998689, '17.2.61', NULL, 340.0, 1370.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.61', NULL), +(1641, 1700.0, 444.398, 1.3686092645E7, 'T', 'ethane', NULL, NULL, 0.001671, '17.2.62', NULL, 340.0, 1985.0, 'T', 'C2H6', NULL, NULL, 0.001671, '17.2.62', NULL), +(1642, 1701.0, 444.398, 1.3686092645E7, 'T', 'water', NULL, NULL, 0.998329, '17.2.62', NULL, 340.0, 1985.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.62', NULL), +(1643, 1702.0, 444.398, 1.7960841985E7, 'T', 'ethane', NULL, NULL, 0.00197, '17.2.63', NULL, 340.0, 2605.0, 'T', 'C2H6', NULL, NULL, 0.00197, '17.2.63', NULL), +(1644, 1703.0, 444.398, 1.7960841985E7, 'T', 'water', NULL, NULL, 0.99803, '17.2.63', NULL, 340.0, 2605.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.63', NULL), +(1645, 1704.0, 444.398, 2.509691548E7, 'T', 'ethane', NULL, NULL, 0.002325, '17.2.64', NULL, 340.0, 3640.0, 'T', 'C2H6', NULL, NULL, 0.002325, '17.2.64', NULL), +(1646, 1705.0, 444.398, 2.509691548E7, 'T', 'water', NULL, NULL, 0.997675, '17.2.64', NULL, 340.0, 3640.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.64', NULL), +(1647, 1706.0, 444.398, 2.9544033745E7, 'T', 'ethane', NULL, NULL, 0.00248, '17.2.65', NULL, 340.0, 4285.0, 'T', 'C2H6', NULL, NULL, 0.00248, '17.2.65', NULL), +(1648, 1707.0, 444.398, 2.9544033745E7, 'T', 'water', NULL, NULL, 0.99752, '17.2.65', NULL, 340.0, 4285.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.65', NULL), +(1649, 1708.0, 444.398, 3.4715101495E7, 'T', 'ethane', NULL, NULL, 0.002515, '17.2.66', NULL, 340.0, 5035.0, 'T', 'C2H6', NULL, NULL, 0.002515, '17.2.66', NULL), +(1650, 1709.0, 444.398, 3.4715101495E7, 'T', 'water', NULL, NULL, 0.997485, '17.2.66', NULL, 340.0, 5035.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.66', NULL), +(1651, 1710.0, 444.398, 3.619747425E7, 'T', 'ethane', NULL, NULL, 0.002635, '17.2.67', NULL, 340.0, 5250.0, 'T', 'C2H6', NULL, NULL, 0.002635, '17.2.67', NULL), +(1652, 1711.0, 444.398, 3.619747425E7, 'T', 'water', NULL, NULL, 0.997365, '17.2.67', NULL, 340.0, 5250.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.67', NULL), +(1653, 1712.0, 444.398, 4.571223891E7, 'T', 'ethane', NULL, NULL, 0.00279, '17.2.68', NULL, 340.0, 6630.0, 'T', 'C2H6', NULL, NULL, 0.00279, '17.2.68', NULL), +(1654, 1713.0, 444.398, 4.571223891E7, 'T', 'water', NULL, NULL, 0.99721, '17.2.68', NULL, 340.0, 6630.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.68', NULL), +(1655, 1714.0, 444.398, 5.736437824E7, 'T', 'ethane', NULL, NULL, 0.00306, '17.2.69', NULL, 340.0, 8320.0, 'T', 'C2H6', NULL, NULL, 0.00306, '17.2.69', NULL), +(1656, 1715.0, 444.398, 5.736437824E7, 'T', 'water', NULL, NULL, 0.99694, '17.2.69', NULL, 340.0, 8320.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.69', NULL), +(1657, 1716.0, 444.398, 6.4362556595E7, 'T', 'ethane', NULL, NULL, 0.0032, '17.2.70', NULL, 340.0, 9335.0, 'T', 'C2H6', NULL, NULL, 0.0032, '17.2.70', NULL), +(1658, 1717.0, 444.398, 6.4362556595E7, 'T', 'water', NULL, NULL, 0.9968, '17.2.70', NULL, 340.0, 9335.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.70', NULL), +(1659, 1718.0, 444.398, 6.7809935095E7, 'T', 'ethane', NULL, NULL, 0.0033, '17.2.71', NULL, 340.0, 9835.0, 'T', 'C2H6', NULL, NULL, 0.0033, '17.2.71', NULL), +(1660, 1719.0, 444.398, 6.7809935095E7, 'T', 'water', NULL, NULL, 0.9967, '17.2.71', NULL, 340.0, 9835.0, 'T', 'H2O', NULL, NULL, NULL, '17.2.71', NULL), +(1661, 1720.0, 288.718, 101352.9279, 'T', 'propane', NULL, NULL, 5.89E-5, '18.1.1', NULL, 60.0, 14.7, 'T', 'C3H8', NULL, NULL, 5.89, '18.1.1', 'Reference 18: temp in F, pressure in psia and mole fraction x10^5'), +(1662, 1721.0, 288.718, 101352.9279, 'T', 'water', NULL, NULL, 0.9999411, '18.1.1', NULL, 60.0, 14.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.1', NULL), +(1663, 1722.0, 288.718, 139274.0914, 'T', 'propane', NULL, NULL, 7.7E-5, '18.1.2', NULL, 60.0, 20.2, 'T', 'C3H8', NULL, NULL, 7.7, '18.1.2', 'data from Haughn and McKetta'); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1664, 1723.0, 288.718, 139274.0914, 'T', 'water', NULL, NULL, 0.999923, '18.1.2', NULL, 60.0, 20.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.2', NULL), +(1665, 1724.0, 288.718, 343358.8986, 'T', 'propane', NULL, NULL, 1.905E-4, '18.1.3', NULL, 60.0, 49.8, 'T', 'C3H8', NULL, NULL, 19.05, '18.1.3', NULL), +(1666, 1725.0, 288.718, 343358.8986, 'T', 'water', NULL, NULL, 0.9998095, '18.1.3', NULL, 60.0, 49.8, 'T', 'H2O', NULL, NULL, NULL, '18.1.3', NULL), +(1667, 1726.0, 288.718, 432301.2639, 'T', 'propane', NULL, NULL, 2.244E-4, '18.1.4', NULL, 60.0, 62.7, 'T', 'C3H8', NULL, NULL, 22.44, '18.1.4', NULL), +(1668, 1727.0, 288.718, 432301.2639, 'T', 'water', NULL, NULL, 0.9997756, '18.1.4', NULL, 60.0, 62.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.4', NULL), +(1669, 1728.0, 288.718, 581228.0151, 'T', 'propane', NULL, NULL, 2.496E-4, '18.1.5', NULL, 60.0, 84.3, 'T', 'C3H8', NULL, NULL, 24.96, '18.1.5', NULL), +(1670, 1729.0, 288.718, 581228.0151, 'T', 'water', NULL, NULL, 0.9997504, '18.1.5', NULL, 60.0, 84.3, 'T', 'H2O', NULL, NULL, NULL, '18.1.5', NULL), +(1671, 1730.0, 288.718, 692923.0785, 'T', 'propane', NULL, NULL, 2.598E-4, '18.1.6', NULL, 60.0, 100.5, 'T', 'C3H8', NULL, NULL, 25.98, '18.1.6', NULL), +(1672, 1731.0, 288.718, 692923.0785, 'T', 'water', NULL, NULL, 0.9997402, '18.1.6', NULL, 60.0, 100.5, 'T', 'H2O', NULL, NULL, NULL, '18.1.6', NULL), +(1673, 1732.0, 310.958, 149616.2269, 'T', 'propane', NULL, NULL, 2.34E-5, '18.1.7', NULL, 100.0, 21.7, 'T', 'C3H8', NULL, NULL, 2.34, '18.1.7', NULL), +(1674, 1733.0, 310.958, 149616.2269, 'T', 'water', NULL, NULL, 0.9999766, '18.1.7', NULL, 100.0, 21.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.7', NULL), +(1675, 1734.0, 310.958, 232353.3109, 'T', 'propane', NULL, NULL, 3.88E-5, '18.1.8', NULL, 100.0, 33.7, 'T', 'C3H8', NULL, NULL, 3.88, '18.1.8', NULL), +(1676, 1735.0, 310.958, 232353.3109, 'T', 'water', NULL, NULL, 0.9999612, '18.1.8', NULL, 100.0, 33.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.8', NULL), +(1677, 1736.0, 310.958, 361974.7425, 'T', 'propane', NULL, NULL, 6.23E-5, '18.1.9', NULL, 100.0, 52.5, 'T', 'C3H8', NULL, NULL, 6.23, '18.1.9', NULL), +(1678, 1737.0, 310.958, 361974.7425, 'T', 'water', NULL, NULL, 0.9999377, '18.1.9', NULL, 100.0, 52.5, 'T', 'H2O', NULL, NULL, NULL, '18.1.9', NULL), +(1679, 1738.0, 310.958, 486080.3685, 'T', 'propane', NULL, NULL, 7.7E-5, '18.1.10', NULL, 100.0, 70.5, 'T', 'C3H8', NULL, NULL, 7.7, '18.1.10', NULL), +(1680, 1739.0, 310.958, 486080.3685, 'T', 'water', NULL, NULL, 0.999923, '18.1.10', NULL, 100.0, 70.5, 'T', 'H2O', NULL, NULL, NULL, '18.1.10', NULL), +(1681, 1740.0, 310.958, 580538.5394, 'T', 'propane', NULL, NULL, 1.026E-4, '18.1.11', NULL, 100.0, 84.2, 'T', 'C3H8', NULL, NULL, 10.26, '18.1.11', NULL), +(1682, 1741.0, 310.958, 580538.5394, 'T', 'water', NULL, NULL, 0.9998974, '18.1.11', NULL, 100.0, 84.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.11', NULL), +(1683, 1742.0, 310.958, 666723.0019, 'T', 'propane', NULL, NULL, 1.05E-4, '18.1.12', NULL, 100.0, 96.7, 'T', 'C3H8', NULL, NULL, 10.5, '18.1.12', NULL), +(1684, 1743.0, 310.958, 666723.0019, 'T', 'water', NULL, NULL, 0.999895, '18.1.12', NULL, 100.0, 96.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.12', NULL), +(1685, 1744.0, 310.958, 790828.6279, 'T', 'propane', NULL, NULL, 1.244E-4, '18.1.13', NULL, 100.0, 114.7, 'T', 'C3H8', NULL, NULL, 12.44, '18.1.13', NULL), +(1686, 1745.0, 310.958, 790828.6279, 'T', 'water', NULL, NULL, 0.9998756, '18.1.13', NULL, 100.0, 114.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.13', NULL), +(1687, 1746.0, 310.958, 804618.1419, 'T', 'propane', NULL, NULL, 1.256E-4, '18.1.14', NULL, 100.0, 116.7, 'T', 'C3H8', NULL, NULL, 12.56, '18.1.14', NULL), +(1688, 1747.0, 310.958, 804618.1419, 'T', 'water', NULL, NULL, 0.9998744, '18.1.14', NULL, 100.0, 116.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.14', NULL), +(1689, 1748.0, 310.958, 828749.7914, 'T', 'propane', NULL, NULL, 1.362E-4, '18.1.15', NULL, 100.0, 120.2, 'T', 'C3H8', NULL, NULL, 13.62, '18.1.15', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1690, 1749.0, 310.958, 828749.7914, 'T', 'water', NULL, NULL, 0.9998638, '18.1.15', NULL, 100.0, 120.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.15', NULL), +(1691, 1750.0, 310.958, 841160.354, 'T', 'propane', NULL, NULL, 1.404E-4, '18.1.16', NULL, 100.0, 122.0, 'T', 'C3H8', NULL, NULL, 14.04, '18.1.16', NULL), +(1692, 1751.0, 310.958, 841160.354, 'T', 'water', NULL, NULL, 0.9998596, '18.1.16', NULL, 100.0, 122.0, 'T', 'H2O', NULL, NULL, NULL, '18.1.16', NULL), +(1693, 1752.0, 310.958, 908039.4969, 'T', 'propane', NULL, NULL, 1.43E-4, '18.1.17', NULL, 100.0, 131.7, 'T', 'C3H8', NULL, NULL, 14.3, '18.1.17', NULL), +(1694, 1753.0, 310.958, 908039.4969, 'T', 'water', NULL, NULL, 0.999857, '18.1.17', NULL, 100.0, 131.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.17', NULL), +(1695, 1754.0, 310.958, 908039.4969, 'T', 'propane', NULL, NULL, 1.476E-4, '18.1.18', NULL, 100.0, 131.7, 'T', 'C3H8', NULL, NULL, 14.76, '18.1.18', NULL), +(1696, 1755.0, 310.958, 908039.4969, 'T', 'water', NULL, NULL, 0.9998524, '18.1.18', NULL, 100.0, 131.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.18', NULL), +(1697, 1756.0, 310.958, 963197.5529, 'T', 'propane', NULL, NULL, 1.503E-4, '18.1.19', NULL, 100.0, 139.7, 'T', 'C3H8', NULL, NULL, 15.03, '18.1.19', NULL), +(1698, 1757.0, 310.958, 963197.5529, 'T', 'water', NULL, NULL, 0.9998497, '18.1.19', NULL, 100.0, 139.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.19', NULL), +(1699, 1758.0, 310.958, 966644.9314, 'T', 'propane', NULL, NULL, 1.541E-4, '18.1.20', NULL, 100.0, 140.2, 'T', 'C3H8', NULL, NULL, 15.41, '18.1.20', NULL), +(1700, 1759.0, 310.958, 966644.9314, 'T', 'water', NULL, NULL, 0.9998459, '18.1.20', NULL, 100.0, 140.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.20', NULL), +(1701, 1760.0, 310.958, 983881.8239, 'T', 'propane', NULL, NULL, 1.567E-4, '18.1.21', NULL, 100.0, 142.7, 'T', 'C3H8', NULL, NULL, 15.67, '18.1.21', NULL), +(1702, 1761.0, 310.958, 983881.8239, 'T', 'water', NULL, NULL, 0.9998433, '18.1.21', NULL, 100.0, 142.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.21', NULL), +(1703, 1762.0, 310.958, 1045934.6369, 'T', 'propane', NULL, NULL, 1.687E-4, '18.1.22', NULL, 100.0, 151.7, 'T', 'C3H8', NULL, NULL, 16.87, '18.1.22', NULL), +(1704, 1763.0, 310.958, 1045934.6369, 'T', 'water', NULL, NULL, 0.9998313, '18.1.22', NULL, 100.0, 151.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.22', NULL), +(1705, 1764.0, 310.958, 1104540.0714, 'T', 'propane', NULL, NULL, 1.691E-4, '18.1.23', NULL, 100.0, 160.2, 'T', 'C3H8', NULL, NULL, 16.91, '18.1.23', NULL), +(1706, 1765.0, 310.958, 1104540.0714, 'T', 'water', NULL, NULL, 0.9998309, '18.1.23', NULL, 100.0, 160.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.23', NULL), +(1707, 1766.0, 344.318, 211669.0399, 'T', 'propane', NULL, NULL, 1.75E-5, '18.1.24', NULL, 160.0, 30.7, 'T', 'C3H8', NULL, NULL, 1.75, '18.1.24', NULL), +(1708, 1767.0, 344.318, 211669.0399, 'T', 'water', NULL, NULL, 0.9999825, '18.1.24', NULL, 160.0, 30.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.24', NULL), +(1709, 1768.0, 344.318, 270274.4744, 'T', 'propane', NULL, NULL, 2.25E-5, '18.1.25', NULL, 160.0, 39.2, 'T', 'C3H8', NULL, NULL, 2.25, '18.1.25', NULL), +(1710, 1769.0, 344.318, 270274.4744, 'T', 'water', NULL, NULL, 0.9999775, '18.1.25', NULL, 160.0, 39.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.25', NULL), +(1711, 1770.0, 344.318, 277169.2314, 'T', 'propane', NULL, NULL, 2.5E-5, '18.1.26', NULL, 160.0, 40.2, 'T', 'C3H8', NULL, NULL, 2.5, '18.1.26', NULL), +(1712, 1771.0, 344.318, 277169.2314, 'T', 'water', NULL, NULL, 0.999975, '18.1.26', NULL, 160.0, 40.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.26', NULL), +(1713, 1772.0, 344.318, 380590.5864, 'T', 'propane', NULL, NULL, 3.48E-5, '18.1.27', NULL, 160.0, 55.2, 'T', 'C3H8', NULL, NULL, 3.48, '18.1.27', NULL), +(1714, 1773.0, 344.318, 380590.5864, 'T', 'water', NULL, NULL, 0.9999652, '18.1.27', NULL, 160.0, 55.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.27', NULL), +(1715, 1774.0, 344.318, 415064.3714, 'T', 'propane', NULL, NULL, 4.02E-5, '18.1.28', NULL, 160.0, 60.2, 'T', 'C3H8', NULL, NULL, 4.02, '18.1.28', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1716, 1775.0, 344.318, 415064.3714, 'T', 'water', NULL, NULL, 0.9999598, '18.1.28', NULL, 160.0, 60.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.28', NULL), +(1717, 1776.0, 344.318, 556406.8899, 'T', 'propane', NULL, NULL, 5.2E-5, '18.1.29', NULL, 160.0, 80.7, 'T', 'C3H8', NULL, NULL, 5.2, '18.1.29', NULL), +(1718, 1777.0, 344.318, 556406.8899, 'T', 'water', NULL, NULL, 0.999948, '18.1.29', NULL, 160.0, 80.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.29', NULL), +(1719, 1778.0, 344.318, 742565.3289, 'T', 'propane', NULL, NULL, 7.42E-5, '18.1.30', NULL, 160.0, 107.7, 'T', 'C3H8', NULL, NULL, 7.42, '18.1.30', NULL), +(1720, 1779.0, 344.318, 742565.3289, 'T', 'water', NULL, NULL, 0.9999258, '18.1.30', NULL, 160.0, 107.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.30', NULL), +(1721, 1780.0, 344.318, 845986.6839, 'T', 'propane', NULL, NULL, 8.12E-5, '18.1.31', NULL, 160.0, 122.7, 'T', 'C3H8', NULL, NULL, 8.12, '18.1.31', NULL), +(1722, 1781.0, 344.318, 845986.6839, 'T', 'water', NULL, NULL, 0.9999188, '18.1.31', NULL, 160.0, 122.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.31', NULL), +(1723, 1782.0, 344.318, 997671.3379, 'T', 'propane', NULL, NULL, 9.05E-5, '18.1.32', NULL, 160.0, 144.7, 'T', 'C3H8', NULL, NULL, 9.05, '18.1.32', NULL), +(1724, 1783.0, 344.318, 997671.3379, 'T', 'water', NULL, NULL, 0.9999095, '18.1.32', NULL, 160.0, 144.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.32', NULL), +(1725, 1784.0, 344.318, 1156250.7489, 'T', 'propane', NULL, NULL, 1.065E-4, '18.1.33', NULL, 160.0, 167.7, 'T', 'C3H8', NULL, NULL, 10.65, '18.1.33', NULL), +(1726, 1785.0, 344.318, 1156250.7489, 'T', 'water', NULL, NULL, 0.9998935, '18.1.33', NULL, 160.0, 167.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.33', NULL), +(1727, 1786.0, 344.318, 1287251.1319, 'T', 'propane', NULL, NULL, 1.21E-4, '18.1.34', NULL, 160.0, 186.7, 'T', 'C3H8', NULL, NULL, 12.1, '18.1.34', NULL), +(1728, 1787.0, 344.318, 1287251.1319, 'T', 'water', NULL, NULL, 0.999879, '18.1.34', NULL, 160.0, 186.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.34', NULL), +(1729, 1788.0, 344.318, 1383777.7299, 'T', 'propane', NULL, NULL, 1.296E-4, '18.1.35', NULL, 160.0, 200.7, 'T', 'C3H8', NULL, NULL, 12.96, '18.1.35', NULL), +(1730, 1789.0, 344.318, 1383777.7299, 'T', 'water', NULL, NULL, 0.9998704, '18.1.35', NULL, 160.0, 200.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.35', NULL), +(1731, 1790.0, 344.318, 1604409.9539, 'T', 'propane', NULL, NULL, 1.417E-4, '18.1.36', NULL, 160.0, 232.7, 'T', 'C3H8', NULL, NULL, 14.17, '18.1.36', NULL), +(1732, 1791.0, 344.318, 1604409.9539, 'T', 'water', NULL, NULL, 0.9998583, '18.1.36', NULL, 160.0, 232.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.36', NULL), +(1733, 1792.0, 344.318, 1669910.1454, 'T', 'propane', NULL, NULL, 1.506E-4, '18.1.37', NULL, 160.0, 242.2, 'T', 'C3H8', NULL, NULL, 15.06, '18.1.37', NULL), +(1734, 1793.0, 344.318, 1669910.1454, 'T', 'water', NULL, NULL, 0.9998494, '18.1.37', NULL, 160.0, 242.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.37', NULL), +(1735, 1794.0, 344.318, 1682320.708, 'T', 'propane', NULL, NULL, 1.5E-4, '18.1.38', NULL, 160.0, 244.0, 'T', 'C3H8', NULL, NULL, 15.0, '18.1.38', NULL), +(1736, 1795.0, 344.318, 1682320.708, 'T', 'water', NULL, NULL, 0.99985, '18.1.38', NULL, 160.0, 244.0, 'T', 'H2O', NULL, NULL, NULL, '18.1.38', NULL), +(1737, 1796.0, 344.318, 1687147.0379, 'T', 'propane', NULL, NULL, 1.507E-4, '18.1.39', NULL, 160.0, 244.7, 'T', 'C3H8', NULL, NULL, 15.07, '18.1.39', NULL), +(1738, 1797.0, 344.318, 1687147.0379, 'T', 'water', NULL, NULL, 0.9998493, '18.1.39', NULL, 160.0, 244.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.39', NULL), +(1739, 1798.0, 344.318, 1866410.7199, 'T', 'propane', NULL, NULL, 1.608E-4, '18.1.40', NULL, 160.0, 270.7, 'T', 'C3H8', NULL, NULL, 16.08, '18.1.40', NULL), +(1740, 1799.0, 344.318, 1866410.7199, 'T', 'water', NULL, NULL, 0.9998392, '18.1.40', NULL, 160.0, 270.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.40', NULL), +(1741, 1800.0, 344.318, 1956042.5609, 'T', 'propane', NULL, NULL, 1.73E-4, '18.1.41', NULL, 160.0, 283.7, 'T', 'C3H8', NULL, NULL, 17.3, '18.1.41', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1742, 1801.0, 344.318, 1956042.5609, 'T', 'water', NULL, NULL, 0.999827, '18.1.41', NULL, 160.0, 283.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.41', NULL), +(1743, 1802.0, 344.318, 2107727.2149, 'T', 'propane', NULL, NULL, 1.845E-4, '18.1.42', NULL, 160.0, 305.7, 'T', 'C3H8', NULL, NULL, 18.45, '18.1.42', NULL), +(1744, 1803.0, 344.318, 2107727.2149, 'T', 'water', NULL, NULL, 0.9998155, '18.1.42', NULL, 160.0, 305.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.42', NULL), +(1745, 1804.0, 344.318, 2376622.7379, 'T', 'propane', NULL, NULL, 2.0E-4, '18.1.43', NULL, 160.0, 344.7, 'T', 'C3H8', NULL, NULL, 20.0, '18.1.43', NULL), +(1746, 1805.0, 344.318, 2376622.7379, 'T', 'water', NULL, NULL, 0.9998, '18.1.43', NULL, 160.0, 344.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.43', NULL), +(1747, 1806.0, 344.318, 2553817.9928, 'T', 'propane', NULL, NULL, 2.104E-4, '18.1.44', NULL, 160.0, 370.4, 'T', 'C3H8', NULL, NULL, 21.04, '18.1.44', NULL), +(1748, 1807.0, 344.318, 2553817.9928, 'T', 'water', NULL, NULL, 0.9997896, '18.1.44', NULL, 160.0, 370.4, 'T', 'H2O', NULL, NULL, NULL, '18.1.44', NULL), +(1749, 1808.0, 344.318, 2655860.3964, 'T', 'propane', NULL, NULL, 2.15E-4, '18.1.45', NULL, 160.0, 385.2, 'T', 'C3H8', NULL, NULL, 21.5, '18.1.45', NULL), +(1750, 1809.0, 344.318, 2655860.3964, 'T', 'water', NULL, NULL, 0.999785, '18.1.45', NULL, 160.0, 385.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.45', NULL), +(1751, 1810.0, 377.678, 256484.9604, 'T', 'propane', NULL, NULL, 1.2E-5, '18.1.46', NULL, 220.0, 37.2, 'T', 'C3H8', NULL, NULL, 1.2, '18.1.46', NULL), +(1752, 1811.0, 377.678, 256484.9604, 'T', 'water', NULL, NULL, 0.999988, '18.1.46', NULL, 220.0, 37.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.46', NULL), +(1753, 1812.0, 377.678, 518485.7264, 'T', 'propane', NULL, NULL, 4.004E-5, '18.1.47', NULL, 220.0, 75.2, 'T', 'C3H8', NULL, NULL, 4.004, '18.1.47', NULL), +(1754, 1813.0, 377.678, 518485.7264, 'T', 'water', NULL, NULL, 0.99995996, '18.1.47', NULL, 220.0, 75.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.47', NULL), +(1755, 1814.0, 377.678, 908039.4969, 'T', 'propane', NULL, NULL, 7.61E-5, '18.1.48', NULL, 220.0, 131.7, 'T', 'C3H8', NULL, NULL, 7.61, '18.1.48', NULL), +(1756, 1815.0, 377.678, 908039.4969, 'T', 'water', NULL, NULL, 0.9999239, '18.1.48', NULL, 220.0, 131.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.48', NULL), +(1757, 1816.0, 377.678, 908039.4969, 'T', 'propane', NULL, NULL, 7.55E-5, '18.1.49', NULL, 220.0, 131.7, 'T', 'C3H8', NULL, NULL, 7.55, '18.1.49', NULL), +(1758, 1817.0, 377.678, 908039.4969, 'T', 'water', NULL, NULL, 0.9999245, '18.1.49', NULL, 220.0, 131.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.49', NULL), +(1759, 1818.0, 377.678, 1249329.9684, 'T', 'propane', NULL, NULL, 1.1E-4, '18.1.50', NULL, 220.0, 181.2, 'T', 'C3H8', NULL, NULL, 11.0, '18.1.50', NULL), +(1760, 1819.0, 377.678, 1249329.9684, 'T', 'water', NULL, NULL, 0.99989, '18.1.50', NULL, 220.0, 181.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.50', NULL), +(1761, 1820.0, 377.678, 1349303.9449, 'T', 'propane', NULL, NULL, 1.169E-4, '18.1.51', NULL, 220.0, 195.7, 'T', 'C3H8', NULL, NULL, 11.69, '18.1.51', NULL), +(1762, 1821.0, 377.678, 1349303.9449, 'T', 'water', NULL, NULL, 0.9998831, '18.1.51', NULL, 220.0, 195.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.51', NULL), +(1763, 1822.0, 377.678, 1497541.2204, 'T', 'propane', NULL, NULL, 1.31E-4, '18.1.52', NULL, 220.0, 217.2, 'T', 'C3H8', NULL, NULL, 13.1, '18.1.52', NULL), +(1764, 1823.0, 377.678, 1497541.2204, 'T', 'water', NULL, NULL, 0.999869, '18.1.52', NULL, 220.0, 217.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.52', NULL), +(1765, 1824.0, 377.678, 1783673.6359, 'T', 'propane', NULL, NULL, 1.512E-4, '18.1.53', NULL, 220.0, 258.7, 'T', 'C3H8', NULL, NULL, 15.12, '18.1.53', NULL), +(1766, 1825.0, 377.678, 1783673.6359, 'T', 'water', NULL, NULL, 0.9998488, '18.1.53', NULL, 220.0, 258.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.53', NULL), +(1767, 1826.0, 377.678, 1887094.9909, 'T', 'propane', NULL, NULL, 1.68E-4, '18.1.54', NULL, 220.0, 273.7, 'T', 'C3H8', NULL, NULL, 16.8, '18.1.54', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1768, 1827.0, 377.678, 1887094.9909, 'T', 'water', NULL, NULL, 0.999832, '18.1.54', NULL, 220.0, 273.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.54', NULL), +(1769, 1828.0, 377.678, 2004305.8599, 'T', 'propane', NULL, NULL, 1.602E-4, '18.1.55', NULL, 220.0, 290.7, 'T', 'C3H8', NULL, NULL, 16.02, '18.1.55', NULL), +(1770, 1829.0, 377.678, 2004305.8599, 'T', 'water', NULL, NULL, 0.9998398, '18.1.55', NULL, 220.0, 290.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.55', NULL), +(1771, 1830.0, 377.678, 2107727.2149, 'T', 'propane', NULL, NULL, 1.775E-4, '18.1.56', NULL, 220.0, 305.7, 'T', 'C3H8', NULL, NULL, 17.75, '18.1.56', NULL), +(1772, 1831.0, 377.678, 2107727.2149, 'T', 'water', NULL, NULL, 0.9998225, '18.1.56', NULL, 220.0, 305.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.56', NULL), +(1773, 1832.0, 377.678, 2142200.9999, 'T', 'propane', NULL, NULL, 1.766E-4, '18.1.57', NULL, 220.0, 310.7, 'T', 'C3H8', NULL, NULL, 17.66, '18.1.57', NULL), +(1774, 1833.0, 377.678, 2142200.9999, 'T', 'water', NULL, NULL, 0.9998234, '18.1.57', NULL, 220.0, 310.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.57', NULL), +(1775, 1834.0, 377.678, 2164953.698, 'T', 'propane', NULL, NULL, 1.8E-4, '18.1.58', NULL, 220.0, 314.0, 'T', 'C3H8', NULL, NULL, 18.0, '18.1.58', NULL), +(1776, 1835.0, 377.678, 2164953.698, 'T', 'water', NULL, NULL, 0.99982, '18.1.58', NULL, 220.0, 314.0, 'T', 'H2O', NULL, NULL, NULL, '18.1.58', NULL), +(1777, 1836.0, 377.678, 2452465.0649, 'T', 'propane', NULL, NULL, 2.038E-4, '18.1.59', NULL, 220.0, 355.7, 'T', 'C3H8', NULL, NULL, 20.38, '18.1.59', NULL), +(1778, 1837.0, 377.678, 2452465.0649, 'T', 'water', NULL, NULL, 0.9997962, '18.1.59', NULL, 220.0, 355.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.59', NULL), +(1779, 1838.0, 377.678, 2817887.1859, 'T', 'propane', NULL, NULL, 2.195E-4, '18.1.60', NULL, 220.0, 408.7, 'T', 'C3H8', NULL, NULL, 21.95, '18.1.60', NULL), +(1780, 1839.0, 377.678, 2817887.1859, 'T', 'water', NULL, NULL, 0.9997805, '18.1.60', NULL, 220.0, 408.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.60', NULL), +(1781, 1840.0, 377.678, 2935098.0549, 'T', 'propane', NULL, NULL, 2.385E-4, '18.1.61', NULL, 220.0, 425.7, 'T', 'C3H8', NULL, NULL, 23.85, '18.1.61', NULL), +(1782, 1841.0, 377.678, 2935098.0549, 'T', 'water', NULL, NULL, 0.9997615, '18.1.61', NULL, 220.0, 425.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.61', NULL), +(1783, 1842.0, 377.678, 3083335.3304, 'T', 'propane', NULL, NULL, 2.406E-4, '18.1.62', NULL, 220.0, 447.2, 'T', 'C3H8', NULL, NULL, 24.06, '18.1.62', NULL), +(1784, 1843.0, 377.678, 3083335.3304, 'T', 'water', NULL, NULL, 0.9997594, '18.1.62', NULL, 220.0, 447.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.62', NULL), +(1785, 1844.0, 377.678, 3428073.1804, 'T', 'propane', NULL, NULL, 2.65E-4, '18.1.63', NULL, 220.0, 497.2, 'T', 'C3H8', NULL, NULL, 26.5, '18.1.63', NULL), +(1786, 1845.0, 377.678, 3428073.1804, 'T', 'water', NULL, NULL, 0.999735, '18.1.63', NULL, 220.0, 497.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.63', NULL), +(1787, 1846.0, 377.678, 3528047.1569, 'T', 'propane', NULL, NULL, 2.7E-4, '18.1.64', NULL, 220.0, 511.7, 'T', 'C3H8', NULL, NULL, 27.0, '18.1.64', NULL), +(1788, 1847.0, 377.678, 3528047.1569, 'T', 'water', NULL, NULL, 0.99973, '18.1.64', NULL, 220.0, 511.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.64', NULL), +(1789, 1848.0, 411.038, 519175.2021, 'T', 'propane', NULL, NULL, 2.72E-5, '18.1.65', NULL, 280.0, 75.3, 'T', 'C3H8', NULL, NULL, 2.72, '18.1.65', 'data from Haughn and McKetta'), +(1790, 1849.0, 411.038, 519175.2021, 'T', 'water', NULL, NULL, 0.9999728, '18.1.65', NULL, 280.0, 75.3, 'T', 'H2O', NULL, NULL, NULL, '18.1.65', NULL), +(1791, 1850.0, 411.038, 864602.5278, 'T', 'propane', NULL, NULL, 6.04E-5, '18.1.66', NULL, 280.0, 125.4, 'T', 'C3H8', NULL, NULL, 6.04, '18.1.66', NULL), +(1792, 1851.0, 411.038, 864602.5278, 'T', 'water', NULL, NULL, 0.9999396, '18.1.66', NULL, 280.0, 125.4, 'T', 'H2O', NULL, NULL, NULL, '18.1.66', NULL), +(1793, 1852.0, 411.038, 2175985.3092, 'T', 'propane', NULL, NULL, 1.965E-4, '18.1.67', NULL, 280.0, 315.6, 'T', 'C3H8', NULL, NULL, 19.65, '18.1.67', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1794, 1853.0, 411.038, 2175985.3092, 'T', 'water', NULL, NULL, 0.9998035, '18.1.67', NULL, 280.0, 315.6, 'T', 'H2O', NULL, NULL, NULL, '18.1.67', NULL), +(1795, 1854.0, 411.038, 2690334.1814, 'T', 'propane', NULL, NULL, 2.36E-4, '18.1.68', NULL, 280.0, 390.2, 'T', 'C3H8', NULL, NULL, 23.6, '18.1.68', NULL), +(1796, 1855.0, 411.038, 2690334.1814, 'T', 'water', NULL, NULL, 0.999764, '18.1.68', NULL, 280.0, 390.2, 'T', 'H2O', NULL, NULL, NULL, '18.1.68', NULL), +(1797, 1856.0, 411.038, 2971640.267, 'T', 'propane', NULL, NULL, 2.724E-4, '18.1.69', NULL, 280.0, 431.0, 'T', 'C3H8', NULL, NULL, 27.24, '18.1.69', NULL), +(1798, 1857.0, 411.038, 2971640.267, 'T', 'water', NULL, NULL, 0.9997276, '18.1.69', NULL, 280.0, 431.0, 'T', 'H2O', NULL, NULL, NULL, '18.1.69', NULL), +(1799, 1858.0, 411.038, 3359815.0861, 'T', 'propane', NULL, NULL, 2.92E-4, '18.1.70', NULL, 280.0, 487.3, 'T', 'C3H8', NULL, NULL, 29.2, '18.1.70', NULL), +(1800, 1859.0, 411.038, 3359815.0861, 'T', 'water', NULL, NULL, 0.999708, '18.1.70', NULL, 280.0, 487.3, 'T', 'H2O', NULL, NULL, NULL, '18.1.70', NULL), +(1801, 1860.0, 411.038, 3438415.3159, 'T', 'propane', NULL, NULL, 3.13E-4, '18.1.71', NULL, 280.0, 498.7, 'T', 'C3H8', NULL, NULL, 31.3, '18.1.71', NULL), +(1802, 1861.0, 411.038, 3438415.3159, 'T', 'water', NULL, NULL, 0.999687, '18.1.71', NULL, 280.0, 498.7, 'T', 'H2O', NULL, NULL, NULL, '18.1.71', NULL), +(1803, 1862.0, 344.318, 514348.8722, 'T', 'propane', NULL, NULL, 5.49E-5, '19.1.1', NULL, 160.0, 74.6, 'T', 'C3H8', NULL, NULL, 5.49, '19.1.1', 'Reference 19: temp in F, pressure in psia, mole fraction propane x10^5'), +(1804, 1863.0, 344.318, 514348.8722, 'T', 'water', NULL, NULL, 0.9999451, '19.1.1', NULL, 160.0, 74.6, 'T', 'H2O', NULL, NULL, NULL, '19.1.1', NULL), +(1805, 1864.0, 344.318, 773591.7354, 'T', 'propane', NULL, NULL, 8.06E-5, '19.1.2', NULL, 160.0, 112.2, 'T', 'C3H8', NULL, NULL, 8.06, '19.1.2', NULL), +(1806, 1865.0, 344.318, 773591.7354, 'T', 'water', NULL, NULL, 0.9999194, '19.1.2', NULL, 160.0, 112.2, 'T', 'H2O', NULL, NULL, NULL, '19.1.2', NULL), +(1807, 1866.0, 344.318, 829439.2671, 'T', 'propane', NULL, NULL, 8.2E-5, '19.1.3', NULL, 160.0, 120.3, 'T', 'C3H8', NULL, NULL, 8.2, '19.1.3', NULL), +(1808, 1867.0, 344.318, 829439.2671, 'T', 'water', NULL, NULL, 0.999918, '19.1.3', NULL, 160.0, 120.3, 'T', 'H2O', NULL, NULL, NULL, '19.1.3', NULL), +(1809, 1868.0, 344.318, 888044.7016, 'T', 'propane', NULL, NULL, 8.69E-5, '19.1.4', NULL, 160.0, 128.8, 'T', 'C3H8', NULL, NULL, 8.69, '19.1.4', NULL), +(1810, 1869.0, 344.318, 888044.7016, 'T', 'water', NULL, NULL, 0.9999131, '19.1.4', NULL, 160.0, 128.8, 'T', 'H2O', NULL, NULL, NULL, '19.1.4', NULL), +(1811, 1870.0, 344.318, 942513.2819, 'T', 'propane', NULL, NULL, 9.69E-5, '19.1.5', NULL, 160.0, 136.7, 'T', 'C3H8', NULL, NULL, 9.69, '19.1.5', NULL), +(1812, 1871.0, 344.318, 942513.2819, 'T', 'water', NULL, NULL, 0.9999031, '19.1.5', NULL, 160.0, 136.7, 'T', 'H2O', NULL, NULL, NULL, '19.1.5', NULL), +(1813, 1872.0, 344.318, 1026629.3173, 'T', 'propane', NULL, NULL, 1.01E-4, '19.1.6', NULL, 160.0, 148.9, 'T', 'C3H8', NULL, NULL, 10.1, '19.1.6', NULL), +(1814, 1873.0, 344.318, 1026629.3173, 'T', 'water', NULL, NULL, 0.999899, '19.1.6', NULL, 160.0, 148.9, 'T', 'H2O', NULL, NULL, NULL, '19.1.6', NULL), +(1815, 1874.0, 344.318, 1137634.905, 'T', 'propane', NULL, NULL, 1.11E-4, '19.1.7', NULL, 160.0, 165.0, 'T', 'C3H8', NULL, NULL, 11.1, '19.1.7', NULL), +(1816, 1875.0, 344.318, 1137634.905, 'T', 'water', NULL, NULL, 0.999889, '19.1.7', NULL, 160.0, 165.0, 'T', 'H2O', NULL, NULL, NULL, '19.1.7', NULL), +(1817, 1876.0, 344.318, 1247261.5413, 'T', 'propane', NULL, NULL, 1.23E-4, '19.1.8', NULL, 160.0, 180.9, 'T', 'C3H8', NULL, NULL, 12.3, '19.1.8', NULL), +(1818, 1877.0, 344.318, 1247261.5413, 'T', 'water', NULL, NULL, 0.999877, '19.1.8', NULL, 160.0, 180.9, 'T', 'H2O', NULL, NULL, NULL, '19.1.8', NULL), +(1819, 1878.0, 298.15, 2269680.0, 'T', 'CO2', 0.99805, NULL, NULL, '20.1.1', NULL, 25.0, 22.4, 'T', 'CO2', NULL, NULL, NULL, '20.1.1', 'Reference 20: temp in Celsius, pressure in atm and amounts in mole fraction '); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1820, 1879.0, 298.15, 2269680.0, 'T', 'water', 0.00195, NULL, NULL, '20.1.1', NULL, 25.0, 22.4, 'T', 'H2O', 0.00195, NULL, NULL, '20.1.1', NULL), +(1821, 1880.0, 298.15, 2978955.0, 'T', 'CO2', 0.99837, NULL, NULL, '20.1.2', NULL, 25.0, 29.4, 'T', 'CO2', NULL, NULL, NULL, '20.1.2', NULL), +(1822, 1881.0, 298.15, 2978955.0, 'T', 'water', 0.00163, NULL, NULL, '20.1.2', NULL, 25.0, 29.4, 'T', 'H2O', 0.00163, NULL, NULL, '20.1.2', NULL), +(1823, 1882.0, 298.15, 2999220.0, 'T', 'CO2', 0.99833, NULL, NULL, '20.1.3', NULL, 25.0, 29.6, 'T', 'CO2', NULL, NULL, NULL, '20.1.3', NULL), +(1824, 1883.0, 298.15, 2999220.0, 'T', 'water', 0.00167, NULL, NULL, '20.1.3', NULL, 25.0, 29.6, 'T', 'H2O', 0.00167, NULL, NULL, '20.1.3', NULL), +(1825, 1884.0, 298.15, 3728760.0, 'T', 'CO2', 0.99855, NULL, NULL, '20.1.4', NULL, 25.0, 36.8, 'T', 'CO2', NULL, NULL, NULL, '20.1.4', NULL), +(1826, 1885.0, 298.15, 3728760.0, 'T', 'water', 0.00145, NULL, NULL, '20.1.4', NULL, 25.0, 36.8, 'T', 'H2O', 0.00145, NULL, NULL, '20.1.4', NULL), +(1827, 1886.0, 298.15, 3738892.5, 'T', 'CO2', 0.99851, NULL, NULL, '20.1.5', NULL, 25.0, 36.9, 'T', 'CO2', NULL, NULL, NULL, '20.1.5', NULL), +(1828, 1887.0, 298.15, 3738892.5, 'T', 'water', 0.00149, NULL, NULL, '20.1.5', NULL, 25.0, 36.9, 'T', 'H2O', 0.00149, NULL, NULL, '20.1.5', NULL), +(1829, 1888.0, 323.15, 1732657.5, 'T', 'CO2', 0.99159, NULL, NULL, '20.1.6', NULL, 50.0, 17.1, 'T', 'CO2', NULL, NULL, NULL, '20.1.6', NULL), +(1830, 1889.0, 323.15, 1732657.5, 'T', 'water', 0.00841, NULL, NULL, '20.1.6', NULL, 50.0, 17.1, 'T', 'H2O', 0.00841, NULL, NULL, '20.1.6', NULL), +(1831, 1890.0, 323.15, 2553390.0, 'T', 'CO2', 0.99405, NULL, NULL, '20.1.7', NULL, 50.0, 25.2, 'T', 'CO2', NULL, NULL, NULL, '20.1.7', NULL), +(1832, 1891.0, 323.15, 2553390.0, 'T', 'water', 0.00595, NULL, NULL, '20.1.7', NULL, 50.0, 25.2, 'T', 'H2O', 0.00595, NULL, NULL, '20.1.7', NULL), +(1833, 1892.0, 323.15, 2583787.5, 'T', 'CO2', 0.99402, NULL, NULL, '20.1.8', NULL, 50.0, 25.5, 'T', 'CO2', NULL, NULL, NULL, '20.1.8', NULL), +(1834, 1893.0, 323.15, 2583787.5, 'T', 'water', 0.00598, NULL, NULL, '20.1.8', NULL, 50.0, 25.5, 'T', 'H2O', 0.00598, NULL, NULL, '20.1.8', NULL), +(1835, 1894.0, 323.15, 3637567.5, 'T', 'CO2', 0.99534, NULL, NULL, '20.1.9', NULL, 50.0, 35.9, 'T', 'CO2', NULL, NULL, NULL, '20.1.9', NULL), +(1836, 1895.0, 323.15, 3637567.5, 'T', 'water', 0.00466, NULL, NULL, '20.1.9', NULL, 50.0, 35.9, 'T', 'H2O', 0.00466, NULL, NULL, '20.1.9', NULL), +(1837, 1896.0, 323.15, 3637567.5, 'T', 'CO2', 0.99537, NULL, NULL, '20.1.10', NULL, 50.0, 35.9, 'T', 'CO2', NULL, NULL, NULL, '20.1.10', NULL), +(1838, 1897.0, 323.15, 3637567.5, 'T', 'water', 0.00463, NULL, NULL, '20.1.10', NULL, 50.0, 35.9, 'T', 'H2O', 0.00463, NULL, NULL, '20.1.10', NULL), +(1839, 1898.0, 323.15, 4630552.5, 'T', 'CO2', 0.99604, NULL, NULL, '20.1.11', NULL, 50.0, 45.7, 'T', 'CO2', NULL, NULL, NULL, '20.1.11', NULL), +(1840, 1899.0, 323.15, 4630552.5, 'T', 'water', 0.00396, NULL, NULL, '20.1.11', NULL, 50.0, 45.7, 'T', 'H2O', 0.00396, NULL, NULL, '20.1.11', NULL), +(1841, 1900.0, 348.15, 2330475.0, 'T', 'CO2', 0.98, NULL, NULL, '20.1.12', NULL, 75.0, 23.0, 'T', 'CO2', NULL, NULL, NULL, '20.1.12', NULL), +(1842, 1901.0, 348.15, 2330475.0, 'T', 'water', 0.02, NULL, NULL, '20.1.12', NULL, 75.0, 23.0, 'T', 'H2O', 0.02, NULL, NULL, '20.1.12', NULL), +(1843, 1902.0, 348.15, 3738892.5, 'T', 'CO2', 0.9875, NULL, NULL, '20.1.13', NULL, 75.0, 36.9, 'T', 'CO2', NULL, NULL, NULL, '20.1.13', NULL), +(1844, 1903.0, 348.15, 3738892.5, 'T', 'water', 0.0125, NULL, NULL, '20.1.13', NULL, 75.0, 36.9, 'T', 'H2O', 0.0125, NULL, NULL, '20.1.13', NULL), +(1845, 1904.0, 348.15, 3749025.0, 'T', 'CO2', 0.9874, NULL, NULL, '20.1.14', NULL, 75.0, 37.0, 'T', 'CO2', NULL, NULL, NULL, '20.1.14', NULL), +(1846, 1905.0, 348.15, 3749025.0, 'T', 'water', 0.0126, NULL, NULL, '20.1.14', NULL, 75.0, 37.0, 'T', 'H2O', 0.0126, NULL, NULL, '20.1.14', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1847, 1906.0, 348.15, 5127045.0, 'T', 'CO2', 0.9896, NULL, NULL, '20.1.15', NULL, 75.0, 50.6, 'T', 'CO2', NULL, NULL, NULL, '20.1.15', NULL), +(1848, 1907.0, 348.15, 5127045.0, 'T', 'water', 0.0104, NULL, NULL, '20.1.15', NULL, 75.0, 50.6, 'T', 'H2O', 0.0104, NULL, NULL, '20.1.15', NULL), +(1849, 1908.0, 348.15, 5147310.0, 'T', 'CO2', 0.9898, NULL, NULL, '20.1.16', NULL, 75.0, 50.8, 'T', 'CO2', NULL, NULL, NULL, '20.1.16', NULL), +(1850, 1909.0, 348.15, 5147310.0, 'T', 'water', 0.0102, NULL, NULL, '20.1.16', NULL, 75.0, 50.8, 'T', 'H2O', 0.0102, NULL, NULL, '20.1.16', NULL), +(1851, 1910.0, 373.15, 3678097.5, 'T', 'CO2', 0.9672, NULL, NULL, '20.1.17', NULL, 100.0, 36.3, 'T', 'CO2', NULL, NULL, NULL, '20.1.17', NULL), +(1852, 1911.0, 373.15, 3678097.5, 'T', 'water', 0.0328, NULL, NULL, '20.1.17', NULL, 100.0, 36.3, 'T', 'H2O', 0.0328, NULL, NULL, '20.1.17', NULL), +(1853, 1912.0, 373.15, 3718627.5, 'T', 'CO2', 0.9677, NULL, NULL, '20.1.18', NULL, 100.0, 36.7, 'T', 'CO2', NULL, NULL, NULL, '20.1.18', NULL), +(1854, 1913.0, 373.15, 3718627.5, 'T', 'water', 0.0323, NULL, NULL, '20.1.18', NULL, 100.0, 36.7, 'T', 'H2O', 0.0323, NULL, NULL, '20.1.18', NULL), +(1855, 1914.0, 373.15, 4478565.0, 'T', 'CO2', 0.9723, NULL, NULL, '20.1.19', NULL, 100.0, 44.2, 'T', 'CO2', NULL, NULL, NULL, '20.1.19', NULL), +(1856, 1915.0, 373.15, 4478565.0, 'T', 'water', 0.0277, NULL, NULL, '20.1.19', NULL, 100.0, 44.2, 'T', 'H2O', 0.0277, NULL, NULL, '20.1.19', NULL), +(1857, 1916.0, 373.15, 4478565.0, 'T', 'CO2', 0.9726, NULL, NULL, '20.1.20', NULL, 100.0, 44.2, 'T', 'CO2', NULL, NULL, NULL, '20.1.20', NULL), +(1858, 1917.0, 373.15, 4478565.0, 'T', 'water', 0.0274, NULL, NULL, '20.1.20', NULL, 100.0, 44.2, 'T', 'H2O', 0.0274, NULL, NULL, '20.1.20', NULL), +(1859, 1918.0, 373.15, 5147310.0, 'T', 'CO2', 0.9752, NULL, NULL, '20.1.21', NULL, 100.0, 50.8, 'T', 'CO2', NULL, NULL, NULL, '20.1.21', NULL), +(1860, 1919.0, 373.15, 5147310.0, 'T', 'water', 0.0248, NULL, NULL, '20.1.21', NULL, 100.0, 50.8, 'T', 'H2O', 0.0248, NULL, NULL, '20.1.21', NULL), +(1861, 1920.0, 373.15, 5147310.0, 'T', 'CO2', 0.9749, NULL, NULL, '20.1.22', NULL, 100.0, 50.8, 'T', 'CO2', NULL, NULL, NULL, '20.1.22', NULL), +(1862, 1921.0, 373.15, 5147310.0, 'T', 'water', 0.0251, NULL, NULL, '20.1.22', NULL, 100.0, 50.8, 'T', 'H2O', 0.0251, NULL, NULL, '20.1.22', NULL), +(1863, 1922.0, 298.15, 2441932.5, 'T', 'ethane', 0.99858, NULL, NULL, '20.1.61', NULL, 25.0, 24.1, 'T', 'C2H6', NULL, NULL, NULL, '20.1.61', NULL), +(1864, 1923.0, 298.15, 2441932.5, 'T', 'water', 0.00142, NULL, NULL, '20.1.61', NULL, 25.0, 24.1, 'T', 'H2O', 0.00142, NULL, NULL, '20.1.61', NULL), +(1865, 1924.0, 298.15, 2968822.5, 'T', 'ethane', 0.99889, NULL, NULL, '20.1.62', NULL, 25.0, 29.3, 'T', 'C2H6', NULL, NULL, NULL, '20.1.62', NULL), +(1866, 1925.0, 298.15, 2968822.5, 'T', 'water', 0.00111, NULL, NULL, '20.1.62', NULL, 25.0, 29.3, 'T', 'H2O', 0.00111, NULL, NULL, '20.1.62', NULL), +(1867, 1926.0, 298.15, 3597037.5, 'T', 'ethane', 0.9991, NULL, NULL, '20.1.63', NULL, 25.0, 35.5, 'T', 'C2H6', NULL, NULL, NULL, '20.1.63', NULL), +(1868, 1927.0, 298.15, 3597037.5, 'T', 'water', 9.0E-4, NULL, NULL, '20.1.63', NULL, 25.0, 35.5, 'T', 'H2O', 9.0E-4, NULL, NULL, '20.1.63', NULL), +(1869, 1928.0, 298.15, 3607170.0, 'T', 'ethane', 0.99907, NULL, NULL, '20.1.64', NULL, 25.0, 35.6, 'T', 'C2H6', NULL, NULL, NULL, '20.1.64', NULL), +(1870, 1929.0, 298.15, 3607170.0, 'T', 'water', 9.3E-4, NULL, NULL, '20.1.64', NULL, 25.0, 35.6, 'T', 'H2O', 9.3E-4, NULL, NULL, '20.1.64', NULL), +(1871, 1930.0, 323.15, 2279812.5, 'T', 'ethane', 0.99437, NULL, NULL, '20.1.65', NULL, 50.0, 22.5, 'T', 'C2H6', NULL, NULL, NULL, '20.1.65', NULL), +(1872, 1931.0, 323.15, 2279812.5, 'T', 'water', 0.00563, NULL, NULL, '20.1.65', NULL, 50.0, 22.5, 'T', 'H2O', 0.00563, NULL, NULL, '20.1.65', NULL), +(1873, 1932.0, 323.15, 2968822.5, 'T', 'ethane', 0.99568, NULL, NULL, '20.1.66', NULL, 50.0, 29.3, 'T', 'C2H6', NULL, NULL, NULL, '20.1.66', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1874, 1933.0, 323.15, 2968822.5, 'T', 'water', 0.00432, NULL, NULL, '20.1.66', NULL, 50.0, 29.3, 'T', 'H2O', 0.00432, NULL, NULL, '20.1.66', NULL), +(1875, 1934.0, 323.15, 2968822.5, 'T', 'ethane', 0.99568, NULL, NULL, '20.1.67', NULL, 50.0, 29.3, 'T', 'C2H6', NULL, NULL, NULL, '20.1.67', NULL), +(1876, 1935.0, 323.15, 2968822.5, 'T', 'water', 0.00432, NULL, NULL, '20.1.67', NULL, 50.0, 29.3, 'T', 'H2O', 0.00432, NULL, NULL, '20.1.67', NULL), +(1877, 1936.0, 323.15, 2968822.5, 'T', 'ethane', 0.99563, NULL, NULL, '20.1.68', NULL, 50.0, 29.3, 'T', 'C2H6', NULL, NULL, NULL, '20.1.68', NULL), +(1878, 1937.0, 323.15, 2968822.5, 'T', 'water', 0.00437, NULL, NULL, '20.1.68', NULL, 50.0, 29.3, 'T', 'H2O', 0.00437, NULL, NULL, '20.1.68', NULL), +(1879, 1938.0, 323.15, 3576772.5, 'T', 'ethane', 0.99646, NULL, NULL, '20.1.69', NULL, 50.0, 35.3, 'T', 'C2H6', NULL, NULL, NULL, '20.1.69', NULL), +(1880, 1939.0, 323.15, 3576772.5, 'T', 'water', 0.00354, NULL, NULL, '20.1.69', NULL, 50.0, 35.3, 'T', 'H2O', 0.00354, NULL, NULL, '20.1.69', NULL), +(1881, 1940.0, 323.15, 3627435.0, 'T', 'ethane', 0.99646, NULL, NULL, '20.1.70', NULL, 50.0, 35.8, 'T', 'C2H6', NULL, NULL, NULL, '20.1.70', NULL), +(1882, 1941.0, 323.15, 3627435.0, 'T', 'water', 0.00354, NULL, NULL, '20.1.70', NULL, 50.0, 35.8, 'T', 'H2O', 0.00354, NULL, NULL, '20.1.70', NULL), +(1883, 1942.0, 348.15, 2330475.0, 'T', 'ethane', 0.9825, NULL, NULL, '20.1.71', NULL, 75.0, 23.0, 'T', 'C2H6', NULL, NULL, NULL, '20.1.71', NULL), +(1884, 1943.0, 348.15, 2330475.0, 'T', 'water', 0.0175, NULL, NULL, '20.1.71', NULL, 75.0, 23.0, 'T', 'H2O', 0.0175, NULL, NULL, '20.1.71', NULL), +(1885, 1944.0, 348.15, 2371005.0, 'T', 'ethane', 0.9831, NULL, NULL, '20.1.72', NULL, 75.0, 23.4, 'T', 'C2H6', NULL, NULL, NULL, '20.1.72', NULL), +(1886, 1945.0, 348.15, 2371005.0, 'T', 'water', 0.0169, NULL, NULL, '20.1.72', NULL, 75.0, 23.4, 'T', 'H2O', 0.0169, NULL, NULL, '20.1.72', NULL), +(1887, 1946.0, 348.15, 3029617.5, 'T', 'ethane', 0.9868, NULL, NULL, '20.1.73', NULL, 75.0, 29.9, 'T', 'C2H6', NULL, NULL, NULL, '20.1.73', NULL), +(1888, 1947.0, 348.15, 3029617.5, 'T', 'water', 0.0132, NULL, NULL, '20.1.73', NULL, 75.0, 29.9, 'T', 'H2O', 0.0132, NULL, NULL, '20.1.73', NULL), +(1889, 1948.0, 348.15, 3627435.0, 'T', 'ethane', 0.9891, NULL, NULL, '20.1.74', NULL, 75.0, 35.8, 'T', 'C2H6', NULL, NULL, NULL, '20.1.74', NULL), +(1890, 1949.0, 348.15, 3627435.0, 'T', 'water', 0.0109, NULL, NULL, '20.1.74', NULL, 75.0, 35.8, 'T', 'H2O', 0.0109, NULL, NULL, '20.1.74', NULL), +(1891, 1950.0, 373.15, 2593920.0, 'T', 'ethane', 0.9586, NULL, NULL, '20.1.75', NULL, 100.0, 25.6, 'T', 'C2H6', NULL, NULL, NULL, '20.1.75', NULL), +(1892, 1951.0, 373.15, 2593920.0, 'T', 'water', 0.0414, NULL, NULL, '20.1.75', NULL, 100.0, 25.6, 'T', 'H2O', 0.0414, NULL, NULL, '20.1.75', NULL), +(1893, 1952.0, 373.15, 2928292.5, 'T', 'ethane', 0.9633, NULL, NULL, '20.1.76', NULL, 100.0, 28.9, 'T', 'C2H6', NULL, NULL, NULL, '20.1.76', NULL), +(1894, 1953.0, 373.15, 2928292.5, 'T', 'water', 0.0367, NULL, NULL, '20.1.76', NULL, 100.0, 28.9, 'T', 'H2O', 0.0367, NULL, NULL, '20.1.76', NULL), +(1895, 1954.0, 373.15, 2989087.5, 'T', 'ethane', 0.964, NULL, NULL, '20.1.77', NULL, 100.0, 29.5, 'T', 'C2H6', NULL, NULL, NULL, '20.1.77', NULL), +(1896, 1955.0, 373.15, 2989087.5, 'T', 'water', 0.036, NULL, NULL, '20.1.77', NULL, 100.0, 29.5, 'T', 'H2O', 0.036, NULL, NULL, '20.1.77', NULL), +(1897, 1956.0, 373.15, 3637567.5, 'T', 'ethane', 0.9704, NULL, NULL, '20.1.78', NULL, 100.0, 35.9, 'T', 'C2H6', NULL, NULL, NULL, '20.1.78', NULL), +(1898, 1957.0, 373.15, 3637567.5, 'T', 'water', 0.0296, NULL, NULL, '20.1.78', NULL, 100.0, 35.9, 'T', 'H2O', 0.0296, NULL, NULL, '20.1.78', NULL), +(1899, 1958.0, 311.0136, 3503915.5074, 'T', 'ethane', 0.998044, NULL, NULL, '21.3.1', NULL, 100.1, 508.2, 'T', 'C2H6', NULL, NULL, NULL, '21.3.1', 'Reference 21: temp in F, pressure in psia, mole fraction x10^3'); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1900, 1959.0, 311.0136, 3503915.5074, 'T', 'water', 0.001956, NULL, NULL, '21.3.1', NULL, 100.1, 508.2, 'T', 'H2O', 1.956, NULL, NULL, '21.3.1', NULL), +(1901, 1960.0, 310.9024, 3424625.8019, 'T', 'ethane', 0.998183, NULL, NULL, '21.3.2', NULL, 99.9, 496.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.2', NULL), +(1902, 1961.0, 310.9024, 3424625.8019, 'T', 'water', 0.001817, NULL, NULL, '21.3.2', NULL, 99.9, 496.7, 'T', 'H2O', 1.817, NULL, NULL, '21.3.2', NULL), +(1903, 1962.0, 310.9024, 6320423.7419, 'T', 'ethane', 0.999334, NULL, NULL, '21.3.3', NULL, 99.9, 916.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.3', NULL), +(1904, 1963.0, 310.9024, 6320423.7419, 'T', 'water', 6.66E-4, NULL, NULL, '21.3.3', NULL, 99.9, 916.7, 'T', 'H2O', 0.666, NULL, NULL, '21.3.3', NULL), +(1905, 1964.0, 310.9024, 6920267.6009, 'T', 'ethane', 0.999398, NULL, NULL, '21.3.4', NULL, 99.9, 1003.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.4', NULL), +(1906, 1965.0, 310.9024, 6920267.6009, 'T', 'water', 6.02E-4, NULL, NULL, '21.3.4', NULL, 99.9, 1003.7, 'T', 'H2O', 0.602, NULL, NULL, '21.3.4', NULL), +(1907, 1966.0, 310.9024, 1.04262515354E7, 'T', 'ethane', 0.999457, NULL, NULL, '21.3.5', NULL, 99.9, 1512.2, 'T', 'C2H6', NULL, NULL, NULL, '21.3.5', NULL), +(1908, 1967.0, 310.9024, 1.04262515354E7, 'T', 'water', 5.43E-4, NULL, NULL, '21.3.5', NULL, 99.9, 1512.2, 'T', 'H2O', 0.543, NULL, NULL, '21.3.5', NULL), +(1909, 1968.0, 310.9024, 1.37929613785E7, 'T', 'ethane', 0.999484, NULL, NULL, '21.3.6', NULL, 99.9, 2000.5, 'T', 'C2H6', NULL, NULL, NULL, '21.3.6', NULL), +(1910, 1969.0, 310.9024, 1.37929613785E7, 'T', 'water', 5.16E-4, NULL, NULL, '21.3.6', NULL, 99.9, 2000.5, 'T', 'H2O', 0.516, NULL, NULL, '21.3.6', NULL), +(1911, 1970.0, 310.9024, 2.07856239279E7, 'T', 'ethane', 0.9995, NULL, NULL, '21.3.7', NULL, 99.9, 3014.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.7', NULL), +(1912, 1971.0, 310.9024, 2.07856239279E7, 'T', 'water', 5.0E-4, NULL, NULL, '21.3.7', NULL, 99.9, 3014.7, 'T', 'H2O', 0.5, NULL, NULL, '21.3.7', NULL), +(1913, 1972.0, 310.9024, 2.77010651989E7, 'T', 'ethane', 0.999469, NULL, NULL, '21.3.8', NULL, 99.9, 4017.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.8', NULL), +(1914, 1973.0, 310.9024, 2.77010651989E7, 'T', 'water', 5.31E-4, NULL, NULL, '21.3.8', NULL, 99.9, 4017.7, 'T', 'H2O', 0.531, NULL, NULL, '21.3.8', NULL), +(1915, 1974.0, 310.9024, 3.46647697689E7, 'T', 'ethane', 0.999538, NULL, NULL, '21.3.9', NULL, 99.9, 5027.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.9', NULL), +(1916, 1975.0, 310.9024, 3.46647697689E7, 'T', 'water', 4.62E-4, NULL, NULL, '21.3.9', NULL, 99.9, 5027.7, 'T', 'H2O', 0.462, NULL, NULL, '21.3.9', NULL), +(1917, 1976.0, 344.3736, 3479783.8579, 'T', 'ethane', 0.990101, NULL, NULL, '21.3.10', NULL, 160.1, 504.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.10', NULL), +(1918, 1977.0, 344.3736, 3479783.8579, 'T', 'water', 0.009899, NULL, NULL, '21.3.10', NULL, 160.1, 504.7, 'T', 'H2O', 9.899, NULL, NULL, '21.3.10', NULL), +(1919, 1978.0, 344.318, 6885793.8159, 'T', 'ethane', 0.995301, NULL, NULL, '21.3.11', NULL, 160.0, 998.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.11', NULL), +(1920, 1979.0, 344.318, 6885793.8159, 'T', 'water', 0.004699, NULL, NULL, '21.3.11', NULL, 160.0, 998.7, 'T', 'H2O', 4.699, NULL, NULL, '21.3.11', NULL), +(1921, 1980.0, 344.3736, 1.03538565869E7, 'T', 'ethane', 0.996981, NULL, NULL, '21.3.12', NULL, 160.1, 1501.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.12', NULL), +(1922, 1981.0, 344.3736, 1.03538565869E7, 'T', 'water', 0.003019, NULL, NULL, '21.3.12', NULL, 160.1, 1501.7, 'T', 'H2O', 3.019, NULL, NULL, '21.3.12', NULL), +(1923, 1982.0, 344.3736, 1.40080777969E7, 'T', 'ethane', 0.997283, NULL, NULL, '21.3.13', NULL, 160.1, 2031.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.13', NULL), +(1924, 1983.0, 344.3736, 1.40080777969E7, 'T', 'water', 0.002717, NULL, NULL, '21.3.13', NULL, 160.1, 2031.7, 'T', 'H2O', 2.717, NULL, NULL, '21.3.13', NULL), +(1925, 1984.0, 344.4292, 2.07787291709E7, 'T', 'ethane', 0.997632, NULL, NULL, '21.3.14', NULL, 160.2, 3013.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.14', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1926, 1985.0, 344.4292, 2.07787291709E7, 'T', 'water', 0.002368, NULL, NULL, '21.3.14', NULL, 160.2, 3013.7, 'T', 'H2O', 2.368, NULL, NULL, '21.3.14', NULL), +(1927, 1986.0, 344.3736, 2.77700127689E7, 'T', 'ethane', 0.997759, NULL, NULL, '21.3.15', NULL, 160.1, 4027.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.15', NULL), +(1928, 1987.0, 344.3736, 2.77700127689E7, 'T', 'water', 0.002241, NULL, NULL, '21.3.15', NULL, 160.1, 4027.7, 'T', 'H2O', 2.241, NULL, NULL, '21.3.15', NULL), +(1929, 1988.0, 344.3736, 3.45406641429E7, 'T', 'ethane', 0.997968, NULL, NULL, '21.3.16', NULL, 160.1, 5009.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.16', NULL), +(1930, 1989.0, 344.3736, 3.45406641429E7, 'T', 'water', 0.002032, NULL, NULL, '21.3.16', NULL, 160.1, 5009.7, 'T', 'H2O', 2.032, NULL, NULL, '21.3.16', NULL), +(1931, 1990.0, 377.678, 1.04055672644E7, 'T', 'ethane', 0.98784, NULL, NULL, '21.3.17', NULL, 220.0, 1509.2, 'T', 'C2H6', NULL, NULL, NULL, '21.3.17', NULL), +(1932, 1991.0, 377.678, 1.04055672644E7, 'T', 'water', 0.01216, NULL, NULL, '21.3.17', NULL, 220.0, 1509.2, 'T', 'H2O', 12.16, NULL, NULL, '21.3.17', NULL), +(1933, 1992.0, 377.7336, 1.38219193579E7, 'T', 'ethane', 0.98952, NULL, NULL, '21.3.18', NULL, 220.1, 2004.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.18', NULL), +(1934, 1993.0, 377.7336, 1.38219193579E7, 'T', 'water', 0.01048, NULL, NULL, '21.3.18', NULL, 220.1, 2004.7, 'T', 'H2O', 10.48, NULL, NULL, '21.3.18', NULL), +(1935, 1994.0, 377.7336, 2.07511501429E7, 'T', 'ethane', 0.991637, NULL, NULL, '21.3.19', NULL, 220.1, 3009.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.19', NULL), +(1936, 1995.0, 377.7336, 2.07511501429E7, 'T', 'water', 0.008363, NULL, NULL, '21.3.19', NULL, 220.1, 3009.7, 'T', 'H2O', 8.363, NULL, NULL, '21.3.19', NULL), +(1937, 1996.0, 377.7892, 2.78527498529E7, 'T', 'ethane', 0.992774, NULL, NULL, '21.3.20', NULL, 220.2, 4039.7, 'T', 'C2H6', NULL, NULL, NULL, '21.3.20', NULL), +(1938, 1997.0, 377.7892, 2.78527498529E7, 'T', 'water', 0.007226, NULL, NULL, '21.3.20', NULL, 220.2, 4039.7, 'T', 'H2O', 7.226, NULL, NULL, '21.3.20', NULL), +(1939, 1998.0, 473.15, 2.0E7, 'T', 'ethane', 0.12, NULL, 0.005, '22.1.1', NULL, 200.0, 200.0, 'T', 'C2H6', NULL, NULL, 0.5, '22.1.1', 'Reference 22: temp in Celsius, pressure in bar and concentration in Mol%'), +(1940, 1999.0, 473.15, 2.0E7, 'T', 'water', 0.88, NULL, 0.995, '22.1.1', NULL, 200.0, 200.0, 'T', 'H2O', 88.0, NULL, NULL, '22.1.1', NULL), +(1941, 2000.0, 473.15, 5.0E7, 'T', 'ethane', 0.07, NULL, 0.005, '22.1.2', NULL, 200.0, 500.0, 'T', 'C2H6', NULL, NULL, 0.5, '22.1.2', NULL), +(1942, 2001.0, 473.15, 5.0E7, 'T', 'water', 0.93, NULL, 0.995, '22.1.2', NULL, 200.0, 500.0, 'T', 'H2O', 93.0, NULL, NULL, '22.1.2', NULL), +(1943, 2002.0, 473.15, 1.0E8, 'T', 'ethane', 0.07, NULL, 0.005, '22.1.3', NULL, 200.0, 1000.0, 'T', 'C2H6', NULL, NULL, 0.5, '22.1.3', NULL), +(1944, 2003.0, 473.15, 1.0E8, 'T', 'water', 0.93, NULL, 0.995, '22.1.3', NULL, 200.0, 1000.0, 'T', 'H2O', 93.0, NULL, NULL, '22.1.3', NULL), +(1945, 2004.0, 473.15, 1.5E8, 'T', 'ethane', 0.07, NULL, 0.005, '22.1.4', NULL, 200.0, 1500.0, 'T', 'C2H6', NULL, NULL, 0.5, '22.1.4', NULL), +(1946, 2005.0, 473.15, 1.5E8, 'T', 'water', 0.93, NULL, 0.995, '22.1.4', NULL, 200.0, 1500.0, 'T', 'H2O', 93.0, NULL, NULL, '22.1.4', NULL), +(1947, 2006.0, 473.15, 2.0E8, 'T', 'ethane', 0.07, NULL, 0.005, '22.1.5', NULL, 200.0, 2000.0, 'T', 'C2H6', NULL, NULL, 0.5, '22.1.5', NULL), +(1948, 2007.0, 473.15, 2.0E8, 'T', 'water', 0.93, NULL, 0.995, '22.1.5', NULL, 200.0, 2000.0, 'T', 'H2O', 93.0, NULL, NULL, '22.1.5', NULL), +(1949, 2008.0, 473.15, 2.5E8, 'T', 'ethane', 0.07, NULL, 0.005, '22.1.6', NULL, 200.0, 2500.0, 'T', 'C2H6', NULL, NULL, 0.5, '22.1.6', NULL), +(1950, 2009.0, 473.15, 2.5E8, 'T', 'water', 0.93, NULL, 0.995, '22.1.6', NULL, 200.0, 2500.0, 'T', 'H2O', 93.0, NULL, NULL, '22.1.6', NULL), +(1951, 2010.0, 473.15, 3.0E8, 'T', 'ethane', 0.07, NULL, 0.005, '22.1.7', NULL, 200.0, 3000.0, 'T', 'C2H6', NULL, NULL, 0.5, '22.1.7', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1952, 2011.0, 473.15, 3.0E8, 'T', 'water', 0.93, NULL, 0.995, '22.1.7', NULL, 200.0, 3000.0, 'T', 'H2O', 93.0, NULL, NULL, '22.1.7', NULL), +(1953, 2012.0, 473.15, 3.5E8, 'T', 'ethane', 0.07, NULL, 0.005, '22.1.8', NULL, 200.0, 3500.0, 'T', 'C2H6', NULL, NULL, 0.5, '22.1.8', NULL), +(1954, 2013.0, 473.15, 3.5E8, 'T', 'water', 0.93, NULL, 0.995, '22.1.8', NULL, 200.0, 3500.0, 'T', 'H2O', 93.0, NULL, NULL, '22.1.8', NULL), +(1955, 2014.0, 523.15, 2.0E7, 'T', 'ethane', 0.31, NULL, 0.007, '22.1.9', NULL, 250.0, 200.0, 'T', 'C2H6', NULL, NULL, 0.7, '22.1.9', NULL), +(1956, 2015.0, 523.15, 2.0E7, 'T', 'water', 0.69, NULL, 0.993, '22.1.9', NULL, 250.0, 200.0, 'T', 'H2O', 69.0, NULL, NULL, '22.1.9', NULL), +(1957, 2016.0, 523.15, 5.0E7, 'T', 'ethane', 0.219, NULL, 0.01, '22.1.10', NULL, 250.0, 500.0, 'T', 'C2H6', NULL, NULL, 1.0, '22.1.10', NULL), +(1958, 2017.0, 523.15, 5.0E7, 'T', 'water', 0.781, NULL, 0.99, '22.1.10', NULL, 250.0, 500.0, 'T', 'H2O', 78.1, NULL, NULL, '22.1.10', NULL), +(1959, 2018.0, 523.15, 1.0E8, 'T', 'ethane', 0.15, NULL, 0.0125, '22.1.11', NULL, 250.0, 1000.0, 'T', 'C2H6', NULL, NULL, 1.25, '22.1.11', NULL), +(1960, 2019.0, 523.15, 1.0E8, 'T', 'water', 0.85, NULL, 0.9875, '22.1.11', NULL, 250.0, 1000.0, 'T', 'H2O', 85.0, NULL, NULL, '22.1.11', NULL), +(1961, 2020.0, 523.15, 1.5E8, 'T', 'ethane', 0.115, NULL, 0.015, '22.1.12', NULL, 250.0, 1500.0, 'T', 'C2H6', NULL, NULL, 1.5, '22.1.12', NULL), +(1962, 2021.0, 523.15, 1.5E8, 'T', 'water', 0.885, NULL, 0.985, '22.1.12', NULL, 250.0, 1500.0, 'T', 'H2O', 88.5, NULL, NULL, '22.1.12', NULL), +(1963, 2022.0, 523.15, 2.0E8, 'T', 'ethane', 0.098, NULL, 0.0175, '22.1.13', NULL, 250.0, 2000.0, 'T', 'C2H6', NULL, NULL, 1.75, '22.1.13', NULL), +(1964, 2023.0, 523.15, 2.0E8, 'T', 'water', 0.902, NULL, 0.9825, '22.1.13', NULL, 250.0, 2000.0, 'T', 'H2O', 90.2, NULL, NULL, '22.1.13', NULL), +(1965, 2024.0, 523.15, 2.5E8, 'T', 'ethane', 0.098, NULL, 0.02, '22.1.14', NULL, 250.0, 2500.0, 'T', 'C2H6', NULL, NULL, 2.0, '22.1.14', NULL), +(1966, 2025.0, 523.15, 2.5E8, 'T', 'water', 0.902, NULL, 0.98, '22.1.14', NULL, 250.0, 2500.0, 'T', 'H2O', 90.2, NULL, NULL, '22.1.14', NULL), +(1967, 2026.0, 523.15, 3.0E8, 'T', 'ethane', 0.098, NULL, 0.0225, '22.1.15', NULL, 250.0, 3000.0, 'T', 'C2H6', NULL, NULL, 2.25, '22.1.15', NULL), +(1968, 2027.0, 523.15, 3.0E8, 'T', 'water', 0.902, NULL, 0.9775, '22.1.15', NULL, 250.0, 3000.0, 'T', 'H2O', 90.2, NULL, NULL, '22.1.15', NULL), +(1969, 2028.0, 523.15, 3.5E8, 'T', 'ethane', 0.098, NULL, 0.025, '22.1.16', NULL, 250.0, 3500.0, 'T', 'C2H6', NULL, NULL, 2.5, '22.1.16', NULL), +(1970, 2029.0, 523.15, 3.5E8, 'T', 'water', 0.902, NULL, 0.975, '22.1.16', NULL, 250.0, 3500.0, 'T', 'H2O', 90.2, NULL, NULL, '22.1.16', NULL), +(1971, 2030.0, 573.15, 2.0E7, 'T', 'ethane', 0.546, NULL, 0.01, '22.1.17', NULL, 300.0, 200.0, 'T', 'C2H6', NULL, NULL, 1.0, '22.1.17', NULL), +(1972, 2031.0, 573.15, 2.0E7, 'T', 'water', 0.454, NULL, 0.99, '22.1.17', NULL, 300.0, 200.0, 'T', 'H2O', 45.4, NULL, NULL, '22.1.17', NULL), +(1973, 2032.0, 573.15, 5.0E7, 'T', 'ethane', 0.413, NULL, 0.02, '22.1.18', NULL, 300.0, 500.0, 'T', 'C2H6', NULL, NULL, 2.0, '22.1.18', NULL), +(1974, 2033.0, 573.15, 5.0E7, 'T', 'water', 0.587, NULL, 0.98, '22.1.18', NULL, 300.0, 500.0, 'T', 'H2O', 58.7, NULL, NULL, '22.1.18', NULL), +(1975, 2034.0, 573.15, 1.0E8, 'T', 'ethane', 0.266, NULL, 0.024, '22.1.19', NULL, 300.0, 1000.0, 'T', 'C2H6', NULL, NULL, 2.4, '22.1.19', NULL), +(1976, 2035.0, 573.15, 1.0E8, 'T', 'water', 0.734, NULL, 0.976, '22.1.19', NULL, 300.0, 1000.0, 'T', 'H2O', 73.4, NULL, NULL, '22.1.19', NULL), +(1977, 2036.0, 573.15, 1.5E8, 'T', 'ethane', 0.172, NULL, 0.028, '22.1.20', NULL, 300.0, 1500.0, 'T', 'C2H6', NULL, NULL, 2.8, '22.1.20', NULL), +(1978, 2037.0, 573.15, 1.5E8, 'T', 'water', 0.828, NULL, 0.972, '22.1.20', NULL, 300.0, 1500.0, 'T', 'H2O', 82.8, NULL, NULL, '22.1.20', NULL), +(1979, 2038.0, 573.15, 2.0E8, 'T', 'ethane', 0.145, NULL, 0.032, '22.1.21', NULL, 300.0, 2000.0, 'T', 'C2H6', NULL, NULL, 3.2, '22.1.21', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(1980, 2039.0, 573.15, 2.0E8, 'T', 'water', 0.855, NULL, 0.968, '22.1.21', NULL, 300.0, 2000.0, 'T', 'H2O', 85.5, NULL, NULL, '22.1.21', NULL), +(1981, 2040.0, 573.15, 2.5E8, 'T', 'ethane', 0.145, NULL, 0.035, '22.1.22', NULL, 300.0, 2500.0, 'T', 'C2H6', NULL, NULL, 3.5, '22.1.22', NULL), +(1982, 2041.0, 573.15, 2.5E8, 'T', 'water', 0.855, NULL, 0.965, '22.1.22', NULL, 300.0, 2500.0, 'T', 'H2O', 85.5, NULL, NULL, '22.1.22', NULL), +(1983, 2042.0, 573.15, 3.0E8, 'T', 'ethane', 0.145, NULL, 0.038, '22.1.23', NULL, 300.0, 3000.0, 'T', 'C2H6', NULL, NULL, 3.8, '22.1.23', NULL), +(1984, 2043.0, 573.15, 3.0E8, 'T', 'water', 0.855, NULL, 0.962, '22.1.23', NULL, 300.0, 3000.0, 'T', 'H2O', 85.5, NULL, NULL, '22.1.23', NULL), +(1985, 2044.0, 573.15, 3.5E8, 'T', 'ethane', 0.145, NULL, 0.041, '22.1.24', NULL, 300.0, 3500.0, 'T', 'C2H6', NULL, NULL, 4.1, '22.1.24', NULL), +(1986, 2045.0, 573.15, 3.5E8, 'T', 'water', 0.855, NULL, 0.959, '22.1.24', NULL, 300.0, 3500.0, 'T', 'H2O', 85.5, NULL, NULL, '22.1.24', NULL), +(1987, 2046.0, 623.15, 2.0E7, 'T', 'ethane', 0.85, NULL, 0.009, '22.1.25', NULL, 350.0, 200.0, 'T', 'C2H6', NULL, NULL, 0.9, '22.1.25', NULL), +(1988, 2047.0, 623.15, 2.0E7, 'T', 'water', 0.15, NULL, 0.991, '22.1.25', NULL, 350.0, 200.0, 'T', 'H2O', 15.0, NULL, NULL, '22.1.25', NULL), +(1989, 2048.0, 623.15, 3.0E7, 'T', 'ethane', 0.77, NULL, 0.035, '22.1.26', NULL, 350.0, 300.0, 'T', 'C2H6', NULL, NULL, 3.5, '22.1.26', NULL), +(1990, 2049.0, 623.15, 3.0E7, 'T', 'water', 0.23, NULL, 0.965, '22.1.26', NULL, 350.0, 300.0, 'T', 'H2O', 23.0, NULL, NULL, '22.1.26', NULL), +(1991, 2050.0, 623.15, 4.0E7, 'T', 'ethane', 0.725, NULL, 0.065, '22.1.27', NULL, 350.0, 400.0, 'T', 'C2H6', NULL, NULL, 6.5, '22.1.27', NULL), +(1992, 2051.0, 623.15, 4.0E7, 'T', 'water', 0.275, NULL, 0.935, '22.1.27', NULL, 350.0, 400.0, 'T', 'H2O', 27.5, NULL, NULL, '22.1.27', NULL), +(1993, 2052.0, 623.15, 5.0E7, 'T', 'ethane', 0.698, NULL, 0.099, '22.1.28', NULL, 350.0, 500.0, 'T', 'C2H6', NULL, NULL, 9.9, '22.1.28', NULL), +(1994, 2053.0, 623.15, 5.0E7, 'T', 'water', 0.302, NULL, 0.901, '22.1.28', NULL, 350.0, 500.0, 'T', 'H2O', 30.2, NULL, NULL, '22.1.28', NULL), +(1995, 2054.0, 623.15, 6.0E7, 'T', 'ethane', 0.695, NULL, 0.143, '22.1.29', NULL, 350.0, 600.0, 'T', 'C2H6', NULL, NULL, 14.3, '22.1.29', NULL), +(1996, 2055.0, 623.15, 6.0E7, 'T', 'water', 0.305, NULL, 0.857, '22.1.29', NULL, 350.0, 600.0, 'T', 'H2O', 30.5, NULL, NULL, '22.1.29', NULL), +(1997, 2056.0, 623.15, 6.8E7, 'T', 'ethane', 0.775, NULL, 0.225, '22.1.30', NULL, 350.0, 680.0, 'T', 'C2H6', NULL, NULL, 22.5, '22.1.30', 'CRITICAL POINT'), +(1998, 2057.0, 623.15, 6.8E7, 'T', 'water', 0.225, NULL, 0.775, '22.1.30', NULL, 350.0, 680.0, 'T', 'H2O', 22.5, NULL, NULL, '22.1.30', NULL), +(1999, 2058.0, 623.15, 7.6E7, 'T', 'ethane', 0.76, NULL, 0.24, '22.1.31', NULL, 350.0, 760.0, 'T', 'C2H6', NULL, NULL, 24.0, '22.1.31', 'CRITICAL POINT'), +(2000, 2059.0, 623.15, 7.6E7, 'T', 'water', 0.24, NULL, 0.76, '22.1.31', NULL, 350.0, 760.0, 'T', 'H2O', 24.0, NULL, NULL, '22.1.31', NULL), +(2001, 2060.0, 623.15, 8.0E7, 'T', 'ethane', 0.68, NULL, 0.125, '22.1.32', NULL, 350.0, 800.0, 'T', 'C2H6', NULL, NULL, 12.5, '22.1.32', NULL), +(2002, 2061.0, 623.15, 8.0E7, 'T', 'water', 0.32, NULL, 0.875, '22.1.32', NULL, 350.0, 800.0, 'T', 'H2O', 32.0, NULL, NULL, '22.1.32', NULL), +(2003, 2062.0, 623.15, 9.0E7, 'T', 'ethane', 0.577, NULL, 0.097, '22.1.33', NULL, 350.0, 900.0, 'T', 'C2H6', NULL, NULL, 9.7, '22.1.33', NULL), +(2004, 2063.0, 623.15, 9.0E7, 'T', 'water', 0.423, NULL, 0.903, '22.1.33', NULL, 350.0, 900.0, 'T', 'H2O', 42.3, NULL, NULL, '22.1.33', NULL), +(2005, 2064.0, 623.15, 1.0E8, 'T', 'ethane', 0.511, NULL, 0.085, '22.1.34', NULL, 350.0, 1000.0, 'T', 'C2H6', NULL, NULL, 8.5, '22.1.34', NULL), +(2006, 2065.0, 623.15, 1.0E8, 'T', 'water', 0.489, NULL, 0.915, '22.1.34', NULL, 350.0, 1000.0, 'T', 'H2O', 48.9, NULL, NULL, '22.1.34', NULL), +(2007, 2066.0, 623.15, 1.5E8, 'T', 'ethane', 0.322, NULL, 0.075, '22.1.35', NULL, 350.0, 1500.0, 'T', 'C2H6', NULL, NULL, 7.5, '22.1.35', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2008, 2067.0, 623.15, 1.5E8, 'T', 'water', 0.678, NULL, 0.925, '22.1.35', NULL, 350.0, 1500.0, 'T', 'H2O', 67.8, NULL, NULL, '22.1.35', NULL), +(2009, 2068.0, 623.15, 2.0E8, 'T', 'ethane', 0.262, NULL, 0.073, '22.1.36', NULL, 350.0, 2000.0, 'T', 'C2H6', NULL, NULL, 7.3, '22.1.36', NULL), +(2010, 2069.0, 623.15, 2.0E8, 'T', 'water', 0.738, NULL, 0.927, '22.1.36', NULL, 350.0, 2000.0, 'T', 'H2O', 73.8, NULL, NULL, '22.1.36', NULL), +(2011, 2070.0, 623.15, 2.5E8, 'T', 'ethane', 0.244, NULL, 0.072, '22.1.37', NULL, 350.0, 2500.0, 'T', 'C2H6', NULL, NULL, 7.2, '22.1.37', NULL), +(2012, 2071.0, 623.15, 2.5E8, 'T', 'water', 0.756, NULL, 0.928, '22.1.37', NULL, 350.0, 2500.0, 'T', 'H2O', 75.6, NULL, NULL, '22.1.37', NULL), +(2013, 2072.0, 623.15, 3.0E8, 'T', 'ethane', 0.24, NULL, 0.071, '22.1.38', NULL, 350.0, 3000.0, 'T', 'C2H6', NULL, NULL, 7.1, '22.1.38', NULL), +(2014, 2073.0, 623.15, 3.0E8, 'T', 'water', 0.76, NULL, 0.929, '22.1.38', NULL, 350.0, 3000.0, 'T', 'H2O', 76.0, NULL, NULL, '22.1.38', NULL), +(2015, 2074.0, 623.15, 3.5E8, 'T', 'ethane', 0.24, NULL, 0.07, '22.1.39', NULL, 350.0, 3500.0, 'T', 'C2H6', NULL, NULL, 7.0, '22.1.39', NULL), +(2016, 2075.0, 623.15, 3.5E8, 'T', 'water', 0.76, NULL, 0.93, '22.1.39', NULL, 350.0, 3500.0, 'T', 'H2O', 76.0, NULL, NULL, '22.1.39', NULL), +(2017, 2076.0, 629.15, 2.0E7, 'T', 'ethane', 0.865, NULL, 0.009, '22.1.40', NULL, 356.0, 200.0, 'T', 'C2H6', NULL, NULL, 0.9, '22.1.40', NULL), +(2018, 2077.0, 629.15, 2.0E7, 'T', 'water', 0.135, NULL, 0.991, '22.1.40', NULL, 356.0, 200.0, 'T', 'H2O', 13.5, NULL, NULL, '22.1.40', NULL), +(2019, 2078.0, 629.15, 3.0E7, 'T', 'ethane', 0.79, NULL, 0.037, '22.1.41', NULL, 356.0, 300.0, 'T', 'C2H6', NULL, NULL, 3.7, '22.1.41', NULL), +(2020, 2079.0, 629.15, 3.0E7, 'T', 'water', 0.21, NULL, 0.963, '22.1.41', NULL, 356.0, 300.0, 'T', 'H2O', 21.0, NULL, NULL, '22.1.41', NULL), +(2021, 2080.0, 629.15, 4.0E7, 'T', 'ethane', 0.773, NULL, 0.08, '22.1.42', NULL, 356.0, 400.0, 'T', 'C2H6', NULL, NULL, 8.0, '22.1.42', NULL), +(2022, 2081.0, 629.15, 4.0E7, 'T', 'water', 0.227, NULL, 0.92, '22.1.42', NULL, 356.0, 400.0, 'T', 'H2O', 22.7, NULL, NULL, '22.1.42', NULL), +(2023, 2082.0, 629.15, 5.0E7, 'T', 'ethane', 0.825, NULL, 0.175, '22.1.43', NULL, 356.0, 500.0, 'T', 'C2H6', NULL, NULL, 17.5, '22.1.43', 'CRITICAL POINT'), +(2024, 2083.0, 629.15, 5.0E7, 'T', 'water', 0.175, NULL, 0.825, '22.1.43', NULL, 356.0, 500.0, 'T', 'H2O', 17.5, NULL, NULL, '22.1.43', NULL), +(2025, 2084.0, 629.15, 1.205E8, 'T', 'ethane', 0.705, NULL, 0.295, '22.1.44', NULL, 356.0, 1205.0, 'T', 'C2H6', NULL, NULL, 29.5, '22.1.44', 'CRITICAL POINT'), +(2026, 2085.0, 629.15, 1.205E8, 'T', 'water', 0.295, NULL, 0.705, '22.1.44', NULL, 356.0, 1205.0, 'T', 'H2O', 29.5, NULL, NULL, '22.1.44', NULL), +(2027, 2086.0, 629.15, 1.3E8, 'T', 'ethane', 0.458, NULL, 0.117, '22.1.45', NULL, 356.0, 1300.0, 'T', 'C2H6', NULL, NULL, 11.7, '22.1.45', NULL), +(2028, 2087.0, 629.15, 1.3E8, 'T', 'water', 0.542, NULL, 0.883, '22.1.45', NULL, 356.0, 1300.0, 'T', 'H2O', 54.2, NULL, NULL, '22.1.45', NULL), +(2029, 2088.0, 629.15, 1.4E8, 'T', 'ethane', 0.408, NULL, 0.106, '22.1.46', NULL, 356.0, 1400.0, 'T', 'C2H6', NULL, NULL, 10.6, '22.1.46', NULL), +(2030, 2089.0, 629.15, 1.4E8, 'T', 'water', 0.592, NULL, 0.894, '22.1.46', NULL, 356.0, 1400.0, 'T', 'H2O', 59.2, NULL, NULL, '22.1.46', NULL), +(2031, 2090.0, 629.15, 1.5E8, 'T', 'ethane', 0.375, NULL, 0.104, '22.1.47', NULL, 356.0, 1500.0, 'T', 'C2H6', NULL, NULL, 10.4, '22.1.47', NULL), +(2032, 2091.0, 629.15, 1.5E8, 'T', 'water', 0.625, NULL, 0.896, '22.1.47', NULL, 356.0, 1500.0, 'T', 'H2O', 62.5, NULL, NULL, '22.1.47', NULL), +(2033, 2092.0, 629.15, 2.0E8, 'T', 'ethane', 0.296, NULL, 0.097, '22.1.48', NULL, 356.0, 2000.0, 'T', 'C2H6', NULL, NULL, 9.7, '22.1.48', NULL), +(2034, 2093.0, 629.15, 2.0E8, 'T', 'water', 0.704, NULL, 0.903, '22.1.48', NULL, 356.0, 2000.0, 'T', 'H2O', 70.4, NULL, NULL, '22.1.48', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2035, 2094.0, 629.15, 2.5E8, 'T', 'ethane', 0.27, NULL, 0.09, '22.1.49', NULL, 356.0, 2500.0, 'T', 'C2H6', NULL, NULL, 9.0, '22.1.49', NULL), +(2036, 2095.0, 629.15, 2.5E8, 'T', 'water', 0.73, NULL, 0.91, '22.1.49', NULL, 356.0, 2500.0, 'T', 'H2O', 73.0, NULL, NULL, '22.1.49', NULL), +(2037, 2096.0, 629.15, 3.0E8, 'T', 'ethane', 0.26, NULL, 0.087, '22.1.50', NULL, 356.0, 3000.0, 'T', 'C2H6', NULL, NULL, 8.7, '22.1.50', NULL), +(2038, 2097.0, 629.15, 3.0E8, 'T', 'water', 0.74, NULL, 0.913, '22.1.50', NULL, 356.0, 3000.0, 'T', 'H2O', 74.0, NULL, NULL, '22.1.50', NULL), +(2039, 2098.0, 629.15, 3.5E8, 'T', 'ethane', 0.26, NULL, 0.083, '22.1.51', NULL, 356.0, 3500.0, 'T', 'C2H6', NULL, NULL, 8.3, '22.1.51', NULL), +(2040, 2099.0, 629.15, 3.5E8, 'T', 'water', 0.74, NULL, 0.917, '22.1.51', NULL, 356.0, 3500.0, 'T', 'H2O', 74.0, NULL, NULL, '22.1.51', NULL), +(2041, 2100.0, 643.15, 1.68E8, 'T', 'ethane', 0.685, NULL, 0.315, '22.1.52', NULL, 370.0, 1680.0, 'T', 'C2H6', NULL, NULL, 31.5, '22.1.52', 'CRITICAL POINT'), +(2042, 2101.0, 643.15, 1.68E8, 'T', 'water', 0.315, NULL, 0.685, '22.1.52', NULL, 370.0, 1680.0, 'T', 'H2O', 31.5, NULL, NULL, '22.1.52', NULL), +(2043, 2102.0, 643.15, 1.7E8, 'T', 'ethane', 0.633, NULL, 0.211, '22.1.53', NULL, 370.0, 1700.0, 'T', 'C2H6', NULL, NULL, 21.1, '22.1.53', NULL), +(2044, 2103.0, 643.15, 1.7E8, 'T', 'water', 0.367, NULL, 0.789, '22.1.53', NULL, 370.0, 1700.0, 'T', 'H2O', 36.7, NULL, NULL, '22.1.53', NULL), +(2045, 2104.0, 643.15, 1.8E8, 'T', 'ethane', 0.463, NULL, 0.135, '22.1.54', NULL, 370.0, 1800.0, 'T', 'C2H6', NULL, NULL, 13.5, '22.1.54', NULL), +(2046, 2105.0, 643.15, 1.8E8, 'T', 'water', 0.537, NULL, 0.865, '22.1.54', NULL, 370.0, 1800.0, 'T', 'H2O', 53.7, NULL, NULL, '22.1.54', NULL), +(2047, 2106.0, 643.15, 1.9E8, 'T', 'ethane', 0.411, NULL, 0.123, '22.1.55', NULL, 370.0, 1900.0, 'T', 'C2H6', NULL, NULL, 12.3, '22.1.55', NULL), +(2048, 2107.0, 643.15, 1.9E8, 'T', 'water', 0.589, NULL, 0.877, '22.1.55', NULL, 370.0, 1900.0, 'T', 'H2O', 58.9, NULL, NULL, '22.1.55', NULL), +(2049, 2108.0, 643.15, 2.0E8, 'T', 'ethane', 0.381, NULL, 0.114, '22.1.56', NULL, 370.0, 2000.0, 'T', 'C2H6', NULL, NULL, 11.4, '22.1.56', NULL), +(2050, 2109.0, 643.15, 2.0E8, 'T', 'water', 0.619, NULL, 0.886, '22.1.56', NULL, 370.0, 2000.0, 'T', 'H2O', 61.9, NULL, NULL, '22.1.56', NULL), +(2051, 2110.0, 643.15, 2.5E8, 'T', 'ethane', 0.316, NULL, 0.096, '22.1.57', NULL, 370.0, 2500.0, 'T', 'C2H6', NULL, NULL, 9.6, '22.1.57', NULL), +(2052, 2111.0, 643.15, 2.5E8, 'T', 'water', 0.684, NULL, 0.904, '22.1.57', NULL, 370.0, 2500.0, 'T', 'H2O', 68.4, NULL, NULL, '22.1.57', NULL), +(2053, 2112.0, 643.15, 3.0E8, 'T', 'ethane', 0.288, NULL, 0.093, '22.1.58', NULL, 370.0, 3000.0, 'T', 'C2H6', NULL, NULL, 9.3, '22.1.58', NULL), +(2054, 2113.0, 643.15, 3.0E8, 'T', 'water', 0.712, NULL, 0.907, '22.1.58', NULL, 370.0, 3000.0, 'T', 'H2O', 71.2, NULL, NULL, '22.1.58', NULL), +(2055, 2114.0, 643.15, 3.5E8, 'T', 'ethane', 0.278, NULL, 0.09, '22.1.59', NULL, 370.0, 3500.0, 'T', 'C2H6', NULL, NULL, 9.0, '22.1.59', NULL), +(2056, 2115.0, 643.15, 3.5E8, 'T', 'water', 0.722, NULL, 0.91, '22.1.59', NULL, 370.0, 3500.0, 'T', 'H2O', 72.2, NULL, NULL, '22.1.59', NULL), +(2057, 2116.0, 651.15, 1.99E8, 'T', 'ethane', 0.68, NULL, 0.32, '22.1.60', NULL, 378.0, 1990.0, 'T', 'C2H6', NULL, NULL, 32.0, '22.1.60', 'CRITICAL POINT'), +(2058, 2117.0, 651.15, 1.99E8, 'T', 'water', 0.32, NULL, 0.68, '22.1.60', NULL, 378.0, 1990.0, 'T', 'H2O', 32.0, NULL, NULL, '22.1.60', NULL), +(2059, 2118.0, 651.15, 2.0E8, 'T', 'ethane', 0.639, NULL, 0.214, '22.1.61', NULL, 378.0, 2000.0, 'T', 'C2H6', NULL, NULL, 21.4, '22.1.61', NULL), +(2060, 2119.0, 651.15, 2.0E8, 'T', 'water', 0.361, NULL, 0.786, '22.1.61', NULL, 378.0, 2000.0, 'T', 'H2O', 36.1, NULL, NULL, '22.1.61', NULL), +(2061, 2120.0, 651.15, 2.1E8, 'T', 'ethane', 0.484, NULL, 0.137, '22.1.62', NULL, 378.0, 2100.0, 'T', 'C2H6', NULL, NULL, 13.7, '22.1.62', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2062, 2121.0, 651.15, 2.1E8, 'T', 'water', 0.516, NULL, 0.863, '22.1.62', NULL, 378.0, 2100.0, 'T', 'H2O', 51.6, NULL, NULL, '22.1.62', NULL), +(2063, 2122.0, 651.15, 2.2E8, 'T', 'ethane', 0.426, NULL, 0.118, '22.1.63', NULL, 378.0, 2200.0, 'T', 'C2H6', NULL, NULL, 11.8, '22.1.63', NULL), +(2064, 2123.0, 651.15, 2.2E8, 'T', 'water', 0.574, NULL, 0.882, '22.1.63', NULL, 378.0, 2200.0, 'T', 'H2O', 57.4, NULL, NULL, '22.1.63', NULL), +(2065, 2124.0, 651.15, 2.5E8, 'T', 'ethane', 0.347, NULL, 0.102, '22.1.64', NULL, 378.0, 2500.0, 'T', 'C2H6', NULL, NULL, 10.2, '22.1.64', NULL), +(2066, 2125.0, 651.15, 2.5E8, 'T', 'water', 0.653, NULL, 0.898, '22.1.64', NULL, 378.0, 2500.0, 'T', 'H2O', 65.3, NULL, NULL, '22.1.64', NULL), +(2067, 2126.0, 651.15, 3.0E8, 'T', 'ethane', 0.31, NULL, 0.099, '22.1.65', NULL, 378.0, 3000.0, 'T', 'C2H6', NULL, NULL, 9.9, '22.1.65', NULL), +(2068, 2127.0, 651.15, 3.0E8, 'T', 'water', 0.69, NULL, 0.901, '22.1.65', NULL, 378.0, 3000.0, 'T', 'H2O', 69.0, NULL, NULL, '22.1.65', NULL), +(2069, 2128.0, 651.15, 3.5E8, 'T', 'ethane', 0.308, NULL, 0.096, '22.1.66', NULL, 378.0, 3500.0, 'T', 'C2H6', NULL, NULL, 9.6, '22.1.66', NULL), +(2070, 2129.0, 651.15, 3.5E8, 'T', 'water', 0.692, NULL, 0.904, '22.1.66', NULL, 378.0, 3500.0, 'T', 'H2O', 69.2, NULL, NULL, '22.1.66', NULL), +(2071, 2130.0, 658.15, 2.19E8, 'T', 'ethane', 0.675, NULL, 0.325, '22.1.67', NULL, 385.0, 2190.0, 'T', 'C2H6', NULL, NULL, 32.5, '22.1.67', 'CRITICAL POINT'), +(2072, 2131.0, 658.15, 2.19E8, 'T', 'water', 0.325, NULL, 0.675, '22.1.67', NULL, 385.0, 2190.0, 'T', 'H2O', 32.5, NULL, NULL, '22.1.67', NULL), +(2073, 2132.0, 658.15, 2.2E8, 'T', 'ethane', 0.589, NULL, 0.202, '22.1.68', NULL, 385.0, 2200.0, 'T', 'C2H6', NULL, NULL, 20.2, '22.1.68', NULL), +(2074, 2133.0, 658.15, 2.2E8, 'T', 'water', 0.411, NULL, 0.798, '22.1.68', NULL, 385.0, 2200.0, 'T', 'H2O', 41.1, NULL, NULL, '22.1.68', NULL), +(2075, 2134.0, 658.15, 2.3E8, 'T', 'ethane', 0.468, NULL, 0.167, '22.1.69', NULL, 385.0, 2300.0, 'T', 'C2H6', NULL, NULL, 16.7, '22.1.69', NULL), +(2076, 2135.0, 658.15, 2.3E8, 'T', 'water', 0.532, NULL, 0.833, '22.1.69', NULL, 385.0, 2300.0, 'T', 'H2O', 53.2, NULL, NULL, '22.1.69', NULL), +(2077, 2136.0, 658.15, 2.4E8, 'T', 'ethane', 0.425, NULL, 0.158, '22.1.70', NULL, 385.0, 2400.0, 'T', 'C2H6', NULL, NULL, 15.8, '22.1.70', NULL), +(2078, 2137.0, 658.15, 2.4E8, 'T', 'water', 0.575, NULL, 0.842, '22.1.70', NULL, 385.0, 2400.0, 'T', 'H2O', 57.5, NULL, NULL, '22.1.70', NULL), +(2079, 2138.0, 658.15, 2.5E8, 'T', 'ethane', 0.397, NULL, 0.152, '22.1.71', NULL, 385.0, 2500.0, 'T', 'C2H6', NULL, NULL, 15.2, '22.1.71', NULL), +(2080, 2139.0, 658.15, 2.5E8, 'T', 'water', 0.603, NULL, 0.848, '22.1.71', NULL, 385.0, 2500.0, 'T', 'H2O', 60.3, NULL, NULL, '22.1.71', NULL), +(2081, 2140.0, 658.15, 3.0E8, 'T', 'ethane', 0.346, NULL, 0.133, '22.1.72', NULL, 385.0, 3000.0, 'T', 'C2H6', NULL, NULL, 13.3, '22.1.72', NULL), +(2082, 2141.0, 658.15, 3.0E8, 'T', 'water', 0.654, NULL, 0.867, '22.1.72', NULL, 385.0, 3000.0, 'T', 'H2O', 65.4, NULL, NULL, '22.1.72', NULL), +(2083, 2142.0, 658.15, 3.5E8, 'T', 'ethane', 0.345, NULL, 0.12, '22.1.73', NULL, 385.0, 3500.0, 'T', 'C2H6', NULL, NULL, 12.0, '22.1.73', NULL), +(2084, 2143.0, 658.15, 3.5E8, 'T', 'water', 0.655, NULL, 0.88, '22.1.73', NULL, 385.0, 3500.0, 'T', 'H2O', 65.5, NULL, NULL, '22.1.73', NULL), +(2085, 2144.0, 673.15, 3.215E8, 'T', 'ethane', 0.66, NULL, 0.34, '22.1.74', NULL, 400.0, 3215.0, 'T', 'C2H6', NULL, NULL, 34.0, '22.1.74', 'CRITICAL POINT'), +(2086, 2145.0, 673.15, 3.215E8, 'T', 'water', 0.34, NULL, 0.66, '22.1.74', NULL, 400.0, 3215.0, 'T', 'H2O', 34.0, NULL, NULL, '22.1.74', NULL), +(2087, 2146.0, 673.15, 3.3E8, 'T', 'ethane', 0.439, NULL, 0.145, '22.1.75', NULL, 400.0, 3300.0, 'T', 'C2H6', NULL, NULL, 14.5, '22.1.75', NULL), +(2088, 2147.0, 673.15, 3.3E8, 'T', 'water', 0.561, NULL, 0.855, '22.1.75', NULL, 400.0, 3300.0, 'T', 'H2O', 56.1, NULL, NULL, '22.1.75', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2089, 2148.0, 673.15, 3.4E8, 'T', 'ethane', 0.409, NULL, 0.138, '22.1.76', NULL, 400.0, 3400.0, 'T', 'C2H6', NULL, NULL, 13.8, '22.1.76', NULL), +(2090, 2149.0, 673.15, 3.4E8, 'T', 'water', 0.591, NULL, 0.862, '22.1.76', NULL, 400.0, 3400.0, 'T', 'H2O', 59.1, NULL, NULL, '22.1.76', NULL), +(2091, 2150.0, 673.15, 3.5E8, 'T', 'ethane', 0.405, NULL, 0.135, '22.1.77', NULL, 400.0, 3500.0, 'T', 'C2H6', NULL, NULL, 13.5, '22.1.77', NULL), +(2092, 2151.0, 673.15, 3.5E8, 'T', 'water', 0.595, NULL, 0.865, '22.1.77', NULL, 400.0, 3500.0, 'T', 'H2O', 59.5, NULL, NULL, '22.1.77', NULL), +(2093, 2152.0, 673.15, 3.7E8, 'T', 'ethane', 0.399, NULL, 0.132, '22.1.78', NULL, 400.0, 3700.0, 'T', 'C2H6', NULL, NULL, 13.2, '22.1.78', NULL), +(2094, 2153.0, 673.15, 3.7E8, 'T', 'water', 0.601, NULL, 0.868, '22.1.78', NULL, 400.0, 3700.0, 'T', 'H2O', 60.1, NULL, NULL, '22.1.78', NULL), +(2095, 2154.0, 290.386, 784623.3466, 'M', 'propane', 0.997678, NULL, NULL, '23.1.1', NULL, 63.0, 113.8, 'M', 'C3H8', NULL, NULL, NULL, '23.1.1', 'Reference 23: temp in F, pressure in psia and composition in molar fraction'), +(2096, 2155.0, 290.386, 784623.3466, 'M', 'water', 0.002322, NULL, NULL, '23.1.1', NULL, 63.0, 113.8, 'M', 'H2O', 0.002322, NULL, NULL, '23.1.1', NULL), +(2097, 2156.0, 290.9976, 790139.1522, 'M', 'propane', 0.99763, NULL, NULL, '23.1.2', NULL, 64.1, 114.6, 'M', 'C3H8', NULL, NULL, NULL, '23.1.2', NULL), +(2098, 2157.0, 290.9976, 790139.1522, 'M', 'water', 0.00237, NULL, NULL, '23.1.2', NULL, 64.1, 114.6, 'M', 'H2O', 0.00237, NULL, NULL, '23.1.2', NULL), +(2099, 2158.0, 301.5616, 1046624.1126, 'M', 'propane', 0.996418, NULL, NULL, '23.1.3', NULL, 83.1, 151.8, 'M', 'C3H8', NULL, NULL, NULL, '23.1.3', NULL), +(2100, 2159.0, 301.5616, 1046624.1126, 'M', 'water', 0.003582, NULL, NULL, '23.1.3', NULL, 83.1, 151.8, 'M', 'H2O', 0.003582, NULL, NULL, '23.1.3', NULL), +(2101, 2160.0, 303.73, 1101092.6929, 'M', 'propane', 0.996292, NULL, NULL, '23.1.4', NULL, 87.0, 159.7, 'M', 'C3H8', NULL, NULL, NULL, '23.1.4', NULL), +(2102, 2161.0, 303.73, 1101092.6929, 'M', 'water', 0.003708, NULL, NULL, '23.1.4', NULL, 87.0, 159.7, 'M', 'H2O', 0.003708, NULL, NULL, '23.1.4', NULL), +(2103, 2162.0, 312.348, 1344477.615, 'M', 'propane', 0.995145, NULL, NULL, '23.1.5', NULL, 102.5, 195.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.5', NULL), +(2104, 2163.0, 312.348, 1344477.615, 'M', 'water', 0.004855, NULL, NULL, '23.1.5', NULL, 102.5, 195.0, 'M', 'H2O', 0.004855, NULL, NULL, '23.1.5', NULL), +(2105, 2164.0, 317.4076, 1516846.54, 'M', 'propane', 0.99448, NULL, NULL, '23.1.6', NULL, 111.6, 220.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.6', NULL), +(2106, 2165.0, 317.4076, 1516846.54, 'M', 'water', 0.00552, NULL, NULL, '23.1.6', NULL, 111.6, 220.0, 'M', 'H2O', 0.00552, NULL, NULL, '23.1.6', NULL), +(2107, 2166.0, 317.5188, 1516846.54, 'M', 'propane', 0.99451, NULL, NULL, '23.1.7', NULL, 111.8, 220.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.7', NULL), +(2108, 2167.0, 317.5188, 1516846.54, 'M', 'water', 0.00549, NULL, NULL, '23.1.7', NULL, 111.8, 220.0, 'M', 'H2O', 0.00549, NULL, NULL, '23.1.7', NULL), +(2109, 2168.0, 326.3592, 1861584.39, 'M', 'propane', 0.99304, NULL, NULL, '23.1.8', NULL, 127.7, 270.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.8', NULL), +(2110, 2169.0, 326.3592, 1861584.39, 'M', 'water', 0.00696, NULL, NULL, '23.1.8', NULL, 127.7, 270.0, 'M', 'H2O', 0.00696, NULL, NULL, '23.1.8', NULL), +(2111, 2170.0, 326.6372, 1868479.147, 'M', 'propane', 0.99304, NULL, NULL, '23.1.9', NULL, 128.2, 271.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.9', NULL), +(2112, 2171.0, 326.6372, 1868479.147, 'M', 'water', 0.00696, NULL, NULL, '23.1.9', NULL, 128.2, 271.0, 'M', 'H2O', 0.00696, NULL, NULL, '23.1.9', NULL), +(2113, 2172.0, 335.4776, 2261480.296, 'M', 'propane', 0.99146, NULL, NULL, '23.1.10', NULL, 144.1, 328.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.10', NULL), +(2114, 2173.0, 335.4776, 2261480.296, 'M', 'water', 0.00854, NULL, NULL, '23.1.10', NULL, 144.1, 328.0, 'M', 'H2O', 0.00854, NULL, NULL, '23.1.10', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2115, 2174.0, 335.4776, 2261480.296, 'M', 'propane', 0.99137, NULL, NULL, '23.1.11', NULL, 144.1, 328.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.11', NULL), +(2116, 2175.0, 335.4776, 2261480.296, 'M', 'water', 0.00863, NULL, NULL, '23.1.11', NULL, 144.1, 328.0, 'M', 'H2O', 0.00863, NULL, NULL, '23.1.11', NULL), +(2117, 2176.0, 349.878, 3013008.809, 'M', 'propane', 0.98903, NULL, NULL, '23.1.12', NULL, 170.0, 437.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.12', NULL), +(2118, 2177.0, 349.878, 3013008.809, 'M', 'water', 0.01097, NULL, NULL, '23.1.12', NULL, 170.0, 437.0, 'M', 'H2O', 0.01097, NULL, NULL, '23.1.12', NULL), +(2119, 2178.0, 354.882, 3364641.416, 'M', 'propane', 0.98825, NULL, NULL, '23.1.13', NULL, 179.0, 488.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.13', NULL), +(2120, 2179.0, 354.882, 3364641.416, 'M', 'water', 0.01175, NULL, NULL, '23.1.13', NULL, 179.0, 488.0, 'M', 'H2O', 0.01175, NULL, NULL, '23.1.13', NULL), +(2121, 2180.0, 354.9932, 3357746.659, 'M', 'propane', 0.98823, NULL, NULL, '23.1.14', NULL, 179.2, 487.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.14', NULL), +(2122, 2181.0, 354.9932, 3357746.659, 'M', 'water', 0.01177, NULL, NULL, '23.1.14', NULL, 179.2, 487.0, 'M', 'H2O', 0.01177, NULL, NULL, '23.1.14', NULL), +(2123, 2182.0, 359.6636, 3647326.453, 'M', 'propane', 0.98737, NULL, NULL, '23.1.15', NULL, 187.6, 529.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.15', NULL), +(2124, 2183.0, 359.6636, 3647326.453, 'M', 'water', 0.01263, NULL, NULL, '23.1.15', NULL, 187.6, 529.0, 'M', 'H2O', 0.01263, NULL, NULL, '23.1.15', NULL), +(2125, 2184.0, 360.2196, 3688694.995, 'M', 'propane', 0.98722, NULL, NULL, '23.1.16', NULL, 188.6, 535.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.16', NULL), +(2126, 2185.0, 360.2196, 3688694.995, 'M', 'water', 0.01278, NULL, NULL, '23.1.16', NULL, 188.6, 535.0, 'M', 'H2O', 0.01278, NULL, NULL, '23.1.16', NULL), +(2127, 2186.0, 361.1648, 3723168.78, 'M', 'propane', 0.98718, NULL, NULL, '23.1.17', NULL, 190.3, 540.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.17', NULL), +(2128, 2187.0, 361.1648, 3723168.78, 'M', 'water', 0.01282, NULL, NULL, '23.1.17', NULL, 190.3, 540.0, 'M', 'H2O', 0.01282, NULL, NULL, '23.1.17', NULL), +(2129, 2188.0, 362.5548, 3867958.677, 'M', 'propane', 0.98718, NULL, NULL, '23.1.18', NULL, 192.8, 561.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.18', NULL), +(2130, 2189.0, 362.5548, 3867958.677, 'M', 'water', 0.01282, NULL, NULL, '23.1.18', NULL, 192.8, 561.0, 'M', 'H2O', 0.01282, NULL, NULL, '23.1.18', NULL), +(2131, 2190.0, 362.666, 3874853.434, 'M', 'propane', 0.9873, NULL, NULL, '23.1.19', NULL, 193.0, 562.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.19', NULL), +(2132, 2191.0, 362.666, 3874853.434, 'M', 'water', 0.0127, NULL, NULL, '23.1.19', NULL, 193.0, 562.0, 'M', 'H2O', 0.0127, NULL, NULL, '23.1.19', NULL), +(2133, 2192.0, 367.4476, 4226486.041, 'M', 'propane', 0.98788, NULL, NULL, '23.1.20', NULL, 201.6, 613.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.20', NULL), +(2134, 2193.0, 367.4476, 4226486.041, 'M', 'water', 0.01212, NULL, NULL, '23.1.20', NULL, 201.6, 613.0, 'M', 'H2O', 0.01212, NULL, NULL, '23.1.20', NULL), +(2135, 2194.0, 367.5032, 4219591.284, 'M', 'propane', 0.98792, NULL, NULL, '23.1.21', NULL, 201.7, 612.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.21', NULL), +(2136, 2195.0, 367.5032, 4219591.284, 'M', 'water', 0.01208, NULL, NULL, '23.1.21', NULL, 201.7, 612.0, 'M', 'H2O', 0.01208, NULL, NULL, '23.1.21', NULL), +(2137, 2196.0, 287.8284, 738428.4747, 'M', 'propane', NULL, '0.9998632', NULL, '23.1.22', NULL, 58.4, 107.1, 'M', 'C3H8', NULL, NULL, NULL, '23.1.22', NULL), +(2138, 2197.0, 287.8284, 738428.4747, 'M', 'water', NULL, '0.0001368', NULL, '23.1.22', NULL, 58.4, 107.1, 'M', 'H2O', NULL, '0.0001368', NULL, '23.1.22', NULL), +(2139, 2198.0, 299.004, 982502.8725, 'M', 'propane', NULL, '0.999666', NULL, '23.1.23', NULL, 78.5, 142.5, 'M', 'C3H8', NULL, NULL, NULL, '23.1.23', NULL), +(2140, 2199.0, 299.004, 982502.8725, 'M', 'water', NULL, '0.000334', NULL, '23.1.23', NULL, 78.5, 142.5, 'M', 'H2O', NULL, '0.000334', NULL, '23.1.23', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2141, 2200.0, 299.1152, 982502.8725, 'M', 'propane', NULL, '0.9996597', NULL, '23.1.24', NULL, 78.7, 142.5, 'M', 'C3H8', NULL, NULL, NULL, '23.1.24', NULL), +(2142, 2201.0, 299.1152, 982502.8725, 'M', 'water', NULL, '0.0003403', NULL, '23.1.24', NULL, 78.7, 142.5, 'M', 'H2O', NULL, '0.0003403', NULL, '23.1.24', NULL), +(2143, 2202.0, 312.0144, 1344477.615, 'M', 'propane', NULL, '0.999386', NULL, '23.1.25', NULL, 101.9, 195.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.25', NULL), +(2144, 2203.0, 312.0144, 1344477.615, 'M', 'water', NULL, '0.000614', NULL, '23.1.25', NULL, 101.9, 195.0, 'M', 'H2O', NULL, '0.000614', NULL, '23.1.25', NULL), +(2145, 2204.0, 312.0144, 1348614.4692, 'M', 'propane', NULL, '0.999374', NULL, '23.1.26', NULL, 101.9, 195.6, 'M', 'C3H8', NULL, NULL, NULL, '23.1.26', NULL), +(2146, 2205.0, 312.0144, 1348614.4692, 'M', 'water', NULL, '0.000626', NULL, '23.1.26', NULL, 101.9, 195.6, 'M', 'H2O', NULL, '0.000626', NULL, '23.1.26', NULL), +(2147, 2206.0, 326.804, 1875373.904, 'M', 'propane', NULL, '0.998632', NULL, '23.1.27', NULL, 128.5, 272.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.27', NULL), +(2148, 2207.0, 326.804, 1875373.904, 'M', 'water', NULL, '0.001368', NULL, '23.1.27', NULL, 128.5, 272.0, 'M', 'H2O', NULL, '0.001368', NULL, '23.1.27', NULL), +(2149, 2208.0, 326.9708, 1868479.147, 'M', 'propane', NULL, '0.998622', NULL, '23.1.28', NULL, 128.8, 271.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.28', NULL), +(2150, 2209.0, 326.9708, 1868479.147, 'M', 'water', NULL, '0.001378', NULL, '23.1.28', NULL, 128.8, 271.0, 'M', 'H2O', NULL, '0.001378', NULL, '23.1.28', NULL), +(2151, 2210.0, 335.7556, 2275269.81, 'M', 'propane', NULL, '0.998005', NULL, '23.1.29', NULL, 144.6, 330.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.29', NULL), +(2152, 2211.0, 335.7556, 2275269.81, 'M', 'water', NULL, '0.001995', NULL, '23.1.29', NULL, 144.6, 330.0, 'M', 'H2O', NULL, '0.001995', NULL, '23.1.29', NULL), +(2153, 2212.0, 349.878, 3019903.566, 'M', 'propane', NULL, '0.996445', NULL, '23.1.30', NULL, 170.0, 438.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.30', NULL), +(2154, 2213.0, 349.878, 3019903.566, 'M', 'water', NULL, '0.003555', NULL, '23.1.30', NULL, 170.0, 438.0, 'M', 'H2O', NULL, '0.003555', NULL, '23.1.30', NULL), +(2155, 2214.0, 350.434, 3054377.351, 'M', 'propane', NULL, '0.996318', NULL, '23.1.31', NULL, 171.0, 443.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.31', NULL), +(2156, 2215.0, 350.434, 3054377.351, 'M', 'water', NULL, '0.003682', NULL, '23.1.31', NULL, 171.0, 443.0, 'M', 'H2O', NULL, '0.003682', NULL, '23.1.31', NULL), +(2157, 2216.0, 360.2196, 3688694.995, 'M', 'propane', NULL, '0.99458', NULL, '23.1.32', NULL, 188.6, 535.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.32', NULL), +(2158, 2217.0, 360.2196, 3688694.995, 'M', 'water', NULL, '0.00542', NULL, '23.1.32', NULL, 188.6, 535.0, 'M', 'H2O', NULL, '0.00542', NULL, '23.1.32', NULL), +(2159, 2218.0, 361.7764, 3799011.107, 'M', 'propane', NULL, '0.99395', NULL, '23.1.33', NULL, 191.4, 551.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.33', NULL), +(2160, 2219.0, 361.7764, 3799011.107, 'M', 'water', NULL, '0.00605', NULL, '23.1.33', NULL, 191.4, 551.0, 'M', 'H2O', NULL, '0.00605', NULL, '23.1.33', NULL), +(2161, 2220.0, 361.8876, 3785221.593, 'M', 'propane', NULL, '0.99456', NULL, '23.1.34', NULL, 191.6, 549.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.34', NULL), +(2162, 2221.0, 361.8876, 3785221.593, 'M', 'water', NULL, '0.00544', NULL, '23.1.34', NULL, 191.6, 549.0, 'M', 'H2O', NULL, '0.00544', NULL, '23.1.34', NULL), +(2163, 2222.0, 364.1116, 3943801.004, 'M', 'propane', NULL, '0.99341', NULL, '23.1.35', NULL, 195.6, 572.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.35', NULL), +(2164, 2223.0, 364.1116, 3943801.004, 'M', 'water', NULL, '0.00659', NULL, '23.1.35', NULL, 195.6, 572.0, 'M', 'H2O', NULL, '0.00659', NULL, '23.1.35', NULL), +(2165, 2224.0, 367.5032, 4212696.527, 'M', 'propane', NULL, '0.99236', NULL, '23.1.36', NULL, 201.7, 611.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.36', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2166, 2225.0, 367.5032, 4212696.527, 'M', 'water', NULL, '0.00764', NULL, '23.1.36', NULL, 201.7, 611.0, 'M', 'H2O', NULL, '0.00764', NULL, '23.1.36', NULL), +(2167, 2226.0, 367.7256, 4219591.284, 'M', 'propane', NULL, '0.99231', NULL, '23.1.37', NULL, 202.1, 612.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.37', 'CRITICAL REGION'), +(2168, 2227.0, 367.7256, 4219591.284, 'M', 'water', NULL, '0.00769', NULL, '23.1.37', NULL, 202.1, 612.0, 'M', 'H2O', NULL, '0.00769', NULL, '23.1.37', NULL), +(2169, 2228.0, 369.5604, 4364381.181, 'M', 'propane', NULL, '0.98999', NULL, '23.1.38', NULL, 205.4, 633.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.38', NULL), +(2170, 2229.0, 369.5604, 4364381.181, 'M', 'water', NULL, '0.01001', NULL, '23.1.38', NULL, 205.4, 633.0, 'M', 'H2O', NULL, '0.01001', NULL, '23.1.38', NULL), +(2171, 2230.0, 369.9496, 4398854.966, 'M', 'propane', NULL, '0.99005', NULL, '23.1.39', NULL, 206.1, 638.0, 'M', 'C3H8', NULL, NULL, NULL, '23.1.39', 'CRITICAL REGION'), +(2172, 2231.0, 369.9496, 4398854.966, 'M', 'water', NULL, '0.00995', NULL, '23.1.39', NULL, 206.1, 638.0, 'M', 'H2O', NULL, '0.00995', NULL, '23.1.39', NULL), +(2173, 2232.0, 278.8768, 566749.0254, 'M', 'propane', NULL, NULL, 3.66E-4, '23.1.40', NULL, 42.3, 82.2, 'M', 'C3H8', NULL, NULL, 3.66E-4, '23.1.40', 'QUADRUPLE POINT BY EXTRPOLATION'), +(2174, 2233.0, 278.8768, 566749.0254, 'M', 'water', NULL, NULL, 0.999634, '23.1.40', NULL, 42.3, 82.2, 'M', 'H2O', NULL, NULL, NULL, '23.1.40', NULL), +(2175, 2234.0, 285.3264, 696370.457, 'M', 'propane', NULL, NULL, 2.913E-4, '23.1.41', NULL, 53.9, 101.0, 'M', 'C3H8', NULL, NULL, 2.913E-4, '23.1.41', NULL), +(2176, 2235.0, 285.3264, 696370.457, 'M', 'water', NULL, NULL, 0.9997087, '23.1.41', NULL, 53.9, 101.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.41', NULL), +(2177, 2236.0, 298.7816, 979055.494, 'M', 'propane', NULL, NULL, 2.208E-4, '23.1.42', NULL, 78.1, 142.0, 'M', 'C3H8', NULL, NULL, 2.208E-4, '23.1.42', NULL), +(2178, 2237.0, 298.7816, 979055.494, 'M', 'water', NULL, NULL, 0.9997792, '23.1.42', NULL, 78.1, 142.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.42', NULL), +(2179, 2238.0, 299.3376, 985950.251, 'M', 'propane', NULL, NULL, 2.208E-4, '23.1.43', NULL, 79.1, 143.0, 'M', 'C3H8', NULL, NULL, 2.208E-4, '23.1.43', NULL), +(2180, 2239.0, 299.3376, 985950.251, 'M', 'water', NULL, NULL, 0.9997792, '23.1.43', NULL, 79.1, 143.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.43', NULL), +(2181, 2240.0, 311.0692, 1316898.587, 'M', 'propane', NULL, NULL, 2.045E-4, '23.1.44', NULL, 100.2, 191.0, 'M', 'C3H8', NULL, NULL, 2.045E-4, '23.1.44', NULL), +(2182, 2241.0, 311.0692, 1316898.587, 'M', 'water', NULL, NULL, 0.9997955, '23.1.44', NULL, 100.2, 191.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.44', NULL), +(2183, 2242.0, 311.2916, 1316898.587, 'M', 'propane', NULL, NULL, 2.001E-4, '23.1.45', NULL, 100.6, 191.0, 'M', 'C3H8', NULL, NULL, 2.001E-4, '23.1.45', NULL), +(2184, 2243.0, 311.2916, 1316898.587, 'M', 'water', NULL, NULL, 0.9997999, '23.1.45', NULL, 100.6, 191.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.45', NULL), +(2185, 2244.0, 329.2504, 1958110.988, 'M', 'propane', NULL, NULL, 2.046E-4, '23.1.46', NULL, 132.9, 284.0, 'M', 'C3H8', NULL, NULL, 2.046E-4, '23.1.46', NULL), +(2186, 2245.0, 329.2504, 1958110.988, 'M', 'water', NULL, NULL, 0.9997954, '23.1.46', NULL, 132.9, 284.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.46', NULL), +(2187, 2246.0, 331.9192, 2068427.1, 'M', 'propane', NULL, NULL, 2.003E-4, '23.1.47', NULL, 137.7, 300.0, 'M', 'C3H8', NULL, NULL, 2.003E-4, '23.1.47', NULL), +(2188, 2247.0, 331.9192, 2068427.1, 'M', 'water', NULL, NULL, 0.9997997, '23.1.47', NULL, 137.7, 300.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.47', NULL), +(2189, 2248.0, 341.0932, 2523481.062, 'M', 'propane', NULL, NULL, 2.063E-4, '23.1.48', NULL, 154.2, 366.0, 'M', 'C3H8', NULL, NULL, 2.063E-4, '23.1.48', NULL), +(2190, 2249.0, 341.0932, 2523481.062, 'M', 'water', NULL, NULL, 0.9997937, '23.1.48', NULL, 154.2, 366.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.48', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2191, 2250.0, 344.4848, 2695849.987, 'M', 'propane', NULL, NULL, 2.107E-4, '23.1.49', NULL, 160.3, 391.0, 'M', 'C3H8', NULL, NULL, 2.107E-4, '23.1.49', NULL), +(2192, 2251.0, 344.4848, 2695849.987, 'M', 'water', NULL, NULL, 0.9997893, '23.1.49', NULL, 160.3, 391.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.49', NULL), +(2193, 2252.0, 351.1012, 3075061.622, 'M', 'propane', NULL, NULL, 2.298E-4, '23.1.50', NULL, 172.2, 446.0, 'M', 'C3H8', NULL, NULL, 2.298E-4, '23.1.50', NULL), +(2194, 2253.0, 351.1012, 3075061.622, 'M', 'water', NULL, NULL, 0.9997702, '23.1.50', NULL, 172.2, 446.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.50', NULL), +(2195, 2254.0, 355.2712, 3323272.874, 'M', 'propane', NULL, NULL, 2.36E-4, '23.1.51', NULL, 179.7, 482.0, 'M', 'C3H8', NULL, NULL, 2.36E-4, '23.1.51', NULL), +(2196, 2255.0, 355.2712, 3323272.874, 'M', 'water', NULL, NULL, 0.999764, '23.1.51', NULL, 179.7, 482.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.51', NULL), +(2197, 2256.0, 360.7756, 3709379.266, 'M', 'propane', NULL, NULL, 2.495E-4, '23.1.52', NULL, 189.6, 538.0, 'M', 'C3H8', NULL, NULL, 2.495E-4, '23.1.52', NULL), +(2198, 2257.0, 360.7756, 3709379.266, 'M', 'water', NULL, NULL, 0.9997505, '23.1.52', NULL, 189.6, 538.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.52', NULL), +(2199, 2258.0, 361.6096, 3743853.051, 'M', 'propane', NULL, NULL, 2.489E-4, '23.1.53', NULL, 191.1, 543.0, 'M', 'C3H8', NULL, NULL, 2.489E-4, '23.1.53', NULL), +(2200, 2259.0, 361.6096, 3743853.051, 'M', 'water', NULL, NULL, 0.9997511, '23.1.53', NULL, 191.1, 543.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.53', NULL), +(2201, 2260.0, 367.5032, 4192012.256, 'M', 'propane', NULL, NULL, 2.638E-4, '23.1.54', NULL, 201.7, 608.0, 'M', 'C3H8', NULL, NULL, 2.638E-4, '23.1.54', NULL), +(2202, 2261.0, 367.5032, 4192012.256, 'M', 'water', NULL, NULL, 0.9997362, '23.1.54', NULL, 201.7, 608.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.54', NULL), +(2203, 2262.0, 369.5604, 4357486.424, 'M', 'propane', NULL, NULL, 2.726E-4, '23.1.55', NULL, 205.4, 632.0, 'M', 'C3H8', NULL, NULL, 2.726E-4, '23.1.55', NULL), +(2204, 2263.0, 369.5604, 4357486.424, 'M', 'water', NULL, NULL, 0.9997274, '23.1.55', NULL, 205.4, 632.0, 'M', 'H2O', NULL, NULL, NULL, '23.1.55', NULL), +(2205, 2264.0, 310.958, 703265.214, 'T', 'propane', 0.99046, NULL, NULL, '23.2.1', NULL, 100.0, 102.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.1', NULL), +(2206, 2265.0, 310.958, 703265.214, 'T', 'water', 0.00954, NULL, NULL, '23.2.1', NULL, 100.0, 102.0, 'T', 'H2O', 0.00954, NULL, NULL, '23.2.1', NULL), +(2207, 2266.0, 310.958, 972160.737, 'T', 'propane', 0.99304, NULL, NULL, '23.2.2', NULL, 100.0, 141.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.2', NULL), +(2208, 2267.0, 310.958, 972160.737, 'T', 'water', 0.00696, NULL, NULL, '23.2.2', NULL, 100.0, 141.0, 'T', 'H2O', 0.00696, NULL, NULL, '23.2.2', NULL), +(2209, 2268.0, 310.958, 3674905.481, 'T', 'propane', 0.99508, NULL, NULL, '23.2.3', NULL, 100.0, 533.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.3', NULL), +(2210, 2269.0, 310.958, 3674905.481, 'T', 'water', 0.00492, NULL, NULL, '23.2.3', NULL, 100.0, 533.0, 'T', 'H2O', 0.00492, NULL, NULL, '23.2.3', NULL), +(2211, 2270.0, 310.958, 5639911.226, 'T', 'propane', 0.999413, NULL, NULL, '23.2.4', NULL, 100.0, 818.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.4', NULL), +(2212, 2271.0, 310.958, 5639911.226, 'T', 'water', 5.87E-4, NULL, NULL, '23.2.4', NULL, 100.0, 818.0, 'T', 'H2O', 5.87E-4, NULL, NULL, '23.2.4', NULL), +(2213, 2272.0, 310.958, 6998178.355, 'T', 'propane', 0.999327, NULL, NULL, '23.2.5', NULL, 100.0, 1015.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.5', NULL), +(2214, 2273.0, 310.958, 6998178.355, 'T', 'water', 6.73E-4, NULL, NULL, '23.2.5', NULL, 100.0, 1015.0, 'T', 'H2O', 6.73E-4, NULL, NULL, '23.2.5', NULL), +(2215, 2274.0, 310.958, 1.3913619626E7, 'T', 'propane', 0.99946, NULL, NULL, '23.2.6', NULL, 100.0, 2018.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.6', NULL), +(2216, 2275.0, 310.958, 1.3913619626E7, 'T', 'water', 5.4E-4, NULL, NULL, '23.2.6', NULL, 100.0, 2018.0, 'T', 'H2O', 5.4E-4, NULL, NULL, '23.2.6', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2217, 2276.0, 310.958, 1.3948093411E7, 'T', 'propane', 0.999357, NULL, NULL, '23.2.7', NULL, 100.0, 2023.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.7', NULL), +(2218, 2277.0, 310.958, 1.3948093411E7, 'T', 'water', 6.43E-4, NULL, NULL, '23.2.7', NULL, 100.0, 2023.0, 'T', 'H2O', 6.43E-4, NULL, NULL, '23.2.7', NULL), +(2219, 2278.0, 310.958, 1.9291530086E7, 'T', 'propane', 0.999409, NULL, NULL, '23.2.8', NULL, 100.0, 2798.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.8', NULL), +(2220, 2279.0, 310.958, 1.9291530086E7, 'T', 'water', 5.91E-4, NULL, NULL, '23.2.8', NULL, 100.0, 2798.0, 'T', 'H2O', 5.91E-4, NULL, NULL, '23.2.8', NULL), +(2221, 2280.0, 310.958, 1.9291530086E7, 'T', 'propane', 0.999377, NULL, NULL, '23.2.9', NULL, 100.0, 2798.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.9', NULL), +(2222, 2281.0, 310.958, 1.9291530086E7, 'T', 'water', 6.23E-4, NULL, NULL, '23.2.9', NULL, 100.0, 2798.0, 'T', 'H2O', 6.23E-4, NULL, NULL, '23.2.9', NULL), +(2223, 2282.0, 338.758, 1006634.522, 'T', 'propane', 0.97351, NULL, NULL, '23.2.10', NULL, 150.0, 146.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.10', NULL), +(2224, 2283.0, 338.758, 1006634.522, 'T', 'water', 0.02649, NULL, NULL, '23.2.10', NULL, 150.0, 146.0, 'T', 'H2O', 0.02649, NULL, NULL, '23.2.10', NULL), +(2225, 2284.0, 338.758, 1496162.269, 'T', 'propane', 0.98298, NULL, NULL, '23.2.11', NULL, 150.0, 217.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.11', NULL), +(2226, 2285.0, 338.758, 1496162.269, 'T', 'water', 0.01702, NULL, NULL, '23.2.11', NULL, 150.0, 217.0, 'T', 'H2O', 0.01702, NULL, NULL, '23.2.11', NULL), +(2227, 2286.0, 338.758, 1992584.773, 'T', 'propane', 0.988, NULL, NULL, '23.2.12', NULL, 150.0, 289.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.12', NULL), +(2228, 2287.0, 338.758, 1992584.773, 'T', 'water', 0.012, NULL, NULL, '23.2.12', NULL, 150.0, 289.0, 'T', 'H2O', 0.012, NULL, NULL, '23.2.12', NULL), +(2229, 2288.0, 338.758, 5901911.992, 'T', 'propane', 0.997672, NULL, NULL, '23.2.13', NULL, 150.0, 856.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.13', NULL), +(2230, 2289.0, 338.758, 5901911.992, 'T', 'water', 0.002328, NULL, NULL, '23.2.13', NULL, 150.0, 856.0, 'T', 'H2O', 0.002328, NULL, NULL, '23.2.13', NULL), +(2231, 2290.0, 338.758, 1.0783399948E7, 'T', 'propane', 0.997776, NULL, NULL, '23.2.14', NULL, 150.0, 1564.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.14', NULL), +(2232, 2291.0, 338.758, 1.0783399948E7, 'T', 'water', 0.002224, NULL, NULL, '23.2.14', NULL, 150.0, 1564.0, 'T', 'H2O', 0.002224, NULL, NULL, '23.2.14', NULL), +(2233, 2292.0, 338.758, 1.7126576388E7, 'T', 'propane', 0.99794, NULL, NULL, '23.2.15', NULL, 150.0, 2484.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.15', NULL), +(2234, 2293.0, 338.758, 1.7126576388E7, 'T', 'water', 0.00206, NULL, NULL, '23.2.15', NULL, 150.0, 2484.0, 'T', 'H2O', 0.00206, NULL, NULL, '23.2.15', NULL), +(2235, 2294.0, 338.758, 1.9326003871E7, 'T', 'propane', 0.997954, NULL, NULL, '23.2.16', NULL, 150.0, 2803.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.16', NULL), +(2236, 2295.0, 338.758, 1.9326003871E7, 'T', 'water', 0.002046, NULL, NULL, '23.2.16', NULL, 150.0, 2803.0, 'T', 'H2O', 0.002046, NULL, NULL, '23.2.16', NULL), +(2237, 2296.0, 360.998, 1310003.83, 'T', 'propane', 0.95033, NULL, NULL, '23.2.17', NULL, 190.0, 190.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.17', NULL), +(2238, 2297.0, 360.998, 1310003.83, 'T', 'water', 0.04967, NULL, NULL, '23.2.17', NULL, 190.0, 190.0, 'T', 'H2O', 0.04967, NULL, NULL, '23.2.17', NULL), +(2239, 2298.0, 360.998, 2130479.913, 'T', 'propane', 0.9709, NULL, NULL, '23.2.18', NULL, 190.0, 309.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.18', NULL), +(2240, 2299.0, 360.998, 2130479.913, 'T', 'water', 0.0291, NULL, NULL, '23.2.18', NULL, 190.0, 309.0, 'T', 'H2O', 0.0291, NULL, NULL, '23.2.18', NULL), +(2241, 2300.0, 360.998, 3206062.005, 'T', 'propane', 0.98278, NULL, NULL, '23.2.19', NULL, 190.0, 465.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.19', NULL), +(2242, 2301.0, 360.998, 3206062.005, 'T', 'water', 0.01722, NULL, NULL, '23.2.19', NULL, 190.0, 465.0, 'T', 'H2O', 0.01722, NULL, NULL, '23.2.19', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2243, 2302.0, 360.998, 9252763.894, 'T', 'propane', 0.99498, NULL, NULL, '23.2.20', NULL, 190.0, 1342.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.20', NULL), +(2244, 2303.0, 360.998, 9252763.894, 'T', 'water', 0.00502, NULL, NULL, '23.2.20', NULL, 190.0, 1342.0, 'T', 'H2O', 0.00502, NULL, NULL, '23.2.20', NULL), +(2245, 2304.0, 360.998, 1.3810198271E7, 'T', 'propane', 0.99525, NULL, NULL, '23.2.21', NULL, 190.0, 2003.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.21', NULL), +(2246, 2305.0, 360.998, 1.3810198271E7, 'T', 'water', 0.00475, NULL, NULL, '23.2.21', NULL, 190.0, 2003.0, 'T', 'H2O', 0.00475, NULL, NULL, '23.2.21', NULL), +(2247, 2306.0, 360.998, 1.9326003871E7, 'T', 'propane', 0.99537, NULL, NULL, '23.2.22', NULL, 190.0, 2803.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.22', NULL), +(2248, 2307.0, 360.998, 1.9326003871E7, 'T', 'water', 0.00463, NULL, NULL, '23.2.22', NULL, 190.0, 2803.0, 'T', 'H2O', 0.00463, NULL, NULL, '23.2.22', NULL), +(2249, 2308.0, 369.7272, 1427214.699, 'T', 'propane', 0.9363, NULL, NULL, '23.2.23', NULL, 205.7, 207.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.23', NULL), +(2250, 2309.0, 369.7272, 1427214.699, 'T', 'water', 0.0637, NULL, NULL, '23.2.23', NULL, 205.7, 207.0, 'T', 'H2O', 0.0637, NULL, NULL, '23.2.23', NULL), +(2251, 2310.0, 369.7272, 3068166.865, 'T', 'propane', 0.97361, NULL, NULL, '23.2.24', NULL, 205.7, 445.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.24', NULL), +(2252, 2311.0, 369.7272, 3068166.865, 'T', 'water', 0.02639, NULL, NULL, '23.2.24', NULL, 205.7, 445.0, 'T', 'H2O', 0.02639, NULL, NULL, '23.2.24', NULL), +(2253, 2312.0, 369.7272, 4157538.471, 'T', 'propane', 0.98432, NULL, NULL, '23.2.25', NULL, 205.7, 603.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.25', NULL), +(2254, 2313.0, 369.7272, 4157538.471, 'T', 'water', 0.01568, NULL, NULL, '23.2.25', NULL, 205.7, 603.0, 'T', 'H2O', 0.01568, NULL, NULL, '23.2.25', NULL), +(2255, 2314.0, 369.7272, 4391960.209, 'T', 'propane', 0.99002, NULL, NULL, '23.2.26', NULL, 205.7, 637.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.26', NULL), +(2256, 2315.0, 369.7272, 4391960.209, 'T', 'water', 0.00998, NULL, NULL, '23.2.26', NULL, 205.7, 637.0, 'T', 'H2O', 0.00998, NULL, NULL, '23.2.26', NULL), +(2257, 2316.0, 369.7272, 4798750.872, 'T', 'propane', 0.99187, NULL, NULL, '23.2.27', NULL, 205.7, 696.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.27', NULL), +(2258, 2317.0, 369.7272, 4798750.872, 'T', 'water', 0.00813, NULL, NULL, '23.2.27', NULL, 205.7, 696.0, 'T', 'H2O', 0.00813, NULL, NULL, '23.2.27', NULL), +(2259, 2318.0, 369.7272, 5205541.535, 'T', 'propane', 0.99221, NULL, NULL, '23.2.28', NULL, 205.7, 755.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.28', NULL), +(2260, 2319.0, 369.7272, 5205541.535, 'T', 'water', 0.00779, NULL, NULL, '23.2.28', NULL, 205.7, 755.0, 'T', 'H2O', 0.00779, NULL, NULL, '23.2.28', NULL), +(2261, 2320.0, 369.7272, 8390919.269, 'T', 'propane', 0.99274, NULL, NULL, '23.2.29', NULL, 205.7, 1217.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.29', NULL), +(2262, 2321.0, 369.7272, 8390919.269, 'T', 'water', 0.00726, NULL, NULL, '23.2.29', NULL, 205.7, 1217.0, 'T', 'H2O', 0.00726, NULL, NULL, '23.2.29', NULL), +(2263, 2322.0, 369.7272, 1.3948093411E7, 'T', 'propane', 0.99326, NULL, NULL, '23.2.30', NULL, 205.7, 2023.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.30', NULL), +(2264, 2323.0, 369.7272, 1.3948093411E7, 'T', 'water', 0.00674, NULL, NULL, '23.2.30', NULL, 205.7, 2023.0, 'T', 'H2O', 0.00674, NULL, NULL, '23.2.30', NULL), +(2265, 2324.0, 369.7272, 1.9326003871E7, 'T', 'propane', 0.9936, NULL, NULL, '23.2.31', NULL, 205.7, 2803.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.31', NULL), +(2266, 2325.0, 369.7272, 1.9326003871E7, 'T', 'water', 0.0064, NULL, NULL, '23.2.31', NULL, 205.7, 2803.0, 'T', 'H2O', 0.0064, NULL, NULL, '23.2.31', NULL), +(2267, 2326.0, 383.238, 1737478.764, 'T', 'propane', 0.91906, NULL, NULL, '23.2.32', NULL, 230.0, 252.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.32', NULL), +(2268, 2327.0, 383.238, 1737478.764, 'T', 'water', 0.08094, NULL, NULL, '23.2.32', NULL, 230.0, 252.0, 'T', 'H2O', 0.08094, NULL, NULL, '23.2.32', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2269, 2328.0, 383.238, 3075061.622, 'T', 'propane', 0.95675, NULL, NULL, '23.2.33', NULL, 230.0, 446.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.33', NULL), +(2270, 2329.0, 383.238, 3075061.622, 'T', 'water', 0.04325, NULL, NULL, '23.2.33', NULL, 230.0, 446.0, 'T', 'H2O', 0.04325, NULL, NULL, '23.2.33', NULL), +(2271, 2330.0, 383.238, 4343696.91, 'T', 'propane', 0.97341, NULL, NULL, '23.2.34', NULL, 230.0, 630.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.34', NULL), +(2272, 2331.0, 383.238, 4343696.91, 'T', 'water', 0.02659, NULL, NULL, '23.2.34', NULL, 230.0, 630.0, 'T', 'H2O', 0.02659, NULL, NULL, '23.2.34', NULL), +(2273, 2332.0, 383.238, 4950435.526, 'T', 'propane', 0.97972, NULL, NULL, '23.2.35', NULL, 230.0, 718.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.35', NULL), +(2274, 2333.0, 383.238, 4950435.526, 'T', 'water', 0.02028, NULL, NULL, '23.2.35', NULL, 230.0, 718.0, 'T', 'H2O', 0.02028, NULL, NULL, '23.2.35', NULL), +(2275, 2334.0, 383.238, 5674385.011, 'T', 'propane', 0.98634, NULL, NULL, '23.2.36', NULL, 230.0, 823.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.36', NULL), +(2276, 2335.0, 383.238, 5674385.011, 'T', 'water', 0.01366, NULL, NULL, '23.2.36', NULL, 230.0, 823.0, 'T', 'H2O', 0.01366, NULL, NULL, '23.2.36', NULL), +(2277, 2336.0, 383.238, 1.054897821E7, 'T', 'propane', 0.9867, NULL, NULL, '23.2.37', NULL, 230.0, 1530.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.37', NULL), +(2278, 2337.0, 383.238, 1.054897821E7, 'T', 'water', 0.0133, NULL, NULL, '23.2.37', NULL, 230.0, 1530.0, 'T', 'H2O', 0.0133, NULL, NULL, '23.2.37', NULL), +(2279, 2338.0, 383.238, 1.3948093411E7, 'T', 'propane', 0.99041, NULL, NULL, '23.2.38', NULL, 230.0, 2023.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.38', NULL), +(2280, 2339.0, 383.238, 1.3948093411E7, 'T', 'water', 0.00959, NULL, NULL, '23.2.38', NULL, 230.0, 2023.0, 'T', 'H2O', 0.00959, NULL, NULL, '23.2.38', NULL), +(2281, 2340.0, 383.238, 1.8643422928E7, 'T', 'propane', 0.99081, NULL, NULL, '23.2.39', NULL, 230.0, 2704.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.39', NULL), +(2282, 2341.0, 383.238, 1.8643422928E7, 'T', 'water', 0.00919, NULL, NULL, '23.2.39', NULL, 230.0, 2704.0, 'T', 'H2O', 0.00919, NULL, NULL, '23.2.39', NULL), +(2283, 2342.0, 399.918, 3026798.323, 'T', 'propane', 0.92144, NULL, NULL, '23.2.40', NULL, 260.0, 439.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.40', NULL), +(2284, 2343.0, 399.918, 3026798.323, 'T', 'water', 0.07856, NULL, NULL, '23.2.40', NULL, 260.0, 439.0, 'T', 'H2O', 0.07856, NULL, NULL, '23.2.40', NULL), +(2285, 2344.0, 399.918, 4653960.975, 'T', 'propane', 0.9534, NULL, NULL, '23.2.41', NULL, 260.0, 675.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.41', NULL), +(2286, 2345.0, 399.918, 4653960.975, 'T', 'water', 0.0466, NULL, NULL, '23.2.41', NULL, 260.0, 675.0, 'T', 'H2O', 0.0466, NULL, NULL, '23.2.41', NULL), +(2287, 2346.0, 399.918, 5598542.684, 'T', 'propane', 0.96401, NULL, NULL, '23.2.42', NULL, 260.0, 812.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.42', NULL), +(2288, 2347.0, 399.918, 5598542.684, 'T', 'water', 0.03599, NULL, NULL, '23.2.42', NULL, 260.0, 812.0, 'T', 'H2O', 0.03599, NULL, NULL, '23.2.42', NULL), +(2289, 2348.0, 399.918, 6867177.972, 'T', 'propane', 0.97501, NULL, NULL, '23.2.43', NULL, 260.0, 996.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.43', NULL), +(2290, 2349.0, 399.918, 6867177.972, 'T', 'water', 0.02499, NULL, NULL, '23.2.43', NULL, 260.0, 996.0, 'T', 'H2O', 0.02499, NULL, NULL, '23.2.43', NULL), +(2291, 2350.0, 399.918, 9728502.127, 'T', 'propane', 0.98157, NULL, NULL, '23.2.44', NULL, 260.0, 1411.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.44', NULL), +(2292, 2351.0, 399.918, 9728502.127, 'T', 'water', 0.01843, NULL, NULL, '23.2.44', NULL, 260.0, 1411.0, 'T', 'H2O', 0.01843, NULL, NULL, '23.2.44', NULL), +(2293, 2352.0, 399.918, 1.3948093411E7, 'T', 'propane', 0.98354, NULL, NULL, '23.2.45', NULL, 260.0, 2023.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.45', NULL), +(2294, 2353.0, 399.918, 1.3948093411E7, 'T', 'water', 0.01646, NULL, NULL, '23.2.45', NULL, 260.0, 2023.0, 'T', 'H2O', 0.01646, NULL, NULL, '23.2.45', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2295, 2354.0, 399.918, 1.3948093411E7, 'T', 'propane', 0.98351, NULL, NULL, '23.2.46', NULL, 260.0, 2023.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.46', NULL), +(2296, 2355.0, 399.918, 1.3948093411E7, 'T', 'water', 0.01649, NULL, NULL, '23.2.46', NULL, 260.0, 2023.0, 'T', 'H2O', 0.01649, NULL, NULL, '23.2.46', NULL), +(2297, 2356.0, 399.918, 1.8995055535E7, 'T', 'propane', 0.9851, NULL, NULL, '23.2.47', NULL, 260.0, 2755.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.47', NULL), +(2298, 2357.0, 399.918, 1.8995055535E7, 'T', 'water', 0.0149, NULL, NULL, '23.2.47', NULL, 260.0, 2755.0, 'T', 'H2O', 0.0149, NULL, NULL, '23.2.47', NULL), +(2299, 2358.0, 422.158, 4288538.854, 'T', 'propane', 0.89854, NULL, NULL, '23.2.48', NULL, 300.0, 622.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.48', NULL), +(2300, 2359.0, 422.158, 4288538.854, 'T', 'water', 0.10146, NULL, NULL, '23.2.48', NULL, 300.0, 622.0, 'T', 'H2O', 0.10146, NULL, NULL, '23.2.48', NULL), +(2301, 2360.0, 422.158, 6398334.496, 'T', 'propane', 0.9365, NULL, NULL, '23.2.49', NULL, 300.0, 928.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.49', NULL), +(2302, 2361.0, 422.158, 6398334.496, 'T', 'water', 0.0635, NULL, NULL, '23.2.49', NULL, 300.0, 928.0, 'T', 'H2O', 0.0635, NULL, NULL, '23.2.49', NULL), +(2303, 2362.0, 422.158, 8390919.269, 'T', 'propane', 0.95504, NULL, NULL, '23.2.50', NULL, 300.0, 1217.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.50', NULL), +(2304, 2363.0, 422.158, 8390919.269, 'T', 'water', 0.04496, NULL, NULL, '23.2.50', NULL, 300.0, 1217.0, 'T', 'H2O', 0.04496, NULL, NULL, '23.2.50', NULL), +(2305, 2364.0, 422.158, 9935344.837, 'T', 'propane', 0.96125, NULL, NULL, '23.2.51', NULL, 300.0, 1441.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.51', NULL), +(2306, 2365.0, 422.158, 9935344.837, 'T', 'water', 0.03875, NULL, NULL, '23.2.51', NULL, 300.0, 1441.0, 'T', 'H2O', 0.03875, NULL, NULL, '23.2.51', NULL), +(2307, 2366.0, 422.158, 1.3948093411E7, 'T', 'propane', 0.96895, NULL, NULL, '23.2.52', NULL, 300.0, 2023.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.52', NULL), +(2308, 2367.0, 422.158, 1.3948093411E7, 'T', 'water', 0.03105, NULL, NULL, '23.2.52', NULL, 300.0, 2023.0, 'T', 'H2O', 0.03105, NULL, NULL, '23.2.52', NULL), +(2309, 2368.0, 422.158, 1.9326003871E7, 'T', 'propane', 0.97316, NULL, NULL, '23.2.53', NULL, 300.0, 2803.0, 'T', 'C3H8', NULL, NULL, NULL, '23.2.53', NULL), +(2310, 2369.0, 422.158, 1.9326003871E7, 'T', 'water', 0.02684, NULL, NULL, '23.2.53', NULL, 300.0, 2803.0, 'T', 'H2O', 0.02684, NULL, NULL, '23.2.53', NULL), +(2311, 2370.0, 285.382, 4254065.069, 'T', 'propane', NULL, NULL, 2.963E-4, '23.3.1', NULL, 54.0, 617.0, 'T', 'C3H8', NULL, NULL, 2.963E-4, '23.3.1', NULL), +(2312, 2371.0, 285.382, 4254065.069, 'T', 'water', NULL, NULL, 0.9997037, '23.3.1', NULL, 54.0, 617.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.1', NULL), +(2313, 2372.0, 285.382, 4254065.069, 'T', 'propane', NULL, NULL, 3.029E-4, '23.3.2', NULL, 54.0, 617.0, 'T', 'C3H8', NULL, NULL, 3.029E-4, '23.3.2', NULL), +(2314, 2373.0, 285.382, 4254065.069, 'T', 'water', NULL, NULL, 0.9996971, '23.3.2', NULL, 54.0, 617.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.2', NULL), +(2315, 2374.0, 285.382, 8425393.054, 'T', 'propane', NULL, NULL, 2.906E-4, '23.3.3', NULL, 54.0, 1222.0, 'T', 'C3H8', NULL, NULL, 2.906E-4, '23.3.3', NULL), +(2316, 2375.0, 285.382, 8425393.054, 'T', 'water', NULL, NULL, 0.9997094, '23.3.3', NULL, 54.0, 1222.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.3', NULL), +(2317, 2376.0, 285.382, 1.3706776916E7, 'T', 'propane', NULL, NULL, 2.948E-4, '23.3.4', NULL, 54.0, 1988.0, 'T', 'C3H8', NULL, NULL, 2.948E-4, '23.3.4', NULL), +(2318, 2377.0, 285.382, 1.3706776916E7, 'T', 'water', NULL, NULL, 0.9997052, '23.3.4', NULL, 54.0, 1988.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.4', NULL), +(2319, 2378.0, 310.958, 496422.504, 'T', 'propane', NULL, NULL, 8.63E-5, '23.3.5', NULL, 100.0, 72.0, 'T', 'C3H8', NULL, NULL, 8.63E-5, '23.3.5', NULL), +(2320, 2379.0, 310.958, 496422.504, 'T', 'water', NULL, NULL, 0.9999137, '23.3.5', NULL, 100.0, 72.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.5', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2321, 2380.0, 310.958, 806686.569, 'T', 'propane', NULL, NULL, 1.552E-4, '23.3.6', NULL, 100.0, 117.0, 'T', 'C3H8', NULL, NULL, 1.552E-4, '23.3.6', NULL), +(2322, 2381.0, 310.958, 806686.569, 'T', 'water', NULL, NULL, 0.9998448, '23.3.6', NULL, 100.0, 117.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.6', NULL), +(2323, 2382.0, 310.958, 2950955.996, 'T', 'propane', NULL, NULL, 2.046E-4, '23.3.7', NULL, 100.0, 428.0, 'T', 'C3H8', NULL, NULL, 2.046E-4, '23.3.7', NULL), +(2324, 2383.0, 310.958, 2950955.996, 'T', 'water', NULL, NULL, 0.9997954, '23.3.7', NULL, 100.0, 428.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.7', NULL), +(2325, 2384.0, 310.958, 4288538.854, 'T', 'propane', NULL, NULL, 2.175E-4, '23.3.8', NULL, 100.0, 622.0, 'T', 'C3H8', NULL, NULL, 2.175E-4, '23.3.8', NULL), +(2326, 2385.0, 310.958, 4288538.854, 'T', 'water', NULL, NULL, 0.9997825, '23.3.8', NULL, 100.0, 622.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.8', NULL), +(2327, 2386.0, 310.958, 1.0555872967E7, 'T', 'propane', NULL, NULL, 2.151E-4, '23.3.9', NULL, 100.0, 1531.0, 'T', 'C3H8', NULL, NULL, 2.151E-4, '23.3.9', NULL), +(2328, 2387.0, 310.958, 1.0555872967E7, 'T', 'water', NULL, NULL, 0.9997849, '23.3.9', NULL, 100.0, 1531.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.9', NULL), +(2329, 2388.0, 310.958, 1.3872251084E7, 'T', 'propane', NULL, NULL, 2.239E-4, '23.3.10', NULL, 100.0, 2012.0, 'T', 'C3H8', NULL, NULL, 2.239E-4, '23.3.10', NULL), +(2330, 2389.0, 310.958, 1.3872251084E7, 'T', 'water', NULL, NULL, 0.9997761, '23.3.10', NULL, 100.0, 2012.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.10', NULL), +(2331, 2390.0, 310.958, 1.8526212059E7, 'T', 'propane', NULL, NULL, 2.304E-4, '23.3.11', NULL, 100.0, 2687.0, 'T', 'C3H8', NULL, NULL, 2.304E-4, '23.3.11', NULL), +(2332, 2391.0, 310.958, 1.8526212059E7, 'T', 'water', NULL, NULL, 0.9997696, '23.3.11', NULL, 100.0, 2687.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.11', NULL), +(2333, 2392.0, 329.306, 1296214.316, 'T', 'propane', NULL, NULL, 1.499E-4, '23.3.12', NULL, 133.0, 188.0, 'T', 'C3H8', NULL, NULL, 1.499E-4, '23.3.12', NULL), +(2334, 2393.0, 329.306, 1296214.316, 'T', 'water', NULL, NULL, 0.9998501, '23.3.12', NULL, 133.0, 188.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.12', NULL), +(2335, 2394.0, 329.306, 8266813.643, 'T', 'propane', NULL, NULL, 2.249E-4, '23.3.13', NULL, 133.0, 1199.0, 'T', 'C3H8', NULL, NULL, 2.249E-4, '23.3.13', NULL), +(2336, 2395.0, 329.306, 8266813.643, 'T', 'water', NULL, NULL, 0.9997751, '23.3.13', NULL, 133.0, 1199.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.13', NULL), +(2337, 2396.0, 329.306, 1.247951017E7, 'T', 'propane', NULL, NULL, 2.267E-4, '23.3.14', NULL, 133.0, 1810.0, 'T', 'C3H8', NULL, NULL, 2.267E-4, '23.3.14', NULL), +(2338, 2397.0, 329.306, 1.247951017E7, 'T', 'water', NULL, NULL, 0.9997733, '23.3.14', NULL, 133.0, 1810.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.14', NULL), +(2339, 2398.0, 329.306, 1.9215687759E7, 'T', 'propane', NULL, NULL, 2.364E-4, '23.3.15', NULL, 133.0, 2787.0, 'T', 'C3H8', NULL, NULL, 2.364E-4, '23.3.15', NULL), +(2340, 2399.0, 329.306, 1.9215687759E7, 'T', 'water', NULL, NULL, 0.9997636, '23.3.15', NULL, 133.0, 2787.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.15', NULL), +(2341, 2400.0, 349.878, 1247951.017, 'T', 'propane', NULL, NULL, 1.146E-4, '23.3.16', NULL, 170.0, 181.0, 'T', 'C3H8', NULL, NULL, 1.146E-4, '23.3.16', NULL), +(2342, 2401.0, 349.878, 1247951.017, 'T', 'water', NULL, NULL, 0.9998854, '23.3.16', NULL, 170.0, 181.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.16', NULL), +(2343, 2402.0, 349.878, 2116690.399, 'T', 'propane', NULL, NULL, 1.763E-4, '23.3.17', NULL, 170.0, 307.0, 'T', 'C3H8', NULL, NULL, 1.763E-4, '23.3.17', NULL), +(2344, 2403.0, 349.878, 2116690.399, 'T', 'water', NULL, NULL, 0.9998237, '23.3.17', NULL, 170.0, 307.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.17', NULL), +(2345, 2404.0, 360.998, 903213.167, 'T', 'propane', NULL, NULL, 7.96E-5, '23.3.18', NULL, 190.0, 131.0, 'T', 'C3H8', NULL, NULL, 7.96E-5, '23.3.18', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2346, 2405.0, 360.998, 903213.167, 'T', 'water', NULL, NULL, 0.9999204, '23.3.18', NULL, 190.0, 131.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.18', NULL), +(2347, 2406.0, 360.998, 1544425.568, 'T', 'propane', NULL, NULL, 1.33E-4, '23.3.19', NULL, 190.0, 224.0, 'T', 'C3H8', NULL, NULL, 1.33E-4, '23.3.19', NULL), +(2348, 2407.0, 360.998, 1544425.568, 'T', 'water', NULL, NULL, 0.999867, '23.3.19', NULL, 190.0, 224.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.19', NULL), +(2349, 2408.0, 360.998, 2475217.763, 'T', 'propane', NULL, NULL, 1.96E-4, '23.3.20', NULL, 190.0, 359.0, 'T', 'C3H8', NULL, NULL, 1.96E-4, '23.3.20', NULL), +(2350, 2409.0, 360.998, 2475217.763, 'T', 'water', NULL, NULL, 0.999804, '23.3.20', NULL, 190.0, 359.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.20', NULL), +(2351, 2410.0, 360.998, 6825809.43, 'T', 'propane', NULL, NULL, 2.58E-4, '23.3.21', NULL, 190.0, 990.0, 'T', 'C3H8', NULL, NULL, 2.58E-4, '23.3.21', NULL), +(2352, 2411.0, 360.998, 6825809.43, 'T', 'water', NULL, NULL, 0.999742, '23.3.21', NULL, 190.0, 990.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.21', NULL), +(2353, 2412.0, 360.998, 1.0500714911E7, 'T', 'propane', NULL, NULL, 2.703E-4, '23.3.22', NULL, 190.0, 1523.0, 'T', 'C3H8', NULL, NULL, 2.703E-4, '23.3.22', NULL), +(2354, 2413.0, 360.998, 1.0500714911E7, 'T', 'water', NULL, NULL, 0.9997297, '23.3.22', NULL, 190.0, 1523.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.22', NULL), +(2355, 2414.0, 360.998, 1.3872251084E7, 'T', 'propane', NULL, NULL, 2.745E-4, '23.3.23', NULL, 190.0, 2012.0, 'T', 'C3H8', NULL, NULL, 2.745E-4, '23.3.23', NULL), +(2356, 2415.0, 360.998, 1.3872251084E7, 'T', 'water', NULL, NULL, 0.9997255, '23.3.23', NULL, 190.0, 2012.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.23', NULL), +(2357, 2416.0, 360.998, 1.9215687759E7, 'T', 'propane', NULL, NULL, 2.88E-4, '23.3.24', NULL, 190.0, 2787.0, 'T', 'C3H8', NULL, NULL, 2.88E-4, '23.3.24', NULL), +(2358, 2417.0, 360.998, 1.9215687759E7, 'T', 'water', NULL, NULL, 0.999712, '23.3.24', NULL, 190.0, 2787.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.24', NULL), +(2359, 2418.0, 369.7272, 1585794.11, 'T', 'propane', NULL, NULL, 1.261E-4, '23.3.25', NULL, 205.7, 230.0, 'T', 'C3H8', NULL, NULL, 1.261E-4, '23.3.25', NULL), +(2360, 2419.0, 369.7272, 1585794.11, 'T', 'water', NULL, NULL, 0.9998739, '23.3.25', NULL, 205.7, 230.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.25', NULL), +(2361, 2420.0, 369.7272, 2757902.8, 'T', 'propane', NULL, NULL, 2.162E-4, '23.3.26', NULL, 205.7, 400.0, 'T', 'C3H8', NULL, NULL, 2.162E-4, '23.3.26', NULL), +(2362, 2421.0, 369.7272, 2757902.8, 'T', 'water', NULL, NULL, 0.9997838, '23.3.26', NULL, 205.7, 400.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.26', NULL), +(2363, 2422.0, 369.7272, 3295693.846, 'T', 'propane', NULL, NULL, 2.449E-4, '23.3.27', NULL, 205.7, 478.0, 'T', 'C3H8', NULL, NULL, 2.449E-4, '23.3.27', NULL), +(2364, 2423.0, 369.7272, 3295693.846, 'T', 'water', NULL, NULL, 0.9997551, '23.3.27', NULL, 205.7, 478.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.27', NULL), +(2365, 2424.0, 369.7272, 6274228.87, 'T', 'propane', NULL, NULL, 2.842E-4, '23.3.28', NULL, 205.7, 910.0, 'T', 'C3H8', NULL, NULL, 2.842E-4, '23.3.28', NULL), +(2366, 2425.0, 369.7272, 6274228.87, 'T', 'water', NULL, NULL, 0.9997158, '23.3.28', NULL, 205.7, 910.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.28', NULL), +(2367, 2426.0, 369.7272, 1.247951017E7, 'T', 'propane', NULL, NULL, 3.008E-4, '23.3.29', NULL, 205.7, 1810.0, 'T', 'C3H8', NULL, NULL, 3.008E-4, '23.3.29', NULL), +(2368, 2427.0, 369.7272, 1.247951017E7, 'T', 'water', NULL, NULL, 0.9996992, '23.3.29', NULL, 205.7, 1810.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.29', NULL), +(2369, 2428.0, 369.7272, 1.9215687759E7, 'T', 'propane', NULL, NULL, 3.134E-4, '23.3.30', NULL, 205.7, 2787.0, 'T', 'C3H8', NULL, NULL, 3.134E-4, '23.3.30', NULL), +(2370, 2429.0, 369.7272, 1.9215687759E7, 'T', 'water', NULL, NULL, 0.9996866, '23.3.30', NULL, 205.7, 2787.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.30', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2371, 2430.0, 383.238, 1530636.054, 'T', 'propane', NULL, NULL, 1.301E-4, '23.3.31', NULL, 230.0, 222.0, 'T', 'C3H8', NULL, NULL, 1.301E-4, '23.3.31', NULL), +(2372, 2431.0, 383.238, 1530636.054, 'T', 'water', NULL, NULL, 0.9998699, '23.3.31', NULL, 230.0, 222.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.31', NULL), +(2373, 2432.0, 383.238, 3474957.528, 'T', 'propane', NULL, NULL, 2.633E-4, '23.3.32', NULL, 230.0, 504.0, 'T', 'C3H8', NULL, NULL, 2.633E-4, '23.3.32', NULL), +(2374, 2433.0, 383.238, 3474957.528, 'T', 'water', NULL, NULL, 0.9997367, '23.3.32', NULL, 230.0, 504.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.32', NULL), +(2375, 2434.0, 383.238, 5584753.17, 'T', 'propane', NULL, NULL, 3.243E-4, '23.2.33', NULL, 230.0, 810.0, 'T', 'C3H8', NULL, NULL, 3.243E-4, '23.2.33', NULL), +(2376, 2435.0, 383.238, 5584753.17, 'T', 'water', NULL, NULL, 0.9996757, '23.3.33', NULL, 230.0, 810.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.33', NULL), +(2377, 2436.0, 383.238, 7777285.896, 'T', 'propane', NULL, NULL, 3.414E-4, '23.3.34', NULL, 230.0, 1128.0, 'T', 'C3H8', NULL, NULL, 3.414E-4, '23.3.34', NULL), +(2378, 2437.0, 383.238, 7777285.896, 'T', 'water', NULL, NULL, 0.9996586, '23.3.34', NULL, 230.0, 1128.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.34', NULL), +(2379, 2438.0, 383.238, 1.247951017E7, 'T', 'propane', NULL, NULL, 3.542E-4, '23.3.35', NULL, 230.0, 1810.0, 'T', 'C3H8', NULL, NULL, 3.542E-4, '23.3.35', NULL), +(2380, 2439.0, 383.238, 1.247951017E7, 'T', 'water', NULL, NULL, 0.9996458, '23.3.35', NULL, 230.0, 1810.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.35', NULL), +(2381, 2440.0, 383.238, 1.9215687759E7, 'T', 'propane', NULL, NULL, 3.765E-4, '23.3.36', NULL, 230.0, 2787.0, 'T', 'C3H8', NULL, NULL, 3.765E-4, '23.3.36', NULL), +(2382, 2441.0, 383.238, 1.9215687759E7, 'T', 'water', NULL, NULL, 0.9996235, '23.3.36', NULL, 230.0, 2787.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.36', NULL), +(2383, 2442.0, 399.918, 1172108.69, 'T', 'propane', NULL, NULL, 1.001E-4, '23.3.37', NULL, 260.0, 170.0, 'T', 'C3H8', NULL, NULL, 1.001E-4, '23.3.37', NULL), +(2384, 2443.0, 399.918, 1172108.69, 'T', 'water', NULL, NULL, 0.9998999, '23.3.37', NULL, 260.0, 170.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.37', NULL), +(2385, 2444.0, 399.918, 2289059.324, 'T', 'propane', NULL, NULL, 1.964E-4, '23.3.38', NULL, 260.0, 332.0, 'T', 'C3H8', NULL, NULL, 1.964E-4, '23.3.38', NULL), +(2386, 2445.0, 399.918, 2289059.324, 'T', 'water', NULL, NULL, 0.9998036, '23.3.38', NULL, 260.0, 332.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.38', NULL), +(2387, 2446.0, 399.918, 3523220.827, 'T', 'propane', NULL, NULL, 2.892E-4, '23.3.39', NULL, 260.0, 511.0, 'T', 'C3H8', NULL, NULL, 2.892E-4, '23.3.39', NULL), +(2388, 2447.0, 399.918, 3523220.827, 'T', 'water', NULL, NULL, 0.9997108, '23.3.39', NULL, 260.0, 511.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.39', NULL), +(2389, 2448.0, 399.918, 5177962.507, 'T', 'propane', NULL, NULL, 3.665E-4, '23.3.40', NULL, 260.0, 751.0, 'T', 'C3H8', NULL, NULL, 3.665E-4, '23.3.40', NULL), +(2390, 2449.0, 399.918, 5177962.507, 'T', 'water', NULL, NULL, 0.9996335, '23.3.40', NULL, 260.0, 751.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.40', NULL), +(2391, 2450.0, 399.918, 8494340.624, 'T', 'propane', NULL, NULL, 4.197E-4, '23.3.41', NULL, 260.0, 1232.0, 'T', 'C3H8', NULL, NULL, 4.197E-4, '23.3.41', NULL), +(2392, 2451.0, 399.918, 8494340.624, 'T', 'water', NULL, NULL, 0.9995803, '23.3.41', NULL, 260.0, 1232.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.41', NULL), +(2393, 2452.0, 399.918, 1.247951017E7, 'T', 'propane', NULL, NULL, 4.393E-4, '23.3.42', NULL, 260.0, 1810.0, 'T', 'C3H8', NULL, NULL, 4.393E-4, '23.3.42', NULL), +(2394, 2453.0, 399.918, 1.247951017E7, 'T', 'water', NULL, NULL, 0.9995607, '23.3.42', NULL, 260.0, 1810.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.42', NULL), +(2395, 2454.0, 399.918, 1.9215687759E7, 'T', 'propane', NULL, NULL, 4.766E-4, '23.3.43', NULL, 260.0, 2787.0, 'T', 'C3H8', NULL, NULL, 4.766E-4, '23.3.43', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2396, 2455.0, 399.918, 1.9215687759E7, 'T', 'water', NULL, NULL, 0.9995234, '23.3.43', NULL, 260.0, 2787.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.43', NULL), +(2397, 2456.0, 422.158, 1827110.605, 'T', 'propane', NULL, NULL, 1.666E-4, '23.3.44', NULL, 300.0, 265.0, 'T', 'C3H8', NULL, NULL, 1.666E-4, '23.3.44', NULL), +(2398, 2457.0, 422.158, 1827110.605, 'T', 'water', NULL, NULL, 0.9998334, '23.3.44', NULL, 300.0, 265.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.44', NULL), +(2399, 2458.0, 422.158, 3247430.547, 'T', 'propane', NULL, NULL, 3.031E-4, '23.3.45', NULL, 300.0, 471.0, 'T', 'C3H8', NULL, NULL, 3.031E-4, '23.3.45', NULL), +(2400, 2459.0, 422.158, 3247430.547, 'T', 'water', NULL, NULL, 0.9996969, '23.3.45', NULL, 300.0, 471.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.45', NULL), +(2401, 2460.0, 422.158, 4784961.358, 'T', 'propane', NULL, NULL, 4.13E-4, '23.3.46', NULL, 300.0, 694.0, 'T', 'C3H8', NULL, NULL, 4.13E-4, '23.3.46', NULL), +(2402, 2461.0, 422.158, 4784961.358, 'T', 'water', NULL, NULL, 0.999587, '23.3.46', NULL, 300.0, 694.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.46', NULL), +(2403, 2462.0, 422.158, 6805125.159, 'T', 'propane', NULL, NULL, 4.876E-4, '23.3.47', NULL, 300.0, 987.0, 'T', 'C3H8', NULL, NULL, 4.876E-4, '23.3.47', NULL), +(2404, 2463.0, 422.158, 6805125.159, 'T', 'water', NULL, NULL, 0.9995124, '23.3.47', NULL, 300.0, 987.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.47', NULL), +(2405, 2464.0, 422.158, 1.0790294705E7, 'T', 'propane', NULL, NULL, 5.801E-4, '23.3.48', NULL, 300.0, 1565.0, 'T', 'C3H8', NULL, NULL, 5.801E-4, '23.3.48', NULL), +(2406, 2465.0, 422.158, 1.0790294705E7, 'T', 'water', NULL, NULL, 0.9994199, '23.3.48', NULL, 300.0, 1565.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.48', NULL), +(2407, 2466.0, 422.158, 1.247951017E7, 'T', 'propane', NULL, NULL, 6.078E-4, '23.3.49', NULL, 300.0, 1810.0, 'T', 'C3H8', NULL, NULL, 6.078E-4, '23.3.49', NULL), +(2408, 2467.0, 422.158, 1.247951017E7, 'T', 'water', NULL, NULL, 0.9993922, '23.3.49', NULL, 300.0, 1810.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.49', NULL), +(2409, 2468.0, 422.158, 1.9215687759E7, 'T', 'propane', NULL, NULL, 6.861E-4, '23.3.50', NULL, 300.0, 2787.0, 'T', 'C3H8', NULL, NULL, 6.861E-4, '23.3.50', NULL), +(2410, 2469.0, 422.158, 1.9215687759E7, 'T', 'water', NULL, NULL, 0.9993139, '23.3.50', NULL, 300.0, 2787.0, 'T', 'H2O', NULL, NULL, NULL, '23.3.50', NULL), +(2411, 2470.0, 302.6736, 2238727.5979, 'M', 'H2S', 0.9971, '0.997', 0.0323, '24.2.1', NULL, 85.1, 324.7, 'M', 'H2S', 0.9971, '0.997', 0.0323, '24.2.1', 'Reference 24: temp F, pressure psia, composition in mole fraction'), +(2412, 2471.0, 302.6736, 2238727.5979, 'M', 'water', 0.00290000000000001, '0.003', 0.9677, '24.2.1', NULL, 85.1, 324.7, 'M', 'H2O', NULL, NULL, NULL, '24.2.1', 'QUADRUPLE POINT'), +(2413, 2472.0, 312.07, 2757902.8, 'M', 'H2S', 0.9958, '0.991', 0.0335, '24.2.2', NULL, 102.0, 400.0, 'M', 'H2S', 0.9958, '0.991', 0.0335, '24.2.2', 'EXTRAPOLATED DATA'), +(2414, 2473.0, 312.07, 2757902.8, 'M', 'water', 0.00419999999999998, '0.009', 0.9665, '24.2.2', NULL, 102.0, 400.0, 'M', 'H2O', NULL, NULL, NULL, '24.2.2', 'CRITICAL STATE FOR GAS AND HYDROGEN SULFIDE-RICH LIQUID'), +(2415, 2474.0, 331.6968, 4136854.2, 'M', 'H2S', 0.9916, '0.9727', 0.0369, '24.2.3', NULL, 137.3, 600.0, 'M', 'H2S', 0.9916, '0.9727', 0.0369, '24.2.3', NULL), +(2416, 2475.0, 331.6968, 4136854.2, 'M', 'water', 0.00839999999999996, '0.0273', 0.9631, '24.2.3', NULL, 137.3, 600.0, 'M', 'H2O', NULL, NULL, NULL, '24.2.3', NULL), +(2417, 2476.0, 347.3204, 5515805.6, 'M', 'H2S', 0.9854, '0.9554', 0.0402, '24.2.4', NULL, 165.4, 800.0, 'M', 'H2S', 0.9854, '0.9554', 0.0402, '24.2.4', NULL), +(2418, 2477.0, 347.3204, 5515805.6, 'M', 'water', 0.0145999999999999, '0.0446', 0.9598, '24.2.4', NULL, 165.4, 800.0, 'M', 'H2O', NULL, NULL, NULL, '24.2.4', NULL), +(2419, 2478.0, 360.2196, 6894757.0, 'M', 'H2S', 0.9758, '0.9402', 0.0435, '24.2.5', NULL, 188.6, 1000.0, 'M', 'H2S', 0.9758, '0.9402', 0.0435, '24.2.5', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2420, 2479.0, 360.2196, 6894757.0, 'M', 'water', 0.0242, '0.0598', 0.9565, '24.2.5', NULL, 188.6, 1000.0, 'M', 'H2O', NULL, NULL, NULL, '24.2.5', NULL), +(2421, 2480.0, 371.9512, 8618446.25, 'M', 'H2S', 0.9552, '0.9325', 0.0479, '24.2.6', NULL, 209.7, 1250.0, 'M', 'H2S', 0.9552, '0.9325', 0.0479, '24.2.6', NULL), +(2422, 2481.0, 371.9512, 8618446.25, 'M', 'water', 0.0448, '0.0675', 0.9521, '24.2.6', NULL, 209.7, 1250.0, 'M', 'H2O', NULL, NULL, NULL, '24.2.6', NULL), +(2423, 2482.0, 373.3968, 9004552.642, 'M', 'H2S', 0.9423, '0.9423', 0.0488, '24.2.7', NULL, 212.3, 1306.0, 'M', 'H2S', 0.9423, '0.9423', 0.0488, '24.2.7', NULL), +(2424, 2483.0, 373.3968, 9004552.642, 'M', 'water', 0.0577, '0.0577', 0.9512, '24.2.7', NULL, 212.3, 1306.0, 'M', 'H2O', NULL, NULL, NULL, '24.2.7', NULL), +(2425, 2484.0, 310.958, 689475.7, 'T', 'H2S', 0.9894, NULL, 0.0082, '24.3.1', NULL, 100.0, 100.0, 'T', 'H2S', 0.9894, NULL, 0.0082, '24.3.1', NULL), +(2426, 2485.0, 310.958, 689475.7, 'T', 'water', 0.0106000000000001, NULL, 0.9918, '24.3.1', NULL, 100.0, 100.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.1', NULL), +(2427, 2486.0, 310.958, 1034213.55, 'T', 'H2S', 0.9925, NULL, 0.0123, '24.3.2', NULL, 100.0, 150.0, 'T', 'H2S', 0.9925, NULL, 0.0123, '24.3.2', NULL), +(2428, 2487.0, 310.958, 1034213.55, 'T', 'water', 0.00749999999999995, NULL, 0.9877, '24.3.2', NULL, 100.0, 150.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.2', NULL), +(2429, 2488.0, 310.958, 1378951.4, 'T', 'H2S', 0.994, NULL, 0.0165, '24.3.4', NULL, 100.0, 200.0, 'T', 'H2S', 0.994, NULL, 0.0165, '24.3.4', NULL), +(2430, 2489.0, 310.958, 1378951.4, 'T', 'water', 0.00600000000000001, NULL, 0.9835, '24.3.4', NULL, 100.0, 200.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.4', NULL), +(2431, 2490.0, 310.958, 1723689.25, 'T', 'H2S', 0.9949, NULL, 0.0207, '24.3.5', NULL, 100.0, 250.0, 'T', 'H2S', 0.9949, NULL, 0.0207, '24.3.5', NULL), +(2432, 2491.0, 310.958, 1723689.25, 'T', 'water', 0.00509999999999999, NULL, 0.9793, '24.3.5', NULL, 100.0, 250.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.5', NULL), +(2433, 2492.0, 310.958, 2068427.1, 'T', 'H2S', 0.9954, NULL, 0.025, '24.3.6', NULL, 100.0, 300.0, 'T', 'H2S', 0.9954, NULL, 0.025, '24.3.6', NULL), +(2434, 2493.0, 310.958, 2068427.1, 'T', 'water', 0.00460000000000005, NULL, 0.975, '24.3.6', NULL, 100.0, 300.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.6', NULL), +(2435, 2494.0, 310.958, 2689644.7057, 'T', 'H2S', 0.996, NULL, 0.0333, '24.3.7', NULL, 100.0, 390.1, 'T', 'H2S', 0.996, NULL, 0.0333, '24.3.7', 'THREE-PHASE EQ. INVOLVING AQUEOUS LIQUID, HYDROGEN SULFIDE-RICH LIQUID AND GAS'), +(2436, 2495.0, 310.958, 2689644.7057, 'T', 'water', 0.004, NULL, 0.9667, '24.3.7', NULL, 100.0, 390.1, 'T', 'H2O', NULL, NULL, NULL, '24.3.7', NULL), +(2437, 2496.0, 344.318, 689475.7, 'T', 'H2S', 0.9493, NULL, 0.005, '24.3.8', NULL, 160.0, 100.0, 'T', 'H2S', 0.9493, NULL, 0.005, '24.3.8', NULL), +(2438, 2497.0, 344.318, 689475.7, 'T', 'water', 0.0507, NULL, 0.995, '24.3.8', NULL, 160.0, 100.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.8', NULL), +(2439, 2498.0, 344.318, 1034213.55, 'T', 'H2S', 0.9643, NULL, 0.0076, '24.3.9', NULL, 160.0, 150.0, 'T', 'H2S', 0.9643, NULL, 0.0076, '24.3.9', NULL), +(2440, 2499.0, 344.318, 1034213.55, 'T', 'water', 0.0357, NULL, 0.9924, '24.3.9', NULL, 160.0, 150.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.9', NULL), +(2441, 2500.0, 344.318, 1378951.4, 'T', 'H2S', 0.9726, NULL, 0.0102, '24.3.10', NULL, 160.0, 200.0, 'T', 'H2S', 0.9726, NULL, 0.0102, '24.3.10', NULL), +(2442, 2501.0, 344.318, 1378951.4, 'T', 'water', 0.0274, NULL, 0.9898, '24.3.10', NULL, 160.0, 200.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.10', NULL), +(2443, 2502.0, 344.318, 1723689.25, 'T', 'H2S', 0.9771, NULL, 0.0128, '24.3.11', NULL, 160.0, 250.0, 'T', 'H2S', 0.9771, NULL, 0.0128, '24.3.11', NULL), +(2444, 2503.0, 344.318, 1723689.25, 'T', 'water', 0.0229, NULL, 0.9872, '24.3.11', NULL, 160.0, 250.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.11', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2445, 2504.0, 344.318, 2068427.1, 'T', 'H2S', 0.9801, NULL, 0.0154, '24.3.12', NULL, 160.0, 300.0, 'T', 'H2S', 0.9801, NULL, 0.0154, '24.3.12', NULL), +(2446, 2505.0, 344.318, 2068427.1, 'T', 'water', 0.0199, NULL, 0.9846, '24.3.12', NULL, 160.0, 300.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.12', NULL), +(2447, 2506.0, 344.318, 2757902.8, 'T', 'H2S', 0.9837, NULL, 0.0206, '24.3.13', NULL, 160.0, 400.0, 'T', 'H2S', 0.9837, NULL, 0.0206, '24.3.13', NULL), +(2448, 2507.0, 344.318, 2757902.8, 'T', 'water', 0.0163, NULL, 0.9794, '24.3.13', NULL, 160.0, 400.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.13', NULL), +(2449, 2508.0, 344.318, 3447378.5, 'T', 'H2S', 0.9856, NULL, 0.0258, '24.3.14', NULL, 160.0, 500.0, 'T', 'H2S', 0.9856, NULL, 0.0258, '24.3.14', NULL), +(2450, 2509.0, 344.318, 3447378.5, 'T', 'water', 0.0144, NULL, 0.9742, '24.3.14', NULL, 160.0, 500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.14', NULL), +(2451, 2510.0, 344.318, 4136854.2, 'T', 'H2S', 0.9865, NULL, 0.031, '24.3.15', NULL, 160.0, 600.0, 'T', 'H2S', 0.9865, NULL, 0.031, '24.3.15', NULL), +(2452, 2511.0, 344.318, 4136854.2, 'T', 'water', 0.0135, NULL, 0.969, '24.3.15', NULL, 160.0, 600.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.15', NULL), +(2453, 2512.0, 344.318, 4826329.9, 'T', 'H2S', 0.9868, NULL, 0.0364, '24.3.16', NULL, 160.0, 700.0, 'T', 'H2S', 0.9868, NULL, 0.0364, '24.3.16', NULL), +(2454, 2513.0, 344.318, 4826329.9, 'T', 'water', 0.0132, NULL, 0.9636, '24.3.16', NULL, 160.0, 700.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.16', NULL), +(2455, 2514.0, 344.318, 5235878.4658, 'T', 'H2S', 0.9869, NULL, 0.0395, '24.3.17', NULL, 160.0, 759.4, 'T', 'H2S', 0.9869, NULL, 0.0395, '24.3.17', 'THREE-PHASE EQ. INVOLVING AQUEOUS LIQUID, HYDROGEN SULFIDE-RICH LIQUID AND GAS'), +(2456, 2515.0, 344.318, 5235878.4658, 'T', 'water', 0.0131, NULL, 0.9605, '24.3.17', NULL, 160.0, 759.4, 'T', 'H2O', NULL, NULL, NULL, '24.3.17', NULL), +(2457, 2516.0, 377.678, 1378951.4, 'T', 'H2S', 0.9046, NULL, 0.0077, '24.3.18', NULL, 220.0, 200.0, 'T', 'H2S', 0.9046, NULL, 0.0077, '24.3.18', NULL), +(2458, 2517.0, 377.678, 1378951.4, 'T', 'water', 0.0954, NULL, 0.9923, '24.3.18', NULL, 220.0, 200.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.18', NULL), +(2459, 2518.0, 377.678, 2757902.8, 'T', 'H2S', 0.9477, NULL, 0.0156, '24.3.19', NULL, 220.0, 400.0, 'T', 'H2S', 0.9477, NULL, 0.0156, '24.3.19', NULL), +(2460, 2519.0, 377.678, 2757902.8, 'T', 'water', 0.0523, NULL, 0.9844, '24.3.19', NULL, 220.0, 400.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.19', NULL), +(2461, 2520.0, 377.678, 4136854.2, 'T', 'H2S', 0.9597, NULL, 0.023, '24.3.20', NULL, 220.0, 600.0, 'T', 'H2S', 0.9597, NULL, 0.023, '24.3.20', NULL), +(2462, 2521.0, 377.678, 4136854.2, 'T', 'water', 0.0403, NULL, 0.977, '24.3.20', NULL, 220.0, 600.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.20', NULL), +(2463, 2522.0, 377.678, 5515805.6, 'T', 'H2S', 0.9647, NULL, 0.0301, '24.3.21', NULL, 220.0, 800.0, 'T', 'H2S', 0.9647, NULL, 0.0301, '24.3.21', NULL), +(2464, 2523.0, 377.678, 5515805.6, 'T', 'water', 0.0353, NULL, 0.9699, '24.3.21', NULL, 220.0, 800.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.21', NULL), +(2465, 2524.0, 377.678, 6894757.0, 'T', 'H2S', 0.9664, NULL, 0.0371, '24.3.22', NULL, 220.0, 1000.0, 'T', 'H2S', 0.9664, NULL, 0.0371, '24.3.22', NULL), +(2466, 2525.0, 377.678, 6894757.0, 'T', 'water', 0.0336, NULL, 0.9629, '24.3.22', NULL, 220.0, 1000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.22', NULL), +(2467, 2526.0, 377.678, 8618446.25, 'T', 'H2S', 0.9665, NULL, 0.0463, '24.3.23', NULL, 220.0, 1250.0, 'T', 'H2S', 0.9665, NULL, 0.0463, '24.3.23', NULL), +(2468, 2527.0, 377.678, 8618446.25, 'T', 'water', 0.0335, NULL, 0.9537, '24.3.23', NULL, 220.0, 1250.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.23', NULL), +(2469, 2528.0, 377.678, 1.03421355E7, 'T', 'H2S', 0.9651, NULL, 0.0577, '24.3.24', NULL, 220.0, 1500.0, 'T', 'H2S', 0.9651, NULL, 0.0577, '24.3.24', NULL), +(2470, 2529.0, 377.678, 1.03421355E7, 'T', 'water', 0.0349, NULL, 0.9423, '24.3.24', NULL, 220.0, 1500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.24', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2471, 2530.0, 377.678, 1.206582475E7, 'T', 'H2S', 0.963, NULL, 0.069, '24.3.25', NULL, 220.0, 1750.0, 'T', 'H2S', 0.963, NULL, 0.069, '24.3.25', 'COMPOSITION OF AQUEOUS LIQUID AT ALL HIGHER PRESSURES OBTAINED BY EXTRAPOLATION'), +(2472, 2531.0, 377.678, 1.206582475E7, 'T', 'water', 0.037, NULL, 0.931, '24.3.25', NULL, 220.0, 1750.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.25', NULL), +(2473, 2532.0, 377.678, 1.3789514E7, 'T', 'H2S', 0.9602, NULL, 0.0823, '24.3.26', NULL, 220.0, 2000.0, 'T', 'H2S', 0.9602, NULL, 0.0823, '24.3.26', NULL), +(2474, 2533.0, 377.678, 1.3789514E7, 'T', 'water', 0.0397999999999999, NULL, 0.9177, '24.3.26', NULL, 220.0, 2000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.26', NULL), +(2475, 2534.0, 377.678, 1.551320325E7, 'T', 'H2S', 0.9568, NULL, 0.0973, '24.3.27', NULL, 220.0, 2250.0, 'T', 'H2S', 0.9568, NULL, 0.0973, '24.3.27', NULL), +(2476, 2535.0, 377.678, 1.551320325E7, 'T', 'water', 0.0432, NULL, 0.9027, '24.3.27', NULL, 220.0, 2250.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.27', NULL), +(2477, 2536.0, 377.678, 1.72368925E7, 'T', 'H2S', 0.9531, NULL, 0.1145, '24.3.28', NULL, 220.0, 2500.0, 'T', 'H2S', 0.9531, NULL, 0.1145, '24.3.28', NULL), +(2478, 2537.0, 377.678, 1.72368925E7, 'T', 'water', 0.0469000000000001, NULL, 0.8855, '24.3.28', NULL, 220.0, 2500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.28', NULL), +(2479, 2538.0, 377.678, 1.896058175E7, 'T', 'H2S', 0.9491, NULL, 0.1346, '24.3.29', NULL, 220.0, 2750.0, 'T', 'H2S', 0.9491, NULL, 0.1346, '24.3.29', NULL), +(2480, 2539.0, 377.678, 1.896058175E7, 'T', 'water', 0.0508999999999999, NULL, 0.8654, '24.3.29', NULL, 220.0, 2750.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.29', NULL), +(2481, 2540.0, 377.678, 2.0684271E7, 'T', 'H2S', 0.9451, NULL, 0.1586, '24.3.30', NULL, 220.0, 3000.0, 'T', 'H2S', 0.9451, NULL, 0.1586, '24.3.30', NULL), +(2482, 2541.0, 377.678, 2.0684271E7, 'T', 'water', 0.0548999999999999, NULL, 0.8414, '24.3.30', NULL, 220.0, 3000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.30', NULL), +(2483, 2542.0, 377.678, 2.41316495E7, 'T', 'H2S', 0.9371, NULL, NULL, '24.3.31', NULL, 220.0, 3500.0, 'T', 'H2S', 0.9371, NULL, NULL, '24.3.31', NULL), +(2484, 2543.0, 377.678, 2.41316495E7, 'T', 'water', 0.0629, NULL, NULL, '24.3.31', NULL, 220.0, 3500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.31', NULL), +(2485, 2544.0, 377.678, 2.7579028E7, 'T', 'H2S', 0.9288, NULL, NULL, '24.3.32', NULL, 220.0, 4000.0, 'T', 'H2S', 0.9288, NULL, NULL, '24.3.32', NULL), +(2486, 2545.0, 377.678, 2.7579028E7, 'T', 'water', 0.0712, NULL, NULL, '24.3.32', NULL, 220.0, 4000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.32', NULL), +(2487, 2546.0, 377.678, 3.10264065E7, 'T', 'H2S', 0.9203, NULL, NULL, '24.3.33', NULL, 220.0, 4500.0, 'T', 'H2S', 0.9203, NULL, NULL, '24.3.33', NULL), +(2488, 2547.0, 377.678, 3.10264065E7, 'T', 'water', 0.0797, NULL, NULL, '24.3.33', NULL, 220.0, 4500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.33', NULL), +(2489, 2548.0, 377.678, 3.4473785E7, 'T', 'H2S', 0.9115, NULL, NULL, '24.3.34', NULL, 220.0, 5000.0, 'T', 'H2S', 0.9115, NULL, NULL, '24.3.34', NULL), +(2490, 2549.0, 377.678, 3.4473785E7, 'T', 'water', 0.0885, NULL, NULL, '24.3.34', NULL, 220.0, 5000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.34', NULL), +(2491, 2550.0, 411.038, 1378951.4, 'T', 'H2S', 0.7375, NULL, 0.0057, '24.3.35', NULL, 280.0, 200.0, 'T', 'H2S', 0.7375, NULL, 0.0057, '24.3.35', NULL), +(2492, 2551.0, 411.038, 1378951.4, 'T', 'water', 0.2625, NULL, 0.9943, '24.3.35', NULL, 280.0, 200.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.35', NULL), +(2493, 2552.0, 411.038, 2757902.8, 'T', 'H2S', 0.8589, NULL, 0.0127, '24.3.36', NULL, 280.0, 400.0, 'T', 'H2S', 0.8589, NULL, 0.0127, '24.3.36', NULL), +(2494, 2553.0, 411.038, 2757902.8, 'T', 'water', 0.1411, NULL, 0.9873, '24.3.36', NULL, 280.0, 400.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.36', NULL), +(2495, 2554.0, 411.038, 4136854.2, 'T', 'H2S', 0.8984, NULL, 0.0191, '24.3.37', NULL, 280.0, 600.0, 'T', 'H2S', 0.8984, NULL, 0.0191, '24.3.37', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2496, 2555.0, 411.038, 4136854.2, 'T', 'water', 0.1016, NULL, 0.9809, '24.3.37', NULL, 280.0, 600.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.37', NULL), +(2497, 2556.0, 411.038, 5515805.6, 'T', 'H2S', 0.9155, NULL, 0.025, '24.3.38', NULL, 280.0, 800.0, 'T', 'H2S', 0.9155, NULL, 0.025, '24.3.38', NULL), +(2498, 2557.0, 411.038, 5515805.6, 'T', 'water', 0.0845, NULL, 0.975, '24.3.38', NULL, 280.0, 800.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.38', NULL), +(2499, 2558.0, 411.038, 6894757.0, 'T', 'H2S', 0.9248, NULL, 0.0308, '24.3.39', NULL, 280.0, 1000.0, 'T', 'H2S', 0.9248, NULL, 0.0308, '24.3.39', NULL), +(2500, 2559.0, 411.038, 6894757.0, 'T', 'water', 0.0752, NULL, 0.9692, '24.3.39', NULL, 280.0, 1000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.39', NULL), +(2501, 2560.0, 411.038, 8618446.25, 'T', 'H2S', 0.9307, NULL, 0.0382, '24.3.40', NULL, 280.0, 1250.0, 'T', 'H2S', 0.9307, NULL, 0.0382, '24.3.40', NULL), +(2502, 2561.0, 411.038, 8618446.25, 'T', 'water', 0.0693, NULL, 0.9618, '24.3.40', NULL, 280.0, 1250.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.40', NULL), +(2503, 2562.0, 411.038, 1.03421355E7, 'T', 'H2S', 0.933, NULL, 0.0463, '24.3.41', NULL, 280.0, 1500.0, 'T', 'H2S', 0.933, NULL, 0.0463, '24.3.41', NULL), +(2504, 2563.0, 411.038, 1.03421355E7, 'T', 'water', 0.0669999999999999, NULL, 0.9537, '24.3.41', NULL, 280.0, 1500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.41', NULL), +(2505, 2564.0, 411.038, 1.206582475E7, 'T', 'H2S', 0.9327, NULL, 0.055, '24.3.42', NULL, 280.0, 1750.0, 'T', 'H2S', 0.9327, NULL, 0.055, '24.3.42', NULL), +(2506, 2565.0, 411.038, 1.206582475E7, 'T', 'water', 0.0673, NULL, 0.945, '24.3.42', NULL, 280.0, 1750.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.42', NULL), +(2507, 2566.0, 411.038, 1.3789514E7, 'T', 'H2S', 0.9303, NULL, 0.0647, '24.3.43', NULL, 280.0, 2000.0, 'T', 'H2S', 0.9303, NULL, 0.0647, '24.3.43', 'COMPOSITION OF AQUEOUS LIQUID AT ALL HIGHER PRESSURES OBTAINED BY EXTRAPOLATION'), +(2508, 2567.0, 411.038, 1.3789514E7, 'T', 'water', 0.0697, NULL, 0.9353, '24.3.43', NULL, 280.0, 2000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.43', NULL), +(2509, 2568.0, 411.038, 1.551320325E7, 'T', 'H2S', 0.9263, NULL, 0.075, '24.3.44', NULL, 280.0, 2250.0, 'T', 'H2S', 0.9263, NULL, 0.075, '24.3.44', NULL), +(2510, 2569.0, 411.038, 1.551320325E7, 'T', 'water', 0.0737, NULL, 0.925, '24.3.44', NULL, 280.0, 2250.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.44', NULL), +(2511, 2570.0, 411.038, 1.72368925E7, 'T', 'H2S', 0.9213, NULL, 0.086, '24.3.45', NULL, 280.0, 2500.0, 'T', 'H2S', 0.9213, NULL, 0.086, '24.3.45', NULL), +(2512, 2571.0, 411.038, 1.72368925E7, 'T', 'water', 0.0787, NULL, 0.914, '24.3.45', NULL, 280.0, 2500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.45', NULL), +(2513, 2572.0, 411.038, 1.896058175E7, 'T', 'H2S', 0.9159, NULL, 0.0978, '24.3.46', NULL, 280.0, 2750.0, 'T', 'H2S', 0.9159, NULL, 0.0978, '24.3.46', NULL), +(2514, 2573.0, 411.038, 1.896058175E7, 'T', 'water', 0.0841, NULL, 0.9022, '24.3.46', NULL, 280.0, 2750.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.46', NULL), +(2515, 2574.0, 411.038, 2.0684271E7, 'T', 'H2S', 0.9104, NULL, 0.1106, '24.3.47', NULL, 280.0, 3000.0, 'T', 'H2S', 0.9104, NULL, 0.1106, '24.3.47', NULL), +(2516, 2575.0, 411.038, 2.0684271E7, 'T', 'water', 0.0896, NULL, NULL, '24.3.47', NULL, 280.0, 3000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.47', NULL), +(2517, 2576.0, 411.038, 2.41316495E7, 'T', 'H2S', 0.8986, NULL, NULL, '24.3.48', NULL, 280.0, 3500.0, 'T', 'H2S', 0.8986, NULL, NULL, '24.3.48', NULL), +(2518, 2577.0, 411.038, 2.41316495E7, 'T', 'water', 0.1014, NULL, NULL, '24.3.48', NULL, 280.0, 3500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.48', NULL), +(2519, 2578.0, 411.038, 2.7579028E7, 'T', 'H2S', 0.887, NULL, NULL, '24.3.49', NULL, 280.0, 4000.0, 'T', 'H2S', 0.887, NULL, NULL, '24.3.49', NULL), +(2520, 2579.0, 411.038, 2.7579028E7, 'T', 'water', 0.113, NULL, NULL, '24.3.49', NULL, 280.0, 4000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.49', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2521, 2580.0, 411.038, 3.10264065E7, 'T', 'H2S', 0.875, NULL, NULL, '24.3.50', NULL, 280.0, 4500.0, 'T', 'H2S', 0.875, NULL, NULL, '24.3.50', NULL), +(2522, 2581.0, 411.038, 3.10264065E7, 'T', 'water', 0.125, NULL, NULL, '24.3.50', NULL, 280.0, 4500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.50', NULL), +(2523, 2582.0, 411.038, 3.4473785E7, 'T', 'H2S', 0.863, NULL, NULL, '24.3.51', NULL, 280.0, 5000.0, 'T', 'H2S', 0.863, NULL, NULL, '24.3.51', NULL), +(2524, 2583.0, 411.038, 3.4473785E7, 'T', 'water', 0.137, NULL, NULL, '24.3.51', NULL, 280.0, 5000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.51', NULL), +(2525, 2584.0, 444.398, 1378951.4, 'T', 'H2S', 0.3981, NULL, 0.0029, '24.3.52', NULL, 340.0, 200.0, 'T', 'H2S', 0.3981, NULL, 0.0029, '24.3.52', NULL), +(2526, 2585.0, 444.398, 1378951.4, 'T', 'water', 0.6019, NULL, 0.9971, '24.3.52', NULL, 340.0, 200.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.52', NULL), +(2527, 2586.0, 444.398, 2757902.8, 'T', 'H2S', 0.6828, NULL, 0.0094, '24.3.53', NULL, 340.0, 400.0, 'T', 'H2S', 0.6828, NULL, 0.0094, '24.3.53', NULL), +(2528, 2587.0, 444.398, 2757902.8, 'T', 'water', 0.3172, NULL, 0.9906, '24.3.53', NULL, 340.0, 400.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.53', NULL), +(2529, 2588.0, 444.398, 4136854.2, 'T', 'H2S', 0.7772, NULL, 0.0155, '24.3.54', NULL, 340.0, 600.0, 'T', 'H2S', 0.7772, NULL, 0.0155, '24.3.54', NULL), +(2530, 2589.0, 444.398, 4136854.2, 'T', 'water', 0.2228, NULL, 0.9845, '24.3.54', NULL, 340.0, 600.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.54', NULL), +(2531, 2590.0, 444.398, 5515805.6, 'T', 'H2S', 0.8224, NULL, 0.0214, '24.3.55', NULL, 340.0, 800.0, 'T', 'H2S', 0.8224, NULL, 0.0214, '24.3.55', NULL), +(2532, 2591.0, 444.398, 5515805.6, 'T', 'water', 0.1776, NULL, 0.9786, '24.3.55', NULL, 340.0, 800.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.55', NULL), +(2533, 2592.0, 444.398, 6894757.0, 'T', 'H2S', 0.8466, NULL, 0.0273, '24.3.56', NULL, 340.0, 1000.0, 'T', 'H2S', 0.8466, NULL, 0.0273, '24.3.56', NULL), +(2534, 2593.0, 444.398, 6894757.0, 'T', 'water', 0.1534, NULL, 0.9727, '24.3.56', NULL, 340.0, 1000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.56', NULL), +(2535, 2594.0, 444.398, 8618446.25, 'T', 'H2S', 0.8646, NULL, 0.0351, '24.3.57', NULL, 340.0, 1250.0, 'T', 'H2S', 0.8646, NULL, 0.0351, '24.3.57', NULL), +(2536, 2595.0, 444.398, 8618446.25, 'T', 'water', 0.1354, NULL, 0.9649, '24.3.57', NULL, 340.0, 1250.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.57', NULL), +(2537, 2596.0, 444.398, 1.03421355E7, 'T', 'H2S', 0.8742, NULL, 0.0435, '24.3.58', NULL, 340.0, 1500.0, 'T', 'H2S', 0.8742, NULL, 0.0435, '24.3.58', NULL), +(2538, 2597.0, 444.398, 1.03421355E7, 'T', 'water', 0.1258, NULL, 0.9565, '24.3.58', NULL, 340.0, 1500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.58', NULL), +(2539, 2598.0, 444.398, 1.206582475E7, 'T', 'H2S', 0.8788, NULL, 0.052, '24.3.59', NULL, 340.0, 1750.0, 'T', 'H2S', 0.8788, NULL, 0.052, '24.3.59', NULL), +(2540, 2599.0, 444.398, 1.206582475E7, 'T', 'water', 0.1212, NULL, 0.948, '24.3.59', NULL, 340.0, 1750.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.59', NULL), +(2541, 2600.0, 444.398, 1.3789514E7, 'T', 'H2S', 0.8797, NULL, 0.061, '24.3.60', NULL, 340.0, 2000.0, 'T', 'H2S', 0.8797, NULL, 0.061, '24.3.60', 'COMPOSITION OF AQUEOUS LIQUID AT ALL HIGHER PRESSURES OBTAINED BY EXTRAPOLATION'), +(2542, 2601.0, 444.398, 1.3789514E7, 'T', 'water', 0.1203, NULL, 0.939, '24.3.60', NULL, 340.0, 2000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.60', NULL), +(2543, 2602.0, 444.398, 1.551320325E7, 'T', 'H2S', 0.8779, NULL, 0.0705, '24.3.61', NULL, 340.0, 2250.0, 'T', 'H2S', 0.8779, NULL, 0.0705, '24.3.61', NULL), +(2544, 2603.0, 444.398, 1.551320325E7, 'T', 'water', 0.1221, NULL, 0.9295, '24.3.61', NULL, 340.0, 2250.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.61', NULL), +(2545, 2604.0, 444.398, 1.72368925E7, 'T', 'H2S', 0.874, NULL, 0.0805, '24.3.62', NULL, 340.0, 2500.0, 'T', 'H2S', 0.874, NULL, 0.0805, '24.3.62', NULL), +(2546, 2605.0, 444.398, 1.72368925E7, 'T', 'water', 0.126, NULL, 0.9195, '24.3.62', NULL, 340.0, 2500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.62', NULL); +INSERT INTO PUBLIC.LUCIADATA8(ID1, ID, TEMPERATURE, PRESSURE, PHASE, COMPONENT, Y, L1, L2, REF, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15, FIELD16, FIELD17, FIELD18) VALUES +(2547, 2606.0, 444.398, 1.896058175E7, 'T', 'H2S', 0.8681, NULL, 0.091, '24.3.63', NULL, 340.0, 2750.0, 'T', 'H2S', 0.8681, NULL, 0.091, '24.3.63', NULL), +(2548, 2607.0, 444.398, 1.896058175E7, 'T', 'water', 0.1319, NULL, 0.909, '24.3.63', NULL, 340.0, 2750.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.63', NULL), +(2549, 2608.0, 444.398, 2.0684271E7, 'T', 'H2S', 0.8606, NULL, 0.1024, '24.3.64', NULL, 340.0, 3000.0, 'T', 'H2S', 0.8606, NULL, 0.1024, '24.3.64', NULL), +(2550, 2609.0, 444.398, 2.0684271E7, 'T', 'water', 0.1394, NULL, NULL, '24.3.64', NULL, 340.0, 3000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.64', NULL), +(2551, 2610.0, 444.398, 2.41316495E7, 'T', 'H2S', 0.8436, NULL, NULL, '24.3.65', NULL, 340.0, 3500.0, 'T', 'H2S', 0.8436, NULL, NULL, '24.3.65', NULL), +(2552, 2611.0, 444.398, 2.41316495E7, 'T', 'water', 0.1564, NULL, NULL, '24.3.65', NULL, 340.0, 3500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.65', NULL), +(2553, 2612.0, 444.398, 2.7579028E7, 'T', 'H2S', 0.8248, NULL, NULL, '24.3.66', NULL, 340.0, 4000.0, 'T', 'H2S', 0.8248, NULL, NULL, '24.3.66', NULL), +(2554, 2613.0, 444.398, 2.7579028E7, 'T', 'water', 0.1752, NULL, NULL, '24.3.66', NULL, 340.0, 4000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.66', NULL), +(2555, 2614.0, 444.398, 3.10264065E7, 'T', 'H2S', 0.8061, NULL, NULL, '24.3.67', NULL, 340.0, 4500.0, 'T', 'H2S', 0.8061, NULL, NULL, '24.3.67', NULL), +(2556, 2615.0, 444.398, 3.10264065E7, 'T', 'water', 0.1939, NULL, NULL, '24.3.67', NULL, 340.0, 4500.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.67', NULL), +(2557, 2616.0, 444.398, 3.4473785E7, 'T', 'H2S', 0.7864, NULL, NULL, '24.3.68', NULL, 340.0, 5000.0, 'T', 'H2S', 0.7864, NULL, NULL, '24.3.68', NULL), +(2558, 2617.0, 444.398, 3.4473785E7, 'T', 'water', 0.2136, NULL, NULL, '24.3.68', NULL, 340.0, 5000.0, 'T', 'H2O', NULL, NULL, NULL, '24.3.68', NULL); +CREATE CACHED TABLE PUBLIC.MATERIALPIPEPROPERTIES( + ID INT NOT NULL, + MATERIALNAME VARCHAR(255) DEFAULT NULL, + GRADE VARCHAR(255) DEFAULT NULL, + SPECIFICATIONNUMBER VARCHAR(255) DEFAULT NULL, + MINIMUMYEILDSTRENGTH DOUBLE DEFAULT '0', + DESCRIPTION VARCHAR(255) DEFAULT NULL +); +-- 2 +/- SELECT COUNT(*) FROM PUBLIC.MATERIALPIPEPROPERTIES; +INSERT INTO PUBLIC.MATERIALPIPEPROPERTIES(ID, MATERIALNAME, GRADE, SPECIFICATIONNUMBER, MINIMUMYEILDSTRENGTH, DESCRIPTION) VALUES +(1, 'Carbon Steel Pipe', 'A25', 'API5L', 35000.0, 'in psi'), +(2, 'Carbon Steel Pipe2', 'A', 'API5L', 35000.0, 'in psi'); +CREATE CACHED TABLE PUBLIC.MATERIALPLATEPROPERTIES( + ID INT NOT NULL, + MATERIALNAME VARCHAR(255) DEFAULT NULL, + GRADE VARCHAR(255) DEFAULT NULL, + SPECIFICATIONNUMBER VARCHAR(255) DEFAULT NULL, + DIVISIONCLASS1 DOUBLE DEFAULT '0', + DIVISIONCLASS2 DOUBLE DEFAULT '0', + DESCRIPTION VARCHAR(255) DEFAULT NULL +); +-- 2 +/- SELECT COUNT(*) FROM PUBLIC.MATERIALPLATEPROPERTIES; +INSERT INTO PUBLIC.MATERIALPLATEPROPERTIES(ID, MATERIALNAME, GRADE, SPECIFICATIONNUMBER, DIVISIONCLASS1, DIVISIONCLASS2, DESCRIPTION) VALUES +(1, 'Carbon Steel Plates and Sheets', 'SA-516', '55', 13800.0, 18300.0, 'in psi'), +(2, 'Carbon Steel Plates and Sheets', 'SA-5160', '60', 15000.0, 20000.0, 'in psi'); +CREATE CACHED TABLE PUBLIC.MBWR32PARAM( + ID INT NOT NULL, + NAME VARCHAR(50) DEFAULT NULL, + A0 DOUBLE DEFAULT '0', + A1 DOUBLE DEFAULT '0', + A2 DOUBLE DEFAULT '0', + A3 DOUBLE DEFAULT '0', + A4 DOUBLE DEFAULT '0', + A5 DOUBLE DEFAULT '0', + A6 DOUBLE DEFAULT '0', + A7 DOUBLE DEFAULT '0', + A8 DOUBLE DEFAULT '0', + A9 DOUBLE DEFAULT '0', + A10 DOUBLE DEFAULT '0', + A11 DOUBLE DEFAULT '0', + A12 DOUBLE DEFAULT '0', + A13 DOUBLE DEFAULT '0', + A14 DOUBLE DEFAULT '0', + A15 DOUBLE DEFAULT '0', + A16 DOUBLE DEFAULT '0', + A17 DOUBLE DEFAULT '0', + A18 DOUBLE DEFAULT '0', + A19 DOUBLE DEFAULT '0', + A20 DOUBLE DEFAULT '0', + A21 DOUBLE DEFAULT '0', + A22 DOUBLE DEFAULT '0', + A23 DOUBLE DEFAULT '0', + A24 DOUBLE DEFAULT '0', + A25 DOUBLE DEFAULT '0', + A26 DOUBLE DEFAULT '0', + A27 DOUBLE DEFAULT '0', + A28 DOUBLE DEFAULT '0', + A29 DOUBLE DEFAULT '0', + A30 DOUBLE DEFAULT '0', + A31 DOUBLE DEFAULT '0', + RHOC DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.MBWR32PARAM ADD CONSTRAINT PUBLIC.CONSTRAINT_50D PRIMARY KEY(ID); +-- 2 +/- SELECT COUNT(*) FROM PUBLIC.MBWR32PARAM; +INSERT INTO PUBLIC.MBWR32PARAM(ID, NAME, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31, RHOC) VALUES +(1, 'methane', 9.898937956E-6, 0.02199608275, -0.5322788, 20.21657962, -2234.398926, 1.06794028E-5, 1.457922469E-4, -0.9265816666, 291.5364732, 2.313546209E-7, 1.387214274E-4, 0.004780467451, 1.176103833E-5, -1.98209673E-4, -0.02512887756, 9.748899826E-6, -1.202192137E-7, 4.128353939E-5, -7.215842918E-7, 508.1738255, -91989.03192, -2.732264677, 74990.24351, 0.001114060908, 1.083955159, -4.490960312E-5, -1.380337847, -2.371902232E-8, 3.761652197E-5, -2.375166954E-10, -1.23764079E-8, 6.766926453E-7, 10.15), +(2, 'methane2', -0.01843948666, 1.0510162064, -16.057820303, 848.44027562, -42738.409106, 7.6565285254E-4, -0.48360724197, 85.195473835, -16607.434721, -3.7521074532E-5, 0.028616309259, -2.8685285973, 1.1906973942E-4, -0.0085315715699, 3.8365063841, 2.4986828379E-5, 5.7974531455E-6, -0.0071648329297, 1.2577853784E-4, 22240.102466, -1480051.2328, 50.498054887, 1642883.75992, 0.21325387196, 37.791273422, -1.1857016814E-5, -31.630780767, -4.1006782941E-6, 0.0014870043284, 3.1512261532E-9, -2.1670774745E-6, 2.4000551079E-5, 10.15); +CREATE CACHED TABLE PUBLIC.PACKING( + ID INT NOT NULL, + NAME VARCHAR(50) DEFAULT NULL, + TYPE VARCHAR(50) DEFAULT NULL, + MATERIAL VARCHAR(50) DEFAULT NULL, + SIZE DOUBLE DEFAULT '0', + SURFACEAREAPRVOLUME DOUBLE DEFAULT '0', + VOIDFRACTION DOUBLE DEFAULT '0', + PACKINGFACTOR INT DEFAULT NULL, + CP DOUBLE DEFAULT '0', + LOAD DOUBLE DEFAULT '0', + CH DOUBLE DEFAULT '0', + A DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.PACKING ADD CONSTRAINT PUBLIC.CONSTRAINT_FA PRIMARY KEY(ID); +-- 8 +/- SELECT COUNT(*) FROM PUBLIC.PACKING; +INSERT INTO PUBLIC.PACKING(ID, NAME, TYPE, MATERIAL, SIZE, SURFACEAREAPRVOLUME, VOIDFRACTION, PACKINGFACTOR, CP, LOAD, CH, A) VALUES +(1, 'pallring', 'random', 'metal', 50.0, 112.6, 0.951, 85, 0.763, 6242.0, 2.725, NULL), +(2, 'pallring', 'random', 'metal', 38.0, 149.6, 0.952, 180, 1.003, 15772.0, 2.725, NULL), +(3, 'pallring', 'random', 'metal', 35.0, 139.4, 0.965, 180, 0.967, 19517.0, 2.725, NULL), +(4, 'pallring', 'random', 'metal', 25.0, 223.5, 0.954, 180, 0.957, 53900.0, 2.725, NULL), +(5, 'pallring', 'random', 'metal', 15.0, 368.4, 0.933, 180, 0.99, 229225.0, 2.725, NULL), +(6, 'pallring', 'random', 'plastic', 50.0, 111.1, 0.919, 180, 0.698, 6765.0, 2.725, NULL), +(7, 'rashigring', 'random', 'ceramic', 25.0, 185.4, 0.662, 180, 1.329, 48175.0, 2.725, NULL), +(8, 'Mellapak250X', 'structured', 'metal', 250.0, 250.0, 0.95, 8, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC."paste errors"( + F1 DOUBLE DEFAULT NULL, + F2 DOUBLE DEFAULT NULL, + F3 DOUBLE DEFAULT NULL, + F4 VARCHAR(255) DEFAULT NULL, + F5 VARCHAR(255) DEFAULT NULL, + F6 DOUBLE DEFAULT NULL, + F7 DOUBLE DEFAULT NULL, + F8 DOUBLE DEFAULT NULL, + F9 DOUBLE DEFAULT NULL, + F10 VARCHAR(255) DEFAULT NULL +); +-- 6 +/- SELECT COUNT(*) FROM PUBLIC."paste errors"; +INSERT INTO PUBLIC."paste errors"(F1, F2, F3, F4, F5, F6, F7, F8, F9, F10) VALUES +(322.0, 278.15, 1.01325, 'Hg', 'n-decane', 4.9E-7, 0.99999951, 4.9E-9, 0.0, 'VLE'), +(322.0, 278.15, 1.01325, 'Hg', 'n-decane', 4.9E-7, 0.99999951, 4.9E-9, 0.0, 'VLE'), +(323.0, 283.15, 1.01325, 'Hg', 'n-decane', 5.8E-7, 0.99999942, 5.8E-9, 0.0, 'VLE'), +(324.0, 288.15, 1.01325, 'Hg', 'n-decane', 8.7E-7, 0.99999913, 8.7E-9, 0.0, 'VLE'), +(325.0, 293.15, 1.01325, 'Hg', 'n-decane', 9.6E-7, 0.99999904, 9.6E-9, 0.0, 'VLE'), +(326.0, 298.15, 1.01325, 'Hg', 'n-decane', 1.37E-6, 0.99999863, 1.37E-8, 0.0, 'VLE'); +CREATE CACHED TABLE PUBLIC.PHASETYPES( + ID INT NOT NULL, + PHASETYPE VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.PHASETYPES ADD CONSTRAINT PUBLIC.CONSTRAINT_B8 PRIMARY KEY(ID); +-- 5 +/- SELECT COUNT(*) FROM PUBLIC.PHASETYPES; +INSERT INTO PUBLIC.PHASETYPES(ID, PHASETYPE) VALUES +(1, 'gas'), +(2, 'liquid'), +(3, 'solid'), +(4, 'hydrate'), +(5, 'wax'); +CREATE CACHED TABLE PUBLIC.PURECOMPONENTCONDUCTIVITYDATA( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + CONDUCTIVITY DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + PHASETYPE VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.PURECOMPONENTCONDUCTIVITYDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_28 PRIMARY KEY(ID); +-- 0 +/- SELECT COUNT(*) FROM PUBLIC.PURECOMPONENTCONDUCTIVITYDATA; +CREATE CACHED TABLE PUBLIC.PURECOMPONENTCPHEATCAPACITY( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + HEATCAPACITYCP DOUBLE DEFAULT '0', + STDDEV DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + PHASETYPE VARCHAR(50) DEFAULT NULL, + COMMENT VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.PURECOMPONENTCPHEATCAPACITY ADD CONSTRAINT PUBLIC.CONSTRAINT_FE PRIMARY KEY(ID); +-- 46 +/- SELECT COUNT(*) FROM PUBLIC.PURECOMPONENTCPHEATCAPACITY; +INSERT INTO PUBLIC.PURECOMPONENTCPHEATCAPACITY(ID, COMPONENTNAME, HEATCAPACITYCP, STDDEV, TEMPERATURE, PRESSURE, PHASETYPE, COMMENT, REFERENCE) VALUES +(27, 'TEG', 2.083632, 0.02083632, 273.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(28, 'TEG', 2.163128, 0.02163128, 293.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(29, 'TEG', 2.242624, 0.02242624, 313.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(30, 'TEG', 2.32212, 0.0232212, 333.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(31, 'TEG', 2.401616, 0.02401616, 353.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(32, 'TEG', 2.481112, 0.02481112, 373.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(33, 'TEG', 2.560608, 0.02560608, 393.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(34, 'TEG', 2.640104, 0.02640104, 413.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(35, 'TEG', 2.7196, 0.027196, 433.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(36, 'TEG', 2.753072, 0.02753072, 441.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(37, 'TEG', 2.769808, 0.02769808, 453.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(38, 'TEG', 2.786544, 0.02786544, 473.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(39, 'TEG', 2.799096, 0.02799096, 493.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(40, 'TEG', 2.815832, 0.02815832, 513.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(41, 'TEG', 2.832568, 0.02832568, 533.15, 1.0, 'liquid', NULL, 'Stephens1979'), +(42, 'water', 4.22589352674721, 0.0422589352674721, 273.15, 10.0, 'liquid', NULL, 'Stephens1979'), +(43, 'water', 4.20367288609439, 0.0420367288609439, 283.15, 10.0, 'liquid', NULL, 'DIPPR'), +(44, 'water', 4.18858350889666, 0.0418858350889666, 293.15, 10.0, 'liquid', NULL, 'DIPPR'), +(45, 'water', 4.17952128103415, 0.0417952128103415, 303.15, 10.0, 'liquid', NULL, 'DIPPR'), +(46, 'water', 4.17550688439144, 0.0417550688439144, 313.15, 10.0, 'liquid', NULL, 'DIPPR'), +(47, 'water', 4.17568579685753, 0.0417568579685753, 323.15, 10.0, 'liquid', NULL, 'DIPPR'), +(48, 'water', 4.17932829232589, 0.0417932829232589, 333.15, 100.0, 'liquid', NULL, 'DIPPR'), +(49, 'water', 4.18582944069439, 0.0418582944069439, 343.15, 100.0, 'liquid', NULL, 'DIPPR'), +(50, 'water', 4.19470910786537, 0.0419470910786537, 353.15, 100.0, 'liquid', NULL, 'DIPPR'), +(51, 'water', 4.2056119557456, 0.042056119557456, 363.15, 100.0, 'liquid', NULL, 'DIPPR'), +(52, 'water', 4.21830744224629, 0.0421830744224629, 373.15, 100.0, 'liquid', NULL, 'DIPPR'), +(53, 'water', 4.2326898212831, 0.042326898212831, 383.15, 100.0, 'liquid', NULL, 'DIPPR'), +(54, 'water', 4.2487781427761, 0.042487781427761, 393.15, 100.0, 'liquid', NULL, 'DIPPR'), +(55, 'water', 4.26671625264984, 0.0426671625264984, 403.15, 100.0, 'liquid', NULL, 'DIPPR'), +(56, 'water', 4.28677279283326, 0.0428677279283326, 413.15, 100.0, 'liquid', NULL, 'DIPPR'), +(57, 'water', 4.30934120125979, 0.0430934120125979, 423.15, 100.0, 'liquid', NULL, 'DIPPR'), +(58, 'water', 4.33493971186727, 0.0433493971186727, 433.15, 100.0, 'liquid', NULL, 'DIPPR'), +(59, 'water', 4.36421135459797, 0.0436421135459797, 443.15, 100.0, 'liquid', NULL, 'DIPPR'), +(60, 'water', 4.39792395539865, 0.0439792395539865, 453.15, 100.0, 'liquid', NULL, 'DIPPR'), +(61, 'water', 4.43697013622045, 0.0443697013622045, 463.15, 100.0, 'liquid', NULL, 'DIPPR'), +(62, 'water', 4.48236731501899, 0.0448236731501898, 473.15, 100.0, 'liquid', NULL, 'DIPPR'), +(63, 'water', 4.53525770575429, 0.0453525770575429, 483.15, 100.0, 'liquid', NULL, 'DIPPR'), +(64, 'water', 4.59690831839085, 0.0459690831839085, 493.15, 100.0, 'liquid', NULL, 'DIPPR'), +(65, 'water', 4.6687109588976, 0.046687109588976, 503.15, 100.0, 'liquid', NULL, 'DIPPR'), +(66, 'water', 4.75218222924791, 0.0475218222924791, 513.15, 100.0, 'liquid', NULL, 'DIPPR'), +(67, 'water', 4.84896352741954, 0.0484896352741954, 523.15, 100.0, 'liquid', NULL, 'DIPPR'), +(68, 'water', 4.96082104739476, 0.0496082104739476, 533.15, 100.0, 'liquid', NULL, 'DIPPR'), +(69, 'water', 5.08964577916029, 0.0508964577916029, 543.15, 100.0, 'liquid', NULL, 'DIPPR'), +(70, 'water', 5.23745350870719, 0.0523745350870719, 553.15, 100.0, 'liquid', NULL, 'DIPPR'), +(71, 'water', 5.40638481803104, 0.0540638481803104, 563.15, 100.0, 'liquid', NULL, 'DIPPR'); +INSERT INTO PUBLIC.PURECOMPONENTCPHEATCAPACITY(ID, COMPONENTNAME, HEATCAPACITYCP, STDDEV, TEMPERATURE, PRESSURE, PHASETYPE, COMMENT, REFERENCE) VALUES +(72, 'water', 5.59870508513185, 0.0559870508513185, 573.15, 100.0, 'liquid', NULL, 'DIPPR'); +CREATE CACHED TABLE PUBLIC.PURECOMPONENTDENSITY( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + DENSITY DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + PHASETYPE VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.PURECOMPONENTDENSITY ADD CONSTRAINT PUBLIC.CONSTRAINT_FC PRIMARY KEY(ID); +-- 36 +/- SELECT COUNT(*) FROM PUBLIC.PURECOMPONENTDENSITY; +INSERT INTO PUBLIC.PURECOMPONENTDENSITY(ID, COMPONENTNAME, DENSITY, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(1, 'CO2', 1047.2, 0.1, 283.15, 1.03125, 'liquid', 'Noll1998'), +(2, 'MDEA', 1043.5, 0.1, 288.15, 1.01325, 'liquid', 'Noll1998'), +(3, 'MDEA', 1039.7, 0.1, 293.15, 1.01325, 'liquid', 'Noll1998'), +(4, 'MDEA', 1036.0, 0.1, 298.15, 1.01325, 'liquid', 'Noll1998'), +(5, 'MDEA', 1032.2, 0.1, 303.15, 1.01325, 'liquid', 'Noll1998'), +(6, 'MDEA', 1020.7, 0.1, 318.15, 1.01325, 'liquid', 'Noll1998'), +(7, 'MDEA', 1001.4, 0.1, 343.15, 1.01325, 'liquid', 'Noll1998'), +(8, 'MDEA', 989.66, 0.1, 358.15, 1.01325, 'liquid', 'Noll1998'), +(9, 'MDEA', 985.69, 0.1, 363.15, 1.01325, 'liquid', 'Noll1998'), +(12, 'MDEA', 1037.1, 0.1, 296.3, 1.01325, 'liquid', 'DiGullio1992a'), +(13, 'MDEA', 1014.3, 0.1, 327.4, 1.01325, 'liquid', 'DiGullio1992a'), +(15, 'MDEA', 999.6, 0.1, 346.3, 1.01325, 'liquid', 'DiGullio1992a'), +(16, 'MDEA', 978.4, 0.1, 373.5, 1.01325, 'liquid', 'DiGullio1992a'), +(17, 'MDEA', 959.3, 0.1, 397.6, 1.01325, 'liquid', 'DiGullio1992a'), +(18, 'MDEA', 939.1, 0.1, 422.4, 1.01325, 'liquid', 'DiGullio1992a'), +(19, 'MDEA', 920.5, 0.1, 445.8, 1.01325, 'liquid', 'DiGullio1992a'), +(20, 'water', 999.839, 10.0, 273.15, 1.01325, 'liquid', 'Perry1998'), +(21, 'water', 999.898, 10.0, 274.15, 1.01325, 'liquid', 'Perry1998'), +(22, 'water', 999.964, 10.0, 278.15, 1.01325, 'liquid', 'Perry1998'), +(23, 'water', 999.699, 10.0, 283.15, 1.01325, 'liquid', 'Perry1998'), +(24, 'water', 998.204, 10.0, 293.15, 1.01325, 'liquid', 'Perry1998'), +(25, 'water', 995.647, 10.0, 303.15, 1.01325, 'liquid', 'Perry1998'), +(26, 'water', 992.215, 10.0, 313.15, 1.01325, 'liquid', 'Perry1998'), +(27, 'water', 988.037, 10.0, 323.15, 1.01325, 'liquid', 'Perry1998'), +(28, 'water', 983.2, 10.0, 333.15, 1.01325, 'liquid', 'Perry1998'), +(29, 'water', 977.771, 10.0, 343.15, 1.01325, 'liquid', 'Perry1998'), +(30, 'TEG', 1119.9, 11.0, 298.15, 1.01325, 'liquid', 'Begum'), +(31, 'TEG', 1115.8, 11.0, 303.15, 1.01325, 'liquid', 'Begum'), +(32, 'TEG', 1111.9, 11.0, 308.15, 1.01325, 'liquid', 'Begum'), +(33, 'TEG', 1108.4, 11.0, 313.15, 1.01325, 'liquid', 'Begum'), +(34, 'TEG', 1104.0, 11.0, 318.15, 1.01325, 'liquid', 'Begum'), +(35, 'TEG', 1100.0, 11.0, 323.15, 1.01325, 'liquid', 'Begum'), +(36, 'TEG', 1096.45, 11.0, 328.14, 1.01325, 'liquid', 'Begum'), +(37, 'TEG', 1088.58, 11.0, 338.15, 1.01325, 'liquid', 'Begum'), +(38, 'TEG', 1080.66, 11.0, 348.14, 1.01325, 'liquid', 'Begum'), +(39, 'TEG', 1072.69, 11.0, 358.15, 1.01325, 'liquid', 'Begum'); +CREATE CACHED TABLE PUBLIC.PURECOMPONENTSURFACETENSION( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + SURFACETENSION DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + PHASETYPE VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.PURECOMPONENTSURFACETENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_79 PRIMARY KEY(ID); +-- 784 +/- SELECT COUNT(*) FROM PUBLIC.PURECOMPONENTSURFACETENSION; +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(102, 'methane', 18.877, 0.18877, 90.0, 1.0, 'liquid', 'jasper'), +(103, 'methane', 16.328, 0.16328, 100.0, 1.0, 'liquid', 'jasper'), +(104, 'methane', 15.026, 0.15026, 105.0, 1.0, 'liquid', 'jasper'), +(105, 'methane', 13.707, 0.13707, 110.0, 1.0, 'liquid', 'jasper'), +(106, 'methane', 12.371, 0.12371, 115.0, 1.0, 'liquid', 'jasper'), +(107, 'ethane', 24.48, 0.2448, 133.15, 1.0, 'liquid', 'jasper'), +(108, 'ethane', 22.82, 0.2282, 143.15, 1.0, 'liquid', 'jasper'), +(109, 'ethane', 21.16, 0.2116, 153.15, 1.0, 'liquid', 'jasper'), +(110, 'ethane', 19.5, 0.195, 163.15, 1.0, 'liquid', 'jasper'), +(111, 'ethane', 17.84, 0.1784, 173.15, 1.0, 'liquid', 'jasper'), +(112, 'ethane', 16.19, 0.1619, 183.15, 1.0, 'liquid', 'jasper'), +(113, 'propane', 17.09, 0.1709, 183.15, 1.0, 'liquid', 'jasper'), +(114, 'propane', 15.34, 0.1534, 203.15, 1.0, 'liquid', 'jasper'), +(115, 'propane', 13.59, 0.1359, 223.15, 1.0, 'liquid', 'jasper'), +(116, 'propane', 11.84, 0.1184, 243.15, 1.0, 'liquid', 'jasper'), +(117, 'propane', 10.09, 0.1009, 263.15, 1.0, 'liquid', 'jasper'), +(118, 'propane', 8.35, 0.0835, 283.15, 1.0, 'liquid', 'jasper'), +(119, 'n-butane', 23.31, 0.2331, 203.15, 1.0, 'liquid', 'jasper'), +(120, 'n-butane', 20.9, 0.209, 223.15, 1.0, 'liquid', 'jasper'), +(121, 'n-butane', 17.28, 0.1728, 253.15, 1.0, 'liquid', 'jasper'), +(122, 'n-butane', 16.08, 0.1608, 263.15, 1.0, 'liquid', 'jasper'), +(123, 'n-butane', 13.66, 0.1366, 283.15, 1.0, 'liquid', 'jasper'), +(124, 'n-butane', 12.46, 0.1246, 293.15, 1.0, 'liquid', 'jasper'), +(125, 'CO2', 10.08, 0.1008, 243.15, 1.0, 'liquid', 'jasper'), +(126, 'CO2', 8.06, 0.0806, 253.15, 1.0, 'liquid', 'jasper'), +(127, 'CO2', 6.14, 0.0614, 263.15, 1.0, 'liquid', 'jasper'), +(128, 'CO2', 4.34, 0.0434, 273.15, 1.0, 'liquid', 'jasper'), +(129, 'CO2', 2.67, 0.0267, 283.15, 1.0, 'liquid', 'jasper'), +(130, 'CO2', 1.9, 0.019, 288.15, 1.0, 'liquid', 'jasper'), +(131, 'CO2', 1.19, 0.0119, 293.15, 1.0, 'liquid', 'jasper'), +(132, 'CO2', 0.57, 0.0057, 298.15, 1.0, 'liquid', 'jasper'), +(133, 'c-hexane', 27.13, 0.2713, 278.15, 1.0, 'liquid', 'jasper'), +(134, 'c-hexane', 26.43, 0.2643, 283.15, 1.0, 'liquid', 'jasper'), +(135, 'c-hexane', 25.24, 0.2524, 293.15, 1.0, 'liquid', 'jasper'), +(136, 'c-hexane', 24.06, 0.2406, 303.15, 1.0, 'liquid', 'jasper'), +(137, 'c-hexane', 22.87, 0.2287, 313.15, 1.0, 'liquid', 'jasper'), +(138, 'c-hexane', 21.68, 0.2168, 323.15, 1.0, 'liquid', 'jasper'), +(139, 'c-hexane', 20.49, 0.2049, 333.15, 1.0, 'liquid', 'jasper'), +(140, 'M-cy-C5', 23.47, 0.2347, 283.15, 1.0, 'liquid', 'jasper'), +(141, 'M-cy-C5', 22.3, 0.223, 293.15, 1.0, 'liquid', 'jasper'), +(142, 'M-cy-C5', 21.14, 0.2114, 303.15, 1.0, 'liquid', 'jasper'), +(143, 'M-cy-C5', 19.98, 0.1998, 313.15, 1.0, 'liquid', 'jasper'), +(144, 'M-cy-C5', 18.81, 0.1881, 323.15, 1.0, 'liquid', 'jasper'), +(145, 'M-cy-C5', 17.65, 0.1765, 333.15, 1.0, 'liquid', 'jasper'), +(146, 'n-pentane ', 17.15, 0.1715, 283.15, 1.0, 'liquid', 'jasper'), +(147, 'n-pentane ', 16.05, 0.1605, 293.15, 1.0, 'liquid', 'jasper'), +(148, 'n-pentane ', 14.94, 0.1494, 303.15, 1.0, 'liquid', 'jasper'), +(149, 'n-hexane', 19.42, 0.1942, 283.15, 1.0, 'liquid', 'jasper'), +(150, 'n-hexane', 18.4, 0.184, 293.15, 1.0, 'liquid', 'jasper'), +(151, 'n-hexane', 17.38, 0.1738, 303.15, 1.0, 'liquid', 'jasper'), +(152, 'n-hexane', 16.36, 0.1636, 313.15, 1.0, 'liquid', 'jasper'), +(153, 'n-hexane', 15.34, 0.1534, 323.15, 1.0, 'liquid', 'jasper'), +(154, 'n-nonane', 23.79, 0.2379, 283.15, 1.0, 'liquid', 'jasper'), +(155, 'n-nonane ', 22.85, 0.2285, 293.15, 1.0, 'liquid', 'jasper'), +(156, 'n-nonane ', 21.92, 0.2192, 303.15, 1.0, 'liquid', 'jasper'), +(157, 'n-nonane ', 20.98, 0.2098, 313.15, 1.0, 'liquid', 'jasper'), +(158, 'methane', 16.28, 0.1628, 96.29, 1.0, 'liquid', 'Soares et al 1986'), +(159, 'methane', 14.49, 0.1449, 103.87, 1.0, 'liquid', 'Soares et al 1986'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(160, 'methane', 14.2, 0.142, 104.83, 1.0, 'liquid', 'Soares et al 1986'), +(161, 'methane', 13.9, 0.139, 106.25, 1.0, 'liquid', 'Soares et al 1986'), +(162, 'methane', 14.06, 0.1406, 106.41, 1.0, 'liquid', 'Soares et al 1986'), +(163, 'methane', 14.08, 0.1408, 106.72, 1.0, 'liquid', 'Soares et al 1986'), +(164, 'methane', 13.87, 0.1387, 106.73, 1.0, 'liquid', 'Soares et al 1986'), +(165, 'methane', 13.89, 0.1389, 107.74, 1.0, 'liquid', 'Soares et al 1986'), +(166, 'methane', 13.81, 0.1381, 107.89, 1.0, 'liquid', 'Soares et al 1986'), +(167, 'methane', 13.36, 0.1336, 109.2, 1.0, 'liquid', 'Soares et al 1986'), +(168, 'methane', 13.15, 0.1315, 109.86, 1.0, 'liquid', 'Soares et al 1986'), +(169, 'ethane', 27.08, 0.2708, 117.8, 1.0, 'liquid', 'Soares et al'), +(170, 'ethane', 26.68, 0.2668, 119.83, 1.0, 'liquid', 'Soares et al'), +(171, 'ethane', 26.48, 0.2648, 120.9, 1.0, 'liquid', 'Soares et al'), +(172, 'ethane', 26.4, 0.264, 122.37, 1.0, 'liquid', 'Soares et al'), +(173, 'ethane', 26.0, 0.26, 124.7, 1.0, 'liquid', 'Soares et al'), +(174, 'ethane', 25.96, 0.2596, 124.8, 1.0, 'liquid', 'Soares et al'), +(175, 'ethane', 25.74, 0.2574, 125.56, 1.0, 'liquid', 'Soares et al'), +(176, 'ethane', 25.67, 0.2567, 125.9, 1.0, 'liquid', 'Soares et al'), +(177, 'ethane', 25.51, 0.2551, 127.42, 1.0, 'liquid', 'Soares et al'), +(178, 'ethane', 25.38, 0.2538, 128.2, 1.0, 'liquid', 'Soares et al'), +(179, 'ethane', 25.34, 0.2534, 128.7, 1.0, 'liquid', 'Soares et al'), +(180, 'ethane', 24.96, 0.2496, 130.06, 1.0, 'liquid', 'Soares et al'), +(181, 'ethane', 24.37, 0.2437, 133.52, 1.0, 'liquid', 'Soares et al'), +(182, 'ethane', 24.2, 0.242, 135.16, 1.0, 'liquid', 'Soares et al'), +(183, 'ethane', 23.92, 0.2392, 136.67, 1.0, 'liquid', 'Soares et al'), +(184, 'ethane', 25.0, 0.25, 129.2, 1.0, 'liquid', 'Leadbetter el al 1964'), +(185, 'ethane', 24.54, 0.2454, 133.2, 1.0, 'liquid', 'Leadbetter el al 1964'), +(186, 'ethane', 23.72, 0.2372, 137.1, 1.0, 'liquid', 'Leadbetter el al 1964'), +(187, 'ethane', 21.75, 0.2175, 149.1, 1.0, 'liquid', 'Leadbetter el al 1964'), +(188, 'ethane', 21.68, 0.2168, 150.6, 1.0, 'liquid', 'Leadbetter el al 1964'), +(189, 'ethane', 20.71, 0.2071, 155.9, 1.0, 'liquid', 'Leadbetter el al 1964'), +(190, 'ethane', 20.46, 0.2046, 157.5, 1.0, 'liquid', 'Leadbetter el al 1964'), +(191, 'ethane', 19.86, 0.1986, 161.3, 1.0, 'liquid', 'Leadbetter el al 1964'), +(192, 'ethane', 19.28, 0.1928, 164.4, 1.0, 'liquid', 'Leadbetter el al 1964'), +(193, 'ethane', 18.31, 0.1831, 170.3, 1.0, 'liquid', 'Leadbetter el al 1964'), +(194, 'ethane', 16.63, 0.1663, 180.6, 1.0, 'liquid', 'Leadbetter el al 1964'), +(195, 'propane', 9.31, 0.0931, 274.1, 1.0, 'liquid', 'Katz et al 1939'), +(196, 'propane', 9.05, 0.0905, 276.2, 1.0, 'liquid', 'Katz et al 1939'), +(197, 'propane', 7.68, 0.0768, 289.1, 1.0, 'liquid', 'Katz et al 1939'), +(198, 'propane', 7.62, 0.0762, 289.3, 1.0, 'liquid', 'Katz et al 1939'), +(199, 'propane', 7.49, 0.0749, 289.8, 1.0, 'liquid', 'Katz et al 1939'), +(200, 'propane', 7.22, 0.0722, 296.2, 1.0, 'liquid', 'Katz et al 1939'), +(201, 'propane', 7.22, 0.0722, 297.1, 1.0, 'liquid', 'Katz et al 1939'), +(202, 'propane', 6.88, 0.0688, 300.2, 1.0, 'liquid', 'Katz et al 1939'), +(203, 'propane', 6.63, 0.0663, 303.6, 1.0, 'liquid', 'Katz et al 1939'), +(204, 'propane', 6.15, 0.0615, 304.1, 1.0, 'liquid', 'Katz et al 1939'), +(205, 'propane', 6.21, 0.0621, 308.1, 1.0, 'liquid', 'Katz et al 1939'), +(206, 'propane', 5.84, 0.0584, 312.6, 1.0, 'liquid', 'Katz et al 1939'), +(207, 'n-butane', 15.4, 0.154, 275.2, 1.0, 'liquid', 'Katz et al 1939'), +(208, 'n-butane', 15.1, 0.151, 278.1, 1.0, 'liquid', 'Katz et al 1939'), +(209, 'n-butane', 14.3, 0.143, 283.3, 1.0, 'liquid', 'Katz et al 1939'), +(210, 'n-butane', 13.9, 0.139, 287.1, 1.0, 'liquid', 'Katz et al 1939'), +(211, 'n-butane', 13.6, 0.136, 289.9, 1.0, 'liquid', 'Katz et al 1939'), +(212, 'n-butane', 12.8, 0.128, 293.5, 1.0, 'liquid', 'Katz et al 1939'), +(213, 'n-butane', 12.9, 0.129, 296.4, 1.0, 'liquid', 'Katz et al 1939'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(214, 'n-butane', 12.8, 0.128, 296.9, 1.0, 'liquid', 'Katz et al 1939'), +(215, 'n-butane', 12.8, 0.128, 299.1, 1.0, 'liquid', 'Katz et al 1939'), +(216, 'n-butane', 12.5, 0.125, 300.6, 1.0, 'liquid', 'Katz et al 1939'), +(217, 'n-butane', 12.2, 0.122, 302.1, 1.0, 'liquid', 'Katz et al 1939'), +(218, 'n-butane', 12.3, 0.123, 302.7, 1.0, 'liquid', 'Katz et al 1939'), +(219, 'n-butane', 12.2, 0.122, 307.9, 1.0, 'liquid', 'Katz et al 1939'), +(220, 'n-butane', 10.6, 0.106, 318.5, 1.0, 'liquid', 'Katz et al 1939'), +(221, 'propane', 10.18, 0.1018, 273.15, 1.0, 'liquid', 'Baidakov et al 1985'), +(222, 'propane', 10.06, 0.1006, 274.23, 1.0, 'liquid', 'Baidakov et al 1985'), +(223, 'propane', 8.8, 0.088, 283.98, 1.0, 'liquid', 'Baidakov et al 1985'), +(224, 'propane', 8.17, 0.817, 289.01, 1.0, 'liquid', 'Baidakov et al 1985'), +(225, 'propane', 7.87, 0.787, 291.47, 1.0, 'liquid', 'Baidakov et al 1985'), +(226, 'propane', 7.47, 0.747, 294.71, 1.0, 'liquid', 'Baidakov et al 1985'), +(227, 'propane', 7.23, 0.723, 296.61, 1.0, 'liquid', 'Baidakov et al 1985'), +(228, 'propane', 6.77, 0.677, 300.53, 1.0, 'liquid', 'Baidakov et al 1985'), +(229, 'propane', 6.22, 0.622, 305.12, 1.0, 'liquid', 'Baidakov et al 1985'), +(230, 'propane', 5.56, 0.556, 310.6, 1.0, 'liquid', 'Baidakov et al 1985'), +(231, 'propane', 4.95, 0.495, 315.97, 1.0, 'liquid', 'Baidakov et al 1985'), +(232, 'i-butane', 13.01, 0.1301, 273.15, 1.0, 'liquid', 'Baidakov et al 1985'), +(233, 'i-butane', 12.07, 0.1207, 281.06, 1.0, 'liquid', 'Baidakov et al 1985'), +(234, 'i-butane', 11.02, 0.1102, 289.88, 1.0, 'liquid', 'Baidakov et al 1985'), +(235, 'i-butane', 10.49, 0.1049, 294.42, 1.0, 'liquid', 'Baidakov et al 1985'), +(236, 'i-butane', 9.86, 0.0986, 299.98, 1.0, 'liquid', 'Baidakov et al 1985'), +(237, 'i-butane', 9.07, 0.0907, 306.99, 1.0, 'liquid', 'Baidakov et al 1985'), +(238, 'i-butane', 8.59, 0.0859, 311.53, 1.0, 'liquid', 'Baidakov et al 1985'), +(239, 'i-butane', 8.04, 0.0804, 316.27, 1.0, 'liquid', 'Baidakov et al 1985'), +(240, 'i-butane', 7.51, 0.0751, 321.23, 1.0, 'liquid', 'Baidakov et al 1985'), +(241, 'i-butane', 6.94, 0.0694, 326.55, 1.0, 'liquid', 'Baidakov et al 1985'), +(242, 'i-butane', 5.97, 0.0597, 335.84, 1.0, 'liquid', 'Baidakov et al 1985'), +(243, 'i-butane', 5.5, 0.055, 340.32, 1.0, 'liquid', 'Baidakov et al 1985'), +(244, 'i-butane', 4.96, 0.0496, 345.65, 1.0, 'liquid', 'Baidakov et al 1985'), +(245, 'n-butane', 11.28, 0.1128, 302.85, 1.0, 'liquid', 'Cofffin et al 1928'), +(246, 'n-butane', 11.67, 0.1167, 299.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(247, 'n-butane', 12.58, 0.1258, 291.85, 1.0, 'liquid', 'Cofffin et al 1928'), +(248, 'n-butane', 13.64, 0.1364, 283.25, 1.0, 'liquid', 'Cofffin et al 1928'), +(249, 'n-butane', 14.88, 0.1488, 273.65, 1.0, 'liquid', 'Cofffin et al 1928'), +(250, 'n-butane', 15.21, 0.1521, 270.75, 1.0, 'liquid', 'Cofffin et al 1928'), +(251, 'n-butane', 15.43, 0.1543, 268.65, 1.0, 'liquid', 'Cofffin et al 1928'), +(252, 'n-butane', 15.77, 0.1577, 265.35, 1.0, 'liquid', 'Cofffin et al 1928'), +(253, 'n-butane', 16.01, 0.1601, 262.75, 1.0, 'liquid', 'Cofffin et al 1928'), +(254, 'n-butane', 16.72, 0.1672, 258.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(255, 'n-butane', 16.95, 0.1695, 255.35, 1.0, 'liquid', 'Cofffin et al 1928'), +(256, 'n-butane', 18.21, 0.1821, 245.05, 1.0, 'liquid', 'Cofffin et al 1928'), +(257, 'n-butane', 19.22, 0.1922, 237.05, 1.0, 'liquid', 'Cofffin et al 1928'), +(258, 'i-butane', 9.8, 0.098, 296.45, 1.0, 'liquid', 'Cofffin et al 1928'), +(259, 'i-butane', 10.51, 0.1051, 292.25, 1.0, 'liquid', 'Cofffin et al 1928'), +(260, 'i-butane', 11.39, 0.1139, 285.55, 1.0, 'liquid', 'Cofffin et al 1928'), +(261, 'i-butane', 11.61, 0.1161, 282.95, 1.0, 'liquid', 'Cofffin et al 1928'), +(262, 'i-butane', 12.31, 0.1231, 277.65, 1.0, 'liquid', 'Cofffin et al 1928'), +(263, 'i-butane', 12.3, 0.123, 272.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(264, 'i-butane', 13.81, 0.1381, 264.65, 1.0, 'liquid', 'Cofffin et al 1928'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(265, 'i-butane', 14.01, 0.1401, 262.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(266, 'i-butane', 14.8, 0.148, 258.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(267, 'i-butane', 15.07, 0.1507, 254.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(268, 'i-butane', 15.96, 0.1596, 248.75, 1.0, 'liquid', 'Cofffin et al 1928'), +(269, 'i-butane', 16.55, 0.1655, 243.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(270, 'i-butane', 17.3, 0.173, 236.85, 1.0, 'liquid', 'Cofffin et al 1928'), +(271, 'n-pentane', 18.25, 0.1825, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(272, 'n-pentane', 17.15, 0.1715, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(273, 'n-pentane', 16.05, 0.1605, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(274, 'n-pentane', 14.94, 0.1494, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(275, 'n-hexane', 20.44, 0.2044, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(276, 'n-hexane', 19.42, 0.1942, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(277, 'n-hexane', 18.4, 0.184, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(278, 'n-hexane', 17.38, 0.1738, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(279, 'n-hexane', 16.36, 0.1636, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(280, 'n-hexane', 15.34, 0.1534, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(281, 'n-hexane', 14.32, 0.1432, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(282, 'n-heptane', 22.1, 0.221, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(283, 'n-heptane', 21.12, 0.2112, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(284, 'n-heptane', 20.14, 0.2014, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(285, 'n-heptane', 19.17, 0.1917, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(286, 'n-heptane', 18.18, 0.1818, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(287, 'n-heptane', 17.2, 0.172, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(288, 'n-heptane', 16.22, 0.1622, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(289, 'n-heptane', 15.24, 0.1524, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(290, 'n-heptane', 14.26, 0.1426, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(291, 'n-heptane', 13.28, 0.1328, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(292, 'n-octane', 23.52, 0.2352, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(293, 'n-octane', 22.57, 0.2257, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(294, 'n-octane', 21.62, 0.2162, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(295, 'n-octane', 20.67, 0.2067, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(296, 'n-octane', 19.71, 0.1971, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(297, 'n-octane', 18.77, 0.1877, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(298, 'n-octane', 17.81, 0.1781, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(299, 'n-octane', 16.86, 0.1686, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(300, 'n-octane', 15.91, 0.1591, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(301, 'n-octane', 14.96, 0.1496, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(302, 'n-octane', 14.01, 0.1401, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(303, 'n-nonane', 24.72, 0.2472, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(304, 'n-nonane', 23.79, 0.2379, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(305, 'n-nonane', 22.85, 0.2285, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(306, 'n-nonane', 21.92, 0.2192, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(307, 'n-nonane', 20.98, 0.2098, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(308, 'n-nonane', 20.05, 0.2005, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(309, 'n-nonane', 19.12, 0.1912, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(310, 'n-nonane', 18.18, 0.1818, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(311, 'n-nonane', 17.24, 0.1724, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(312, 'n-nonane', 16.31, 0.1631, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(313, 'n-nonane', 15.37, 0.1537, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(314, 'nC10', 25.67, 0.2567, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(315, 'nC10', 24.75, 0.2475, 283.15, 1.0, 'liquid', 'Jasper et al 1955'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(316, 'nC10', 23.83, 0.2383, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(317, 'nC10', 22.91, 0.2191, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(318, 'nC10', 21.99, 0.2199, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(319, 'nC10', 21.07, 0.2107, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(320, 'nC10', 20.15, 0.2015, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(321, 'nC10', 19.23, 0.1923, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(322, 'nC10', 18.31, 0.1831, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(323, 'nC10', 17.39, 0.1739, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(324, 'nC10', 16.47, 0.1647, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(325, 'nC11', 26.46, 0.2646, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(326, 'nC11', 25.56, 0.2556, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(327, 'nC11', 24.66, 0.2466, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(328, 'nC11', 23.76, 0.2376, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(329, 'nC11', 22.86, 0.2286, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(330, 'nC11', 21.96, 0.2196, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(331, 'nC11', 21.05, 0.2105, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(332, 'nC11', 20.15, 0.2015, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(333, 'nC11', 19.25, 0.1925, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(334, 'nC11', 18.35, 0.1835, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(335, 'nC11', 17.45, 0.1745, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(336, 'nC12', 27.12, 0.2712, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(337, 'nC12', 26.24, 0.2624, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(338, 'nC12', 25.35, 0.2535, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(339, 'nC12', 24.47, 0.2447, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(340, 'nC12', 23.58, 0.2358, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(341, 'nC12', 22.7, 0.227, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(342, 'nC12', 21.81, 0.2181, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(343, 'nC12', 20.93, 0.2093, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(344, 'nC12', 20.05, 0.2005, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(345, 'nC12', 19.16, 0.1916, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(346, 'nC12', 18.28, 0.1828, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(347, 'nC13', 27.73, 0.2773, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(348, 'nC13', 26.86, 0.2686, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(349, 'nC13', 25.99, 0.2599, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(350, 'nC13', 25.11, 0.2511, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(351, 'nC13', 24.24, 0.2424, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(352, 'nC13', 23.37, 0.2337, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(353, 'nC13', 22.5, 0.225, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(354, 'nC13', 21.63, 0.2163, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(355, 'nC13', 20.75, 0.2075, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(356, 'nC13', 19.88, 0.1988, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(357, 'nC13', 19.01, 0.1901, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(360, 'n-heptane', 20.63, 0.2063, 293.15, 2.0, 'liquid', 'Volyak et al 1961'), +(361, 'n-heptane', 19.54, 0.1954, 303.15, 2.0, 'liquid', 'Volyak et al 1961'), +(362, 'n-heptane', 18.47, 0.1847, 313.15, 2.0, 'liquid', 'Volyak et al 1961'), +(363, 'n-heptane', 17.42, 0.1742, 323.15, 2.0, 'liquid', 'Volyak et al 1961'), +(364, 'n-heptane', 16.39, 0.1639, 333.15, 2.0, 'liquid', 'Volyak et al 1961'), +(365, 'n-heptane', 15.38, 0.1538, 343.15, 2.0, 'liquid', 'Volyak et al 1961'), +(366, 'n-heptane', 14.35, 0.1435, 353.15, 2.0, 'liquid', 'Volyak et al 1961'), +(367, 'n-heptane', 13.42, 0.1342, 363.15, 2.0, 'liquid', 'Volyak et al 1961'), +(368, 'n-heptane', 12.47, 0.1247, 373.15, 2.0, 'liquid', 'Volyak et al 1961'), +(369, 'n-heptane', 11.54, 0.1154, 383.15, 3.0, 'liquid', 'Volyak et al 1961'), +(370, 'n-heptane', 10.63, 0.1063, 393.15, 3.0, 'liquid', 'Volyak et al 1961'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(371, 'n-heptane', 9.74, 0.0974, 403.15, 3.0, 'liquid', 'Volyak et al 1961'), +(372, 'n-heptane', 8.87, 0.0887, 413.15, 3.0, 'liquid', 'Volyak et al 1961'), +(373, 'n-heptane', 8.02, 0.0802, 423.15, 3.0, 'liquid', 'Volyak et al 1961'), +(374, 'n-heptane', 7.19, 0.0719, 433.15, 3.0, 'liquid', 'Volyak et al 1961'), +(375, 'n-heptane', 6.38, 0.0638, 443.15, 3.0, 'liquid', 'Volyak et al 1961'), +(376, 'n-heptane', 5.59, 0.0559, 453.15, 3.0, 'liquid', 'Volyak et al 1961'), +(377, 'n-heptane', 4.82, 0.0482, 463.15, 3.0, 'liquid', 'Volyak et al 1961'), +(378, 'n-heptane', 4.07, 0.0407, 473.15, 3.0, 'liquid', 'Volyak et al 1961'), +(379, 'n-octane', 21.82, 0.2182, 293.15, 2.0, 'liquid', 'Volyak et al 1961'), +(380, 'n-octane', 20.79, 0.2079, 303.15, 2.0, 'liquid', 'Volyak et al 1961'), +(381, 'n-octane', 19.78, 0.1978, 313.15, 2.0, 'liquid', 'Volyak et al 1961'), +(382, 'n-octane', 18.79, 0.1879, 323.15, 2.0, 'liquid', 'Volyak et al 1961'), +(383, 'n-octane', 17.82, 0.1782, 333.15, 2.0, 'liquid', 'Volyak et al 1961'), +(384, 'n-octane', 16.87, 0.1687, 343.15, 3.0, 'liquid', 'Volyak et al 1961'), +(385, 'n-octane', 15.94, 0.1594, 353.15, 3.0, 'liquid', 'Volyak et al 1961'), +(386, 'n-octane', 15.03, 0.1503, 363.15, 3.0, 'liquid', 'Volyak et al 1961'), +(387, 'n-octane', 14.13, 0.1413, 373.15, 3.0, 'liquid', 'Volyak et al 1961'), +(388, 'n-octane', 13.25, 0.1325, 383.15, 3.0, 'liquid', 'Volyak et al 1961'), +(389, 'n-octane', 12.39, 0.1239, 393.15, 4.0, 'liquid', 'Volyak et al 1961'), +(390, 'n-octane', 11.54, 0.1154, 403.15, 4.0, 'liquid', 'Volyak et al 1961'), +(391, 'n-octane', 10.7, 0.107, 413.15, 4.0, 'liquid', 'Volyak et al 1961'), +(392, 'n-octane', 9.88, 0.0988, 423.15, 4.0, 'liquid', 'Volyak et al 1961'), +(393, 'n-octane', 9.07, 0.0907, 433.15, 4.0, 'liquid', 'Volyak et al 1961'), +(394, 'n-octane', 8.28, 0.0828, 443.15, 4.0, 'liquid', 'Volyak et al 1961'), +(395, 'n-octane', 7.5, 0.075, 453.15, 4.0, 'liquid', 'Volyak et al 1961'), +(396, 'n-octane', 6.74, 0.0674, 463.15, 4.0, 'liquid', 'Volyak et al 1961'), +(397, 'n-octane', 5.99, 0.0599, 473.15, 4.0, 'liquid', 'Volyak et al 1961'), +(398, 'n-octane', 5.25, 0.0525, 483.15, 4.0, 'liquid', 'Volyak et al 1961'), +(399, 'n-octane', 4.52, 0.0452, 493.15, 4.0, 'liquid', 'Volyak et al 1961'), +(400, 'n-pentane', 33.76, 0.3376, 144.18, 1.0, 'liquid', 'Grigoryev et al 1991'), +(401, 'n-pentane', 33.54, 0.3354, 145.08, 1.0, 'liquid', 'Grigoryev et al 1991'), +(402, 'n-pentane', 33.53, 0.0053, 145.23, 1.0, 'liquid', 'Grigoryev et al 1991'), +(403, 'n-pentane', 32.4, 0.324, 156.53, 1.0, 'liquid', 'Grigoryev et al 1991'), +(404, 'n-pentane', 31.32, 0.3132, 165.87, 1.0, 'liquid', 'Grigoryev et al 1991'), +(405, 'n-pentane', 29.42, 0.2942, 181.01, 1.0, 'liquid', 'Grigoryev et al 1991'), +(406, 'n-pentane', 27.77, 0.2777, 193.45, 1.0, 'liquid', 'Grigoryev et al 1991'), +(407, 'n-pentane', 23.38, 0.2338, 226.09, 1.0, 'liquid', 'Grigoryev et al 1991'), +(408, 'n-pentane', 20.42, 0.2042, 249.34, 1.0, 'liquid', 'Grigoryev et al 1991'), +(409, 'n-pentane', 17.94, 0.1794, 270.21, 1.0, 'liquid', 'Grigoryev et al 1991'), +(410, 'n-pentane', 15.49, 0.1549, 292.49, 1.0, 'liquid', 'Grigoryev et al 1991'), +(411, 'n-pentane', 11.04, 0.1104, 336.52, 1.0, 'liquid', 'Grigoryev et al 1991'), +(412, 'n-pentane', 7.65, 0.0765, 371.17, 1.0, 'liquid', 'Grigoryev et al 1991'), +(413, 'n-pentane', 4.17, 0.0417, 407.25, 1.0, 'liquid', 'Grigoryev et al 1991'), +(414, 'n-hexane', 31.74, 0.3174, 175.12, 1.0, 'liquid', 'Grigoryev et al 1991'), +(415, 'n-hexane', 31.42, 0.3142, 178.03, 1.0, 'liquid', 'Grigoryev et al 1991'), +(416, 'n-hexane', 31.03, 0.3103, 181.52, 1.0, 'liquid', 'Grigoryev et al 1991'), +(417, 'n-hexane', 30.15, 0.3015, 189.32, 1.0, 'liquid', 'Grigoryev et al 1991'), +(418, 'n-hexane', 29.06, 0.2906, 198.74, 1.0, 'liquid', 'Grigoryev et al 1991'), +(419, 'n-hexane', 27.32, 0.2732, 213.54, 1.0, 'liquid', 'Grigoryev et al 1991'), +(420, 'n-hexane', 23.66, 0.2366, 244.81, 1.0, 'liquid', 'Grigoryev et al 1991'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(421, 'n-hexane', 20.7, 0.207, 270.93, 1.0, 'liquid', 'Grigoryev et al 1991'), +(422, 'n-hexane', 19.2, 0.192, 284.72, 1.0, 'liquid', 'Grigoryev et al 1991'), +(423, 'n-hexane', 16.28, 0.1628, 312.58, 1.0, 'liquid', 'Grigoryev et al 1991'), +(424, 'n-hexane', 12.34, 0.1234, 352.49, 1.0, 'liquid', 'Grigoryev et al 1991'), +(425, 'n-hexane', 9.08, 0.0908, 387.03, 1.0, 'liquid', 'Grigoryev et al 1991'), +(426, 'n-hexane', 7.94, 0.0794, 402.71, 1.0, 'liquid', 'Grigoryev et al 1991'), +(427, 'n-heptane', 32.28, 0.3228, 183.21, 1.0, 'liquid', 'Grigoryev et al 1991'), +(428, 'n-heptane', 31.85, 0.3185, 187.49, 1.0, 'liquid', 'Grigoryev et al 1991'), +(429, 'n-heptane', 31.23, 0.3123, 193.41, 1.0, 'liquid', 'Grigoryev et al 1991'), +(430, 'n-heptane', 30.52, 0.3052, 199.93, 1.0, 'liquid', 'Grigoryev et al 1991Grigoryev et al 1991'), +(431, 'n-heptane', 29.64, 0.2964, 207.84, 1.0, 'liquid', 'Grigoryev et al 1991'), +(432, 'n-heptane', 27.71, 0.2771, 224.58, 1.0, 'liquid', 'Grigoryev et al 1991'), +(433, 'n-heptane', 23.82, 0.2382, 258.14, 1.0, 'liquid', 'Grigoryev et al 1991'), +(434, 'n-heptane', 21.53, 0.2153, 278.59, 1.0, 'liquid', 'Grigoryev et al 1991'), +(435, 'n-heptane', 17.42, 0.1742, 318.07, 1.0, 'liquid', 'Grigoryev et al 1991'), +(436, 'n-heptane', 14.08, 0.1408, 353.49, 1.0, 'liquid', 'Grigoryev et al 1991'), +(437, 'n-heptane', 11.23, 0.1123, 385.91, 1.0, 'liquid', 'Grigoryev et al 1991'), +(438, 'n-heptane', 9.31, 0.0931, 408.33, 1.0, 'liquid', 'Grigoryev et al 1991'), +(439, 'n-heptane', 5.09, 0.0509, 459.18, 2.0, 'liquid', 'Grigoryev et al 1991'), +(440, 'n-octane', 29.26, 0.2926, 218.51, 1.0, 'liquid', 'Grigoryev et al 1991'), +(441, 'n-octane', 28.79, 0.2879, 224.58, 1.0, 'liquid', 'Grigoryev et al 1991'), +(442, 'n-octane', 27.09, 0.2709, 243.18, 1.0, 'liquid', 'Grigoryev et al 1991'), +(443, 'n-octane', 25.15, 0.2515, 261.92, 1.0, 'liquid', 'Grigoryev et al 1991'), +(444, 'n-octane', 23.28, 0.2328, 279.19, 1.0, 'liquid', 'Grigoryev et al 1991'), +(445, 'n-octane', 23.25, 0.2325, 279.52, 1.0, 'liquid', 'Grigoryev et al 1991'), +(446, 'n-octane', 18.42, 0.1842, 325.37, 1.0, 'liquid', 'Grigoryev et al 1991'), +(447, 'n-octane', 15.66, 0.1566, 354.31, 1.0, 'liquid', 'Grigoryev et al 1991'), +(448, 'n-octane', 14.42, 0.1442, 392.04, 1.0, 'liquid', 'Grigoryev et al 1991'), +(449, 'n-octane', 10.01, 0.1001, 428.51, 1.0, 'liquid', 'Grigoryev et al 1991'), +(450, 'n-octane', 6.83, 0.0683, 461.92, 2.0, 'liquid', 'Grigoryev et al 1991'), +(451, 'n-octane', 4.71, 0.0471, 488.54, 2.0, 'liquid', 'Grigoryev et al 1991'), +(452, 'water', 74.36, 0.7436, 283.15, 2.0, 'liquid', 'JASPER'), +(453, 'water', 73.62, 0.7362, 288.15, 2.0, 'liquid', 'JASPER'), +(454, 'water', 72.88, 0.7288, 293.15, 2.0, 'liquid', 'JASPER'), +(455, 'water', 72.14, 0.7214, 298.15, 2.0, 'liquid', 'JASPER'), +(456, 'water', 71.4, 0.714, 303.15, 2.0, 'liquid', 'JASPER'), +(457, 'water', 70.66, 0.7066, 308.15, 2.0, 'liquid', 'JASPER'), +(458, 'water', 69.92, 0.6992, 313.15, 2.0, 'liquid', 'JASPER'), +(459, 'water', 69.18, 0.6918, 318.15, 2.0, 'liquid', 'JASPER'), +(460, 'water', 68.45, 0.6845, 323.15, 2.0, 'liquid', 'JASPER'), +(461, 'water', 66.97, 0.6697, 323.15, 2.0, 'liquid', 'JASPER'), +(462, 'water', 65.49, 0.6549, 333.15, 2.0, 'liquid', 'JASPER'), +(463, 'water', 64.01, 0.6401, 353.15, 2.0, 'liquid', 'JASPER'), +(464, 'water', 62.54, 0.6254, 363.15, 2.0, 'liquid', 'JASPER'), +(465, 'water', 61.06, 0.6106, 373.15, 2.0, 'liquid', 'JASPER'), +(466, 'methanol', 23.28, 0.2328, 283.15, 2.0, 'liquid', 'JASPER'), +(467, 'methanol', 22.5, 0.225, 293.15, 2.0, 'liquid', 'JASPER'), +(468, 'methanol', 21.73, 0.2173, 303.15, 2.0, 'liquid', 'JASPER'), +(469, 'methanol', 20.96, 0.2096, 313.15, 2.0, 'liquid', 'JASPER'), +(470, 'methanol', 20.18, 0.2018, 323.15, 2.0, 'liquid', 'JASPER'), +(471, 'methanol', 19.41, 0.1941, 333.15, 2.0, 'liquid', 'JASPER'), +(472, 'benzene', 30.21, 0.3021, 283.15, 2.0, 'liquid', 'JASPER'), +(473, 'benzene', 28.88, 0.2888, 293.15, 2.0, 'liquid', 'JASPER'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(474, 'benzene', 27.56, 0.2756, 303.15, 2.0, 'liquid', 'JASPER'), +(475, 'benzene', 26.25, 0.2625, 313.15, 2.0, 'liquid', 'JASPER'), +(476, 'benzene', 24.96, 0.2496, 323.15, 2.0, 'liquid', 'JASPER'), +(477, 'benzene', 23.67, 0.2367, 333.15, 2.0, 'liquid', 'JASPER'), +(478, 'benzene', 22.4, 0.224, 343.15, 2.0, 'liquid', 'JASPER'), +(479, 'benzene', 21.2, 0.212, 353.15, 2.0, 'liquid', 'JASPER'), +(480, 'toluene', 29.72, 0.2972, 283.15, 2.0, 'liquid', 'JASPER'), +(481, 'toluene', 28.52, 0.2852, 293.15, 2.0, 'liquid', 'JASPER'), +(482, 'toluene', 27.33, 0.2733, 303.15, 2.0, 'liquid', 'JASPER'), +(483, 'toluene', 26.15, 0.2615, 313.15, 2.0, 'liquid', 'JASPER'), +(484, 'toluene', 24.95, 0.2495, 323.15, 2.0, 'liquid', 'JASPER'), +(485, 'toluene', 23.77, 0.2377, 333.15, 2.0, 'liquid', 'JASPER'), +(486, 'toluene', 22.58, 0.2258, 343.15, 2.0, 'liquid', 'JASPER'), +(487, 'toluene', 21.39, 0.2139, 353.15, 2.0, 'liquid', 'JASPER'), +(488, 'toluene', 20.2, 0.202, 363.15, 2.0, 'liquid', 'JASPER'), +(489, 'toluene', 19.01, 0.1901, 373.15, 2.0, 'liquid', 'JASPER'), +(490, 'mercury', 489.6, 4.896, 278.15, 2.0, 'liquid', 'JASPER'), +(491, 'mercury', 488.6, 4.886, 283.15, 2.0, 'liquid', 'JASPER'), +(492, 'mercury', 487.5, 4.875, 288.15, 2.0, 'liquid', 'JASPER'), +(493, 'mercury', 486.5, 4.865, 293.15, 2.0, 'liquid', 'JASPER'), +(494, 'mercury', 485.5, 4.855, 298.15, 2.0, 'liquid', 'JASPER'), +(495, 'mercury', 484.5, 4.845, 303.15, 2.0, 'liquid', 'JASPER'), +(496, 'mercury', 483.4, 4.834, 308.15, 2.0, 'liquid', 'JASPER'), +(497, 'mercury', 482.4, 4.824, 313.15, 2.0, 'liquid', 'JASPER'), +(498, 'mercury', 480.4, 4.804, 323.15, 2.0, 'liquid', 'JASPER'), +(499, 'mercury', 478.3, 4.783, 333.15, 2.0, 'liquid', 'JASPER'), +(500, 'mercury', 474.2, 4.742, 353.15, 2.0, 'liquid', 'JASPER'), +(501, 'mercury', 470.1, 4.701, 373.15, 2.0, 'liquid', 'JASPER'), +(502, 'mercury', 459.9, 4.599, 423.15, 2.0, 'liquid', 'JASPER'), +(503, 'mercury', 449.6, 4.496, 473.15, 2.0, 'liquid', 'JASPER'), +(504, 'propylbenzene', 30.05, 0.3005, 283.15, 2.0, 'liquid', 'JASPER'), +(505, 'propylbenzene', 28.98, 0.2898, 293.15, 2.0, 'liquid', 'JASPER'), +(506, 'propylbenzene', 27.9, 0.279, 303.15, 2.0, 'liquid', 'JASPER'), +(507, 'propylbenzene', 26.83, 0.2683, 313.15, 2.0, 'liquid', 'JASPER'), +(508, 'propylbenzene', 25.75, 0.2575, 323.15, 2.0, 'liquid', 'JASPER'), +(509, 'propylbenzene', 24.68, 0.2468, 333.15, 2.0, 'liquid', 'JASPER'), +(510, 'propylbenzene', 23.6, 0.236, 343.15, 2.0, 'liquid', 'JASPER'), +(511, 'propylbenzene', 22.53, 0.2253, 353.15, 2.0, 'liquid', 'JASPER'), +(512, 'propylbenzene', 21.45, 0.2145, 363.15, 2.0, 'liquid', 'JASPER'), +(513, 'propylbenzene', 20.38, 0.2038, 373.15, 2.0, 'liquid', 'JASPER'), +(514, 'o-Xylene', 31.41, 0.3141, 283.15, 2.0, 'liquid', 'JASPER'), +(515, 'o-Xylene', 30.31, 0.3031, 293.15, 2.0, 'liquid', 'JASPER'), +(516, 'o-Xylene', 29.21, 0.2921, 303.15, 2.0, 'liquid', 'JASPER'), +(517, 'o-Xylene', 28.11, 0.2811, 313.15, 2.0, 'liquid', 'JASPER'), +(518, 'o-Xylene', 27.0, 0.27, 323.15, 2.0, 'liquid', 'JASPER'), +(519, 'o-Xylene', 25.9, 0.259, 333.15, 2.0, 'liquid', 'JASPER'), +(520, 'o-Xylene', 24.8, 0.248, 343.15, 2.0, 'liquid', 'JASPER'), +(521, 'o-Xylene', 23.7, 0.237, 353.15, 2.0, 'liquid', 'JASPER'), +(522, 'o-Xylene', 22.6, 0.226, 363.15, 2.0, 'liquid', 'JASPER'), +(523, 'o-Xylene', 21.5, 0.215, 373.15, 2.0, 'liquid', 'JASPER'), +(524, 'm-Xylene', 30.13, 0.3013, 283.15, 2.0, 'liquid', 'JASPER'), +(525, 'm-Xylene', 29.02, 0.2902, 293.15, 2.0, 'liquid', 'JASPER'), +(526, 'm-Xylene', 27.92, 0.2792, 303.15, 2.0, 'liquid', 'JASPER'), +(527, 'm-Xylene', 26.81, 0.2681, 313.15, 2.0, 'liquid', 'JASPER'), +(528, 'm-Xylene', 25.71, 0.2571, 323.15, 2.0, 'liquid', 'JASPER'), +(529, 'm-Xylene', 24.61, 0.2461, 333.15, 2.0, 'liquid', 'JASPER'), +(530, 'm-Xylene', 23.5, 0.235, 343.15, 2.0, 'liquid', 'JASPER'), +(531, 'm-Xylene', 22.4, 0.224, 353.15, 2.0, 'liquid', 'JASPER'), +(532, 'm-Xylene', 21.29, 0.2129, 363.15, 2.0, 'liquid', 'JASPER'), +(533, 'm-Xylene', 20.19, 0.2019, 373.15, 2.0, 'liquid', 'JASPER'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(535, 'p-Xylene', 28.55, 0.2855, 293.15, 2.0, 'liquid', 'JASPER'), +(536, 'p-Xylene', 27.47, 0.2747, 303.15, 2.0, 'liquid', 'JASPER'), +(537, 'p-Xylene', 26.39, 0.2639, 313.15, 2.0, 'liquid', 'JASPER'), +(538, 'p-Xylene', 25.32, 0.2532, 323.15, 2.0, 'liquid', 'JASPER'), +(539, 'p-Xylene', 24.25, 0.2425, 333.15, 2.0, 'liquid', 'JASPER'), +(540, 'p-Xylene', 23.17, 0.2317, 343.15, 2.0, 'liquid', 'JASPER'), +(541, 'p-Xylene', 22.1, 0.221, 353.15, 2.0, 'liquid', 'JASPER'), +(542, 'p-Xylene', 21.02, 0.2102, 363.15, 2.0, 'liquid', 'JASPER'), +(543, 'p-Xylene', 19.95, 0.1995, 373.15, 2.0, 'liquid', 'JASPER'), +(544, 'ethylbenzene', 30.39, 0.3039, 283.15, 2.0, 'liquid', 'JASPER'), +(545, 'ethylbenzene', 29.29, 0.2929, 293.15, 2.0, 'liquid', 'JASPER'), +(546, 'ethylbenzene', 28.2, 0.282, 303.15, 2.0, 'liquid', 'JASPER'), +(547, 'ethylbenzene', 27.1, 0.271, 313.15, 2.0, 'liquid', 'JASPER'), +(548, 'ethylbenzene', 26.01, 0.2601, 323.15, 2.0, 'liquid', 'JASPER'), +(549, 'ethylbenzene', 24.92, 0.2492, 333.15, 2.0, 'liquid', 'JASPER'), +(550, 'ethylbenzene', 23.82, 0.2382, 343.15, 2.0, 'liquid', 'JASPER'), +(551, 'ethylbenzene', 22.73, 0.2273, 353.15, 2.0, 'liquid', 'JASPER'), +(552, 'ethylbenzene', 21.63, 0.2163, 363.15, 2.0, 'liquid', 'JASPER'), +(553, 'ethylbenzene', 20.54, 0.2054, 373.15, 2.0, 'liquid', 'JASPER'), +(560, 'acetone', 24.02, 0.2402, 298.15, 2.0, 'liquid', 'JASPER'), +(561, 'acetone', 22.9, 0.229, 303.15, 2.0, 'liquid', 'JASPER'), +(562, 'acetone', 22.34, 0.2234, 308.15, 2.0, 'liquid', 'JASPER'), +(563, 'acetone', 21.78, 0.2178, 313.15, 2.0, 'liquid', 'JASPER'), +(564, 'acetone', 21.22, 0.2122, 318.15, 2.0, 'liquid', 'JASPER'), +(565, 'acetone', 20.66, 0.2066, 323.15, 2.0, 'liquid', 'JASPER'), +(566, 'ethanol', 23.22, 0.2322, 283.15, 2.0, 'liquid', 'JASPER'), +(567, 'ethanol', 22.39, 0.2239, 293.15, 2.0, 'liquid', 'JASPER'), +(568, 'ethanol', 21.55, 0.2155, 303.15, 2.0, 'liquid', 'JASPER'), +(569, 'ethanol', 20.72, 0.2072, 313.15, 2.0, 'liquid', 'JASPER'), +(570, 'ethanol', 19.89, 0.1989, 323.15, 2.0, 'liquid', 'JASPER'), +(571, 'ethanol', 19.06, 0.1906, 333.15, 2.0, 'liquid', 'JASPER'), +(572, 'ethanol', 18.23, 0.1823, 343.15, 2.0, 'liquid', 'JASPER'), +(574, 'n-pentane', 17.15, 0.1715, 283.15, 2.0, 'liquid', 'JASPER'), +(575, 'n-pentane', 16.05, 0.1605, 293.15, 2.0, 'liquid', 'JASPER'), +(576, 'n-pentane', 14.94, 0.1494, 303.15, 2.0, 'liquid', 'JASPER'), +(577, 'n-hexane', 19.42, 0.1942, 283.15, 2.0, 'liquid', 'JASPER'), +(578, 'n-hexane', 18.4, 0.184, 293.15, 2.0, 'liquid', 'JASPER'), +(579, 'n-hexane', 17.38, 0.1738, 303.15, 2.0, 'liquid', 'JASPER'), +(580, 'n-hexane', 16.36, 0.1636, 313.15, 2.0, 'liquid', 'JASPER'), +(581, 'n-hexane', 15.34, 0.1534, 323.15, 2.0, 'liquid', 'JASPER'), +(582, 'n-hexane', 14.32, 0.1432, 333.15, 2.0, 'liquid', 'JASPER'), +(583, 'n-heptane ', 21.12, 0.2112, 283.15, 2.0, 'liquid', 'JASPER'), +(584, 'n-heptane', 20.14, 0.2014, 293.15, 2.0, 'liquid', 'JASPER'), +(585, 'n-heptane ', 19.17, 0.1917, 303.15, 2.0, 'liquid', 'JASPER'), +(586, 'n-heptane ', 18.18, 0.1818, 313.15, 2.0, 'liquid', 'JASPER'), +(587, 'n-heptane ', 17.2, 0.172, 323.15, 2.0, 'liquid', 'JASPER'), +(588, 'n-heptane ', 16.22, 0.1622, 333.15, 2.0, 'liquid', 'JASPER'), +(589, 'n-heptane ', 15.24, 0.1524, 343.15, 2.0, 'liquid', 'JASPER'), +(590, 'n-heptane ', 14.26, 0.1426, 353.15, 2.0, 'liquid', 'JASPER'), +(591, 'n-heptane ', 13.28, 0.1328, 363.15, 2.0, 'liquid', 'JASPER'), +(600, 'n-octane ', 22.57, 0.2257, 283.15, 2.0, 'liquid', 'JASPER'), +(601, 'n-octane ', 21.62, 0.2162, 293.15, 2.0, 'liquid', 'JASPER'), +(602, 'n-octane ', 20.67, 0.2067, 303.15, 2.0, 'liquid', 'JASPER'), +(603, 'n-octane ', 19.71, 0.1971, 313.15, 2.0, 'liquid', 'JASPER'), +(604, 'n-octane ', 18.77, 0.1877, 323.15, 2.0, 'liquid', 'JASPER'), +(605, 'n-octane ', 17.81, 0.1781, 333.15, 2.0, 'liquid', 'JASPER'), +(606, 'n-octane ', 16.86, 0.1686, 343.15, 2.0, 'liquid', 'JASPER'), +(607, 'n-octane ', 15.91, 0.1591, 353.15, 2.0, 'liquid', 'JASPER'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(608, 'n-octane ', 14.96, 0.1496, 363.15, 2.0, 'liquid', 'JASPER'), +(609, 'n-octane ', 14.01, 0.1401, 373.15, 2.0, 'liquid', 'JASPER'), +(610, 'n-octane ', 13.06, 0.1306, 383.15, 2.0, 'liquid', 'JASPER'), +(611, 'n-octane ', 12.11, 0.1211, 393.15, 2.0, 'liquid', 'JASPER'), +(612, 'n-nonane ', 23.79, 0.2379, 283.15, 2.0, 'liquid', 'JASPER'), +(613, 'n-nonane ', 22.85, 0.2285, 293.15, 2.0, 'liquid', 'JASPER'), +(614, 'n-nonane ', 21.92, 0.2192, 303.15, 2.0, 'liquid', 'JASPER'), +(615, 'n-nonane ', 20.98, 0.2098, 313.15, 2.0, 'liquid', 'JASPER'), +(616, 'n-nonane ', 20.05, 0.2005, 323.15, 2.0, 'liquid', 'JASPER'), +(617, 'n-nonane ', 19.12, 0.1912, 333.15, 2.0, 'liquid', 'JASPER'), +(618, 'n-nonane ', 18.18, 0.1818, 343.15, 2.0, 'liquid', 'JASPER'), +(619, 'n-nonane ', 17.24, 0.1724, 353.15, 2.0, 'liquid', 'JASPER'), +(620, 'n-nonane ', 16.31, 0.1631, 363.15, 2.0, 'liquid', 'JASPER'), +(621, 'n-nonane ', 15.37, 0.1537, 373.15, 2.0, 'liquid', 'JASPER'), +(622, 'n-nonane ', 14.44, 0.1444, 383.15, 2.0, 'liquid', 'JASPER'), +(623, 'n-nonane ', 13.5, 0.135, 393.15, 2.0, 'liquid', 'JASPER'), +(624, 'nC10', 24.75, 0.2257, 283.15, 2.0, 'liquid', 'JASPER'), +(625, 'nC10', 23.83, 0.2162, 293.15, 2.0, 'liquid', 'JASPER'), +(626, 'nC10', 22.91, 0.2067, 303.15, 2.0, 'liquid', 'JASPER'), +(627, 'nC10 ', 21.99, 0.1971, 313.15, 2.0, 'liquid', 'JASPER'), +(628, 'nC10 ', 21.07, 0.1877, 323.15, 2.0, 'liquid', 'JASPER'), +(629, 'nC10 ', 20.15, 0.1781, 333.15, 2.0, 'liquid', 'JASPER'), +(630, 'nC10 ', 19.23, 0.1686, 343.15, 2.0, 'liquid', 'JASPER'), +(631, 'nC10 ', 18.31, 0.1591, 353.15, 2.0, 'liquid', 'JASPER'), +(632, 'nC10 ', 17.39, 0.1496, 363.15, 2.0, 'liquid', 'JASPER'), +(633, 'nC10 ', 16.47, 0.1401, 373.15, 2.0, 'liquid', 'JASPER'), +(634, 'nC10 ', 15.55, 0.1306, 383.15, 2.0, 'liquid', 'JASPER'), +(635, 'nC10 ', 14.63, 0.1211, 393.15, 2.0, 'liquid', 'JASPER'), +(636, 'nC11', 25.56, 0.2556, 283.15, 2.0, 'liquid', 'JASPER'), +(637, 'nC11', 24.66, 0.2466, 293.15, 2.0, 'liquid', 'JASPER'), +(638, 'nC11', 23.76, 0.2376, 303.15, 2.0, 'liquid', 'JASPER'), +(639, 'nC11', 22.86, 0.2286, 313.15, 2.0, 'liquid', 'JASPER'), +(640, 'nC11', 21.96, 0.2196, 323.15, 2.0, 'liquid', 'JASPER'), +(641, 'nC11', 21.05, 0.2105, 333.15, 2.0, 'liquid', 'JASPER'), +(642, 'nC11', 20.15, 0.2015, 343.15, 2.0, 'liquid', 'JASPER'), +(643, 'nC11', 19.25, 0.1925, 353.15, 2.0, 'liquid', 'JASPER'), +(644, 'nC11', 18.35, 0.1835, 363.15, 2.0, 'liquid', 'JASPER'), +(645, 'nC11', 17.45, 0.1745, 373.15, 2.0, 'liquid', 'JASPER'), +(646, 'nC11', 16.55, 0.1655, 383.15, 2.0, 'liquid', 'JASPER'), +(647, 'nC11', 15.65, 0.1565, 393.15, 2.0, 'liquid', 'JASPER'), +(681, 'nC12', 26.24, 0.2624, 283.15, 2.0, 'liquid', 'JASPER'), +(682, 'nC12', 25.35, 0.2535, 293.15, 2.0, 'liquid', 'JASPER'), +(683, 'nC12', 24.47, 0.2447, 303.15, 2.0, 'liquid', 'JASPER'), +(684, 'nC12', 23.58, 0.2358, 313.15, 2.0, 'liquid', 'JASPER'), +(685, 'nC12', 22.7, 0.227, 323.15, 2.0, 'liquid', 'JASPER'), +(686, 'nC12', 21.81, 0.2181, 333.15, 2.0, 'liquid', 'JASPER'), +(687, 'nC12', 20.93, 0.2093, 343.15, 2.0, 'liquid', 'JASPER'), +(688, 'nC12', 20.05, 0.2005, 353.15, 2.0, 'liquid', 'JASPER'), +(689, 'nC12', 19.16, 0.1916, 363.15, 2.0, 'liquid', 'JASPER'), +(690, 'nC12', 18.28, 0.1828, 373.15, 2.0, 'liquid', 'JASPER'), +(691, 'nC12', 17.39, 0.1739, 383.15, 2.0, 'liquid', 'JASPER'), +(692, 'nC12', 16.51, 0.1651, 393.15, 2.0, 'liquid', 'JASPER'), +(693, 'nC13', 26.86, 0.2556, 283.15, 2.0, 'liquid', 'JASPER'), +(694, 'nC13', 25.99, 0.2466, 293.15, 2.0, 'liquid', 'JASPER'), +(695, 'nC13', 25.11, 0.2376, 303.15, 2.0, 'liquid', 'JASPER'), +(696, 'nC13', 24.24, 0.2286, 313.15, 2.0, 'liquid', 'JASPER'), +(697, 'nC13', 23.37, 0.2196, 323.15, 2.0, 'liquid', 'JASPER'), +(698, 'nC13', 22.5, 0.2105, 333.15, 2.0, 'liquid', 'JASPER'), +(699, 'nC13', 21.63, 0.2015, 343.15, 2.0, 'liquid', 'JASPER'), +(700, 'nC13', 20.75, 0.1925, 353.15, 2.0, 'liquid', 'JASPER'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(701, 'nC13', 19.88, 0.1835, 363.15, 2.0, 'liquid', 'JASPER'), +(702, 'nC13', 19.01, 0.1745, 373.15, 2.0, 'liquid', 'JASPER'), +(703, 'nC13', 18.14, 0.1655, 383.15, 2.0, 'liquid', 'JASPER'), +(704, 'nC13', 17.27, 0.1565, 393.15, 2.0, 'liquid', 'JASPER'), +(705, 'nC14', 27.43, 0.2556, 283.15, 2.0, 'liquid', 'JASPER'), +(706, 'nC14', 26.56, 0.2466, 293.15, 2.0, 'liquid', 'JASPER'), +(707, 'nC14', 25.69, 0.2376, 303.15, 2.0, 'liquid', 'JASPER'), +(708, 'nC14', 24.82, 0.2286, 313.15, 2.0, 'liquid', 'JASPER'), +(709, 'nC14', 23.96, 0.2196, 323.15, 2.0, 'liquid', 'JASPER'), +(710, 'nC14', 23.09, 0.2105, 333.15, 2.0, 'liquid', 'JASPER'), +(711, 'nC14', 22.22, 0.2015, 343.15, 2.0, 'liquid', 'JASPER'), +(712, 'nC14', 21.35, 0.1925, 353.15, 2.0, 'liquid', 'JASPER'), +(713, 'nC14', 20.48, 0.1835, 363.15, 2.0, 'liquid', 'JASPER'), +(714, 'nC14', 19.61, 0.1745, 373.15, 2.0, 'liquid', 'JASPER'), +(715, 'nC14', 18.74, 0.1655, 383.15, 2.0, 'liquid', 'JASPER'), +(716, 'nC14', 17.87, 0.1565, 393.15, 2.0, 'liquid', 'JASPER'), +(718, 'nC15', 27.07, 0.2466, 293.15, 2.0, 'liquid', 'JASPER'), +(719, 'nC15', 26.21, 0.2376, 303.15, 2.0, 'liquid', 'JASPER'), +(720, 'nC15', 23.35, 0.2286, 313.15, 2.0, 'liquid', 'JASPER'), +(721, 'nC15', 24.5, 0.2196, 323.15, 2.0, 'liquid', 'JASPER'), +(722, 'nC15', 23.64, 0.2105, 333.15, 2.0, 'liquid', 'JASPER'), +(723, 'nC15', 22.78, 0.2015, 343.15, 2.0, 'liquid', 'JASPER'), +(724, 'nC15', 21.93, 0.1925, 353.15, 2.0, 'liquid', 'JASPER'), +(725, 'nC15', 21.07, 0.1835, 363.15, 2.0, 'liquid', 'JASPER'), +(726, 'nC15', 20.21, 0.1745, 373.15, 2.0, 'liquid', 'JASPER'), +(727, 'nC15', 19.36, 0.1655, 383.15, 2.0, 'liquid', 'JASPER'), +(728, 'nC15', 18.5, 0.1565, 393.15, 2.0, 'liquid', 'JASPER'), +(730, 'nC16', 27.47, 0.2466, 293.15, 2.0, 'liquid', 'JASPER'), +(731, 'nC16', 26.62, 0.2376, 303.15, 2.0, 'liquid', 'JASPER'), +(732, 'nC16', 25.76, 0.2286, 313.15, 2.0, 'liquid', 'JASPER'), +(733, 'nC16', 24.91, 0.2196, 323.15, 2.0, 'liquid', 'JASPER'), +(734, 'nC16', 24.06, 0.2105, 333.15, 2.0, 'liquid', 'JASPER'), +(735, 'nC16', 23.2, 0.2015, 343.15, 2.0, 'liquid', 'JASPER'), +(736, 'nC16', 22.35, 0.1925, 353.15, 2.0, 'liquid', 'JASPER'), +(737, 'nC16', 21.49, 0.1835, 363.15, 2.0, 'liquid', 'JASPER'), +(738, 'nC16', 20.64, 0.1745, 373.15, 2.0, 'liquid', 'JASPER'), +(739, 'nC16', 19.79, 0.1655, 383.15, 2.0, 'liquid', 'JASPER'), +(740, 'nC16', 18.93, 0.1565, 393.15, 2.0, 'liquid', 'JASPER'), +(743, 'nC17', 27.06, 0.2376, 303.15, 2.0, 'liquid', 'JASPER'), +(744, 'nC17', 26.22, 0.2286, 313.15, 2.0, 'liquid', 'JASPER'), +(745, 'nC17', 25.38, 0.2196, 323.15, 2.0, 'liquid', 'JASPER'), +(746, 'nC17', 24.52, 0.2105, 333.15, 2.0, 'liquid', 'JASPER'), +(747, 'nC17', 23.68, 0.2015, 343.15, 2.0, 'liquid', 'JASPER'), +(748, 'nC17', 22.83, 0.1925, 353.15, 2.0, 'liquid', 'JASPER'), +(749, 'nC17', 21.99, 0.1835, 363.15, 2.0, 'liquid', 'JASPER'), +(750, 'nC17', 21.14, 0.1745, 373.15, 2.0, 'liquid', 'JASPER'), +(751, 'nC17', 20.29, 0.1655, 383.15, 2.0, 'liquid', 'JASPER'), +(752, 'nC17', 19.45, 0.1565, 393.15, 2.0, 'liquid', 'JASPER'), +(755, 'nC18', 27.45, 0.2376, 303.15, 2.0, 'liquid', 'JASPER'), +(756, 'nC18', 26.61, 0.2286, 313.15, 2.0, 'liquid', 'JASPER'), +(757, 'nC18', 25.77, 0.2196, 323.15, 2.0, 'liquid', 'JASPER'), +(758, 'nC18', 24.92, 0.2105, 333.15, 2.0, 'liquid', 'JASPER'), +(759, 'nC18', 24.08, 0.2015, 343.15, 2.0, 'liquid', 'JASPER'), +(760, 'nC18', 23.24, 0.1925, 353.15, 2.0, 'liquid', 'JASPER'), +(761, 'nC18', 22.39, 0.1835, 363.15, 2.0, 'liquid', 'JASPER'), +(762, 'nC18', 21.55, 0.1745, 373.15, 2.0, 'liquid', 'JASPER'), +(763, 'nC18', 20.71, 0.1655, 383.15, 2.0, 'liquid', 'JASPER'), +(764, 'nC18', 19.87, 0.1565, 393.15, 2.0, 'liquid', 'JASPER'), +(766, 'nC19', 28.59, 0.2466, 293.15, 2.0, 'liquid', 'JASPER'), +(767, 'nC19', 27.75, 0.2376, 303.15, 2.0, 'liquid', 'JASPER'), +(768, 'nC19', 26.91, 0.2286, 313.15, 2.0, 'liquid', 'JASPER'), +(769, 'nC19', 26.07, 0.2196, 323.15, 2.0, 'liquid', 'JASPER'), +(770, 'nC19', 25.24, 0.2105, 333.15, 2.0, 'liquid', 'JASPER'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(771, 'nC19', 24.4, 0.2015, 343.15, 2.0, 'liquid', 'JASPER'), +(772, 'nC19', 23.56, 0.1925, 353.15, 2.0, 'liquid', 'JASPER'), +(773, 'nC19', 22.73, 0.1835, 363.15, 2.0, 'liquid', 'JASPER'), +(774, 'nC19', 21.89, 0.1745, 373.15, 2.0, 'liquid', 'JASPER'), +(775, 'nC19', 21.05, 0.1655, 383.15, 2.0, 'liquid', 'JASPER'), +(776, 'nC19', 20.21, 0.1565, 393.15, 2.0, 'liquid', 'JASPER'), +(778, 'nC20', 28.87, 0.2466, 293.15, 2.0, 'liquid', 'JASPER'), +(779, 'nC20', 28.04, 0.2376, 303.15, 2.0, 'liquid', 'JASPER'), +(780, 'nC20', 27.21, 0.2286, 313.15, 2.0, 'liquid', 'JASPER'), +(781, 'nC20', 26.38, 0.2196, 323.15, 2.0, 'liquid', 'JASPER'), +(782, 'nC20', 25.54, 0.2105, 333.15, 2.0, 'liquid', 'JASPER'), +(783, 'nC20', 24.71, 0.2015, 343.15, 2.0, 'liquid', 'JASPER'), +(784, 'nC20', 23.88, 0.1925, 353.15, 2.0, 'liquid', 'JASPER'), +(785, 'nC20', 23.04, 0.1835, 363.15, 2.0, 'liquid', 'JASPER'), +(786, 'nC20', 22.21, 0.1745, 373.15, 2.0, 'liquid', 'JASPER'), +(787, 'nC20', 21.38, 0.1655, 383.15, 2.0, 'liquid', 'JASPER'), +(788, 'nC20', 20.54, 0.1565, 393.15, 2.0, 'liquid', 'JASPER'), +(789, '2-m-C5', 18.37, 0.2556, 283.15, 2.0, 'liquid', 'JASPER'), +(790, '2-m-C5', 17.38, 0.2466, 293.15, 2.0, 'liquid', 'JASPER'), +(791, '2-m-C5', 16.87, 0.2376, 298.15, 2.0, 'liquid', 'JASPER'), +(792, '2-m-C5', 16.37, 0.2286, 303.15, 2.0, 'liquid', 'JASPER'), +(793, '2-m-C5', 15.36, 0.2196, 313.15, 2.0, 'liquid', 'JASPER'), +(794, '2-m-C5', 14.39, 0.2105, 323.15, 2.0, 'liquid', 'JASPER'), +(795, '2-m-C5', 13.39, 0.2556, 333.15, 2.0, 'liquid', 'JASPER'), +(796, '3-m-C5', 19.2, 0.2556, 283.15, 2.0, 'liquid', 'JASPER'), +(797, '3-m-C5', 18.14, 0.2466, 293.15, 2.0, 'liquid', 'JASPER'), +(798, '3-m-C5', 17.61, 0.2376, 298.15, 2.0, 'liquid', 'JASPER'), +(799, '3-m-C5', 17.08, 0.2286, 303.15, 2.0, 'liquid', 'JASPER'), +(800, '3-m-C5', 16.02, 0.2196, 313.15, 2.0, 'liquid', 'JASPER'), +(801, '3-m-C5', 14.96, 0.2105, 323.15, 2.0, 'liquid', 'JASPER'), +(802, '3-m-C5', 13.9, 0.2556, 333.15, 2.0, 'liquid', 'JASPER'), +(803, '22-dim-C4', 17.3, 0.2376, 283.15, 2.0, 'liquid', 'JASPER'), +(804, '22-dim-C4', 16.31, 0.2286, 293.15, 2.0, 'liquid', 'JASPER'), +(805, '22-dim-C4', 15.81, 0.2196, 298.15, 2.0, 'liquid', 'JASPER'), +(806, '22-dim-C4', 15.32, 0.2105, 303.15, 2.0, 'liquid', 'JASPER'), +(807, '22-dim-C4', 14.33, 0.2556, 313.15, 2.0, 'liquid', 'JASPER'), +(808, '23-dim-C4', 18.38, 0.2466, 283.15, 2.0, 'liquid', 'JASPER'), +(809, '23-dim-C4', 17.38, 0.2376, 293.15, 2.0, 'liquid', 'JASPER'), +(810, '23-dim-C4', 16.88, 0.2286, 298.15, 2.0, 'liquid', 'JASPER'), +(811, '23-dim-C4', 16.38, 0.2196, 303.15, 2.0, 'liquid', 'JASPER'), +(812, '23-dim-C4', 15.38, 0.2105, 313.15, 2.0, 'liquid', 'JASPER'), +(813, '23-dim-C4', 14.38, 0.1438, 323.15, 2.0, 'liquid', 'JASPER'), +(814, '22-DM-C5', 21.85, 0.2376, 253.15, 2.0, 'liquid', 'JASPER'), +(815, '22-DM-C5', 20.9, 0.2286, 263.15, 2.0, 'liquid', 'JASPER'), +(816, '22-DM-C5', 18.98, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(817, '22-DM-C5', 18.03, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(818, '22-DM-C5', 17.55, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(819, '22-DM-C5', 17.07, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(820, '22-DM-C5', 16.11, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(821, '22-DM-C5', 15.16, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(822, '22-DM-C5', 14.2, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(823, '22-DM-C5', 13.24, 0.2105, 343.15, 2.0, 'liquid', 'JASPER'), +(824, '22-DM-C5', 12.29, 0.1438, 353.15, 2.0, 'liquid', 'JASPER'), +(825, '24-DM-C5', 22.03, 0.2376, 253.15, 2.0, 'liquid', 'JASPER'), +(826, '24-DM-C5', 21.06, 0.2286, 263.15, 2.0, 'liquid', 'JASPER'), +(827, '24-DM-C5', 19.12, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(828, '24-DM-C5', 18.15, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(829, '24-DM-C5', 17.66, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(830, '24-DM-C5', 17.18, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(831, '24-DM-C5', 16.2, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(832, '24-DM-C5', 15.23, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(833, '24-DM-C5', 14.26, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(834, '24-DM-C5', 13.29, 0.2105, 343.15, 2.0, 'liquid', 'JASPER'), +(835, '24-DM-C5', 12.32, 0.1438, 353.15, 2.0, 'liquid', 'JASPER'), +(836, '33-DM-C5', 23.58, 0.2376, 253.15, 2.0, 'liquid', 'JASPER'), +(837, '33-DM-C5', 22.59, 0.2286, 263.15, 2.0, 'liquid', 'JASPER'), +(838, '33-DM-C5', 20.59, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(839, '33-DM-C5', 19.6, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(840, '33-DM-C5', 19.1, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(841, '33-DM-C5', 18.6, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(842, '33-DM-C5', 17.61, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(843, '33-DM-C5', 16.61, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(844, '33-DM-C5', 15.62, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(845, '33-DM-C5', 14.62, 0.2105, 343.15, 2.0, 'liquid', 'JASPER'), +(846, '33-DM-C5', 13.63, 0.1438, 353.15, 2.0, 'liquid', 'JASPER'), +(847, '23-DM-C5', 23.95, 0.2376, 253.15, 2.0, 'liquid', 'JASPER'), +(848, '23-DM-C5', 22.95, 0.2286, 263.15, 2.0, 'liquid', 'JASPER'), +(849, '23-DM-C5', 20.97, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(850, '23-DM-C5', 19.97, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(851, '23-DM-C5', 19.47, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(852, '23-DM-C5', 18.98, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(853, '23-DM-C5', 17.79, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(854, '23-DM-C5', 16.99, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(855, '23-DM-C5', 15.99, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(856, '23-DM-C5', 15.0, 0.2105, 343.15, 2.0, 'liquid', 'JASPER'), +(857, '23-DM-C5', 13.99, 0.1438, 353.15, 2.0, 'liquid', 'JASPER'), +(858, '2-M-C6', 23.15, 0.2376, 253.15, 2.0, 'liquid', 'JASPER'), +(859, '2-M-C6', 22.18, 0.2286, 263.15, 2.0, 'liquid', 'JASPER'), +(860, '2-M-C6', 20.26, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(861, '2-M-C6', 19.29, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(862, '2-M-C6', 18.81, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(863, '2-M-C6', 18.33, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(864, '2-M-C6', 17.37, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(865, '2-M-C6', 16.4, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(866, '2-M-C6', 15.44, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(867, '2-M-C6', 14.48, 0.2105, 343.15, 2.0, 'liquid', 'JASPER'), +(868, '2-M-C6', 13.51, 0.1438, 353.15, 2.0, 'liquid', 'JASPER'), +(869, '2-M-C6', 12.45, 0.1438, 363.15, 2.0, 'liquid', 'JASPER'), +(870, '3-M-C6', 23.67, 0.2376, 253.15, 2.0, 'liquid', 'JASPER'), +(871, '3-M-C6', 22.7, 0.2286, 263.15, 2.0, 'liquid', 'JASPER'), +(872, '3-M-C6', 20.76, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(873, '3-M-C6', 19.79, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(874, '3-M-C6', 19.31, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(875, '3-M-C6', 18.82, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(876, '3-M-C6', 17.85, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(877, '3-M-C6', 16.88, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(878, '3-M-C6', 15.91, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(879, '3-M-C6', 14.94, 0.2105, 343.15, 2.0, 'liquid', 'JASPER'), +(880, '3-M-C6', 13.97, 0.1438, 353.15, 2.0, 'liquid', 'JASPER'), +(881, '3-M-C6', 13.0, 0.1438, 363.15, 2.0, 'liquid', 'JASPER'), +(884, '22-DM-C6', 20.5, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(885, '22-DM-C6', 19.61, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(886, '22-DM-C6', 19.17, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(887, '22-DM-C6', 18.73, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(888, '22-DM-C6', 17.84, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(889, '22-DM-C6', 16.96, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(890, '22-DM-C6', 16.08, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(891, '22-DM-C6', 15.19, 0.2105, 343.15, 2.0, 'liquid', 'JASPER'), +(892, '22-DM-C6', 14.31, 0.1438, 353.15, 2.0, 'liquid', 'JASPER'), +(893, '22-DM-C6', 13.42, 0.1438, 363.15, 2.0, 'liquid', 'JASPER'), +(894, '22-DM-C6', 12.54, 0.1438, 373.15, 2.0, 'liquid', 'JASPER'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(895, '25-DM-C6', 20.77, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(896, '25-DM-C6', 19.86, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(897, '25-DM-C6', 19.4, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(898, '25-DM-C6', 18.94, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(899, '25-DM-C6', 18.03, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(900, '25-DM-C6', 17.12, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(901, '25-DM-C6', 16.21, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(902, '25-DM-C6', 15.3, 0.2105, 343.15, 2.0, 'liquid', 'JASPER'), +(903, '25-DM-C6', 14.38, 0.1438, 353.15, 2.0, 'liquid', 'JASPER'), +(904, '25-DM-C6', 13.47, 0.1438, 363.15, 2.0, 'liquid', 'JASPER'), +(905, '25-DM-C6', 12.56, 0.1438, 373.15, 2.0, 'liquid', 'JASPER'), +(906, '24-DM-C6', 20.96, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(907, '24-DM-C6', 20.05, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(908, '24-DM-C6', 19.59, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(909, '24-DM-C6', 19.14, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(910, '24-DM-C6', 18.23, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(911, '24-DM-C6', 17.33, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(912, '24-DM-C6', 16.42, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(913, '24-DM-C6', 15.51, 0.2105, 343.15, 2.0, 'liquid', 'JASPER'), +(914, '24-DM-C6', 14.61, 0.1438, 353.15, 2.0, 'liquid', 'JASPER'), +(915, '24-DM-C6', 13.7, 0.1438, 363.15, 2.0, 'liquid', 'JASPER'), +(916, '24-DM-C6', 12.79, 0.1438, 373.15, 2.0, 'liquid', 'JASPER'), +(917, '3-M-C7', 22.28, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(918, '3-M-C7', 21.31, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(919, '3-M-C7', 20.82, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(920, '3-M-C7', 20.34, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(921, '3-M-C7', 19.37, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(922, '3-M-C7', 18.4, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(923, '3-M-C7', 17.43, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(924, '3-M-C7', 16.46, 0.2105, 343.15, 2.0, 'liquid', 'JASPER'), +(925, '3-M-C7', 15.49, 0.1438, 353.15, 2.0, 'liquid', 'JASPER'), +(926, '3-M-C7', 14.52, 0.1438, 363.15, 2.0, 'liquid', 'JASPER'), +(927, '3-M-C7', 13.55, 0.1438, 373.15, 2.0, 'liquid', 'JASPER'), +(928, '4-M-C8', 23.28, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(929, '4-M-C8', 22.34, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(930, '4-M-C8', 21.87, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(931, '4-M-C8', 21.4, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(932, '4-M-C8', 20.46, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(933, '4-M-C8', 19.52, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(934, '4-M-C8', 18.58, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(939, '2-M-C8', 23.28, 0.2196, 283.15, 2.0, 'liquid', 'JASPER'), +(940, '2-M-C8', 22.34, 0.2105, 293.15, 2.0, 'liquid', 'JASPER'), +(941, '2-M-C8', 21.87, 0.2556, 298.15, 2.0, 'liquid', 'JASPER'), +(942, '2-M-C8', 21.4, 0.2466, 303.15, 2.0, 'liquid', 'JASPER'), +(943, '2-M-C8', 20.46, 0.2376, 313.15, 2.0, 'liquid', 'JASPER'), +(944, '2-M-C8', 19.52, 0.2286, 323.15, 2.0, 'liquid', 'JASPER'), +(945, '2-M-C8', 18.58, 0.2196, 333.15, 2.0, 'liquid', 'JASPER'), +(950, 'MEG', 48.0, 0.48, 298.15, 2.0, 'liquid', 'DOW.COM'), +(951, 'DEG', 44.8, 0.448, 298.15, 2.0, 'liquid', 'DOW.COM'), +(952, 'TEG', 45.5, 0.458, 298.15, 2.0, 'liquid', 'DOW.COM'), +(953, 'MEG', 47.5, 0.48, 313.15, 2.0, 'liquid', 'DOW.COM'), +(954, 'TEG', 45.0, 0.458, 313.15, 2.0, 'liquid', 'DOW.COM'); +CREATE CACHED TABLE PUBLIC.PURECOMPONENTSURFACETENSION2( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + SURFACETENSION DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + PHASETYPE VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.PURECOMPONENTSURFACETENSION2 ADD CONSTRAINT PUBLIC.CONSTRAINT_B0 PRIMARY KEY(ID); +-- 348 +/- SELECT COUNT(*) FROM PUBLIC.PURECOMPONENTSURFACETENSION2; +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION2(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(102, 'methane', 18.877, 0.18877, 90.0, 1.0, 'liquid', 'jasper'), +(103, 'methane', 16.328, 0.16328, 100.0, 1.0, 'liquid', 'jasper'), +(104, 'methane', 15.026, 0.15026, 105.0, 1.0, 'liquid', 'jasper'), +(105, 'methane', 13.707, 0.13707, 110.0, 1.0, 'liquid', 'jasper'), +(106, 'methane', 12.371, 0.12371, 115.0, 1.0, 'liquid', 'jasper'), +(107, 'ethane', 24.48, 0.2448, 133.15, 1.0, 'liquid', 'jasper'), +(108, 'ethane', 22.82, 0.2282, 143.15, 1.0, 'liquid', 'jasper'), +(109, 'ethane', 21.16, 0.2116, 153.15, 1.0, 'liquid', 'jasper'), +(110, 'ethane', 19.5, 0.195, 163.15, 1.0, 'liquid', 'jasper'), +(111, 'ethane', 17.84, 0.1784, 173.15, 1.0, 'liquid', 'jasper'), +(112, 'ethane', 16.19, 0.1619, 183.15, 1.0, 'liquid', 'jasper'), +(113, 'propane', 17.09, 0.1709, 183.15, 1.0, 'liquid', 'jasper'), +(114, 'propane', 15.34, 0.1534, 203.15, 1.0, 'liquid', 'jasper'), +(115, 'propane', 13.59, 0.1359, 223.15, 1.0, 'liquid', 'jasper'), +(116, 'propane', 11.84, 0.1184, 243.15, 1.0, 'liquid', 'jasper'), +(117, 'propane', 10.09, 0.1009, 263.15, 1.0, 'liquid', 'jasper'), +(118, 'propane', 8.35, 0.0835, 283.15, 1.0, 'liquid', 'jasper'), +(119, 'n-butane', 23.31, 0.2331, 203.15, 1.0, 'liquid', 'jasper'), +(120, 'n-butane', 20.9, 0.209, 223.15, 1.0, 'liquid', 'jasper'), +(121, 'n-butane', 17.28, 0.1728, 253.15, 1.0, 'liquid', 'jasper'), +(122, 'n-butane', 16.08, 0.1608, 263.15, 1.0, 'liquid', 'jasper'), +(123, 'n-butane', 13.66, 0.1366, 283.15, 1.0, 'liquid', 'jasper'), +(124, 'n-butane', 12.46, 0.1246, 293.15, 1.0, 'liquid', 'jasper'), +(125, 'CO2', 10.08, 0.1008, 243.15, 1.0, 'liquid', 'jasper'), +(126, 'CO2', 8.06, 0.0806, 253.15, 1.0, 'liquid', 'jasper'), +(127, 'CO2', 6.14, 0.0614, 263.15, 1.0, 'liquid', 'jasper'), +(128, 'CO2', 4.34, 0.0434, 273.15, 1.0, 'liquid', 'jasper'), +(129, 'CO2', 2.67, 0.0267, 283.15, 1.0, 'liquid', 'jasper'), +(130, 'CO2', 1.9, 0.019, 288.15, 1.0, 'liquid', 'jasper'), +(131, 'CO2', 1.19, 0.0119, 293.15, 1.0, 'liquid', 'jasper'), +(132, 'CO2', 0.57, 0.0057, 298.15, 1.0, 'liquid', 'jasper'), +(133, 'c-hexane', 27.13, 0.2713, 278.15, 1.0, 'liquid', 'jasper'), +(134, 'c-hexane', 26.43, 0.2643, 283.15, 1.0, 'liquid', 'jasper'), +(135, 'c-hexane', 25.24, 0.2524, 293.15, 1.0, 'liquid', 'jasper'), +(136, 'c-hexane', 24.06, 0.2406, 303.15, 1.0, 'liquid', 'jasper'), +(137, 'c-hexane', 22.87, 0.2287, 313.15, 1.0, 'liquid', 'jasper'), +(138, 'c-hexane', 21.68, 0.2168, 323.15, 1.0, 'liquid', 'jasper'), +(139, 'c-hexane', 20.49, 0.2049, 333.15, 1.0, 'liquid', 'jasper'), +(140, 'M-cy-C5', 23.47, 0.2347, 283.15, 1.0, 'liquid', 'jasper'), +(141, 'M-cy-C5', 22.3, 0.223, 293.15, 1.0, 'liquid', 'jasper'), +(142, 'M-cy-C5', 21.14, 0.2114, 303.15, 1.0, 'liquid', 'jasper'), +(143, 'M-cy-C5', 19.98, 0.1998, 313.15, 1.0, 'liquid', 'jasper'), +(144, 'M-cy-C5', 18.81, 0.1881, 323.15, 1.0, 'liquid', 'jasper'), +(145, 'M-cy-C5', 17.65, 0.1765, 333.15, 1.0, 'liquid', 'jasper'), +(146, 'n-pentane ', 17.15, 0.1715, 283.15, 1.0, 'liquid', 'jasper'), +(147, 'n-pentane ', 16.05, 0.1605, 293.15, 1.0, 'liquid', 'jasper'), +(148, 'n-pentane ', 14.94, 0.1494, 303.15, 1.0, 'liquid', 'jasper'), +(149, 'n-hexane', 19.42, 0.1942, 283.15, 1.0, 'liquid', 'jasper'), +(150, 'n-hexane', 18.4, 0.184, 293.15, 1.0, 'liquid', 'jasper'), +(151, 'n-hexane', 17.38, 0.1738, 303.15, 1.0, 'liquid', 'jasper'), +(152, 'n-hexane', 16.36, 0.1636, 313.15, 1.0, 'liquid', 'jasper'), +(153, 'n-hexane', 15.34, 0.1534, 323.15, 1.0, 'liquid', 'jasper'), +(154, 'n-nonane', 23.79, 0.2379, 283.15, 1.0, 'liquid', 'jasper'), +(155, 'n-nonane ', 22.85, 0.2285, 293.15, 1.0, 'liquid', 'jasper'), +(156, 'n-nonane ', 21.92, 0.2192, 303.15, 1.0, 'liquid', 'jasper'), +(157, 'n-nonane ', 20.98, 0.2098, 313.15, 1.0, 'liquid', 'jasper'), +(158, 'methane', 16.28, 0.1628, 96.29, 1.0, 'liquid', 'Soares et al 1986'), +(159, 'methane', 14.49, 0.1449, 103.87, 1.0, 'liquid', 'Soares et al 1986'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION2(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(160, 'methane', 14.2, 0.142, 104.83, 1.0, 'liquid', 'Soares et al 1986'), +(161, 'methane', 13.9, 0.139, 106.25, 1.0, 'liquid', 'Soares et al 1986'), +(162, 'methane', 14.06, 0.1406, 106.41, 1.0, 'liquid', 'Soares et al 1986'), +(163, 'methane', 14.08, 0.1408, 106.72, 1.0, 'liquid', 'Soares et al 1986'), +(164, 'methane', 13.87, 0.1387, 106.73, 1.0, 'liquid', 'Soares et al 1986'), +(165, 'methane', 13.89, 0.1389, 107.74, 1.0, 'liquid', 'Soares et al 1986'), +(166, 'methane', 13.81, 0.1381, 107.89, 1.0, 'liquid', 'Soares et al 1986'), +(167, 'methane', 13.36, 0.1336, 109.2, 1.0, 'liquid', 'Soares et al 1986'), +(168, 'methane', 13.15, 0.1315, 109.86, 1.0, 'liquid', 'Soares et al 1986'), +(169, 'ethane', 27.08, 0.2708, 117.8, 1.0, 'liquid', 'Soares et al'), +(170, 'ethane', 26.68, 0.2668, 119.83, 1.0, 'liquid', 'Soares et al'), +(171, 'ethane', 26.48, 0.2648, 120.9, 1.0, 'liquid', 'Soares et al'), +(172, 'ethane', 26.4, 0.264, 122.37, 1.0, 'liquid', 'Soares et al'), +(173, 'ethane', 26.0, 0.26, 124.7, 1.0, 'liquid', 'Soares et al'), +(174, 'ethane', 25.96, 0.2596, 124.8, 1.0, 'liquid', 'Soares et al'), +(175, 'ethane', 25.74, 0.2574, 125.56, 1.0, 'liquid', 'Soares et al'), +(176, 'ethane', 25.67, 0.2567, 125.9, 1.0, 'liquid', 'Soares et al'), +(177, 'ethane', 25.51, 0.2551, 127.42, 1.0, 'liquid', 'Soares et al'), +(178, 'ethane', 25.38, 0.2538, 128.2, 1.0, 'liquid', 'Soares et al'), +(179, 'ethane', 25.34, 0.2534, 128.7, 1.0, 'liquid', 'Soares et al'), +(180, 'ethane', 24.96, 0.2496, 130.06, 1.0, 'liquid', 'Soares et al'), +(181, 'ethane', 24.37, 0.2437, 133.52, 1.0, 'liquid', 'Soares et al'), +(182, 'ethane', 24.2, 0.242, 135.16, 1.0, 'liquid', 'Soares et al'), +(183, 'ethane', 23.92, 0.2392, 136.67, 1.0, 'liquid', 'Soares et al'), +(184, 'ethane', 25.0, 0.25, 129.2, 1.0, 'liquid', 'Leadbetter el al 1964'), +(185, 'ethane', 24.54, 0.2454, 133.2, 1.0, 'liquid', 'Leadbetter el al 1964'), +(186, 'ethane', 23.72, 0.2372, 137.1, 1.0, 'liquid', 'Leadbetter el al 1964'), +(187, 'ethane', 21.75, 0.2175, 149.1, 1.0, 'liquid', 'Leadbetter el al 1964'), +(188, 'ethane', 21.68, 0.2168, 150.6, 1.0, 'liquid', 'Leadbetter el al 1964'), +(189, 'ethane', 20.71, 0.2071, 155.9, 1.0, 'liquid', 'Leadbetter el al 1964'), +(190, 'ethane', 20.46, 0.2046, 157.5, 1.0, 'liquid', 'Leadbetter el al 1964'), +(191, 'ethane', 19.86, 0.1986, 161.3, 1.0, 'liquid', 'Leadbetter el al 1964'), +(192, 'ethane', 19.28, 0.1928, 164.4, 1.0, 'liquid', 'Leadbetter el al 1964'), +(193, 'ethane', 18.31, 0.1831, 170.3, 1.0, 'liquid', 'Leadbetter el al 1964'), +(194, 'ethane', 16.63, 0.1663, 180.6, 1.0, 'liquid', 'Leadbetter el al 1964'), +(195, 'propane', 9.31, 0.0931, 274.1, 1.0, 'liquid', 'Katz et al 1939'), +(196, 'propane', 9.05, 0.0905, 276.2, 1.0, 'liquid', 'Katz et al 1939'), +(197, 'propane', 7.68, 0.0768, 289.1, 1.0, 'liquid', 'Katz et al 1939'), +(198, 'propane', 7.62, 0.0762, 289.3, 1.0, 'liquid', 'Katz et al 1939'), +(199, 'propane', 7.49, 0.0749, 289.8, 1.0, 'liquid', 'Katz et al 1939'), +(200, 'propane', 7.22, 0.0722, 296.2, 1.0, 'liquid', 'Katz et al 1939'), +(201, 'propane', 7.22, 0.0722, 297.1, 1.0, 'liquid', 'Katz et al 1939'), +(202, 'propane', 6.88, 0.0688, 300.2, 1.0, 'liquid', 'Katz et al 1939'), +(203, 'propane', 6.63, 0.0663, 303.6, 1.0, 'liquid', 'Katz et al 1939'), +(204, 'propane', 6.15, 0.0615, 304.1, 1.0, 'liquid', 'Katz et al 1939'), +(205, 'propane', 6.21, 0.0621, 308.1, 1.0, 'liquid', 'Katz et al 1939'), +(206, 'propane', 5.84, 0.0584, 312.6, 1.0, 'liquid', 'Katz et al 1939'), +(207, 'n-butane', 15.4, 0.154, 275.2, 1.0, 'liquid', 'Katz et al 1939'), +(208, 'n-butane', 15.1, 0.151, 278.1, 1.0, 'liquid', 'Katz et al 1939'), +(209, 'n-butane', 14.3, 0.143, 283.3, 1.0, 'liquid', 'Katz et al 1939'), +(210, 'n-butane', 13.9, 0.139, 287.1, 1.0, 'liquid', 'Katz et al 1939'), +(211, 'n-butane', 13.6, 0.136, 289.9, 1.0, 'liquid', 'Katz et al 1939'), +(212, 'n-butane', 12.8, 0.128, 293.5, 1.0, 'liquid', 'Katz et al 1939'), +(213, 'n-butane', 12.9, 0.129, 296.4, 1.0, 'liquid', 'Katz et al 1939'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION2(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(214, 'n-butane', 12.8, 0.128, 296.9, 1.0, 'liquid', 'Katz et al 1939'), +(215, 'n-butane', 12.8, 0.128, 299.1, 1.0, 'liquid', 'Katz et al 1939'), +(216, 'n-butane', 12.5, 0.125, 300.6, 1.0, 'liquid', 'Katz et al 1939'), +(217, 'n-butane', 12.2, 0.122, 302.1, 1.0, 'liquid', 'Katz et al 1939'), +(218, 'n-butane', 12.3, 0.123, 302.7, 1.0, 'liquid', 'Katz et al 1939'), +(219, 'n-butane', 12.2, 0.122, 307.9, 1.0, 'liquid', 'Katz et al 1939'), +(220, 'n-butane', 10.6, 0.106, 318.5, 1.0, 'liquid', 'Katz et al 1939'), +(221, 'propane', 10.18, 0.1018, 273.15, 1.0, 'liquid', 'Baidakov et al 1985'), +(222, 'propane', 10.06, 0.1006, 274.23, 1.0, 'liquid', 'Baidakov et al 1985'), +(223, 'propane', 8.8, 0.088, 283.98, 1.0, 'liquid', 'Baidakov et al 1985'), +(224, 'propane', 8.17, 0.817, 289.01, 1.0, 'liquid', 'Baidakov et al 1985'), +(225, 'propane', 7.87, 0.787, 291.47, 1.0, 'liquid', 'Baidakov et al 1985'), +(226, 'propane', 7.47, 0.747, 294.71, 1.0, 'liquid', 'Baidakov et al 1985'), +(227, 'propane', 7.23, 0.723, 296.61, 1.0, 'liquid', 'Baidakov et al 1985'), +(228, 'propane', 6.77, 0.677, 300.53, 1.0, 'liquid', 'Baidakov et al 1985'), +(229, 'propane', 6.22, 0.622, 305.12, 1.0, 'liquid', 'Baidakov et al 1985'), +(230, 'propane', 5.56, 0.556, 310.6, 1.0, 'liquid', 'Baidakov et al 1985'), +(231, 'propane', 4.95, 0.495, 315.97, 1.0, 'liquid', 'Baidakov et al 1985'), +(232, 'i-butane', 13.01, 0.1301, 273.15, 1.0, 'liquid', 'Baidakov et al 1985'), +(233, 'i-butane', 12.07, 0.1207, 281.06, 1.0, 'liquid', 'Baidakov et al 1985'), +(234, 'i-butane', 11.02, 0.1102, 289.88, 1.0, 'liquid', 'Baidakov et al 1985'), +(235, 'i-butane', 10.49, 0.1049, 294.42, 1.0, 'liquid', 'Baidakov et al 1985'), +(236, 'i-butane', 9.86, 0.0986, 299.98, 1.0, 'liquid', 'Baidakov et al 1985'), +(237, 'i-butane', 9.07, 0.0907, 306.99, 1.0, 'liquid', 'Baidakov et al 1985'), +(238, 'i-butane', 8.59, 0.0859, 311.53, 1.0, 'liquid', 'Baidakov et al 1985'), +(239, 'i-butane', 8.04, 0.0804, 316.27, 1.0, 'liquid', 'Baidakov et al 1985'), +(240, 'i-butane', 7.51, 0.0751, 321.23, 1.0, 'liquid', 'Baidakov et al 1985'), +(241, 'i-butane', 6.94, 0.0694, 326.55, 1.0, 'liquid', 'Baidakov et al 1985'), +(242, 'i-butane', 5.97, 0.0597, 335.84, 1.0, 'liquid', 'Baidakov et al 1985'), +(243, 'i-butane', 5.5, 0.055, 340.32, 1.0, 'liquid', 'Baidakov et al 1985'), +(244, 'i-butane', 4.96, 0.0496, 345.65, 1.0, 'liquid', 'Baidakov et al 1985'), +(245, 'n-butane', 11.28, 0.1128, 302.85, 1.0, 'liquid', 'Cofffin et al 1928'), +(246, 'n-butane', 11.67, 0.1167, 299.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(247, 'n-butane', 12.58, 0.1258, 291.85, 1.0, 'liquid', 'Cofffin et al 1928'), +(248, 'n-butane', 13.64, 0.1364, 283.25, 1.0, 'liquid', 'Cofffin et al 1928'), +(249, 'n-butane', 14.88, 0.1488, 273.65, 1.0, 'liquid', 'Cofffin et al 1928'), +(250, 'n-butane', 15.21, 0.1521, 270.75, 1.0, 'liquid', 'Cofffin et al 1928'), +(251, 'n-butane', 15.43, 0.1543, 268.65, 1.0, 'liquid', 'Cofffin et al 1928'), +(252, 'n-butane', 15.77, 0.1577, 265.35, 1.0, 'liquid', 'Cofffin et al 1928'), +(253, 'n-butane', 16.01, 0.1601, 262.75, 1.0, 'liquid', 'Cofffin et al 1928'), +(254, 'n-butane', 16.72, 0.1672, 258.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(255, 'n-butane', 16.95, 0.1695, 255.35, 1.0, 'liquid', 'Cofffin et al 1928'), +(256, 'n-butane', 18.21, 0.1821, 245.05, 1.0, 'liquid', 'Cofffin et al 1928'), +(257, 'n-butane', 19.22, 0.1922, 237.05, 1.0, 'liquid', 'Cofffin et al 1928'), +(258, 'i-butane', 9.8, 0.098, 296.45, 1.0, 'liquid', 'Cofffin et al 1928'), +(259, 'i-butane', 10.51, 0.1051, 292.25, 1.0, 'liquid', 'Cofffin et al 1928'), +(260, 'i-butane', 11.39, 0.1139, 285.55, 1.0, 'liquid', 'Cofffin et al 1928'), +(261, 'i-butane', 11.61, 0.1161, 282.95, 1.0, 'liquid', 'Cofffin et al 1928'), +(262, 'i-butane', 12.31, 0.1231, 277.65, 1.0, 'liquid', 'Cofffin et al 1928'), +(263, 'i-butane', 12.3, 0.123, 272.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(264, 'i-butane', 13.81, 0.1381, 264.65, 1.0, 'liquid', 'Cofffin et al 1928'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION2(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(265, 'i-butane', 14.01, 0.1401, 262.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(266, 'i-butane', 14.8, 0.148, 258.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(267, 'i-butane', 15.07, 0.1507, 254.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(268, 'i-butane', 15.96, 0.1596, 248.75, 1.0, 'liquid', 'Cofffin et al 1928'), +(269, 'i-butane', 16.55, 0.1655, 243.15, 1.0, 'liquid', 'Cofffin et al 1928'), +(270, 'i-butane', 17.3, 0.173, 236.85, 1.0, 'liquid', 'Cofffin et al 1928'), +(271, 'n-pentane', 18.25, 0.1825, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(272, 'n-pentane', 17.15, 0.1715, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(273, 'n-pentane', 16.05, 0.1605, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(274, 'n-pentane', 14.94, 0.1494, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(275, 'n-hexane', 20.44, 0.2044, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(276, 'n-hexane', 19.42, 0.1942, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(277, 'n-hexane', 18.4, 0.184, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(278, 'n-hexane', 17.38, 0.1738, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(279, 'n-hexane', 16.36, 0.1636, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(280, 'n-hexane', 15.34, 0.1534, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(281, 'n-hexane', 14.32, 0.1432, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(282, 'n-heptane', 22.1, 0.221, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(283, 'n-heptane', 21.12, 0.2112, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(284, 'n-heptane', 20.14, 0.2014, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(285, 'n-heptane', 19.17, 0.1917, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(286, 'n-heptane', 18.18, 0.1818, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(287, 'n-heptane', 17.2, 0.172, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(288, 'n-heptane', 16.22, 0.1622, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(289, 'n-heptane', 15.24, 0.1524, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(290, 'n-heptane', 14.26, 0.1426, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(291, 'n-heptane', 13.28, 0.1328, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(292, 'n-octane', 23.52, 0.2352, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(293, 'n-octane', 22.57, 0.2257, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(294, 'n-octane', 21.62, 0.2162, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(295, 'n-octane', 20.67, 0.2067, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(296, 'n-octane', 19.71, 0.1971, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(297, 'n-octane', 18.77, 0.1877, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(298, 'n-octane', 17.81, 0.1781, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(299, 'n-octane', 16.86, 0.1686, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(300, 'n-octane', 15.91, 0.1591, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(301, 'n-octane', 14.96, 0.1496, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(302, 'n-octane', 14.01, 0.1401, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(303, 'n-nonane', 24.72, 0.2472, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(304, 'n-nonane', 23.79, 0.2379, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(305, 'n-nonane', 22.85, 0.2285, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(306, 'n-nonane', 21.92, 0.2192, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(307, 'n-nonane', 20.98, 0.2098, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(308, 'n-nonane', 20.05, 0.2005, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(309, 'n-nonane', 19.12, 0.1912, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(310, 'n-nonane', 18.18, 0.1818, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(311, 'n-nonane', 17.24, 0.1724, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(312, 'n-nonane', 16.31, 0.1631, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(313, 'n-nonane', 15.37, 0.1537, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(314, 'nC10', 25.67, 0.2567, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(315, 'nC10', 24.75, 0.2475, 283.15, 1.0, 'liquid', 'Jasper et al 1955'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION2(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(316, 'nC10', 23.83, 0.2383, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(317, 'nC10', 22.91, 0.2191, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(318, 'nC10', 21.99, 0.2199, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(319, 'nC10', 21.07, 0.2107, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(320, 'nC10', 20.15, 0.2015, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(321, 'nC10', 19.23, 0.1923, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(322, 'nC10', 18.31, 0.1831, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(323, 'nC10', 17.39, 0.1739, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(324, 'nC10', 16.47, 0.1647, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(325, 'nC11', 26.46, 0.2646, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(326, 'nC11', 25.56, 0.2556, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(327, 'nC11', 24.66, 0.2466, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(328, 'nC11', 23.76, 0.2376, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(329, 'nC11', 22.86, 0.2286, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(330, 'nC11', 21.96, 0.2196, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(331, 'nC11', 21.05, 0.2105, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(332, 'nC11', 20.15, 0.2015, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(333, 'nC11', 19.25, 0.1925, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(334, 'nC11', 18.35, 0.1835, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(335, 'nC11', 17.45, 0.1745, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(336, 'nC12', 27.12, 0.2712, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(337, 'nC12', 26.24, 0.2624, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(338, 'nC12', 25.35, 0.2535, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(339, 'nC12', 24.47, 0.2447, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(340, 'nC12', 23.58, 0.2358, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(341, 'nC12', 22.7, 0.227, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(342, 'nC12', 21.81, 0.2181, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(343, 'nC12', 20.93, 0.2093, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(344, 'nC12', 20.05, 0.2005, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(345, 'nC12', 19.16, 0.1916, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(346, 'nC12', 18.28, 0.1828, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(347, 'nC13', 27.73, 0.2773, 273.15, 1.0, 'liquid', 'Jasper et al 1955'), +(348, 'nC13', 26.86, 0.2686, 283.15, 1.0, 'liquid', 'Jasper et al 1955'), +(349, 'nC13', 25.99, 0.2599, 293.15, 1.0, 'liquid', 'Jasper et al 1955'), +(350, 'nC13', 25.11, 0.2511, 303.15, 1.0, 'liquid', 'Jasper et al 1955'), +(351, 'nC13', 24.24, 0.2424, 313.15, 1.0, 'liquid', 'Jasper et al 1955'), +(352, 'nC13', 23.37, 0.2337, 323.15, 1.0, 'liquid', 'Jasper et al 1955'), +(353, 'nC13', 22.5, 0.225, 333.15, 1.0, 'liquid', 'Jasper et al 1955'), +(354, 'nC13', 21.63, 0.2163, 343.15, 1.0, 'liquid', 'Jasper et al 1955'), +(355, 'nC13', 20.75, 0.2075, 353.15, 1.0, 'liquid', 'Jasper et al 1955'), +(356, 'nC13', 19.88, 0.1988, 363.15, 1.0, 'liquid', 'Jasper et al 1955'), +(357, 'nC13', 19.01, 0.1901, 373.15, 1.0, 'liquid', 'Jasper et al 1955'), +(360, 'n-heptane', 20.63, 0.2063, 293.15, 2.0, 'liquid', 'Volyak et al 1961'), +(361, 'n-heptane', 19.54, 0.1954, 303.15, 2.0, 'liquid', 'Volyak et al 1961'), +(362, 'n-heptane', 18.47, 0.1847, 313.15, 2.0, 'liquid', 'Volyak et al 1961'), +(363, 'n-heptane', 17.42, 0.1742, 323.15, 2.0, 'liquid', 'Volyak et al 1961'), +(364, 'n-heptane', 16.39, 0.1639, 333.15, 2.0, 'liquid', 'Volyak et al 1961'), +(365, 'n-heptane', 15.38, 0.1538, 343.15, 2.0, 'liquid', 'Volyak et al 1961'), +(366, 'n-heptane', 14.35, 0.1435, 353.15, 2.0, 'liquid', 'Volyak et al 1961'), +(367, 'n-heptane', 13.42, 0.1342, 363.15, 2.0, 'liquid', 'Volyak et al 1961'), +(368, 'n-heptane', 12.47, 0.1247, 373.15, 2.0, 'liquid', 'Volyak et al 1961'), +(369, 'n-heptane', 11.54, 0.1154, 383.15, 3.0, 'liquid', 'Volyak et al 1961'), +(370, 'n-heptane', 10.63, 0.1063, 393.15, 3.0, 'liquid', 'Volyak et al 1961'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION2(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(371, 'n-heptane', 9.74, 0.0974, 403.15, 3.0, 'liquid', 'Volyak et al 1961'), +(372, 'n-heptane', 8.87, 0.0887, 413.15, 3.0, 'liquid', 'Volyak et al 1961'), +(373, 'n-heptane', 8.02, 0.0802, 423.15, 3.0, 'liquid', 'Volyak et al 1961'), +(374, 'n-heptane', 7.19, 0.0719, 433.15, 3.0, 'liquid', 'Volyak et al 1961'), +(375, 'n-heptane', 6.38, 0.0638, 443.15, 3.0, 'liquid', 'Volyak et al 1961'), +(376, 'n-heptane', 5.59, 0.0559, 453.15, 3.0, 'liquid', 'Volyak et al 1961'), +(377, 'n-heptane', 4.82, 0.0482, 463.15, 3.0, 'liquid', 'Volyak et al 1961'), +(378, 'n-heptane', 4.07, 0.0407, 473.15, 3.0, 'liquid', 'Volyak et al 1961'), +(379, 'n-octane', 21.82, 0.2182, 293.15, 2.0, 'liquid', 'Volyak et al 1961'), +(380, 'n-octane', 20.79, 0.2079, 303.15, 2.0, 'liquid', 'Volyak et al 1961'), +(381, 'n-octane', 19.78, 0.1978, 313.15, 2.0, 'liquid', 'Volyak et al 1961'), +(382, 'n-octane', 18.79, 0.1879, 323.15, 2.0, 'liquid', 'Volyak et al 1961'), +(383, 'n-octane', 17.82, 0.1782, 333.15, 2.0, 'liquid', 'Volyak et al 1961'), +(384, 'n-octane', 16.87, 0.1687, 343.15, 3.0, 'liquid', 'Volyak et al 1961'), +(385, 'n-octane', 15.94, 0.1594, 353.15, 3.0, 'liquid', 'Volyak et al 1961'), +(386, 'n-octane', 15.03, 0.1503, 363.15, 3.0, 'liquid', 'Volyak et al 1961'), +(387, 'n-octane', 14.13, 0.1413, 373.15, 3.0, 'liquid', 'Volyak et al 1961'), +(388, 'n-octane', 13.25, 0.1325, 383.15, 3.0, 'liquid', 'Volyak et al 1961'), +(389, 'n-octane', 12.39, 0.1239, 393.15, 4.0, 'liquid', 'Volyak et al 1961'), +(390, 'n-octane', 11.54, 0.1154, 403.15, 4.0, 'liquid', 'Volyak et al 1961'), +(391, 'n-octane', 10.7, 0.107, 413.15, 4.0, 'liquid', 'Volyak et al 1961'), +(392, 'n-octane', 9.88, 0.0988, 423.15, 4.0, 'liquid', 'Volyak et al 1961'), +(393, 'n-octane', 9.07, 0.0907, 433.15, 4.0, 'liquid', 'Volyak et al 1961'), +(394, 'n-octane', 8.28, 0.0828, 443.15, 4.0, 'liquid', 'Volyak et al 1961'), +(395, 'n-octane', 7.5, 0.075, 453.15, 4.0, 'liquid', 'Volyak et al 1961'), +(396, 'n-octane', 6.74, 0.0674, 463.15, 4.0, 'liquid', 'Volyak et al 1961'), +(397, 'n-octane', 5.99, 0.0599, 473.15, 4.0, 'liquid', 'Volyak et al 1961'), +(398, 'n-octane', 5.25, 0.0525, 483.15, 4.0, 'liquid', 'Volyak et al 1961'), +(399, 'n-octane', 4.52, 0.0452, 493.15, 4.0, 'liquid', 'Volyak et al 1961'), +(400, 'n-pentane', 33.76, 0.3376, 144.18, 1.0, 'liquid', 'Grigoryev et al 1991'), +(401, 'n-pentane', 33.54, 0.3354, 145.08, 1.0, 'liquid', 'Grigoryev et al 1991'), +(402, 'n-pentane', 33.53, 0.0053, 145.23, 1.0, 'liquid', 'Grigoryev et al 1991'), +(403, 'n-pentane', 32.4, 0.324, 156.53, 1.0, 'liquid', 'Grigoryev et al 1991'), +(404, 'n-pentane', 31.32, 0.3132, 165.87, 1.0, 'liquid', 'Grigoryev et al 1991'), +(405, 'n-pentane', 29.42, 0.2942, 181.01, 1.0, 'liquid', 'Grigoryev et al 1991'), +(406, 'n-pentane', 27.77, 0.2777, 193.45, 1.0, 'liquid', 'Grigoryev et al 1991'), +(407, 'n-pentane', 23.38, 0.2338, 226.09, 1.0, 'liquid', 'Grigoryev et al 1991'), +(408, 'n-pentane', 20.42, 0.2042, 249.34, 1.0, 'liquid', 'Grigoryev et al 1991'), +(409, 'n-pentane', 17.94, 0.1794, 270.21, 1.0, 'liquid', 'Grigoryev et al 1991'), +(410, 'n-pentane', 15.49, 0.1549, 292.49, 1.0, 'liquid', 'Grigoryev et al 1991'), +(411, 'n-pentane', 11.04, 0.1104, 336.52, 1.0, 'liquid', 'Grigoryev et al 1991'), +(412, 'n-pentane', 7.65, 0.0765, 371.17, 1.0, 'liquid', 'Grigoryev et al 1991'), +(413, 'n-pentane', 4.17, 0.0417, 407.25, 1.0, 'liquid', 'Grigoryev et al 1991'), +(414, 'n-hexane', 31.74, 0.3174, 175.12, 1.0, 'liquid', 'Grigoryev et al 1991'), +(415, 'n-hexane', 31.42, 0.3142, 178.03, 1.0, 'liquid', 'Grigoryev et al 1991'), +(416, 'n-hexane', 31.03, 0.3103, 181.52, 1.0, 'liquid', 'Grigoryev et al 1991'), +(417, 'n-hexane', 30.15, 0.3015, 189.32, 1.0, 'liquid', 'Grigoryev et al 1991'), +(418, 'n-hexane', 29.06, 0.2906, 198.74, 1.0, 'liquid', 'Grigoryev et al 1991'), +(419, 'n-hexane', 27.32, 0.2732, 213.54, 1.0, 'liquid', 'Grigoryev et al 1991'), +(420, 'n-hexane', 23.66, 0.2366, 244.81, 1.0, 'liquid', 'Grigoryev et al 1991'); +INSERT INTO PUBLIC.PURECOMPONENTSURFACETENSION2(ID, COMPONENTNAME, SURFACETENSION, STANDARDDEVIATION, TEMPERATURE, PRESSURE, PHASETYPE, REFERENCE) VALUES +(421, 'n-hexane', 20.7, 0.207, 270.93, 1.0, 'liquid', 'Grigoryev et al 1991'), +(422, 'n-hexane', 19.2, 0.192, 284.72, 1.0, 'liquid', 'Grigoryev et al 1991'), +(423, 'n-hexane', 16.28, 0.1628, 312.58, 1.0, 'liquid', 'Grigoryev et al 1991'), +(424, 'n-hexane', 12.34, 0.1234, 352.49, 1.0, 'liquid', 'Grigoryev et al 1991'), +(425, 'n-hexane', 9.08, 0.0908, 387.03, 1.0, 'liquid', 'Grigoryev et al 1991'), +(426, 'n-hexane', 7.94, 0.0794, 402.71, 1.0, 'liquid', 'Grigoryev et al 1991'), +(427, 'n-heptane', 32.28, 0.3228, 183.21, 1.0, 'liquid', 'Grigoryev et al 1991'), +(428, 'n-heptane', 31.85, 0.3185, 187.49, 1.0, 'liquid', 'Grigoryev et al 1991'), +(429, 'n-heptane', 31.23, 0.3123, 193.41, 1.0, 'liquid', 'Grigoryev et al 1991'), +(430, 'n-heptane', 30.52, 0.3052, 199.93, 1.0, 'liquid', 'Grigoryev et al 1991Grigoryev et al 1991'), +(431, 'n-heptane', 29.64, 0.2964, 207.84, 1.0, 'liquid', 'Grigoryev et al 1991'), +(432, 'n-heptane', 27.71, 0.2771, 224.58, 1.0, 'liquid', 'Grigoryev et al 1991'), +(433, 'n-heptane', 23.82, 0.2382, 258.14, 1.0, 'liquid', 'Grigoryev et al 1991'), +(434, 'n-heptane', 21.53, 0.2153, 278.59, 1.0, 'liquid', 'Grigoryev et al 1991'), +(435, 'n-heptane', 17.42, 0.1742, 318.07, 1.0, 'liquid', 'Grigoryev et al 1991'), +(436, 'n-heptane', 14.08, 0.1408, 353.49, 1.0, 'liquid', 'Grigoryev et al 1991'), +(437, 'n-heptane', 11.23, 0.1123, 385.91, 1.0, 'liquid', 'Grigoryev et al 1991'), +(438, 'n-heptane', 9.31, 0.0931, 408.33, 1.0, 'liquid', 'Grigoryev et al 1991'), +(439, 'n-heptane', 5.09, 0.0509, 459.18, 2.0, 'liquid', 'Grigoryev et al 1991'), +(440, 'n-octane', 29.26, 0.2926, 218.51, 1.0, 'liquid', 'Grigoryev et al 1991'), +(441, 'n-octane', 28.79, 0.2879, 224.58, 1.0, 'liquid', 'Grigoryev et al 1991'), +(442, 'n-octane', 27.09, 0.2709, 243.18, 1.0, 'liquid', 'Grigoryev et al 1991'), +(443, 'n-octane', 25.15, 0.2515, 261.92, 1.0, 'liquid', 'Grigoryev et al 1991'), +(444, 'n-octane', 23.28, 0.2328, 279.19, 1.0, 'liquid', 'Grigoryev et al 1991'), +(445, 'n-octane', 23.25, 0.2325, 279.52, 1.0, 'liquid', 'Grigoryev et al 1991'), +(446, 'n-octane', 18.42, 0.1842, 325.37, 1.0, 'liquid', 'Grigoryev et al 1991'), +(447, 'n-octane', 15.66, 0.1566, 354.31, 1.0, 'liquid', 'Grigoryev et al 1991'), +(448, 'n-octane', 14.42, 0.1442, 392.04, 1.0, 'liquid', 'Grigoryev et al 1991'), +(449, 'n-octane', 10.01, 0.1001, 428.51, 1.0, 'liquid', 'Grigoryev et al 1991'), +(450, 'n-octane', 6.83, 0.0683, 461.92, 2.0, 'liquid', 'Grigoryev et al 1991'), +(451, 'n-octane', 4.71, 0.0471, 488.54, 2.0, 'liquid', 'Grigoryev et al 1991'); +CREATE CACHED TABLE PUBLIC.PURECOMPONENTVAPOURPRESSURES( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + VAPOURPRESSURE DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT '0', + REFERENCE VARCHAR(200) DEFAULT NULL, + GASDENSITY DOUBLE DEFAULT '0', + LIQUIDDENSITY DOUBLE DEFAULT '0', + TYPE VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.PURECOMPONENTVAPOURPRESSURES ADD CONSTRAINT PUBLIC.CONSTRAINT_A9 PRIMARY KEY(ID); +-- 1058 +/- SELECT COUNT(*) FROM PUBLIC.PURECOMPONENTVAPOURPRESSURES; +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1413, 'water', 273.15, 0.006113, 1.2226E-4, 'Shapiro1993', 0.004851166, 999.80004, NULL), +(1414, 'water', 283.15, 0.012276, 2.4552E-4, 'Shapiro1993', 0.009400352, 999.6001599, NULL), +(1415, 'water', 288.15, 0.01705, 3.41E-4, 'Shapiro1993', 0.012832687, 999.1008093, NULL), +(1416, 'water', 293.15, 0.02339, 4.678E-4, 'Shapiro1993', 0.017303732, 998.2032342, NULL), +(1417, 'water', 298.15, 0.03169, 6.338E-4, 'Shapiro1993', 0.023062731, 997.1083857, NULL), +(1418, 'water', 303.15, 0.04246, 8.492E-4, 'Shapiro1993', 0.030400681, 995.7184108, NULL), +(1419, 'MDEA', 401.97, 0.014776, 2.9552E-4, 'Noll1998', 0.0, 0.0, NULL), +(1420, 'water', 313.15, 0.07384, 0.0014768, 'Borgnakke1997', 0.051229508, 992.2603691, NULL), +(1421, 'water', 323.15, 0.1235, 0.00247, 'Borgnakke1997', 0.083111702, 988.0446596, NULL), +(1422, 'water', 333.15, 0.19941, 0.0039882, 'Borgnakke1997', 0.1303611, 983.0908376, NULL), +(1423, 'water', 343.15, 0.3119, 0.006238, 'Borgnakke1997', 0.198333994, 977.7082519, NULL), +(1424, 'water', 353.15, 0.4739, 0.009478, 'Borgnakke1997', 0.293513355, 971.7228646, NULL), +(1425, 'water', 363.15, 0.7014, 0.014028, 'Borgnakke1997', 0.423549343, 965.2509653, NULL), +(1426, 'water', 373.15, 1.01325, 0.020265, 'Borgnakke1997', 0.597728631, 958.3133685, NULL), +(1427, 'MDEA', 293.69, 6.1032E-6, 1.22064E-7, 'Noll1998', 0.0, 0.0, NULL), +(1428, 'MDEA', 303.56, 1.4776E-5, 2.9552E-8, 'Noll1998', 0.0, 0.0, NULL), +(1429, 'MDEA', 391.97, 0.0088142, 1.76284E-4, 'Noll1998', 0.0, 0.0, NULL), +(1430, 'MDEA', 361.94, 0.0015712, 3.1424E-5, 'Noll1998', 0.0, 0.0, NULL), +(1431, 'MDEA', 333.23, 1.8139E-4, 3.6278E-6, 'Noll1998', 0.0, 0.0, NULL), +(1432, 'MDEA', 313.46, 3.415E-5, 6.83E-7, 'Noll1998', 0.0, 0.0, NULL), +(1433, 'MDEA', 333.23, 1.8139E-4, 3.6278E-6, 'Noll1998', 0.0, 0.0, NULL), +(1434, 'MDEA', 371.89, 0.0029083, 5.8166E-5, 'Noll1998', 0.0, 0.0, NULL), +(1435, 'MDEA', 361.94, 0.0015712, 3.1424E-5, 'Noll1998', 0.0, 0.0, NULL), +(1436, 'Selexol', 0.0, 0.0, 0.0, 'Noll1998', 0.0, 0.0, NULL), +(1437, 'Selexol', 0.0, 0.0, 0.0, 'Noll1998', 0.0, 0.0, NULL), +(1438, 'MDEA', 303.56, 1.469E-5, 6.82E-7, 'Noll1998', 0.0, 0.0, NULL), +(1439, 'MDEA', 313.46, 3.415E-5, 6.83E-7, 'Noll1998', 0.0, 0.0, NULL), +(1440, 'MDEA', 323.3, 7.9768E-5, 1.59536E-6, 'Noll1998', 0.0, 0.0, NULL), +(1441, 'MDEA', 323.33, 7.9484E-5, 1.58968E-6, 'Noll1998', 0.0, 0.0, NULL), +(1442, 'MDEA', 343.04, 3.9345E-4, 7.869E-6, 'Noll1998', 0.0, 0.0, NULL), +(1443, 'MDEA', 343.06, 3.9664E-4, 7.9328E-6, 'Noll1998', 0.0, 0.0, NULL), +(1444, 'MDEA', 351.94, 7.7071E-4, 1.54142E-5, 'Noll1998', 0.0, 0.0, NULL), +(1445, 'MDEA', 351.97, 7.6787E-4, 1.53574E-5, 'Noll1998', 0.0, 0.0, NULL), +(1446, 'MDEA', 352.96, 8.147E-4, 1.6294E-5, 'Noll1998', 0.0, 0.0, NULL), +(1447, 'MDEA', 353.0, 8.0903E-4, 1.61806E-5, 'Noll1998', 0.0, 0.0, NULL), +(1448, 'MDEA', 381.89, 0.0054503, 1.09006E-4, 'Noll1998', 0.0, 0.0, NULL), +(1449, 'MDEA', 381.9, 0.00528, 1.056E-4, 'Noll1998', 0.0, 0.0, NULL), +(1450, 'MDEA', 391.97, 0.0088142, 1.76284E-4, 'Noll1998', 0.0, 0.0, NULL), +(1451, 'MDEA', 401.96, 0.014761, 2.9522E-4, 'Noll1998', 0.0, 0.0, NULL), +(1452, 'CO2sub', 138.85, 0.001316, 5.26316E-6, 'Perry1998', 0.0, 0.0, NULL), +(1453, 'CO2sub', 148.75, 0.006578947, 2.63158E-5, 'Perry1998', 0.0, 0.0, NULL), +(1454, 'CO2sub', 153.65, 0.013157895, 5.26316E-5, 'Perry1998', 0.0, 0.0, NULL), +(1455, 'CO2sub', 158.75, 0.026315789, 1.05263E-4, 'Perry1998', 0.0, 0.0, NULL), +(1456, 'CO2sub', 164.55, 0.052631579, 2.10526E-4, 'Perry1998', 0.0, 0.0, NULL), +(1457, 'CO2sub', 168.35, 0.078947368, 3.15789E-4, 'Perry1998', 0.0, 0.0, NULL), +(1458, 'CO2sub', 172.95, 0.131578947, 5.26316E-4, 'Perry1998', 0.0, 0.0, NULL), +(1459, 'CO2sub', 180.15, 0.263157895, 0.001052632, 'Perry1998', 0.0, 0.0, NULL), +(1460, 'CO2sub', 187.45, 0.526315789, 0.002105263, 'Perry1998', 0.0, 0.0, NULL), +(1461, 'CO2sub', 194.95, 1.01325, 0.004, 'Perry1998', 0.0, 0.0, NULL), +(1462, 'CO2', 216.6, 5.18, 0.139, 'Perry1998', 14.04494382, 1178.689298, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1463, 'CO2', 220.0, 5.996, 0.1466, 'Perry1998', 16.02564103, 1166.316772, NULL), +(1464, 'CO2', 225.0, 7.357, 0.1668, 'Perry1998', 19.41747573, 1148.105626, NULL), +(1465, 'CO2', 230.0, 8.935, 0.189, 'Perry1998', 23.36448598, 1129.177958, NULL), +(1466, 'CO2', 235.0, 10.75, 0.214, 'Perry1998', 28.01120448, 1109.754744, NULL), +(1467, 'CO2', 240.0, 12.83, 0.268, 'Perry1998', 33.33333333, 1089.561996, NULL), +(1468, 'CO2', 245.0, 15.19, 0.1466, 'Perry1998', 39.5256917, 1068.604403, NULL), +(1469, 'water', 383.15, 1.433, 0.030265, 'Shapiro1993', 0.826446281, 950.9319133, NULL), +(1470, 'water', 393.15, 1.985, 0.035265, 'Shapiro1993', 1.121201928, 943.129303, NULL), +(1471, 'water', 423.15, 4.758, 0.055265, 'Shapiro1993', 2.545824847, 917.0105456, NULL), +(1472, 'water', 473.15, 15.54, 0.85265, 'Shapiro1993', 7.849293564, 864.6779075, NULL), +(1473, 'water', 523.15, 39.73, 1.0, 'Shapiro1993', 19.94813485, 799.2327366, NULL), +(1474, 'water', 573.15, 85.81, 1.0, 'Shapiro1993', 46.14674665, 712.4536905, NULL), +(1475, 'water', 633.15, 186.5, 3.0, 'Shapiro1993', 143.9884809, 528.4015852, NULL), +(1476, 'water', 647.15, 220.85, 4.0, 'Shapiro1993', 316.9572108, 316.9572108, NULL), +(1477, 'water', 553.15, 64.12, 2.0, 'Shapiro1993', 33.14550878, 750.6943923, NULL), +(1478, 'CO2', 250.0, 17.86, 0.1466, 'Perry1998', 46.72897196, 1046.682018, NULL), +(1479, 'CO2', 255.0, 20.85, 0.1668, 'Perry1998', 54.94505495, 1023.751024, NULL), +(1480, 'CO2', 260.0, 24.19, 0.189, 'Perry1998', 64.51612903, 1000.0, NULL), +(1481, 'CO2', 270.0, 32.03, 0.214, 'Perry1998', 88.49557522, 946.969697, NULL), +(1482, 'CO2', 275.0, 36.59, 0.268, 'Perry1998', 103.0927835, 916.5902841, NULL), +(1483, 'CO2', 280.0, 41.6, 0.282, 'Perry1998', 121.9512195, 884.9557522, NULL), +(1484, 'CO2', 290.0, 53.15, 0.1466, 'Perry1998', 172.4137931, 805.8017728, NULL), +(1485, 'CO2', 300.0, 67.1, 0.1668, 'Perry1998', 270.2702703, 680.2721088, NULL), +(1486, 'CO2', 304.1, 73.83, 0.189, 'Perry1998', 466.0, 466.2004662, NULL), +(1487, 'water', 640.0, 202.7, 1.0, 'Perry1998', 175.4385965, 481.9277108, NULL), +(1488, 'water', 625.0, 169.1, 1.0, 'Perry1998', 117.6470588, 562.4296963, NULL), +(1489, 'water', 610.0, 137.3, 1.0, 'Perry1998', 86.95652174, 620.3473945, NULL), +(1490, 'water', 590.0, 108.3, 1.0, 'Perry1998', 61.34969325, 674.7638327, NULL), +(1491, 'water', 580.0, 94.51, 1.0, 'Perry1998', 51.8134715, 697.8367062, NULL), +(1492, 'nitrogen', 63.1, 0.125, 4.0, 'Borgnakke1997', 0.675338007, 869.5652174, NULL), +(1493, 'nitrogen', 65.0, 0.174, 5.0, 'Borgnakke1997', 0.914519831, 862.0689655, NULL), +(1494, 'nitrogen', 70.0, 0.386, 6.0, 'Borgnakke1997', 1.8999848, 839.6305626, NULL), +(1495, 'nitrogen', 75.0, 0.761, 7.0, 'Borgnakke1997', 3.549371761, 817.6614881, NULL), +(1496, 'nitrogen', 77.3, 1.013, 8.0, 'Borgnakke1997', 4.621285642, 806.4516129, NULL), +(1497, 'nitrogen', 80.0, 1.37, 9.0, 'Borgnakke1997', 6.106870229, 794.2811755, NULL), +(1498, 'nitrogen', 85.0, 2.291, 10.0, 'Borgnakke1997', 9.854158455, 769.8229407, NULL), +(1499, 'nitrogen', 90.0, 3.608, 11.0, 'Borgnakke1997', 15.12630464, 744.6016381, NULL), +(1500, 'nitrogen', 95.0, 5.411, 12.0, 'Borgnakke1997', 22.34137623, 717.8750897, NULL), +(1501, 'nitrogen', 100.0, 7.792, 13.0, 'Borgnakke1997', 31.15264798, 688.7052342, NULL), +(1502, 'nitrogen', 105.0, 10.846, 14.0, 'Borgnakke1997', 45.08566276, 657.0302234, NULL), +(1503, 'nitrogen', 110.0, 14.676, 15.0, 'Borgnakke1997', 62.69592476, 621.1180124, NULL), +(1504, 'nitrogen', 115.0, 19.393, 16.0, 'Borgnakke1997', 87.41258741, 578.3689994, NULL), +(1505, 'nitrogen', 120.0, 25.13, 17.0, 'Borgnakke1997', 125.1564456, 522.1932115, NULL), +(1506, 'nitrogen', 125.0, 32.08, 18.0, 'Borgnakke1997', 204.0816327, 424.6284501, NULL), +(1507, 'nitrogen', 126.15, 33.94, 19.0, 'Borgnakke1997', 313.4796238, 313.0870382, NULL), +(1508, 'MEG', 273.15, 9.8679E-6, 9.8679E-8, 'NIST-calculated', NULL, 1127.620366, NULL), +(1509, 'MEG', 283.15, 2.82369E-5, 2.82369E-7, 'NIST-calculated', NULL, 1120.713295, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1510, 'MEG', 293.15, 7.44676E-5, 7.44676E-7, 'NIST-calculated', NULL, 1113.725021, NULL), +(1511, 'MEG', 303.15, 1.82527E-4, 1.82527E-6, 'NIST-calculated', NULL, 1106.652427, NULL), +(1512, 'MEG', 313.15, 4.18859E-4, 4.18859E-6, 'NIST-calculated', NULL, 1099.492194, NULL), +(1513, 'MEG', 323.15, 9.05656E-4, 9.05656E-6, 'NIST-calculated', NULL, 1092.24079, NULL), +(1514, 'MEG', 333.15, 0.001855439, 5.26316E-6, 'Perry1998', NULL, 1084.894441, NULL), +(1515, 'MEG', 343.15, 0.003619605, 1.85544E-5, 'NIST-calculated', NULL, 1077.449119, NULL), +(1516, 'MEG', 353.15, 0.006753074, 3.6196E-5, 'NIST-calculated', NULL, 1069.900505, NULL), +(1517, 'MEG', 363.15, 0.01209621, 5.26316E-6, 'Perry1998', NULL, 1062.243971, NULL), +(1518, 'MEG', 373.15, 0.020873792, 6.75307E-5, 'NIST-calculated', NULL, 1054.474541, NULL), +(1519, 'MEG', 383.15, 0.034809226, 1.20962E-4, 'NIST-calculated', NULL, 1046.586855, NULL), +(1520, 'MEG', 393.15, 0.05625039, 5.26316E-6, 'Perry1998', NULL, 1038.575131, NULL), +(1521, 'MEG', 403.15, 0.088301921, 2.08738E-4, 'NIST-calculated', NULL, 1030.43311, NULL), +(1522, 'MEG', 413.15, 0.134957349, 5.26316E-6, 'Perry1998', NULL, 1022.154008, NULL), +(1523, 'MEG', 423.15, 0.2012236, 3.48092E-4, 'NIST-calculated', NULL, 1013.73045, NULL), +(1524, 'MEG', 433.15, 0.293230031, 5.26316E-6, 'Perry1998', NULL, 1005.154392, NULL), +(1525, 'MEG', 443.15, 0.418314339, 5.62504E-4, 'NIST-calculated', NULL, 996.4170427, NULL), +(1526, 'MEG', 453.15, 0.585078549, 5.26316E-6, 'Perry1998', NULL, 987.5087568, NULL), +(1527, 'MEG', 463.15, 0.80340948, 8.83019E-4, 'NIST-calculated', NULL, 978.4189198, NULL), +(1528, 'MEG', 473.15, 1.084459805, 0.001349573, 'NIST-calculated', NULL, 969.1358073, NULL), +(1529, 'MEG', 483.15, 1.440587659, 5.26316E-6, 'Perry1998', NULL, 959.6464176, NULL), +(1530, 'MEG', 493.15, 1.885254726, 0.002012236, 'NIST-calculated', NULL, 949.9362723, NULL), +(1531, 'MEG', 503.15, 2.432884663, 5.26316E-6, 'Perry1998', NULL, 939.9891732, NULL), +(1532, 'MEG', 513.15, 3.098685423, 0.0029323, 'NIST-calculated', NULL, 929.786908, NULL), +(1533, 'MEG', 523.15, 3.898440543, 0.004183143, 'NIST-calculated', NULL, 919.3088866, NULL), +(1534, 'MEG', 533.15, 4.848275592, 5.26316E-6, 'Perry1998', NULL, 908.531691, NULL), +(1535, 'MEG', 543.15, 5.964406745, 0.005850785, 'NIST-calculated', NULL, 897.4285094, NULL), +(1536, 'MEG', 553.15, 7.26287888, 0.008034095, 'NIST-calculated', NULL, 885.9684185, NULL), +(1537, 'MEG', 563.15, 8.759300643, 5.26316E-6, 'Perry1998', NULL, 874.1154591, NULL), +(1538, 'MEG', 573.15, 10.46858367, 0.010844598, 'NIST-calculated', NULL, 861.8274309, NULL), +(1539, 'MEG', 583.15, 12.40469266, 0.014405877, 'NIST-calculated', NULL, 849.0542929, NULL), +(1540, 'MEG', 593.15, 14.58041223, 0.018852547, 'NIST-calculated', NULL, 835.7360017, NULL), +(1541, 'MEG', 603.15, 17.00713562, 0.024328847, 'NIST-calculated', NULL, 821.7995278, NULL), +(1542, 'MEG', 613.15, 19.6946794, 0.030986854, 'NIST-calculated', NULL, 807.1546374, NULL), +(1543, 'MEG', 623.15, 22.65112713, 0.038984405, 'NIST-calculated', NULL, 791.6877554, NULL), +(1544, 'MEG', 633.15, 25.88270416, 0.048482756, 'NIST-calculated', NULL, 775.2527363, NULL), +(1545, 'MEG', 643.15, 29.3936846, 0.059644067, 'NIST-calculated', NULL, 757.6564166, NULL), +(1546, 'MEG', 653.15, 33.18633064, 0.072628789, 'NIST-calculated', NULL, 738.6348639, NULL), +(1547, 'MEG', 663.15, 37.26086365, 0.087593006, 'NIST-calculated', NULL, 717.811861, NULL), +(1548, 'MEG', 673.15, 41.61546566, 0.104685837, 'NIST-calculated', NULL, 694.6203407, NULL), +(1549, 'MEG', 683.15, 46.24630944, 0.124046927, 'NIST-calculated', NULL, 668.1368683, NULL), +(1550, 'MEG', 693.15, 51.14761467, 0.145804122, 'NIST-calculated', NULL, 636.6746007, NULL), +(1551, 'MEG', 703.15, 56.31172772, 0.170071356, 'NIST-calculated', NULL, 596.5000966, NULL), +(1552, 'MEG', 713.15, 61.7292219, 0.196946794, 'NIST-calculated', NULL, 535.1256432, NULL), +(1553, 'methane', 90.69, 0.116870173, 0.1, 'Perry', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1554, 'methane', 92.69, 0.150292307, 0.1, 'Perry', 0.0, 0.0, NULL), +(1555, 'methane', 94.69, 0.191069648, 0.1, 'Perry', 0.0, 0.0, NULL), +(1556, 'methane', 96.69, 0.240324593, 0.1, 'Perry', 0.0, 0.0, NULL), +(1557, 'methane', 98.69, 0.299266887, 0.1, 'Perry', 0.0, 0.0, NULL), +(1558, 'methane', 100.69, 0.36919081, 0.1, 'Perry', 0.0, 0.0, NULL), +(1559, 'methane', 102.69, 0.451471733, 0.1, 'Perry', 0.0, 0.0, NULL), +(1560, 'methane', 104.69, 0.547562157, 0.1, 'Perry', 0.0, 0.0, NULL), +(1561, 'methane', 106.69, 0.65898737, 0.1, 'Perry', 0.0, 0.0, NULL), +(1562, 'methane', 108.69, 0.787340849, 0.1, 'Perry', 0.0, 0.0, NULL), +(1563, 'methane', 110.69, 0.93427952, 0.1, 'Perry', 0.0, 0.0, NULL), +(1564, 'methane', 112.69, 1.101519002, 0.1, 'Perry', 0.0, 0.0, NULL), +(1565, 'methane', 114.69, 1.290828917, 0.1, 'Perry', 0.0, 0.0, NULL), +(1566, 'methane', 116.69, 1.504028381, 0.1, 'Perry', 0.0, 0.0, NULL), +(1567, 'methane', 118.69, 1.742981741, 0.1, 'Perry', 0.0, 0.0, NULL), +(1568, 'methane', 120.69, 2.009594627, 0.1, 'Perry', 0.0, 0.0, NULL), +(1569, 'methane', 122.69, 2.305810385, 0.1, 'Perry', 0.0, 0.0, NULL), +(1570, 'methane', 124.69, 2.633606922, 0.1, 'Perry', 0.0, 0.0, NULL), +(1571, 'methane', 126.69, 2.994994016, 0.1, 'Perry', 0.0, 0.0, NULL), +(1572, 'methane', 128.69, 3.392011094, 0.1, 'Perry', 0.0, 0.0, NULL), +(1573, 'methane', 130.69, 3.826725516, 0.1, 'Perry', 0.0, 0.0, NULL), +(1574, 'methane', 132.69, 4.301231356, 0.1, 'Perry', 0.0, 0.0, NULL), +(1575, 'methane', 134.69, 4.817648698, 0.1, 'Perry', 0.0, 0.0, NULL), +(1576, 'methane', 136.69, 5.378123429, 0.1, 'Perry', 0.0, 0.0, NULL), +(1577, 'methane', 138.69, 5.984827533, 0.1, 'Perry', 0.0, 0.0, NULL), +(1578, 'methane', 140.69, 6.639959869, 0.1, 'Perry', 0.0, 0.0, NULL), +(1579, 'methane', 142.69, 7.345747418, 0.1, 'Perry', 0.0, 0.0, NULL), +(1580, 'methane', 144.69, 8.104446986, 0.1, 'Perry', 0.0, 0.0, NULL), +(1581, 'methane', 146.69, 8.918347344, 0.1, 'Perry', 0.0, 0.0, NULL), +(1582, 'methane', 148.69, 9.789771788, 0.1, 'Perry', 0.0, 0.0, NULL), +(1583, 'methane', 150.69, 10.7210811, 0.1, 'Perry', 0.0, 0.0, NULL), +(1584, 'methane', 152.69, 11.71467689, 0.1, 'Perry', 0.0, 0.0, NULL), +(1585, 'methane', 154.69, 12.7730053, 0.1, 'Perry', 0.0, 0.0, NULL), +(1586, 'methane', 156.69, 13.89856107, 0.1, 'Perry', 0.0, 0.0, NULL), +(1587, 'methane', 158.69, 15.09389194, 0.1, 'Perry', 0.0, 0.0, NULL), +(1588, 'methane', 160.69, 16.36160334, 0.1, 'Perry', 0.0, 0.0, NULL), +(1589, 'methane', 162.69, 17.70436342, 0.1, 'Perry', 0.0, 0.0, NULL), +(1590, 'methane', 164.69, 19.1249084, 0.1, 'Perry', 0.0, 0.0, NULL), +(1591, 'methane', 166.69, 20.62604814, 0.1, 'Perry', 0.0, 0.0, NULL), +(1592, 'methane', 168.69, 22.21067207, 0.1, 'Perry', 0.0, 0.0, NULL), +(1593, 'methane', 170.69, 23.88175537, 0.1, 'Perry', 0.0, 0.0, NULL), +(1594, 'methane', 172.69, 25.64236538, 0.1, 'Perry', 0.0, 0.0, NULL), +(1595, 'methane', 174.69, 27.4956684, 0.1, 'Perry', 0.0, 0.0, NULL), +(1596, 'methane', 176.69, 29.44493665, 0.1, 'Perry', 0.0, 0.0, NULL), +(1597, 'methane', 178.69, 31.49355559, 0.1, 'Perry', 0.0, 0.0, NULL), +(1598, 'methane', 180.69, 33.64503148, 0.1, 'Perry', 0.0, 0.0, NULL), +(1599, 'methane', 182.69, 35.90299928, 0.1, 'Perry', 0.0, 0.0, NULL), +(1600, 'methane', 184.69, 38.2712308, 0.1, 'Perry', 0.0, 0.0, NULL), +(1601, 'methane', 186.69, 40.75364324, 0.1, 'Perry', 0.0, 0.0, NULL), +(1602, 'methane', 188.69, 43.35430794, 0.1, 'Perry', 0.0, 0.0, NULL), +(1604, 'ethane', 93.35, 2.42279E-5, 0.1, 'perry', 0.0, 0.0, NULL), +(1605, 'ethane', 96.35, 4.94301E-5, 0.1, 'Perry1998', 0.0, 0.0, NULL), +(1606, 'ethane', 99.35, 9.62078E-5, 0.1, 'Perry1998', 0.0, 0.0, NULL), +(1607, 'ethane', 102.35, 1.79408E-4, 0.1, 'perry', 0.0, 0.0, NULL), +(1608, 'ethane', 105.35, 3.21767E-4, 0.1, 'perry', 0.0, 0.0, NULL), +(1609, 'ethane', 108.35, 5.56899E-4, 0.1, 'perry', 0.0, 0.0, NULL), +(1610, 'ethane', 111.35, 9.32937E-4, 0.1, 'perry', 0.0, 0.0, NULL), +(1611, 'ethane', 114.35, 0.001516829, 0.1, 'perry', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1612, 'ethane', 117.35, 0.002399251, 0.1, 'perry', 0.0, 0.0, NULL), +(1613, 'ethane', 120.35, 0.003700055, 0.1, 'perry', 0.0, 0.0, NULL), +(1614, 'ethane', 123.35, 0.005574172, 0.1, 'perry', 0.0, 0.0, NULL), +(1615, 'ethane', 126.35, 0.008217815, 0.1, 'perry', 0.0, 0.0, NULL), +(1616, 'ethane', 129.35, 0.011874843, 0.1, 'perry', 0.0, 0.0, NULL), +(1617, 'ethane', 132.35, 0.01684312, 0.1, 'perry', 0.0, 0.0, NULL), +(1618, 'ethane', 135.35, 0.023480706, 0.1, 'perry', 0.0, 0.0, NULL), +(1619, 'ethane', 138.35, 0.032211714, 0.1, 'perry', 0.0, 0.0, NULL), +(1620, 'ethane', 141.35, 0.043531692, 0.1, 'perry', 0.0, 0.0, NULL), +(1621, 'ethane', 144.35, 0.058012399, 0.1, 'perry', 0.0, 0.0, NULL), +(1622, 'ethane', 147.35, 0.076305865, 0.1, 'perry', 0.0, 0.0, NULL), +(1623, 'ethane', 150.35, 0.099147673, 0.1, 'perry', 0.0, 0.0, NULL), +(1624, 'ethane', 153.35, 0.127359391, 0.1, 'perry', 0.0, 0.0, NULL), +(1625, 'ethane', 156.35, 0.161850149, 0.1, 'perry', 0.0, 0.0, NULL), +(1626, 'ethane', 159.35, 0.203617355, 0.1, 'perry', 0.0, 0.0, NULL), +(1627, 'ethane', 162.35, 0.253746584, 0.1, 'perry', 0.0, 0.0, NULL), +(1628, 'ethane', 165.35, 0.313410682, 0.1, 'perry', 0.0, 0.0, NULL), +(1629, 'ethane', 168.35, 0.383868162, 0.1, 'perry', 0.0, 0.0, NULL), +(1630, 'ethane', 171.35, 0.466460954, 0.1, 'perry', 0.0, 0.0, NULL), +(1631, 'ethane', 174.35, 0.562611625, 0.1, 'perry', 0.0, 0.0, NULL), +(1632, 'ethane', 177.35, 0.67382014, 0.1, 'perry', 0.0, 0.0, NULL), +(1633, 'ethane', 180.35, 0.801660277, 0.1, 'perry', 0.0, 0.0, NULL), +(1634, 'ethane', 183.35, 0.947775804, 0.1, 'perry', 0.0, 0.0, NULL), +(1635, 'ethane', 186.35, 1.113876495, 0.1, 'perry', 0.0, 0.0, NULL), +(1636, 'ethane', 189.35, 1.301734096, 0.1, 'perry', 0.0, 0.0, NULL), +(1637, 'ethane', 192.35, 1.513178326, 0.1, 'perry', 0.0, 0.0, NULL), +(1638, 'ethane', 195.35, 1.750092984, 0.1, 'perry', 0.0, 0.0, NULL), +(1639, 'ethane', 198.35, 2.014412252, 0.1, 'perry', 0.0, 0.0, NULL), +(1640, 'ethane', 201.35, 2.308117234, 0.1, 'perry', 0.0, 0.0, NULL), +(1641, 'ethane', 204.35, 2.633232819, 0.1, 'perry', 0.0, 0.0, NULL), +(1642, 'ethane', 207.35, 2.991824878, 0.1, 'perry', 0.0, 0.0, NULL), +(1643, 'ethane', 210.35, 3.385997862, 0.1, 'perry', 0.0, 0.0, NULL), +(1644, 'ethane', 213.35, 3.817892824, 0.1, 'perry', 0.0, 0.0, NULL), +(1645, 'ethane', 216.35, 4.289685872, 0.1, 'perry', 0.0, 0.0, NULL), +(1646, 'ethane', 219.35, 4.803587103, 0.1, 'perry', 0.0, 0.0, NULL), +(1647, 'ethane', 222.35, 5.361839989, 0.1, 'perry', 0.0, 0.0, NULL), +(1648, 'ethane', 225.35, 5.966721257, 0.1, 'perry', 0.0, 0.0, NULL), +(1649, 'ethane', 228.35, 6.620541233, 0.1, 'perry', 0.0, 0.0, NULL), +(1650, 'ethane', 231.35, 7.325644673, 0.1, 'perry', 0.0, 0.0, NULL), +(1651, 'ethane', 234.35, 8.084412055, 0.1, 'perry', 0.0, 0.0, NULL), +(1652, 'ethane', 237.35, 8.899261334, 0.1, 'perry', 0.0, 0.0, NULL), +(1653, 'ethane', 240.35, 9.772650149, 0.1, 'perry', 0.0, 0.0, NULL), +(1654, 'ethane', 243.35, 10.70707847, 0.1, 'perry', 0.0, 0.0, NULL), +(1655, 'ethane', 246.35, 11.70509166, 0.1, 'perry', 0.0, 0.0, NULL), +(1656, 'ethane', 249.35, 12.76928397, 0.1, 'perry', 0.0, 0.0, NULL), +(1657, 'ethane', 252.35, 13.90230244, 0.1, 'perry', 0.0, 0.0, NULL), +(1658, 'ethane', 255.35, 15.10685112, 0.1, 'perry', 0.0, 0.0, NULL), +(1659, 'ethane', 258.35, 16.3856958, 0.1, 'perry', 0.0, 0.0, NULL), +(1660, 'ethane', 261.35, 17.74166899, 0.1, 'perry', 0.0, 0.0, NULL), +(1661, 'ethane', 264.35, 19.17767529, 0.1, 'perry', 0.0, 0.0, NULL), +(1662, 'ethane', 267.35, 20.69669719, 0.1, 'perry', 0.0, 0.0, NULL), +(1663, 'ethane', 270.35, 22.30180105, 0.1, 'perry', 0.0, 0.0, NULL), +(1664, 'ethane', 273.35, 23.99614363, 0.1, 'perry', 0.0, 0.0, NULL), +(1665, 'ethane', 276.35, 25.78297879, 0.1, 'perry', 0.0, 0.0, NULL), +(1666, 'ethane', 279.35, 27.66566458, 0.1, 'perry', 0.0, 0.0, NULL), +(1667, 'ethane', 282.35, 29.64767073, 0.1, 'perry', 0.0, 0.0, NULL), +(1668, 'ethane', 285.35, 31.73258641, 0.1, 'perry', 0.0, 0.0, NULL), +(1669, 'ethane', 288.35, 33.92412836, 0.1, 'perry', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1670, 'ethane', 291.35, 36.22614936, 0.1, 'perry', 0.0, 0.0, NULL), +(1671, 'ethane', 294.35, 38.64264714, 0.1, 'perry', 0.0, 0.0, NULL), +(1672, 'ethane', 297.35, 41.17777354, 0.1, 'perry', 0.0, 0.0, NULL), +(1673, 'ethane', 300.35, 43.8358442, 0.1, 'perry', 0.0, 0.0, NULL), +(1674, 'ethane', 303.35, 46.6213485, 0.1, 'perry', 0.0, 0.0, NULL), +(1684, 'propane', 112.47, 6.129E-6, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1685, 'propane', 115.47, 1.1794E-5, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1686, 'propane', 118.47, 2.188E-5, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1687, 'propane', 121.47, 3.9245E-5, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1688, 'propane', 124.47, 6.8228E-5, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1689, 'propane', 127.47, 1.1524E-4, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1690, 'propane', 130.47, 1.8949E-4, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1691, 'propane', 133.47, 3.0392E-4, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1692, 'propane', 136.47, 4.7627E-4, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1693, 'propane', 139.47, 7.304E-4, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1694, 'propane', 142.47, 0.001097759, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1695, 'propane', 145.47, 0.001619049, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1696, 'propane', 148.47, 0.002346098, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1697, 'propane', 151.47, 0.003343859, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1698, 'propane', 154.47, 0.004692553, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1699, 'propane', 157.47, 0.006489923, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1700, 'propane', 160.47, 0.008853542, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1701, 'propane', 163.47, 0.011923158, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1702, 'propane', 166.47, 0.015863032, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1703, 'propane', 169.47, 0.020864215, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1704, 'propane', 172.47, 0.027146746, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1705, 'propane', 175.47, 0.034961711, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1706, 'propane', 178.47, 0.044593155, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1707, 'propane', 181.47, 0.056359787, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1708, 'propane', 184.47, 0.070616485, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1709, 'propane', 187.47, 0.087755554, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1710, 'propane', 190.47, 0.108207741, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1711, 'propane', 193.47, 0.132442991, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1712, 'propane', 196.47, 0.160970939, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1713, 'propane', 199.47, 0.194341153, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1714, 'propane', 202.47, 0.233143115, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1715, 'propane', 205.47, 0.278005968, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1716, 'propane', 208.47, 0.329598037, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1717, 'propane', 211.47, 0.388626149, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1718, 'propane', 214.47, 0.455834755, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1719, 'propane', 217.47, 0.532004907, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1720, 'propane', 220.47, 0.617953079, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1721, 'propane', 223.47, 0.714529891, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1722, 'propane', 226.47, 0.82261873, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1723, 'propane', 229.47, 0.943134324, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1724, 'propane', 232.47, 1.077021263, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1725, 'propane', 235.47, 1.225252514, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1726, 'propane', 238.47, 1.388827948, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1727, 'propane', 241.47, 1.56877288, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1728, 'propane', 244.47, 1.76613668, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1729, 'propane', 247.47, 1.981991431, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1730, 'propane', 250.47, 2.217430677, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1731, 'propane', 253.47, 2.473568276, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1732, 'propane', 256.47, 2.751537347, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1733, 'propane', 259.47, 3.052489345, 0.1, 'PerrysTR', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1734, 'propane', 262.47, 3.37759327, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1735, 'propane', 265.47, 3.728035003, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1736, 'propane', 268.47, 4.105016786, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1737, 'propane', 271.47, 4.509756858, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1738, 'propane', 274.47, 4.943489227, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1739, 'propane', 277.47, 5.407463605, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1740, 'propane', 280.47, 5.902945492, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1741, 'propane', 283.47, 6.431216411, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1742, 'propane', 286.47, 6.993574303, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1743, 'propane', 289.47, 7.591334061, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1744, 'propane', 292.47, 8.225828227, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1745, 'propane', 295.47, 8.898407827, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1746, 'propane', 298.47, 9.610443353, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1747, 'propane', 301.47, 10.36332589, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1748, 'propane', 304.47, 11.15846837, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1749, 'propane', 307.47, 11.99730699, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1750, 'propane', 310.47, 12.88130271, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1751, 'propane', 313.47, 13.81194296, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1752, 'propane', 316.47, 14.79074338, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1753, 'propane', 319.47, 15.81924977, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1754, 'propane', 322.47, 16.89904011, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1755, 'propane', 325.47, 18.0317267, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1756, 'propane', 328.47, 19.21895848, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1757, 'propane', 331.47, 20.46242336, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1758, 'propane', 334.47, 21.76385077, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1759, 'propane', 337.47, 23.12501427, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1760, 'propane', 340.47, 24.54773428, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1761, 'propane', 343.47, 26.03388095, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1762, 'propane', 346.47, 27.5853771, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1763, 'propane', 349.47, 29.20420135, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1764, 'propane', 352.47, 30.89239126, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1765, 'propane', 355.47, 32.65204673, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1766, 'propane', 358.47, 34.48533339, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1767, 'propane', 361.47, 36.39448622, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1768, 'propane', 364.47, 38.3818132, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1769, 'propane', 367.47, 40.44969921, 0.1, 'PerrysTR', 0.0, 0.0, NULL), +(1770, 'n-butane', 134.86, 6.75E-6, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1771, 'n-butane', 138.86, 1.41E-5, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1772, 'n-butane', 142.86, 2.81E-5, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1773, 'n-butane', 146.86, 5.38E-5, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1774, 'n-butane', 150.86, 9.89E-5, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1775, 'n-butane', 154.86, 1.76E-4, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1776, 'n-butane', 158.86, 3.02E-4, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1777, 'n-butane', 162.86, 5.04E-4, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1778, 'n-butane', 166.86, 8.17E-4, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1779, 'n-butane', 170.86, 0.001291513, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1780, 'n-butane', 174.86, 0.001993652, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1781, 'n-butane', 178.86, 0.003010135, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1782, 'n-butane', 182.86, 0.004452281, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1783, 'n-butane', 186.86, 0.006460315, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1784, 'n-butane', 190.86, 0.009207911, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1785, 'n-butane', 194.86, 0.01290682, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1786, 'n-butane', 198.86, 0.017811478, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1787, 'n-butane', 202.86, 0.024223495, 0.1, 'Perrys TR', NULL, NULL, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1788, 'n-butane', 206.86, 0.032495926, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1789, 'n-butane', 210.86, 0.04303722, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1790, 'n-butane', 214.86, 0.05631478, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1791, 'n-butane', 218.86, 0.072858053, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1792, 'n-butane', 222.86, 0.093261107, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1793, 'n-butane', 226.86, 0.118184653, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1794, 'n-butane', 230.86, 0.14835749, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1795, 'n-butane', 234.86, 0.184577385, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1796, 'n-butane', 238.86, 0.227711382, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1797, 'n-butane', 242.86, 0.278695574, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1798, 'n-butane', 246.86, 0.338534387, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1799, 'n-butane', 250.86, 0.408299403, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1800, 'n-butane', 254.86, 0.489127794, 0.1, 'Perrys TR', NULL, NULL, NULL), +(1801, 'n-butane', 258.86, 0.582220429, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1802, 'n-butane', 262.86, 0.688839706, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1803, 'n-butane', 266.86, 0.810307193, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1804, 'n-butane', 270.86, 0.948001129, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1805, 'n-butane', 274.86, 1.103353865, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1806, 'n-butane', 278.86, 1.2778493, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1807, 'n-butane', 282.86, 1.473020369, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1808, 'n-butane', 286.86, 1.690446647, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1809, 'n-butane', 290.86, 1.931752108, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1810, 'n-butane', 294.86, 2.198603095, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1811, 'n-butane', 298.86, 2.49270653, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1812, 'n-butane', 302.86, 2.815808401, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1813, 'n-butane', 306.86, 3.169692561, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1814, 'n-butane', 310.86, 3.556179853, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1815, 'n-butane', 314.86, 3.977127582, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1816, 'n-butane', 318.86, 4.434429354, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1817, 'n-butane', 322.86, 4.930015286, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1818, 'n-butane', 326.86, 5.465852594, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1819, 'n-butane', 330.86, 6.04394657, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1820, 'n-butane', 334.86, 6.666341944, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1821, 'n-butane', 338.86, 7.335124622, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1822, 'n-butane', 342.86, 8.052423824, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1823, 'n-butane', 346.86, 8.820414583, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1824, 'n-butane', 350.86, 9.641320633, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1825, 'n-butane', 354.86, 10.51741766, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1826, 'n-butane', 358.86, 11.45103692, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1827, 'n-butane', 362.86, 12.44456922, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1828, 'n-butane', 366.86, 13.50046927, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1829, 'n-butane', 370.86, 14.62126032, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1830, 'n-butane', 374.86, 15.80953927, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1831, 'n-butane', 378.86, 17.06798203, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1832, 'n-butane', 382.86, 18.39934922, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1833, 'n-butane', 386.86, 19.80649232, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1834, 'n-butane', 390.86, 21.29236007, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1835, 'n-butane', 394.86, 22.86000528, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1836, 'n-butane', 398.86, 24.51259197, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1837, 'n-butane', 402.86, 26.25340292, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1838, 'n-butane', 406.86, 28.08584755, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1839, 'n-butane', 410.86, 30.01347022, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1840, 'n-butane', 414.86, 32.03995895, 0.1, 'Perrys TR', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1841, 'n-butane', 418.86, 34.16915449, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1842, 'n-butane', 422.86, 36.40505991, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1843, 'CO2', 216.58, 5.186719457, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1844, 'CO2', 218.58, 5.654570359, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1845, 'CO2', 220.58, 6.153247325, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1846, 'CO2', 222.58, 6.683986184, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1847, 'CO2', 224.58, 7.248038602, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1848, 'CO2', 226.58, 7.846672357, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1849, 'CO2', 228.58, 8.481171736, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1850, 'CO2', 230.58, 9.152838049, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1851, 'CO2', 232.58, 9.86299025, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1852, 'CO2', 234.58, 10.61296569, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1853, 'CO2', 236.58, 11.40412094, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1854, 'CO2', 238.58, 12.23783278, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1855, 'CO2', 240.58, 13.11549924, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1856, 'CO2', 242.58, 14.03854078, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1857, 'CO2', 244.58, 15.00840154, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1858, 'CO2', 246.58, 16.0265507, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1859, 'CO2', 248.58, 17.09448397, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1860, 'CO2', 250.58, 18.21372508, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1861, 'CO2', 252.58, 19.38582749, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1862, 'CO2', 254.58, 20.61237605, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1863, 'CO2', 256.58, 21.89498886, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1864, 'CO2', 258.58, 23.23531915, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1865, 'CO2', 260.58, 24.63505724, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1866, 'CO2', 262.58, 26.09593265, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1867, 'CO2', 264.58, 27.61971619, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1868, 'CO2', 266.58, 29.20822222, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1869, 'CO2', 268.58, 30.86331092, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1870, 'CO2', 270.58, 32.5868907, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1871, 'CO2', 272.58, 34.38092064, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1872, 'CO2', 274.58, 36.24741304, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1873, 'CO2', 276.58, 38.18843603, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1874, 'CO2', 278.58, 40.20611628, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1875, 'CO2', 280.58, 42.30264179, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1876, 'CO2', 282.58, 44.48026475, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1877, 'CO2', 284.58, 46.74130449, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1878, 'CO2', 286.58, 49.08815055, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1879, 'CO2', 288.58, 51.52326577, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1880, 'CO2', 290.58, 54.04918957, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1881, 'CO2', 292.58, 56.66854124, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1882, 'CO2', 294.58, 59.38402337, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1883, 'CO2', 296.58, 62.19842537, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1884, 'CO2', 298.58, 65.11462713, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1885, 'CO2', 300.58, 68.13560274, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1886, 'CO2', 302.58, 71.26442436, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1887, 'CO2', 304.58, 74.50426619, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1888, 'nitrogen', 126.2, 33.90626636, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1889, 'nitrogen', 125.2, 32.36265394, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1890, 'nitrogen', 124.2, 30.87157694, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1891, 'nitrogen', 123.2, 29.43174853, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1892, 'nitrogen', 122.2, 28.04191239, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1893, 'nitrogen', 121.2, 26.70084161, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1894, 'nitrogen', 120.2, 25.40733762, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1895, 'nitrogen', 119.2, 24.16022907, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1896, 'nitrogen', 118.2, 22.95837079, 0.1, 'Perrys TR', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1897, 'nitrogen', 117.2, 21.8006428, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1898, 'nitrogen', 116.2, 20.68594927, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1899, 'nitrogen', 115.2, 19.61321752, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1900, 'nitrogen', 114.2, 18.58139708, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1901, 'nitrogen', 113.2, 17.58945873, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1902, 'nitrogen', 112.2, 16.63639356, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1903, 'nitrogen', 111.2, 15.72121209, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1904, 'nitrogen', 110.2, 14.84294338, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1905, 'nitrogen', 109.2, 14.00063414, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1906, 'nitrogen', 108.2, 13.19334795, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1907, 'nitrogen', 107.2, 12.42016437, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1908, 'nitrogen', 106.2, 11.68017823, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1909, 'nitrogen', 105.2, 10.97249878, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1910, 'nitrogen', 104.2, 10.29624903, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1911, 'nitrogen', 103.2, 9.650564992, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1912, 'nitrogen', 102.2, 9.034595019, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1913, 'nitrogen', 101.2, 8.447499143, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1914, 'nitrogen', 100.2, 7.888448466, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1915, 'nitrogen', 99.2, 7.356624572, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1916, 'nitrogen', 98.2, 6.851218985, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1917, 'nitrogen', 97.2, 6.371432653, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1918, 'nitrogen', 96.2, 5.916475485, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1919, 'nitrogen', 95.2, 5.485565923, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1920, 'nitrogen', 94.2, 5.077930559, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1921, 'nitrogen', 93.2, 4.692803799, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1922, 'nitrogen', 92.2, 4.329427583, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1923, 'nitrogen', 91.2, 3.987051141, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1924, 'nitrogen', 90.2, 3.664930822, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1925, 'nitrogen', 89.2, 3.362329965, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1926, 'nitrogen', 88.2, 3.078518829, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1927, 'nitrogen', 87.2, 2.812774595, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1928, 'nitrogen', 86.2, 2.564381412, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1929, 'nitrogen', 85.2, 2.332630521, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1930, 'nitrogen', 84.2, 2.116820438, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1931, 'nitrogen', 83.2, 1.916257202, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1932, 'nitrogen', 82.2, 1.730254685, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1933, 'nitrogen', 81.2, 1.558134983, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1934, 'nitrogen', 80.2, 1.399228851, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1935, 'nitrogen', 79.2, 1.252876219, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1936, 'nitrogen', 78.2, 1.118426763, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1937, 'nitrogen', 77.2, 0.995240538, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1938, 'nitrogen', 76.2, 0.882688663, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1939, 'nitrogen', 75.2, 0.780154062, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1940, 'nitrogen', 74.2, 0.68703225, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1941, 'nitrogen', 73.2, 0.602732158, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1942, 'nitrogen', 72.2, 0.52667699, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1943, 'nitrogen', 71.2, 0.458305104, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1944, 'nitrogen', 70.2, 0.397070908, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1945, 'nitrogen', 69.2, 0.342445757, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1946, 'nitrogen', 68.2, 0.293918846, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1947, 'nitrogen', 67.2, 0.25099808, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1948, 'nitrogen', 66.2, 0.213210905, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1949, 'nitrogen', 65.2, 0.180105104, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1950, 'nitrogen', 64.2, 0.151249514, 0.1, 'Perrys TR', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(1951, 'nitrogen', 63.15, 0.125077718, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1952, 'neon', 44.06, 25.53286805, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1953, 'neon', 43.56, 23.95145467, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1954, 'neon', 43.06, 22.4447955, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1955, 'neon', 42.56, 21.01015511, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1956, 'neon', 42.06, 19.64490927, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1957, 'neon', 41.56, 18.34653853, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1958, 'neon', 41.06, 17.11262215, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1959, 'neon', 40.56, 15.94083212, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1960, 'neon', 40.06, 14.82892751, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1961, 'neon', 39.56, 13.77474907, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1962, 'neon', 39.06, 12.77621388, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1963, 'neon', 38.56, 11.83131039, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1964, 'neon', 38.06, 10.93809352, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1965, 'neon', 37.56, 10.09468003, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1966, 'neon', 37.06, 9.299244044, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1967, 'neon', 36.56, 8.550012818, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1968, 'neon', 36.06, 7.845262631, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1969, 'neon', 35.56, 7.18331494, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1970, 'neon', 35.06, 6.562532704, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1971, 'neon', 34.56, 5.981316932, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1972, 'neon', 34.06, 5.438103442, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1973, 'neon', 33.56, 4.931359855, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1974, 'neon', 33.06, 4.459582822, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1975, 'neon', 32.56, 4.021295505, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1976, 'neon', 32.06, 3.615045325, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1977, 'neon', 31.56, 3.239401988, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1978, 'neon', 31.06, 2.892955804, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1979, 'neon', 30.56, 2.57431632, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1980, 'neon', 30.06, 2.28211128, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1981, 'neon', 29.56, 2.014985918, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1982, 'neon', 29.06, 1.771602618, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1983, 'neon', 28.56, 1.55064093, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1984, 'neon', 28.06, 1.350797971, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1985, 'neon', 27.56, 1.170789207, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1986, 'neon', 27.06, 1.009349611, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1987, 'neon', 26.56, 0.865235217, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1988, 'neon', 26.06, 0.737225035, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1989, 'neon', 25.56, 0.624123323, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1990, 'neon', 25.06, 0.52476219, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1991, 'neon', 24.56, 0.438004488, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1998, 'i-pentane', 148.05, 4.99E-6, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(1999, 'i-pentane', 157.65, 2.45E-5, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2000, 'i-pentane', 166.05, 8.33E-5, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2001, 'i-pentane', 172.05, 1.84E-4, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2002, 'i-pentane', 180.45, 5.03E-4, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2003, 'i-pentane', 197.25, 0.002809216, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2004, 'i-pentane', 224.85, 0.025113989, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2005, 'i-pentane', 247.65, 0.100536797, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2006, 'i-pentane', 259.65, 0.186290101, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2007, 'i-pentane', 268.05, 0.276135797, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2008, 'i-pentane', 274.05, 0.359557456, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2009, 'i-pentane', 283.65, 0.533985177, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2010, 'i-pentane', 288.45, 0.643366698, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2011, 'i-pentane', 289.65, 0.673297836, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2012, 'i-pentane', 294.45, 0.804172598, 0.1, 'Perrys TR', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2013, 'i-pentane', 299.25, 0.954227261, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2014, 'i-pentane', 304.05, 1.125309516, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2015, 'i-pentane', 305.25, 1.171589153, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2016, 'i-pentane', 310.05, 1.371664905, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2017, 'i-pentane', 311.25, 1.425579962, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2018, 'i-pentane', 316.05, 1.657784986, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2019, 'i-pentane', 328.05, 2.365728677, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2020, 'i-pentane', 329.25, 2.44747478, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2021, 'i-pentane', 330.45, 2.531352496, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2022, 'i-pentane', 331.65, 2.617397674, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2023, 'i-pentane', 334.05, 2.796134957, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2024, 'i-pentane', 335.25, 2.888899904, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2025, 'i-pentane', 337.65, 3.081406233, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2026, 'i-pentane', 340.05, 3.28346224, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2027, 'i-pentane', 342.45, 3.495368462, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2028, 'i-pentane', 344.85, 3.717429135, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2029, 'i-pentane', 346.05, 3.832363483, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2030, 'i-pentane', 347.25, 3.949952225, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2031, 'i-pentane', 350.85, 4.319036871, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2032, 'i-pentane', 352.05, 4.447636452, 0.1, 'Perrys TR', 0.0, 0.0, NULL), +(2178, 'i-butane', 188.6, 0.015846, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2179, 'i-butane', 191.6, 0.020250298, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2180, 'i-butane', 194.6, 0.025648687, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2181, 'i-butane', 197.6, 0.032212826, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2182, 'i-butane', 200.6, 0.040134316, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2183, 'i-butane', 203.6, 0.049625663, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2184, 'i-butane', 206.6, 0.060921136, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2185, 'i-butane', 209.6, 0.074277539, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2186, 'i-butane', 212.6, 0.089974865, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2187, 'i-butane', 215.6, 0.108316836, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2188, 'i-butane', 218.6, 0.129631331, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2189, 'i-butane', 221.6, 0.154270687, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2190, 'i-butane', 224.6, 0.182611881, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2191, 'i-butane', 227.6, 0.215056585, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2192, 'i-butane', 230.6, 0.252031112, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2193, 'i-butane', 233.6, 0.293986226, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2194, 'i-butane', 236.6, 0.341396858, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2195, 'i-butane', 239.6, 0.394761692, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2196, 'i-butane', 242.6, 0.45460266, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2197, 'i-butane', 245.6, 0.521464332, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2198, 'i-butane', 248.6, 0.595913216, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2199, 'i-butane', 251.6, 0.678536967, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2200, 'i-butane', 254.6, 0.769943526, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2201, 'i-butane', 257.6, 0.870760178, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2202, 'i-butane', 260.6, 0.981632554, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2203, 'i-butane', 263.6, 1.103223572, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2204, 'i-butane', 280.0465427, 2.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2205, 'i-butane', 292.7722042, 3.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2206, 'i-butane', 302.6004738, 4.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2207, 'i-butane', 310.728153, 5.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2208, 'i-butane', 317.7212784, 6.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2209, 'i-butane', 323.8963036, 7.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2210, 'i-butane', 329.4496324, 8.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2211, 'i-butane', 334.512268, 9.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2212, 'i-butane', 339.1763363, 10.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2213, 'i-butane', 343.5093055, 11.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2214, 'i-butane', 347.5621983, 12.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2215, 'i-butane', 351.3746209, 13.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2216, 'i-butane', 354.9779889, 14.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2217, 'i-butane', 358.3976794, 15.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2218, 'i-butane', 361.6545131, 16.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2219, 'i-butane', 364.7658033, 17.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2220, 'i-butane', 367.7461169, 18.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2221, 'i-butane', 370.6078373, 19.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2222, 'i-butane', 373.3615883, 20.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2223, 'i-butane', 376.0165597, 21.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2224, 'i-butane', 378.580759, 22.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2225, 'i-butane', 381.0612103, 23.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2226, 'i-butane', 383.4641125, 24.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2227, 'i-butane', 385.7949662, 25.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2228, 'i-butane', 388.0586772, 26.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2229, 'i-butane', 390.2596413, 27.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2230, 'i-butane', 392.4018139, 28.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2231, 'i-butane', 394.4887685, 29.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2232, 'i-butane', 396.5237452, 30.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2233, 'n-pentane', 268.7, 0.198871406, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2234, 'n-pentane', 271.7, 0.228783544, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2235, 'n-pentane', 274.7, 0.262251838, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2236, 'n-pentane', 277.7, 0.299579952, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2237, 'n-pentane', 280.7, 0.341085752, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2238, 'n-pentane', 283.7, 0.387101129, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2239, 'n-pentane', 286.7, 0.43797178, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2240, 'n-pentane', 289.7, 0.49405694, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2241, 'n-pentane', 292.7, 0.555729079, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2242, 'n-pentane', 295.7, 0.623373553, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2243, 'n-pentane', 298.7, 0.697388219, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2244, 'n-pentane', 301.7, 0.778183022, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2245, 'n-pentane', 304.7, 0.866179544, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2246, 'n-pentane', 307.7, 0.961810525, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2247, 'n-pentane', 310.7, 1.065519359, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2248, 'n-pentane', 313.7, 1.17775957, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2249, 'n-pentane', 316.7, 1.298994258, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2250, 'n-pentane', 319.7, 1.429695533, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2251, 'n-pentane', 322.7, 1.570343936, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2252, 'n-pentane', 325.7, 1.721427842, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2253, 'n-pentane', 328.7, 1.883442853, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2254, 'n-pentane', 331.7, 2.056891185, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2255, 'n-pentane', 334.7, 2.242281045, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2256, 'n-pentane', 337.7, 2.440126015, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2257, 'n-pentane', 340.7, 2.650944419, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2258, 'n-pentane', 356.4263557, 4.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2259, 'n-pentane', 365.6525666, 5.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2260, 'n-pentane', 373.5757211, 6.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2261, 'n-pentane', 380.5603943, 7.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2262, 'n-pentane', 386.8326356, 8.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2263, 'n-pentane', 392.5430937, 9.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2264, 'n-pentane', 397.7976294, 10.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2265, 'n-pentane', 402.6737159, 11.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2266, 'n-pentane', 407.229905, 12.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2267, 'n-pentane', 411.5116205, 13.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2268, 'n-pentane', 415.5548727, 14.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2269, 'n-pentane', 419.3887352, 15.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2270, 'n-pentane', 423.0370499, 16.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2271, 'n-pentane', 426.519633, 17.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2272, 'n-pentane', 429.8531501, 18.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2273, 'n-pentane', 433.0517625, 19.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2274, 'n-pentane', 436.1276146, 20.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2275, 'n-pentane', 439.0912073, 21.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2276, 'n-pentane', 441.951687, 22.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2277, 'n-pentane', 444.7170743, 23.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2278, 'n-pentane', 447.3944446, 24.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2279, 'n-pentane', 449.9900745, 25.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2280, 'n-pentane', 452.5095598, 26.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2281, 'n-pentane', 454.9579132, 27.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2282, 'n-pentane', 457.3396435, 28.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2283, 'n-pentane', 459.6588232, 29.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2284, 'n-pentane', 461.9191437, 30.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2285, 'n-pentane', 464.1239626, 31.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2286, 'n-pentane', 450.0464553, 32.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2287, 'c-hexane', 323.0, 0.362427549, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2288, 'c-hexane', 326.0, 0.404146149, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2289, 'c-hexane', 329.0, 0.449663999, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2290, 'c-hexane', 332.0, 0.499228762, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2291, 'c-hexane', 335.0, 0.553096726, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2292, 'c-hexane', 338.0, 0.611532673, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2293, 'c-hexane', 341.0, 0.674809752, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2294, 'c-hexane', 344.0, 0.743209319, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2295, 'c-hexane', 347.0, 0.817020769, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2296, 'c-hexane', 350.0, 0.896541349, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2297, 'c-hexane', 353.0, 0.982075957, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2298, 'c-hexane', 356.0, 1.07393693, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2299, 'c-hexane', 359.0, 1.172443818, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2300, 'c-hexane', 362.0, 1.277923139, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2301, 'c-hexane', 365.0, 1.39070814, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2302, 'c-hexane', 368.0, 1.511138526, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2303, 'c-hexane', 371.0, 1.639560199, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2304, 'c-hexane', 374.0, 1.776324978, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2305, 'c-hexane', 377.0, 1.921790313, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2306, 'c-hexane', 380.0, 2.076318996, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2307, 'c-hexane', 383.0, 2.240278863, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2308, 'c-hexane', 386.0, 2.414042493, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2309, 'c-hexane', 389.0, 2.597986902, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2310, 'c-hexane', 392.0, 2.792493233, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2311, 'c-hexane', 395.0, 2.997946447, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2312, 'c-hexane', 398.0, 3.214735006, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2313, 'c-hexane', 401.0, 3.443250563, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2314, 'c-hexane', 404.0, 3.683887644, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2315, 'c-hexane', 407.0, 3.937043337, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2316, 'c-hexane', 410.0, 4.203116975, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2317, 'c-hexane', 413.0, 4.482509827, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2318, 'c-hexane', 416.0, 4.775624787, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2319, 'c-hexane', 419.0, 5.082866069, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2320, 'c-hexane', 422.0, 5.4046389, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2321, 'c-hexane', 425.0, 5.74134922, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2322, 'c-hexane', 428.0, 6.093403389, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2323, 'c-hexane', 431.0, 6.46120789, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2324, 'c-hexane', 434.0, 6.845169047, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2325, 'c-hexane', 437.0, 7.24569274, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2326, 'c-hexane', 440.0, 7.663184126, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2327, 'c-hexane', 443.0, 8.098047374, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2328, 'c-hexane', 446.0, 8.550685395, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2329, 'c-hexane', 449.0, 9.021499588, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2330, 'c-hexane', 452.0, 9.510889582, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2331, 'c-hexane', 455.0, 10.019253, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2332, 'c-hexane', 458.0, 10.5469852, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2333, 'c-hexane', 461.0, 11.09447907, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2334, 'c-hexane', 464.0, 11.66212479, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2335, 'c-hexane', 467.0, 12.25030962, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2336, 'c-hexane', 470.0, 12.85941766, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2337, 'c-hexane', 473.0, 13.4898297, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2338, 'c-hexane', 476.0, 14.14192298, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2339, 'c-hexane', 479.0, 14.81607102, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2340, 'c-hexane', 482.0, 15.51264344, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2341, 'c-hexane', 485.0, 16.23200579, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2342, 'c-hexane', 488.0, 16.97451936, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2343, 'c-hexane', 491.0, 17.74054105, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2344, 'c-hexane', 494.0, 18.53042321, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2345, 'c-hexane', 497.0, 19.34451347, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2346, 'c-hexane', 500.0, 20.18315466, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2347, 'c-hexane', 503.0, 21.04668462, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2348, 'c-hexane', 506.0, 21.93543612, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2349, 'c-hexane', 509.0, 22.84973669, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2350, 'c-hexane', 512.0, 23.7899086, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2352, 'c-hexane', 518.0, 25.74912821, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2353, 'c-hexane', 521.0, 26.76879293, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2354, 'c-hexane', 524.0, 27.81556288, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2355, 'n-heptane', 299.07, 0.063800305, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2356, 'n-heptane', 302.07, 0.073885184, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2357, 'n-heptane', 305.07, 0.085261977, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2358, 'n-heptane', 308.07, 0.098055458, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2359, 'n-heptane', 311.07, 0.112398057, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2360, 'n-heptane', 314.07, 0.128429968, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2361, 'n-heptane', 317.07, 0.146299243, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2362, 'n-heptane', 320.07, 0.16616186, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2363, 'n-heptane', 323.07, 0.188181773, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2364, 'n-heptane', 326.07, 0.21253094, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2365, 'n-heptane', 329.07, 0.239389338, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2366, 'n-heptane', 332.07, 0.268944942, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2367, 'n-heptane', 335.07, 0.301393704, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2368, 'n-heptane', 338.07, 0.336939493, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2369, 'n-heptane', 341.07, 0.375794031, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2370, 'n-heptane', 344.07, 0.418176803, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2371, 'n-heptane', 347.07, 0.464314948, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2372, 'n-heptane', 350.07, 0.514443138, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2373, 'n-heptane', 353.07, 0.568803437, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2374, 'n-heptane', 356.07, 0.627645144, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2375, 'n-heptane', 359.07, 0.691224622, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2376, 'n-heptane', 362.07, 0.759805116, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2377, 'n-heptane', 365.07, 0.833656547, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2378, 'n-heptane', 368.07, 0.913055309, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2379, 'n-heptane', 371.07, 0.998284042, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2380, 'n-heptane', 374.07, 1.089631399, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2381, 'n-heptane', 396.6266674, 2.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2382, 'n-heptane', 413.5373112, 3.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2383, 'n-heptane', 426.5354143, 4.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2384, 'n-heptane', 437.2391493, 5.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2385, 'n-heptane', 446.4134628, 6.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2386, 'n-heptane', 454.4858242, 7.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2387, 'n-heptane', 461.7214295, 8.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2388, 'n-heptane', 468.2970979, 9.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2389, 'n-heptane', 474.3371291, 10.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2390, 'n-heptane', 479.9325202, 11.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2391, 'n-heptane', 485.1520636, 12.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2392, 'n-heptane', 490.0491404, 13.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2393, 'n-heptane', 494.6660783, 14.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2394, 'n-heptane', 499.0370572, 15.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2395, 'n-heptane', 503.1901109, 16.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2396, 'n-heptane', 507.1485428, 17.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2397, 'n-heptane', 510.9319535, 18.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2398, 'n-heptane', 514.5569998, 19.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2399, 'n-heptane', 518.0379674, 20.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2400, 'n-heptane', 521.3872094, 21.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2401, 'n-heptane', 524.6154861, 22.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2402, 'n-heptane', 527.7322336, 23.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2403, 'n-heptane', 530.7457765, 24.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2404, 'n-heptane', 533.6634993, 25.0, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2405, 'benzene', 255.0, 0.011553558, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2406, 'benzene', 260.0, 0.016032275, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2407, 'benzene', 265.0, 0.021918407, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2408, 'benzene', 270.0, 0.029550369, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2409, 'benzene', 275.0, 0.039321615, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2410, 'benzene', 280.0, 0.051684526, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2411, 'benzene', 285.0, 0.067153869, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2412, 'benzene', 290.0, 0.086309802, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2413, 'benzene', 295.0, 0.109800354, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2414, 'benzene', 300.0, 0.138343401, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2415, 'benzene', 305.0, 0.172728098, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2416, 'benzene', 310.0, 0.213815802, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2417, 'benzene', 315.0, 0.2625405, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2418, 'benzene', 320.0, 0.319908775, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2419, 'benzene', 325.0, 0.38699936, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2420, 'benzene', 330.0, 0.464962315, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2421, 'benzene', 335.0, 0.555017896, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2422, 'benzene', 340.0, 0.658455143, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2423, 'benzene', 345.0, 0.776630271, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2424, 'benzene', 350.0, 0.91096489, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2425, 'benzene', 355.0, 1.06294411, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2426, 'benzene', 360.0, 1.234114586, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2427, 'benzene', 365.0, 1.426082528, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2428, 'benzene', 370.0, 1.640511726, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2429, 'benzene', 375.0, 1.879121616, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2430, 'benzene', 380.0, 2.143685414, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2431, 'benzene', 385.0, 2.436028349, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2432, 'benzene', 390.0, 2.758026004, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2433, 'benzene', 395.0, 3.111602795, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2434, 'benzene', 400.0, 3.498730583, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2435, 'benzene', 405.0, 3.92142745, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2436, 'benzene', 410.0, 4.381756624, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2437, 'benzene', 415.0, 4.881825575, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2438, 'benzene', 420.0, 5.423785272, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2439, 'benzene', 425.0, 6.009829622, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2440, 'benzene', 430.0, 6.642195057, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2441, 'benzene', 435.0, 7.323160305, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2442, 'benzene', 440.0, 8.055046321, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2443, 'benzene', 445.0, 8.840216379, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2444, 'benzene', 450.0, 9.681076318, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2445, 'benzene', 455.0, 10.58007496, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2446, 'benzene', 460.0, 11.53970468, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2447, 'benzene', 465.0, 12.56250208, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2448, 'benzene', 470.0, 13.65104891, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2449, 'benzene', 475.0, 14.807973, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2450, 'benzene', 480.0, 16.03594945, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2451, 'benzene', 485.0, 17.3377019, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2452, 'benzene', 490.0, 18.71600396, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2453, 'benzene', 495.0, 20.1736807, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2454, 'benzene', 500.0, 21.71361043, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2455, 'benzene', 505.0, 23.33872643, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2456, 'benzene', 510.0, 25.05201895, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2458, 'benzene', 520.0, 28.75539195, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2459, 'benzene', 525.0, 30.75175709, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2460, 'benzene', 530.0, 32.84887291, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2461, 'benzene', 535.0, 35.05004834, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2462, 'benzene', 540.0, 37.35866375, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2463, 'benzene', 545.0, 39.77817389, 0.1, 'calculated NIST anitione', 0.0, 0.0, NULL), +(2464, 'water', 258.15, 0.001914509, 1.91451E-5, 'Perry1998', NULL, NULL, 'undercooled'), +(2465, 'water', 261.15, 0.002445132, 2.44513E-5, 'Perry1998', NULL, NULL, 'undercooled'), +(2466, 'water', 263.15, 0.002865098, 2.8651E-5, 'Perry1998', NULL, NULL, 'undercooled'), +(2467, 'water', 265.15, 0.003351724, 3.35172E-5, 'Perry1998', NULL, NULL, 'undercooled'), +(2468, 'water', 268.15, 0.004216987, 4.21699E-5, 'Perry1998', NULL, NULL, 'undercooled'), +(2469, 'water', 270.15, 0.004896931, 4.89693E-5, 'Perry1998', NULL, NULL, 'undercooled'), +(2470, 'water', 271.15, 0.005274233, 5.27423E-5, 'Perry1998', NULL, NULL, 'undercooled'), +(2471, 'water', 272.15, 0.005676866, 5.67687E-5, 'Perry1998', NULL, NULL, 'undercooled'), +(2472, 'water', 273.15, 0.006104831, 6.10483E-5, 'Perry1998', NULL, NULL, NULL), +(2473, 'water', 274.15, 0.00656746, 6.56746E-5, 'Perry1998', NULL, NULL, NULL), +(2474, 'water', 275.15, 0.007058086, 7.05809E-5, 'Perry1998', NULL, NULL, NULL), +(2475, 'water', 276.15, 0.007579377, 7.57938E-5, 'Perry1998', NULL, NULL, NULL), +(2476, 'water', 280.15, 0.01001651, 1.00165E-4, 'Perry1998', NULL, NULL, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2477, 'water', 283.15, 0.012277657, 1.22777E-4, 'Perry1998', NULL, NULL, NULL), +(2478, 'water', 285.15, 0.014022847, 1.40228E-4, 'Perry1998', NULL, NULL, NULL), +(2479, 'water', 287.15, 0.015981352, 1.59814E-4, 'Perry1998', NULL, NULL, NULL), +(2480, 'water', 288.15, 0.017049264, 1.70493E-4, 'Perry1998', NULL, NULL, NULL), +(2481, 'water', 291.15, 0.020634303, 2.06343E-4, 'Perry1998', NULL, NULL, NULL), +(2482, 'water', 293.15, 0.023378077, 2.33781E-4, 'Perry1998', NULL, NULL, NULL), +(2483, 'water', 295.15, 0.026433826, 2.64338E-4, 'Perry1998', NULL, NULL, NULL), +(2484, 'water', 303.15, 0.042428511, 4.24285E-4, 'Perry1998', NULL, NULL, NULL), +(2485, 'water', 308.15, 0.056228709, 5.62287E-4, 'Perry1998', NULL, NULL, NULL), +(2486, 'water', 313.15, 0.073759267, 7.37593E-4, 'Perry1998', NULL, NULL, NULL), +(2487, 'water', 318.15, 0.095832118, 9.58321E-4, 'Perry1998', 0.0, 0.0, NULL), +(2488, 'water', 323.15, 0.123336523, 0.001233365, 'Perry1998', 0.0, 0.0, NULL), +(2489, 'water', 333.15, 0.199156954, 0.00199157, 'Perry1998', 0.0, 0.0, NULL), +(2490, 'water', 343.15, 0.311574375, 0.003115744, 'Perry1998', 0.0, 0.0, NULL), +(2491, 'water', 353.15, 0.47342773, 0.004734277, 'Perry1998', 0.0, 0.0, NULL), +(2492, 'water', 363.15, 0.700955684, 0.007009557, 'Perry1998', 0.0, 0.0, NULL), +(2493, 'water', 373.15, 1.01325, 0.0101325, 'Perry1998', 0.0, 0.0, NULL), +(2507, 'MEG', 260.0, 2.44E-6, 1.22557E-8, 'DIPPR2001', NULL, NULL, NULL), +(2508, 'MEG', 265.0, 4.4E-6, 2.21108E-8, 'DIPPR2001', NULL, NULL, NULL), +(2509, 'MEG', 273.15, 1.09E-5, 5.49293E-8, 'DIPPR2001', NULL, NULL, NULL), +(2510, 'MEG', 275.0, 1.33E-5, 6.69645E-8, 'DIPPR2001', NULL, NULL, NULL), +(2511, 'MEG', 280.0, 2.24E-5, 1.12714E-7, 'DIPPR2001', NULL, NULL, NULL), +(2512, 'MEG', 285.0, 3.7E-5, 1.85846E-7, 'DIPPR2001', NULL, NULL, NULL), +(2513, 'MEG', 290.0, 5.98E-5, 3.00507E-7, 'DIPPR2001', NULL, NULL, NULL), +(2514, 'MEG', 295.0, 9.49E-5, 4.77011E-7, 'DIPPR2001', NULL, NULL, NULL), +(2515, 'MEG', 300.0, 1.48E-4, 7.44036E-7, 'DIPPR2001', NULL, NULL, NULL), +(2516, 'MEG', 310.0, 3.43E-4, 1.72357E-6, 'DIPPR2001', NULL, NULL, NULL), +(2517, 'MEG', 330.0, 0.00155, 7.76821E-6, 'DIPPR2001', NULL, NULL, NULL), +(2518, 'MEG', 350.0, 0.00572, 2.87226E-5, 'DIPPR2001', NULL, NULL, NULL), +(2519, 'MEG', 370.0, 0.0179, 9.00979E-5, 'DIPPR2001', NULL, NULL, NULL), +(2520, 'MEG', 400.0, 0.0774, 3.89157E-4, 'DIPPR2001', NULL, NULL, NULL), +(2521, 'MEG', 430.0, 0.262, 0.001318424, 'DIPPR2001', NULL, NULL, NULL), +(2522, 'MEG', 460.0, 0.733, 0.003684497, 'DIPPR2001', NULL, NULL, NULL), +(2523, 'MEG', 490.0, 1.76, 0.00882081, 'DIPPR2001', NULL, NULL, NULL), +(2524, 'MEG', 520.0, 3.71, 0.018621175, 'DIPPR2001', NULL, NULL, NULL), +(2525, 'MEG', 550.0, 7.06, 0.035453506, 'DIPPR2001', NULL, NULL, NULL), +(2526, 'MEG', 580.0, 12.3, 0.061974456, 'DIPPR2001', NULL, NULL, NULL), +(2527, 'MEG', 610.0, 20.1, 0.10090167, 'DIPPR2001', NULL, NULL, NULL), +(2665, 'TEG', 273.15, 1.27537E-7, 1.27537E-9, 'DIPPR2001', 0.0, 0.0, NULL), +(2666, 'TEG', 278.15, 2.23875E-7, 2.23875E-9, 'DIPPR2001', 0.0, 0.0, NULL), +(2667, 'TEG', 283.15, 3.8521E-7, 3.8521E-9, 'DIPPR2001', 0.0, 0.0, NULL), +(2668, 'TEG', 288.15, 6.50386E-7, 6.50386E-9, 'DIPPR2001', 0.0, 0.0, NULL), +(2669, 'TEG', 293.15, 1.07858E-6, 1.07858E-8, 'DIPPR2001', 0.0, 0.0, NULL), +(2670, 'TEG', 298.15, 1.75847E-6, 1.75847E-8, 'DIPPR2001', 0.0, 0.0, NULL), +(2671, 'TEG', 303.15, 2.82096E-6, 2.82096E-8, 'DIPPR2001', 0.0, 0.0, NULL), +(2672, 'TEG', 308.15, 4.45635E-6, 4.45635E-8, 'DIPPR2001', 0.0, 0.0, NULL), +(2673, 'TEG', 313.15, 6.93762E-6, 6.93762E-8, 'DIPPR2001', 0.0, 0.0, NULL), +(2674, 'TEG', 318.15, 1.06511E-5, 1.06511E-7, 'DIPPR2001', 0.0, 0.0, NULL), +(2675, 'TEG', 323.15, 1.61366E-5, 1.61366E-7, 'DIPPR2001', 0.0, 0.0, NULL), +(2676, 'TEG', 328.15, 2.414E-5, 2.414E-7, 'DIPPR2001', 0.0, 0.0, NULL), +(2677, 'TEG', 333.15, 3.56795E-5, 3.56795E-7, 'DIPPR2001', 0.0, 0.0, NULL), +(2678, 'TEG', 338.15, 5.21308E-5, 5.21308E-7, 'DIPPR2001', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2679, 'TEG', 343.15, 7.53332E-5, 7.53332E-7, 'DIPPR2001', 0.0, 0.0, NULL), +(2680, 'TEG', 348.15, 1.07722E-4, 1.07722E-6, 'DIPPR2001', 0.0, 0.0, NULL), +(2681, 'TEG', 353.15, 1.52493E-4, 1.52493E-6, 'DIPPR2001', 0.0, 0.0, NULL), +(2682, 'TEG', 358.15, 2.13799E-4, 2.13799E-6, 'DIPPR2001', 0.0, 0.0, NULL), +(2683, 'TEG', 363.15, 2.96995E-4, 2.96995E-6, 'DIPPR2001', 0.0, 0.0, NULL), +(2684, 'TEG', 368.15, 4.0893E-4, 4.0893E-6, 'DIPPR2001', 0.0, 0.0, NULL), +(2685, 'TEG', 373.15, 5.58294E-4, 5.58294E-6, 'DIPPR2001', 0.0, 0.0, NULL), +(2686, 'TEG', 378.15, 7.56031E-4, 7.56031E-6, 'DIPPR2001', 0.0, 0.0, NULL), +(2687, 'TEG', 383.15, 0.001015831, 1.01583E-5, 'DIPPR2001', 0.0, 0.0, NULL), +(2688, 'TEG', 388.15, 0.0013547, 1.3547E-5, 'DIPPR2001', 0.0, 0.0, NULL), +(2689, 'TEG', 393.15, 0.001793625, 1.79363E-5, 'DIPPR2001', 0.0, 0.0, NULL), +(2690, 'TEG', 398.15, 0.002358352, 2.35835E-5, 'DIPPR2001', 0.0, 0.0, NULL), +(2691, 'TEG', 403.15, 0.003080271, 3.08027E-5, 'DIPPR2001', 0.0, 0.0, NULL), +(2692, 'TEG', 408.15, 0.00399744, 3.99744E-5, 'DIPPR2001', 0.0, 0.0, NULL), +(2693, 'TEG', 413.15, 0.005155751, 5.15575E-5, 'DIPPR2001', 0.0, 0.0, NULL), +(2694, 'TEG', 418.15, 0.006610249, 6.61025E-5, 'DIPPR2001', 0.0, 0.0, NULL), +(2695, 'TEG', 423.15, 0.008426633, 8.42663E-5, 'DIPPR2001', 0.0, 0.0, NULL), +(2696, 'TEG', 428.15, 0.010682937, 1.06829E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2697, 'TEG', 433.15, 0.013471418, 1.34714E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2698, 'TEG', 438.15, 0.016900668, 1.69007E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2699, 'TEG', 443.15, 0.021097962, 2.1098E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2700, 'TEG', 448.15, 0.026211856, 2.62119E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2701, 'TEG', 453.15, 0.032415074, 3.24151E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2702, 'TEG', 458.15, 0.039907672, 3.99077E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2703, 'TEG', 463.15, 0.048920528, 4.89205E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2704, 'TEG', 468.15, 0.059719151, 5.97192E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2705, 'TEG', 473.15, 0.07260786, 7.26079E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2706, 'TEG', 478.15, 0.087934318, 8.79343E-4, 'DIPPR2001', 0.0, 0.0, NULL), +(2707, 'TEG', 483.15, 0.106094477, 0.001060945, 'DIPPR2001', 0.0, 0.0, NULL), +(2708, 'TEG', 488.15, 0.127537928, 0.001275379, 'DIPPR2001', 0.0, 0.0, NULL), +(2709, 'TEG', 493.15, 0.1527737, 0.001527737, 'DIPPR2001', 0.0, 0.0, NULL), +(2710, 'Piperazine', 373.15, 0.206348704, 0.002063487, 'Knowel web book', 0.0, 0.0, NULL), +(2711, 'Piperazine', 398.15, 0.514082766, 0.005140828, 'Knowel web book', 0.0, 0.0, NULL), +(2712, 'Piperazine', 423.15, 1.124957089, 0.011249571, 'Knowel web book', 0.0, 0.0, NULL), +(2713, 'Piperazine', 448.15, 2.21880725, 0.022188073, 'Knowel web book', 0.0, 0.0, NULL), +(2714, 'Piperazine', 473.15, 4.021646767, 0.040216468, 'Knowel web book', 0.0, 0.0, NULL), +(2715, 'Piperazine', 498.15, 6.79886816, 0.067988682, 'Knowel web book', 0.0, 0.0, NULL), +(2716, 'Piperazine', 523.15, 10.84522304, 0.10845223, 'Knowel web book', 0.0, 0.0, NULL), +(2717, 'Piperazine', 548.15, 16.47318324, 0.164731832, 'Knowel web book', 0.0, 0.0, NULL), +(2718, 'Piperazine', 573.15, 24.00109952, 0.240010995, 'Knowel web book', 0.0, 0.0, NULL), +(2719, 'Piperazine', 598.15, 33.74222092, 0.337422209, 'Knowel web book', 0.0, 0.0, NULL), +(2720, 'Piperazine', 623.15, 45.99525194, 0.459952519, 'Knowel web book', 0.0, 0.0, NULL), +(2755, 'TEG', 273.15, 1.25859E-7, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2756, 'TEG', 298.15, 1.73534E-6, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2757, 'TEG', 323.15, 1.59243E-5, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2758, 'TEG', 348.15, 1.06305E-4, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2759, 'TEG', 373.15, 5.50948E-4, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2760, 'TEG', 398.15, 0.002327321, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2761, 'TEG', 423.15, 0.008315756, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2762, 'TEG', 448.15, 0.025866963, 0.001060945, 'Stull1947', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2763, 'TEG', 473.15, 0.071652493, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2764, 'TEG', 498.15, 0.179976817, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2765, 'TEG', 523.15, 0.415956558, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2766, 'TEG', 548.15, 0.895173898, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2767, 'TEG', 573.15, 1.811618983, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2768, 'TEG', 598.15, 3.475996279, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2769, 'TEG', 623.15, 6.366833515, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2770, 'TEG', 648.15, 11.1973486, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2771, 'TEG', 673.15, 19.00174741, 0.001060945, 'Stull1947', 0.0, 0.0, NULL), +(2776, 'mercury', 298.14, 2.63807E-6, 2.64E-6, 'NIST', 0.0, 0.0, NULL), +(2777, 'mercury', 308.14, 5.9066E-6, 1.0E-7, 'NIST', 0.0, 0.0, NULL), +(2778, 'mercury', 318.14, 1.25507E-5, 1.0E-7, 'NIST', 0.0, 0.0, NULL), +(2779, 'mercury', 328.14, 2.54344E-5, 3.0E-7, 'NIST', 0.0, 0.0, NULL), +(2780, 'mercury', 338.14, 4.93716E-5, 5.0E-7, 'NIST', 0.0, 0.0, NULL), +(2781, 'mercury', 348.14, 9.21501E-5, 9.0E-7, 'NIST', 0.0, 0.0, NULL), +(2782, 'mercury', 358.14, 1.65938E-4, 1.7E-6, 'NIST', 0.0, 0.0, NULL), +(2783, 'mercury', 368.14, 2.89153E-4, 2.9E-6, 'NIST', 0.0, 0.0, NULL), +(2784, 'mercury', 378.14, 4.88888E-4, 4.9E-6, 'NIST', 0.0, 0.0, NULL), +(2785, 'mercury', 388.14, 8.03945E-4, 8.0E-6, 'NIST', 0.0, 0.0, NULL), +(2786, 'mercury', 398.14, 0.001288585, 1.29E-5, 'NIST', 0.0, 0.0, NULL), +(2787, 'mercury', 408.14, 0.002017007, 2.02E-5, 'NIST', 0.0, 0.0, NULL), +(2788, 'mercury', 418.14, 0.00308863, 3.09E-5, 'NIST', 0.0, 0.0, NULL), +(2789, 'mercury', 428.14, 0.004634181, 4.63E-5, 'NIST', 0.0, 0.0, NULL), +(2790, 'mercury', 438.14, 0.006822581, 6.82E-5, 'NIST', 0.0, 0.0, NULL), +(2791, 'mercury', 448.14, 0.009868628, 9.87E-5, 'NIST', 0.0, 0.0, NULL), +(2792, 'mercury', 458.14, 0.014041402, 1.404E-4, 'NIST', 0.0, 0.0, NULL), +(2793, 'mercury', 468.14, 0.019673346, 1.967E-4, 'NIST', 0.0, 0.0, NULL), +(2794, 'mercury', 478.14, 0.027169931, 2.717E-4, 'NIST', 0.0, 0.0, NULL), +(2795, 'mercury', 488.14, 0.037019796, 3.702E-4, 'NIST', 0.0, 0.0, NULL), +(2796, 'mercury', 498.14, 0.049805249, 4.981E-4, 'NIST', 0.0, 0.0, NULL), +(2797, 'mercury', 508.14, 0.066213006, 6.621E-4, 'NIST', 0.0, 0.0, NULL), +(2798, 'mercury', 518.14, 0.087045034, 8.705E-4, 'NIST', 0.0, 0.0, NULL), +(2799, 'mercury', 528.14, 0.113229353, 0.0011323, 'NIST', 0.0, 0.0, NULL), +(2800, 'mercury', 538.14, 0.145830668, 0.0014583, 'NIST', 0.0, 0.0, NULL), +(2801, 'mercury', 548.14, 0.186060694, 0.0018606, 'NIST', 0.0, 0.0, NULL), +(2802, 'mercury', 558.14, 0.235288045, 0.0023529, 'NIST', 0.0, 0.0, NULL), +(2803, 'mercury', 568.14, 0.295047572, 0.0029505, 'NIST', 0.0, 0.0, NULL), +(2804, 'mercury', 578.14, 0.367049032, 0.0036705, 'NIST', 0.0, 0.0, NULL), +(2805, 'mercury', 588.14, 0.453184999, 0.0045318, 'NIST', 0.0, 0.0, NULL), +(2806, 'mercury', 598.14, 0.555537921, 0.0055554, 'NIST', 0.0, 0.0, NULL), +(2807, 'mercury', 608.14, 0.676386267, 0.0067639, 'NIST', 0.0, 0.0, NULL), +(2808, 'mercury', 618.14, 0.81820969, 0.0081821, 'NIST', 0.0, 0.0, NULL), +(2809, 'mercury', 628.14, 0.983693175, 0.0098369, 'NIST', 0.0, 0.0, NULL), +(2810, 'mercury', 638.14, 1.175730132, 0.0117573, 'NIST', 0.0, 0.0, NULL), +(2811, 'mercury', 648.14, 1.39742443, 0.0139742, 'NIST', 0.0, 0.0, NULL), +(2812, 'mercury', 658.14, 1.652091351, 0.0165209, 'NIST', 0.0, 0.0, NULL), +(2813, 'mercury', 668.14, 1.943257489, 0.0194326, 'NIST', 0.0, 0.0, NULL), +(2814, 'mercury', 678.14, 2.2746596, 0.0227466, 'NIST', 0.0, 0.0, NULL), +(2815, 'mercury', 688.14, 2.650242437, 0.0265024, 'NIST', 0.0, 0.0, NULL), +(2816, 'mercury', 698.14, 3.074155604, 0.0307416, 'NIST', 0.0, 0.0, NULL), +(2817, 'mercury', 708.14, 3.550749471, 0.0355075, 'NIST', 0.0, 0.0, NULL), +(2818, 'mercury', 718.14, 4.084570209, 0.0408457, 'NIST', 0.0, 0.0, NULL), +(2819, 'mercury', 728.14, 4.680353987, 0.0468035, 'NIST', 0.0, 0.0, NULL); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY, TYPE) VALUES +(2820, 'mercury', 738.14, 5.343020397, 0.0534302, 'NIST', 0.0, 0.0, NULL), +(2821, 'mercury', 748.14, 6.077665174, 0.0607767, 'NIST', 0.0, 0.0, NULL); +CREATE CACHED TABLE PUBLIC.PURECOMPONENTVAPOURPRESSURES2( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + VAPOURPRESSURE DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT '0', + REFERENCE VARCHAR(200) DEFAULT NULL, + GASDENSITY DOUBLE DEFAULT '0', + LIQUIDDENSITY DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.PURECOMPONENTVAPOURPRESSURES2 ADD CONSTRAINT PUBLIC.CONSTRAINT_47 PRIMARY KEY(ID); +-- 178 +/- SELECT COUNT(*) FROM PUBLIC.PURECOMPONENTVAPOURPRESSURES2; +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES2(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY) VALUES +(1, 'water', 273.15, 0.006113, 1.2226E-4, 'Shapiro1993', 0.004851166, 999.80004), +(2, 'water', 283.15, 0.012276, 2.4552E-4, 'Shapiro1993', 0.009400352, 999.6001599), +(3, 'water', 288.15, 0.01705, 3.41E-4, 'Shapiro1993', 0.012832687, 999.1008093), +(4, 'water', 293.15, 0.02339, 4.678E-4, 'Shapiro1993', 0.017303732, 998.2032342), +(5, 'water', 298.15, 0.03169, 6.338E-4, 'Shapiro1993', 0.023062731, 997.1083857), +(6, 'water', 303.15, 0.04246, 8.492E-4, 'Shapiro1993', 0.030400681, 995.7184108), +(9, 'MDEA', 401.97, 0.014776, 2.9552E-4, 'Noll1998', 0.0, 0.0), +(10, 'methane', 120.0, 1.96, 0.0392, 'Borgnakke1997', 0.0, 0.0), +(11, 'methane', 130.0, 3.676, 0.07352, 'Borgnakke1997', 0.0, 0.0), +(12, 'methane', 140.0, 6.416, 0.12832, 'Borgnakke1997', 0.0, 0.0), +(13, 'methane', 150.0, 10.405, 0.2081, 'Borgnakke1997', 0.0, 0.0), +(14, 'methane', 160.0, 15.928, 0.31856, 'Borgnakke1997', 0.0, 0.0), +(15, 'methane', 180.0, 32.632, 0.65264, 'Borgnakke1997', 0.0, 0.0), +(17, 'water', 313.15, 0.07384, 0.0014768, 'Borgnakke1997', 0.051229508, 992.2603691), +(18, 'water', 323.15, 0.1235, 0.00247, 'Borgnakke1997', 0.083111702, 988.0446596), +(19, 'water', 333.15, 0.19941, 0.0039882, 'Borgnakke1997', 0.1303611, 983.0908376), +(20, 'water', 343.15, 0.3119, 0.006238, 'Borgnakke1997', 0.198333994, 977.7082519), +(21, 'water', 353.15, 0.4739, 0.009478, 'Borgnakke1997', 0.293513355, 971.7228646), +(22, 'water', 363.15, 0.7014, 0.014028, 'Borgnakke1997', 0.423549343, 965.2509653), +(23, 'water', 373.15, 1.01325, 0.020265, 'Borgnakke1997', 0.597728631, 958.3133685), +(24, 'MDEA', 293.69, 6.1032E-6, 1.22064E-7, 'Noll1998', 0.0, 0.0), +(25, 'MDEA', 303.56, 1.4776E-5, 2.9552E-8, 'Noll1998', 0.0, 0.0), +(26, 'MDEA', 391.97, 0.0088142, 1.76284E-4, 'Noll1998', 0.0, 0.0), +(27, 'MDEA', 361.94, 0.0015712, 3.1424E-5, 'Noll1998', 0.0, 0.0), +(28, 'MDEA', 333.23, 1.8139E-4, 3.6278E-6, 'Noll1998', 0.0, 0.0), +(29, 'MDEA', 313.46, 3.415E-5, 6.83E-7, 'Noll1998', 0.0, 0.0), +(30, 'MDEA', 333.23, 1.8139E-4, 3.6278E-6, 'Noll1998', 0.0, 0.0), +(31, 'MDEA', 371.89, 0.0029083, 5.8166E-5, 'Noll1998', 0.0, 0.0), +(32, 'MDEA', 361.94, 0.0015712, 3.1424E-5, 'Noll1998', 0.0, 0.0), +(33, 'Selexol', 0.0, 0.0, 0.0, 'Noll1998', 0.0, 0.0), +(34, 'Selexol', 0.0, 0.0, 0.0, 'Noll1998', 0.0, 0.0), +(35, 'MDEA', 303.56, 1.469E-5, 6.82E-7, 'Noll1998', 0.0, 0.0), +(36, 'MDEA', 313.46, 3.415E-5, 6.83E-7, 'Noll1998', 0.0, 0.0), +(37, 'MDEA', 323.3, 7.9768E-5, 1.59536E-6, 'Noll1998', 0.0, 0.0), +(38, 'MDEA', 323.33, 7.9484E-5, 1.58968E-6, 'Noll1998', 0.0, 0.0), +(39, 'MDEA', 343.04, 3.9345E-4, 7.869E-6, 'Noll1998', 0.0, 0.0), +(40, 'MDEA', 343.06, 3.9664E-4, 7.9328E-6, 'Noll1998', 0.0, 0.0), +(41, 'MDEA', 351.94, 7.7071E-4, 1.54142E-5, 'Noll1998', 0.0, 0.0), +(42, 'MDEA', 351.97, 7.6787E-4, 1.53574E-5, 'Noll1998', 0.0, 0.0), +(43, 'MDEA', 352.96, 8.147E-4, 1.6294E-5, 'Noll1998', 0.0, 0.0), +(44, 'MDEA', 353.0, 8.0903E-4, 1.61806E-5, 'Noll1998', 0.0, 0.0), +(45, 'MDEA', 381.89, 0.0054503, 1.09006E-4, 'Noll1998', 0.0, 0.0), +(46, 'MDEA', 381.9, 0.00528, 1.056E-4, 'Noll1998', 0.0, 0.0), +(47, 'MDEA', 391.97, 0.0088142, 1.76284E-4, 'Noll1998', 0.0, 0.0), +(48, 'MDEA', 401.96, 0.014761, 2.9522E-4, 'Noll1998', 0.0, 0.0), +(50, 'CO2', 138.85, 0.001316, 5.26316E-6, 'Perry1998', 0.0, 0.0), +(51, 'CO2', 148.75, 0.006578947, 2.63158E-5, 'Perry1998', 0.0, 0.0), +(52, 'CO2', 153.65, 0.013157895, 5.26316E-5, 'Perry1998', 0.0, 0.0), +(53, 'CO2', 158.75, 0.026315789, 1.05263E-4, 'Perry1998', 0.0, 0.0), +(54, 'CO2', 164.55, 0.052631579, 2.10526E-4, 'Perry1998', 0.0, 0.0), +(55, 'CO2', 168.35, 0.078947368, 3.15789E-4, 'Perry1998', 0.0, 0.0), +(57, 'CO2', 172.95, 0.131578947, 5.26316E-4, 'Perry1998', 0.0, 0.0), +(58, 'CO2', 180.15, 0.263157895, 0.001052632, 'Perry1998', 0.0, 0.0), +(60, 'CO2', 187.45, 0.526315789, 0.002105263, 'Perry1998', 0.0, 0.0), +(61, 'CO2', 194.95, 1.01325, 0.004, 'Perry1998', 0.0, 0.0), +(63, 'CO2', 216.6, 5.18, 0.139, 'Perry1998', 14.04494382, 1178.689298), +(64, 'CO2', 220.0, 5.996, 0.1466, 'Perry1998', 16.02564103, 1166.316772); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES2(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY) VALUES +(65, 'CO2', 225.0, 7.357, 0.1668, 'Perry1998', 19.41747573, 1148.105626), +(66, 'CO2', 230.0, 8.935, 0.189, 'Perry1998', 23.36448598, 1129.177958), +(67, 'CO2', 235.0, 10.75, 0.214, 'Perry1998', 28.01120448, 1109.754744), +(68, 'CO2', 240.0, 12.83, 0.268, 'Perry1998', 33.33333333, 1089.561996), +(70, 'CO2', 245.0, 15.19, 0.1466, 'Perry1998', 39.5256917, 1068.604403), +(72, 'water', 383.15, 1.433, 0.030265, 'Shapiro1993', 0.826446281, 950.9319133), +(73, 'water', 393.15, 1.985, 0.035265, 'Shapiro1993', 1.121201928, 943.129303), +(74, 'water', 423.15, 4.758, 0.055265, 'Shapiro1993', 2.545824847, 917.0105456), +(75, 'water', 473.15, 15.54, 0.85265, 'Shapiro1993', 7.849293564, 864.6779075), +(76, 'water', 523.15, 39.73, 1.0, 'Shapiro1993', 19.94813485, 799.2327366), +(77, 'water', 573.15, 85.81, 1.0, 'Shapiro1993', 46.14674665, 712.4536905), +(78, 'water', 633.15, 186.5, 3.0, 'Shapiro1993', 143.9884809, 528.4015852), +(79, 'water', 647.15, 220.85, 4.0, 'Shapiro1993', 316.9572108, 316.9572108), +(80, 'water', 553.15, 64.12, 2.0, 'Shapiro1993', 33.14550878, 750.6943923), +(81, 'CO2', 250.0, 17.86, 0.1466, 'Perry1998', 46.72897196, 1046.682018), +(82, 'CO2', 255.0, 20.85, 0.1668, 'Perry1998', 54.94505495, 1023.751024), +(83, 'CO2', 260.0, 24.19, 0.189, 'Perry1998', 64.51612903, 1000.0), +(84, 'CO2', 270.0, 32.03, 0.214, 'Perry1998', 88.49557522, 946.969697), +(85, 'CO2', 275.0, 36.59, 0.268, 'Perry1998', 103.0927835, 916.5902841), +(86, 'CO2', 280.0, 41.6, 0.282, 'Perry1998', 121.9512195, 884.9557522), +(87, 'CO2', 290.0, 53.15, 0.1466, 'Perry1998', 172.4137931, 805.8017728), +(88, 'CO2', 300.0, 67.1, 0.1668, 'Perry1998', 270.2702703, 680.2721088), +(89, 'CO2', 304.1, 73.83, 0.189, 'Perry1998', 466.0, 466.2004662), +(93, 'methane', 90.0, 0.117, 0.00117, 'Perry1998', 0.251509054, 451.4672686), +(94, 'methane', 95.0, 0.198, 0.00198, 'Perry1998', 0.406008932, 445.6327986), +(95, 'methane', 100.0, 0.345, 0.00345, 'Perry1998', 0.676132522, 438.9815628), +(96, 'methane', 105.0, 0.565, 0.00565, 'Perry1998', 1.063829787, 431.7789292), +(97, 'methane', 110.0, 0.884, 0.00884, 'Perry1998', 1.6, 424.9893753), +(98, 'methane', 115.0, 1.325, 0.01325, 'Perry1998', 2.325581395, 417.3622705), +(99, 'methane', 120.0, 1.919, 0.01919, 'Perry1998', 3.267973856, 410.1722724), +(100, 'methane', 125.0, 2.693, 0.02693, 'Perry1998', 4.484304933, 402.0908725), +(101, 'methane', 130.0, 3.681, 0.03681, 'Perry1998', 5.988023952, 394.3217666), +(102, 'methane', 135.0, 4.912, 0.04912, 'Perry1998', 7.874015748, 385.5050116), +(103, 'methane', 140.0, 6.422, 0.06422, 'Perry1998', 10.20408163, 377.0739065), +(104, 'methane', 145.0, 8.246, 0.08246, 'Perry1998', 12.98701299, 367.3769287), +(105, 'methane', 150.0, 10.41, 0.1041, 'Perry1998', 16.39344262, 358.1661891), +(106, 'methane', 155.0, 12.97, 0.1297, 'Perry1998', 20.40816327, 346.981263), +(107, 'methane', 160.0, 15.94, 0.1594, 'Perry1998', 25.64102564, 336.5870077), +(108, 'methane', 165.0, 19.39, 0.1939, 'Perry1998', 31.25, 323.1017771), +(109, 'methane', 170.0, 23.81, 0.2381, 'Perry1998', 38.46153846, 310.7520199), +(110, 'methane', 175.0, 27.81, 0.2781, 'Perry1998', 50.0, 292.4831822), +(111, 'methane', 180.0, 32.86, 0.3286, 'Perry1998', 62.5, 276.3194253), +(112, 'methane', 185.0, 38.59, 0.3859, 'Perry1998', 83.33333333, 251.319427), +(113, 'methane', 190.0, 45.2, 0.452, 'Perry1998', 125.0, 204.0816327), +(114, 'methane', 190.55, 45.99, 0.4599, 'Perry1998', 166.6666667, 160.436387), +(115, 'water', 640.0, 202.7, 1.0, 'Perry1998', 175.438596491228, 481.927710843374), +(116, 'water', 625.0, 169.1, 1.0, 'Perry1998', 117.647058823529, 562.429696287964), +(117, 'water', 610.0, 137.3, 1.0, 'Perry1998', 86.9565217391304, 620.347394540943), +(118, 'water', 590.0, 108.3, 1.0, 'Perry1998', 61.3496932515337, 674.76383265857), +(119, 'water', 580.0, 94.51, 1.0, 'Perry1998', 51.8134715025907, 697.836706210747), +(137, 'nitrogen', 63.1, 0.125, 4.0, 'Borgnakke1997', 0.675338007, 869.5652174), +(138, 'nitrogen', 65.0, 0.174, 5.0, 'Borgnakke1997', 0.914519831, 862.0689655); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES2(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY) VALUES +(139, 'nitrogen', 70.0, 0.386, 6.0, 'Borgnakke1997', 1.8999848, 839.6305626), +(140, 'nitrogen', 75.0, 0.761, 7.0, 'Borgnakke1997', 3.549371761, 817.6614881), +(141, 'nitrogen', 77.3, 1.013, 8.0, 'Borgnakke1997', 4.621285642, 806.4516129), +(142, 'nitrogen', 80.0, 1.37, 9.0, 'Borgnakke1997', 6.106870229, 794.2811755), +(143, 'nitrogen', 85.0, 2.291, 10.0, 'Borgnakke1997', 9.854158455, 769.8229407), +(144, 'nitrogen', 90.0, 3.608, 11.0, 'Borgnakke1997', 15.12630464, 744.6016381), +(145, 'nitrogen', 95.0, 5.411, 12.0, 'Borgnakke1997', 22.34137623, 717.8750897), +(146, 'nitrogen', 100.0, 7.792, 13.0, 'Borgnakke1997', 31.15264798, 688.7052342), +(147, 'nitrogen', 105.0, 10.846, 14.0, 'Borgnakke1997', 45.08566276, 657.0302234), +(148, 'nitrogen', 110.0, 14.676, 15.0, 'Borgnakke1997', 62.69592476, 621.1180124), +(149, 'nitrogen', 115.0, 19.393, 16.0, 'Borgnakke1997', 87.41258741, 578.3689994), +(150, 'nitrogen', 120.0, 25.13, 17.0, 'Borgnakke1997', 125.1564456, 522.1932115), +(151, 'nitrogen', 125.0, 32.08, 18.0, 'Borgnakke1997', 204.0816327, 424.6284501), +(152, 'nitrogen', 126.15, 33.94, 19.0, 'Borgnakke1997', 313.4796238, 313.0870382), +(253, 'MEG', 273.15, 9.8679E-6, 9.8679E-8, 'NIST-calculated', NULL, 1127.620366), +(254, 'MEG', 283.15, 2.82369E-5, 2.82369E-7, 'NIST-calculated', NULL, 1120.713295), +(255, 'MEG', 293.15, 7.44676E-5, 7.44676E-7, 'NIST-calculated', NULL, 1113.725021), +(256, 'MEG', 303.15, 1.82527E-4, 1.82527E-6, 'NIST-calculated', NULL, 1106.652427), +(257, 'MEG', 313.15, 4.18859E-4, 4.18859E-6, 'NIST-calculated', NULL, 1099.492194), +(258, 'MEG', 323.15, 9.05656E-4, 9.05656E-6, 'NIST-calculated', NULL, 1092.24079), +(259, 'MEG', 333.15, 0.001855439, 5.26316E-6, 'Perry1998', NULL, 1084.894441), +(260, 'MEG', 343.15, 0.003619605, 1.85544E-5, 'NIST-calculated', NULL, 1077.449119), +(261, 'MEG', 353.15, 0.006753074, 3.6196E-5, 'NIST-calculated', NULL, 1069.900505), +(262, 'MEG', 363.15, 0.01209621, 5.26316E-6, 'Perry1998', NULL, 1062.243971), +(263, 'MEG', 373.15, 0.020873792, 6.75307E-5, 'NIST-calculated', NULL, 1054.474541), +(264, 'MEG', 383.15, 0.034809226, 1.20962E-4, 'NIST-calculated', NULL, 1046.586855), +(265, 'MEG', 393.15, 0.05625039, 5.26316E-6, 'Perry1998', NULL, 1038.575131), +(266, 'MEG', 403.15, 0.088301921, 2.08738E-4, 'NIST-calculated', NULL, 1030.43311), +(267, 'MEG', 413.15, 0.134957349, 5.26316E-6, 'Perry1998', NULL, 1022.154008), +(268, 'MEG', 423.15, 0.2012236, 3.48092E-4, 'NIST-calculated', NULL, 1013.73045), +(269, 'MEG', 433.15, 0.293230031, 5.26316E-6, 'Perry1998', NULL, 1005.154392), +(270, 'MEG', 443.15, 0.418314339, 5.62504E-4, 'NIST-calculated', NULL, 996.4170427), +(271, 'MEG', 453.15, 0.585078549, 5.26316E-6, 'Perry1998', NULL, 987.5087568), +(272, 'MEG', 463.15, 0.80340948, 8.83019E-4, 'NIST-calculated', NULL, 978.4189198), +(273, 'MEG', 473.15, 1.084459805, 0.001349573, 'NIST-calculated', NULL, 969.1358073), +(274, 'MEG', 483.15, 1.440587659, 5.26316E-6, 'Perry1998', NULL, 959.6464176), +(275, 'MEG', 493.15, 1.885254726, 0.002012236, 'NIST-calculated', NULL, 949.9362723), +(276, 'MEG', 503.15, 2.432884663, 5.26316E-6, 'Perry1998', NULL, 939.9891732), +(277, 'MEG', 513.15, 3.098685423, 0.0029323, 'NIST-calculated', NULL, 929.786908), +(278, 'MEG', 523.15, 3.898440543, 0.004183143, 'NIST-calculated', NULL, 919.3088866), +(279, 'MEG', 533.15, 4.848275592, 5.26316E-6, 'Perry1998', NULL, 908.531691), +(280, 'MEG', 543.15, 5.964406745, 0.005850785, 'NIST-calculated', NULL, 897.4285094), +(281, 'MEG', 553.15, 7.26287888, 0.008034095, 'NIST-calculated', NULL, 885.9684185), +(282, 'MEG', 563.15, 8.759300643, 5.26316E-6, 'Perry1998', NULL, 874.1154591), +(283, 'MEG', 573.15, 10.46858367, 0.010844598, 'NIST-calculated', NULL, 861.8274309), +(284, 'MEG', 583.15, 12.40469266, 0.014405877, 'NIST-calculated', NULL, 849.0542929), +(285, 'MEG', 593.15, 14.58041223, 0.018852547, 'NIST-calculated', NULL, 835.7360017), +(286, 'MEG', 603.15, 17.00713562, 0.024328847, 'NIST-calculated', NULL, 821.7995278); +INSERT INTO PUBLIC.PURECOMPONENTVAPOURPRESSURES2(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, LIQUIDDENSITY) VALUES +(287, 'MEG', 613.15, 19.6946794, 0.030986854, 'NIST-calculated', NULL, 807.1546374), +(288, 'MEG', 623.15, 22.65112713, 0.038984405, 'NIST-calculated', NULL, 791.6877554), +(289, 'MEG', 633.15, 25.88270416, 0.048482756, 'NIST-calculated', NULL, 775.2527363), +(290, 'MEG', 643.15, 29.3936846, 0.059644067, 'NIST-calculated', NULL, 757.6564166), +(291, 'MEG', 653.15, 33.18633064, 0.072628789, 'NIST-calculated', NULL, 738.6348639), +(292, 'MEG', 663.15, 37.26086365, 0.087593006, 'NIST-calculated', NULL, 717.811861), +(293, 'MEG', 673.15, 41.61546566, 0.104685837, 'NIST-calculated', NULL, 694.6203407), +(294, 'MEG', 683.15, 46.24630944, 0.124046927, 'NIST-calculated', NULL, 668.1368683), +(295, 'MEG', 693.15, 51.14761467, 0.145804122, 'NIST-calculated', NULL, 636.6746007), +(296, 'MEG', 703.15, 56.31172772, 0.170071356, 'NIST-calculated', NULL, 596.5000966), +(297, 'MEG', 713.15, 61.7292219, 0.196946794, 'NIST-calculated', NULL, 535.1256432), +(318, 'S8', 456.95, 0.001315789, 1.31579E-5, 'Perry1998', 0.0, 0.0), +(319, 'S8', 496.15, 0.006578947, 6.57895E-5, 'Perry1999', 0.0, 0.0), +(320, 'S8', 516.95, 0.013157895, 1.31579E-4, 'Perry2000', 0.0, 0.0), +(321, 'S8', 537.85, 0.026315789, 2.63158E-4, 'Perry2001', 0.0, 0.0), +(322, 'S8', 561.45, 0.052631579, 5.26316E-4, 'Perry2002', 0.0, 0.0), +(323, 'S8', 578.65, 0.078947368, 7.89474E-4, 'Perry2003', 0.0, 0.0), +(324, 'S8', 600.35, 0.131578947, 0.001315789, 'Perry2004', 0.0, 0.0), +(325, 'S8', 632.85, 0.263157895, 0.002631579, 'Perry2005', 0.0, 0.0), +(326, 'S8', 672.75, 0.526315789, 0.005263158, 'Perry2006', 0.0, 0.0), +(327, 'S8', 717.75, 1.0, 0.01, 'Perry2007', 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.PURECOMPONENTVISCOSITY( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + VISCOSITY DOUBLE DEFAULT '0', + STDDEV DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + PHASETYPE VARCHAR(50) DEFAULT NULL, + COMMENT VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.PURECOMPONENTVISCOSITY ADD CONSTRAINT PUBLIC.CONSTRAINT_21 PRIMARY KEY(ID); +-- 22 +/- SELECT COUNT(*) FROM PUBLIC.PURECOMPONENTVISCOSITY; +INSERT INTO PUBLIC.PURECOMPONENTVISCOSITY(ID, COMPONENTNAME, VISCOSITY, STDDEV, TEMPERATURE, PRESSURE, PHASETYPE, COMMENT, REFERENCE) VALUES +(1, 'MDEA', 102.7, 0.1, 293.1, 1.01325, '2', 'visk in mPa*s', '10'), +(2, 'MDEA', 57.95, 0.1, 302.8, 1.01325, '2', 'visk in mPa*s', '10'), +(3, 'MDEA', 34.02, 0.1, 313.2, 1.01325, '2', 'visk in mPa*s', '10'), +(4, 'MDEA', 21.5, 0.1, 323.2, 1.01325, '2', 'visk in mPa*s', '10'), +(5, 'MDEA', 11.88, 0.1, 338.1, 1.01325, '2', 'visk in mPa*s', '10'), +(6, 'MDEA', 7.151, 0.1, 353.2, 1.01325, '2', 'visk in mPa*s', '10'), +(7, 'MDEA', 3.987, 0.1, 374.0, 1.01325, '2', 'visk in mPa*s', '10'), +(8, 'MDEA', 2.504, 0.1, 394.0, 1.01325, '2', 'visk in mPa*s', '10'), +(9, 'MDEA', 1.679, 0.1, 414.0, 1.01325, '2', 'visk in mPa*s', '10'), +(10, 'MDEA', 1.406, 0.1, 424.1, 1.01325, '2', 'visk in mPa*s', '10'), +(11, 'water', 1.75, 0.1, 273.15, 1.01325, '2', NULL, '22'), +(12, 'water', 1.652, 0.1, 275.0, 1.01325, '2', NULL, '22'), +(13, 'water', 0.631, 0.1, 315.0, 1.01325, '2', NULL, '22'), +(14, 'water', 0.577, 0.1, 320.0, 1.01325, '2', NULL, '22'), +(15, 'water', 0.489, 0.1, 330.0, 1.01325, '2', NULL, '22'), +(16, 'water', 0.42, 0.1, 340.0, 1.01325, '2', NULL, '22'), +(17, 'water', 0.365, 0.1, 350.0, 1.01325, '2', NULL, '22'), +(18, 'water', 0.324, 0.1, 360.0, 1.01325, '2', NULL, '22'), +(19, 'water', 0.289, 0.1, 370.0, 1.01325, '2', NULL, '22'), +(22, 'water', 1.08, 0.1, 290.0, 1.01325, '2', NULL, '22'), +(23, 'water', 0.855, 0.1, 300.0, 1.01325, '2', NULL, NULL), +(24, 'water', 1.225, 0.1, 285.0, 1.01325, '2', NULL, '22'); +CREATE CACHED TABLE PUBLIC.REACTIONDATA( + ID INT NOT NULL, + INDEX DOUBLE DEFAULT NULL, + NAME VARCHAR(255) DEFAULT NULL, + K1 DOUBLE DEFAULT NULL, + K2 DOUBLE DEFAULT NULL, + K3 DOUBLE DEFAULT NULL, + K4 DOUBLE DEFAULT NULL, + TREF DOUBLE DEFAULT NULL, + R DOUBLE DEFAULT NULL, + ACTENERGY DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL, + USEREACTION INT DEFAULT '0' +); +ALTER TABLE PUBLIC.REACTIONDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_23 PRIMARY KEY(ID); +-- 36 +/- SELECT COUNT(*) FROM PUBLIC.REACTIONDATA; +INSERT INTO PUBLIC.REACTIONDATA(ID, INDEX, NAME, K1, K2, K3, K4, TREF, R, ACTENERGY, REFERENCE, USEREACTION) VALUES +(25, 2.0, 'CO2water', 231.465, -12092.1, -36.7816, 0.0, 298.15, 0.003, 50.0, 'Posey1996', 1), +(26, 3.0, 'waterreac', 132.899, -13445.9, -22.4773, 0.0, 298.15, 0.003, 10.0, 'Posey1996', 1), +(27, 5.0, 'MDEAprot', -56.2, -4044.8, 7.848, 0.0, 298.15, 0.003, 50.0, 'Austgen1989', 1), +(28, 6.0, 'carbonate', 216.049, -12431.7, -35.4819, 0.0, 298.15, 0.003, 50.0, 'Posey1996', 1), +(30, 8.0, 'water-H2S', 214.582, -12995.4, -33.5471, 0.0, 298.15, 0.003, 50.0, 'Solbraa2002', 1), +(31, 9.0, 'water-HS', -32.0, -3338.0, 0.0, 0.0, 298.15, 0.003, 50.0, 'Solbraa2002', 0), +(32, 14.0, 'Acetate', -23.119, 7937.66, 3.8273, 0.0, 298.15, 0.003, 50.0, 'Statoil', 0), +(33, 17.0, 'dimerization', -16.641, 6949.2, 0.0, 0.0, 298.15, 0.003, 50.0, 'Bamberger', 0), +(34, 15.0, 'MDEACO2S', 287.665, -8047.3, -44.6296, 0.0, 298.15, 0.003, 50.0, 'Solbraa2002', 0), +(35, 18.0, 'MDEACO2Acetate', 287.665, -8047.3, -44.6296, 0.0, 298.15, 0.003, 50.0, 'Neeraj', 0), +(36, 19.0, 'MDEAAcid', 165.9799, -1463.4385, -26.5, 0.0, 298.15, 0.003, 50.0, 'Neeraj', 0), +(37, 20.0, 'MDEAAcidCH4', 165.9799, -1463.4385, -26.5, 0.0, 298.15, 0.003, 50.0, 'Neeraj', 0), +(38, 21.0, 'MDEACO2CH4', 287.665, -8047.3, -44.6296, 0.0, 298.15, 0.003, 50.0, 'Solbraa2002', 0), +(39, 10.0, 'PiperazineCO21', 98.5, 1354.0, -14.3, 0.0, 298.15, 0.003, 50.0, 'Bishnoi2002', 0), +(40, 11.0, 'PiperazineCO22', 127.936, -3731.8, -22.48, 0.0, 298.15, 0.003, 50.0, 'Bishnoi2002', 0), +(41, 24.0, 'PiperazineCO23', -174.483, 22734.2, 22.48, 0.0, 298.15, 0.003, 50.0, 'Bishnoi2002', 0), +(42, 25.0, 'PiperazineCO24', 145.941, -9484.4, -22.48, 0.0, 298.15, 0.003, 50.0, 'Bishnoi2002', 0), +(43, 26.0, 'PiperazineCO25', -177.6, 22734.2, 22.48, 0.0, 298.15, 0.003, 50.0, 'Bishnoi2002', 0), +(44, 27.0, 'MDEACO2CH4P', 287.665, -8047.3, -44.6296, 0.0, 298.15, 0.003, 50.0, 'Solbraa2002', 0), +(45, 22.0, 'PiperazineCO21', 89.18427303, 1805.9, -12.9127, 0.0, 298.15, 0.003, 50.0, 'PSK', 0), +(46, 23.0, 'PiperazineCO22', 202.115727, -10962.9, -31.4503, 0.0, 298.15, 0.003, 50.0, 'PSK', 0), +(47, 24.0, 'PiperazineCO23', 84.56554605, 5422.0, -12.9127, 0.0, 298.15, 0.003, 50.0, 'PSK', 0), +(48, 25.0, 'PiperazineCO24', 146.941727, -9952.8, -22.4773, 0.0, 298.15, 0.003, 50.0, 'PSK', 0), +(49, 26.0, 'PiperazineCO25', 89.54554605, 3128.2, -12.9127, 0.0, 298.15, 0.003, 50.0, 'PSK', 0), +(50, 28.0, 'MDEACO21', 210.161, -12329.4, -32.5373, 0.0, 298.15, 0.003, 50.0, 'Procede', 0), +(51, 29.0, 'MDEACO22', 98.566, 1353.8, -14.3043, 0.0, 298.15, 0.003, 50.0, 'Procede', 0), +(52, 30.0, 'MDEACO23', 83.15, 1014.2, -13.0046, 0.0, 298.15, 0.003, 50.0, 'Procede', 0), +(53, 5.0, 'MDEAprot', -77.262, -1116.5, 10.06, 0.0, 298.15, 0.003, 50.0, 'Huttenhuis2005', 0), +(55, 42.0, 'Sulfide', 81.683, 450.5, -11.0698, 0.0, 298.15, 0.003, 50.0, 'Austgen', 0), +(56, 43.0, 'Bisulfide', -164.899, 10107.9, 22.4773, 0.0, 298.15, 0.003, 50.0, 'Austgen', 0), +(59, 10.0, 'Piperazineprot', 18.135, 3814.4, 0.0, -0.015096, 298.15, 0.003, 50.0, 'Derks', 0), +(60, 44.0, 'Piperazinediprotonation', 14.134, 2192.3, 0.0, -0.017396, 298.15, 0.003, 50.0, 'Derks', 0), +(61, 45.0, 'Piperazinemonocarbamante', -4.6185, 3616.1, 0.0, 0.0, 298.15, 0.003, 50.0, 'Derks', 0), +(62, 46.0, 'Piperazinedicarbamate', 0.3615, 1322.3, 0.0, 0.0, 298.15, 0.003, 50.0, 'Derks', 0), +(63, 47.0, 'Pzmonocarbamateprotonation', 14.042, 3493.1, 0.0, 0.0, 298.15, 0.003, 50.0, 'Derks', 0), +(65, 48.0, 'H2SMDEAsolbraa', 270.782, -8950.6, -41.3951, 0.0, 298.15, 0.003, 50.0, 'Solbraa2011', 0); +CREATE CACHED TABLE PUBLIC.REACTIONDATAKENTEISENBERG( + ID INT NOT NULL, + INDEX DOUBLE DEFAULT NULL, + NAME VARCHAR(255) DEFAULT NULL, + K1 DOUBLE DEFAULT NULL, + K2 DOUBLE DEFAULT NULL, + K3 DOUBLE DEFAULT NULL, + K4 DOUBLE DEFAULT NULL, + TREF DOUBLE DEFAULT NULL, + R DOUBLE DEFAULT NULL, + ACTENERGY DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL, + USEREACTION INT DEFAULT '0' +); +ALTER TABLE PUBLIC.REACTIONDATAKENTEISENBERG ADD CONSTRAINT PUBLIC.CONSTRAINT_12 PRIMARY KEY(ID); +-- 17 +/- SELECT COUNT(*) FROM PUBLIC.REACTIONDATAKENTEISENBERG; +INSERT INTO PUBLIC.REACTIONDATAKENTEISENBERG(ID, INDEX, NAME, K1, K2, K3, K4, TREF, R, ACTENERGY, REFERENCE, USEREACTION) VALUES +(1, 1.0, 'MDEACO2', 287.665, -8047.3, -44.6296, 0.0, 298.15, 0.003, 50.0, 'Solbraa2002', 0), +(2, 2.0, 'CO2water', 231.465, -12092.1, -36.7816, 0.0, 298.15, 0.003, 50.0, 'Posey1996', 1), +(3, 3.0, 'waterreac', 132.899, -13445.9, -22.4773, 0.0, 298.15, 0.003, 10.0, 'Posey1996', 1), +(7, 5.0, 'MDEAprot', -56.2, -4044.8, 7.848, 0.0, 298.15, 0.003, 50.0, 'Austgen1989', 1), +(8, 6.0, 'carbonate', 216.049, -12431.7, -35.4819, 0.0, 298.15, 0.003, 50.0, 'Posey1996', 1), +(9, 7.0, 'CO2-OH', 231.465, -12092.1, -36.7816, 0.0, 298.15, 0.003, 50.0, 'Solbraa2002', 0), +(10, 8.0, 'water-H2S', 214.582, -12995.4, -33.5471, 0.0, 298.15, 0.003, 50.0, 'Solbraa2002', 0), +(11, 9.0, 'water-HS', -32.0, -3338.0, 0.0, 0.0, 298.15, 0.003, 50.0, 'Solbraa2002', 0), +(12, 10.0, 'Piperazineprot', -11.91, -4351.0, 0.0, 0.0, 298.15, 0.003, 50.0, 'Pagano1961', 1), +(13, 11.0, 'PiperazineCarbamate', -29.31, 5615.0, 0.0, 0.0, 298.15, 0.003, 50.0, 'Bishnoi2000', 1), +(14, 12.0, 'PiperazineCarbamate2', -8.21, -5286.0, 0.0, 0.0, 298.15, 0.003, 50.0, 'Bishnoi2000', 1), +(15, 13.0, 'PiperazineCarbamate3', -44.7, 9288.2, 0.0, 0.0, 298.15, 0.003, 50.0, 'Bishnoi2000', 1), +(16, 14.0, 'Acetate', -680.51, 36438.0, 107.06, -0.12341, 298.15, 0.003, 50.0, 'Kaasa1998', 0), +(17, 17.0, 'Piperazineprot2', 6.096726973, 2192.3, 0.0, -1.7396, 298.15, 0.003, 50.0, 'Kamps2003newRefState', 1), +(19, 11.0, 'PiperazineCarbamate', 218.808727, 15704.08373, -36.7816, 0.0, 298.15, 0.003, 50.0, 'Kamps2003newRefState', 0), +(20, 12.0, 'PiperazineCarbamate2', 223.793727, -10769.8, -36.7816, 0.0, 298.15, 0.003, 50.0, 'Kamps2003newRefState', 0), +(21, 13.0, 'PiperazineCarbamate3', -6.009726973, -3493.1, 0.0, 0.0, 298.15, 0.003, 50.0, 'Kamps2003newRefState', 0); +CREATE CACHED TABLE PUBLIC.REACTIONKSPDATA( + ID INT NOT NULL, + INDEX DOUBLE DEFAULT NULL, + NAME VARCHAR(255) DEFAULT NULL, + K1 DOUBLE DEFAULT NULL, + K2 DOUBLE DEFAULT NULL, + K3 DOUBLE DEFAULT NULL, + K4 DOUBLE DEFAULT NULL, + TREF DOUBLE DEFAULT NULL, + R DOUBLE DEFAULT NULL, + ACTENERGY DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.REACTIONKSPDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_39 PRIMARY KEY(ID); +-- 1 +/- SELECT COUNT(*) FROM PUBLIC.REACTIONKSPDATA; +INSERT INTO PUBLIC.REACTIONKSPDATA(ID, INDEX, NAME, K1, K2, K3, K4, TREF, R, ACTENERGY, REFERENCE) VALUES +(24, 18.0, 'KspCaCO3', 3044.27, -170410.0, -475.704, 0.376097, 298.15, 0.003, 50.0, 'Kaasa1998'); +CREATE CACHED TABLE PUBLIC.SALTDENS( + ID INT NOT NULL, + ION1 VARCHAR(255) DEFAULT NULL, + ION2 VARCHAR(255) DEFAULT NULL, + SOLVENT VARCHAR(255) DEFAULT NULL, + WTPR DOUBLE DEFAULT NULL, + DENSITY DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + MOLFRAC1 DOUBLE DEFAULT NULL, + MOLFRAC2 DOUBLE DEFAULT NULL, + MOLALITY DOUBLE DEFAULT NULL +); +ALTER TABLE PUBLIC.SALTDENS ADD CONSTRAINT PUBLIC.CONSTRAINT_A2 PRIMARY KEY(ID); +-- 9 +/- SELECT COUNT(*) FROM PUBLIC.SALTDENS; +INSERT INTO PUBLIC.SALTDENS(ID, ION1, ION2, SOLVENT, WTPR, DENSITY, TEMPERATURE, PRESSURE, MOLFRAC1, MOLFRAC2, MOLALITY) VALUES +(1, 'Na+', 'Cl-', 'water', 1.0, 1.00409, 298.15, 1.01325, 0.00310498002956796, 0.00310498002956796, 0.172307437822861), +(2, 'Na+', 'Cl-', 'water', 2.0, 1.01112, 298.15, 1.01325, 0.00625351369734659, 0.00625351369734659, 0.347031836700699), +(3, 'Na+', 'Cl-', 'water', 4.0, 1.0253, 298.15, 1.01325, 0.0126849596643624, 0.0126849596643624, 0.703937828211012), +(4, 'Na+', 'Cl-', 'water', 8.0, 1.05412, 298.15, 1.01325, 0.0261129144447021, 0.0261129144447021, 1.44910734987248), +(5, 'Na+', 'Cl-', 'water', 12.0, 1.08365, 298.15, 1.01325, 0.0403511129025035, 0.0403511129025035, 2.23924044963948), +(6, 'Na+', 'Cl-', 'water', 16.0, 1.11401, 298.15, 1.01325, 0.0554751716282363, 0.0554751716282363, 3.07853338669458), +(7, 'Na+', 'Cl-', 'water', 20.0, 1.14533, 298.15, 1.01325, 0.0715704186194297, 0.0715704186194297, 3.9717213440305), +(8, 'Na+', 'Cl-', 'water', 24.0, 1.17776, 298.15, 1.01325, 0.0887335040378176, 0.0887335040378176, 4.92416781563916), +(9, 'Na+', 'Cl-', 'water', 26.0, 1.19443, 298.15, 1.01325, 0.0977492551762124, 0.0977492551762124, 5.42448696871323); +CREATE CACHED TABLE PUBLIC.SLEIPNER( + ID VARCHAR(50) DEFAULT NULL, + PRESSURE VARCHAR(50) DEFAULT NULL, + TEMPERATURE VARCHAR(50) DEFAULT NULL, + X1 VARCHAR(50) DEFAULT NULL, + X2 VARCHAR(50) DEFAULT NULL, + X3 VARCHAR(50) DEFAULT NULL, + X4 VARCHAR(50) DEFAULT NULL +); +-- 55 +/- SELECT COUNT(*) FROM PUBLIC.SLEIPNER; +INSERT INTO PUBLIC.SLEIPNER(ID, PRESSURE, TEMPERATURE, X1, X2, X3, X4) VALUES +('46', '1.1', '338.16', '0.033836275', '0.875939942', '0.0030034', '0.087220383'), +('151', '1.1', '338.16', '0.032531003', '0.883772818', '0.003509329', '0.08018685'), +('160', '1.1', '338.16', '0.033361888', '0.873020691', '0.004007193', '0.089610228'), +('114', '1.1', '338.16', '0.035567754', '0.851281232', '0.005121474', '0.108029539'), +('132', '1.1', '338.16', '0.034812818', '0.861129763', '0.004318654', '0.099738764'), +('47', '1.2', '338.16', '0.035528339', '0.874642945', '0.002428129', '0.087400587'), +('115', '1.2', '338.16', '0.037316554', '0.850065513', '0.005085488', '0.107532445'), +('152', '1.2', '338.16', '0.033804843', '0.881761364', '0.003531932', '0.080901861'), +('161', '1.2', '338.16', '0.034941217', '0.871897076', '0.004000929', '0.089160778'), +('133', '1.2', '338.16', '0.038103629', '0.852436952', '0.004776243', '0.104683176'), +('48', '1.3', '338.16', '0.036928195', '0.872671787', '0.002815656', '0.087584363'), +('153', '1.3', '338.16', '0.034822322', '0.881883768', '0.003455497', '0.079838413'), +('162', '1.3', '338.16', '0.036339533', '0.862086823', '0.012335558', '0.089238086'), +('116', '1.3', '338.16', '0.039023005', '0.848758502', '0.004953204', '0.107265289'), +('134', '1.3', '338.16', '0.038446341', '0.858718483', '0.004194111', '0.098641065'), +('54', '1.1', '340.66', '0.029382608', '0.879817507', '0.003225394', '0.087574491'), +('148', '1.1', '340.66', '0.029809718', '0.885122259', '0.003573945', '0.081494077'), +('172', '1.1', '340.66', '0.031317909', '0.851680028', '0.005268113', '0.11173395'), +('111', '1.1', '340.66', '0.030935688', '0.849936956', '0.004896535', '0.114230822'), +('157', '1.1', '340.66', '0.030455995', '0.874891527', '0.004109339', '0.090543138'), +('135', '1.1', '340.66', '0.031684789', '0.859067335', '0.004763825', '0.104484051'), +('39', '1.2', '340.66', '0.031619735', '0.866896261', '0.003066002', '0.098418001'), +('149', '1.2', '340.66', '0.031486187', '0.883726524', '0.003610123', '0.081177166'), +('158', '1.2', '340.66', '0.032034268', '0.871668976', '0.00416749', '0.092129267'), +('51', '1.2', '340.66', '0.031794308', '0.870766336', '0.005468547', '0.091970808'), +('112', '1.2', '340.66', '0.032573503', '0.848852334', '0.005156674', '0.113417489'), +('136', '1.2', '340.66', '0.033025673', '0.854399322', '0.004887276', '0.107687729'), +('40', '1.3', '340.66', '0.033786157', '0.86413199', '0.003508089', '0.098573764'), +('150', '1.3', '340.66', '0.033169613', '0.881241728', '0.003625641', '0.081963017'), +('159', '1.3', '340.66', '0.033705695', '0.869690768', '0.004180671', '0.092422866'), +('52', '1.3', '340.66', '0.03301597', '0.873353186', '0.003299875', '0.09033097'), +('113', '1.3', '340.66', '0.034733923', '0.847011584', '0.005126468', '0.113128024'), +('137', '1.3', '340.66', '0.034643562', '0.855778555', '0.004695918', '0.104881965'), +('117', '1.1', '343.16', '0.027298297', '0.852838411', '0.005457787', '0.114405505'), +('126', '1.1', '343.16', '0.028200021', '0.859970771', '0.004576247', '0.107252961'), +('154', '1.1', '343.16', '0.027083303', '0.872563412', '0.01015979', '0.090193495'), +('166', '1.1', '343.16', '0.0271407', '0.87510166', '0.003906883', '0.093850756'), +('169', '1.1', '343.16', '0.027511809', '0.847776849', '0.015783882', '0.10892746'), +('138', '1.1', '343.16', '0.026687699', '0.8847098', '0.003693655', '0.084908845'), +('32', '1.2', '343.16', '0.029799397', '0.857883795', '0.002965235', '0.109351573'), +('118', '1.2', '343.16', '0.028793178', '0.84882338', '0.007742664', '0.114640779'), +('127', '1.2', '343.16', '0.02979922', '0.854745714', '0.011487374', '0.103967692'), +('167', '1.2', '343.16', '0.028786619', '0.87490354', '0.00388804', '0.092421802'), +('155', '1.2', '343.16', '0.028565422', '0.875826279', '0.004099386', '0.091508913'), +('170', '1.2', '343.16', '0.029470431', '0.855689427', '0.00522759', '0.109612552'), +('139', '1.2', '343.16', '0.02814222', '0.883589339', '0.003668352', '0.084600089'), +('142', '1.2', '343.16', '0.02804608', '0.884600229', '0.003466274', '0.083887417'), +('143', '1.3', '343.16', '0.029710947', '0.882541305', '0.003640324', '0.084107424'); +INSERT INTO PUBLIC.SLEIPNER(ID, PRESSURE, TEMPERATURE, X1, X2, X3, X4) VALUES +('119', '1.3', '343.16', '0.030892473', '0.847811673', '0.005285215', '0.116010639'), +('156', '1.3', '343.16', '0.030139441', '0.876253781', '0.004036685', '0.089570094'), +('128', '1.3', '343.16', '0.031829071', '0.858205363', '0.004497952', '0.105467614'), +('171', '1.3', '343.16', '0.030954085', '0.8549818', '0.005289175', '0.10877494'), +('168', '1.3', '343.16', '0.030594433', '0.873563272', '0.003931241', '0.091911055'), +('140', '1.3', '343.16', '0.029547093', '0.881637541', '0.003665242', '0.085150124'), +('143', '1.3', '343.16', '0.029710947', '0.882541305', '0.003640324', '0.084107424'); +CREATE CACHED TABLE PUBLIC.SOLIDVAPOURPRESSURE( + ID INT NOT NULL, + COMPONENTNAME VARCHAR(50) DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + VAPOURPRESSURE DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT '0', + REFERENCE VARCHAR(200) DEFAULT NULL, + GASDENSITY DOUBLE DEFAULT '0', + SOLIDDENSITY DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.SOLIDVAPOURPRESSURE ADD CONSTRAINT PUBLIC.CONSTRAINT_C1 PRIMARY KEY(ID); +-- 11 +/- SELECT COUNT(*) FROM PUBLIC.SOLIDVAPOURPRESSURE; +INSERT INTO PUBLIC.SOLIDVAPOURPRESSURE(ID, COMPONENTNAME, TEMPERATURE, VAPOURPRESSURE, STANDARDDEVIATION, REFERENCE, GASDENSITY, SOLIDDENSITY) VALUES +(12, 'water', 273.16, 0.006113, 6.113E-5, 'Perry1998', 0.00485045, 917.0), +(13, 'water', 273.15, 0.006108, 6.108E-5, 'Perry1998', 0.00484666, 917.02), +(14, 'water', 271.15, 0.005176, 5.176E-5, 'Perry1998', 0.004137418, 917.04), +(15, 'water', 269.15, 0.004375, 4.375E-5, 'Perry1998', 0.003523128, 917.06), +(16, 'water', 267.15, 0.003689, 3.689E-5, 'Perry1998', 0.002992942, 917.08), +(17, 'water', 265.15, 0.003102, 3.102E-5, 'Perry1998', 0.002535683, 917.1), +(18, 'water', 255.15, 0.001252, 1.252E-5, 'Perry1998', 0.001063539, 917.12), +(19, 'water', 253.15, 0.001035, 1.035E-5, 'Perry1998', 8.8615E-4, 917.14), +(20, 'water', 243.15, 3.81E-4, 3.81E-6, 'Perry1998', 3.39622E-4, 917.16), +(21, 'water', 233.15, 1.29E-4, 1.29E-6, 'Perry1998', 1.19922E-4, 917.18), +(22, 'S8', 0.0, 0.0, 0.0, NULL, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.STOCCOEFDATA( + ID INT NOT NULL, + REACINDEX DOUBLE DEFAULT NULL, + REACNAME VARCHAR(255) DEFAULT NULL, + COMPNAME VARCHAR(255) DEFAULT NULL, + STOCCOEF DOUBLE DEFAULT NULL +); +ALTER TABLE PUBLIC.STOCCOEFDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_86 PRIMARY KEY(ID); +-- 129 +/- SELECT COUNT(*) FROM PUBLIC.STOCCOEFDATA; +INSERT INTO PUBLIC.STOCCOEFDATA(ID, REACINDEX, REACNAME, COMPNAME, STOCCOEF) VALUES +(69, 2.0, 'CO2water', 'water', -2.0), +(70, 2.0, 'CO2water', 'CO2', -1.0), +(71, 2.0, 'CO2water', 'HCO3-', 1.0), +(72, 3.0, 'waterreac', 'water', -2.0), +(73, 3.0, 'waterreac', 'OH-', 1.0), +(74, 3.0, 'waterreac', 'H3O+', 1.0), +(75, 2.0, 'CO2water', 'H3O+', 1.0), +(76, 5.0, 'MDEAprot', 'MDEA+', -1.0), +(77, 5.0, 'MDEAprot', 'water', -1.0), +(78, 5.0, 'MDEAprot', 'MDEA', 1.0), +(79, 5.0, 'MDEAprot', 'H3O+', 1.0), +(80, 6.0, 'carbonate', 'H3O+', 1.0), +(81, 6.0, 'carbonate', 'CO3--', 1.0), +(82, 6.0, 'carbonate', 'HCO3-', -1.0), +(83, 6.0, 'carbonate', 'water', -1.0), +(84, 7.0, 'CO2-OH', 'HCO3-', 1.0), +(85, 7.0, 'CO2-OH', 'CO2', -1.0), +(86, 7.0, 'CO2-OH', 'OH-', -1.0), +(87, 8.0, 'water-H2S', 'H2S', -1.0), +(88, 8.0, 'water-H2S', 'water', -1.0), +(89, 8.0, 'water-H2S', 'HS-', 1.0), +(90, 8.0, 'water-H2S', 'H3O+', 1.0), +(91, 9.0, 'water-HS', 'HS-', -1.0), +(92, 9.0, 'water-HS', 'water', -1.0), +(93, 9.0, 'water-HS', 'S--', 1.0), +(94, 9.0, 'water-HS', 'H3O+', 1.0), +(95, 10.0, 'Piperazineprot', 'Piperazine+', 1.0), +(96, 10.0, 'Piperazineprot', 'water', 1.0), +(97, 10.0, 'Piperazineprot', 'H3O+', -1.0), +(98, 10.0, 'Piperazineprot', 'Piperazine', -1.0), +(99, 11.0, 'PiperazineCarbamate', 'Piperazine', -1.0), +(100, 11.0, 'PiperazineCarbamate', 'CO2', -1.0), +(101, 11.0, 'PiperazineCarbamate', 'water', -1.0), +(102, 11.0, 'PiperazineCarbamate', 'H3O+', 1.0), +(103, 11.0, 'PiperazineCarbamate', 'PZCOO-', 1.0), +(104, 12.0, 'Piperazineprot2', 'water', -1.0), +(105, 12.0, 'Piperazineprot2', 'H+PZCOO-', -1.0), +(106, 12.0, 'Piperazineprot2', 'H3O+', 1.0), +(107, 12.0, 'Piperazineprot2', 'PZCOO-', 1.0), +(108, 13.0, 'Piperazineprot3', 'PZCOO-', -1.0), +(109, 13.0, 'Piperazineprot3', 'CO2', -1.0), +(110, 13.0, 'Piperazineprot3', 'water', -1.0), +(111, 13.0, 'Piperazineprot3', '-OOCPZCOO-', 1.0), +(112, 13.0, 'Piperazineprot3', 'H3O+', 1.0), +(113, 14.0, 'Acetate', 'AceticAcid', -1.0), +(114, 14.0, 'Acetate', 'water', 1.0), +(115, 14.0, 'Acetate', 'Ac-', 1.0), +(116, 14.0, 'Acetate', 'OH-', -1.0), +(117, 16.0, 'MDEACO2S', 'HCO3-', 1.0), +(118, 16.0, 'MDEACO2S', 'MDEA+', 1.0), +(119, 16.0, 'MDEAAcidS', 'CO2', 0.0), +(120, 16.0, 'MDEAAcidS', 'AceticAcid', -1.0), +(121, 15.0, 'MDEACO2S', 'CO2', -1.0), +(122, 16.0, 'MDEAAcidS', 'MDEA', -1.0), +(123, 16.0, 'MDEAAcidS', 'water', 0.0), +(124, 16.0, 'MDEACO2S', 'water', -1.0), +(125, 15.0, 'MDEACO2S', 'MDEA', -1.0), +(126, 18.0, 'MDEACO2Acetate', 'MDEA', -1.0), +(127, 18.0, 'MDEACO2Acetate', 'HCO3-', 1.0), +(128, 18.0, 'MDEACO2Acetate', 'MDEA+', 1.0), +(129, 18.0, 'MDEACO2Acetate', 'CO2', -1.0), +(130, 18.0, 'MDEACO2Acetate', 'water', -1.0), +(131, 18.0, 'MDEACO2Acetate', 'Ac-', 0.0), +(132, 19.0, 'MDEAAcid', 'MDEA', -1.0), +(133, 19.0, 'MDEAAcid', 'AceticAcid', -1.0), +(134, 19.0, 'MDEAAcid', 'Ac-', 1.0), +(135, 19.0, 'MDEAAcid', 'MDEA+', 1.0), +(136, 20.0, 'MDEAAcidCH4', 'MDEA', -1.0), +(137, 20.0, 'MDEAAcidCH4', 'HCO3-', 0.0), +(138, 20.0, 'MDEAAcidCH4', 'water', 0.0), +(139, 20.0, 'MDEAAcidCH4', 'CO2', 0.0), +(140, 20.0, 'MDEAAcidCH4', 'Ac-', 1.0), +(141, 20.0, 'MDEAAcidCH4', 'MDEA+', 1.0), +(142, 20.0, 'MDEAAcidCH4', 'AceticAcid', -1.0), +(143, 20.0, 'MDEAAcidCH4', 'Methane', 0.0), +(144, 21.0, 'MDEACO2CH4', 'AceticAcid', 0.0), +(145, 21.0, 'MDEACO2CH4', 'water', -1.0), +(146, 21.0, 'MDEACO2CH4', 'CO2', -1.0), +(147, 21.0, 'MDEACO2CH4', 'Ac-', 0.0), +(148, 21.0, 'MDEACO2CH4', 'MDEA+', 1.0), +(149, 21.0, 'MDEACO2CH4', 'MDEA', -1.0), +(150, 21.0, 'MDEACO2CH4', 'HCO3-', 1.0), +(151, 21.0, 'MDEACO2CH4', 'Methane', 0.0), +(153, 22.0, 'PiperazineCO22', 'Piperazine+', 1.0), +(156, 22.0, 'PiperazineCO22', 'Piperazine', -1.0), +(158, 22.0, 'PiperazineCO22', 'water', -1.0), +(160, 23.0, 'PiperazineCO23', 'CO2', -1.0), +(161, 23.0, 'PiperazineCO23', 'water', 1.0), +(162, 23.0, 'PiperazineCO23', 'Piperazine', -1.0), +(165, 23.0, 'PiperazineCO23', 'PZCOO-', 1.0), +(172, 24.0, 'PiperazineCO24', 'OH-', 1.0), +(173, 24.0, 'PiperazineCO24', 'PZCOO-', -1.0), +(174, 24.0, 'PiperazineCO24', 'H+PZCOO-', 1.0), +(178, 25.0, 'PiperazineCO25', 'water', 1.0), +(179, 25.0, 'PiperazineCO25', 'CO2', -1.0), +(180, 25.0, 'PiperazineCO25', 'PZCOO-', -1.0); +INSERT INTO PUBLIC.STOCCOEFDATA(ID, REACINDEX, REACNAME, COMPNAME, STOCCOEF) VALUES +(183, 25.0, 'PiperazineCO25', '-OOCPZCOO-', 1.0), +(185, 22.0, 'PiperazineCO22', 'OH-', 1.0), +(186, 23.0, 'PiperazineCO23', 'OH-', -1.0), +(187, 24.0, 'PiperazineCO24', 'water', -1.0), +(188, 25.0, 'PiperazineCO25', 'OH-', -1.0), +(216, 42.0, 'Sulfide', 'H2S', -1.0), +(217, 42.0, 'Sulfide', 'OH-', -1.0), +(218, 42.0, 'Sulfide', 'water', 1.0), +(219, 42.0, 'Sulfide', 'HS-', 1.0), +(220, 43.0, 'Bisulfide', 'HS-', -1.0), +(221, 43.0, 'Bisulfide', 'OH-', -1.0), +(222, 43.0, 'Bisulfide', 'water', 1.0), +(223, 43.0, 'Bisulfide', 'S--', 1.0), +(224, 44.0, 'Piperazinediprotonation', 'water', -1.0), +(225, 44.0, 'Piperazinediprotonation', 'Piperazine++', -1.0), +(226, 44.0, 'Piperazinediprotonation', 'Piperazine+', 1.0), +(227, 44.0, 'Piperazinediprotonation', 'H3O+', 1.0), +(228, 45.0, 'Piperazinemonocarbamante', 'Piperazine', -1.0), +(229, 45.0, 'Piperazinemonocarbamante', 'HCO3-', -1.0), +(230, 45.0, 'Piperazinemonocarbamante', 'water', 1.0), +(231, 45.0, 'Piperazinemonocarbamante', 'PZCOO-', 1.0), +(232, 46.0, 'Piperazinedicarbamate', 'PZCOO-', -1.0), +(233, 46.0, 'Piperazinedicarbamate', 'HCO3-', -1.0), +(234, 46.0, 'Piperazinedicarbamate', 'water', 1.0), +(235, 46.0, 'Piperazinedicarbamate', '-OOCPZCOO-', 1.0), +(236, 47.0, 'Pzmonocarbamateprotonation', 'water', -1.0), +(237, 47.0, 'Pzmonocarbamateprotonation', 'H+PZCOO-', -1.0), +(238, 47.0, 'Pzmonocarbamateprotonation', 'PZCOO-', 1.0), +(239, 47.0, 'Pzmonocarbamateprotonation', 'H3O+', 1.0), +(240, 48.0, 'H2SMDEAsolbraa', 'MDEA', -1.0), +(241, 48.0, 'H2SMDEAsolbraa', 'H2S', -1.0), +(242, 48.0, 'H2SMDEAsolbraa', 'MDEA+', 1.0), +(243, 48.0, 'H2SMDEAsolbraa', 'HS-', 1.0); +CREATE CACHED TABLE PUBLIC.SYSTEMREPORT( + ID INT NOT NULL, + SPECIFICATION VARCHAR(50) DEFAULT NULL, + UNIT VARCHAR(50) DEFAULT NULL, + TOTAL DOUBLE DEFAULT '0', + PHASE1 DOUBLE DEFAULT '0', + PHASE2 DOUBLE DEFAULT '0', + PHASE3 DOUBLE DEFAULT '0' +); +ALTER TABLE PUBLIC.SYSTEMREPORT ADD CONSTRAINT PUBLIC.CONSTRAINT_95 PRIMARY KEY(ID); +-- 5 +/- SELECT COUNT(*) FROM PUBLIC.SYSTEMREPORT; +INSERT INTO PUBLIC.SYSTEMREPORT(ID, SPECIFICATION, UNIT, TOTAL, PHASE1, PHASE2, PHASE3) VALUES +(1, 'methane', 'molfrac[-] ', 0.694444444444444, 0.712817497760477, 0.0418187838025914, 0.0), +(2, 'ethane', 'molfrac[-] ', 0.277777777777778, 0.282777007694148, 0.100201102265472, 0.0), +(3, 'n-heptane', 'molfrac[-] ', 0.0277777777777778, 0.00440549454537502, 0.857980113931935, 0.0), +(5, 'PhaseFraction', '[-]', 1.0, 0.972618347943382, 0.0273816520566178, 0.0), +(6, 'MolarMass', 'kg/mol ', 0.0222770888888889, 0.0203801518808925, 0.0896578201557648, 0.0); +CREATE CACHED TABLE PUBLIC.TECHNICALREQUIREMENTS( + ID INT NOT NULL, + EQUIPMENTTYPE VARCHAR(255) DEFAULT NULL, + SPECIFICATION VARCHAR(255) DEFAULT NULL, + MINVALUE DOUBLE DEFAULT NULL, + MAXVALUE DOUBLE DEFAULT NULL, + UNIT VARCHAR(255) DEFAULT NULL, + COMPANY VARCHAR(255) DEFAULT NULL, + DOCUMENTID VARCHAR(255) DEFAULT NULL, + DESCRIPTION VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.TECHNICALREQUIREMENTS ADD CONSTRAINT PUBLIC.CONSTRAINT_69 PRIMARY KEY(ID); +-- 7 +/- SELECT COUNT(*) FROM PUBLIC.TECHNICALREQUIREMENTS; +INSERT INTO PUBLIC.TECHNICALREQUIREMENTS(ID, EQUIPMENTTYPE, SPECIFICATION, MINVALUE, MAXVALUE, UNIT, COMPANY, DOCUMENTID, DESCRIPTION) VALUES +(1, 'Gas scrubber', 'GasLoadFactor', 0.11, 0.11, '-', 'StatoilTR', 'TR1414', 'Maximum flow load on scrubbers'), +(2, 'Gas scrubber', 'FlowDesignFactor', 1.1, 1.1, '-', 'StatoilTR', 'TR1414', 'To be added to design flow rate'), +(3, 'Gas scrubber', 'LengthGasInletToMeshpad', 550.0, 550.0, 'mm', 'StatoilTR', 'TR1414', 'height from top of inlet pipe to meshpad'), +(4, 'Gas scrubber', 'LengthGasInletToHHLL', 500.0, 500.0, 'mm', 'StatoilTR', 'TR1414', 'lenght from inlet ditributor to high high liquid level'), +(5, 'Gas scrubber', 'LengthMeshPadToDemistingCyclone', 550.0, 550.0, 'mm', 'StatoilTR', 'TR1414', 'Distance from coaleshing mesh pad to demisting cyclones'), +(6, 'Adsorber Dehydration', 'MolecularSieve3AWaterCapacity', 15.0, 15.0, '%', '-', '-', 'Design water sturation during operation'), +(7, 'Pipeline', 'safetyFactor', 1.0, 1.15, '-', 'StatoilTR', 'TR5184', 'Design of pipelines in Statoil'); +CREATE CACHED TABLE PUBLIC.TECHNICALREQUIREMENTS_MATERIAL( + ID INT NOT NULL, + TYPE VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION1 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION2 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION3 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION4 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION5 VARCHAR(255) DEFAULT NULL +); +-- 3 +/- SELECT COUNT(*) FROM PUBLIC.TECHNICALREQUIREMENTS_MATERIAL; +INSERT INTO PUBLIC.TECHNICALREQUIREMENTS_MATERIAL(ID, TYPE, CODESPECIFICATION1, CODESPECIFICATION2, CODESPECIFICATION3, CODESPECIFICATION4, CODESPECIFICATION5) VALUES +(1, 'pressure vessel design code', 'ASME - Pressure Vessel Code', NULL, NULL, NULL, NULL), +(3, 'material plate design codes', 'Carbon Steel Plates and Sheets', 'SA-516', '55', '1', '13800'), +(4, 'material plate design codes', 'Carbon Steel Plates and Sheets', 'SA-516', '55', '2', '18300'); +CREATE CACHED TABLE PUBLIC.TECHNICALREQUIREMENTS_MECHANICAL( + ID INT NOT NULL, + TYPE VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION1 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION2 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION3 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION4 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION5 VARCHAR(255) DEFAULT NULL +); +-- 9 +/- SELECT COUNT(*) FROM PUBLIC.TECHNICALREQUIREMENTS_MECHANICAL; +INSERT INTO PUBLIC.TECHNICALREQUIREMENTS_MECHANICAL(ID, TYPE, CODESPECIFICATION1, CODESPECIFICATION2, CODESPECIFICATION3, CODESPECIFICATION4, CODESPECIFICATION5) VALUES +(1, 'pressure vessel design code', 'ASME - Pressure Vessel Code', NULL, NULL, NULL, NULL), +(3, 'material plate design codes', 'Carbon Steel Plates and Sheets', 'SA-516', '55', '1', NULL), +(4, 'material plate joint efficiency factor', 'Double-Welded Butt Joints', 'Fully radiagraphed', '1.0', NULL, NULL), +(5, 'material plate joint efficiency factor', 'Double-Welded Butt Joints', 'Spot radiographed', '0.85', NULL, NULL), +(6, 'material plate joint efficiency factor', 'Double-Welded Butt Joints', 'No radiograph', '0.7', NULL, NULL), +(7, 'material plate joint efficiency factor', 'Single Welded Butt Joint', 'Fully radiagraphed', '0.9', NULL, NULL), +(8, 'material plate joint efficiency factor', 'Single Welded Butt Joint', 'Spot radiographed', '0.8', NULL, NULL), +(9, 'material plate joint efficiency factor', 'Single Welded Butt Joint', 'No radiograph', '0.65', NULL, NULL), +(10, 'weight of nozzles', '150', '2', '10', NULL, NULL); +CREATE CACHED TABLE PUBLIC.TECHNICALREQUIREMENTS_PIPING( + ID INT NOT NULL, + TYPE VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION1 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION2 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION3 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION4 VARCHAR(255) DEFAULT NULL, + CODESPECIFICATION5 VARCHAR(255) DEFAULT NULL +); +-- 8 +/- SELECT COUNT(*) FROM PUBLIC.TECHNICALREQUIREMENTS_PIPING; +INSERT INTO PUBLIC.TECHNICALREQUIREMENTS_PIPING(ID, TYPE, CODESPECIFICATION1, CODESPECIFICATION2, CODESPECIFICATION3, CODESPECIFICATION4, CODESPECIFICATION5) VALUES +(1, 'pressure vessel design code', 'ASME - Pressure Vessel Code', NULL, NULL, NULL, NULL), +(3, 'material plate design codes', 'Carbon Steel Plates and Sheets', 'SA-516', '55', '1', NULL), +(4, 'pipe joint efficiency factor', 'Seamles', '1.9', NULL, NULL, NULL), +(5, 'pipe joint efficiency factor', 'Electrical Resistance Weld', '1.0', NULL, NULL, NULL), +(6, 'pipe joint efficiency factor', 'Double Submerged Arc Weld', '1.0', NULL, NULL, NULL), +(7, 'pipe temperature derating factor', 'ANSI/ASME Standard B31.8', '250', '1', NULL, NULL), +(8, 'pipe temperature derating factor', 'ANSI/ASME Standard B31.8', '300', '0.967', NULL, NULL), +(9, 'pipe temperature derating factor', 'ANSI/ASME Standard B31.8', '350', '0.933', NULL, NULL); +CREATE CACHED TABLE PUBLIC.TECHNICALREQUIREMENTS_PROCESS( + ID INT NOT NULL, + EQUIPMENTTYPE VARCHAR(255) DEFAULT NULL, + SPECIFICATION VARCHAR(255) DEFAULT NULL, + MINVALUE DOUBLE DEFAULT NULL, + MAXVALUE DOUBLE DEFAULT NULL, + UNIT VARCHAR(255) DEFAULT NULL, + COMPANY VARCHAR(255) DEFAULT NULL, + DOCUMENTID VARCHAR(255) DEFAULT NULL, + DESCRIPTION VARCHAR(255) DEFAULT NULL +); +-- 15 +/- SELECT COUNT(*) FROM PUBLIC.TECHNICALREQUIREMENTS_PROCESS; +INSERT INTO PUBLIC.TECHNICALREQUIREMENTS_PROCESS(ID, EQUIPMENTTYPE, SPECIFICATION, MINVALUE, MAXVALUE, UNIT, COMPANY, DOCUMENTID, DESCRIPTION) VALUES +(1, 'Gas scrubber', 'GasLoadFactor', 0.11, 0.11, '-', 'StatoilTR', 'TR1414', 'Maximum flow load on scrubbers'), +(2, 'Gas scrubber', 'FlowDesignFactor', 1.1, 1.1, '-', 'StatoilTR', 'TR1414', 'To be added to design flow rate'), +(3, 'Gas scrubber', 'LengthGasInletToMeshpad', 550.0, 550.0, 'mm', 'StatoilTR', 'TR1414', 'height from top of inlet pipe to meshpad'), +(4, 'Gas scrubber', 'LengthGasInletToHHLL', 500.0, 500.0, 'mm', 'StatoilTR', 'TR1414', 'lenght from inlet ditributor to high high liquid level'), +(5, 'Gas scrubber', 'LengthMeshPadToDemistingCyclone', 550.0, 550.0, 'mm', 'StatoilTR', 'TR1414', 'Distance from coaleshing mesh pad to demisting cyclones'), +(6, 'Adsorber Dehydration', 'MolecularSieve3AWaterCapacity', 15.0, 15.0, '%', '-', '-', 'Design water sturation during operation'), +(7, 'Pipeline', 'safetyFactor', 1.0, 1.15, '-', 'StatoilTR', 'TR5184', 'Design of pipelines in Statoil'), +(8, 'Compressor', 'compressorFactor', 1.0, 1.0, '-', 'StatoilTR', 'TR5184', 'Design of compressors'), +(9, 'Pipeline', 'ASTM', NULL, NULL, NULL, 'StatoilTR', NULL, NULL), +(10, 'Separator', 'GasLoadFactor', 0.122, 0.152, 'm/s', 'StatoilTR', NULL, 'Sizing constant'), +(11, 'Separator', 'Fg', 0.8, 0.8, '-', 'StatoilTR', NULL, 'Fraction of Cross Section Area for gas flow'), +(12, 'Separator', 'VolumetricDesignFactor', 1.0, 1.0, NULL, 'StatoilTR', NULL, 'Safety factor for Volume flow'), +(13, 'Separator', 'LiquidRecidenceTimeGasOilMidDens', 1.0, 2.0, 'min', 'StatoilTR', 'API12J', 'Liquid Recidense Time in separator'), +(16, 'Separator', 'LiquidRecidenceTimeGasOilHighDens', 2.0, 4.0, 'min', 'StatoilTR', 'API12J', 'Liquid Recidense Time in separator'), +(17, 'Separator', 'LiquidRecidenceTimeGasOilLowDens', 1.0, 1.0, 'min', 'StatoilTR', 'API12J', 'Liquid Recidense Time in separator'); +CREATE CACHED TABLE PUBLIC.TERNARYLIQUIDDIFFUSIONCOEFFICIENTDATA( + ID INT NOT NULL, + COMPONENTSOLUTE VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT1 VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT2 VARCHAR(50) DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + X3 DOUBLE DEFAULT '0', + TEMPERATURE DOUBLE DEFAULT '0', + PRESSURE DOUBLE DEFAULT '0', + DIFFUSIONCOEFFICIENT DOUBLE DEFAULT '0', + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 1 +/- SELECT COUNT(*) FROM PUBLIC.TERNARYLIQUIDDIFFUSIONCOEFFICIENTDATA; +INSERT INTO PUBLIC.TERNARYLIQUIDDIFFUSIONCOEFFICIENTDATA(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, TEMPERATURE, PRESSURE, DIFFUSIONCOEFFICIENT, REFERENCE) VALUES +(1, 'CO2', 'water', NULL, NULL, NULL, NULL, 298.0, 1.01325, 1.0E-9, 'unknown'); +CREATE CACHED TABLE PUBLIC.TERNARYSOLUTESOLUBILITYTABLE( + ID INT NOT NULL, + COMPONENTSOLUTE VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT1 VARCHAR(50) DEFAULT NULL, + COMPONENTSOLVENT2 VARCHAR(50) DEFAULT NULL, + X1 DOUBLE DEFAULT '0', + X2 DOUBLE DEFAULT '0', + X3 DOUBLE DEFAULT '0', + VAPOURPRESSURE1 DOUBLE DEFAULT '0', + VAPOURPRESSURE2 DOUBLE DEFAULT '0', + VAPOURPRESSURE3 DOUBLE DEFAULT '0', + STANDARDDEVIATION DOUBLE DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT '0', + REFERENCE VARCHAR(200) DEFAULT NULL +); +ALTER TABLE PUBLIC.TERNARYSOLUTESOLUBILITYTABLE ADD CONSTRAINT PUBLIC.CONSTRAINT_DC PRIMARY KEY(ID); +-- 34 +/- SELECT COUNT(*) FROM PUBLIC.TERNARYSOLUTESOLUBILITYTABLE; +INSERT INTO PUBLIC.TERNARYSOLUTESOLUBILITYTABLE(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, REFERENCE) VALUES +(148, 'CO2', 'MDEA', 'water', 9.49598093670475E-4, 0.0555320522614313, 0.943518349644898, 2.0E-4, 0.0, 0.0, 1.0E-5, 297.7, 'Lemoine2000'), +(149, 'CO2', 'MDEA', 'water', 0.00189739442521183, 0.0554793691582406, 0.942623236416548, 6.2E-4, 0.0, 0.0, 3.1E-5, 297.7, 'Lemoine2000'), +(150, 'CO2', 'MDEA', 'water', 0.00283786716853741, 0.0554270931354962, 0.941735039695966, 0.00114, 0.0, 0.0, 5.7E-5, 297.72, 'Lemoine2000'), +(151, 'CO2', 'MDEA', 'water', 0.00358897023902745, 0.055385343194868, 0.941025686566105, 0.00165, 0.0, 0.0, 8.25E-5, 297.71, 'Lemoine2000'), +(152, 'CO2', 'MDEA', 'water', 0.00471901181070437, 0.0553225300199809, 0.939958458169315, 0.00256, 0.0, 0.0, 1.28E-4, 297.71, 'Lemoine2000'), +(153, 'CO2', 'MDEA', 'water', 0.0053683131986567, 0.0552864387091318, 0.939345248092212, 0.00304, 0.0, 0.0, 1.52E-4, 297.71, 'Lemoine2000'), +(154, 'CO2', 'MDEA', 'water', 0.00621992289916307, 0.0552391021240059, 0.938540974976831, 0.00402, 0.0, 0.0, 2.01E-4, 297.71, 'Lemoine2000'), +(155, 'CO2', 'MDEA', 'water', 0.00714679190304309, 0.055187582262881, 0.937665625834076, 0.00477, 0.0, 0.0, 2.385E-4, 297.71, 'Lemoine2000'), +(156, 'CO2', 'MDEA', 'water', 0.00750829513925081, 0.0551674881649582, 0.937324216695791, 0.00546, 0.0, 0.0, 2.73E-4, 297.71, 'Lemoine2000'), +(157, 'CO2', 'MDEA', 'water', 0.00890800217439778, 0.05508968567964, 0.936002312145962, 0.00716, 0.0, 0.0, 3.58E-4, 297.71, 'Lemoine2000'), +(158, 'CO2', 'MDEA', 'water', 0.0112230371881621, 0.0549610048391878, 0.93381595797265, 0.01075, 0.0, 0.0, 5.375E-4, 297.71, 'Lemoine2000'), +(159, 'CO2', 'MDEA', 'water', 0.0139760348784271, 0.0548079799154005, 0.931215985206172, 0.01593, 0.0, 0.0, 7.965E-4, 297.71, 'Lemoine2000'), +(160, 'CO2', 'MDEA', 'water', 0.0143811832007924, 0.0547854598125425, 0.930833356986665, 0.01636, 0.0, 0.0, 8.18E-4, 297.71, 'Lemoine2000'), +(203, 'CO2', 'MDEA', 'water', 1.64634E-4, 0.082316926, 0.917518441, 4.0E-5, 0.0, 0.0, 2.0E-6, 313.15, 'Jou1993'), +(204, 'CO2', 'MDEA', 'water', 2.96302E-4, 0.082306085, 0.917397613, 6.3E-5, 0.0, 0.0, 3.15E-6, 313.15, 'Jou1993'), +(205, 'CO2', 'MDEA', 'water', 4.19709E-4, 0.082295925, 0.917284366, 9.0E-5, 0.0, 0.0, 4.5E-6, 313.15, 'Jou1993'), +(206, 'CO2', 'MDEA', 'water', 9.04816E-4, 0.082255986, 0.916839198, 3.3E-4, 0.0, 0.0, 1.65E-5, 313.15, 'Jou1993'), +(207, 'CO2', 'MDEA', 'water', 0.001069152, 0.082242456, 0.916688392, 4.0E-4, 0.0, 0.0, 2.0E-5, 313.15, 'Jou1993'), +(208, 'CO2', 'MDEA', 'water', 0.001315555, 0.08222217, 0.916462276, 5.6E-4, 0.0, 0.0, 2.8E-5, 313.15, 'Jou1993'), +(209, 'CO2', 'MDEA', 'water', 0.001397662, 0.08221541, 0.916386928, 6.9E-4, 0.0, 0.0, 3.45E-5, 313.15, 'Jou1993'), +(210, 'CO2', 'MDEA', 'water', 0.002217993, 0.082147872, 0.915634136, 0.00146, 0.0, 0.0, 7.3E-5, 313.15, 'Jou1993'), +(211, 'CO2', 'MDEA', 'water', 0.003200612, 0.082066972, 0.914732416, 0.00224, 0.0, 0.0, 1.12E-4, 313.15, 'Jou1993'), +(212, 'CO2', 'MDEA', 'water', 0.004834017, 0.081932493, 0.91323349, 0.00415, 0.0, 0.0, 2.075E-4, 313.15, 'Jou1993'), +(213, 'CO2', 'MDEA', 'water', 0.006299512, 0.081811838, 0.91188865, 0.00719, 0.0, 0.0, 3.595E-4, 313.15, 'Jou1993'), +(214, 'CO2', 'MDEA', 'water', 0.008651529, 0.081618196, 0.909730276, 0.011, 0.0, 0.0, 5.5E-4, 313.15, 'Jou1993'), +(215, 'CO2', 'MDEA', 'water', 0.009621524, 0.081538335, 0.908840141, 0.0126, 0.0, 0.0, 6.3E-4, 313.15, 'Jou1993'), +(216, 'CO2', 'MDEA', 'water', 0.013482595, 0.081220452, 0.905296954, 0.0216, 0.0, 0.0, 0.00108, 313.15, 'Jou1993'), +(217, 'CO2', 'MDEA', 'water', 0.018584102, 0.080800442, 0.900615456, 0.0382, 0.0, 0.0, 0.00191, 313.15, 'Jou1993'), +(218, 'CO2', 'MDEA', 'water', 0.02008847, 0.080676587, 0.899234943, 0.0443, 0.0, 0.0, 0.002215, 313.15, 'Jou1993'), +(219, 'CO2', 'MDEA', 'water', 0.023790062, 0.080371833, 0.895838105, 0.0589, 0.0, 0.0, 0.002945, 313.15, 'Jou1993'), +(220, 'CO2', 'MDEA', 'water', 0.026918397, 0.080114276, 0.892967328, 0.0829, 0.0, 0.0, 0.004145, 313.15, 'Jou1993a'); +INSERT INTO PUBLIC.TERNARYSOLUTESOLUBILITYTABLE(ID, COMPONENTSOLUTE, COMPONENTSOLVENT1, COMPONENTSOLVENT2, X1, X2, X3, VAPOURPRESSURE1, VAPOURPRESSURE2, VAPOURPRESSURE3, STANDARDDEVIATION, TEMPERATURE, REFERENCE) VALUES +(221, 'CO2', 'MDEA', 'water', 0.031419032, 0.079743736, 0.888837232, 0.12, 0.0, 0.0, 0.006, 313.15, 'Jou1993a'), +(222, 'CO2', 'MDEA', 'water', 0.040978526, 0.078956698, 0.880064775, 0.191, 0.0, 0.0, 0.00955, 313.15, 'Jou1993a'), +(223, 'CO2', 'MDEA', 'water', 0.044824818, 0.078640031, 0.876535151, 0.251, 0.0, 0.0, 0.01255, 313.15, 'Jou1993a'); +CREATE CACHED TABLE PUBLIC.TORG( + ID INT NOT NULL, + COMPANY VARCHAR(255) DEFAULT NULL, + STANDARDID INT DEFAULT '0' +); +-- 2 +/- SELECT COUNT(*) FROM PUBLIC.TORG; +INSERT INTO PUBLIC.TORG(ID, COMPANY, STANDARDID) VALUES +(1, 'Statoil', 1), +(2, 'Statoil', 2); +CREATE CACHED TABLE PUBLIC.UNIFACCOMP( + COMPNUMBER INT NOT NULL, + NAME VARCHAR(50) DEFAULT NULL, + QUNIQUAQ DOUBLE DEFAULT '0', + RUNIQUAQ DOUBLE DEFAULT '0', + SUB1 INT DEFAULT '0', + SUB2 INT DEFAULT '0', + SUB3 INT DEFAULT '0', + SUB4 INT DEFAULT '0', + SUB5 INT DEFAULT '0', + SUB6 INT DEFAULT '0', + SUB7 INT DEFAULT '0', + SUB8 INT DEFAULT '0', + SUB9 INT DEFAULT '0', + SUB10 INT DEFAULT '0', + SUB11 INT DEFAULT '0', + SUB12 INT DEFAULT '0', + SUB13 INT DEFAULT '0', + SUB14 INT DEFAULT '0', + SUB15 INT DEFAULT '0', + SUB16 INT DEFAULT '0', + SUB17 INT DEFAULT '0', + SUB18 INT DEFAULT '0', + SUB19 INT DEFAULT '0', + SUB20 INT DEFAULT '0', + SUB21 INT DEFAULT '0', + SUB22 INT DEFAULT '0', + SUB23 INT DEFAULT '0', + SUB24 INT DEFAULT '0', + SUB25 INT DEFAULT '0', + SUB26 INT DEFAULT '0', + SUB27 INT DEFAULT '0', + SUB28 INT DEFAULT '0', + SUB29 INT DEFAULT '0', + SUB30 INT DEFAULT '0', + SUB31 INT DEFAULT '0', + SUB32 INT DEFAULT '0', + SUB33 INT DEFAULT '0', + SUB34 INT DEFAULT '0', + SUB35 INT DEFAULT '0', + SUB36 INT DEFAULT '0', + SUB37 INT DEFAULT '0', + SUB38 INT DEFAULT '0', + SUB39 INT DEFAULT '0', + SUB40 INT DEFAULT '0', + SUB41 INT DEFAULT '0', + SUB42 INT DEFAULT '0', + SUB43 INT DEFAULT '0', + SUB44 INT DEFAULT '0', + SUB45 INT DEFAULT '0', + SUB46 INT DEFAULT '0', + SUB47 INT DEFAULT '0', + SUB48 INT DEFAULT '0', + SUB49 INT DEFAULT '0', + SUB50 INT DEFAULT '0', + SUB51 INT DEFAULT '0', + SUB52 INT DEFAULT '0', + SUB53 INT DEFAULT '0', + SUB54 INT DEFAULT '0', + SUB55 INT DEFAULT '0', + SUB56 INT DEFAULT '0', + SUB57 INT DEFAULT '0', + SUB58 INT DEFAULT '0', + SUB59 INT DEFAULT '0', + SUB60 INT DEFAULT '0', + SUB61 INT DEFAULT '0', + SUB62 INT DEFAULT '0', + SUB63 INT DEFAULT '0', + SUB64 INT DEFAULT '0', + SUB65 INT DEFAULT '0', + SUB66 INT DEFAULT '0', + SUB67 INT DEFAULT '0', + SUB68 INT DEFAULT '0', + SUB69 INT DEFAULT '0', + SUB70 INT DEFAULT '0', + SUB71 INT DEFAULT '0', + SUB72 INT DEFAULT '0', + SUB73 INT DEFAULT '0', + SUB74 INT DEFAULT '0', + SUB75 INT DEFAULT '0', + SUB76 INT DEFAULT '0', + SUB77 INT DEFAULT '0', + SUB78 INT DEFAULT '0', + SUB79 INT DEFAULT '0', + SUB80 INT DEFAULT '0', + SUB81 INT DEFAULT '0', + SUB82 INT DEFAULT '0', + SUB83 INT DEFAULT '0', + SUB84 INT DEFAULT '0', + SUB85 INT DEFAULT '0', + SUB86 INT DEFAULT '0', + SUB87 INT DEFAULT '0', + SUB88 INT DEFAULT '0', + SUB89 INT DEFAULT '0', + SUB90 INT DEFAULT '0', + SUB91 INT DEFAULT '0', + SUB92 INT DEFAULT '0', + SUB93 INT DEFAULT '0', + SUB94 INT DEFAULT '0', + SUB95 INT DEFAULT '0', + SUB96 INT DEFAULT '0', + SUB97 INT DEFAULT '0', + SUB98 INT DEFAULT '0', + SUB99 INT DEFAULT '0', + SUB100 INT DEFAULT '0', + SUB101 INT DEFAULT '0', + SUB102 INT DEFAULT '0', + SUB103 INT DEFAULT '0', + SUB104 INT DEFAULT '0', + SUB105 INT DEFAULT '0', + SUB106 INT DEFAULT '0', + SUB107 INT DEFAULT '0', + SUB108 INT DEFAULT '0', + SUB109 INT DEFAULT '0', + SUB110 INT DEFAULT '0', + SUB111 INT DEFAULT '0', + SUB112 INT DEFAULT '0', + SUB113 INT DEFAULT '0', + SUB114 INT DEFAULT '0', + SUB115 INT DEFAULT '0', + SUB116 INT DEFAULT '0', + SUB117 INT DEFAULT '0', + SUB118 INT DEFAULT '0', + SUB119 INT DEFAULT '0', + SUB120 INT DEFAULT '0', + SUB121 INT DEFAULT '0', + SUB122 INT DEFAULT '0', + SUB123 INT DEFAULT '0', + SUB124 INT DEFAULT '0', + SUB125 INT DEFAULT '0', + SUB126 INT DEFAULT '0', + SUB127 INT DEFAULT '0', + SUB128 INT DEFAULT '0', + SUB129 INT DEFAULT '0', + SUB130 INT DEFAULT '0', + SUB131 INT DEFAULT '0', + SUB132 INT DEFAULT '0', + SUB133 INT DEFAULT '0', + SUB134 INT DEFAULT NULL, + SUB135 INT DEFAULT NULL, + SUB136 INT DEFAULT NULL, + SUB137 INT DEFAULT '0', + SUB138 INT DEFAULT '0' +); +-- 109 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACCOMP; +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(1, 'methane', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(2, 'ethane', 0.0, 0.0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(3, 'propane', 0.0, 0.0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(4, 'n-pentane', 0.0, 0.0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(5, 'acetone', 0.0, 0.0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(6, 'water', 1.4, 0.92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(7, 'methanol', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(8, 'n-butane', 0.0, 0.0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(9, 'n-hexane', 0.0, 0.0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(10, 'n-heptane', 0.0, 0.0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(11, 'i-butane', 0.0, 0.0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(12, '22-dim-C3', 0.0, 0.0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(15, 'iC5', 0.0, 0.0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(16, '22-dim-C4', 0.0, 0.0, 4, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(17, 'c-C5', 0.0, 0.0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(18, '23-dim-C4', 0.0, 0.0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(20, '2-m-C5', 0.0, 0.0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(21, '3-m-C5', 0.0, 0.0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(22, '22-DM-C5', 0.0, 0.0, 4, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(23, 'M-cy-C5', 0.0, 0.0, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(24, '24-DM-C5', 0.0, 0.0, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(25, '223-TM-C4', 0.0, 0.0, 5, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(26, 'benzene', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(27, '33-DM-C5', 0.0, 0.0, 4, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(28, 'c-hexane', 0.0, 0.0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(29, '2-M-C6', 0.0, 0.0, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30, '23-DM-C5', 0.0, 0.0, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(31, '11-DM-cy-C5', 0.0, 0.0, 2, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(32, '3-M-C6', 0.0, 0.0, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(33, 'toluene', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(34, 'n-octane', 0.0, 0.0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(35, 'n-nonane', 0.0, 0.0, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(36, 'nC10', 0.0, 0.0, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(37, 'cis-13-DM-cy-C5', 0.0, 0.0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(38, 'trans-13-DM-cy-C5', 0.0, 0.0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(39, '3-E-C5', 0.0, 0.0, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(40, 'trans-12-DM-cy-C5', 0.0, 0.0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(41, '224-TM-C5', 0.0, 0.0, 5, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(42, '113-TM-cy-C5', 0.0, 0.0, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(43, '22-DM-C6', 0.0, 0.0, 4, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(44, 'E-cy-C5', 0.0, 0.0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(45, '25-DM-C6', 0.0, 0.0, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(46, '24-DM-C6', 0.0, 0.0, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(47, '2-M-C7', 0.0, 0.0, 3, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(48, 'cis-13-DM-cy-C6', 0.0, 0.0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(49, '3-M-C7', 0.0, 0.0, 3, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(50, '3-E-C6', 0.0, 0.0, 3, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(51, 'ethylbenzene', 0.0, 0.0, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(52, 'm-Xylene', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(53, 'p-Xylene', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(54, 'o-Xylene', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(55, '2-M-C8', 0.0, 0.0, 3, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(56, 'ethylcyclohexane', 0.0, 0.0, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(57, 'Piperazine', 0.0, 0.0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(58, 'MDEA', 0.0, 0.0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(59, 'CO2', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(60, 'AceticAcid', 2.072, 2.2024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(61, 'TEG', 0.0, 0.0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(62, 'H2S', 1.241, 1.234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(64, 'nitrogen', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(65, 'nC11', 0.0, 0.0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(66, 'nC12', 0.0, 0.0, 2, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(68, 'nC13', 0.0, 0.0, 2, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(69, 'c-C7', 0.0, 0.0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(73, 'c-C8', 0.0, 0.0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(76, 'nC14', 0.0, 0.0, 2, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(77, 'nC15', 0.0, 0.0, 2, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(78, 'nC16', 0.0, 0.0, 2, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(79, 'i-pentane', 0.0, 0.0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(80, 'M-Cy-C6', 0.0, 0.0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(81, 'i-p-cy-C5', 0.0, 0.0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(83, '234-TM-C5', 0.0, 0.0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(84, 'cis-12-DM-cy-C6', 0.0, 0.0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(85, '1,cis-2,trans-4-TMcyC5', 0.0, 0.0, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(86, '2,3-DM-C6', 0.0, 0.0, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(87, '3-M-C8', 0.0, 0.0, 3, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(88, '2,2-DM-C7', 0.0, 0.0, 4, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(89, '2,6-DM-C7', 0.0, 0.0, 4, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(90, '1,1,3-TM-cy-C6', 0.0, 0.0, 3, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(91, '1,2,3-TMcyC6', 0.0, 0.0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(92, '4-M-C8', 0.0, 0.0, 3, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(93, 'o-E-toluene', 0.0, 0.0, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(94, '1,2,3-TM-Benzene', 0.0, 0.0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(95, 'cy-C9', 0.0, 0.0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(96, '2-E-p-xylene', 0.0, 0.0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(97, 'nC5-Benzene', 0.0, 0.0, 1, 4, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(98, 'nC6-Benzene', 0.0, 0.0, 1, 5, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(99, 'nC7-Benzene', 0.0, 0.0, 1, 6, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(100, 'nC10-cy-C5', 0.0, 0.0, 1, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(101, 'nC8-Benzene', 0.0, 0.0, 1, 7, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(102, 'nC9-Benzene', 0.0, 0.0, 1, 8, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(103, '3-M-4,4-DE-heptane', 0.0, 0.0, 5, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(104, 'nC12-cy-C5', 0.0, 0.0, 1, 15, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(105, 'nC10-Benzene', 0.0, 0.0, 1, 9, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(106, 'nC14-cy-C5', 0.0, 0.0, 1, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(107, 'nC17-cy-C5', 0.0, 0.0, 1, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(108, 'nC27', 0.0, 0.0, 2, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(109, 'nC34', 0.0, 0.0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(110, 'nC39', 0.0, 0.0, 2, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(111, 'nC17', 0.0, 0.0, 2, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(112, 'nC19', 0.0, 0.0, 2, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(113, 'nC22', 0.0, 0.0, 2, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(114, 'nC23', 0.0, 0.0, 2, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(115, 'nC18', 0.0, 0.0, 2, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(116, '1,2-DM-cyC5', 0.0, 0.0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMP(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138) VALUES +(117, '1,3-dDM-cyC5', 0.0, 0.0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(118, 'nC30', 0.0, 0.0, 2, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(119, 'MEG', 0.0, 0.0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(120, 'TEG', 0.0, 0.0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +CREATE CACHED TABLE PUBLIC.UNIFACCOMPUMRPRU( + COMPNUMBER INT NOT NULL, + NAME VARCHAR(50) DEFAULT NULL, + QUNIQUAQ DOUBLE DEFAULT '0', + RUNIQUAQ DOUBLE DEFAULT '0', + SUB1 INT DEFAULT '0', + SUB2 INT DEFAULT '0', + SUB3 INT DEFAULT '0', + SUB4 INT DEFAULT '0', + SUB5 INT DEFAULT '0', + SUB6 INT DEFAULT '0', + SUB7 INT DEFAULT '0', + SUB8 INT DEFAULT '0', + SUB9 INT DEFAULT '0', + SUB10 INT DEFAULT '0', + SUB11 INT DEFAULT '0', + SUB12 INT DEFAULT '0', + SUB13 INT DEFAULT '0', + SUB14 INT DEFAULT '0', + SUB15 INT DEFAULT '0', + SUB16 INT DEFAULT '0', + SUB17 INT DEFAULT '0', + SUB18 INT DEFAULT '0', + SUB19 INT DEFAULT '0', + SUB20 INT DEFAULT '0', + SUB21 INT DEFAULT '0', + SUB22 INT DEFAULT '0', + SUB23 INT DEFAULT '0', + SUB24 INT DEFAULT '0', + SUB25 INT DEFAULT '0', + SUB26 INT DEFAULT '0', + SUB27 INT DEFAULT '0', + SUB28 INT DEFAULT '0', + SUB29 INT DEFAULT '0', + SUB30 INT DEFAULT '0', + SUB31 INT DEFAULT '0', + SUB32 INT DEFAULT '0', + SUB33 INT DEFAULT '0', + SUB34 INT DEFAULT '0', + SUB35 INT DEFAULT '0', + SUB36 INT DEFAULT '0', + SUB37 INT DEFAULT '0', + SUB38 INT DEFAULT '0', + SUB39 INT DEFAULT '0', + SUB40 INT DEFAULT '0', + SUB41 INT DEFAULT '0', + SUB42 INT DEFAULT '0', + SUB43 INT DEFAULT '0', + SUB44 INT DEFAULT '0', + SUB45 INT DEFAULT '0', + SUB46 INT DEFAULT '0', + SUB47 INT DEFAULT '0', + SUB48 INT DEFAULT '0', + SUB49 INT DEFAULT '0', + SUB50 INT DEFAULT '0', + SUB51 INT DEFAULT '0', + SUB52 INT DEFAULT '0', + SUB53 INT DEFAULT '0', + SUB54 INT DEFAULT '0', + SUB55 INT DEFAULT '0', + SUB56 INT DEFAULT '0', + SUB57 INT DEFAULT '0', + SUB58 INT DEFAULT '0', + SUB59 INT DEFAULT '0', + SUB60 INT DEFAULT '0', + SUB61 INT DEFAULT '0', + SUB62 INT DEFAULT '0', + SUB63 INT DEFAULT '0', + SUB64 INT DEFAULT '0', + SUB65 INT DEFAULT '0', + SUB66 INT DEFAULT '0', + SUB67 INT DEFAULT '0', + SUB68 INT DEFAULT '0', + SUB69 INT DEFAULT '0', + SUB70 INT DEFAULT '0', + SUB71 INT DEFAULT '0', + SUB72 INT DEFAULT '0', + SUB73 INT DEFAULT '0', + SUB74 INT DEFAULT '0', + SUB75 INT DEFAULT '0', + SUB76 INT DEFAULT '0', + SUB77 INT DEFAULT '0', + SUB78 INT DEFAULT '0', + SUB79 INT DEFAULT '0', + SUB80 INT DEFAULT '0', + SUB81 INT DEFAULT '0', + SUB82 INT DEFAULT '0', + SUB83 INT DEFAULT '0', + SUB84 INT DEFAULT '0', + SUB85 INT DEFAULT '0', + SUB86 INT DEFAULT '0', + SUB87 INT DEFAULT '0', + SUB88 INT DEFAULT '0', + SUB89 INT DEFAULT '0', + SUB90 INT DEFAULT '0', + SUB91 INT DEFAULT '0', + SUB92 INT DEFAULT '0', + SUB93 INT DEFAULT '0', + SUB94 INT DEFAULT '0', + SUB95 INT DEFAULT '0', + SUB96 INT DEFAULT '0', + SUB97 INT DEFAULT '0', + SUB98 INT DEFAULT '0', + SUB99 INT DEFAULT '0', + SUB100 INT DEFAULT '0', + SUB101 INT DEFAULT '0', + SUB102 INT DEFAULT '0', + SUB103 INT DEFAULT '0', + SUB104 INT DEFAULT '0', + SUB105 INT DEFAULT '0', + SUB106 INT DEFAULT '0', + SUB107 INT DEFAULT '0', + SUB108 INT DEFAULT '0', + SUB109 INT DEFAULT '0', + SUB110 INT DEFAULT '0', + SUB111 INT DEFAULT '0', + SUB112 INT DEFAULT '0', + SUB113 INT DEFAULT '0', + SUB114 INT DEFAULT '0', + SUB115 INT DEFAULT '0', + SUB116 INT DEFAULT '0', + SUB117 INT DEFAULT '0', + SUB118 INT DEFAULT '0', + SUB119 INT DEFAULT '0', + SUB120 INT DEFAULT '0', + SUB121 INT DEFAULT '0', + SUB122 INT DEFAULT '0', + SUB123 INT DEFAULT '0', + SUB124 INT DEFAULT '0', + SUB125 INT DEFAULT '0', + SUB126 INT DEFAULT '0', + SUB127 INT DEFAULT '0', + SUB128 INT DEFAULT '0', + SUB129 INT DEFAULT '0', + SUB130 INT DEFAULT '0', + SUB131 INT DEFAULT '0', + SUB132 INT DEFAULT '0', + SUB133 INT DEFAULT '0', + SUB134 INT DEFAULT '0', + SUB135 INT DEFAULT NULL, + SUB136 INT DEFAULT NULL, + SUB137 INT DEFAULT '0', + SUB138 INT DEFAULT '0', + SUB139 INT DEFAULT '0', + SUB140 INT DEFAULT '0' +); +-- 114 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACCOMPUMRPRU; +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(16, '22-dim-C3', 0.0, 0.0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17, 'iC5', 0.0, 0.0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(18, '22-dim-C4', 0.0, 0.0, 4, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(19, 'c-C5', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0), +(20, '23-dim-C4', 0.0, 0.0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(21, '2-m-C5', 0.0, 0.0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(22, '3-m-C5', 0.0, 0.0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(23, '22-DM-C5', 0.0, 0.0, 4, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(24, 'M-cy-C5', 0.0, 0.0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0), +(25, '24-DM-C5', 0.0, 0.0, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(26, '223-TM-C4', 0.0, 0.0, 5, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(27, 'benzene', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(28, '33-DM-C5', 0.0, 0.0, 4, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(29, 'c-hexane', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(30, '2-M-C6', 0.0, 0.0, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(31, '23-DM-C5', 0.0, 0.0, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(32, '11-DM-cy-C5', 0.0, 0.0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0), +(33, '3-M-C6', 0.0, 0.0, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(34, 'toluene', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(35, 'n-octane', 0.0, 0.0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(36, 'n-nonane', 0.0, 0.0, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(37, 'nC10', 0.0, 0.0, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(38, 'cis-13-DM-cy-C5', 0.0, 0.0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0), +(39, 'trans-13-DM-cy-C5', 0.0, 0.0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0), +(40, '3-E-C5', 0.0, 0.0, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(41, 'trans-12-DM-cy-C5', 0.0, 0.0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(42, '224-TM-C5', 0.0, 0.0, 5, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(43, '113-TM-cy-C5', 0.0, 0.0, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(44, '22-DM-C6', 0.0, 0.0, 4, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(45, 'E-cy-C5', 0.0, 0.0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(46, '25-DM-C6', 0.0, 0.0, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(47, '24-DM-C6', 0.0, 0.0, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(48, '2-M-C7', 0.0, 0.0, 3, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(49, 'cis-13-DM-cy-C6', 0.0, 0.0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(50, '3-M-C7', 0.0, 0.0, 3, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(51, '3-E-C6', 0.0, 0.0, 3, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(52, 'ethylbenzene', 0.0, 0.0, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(53, 'm-Xylene', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(54, 'p-Xylene', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(55, 'o-Xylene', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(57, '2-M-C8', 0.0, 0.0, 3, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(59, 'ethylcyclohexane', 0.0, 0.0, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(60, 'Piperazine', 0.0, 0.0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(61, 'MDEA', 0.0, 0.0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(62, 'CO2', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(64, 'AceticAcid', 2.072, 2.2024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(65, 'TEG', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), +(66, 'H2S', 1.241, 1.234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(67, 'nitrogen', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(69, 'nC11', 0.0, 0.0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(70, 'nC12', 0.0, 0.0, 2, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(71, 'nC13', 0.0, 0.0, 2, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(72, 'c-C7', 0.0, 0.0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(73, 'c-C8', 0.0, 0.0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(74, 'nC14', 0.0, 0.0, 2, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(1, 'methane', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(2, 'ethane', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0), +(3, 'propane', 0.0, 0.0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(4, 'n-pentane', 0.0, 0.0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(5, 'acetone', 0.0, 0.0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(6, 'water', 1.4, 0.92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(7, 'methanol', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(9, 'n-butane', 0.0, 0.0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(10, 'n-hexane', 0.0, 0.0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(11, 'n-heptane', 0.0, 0.0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(15, 'i-butane', 0.0, 0.0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(75, 'nC15', 0.0, 0.0, 2, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(76, 'nC16', 0.0, 0.0, 2, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(77, 'i-pentane', 0.0, 0.0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(79, 'M-Cy-C6', 0.0, 0.0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(80, 'i-p-cy-C5', 0.0, 0.0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(82, '234-TM-C5', 0.0, 0.0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(83, 'cis-12-DM-cy-C6', 0.0, 0.0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(90, '1,cis-2,trans-4-TMcyC5', 0.0, 0.0, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(91, '2,3-DM-C6', 0.0, 0.0, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(92, '3-M-C8', 0.0, 0.0, 3, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(93, '2,2-DM-C7', 0.0, 0.0, 4, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(94, '2,6-DM-C7', 0.0, 0.0, 4, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(95, '1,1,3-TM-cy-C6', 0.0, 0.0, 3, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(96, '1,2,3-TMcyC6', 0.0, 0.0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(97, '4-M-C8', 0.0, 0.0, 3, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(98, 'o-E-toluene', 0.0, 0.0, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(99, '1,2,3-TM-Benzene', 0.0, 0.0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(100, 'cy-C9', 0.0, 0.0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(101, '2-E-p-xylene', 0.0, 0.0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(102, 'nC5-Benzene', 0.0, 0.0, 1, 4, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(103, 'nC6-Benzene', 0.0, 0.0, 1, 5, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(104, 'nC7-Benzene', 0.0, 0.0, 1, 6, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(105, 'nC10-cy-C5', 0.0, 0.0, 1, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(106, 'nC8-Benzene', 0.0, 0.0, 1, 7, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(107, 'nC9-Benzene', 0.0, 0.0, 1, 8, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(108, '3-M-4,4-DE-heptane', 0.0, 0.0, 5, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(109, 'nC12-cy-C5', 0.0, 0.0, 1, 15, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(110, 'nC10-Benzene', 0.0, 0.0, 1, 9, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(111, 'nC14-cy-C5', 0.0, 0.0, 1, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(112, 'nC17-cy-C5', 0.0, 0.0, 1, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(113, 'nC27', 0.0, 0.0, 2, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(114, 'nC34', 0.0, 0.0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(115, 'nC39', 0.0, 0.0, 2, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(117, 'nC17', 0.0, 0.0, 2, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(118, 'nC19', 0.0, 0.0, 2, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(119, 'nC22', 0.0, 0.0, 2, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(120, 'nC23', 0.0, 0.0, 2, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(121, 'nC18', 0.0, 0.0, 2, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(122, '1,2-DM-cyC5', 0.0, 0.0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(123, '1,3-dDM-cyC5', 0.0, 0.0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(124, '1,2,4-TMcyC6', 0.0, 0.0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(125, 'nC30', 0.0, 0.0, 2, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(126, 'mercury', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0), +(127, 'nC25', 0.0, 0.0, 2, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(128, 'nC26', 0.0, 0.0, 2, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(129, 'nC28', 0.0, 0.0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO PUBLIC.UNIFACCOMPUMRPRU(COMPNUMBER, NAME, QUNIQUAQ, RUNIQUAQ, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7, SUB8, SUB9, SUB10, SUB11, SUB12, SUB13, SUB14, SUB15, SUB16, SUB17, SUB18, SUB19, SUB20, SUB21, SUB22, SUB23, SUB24, SUB25, SUB26, SUB27, SUB28, SUB29, SUB30, SUB31, SUB32, SUB33, SUB34, SUB35, SUB36, SUB37, SUB38, SUB39, SUB40, SUB41, SUB42, SUB43, SUB44, SUB45, SUB46, SUB47, SUB48, SUB49, SUB50, SUB51, SUB52, SUB53, SUB54, SUB55, SUB56, SUB57, SUB58, SUB59, SUB60, SUB61, SUB62, SUB63, SUB64, SUB65, SUB66, SUB67, SUB68, SUB69, SUB70, SUB71, SUB72, SUB73, SUB74, SUB75, SUB76, SUB77, SUB78, SUB79, SUB80, SUB81, SUB82, SUB83, SUB84, SUB85, SUB86, SUB87, SUB88, SUB89, SUB90, SUB91, SUB92, SUB93, SUB94, SUB95, SUB96, SUB97, SUB98, SUB99, SUB100, SUB101, SUB102, SUB103, SUB104, SUB105, SUB106, SUB107, SUB108, SUB109, SUB110, SUB111, SUB112, SUB113, SUB114, SUB115, SUB116, SUB117, SUB118, SUB119, SUB120, SUB121, SUB122, SUB123, SUB124, SUB125, SUB126, SUB127, SUB128, SUB129, SUB130, SUB131, SUB132, SUB133, SUB134, SUB135, SUB136, SUB137, SUB138, SUB139, SUB140) VALUES +(130, 'nC29', 0.0, 0.0, 2, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(131, 'MEG', 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0); +CREATE CACHED TABLE PUBLIC.UNIFACGROUPPARAM( + ID INT NOT NULL, + MAIN INT DEFAULT '0', + SECONDARY INT DEFAULT '0', + NAME VARCHAR(50) DEFAULT NULL, + VOLUMER DOUBLE DEFAULT '0', + SURFAREAQ DOUBLE DEFAULT '0', + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 81 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACGROUPPARAM; +INSERT INTO PUBLIC.UNIFACGROUPPARAM(ID, MAIN, SECONDARY, NAME, VOLUMER, SURFAREAQ, REFERENCE) VALUES +(1, 1, 1, 'CH3', 0.9011, 0.848, 'Hansen1991'), +(2, 1, 2, 'CH2', 0.6744, 0.54, 'Hansen1991'), +(3, 1, 3, 'CH', 0.4469, 0.228, 'Hansen1991'), +(4, 1, 4, 'C', 0.2195, 0.0, 'Hansen1991'), +(5, 2, 5, 'CH2=CH', 1.3454, 1.176, 'Hansen1991'), +(6, 2, 6, 'CH=CH', 1.1167, 0.867, 'Hansen1991'), +(7, 2, 7, 'CH2=C', 1.1173, 0.988, 'Hansen1991'), +(8, 2, 8, 'CH=C', 0.8886, 0.676, 'Hansen1991'), +(9, 2, 70, 'C=C', 0.6605, 0.485, 'Hansen1991'), +(10, 3, 9, 'ACH', 0.5313, 0.4, 'Hansen1991'), +(11, 3, 10, 'AC', 0.3652, 0.12, 'Hansen1991'), +(12, 4, 11, 'ACCH3', 1.2663, 0.968, 'Hansen1991'), +(13, 4, 12, 'ACCH2', 1.0396, 0.66, 'Hansen1991'), +(14, 4, 13, 'ACCH', 0.8121, 0.348, 'Hansen1991'), +(15, 5, 14, 'OH', 1.0, 1.2, 'Hansen1991'), +(16, 6, 15, 'CH3OH', 1.4311, 1.432, 'Hansen1991'), +(17, 7, 16, 'water', 0.92, 1.4, 'Hansen1991'), +(18, 8, 17, 'ACOH', 0.8952, 0.68, 'Hansen1991'), +(19, 9, 18, 'CH3CO', 1.6724, 1.488, 'Hansen1991'), +(20, 9, 19, 'CH2CO', 1.3357, 1.18, 'Hansen1991'), +(21, 10, 20, 'CHO', 0.998, 0.948, 'Hansen1991'), +(22, 11, 21, 'CH3COO', 1.9031, 1.728, 'Hansen1991'), +(23, 11, 22, 'CH2COO', 1.6764, 1.42, 'Hansen1991'), +(24, 12, 23, 'HCOO', 1.242, 1.1898, 'Hansen1991'), +(25, 13, 24, 'CH3O', 1.145, 1.088, 'Hansen1991'), +(26, 13, 25, 'CH2O', 0.9183, 0.78, 'Hansen1991'), +(27, 13, 26, 'CHO', 0.6908, 0.468, 'Hansen1991'), +(28, 13, 27, 'THF', 0.9183, 1.1, 'Hansen1991'), +(29, 14, 28, 'CH3NH2', 1.5959, 1.544, 'Hansen1991'), +(30, 14, 29, 'CH2NH2', 1.3692, 1.236, 'Hansen1991'), +(31, 14, 30, 'CHNH2', 1.1417, 0.924, 'Hansen1991'), +(32, 15, 31, 'CH3NH', 1.4337, 1.244, 'Hansen1991'), +(33, 15, 32, 'CH2NH', 1.207, 0.936, 'Hansen1991'), +(34, 15, 33, 'CHNH', 0.9795, 0.624, 'Hansen1991'), +(35, 16, 34, 'CH3N', 1.1865, 0.94, 'Hansen1991'), +(36, 16, 35, 'CH2N', 0.9597, 0.632, 'Hansen1991'), +(37, 17, 36, 'ACNH2', 1.06, 0.816, 'Hansen1991'), +(38, 18, 37, 'C5H5N', 2.9993, 2.113, 'Hansen1991'), +(39, 18, 38, 'C5H4N', 2.8332, 1.833, 'Hansen1991'), +(40, 18, 39, 'C5H3N', 2.667, 1.553, 'Hansen1991'), +(41, 19, 40, 'CH3CN', 1.8701, 1.724, 'Hansen1991'), +(42, 19, 41, 'CH2CN', 1.6434, 1.416, 'Hansen1991'), +(43, 20, 42, 'COOH', 1.3013, 1.224, 'Hansen1991'), +(44, 20, 43, 'HCOOH', 1.528, 1.532, 'Hansen1991'), +(45, 21, 44, 'CH2Cl', 2.2564, 1.264, 'Hansen1991'), +(46, 21, 45, 'CHCl', 2.0606, 0.952, 'Hansen1991'), +(47, 21, 46, 'CCl', 1.0106, 0.724, 'Hansen1991'), +(48, 22, 47, 'CH2Cl2', 2.2564, 1.988, 'Hansen1991'), +(49, 22, 48, 'CHCl2', 2.0606, 1.684, 'Hansen1991'), +(50, 22, 49, 'CCl2', 1.8016, 1.448, 'Hansen1991'), +(51, 23, 50, 'CHCl3', 2.87, 2.41, 'Hansen1991'), +(52, 23, 51, 'CCl3', 2.6401, 2.184, 'Hansen1991'), +(53, 24, 52, 'CCl4', 3.39, 2.91, 'Hansen1991'), +(54, 25, 53, 'ACCl', 1.1562, 0.844, 'Hansen1991'), +(55, 26, 54, 'CH3NO2', 2.0086, 1.868, 'Hansen1991'), +(56, 26, 55, 'CH2NO2', 1.7818, 1.56, 'Hansen1991'), +(57, 26, 56, 'CHNO2', 1.5544, 1.248, 'Hansen1991'), +(58, 27, 57, 'ACNO2', 1.4199, 1.104, 'Hansen1991'), +(59, 28, 58, 'CS2', 2.507, 1.65, 'Hansen1991'), +(60, 29, 59, 'CH3SH', 1.877, 1.676, 'Hansen1991'), +(61, 29, 60, 'CH2SH', 1.651, 1.368, 'Hansen1991'), +(62, 30, 61, 'Furfural', 3.168, 1.65, 'Hansen1991'), +(63, 31, 62, 'DOH', 2.4088, 2.248, 'Hansen1991'), +(64, 32, 63, 'I', 1.264, 0.992, 'Hansen1991'), +(65, 33, 64, 'Br', 0.9492, 0.832, 'Hansen1991'), +(66, 55, 120, 'NH3', 0.851, 0.778, 'Fisher1995'), +(67, 56, 121, 'CO2', 1.296, 1.261, 'Holderbaum1991'), +(68, 57, 122, 'CH4', 1.129, 1.124, 'Holderbaum1991'), +(69, 58, 123, 'O2', 0.733, 0.849, 'Fisher1995'), +(70, 59, 124, 'Ar', 1.177, 1.116, 'Fisher1995'), +(71, 60, 125, 'N2', 0.934, 0.985, 'Holderbaum1991'), +(72, 61, 126, 'H2S', 1.1665, 1.163, 'Holderbaum1991'), +(73, 62, 127, 'H2', 0.416, 0.571, 'Holderbaum1991'), +(74, 63, 128, 'CO', 0.711, 0.828, 'Holderbaum1991'), +(75, 64, 134, 'C2H6', 1.8022, 1.696, 'Voutsas'), +(76, 65, 135, 'Hg', 10.598, 8.739, 'Mentzelos'), +(78, 66, 136, 'cCH2', 0.6744, 0.54, 'Voutsas2017'), +(79, 67, 137, 'cCH', 0.4469, 0.228, 'Voutsas2017'), +(80, 68, 138, 'cC', 0.2195, 0.0, 'Voutsas2017'), +(81, 69, 139, 'MEG', 2.4088, 2.248, 'NTUA'); +INSERT INTO PUBLIC.UNIFACGROUPPARAM(ID, MAIN, SECONDARY, NAME, VOLUMER, SURFAREAQ, REFERENCE) VALUES +(82, 70, 140, 'TEG', 5.5942, 4.88, 'NTUA'); +CREATE CACHED TABLE PUBLIC.UNIFACINTERPARAM( + MAINGROUP INT DEFAULT '0' NOT NULL, + N1 DOUBLE DEFAULT '0', + N2 DOUBLE DEFAULT '0', + N3 DOUBLE DEFAULT '0', + N4 DOUBLE DEFAULT '0', + N5 DOUBLE DEFAULT '0', + N6 DOUBLE DEFAULT '0', + N7 DOUBLE DEFAULT '0', + N8 DOUBLE DEFAULT '0', + N9 DOUBLE DEFAULT '0', + N10 DOUBLE DEFAULT '0', + N11 DOUBLE DEFAULT '0', + N12 DOUBLE DEFAULT '0', + N13 DOUBLE DEFAULT '0', + N14 DOUBLE DEFAULT '0', + N15 DOUBLE DEFAULT '0', + N16 DOUBLE DEFAULT '0', + N17 DOUBLE DEFAULT '0', + N18 DOUBLE DEFAULT '0', + N19 DOUBLE DEFAULT '0', + N20 DOUBLE DEFAULT '0', + N21 DOUBLE DEFAULT '0', + N22 DOUBLE DEFAULT '0', + N23 DOUBLE DEFAULT '0', + N24 DOUBLE DEFAULT '0', + N25 DOUBLE DEFAULT '0', + N26 DOUBLE DEFAULT '0', + N27 DOUBLE DEFAULT '0', + N28 DOUBLE DEFAULT '0', + N29 DOUBLE DEFAULT '0', + N30 DOUBLE DEFAULT '0', + N31 DOUBLE DEFAULT '0', + N32 DOUBLE DEFAULT '0', + N33 DOUBLE DEFAULT '0', + N34 DOUBLE DEFAULT '0', + N35 DOUBLE DEFAULT '0', + N36 DOUBLE DEFAULT '0', + N37 DOUBLE DEFAULT '0', + N38 DOUBLE DEFAULT '0', + N39 DOUBLE DEFAULT '0', + N40 DOUBLE DEFAULT '0', + N41 DOUBLE DEFAULT '0', + N42 DOUBLE DEFAULT '0', + N43 DOUBLE DEFAULT '0', + N44 DOUBLE DEFAULT '0', + N45 DOUBLE DEFAULT '0', + N46 DOUBLE DEFAULT '0', + N47 DOUBLE DEFAULT '0', + N48 DOUBLE DEFAULT '0', + N49 DOUBLE DEFAULT '0', + N50 DOUBLE DEFAULT '0', + N51 DOUBLE DEFAULT '0', + N52 DOUBLE DEFAULT '0', + N53 DOUBLE DEFAULT '0', + N54 DOUBLE DEFAULT '0', + N55 DOUBLE DEFAULT '0', + N56 DOUBLE DEFAULT '0', + N57 DOUBLE DEFAULT '0', + N58 DOUBLE DEFAULT '0', + N59 DOUBLE DEFAULT '0', + N60 DOUBLE DEFAULT '0', + N61 DOUBLE DEFAULT '0', + N62 DOUBLE DEFAULT '0', + N63 DOUBLE DEFAULT '0', + N64 DOUBLE DEFAULT '0' +); +-- 64 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACINTERPARAM; +INSERT INTO PUBLIC.UNIFACINTERPARAM(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(1, 0.0, 86.02, 61.13, 76.5, 986.5, 697.2, 1318.0, 1333.0, 476.4, 677.0, 232.1, 507.0, 251.5, 391.5, 255.7, 206.6, 920.7, 287.8, 597.0, 663.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 153.6, 184.4, 354.6, 3025.0, 335.8, 479.5, 298.9, 526.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2054.3, 919.8, -39.101, -163.27, 0.0, 271.12, 893.01, 613.3, 0.0, 0.0), +(2, -35.36, 0.0, 38.81, 74.15, 524.1, 787.6, 270.6, 526.1, 182.6, 448.8, 37.85, 333.5, 214.5, 240.9, 163.9, 61.11, 749.3, 280.5, 336.9, 318.9, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 76.3, 0.0, 262.9, 0.0, 0.0, 183.8, 31.14, 179.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2287.5, -52.107, 38.602, 0.0, 0.0, -231.09, 0.0, 585.0, -241.56, 0.0), +(3, -11.12, 3.446, 0.0, 167.0, 636.1, 637.4, 9903.8, 1329.0, 25.77, 347.3, 5.994, 287.1, 32.14, 161.7, 122.8, 90.49, 648.2, -4.449, 212.5, 537.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 52.07, -10.43, -64.69, 210.7, 113.3, 261.3, 0.0, 169.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 627.81, 219.25, 131.59, 0.0, 0.0, 309.59, 49.132, 734.87, 680.05, 0.0), +(4, -69.7, -113.6, -146.8, 0.0, 803.2, 603.3, 5695.0, 884.9, -52.1, 586.8, 5688.0, 197.8, 213.1, 19.02, -49.29, 23.5, 664.2, 52.8, 6096.0, 872.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.451, 393.6, 48.49, 4975.0, 259.0, 210.0, 0.0, 4284.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 821.15, 296.88, 37.876, 0.0, 0.0, -303.76, 23.158, 320.0, 0.0, 0.0), +(5, 156.4, 457.0, 89.6, 25.82, 0.0, -137.1, 353.5, -259.7, 84.0, -203.6, 101.1, 267.8, 28.06, 8.642, 42.7, -323.0, -52.39, 170.0, 6.712, 199.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 488.9, 147.5, -120.5, -318.9, 313.5, 202.1, 727.8, -202.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 510.64, 671.69, 0.0, 0.0, 0.0, 0.0, 2847.4, 0.0, 0.0), +(6, 16.51, -12.52, -50.0, -44.5, 249.1, 0.0, -181.0, -101.7, 23.39, 306.4, -10.72, 179.7, -128.6, 359.3, -20.98, 53.9, 489.7, 580.5, 53.28, -202.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -31.09, 17.5, 0.0, -119.2, 212.1, 106.3, 0.0, -399.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 138.95, -72.04, 553.56, 0.0, 0.0, 190.24, -33.079, 250.05, 261.54, 0.0), +(7, 300.0, 496.1, 362.3, 377.6, -229.1, 289.6, 0.0, 324.5, -195.4, -116.0, 72.87, 0.0, 540.5, 48.89, 168.0, 304.0, 243.2, 459.0, 112.6, -14.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 887.1, 0.0, 188.0, 12.72, 0.0, 0.0, 0.0, -139.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -655.58, -1163.5, -1159.6, -2181.9, -318.89, 2093.1, 724.93, 1951.4, -1665.5, 0.0), +(8, 275.8, 217.5, 25.34, 244.2, -451.6, -265.2, -601.8, 0.0, -356.1, -271.1, -449.4, 0.0, -162.9, 0.0, 0.0, 0.0, 119.9, -305.5, 0.0, 408.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8484.0, 0.0, 0.0, -687.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 695.7, 0.0, 0.0, 0.0, 1503.5, 0.0, 4027.5, 0.0, 0.0), +(9, 26.76, 42.92, 140.1, 365.8, 164.5, 108.7, 472.5, -133.1, 0.0, -37.36, -213.7, -190.4, -103.6, 0.0, 0.0, 0.0, 6201.0, 7.341, 481.7, 669.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 216.1, -46.28, -163.7, 71.46, 53.59, 245.2, -246.6, -44.58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 132.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(10, 505.7, 56.3, 23.39, 106.0, 529.0, -340.2, 480.8, -155.6, 128.0, 0.0, -110.3, 766.0, 304.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 497.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 117.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -162.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAM(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(11, 114.8, 132.1, 85.84, -170.0, 245.4, 249.6, 200.8, -36.72, 372.2, 185.1, 0.0, -241.8, -235.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 660.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 183.0, 0.0, 202.3, -101.7, 148.3, 18.88, 0.0, 52.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 818.72, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(12, 329.3, 110.4, 18.82, 428.0, 139.4, 227.8, 0.0, 0.0, 385.4, -236.5, 1167.0, 0.0, -234.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -268.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 103.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(13, 83.36, 26.51, 52.13, 65.69, 237.7, 238.4, -314.7, -178.5, 191.1, -7.838, 461.3, 457.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 664.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 140.9, -8.538, 170.1, -20.11, -149.5, -202.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2795.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(14, -30.48, 1.163, -44.85, 296.4, -242.8, -481.7, -330.4, 0.0, 0.0, 0.0, 0.0, 0.0, 222.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -70.14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0), +(15, 65.33, -28.7, -22.31, 223.0, -150.0, -370.3, -448.2, 0.0, 394.6, 0.0, 136.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(16, -83.98, -25.38, -223.9, 109.9, 28.6, -406.8, -598.8, 0.0, 225.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(17, 1139.0, 2000.0, 247.5, 762.8, -17.4, -118.1, -341.6, 0.0, -450.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -396.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, -101.6, -47.63, 31.87, 49.8, -132.3, -378.2, -332.9, 0.0, 29.1, 0.0, 0.0, 554.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -153.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 43.717, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(19, 24.82, -40.62, -22.97, -138.4, 185.4, 162.6, 242.8, 0.0, -287.5, 0.0, 0.0, 99.37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(20, 315.3, 1264.0, 62.32, 89.86, -151.0, 339.8, -66.17, 0.0, -297.8, -165.5, 0.0, 193.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 73.859, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(21, 91.46, 40.25, 4.68, 122.9, 562.2, 529.0, 698.2, 0.0, 286.3, -47.51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 519.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAM(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(22, 34.01, -23.5, 121.3, 140.8, 527.6, 669.9, 708.7, 0.0, 82.86, 190.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 543.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 36.7, 51.06, 288.5, 69.9, 742.1, 649.1, 826.8, 0.0, 552.1, 242.8, 0.0, 235.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 504.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, -78.45, 160.9, -4.7, 134.7, 856.3, 709.6, 1201.0, 0.0, 372.0, 0.0, 0.0, 351.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 631.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(25, 106.8, 70.32, -97.27, 402.5, 325.7, 612.8, -274.5, 0.0, 518.4, 0.0, 0.0, 383.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 993.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, -32.69, -1.996, 10.38, -97.05, 261.6, 252.6, 417.9, 0.0, -142.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 0.0, 0.0, 1824.0, -127.8, 561.6, 0.0, 360.7, 0.0, -101.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 0.0, 0.0, 21.5, 40.68, 609.8, 914.2, 1081.0, 0.0, 303.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 0.0, 0.0, 28.41, 19.56, 461.6, 448.6, 0.0, 0.0, 160.6, 0.0, 0.0, 201.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 0.0, 0.0, 157.3, 128.8, 521.6, 0.0, 23.48, 0.0, 317.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAM(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, -72.88, 41.38, 0.0, 0.0, 68.95, 0.0, 0.0, 0.0, 443.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.648, -10.699, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 50.49, 64.07, -2.504, -143.2, -25.87, 695.0, -240.0, 0.0, 110.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 183.65, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -209.22, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAM(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(45, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 95.548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(52, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(55, 1243.9, 2381.1001, 392.16, 607.54, 0.0, -490.47, -395.59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -173.86, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(56, -38.672, 148.57, -29.4, 249.32, 148.16, 414.57, 1720.6, 628.8, 18.074, 340.0, -742.2, 0.0, -350.71, 0.0, 0.0, 0.0, 0.0, -109.83, 0.0, 50.349, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.775, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -5.8025, 0.0, 0.0, 57.144, -30.027, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 73.563, 0.0, 0.0, -580.82, 78.98, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAM(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(57, 68.141, 18.78, -65.123, 5.5762, 516.17, 2534.4, 60.553, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 196.16, 0.0, 0.0, 0.0, 0.0, 91.023, 0.0, 0.0, 0.0), +(58, 1855.1, 0.0, 0.0, 0.0, 0.0, 0.0, -1899.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 200.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(60, 3.7506, 667.1, 58.687, 406.32, 0.0, 2389.2, -1715.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 694.28, 0.0, 0.0, 0.0, 0.0, 862.84, 0.0, 0.0, 0.0), +(61, 742.31, 0.0, -98.107, 40.01, 0.0, 307.198, -8.1881, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 114.96, 295.7, 0.0, 0.0, 648.2, 0.0, 0.0, 0.0, 0.0), +(62, 315.96, 399.44, 16.884, 126.44, 2357.2, 2136.6001, 2183.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(63, 0.0, -364.32, -252.61, 0.0, 505.73, 231.32, -6058.1001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(64, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.UNIFACINTERPARAMA_UMR( + MAINGROUP INT DEFAULT '0' NOT NULL, + N1 DOUBLE DEFAULT '0', + N2 DOUBLE DEFAULT '0', + N3 DOUBLE DEFAULT '0', + N4 DOUBLE DEFAULT '0', + N5 DOUBLE DEFAULT '0', + N6 DOUBLE DEFAULT '0', + N7 DOUBLE DEFAULT '0', + N8 DOUBLE DEFAULT '0', + N9 DOUBLE DEFAULT '0', + N10 DOUBLE DEFAULT '0', + N11 DOUBLE DEFAULT '0', + N12 DOUBLE DEFAULT '0', + N13 DOUBLE DEFAULT '0', + N14 DOUBLE DEFAULT '0', + N15 DOUBLE DEFAULT '0', + N16 DOUBLE DEFAULT '0', + N17 DOUBLE DEFAULT '0', + N18 DOUBLE DEFAULT '0', + N19 DOUBLE DEFAULT '0', + N20 DOUBLE DEFAULT '0', + N21 DOUBLE DEFAULT '0', + N22 DOUBLE DEFAULT '0', + N23 DOUBLE DEFAULT '0', + N24 DOUBLE DEFAULT '0', + N25 DOUBLE DEFAULT '0', + N26 DOUBLE DEFAULT '0', + N27 DOUBLE DEFAULT '0', + N28 DOUBLE DEFAULT '0', + N29 DOUBLE DEFAULT '0', + N30 DOUBLE DEFAULT '0', + N31 DOUBLE DEFAULT '0', + N32 DOUBLE DEFAULT '0', + N33 DOUBLE DEFAULT '0', + N34 DOUBLE DEFAULT '0', + N35 DOUBLE DEFAULT '0', + N36 DOUBLE DEFAULT '0', + N37 DOUBLE DEFAULT '0', + N38 DOUBLE DEFAULT '0', + N39 DOUBLE DEFAULT '0', + N40 DOUBLE DEFAULT '0', + N41 DOUBLE DEFAULT '0', + N42 DOUBLE DEFAULT '0', + N43 DOUBLE DEFAULT '0', + N44 DOUBLE DEFAULT '0', + N45 DOUBLE DEFAULT '0', + N46 DOUBLE DEFAULT '0', + N47 DOUBLE DEFAULT '0', + N48 DOUBLE DEFAULT '0', + N49 DOUBLE DEFAULT '0', + N50 DOUBLE DEFAULT '0', + N51 DOUBLE DEFAULT '0', + N52 DOUBLE DEFAULT '0', + N53 DOUBLE DEFAULT '0', + N54 DOUBLE DEFAULT '0', + N55 DOUBLE DEFAULT '0', + N56 DOUBLE DEFAULT '0', + N57 DOUBLE DEFAULT '0', + N58 DOUBLE DEFAULT '0', + N59 DOUBLE DEFAULT '0', + N60 DOUBLE DEFAULT '0', + N61 DOUBLE DEFAULT '0', + N62 DOUBLE DEFAULT '0', + N63 DOUBLE DEFAULT '0', + N64 DOUBLE DEFAULT '0' +); +-- 64 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACINTERPARAMA_UMR; +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(1, 0.0, 86.02, 64.45, -93.37, 986.5, 697.2, 1318.0, 1333.0, 476.4, 677.0, 232.1, 507.0, 251.5, 391.5, 255.7, 206.6, 920.7, 287.8, 597.0, 663.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 153.6, 184.4, 354.6, 3025.0, 335.8, 479.5, 298.9, 526.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2054.3, 90.68, -268.42, -163.27, 0.0, -190.64, 0.0, 613.3, 0.0, 61.45), +(2, -35.36, 0.0, 38.81, 74.15, 524.1, 787.6, 270.6, 526.1, 182.6, 448.8, 37.85, 333.5, 214.5, 240.9, 163.9, 61.11, 749.3, 280.5, 336.9, 318.9, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 76.3, 0.0, 262.9, 0.0, 0.0, 183.8, 31.14, 179.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2287.5, -52.107, 38.602, 0.0, 0.0, -231.09, 0.0, 585.0, -241.56, 0.0), +(3, -6.73, 3.446, 0.0, -155.4, 636.1, 637.4, 9903.8, 1329.0, 25.77, 347.3, 5.994, 287.1, 32.14, 161.7, 122.8, 90.49, 648.2, -4.449, 212.5, 537.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 52.07, -10.43, -64.69, 210.7, 113.3, 261.3, 0.0, 169.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 627.81, 94.49, -63.53, 0.0, 0.0, 37.23, 49.132, 734.87, 680.05, 171.39), +(4, 252.5, -113.6, 366.6, 0.0, 803.2, 603.3, 5695.0, 884.9, -52.1, 586.8, 5688.0, 197.8, 213.1, 19.02, -49.29, 23.5, 664.2, 52.8, 6096.0, 872.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.451, 393.6, 48.49, 4975.0, 259.0, 210.0, 0.0, 4284.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 821.15, 274.36, -88.33, 0.0, 0.0, 122.55, 23.158, 320.0, 0.0, 674.59), +(5, 156.4, 457.0, 89.6, 25.82, 0.0, -137.1, 353.5, -259.7, 84.0, -203.6, 101.1, 267.8, 28.06, 8.642, 42.7, -323.0, -52.39, 170.0, 6.712, 199.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 488.9, 147.5, -120.5, -318.9, 313.5, 202.1, 727.8, -202.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 510.64, 671.69, 0.0, 0.0, 0.0, 0.0, 2847.4, 0.0, 0.0), +(6, 16.51, -12.52, -50.0, -44.5, 249.1, 0.0, -181.0, -101.7, 23.39, 306.4, -10.72, 179.7, -128.6, 359.3, -20.98, 53.9, 489.7, 580.5, 53.28, -202.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -31.09, 17.5, 0.0, -119.2, 212.1, 106.3, 0.0, -399.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 138.95, -72.04, 553.56, 0.0, 0.0, 190.24, -33.079, 250.05, 261.54, 0.0), +(7, 300.0, 496.1, 362.3, 377.6, -229.1, 289.6, 0.0, 324.5, -195.4, -116.0, 72.87, 0.0, 540.5, 48.89, 168.0, 304.0, 243.2, 459.0, 112.6, -14.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 887.1, 0.0, 188.0, 12.72, 0.0, 0.0, 0.0, -139.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -655.58, -1163.5, -1159.6, -2181.9, -318.89, 2093.1, 724.93, 1951.4, -1665.5, 0.0), +(8, 0.0, 217.5, 25.34, 244.2, -451.6, -265.2, -601.8, 0.0, -356.1, -271.1, -449.4, 0.0, -162.9, 0.0, 0.0, 0.0, 119.9, -305.5, 0.0, 408.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8484.0, 0.0, 0.0, -687.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 695.7, 0.0, 0.0, 0.0, 1503.5, 0.0, 4027.5, 0.0, 0.0), +(9, 26.76, 42.92, 140.1, 365.8, 164.5, 108.7, 472.5, -133.1, 0.0, -37.36, -213.7, -190.4, -103.6, 0.0, 0.0, 0.0, 6201.0, 7.341, 481.7, 669.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 216.1, -46.28, -163.7, 71.46, 53.59, 245.2, -246.6, -44.58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 132.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(10, 505.7, 56.3, 23.39, 106.0, 529.0, -340.2, 480.8, -155.6, 128.0, 0.0, -110.3, 766.0, 304.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 497.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 117.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -162.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(11, 114.8, 132.1, 85.84, -170.0, 245.4, 249.6, 200.8, -36.72, 372.2, 185.1, 0.0, -241.8, -235.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 660.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 183.0, 0.0, 202.3, -101.7, 148.3, 18.88, 0.0, 52.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 818.72, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(12, 329.3, 110.4, 18.82, 428.0, 139.4, 227.8, 0.0, 0.0, 385.4, -236.5, 1167.0, 0.0, -234.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -268.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 103.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(13, 83.36, 26.51, 52.13, 65.69, 237.7, 238.4, -314.7, -178.5, 191.1, -7.838, 461.3, 457.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 664.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 140.9, -8.538, 170.1, -20.11, -149.5, -202.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2795.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(14, -30.48, 1.163, -44.85, 296.4, -242.8, -481.7, -330.4, 0.0, 0.0, 0.0, 0.0, 0.0, 222.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -70.14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0), +(15, 65.33, -28.7, -22.31, 223.0, -150.0, -370.3, -448.2, 0.0, 394.6, 0.0, 136.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(16, -83.98, -25.38, -223.9, 109.9, 28.6, -406.8, -598.8, 0.0, 225.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(17, 1139.0, 2000.0, 247.5, 762.8, -17.4, -118.1, -341.6, 0.0, -450.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -396.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, -101.6, -47.63, 31.87, 49.8, -132.3, -378.2, -332.9, 0.0, 29.1, 0.0, 0.0, 554.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -153.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 43.717, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(19, 24.82, -40.62, -22.97, -138.4, 185.4, 162.6, 242.8, 0.0, -287.5, 0.0, 0.0, 99.37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(20, 315.3, 1264.0, 62.32, 89.86, -151.0, 339.8, -66.17, 0.0, -297.8, -165.5, 0.0, 193.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 73.859, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(21, 91.46, 40.25, 4.68, 122.9, 562.2, 529.0, 698.2, 0.0, 286.3, -47.51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 519.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(22, 34.01, -23.5, 121.3, 140.8, 527.6, 669.9, 708.7, 0.0, 82.86, 190.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 543.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 36.7, 51.06, 288.5, 69.9, 742.1, 649.1, 826.8, 0.0, 552.1, 242.8, 0.0, 235.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 504.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, -78.45, 160.9, -4.7, 134.7, 856.3, 709.6, 1201.0, 0.0, 372.0, 0.0, 0.0, 351.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 631.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(25, 106.8, 70.32, -97.27, 402.5, 325.7, 612.8, -274.5, 0.0, 518.4, 0.0, 0.0, 383.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 993.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, -32.69, -1.996, 10.38, -97.05, 261.6, 252.6, 417.9, 0.0, -142.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 0.0, 0.0, 1824.0, -127.8, 561.6, 0.0, 360.7, 0.0, -101.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 0.0, 0.0, 21.5, 40.68, 609.8, 914.2, 1081.0, 0.0, 303.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 0.0, 0.0, 28.41, 19.56, 461.6, 448.6, 0.0, 0.0, 160.6, 0.0, 0.0, 201.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 0.0, 0.0, 157.3, 128.8, 521.6, 0.0, 23.48, 0.0, 317.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, -72.88, 41.38, 0.0, 0.0, 68.95, 0.0, 0.0, 0.0, 443.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.648, -10.699, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 50.49, 64.07, -2.504, -143.2, -25.87, 695.0, -240.0, 0.0, 110.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 183.65, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -209.22, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(45, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 95.548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(52, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(55, 1243.9, 2381.1001, 392.16, 607.54, 0.0, -490.47, -395.59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -173.86, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(56, 68.56, 148.57, 16.2, -102.7, 148.16, 414.57, 1720.6, 628.8, 18.074, 340.0, -742.2, 0.0, -350.71, 0.0, 0.0, 0.0, 0.0, -109.83, 0.0, 50.349, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.775, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -5.8025, 0.0, 0.0, 57.144, -30.027, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 126.21, 0.0, 0.0, 366.62, 0.0, 0.0, 0.0, 92.2); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(57, 555.48, 18.78, 108.99, 169.99, 516.17, 2534.4, 60.553, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 85.8, 0.0, 0.0, 0.0, 192.06, 0.0, 0.0, 0.0, 79.06), +(58, 1855.1, 0.0, 0.0, 0.0, 0.0, 0.0, -1899.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 200.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(60, 833.27, 667.1, 363.68, 264.19, 0.0, 2389.2, -1715.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -128.17, -141.07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -157.17), +(61, 0.0, 0.0, -98.107, 40.01, 0.0, 307.198, -8.1881, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(62, 315.96, 399.44, 16.884, 126.44, 2357.2, 2136.6001, 2183.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(63, 0.0, -364.32, -252.61, 0.0, 505.73, 231.32, -6058.1001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(64, -73.88, 0.0, -104.18, -240.46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 110.5, -56.01, 0.0, 0.0, 308.97, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.UNIFACINTERPARAMA_UMRMC( + MAINGROUP INT DEFAULT '0' NOT NULL, + N1 DOUBLE DEFAULT '0', + N2 DOUBLE DEFAULT '0', + N3 DOUBLE DEFAULT '0', + N4 DOUBLE DEFAULT '0', + N5 DOUBLE DEFAULT '0', + N6 DOUBLE DEFAULT '0', + N7 DOUBLE DEFAULT '0', + N8 DOUBLE DEFAULT '0', + N9 DOUBLE DEFAULT '0', + N10 DOUBLE DEFAULT '0', + N11 DOUBLE DEFAULT '0', + N12 DOUBLE DEFAULT '0', + N13 DOUBLE DEFAULT '0', + N14 DOUBLE DEFAULT '0', + N15 DOUBLE DEFAULT '0', + N16 DOUBLE DEFAULT '0', + N17 DOUBLE DEFAULT '0', + N18 DOUBLE DEFAULT '0', + N19 DOUBLE DEFAULT '0', + N20 DOUBLE DEFAULT '0', + N21 DOUBLE DEFAULT '0', + N22 DOUBLE DEFAULT '0', + N23 DOUBLE DEFAULT '0', + N24 DOUBLE DEFAULT '0', + N25 DOUBLE DEFAULT '0', + N26 DOUBLE DEFAULT '0', + N27 DOUBLE DEFAULT '0', + N28 DOUBLE DEFAULT '0', + N29 DOUBLE DEFAULT '0', + N30 DOUBLE DEFAULT '0', + N31 DOUBLE DEFAULT '0', + N32 DOUBLE DEFAULT '0', + N33 DOUBLE DEFAULT '0', + N34 DOUBLE DEFAULT '0', + N35 DOUBLE DEFAULT '0', + N36 DOUBLE DEFAULT '0', + N37 DOUBLE DEFAULT '0', + N38 DOUBLE DEFAULT '0', + N39 DOUBLE DEFAULT '0', + N40 DOUBLE DEFAULT '0', + N41 DOUBLE DEFAULT '0', + N42 DOUBLE DEFAULT '0', + N43 DOUBLE DEFAULT '0', + N44 DOUBLE DEFAULT '0', + N45 DOUBLE DEFAULT '0', + N46 DOUBLE DEFAULT '0', + N47 DOUBLE DEFAULT '0', + N48 DOUBLE DEFAULT '0', + N49 DOUBLE DEFAULT '0', + N50 DOUBLE DEFAULT '0', + N51 DOUBLE DEFAULT '0', + N52 DOUBLE DEFAULT '0', + N53 DOUBLE DEFAULT '0', + N54 DOUBLE DEFAULT '0', + N55 DOUBLE DEFAULT '0', + N56 DOUBLE DEFAULT '0', + N57 DOUBLE DEFAULT '0', + N58 DOUBLE DEFAULT '0', + N59 DOUBLE DEFAULT '0', + N60 DOUBLE DEFAULT '0', + N61 DOUBLE DEFAULT '0', + N62 DOUBLE DEFAULT '0', + N63 DOUBLE DEFAULT '0', + N64 DOUBLE DEFAULT '0', + N65 DOUBLE DEFAULT '0', + N66 DOUBLE DEFAULT '0', + N67 DOUBLE DEFAULT '0', + N68 DOUBLE DEFAULT '0', + N69 DOUBLE DEFAULT '0', + N70 DOUBLE DEFAULT '0' +); +-- 70 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACINTERPARAMA_UMRMC; +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(1, 0.0, 86.02, 64.45, -93.37, 986.5, 617.0, 1306.21, 1333.0, 476.4, 677.0, 232.1, 507.0, 251.5, 391.5, 255.7, 206.6, 920.7, 287.8, 597.0, 663.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 153.6, 184.4, 354.6, 3025.0, 335.8, 479.5, 298.9, 526.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2054.3, 84.68, -214.41, -163.27, 0.0, -4.26, 63.88, 613.3, 0.0, -140.19, 290.49, 0.0, 0.0, 0.0, 1425.0, 291.99), +(2, -35.36, 0.0, 38.81, 74.15, 524.1, 787.6, 270.6, 526.1, 182.6, 448.8, 37.85, 333.5, 214.5, 240.9, 163.9, 61.11, 749.3, 280.5, 336.9, 318.9, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 76.3, 0.0, 262.9, 0.0, 0.0, 183.8, 31.14, 179.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2287.5, -52.107, 38.602, 0.0, 0.0, -231.09, 0.0, 585.0, -241.56, 0.0, 0.0, -35.36, -35.36, -35.36, 0.0, 0.0), +(3, -6.727, 3.446, 0.0, -155.4, 636.1, 594.4, 820.86, 1329.0, 25.77, 347.3, 5.994, 287.1, 32.14, 161.7, 122.8, 90.49, 648.2, -4.449, 212.5, 537.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 52.07, -10.43, -64.69, 210.7, 113.3, 261.3, 0.0, 169.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 627.81, 99.44, -101.91, 0.0, 0.0, 145.18, -74.63, 734.87, 680.05, -56.21, 200.74, -6.727, -6.73, -6.73, 266.7, 158.47), +(4, 252.5, -113.6, 366.6, 0.0, 803.2, 548.8, 1340.41, 884.9, -52.1, 586.8, 5688.0, 197.8, 213.1, 19.02, -49.29, 23.5, 664.2, 52.8, 6096.0, 872.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.451, 393.6, 48.49, 4975.0, 259.0, 210.0, 0.0, 4284.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 821.15, 445.08, -106.63, 0.0, 0.0, 220.66, 273.53, 320.0, 0.0, 69.48, 535.7, 252.5, 252.5, 252.5, 1714.0, 966.73), +(5, 156.4, 457.0, 89.6, 25.82, 0.0, -137.1, 353.5, -259.7, 84.0, -203.6, 101.1, 267.8, 28.06, 8.642, 42.7, -323.0, -52.39, 170.0, 6.712, 199.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 488.9, 147.5, -120.5, -318.9, 313.5, 202.1, 727.8, -202.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 510.64, 671.69, 0.0, 0.0, 0.0, 0.0, 2847.4, 0.0, 0.0, 0.0, 156.4, 156.4, 156.4, 0.0, 0.0), +(6, 28.03, -12.52, -44.29, 217.8, 249.1, 0.0, -34.07, -101.7, 23.39, 306.4, -10.72, 179.7, -128.6, 359.3, -20.98, 53.9, 489.7, 580.5, 53.28, -202.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -31.09, 17.5, 0.0, -119.2, 212.1, 106.3, 0.0, -399.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 138.95, -56.16, -18.94, 0.0, 0.0, 130.58, -33.079, 250.05, 261.54, 70.98, 318.26, 28.03, 16.51, 16.51, 221.0, 0.0), +(7, 476.47, 496.1, 261.22, 149.82, -229.1, 28.66, 0.0, 324.5, -195.4, -116.0, 72.87, 0.0, 540.5, 48.89, 168.0, 304.0, 243.2, 459.0, 112.6, -14.09, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 887.1, 0.0, 188.0, 66.7186, 0.0, 0.0, 0.0, -139.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -655.58, 238.5, 642.84, -2181.9, -318.89, 807.57, 548.77, 1951.4, -1665.5, 550.68, 62.3, 404.16, 520.0, 520.0, 66.72, 472.57), +(8, 0.0, 217.5, 25.34, 244.2, -451.6, -265.2, -601.8, 0.0, -356.1, -271.1, -449.4, 0.0, -162.9, 0.0, 0.0, 0.0, 119.9, -305.5, 0.0, 408.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8484.0, 0.0, 0.0, -687.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 695.7, 0.0, 0.0, 0.0, 1503.5, 0.0, 4027.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(9, 26.76, 42.92, 140.1, 365.8, 164.5, 108.7, 472.5, -133.1, 0.0, -37.36, -213.7, -190.4, -103.6, 0.0, 0.0, 0.0, 6201.0, 7.341, 481.7, 669.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 216.1, -46.28, -163.7, 71.46, 53.59, 245.2, -246.6, -44.58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 132.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.76, 26.76, 26.76, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(10, 505.7, 56.3, 23.39, 106.0, 529.0, -340.2, 480.8, -155.6, 128.0, 0.0, -110.3, 766.0, 304.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 497.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 117.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -162.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 505.7, 505.7, 505.7, 0.0, 0.0), +(11, 114.8, 132.1, 85.84, -170.0, 245.4, 249.6, 200.8, -36.72, 372.2, 185.1, 0.0, -241.8, -235.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 660.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 183.0, 0.0, 202.3, -101.7, 148.3, 18.88, 0.0, 52.08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 818.72, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 114.8, 114.8, 114.8, 0.0, 0.0), +(12, 329.3, 110.4, 18.82, 428.0, 139.4, 227.8, 0.0, 0.0, 385.4, -236.5, 1167.0, 0.0, -234.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -268.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 103.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 329.3, 329.3, 329.3, 0.0, 0.0), +(13, 83.36, 26.51, 52.13, 65.69, 237.7, 238.4, -314.7, -178.5, 191.1, -7.838, 461.3, 457.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 664.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 140.9, -8.538, 170.1, -20.11, -149.5, -202.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2795.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 83.36, 83.36, 83.36, 0.0, 0.0), +(14, -30.48, 1.163, -44.85, 296.4, -242.8, -481.7, -330.4, 0.0, 0.0, 0.0, 0.0, 0.0, 222.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -70.14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -30.48, -30.48, -30.48, 0.0, 0.0), +(15, 65.33, -28.7, -22.31, 223.0, -150.0, -370.3, -448.2, 0.0, 394.6, 0.0, 136.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 65.33, 65.33, 65.33, 0.0, 0.0), +(16, -83.98, -25.38, -223.9, 109.9, 28.6, -406.8, -598.8, 0.0, 225.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -83.98, -83.98, -83.98, 0.0, 0.0), +(17, 1139.0, 2000.0, 247.5, 762.8, -17.4, -118.1, -341.6, 0.0, -450.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -396.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1139.0, 1139.0, 1139.0, 0.0, 0.0), +(18, -101.6, -47.63, 31.87, 49.8, -132.3, -378.2, -332.9, 0.0, 29.1, 0.0, 0.0, 554.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -153.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 43.717, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -101.6, -101.6, -101.6, 0.0, 0.0), +(19, 24.82, -40.62, -22.97, -138.4, 185.4, 162.6, 242.8, 0.0, -287.5, 0.0, 0.0, 99.37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.82, 24.82, 24.82, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(20, 315.3, 1264.0, 62.32, 89.86, -151.0, 339.8, -66.17, 0.0, -297.8, -165.5, 0.0, 193.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 73.859, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 315.3, 315.3, 315.3, 0.0, 0.0), +(21, 91.46, 40.25, 4.68, 122.9, 562.2, 529.0, 698.2, 0.0, 286.3, -47.51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 519.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 91.46, 91.46, 91.46, 0.0, 0.0), +(22, 34.01, -23.5, 121.3, 140.8, 527.6, 669.9, 708.7, 0.0, 82.86, 190.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 543.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.01, 34.01, 34.01, 0.0, 0.0), +(23, 36.7, 51.06, 288.5, 69.9, 742.1, 649.1, 826.8, 0.0, 552.1, 242.8, 0.0, 235.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 504.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.7, 36.7, 36.7, 0.0, 0.0), +(24, -78.45, 160.9, -4.7, 134.7, 856.3, 709.6, 1201.0, 0.0, 372.0, 0.0, 0.0, 351.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 631.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -78.45, -78.45, -78.45, 0.0, 0.0), +(25, 106.8, 70.32, -97.27, 402.5, 325.7, 612.8, -274.5, 0.0, 518.4, 0.0, 0.0, 383.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 993.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 106.8, 106.8, 106.8, 0.0, 0.0), +(26, -32.69, -1.996, 10.38, -97.05, 261.6, 252.6, 417.9, 0.0, -142.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -32.69, -32.69, -32.69, 0.0, 0.0), +(27, 0.0, 0.0, 1824.0, -127.8, 561.6, 0.0, 360.7, 0.0, -101.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 0.0, 0.0, 21.5, 40.68, 609.8, 914.2, 1081.0, 0.0, 303.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 0.0, 0.0, 28.41, 19.56, 461.6, 448.6, 0.0, 0.0, 160.6, 0.0, 0.0, 201.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(30, 0.0, 0.0, 157.3, 128.8, 521.6, 0.0, 23.48, 0.0, 317.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 139.93, 0.0, 221.4, 150.64, 267.6, 240.8, -188.033, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 296.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 139.93, 139.93, 139.93, 0.0, 0.0), +(32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 79.18, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, -72.88, 41.38, 0.0, 0.0, 68.95, 0.0, 0.0, 0.0, 443.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.648, -10.699, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -72.88, -72.88, -72.88, 0.0, 0.0), +(35, 50.49, 64.07, -2.504, -143.2, -25.87, 695.0, -240.0, 0.0, 110.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 50.49, 50.49, 50.49, 0.0, 0.0), +(36, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 386.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -287.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 183.65, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -209.22, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(45, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 95.548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(52, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(55, 1243.9, 2381.1001, 392.16, 607.54, 0.0, -490.47, -395.59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -173.86, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1243.9, 1243.9, 1243.9, 0.0, 0.0), +(56, 70.06, 148.57, 11.83, -114.65, 148.16, 403.33, 797.17, 628.8, 18.074, 340.0, -742.2, 0.0, -350.71, 0.0, 0.0, 0.0, 0.0, -109.83, 0.0, 50.349, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.775, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -5.8025, 0.0, 0.0, 57.144, -30.027, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 301.98, 0.0, 0.0, 382.68, 91.51, 0.0, 0.0, 90.86, 372.86, 39.01, 70.06, 70.06, 493.82, 372.26), +(57, 328.8, 18.78, 186.09, 142.11, 516.17, 839.66, 1439.17, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 947.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -83.73, 0.0, 0.0, 0.0, 194.04, 62.67, 0.0, 0.0, 96.49, 252.3, 155.72, 328.8, 328.8, 1279.79, 194.03), +(58, 1855.1, 0.0, 0.0, 0.0, 0.0, 0.0, -1899.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1855.1, 1855.1, 1855.1, 0.0, 0.0), +(59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 200.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(60, 112.52, 667.1, 143.87, 220.34, 0.0, 781.06, 3000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -137.9, -119.61, 0.0, 0.0, 0.0, 232.33, 0.0, 0.0, -154.52, 320.7, 117.22, -126.88, -126.88, 635.01, 347.58), +(61, 134.33, 0.0, 62.48, -66.91, 0.0, 307.198, 223.51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 121.33, 277.08, 0.0, 0.0, 401.92, 0.0, 0.0, 0.0, 81.54, 0.0, -80.98, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMA_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(62, 315.96, 399.44, 16.884, 126.44, 2357.2, 2136.6001, 2183.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 315.96, 315.96, 315.96, 0.0, 0.0), +(63, 0.0, -364.32, -252.61, 0.0, 505.73, 231.32, -6058.1001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(64, 154.49, 0.0, 103.72, -43.13, 0.0, 272.06, 1378.84, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 117.63, -71.15, 0.0, 0.0, 303.92, 157.67, 0.0, 0.0, 0.0, 392.49, 107.27, 154.49, 154.49, 509.29, 1164.88), +(65, 321.06, 0.0, 642.39, -52.01, 0.0, 276.77, 322.47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 160.08, 505.0, 0.0, 0.0, 551.9, 0.0, 0.0, 0.0, 81.88, 0.0, 270.08, 2630.873941855, 2630.873941855, 0.0, 0.0), +(66, 0.0, 86.02, 64.45, -93.37, 986.5, 617.0, 1299.01, 1333.0, 476.4, 677.0, 232.1, 507.0, 251.5, 391.5, 255.7, 206.6, 920.7, 287.8, 597.0, 663.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 153.6, 184.4, 354.6, 3025.0, 335.8, 479.5, 298.9, 526.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2054.3, 141.64, -119.88, -163.27, 0.0, -13.69, -248.36, 613.3, 0.0, -95.39, 294.85, 0.0, 0.0, 0.0, 1425.0, 291.99), +(67, 0.0, 86.02, 64.45, -93.37, 986.5, 697.2, 1300.0, 1333.0, 476.4, 677.0, 232.1, 507.0, 251.5, 391.5, 255.7, 206.6, 920.7, 287.8, 597.0, 663.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 153.6, 184.4, 354.6, 3025.0, 335.8, 479.5, 298.9, 526.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2054.3, 84.68, -214.41, -163.27, 0.0, 194.94, 0.0, 613.3, 0.0, -140.19, 189.751744175727, 0.0, 0.0, 0.0, 0.0, 0.0), +(68, 0.0, 86.02, 64.45, -93.37, 986.5, 697.2, 1300.0, 1333.0, 476.4, 677.0, 232.1, 507.0, 251.5, 391.5, 255.7, 206.6, 920.7, 287.8, 597.0, 663.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 153.6, 184.4, 354.6, 3025.0, 335.8, 479.5, 298.9, 526.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2054.3, 84.68, -214.41, -163.27, 0.0, 194.94, 0.0, 613.3, 0.0, -140.19, 189.751744175727, 0.0, 0.0, 0.0, 0.0, 0.0), +(69, -79.67, 0.0, 155.6, 2127.0, 0.0, 168.7, -188.03, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 286.83, 0.0, 65.9, 500.41, 0.0, 0.0, 0.0, 260.21, 0.0, -79.67, 0.0, 0.0, 0.0, 0.0), +(70, 103.84, 0.0, -13.11, -120.77, 0.0, 0.0, -362.51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 225.27, 0.0, -103.95, 592.37, 0.0, 0.0, 0.0, 4.06, 0.0, 103.84, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.UNIFACINTERPARAMB( + MAINGROUP INT DEFAULT '0' NOT NULL, + N1 DOUBLE DEFAULT '0', + N2 DOUBLE DEFAULT '0', + N3 DOUBLE DEFAULT '0', + N4 DOUBLE DEFAULT '0', + N5 DOUBLE DEFAULT '0', + N6 DOUBLE DEFAULT '0', + N7 DOUBLE DEFAULT '0', + N8 DOUBLE DEFAULT '0', + N9 DOUBLE DEFAULT '0', + N10 DOUBLE DEFAULT '0', + N11 DOUBLE DEFAULT '0', + N12 DOUBLE DEFAULT '0', + N13 DOUBLE DEFAULT '0', + N14 DOUBLE DEFAULT '0', + N15 DOUBLE DEFAULT '0', + N16 DOUBLE DEFAULT '0', + N17 DOUBLE DEFAULT '0', + N18 DOUBLE DEFAULT '0', + N19 DOUBLE DEFAULT '0', + N20 DOUBLE DEFAULT '0', + N21 DOUBLE DEFAULT '0', + N22 DOUBLE DEFAULT '0', + N23 DOUBLE DEFAULT '0', + N24 DOUBLE DEFAULT '0', + N25 DOUBLE DEFAULT '0', + N26 DOUBLE DEFAULT '0', + N27 DOUBLE DEFAULT '0', + N28 DOUBLE DEFAULT '0', + N29 DOUBLE DEFAULT '0', + N30 DOUBLE DEFAULT '0', + N31 DOUBLE DEFAULT '0', + N32 DOUBLE DEFAULT '0', + N33 DOUBLE DEFAULT '0', + N34 DOUBLE DEFAULT '0', + N35 DOUBLE DEFAULT '0', + N36 DOUBLE DEFAULT '0', + N37 DOUBLE DEFAULT '0', + N38 DOUBLE DEFAULT '0', + N39 DOUBLE DEFAULT '0', + N40 DOUBLE DEFAULT '0', + N41 DOUBLE DEFAULT '0', + N42 DOUBLE DEFAULT '0', + N43 DOUBLE DEFAULT '0', + N44 DOUBLE DEFAULT '0', + N45 DOUBLE DEFAULT '0', + N46 DOUBLE DEFAULT '0', + N47 DOUBLE DEFAULT '0', + N48 DOUBLE DEFAULT '0', + N49 DOUBLE DEFAULT '0', + N50 DOUBLE DEFAULT '0', + N51 DOUBLE DEFAULT '0', + N52 DOUBLE DEFAULT '0', + N53 DOUBLE DEFAULT '0', + N54 DOUBLE DEFAULT '0', + N55 DOUBLE DEFAULT '0', + N56 DOUBLE DEFAULT '0', + N57 DOUBLE DEFAULT '0', + N58 DOUBLE DEFAULT '0', + N59 DOUBLE DEFAULT '0', + N60 DOUBLE DEFAULT '0', + N61 DOUBLE DEFAULT '0', + N62 DOUBLE DEFAULT '0', + N63 DOUBLE DEFAULT '0', + N64 DOUBLE DEFAULT '0' +); +-- 64 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACINTERPARAMB; +INSERT INTO PUBLIC.UNIFACINTERPARAMB(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.4233, -3.9132, 0.8459, 0.0, 0.0, -0.9903, -3.1342, 0.0, 0.0, 0.0), +(2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -52.107, 0.0, 0.0, 0.0, -231.09, 0.0, -0.8727, 1.2296, 0.0), +(3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0), +(6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.7829, 0.0, 0.0, 0.0, 0.0, 0.0, 0.335, 0.0), +(7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0667, 5.4765, 8.6791, 14.238, 2.8368, -1.9652, -0.0136, 0.0, 0.0, 0.0), +(8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4761, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(10, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.5627, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(13, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(16, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(17, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(21, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(22, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.7024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(45, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(52, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(55, 17.412, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2461, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(56, 0.86149, -1.11151, 0.0, 0.0, 0.0, 0.0, -4.3437, 0.0, 1.8879, 0.0, 2.9173, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.9138, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.6997, 0.0, 0.0, 0.0, 0.0), +(57, -0.7386, 0.0, 0.0, 0.0, 0.0, -9.2193, 4.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 58.045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(60, 0.3229, -8.0999, 0.0, 0.0, 0.0, 0.0, 5.48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.0173, 0.0, 0.0, 0.0, 0.0, -2.1569, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(61, -5.7074, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2077, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.30072, 0.0, 0.0, 0.0, 0.0), +(62, -0.4563, -0.5806, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(63, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0476, 31.281, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(64, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.UNIFACINTERPARAMB_UMR( + MAINGROUP INT DEFAULT '0' NOT NULL, + N1 DOUBLE DEFAULT '0', + N2 DOUBLE DEFAULT '0', + N3 DOUBLE DEFAULT '0', + N4 DOUBLE DEFAULT '0', + N5 DOUBLE DEFAULT '0', + N6 DOUBLE DEFAULT '0', + N7 DOUBLE DEFAULT '0', + N8 DOUBLE DEFAULT '0', + N9 DOUBLE DEFAULT '0', + N10 DOUBLE DEFAULT '0', + N11 DOUBLE DEFAULT '0', + N12 DOUBLE DEFAULT '0', + N13 DOUBLE DEFAULT '0', + N14 DOUBLE DEFAULT '0', + N15 DOUBLE DEFAULT '0', + N16 DOUBLE DEFAULT '0', + N17 DOUBLE DEFAULT '0', + N18 DOUBLE DEFAULT '0', + N19 DOUBLE DEFAULT '0', + N20 DOUBLE DEFAULT '0', + N21 DOUBLE DEFAULT '0', + N22 DOUBLE DEFAULT '0', + N23 DOUBLE DEFAULT '0', + N24 DOUBLE DEFAULT '0', + N25 DOUBLE DEFAULT '0', + N26 DOUBLE DEFAULT '0', + N27 DOUBLE DEFAULT '0', + N28 DOUBLE DEFAULT '0', + N29 DOUBLE DEFAULT '0', + N30 DOUBLE DEFAULT '0', + N31 DOUBLE DEFAULT '0', + N32 DOUBLE DEFAULT '0', + N33 DOUBLE DEFAULT '0', + N34 DOUBLE DEFAULT '0', + N35 DOUBLE DEFAULT '0', + N36 DOUBLE DEFAULT '0', + N37 DOUBLE DEFAULT '0', + N38 DOUBLE DEFAULT '0', + N39 DOUBLE DEFAULT '0', + N40 DOUBLE DEFAULT '0', + N41 DOUBLE DEFAULT '0', + N42 DOUBLE DEFAULT '0', + N43 DOUBLE DEFAULT '0', + N44 DOUBLE DEFAULT '0', + N45 DOUBLE DEFAULT '0', + N46 DOUBLE DEFAULT '0', + N47 DOUBLE DEFAULT '0', + N48 DOUBLE DEFAULT '0', + N49 DOUBLE DEFAULT '0', + N50 DOUBLE DEFAULT '0', + N51 DOUBLE DEFAULT '0', + N52 DOUBLE DEFAULT '0', + N53 DOUBLE DEFAULT '0', + N54 DOUBLE DEFAULT '0', + N55 DOUBLE DEFAULT '0', + N56 DOUBLE DEFAULT '0', + N57 DOUBLE DEFAULT '0', + N58 DOUBLE DEFAULT '0', + N59 DOUBLE DEFAULT '0', + N60 DOUBLE DEFAULT '0', + N61 DOUBLE DEFAULT '0', + N62 DOUBLE DEFAULT '0', + N63 DOUBLE DEFAULT '0', + N64 DOUBLE DEFAULT '0' +); +-- 64 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACINTERPARAMB_UMR; +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(1, 0.0, 0.0, 0.3745, -1.103, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.4233, -0.5714, -1.2346, 0.0, 0.0, -0.9754, 0.0, 0.0, 0.0, 0.1126), +(2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -52.107, 0.0, 0.0, 0.0, -231.09, 0.0, -0.8727, 1.2296, 0.0), +(3, -0.5662, 0.0, 0.0, -1.489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 1.557, -1.305, 0.0, 0.0, -1.205, 0.0, 0.0, 0.0, -0.7241), +(4, 2.65, 0.0, 13.22, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.5931, 1.393, 0.0, 0.0, 0.5598, 0.0, 0.0, 0.0, 2.5318), +(5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0), +(6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.7829, 0.0, 0.0, 0.0, 0.0, 0.0, 0.335, 0.0), +(7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0667, 5.4765, 8.6791, 14.238, 2.8368, -1.9652, -0.0136, 0.0, 0.0, 0.0), +(8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4761, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(10, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.5627, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(13, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(16, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(17, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(21, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(22, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.7024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(45, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(52, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(55, 17.412, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2461, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(56, -0.8739, -1.11151, -2.2538, -3.0502, 0.0, 0.0, -4.3437, 0.0, 1.8879, 0.0, 2.9173, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.9138, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.4439, 0.0, 0.0, 1.53, 0.0, 0.0, 0.0, -0.6847), +(57, 2.8287, 0.0, 1.695, -3.142, 0.0, -9.2193, 4.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.1959, 0.0, 0.0, 0.0, 0.7909, 0.0, 0.0, 0.0, 0.2497), +(58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 58.045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(60, -2.5383, -8.0999, 1.801, -3.614, 0.0, 0.0, 5.48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.665, -0.8494, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.9411); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(61, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2077, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(62, -0.4563, -0.5806, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(63, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0476, 31.281, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(64, -0.4092, 0.0, 0.1872, -1.2151, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.3805, -0.1798, 0.0, 0.0, 1.003, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.UNIFACINTERPARAMB_UMRMC( + MAINGROUP INT DEFAULT '0' NOT NULL, + N1 DOUBLE DEFAULT '0', + N2 DOUBLE DEFAULT '0', + N3 DOUBLE DEFAULT '0', + N4 DOUBLE DEFAULT '0', + N5 DOUBLE DEFAULT '0', + N6 DOUBLE DEFAULT '0', + N7 DOUBLE DEFAULT '0', + N8 DOUBLE DEFAULT '0', + N9 DOUBLE DEFAULT '0', + N10 DOUBLE DEFAULT '0', + N11 DOUBLE DEFAULT '0', + N12 DOUBLE DEFAULT '0', + N13 DOUBLE DEFAULT '0', + N14 DOUBLE DEFAULT '0', + N15 DOUBLE DEFAULT '0', + N16 DOUBLE DEFAULT '0', + N17 DOUBLE DEFAULT '0', + N18 DOUBLE DEFAULT '0', + N19 DOUBLE DEFAULT '0', + N20 DOUBLE DEFAULT '0', + N21 DOUBLE DEFAULT '0', + N22 DOUBLE DEFAULT '0', + N23 DOUBLE DEFAULT '0', + N24 DOUBLE DEFAULT '0', + N25 DOUBLE DEFAULT '0', + N26 DOUBLE DEFAULT '0', + N27 DOUBLE DEFAULT '0', + N28 DOUBLE DEFAULT '0', + N29 DOUBLE DEFAULT '0', + N30 DOUBLE DEFAULT '0', + N31 DOUBLE DEFAULT '0', + N32 DOUBLE DEFAULT '0', + N33 DOUBLE DEFAULT '0', + N34 DOUBLE DEFAULT '0', + N35 DOUBLE DEFAULT '0', + N36 DOUBLE DEFAULT '0', + N37 DOUBLE DEFAULT '0', + N38 DOUBLE DEFAULT '0', + N39 DOUBLE DEFAULT '0', + N40 DOUBLE DEFAULT '0', + N41 DOUBLE DEFAULT '0', + N42 DOUBLE DEFAULT '0', + N43 DOUBLE DEFAULT '0', + N44 DOUBLE DEFAULT '0', + N45 DOUBLE DEFAULT '0', + N46 DOUBLE DEFAULT '0', + N47 DOUBLE DEFAULT '0', + N48 DOUBLE DEFAULT '0', + N49 DOUBLE DEFAULT '0', + N50 DOUBLE DEFAULT '0', + N51 DOUBLE DEFAULT '0', + N52 DOUBLE DEFAULT '0', + N53 DOUBLE DEFAULT '0', + N54 DOUBLE DEFAULT '0', + N55 DOUBLE DEFAULT '0', + N56 DOUBLE DEFAULT '0', + N57 DOUBLE DEFAULT '0', + N58 DOUBLE DEFAULT '0', + N59 DOUBLE DEFAULT '0', + N60 DOUBLE DEFAULT '0', + N61 DOUBLE DEFAULT '0', + N62 DOUBLE DEFAULT '0', + N63 DOUBLE DEFAULT '0', + N64 DOUBLE DEFAULT '0', + N65 DOUBLE DEFAULT '0', + N66 DOUBLE DEFAULT '0', + N67 DOUBLE DEFAULT '0', + N68 DOUBLE DEFAULT '0', + N69 DOUBLE DEFAULT '0', + N70 DOUBLE DEFAULT '0' +); +-- 70 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACINTERPARAMB_UMRMC; +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(1, 0.0, 0.0, 0.3745, -1.103, 0.0, 3.838, -5.4533, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.4233, -0.6989, -1.2202, 0.0, 0.0, 0.6264, -2.0082, 0.0, 0.0, -0.1858, -0.509, 0.0, 0.0, 0.0, 11.5, 1.1706), +(2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -52.107, 0.0, 0.0, 0.0, -231.09, 0.0, -0.8727, 1.2296, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(3, -0.5662, 0.0, 0.0, -1.489, 0.0, -1.204, -2.9642, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 1.3868, -0.2089, 0.0, 0.0, -0.449, -2.5137, 0.0, 0.0, 0.2907, -0.643, -0.5662, -0.5662, -0.5662, 1.057, 1.3927), +(4, 2.65, 0.0, 13.22, 0.0, 0.0, 19.55, -3.6437, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.1868, 0.934, 0.0, 0.0, 0.5403, 0.6511, 0.0, 0.0, 1.2465, 1.909, 2.65, 2.65, 2.65, 4.024, -5.4262), +(5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6, -1.103, 0.0, 0.2903, -4.019, 0.0, 0.0, -2.069, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.10186, 1.0329, 0.0, 0.0, -0.2165, 0.0, 0.0, 0.335, -0.4136, -0.319, -1.103, 0.0, 0.0, -4.431, 0.0), +(7, 2.1412, 0.0, 1.0857, 1.6939, 0.0, 4.096, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0667, 2.5858, 5.1182, 14.238, 2.8368, 6.0191, -9.0E-4, 0.0, 0.0, 2.8832, 0.239, 1.1794, 0.0, 0.0, 0.0, -1.4976), +(8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4761, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(10, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.5627, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(13, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(16, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(17, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(21, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(22, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.60643, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.7024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(45, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(52, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(55, 17.412, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2461, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.412, 17.412, 17.412, 0.0, 0.0), +(56, -0.7276, -1.11151, -2.0568, -3.6506, 0.0, -2.5506, -4.6677, 0.0, 1.8879, 0.0, 2.9173, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.9138, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.6951, 0.0, 0.0, 1.5736, -0.5133, 0.0, 0.0, -0.4893, -2.529, 0.1982, -0.7276, -0.7276, -2.0949, -4.2923), +(57, 1.8031, 0.0, -0.5933, -0.3771, 0.0, -6.7, -6.87672, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.9825, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.257, 0.0, 0.0, 0.0, 0.8318, -0.0552, 0.0, 0.0, 0.5073, -2.4, -0.4666, 1.8031, 1.8031, -2.5213, 6.0149), +(58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 58.045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(60, -1.4903, -8.0999, -0.47, -1.2827, 0.0, 3.2801, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.6936, -0.7538, 0.0, 0.0, 0.0, -1.191, 0.0, 0.0, -0.9021, 0.0, -1.2861, -1.5392, -1.5392, -6.7326, 2.6335), +(61, 1.1665, 0.0, 1.0504, -0.2784, 0.0, 0.0, 2.1168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0826, -0.5438, 0.0, 0.0, -0.6149, 0.0, 0.0, 0.0, -0.5995, 0.0, -0.6308, 0.0, 0.0, 0.0, 0.0), +(62, -0.4563, -0.5806, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.4563, -0.4563, -0.4563, 0.0, 0.0), +(63, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0476, 31.281, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(64, -0.2815, 0.0, -1.0959, -0.1106, 0.0, 1.1443, -9.2622, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.3263, -0.4012, 0.0, 0.0, 0.9497, -0.4287, 0.0, 0.0, 0.0, -1.311, 0.0615, -0.2815, -0.2815, -2.5749, -3.6733); +INSERT INTO PUBLIC.UNIFACINTERPARAMB_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(65, 1.078, 0.0, 1.625, -1.41, 0.0, 0.851, -0.888, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.718, 8.27, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.005, 0.0, -0.034, 0.0, 0.0, 0.0, 0.0), +(66, 0.0, 0.0, 0.3745, -1.103, 0.0, 3.838, -3.2645, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.4233, -1.3184, 0.0722, 0.0, 0.0, 1.3408, 0.0394, 0.0, 0.0, -0.3512, -0.145, 0.0, 0.0, 0.0, 11.5, 1.1706), +(67, 0.0, 0.0, 0.3745, -1.103, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.4233, -0.6989, -1.2202, 0.0, 0.0, 1.4609, 0.0, 0.0, 0.0, -0.1858, -0.8968314907, 0.0, 0.0, 0.0, 0.0, 0.0), +(68, 0.0, 0.0, 0.3745, -1.103, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.4233, -0.6989, -1.2202, 0.0, 0.0, 1.4609, 0.0, 0.0, 0.0, -0.1858, -0.8968314907, 0.0, 0.0, 0.0, 0.0, 0.0), +(69, 2.136, 0.0, -0.5324, -11.9, 0.0, 6.008, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0507, 0.9565, 0.0, 0.0, 3.9826, 0.0, 0.0, 0.0, 1.0428, 0.0, 2.136, 0.0, 0.0, 0.0, 0.0), +(70, -0.6775, 0.0, -0.881, 1.9055, 0.0, 0.0, 0.3311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5947, -3.9421, 0.0, 0.0, -1.3372, 0.0, 0.0, 0.0, -0.9091, 0.0, -0.6775, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.UNIFACINTERPARAMC( + MAINGROUP INT DEFAULT '0' NOT NULL, + N1 DOUBLE DEFAULT '0', + N2 DOUBLE DEFAULT '0', + N3 DOUBLE DEFAULT '0', + N4 DOUBLE DEFAULT '0', + N5 DOUBLE DEFAULT '0', + N6 DOUBLE DEFAULT '0', + N7 DOUBLE DEFAULT '0', + N8 DOUBLE DEFAULT '0', + N9 DOUBLE DEFAULT '0', + N10 DOUBLE DEFAULT '0', + N11 DOUBLE DEFAULT '0', + N12 DOUBLE DEFAULT '0', + N13 DOUBLE DEFAULT '0', + N14 DOUBLE DEFAULT '0', + N15 DOUBLE DEFAULT '0', + N16 DOUBLE DEFAULT '0', + N17 DOUBLE DEFAULT '0', + N18 DOUBLE DEFAULT '0', + N19 DOUBLE DEFAULT '0', + N20 DOUBLE DEFAULT '0', + N21 DOUBLE DEFAULT '0', + N22 DOUBLE DEFAULT '0', + N23 DOUBLE DEFAULT '0', + N24 DOUBLE DEFAULT '0', + N25 DOUBLE DEFAULT '0', + N26 DOUBLE DEFAULT '0', + N27 DOUBLE DEFAULT '0', + N28 DOUBLE DEFAULT '0', + N29 DOUBLE DEFAULT '0', + N30 DOUBLE DEFAULT '0', + N31 DOUBLE DEFAULT '0', + N32 DOUBLE DEFAULT '0', + N33 DOUBLE DEFAULT '0', + N34 DOUBLE DEFAULT '0', + N35 DOUBLE DEFAULT '0', + N36 DOUBLE DEFAULT '0', + N37 DOUBLE DEFAULT '0', + N38 DOUBLE DEFAULT '0', + N39 DOUBLE DEFAULT '0', + N40 DOUBLE DEFAULT '0', + N41 DOUBLE DEFAULT '0', + N42 DOUBLE DEFAULT '0', + N43 DOUBLE DEFAULT '0', + N44 DOUBLE DEFAULT '0', + N45 DOUBLE DEFAULT '0', + N46 DOUBLE DEFAULT '0', + N47 DOUBLE DEFAULT '0', + N48 DOUBLE DEFAULT '0', + N49 DOUBLE DEFAULT '0', + N50 DOUBLE DEFAULT '0', + N51 DOUBLE DEFAULT '0', + N52 DOUBLE DEFAULT '0', + N53 DOUBLE DEFAULT '0', + N54 DOUBLE DEFAULT '0', + N55 DOUBLE DEFAULT '0', + N56 DOUBLE DEFAULT '0', + N57 DOUBLE DEFAULT '0', + N58 DOUBLE DEFAULT '0', + N59 DOUBLE DEFAULT '0', + N60 DOUBLE DEFAULT '0', + N61 DOUBLE DEFAULT '0', + N62 DOUBLE DEFAULT '0', + N63 DOUBLE DEFAULT '0', + N64 DOUBLE DEFAULT '0' +); +-- 64 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACINTERPARAMC; +INSERT INTO PUBLIC.UNIFACINTERPARAMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00577, 0.001094, 0.0, 0.0, -0.00198, 0.0, 0.0, 0.0, 9.55E-4), +(2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.01655, 0.0, 0.0, 0.0, 0.0), +(3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00785, 0.002178, 0.0, 0.0, -0.001061, 0.0, 0.0, 0.0, 0.0), +(4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01293, -0.008429, 0.0, 0.0, -0.003968, 0.0, 0.0, 0.0, 0.051615), +(5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01032, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.792E-4, -0.002603, -0.006993, -0.01245, 0.0, 0.0, 0.001058, 0.0, -0.01405, 0.0), +(8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(10, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(13, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(16, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(17, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(21, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(22, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(45, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(52, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(55, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(56, -8.0E-5, 0.0, 0.00105, 0.012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(57, -0.010592, 0.0, 5.09E-4, 0.01018, 0.0, 0.0, -0.006244, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(60, 0.036193, 0.02256, -0.006569, 0.01502, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(61, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(62, -0.00156, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(63, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(64, 6.5E-5, 0.0, 0.0, -8.6E-5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.UNIFACINTERPARAMC_UMR( + MAINGROUP INT DEFAULT '0' NOT NULL, + N1 DOUBLE DEFAULT '0', + N2 DOUBLE DEFAULT '0', + N3 DOUBLE DEFAULT '0', + N4 DOUBLE DEFAULT '0', + N5 DOUBLE DEFAULT '0', + N6 DOUBLE DEFAULT '0', + N7 DOUBLE DEFAULT '0', + N8 DOUBLE DEFAULT '0', + N9 DOUBLE DEFAULT '0', + N10 DOUBLE DEFAULT '0', + N11 DOUBLE DEFAULT '0', + N12 DOUBLE DEFAULT '0', + N13 DOUBLE DEFAULT '0', + N14 DOUBLE DEFAULT '0', + N15 DOUBLE DEFAULT '0', + N16 DOUBLE DEFAULT '0', + N17 DOUBLE DEFAULT '0', + N18 DOUBLE DEFAULT '0', + N19 DOUBLE DEFAULT '0', + N20 DOUBLE DEFAULT '0', + N21 DOUBLE DEFAULT '0', + N22 DOUBLE DEFAULT '0', + N23 DOUBLE DEFAULT '0', + N24 DOUBLE DEFAULT '0', + N25 DOUBLE DEFAULT '0', + N26 DOUBLE DEFAULT '0', + N27 DOUBLE DEFAULT '0', + N28 DOUBLE DEFAULT '0', + N29 DOUBLE DEFAULT '0', + N30 DOUBLE DEFAULT '0', + N31 DOUBLE DEFAULT '0', + N32 DOUBLE DEFAULT '0', + N33 DOUBLE DEFAULT '0', + N34 DOUBLE DEFAULT '0', + N35 DOUBLE DEFAULT '0', + N36 DOUBLE DEFAULT '0', + N37 DOUBLE DEFAULT '0', + N38 DOUBLE DEFAULT '0', + N39 DOUBLE DEFAULT '0', + N40 DOUBLE DEFAULT '0', + N41 DOUBLE DEFAULT '0', + N42 DOUBLE DEFAULT '0', + N43 DOUBLE DEFAULT '0', + N44 DOUBLE DEFAULT '0', + N45 DOUBLE DEFAULT '0', + N46 DOUBLE DEFAULT '0', + N47 DOUBLE DEFAULT '0', + N48 DOUBLE DEFAULT '0', + N49 DOUBLE DEFAULT '0', + N50 DOUBLE DEFAULT '0', + N51 DOUBLE DEFAULT '0', + N52 DOUBLE DEFAULT '0', + N53 DOUBLE DEFAULT '0', + N54 DOUBLE DEFAULT '0', + N55 DOUBLE DEFAULT '0', + N56 DOUBLE DEFAULT '0', + N57 DOUBLE DEFAULT '0', + N58 DOUBLE DEFAULT '0', + N59 DOUBLE DEFAULT '0', + N60 DOUBLE DEFAULT '0', + N61 DOUBLE DEFAULT '0', + N62 DOUBLE DEFAULT '0', + N63 DOUBLE DEFAULT '0', + N64 DOUBLE DEFAULT '0' +); +-- 64 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACINTERPARAMC_UMR; +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00577, 0.001094, 0.0, 0.0, -0.00198, 0.0, 0.0, 0.0, 9.55E-4), +(2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.01655, 0.0, 0.0, 0.0, 0.0), +(3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00785, 0.002178, 0.0, 0.0, -0.001061, 0.0, 0.0, 0.0, 0.0), +(4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01293, -0.008429, 0.0, 0.0, -0.003968, 0.0, 0.0, 0.0, 0.051615), +(5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01032, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.792E-4, -0.002603, -0.006993, -0.01245, 0.0, 0.0, 0.001058, 0.0, -0.01405, 0.0), +(8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(10, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(13, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(16, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(17, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(21, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(22, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(45, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(52, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(55, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(56, -8.0E-5, 0.0, 0.00105, 0.012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(57, -0.010592, 0.0, 5.09E-4, 0.01018, 0.0, 0.0, -0.006244, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(60, 0.036193, 0.02256, -0.006569, 0.01502, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMR(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64) VALUES +(61, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(62, -0.00156, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(63, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(64, 6.5E-5, 0.0, 0.0, -8.6E-5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.UNIFACINTERPARAMC_UMRMC( + MAINGROUP INT DEFAULT '0' NOT NULL, + N1 DOUBLE DEFAULT '0', + N2 DOUBLE DEFAULT '0', + N3 DOUBLE DEFAULT '0', + N4 DOUBLE DEFAULT '0', + N5 DOUBLE DEFAULT '0', + N6 DOUBLE DEFAULT '0', + N7 DOUBLE DEFAULT '0', + N8 DOUBLE DEFAULT '0', + N9 DOUBLE DEFAULT '0', + N10 DOUBLE DEFAULT '0', + N11 DOUBLE DEFAULT '0', + N12 DOUBLE DEFAULT '0', + N13 DOUBLE DEFAULT '0', + N14 DOUBLE DEFAULT '0', + N15 DOUBLE DEFAULT '0', + N16 DOUBLE DEFAULT '0', + N17 DOUBLE DEFAULT '0', + N18 DOUBLE DEFAULT '0', + N19 DOUBLE DEFAULT '0', + N20 DOUBLE DEFAULT '0', + N21 DOUBLE DEFAULT '0', + N22 DOUBLE DEFAULT '0', + N23 DOUBLE DEFAULT '0', + N24 DOUBLE DEFAULT '0', + N25 DOUBLE DEFAULT '0', + N26 DOUBLE DEFAULT '0', + N27 DOUBLE DEFAULT '0', + N28 DOUBLE DEFAULT '0', + N29 DOUBLE DEFAULT '0', + N30 DOUBLE DEFAULT '0', + N31 DOUBLE DEFAULT '0', + N32 DOUBLE DEFAULT '0', + N33 DOUBLE DEFAULT '0', + N34 DOUBLE DEFAULT '0', + N35 DOUBLE DEFAULT '0', + N36 DOUBLE DEFAULT '0', + N37 DOUBLE DEFAULT '0', + N38 DOUBLE DEFAULT '0', + N39 DOUBLE DEFAULT '0', + N40 DOUBLE DEFAULT '0', + N41 DOUBLE DEFAULT '0', + N42 DOUBLE DEFAULT '0', + N43 DOUBLE DEFAULT '0', + N44 DOUBLE DEFAULT '0', + N45 DOUBLE DEFAULT '0', + N46 DOUBLE DEFAULT '0', + N47 DOUBLE DEFAULT '0', + N48 DOUBLE DEFAULT '0', + N49 DOUBLE DEFAULT '0', + N50 DOUBLE DEFAULT '0', + N51 DOUBLE DEFAULT '0', + N52 DOUBLE DEFAULT '0', + N53 DOUBLE DEFAULT '0', + N54 DOUBLE DEFAULT '0', + N55 DOUBLE DEFAULT '0', + N56 DOUBLE DEFAULT '0', + N57 DOUBLE DEFAULT '0', + N58 DOUBLE DEFAULT '0', + N59 DOUBLE DEFAULT '0', + N60 DOUBLE DEFAULT '0', + N61 DOUBLE DEFAULT '0', + N62 DOUBLE DEFAULT '0', + N63 DOUBLE DEFAULT '0', + N64 DOUBLE DEFAULT '0', + N65 DOUBLE DEFAULT '0', + N66 DOUBLE DEFAULT '0', + N67 DOUBLE DEFAULT '0', + N68 DOUBLE DEFAULT '0', + N69 DOUBLE DEFAULT '0', + N70 DOUBLE DEFAULT '0' +); +-- 70 +/- SELECT COUNT(*) FROM PUBLIC.UNIFACINTERPARAMC_UMRMC; +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0138, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.002966, 0.004627, 0.0, 0.0, 0.002043, 6.04E-4, 0.0, 0.0, -0.005389, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0083), +(2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.01655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.002298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.007309, 4.85E-4, 0.0, 0.0, -7.72E-4, 0.001625, 0.0, 0.0, -0.003034, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.00134, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.304722, -0.007403, 0.0, 0.0, 0.004442, -0.012116, 0.0, 0.0, -0.003004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.019783, 0.012878, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.050647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(7, -0.0098, 0.0, -0.0052, -0.00258, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.792E-4, 0.001055, -0.013506, -0.01245, 0.0, -0.01988, -0.007662, 0.0, -0.01405, 0.001402, 0.0, -0.0052, 0.0, 0.0, 0.0, 0.0), +(8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(10, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(13, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(16, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(17, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(18, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(21, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(22, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(24, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(27, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(29, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(30, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(31, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.00803, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(34, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(35, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(36, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(42, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(45, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(52, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(55, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(56, 0.002452, 0.0, -0.001805, 0.018463, 0.0, -0.01657, 0.004053, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.014126, 0.002452, 0.002452, -0.00178, 0.007164), +(57, -0.011159, 0.0, 0.003441, 0.010348, 0.0, 0.00607, 0.018497, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.001873, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.007538, -0.011159, -0.011159, -0.0052, 0.0374), +(58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(60, 6.07E-4, 0.02256, 1.13E-4, -0.002519, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.002159, 7.64E-4, 7.64E-4, 0.0, 0.0), +(61, 0.003025, 0.0, 0.022841, 6.85E-4, 0.0, 0.0, -0.010483, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.006186, 0.0, 0.0, 0.0, 0.0), +(62, -0.00156, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.00156, -0.00156, -0.00156, 0.0, 0.0), +(63, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(64, 0.011039, 0.0, 0.007017, -0.005147, 0.0, -0.05079, 0.012074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.009934, 0.011039, 0.011039, -0.0012, 2.0E-4); +INSERT INTO PUBLIC.UNIFACINTERPARAMC_UMRMC(MAINGROUP, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70) VALUES +(65, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(66, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0019, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.020399, -0.004935, 0.0, 0.0, 7.41E-4, -0.007719, 0.0, 0.0, -0.005116, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0083), +(67, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.002966, 0.004627, 0.0, 0.0, 0.001229, 0.0, 0.0, 0.0, -0.005389, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(68, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.002966, 0.004627, 0.0, 0.0, 0.001229, 0.0, 0.0, 0.0, -0.005389, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(69, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.5E-4, -0.00927, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00332, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), +(70, 5.0E-4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.004961, 0.0114, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0017, 0.0, 5.0E-4, 0.0, 0.0, 0.0, 0.0); +CREATE CACHED TABLE PUBLIC.USERDB( + ID INT NOT NULL, + USERNAME VARCHAR(50) DEFAULT NULL, + PASSWORD VARCHAR(50) DEFAULT NULL, + EMAIL VARCHAR(50) DEFAULT NULL, + FORNAME VARCHAR(50) DEFAULT NULL, + SURENAME VARCHAR(50) DEFAULT NULL +); +ALTER TABLE PUBLIC.USERDB ADD CONSTRAINT PUBLIC.CONSTRAINT_95B PRIMARY KEY(ID); +-- 2 +/- SELECT COUNT(*) FROM PUBLIC.USERDB; +INSERT INTO PUBLIC.USERDB(ID, USERNAME, PASSWORD, EMAIL, FORNAME, SURENAME) VALUES +(1, 'solbraa', 'even', 'esol@statoil.com', 'Even', 'Solbraa'), +(2, 'statoil', 'gpro', NULL, NULL, NULL); +CREATE CACHED TABLE PUBLIC.WATERACETICACIDVLE( + ID INT NOT NULL, + X VARCHAR(50) DEFAULT NULL, + Y VARCHAR(50) DEFAULT NULL, + TEMPERATURE VARCHAR(50) DEFAULT NULL, + PRESSURE VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 278 +/- SELECT COUNT(*) FROM PUBLIC.WATERACETICACIDVLE; +INSERT INTO PUBLIC.WATERACETICACIDVLE(ID, X, Y, TEMPERATURE, PRESSURE, REFERENCE) VALUES +(1, '0', '0', '530.16', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(2, '0.054816152', '0.09873885', '504.76', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(3, '0.166666667', '0.247515381', '494.66', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(4, '0.294633817', '0.392603947', '491.86', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(5, '0.411764706', '0.512516469', '490.96', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(6, '0.511072133', '0.580781912', '490.36', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(7, '0.57581439', '0.636996519', '490.26', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(8, '0.699842022', '0.736341397', '490.06', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(9, '0.701925613', '0.740791269', '489.96', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(10, '0.853425067', '0.866989117', '489.86', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(11, '1', '1', '489.66', '21.40789474', 'Othmer, Silvis and Spiel, 1952'), +(12, '0', '0', '473.86', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(13, '0.017810645', '0.036458333', '462.16', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(14, '0.045092838', '0.085673146', '455.26', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(15, '0.085673146', '0.158673609', '450.36', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(16, '0.088933164', '0.160935351', '450.26', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(17, '0.136975455', '0.220287661', '448.16', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(18, '0.181494662', '0.273084479', '446.56', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(19, '0.235777399', '0.338103757', '445.36', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(20, '0.300663604', '0.403202329', '444.26', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(21, '0.349305745', '0.44410507', '444.16', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(22, '0.416403785', '0.501084599', '443.96', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(23, '0.513965252', '0.580781912', '443.66', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(24, '0.579120621', '0.642589353', '443.46', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(25, '0.699842022', '0.747530187', '443.16', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(26, '0.72972973', '0.768221167', '443.06', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(27, '0.883649724', '0.900744417', '443.06', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(28, '1', '1', '443.06', '7.803947368', 'Othmer, Silvis and Spiel, 1952'), +(29, '0', '0', '426.76', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(30, '0.024081115', '0.043267643', '417.06', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(31, '0.052537045', '0.094906559', '411.86', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(32, '0.091792132', '0.158392111', '408.36', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(33, '0.147620328', '0.241594996', '406.76', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(34, '0.189189189', '0.28452579', '406.06', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(35, '0.266709929', '0.375351716', '404.96', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(36, '0.307236673', '0.411764706', '404.86', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(37, '0.403767722', '0.50320687', '404.06', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(38, '0.416403785', '0.505338854', '403.96', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(39, '0.522752497', '0.598562013', '403.86', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(40, '0.580781912', '0.653953018', '403.66', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(41, '0.657794677', '0.721030043', '403.66', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(42, '0.701925613', '0.756637168', '403.56', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(43, '0.782424414', '0.829712272', '403.56', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(44, '0.897864438', '0.921259843', '403.56', '2.701315789', 'Othmer, Silvis and Spiel, 1952'); +INSERT INTO PUBLIC.WATERACETICACIDVLE(ID, X, Y, TEMPERATURE, PRESSURE, REFERENCE) VALUES +(45, '1', '1', '403.56', '2.701315789', 'Othmer, Silvis and Spiel, 1952'), +(46, '0', '0', '391.16', '1.003947368', 'Pascal, P., 1921'), +(47, '0.01', '0.025', '388.16', '1.003947368', 'Pascal, P., 1921'), +(48, '0.045', '0.1', '384.16', '1.003947368', 'Pascal, P., 1921'), +(49, '0.0987', '0.175', '381.16', '1.003947368', 'Pascal, P., 1921'), +(50, '0.1985', '0.3', '377.46', '1.003947368', 'Pascal, P., 1921'), +(51, '0.3009', '0.42', '375.76', '1.003947368', 'Pascal, P., 1921'), +(52, '0.3977', '0.53', '374.86', '1.003947368', 'Pascal, P., 1921'), +(53, '0.501', '0.64', '374.16', '1.003947368', 'Pascal, P., 1921'), +(54, '0.5991', '0.7072', '373.76', '1.003947368', 'Pascal, P., 1921'), +(55, '0.6982', '0.778', '373.66', '1.003947368', 'Pascal, P., 1921'), +(56, '0.7449', '0.814', '373.56', '1.003947368', 'Pascal, P., 1921'), +(57, '0.7987', '0.8475', '373.36', '1.003947368', 'Pascal, P., 1921'), +(58, '0.8481', '0.8873', '373.26', '1.003947368', 'Pascal, P., 1921'), +(59, '0.899', '0.93', '373.26', '1.003947368', 'Pascal, P., 1921'), +(60, '0.95', '0.96', '373.26', '1.003947368', 'Pascal, P., 1921'), +(61, '1', '1', '373.16', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(62, '0.850746269', '0.87804878', '373.26', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(63, '0.727542487', '0.799426934', '373.26', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(64, '0.626165924', '0.702552192', '373.26', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(65, '0.54344424', '0.625076829', '373.36', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(66, '0.466953633', '0.567642957', '373.56', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(67, '0.409693698', '0.512516469', '373.66', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(68, '0.309543083', '0.42074077', '373.76', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(69, '0.231480055', '0.347826087', '374.16', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(70, '0.165338618', '0.252782194', '374.86', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(71, '0.114357019', '0.178952143', '375.76', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(72, '0.069159747', '0.113924051', '377.46', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(73, '0.031807586', '0.05982906', '381.16', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(74, '0.013939081', '0.032258065', '384.16', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(75, '0.003021148', '0.007633588', '388.16', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(76, '0', '0', '391.16', '1.003947368', 'Pascal, Dupuy and al., 1921'), +(77, '0', '0', '391.26', '1', 'Hua, 1976'), +(78, '0.05', '0.1', '388.36', '1', 'Hua, 1976'), +(79, '0.1', '0.188', '386.26', '1', 'Hua, 1976'), +(80, '0.2', '0.336', '382.86', '1', 'Hua, 1976'), +(81, '0.3', '0.453', '380.56', '1', 'Hua, 1976'), +(82, '0.4', '0.548', '378.86', '1', 'Hua, 1976'), +(83, '0.5', '0.644', '377.46', '1', 'Hua, 1976'), +(84, '0.6', '0.726', '376.36', '1', 'Hua, 1976'), +(85, '0.7', '0.801', '375.36', '1', 'Hua, 1976'), +(86, '0.8', '0.864', '374.56', '1', 'Hua, 1976'), +(87, '0.9', '0.928', '373.86', '1', 'Hua, 1976'), +(88, '0.95', '0.963', '373.46', '1', 'Hua, 1976'), +(89, '1', '1', '373.16', '1', 'Hua, 1976'), +(90, '0', '0', '391.56', '1', 'Gilmont and Othmer, 1944'), +(91, '0.001354266', '0.003477998', '390.66', '1', 'Gilmont and Othmer, 1944'), +(92, '0.028473926', '0.052537045', '382.26', '1', 'Gilmont and Othmer, 1944'), +(93, '0.059051087', '0.104942114', '378.76', '1', 'Gilmont and Othmer, 1944'), +(94, '0.127978703', '0.214157169', '376.16', '1', 'Gilmont and Othmer, 1944'), +(95, '0.212810536', '0.332386364', '374.76', '1', 'Gilmont and Othmer, 1944'), +(96, '0.274292743', '0.39481268', '374.36', '1', 'Gilmont and Othmer, 1944'), +(97, '0.343907714', '0.467084639', '374.06', '1', 'Gilmont and Othmer, 1944'), +(98, '0.464471765', '0.572529783', '373.75', '1', 'Gilmont and Othmer, 1944'), +(99, '0.611650485', '0.699842022', '373.53', '1', 'Gilmont and Othmer, 1944'), +(100, '0.861529199', '0.900744417', '373.28', '1', 'Gilmont and Othmer, 1944'); +INSERT INTO PUBLIC.WATERACETICACIDVLE(ID, X, Y, TEMPERATURE, PRESSURE, REFERENCE) VALUES +(101, '1', '1', '373.16', '1', 'Gilmont and Othmer, 1944'), +(102, '0', '0', '391.66', '1', 'Othmer, Silvis and Spiel, 1952'), +(103, '0.023079355', '0.042541497', '382.86', '1', 'Othmer, Silvis and Spiel, 1952'), +(104, '0.041817583', '0.070987295', '380.36', '1', 'Othmer, Silvis and Spiel, 1952'), +(105, '0.073650905', '0.11975435', '378.56', '1', 'Othmer, Silvis and Spiel, 1952'), +(106, '0.115369971', '0.182103163', '377.16', '1', 'Othmer, Silvis and Spiel, 1952'), +(107, '0.164935604', '0.250514974', '375.86', '1', 'Othmer, Silvis and Spiel, 1952'), +(108, '0.241594996', '0.341963323', '374.86', '1', 'Othmer, Silvis and Spiel, 1952'), +(109, '0.327686607', '0.43063352', '374.66', '1', 'Othmer, Silvis and Spiel, 1952'), +(110, '0.40151075', '0.499675114', '374.06', '1', 'Othmer, Silvis and Spiel, 1952'), +(111, '0.503916449', '0.592566119', '373.86', '1', 'Othmer, Silvis and Spiel, 1952'), +(112, '0.738562092', '0.79696883', '373.46', '1', 'Othmer, Silvis and Spiel, 1952'), +(113, '0.869736444', '0.903636929', '373.36', '1', 'Othmer, Silvis and Spiel, 1952'), +(114, '1', '1', '373.16', '1', 'Othmer, Silvis and Spiel, 1952'), +(115, '0', '0', '389.96', '0.953947368', 'Bennett, 1929'), +(116, '0.012345679', '0.025423729', '385.66', '0.953947368', 'Bennett, 1929'), +(117, '0.025423729', '0.04472667', '382.26', '0.953947368', 'Bennett, 1929'), +(118, '0.033998921', '0.071803853', '380.46', '0.953947368', 'Bennett, 1929'), +(119, '0.05982906', '0.113924051', '378.16', '0.953947368', 'Bennett, 1929'), +(120, '0.099876695', '0.160935351', '376.86', '0.953947368', 'Bennett, 1929'), +(121, '0.113924051', '0.203539823', '376.06', '0.953947368', 'Bennett, 1929'), +(122, '0.152542373', '0.234338747', '375.36', '0.953947368', 'Bennett, 1929'), +(123, '0.223744292', '0.333333333', '374.26', '0.953947368', 'Bennett, 1929'), +(124, '0.347826087', '0.473684211', '373.56', '0.953947368', 'Bennett, 1929'), +(125, '1', '1', '372.36', '0.953947368', 'Bennett, 1929'), +(126, '0', '0', '378.36', '0.657894737', 'Gilmont and Othmer, 1944'), +(127, '0.015544041', '0.029157321', '372.71', '0.657894737', 'Gilmont and Othmer, 1944'), +(128, '0.046563193', '0.083522524', '367.44', '0.657894737', 'Gilmont and Othmer, 1944'), +(129, '0.081389814', '0.13802221', '365.7', '0.657894737', 'Gilmont and Othmer, 1944'), +(130, '0.121725732', '0.199648197', '364.59', '0.657894737', 'Gilmont and Othmer, 1944'), +(131, '0.17074535', '0.268292683', '363.9', '0.657894737', 'Gilmont and Othmer, 1944'), +(132, '0.243802949', '0.361859093', '363.1', '0.657894737', 'Gilmont and Othmer, 1944'), +(133, '0.341963323', '0.460580913', '362.69', '0.657894737', 'Gilmont and Othmer, 1944'), +(134, '0.472356527', '0.580781912', '362.36', '0.657894737', 'Gilmont and Othmer, 1944'), +(135, '0.659725749', '0.747530187', '362.14', '0.657894737', 'Gilmont and Othmer, 1944'), +(136, '0.864253394', '0.906542056', '361.99', '0.657894737', 'Gilmont and Othmer, 1944'), +(137, '1', '1', '361.86', '0.657894737', 'Gilmont and Othmer, 1944'), +(138, '0.028', '0.056', '370.46', '0.526315789', 'Marek, 1965'), +(139, '0.076', '0.14', '368.16', '0.526315789', 'Marek, 1965'), +(140, '0.138', '0.237', '365.96', '0.526315789', 'Marek, 1965'), +(141, '0.18', '0.296', '364.76', '0.526315789', 'Marek, 1965'), +(142, '0.254', '0.385', '363.26', '0.526315789', 'Marek, 1965'), +(143, '0.344', '0.494', '361.56', '0.526315789', 'Marek, 1965'), +(144, '0.396', '0.543', '360.76', '0.526315789', 'Marek, 1965'), +(145, '0.44', '0.586', '360.36', '0.526315789', 'Marek, 1965'), +(146, '0.554', '0.688', '359.16', '0.526315789', 'Marek, 1965'), +(147, '0.613', '0.73', '358.76', '0.526315789', 'Marek, 1965'), +(148, '0.661', '0.772', '358.26', '0.526315789', 'Marek, 1965'), +(149, '0.776', '0.856', '357.46', '0.526315789', 'Marek, 1965'), +(150, '0.872', '0.913', '357.06', '0.526315789', 'Marek, 1965'), +(151, '0.907', '0.936', '356.86', '0.526315789', 'Marek, 1965'), +(152, '0.917', '0.95', '356.66', '0.526315789', 'Marek, 1965'), +(153, '0.968', '0.982', '356.31', '0.526315789', 'Marek, 1965'); +INSERT INTO PUBLIC.WATERACETICACIDVLE(ID, X, Y, TEMPERATURE, PRESSURE, REFERENCE) VALUES +(154, '0.975', '0.983', '356.56', '0.526315789', 'Marek, 1965'), +(155, '0', '0', '353.06', '0.263157895', 'Othmer, Silvis and Spiel, 1952'), +(156, '0.038587312', '0.057502552', '344.46', '0.263157895', 'Othmer, Silvis and Spiel, 1952'), +(157, '0.069767442', '0.107746214', '343.06', '0.263157895', 'Othmer, Silvis and Spiel, 1952'), +(158, '0.13437541', '0.198682766', '341.46', '0.263157895', 'Othmer, Silvis and Spiel, 1952'), +(159, '0.231480055', '0.320286563', '340.66', '0.263157895', 'Othmer, Silvis and Spiel, 1952'), +(160, '0.351784414', '0.445350734', '340.06', '0.263157895', 'Othmer, Silvis and Spiel, 1952'), +(161, '0.533213645', '0.627803796', '339.86', '0.263157895', 'Othmer, Silvis and Spiel, 1952'), +(162, '0.725363489', '0.799426934', '339.56', '0.263157895', 'Othmer, Silvis and Spiel, 1952'), +(163, '1', '1', '339.56', '0.263157895', 'Othmer, Silvis and Spiel, 1952'), +(164, '0', '0', '328.06', '0.092105263', 'Othmer, Silvis and Spiel, 1952'), +(165, '0.038409153', '0.055963821', '321.46', '0.092105263', 'Othmer, Silvis and Spiel, 1952'), +(166, '0.069767442', '0.096703027', '320.46', '0.092105263', 'Othmer, Silvis and Spiel, 1952'), +(167, '0.13437541', '0.184549356', '319.26', '0.092105263', 'Othmer, Silvis and Spiel, 1952'), +(168, '0.231480055', '0.308565531', '318.56', '0.092105263', 'Othmer, Silvis and Spiel, 1952'), +(169, '0.370629371', '0.43792964', '318.26', '0.092105263', 'Othmer, Silvis and Spiel, 1952'), +(170, '0.534726905', '0.631461786', '317.96', '0.092105263', 'Othmer, Silvis and Spiel, 1952'), +(171, '0.726451961', '0.816913688', '317.76', '0.092105263', 'Othmer, Silvis and Spiel, 1952'), +(172, '1', '1', '317.56', '0.092105263', 'Othmer, Silvis and Spiel, 1952'), +(173, '0', '0', '303.16', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(174, '0.037165834', '0.051029543', '298.36', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(175, '0.070580014', '0.090029042', '297.36', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(176, '0.137498349', '0.168990519', '296.86', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(177, '0.235777399', '0.285357321', '296.26', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(178, '0.353778751', '0.427031344', '295.96', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(179, '0.537005745', '0.627803796', '295.56', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(180, '0.72319269', '0.822001751', '295.26', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(181, '0.727542487', '0.814385151', '295.26', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(182, '0.883649724', '0.883649724', '295.26', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(183, '0.927238216', '0.96742671', '295.26', '0.026315789', 'Othmer, Silvis and Spiel, 1952'), +(184, '0', '0', '373.16', '0.546052632', 'Acharya, M.V.R.,1947'), +(185, '0.065', '0.135', '373.16', '0.582894737', 'Acharya, M.V.R.,1947'), +(186, '0.165', '0.31', '373.16', '0.660526316', 'Acharya, M.V.R.,1947'), +(187, '0.3', '0.44', '373.16', '0.752631579', 'Acharya, M.V.R.,1947'), +(188, '0.355', '0.49', '373.16', '0.784210526', 'Acharya, M.V.R.,1947'), +(189, '0.393', '0.537', '373.16', '0.807894737', 'Acharya, M.V.R.,1947'), +(190, '0.43', '0.55', '373.16', '0.822368421', 'Acharya, M.V.R.,1947'), +(191, '0.573', '0.735', '373.16', '0.889473684', 'Acharya, M.V.R.,1947'), +(192, '0.61', '0.758', '373.16', '0.907894737', 'Acharya, M.V.R.,1947'), +(193, '0.695', '0.795', '373.16', '0.940789474', 'Acharya, M.V.R.,1947'), +(194, '1', '1', '373.16', '1', 'Acharya, M.V.R.,1947'), +(195, '0', '0', '363.16', '0.381578947', 'Acharya, M.V.R.,1947'), +(196, '0.28', '0.445', '363.16', '0.510526316', 'Acharya, M.V.R.,1947'), +(197, '0.3', '0.475', '363.16', '0.519736842', 'Acharya, M.V.R.,1947'), +(198, '0.43', '0.55', '363.16', '0.572368421', 'Acharya, M.V.R.,1947'), +(199, '0.49', '0.61', '363.16', '0.592105263', 'Acharya, M.V.R.,1947'), +(200, '0.505', '0.64', '363.16', '0.601315789', 'Acharya, M.V.R.,1947'), +(201, '0.55', '0.69', '363.16', '0.621052632', 'Acharya, M.V.R.,1947'); +INSERT INTO PUBLIC.WATERACETICACIDVLE(ID, X, Y, TEMPERATURE, PRESSURE, REFERENCE) VALUES +(202, '0.6', '0.725', '363.16', '0.635526316', 'Acharya, M.V.R.,1947'), +(203, '0.675', '0.786', '363.16', '0.664473684', 'Acharya, M.V.R.,1947'), +(204, '1', '1', '363.16', '0.697368421', 'Acharya, M.V.R.,1947'), +(205, '0', '0', '363.06', '0.392763158', 'Arich, G., 1958'), +(206, '0.05', '0.099', '363.06', '0.424210526', 'Arich, G., 1958'), +(207, '0.1', '0.1747', '363.06', '0.453947368', 'Arich, G., 1958'), +(208, '0.2', '0.3005', '363.06', '0.495', 'Arich, G., 1958'), +(209, '0.3', '0.414', '363.06', '0.529868421', 'Arich, G., 1958'), +(210, '0.4', '0.518', '363.06', '0.560526316', 'Arich, G., 1958'), +(211, '0.5', '0.614', '363.06', '0.589605263', 'Arich, G., 1958'), +(212, '0.6', '0.7035', '363.06', '0.614342105', 'Arich, G., 1958'), +(213, '0.7', '0.7835', '363.06', '0.636052632', 'Arich, G., 1958'), +(214, '0.8', '0.851', '363.06', '0.656447368', 'Arich, G., 1958'), +(215, '0.9', '0.92', '363.06', '0.674078947', 'Arich, G., 1958'), +(216, '0.95', '0.959', '363.06', '0.681973684', 'Arich, G., 1958'), +(217, '1', '1', '363.06', '0.688289474', 'Arich, G., 1958'), +(218, '0', '0', '353.16', '0.269736842', 'Acharya, M.V.R.,1947'), +(219, '0.2', '0.335', '353.16', '0.327631579', 'Acharya, M.V.R.,1947'), +(220, '0.3', '0.455', '353.16', '0.361842105', 'Acharya, M.V.R.,1947'), +(221, '0.49', '0.595', '353.16', '0.402631579', 'Acharya, M.V.R.,1947'), +(222, '0.52', '0.63', '353.16', '0.417105263', 'Acharya, M.V.R.,1947'), +(223, '0.57', '0.665', '353.16', '0.419736842', 'Acharya, M.V.R.,1947'), +(224, '0.58', '0.705', '353.16', '0.426315789', 'Acharya, M.V.R.,1947'), +(225, '0.675', '0.78', '353.16', '0.436842105', 'Acharya, M.V.R.,1947'), +(226, '1', '1', '353.16', '0.467105263', 'Acharya, M.V.R.,1947'), +(227, '0', '0', '353.06', '0.271710526', 'Arich, G., 1958'), +(228, '0.05', '0.094', '353.06', '0.293552632', 'Arich, G., 1958'), +(229, '0.1', '0.1685', '353.06', '0.311184211', 'Arich, G., 1958'), +(230, '0.2', '0.2935', '353.06', '0.339210526', 'Arich, G., 1958'), +(231, '0.3', '0.4072', '353.06', '0.361578947', 'Arich, G., 1958'), +(232, '0.4', '0.51', '353.06', '0.380789474', 'Arich, G., 1958'), +(233, '0.5', '0.607', '353.06', '0.398421053', 'Arich, G., 1958'), +(234, '0.6', '0.6965', '353.06', '0.414473684', 'Arich, G., 1958'), +(235, '0.7', '0.7785', '353.06', '0.429736842', 'Arich, G., 1958'), +(236, '0.8', '0.8405', '353.06', '0.443289474', 'Arich, G., 1958'), +(237, '0.9', '0.9195', '353.06', '0.455', 'Arich, G., 1958'), +(238, '0.95', '0.9585', '353.06', '0.460394737', 'Arich, G., 1958'), +(239, '1', '1', '353.06', '0.465131579', 'Arich, G., 1958'), +(240, '0', '0', '342.86', '0.180394737', 'Arich, G., 1958'), +(241, '0.05', '0.0917', '342.86', '0.193157895', 'Arich, G., 1958'), +(242, '0.1', '0.1625', '342.86', '0.204868421', 'Arich, G., 1958'), +(243, '0.2', '0.2877', '342.86', '0.224342105', 'Arich, G., 1958'), +(244, '0.3', '0.3905', '342.86', '0.239473684', 'Arich, G., 1958'), +(245, '0.4', '0.5022', '342.86', '0.251578947', 'Arich, G., 1958'), +(246, '0.5', '0.5995', '342.86', '0.262105263', 'Arich, G., 1958'), +(247, '0.6', '0.6911', '342.86', '0.271973684', 'Arich, G., 1958'), +(248, '0.7', '0.775', '342.86', '0.281973684', 'Arich, G., 1958'), +(249, '0.8', '0.8477', '342.86', '0.290789474', 'Arich, G., 1958'), +(250, '0.9', '0.919', '342.86', '0.298289474', 'Arich, G., 1958'), +(251, '0.95', '0.958', '342.86', '0.301052632', 'Arich, G., 1958'), +(252, '1', '1', '342.86', '0.302894737', 'Arich, G., 1958'), +(253, '0.1493', '0.2176', '333.16', '0.139605263', 'Tsiparis, I.N., 1964'), +(254, '0.2703', '0.3667', '333.16', '0.150789474', 'Tsiparis, I.N., 1964'), +(255, '0.4545', '0.5509', '333.16', '0.165394737', 'Tsiparis, I.N., 1964'), +(256, '0.5882', '0.6753', '333.16', '0.173421053', 'Tsiparis, I.N., 1964'), +(257, '0.6897', '0.7657', '333.16', '0.177631579', 'Tsiparis, I.N., 1964'), +(258, '0.7692', '0.8304', '333.16', '0.180526316', 'Tsiparis, I.N., 1964'), +(259, '0.8333', '0.8813', '333.16', '0.183026316', 'Tsiparis, I.N., 1964'), +(260, '0.8861', '0.919', '333.16', '0.185657895', 'Tsiparis, I.N., 1964'); +INSERT INTO PUBLIC.WATERACETICACIDVLE(ID, X, Y, TEMPERATURE, PRESSURE, REFERENCE) VALUES +(261, '0.9302', '0.9497', '333.16', '0.188421053', 'Tsiparis, I.N., 1964'), +(262, '0.9677', '0.9779', '333.16', '0.191447368', 'Tsiparis, I.N., 1964'), +(263, '0.571711985', '0.663024375', '315.16', '0.079210526', 'Vrevskii, Miscenko and Muromzew, 1928'), +(264, '0.233478543', '0.306794784', '315.16', '0.076315789', 'Vrevskii, Miscenko and Muromzew, 1928'), +(265, '0.138547042', '0.180705421', '315.16', '0.073157895', 'Vrevskii, Miscenko and Muromzew, 1928'), +(266, '0.068150209', '0.0933447', '315.16', '0.069473684', 'Vrevskii, Miscenko and Muromzew, 1928'), +(267, '0.01515779', '0.025255467', '315.16', '0.062105263', 'Vrevskii, Miscenko and Muromzew, 1928'), +(268, '0', '0', '315.16', '0.050657895', 'Vrevskii, Miscenko and Muromzew, 1928'), +(269, '0.1493', '0.1944', '313.16', '0.052105263', 'Tsiparis, I.N., 1964'), +(270, '0.2703', '0.3374', '313.16', '0.056447368', 'Tsiparis, I.N., 1964'), +(271, '0.4545', '0.5261', '313.16', '0.061973684', 'Tsiparis, I.N., 1964'), +(272, '0.5882', '0.6588', '313.16', '0.064539474', 'Tsiparis, I.N., 1964'), +(273, '0.6897', '0.7554', '313.16', '0.065986842', 'Tsiparis, I.N., 1964'), +(274, '0.7692', '0.8224', '313.16', '0.067302632', 'Tsiparis, I.N., 1964'), +(275, '0.8333', '0.8735', '313.16', '0.068618421', 'Tsiparis, I.N., 1964'), +(276, '0.8861', '0.912', '313.16', '0.069605263', 'Tsiparis, I.N., 1964'), +(277, '0.9302', '0.9477', '313.16', '0.070657895', 'Tsiparis, I.N., 1964'), +(278, '0.9677', '0.9762', '313.16', '0.071578947', 'Tsiparis, I.N., 1964'); +CREATE CACHED TABLE PUBLIC.WATERDEWPOINTPAPER( + ID INT NOT NULL, + GASCOMPONENT VARCHAR(255) DEFAULT NULL, + TEMPERATURE DOUBLE DEFAULT NULL, + PRESSURE DOUBLE DEFAULT NULL, + XWATER DOUBLE DEFAULT NULL, + YWATER DOUBLE DEFAULT NULL, + REFERENCE VARCHAR(255) DEFAULT NULL +); +ALTER TABLE PUBLIC.WATERDEWPOINTPAPER ADD CONSTRAINT PUBLIC.CONSTRAINT_4E7 PRIMARY KEY(ID); +-- 491 +/- SELECT COUNT(*) FROM PUBLIC.WATERDEWPOINTPAPER; +INSERT INTO PUBLIC.WATERDEWPOINTPAPER(ID, GASCOMPONENT, TEMPERATURE, PRESSURE, XWATER, YWATER, REFERENCE) VALUES +(1, 'methane', 253.15, 0.5, 0.9995, 0.213, 'Althaus'), +(2, 'methane', 253.15, 1.5, 0.9988, 0.0722, 'Althaus'), +(3, 'methane', 253.15, 4.0, 0.9976, 0.0276, 'Althaus'), +(4, 'methane', 253.15, 6.0, 0.9967, 0.0207, 'Althaus'), +(5, 'methane', 253.15, 8.0, 0.99589, 0.0188, 'Althaus'), +(6, 'methane', 253.15, 10.0, 0.99514, 0.0152, 'Althaus'), +(7, 'methane', 258.15, 0.5, 0.99957, 0.307, 'Althaus'), +(8, 'methane', 258.15, 1.5, 0.99902, 0.111, 'Althaus'), +(9, 'methane', 258.15, 4.0, 0.99794, 0.0408, 'Althaus'), +(10, 'methane', 258.15, 6.0, 0.9972, 0.03, 'Althaus'), +(11, 'methane', 258.15, 8.0, 0.99653, 0.0251, 'Althaus'), +(12, 'methane', 258.15, 10.0, 0.99589, 0.0216, 'Althaus'), +(13, 'methane', 263.15, 0.5, 0.99963, 0.523, 'Althaus'), +(14, 'methane', 263.15, 1.5, 0.99916, 0.185, 'Althaus'), +(15, 'methane', 263.15, 4.0, 0.99823, 0.0654, 'Althaus'), +(16, 'methane', 263.15, 6.0, 0.9976, 0.0485, 'Althaus'), +(17, 'methane', 263.15, 8.0, 0.99702, 0.0383, 'Althaus'), +(18, 'methane', 263.15, 10.0, 0.99648, 0.0322, 'Althaus'), +(19, 'methane', 268.15, 0.5, 0.99968, 0.829, 'Althaus'), +(20, 'methane', 268.15, 1.5, 0.99927, 0.28, 'Althaus'), +(21, 'methane', 268.15, 4.0, 0.99846, 0.112, 'Althaus'), +(22, 'methane', 268.15, 6.0, 0.99792, 0.0784, 'Althaus'), +(23, 'methane', 268.15, 8.0, 0.99741, 0.0586, 'Althaus'), +(24, 'methane', 268.15, 10.0, 0.99694, 0.0525, 'Althaus'), +(25, 'methane', 273.15, 0.5, 0.99972, 1.23, 'Althaus'), +(26, 'methane', 273.15, 1.5, 0.99935, 0.426, 'Althaus'), +(27, 'methane', 273.15, 4.0, 0.99865, 0.163, 'Althaus'), +(28, 'methane', 273.15, 6.0, 0.99817, 0.118, 'Althaus'), +(29, 'methane', 273.15, 8.0, 0.99772, 0.0944, 'Althaus'), +(30, 'methane', 273.15, 10.0, 0.99731, 0.0748, 'Althaus'), +(31, 'methane', 278.15, 0.5, 0.99975, 1.75, 'Althaus'), +(32, 'methane', 278.15, 1.5, 0.99943, 0.616, 'Althaus'), +(33, 'methane', 278.15, 4.0, 0.9988, 0.25, 'Althaus'), +(34, 'methane', 278.15, 6.0, 0.99837, 0.175, 'Althaus'), +(35, 'methane', 278.15, 8.0, 0.99798, 0.14, 'Althaus'), +(36, 'methane', 278.15, 10.0, 0.9976, 0.112, 'Althaus'), +(37, 'methane', 283.15, 1.5, 0.99948, 0.851, 'Althaus'), +(38, 'methane', 283.15, 4.0, 0.99892, 0.357, 'Althaus'), +(39, 'methane', 283.15, 6.0, 0.99853, 0.251, 'Althaus'), +(40, 'methane', 283.15, 8.0, 0.99818, 0.211, 'Althaus'), +(41, 'methane', 283.15, 10.0, 0.99785, 0.176, 'Althaus'), +(42, 'methane', 288.15, 1.5, 0.99953, 1.18, 'Althaus'), +(43, 'methane', 288.15, 4.0, 0.99924, 0.485, 'Althaus'), +(44, 'methane', 288.15, 6.0, 0.99867, 0.35, 'Althaus'), +(45, 'methane', 288.15, 8.0, 0.99835, 0.284, 'Althaus'), +(46, 'methane', 288.15, 10.0, 0.99804, 0.244, 'Althaus'), +(47, 'methane', 293.15, 4.0, 0.9991, 0.665, 'Althaus'), +(48, 'methane', 293.15, 6.0, 0.99878, 0.47, 'Althaus'), +(49, 'methane', 293.15, 8.0, 0.99848, 0.386, 'Althaus'), +(50, 'methane', 293.15, 10.0, 0.99821, 0.332, 'Althaus'), +(51, 'methane', 310.93, 1.379, 0.999683, 5.088, 'Olds'), +(52, 'methane', 310.93, 2.758, 0.999466, 2.708, 'Olds'), +(53, 'methane', 310.93, 4.137, 0.999275, 1.913, 'Olds'), +(54, 'methane', 310.93, 5.516, 0.9991, 1.514, 'Olds'), +(55, 'methane', 310.93, 6.895, 0.998935, 1.275, 'Olds'), +(56, 'methane', 310.93, 8.618, 0.998741, 1.084, 'Olds'), +(57, 'methane', 310.93, 10.342, 0.998555, 0.956, 'Olds'), +(58, 'methane', 310.93, 13.789, 0.998206, 0.794, 'Olds'), +(59, 'methane', 310.93, 20.684, 0.997565, 0.635, 'Olds'), +(60, 'methane', 344.26, 1.379, 0.999747, 24.84, 'Olds'), +(61, 'methane', 344.26, 2.758, 0.999573, 13.01, 'Olds'), +(62, 'methane', 344.26, 4.137, 0.99942, 9.005, 'Olds'), +(63, 'methane', 344.26, 5.516, 0.99928, 7.076, 'Olds'), +(64, 'methane', 344.26, 6.895, 0.999148, 5.888, 'Olds'), +(65, 'methane', 344.26, 8.618, 0.998992, 4.942, 'Olds'), +(66, 'methane', 344.26, 10.342, 0.998844, 4.302, 'Olds'), +(67, 'methane', 344.26, 13.789, 0.998564, 3.504, 'Olds'), +(68, 'methane', 344.26, 20.684, 0.998051, 2.713, 'Olds'), +(69, 'methane', 377.59, 1.379, 0.999748, 88.77, 'Olds'), +(70, 'methane', 377.59, 2.758, 0.999576, 45.93, 'Olds'); +INSERT INTO PUBLIC.WATERDEWPOINTPAPER(ID, GASCOMPONENT, TEMPERATURE, PRESSURE, XWATER, YWATER, REFERENCE) VALUES +(71, 'methane', 377.59, 4.137, 0.999424, 31.62, 'Olds'), +(72, 'methane', 377.59, 5.516, 0.999285, 24.47, 'Olds'), +(73, 'methane', 377.59, 6.895, 0.999154, 20.18, 'Olds'), +(74, 'methane', 377.59, 8.618, 0.998999, 16.76, 'Olds'), +(75, 'methane', 377.59, 10.342, 0.998852, 14.45, 'Olds'), +(76, 'methane', 377.59, 13.789, 0.998574, 11.58, 'Olds'), +(77, 'methane', 377.59, 20.684, 0.998064, 8.719, 'Olds'), +(78, 'methane', 310.93, 1.48, 0.99967, 5.16, 'Sharma'), +(79, 'methane', 310.93, 4.23, 0.99926, 1.88, 'Sharma'), +(80, 'methane', 310.93, 6.99, 0.99892, 1.34, 'Sharma'), +(81, 'methane', 310.93, 10.44, 0.99854, 0.92, 'Sharma'), +(82, 'methane', 310.93, 13.89, 0.99655, 0.75, 'Sharma'), +(83, 'methane', 327.59, 1.48, 0.99971, 11.3, 'Sharma'), +(84, 'methane', 327.59, 4.23, 0.99936, 4.3, 'Sharma'), +(85, 'methane', 327.59, 6.99, 0.99907, 2.79, 'Sharma'), +(86, 'methane', 327.59, 10.44, 0.99874, 1.93, 'Sharma'), +(87, 'methane', 327.59, 14.37, 0.9984, 1.71, 'Sharma'), +(88, 'methane', 344.26, 1.48, 0.99973, 25.65, 'Sharma'), +(89, 'methane', 344.26, 4.23, 0.99941, 9.33, 'Sharma'), +(90, 'methane', 344.26, 6.99, 0.99914, 5.5, 'Sharma'), +(91, 'methane', 344.26, 10.44, 0.99884, 4.25, 'Sharma'), +(92, 'methane', 344.26, 13.89, 0.99856, 3.68, 'Sharma'), +(93, 'methane', 313.15, 2.5, 0.999516, 3.03, 'Yarim'), +(94, 'methane', 313.15, 5.0, 0.999184, 1.87, 'Yarim'), +(95, 'methane', 313.15, 7.5, 0.998892, 1.34, 'Yarim'), +(96, 'methane', 313.15, 10.0, 0.998624, 1.12, 'Yarim'), +(97, 'methane', 313.15, 12.5, 0.998372, 0.926, 'Yarim'), +(98, 'methane', 338.15, 2.5, 0.999594, 9.83, 'Yarim'), +(99, 'methane', 338.15, 5.0, 0.999316, 6.09, 'Yarim'), +(100, 'methane', 338.15, 7.5, 0.999072, 4.48, 'Yarim'), +(101, 'methane', 338.15, 10.0, 0.998848, 3.48, 'Yarim'), +(102, 'methane', 338.15, 12.5, 0.998637, 2.98, 'Yarim'), +(103, 'methane', 298.15, 3.0, 0.99933, 1.181, 'Yokoyama'), +(104, 'methane', 298.15, 5.0, 0.999016, 0.741, 'Yokoyama'), +(105, 'methane', 323.15, 3.0, 0.999492, 4.476, 'Yokoyama'), +(106, 'methane', 323.15, 5.0, 0.999253, 2.789, 'Yokoyama'), +(107, 'methane', 323.15, 8.0, 0.998936, 2.105, 'Yokoyama'), +(108, 'methane', 298.15, 2.354, 0.999442, 1.483, 'Rigby'), +(109, 'methane', 298.15, 3.051, 0.999322, 1.175, 'Rigby'), +(110, 'methane', 298.15, 4.055, 0.99916, 0.915, 'Rigby'), +(111, 'methane', 323.15, 3.014, 0.99949, 4.474, 'Rigby'), +(112, 'methane', 323.15, 4.838, 0.999271, 2.921, 'Rigby'), +(113, 'methane', 323.15, 6.817, 0.999057, 2.185, 'Rigby'), +(114, 'methane', 348.15, 3.121, 0.999536, 13.35, 'Rigby'), +(115, 'methane', 348.15, 5.473, 0.999292, 8.03, 'Rigby'), +(116, 'methane', 348.15, 6.727, 0.999172, 6.71, 'Rigby'), +(117, 'methane', 373.15, 5.741, 0.999269, 19.92, 'Rigby'), +(118, 'methane', 373.15, 7.189, 0.999134, 16.43, 'Rigby'), +(119, 'methane', 373.15, 9.347, 0.998945, 13.09, 'Rigby'), +(120, 'methane', 323.15, 1.379, 0.999717, 9.64, 'Gillespie'), +(121, 'methane', 323.15, 6.205, 0.999121, 2.45, 'Gillespie'), +(122, 'methane', 323.15, 13.789, 0.998396, 1.36, 'Gillespie'), +(123, 'methane', 348.15, 1.379, 0.999749, 29.35, 'Gillespie'), +(124, 'methane', 348.15, 6.205, 0.999221, 7.1, 'Gillespie'), +(125, 'methane', 348.15, 13.789, 0.998579, 3.66, 'Gillespie'), +(137, 'methane', 310.93, 5.23, 0.9991, 1.77, 'Culberson'), +(138, 'methane', 310.93, 11.032, 0.9985, 0.762, 'Culberson'), +(139, 'methane', 310.93, 16.375, 0.9981, 0.745, 'Culberson'), +(140, 'methane', 310.93, 24.925, 0.997, 0.483, 'Culberson'), +(141, 'methane', 310.93, 35.75, 0.996, 0.502, 'Culberson?'), +(174, 'methane', 249.0, 2.068, 1.0, 0.045, 'Aoyagi'), +(175, 'methane', 249.0, 2.068, 1.0, 0.04, 'Aoyagi'), +(176, 'methane', 258.7, 2.068, 1.0, 0.096, 'Aoyagi'), +(177, 'methane', 258.7, 2.068, 1.0, 0.093, 'Aoyagi'), +(178, 'methane', 260.0, 2.068, 1.0, 0.12, 'Aoyagi'), +(179, 'methane', 260.0, 2.068, 1.0, 0.115, 'Aoyagi'), +(180, 'methane', 230.9, 3.447, 1.0, 0.0053, 'Aoyagi'), +(181, 'methane', 230.9, 3.447, 1.0, 0.0048, 'Aoyagi'), +(182, 'methane', 230.9, 3.447, 1.0, 0.0044, 'Aoyagi'), +(183, 'methane', 234.0, 3.447, 1.0, 0.0067, 'Aoyagi'); +INSERT INTO PUBLIC.WATERDEWPOINTPAPER(ID, GASCOMPONENT, TEMPERATURE, PRESSURE, XWATER, YWATER, REFERENCE) VALUES +(184, 'methane', 243.5, 3.447, 1.0, 0.019, 'Aoyagi'), +(185, 'methane', 243.5, 3.447, 1.0, 0.017, 'Aoyagi'), +(186, 'methane', 253.2, 3.447, 1.0, 0.044, 'Aoyagi'), +(187, 'methane', 253.2, 3.447, 1.0, 0.043, 'Aoyagi'), +(188, 'methane', 253.2, 3.447, 1.0, 0.041, 'Aoyagi'), +(189, 'methane', 267.6, 3.447, 1.0, 0.152, 'Aoyagi'), +(190, 'methane', 267.6, 3.447, 1.0, 0.145, 'Aoyagi'), +(191, 'methane', 234.0, 6.895, 1.0, 0.0034, 'Aoyagi'), +(192, 'methane', 234.0, 6.895, 1.0, 0.003, 'Aoyagi'), +(193, 'methane', 243.0, 6.895, 1.0, 0.0067, 'Aoyagi'), +(194, 'methane', 253.2, 6.895, 1.0, 0.023, 'Aoyagi'), +(195, 'methane', 267.6, 6.895, 1.0, 0.082, 'Aoyagi'), +(196, 'methane', 267.6, 6.895, 1.0, 0.08, 'Aoyagi'), +(197, 'methane', 267.6, 6.895, 1.0, 0.077, 'Aoyagi'), +(198, 'methane', 234.0, 10.342, 1.0, 0.0014, 'Aoyagi'), +(199, 'methane', 234.0, 10.342, 1.0, 0.00135, 'Aoyagi'), +(200, 'methane', 234.0, 10.342, 1.0, 0.0012, 'Aoyagi'), +(201, 'methane', 243.0, 10.342, 1.0, 0.0031, 'Aoyagi'), +(202, 'methane', 243.0, 10.342, 1.0, 0.0042, 'Aoyagi'), +(203, 'methane', 258.9, 10.342, 1.0, 0.023, 'Aoyagi'), +(204, 'methane', 258.9, 10.342, 1.0, 0.022, 'Aoyagi'), +(205, 'methane', 267.6, 10.342, 1.0, 0.046, 'Aoyagi'), +(206, 'methane', 283.08, 1.006, 0.9999, 1.24, 'Chapoy'), +(207, 'methane', 283.08, 6.03, 0.9999, 0.108, 'Chapoy'), +(208, 'methane', 283.08, 10.01, 0.9999, 0.021, 'Chapoy'), +(209, 'methane', 283.08, 14.24, 0.9999, 0.0061, 'Chapoy'), +(210, 'methane', 288.11, 1.044, 0.9999, 1.78, 'Chapoy'), +(211, 'methane', 288.11, 6.023, 0.9999, 0.208, 'Chapoy'), +(212, 'methane', 288.11, 10.03, 0.9999, 0.0876, 'Chapoy'), +(213, 'methane', 288.11, 17.49, 0.9999, 0.0315, 'Chapoy'), +(214, 'methane', 288.11, 34.46, 0.9999, 0.0121, 'Chapoy'), +(215, 'methane', 293.11, 0.992, 0.9999, 2.36, 'Chapoy'), +(216, 'methane', 293.11, 5.77, 0.9999, 0.32, 'Chapoy'), +(217, 'methane', 293.11, 9.52, 0.9999, 0.159, 'Chapoy'), +(218, 'methane', 293.11, 17.68, 0.9999, 0.0799, 'Chapoy'), +(219, 'methane', 293.11, 24.95, 0.9999, 0.0472, 'Chapoy'), +(220, 'methane', 293.11, 35.09, 0.9999, 0.0321, 'Chapoy'), +(221, 'methane', 298.11, 1.01, 0.9999, 3.3, 'Chapoy'), +(222, 'methane', 298.11, 6.39, 0.9999, 0.484, 'Chapoy'), +(223, 'methane', 298.11, 10.07, 0.9999, 0.307, 'Chapoy'), +(224, 'methane', 298.11, 17.52, 0.9999, 0.178, 'Chapoy'), +(225, 'methane', 298.11, 25.15, 0.9999, 0.132, 'Chapoy'), +(226, 'methane', 298.11, 34.42, 0.9999, 0.0779, 'Chapoy'), +(227, 'methane', 303.11, 1.1, 0.9999, 4.44, 'Chapoy'), +(228, 'methane', 303.11, 6.06, 0.9999, 0.771, 'Chapoy'), +(229, 'methane', 303.11, 9.48, 0.9999, 0.478, 'Chapoy'), +(230, 'methane', 303.11, 17.5, 0.9999, 0.29, 'Chapoy'), +(231, 'methane', 303.11, 25.06, 0.9999, 0.196, 'Chapoy'), +(232, 'methane', 303.11, 34.56, 0.9999, 0.151, 'Chapoy'), +(233, 'methane', 308.11, 1.1, 0.9999, 5.82, 'Chapoy'), +(234, 'methane', 308.11, 5.99, 0.9999, 1.02, 'Chapoy'), +(235, 'methane', 308.11, 9.84, 0.9999, 0.68, 'Chapoy'), +(236, 'methane', 308.11, 17.49, 0.9999, 0.424, 'Chapoy'), +(237, 'methane', 308.11, 25.09, 0.9999, 0.334, 'Chapoy'), +(238, 'methane', 308.11, 34.58, 0.9999, 0.28, 'Chapoy'), +(239, 'methane', 313.12, 1.1, 0.9999, 7.46, 'Chapoy'), +(240, 'methane', 313.12, 6.056, 0.9999, 1.52, 'Chapoy'), +(241, 'methane', 313.12, 9.98, 0.9999, 0.972, 'Chapoy'), +(242, 'methane', 313.12, 17.47, 0.9999, 0.588, 'Chapoy'), +(243, 'methane', 313.12, 25.17, 0.9999, 0.484, 'Chapoy'), +(244, 'methane', 313.12, 34.61, 0.9999, 0.424, 'Chapoy'), +(245, 'methane', 318.12, 1.003, 0.9999, 9.89, 'Chapoy'), +(246, 'methane', 318.12, 6.017, 0.9999, 2.18, 'Chapoy'), +(247, 'methane', 318.12, 10.01, 0.9999, 1.28, 'Chapoy'), +(248, 'methane', 318.12, 17.5, 0.9999, 0.791, 'Chapoy'), +(249, 'methane', 318.12, 25.12, 0.9999, 0.644, 'Chapoy'), +(250, 'methane', 318.12, 34.16, 0.9999, 0.56, 'Chapoy'), +(251, 'methane', 233.16, 1.01, 0.9999, 0.014, 'Kosyakov'), +(252, 'methane', 233.16, 2.03, 0.9999, 0.008, 'Kosyakov'), +(253, 'methane', 233.16, 4.05, 0.9999, 0.005, 'Kosyakov'), +(254, 'methane', 233.16, 6.08, 0.9999, 0.003, 'Kosyakov'); +INSERT INTO PUBLIC.WATERDEWPOINTPAPER(ID, GASCOMPONENT, TEMPERATURE, PRESSURE, XWATER, YWATER, REFERENCE) VALUES +(255, 'methane', 243.16, 1.01, 0.9999, 0.042, 'Kosyakov'), +(256, 'methane', 243.16, 2.03, 0.9999, 0.022, 'Kosyakov'), +(257, 'methane', 243.16, 4.05, 0.9999, 0.012, 'Kosyakov'), +(258, 'methane', 243.16, 6.08, 0.9999, 0.009, 'Kosyakov'), +(259, 'methane', 243.16, 8.1, 0.9999, 0.008, 'Kosyakov'), +(260, 'methane', 243.16, 10.1, 0.9999, 0.007, 'Kosyakov'), +(261, 'methane', 253.16, 1.01, 0.9999, 0.107, 'Kosyakov'), +(262, 'methane', 253.16, 2.03, 0.9999, 0.056, 'Kosyakov'), +(263, 'methane', 253.16, 4.05, 0.9999, 0.031, 'Kosyakov'), +(264, 'methane', 253.16, 6.08, 0.9999, 0.023, 'Kosyakov'), +(265, 'methane', 253.16, 8.1, 0.9999, 0.019, 'Kosyakov'), +(266, 'methane', 253.16, 10.1, 0.9999, 0.017, 'Kosyakov'), +(267, 'methane', 263.16, 1.01, 0.9999, 0.275, 'Kosyakov'), +(268, 'methane', 263.15, 2.03, 0.9999, 0.14, 'Kosyakov'), +(269, 'methane', 263.15, 4.05, 0.9999, 0.075, 'Kosyakov'), +(270, 'methane', 263.15, 6.08, 0.9999, 0.056, 'Kosyakov'), +(271, 'methane', 263.15, 8.1, 0.9999, 0.044, 'Kosyakov'), +(272, 'methane', 263.15, 10.1, 0.9999, 0.038, 'Kosyakov'), +(273, 'methane', 273.16, 1.01, 0.9999, 0.65, 'Kosyakov'), +(274, 'methane', 273.16, 2.03, 0.9999, 0.34, 'Kosyakov'), +(275, 'methane', 273.16, 4.05, 0.9999, 0.18, 'Kosyakov'), +(276, 'methane', 273.16, 6.08, 0.9999, 0.125, 'Kosyakov'), +(277, 'methane', 273.16, 8.1, 0.9999, 0.1, 'Kosyakov'), +(278, 'methane', 273.16, 10.1, 0.9999, 0.085, 'Kosyakov'), +(279, 'methane', 283.16, 2.03, 0.9999, 0.64, 'Kosyakov'), +(280, 'methane', 283.16, 4.05, 0.9999, 0.346, 'Kosyakov'), +(281, 'methane', 283.16, 6.08, 0.9999, 0.22, 'Kosyakov'), +(282, 'methane', 283.16, 8.1, 0.9999, 0.19, 'Kosyakov'), +(283, 'methane', 283.16, 10.1, 0.9999, 0.15, 'Kosyakov'), +(284, 'methane', 258.15, 3.0, 0.9999, 0.05, 'Bogoya'), +(285, 'methane', 263.15, 3.0, 0.9999, 0.084, 'Bogoya'), +(286, 'methane', 268.15, 3.0, 0.9999, 0.147, 'Bogoya'), +(287, 'methane', 273.15, 3.0, 0.9999, 0.211, 'Bogoya'), +(288, 'methane', 278.15, 3.0, 0.9999, 0.299, 'Bogoya'), +(289, 'methane', 283.15, 3.0, 0.9999, 0.435, 'Bogoya'), +(290, 'methane', 288.15, 3.0, 0.9999, 0.606, 'Bogoya'), +(291, 'methane', 258.15, 6.0, 0.9999, 0.022, 'Bogoya'), +(292, 'methane', 263.15, 6.0, 0.9999, 0.042, 'Bogoya'), +(293, 'methane', 268.15, 6.0, 0.9999, 0.066, 'Bogoya'), +(294, 'methane', 273.15, 6.0, 0.9999, 0.106, 'Bogoya'), +(295, 'methane', 278.15, 6.0, 0.9999, 0.154, 'Bogoya'), +(296, 'methane', 283.15, 6.0, 0.9999, 0.234, 'Bogoya'), +(297, 'methane', 288.15, 6.0, 0.9999, 0.325, 'Bogoya'), +(298, 'nitrogen', 248.15, 0.5, 0.9999569, 0.1264, 'Althaus'), +(299, 'nitrogen', 253.15, 0.5, 0.9999645, 0.2075, 'Althaus'), +(300, 'nitrogen', 263.15, 0.5, 0.9999744, 0.5311, 'Althaus'), +(301, 'nitrogen', 273.15, 0.5, 0.9999804, 1.245, 'Althaus'), +(302, 'nitrogen', 278.15, 0.5, 0.9999826, 1.78, 'Althaus'), +(303, 'nitrogen', 283.15, 0.5, 0.9999843, 2.503, 'Althaus'), +(304, 'nitrogen', 248.15, 1.5, 0.9999559, 0.04777, 'Althaus'), +(305, 'nitrogen', 253.15, 1.5, 0.9999634, 0.07539, 'Althaus'), +(306, 'nitrogen', 263.15, 1.5, 0.9999734, 0.1887, 'Althaus'), +(307, 'nitrogen', 268.15, 1.5, 0.9999768, 0.2906, 'Althaus'), +(308, 'nitrogen', 273.15, 1.5, 0.9999794, 0.4266, 'Althaus'), +(309, 'nitrogen', 278.15, 1.5, 0.9999816, 0.6007, 'Althaus'), +(310, 'nitrogen', 283.15, 1.5, 0.9999833, 0.838, 'Althaus'), +(311, 'nitrogen', 293.15, 1.5, 0.9999858, 1.632, 'Althaus'), +(312, 'nitrogen', 263.15, 4.0, 0.9999709, 0.07987, 'Althaus'), +(313, 'nitrogen', 273.15, 4.0, 0.9999769, 0.1708, 'Althaus'), +(314, 'nitrogen', 283.15, 4.0, 0.9999808, 0.3542, 'Althaus'), +(315, 'nitrogen', 293.15, 4.0, 0.9999833, 0.6535, 'Althaus'), +(316, 'nitrogen', 248.15, 6.0, 0.9999514, 0.01431, 'Althaus'), +(317, 'nitrogen', 253.15, 6.0, 0.9999589, 0.02227, 'Althaus'), +(318, 'nitrogen', 258.15, 6.0, 0.9999645, 0.03471, 'Althaus'), +(319, 'nitrogen', 263.15, 6.0, 0.9999689, 0.05598, 'Althaus'), +(320, 'nitrogen', 268.15, 6.0, 0.9999723, 0.08509, 'Althaus'), +(321, 'nitrogen', 273.15, 6.0, 0.9999749, 0.1268, 'Althaus'), +(322, 'nitrogen', 278.15, 6.0, 0.9999771, 0.1775, 'Althaus'); +INSERT INTO PUBLIC.WATERDEWPOINTPAPER(ID, GASCOMPONENT, TEMPERATURE, PRESSURE, XWATER, YWATER, REFERENCE) VALUES +(323, 'nitrogen', 283.15, 6.0, 0.9999788, 0.2482, 'Althaus'), +(324, 'nitrogen', 293.15, 6.0, 0.9999813, 0.4672, 'Althaus'), +(325, 'nitrogen', 253.15, 8.0, 0.9999569, 0.02078, 'Althaus'), +(326, 'nitrogen', 258.15, 8.0, 0.9999625, 0.03086, 'Althaus'), +(327, 'nitrogen', 263.15, 8.0, 0.9999669, 0.04765, 'Althaus'), +(328, 'nitrogen', 268.15, 8.0, 0.9999703, 0.07427, 'Althaus'), +(329, 'nitrogen', 273.15, 8.0, 0.9999729, 0.10625, 'Althaus'), +(330, 'nitrogen', 278.15, 8.0, 0.9999751, 0.1511, 'Althaus'), +(331, 'nitrogen', 283.15, 8.0, 0.9999768, 0.2045, 'Althaus'), +(332, 'nitrogen', 293.15, 8.0, 0.9999793, 0.3752, 'Althaus'), +(333, 'nitrogen', 253.15, 10.0, 0.9999549, 0.01804, 'Althaus'), +(334, 'nitrogen', 258.15, 10.0, 0.9999605, 0.02463, 'Althaus'), +(335, 'nitrogen', 263.15, 10.0, 0.9999649, 0.04155, 'Althaus'), +(336, 'nitrogen', 268.15, 10.0, 0.9999683, 0.05909, 'Althaus'), +(337, 'nitrogen', 273.15, 10.0, 0.9999709, 0.09069, 'Althaus'), +(338, 'nitrogen', 278.15, 10.0, 0.9999731, 0.122, 'Althaus'), +(339, 'nitrogen', 283.15, 10.0, 0.9999748, 0.1756, 'Althaus'), +(340, 'nitrogen', 293.15, 10.0, 0.9999773, 0.3265, 'Althaus'), +(341, 'nitrogen', 253.17, 0.981, 0.9999639, 0.08, 'Blanco'), +(342, 'nitrogen', 259.64, 1.974, 0.9999699, 0.08, 'Blanco'), +(343, 'nitrogen', 263.39, 2.949, 0.999972, 0.08, 'Blanco'), +(344, 'nitrogen', 266.3, 3.963, 0.9999731, 0.08, 'Blanco'), +(345, 'nitrogen', 268.34, 4.915, 0.9999734, 0.08, 'Blanco'), +(346, 'nitrogen', 270.23, 5.994, 0.9999734, 0.08, 'Blanco'), +(347, 'nitrogen', 271.71, 6.98, 0.9999732, 0.08, 'Blanco'), +(348, 'nitrogen', 273.04, 8.004, 0.9999727, 0.08, 'Blanco'), +(349, 'nitrogen', 274.1, 8.911, 0.9999724, 0.08, 'Blanco'), +(350, 'nitrogen', 275.2, 9.971, 0.9999719, 0.08, 'Blanco'), +(351, 'nitrogen', 276.13, 10.961, 0.9999712, 0.08, 'Blanco'), +(352, 'nitrogen', 249.8, 0.472, 0.9999596, 0.1, 'Blanco'), +(353, 'nitrogen', 255.63, 0.994, 0.9999668, 0.1, 'Blanco'), +(354, 'nitrogen', 259.77, 1.493, 0.9999715, 0.1, 'Blanco'), +(355, 'nitrogen', 262.52, 1.972, 0.9999726, 0.1, 'Blanco'), +(356, 'nitrogen', 264.67, 2.48, 0.9999735, 0.1, 'Blanco'), +(357, 'nitrogen', 266.64, 3.007, 0.9999745, 0.1, 'Blanco'), +(358, 'nitrogen', 268.2, 3.489, 0.9999748, 0.1, 'Blanco'), +(359, 'nitrogen', 269.81, 3.975, 0.9999752, 0.1, 'Blanco'), +(360, 'nitrogen', 272.08, 4.952, 0.9999754, 0.1, 'Blanco'), +(361, 'nitrogen', 274.32, 5.975, 0.9999755, 0.1, 'Blanco'), +(362, 'nitrogen', 275.78, 6.961, 0.9999751, 0.1, 'Blanco'), +(363, 'nitrogen', 277.09, 7.965, 0.9999746, 0.1, 'Blanco'), +(364, 'nitrogen', 278.43, 8.977, 0.9999742, 0.1, 'Blanco'), +(365, 'nitrogen', 279.55, 10.057, 0.9999736, 0.1, 'Blanco'), +(366, 'nitrogen', 252.61, 0.421, 0.9999642, 0.14, 'Blanco'), +(367, 'nitrogen', 260.02, 0.939, 0.9999711, 0.14, 'Blanco'), +(368, 'nitrogen', 264.25, 1.505, 0.9999743, 0.14, 'Blanco'), +(369, 'nitrogen', 267.26, 2.019, 0.9999757, 0.14, 'Blanco'), +(370, 'nitrogen', 269.5, 2.531, 0.9999765, 0.14, 'Blanco'), +(371, 'nitrogen', 271.48, 3.006, 0.999977, 0.14, 'Blanco'), +(372, 'nitrogen', 272.85, 3.509, 0.9999773, 0.14, 'Blanco'), +(373, 'nitrogen', 274.06, 3.989, 0.9999774, 0.14, 'Blanco'), +(374, 'nitrogen', 275.47, 4.556, 0.9999775, 0.14, 'Blanco'), +(375, 'nitrogen', 276.72, 4.999, 0.9999774, 0.14, 'Blanco'), +(376, 'nitrogen', 277.9, 5.447, 0.9999775, 0.14, 'Blanco'), +(377, 'nitrogen', 278.7, 6.0, 0.9999773, 0.14, 'Blanco'), +(378, 'nitrogen', 279.74, 6.446, 0.9999772, 0.14, 'Blanco'), +(379, 'nitrogen', 280.63, 6.976, 0.9999769, 0.14, 'Blanco'), +(380, 'nitrogen', 281.5, 7.486, 0.9999767, 0.14, 'Blanco'), +(381, 'nitrogen', 282.53, 8.491, 0.9999761, 0.14, 'Blanco'), +(382, 'nitrogen', 283.93, 9.922, 0.9999751, 0.14, 'Blanco'), +(383, 'nitrogen', 257.44, 0.437, 0.9999693, 0.26, 'Blanco'), +(384, 'nitrogen', 265.12, 0.988, 0.9999757, 0.26, 'Blanco'), +(385, 'nitrogen', 269.29, 1.491, 0.9999775, 0.26, 'Blanco'), +(386, 'nitrogen', 272.39, 1.959, 0.9999786, 0.26, 'Blanco'), +(387, 'nitrogen', 275.07, 2.471, 0.9999793, 0.26, 'Blanco'), +(388, 'nitrogen', 277.4, 2.953, 0.9999797, 0.26, 'Blanco'); +INSERT INTO PUBLIC.WATERDEWPOINTPAPER(ID, GASCOMPONENT, TEMPERATURE, PRESSURE, XWATER, YWATER, REFERENCE) VALUES +(389, 'nitrogen', 279.27, 3.455, 0.99998, 0.26, 'Blanco'), +(390, 'nitrogen', 280.92, 3.944, 0.99998, 0.26, 'Blanco'), +(391, 'nitrogen', 282.34, 4.444, 0.99998, 0.26, 'Blanco'), +(392, 'nitrogen', 283.24, 4.921, 0.9999799, 0.26, 'Blanco'), +(393, 'nitrogen', 298.15, 2.249, 0.999988, 1.529, 'Rigby'), +(394, 'nitrogen', 298.15, 3.09, 0.999988, 1.149, 'Rigby'), +(395, 'nitrogen', 298.15, 3.87, 0.999988, 0.941, 'Rigby'), +(396, 'nitrogen', 323.15, 2.109, 0.999991, 6.26, 'Rigby'), +(397, 'nitrogen', 323.15, 3.742, 0.999991, 3.68, 'Rigby'), +(398, 'nitrogen', 323.15, 5.982, 0.999991, 2.42, 'Rigby'), +(399, 'nitrogen', 323.15, 7.7, 0.999991, 1.956, 'Rigby'), +(400, 'nitrogen', 348.15, 4.221, 0.999991, 10.09, 'Rigby'), +(401, 'nitrogen', 348.15, 6.115, 0.999991, 7.21, 'Rigby'), +(402, 'nitrogen', 348.15, 8.972, 0.999991, 5.23, 'Rigby'), +(403, 'nitrogen', 373.15, 5.717, 0.999991, 19.94, 'Rigby'), +(404, 'nitrogen', 373.15, 7.948, 0.999991, 15.03, 'Rigby'), +(405, 'nitrogen', 373.15, 10.152, 0.999991, 12.18, 'Rigby'), +(406, 'nitrogen', 233.16, 1.01, 0.9999, 0.016, 'Kosyakov'), +(407, 'nitrogen', 233.16, 2.03, 0.9999, 0.009, 'Kosyakov'), +(408, 'nitrogen', 233.16, 4.05, 0.9999, 0.005, 'Kosyakov'), +(409, 'nitrogen', 233.16, 6.08, 0.9999, 0.004, 'Kosyakov'), +(410, 'nitrogen', 243.16, 1.01, 0.9999, 0.046, 'Kosyakov'), +(411, 'nitrogen', 243.16, 2.03, 0.9999, 0.024, 'Kosyakov'), +(412, 'nitrogen', 243.16, 4.05, 0.9999, 0.014, 'Kosyakov'), +(413, 'nitrogen', 243.16, 6.08, 0.9999, 0.011, 'Kosyakov'), +(414, 'nitrogen', 243.16, 8.1, 0.9999, 0.009, 'Kosyakov'), +(415, 'nitrogen', 243.16, 10.1, 0.9999, 0.008, 'Kosyakov'), +(416, 'nitrogen', 243.16, 12.12, 0.9999, 0.007, 'Kosyakov'), +(417, 'nitrogen', 253.16, 1.01, 0.9999, 0.11, 'Kosyakov'), +(418, 'nitrogen', 253.16, 2.03, 0.9999, 0.06, 'Kosyakov'), +(419, 'nitrogen', 253.16, 4.05, 0.9999, 0.035, 'Kosyakov'), +(420, 'nitrogen', 253.16, 6.08, 0.9999, 0.026, 'Kosyakov'), +(421, 'nitrogen', 253.16, 8.1, 0.9999, 0.022, 'Kosyakov'), +(422, 'nitrogen', 253.16, 10.1, 0.9999, 0.02, 'Kosyakov'), +(423, 'nitrogen', 253.16, 12.12, 0.9999, 0.018, 'Kosyakov'), +(424, 'nitrogen', 263.16, 1.01, 0.9999, 0.285, 'Kosyakov'), +(425, 'nitrogen', 263.15, 2.03, 0.9999, 0.148, 'Kosyakov'), +(426, 'nitrogen', 263.15, 4.05, 0.9999, 0.083, 'Kosyakov'), +(427, 'nitrogen', 263.15, 6.08, 0.9999, 0.061, 'Kosyakov'), +(428, 'nitrogen', 263.16, 8.1, 0.9999, 0.051, 'Kosyakov'), +(429, 'nitrogen', 263.16, 10.1, 0.9999, 0.047, 'Kosyakov'), +(430, 'nitrogen', 263.16, 12.12, 0.9999, 0.04, 'Kosyakov'), +(431, 'nitrogen', 273.16, 1.01, 0.9999, 0.66, 'Kosyakov'), +(432, 'nitrogen', 273.16, 2.03, 0.9999, 0.346, 'Kosyakov'), +(433, 'nitrogen', 273.16, 4.05, 0.9999, 0.18, 'Kosyakov'), +(434, 'nitrogen', 273.16, 6.08, 0.9999, 0.138, 'Kosyakov'), +(435, 'nitrogen', 273.16, 8.1, 0.9999, 0.11, 'Kosyakov'), +(436, 'nitrogen', 273.16, 10.1, 0.9999, 0.09, 'Kosyakov'), +(437, 'nitrogen', 273.16, 12.12, 0.9999, 0.083, 'Kosyakov'), +(438, 'nitrogen', 283.16, 2.03, 0.9999, 0.725, 'Kosyakov'), +(439, 'nitrogen', 283.16, 4.05, 0.9999, 0.398, 'Kosyakov'), +(440, 'nitrogen', 283.16, 6.08, 0.9999, 0.282, 'Kosyakov'), +(441, 'nitrogen', 283.16, 8.1, 0.9999, 0.226, 'Kosyakov'), +(442, 'nitrogen', 283.16, 10.1, 0.9999, 0.19, 'Kosyakov'), +(443, 'nitrogen', 283.16, 12.12, 0.9999, 0.155, 'Kosyakov'), +(444, 'nitrogen', 293.16, 4.05, 0.9999, 0.776, 'Kosyakov'), +(445, 'nitrogen', 293.16, 6.08, 0.9999, 0.552, 'Kosyakov'), +(446, 'nitrogen', 293.16, 8.1, 0.9999, 0.427, 'Kosyakov'), +(447, 'nitrogen', 293.16, 10.1, 0.9999, 0.371, 'Kosyakov'), +(448, 'nitrogen', 293.16, 12.12, 0.9999, 0.288, 'Kosyakov'), +(449, 'nitrogen', 258.15, 3.0, 0.9999, 0.065, 'Bogoya'), +(450, 'nitrogen', 263.15, 3.0, 0.9999, 0.095, 'Bogoya'), +(451, 'nitrogen', 268.15, 3.0, 0.9999, 0.149, 'Bogoya'), +(452, 'nitrogen', 273.15, 3.0, 0.9999, 0.218, 'Bogoya'), +(453, 'nitrogen', 278.15, 3.0, 0.9999, 0.309, 'Bogoya'), +(454, 'nitrogen', 283.15, 3.0, 0.9999, 0.433, 'Bogoya'), +(455, 'nitrogen', 288.15, 3.0, 0.9999, 0.599, 'Bogoya'), +(456, 'nitrogen', 258.15, 6.0, 0.9999, 0.031, 'Bogoya'); +INSERT INTO PUBLIC.WATERDEWPOINTPAPER(ID, GASCOMPONENT, TEMPERATURE, PRESSURE, XWATER, YWATER, REFERENCE) VALUES +(457, 'nitrogen', 263.15, 6.0, 0.9999, 0.048, 'Bogoya'), +(458, 'nitrogen', 268.15, 6.0, 0.9999, 0.077, 'Bogoya'), +(459, 'nitrogen', 273.15, 6.0, 0.9999, 0.116, 'Bogoya'), +(460, 'nitrogen', 278.15, 6.0, 0.9999, 0.162, 'Bogoya'), +(461, 'nitrogen', 283.15, 6.0, 0.9999, 0.225, 'Bogoya'), +(462, 'nitrogen', 288.15, 6.0, 0.9999, 0.314, 'Bogoya'), +(463, 'nitrogen', 310.93, 0.3447, 0.9999, 20.2, 'Gil'), +(464, 'nitrogen', 310.93, 1.379, 0.9999, 5.02, 'Gil'), +(465, 'nitrogen', 310.93, 3.1027, 0.9999, 2.36, 'Gil'), +(466, 'nitrogen', 310.93, 6.55, 0.9999, 1.22, 'Gil'), +(467, 'nitrogen', 310.93, 10.3422, 0.9999, 0.85, 'Gil'), +(468, 'nitrogen', 310.93, 13.7896, 0.9999, 0.69, 'Gil'), +(469, 'nitrogen', 366.48, 0.3447, 0.9999, 233.0, 'Gil'), +(470, 'nitrogen', 366.48, 1.379, 0.9999, 60.5, 'Gil'), +(471, 'nitrogen', 366.48, 3.1027, 0.9999, 27.7, 'Gil'), +(472, 'nitrogen', 366.48, 6.55, 0.9999, 13.7, 'Gil'), +(473, 'nitrogen', 366.48, 13.7896, 0.9999, 7.47, 'Gil'), +(474, 'methane', 253.15, 15.0, 0.9999, 0.00878, STRINGDECODE('Fr\u00f8yna')), +(475, 'methane', 263.15, 15.0, 0.9999, 0.02031, STRINGDECODE('Fr\u00f8yna')), +(476, 'methane', 273.15, 15.0, 0.9999, 0.04157, STRINGDECODE('Fr\u00f8yna')), +(477, 'methane', 283.15, 15.0, 0.9999, 0.0853, STRINGDECODE('Fr\u00f8yna')), +(478, 'methane', 293.15, 15.0, 0.9999, 0.15029, STRINGDECODE('Fr\u00f8yna')), +(479, 'methane', 253.15, 40.0, 0.9999, 0.00356, STRINGDECODE('Fr\u00f8yna')), +(480, 'methane', 263.15, 40.0, 0.9999, 0.00773, STRINGDECODE('Fr\u00f8yna')), +(481, 'methane', 273.15, 40.0, 0.9999, 0.01565, STRINGDECODE('Fr\u00f8yna')), +(482, 'methane', 283.15, 40.0, 0.9999, 0.03139, STRINGDECODE('Fr\u00f8yna')), +(483, 'methane', 293.15, 40.0, 0.9999, 0.05935, STRINGDECODE('Fr\u00f8yna')), +(484, 'methane', 253.15, 60.0, 0.9999, 0.00305, STRINGDECODE('Fr\u00f8yna')), +(485, 'methane', 263.15, 60.0, 0.9999, 0.00552, STRINGDECODE('Fr\u00f8yna')), +(486, 'methane', 273.15, 60.0, 0.9999, 0.01347, STRINGDECODE('Fr\u00f8yna')), +(487, 'methane', 283.15, 60.0, 0.9999, 0.02402, STRINGDECODE('Fr\u00f8yna')), +(488, 'methane', 293.15, 60.0, 0.9999, 0.04281, STRINGDECODE('Fr\u00f8yna')), +(489, 'methane', 263.15, 100.0, 0.9999, 0.00469, STRINGDECODE('Fr\u00f8yna')), +(490, 'methane', 273.15, 100.0, 0.9999, 0.00968, STRINGDECODE('Fr\u00f8yna')), +(491, 'methane', 283.15, 100.0, 0.9999, 0.01738, STRINGDECODE('Fr\u00f8yna')), +(492, 'methane', 283.15, 180.0, 0.9999, 0.01504, STRINGDECODE('Fr\u00f8yna')), +(493, 'methane', 293.15, 180.0, 0.9999, 0.02544, STRINGDECODE('Fr\u00f8yna')), +(494, 'nitrogen', 253.15, 5.0, 0.9999, 0.03456, STRINGDECODE('Fr\u00f8yna')), +(495, 'nitrogen', 258.15, 5.0, 0.9999, 0.04075, STRINGDECODE('Fr\u00f8yna')), +(496, 'nitrogen', 263.15, 5.0, 0.9999, 0.0629, STRINGDECODE('Fr\u00f8yna')), +(497, 'nitrogen', 268.15, 5.0, 0.9999, 0.09038, STRINGDECODE('Fr\u00f8yna')), +(498, 'nitrogen', 273.15, 5.0, 0.9999, 0.14668, STRINGDECODE('Fr\u00f8yna')), +(499, 'nitrogen', 278.15, 5.0, 0.9999, 0.18393, STRINGDECODE('Fr\u00f8yna')), +(500, 'nitrogen', 283.15, 5.0, 0.9999, 0.25568, STRINGDECODE('Fr\u00f8yna')), +(501, 'nitrogen', 288.15, 5.0, 0.9999, 0.34773, STRINGDECODE('Fr\u00f8yna')), +(502, 'nitrogen', 293.15, 5.0, 0.9999, 0.47236, STRINGDECODE('Fr\u00f8yna')), +(503, 'nitrogen', 253.15, 25.0, 0.9999, 0.0066, STRINGDECODE('Fr\u00f8yna')), +(504, 'nitrogen', 258.15, 25.0, 0.9999, 0.00859, STRINGDECODE('Fr\u00f8yna')), +(505, 'nitrogen', 263.15, 25.0, 0.9999, 0.01385, STRINGDECODE('Fr\u00f8yna')), +(506, 'nitrogen', 268.15, 25.0, 0.9999, 0.0181, STRINGDECODE('Fr\u00f8yna')), +(507, 'nitrogen', 273.15, 25.0, 0.9999, 0.0296, STRINGDECODE('Fr\u00f8yna')), +(508, 'nitrogen', 278.15, 25.0, 0.9999, 0.04284, STRINGDECODE('Fr\u00f8yna')), +(509, 'nitrogen', 283.15, 25.0, 0.9999, 0.05228, STRINGDECODE('Fr\u00f8yna')), +(510, 'nitrogen', 288.15, 25.0, 0.9999, 0.07218, STRINGDECODE('Fr\u00f8yna')), +(511, 'nitrogen', 293.15, 25.0, 0.9999, 0.09852, STRINGDECODE('Fr\u00f8yna')), +(512, 'nitrogen', 253.15, 50.0, 0.9999, 0.0041, STRINGDECODE('Fr\u00f8yna')); +INSERT INTO PUBLIC.WATERDEWPOINTPAPER(ID, GASCOMPONENT, TEMPERATURE, PRESSURE, XWATER, YWATER, REFERENCE) VALUES +(513, 'nitrogen', 258.15, 50.0, 0.9999, 0.00436, STRINGDECODE('Fr\u00f8yna')), +(514, 'nitrogen', 263.15, 50.0, 0.9999, 0.00653, STRINGDECODE('Fr\u00f8yna')), +(515, 'nitrogen', 268.15, 50.0, 0.9999, 0.00935, STRINGDECODE('Fr\u00f8yna')), +(516, 'nitrogen', 273.15, 50.0, 0.9999, 0.01424, STRINGDECODE('Fr\u00f8yna')), +(517, 'nitrogen', 278.15, 50.0, 0.9999, 0.02228, STRINGDECODE('Fr\u00f8yna')), +(518, 'nitrogen', 283.15, 50.0, 0.9999, 0.03161, STRINGDECODE('Fr\u00f8yna')), +(519, 'nitrogen', 288.15, 50.0, 0.9999, 0.03912, STRINGDECODE('Fr\u00f8yna')), +(520, 'nitrogen', 293.15, 50.0, 0.9999, 0.05303, STRINGDECODE('Fr\u00f8yna')), +(521, 'nitrogen', 253.15, 75.0, 0.9999, 0.00354, STRINGDECODE('Fr\u00f8yna')), +(522, 'nitrogen', 258.15, 75.0, 0.9999, 0.0032, STRINGDECODE('Fr\u00f8yna')), +(523, 'nitrogen', 263.15, 75.0, 0.9999, 0.00608, STRINGDECODE('Fr\u00f8yna')), +(524, 'nitrogen', 283.15, 75.0, 0.9999, 0.02279, STRINGDECODE('Fr\u00f8yna')), +(525, 'nitrogen', 293.15, 75.0, 0.9999, 0.03901, STRINGDECODE('Fr\u00f8yna')), +(526, 'nitrogen', 253.15, 100.0, 0.9999, 0.00273, STRINGDECODE('Fr\u00f8yna')), +(527, 'nitrogen', 263.15, 100.0, 0.9999, 0.00524, STRINGDECODE('Fr\u00f8yna')), +(528, 'nitrogen', 273.15, 100.0, 0.9999, 0.01011, STRINGDECODE('Fr\u00f8yna')), +(529, 'nitrogen', 283.15, 100.0, 0.9999, 0.01823, STRINGDECODE('Fr\u00f8yna')), +(530, 'nitrogen', 293.15, 100.0, 0.9999, 0.03095, STRINGDECODE('Fr\u00f8yna')), +(531, 'nitrogen', 253.15, 200.0, 0.9999, 0.00175, STRINGDECODE('Fr\u00f8yna')), +(532, 'nitrogen', 263.15, 200.0, 0.9999, 0.00301, STRINGDECODE('Fr\u00f8yna')), +(533, 'nitrogen', 273.15, 200.0, 0.9999, 0.00595, STRINGDECODE('Fr\u00f8yna')), +(534, 'nitrogen', 283.15, 200.0, 0.9999, 0.0105, STRINGDECODE('Fr\u00f8yna')); +CREATE CACHED TABLE PUBLIC.WATERMDEA( + ID INT DEFAULT '0', + TEMPERATURE VARCHAR(50) DEFAULT NULL, + PRESSURE VARCHAR(50) DEFAULT NULL, + GAMMA1 DOUBLE DEFAULT NULL, + HEATOFMIXING INT DEFAULT NULL, + X1 VARCHAR(50) DEFAULT NULL, + X2 VARCHAR(50) DEFAULT NULL, + REFERENCE VARCHAR(50) DEFAULT NULL +); +-- 105 +/- SELECT COUNT(*) FROM PUBLIC.WATERMDEA; +INSERT INTO PUBLIC.WATERMDEA(ID, TEMPERATURE, PRESSURE, GAMMA1, HEATOFMIXING, X1, X2, REFERENCE) VALUES +(1, '329.81', '0.1688', NULL, NULL, '0.9835', '0.0165', 'Xu'), +(2, '345.37', '0.3334', NULL, NULL, '0.9835', '0.0165', 'Xu'), +(3, '354.29', '0.485', NULL, NULL, '0.9835', '0.0165', 'Xu'), +(4, '359.94', '0.6094', NULL, NULL, '0.9835', '0.0165', 'Xu'), +(5, '364.96', '0.7459', NULL, NULL, '0.9835', '0.0165', 'Xu'), +(6, '369.16', '0.8687', NULL, NULL, '0.9835', '0.0165', 'Xu'), +(7, '328.74', '0.1575', NULL, NULL, '0.9636', '0.0364', 'Xu'), +(8, '345.06', '0.3197', NULL, NULL, '0.9636', '0.0364', 'Xu'), +(9, '355.66', '0.4226', NULL, NULL, '0.9636', '0.0364', 'Xu'), +(10, '361.6', '0.643', NULL, NULL, '0.9636', '0.0364', 'Xu'), +(11, '367.56', '0.8097', NULL, NULL, '0.9636', '0.0364', 'Xu'), +(12, '369.92', '0.8797', NULL, NULL, '0.9636', '0.0364', 'Xu'), +(13, '373.91', '1.0167', NULL, NULL, '0.9636', '0.0364', 'Xu'), +(14, '326.26', '0.1308', NULL, NULL, '0.9392', '0.0608', 'Xu'), +(15, '342.72', '0.2659', NULL, NULL, '0.9392', '0.0608', 'Xu'), +(16, '351.96', '0.4215', NULL, NULL, '0.9392', '0.0608', 'Xu'), +(17, '359.06', '0.5486', NULL, NULL, '0.9392', '0.0608', 'Xu'), +(18, '366.66', '0.6983', NULL, NULL, '0.9392', '0.0608', 'Xu'), +(19, '369.46', '0.8402', NULL, NULL, '0.9392', '0.0608', 'Xu'), +(20, '374.38', '1.0136', NULL, NULL, '0.9392', '0.0608', 'Xu'), +(21, '333.96', '0.1671', NULL, NULL, '0.869', '0.131', 'Xu'), +(22, '345.06', '0.2927', NULL, NULL, '0.869', '0.131', 'Xu'), +(23, '353.26', '0.4134', NULL, NULL, '0.869', '0.131', 'Xu'), +(24, '361.71', '0.5872', NULL, NULL, '0.869', '0.131', 'Xu'), +(25, '365.86', '0.6835', NULL, NULL, '0.869', '0.131', 'Xu'), +(26, '371.51', '0.8496', NULL, NULL, '0.869', '0.131', 'Xu'), +(27, '377', '1.0157', NULL, NULL, '0.869', '0.131', 'Xu'), +(28, '332.56', '0.1346', NULL, NULL, '0.739', '0.261', 'Xu'), +(29, '350.16', '0.3086', NULL, NULL, '0.739', '0.261', 'Xu'), +(30, '358.92', '0.4442', NULL, NULL, '0.739', '0.261', 'Xu'), +(31, '365.15', '0.5739', NULL, NULL, '0.739', '0.261', 'Xu'), +(32, '370.28', '0.6979', NULL, NULL, '0.739', '0.261', 'Xu'), +(33, '375.96', '0.8599', NULL, NULL, '0.739', '0.261', 'Xu'), +(34, '381.21', '1.0136', NULL, NULL, '0.739', '0.261', 'Xu'), +(35, '350.2', '0.4', NULL, NULL, '0.938', '0.062', 'Voutsas'), +(36, '350.8', '0.4', NULL, NULL, '0.902', '0.098', 'Voutsas'), +(37, '352.2', '0.4', NULL, NULL, '0.857', '0.143', 'Voutsas'), +(38, '355.8', '0.4', NULL, NULL, '0.738', '0.262', 'Voutsas'), +(39, '359', '0.4', NULL, NULL, '0.658', '0.342', 'Voutsas'), +(40, '370.1', '0.4', NULL, NULL, '0.442', '0.558', 'Voutsas'), +(41, '394.7', '0.4', NULL, NULL, '0.203', '0.797', 'Voutsas'), +(42, '437.7', '0.4', NULL, NULL, '0.067', '0.933', 'Voutsas'), +(43, '357.2', '0.533', NULL, NULL, '0.936', '0.064', 'Voutsas'), +(89, '298.16', NULL, NULL, -1401, '0.9088', '0.0912', 'Posey'), +(90, '298.16', NULL, NULL, -1912, '0.8528', '0.1472', 'Posey'), +(91, '298.16', NULL, NULL, -2170, '0.7957', '0.2043', 'Posey'), +(92, '298.16', NULL, NULL, -2207, '0.7058', '0.2942', 'Posey'), +(93, '298.16', NULL, NULL, -2413, '0.6984', '0.3016', 'Posey'), +(94, '298.16', NULL, NULL, -2348, '0.6574', '0.3426', 'Posey'), +(95, '298.16', NULL, NULL, -2230, '0.5545', '0.4455', 'Posey'), +(96, '298.16', NULL, NULL, -2021, '0.5044', '0.4956', 'Posey'), +(97, '298.16', NULL, NULL, -1998, '0.5014', '0.4986', 'Posey'), +(98, '298.16', NULL, NULL, -2184, '0.5006', '0.4994', 'Posey'), +(99, '298.16', NULL, NULL, -1691, '0.352', '0.648', 'Posey'), +(100, '298.16', NULL, NULL, -1212, '0.2617', '0.7383', 'Posey'), +(101, '342.46', NULL, NULL, -1029, '0.9013', '0.0987', 'Posey'), +(102, '342.56', NULL, NULL, -1793, '0.7991', '0.2009', 'Posey'), +(103, '342.66', NULL, NULL, -1915, '0.7072', '0.2928', 'Posey'), +(104, '342.56', NULL, NULL, -1772, '0.5215', '0.4785', 'Posey'), +(105, '342.96', NULL, NULL, -1382, '0.3478', '0.6522', 'Posey'), +(44, '358', '0.533', NULL, NULL, '0.899', '0.101', 'Voutsas'), +(45, '359.2', '0.533', NULL, NULL, '0.847', '0.153', 'Voutsas'), +(46, '362.9', '0.533', NULL, NULL, '0.735', '0.265', 'Voutsas'), +(47, '366.6', '0.533', NULL, NULL, '0.649', '0.351', 'Voutsas'); +INSERT INTO PUBLIC.WATERMDEA(ID, TEMPERATURE, PRESSURE, GAMMA1, HEATOFMIXING, X1, X2, REFERENCE) VALUES +(48, '379.6', '0.533', NULL, NULL, '0.417', '0.583', 'Voutsas'), +(49, '397.1', '0.533', NULL, NULL, '0.253', '0.747', 'Voutsas'), +(50, '419.7', '0.533', NULL, NULL, '0.14', '0.86', 'Voutsas'), +(51, '449.2', '0.533', NULL, NULL, '0.067', '0.933', 'Voutsas'), +(52, '362.8', '0.667', NULL, NULL, '0.933', '0.067', 'Voutsas'), +(53, '363.8', '0.667', NULL, NULL, '0.894', '0.106', 'Voutsas'), +(54, '364.8', '0.667', NULL, NULL, '0.842', '0.158', 'Voutsas'), +(55, '368.4', '0.667', NULL, NULL, '0.734', '0.266', 'Voutsas'), +(56, '372.3', '0.667', NULL, NULL, '0.643', '0.357', 'Voutsas'), +(57, '378.3', '0.667', NULL, NULL, '0.539', '0.461', 'Voutsas'), +(58, '388.4', '0.667', NULL, NULL, '0.405', '0.595', 'Voutsas'), +(59, '403.6', '0.667', NULL, NULL, '0.272', '0.728', 'Voutsas'), +(60, '429.9', '0.667', NULL, NULL, '0.146', '0.854', 'Voutsas'), +(61, '458.7', '0.667', NULL, NULL, '0.081', '0.919', 'Voutsas'), +(62, '272.76661', NULL, 0.999992238, NULL, '0.996070219', '0.003929781', 'Chang'), +(63, '272.376754', NULL, 0.999970702, NULL, '0.992384058', '0.007615942', 'Chang'), +(64, '271.93705', NULL, 0.999931137, NULL, '0.988355385', '0.011644615', 'Chang'), +(65, '271.574536', NULL, 0.999889585, NULL, '0.98528532', '0.01471468', 'Chang'), +(66, '271.31116', NULL, 0.999849705, NULL, '0.98286037', '0.01713963', 'Chang'), +(67, '270.70759', NULL, 0.999756925, NULL, '0.978270179', '0.021729821', 'Chang'), +(68, '270.172468', NULL, 0.999651286, NULL, '0.974047303', '0.025952697', 'Chang'), +(69, '269.59159', NULL, 0.999538898, NULL, '0.970233672', '0.029766328', 'Chang'), +(70, '269.245444', NULL, 0.999453327, NULL, '0.967645945', '0.032354055', 'Chang'), +(71, '268.771702', NULL, 0.999356245, NULL, '0.964954549', '0.035045451', 'Chang'), +(72, '269.87', NULL, 0.999503415, NULL, '0.969132622', '0.030867378', 'Chang'), +(73, '269.72', NULL, 0.999456817, NULL, '0.967747164', '0.032252836', 'Chang'), +(74, '269.1', NULL, 0.999248724, NULL, '0.962211362', '0.037788638', 'Chang'), +(75, '269.15', NULL, 0.999266309, NULL, '0.962645217', '0.037354783', 'Chang'), +(76, '268.36', NULL, 0.998951958, NULL, '0.955569173', '0.044430827', 'Chang'), +(77, '267.41', NULL, 0.998507893, NULL, '0.947285158', '0.052714842', 'Chang'), +(78, '266.53', NULL, 0.998023882, NULL, '0.939652266', '0.060347734', 'Chang'), +(79, '267.24', NULL, 0.998418454, NULL, '0.945784126', '0.054215874', 'Chang'), +(80, '267.55', NULL, 0.998577268, NULL, '0.948482936', '0.051517064', 'Chang'), +(81, '269.39', NULL, 0.999349921, NULL, '0.964786834', '0.035213166', 'Chang'), +(82, '269', NULL, 0.99921016, NULL, '0.961278232', '0.038721768', 'Chang'), +(83, '265.3', NULL, 0.997243705, NULL, '0.929239003', '0.070760997', 'Chang'), +(84, '262.96', NULL, 0.995428055, NULL, '0.910073561', '0.089926439', 'Chang'), +(85, '265', NULL, 0.997036756, NULL, '0.926756742', '0.073243258', 'Chang'), +(86, '263.85', NULL, 0.996174371, NULL, '0.917322591', '0.082677409', 'Chang'), +(87, '298.16', NULL, NULL, -265, '0.9841', '0.0159', 'Posey'), +(88, '298.16', NULL, NULL, -699, '0.9638', '0.0362', 'Posey'); +CREATE CACHED TABLE PUBLIC.WATERPZVLE( + ID INT DEFAULT '0', + X1 VARCHAR(50) DEFAULT NULL, + Y1 VARCHAR(50) DEFAULT NULL, + PRESSURE VARCHAR(50) DEFAULT NULL, + TEMPERATURE VARCHAR(50) DEFAULT NULL +); +-- 34 +/- SELECT COUNT(*) FROM PUBLIC.WATERPZVLE; +INSERT INTO PUBLIC.WATERPZVLE(ID, X1, Y1, PRESSURE, TEMPERATURE) VALUES +(1, '0', '0', '0.336', '386.06'), +(2, '0', '0', '0.33396', '386.06'), +(3, '0.0555', '0.1679', '0.38029', '386.06'), +(4, '0.1186', '0.3121', '0.43076', '386.06'), +(5, '0.2718', '0.5394', '0.54085', '386.06'), +(6, '0.3485', '0.621', '0.59567', '386.06'), +(7, '0.4483', '0.7153', '0.66864', '386.06'), +(8, '0.5377', '0.794', '0.74921', '386.06'), +(9, '0.5566', '0.81', '0.76362', '386.06'), +(10, '0.6007', '0.8459', '0.81359', '386.06'), +(11, '0.6744', '0.8997', '0.91232', '386.06'), +(12, '0.744', '0.94079', '1.034', '386.06'), +(13, '0.7921', '0.96237', '1.1381', '386.06'), +(14, '0.8394', '0.9781', '1.2533', '386.06'), +(15, '0.8977', '0.99075', '1.3902', '386.06'), +(16, '1', '1', '1.5761', '386.06'), +(17, '0', '0', '3.8914', '471.96'), +(18, '0.059', '0.1696', '4.4609', '471.96'), +(19, '0.0893', '0.2424', '4.8125', '471.96'), +(20, '0.1461', '0.3596', '5.4227', '471.96'), +(21, '0.1957', '0.4452', '5.8812', '471.96'), +(22, '0.2749', '0.5576', '6.6603', '471.96'), +(23, '0.3365', '0.6294', '7.3084', '471.96'), +(24, '0.4282', '0.7173', '8.284', '471.96'), +(25, '0.4634', '0.7462', '8.7287', '471.96'), +(26, '0.5389', '0.8009', '9.4389', '471.96'), +(27, '0.6098', '0.8448', '10.2835', '471.96'), +(28, '0.6512', '0.8676', '10.711', '471.96'), +(29, '0.6968', '0.8905', '11.256', '471.96'), +(30, '0.7915', '0.932', '12.435', '471.96'), +(31, '0.8489', '0.9536', '13.21', '471.96'), +(32, '0.8986', '0.9705', '13.883', '471.96'), +(33, '0.9519', '0.9868', '14.548', '471.96'), +(34, '1', '1', '15.117', '471.96'); diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase10_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase10_I.json new file mode 100755 index 0000000000..aaeea87a9a --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase10_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 3. water, PT-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15], "FlashMode": 1, "db": "PSCfluidsV3.nfdb", "fn": 3, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase10_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase10_O.json new file mode 100755 index 0000000000..4c6bb545db --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase10_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 273.15, 100.0, 100.0, 1.7591416626090792e-05, 100.0, 1024.078980272741, 0.0010315222836450196, 18.015, -48364.40081647616, -131.13231000490444, 87.17215903635807, 65.68775047218422, 1.327068721485165, "NaN", "NaN", 0.0017454769204656565, 0.5747659236750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7591416626090792e-05, 100.0, 1024.078980272741, "NaN", 18.015, -48364.40081647616, -131.13231000490444, 87.17215903635807, 65.68775047218422, 1.327068721485165, "NaN", "NaN", 0.0017454769204656565, 0.5747659236750002, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 288.15, 100.0, 100.0, 1.7821366041765808e-05, 100.0, 1010.8652702481054, 0.0009874231050716112, 18.015, -47059.66663132147, -126.48214586551786, 86.818422038433, 64.40302292431164, 1.348048866284811, "NaN", "NaN", 0.0011386620606785016, 0.5998837086750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7821366041765808e-05, 100.0, 1010.8652702481054, "NaN", 18.015, -47059.66663132147, -126.48214586551786, 86.818422038433, 64.40302292431164, 1.348048866284811, "NaN", "NaN", 0.0011386620606785016, 0.5998837086750002, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.15, 100.0, 100.0, 1.8068303609194975e-05, 100.0, 997.0498830245552, 0.0009483620128312553, 18.015, -45759.08363051543, -122.08209566519612, 86.61769868617785, 63.21093483993009, 1.3702961189471572, "NaN", "NaN", 0.0007972435083675893, 0.622134993675, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.8068303609194975e-05, 100.0, 997.0498830245552, "NaN", 18.015, -45759.08363051543, -122.08209566519612, 86.61769868617785, 63.21093483993009, 1.3702961189471572, "NaN", "NaN", 0.0007972435083675893, 0.622134993675, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 373.15, 100.0, 100.0, 1.9504533109881725e-05, 100.0, 923.631439856047, 0.0008167488026510454, 18.015, -39678.555180322466, -104.03937564749177, 87.66748543469407, 58.54473329469281, 1.4974444412174184, "NaN", "NaN", 0.00028177436162363283, 0.6880728236750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.9504533109881725e-05, 100.0, 923.631439856047, "NaN", 18.015, -39678.555180322466, -104.03937564749177, 87.66748543469407, 58.54473329469281, 1.4974444412174184, "NaN", "NaN", 0.00028177436162363283, 0.6880728236750002, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 273.15, 100.0, 100.0, 1.7588914032589605e-05, 100.0, 1024.2246887227332, 0.01031412090405825, 18.015, -48346.95254606981, -131.14561687607164, 87.15528210853013, 65.6909513560282, 1.3267471441564416, "NaN", "NaN", 0.0017469792695166066, 0.5747659236750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7588914032589605e-05, 100.0, 1024.2246887227332, "NaN", 18.015, -48346.95254606981, -131.14561687607164, 87.15528210853013, 65.6909513560282, 1.3267471441564416, "NaN", "NaN", 0.0017469792695166066, 0.5747659236750002, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.15, 100.0, 100.0, 1.7818453004892276e-05, 100.0, 1011.0305308240709, 0.00987301516375814, 18.015, -47042.49082448124, -126.49642316929524, 86.79890170544724, 64.40659683500715, 1.3476709835764697, "NaN", "NaN", 0.0011396656525829777, 0.5998837086750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7818453004892276e-05, 100.0, 1011.0305308240709, "NaN", 18.015, -47042.49082448124, -126.49642316929524, 86.79890170544724, 64.40659683500715, 1.3476709835764697, "NaN", "NaN", 0.0011396656525829777, 0.5998837086750002, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.15, 100.0, 100.0, 1.8064913734746627e-05, 100.0, 997.2369790700621, 0.00948227522246195, 18.015, -45742.223246056965, -122.09743941103743, 86.5950790490244, 63.21492572558608, 1.3698517882458774, "NaN", "NaN", 0.0007979643739861945, 0.622134993675, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.8064913734746627e-05, 100.0, 997.2369790700621, "NaN", 18.015, -45742.223246056965, -122.09743941103743, 86.5950790490244, 63.21492572558608, 1.3698517882458774, "NaN", "NaN", 0.0007979643739861945, 0.622134993675, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 373.15, 100.0, 100.0, 1.9497552302823227e-05, 100.0, 923.9621322821863, 0.008165237997949961, 18.015, -39664.01141983327, -104.0615090246186, 87.62046467829614, 58.55150570181658, 1.4964681715363246, "NaN", "NaN", 0.0002820716348668156, 0.6880728236750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.9497552302823227e-05, 100.0, 923.9621322821863, "NaN", 18.015, -39664.01141983327, -104.0615090246186, 87.62046467829614, 58.55150570181658, 1.4964681715363246, "NaN", "NaN", 0.0002820716348668156, 0.6880728236750002, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 273.15, 100.0, 100.0, 1.7564227247080935e-05, 100.0, 1025.664251923977, 0.10303250913149967, 18.015, -48172.25358096513, -131.27744426546127, 86.98979642173113, 65.72255440018407, 1.3235912270246073, "NaN", "NaN", 0.0017611747611472473, 0.5747659236750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7564227247080935e-05, 100.0, 1025.664251923977, "NaN", 18.015, -48172.25358096513, -131.27744426546127, 86.98979642173113, 65.72255440018407, 1.3235912270246073, "NaN", "NaN", 0.0017611747611472473, 0.5747659236750002, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 288.15, 100.0, 100.0, 1.778974556067345e-05, 100.0, 1012.6620382825769, 0.09861032820747112, 18.015, -46870.46130647698, -126.637758388431, 86.6078061212931, 64.44185308464574, 1.3439682748963147, "NaN", "NaN", 0.0011491241214509158, 0.5998837086750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.778974556067345e-05, 100.0, 1012.6620382825769, "NaN", 18.015, -46870.46130647698, -126.637758388431, 86.6078061212931, 64.44185308464574, 1.3439682748963147, "NaN", "NaN", 0.0011491241214509158, 0.5998837086750002, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 303.15, 100.0, 100.0, 1.803154348299732e-05, 100.0, 999.0825254081594, 0.09469035839264264, 18.015, -45573.27877640116, -122.24920524824185, 86.3740415539285, 63.25425869608667, 1.3655055538461662, "NaN", "NaN", 0.00080473966665895, 0.622134993675, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.803154348299732e-05, 100.0, 999.0825254081594, "NaN", 18.015, -45573.27877640116, -122.24920524824185, 86.3740415539285, 63.25425869608667, 1.3655055538461662, "NaN", "NaN", 0.00080473966665895, 0.622134993675, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 373.15, 100.0, 100.0, 1.9429323758330546e-05, 100.0, 927.2067429663301, 0.08143246819499829, 18.015, -39517.56672849729, -104.27923130264364, 87.16645325762559, 58.61784957722921, 1.4870291879742792, "NaN", "NaN", 0.00028482346867069467, 0.6880728236750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.9429323758330546e-05, 100.0, 927.2067429663301, "NaN", 18.015, -39517.56672849729, -104.27923130264364, 87.16645325762559, 58.61784957722921, 1.4870291879742792, "NaN", "NaN", 0.00028482346867069467, 0.6880728236750002, "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase11_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase11_I.json new file mode 100755 index 0000000000..b241d24c6f --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase11_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 3. water, Ph-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [-48364.40081647616, -47059.66663132147, -45759.08363051543, -39678.555180322466, -48346.95254606981, -47042.49082448124, -45742.223246056965, -39664.01141983327, -48172.25358096513, -46870.46130647698, -45573.27877640116, -39517.56672849729], "FlashMode": 2, "db": "PSCfluidsV3.nfdb", "fn": 3, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase11_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase11_O.json new file mode 100755 index 0000000000..603cfb141a --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase11_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 273.14999999999986, 100.0, 100.0, 1.7591416626090792e-05, 100.0, 1024.078980272741, 0.00103152228364502, 18.015, -48364.400816476154, -131.13231000490438, 87.17215903635812, 65.68775047218429, 1.3270687214851646, "NaN", "NaN", 0.0017454769204656635, 0.5747659236749998, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7591416626090792e-05, 100.0, 1024.078980272741, "NaN", 18.015, -48364.400816476154, -131.13231000490438, 87.17215903635812, 65.68775047218429, 1.3270687214851646, "NaN", "NaN", 0.0017454769204656635, 0.5747659236749998, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 288.15000000000015, 100.0, 100.0, 1.7821366041765808e-05, 100.0, 1010.8652702481054, 0.0009874231050716103, 18.015, -47059.666631321474, -126.4821458655179, 86.81842203843297, 64.40302292431164, 1.3480488662848105, "NaN", "NaN", 0.001138662060678499, 0.5998837086750004, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7821366041765808e-05, 100.0, 1010.8652702481054, "NaN", 18.015, -47059.666631321474, -126.4821458655179, 86.81842203843297, 64.40302292431164, 1.3480488662848105, "NaN", "NaN", 0.001138662060678499, 0.5998837086750004, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.15, 100.0, 100.0, 1.8068303609194975e-05, 100.0, 997.0498830245552, 0.0009483620128312553, 18.015, -45759.08363051543, -122.08209566519612, 86.61769868617785, 63.21093483993009, 1.3702961189471572, "NaN", "NaN", 0.0007972435083675893, 0.622134993675, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.8068303609194975e-05, 100.0, 997.0498830245552, "NaN", 18.015, -45759.08363051543, -122.08209566519612, 86.61769868617785, 63.21093483993009, 1.3702961189471572, "NaN", "NaN", 0.0007972435083675893, 0.622134993675, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 373.15, 100.0, 100.0, 1.9504533109881725e-05, 100.0, 923.631439856047, 0.0008167488026510454, 18.015, -39678.555180322466, -104.03937564749177, 87.66748543469407, 58.54473329469281, 1.4974444412174184, "NaN", "NaN", 0.00028177436162363283, 0.6880728236750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.9504533109881725e-05, 100.0, 923.631439856047, "NaN", 18.015, -39678.555180322466, -104.03937564749177, 87.66748543469407, 58.54473329469281, 1.4974444412174184, "NaN", "NaN", 0.00028177436162363283, 0.6880728236750002, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 273.14999999999986, 100.0, 100.0, 1.7588914032589605e-05, 100.0, 1024.2246887227332, 0.010314120904058253, 18.015, -48346.95254606981, -131.14561687607164, 87.1552821085302, 65.69095135602826, 1.3267471441564413, "NaN", "NaN", 0.0017469792695166135, 0.5747659236749998, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7588914032589605e-05, 100.0, 1024.2246887227332, "NaN", 18.015, -48346.95254606981, -131.14561687607164, 87.1552821085302, 65.69095135602826, 1.3267471441564413, "NaN", "NaN", 0.0017469792695166135, 0.5747659236749998, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.15000000000003, 100.0, 100.0, 1.7818453004892276e-05, 100.0, 1011.0305308240709, 0.009873015163758138, 18.015, -47042.490824481254, -126.49642316929526, 86.79890170544724, 64.40659683500715, 1.3476709835764697, "NaN", "NaN", 0.001139665652582978, 0.599883708675, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7818453004892276e-05, 100.0, 1011.0305308240709, "NaN", 18.015, -47042.490824481254, -126.49642316929526, 86.79890170544724, 64.40659683500715, 1.3476709835764697, "NaN", "NaN", 0.001139665652582978, 0.599883708675, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.15000000000015, 100.0, 100.0, 1.806491373474663e-05, 100.0, 997.2369790700619, 0.009482275222461947, 18.015, -45742.223246056965, -122.0974394110374, 86.59507904902432, 63.21492572558598, 1.3698517882458783, "NaN", "NaN", 0.0007979643739861913, 0.6221349936750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.806491373474663e-05, 100.0, 997.2369790700619, "NaN", 18.015, -45742.223246056965, -122.0974394110374, 86.59507904902432, 63.21492572558598, 1.3698517882458783, "NaN", "NaN", 0.0007979643739861913, 0.6221349936750002, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 373.14999999999986, 100.0, 100.0, 1.9497552302823223e-05, 100.0, 923.9621322821864, 0.008165237997949965, 18.015, -39664.01141983329, -104.0615090246186, 87.62046467829612, 58.55150570181658, 1.4964681715363242, "NaN", "NaN", 0.0002820716348668156, 0.6880728236749999, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.9497552302823223e-05, 100.0, 923.9621322821864, "NaN", 18.015, -39664.01141983329, -104.0615090246186, 87.62046467829612, 58.55150570181658, 1.4964681715363242, "NaN", "NaN", 0.0002820716348668156, 0.6880728236749999, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 273.15, 100.0, 100.0, 1.7564227247080935e-05, 100.0, 1025.664251923977, 0.10303250913149967, 18.015, -48172.25358096513, -131.27744426546127, 86.98979642173113, 65.72255440018407, 1.3235912270246073, "NaN", "NaN", 0.0017611747611472473, 0.5747659236750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7564227247080935e-05, 100.0, 1025.664251923977, "NaN", 18.015, -48172.25358096513, -131.27744426546127, 86.98979642173113, 65.72255440018407, 1.3235912270246073, "NaN", "NaN", 0.0017611747611472473, 0.5747659236750002, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 288.1500000000002, 100.0, 100.0, 1.778974556067345e-05, 100.0, 1012.6620382825769, 0.09861032820747102, 18.015, -46870.461306476995, -126.63775838843101, 86.60780612129301, 64.44185308464569, 1.3439682748963147, "NaN", "NaN", 0.0011491241214509095, 0.5998837086750002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.778974556067345e-05, 100.0, 1012.6620382825769, "NaN", 18.015, -46870.461306476995, -126.63775838843101, 86.60780612129301, 64.44185308464569, 1.3439682748963147, "NaN", "NaN", 0.0011491241214509095, 0.5998837086750002, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 303.1499999999998, 100.0, 100.0, 1.803154348299732e-05, 100.0, 999.0825254081594, 0.09469035839264268, 18.015, -45573.278776401174, -122.24920524824189, 86.37404155392862, 63.254258696086744, 1.3655055538461665, "NaN", "NaN", 0.0008047396666589535, 0.6221349936749998, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.803154348299732e-05, 100.0, 999.0825254081594, "NaN", 18.015, -45573.278776401174, -122.24920524824189, 86.37404155392862, 63.254258696086744, 1.3655055538461665, "NaN", "NaN", 0.0008047396666589535, 0.6221349936749998, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 373.1499999999998, 100.0, 100.0, 1.9429323758330536e-05, 100.0, 927.2067429663305, 0.08143246819499833, 18.015, -39517.56672849729, -104.27923130264367, 87.16645325762558, 58.61784957722921, 1.487029187974279, "NaN", "NaN", 0.0002848234686706944, 0.688072823675, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.9429323758330536e-05, 100.0, 927.2067429663305, "NaN", 18.015, -39517.56672849729, -104.27923130264367, 87.16645325762558, 58.61784957722921, 1.487029187974279, "NaN", "NaN", 0.0002848234686706944, 0.688072823675, "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase13_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase13_I.json new file mode 100755 index 0000000000..16f125dc54 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase13_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 4. Extended gas fraction no 1. PT-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [288.15, 288.15, 288.15, 288.15, 303.15, 303.15, 303.15, 303.15, 423.15, 423.15, 423.15, 423.15], "FlashMode": 1, "db": "PSCfluidsV3.nfdb", "fn": 4, "components": ["H2O", "He", "H2", "N2", "Ar", "O2", "CO2", "H2S", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6", "nC7", "nC8", "nC9", "nC10", "nC11"], "fractions": [0.01, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 79.982, 9.499, 4.999, 2.499, 1.0, 0.5, 0.5, 0.5, 0.3, 0.201, 0.001, 0.001, 0.001]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase13_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase13_O.json new file mode 100755 index 0000000000..fab80c3bc5 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase13_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 288.15, 99.99999999999999, 100.0, 0.023866393958591216, 100.0, 0.9057303060741053, 0.9962402795988915, 21.616516305, 605.0238355088158, 8.965509205206958, 42.9980157190857, 34.53706018594738, 1.2449819263013289, "NaN", "NaN", 1.0382523077392488e-05, 0.02877405115402945, 100.0, 100.0, 0.023866393958591216, 100.0, 0.9057303060741053, 0.9962402795988915, 21.616516305, 605.0238355088158, 8.965509205206958, 42.9980157190857, 34.53706018594738, 1.2449819263013289, 6.9831118434974235e-06, 370.06528379971195, 1.0382523077392488e-05, 0.02877405115402945, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 999999.9999999999, 288.15, 99.99999999999999, 100.0, 0.002278002360187864, 100.0, 9.489242277702168, 0.9558871911676492, 21.616516305, 72.39999579907415, -11.713537924122184, 45.02147895413571, 34.998906651286234, 1.2863681543743637, "NaN", "NaN", 1.361834208167908e-05, 0.031118667068388752, 99.09895677163611, 96.60186945008712, 0.0023081574800476825, 99.95134213675807, 9.12928398345637, 0.9640447380068135, 21.071825113894324, 330.61719736880235, -11.200893643904388, 43.79167253744027, 33.9350584529998, 1.2904551968900224, 6.8333455751843e-06, 369.2188055258544, 1.0635835855889688e-05, 0.0303962918274223, 0.9010432283638958, 3.398130549912858, 0.00012358145243983917, 0.04865786324193639, 659.6701643360437, "NaN", 81.52299703987569, -28326.964752233784, -68.09542035253418, 180.27862210683065, 152.00355559027497, 1.1860158231612095, "NaN", "NaN", 0.0003416417334536102, 0.11056727788301202, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.017373913350806524, "NaN", "NaN"], [2.0, 9999999.999999998, 288.15, 99.99999999999999, 100.0, 0.00015885294137122087, 100.0, 136.07879160691593, 0.6726255370045984, 21.616516305, -3223.9680258182275, -39.43780410247572, 78.15152442181444, 37.950451718741995, 2.059304194875208, "NaN", "NaN", 1.9652984925289677e-05, 0.04796588589691585, 93.27778024836057, 88.28355086667857, 0.0001648030500158547, 96.38166876324419, 124.14294677742313, 0.6937511283137486, 20.459136266875255, -2623.297121313918, -38.62286527393661, 75.92238941850128, 35.706286898006404, 2.126303125143496, 4.253059586868076e-06, 372.92907081296516, 1.5685924645867793e-05, 0.04509954308289048, 6.722219751639424, 11.716449133321465, 8.585085443357734e-05, 3.6183312367558043, 438.85837305700755, "NaN", 37.676366302273735, -11558.900637664548, -50.745926682935504, 109.08308760557722, 69.09056922808468, 1.5788419291418423, "NaN", "NaN", 7.47000661941918e-05, 0.08773936921065616, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.001130963259749549, "NaN", "NaN"], [1.0, 19999999.999999996, 288.15, 99.99999999999999, 100.0, 8.343182417437482e-05, 100.0, 259.091977418843, 0.7102773975447808, 21.616516305, -4952.695911873486, -49.21278703549467, 77.86487463206085, 40.04384766842981, 1.9444903316183766, "NaN", "NaN", 2.9069082250469608e-05, 0.06922467664334982, 100.0, 100.0, 8.343182417437482e-05, 100.0, 259.091977418843, 0.7102773975447808, 21.616516305, -4952.695911873486, -49.21278703549467, 77.86487463206085, 40.04384766842981, 1.9444903316183766, 9.543454751632682e-07, 528.5222929392453, 2.9069082250469608e-05, 0.06922467664334982, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.15, 99.99999999999999, 100.0, 0.025123870075749594, 100.0, 0.8603975518033341, 0.996835226491838, 21.616516305, 1257.5110860176444, 11.17272452899696, 44.007691813207956, 35.56331715466218, 1.237446203958473, "NaN", "NaN", 1.0869464740440252e-05, 0.030679614890955727, 100.0, 100.0, 0.025123870075749594, 100.0, 0.8603975518033341, 0.996835226491838, 21.616516305, 1257.5110860176444, 11.17272452899696, 44.007691813207956, 35.56331715466218, 1.237446203958473, 6.270180176748019e-06, 378.65115884383033, 1.0869464740440252e-05, 0.030679614890955727, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 999999.9999999999, 303.15, 99.99999999999999, 100.0, 0.0024306465634818647, 100.0, 8.893319427747103, 0.9664885859429609, 21.616516305, 927.4323886131832, -8.820653007378471, 45.59112579598332, 35.838412569614064, 1.2721301678031962, "NaN", "NaN", 1.1944642881601416e-05, 0.03222355120418819, 99.74599416841502, 98.94954957253316, 0.002440266234885508, 99.98594601447344, 8.787530640460679, 0.9687932578951762, 21.443914309938016, 1001.2085548228997, -8.683404153271633, 45.19494692406434, 35.49171119773276, 1.2733944179888241, 6.220552289285074e-06, 374.7919414998818, 1.1084102993043396e-05, 0.03203320987975836, 0.25400583158498025, 1.0504504274668207, 0.00013469439642744988, 0.014053985526554015, 663.6942436711398, "NaN", 89.39589556365704, -28043.859327815113, -62.71714552464549, 201.16729978180854, 171.98518054759225, 1.1696781033185644, "NaN", "NaN", 0.0003498715564890149, 0.1069690187319039, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.017324391288205683, "NaN", "NaN"], [2.0, 9999999.999999998, 303.15, 99.99999999999999, 100.0, 0.00018144672877944937, 100.0, 119.1342299219686, 0.7282606620219167, 21.616516305, -1998.7952232935177, -35.29163530760368, 72.33623199183843, 38.43200080765934, 1.8821875122729002, "NaN", "NaN", 1.7521027165032963e-05, 0.04611021422980555, 97.09106762208735, 94.28639390658728, 0.0001845918689996214, 98.52382736518432, 113.72158054227494, 0.7383537660538475, 20.992079097889505, -1708.2352572404557, -34.94894336708594, 70.93646953319411, 37.18751289278213, 1.9075346538424314, 4.126094374770066e-06, 374.77814934254764, 1.5519228346469288e-05, 0.04486504590042323, 2.908932377912643, 5.713606093412762, 9.231113561408336e-05, 1.476172634815691, 459.94752000781506, "NaN", 42.458277894802734, -11696.778416898173, -46.72962081149042, 119.05592632334313, 79.96911635412553, 1.4887738135823625, "NaN", "NaN", 8.433481284624039e-05, 0.0876700398850485, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.0015475076242955773, "NaN", "NaN"], [1.0, 19999999.999999996, 303.15, 99.99999999999999, 100.0, 9.215653953546115e-05, 100.0, 234.5630208552061, 0.7443617835445303, 21.616516305, -3789.211424099767, -45.276426648828114, 77.06872336745505, 40.50553116546253, 1.902671589532654, "NaN", "NaN", 2.6255038096609436e-05, 0.06506476659124857, 100.0, 100.0, 9.215653953546115e-05, 100.0, 234.5630208552061, 0.7443617835445303, 21.616516305, -3789.211424099767, -45.276426648828114, 77.06872336745505, 40.50553116546253, 1.902671589532654, 1.169855249353219e-06, 503.66545687755564, 2.6255038096609436e-05, 0.06506476659124857, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 423.15, 99.99999999999999, 100.0, 0.035153560732148266, 100.0, 0.6149168350172701, 0.9992202717430668, 21.616516305, 7075.955374825803, 27.257612670583956, 53.23306711585522, 44.860551625585614, 1.1866342518511175, "NaN", "NaN", 1.4493151438394324e-05, 0.04807594978187121, 100.0, 100.0, 0.035153560732148266, 100.0, 0.6149168350172701, 0.9992202717430668, 21.616516305, 7075.955374825803, 27.257612670583956, 53.23306711585522, 44.860551625585614, 1.1866342518511175, 2.8178734984649567e-06, 439.1284631849429, 1.4493151438394324e-05, 0.04807594978187121, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.15, 99.99999999999999, 100.0, 0.0034899409041907565, 100.0, 6.193949094966813, 0.9924192760628254, 21.616516305, 6941.4040062760705, 7.852422713782866, 53.884921815087964, 44.980231031143354, 1.1979689872597405, "NaN", "NaN", 1.463127569715726e-05, 0.049020016738007405, 100.0, 100.0, 0.0034899409041907565, 100.0, 6.193949094966813, 0.9924192760628254, 21.616516305, 6941.4040062760705, 7.852422713782866, 53.884921815087964, 44.980231031143354, 1.1979689872597405, 2.764433552170704e-06, 438.2708998209165, 1.463127569715726e-05, 0.049020016738007405, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.15, 99.99999999999999, 100.0, 0.0003325433332212164, 100.0, 65.00360748660728, 0.9498889597921918, 21.616516305, 5689.78191540131, -13.774996818441391, 60.80603005545098, 46.17242990863122, 1.3169337237779688, "NaN", "NaN", 1.6723562063993268e-05, 0.05570649712607532, 100.0, 100.0, 0.0003325433332212164, 100.0, 65.00360748660728, 0.9498889597921918, 21.616516305, 5689.78191540131, -13.774996818441391, 60.80603005545098, 46.17242990863122, 1.3169337237779688, 2.057521644855731e-06, 446.9009610484287, 1.6723562063993268e-05, 0.05570649712607532, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.15, 99.99999999999999, 100.0, 0.00016785058829509728, 100.0, 128.78427489927, 0.9635621320320128, 21.616516305, 4658.18810191622, -21.692856384720407, 66.44511300265125, 47.340514616446235, 1.4035570491996303, "NaN", "NaN", 2.0271843389362952e-05, 0.06348261225896439, 100.0, 100.0, 0.00016785058829509728, 100.0, 128.78427489927, 0.9635621320320128, 21.616516305, 4658.18810191622, -21.692856384720407, 66.44511300265125, 47.340514616446235, 1.4035570491996303, 1.2095536412230923e-06, 491.47168594707824, 2.0271843389362952e-05, 0.06348261225896439, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase14_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase14_I.json new file mode 100755 index 0000000000..e5feb2209a --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase14_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 4. Extended gas fraction no 2. PT-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [288.15, 288.15, 288.15, 288.15, 303.15, 303.15, 303.15, 303.15, 423.15, 423.15, 423.15, 423.15], "FlashMode": 1, "db": "PSCfluidsV3.nfdb", "fn": 4, "components": ["H2O", "He", "H2", "N2", "Ar", "O2", "CO2", "H2S", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6", "nC7", "nC8", "nC9", "nC10", "nC11"], "fractions": [3.2, 1.0, 1.0, 4.0, 1.0, 1.0, 5.0, 2.0, 60.0, 10.0, 5.0, 3.0, 1.5, 1.0, 0.5, 0.3, 0.2, 0.1, 0.1, 0.05, 0.05]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase14_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase14_O.json new file mode 100755 index 0000000000..ef21938385 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase14_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[3.0, 99999.99999999999, 288.15, 99.99999999999999, 100.0, 0.023202388292639146, 100.0, 1.0664828201263326, 0.9747472357585126, 24.7449485, -409.19099036729506, 12.432057345760235, 44.42167638147027, 35.65171859220474, 1.2459897625014658, "NaN", "NaN", 3.4834580253575236e-05, 0.03829765644872173, 97.86235579581802, 97.83815702553946, 0.02386051726978842, 99.9974664343959, 1.036810285774123, 0.9960064522949649, 24.73882972920773, 607.0005844821314, 15.417247980425271, 43.24177957042273, 34.77402690646085, 1.2435079689430104, 7.298148294839749e-06, 345.63851799140417, 1.093776601003328e-05, 0.026683858413456153, 0.13184573655717804, 0.7015543083420347, 0.00017759427592449462, 0.0010027404412982482, 741.4003653840615, "NaN", 131.66846106053814, -44979.247301444484, -90.01463921668565, 275.2127343913382, 249.72323913866083, 1.1020709780178852, "NaN", "NaN", 0.0009785386890998398, 0.11509342402546097, 2.005798467624798, 1.4602886661192593, 1.782152322719675e-05, 0.0015308251628073403, 1010.86498311613, "NaN", 18.015153776163963, -47059.20646410608, -126.48051654395567, 86.81809150669663, 64.40264230550588, 1.3480517009668473, "NaN", "NaN", 0.0011387217405559556, 0.5998837076441759, 0.025653454989718258, 0.07709458394398036, 0.053054247230899645], [3.0, 999999.9999999999, 288.15, 99.99999999999999, 100.0, 0.002179998384995866, 100.0, 11.350902216400918, 0.9223968612402995, 24.7449485, -1463.7973910911521, -9.488811575184465, 47.07166557240088, 36.54447184830273, 1.2880652857098844, "NaN", "NaN", 4.991902738080495e-05, 0.04673955716318418, 95.79859901866662, 93.96445136011373, 0.0023026161870792457, 99.91132232620306, 10.540699328894176, 0.9618271098658292, 24.27118489784707, 320.0145221490334, -5.08152584156885, 44.1983834564236, 34.25975284458736, 1.290096389688533, 7.139459950815208e-06, 343.16393527048734, 1.1268420840023504e-05, 0.028213061367798963, 1.1247233509163, 3.7954619573701103, 0.00012532787461657727, 0.06384507216157981, 666.2815854697624, "NaN", 83.5036550030887, -28731.961578570357, -64.84424281062408, 183.13902452854404, 154.93908184119155, 1.1820066464331878, "NaN", "NaN", 0.00035944543001669387, 0.11161429814702145, 3.0766776304170707, 2.2400866825391867, 1.7819939780967876e-05, 0.02483260163535946, 1011.0279279634284, "NaN", 18.01645679318502, -47038.13375207412, -126.48262629473219, 86.79577061747892, 64.40299572426923, 1.347697721843261, "NaN", "NaN", 0.0011402322769376435, 0.5998836984371771, 0.017419418205339304, 0.07338380194569681, 0.05087724047017043], [3.0, 9999999.999999998, 288.15, 99.99999999999999, 100.0, 0.00014870302715798588, 100.0, 166.40514300835542, 0.6367431476333177, 24.7449485, -5100.997541855156, -37.63048189544433, 78.95912314918544, 39.85217990099495, 1.9812999777011986, "NaN", "NaN", 6.027981676477751e-05, 0.06601736881747133, 83.25949356214325, 77.11249501868993, 0.00016641567531085736, 92.06808143893666, 137.7156552699587, 0.7008461028155946, 22.91804377262741, -2551.291115692182, -32.72236658449627, 74.05347758732603, 34.88470308846139, 2.122806589453824, 4.29459222110754e-06, 353.29653914959783, 1.6619645147204716e-05, 0.042246279497702946, 13.562871051835298, 20.57330679433814, 8.384334288887259e-05, 7.55616294917178, 447.6828302085082, "NaN", 37.53522503863288, -10971.240142106208, -46.91940482501725, 107.28488514027877, 64.5888441077549, 1.661043584574655, "NaN", "NaN", 7.262420733031226e-05, 0.08686373273342288, 3.1776353860214623, 2.314198186999973, 1.7795914713698667e-05, 0.3757556118915664, 1012.6578284769132, "NaN", 18.021172349734442, -46852.144614265024, -126.58427831694264, 86.59464604534479, 64.42687375917511, 1.3440764853659029, "NaN", "NaN", 0.0011515624779272465, 0.599883626713319, 0.0009524830382438853, 0.0348258915995147, 0.05955857007208941], [2.0, 19999999.999999996, 288.15, 99.99999999999999, 100.0, 7.86131863786193e-05, 100.0, 314.76842041260863, 0.6765499938384003, 24.7449485, -6684.125304785777, -46.69529260845933, 80.02752875412244, 41.82324127442774, 1.9134702695329884, "NaN", "NaN", 6.95132856103639e-05, 0.08546233999531459, 96.82110432036103, 97.68490010704234, 8.0996614505093e-05, 99.2850423146157, 308.23155167473556, 0.6922949131236538, 24.965712169305213, -5371.581650665493, -44.06722033641174, 79.81860048249978, 41.07983463574681, 1.9430117280229577, 8.710422820773179e-07, 507.01159002158386, 3.365641192343622e-05, 0.06857251528330158, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 3.17889567963898, 2.3150998929583775, 1.7764669658850668e-05, 0.7149576853842998, 1014.4318518631408, "NaN", 18.02104673976483, -46660.87788417215, -126.73971219830439, 86.39095430212524, 64.46552305083013, 1.3401109649573033, "NaN", "NaN", 0.0011616227656667543, 0.5998835872443402, "NaN", 0.010414232051681838, "NaN"], [2.0, 99999.99999999999, 303.15, 99.99999999999999, 100.0, 0.025115109547074146, 100.0, 0.9852614201669978, 0.9965380552019052, 24.7449485, 1262.36386596536, 18.076388197153655, 44.272823701127045, 35.820449286484035, 1.235965058591052, "NaN", "NaN", 1.1402956598731179e-05, 0.028311105862270758, 99.99755122932189, 99.98606698516572, 0.025116585115963083, 99.99998145647534, 0.9850903913041393, 0.9965622281823603, 24.742106660107797, 1263.4610580384656, 18.078832101231182, 44.266506970374856, 35.814574927550986, 1.2359914101988148, 6.646087853664575e-06, 353.6218637795069, 1.1379748097686692e-05, 0.028309072719273624, 0.0024487706781095575, 0.013933014834276742, 0.00019019285913762093, 1.8543524658193154e-05, 740.2686034244427, "NaN", 140.79380221510843, -43542.37081972396, -81.72243142160278, 302.22168458883954, 275.704695532033, 1.0961789533748643, "NaN", "NaN", 0.000959141057556186, 0.11133616118071246, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.025079636427740568, "NaN", "NaN"], [3.0, 999999.9999999999, 303.15, 99.99999999999999, 100.0, 0.0023293726835109914, 100.0, 10.623009651981796, 0.9345508514845028, 24.7449485, -521.7838586432332, -6.301949090537964, 47.55303772686933, 37.29193812136912, 1.2751559753238024, "NaN", "NaN", 3.647409148808064e-05, 0.04726600039724838, 96.56626926609346, 95.72601179543274, 0.002435830779184618, 99.94416896386603, 10.07033579983076, 0.9671166639412195, 24.52963389795251, 993.9314246536929, -2.547905111975847, 45.42610613614267, 35.6621151859729, 1.2737916946107075, 6.471734590605974e-06, 349.8602738103019, 1.173393644578516e-05, 0.029804507013554325, 0.5607986786973718, 2.1822341320772995, 0.0001417526367311648, 0.0337771514904142, 679.281474967789, "NaN", 96.2899401593188, -29881.535014590358, -59.58849888648661, 213.80469315797774, 185.15536536283958, 1.1547312860148315, "NaN", "NaN", 0.00039348644317286106, 0.10902041459178612, 2.87293205520918, 2.091754072496297, 1.8066534282992376e-05, 0.022053884643549845, 997.2337608713934, "NaN", 18.016557928940447, -45737.63234587349, -122.08296603089761, 86.59194914153119, 63.21120957640586, 1.3698828059422612, "NaN", "NaN", 0.0007983620778144286, 0.6221349657106767, 0.018176131035662065, 0.06959330799788889, 0.04795341697945979], [3.0, 9999999.999999998, 303.15, 99.99999999999999, 100.0, 0.00017008450445272642, 100.0, 145.48620157739091, 0.6900366378968786, 24.7449485, -3765.663756029702, -33.11186521238451, 74.70851939918616, 40.189546734190536, 1.858904254215667, "NaN", "NaN", 4.5838846208426224e-05, 0.06354715922241803, 89.98808650961577, 86.12488167189872, 0.00018348253939530485, 96.06935383738606, 129.07300858820017, 0.7344533389362138, 23.682643383154954, -1750.743736548753, -29.241775991608026, 71.13585729022338, 36.763616933692795, 1.9349526304368987, 4.2012099896818685e-06, 352.92571454546646, 1.6585635250453e-05, 0.04224123504006692, 6.866088840742678, 11.583888901003176, 9.012455563270497e-05, 3.6004573043783425, 463.22115276977166, "NaN", 41.74760055304502, -11028.983040323848, -43.02382479223354, 116.19474074441426, 74.53113499342597, 1.559009409351719, "NaN", "NaN", 8.06043820108078e-05, 0.08685892993459492, 3.1458246496415465, 2.291229427129077, 1.8039429261701395e-05, 0.33018885823558797, 999.0743947759526, "NaN", 18.022731871737932, -45550.63786555076, -122.18406717697899, 86.35854748072371, 63.23611779822183, 1.3656522646801712, "NaN", "NaN", 0.0008067640367551143, 0.6221347651603795, 0.0012407471795765686, 0.03483558570625529, 0.05546397623092412], [2.0, 19999999.999999996, 303.15, 99.99999999999999, 100.0, 8.67309714110492e-05, 100.0, 285.3069451133529, 0.7078692991938991, 24.7449485, -5473.907902268033, -42.601046132147445, 79.78327370463262, 42.20563156630243, 1.890346637256169, "NaN", "NaN", 5.4752445697815874e-05, 0.08145113347647795, 96.84711097093538, 97.70357409809421, 8.940362018946373e-05, 99.34868527192982, 279.2255984803841, 0.7247565344094755, 24.96377935371596, -4175.366504982529, -40.004906374643134, 79.57689537692937, 41.519616032705876, 1.9166096168674818, 1.103565561695464e-06, 479.8216565231317, 3.0030983812900272e-05, 0.0638490070421, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 3.152889029064618, 2.296425901906075, 1.8003704001233242e-05, 0.6513147280701765, 1001.0792085330481, "NaN", 18.02313375221785, -45361.129318548716, -122.3465217493687, 86.12258492707704, 63.27793125638088, 1.3610208680517275, "NaN", "NaN", 0.0008141201685898804, 0.6221346387948947, "NaN", 0.012182013488877833, "NaN"], [1.0, 99999.99999999999, 423.15, 99.99999999999999, 100.0, 0.03514930106594126, 100.0, 0.7039954636246579, 0.9991107118967549, 24.7449485, 7097.550966072109, 34.211524849318074, 53.16225355133046, 44.78634072670648, 1.1870193610086421, "NaN", "NaN", 1.5241146651954518e-05, 0.044149602508191166, 100.0, 100.0, 0.03514930106594126, 100.0, 0.7039954636246579, 0.9991107118967549, 24.7449485, 7097.550966072109, 34.211524849318074, 53.16225355133046, 44.78634072670648, 1.1870193610086421, 3.0288781542225783e-06, 410.453524933283, 1.5241146651954518e-05, 0.044149602508191166, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.15, 99.99999999999999, 100.0, 0.0034856632400156835, 100.0, 7.099064595777951, 0.9913185620186115, 24.7449485, 6952.937705169021, 14.790774631623302, 53.85371846885764, 44.91250768099428, 1.1990806403278842, "NaN", "NaN", 1.5394318155958456e-05, 0.0450656627674557, 100.0, 100.0, 0.0034856632400156835, 100.0, 7.099064595777951, 0.9913185620186115, 24.7449485, 6952.937705169021, 14.790774631623302, 53.85371846885764, 44.91250768099428, 1.1990806403278842, 2.9765947095150475e-06, 409.36488080015073, 1.5394318155958456e-05, 0.0450656627674557, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.15, 99.99999999999999, 100.0, 0.0003283924747172022, 100.0, 75.35175256774477, 0.9392422404215757, 24.7449485, 5589.900349800486, -7.017842655307797, 61.41276793963783, 46.18261170566907, 1.329781181086803, "NaN", "NaN", 1.776100443803061e-05, 0.05169010673763455, 100.0, 100.0, 0.0003283924747172022, 100.0, 75.35175256774477, 0.9392422404215757, 24.7449485, 5589.900349800486, -7.017842655307797, 61.41276793963783, 46.18261170566907, 1.329781181086803, 2.243636106006884e-06, 415.3225026635612, 1.776100443803061e-05, 0.05169010673763455, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.15, 99.99999999999999, 100.0, 0.00016445025677545852, 100.0, 150.47071974954054, 0.9465351545248296, 24.7449485, 4447.375268889334, -15.117425631328494, 67.69032790241916, 47.44018973168989, 1.4268561800713506, "NaN", "NaN", 2.1963325258425756e-05, 0.05972615150844755, 100.0, 100.0, 0.00016445025677545852, 100.0, 150.47071974954054, 0.9465351545248296, 24.7449485, 4447.375268889334, -15.117425631328494, 67.69032790241916, 47.44018973168989, 1.4268561800713506, 1.3188537423419359e-06, 457.58710459854314, 2.1963325258425756e-05, 0.05972615150844755, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase15_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase15_I.json new file mode 100755 index 0000000000..0a7c2d3e13 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase15_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 4. Extended gas fraction no 1. Ph-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [604.972931904732, 72.06637106673737, -3235.501861412581, -4967.127612795049, 1257.4638431178223, 927.5853023325541, -2006.104139543069, -3802.562778573276, 7075.927088153989, 6941.117103427105, 5686.65926137479, 4652.250024967821], "FlashMode": 2, "db": "PSCfluidsV3.nfdb", "fn": 4, "components": ["H2O", "He", "H2", "N2", "Ar", "O2", "CO2", "H2S", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6", "nC7", "nC8", "nC9", "nC10", "nC11"], "fractions": [0.01, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 79.982, 9.499, 4.999, 2.499, 1.0, 0.5, 0.5, 0.5, 0.3, 0.201, 0.001, 0.001, 0.001]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase15_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase15_O.json new file mode 100755 index 0000000000..26da3002f8 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase15_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 288.148816139551, 99.99999999999999, 100.0, 0.02386629466342007, 100.0, 0.9057340743442546, 0.9962402281080758, 21.616516305, 604.9729319047312, 8.965332548227389, 42.99793781844952, 34.53698086338698, 1.2449825301328552, "NaN", "NaN", 1.038248433942977e-05, 0.028773903099248255, 100.0, 100.0, 0.02386629466342007, 100.0, 0.9057340743442546, 0.9962402281080758, 21.616516305, 604.9729319047312, 8.965332548227389, 42.99793781844952, 34.53698086338698, 1.2449825301328552, 6.983171795457419e-06, 370.0645941649499, 1.038248433942977e-05, 0.028773903099248255, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 999999.9999999999, 288.1442192616942, 99.99999999999999, 100.0, 0.0022779430607239547, 100.0, 9.489489301866062, 0.9558825922641596, 21.616516305, 72.06637107205425, -11.714695751897963, 45.02128455379938, 34.998598258528375, 1.2863739347854797, "NaN", "NaN", 1.361909173478962e-05, 0.03111830466622523, 99.09866537683993, 96.60089970134516, 0.0023081064633365457, 99.9513268836302, 9.129420967695644, 0.9640427695644381, 21.071675542058497, 330.3645596023214, -11.201877907089274, 43.791147511664455, 33.93446965370697, 1.2904621159117113, 6.8335936277637924e-06, 369.2166309431431, 1.0635662081490426e-05, 0.030395677792739675, 0.9013346231600661, 3.3991002986548136, 0.00012357715092797415, 0.04867311636980966, 659.6680529142101, "NaN", 81.51989853734219, -28326.93783322904, -68.09726743631386, 180.2706536269501, 151.99590626984244, 1.1860230847724986, "NaN", "NaN", 0.00034163699905879786, 0.11056866293249108, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.017373888520134117, "NaN", "NaN"], [2.0, 9999999.999999998, 288.0140064540861, 99.99999999999999, 100.0, 0.0001586429606974279, 100.0, 136.25890622545896, 0.6720700226885332, 21.616516305, -3235.501861412361, -39.477840744835255, 78.2139537191177, 37.94685154202746, 2.0611447469493753, "NaN", "NaN", 1.9674904285486185e-05, 0.04798922036597333, 93.2346384794074, 88.22148051879428, 0.00016461933294421242, 96.35601089233687, 124.25157939180728, 0.6933076273170123, 20.454212116744166, -2631.7028431671924, -38.657710678164925, 75.97999013936246, 35.69368993134902, 2.128667287845486, 4.2536469667237e-06, 372.92378311494525, 1.5688476964603267e-05, 0.04510495385265549, 6.765361520592606, 11.778519481205725, 8.579567153357285e-05, 3.6439891076631383, 438.6519078370779, "NaN", 37.634435002365, -11556.562459424304, -50.78019761657893, 109.00059920741337, 68.99806847520357, 1.5797630515785506, "NaN", "NaN", 7.461256119497167e-05, 0.08773780509849978, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.0011271961219820738, "NaN", "NaN"], [1.0, 19999999.999999996, 287.9646596049259, 99.99999999999999, 100.0, 8.332937248467115e-05, 100.0, 259.4105254899941, 0.7098787408414972, 21.616516305, -4967.12761279505, -49.26288713692183, 77.86693739609204, 40.038797364810165, 1.9447871195184494, "NaN", "NaN", 2.910942985496081e-05, 0.06928532232685504, 100.0, 100.0, 8.332937248467115e-05, 100.0, 259.4105254899941, 0.7098787408414972, 21.616516305, -4967.12761279505, -49.26288713692183, 77.86693739609204, 40.038797364810165, 1.9447871195184494, 9.514377447508519e-07, 528.8906816096195, 2.910942985496081e-05, 0.06928532232685504, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.1489264844962, 99.99999999999999, 100.0, 0.02512378012403952, 100.0, 0.8604006323203083, 0.9968351877241001, 21.616516305, 1257.4638431178237, 11.172568688708393, 44.007617992288566, 35.563242242595706, 1.2374467348080724, "NaN", "NaN", 1.0869430169389888e-05, 0.03067947637239586, 100.0, 100.0, 0.02512378012403952, 100.0, 0.8604006323203083, 0.9968351877241001, 21.616516305, 1257.4638431178237, 11.172568688708393, 44.007617992288566, 35.563242242595706, 1.2374467348080724, 6.270228028142048e-06, 378.65055486809445, 1.0869430169389888e-05, 0.03067947637239586, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 999999.9999999999, 303.15269911014246, 99.99999999999999, 100.0, 0.002430673915902171, 100.0, 8.893219351052604, 0.9664902969302416, 21.616516305, 927.585302334709, -8.820148593587323, 45.591238169360096, 35.838569638233444, 1.272127728019655, "NaN", "NaN", 1.1944380591828047e-05, 0.03222377391801812, 99.74609587420721, 98.94995368324136, 0.002440289947316636, 99.98595158214405, 8.787472179409326, 0.968794046843376, 21.44398002173719, 1001.3319651814467, -8.682956351856362, 45.19520886797132, 35.49199853479342, 1.2733914891736984, 6.220447886657615e-06, 374.7929155185052, 1.1084183064918396e-05, 0.032033511196909954, 0.2539041257927921, 1.0500463167586236, 0.00013469640702014663, 0.014048417855954556, 663.694764145966, "NaN", 89.39730008854526, -28043.750550303703, -62.71604514180439, 201.1711309417931, 171.98883660620783, 1.1696755144777342, "NaN", "NaN", 0.00034987250492607907, 0.10696837903889024, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.017324366513838858, "NaN", "NaN"], [2.0, 9999999.999999998, 303.05727224024474, 99.99999999999999, 100.0, 0.00018131027252038046, 100.0, 119.22389175478273, 0.7279483363497115, 21.616516305, -2006.1041395428272, -35.31574889620106, 72.3663799109834, 38.42854481440033, 1.8831413018758267, "NaN", "NaN", 1.753252671377578e-05, 0.04611778251509858, 97.0725007818508, 94.25405875892523, 0.00018447187787708213, 98.5139822320591, 113.77828382088911, 0.7381008444976406, 20.988893678071044, -1713.8565056251728, -34.97073785645869, 70.96033991901012, 37.17792264414375, 1.9086687709321968, 4.127183646331747e-06, 374.7601263478293, 1.551970252797129e-05, 0.04486460240719992, 2.9274992181491877, 5.745941241074782, 9.226898142764856e-05, 1.4860177679409021, 459.8268969913305, "NaN", 42.42775941842635, -11696.698929829736, -46.75591742554106, 118.98904589633153, 79.89773491610902, 1.4892668236623676, "NaN", "NaN", 8.427545738269094e-05, 0.08767179088156384, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.0015449367152088269, "NaN", "NaN"], [1.0, 19999999.999999996, 302.97677792930153, 99.99999999999999, 100.0, 9.205146215480965e-05, 100.0, 234.83077616568357, 0.7439531112767838, 21.616516305, -3802.5627785732754, -45.320481310168425, 77.08429617652239, 40.499591286384934, 1.9033351628522834, "NaN", "NaN", 2.6282754638982525e-05, 0.06510463866378322, 100.0, 100.0, 9.205146215480965e-05, 100.0, 234.83077616568357, 0.7439531112767838, 21.616516305, -3802.5627785732754, -45.320481310168425, 77.08429617652239, 40.499591286384934, 1.9033351628522834, 1.1676401740365477e-06, 503.89879667355905, 2.6282754638982525e-05, 0.06510463866378322, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 423.1494686257066, 99.99999999999999, 100.0, 0.035153516397314004, 100.0, 0.6149176105367276, 0.9992202663890245, 21.616516305, 7075.92708815399, 27.25754582268235, 53.23302342852698, 44.86050775819266, 1.1866344383675702, "NaN", "NaN", 1.4493136401120757e-05, 0.04807586480002621, 100.0, 100.0, 0.035153516397314004, 100.0, 0.6149176105367276, 0.9992202663890245, 21.616516305, 7075.92708815399, 27.25754582268235, 53.23302342852698, 44.86050775819266, 1.1866344383675702, 2.817882941632222e-06, 439.12821962434725, 1.4493136401120757e-05, 0.04807586480002621, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.1446756169945, 99.99999999999999, 100.0, 0.0034898950960394986, 100.0, 6.194030396366775, 0.9924187433035576, 21.616516305, 6941.117103427105, 7.851744692622543, 53.884503739926366, 44.97979379998464, 1.1979713375196654, "NaN", "NaN", 1.4631127019744812e-05, 0.049019174940299906, 100.0, 100.0, 0.0034898950960394986, 100.0, 6.194030396366775, 0.9924187433035576, 21.616516305, 6941.117103427105, 7.851744692622543, 53.884503739926366, 44.97979379998464, 1.1979713375196654, 2.764527515576824e-06, 438.26833813448366, 1.4631127019744812e-05, 0.049019174940299906, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.09864508680187, 99.99999999999999, 100.0, 0.00033248758802509825, 100.0, 65.0145060553907, 0.9498457911375366, 21.616516305, 5686.659261374788, -13.782376810238798, 60.80469189568589, 46.16847840077933, 1.3170174543733608, "NaN", "NaN", 1.6722577501387186e-05, 0.055699488043849416, 100.0, 100.0, 0.00033248758802509825, 100.0, 65.0145060553907, 0.9498457911375366, 21.616516305, 5686.659261374788, -13.782376810238798, 60.80469189568589, 46.16847840077933, 1.3170174543733608, 2.0581884862352837e-06, 446.870865567614, 1.6722577501387186e-05, 0.055699488043849416, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.0606324871769, 99.99999999999999, 100.0, 0.00016779781284284739, 100.0, 128.82477988700097, 0.9634656035153042, 21.616516305, 4652.250024967822, -21.70689089750952, 66.44606462535987, 47.33410177810704, 1.4037673079093367, "NaN", "NaN", 2.0271952148076586e-05, 0.06347385816627206, 100.0, 100.0, 0.00016779781284284739, 100.0, 128.82477988700097, 0.9634656035153042, 21.616516305, 4652.250024967822, -21.70689089750952, 66.44606462535987, 47.33410177810704, 1.4037673079093367, 1.2100315653959412e-06, 491.4373360129071, 2.0271952148076586e-05, 0.06347385816627206, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase16_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase16_I.json new file mode 100755 index 0000000000..1275ef4b08 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase16_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 4. Extended gas fraction no 2. Ph-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [-409.2225426194027, -1464.5564650023514, -5112.459633401535, -6696.147195043972, 1262.3401512286352, -522.1566170347227, -3774.528324437404, -5485.141511954396, 7097.543668568065, 6952.723772567757, 5587.3712780191445, 4442.505757304328], "FlashMode": 2, "db": "PSCfluidsV3.nfdb", "fn": 4, "components": ["H2O", "He", "H2", "N2", "Ar", "O2", "CO2", "H2S", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6", "nC7", "nC8", "nC9", "nC10", "nC11"], "fractions": [3.2, 1.0, 1.0, 4.0, 1.0, 1.0, 5.0, 2.0, 60.0, 10.0, 5.0, 3.0, 1.5, 1.0, 0.5, 0.3, 0.2, 0.1, 0.1, 0.05, 0.05]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase16_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase16_O.json new file mode 100755 index 0000000000..43da77c7f9 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase16_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[3.0, 99999.99999999999, 288.14965133443485, 99.99999999999999, 100.0, 0.023202349858244754, 100.0, 1.0664845867414199, 0.9747469013193278, 24.7449485, -409.2216848606922, 12.43195082307423, 44.421671078589654, 35.65170878247614, 1.2459899565998982, "NaN", "NaN", 3.4835133697621565e-05, 0.038297777588549076, 97.8623235809032, 97.83812040256089, 0.02386048805148426, 99.99746638663238, 1.0368115086000924, 0.9960064378261716, 24.738828612593874, 606.9854852399685, 15.417187062692244, 43.24175451316172, 34.77400144651323, 1.2435081588086132, 7.298165025375029e-06, 345.63833803095946, 1.0937755132200204e-05, 0.026683820277972406, 0.1318488878566223, 0.7015697720461612, 0.00017759394925381076, 0.0010027641212532752, 741.4003506414123, "NaN", 131.66821624856848, -44979.26304595598, -90.0148188961351, 275.2120631555833, 249.7225904952939, 1.1020711526727887, "NaN", "NaN", 0.0009785379428462922, 0.11509351821507237, 2.0058275312401843, 1.4603098253936984, 1.7821517690706984e-05, 0.001530849246375315, 1010.8652971450548, "NaN", 18.015153775992367, -47059.236735051025, -126.48062159668852, 86.81809792813597, 64.40267103961307, 1.3480511992233293, "NaN", "NaN", 0.0011387320508379237, 0.5998831571113078, 0.0256534644968086, 0.07709467935157686, 0.05305433454303491], [3.0, 999999.9999999999, 288.13802792538354, 99.99999999999999, 100.0, 0.002179877194089514, 100.0, 11.35153327310964, 0.9223858380891142, 24.7449485, -1464.5564650136564, -9.491445931221635, 47.071341809531916, 36.54390618829893, 1.2880763640041248, "NaN", "NaN", 4.9932584477919936e-05, 0.04673894904437829, 95.79785137310239, 93.96266073464446, 0.0023025100417129684, 99.91128698262187, 10.541066642505928, 0.9618227393206837, 24.270911794735504, 319.4867734794714, -5.083585966728183, 44.19733520846028, 34.25856085483802, 1.2901106790718766, 7.140005006186504e-06, 343.1590386146821, 1.1268052542031735e-05, 0.02821184111892123, 1.1253690968026313, 3.7971784007092912, 0.0001253148858869595, 0.06387852800564309, 666.2694619518284, "NaN", 83.49348159445928, -28730.687686433474, -64.84781504154519, 183.11529632689908, 154.91561331157806, 1.182032542830939, "NaN", "NaN", 0.00035941010757793474, 0.1116162006977203, 3.076779530094993, 2.240160864669354, 1.781974994092906e-05, 0.02483448937248399, 1011.0386944544335, "NaN", 18.016456715781384, -47039.17309478315, -126.48623321548321, 86.79599344563177, 64.4039821607049, 1.3476805398314176, "NaN", "NaN", 0.0011405868254886187, 0.5998647939981312, 0.01741868153168292, 0.0733868160758037, 0.05087956246074783], [3.0, 9999999.999999998, 288.0245839329697, 99.99999999999999, 100.0, 0.00014852336382939786, 100.0, 166.60643727692172, 0.636267856664927, 24.7449485, -5112.459633401537, -37.670268766352834, 78.9964736530401, 39.85000219977938, 1.9823455280380746, "NaN", "NaN", 6.043194995385624e-05, 0.06604400106606262, 83.19164853031354, 77.02702140831373, 0.0001662747023462342, 92.02533177867093, 137.79191918503938, 0.7005574777870122, 22.911310348208783, -2557.77212262869, -32.75190258751087, 74.08210794031164, 34.869390927839866, 2.124559849457083, 4.294991347273235e-06, 353.308612543942, 1.6620201961019885e-05, 0.04224795517307652, 13.63054255770477, 20.65865570537058, 8.379387530160305e-05, 7.5984830961805665, 447.57229218266485, "NaN", 37.50381683960686, -10970.868275313573, -46.950539450344976, 107.21841779396497, 64.51606594477894, 1.6618871008926075, "NaN", "NaN", 7.256935713076146e-05, 0.08686647211888288, 3.1778089119816832, 2.314322886342943, 1.7793949672177578e-05, 0.376185125148497, 1012.7689261944113, "NaN", 18.02115930224868, -46863.04340410802, -126.62208236428023, 86.59723729795839, 64.43720456409991, 1.3439012117885163, "NaN", "NaN", 0.0011553159382060008, 0.5996854991764571, 0.0009504476531032423, 0.03482383977806562, 0.05959103135911765], [2.0, 19999999.999999996, 288.0006354352961, 99.99999999999999, 100.0, 7.853709422074814e-05, 100.0, 315.073389785063, 0.6762614348140543, 24.7449485, -6696.147195043968, -46.73702437005111, 80.02338025631191, 41.81986814307618, 1.9135254081273525, "NaN", "NaN", 6.969873393955172e-05, 0.08550842757829903, 96.82092653015616, 97.68477308130544, 8.091773363518534e-05, 99.28440118924196, 308.5321897588414, 0.6919950630660493, 24.965725548786388, -5383.496923259938, -44.10869470578614, 79.81419265008259, 41.075904881710755, 1.9430903075642343, 8.685976066527662e-07, 507.32956940490106, 3.369787051799523e-05, 0.06862688888955046, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 3.179073469843828, 2.315226918695255, 1.7762372327472154e-05, 0.7155988107580302, 1014.5619800966432, "NaN", 18.021027639773973, -46673.837779978596, -126.78465954890396, 86.39433646285188, 64.47779440777973, 1.3399083708798165, "NaN", "NaN", 0.0011661304412985954, 0.5996476044811876, "NaN", 0.010396420082978582, "NaN"], [2.0, 99999.99999999999, 303.14951346169687, 99.99999999999999, 100.0, 0.025115066187360726, 100.0, 0.9852631211640211, 0.9965379951921858, 24.7449485, 1262.340151228983, 18.07630996936079, 44.272793581268964, 35.82041791323252, 1.2359653002516766, "NaN", "NaN", 1.1402981924029783e-05, 0.028311053589023357, 99.99754687498688, 99.98604223533127, 0.02511654437479476, 99.99998142350731, 0.9850917882570617, 0.9965622111560819, 24.74210161300441, 1263.4392955294506, 18.078758224374923, 44.26646563739418, 35.8145331269152, 1.235991698691926, 6.646108991119895e-06, 353.6216512901443, 1.137973209574366e-05, 0.028309016826275304, 0.002453125013113233, 0.013957764668770132, 0.00019019248580381856, 1.8576492702264397e-05, 740.2687062226759, "NaN", 140.79354539926743, -43542.44277702211, -81.72271952538492, 302.2208642499457, 275.7039103846817, 1.0961790996299823, "NaN", "NaN", 0.0009591434278650227, 0.11133628764058492, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.02507966041870255, "NaN", "NaN"], [3.0, 999999.9999999999, 303.1441470709439, 99.99999999999999, 100.0, 0.002329314596794372, 100.0, 10.623274560703077, 0.9345464666377333, 24.7449485, -522.1566170241855, -6.303178719366665, 47.55283330095251, 37.291639212179874, 1.2751607144536894, "NaN", "NaN", 3.647825236555494e-05, 0.04726596848941763, 96.5660010654355, 95.72545028284445, 0.0024357787996599203, 99.9441592691061, 10.070519598271991, 0.9671147029429463, 24.52955813903065, 993.6640885034817, -2.5488805084111044, 45.42565030672451, 35.66159440607829, 1.2737975141958882, 6.471985796298749e-06, 349.85751248053737, 1.173375447881901e-05, 0.029803866194616058, 0.5609496012279874, 2.182710260346831, 0.000141746279682609, 0.03378553796476032, 679.2773467479105, "NaN", 96.28503677418988, -29881.291546317785, -59.59088932689215, 213.79255329153582, 185.14345154690736, 1.1547400218871366, "NaN", "NaN", 0.0003934731074667313, 0.10902149548689571, 2.8730493333365152, 2.0918394568150287, 1.8066434545112126e-05, 0.0220551929291443, 997.2392639521062, "NaN", 18.016557888006517, -45738.13927581973, -122.08463821736515, 86.59199957930235, 63.21165821381327, 1.3698738812768547, "NaN", "NaN", 0.0007984634582173404, 0.6221268424040539, 0.018175908725893804, 0.06959479281106408, 0.047954561313458786], [3.0, 9999999.999999998, 303.0475365124396, 99.99999999999999, 100.0, 0.000169939183954605, 100.0, 145.61061153859603, 0.6896951261428083, 24.7449485, -3774.528324437407, -33.14111168095341, 74.73617172855187, 40.18672331702207, 1.8597229522541223, "NaN", "NaN", 4.5916493566162955e-05, 0.06355952050040317, 89.95133944705212, 86.07226003000035, 0.00018336348600279988, 96.04875590291265, 129.13062979626307, 0.7342253993027593, 23.67784242917982, -1756.425102068458, -29.265227521278213, 71.15351932876459, 36.7507825086686, 1.9361089607270605, 4.202143549590459e-06, 352.9198601504103, 1.6585728171625154e-05, 0.042240074473822775, 6.902525789963508, 11.636286024182892, 9.007874664851756e-05, 3.6207757257407733, 463.09550901630143, "NaN", 41.715063030745696, -11028.377632635944, -43.051646861041796, 116.12613543730878, 74.45335243051281, 1.5597166769043624, "NaN", "NaN", 8.053747919115966e-05, 0.08685640353405977, 3.146134762984371, 2.2914539458487146, 1.8037706929616066e-05, 0.330468371346593, 999.1692031852795, "NaN", 18.02272126015408, -45559.51719867358, -122.2133441639861, 86.35966943086382, 63.24396410488522, 1.3655005762706933, "NaN", "NaN", 0.0008085568662307536, 0.6219924938953161, 0.0012383660406577156, 0.034836695095528385, 0.055493682409178284], [2.0, 19999999.999999996, 303.0108012275871, 99.99999999999999, 100.0, 8.665165031968201e-05, 100.0, 285.56811565283533, 0.7075612078367526, 24.7449485, -5485.14151195439, -42.638110917182914, 79.79131410776468, 42.20167651178593, 1.8907143199744887, "NaN", "NaN", 5.486055138659805e-05, 0.08148293370252875, 96.84677951385967, 97.70333533648135, 8.932156908486549e-05, 99.34810318161546, 279.482369630177, 0.7244380083399696, 24.963803786923766, -4186.432619397021, -40.04160298822207, 79.58511490888893, 41.51511157330238, 1.9170155611497544, 1.1015722182424627e-06, 480.0317595948381, 3.00599695385949e-05, 0.06388622586575055, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 3.153220486140333, 2.296664663518927, 1.8001407757213078e-05, 0.651896818384551, 1001.2057469703226, "NaN", 18.02311290007788, -45373.17798863821, -122.3862389048521, 86.12443557428738, 63.28856323966285, 1.3608214686143059, "NaN", "NaN", 0.0008165759127468684, 0.621941329025291, "NaN", 0.01216607918522964, "NaN"], [1.0, 99999.99999999999, 423.1498627314628, 99.99999999999999, 100.0, 0.03514928961071528, 100.0, 0.7039956930582315, 0.9991107104120721, 24.7449485, 7097.543668568067, 34.211507603648165, 53.16224285542997, 44.786329981593965, 1.187019406977046, "NaN", "NaN", 1.5241142498631566e-05, 0.044149582703616165, 100.0, 100.0, 0.03514928961071528, 100.0, 0.7039956930582315, 0.9991107104120721, 24.7449485, 7097.543668568067, 34.211507603648165, 53.16224285542997, 44.786329981593965, 1.187019406977046, 3.028880714747448e-06, 410.4534656961401, 1.5241142498631566e-05, 0.044149582703616165, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.14602751321326, 99.99999999999999, 100.0, 0.003485628992764592, 100.0, 7.0991343460147736, 0.9913181342752362, 24.7449485, 6952.723772567757, 14.790269057700439, 53.85342456346647, 44.91219855216154, 1.1990823495518812, "NaN", "NaN", 1.5394199600730088e-05, 0.045065096715486155, 100.0, 100.0, 0.003485628992764592, 100.0, 7.0991343460147736, 0.9913181342752362, 24.7449485, 6952.723772567757, 14.790269057700439, 53.85342456346647, 44.91219855216154, 1.1990823495518812, 2.9766685367556423e-06, 409.36307489688966, 1.5394199600730088e-05, 0.045065096715486155, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.10881826938135, 99.99999999999999, 100.0, 0.0003283469032778718, 100.0, 75.36221067709893, 0.9392041173073834, 24.7449485, 5587.371278019144, -7.023819719838265, 61.412171579673824, 46.17963935454735, 1.3298538584976305, "NaN", "NaN", 1.776020333899503e-05, 0.051685177493603796, 100.0, 100.0, 0.0003283469032778718, 100.0, 75.36221067709893, 0.9392041173073834, 24.7449485, 5587.371278019144, -7.023819719838265, 61.412171579673824, 46.17963935454735, 1.3298538584976305, 2.2442082919935978e-06, 415.2991956806675, 1.776020333899503e-05, 0.051685177493603796, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.0780630016237, 99.99999999999999, 100.0, 0.00016440677053185438, 100.0, 150.51051985237783, 0.9464488513802272, 24.7449485, 4442.505757304328, -15.128934376575069, 67.69234671852064, 47.43541415345956, 1.4270423886155466, "NaN", "NaN", 2.1963850266620037e-05, 0.05972074129191186, 100.0, 100.0, 0.00016440677053185438, 100.0, 150.51051985237783, 0.9464488513802272, 24.7449485, 4442.505757304328, -15.128934376575069, 67.69234671852064, 47.43541415345956, 1.4270423886155466, 1.3192399805631956e-06, 457.5615533708629, 2.1963850266620037e-05, 0.05972074129191186, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase17_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase17_I.json new file mode 100755 index 0000000000..27815ed9cd --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase17_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 4. Extended gas fraction no 1. Ps-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [8.965399272760429, -11.714139625900854, -39.46945979615764, -49.247274834331144, 11.172626987148066, -8.819607582146498, -35.308995218251276, -45.30726281896822, 27.25756893100776, 7.851976203580272, -13.780068598212525, -21.702547115092482], "FlashMode": 3, "db": "PSCfluidsV3.nfdb", "fn": 4, "components": ["H2O", "He", "H2", "N2", "Ar", "O2", "CO2", "H2S", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6", "nC7", "nC8", "nC9", "nC10", "nC11"], "fractions": [0.01, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 79.982, 9.499, 4.999, 2.499, 1.0, 0.5, 0.5, 0.5, 0.3, 0.201, 0.001, 0.001, 0.001]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase17_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase17_O.json new file mode 100755 index 0000000000..fd067965a4 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase17_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 288.1492632913102, 99.99999999999999, 100.0, 0.023866332167850307, 100.0, 0.9057326510404906, 0.996240247556581, 21.616516305, 604.9921585148488, 8.965399272760434, 42.997967241989954, 34.537010823999665, 1.2449823020616133, "NaN", "NaN", 1.0382498971016332e-05, 0.028773959020457884, 100.0, 100.0, 0.023866332167850307, 100.0, 0.9057326510404906, 0.996240247556581, 21.616516305, 604.9921585148488, 8.965399272760434, 42.997967241989954, 34.537010823999665, 1.2449823020616133, 6.98314915114151e-06, 370.0648546446971, 1.0382498971016332e-05, 0.028773959020457884, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 999999.9999999999, 288.1469958058997, 99.99999999999999, 100.0, 0.002277971542896405, 100.0, 9.48937065188924, 0.9558848012213119, 21.616516305, 72.2266148638772, -11.714139631007596, 45.02137792330311, 34.99874638083131, 1.2863711583670085, "NaN", "NaN", 1.3618731656686254e-05, 0.031118478723978563, 99.09880534179632, 96.6013654900627, 0.0023081309671608313, 99.9513342100962, 9.129355172486175, 0.9640437150391273, 21.071747383825254, 330.4859033942709, -11.201405154350823, 43.79139968554495, 33.93475245905512, 1.290458792601556, 6.83347448467364e-06, 369.2176754148312, 1.0635745547076888e-05, 0.0303959727176366, 0.9011946582036745, 3.398634509937285, 0.00012357921698681978, 0.048665789903800064, 659.6690671082673, "NaN", 81.52138678366553, -28326.950775732807, -68.09638028422903, 180.274480955672, 151.99958030623927, 1.1860195968466902, "NaN", "NaN", 0.00034163927319284294, 0.11056799768082454, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.017373900451140022, "NaN", "NaN"], [2.0, 9999999.999999998, 288.04246087462644, 99.99999999999999, 100.0, 0.00015868690404567565, 100.0, 136.2211736059707, 0.672186338044779, 21.616516305, -3233.0879115494954, -39.469459796075135, 78.20087512294113, 37.94760359905335, 2.060759249759106, "NaN", "NaN", 1.9670314090245362e-05, 0.0479843272033131, 93.2436797293414, 88.23447981276556, 0.00016465778084260015, 96.36139074753089, 124.22882356156873, 0.6934004908890861, 20.45524240433483, -2629.943805088203, -38.65041724105503, 75.96791595721211, 35.69632404688779, 2.128171961276092, 4.2535251018112605e-06, 372.9248694536099, 1.5687940968406208e-05, 0.04510381598255923, 6.756320270658611, 11.76552018723449, 8.580721248654907e-05, 3.638609252469107, 438.6951327846886, "NaN", 37.64320647567063, -11557.053271473771, -50.773030175451396, 109.01784663362358, 69.01741395943131, 1.57957014584326, "NaN", "NaN", 7.463087088151033e-05, 0.08773813622435378, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.0011279843194032546, "NaN", "NaN"], [1.0, 19999999.999999996, 288.0224024687867, 99.99999999999999, 100.0, 8.336127585349199e-05, 100.0, 259.3112459433943, 0.7100028681282066, 21.616516305, -4962.631370660008, -49.247274834331144, 77.86631653261149, 40.04036911866871, 1.9446952724595774, "NaN", "NaN", 2.9096844084099868e-05, 0.06926640333204105, 100.0, 100.0, 8.336127585349199e-05, 100.0, 259.3112459433943, 0.7100028681282066, 21.616516305, -4962.631370660008, -49.247274834331144, 77.86631653261149, 40.04036911866871, 1.9446952724595774, 9.523441294498186e-07, 528.7757446933202, 2.9096844084099868e-05, 0.06926640333204105, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.14932807668333, 99.99999999999999, 100.0, 0.025123813774140136, 100.0, 0.8603994799248914, 0.99683520222681, 21.616516305, 1257.4815162389282, 11.17262698714807, 44.007645607984244, 35.56327026648088, 1.237446536222018, "NaN", "NaN", 1.0869443102103241e-05, 0.030679528190869818, 100.0, 100.0, 0.025123813774140136, 100.0, 0.8603994799248914, 0.99683520222681, 21.616516305, 1257.4815162389282, 11.17262698714807, 44.007645607984244, 35.56327026648088, 1.237446536222018, 6.2702101273290855e-06, 378.6507808099816, 1.0869443102103241e-05, 0.030679528190869818, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 999999.9999999999, 303.15559410131215, 99.99999999999999, 100.0, 0.0024307032533358143, 100.0, 8.893112014119465, 0.9664921320218324, 21.616516305, 927.749313230905, -8.819607578733887, 45.591358701376684, 35.83873810784273, 1.272125111218683, "NaN", "NaN", 1.1944099280530867e-05, 0.03222401280280202, 99.7462049564489, 98.95038711662578, 0.0024403153805919084, 99.98595755366998, 8.787409476981603, 0.9687948930220915, 21.444050502237303, 1001.4643328517463, -8.682476054140755, 45.1954898258996, 35.49230672786768, 1.2733883478588677, 6.2203359096237035e-06, 374.79396020969034, 1.1084268947547061e-05, 0.03203383438385836, 0.25379504355109717, 1.0496128833742377, 0.0001346985635678684, 0.014042446330024405, 663.6953223863841, "NaN", 89.39880657215927, -28043.63386505699, -62.714864817289325, 201.17524023319487, 171.99275808727492, 1.1696727377969702, "NaN", "NaN", 0.0003498735222572526, 0.10696769293471296, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.01732433994078446, "NaN", "NaN"], [2.0, 9999999.999999998, 303.0832364705168, 99.99999999999999, 100.0, 0.00018134848475294624, 100.0, 119.19876989569835, 0.7280358257893514, 21.616516305, -2004.057300628289, -35.30899521817403, 72.35793183448702, 38.42951195082458, 1.882874076753255, "NaN", "NaN", 1.752930478127507e-05, 0.04611565900896627, 97.07770499068063, 94.26311823323152, 0.00018450547846276456, 98.5167423432357, 113.76239860099486, 0.7381716891825763, 20.989785784948293, -1712.2825170305266, -34.96463425653632, 70.9536487538396, 37.180607533524004, 1.9083509781238523, 4.1268789479153955e-06, 374.765165836393, 1.5519569191146705e-05, 0.04486472452690902, 2.9222950093193645, 5.736881766768481, 9.228078210870814e-05, 1.4832576567642948, 459.8606843106002, "NaN", 42.43630360922792, -11696.722235377787, -46.748556158312944, 119.00776636239982, 79.91771700802093, 1.4891287040951835, "NaN", "NaN", 8.429207791183383e-05, 0.08767130216769971, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.001545656612319437, "NaN", "NaN"], [1.0, 19999999.999999996, 303.02873871045983, 99.99999999999999, 100.0, 9.208297266943082e-05, 100.0, 234.75041778463486, 0.7440756755461547, 21.616516305, -3798.557539292068, -45.30726281896822, 77.07963831037272, 40.50137153989002, 1.9031364958704313, "NaN", "NaN", 2.6274429660232126e-05, 0.06509265914450929, 100.0, 100.0, 9.208297266943082e-05, 100.0, 234.75041778463486, 0.7440756755461547, 21.616516305, -3798.557539292068, -45.30726281896822, 77.07963831037272, 40.50137153989002, 1.9031364958704313, 1.1683053990844957e-06, 503.8286772527573, 2.6274429660232126e-05, 0.06509265914450929, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 423.1496523138711, 99.99999999999999, 100.0, 0.03515353172320474, 100.0, 0.6149173424510005, 0.9992202682398403, 21.616516305, 7075.93686643174, 27.257568931007782, 53.233038530582995, 44.86052292249445, 1.186634373891578, "NaN", "NaN", 1.4493141599284105e-05, 0.048075894176969884, 100.0, 100.0, 0.03515353172320474, 100.0, 0.6149173424510005, 0.9992202682398403, 21.616516305, 7075.93686643174, 27.257568931007782, 53.233038530582995, 44.86052292249445, 1.186634373891578, 2.8178796772660027e-06, 439.12830381963005, 1.4493141599284105e-05, 0.048075894176969884, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.14649362965116, 99.99999999999999, 100.0, 0.003489910737256164, 100.0, 6.194002635722233, 0.992418925217496, 21.616516305, 6941.215066266664, 7.851976203580298, 53.884646491606006, 44.97994309258352, 1.1979705350158776, "NaN", "NaN", 1.4631177785792365e-05, 0.04901946237171752, 100.0, 100.0, 0.003489910737256164, 100.0, 6.194002635722233, 0.992418925217496, 21.616516305, 6941.215066266664, 7.851976203580298, 53.884646491606006, 44.97994309258352, 1.1979705350158776, 2.764495431328022e-06, 438.26921282579855, 1.4631177785792365e-05, 0.04901946237171752, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.1147066196867, 99.99999999999999, 100.0, 0.00033250502313621373, 100.0, 65.01109697866006, 0.9498592949003473, 21.616516305, 5687.63588129229, -13.78006859821253, 60.805110202700845, 46.169714230776826, 1.3169912618208937, "NaN", "NaN", 1.672288541398744e-05, 0.05570168005238207, 100.0, 100.0, 0.00033250502313621373, 100.0, 65.01109697866006, 0.9498592949003473, 21.616516305, 5687.63588129229, -13.78006859821253, 60.805110202700845, 46.169714230776826, 1.3169912618208937, 2.057979903147292e-06, 446.88027852044866, 1.672288541398744e-05, 0.05570168005238207, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.08829021984894, 99.99999999999999, 100.0, 0.0001678141466947954, 100.0, 128.81224098653666, 0.9634954860373546, 21.616516305, 4654.08776837345, -21.70254711509251, 66.4457692250261, 47.3360863275501, 1.4037022149495693, "NaN", "NaN", 2.027191823814969e-05, 0.06347656666159451, 100.0, 100.0, 0.0001678141466947954, 100.0, 128.81224098653666, 0.9634954860373546, 21.616516305, 4654.08776837345, -21.70254711509251, 66.4457692250261, 47.3360863275501, 1.4037022149495693, 1.2098836636661001e-06, 491.44796518896527, 2.027191823814969e-05, 0.06347656666159451, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase18_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase18_I.json new file mode 100755 index 0000000000..22cfd73b22 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase18_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 4. Extended gas fraction no 2. Ps-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [12.431999881604366, -9.4909285953469, -37.662616632282884, -46.72394322135804, 18.07635684355473, -6.302755981060256, -33.13521446557789, -42.62703302623043, 34.211534216257526, 14.790460298824776, -7.021970744223663, -15.125443430840685], "FlashMode": 3, "db": "PSCfluidsV3.nfdb", "fn": 4, "components": ["H2O", "He", "H2", "N2", "Ar", "O2", "CO2", "H2S", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6", "nC7", "nC8", "nC9", "nC10", "nC11"], "fractions": [3.2, 1.0, 1.0, 4.0, 1.0, 1.0, 5.0, 2.0, 60.0, 10.0, 5.0, 3.0, 1.5, 1.0, 0.5, 0.3, 0.2, 0.1, 0.1, 0.05, 0.05]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase18_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase18_O.json new file mode 100755 index 0000000000..afbee13275 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase18_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[3.0, 99999.99999999999, 288.1498170337808, 99.99999999999999, 100.0, 0.02320236812372787, 100.0, 1.066483747178143, 0.9747470602569902, 24.7449485, -409.2070976884154, 12.432001446658251, 44.421673598761394, 35.65171344446396, 1.2459898643569751, "NaN", "NaN", 3.483487067942685e-05, 0.03829772001871891, 97.8623388905983, 97.83813780716056, 0.023860501937151248, 99.9974664093314, 1.036810927465815, 0.9960064447023099, 24.738829143257664, 606.9926609820862, 15.417216013146282, 43.24176642134611, 34.77401354607005, 1.2435080685770603, 7.298157074370326e-06, 345.63842355508643, 1.0937760301769216e-05, 0.02668383840143187, 0.13184739023522873, 0.7015624230935236, 0.00017759410450045987, 0.001002752867610825, 741.4003576478887, "NaN", 131.66833259279744, -44979.255563642524, -90.0147335056006, 275.21238215285877, 249.72289875580034, 1.1020710696698428, "NaN", "NaN", 0.0009785382975002555, 0.11509347345250351, 2.0058137191664676, 1.4602997697466469, 1.782152032185964e-05, 0.001530837800987426, 1010.8651479064199, "NaN", 18.01515377607391, -47059.22234912833, -126.48057167155477, 86.81809487640953, 64.40265738404908, 1.348051437671145, "NaN", "NaN", 0.0011387271509765858, 0.5998834187459876, 0.02565345997869127, 0.07709463401020314, 0.05305429304891749], [3.0, 999999.9999999999, 288.14037894314976, 99.99999999999999, 100.0, 0.002179900993428378, 100.0, 11.351409341340348, 0.9223880030122741, 24.7449485, -1464.4073984436716, -9.490928589019644, 47.07140537725668, 36.54401726374807, 1.2880741883830014, "NaN", "NaN", 4.9929921769127426e-05, 0.046739068466543146, 95.79799821939201, 93.96301243627495, 0.0023025308859727354, 99.91129392479789, 10.540994513500873, 0.9618235975951271, 24.27096543620491, 319.5904087278999, -5.083181403089164, 44.197541070142414, 34.25879494400059, 1.2901078728071929, 7.139897970504333e-06, 343.1600001169964, 1.1268124865818842e-05, 0.02821208073777736, 1.1252422552309502, 3.7968412623488885, 0.0001253174365001083, 0.06387195650764142, 666.2718428849428, "NaN", 83.49547936254396, -28730.93788082732, -64.8471136084127, 183.11995580193835, 154.92022180437965, 1.1820274569007976, "NaN", "NaN", 0.00035941704682527505, 0.11161582710540148, 3.0767595253770423, 2.2401463013992298, 1.7819787219941872e-05, 0.024834118694475587, 1011.0365802134345, "NaN", 18.016456730981094, -47038.9689935092, -126.48552489338395, 86.79594968006786, 64.40378844446715, 1.3476839138882115, "NaN", "NaN", 0.0011405171882300415, 0.5998685065039815, 0.01741882620904017, 0.07338622417683852, 0.050879106481092465], [3.0, 9999999.999999998, 288.04869678598214, 99.99999999999999, 100.0, 0.0001485579076463704, 100.0, 166.56769667827623, 0.6363592784207626, 24.7449485, -5110.255538414928, -37.662616632282884, 78.98929000677941, 39.850420058818536, 1.9821444765247789, "NaN", "NaN", 6.040265159778249e-05, 0.06603887247211679, 83.20470789865429, 77.04346681075269, 0.00016630180583058931, 92.03356443616568, 137.77724801632064, 0.7006129875373656, 22.912605147483102, -2556.526258736856, -32.746223264037354, 74.0765958858026, 34.872333897093846, 2.124222488359918, 4.294915131301781e-06, 353.30628125786353, 1.6620094396819053e-05, 0.042247630650067106, 13.617516458811272, 20.64223421014052, 8.380338266639033e-05, 7.5903330938694165, 447.59352754526776, "NaN", 37.509851667875594, -10970.939872244895, -46.944555268686315, 107.23118834673213, 64.53004754225826, 1.6617249239822816, "NaN", "NaN", 7.2579892215215e-05, 0.08686594296331485, 3.1777756425344426, 2.3142989791339947, 1.7794327387996785e-05, 0.3761024699649234, 1012.7475693672338, "NaN", 18.021161810718542, -46860.94794608067, -126.614812685811, 86.59673829084082, 64.4352178280074, 1.3439349040766444, "NaN", "NaN", 0.0011545928964630024, 0.5997236073058781, 0.0009508386756153091, 0.03482423755633296, 0.05958479191362073], [2.0, 19999999.999999996, 288.04744808763354, 99.99999999999999, 100.0, 7.856093166890115e-05, 100.0, 314.97778825089273, 0.67635181477166, 24.7449485, -6692.379509733225, -46.72394322135767, 80.02469450624523, 41.82092442800342, 1.9135085032376864, "NaN", "NaN", 6.964051290807943e-05, 0.08549396982460712, 96.8209821124502, 97.68481279169772, 8.094244483098188e-05, 99.28460213607781, 308.4379452304255, 0.6920889810820897, 24.965721365595126, -5379.76259960703, -44.09569413401861, 79.81558868411786, 41.07713559478244, 1.943066076259123, 8.693639595360235e-07, 507.22980927186626, 3.368486499151825e-05, 0.06860983187511466, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 3.1790178875498025, 2.315187208302991, 1.7763092168016335e-05, 0.7153978639221943, 1014.521202266401, "NaN", 18.021033622264824, -46669.77594828564, -126.77056984428906, 86.39327492320086, 64.47394742569186, 1.3399718548762922, "NaN", "NaN", 0.0011647149248529822, 0.5997215949015808, "NaN", 0.010402002369861229, "NaN"], [2.0, 99999.99999999999, 303.1498050012856, 99.99999999999999, 100.0, 0.02511509216901561, 100.0, 0.9852621019057117, 0.9965380311506853, 24.7449485, 1262.354361378058, 18.07635684438978, 44.27281162944975, 35.820436712460626, 1.2359651554457138, "NaN", "NaN", 1.1402966748840839e-05, 0.02831108491178221, 99.99754948415068, 99.98605706568405, 0.02511656878739184, 99.9999814432621, 0.9850909511851754, 0.996562221358447, 24.74210463727972, 1263.4523358826277, 18.07880249227423, 44.26649040458896, 35.81455817433493, 1.2359915258234504, 6.646096325289864e-06, 353.62177861644153, 1.137974168430166e-05, 0.02830905031802928, 0.002450515849317103, 0.013942934315921076, 0.0001901927095103451, 1.8556737902403392e-05, 740.268644625237, "NaN", 140.7936992868246, -43542.3996595575, -81.72254689035955, 302.22135580754036, 275.7043808550993, 1.0961790119917516, "NaN", "NaN", 0.0009591420075619766, 0.11133621186427181, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.02507964604307117, "NaN", "NaN"], [3.0, 999999.9999999999, 303.14615925024333, 99.99999999999999, 100.0, 0.0023293345663885656, 100.0, 10.623183486417295, 0.9345479741136257, 24.7449485, -522.0284675483394, -6.302755986314487, 47.552903580156084, 37.29174197421169, 1.2751590851679786, "NaN", "NaN", 3.6476821827228416e-05, 0.04726597948170999, 96.56609327029251, 95.72564333184454, 0.0024357966697139497, 99.94416260225051, 10.070456409962867, 0.9671153771257385, 24.529584185887053, 993.7559956882596, -2.5485451759894397, 45.425807017735686, 35.6617734467679, 1.2737955134380092, 6.47189943321548e-06, 349.8584617901874, 1.1733817037335043e-05, 0.029804086500439177, 0.5608977112806416, 2.1825465626090326, 0.00014174846518559396, 0.033782654570268855, 679.2787660752649, "NaN", 96.28672252433292, -29881.37526821314, -59.59006754871229, 213.7967268562968, 185.14754740219547, 1.1547370184270753, "NaN", "NaN", 0.0003934776923146234, 0.10902112389007651, 2.873009018426853, 2.0918101055527676, 1.806646883369201e-05, 0.02205474317923041, 997.2373720580172, "NaN", 18.016557902079086, -45737.964998269534, -122.0840633323953, 86.59198223675212, 63.21150397532133, 1.3698769494641174, "NaN", "NaN", 0.000798428602384194, 0.6221296351660038, 0.018175985160552733, 0.06959428234744386, 0.047954167902678514], [3.0, 9999999.999999998, 303.0681907803449, 99.99999999999999, 100.0, 0.00016996847812148893, 100.0, 145.58551546430257, 0.6897639908275554, 24.7449485, -3772.7411269457884, -33.135214465577896, 74.73059611618294, 40.18729187493436, 1.8595579007600147, "NaN", "NaN", 4.590082217253356e-05, 0.0635570240982957, 89.95875690748838, 86.08287814070663, 0.00018338748063708482, 96.05291473848472, 129.11901475894737, 0.7342713443528367, 23.678810818985934, -1755.2801400188487, -29.260499871420137, 71.14995761685691, 36.753369992637914, 1.9358757477507231, 4.201955685172455e-06, 352.9210296012562, 1.6585709351060937e-05, 0.04224030718686704, 6.895170715451608, 11.62571307963719, 9.008797684088972e-05, 3.616673261542199, 463.1208116592115, "NaN", 41.72161695528909, -11028.499355002914, -43.04604005386312, 116.13995449123186, 74.46901902622993, 1.5595741156510246, "NaN", "NaN", 8.055094875338765e-05, 0.08685690986367406, 3.146072377060009, 2.2914087796878797, 1.8038054044651616e-05, 0.3304119999730903, 999.1500942758304, "NaN", 18.022723399266187, -45557.72732095481, -122.20744177438304, 86.35944273393751, 63.24238216750961, 1.3655311481657653, "NaN", "NaN", 0.000808194972625802, 0.6220211832541104, 0.0012388454537501853, 0.034836472396880876, 0.05548769645790605], [2.0, 19999999.999999996, 303.05239768510353, 99.99999999999999, 100.0, 8.667534659546947e-05, 100.0, 285.4900438470634, 0.707653247670801, 24.7449485, -5481.784560946328, -42.62703302623127, 79.78892189740372, 42.202857581653674, 1.8906047236974155, "NaN", "NaN", 5.4828199619764286e-05, 0.08147342076996122, 96.84687835077803, 97.70340653121622, 8.934608115728525e-05, 99.34827714534352, 279.40561217099287, 0.7245331671992123, 24.963796500830494, -4183.12563075787, -40.03063494163528, 79.58266953274679, 41.51645678120036, 1.9168945450273522, 1.1021682915986624e-06, 479.96889472011196, 3.0051299148311903e-05, 0.063875091148406, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 3.1531216492219842, 2.2965934687840925, 1.8002093781003764e-05, 0.6517228546564928, 1001.1679390034384, "NaN", 18.023119128474157, -45369.57749216624, -122.37436834109484, 86.12388130958432, 63.2853853800282, 1.3608810437419498, "NaN", "NaN", 0.0008158408508316714, 0.621999121215483, "NaN", 0.012170842263232558, "NaN"], [1.0, 99999.99999999999, 423.1500745570456, 99.99999999999999, 100.0, 0.035149307287817164, 100.0, 0.7039953390084777, 0.9991107127031555, 24.7449485, 7097.554929692894, 34.21153421625752, 53.16225936078091, 44.786346562886294, 1.1870193360410333, "NaN", "NaN", 1.5241148907821747e-05, 0.04414961326499915, 100.0, 100.0, 0.035149307287817164, 100.0, 0.7039953390084777, 0.9991107127031555, 24.7449485, 7097.554929692894, 34.21153421625752, 53.16225936078091, 44.786346562886294, 1.1870193360410333, 3.0288767634810393e-06, 410.4535571077772, 1.5241148907821747e-05, 0.04414961326499915, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.14753016569784, 99.99999999999999, 100.0, 0.0034856419473024685, 100.0, 7.0991079617773325, 0.9913182960774766, 24.7449485, 6952.804695633513, 14.790460298824808, 53.853535737462444, 44.91231548471196, 1.1990817030084777, "NaN", "NaN", 1.5394244446069982e-05, 0.04506531083274741, 100.0, 100.0, 0.0034856419473024685, 100.0, 7.0991079617773325, 0.9913182960774766, 24.7449485, 6952.804695633513, 14.790460298824808, 53.853535737462444, 44.91231548471196, 1.1990817030084777, 2.9766406102504356e-06, 409.3637580081583, 1.5394244446069982e-05, 0.04506531083274741, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.12155725043783, 99.99999999999999, 100.0, 0.00032836100050414837, 100.0, 75.35897521937105, 0.9392159119407484, 24.7449485, 5588.153607683433, -7.021970744223653, 61.41235590176819, 46.1805587951204, 1.3298313728559135, "NaN", "NaN", 1.7760451134150405e-05, 0.051686702210333016, 100.0, 100.0, 0.00032836100050414837, 100.0, 75.35897521937105, 0.9392159119407484, 24.7449485, 5588.153607683433, -7.021970744223653, 61.41235590176819, 46.1805587951204, 1.3298313728559135, 2.2440312774314725e-06, 415.306405637537, 1.7760451134150405e-05, 0.051686702210333016, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.0998821200856, 99.99999999999999, 100.0, 0.0001644199608059753, 100.0, 150.49844543632034, 0.9464750339188723, 24.7449485, 4443.982737947965, -15.125443430840681, 67.69173373866575, 47.43686255830195, 1.4269858942603906, "NaN", "NaN", 2.1963690793928295e-05, 0.059722381718489315, 100.0, 100.0, 0.0001644199608059753, 100.0, 150.49844543632034, 0.9464750339188723, 24.7449485, 4443.982737947965, -15.125443430840681, 67.69173373866575, 47.43686255830195, 1.4269858942603906, 1.3191228410321269e-06, 457.569302110857, 2.1963690793928295e-05, 0.059722381718489315, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase19_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase19_I.json new file mode 100755 index 0000000000..20b36e8e9c --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase19_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 5. ASGB oil, PT-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15], "FlashMode": 1, "db": "PSCfluidsV3.nfdb", "fn": 5, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase19_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase19_O.json new file mode 100755 index 0000000000..70277fe4a0 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase19_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 273.15, 100.00000178744845, 100.0, 0.00014984273605742879, 100.0, 771.984229663208, 0.007304622025207399, 115.67622916592154, -46402.63046882108, -99.99774225728581, 233.28370160738524, 207.03169655583886, 1.1268018641023207, "NaN", "NaN", 0.0008077882326851379, 0.12776347413909656, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00014984273605742879, 100.0, 771.984229663208, "NaN", 115.67622916592154, -46402.63046882108, -99.99774225728581, 233.28370160738524, 207.03169655583886, 1.1268018641023207, "NaN", "NaN", 0.0008077882326851379, 0.12776347413909656, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 288.15, 100.00000178744845, 100.0, 0.00015193393669511338, 100.0, 761.3587305254233, 0.007011656672944439, 115.67622916592154, -42848.05569440535, -87.3309796965744, 240.68088104618013, 212.95113040952197, 1.130216498890293, "NaN", "NaN", 0.0006576220783344062, 0.12279291531096989, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015193393669511338, 100.0, 761.3587305254233, "NaN", 115.67622916592154, -42848.05569440535, -87.3309796965744, 240.68088104618013, 212.95113040952197, 1.130216498890293, "NaN", "NaN", 0.0006576220783344062, 0.12279291531096989, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.15, 100.00000178744845, 100.0, 0.00015422753910919435, 100.0, 750.0361468130659, 0.006755713568911058, 115.67622916592154, -39181.56192091971, -74.92846616949939, 248.20671645557053, 218.86528075496724, 1.1340616273142599, "NaN", "NaN", 0.0005568472554674583, 0.11778012802709038, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015422753910919435, 100.0, 750.0361468130659, "NaN", 115.67622916592154, -39181.56192091971, -74.92846616949939, 248.20671645557053, 218.86528075496724, 1.1340616273142599, "NaN", "NaN", 0.0005568472554674583, 0.11778012802709038, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 99999.99999999999, 373.15, 100.00000178744845, 100.0, 0.013636160099603896, 100.0, 8.483050090419642, 0.4703746378041992, 115.67622916592154, -6994.18283955815, 18.946166611184683, 256.87591884034396, 233.3499838715565, 1.1008182412463199, "NaN", "NaN", 0.0002416053169079162, 0.06448026099746226, 47.92587545781644, 33.615547001734, 0.03020087671474266, 99.29012775538048, 2.6865485929265236, 0.973768513963342, 81.1361228431393, 13517.135201617695, 59.95631465085689, 156.18652919197805, 146.93705747845237, 1.062948529610252, 1.614553201377671e-05, 196.26049537218483, 8.889877572395355e-06, 0.022953041386517856, 52.07412454218356, 66.38445299826601, 0.00019872008047070784, 0.7098722446195113, 742.0732426052289, "NaN", 147.46485448567017, -25871.559704929008, -18.797093880190452, 349.54434467824836, 312.8792161855158, 1.1171862066766132, "NaN", "NaN", 0.0004557825356467632, 0.10269940289722276, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.01686854184866082, "NaN", "NaN"], [1.0, 999999.9999999999, 273.15, 100.00000178744845, 100.0, 0.0001496782866265276, 100.0, 772.8323978918407, 0.07297381050807794, 115.67622916592154, -46285.9054602329, -100.1167470817955, 233.09156988026254, 207.06834756578738, 1.125674554418354, "NaN", "NaN", 0.0008391615483397314, 0.12816786690271437, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0001496782866265276, 100.0, 772.8323978918407, "NaN", 115.67622916592154, -46285.9054602329, -100.1167470817955, 233.09156988026254, 207.06834756578738, 1.125674554418354, "NaN", "NaN", 0.0008391615483397314, 0.12816786690271437, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.15, 100.00000178744845, 100.0, 0.00015173718805381545, 100.0, 762.3459393810274, 0.07003444483489277, 115.67622916592154, -42734.47940664703, -87.4611978302589, 240.45196857929108, 212.99301809643566, 1.1289194863205467, "NaN", "NaN", 0.0006702203331168069, 0.12324591083448216, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015173718805381545, 100.0, 762.3459393810274, "NaN", 115.67622916592154, -42734.47940664703, -87.4611978302589, 240.45196857929108, 212.99301809643566, 1.1289194863205467, "NaN", "NaN", 0.0006702203331168069, 0.12324591083448216, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.15, 100.00000178744845, 100.0, 0.0001539917200031984, 100.0, 751.1847335916435, 0.06746357632572697, 115.67622916592154, -39071.74562862033, -75.07139509782016, 247.93273341547638, 218.9132285345674, 1.132561677862819, "NaN", "NaN", 0.000568087753532714, 0.11828525882606462, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0001539917200031984, 100.0, 751.1847335916435, "NaN", 115.67622916592154, -39071.74562862033, -75.07139509782016, 247.93273341547638, 218.9132285345674, 1.132561677862819, "NaN", "NaN", 0.000568087753532714, 0.11828525882606462, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 373.15, 100.00000178744845, 100.0, 0.00016805784975500212, 100.0, 688.3119671860405, 0.05934168516725227, 115.67622916592154, -20448.698070777933, -19.93225085673965, 284.7709017467299, 246.01574491648586, 1.1575312053437885, "NaN", "NaN", 0.0003032207407258402, 0.09570419223193756, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00016805784975500212, 100.0, 688.3119671860405, "NaN", 115.67622916592154, -20448.698070777933, -19.93225085673965, 284.7709017467299, 246.01574491648586, 1.1575312053437885, "NaN", "NaN", 0.0003032207407258402, 0.09570419223193756, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 273.15, 100.00000178744845, 100.0, 0.00014820199373198655, 100.0, 780.5308569270284, 0.723237748711584, 115.67622916592154, -45102.317061441674, -101.21917491342533, 231.44803124471386, 207.39987909145455, 1.1159506565703208, "NaN", "NaN", 0.0011757463033487026, 0.1317117201497926, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00014820199373198655, 100.0, 780.5308569270284, "NaN", 115.67622916592154, -45102.317061441674, -101.21917491342533, 231.44803124471386, 207.39987909145455, 1.1159506565703208, "NaN", "NaN", 0.0011757463033487026, 0.1317117201497926, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 288.15, 100.00000178744845, 100.0, 0.00014998729866389104, 100.0, 771.240166309964, 0.6930404979374591, 115.67622916592154, -41577.6224638396, -88.65882881621572, 238.5230461836947, 213.36890817474162, 1.117890362865581, "NaN", "NaN", 0.0007928061629433014, 0.12718142210966654, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00014998729866389104, 100.0, 771.240166309964, "NaN", 115.67622916592154, -41577.6224638396, -88.65882881621572, 238.5230461836947, 213.36890817474162, 1.117890362865581, "NaN", "NaN", 0.0007928061629433014, 0.12718142210966654, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 303.15, 100.00000178744845, 100.0, 0.00015191633195496803, 100.0, 761.4469601610116, 0.666401825479144, 115.67622916592154, -37946.301105214014, -76.37522450760598, 245.66308377319163, 219.33965294293554, 1.1200121841950053, "NaN", "NaN", 0.000676902289015149, 0.12263181332812101, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015191633195496803, 100.0, 761.4469601610116, "NaN", 115.67622916592154, -37946.301105214014, -76.37522450760598, 245.66308377319163, 219.33965294293554, 1.1200121841950053, "NaN", "NaN", 0.000676902289015149, 0.12263181332812101, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 373.15, 100.00000178744845, 100.0, 0.00016331324589875505, 100.0, 708.3089220921753, 0.5781242155986132, 115.67622916592154, -19566.560023418457, -21.948146839170853, 279.63488566287646, 246.801311508365, 1.133036465462213, "NaN", "NaN", 0.0003639874907667822, 0.10222049918809678, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00016331324589875505, 100.0, 708.3089220921753, "NaN", 115.67622916592154, -19566.560023418457, -21.948146839170853, 279.63488566287646, 246.801311508365, 1.133036465462213, "NaN", "NaN", 0.0003639874907667822, 0.10222049918809678, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase1_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase1_I.json new file mode 100755 index 0000000000..9c65a3580d --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase1_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 1. Gas fraction no 1. PT-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [288.15, 288.15, 288.15, 288.15, 303.15, 303.15, 303.15, 303.15, 423.15, 423.15, 423.15, 423.15], "FlashMode": 1, "db": "PSCfluidsV3.nfdb", "fn": 1, "components": null, "fractions": [2.18, 0.48, 1.77, 62.88, 12.36, 9.58, 2.21, 2.47, 0.98, 0.46, 4.63]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase1_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase1_O.json new file mode 100755 index 0000000000..eaabe368e4 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase1_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[2.0, 99999.99999999999, 288.15, 100.00000000000004, 100.0, 0.02353274404210993, 100.0, 1.1509186115964585, 0.984438630021208, 27.084273099999994, 227.28157866740764, 12.209903540404081, 50.35730733913295, 41.69663232293098, 1.2077068226787957, "NaN", "NaN", 2.0942863651077544e-05, 0.03118627448231647, 99.02688120563748, 99.35273357704838, 0.02381410579114808, 99.99926461229776, 1.1410630047380472, 0.9941028226224141, 27.17339510919716, 691.9615209718278, 13.572804134131902, 49.999010780510694, 41.47350091051852, 1.2055652328070026, 8.873510305001136e-06, 324.09861018971384, 9.959226874444449e-06, 0.025597790287503957, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.973118794362521, 0.6472664229560241, 1.7821369564374767e-05, 0.0007353877022286077, 1010.8653868529899, "NaN", 18.015005638941798, -47059.65369768466, -126.48209991493043, 86.81841666373363, 64.4030151389058, 1.3480489457905316, "NaN", "NaN", 0.0011386638454948619, 0.5998837076069272, "NaN", 0.07705258860387108, "NaN"], [3.0, 999999.9999999999, 288.15, 100.00000000000004, 100.0, 0.002031243083636496, 100.0, 13.333841389141634, 0.8695657602578861, 27.084273099999994, -2451.0674847672703, -15.111537760129448, 55.96100232158214, 44.055134736793384, 1.270249260521393, "NaN", "NaN", 5.106257386929776e-05, 0.04560254418284512, 90.71694331353373, 80.10270021817517, 0.0022842306691702985, 99.5976839307238, 10.469741857479686, 0.9542349377168681, 23.91530544915111, 306.07157060407604, -8.390038258092702, 47.0973337580575, 36.87719995689408, 1.2771396367704102, 7.880943440808033e-06, 341.17714682690695, 1.0535121989245367e-05, 0.028417011067865282, 7.220402223485317, 18.525328708923386, 0.000110836925249194, 0.38465088272330394, 626.9562647133968, "NaN", 69.48990464655263, -24353.282540754124, -67.74104891853531, 158.51444447117873, 128.4247327203796, 1.2342984183296977, "NaN", "NaN", 0.0002492615948413831, 0.10317946664973777, 2.0626544629809493, 1.371971072927889, 1.7818489054725412e-05, 0.017665186552883134, 1011.031725144396, "NaN", 18.01505772846557, -47042.35834558693, -126.4959960116014, 86.79884649072604, 64.40651710088176, 1.3476717946845433, "NaN", "NaN", 0.0011396840290984471, 0.5998836973871513, 0.014959269489033358, 0.0732750053606803, 0.05184301560751092], [3.0, 9999999.999999998, 288.15, 100.00000000000004, 100.0, 0.00012289363368229823, 100.0, 220.38792644066191, 0.5314708324774267, 27.084273099999994, -7024.373987837741, -44.88988017048106, 92.33457113200619, 48.24288518042572, 1.9139520944213846, "NaN", "NaN", 6.038828051635688e-05, 0.07315137796873518, 55.575389520630445, 44.01726417090522, 0.00015884067201818916, 70.86552902739044, 135.05043870497747, 0.6693550252631485, 21.451502440249886, -2867.094427994459, -37.852152972872084, 81.03830272423326, 36.37716606217334, 2.2277244628052717, 4.318337754611706e-06, 363.2841853337303, 1.6344606657783712e-05, 0.04497735142030745, 42.26659527162335, 54.54731541554698, 8.495726721728143e-05, 28.82628007652984, 411.4269784133775, "NaN", 34.95371174546399, -10456.292991326973, -49.96991840213625, 107.48018743772343, 63.01779855105201, 1.7055528740924126, "NaN", "NaN", 6.270719334618008e-05, 0.08330327986483364, 2.158015207746188, 1.4354204135234603, 1.77899407725314e-05, 0.3081908960797376, 1012.6684960872802, "NaN", 18.01531256760116, -46869.73700952706, -126.6356018002888, 86.607494882908, 64.44141714824235, 1.3439725368496218, "NaN", "NaN", 0.0011492275862483776, 0.5998836118444136, 0.0007143711130530235, 0.03376702337324571, 0.06313487145132878], [2.0, 19999999.999999996, 288.15, 100.00000000000004, 100.0, 7.504382598720557e-05, 100.0, 360.9127432364345, 0.6511555370726603, 27.084273099999994, -8192.60069182107, -52.07598456505774, 86.13812082979688, 49.92988156350672, 1.7251817575460549, "NaN", "NaN", 7.041817626752277e-05, 0.09295006749334161, 97.84013515860066, 98.56334607002272, 7.650959833844362e-05, 99.49021034274075, 356.615041388438, 0.6611820363655623, 27.28447357807684, -7343.019706138911, -50.42665270883863, 86.13226257316043, 49.60869147302433, 1.7362333094392641, 3.7267814171489687e-07, 582.3433135346518, 4.638035753939041e-05, 0.08175928314184458, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 2.1598648413993446, 1.4366539299789987, 1.775894090457373e-05, 0.5097896572592451, 1014.4384748256822, "NaN", 18.015352925755195, -46677.93406734157, -126.78938729321736, 86.40349513013112, 64.47953358897303, 1.3400142699684077, "NaN", "NaN", 0.0011593119756381698, 0.599883572078679, "NaN", 0.006628817730310702, "NaN"], [1.0, 99999.99999999999, 303.15, 100.00000000000004, 100.0, 0.025076422835482996, 100.0, 1.0800692458286316, 0.9949967901907871, 27.084273099999994, 1447.5361235965486, 16.352388990173097, 51.19403375982433, 42.693224542607865, 1.199113777614353, "NaN", "NaN", 1.0424270217077488e-05, 0.027382744840725805, 100.0, 100.0, 0.025076422835482996, 100.0, 1.0800692458286316, 0.9949967901907871, 27.084273099999994, 1447.5361235965486, 16.352388990173097, 51.19403375982433, 42.693224542607865, 1.199113777614353, 7.95285040767417e-06, 332.3814308787451, 1.0424270217077488e-05, 0.027382744840725805, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [3.0, 999999.9999999999, 303.15, 100.00000000000004, 100.0, 0.002229936754975999, 100.0, 12.145758412009986, 0.9005454401955927, 27.084273099999994, -864.5548711135226, -9.746974562267598, 55.96810537333116, 44.65797598439856, 1.2532611283790343, "NaN", "NaN", 3.518405078456607e-05, 0.04360241942623945, 93.85909855975957, 87.21632347324093, 0.00240970391699841, 99.76343970798254, 10.444193207489695, 0.956911373234291, 25.167413281976103, 1040.8594914220894, -5.1104722815102015, 50.13193765493574, 39.98569481502637, 1.253746818377068, 7.447495555191119e-06, 338.97023442983755, 1.0895624781117962e-05, 0.029600725885926348, 4.278257362168891, 11.544741078392688, 0.00011749053362615969, 0.22171809314044272, 622.059029907524, "NaN", 73.08604737080621, -23128.21311351841, -62.551179886785604, 170.67144479355431, 139.0822364225716, 1.2271261174935786, "NaN", "NaN", 0.00023593704374092858, 0.0989020652161026, 1.8626440780715248, 1.2389354484060726, 1.806496058925842e-05, 0.014842198877003285, 997.2383443367474, "NaN", 18.015071388540658, -45742.057583588685, -122.09691131224811, 86.59501656041051, 63.21482846897667, 1.3698529072638062, "NaN", "NaN", 0.0007979797006636874, 0.6221349635468897, 0.0142381754036064, 0.06937571617177546, 0.049259936384065534], [3.0, 9999999.999999998, 303.15, 100.00000000000004, 100.0, 0.00014333537194401025, 100.0, 188.95735736870077, 0.5873973914977572, 27.084273099999994, -5459.759339319921, -39.596309434736426, 89.97023409643657, 48.7740022625989, 1.8446350498783644, "NaN", "NaN", 4.7986075835254727e-05, 0.0683516826131304, 66.76335581593234, 55.33766664530915, 0.00017474890714324525, 80.29827811521434, 128.46517138960155, 0.7000716324742678, 22.44914830630257, -2078.3847841911634, -34.08069357395758, 78.40754628248386, 38.64465673929836, 2.0289362850712034, 4.294229722114017e-06, 358.9116653644444, 1.6328488634012247e-05, 0.044675353369864154, 31.10835946719705, 43.246678247169456, 9.078449241194544e-05, 19.437588534240867, 414.7450018746092, "NaN", 37.65241447557776, -9972.409248303182, -45.77916820667956, 115.0316146099054, 69.52251819469633, 1.654595052034246, "NaN", "NaN", 6.414767516143236e-05, 0.08127757171514831, 2.128284716870612, 1.415655107549231, 1.8031834306024698e-05, 0.2641333505447953, 999.0909155519515, "NaN", 18.015441845887306, -45572.238828560156, -122.24616809805522, 86.3736321074965, 63.25364734194481, 1.3655122785341796, "NaN", "NaN", 0.0008048424796886882, 0.6221347266400841, 0.0007895680705006234, 0.03355870849247132, 0.05997112164757357], [2.0, 19999999.999999996, 303.15, 100.00000000000004, 100.0, 8.11712537944414e-05, 100.0, 333.6682856789225, 0.6677173421820579, 27.084273099999994, -6873.122560357445, -47.61263913009214, 88.42786579117693, 50.621028227129095, 1.7468603244172387, "NaN", "NaN", 5.715894324108608e-05, 0.08739362994059705, 97.86474780944278, 98.57970359797523, 8.277151801523174e-05, 99.52787143352172, 329.60780785533115, 0.6781600620645823, 27.282138605858584, -6032.885472378183, -45.98066404131584, 88.47781794026375, 50.34447986134165, 1.7574482482279812, 5.776128423026027e-07, 540.0269431146114, 4.0688007956575314e-05, 0.0757264377990428, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 2.135252190557222, 1.420296402025523, 1.799590068872157e-05, 0.4721285664782855, 1001.0906548109083, "NaN", 18.01552800438435, -45383.604403615565, -122.4107501919557, 86.13841516115815, 63.2960350458035, 1.360881690280047, "NaN", "NaN", 0.0008120692694932962, 0.6221345947910071, "NaN", 0.007766907755369986, "NaN"], [1.0, 99999.99999999999, 423.15, 100.00000000000004, 100.0, 0.03512878796071664, 100.0, 0.7709993618421289, 0.9985476715515139, 27.084273099999994, 8289.627746100059, 35.25764821488102, 63.05995850961714, 54.662121186067196, 1.1536317497625845, "NaN", "NaN", 1.405545835883702e-05, 0.043813596411601985, 100.0, 100.0, 0.03512878796071664, 100.0, 0.7709993618421289, 0.9985476715515139, 27.084273099999994, 8289.627746100059, 35.25764821488102, 63.05995850961714, 54.662121186067196, 1.1536317497625845, 3.599953790995999e-06, 386.55261412635167, 1.405545835883702e-05, 0.043813596411601985, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.15, 100.00000000000004, 100.0, 0.0034652459252895924, 100.0, 7.815974301372721, 0.9857153851987557, 27.084273099999994, 8084.89084439635, 15.736849231771183, 64.00589555413988, 54.82811021222272, 1.1673919693090422, "NaN", "NaN", 1.4234390053224508e-05, 0.0447673781201783, 100.0, 100.0, 0.0034652459252895924, 100.0, 7.815974301372721, 0.9857153851987557, 27.084273099999994, 8084.89084439635, 15.736849231771183, 64.00589555413988, 54.82811021222272, 1.1673919693090422, 3.560506874955044e-06, 383.90660696474316, 1.4234390053224508e-05, 0.0447673781201783, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.15, 100.00000000000004, 100.0, 0.0003115161699165517, 100.0, 86.94339400505363, 0.8932751213900589, 27.084273099999994, 6091.331033420918, -7.171264581471492, 75.54012215815678, 56.563340387579665, 1.3354961294814915, "NaN", "NaN", 1.730007598229111e-05, 0.05229466767824377, 100.0, 100.0, 0.0003115161699165517, 100.0, 86.94339400505363, 0.8932751213900589, 27.084273099999994, 6091.331033420918, -7.171264581471492, 75.54012215815678, 56.563340387579665, 1.3354961294814915, 2.6903028374858428e-06, 382.1391370570438, 1.730007598229111e-05, 0.05229466767824377, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.15, 100.00000000000004, 100.0, 0.00015529632833146848, 100.0, 174.4038213330493, 0.8984996969804517, 27.084273099999994, 4489.22948162486, -16.06496536424547, 83.73274792352174, 58.24880438029123, 1.4375015730254737, "NaN", "NaN", 2.3304894113682902e-05, 0.06220758539303409, 100.0, 100.0, 0.00015529632833146848, 100.0, 174.4038213330493, 0.8984996969804517, 27.084273099999994, 4489.22948162486, -16.06496536424547, 83.73274792352174, 58.24880438029123, 1.4375015730254737, 1.3707507599958599e-06, 438.27114522478956, 2.3304894113682902e-05, 0.06220758539303409, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase20_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase20_I.json new file mode 100755 index 0000000000..2b562f4919 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase20_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 5. ASGB oil, Ph-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [-46402.63046882108, -42848.05569440535, -39181.56192091971, -6994.18283955815, -46285.9054602329, -42734.47940664703, -39071.74562862033, -20448.698070777933, -45102.317061441674, -41577.6224638396, -37946.301105214014, -19566.560023418457], "FlashMode": 2, "db": "PSCfluidsV3.nfdb", "fn": 5, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase20_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase20_O.json new file mode 100755 index 0000000000..d11ec4468c --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase20_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 273.15, 100.00000178744845, 100.0, 0.00014984273605742879, 100.0, 771.984229663208, 0.007304622025207399, 115.67622916592154, -46402.63046882108, -99.99774225728581, 233.28370160738524, 207.03169655583886, 1.1268018641023207, "NaN", "NaN", 0.0008077882326851379, 0.12776347413909656, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00014984273605742879, 100.0, 771.984229663208, "NaN", 115.67622916592154, -46402.63046882108, -99.99774225728581, 233.28370160738524, 207.03169655583886, 1.1268018641023207, "NaN", "NaN", 0.0008077882326851379, 0.12776347413909656, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 288.15, 100.00000178744845, 100.0, 0.00015193393669511338, 100.0, 761.3587305254233, 0.007011656672944439, 115.67622916592154, -42848.05569440535, -87.3309796965744, 240.68088104618013, 212.95113040952197, 1.130216498890293, "NaN", "NaN", 0.0006576220783344062, 0.12279291531096989, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015193393669511338, 100.0, 761.3587305254233, "NaN", 115.67622916592154, -42848.05569440535, -87.3309796965744, 240.68088104618013, 212.95113040952197, 1.130216498890293, "NaN", "NaN", 0.0006576220783344062, 0.12279291531096989, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.15000000000003, 100.00000178744845, 100.0, 0.00015422753910919435, 100.0, 750.0361468130659, 0.006755713568911057, 115.67622916592154, -39181.5619209197, -74.92846616949932, 248.2067164555706, 218.86528075496733, 1.1340616273142596, "NaN", "NaN", 0.0005568472554674573, 0.1177801280270921, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015422753910919435, 100.0, 750.0361468130659, "NaN", 115.67622916592154, -39181.5619209197, -74.92846616949932, 248.2067164555706, 218.86528075496733, 1.1340616273142596, "NaN", "NaN", 0.0005568472554674573, 0.1177801280270921, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 99999.99999999999, 373.15000000000055, 100.00000178744845, 100.0, 0.013636160099604137, 100.0, 8.483050090419493, 0.4703746378042067, 115.67622916592154, -6994.182839557776, 18.946166611185728, 256.87591884034373, 233.3499838715565, 1.100818241246319, "NaN", "NaN", 0.00024160531690791377, 0.06448026099746035, 47.9258754578172, 33.61554700173463, 0.030200876714742704, 99.29012775538051, 2.6865485929265267, 0.9737685139633421, 81.13612284313952, 13517.135201617815, 59.95631465085724, 156.1865291919786, 146.93705747845297, 1.0629485296102514, 1.6145532013776155e-05, 196.2604953721849, 8.889877572395341e-06, 0.022953041386517166, 52.0741245421828, 66.38445299826536, 0.0001987200804707085, 0.7098722446194909, 742.0732426052302, "NaN", 147.4648544856709, -25871.559704928983, -18.797093880189923, 349.5443446782503, 312.8792161855177, 1.1171862066766125, "NaN", "NaN", 0.00045578253564676507, 0.10269940289722088, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.016868541848660892, "NaN", "NaN"], [1.0, 999999.9999999999, 273.15, 100.00000178744845, 100.0, 0.0001496782866265276, 100.0, 772.8323978918407, 0.07297381050807794, 115.67622916592154, -46285.9054602329, -100.1167470817955, 233.09156988026254, 207.06834756578738, 1.125674554418354, "NaN", "NaN", 0.0008391615483397314, 0.12816786690271437, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0001496782866265276, 100.0, 772.8323978918407, "NaN", 115.67622916592154, -46285.9054602329, -100.1167470817955, 233.09156988026254, 207.06834756578738, 1.125674554418354, "NaN", "NaN", 0.0008391615483397314, 0.12816786690271437, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.15, 100.00000178744845, 100.0, 0.00015173718805381545, 100.0, 762.3459393810274, 0.07003444483489277, 115.67622916592154, -42734.47940664703, -87.4611978302589, 240.45196857929108, 212.99301809643566, 1.1289194863205467, "NaN", "NaN", 0.0006702203331168069, 0.12324591083448216, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015173718805381545, 100.0, 762.3459393810274, "NaN", 115.67622916592154, -42734.47940664703, -87.4611978302589, 240.45196857929108, 212.99301809643566, 1.1289194863205467, "NaN", "NaN", 0.0006702203331168069, 0.12324591083448216, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.15000000000003, 100.00000178744845, 100.0, 0.0001539917200031984, 100.0, 751.1847335916435, 0.06746357632572696, 115.67622916592154, -39071.74562862033, -75.07139509782012, 247.93273341547632, 218.91322853456734, 1.132561677862819, "NaN", "NaN", 0.0005680877535327131, 0.11828525882606623, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0001539917200031984, 100.0, 751.1847335916435, "NaN", 115.67622916592154, -39071.74562862033, -75.07139509782012, 247.93273341547632, 218.91322853456734, 1.132561677862819, "NaN", "NaN", 0.0005680877535327131, 0.11828525882606623, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 373.15000000000003, 100.00000178744845, 100.0, 0.00016805784975500212, 100.0, 688.3119671860405, 0.059341685167252266, 115.67622916592154, -20448.698070777926, -19.932250856739635, 284.77090174673, 246.0157449164859, 1.1575312053437887, "NaN", "NaN", 0.0003032207407258402, 0.09570419223193757, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00016805784975500212, 100.0, 688.3119671860405, "NaN", 115.67622916592154, -20448.698070777926, -19.932250856739635, 284.77090174673, 246.0157449164859, 1.1575312053437887, "NaN", "NaN", 0.0003032207407258402, 0.09570419223193757, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 273.15, 100.00000178744845, 100.0, 0.00014820199373198655, 100.0, 780.5308569270284, 0.723237748711584, 115.67622916592154, -45102.317061441674, -101.21917491342533, 231.44803124471386, 207.39987909145455, 1.1159506565703208, "NaN", "NaN", 0.0011757463033487026, 0.1317117201497926, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00014820199373198655, 100.0, 780.5308569270284, "NaN", 115.67622916592154, -45102.317061441674, -101.21917491342533, 231.44803124471386, 207.39987909145455, 1.1159506565703208, "NaN", "NaN", 0.0011757463033487026, 0.1317117201497926, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 288.15000000000003, 100.00000178744845, 100.0, 0.00014998729866389106, 100.0, 771.2401663099638, 0.6930404979374593, 115.67622916592154, -41577.62246383959, -88.65882881621566, 238.52304618369476, 213.36890817474162, 1.1178903628655812, "NaN", "NaN", 0.0007928061629433008, 0.1271814221096681, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00014998729866389106, 100.0, 771.2401663099638, "NaN", 115.67622916592154, -41577.62246383959, -88.65882881621566, 238.52304618369476, 213.36890817474162, 1.1178903628655812, "NaN", "NaN", 0.0007928061629433008, 0.1271814221096681, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 303.15000000000003, 100.00000178744845, 100.0, 0.00015191633195496803, 100.0, 761.4469601610116, 0.6664018254791438, 115.67622916592154, -37946.301105214014, -76.37522450760595, 245.66308377319157, 219.3396529429355, 1.1200121841950053, "NaN", "NaN", 0.000676902289015149, 0.12263181332812041, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015191633195496803, 100.0, 761.4469601610116, "NaN", 115.67622916592154, -37946.301105214014, -76.37522450760595, 245.66308377319157, 219.3396529429355, 1.1200121841950053, "NaN", "NaN", 0.000676902289015149, 0.12263181332812041, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 373.15, 100.00000178744845, 100.0, 0.00016331324589875505, 100.0, 708.3089220921753, 0.5781242155986132, 115.67622916592154, -19566.560023418457, -21.948146839170853, 279.63488566287646, 246.801311508365, 1.133036465462213, "NaN", "NaN", 0.0003639874907667822, 0.10222049918809678, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00016331324589875505, 100.0, 708.3089220921753, "NaN", 115.67622916592154, -19566.560023418457, -21.948146839170853, 279.63488566287646, 246.801311508365, 1.133036465462213, "NaN", "NaN", 0.0003639874907667822, 0.10222049918809678, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase21_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase21_I.json new file mode 100755 index 0000000000..cef85b1c0f --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase21_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 5. ASGB oil, Ps-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [-99.99774225728581, -87.3309796965744, -74.92846616949939, 18.946166611184683, -100.1167470817955, -87.4611978302589, -75.07139509782016, -19.93225085673965, -101.21917491342533, -88.65882881621572, -76.37522450760598, -21.948146839170853], "FlashMode": 3, "db": "PSCfluidsV3.nfdb", "fn": 5, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase21_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase21_O.json new file mode 100755 index 0000000000..015d2d1b08 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase21_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 273.15000000000003, 100.00000178744845, 100.0, 0.00014984273605742879, 100.0, 771.984229663208, 0.007304622025207397, 115.67622916592154, -46402.63046882109, -99.9977422572858, 233.28370160738524, 207.03169655583886, 1.1268018641023207, "NaN", "NaN", 0.0008077882326851355, 0.1277634741390975, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00014984273605742879, 100.0, 771.984229663208, "NaN", 115.67622916592154, -46402.63046882109, -99.9977422572858, 233.28370160738524, 207.03169655583886, 1.1268018641023207, "NaN", "NaN", 0.0008077882326851355, 0.1277634741390975, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 288.15, 100.00000178744845, 100.0, 0.00015193393669511338, 100.0, 761.3587305254233, 0.007011656672944439, 115.67622916592154, -42848.05569440535, -87.3309796965744, 240.68088104618013, 212.95113040952197, 1.130216498890293, "NaN", "NaN", 0.0006576220783344062, 0.12279291531096989, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015193393669511338, 100.0, 761.3587305254233, "NaN", 115.67622916592154, -42848.05569440535, -87.3309796965744, 240.68088104618013, 212.95113040952197, 1.130216498890293, "NaN", "NaN", 0.0006576220783344062, 0.12279291531096989, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.15, 100.00000178744845, 100.0, 0.00015422753910919435, 100.0, 750.0361468130659, 0.006755713568911058, 115.67622916592154, -39181.56192091971, -74.92846616949939, 248.20671645557053, 218.86528075496724, 1.1340616273142599, "NaN", "NaN", 0.0005568472554674583, 0.11778012802709038, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015422753910919435, 100.0, 750.0361468130659, "NaN", 115.67622916592154, -39181.56192091971, -74.92846616949939, 248.20671645557053, 218.86528075496724, 1.1340616273142599, "NaN", "NaN", 0.0005568472554674583, 0.11778012802709038, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 99999.99999999999, 373.15, 100.00000178744845, 100.0, 0.013636160099603896, 100.0, 8.483050090419642, 0.4703746378041992, 115.67622916592154, -6994.18283955815, 18.946166611184683, 256.87591884034396, 233.3499838715565, 1.1008182412463199, "NaN", "NaN", 0.0002416053169079162, 0.06448026099746226, 47.92587545781644, 33.615547001734, 0.03020087671474266, 99.29012775538048, 2.6865485929265236, 0.973768513963342, 81.1361228431393, 13517.135201617695, 59.95631465085689, 156.18652919197805, 146.93705747845237, 1.062948529610252, 1.614553201377671e-05, 196.26049537218483, 8.889877572395355e-06, 0.022953041386517856, 52.07412454218356, 66.38445299826601, 0.00019872008047070784, 0.7098722446195113, 742.0732426052289, "NaN", 147.46485448567017, -25871.559704929008, -18.797093880190452, 349.54434467824836, 312.8792161855158, 1.1171862066766132, "NaN", "NaN", 0.0004557825356467632, 0.10269940289722276, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.01686854184866082, "NaN", "NaN"], [1.0, 999999.9999999999, 273.15, 100.00000178744845, 100.0, 0.0001496782866265276, 100.0, 772.8323978918407, 0.07297381050807794, 115.67622916592154, -46285.9054602329, -100.1167470817955, 233.09156988026254, 207.06834756578738, 1.125674554418354, "NaN", "NaN", 0.0008391615483397314, 0.12816786690271437, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0001496782866265276, 100.0, 772.8323978918407, "NaN", 115.67622916592154, -46285.9054602329, -100.1167470817955, 233.09156988026254, 207.06834756578738, 1.125674554418354, "NaN", "NaN", 0.0008391615483397314, 0.12816786690271437, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.15, 100.00000178744845, 100.0, 0.00015173718805381545, 100.0, 762.3459393810274, 0.07003444483489277, 115.67622916592154, -42734.47940664703, -87.4611978302589, 240.45196857929108, 212.99301809643566, 1.1289194863205467, "NaN", "NaN", 0.0006702203331168069, 0.12324591083448216, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015173718805381545, 100.0, 762.3459393810274, "NaN", 115.67622916592154, -42734.47940664703, -87.4611978302589, 240.45196857929108, 212.99301809643566, 1.1289194863205467, "NaN", "NaN", 0.0006702203331168069, 0.12324591083448216, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.15, 100.00000178744845, 100.0, 0.0001539917200031984, 100.0, 751.1847335916435, 0.06746357632572697, 115.67622916592154, -39071.74562862033, -75.07139509782016, 247.93273341547638, 218.9132285345674, 1.132561677862819, "NaN", "NaN", 0.000568087753532714, 0.11828525882606462, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0001539917200031984, 100.0, 751.1847335916435, "NaN", 115.67622916592154, -39071.74562862033, -75.07139509782016, 247.93273341547638, 218.9132285345674, 1.132561677862819, "NaN", "NaN", 0.000568087753532714, 0.11828525882606462, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 373.15, 100.00000178744845, 100.0, 0.00016805784975500212, 100.0, 688.3119671860405, 0.05934168516725227, 115.67622916592154, -20448.698070777933, -19.93225085673965, 284.7709017467299, 246.01574491648586, 1.1575312053437885, "NaN", "NaN", 0.0003032207407258402, 0.09570419223193756, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00016805784975500212, 100.0, 688.3119671860405, "NaN", 115.67622916592154, -20448.698070777933, -19.93225085673965, 284.7709017467299, 246.01574491648586, 1.1575312053437885, "NaN", "NaN", 0.0003032207407258402, 0.09570419223193756, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 273.15, 100.00000178744845, 100.0, 0.00014820199373198655, 100.0, 780.5308569270284, 0.723237748711584, 115.67622916592154, -45102.317061441674, -101.21917491342533, 231.44803124471386, 207.39987909145455, 1.1159506565703208, "NaN", "NaN", 0.0011757463033487026, 0.1317117201497926, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00014820199373198655, 100.0, 780.5308569270284, "NaN", 115.67622916592154, -45102.317061441674, -101.21917491342533, 231.44803124471386, 207.39987909145455, 1.1159506565703208, "NaN", "NaN", 0.0011757463033487026, 0.1317117201497926, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 288.15, 100.00000178744845, 100.0, 0.00014998729866389104, 100.0, 771.240166309964, 0.6930404979374591, 115.67622916592154, -41577.6224638396, -88.65882881621572, 238.5230461836947, 213.36890817474162, 1.117890362865581, "NaN", "NaN", 0.0007928061629433014, 0.12718142210966654, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00014998729866389104, 100.0, 771.240166309964, "NaN", 115.67622916592154, -41577.6224638396, -88.65882881621572, 238.5230461836947, 213.36890817474162, 1.117890362865581, "NaN", "NaN", 0.0007928061629433014, 0.12718142210966654, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 303.15, 100.00000178744845, 100.0, 0.00015191633195496803, 100.0, 761.4469601610116, 0.666401825479144, 115.67622916592154, -37946.301105214014, -76.37522450760598, 245.66308377319163, 219.33965294293554, 1.1200121841950053, "NaN", "NaN", 0.000676902289015149, 0.12263181332812101, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00015191633195496803, 100.0, 761.4469601610116, "NaN", 115.67622916592154, -37946.301105214014, -76.37522450760598, 245.66308377319163, 219.33965294293554, 1.1200121841950053, "NaN", "NaN", 0.000676902289015149, 0.12263181332812101, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 373.15, 100.00000178744845, 100.0, 0.00016331324589875505, 100.0, 708.3089220921753, 0.5781242155986132, 115.67622916592154, -19566.560023418457, -21.948146839170853, 279.63488566287646, 246.801311508365, 1.133036465462213, "NaN", "NaN", 0.0003639874907667822, 0.10222049918809678, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00016331324589875505, 100.0, 708.3089220921753, "NaN", 115.67622916592154, -19566.560023418457, -21.948146839170853, 279.63488566287646, 246.801311508365, 1.133036465462213, "NaN", "NaN", 0.0003639874907667822, 0.10222049918809678, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase22_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase22_I.json new file mode 100755 index 0000000000..4cac09bbef --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase22_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 6. Grane oil, PT-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15], "FlashMode": 1, "db": "PSCfluidsV3.nfdb", "fn": 6, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase22_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase22_O.json new file mode 100755 index 0000000000..bc8ad1a38f --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase22_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[2.0, 99999.99999999999, 273.15, 100.00000173260926, 100.0, 0.00033699245336952285, 100.0, 943.6390605545737, 0.014035552138982015, 317.9992421115976, -102904.95343399425, -184.24248815504794, 549.6970158647613, 526.8719751685843, 1.0433217968916904, "NaN", "NaN", 0.258265617928837, 0.150465847607178, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.31781085304894, 99.79139998451235, 0.00034922647209596546, 99.80779810716098, 943.4207855405382, "NaN", 329.46751263632655, -104990.01590222158, -186.2728686082093, 567.3791455016337, 544.5028530429495, 1.0420131728067914, "NaN", "NaN", 0.2680722743097838, 0.13424503527826712, 3.6821891469510546, 0.20860001548645202, 1.7591418155878486e-05, 0.1922018928390309, 1024.0790355137472, "NaN", 18.01500253839106, -48364.394973600305, -131.13228858551858, 87.17215636546567, 65.68774684548458, 1.3270687540937924, "NaN", "NaN", 0.0017454782225453185, 0.5747659233033192, "NaN", "NaN", 0.05019856020264678], [2.0, 99999.99999999999, 288.15, 100.00000173260926, 100.0, 0.00033852693817192954, 100.0, 939.3617058329744, 0.013368827592286648, 317.9992421115976, -94484.27276443035, -154.2357095788805, 567.5723805138559, 543.8103235021958, 1.0436954871666098, "NaN", "NaN", 0.12316240818956248, 0.1493290053970496, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.47139198891696, 99.80010050415885, 0.00035027735215394356, 99.81425102750538, 939.1748636281965, "NaN", 328.9716844412257, -96218.91011211745, -155.250845452151, 585.1567881672349, 561.3454748801335, 1.0424182866926752, "NaN", "NaN", 0.12762563769785715, 0.1328491879291366, 3.528608011083029, 0.19989949584224403, 1.7821368692537534e-05, 0.18574897249461128, 1010.86535614351, "NaN", 18.015004210346756, -47059.65688141705, -126.48211086666974, 86.81841796153054, 64.40301703666196, 1.3480489262189133, "NaN", "NaN", 0.0011386633930865182, 0.5998837073813243, "NaN", "NaN", 0.04578467096803877], [3.0, 99999.99999999999, 303.15, 100.00000173260926, 100.0, 0.0003480457982026239, 100.0, 913.6706828635984, 0.013068070523043984, 317.9992421115976, -85769.93535433589, -124.75853047975826, 585.3612503463153, 560.6219140039859, 1.0441283790810814, "NaN", "NaN", 0.06317171388314607, 0.1467385830609571, 0.02967919789373644, 0.001899803467162584, 0.02513568764077404, 2.145925701668141, 0.8098262135631102, 0.9972965883701687, 20.355538747433105, 1176.6044672231433, 11.592381319497774, 41.01267257906276, 32.58382514627201, 1.2586819501686135, 5.874486328665791e-06, 393.7194654461994, 1.1089586295203841e-05, 0.031057549149593557, 96.68780542914178, 99.81214209408901, 0.0003512186863302965, 97.68346762996055, 934.6739612702424, "NaN", 328.27496082446896, -87154.97857207847, -124.89125041431814, 602.4605031026337, 577.6709198709467, 1.0429129845020155, "NaN", "NaN", 0.06530869185252168, 0.1306345595288887, 3.282515372964492, 0.185958102446371, 1.8068307888722886e-05, 0.1706066683713192, 997.0500042922718, "NaN", 18.015006458005242, -45759.068484306794, -122.08204232455519, 86.6176929489325, 63.2109259129266, 1.3702962217045966, "NaN", "NaN", 0.000797244862200102, 0.6221349900497994, 0.030560286293551283, 0.07301832449616603, 0.04171612447234564], [2.0, 99999.99999999999, 373.15, 100.00000173260926, 100.0, 0.0010650609790281583, 100.0, 298.57374213612064, 0.03252285416799994, 317.9992421115976, -40726.18603080126, 8.55342599976416, 665.8625108025186, 636.2820265169264, 1.0464895801748775, "NaN", "NaN", 0.0057554845910853325, 0.12182712803028964, 2.201550612314762, 0.20405196079215435, 0.03082461562452927, 66.05923889057826, 0.956181888999623, 0.9937103266575708, 29.473939195549697, 5251.980557260084, 28.884994017487973, 57.43622081616994, 48.90816285352174, 1.174368806045515, 1.0299813744458907e-05, 349.37795801631916, 1.1056397998791988e-05, 0.02977418849942905, 97.79844938768524, 99.79594803920784, 0.00035651875905212834, 33.94076110942174, 910.1744456274414, "NaN", 324.4942638760542, -41761.205107676346, 8.09574005178659, 679.5588554752034, 649.5044579286937, 1.0462728118023312, "NaN", "NaN", 0.005884797984958838, 0.123899340899291, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.0274681618938993, "NaN", "NaN"], [2.0, 999999.9999999999, 273.15, 100.00000173260926, 100.0, 0.0003368880593302528, 100.0, 943.9314730946327, 0.14030953653215952, 317.9992421115976, -102642.2093810261, -184.33069437041638, 549.5970145906084, 526.898172629328, 1.0430801303561343, "NaN", "NaN", 0.27687453595426786, 0.15070955496241645, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.3169504586878, 99.79135124212021, 0.00034912110076331277, 99.80772096148706, 943.7134968491875, "NaN", 329.47029482518343, -104718.39785496982, -186.36443145943707, 567.2802553128951, 544.5342070975954, 1.0417715690195803, "NaN", "NaN", 0.2873950976185652, 0.13449412657244195, 3.683049541312204, 0.2086487578786253, 1.758891556744628e-05, 0.19227903851293493, 1024.2247442375287, "NaN", 18.015002548483153, -48346.946679647655, -131.14559537785297, 87.15527942167883, 65.69094771574841, 1.3267471767770624, "NaN", "NaN", 0.0017469805815886778, 0.5747659233019861, "NaN", "NaN", 0.0501792938092022], [2.0, 999999.9999999999, 288.15, 100.00000173260926, 100.0, 0.00033840659223171855, 100.0, 939.6957666056712, 0.1336380264197384, 317.9992421115976, -94223.35682985521, -154.33042608111398, 567.4593221897004, 543.8396458000359, 1.0434313249724887, "NaN", "NaN", 0.13203411215315977, 0.1496612106109283, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.46971984417428, 99.80000577513775, 0.00035015842738433847, 99.81412728366354, 939.5092296457333, "NaN", 328.97707436582124, -95949.92667816342, -155.34900426631634, 585.0489447298895, 561.3843531176054, 1.0421539921461376, "NaN", "NaN", 0.13682415469692177, 0.13318545481309782, 3.5302801558257206, 0.19999422486178314, 1.78184556646554e-05, 0.18587271633645125, 1011.0306171818308, "NaN", 18.01500422786364, -47042.481033686534, -126.49638803636982, 86.79889760084016, 64.40659092451173, 1.347671043520585, "NaN", "NaN", 0.0011396669981930405, 0.5998837073764793, "NaN", "NaN", 0.04576197273929972], [2.0, 999999.9999999999, 303.15, 100.00000173260926, 100.0, 0.0003400401095487229, 100.0, 935.1815658853409, 0.12767221976055204, 317.9992421115976, -85513.51804451819, -124.86834915905474, 585.2407326365682, 560.6565868883386, 1.0438488485164732, "NaN", "NaN", 0.06767167192613746, 0.1471307954152885, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.71359554432831, 99.81382157474094, 0.0003509973359111707, 99.82541505765641, 935.0297283646418, "NaN", 328.19294365373486, -86864.97862348708, -124.96250873176696, 602.1851064663051, 577.5600482143975, 1.0426363601984576, "NaN", "NaN", 0.06994409334254545, 0.13098977726895356, 3.2864044556716876, 0.18617842525945405, 1.8064918147565485e-05, 0.17458494234357833, 997.2371036960573, "NaN", 18.015006651984546, -45742.20760738337, -122.09738443004814, 86.59507309429176, 63.21491650405901, 1.3698518938758943, "NaN", "NaN", 0.0007979658022715046, 0.6221349897359926, "NaN", "NaN", 0.04168142117549572], [1.0, 999999.9999999999, 373.15, 100.00000173260926, 100.0, 0.0003497722027963338, 100.0, 909.1609898364705, 0.10685366345965495, 317.9992421115976, -40848.07736398405, 7.354928409904008, 666.4441178111223, 636.6088897370328, 1.0468658678115754, "NaN", "NaN", 0.006021229179246611, 0.12498936132972945, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0003497722027963338, 100.0, 909.1609898364705, "NaN", 317.9992421115976, -40848.07736398405, 7.354928409904008, 666.4441178111223, 636.6088897370328, 1.0468658678115754, "NaN", "NaN", 0.006021229179246611, 0.12498936132972945, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 273.15, 100.00000173260926, 100.0, 0.0003359216601080044, 100.0, 946.6470307671008, 1.3988385457718175, 317.9992421115976, -100007.12475954232, -185.16675805953864, 548.6957197408809, 527.1413714102512, 1.0408891229177588, "NaN", "NaN", 0.46307986010366925, 0.15266253540098448, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.3088940349941, 99.79089483584355, 0.00034814596398583973, 99.80701706139313, 946.4316198920816, "NaN", 329.4963486540086, -101993.7328148975, -187.2321046895261, 566.3909234415365, 544.8255715956391, 1.0395821212700032, "NaN", "NaN", 0.48076022247437394, 0.13648512677745867, 3.691105965005892, 0.2091051641587532, 1.7564228830022595e-05, 0.1929829386068861, 1025.6643101020388, "NaN", 18.015002645419468, -48172.24748801885, -131.27742201261938, 86.9897935791703, 65.72255062995423, 1.3235912597026194, "NaN", "NaN", 0.0017611761634285905, 0.5747659232893522, "NaN", "NaN", 0.05001059159891428], [2.0, 9999999.999999998, 288.15, 100.00000173260926, 100.0, 0.00033729708152414303, 100.0, 942.786817705791, 1.3317476975224214, 317.9992421115976, -91604.7566002744, -155.2251952025809, 566.4469333172718, 544.1108499739325, 1.0410506119192613, "NaN", "NaN", 0.2207940925738205, 0.152495354531426, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.45411905105077, 99.79912197130179, 0.0003490625587880088, 99.81299337715731, 942.6028717805611, "NaN", 329.02737034464803, -93249.2951966032, -156.27613815544188, 584.0869517212268, 561.744614050936, 1.0397731230730856, "NaN", "NaN", 0.22886875969712356, 0.13604830330561749, 3.5458809489492324, 0.20087802869448954, 1.778974830527693e-05, 0.18700662284268033, 1012.6621291371177, "NaN", 18.015004395635167, -46870.45112356314, -126.63772197645461, 86.60780174631361, 64.44184695637188, 1.3439683348143083, "NaN", "NaN", 0.0011491255764159698, 0.5998837073307388, "NaN", "NaN", 0.04556401526761172], [2.0, 9999999.999999998, 303.15, 100.00000173260926, 100.0, 0.00033876748905230876, 100.0, 938.6946870291192, 1.2716718259137672, 317.9992421115976, -82914.62469661381, -125.82973670895117, 584.1040491880973, 560.9595719000197, 1.0412587260249169, "NaN", "NaN", 0.11319134052498224, 0.15025006559113727, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.68526114674292, 99.81221639709538, 0.000349779445631041, 99.82357468955276, 938.5452687323879, "NaN", 328.28384379685104, -84194.82875953645, -125.95249291538208, 601.1681290324354, 578.0228052337287, 1.0400422329173462, "NaN", "NaN", 0.11704438102659816, 0.13407205383113707, 3.31473885325708, 0.1877836029048641, 1.8031548038730436e-05, 0.17642531044724216, 999.0826571818202, "NaN", 18.015006927636442, -45573.26248849524, -122.24914819154975, 86.37403514564417, 63.25424912432031, 1.3655056591674037, "NaN", "NaN", 0.0008047412785105384, 0.6221349895916298, "NaN", "NaN", 0.04144465726972713], [2.0, 9999999.999999998, 373.15, 100.00000173260926, 100.0, 0.00034737088069630137, 100.0, 915.4458815723739, 1.060796821989718, 317.9992421115976, -38358.342561811594, 6.06114743805829, 664.4258985686989, 637.0964067039184, 1.0428969486834376, "NaN", "NaN", 0.010066934094521108, 0.12853724985024795, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 99.9859172610019, 99.99920219617758, 0.00034741708344474134, 99.9992123157075, 915.4457544272963, "NaN", 318.04149405500215, -38358.17930329644, 6.076688527066374, 664.5072039632512, 637.1778838119611, 1.0428911938810408, "NaN", "NaN", 0.010068311877577833, 0.12845844084468575, 0.01408273899810054, 0.0007978038754021954, 1.9429359355992032e-05, 0.0007876842925028081, 927.206815550621, "NaN", 18.015034416658036, -39517.46028672778, -104.27889649215811, 87.16642839913699, 58.61778940342258, 1.4870302903993087, "NaN", "NaN", 0.00028482404250167957, 0.6880726293403455, "NaN", "NaN", 0.022469037017038677]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase23_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase23_I.json new file mode 100755 index 0000000000..5056d22b38 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase23_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 6. Grane oil, Ph-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [-102904.95343399425, -94484.27276443035, -85769.93535433589, -40726.18603080126, -102642.2093810261, -94223.35682985521, -85513.51804451819, -40848.07736398405, -100007.12475954232, -91604.7566002744, -82914.62469661381, -38358.342561811594], "FlashMode": 2, "db": "PSCfluidsV3.nfdb", "fn": 6, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase23_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase23_O.json new file mode 100755 index 0000000000..6dc32249ee --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase23_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[2.0, 99999.99999999999, 273.15, 100.00000173260926, 100.0, 0.00033699245336952285, 100.0, 943.6390605545737, 0.014035552138982015, 317.9992421115976, -102904.95343399425, -184.24248815504794, 549.6970158647613, 526.8719751685843, 1.0433217968916904, "NaN", "NaN", 0.258265617928837, 0.150465847607178, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.31781085304894, 99.79139998451235, 0.00034922647209596546, 99.80779810716098, 943.4207855405382, "NaN", 329.46751263632655, -104990.01590222158, -186.2728686082093, 567.3791455016337, 544.5028530429495, 1.0420131728067914, "NaN", "NaN", 0.2680722743097838, 0.13424503527826712, 3.6821891469510546, 0.20860001548645202, 1.7591418155878486e-05, 0.1922018928390309, 1024.0790355137472, "NaN", 18.01500253839106, -48364.394973600305, -131.13228858551858, 87.17215636546567, 65.68774684548458, 1.3270687540937924, "NaN", "NaN", 0.0017454782225453185, 0.5747659233033192, "NaN", "NaN", 0.05019856020264678], [2.0, 99999.99999999999, 288.15, 100.00000173260926, 100.0, 0.00033852693817192954, 100.0, 939.3617058329744, 0.013368827592286648, 317.9992421115976, -94484.27276443035, -154.2357095788805, 567.5723805138559, 543.8103235021958, 1.0436954871666098, "NaN", "NaN", 0.12316240818956248, 0.1493290053970496, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.47139198891696, 99.80010050415885, 0.00035027735215394356, 99.81425102750538, 939.1748636281965, "NaN", 328.9716844412257, -96218.91011211745, -155.250845452151, 585.1567881672349, 561.3454748801335, 1.0424182866926752, "NaN", "NaN", 0.12762563769785715, 0.1328491879291366, 3.528608011083029, 0.19989949584224403, 1.7821368692537534e-05, 0.18574897249461128, 1010.86535614351, "NaN", 18.015004210346756, -47059.65688141705, -126.48211086666974, 86.81841796153054, 64.40301703666196, 1.3480489262189133, "NaN", "NaN", 0.0011386633930865182, 0.5998837073813243, "NaN", "NaN", 0.04578467096803877], [3.0, 99999.99999999999, 303.15000000000003, 100.00000173260926, 100.0, 0.0003480457982026235, 100.0, 913.6706828635994, 0.013068070523043965, 317.9992421115976, -85769.93535433586, -124.75853047975816, 585.3612503463154, 560.6219140039858, 1.0441283790810818, "NaN", "NaN", 0.0631717138831458, 0.1467385830609578, 0.029679197893734455, 0.0018998034671624544, 0.02513568764077404, 2.1459257016680002, 0.8098262135631089, 0.9972965883701687, 20.355538747433073, 1176.6044672231424, 11.592381319497736, 41.012672579062716, 32.58382514627196, 1.258681950168614, 5.874486328666191e-06, 393.71946544619965, 1.1089586295203279e-05, 0.031057549149594563, 96.68780542914176, 99.81214209408897, 0.0003512186863302966, 97.6834676299607, 934.673961270242, "NaN", 328.2749608244689, -87154.97857207843, -124.89125041431802, 602.4605031026338, 577.6709198709466, 1.042912984502016, "NaN", "NaN", 0.0653086918525214, 0.13063455952888936, 3.282515372964502, 0.18595810244637162, 1.8068307888722886e-05, 0.17060666837131996, 997.0500042922718, "NaN", 18.015006458005242, -45759.06848430679, -122.08204232455513, 86.6176929489325, 63.21092591292655, 1.3702962217045977, "NaN", "NaN", 0.0007972448622001027, 0.6221349900497997, 0.03056028629355126, 0.07301832449616603, 0.0417161244723457], [2.0, 99999.99999999999, 373.15, 100.00000173260926, 100.0, 0.0010650609790281583, 100.0, 298.57374213612064, 0.03252285416799994, 317.9992421115976, -40726.18603080126, 8.55342599976416, 665.8625108025186, 636.2820265169264, 1.0464895801748775, "NaN", "NaN", 0.0057554845910853325, 0.12182712803028964, 2.201550612314762, 0.20405196079215435, 0.03082461562452927, 66.05923889057826, 0.956181888999623, 0.9937103266575708, 29.473939195549697, 5251.980557260084, 28.884994017487973, 57.43622081616994, 48.90816285352174, 1.174368806045515, 1.0299813744458907e-05, 349.37795801631916, 1.1056397998791988e-05, 0.02977418849942905, 97.79844938768524, 99.79594803920784, 0.00035651875905212834, 33.94076110942174, 910.1744456274414, "NaN", 324.4942638760542, -41761.205107676346, 8.09574005178659, 679.5588554752034, 649.5044579286937, 1.0462728118023312, "NaN", "NaN", 0.005884797984958838, 0.123899340899291, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.0274681618938993, "NaN", "NaN"], [2.0, 999999.9999999999, 273.15, 100.00000173260926, 100.0, 0.0003368880593302528, 100.0, 943.9314730946327, 0.14030953653215952, 317.9992421115976, -102642.2093810261, -184.33069437041638, 549.5970145906084, 526.898172629328, 1.0430801303561343, "NaN", "NaN", 0.27687453595426786, 0.15070955496241645, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.3169504586878, 99.79135124212021, 0.00034912110076331277, 99.80772096148706, 943.7134968491875, "NaN", 329.47029482518343, -104718.39785496982, -186.36443145943707, 567.2802553128951, 544.5342070975954, 1.0417715690195803, "NaN", "NaN", 0.2873950976185652, 0.13449412657244195, 3.683049541312204, 0.2086487578786253, 1.758891556744628e-05, 0.19227903851293493, 1024.2247442375287, "NaN", 18.015002548483153, -48346.946679647655, -131.14559537785297, 87.15527942167883, 65.69094771574841, 1.3267471767770624, "NaN", "NaN", 0.0017469805815886778, 0.5747659233019861, "NaN", "NaN", 0.0501792938092022], [2.0, 999999.9999999999, 288.15, 100.00000173260926, 100.0, 0.00033840659223171855, 100.0, 939.6957666056712, 0.1336380264197384, 317.9992421115976, -94223.35682985521, -154.33042608111398, 567.4593221897004, 543.8396458000359, 1.0434313249724887, "NaN", "NaN", 0.13203411215315977, 0.1496612106109283, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.46971984417428, 99.80000577513775, 0.00035015842738433847, 99.81412728366354, 939.5092296457333, "NaN", 328.97707436582124, -95949.92667816342, -155.34900426631634, 585.0489447298895, 561.3843531176054, 1.0421539921461376, "NaN", "NaN", 0.13682415469692177, 0.13318545481309782, 3.5302801558257206, 0.19999422486178314, 1.78184556646554e-05, 0.18587271633645125, 1011.0306171818308, "NaN", 18.01500422786364, -47042.481033686534, -126.49638803636982, 86.79889760084016, 64.40659092451173, 1.347671043520585, "NaN", "NaN", 0.0011396669981930405, 0.5998837073764793, "NaN", "NaN", 0.04576197273929972], [2.0, 999999.9999999999, 303.15000000000003, 100.00000173260926, 100.0, 0.00034004010954872296, 100.0, 935.1815658853408, 0.12767221976055204, 317.9992421115976, -85513.51804451816, -124.86834915905466, 585.2407326365684, 560.6565868883387, 1.0438488485164734, "NaN", "NaN", 0.06767167192613734, 0.14713079541528876, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.71359554432833, 99.81382157474094, 0.0003509973359111707, 99.82541505765641, 935.0297283646418, "NaN", 328.19294365373486, -86864.97862348706, -124.96250873176689, 602.1851064663053, 577.5600482143976, 1.0426363601984578, "NaN", "NaN", 0.06994409334254531, 0.13098977726895386, 3.28640445567168, 0.18617842525945363, 1.8064918147565475e-05, 0.17458494234357788, 997.2371036960577, "NaN", 18.015006651984546, -45742.207607383396, -122.09738443004818, 86.5950730942917, 63.21491650405905, 1.3698518938758923, "NaN", "NaN", 0.0007979658022715053, 0.6221349897359928, "NaN", "NaN", 0.041681421175495816], [1.0, 999999.9999999999, 373.15, 100.00000173260926, 100.0, 0.0003497722027963338, 100.0, 909.1609898364705, 0.10685366345965495, 317.9992421115976, -40848.07736398405, 7.354928409904008, 666.4441178111223, 636.6088897370328, 1.0468658678115754, "NaN", "NaN", 0.006021229179246611, 0.12498936132972945, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0003497722027963338, 100.0, 909.1609898364705, "NaN", 317.9992421115976, -40848.07736398405, 7.354928409904008, 666.4441178111223, 636.6088897370328, 1.0468658678115754, "NaN", "NaN", 0.006021229179246611, 0.12498936132972945, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 273.15000000000003, 100.00000173260926, 100.0, 0.00033592166010800427, 100.0, 946.647030767101, 1.398838545771817, 317.9992421115976, -100007.12475954228, -185.16675805953847, 548.695719740881, 527.1413714102513, 1.0408891229177588, "NaN", "NaN", 0.46307986010366925, 0.15266253540098454, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.3088940349941, 99.79089483584357, 0.00034814596398583973, 99.80701706139313, 946.4316198920818, "NaN", 329.49634865400867, -101993.73281489746, -187.23210468952593, 566.3909234415366, 544.8255715956393, 1.0395821212700032, "NaN", "NaN", 0.48076022247437394, 0.13648512677745872, 3.6911059650058946, 0.20910516415875335, 1.7564228830022595e-05, 0.19298293860688626, 1025.6643101020388, "NaN", 18.015002645419468, -48172.24748801884, -131.27742201261933, 86.98979357917028, 65.7225506299542, 1.32359125970262, "NaN", "NaN", 0.001761176163428588, 0.5747659232893519, "NaN", "NaN", 0.05001059159891421], [2.0, 9999999.999999998, 288.15, 100.00000173260926, 100.0, 0.00033729708152414303, 100.0, 942.786817705791, 1.3317476975224214, 317.9992421115976, -91604.7566002744, -155.2251952025809, 566.4469333172718, 544.1108499739325, 1.0410506119192613, "NaN", "NaN", 0.2207940925738205, 0.152495354531426, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.45411905105077, 99.79912197130179, 0.0003490625587880088, 99.81299337715731, 942.6028717805611, "NaN", 329.02737034464803, -93249.2951966032, -156.27613815544188, 584.0869517212268, 561.744614050936, 1.0397731230730856, "NaN", "NaN", 0.22886875969712356, 0.13604830330561749, 3.5458809489492324, 0.20087802869448954, 1.778974830527693e-05, 0.18700662284268033, 1012.6621291371177, "NaN", 18.015004395635167, -46870.45112356314, -126.63772197645461, 86.60780174631361, 64.44184695637188, 1.3439683348143083, "NaN", "NaN", 0.0011491255764159698, 0.5998837073307388, "NaN", "NaN", 0.04556401526761172], [2.0, 9999999.999999998, 303.1500000000001, 100.00000173260926, 100.0, 0.00033876748905230876, 100.0, 938.6946870291192, 1.2716718259137667, 317.9992421115976, -82914.62469661378, -125.82973670895109, 584.1040491880974, 560.9595719000199, 1.0412587260249169, "NaN", "NaN", 0.11319134052498175, 0.15025006559113602, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.68526114674292, 99.81221639709538, 0.000349779445631041, 99.82357468955276, 938.5452687323879, "NaN", 328.28384379685104, -84194.82875953642, -125.952492915382, 601.1681290324356, 578.022805233729, 1.040042232917346, "NaN", "NaN", 0.11704438102659766, 0.13407205383113577, 3.3147388532570834, 0.1877836029048643, 1.8031548038730442e-05, 0.1764253104472424, 999.0826571818199, "NaN", 18.015006927636442, -45573.26248849522, -122.24914819154974, 86.37403514564407, 63.25424912432022, 1.3655056591674042, "NaN", "NaN", 0.0008047412785105378, 0.6221349895916298, "NaN", "NaN", 0.04144465726972708], [2.0, 9999999.999999998, 373.1500000000001, 100.00000173260926, 100.0, 0.0003473708806963012, 100.0, 915.4458815723743, 1.060796821989717, 317.9992421115976, -38358.34256181154, 6.061147438058296, 664.4258985686987, 637.0964067039183, 1.0428969486834374, "NaN", "NaN", 0.010066934094521083, 0.1285372498502481, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 99.98591726100187, 99.99920219617755, 0.0003474170834447412, 99.9992123157075, 915.4457544272966, "NaN", 318.04149405500215, -38358.17930329639, 6.076688527066404, 664.5072039632511, 637.1778838119611, 1.0428911938810406, "NaN", "NaN", 0.01006831187757781, 0.12845844084468577, 0.014082738998121635, 0.0007978038754033904, 1.942935935599205e-05, 0.0007876842925039888, 927.2068155506201, "NaN", 18.015034416658036, -39517.46028672775, -104.27889649215805, 87.16642839913712, 58.61778940342257, 1.487030290399311, "NaN", "NaN", 0.0002848240425016786, 0.6880726293403454, "NaN", "NaN", 0.0224690370170382]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase24_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase24_I.json new file mode 100755 index 0000000000..faa71338e7 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase24_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 6. Grane oil, Ps-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [-184.24248815504794, -154.2357095788805, -124.75853047975826, 8.55342599976416, -184.33069437041638, -154.33042608111398, -124.86834915905474, 7.354928409904008, -185.16675805953864, -155.2251952025809, -125.82973670895117, 6.06114743805829], "FlashMode": 3, "db": "PSCfluidsV3.nfdb", "fn": 6, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase24_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase24_O.json new file mode 100755 index 0000000000..e16890dbb1 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase24_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[2.0, 99999.99999999999, 273.15000000000003, 100.00000173260926, 100.0, 0.0003369924533695229, 100.0, 943.6390605545736, 0.01403555213898201, 317.9992421115976, -102904.95343399417, -184.24248815504774, 549.6970158647613, 526.8719751685844, 1.0433217968916901, "NaN", "NaN", 0.25826561792883546, 0.15046584760718001, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.31781085304894, 99.79139998451231, 0.00034922647209596535, 99.80779810716098, 943.4207855405381, "NaN", 329.46751263632643, -104990.01590222151, -186.2728686082091, 567.3791455016337, 544.5028530429496, 1.042013172806791, "NaN", "NaN", 0.26807227430978214, 0.13424503527826925, 3.6821891469510515, 0.20860001548645185, 1.759141815587849e-05, 0.1922018928390309, 1024.079035513747, "NaN", 18.01500253839106, -48364.3949736003, -131.13228858551855, 87.17215636546568, 65.68774684548458, 1.3270687540937927, "NaN", "NaN", 0.0017454782225453161, 0.574765923303319, "NaN", "NaN", 0.050198560202646736], [2.0, 99999.99999999999, 288.14999999999986, 100.00000173260926, 100.0, 0.00033852693817192965, 100.0, 939.361705832974, 0.013368827592286662, 317.9992421115976, -94484.27276443041, -154.23570957888063, 567.5723805138559, 543.8103235021957, 1.04369548716661, "NaN", "NaN", 0.12316240818956299, 0.14932900539704988, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.47139198891698, 99.80010050415885, 0.00035027735215394367, 99.81425102750538, 939.1748636281961, "NaN", 328.9716844412257, -96218.91011211748, -155.2508454521511, 585.1567881672348, 561.3454748801332, 1.0424182866926754, "NaN", "NaN", 0.12762563769785767, 0.13284918792913683, 3.528608011083033, 0.19989949584224426, 1.7821368692537517e-05, 0.1857489724946112, 1010.8653561435109, "NaN", 18.015004210346756, -47059.65688141708, -126.48211086666983, 86.81841796153056, 64.40301703666195, 1.3480489262189137, "NaN", "NaN", 0.0011386633930865206, 0.5998837073813238, "NaN", "NaN", 0.04578467096803898], [3.0, 99999.99999999999, 303.1499999999974, 100.00000173260926, 100.0, 0.00034804579820262, 100.0, 913.6706828636086, 0.013068070523043946, 317.9992421115976, -85769.9353543374, -124.75853047976325, 585.3612503463122, 560.6219140039831, 1.0441283790810811, "NaN", "NaN", 0.06317171388315278, 0.14673858306095702, 0.029679197893722885, 0.0018998034671616915, 0.025135687640773823, 2.1459257016671653, 0.8098262135631066, 0.9972965883701685, 20.355538747432842, 1176.6044672230298, 11.592381319497006, 41.01267257906226, 32.58382514627151, 1.2586819501686177, 5.8744863286660845e-06, 393.7194654462009, 1.108958629520392e-05, 0.031057549149592932, 96.68780542914173, 99.81214209408898, 0.0003512186863302964, 97.68346762996151, 934.673961270243, "NaN", 328.2749608244691, -87154.97857208003, -124.89125041432325, 602.4605031026308, 577.6709198709439, 1.0429129845020155, "NaN", "NaN", 0.06530869185252863, 0.1306345595288884, 3.282515372964551, 0.18595810244637434, 1.8068307888722845e-05, 0.17060666837132368, 997.050004292274, "NaN", 18.015006458005242, -45759.068484307005, -122.08204232455587, 86.61769294893256, 63.210925912926804, 1.370296221704593, "NaN", "NaN", 0.000797244862200147, 0.622134990049796, 0.030560286293551373, 0.07301832449616666, 0.041716124472346336], [2.0, 99999.99999999999, 373.15, 100.00000173260926, 100.0, 0.0010650609790281583, 100.0, 298.57374213612064, 0.03252285416799994, 317.9992421115976, -40726.18603080126, 8.55342599976416, 665.8625108025186, 636.2820265169264, 1.0464895801748775, "NaN", "NaN", 0.0057554845910853325, 0.12182712803028964, 2.201550612314762, 0.20405196079215435, 0.03082461562452927, 66.05923889057826, 0.956181888999623, 0.9937103266575708, 29.473939195549697, 5251.980557260084, 28.884994017487973, 57.43622081616994, 48.90816285352174, 1.174368806045515, 1.0299813744458907e-05, 349.37795801631916, 1.1056397998791988e-05, 0.02977418849942905, 97.79844938768524, 99.79594803920784, 0.00035651875905212834, 33.94076110942174, 910.1744456274414, "NaN", 324.4942638760542, -41761.205107676346, 8.09574005178659, 679.5588554752034, 649.5044579286937, 1.0462728118023312, "NaN", "NaN", 0.005884797984958838, 0.123899340899291, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.0274681618938993, "NaN", "NaN"], [2.0, 999999.9999999999, 273.15, 100.00000173260926, 100.0, 0.0003368880593302528, 100.0, 943.9314730946327, 0.14030953653215952, 317.9992421115976, -102642.2093810261, -184.33069437041638, 549.5970145906084, 526.898172629328, 1.0430801303561343, "NaN", "NaN", 0.27687453595426786, 0.15070955496241645, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.3169504586878, 99.79135124212021, 0.00034912110076331277, 99.80772096148706, 943.7134968491875, "NaN", 329.47029482518343, -104718.39785496982, -186.36443145943707, 567.2802553128951, 544.5342070975954, 1.0417715690195803, "NaN", "NaN", 0.2873950976185652, 0.13449412657244195, 3.683049541312204, 0.2086487578786253, 1.758891556744628e-05, 0.19227903851293493, 1024.2247442375287, "NaN", 18.015002548483153, -48346.946679647655, -131.14559537785297, 87.15527942167883, 65.69094771574841, 1.3267471767770624, "NaN", "NaN", 0.0017469805815886778, 0.5747659233019861, "NaN", "NaN", 0.0501792938092022], [2.0, 999999.9999999999, 288.1499999999998, 100.00000173260926, 100.0, 0.00033840659223171855, 100.0, 939.6957666056712, 0.13363802641973846, 317.9992421115976, -94223.35682985534, -154.3304260811144, 567.4593221897001, 543.8396458000356, 1.0434313249724887, "NaN", "NaN", 0.13203411215316058, 0.1496612106109299, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.46971984417428, 99.80000577513775, 0.00035015842738433847, 99.81412728366354, 939.5092296457333, "NaN", 328.97707436582124, -95949.92667816355, -155.34900426631674, 585.0489447298892, 561.3843531176051, 1.0421539921461378, "NaN", "NaN", 0.1368241546969226, 0.13318545481309949, 3.5302801558257233, 0.1999942248617833, 1.7818455664655392e-05, 0.18587271633645128, 1011.0306171818314, "NaN", 18.01500422786364, -47042.48103368658, -126.49638803636995, 86.79889760084009, 64.4065909245117, 1.3476710435205845, "NaN", "NaN", 0.0011396669981930466, 0.599883707376479, "NaN", "NaN", 0.04576197273929981], [2.0, 999999.9999999999, 303.14999999999844, 100.00000173260926, 100.0, 0.00034004010954872274, 100.0, 935.1815658853415, 0.12767221976055265, 317.9992421115976, -85513.51804451906, -124.8683491590577, 585.2407326365663, 560.6565868883367, 1.0438488485164732, "NaN", "NaN", 0.06767167192614174, 0.14713079541528998, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.7135955443283, 99.81382157474094, 0.0003509973359111706, 99.82541505765641, 935.0297283646423, "NaN", 328.19294365373497, -86864.97862348799, -124.96250873177, 602.1851064663033, 577.5600482143957, 1.0426363601984578, "NaN", "NaN", 0.06994409334254988, 0.13098977726895505, 3.2864044556717036, 0.18617842525945494, 1.8064918147565448e-05, 0.17458494234357896, 997.2371036960592, "NaN", 18.015006651984546, -45742.207607383505, -122.09738443004866, 86.5950730942917, 63.21491650405917, 1.36985189387589, "NaN", "NaN", 0.0007979658022715318, 0.6221349897359905, "NaN", "NaN", 0.04168142117549616], [1.0, 999999.9999999999, 373.1499999999999, 100.00000173260926, 100.0, 0.0003497722027963339, 100.0, 909.1609898364702, 0.10685366345965502, 317.9992421115976, -40848.07736398407, 7.354928409903979, 666.4441178111226, 636.6088897370328, 1.0468658678115759, "NaN", "NaN", 0.006021229179246611, 0.12498936132972766, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0003497722027963339, 100.0, 909.1609898364702, "NaN", 317.9992421115976, -40848.07736398407, 7.354928409903979, 666.4441178111226, 636.6088897370328, 1.0468658678115759, "NaN", "NaN", 0.006021229179246611, 0.12498936132972766, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 273.15, 100.00000173260926, 100.0, 0.0003359216601080044, 100.0, 946.6470307671008, 1.3988385457718175, 317.9992421115976, -100007.12475954232, -185.16675805953864, 548.6957197408809, 527.1413714102512, 1.0408891229177588, "NaN", "NaN", 0.46307986010366925, 0.15266253540098448, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.3088940349941, 99.79089483584355, 0.00034814596398583973, 99.80701706139313, 946.4316198920816, "NaN", 329.4963486540086, -101993.7328148975, -187.2321046895261, 566.3909234415365, 544.8255715956391, 1.0395821212700032, "NaN", "NaN", 0.48076022247437394, 0.13648512677745867, 3.691105965005892, 0.2091051641587532, 1.7564228830022595e-05, 0.1929829386068861, 1025.6643101020388, "NaN", 18.015002645419468, -48172.24748801885, -131.27742201261938, 86.9897935791703, 65.72255062995423, 1.3235912597026194, "NaN", "NaN", 0.0017611761634285905, 0.5747659232893522, "NaN", "NaN", 0.05001059159891428], [2.0, 9999999.999999998, 288.1499999999999, 100.00000173260926, 100.0, 0.00033729708152414303, 100.0, 942.786817705791, 1.331747697522422, 317.9992421115976, -91604.75660027444, -155.22519520258098, 566.4469333172717, 544.1108499739324, 1.0410506119192613, "NaN", "NaN", 0.2207940925738205, 0.1524953545314255, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.45411905105077, 99.79912197130179, 0.0003490625587880089, 99.81299337715731, 942.6028717805611, "NaN", 329.0273703446481, -93249.29519660324, -156.27613815544197, 584.0869517212267, 561.7446140509359, 1.0397731230730856, "NaN", "NaN", 0.22886875969712356, 0.13604830330561699, 3.545880948949237, 0.20087802869448979, 1.778974830527692e-05, 0.18700662284268046, 1012.6621291371183, "NaN", 18.015004395635167, -46870.45112356316, -126.63772197645469, 86.60780174631347, 64.44184695637182, 1.3439683348143074, "NaN", "NaN", 0.0011491255764159707, 0.5998837073307385, "NaN", "NaN", 0.04556401526761178], [2.0, 9999999.999999998, 303.149999999999, 100.00000173260926, 100.0, 0.0003387674890523086, 100.0, 938.6946870291197, 1.27167182591377, 317.9992421115976, -82914.62469661448, -125.82973670895329, 584.104049188096, 560.9595719000187, 1.0412587260249166, "NaN", "NaN", 0.11319134052498685, 0.1502500655911367, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.6852611467429, 99.81221639709536, 0.00034977944563104084, 99.82357468955276, 938.5452687323883, "NaN", 328.28384379685104, -84194.82875953714, -125.95249291538425, 601.1681290324343, 578.0228052337278, 1.0400422329173458, "NaN", "NaN", 0.11704438102660294, 0.13407205383113638, 3.3147388532571083, 0.18778360290486568, 1.8031548038730422e-05, 0.17642531044724372, 999.082657181821, "NaN", 18.015006927636442, -45573.26248849533, -122.24914819155012, 86.37403514564413, 63.25424912432038, 1.3655056591674015, "NaN", "NaN", 0.0008047412785105562, 0.6221349895916286, "NaN", "NaN", 0.04144465726972737], [2.0, 9999999.999999998, 373.1500000000001, 100.00000173260926, 100.0, 0.0003473708806963012, 100.0, 915.4458815723743, 1.060796821989717, 317.9992421115976, -38358.34256181154, 6.061147438058296, 664.4258985686987, 637.0964067039183, 1.0428969486834374, "NaN", "NaN", 0.010066934094521083, 0.1285372498502481, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 99.98591726100187, 99.99920219617755, 0.0003474170834447412, 99.9992123157075, 915.4457544272966, "NaN", 318.04149405500215, -38358.17930329639, 6.076688527066404, 664.5072039632511, 637.1778838119611, 1.0428911938810406, "NaN", "NaN", 0.01006831187757781, 0.12845844084468577, 0.014082738998121635, 0.0007978038754033904, 1.942935935599205e-05, 0.0007876842925039888, 927.2068155506201, "NaN", 18.015034416658036, -39517.46028672775, -104.27889649215805, 87.16642839913712, 58.61778940342257, 1.487030290399311, "NaN", "NaN", 0.0002848240425016786, 0.6880726293403454, "NaN", "NaN", 0.0224690370170382]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase25_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase25_I.json new file mode 100755 index 0000000000..f0ae1436a8 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase25_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 7. Gina Krog oil, PT-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15], "FlashMode": 1, "db": "PSCfluidsV3.nfdb", "fn": 7, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase25_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase25_O.json new file mode 100755 index 0000000000..0c9e562cf3 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase25_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[2.0, 99999.99999999999, 273.15, 100.00000033537799, 100.0, 0.0002583912254388134, 100.0, 882.9386888377051, 0.01173489422572274, 228.14360979611376, -81680.28134236413, -149.2785572360746, 421.3948964028655, 397.45335922340405, 1.060237350179255, "NaN", "NaN", 0.022152477882326854, 0.14121754405244485, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.11452642379209, 99.77215307256931, 0.00026557028377797765, 99.80357335254811, 882.5797909828653, "NaN", 234.38696554802775, -82670.16543506733, -149.8177209756507, 431.3253458141794, 407.31080231212997, 1.0589587689934297, "NaN", "NaN", 0.02275881204276341, 0.12833592439010255, 2.885473576207908, 0.2278469274285593, 1.7591419531178807e-05, 0.19642664745188462, 1024.0790875376467, "NaN", 18.015004861981527, -48364.38974315826, -131.13227037850152, 87.17215400556019, 65.687743622382, 1.327068783283001, "NaN", "NaN", 0.0017454794156317598, 0.5747659235610306, "NaN", "NaN", 0.048174341030796944], [2.0, 99999.99999999999, 288.15, 100.00000033537799, 100.0, 0.00026010418772350193, 100.0, 877.1239394216783, 0.011195427605946879, 228.14360979611376, -75223.82690268104, -126.27113696061242, 434.50914959914695, 409.49219527816103, 1.0610926279168575, "NaN", "NaN", 0.013581550512047538, 0.1398791587423828, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.25036270814377, 99.78287913506637, 0.00026697657622230873, 99.81162067376745, 876.7988081214905, "NaN", 234.08474382807657, -76020.13524821194, -126.26517274216224, 444.3396878568505, 419.2491777809652, 1.0598462952478196, "NaN", "NaN", 0.01393335817798232, 0.1268730821725107, 2.7496372918562333, 0.21712086493324467, 1.782137101027538e-05, 0.18837932623255285, 1010.8654389156495, "NaN", 18.015008028380656, -47059.64842730064, -126.48208202208296, 86.8184145303934, 64.4030120084103, 1.3480489781915153, "NaN", "NaN", 0.0011386646023332084, 0.5998837082791967, "NaN", "NaN", 0.044546596880477185], [2.0, 99999.99999999999, 303.15, 100.00000033537799, 100.0, 0.00026195882958061423, 100.0, 870.9139911846555, 0.010714945965796563, 228.14360979611376, -68548.24099684866, -103.69012893804155, 447.61932437143315, 421.4630385811362, 1.062060687168091, "NaN", "NaN", 0.008732506507032866, 0.13791521570209533, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.47040197972645, 99.80025414609767, 0.0002683076755869509, 99.82553637775983, 870.6309505573471, "NaN", 233.59696663809936, -69139.67673694881, -103.21281445207603, 456.9882097524903, 430.76056722447413, 1.0608868232693842, "NaN", "NaN", 0.008938446140971548, 0.1253485147977268, 2.5295980202735584, 0.1997458539030896, 1.806831170026777e-05, 0.17446362224017448, 997.0501326494871, "NaN", 18.015012577504258, -45759.055177314745, -122.08199770333027, 86.61768819254713, 63.21091827540915, 1.3702963120256375, "NaN", "NaN", 0.0007972461444436278, 0.6221349924772731, "NaN", "NaN", 0.04128874415028008], [2.0, 99999.99999999999, 373.15, 100.00000033537799, 100.0, 0.003111089700808247, 100.0, 73.33237924218099, 0.10300364299318579, 228.14360979611376, -32261.429812009374, 3.5516137258291223, 503.9156702465327, 473.91496832147413, 1.0633039763046859, "NaN", "NaN", 0.0018355182878592165, 0.1080652969053536, 9.563811800997335, 2.4312055386279066, 0.030576069885959303, 91.73690520212419, 1.8967814844807829, 0.9857705615182909, 57.996123227878044, 9765.986409436236, 49.768069808163425, 111.22327973142015, 102.40821302210145, 1.0860777319433965, 1.2266946446165196e-05, 237.59157742718443, 9.798764439048698e-06, 0.025440294710231563, 90.43618819900267, 97.56879446137206, 0.00029125211321075466, 8.263094797875803, 845.0996343267988, "NaN", 246.1370543713161, -36705.915003486305, -1.3358709955291173, 545.4436934125036, 513.2025672488419, 1.0628233922065098, "NaN", "NaN", 0.0020285918601881925, 0.11680305981628368, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.022313343434163316, "NaN", "NaN"], [2.0, 999999.9999999999, 273.15, 100.00000033537799, 100.0, 0.0002582681385187069, 100.0, 883.3594848541057, 0.11729472208572923, 228.14360979611376, -81467.30301148558, -149.37676582588222, 421.27189500404876, 397.48352507682165, 1.0598474362494132, "NaN", "NaN", 0.023744302354721726, 0.14148082788846522, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.11375534295689, 99.77209218509523, 0.0002654455281969518, 99.80345515615244, 883.0010628829625, "NaN", 234.38868353543782, -82451.64829129273, -149.9186012323268, 431.2019229388999, 407.34448205064075, 1.0585682191352066, "NaN", "NaN", 0.024398068123937584, 0.12860348844315603, 2.8862446570431173, 0.22790781490266582, 1.7588916948835297e-05, 0.19654484384755871, 1024.224796572832, "NaN", 18.01500488385727, -48346.941422277574, -131.14557708406525, 87.15527704491844, 65.6909444769614, 1.326747206009267, "NaN", "NaN", 0.001746981785136872, 0.5747659235605479, "NaN", "NaN", 0.04815451333318885], [2.0, 999999.9999999999, 288.15, 100.00000033537799, 100.0, 0.00025996096524099, 100.0, 877.6071806958372, 0.11189447390796396, 228.14360979611376, -75013.04726560322, -126.37717543557825, 434.36834510080115, 409.5261655971232, 1.0606607870035751, "NaN", "NaN", 0.014557643029309232, 0.14017059784014255, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.24883363555946, 99.78275839374962, 0.0002668332482086898, 99.81144286955703, 877.2825078124845, "NaN", 234.08814115627047, -75804.33392191783, -126.37380373511178, 444.2010736491951, 419.2895873674324, 1.0594135581524287, "NaN", "NaN", 0.014937237103517718, 0.127165328785019, 2.7511663644405426, 0.21724160624999123, 1.7818457993237212e-05, 0.18855713044297806, 1011.0307004889771, "NaN", 18.01500806653603, -47042.47253315684, -126.49635904510875, 86.79889414147, 64.4065858701895, 1.3476710955679572, "NaN", "NaN", 0.0011396682209221282, 0.5998837082774274, "NaN", "NaN", 0.04452424291248391], [2.0, 999999.9999999999, 303.15, 100.00000033537799, 100.0, 0.000261792193132524, 100.0, 871.4683469595417, 0.10708332940665267, 228.14360979611376, -68340.11005019797, -103.80512092450174, 447.45796343482647, 421.5013758355442, 1.0615812642315305, "NaN", "NaN", 0.009360268692122298, 0.13824299150535094, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.46755910518095, 99.80002966213809, 0.000268144048434434, 99.82526189904262, 871.1856778616165, "NaN", 233.60325459991049, -68927.25807796043, -103.32984518568989, 456.8340467289637, 430.81051734677123, 1.0604059750965769, "NaN", "NaN", 0.00958273781863559, 0.12567031703629625, 2.5324408948190458, 0.199970337862663, 1.8064921859411783e-05, 0.17473810095738027, 997.2372303050814, "NaN", 18.015012640757526, -45742.1946490892, -122.09734099513553, 86.59506846419204, 63.214909083137705, 1.3698519814416832, "NaN", "NaN", 0.0007979670874241487, 0.6221349924716169, "NaN", "NaN", 0.04126338981509382], [1.0, 999999.9999999999, 373.15, 100.00000033537799, 100.0, 0.0002727810553225571, 100.0, 836.361636354619, 0.09053118775962662, 228.14360979611376, -34228.058726380485, -2.7951241306510344, 508.0417590158122, 475.8088854327394, 1.067743319996552, "NaN", "NaN", 0.001693413146026301, 0.1177761567787434, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0002727810553225571, 100.0, 836.361636354619, "NaN", 228.14360979611376, -34228.058726380485, -2.7951241306510344, 508.0417590158122, 475.8088854327394, 1.067743319996552, "NaN", "NaN", 0.001693413146026301, 0.1177761567787434, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 273.15, 100.00000033537799, 100.0, 0.0002571383796497003, 100.0, 887.2405982604147, 1.1679706679573072, 228.14360979611376, -79327.67505996376, -150.301687674468, 420.1786066506104, 397.7614584998546, 1.0563582711992794, "NaN", "NaN", 0.03966511929145975, 0.14376017690411177, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.1065630434536, 99.77152425370662, 0.00026430072224026876, 99.80237717686876, 886.8863750576172, "NaN", 234.40470947278214, -80255.99832325727, -150.86854502103273, 430.106471486782, 407.6550601961251, 1.0550745310995413, "NaN", "NaN", 0.0407945245824093, 0.13091770862224758, 2.8934369565464078, 0.2284757462914531, 1.7564230268954014e-05, 0.1976228231312494, 1025.66436545211, "NaN", 18.015005093461458, -48172.24197276252, -131.2774028922159, 86.98979103829832, 65.72254724172306, 1.3235912892778758, "NaN", "NaN", 0.0017611774623253304, 0.5747659235559814, "NaN", "NaN", 0.04797718888570141], [2.0, 9999999.999999998, 288.15, 100.00000033537799, 100.0, 0.0002586532149454227, 100.0, 882.0443613826851, 1.1134843364326101, 228.14360979611376, -72892.95664057662, -127.37167473495198, 433.127167195039, 409.8377101678062, 1.0568260471143494, "NaN", "NaN", 0.024321208078824576, 0.14266924561425137, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.23463388452855, 99.78163712790348, 0.00026552501413037305, 99.80981803081498, 881.723691289441, "NaN", 234.11969558871348, -73633.04046516806, -127.39254931458727, 442.98222483871626, 419.6608153007386, 1.0555720445838266, "NaN", "NaN", 0.02498022519567568, 0.1296660045673663, 2.7653661154714553, 0.21836287209321112, 1.7789750735764802e-05, 0.19018196918503233, 1012.6622176161235, "NaN", 18.015008430917646, -46870.442180229424, -126.6376915936328, 86.60779801179677, 64.44184165472372, 1.3439683874312158, "NaN", "NaN", 0.001149126913097989, 0.5998837082607602, "NaN", "NaN", 0.044325176845624335], [2.0, 9999999.999999998, 303.15, 100.00000033537799, 100.0, 0.0002602792785398798, 100.0, 876.5338949606693, 1.0648293086773784, 228.14360979611376, -66243.39643715922, -104.87864512541853, 446.0484996518611, 421.85121475024613, 1.0573597611089984, "NaN", "NaN", 0.01564051671838747, 0.14102866358561109, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.44128658926853, 99.79795508618685, 0.00026665929164233017, 99.8227506895311, 876.2544178507442, "NaN", 233.66138236254187, -66786.17440927819, -104.42251380910268, 455.49320138977777, 431.26762248756626, 1.0561729599882261, "NaN", "NaN", 0.016030089713044156, 0.128395279332778, 2.558713410731471, 0.20204491381367504, 1.8031551921952962e-05, 0.17724931046890108, 999.082792240808, "NaN", 18.015013242619872, -45573.24880993202, -122.24910253149687, 86.37403007873006, 63.254241316118154, 1.3655057476236083, "NaN", "NaN", 0.0008047427467610288, 0.6221349924185637, "NaN", "NaN", 0.041038579301590376], [1.0, 9999999.999999998, 373.15, 100.00000033537799, 100.0, 0.00026980196992996676, 100.0, 845.596530875344, 0.8957097969753519, 228.14360979611376, -32266.727140755127, -4.2761132426877255, 505.3978799909583, 476.3877757228154, 1.0608959879882023, "NaN", "NaN", 0.0028412724539808106, 0.12186634206570002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00026980196992996676, 100.0, 845.596530875344, "NaN", 228.14360979611376, -32266.727140755127, -4.2761132426877255, 505.3978799909583, 476.3877757228154, 1.0608959879882023, "NaN", "NaN", 0.0028412724539808106, 0.12186634206570002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase26_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase26_I.json new file mode 100755 index 0000000000..b638140319 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase26_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 7. Gina Krog oil, Ph-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [-81680.28134236413, -75223.82690268104, -68548.24099684866, -32261.429812009374, -81467.30301148558, -75013.04726560322, -68340.11005019797, -34228.058726380485, -79327.67505996376, -72892.95664057662, -66243.39643715922, -32266.727140755127], "FlashMode": 2, "db": "PSCfluidsV3.nfdb", "fn": 7, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase26_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase26_O.json new file mode 100755 index 0000000000..32b4cdf8a1 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase26_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[2.0, 99999.99999999999, 273.1499999999999, 100.00000033537799, 100.0, 0.0002583912254388134, 100.0, 882.9386888377051, 0.011734894225722742, 228.14360979611376, -81680.28134236415, -149.2785572360746, 421.39489640286564, 397.45335922340416, 1.060237350179255, "NaN", "NaN", 0.022152477882326896, 0.14121754405244535, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.11452642379209, 99.77215307256931, 0.00026557028377797765, 99.80357335254811, 882.5797909828653, "NaN", 234.38696554802775, -82670.16543506735, -149.8177209756507, 431.3253458141795, 407.3108023121301, 1.0589587689934297, "NaN", "NaN", 0.022758812042763456, 0.12833592439010305, 2.8854735762079082, 0.22784692742855933, 1.7591419531178814e-05, 0.1964266474518847, 1024.0790875376463, "NaN", 18.015004861981527, -48364.38974315824, -131.13227037850146, 87.17215400556029, 65.68774362238199, 1.3270687832830028, "NaN", "NaN", 0.0017454794156317613, 0.5747659235610304, "NaN", "NaN", 0.048174341030796944], [2.0, 99999.99999999999, 288.15, 100.00000033537799, 100.0, 0.00026010418772350193, 100.0, 877.1239394216783, 0.011195427605946879, 228.14360979611376, -75223.82690268104, -126.27113696061242, 434.50914959914695, 409.49219527816103, 1.0610926279168575, "NaN", "NaN", 0.013581550512047538, 0.1398791587423828, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.25036270814377, 99.78287913506637, 0.00026697657622230873, 99.81162067376745, 876.7988081214905, "NaN", 234.08474382807657, -76020.13524821194, -126.26517274216224, 444.3396878568505, 419.2491777809652, 1.0598462952478196, "NaN", "NaN", 0.01393335817798232, 0.1268730821725107, 2.7496372918562333, 0.21712086493324467, 1.782137101027538e-05, 0.18837932623255285, 1010.8654389156495, "NaN", 18.015008028380656, -47059.64842730064, -126.48208202208296, 86.8184145303934, 64.4030120084103, 1.3480489781915153, "NaN", "NaN", 0.0011386646023332084, 0.5998837082791967, "NaN", "NaN", 0.044546596880477185], [2.0, 99999.99999999999, 303.15, 100.00000033537799, 100.0, 0.00026195882958061423, 100.0, 870.9139911846555, 0.010714945965796563, 228.14360979611376, -68548.24099684866, -103.69012893804155, 447.61932437143315, 421.4630385811362, 1.062060687168091, "NaN", "NaN", 0.008732506507032866, 0.13791521570209533, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.47040197972645, 99.80025414609767, 0.0002683076755869509, 99.82553637775983, 870.6309505573471, "NaN", 233.59696663809936, -69139.67673694881, -103.21281445207603, 456.9882097524903, 430.76056722447413, 1.0608868232693842, "NaN", "NaN", 0.008938446140971548, 0.1253485147977268, 2.5295980202735584, 0.1997458539030896, 1.806831170026777e-05, 0.17446362224017448, 997.0501326494871, "NaN", 18.015012577504258, -45759.055177314745, -122.08199770333027, 86.61768819254713, 63.21091827540915, 1.3702963120256375, "NaN", "NaN", 0.0007972461444436278, 0.6221349924772731, "NaN", "NaN", 0.04128874415028008], [2.0, 99999.99999999999, 373.15, 100.00000033537799, 100.0, 0.003111089700808247, 100.0, 73.33237924218099, 0.10300364299318579, 228.14360979611376, -32261.429812009374, 3.5516137258291223, 503.9156702465327, 473.91496832147413, 1.0633039763046859, "NaN", "NaN", 0.0018355182878592165, 0.1080652969053536, 9.563811800997335, 2.4312055386279066, 0.030576069885959303, 91.73690520212419, 1.8967814844807829, 0.9857705615182909, 57.996123227878044, 9765.986409436236, 49.768069808163425, 111.22327973142015, 102.40821302210145, 1.0860777319433965, 1.2266946446165196e-05, 237.59157742718443, 9.798764439048698e-06, 0.025440294710231563, 90.43618819900267, 97.56879446137206, 0.00029125211321075466, 8.263094797875803, 845.0996343267988, "NaN", 246.1370543713161, -36705.915003486305, -1.3358709955291173, 545.4436934125036, 513.2025672488419, 1.0628233922065098, "NaN", "NaN", 0.0020285918601881925, 0.11680305981628368, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.022313343434163316, "NaN", "NaN"], [2.0, 999999.9999999999, 273.15000000000003, 100.00000033537799, 100.0, 0.0002582681385187069, 100.0, 883.3594848541057, 0.11729472208572922, 228.14360979611376, -81467.30301148556, -149.37676582588216, 421.27189500404876, 397.48352507682154, 1.0598474362494135, "NaN", "NaN", 0.023744302354721674, 0.1414808278884662, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.11375534295689, 99.77209218509523, 0.0002654455281969518, 99.80345515615244, 883.0010628829625, "NaN", 234.38868353543782, -82451.64829129272, -149.91860123232675, 431.2019229388998, 407.3444820506406, 1.0585682191352068, "NaN", "NaN", 0.024398068123937532, 0.12860348844315703, 2.886244657043117, 0.22790781490266576, 1.7588916948835297e-05, 0.19654484384755863, 1024.224796572832, "NaN", 18.01500488385727, -48346.94142227758, -131.14557708406522, 87.15527704491856, 65.69094447696148, 1.3267472060092675, "NaN", "NaN", 0.0017469817851368697, 0.5747659235605477, "NaN", "NaN", 0.04815451333318881], [2.0, 999999.9999999999, 288.15, 100.00000033537799, 100.0, 0.00025996096524099, 100.0, 877.6071806958372, 0.11189447390796396, 228.14360979611376, -75013.04726560322, -126.37717543557825, 434.36834510080115, 409.5261655971232, 1.0606607870035751, "NaN", "NaN", 0.014557643029309232, 0.14017059784014255, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.24883363555946, 99.78275839374962, 0.0002668332482086898, 99.81144286955703, 877.2825078124845, "NaN", 234.08814115627047, -75804.33392191783, -126.37380373511178, 444.2010736491951, 419.2895873674324, 1.0594135581524287, "NaN", "NaN", 0.014937237103517718, 0.127165328785019, 2.7511663644405426, 0.21724160624999123, 1.7818457993237212e-05, 0.18855713044297806, 1011.0307004889771, "NaN", 18.01500806653603, -47042.47253315684, -126.49635904510875, 86.79889414147, 64.4065858701895, 1.3476710955679572, "NaN", "NaN", 0.0011396682209221282, 0.5998837082774274, "NaN", "NaN", 0.04452424291248391], [2.0, 999999.9999999999, 303.1499999999999, 100.00000033537799, 100.0, 0.0002617921931325238, 100.0, 871.4683469595421, 0.10708332940665267, 228.14360979611376, -68340.110050198, -103.8051209245018, 447.4579634348263, 421.5013758355442, 1.06158126423153, "NaN", "NaN", 0.009360268692122298, 0.13824299150535013, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.46755910518095, 99.80002966213809, 0.00026814404843443387, 99.82526189904262, 871.1856778616169, "NaN", 233.60325459991049, -68927.25807796046, -103.32984518568995, 456.83404672896353, 430.81051734677123, 1.0604059750965764, "NaN", "NaN", 0.00958273781863559, 0.1256703170362954, 2.532440894819047, 0.19997033786266308, 1.8064921859411786e-05, 0.17473810095738046, 997.2372303050812, "NaN", 18.015012640757526, -45742.194649089186, -122.09734099513548, 86.59506846419212, 63.214909083137755, 1.3698519814416834, "NaN", "NaN", 0.0007979670874241512, 0.6221349924716166, "NaN", "NaN", 0.041263389815093796], [1.0, 999999.9999999999, 373.15000000000003, 100.00000033537799, 100.0, 0.0002727810553225571, 100.0, 836.361636354619, 0.09053118775962661, 228.14360979611376, -34228.05872638047, -2.79512413065102, 508.04175901581215, 475.8088854327393, 1.067743319996552, "NaN", "NaN", 0.0016934131460262984, 0.1177761567787434, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0002727810553225571, 100.0, 836.361636354619, "NaN", 228.14360979611376, -34228.05872638047, -2.79512413065102, 508.04175901581215, 475.8088854327393, 1.067743319996552, "NaN", "NaN", 0.0016934131460262984, 0.1177761567787434, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 273.1499999999999, 100.00000033537799, 100.0, 0.0002571383796497003, 100.0, 887.2405982604147, 1.1679706679573074, 228.14360979611376, -79327.67505996377, -150.3016876744681, 420.17860665061033, 397.76145849985454, 1.0563582711992794, "NaN", "NaN", 0.03966511929145983, 0.1437601769041125, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.1065630434536, 99.77152425370662, 0.00026430072224026876, 99.80237717686876, 886.8863750576172, "NaN", 234.40470947278214, -80255.99832325728, -150.86854502103282, 430.10647148678197, 407.655060196125, 1.0550745310995413, "NaN", "NaN", 0.04079452458240938, 0.13091770862224833, 2.8934369565464086, 0.22847574629145315, 1.7564230268954017e-05, 0.19762282313124951, 1025.6643654521097, "NaN", 18.015005093461458, -48172.2419727625, -131.27740289221586, 86.98979103829852, 65.72254724172316, 1.3235912892778765, "NaN", "NaN", 0.0017611774623253324, 0.5747659235559812, "NaN", "NaN", 0.04797718888570141], [2.0, 9999999.999999998, 288.15, 100.00000033537799, 100.0, 0.0002586532149454227, 100.0, 882.0443613826851, 1.1134843364326101, 228.14360979611376, -72892.95664057662, -127.37167473495198, 433.127167195039, 409.8377101678062, 1.0568260471143494, "NaN", "NaN", 0.024321208078824576, 0.14266924561425137, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.23463388452855, 99.78163712790348, 0.00026552501413037305, 99.80981803081498, 881.723691289441, "NaN", 234.11969558871348, -73633.04046516806, -127.39254931458727, 442.98222483871626, 419.6608153007386, 1.0555720445838266, "NaN", "NaN", 0.02498022519567568, 0.1296660045673663, 2.7653661154714553, 0.21836287209321112, 1.7789750735764802e-05, 0.19018196918503233, 1012.6622176161235, "NaN", 18.015008430917646, -46870.442180229424, -126.6376915936328, 86.60779801179677, 64.44184165472372, 1.3439683874312158, "NaN", "NaN", 0.001149126913097989, 0.5998837082607602, "NaN", "NaN", 0.044325176845624335], [2.0, 9999999.999999998, 303.15000000000003, 100.00000033537799, 100.0, 0.0002602792785398798, 100.0, 876.5338949606693, 1.0648293086773781, 228.14360979611376, -66243.39643715923, -104.87864512541847, 446.0484996518613, 421.85121475024624, 1.0573597611089987, "NaN", "NaN", 0.015640516718387457, 0.14102866358561236, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.44128658926854, 99.79795508618685, 0.00026665929164233017, 99.8227506895311, 876.2544178507442, "NaN", 233.66138236254187, -66786.17440927819, -104.42251380910261, 455.4932013897778, 431.26762248756637, 1.0561729599882261, "NaN", "NaN", 0.01603008971304414, 0.12839527933277933, 2.5587134107314644, 0.2020449138136745, 1.803155192195296e-05, 0.17724931046890058, 999.0827922408081, "NaN", 18.015013242619872, -45573.24880993201, -122.24910253149693, 86.37403007872983, 63.25424131611804, 1.3655057476236072, "NaN", "NaN", 0.0008047427467610294, 0.622134992418564, "NaN", "NaN", 0.041038579301590376], [1.0, 9999999.999999998, 373.15000000000003, 100.00000033537799, 100.0, 0.00026980196992996676, 100.0, 845.596530875344, 0.8957097969753518, 228.14360979611376, -32266.727140755112, -4.276113242687711, 505.3978799909583, 476.38777572281543, 1.060895987988202, "NaN", "NaN", 0.0028412724539808054, 0.12186634206570002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00026980196992996676, 100.0, 845.596530875344, "NaN", 228.14360979611376, -32266.727140755112, -4.276113242687711, 505.3978799909583, 476.38777572281543, 1.060895987988202, "NaN", "NaN", 0.0028412724539808054, 0.12186634206570002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase27_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase27_I.json new file mode 100755 index 0000000000..eeaae63b0d --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase27_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 7. Gina Krog oil, Ps-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [-149.2785572360746, -126.27113696061242, -103.69012893804155, 3.5516137258291223, -149.37676582588222, -126.37717543557825, -103.80512092450174, -2.7951241306510344, -150.301687674468, -127.37167473495198, -104.87864512541853, -4.2761132426877255], "FlashMode": 3, "db": "PSCfluidsV3.nfdb", "fn": 7, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase27_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase27_O.json new file mode 100755 index 0000000000..357197186f --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase27_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[2.0, 99999.99999999999, 273.15000000000003, 100.00000033537799, 100.0, 0.0002583912254388134, 100.0, 882.9386888377051, 0.011734894225722735, 228.14360979611376, -81680.28134236409, -149.27855723607442, 421.3948964028657, 397.4533592234043, 1.0602373501792548, "NaN", "NaN", 0.022152477882326854, 0.14121754405244485, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.11452642379209, 99.7721530725693, 0.0002655702837779776, 99.80357335254811, 882.5797909828653, "NaN", 234.38696554802772, -82670.16543506729, -149.81772097565053, 431.32534581417957, 407.3108023121302, 1.0589587689934297, "NaN", "NaN", 0.02275881204276341, 0.12833592439010255, 2.8854735762079087, 0.2278469274285594, 1.7591419531178814e-05, 0.1964266474518848, 1024.0790875376463, "NaN", 18.015004861981527, -48364.38974315821, -131.13227037850135, 87.17215400556015, 65.68774362238192, 1.327068783283002, "NaN", "NaN", 0.0017454794156317574, 0.5747659235610304, "NaN", "NaN", 0.04817434103079691], [2.0, 99999.99999999999, 288.1499999999996, 100.00000033537799, 100.0, 0.00026010418772350177, 100.0, 877.1239394216789, 0.011195427605946887, 228.14360979611376, -75223.82690268122, -126.27113696061302, 434.50914959914655, 409.49219527816075, 1.0610926279168573, "NaN", "NaN", 0.013581550512047704, 0.13987915874238255, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.25036270814375, 99.78287913506637, 0.00026697657622230857, 99.81162067376745, 876.7988081214911, "NaN", 234.08474382807657, -76020.13524821211, -126.26517274216283, 444.33968785685005, 419.24917778096494, 1.0598462952478194, "NaN", "NaN", 0.013933358177982491, 0.12687308217251042, 2.7496372918562426, 0.21712086493324537, 1.782137101027538e-05, 0.18837932623255363, 1010.8654389156495, "NaN", 18.015008028380656, -47059.648427300664, -126.48208202208313, 86.81841453039341, 64.4030120084103, 1.3480489781915157, "NaN", "NaN", 0.0011386646023332225, 0.5998837082791959, "NaN", "NaN", 0.04454659688047721], [2.0, 99999.99999999999, 303.15, 100.00000033537799, 100.0, 0.00026195882958061423, 100.0, 870.9139911846555, 0.010714945965796563, 228.14360979611376, -68548.24099684866, -103.69012893804155, 447.61932437143315, 421.4630385811362, 1.062060687168091, "NaN", "NaN", 0.008732506507032866, 0.13791521570209533, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.47040197972645, 99.80025414609767, 0.0002683076755869509, 99.82553637775983, 870.6309505573471, "NaN", 233.59696663809936, -69139.67673694881, -103.21281445207603, 456.9882097524903, 430.76056722447413, 1.0608868232693842, "NaN", "NaN", 0.008938446140971548, 0.1253485147977268, 2.5295980202735584, 0.1997458539030896, 1.806831170026777e-05, 0.17446362224017448, 997.0501326494871, "NaN", 18.015012577504258, -45759.055177314745, -122.08199770333027, 86.61768819254713, 63.21091827540915, 1.3702963120256375, "NaN", "NaN", 0.0007972461444436278, 0.6221349924772731, "NaN", "NaN", 0.04128874415028008], [2.0, 99999.99999999999, 373.15, 100.00000033537799, 100.0, 0.003111089700808247, 100.0, 73.33237924218099, 0.10300364299318579, 228.14360979611376, -32261.429812009374, 3.5516137258291223, 503.9156702465327, 473.91496832147413, 1.0633039763046859, "NaN", "NaN", 0.0018355182878592165, 0.1080652969053536, 9.563811800997335, 2.4312055386279066, 0.030576069885959303, 91.73690520212419, 1.8967814844807829, 0.9857705615182909, 57.996123227878044, 9765.986409436236, 49.768069808163425, 111.22327973142015, 102.40821302210145, 1.0860777319433965, 1.2266946446165196e-05, 237.59157742718443, 9.798764439048698e-06, 0.025440294710231563, 90.43618819900267, 97.56879446137206, 0.00029125211321075466, 8.263094797875803, 845.0996343267988, "NaN", 246.1370543713161, -36705.915003486305, -1.3358709955291173, 545.4436934125036, 513.2025672488419, 1.0628233922065098, "NaN", "NaN", 0.0020285918601881925, 0.11680305981628368, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.022313343434163316, "NaN", "NaN"], [2.0, 999999.9999999999, 273.15, 100.00000033537799, 100.0, 0.0002582681385187069, 100.0, 883.3594848541057, 0.11729472208572923, 228.14360979611376, -81467.30301148558, -149.37676582588222, 421.27189500404876, 397.48352507682165, 1.0598474362494132, "NaN", "NaN", 0.023744302354721726, 0.14148082788846522, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.11375534295689, 99.77209218509523, 0.0002654455281969518, 99.80345515615244, 883.0010628829625, "NaN", 234.38868353543782, -82451.64829129273, -149.9186012323268, 431.2019229388999, 407.34448205064075, 1.0585682191352066, "NaN", "NaN", 0.024398068123937584, 0.12860348844315603, 2.8862446570431173, 0.22790781490266582, 1.7588916948835297e-05, 0.19654484384755871, 1024.224796572832, "NaN", 18.01500488385727, -48346.941422277574, -131.14557708406525, 87.15527704491844, 65.6909444769614, 1.326747206009267, "NaN", "NaN", 0.001746981785136872, 0.5747659235605479, "NaN", "NaN", 0.04815451333318885], [2.0, 999999.9999999999, 288.14999999999975, 100.00000033537799, 100.0, 0.00025996096524098994, 100.0, 877.6071806958374, 0.11189447390796403, 228.14360979611376, -75013.04726560335, -126.37717543557866, 434.3683451008006, 409.52616559712277, 1.060660787003575, "NaN", "NaN", 0.014557643029309337, 0.1401705978401438, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.24883363555945, 99.78275839374962, 0.0002668332482086897, 99.81144286955703, 877.2825078124847, "NaN", 234.0881411562705, -75804.33392191796, -126.3738037351122, 444.2010736491946, 419.289587367432, 1.0594135581524284, "NaN", "NaN", 0.014937237103517825, 0.12716532878502027, 2.75116636444055, 0.21724160624999178, 1.7818457993237205e-05, 0.1885571304429786, 1011.0307004889773, "NaN", 18.01500806653603, -47042.4725331569, -126.49635904510889, 86.79889414146996, 64.40658587018947, 1.3476710955679572, "NaN", "NaN", 0.0011396682209221358, 0.5998837082774269, "NaN", "NaN", 0.04452424291248397], [2.0, 999999.9999999999, 303.15000000000003, 100.00000033537799, 100.0, 0.000261792193132524, 100.0, 871.4683469595417, 0.10708332940665267, 228.14360979611376, -68340.11005019797, -103.80512092450167, 447.45796343482635, 421.5013758355441, 1.0615812642315305, "NaN", "NaN", 0.009360268692122281, 0.13824299150535024, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.46755910518097, 99.8000296621381, 0.000268144048434434, 99.82526189904262, 871.1856778616165, "NaN", 233.60325459991049, -68927.25807796043, -103.32984518568982, 456.8340467289636, 430.8105173467712, 1.0604059750965769, "NaN", "NaN", 0.009582737818635572, 0.12567031703629555, 2.5324408948190382, 0.19997033786266238, 1.8064921859411783e-05, 0.17473810095737977, 997.2372303050814, "NaN", 18.015012640757526, -45742.19464908919, -122.09734099513553, 86.59506846419194, 63.214909083137584, 1.369851981441684, "NaN", "NaN", 0.0007979670874241493, 0.6221349924716171, "NaN", "NaN", 0.04126338981509382], [1.0, 999999.9999999999, 373.15, 100.00000033537799, 100.0, 0.0002727810553225571, 100.0, 836.361636354619, 0.09053118775962662, 228.14360979611376, -34228.058726380485, -2.7951241306510344, 508.0417590158122, 475.8088854327394, 1.067743319996552, "NaN", "NaN", 0.001693413146026301, 0.1177761567787434, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.0002727810553225571, 100.0, 836.361636354619, "NaN", 228.14360979611376, -34228.058726380485, -2.7951241306510344, 508.0417590158122, 475.8088854327394, 1.067743319996552, "NaN", "NaN", 0.001693413146026301, 0.1177761567787434, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 273.15, 100.00000033537799, 100.0, 0.0002571383796497003, 100.0, 887.2405982604147, 1.1679706679573072, 228.14360979611376, -79327.67505996376, -150.301687674468, 420.1786066506104, 397.7614584998546, 1.0563582711992794, "NaN", "NaN", 0.03966511929145975, 0.14376017690411177, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.1065630434536, 99.77152425370662, 0.00026430072224026876, 99.80237717686876, 886.8863750576172, "NaN", 234.40470947278214, -80255.99832325727, -150.86854502103273, 430.106471486782, 407.6550601961251, 1.0550745310995413, "NaN", "NaN", 0.0407945245824093, 0.13091770862224758, 2.8934369565464078, 0.2284757462914531, 1.7564230268954014e-05, 0.1976228231312494, 1025.66436545211, "NaN", 18.015005093461458, -48172.24197276252, -131.2774028922159, 86.98979103829832, 65.72254724172306, 1.3235912892778758, "NaN", "NaN", 0.0017611774623253304, 0.5747659235559814, "NaN", "NaN", 0.04797718888570141], [2.0, 9999999.999999998, 288.1499999999997, 100.00000033537799, 100.0, 0.0002586532149454227, 100.0, 882.0443613826851, 1.1134843364326112, 228.14360979611376, -72892.95664057671, -127.37167473495236, 433.12716719503885, 409.83771016780605, 1.0568260471143494, "NaN", "NaN", 0.024321208078824798, 0.14266924561425237, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.23463388452855, 99.78163712790348, 0.00026552501413037305, 99.80981803081498, 881.723691289441, "NaN", 234.11969558871348, -73633.04046516815, -127.39254931458767, 442.9822248387161, 419.6608153007384, 1.0555720445838266, "NaN", "NaN", 0.024980225195675908, 0.1296660045673673, 2.765366115471459, 0.2183628720932114, 1.778975073576481e-05, 0.19018196918503258, 1012.6622176161231, "NaN", 18.015008430917646, -46870.44218022943, -126.63769159363285, 86.60779801179689, 64.4418416547238, 1.3439683874312156, "NaN", "NaN", 0.0011491269130979981, 0.5998837082607594, "NaN", "NaN", 0.04432517684562436], [2.0, 9999999.999999998, 303.1499999999966, 100.00000033537799, 100.0, 0.00026027927853987945, 100.0, 876.5338949606703, 1.0648293086773888, 228.14360979611376, -66243.3964371608, -104.87864512542353, 446.0484996518584, 421.85121475024346, 1.0573597611089987, "NaN", "NaN", 0.015640516718388935, 0.1410286635856126, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 97.44128658926847, 99.79795508618685, 0.0002666592916423301, 99.8227506895311, 876.2544178507452, "NaN", 233.661382362542, -66786.17440927982, -104.4225138091078, 455.4932013897752, 431.2676224875638, 1.0561729599882261, "NaN", "NaN", 0.016030089713045665, 0.1283952793327794, 2.558713410731529, 0.20204491381367956, 1.8031551921952904e-05, 0.17724931046890474, 999.082792240811, "NaN", 18.015013242619872, -45573.248809932295, -122.24910253149785, 86.37403007873, 63.25424131611837, 1.3655057476236028, "NaN", "NaN", 0.0008047427467610891, 0.622134992418559, "NaN", "NaN", 0.04103857930159106], [1.0, 9999999.999999998, 373.15000000000003, 100.00000033537799, 100.0, 0.00026980196992996676, 100.0, 845.596530875344, 0.8957097969753518, 228.14360979611376, -32266.727140755112, -4.276113242687711, 505.3978799909583, 476.38777572281543, 1.060895987988202, "NaN", "NaN", 0.0028412724539808054, 0.12186634206570002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 0.00026980196992996676, 100.0, 845.596530875344, "NaN", 228.14360979611376, -32266.727140755112, -4.276113242687711, 505.3978799909583, 476.38777572281543, 1.060895987988202, "NaN", "NaN", 0.0028412724539808054, 0.12186634206570002, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase28_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase28_I.json new file mode 100755 index 0000000000..9185556bf2 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase28_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 3. water + MEG, PT-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15], "FlashMode": 1, "db": "PSCfluidsV3.nfdb", "fn": 8, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase28_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase28_O.json new file mode 100755 index 0000000000..35e37a5843 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase28_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 273.15, 100.0, 100.0, 2.42449082939481e-05, 100.0, 1106.4508751594715, 0.001382015178709005, 26.825800000000005, -50916.882616766416, -129.10564023208386, 102.89576824631658, 81.15377984807456, 1.267910976407316, "NaN", "NaN", 0.006845178189118842, 0.44953855051809877, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.42449082939481e-05, 100.0, 1106.4508751594715, "NaN", 26.825800000000005, -50916.882616766416, -129.10564023208386, 102.89576824631658, 81.15377984807456, 1.267910976407316, "NaN", "NaN", 0.006845178189118842, 0.44953855051809877, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 288.15, 100.0, 100.0, 2.4540587350211638e-05, 100.0, 1093.1197211043386, 0.0013224141868101618, 26.825800000000005, -49373.228368688535, -123.60406074305025, 102.94962902676028, 80.26379549891472, 1.2826409265451733, "NaN", "NaN", 0.0038654007492106603, 0.4577450379626216, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.4540587350211638e-05, 100.0, 1093.1197211043386, "NaN", 26.825800000000005, -49373.228368688535, -123.60406074305025, 102.94962902676028, 80.26379549891472, 1.2826409265451733, "NaN", "NaN", 0.0038654007492106603, 0.4577450379626216, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.15, 100.0, 100.0, 2.4858052613682645e-05, 100.0, 1079.1593539887454, 0.0012695757138561437, 26.825800000000005, -47827.66700698531, -118.3753092093566, 103.14894934084671, 79.45938799307439, 1.2981342034730634, "NaN", "NaN", 0.0023828116437630445, 0.46442500945638054, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.4858052613682645e-05, 100.0, 1079.1593539887454, "NaN", 26.825800000000005, -47827.66700698531, -118.3753092093566, 103.14894934084671, 79.45938799307439, 1.2981342034730634, "NaN", "NaN", 0.0023828116437630445, 0.46442500945638054, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 373.15, 100.0, 100.0, 2.6702055664550053e-05, 100.0, 1004.6342625078952, 0.0010908485542034244, 26.825800000000005, -40527.600286675275, -96.71940746140112, 105.94347179631608, 76.49749347225546, 1.3849273615055147, "NaN", "NaN", 0.0005635777732110215, 0.47541427663382324, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.6702055664550053e-05, 100.0, 1004.6342625078952, "NaN", 26.825800000000005, -40527.600286675275, -96.71940746140112, 105.94347179631608, 76.49749347225546, 1.3849273615055147, "NaN", "NaN", 0.0005635777732110215, 0.47541427663382324, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 273.15, 100.0, 100.0, 2.4240820397823042e-05, 100.0, 1106.6374635740096, 0.01381835182031439, 26.825800000000005, -50893.30922178426, -129.12274789588741, 102.87410444476437, 81.15801899907106, 1.2675778156431081, "NaN", "NaN", 0.006852810645611356, 0.44953855051809877, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.4240820397823042e-05, 100.0, 1106.6374635740096, "NaN", 26.825800000000005, -50893.30922178426, -129.12274789588741, 102.87410444476437, 81.15801899907106, 1.2675778156431081, "NaN", "NaN", 0.006852810645611356, 0.44953855051809877, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.15, 100.0, 100.0, 2.4535830759134778e-05, 100.0, 1093.3316366315685, 0.013222156490879888, 26.825800000000005, -49350.00447091393, -123.62241321771297, 102.92460719536476, 80.26852983034406, 1.2822535483446214, "NaN", "NaN", 0.0038698193047431674, 0.4577450379626216, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.4535830759134778e-05, 100.0, 1093.3316366315685, "NaN", 26.825800000000005, -49350.00447091393, -123.62241321771297, 102.92460719536476, 80.26852983034406, 1.2822535483446214, "NaN", "NaN", 0.0038698193047431674, 0.4577450379626216, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.15, 100.0, 100.0, 2.4852520187427515e-05, 100.0, 1079.39958594504, 0.012693562192243539, 26.825800000000005, -47804.84710730343, -118.3950276094116, 103.12000056023162, 79.4646754691509, 1.2976835298379086, "NaN", "NaN", 0.002385607147299766, 0.46442500945638054, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.4852520187427515e-05, 100.0, 1079.39958594504, "NaN", 26.825800000000005, -47804.84710730343, -118.3950276094116, 103.12000056023162, 79.4646754691509, 1.2976835298379086, "NaN", "NaN", 0.002385607147299766, 0.46442500945638054, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 373.15, 100.0, 100.0, 2.6690716161323146e-05, 100.0, 1005.0610795851408, 0.010904830634240841, 26.825800000000005, -40507.729038317055, -96.74776943613526, 105.88393787820462, 76.50645700866363, 1.3839869472221706, "NaN", "NaN", 0.0005643446007043068, 0.47541427663382324, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.6690716161323146e-05, 100.0, 1005.0610795851408, "NaN", 26.825800000000005, -40507.729038317055, -96.74776943613526, 105.88393787820462, 76.50645700866363, 1.3839869472221706, "NaN", "NaN", 0.0005643446007043068, 0.47541427663382324, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 273.15, 100.0, 100.0, 2.4200639816041506e-05, 100.0, 1108.4748256208663, 0.1380065966033263, 26.825800000000005, -50657.22446487245, -129.29180751795064, 102.66275226638498, 81.19973114554037, 1.264323795387633, "NaN", "NaN", 0.006923238282860448, 0.44953855051809877, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.4200639816041506e-05, 100.0, 1108.4748256208663, "NaN", 26.825800000000005, -50657.22446487245, -129.29180751795064, 102.66275226638498, 81.19973114554037, 1.264323795387633, "NaN", "NaN", 0.006923238282860448, 0.44953855051809877, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 288.15, 100.0, 100.0, 2.44891343020434e-05, 100.0, 1095.4164271034126, 0.13202665624259943, 26.825800000000005, -49117.325972850296, -123.80360508499473, 102.68098275204719, 80.31506547101324, 1.2784772340017092, "NaN", "NaN", 0.00391048765489719, 0.4577450379626216, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.44891343020434e-05, 100.0, 1095.4164271034126, "NaN", 26.825800000000005, -49117.325972850296, -123.80360508499473, 102.68098275204719, 80.31506547101324, 1.2784772340017092, "NaN", "NaN", 0.00391048765489719, 0.4577450379626216, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 303.15, 100.0, 100.0, 2.4798280313961796e-05, 100.0, 1081.7604955008387, 0.12672042951849388, 26.825800000000005, -47576.09772642139, -118.5895040230085, 102.83876778995952, 79.51658802016826, 1.2932995535959857, "NaN", "NaN", 0.002411267301121292, 0.46442500945638054, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.4798280313961796e-05, 100.0, 1081.7604955008387, "NaN", 26.825800000000005, -47576.09772642139, -118.5895040230085, 102.83876778995952, 79.51658802016826, 1.2932995535959857, "NaN", "NaN", 0.002411267301121292, 0.46442500945638054, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 373.15, 100.0, 100.0, 2.6580517082714455e-05, 100.0, 1009.2279212071861, 0.10869311664567033, 26.825800000000005, -40307.4118616321, -97.02561174707682, 105.31397626532265, 76.59380819677293, 1.3749672296586473, "NaN", "NaN", 0.0005712807704255099, 0.47541427663382324, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 2.6580517082714455e-05, 100.0, 1009.2279212071861, "NaN", 26.825800000000005, -40307.4118616321, -97.02561174707682, 105.31397626532265, 76.59380819677293, 1.3749672296586473, "NaN", "NaN", 0.0005712807704255099, 0.47541427663382324, "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase29_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase29_I.json new file mode 100755 index 0000000000..aeb9c4184d --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase29_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 9. seawater, Ph-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0, 10000000.0, 10000000.0, 10000000.0, 10000000.0], "Sp2": [-48364.40081647616, -47059.66663132147, -45759.08363051543, -39678.555180322466, -48346.95254606981, -47042.49082448124, -45742.223246056965, -39664.01141983327, -48172.25358096513, -46870.46130647698, -45573.27877640116, -39517.56672849729], "FlashMode": 2, "db": "PSCfluidsV3.nfdb", "fn": 9, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase29_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase29_O.json new file mode 100755 index 0000000000..18ee674e70 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase29_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 273.1499999999997, 100.0, 100.0, 1.7160440190853073e-05, 100.0, 1049.798245245622, 0.0010315222836450209, 18.015, -48364.40081647616, -131.1323100049044, 72.95824591285385, 51.47383734867997, 1.4173850186967816, "NaN", "NaN", 0.0017454769204656737, 0.5747659236749996, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7160440190853073e-05, 100.0, 1049.798245245622, "NaN", 18.015, -48364.40081647616, -131.1323100049044, 72.95824591285385, 51.47383734867997, 1.4173850186967816, "NaN", "NaN", 0.0017454769204656737, 0.5747659236749996, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 291.1538056545128, 100.0, 100.0, 1.7438427648502115e-05, 100.0, 1033.0633221709877, 0.0009792203538795047, 18.015, -47059.66663132148, -126.50619400820487, 72.0159870091138, 49.407144033670306, 1.457602709438859, "NaN", "NaN", 0.0010546890581741954, 0.6045691491411285, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7438427648502115e-05, 100.0, 1033.0633221709877, "NaN", 18.015, -47059.66663132148, -126.50619400820487, 72.0159870091138, 49.407144033670306, 1.457602709438859, "NaN", "NaN", 0.0010546890581741954, 0.6045691491411285, "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 309.3117906690498, 100.0, 100.0, 1.7744081762994444e-05, 100.0, 1015.2680899820107, 0.0009336207527966662, 18.015, -45759.08363051543, -122.17272987409099, 71.26920850829399, 47.43583134269833, 1.5024340565133631, "NaN", "NaN", 0.0007008184531461918, 0.6304448979077962, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7744081762994444e-05, 100.0, 1015.2680899820107, "NaN", 18.015, -45759.08363051543, -122.17272987409099, 71.26920850829399, 47.43583134269833, 1.5024340565133631, "NaN", "NaN", 0.0007008184531461918, 0.6304448979077962, "NaN", "NaN", "NaN"], [2.0, 99999.99999999999, 375.2374321020503, 100.0, 100.0, 0.0008030509537371904, 100.0, 22.43319669338897, 0.03389194317706978, 18.015, -39678.55518032246, -104.72938472789704, 68.45592747300739, 39.81968872460638, 1.7191477298190276, "NaN", "NaN", 0.0002672703857897258, 0.666566883946342, 3.3379688956767883, 3.337968628673367, 0.030936194811355084, 98.24123303976782, 0.5823275509104178, 0.9917781638747027, 18.014998558983983, 1756.7049642110687, 5.694727855024462, 16.870670857554636, 8.312808008007575, 2.0294791893790194, 4.213623874839649e-05, 587.9581348132975, 1.0814813637683136e-05, 0.014607737251576379, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 96.6620311043232, 96.6620311043232, 1.912527799904284e-05, 1.7587669602321796, 941.9470922671866, "NaN", 18.015, -41109.41286008151, -108.54259089502897, 70.23728857302451, 40.90769594554198, 1.7169700456003998, "NaN", "NaN", 0.00027612640415791657, 0.6890805775658192, "NaN", 0.05829284136154852, "NaN"], [1.0, 999999.9999999999, 273.14999999999975, 100.0, 100.0, 1.715793759735187e-05, 100.0, 1049.951364946123, 0.010314120904058255, 18.015, -48346.95254606982, -131.14561687607167, 72.94136898502583, 51.47703823252401, 1.4169690310376155, "NaN", "NaN", 0.0017469792695166174, 0.5747659236749997, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.715793759735187e-05, 100.0, 1049.951364946123, "NaN", 18.015, -48346.95254606982, -131.14561687607167, 72.94136898502583, 51.47703823252401, 1.4169690310376155, "NaN", "NaN", 0.0017469792695166174, 0.5747659236749997, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 291.1546321411437, 100.0, 100.0, 1.7435438104054626e-05, 100.0, 1033.2404550138947, 0.009790940798455935, 18.015, -47042.49082448124, -126.52047236861254, 71.99584669716934, 49.41070561305767, 1.457090033503653, "NaN", "NaN", 0.0010556014113413277, 0.6045704225051556, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7435438104054626e-05, 100.0, 1033.2404550138947, "NaN", 18.015, -47042.49082448124, -126.52047236861254, 71.99584669716934, 49.41070561305767, 1.457090033503653, "NaN", "NaN", 0.0010556014113413277, 0.6045704225051556, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 309.31380802151125, 100.0, 100.0, 1.774050924789406e-05, 100.0, 1015.4725407411022, 0.009334757514288217, 18.015, -45742.22324605698, -122.18807826396935, 71.24508856355136, 47.43979433870716, 1.5018001143698245, "NaN", "NaN", 0.0007014306809863893, 0.6304475393381997, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.774050924789406e-05, 100.0, 1015.4725407411022, "NaN", 18.015, -45742.22324605698, -122.18807826396935, 71.24508856355136, 47.43979433870716, 1.5018001143698245, "NaN", "NaN", 0.0007014306809863893, 0.6304475393381997, "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 395.595376934287, 100.0, 100.0, 1.9655291187836207e-05, 100.0, 916.5470929857651, 0.007880943315173776, 18.015, -39664.011419833245, -104.85142890377949, 70.44250318730639, 39.01313653585222, 1.8056098392030404, "NaN", "NaN", 0.00023170716684238642, 0.6959981055611645, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.9655291187836207e-05, 100.0, 916.5470929857651, "NaN", 18.015, -39664.011419833245, -104.85142890377949, 70.44250318730639, 39.01313653585222, 1.8056098392030404, "NaN", "NaN", 0.00023170716684238642, 0.6959981055611645, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 273.15000000000015, 100.0, 100.0, 1.7133250811843215e-05, 100.0, 1051.4642082719809, 0.10303250913149961, 18.015, -48172.253580965116, -131.27744426546116, 72.77588329822689, 51.50864127667987, 1.4128868767341296, "NaN", "NaN", 0.0017611747611472372, 0.5747659236750005, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7133250811843215e-05, 100.0, 1051.4642082719809, "NaN", 18.015, -48172.253580965116, -131.27744426546116, 72.77588329822689, 51.50864127667987, 1.4128868767341296, "NaN", "NaN", 0.0017611747611472372, 0.5747659236750005, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 291.16274614011706, 100.0, 100.0, 1.7405979720372646e-05, 100.0, 1034.9891410544694, 0.09778499395379499, 18.015, -46870.461306476995, -126.66181796123324, 71.79873171365195, 49.44584048690898, 1.4520681822096038, "NaN", "NaN", 0.0010641848806858742, 0.6045829232427431, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7405979720372646e-05, 100.0, 1034.9891410544694, "NaN", 18.015, -46870.461306476995, -126.66181796123324, 71.79873171365195, 49.44584048690898, 1.4520681822096038, "NaN", "NaN", 0.0010641848806858742, 0.6045829232427431, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 309.3335854819703, 100.0, 100.0, 1.7705349013707303e-05, 100.0, 1017.4891207201264, 0.0932048999715525, 18.015, -45573.27877640116, -122.33988963027485, 71.00952575934271, 47.478853214548515, 1.4956032202054936, "NaN", "NaN", 0.0007071639463905212, 0.630473432307917, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.7705349013707303e-05, 100.0, 1017.4891207201264, "NaN", 18.015, -45573.27877640116, -122.33988963027485, 71.00952575934271, 47.478853214548515, 1.4956032202054936, "NaN", "NaN", 0.0007071639463905212, 0.630473432307917, "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 395.7611870423121, 100.0, 100.0, 1.9572955105013753e-05, 100.0, 920.4026629267304, 0.07852619427858332, 18.015, -39517.56672849729, -105.06998368757982, 69.8598469401158, 39.07702779206713, 1.787747197966212, "NaN", "NaN", 0.0002338046288355779, 0.6960327696047175, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 100.0, 100.0, 1.9572955105013753e-05, 100.0, 920.4026629267304, "NaN", 18.015, -39517.56672849729, -105.06998368757982, 69.8598469401158, 39.07702779206713, 1.787747197966212, "NaN", "NaN", 0.0002338046288355779, 0.6960327696047175, "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase2_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase2_I.json new file mode 100755 index 0000000000..9c866089e7 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase2_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 1. Gas fraction no 2. PT-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [288.15, 288.15, 288.15, 288.15, 303.15, 303.15, 303.15, 303.15, 423.15, 423.15, 423.15, 423.15], "FlashMode": 1, "db": "PSCfluidsV3.nfdb", "fn": 1, "components": ["H2O", "N2", "CO2", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6"], "fractions": [0.054, 0.454, 1.514, 89.92, 5.324, 1.535, 0.232, 0.329, 0.094, 0.107, 0.437]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase2_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase2_O.json new file mode 100755 index 0000000000..f4e990c474 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase2_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 288.15, 100.00000000000004, 100.0, 0.02389671935469192, 100.0, 0.7680798283466566, 0.9974802292651115, 18.354588099999997, 539.462564024519, 6.0316576627778264, 37.87466418185141, 29.45187781088232, 1.2859846976499716, "NaN", "NaN", 1.0835404130241557e-05, 0.031137624775171305, 100.0, 100.0, 0.02389671935469192, 100.0, 0.7680798283466566, 0.9974802292651115, 18.354588099999997, 539.462564024519, 6.0316576627778264, 37.87466418185141, 29.45187781088232, 1.2859846976499716, 5.701036508069931e-06, 408.67342494699926, 1.0835404130241557e-05, 0.031137624775171305, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.15, 100.00000000000004, 100.0, 0.0023345726943932387, 100.0, 7.862076063889885, 0.9748705896289085, 18.354588099999997, 342.91079147172974, -13.60689773746144, 39.08722861583175, 29.619464690805092, 1.3196466926009562, "NaN", "NaN", 1.1011431187818198e-05, 0.03243612533892354, 100.0, 100.0, 0.0023345726943932387, 100.0, 7.862076063889885, 0.9748705896289085, 18.354588099999997, 342.91079147172974, -13.60689773746144, 39.08722861583175, 29.619464690805092, 1.3196466926009562, 5.650315484546831e-06, 404.62241066822514, 1.1011431187818198e-05, 0.03243612533892354, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 288.15, 100.00000000000004, 100.0, 0.00018701390043145483, 100.0, 98.14558200034655, 0.7849752192607878, 18.354588099999997, -1791.128333586829, -38.36894523634828, 58.98368770174731, 31.591472021009043, 1.8670762686373659, "NaN", "NaN", 1.493250364578916e-05, 0.044467398515261464, 99.96762197579969, 99.968220548748, 0.00018708592923721834, 99.99692028656025, 98.10838300891064, 0.7851975224384898, 18.35469800118297, -1776.5280105062254, -38.34035688652894, 58.97474074817077, 31.580832393391734, 1.8674219860180503, 3.866553020814561e-06, 405.10563787406534, 1.4565127289878382e-05, 0.044287507477834366, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.032378024200319856, 0.03177945125214681, 1.7789913106237104e-05, 0.00307971343974606, 1012.6674867425859, "NaN", 18.015266594662116, -46869.8388014076, -126.63589228568999, 86.6075373672166, 64.44147747625014, 1.3439719379360247, "NaN", "NaN", 0.001149212360974847, 0.5998836004145842, "NaN", 0.041328596267941387, "NaN"], [2.0, 19999999.999999996, 288.15, 100.00000000000004, 100.0, 9.272396122013293e-05, 100.0, 197.94870558242187, 0.7827521360183122, 18.354588099999997, -3380.93371498231, -48.295884632137614, 66.55587047640888, 33.45619347584742, 1.98934378247354, "NaN", "NaN", 2.2452453415961245e-05, 0.06219574794431526, 99.96440451352653, 99.96506245658131, 9.275884414064659e-05, 99.99318318868691, 197.87556729262923, 0.7829607247272169, 18.354708905739024, -3365.5164276330197, -48.26793447786847, 66.54880309330197, 33.445146622349284, 1.9897895453934593, 1.375012744223602e-06, 514.7210950565528, 2.2047642182513554e-05, 0.062004287205843056, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.03559548647346959, 0.034937543418771436, 1.775892437955186e-05, 0.006816811313090684, 1014.437785107209, "NaN", 18.01532391347901, -46677.99471271321, -126.78955909446104, 86.40352010124616, 64.47956865889947, 1.3400139284170094, "NaN", "NaN", 0.001159302034672442, 0.5998835450575555, "NaN", 0.01931412022535365, "NaN"], [1.0, 99999.99999999999, 303.15, 100.00000000000004, 100.0, 0.02515151568940487, 100.0, 0.7297607160801012, 0.9979075046371167, 18.354588099999997, 1112.893893353763, 7.9714817066138055, 38.59032980085448, 30.17982339102826, 1.278679775585647, "NaN", "NaN", 1.1329778674133788e-05, 0.033056735173842465, 100.0, 100.0, 0.02515151568940487, 100.0, 0.7297607160801012, 0.9979075046371167, 18.354588099999997, 1112.893893353763, 7.9714817066138055, 38.59032980085448, 30.17982339102826, 1.278679775585647, 5.127809603757868e-06, 418.16247777783155, 1.1329778674133788e-05, 0.033056735173842465, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.15, 100.00000000000004, 100.0, 0.002467130392438594, 100.0, 7.439650598223026, 0.9792247663469871, 18.354588099999997, 933.4211580346409, -11.609262786518181, 39.65950691289001, 30.334430171739204, 1.3074089965875946, "NaN", "NaN", 1.1495984827887283e-05, 0.03429762428758919, 100.0, 100.0, 0.002467130392438594, 100.0, 7.439650598223026, 0.9792247663469871, 18.354588099999997, 933.4211580346409, -11.609262786518181, 39.65950691289001, 30.334430171739204, 1.3074089965875946, 5.065987054556399e-06, 414.95506816249224, 1.1495984827887283e-05, 0.03429762428758919, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 303.15, 100.00000000000004, 100.0, 0.00020787606398890645, 100.0, 88.29582275032641, 0.8288378105209028, 18.354588099999997, -924.3667661151161, -35.43592456970695, 55.12320032210061, 32.06125501343619, 1.7193088760561508, "NaN", "NaN", 1.4591258183491398e-05, 0.04483577470872423, 99.99878804191941, 99.99881044087485, 0.00020787907960949947, 99.99989487151556, 88.29456165461626, 0.8288467081782087, 18.354592211285834, -923.8256440723867, -35.43487244760282, 55.12282157464319, 32.060876969001086, 1.719317335827718, 3.562345414086222e-06, 417.15113470654427, 1.4581680768951971e-05, 0.044828778003129906, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.0012119580805919565, 0.0011895591258421776, 1.803178760660682e-05, 0.00010512848443109946, 999.0892682918917, "NaN", 18.01536548587961, -45572.40313159269, -122.24662946897317, 86.37369266268895, 63.25374091009355, 1.3655112159367337, "NaN", "NaN", 0.0008048247339569087, 0.6221346853912811, "NaN", 0.04158217012531029, "NaN"], [2.0, 19999999.999999996, 303.15, 100.00000000000004, 100.0, 0.00010246609324201471, 100.0, 179.12840744936264, 0.821283477086638, 18.354588099999997, -2394.479515975254, -44.958097561053, 63.74669798460157, 33.754548182470366, 1.8885365503931386, "NaN", "NaN", 2.091900224801337e-05, 0.059969915928528086, 99.98775526744183, 99.98798149759583, 0.00010247958307171208, 99.99784955348852, 179.10523324293766, 0.8213608960786661, 18.354629628697996, -2389.2149548542043, -44.948612492916084, 63.74395583826329, 33.75093045622459, 1.8886577340716593, 1.4758907974771215e-06, 506.7204499997426, 2.082211775757837e-05, 0.059901071947236845, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.012244732558177429, 0.012018502404719689, 1.7995870054069653e-05, 0.0021504465114655417, 1001.0893588620439, "NaN", 18.015474014593245, -45383.71153561685, -122.41104862086507, 86.13845343345423, 63.29609388534817, 1.3608810298702119, "NaN", "NaN", 0.0008120561441005915, 0.6221345136671633, "NaN", 0.021005383290437444, "NaN"], [1.0, 99999.99999999999, 423.15, 100.00000000000004, 100.0, 0.03516753103721898, 100.0, 0.5219185867945839, 0.9995997706265624, 18.354588099999997, 6142.778161250214, 21.885951485212225, 45.53949602757567, 37.182281065927405, 1.2247633744371467, "NaN", "NaN", 1.4979089478035634e-05, 0.05059788441118812, 100.0, 100.0, 0.03516753103721898, 100.0, 0.5219185867945839, 0.9995997706265624, 18.354588099999997, 6142.778161250214, 21.885951485212225, 45.53949602757567, 37.182281065927405, 1.2247633744371467, 2.292224104719804e-06, 484.33357576863693, 1.4979089478035634e-05, 0.05059788441118812, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.15, 100.00000000000004, 100.0, 0.00350374338129561, 100.0, 5.238565186589909, 0.9961665629813119, 18.354588099999997, 6049.419389419726, 2.5498862900294057, 46.01933469594806, 37.27447228655383, 1.2346072760511972, "NaN", "NaN", 1.5092520701019703e-05, 0.05153130274528853, 100.0, 100.0, 0.00350374338129561, 100.0, 5.238565186589909, 0.9961665629813119, 18.354588099999997, 6049.419389419726, 2.5498862900294057, 46.01933469594806, 37.27447228655383, 1.2346072760511972, 2.2394613735210357e-06, 484.65134191173684, 1.5092520701019703e-05, 0.05153130274528853, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.15, 100.00000000000004, 100.0, 0.00034368360559238837, 100.0, 53.40548050979391, 0.9797950169038023, 18.354588099999997, 5199.989995428084, -18.382157287795454, 50.78933772016513, 38.17260116889275, 1.3305181246478401, "NaN", "NaN", 1.6706717145679303e-05, 0.057771219165430085, 100.0, 100.0, 0.00034368360559238837, 100.0, 53.40548050979391, 0.9797950169038023, 18.354588099999997, 5199.989995428084, -18.382157287795454, 50.78933772016513, 38.17260116889275, 1.3305181246478401, 1.6566259277307373e-06, 500.04633187937566, 1.6706717145679303e-05, 0.057771219165430085, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.15, 100.00000000000004, 100.0, 0.00017492063570190451, 100.0, 104.93094783441924, 1.0002365611541848, 18.354588099999997, 4493.518276155737, -25.732489930348898, 54.85024849654587, 39.05548639229047, 1.4044185225503498, "NaN", "NaN", 1.9264929085637855e-05, 0.06461904698955528, 100.0, 100.0, 0.00017492063570190451, 100.0, 104.93094783441924, 1.0002365611541848, 18.354588099999997, 4493.518276155737, -25.732489930348898, 54.85024849654587, 39.05548639229047, 1.4044185225503498, 1.039003682917465e-06, 540.1675902600854, 1.9264929085637855e-05, 0.06461904698955528, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase3_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase3_I.json new file mode 100755 index 0000000000..b8a2ea9903 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase3_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 1. Gas fraction no 1. Ph-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [227.14145115814034, -2452.9978862139883, -7062.23369532918, -8225.333008973517, 1447.4182999512047, -865.4232089374184, -5488.955725868559, -6905.05001543502, 8289.55727103074, 8084.167646765936, 6082.544087877029, 4472.772759295913], "FlashMode": 2, "db": "PSCfluidsV3.nfdb", "fn": 1, "components": ["H2O", "N2", "CO2", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6"], "fractions": [2.18, 0.48, 1.77, 62.88, 12.36, 9.58, 2.21, 2.47, 0.98, 0.46, 4.63]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase3_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase3_O.json new file mode 100755 index 0000000000..dcb26f7a1c --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase3_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[2.0, 99999.99999999999, 288.1484491620461, 100.00000000000004, 100.0, 0.02353257723948786, 100.0, 1.150926769489249, 0.9844372329028152, 27.084273099999994, 227.1414511470457, 12.209417238486852, 50.357239377097414, 41.696544415433685, 1.2077077389285533, "NaN", "NaN", 2.094473550437226e-05, 0.031186820598989494, 99.02675070717963, 99.35264677647909, 0.023813975164403367, 99.99926450969326, 1.1410697706124837, 0.9941027204683699, 27.173407178217136, 691.884267098956, 13.572502210877966, 49.998893348822435, 41.47338066619896, 1.2055658966227418, 8.873612593083873e-06, 324.0977218362977, 9.959179007691771e-06, 0.02559760903825142, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.9732492928203674, 0.6473532235253305, 1.782134493953467e-05, 0.0007354903067301444, 1010.8667836199222, "NaN", 18.01500563880859, -47059.78833932419, -126.48256717849166, 86.81844522710084, 64.40314294612017, 1.3480467141135233, "NaN", "NaN", 0.0011387097034335125, 0.5998812588666697, "NaN", 0.07705301230841415, "NaN"], [3.0, 999999.9999999999, 288.13077309697775, 100.00000000000004, 100.0, 0.0020309993869357425, 100.0, 13.335441297627973, 0.8695266395781583, 27.084273099999994, -2452.997886196729, -15.118237277168374, 55.96091381063576, 44.054323257372516, 1.2702706493458769, "NaN", "NaN", 5.1085588121849143e-05, 0.04560463736529122, 90.71304614141197, 80.09436968815163, 0.0022840683635015364, 99.59746955941722, 10.469846706880519, 0.954230733918191, 23.91384563389654, 305.17668242238153, -8.394143216737637, 47.09384972077849, 36.87359241559016, 1.2771701002169566, 7.88156397254901e-06, 341.1786908646854, 1.0534638788165268e-05, 0.028415479410784913, 7.224141300311436, 18.533554083389213, 0.00011082802651647027, 0.3848622258258378, 626.9603296253655, "NaN", 69.48477603649495, -24354.49108089869, -67.74728365069682, 158.49832968211288, 128.41036144722605, 1.2343110625636884, "NaN", "NaN", 0.0002492754336542395, 0.1031851420460654, 2.0628125582765966, 1.3720762284856565, 1.7818184329883447e-05, 0.017668214756959084, 1011.0490147839322, "NaN", 18.01505771196716, -47044.027261995376, -126.50178802110693, 86.79920439719223, 64.40810120643214, 1.3476442057963354, "NaN", "NaN", 0.0011402532299209247, 0.5998533363635106, 0.014960057893924359, 0.07327996602041753, 0.051846437941704356], [3.0, 9999999.999999998, 287.7903061259826, 100.00000000000004, 100.0, 0.00012239911844648619, 100.0, 221.2783347115481, 0.5300287649014662, 27.084273099999994, -7062.233695329165, -45.02135113846236, 92.39563730404532, 48.23172381892639, 1.9156611041090092, "NaN", "NaN", 6.0746029031378434e-05, 0.0732844333881621, 55.27226409935001, 43.73196787521726, 0.00015843812474872397, 70.58598394948069, 135.25373172680128, 0.6684928868692956, 21.42934762006139, -2886.3704133706906, -37.9450705282522, 81.13710914755559, 36.329154912763315, 2.2333882894438086, 4.31786690022264e-06, 363.39321503605004, 1.634788236692493e-05, 0.04499221007280338, 42.56925569920687, 54.83230264216127, 8.482309407755144e-05, 29.104603801820478, 411.2855974546406, "NaN", 34.88651692563693, -10464.183037317165, -50.06550213568799, 107.30691418146601, 62.86270080575508, 1.7070045162876946, "NaN", "NaN", 6.265361920132144e-05, 0.08334683649724042, 2.158480201443123, 1.4357294825945615, 1.7784346361299655e-05, 0.3094122486988216, 1012.9868918179922, "NaN", 18.015309743547558, -46900.89734897743, -126.74380429063982, 86.61489557994668, 64.47098862070692, 1.3434708763272718, "NaN", "NaN", 0.0011600294010351386, 0.5993148446869633, 0.0007115785355543036, 0.03375983329900413, 0.06321573389873354], [2.0, 19999999.999999996, 287.7717593269263, 100.00000000000004, 100.0, 7.49014435200583e-05, 100.0, 361.59881341601823, 0.6508171309048933, 27.084273099999994, -8225.333008973514, -52.1896538901924, 86.07358564502196, 49.913237707522434, 1.7244640820415023, "NaN", "NaN", 7.082550373499108e-05, 0.09310133179984292, 97.83971212186323, 98.56306498626746, 7.636395047550764e-05, 99.48930631996483, 357.29573404254273, 0.6608335136013302, 27.28451373953488, -7375.582833575506, -50.539995070265995, 86.06611335196902, 49.59093145006747, 1.7355212099338766, 3.677411117611231e-07, 583.5067621780462, 4.653889787116416e-05, 0.08192485389468902, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 2.1602878781367774, 1.4369350137342716, 1.775317382506438e-05, 0.5106936800351785, 1014.7677989453742, "NaN", 18.01534912675521, -46710.62627838282, -126.90291117148533, 86.412006745556, 64.51052900541447, 1.3395023739195087, "NaN", "NaN", 0.0011707689650589611, 0.5992854343185108, "NaN", 0.006601517041018716, "NaN"], [1.0, 99999.99999999999, 303.147698483991, 100.00000000000004, 100.0, 0.025076229343198083, 100.0, 1.080077579819495, 0.9949966675562343, 27.084273099999994, 1447.418299951202, 16.352000324190534, 51.1938226659066, 42.69301008706953, 1.199114856542095, "NaN", "NaN", 1.0424196775411636e-05, 0.027382462650596167, 100.0, 100.0, 0.025076229343198083, 100.0, 1.080077579819495, 0.9949966675562343, 27.084273099999994, 1447.418299951202, 16.352000324190534, 51.1938226659066, 42.69301008706953, 1.199114856542095, 7.952981853890046e-06, 332.3802775762964, 1.0424196775411636e-05, 0.027382462650596167, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [3.0, 999999.9999999999, 303.14234461570726, 100.00000000000004, 100.0, 0.002229829015689371, 100.0, 12.146345262094751, 0.9005288101084754, 27.084273099999994, -865.4232089388333, -9.749838981826617, 55.968163296273694, 44.65769944699615, 1.2532701860896762, "NaN", "NaN", 3.5191439804829175e-05, 0.043603755193162265, 93.85737251645497, 87.21223279764412, 0.0024096406530583767, 99.76335282997528, 10.444169607059546, 0.9569103711871729, 25.166695672607418, 1040.463643078192, -5.112198765482117, 50.13019051798228, 39.983923628411524, 1.2537586602021489, 7.447685244120736e-06, 338.972020858508, 1.0895451412384418e-05, 0.029600138279870455, 4.279830831644834, 11.548730270196536, 0.00011748728472459352, 0.22180321276680723, 622.0624013945577, "NaN", 73.08442246910678, -23128.979132790995, -62.55400588107928, 170.66546850994732, 139.07710132355967, 1.227128455265242, "NaN", "NaN", 0.0002359450090628494, 0.09890418477721903, 1.8627966519001986, 1.2390369321990011, 1.8064830203011848e-05, 0.01484395725792177, 997.2455416828648, "NaN", 18.015071381211527, -45742.72052088557, -122.09909816398769, 86.59508254415043, 63.21541521873732, 1.3698412364217656, "NaN", "NaN", 0.000798112243040239, 0.6221243385172754, 0.014238597579669715, 0.06937772189983507, 0.04926120886469228], [3.0, 9999999.999999998, 302.8685656756363, 100.00000000000004, 100.0, 0.00014295393988875447, 100.0, 189.46153649963574, 0.5864157632097585, 27.084273099999994, -5488.95572586856, -39.69266420179716, 90.01095413014589, 48.76299097716268, 1.8458866514628072, "NaN", "NaN", 4.8181965931358396e-05, 0.0684302293802065, 66.57395226025585, 55.13159202865157, 0.00017446432047902135, 80.1522689942709, 128.56026368523052, 0.6995771830724562, 22.429179044447544, -2093.071833387925, -34.15008988690954, 78.43389934604284, 38.597481561337936, 2.0320988876281496, 4.295286818139921e-06, 358.99333256651585, 1.6327063723204584e-05, 0.04467624168727203, 31.296972367258586, 43.45222715608168, 9.067114382215003e-05, 19.582867185560968, 414.7226975107169, "NaN", 37.60338135230423, -9984.128923764512, -45.861235354872754, 114.88453938945987, 69.39951267030787, 1.655408445520864, "NaN", "NaN", 6.413291140375954e-05, 0.08131808630308113, 2.1290753724855724, 1.4161808152448594, 1.8027136394546094e-05, 0.2648638201681327, 999.3511349559193, "NaN", 18.0154392158948, -45596.55449025434, -122.32641178471145, 86.37669198792537, 63.27515422083786, 1.3650965067024627, "NaN", "NaN", 0.0008097756887906699, 0.6217436328866469, 0.0007888253077855391, 0.03357040379105897, 0.0600271252753764], [2.0, 19999999.999999996, 302.79234874491846, 100.00000000000004, 100.0, 8.101399084763791e-05, 100.0, 334.3159967386013, 0.6672527623688558, 27.084273099999994, -6905.050015435019, -47.71802029949466, 88.38075973215604, 50.6038436496536, 1.746522662271348, "NaN", "NaN", 5.7420502241309376e-05, 0.08751606432829478, 97.86394476543701, 98.5791698152823, 8.261097462134939e-05, 99.52693024881735, 330.24927830446074, 0.677685492969066, 27.28221474872875, -6064.514184213221, -46.085497934966945, 88.42960033587713, 50.326219595744746, 1.7571278162000896, 5.725640805588663e-07, 540.9475277730036, 4.081079994574836e-05, 0.07585791266999585, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 2.1360552345629884, 1.420830184718521, 1.799005765687602e-05, 0.4730697511826451, 1001.4155373113045, "NaN", 18.01552325472185, -45414.4250676629, -122.51247126937672, 86.1431143438104, 63.32326430772959, 1.36037071502164, "NaN", "NaN", 0.0008183984777737126, 0.6216374163860621, "NaN", 0.007738710937070727, "NaN"], [1.0, 99999.99999999999, 423.14888241072146, 100.00000000000004, 100.0, 0.03512869457456268, 100.0, 0.7710014114675415, 0.998547654509841, 27.084273099999994, 8289.55727103074, 35.25748166599203, 63.05984359141265, 54.66200572639829, 1.1536320841765002, "NaN", "NaN", 1.4055426375838836e-05, 0.04381342828891202, 100.0, 100.0, 0.03512869457456268, 100.0, 0.7710014114675415, 0.998547654509841, 27.084273099999994, 8289.55727103074, 35.25748166599203, 63.05984359141265, 54.66200572639829, 1.1536320841765002, 3.599978430402189e-06, 386.55215308830645, 1.4055426375838836e-05, 0.04381342828891202, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.1387009807922, 100.00000000000004, 100.0, 0.0034651472365843884, 100.0, 7.816196903279955, 0.9857136554901321, 27.084273099999994, 8084.167646765939, 15.735140127940326, 64.00479583762879, 54.82694983350207, 1.1673966184877678, "NaN", "NaN", 1.4234072130823536e-05, 0.044765699318513166, 100.0, 100.0, 0.0034651472365843884, 100.0, 7.816196903279955, 0.9857136554901321, 27.084273099999994, 8084.167646765939, 15.735140127940326, 64.00479583762879, 54.82694983350207, 1.1673966184877678, 3.560759049011577e-06, 383.90157104655236, 1.4234072130823536e-05, 0.044765699318513166, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.03367928586226, 100.00000000000004, 100.0, 0.0003113738915382294, 100.0, 86.9831216939866, 0.8931162329368723, 27.084273099999994, 6082.544087877027, -7.192032993383255, 75.5412366704471, 56.55239640550961, 1.3357742814075957, "NaN", "NaN", 1.729868560384456e-05, 0.052281026612307394, 100.0, 100.0, 0.0003113738915382294, 100.0, 86.9831216939866, 0.8931162329368723, 27.084273099999994, 6082.544087877027, -7.192032993383255, 75.5412366704471, 56.55239640550961, 1.3357742814075957, 2.6922444086536875e-06, 382.0692819204246, 1.729868560384456e-05, 0.052281026612307394, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 422.9534727866269, 100.00000000000004, 100.0, 0.00015516959840058956, 100.0, 174.54626021573236, 0.8981964425318888, 27.084273099999994, 4472.772759295913, -16.103865388246064, 83.74251362363204, 58.23190174196636, 1.4380865319272371, "NaN", "NaN", 2.3311758842181964e-05, 0.062197835586745166, 100.0, 100.0, 0.00015516959840058956, 100.0, 174.54626021573236, 0.8981964425318888, 27.084273099999994, 4472.772759295913, -16.103865388246064, 83.74251362363204, 58.23190174196636, 1.4380865319272371, 1.371359015510219e-06, 438.2364174805225, 2.3311758842181964e-05, 0.062197835586745166, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase4_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase4_I.json new file mode 100755 index 0000000000..9e6bf0149d --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase4_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 1. Gas fraction no 2. Ph-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [539.4455356766066, 342.73245397733496, -1793.9180558478527, -3385.670593897703, 1112.8780821129653, 933.256919135486, -926.6765608695125, -2398.6729409429304, 6142.768668737394, 6049.323795115054, 5199.003074650164, 4491.643056630953], "FlashMode": 2, "db": "PSCfluidsV3.nfdb", "fn": 1, "components": ["H2O", "N2", "CO2", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6"], "fractions": [0.054, 0.454, 1.514, 89.92, 5.324, 1.535, 0.232, 0.329, 0.094, 0.107, 0.437]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase4_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase4_O.json new file mode 100755 index 0000000000..f848500aea --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase4_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 288.14955040254625, 100.00000000000004, 100.0, 0.023896681730369372, 100.0, 0.7680810376561135, 0.9974802152028132, 18.354588099999997, 539.4455356766088, 6.031598567302556, 37.87464341478548, 29.451856644023785, 1.2859849167597657, "NaN", "NaN", 1.0835389175678926e-05, 0.031137568161460426, 100.0, 100.0, 0.023896681730369372, 100.0, 0.7680810376561135, 0.9974802152028132, 18.354588099999997, 539.4455356766088, 6.031598567302556, 37.87464341478548, 29.451856644023785, 1.2859849167597657, 5.70105475532781e-06, 408.67313516918784, 1.0835389175678926e-05, 0.031137568161460426, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.1454374389766, 100.00000000000004, 100.0, 0.002334532215375189, 100.0, 7.862212386326046, 0.9748691299473576, 18.354588099999997, 342.7324539773347, -13.607516647426063, 39.087065814612245, 29.61925412373811, 1.3196505776722525, "NaN", "NaN", 1.1011282571197762e-05, 0.03243556933752305, 100.0, 100.0, 0.002334532215375189, 100.0, 7.862212386326046, 0.9748691299473576, 18.354588099999997, 342.7324539773347, -13.607516647426063, 39.087065814612245, 29.61925412373811, 1.3196505776722525, 5.65050518384058e-06, 404.61918972131787, 1.1011282571197762e-05, 0.03243556933752305, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 288.10317432802725, 100.00000000000004, 100.0, 0.00018694619993347327, 100.0, 98.18112433701069, 0.7848202921504521, 18.354588099999997, -1793.918055847852, -38.378627516291566, 58.99919304983246, 31.590176080082024, 1.8676436908825003, "NaN", "NaN", 1.4933895448546984e-05, 0.04446689758283877, 99.96755858824652, 99.96815833353453, 0.00018701834180297015, 99.99691326684302, 98.14384000815211, 0.7850429761890623, 18.35469821650061, -1779.2887289561281, -38.34998175365305, 58.99023329553519, 31.579513947311774, 1.8679905394983691, 3.867457972915315e-06, 405.0685819967733, 1.4565346456250599e-05, 0.044286678087961565, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.03244141175348455, 0.031841666465598724, 1.778918434037242e-05, 0.0030867331569805353, 1012.7089567975629, "NaN", 18.015266315618096, -46873.8949775649, -126.64996960924393, 86.60849592031975, 64.44532401521478, 1.343906594369399, "NaN", "NaN", 0.0011506102112633359, 0.5998096505364124, "NaN", 0.04132623331745832, "NaN"], [2.0, 19999999.999999996, 288.0792782589615, 100.00000000000004, 100.0, 9.267847740775185e-05, 100.0, 198.04585286016766, 0.7825646146107078, 18.354588099999997, -3385.670593897704, -48.31232558415003, 66.56900352238435, 33.45506216304056, 1.9898036117214686, "NaN", "NaN", 2.246113217680615e-05, 0.062208994223254155, 99.96432999604724, 99.96498931768038, 9.271341298641879e-05, 99.99316598199682, 197.97253242786402, 0.7827735591942491, 18.354709158951746, -3370.220528904115, -48.28431519368163, 66.56192545961436, 33.44398970523281, 1.990250745986797, 1.3743601601583408e-06, 514.7759386238159, 2.2054716361375302e-05, 0.062017177111377934, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.03567000395275486, 0.03501068231971953, 1.775784537477496e-05, 0.00683401800317445, 1014.4993895929108, "NaN", 18.01532329319449, -46684.10693624169, -126.81077262135277, 86.40510456148212, 64.4853594298249, 1.3399181663166664, "NaN", "NaN", 0.0011614317009256215, 0.599771846637882, "NaN", 0.01930486610693944, "NaN"], [1.0, 99999.99999999999, 303.1495902796113, 100.00000000000004, 100.0, 0.025151481427192524, 100.0, 0.7297617101852272, 0.9979074940262768, 18.354588099999997, 1112.8780821129665, 7.971429550085701, 38.59030964916512, 30.1798029308086, 1.2786799747380317, "NaN", "NaN", 1.132976529427817e-05, 0.03305668191851347, 100.0, 100.0, 0.025151481427192524, 100.0, 0.7297617101852272, 0.9979074940262768, 18.354588099999997, 1112.8780821129665, 7.971429550085701, 38.59030964916512, 30.1798029308086, 1.2786799747380317, 5.127824336612752e-06, 418.1622233091821, 1.132976529427817e-05, 0.03305668191851347, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.14585876731286, 100.00000000000004, 100.0, 0.002467093930988901, 100.0, 7.439760549628854, 0.9792236774088533, 18.354588099999997, 933.2569191354858, -11.609804564585106, 39.659339221315456, 30.33422671323647, 1.3074122375438677, "NaN", "NaN", 1.1495852166714481e-05, 0.03429710106848837, 100.0, 100.0, 0.002467093930988901, 100.0, 7.439760549628854, 0.9792236774088533, 18.354588099999997, 933.2569191354858, -11.609804564585106, 39.659339221315456, 30.33422671323647, 1.3074122375438677, 5.066138135736056e-06, 414.9522830746233, 1.1495852166714481e-05, 0.03429710106848837, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 303.109052267063, 100.00000000000004, 100.0, 0.0002078210942416402, 100.0, 88.31917744913099, 0.8287319470378048, 18.354588099999997, -926.6765608695231, -35.44354439740871, 55.131281112072806, 32.05984237815183, 1.71963668635014, "NaN", "NaN", 1.4591993614731818e-05, 0.04483436248286465, 99.99866617062978, 99.9986908219862, 0.00020782441218582752, 99.99988427389998, 88.317789193617, 0.8287417378853702, 18.35459262471528, -926.0810079264306, -35.442386421263485, 55.13086438015703, 32.05942625750792, 1.719646007927109, 3.5631929066024555e-06, 417.1181768070675, 1.4581443582406099e-05, 0.04482666293705225, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.0013338293702297155, 0.0013091780144606463, 1.8031103739642386e-05, 0.0001157261000064665, 999.1271443780876, "NaN", 18.015365189373952, -45575.94075647454, -122.25829939091363, 86.3741347023321, 63.25686823877768, 1.3654506950343, "NaN", "NaN", 0.0008055396096860064, 0.6220778454532029, "NaN", 0.04158266885364014, "NaN"], [2.0, 19999999.999999996, 303.0850980400235, 100.00000000000004, 100.0, 0.0001024237217054201, 100.0, 179.2025108479211, 0.8211233369556579, 18.354588099999997, -2398.672940942908, -44.9719318804714, 63.75856777332706, 33.75301903165517, 1.888973774865332, "NaN", "NaN", 2.092451170582645e-05, 0.059977342132843676, 99.98761457793397, 99.98784340792031, 0.00010243736001026392, 99.99782407451167, 179.17906224999334, 0.8212016217771004, 18.354630106004056, -2393.347710269832, -44.962337245684324, 63.755795481779685, 33.74935893227191, 1.8890964894984992, 1.4756075501486746e-06, 506.7413518438822, 2.0826373005375976e-05, 0.05990771913065512, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.012385422066024738, 0.012156592080238516, 1.7994809087207287e-05, 0.0021759254883308796, 1001.1483420559381, "NaN", 18.0154732832707, -45389.30412328136, -122.42949771812859, 86.13930031996526, 63.301031565993746, 1.360788255562024, "NaN", "NaN", 0.000813199050555724, 0.6220444135235677, "NaN", 0.020999263774342997, "NaN"], [1.0, 99999.99999999999, 423.1497915542541, 100.00000000000004, 100.0, 0.03516751366159142, 100.0, 0.5219188446650455, 0.9995997691650046, 18.354588099999997, 6142.768668737394, 21.885929052232992, 45.53948264582158, 37.18226763176937, 1.2247634570547714, "NaN", "NaN", 1.4979083569072955e-05, 0.05059785078701554, 100.0, 100.0, 0.03516751366159142, 100.0, 0.5219188446650455, 0.9995997691650046, 18.354588099999997, 6142.768668737394, 21.885929052232992, 45.53948264582158, 37.18226763176937, 1.2247634570547714, 2.292227205954062e-06, 484.33347210399654, 1.4979083569072955e-05, 0.05059785078701554, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.1479227331725, 100.00000000000004, 100.0, 0.003503725670225221, 100.0, 5.2385916671438935, 0.9961664191816628, 18.354588099999997, 6049.323795115054, 2.549660378321234, 46.019206922252, 37.274339099712016, 1.2346082595628787, "NaN", "NaN", 1.5092462455430863e-05, 0.051530971437065545, 100.0, 100.0, 0.003503725670225221, 100.0, 5.2385916671438935, 0.9961664191816628, 18.354588099999997, 6049.323795115054, 2.549660378321234, 46.019206922252, 37.274339099712016, 1.2346082595628787, 2.2394917719210655e-06, 484.6502759202487, 1.5092462455430863e-05, 0.051530971437065545, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.13056823890344, 100.00000000000004, 100.0, 0.00034366391154674967, 100.0, 53.408540970712785, 0.9797840336479808, 18.354588099999997, 5199.003074650163, -18.384489660332612, 50.78877177725712, 38.1714257937565, 1.3305442676328945, "NaN", "NaN", 1.6706290556265915e-05, 0.05776847216215785, 100.0, 100.0, 0.00034366391154674967, 100.0, 53.408540970712785, 0.9797840336479808, 18.354588099999997, 5199.003074650163, -18.384489660332612, 50.78877177725712, 38.1714257937565, 1.3305442676328945, 1.6568338819010429e-06, 500.0350122054416, 1.6706290556265915e-05, 0.05776847216215785, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.11581198223126, 100.00000000000004, 100.0, 0.00017490181474415591, 100.0, 104.94223931780724, 1.0002103822324009, 18.354588099999997, 4491.6430566309555, -25.736921680986182, 54.85014652522211, 39.05354345768457, 1.404485782055949, "NaN", "NaN", 1.926460327413735e-05, 0.0646151860634205, 100.0, 100.0, 0.00017490181474415591, 100.0, 104.94223931780724, 1.0002103822324009, 18.354588099999997, 4491.6430566309555, -25.736921680986182, 54.85014652522211, 39.05354345768457, 1.404485782055949, 1.039196589125581e-06, 540.151752275085, 1.926460327413735e-05, 0.0646151860634205, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase5_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase5_I.json new file mode 100755 index 0000000000..8190cfca8c --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase5_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 1. Gas fraction no 1. Ps-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [12.209585171381299, -15.116646210128277, -44.9947984854881, -52.14863823224585, 16.35214560191303, -9.748488858276954, -39.671887240300556, -47.682574639388456, 35.25753923860376, 15.735720211555826, -7.185985973701347, -16.092503343613146], "FlashMode": 3, "db": "PSCfluidsV3.nfdb", "fn": 1, "components": ["H2O", "N2", "CO2", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6"], "fractions": [2.18, 0.48, 1.77, 62.88, 12.36, 9.58, 2.21, 2.47, 0.98, 0.46, 4.63]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase5_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase5_O.json new file mode 100755 index 0000000000..e0c886693b --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase5_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[2.0, 99999.99999999999, 288.14898468189284, 100.00000000000004, 100.0, 0.023532634837642633, 100.0, 1.1509239524966488, 0.9844377153277305, 27.084273099999994, 227.18983790078403, 12.209585161336737, 50.35726284576074, 41.69657477124084, 1.207707422540937, "NaN", "NaN", 2.0944089134378573e-05, 0.031186632028348343, 99.02679576817104, 99.35267674863184, 0.02381402027112605, 99.99926454512267, 1.1410674342853284, 0.9941027557433917, 27.173403010792608, 691.9109436197308, 13.572606467883121, 49.998933899371565, 41.47342218798245, 1.2055656673989037, 8.873577271819291e-06, 324.0980285929518, 9.959195536591419e-06, 0.025597671625416908, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.9732042318289622, 0.647323251372617, 1.7821353442717592e-05, 0.0007354548773351394, 1010.8663013030658, "NaN", 18.015005638854593, -47059.74184621526, -126.48240582741185, 86.81843536370006, 64.4030988128998, 1.3480474847323731, "NaN", "NaN", 0.0011386938679231904, 0.5998821044446199, "NaN", 0.07705286599902493, "NaN"], [3.0, 999999.9999999999, 288.13533927653526, 100.00000000000004, 100.0, 0.0020310572606977825, 100.0, 13.335061312202996, 0.8695359304935194, 27.084273099999994, -2452.5394514490335, -15.116646224917167, 55.96093483369166, 44.0545159753085, 1.270265569710411, "NaN", "NaN", 5.1080121644154106e-05, 0.04560414029815957, 90.7139716856643, 80.0963479937255, 0.002284106909561122, 99.59752047250406, 10.469821794224174, 0.954231732419726, 23.914192302061057, 305.38919868991667, -8.393168349496282, 47.09467706745118, 36.87444909847965, 1.2771628653129605, 7.881416591556512e-06, 341.1783243813922, 1.0534753546823923e-05, 0.02841584315970362, 7.22325328479719, 18.531600739692546, 0.00011083013995009327, 0.3848120318110536, 626.9593647592192, "NaN", 69.48599413928584, -24354.204149843605, -67.7458030572873, 158.50215687473292, 128.41377461190825, 1.2343080588804252, "NaN", "NaN", 0.0002492721478821392, 0.10318379414968959, 2.0627750295385034, 1.372051266608397, 1.7818256696191895e-05, 0.017667495684888332, 1011.0449087724314, "NaN", 18.0150577158851, -47043.630911946544, -126.50041244492986, 86.79911937565848, 64.40772498489495, 1.3476507576694379, "NaN", "NaN", 0.0011401180132481154, 0.5998605472015898, 0.014959870686731415, 0.07327878792603185, 0.05184562514960946], [3.0, 9999999.999999998, 287.862898441605, 100.00000000000004, 100.0, 0.00012249894294117782, 100.0, 221.098014804956, 0.5303202260814923, 27.084273099999994, -7054.591135502086, -44.994798485488076, 92.38330059598569, 48.233969672975554, 1.9153161396903653, "NaN", "NaN", 6.0673549856928876e-05, 0.0732575016995207, 55.33360744477561, 43.78962341641056, 0.0001585194569097448, 70.64266120431047, 135.21249732919082, 0.6686674290370708, 21.433811644033646, -2882.4778534127854, -37.926305901913935, 81.11701059920796, 36.33881938704869, 2.232241222127277, 4.317967034724738e-06, 363.3711761401405, 1.634720752578673e-05, 0.04498917670345535, 42.508005469426976, 54.77470899221121, 8.485015032589858e-05, 29.04817382248482, 411.3144047684592, "NaN", 34.90008907581126, -10462.605651592541, -50.04623176402414, 107.34185135480122, 62.89400107505084, 1.7067104893948657, "NaN", "NaN", 6.266451559595133e-05, 0.08333807304668614, 2.1583870857974063, 1.4356675913518353, 1.7785474654943737e-05, 0.30916497320468345, 1012.922660876372, "NaN", 18.015310312434888, -46894.6084531722, -126.72195557148129, 86.61339513663759, 64.46501628515372, 1.3435720663361506, "NaN", "NaN", 0.0011578374733593095, 0.5994297642961472, 0.0007121462601153645, 0.03376133855859551, 0.06319939311245118], [2.0, 19999999.999999996, 287.9082203481838, 100.00000000000004, 100.0, 7.495274521885606e-05, 100.0, 361.35131569785824, 0.6509387637050988, 27.084273099999994, -8213.52706248699, -52.148638232245794, 86.09689838249685, 49.91923797740742, 1.72472381131825, "NaN", "NaN", 7.067804932215411e-05, 0.09304669598789567, 97.83986384064998, 98.56316579434387, 7.641642934454178e-05, 99.4896322253839, 357.05017323928234, 0.6609587926269602, 27.28449933579602, -7363.837641703253, -50.49909693848359, 86.0900093617433, 49.59733437233632, 1.735778957704657, 3.6952073803821783e-07, 583.086478727595, 4.648161087208598e-05, 0.08186504505507954, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 2.1601361593500252, 1.4368342056578594, 1.775525331712838e-05, 0.5103677746161056, 1014.6490265291314, "NaN", 18.015350494002448, -46698.831276521334, -126.86193576335374, 86.40892540431423, 64.49933967777753, 1.3396869771999447, "NaN", "NaN", 0.0011666164850250528, 0.5995014396136814, "NaN", 0.006611357573596308, "NaN"], [1.0, 99999.99999999999, 303.148558756451, 100.00000000000004, 100.0, 0.025076301667741392, 100.0, 1.0800744646823934, 0.9949967133956026, 27.084273099999994, 1447.4623406209032, 16.352145601913026, 51.193901569562584, 42.69309024725921, 1.1991144532539222, "NaN", "NaN", 1.0424224226830263e-05, 0.027382568128919, 100.0, 100.0, 0.025076301667741392, 100.0, 1.0800744646823934, 0.9949967133956026, 27.084273099999994, 1447.4623406209032, 16.352145601913026, 51.193901569562584, 42.69309024725921, 1.1991144532539222, 7.952932720938089e-06, 332.3807086642619, 1.0424224226830263e-05, 0.027382568128919, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [3.0, 999999.9999999999, 303.1459529901636, 100.00000000000004, 100.0, 0.0022298797976399365, 100.0, 12.146068648482975, 0.9005366485357296, 27.084273099999994, -865.0139267834236, -9.748488857943235, 55.96813600627472, 44.6578297993296, 1.253265916811634, "NaN", "NaN", 3.5187956929175074e-05, 0.04360312563574379, 93.85818606389532, 87.21416086349537, 0.0024096704727137766, 99.76339377935672, 10.44418072548095, 0.9569108435565321, 25.16703390587779, 1040.6502236680737, -5.1113849937531874, 50.13101400273756, 39.984758451018436, 1.2537530785423736, 7.447595829336935e-06, 338.97117892544844, 1.089553313159323e-05, 0.029600415252153935, 4.279089191919734, 11.546850033437245, 0.00011748881611602847, 0.22176309214816417, 622.060812348292, "NaN", 73.08518839497577, -23128.61808595298, -62.55267386871597, 170.66828546799445, 139.07952179846234, 1.2271273531937135, "NaN", "NaN", 0.00023594125472689104, 0.09890318571288913, 1.8627247441849477, 1.2389891031070615, 1.806489166011951e-05, 0.014843128495127894, 997.242149225649, "NaN", 18.015071384666083, -45742.40804454254, -122.098067381742, 86.59505143783419, 63.215138650944496, 1.3698467374403263, "NaN", "NaN", 0.0007980497647856855, 0.6221293467305954, 0.01423839859319853, 0.06937677649962334, 0.04926060907338576], [3.0, 9999999.999999998, 302.92922694267116, 100.00000000000004, 100.0, 0.00014303615857208288, 100.0, 189.35263202241907, 0.5866275430897907, 27.084273099999994, -5482.662407185664, -39.67188724030056, 90.00216515921888, 48.76536139254295, 1.8456166957266051, "NaN", "NaN", 4.8139646219704356e-05, 0.06841326763337052, 66.61482899597327, 55.176019981453784, 0.00017452570120731853, 80.18381807472575, 128.53968923089528, 0.6996839905225981, 22.433479395992812, -2089.9062140888036, -34.13512891739975, 78.42815462896053, 38.60763515942665, 2.0314156592367993, 4.295060459477262e-06, 358.9757349804918, 1.6327366352767975e-05, 0.044676037150670755, 31.256265128471817, 43.407911901750246, 9.069556263939175e-05, 19.55147578866197, 414.7276184834862, "NaN", 37.61395470045479, -9981.611031146078, -45.84355684225183, 114.91622425562474, 69.42602203594315, 1.6552327338606623, "NaN", "NaN", 6.413612814549008e-05, 0.08130935866524092, 2.1289058755549086, 1.4160681167720701, 1.8028148466030025e-05, 0.2647061366122869, 999.2950643858071, "NaN", 18.015439782118364, -45591.31334321629, -122.30910926510896, 86.37602820240743, 63.270516158676045, 1.3651860842384325, "NaN", "NaN", 0.0008087084067764848, 0.6218280158184711, 0.0007889873530407226, 0.03356790455487623, 0.06001504417281256], [2.0, 19999999.999999996, 302.9126271464367, 100.00000000000004, 100.0, 8.10668167138268e-05, 100.0, 334.09814518324964, 0.667408632492422, 27.084273099999994, -6894.315209144871, -47.682574639388854, 88.3966495856191, 50.60961898024079, 1.7466373263970092, "NaN", "NaN", 5.73322910138876e-05, 0.08747483497344785, 97.86421342061429, 98.57934838972533, 8.266490356729877e-05, 99.52724652188513, 330.0335220613257, 0.6778447238901297, 27.28218927517546, -6053.879334148066, -46.05023539474605, 88.44586537203966, 50.33235660563856, 1.7572367227909886, 5.742613830944968e-07, 540.6374444816765, 4.0769437217180214e-05, 0.07581362881965081, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 2.135786579385711, 1.4206516102754472, 1.7992021588544788e-05, 0.4727534781148607, 1001.3063156988042, "NaN", 18.015524848799128, -45404.05987693093, -122.47824839931715, 86.14152528040348, 63.3141019391059, 1.3605424801452999, "NaN", "NaN", 0.0008162614248796908, 0.6218047997704023, "NaN", 0.007748189018629014, "NaN"], [1.0, 99999.99999999999, 423.1492687388247, 100.00000000000004, 100.0, 0.035128726856275466, 100.0, 0.7710007029520799, 0.9985476604008239, 27.084273099999994, 8289.581632828178, 35.25753923860376, 63.05988331631872, 54.66204563847824, 1.1536319685761813, "NaN", "NaN", 1.4055437431721008e-05, 0.043813486405515384, 100.0, 100.0, 0.035128726856275466, 100.0, 0.7710007029520799, 0.9985476604008239, 27.084273099999994, 8289.581632828178, 35.25753923860376, 63.05988331631872, 54.66204563847824, 1.1536319685761813, 3.5999699130336076e-06, 386.5523124599448, 1.4055437431721008e-05, 0.043813486405515384, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.142535946921, 100.00000000000004, 100.0, 0.0034651807322576213, 100.0, 7.816121349132099, 0.9857142425860914, 27.084273099999994, 8084.413103705761, 15.735720211555826, 64.00516908816971, 54.827343673893814, 1.1673950404904614, "NaN", "NaN", 1.423418003625603e-05, 0.04476626911250574, 100.0, 100.0, 0.0034651807322576213, 100.0, 7.816121349132099, 0.9857142425860914, 27.084273099999994, 8084.413103705761, 15.735720211555826, 64.00516908816971, 54.827343673893814, 1.1673950404904614, 3.560673456960056e-06, 383.90328028351473, 1.423418003625603e-05, 0.04476626911250574, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.06754424530413, 100.00000000000004, 100.0, 0.00031141531791264114, 100.0, 86.97155066597503, 0.8931625119163875, 27.084273099999994, 6085.102283251373, -7.185985973701348, 75.54090972716902, 56.55558242493721, 1.3356932505722114, "NaN", "NaN", 1.7299090139924694e-05, 0.05228499716395144, 100.0, 100.0, 0.00031141531791264114, 100.0, 86.97155066597503, 0.8931625119163875, 27.084273099999994, 6085.102283251373, -7.185985973701348, 75.54090972716902, 56.55558242493721, 1.3356932505722114, 2.6916789969149252e-06, 382.08962136750114, 1.7299090139924694e-05, 0.05228499716395144, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.0108632813002, 100.00000000000004, 100.0, 0.00015520660956185102, 100.0, 174.5046372474666, 0.8982850465399808, 27.084273099999994, 4477.578701558818, -16.09250334361317, 83.73965612299999, 58.23683701878564, 1.4379155944885507, "NaN", "NaN", 2.330975067795639e-05, 0.062200676497640765, 100.0, 100.0, 0.00015520660956185102, 100.0, 174.5046372474666, 0.8982850465399808, 27.084273099999994, 4477.578701558818, -16.09250334361317, 83.73965612299999, 58.23683701878564, 1.4379155944885507, 1.3711817030486073e-06, 438.24653413563544, 2.330975067795639e-05, 0.062200676497640765, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase6_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase6_I.json new file mode 100755 index 0000000000..6263558a31 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase6_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 1. Gas fraction no 2. Ps-flash", "Sp1": [100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0, 100000.0, 1000000.0, 10000000.0, 20000000.0], "Sp2": [6.031620941640527, -13.607289108084728, -38.37599850963105, -48.30741188548242, 7.971449105072525, -11.609606431999564, -35.441351406082504, -44.96778562560682, 21.885936815847018, 2.5497379649437835, -18.383731780376063, -25.735494948559992], "FlashMode": 3, "db": "PSCfluidsV3.nfdb", "fn": 1, "components": ["H2O", "N2", "CO2", "C1", "C2", "C3", "iC4", "nC4", "iC5", "nC5", "C6"], "fractions": [0.054, 0.454, 1.514, 89.92, 5.324, 1.535, 0.232, 0.329, 0.094, 0.107, 0.437]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase6_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase6_O.json new file mode 100755 index 0000000000..3d4cdc24ed --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase6_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 288.1497206261068, 100.00000000000004, 100.0, 0.02389669597543714, 100.0, 0.7680805797950584, 0.9974802205269956, 18.354588099999997, 539.4519828339336, 6.031620941640518, 37.87465127746718, 29.45186465807251, 1.2859848338018915, "NaN", "NaN", 1.083539483767497e-05, 0.03113758959615499, 100.0, 100.0, 0.02389669597543714, 100.0, 0.7680805797950584, 0.9974802205269956, 18.354588099999997, 539.4519828339336, 6.031620941640518, 37.87465127746718, 29.45186465807251, 1.2859848338018915, 5.70104784666584e-06, 408.67324488295077, 1.083539483767497e-05, 0.03113758959615499, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.1471148369168, 100.00000000000004, 100.0, 0.0023345470972530847, 100.0, 7.862162267617856, 0.9748696666008065, 18.354588099999997, 342.7980185912176, -13.607289108084748, 39.08712566665482, 29.619331536942145, 1.3196491493369507, "NaN", "NaN", 1.1011337209285631e-05, 0.03243577374735415, 100.0, 100.0, 0.0023345470972530847, 100.0, 7.862162267617856, 0.9748696666008065, 18.354588099999997, 342.7980185912176, -13.607289108084748, 39.08712566665482, 29.619331536942145, 1.3196491493369507, 5.65043544114715e-06, 404.62037388873273, 1.1011337209285631e-05, 0.03243577374735415, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 288.11588695283854, 100.00000000000004, 100.0, 0.0001869645816142183, 100.0, 98.17147152433799, 0.7848623655306566, 18.354588099999997, -1793.1606139733183, -38.37599850963164, 58.99498093790614, 31.590527793580193, 1.8674895628016404, "NaN", "NaN", 1.4933517316657453e-05, 0.044467033057250055, 99.96757578088702, 99.96817520820045, 0.00018703669283622593, 99.99691517154568, 98.13421035075537, 0.7850849463073966, 18.354698158099815, -1778.53915404974, -38.34736831998381, 58.98602465172333, 31.57987176596252, 1.8678361042396558, 3.867212336196888e-06, 405.07864152721623, 1.4565286750891626e-05, 0.044286902633693497, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.0324242191129772, 0.031824791799715355, 1.7789382176131276e-05, 0.003084828454309281, 1012.6976987165639, "NaN", 18.015266391357603, -46872.79376857795, -126.64614753830874, 86.60823554171003, 64.44427963511215, 1.343924333270411, "NaN", "NaN", 0.0011502304649400248, 0.5998297298300047, "NaN", 0.04132687594112686, "NaN"], [2.0, 19999999.999999996, 288.1004117230344, 100.00000000000004, 100.0, 9.269206846114043e-05, 100.0, 198.01681421852018, 0.7826206549017777, 18.354588099999997, -3384.2550072097097, -48.307411885476895, 66.5650796358283, 33.45539994567886, 1.9896662345662952, "NaN", "NaN", 2.2458537089484057e-05, 0.06220503286408204, 99.96435223577906, 99.96501114597486, 9.272698834033024e-05, 99.99317111998444, 197.94354817190955, 0.7828294933426208, 18.354709083380254, -3368.8147250771194, -48.27941947383923, 66.5580047573887, 33.44433513146246, 1.9901129592130795, 1.3745553483968787e-06, 514.7595310345172, 2.205260099026739e-05, 0.06201332207215395, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.035647764220935824, 0.034988854025240754, 1.775816777259381e-05, 0.00682888001555979, 1014.480981887736, "NaN", 18.01532347846812, -46682.280436123954, -126.80443289172852, 86.40463074981899, 64.48362878205273, 1.3399467800091824, "NaN", "NaN", 0.0011607947018995328, 0.5998052316570371, "NaN", 0.01930763267339226, "NaN"], [1.0, 99999.99999999999, 303.1497438955635, 100.00000000000004, 100.0, 0.02515149427308096, 100.0, 0.7297613374663178, 0.9979074980045918, 18.354588099999997, 1112.8840102007098, 7.971449105072517, 38.590317204609015, 30.179810601929535, 1.2786799000700737, "NaN", "NaN", 1.1329770310771234e-05, 0.03305670188546555, 100.0, 100.0, 0.02515149427308096, 100.0, 0.7297613374663178, 0.9979074980045918, 18.354588099999997, 1112.8840102007098, 7.971449105072517, 38.590317204609015, 30.179810601929535, 1.2786799000700737, 5.127818812836147e-06, 418.16231871682345, 1.1329770310771234e-05, 0.03305670188546555, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.1473732447995, 100.00000000000004, 100.0, 0.002467107265201829, 100.0, 7.439720339236424, 0.9792240756477569, 18.354588099999997, 933.3169823583107, -11.609606431999572, 39.65940054669685, 30.33430111904405, 1.3074110522954638, "NaN", "NaN", 1.1495900681895786e-05, 0.034297292412742666, 100.0, 100.0, 0.002467107265201829, 100.0, 7.439720339236424, 0.9792240756477569, 18.354588099999997, 933.3169823583107, -11.609606431999572, 39.65940054669685, 30.33430111904405, 1.3074110522954638, 5.066082883682641e-06, 414.9533016046857, 1.1495900681895786e-05, 0.034297292412742666, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [2.0, 9999999.999999998, 303.1208360740737, 100.00000000000004, 100.0, 0.00020783691423738212, 100.0, 88.31245482713527, 0.8287624189784519, 18.354588099999997, -926.0118324364198, -35.44135140611603, 55.128954522514455, 32.06024883787499, 1.719542315510253, "NaN", "NaN", 1.4591781907097822e-05, 0.044834768742099636, 99.9987012170536, 99.99872522068857, 0.00020784014526004161, 99.9998873219446, 88.31110314545337, 0.8287719530011811, 18.354592505825547, -925.4319324645627, -35.4402238713764, 55.12854871182568, 32.05984366792956, 1.7195513890472414, 3.5629490180380237e-06, 417.1276614509974, 1.458151175143775e-05, 0.044827271297611285, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.001298782946412232, 0.0012747793121083131, 1.8031300527026754e-05, 0.00011267805539363065, 999.1162449809559, "NaN", 18.0153652746861, -45574.922708364866, -122.25494089080146, 86.37400738458675, 63.255968204687626, 1.365468110536105, "NaN", "NaN", 0.0008053337839798757, 0.6220942048572763, "NaN", 0.04158252591418035, "NaN"], [2.0, 19999999.999999996, 303.1045472287951, 100.00000000000004, 100.0, 0.00010243641914370792, 100.0, 179.18029791973075, 0.8211713330929528, 18.354588099999997, -2397.4162325613215, -44.96778562560838, 63.75501020218734, 33.753477067529545, 1.8888427427679422, "NaN", "NaN", 2.092285981854258e-05, 0.05997511497628675, 99.98765669476032, 99.98788474645927, 0.00010245001301859413, 99.99783170404551, 179.15693148605087, 0.8212493587845014, 18.354629963117286, -2392.1091644091644, -44.95822379226573, 63.752246931212404, 33.749829655136274, 1.8889649987169688, 1.4756925617082332e-06, 506.73507727668425, 2.082509699044338e-05, 0.059905725148681276, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", 0.012343305239680752, 0.012115253541259361, 1.7995126993843765e-05, 0.002168295954491853, 1001.1306676809127, "NaN", 18.015473502349625, -45387.62818548955, -122.42396863925698, 86.13904626321442, 63.29955173072849, 1.3608160549010428, "NaN", "NaN", 0.0008128562928561669, 0.6220714194912488, "NaN", 0.021001098717975213, "NaN"], [1.0, 99999.99999999999, 423.1498636932327, 100.00000000000004, 100.0, 0.03516751967495486, 100.0, 0.5219187554211145, 0.9995997696708213, 18.354588099999997, 6142.771953909324, 21.885936815847007, 45.53948727698352, 37.18227228106729, 1.2247634284624294, "NaN", "NaN", 1.4979085614049214e-05, 0.0505978624236821, 100.0, 100.0, 0.03516751967495486, 100.0, 0.5219187554211145, 0.9995997696708213, 18.354588099999997, 6142.771953909324, 21.885936815847007, 45.53948727698352, 37.18227228106729, 1.2247634284624294, 2.2922261326769476e-06, 484.3335079802961, 1.4979085614049214e-05, 0.0505978624236821, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 423.14863614464525, 100.00000000000004, 100.0, 0.0035037317528728235, 100.0, 5.238582572695662, 0.996166468568199, 18.354588099999997, 6049.3566257608945, 2.5497379649437804, 46.019250804496274, 37.27438484104435, 1.2346079217871517, "NaN", "NaN", 1.509248245916814e-05, 0.05153108522064184, 100.0, 100.0, 0.0035037317528728235, 100.0, 5.238582572695662, 0.996166468568199, 18.354588099999997, 6049.3566257608945, 2.5497379649437804, 46.019250804496274, 37.27438484104435, 1.2346079217871517, 2.2394813319189334e-06, 484.650642022181, 1.509248245916814e-05, 0.05153108522064184, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 9999999.999999998, 423.1368823114358, 100.00000000000004, 100.0, 0.00034367031089336245, 100.0, 53.40754647175574, 0.9797876027481154, 18.354588099999997, 5199.32375921949, -18.383731780376078, 50.788955653886696, 38.171807711116, 1.3305357723233122, "NaN", "NaN", 1.67064291696439e-05, 0.057769364746156904, 100.0, 100.0, 0.00034367031089336245, 100.0, 53.40754647175574, 0.9797876027481154, 18.354588099999997, 5199.32375921949, -18.383731780376078, 50.788955653886696, 38.171807711116, 1.3305357723233122, 1.6567663073119885e-06, 500.03869042875306, 1.67064291696439e-05, 0.057769364746156904, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 19999999.999999996, 423.1268179823686, 100.00000000000004, 100.0, 0.0001749078737857512, 100.0, 104.93860397893218, 1.0002188108859196, 18.354588099999997, 4492.246737531223, -25.735494948559985, 54.85017926307605, 39.05416892225054, 1.40446412705062, "NaN", "NaN", 1.926470814296321e-05, 0.06461642891095065, 100.0, 100.0, 0.0001749078737857512, 100.0, 104.93860397893218, 1.0002188108859196, 18.354588099999997, 4492.246737531223, -25.735494948559985, 54.85017926307605, 39.05416892225054, 1.40446412705062, 1.0391344860699413e-06, 540.1568508904077, 1.926470814296321e-05, 0.06461642891095065, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase7_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase7_I.json new file mode 100755 index 0000000000..2834fae6a8 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase7_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 2. Air. PT-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0], "Sp2": [273.15, 288.15, 303.15, 373.15, 273.15, 288.15, 303.15, 373.15], "FlashMode": 1, "db": "PSCfluidsV3.nfdb", "fn": 2, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase7_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase7_O.json new file mode 100755 index 0000000000..b545faa095 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase7_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 273.15, 100.0, 100.0, 0.02270034486998262, 100.0, 1.2709258456310883, 0.9995707174143647, 28.850455, -8.149505349607352, 4.356462381319123, 29.195237802619076, 20.828192106365627, 1.4017173287784428, "NaN", "NaN", 1.7414265944550944e-05, 0.024746932779344623, 100.0, 100.0, 0.02270034486998262, 100.0, 1.2709258456310883, 0.9995707174143647, 28.850455, -8.149505349607352, 4.356462381319123, 29.195237802619076, 20.828192106365627, 1.4017173287784428, 2.788790165501185e-06, 332.0364186595216, 1.7414265944550944e-05, 0.024746932779344623, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 288.15, 100.0, 100.0, 0.02395119383338294, 100.0, 1.2045518566088558, 0.9997466509192273, 28.850455, 429.8874487994604, 5.91762483401949, 29.210681283967098, 20.85029101196406, 1.400972354160706, "NaN", "NaN", 1.8167006907516253e-05, 0.025908775711934975, 100.0, 100.0, 0.02395119383338294, 100.0, 1.2045518566088558, 0.9997466509192273, 28.850455, 429.8874487994604, 5.91762483401949, 29.210681283967098, 20.85029101196406, 1.400972354160706, 2.4689353820033737e-06, 341.0007601788147, 1.8167006907516253e-05, 0.025908775711934975, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.15, 100.0, 100.0, 0.025201586454528097, 100.0, 1.1447872558362806, 0.9998870688665725, 28.850455, 868.1998046032342, 7.400476408717261, 29.23190126222891, 20.877103735098753, 1.400189491470697, "NaN", "NaN", 1.890134712245875e-05, 0.027060481835497016, 100.0, 100.0, 0.025201586454528097, 100.0, 1.1447872558362806, 0.9998870688665725, 28.850455, 868.1998046032342, 7.400476408717261, 29.23190126222891, 20.877103735098753, 1.400189491470697, 2.1853917582870512e-06, 349.71508645359245, 1.890134712245875e-05, 0.027060481835497016, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 373.15, 100.0, 100.0, 0.0310324846382058, 100.0, 0.9296856289902297, 1.0002555405436693, 28.850455, 2919.666821513523, 13.488417885626387, 29.399275206378768, 21.06151328210566, 1.395876678593511, "NaN", "NaN", 2.2116836891824835e-05, 0.03229687814625727, 100.0, 100.0, 0.0310324846382058, 100.0, 0.9296856289902297, 1.0002555405436693, 28.850455, 2919.666821513523, 13.488417885626387, 29.399275206378768, 21.06151328210566, 1.395876678593511, 1.2073715487277616e-06, 387.540592995052, 2.2116836891824835e-05, 0.03229687814625727, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 273.15, 100.0, 100.0, 0.0022610827262153953, 100.0, 12.759575165252775, 0.9959694968043636, 28.850455, -80.7921707780597, -15.023093418647187, 29.791883680035117, 20.948091898192143, 1.4221764838928461, "NaN", "NaN", 1.757942145823311e-05, 0.025532438947012626, 100.0, 100.0, 0.0022610827262153953, 100.0, 12.759575165252775, 0.9959694968043636, 28.850455, -80.7921707780597, -15.023093418647187, 29.791883680035117, 20.948091898192143, 1.4221764838928461, 2.684855579524982e-06, 333.29440691300533, 1.757942145823311e-05, 0.025532438947012626, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.15, 100.0, 100.0, 0.00238943168427456, 100.0, 12.074191193609746, 0.9976952992093829, 28.850455, 365.63996311340867, -13.431993419723538, 29.73558198579601, 20.960777729218577, 1.418629707825472, "NaN", "NaN", 1.8322162528768017e-05, 0.0266574014358915, 100.0, 100.0, 0.00238943168427456, 100.0, 12.074191193609746, 0.9976952992093829, 28.850455, 365.63996311340867, -13.431993419723538, 29.73558198579601, 20.960777729218577, 1.418629707825472, 2.375520589500266e-06, 342.48219873375456, 1.8322162528768017e-05, 0.0266574014358915, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.15, 100.0, 100.0, 0.002517323380592134, 100.0, 11.460766313310803, 0.9990688996612105, 28.850455, 811.362464232585, -11.92405967258373, 29.696745606086093, 20.979368035753627, 1.415521456865434, "NaN", "NaN", 1.9047587153893203e-05, 0.027775792577568938, 100.0, 100.0, 0.002517323380592134, 100.0, 11.460766313310803, 0.9990688996612105, 28.850455, 811.362464232585, -11.92405967258373, 29.696745606086093, 20.979368035753627, 1.415521456865434, 2.1016282695096676e-06, 351.37521461892135, 1.9047587153893203e-05, 0.027775792577568938, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 373.15, 100.0, 100.0, 0.003109917073250168, 100.0, 9.27692099836233, 1.0026541079282305, 28.850455, 2888.234551430245, -5.760065696739837, 29.681403749276626, 21.13618155120333, 1.4042935653903295, "NaN", "NaN", 2.2231801607833962e-05, 0.032890893646569185, 100.0, 100.0, 0.003109917073250168, 100.0, 9.27692099836233, 1.0026541079282305, 28.850455, 2888.234551430245, -5.760065696739837, 29.681403749276626, 21.13618155120333, 1.4042935653903295, 1.1574068430760005e-06, 389.6603673486025, 2.2231801607833962e-05, 0.032890893646569185, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase8_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase8_I.json new file mode 100755 index 0000000000..bdf2569b91 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase8_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 2. Air. Ph-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0], "Sp2": [-8.149505349607352, 429.8874487994604, 868.1998046032342, 2919.666821513523, -80.7921707780597, 365.63996311340867, 811.362464232585, 2888.234551430245], "FlashMode": 2, "db": "PSCfluidsV3.nfdb", "fn": 2, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase8_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase8_O.json new file mode 100755 index 0000000000..c8d624fa77 --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase8_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 273.1499999999999, 100.0, 100.0, 0.022700344869982618, 100.0, 1.2709258456310886, 0.9995707174143644, 28.850455, -8.149505349609626, 4.356462381319121, 29.195237802619072, 20.828192106365627, 1.4017173287784426, "NaN", "NaN", 1.74142659445517e-05, 0.024746932779344213, 100.0, 100.0, 0.022700344869982618, 100.0, 1.2709258456310886, 0.9995707174143644, 28.850455, -8.149505349609626, 4.356462381319121, 29.195237802619072, 20.828192106365627, 1.4017173287784426, 2.7887901655008727e-06, 332.0364186595216, 1.74142659445517e-05, 0.024746932779344213, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 288.15, 100.0, 100.0, 0.02395119383338294, 100.0, 1.2045518566088558, 0.9997466509192273, 28.850455, 429.8874487994604, 5.91762483401949, 29.210681283967098, 20.85029101196406, 1.400972354160706, "NaN", "NaN", 1.8167006907516253e-05, 0.025908775711934975, 100.0, 100.0, 0.02395119383338294, 100.0, 1.2045518566088558, 0.9997466509192273, 28.850455, 429.8874487994604, 5.91762483401949, 29.210681283967098, 20.85029101196406, 1.400972354160706, 2.4689353820033737e-06, 341.0007601788147, 1.8167006907516253e-05, 0.025908775711934975, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.15, 100.0, 100.0, 0.025201586454528097, 100.0, 1.1447872558362806, 0.9998870688665725, 28.850455, 868.1998046032342, 7.400476408717261, 29.23190126222891, 20.877103735098753, 1.400189491470697, "NaN", "NaN", 1.890134712245875e-05, 0.027060481835497016, 100.0, 100.0, 0.025201586454528097, 100.0, 1.1447872558362806, 0.9998870688665725, 28.850455, 868.1998046032342, 7.400476408717261, 29.23190126222891, 20.877103735098753, 1.400189491470697, 2.1853917582870512e-06, 349.71508645359245, 1.890134712245875e-05, 0.027060481835497016, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 373.15, 100.0, 100.0, 0.0310324846382058, 100.0, 0.9296856289902297, 1.0002555405436693, 28.850455, 2919.666821513523, 13.488417885626387, 29.399275206378768, 21.06151328210566, 1.395876678593511, "NaN", "NaN", 2.2116836891824835e-05, 0.03229687814625727, 100.0, 100.0, 0.0310324846382058, 100.0, 0.9296856289902297, 1.0002555405436693, 28.850455, 2919.666821513523, 13.488417885626387, 29.399275206378768, 21.06151328210566, 1.395876678593511, 1.2073715487277616e-06, 387.540592995052, 2.2116836891824835e-05, 0.03229687814625727, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 273.15000000000003, 100.0, 100.0, 0.0022610827262153957, 100.0, 12.759575165252773, 0.9959694968043639, 28.850455, -80.79217077805724, -15.023093418647164, 29.791883680035113, 20.948091898192143, 1.422176483892846, "NaN", "NaN", 1.7579421458231652e-05, 0.025532438947014287, 100.0, 100.0, 0.0022610827262153957, 100.0, 12.759575165252773, 0.9959694968043639, 28.850455, -80.79217077805724, -15.023093418647164, 29.791883680035113, 20.948091898192143, 1.422176483892846, 2.6848555795249824e-06, 333.2944069130054, 1.7579421458231652e-05, 0.025532438947014287, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.15, 100.0, 100.0, 0.00238943168427456, 100.0, 12.074191193609746, 0.9976952992093829, 28.850455, 365.63996311340867, -13.431993419723538, 29.73558198579601, 20.960777729218577, 1.418629707825472, "NaN", "NaN", 1.8322162528768017e-05, 0.0266574014358915, 100.0, 100.0, 0.00238943168427456, 100.0, 12.074191193609746, 0.9976952992093829, 28.850455, 365.63996311340867, -13.431993419723538, 29.73558198579601, 20.960777729218577, 1.418629707825472, 2.375520589500266e-06, 342.48219873375456, 1.8322162528768017e-05, 0.0266574014358915, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.15000000000003, 100.0, 100.0, 0.0025173233805921348, 100.0, 11.460766313310799, 0.9990688996612105, 28.850455, 811.3624642325867, -11.92405967258373, 29.696745606086097, 20.979368035753627, 1.4155214568654342, "NaN", "NaN", 1.9047587153890912e-05, 0.027775792577570263, 100.0, 100.0, 0.0025173233805921348, 100.0, 11.460766313310799, 0.9990688996612105, 28.850455, 811.3624642325867, -11.92405967258373, 29.696745606086097, 20.979368035753627, 1.4155214568654342, 2.1016282695096867e-06, 351.37521461892135, 1.9047587153890912e-05, 0.027775792577570263, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 373.15, 100.0, 100.0, 0.003109917073250168, 100.0, 9.27692099836233, 1.0026541079282305, 28.850455, 2888.234551430245, -5.760065696739837, 29.681403749276626, 21.13618155120333, 1.4042935653903295, "NaN", "NaN", 2.2231801607833962e-05, 0.032890893646569185, 100.0, 100.0, 0.003109917073250168, 100.0, 9.27692099836233, 1.0026541079282305, 28.850455, 2888.234551430245, -5.760065696739837, 29.681403749276626, 21.13618155120333, 1.4042935653903295, 1.1574068430760005e-06, 389.6603673486025, 2.2231801607833962e-05, 0.032890893646569185, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null]} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase9_I.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase9_I.json new file mode 100755 index 0000000000..eb4d551bcc --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase9_I.json @@ -0,0 +1 @@ +{"description": "Fluid no 2. Air. Ps-flash", "Sp1": [100000.0, 100000.0, 100000.0, 100000.0, 1000000.0, 1000000.0, 1000000.0, 1000000.0], "Sp2": [4.356462381319123, 5.91762483401949, 7.400476408717261, 13.488417885626387, -15.023093418647187, -13.431993419723538, -11.92405967258373, -5.760065696739837], "FlashMode": 3, "db": "PSCfluidsV3.nfdb", "fn": 2, "components": null, "fractions": null} \ No newline at end of file diff --git a/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase9_O.json b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase9_O.json new file mode 100755 index 0000000000..827ce9756d --- /dev/null +++ b/src/test/resources/neqsim/thermodynamicOperations/testcases/TestCase9_O.json @@ -0,0 +1 @@ +{"success": true, "errormessage": null, "underlying_error": null, "calcresult": [[1.0, 99999.99999999999, 273.15, 100.0, 100.0, 0.02270034486998262, 100.0, 1.2709258456310883, 0.9995707174143647, 28.850455, -8.149505349607352, 4.356462381319123, 29.195237802619076, 20.828192106365627, 1.4017173287784428, "NaN", "NaN", 1.7414265944550944e-05, 0.024746932779344623, 100.0, 100.0, 0.02270034486998262, 100.0, 1.2709258456310883, 0.9995707174143647, 28.850455, -8.149505349607352, 4.356462381319123, 29.195237802619076, 20.828192106365627, 1.4017173287784428, 2.788790165501185e-06, 332.0364186595216, 1.7414265944550944e-05, 0.024746932779344623, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 288.1500000000002, 100.0, 100.0, 0.023951193833382973, 100.0, 1.2045518566088542, 0.9997466509192274, 28.850455, 429.8874487994667, 5.917624834019491, 29.210681283967094, 20.85029101196406, 1.4009723541607058, "NaN", "NaN", 1.816700690751751e-05, 0.02590877571193606, 100.0, 100.0, 0.023951193833382973, 100.0, 1.2045518566088542, 0.9997466509192274, 28.850455, 429.8874487994667, 5.917624834019491, 29.210681283967094, 20.85029101196406, 1.4009723541607058, 2.468935382003063e-06, 341.0007601788148, 1.816700690751751e-05, 0.02590877571193606, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 303.1500000000001, 100.0, 100.0, 0.02520158645452811, 100.0, 1.14478725583628, 0.9998870688665725, 28.850455, 868.1998046032355, 7.400476408717261, 29.23190126222891, 20.877103735098753, 1.400189491470697, "NaN", "NaN", 1.8901347122455675e-05, 0.027060481835498775, 100.0, 100.0, 0.02520158645452811, 100.0, 1.14478725583628, 0.9998870688665725, 28.850455, 868.1998046032355, 7.400476408717261, 29.23190126222891, 20.877103735098753, 1.400189491470697, 2.1853917582872067e-06, 349.71508645359245, 1.8901347122455675e-05, 0.027060481835498775, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 99999.99999999999, 373.15, 100.0, 100.0, 0.0310324846382058, 100.0, 0.9296856289902297, 1.0002555405436693, 28.850455, 2919.666821513523, 13.488417885626387, 29.399275206378768, 21.06151328210566, 1.395876678593511, "NaN", "NaN", 2.2116836891824835e-05, 0.03229687814625727, 100.0, 100.0, 0.0310324846382058, 100.0, 0.9296856289902297, 1.0002555405436693, 28.850455, 2919.666821513523, 13.488417885626387, 29.399275206378768, 21.06151328210566, 1.395876678593511, 1.2073715487277616e-06, 387.540592995052, 2.2116836891824835e-05, 0.03229687814625727, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 273.15, 100.0, 100.0, 0.0022610827262153953, 100.0, 12.759575165252775, 0.9959694968043636, 28.850455, -80.7921707780597, -15.023093418647187, 29.791883680035117, 20.948091898192143, 1.4221764838928461, "NaN", "NaN", 1.757942145823311e-05, 0.025532438947012626, 100.0, 100.0, 0.0022610827262153953, 100.0, 12.759575165252775, 0.9959694968043636, 28.850455, -80.7921707780597, -15.023093418647187, 29.791883680035117, 20.948091898192143, 1.4221764838928461, 2.684855579524982e-06, 333.29440691300533, 1.757942145823311e-05, 0.025532438947012626, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 288.15000000000015, 100.0, 100.0, 0.002389431684274562, 100.0, 12.074191193609739, 0.9976952992093829, 28.850455, 365.6399631134127, -13.431993419723538, 29.73558198579601, 20.960777729218574, 1.4186297078254722, "NaN", "NaN", 1.832216252876911e-05, 0.02665740143589393, 100.0, 100.0, 0.002389431684274562, 100.0, 12.074191193609739, 0.9976952992093829, 28.850455, 365.6399631134127, -13.431993419723538, 29.73558198579601, 20.960777729218574, 1.4186297078254722, 2.375520589500266e-06, 342.48219873375473, 1.832216252876911e-05, 0.02665740143589393, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 303.15000000000003, 100.0, 100.0, 0.0025173233805921348, 100.0, 11.460766313310799, 0.9990688996612105, 28.850455, 811.3624642325867, -11.92405967258373, 29.696745606086097, 20.979368035753627, 1.4155214568654342, "NaN", "NaN", 1.9047587153890912e-05, 0.027775792577570263, 100.0, 100.0, 0.0025173233805921348, 100.0, 11.460766313310799, 0.9990688996612105, 28.850455, 811.3624642325867, -11.92405967258373, 29.696745606086097, 20.979368035753627, 1.4155214568654342, 2.1016282695096867e-06, 351.37521461892135, 1.9047587153890912e-05, 0.027775792577570263, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], [1.0, 999999.9999999999, 373.15000000000003, 100.0, 100.0, 0.0031099170732501683, 100.0, 9.276920998362328, 1.0026541079282305, 28.850455, 2888.2345514302465, -5.760065696739837, 29.68140374927663, 21.13618155120333, 1.4042935653903297, "NaN", "NaN", 2.2231801607833962e-05, 0.032890893646569185, 100.0, 100.0, 0.0031099170732501683, 100.0, 9.276920998362328, 1.0026541079282305, 28.850455, 2888.2345514302465, -5.760065696739837, 29.68140374927663, 21.13618155120333, 1.4042935653903297, 1.157406843076058e-06, 389.6603673486025, 2.2231801607833962e-05, 0.032890893646569185, "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"]], "calcerrors": [null, null, null, null, null, null, null, null]} \ No newline at end of file

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�ZFT-~1A!K+^O{@WsX$TERxL_f8BNTW zXF@Dy1CF7s&Nu!4T3c-pIJLG~DeE2`{G_cW@PSD8&NtdjXLuIjbWBI-T>P~Y|6-gj zcVf;Gie72My#NS2LzvwT#98C7I8@r5DEI?>VpMpVvSv{fC+xIQK@{8p3V5&a1NL4c zc@U`x?tjVPPjT8|9rc>?w)$n;@rw$`ozvd00uJw-J}P!j7g0I!LnW&5AyAb6gWbH3 z(rzzuHJ(*=W-OMv9q$*F;n%z}{Uhtix_$cmi>~_;Czg5@*L_u3-BTHF-vI-!-hcg` zdltp*kM@65_8fjjz<&%Yz@%}qPog&q?>)O^{re#(EsO?xb&Y5ku^ z5pLQO(=_cD9>OPN)2ho#(Bn4%8Jc#(G)>!nwoz9%?Z4eMVNKh<%P7rFTT?gpwAg^Olt17fW_Y zsk^56HA2Qwkt$2Fb}TahXtKWVR)>+bL+}49vZ~8U4YFiE?id49?#Cx0`f3w zvE_n`jMCg&iIO!2TNKorjdB|558c{Os5<}WQ&I+MWA_?Rr3_r~O#>=xw{yxDI5CmV zbV(V0c`}e_etn1x?9}`JPZ?==|HnNijI5oV20Cu+IpqrtvZM^`oIp92fu|y5U?=VW zvkZJSS_XE0%0u{7DFey!IAnmVKFGkluzr-Q+DoXs$!uxzp6$RTols75GYS z7Sx>+R#*1)u5qKT?&%-7$uO4g()*uZl|7v-KRw9OT@L^%v-GPGEZy}#D8elLdNfO4 zy1*mv>yo8)KQW|PhPqO8uw-|UeTYl`; zhq2|QA2CX^q}7*D$I%a|*0b<|5`3xN|JM}V2qj3{%nQm>FSzy1w>nIetR?BWP_O^L zZb<%5+`2G&E^G_XQ&)ZyAkvR9i(N?mU+$)_M|9JLcc2J&)3>9$>B5hC2)`}6sbStp zrLk6)K>P|}wd|$~e-%=9sT*r0TXazwenr=P*_x2L%SvLcv@}B9^6Bbo|EH#Tc`Vk- z8XLbt@XGFZ*}DzAT0DO0t_|ysmpx^aX7N}XdoA?^eyBU7etg-VjB>0W8|JNWVyz^c zOUm$zDZ(7Nw)xf&{dm!N1^`Xg&)kMEvM##RD9vOw%p(^G{TNbm(d$r-rR3WYQgRXX zKTFB?qNU^_t^dC#rDWZ#=kpuP7ccdQ)ph@p-(bGD�@}@^iN_j4c;y`{#R7$2Epo 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 z;@bJ2jeDV&Qmzz{ZtPBMvx4&6xMfT?cJ zJqM|}y4@J9ZYnJQM*<{30wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr wKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsK2*G%C50hYelLjV8( diff --git a/src/main/resources/data/neqsimtestdatabase/log/logmirror.ctrl b/src/main/resources/data/neqsimtestdatabase/log/logmirror.ctrl deleted file mode 100644 index 2c0527678fe42a6cb8806e16fd0b481aaf4c1eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 mcmZQzU}#`qVBiE|HU^f%TY)qe5OXugxJ3hL6tHvY0xbYzHw6X& diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/README_DO_NOT_TOUCH_FILES.txt b/src/main/resources/data/neqsimtestdatabase/seg0/README_DO_NOT_TOUCH_FILES.txt deleted file mode 100644 index 2bdad06127..0000000000 --- a/src/main/resources/data/neqsimtestdatabase/seg0/README_DO_NOT_TOUCH_FILES.txt +++ /dev/null @@ -1,8 +0,0 @@ - -# ************************************************************************* -# *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** -# *** FILES IN THIS DIRECTORY ARE USED BY THE DERBY DATABASE TO STORE *** -# *** USER AND SYSTEM DATA. EDITING, ADDING, OR DELETING FILES IN THIS *** -# *** DIRECTORY WILL CORRUPT THE ASSOCIATED DERBY DATABASE AND MAKE *** -# *** IT NON-RECOVERABLE. *** -# ************************************************************************* \ No newline at end of file diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c10.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c10.dat deleted file mode 100644 index bcc67f803e6712d597844086990e4205d1ba0e02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1-D}fO6u?hH+1Bo(9az7|@B;2k2?i&Q{y~0eUXvA zaQ}0-{!q_6?x4kwtf`UH5*A+=9cH`})AS$jzKz<2^IXF=?|(smNrB&nDe+;=h2tp} zQV{_nKm>>Y5g-CYfCvx)B0vO)01^1N2)ujWlOVu54F_jw9~SYn`qwRI%>S`DjJzU! z81o;@;65=x4#DJ@l0U66{Hkm)jzKquRUZuXj zRj$`6u>^kKxQ4296?0czYv98~@4Of36svp=`&k_JUJ)F-z1Tnb3S7a<6WQ=% zi3BlU1RPdmxP^zcsYQ>3*LBen)!N#tJ=?84holT?3|Wmrf({p0rRDh?HoK@7SyR`z zZ7GUk8-=`Cu#2Y26w}cZ-PBawHY`gsbGFX3V%9FIx{-Bk^wbK)oaHzL)y`{1si-=( zVi|>;qG*igbFAoa%T_fro7Yv9>Y5g-CYfCvzQ|AT;h3^|;Izrz{IK4ek81_R||*g%;E{P!Ea!b6n(aDM_S Q?i=BL1J)u+4eeY17p#lCMgRZ+ diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c101.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c101.dat deleted file mode 100644 index ed87bd2a9f6b945d77a0b4b81c75e6241f68b78d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI1J5Izf5QfJ*cC#;p#1#-!7Ixw|v4l7RqNdBP6C`RtqN72gp{1ec98{E)D{%ul zxB-mq%_?HUZVehs89V>{@#E_}fhz!D__(&_W5>s4sPjz?$6vGdL;m&k1Tz=-L;%~h ziQ(e-zO-$&W#5ioKZ4$v%M1JO*fG&qq~&|RW^~h%A&CeO0U|&IhyW2F0z`la5CI}U z1c<=@B5?nB&EOKxRNwE1{wlt;aLSDZB?z4^mJDtonim3ENAr*Cdp?5$HVrDPmv*HG zR|`0X)0zL%D_E3x#!Pn&_Fz|7p#=smWNLVolqpYQlW^gh$&D&f1?%W$k@pu>UQWaq z4N?o98EtrKY`)-+SkL<>RvV!zG%WY`pzrGsoy zL6|=tXSuX$m45(3?^ila@>tka{vnKlUzKGpG;ToZif4t1xs_=d_7j(hk)?3^8O;z= zM+Arf5g-CYfCvx)B0vO)01+Spe~tjtfPcJM$H&S=nELU9k1t+%^6?PP!|~4Ux;x*f C!EjLk diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c111.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c111.dat deleted file mode 100644 index e568304e52a3eddcf60de5bfab685b83b51196c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0ze>bF5XNUO-d(&uqT(ZnR)Lw_P0oN=S{7f4$x2$_bx7 zz{J3|^E86vb4S{os(z_K12I>gaIfE32Tkr{`9 z(Xk0IY4KWYN1+9eGnD_6LRu4rG%z@zS}DGoolen_(OTC^nT5_IB}T)`F=50n5jqif82!m;ncKI~=I6js?nsvt44jEY1?p^2n&W@aW%lNdHoEqu}|tx}~j zh5D(I+Dwg1Og>xD`(i-)BGZ|Tv+Oth0EVQuHnu8AslJi%EG=ac>7=T!wa)V>aQzHn zRMj_0s)9Ul_1Eb~FeW{2C%2)Ze%9&7Fd@CRI#vp|iuFsWQxnQOND!B^u!u}hDA&)V zM$7{fU;<2l2`~XBzyz286JP>NfC>CL0-^`_$6J)-r_RG8&F{%SQ)EH@2+phRO}+Wq E7u6MUJ^%m! diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c130.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c130.dat deleted file mode 100644 index 1f7b454a5d5d3e3e113f94de8a182631502ed4c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0O-{ow5QQgIsVXQxJ67xvT?N^W6DJa9KnPYWQ#&~UAhAJQfE_zH0+&Htf?Jfa z)3l|eIRJW&GKt?jk2BxSp$8(0`1WHE;wZ%R(B{`QexEPKhP-up#hJS%d(@gHy!p7D zY^Xk!$Up)C5C8!X009sH0T2KI5C8!X0D=ES z;N|TxqI>SCJ>MVF4$lt$blK)N62lR%JdVCrvOjh6UxZ7(Xm>zobn2Y6T9zsnGAm-8 zmvx*bCXIz3#u(=k>3wEqtd&L8>)Q(@t(uu!I^ApKk~TL=OI!E)CZVLx(j-^H^;)@P zu5}@lD0+SSO-WrL##E%efL%g7q#`!rtuYUkgbzIN@ diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c141.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c141.dat deleted file mode 100644 index 38b5cab2ee22f7fe0889528af518f37ec3839eed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI0y-ve05Xa92+Vl(Y5PVD)cH%g(gphav#0pzlCj&DeF(9!pva&G4b1*S7R^koV zcmz1xO%>77&Y-iDf1JC2?DKCs!xaE9eB5YxZF_A>oo~i){xuyx!oPl=VCDj!2wcQOw9K+c(gAKedto4HLP78KnTUen53Kudpyh_THC$UMmaKq$A6{&(XbhF6&iz+Y2 zVuS{%1<#B&JT*3-^GB@f{bQ?*P!$@M`@7Kderx4e$s%@s!&P2XJWaARte<6>wTX1~ z^q?Qsk4IT9ty<;p!@&EMPLn(qc9nks!{AqCnG1~tNL}%)Ffq3>EkiwVnHX6LSI;mY zCM5zyfCvx)B0vO)01+SpM1Tkofxkz9X~2e=wY^qOVdCcxUSECW+3NwEhx47@Jneh~ D3^Z_Q diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c150.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c150.dat deleted file mode 100644 index 77707f8e7c1db2b2cd53b1a2cf9b969263a62738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI%u?_)25P;!1L@pOZC!tb_Xe3IWK~xgaXcS5bp29PD3~!+jiD%I1w9M_@=D4Mx z5R!kBz1^GH+)lo3a{Z z`}?WcHJyrWK9$Jj^?c1cBw;UX@pIDm0yC2YI|L9w009ILKmY**5I_I{1Q7VHKu_w? zg`G<&F#W&%Nj^96mQ&7){@*!A009ILKmY**5I_I{1Q0*~0R(ANv1_DY57j gO8@VW5I_I{1Q0*~0R#|0009ILK;T~ldfoNr2JGG#>i_@% diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c161.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c161.dat deleted file mode 100644 index 31b316ed32955b12ee05bad8a13da2ddc442ebd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI&F;2rU6vpxAvLQK`)QWEFcj@#e%MUlCP7(Hw&le6pkQy5Qc+W+$HN4fX*NJp;ps6;ly zB%_<_{mQm<`}_U(x>=Px%N53NdKv7AZ0WUV=49vUOiR@wt5ZM#0R#|0009ILKmY** z5I|tv1ddN1YMJT33IY4h^=wS=_xGj%kw&gh5!NxAbZblq=$YTpE&lo8jFq*(MYaKmY**5I_I{1Q0*~0R#|0;2#Aha?m_& zT7Q0Y^8ckv<~!M5zvX|wph!Oi@U`^o{`e-K?|IqA6c9iF0R#|0009ILKmY**5J2FM L0x|y&$2X7PxK>Z_ diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c171.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c171.dat deleted file mode 100644 index af99e5ad8ad4d010c90a0e63f8a27f713c06f5de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 ZUE{rw_CIJ~769!3MN!l5UHjRo{{#Pl$$ diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c191.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c191.dat deleted file mode 100644 index 2676a9a2def8522e9ecff34c11ed604c6e5bd167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2ON``J6^8$MblLUnp7%48WHQNwgoc`QW~OJ7K)YPGYn*o3j_sP6o*6Jq9t&8Z zkdY7)3gV$G!w%RX6eM;C1T0v<1|+0N2o_NkA-13>ipUBn3W9U4t8TsQ$?e&JTvFY3 z``Vw+J@?$l`CYgJphRE(RApI{ zC_GSjpzuK9f&U*5{PBKV!zrip$D z8>P3>v!(BiYgv1!kR={Q^t~~zeN~<%W#XT7FwqIhxUhmpaOU~$xsAC_GSjpzuK9fx-iY2MP}q9wjjyFmiQhW=;avWI1CLV8_EJN0 z@_*C}O8>tzoBoe)t*E?un)FZecgpgO>S6-Fxqklk`Hl4_Hor(&e44;tdhvzLO;Cd zq=t?@ByH6|#PMz*9BRvI_OG7K%opnyBfi-Nup2YN9?tDPu}a9M&h)VGv=|kJbI<8jdX8FD1gw42h5iAL)Xz<+{nURyYZ} zN(V>v88oazG4!vBIm8-{=_AODPz0`J&ofqWJe!fFb{@f@vD#_bJEI`sS+i$FYSOFJ za6+H9fpeL(#Pa%y@VNIA*B>NSXkT%t=|jIieUgEb`cJxy%{@OU@%(F+GZk~&xKICq zr*Ja+feX+UE-XQFmns^iw(IxoP*|~WecOtC8BW_2Q#BJ8^+`0om=p?EQ18v4ShlX! zv8j(bfn$uKi8b&eho}1O&>u!|=y(H;b!l7!m-LAzaXf=KW28hjaakWpv(gyp3U3f! zQHHhfls<(f?J*@9^%h###?$(su{n{5rxfY=4xZ7c(6Y$p#33!Q6cF4d30cKw^dS^e zz1)~u!)NtL6jMyfiK%_q+R|qo$5Cc21XXW0PPauI07ea4mOhb!DucKXREB}Ao<5Vh zam<{LD#OH&lHL&Md4^L8rTwhrYy#k(OlZJ7bgl26dus^K z?~K|_d<9tf0AHf=$MhZ=D+&5ko`g*=q2K1?>i4ll%FoO47zDj&{}W$RdX3MN1T*mwUx{CHE$+Yq>RmoI-(`;RW#*ed;%kgw zfqn>Ynuw^pDQh2OTJu|c+k1s7}C;{5}|2@CJUz$5}NwgD6_k8vhVebUKrN z704xWS|)#7Ac=|0hj^Li^{+xHfxc~rad1rXhe1e6#T3S?L^(?!$TjN$oJwJRC%XG4 z-OLaSa7vX-GGl&D-Q%?y1Z7p)St?NEptVmS_1Gem}5+I={Yx|23!3YC!P z5YVq(WEaVZY-UIfdQ95F#tsQ+bFzVCwllC!XAZAyqg5R>)2}YSZVD=90D+ za3l?=5s3oX^UxaZ*XOAgi(x>W%xxA!LCdUd(F)0rh(*D~hi9VPC-voYjY^E+qld*`~>5k!Ipi zecC>(rh}qS>*stE>-dB|=O_-RoIr@3#ENP1qaBlH%W=TIHye0NAEz2A&6-Xp%4JPF zu1`~28^^n9xz2cG(JLjIqbH+Q$?0YbpVUVm!hy8ip%~CWrA0pWeOH;;#=1Uh$%js# zrW0B~7$<$$naNX%!@>ji=mGN%0?M)f!e#w7m*yWh|2MuZ%PwcswZF>pHJM$z7}A*y zRt;Kb;Zg?vY4~*fGM9}X@LkO}ag(%zzwtFI-^AyryukT+^&Q-z@^#L}>pz!IJjmBq zdt6rDXMW{}vUK@O`2*&Zf5P{ccjPgoE^t~}@^@UJXMKaOEd7*z(T_%1stmW-!qR@3 T^Z$;u0MZxc^8faq-+TGLGX_~= diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c1a1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c1a1.dat deleted file mode 100644 index 1fd602bef91717fa651efff81da3e15e047a0f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2yK~({6vmIFdsn(oJ3I`8M|cD$5Dcrwu67|ss+1v6gc&+LDd>2(PJ1xTCKjT*Y8-c3jhKB4b#LZGkR3U z$v0_{7V2fM^k_s$M2_3pB}gLx8JYr*!ClRnT8Ah;77#mM#AIP z#Wu6ew; znEv22E`P8UCJZq;ggrD>lZ?BE~);bHO#HQ zOiRv7%0FGe!unMv3!Y}g_=6cNtzV}aYZg@haSSW#?~1D6CDs3A32Wm|GlApLlt12t z4eM8;Q#@^m@rQHRwEiZQiVM=egfrIPmzm-vjb{eWTE9@b;ga%4 zoA8|Vmm+U?N%^NMc;5Q8XdA95e>{UN>u-vp;i99)zlImAzpputhw`%oUNru^&GCGZ zis(OD!Ar(p@Vvm^R}lVS31^+Z$Kzj7{l^Smw*I2S<402cM{{_^`elU`yOQ!xV|dm2 zmB!;oQGT`ouUUW9;QngLpCoY3`dir-TvkLr(FVM3{36Zkf-A}&C-8>#tE|WT3!?vE z0dHD=r*h1P@=qDOW&ASJ*uSRyNet($zYtBqMNf<;+<>>OU-WoAk(7TjgKg_CTaMQ& z%FkwS!TME>=Wi;B@dPWlX#Kjw>!G6hk5}-H^>;O%za`cGG=X=Gzii3^&oAo!5^iD< z+OCjwxC5HnKr(|X*UbvN7I+40>JE@B;mRjwg{-ddlBlUmP_lM+UjN|}@Cosl|L;GN+PM7T1tb5v_VAcWz^VNI1pmV~4?~J)8P*F@>UlA7 z{I3et;PV{ikC@|sB{Qrql$3um^1o8)@D2jyXA8&ws>*Tvn)1gRj{j9t75My3@q83J z{?|Om=Wj*%+0ya9ZY$&^N%1+p=VAH3;#q~y>-dtzsqb6_bI1QxiuA@6)qgy9{9hGy zgFH|5A0>|eD=8&D-&6j{%JF}t1oF0`{A}d^sw#1RhnGrD-QR>c{;%2={gUGON#gjw zP8%G*qWtmF@qeuftY@VZpNGuxf8F(1Zz?JObnf^c$1adpTVj91h2#IG$Xcuik^YtA z|3=ivtCI3hM*eR~jYm*P`SCJj`M*&j#d;jY=i$izjjoWl71e*daQxr&xj??9`kyWx z|F=zxc}j}UqnYFXj^|j9NJ}FBVD0$7!)q0epX#5j9shSC!+a#wf3$S`-^mv19VO+T zj{M)L7V}Y*pPh01-?dmAg4NX+JR;FpbXqq1r`zn~KPShI=DAOwwLP!d9|JTuUsSRmZlC|{@w}_|%GYbHar+cY z8kVlvUtvD}kihj`+a{lBF3sun&E5g;fOo(<;2rP|cn7=#-U07`cfdQ~9k_8E`0*fK z#OwBaHuL=}U|e3EIm6BV9UW0@V|0M`V77JwoR21N+Yb6Av`bgVt);Ify`lXb*l)6i z7x2=g?~=6HF#oH4u(?YR;6#KYID9T|cZYet(aQ4+>#fdmZ>5zF&Y!bSd9=H|3*8)h zu>16Lr`iMiyxq=w?Yz_NbP*zGZ1MQP{_qZX2fPE`0q=l!z&qd_@D6wfyaV0=@4yY@ zz!mUM@T+)Zd`_QT3qHLr|DVB#L{3P5N z;fJmMdcWK14A0seKaTJ#=QoB!M}+UJW5*Qt&O^QLPqjX3~k?APhlqhAW=qNo> zDyZrxeNw8Z=_t#j)KJ$^2Bg%{&{2k#62xfgC@Z8S*rlO#bJlKPuv+@hnfcFPI&swjPam)PJ|9fjW|PH~%#!g&;D*f&FwP0!(C zo1R^cQCP?AItqOW8`!U-(3h}@JKU5-w{c}2RdGN^k$F_ZK^;ZrQ60x;C zxPlWp3a@o>6{|W5uXS+^52+~29HY37hjkQ=QQW{IIts@qZeldjVK|ZET^K#8!*C`g zF-DK+Fq}$Bg3;qT46iYX!RQGch6S9Y7(J=Ou!55eqmw!eOE{^_+|2q0?|^r}JK%D_ zUXf1%@pqzciT0@F-$lQmW}h%2XQxH0)bt0@cSHwN^M~k{e7)HaJwQ!<7X4846t%oA zx}O?d75zZ;8PSLuek=N>Xonj7Ci=PP%cA?JrJqFK7kyeZpyC_Ri=wMIK0f!$@206pnP1IP!lX3P(CJj{IMU!jX2ai^%#r^KQ8?03#gYFD zQ8?03)sg=TQ5Y4Xnj`-gqOe}dW?ueZFfI33FXePz{$G^BdMRh~^8ca~)=Rmf%>RAX zOIe%$`>dC;Hvjh}TgEt~T95h?Efd_Sq73LuQpH_53VlgxxLZe|FG(GTbrkxNG;oiO zB8j_+BRUFKdlO?xN8y|{3GUTVIH!%lQ5}VI+N8KoN8y|{8SYn6hOAvv!7&|$wQH(q z=_ssSQ^Nx~3TxNYr|zZwL+^lh;D6*m>5t3OD$A-0<9P3_pmW_xQUDh(^bLUeR^QorsGgwRhxSeZerK=R_$3sS&>;9{Cwm(lE17DT= z%L&7~e#|&&;?Fg_>sjs^8XE{e00Izz00bZa0SG_<0uX?}KN2_`w?@`_v-rTyTvWW> zHRjuiywH)sUdnn9&>7WL@ttpEWNuzHRmj@WgPjG;WDzn~r|3|^1{ee&009U<00Izz X00bZa0SG_<0>2TM%F-89r%Uez@u)7| diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c1e0.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c1e0.dat deleted file mode 100644 index 761408d3b3483e2cb3bc4d3d46e37c5e92d2a255..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#u?@m75J1s8gMx)9XsIY^8GsoOEn*EoqGJIjUU*)|)wt@6|}sAD0WOtjp>!ZW>r~9~a-eZ+^K-&Z<6h zQdnN6BCjSb=Z2ns-%=rk00IagfB*srAb<{9 diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c1f1.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c1f1.dat deleted file mode 100644 index 78d701f45559f9fc67104563ad350118d55c794e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 W5I_I{1Q0;rCxNLf!~V;?yuASIbS~8Z diff --git a/src/main/resources/data/neqsimtestdatabase/seg0/c230.dat b/src/main/resources/data/neqsimtestdatabase/seg0/c230.dat deleted file mode 100644 index ce84bf09c659dd97e31876622bf324671850ac8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4399104 zcmeFa323X`D-$x<-LkVI*{B4vv-8MbLDWKpt?ke5eTVmQRpw0I~? zkwJ1pw&`$KhfRO~pU2D0_g-D-?m6~hchGow=bwN6ng5ah@4fAL-U-Ig3?=C?fW^g`bA zUZ8*D>LMN4@AnU&_aEd)PR}$JIq{P-RZc6V5J(}ALLh}e3V{>?DFjjoq!36UkU}7Z zz}F1~{{7c}{&&42Ojq&uXZf$Q5df%sC*$-JD1ZLMzX+305?lSWSMzr9U(MV0e#iSp z{QEm6&f@R%Cxt)?ffNEM1X2j35J(}ALLh}e3V{>?DFjjoq!4&~5LolRAUgZ(?=P%a z{QpI74mqEQ3?*t2z(wYs2e1Dv-Z!u0i^Y7tP?*mbF1F{F+J%+*_VTTz`8<9WZ`1F5 z-usmIiC*W{{@$HnSnl@*gGO*W=m&@UfoOpXbx@^~pTFH%UY=hJIxEyd8~?jiSVaq` zyc10b98R9{PJQOYq_s|*K$W={#6a^a#fwY%LUH6kKkmJNF>W3m?hm`Y!*cK7=-%OA z((cqCz01G!UKqS}u+VyNKN!6F>IVARE^Xy}H>0+@U1?Oy z(Tr-XRk>VgL^GObXA8N}oL04VGd5$rdO0>7g9aqsA+@TsN^z;pR%v?&*wLa{W75rX zX$z}U*#aa8nS6~+YLMssN^OIdmy3QhfL7mK---dy=2o3HiVL?!C2rY|3;9NAqk3a9 z$a7IfX4>i{j6FnWS{aqfMH<-RjjK(g1Qn5~W0o&6b)qLxfJj0U%~-G2N{yS*bW{*o z2Ii@KsZmd39uQq49SvZwUT#%dd-1zg5*WYtR++q!#C8|56Cv zjrOp8t33#|gJGNge)ZM+{oa1iIqCp(ag{h9tIcZJAoje6WipdgMwbu}n&JapbSjszVaVlB#!U4$8})6!c@t;M%_bip zm8M_9nIlrf!2=SK^J|ssey@LLp?$x-e>Yg@1pQkN7WM&xgWjEm%fWC*!9kvmS$QB; zYnyd_I?-yM_pcG{ZdBBfMTvlMW;5fLut3&vw^hAb@n7e3z=n^(>IMp{LinIM>hLp) z6Dk-7+snSlJMUxlD-D1BW_ZfV6I7qN;;d9FAwh0JEk})5C^Y5W<3(}zXy=RV{d{3@ zJ~i${3vAhgk$>c+wM z4J$`L&OVQLi=tGc(yTPDRW=G@yM+gqTc9|uz@jRUeWP@(RNg8zo7C}p?`0M;@4e?U z8WY;hzXrfzr{3*#YVCVLR$Q*s4qPl=TrP?vlgQ#E)#u2l-QH^igQJ5XZ%%nF;0+#v ziSQab$=uKYgZgH)irapX%_lZXHe0wel$+$^Vv}50Dc)Ym7r;7<;3PigJ%_b! z9^DW6Eh56xU(UbylipX2J)#dag)aJX-lB6{Y!E)IhEC$jJ^Wtt{+6iu-(6Vv72^L-DE;FF+X;FHXuuR1duSB zJq{#n_?oSjr-E;}J=kw|0s-FSMt7%bv>6PEVVQZ&Xvr$I4*tXXMV3xXRxKTEp<1)m zDB-3TZXY0YrWwHi4yzFk1?ZaGIwUX-D%pb9%2)> z4-Otw@7)VJ-S$u}%49gNYm2c39f9|XGqfncMrE_oXq48gTh$gg6=Krn=fStE-<-!4 zi>?J#Flyh?>mJtoV8t$NR&P``{Igj_b`6LVi-go_29T{*PZ4WTlSrCFC0&9o>EmSNQMDCPM@bN;2SiJdcLf7XfuNwcM`Jo_>N#Il zvGVwXS3z;c44kGvj9ZrOVJCQ(kQSFTQEsnV+o;?qWc;&{+x;M}1zOnVunz>g^Wajg z(ri^Ww(9kroNqSGD^qHQZBM``STi@cWpmO-vMSCzcPr!w1g8Ux@Ux5;1XKfmmi*r*E-z1V|&8ZNTRz|i+Vw<3Klg(oaryj@eb&kPZTpSFk@8dxD|^m2{ZE! zr1Jy-=@_Iv%~*;&@ue6SnMrzR62TI_ys@!fCjE1@ljYNe@>pM<I@Kb9*p{sR{l(?E_npsWHT3@A@j05LRKiKaM zNa_L+1M3K5R%*NbZuj2Nz3bi1@Gh0Z1`HRtS^dLO_K;<1J7p<##rp0h?mThY&A73Q zT@Y=ia0Wjva6Y`I3URP#?za!1jgf0&TEZ}F}|k;q6Gyc!A1Urm&@6ZUmzwo z=0bX7l!<{twqisUGub#oJ+egl$FU1FV!2aIL@JUmMr{Emv`s1CBChoDmX43ejTH6C z6~+Me$mVBH+DWM8#lPVSM-ZqxP?~n2&^V#cKAUQ(3Swj$4pH@OG#JW8$Mu zhT?@Kpd^DkW3}+AKNzD z9Ky1P1#Md4{&CiCv>MgzER8!WhGVZG1V4?|d8`f=AVcu&2ls+QxgulgV*RNm?Gl4X z0$=zJqOi%hAxJ#1jxH1vQuFA^)qHbn&$y5fRwov!(6--e?yhrV8n0sx(y=ET!76u# z>A2p4k`79QR`k`lw#O1y=gfY^FD~T$*Zg8(X?ba7@#505++tyZBG@tGjy9&Klp*Ipz>p`j}23t^Pd&1O_2s8*tyx><%inXbpBt@>p( zt}&$rGd5vizGS;)EopbNzS}5QT%7c?CLUPiOH#m`UMOHkUK$N!kH8$psdjKkc5ios{!YJp zuiby3HR#jZnp_?}*_ZMGI-BSadvmwaxCv1bC>~K|{v+qxxdv}fWsFZnChYS1B;^)O zQ!t(5cA@!rs-i#KQnF{_L5+b3med{sO73l!ZtPvJZnUmIBDuGIlQb1*Jef(gThK#| zH=zeZpw4ES(u8E3Z=p`3!t!2naOyhk@^yBdon~csqrNBRPBX9*SO=H&EwPWjOhoVV zw**!-g8|=8(OfuS`XEHWsz&vf683^#82S2e9xdY$KuV}bcb)_(kAn{h4LCOzOhgVh z6jxZB7t4;Km;hGBI`Bd$B+il~Nf9P?dIs~cu)W7&ViN!#6(}XYykMYP*ybX>K$7v; z3u}g*L2%UR5q4NDT6@F7V{-*fbg3S$KNtoBaLxj2;>d<+60YwDY)c9$jB`sUt%qr$ z_#KL<-r+zOX8jj*7Ga81MmQQ(T|uBTqjgi>I&hdb4Y4@d4?pRW;Nqo7Krl;s)U+i(8D z6F-*<0Ft!SHs75J00h&)qQsD+P6YtADN8B^838oTQ zGWCR3EU}`xB7@U%zOc@-vjjb+MT7KGsL@3olA^OvOW8&g@V1*1!h9vaPZ*VHz=75i zRiG@e*H2T&6_k^)#pdB4rN?_jHVt+cfZO+q%)%H%R!Dg&#HEFK=__;pKVTda~uy@tolnQPU`b@5rE&*sfq zy>@duL;8bk3r(yyD%W!1qMVlkKAm@o^9UgR85V9?BF9iz2PY8m@71yDBoiC0Y>cbQ zsAee`c_@+OaDa3izMk{t|1m{J`AD{r`yHx*X=Ylg+K~{6aq6t;K`pk z^;J|}d-5-dCjOsa`>vkD{}ZPl<^L1H)6G36E*r)Cg=M(5xi#{#@sjrXKPcXNpk8d&-R^o93?t% z{FuJ-fX1|y>H5UzEpO<&DfDd}-Dt08oTIuQclpqYidZ>B+UyG1fes4X##G#yQ>lk7gjC= z@G-PM@=*A^cYcge_&7FU|HYF(n2Ll`k#O&w)Fv#>Ixw{fQ*MLl-2;rFL#MlOVmiLP zx{nM~k#HzU3eBZbo3KmTvP(KzkjFM8LZL02Vd%w@B3b6cV-xoNin#L^FW`a!pYbEC z&Y$(3#=b2J*R|7|m4ERK?~1%a2w5IjNpX+N;>orYmu5(2kISZfR@2PtqFUYwkB#T2 zyGG5-Ae&qp_su1@0IPRuFfW-kP>gY zj=QfAiJOUd<&DMx(ABK+@q!Fp7Jm@_hS36;o08wex0sH~&9aooWer(_*(#USd0bKp zIP5mLq|OuETqyjAv^hF_fG&<%rLqz6`V8D*8b`ng74e~rBOnkPSRF4a(ReTaKtU}! ziB~m>*TmuG*Dr}fRi}Kw0nd;0gQ77{ipQ6Ze_ITs)YKtfO34q2BhOHzPBrSd;8?*8 zVrC&lh0zDV@|FIWAOwJx`v6fXrVV2RYD6ul1BK`_r$`I}^;pYzUOM)5sp>5z3IQ$f zm;eMQVu*?`cvD)$VmUKmGP&F12|J)Sf#B?6s%YGYB*5iK#=3@*q zda<9-BbnfGiuO{*xGR9cuHlYMxht?HWfxJCvH`B{(RP2pBbDLegk;C4yynd8CMDK@ z5u-xkmm0wP0o7IEQpp~u-W{>fi)9ig7`qXFP5O&sv=uUpf^zLNegj0?Aq-N!qK?~+ zP!@?nEsDkj=Fz&_$RIs?frAiUzFZ&qL>y3k6Ia^?9Hkve! z`bgvjktdFG%hMC;Ng8Np67?Z*aq56qlF8HoZvsNZ(Ms*chWz+xuPhRhIQT!Lv4Yjk zF*ir*fLB?0JQhzx;wBuuza}CTU2merC%o>a4tR|#r8p;)%T$V+nL6MV{&=A|Kl_|! z-q+6ksQCNa{@Q=?zgYbLA7K9foGz*UNZ|jy=T3N=zn*&cP4*0&diOQ=r+h4Ho=&E} zGB_$rz5A9L#K&cI1X_!&v3bnM!%}@`Prdt^GBSND`lxyLg-B@3mYUfGpnlEIjM<0T zMX>XnK70;gv!f$i2CGvr{Wpa`3V{>?DFjjoq!36U@L`3(+7rJihW-!#&u{u`mi_;y z*#7_7$i$ND|E2%`aZ*BFpuJoB;XjN#^<5grOw@+(Ui zVPWJ5zsdVXj4%?Mz;I6JeT(pKs%Tw+gHIym!hw z(Ii<)>DN#Esx*#>_f3^!pH-nJs)fU&d$)pq{WgdC4m$Fwgz(`F86sp{P0OHC=&49w zbEUFf3Lj&sd%NSb+xFQd-SNn}p}nK)E1P_4k@qT^Lls=6a*NGRmeG^>q>0LK=XlK| zob!Yt0NbmUijgJMsBqzvmma6HcDaS_K&%0vP;a;ZQ<-59_$(}9p>?HD_2Yd539v=& zL8W7%aB`%6y7ao?^+&G8bO;&QT4_QGffNEM1X2j35J(}ALLh}e3V{>?DFhw~1b*e@ ze};Co{r`zS_)T{${ePDA|55*c3HtxjA7lIfbH8Xkc26)2+_}nJAq5|Wa>-=4VB)7T znG=;xRF&DF%9HkgVdS!~fNdejK3Nh*v1yJ%eaK$br|4+&YD}v!5trh9LzB@W1(2d} znqU+W8J1l{SO(_s^Rd^gyr~Sk4VC5Q)xF&vG7M_$ZdES90k2?@wV_({RcJSqt27V? zuir&@XST^TUkfe4kp4@q4Att&Q&N$SAId-|tyj0It(!u?H$N|ox8U_-r_yLu;hOt9 zdfh`73|`u--l%N&XS0&>ZWb31b1xLkktZR@39s%|H*)x=wZ120d?Hm4;*jdC>sM7a z2_za;R78wil5m?gSrh^4P|T2FLW-*0_U-frfMM@2%M?+!7Lvq}3R0$vHz7(D7X*SJ zD803)m>+enXoQ@1NIv89jS3tBaT;K^idw+Q00DFf%z%Lavch=-?l{t9B`cFZxPRr} zoRd&H`B{dZgT4}% z32g98FI~ciNCUTHvrpP+MofIsgz9F!QK??8k!vpCTioJI1X-h*5W40}4Ea0;L|?~P zN7;giycye{jP_0Ye5N@uDhh(o3_B3$LJPPcR}srxHg*lf^4PQ?#2F7zz)B(Ez1s#8 zBoz>$LR5|<{2{s5Ff+(eG`L4xsS(#WmuT??$c&1~BjwTSgZBL^ZrPi#<)TxY@C^vp9oR7W(Edmlvea?=H^8M0=J6h zj?{E+=B6z&XSL1S{OZgNQ}u8+Xjqs?K(Cs__8!*@woVeAwi=A>Fx=ncx=B0?5_We> zpMlug`fuKkWR$4Raoz`;R|(TW3xMfDDJN4TA`^9x&@lFG!j6pPtUv`6OUXU9LR}_p z&a3W-oFOJq5o0jPM8qf*KVrH?p?{MTj8G7U8;{Z?69!n!rB*-;!A=FyiAfkkJ4f)( z(40SeMoSd5{r~y(PyC|A|3Ab0|5;s9{gJ@`duL8~D@>-Csdu?}n{nS!%z<2V)pq)C z3V{>?DFjjoq!36UkU}7ZKnj5r0x1Mi2&525A@C?5u;yJ7&Axa3tN*~V|NkuW|DmS< z)%!{HhyCvyqARdT{L0GyQodLmX{OmZB#E;TX-E2stU46@Qn2rbQ~uw z=o3yGXZ1-4>k-3Kp}Shj&me(c{q2^C^EoKSq`cKBPXZ&n!5d1J#|OFbeg~sgHL;Ed zCmDUzV<1`JNRNRZ0ndYpp!%@59<<1dFvPIYc#O+IQP{y=)6u&BdB4C=;)bxJqAmz! z8~7)lw5dJlTT~=!ul10<_}jEh`;jNApg&x)V9gu_t#39;a6JCG)I$3x3C}=b+{bUK zq6efrQI#Wo>QV=^5r-#22^dEtM-ni;qd{rVgmqA&zCIVZw*GQM&!DDp0-~M{C}Z|Y zhalH9V(nU3XdNha?-l|mSEf^Y2YW0&%Z_unVbW8Cl^Jmye`ujs-{p|C+9Fb}^#?V+ zjC-E|+!fJc)K?#j_wwq%8QNblYG|UuIr@w1m~@1*%>?W1>eo>a-b61nAqkY^F-#CN z(EzRq$n@E%&5NdA6GLF_*&h;R|Env1>@QmU|7ZC9f0X}EdjBt9*SGVlOZ)la;z<5K z<9#mfb^T7id#~MppzTGc_6p!tDsyG)0fMH)(QDT&*v2=~c);<@dKwQ{d5Zl=!~?dD zT0UHG>6QO#n>1yg=eUWGL2J`EzF!}4eAf`jce)FO68&~oRy!;C;?hXc53eb4q+dAo zDEAKWUa8$Z98T?Br93$GmZJQyIJAuXW^t?{-7p^wy9W!Ue!u--@an6>9?a#thj(0` zB)8gwKsaYnFB}HscLZAu_Vibe<)dY`%?F<;(wz(TwCRv#zjqjZlBJ`h0ilVc>+XdL zaV^J=lk8e8AhX$`?X1Nzlw{jWS;;nRq)LuWBNe9Ph=Um(%J9Mc0Cu7oynmvCS-6XV ztOo92UN?Kh0#K$sLzYB{7YQ;ygb?M$d3DLjW&FY`;*VGTX0Jc=Y1KPE9>LKQyTdzv z?=~j^S_en>1{@&M_h0#fk7~#o-VMaNikv^_@z+~NLH~i@9l)E;JN|9F%zEJW`kkO3 zbQWYa@#g2^#p2?E-yF7Y9RxmJyd3n<8UF2~8fqUM?%!=6-oa2*Z^A>5=q(ud?LMk? zIyBb4-w6(aA@zW_Qhxj39pJU9hFy1r=Q(c&7+vq^&RzeH6mo^ax4nw-_J;%iR&cwA zmXKKdwgsNuD_@w7PE33$O$(+FNFk6yAcerAgTNEZr?Y5%ZSLQTK0f|*y=C$LZ+K52 z=d+O!JQ+#hgt?c5{(mXozKBcUg^`!Q7rp0k2`u+}gFz#>jU(@HKbZE$hj$FmKR?|8 zH1`QH#$cs=8#0QEBgc5odlq9X4RN^NIvNJk%Oc91Q@7NO6k1;$3`;3kwaSE*53DUA zjnbHMe4T-8Rr-d{WO6<=M3+rNi7~pNQmfT4o?z=9m8#3oluXc2Qn#u#?oDVt(U^Dv;|hzLwF8~V7(~M?TX2e6mMTpr{+X6oRM)o`@U(DacYFJ0L2@;4 z59wd8wyyZQjVUR>CnW{Q-&%#0((*_OAgI)}pg+Kyb?JO_S}Nt0zW2oUNGiaP01Wu~ zm)w8GRx|gJC?YnEqhxfq%TBYhyHVd0tqQ1RK_0et;UgfcK%6b$sV8B(pN(;b0unMV z7X_@gjF0o;rS`Q-qgk!j#5kyH3L5u_XM0}agYXwBc)=uQ5bR+lgGcA`-}6%<&Zh+8 zEUxS?!g(xQycRCD=a<@rmHGDaEr>kuvv`}m!R9^R`-V6fM=0K&9*cHP)Fc)~nej8M zpqDS;CA+H_`(q0C-XAG~#pLfClgSrSfC!gA)j$Hodyl1fdn_$ez z*~Ro1hxLDY@}Ep}aoF6gm0Q?z(vK1ZGC+bDc?a$Wx~RNANNkZ>*9HEU?hv}1P&f*b zk#$PHQMy(tZu#*NZz-}%=7kL>_rg-)$~FOae^by6%AFD@5_ zxXe75l}$}@quoJ^WFiXCXqJ7&h%wtHcKpazWE5zcihSuXta{!=h4rRU;A!r_SYxwV z=J`@}`7Mk&W452$g4{>WT*OlGBW0OmFCKD;ra85EP&7;ufo)E(J7U}BsTi&~;yUqV zKCT^=hQAJ9Gz#G)7U^$+Ef!d&++d#(8*FK%vy6keJ#vG=d>9BNC9eJM+ueiUPB7Rj zLm>lK4~3QhbOhT8H=LMyb}SH*!AzQ32lUG^*FCTb0ZB6L&98 zrZ>^cx zea68Rd)FlDtDFHa&#OMcSHyY0j|-ix`x^3i3w^V4pHn9k9`CUe!Ej=Eqne5?S4 z(SShYumNlDi+!qGRm|@4Dm;lWNa+qiUB(SdWw^)*-B>+DFMxKl$MJnP!qUQW(WX2H z&g=!y^zijiArblkyOcQ&Bfurff zDcnYq^VL2;#7?q2H!1&axZpfY2Y~P@r5y`?G=2ZMzHErrvP-E@d#e^g!ygpabP1>k zuq2d3tV5rGDw7&v-d=mNL4qLdHkF*%l@F0zMR9kvk5uIph_Bc&Uhoo~Acii9#Cap# z@;P4ljHySW(1-Kp&ebiP?=MY%80SOD^qVKj#W-SOxMEO)xE3aI94A`{+n&TFpE+~m z+ArZm>!}>_S+)S-2aA{qD1MefL+V_WwQm>!xW3&K*%N2uC7IfKP=NS zLwGQbDHQKCOE|QWw=qc@B3`rfRBYQ4-HH5z{U3s_me|Z*_auol2_oMGB?ZLXjjN$^ zBb5XyM0vxj<0Ewr85#!7=B+WwU7z7SRFb-Q|DzL8Dw7Dpsh-icqJlH}nxxTNWYBWi zXRdYVTyHF#ur;Rhu4l|gU?)F8I>wY_D=uXx2br!*-%Hrl>`9NYS8h^HP-kZ7F>V6x zg!h{nvp#(%yQ{2t8J5Y%ZF1s$j z*Uo)e{PpDdp9n1d|9S5;a-#hIoUG~mGxwYj;1%;h0lM{DBL#Rbcpp>m|LKKP_3(CY zTEQLE|1Ul_rHt{M7~<+mun!Z3{gFcyLi{RuLY`%KUS(%aX>1ZjdURnHXN!0%Y2MLv zmOO=wi&|JsEOiXV8walwF;DG@xDuiBbVS!(whN_GDxk*0ZsrNyj9$P?HUl9#3qv&ufh!*GtEyBOz& zoc42+=ddI)F&cNHk{q@m+o458@+}C9Q5x(AhaIva4q-9_nGO5_LIRMN zn&rKE173ccWwAI~kG~Gb2elS2V7b)TsMfG5t((b(c1o8k!cRhIvY@m!+L&Uqx`l`g z&_CBUs-%q4ihDyDF^(lIbj# zNwH#Ct4&7Uq(jBnK*?u{Q7HLHaZoUFqKFYB>9uLh%HJ*TBjZFhh=%0ufOPtn{<;jd z8Mj|lBux=!b5seFXsDQ-Y>zEy1x9Dw64qWrTu*(PnN&pR-2}N11i;;TQxf}+31YvW zzr74%j}WaR6!y<}XQ5DP?%xgWwWrtDe(^`VAC_WoaVJ&eOwe{oz==%iofz3g`WPr} z)i1|xp-Gth@Ugu_0u5?oC{x1mc>%}vDo)INF&GI)VKb*)`b-bX^>017I*|rJI}4b| z%fMEZ>0-pkfH=C8F9Ssz8#wh)Mk zGlTYQJNMW0Glf73ffNECWe7a=@sq#gc~AUL zC$3vF$M$&j!FG7`zPs$P*LD}Hdbw8F*rV46)%9J3!DEJy zub9N)R|Tp_9SSiOj5@S#xWK~ntbyeRvrzNLHq0WPaflNgP%Ki|opDGy;i`~5LQRIF zZmrmkQtZ>WezmcV3z zECOa}a#Wn9?t2vMlAx@ig@i>)Fs^KBGlkt`TT5Jqd&!>{j{|fkNT6JGH4|4kyOGuf zdt6Qxb$1g}GW)%#`z^ZtQUd3iS3K2iYniev;D#5v)(Y3NZf&~aYNVoh{c08Rlpl8p zw+g%z(L=LUV30=$Xmqv{t!0F)Dn#HlvZm}%R8{aoWQyBy#8jcElEcMPt%O3xj%^hf z-1du6*8)EybRn7C{DoX$H77=@+9vEiKXDo!&#{^;SCs#XFVdIg^7vmNe?FJZY(cG{ zUhVoY67kooE#4Iv!cuOrxSY@DGB+}K&x`*uv7PIV@;Po?^do-T6Ob1{cMdvP>g?2f zRXVI#vKhI}d`SMCVJ>2rc&cL#Gjk9e-WlGdN5~ook8o_XFfjuw=HRUQeH@m#wph-B zTF!B+$&e~M%EcsrWpZ%YLhup8f#Uq*PiwAT$N#(bUH{*ATm1jWng4%AmsEcw@c-V^ zC%o$4CiFE>f+x86C?|+rUTIXz8En4ALhP=wcZS&7nfv`-G9prBuU6E`r>}&3)1|14hR@$?P5#rV*au zHeAW%R*9D$!;USd!ttA5N2aFtNRZb{BKSRnf3WnZ5N@NlWYN zZ&b=HP;R`McUDZn%1NGi7e2CuT;Hm%^9+`9#lq6^(#qn+rR9l7ZEg{<2VFo&v_3B{ zS2jlJ%!KQlGmZqHs${~;vYO5Xb2{?k5O=n_TTKrsj-=?!hcsSXR&Q*BUIT&L8@!s7 z1A?g$NS=>kHs2 zsB2(h%yf(3_ZuAu3n|8tui>p!lOMex zM+valQ4%G9f)(~QsFh@e9S$+j!xYH(U8ioMvW8|N_QH$v&LBAI^z3UMT8wcEXB$;M zBoATQMsx-{{xQDEVY3`MD;LkAtXENNLdqu3%KlwE9HVN&;#69UMqQ>|f~#<IPm$xnU5k(>RP@4k%33nuL3n2qfhV}1YVUL1fy5bq6Mhpj$& z3_paU@Hm|B4r=gOP7b($@zZ+Klg9bCR|{?U&C8EGEI#dh610Y0eZhm?v79}X{>_Q6 z$@4)Q+(RL0zV;O#;swIjqkkvq#EHRR`fz%<@X~xMJb8i|Vi#qNS0W~MvtNJ9abx&? zByr*Nz^5|_pObGLRtm+7K+D1eXjwk!28Tm>A&6HG_k;ehJAL4ghH*XbG6PKE`s^gfjisM?pBM8d(_*#QH7i3Ms>$})%9@QvA!T4 zm*iI$i%a>%(Ltl}XcTln9CtH&WBr#Wet9BD8|ZFKzdR)XY+^Rwb`Vxl% z5>P2lNr;Ika_vg&uR=Y{7X?BBOqmoFk%Tm_`|Fj~^$OmW2_az-?+i(H!?Hq{9MtNq zv9iJ`MTL?3XPS^gAca5*ffNGAg23EgIsI?Zz}noNXy!{l^otKH{{I!`|DTU^lEnW@ z{r^(o!U`^^W8?oR|9`W4*t`5QPyRD`C$-Gkgex$L<3YDHK08HFkGN8N5QgRW(|rmm zn&3lHHyFxmq4iFFsULc{n(PI1Sl%6k<4BK&>?Fn4P{TGoYYFYL0}kl)sZmQUO^SZE zS=TKWRdUnZI`XQl#$tTBB@O3w)UfgCmNY!rQAy*|Ey-@|sEqVyXHPuhzYYZ>Y3v-y zc@>!uhQdHN#pJ4ai!6y_hHo|+TZm+MgoOnf=|fNm%D{$@nWyqs7qYq9<)i7FO&}oK zunGeOvTaQrIzpQfigVOLSqM6AF;a()TL?ASGUP&ruXBx_Ms`$eq`fy9HW9obq%lP5 z&{5i}7)0X(4QZ@*bHOT(54luE0O}-ulfJc0FboH6EPRUxJpev!em^I61tKuvwiw0o!g)dBC+( zUC`K;ahQRf5O>s%H^gfO1A0yxS)ecqs`fM->ohn#gG`kIO;#INVx-1$3p_E-F0&rh z5s?;YKuVvlUG{3^uns@7f$jFY-Bj8sjaY@NfT#o$0K@HAK|rK!U)qF6mcx>FR(Eo9H-AZa7VfxNcK5*>#$%I!#s)9-+~is>vg#$z7*O z5g~D^Ci_m44W~)CiL5j#wQ{97qFJnG1}>5=!}nfXDQHN@ai94g-8#Zhu@kMbyF@O0 zUEsJg8#*(Csa-OL(2Q=z&lxkp=%dkXxwV9Y8kRg*WkqYD#VP>xcBWi5K3ic>>7 zl29}uglPsthz1qq5HOrA}WlSj<&1FE4Nlx3b0xp9h&~*-V0G<`l$); zl^=NOE02rtn&cAVt_V>>!fdql#sY0YYS7q+)Nwj~$?#ERh*L~7CF=6-Ps*me_ z)R{8j5GHA2+%OVPtO>_3wtm6@*m&kfmNs3EcP?!<^&ljf@GAoSs7SkvC?E_Svbb&u z0>?B0m#zmmEkWKT(LjQ}WpS#W2wl*ydss9dY2@YlTl!wQSUwq^`X?se7DO;uhcgtTBZoSb$dBO28X4ac}T@nH*RzE>*S z>Iom+&=8b%wriANgTHQm&;6Y@2XO&iL}!ftH}^>)ZP;I3?LgYl9@*8$yywsr-j3dD z_aDH!!1Q5>DxaPE^y9kkhLYe!SpzPCF-l*|QM*pq=?%I=$fM1d`@%??Pv20cj@z#c z5Q$SC@1Tvx(5ibG7gxN&nj{9d64t5fa9rT$E(KP+L}6S-sW9Ye3{RNQX>-_b4}&`o z;-W4`0>l=q@Ut}4R-*(p3Rz&*nsGxM7vVNGf-XW+8&P5D!8pG$pS68zAODHXPShJ8*ON8W4kj{wlgk<6as{;PZH0}42UV1Y`%m=wV)#c`ke{o2MIm|>;f^b z_jzM5p2i6zXxAvwoQ!wH73i11F|HNwJYck`NA$gdT=}N)s9~l@3*-olVX20tA9?U# zbvN=46*gPPlQRStQ%Wm7B`9~X(7pw=?dUkMBAy&S{b%jU)PjmHe#QH;MYx5pZ*g~^ zMPqUp%3sAJ=`dTmjh4JSc04rNH@ES+mnm0eTbS+8H`k#*u2n17Nz_JM4fW8>hRsE; zFH~Sk_)nZw^!yb+`6zhUtDS9ZpuG})u6Mo;+^tNG|AmH$|I`C z7F}TYrMYS-`+Cj~|1VxJOw#a)6KHkrvy$Sic2+>~Mn}**<2{Mt?{2iFAN)6aFFS*$ zW{x-XKOlyFu@J1_nmyX77l`%cN-Ly$Q$zn%Z^fB_SjH^5Q?UNC`ngodOuHg~P)uui z^)^srX|($pa1U4!FqPY-#!Wgcr=AyHJ3I3-S~J#X+F5*qn8ivlPqP^9tpv_9Fbka8 znme9;9`oMkoq1U888g9dnRYVYC@0e{0MnL6djbKbVKU$xTGeK&T7DQa2^+JgG5t&| zuK4kNJohKOpZ2_Gf7JVDp7+ded0)lv=e=L>yr-{u@bGu`d%b@M9{mSS{vKZbcTRi} zaz)iq$iLoQ91_!^S{x1nCKd z8$6$ejfq4HQlL@0M;WuKbOzanDr`)g_xCiiOBjq~%0My_5z@#mTVy66{PKsu#C<=E zCuO?b7k`Tr$=y?quYa}Ga%p6j8Q>*FVrgU-k_krBI zG_uQVkzJ-!B@o}fcJ9XnBY*I3|IDAW^#6;Hih5qu|KDj*-uW5gt&u> zS93NT6b`R)XOf+#P z=<_IL-eB142ZP=Fa3@@D4}#D?qN*$kU|gdMYHVZ}$H2mGeJ8>Bg2E*W9Oh&7FFMzlFASSCB zwEO#aMUxeTeY_9H<-8UcLgii963~me^4)g7y*~{4Y7~Q``}ct#gVF&Kd6lkrhj&Yz zj(EMImMpf^23$hN7AyA---fSfs+=j{vI|63{cLn^-wyilh{=7Gd;NZJ&?d0Z=-fe7 z-bElwet0;j9@hJvpuhgW8IergJ>+%*g_Nqh%l+Qb{YWL5YE`1`CyY~-*Mlir%Fobu9t_rmJ?ZW{eZY;d&1(OeeFqix7d$8PbI>3qrup#Lr7AV!4 z)zxD45X*Ki=yZV-DC#sK%4~uTMDwWToql)tpmKP(eYhXo!X*PjE6EeLS z+y|0_$T-swy#kXc+{AYKuzUYVpk7irJtU&K?gH!97?I(LqI<|DNr~my6U+qVbP#~# zvT~y1rxF$%IhU~5n8}0%$IK=yIKgz3HCNEtz!^4FbW34bn7wKp);<=#CYPInNJXf*=(BY~}%pr%$D-qt(G_4~nL`KUkW^#`T> zes3^9tJnwQN;P^12e;b$Uy3P*Qy6CfcIUVT-GWY=*dTcJyxu*8mEab3X1{%~#nG*0 zpCX?Qh!MHHgQI&)s^hA1CID#@UD>Y6WW=$%R9QBKcj{SW*vVt8b=o{U#BIo+y0Qu{ z4V^VH6X2o6q>HVdP)Va!LcZJy3Av5lJI(GNS18@-1p};+OspR69~^ap^@H9mg|=c6 zdZFXSsaF+%pch>Yx`(OpPKui41~uBi!>!#^<|< z+D$}~LwZ*_?6@@AZO1sRM-{Cf9;nj{q{HZ<+@^c0(Ws|_=y+E9%Vo1)$E598yR|12eC$enSQN&D}GTdZsYTU zFis%(IR1~U#mGM*E0Z(UWW7DyzbgnbAa%RnyXR-$ZXX=siU%A9fut)Su8DG!X3x*R zMz|ediLgvrf(k~vv943Lr&YL1f9=KMEx1ov8f}LMJ2G65*c#&)_5(TZ6~}(SY0*%< zPdgjw9(lFB5ASnJqpjkEMF;S$QoUT8$)cm+eZiTD(V8&}Z8bFIbX?~8p?*L2_q?Bh zrNHlc{~XP(J^Npa#^?XzTlXyfKj8QO-x%pS>HWX7skxXhw3lFOWmx0~i}WZJKZ|%4 zKtJB6yiX{*#A{%+a0<=pn7aJ@sdLie!1fIDk@LV~`Pm_*iIw0wxv^c~P;ooOEpPk4 zL2*05c8U`^wSh+j`FNRRIeSFNVS7O2T)f4RX2K#ujWb|(K(RflSF`HHLbd>+Ec6*M z&K^i@G$t1XthS5~8T#s4rO~X`Yhvhlu=_Y>tDZk*XNia9xZj#i2skIL$ZoF`f_%PU z+QLQmEvyr93c;*!Kw>*sozV}OR(A69w>!(r^NTR2q^;h@|85mlvDKAn<@&9Y-)@-( zDW!@&aaD*aMjy5y#yTrk72+j7+oe{UKGijRUWAfmyD|26VbmlK3_xw}Kt3E}i&mW| zkk+yQro8f2so9hmP0{LkJB9detJmxypf>DiN{y@9z*x;&As$O36%akL1M-N;a8`iUv?AuW>qbZx=`o4my;om{CAk(+Nr-QruoPI&r(USwOT=+h zD0uiR`O!I!6RQOOL)wRyb`UdL_v5OM>s~vBnXUVA)yH*jIe(dL2$M81ZWy7*m)XWJ zwtm6@nC(uzP+cQ`RYESKeEKAM6cWWq0YH@^zI#TrVt5j={YOO{361a{MGL7MV%e=k zhBBfRV<=(+tNBERqWAY`mqvCgk)e!e#Tbh1KPoa5z1K$%#cm}slo72MLkTx^B4olM zV{s-ds#=Q-D=ZS*nlUuTdsGBWAuSjUC#Rjrh(@(T!!blstiejXP{rQ~)6^6KDFjjo zq!9SPLST)(0AhIm$3On5|H$J1zu-NAN1V!lPMfh=&cgU^PCy9=+T-b<5DB>$iy!wX>y0Z;dG@HL0o* za<)U!f*i#-DY}yzDz#b-W%gkfgg%!WGPJi7G^CZfQW&Jv=BhRBP1u!Kt*Lz1x+Jy` zISV6qB72R}M)gKQPt>z;s$sREV5OrfS$h64VA`l`CiDh7yS*exskzBA6$&-9*W6uC zXo@Tw_v+J7xD=-QK=gkU=M4d*ffPwyyZQjp-~2=FSTW;GBJMWi;Pj zzO|IvzA1As+eFVW4r41D5e84}X}hFlIYwoz1lN|$-uhJBPI1fIhG!^lC#1G-6e9J} zS^B+?wr{V*>a61TZF*--@2npg+qb!I6`0>H7U7d}Y0)eeV?@(`ci+1`qG z(J_|iW4jsa)=~8`gHy*fF{Ms>5ne)5`L|zd=-KL+| zl2>#lW;ghOcnI*^Kk$AI*8ack{R?;j{NG9E|Ktkk{7+pxO`7~QwgSK(Z=8PXH!S}D z8(9DUY=qlS(*Hjrzz+@xtZhMgqm1W*0Dfiv&u_}AhqrrETNGdZnJ535?of{@7r zlbC&>t2^C5-BaI?+=t~P9~9Rf8@S?fAnFNAVPXjUEdGZ-q@}W5H4K0(!mk%Z==D4Y zgFDa4ZR@@omUo9M0w=$@3#;1AYK7xqIZ5#~)UeIK%VOB}NQvJfI9S7>M7LR&TcApA znp?-XKTvVw(=AzQmiOw7J&I*dC5=zFWEqdesx^S4b(7l+Ki!f$rOP5zG5_J_ZdSKi zmBt<%op0bxSiMG#Mbhj$pnzY@`va=0u@7e3rvG}KrL302sB&R7fmWlP!XvO8-rM3; zE<&s#Aewg7PB3d!cUtv^E`b+=LBB6tUI+waXEXu{TaDcc;UP2UCgP2pUIgiM|E8<> zIIPnz|L6tVEjYGNZ`WRZ72gK|Q-b>NZqR3VFzSh+=q`*Y;vK?F(JrE>3Tzx5n_2Je zxN&p`rNKTt5x`Fc$iVDjIplK&Sn`Y2$!y>c@m|5&1OyQ+To93oc>#^>;4s8SA-Msp zHX`hOJo4MG2YftdkSUDsKzp5F;sNb-5m3R%HiAirmkeVAFxUmKTv}(0Xa)2LVMP1~ zJ%R-|jje4|Zg7RsTg-grAoh)##zTp_AVx6iQH4c0Mn=9c&z{%CSYxBZ%tkcM3uF{S z6|@4-HX>=Ry_TnEQ`T7$KG-m+ia1NmW60f#(+OQ77n3w0g+K~{6apy(QV66Fm=FSM zPrW5d{`1Tq_zM>Q?|V-n=Y>c+XCf(_F!z+;|MM%wi%a=}3g8gW|3B}YQ~dvo5C2b| z^1kV*=`IX&XQa$4Uu;wG7AYW#A0eJMgTq)4217WT2_54J#!E9E)2nYQ@6Nq#sBewO zuu-n)mgv1HJiHN8WHIOAyY$iQOUT}kUXiY06ful$Y#e}0RKJRdq?-KcRNG)Tcoa~I3QH!hVQwR#?#UF2)59;!zYc_nq{>H zNsZ=0<>OA?R*Bj%bE&(wqoeG9k9&CH#Nj9hg0EFuUql?%us?NC$5f) z<`%cTj`>MJfFf9(X2k zSs{XUJuME4iz|z(I4mxX)Fyn^`*hr4QMq@2_+V8cAaDr<^0_mjVfLJ%$%?9Jr%Ep@>lNT|{d#o+F=$xgo%J6B zI4oWCl-CQW$!M{cic1L0xTMU$;`L9$1r>!c!+BY)ZPuygBoXDbKb4m~C>^X&bw+Ef zd79Ga)ZBAo{6YHy0&^~n#`tHvv*=EewyDRy>|JoiE`*4&8bR5~3<|+>aze$6h!MTC zJaP+TLQn{bo5=KN1fXF{?iTLn1nihN8=V6nXn$5~5otTRHRDPp4O5S$NV4q;=) zG^U-y^I{J9;wrh$8yyo|1gX>A(s4R9ZbgICS?w7!`Ot)Ri)Xmf)D!{<5O}8PAqwEr zf8P72(E0y!?;m^Kng7@OpYi*W_m80efBIw*6@TT4dHi1Uz9JfVdFzGmC;nf@|9h78 z|50u~DgNJ6@E2JB$|wHR`>c|;G!ckquMO7>PSaH0+vPPE9N|`Uj;lY`94}STA8si* z5aMx-fyCK5qU7Fo>Bb(eKCLToR=T%-vnABmu}m;7R?0_O(o~4=)r^{Ad%<98evz#h zV)(!NwRlGH7{iR`c;i!TKA7iKw3m`OUwcxv6?p8V>>}#o>NX?n z#O?k7k|NIqWl>t>Ap&!VK`}S9ZadT+p6oh zta6%GT1=hGm0G2NO|v10hpgqKy7e?j@Mt5P3SdUxkJl8cERS$yP$X%fJi%oqQ6D;a z$H=vbRKQ$MHEGrwA=PFPwQ;T+bRw=L!ewf$N^ps4i6~U0xfxBN-5VUiMgANY`2}KfV=km6c1DhT3)x~0 z>xtGp(&}SbzNt6Xu@)Q=zxBFW8Z-{lOt%hw>2R;JYI*T*xWW;@TJm(hgXuMls(AyhjrIfx1M77iS^_u>xqK3;OaLj-B*@keTD+T-x1gu`VKX8ExG?tpgON ztKS`%?xm$Sam5@deP{8)66ha;J7cx*sz0EhaDIkjQ_Ro%t-FD56?g@@9*Pk&@b9+Y z4*c%nK85(&ANuzY+hM)~(^&s3RqWpOVG8S00@=#??;za6em_8{n~whuB9Qs*L%(;> z@exOibb5a8wl6Af1pQkN{OlkIz=}22Z_XE%moA`mM}9(c{xWIy#n0Ng9~FPx|Gv-t zw#ENHGadi$K^wpM>lcd4OK{Lmz0v6Dt|vxyTLyRY-{~D@hWOq8(t>}z-@Z@f?g0#b z+ZW1EUl(OKfMOl^!=8V;`z|-B!IblZw}V5Z^^We`umGsKxJ zdsy(3e$M(bQVGQb5yQz^tB1RO11BFx9?8(+^*Qp8Sne@(fm~Em-u{WV7FcbgD)8As zGH?q>loy}y;c(r!WV>LolF-`{Q&YsondbvdY!muX-MrO}1 zFkv51^vA59(HxXt+PYqXr9r8g0aG6xvd>;D`S49xQr(o;;)t50e{A3;teW7Bv;l?C(pjed(w1Mopf6j7`Ilgp&sC(6zG3q~SpwT+ zo?%jMS`L8uB1;2Rles`EqJZonnxUX!uDFjjoq!36UkU}7Z zKnj5mD+Jb__)RhNzwqOK|CcTM|4+fx%=4a!OzdR)RW#vjRWNe1_;aLZ$Q~anO zieO^Y^AP2pKoBgJpEi9Zrl2vI?=&EeFkf=8(1BC5i~`{kMQ@?lLWm}kUhzx8g;mLt zMTi1nzm$3Dbs_M0-CwV?u2=Au2e$DLfRI5x$wBzV1AKl^1jabPnzF^nv-~L!%lHQn z@rNbe^FdUsBfSrn@?^I=$zuy`&%XX=PX1}@VO-2>13HffNEM1U{e;c|2M=if8;mUf85glzmyRFFUkJ@EZhHodN-E4)%+x#MfyXXkv6xbIn>CxrE_NI zO5rXJ_K;iT^?S1lS5QsgPH|gSxy{{8r@TmU%a>u{)T-?5lp3XNzIa#(ZfUwbkbgoN zhx%IqWrSBju)Fa4U8yzUu^DZNWz$*^2N*lWa#Q z06Wk|KJ|AEB+1qbT4-LKu??Gc^ofWQ9Z)P%*qvdoU<&M7zloQT6XK{_E4HH)`}Eyk ziZnxD=w~c9L6T zyIQMmBjAHTNR+n{BBe_=oYH23!pvEb@i;4%KEN5gb+90D|AYDf=U96ZSOpe;)`x4Z zaj$5N&kP{FB?zDcwt;=llp5|a;r%vFm@N$(c~q?eT~^5GFU!_rmb^mSlNndM7SF@D zy0sR$1=r5s&xYM(TT5Xtd9s>BpGqiFKmvWMtC_gUsU0aAXVAuE zzm&ka<`qwM+ghe93%KEhuC>DTtXrF|xEiTwUcXwf>PEwHhj6RFOA$RZTLlJrgn&k8 zJJDK3$f{_kRp2$UrtDBuRq#S&ig@4}Qdb2Eg`!Ft7h}*GnlL(rj956W0)yM$1`4m0 zqmzuV?#<-pFXRfVIWbZ-0K)F`6Q}uw9D7yH73II;i`*;c^7tR{HJ8n7!4IxNVSf`c z-1TaUm2nutQf{%hoX_VnH!_I4g#R+Jo$HSBIc{9^BYxWxkQZln4m#PfYFFv7+|Fj? zHuGU8=nQia!-PE29A@SqIJ`5wOW~q45FX*!XklUoR?NX3|9u>mxwcr&f?CdTtI3cm zJj%r+fMs$80Ut3OD9%3@zUtTZ|3CTJ|NfN4|9_16|FaPxMgsruojKuE|2Cnoff78y z#YZ_osm{w_^DP!)ca6O>#MaK-SH94419}o=;jgiM#h-a%*~QJ+*q`d-r?m}_m-omwuSv7NR_D~g# zbNbQAMIzF~-Dh&kx#FTz?4g_pVsJAIOFWIsu*%bEl}<}u0HXwa*}7>g^z3@*SG5H zJcFfN_)KZyQJY&t>_Hb060Oh6%asi!otbc*bH=nvaF_a!JH1Zw7iv?17?`I zTTKrsj-=?!hcsSXR&Q*BUIT&L8+^iCr$!)oK8o3xzaP#NAgKj&N6a$W0%Tjb3u2Gs z!nBlYUC6aA=32|S)=I9mngbt*|Bw$#3(gDwA-{kKts;U3s`_iM`56h~3?DFjjoeB>dpcIL;$9KZZKzx-D$`~Mf%{{QI+1d{CkrT_mR zzjzz||CP7ZczeN@ycbP-!C8&zD{sy9ESo_kz|*2)#4zV0HnjQTNPvdf8IH#=Q(B0X z7KAC8l_!kFt}VPQP2lPKWjbAr@0=gz)2VLe(>Ld9Q8?%7FV53)bI#LWoJZPJmeF&b z{^C3l-Rk3s2fUXFE2^bs_d#-v%(_p(r8+E-^K=n(E0=!!&IY8FI)=z;dW z8#Dm&jnYQ-#$=G^qKw2!VZvyvJ~&4jzjB5)ghe;omDZK|#$I)UbM%+kE@XmJq0o*p zn{9GrLYz^nUvkY_bAGLI9UkWIEVS>p_wNP^9rCTRun(Us2faHBmkpC=Ny4&{bkKDk z*2jX5&^A8rUz1n$iOgWx+`AN-x5E7VChTBuHU;G}Ok&yaRnjXXP#l0`(5085EW29q zUk@X*MQC1_APAiSOcQX^*~h9!VYgP6E+8nZ@?af*D2xobQbuTpVZYry98PUnULKr! zOPvx376C5_Dq=)+Bj;B)ZkRFs4v+5L3i|ci^*+`*=%{7oLj{#qaOHQ;KsJ<^{WUp+Nf_kORF9lXk=vH1mF_!LP4j6 zb7)fRh%m;*xTqHxpTxuPNk6E{zR+Z@!^ySD2uqD;&)T{6UYu5Zkr?fE-aB_TGUzq=SP8AVQ3f3%;l(JUd;ySX^B2n;bpW zhkvMp9y-IneN;njxLms1KD>jW__7-LWjgGM-hu(UMrwCDG}gY~2@V1{ms;>^aKF+% zcn5f`s$th10eRuBN_t!RBamDcz74*vFx!EDE4bZ*lO-e;zfJg7dgTjK(h2!86CUDk zfleqd@$q!xGv23gd6c`V-+jA#5Znm{dxiX7VQSj2e)6OzX#?ZFcvK?(l$SyAA&8b2??Oz=QfntPnjCY92rLg}8xRV3zpi&BJtD6?eT4gn$! zi6+cgA0cG5{Ht&YaxLDqiF+P8_e|yzoq^WBBA~$}Zwk5zEaopPBW%vCkzIY-`y_QmfuMGdd0v$M&55r~abA2q9ue{!V4`mx1CyKrlf&y6 zgx|Qvi7~|-^m^d4-D3(X7Xo;g*dK|Ohyew(Y#!YY`iz^?2b28bPkLWfoDC^^62)Hz z?CJ6`uAl^nlA=NT=aXe8>#FENBLh6fQ(fOC_H|=-d;4ZVav(Uf z{p;1%6@Rxe9hg5v#5Nsj3V{>?DFjjoq!36UkU}7ZKnj8P83LzDC+=VfKXmeY@q5iX z6vO!+UpVpSEc^fGr?dY*eP-?nul}9q-ZK~y^GO%P=@Y#+GIZVvFUJhcw~(Zo@3+!- zW5l54{NuhG({ZMhOxgtUL<^Zd8)M^;#HVD2ow;dPDlJaaXJZLw%1Oxy2D$vCjm&=2 zXJhag0YevU89feQ&a*Kx0Z(6ch3`*=DS7x9Y08IWav9Q>U5u12Fw>V^;)%WcfH(R5 zLc(bh_Y6Z*0NW%^C-Y0V^ko+u>A2w6Ac}`v`m!s1*~OkQ&Ra*N*n{cIuJG&}yN}YB zU9-LHnqG~zcJ9Xn{~vt&AO72x{{K@@=6l|=BG>r+gz>lW=bW_v-_KvX0M%z_r0VlU z?|Cxe>h}hNMsOR3mWTVnw6K2m~D5o)xgTdeOL_y6O8ei2(KvZKqu`@ zdo?b7?}_h`0ukxg-!dW7R{3DqVI(Z|sy_Kcrm}c1k0A&BN6B0-U}*n zMCcKFYRp;RIa#wrX)$X<{9I_aJ<-dS>HJ}n51ndlXSXFCS}H73h6W(yY!yJ|>btGU z3c|@YVzR=2WefJq0xLiGPO>daZRwXQ5I z#IC(R{4-36^3wnN@(K*B^2Pi}lt(-l(DR)^aMbC|Oe+87iC;Dlew>X8V>@BbxPsFg zvnX2^i&S%0EcjGNZxHWjrbWZ8Ve0BuAQG_?^juUS+E^s--czq+*iCCA3u%lq%H3v( z?2fIjlz~o?8~I3g#9!{!%dJXlPdy`3ZBQ6X-KPC-a^11Ibu5ggz;2ECbxK+Q#ziJpH@5m2% zPg9@b!PU;y$R#YX)lIY2W>Mak)oHGBWjC#&2u%tHA^LKutdT%yPUY-R3SukZ0COvC{m3SCHU~-qdUnZXNPD`et!qcLz7l zN@I7caw&sg~SDr!`E!JJQaM)Z8)dw1OmLt zjpD8A6u8g~hBdq>oq5e@$ttxD{=@o3mQGAoEghk|dZQa|BPr$DxvIonVB+vf(3oHu zo3{mAr7U>8jaF=72d6H3Ql5vUcB~&q=(*CR4YyYJ9^ziexZJey+8YB zvx@8*5U0n|kPlsj{{w8J$UgFa3I zn~)Zg8&M9@vyIA)LdHKE5f%;NTA+n(!q34lxbxsrt0 z54cfsCu`=0p9o{pcp6I*Dpiu-^0z{%6CY3n6hF(LA$am1VmR`HAPZr$6kUZ_2YvR; z^EFx#b6zyzNuC4zt1~xF)k8>{BiF77$i<~%t*6k#%XDtg%%fpsV53Lr;fGrL`sB+?{^EYFcwMam1^YL8&CEgBflNt(%BanMAOd@r|}64fC6` zH*S$Zv>uXJbFIV8JGLimjUN4EGV>?Qu>`5CK*Yq!eqtItKqxQ~K!d~o3 z9Bp!wa)Lxj+URl{PQabSvM1cC;*`X8l5CUgG11ooA0!qFW}Z1F?`5QGo{hUgzhZ^) z#RCBl90=e(XQgm4^Bx&9|71Ee9!hlIaap)nLL`P7PlUu5FL9y@7zia2dEKjTDb-D7a5b>6g>)WU%*pcMv`mgWK=K@?rCvgG2@xuZ-N%&I?-H)ol8ZWUh3gv^8 zbHyl>5;^1yvM8uKPJNNmQiZZlNQ5{c^+md1g!lux0Ee}x%?SJ#pUUwm;AD}ROrYB_ zeUU13rj?0zN~%jx5$&FIB+f^sLzWlO=}6;?XvTWAR%+agrlW$$GUl)LCErvrs?cJF ztxP1+#h8BBGmu0_5SdFp0_+Jco*JZGZF&iP+5fy>@aM@Jvi2kTGPB&GOA2VqBZ;kO z6cif**I&#RQ3~r6@wi?SSD!3&Dq6IQp48&J49-VmOH?m%zu(&rI!FD0#NaF^=6Pgp zR-ja27?G)q5Yb{imHmsh^)PH-$ir)M2X;K0)iR3|B_`0OmdR4aZ2>~#3(9Hm#Q3b` zawua$)-o=UmSIuHwLUEC9);`L(4Q?}oY@pkHkH7TAz-j`w)@(UnInEj9eze}LIvYs zQ!Z-_Z%ytAs=viq>44mXT8=z-S|~K#-NRv;($5qEA6^KY{{E-l!{~qG)ZfMLHSceU znf&fw{jR2^|DPfLU;VG2`+noToT#Z+5>=LBs1JE9R-a-|JJMD@(*rR%aWKX zfrzSH*^QEFx!Iyy(4kP!Lw*|A=B8y`C6m8>#+3)&Iji ze1h^N)&Gw&gh=)OwR(&BRd7?da3@{T4gJ505n&b=nwaqJF4d-~5kO=8=DcH&GuCcH zUKUa#0LDuxK8RWhjIf`Cx{uVXcooCuld-zD)Cj;b6PpApl`TP>Vmmbg2;L=O2W&Fp z_it(hFw*W!Y4MrSGQ>R=17@Ua#w|4h04N^05y0BH9~AumOF!}EbxZ&Mibs+Do)@{s zZ}JKd^D_sB{-lQwR@%3rR=+q>J@=gVjG>;J{>|R{KRx+R3_*i_#~2aTY7wCj3dF_G z(h>lr!;=yMX~L*p-}1jK2Td~f3iHKoRrkGCDojEknQP?4|NF$)Y77HxX$)M++lN&65YZV4IqXTR{?VSNa z%@|gooICZ3vAYrlZhSS6DsNsVwfG`KLO{HuwX*~;$Wja9JmFbV)S*RV9z&sip?F@z zOAGUr>@DGOk*R<~>&jI@*q{svN?nP;i(!l|C?_*XQ8BqOB>~^fJw@HCwaa_B*-Bl} zn3|}xcezp{E&{4BOCQ8A3WLPSt&;Pz${|Rm1uuSFD#MNuoA|`OYE`zyDv8uPaHn>m5Kr=ZUV72CFU(fmS|CplQ&Rj-XO^LrHB8U%abIM(OPVC~v zmHkCLY#$vFQ3S3jA9RDmAw|i7I}rp68Fqu|Ps}g=l=l=X>7(vbm1ua*f_Q)egYk zz1k1(GM zZDa1=Q;+BNG@9dRY0F~n0*i8JvXZ@1s=-aEQ?z1tby6x+0BJY!5sY-40E?Y|u-_$20@RJ$o!Yn71&>i8 zOuGXTuU$3;TS1L96Ql%(N+Ow~(y_Tnd zge0tuTgL7{S*hUeKHW(Z!=t51U*8aT>Ss^?ThDuP|HNDH0`UE(z6xlpooWl1{OjMk z{eu?&|D1OcIcFmfI~7Uc1m*v4X{ECa_GEPMzfXEE;YiZn(d6N}l%Ld)U;Ed)vi;Om z>v&bvEpkw~e$vd#qBh79e}MXhrR9B387w(PwTV`vUaoBHHk1oL*OtkwhUNtg3vI*X zH=Whe{8m;7%TivfC9iIph<0e>j}cH6?!#`Ajem7stZlE^=4c~dvt(-Rt8Gr3WWxLM z*ke~*>rj+0VM?BZrPB-fp)!%K?{e%3eMyj4uFb7_sTH+VZB$BI(NxU*17Yne5F2}n zD2j-wfpw9>1$RU7mKq~?C|+0+k_@@o!6vDzw<21&{UUfY{DSZg`fk3twWm>G($bYy zb-S|H++Cj%sUD{ZawwP4a~^4j3_;EqQ(-{MweeH{Gx-Lrp;}O9Yeh|QB9_7={J4TU z+(WVzrUf2jCX6DZEQFD5nz>rSASG8VX-TWRyFMP{;GKtR9E@c%&P-(+9Li}T=XIDM zm{SMP22f1^PItrB?u7F}0V9wn1^*{e$=V>CE0;)|jK zzvNR#_GEO)A%qbm)0fCKMmT5&b5oNhHG=NLFpS<&VDyr>Q9fQV66F_@G1J z%ok4lKE}BA6!`+g&u{)W=YQJb|9yV{|D4D*ev?%|%+H+k7rnX??BjXv=+Ni$-sjc( z|A?@C_ptlcQBXbX1nzeJRD*D4MC3~LWtvyQaky_?@b)$6!=39H~H(M}^MdMKkx?(SrCPCtImvtj< zOx=2INqs0RX4$gSsO8&QSrE7)WxI|o9;TaZv$DHUC&egC{>0Tb>s!JeJ=*BqJ=LX9 zq&F7pM=^o8DXgYK2tZhAln8MNEh8GERG0F>)un(s#jl{LdaE9;KNtoBt$~Xp8^_=o zv_l(27~Hs_nFg_WrLsm?_=LA^<{NnErs}4B*inp1Xm=jRJ2(xYTdnV*Ht5^5*c3*? z;2wmVJ7WV-$nikJw#<}4s&z>cv#9MYD~e{NjA)Di$JEg&%PlFo5nV{R zjYzZTfhtZT*pY;yxzHWJ{W07|D9W)*??~XMqF|VO38Er(a~dP26AdY2==Lf&p?q<4 zps{n_v!J|etH}zJsRe;w{EGKwi{_5Cs3dd|WR?k-aGE8J1huIjTm2cff%xV+p>?2W zgPLfPFbxEq{x)D4CQb*x82&O%dRP#6wtC`=umbp*xj&8;*Pi@KqTOHlo6oZUf9>D@ znFRm;WEBweqxAn53;6*0|Is1RKIT2g`hO++p5C6Z^4YmhTR8s+?-}9cT3t~r8X@>% zdDR^6=^Awvx20~1*o`4OjSuOvk?!?1QxvYcm!4_`k)Pywu(F-v{fMm}_okSgS0l2( z1g@)Ra#2hz%QGeJotde3pugjWIL_xRbz!t4x>>aR&axJRe%UG7UBk9MrbLCMU>AU)tw}ij3AHrT60fFxx<)3GqH%F7i&2z z%~JDVbvN=4enpHNZK`h2r1Y?jIiS*{6apy(QV66FNFk6yAca5*0fNBV+}{&`_}bt7 z>1Qqd|I@Sa|F>5Q?RVD@kFjjzMN7Dow%48o(zeQ9qSHM~|5h-gl$TDysA(Tw%#<=FHD%Wh#F zu9f!EI(+&Ed2COvtrB8@5PkU;Q^-_~(hE5uM3-Dt_%<;soE2dyllAFJQxLbbWaL0I ztW?Fx!*p3Z;S9*g#E-=E`e(%LU55k zA!{DHjmE-SASO5FLV9D=}0iEKBdgZud-2KW1lUXCKl^0_ke3Rb|gs*Jfr_ zbytn5XErMcRX1;5?-iJW%z^tl)ls06*d5_^^B2zS3zQx8qAtD8{{e@iD%o z7kAskZv1Y081E0d2u#?C-|Zbgh}%bT|DY4U(;cw0djB4xd(nq$-ND^Qabei)!iAVn z@=Dhh7LmIn9~aBl7JxlLFQ@`?IuRe($M}2jmAUx#p#6~Y9ipXiI~E&G ztg~{BU@8akaX-G-dyk9MJ(-QW?{tswu77g>0Vk=xiyGSp=uqcT+#YmewEvil%S8=y z+O5t1aVZv;Yt-(7$n1_Gq7O7$gjqtMKSbX__YgP&VnoJ#i}9x~i4RC$8GP1uUO zdEjha+OH_Na|PUqQZt3Uh!Tqu*EnOjE;|-ojA@nYB`7z4*%8HG$1zrK&we#7&lTg> z<8o=?+QQQO)rD(viJ2FQVUIrmpfD!AMfu?NM7`PDuC{6|0>ik`dUMvWFGU`4u|v14 z6Zj;lkMw~s$>^qYI1=YgK)xLT%Kdz zJG>3{2VXmVw6^3uR<1Gz6)7AHr|9TN-%<1UP@xtO*+OHV#g*#TX$%C z4|O-FUx>i-9h{QtYy|Nn)=H);O=(*A#`RK5!Nzcc~~ZEw^)O|f-}aVuqYD#3Xp1G05~d#2~3W>%mdadbYA9DT&uB*Uj&Jd zJp)Kvd%Iipw|0dc8gvFJ-Q(cWdvEQ+)pNaGL;N6JzkNxltOi7Gu@dw?oIE+>z;__r zFSc>;8nCGl)DMbP>MATE;1B=@MxoBx=?@Vr9iTH{ALHyC0-K}tQBdWgwI88&^oEt; ze)p(D+}O|}dqWkEuBd=OYa9=VNKt84_qH2*RHmSaJ|l?3AP-=*BBIS8gnN3Xoyv_G zu-a(;>M|00^m=`xRcpWpVrz{fA7$s^e1k0@r!`5EEFNT6Zk^hA&%}?_uZSzVck{u^ zd(Hg)n}6Mcxq6eQqqN)`HLA`A%VXwiZ+&>!ls+S#nlhCi})CmA~3 z4oLNeSmRg*2^)ebnT9-=ilz!)L7Sv$I18t+I43R3 zi_7!nh2s3^V6U^$tEtXj#{F4vkL-qEH;&H_q%zp`C(3=j;Lqifgd_|$(F`jhb6>B3 zl;}ve*Z?#Q&4#G=IW56~8RzrGHsKY*v0pXcE!ljC6PgMh7Nv(K=O z)RJR2kW(P1Ku&=V zh5~2)?FB;qUpe!WqW&K&|7U;Mk^eu(_9(+TI z2ZTeA(HcN153ep?U4-g)bm&*1`qiOdvMUHzzvt|-!{SqnqYMJPi2cfwUD-mJM5%aX zw0u(ZniOFvCG5-8<)6A|ZNLGoajUjgQWtz_8Oq}_%&QCqCuZ#X?;~O?Ovt%iQ%8se z7awu+XyP068{Of_!7=sUxy&@gAdR-eL}YjY%{=6_o3tXbtWxZYDX7xPWQD)w5)GES z_};Ry5qY7tAkBrW&A!x=DY9OZLN##qL~Pdb?0m+FEo~aRrEBvra~U0S74eU8rm4bV z;-G&&`?UVjmm?J@kohnfW($HBa3Qg=3shg20h0YNSpo>7ZH2mpM;(8&biJ4d3QHVX z^A|Ym_U9#e~@rF&@M=t#id8GT1cLtzCc$ZoUnYiE8{ z9$drN)UeQXkf`U5P7d#O2iy0y2c7Pq+mR-+a38=C04`=^3Fe&1)EP|vtIuXBf}J)! zV$5!Na!Z`2eDf*t+$8@iYHQts+Y>g?u7MWi;mUEjB94B>hRN+KpAzBGC9S6E6eC^t z++M;w7_gvgNV%yOMsdv5sE16wTy3nA$!*)~Xq?u;9+aAxwD%osGTb zXT6*PIR$bG8W}wu76HXZT+jiL!$S^FyJ2x#bJlt#6-qM#rMowP8xhI0? zG29QLiAtk|u7WuKh@t!AQcwLRQ#ce+vo;>-oR(A`XhBJ>Tx zo1JpZc;LdLCz>Wl5B*n*R9O(1HL8+$b=tEM;8nFoqqYV=%@zmNs?B7Ymd8f(BZ)@< z3({*YQFt#);q@cnS^#S7QT_0++vx!bEej>}*P?+yQ8R?}Z(T(@E35Sl07wWaG$mLC zD+aHx*WU)p(4~UpyzAvTgy}Yh8{|6)J>kv0`r0i1X{`!qoQilW7_s4ct2{P#ni|H9 zW?A}2tAX^{qJ%mqTha7Ja70}iM`2=?Xt*FH`t!z2sq&ndAONLv1{M9I$~S5N%>WOP z{Wk0~oNj%<&Q)26-70GZCleXeB{G9lLYrtvrRk0>O@8Dg@&niJM{6mEB7AVT779J5 z?fOk153O$yZNQ~|u!wQtRJd$egeiQIC?QVo1#**64_h6Vm>HTM^qsbf5gkVm854YEeY;Vs-`FBw0nE41;7mkWs~AIF zyC;@@9u1oXB$rt6aoToVi`LjyP`M-h{@YONZWYhckDit{``2ImbK zb@*lA_M_}TlBGCF+w92J`ildPrtEY~D}g7&E#=nh;S)VlBS;;yljJlf8z0Pb#iSXv zjF$q>a|^`GW4fAUYVPQBMEm?mg<0p4l!Y_(ls01)ijkzQp{6cg6d)#V*5iqfmJAxl56z92ygl= z@|u{!MXbi8GZ8CO_~1iVwy2+|s3gGz2VuH#D{VGmk;NWrMZ~HmdjJ;0+*9t{Y~kko z+667Vue|hQ;`h(J@bXVM^8dvY{QngBKe})xT4FZE=9V#PvU!+#r0seZiBbZPgRYyC z|HvtjQy`~6PJx^PIR$bG!Q@Z_FumBhaCI=%Z&f` z$wZxL_J zX5+NntO|7VOGRwj7wR6zR3OwGZhp&zfJ(O>{kF&?_K-9==~3N^yCoCym%w#KZpW-Z zr}$M+Vfv;|Klr(1LkMx$YO(+zcAK!eYeCjgUgrfjTgAq5Kh!OJ`k2(_W;ioWcG%=O z{MN-B<}2?qQOFDws{mcHKs#uKNaK)D_{4qdj~4kLlg^C_SHJx{GFTa9vE!D(QCN8} zEA&edV+{G^B*3+Tnthg;!_%YOvbb({$z)~^U#FwBhN|@N*2d`ILTRO4PeklPO*I)8 zq9jcVCYV3Ta>z7ZmJ^63IC*=FiM_bTniq{io2;=k!~l74p{oB*8X!qhg~NWOH7gX) zlB0bk$R}r2a)qqcw<-;U$bCtUTZ%EorJwzk_)fo^Zj zy<%;VukbkX#fiK+FzK{?+38}VM7rhno19yFXr1V|ul~#jlmCdud_||5)yf72gLkx1ya)pxK+0D~gpVxsMg@^g z^0<^Z$)^ds3(7SrYxTD$8v_44fv*+Q;`yx}cvZ;r0w?IR1HRBqg;VsCSVVw| zk(N6W;UlhS3mCyV07bM_yB+rj_vhLV+xri?bMS?|`)F=o0By|O=pOqbL_u;Dx@ew_ zA*q#?@3w)|wm(u*yBM9v$zXS_)g*uC{bFf;saWh> zDHiW7U0J-lIDe(Q)P^TD|0ykZJ4;J|jXTq%yW{VQUI8=MAfho=xhSUa#%yf6?y;6fARyLcjW(XWBk8l{J%8(Kj~e+U)o>B ztilv2U2R`kSiW1j(pkDnGX{T_7TXKu&Qf$Kx`3%%p&dE%wA%dU7d|VFA{RHWybgn0 zz5IujLAQz*bc8Bgo|VZhdZeUg_W*&8t;8b=_Dl(VLLqpwcmIL>%1zklzZ-mCIc`#{ z<&?DA5dyw*8%~DZ;YJ@(ir0H+Na*Db!XQ}f8Xort-Qn&-L`Q%jI3mX*esJ$z50RGT z$07sTH9Es)?>&G9j3_}@@zzNn6c}64=xn;Wv~2KS2QLBI17bUORA2CN>*TNtCxvwx z0NP3skyS$pkA}zH!$3l-ci6=VyBkPqcH4vf2cpOt?CT$@NrEQS-a8(&DO^+aL3_~N zKelLn@{mv}hLr=ngKlA9+>Dx4TDNPFGDzRlM0)IYQZrPxn)T&!{RqP*?e&q>D@5d32OmhL(UTK<4>8HXWV~*OS}~JIMBQv3^&Xyxsh5^dH;K5eKYF?}p2%=}=#c|O za+GyG4hK6yKA^FC}kM)BnCS5Ls5yP##Ye~5|G8z#pPusDeLDz-b- zDt=cvIPhL?KkOb=PX@#OU|887^oK)~ighq9SEGM$aJRkxl|Vl1!q^MIF~=3?XY|U% z0zu5Z)!tEi@Mr@obI?B6=pNliFmKT@kxm=Lh}8bU$sx1q(5IXTLb^;>ma7tZ;<#0+ zB$vZ`-#Kj9OXFGVm3ef8(~z|uNp1AsZT9}4 zn$n$qcZe~PFY8D92Pd8G>Oudmnzo`7dZ0sX)w9K+2U94e4V;Ey3s87>*d2tv0&8kx z2edY~`mi5lrdAg2#7t?nJi9QvG!ygTQLQFo$%fxmjygV%_RFz$>rq*^j}Fvs2G(I! zQEk(?)hg9lr*7W*{Uc%`^&=}gbtb-8*l!Py<3gj=sBhA(LCfHg>XX51ud((G?l89z zH+gS+YvWD~$1V=RRVrSFG8D=pbt^$HV&I|{W@Z6~Nk1m9p;>KgZ*0IAzgffCpjE#m zF14T>E{J+it6k4!^k9a-%x3Y|HTrAmd+^tS`?!en8zP0t|5J86xc{hBYfM(#$NLWi zLk6Yp4f=<1;hpxu366M}!(fnf1jI2>F4Dr~E3ebs?qY~AOa-C}IlryyH=7wn>2nf% zs=VA;!hLObq`U^uUL26f=dRvt)vMWc0av0gc)9>nn5z+hb|7m{WH92ZrS1}7wC;`U z$tR*q=!wwEWbX!W>%DHslH5LI?7(ZC@1vz$9Gv`W{O??FSfP#if5z{Rvax+5`!Fm;SG{2noh4KP4 z$qS=neta@|5u;-{y=LxIDf*(skR@qDFPwi!fnY7>#2uCYxTOm?e*6 zvN`3sUCP=SX^+({Uj?}2!f5RBPe(6fY??c`_N+|3IW9zHZ+P4S-R?{`Lh|ZjzI_c4 zt_!0Oo`TP%i5by ziQbgUcM;BFVYDTq7!6dr2`d)z_08N90K0lUu}Yi17m0IQ{vxM9PJx^PIR!p86u9_Y z^fOU(VJZ5#C_4XM^ix3f|FhB8qv+f}h<-7Op8cKZXYqG2`uQk&W-t1OQFQiC(wj5C z5dBU3{ZjPPAjC@a3xXW~`po~`apeEcMCXu_jQ{tX$nXEHLa<6mk+Ld`2mQV?8{O@jQ z86`*~6Mz}4oX=?fBBlD`Qu*pav7{v8a6@ref!a-7CQs|4aO0QHf8Da4Oqg10V>?xfrbk<~pE^S2l zil~q5_>}hnXJB0}RcbQmSHdLB7+0#sYI{r0pzJF}1>8{aDmSpiFlI2Y*TZX-o=@3(R1=g2~(iws;hYG01Hf(%_tnlM2WUsAFA73$6`KBeo53P*C4wJztPdzZE>zF}vk_$YWF132u;TdmBF?>sw*fa+_+iR0teaHuiS5=>~CoE92QiYUA6* za+{1^<&8r4>>+|A>Fe|1LNV*o-KjN9COui$jQ&n@ZFh6?PDxG=M9PY9*IRGKyN!%wmbX#3GG73h)#Xi?%+RH4 zGCz9Q9cHF-B|h`*lTjI)!bC)-e4}Vg>4Lu_5}783ZYKo1pR$PoAJ*UxYFJ?&0<1ZeDys=V zF!RT9#xS<5I7OHOtW$+@{!~zvHpXli`H`V22^ZGJexz+-6IU_H$5g^0s?se#Ye3{0 z80*Iv1;8!#G}!kej>=X*0uwo4>L>s?#GA@c!pupL2 z`86IcH%h_s+ajh);2i;OrxL~3&`0$<1j>IL!cgwPA>}=iXtCS#UK9di7S%Q5VW@2&pv=MA75!k#08!ggvrl86cPD>NEn6|uTI@*Gl3;h z9Y}t=H8Th$r?OrRiZ?^9t3 z!|C(vm5Y>LsEyOW#!n!k1Z5O1Rf$WyA9&F_3ZsH*yKAH@yS3iy55(4E#e?C7 zj1Lu(#)jA;dc^x(X0~H@pc{&$ULpiil9Q zpsOBuAtYmk$iudr4oX%x|E|3B!{Xup{ICCT$+`c(kRtz|H6Po*)cya}rTJy3ww3X0 zSe^83(YHXIw2I(#aOE;?=e5I!$B(kBmj3ve?~_^wgrjGSJR2uS-B*DhveHsR4=L;{Co$iEk||A%WY4Mm zcTRzv0yzb83gi^XDUeejr$A1DoB}xoatb^)3ap$hi?Y7`djSf7`+qH%O)39(VdW3A zdgX5#mjB`04EcXrbNa0tFV-e8GqBA8?CTF){D>r}GqLYLbeg>3QW|G@z2&HV>9UPf zb);b+)dJ~@2z;3ktm^<;BiY^3J}~|XGzNjM=nI085#K12A$AK821AzOLWeUCmgLkQ zf*pp^0gmyFBp9u_$4#cR>RWg4Su$a@ek1rk1=m&>acesP3G|&E2YG#CyV8Q;B1eV~ zk#lFz-R}`99_T4-gab4Oj!^IL?Z>TKoF@<>T>y{?1^Y;Z1n=;MkmW|Kery7Qe7br&n zrFIRdbBQm6JT>ITP+PC;ZnXHe0mh=T)%G1}p|acBu5VRQ2B~egs&Q|~3`ga4si}4b z5u1ZMHRF`@qx#P0%aYJboL(q1Qi7XYYn`zY=obYj4m5~Gd#_i(XCAFdHPcU%~D zy8w7^tlqg&y0);0+#UJ2SiZJ^i&A<)6_D+#`0$>De~sVmAI%)&@4;8*;@gAvL&|rE zmd5Q^Y&fyb$~A(i9K^@{_+IZlE>iboHtxRDJ;J;G$^8eMr1~yuY#*RQokwwd(53bt zV-uD&%xTvO|Hq|RVwn+Ym}rhWhFB8~Y)*_#Hbe9sFgBqWkul$5{OL>LgBFv-d=bYC zIh!!$ym^59cqz9o9jB#`*tvka;DJ3uE}L%UI?BvVPT3(DK@5U!R_sddb77(ZPi+P z(k;=jFGU_OI2b6a#nn1WzyApF8dgNa@1mIp)1X!iO%zGdF5mYtWN zmA#xa{7JJIW22x^76JwJrDX|#$pK0iY{5*J2*?CA2F@q?e%uxAEVFKZF=lg^cx*EF zhpC{I7k^ze=cRXl-}8?{{=d7lun7Nu1;C#80aqxN&@b zAoT-u65ng?uD-QfYutej0OkS2mF2~_n=1EDo>OK!m3jcSQFild(Vk1R&G>bSA7)7# zAkZiJ!OtZdLNX}jvmOIE_ckkU@8Q~b2z z#`zTL6$)2Y&|_~6`T-cHrO0*eH?ENddf>hY#h}uMiRAJBt}rcW3UK_y02#vwZF3w{ z@EDt9y*c{_9<N76oys?lbV%^hnH0WJvOMfa9k4Jgq+-Q;d4S=PO;vvn+#G5>=ZsBVaZG7qfBi+9&2lBMhRI)%A>Z8 zqZh_1KTLg?&UJZPath=W$SIIhAg9163aniCqDU_6{nUaZ|6hv8(*I)O<7X0Y_=U3n z2Y&Hg$o~q%I4u7IWj$5?N8BJp9O6(j(<%Vgzy91W<_dsyc;+b;wS{oy#k|(Ss~e?S z>gSP~D*&<>dE^R!?(ntOQg4`Z1wadOvzR0wD+Pd-OkpRp_I3t=J|VEv&G1A5yC?ah zS}jde8T4$6%<@j|dMt!`O9MtZ*J_9kRo`iCH`pu89g3Czklx$wry>qP{! zj_C%=60)_L(7F4g+agCxnoY)5@oV;%7E3V6Q?UHuEg7+2pxT@gL#sOb%&S=~@*Ipg z=gLM{=P5nBND^vz8Z>Ax#WlJ}AT2s8waksB3>jw9)rytTt-5X3d~z z&q0-TozsZO@kLf{ITw>gS(h4yU0x23zHAIdaObJ!TrhG|60c1INgr~D#D90|r~a8E|Gx-~{V2MW zsNmVe8-AhW|8jBh8vOrN)SU2P|= zo~c_+25zQIys2}V zeiES01~{J^hFirZ_H#~C*xX3SvGRp+Fesg4@|_J<4*C_IL#$GD9-@+ zuY?T3EyEF9d1AhXu=4SmmNFfmczR0{YhD!E+#1zr)N@YJPhz<^80fTOtQXE9I2HbU z7EnO9A+6n?Yd>u7Kj_YN$hdiKA4bs!{rht_k}RwsSqEY8%*OJ8mht8Imb}pB+UOMl z#qCJwbHk4;C>$5~JallCSJ#SPS>J*g*?CZeEEGx{(pYD`~ULN)qTkS-H{`K&^GF*H>K>4z<<>#1OHtuUR%I* z$i0y*{O0Jh0S(0zA$Z>0yl`_m9fj0*({bGQLL_NMD<(Xpg`bz6o&3I{LI?=o1xP7MsnQ< zsTB0p`$teW;>~NU)v&6>%g3sg8lsfn)CLH?wp4hPo5im^iOt=jwBJDF2l|7o0hi+O zxx>E2P+4g1Afg-k!^DoniNTW>zsXTuMWnXIo#cCbAd-}86KYlp)G-hS)a9fDur%lx z6NC_-`VNTdde|~XphDDudQ?cdIVEBcsvcSHrDMHIRc)lNQenH~rb7cP!E!+-6mA}&Euz{4%%*<} zU)AJqa|+}X$SIIh;2W6&zjEQX(EXL@Yk~;B=lkmqNd7;gfZ5Nd;Qy<1k9N?~ngPfAjD+kgof!V%Civ^J$?ED8w&5)hx=QhgzrroR8q zUrGQ;Qmc%zTaSKD2la~bIxoVxc?+tT%;Gtmm-jG}l^+v1J=iPG?!EKBL6;opD*DEM z7x>15j*?$_Z~gByNeDH{CXq&wLTs7ZMy=YCnvWF2dTXOsU<<5RK#|r~pNPCD(!_S| zAU)wb$phU);y$D<&H;EOn@ln4$^m#oyi&v15U853a>T}8Yt*aBGsuVElTErK*^46w z;8j*0Pi6STNjN!oQYRJ0DsVe7;c+(y;I)pFVxPdlIS1hN0C;h8zII*!0?6+ z5vT8_V^AsXrRYlQO<4LGXDoGY_dvT{%r1F^m){zDM+EwCu(AnTi_oj64|UuWDOhZV z%I2(G9iwDZ9`z(bdKeXei>jq!WQl83K=>3T;&j2yH`g1AF#r_^tIL7z(ur%`d)>jH zeV3xm$)G->`q9`xf^129Pzfw#I!D(}*Wa*Ef8=Q7)|nqsHkda%r$A1DoB}xoath=W z$SIIhAg92`oC3dc_D`UP+W!B=pZ@vhPILb+?f+l;rAZ6}cW$y&NWn*Omt+fExVcn` zEQv}GRb@7)(xm;LiF;)-xE6wp$&zB8xNf&XJ;++sqo`>8W}wtS#HBDcv<>tOK@pK* z#SN_;BMh;h_L{Y~)U~d4Wx0NHZ+C|bgBrUVwd(-j6(X`WR7-k=_KaSofjD@B9>P1b zO|I=N;1%1*RP0v2vVTlrpSjq{nqt1$TGKMQ=VT!|x<@??Q(_HPr%!+qcCn|Sggb0@ zsntyMt+t2z?M^pgnT|oT3*F6BXtR4v;muDuX0YN;8$Ho9IeKWSTBJ%tWY(xk;?-%- zN?gm=8jac-Z0cJKkXM@-7wO%a?Fg7>G(VDfWT7k_WDK*qGYWz|C@UYwI zArg8PO6spg0}(~t5R$AlY+fMRSy`=b)LVCig73-|5lkJZA3L>1tBxR_f1uwxV#VO~ z_4?bjwfIs&a^Cgw9AfSn#TwYN(%@g;4aA=-fH6)b{g5MozjCf|Q_eG8yxwY81y?VVXftv6-M zB23}8->fxih#*?JUSbvO8+O11p(%BHZ~4^Q9ltK(FzCFjFh&MZA)a`XB)Y`~rk*!_ zc|pPes8HtO~?*p#hweqligcwN?$>ps;8S#d#hegY$+!7yL4q zA*p}}HR5u}WbMG3W)?fL=c+hIg>sEJ#`#Q(4?uQQOl~Q+UJsw>ks3kjn4Ki2IU&Yk zo+~D8M-D*8EsG@YEUH!Ss1>xtU2oUQJ?okE;bsCyh_rvnpJnS>NNTN!<)mR(DJ9 zfmqu5H?K!BN>uweuY>iQG}FNgFw=n`#Os>h$caqcK~lq7w<#+!C|RLMB~o&YEwiOi zbvOMMc}+~=B35J4nTVAs++sRKp?(?)B?%@t2or@{X|oB7EcQ?0)9eMNR;z${Ud5FUb7xkauTEwwL|8lM|CUi_LLxAIKCj|cCQjuieH6B*QZbPgP%**JOOIq>aG=A zipq3eaI-&fm_iBkv$s~iQI}!Zr)^Ub(`7=C7TiVyv~gNYLg)-Fq(XnR6gB{nU;Xy; zgfIt1n|vgJ5oqw%B}*Y~CI*p~P6KZ<9(OQlRTBgroTT+h#6YsZk%)mG1LVO}QhijQ z2Oahz3^CkkJO*-5WcFsS4YVGAA;$eSRuUJ4f0Gb|vJCtaW+Q41qKLRK!bs{dqxick zQsc-|U-W~|7Mz|Vqw~y02_E8~&n+}YiP-~%ai587NyVlGt#Q)C=7~rH))vW;1gvKc zHDGOwcDmRo@x9&`IaNRTp=VIJwFBZi0)yq)x^}6w3G$aJR0KYAW}&mmxwShJKtY*i zMhAN;m}RG7(dcxBkh>$cM9GIW_O5@P0NoYS;;FA5c;3sS11D&_Vtk>Q z3a98N{>J7boNT{vd{@7Lg7BuI&?MNSc_DbBMO>SZx!Y-2Ce7cDrNGJyKPvM4i%)*{ z*BtqO%J_fn;_||Nu{=Lg{-23HAM&o>8T1a@gGbt4G&3qdRI8nBUTb;=-Co}2#pl#5y9VpISh@K}jl+My}XQ^0T7|HsPFU0xD`!JX99o_daN$$3XT>;LbJRF9E zI|2a__VhPTh0!wI;sY#-gmdxcCPHzWsYBGHHCjQE^;|wna7mvj;luTa* z^pR)NNSWz%0$_%la{TCFms}s<|3n!_`XUtE9;;Z7v zYjLwbIF4!5J29N#$i?pHe%!yuuRyJXlfxkg$c*DxzZl~)BppBK3crfkc-ZHsuby-V zkK*1CXgcr4_u!fJDDDfOpE>!N@cFrVwLCu;H;)OG!^d_70AR@!jsdK1#yN^6#DF-o5(8YQy`~6PJx^PPo4tLU3<2G zT2{{eJ5kqvRrq4nk^jFrdJZWsBwAv82b?5z|G!XdU&SGCapWQJ)6vT~1Xc(A;jlqa zZQY~&Zq^eY{1|Rdi2&GLYTtv7;_ApYz7)NHHdcx=|XFPnsgALS|-WW4e2x!=`nKF}k2itJSbvuyu{`}5nV_JwYE@}m zo47r3N>k~9djLZOmC4ss2TL;QYA0FIO5agw?e*wv+;Di)38RYyl>(Q`X?fgR)nxAi zG0~i+DJq2TAa$*YjyiGBoDvgRb<8glFCe{Kky)IqJ?f+s%(AeT)v;7*dhyS+#-hHu zIS23FwcX9lJ0&UA03I^FU2nY^?>4d>LC;+jqH4EzcNtbn*G6&x!KH3>2SfO*OYqIC zTq>%3|C#?-asj3qXkZ5+wU(N_jzku*XuL~Cf4S^5YrAXPd!kf9wF1IHZ0rIfprA-x zD8bc}CO}*WfT4hej7voZr!4E?vhdWtRckcs+gqX?RCN_l1y8uQm*spAc%ecTOmj>J zTIkFSoX+LHmorYBOJd^8FYV6*Ja%d1#EGMC59v6JdOQ0p+Bvf&XHilZzsMK#(gR+K zyGpQ6INy30uw(QKAB+~k5%PCVDdeX}`5A}*c`^LO;(iCizdUmIUyMG1;a`VfPGA?= z4-Tt8efDopbZ}VT-Kw^*<|K|1bd#6_0euI~20E)eKgii4Z(Zm3UphnReB#1Uu#AG2 z`^%MEmFh;N*<@|X`|rmyb2Bmi@v?EDqVo;)7*iv#(KTV z{iV<4voPiiEI+>lxsJTPh@oO9Wtrj*p41(CUvZW#kVwsL( zN39XB0*gjXI5~^-vzRRoSu!rLPlyG!u++JRjk!H?fx&zj6H01a2fcTC2i^PK;a;h@ zSIW#;SI?e} z&iqakJ^Sltm(lG1616h3gKY!^z zwKlHcS(BKp0s~-~S3StZrXIy|+X(^h1x~Qc!fiM|4J*Wa4s|LJ6}6_55KI=v3Z^g$ z5EI!H;H-VIP8C$e^pIC(Cqg479D+KGTb9az$T2Whj}ZmXE%r3ncOxt<9EdiB9GH$H zHwFdJM)-QHlrT78*Jn;c33u4+QXdlvpi6Rxq%lCmN^+2!6uuh{IFAzm5U5fbSn%VC{pVxZ5U*uODRXB=#E#%jco; zSzS*=p*Q^wf$|-PFqCZEJU-`yfS8!BXw)!N!bHGvvIK)FH3=l2-E-^MFX=?%sQ~#L zTLAOGDrO=|Twu}=9G^o!O|USkSas_Dnz<|K>7enEAwv8i!RHzQoMpj%nSs+{qF6NS z>erl#PNTs0c$ntopb@^7HdZ2y**H8b)}PSFb_qVh6sz9A$feM(jztz8mSYPdYikgHbdmIpyYt)yLB}5PNb4SnJI6fIzCZwNTax$4y}=JLlX-N z;Gq_Js9<40E1haa`oN?B)w9Z0T<{c#mJS6Ihqfw+nE+vE9JZ$cCm`hcdt*oZREAk!Wg|6Y-(gP9n}_ z(N*C0l^p;-qkywzTu-D`kK$~m;Xoya(sH`{W96kkBVH80>#y~l`~R1tXOZ%}n;lQ* z5^wm0y8ka1yCvMM-yNyI`&9Hv<^NCKaP^~m{j7>RT>o!QdHuh<)ZK@P!v4r63MGD> zkdUWoUR2vTr*3RgReE$_7JG~Em9)=jI!W$A)bIQkxc6~G5uEgryXrLk7u z!l<* z^=@W!5pnM(*o9yK{?f~Mp(HIm_KWwff!TLPGW$1}|_Z-Pr`5+UC>+sjFyNo_SHBORsTLwgxJX0hBINk?Hbry+f^ zlXCTY&Mr@MgP?%~CPEq5s54)*@CU>c6I++UGEls+QES#3w`yzJC?+jKS@6bKGe^IK zd6l8yT$#WBJ}%60U(PqVQ(ut7mS@BsX+S0V2m*9+a7VnNnsR88Q?AzKD{9nRSkSJUO$`D_zAe2mTC z<`l>&kW=7eNr4NWIs3~|^xQu<^Cr6YtLJ_bf3HM8D7yN8JoDWx=l=hEw)=k>|L6Hse`}+iF1Qc)DSj{YH;89C9BjX z@a^3E;*Fob+Nc3RXOGc2NEC~m7k+MKuud7(Z$%WC&6uOQOCfrXXn|Wz2wb;n;uJ4I z$v6}Z4002+bHDK$(yUb)FhVC&B{ao61sh|U<>6=P@o^EaKHPvuA2?)>JGQ$R)f-#2 zwLS7asITrK3?9o=d6zb>YVj9x^dIZquLHyl4>go^cZ=*`VO0 za4X}GbONf75uqlVqyAUHit^c~PyK3Pod&bZ9kO}L-`^e{5 z8{1W|alMt$^!Hx*Uu@R5>YD)26cZBpofnDRmAAdz_6s#Lr=5(a8L{y|m?mOx z*oijjmI1A5vHd(btQA-V%-ZCHQdqA`3U*0U*3`m_d3s?T+0EUKY*) zx)QvgRCP2HM>)5U)}q@k?-O-)6J4_Fy{hXi`}NWbPPLDCs@m2yN^*#64s@+0{?0kI z=?|9^AKJ&SR;ftop-s3|;-N@xnynI(Ji$Pdy`5+*6KqvY1Rf)&%N|En85a{>+zc^O zHAR&cEy%S}GFdCORbq0x9;0erE62DQaThW(du4I9v^*-I>eR<+{aGv99ve~ly zS3J>u*=!O2D-|!#7G^eZt)N_9Vi<|UtMwMI3N&G1cD{VASe%`Cdj|fz_-`gyxvr=< z%Y}=2#NTcQ{Nf%dswj)X5=!9aRul#a~{ovtB&2wnS<`p{o@DZgsh41 z1lvXf6KGg@7GTvMV6*J8#c-C?aE=>Irc~)k4ki(7W)_ewL?6){T%2ziAO4k>eoV;! zfA3%Y*iA?Ne=eK+Px1fi{|!xFYf5kj=bvN;vC3GFZq?d^?PWeY923U(Lj z`=swI8l7?{b8A#Hjpi9n!?l^&W#THc;$fnFzntWxX6+JACCV&gmdx<)$5SLjU!vUk z+48a|SiG6O^kvCQw^zShtG2+oi#Ym(Y3041dKEsgfn43#UgaJv%$7?F*A|xMuP$7h zxYhO&5o^#Vgq+rw<>AVul1@xH&Ux)n6ENj9&C9Cl&Z6BNd2k5r?fz2JO$xCTo%opA zi^J;Mo8Z@&K>i6nrLUPMklY_dZ|uJxPZtDo1_{e-h~C0k5NjLua=5k0C?ORX(u=m1o|}a|L>i9 z$I)EttFpB=jK%@j3ly3*{eJDW9R8o~i&>-XA&iMrrsY*ou&k6xkxvJfIT*~+g$Vm^ zbf7Gx7)Ob~H&S1c43{VMHpv8ea!V#C-9$2_Ro}XU&yop3$D4dl;#czRq!Ij#{l86% z9i>qMDfq(PJ*%tMGvE*t-MoQ*-v@OQACI5CKyls~c27Ee_n3zg1F&$eQRQPo2-7yA z(nj2Ky0em#cKj}GKBIoIow79a#BT#uF5IFVuP8Pl6)_BK+fn{ZSe(j&l8|ZFV;qcO zOhL}Wggq|3DcSK%q=ddn=B6?d%@pp2u9NLY2L2xcg77zZ1Gf5v7=8qx@X-424Yz<< zP5@k(@mbOIWW<1b%cXX)IA0vOS$s?M&EPc*^#ugIQ-M8I{^gn9l=}luv@u{$--!55 z62ytgV`DfyUV3S{6-b`ohFC=f%S*)ery+L{7r4>*kBBx&{|fOS?D}=Xvzde|bkL$t1UJnnugX7*5NWowFAEUo(9b2?Jfxhtuz%TC^#%n?6QF}OU zRQC{>P+TkP)Iess`iIE{i2 zi0y7_G}eD|<{wW)X=}Q(9z|W1CJ5@xL6r(snL%Z?zyqvw1==j_Agqz)OL;Y{bi`mQ zCpoZAV#0<(52gNG1evr$9vfFamC3y+N8CQP1#JK+7J7XFEiG%>ZNeikWs0T1I3}wj zCEVV2wN-1;guT&v)2eZ6+tg`+7i)*8$2$AIk>tF*uQ>&xOJ6kxOJUP7G>l{CT!UGz%#OXWf2c9cdy9k?@D^}rG$4Ec$s8_D-V)jVHKY5Fv z;FmHOqhfumC~=u3T;+WYs8pwvu9sMM@`lay$T5(VE$&Aod`gFUm4R#FdMS~jBGPwn z#H+Q|?HYW`gp#lR&k>yR<=j=_-%07lq=$+EQlObJ6_O*kdgs(xEjE&(?#(!{i~a zVxCxgm;D`mBO)zQgVcS#hV0do!`b}o0yf+4^>S^e#MjBqNM&^4iKa{aX!Q}orE48| zh;7(dqxwW4^qBg3i4VlN)>K+pCY-jiZI%fsKDzLi&eP5R$_3a0(4RYR{15An{C|n% z|BE8k`a4bjKQFf9Zt2=QOu0r!*8XhtY238=0X(yY0EpK9(X;=P!>6B|NJfFR$bdOb zLI4We&YZLt4f0%VOG=DeXRfi#onX+Mnc|5W*`u&CM{FB+oHIjq?=#QM8EfM#AQBKu zsR#_~vwmflt~O{>M8_*~%_~yGb<0#_&nvR-6j8QoTT7hsv})Eb-UpXTIZNF-zeU$U+7Ih-h^RhlG&uN4$!~p3aaY3 z0N{emNmX)_{7@8&2fp+gC2$qgm%P9gNVWLRLD84i$__tJ*{PNt$tapo!Zf?bPz@^1 zA#4<`#C$C$11byBsECMaMr7md=cFWIrvFUzDR5rTm_9S(ee;JdeC=s5 zUYlJ)-IZW!crhJseS40UAQfmW#kU0$S4gO-)10TLKhe{tHGq{A@)Yy`R36PNzf};6 zFVR^7XqxPMTHPZ)PvhsR`cr<+tYbv=X}o{J>c@RPuKKinV#4ajeLk-GQG3dSO_-#J zam`5Gu_kQ8*zZ#sz{WFg7iiJV^2(*frW``j8NXuCPl~l`0|>EK?92%U$2&Dtg|(<~<& zYEyj!K-k%iQI?4Njqvl_U%z+*{aiWs2Ssn!XaB|DapeE+jxHhPQwdrmJpwq(`3q6& z0)hj=wZB+ex`%`4@<{hNXz%GDI%V`ffA&&9CQPZcc|2$zcke$6g;S-HrBJD(saj=IS6ht=u2IMW zb8D)Y%fSe`2u*EOLk{EYV;&;GxLDs*J{6$bZ%8AD-}AMfrV<%9+6uuJtj_Y?pK>sy z62O!`Njx(h5w3xj8KNFhP1Mycjxyes~I{t|PHzY2o~ zj5hVKO?Tzp*eMo1tN*0a0^dW^fmSt3J9%(p6~!_IDW5L;+_)V23% zg7WR0ohX#82`Kjjg7T4*a(!!Owxru?V0-0dtaMbAWMngn-^{D>;DLEU9fb5&5`joH}zUwAM~Qt+8GDD|8) zR4Ffamca2wN6@?&ok#O`*IL;d|6S25UgN2l(>47?X=79BF5#Fx8q^ES`bMo~_+Dn} zzZNZd9T3AvKm>pQvHo-Fxn7#dIwCKLZe3fxhpDkJ8h!@S14aZw|ncj^11zZpg6f9ULQ!Sla!=1XYPkDmJp{Jjz#iS}Lm^S@ps`5!DxzF_?S zSRY zz=fMNLe&$aXA?OO8xQ*WFM)pF*twOaP)l2jVM%jxFx7;Y~RSPzFCT{dWxtKib7S(6ly|w zRn=+FL+`vW8guK@(aWTh+JSDOLV7m%3S{rtLR9uT<`$UHO=VY4os;)R3*`meA1#c= zX%M?Uc~+3!f3b8PehkcowNhU-1ckH zqSy8j(@a(}#VnK81Ksjfn6fO4cAPVG zKXVG?6v!!%Qy`~6PJx^PIR(CPDDdpRC0l@JuSP!|MbDf>e=Ca4{!sJ}al`+=Mn8qW zUy6Pav{;FLK~Ut*!lh3+^8e>x6$OI=k!t<@to7Uasq8uz+HLs%FO0UxzZ6~AthFkH zIFeZ^+x+GiJ}YbtE^c0Vy?tZWS*?OsZL#%+{krBsIGS-Th-L@d)v&IH5l{ z?snen-3PEUf8{1@^xqA>uN*gz+k@kjwAvAZ;&Evw!|rgSzu!Js?;Q{>M)KuOcfhTb zX~X0GpgY`sh;Twxge)}i5!A;b1KKq@!)EWjZf8^px{9|>`k=tribiMC)um;Fg93zC z_$a*FA9Pe-@N( z{sU2DZMfflh`?n$7HC54J@^t3Vovozd(hrL?haHdh9?gnVtx!O2YAV&bh~%_pwj6G z^a?d(!CY$y2^Gv%?H|2^SW)!xObM4=n8>Q0wcfpZ-2ozEa9!2@V9-5i6IrNrexqvd zJ;Y2Q;GtptXnWA<4ptv|Es}3{kGPz!nv|-#8-xDI!^B7Ot@9BrC-1A(?xX%uN31Ka z+Rc-L7TzONzG8% zYSx#_^&<@1VYk!6oIqBu5Rqpcd?1-dU)~?|jvv*I9<-14yN4K)_4a=60I$4awog#W zm-{_EbyW|j*Y9%8rijipe;#FDBcV&X|m2dSfz9&>a}dPBpaRSOWfr+?&C%kO}#=e^#3*gdMA42J!| zu(Chs4~Hlf>tI~2M*ra8ZhQYLfqdA7u@_)JmFhc}!+YO3Y}iZVS?iT~ zbcEB8#dYN;JT$b|1UkS?3%nOgIOQWfwNldMN=Qj<^xtjv{-B!Doql(SF_16oNBajS zo$l&E|E`+0q7!d)r$ZcjEStFVYL8;$`8I zrCqe}B7XmUToBK~$%=kVUIT(zZf|VBi>O({*`QUw#o$|HdnD^Yt#&LwIxuS} zUZcO3zK3oH+{Z$%eZ2obFl12b-k^UN7v5*c_mu69$9-MZv~gz`#_&x80{4&ZZ$FAYV{jiQ+afhqAz+qu}ZUgfx8>=|BT(S z$~?TZsDw8Dcek{R5|qbQ z_2p+?k{$;xGVI3=f!D#=C8J5_g%5J;Lf}$%_l=+5#lS^&_l1jpZ$NEv4K2aTENEJ0 z=j1{N>t_LNOaQ~PeuMo61#48OSqibBPy$mH_KX3rM=~27lZp&ZS=NILeSNFeXx6v4 znaSc*Nm3qfjL9TiFum>^5SwU3_^9uG$tv6%(*226rmSt{X?C@@VNeGOX z+FSv@o{ia~RlgL2>v#ZDT6Lq+Y|43F1{>n#E2L(Olp&HTr|v*sn{6v!!%Qy`~6 zPJx^PIR!q<6nN%eo&C3H-^w%pt!U-5U-;ht&yoK>128{;2qgOOT;dJCI4AM{mx^T^ zkxK@RA|yvx@_&`?02*Ds^W5)d6)Vm@6WuwV?bxT_vWrXQs|&@FL7E6PRKR7c%j9X5 z6gPhP{MRknNBfhx(h82g>$_Xk7GzHfUWik_4SyE%A3KkdVCKX@TVzP&5+cp5xmPUt z^%cs6qO4c5vB^T`X)g=C;w<_I&KbBA{faZ_!??+yUvUNv-(WK6SDay^wsoWRrc4zL z6|Y#dR{|lLt1EtmMFn51kotw$*iQgNRIO158oi$&C68o+lGTzat@_p-e3ndjB0*!& z=_VA97#$VL!SYU2jYM>MA?I?|j|b7VcNx{fAF%a}ZCWV)>qf1zk$j8kf;sHxoiI2# zDBq~8)!&|s@|=|?GfDe|$YG{4Ej;y>vq=4bm4mX_T7&dCpXd(VW+Xc)8BH=_wY~*Z zqvU&hAd(<{b4)JuU#&|$^)w&D0??C=8nCxrZPi+P;Z-Y{j$ks^<3&r4Qz)RCok|0$ z!&a@aS6_Q2{z6=euMls-t2ejT=p8FeM3o!R50OqG{GpXmEC@f~oX`~(?C`CqNe#{` zfb!O}h3?Sq!Wc{4x4ib+!$E()+c_C@w_xN!R%L=v0=b`QL^$BI7P%b>UXRcMswSwR z=Gf6|yT2ZPjka{lWdY z_QN);Qs!V|bobHRKF9&9lers~U5eZt3l*^;k-HdmOlzqw$G2p359=ktrLPM#X=l5$ z&^|#M4h_Y?lqwS*NZln%lGyDcTnA`mZEUY-Tz9QT(z~qOLG`oPD?O6iRGTGT6qd}! z-p)4NAZ~AEJbPReC|B)bxlQEH#e=dv?CuB zBax3{=yq;eTe;%?DVx~3U23yz3(r_{Dpgj~DvP*bJVI8ooH20eEvvX)GG6O?s3{63 zyF6z_U&l&G0`ZfuZOYu;Tm^6%@d6{Y;Q_`d03&`&b<_d}UoX#zAR>+34czx3G8-Su zN1RW4hh(?j?Vu?zwSpo2{;`l6IfRrHDZFA4zAi(tTm1@K5Q<_aYl``X&c%E)5?H1lGa9nmRtNuK z{1QVaI;)0`mXN~0Hw#U2Wf@jNjj%l{t601McjYrpZ6?!vqJvSCXN_0oH2kwML_|THmO*?ud;)CEx-Z17BaS zzg=64FBKHqwJ1&^5{~vaAv1%>iGk4c2LoOeJ84CHAeggclqdknYV;JdHf+-4l0L(p zG+Y6*M^%>Lj*=l}CxnUVz%)P?hzd%2w7R3Z4#-q@M=<^74O~H>GjW>naVXeEkAj-e zK^#YIk3@r{|V%ZFkywt+KPsZ3WlhEsH1<7nnXo zRQ@5_Bp-;pFw>F(hnafNI8WVas}w<0L|QQcQOJrjzBzT_^m$;YP^S)lLE3T=8f5BP zoZ^Djoi5BuEQ7glDW-feJ9wDp=W#j7 zrOcGKtbyb8^3)T?D#i?Fa9!q>x8~ZA~De@EX%{kKBd1R3$En zk+)*&z5al!LM}1Fc;beD2p$D+sB_+Mwg4Nl`=8E->|Ap}K`tc61sRcOYM2voo9!f0 zW}_#(Rs@k*T(sG%R=z1wmM@9bgXB}{QShntoAR(Nr-LuEL;ip1hsDb)fAiVD@7({t z$nrnM0CfMHbsyD}!vDLvG`|ehw!vi!sgu4f`WDc36=Eq|xs2O+?eO98qs$7t${#=T zee(GGG)%RHDZH{v7b@?vD+wu?CZMR8jf*-J>g}XDo--6@FN%WM)L07$>Pz>nG+SQ< z*J^CvuCD>KAA09nqYys@ayW+T*%Xj!=H&n86v!!%Qy`~6PJx^PIR$bG`G)J*`bpO7U_!!gn-;y z>i}A#HfS65S-#+exwb0O{))aJ7#Z=6G6^DcA=uwilN@6fWeyxF$*G?lX!W(cbhd@k zfr7RrO@5V@A(@id#y!RUS{QNr4a#n&&sN{cFgZkook4fMN2n5@C#&W{nSdkIJ3KkO z-Rls-ld_qY11taw*vyNKwP_HPHKK>RfJ~WSrdHFZ**%0mJHNAbH4GImpvftssS+bdwPp)>Y6vz0V~z^q%kyo6L9DPX zT?&=m*0zqdiXU-rXro)m4Nff+wKJ3#7ceEcQ!`Epuf;>cq>X0?8tclHxb>hLI~iV$ zMOTOMgZ4XJTyO0Y!YE9`4goE7g@qx#P0%aYJboL(q1Qi7XYYn z`zY=obYj4m5~Gd#_hRwk8uMo z?@9RA_}%`|%rX8Rd}S`aJ!n6qe1~Xh+>V7)RjjjeQ^8aY;^TgNulF7ose3XTci-tA z;a&ga{sT@@eHS&h5742`qqsfjQu~jw3CkMhv}=X`<5DcK%m_71G{+r77=AQbv~6Pm zW{AE6#wHXaGUi*1KYdAj&|;F9FMI}3vk42xn+Jk#%B>68#63YFv2y{#YtK56(5z0) zR3pczz2@#J7j~*0j(w6YG9TAVQ1U_95yfA}F;;KSel;%7730_Aa%th(!qWWJg=>;A zm=}s+2aamV!kF|H<%8Q((!t5FFU7OK;9%cLtj_lrQCB!tPt`~IK$v87(>WChuI2L% zK2=iF_;!d)ttkkXYS)<|B!@ieAKP3q z3wa!Fs2XS2r-#F0-rFs?mgtsNO(l^&cib0{(uK=&%zKA~4_%07Zq&AF4Hz-vOtW#j z0`sH_jCSd+j<+tW$?;e}F~me&%SkJMG>b6?B^qTRP*7i5mH?O>pmf0&%!G-6Oi*Lse4_8ih1{ov zJIidxUyS*EWwi3*uM7FV_E)}g+mZjzPbdH1U0PU#|G$X>7Lxyg1gY@<5=H>PLk8OS zBW*#S-Ph#C@%e$&4}8oq0kK5)HY;!M;nu(PCJcu5R`0ZG?3$M@q`D;0$APd5J@}W} zn_W(0*f^g;y+R!cP93MEJfh_~_Zt`e58IRb!UZ4{ZPAB`>JC4|`Q0_M|DK4GM$ck@pfxuimg1wwULvKE8%_BL-YNdCm1 zboOrbk9UUMlTJS|f1R~~Lri!C?deiKT77g(@gt}#(h zt_kV#XsAyRWL6!+X3@Nn#)y0{qIL+=ME!x7&fLJJJau3*Z(3$?DBnENA;C*$QrK2= zlt&(Rj42@wFI22}FAp$WvgryN;l07<5b6flfHIS{QbOM(a|fF#daip$dDNG-U7)ew zq!!pI^o6yI6)hi+wY4>)ge)VaBHP&dRIsB@;c6qVBBwx3ft&(41#$}H6iA`K%7rhA zluH{&zwOBXFGO_HpS1s{sDOb#8deXnBq0Br2-+d}AJMN<<$uHtLc}2sHB%LVZ!&uX ztbhHvU(6K%>+mEFVQ{%}cdh^sLPyxbBP>`sqA>}0J{G)ne6|$_xdI?p0FXt)$4~*F zB~#eRti7E0W_S zRTvVOUytFlMFRU9E3X#;rx()=R)|YDcYkzS#GmKz$*Nf_=ahAfikNt@7#Yjlx7T2oePsXOsfSsBf7nUt